From 8889deae7bb445186aca170d49486245fdd53d82 Mon Sep 17 00:00:00 2001 From: Mario Burgos Date: Fri, 19 Aug 2016 14:15:17 -0700 Subject: [PATCH 01/47] Adds html.parser to BeautifulSoup([markup], html.parser) calls. --- chapter11/4-solveCaptcha.py | 2 +- chapter2/1-selectByClass.py | 2 +- chapter2/2-selectByAttribute.py | 2 +- chapter2/3-findDescendants.py | 2 +- chapter2/4-findSiblings.py | 2 +- chapter2/5-findParents.py | 4 ++-- chapter2/6-regularExpressions.py | 2 +- chapter2/7-lambdaExpressions.py | 2 +- chapter3/1-getWikiLinks.py | 2 +- chapter3/2-crawlWikipedia.py | 2 +- chapter3/3-crawlSite.py | 2 +- chapter3/4-getExternalLinks.py | 2 +- chapter3/5-getAllExternalLinks.py | 4 ++-- chapter4/6-wikiHistories.py | 4 ++-- chapter5/1-getPageMedia.py | 2 +- chapter5/3-scrapeCsv.py | 2 +- chapter5/5-storeWikiLinks.py | 2 +- chapter5/6-6DegreesCrawlWiki.py | 2 +- chapter6/2-getUtf8Text.py | 2 +- chapter7/1-2grams.py | 2 +- chapter7/2-clean2grams.py | 2 +- 21 files changed, 24 insertions(+), 24 deletions(-) diff --git a/chapter11/4-solveCaptcha.py b/chapter11/4-solveCaptcha.py index ca5eba9..71c80d5 100644 --- a/chapter11/4-solveCaptcha.py +++ b/chapter11/4-solveCaptcha.py @@ -13,7 +13,7 @@ def cleanImage(imagePath): borderImage.save(imagePath) html = urlopen("http://www.pythonscraping.com/humans-only") -bsObj = BeautifulSoup(html) +bsObj = BeautifulSoup(html, "html.parser") #Gather prepopulated form values imageLocation = bsObj.find("img", {"title": "Image CAPTCHA"})["src"] formBuildId = bsObj.find("input", {"name":"form_build_id"})["value"] diff --git a/chapter2/1-selectByClass.py b/chapter2/1-selectByClass.py index 7f4c489..f85df32 100644 --- a/chapter2/1-selectByClass.py +++ b/chapter2/1-selectByClass.py @@ -2,7 +2,7 @@ from bs4 import BeautifulSoup html = urlopen("http://www.pythonscraping.com/pages/warandpeace.html") -bsObj = BeautifulSoup(html) +bsObj = BeautifulSoup(html, "html.parser") nameList = bsObj.findAll("span", {"class":"green"}) for name in nameList: print(name.get_text()) \ No newline at end of file diff --git a/chapter2/2-selectByAttribute.py b/chapter2/2-selectByAttribute.py index 01d9c90..262f77c 100644 --- a/chapter2/2-selectByAttribute.py +++ b/chapter2/2-selectByAttribute.py @@ -2,6 +2,6 @@ from bs4 import BeautifulSoup html = urlopen("http://www.pythonscraping.com/pages/warandpeace.html") -bsObj = BeautifulSoup(html) +bsObj = BeautifulSoup(html, "html.parser") allText = bsObj.findAll(id="text") print(allText[0].get_text()) \ No newline at end of file diff --git a/chapter2/3-findDescendants.py b/chapter2/3-findDescendants.py index 7b127de..8d7e919 100644 --- a/chapter2/3-findDescendants.py +++ b/chapter2/3-findDescendants.py @@ -2,7 +2,7 @@ from bs4 import BeautifulSoup html = urlopen("http://www.pythonscraping.com/pages/page3.html") -bsObj = BeautifulSoup(html) +bsObj = BeautifulSoup(html, "html.parser") for child in bsObj.find("table",{"id":"giftList"}).children: print(child) \ No newline at end of file diff --git a/chapter2/4-findSiblings.py b/chapter2/4-findSiblings.py index c850ef1..6a57959 100644 --- a/chapter2/4-findSiblings.py +++ b/chapter2/4-findSiblings.py @@ -1,7 +1,7 @@ from urllib.request import urlopen from bs4 import BeautifulSoup html = urlopen("http://www.pythonscraping.com/pages/page3.html") -bsObj = BeautifulSoup(html) +bsObj = BeautifulSoup(html, "html.parser") for sibling in bsObj.find("table",{"id":"giftList"}).tr.next_siblings: print(sibling) \ No newline at end of file diff --git a/chapter2/5-findParents.py b/chapter2/5-findParents.py index d0e4593..50ec5ee 100644 --- a/chapter2/5-findParents.py +++ b/chapter2/5-findParents.py @@ -2,5 +2,5 @@ from bs4 import BeautifulSoup html = urlopen("http://www.pythonscraping.com/pages/page3.html") -bsObj = BeautifulSoup(html) -print(bsObj.find("img",{"src":"../img/gifts/img1.jpg"}).parent.previous_sibling.get_text()) \ No newline at end of file +bsObj = BeautifulSoup(html, "html.parser") +print(bsObj.find("img",{"src":"../img/gifts/img1.jpg"}).parent.previous_sibling.get_text()) diff --git a/chapter2/6-regularExpressions.py b/chapter2/6-regularExpressions.py index ef12761..9c34cc1 100644 --- a/chapter2/6-regularExpressions.py +++ b/chapter2/6-regularExpressions.py @@ -3,7 +3,7 @@ import re html = urlopen("http://www.pythonscraping.com/pages/page3.html") -bsObj = BeautifulSoup(html) +bsObj = BeautifulSoup(html, "html.parser") images = bsObj.findAll("img", {"src":re.compile("\.\.\/img\/gifts/img.*\.jpg")}) for image in images: print(image["src"]) diff --git a/chapter2/7-lambdaExpressions.py b/chapter2/7-lambdaExpressions.py index 1704fa9..2c04ee3 100644 --- a/chapter2/7-lambdaExpressions.py +++ b/chapter2/7-lambdaExpressions.py @@ -1,7 +1,7 @@ from urllib.request import urlopen from bs4 import BeautifulSoup html = urlopen("http://www.pythonscraping.com/pages/page2.html") -bsObj = BeautifulSoup(html) +bsObj = BeautifulSoup(html, "html.parser") tags = bsObj.findAll(lambda tag: len(tag.attrs) == 2) for tag in tags: print(tag) \ No newline at end of file diff --git a/chapter3/1-getWikiLinks.py b/chapter3/1-getWikiLinks.py index 96ca211..3f53390 100644 --- a/chapter3/1-getWikiLinks.py +++ b/chapter3/1-getWikiLinks.py @@ -7,7 +7,7 @@ random.seed(datetime.datetime.now()) def getLinks(articleUrl): html = urlopen("http://en.wikipedia.org"+articleUrl) - bsObj = BeautifulSoup(html) + bsObj = BeautifulSoup(html, "html.parser") return bsObj.find("div", {"id":"bodyContent"}).findAll("a", href=re.compile("^(/wiki/)((?!:).)*$")) links = getLinks("/wiki/Kevin_Bacon") while len(links) > 0: diff --git a/chapter3/2-crawlWikipedia.py b/chapter3/2-crawlWikipedia.py index ec62d06..ff2ee49 100644 --- a/chapter3/2-crawlWikipedia.py +++ b/chapter3/2-crawlWikipedia.py @@ -6,7 +6,7 @@ def getLinks(pageUrl): global pages html = urlopen("http://en.wikipedia.org"+pageUrl) - bsObj = BeautifulSoup(html) + bsObj = BeautifulSoup(html, "html.parser") try: print(bsObj.h1.get_text()) print(bsObj.find(id ="mw-content-text").findAll("p")[0]) diff --git a/chapter3/3-crawlSite.py b/chapter3/3-crawlSite.py index f34cc47..ea5e128 100644 --- a/chapter3/3-crawlSite.py +++ b/chapter3/3-crawlSite.py @@ -34,7 +34,7 @@ def splitAddress(address): def getRandomExternalLink(startingPage): html = urlopen(startingPage) - bsObj = BeautifulSoup(html) + bsObj = BeautifulSoup(html, "html.parser") externalLinks = getExternalLinks(bsObj, splitAddress(startingPage)[0]) if len(externalLinks) == 0: internalLinks = getInternalLinks(startingPage) diff --git a/chapter3/4-getExternalLinks.py b/chapter3/4-getExternalLinks.py index 54fb854..d78e9d0 100644 --- a/chapter3/4-getExternalLinks.py +++ b/chapter3/4-getExternalLinks.py @@ -36,7 +36,7 @@ def getExternalLinks(bsObj, excludeUrl): def getRandomExternalLink(startingPage): html = urlopen(startingPage) - bsObj = BeautifulSoup(html) + bsObj = BeautifulSoup(html, "html.parser") externalLinks = getExternalLinks(bsObj, urlparse(startingPage).netloc) if len(externalLinks) == 0: print("No external links, looking around the site for one") diff --git a/chapter3/5-getAllExternalLinks.py b/chapter3/5-getAllExternalLinks.py index c08b555..a3785a8 100644 --- a/chapter3/5-getAllExternalLinks.py +++ b/chapter3/5-getAllExternalLinks.py @@ -36,7 +36,7 @@ def getExternalLinks(bsObj, excludeUrl): def getRandomExternalLink(startingPage): html = urlopen(startingPage) - bsObj = BeautifulSoup(html) + bsObj = BeautifulSoup(html, "html.parser") externalLinks = getExternalLinks(bsObj, urlparse(startingPage).netloc) if len(externalLinks) == 0: print("No external links, looking around the site for one") @@ -57,7 +57,7 @@ def followExternalOnly(startingSite): def getAllExternalLinks(siteUrl): html = urlopen(siteUrl) domain = urlparse(siteUrl).scheme+"://"+urlparse(siteUrl).netloc - bsObj = BeautifulSoup(html) + bsObj = BeautifulSoup(html, "html.parser") internalLinks = getInternalLinks(bsObj,domain) externalLinks = getExternalLinks(bsObj,domain) diff --git a/chapter4/6-wikiHistories.py b/chapter4/6-wikiHistories.py index 66a41f0..1101588 100644 --- a/chapter4/6-wikiHistories.py +++ b/chapter4/6-wikiHistories.py @@ -9,7 +9,7 @@ random.seed(datetime.datetime.now()) def getLinks(articleUrl): html = urlopen("http://en.wikipedia.org"+articleUrl) - bsObj = BeautifulSoup(html) + bsObj = BeautifulSoup(html, "html.parser") return bsObj.find("div", {"id":"bodyContent"}).findAll("a", href=re.compile("^(/wiki/)((?!:).)*$")) def getHistoryIPs(pageUrl): @@ -19,7 +19,7 @@ def getHistoryIPs(pageUrl): historyUrl = "http://en.wikipedia.org/w/index.php?title="+pageUrl+"&action=history" print("history url is: "+historyUrl) html = urlopen(historyUrl) - bsObj = BeautifulSoup(html) + bsObj = BeautifulSoup(html, "html.parser") #finds only the links with class "mw-anonuserlink" which has IP addresses #instead of usernames ipAddresses = bsObj.findAll("a", {"class":"mw-anonuserlink"}) diff --git a/chapter5/1-getPageMedia.py b/chapter5/1-getPageMedia.py index 02869a8..9aafa69 100644 --- a/chapter5/1-getPageMedia.py +++ b/chapter5/1-getPageMedia.py @@ -32,7 +32,7 @@ def getDownloadPath(baseUrl, absoluteUrl, downloadDirectory): return path html = urlopen("http://www.pythonscraping.com") -bsObj = BeautifulSoup(html) +bsObj = BeautifulSoup(html, "html.parser") downloadList = bsObj.findAll(src=True) for download in downloadList: diff --git a/chapter5/3-scrapeCsv.py b/chapter5/3-scrapeCsv.py index 2c57942..4b68abe 100644 --- a/chapter5/3-scrapeCsv.py +++ b/chapter5/3-scrapeCsv.py @@ -3,7 +3,7 @@ from bs4 import BeautifulSoup html = urlopen("http://en.wikipedia.org/wiki/Comparison_of_text_editors") -bsObj = BeautifulSoup(html) +bsObj = BeautifulSoup(html, "html.parser") #The main comparison table is currently the first table on the page table = bsObj.findAll("table",{"class":"wikitable"})[0] rows = table.findAll("tr") diff --git a/chapter5/5-storeWikiLinks.py b/chapter5/5-storeWikiLinks.py index 55440be..6f97ecd 100644 --- a/chapter5/5-storeWikiLinks.py +++ b/chapter5/5-storeWikiLinks.py @@ -17,7 +17,7 @@ def store(title, content): def getLinks(articleUrl): html = urlopen("http://en.wikipedia.org"+articleUrl) - bsObj = BeautifulSoup(html) + bsObj = BeautifulSoup(html, "html.parser") title = bsObj.find("h1").get_text() content = bsObj.find("div", {"id":"mw-content-text"}).find("p").get_text() store(title, content) diff --git a/chapter5/6-6DegreesCrawlWiki.py b/chapter5/6-6DegreesCrawlWiki.py index 8af29db..f715433 100644 --- a/chapter5/6-6DegreesCrawlWiki.py +++ b/chapter5/6-6DegreesCrawlWiki.py @@ -39,7 +39,7 @@ def getLinks(pageUrl, recursionLevel): return pageId = insertPageIfNotExists(pageUrl) html = urlopen("http://en.wikipedia.org"+pageUrl) - bsObj = BeautifulSoup(html) + bsObj = BeautifulSoup(html, "html.parser") for link in bsObj.findAll("a", href=re.compile("^(/wiki/)((?!:).)*$")): insertLink(pageId, insertPageIfNotExists(link.attrs['href'])) if not pageScraped(link.attrs['href']): diff --git a/chapter6/2-getUtf8Text.py b/chapter6/2-getUtf8Text.py index 5764c3c..6d42fb1 100644 --- a/chapter6/2-getUtf8Text.py +++ b/chapter6/2-getUtf8Text.py @@ -2,7 +2,7 @@ from bs4 import BeautifulSoup html = urlopen("http://en.wikipedia.org/wiki/Python_(programming_language)") -bsObj = BeautifulSoup(html) +bsObj = BeautifulSoup(html, "html.parser") content = bsObj.find("div", {"id":"mw-content-text"}).get_text() content = bytes(content, "UTF-8") content = content.decode("UTF-8") diff --git a/chapter7/1-2grams.py b/chapter7/1-2grams.py index 9b06084..b25437e 100644 --- a/chapter7/1-2grams.py +++ b/chapter7/1-2grams.py @@ -9,7 +9,7 @@ def getNgrams(input, n): return output html = urlopen("http://en.wikipedia.org/wiki/Python_(programming_language)") -bsObj = BeautifulSoup(html) +bsObj = BeautifulSoup(html, "html.parser") content = bsObj.find("div", {"id":"mw-content-text"}).get_text() ngrams = getNgrams(content, 2) print(ngrams) diff --git a/chapter7/2-clean2grams.py b/chapter7/2-clean2grams.py index 9613f8a..abc38ed 100644 --- a/chapter7/2-clean2grams.py +++ b/chapter7/2-clean2grams.py @@ -30,7 +30,7 @@ def getNgrams(input, n): return output html = urlopen("http://en.wikipedia.org/wiki/Python_(programming_language)") -bsObj = BeautifulSoup(html) +bsObj = BeautifulSoup(html, "html.parser") content = bsObj.find("div", {"id":"mw-content-text"}).get_text() #ngrams = getNgrams(content, 2) #print(ngrams) From e9413f89ad07d8c019cd4399f513bfcbc2f8543c Mon Sep 17 00:00:00 2001 From: Mario Burgos Date: Tue, 23 Aug 2016 12:48:57 -0700 Subject: [PATCH 02/47] Adds .gitignore for .DS_Store, and *.pyc files. --- .gitignore | 3 +++ 1 file changed, 3 insertions(+) create mode 100755 .gitignore diff --git a/.gitignore b/.gitignore new file mode 100755 index 0000000..4e8c00a --- /dev/null +++ b/.gitignore @@ -0,0 +1,3 @@ +*.txt +*.pyc +.DS_Store From 1c8c954ca6da204ff024c17a0800257d9d63f4e7 Mon Sep 17 00:00:00 2001 From: Mario Burgos Date: Tue, 23 Aug 2016 12:49:35 -0700 Subject: [PATCH 03/47] Adds .gitignore for .DS_Store, and *.pyc files. --- .gitignore | 1 - 1 file changed, 1 deletion(-) diff --git a/.gitignore b/.gitignore index 4e8c00a..0205d62 100755 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,2 @@ -*.txt *.pyc .DS_Store From b298c04175ae48c1256715cf6d2c7026e844f0a8 Mon Sep 17 00:00:00 2001 From: Mario Burgos Date: Tue, 23 Aug 2016 12:48:57 -0700 Subject: [PATCH 04/47] Adds .gitignore for .DS_Store, and *.pyc files. Adds .gitignore for .DS_Store, and *.pyc files. --- .gitignore | 2 ++ 1 file changed, 2 insertions(+) create mode 100755 .gitignore diff --git a/.gitignore b/.gitignore new file mode 100755 index 0000000..0205d62 --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +*.pyc +.DS_Store From 77d7d914980d1764e1716fd1a4994937900dd75e Mon Sep 17 00:00:00 2001 From: Mario Burgos Date: Wed, 24 Aug 2016 12:43:56 -0700 Subject: [PATCH 05/47] Revert "Adds .gitignore for .DS_Store, and *.pyc files." This reverts commit b298c04175ae48c1256715cf6d2c7026e844f0a8. --- .gitignore | 2 -- 1 file changed, 2 deletions(-) delete mode 100755 .gitignore diff --git a/.gitignore b/.gitignore deleted file mode 100755 index 0205d62..0000000 --- a/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -*.pyc -.DS_Store From ec4e6c913b075a4e365d5e1119f1ce039d0e0c7a Mon Sep 17 00:00:00 2001 From: Mario Burgos Date: Wed, 24 Aug 2016 12:52:08 -0700 Subject: [PATCH 06/47] Revert "Revert "Adds .gitignore for .DS_Store, and *.pyc files."" This reverts commit 77d7d914980d1764e1716fd1a4994937900dd75e. --- .gitignore | 2 ++ 1 file changed, 2 insertions(+) create mode 100755 .gitignore diff --git a/.gitignore b/.gitignore new file mode 100755 index 0000000..0205d62 --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +*.pyc +.DS_Store From ba404e373c3d1e7c2fe9b01368cb576f6849b2f6 Mon Sep 17 00:00:00 2001 From: Mario Burgos Date: Wed, 24 Aug 2016 13:06:59 -0700 Subject: [PATCH 07/47] Removes .gitignore file. --- .gitignore | 2 -- 1 file changed, 2 deletions(-) delete mode 100755 .gitignore diff --git a/.gitignore b/.gitignore deleted file mode 100755 index 0205d62..0000000 --- a/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -*.pyc -.DS_Store From df13646f6cfc4dacb6db6e9e5624d74609854934 Mon Sep 17 00:00:00 2001 From: Ryan Mitchell Date: Tue, 10 Jan 2017 20:36:40 -0500 Subject: [PATCH 08/47] Removed line breaks inserted for print --- chapter12/1-headers.py | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/chapter12/1-headers.py b/chapter12/1-headers.py index 3fe773c..09f9245 100644 --- a/chapter12/1-headers.py +++ b/chapter12/1-headers.py @@ -2,12 +2,8 @@ from bs4 import BeautifulSoup session = requests.Session() -headers = {"User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_5) - AppleWebKit 537.36 (KHTML, like Gecko) Chrome", - "Accept":"text/html,application/xhtml+xml,application/xml; - q=0.9,image/webp,*/*;q=0.8"} -url = "https://www.whatismybrowser.com/ - developers/what-http-headers-is-my-browser-sending" +headers = {"User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_5) AppleWebKit 537.36 (KHTML, like Gecko) Chrome","Accept":"text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8"} +url = "https://www.whatismybrowser.com/developers/what-http-headers-is-my-browser-sending" req = session.get(url, headers=headers) bsObj = BeautifulSoup(req.text) From 7c4c22bf79f753229cf51c4a5037b2e52014fbde Mon Sep 17 00:00:00 2001 From: Ryan Mitchell Date: Tue, 10 Jan 2017 20:42:23 -0500 Subject: [PATCH 09/47] Updated URL --- chapter12/1-headers.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/chapter12/1-headers.py b/chapter12/1-headers.py index 09f9245..d03cce0 100644 --- a/chapter12/1-headers.py +++ b/chapter12/1-headers.py @@ -3,8 +3,8 @@ session = requests.Session() headers = {"User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_5) AppleWebKit 537.36 (KHTML, like Gecko) Chrome","Accept":"text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8"} -url = "https://www.whatismybrowser.com/developers/what-http-headers-is-my-browser-sending" +url = "https://www.whatismybrowser.com/detect/what-http-headers-is-my-browser-sending" req = session.get(url, headers=headers) -bsObj = BeautifulSoup(req.text) +bsObj = BeautifulSoup(req.text, "lxml") print(bsObj.find("table",{"class":"table-striped"}).get_text) \ No newline at end of file From 787685cd0b4cc56be857ac801d13128850a8fdde Mon Sep 17 00:00:00 2001 From: Ryan Mitchell Date: Fri, 13 Jan 2017 10:42:17 -0600 Subject: [PATCH 10/47] Rewrote driver examples --- chapter10/1-seleniumBasic.py | 6 ++++-- chapter10/2-waitForLoad.py | 4 +++- chapter10/3-javascriptRedirect.py | 4 +++- 3 files changed, 10 insertions(+), 4 deletions(-) diff --git a/chapter10/1-seleniumBasic.py b/chapter10/1-seleniumBasic.py index e6d328f..9a4cc08 100644 --- a/chapter10/1-seleniumBasic.py +++ b/chapter10/1-seleniumBasic.py @@ -1,8 +1,10 @@ from selenium import webdriver import time -driver = webdriver.PhantomJS(executable_path='') +#REPLACE WITH YOUR DRIVER PATH. EXAMPLES FOR CHROME AND PHANTOMJS +driver = webdriver.PhantomJS(executable_path='../phantomjs-2.1.1-macosx/bin/phantomjs') +#driver = webdriver.Chrome(executable_path='../chromedriver/chromedriver') driver.get("http://pythonscraping.com/pages/javascript/ajaxDemo.html") -time.sleep(3) +time.sleep(5) print(driver.find_element_by_id("content").text) driver.close() \ No newline at end of file diff --git a/chapter10/2-waitForLoad.py b/chapter10/2-waitForLoad.py index bc69109..48c0ca5 100644 --- a/chapter10/2-waitForLoad.py +++ b/chapter10/2-waitForLoad.py @@ -2,7 +2,9 @@ from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC -driver = webdriver.PhantomJS(executable_path='') +#REPLACE WITH YOUR DRIVER PATH. EXAMPLES FOR CHROME AND PHANTOMJS +driver = webdriver.PhantomJS(executable_path='../phantomjs-2.1.1-macosx/bin/phantomjs') +#driver = webdriver.Chrome(executable_path='../chromedriver/chromedriver') driver.get("http://pythonscraping.com/pages/javascript/ajaxDemo.html") try: element = WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.ID, "loadedButton"))) diff --git a/chapter10/3-javascriptRedirect.py b/chapter10/3-javascriptRedirect.py index 1205b5e..68f2ac6 100644 --- a/chapter10/3-javascriptRedirect.py +++ b/chapter10/3-javascriptRedirect.py @@ -17,7 +17,9 @@ def waitForLoad(driver): except StaleElementReferenceException: return -driver = webdriver.PhantomJS(executable_path='') +#REPLACE WITH YOUR DRIVER PATH. EXAMPLES FOR CHROME AND PHANTOMJS +driver = webdriver.PhantomJS(executable_path='../phantomjs-2.1.1-macosx/bin/phantomjs') +#driver = webdriver.Chrome(executable_path='../chromedriver/chromedriver') driver.get("http://pythonscraping.com/pages/javascript/redirectDemo1.html") waitForLoad(driver) print(driver.page_source) \ No newline at end of file From a9f4e71343e5eaf821a4e8c2433448227697cef6 Mon Sep 17 00:00:00 2001 From: Ryan Mitchell Date: Fri, 13 Jan 2017 10:49:03 -0600 Subject: [PATCH 11/47] Use region name. It's more interesting --- chapter4/6-wikiHistories.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/chapter4/6-wikiHistories.py b/chapter4/6-wikiHistories.py index 1101588..38b1d15 100644 --- a/chapter4/6-wikiHistories.py +++ b/chapter4/6-wikiHistories.py @@ -35,7 +35,7 @@ def getCountry(ipAddress): except HTTPError: return None responseJson = json.loads(response) - return responseJson.get("country_code") + return responseJson["region_name"] links = getLinks("/wiki/Python_(programming_language)") From 805c7ecf4293c447759cb3d3d2de055257d0866f Mon Sep 17 00:00:00 2001 From: Ryan Mitchell Date: Fri, 13 Jan 2017 10:49:18 -0600 Subject: [PATCH 12/47] Modified driver instantiation example --- chapter13/3-interactiveTest.py | 4 +++- chapter13/4-dragAndDrop.py | 5 ++++- chapter13/5-takeScreenshot.py | 5 ++++- chapter13/6-combinedTest.py | 4 +++- 4 files changed, 14 insertions(+), 4 deletions(-) diff --git a/chapter13/3-interactiveTest.py b/chapter13/3-interactiveTest.py index 892c8bc..f571530 100644 --- a/chapter13/3-interactiveTest.py +++ b/chapter13/3-interactiveTest.py @@ -4,7 +4,9 @@ from selenium.webdriver import ActionChains -driver = webdriver.PhantomJS(executable_path='phantomjs/bin/phantomjs') +#REPLACE WITH YOUR DRIVER PATH. EXAMPLES FOR CHROME AND PHANTOMJS +driver = webdriver.PhantomJS(executable_path='../phantomjs-2.1.1-macosx/bin/phantomjs') +#driver = webdriver.Chrome(executable_path='../chromedriver/chromedriver') driver.get("http://pythonscraping.com/pages/files/form.html") firstnameField = driver.find_element_by_name("firstname") diff --git a/chapter13/4-dragAndDrop.py b/chapter13/4-dragAndDrop.py index 9376814..8e7b360 100644 --- a/chapter13/4-dragAndDrop.py +++ b/chapter13/4-dragAndDrop.py @@ -2,7 +2,10 @@ from selenium.webdriver.remote.webelement import WebElement from selenium.webdriver import ActionChains -driver = webdriver.PhantomJS(executable_path='phantomjs/bin/phantomjs') +#REPLACE WITH YOUR DRIVER PATH. EXAMPLES FOR CHROME AND PHANTOMJS +driver = webdriver.PhantomJS(executable_path='../phantomjs-2.1.1-macosx/bin/phantomjs') +#driver = webdriver.Chrome(executable_path='../chromedriver/chromedriver') + driver.get('http://pythonscraping.com/pages/javascript/draggableDemo.html') print(driver.find_element_by_id("message").text) diff --git a/chapter13/5-takeScreenshot.py b/chapter13/5-takeScreenshot.py index 14c41ba..76169c2 100644 --- a/chapter13/5-takeScreenshot.py +++ b/chapter13/5-takeScreenshot.py @@ -3,7 +3,10 @@ from selenium.webdriver import ActionChains -driver = webdriver.PhantomJS(executable_path='') +#REPLACE WITH YOUR DRIVER PATH. EXAMPLES FOR CHROME AND PHANTOMJS +driver = webdriver.PhantomJS(executable_path='../phantomjs-2.1.1-macosx/bin/phantomjs') +#driver = webdriver.Chrome(executable_path='../chromedriver/chromedriver') + driver.implicitly_wait(5) driver.get('http://www.pythonscraping.com/') driver.get_screenshot_as_file('tmp/pythonscraping.png') \ No newline at end of file diff --git a/chapter13/6-combinedTest.py b/chapter13/6-combinedTest.py index 9ced109..011b0c8 100644 --- a/chapter13/6-combinedTest.py +++ b/chapter13/6-combinedTest.py @@ -7,7 +7,9 @@ class TestAddition(unittest.TestCase): driver = None def setUp(self): global driver - driver = webdriver.PhantomJS(executable_path='') + #REPLACE WITH YOUR DRIVER PATH. EXAMPLES FOR CHROME AND PHANTOMJS + driver = webdriver.PhantomJS(executable_path='../phantomjs-2.1.1-macosx/bin/phantomjs') + #driver = webdriver.Chrome(executable_path='../chromedriver/chromedriver') url = 'http://pythonscraping.com/pages/javascript/draggableDemo.html' driver.get(url) From 9199fb66afc761367054b442221dc3e4bb11b717 Mon Sep 17 00:00:00 2001 From: Adam Yang Date: Sun, 24 Dec 2017 15:00:55 +0800 Subject: [PATCH 13/47] Fix code issues and upgrade libraries to python3 --- chapter1/.DS_Store | Bin 6148 -> 0 bytes chapter1/2-beautifulSoup.py | 2 +- chapter1/3-exceptionHandling.py | 2 +- chapter10/2-waitForLoad.py | 1 + chapter11/ghostdriver.log | 36 -------- chapter11/page.jpg | Bin 69920 -> 0 bytes chapter11/page.txt | 47 ----------- chapter13/1-wikiUnitTest.py | 4 +- chapter13/2-wikiSeleniumTest.py | 2 +- chapter13/4-dragAndDrop.py | 4 +- chapter13/5-takeScreenshot.py | 3 +- chapter13/6-combinedTest.py | 1 + chapter13/ghostdriver.log | 6 -- chapter2/.DS_Store | Bin 6148 -> 0 bytes chapter3/.DS_Store | Bin 6148 -> 0 bytes chapter3/scrapy/.DS_Store | Bin 6148 -> 0 bytes chapter3/scrapy/wikiSpider/.DS_Store | Bin 6148 -> 0 bytes chapter3/scrapy/wikiSpider/articles.csv | 67 --------------- chapter3/scrapy/wikiSpider/articles.json | 66 --------------- chapter3/scrapy/wikiSpider/scrapy.cfg | 2 +- chapter3/scrapy/wikiSpider/wiki.log | 18 ---- .../scrapy/wikiSpider/wikiSpider/.DS_Store | Bin 6148 -> 0 bytes .../scrapy/wikiSpider/wikiSpider/__init__.pyc | Bin 169 -> 0 bytes .../__pycache__/__init__.cpython-35.pyc | Bin 0 -> 197 bytes .../__pycache__/items.cpython-35.pyc | Bin 0 -> 418 bytes .../__pycache__/settings.cpython-35.pyc | Bin 0 -> 320 bytes .../scrapy/wikiSpider/wikiSpider/items.py | 6 +- .../scrapy/wikiSpider/wikiSpider/items.pyc | Bin 486 -> 0 bytes .../wikiSpider/wikiSpider/middlewares.py | 56 +++++++++++++ .../scrapy/wikiSpider/wikiSpider/settings.py | 79 +++++++++++++++++- .../scrapy/wikiSpider/wikiSpider/settings.pyc | Bin 285 -> 0 bytes .../wikiSpider/wikiSpider/spiders/.DS_Store | Bin 6148 -> 0 bytes .../wikiSpider/spiders/__init__.pyc | Bin 177 -> 0 bytes .../__pycache__/__init__.cpython-35.pyc | Bin 0 -> 205 bytes .../__pycache__/articleSpider.cpython-35.pyc | Bin 0 -> 1140 bytes .../wikiSpider/spiders/articleSpider.py | 30 ++++--- .../wikiSpider/spiders/articleSpider.pyc | Bin 1384 -> 0 bytes chapter4/.DS_Store | Bin 6148 -> 0 bytes chapter4/1-searchTwitter.py | 2 +- chapter4/2-updateTwitter.py | 2 +- chapter5/1-getPageMedia.py | 2 +- chapter5/3-scrapeCsv.py | 2 +- chapter5/4-mysqlBasicExample.py | 3 +- chapter5/5-storeWikiLinks.py | 2 +- chapter5/6-6DegreesCrawlWiki.py | 2 +- chapter5/8-sendEmailWhenChristmas.py | 6 +- chapter6/6-readDocx.py | 13 ++- chapter6/from urllib.request import urlopen | 10 --- chapter6/readPdf.py | 24 ------ chapter8/4-6DegreesFinder.py | 2 +- chapter8/7-NltkAnalysis.py | 6 +- chapter9/1-fileSubmission.py | 5 -- 52 files changed, 187 insertions(+), 326 deletions(-) delete mode 100644 chapter1/.DS_Store delete mode 100644 chapter11/ghostdriver.log delete mode 100644 chapter11/page.jpg delete mode 100644 chapter11/page.txt delete mode 100644 chapter13/ghostdriver.log delete mode 100644 chapter2/.DS_Store delete mode 100644 chapter3/.DS_Store delete mode 100644 chapter3/scrapy/.DS_Store delete mode 100644 chapter3/scrapy/wikiSpider/.DS_Store delete mode 100644 chapter3/scrapy/wikiSpider/articles.csv delete mode 100644 chapter3/scrapy/wikiSpider/articles.json delete mode 100644 chapter3/scrapy/wikiSpider/wiki.log delete mode 100644 chapter3/scrapy/wikiSpider/wikiSpider/.DS_Store delete mode 100644 chapter3/scrapy/wikiSpider/wikiSpider/__init__.pyc create mode 100644 chapter3/scrapy/wikiSpider/wikiSpider/__pycache__/__init__.cpython-35.pyc create mode 100644 chapter3/scrapy/wikiSpider/wikiSpider/__pycache__/items.cpython-35.pyc create mode 100644 chapter3/scrapy/wikiSpider/wikiSpider/__pycache__/settings.cpython-35.pyc delete mode 100644 chapter3/scrapy/wikiSpider/wikiSpider/items.pyc create mode 100644 chapter3/scrapy/wikiSpider/wikiSpider/middlewares.py delete mode 100644 chapter3/scrapy/wikiSpider/wikiSpider/settings.pyc delete mode 100644 chapter3/scrapy/wikiSpider/wikiSpider/spiders/.DS_Store delete mode 100644 chapter3/scrapy/wikiSpider/wikiSpider/spiders/__init__.pyc create mode 100644 chapter3/scrapy/wikiSpider/wikiSpider/spiders/__pycache__/__init__.cpython-35.pyc create mode 100644 chapter3/scrapy/wikiSpider/wikiSpider/spiders/__pycache__/articleSpider.cpython-35.pyc delete mode 100644 chapter3/scrapy/wikiSpider/wikiSpider/spiders/articleSpider.pyc delete mode 100644 chapter4/.DS_Store delete mode 100644 chapter6/from urllib.request import urlopen delete mode 100644 chapter6/readPdf.py delete mode 100644 chapter9/1-fileSubmission.py diff --git a/chapter1/.DS_Store b/chapter1/.DS_Store deleted file mode 100644 index 893bc14b74fca35d9c73bc2a245ef3be5d620c7e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6148 zcmeHKO-sW-5Pcgfw0Nl=#AA+L6smt9lvM21`~Wp+ltOHRTF_g5pg+KWQ{U_kg^+p` z(HWR|`!#Qymy+29;HK-v1Q-Jt(gmXt!w!>q@t#FGG9Wt7k>M3Jo>9)L-fA28jS9%S z8{r%>hR)@2@WMs?Iqpe~l~p>Bbvdz#%3$LymjAV2J`Vys`a+1{F%OHF%#_9fl8K zphugH5a0+Go}pykn!7IXK&J3GChIKMmjW4|0O324z2 zFa^2_?1k=F>i_Kf`+qmddZvIW@TU}TgEUL0d?c-{y@!)p8`JOTVzRCcxJ_ZhmtwA! dQhY-9#_?Dh#6+oZxQ3-7QGt5+tyE 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 z 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ⓈPlNU6)L%0`gY*$FiJF)8hK{S%kHsqhI@@sg!wz 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 C)*B`O diff --git a/chapter11/page.txt b/chapter11/page.txt deleted file mode 100644 index fdd6a7f..0000000 --- a/chapter11/page.txt +++ /dev/null @@ -1,47 +0,0 @@ -WEI‘ nrrd Peace -Len Nlkelayevldu Iolfluy - -Readmg shmdd be ax -wlnvame asnossxble Wenfler -an mm m our cram: Llhvary - -— Leo Tmsloy was a Russian rwovelwst -I and moval phflmopher med lur -A ms Ideas 01 nonviolenx reswslance m 5 We range 0, “and” - -M. -known for ms genevosxly to the '°'”"“‘ ‘”' "*°’“‘* W‘"' - -reading dwnmuie,—a|\ -‘L °““"“‘ opnmizedfarreadabIh(y—so -readerscan tho the fnrmat - -ms best knawn nuvckave “War and - -Peace" (1869),w>v(h msmy regarded as an em ‘”“”L"‘5"‘°"‘ W‘ 599 ""19 -vamer man a novel, and "Anna Kavemna" mm) “” '“"" - -Nxswark was admued m hiswne by Doxlayevxky, - -Chxkoxa Turgenev, and Flauben and Water by Tm EaSyREad super - -wgmiz wow and )ame§Joyc vlsxon -onshuqhtlhrmlghlhevadherenzr(owrme He -tamures the essenze af Ne wwlh an R5 mancnges, -hardsmps andmys The maepm poV\raya\ at -numemus thataclerx lrom an xpheves m We wands -u unparalleled reahsm Aime dassm‘ - - - -su+u27o3ro2ar1 - -||I||| H - -cuvmumeu .21mna - - - diff --git a/chapter13/1-wikiUnitTest.py b/chapter13/1-wikiUnitTest.py index c3e05dd..3c55704 100644 --- a/chapter13/1-wikiUnitTest.py +++ b/chapter13/1-wikiUnitTest.py @@ -18,9 +18,9 @@ def test_PageProperties(self): url = "http://en.wikipedia.org/wiki/Monty_Python" #Test the first 100 pages we encounter for i in range(1, 100): - bsObj = BeautifulSoup(urlopen(url)) + bsObj = BeautifulSoup(urlopen(url), 'html.parser') titles = self.titleMatchesURL() - self.assertEquals(titles[0], titles[1]) + self.assertEqual(titles[0], titles[1]) self.assertTrue(self.contentExists()) url = self.getNextLink() print("Done!") diff --git a/chapter13/2-wikiSeleniumTest.py b/chapter13/2-wikiSeleniumTest.py index cf3fe3d..166537a 100644 --- a/chapter13/2-wikiSeleniumTest.py +++ b/chapter13/2-wikiSeleniumTest.py @@ -4,5 +4,5 @@ driver = webdriver.PhantomJS(executable_path='/Users/ryan/Documents/pythonscraping/code/headless/phantomjs-1.9.8-macosx/bin/phantomjs') driver.get("http://en.wikipedia.org/wiki/Monty_Python") assert "Monty Python" in driver.title -print("Monty Python was not in the title") +print("Monty Python was in the title") driver.close() \ No newline at end of file diff --git a/chapter13/4-dragAndDrop.py b/chapter13/4-dragAndDrop.py index 8e7b360..7eebbc2 100644 --- a/chapter13/4-dragAndDrop.py +++ b/chapter13/4-dragAndDrop.py @@ -15,4 +15,6 @@ actions = ActionChains(driver) actions.drag_and_drop(element, target).perform() -print(driver.find_element_by_id("message").text) \ No newline at end of file +print(driver.find_element_by_id("message").text) + +driver.close() \ No newline at end of file diff --git a/chapter13/5-takeScreenshot.py b/chapter13/5-takeScreenshot.py index 76169c2..1956a07 100644 --- a/chapter13/5-takeScreenshot.py +++ b/chapter13/5-takeScreenshot.py @@ -9,4 +9,5 @@ driver.implicitly_wait(5) driver.get('http://www.pythonscraping.com/') -driver.get_screenshot_as_file('tmp/pythonscraping.png') \ No newline at end of file +driver.get_screenshot_as_file('tmp/pythonscraping.png') +driver.close() \ No newline at end of file diff --git a/chapter13/6-combinedTest.py b/chapter13/6-combinedTest.py index 011b0c8..77a2fc9 100644 --- a/chapter13/6-combinedTest.py +++ b/chapter13/6-combinedTest.py @@ -14,6 +14,7 @@ def setUp(self): driver.get(url) def tearDown(self): + driver.close() print("Tearing down the test") def test_drag(self): diff --git a/chapter13/ghostdriver.log b/chapter13/ghostdriver.log deleted file mode 100644 index 66ef052..0000000 --- a/chapter13/ghostdriver.log +++ /dev/null @@ -1,6 +0,0 @@ -PhantomJS is launching GhostDriver... -[INFO - 2016-01-10T08:45:04.240Z] GhostDriver - Main - running on port 58176 -[INFO - 2016-01-10T08:45:05.042Z] Session [71f20ae0-b776-11e5-afb7-fbdb40be72f0] - page.settings - {"XSSAuditingEnabled":false,"javascriptCanCloseWindows":true,"javascriptCanOpenWindows":true,"javascriptEnabled":true,"loadImages":true,"localToRemoteUrlAccessEnabled":false,"userAgent":"Mozilla/5.0 (Macintosh; Intel Mac OS X) AppleWebKit/534.34 (KHTML, like Gecko) PhantomJS/1.9.8 Safari/534.34","webSecurityEnabled":true} -[INFO - 2016-01-10T08:45:05.042Z] Session [71f20ae0-b776-11e5-afb7-fbdb40be72f0] - page.customHeaders: - {} -[INFO - 2016-01-10T08:45:05.042Z] Session [71f20ae0-b776-11e5-afb7-fbdb40be72f0] - Session.negotiatedCapabilities - {"browserName":"phantomjs","version":"1.9.8","driverName":"ghostdriver","driverVersion":"1.1.0","platform":"mac-unknown-32bit","javascriptEnabled":true,"takesScreenshot":true,"handlesAlerts":false,"databaseEnabled":false,"locationContextEnabled":false,"applicationCacheEnabled":false,"browserConnectionEnabled":false,"cssSelectorsEnabled":true,"webStorageEnabled":false,"rotatable":false,"acceptSslCerts":false,"nativeEvents":true,"proxy":{"proxyType":"direct"}} -[INFO - 2016-01-10T08:45:05.042Z] SessionManagerReqHand - _postNewSessionCommand - New Session Created: 71f20ae0-b776-11e5-afb7-fbdb40be72f0 diff --git a/chapter2/.DS_Store b/chapter2/.DS_Store deleted file mode 100644 index 3497ce0c34a2b818a836dc767453afbb34acd0e5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6148 zcmeHK%T5A85UkNXpkB}z^|(hbn&9)gBA9S9?guE3m5{7pcqDS$&+w!C0RIN6XC`Ek zCGlho=}x+9=h3y(MRtY(V5*Z&1tsj z6;K8Kn*#Ff?%*6X#CWDJzTZK+l@3}Q<)w@z|7Aa#}O_HIPSm0))-_G4|{R$wJqF<`efKFeJ~azc-h$IKx|XvU=yU8?a{4CB(-ANqNb$IPKi zhw+yWwzNmAkRnxZKp2q&MZvD4#=`POwu3<-QZ7jR z-unm$UWEtffp-bt{v>Lez%c@}Bh7x}*_m0-CwbRPM6A&d>qHeIvY-M>moO|4F)wsZ zRTjb+pATbo!#1SSb1k#*Kcg!eGu@s?>~I}^!dxzZ?ZFDI0K|?Xq>=z z7&Cpp^3o*c$uazsoJp*~~(yU|{Fbw=742b=~feLgrjugtR1B1K*084O7 zfh~R*M2@4;)i_d!83BRKqgXxu-zM(L=I_f(zoS3W7 zjD`Wjz$^o+>ailu|NYiXKuh{;ooh~M~ j^l>Z=aTIStrC`nx2GG?wQV0*k{0K-I%wQN;Dg(a&LK3l_ diff --git a/chapter3/scrapy/.DS_Store b/chapter3/scrapy/.DS_Store deleted file mode 100644 index e32c32e30f5cd03e202185c7f26929daabfda113..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6148 zcmeHK&2G~`5S~o~*hB&&acFOQgF}Q8e%fQL5Gqx@AQ{mEMZv}vv9P?6~wyJ##Zy%^&5`sw%pdO+pX8Z zP*p)0mXmQWEM8IVc~}l3j$bI1E#okHnI_f1yZcn-Wtiqkp~-2SV3(8QG>=u)QN-339_=4R>f_m` z^NY`4zJAjy1cCnoZFd+KaEZZ2%{~N0o~isDwlBB~jzz10Rlq86bqer~#L?`qaYlC|0z(PL(5a}AJ4P&}65=S!njI}{*K@*0GXsCjp7{bsoFS(!3 zSQ|8S5d8QMJhR{ziqNy;_)>QV;TyE2Rlq8+s=$`1dUXCj`~CZWm1JvH0jt1&rGRMm zgMJT}#AoZ;;^?fE=x@-;s9$YxNx?uL#n_jQ;%#(on3ohF`i!+f%%ItefR@1)R)IgN Fz%QaKa^?U4 diff --git a/chapter3/scrapy/wikiSpider/.DS_Store b/chapter3/scrapy/wikiSpider/.DS_Store deleted file mode 100644 index efc9ae4f97950b0bb3405ed05f786dd069476e9a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6148 zcmeHK%Z}496uq8yhNR^YBo@OiJ7!UhS{^e?qEe7XY!E@rf|LAosYO1u;q(2=J7LO0^x|k>4}p7AX>tMQ zDZnnzDWMLf6w?4BbWolhrHefJj_A+u@^mVB7uN7zfX69YX3C6$xviNMM0JoepdP)F z*`CwsGKcOVesPu-jWENP@O{jZuZAW6hoMaInHTf`$1}DC1JWis#D+kpLmStOZ+u0qD4;qb{d;L~p zQgg?LhxM9!^PoPNIB#t0>a`oU?}z;L+js9jeEjs~E7l2PINPON);NQ2s8r?}FKBk= z_p_8|r|6$?XB>l@qk#Txtm@`W$;`wkU=-L81;qK_!UcL73x)FNKp~$1z%rVpp)TGM zg5zrRG!_cc17nH`R8*#)7);U8?&>&CW1&#diRs4&)0vrmp)i>p4^LP?w{ZP%Ovw<6fg?>R|>Fl%WpNYBz?E8EKc0DF8mo>n20MBN(u^n9m|Ti eig)4C(C3N@(9>8bL<`LP5s)&N!YJ@h75D|=hM>a$ diff --git a/chapter3/scrapy/wikiSpider/articles.csv b/chapter3/scrapy/wikiSpider/articles.csv deleted file mode 100644 index 36bfa43..0000000 --- a/chapter3/scrapy/wikiSpider/articles.csv +++ /dev/null @@ -1,67 +0,0 @@ -title -Python (programming language) -Boo (programming language) -Cobra (programming language) -Falcon (programming language) -F Sharp (programming language) -Modula-3 -D (programming language) -Perl -Lisp (programming language) -Java (programming language) -Go (programming language) -Icon (programming language) -Haskell (programming language) -Dylan (programming language) -C (programming language) -FreeDOS -GNOME Foundation -Free Software Movement of India -C++ -Contributor License Agreement -Comparison of free and open-source software licenses -zlib License -WTFPL -Main Page -Microsoft Open Specification Promise -Fork (software development) -Microsoft Developer Network -ZDNet -Comparison of Visual Basic and Visual Basic .NET -Comparison of the Java and .NET platforms -Comparison of C Sharp and Visual Basic .NET -Memory safety -Compiled language -System programming language -Comparison of C Sharp and Java -Newsqueak -Modula -Limbo (programming language) -occam (programming language) -OS X -Apple Dylan -Runtime system -Human-readable medium -License compatibility -Free software license -Library (computing) -libpng -Code Project Open License -French Institute for Research in Computer Science and Automation -Centre national de la recherche scientifique -Commissariat à l'énergie atomique et aux énergies alternatives -MySQL -MariaDB -Bitbucket -OpenOffice.org -Jagged array -Visual Basic .NET -Visual Basic -Comparison of Object Pascal and C -NOS (software) -JOVIAL -Control Data Corporation -C++ -Bill Roscoe -List of concurrent and parallel programming languages -XC (programming language) diff --git a/chapter3/scrapy/wikiSpider/articles.json b/chapter3/scrapy/wikiSpider/articles.json deleted file mode 100644 index 68dd118..0000000 --- a/chapter3/scrapy/wikiSpider/articles.json +++ /dev/null @@ -1,66 +0,0 @@ -[{"title": "Python (programming language)"}, -{"title": "Dylan (programming language)"}, -{"title": "Icon (programming language)"}, -{"title": "Boo (programming language)"}, -{"title": "Modula-3"}, -{"title": "Lisp (programming language)"}, -{"title": "Java (programming language)"}, -{"title": "Perl"}, -{"title": "Haskell (programming language)"}, -{"title": "C (programming language)"}, -{"title": "ABC (programming language)"}, -{"title": "C++"}, -{"title": "Stackless Python"}, -{"title": "PyPy"}, -{"title": "Cython"}, -{"title": "Trusted Computing"}, -{"title": "ALGOL 68"}, -{"title": "Main Page"}, -{"title": "Microsoft Open Specification Promise"}, -{"title": "Fork (software development)"}, -{"title": "Open-source software security"}, -{"title": "Software patents and free software"}, -{"title": "Unified Extensible Firmware Interface"}, -{"title": "SCO\u2013Linux controversies"}, -{"title": "Delegate (CLI)"}, -{"title": "Assembly (CLI)"}, -{"title": "Virtual Execution System"}, -{"title": "Platform Invocation Services"}, -{"title": "Common Type System"}, -{"title": "List of CIL instructions"}, -{"title": "Code Access Security"}, -{"title": "Comparison of Visual Basic and Visual Basic .NET"}, -{"title": "Orwell (programming language)"}, -{"title": "ML (programming language)"}, -{"title": "Miranda (programming language)"}, -{"title": "Kent Recursive Calculator"}, -{"title": "ISWIM"}, -{"title": "Id (programming language)"}, -{"title": "Hope (programming language)"}, -{"title": "OpenMP"}, -{"title": "Edsger W. Dijkstra"}, -{"title": "Tony Hoare"}, -{"title": "Cornelis H. A. Koster"}, -{"title": "Orthogonality"}, -{"title": "Context-free grammar"}, -{"title": "Van Wijngaarden grammar"}, -{"title": "IFIP Working Group 2.1"}, -{"title": "Samba (software)"}, -{"title": "gummiboot (software)"}, -{"title": "rEFInd"}, -{"title": "Real-time clock"}, -{"title": "Non-volatile random-access memory"}, -{"title": "Globally unique identifier"}, -{"title": "BIOS boot partition"}, -{"title": "GNU GRUB"}, -{"title": "Exception handling"}, -{"title": "Instruction set"}, -{"title": "Microsoft Developer Network"}, -{"title": "Object type (object-oriented programming)"}, -{"title": "Memory management"}, -{"title": "Reference type"}, -{"title": "Value type"}, -{"title": "Inheritance (object-oriented programming)"}, -{"title": "Eager evaluation"}, -{"title": "Peter Landin"}, -{"title": "Hindley\u2013Milner type system"} \ No newline at end of file diff --git a/chapter3/scrapy/wikiSpider/scrapy.cfg b/chapter3/scrapy/wikiSpider/scrapy.cfg index 91cc886..75d6f89 100644 --- a/chapter3/scrapy/wikiSpider/scrapy.cfg +++ b/chapter3/scrapy/wikiSpider/scrapy.cfg @@ -1,7 +1,7 @@ # Automatically created by: scrapy startproject # # For more information about the [deploy] section see: -# http://doc.scrapy.org/en/latest/topics/scrapyd.html +# https://scrapyd.readthedocs.org/en/latest/deploy.html [settings] default = wikiSpider.settings diff --git a/chapter3/scrapy/wikiSpider/wiki.log b/chapter3/scrapy/wikiSpider/wiki.log deleted file mode 100644 index 999a381..0000000 --- a/chapter3/scrapy/wikiSpider/wiki.log +++ /dev/null @@ -1,18 +0,0 @@ -2015-03-09 00:11:36-0400 [scrapy] INFO: Scrapy 0.24.4 started (bot: wikiSpider) -2015-03-09 00:11:36-0400 [scrapy] INFO: Optional features available: ssl, http11 -2015-03-09 00:11:36-0400 [scrapy] INFO: Overridden settings: {'NEWSPIDER_MODULE': 'wikiSpider.spiders', 'SPIDER_MODULES': ['wikiSpider.spiders'], 'LOG_FILE': 'wiki.log', 'BOT_NAME': 'wikiSpider'} -2015-03-09 00:11:36-0400 [scrapy] INFO: Enabled extensions: LogStats, TelnetConsole, CloseSpider, WebService, CoreStats, SpiderState -2015-03-09 00:11:37-0400 [scrapy] INFO: Enabled downloader middlewares: HttpAuthMiddleware, DownloadTimeoutMiddleware, UserAgentMiddleware, RetryMiddleware, DefaultHeadersMiddleware, MetaRefreshMiddleware, HttpCompressionMiddleware, RedirectMiddleware, CookiesMiddleware, ChunkedTransferMiddleware, DownloaderStats -2015-03-09 00:11:37-0400 [scrapy] INFO: Enabled spider middlewares: HttpErrorMiddleware, OffsiteMiddleware, RefererMiddleware, UrlLengthMiddleware, DepthMiddleware -2015-03-09 00:11:37-0400 [scrapy] INFO: Enabled item pipelines: -2015-03-09 00:11:37-0400 [article] INFO: Spider opened -2015-03-09 00:11:37-0400 [article] INFO: Crawled 0 pages (at 0 pages/min), scraped 0 items (at 0 items/min) -2015-03-09 00:11:37-0400 [scrapy] DEBUG: Telnet console listening on 127.0.0.1:6023 -2015-03-09 00:11:37-0400 [scrapy] DEBUG: Web service listening on 127.0.0.1:6080 -2015-03-09 00:11:37-0400 [article] DEBUG: Crawled (200) (referer: None) -2015-03-09 00:11:37-0400 [scrapy] INFO: Received SIGINT, shutting down gracefully. Send again to force -2015-03-09 00:11:37-0400 [article] INFO: Closing spider (shutdown) -2015-03-09 00:11:37-0400 [article] DEBUG: Filtered offsite request to 'en.wikibooks.org': -2015-03-09 00:11:37-0400 [article] DEBUG: Filtered offsite request to 'code.google.com': -2015-03-09 00:11:37-0400 [article] DEBUG: Filtered offsite request to 'en.wikiquote.org': -2015-03-09 00:11:37-0400 [scrapy] INFO: Received SIGINT twice, forcing unclean shutdown diff --git a/chapter3/scrapy/wikiSpider/wikiSpider/.DS_Store b/chapter3/scrapy/wikiSpider/wikiSpider/.DS_Store deleted file mode 100644 index ffc15f70b424fe9aad105f7c3751fa81fdefe803..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6148 zcmeHKO>fgc5S?vPV&e*e#G%}Lqlc(U_-K!fLO`mxAdKjNq7c_sW69W2>=0FHq+F2r zy!R&{_$&N?9{4Ze&F-d(lk|!Z>`1e3ygSdc`y%gViAXdDL7k{VL>8Q}bREqK<8k&S zThl!bP{?<9lv7H53J>C?Y|~*BFbe!_3h=jU(+;)Bqc;5V`%RDiIQ22gTf%3)%iK>*-(gm*0z{EU(or#M*jk<67CWZO3+Q+;m=h z-E`>XoqUirJN;Mu^sJM2eI36@)A%y(_%EYy*sk1ulqPv6O2WP*M?r{`qr)f((qS_l zBtdrMsm{YF$h-2Ty2G+;%WhY;Mx)(&z3Se3SRYs2(cWII>OR=5jmMSuwsq(3{r#tY zdiLStr_W!$e*2CU!UWD6X}2`a;0J<*mA~`)Nt`Ap7@4tV+5b0cH7wo(j2Q)t0!D#( z1$cjO;fxK96NPf?KqIdJz!JKpA?7~}%yBg~G)@#^1SS*}sHj3;F@&O{-_>~yjT426 zPC{Qkgsv>~4MoW6c)u&tNi-Ci)+k^UC@Qe79xHtQKfe0@UnH3)qkvK1pHe`ST3)M( zCF!$uX>okky6`t}HqM(UloT}jIFSO8xT8?9AYT%#_q3WM+JPW?p7V ae7qh|CkN12o80`A(wtN~kmbcd%m4r@w<^m3 diff --git a/chapter3/scrapy/wikiSpider/wikiSpider/__pycache__/__init__.cpython-35.pyc b/chapter3/scrapy/wikiSpider/wikiSpider/__pycache__/__init__.cpython-35.pyc new file mode 100644 index 0000000000000000000000000000000000000000..eed87c91fedd87367f407ebf492de4cd0e6ac2f6 GIT binary patch literal 197 zcmWgR<>fLxXcNT%1dl-k3@`#24nSPY0whux7=kq!{Z=v*frJsnuOj{2yb}Fn{m|mn zqGJ8Z+}z@PeV6>?(%jU%l4AXUqWrAXWFR9wvn0MKwIIJ(zo4=tBR@~KIJqdXATuvr zKRF|@pd_`(SRX7>X{2ACnVlJ2keQNNgv^YO&&&gw5wBNJd5gm)H$SB`C)Ez*mSP}g F002y_H~Iho literal 0 HcmV?d00001 diff --git a/chapter3/scrapy/wikiSpider/wikiSpider/__pycache__/items.cpython-35.pyc b/chapter3/scrapy/wikiSpider/wikiSpider/__pycache__/items.cpython-35.pyc new file mode 100644 index 0000000000000000000000000000000000000000..9d826877953afa95712b25984faf791fc9d03330 GIT binary patch literal 418 zcmYk1y-ve05XUdg2PL#C6E6@6umo#`Ktdpv3aMhrVnxoWb%|qRyF!`E%kUh$MOLQ1 z0uz@6)Si5&pYP*;_UUw*ny*=Y9sqp9fkni(5T zA*W;ji!9nvJIqBF|Ba*vsWSqa$b(LhCNP9`1Y6>Gm>#u9ch*Z$;XF&)G3Rxmkn=X> zTJ9ntC& ia@WBm?C)7<6S}q06Ls~O{R;<5yYhH8eDh|!pZ^71!exg5 literal 0 HcmV?d00001 diff --git a/chapter3/scrapy/wikiSpider/wikiSpider/__pycache__/settings.cpython-35.pyc b/chapter3/scrapy/wikiSpider/wikiSpider/__pycache__/settings.cpython-35.pyc new file mode 100644 index 0000000000000000000000000000000000000000..81f49a37678f6df580752b1ed6f8a4a1ba381421 GIT binary patch literal 320 zcmY+A!AiqG5QZmdjkUBzJb3logI&;T5iQA~V3X3MsC$VeyQHfoyXji;kGr-vOR_w^TSRu0F6Uvi$`?tvzK>FS8b=TRB0E|ouAOF& zS)R?sxezxUt*y* uO4KDOwi{)*z9wzbT#^03hl<=7SI3EJY;RggwtM3@?oWV$L*Soy!SOEyv0NVj literal 0 HcmV?d00001 diff --git a/chapter3/scrapy/wikiSpider/wikiSpider/items.py b/chapter3/scrapy/wikiSpider/wikiSpider/items.py index 3c2687d..7e724b1 100644 --- a/chapter3/scrapy/wikiSpider/wikiSpider/items.py +++ b/chapter3/scrapy/wikiSpider/wikiSpider/items.py @@ -5,10 +5,10 @@ # See documentation in: # http://doc.scrapy.org/en/latest/topics/items.html -from scrapy import Item, Field +import scrapy -class Article(Item): +class Article(scrapy.Item): # define the fields for your item here like: # name = scrapy.Field() - title = Field() \ No newline at end of file + title = scrapy.Field() diff --git a/chapter3/scrapy/wikiSpider/wikiSpider/items.pyc b/chapter3/scrapy/wikiSpider/wikiSpider/items.pyc deleted file mode 100644 index d80c2094a29eb758ce850e1718117cd426c7e408..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 486 zcmcgo!Ait15PfOZRaQKB&~NC;_yHm+B6v|~*MmJ+N;7J(X-ktua@IfgEILU=`~ru} zItL^_W}_WdJ&X`O9F31+$gE0coyMvcO7*41J+=_^L^hr zW5>LAt?}rwOUd_8tTVhYLS5dJ1sXsL&I^O&Qjf^QH?6nZreQ0>n_2&R;H@RrB$p?m<}CVsO!6w*|@ ziIf?b`6jdb?QXt=Y!-mb-!^wZ3SdlEOePE`Oxx85mRRMIC}E5e4QlMMT~veKUigm+ z=(C$(h5{v)^uzP3*Q=^tu~lDgabVqKkPVcqA+ z*AXwpGvBF(bFEQf%T?}}ZF)aq(kiRAvUwv2}Q!}96t-)A$dfPu7E4hSKuOErn>*%|9t-Mll;mR za0Sjv0T~r#G3PDW-a5EB-D@-Y6J1UFwGj^#CSfaPU)_pt=)qXeG$H1OZA4aR{v!}% K@ZbvksRG~TM^In@ diff --git a/chapter3/scrapy/wikiSpider/wikiSpider/spiders/__init__.pyc b/chapter3/scrapy/wikiSpider/wikiSpider/spiders/__init__.pyc deleted file mode 100644 index 78b171cb39ab9c66f8b58591fdc0ad0182a99ce8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 177 zcmZSn%*(a1SO8xT8?9AYT%#_q3WM(l~q*y;b fJ~J<~BtBjbXaWb&c$?h(l+v73JCGxaftUdRyI?K+ diff --git a/chapter3/scrapy/wikiSpider/wikiSpider/spiders/__pycache__/__init__.cpython-35.pyc b/chapter3/scrapy/wikiSpider/wikiSpider/spiders/__pycache__/__init__.cpython-35.pyc new file mode 100644 index 0000000000000000000000000000000000000000..1673fd677cbdb81509696e45296b96c6fa838165 GIT binary patch literal 205 zcmWgR<>fLxXcM)Nfq~&M5W@i@kmUfx#VkM~g@GYhlhJP_LlHUV5(_f( z()E)w5(`RFi;VTbB9%t^<(b);!3CKqsYS@lVz5ZDetdjp9?-0Ky@JYH95%W6DWy57 Lb|5zu12F>twdXs` literal 0 HcmV?d00001 diff --git a/chapter3/scrapy/wikiSpider/wikiSpider/spiders/__pycache__/articleSpider.cpython-35.pyc b/chapter3/scrapy/wikiSpider/wikiSpider/spiders/__pycache__/articleSpider.cpython-35.pyc new file mode 100644 index 0000000000000000000000000000000000000000..0f4c3436e0b1a5d238793c40302ba0214f61ca7a GIT binary patch literal 1140 zcmZ9L&2H2%5P-+|+ibQ=D?|&u6{(drNUTMiAO|Q2 z1Oy5L0t1L%H6S;kupqG7cN20O3I_tGeYYU*LE%E+0(q6#kT~!K-5g*9ZcGUJko4fx zcYoq7;2Uai#G}jnw9XR7mGx$pGoPs5b1t*EQHQUy^5W%{R5YG%eYu$<@hqY$ZD2k(YWI2;$R|Wy+`T)2CBEwlewH!Ww^8Zq~=x1qoT;l zG|Zziokc0z*?p?)D9@|Q#qCk+;EzVn?(g|y|G~C$W3+vU;tS=~5f?1XBrBA2UTKfB z7>n9G7D^Mx5e{*HLIQ>gpA5JrFvSF6F;E(?IW-!C2@+Ff!nFx^(L!*(#td4pkJG7d zA1?-!P99OouH?w)1dm*JXPL~|Rwnkglr6RHTU_6)?5jGG6V=1bx^Bv@c~(l_QkG!( zxpFxZbyW(cERD~H=<^l$9h`oBrbQ`fOy3H|1)Ud#sOXC-o)xT=f}Zed%3@T~Oop7* zm7sN#&W9rAQH_bD@g%AxTkjll{M@>-Ra~?%PHW@(!sdo08eKH5k(9gN27aKML%1k5$eR8czX247 BCj|fi literal 0 HcmV?d00001 diff --git a/chapter3/scrapy/wikiSpider/wikiSpider/spiders/articleSpider.py b/chapter3/scrapy/wikiSpider/wikiSpider/spiders/articleSpider.py index b5a88cb..f285b15 100644 --- a/chapter3/scrapy/wikiSpider/wikiSpider/spiders/articleSpider.py +++ b/chapter3/scrapy/wikiSpider/wikiSpider/spiders/articleSpider.py @@ -1,20 +1,18 @@ -from scrapy.contrib.spiders import CrawlSpider, Rule +from scrapy.spiders import CrawlSpider, Rule from wikiSpider.items import Article -from scrapy.contrib.linkextractors.sgml import SgmlLinkExtractor -from scrapy import log +from scrapy.linkextractors import LinkExtractor class ArticleSpider(CrawlSpider): - #log.start(logfile='log.txt', loglevel=log.CRITICAL) - name="article" - allowed_domains = ["en.wikipedia.org"] - start_urls = ["http://en.wikipedia.org/wiki/Python_%28programming_language%29"] - rules = [ - Rule(SgmlLinkExtractor(allow=('(/wiki/)((?!:).)*$'),), callback="parse_item", follow=True) - ] + name = "article" + allowed_domains = ["en.wikipedia.org"] + start_urls = ["http://en.wikipedia.org/wiki/Python_%28programming_language%29"] + rules = [ + Rule(LinkExtractor(allow=('(/wiki/)((?!:).)*$'),), callback="parse_item", follow=True) + ] - def parse_item(self, response): - item = Article() - title = response.xpath('//h1/text()')[0].extract() - print("Title is: "+title) - item['title'] = title - return item \ No newline at end of file + def parse_item(self, response): + item = Article() + title = response.xpath('//h1/text()')[0].extract() + print("Title is: "+title) + item['title'] = title + return item diff --git a/chapter3/scrapy/wikiSpider/wikiSpider/spiders/articleSpider.pyc b/chapter3/scrapy/wikiSpider/wikiSpider/spiders/articleSpider.pyc deleted file mode 100644 index 39fe60f72821bdbf59d767646de93a9558661657..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1384 zcmc&zOK;RL5FRIKcDJaaa471Df?6rdVJ&*1RaG7Z!2v3iEeG}z+{Degbsn<4YFBDc z`}&`VIoFo`=o0^NhE50gIXOCTAXFeqa93~&wbaWa6S2jirVNz`|I zk^pz^7K#HS&h@xeg)}ZgJ)LQpFgop_cy64^e;V$fVO&=Ft*XynT{t6h*O<pISoxgy_c=7_5eTPB<;X`1E4-uCLHzbg>i9jNN7z(sRSUurEBv`-f!8HrWrw>J+ zupzE=oDA?rU#;k>wX2k(9-XT*)yhJNQDaKGkH)EU?Jnnko^kTz@8@pX)Y;bdlh!n) z5mlw?GSi|iXQGr_+dFOvuMk={=k_k{k}hnRBu^jg4oAaBn~wO+(c@U;XKoplRv0TY zM6un>T5#f z`FXHXpLkqG+P0~!^j1QYQpN;VCv1j0{=rIPxtWWazijeZC2MDS>zTE=5iL^6^QMs8 zYjaOwHz~hwt)EBB7Y*$kM(sSMR^P_ufdLz^bzI9VA)LO-EUQH&v&^%fWmQw)Jfli@ z=)_U9@1ZQRqN#+ct@pJKlVvlbZA#Oh5o+M;-?; z;vNK>;b8}TjZTQ)`6zE{XVmd%!C{Ig;2}BsENIdfbW#s(HvO;A_*5y8no?o^fe_#Ay{^Ce)G^yfvBp;E7yJOc$4>H1@V-^m;4Wg<&0T*E43hX&L&p$$qDprKhvt+--jT7}7np#A3 zem<@ulZcFPQ@L2!n>{z**++&mCkOWA81W14cNZlEfg7;MkzE(HCqgga^y>{tEnwC%0;vJ&^%eQ zLs35+`xjp>T0") + closeTag = "" + except AttributeError: #不打印标签 + pass + print(textElem.text) + print(closeTag) \ No newline at end of file diff --git a/chapter6/from urllib.request import urlopen b/chapter6/from urllib.request import urlopen deleted file mode 100644 index 52fe6b8..0000000 --- a/chapter6/from urllib.request import urlopen +++ /dev/null @@ -1,10 +0,0 @@ -from urllib.request import urlopen -from io import StringIO -import csv - -data = urlopen("http://pythonscraping.com/files/MontyPythonAlbums.csv").read().decode('ascii', 'ignore') -dataFile = StringIO(data) -csvReader = csv.reader(dataFile) - -for row in csvReader: -print(row) \ No newline at end of file diff --git a/chapter6/readPdf.py b/chapter6/readPdf.py deleted file mode 100644 index c4ecee8..0000000 --- a/chapter6/readPdf.py +++ /dev/null @@ -1,24 +0,0 @@ -from pdfminer.pdfinterp import PDFResourceManager, process_pdf -from pdfminer.converter import TextConverter -from pdfminer.layout import LAParams -from io import StringIO -from io import open -from urllib.request import urlopen - -def readPDF(pdfFile): - rsrcmgr = PDFResourceManager() - retstr = StringIO() - laparams = LAParams() - device = TextConverter(rsrcmgr, retstr, laparams=laparams) - - process_pdf(rsrcmgr, device, pdfFile) - device.close() - - content = retstr.getvalue() - retstr.close() - return content - -pdfFile = urlopen("http://pythonscraping.com/pages/warandpeace/chapter1.pdf") -outputString = readPDF(pdfFile) -print(outputString) -pdfFile.close() diff --git a/chapter8/4-6DegreesFinder.py b/chapter8/4-6DegreesFinder.py index 7fc4263..63344b2 100644 --- a/chapter8/4-6DegreesFinder.py +++ b/chapter8/4-6DegreesFinder.py @@ -3,7 +3,7 @@ import pymysql -conn = pymysql.connect(host='127.0.0.1', port=3306, user='root', passwd='root', db='mysql', charset='utf8') +conn = pymysql.connect(host='127.0.0.1', port=3306, user='root', password=None, db='mysql', charset='utf8') cur = conn.cursor() cur.execute("USE wikipedia") diff --git a/chapter8/7-NltkAnalysis.py b/chapter8/7-NltkAnalysis.py index 2f9f77c..03f86de 100644 --- a/chapter8/7-NltkAnalysis.py +++ b/chapter8/7-NltkAnalysis.py @@ -5,6 +5,6 @@ for sentence in sentences: if "google" in sentence.lower(): taggedWords = pos_tag(word_tokenize(sentence)) - for word in taggedWords: - if word[0].lower() == "google" and word[1] in nouns: - print(sentence) + for word in taggedWords: + if word[0].lower() == "google" and word[1] in nouns: + print(sentence) diff --git a/chapter9/1-fileSubmission.py b/chapter9/1-fileSubmission.py deleted file mode 100644 index 9a7e413..0000000 --- a/chapter9/1-fileSubmission.py +++ /dev/null @@ -1,5 +0,0 @@ -import requests - -files = {'uploadFile': open('../files/Python-logo.png', 'rb')} -r = requests.post("http://pythonscraping.com/pages/processing2.php", files=files) -print(r.text) \ No newline at end of file From 5c16b0c4391e8f1b30f1454d301917c4fb2dd16b Mon Sep 17 00:00:00 2001 From: Adam Yang Date: Sun, 24 Dec 2017 15:19:42 +0800 Subject: [PATCH 14/47] remove byte-compiled and output file --- .../__pycache__/__init__.cpython-35.pyc | Bin 197 -> 0 bytes .../wikiSpider/__pycache__/items.cpython-35.pyc | Bin 418 -> 0 bytes .../__pycache__/settings.cpython-35.pyc | Bin 320 -> 0 bytes .../spiders/__pycache__/__init__.cpython-35.pyc | Bin 205 -> 0 bytes .../__pycache__/articleSpider.cpython-35.pyc | Bin 1140 -> 0 bytes files/test.csv | 11 ----------- 6 files changed, 11 deletions(-) delete mode 100644 chapter3/scrapy/wikiSpider/wikiSpider/__pycache__/__init__.cpython-35.pyc delete mode 100644 chapter3/scrapy/wikiSpider/wikiSpider/__pycache__/items.cpython-35.pyc delete mode 100644 chapter3/scrapy/wikiSpider/wikiSpider/__pycache__/settings.cpython-35.pyc delete mode 100644 chapter3/scrapy/wikiSpider/wikiSpider/spiders/__pycache__/__init__.cpython-35.pyc delete mode 100644 chapter3/scrapy/wikiSpider/wikiSpider/spiders/__pycache__/articleSpider.cpython-35.pyc delete mode 100644 files/test.csv diff --git a/chapter3/scrapy/wikiSpider/wikiSpider/__pycache__/__init__.cpython-35.pyc b/chapter3/scrapy/wikiSpider/wikiSpider/__pycache__/__init__.cpython-35.pyc deleted file mode 100644 index eed87c91fedd87367f407ebf492de4cd0e6ac2f6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 197 zcmWgR<>fLxXcNT%1dl-k3@`#24nSPY0whux7=kq!{Z=v*frJsnuOj{2yb}Fn{m|mn zqGJ8Z+}z@PeV6>?(%jU%l4AXUqWrAXWFR9wvn0MKwIIJ(zo4=tBR@~KIJqdXATuvr zKRF|@pd_`(SRX7>X{2ACnVlJ2keQNNgv^YO&&&gw5wBNJd5gm)H$SB`C)Ez*mSP}g F002y_H~Iho diff --git a/chapter3/scrapy/wikiSpider/wikiSpider/__pycache__/items.cpython-35.pyc b/chapter3/scrapy/wikiSpider/wikiSpider/__pycache__/items.cpython-35.pyc deleted file mode 100644 index 9d826877953afa95712b25984faf791fc9d03330..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 418 zcmYk1y-ve05XUdg2PL#C6E6@6umo#`Ktdpv3aMhrVnxoWb%|qRyF!`E%kUh$MOLQ1 z0uz@6)Si5&pYP*;_UUw*ny*=Y9sqp9fkni(5T zA*W;ji!9nvJIqBF|Ba*vsWSqa$b(LhCNP9`1Y6>Gm>#u9ch*Z$;XF&)G3Rxmkn=X> zTJ9ntC& ia@WBm?C)7<6S}q06Ls~O{R;<5yYhH8eDh|!pZ^71!exg5 diff --git a/chapter3/scrapy/wikiSpider/wikiSpider/__pycache__/settings.cpython-35.pyc b/chapter3/scrapy/wikiSpider/wikiSpider/__pycache__/settings.cpython-35.pyc deleted file mode 100644 index 81f49a37678f6df580752b1ed6f8a4a1ba381421..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 320 zcmY+A!AiqG5QZmdjkUBzJb3logI&;T5iQA~V3X3MsC$VeyQHfoyXji;kGr-vOR_w^TSRu0F6Uvi$`?tvzK>FS8b=TRB0E|ouAOF& zS)R?sxezxUt*y* uO4KDOwi{)*z9wzbT#^03hl<=7SI3EJY;RggwtM3@?oWV$L*Soy!SOEyv0NVj diff --git a/chapter3/scrapy/wikiSpider/wikiSpider/spiders/__pycache__/__init__.cpython-35.pyc b/chapter3/scrapy/wikiSpider/wikiSpider/spiders/__pycache__/__init__.cpython-35.pyc deleted file mode 100644 index 1673fd677cbdb81509696e45296b96c6fa838165..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 205 zcmWgR<>fLxXcM)Nfq~&M5W@i@kmUfx#VkM~g@GYhlhJP_LlHUV5(_f( z()E)w5(`RFi;VTbB9%t^<(b);!3CKqsYS@lVz5ZDetdjp9?-0Ky@JYH95%W6DWy57 Lb|5zu12F>twdXs` diff --git a/chapter3/scrapy/wikiSpider/wikiSpider/spiders/__pycache__/articleSpider.cpython-35.pyc b/chapter3/scrapy/wikiSpider/wikiSpider/spiders/__pycache__/articleSpider.cpython-35.pyc deleted file mode 100644 index 0f4c3436e0b1a5d238793c40302ba0214f61ca7a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1140 zcmZ9L&2H2%5P-+|+ibQ=D?|&u6{(drNUTMiAO|Q2 z1Oy5L0t1L%H6S;kupqG7cN20O3I_tGeYYU*LE%E+0(q6#kT~!K-5g*9ZcGUJko4fx zcYoq7;2Uai#G}jnw9XR7mGx$pGoPs5b1t*EQHQUy^5W%{R5YG%eYu$<@hqY$ZD2k(YWI2;$R|Wy+`T)2CBEwlewH!Ww^8Zq~=x1qoT;l zG|Zziokc0z*?p?)D9@|Q#qCk+;EzVn?(g|y|G~C$W3+vU;tS=~5f?1XBrBA2UTKfB z7>n9G7D^Mx5e{*HLIQ>gpA5JrFvSF6F;E(?IW-!C2@+Ff!nFx^(L!*(#td4pkJG7d zA1?-!P99OouH?w)1dm*JXPL~|Rwnkglr6RHTU_6)?5jGG6V=1bx^Bv@c~(l_QkG!( zxpFxZbyW(cERD~H=<^l$9h`oBrbQ`fOy3H|1)Ud#sOXC-o)xT=f}Zed%3@T~Oop7* zm7sN#&W9rAQH_bD@g%AxTkjll{M@>-Ra~?%PHW@(!sdo08eKH5k(9gN27aKML%1k5$eR8czX247 BCj|fi diff --git a/files/test.csv b/files/test.csv deleted file mode 100644 index a0efbe1..0000000 --- a/files/test.csv +++ /dev/null @@ -1,11 +0,0 @@ -number,number plus 2,number times 2 -0,2,0 -1,3,2 -2,4,4 -3,5,6 -4,6,8 -5,7,10 -6,8,12 -7,9,14 -8,10,16 -9,11,18 From 6e0c49fd3e9a77308c939e3793fcd2c00d6fb1f8 Mon Sep 17 00:00:00 2001 From: Adam Yang Date: Sun, 24 Dec 2017 15:20:04 +0800 Subject: [PATCH 15/47] Add .gitignore --- .gitignore | 104 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 104 insertions(+) create mode 100644 .gitignore diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..6cd11ba --- /dev/null +++ b/.gitignore @@ -0,0 +1,104 @@ +# Byte-compiled / optimized / DLL files +__pycache__/ +*.py[cod] +*$py.class + +# C extensions +*.so + +# Distribution / packaging +.Python +build/ +develop-eggs/ +dist/ +downloads/ +eggs/ +.eggs/ +lib/ +lib64/ +parts/ +sdist/ +var/ +wheels/ +*.egg-info/ +.installed.cfg +*.egg +MANIFEST + +# PyInstaller +# Usually these files are written by a python script from a template +# before PyInstaller builds the exe, so as to inject date/other infos into it. +*.manifest +*.spec + +# Installer logs +pip-log.txt +pip-delete-this-directory.txt + +# Unit test / coverage reports +htmlcov/ +.tox/ +.coverage +.coverage.* +.cache +nosetests.xml +coverage.xml +*.cover +.hypothesis/ + +# Translations +*.mo +*.pot + +# Django stuff: +*.log +.static_storage/ +.media/ +local_settings.py + +# Flask stuff: +instance/ +.webassets-cache + +# Scrapy stuff: +.scrapy + +# Sphinx documentation +docs/_build/ + +# PyBuilder +target/ + +# Jupyter Notebook +.ipynb_checkpoints + +# pyenv +.python-version + +# celery beat schedule file +celerybeat-schedule + +# SageMath parsed files +*.sage.py + +# Environments +.env +.venv +env/ +venv/ +ENV/ +env.bak/ +venv.bak/ + +# Spyder project settings +.spyderproject +.spyproject + +# Rope project settings +.ropeproject + +# mkdocs documentation +/site + +# mypy +.mypy_cache/ \ No newline at end of file From e486c7f161799902b791f0245365667d73e56058 Mon Sep 17 00:00:00 2001 From: Adam Yang Date: Sun, 24 Dec 2017 15:22:14 +0800 Subject: [PATCH 16/47] Add .gitignore --- .gitignore | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index 6cd11ba..9a14e8a 100644 --- a/.gitignore +++ b/.gitignore @@ -101,4 +101,6 @@ venv.bak/ /site # mypy -.mypy_cache/ \ No newline at end of file +.mypy_cache/ + +.DS_Store \ No newline at end of file From 6e6fbf65b902608f2cf4d5f76f683f47cd84cbbf Mon Sep 17 00:00:00 2001 From: remitchell Date: Fri, 19 Jan 2018 20:49:49 -0500 Subject: [PATCH 17/47] Adding all version 2 work so far -- very rough --- v2/Chapter01_BeginningToScrape.ipynb | 143 + v2/Chapter02-AdvancedHTMLParsing.ipynb | 781 + v2/Chapter03-web-crawlers.ipynb | 1732 + v2/Chapter04_CrawlingModels.ipynb | 164 + v2/Chapter05_Scrapy/wikiSpider/scrapy.cfg | 11 + .../wikiSpider/wikiSpider/__init__.py | 0 .../wikiSpider/wikiSpider/items.py | 8 + .../wikiSpider/wikiSpider/middlewares.py | 56 + .../wikiSpider/wikiSpider/pipelines.py | 11 + .../wikiSpider/wikiSpider/settings.py | 90 + .../wikiSpider/wikiSpider/spiders/__init__.py | 4 + .../wikiSpider/spiders/articleSpider.py | 19 + .../wikiSpider/spiders/testSpider.py | 21 + v2/Chapter06_StoringData.ipynb | 37043 ++++++++++++++++ v2/Chapter07_ReadingDocuments.ipynb | 1683 + v2/Chapter08-CleaningYourDirtyData.ipynb | 206 + v2/Chapter09_NaturalLanguages.ipynb | 310 + ...pter10-CrawlingThroughFormsAndLogins.ipynb | 554 + v2/Chapter11-JavaScript.ipynb | 107 + v2/Chapter12-API-Scraping.ipynb | 34 + v2/Chapter13-ImageProcessing.ipynb | 562 + v2/Chapter15_Testing.ipynb | 262 + v2/Chapter2-AdvancedHTMLParsing.ipynb | 34 + v2/chapter16/multiprocess.py | 36 + v2/chapter16/multiprocess_example.py | 23 + v2/chapter16/multiprocess_queue.py | 54 + v2/chapter16/multithreaded.py | 36 + v2/chapter16/multithreaded_class.py | 38 + v2/chapter16/multithreaded_example.py | 19 + v2/chapter16/multithreaded_queue.py | 54 + v2/chapter2_scrapy/tutorial/scrapy.cfg | 11 + .../tutorial/tutorial/__init__.py | 0 v2/chapter2_scrapy/tutorial/tutorial/items.py | 14 + .../tutorial/tutorial/middlewares.py | 56 + .../tutorial/tutorial/pipelines.py | 11 + .../tutorial/tutorial/settings.py | 90 + .../tutorial/tutorial/spiders/__init__.py | 4 + v2/chapter4_crawlingLayouts/__init__.py | 0 v2/chapter4_crawlingLayouts/content.py | 18 + v2/chapter4_crawlingLayouts/crawler.py | 72 + v2/chapter4_crawlingLayouts/crawler2.py | 67 + v2/chapter4_crawlingLayouts/topic.py | 6 + v2/chapter4_crawlingLayouts/website.py | 12 + v2/files/new.png | Bin 0 -> 28501 bytes v2/files/out.txt | 3 + v2/files/out6.box | 85 + v2/files/outbox.box | 85 + v2/files/output.tsv | 24 + v2/files/python.png | Bin 0 -> 7821 bytes v2/files/textBad.png | Bin 0 -> 41742 bytes v2/files/textCleaned.png | Bin 0 -> 9449 bytes v2/files/textCleaned_100.png | Bin 0 -> 8899 bytes v2/files/textCleaned_105.png | Bin 0 -> 9010 bytes v2/files/textCleaned_110.png | Bin 0 -> 9105 bytes v2/files/textCleaned_115.png | Bin 0 -> 9157 bytes v2/files/textCleaned_120.png | Bin 0 -> 9173 bytes v2/files/textCleaned_125.png | Bin 0 -> 9305 bytes v2/files/textCleaned_130.png | Bin 0 -> 9347 bytes v2/files/textCleaned_135.png | Bin 0 -> 9422 bytes v2/files/textCleaned_140.png | Bin 0 -> 9447 bytes v2/files/textCleaned_145.png | Bin 0 -> 9536 bytes v2/files/textCleaned_150.png | Bin 0 -> 9634 bytes v2/files/textCleaned_155.png | Bin 0 -> 9605 bytes v2/files/textCleaned_160.png | Bin 0 -> 9538 bytes v2/files/textCleaned_165.png | Bin 0 -> 9421 bytes v2/files/textCleaned_170.png | Bin 0 -> 9359 bytes v2/files/textCleaned_175.png | Bin 0 -> 9311 bytes v2/files/textCleaned_180.png | Bin 0 -> 9206 bytes v2/files/textCleaned_185.png | Bin 0 -> 9112 bytes v2/files/textCleaned_190.png | Bin 0 -> 9000 bytes v2/files/textCleaned_195.png | Bin 0 -> 8962 bytes v2/files/textCleaned_80.png | Bin 0 -> 7751 bytes v2/files/textCleaned_85.png | Bin 0 -> 8077 bytes v2/files/textCleaned_90.png | Bin 0 -> 8375 bytes v2/files/textCleaned_95.png | Bin 0 -> 8714 bytes v2/files/textCleaned_tmp.png | Bin 0 -> 9634 bytes v2/files/textOriginal.png | Bin 0 -> 16057 bytes v2/files/textOriginal_out.tsv | 24 + v2/files/textOriginal_out2.tsv | 24 + v2/files/textOriginal_out4.txt | 3 + v2/files/text_2.png | Bin 0 -> 9678 bytes v2/test.csv | 11 + 82 files changed, 44715 insertions(+) create mode 100644 v2/Chapter01_BeginningToScrape.ipynb create mode 100644 v2/Chapter02-AdvancedHTMLParsing.ipynb create mode 100644 v2/Chapter03-web-crawlers.ipynb create mode 100644 v2/Chapter04_CrawlingModels.ipynb create mode 100644 v2/Chapter05_Scrapy/wikiSpider/scrapy.cfg create mode 100644 v2/Chapter05_Scrapy/wikiSpider/wikiSpider/__init__.py create mode 100644 v2/Chapter05_Scrapy/wikiSpider/wikiSpider/items.py create mode 100644 v2/Chapter05_Scrapy/wikiSpider/wikiSpider/middlewares.py create mode 100644 v2/Chapter05_Scrapy/wikiSpider/wikiSpider/pipelines.py create mode 100644 v2/Chapter05_Scrapy/wikiSpider/wikiSpider/settings.py create mode 100644 v2/Chapter05_Scrapy/wikiSpider/wikiSpider/spiders/__init__.py create mode 100644 v2/Chapter05_Scrapy/wikiSpider/wikiSpider/spiders/articleSpider.py create mode 100644 v2/Chapter05_Scrapy/wikiSpider/wikiSpider/spiders/testSpider.py create mode 100644 v2/Chapter06_StoringData.ipynb create mode 100644 v2/Chapter07_ReadingDocuments.ipynb create mode 100644 v2/Chapter08-CleaningYourDirtyData.ipynb create mode 100644 v2/Chapter09_NaturalLanguages.ipynb create mode 100644 v2/Chapter10-CrawlingThroughFormsAndLogins.ipynb create mode 100644 v2/Chapter11-JavaScript.ipynb create mode 100644 v2/Chapter12-API-Scraping.ipynb create mode 100644 v2/Chapter13-ImageProcessing.ipynb create mode 100644 v2/Chapter15_Testing.ipynb create mode 100644 v2/Chapter2-AdvancedHTMLParsing.ipynb create mode 100644 v2/chapter16/multiprocess.py create mode 100644 v2/chapter16/multiprocess_example.py create mode 100644 v2/chapter16/multiprocess_queue.py create mode 100644 v2/chapter16/multithreaded.py create mode 100644 v2/chapter16/multithreaded_class.py create mode 100644 v2/chapter16/multithreaded_example.py create mode 100644 v2/chapter16/multithreaded_queue.py create mode 100644 v2/chapter2_scrapy/tutorial/scrapy.cfg create mode 100644 v2/chapter2_scrapy/tutorial/tutorial/__init__.py create mode 100644 v2/chapter2_scrapy/tutorial/tutorial/items.py create mode 100644 v2/chapter2_scrapy/tutorial/tutorial/middlewares.py create mode 100644 v2/chapter2_scrapy/tutorial/tutorial/pipelines.py create mode 100644 v2/chapter2_scrapy/tutorial/tutorial/settings.py create mode 100644 v2/chapter2_scrapy/tutorial/tutorial/spiders/__init__.py create mode 100644 v2/chapter4_crawlingLayouts/__init__.py create mode 100644 v2/chapter4_crawlingLayouts/content.py create mode 100644 v2/chapter4_crawlingLayouts/crawler.py create mode 100644 v2/chapter4_crawlingLayouts/crawler2.py create mode 100644 v2/chapter4_crawlingLayouts/topic.py create mode 100644 v2/chapter4_crawlingLayouts/website.py create mode 100644 v2/files/new.png create mode 100644 v2/files/out.txt create mode 100644 v2/files/out6.box create mode 100644 v2/files/outbox.box create mode 100644 v2/files/output.tsv create mode 100644 v2/files/python.png create mode 100755 v2/files/textBad.png create mode 100755 v2/files/textCleaned.png create mode 100644 v2/files/textCleaned_100.png create mode 100644 v2/files/textCleaned_105.png create mode 100644 v2/files/textCleaned_110.png create mode 100644 v2/files/textCleaned_115.png create mode 100644 v2/files/textCleaned_120.png create mode 100644 v2/files/textCleaned_125.png create mode 100644 v2/files/textCleaned_130.png create mode 100644 v2/files/textCleaned_135.png create mode 100644 v2/files/textCleaned_140.png create mode 100644 v2/files/textCleaned_145.png create mode 100644 v2/files/textCleaned_150.png create mode 100644 v2/files/textCleaned_155.png create mode 100644 v2/files/textCleaned_160.png create mode 100644 v2/files/textCleaned_165.png create mode 100644 v2/files/textCleaned_170.png create mode 100644 v2/files/textCleaned_175.png create mode 100644 v2/files/textCleaned_180.png create mode 100644 v2/files/textCleaned_185.png create mode 100644 v2/files/textCleaned_190.png create mode 100644 v2/files/textCleaned_195.png create mode 100644 v2/files/textCleaned_80.png create mode 100644 v2/files/textCleaned_85.png create mode 100644 v2/files/textCleaned_90.png create mode 100644 v2/files/textCleaned_95.png create mode 100644 v2/files/textCleaned_tmp.png create mode 100755 v2/files/textOriginal.png create mode 100644 v2/files/textOriginal_out.tsv create mode 100644 v2/files/textOriginal_out2.tsv create mode 100644 v2/files/textOriginal_out4.txt create mode 100644 v2/files/text_2.png create mode 100644 v2/test.csv diff --git a/v2/Chapter01_BeginningToScrape.ipynb b/v2/Chapter01_BeginningToScrape.ipynb new file mode 100644 index 0000000..a522c18 --- /dev/null +++ b/v2/Chapter01_BeginningToScrape.ipynb @@ -0,0 +1,143 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "b'\\n\\nA Useful Page\\n\\n\\n

An Interesting Title

\\n
\\nLorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.\\n
\\n\\n\\n'\n" + ] + } + ], + "source": [ + "from urllib.request import urlopen\n", + "\n", + "html = urlopen(\"http://pythonscraping.com/pages/page1.html\")\n", + "print(html.read())" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "

An Interesting Title

\n" + ] + } + ], + "source": [ + "from urllib.request import urlopen\n", + "from bs4 import BeautifulSoup\n", + "\n", + "html = urlopen(\"http://www.pythonscraping.com/pages/page1.html\")\n", + "bsObj = BeautifulSoup(html.read(), \"html.parser\")\n", + "print(bsObj.h1)" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "The server could not be found!\n" + ] + } + ], + "source": [ + "from urllib.request import urlopen\n", + "from urllib.error import HTTPError\n", + "from urllib.error import URLError\n", + "\n", + "from bs4 import BeautifulSoup\n", + "\n", + "try:\n", + " html = urlopen(\"https://pythonscrapingthisurldoesnotexist.com\")\n", + "except HTTPError as e:\n", + " print(\"The server returned an HTTP error\")\n", + "except URLError as e:\n", + " print(\"The server could not be found!\")\n", + "else:\n", + " print(html.read())" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "

An Interesting Title

\n" + ] + } + ], + "source": [ + "from urllib.request import urlopen\n", + "from urllib.error import HTTPError\n", + "from bs4 import BeautifulSoup\n", + "\n", + "def getTitle(url):\n", + " try:\n", + " html = urlopen(url)\n", + " except HTTPError as e:\n", + " return None\n", + " try:\n", + " bsObj = BeautifulSoup(html.read(), \"lxml\")\n", + " title = bsObj.body.h1\n", + " except AttributeError as e:\n", + " return None\n", + " return title\n", + "\n", + "title = getTitle(\"http://www.pythonscraping.com/pages/page1.html\")\n", + "if title == None:\n", + " print(\"Title could not be found\")\n", + "else:\n", + " print(title)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.6.1" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/v2/Chapter02-AdvancedHTMLParsing.ipynb b/v2/Chapter02-AdvancedHTMLParsing.ipynb new file mode 100644 index 0000000..b025cf6 --- /dev/null +++ b/v2/Chapter02-AdvancedHTMLParsing.ipynb @@ -0,0 +1,781 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "\n", + "\n", + "\n", + "\n", + "

War and Peace

\n", + "

Chapter 1

\n", + "
\n", + "\"Well, Prince, so Genoa and Lucca are now just family estates of the\n", + "Buonapartes. But I warn you, if you don't tell me that this means war,\n", + "if you still try to defend the infamies and horrors perpetrated by\n", + "that Antichrist- I really believe he is Antichrist- I will have\n", + "nothing more to do with you and you are no longer my friend, no longer\n", + "my 'faithful slave,' as you call yourself! But how do you do? I see\n", + "I have frightened you- sit down and tell me all the news.\"\n", + "

\n", + "It was in July, 1805, and the speaker was the well-known Anna\n", + "Pavlovna Scherer, maid of honor and favorite of the Empress Marya\n", + "Fedorovna. With these words she greeted Prince Vasili Kuragin, a man\n", + "of high rank and importance, who was the first to arrive at her\n", + "reception. Anna Pavlovna had had a cough for some days. She was, as\n", + "she said, suffering from la grippe; grippe being then a new word in\n", + "St. Petersburg, used only by the elite.\n", + "

\n", + "All her invitations without exception, written in French, and\n", + "delivered by a scarlet-liveried footman that morning, ran as follows:\n", + "

\n", + "\"If you have nothing better to do, Count [or Prince], and if the\n", + "prospect of spending an evening with a poor invalid is not too\n", + "terrible, I shall be very charmed to see you tonight between 7 and 10-\n", + "Annette Scherer.\"\n", + "

\n", + "\"Heavens! what a virulent attack!\" replied the prince, not in the\n", + "least disconcerted by this reception. He had just entered, wearing\n", + "an embroidered court uniform, knee breeches, and shoes, and had\n", + "stars on his breast and a serene expression on his flat face. He spoke\n", + "in that refined French in which our grandfathers not only spoke but\n", + "thought, and with the gentle, patronizing intonation natural to a\n", + "man of importance who had grown old in society and at court. He went\n", + "up to Anna Pavlovna, kissed her hand, presenting to her his bald,\n", + "scented, and shining head, and complacently seated himself on the\n", + "sofa.\n", + "

\n", + "\"First of all, dear friend, tell me how you are. Set your friend's\n", + "mind at rest,\" said he without altering his tone, beneath the\n", + "politeness and affected sympathy of which indifference and even\n", + "irony could be discerned.\n", + "

\n", + "\"Can one be well while suffering morally? Can one be calm in times\n", + "like these if one has any feeling?\" said Anna Pavlovna. \"You are\n", + "staying the whole evening, I hope?\"\n", + "

\n", + "\"And the fete at the English ambassador's? Today is Wednesday. I\n", + "must put in an appearance there,\" said the prince. \"My daughter is\n", + "coming for me to take me there.\"\n", + "

\n", + "\"I thought today's fete had been canceled. I confess all these\n", + "festivities and fireworks are becoming wearisome.\"\n", + "

\n", + "\"If they had known that you wished it, the entertainment would\n", + "have been put off,\" said the prince, who, like a wound-up clock, by\n", + "force of habit said things he did not even wish to be believed.\n", + "

\n", + "\"Don't tease! Well, and what has been decided about Novosiltsev's\n", + "dispatch? You know everything.\"\n", + "

\n", + "\"What can one say about it?\" replied the prince in a cold,\n", + "listless tone. \"What has been decided? They have decided that\n", + "Buonaparte has burnt his boats, and I believe that we are ready to\n", + "burn ours.\"\n", + "

\n", + "Prince Vasili always spoke languidly, like an actor repeating a\n", + "stale part. Anna Pavlovna Scherer on the contrary, despite her forty\n", + "years, overflowed with animation and impulsiveness. To be an\n", + "enthusiast had become her social vocation and, sometimes even when she\n", + "did not feel like it, she became enthusiastic in order not to\n", + "disappoint the expectations of those who knew her. The subdued smile\n", + "which, though it did not suit her faded features, always played\n", + "round her lips expressed, as in a spoiled child, a continual\n", + "consciousness of her charming defect, which she neither wished, nor\n", + "could, nor considered it necessary, to correct.\n", + "

\n", + "In the midst of a conversation on political matters Anna Pavlovna\n", + "burst out:\n", + "

\n", + "\"Oh, don't speak to me of Austria. Perhaps I don't understand\n", + "things, but Austria never has wished, and does not wish, for war.\n", + "She is betraying us! Russia alone must save Europe. Our gracious\n", + "sovereign recognizes his high vocation and will be true to it. That is\n", + "the one thing I have faith in! Our good and wonderful sovereign has to\n", + "perform the noblest role on earth, and he is so virtuous and noble\n", + "that God will not forsake him. He will fulfill his vocation and\n", + "crush the hydra of revolution, which has become more terrible than\n", + "ever in the person of this murderer and villain! We alone must\n", + "avenge the blood of the just one.... Whom, I ask you, can we rely\n", + "on?... England with her commercial spirit will not and cannot\n", + "understand the Emperor Alexander's loftiness of soul. She has\n", + "refused to evacuate Malta. She wanted to find, and still seeks, some\n", + "secret motive in our actions. What answer did Novosiltsev get? None.\n", + "The English have not understood and cannot understand the\n", + "self-abnegation of our Emperor who wants nothing for himself, but only\n", + "desires the good of mankind. And what have they promised? Nothing! And\n", + "what little they have promised they will not perform! Prussia has\n", + "always declared that Buonaparte is invincible, and that all Europe\n", + "is powerless before him.... And I don't believe a word that Hardenburg\n", + "says, or Haugwitz either. This famous Prussian neutrality is just a\n", + "trap. I have faith only in God and the lofty destiny of our adored\n", + "monarch. He will save Europe!\"\n", + "

\n", + "She suddenly paused, smiling at her own impetuosity.\n", + "

\n", + "\"I think,\" said the prince with a smile, \"that if you had been\n", + "sent instead of our dear Wintzingerode you would have captured the\n", + "King of Prussia's consent by assault. You are so eloquent. Will you\n", + "give me a cup of tea?\"\n", + "

\n", + "\"In a moment. A propos,\" she added, becoming calm again, \"I am\n", + "expecting two very interesting men tonight, le Vicomte de Mortemart,\n", + "who is connected with the Montmorencys through the Rohans, one of\n", + "the best French families. He is one of the genuine emigres, the good\n", + "ones. And also the Abbe Morio. Do you know that profound thinker? He\n", + "has been received by the Emperor. Had you heard?\"\n", + "

\n", + "\"I shall be delighted to meet them,\" said the prince. \"But tell me,\"\n", + "he added with studied carelessness as if it had only just occurred\n", + "to him, though the question he was about to ask was the chief motive\n", + "of his visit, \"is it true that the Dowager Empress wants Baron Funke\n", + "to be appointed first secretary at Vienna? The baron by all accounts\n", + "is a poor creature.\"\n", + "

\n", + "Prince Vasili wished to obtain this post for his son, but others\n", + "were trying through the Dowager Empress Marya Fedorovna to secure it\n", + "for the baron.\n", + "

\n", + "Anna Pavlovna almost closed her eyes to indicate that neither she\n", + "nor anyone else had a right to criticize what the Empress desired or\n", + "was pleased with.\n", + "

\n", + "\"Baron Funke has been recommended to the Dowager Empress by her\n", + "sister,\" was all she said, in a dry and mournful tone.\n", + "

\n", + "As she named the Empress, Anna Pavlovna's face suddenly assumed an\n", + "expression of profound and sincere devotion and respect mingled with\n", + "sadness, and this occurred every time she mentioned her illustrious\n", + "patroness. She added that Her Majesty had deigned to show Baron\n", + "Funke, and again her face clouded over with sadness.\n", + "

\n", + "The prince was silent and looked indifferent. But, with the\n", + "womanly and courtierlike quickness and tact habitual to her, Anna\n", + "Pavlovna wished both to rebuke him (for daring to speak he had done of\n", + "a man recommended to the Empress) and at the same time to console him,\n", + "so she said:\n", + "

\n", + "\"Now about your family. Do you know that since your daughter came\n", + "out everyone has been enraptured by her? They say she is amazingly\n", + "beautiful.\"\n", + "

\n", + "The prince bowed to signify his respect and gratitude.\n", + "

\n", + "\"I often think,\" she continued after a short pause, drawing nearer\n", + "to the prince and smiling amiably at him as if to show that\n", + "political and social topics were ended and the time had come for\n", + "intimate conversation- \"I often think how unfairly sometimes the\n", + "joys of life are distributed. Why has fate given you two such splendid\n", + "children? I don't speak of Anatole, your youngest. I don't like\n", + "him,\" she added in a tone admitting of no rejoinder and raising her\n", + "eyebrows. \"Two such charming children. And really you appreciate\n", + "them less than anyone, and so you don't deserve to have them.\"\n", + "

\n", + "And she smiled her ecstatic smile.\n", + "

\n", + "\"I can't help it,\" said the prince. \"Lavater would have said I\n", + "lack the bump of paternity.\"\n", + "

\n", + "\"Don't joke; I mean to have a serious talk with you. Do you know I\n", + "am dissatisfied with your younger son? Between ourselves\" (and her\n", + "face assumed its melancholy expression), \"he was mentioned at Her\n", + "Majesty's and you were pitied....\"\n", + "

\n", + "The prince answered nothing, but she looked at him significantly,\n", + "awaiting a reply. He frowned.\n", + "

\n", + "\"What would you have me do?\" he said at last. \"You know I did all\n", + "a father could for their education, and they have both turned out\n", + "fools. Hippolyte is at least a quiet fool, but Anatole is an active\n", + "one. That is the only difference between them.\" He said this smiling\n", + "in a way more natural and animated than usual, so that the wrinkles\n", + "round his mouth very clearly revealed something unexpectedly coarse\n", + "and unpleasant.\n", + "

\n", + "\"And why are children born to such men as you? If you were not a\n", + "father there would be nothing I could reproach you with,\" said Anna\n", + "Pavlovna, looking up pensively.\n", + "

\n", + "\"I am your faithful slave and to you alone I can confess that my\n", + "children are the bane of my life. It is the cross I have to bear. That\n", + "is how I explain it to myself. It can't be helped!\"\n", + "

\n", + "He said no more, but expressed his resignation to cruel fate by a\n", + "gesture. Anna Pavlovna meditated.\n", + "
\n", + "\n", + "\n", + "\n" + ] + } + ], + "source": [ + "from urllib.request import urlopen\n", + "from bs4 import BeautifulSoup\n", + "html = urlopen(\"http://www.pythonscraping.com/pages/warandpeace.html\")\n", + "bs = BeautifulSoup(html, \"html.parser\")\n", + "print(bs)" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "from urllib.request import urlopen\n", + "from bs4 import BeautifulSoup\n", + "html = urlopen(\"http://www.pythonscraping.com/pages/warandpeace.html\")\n", + "bs = BeautifulSoup(html, \"html.parser\")" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Anna\n", + "Pavlovna Scherer\n", + "Empress Marya\n", + "Fedorovna\n", + "Prince Vasili Kuragin\n", + "Anna Pavlovna\n", + "St. Petersburg\n", + "the prince\n", + "Anna Pavlovna\n", + "Anna Pavlovna\n", + "the prince\n", + "the prince\n", + "the prince\n", + "Prince Vasili\n", + "Anna Pavlovna\n", + "Anna Pavlovna\n", + "the prince\n", + "Wintzingerode\n", + "King of Prussia\n", + "le Vicomte de Mortemart\n", + "Montmorencys\n", + "Rohans\n", + "Abbe Morio\n", + "the Emperor\n", + "the prince\n", + "Prince Vasili\n", + "Dowager Empress Marya Fedorovna\n", + "the baron\n", + "Anna Pavlovna\n", + "the Empress\n", + "the Empress\n", + "Anna Pavlovna's\n", + "Her Majesty\n", + "Baron\n", + "Funke\n", + "The prince\n", + "Anna\n", + "Pavlovna\n", + "the Empress\n", + "The prince\n", + "Anatole\n", + "the prince\n", + "The prince\n", + "Anna\n", + "Pavlovna\n", + "Anna Pavlovna\n" + ] + } + ], + "source": [ + "nameList = bs.findAll(\"span\", {\"class\":\"green\"})\n", + "for name in nameList:\n", + " print(name.get_text())" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[

War and Peace

,

Chapter 1

]\n" + ] + } + ], + "source": [ + "titles = bs.find_all({\"h1\",\"h2\",\"h3\",\"h4\",\"h5\",\"h6\"})\n", + "print([title for title in titles])\n" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[Well, Prince, so Genoa and Lucca are now just family estates of the\n", + "Buonapartes. But I warn you, if you don't tell me that this means war,\n", + "if you still try to defend the infamies and horrors perpetrated by\n", + "that Antichrist- I really believe he is Antichrist- I will have\n", + "nothing more to do with you and you are no longer my friend, no longer\n", + "my 'faithful slave,' as you call yourself! But how do you do? I see\n", + "I have frightened you- sit down and tell me all the news., Anna\n", + "Pavlovna Scherer, Empress Marya\n", + "Fedorovna, Prince Vasili Kuragin, Anna Pavlovna, St. Petersburg, If you have nothing better to do, Count [or Prince], and if the\n", + "prospect of spending an evening with a poor invalid is not too\n", + "terrible, I shall be very charmed to see you tonight between 7 and 10-\n", + "Annette Scherer., Heavens! what a virulent attack!, the prince, Anna Pavlovna, First of all, dear friend, tell me how you are. Set your friend's\n", + "mind at rest,, Can one be well while suffering morally? Can one be calm in times\n", + "like these if one has any feeling?, Anna Pavlovna, You are\n", + "staying the whole evening, I hope?, And the fete at the English ambassador's? Today is Wednesday. I\n", + "must put in an appearance there,, the prince, My daughter is\n", + "coming for me to take me there., I thought today's fete had been canceled. I confess all these\n", + "festivities and fireworks are becoming wearisome., If they had known that you wished it, the entertainment would\n", + "have been put off,, the prince, Don't tease! Well, and what has been decided about Novosiltsev's\n", + "dispatch? You know everything., What can one say about it?, the prince, What has been decided? They have decided that\n", + "Buonaparte has burnt his boats, and I believe that we are ready to\n", + "burn ours., Prince Vasili, Anna Pavlovna, Anna Pavlovna, Oh, don't speak to me of Austria. Perhaps I don't understand\n", + "things, but Austria never has wished, and does not wish, for war.\n", + "She is betraying us! Russia alone must save Europe. Our gracious\n", + "sovereign recognizes his high vocation and will be true to it. That is\n", + "the one thing I have faith in! Our good and wonderful sovereign has to\n", + "perform the noblest role on earth, and he is so virtuous and noble\n", + "that God will not forsake him. He will fulfill his vocation and\n", + "crush the hydra of revolution, which has become more terrible than\n", + "ever in the person of this murderer and villain! We alone must\n", + "avenge the blood of the just one.... Whom, I ask you, can we rely\n", + "on?... England with her commercial spirit will not and cannot\n", + "understand the Emperor Alexander's loftiness of soul. She has\n", + "refused to evacuate Malta. She wanted to find, and still seeks, some\n", + "secret motive in our actions. What answer did Novosiltsev get? None.\n", + "The English have not understood and cannot understand the\n", + "self-abnegation of our Emperor who wants nothing for himself, but only\n", + "desires the good of mankind. And what have they promised? Nothing! And\n", + "what little they have promised they will not perform! Prussia has\n", + "always declared that Buonaparte is invincible, and that all Europe\n", + "is powerless before him.... And I don't believe a word that Hardenburg\n", + "says, or Haugwitz either. This famous Prussian neutrality is just a\n", + "trap. I have faith only in God and the lofty destiny of our adored\n", + "monarch. He will save Europe!, I think,, the prince, that if you had been\n", + "sent instead of our dear Wintzingerode you would have captured the\n", + "King of Prussia's consent by assault. You are so eloquent. Will you\n", + "give me a cup of tea?, Wintzingerode, King of Prussia, In a moment. A propos,, I am\n", + "expecting two very interesting men tonight, le Vicomte de Mortemart,\n", + "who is connected with the Montmorencys through the Rohans, one of\n", + "the best French families. He is one of the genuine emigres, the good\n", + "ones. And also the Abbe Morio. Do you know that profound thinker? He\n", + "has been received by the Emperor. Had you heard?, le Vicomte de Mortemart, Montmorencys, Rohans, Abbe Morio, the Emperor, I shall be delighted to meet them,, the prince, But tell me,, is it true that the Dowager Empress wants Baron Funke\n", + "to be appointed first secretary at Vienna? The baron by all accounts\n", + "is a poor creature., Prince Vasili, Dowager Empress Marya Fedorovna, the baron, Anna Pavlovna, the Empress, Baron Funke has been recommended to the Dowager Empress by her\n", + "sister,, the Empress, Anna Pavlovna's, Her Majesty, Baron\n", + "Funke, The prince, Anna\n", + "Pavlovna, the Empress, Now about your family. Do you know that since your daughter came\n", + "out everyone has been enraptured by her? They say she is amazingly\n", + "beautiful., The prince, I often think,, I often think how unfairly sometimes the\n", + "joys of life are distributed. Why has fate given you two such splendid\n", + "children? I don't speak of Anatole, your youngest. I don't like\n", + "him,, Anatole, Two such charming children. And really you appreciate\n", + "them less than anyone, and so you don't deserve to have them., I can't help it,, the prince, Lavater would have said I\n", + "lack the bump of paternity., Don't joke; I mean to have a serious talk with you. Do you know I\n", + "am dissatisfied with your younger son? Between ourselves, he was mentioned at Her\n", + "Majesty's and you were pitied...., The prince, What would you have me do?, You know I did all\n", + "a father could for their education, and they have both turned out\n", + "fools. Hippolyte is at least a quiet fool, but Anatole is an active\n", + "one. That is the only difference between them., And why are children born to such men as you? If you were not a\n", + "father there would be nothing I could reproach you with,, Anna\n", + "Pavlovna, I am your faithful slave and to you alone I can confess that my\n", + "children are the bane of my life. It is the cross I have to bear. That\n", + "is how I explain it to myself. It can't be helped!, Anna Pavlovna]\n" + ] + } + ], + "source": [ + "allText = bs.find_all(\"span\", {\"class\":{\"green\", \"red\"}})\n", + "print([text for text in allText])" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "7\n" + ] + } + ], + "source": [ + "nameList = bs.find_all(text=\"the prince\")\n", + "print(len(nameList))" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[]\n" + ] + } + ], + "source": [ + "allText = bs.find_all(id=\"title\", class_=\"text\")\n", + "print([text for text in allText])" + ] + }, + { + "cell_type": "code", + "execution_count": 25, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "\n", + "\n", + "Item Title\n", + "\n", + "Description\n", + "\n", + "Cost\n", + "\n", + "Image\n", + "\n", + "\n", + "\n", + "\n", + "Vegetable Basket\n", + "\n", + "This vegetable basket is the perfect gift for your health conscious (or overweight) friends!\n", + "Now with super-colorful bell peppers!\n", + "\n", + "$15.00\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "Russian Nesting Dolls\n", + "\n", + "Hand-painted by trained monkeys, these exquisite dolls are priceless! And by \"priceless,\" we mean \"extremely expensive\"! 8 entire dolls per set! Octuple the presents!\n", + "\n", + "$10,000.52\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "Fish Painting\n", + "\n", + "If something seems fishy about this painting, it's because it's a fish! Also hand-painted by trained monkeys!\n", + "\n", + "$10,005.00\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "Dead Parrot\n", + "\n", + "This is an ex-parrot! Or maybe he's only resting?\n", + "\n", + "$0.50\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "Mystery Box\n", + "\n", + "If you love suprises, this mystery box is for you! Do not place on light-colored surfaces. May cause oil staining. Keep your friends guessing!\n", + "\n", + "$1.50\n", + "\n", + "\n", + "\n", + "\n", + "\n" + ] + } + ], + "source": [ + "from urllib.request import urlopen\n", + "from bs4 import BeautifulSoup\n", + "\n", + "html = urlopen(\"http://www.pythonscraping.com/pages/page3.html\")\n", + "bs = BeautifulSoup(html, \"html.parser\")\n", + "\n", + "for child in bs.find(\"table\",{\"id\":\"giftList\"}).children:\n", + " print(child)" + ] + }, + { + "cell_type": "code", + "execution_count": 26, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "\n", + "\n", + "Vegetable Basket\n", + "\n", + "This vegetable basket is the perfect gift for your health conscious (or overweight) friends!\n", + "Now with super-colorful bell peppers!\n", + "\n", + "$15.00\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "Russian Nesting Dolls\n", + "\n", + "Hand-painted by trained monkeys, these exquisite dolls are priceless! And by \"priceless,\" we mean \"extremely expensive\"! 8 entire dolls per set! Octuple the presents!\n", + "\n", + "$10,000.52\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "Fish Painting\n", + "\n", + "If something seems fishy about this painting, it's because it's a fish! Also hand-painted by trained monkeys!\n", + "\n", + "$10,005.00\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "Dead Parrot\n", + "\n", + "This is an ex-parrot! Or maybe he's only resting?\n", + "\n", + "$0.50\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "Mystery Box\n", + "\n", + "If you love suprises, this mystery box is for you! Do not place on light-colored surfaces. May cause oil staining. Keep your friends guessing!\n", + "\n", + "$1.50\n", + "\n", + "\n", + "\n", + "\n", + "\n" + ] + } + ], + "source": [ + "from urllib.request import urlopen\n", + "from bs4 import BeautifulSoup\n", + "html = urlopen(\"http://www.pythonscraping.com/pages/page3.html\")\n", + "bs = BeautifulSoup(html, \"html.parser\")\n", + "\n", + "for sibling in bs.find(\"table\",{\"id\":\"giftList\"}).tr.next_siblings:\n", + " print(sibling) " + ] + }, + { + "cell_type": "code", + "execution_count": 27, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "$15.00\n", + "\n" + ] + } + ], + "source": [ + "from urllib.request import urlopen\n", + "from bs4 import BeautifulSoup\n", + "\n", + "html = urlopen(\"http://www.pythonscraping.com/pages/page3.html\")\n", + "bs = BeautifulSoup(html, \"html.parser\")\n", + "print(bs.find(\"img\",{\"src\":\"../img/gifts/img1.jpg\"}).parent.previous_sibling.get_text())" + ] + }, + { + "cell_type": "code", + "execution_count": 28, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "../img/gifts/img1.jpg\n", + "../img/gifts/img2.jpg\n", + "../img/gifts/img3.jpg\n", + "../img/gifts/img4.jpg\n", + "../img/gifts/img6.jpg\n" + ] + } + ], + "source": [ + "from urllib.request import urlopen\n", + "from bs4 import BeautifulSoup\n", + "import re\n", + "\n", + "html = urlopen(\"http://www.pythonscraping.com/pages/page3.html\")\n", + "bs = BeautifulSoup(html, \"html.parser\")\n", + "images = bs.find_all(\"img\", {\"src\":re.compile(\"\\.\\.\\/img\\/gifts/img.*\\.jpg\")})\n", + "for image in images: \n", + " print(image[\"src\"])" + ] + }, + { + "cell_type": "code", + "execution_count": 30, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[,\n", + " \n", + " Vegetable Basket\n", + " \n", + " This vegetable basket is the perfect gift for your health conscious (or overweight) friends!\n", + " Now with super-colorful bell peppers!\n", + " \n", + " $15.00\n", + " \n", + " \n", + " ,\n", + " \n", + " Russian Nesting Dolls\n", + " \n", + " Hand-painted by trained monkeys, these exquisite dolls are priceless! And by \"priceless,\" we mean \"extremely expensive\"! 8 entire dolls per set! Octuple the presents!\n", + " \n", + " $10,000.52\n", + " \n", + " \n", + " ,\n", + " \n", + " Fish Painting\n", + " \n", + " If something seems fishy about this painting, it's because it's a fish! Also hand-painted by trained monkeys!\n", + " \n", + " $10,005.00\n", + " \n", + " \n", + " ,\n", + " \n", + " Dead Parrot\n", + " \n", + " This is an ex-parrot! Or maybe he's only resting?\n", + " \n", + " $0.50\n", + " \n", + " \n", + " ,\n", + " \n", + " Mystery Box\n", + " \n", + " If you love suprises, this mystery box is for you! Do not place on light-colored surfaces. May cause oil staining. Keep your friends guessing!\n", + " \n", + " $1.50\n", + " \n", + " \n", + " ]" + ] + }, + "execution_count": 30, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "bs.find_all(lambda tag: len(tag.attrs) == 2)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.6.1" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/v2/Chapter03-web-crawlers.ipynb b/v2/Chapter03-web-crawlers.ipynb new file mode 100644 index 0000000..474ed98 --- /dev/null +++ b/v2/Chapter03-web-crawlers.ipynb @@ -0,0 +1,1732 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "/wiki/Wikipedia:Protection_policy#semi\n", + "#mw-head\n", + "#p-search\n", + "/wiki/Kevin_Bacon_(disambiguation)\n", + "/wiki/File:Kevin_Bacon_SDCC_2014.jpg\n", + "/wiki/San_Diego_Comic-Con\n", + "/wiki/Philadelphia\n", + "/wiki/Pennsylvania\n", + "/wiki/Kyra_Sedgwick\n", + "/wiki/Sosie_Bacon\n", + "/wiki/Edmund_Bacon_(architect)\n", + "/wiki/Michael_Bacon_(musician)\n", + "http://baconbros.com/\n", + "#cite_note-1\n", + "#cite_note-actor-2\n", + "/wiki/Footloose_(1984_film)\n", + "/wiki/JFK_(film)\n", + "/wiki/A_Few_Good_Men\n", + "/wiki/Apollo_13_(film)\n", + "/wiki/Mystic_River_(film)\n", + "/wiki/Sleepers\n", + "/wiki/The_Woodsman_(2004_film)\n", + "/wiki/Fox_Broadcasting_Company\n", + "/wiki/The_Following\n", + "/wiki/HBO\n", + "/wiki/Taking_Chance\n", + "/wiki/Golden_Globe_Award\n", + "/wiki/Screen_Actors_Guild_Award\n", + "/wiki/Primetime_Emmy_Award\n", + "/wiki/The_Guardian\n", + "/wiki/Academy_Award\n", + "#cite_note-3\n", + "/wiki/Hollywood_Walk_of_Fame\n", + "#cite_note-4\n", + "/wiki/Social_networks\n", + "/wiki/Six_Degrees_of_Kevin_Bacon\n", + "/wiki/SixDegrees.org\n", + "#cite_note-walk-5\n", + "#Early_life_and_education\n", + "#Acting_career\n", + "#Early_work\n", + "#1980s\n", + "#1990s\n", + "#2000s\n", + "#2010s\n", + "#Advertising_work\n", + "#Personal_life\n", + "#Six_Degrees_of_Kevin_Bacon\n", + "#Music\n", + "#Awards_and_nominations\n", + "#See_also\n", + "#References\n", + "#External_links\n", + "/wiki/Philadelphia\n", + "#cite_note-actor-2\n", + "#cite_note-actor-2\n", + "/wiki/Edmund_Bacon_(architect)\n", + "#cite_note-bacon-6\n", + "/wiki/Pennsylvania_Governor%27s_School_for_the_Arts\n", + "/wiki/Bucknell_University\n", + "#cite_note-7\n", + "/wiki/Glory_Van_Scott\n", + "#cite_note-walk-5\n", + "#cite_note-bacon-6\n", + "/wiki/Kevin_Bacon_filmography\n", + "/wiki/Circle_in_the_Square\n", + "/wiki/Nancy_Mills\n", + "/wiki/Cosmopolitan_(magazine)\n", + "#cite_note-cosmo91-8\n", + "/wiki/Fraternities_and_sororities\n", + "/wiki/Animal_House\n", + "#cite_note-bacon-6\n", + "/wiki/Search_for_Tomorrow\n", + "/wiki/Guiding_Light\n", + "/wiki/Friday_the_13th_(1980_film)\n", + "#cite_note-9\n", + "/wiki/Phoenix_Theater\n", + "/wiki/Flux\n", + "/wiki/Second_Stage_Theatre\n", + "#cite_note-bio-10\n", + "/wiki/Obie_Award\n", + "/wiki/Forty_Deuce\n", + "#cite_note-kevin-11\n", + "/wiki/Slab_Boys\n", + "/wiki/Sean_Penn\n", + "/wiki/Val_Kilmer\n", + "/wiki/Barry_Levinson\n", + "/wiki/Diner_(film)\n", + "/wiki/Steve_Guttenberg\n", + "/wiki/Daniel_Stern_(actor)\n", + "/wiki/Mickey_Rourke\n", + "/wiki/Tim_Daly\n", + "/wiki/Ellen_Barkin\n", + "#cite_note-12\n", + "/wiki/Footloose_(1984_film)\n", + "#cite_note-bio-10\n", + "/wiki/James_Dean\n", + "/wiki/Rebel_Without_a_Cause\n", + "/wiki/Mickey_Rooney\n", + "/wiki/Judy_Garland\n", + "#cite_note-time84-13\n", + "#cite_note-bacon-6\n", + "#cite_note-14\n", + "#cite_note-15\n", + "/wiki/People_(American_magazine)\n", + "/wiki/Typecasting_(acting)\n", + "/wiki/John_Hughes_(filmmaker)\n", + "/wiki/She%27s_Having_a_Baby\n", + "#cite_note-bio-10\n", + "/wiki/The_Big_Picture_(1989_film)\n", + "#cite_note-16\n", + "/wiki/Tremors_(film)\n", + "#cite_note-17\n", + "/wiki/Joel_Schumacher\n", + "/wiki/Flatliners\n", + "#cite_note-bio-10\n", + "/wiki/Elizabeth_Perkins\n", + "/wiki/He_Said,_She_Said\n", + "#cite_note-bio-10\n", + "/wiki/The_New_York_Times\n", + "#cite_note-nyt94-18\n", + "/wiki/Oliver_Stone\n", + "/wiki/JFK_(film)\n", + "#cite_note-19\n", + "/wiki/A_Few_Good_Men_(film)\n", + "#cite_note-20\n", + "/wiki/Michael_Greif\n", + "#cite_note-bio-10\n", + "/wiki/Golden_Globe_Award\n", + "/wiki/The_River_Wild\n", + "#cite_note-bio-10\n", + "/wiki/Meryl_Streep\n", + "/wiki/Murder_in_the_First_(film)\n", + "#cite_note-bio-10\n", + "/wiki/Blockbuster_(entertainment)\n", + "/wiki/Apollo_13_(film)\n", + "#cite_note-21\n", + "/wiki/Sleepers_(film)\n", + "#cite_note-22\n", + "/wiki/Picture_Perfect_(1997_film)\n", + "#cite_note-bio-10\n", + "/wiki/Losing_Chase\n", + "#cite_note-austin-23\n", + "/wiki/Digging_to_China\n", + "#cite_note-bio-10\n", + "/wiki/Payola\n", + "/wiki/Telling_Lies_in_America_(film)\n", + "#cite_note-bio-10\n", + "/wiki/Wild_Things_(film)\n", + "/wiki/Stir_of_Echoes\n", + "/wiki/David_Koepp\n", + "#cite_note-24\n", + "/wiki/File:KevinBaconTakingChanceFeb09.jpg\n", + "/wiki/File:KevinBaconTakingChanceFeb09.jpg\n", + "/wiki/Taking_Chance\n", + "/wiki/Paul_Verhoeven\n", + "/wiki/Hollow_Man\n", + "#cite_note-25\n", + "/wiki/Colin_Firth\n", + "/wiki/Rachel_Blanchard\n", + "/wiki/M%C3%A9nage_%C3%A0_trois\n", + "/wiki/Where_the_Truth_Lies\n", + "#cite_note-26\n", + "/wiki/Atom_Egoyan\n", + "/wiki/MPAA\n", + "/wiki/MPAA_film_rating_system\n", + "#cite_note-27\n", + "/wiki/Pedophile\n", + "/wiki/The_Woodsman_(2004_film)\n", + "#cite_note-28\n", + "/wiki/HBO_Films\n", + "/wiki/Taking_Chance\n", + "/wiki/Michael_Strobl\n", + "/wiki/Desert_Storm\n", + "#cite_note-29\n", + "/wiki/Screen_Actors_Guild_Award_for_Outstanding_Performance_by_a_Male_Actor_in_a_Miniseries_or_Television_Movie\n", + "/wiki/Matthew_Vaughn\n", + "/wiki/X-Men:_First_Class\n", + "#cite_note-30\n", + "/wiki/Sebastian_Shaw_(comics)\n", + "#cite_note-31\n", + "/wiki/Dustin_Lance_Black\n", + "/wiki/8_(play)\n", + "/wiki/Perry_v._Brown\n", + "/wiki/Proposition_8\n", + "/wiki/Charles_J._Cooper\n", + "#cite_note-8_the_play-32\n", + "/wiki/Wilshire_Ebell_Theatre\n", + "/wiki/American_Foundation_for_Equal_Rights\n", + "#cite_note-8_play_video-33\n", + "#cite_note-34\n", + "/wiki/The_Following\n", + "#cite_note-35\n", + "/wiki/Saturn_Award_for_Best_Actor_on_Television\n", + "#cite_note-36\n", + "/wiki/Huffington_Post\n", + "/wiki/Wikipedia:Citation_needed\n", + "/wiki/Tremors_(film)\n", + "/wiki/Wikipedia:Citation_needed\n", + "/wiki/Tremors_5:_Bloodline\n", + "/wiki/EE_(telecommunications_company)\n", + "/wiki/United_Kingdom\n", + "#cite_note-37\n", + "#cite_note-38\n", + "/wiki/Egg\n", + "#cite_note-39\n", + "/wiki/Kyra_Sedgwick\n", + "/wiki/PBS\n", + "/wiki/Lanford_Wilson\n", + "/wiki/Lemon_Sky\n", + "#cite_note-cosmo91-8\n", + "/wiki/Pyrates\n", + "/wiki/Murder_in_the_First_(film)\n", + "/wiki/The_Woodsman_(2004_film)\n", + "/wiki/Loverboy_(2005_film)\n", + "/wiki/Sosie_Bacon\n", + "/wiki/Upper_West_Side\n", + "/wiki/Manhattan\n", + "#cite_note-40\n", + "/wiki/Tracy_Pollan\n", + "#cite_note-41\n", + "#cite_note-42\n", + "#cite_note-43\n", + "/wiki/The_Times\n", + "#cite_note-44\n", + "#cite_note-45\n", + "/wiki/Will.i.am\n", + "/wiki/It%27s_a_New_Day_(Will.i.am_song)\n", + "/wiki/Barack_Obama\n", + "/wiki/Ponzi_scheme\n", + "/wiki/Bernard_Madoff\n", + "#cite_note-financialpost-46\n", + "#cite_note-47\n", + "/wiki/Finding_Your_Roots\n", + "/wiki/Henry_Louis_Gates\n", + "#cite_note-48\n", + "#cite_note-49\n", + "#cite_note-50\n", + "/wiki/Six_Degrees_of_Kevin_Bacon\n", + "/wiki/Trivia\n", + "/wiki/Big_screen\n", + "/wiki/Six_degrees_of_separation\n", + "/wiki/Meme\n", + "/wiki/SixDegrees.org\n", + "#cite_note-51\n", + "/wiki/Bacon_number\n", + "/wiki/Internet_Movie_Database\n", + "#cite_note-52\n", + "/wiki/Paul_Erd%C5%91s\n", + "/wiki/Erd%C5%91s_number\n", + "/wiki/Paul_Erd%C5%91s\n", + "/wiki/Bacon_number\n", + "/wiki/Erd%C5%91s_number\n", + "/wiki/Erd%C5%91s%E2%80%93Bacon_number\n", + "#cite_note-53\n", + "/wiki/The_Bacon_Brothers\n", + "/wiki/Michael_Bacon_(musician)\n", + "/wiki/Music_album\n", + "#cite_note-54\n", + "/wiki/Golden_Globe_Awards\n", + "/wiki/Golden_Globe_Award_for_Best_Supporting_Actor_%E2%80%93_Motion_Picture\n", + "/wiki/The_River_Wild\n", + "/wiki/Broadcast_Film_Critics_Association_Awards\n", + "/wiki/Broadcast_Film_Critics_Association_Award_for_Best_Actor\n", + "/wiki/Murder_in_the_First_(film)\n", + "/wiki/Screen_Actors_Guild_Awards\n", + "/wiki/Screen_Actors_Guild_Award_for_Outstanding_Performance_by_a_Cast_in_a_Motion_Picture\n", + "/wiki/Apollo_13_(film)\n", + "/wiki/Screen_Actors_Guild_Awards\n", + "/wiki/Screen_Actors_Guild_Award_for_Outstanding_Performance_by_a_Male_Actor_in_a_Supporting_Role\n", + "/wiki/Murder_in_the_First_(film)\n", + "/wiki/MTV_Movie_Awards\n", + "/wiki/MTV_Movie_Award_for_Best_Villain\n", + "/wiki/Hollow_Man\n", + "/wiki/Boston_Society_of_Film_Critics_Awards\n", + "/wiki/Boston_Society_of_Film_Critics_Award_for_Best_Cast\n", + "/wiki/Mystic_River_(film)\n", + "/wiki/Screen_Actors_Guild_Awards\n", + "/wiki/Screen_Actors_Guild_Award_for_Outstanding_Performance_by_a_Cast_in_a_Motion_Picture\n", + "/wiki/Mystic_River_(film)\n", + "/wiki/Satellite_Awards\n", + "/wiki/Satellite_Award_for_Best_Actor_%E2%80%93_Motion_Picture_Drama\n", + "/wiki/The_Woodsman_(2004_film)\n", + "/wiki/Teen_Choice_Awards\n", + "/wiki/Teen_Choice_Awards\n", + "/wiki/Beauty_Shop\n", + "/wiki/Primetime_Emmy_Awards\n", + "/wiki/Primetime_Emmy_Award_for_Outstanding_Lead_Actor_in_a_Miniseries_or_a_Movie\n", + "/wiki/Taking_Chance\n", + "/wiki/Satellite_Awards\n", + "/wiki/Satellite_Award_for_Best_Actor_%E2%80%93_Miniseries_or_Television_Film\n", + "/wiki/Taking_Chance\n", + "/wiki/Screen_Actors_Guild_Awards\n", + "/wiki/Screen_Actors_Guild_Award_for_Outstanding_Performance_by_a_Cast_in_a_Motion_Picture\n", + "/wiki/Frost/Nixon_(film)\n", + "/wiki/Golden_Globe_Awards\n", + "/wiki/Golden_Globe_Award_for_Best_Actor_%E2%80%93_Miniseries_or_Television_Film\n", + "/wiki/Taking_Chance\n", + "/wiki/Screen_Actors_Guild_Awards\n", + "/wiki/Screen_Actors_Guild_Award_for_Outstanding_Performance_by_a_Male_Actor_in_a_Miniseries_or_Television_Movie\n", + "/wiki/Taking_Chance\n", + "/wiki/Teen_Choice_Awards\n", + "/wiki/Teen_Choice_Awards\n", + "/wiki/X-Men:_First_Class\n", + "/wiki/Saturn_Awards\n", + "/wiki/Saturn_Award_for_Best_Actor_on_Television\n", + "/wiki/The_Following\n", + "/wiki/People%27s_Choice_Awards\n", + "/wiki/People%27s_Choice_Awards\n", + "/wiki/The_Following\n", + "/wiki/Saturn_Awards\n", + "/wiki/Saturn_Award_for_Best_Actor_on_Television\n", + "/wiki/The_Following\n", + "/wiki/List_of_actors_with_Hollywood_Walk_of_Fame_motion_picture_stars\n", + "#cite_ref-1\n", + "https://web.archive.org/web/20090113222205/http://www.newenglandancestors.org/research/services/articles_gbr78.asp\n", + "http://www.newenglandancestors.org/research/services/articles_gbr78.asp\n", + "#cite_ref-actor_2-0\n", + "#cite_ref-actor_2-1\n", + "#cite_ref-actor_2-2\n", + "http://www.biography.com/people/kevin-bacon-9542173\n", + "#cite_ref-3\n", + "https://www.theguardian.com/film/filmblog/2009/feb/19/best-actors-never-nominated-for-oscars\n", + "#cite_ref-4\n", + "http://www.walkoffame.com/kevin-bacon\n", + "#cite_ref-walk_5-0\n", + "#cite_ref-walk_5-1\n", + "https://web.archive.org/web/20141016202657/http://www.thebiographychannel.co.uk/biographies/kevin-bacon.html\n", + "http://www.thebiographychannel.co.uk/biographies/kevin-bacon.html\n", + "#cite_ref-bacon_6-0\n", + "#cite_ref-bacon_6-1\n", + "#cite_ref-bacon_6-2\n", + "#cite_ref-bacon_6-3\n", + "http://www.biography.com/news/kevin-bacon-biography-facts\n", + "#cite_ref-7\n", + "https://movies.yahoo.com/person/kevin-bacon/biography.html\n", + "#cite_ref-cosmo91_8-0\n", + "#cite_ref-cosmo91_8-1\n", + "#cite_ref-9\n", + "http://www.nydailynews.com/entertainment/happy-halloween-superstars-start-horror-flick-gallery-1.98345\n", + "#cite_ref-bio_10-0\n", + "#cite_ref-bio_10-1\n", + "#cite_ref-bio_10-2\n", + "#cite_ref-bio_10-3\n", + "#cite_ref-bio_10-4\n", + "#cite_ref-bio_10-5\n", + "#cite_ref-bio_10-6\n", + "#cite_ref-bio_10-7\n", + "#cite_ref-bio_10-8\n", + "#cite_ref-bio_10-9\n", + "#cite_ref-bio_10-10\n", + "http://www.pbs.org/wnet/finding-your-roots/profiles/kevin-bacon%C2%A0/\n", + "#cite_ref-kevin_11-0\n", + "http://www.tvguide.com/celebrities/kevin-bacon/bio/160550\n", + "#cite_ref-12\n", + "http://news.moviefone.com/2012/03/02/diner-30th-anniversary/\n", + "#cite_ref-time84_13-0\n", + "http://www.time.com/time/magazine/article/0,9171,950019,00.html\n", + "#cite_ref-14\n", + "http://www.huffingtonpost.com/2014/08/25/kevin-bacon-footloose_n_5710413.html\n", + "#cite_ref-15\n", + "https://web.archive.org/web/20090109152125/http://www.thebiographychannel.co.uk/biography_story/522%3A492/1/Kevin_Bacon.htm\n", + "http://www.thebiographychannel.co.uk/biography_story/522:492/1/Kevin_Bacon.htm\n", + "#cite_ref-16\n", + "https://www.nytimes.com/1994/09/25/movies/a-second-wind-is-blowing-for-kevin-bacon.html\n", + "#cite_ref-17\n", + "https://www.nytimes.com/movie/review?res=9C0CE2DE1631F93AA25752C0A966958260\n", + "#cite_ref-nyt94_18-0\n", + "https://query.nytimes.com/gst/fullpage.html?res=9C07E6D91F3BF936A1575AC0A962958260&sec=&spon=&pagewanted=all\n", + "#cite_ref-19\n", + "http://www.jfk-online.com/jfkbacon.html\n", + "#cite_ref-20\n", + "http://www.tcm.com/this-month/article/143158%7C0/A-Few-Good-Men.html\n", + "#cite_ref-21\n", + "http://collider.com/kevin-bacon-commercials-footloose/\n", + "#cite_ref-22\n", + "http://www.rogerebert.com/reviews/sleepers-1996\n", + "#cite_ref-austin_23-0\n", + "http://www.austinchronicle.com/calendar/film/1997-02-07/283342/\n", + "/wiki/The_Austin_Chronicle\n", + "#cite_ref-24\n", + "http://www.criminalelement.com/blogs/2013/09/under-the-raderhorror-movies-you-may-have-missed-stir-of-echoes\n", + "#cite_ref-25\n", + "http://www.rogerebert.com/reviews/hollow-man-2000\n", + "#cite_ref-26\n", + "http://movies.about.com/od/wherethetruthlies/a/truthkb101305.htm\n", + "#cite_ref-27\n", + "http://jam.canoe.ca/Movies/2005/09/14/1216527.html\n", + "#cite_ref-28\n", + "http://www.latimes.com/entertainment/la-et-kevin-bacon-photo6-photo.html\n", + "#cite_ref-29\n", + "http://www.nydailynews.com/entertainment/tv-movies/kevin-bacon-chance-body-fallen-marine-home-article-1.392226\n", + "#cite_ref-30\n", + "https://web.archive.org/web/20100722010545/http://heatvision.hollywoodreporter.com/2010/07/winters-bone-star-cast-as-mystique-in-xmen-first-class.html\n", + "http://heatvision.hollywoodreporter.com/2010/07/winters-bone-star-cast-as-mystique-in-xmen-first-class.html\n", + "#cite_ref-31\n", + "https://web.archive.org/web/20100720060214/http://www.forcesofgeek.com/2010/07/kevin-bacon-playing-sebastian-shaw-in-x.html\n", + "http://www.forcesofgeek.com/2010/07/kevin-bacon-playing-sebastian-shaw-in-x.html\n", + "#cite_ref-8_the_play_32-0\n", + "http://www.accesshollywood.com/jesse-tyler-ferguson/glee-stars-touched-by-brad-pitt-and-george-clooneys-support-of-8_article_61543\n", + "/wiki/Access_Hollywood\n", + "#cite_ref-8_play_video_33-0\n", + "https://www.youtube.com/watch?v=qlUG8F9uVgM\n", + "#cite_ref-34\n", + "http://www.pinknews.co.uk/2012/03/01/youtube-to-broadcast-proposition-8-play-live/\n", + "#cite_ref-35\n", + "http://www.fox.com/the-following/\n", + "#cite_ref-36\n", + "https://news.yahoo.com/blogs/trending-now/kevin-bacon-gives-millennials-a-history-lesson-about-the--80s-162525915.html\n", + "#cite_ref-37\n", + "http://www.campaignlive.co.uk/news/1294856/\n", + "#cite_ref-38\n", + "http://parade.condenast.com/269380/ashleighschmitz/kevin-bacon-reprises-his-most-iconic-film-roles-in-british-commercial/\n", + "#cite_ref-39\n", + "http://money.cnn.com/2015/03/13/media/kevin-bacon-eggs/index.html?iid=HP_LN\n", + "#cite_ref-40\n", + "http://www.nydailynews.com/entertainment/tv-movies/kevin-bacon-loyalty-nyc-philly-origins-peace-bustling-city-article-1.147197\n", + "#cite_ref-41\n", + "http://www.people.com/people/archive/article/0,,20093025,00.html\n", + "#cite_ref-42\n", + "http://www.au.org/media/church-and-state/archives/2008/05/two-thumbs-up.html\n", + "#cite_ref-43\n", + "http://www.washingtonpost.com/wp-dyn/content/article/2008/03/25/AR2008032503852.html\n", + "#cite_ref-44\n", + "#cite_ref-45\n", + "http://www.foxnews.com/story/0,2933,343589,00.html\n", + "#cite_ref-financialpost_46-0\n", + "http://economiccrisis.us/2009/06/may-god-spare-mercy-victim-tells-madoff/\n", + "#cite_ref-47\n", + "#cite_ref-48\n", + "http://www.huffingtonpost.com/megan-smolenyak-smolenyak/6-degrees-of-separation-k_b_900707.html\n", + "#cite_ref-49\n", + "https://web.archive.org/web/20130405182304/http://www.drawtheline.org/watch-stuff/\n", + "http://www.drawtheline.org/watch-stuff\n", + "#cite_ref-50\n", + "http://www.drawtheline.org/sign-now/\n", + "#cite_ref-51\n", + "http://www.sixdegrees.org/\n", + "#cite_ref-52\n", + "http://www.webmonkey.com/2012/09/easter-egg-google-connects-the-dots-for-bacon-number-search/\n", + "#cite_ref-53\n", + "http://www.telegraph.co.uk/science/science-news/4768389/And-the-winner-tonight-is.html\n", + "#cite_ref-54\n", + "http://baconbros.com/\n", + "https://commons.wikimedia.org/wiki/Category:Kevin_Bacon\n", + "http://www.imdb.com/name/nm0000102/\n", + "/wiki/IMDb\n", + "http://ibdb.com/person.php?id=90569\n", + "/wiki/Internet_Broadway_Database\n", + "https://www.wikidata.org/wiki/Q3454165#P1220\n", + "http://www.lortel.org/Archives/CreditableEntity/5597\n", + "/wiki/Lortel_Archives\n", + "http://www.allmovie.com/artist/p3164\n", + "/wiki/AllMovie\n", + "//worldcat.org/identities/lccn-n88-34930\n", + "/wiki/WorldCat\n", + "http://oracleofbacon.org\n", + "/wiki/Template:Critics%27_Choice_Movie_Award_for_Best_Actor\n", + "/wiki/Template_talk:Critics%27_Choice_Movie_Award_for_Best_Actor\n", + "//en.wikipedia.org/w/index.php?title=Template:Critics%27_Choice_Movie_Award_for_Best_Actor&action=edit\n", + "/wiki/Critics%27_Choice_Movie_Award_for_Best_Actor\n", + "/wiki/Geoffrey_Rush\n", + "/wiki/Jack_Nicholson\n", + "/wiki/Ian_McKellen\n", + "/wiki/Russell_Crowe\n", + "/wiki/Russell_Crowe\n", + "/wiki/Russell_Crowe\n", + "/wiki/Daniel_Day-Lewis\n", + "/wiki/Jack_Nicholson\n", + "/wiki/Sean_Penn\n", + "/wiki/Jamie_Foxx\n", + "/wiki/Philip_Seymour_Hoffman\n", + "/wiki/Forest_Whitaker\n", + "/wiki/Daniel_Day-Lewis\n", + "/wiki/Sean_Penn\n", + "/wiki/Jeff_Bridges\n", + "/wiki/Colin_Firth\n", + "/wiki/George_Clooney\n", + "/wiki/Daniel_Day-Lewis\n", + "/wiki/Matthew_McConaughey\n", + "/wiki/Michael_Keaton\n", + "/wiki/Leonardo_DiCaprio\n", + "/wiki/Casey_Affleck\n", + "/wiki/Template:GoldenGlobeBestActorTVMiniseriesFilm\n", + "/wiki/Template_talk:GoldenGlobeBestActorTVMiniseriesFilm\n", + "//en.wikipedia.org/w/index.php?title=Template:GoldenGlobeBestActorTVMiniseriesFilm&action=edit\n", + "/wiki/Golden_Globe_Award_for_Best_Actor_%E2%80%93_Miniseries_or_Television_Film\n", + "/wiki/Mickey_Rooney\n", + "/wiki/Anthony_Andrews\n", + "/wiki/Richard_Chamberlain\n", + "/wiki/Ted_Danson\n", + "/wiki/Dustin_Hoffman\n", + "/wiki/James_Woods\n", + "/wiki/Randy_Quaid\n", + "/wiki/Michael_Caine\n", + "/wiki/Stacy_Keach\n", + "/wiki/Robert_Duvall\n", + "/wiki/James_Garner\n", + "/wiki/Beau_Bridges\n", + "/wiki/Robert_Duvall\n", + "/wiki/James_Garner\n", + "/wiki/Ra%C3%BAl_Juli%C3%A1\n", + "/wiki/Gary_Sinise\n", + "/wiki/Alan_Rickman\n", + "/wiki/Ving_Rhames\n", + "/wiki/Stanley_Tucci\n", + "/wiki/Jack_Lemmon\n", + "/wiki/Brian_Dennehy\n", + "/wiki/James_Franco\n", + "/wiki/Albert_Finney\n", + "/wiki/Al_Pacino\n", + "/wiki/Geoffrey_Rush\n", + "/wiki/Jonathan_Rhys_Meyers\n", + "/wiki/Bill_Nighy\n", + "/wiki/Jim_Broadbent\n", + "/wiki/Paul_Giamatti\n", + "/wiki/Al_Pacino\n", + "/wiki/Idris_Elba\n", + "/wiki/Kevin_Costner\n", + "/wiki/Michael_Douglas\n", + "/wiki/Billy_Bob_Thornton\n", + "/wiki/Oscar_Isaac\n", + "/wiki/Tom_Hiddleston\n", + "/wiki/Template:Saturn_Award_for_Best_Actor_on_Television\n", + "/wiki/Template_talk:Saturn_Award_for_Best_Actor_on_Television\n", + "//en.wikipedia.org/w/index.php?title=Template:Saturn_Award_for_Best_Actor_on_Television&action=edit\n", + "/wiki/Saturn_Award_for_Best_Actor_on_Television\n", + "/wiki/Kyle_Chandler\n", + "/wiki/Steven_Weber_(actor)\n", + "/wiki/Richard_Dean_Anderson\n", + "/wiki/David_Boreanaz\n", + "/wiki/Robert_Patrick\n", + "/wiki/Ben_Browder\n", + "/wiki/David_Boreanaz\n", + "/wiki/David_Boreanaz\n", + "/wiki/Ben_Browder\n", + "/wiki/Matthew_Fox\n", + "/wiki/Michael_C._Hall\n", + "/wiki/Matthew_Fox\n", + "/wiki/Edward_James_Olmos\n", + "/wiki/Josh_Holloway\n", + "/wiki/Stephen_Moyer\n", + "/wiki/Bryan_Cranston\n", + "/wiki/Bryan_Cranston\n", + "/wiki/Mads_Mikkelsen\n", + "/wiki/Hugh_Dancy\n", + "/wiki/Andrew_Lincoln\n", + "/wiki/Bruce_Campbell\n", + "/wiki/Template:ScreenActorsGuildAward_MaleTVMiniseriesMovie\n", + "/wiki/Template_talk:ScreenActorsGuildAward_MaleTVMiniseriesMovie\n", + "//en.wikipedia.org/w/index.php?title=Template:ScreenActorsGuildAward_MaleTVMiniseriesMovie&action=edit\n", + "/wiki/Screen_Actors_Guild_Award_for_Outstanding_Performance_by_a_Male_Actor_in_a_Miniseries_or_Television_Movie\n", + "/wiki/Ra%C3%BAl_Juli%C3%A1\n", + "/wiki/Gary_Sinise\n", + "/wiki/Alan_Rickman\n", + "/wiki/Gary_Sinise\n", + "/wiki/Christopher_Reeve\n", + "/wiki/Jack_Lemmon\n", + "/wiki/Brian_Dennehy\n", + "/wiki/Ben_Kingsley\n", + "/wiki/William_H._Macy\n", + "/wiki/Al_Pacino\n", + "/wiki/Geoffrey_Rush\n", + "/wiki/Paul_Newman\n", + "/wiki/Jeremy_Irons\n", + "/wiki/Kevin_Kline\n", + "/wiki/Paul_Giamatti\n", + "/wiki/Al_Pacino\n", + "/wiki/Paul_Giamatti\n", + "/wiki/Kevin_Costner\n", + "/wiki/Michael_Douglas\n", + "/wiki/Mark_Ruffalo\n", + "/wiki/Idris_Elba\n", + "/wiki/Bryan_Cranston\n", + "/wiki/Template:ScreenActorsGuildAward_CastMotionPicture_1995%E2%80%932000\n", + "/wiki/Template_talk:ScreenActorsGuildAward_CastMotionPicture_1995%E2%80%932000\n", + "//en.wikipedia.org/w/index.php?title=Template:ScreenActorsGuildAward_CastMotionPicture_1995%E2%80%932000&action=edit\n", + "/wiki/Screen_Actors_Guild_Award_for_Outstanding_Performance_by_a_Cast_in_a_Motion_Picture\n", + "/wiki/Apollo_13_(film)\n", + "/wiki/Tom_Hanks\n", + "/wiki/Ed_Harris\n", + "/wiki/Bill_Paxton\n", + "/wiki/Kathleen_Quinlan\n", + "/wiki/Gary_Sinise\n", + "/wiki/The_Birdcage\n", + "/wiki/Hank_Azaria\n", + "/wiki/Christine_Baranski\n", + "/wiki/Dan_Futterman\n", + "/wiki/Gene_Hackman\n", + "/wiki/Nathan_Lane\n", + "/wiki/Dianne_Wiest\n", + "/wiki/Robin_Williams\n", + "/wiki/The_Full_Monty\n", + "/wiki/Mark_Addy\n", + "/wiki/Paul_Barber_(actor)\n", + "/wiki/Robert_Carlyle\n", + "/wiki/Deirdre_Costello_(actress)\n", + "/wiki/Steve_Huison\n", + "/wiki/Bruce_Jones_(actor)\n", + "/wiki/Lesley_Sharp\n", + "/wiki/William_Snape\n", + "/wiki/Hugo_Speer\n", + "/wiki/Tom_Wilkinson\n", + "/wiki/Emily_Woof\n", + "/wiki/Shakespeare_in_Love\n", + "/wiki/Ben_Affleck\n", + "/wiki/Simon_Callow\n", + "/wiki/Jim_Carter_(actor)\n", + "/wiki/Martin_Clunes\n", + "/wiki/Judi_Dench\n", + "/wiki/Joseph_Fiennes\n", + "/wiki/Colin_Firth\n", + "/wiki/Gwyneth_Paltrow\n", + "/wiki/Geoffrey_Rush\n", + "/wiki/Antony_Sher\n", + "/wiki/Imelda_Staunton\n", + "/wiki/American_Beauty_(1999_film)\n", + "/wiki/Annette_Bening\n", + "/wiki/Wes_Bentley\n", + "/wiki/Thora_Birch\n", + "/wiki/Chris_Cooper\n", + "/wiki/Peter_Gallagher\n", + "/wiki/Allison_Janney\n", + "/wiki/Kevin_Spacey\n", + "/wiki/Mena_Suvari\n", + "/wiki/Traffic_(2000_film)\n", + "/wiki/Steven_Bauer\n", + "/wiki/Benjamin_Bratt\n", + "/wiki/James_Brolin\n", + "/wiki/Don_Cheadle\n", + "/wiki/Erika_Christensen\n", + "/wiki/Clifton_Collins_Jr.\n", + "/wiki/Benicio_del_Toro\n", + "/wiki/Michael_Douglas\n", + "/wiki/Miguel_Ferrer\n", + "/wiki/Albert_Finney\n", + "/wiki/Topher_Grace\n", + "/wiki/Luis_Guzm%C3%A1n\n", + "/wiki/Amy_Irving\n", + "/wiki/Tomas_Milian\n", + "/wiki/D._W._Moffett\n", + "/wiki/Dennis_Quaid\n", + "/wiki/Peter_Riegert\n", + "/wiki/Jacob_Vargas\n", + "/wiki/Catherine_Zeta-Jones\n", + "/wiki/Screen_Actors_Guild_Award_for_Outstanding_Performance_by_a_Cast_in_a_Motion_Picture\n", + "/wiki/Template:ScreenActorsGuildAward_CastMotionPicture_1995%E2%80%932000\n", + "/wiki/Template:ScreenActorsGuildAward_CastMotionPicture_2001%E2%80%932010\n", + "/wiki/Template:ScreenActorsGuildAward_CastMotionPicture_2011%E2%80%932020\n", + "/wiki/Help:Authority_control\n", + "//www.worldcat.org/identities/containsVIAFID/39570812\n", + "/wiki/Virtual_International_Authority_File\n", + "https://viaf.org/viaf/39570812\n", + "/wiki/Library_of_Congress_Control_Number\n", + "http://id.loc.gov/authorities/names/n88034930\n", + "/wiki/International_Standard_Name_Identifier\n", + "http://isni.org/isni/0000000121291300\n", + "/wiki/Integrated_Authority_File\n", + "http://d-nb.info/gnd/124109659\n", + "/wiki/Syst%C3%A8me_universitaire_de_documentation\n", + "https://www.idref.fr/084292652\n", + "/wiki/Biblioth%C3%A8que_nationale_de_France\n", + "http://catalogue.bnf.fr/ark:/12148/cb139817766\n", + "http://data.bnf.fr/ark:/12148/cb139817766\n", + "/wiki/MusicBrainz\n", + "//musicbrainz.org/artist/cc0dbdfc-9b2c-4e31-8448-808412388406\n", + "https://en.wikipedia.org/w/index.php?title=Kevin_Bacon&oldid=787491952\n", + "/wiki/Help:Category\n", + "/wiki/Category:1958_births\n", + "/wiki/Category:Living_people\n", + "/wiki/Category:20th-century_American_male_actors\n", + "/wiki/Category:21st-century_American_male_actors\n", + "/wiki/Category:American_atheists\n", + "/wiki/Category:American_male_film_actors\n", + "/wiki/Category:American_male_soap_opera_actors\n", + "/wiki/Category:American_male_television_actors\n", + "/wiki/Category:American_male_voice_actors\n", + "/wiki/Category:Best_Miniseries_or_Television_Movie_Actor_Golden_Globe_winners\n", + "/wiki/Category:Circle_in_the_Square_Theatre_School_alumni\n", + "/wiki/Category:Male_actors_from_Philadelphia\n", + "/wiki/Category:Obie_Award_recipients\n", + "/wiki/Category:Outstanding_Performance_by_a_Cast_in_a_Motion_Picture_Screen_Actors_Guild_Award_winners\n", + "/wiki/Category:Sedgwick_family\n", + "/wiki/Category:The_Bacon_Brothers_members\n", + "/wiki/Category:Wikipedia_indefinitely_semi-protected_biographies_of_living_people\n", + "/wiki/Category:Use_mdy_dates_from_October_2016\n", + "/wiki/Category:Articles_with_hCards\n", + "/wiki/Category:All_articles_with_unsourced_statements\n", + "/wiki/Category:Articles_with_unsourced_statements_from_January_2016\n", + "/wiki/Category:Articles_with_IBDb_links\n", + "/wiki/Category:Wikipedia_articles_with_VIAF_identifiers\n", + "/wiki/Category:Wikipedia_articles_with_LCCN_identifiers\n", + "/wiki/Category:Wikipedia_articles_with_ISNI_identifiers\n", + "/wiki/Category:Wikipedia_articles_with_GND_identifiers\n", + "/wiki/Category:Wikipedia_articles_with_BNF_identifiers\n", + "/wiki/Category:Wikipedia_articles_with_MusicBrainz_identifiers\n", + "/wiki/Special:MyTalk\n", + "/wiki/Special:MyContributions\n", + "/w/index.php?title=Special:CreateAccount&returnto=Kevin+Bacon\n", + "/w/index.php?title=Special:UserLogin&returnto=Kevin+Bacon\n", + "/wiki/Kevin_Bacon\n", + "/wiki/Talk:Kevin_Bacon\n", + "#\n", + "/wiki/Kevin_Bacon\n", + "/w/index.php?title=Kevin_Bacon&action=edit\n", + "/w/index.php?title=Kevin_Bacon&action=history\n", + "#\n", + "/wiki/Main_Page\n", + "/wiki/Main_Page\n", + "/wiki/Portal:Contents\n", + "/wiki/Portal:Featured_content\n", + "/wiki/Portal:Current_events\n", + "/wiki/Special:Random\n", + "https://donate.wikimedia.org/wiki/Special:FundraiserRedirector?utm_source=donate&utm_medium=sidebar&utm_campaign=C13_en.wikipedia.org&uselang=en\n", + "//shop.wikimedia.org\n", + "/wiki/Help:Contents\n", + "/wiki/Wikipedia:About\n", + "/wiki/Wikipedia:Community_portal\n", + "/wiki/Special:RecentChanges\n", + "//en.wikipedia.org/wiki/Wikipedia:Contact_us\n", + "/wiki/Special:WhatLinksHere/Kevin_Bacon\n", + "/wiki/Special:RecentChangesLinked/Kevin_Bacon\n", + "/wiki/Wikipedia:File_Upload_Wizard\n", + "/wiki/Special:SpecialPages\n", + "/w/index.php?title=Kevin_Bacon&oldid=787491952\n", + "/w/index.php?title=Kevin_Bacon&action=info\n", + "https://www.wikidata.org/wiki/Q3454165\n", + "/w/index.php?title=Special:CiteThisPage&page=Kevin_Bacon&id=787491952\n", + "/w/index.php?title=Special:Book&bookcmd=book_creator&referer=Kevin+Bacon\n", + "/w/index.php?title=Special:ElectronPdf&page=Kevin+Bacon&action=show-selection-screen&coll-download-url=%2Fw%2Findex.php%3Ftitle%3DSpecial%3ABook%26bookcmd%3Drender_article%26arttitle%3DKevin%2BBacon%26returnto%3DKevin%2BBacon%26oldid%3D787491952%26writer%3Drdf2latex\n", + "/w/index.php?title=Kevin_Bacon&printable=yes\n", + "https://commons.wikimedia.org/wiki/Category:Kevin_Bacon\n", + "https://af.wikipedia.org/wiki/Kevin_Bacon\n", + "https://ar.wikipedia.org/wiki/%D9%83%D9%8A%D9%81%D9%8A%D9%86_%D8%A8%D9%8A%D9%83%D9%86\n", + "https://an.wikipedia.org/wiki/Kevin_Bacon\n", + "https://ast.wikipedia.org/wiki/Kevin_Bacon\n", + "https://zh-min-nan.wikipedia.org/wiki/Kevin_Bacon\n", + "https://bi.wikipedia.org/wiki/Kevin_Bacon\n", + "https://bg.wikipedia.org/wiki/%D0%9A%D0%B5%D0%B2%D0%B8%D0%BD_%D0%91%D0%B5%D0%B9%D0%BA%D1%8A%D0%BD\n", + "https://bs.wikipedia.org/wiki/Kevin_Bacon\n", + "https://ca.wikipedia.org/wiki/Kevin_Bacon\n", + "https://cs.wikipedia.org/wiki/Kevin_Bacon\n", + "https://da.wikipedia.org/wiki/Kevin_Bacon\n", + "https://de.wikipedia.org/wiki/Kevin_Bacon\n", + "https://el.wikipedia.org/wiki/%CE%9A%CE%AD%CE%B2%CE%B9%CE%BD_%CE%9C%CF%80%CE%AD%CE%B9%CE%BA%CE%BF%CE%BD\n", + "https://eml.wikipedia.org/wiki/Kevin_Bacon\n", + "https://es.wikipedia.org/wiki/Kevin_Bacon\n", + "https://eu.wikipedia.org/wiki/Kevin_Bacon\n", + "https://fa.wikipedia.org/wiki/%DA%A9%D9%88%DB%8C%D9%86_%D8%A8%DB%8C%DA%A9%D9%86\n", + "https://fr.wikipedia.org/wiki/Kevin_Bacon\n", + "https://gl.wikipedia.org/wiki/Kevin_Bacon\n", + "https://ko.wikipedia.org/wiki/%EC%BC%80%EB%B9%88_%EB%B2%A0%EC%9D%B4%EC%BB%A8\n", + "https://hy.wikipedia.org/wiki/%D5%94%D6%87%D5%AB%D5%B6_%D4%B2%D5%A5%D5%B5%D6%84%D5%B8%D5%B6\n", + "https://hr.wikipedia.org/wiki/Kevin_Bacon\n", + "https://io.wikipedia.org/wiki/Kevin_Bacon\n", + "https://id.wikipedia.org/wiki/Kevin_Bacon\n", + "https://it.wikipedia.org/wiki/Kevin_Bacon\n", + "https://he.wikipedia.org/wiki/%D7%A7%D7%95%D7%95%D7%99%D7%9F_%D7%91%D7%99%D7%99%D7%A7%D7%95%D7%9F\n", + "https://ka.wikipedia.org/wiki/%E1%83%99%E1%83%94%E1%83%95%E1%83%98%E1%83%9C_%E1%83%91%E1%83%94%E1%83%98%E1%83%99%E1%83%9D%E1%83%9C%E1%83%98\n", + "https://kk.wikipedia.org/wiki/%D0%9A%D0%B5%D0%B2%D0%B8%D0%BD_%D0%91%D1%8D%D0%B9%D0%BA%D0%BE%D0%BD\n", + "https://lv.wikipedia.org/wiki/Kevins_B%C4%93kons\n", + "https://hu.wikipedia.org/wiki/Kevin_Bacon\n", + "https://xmf.wikipedia.org/wiki/%E1%83%99%E1%83%94%E1%83%95%E1%83%98%E1%83%9C_%E1%83%91%E1%83%94%E1%83%98%E1%83%99%E1%83%9D%E1%83%9C%E1%83%98\n", + "https://mn.wikipedia.org/wiki/%D0%9A%D0%B5%D0%B2%D0%B8%D0%BD_%D0%91%D1%8D%D0%B9%D0%BA%D0%BE%D0%BD\n", + "https://nl.wikipedia.org/wiki/Kevin_Bacon\n", + "https://ja.wikipedia.org/wiki/%E3%82%B1%E3%83%B4%E3%82%A3%E3%83%B3%E3%83%BB%E3%83%99%E3%83%BC%E3%82%B3%E3%83%B3\n", + "https://no.wikipedia.org/wiki/Kevin_Bacon\n", + "https://oc.wikipedia.org/wiki/Kevin_Bacon\n", + "https://pl.wikipedia.org/wiki/Kevin_Bacon\n", + "https://pt.wikipedia.org/wiki/Kevin_Bacon\n", + "https://ro.wikipedia.org/wiki/Kevin_Bacon\n", + "https://ru.wikipedia.org/wiki/%D0%91%D1%8D%D0%B9%D0%BA%D0%BE%D0%BD,_%D0%9A%D0%B5%D0%B2%D0%B8%D0%BD\n", + "https://sco.wikipedia.org/wiki/Kevin_Bacon\n", + "https://simple.wikipedia.org/wiki/Kevin_Bacon\n", + "https://sk.wikipedia.org/wiki/Kevin_Bacon\n", + "https://ckb.wikipedia.org/wiki/%DA%A9%DB%8E%DA%A4%D9%86_%D8%A8%DB%95%DB%8C%DA%A9%D9%86\n", + "https://sr.wikipedia.org/wiki/%D0%9A%D0%B5%D0%B2%D0%B8%D0%BD_%D0%91%D0%B5%D1%98%D0%BA%D0%BE%D0%BD\n", + "https://sh.wikipedia.org/wiki/Kevin_Bacon\n", + "https://fi.wikipedia.org/wiki/Kevin_Bacon\n", + "https://sv.wikipedia.org/wiki/Kevin_Bacon\n", + "https://th.wikipedia.org/wiki/%E0%B9%80%E0%B8%84%E0%B8%A7%E0%B8%B4%E0%B8%99_%E0%B9%80%E0%B8%9A%E0%B8%84%E0%B8%AD%E0%B8%99\n", + "https://tr.wikipedia.org/wiki/Kevin_Bacon\n", + "https://uk.wikipedia.org/wiki/%D0%9A%D0%B5%D0%B2%D1%96%D0%BD_%D0%91%D0%B5%D0%B9%D0%BA%D0%BE%D0%BD\n", + "https://vi.wikipedia.org/wiki/Kevin_Bacon\n", + "https://zh.wikipedia.org/wiki/%E5%87%AF%E6%96%87%C2%B7%E8%B4%9D%E8%82%AF\n", + "https://www.wikidata.org/wiki/Q3454165#sitelinks-wikipedia\n", + "//en.wikipedia.org/wiki/Wikipedia:Text_of_Creative_Commons_Attribution-ShareAlike_3.0_Unported_License\n", + "//creativecommons.org/licenses/by-sa/3.0/\n", + "//wikimediafoundation.org/wiki/Terms_of_Use\n", + "//wikimediafoundation.org/wiki/Privacy_policy\n", + "//www.wikimediafoundation.org/\n", + "https://wikimediafoundation.org/wiki/Privacy_policy\n", + "/wiki/Wikipedia:About\n", + "/wiki/Wikipedia:General_disclaimer\n", + "//en.wikipedia.org/wiki/Wikipedia:Contact_us\n", + "https://www.mediawiki.org/wiki/Special:MyLanguage/How_to_contribute\n", + "https://wikimediafoundation.org/wiki/Cookie_statement\n", + "//en.m.wikipedia.org/w/index.php?title=Kevin_Bacon&mobileaction=toggle_view_mobile\n", + "https://wikimediafoundation.org/\n", + "//www.mediawiki.org/\n" + ] + } + ], + "source": [ + "from urllib.request import urlopen\n", + "from bs4 import BeautifulSoup \n", + "\n", + "html = urlopen('http://en.wikipedia.org/wiki/Kevin_Bacon')\n", + "bs = BeautifulSoup(html, 'html.parser')\n", + "for link in bs.find_all('a'):\n", + " if 'href' in link.attrs:\n", + " print(link.attrs['href'])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# # Retrieving Articles Only" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "/wiki/Kevin_Bacon_(disambiguation)\n", + "/wiki/San_Diego_Comic-Con\n", + "/wiki/Philadelphia\n", + "/wiki/Pennsylvania\n", + "/wiki/Kyra_Sedgwick\n", + "/wiki/Sosie_Bacon\n", + "/wiki/Edmund_Bacon_(architect)\n", + "/wiki/Michael_Bacon_(musician)\n", + "/wiki/Footloose_(1984_film)\n", + "/wiki/JFK_(film)\n", + "/wiki/A_Few_Good_Men\n", + "/wiki/Apollo_13_(film)\n", + "/wiki/Mystic_River_(film)\n", + "/wiki/Sleepers\n", + "/wiki/The_Woodsman_(2004_film)\n", + "/wiki/Fox_Broadcasting_Company\n", + "/wiki/The_Following\n", + "/wiki/HBO\n", + "/wiki/Taking_Chance\n", + "/wiki/Golden_Globe_Award\n", + "/wiki/Screen_Actors_Guild_Award\n", + "/wiki/Primetime_Emmy_Award\n", + "/wiki/The_Guardian\n", + "/wiki/Academy_Award\n", + "/wiki/Hollywood_Walk_of_Fame\n", + "/wiki/Social_networks\n", + "/wiki/Six_Degrees_of_Kevin_Bacon\n", + "/wiki/SixDegrees.org\n", + "/wiki/Philadelphia\n", + "/wiki/Edmund_Bacon_(architect)\n", + "/wiki/Pennsylvania_Governor%27s_School_for_the_Arts\n", + "/wiki/Bucknell_University\n", + "/wiki/Glory_Van_Scott\n", + "/wiki/Kevin_Bacon_filmography\n", + "/wiki/Circle_in_the_Square\n", + "/wiki/Nancy_Mills\n", + "/wiki/Cosmopolitan_(magazine)\n", + "/wiki/Fraternities_and_sororities\n", + "/wiki/Animal_House\n", + "/wiki/Search_for_Tomorrow\n", + "/wiki/Guiding_Light\n", + "/wiki/Friday_the_13th_(1980_film)\n", + "/wiki/Phoenix_Theater\n", + "/wiki/Flux\n", + "/wiki/Second_Stage_Theatre\n", + "/wiki/Obie_Award\n", + "/wiki/Forty_Deuce\n", + "/wiki/Slab_Boys\n", + "/wiki/Sean_Penn\n", + "/wiki/Val_Kilmer\n", + "/wiki/Barry_Levinson\n", + "/wiki/Diner_(film)\n", + "/wiki/Steve_Guttenberg\n", + "/wiki/Daniel_Stern_(actor)\n", + "/wiki/Mickey_Rourke\n", + "/wiki/Tim_Daly\n", + "/wiki/Ellen_Barkin\n", + "/wiki/Footloose_(1984_film)\n", + "/wiki/James_Dean\n", + "/wiki/Rebel_Without_a_Cause\n", + "/wiki/Mickey_Rooney\n", + "/wiki/Judy_Garland\n", + "/wiki/People_(American_magazine)\n", + "/wiki/Typecasting_(acting)\n", + "/wiki/John_Hughes_(filmmaker)\n", + "/wiki/She%27s_Having_a_Baby\n", + "/wiki/The_Big_Picture_(1989_film)\n", + "/wiki/Tremors_(film)\n", + "/wiki/Joel_Schumacher\n", + "/wiki/Flatliners\n", + "/wiki/Elizabeth_Perkins\n", + "/wiki/He_Said,_She_Said\n", + "/wiki/The_New_York_Times\n", + "/wiki/Oliver_Stone\n", + "/wiki/JFK_(film)\n", + "/wiki/A_Few_Good_Men_(film)\n", + "/wiki/Michael_Greif\n", + "/wiki/Golden_Globe_Award\n", + "/wiki/The_River_Wild\n", + "/wiki/Meryl_Streep\n", + "/wiki/Murder_in_the_First_(film)\n", + "/wiki/Blockbuster_(entertainment)\n", + "/wiki/Apollo_13_(film)\n", + "/wiki/Sleepers_(film)\n", + "/wiki/Picture_Perfect_(1997_film)\n", + "/wiki/Losing_Chase\n", + "/wiki/Digging_to_China\n", + "/wiki/Payola\n", + "/wiki/Telling_Lies_in_America_(film)\n", + "/wiki/Wild_Things_(film)\n", + "/wiki/Stir_of_Echoes\n", + "/wiki/David_Koepp\n", + "/wiki/Taking_Chance\n", + "/wiki/Paul_Verhoeven\n", + "/wiki/Hollow_Man\n", + "/wiki/Colin_Firth\n", + "/wiki/Rachel_Blanchard\n", + "/wiki/M%C3%A9nage_%C3%A0_trois\n", + "/wiki/Where_the_Truth_Lies\n", + "/wiki/Atom_Egoyan\n", + "/wiki/MPAA\n", + "/wiki/MPAA_film_rating_system\n", + "/wiki/Pedophile\n", + "/wiki/The_Woodsman_(2004_film)\n", + "/wiki/HBO_Films\n", + "/wiki/Taking_Chance\n", + "/wiki/Michael_Strobl\n", + "/wiki/Desert_Storm\n", + "/wiki/Screen_Actors_Guild_Award_for_Outstanding_Performance_by_a_Male_Actor_in_a_Miniseries_or_Television_Movie\n", + "/wiki/Matthew_Vaughn\n", + "/wiki/Sebastian_Shaw_(comics)\n", + "/wiki/Dustin_Lance_Black\n", + "/wiki/8_(play)\n", + "/wiki/Perry_v._Brown\n", + "/wiki/Proposition_8\n", + "/wiki/Charles_J._Cooper\n", + "/wiki/Wilshire_Ebell_Theatre\n", + "/wiki/American_Foundation_for_Equal_Rights\n", + "/wiki/The_Following\n", + "/wiki/Saturn_Award_for_Best_Actor_on_Television\n", + "/wiki/Huffington_Post\n", + "/wiki/Tremors_(film)\n", + "/wiki/EE_(telecommunications_company)\n", + "/wiki/United_Kingdom\n", + "/wiki/Egg\n", + "/wiki/Kyra_Sedgwick\n", + "/wiki/PBS\n", + "/wiki/Lanford_Wilson\n", + "/wiki/Lemon_Sky\n", + "/wiki/Pyrates\n", + "/wiki/Murder_in_the_First_(film)\n", + "/wiki/The_Woodsman_(2004_film)\n", + "/wiki/Loverboy_(2005_film)\n", + "/wiki/Sosie_Bacon\n", + "/wiki/Upper_West_Side\n", + "/wiki/Manhattan\n", + "/wiki/Tracy_Pollan\n", + "/wiki/The_Times\n", + "/wiki/Will.i.am\n", + "/wiki/It%27s_a_New_Day_(Will.i.am_song)\n", + "/wiki/Barack_Obama\n", + "/wiki/Ponzi_scheme\n", + "/wiki/Bernard_Madoff\n", + "/wiki/Finding_Your_Roots\n", + "/wiki/Henry_Louis_Gates\n", + "/wiki/Six_Degrees_of_Kevin_Bacon\n", + "/wiki/Trivia\n", + "/wiki/Big_screen\n", + "/wiki/Six_degrees_of_separation\n", + "/wiki/Meme\n", + "/wiki/SixDegrees.org\n", + "/wiki/Bacon_number\n", + "/wiki/Internet_Movie_Database\n", + "/wiki/Paul_Erd%C5%91s\n", + "/wiki/Erd%C5%91s_number\n", + "/wiki/Paul_Erd%C5%91s\n", + "/wiki/Bacon_number\n", + "/wiki/Erd%C5%91s_number\n", + "/wiki/Erd%C5%91s%E2%80%93Bacon_number\n", + "/wiki/The_Bacon_Brothers\n", + "/wiki/Michael_Bacon_(musician)\n", + "/wiki/Music_album\n", + "/wiki/Golden_Globe_Awards\n", + "/wiki/Golden_Globe_Award_for_Best_Supporting_Actor_%E2%80%93_Motion_Picture\n", + "/wiki/The_River_Wild\n", + "/wiki/Broadcast_Film_Critics_Association_Awards\n", + "/wiki/Broadcast_Film_Critics_Association_Award_for_Best_Actor\n", + "/wiki/Murder_in_the_First_(film)\n", + "/wiki/Screen_Actors_Guild_Awards\n", + "/wiki/Screen_Actors_Guild_Award_for_Outstanding_Performance_by_a_Cast_in_a_Motion_Picture\n", + "/wiki/Apollo_13_(film)\n", + "/wiki/Screen_Actors_Guild_Awards\n", + "/wiki/Screen_Actors_Guild_Award_for_Outstanding_Performance_by_a_Male_Actor_in_a_Supporting_Role\n", + "/wiki/Murder_in_the_First_(film)\n", + "/wiki/MTV_Movie_Awards\n", + "/wiki/MTV_Movie_Award_for_Best_Villain\n", + "/wiki/Hollow_Man\n", + "/wiki/Boston_Society_of_Film_Critics_Awards\n", + "/wiki/Boston_Society_of_Film_Critics_Award_for_Best_Cast\n", + "/wiki/Mystic_River_(film)\n", + "/wiki/Screen_Actors_Guild_Awards\n", + "/wiki/Screen_Actors_Guild_Award_for_Outstanding_Performance_by_a_Cast_in_a_Motion_Picture\n", + "/wiki/Mystic_River_(film)\n", + "/wiki/Satellite_Awards\n", + "/wiki/Satellite_Award_for_Best_Actor_%E2%80%93_Motion_Picture_Drama\n", + "/wiki/The_Woodsman_(2004_film)\n", + "/wiki/Teen_Choice_Awards\n", + "/wiki/Teen_Choice_Awards\n", + "/wiki/Beauty_Shop\n", + "/wiki/Primetime_Emmy_Awards\n", + "/wiki/Primetime_Emmy_Award_for_Outstanding_Lead_Actor_in_a_Miniseries_or_a_Movie\n", + "/wiki/Taking_Chance\n", + "/wiki/Satellite_Awards\n", + "/wiki/Satellite_Award_for_Best_Actor_%E2%80%93_Miniseries_or_Television_Film\n", + "/wiki/Taking_Chance\n", + "/wiki/Screen_Actors_Guild_Awards\n", + "/wiki/Screen_Actors_Guild_Award_for_Outstanding_Performance_by_a_Cast_in_a_Motion_Picture\n", + "/wiki/Frost/Nixon_(film)\n", + "/wiki/Golden_Globe_Awards\n", + "/wiki/Golden_Globe_Award_for_Best_Actor_%E2%80%93_Miniseries_or_Television_Film\n", + "/wiki/Taking_Chance\n", + "/wiki/Screen_Actors_Guild_Awards\n", + "/wiki/Screen_Actors_Guild_Award_for_Outstanding_Performance_by_a_Male_Actor_in_a_Miniseries_or_Television_Movie\n", + "/wiki/Taking_Chance\n", + "/wiki/Teen_Choice_Awards\n", + "/wiki/Teen_Choice_Awards\n", + "/wiki/Saturn_Awards\n", + "/wiki/Saturn_Award_for_Best_Actor_on_Television\n", + "/wiki/The_Following\n", + "/wiki/People%27s_Choice_Awards\n", + "/wiki/People%27s_Choice_Awards\n", + "/wiki/The_Following\n", + "/wiki/Saturn_Awards\n", + "/wiki/Saturn_Award_for_Best_Actor_on_Television\n", + "/wiki/The_Following\n", + "/wiki/List_of_actors_with_Hollywood_Walk_of_Fame_motion_picture_stars\n", + "/wiki/The_Austin_Chronicle\n", + "/wiki/Access_Hollywood\n", + "/wiki/IMDb\n", + "/wiki/Internet_Broadway_Database\n", + "/wiki/Lortel_Archives\n", + "/wiki/AllMovie\n", + "/wiki/WorldCat\n", + "/wiki/Critics%27_Choice_Movie_Award_for_Best_Actor\n", + "/wiki/Geoffrey_Rush\n", + "/wiki/Jack_Nicholson\n", + "/wiki/Ian_McKellen\n", + "/wiki/Russell_Crowe\n", + "/wiki/Russell_Crowe\n", + "/wiki/Russell_Crowe\n", + "/wiki/Daniel_Day-Lewis\n", + "/wiki/Jack_Nicholson\n", + "/wiki/Sean_Penn\n", + "/wiki/Jamie_Foxx\n", + "/wiki/Philip_Seymour_Hoffman\n", + "/wiki/Forest_Whitaker\n", + "/wiki/Daniel_Day-Lewis\n", + "/wiki/Sean_Penn\n", + "/wiki/Jeff_Bridges\n", + "/wiki/Colin_Firth\n", + "/wiki/George_Clooney\n", + "/wiki/Daniel_Day-Lewis\n", + "/wiki/Matthew_McConaughey\n", + "/wiki/Michael_Keaton\n", + "/wiki/Leonardo_DiCaprio\n", + "/wiki/Casey_Affleck\n", + "/wiki/Golden_Globe_Award_for_Best_Actor_%E2%80%93_Miniseries_or_Television_Film\n", + "/wiki/Mickey_Rooney\n", + "/wiki/Anthony_Andrews\n", + "/wiki/Richard_Chamberlain\n", + "/wiki/Ted_Danson\n", + "/wiki/Dustin_Hoffman\n", + "/wiki/James_Woods\n", + "/wiki/Randy_Quaid\n", + "/wiki/Michael_Caine\n", + "/wiki/Stacy_Keach\n", + "/wiki/Robert_Duvall\n", + "/wiki/James_Garner\n", + "/wiki/Beau_Bridges\n", + "/wiki/Robert_Duvall\n", + "/wiki/James_Garner\n", + "/wiki/Ra%C3%BAl_Juli%C3%A1\n", + "/wiki/Gary_Sinise\n", + "/wiki/Alan_Rickman\n", + "/wiki/Ving_Rhames\n", + "/wiki/Stanley_Tucci\n", + "/wiki/Jack_Lemmon\n", + "/wiki/Brian_Dennehy\n", + "/wiki/James_Franco\n", + "/wiki/Albert_Finney\n", + "/wiki/Al_Pacino\n", + "/wiki/Geoffrey_Rush\n", + "/wiki/Jonathan_Rhys_Meyers\n", + "/wiki/Bill_Nighy\n", + "/wiki/Jim_Broadbent\n", + "/wiki/Paul_Giamatti\n", + "/wiki/Al_Pacino\n", + "/wiki/Idris_Elba\n", + "/wiki/Kevin_Costner\n", + "/wiki/Michael_Douglas\n", + "/wiki/Billy_Bob_Thornton\n", + "/wiki/Oscar_Isaac\n", + "/wiki/Tom_Hiddleston\n", + "/wiki/Saturn_Award_for_Best_Actor_on_Television\n", + "/wiki/Kyle_Chandler\n", + "/wiki/Steven_Weber_(actor)\n", + "/wiki/Richard_Dean_Anderson\n", + "/wiki/David_Boreanaz\n", + "/wiki/Robert_Patrick\n", + "/wiki/Ben_Browder\n", + "/wiki/David_Boreanaz\n", + "/wiki/David_Boreanaz\n", + "/wiki/Ben_Browder\n", + "/wiki/Matthew_Fox\n", + "/wiki/Michael_C._Hall\n", + "/wiki/Matthew_Fox\n", + "/wiki/Edward_James_Olmos\n", + "/wiki/Josh_Holloway\n", + "/wiki/Stephen_Moyer\n", + "/wiki/Bryan_Cranston\n", + "/wiki/Bryan_Cranston\n", + "/wiki/Mads_Mikkelsen\n", + "/wiki/Hugh_Dancy\n", + "/wiki/Andrew_Lincoln\n", + "/wiki/Bruce_Campbell\n", + "/wiki/Screen_Actors_Guild_Award_for_Outstanding_Performance_by_a_Male_Actor_in_a_Miniseries_or_Television_Movie\n", + "/wiki/Ra%C3%BAl_Juli%C3%A1\n", + "/wiki/Gary_Sinise\n", + "/wiki/Alan_Rickman\n", + "/wiki/Gary_Sinise\n", + "/wiki/Christopher_Reeve\n", + "/wiki/Jack_Lemmon\n", + "/wiki/Brian_Dennehy\n", + "/wiki/Ben_Kingsley\n", + "/wiki/William_H._Macy\n", + "/wiki/Al_Pacino\n", + "/wiki/Geoffrey_Rush\n", + "/wiki/Paul_Newman\n", + "/wiki/Jeremy_Irons\n", + "/wiki/Kevin_Kline\n", + "/wiki/Paul_Giamatti\n", + "/wiki/Al_Pacino\n", + "/wiki/Paul_Giamatti\n", + "/wiki/Kevin_Costner\n", + "/wiki/Michael_Douglas\n", + "/wiki/Mark_Ruffalo\n", + "/wiki/Idris_Elba\n", + "/wiki/Bryan_Cranston\n", + "/wiki/Screen_Actors_Guild_Award_for_Outstanding_Performance_by_a_Cast_in_a_Motion_Picture\n", + "/wiki/Apollo_13_(film)\n", + "/wiki/Tom_Hanks\n", + "/wiki/Ed_Harris\n", + "/wiki/Bill_Paxton\n", + "/wiki/Kathleen_Quinlan\n", + "/wiki/Gary_Sinise\n", + "/wiki/The_Birdcage\n", + "/wiki/Hank_Azaria\n", + "/wiki/Christine_Baranski\n", + "/wiki/Dan_Futterman\n", + "/wiki/Gene_Hackman\n", + "/wiki/Nathan_Lane\n", + "/wiki/Dianne_Wiest\n", + "/wiki/Robin_Williams\n", + "/wiki/The_Full_Monty\n", + "/wiki/Mark_Addy\n", + "/wiki/Paul_Barber_(actor)\n", + "/wiki/Robert_Carlyle\n", + "/wiki/Deirdre_Costello_(actress)\n", + "/wiki/Steve_Huison\n", + "/wiki/Bruce_Jones_(actor)\n", + "/wiki/Lesley_Sharp\n", + "/wiki/William_Snape\n", + "/wiki/Hugo_Speer\n", + "/wiki/Tom_Wilkinson\n", + "/wiki/Emily_Woof\n", + "/wiki/Shakespeare_in_Love\n", + "/wiki/Ben_Affleck\n", + "/wiki/Simon_Callow\n", + "/wiki/Jim_Carter_(actor)\n", + "/wiki/Martin_Clunes\n", + "/wiki/Judi_Dench\n", + "/wiki/Joseph_Fiennes\n", + "/wiki/Colin_Firth\n", + "/wiki/Gwyneth_Paltrow\n", + "/wiki/Geoffrey_Rush\n", + "/wiki/Antony_Sher\n", + "/wiki/Imelda_Staunton\n", + "/wiki/American_Beauty_(1999_film)\n", + "/wiki/Annette_Bening\n", + "/wiki/Wes_Bentley\n", + "/wiki/Thora_Birch\n", + "/wiki/Chris_Cooper\n", + "/wiki/Peter_Gallagher\n", + "/wiki/Allison_Janney\n", + "/wiki/Kevin_Spacey\n", + "/wiki/Mena_Suvari\n", + "/wiki/Traffic_(2000_film)\n", + "/wiki/Steven_Bauer\n", + "/wiki/Benjamin_Bratt\n", + "/wiki/James_Brolin\n", + "/wiki/Don_Cheadle\n", + "/wiki/Erika_Christensen\n", + "/wiki/Clifton_Collins_Jr.\n", + "/wiki/Benicio_del_Toro\n", + "/wiki/Michael_Douglas\n", + "/wiki/Miguel_Ferrer\n", + "/wiki/Albert_Finney\n", + "/wiki/Topher_Grace\n", + "/wiki/Luis_Guzm%C3%A1n\n", + "/wiki/Amy_Irving\n", + "/wiki/Tomas_Milian\n", + "/wiki/D._W._Moffett\n", + "/wiki/Dennis_Quaid\n", + "/wiki/Peter_Riegert\n", + "/wiki/Jacob_Vargas\n", + "/wiki/Catherine_Zeta-Jones\n", + "/wiki/Screen_Actors_Guild_Award_for_Outstanding_Performance_by_a_Cast_in_a_Motion_Picture\n", + "/wiki/Virtual_International_Authority_File\n", + "/wiki/Library_of_Congress_Control_Number\n", + "/wiki/International_Standard_Name_Identifier\n", + "/wiki/Integrated_Authority_File\n", + "/wiki/Syst%C3%A8me_universitaire_de_documentation\n", + "/wiki/Biblioth%C3%A8que_nationale_de_France\n", + "/wiki/MusicBrainz\n" + ] + } + ], + "source": [ + "from urllib.request import urlopen \n", + "from bs4 import BeautifulSoup \n", + "import re\n", + "\n", + "html = urlopen('http://en.wikipedia.org/wiki/Kevin_Bacon')\n", + "bs = BeautifulSoup(html, 'html.parser')\n", + "for link in bs.find('div', {'id':'bodyContent'}).find_all('a', href=re.compile('^(/wiki/)((?!:).)*$')):\n", + " if 'href' in link.attrs:\n", + " print(link.attrs['href'])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# # Random Walk" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "/wiki/Geoffrey_Rush\n", + "/wiki/Kevin_Spacey\n", + "/wiki/Jack_Lemmon\n", + "/wiki/Peter_Mullan\n" + ] + }, + { + "ename": "KeyboardInterrupt", + "evalue": "", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mKeyboardInterrupt\u001b[0m Traceback (most recent call last)", + "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[1;32m 15\u001b[0m \u001b[0mnewArticle\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mlinks\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mrandom\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mrandint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;36m0\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mlen\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mlinks\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m-\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mattrs\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m\"href\"\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 16\u001b[0m \u001b[0mprint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mnewArticle\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 17\u001b[0;31m \u001b[0mlinks\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mgetLinks\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mnewArticle\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m", + "\u001b[0;32m\u001b[0m in \u001b[0;36mgetLinks\u001b[0;34m(articleUrl)\u001b[0m\n\u001b[1;32m 8\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0mgetLinks\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0marticleUrl\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 9\u001b[0m \u001b[0mhtml\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0murlopen\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"http://en.wikipedia.org\"\u001b[0m\u001b[0;34m+\u001b[0m\u001b[0marticleUrl\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 10\u001b[0;31m \u001b[0mbsObj\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mBeautifulSoup\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mhtml\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m\"html.parser\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 11\u001b[0m return bsObj.find(\"div\", {\"id\":\"bodyContent\"}).find_all(\"a\", \n\u001b[1;32m 12\u001b[0m href=re.compile(\"^(/wiki/)((?!:).)*$\"))\n", + "\u001b[0;32m/Users/rmitchell/anaconda3/lib/python3.6/site-packages/bs4/__init__.py\u001b[0m in \u001b[0;36m__init__\u001b[0;34m(self, markup, features, builder, parse_only, from_encoding, exclude_encodings, **kwargs)\u001b[0m\n\u001b[1;32m 189\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 190\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mhasattr\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mmarkup\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m'read'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0;31m# It's a file-type object.\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 191\u001b[0;31m \u001b[0mmarkup\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mmarkup\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mread\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 192\u001b[0m elif len(markup) <= 256 and (\n\u001b[1;32m 193\u001b[0m \u001b[0;34m(\u001b[0m\u001b[0misinstance\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mmarkup\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mbytes\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;32mand\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0;34mb'<'\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mmarkup\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Users/rmitchell/anaconda3/lib/python3.6/http/client.py\u001b[0m in \u001b[0;36mread\u001b[0;34m(self, amt)\u001b[0m\n\u001b[1;32m 460\u001b[0m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 461\u001b[0m \u001b[0;32mtry\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 462\u001b[0;31m \u001b[0ms\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_safe_read\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mlength\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 463\u001b[0m \u001b[0;32mexcept\u001b[0m \u001b[0mIncompleteRead\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 464\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_close_conn\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Users/rmitchell/anaconda3/lib/python3.6/http/client.py\u001b[0m in \u001b[0;36m_safe_read\u001b[0;34m(self, amt)\u001b[0m\n\u001b[1;32m 610\u001b[0m \u001b[0ms\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m[\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 611\u001b[0m \u001b[0;32mwhile\u001b[0m \u001b[0mamt\u001b[0m \u001b[0;34m>\u001b[0m \u001b[0;36m0\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 612\u001b[0;31m \u001b[0mchunk\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mfp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mread\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mmin\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mamt\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mMAXAMOUNT\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 613\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0mchunk\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 614\u001b[0m \u001b[0;32mraise\u001b[0m \u001b[0mIncompleteRead\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34mb''\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mjoin\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0ms\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mamt\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Users/rmitchell/anaconda3/lib/python3.6/socket.py\u001b[0m in \u001b[0;36mreadinto\u001b[0;34m(self, b)\u001b[0m\n\u001b[1;32m 584\u001b[0m \u001b[0;32mwhile\u001b[0m \u001b[0;32mTrue\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 585\u001b[0m \u001b[0;32mtry\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 586\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_sock\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mrecv_into\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mb\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 587\u001b[0m \u001b[0;32mexcept\u001b[0m \u001b[0mtimeout\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 588\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_timeout_occurred\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;32mTrue\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Users/rmitchell/anaconda3/lib/python3.6/ssl.py\u001b[0m in \u001b[0;36mrecv_into\u001b[0;34m(self, buffer, nbytes, flags)\u001b[0m\n\u001b[1;32m 1000\u001b[0m \u001b[0;34m\"non-zero flags not allowed in calls to recv_into() on %s\"\u001b[0m \u001b[0;34m%\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1001\u001b[0m self.__class__)\n\u001b[0;32m-> 1002\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mread\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mnbytes\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mbuffer\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 1003\u001b[0m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1004\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0msocket\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mrecv_into\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mbuffer\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mnbytes\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mflags\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Users/rmitchell/anaconda3/lib/python3.6/ssl.py\u001b[0m in \u001b[0;36mread\u001b[0;34m(self, len, buffer)\u001b[0m\n\u001b[1;32m 863\u001b[0m \u001b[0;32mraise\u001b[0m \u001b[0mValueError\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"Read on closed or unwrapped SSL socket.\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 864\u001b[0m \u001b[0;32mtry\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 865\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_sslobj\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mread\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mlen\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mbuffer\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 866\u001b[0m \u001b[0;32mexcept\u001b[0m \u001b[0mSSLError\u001b[0m \u001b[0;32mas\u001b[0m \u001b[0mx\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 867\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mx\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m0\u001b[0m\u001b[0;34m]\u001b[0m \u001b[0;34m==\u001b[0m \u001b[0mSSL_ERROR_EOF\u001b[0m \u001b[0;32mand\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msuppress_ragged_eofs\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Users/rmitchell/anaconda3/lib/python3.6/ssl.py\u001b[0m in \u001b[0;36mread\u001b[0;34m(self, len, buffer)\u001b[0m\n\u001b[1;32m 623\u001b[0m \"\"\"\n\u001b[1;32m 624\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mbuffer\u001b[0m \u001b[0;32mis\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0;32mNone\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 625\u001b[0;31m \u001b[0mv\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_sslobj\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mread\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mlen\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mbuffer\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 626\u001b[0m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 627\u001b[0m \u001b[0mv\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_sslobj\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mread\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mlen\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;31mKeyboardInterrupt\u001b[0m: " + ] + } + ], + "source": [ + "from urllib.request import urlopen\n", + "from bs4 import BeautifulSoup\n", + "import datetime\n", + "import random\n", + "import re\n", + "\n", + "random.seed(datetime.datetime.now())\n", + "def getLinks(articleUrl):\n", + " html = urlopen('http://en.wikipedia.org{}'.format(articleUrl))\n", + " bs = BeautifulSoup(html, 'html.parser')\n", + " return bs.find('div', {'id':'bodyContent'}).find_all('a', href=re.compile('^(/wiki/)((?!:).)*$'))\n", + "links = getLinks('/wiki/Kevin_Bacon')\n", + "while len(links) > 0:\n", + " newArticle = links[random.randint(0, len(links)-1)].attrs['href']\n", + " print(newArticle)\n", + " links = getLinks(newArticle)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# # Recursively crawling an entire site" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "/wiki/Wikipedia\n", + "/wiki/Wikipedia:Protection_policy#semi\n", + "/wiki/Wikipedia:Requests_for_page_protection\n", + "/wiki/Wikipedia:Requests_for_permissions\n", + "/wiki/Wikipedia:Requesting_copyright_permission\n", + "/wiki/Wikipedia:User_access_levels\n", + "/wiki/Wikipedia:Requests_for_adminship\n", + "/wiki/Wikipedia:Requested_articles\n" + ] + }, + { + "ename": "KeyboardInterrupt", + "evalue": "", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mKeyboardInterrupt\u001b[0m Traceback (most recent call last)", + "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[1;32m 16\u001b[0m \u001b[0mpages\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0madd\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mnewPage\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 17\u001b[0m \u001b[0mgetLinks\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mnewPage\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 18\u001b[0;31m \u001b[0mgetLinks\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m", + "\u001b[0;32m\u001b[0m in \u001b[0;36mgetLinks\u001b[0;34m(pageUrl)\u001b[0m\n\u001b[1;32m 15\u001b[0m \u001b[0mprint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mnewPage\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 16\u001b[0m \u001b[0mpages\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0madd\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mnewPage\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 17\u001b[0;31m \u001b[0mgetLinks\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mnewPage\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 18\u001b[0m \u001b[0mgetLinks\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m\u001b[0m in \u001b[0;36mgetLinks\u001b[0;34m(pageUrl)\u001b[0m\n\u001b[1;32m 15\u001b[0m \u001b[0mprint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mnewPage\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 16\u001b[0m \u001b[0mpages\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0madd\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mnewPage\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 17\u001b[0;31m \u001b[0mgetLinks\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mnewPage\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 18\u001b[0m \u001b[0mgetLinks\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m\u001b[0m in \u001b[0;36mgetLinks\u001b[0;34m(pageUrl)\u001b[0m\n\u001b[1;32m 15\u001b[0m \u001b[0mprint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mnewPage\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 16\u001b[0m \u001b[0mpages\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0madd\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mnewPage\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 17\u001b[0;31m \u001b[0mgetLinks\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mnewPage\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 18\u001b[0m \u001b[0mgetLinks\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m\u001b[0m in \u001b[0;36mgetLinks\u001b[0;34m(pageUrl)\u001b[0m\n\u001b[1;32m 15\u001b[0m \u001b[0mprint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mnewPage\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 16\u001b[0m \u001b[0mpages\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0madd\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mnewPage\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 17\u001b[0;31m \u001b[0mgetLinks\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mnewPage\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 18\u001b[0m \u001b[0mgetLinks\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m\u001b[0m in \u001b[0;36mgetLinks\u001b[0;34m(pageUrl)\u001b[0m\n\u001b[1;32m 15\u001b[0m \u001b[0mprint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mnewPage\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 16\u001b[0m \u001b[0mpages\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0madd\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mnewPage\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 17\u001b[0;31m \u001b[0mgetLinks\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mnewPage\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 18\u001b[0m \u001b[0mgetLinks\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m\u001b[0m in \u001b[0;36mgetLinks\u001b[0;34m(pageUrl)\u001b[0m\n\u001b[1;32m 15\u001b[0m \u001b[0mprint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mnewPage\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 16\u001b[0m \u001b[0mpages\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0madd\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mnewPage\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 17\u001b[0;31m \u001b[0mgetLinks\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mnewPage\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 18\u001b[0m \u001b[0mgetLinks\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m\u001b[0m in \u001b[0;36mgetLinks\u001b[0;34m(pageUrl)\u001b[0m\n\u001b[1;32m 15\u001b[0m \u001b[0mprint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mnewPage\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 16\u001b[0m \u001b[0mpages\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0madd\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mnewPage\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 17\u001b[0;31m \u001b[0mgetLinks\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mnewPage\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 18\u001b[0m \u001b[0mgetLinks\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m\u001b[0m in \u001b[0;36mgetLinks\u001b[0;34m(pageUrl)\u001b[0m\n\u001b[1;32m 15\u001b[0m \u001b[0mprint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mnewPage\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 16\u001b[0m \u001b[0mpages\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0madd\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mnewPage\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 17\u001b[0;31m \u001b[0mgetLinks\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mnewPage\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 18\u001b[0m \u001b[0mgetLinks\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m\u001b[0m in \u001b[0;36mgetLinks\u001b[0;34m(pageUrl)\u001b[0m\n\u001b[1;32m 7\u001b[0m \u001b[0;32mglobal\u001b[0m \u001b[0mpages\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 8\u001b[0m \u001b[0mhtml\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0murlopen\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"http://en.wikipedia.org\"\u001b[0m\u001b[0;34m+\u001b[0m\u001b[0mpageUrl\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 9\u001b[0;31m \u001b[0mbs\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mBeautifulSoup\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mhtml\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m\"html.parser\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 10\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0mlink\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mbs\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mfind_all\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"a\"\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mhref\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mre\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mcompile\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"^(/wiki/)\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 11\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0;34m'href'\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mlink\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mattrs\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Users/rmitchell/anaconda3/lib/python3.6/site-packages/bs4/__init__.py\u001b[0m in \u001b[0;36m__init__\u001b[0;34m(self, markup, features, builder, parse_only, from_encoding, exclude_encodings, **kwargs)\u001b[0m\n\u001b[1;32m 226\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mreset\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 227\u001b[0m \u001b[0;32mtry\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 228\u001b[0;31m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_feed\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 229\u001b[0m \u001b[0;32mbreak\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 230\u001b[0m \u001b[0;32mexcept\u001b[0m \u001b[0mParserRejectedMarkup\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Users/rmitchell/anaconda3/lib/python3.6/site-packages/bs4/__init__.py\u001b[0m in \u001b[0;36m_feed\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 287\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mbuilder\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mreset\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 288\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 289\u001b[0;31m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mbuilder\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mfeed\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mmarkup\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 290\u001b[0m \u001b[0;31m# Close out any unfinished strings and close all the open tags.\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 291\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mendData\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Users/rmitchell/anaconda3/lib/python3.6/site-packages/bs4/builder/_htmlparser.py\u001b[0m in \u001b[0;36mfeed\u001b[0;34m(self, markup)\u001b[0m\n\u001b[1;32m 213\u001b[0m \u001b[0mparser\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msoup\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msoup\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 214\u001b[0m \u001b[0;32mtry\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 215\u001b[0;31m \u001b[0mparser\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mfeed\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mmarkup\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 216\u001b[0m \u001b[0;32mexcept\u001b[0m \u001b[0mHTMLParseError\u001b[0m \u001b[0;32mas\u001b[0m \u001b[0me\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 217\u001b[0m warnings.warn(RuntimeWarning(\n", + "\u001b[0;32m/Users/rmitchell/anaconda3/lib/python3.6/html/parser.py\u001b[0m in \u001b[0;36mfeed\u001b[0;34m(self, data)\u001b[0m\n\u001b[1;32m 109\u001b[0m \"\"\"\n\u001b[1;32m 110\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mrawdata\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mrawdata\u001b[0m \u001b[0;34m+\u001b[0m \u001b[0mdata\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 111\u001b[0;31m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mgoahead\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;36m0\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 112\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 113\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0mclose\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Users/rmitchell/anaconda3/lib/python3.6/html/parser.py\u001b[0m in \u001b[0;36mgoahead\u001b[0;34m(self, end)\u001b[0m\n\u001b[1;32m 169\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mstartswith\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'<'\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mi\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 170\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mstarttagopen\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mmatch\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mrawdata\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mi\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0;31m# < + letter\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 171\u001b[0;31m \u001b[0mk\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mparse_starttag\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mi\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 172\u001b[0m \u001b[0;32melif\u001b[0m \u001b[0mstartswith\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\" 345\u001b[0;31m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mhandle_starttag\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mtag\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mattrs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 346\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mtag\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mCDATA_CONTENT_ELEMENTS\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 347\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mset_cdata_mode\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mtag\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Users/rmitchell/anaconda3/lib/python3.6/site-packages/bs4/builder/_htmlparser.py\u001b[0m in \u001b[0;36mhandle_starttag\u001b[0;34m(self, name, attrs, handle_empty_element)\u001b[0m\n\u001b[1;32m 88\u001b[0m \u001b[0mattrvalue\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m'\"\"'\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 89\u001b[0m \u001b[0;31m#print \"START\", name\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 90\u001b[0;31m \u001b[0mtag\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msoup\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mhandle_starttag\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mname\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;32mNone\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;32mNone\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mattr_dict\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 91\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mtag\u001b[0m \u001b[0;32mand\u001b[0m \u001b[0mtag\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mis_empty_element\u001b[0m \u001b[0;32mand\u001b[0m \u001b[0mhandle_empty_element\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 92\u001b[0m \u001b[0;31m# Unlike other parsers, html.parser doesn't send separate end tag\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Users/rmitchell/anaconda3/lib/python3.6/site-packages/bs4/__init__.py\u001b[0m in \u001b[0;36mhandle_starttag\u001b[0;34m(self, name, namespace, nsprefix, attrs)\u001b[0m\n\u001b[1;32m 455\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 456\u001b[0m \u001b[0;31m# print \"Start tag %s: %s\" % (name, attrs)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 457\u001b[0;31m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mendData\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 458\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 459\u001b[0m if (self.parse_only and len(self.tagStack) <= 1\n", + "\u001b[0;32m/Users/rmitchell/anaconda3/lib/python3.6/site-packages/bs4/__init__.py\u001b[0m in \u001b[0;36mendData\u001b[0;34m(self, containerClass)\u001b[0m\n\u001b[1;32m 363\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 364\u001b[0m \u001b[0mo\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mcontainerClass\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mcurrent_data\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 365\u001b[0;31m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mobject_was_parsed\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mo\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 366\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 367\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0mobject_was_parsed\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mo\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mparent\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;32mNone\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mmost_recent_element\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;32mNone\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Users/rmitchell/anaconda3/lib/python3.6/site-packages/bs4/__init__.py\u001b[0m in \u001b[0;36mobject_was_parsed\u001b[0;34m(self, o, parent, most_recent_element)\u001b[0m\n\u001b[1;32m 378\u001b[0m \u001b[0mprevious_element\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mo\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mprevious_element\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 379\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 380\u001b[0;31m \u001b[0mo\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msetup\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mparent\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mprevious_element\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mnext_element\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mprevious_sibling\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mnext_sibling\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 381\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 382\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_most_recent_element\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mo\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Users/rmitchell/anaconda3/lib/python3.6/site-packages/bs4/element.py\u001b[0m in \u001b[0;36msetup\u001b[0;34m(self, parent, previous_element, next_element, previous_sibling, next_sibling)\u001b[0m\n\u001b[1;32m 212\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 213\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mnext_element\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mnext_element\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 214\u001b[0;31m \u001b[0;32mif\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mnext_element\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 215\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mnext_element\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mprevious_element\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 216\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;31mKeyboardInterrupt\u001b[0m: " + ] + } + ], + "source": [ + "from urllib.request import urlopen\n", + "from bs4 import BeautifulSoup\n", + "import re\n", + "\n", + "pages = set()\n", + "def getLinks(pageUrl):\n", + " global pages\n", + " html = urlopen('http://en.wikipedia.org{}'.format(pageUrl))\n", + " bs = BeautifulSoup(html, 'html.parser')\n", + " for link in bs.find_all('a', href=re.compile('^(/wiki/)')):\n", + " if 'href' in link.attrs:\n", + " if link.attrs['href'] not in pages:\n", + " #We have encountered a new page\n", + " newPage = link.attrs['href']\n", + " print(newPage)\n", + " pages.add(newPage)\n", + " getLinks(newPage)\n", + "getLinks(\"\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# # Collecting Data Across an Entire Site" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "from urllib.request import urlopen\n", + "from bs4 import BeautifulSoup\n", + "import re\n", + "\n", + "pages = set()\n", + "def getLinks(pageUrl):\n", + " global pages\n", + " html = urlopen('http://en.wikipedia.org{}'.format(pageUrl))\n", + " bs = BeautifulSoup(html, 'html.parser')\n", + " try:\n", + " print(bs.h1.get_text())\n", + " print(bs.find(id ='mw-content-text').find_all('p')[0])\n", + " print(bs.find(id='ca-edit').find('span').find('a').attrs['href'])\n", + " except AttributeError:\n", + " print('This page is missing something! No worries, we will continue!')\n", + " \n", + " for link in bs.find_all('a', href=re.compile('^(/wiki/)')):\n", + " if 'href' in link.attrs:\n", + " if link.attrs['href'] not in pages:\n", + " #We have encountered a new page\n", + " newPage = link.attrs['href']\n", + " print(\"----------------\\n\"+newPage)\n", + " pages.add(newPage)\n", + " getLinks(newPage)\n", + "getLinks(\"\") " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "# # Crawling across the Internet" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Random external link is: https://www.youtube.com/user/OreillyMedia\n", + "Random external link is: http://facebook.com/OReilly\n" + ] + }, + { + "ename": "KeyboardInterrupt", + "evalue": "", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mKeyboardInterrupt\u001b[0m Traceback (most recent call last)", + "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[1;32m 52\u001b[0m \u001b[0mfollowExternalOnly\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mexternalLink\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 53\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 54\u001b[0;31m \u001b[0mfollowExternalOnly\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"http://oreilly.com\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m", + "\u001b[0;32m\u001b[0m in \u001b[0;36mfollowExternalOnly\u001b[0;34m(startingSite)\u001b[0m\n\u001b[1;32m 50\u001b[0m \u001b[0mexternalLink\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mgetRandomExternalLink\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mstartingSite\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 51\u001b[0m \u001b[0mprint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"Random external link is: \"\u001b[0m\u001b[0;34m+\u001b[0m\u001b[0mexternalLink\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 52\u001b[0;31m \u001b[0mfollowExternalOnly\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mexternalLink\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 53\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 54\u001b[0m \u001b[0mfollowExternalOnly\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"http://oreilly.com\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m\u001b[0m in \u001b[0;36mfollowExternalOnly\u001b[0;34m(startingSite)\u001b[0m\n\u001b[1;32m 50\u001b[0m \u001b[0mexternalLink\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mgetRandomExternalLink\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mstartingSite\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 51\u001b[0m \u001b[0mprint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"Random external link is: \"\u001b[0m\u001b[0;34m+\u001b[0m\u001b[0mexternalLink\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 52\u001b[0;31m \u001b[0mfollowExternalOnly\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mexternalLink\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 53\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 54\u001b[0m \u001b[0mfollowExternalOnly\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"http://oreilly.com\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m\u001b[0m in \u001b[0;36mfollowExternalOnly\u001b[0;34m(startingSite)\u001b[0m\n\u001b[1;32m 48\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 49\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0mfollowExternalOnly\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mstartingSite\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 50\u001b[0;31m \u001b[0mexternalLink\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mgetRandomExternalLink\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mstartingSite\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 51\u001b[0m \u001b[0mprint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"Random external link is: \"\u001b[0m\u001b[0;34m+\u001b[0m\u001b[0mexternalLink\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 52\u001b[0m \u001b[0mfollowExternalOnly\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mexternalLink\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m\u001b[0m in \u001b[0;36mgetRandomExternalLink\u001b[0;34m(startingPage)\u001b[0m\n\u001b[1;32m 35\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 36\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0mgetRandomExternalLink\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mstartingPage\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 37\u001b[0;31m \u001b[0mhtml\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0murlopen\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mstartingPage\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 38\u001b[0m \u001b[0mbs\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mBeautifulSoup\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mhtml\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m\"html.parser\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 39\u001b[0m \u001b[0mexternalLinks\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mgetExternalLinks\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mbs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0murlparse\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mstartingPage\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mnetloc\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Users/rmitchell/anaconda3/lib/python3.6/urllib/request.py\u001b[0m in \u001b[0;36murlopen\u001b[0;34m(url, data, timeout, cafile, capath, cadefault, context)\u001b[0m\n\u001b[1;32m 221\u001b[0m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 222\u001b[0m \u001b[0mopener\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0m_opener\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 223\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mopener\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mopen\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0murl\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mdata\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mtimeout\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 224\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 225\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0minstall_opener\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mopener\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Users/rmitchell/anaconda3/lib/python3.6/urllib/request.py\u001b[0m in \u001b[0;36mopen\u001b[0;34m(self, fullurl, data, timeout)\u001b[0m\n\u001b[1;32m 530\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0mprocessor\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mprocess_response\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mget\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mprotocol\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m[\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 531\u001b[0m \u001b[0mmeth\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mgetattr\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mprocessor\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mmeth_name\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 532\u001b[0;31m \u001b[0mresponse\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mmeth\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mreq\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mresponse\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 533\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 534\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mresponse\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Users/rmitchell/anaconda3/lib/python3.6/urllib/request.py\u001b[0m in \u001b[0;36mhttp_response\u001b[0;34m(self, request, response)\u001b[0m\n\u001b[1;32m 640\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0;34m(\u001b[0m\u001b[0;36m200\u001b[0m \u001b[0;34m<=\u001b[0m \u001b[0mcode\u001b[0m \u001b[0;34m<\u001b[0m \u001b[0;36m300\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 641\u001b[0m response = self.parent.error(\n\u001b[0;32m--> 642\u001b[0;31m 'http', request, response, code, msg, hdrs)\n\u001b[0m\u001b[1;32m 643\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 644\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mresponse\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Users/rmitchell/anaconda3/lib/python3.6/urllib/request.py\u001b[0m in \u001b[0;36merror\u001b[0;34m(self, proto, *args)\u001b[0m\n\u001b[1;32m 562\u001b[0m \u001b[0mhttp_err\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;36m0\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 563\u001b[0m \u001b[0margs\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m(\u001b[0m\u001b[0mdict\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mproto\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mmeth_name\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;34m+\u001b[0m \u001b[0margs\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 564\u001b[0;31m \u001b[0mresult\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_call_chain\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 565\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mresult\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 566\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mresult\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Users/rmitchell/anaconda3/lib/python3.6/urllib/request.py\u001b[0m in \u001b[0;36m_call_chain\u001b[0;34m(self, chain, kind, meth_name, *args)\u001b[0m\n\u001b[1;32m 502\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0mhandler\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mhandlers\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 503\u001b[0m \u001b[0mfunc\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mgetattr\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mhandler\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mmeth_name\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 504\u001b[0;31m \u001b[0mresult\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mfunc\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 505\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mresult\u001b[0m \u001b[0;32mis\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0;32mNone\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 506\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mresult\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Users/rmitchell/anaconda3/lib/python3.6/urllib/request.py\u001b[0m in \u001b[0;36mhttp_error_302\u001b[0;34m(self, req, fp, code, msg, headers)\u001b[0m\n\u001b[1;32m 754\u001b[0m \u001b[0mfp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mclose\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 755\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 756\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mparent\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mopen\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mnew\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mtimeout\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mreq\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mtimeout\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 757\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 758\u001b[0m \u001b[0mhttp_error_301\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mhttp_error_303\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mhttp_error_307\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mhttp_error_302\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Users/rmitchell/anaconda3/lib/python3.6/urllib/request.py\u001b[0m in \u001b[0;36mopen\u001b[0;34m(self, fullurl, data, timeout)\u001b[0m\n\u001b[1;32m 530\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0mprocessor\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mprocess_response\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mget\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mprotocol\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m[\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 531\u001b[0m \u001b[0mmeth\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mgetattr\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mprocessor\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mmeth_name\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 532\u001b[0;31m \u001b[0mresponse\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mmeth\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mreq\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mresponse\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 533\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 534\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mresponse\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Users/rmitchell/anaconda3/lib/python3.6/urllib/request.py\u001b[0m in \u001b[0;36mhttp_response\u001b[0;34m(self, request, response)\u001b[0m\n\u001b[1;32m 640\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0;34m(\u001b[0m\u001b[0;36m200\u001b[0m \u001b[0;34m<=\u001b[0m \u001b[0mcode\u001b[0m \u001b[0;34m<\u001b[0m \u001b[0;36m300\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 641\u001b[0m response = self.parent.error(\n\u001b[0;32m--> 642\u001b[0;31m 'http', request, response, code, msg, hdrs)\n\u001b[0m\u001b[1;32m 643\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 644\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mresponse\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Users/rmitchell/anaconda3/lib/python3.6/urllib/request.py\u001b[0m in \u001b[0;36merror\u001b[0;34m(self, proto, *args)\u001b[0m\n\u001b[1;32m 562\u001b[0m \u001b[0mhttp_err\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;36m0\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 563\u001b[0m \u001b[0margs\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m(\u001b[0m\u001b[0mdict\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mproto\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mmeth_name\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;34m+\u001b[0m \u001b[0margs\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 564\u001b[0;31m \u001b[0mresult\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_call_chain\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 565\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mresult\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 566\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mresult\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Users/rmitchell/anaconda3/lib/python3.6/urllib/request.py\u001b[0m in \u001b[0;36m_call_chain\u001b[0;34m(self, chain, kind, meth_name, *args)\u001b[0m\n\u001b[1;32m 502\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0mhandler\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mhandlers\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 503\u001b[0m \u001b[0mfunc\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mgetattr\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mhandler\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mmeth_name\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 504\u001b[0;31m \u001b[0mresult\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mfunc\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 505\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mresult\u001b[0m \u001b[0;32mis\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0;32mNone\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 506\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mresult\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Users/rmitchell/anaconda3/lib/python3.6/urllib/request.py\u001b[0m in \u001b[0;36mhttp_error_302\u001b[0;34m(self, req, fp, code, msg, headers)\u001b[0m\n\u001b[1;32m 754\u001b[0m \u001b[0mfp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mclose\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 755\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 756\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mparent\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mopen\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mnew\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mtimeout\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mreq\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mtimeout\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 757\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 758\u001b[0m \u001b[0mhttp_error_301\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mhttp_error_303\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mhttp_error_307\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mhttp_error_302\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Users/rmitchell/anaconda3/lib/python3.6/urllib/request.py\u001b[0m in \u001b[0;36mopen\u001b[0;34m(self, fullurl, data, timeout)\u001b[0m\n\u001b[1;32m 524\u001b[0m \u001b[0mreq\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mmeth\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mreq\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 525\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 526\u001b[0;31m \u001b[0mresponse\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_open\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mreq\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mdata\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 527\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 528\u001b[0m \u001b[0;31m# post-process response\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Users/rmitchell/anaconda3/lib/python3.6/urllib/request.py\u001b[0m in \u001b[0;36m_open\u001b[0;34m(self, req, data)\u001b[0m\n\u001b[1;32m 542\u001b[0m \u001b[0mprotocol\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mreq\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mtype\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 543\u001b[0m result = self._call_chain(self.handle_open, protocol, protocol +\n\u001b[0;32m--> 544\u001b[0;31m '_open', req)\n\u001b[0m\u001b[1;32m 545\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mresult\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 546\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mresult\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Users/rmitchell/anaconda3/lib/python3.6/urllib/request.py\u001b[0m in \u001b[0;36m_call_chain\u001b[0;34m(self, chain, kind, meth_name, *args)\u001b[0m\n\u001b[1;32m 502\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0mhandler\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mhandlers\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 503\u001b[0m \u001b[0mfunc\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mgetattr\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mhandler\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mmeth_name\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 504\u001b[0;31m \u001b[0mresult\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mfunc\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 505\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mresult\u001b[0m \u001b[0;32mis\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0;32mNone\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 506\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mresult\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Users/rmitchell/anaconda3/lib/python3.6/urllib/request.py\u001b[0m in \u001b[0;36mhttps_open\u001b[0;34m(self, req)\u001b[0m\n\u001b[1;32m 1359\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0mhttps_open\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mreq\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1360\u001b[0m return self.do_open(http.client.HTTPSConnection, req,\n\u001b[0;32m-> 1361\u001b[0;31m context=self._context, check_hostname=self._check_hostname)\n\u001b[0m\u001b[1;32m 1362\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1363\u001b[0m \u001b[0mhttps_request\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mAbstractHTTPHandler\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mdo_request_\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Users/rmitchell/anaconda3/lib/python3.6/urllib/request.py\u001b[0m in \u001b[0;36mdo_open\u001b[0;34m(self, http_class, req, **http_conn_args)\u001b[0m\n\u001b[1;32m 1316\u001b[0m \u001b[0;32mtry\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1317\u001b[0m h.request(req.get_method(), req.selector, req.data, headers,\n\u001b[0;32m-> 1318\u001b[0;31m encode_chunked=req.has_header('Transfer-encoding'))\n\u001b[0m\u001b[1;32m 1319\u001b[0m \u001b[0;32mexcept\u001b[0m \u001b[0mOSError\u001b[0m \u001b[0;32mas\u001b[0m \u001b[0merr\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0;31m# timeout error\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1320\u001b[0m \u001b[0;32mraise\u001b[0m \u001b[0mURLError\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0merr\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Users/rmitchell/anaconda3/lib/python3.6/http/client.py\u001b[0m in \u001b[0;36mrequest\u001b[0;34m(self, method, url, body, headers, encode_chunked)\u001b[0m\n\u001b[1;32m 1237\u001b[0m encode_chunked=False):\n\u001b[1;32m 1238\u001b[0m \u001b[0;34m\"\"\"Send a complete request to the server.\"\"\"\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 1239\u001b[0;31m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_send_request\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mmethod\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0murl\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mbody\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mheaders\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mencode_chunked\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 1240\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1241\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0m_send_request\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mmethod\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0murl\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mbody\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mheaders\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mencode_chunked\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Users/rmitchell/anaconda3/lib/python3.6/http/client.py\u001b[0m in \u001b[0;36m_send_request\u001b[0;34m(self, method, url, body, headers, encode_chunked)\u001b[0m\n\u001b[1;32m 1283\u001b[0m \u001b[0;31m# default charset of iso-8859-1.\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1284\u001b[0m \u001b[0mbody\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0m_encode\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mbody\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m'body'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 1285\u001b[0;31m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mendheaders\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mbody\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mencode_chunked\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mencode_chunked\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 1286\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1287\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0mgetresponse\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Users/rmitchell/anaconda3/lib/python3.6/http/client.py\u001b[0m in \u001b[0;36mendheaders\u001b[0;34m(self, message_body, encode_chunked)\u001b[0m\n\u001b[1;32m 1232\u001b[0m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1233\u001b[0m \u001b[0;32mraise\u001b[0m \u001b[0mCannotSendHeader\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 1234\u001b[0;31m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_send_output\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mmessage_body\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mencode_chunked\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mencode_chunked\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 1235\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1236\u001b[0m def request(self, method, url, body=None, headers={}, *,\n", + "\u001b[0;32m/Users/rmitchell/anaconda3/lib/python3.6/http/client.py\u001b[0m in \u001b[0;36m_send_output\u001b[0;34m(self, message_body, encode_chunked)\u001b[0m\n\u001b[1;32m 1024\u001b[0m \u001b[0mmsg\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34mb\"\\r\\n\"\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mjoin\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_buffer\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1025\u001b[0m \u001b[0;32mdel\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_buffer\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 1026\u001b[0;31m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msend\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mmsg\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 1027\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1028\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mmessage_body\u001b[0m \u001b[0;32mis\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0;32mNone\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Users/rmitchell/anaconda3/lib/python3.6/http/client.py\u001b[0m in \u001b[0;36msend\u001b[0;34m(self, data)\u001b[0m\n\u001b[1;32m 962\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msock\u001b[0m \u001b[0;32mis\u001b[0m \u001b[0;32mNone\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 963\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mauto_open\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 964\u001b[0;31m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mconnect\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 965\u001b[0m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 966\u001b[0m \u001b[0;32mraise\u001b[0m \u001b[0mNotConnected\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Users/rmitchell/anaconda3/lib/python3.6/http/client.py\u001b[0m in \u001b[0;36mconnect\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 1390\u001b[0m \u001b[0;34m\"Connect to a host on a given (SSL) port.\"\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1391\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 1392\u001b[0;31m \u001b[0msuper\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mconnect\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 1393\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1394\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_tunnel_host\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Users/rmitchell/anaconda3/lib/python3.6/http/client.py\u001b[0m in \u001b[0;36mconnect\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 934\u001b[0m \u001b[0;34m\"\"\"Connect to the host and port specified in __init__.\"\"\"\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 935\u001b[0m self.sock = self._create_connection(\n\u001b[0;32m--> 936\u001b[0;31m (self.host,self.port), self.timeout, self.source_address)\n\u001b[0m\u001b[1;32m 937\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msock\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msetsockopt\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0msocket\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mIPPROTO_TCP\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0msocket\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mTCP_NODELAY\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;36m1\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 938\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Users/rmitchell/anaconda3/lib/python3.6/socket.py\u001b[0m in \u001b[0;36mcreate_connection\u001b[0;34m(address, timeout, source_address)\u001b[0m\n\u001b[1;32m 711\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0msource_address\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 712\u001b[0m \u001b[0msock\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mbind\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0msource_address\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 713\u001b[0;31m \u001b[0msock\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mconnect\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0msa\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 714\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0msock\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 715\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;31mKeyboardInterrupt\u001b[0m: " + ] + } + ], + "source": [ + "from urllib.request import urlopen\n", + "from urllib.parse import urlparse\n", + "from bs4 import BeautifulSoup\n", + "import re\n", + "import datetime\n", + "import random\n", + "\n", + "pages = set()\n", + "random.seed(datetime.datetime.now())\n", + "\n", + "#Retrieves a list of all Internal links found on a page\n", + "def getInternalLinks(bs, includeUrl):\n", + " includeUrl = \"{}://{}\".format(urlparse(includeUrl).scheme, urlparse(includeUrl).netloc)\n", + " internalLinks = []\n", + " #Finds all links that begin with a \"/\"\n", + " for link in bs.find_all('a', href=re.compile('^(/|.*'+includeUrl+')')):\n", + " if link.attrs['href'] is not None:\n", + " if link.attrs['href'] not in internalLinks:\n", + " if(link.attrs['href'].startswith('/')):\n", + " internalLinks.append(includeUrl+link.attrs['href'])\n", + " else:\n", + " internalLinks.append(link.attrs['href'])\n", + " return internalLinks\n", + " \n", + "#Retrieves a list of all external links found on a page\n", + "def getExternalLinks(bs, excludeUrl):\n", + " externalLinks = []\n", + " #Finds all links that start with \"http\" that do\n", + " #not contain the current URL\n", + " for link in bs.find_all('a', href=re.compile('^(http|www)((?!'+excludeUrl+').)*$')):\n", + " if link.attrs['href'] is not None:\n", + " if link.attrs['href'] not in externalLinks:\n", + " externalLinks.append(link.attrs['href'])\n", + " return externalLinks\n", + "\n", + "def getRandomExternalLink(startingPage):\n", + " html = urlopen(startingPage)\n", + " bs = BeautifulSoup(html, 'html.parser')\n", + " externalLinks = getExternalLinks(bs, urlparse(startingPage).netloc)\n", + " if len(externalLinks) == 0:\n", + " print('No external links, looking around the site for one')\n", + " domain = \"{}://{}\".format(urlparse(startingPage).scheme, urlparse(startingPage).netloc)\n", + " internalLinks = getInternalLinks(bs, domain)\n", + " return getRandomExternalLink(internalLinks[random.randint(0,\n", + " len(internalLinks)-1)])\n", + " else:\n", + " return externalLinks[random.randint(0, len(externalLinks)-1)]\n", + " \n", + "def followExternalOnly(startingSite):\n", + " externalLink = getRandomExternalLink(startingSite)\n", + " print('Random external link is: {}'.format(externalLink))\n", + " followExternalOnly(externalLink)\n", + " \n", + "followExternalOnly(\"http://oreilly.com\")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "## Collect all External Links from a Site" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "https://www.oreilly.com\n", + "http://www.oreilly.com/ideas\n", + "https://www.safaribooksonline.com/?utm_medium=content&utm_source=oreilly.com&utm_campaign=lgen&utm_content=20170601+nav\n", + "http://www.oreilly.com/conferences/\n", + "http://shop.oreilly.com/\n", + "http://members.oreilly.com\n", + "https://www.oreilly.com/topics\n", + "https://www.safaribooksonline.com/?utm_medium=content&utm_source=oreilly.com&utm_campaign=lgen&utm_content=20170505+homepage+get+started+now\n", + "https://www.safaribooksonline.com/accounts/login/?utm_medium=content&utm_source=oreilly.com&utm_campaign=lgen&utm_content=20170203+homepage+sign+in\n", + "https://www.safaribooksonline.com/?utm_medium=content&utm_source=oreilly.com&utm_campaign=lgen&utm_content=20170710+homepage+get+started+now\n", + "https://www.safaribooksonline.com/public/free-trial/?utm_medium=content&utm_source=oreilly.com&utm_campaign=lgen&utm_content=20170710+homepage+start+free+trial\n", + "https://www.safaribooksonline.com/accounts/login/?utm_medium=content&utm_source=oreilly.com&utm_campaign=lgen&utm_content=20170710+homepage+sign+in\n", + "https://www.safaribooksonline.com/live-training/?utm_medium=content&utm_source=oreilly.com&utm_campaign=lgen&utm_content=20170201+homepage+take+a+live+online+course\n", + "https://www.safaribooksonline.com/learning-paths/?utm_medium=content&utm_source=oreilly.com&utm_campaign=lgen&utm_content=20170201+homepage+follow+a+path\n", + "https://www.safaribooksonline.com/?utm_medium=content&utm_source=oreilly.com&utm_campaign=lgen&utm_content=20170505+homepage+unlimited+access\n", + "http://www.oreilly.com/live-training/?view=grid\n", + "https://www.safaribooksonline.com/your-experience/?utm_medium=content&utm_source=oreilly.com&utm_campaign=lgen&utm_content=20170201+homepage+safari+platform\n", + "https://cdn.oreillystatic.com/pdf/oreilly_high_performance_organizations_whitepaper.pdf\n", + "https://www.oreilly.com/ideas/8-data-trends-on-our-radar-for-2017?utm_medium=referral&utm_source=oreilly.com&utm_campaign=lgen&utm_content=link+2017+trends\n", + "https://www.oreilly.com/ideas?utm_medium=referral&utm_source=oreilly.com&utm_campaign=lgen&utm_content=link+read+latest+articles\n", + "http://www.oreilly.com/about/\n", + "http://www.oreilly.com/work-with-us.html\n", + "http://www.oreilly.com/careers/\n", + "http://shop.oreilly.com/category/customer-service.do\n", + "http://www.oreilly.com/about/contact.html\n", + "http://twitter.com/oreillymedia\n", + "http://fb.co/OReilly\n", + "https://www.linkedin.com/company/oreilly-media\n", + "https://www.youtube.com/user/OreillyMedia\n", + "http://www.oreilly.com/emails/newsletters/\n", + "http://www.oreilly.com/terms/\n", + "http://www.oreilly.com/privacy.html\n", + "http://www.oreilly.com/about/editorial_independence.html\n", + "https://www.safaribooksonline.com/home/?utm_medium=content&utm_source=oreilly.com&utm_campaign=lgen&utm_content=20170601+nav\n", + "https://www.safaribooksonline.com/home/?utm_source=newsite&utm_medium=content&utm_campaign=lgen&utm_content=ai-topic-cta\n", + "https://conferences.oreilly.com/artificial-intelligence/ai-ca?intcmp=il-data-confreg-lp-aica17_20170803_new_site_ai_event_block_hero_link\n", + "https://conferences.oreilly.com/artificial-intelligence/ai-ca/public/schedule/detail/60305\n", + "https://conferences.oreilly.com/artificial-intelligence/ai-ca/public/schedule/detail/60516\n", + "https://conferences.oreilly.com/artificial-intelligence/ai-ca/public/schedule/detail/60540\n", + "https://conferences.oreilly.com/artificial-intelligence/ai-ca/public/schedule/detail/62726\n", + "https://www.flickr.com/photos/ebmorse/7536436622/in/dateposted/\n", + "http://oreilly.com/about/\n", + "http://oreilly.com/work-with-us.html\n", + "http://oreilly.com/careers/\n", + "https://plus.google.com/+oreillymedia\n", + "http://oreilly.com/terms/\n", + "http://oreilly.com/privacy.html\n", + "https://www.safaribooksonline.com/home/?utm_source=newsite&utm_medium=content&utm_campaign=lgen&utm_content=business-topic-cta\n", + "https://www.flickr.com/photos/pagedooley/4253159181/\n" + ] + }, + { + "ename": "KeyboardInterrupt", + "evalue": "", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mKeyboardInterrupt\u001b[0m Traceback (most recent call last)", + "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[1;32m 19\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 20\u001b[0m \u001b[0mallIntLinks\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0madd\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"http://oreilly.com\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 21\u001b[0;31m \u001b[0mgetAllExternalLinks\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"http://oreilly.com\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m", + "\u001b[0;32m\u001b[0m in \u001b[0;36mgetAllExternalLinks\u001b[0;34m(siteUrl)\u001b[0m\n\u001b[1;32m 16\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mlink\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mallIntLinks\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 17\u001b[0m \u001b[0mallIntLinks\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0madd\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mlink\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 18\u001b[0;31m \u001b[0mgetAllExternalLinks\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mlink\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 19\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 20\u001b[0m \u001b[0mallIntLinks\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0madd\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"http://oreilly.com\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m\u001b[0m in \u001b[0;36mgetAllExternalLinks\u001b[0;34m(siteUrl)\u001b[0m\n\u001b[1;32m 16\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mlink\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mallIntLinks\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 17\u001b[0m \u001b[0mallIntLinks\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0madd\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mlink\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 18\u001b[0;31m \u001b[0mgetAllExternalLinks\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mlink\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 19\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 20\u001b[0m \u001b[0mallIntLinks\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0madd\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"http://oreilly.com\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m\u001b[0m in \u001b[0;36mgetAllExternalLinks\u001b[0;34m(siteUrl)\u001b[0m\n\u001b[1;32m 16\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mlink\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mallIntLinks\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 17\u001b[0m \u001b[0mallIntLinks\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0madd\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mlink\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 18\u001b[0;31m \u001b[0mgetAllExternalLinks\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mlink\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 19\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 20\u001b[0m \u001b[0mallIntLinks\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0madd\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"http://oreilly.com\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m\u001b[0m in \u001b[0;36mgetAllExternalLinks\u001b[0;34m(siteUrl)\u001b[0m\n\u001b[1;32m 16\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mlink\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mallIntLinks\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 17\u001b[0m \u001b[0mallIntLinks\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0madd\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mlink\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 18\u001b[0;31m \u001b[0mgetAllExternalLinks\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mlink\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 19\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 20\u001b[0m \u001b[0mallIntLinks\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0madd\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"http://oreilly.com\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m\u001b[0m in \u001b[0;36mgetAllExternalLinks\u001b[0;34m(siteUrl)\u001b[0m\n\u001b[1;32m 16\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mlink\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mallIntLinks\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 17\u001b[0m \u001b[0mallIntLinks\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0madd\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mlink\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 18\u001b[0;31m \u001b[0mgetAllExternalLinks\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mlink\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 19\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 20\u001b[0m \u001b[0mallIntLinks\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0madd\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"http://oreilly.com\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m\u001b[0m in \u001b[0;36mgetAllExternalLinks\u001b[0;34m(siteUrl)\u001b[0m\n\u001b[1;32m 16\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mlink\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mallIntLinks\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 17\u001b[0m \u001b[0mallIntLinks\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0madd\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mlink\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 18\u001b[0;31m \u001b[0mgetAllExternalLinks\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mlink\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 19\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 20\u001b[0m \u001b[0mallIntLinks\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0madd\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"http://oreilly.com\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m\u001b[0m in \u001b[0;36mgetAllExternalLinks\u001b[0;34m(siteUrl)\u001b[0m\n\u001b[1;32m 3\u001b[0m \u001b[0mallIntLinks\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mset\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 4\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0mgetAllExternalLinks\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0msiteUrl\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 5\u001b[0;31m \u001b[0mhtml\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0murlopen\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0msiteUrl\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 6\u001b[0m \u001b[0mdomain\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0murlparse\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0msiteUrl\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mscheme\u001b[0m\u001b[0;34m+\u001b[0m\u001b[0;34m\"://\"\u001b[0m\u001b[0;34m+\u001b[0m\u001b[0murlparse\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0msiteUrl\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mnetloc\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 7\u001b[0m \u001b[0mbs\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mBeautifulSoup\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mhtml\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m\"html.parser\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Users/rmitchell/anaconda3/lib/python3.6/urllib/request.py\u001b[0m in \u001b[0;36murlopen\u001b[0;34m(url, data, timeout, cafile, capath, cadefault, context)\u001b[0m\n\u001b[1;32m 221\u001b[0m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 222\u001b[0m \u001b[0mopener\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0m_opener\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 223\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mopener\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mopen\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0murl\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mdata\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mtimeout\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 224\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 225\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0minstall_opener\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mopener\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Users/rmitchell/anaconda3/lib/python3.6/urllib/request.py\u001b[0m in \u001b[0;36mopen\u001b[0;34m(self, fullurl, data, timeout)\u001b[0m\n\u001b[1;32m 530\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0mprocessor\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mprocess_response\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mget\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mprotocol\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m[\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 531\u001b[0m \u001b[0mmeth\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mgetattr\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mprocessor\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mmeth_name\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 532\u001b[0;31m \u001b[0mresponse\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mmeth\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mreq\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mresponse\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 533\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 534\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mresponse\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Users/rmitchell/anaconda3/lib/python3.6/urllib/request.py\u001b[0m in \u001b[0;36mhttp_response\u001b[0;34m(self, request, response)\u001b[0m\n\u001b[1;32m 640\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0;34m(\u001b[0m\u001b[0;36m200\u001b[0m \u001b[0;34m<=\u001b[0m \u001b[0mcode\u001b[0m \u001b[0;34m<\u001b[0m \u001b[0;36m300\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 641\u001b[0m response = self.parent.error(\n\u001b[0;32m--> 642\u001b[0;31m 'http', request, response, code, msg, hdrs)\n\u001b[0m\u001b[1;32m 643\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 644\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mresponse\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Users/rmitchell/anaconda3/lib/python3.6/urllib/request.py\u001b[0m in \u001b[0;36merror\u001b[0;34m(self, proto, *args)\u001b[0m\n\u001b[1;32m 562\u001b[0m \u001b[0mhttp_err\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;36m0\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 563\u001b[0m \u001b[0margs\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m(\u001b[0m\u001b[0mdict\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mproto\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mmeth_name\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;34m+\u001b[0m \u001b[0margs\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 564\u001b[0;31m \u001b[0mresult\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_call_chain\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 565\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mresult\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 566\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mresult\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Users/rmitchell/anaconda3/lib/python3.6/urllib/request.py\u001b[0m in \u001b[0;36m_call_chain\u001b[0;34m(self, chain, kind, meth_name, *args)\u001b[0m\n\u001b[1;32m 502\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0mhandler\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mhandlers\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 503\u001b[0m \u001b[0mfunc\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mgetattr\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mhandler\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mmeth_name\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 504\u001b[0;31m \u001b[0mresult\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mfunc\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 505\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mresult\u001b[0m \u001b[0;32mis\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0;32mNone\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 506\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mresult\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Users/rmitchell/anaconda3/lib/python3.6/urllib/request.py\u001b[0m in \u001b[0;36mhttp_error_302\u001b[0;34m(self, req, fp, code, msg, headers)\u001b[0m\n\u001b[1;32m 754\u001b[0m \u001b[0mfp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mclose\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 755\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 756\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mparent\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mopen\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mnew\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mtimeout\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mreq\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mtimeout\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 757\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 758\u001b[0m \u001b[0mhttp_error_301\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mhttp_error_303\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mhttp_error_307\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mhttp_error_302\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Users/rmitchell/anaconda3/lib/python3.6/urllib/request.py\u001b[0m in \u001b[0;36mopen\u001b[0;34m(self, fullurl, data, timeout)\u001b[0m\n\u001b[1;32m 530\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0mprocessor\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mprocess_response\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mget\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mprotocol\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m[\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 531\u001b[0m \u001b[0mmeth\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mgetattr\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mprocessor\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mmeth_name\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 532\u001b[0;31m \u001b[0mresponse\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mmeth\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mreq\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mresponse\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 533\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 534\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mresponse\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Users/rmitchell/anaconda3/lib/python3.6/urllib/request.py\u001b[0m in \u001b[0;36mhttp_response\u001b[0;34m(self, request, response)\u001b[0m\n\u001b[1;32m 640\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0;34m(\u001b[0m\u001b[0;36m200\u001b[0m \u001b[0;34m<=\u001b[0m \u001b[0mcode\u001b[0m \u001b[0;34m<\u001b[0m \u001b[0;36m300\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 641\u001b[0m response = self.parent.error(\n\u001b[0;32m--> 642\u001b[0;31m 'http', request, response, code, msg, hdrs)\n\u001b[0m\u001b[1;32m 643\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 644\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mresponse\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Users/rmitchell/anaconda3/lib/python3.6/urllib/request.py\u001b[0m in \u001b[0;36merror\u001b[0;34m(self, proto, *args)\u001b[0m\n\u001b[1;32m 562\u001b[0m \u001b[0mhttp_err\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;36m0\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 563\u001b[0m \u001b[0margs\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m(\u001b[0m\u001b[0mdict\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mproto\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mmeth_name\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;34m+\u001b[0m \u001b[0margs\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 564\u001b[0;31m \u001b[0mresult\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_call_chain\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 565\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mresult\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 566\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mresult\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Users/rmitchell/anaconda3/lib/python3.6/urllib/request.py\u001b[0m in \u001b[0;36m_call_chain\u001b[0;34m(self, chain, kind, meth_name, *args)\u001b[0m\n\u001b[1;32m 502\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0mhandler\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mhandlers\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 503\u001b[0m \u001b[0mfunc\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mgetattr\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mhandler\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mmeth_name\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 504\u001b[0;31m \u001b[0mresult\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mfunc\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 505\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mresult\u001b[0m \u001b[0;32mis\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0;32mNone\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 506\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mresult\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Users/rmitchell/anaconda3/lib/python3.6/urllib/request.py\u001b[0m in \u001b[0;36mhttp_error_302\u001b[0;34m(self, req, fp, code, msg, headers)\u001b[0m\n\u001b[1;32m 754\u001b[0m \u001b[0mfp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mclose\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 755\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 756\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mparent\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mopen\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mnew\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mtimeout\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mreq\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mtimeout\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 757\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 758\u001b[0m \u001b[0mhttp_error_301\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mhttp_error_303\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mhttp_error_307\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mhttp_error_302\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Users/rmitchell/anaconda3/lib/python3.6/urllib/request.py\u001b[0m in \u001b[0;36mopen\u001b[0;34m(self, fullurl, data, timeout)\u001b[0m\n\u001b[1;32m 524\u001b[0m \u001b[0mreq\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mmeth\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mreq\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 525\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 526\u001b[0;31m \u001b[0mresponse\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_open\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mreq\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mdata\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 527\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 528\u001b[0m \u001b[0;31m# post-process response\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Users/rmitchell/anaconda3/lib/python3.6/urllib/request.py\u001b[0m in \u001b[0;36m_open\u001b[0;34m(self, req, data)\u001b[0m\n\u001b[1;32m 542\u001b[0m \u001b[0mprotocol\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mreq\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mtype\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 543\u001b[0m result = self._call_chain(self.handle_open, protocol, protocol +\n\u001b[0;32m--> 544\u001b[0;31m '_open', req)\n\u001b[0m\u001b[1;32m 545\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mresult\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 546\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mresult\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Users/rmitchell/anaconda3/lib/python3.6/urllib/request.py\u001b[0m in \u001b[0;36m_call_chain\u001b[0;34m(self, chain, kind, meth_name, *args)\u001b[0m\n\u001b[1;32m 502\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0mhandler\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mhandlers\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 503\u001b[0m \u001b[0mfunc\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mgetattr\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mhandler\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mmeth_name\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 504\u001b[0;31m \u001b[0mresult\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mfunc\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 505\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mresult\u001b[0m \u001b[0;32mis\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0;32mNone\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 506\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mresult\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Users/rmitchell/anaconda3/lib/python3.6/urllib/request.py\u001b[0m in \u001b[0;36mhttps_open\u001b[0;34m(self, req)\u001b[0m\n\u001b[1;32m 1359\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0mhttps_open\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mreq\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1360\u001b[0m return self.do_open(http.client.HTTPSConnection, req,\n\u001b[0;32m-> 1361\u001b[0;31m context=self._context, check_hostname=self._check_hostname)\n\u001b[0m\u001b[1;32m 1362\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1363\u001b[0m \u001b[0mhttps_request\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mAbstractHTTPHandler\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mdo_request_\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Users/rmitchell/anaconda3/lib/python3.6/urllib/request.py\u001b[0m in \u001b[0;36mdo_open\u001b[0;34m(self, http_class, req, **http_conn_args)\u001b[0m\n\u001b[1;32m 1319\u001b[0m \u001b[0;32mexcept\u001b[0m \u001b[0mOSError\u001b[0m \u001b[0;32mas\u001b[0m \u001b[0merr\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0;31m# timeout error\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1320\u001b[0m \u001b[0;32mraise\u001b[0m \u001b[0mURLError\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0merr\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 1321\u001b[0;31m \u001b[0mr\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mh\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mgetresponse\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 1322\u001b[0m \u001b[0;32mexcept\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1323\u001b[0m \u001b[0mh\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mclose\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Users/rmitchell/anaconda3/lib/python3.6/http/client.py\u001b[0m in \u001b[0;36mgetresponse\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 1329\u001b[0m \u001b[0;32mtry\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1330\u001b[0m \u001b[0;32mtry\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 1331\u001b[0;31m \u001b[0mresponse\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mbegin\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 1332\u001b[0m \u001b[0;32mexcept\u001b[0m \u001b[0mConnectionError\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1333\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mclose\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Users/rmitchell/anaconda3/lib/python3.6/http/client.py\u001b[0m in \u001b[0;36mbegin\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 295\u001b[0m \u001b[0;31m# read until we get a non-100 response\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 296\u001b[0m \u001b[0;32mwhile\u001b[0m \u001b[0;32mTrue\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 297\u001b[0;31m \u001b[0mversion\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mstatus\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mreason\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_read_status\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 298\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mstatus\u001b[0m \u001b[0;34m!=\u001b[0m \u001b[0mCONTINUE\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 299\u001b[0m \u001b[0;32mbreak\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Users/rmitchell/anaconda3/lib/python3.6/http/client.py\u001b[0m in \u001b[0;36m_read_status\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 256\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 257\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0m_read_status\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 258\u001b[0;31m \u001b[0mline\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mstr\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mfp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mreadline\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0m_MAXLINE\u001b[0m \u001b[0;34m+\u001b[0m \u001b[0;36m1\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m\"iso-8859-1\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 259\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mlen\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mline\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;34m>\u001b[0m \u001b[0m_MAXLINE\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 260\u001b[0m \u001b[0;32mraise\u001b[0m \u001b[0mLineTooLong\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"status line\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Users/rmitchell/anaconda3/lib/python3.6/socket.py\u001b[0m in \u001b[0;36mreadinto\u001b[0;34m(self, b)\u001b[0m\n\u001b[1;32m 584\u001b[0m \u001b[0;32mwhile\u001b[0m \u001b[0;32mTrue\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 585\u001b[0m \u001b[0;32mtry\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 586\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_sock\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mrecv_into\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mb\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 587\u001b[0m \u001b[0;32mexcept\u001b[0m \u001b[0mtimeout\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 588\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_timeout_occurred\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;32mTrue\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Users/rmitchell/anaconda3/lib/python3.6/ssl.py\u001b[0m in \u001b[0;36mrecv_into\u001b[0;34m(self, buffer, nbytes, flags)\u001b[0m\n\u001b[1;32m 1000\u001b[0m \u001b[0;34m\"non-zero flags not allowed in calls to recv_into() on %s\"\u001b[0m \u001b[0;34m%\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1001\u001b[0m self.__class__)\n\u001b[0;32m-> 1002\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mread\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mnbytes\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mbuffer\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 1003\u001b[0m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1004\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0msocket\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mrecv_into\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mbuffer\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mnbytes\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mflags\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Users/rmitchell/anaconda3/lib/python3.6/ssl.py\u001b[0m in \u001b[0;36mread\u001b[0;34m(self, len, buffer)\u001b[0m\n\u001b[1;32m 863\u001b[0m \u001b[0;32mraise\u001b[0m \u001b[0mValueError\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"Read on closed or unwrapped SSL socket.\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 864\u001b[0m \u001b[0;32mtry\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 865\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_sslobj\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mread\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mlen\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mbuffer\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 866\u001b[0m \u001b[0;32mexcept\u001b[0m \u001b[0mSSLError\u001b[0m \u001b[0;32mas\u001b[0m \u001b[0mx\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 867\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mx\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m0\u001b[0m\u001b[0;34m]\u001b[0m \u001b[0;34m==\u001b[0m \u001b[0mSSL_ERROR_EOF\u001b[0m \u001b[0;32mand\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msuppress_ragged_eofs\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Users/rmitchell/anaconda3/lib/python3.6/ssl.py\u001b[0m in \u001b[0;36mread\u001b[0;34m(self, len, buffer)\u001b[0m\n\u001b[1;32m 623\u001b[0m \"\"\"\n\u001b[1;32m 624\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mbuffer\u001b[0m \u001b[0;32mis\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0;32mNone\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 625\u001b[0;31m \u001b[0mv\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_sslobj\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mread\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mlen\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mbuffer\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 626\u001b[0m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 627\u001b[0m \u001b[0mv\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_sslobj\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mread\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mlen\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;31mKeyboardInterrupt\u001b[0m: " + ] + } + ], + "source": [ + "#Collects a list of all external URLs found on the site\n", + "allExtLinks = set()\n", + "allIntLinks = set()\n", + "def getAllExternalLinks(siteUrl):\n", + " html = urlopen(siteUrl)\n", + " domain = '{}://{}'.format(urlparse(siteUrl).scheme, urlparse(siteUrl).netloc)\n", + " bs = BeautifulSoup(html, \"html.parser\")\n", + " internalLinks = getInternalLinks(bs,domain)\n", + " externalLinks = getExternalLinks(bs,domain)\n", + "\n", + " for link in externalLinks:\n", + " if link not in allExtLinks:\n", + " allExtLinks.add(link)\n", + " print(link)\n", + " for link in internalLinks:\n", + " if link not in allIntLinks:\n", + " allIntLinks.add(link)\n", + " getAllExternalLinks(link)\n", + "\n", + "allIntLinks.add('http://oreilly.com')\n", + "getAllExternalLinks('http://oreilly.com')" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.6.1" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/v2/Chapter04_CrawlingModels.ipynb b/v2/Chapter04_CrawlingModels.ipynb new file mode 100644 index 0000000..ada0c1c --- /dev/null +++ b/v2/Chapter04_CrawlingModels.ipynb @@ -0,0 +1,164 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "import requests\n", + "from bs4 import BeautifulSoup" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "class Content:\n", + " \"\"\"Common base class for all articles/pages\"\"\"\n", + "\n", + " def __init__(self, title, body, url):\n", + " self.title = title\n", + " self.body = body\n", + " self.url = url\n", + "\n", + " def print(self):\n", + " \"\"\"\n", + " Flexible printing function controls output\n", + " \"\"\"\n", + " print(\"New article found for: {}\".format(self.topic))\n", + " print(\"TITLE: {}\".format(self.title))\n", + " print(\"BODY:\\n{}\".format(self.body))\n", + " print(\"URL: {}\".format(self.url))\n", + "\n", + "class Website:\n", + " 'Common base class for all articles/pages'\n", + "\n", + " def __init__(pageTitle, pageBody):\n", + " self.name = name\n", + " self.url = url\n", + " self.pageTitle = pageTitle\n", + " self.pageBody = pageBody" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "class Crawler:\n", + "\n", + " def getPage(self, url):\n", + " \"\"\"\n", + " Utilty function used to get a Beautiful Soup object from a given URL\n", + " \"\"\"\n", + " print(\"Retrieving URL:\\n{}\".format(url))\n", + " session = requests.Session()\n", + " headers = {\"User-Agent\":\"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.95 Safari/537.36\", \"Accept\":\"text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8\"}\n", + " try:\n", + " req = session.get(url, headers=headers)\n", + " except requests.exceptions.RequestException:\n", + " return None\n", + " bsObj = BeautifulSoup(req.text, \"lxml\")\n", + " return bsObj\n", + "\n", + " def safeGet(self, pageObj, selector):\n", + " \"\"\"\n", + " Utilty function used to get a content string from a Beautiful Soup\n", + " object and a selector. Returns an empty string if no object\n", + " is found for the given selector\n", + " \"\"\"\n", + " childObj = pageObj.select(selector)\n", + " if childObj is not None and len(childObj) > 0:\n", + " return childObj[0].get_text()\n", + " return \"\"\n", + "\n", + " def parse(self, site, url):\n", + " \"\"\"\n", + " Extract content from a given page URL\n", + " \"\"\"\n", + " pageObj = self.getPage(url)\n", + " title = self.safeGet(pageObj, site.pageTitle)\n", + " body = self.safeGet(pageObj, site.pageBody)\n", + " if title != \"\" and body != \"\":\n", + " content = Content(topic, title, body, url)\n", + " content.print()" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [ + { + "ename": "ModuleNotFoundError", + "evalue": "No module named 'Crawler'", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mModuleNotFoundError\u001b[0m Traceback (most recent call last)", + "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0;32mimport\u001b[0m \u001b[0mCrawler\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 2\u001b[0m \u001b[0;32mimport\u001b[0m \u001b[0mContent\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 3\u001b[0m \u001b[0;32mimport\u001b[0m \u001b[0mWebsite\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 4\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 5\u001b[0m \u001b[0mcrawler\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mCrawler\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;31mModuleNotFoundError\u001b[0m: No module named 'Crawler'" + ] + } + ], + "source": [ + "\n", + "\n", + "crawler = Crawler()\n", + "\n", + "siteData = [\n", + " [\"O'Reilly Media\",\"http://oreilly.com\",\"https://ssearch.oreilly.com/?q=\", \"article.product-result\",\"p.title a\",True,\"h1\",\"section#product-description\"],\n", + " [\"Reuters\",\"http://reuters.com\",\"http://www.reuters.com/search/news?blob=\",\"div.search-result-content\",\"h3.search-result-title a\",False,\"h1\",\"div.ArticleBody_body_2ECha\"],\n", + " [\"Brookings\",\"http://www.brookings.edu\",\"https://www.brookings.edu/search/?s=\",\"div.list-content article\",\"h4.title a\",True,\"h1\",\"div.post-body\"]\n", + " ]\n", + "sites = []\n", + "for row in siteData:\n", + " sites.append(Website(row[0], row[1], row[2], row[3], row[4], row[5], row[6], row[7]))\n", + "\n", + "crawler.parse(sites[0], \"http://shop.oreilly.com/product/0636920028154.do\")\n", + "crawler.parse(sites[1], \"http://www.reuters.com/article/us-usa-epa-pruitt-idUSKBN19W2D0\")\n", + "crawler.parse(sites[2], \"https://www.brookings.edu/blog/techtank/2016/03/01/idea-to-retire-old-methods-of-policy-education/\")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.6.1" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/v2/Chapter05_Scrapy/wikiSpider/scrapy.cfg b/v2/Chapter05_Scrapy/wikiSpider/scrapy.cfg new file mode 100644 index 0000000..75d6f89 --- /dev/null +++ b/v2/Chapter05_Scrapy/wikiSpider/scrapy.cfg @@ -0,0 +1,11 @@ +# Automatically created by: scrapy startproject +# +# For more information about the [deploy] section see: +# https://scrapyd.readthedocs.org/en/latest/deploy.html + +[settings] +default = wikiSpider.settings + +[deploy] +#url = http://localhost:6800/ +project = wikiSpider diff --git a/v2/Chapter05_Scrapy/wikiSpider/wikiSpider/__init__.py b/v2/Chapter05_Scrapy/wikiSpider/wikiSpider/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/v2/Chapter05_Scrapy/wikiSpider/wikiSpider/items.py b/v2/Chapter05_Scrapy/wikiSpider/wikiSpider/items.py new file mode 100644 index 0000000..e779c99 --- /dev/null +++ b/v2/Chapter05_Scrapy/wikiSpider/wikiSpider/items.py @@ -0,0 +1,8 @@ +from scrapy import Item, Field + + +class Article(Item): + title = Field() + last_edited = Field() + url = Field() + diff --git a/v2/Chapter05_Scrapy/wikiSpider/wikiSpider/middlewares.py b/v2/Chapter05_Scrapy/wikiSpider/wikiSpider/middlewares.py new file mode 100644 index 0000000..7604e85 --- /dev/null +++ b/v2/Chapter05_Scrapy/wikiSpider/wikiSpider/middlewares.py @@ -0,0 +1,56 @@ +# -*- coding: utf-8 -*- + +# Define here the models for your spider middleware +# +# See documentation in: +# http://doc.scrapy.org/en/latest/topics/spider-middleware.html + +from scrapy import signals + + +class WikispiderSpiderMiddleware(object): + # Not all methods need to be defined. If a method is not defined, + # scrapy acts as if the spider middleware does not modify the + # passed objects. + + @classmethod + def from_crawler(cls, crawler): + # This method is used by Scrapy to create your spiders. + s = cls() + crawler.signals.connect(s.spider_opened, signal=signals.spider_opened) + return s + + def process_spider_input(self, response, spider): + # Called for each response that goes through the spider + # middleware and into the spider. + + # Should return None or raise an exception. + return None + + def process_spider_output(self, response, result, spider): + # Called with the results returned from the Spider, after + # it has processed the response. + + # Must return an iterable of Request, dict or Item objects. + for i in result: + yield i + + def process_spider_exception(self, response, exception, spider): + # Called when a spider or process_spider_input() method + # (from other spider middleware) raises an exception. + + # Should return either None or an iterable of Response, dict + # or Item objects. + pass + + def process_start_requests(self, start_requests, spider): + # Called with the start requests of the spider, and works + # similarly to the process_spider_output() method, except + # that it doesn’t have a response associated. + + # Must return only requests (not items). + for r in start_requests: + yield r + + def spider_opened(self, spider): + spider.logger.info('Spider opened: %s' % spider.name) diff --git a/v2/Chapter05_Scrapy/wikiSpider/wikiSpider/pipelines.py b/v2/Chapter05_Scrapy/wikiSpider/wikiSpider/pipelines.py new file mode 100644 index 0000000..8ec6c0e --- /dev/null +++ b/v2/Chapter05_Scrapy/wikiSpider/wikiSpider/pipelines.py @@ -0,0 +1,11 @@ +# -*- coding: utf-8 -*- + +# Define your item pipelines here +# +# Don't forget to add your pipeline to the ITEM_PIPELINES setting +# See: http://doc.scrapy.org/en/latest/topics/item-pipeline.html + + +class WikispiderPipeline(object): + def process_item(self, item, spider): + return item diff --git a/v2/Chapter05_Scrapy/wikiSpider/wikiSpider/settings.py b/v2/Chapter05_Scrapy/wikiSpider/wikiSpider/settings.py new file mode 100644 index 0000000..278ab63 --- /dev/null +++ b/v2/Chapter05_Scrapy/wikiSpider/wikiSpider/settings.py @@ -0,0 +1,90 @@ +# -*- coding: utf-8 -*- + +# Scrapy settings for wikiSpider project +# +# For simplicity, this file contains only settings considered important or +# commonly used. You can find more settings consulting the documentation: +# +# http://doc.scrapy.org/en/latest/topics/settings.html +# http://scrapy.readthedocs.org/en/latest/topics/downloader-middleware.html +# http://scrapy.readthedocs.org/en/latest/topics/spider-middleware.html + +BOT_NAME = 'wikiSpider' + +SPIDER_MODULES = ['wikiSpider.spiders'] +NEWSPIDER_MODULE = 'wikiSpider.spiders' +LOG_LEVEL = 'ERROR' + +# Crawl responsibly by identifying yourself (and your website) on the user-agent +#USER_AGENT = 'wikiSpider (+http://www.yourdomain.com)' + +# Obey robots.txt rules +ROBOTSTXT_OBEY = True + +# Configure maximum concurrent requests performed by Scrapy (default: 16) +#CONCURRENT_REQUESTS = 32 + +# Configure a delay for requests for the same website (default: 0) +# See http://scrapy.readthedocs.org/en/latest/topics/settings.html#download-delay +# See also autothrottle settings and docs +#DOWNLOAD_DELAY = 3 +# The download delay setting will honor only one of: +#CONCURRENT_REQUESTS_PER_DOMAIN = 16 +#CONCURRENT_REQUESTS_PER_IP = 16 + +# Disable cookies (enabled by default) +#COOKIES_ENABLED = False + +# Disable Telnet Console (enabled by default) +#TELNETCONSOLE_ENABLED = False + +# Override the default request headers: +#DEFAULT_REQUEST_HEADERS = { +# 'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8', +# 'Accept-Language': 'en', +#} + +# Enable or disable spider middlewares +# See http://scrapy.readthedocs.org/en/latest/topics/spider-middleware.html +#SPIDER_MIDDLEWARES = { +# 'wikiSpider.middlewares.WikispiderSpiderMiddleware': 543, +#} + +# Enable or disable downloader middlewares +# See http://scrapy.readthedocs.org/en/latest/topics/downloader-middleware.html +#DOWNLOADER_MIDDLEWARES = { +# 'wikiSpider.middlewares.MyCustomDownloaderMiddleware': 543, +#} + +# Enable or disable extensions +# See http://scrapy.readthedocs.org/en/latest/topics/extensions.html +#EXTENSIONS = { +# 'scrapy.extensions.telnet.TelnetConsole': None, +#} + +# Configure item pipelines +# See http://scrapy.readthedocs.org/en/latest/topics/item-pipeline.html +#ITEM_PIPELINES = { +# 'wikiSpider.pipelines.WikispiderPipeline': 300, +#} + +# Enable and configure the AutoThrottle extension (disabled by default) +# See http://doc.scrapy.org/en/latest/topics/autothrottle.html +#AUTOTHROTTLE_ENABLED = True +# The initial download delay +#AUTOTHROTTLE_START_DELAY = 5 +# The maximum download delay to be set in case of high latencies +#AUTOTHROTTLE_MAX_DELAY = 60 +# The average number of requests Scrapy should be sending in parallel to +# each remote server +#AUTOTHROTTLE_TARGET_CONCURRENCY = 1.0 +# Enable showing throttling stats for every response received: +#AUTOTHROTTLE_DEBUG = False + +# Enable and configure HTTP caching (disabled by default) +# See http://scrapy.readthedocs.org/en/latest/topics/downloader-middleware.html#httpcache-middleware-settings +#HTTPCACHE_ENABLED = True +#HTTPCACHE_EXPIRATION_SECS = 0 +#HTTPCACHE_DIR = 'httpcache' +#HTTPCACHE_IGNORE_HTTP_CODES = [] +#HTTPCACHE_STORAGE = 'scrapy.extensions.httpcache.FilesystemCacheStorage' diff --git a/v2/Chapter05_Scrapy/wikiSpider/wikiSpider/spiders/__init__.py b/v2/Chapter05_Scrapy/wikiSpider/wikiSpider/spiders/__init__.py new file mode 100644 index 0000000..ebd689a --- /dev/null +++ b/v2/Chapter05_Scrapy/wikiSpider/wikiSpider/spiders/__init__.py @@ -0,0 +1,4 @@ +# This package will contain the spiders of your Scrapy project +# +# Please refer to the documentation for information on how to create and manage +# your spiders. diff --git a/v2/Chapter05_Scrapy/wikiSpider/wikiSpider/spiders/articleSpider.py b/v2/Chapter05_Scrapy/wikiSpider/wikiSpider/spiders/articleSpider.py new file mode 100644 index 0000000..79a2767 --- /dev/null +++ b/v2/Chapter05_Scrapy/wikiSpider/wikiSpider/spiders/articleSpider.py @@ -0,0 +1,19 @@ +from scrapy.linkextractors import LinkExtractor +from scrapy.spiders import CrawlSpider, Rule +from wikiSpider.items import Article + +class ArticleSpider(CrawlSpider): + name = 'articles' + allowed_domains = ['wikipedia.org'] + start_urls = ['https://en.wikipedia.org/wiki/Benevolent_dictator_for_life'] + + rules = [Rule(LinkExtractor(allow=r'^(/wiki/)((?!:).)*$'), callback='parse_items', follow=True, cb_kwargs={'is_article': True}) ] + + def parse_items(self, response, is_article=True): + item = Article() + item['title'] = response.css('h1::text').extract_first() + item['url'] = response.url + last_edited = response.css('id#footer-info-lastmod::text').extract_first() + last_edited = last_edited.replace('This page was last edited on ') + item['last_edited'] = last_edited + return item diff --git a/v2/Chapter05_Scrapy/wikiSpider/wikiSpider/spiders/testSpider.py b/v2/Chapter05_Scrapy/wikiSpider/wikiSpider/spiders/testSpider.py new file mode 100644 index 0000000..ad785a3 --- /dev/null +++ b/v2/Chapter05_Scrapy/wikiSpider/wikiSpider/spiders/testSpider.py @@ -0,0 +1,21 @@ +from scrapy.contrib.linkextractors import LinkExtractor +from scrapy.contrib.spiders import CrawlSpider, Rule + + +class Stinkybklyn(CrawlSpider): + name = "wiki2" + allowed_domains = ["wikipedia.org"] + + start_urls = [ + "https://en.wikipedia.org/wiki/Benevolent_dictator_for_life" + ] + + rules = [ + Rule(LinkExtractor(allow=r'.*'), callback='parse_items', follow=True) + ] + + def parse_items(self, response): + title = response.css("h1::text").extract_first() + title = "".join(title) + title = title.strip().replace("\n", "").lstrip() + print("title is:"+title) \ No newline at end of file diff --git a/v2/Chapter06_StoringData.ipynb b/v2/Chapter06_StoringData.ipynb new file mode 100644 index 0000000..c6a3068 --- /dev/null +++ b/v2/Chapter06_StoringData.ipynb @@ -0,0 +1,37043 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "('logo.jpg', )" + ] + }, + "execution_count": 1, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "from urllib.request import urlretrieve\n", + "from urllib.request import urlopen\n", + "from bs4 import BeautifulSoup\n", + "\n", + "html = urlopen('http://www.pythonscraping.com')\n", + "bsObj = BeautifulSoup(html, 'html.parser')\n", + "imageLocation = bsObj.find('a', {'id': 'logo'}).find('img')['src']\n", + "urlretrieve (imageLocation, 'logo.jpg')" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "http://pythonscraping.com/misc/jquery.js?v=1.4.4\n", + "http://pythonscraping.com/misc/jquery.once.js?v=1.2\n", + "http://pythonscraping.com/misc/drupal.js?os2esm\n", + "http://pythonscraping.com/sites/all/themes/skeletontheme/js/jquery.mobilemenu.js?os2esm\n", + "http://pythonscraping.com/sites/all/modules/google_analytics/googleanalytics.js?os2esm\n", + "http://pythonscraping.com/sites/default/files/lrg_0.jpg\n", + "http://pythonscraping.com/img/lrg%20(1).jpg\n" + ] + }, + { + "data": { + "text/plain": [ + "('downloaded/img/lrg%20(1).jpg', )" + ] + }, + "execution_count": 2, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "import os\n", + "from urllib.request import urlretrieve\n", + "from urllib.request import urlopen\n", + "from bs4 import BeautifulSoup\n", + "\n", + "downloadDirectory = 'downloaded'\n", + "baseUrl = 'http://pythonscraping.com'\n", + "\n", + "def getAbsoluteURL(baseUrl, source):\n", + " if source.startswith('http://www.'):\n", + " url = 'http://{}'.format(source[11:])\n", + " elif source.startswith(\"http://\"):\n", + " url = source\n", + " elif source.startswith(\"www.\"):\n", + " url = source[4:]\n", + " url = \"http://{}\".format(source)\n", + " else:\n", + " url = \"{}/{}\".format(baseUrl, source)\n", + " if baseUrl not in url:\n", + " return None\n", + " return url\n", + "\n", + "def getDownloadPath(baseUrl, absoluteUrl, downloadDirectory):\n", + " path = absoluteUrl.replace('www.', '')\n", + " path = path.replace(baseUrl, '')\n", + " path = downloadDirectory+path\n", + " directory = os.path.dirname(path)\n", + "\n", + " if not os.path.exists(directory):\n", + " os.makedirs(directory)\n", + "\n", + " return path\n", + "\n", + "html = urlopen('http://www.pythonscraping.com')\n", + "bsObj = BeautifulSoup(html, 'html.parser')\n", + "downloadList = bsObj.findAll(src=True)\n", + "\n", + "for download in downloadList:\n", + " fileUrl = getAbsoluteURL(baseUrl, download['src'])\n", + " if fileUrl is not None:\n", + " print(fileUrl)\n", + "\n", + "urlretrieve(fileUrl, getDownloadPath(baseUrl, fileUrl, downloadDirectory))" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [], + "source": [ + "import csv\n", + "\n", + "csvFile = open('test.csv', 'w+')\n", + "try:\n", + " writer = csv.writer(csvFile)\n", + " writer.writerow(('number', 'number plus 2', 'number times 2'))\n", + " for i in range(10):\n", + " writer.writerow( (i, i+2, i*2))\n", + "finally:\n", + " csvFile.close()" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [], + "source": [ + "import csv\n", + "from urllib.request import urlopen\n", + "from bs4 import BeautifulSoup\n", + "\n", + "html = urlopen('http://en.wikipedia.org/wiki/Comparison_of_text_editors')\n", + "bsObj = BeautifulSoup(html, 'html.parser')\n", + "#The main comparison table is currently the first table on the page\n", + "table = bsObj.findAll('table',{'class':'wikitable'})[0]\n", + "rows = table.findAll('tr')\n", + "\n", + "csvFile = open('editors.csv', 'wt+')\n", + "writer = csv.writer(csvFile)\n", + "try:\n", + " for row in rows:\n", + " csvRow = []\n", + " for cell in row.findAll(['td', 'th']):\n", + " csvRow.append(cell.get_text())\n", + " writer.writerow(csvRow)\n", + "finally:\n", + " csvFile.close()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [ + { + "ename": "OperationalError", + "evalue": "(2003, \"Can't connect to MySQL server on '127.0.0.1' ([Errno 2] No such file or directory)\")", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mFileNotFoundError\u001b[0m Traceback (most recent call last)", + "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/pymysql/connections.py\u001b[0m in \u001b[0;36mconnect\u001b[0;34m(self, sock)\u001b[0m\n\u001b[1;32m 904\u001b[0m \u001b[0msock\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msettimeout\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mconnect_timeout\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 905\u001b[0;31m \u001b[0msock\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mconnect\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0munix_socket\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 906\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mhost_info\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m\"Localhost via UNIX socket\"\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;31mFileNotFoundError\u001b[0m: [Errno 2] No such file or directory", + "\nDuring handling of the above exception, another exception occurred:\n", + "\u001b[0;31mOperationalError\u001b[0m Traceback (most recent call last)", + "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[1;32m 7\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 8\u001b[0m conn = pymysql.connect(host='127.0.0.1', unix_socket='/tmp/mysql.sock',\n\u001b[0;32m----> 9\u001b[0;31m user='root', passwd=None, db='mysql', charset='utf8')\n\u001b[0m\u001b[1;32m 10\u001b[0m \u001b[0mcur\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mconn\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mcursor\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 11\u001b[0m \u001b[0mcur\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mexecute\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"USE scraping\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/pymysql/__init__.py\u001b[0m in \u001b[0;36mConnect\u001b[0;34m(*args, **kwargs)\u001b[0m\n\u001b[1;32m 88\u001b[0m \"\"\"\n\u001b[1;32m 89\u001b[0m \u001b[0;32mfrom\u001b[0m \u001b[0;34m.\u001b[0m\u001b[0mconnections\u001b[0m \u001b[0;32mimport\u001b[0m \u001b[0mConnection\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 90\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mConnection\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 91\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 92\u001b[0m \u001b[0;32mfrom\u001b[0m \u001b[0;34m.\u001b[0m \u001b[0;32mimport\u001b[0m \u001b[0mconnections\u001b[0m \u001b[0;32mas\u001b[0m \u001b[0m_orig_conn\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/pymysql/connections.py\u001b[0m in \u001b[0;36m__init__\u001b[0;34m(self, host, user, password, database, port, unix_socket, charset, sql_mode, read_default_file, conv, use_unicode, client_flag, cursorclass, init_command, connect_timeout, ssl, read_default_group, compress, named_pipe, no_delay, autocommit, db, passwd, local_infile, max_allowed_packet, defer_connect, auth_plugin_map, read_timeout, write_timeout, bind_address)\u001b[0m\n\u001b[1;32m 704\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_sock\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;32mNone\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 705\u001b[0m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 706\u001b[0;31m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mconnect\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 707\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 708\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0m_create_ssl_ctx\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0msslp\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/pymysql/connections.py\u001b[0m in \u001b[0;36mconnect\u001b[0;34m(self, sock)\u001b[0m\n\u001b[1;32m 961\u001b[0m \u001b[0mexc\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mtraceback\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mtraceback\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mformat_exc\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 962\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mDEBUG\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0mprint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mexc\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mtraceback\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 963\u001b[0;31m \u001b[0;32mraise\u001b[0m \u001b[0mexc\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 964\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 965\u001b[0m \u001b[0;31m# If e is neither DatabaseError or IOError, It's a bug.\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;31mOperationalError\u001b[0m: (2003, \"Can't connect to MySQL server on '127.0.0.1' ([Errno 2] No such file or directory)\")" + ] + } + ], + "source": [ + "from urllib.request import urlopen\n", + "from bs4 import BeautifulSoup\n", + "import datetime\n", + "import random\n", + "import pymysql\n", + "import re\n", + "\n", + "conn = pymysql.connect(host='127.0.0.1', unix_socket='/tmp/mysql.sock',\n", + " user='root', passwd=None, db='mysql', charset='utf8')\n", + "cur = conn.cursor()\n", + "cur.execute(\"USE scraping\")\n", + "\n", + "random.seed(datetime.datetime.now())\n", + "\n", + "def store(title, content):\n", + " cur.execute('INSERT INTO pages (title, content) VALUES (\"%s\", \"%s\")', (title, content))\n", + " cur.connection.commit()\n", + "\n", + "def getLinks(articleUrl):\n", + " html = urlopen('http://en.wikipedia.org'+articleUrl)\n", + " bs = BeautifulSoup(html, 'html.parser')\n", + " title = bs.find('h1').get_text()\n", + " content = bs.find('div', {'id':'mw-content-text'}).find('p').get_text()\n", + " store(title, content)\n", + " return bs.find('div', {'id':'bodyContent'}).findAll('a', href=re.compile('^(/wiki/)((?!:).)*$'))\n", + "\n", + "links = getLinks('/wiki/Kevin_Bacon')\n", + "try:\n", + " while len(links) > 0:\n", + " newArticle = links[random.randint(0, len(links)-1)].attrs['href']\n", + " print(newArticle)\n", + " links = getLinks(newArticle)\n", + "finally:\n", + " cur.close()\n", + " conn.close()" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "1\n", + "462\n", + "1705\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Pennsylvania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Pennsylvania_(disambiguation)\n", + "1\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Province_of_Pennsylvania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Kingdom_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Commonwealth_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Flag_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Royal_Arms_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Royal_Banner_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Winchester\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Westminster\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/City_of_London\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Old_Norse\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Welsh_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Cornish_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Cumbric_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Anglo-Norman_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Medieval_Latin\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Christianity\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Demonym\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/English_people\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Absolute_monarchy\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Unitary_state\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Parliamentary_system\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/List_of_English_monarchs\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/%C3%86thelstan\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Anne,_Queen_of_Great_Britain\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Parliament_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/House_of_Lords_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/House_of_Commons_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/History_of_Anglo-Saxon_England#English_unification_(10th_century)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Battle_of_Hastings\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Conquest_of_Wales_by_Edward_I\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Laws_in_Wales_Acts_1535_and_1542\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Union_of_the_Crowns\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Glorious_Revolution\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Acts_of_Union_1707\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/List_of_countries_and_dependencies_by_area\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/List_of_countries_by_population\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Pound_sterling\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Wessex\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Kingdom_of_Sussex\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Kingdom_of_Essex\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Kingdom_of_Kent\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Dumnonia\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Mercia\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Kingdom_of_East_Anglia\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Kingdom_of_Northumbria\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Welsh_Marches\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Principality_of_Wales\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Kingdom_of_Great_Britain\n", + "1830\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Wales\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/History_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Timeline_of_English_history\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Prehistoric_Britain\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Roman_Britain\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Sub-Roman_Britain\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/England_in_the_Middle_Ages\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Economy_of_England_in_the_Middle_Ages\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/History_of_Anglo-Saxon_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/History_of_Anglo-Saxon_England#English_unification_.2810th_century.29\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/England_in_the_High_Middle_Ages\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Norman_conquest_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/History_of_England#Norman_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/England_in_the_Late_Middle_Ages\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Black_Death_in_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Tudor_period\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Tudor_dynasty\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Elizabethan_era\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/English_Renaissance\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Stuart_period\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/English_Civil_War\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Commonwealth_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/The_Protectorate\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Restoration_(England)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Glorious_Revolution\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Georgian_era\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Regency_era\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Victorian_era\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Edwardian_era\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/History_of_the_United_Kingdom_during_the_First_World_War\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/History_of_the_United_Kingdom#Interwar_era_1918–1939\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/History_of_the_United_Kingdom#Second_World_War_1939–1945\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Social_history_of_the_United_Kingdom_(1945%E2%80%93present)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Political_history_of_the_United_Kingdom_(1945%E2%80%93present)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Social_history_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/History_of_education_in_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Economy_of_England#History\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Politics_of_England#Political_history\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/English_overseas_possessions\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/History_of_the_English_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Kingdom_of_Great_Britain\n", + "1830\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Counties_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/History_of_Bedfordshire\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/History_of_Berkshire\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/History_of_Bristol\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/History_of_Buckinghamshire\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/History_of_Cambridgeshire\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/History_of_Cheshire\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/History_of_Cornwall\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/History_of_Cumbria\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/History_of_Derbyshire\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/History_of_Devon\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/History_of_Dorset\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/History_of_Durham\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/History_of_the_East_Riding_of_Yorkshire\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/History_of_East_Sussex\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/History_of_Essex\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/History_of_Gloucestershire\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/History_of_Greater_London\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/History_of_Greater_Manchester\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/History_of_Hampshire\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/History_of_Herefordshire\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/History_of_Hertfordshire\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/History_of_the_Isle_of_Wight\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/History_of_Kent\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/History_of_Lancashire\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/History_of_Leicestershire\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/History_of_Lincolnshire\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/History_of_London\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/History_of_Merseyside\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/History_of_Norfolk\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/History_of_Northamptonshire\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/History_of_Northumberland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/History_of_North_Yorkshire\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/History_of_Nottinghamshire\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/History_of_Oxfordshire\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/History_of_Rutland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/History_of_Shropshire\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/History_of_Somerset\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/History_of_South_Yorkshire\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/History_of_Staffordshire\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/History_of_Suffolk\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/History_of_Surrey\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/History_of_Tyne_and_Wear\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/History_of_Warwickshire\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/History_of_the_West_Midlands\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/History_of_West_Sussex\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/History_of_West_Yorkshire\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/History_of_Wiltshire\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/History_of_Worcestershire\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/City_status_in_the_United_Kingdom\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/History_of_Birmingham\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/History_of_Bournemouth\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/History_of_Brighton\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/History_of_Bristol\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/History_of_Chester\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/History_of_Christchurch,_Dorset\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/History_of_Colchester\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/History_of_Coventry\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/History_of_Dover\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/History_of_Folkestone\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/History_of_Leeds\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/History_of_Liverpool\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/History_of_London\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/History_of_Maidstone\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/History_of_Manchester\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/History_of_Milton_Keynes\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/History_of_Newcastle_upon_Tyne\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/History_of_Nottingham\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/History_of_Plymouth\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/History_of_Poole\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0\n", + "PAGE HAS NO LINKS: /wiki/History_of_Portsmouth\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/History_of_Reading,_Berkshire\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/History_of_Rochester,_Kent\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/History_of_Sheffield\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/History_of_Shrewsbury\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/History_of_Southampton\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/History_of_St_Albans\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/History_of_Torquay\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/History_of_Wetherby\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/History_of_Worthing\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/History_of_York\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Sovereign_state\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Island\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Great_Britain\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/History_of_Anglo-Saxon_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Kingdom_of_Scotland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Kingdom_of_Great_Britain\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/%C3%86thelstan\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/North_Sea_Empire\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Cnut_the_Great\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Denmark\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Norway\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Norman_conquest_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Winchester\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Westminster\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/City_of_London\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Norman_conquest\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Norman_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Plantagenet_era\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Tudor_period\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Stuart_period\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Interregnum_(England)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Kings_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/House_of_Plantagenet\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Henry_II_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Angevin_kings_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/House_of_Lancaster\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/House_of_York\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Tudor_dynasty\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Edward_III\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/John_Beaufort,_1st_Earl_of_Somerset\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/James_VI_and_I\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/House_of_Stuart\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Henry_VII_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Margaret_Tudor\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Conquest_of_Wales_by_Edward_I\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/English_parliament\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/English_claims_to_the_French_throne\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Kingdom_of_France\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Hundred_Years%27_War\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Wars_of_the_Roses\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Pale_of_Calais\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Tudor_dynasty\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/English_Renaissance\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Principality_of_Wales\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Laws_in_Wales_Acts_1535%E2%80%931542\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Henry_VIII\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/English_Reformation\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Elizabeth_I\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Elizabethan_Religious_Settlement\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Great_power\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/British_Empire\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/English_overseas_possessions\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/James_VI_and_I\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Stuart_dynasty\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Union_of_the_Crowns\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Kingdom_of_Scotland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Kingdom_of_Ireland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/English_Civil_War\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Execution_of_Charles_I\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Glorious_Revolution\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Constitutional_monarchy\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Acts_of_Union_1707\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Political_union\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Kingdom_of_Great_Britain\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Name_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Angles\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/%C3%86thelweard_(historian)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Angeln\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Bede\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Haplology\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Middle_English\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Middle_Latin\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Old_French\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Anglo-Norman_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/%C3%86thelstan\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/John,_King_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Canute_the_Great\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Norman_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/James_VI_and_I\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Anglo-Saxon_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Anglo-Saxon_kingdoms\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Heptarchy\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Kingdom_of_East_Anglia\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Mercia\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Northumbria\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Kingdom_of_Kent\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Kingdom_of_Essex\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Kingdom_of_Sussex\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Kingdom_of_Wessex\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Viking_invasions\n", + "356\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Bretwalda\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/High_king\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/List_of_monarchs_of_Wessex\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Egbert_of_Wessex\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Dore\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Alfred_the_Great\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Anglo-Saxon_Chronicle\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Danelaw\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/City_of_London\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Wharf\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Thames\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Eadred\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Lothian\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Bernicia\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Kingdom_of_Scotland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Eamont\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Cnut_the_Great\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/%C3%86thelred_the_Unready\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Sweyn_I_of_Denmark\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Cnut_the_Great\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Edmund_Ironside\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Harthacnut\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Emma_of_Normandy\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Edward_the_Confessor\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Norman_conquest_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Harold_II_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/William_the_Conqueror\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Sussex\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/York\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Battle_of_Stamford_Bridge\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Battle_of_Hastings\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Fyrd\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Duchy_of_Normandy\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Philip_I_of_France\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Westminster_Abbey\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/England_in_the_High_Middle_Ages\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Angevin_Empire\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Norman_invasion_of_Wales\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Conquest_of_Wales_by_Edward_I\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/William_II_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Kingdom_of_Strathclyde\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Celts\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Cumbria\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Henry_I_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Lothian\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Kingdom_of_Scotland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/England-Scotland_border\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Kingdom_of_Northumbria\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Edinburgh\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Treaty_of_York\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Magna_Carta\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Runnymede\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Duchy_of_Aquitaine\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Personal_union\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Henry_II_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Eleanor,_Duchess_of_Aquitaine\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/John,_King_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Philip_II_of_France\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Duchy_of_Normandy\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Channel_Islands\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Anglo-Saxon_kingdoms\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Bretwalda\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Norman_conquest_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Marcher_Lords\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Edward_I_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Llywelyn_ap_Gruffudd\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Prince_of_Wales\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Edward_II_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Castle\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Conwy_Castle\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Harlech_Castle\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Caernarfon_Castle\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Roman_Britain\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Jutes\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Kingdom_of_Kent\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Welsh_mythology\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Welsh_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/British_language_(Celtic)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Latin\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/England_in_the_Late_Middle_Ages\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Wars_of_the_Roses\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Hundred_Years%27_War\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Battle_of_Agincourt\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Edward_III_of_England\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0\n", + "PAGE HAS NO LINKS: /wiki/English_claims_to_the_French_throne\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Hundred_Years%27_War\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/House_of_Plantagenet\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Capetian_House_of_Valois\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Battle_of_Formigny\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Battle_of_Castillon\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Calais\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/English_identity\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Anglo-Saxon\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Joan_of_Arc\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Anglo-Normans\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Middle_English\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Wars_of_the_Roses\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/House_of_Lancaster\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/House_of_York\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Henry_VII_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Elizabeth_of_York\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Tudor_dynasty\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Tudor_period\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Elizabethan_era\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Stuart_period\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/English_Renaissance\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Edward_I\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Marcher_Lords\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Principality_of_Wales\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Henry_VIII\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Laws_in_Wales_Acts_1535%E2%80%931542\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Parliament_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Spanish_Armada\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Parliament_of_Ireland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/King_of_Ireland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Kingdom_of_Ireland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Calais\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Philip_II_of_Spain\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Mary_I_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Elizabeth_I\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Church_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Spanish_Armada\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Early_modern_Britain\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Stuart_period\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/James_I_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Union_of_the_Crowns\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/English_Civil_War\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/English_Interregnum\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/English_Commonwealth\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/English_Protectorate\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Oliver_Cromwell\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/British_Isles\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Commonwealth_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Charles_I_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/English_Civil_War\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Oliver_Cromwell\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/English_Interregnum\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Trial_and_execution_of_Charles_I\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Rump_Parliament\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Council_of_State_(England)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Oliver_Cromwell\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Cromwellian_conquest_of_Ireland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Scotland_in_the_Wars_of_the_Three_Kingdoms\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Grandee_(New_Model_Army)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/New_Model_Army\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Rump_Parliament\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Barebone%27s_Parliament\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Instrument_of_Government\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Lord_Protector_(Protectorate)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Instrument_of_Government\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Humble_Petition_and_Advice\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Richard_Cromwell\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Restoration_(England)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Glorious_Revolution\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Charles_II_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Restoration_(England)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/James_II_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Glorious_Revolution\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/William_III_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Mary_II_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Alien_Act_1705\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/William_III_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Anne,_Queen_of_Great_Britain\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Act_of_Settlement_1701\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/House_of_Hanover\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Union_of_the_Crowns\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Act_of_Security_1704\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/House_of_Stuart\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Treaty_of_Union\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Acts_of_Union_1707\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Kingdom_of_Great_Britain\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Customs_union\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Monetary_union\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Parliament_of_Great_Britain\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Palace_of_Westminster\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Government_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/England_and_Wales\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Scotland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Acts_of_Union_1800\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/United_Kingdom_of_Great_Britain_and_Ireland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Irish_Free_State\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Royal_and_Parliamentary_Titles_Act_1927\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Historic_counties_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/List_of_earldoms\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Domesday_Book\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/County_palatine\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/English_county_histories\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/English_feudal_barony\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Historic_counties_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Normans\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Shire\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Anglo-Saxons\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Administrative_counties_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Ancient_borough\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/High_Sheriff\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Lord_Lieutenant\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Justice_of_the_Peace\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Administration_of_justice\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/List_of_counties_of_England_by_area_in_1831\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Laws_in_Wales_Acts_1535-1542\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Local_Government_Act_1888\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Assize_courts\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/English_feudal_barony\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Quia_Emptores\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/English_Civil_War\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Tenures_Abolition_Act_1660\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/English_Restoration\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Knight-service\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Socage\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Peerage\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/House_of_Lords\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Statute_of_Rhuddlan\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Conquest_of_Wales_by_Edward_I\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Edward_I_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Prince_of_Wales\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Welsh_Marches\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Council_of_Wales_and_the_Marches\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Ludlow_Castle\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Edward_IV_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Laws_in_Wales_Acts_1535%E2%80%931542\n", + "559\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/England_and_Wales\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/List_of_English_monarchs\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/English_colonial_empire\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/English_Army\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Royal_Navy\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Privy_Council_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Crown_Jewels_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/England_and_Wales\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Anglo-Norman_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Middle_English_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Old_English\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Middle_English\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Modern_English\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Old_Welsh\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Middle_Welsh\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Modern_Welsh\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Old_Cornish\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Middle_Cornish\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Late_Cornish\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Constitution_of_the_United_Kingdom\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Uncodified_constitution\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Bill_of_Rights_1689\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Wayback_Machine\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Alan_Vince\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Royal_Historical_Society\n", + "494\n", + "494\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Harmondsworth\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Penguin_Books\n", + "494\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Oxford\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Shire_Books\n", + "494\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Geoffrey_Elton\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Heptarchy\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Circa\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/English_Interregnum\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/English_Interregnum\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Kingdom_of_Great_Britain\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/History_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Timeline_of_English_history\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/History_of_Anglo-Saxon_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Heptarchy\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Norman_conquest_of_England\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0\n", + "PAGE HAS NO LINKS: /wiki/Anglo-Norman_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Angevin_Empire\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/England_in_the_Late_Middle_Ages\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Wars_of_the_Roses\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Tudor_period\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Stuart_period_(England)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/English_Renaissance\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/English_Reformation\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Elizabethan_era\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Union_of_the_Crowns\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/English_overseas_possessions\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Gunpowder_Plot\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Jacobean_era\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/English_Civil_War\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Interregnum_(England)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Commonwealth_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/The_Protectorate\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Restoration_(England)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Popish_Plot\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Glorious_Revolution\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Maritime_history_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Economy_of_England_in_the_Middle_Ages\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Acts_of_Union_1707\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Dynasty\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/House_of_Wessex\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/House_of_Kn%C3%BDtlinga\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/House_of_Normandy\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Angevin_kings_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/House_of_Plantagenet\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/House_of_Lancaster\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/House_of_York\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Tudor_dynasty\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/House_of_Stuart\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/House_of_Orange-Nassau\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Politics_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/English_law\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Witenagemot\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Curia_regis\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Parliament_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/House_of_Lords_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/House_of_Commons_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/List_of_English_monarchs\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/English_Council_of_State\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Lord_Protector\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Peerage_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Privy_Council_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/List_of_English_ministries\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Secretary_of_State_(England)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Governance_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Elizabethan_government\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Star_Chamber\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Whiggism\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Tory\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/List_of_Acts_of_the_Parliament_of_England_to_1483\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/List_of_Acts_of_the_Parliament_of_England,_1485%E2%80%931601\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/List_of_Acts_of_the_Parliament_of_England,_1603%E2%80%9341\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/List_of_Ordinances_and_Acts_of_the_Parliament_of_England,_1642%E2%80%9360\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/List_of_Acts_of_the_Parliament_of_England,_1660%E2%80%9399\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/List_of_Acts_of_the_Parliament_of_England,_1700%E2%80%9306\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Military_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Anglo-Saxon_military_organization\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Anglo-Saxon_warfare\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/English_Army\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/New_Model_Army\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Royal_Navy\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/List_of_ship_names_of_the_Royal_Navy\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/History_of_the_Royal_Navy\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Geography_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Historic_counties_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/List_of_islands_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/List_of_places_in_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/List_of_towns_in_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/List_of_castles_in_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/List_of_palaces#England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Demography_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/English_language_in_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/English_people\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/List_of_English_people\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Culture_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Religion_in_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Church_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/English_cuisine\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/English_folklore\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Morris_dance\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/English_country_dance\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Architecture_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Anglo-Saxon_architecture\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/English_Gothic_architecture\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Tudor_architecture\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Elizabethan_architecture\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Jacobean_architecture\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Queen_Anne_style_architecture\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Georgian_architecture\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/National_symbols_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Flag_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/List_of_English_flags\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/English_heraldry\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Royal_Arms_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/College_of_Arms\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Royal_Badges_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Royal_Supporters_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Royal_Standards_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Crown_Jewels_of_the_United_Kingdom\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Tudor_rose\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Oak\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Saint_George\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/St_George%27s_Day_in_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/British_Isles\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Terminology_of_the_British_Isles\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Alba\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Albion\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Prydain\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Britain_(place_name)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/%C3%89ire\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Hibernia\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/British_Isles_naming_dispute\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Politics_in_the_British_Isles\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Sovereign_state\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Republic_of_Ireland\n", + "1830\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Northern_Ireland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Scotland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Wales\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Crown_dependencies\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Guernsey\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Jersey\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Isle_of_Man\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Sark\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Ireland%E2%80%93United_Kingdom_relations\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/British%E2%80%93Irish_Council\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/British%E2%80%93Irish_Intergovernmental_Conference\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/British%E2%80%93Irish_Parliamentary_Assembly\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Common_Travel_Area\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Channel_Islands\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Islands_of_the_Clyde\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Great_Britain\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Hebrides\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Inner_Hebrides\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Outer_Hebrides\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Ireland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Isle_of_Man\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Northern_Isles\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Orkney\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Shetland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Isles_of_Scilly\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/List_of_islands_of_the_Bailiwick_of_Guernsey\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/List_of_islands_of_Ireland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/List_of_islands_of_the_Bailiwick_of_Jersey\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/List_of_islands_of_the_Isle_of_Man\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/List_of_islands_of_the_United_Kingdom\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/List_of_islands_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/List_of_islands_of_Scotland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/List_of_islands_of_Wales\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/History_of_the_British_Isles\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/History_of_Ireland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/History_of_the_Republic_of_Ireland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/History_of_the_United_Kingdom\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/History_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/History_of_Northern_Ireland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/History_of_Scotland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/History_of_Wales\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/History_of_Guernsey\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/History_of_Jersey\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/History_of_the_Isle_of_Man\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Irish_Free_State\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Principality_of_Wales\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Kingdom_of_Great_Britain\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0\n", + "PAGE HAS NO LINKS: /wiki/Kingdom_of_Ireland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Kingdom_of_Scotland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/United_Kingdom_of_Great_Britain_and_Ireland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Germanic_languages\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/English_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Scots_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Celtic_languages\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Cornish_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Scottish_Gaelic\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Irish_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Manx_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Welsh_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Romance_languages\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Auregnais\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/French_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Guern%C3%A9siais\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/J%C3%A8rriais\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Sercquiais\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/British_Sign_Language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Irish_Sign_Language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Northern_Ireland_Sign_Language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Shelta\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/British_people\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Cornish_people\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/English_people\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Romanichal\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Irish_people\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Irish_Travellers\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Kale_(Welsh_Romanies)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Manx_people\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/People_of_Northern_Ireland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Scottish_people\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Ulster_Scots_people\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Welsh_people\n", + "547\n", + "547\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Main_Page\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Main_Page\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Kingdom_of_Great_Britain\n", + "1830\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Scots_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Welsh_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Cornish_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Scottish_Gaelic\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Flag_of_Great_Britain\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Royal_coat_of_arms_of_Great_Britain\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/London\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/English_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Scots_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Norn_Language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Welsh_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Cornish_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Scottish_Gaelic\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Angloromani_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Demonym\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/British_people\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Unitary_state\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Parliamentary_system\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Constitutional_monarchy\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/List_of_British_monarchs\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Anne,_Queen_of_Great_Britain\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/George_I_of_Great_Britain\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/George_II_of_Great_Britain\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/George_III_of_the_United_Kingdom\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Prime_Minister_of_Great_Britain\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Robert_Walpole\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Spencer_Compton,_1st_Earl_of_Wilmington\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Henry_Pelham\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Thomas_Pelham-Holles,_1st_Duke_of_Newcastle\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/William_Pitt_the_Elder\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Frederick_North,_Lord_North\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Parliament_of_Great_Britain\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/House_of_Lords\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/House_of_Commons_of_Great_Britain\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Treaty_of_Union\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Acts_of_Union_1707\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Acts_of_Union_1800\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/List_of_countries_and_dependencies_by_area\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/List_of_countries_by_population\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Pound_sterling\n", + "548\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Kingdom_of_Scotland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/United_Kingdom_of_Great_Britain_and_Ireland\n", + "1830\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/History_of_the_United_Kingdom\n", + "1830\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Timeline_of_English_history\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Georgian_era\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/United_Kingdom_in_the_Napoleonic_Wars\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Regency_era\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Victorian_era\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Edwardian_era\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/History_of_the_United_Kingdom_during_the_First_World_War\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Interwar_Britain\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/History_of_the_United_Kingdom#Second_World_War_1939-1945\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Political_history_of_the_United_Kingdom_(1945%E2%80%93present)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Brexit\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Social_history_of_the_United_Kingdom_(1945%E2%80%93present)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/History_of_women_in_the_United_Kingdom\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Military_history_of_the_United_Kingdom\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Sovereign_state\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Western_Europe\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Treaty_of_Union\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Acts_of_Union_1707\n", + "548\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Kingdom_of_Scotland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Great_Britain\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Kingdom_of_Ireland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Unitary_state\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Parliament_of_Great_Britain\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Palace_of_Westminster\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Personal_union\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/James_VI\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/King_of_Scots\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/King_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/King_of_Ireland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Queen_Elizabeth_I\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Union_of_the_Crowns\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Hanoverian_succession\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/George_I_of_Great_Britain\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Electorate_of_Hanover\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Jacobite_risings\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Battle_of_Culloden\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Seven_Years%27_War\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/British_Empire\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Acts_of_Union_1800\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/United_Kingdom_of_Great_Britain_and_Ireland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Irish_Free_State\n", + "1830\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Britain_(place_name)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Old_French\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Modern_French\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Middle_English\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Treaty_of_Union\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Acts_of_Union_1707\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Parliament_of_the_United_Kingdom\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Scottish_Parliament\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/British_Broadcasting_Corporation\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Historical_Association\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Parliament_of_Great_Britain\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Personal_union\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/James_I_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Union_of_the_Crowns\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/House_of_Stuart\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Kingdom_of_Ireland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Isle_of_Man\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Channel_Islands\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Acts_of_Union_1707\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Monarchy_of_the_United_Kingdom#After_the_1707_Acts_of_Union\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Acts_of_Union_1800\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Succession_to_the_British_throne\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Act_of_Settlement_1701\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Act_of_Security_1704\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Electress_Sophia_of_Hanover\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/House_of_Hanover\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Parliament_of_Great_Britain\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Parliament_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Parliament_of_Scotland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Parliament_of_the_United_Kingdom\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/House_of_Commons_of_Great_Britain\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/House_of_Lords\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/The_Crown\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Peerage_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Peerage_of_Scotland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Representative_peer\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Peerage_of_Great_Britain\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Poynings%27_Law\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Parliament_of_Ireland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Parliament_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Dependency_of_Ireland_on_Great_Britain_Act_1719\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Irish_House_of_Lords\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Kingdom_of_Ireland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/George_I_of_Great_Britain\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Repeal_of_Act_for_Securing_Dependence_of_Ireland_Act_1782\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Constitution_of_1782\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0\n", + "PAGE HAS NO LINKS: /wiki/Irish_Rebellion_of_1798\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/United_Kingdom_of_Great_Britain_and_Ireland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Anne,_Queen_of_Great_Britain\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Treaty_of_Union\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Treaty_of_Union\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/House_of_Commons_of_Great_Britain\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Anne,_Queen_of_Great_Britain\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/War_of_the_Spanish_Succession\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Dutch_Republic\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Holy_Roman_Empire\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/King_Louis_XIV\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Anne,_Queen_of_Great_Britain\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/John_Churchill,_1st_Duke_of_Marlborough\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Treaty_of_Utrecht\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/English_overseas_possessions\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Newfoundland_(island)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Acadia\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Gibraltar\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Menorca\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/G._M._Trevelyan\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/History_of_the_United_Kingdom\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Georgian_era\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Colonialism\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/English_overseas_possessions\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/British_Empire\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/House_of_Hanover\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/James_Francis_Edward_Stuart\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/John_Erskine,_Earl_of_Mar_(1675%E2%80%931732)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/James_Stanhope,_1st_Earl_Stanhope\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Charles_Townshend,_2nd_Viscount_Townshend\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Charles_Spencer,_3rd_Earl_of_Sunderland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Robert_Walpole\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Septennial_Act_1715\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Jeremy_Black_(historian)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Ragnhild_Hatton\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Robert_Walpole\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/History_of_the_United_Kingdom\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Houghton_Hall\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Walpole_collection\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Henry_Pelham\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Thomas_Pelham-Holles,_1st_Duke_of_Newcastle\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/South_Sea_Bubble\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Chancellor_of_the_Exchequer\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Postmaster_General\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/James_Stanhope,_1st_Earl_Stanhope\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Charles_Spencer,_3rd_Earl_of_Sunderland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/First_Lord_of_the_Treasury\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Sinecure\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Order_of_the_Bath\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Houghton_Hall\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Country_Party_(Britain)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/William_Arnall\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Richard_Temple,_1st_Viscount_Cobham\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/William_Pitt_the_Elder\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/George_Grenville\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Cobhamite\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Samuel_Sandys,_1st_Baron_Sandys\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/International_relations,_1648%E2%80%931814\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/France%E2%80%93United_Kingdom_relations\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/War_of_the_Polish_Succession\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Charles_Townshend,_2nd_Viscount_Townshend\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Louis_XIV\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Louis_XV_of_France\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Andr%C3%A9-Hercule_de_Fleury\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/War_of_the_Austrian_Succession\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Colossus_of_Rhodes\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Whig_(British_political_party)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Glorious_Revolution\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/George_III_of_the_United_Kingdom\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Seven_Years%27_War\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Great_Britain_in_the_Seven_Years%27_War\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Company_rule_in_India\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/William_Pitt,_1st_Earl_of_Chatham\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Siege_of_Fort_St_Philip_(1756)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Planned_French_Invasion_of_Britain_(1759)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Battle_of_Ticonderoga_(1759)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Forbes_Expedition\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Quebec_City\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Battle_of_the_Plains_of_Abraham\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Invasion_of_Guadeloupe_(1759)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Siege_of_Madras\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Battle_of_Minden\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Battle_of_Lagos\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Battle_of_Quiberon_Bay\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Treaty_of_Paris_(1763)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/New_France\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Carnatic_Wars#Third_Carnatic_War_(1756–1763)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/French_India\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Church_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/John_Wesley\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Methodism\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/William_Wilberforce\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Hannah_More\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Clapham_Sect\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Historiography_of_the_British_Empire\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Mercantilism\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/New_Amsterdam\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/American_Revolution\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Thirteen_Colonies\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/American_Revolutionary_War\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/United_States_Declaration_of_Independence\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/George_Washington\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Treaty_of_Paris_(1783)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Thirteen_Colonies\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Adam_Smith\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Wealth_of_Nations\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Free_trade\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Mercantilist\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/History_of_Canada\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Canada_(New_France)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Province_of_Quebec_(1763%E2%80%9391)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Quebec_Act\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/American_Revolutionary_War\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Halifax,_Nova_Scotia\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/United_Empire_Loyalist\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Sierra_Leone\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/History_of_New_Brunswick\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/History_of_Australia_(1788%E2%80%931850)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/History_of_Australia\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/History_of_New_Zealand\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/James_Cook\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/First_voyage_of_James_Cook\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Joseph_Banks\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Botany_Bay\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/James_Matra\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Lord_Sydney\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/First_Fleet\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Convictism_in_Australia\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Lord_Clive\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Mir_Jafar\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Battle_of_Plassey\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/East_India_Company\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Mughal_Empire\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/French_East_India_Company\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Carnatic_Wars\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Battle_of_Plassey\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Battle_of_Buxar\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Robert_Clive\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Bengal_Presidency\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Presidency_armies\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Sepoys\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/French_Revolutionary_Wars\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/War_of_the_First_Coalition\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/War_of_the_Second_Coalition\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/French_Revolution\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Napoleonic_Wars\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Royal_Navy\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Kingdom_of_Ireland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Irish_Rebellion_of_1798\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/William_Pitt_the_Younger\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Act_of_Union_1800\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Patronage\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Parliament_of_Ireland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Coat_of_arms\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/House_of_Hanover\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Anne,_Queen_of_Great_Britain\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Queen_regnant\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/List_of_Scottish_monarchs\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Queen_of_Ireland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/George_I_of_Great_Britain\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/George_II_of_Great_Britain\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/George_III_of_the_United_Kingdom\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Parliament_of_Great_Britain\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Elections_in_Great_Britain\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/William_Pitt_the_Younger\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/House_of_Commons_of_Great_Britain\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0\n", + "PAGE HAS NO LINKS: /wiki/House_of_Lords\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Lords_Spiritual\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Lords_Temporal\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/House_of_Commons_of_Great_Britain\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/England_and_Wales\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/British_Constitution\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Peerage_of_Great_Britain\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Peerage\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Peerage_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Peerage_of_Scotland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Representative_peers\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/The_Crown\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Peerage_of_Great_Britain\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Peerage_of_Ireland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Irish_House_of_Lords\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Historiography_of_the_United_Kingdom\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Historiography_of_the_British_Empire\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Great_Britain_in_the_Seven_Years%27_War\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Timeline_of_British_history_(1700%E2%80%931799)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/History_of_the_United_Kingdom\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Early_Modern_Britain\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Georgian_era\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Jacobitism\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Acts_of_Union_1800\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Wayback_Machine\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Learning_and_Teaching_Scotland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Wayback_Machine\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Historical_Association\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Bamber_Gascoigne\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/JSTOR\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/The_Oxford_History_of_the_British_Empire\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Historiography_of_the_United_Kingdom\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Historiography_of_the_British_Empire\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Scottish_Parliament\n", + "548\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Kingdom_of_Scotland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/United_Kingdom_of_Great_Britain_and_Ireland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Acts_of_Union_1707\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Great_Britain_in_the_Seven_Years%27_War\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Jacobitism\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Jacobite_risings\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/War_of_Jenkins%27_Ear\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/French_and_Indian_War\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Boston_Massacre\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/American_Revolutionary_War\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Fourth_Anglo-Dutch_War\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/French_Revolutionary_Wars\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Acts_of_Union_1800\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/House_of_Stuart\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Anne,_Queen_of_Great_Britain\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/House_of_Hanover\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/George_I_of_Great_Britain\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/George_II_of_Great_Britain\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/George_III_of_the_United_Kingdom\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Parliament_of_Great_Britain\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/House_of_Lords\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/House_of_Commons_of_Great_Britain\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/List_of_Parliaments_of_Great_Britain\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/List_of_Acts_of_the_Parliament_of_Great_Britain\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/List_of_Acts_of_the_Parliament_of_Great_Britain,_1707%E2%80%931719\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/List_of_Acts_of_the_Parliament_of_Great_Britain,_1720%E2%80%931739\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/List_of_Acts_of_the_Parliament_of_Great_Britain,_1740%E2%80%931759\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/List_of_Acts_of_the_Parliament_of_Great_Britain,_1760%E2%80%931779\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/List_of_Acts_of_the_Parliament_of_Great_Britain,_1780%E2%80%931800\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Elections_in_Great_Britain\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/British_general_election,_1708\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/British_general_election,_1710\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/British_general_election,_1713\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/British_general_election,_1715\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/British_general_election,_1722\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/British_general_election,_1727\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/British_general_election,_1734\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/British_general_election,_1741\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/British_general_election,_1747\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/British_general_election,_1754\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/British_general_election,_1761\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/British_general_election,_1768\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/British_general_election,_1774\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/British_general_election,_1780\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/British_general_election,_1784\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/British_general_election,_1790\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/British_general_election,_1796\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/List_of_British_monarchs\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Peerage_of_Great_Britain\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Privy_Council_of_Great_Britain\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Prime_Minister_of_Great_Britain\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/List_of_Prime_Ministers_of_Great_Britain\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Whigs_(British_political_party)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Tories_(British_political_party)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Whig_Junto\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Patriot_Whigs\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Kit-Cat_Club\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Great_Britain\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Queen_Anne_style_architecture\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Georgian_architecture\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/East_India_Company\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/British_Empire\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Longitude_prize\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Window_tax\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Proclamation_of_Rebellion\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/South_Sea_Company\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Speenhamland_system\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Flag_of_Great_Britain\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Royal_coat_of_arms_of_Great_Britain\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/1707_in_Great_Britain\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/1708_in_Great_Britain\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/1709_in_Great_Britain\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/1710_in_Great_Britain\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/1711_in_Great_Britain\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/1712_in_Great_Britain\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/1713_in_Great_Britain\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/1714_in_Great_Britain\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/1715_in_Great_Britain\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/1716_in_Great_Britain\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/1717_in_Great_Britain\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/1718_in_Great_Britain\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/1719_in_Great_Britain\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/1720_in_Great_Britain\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/1721_in_Great_Britain\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/1722_in_Great_Britain\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/1723_in_Great_Britain\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/1724_in_Great_Britain\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/1725_in_Great_Britain\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/1726_in_Great_Britain\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/1727_in_Great_Britain\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/1728_in_Great_Britain\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/1729_in_Great_Britain\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/1730_in_Great_Britain\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/1731_in_Great_Britain\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/1732_in_Great_Britain\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/1733_in_Great_Britain\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/1734_in_Great_Britain\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/1735_in_Great_Britain\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/1736_in_Great_Britain\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/1737_in_Great_Britain\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/1738_in_Great_Britain\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/1739_in_Great_Britain\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/1740_in_Great_Britain\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/1741_in_Great_Britain\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/1742_in_Great_Britain\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/1743_in_Great_Britain\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/1744_in_Great_Britain\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/1745_in_Great_Britain\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/1746_in_Great_Britain\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/1747_in_Great_Britain\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/1748_in_Great_Britain\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/1749_in_Great_Britain\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/1750_in_Great_Britain\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/1751_in_Great_Britain\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/1752_in_Great_Britain\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/1753_in_Great_Britain\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/1754_in_Great_Britain\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/1755_in_Great_Britain\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/1756_in_Great_Britain\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/1757_in_Great_Britain\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/1758_in_Great_Britain\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/1759_in_Great_Britain\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/1760_in_Great_Britain\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0\n", + "PAGE HAS NO LINKS: /wiki/1761_in_Great_Britain\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/1762_in_Great_Britain\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/1763_in_Great_Britain\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/1764_in_Great_Britain\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/1765_in_Great_Britain\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/1766_in_Great_Britain\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/1767_in_Great_Britain\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/1768_in_Great_Britain\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/1769_in_Great_Britain\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/1770_in_Great_Britain\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/1771_in_Great_Britain\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/1772_in_Great_Britain\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/1773_in_Great_Britain\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/1774_in_Great_Britain\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/1775_in_Great_Britain\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/1776_in_Great_Britain\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/1777_in_Great_Britain\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/1778_in_Great_Britain\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/1779_in_Great_Britain\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/1780_in_Great_Britain\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/1781_in_Great_Britain\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/1782_in_Great_Britain\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/1783_in_Great_Britain\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/1784_in_Great_Britain\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/1785_in_Great_Britain\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/1786_in_Great_Britain\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/1787_in_Great_Britain\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/1788_in_Great_Britain\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/1789_in_Great_Britain\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/1790_in_Great_Britain\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/1791_in_Great_Britain\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/1792_in_Great_Britain\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/1793_in_Great_Britain\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/1794_in_Great_Britain\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/1795_in_Great_Britain\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/1796_in_Great_Britain\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/1797_in_Great_Britain\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/1798_in_Great_Britain\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/1799_in_Great_Britain\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/1800_in_Great_Britain\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Parliament_of_Great_Britain\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Act_of_Parliament\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/List_of_Acts_of_the_Parliament_of_Great_Britain,_1707%E2%80%9319\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/List_of_Acts_of_the_Parliament_of_Great_Britain,_1720%E2%80%9339\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/List_of_Acts_of_the_Parliament_of_Great_Britain,_1740%E2%80%9359\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/List_of_Acts_of_the_Parliament_of_Great_Britain,_1760%E2%80%9379\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/List_of_Acts_of_the_Parliament_of_Great_Britain,_1780%E2%80%931800\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/British_Isles\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Terminology_of_the_British_Isles\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Alba\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Albion\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Prydain\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Britain_(place_name)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/%C3%89ire\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Hibernia\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/British_Isles_naming_dispute\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Politics_in_the_British_Isles\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Sovereign_state\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Republic_of_Ireland\n", + "1830\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Northern_Ireland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Scotland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Wales\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Crown_dependencies\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Guernsey\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Jersey\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Isle_of_Man\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Sark\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Ireland%E2%80%93United_Kingdom_relations\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/British%E2%80%93Irish_Council\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/British%E2%80%93Irish_Intergovernmental_Conference\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/British%E2%80%93Irish_Parliamentary_Assembly\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Common_Travel_Area\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Channel_Islands\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Islands_of_the_Clyde\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Great_Britain\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Hebrides\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Inner_Hebrides\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Outer_Hebrides\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Ireland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Isle_of_Man\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Northern_Isles\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Orkney\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Shetland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Isles_of_Scilly\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/List_of_islands_of_the_Bailiwick_of_Guernsey\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/List_of_islands_of_Ireland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/List_of_islands_of_the_Bailiwick_of_Jersey\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/List_of_islands_of_the_Isle_of_Man\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/List_of_islands_of_the_United_Kingdom\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/List_of_islands_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/List_of_islands_of_Scotland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/List_of_islands_of_Wales\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/History_of_the_British_Isles\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/History_of_Ireland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/History_of_the_Republic_of_Ireland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/History_of_the_United_Kingdom\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/History_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/History_of_Northern_Ireland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/History_of_Scotland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/History_of_Wales\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/History_of_Guernsey\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/History_of_Jersey\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/History_of_the_Isle_of_Man\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Irish_Free_State\n", + "548\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Principality_of_Wales\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Kingdom_of_Ireland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Kingdom_of_Scotland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/United_Kingdom_of_Great_Britain_and_Ireland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Germanic_languages\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/English_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Scots_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Celtic_languages\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Cornish_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Scottish_Gaelic\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Irish_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Manx_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Welsh_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Romance_languages\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Auregnais\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/French_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Guern%C3%A9siais\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/J%C3%A8rriais\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Sercquiais\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/British_Sign_Language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Irish_Sign_Language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Northern_Ireland_Sign_Language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Shelta\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/British_people\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Cornish_people\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/English_people\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Romanichal\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Irish_people\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Irish_Travellers\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Kale_(Welsh_Romanies)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Manx_people\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/People_of_Northern_Ireland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Scottish_people\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Ulster_Scots_people\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Welsh_people\n", + "468\n", + "468\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Main_Page\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Main_Page\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Flag_of_Pennsylvania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Seal_of_Pennsylvania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Glossary_of_vexillology\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Civil_flag\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/State_flag\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Coat_of_Arms_of_Pennsylvania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/List_of_flag_names\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Flags_of_the_Governors_of_the_U.S._States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Governor_of_Pennsylvania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Coat_of_Arms_of_Pennsylvania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Historical_coats_of_arms_of_the_U.S._states\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Armiger\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Crest_(heraldry)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Bald_eagle\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Torse\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Supporter\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Horses\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Motto\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Seal_of_Pennsylvania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Flag\n", + "1\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Bald_eagle\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Flags_of_governors_of_the_U.S._states\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Governor_of_Pennsylvania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/North_American_Vexillological_Association\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/U.S._state\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/US_Territory\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Provinces_of_Canada\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Flags_of_the_Governors_of_the_U.S._States\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0\n", + "PAGE HAS NO LINKS: /wiki/Governor_of_Pennsylvania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Seals_of_the_Governors_of_the_U.S._States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Secretary_of_the_Commonwealth_of_Pennsylvania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Pennsylvania_Auditor_General\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Supreme_Court_of_Pennsylvania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Superior_Court_of_Pennsylvania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Pennsylvania_Department_of_Public_Welfare\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Coat_of_Arms_of_the_U.S._States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Flags_of_the_U.S._states\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/U.S._state\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Flag_of_Alabama\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Flag_of_Alaska\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Flag_of_Arizona\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Flag_of_Arkansas\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Flag_of_California\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Flag_of_Colorado\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Flag_of_Connecticut\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Flag_of_Delaware\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Flag_of_Florida\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Flag_of_Georgia_(U.S._state)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Flag_of_Hawaii\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Flag_of_Idaho\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Flag_of_Illinois\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Flag_of_Indiana\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Flag_of_Iowa\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Flag_of_Kansas\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Flag_of_Kentucky\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Flag_of_Louisiana\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Flag_of_Maine\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Flag_of_Maryland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Flag_of_Massachusetts\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Flag_of_Michigan\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Flag_of_Minnesota\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Flag_of_Mississippi\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Flag_of_Missouri\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Flag_of_Montana\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Flag_of_Nebraska\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Flag_of_Nevada\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Flag_of_New_Hampshire\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Flag_of_New_Jersey\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Flag_of_New_Mexico\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Flag_of_New_York\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Flag_of_North_Carolina\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Flag_of_North_Dakota\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Flag_of_Ohio\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Flag_of_Oklahoma\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Flag_of_Oregon\n", + "69\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Flag_of_Rhode_Island\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Flag_of_South_Carolina\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Flag_of_South_Dakota\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Flag_of_Tennessee\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Flag_of_Texas\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Flag_of_Utah\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Flag_of_Vermont\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Flag_of_Virginia\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Flag_of_Washington\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Flag_of_West_Virginia\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Flag_of_Wisconsin\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Flag_of_Wyoming\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Federal_district\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Flag_of_Washington,_D.C.\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Insular_area\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Flag_of_American_Samoa\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Flag_of_Guam\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Flag_of_the_Northern_Mariana_Islands\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Flag_of_Puerto_Rico\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Flag_of_the_United_States_Virgin_Islands\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/US_Minor_Outlying_Islands\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/History_of_the_flags_of_the_United_States#Uninhabited_territory_flags\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/History_of_the_flags_of_the_United_States#Uninhabited_territory_flags\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Navassa_Island#Unofficial_flag\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Palmyra_Atoll#History\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Flag_of_Wake_Island\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Flags_of_the_Confederate_States_of_America\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Flag_of_Cuba\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Flag_of_the_Philippines\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Flag_of_California#History\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Panama_Canal_Zone\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Flag_of_Texas\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Flag_of_the_Trust_Territory_of_the_Pacific_Islands\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/United_States_Civil_Administration_of_the_Ryukyu_Islands\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Flag_of_the_Green_Mountain_Boys\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Bonnie_Blue_Flag\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Commonwealth_(U.S._state)\n", + "1\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Harrisburg,_Pennsylvania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Index_of_Pennsylvania-related_articles\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/United_States_congressional_delegations_from_Pennsylvania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Government_of_Pennsylvania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/History_of_Pennsylvania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Geography_of_Pennsylvania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Geology_of_Pennsylvania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Law_of_Pennsylvania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/List_of_people_from_Pennsylvania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/List_of_Pennsylvania_state_parks\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/List_of_Pennsylvania_state_symbols\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Agriculture_in_Pennsylvania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Crime_in_Pennsylvania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Pennsylvania#Demographics\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Pennsylvania#Economy\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Education_in_Pennsylvania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Gambling_in_Pennsylvania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Politics_of_Pennsylvania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Sports_in_Pennsylvania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Pennsylvania_metropolitan_areas\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Altoona,_Pennsylvania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Baltimore%E2%80%93Washington_metropolitan_area\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Erie,_Pennsylvania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Harrisburg%E2%80%93Carlisle_metropolitan_statistical_area\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Johnstown,_Pennsylvania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Lancaster,_Pennsylvania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Lebanon,_Pennsylvania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Lehigh_Valley\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/New_York_metropolitan_area\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Delaware_Valley\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Pittsburgh_metropolitan_area\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Berks_County,_Pennsylvania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Wyoming_Valley\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/State_College,_Pennsylvania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Williamsport,_Pennsylvania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/York,_Pennsylvania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Hanover,_Pennsylvania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/List_of_cities_in_Pennsylvania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Allentown,_Pennsylvania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Altoona,_Pennsylvania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Bethlehem,_Pennsylvania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Butler,_Pennsylvania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Chester,_Pennsylvania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/DuBois,_Pennsylvania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Easton,_Pennsylvania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Erie,_Pennsylvania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Greensburg,_Pennsylvania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Harrisburg,_Pennsylvania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Hazleton,_Pennsylvania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Johnstown,_Pennsylvania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Lancaster,_Pennsylvania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Lebanon,_Pennsylvania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/McKeesport,_Pennsylvania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/New_Castle,_Pennsylvania\n", + "1705\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Pittsburgh\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Pottsville,_Pennsylvania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Reading,_Pennsylvania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Scranton,_Pennsylvania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Sunbury,_Pennsylvania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Wilkes-Barre,_Pennsylvania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Williamsport,_Pennsylvania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/York,_Pennsylvania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/List_of_towns_and_boroughs_in_Pennsylvania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Abington_Township,_Montgomery_County,_Pennsylvania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Bensalem_Township,_Pennsylvania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Bethel_Park,_Pennsylvania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Bristol_Township,_Bucks_County,_Pennsylvania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Cheltenham_Township,_Montgomery_County,_Pennsylvania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Cranberry_Township,_Butler_County,_Pennsylvania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Darby,_Pennsylvania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Falls_Township,_Bucks_County,_Pennsylvania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Hampden_Township,_Cumberland_County,_Pennsylvania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Haverford_Township,_Delaware_County,_Pennsylvania\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0\n", + "PAGE HAS NO LINKS: /wiki/Hempfield_Township,_Westmoreland_County,_Pennsylvania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Lower_Macungie_Township,_Lehigh_County,_Pennsylvania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Lower_Makefield_Township,_Bucks_County,_Pennsylvania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Lower_Merion_Township,_Pennsylvania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Lower_Paxton_Township,_Dauphin_County,_Pennsylvania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Manheim_Township,_Lancaster_County,_Pennsylvania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/McCandless,_Pennsylvania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Middletown_Township,_Bucks_County,_Pennsylvania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Millcreek_Township,_Erie_County,_Pennsylvania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Monroeville,_Pennsylvania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Mt._Lebanon_Township,_Allegheny_County,_Pennsylvania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Norristown,_Pennsylvania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Northampton_Township,_Bucks_County,_Pennsylvania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/North_Huntingdon_Township,_Westmoreland_County,_Pennsylvania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Penn_Hills_Township,_Allegheny_County,_Pennsylvania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Radnor_Township,_Delaware_County,_Pennsylvania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Ridley_Township,_Delaware_County,_Pennsylvania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Ross_Township,_Allegheny_County,_Pennsylvania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Shaler_Township,_Allegheny_County,_Pennsylvania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Spring_Township,_Berks_County,_Pennsylvania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/State_College,_Pennsylvania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Tredyffrin_Township,_Chester_County,_Pennsylvania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Upper_Darby_Township,_Delaware_County,_Pennsylvania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Upper_Merion_Township,_Pennsylvania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Warminster_Township,_Bucks_County,_Pennsylvania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/West_Chester,_Pennsylvania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Whitehall_Township,_Lehigh_County,_Pennsylvania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/York_Township,_York_County,_Pennsylvania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Pennsylvania_Regions\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Allegheny_Mountains\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Allegheny_National_Forest\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Allegheny_Plateau\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Atlantic_coastal_plain\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Bald_Eagle_Valley\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Blue_Ridge_Mountains\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/South_Central_Pennsylvania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Coal_Region\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Cumberland_Valley\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Delaware_Valley\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Pennsylvania_Dutch_Country\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Lehigh_Valley\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Endless_Mountains\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Great_Valley_(Pennsylvania)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Mahoning_Valley_(geographic)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Happy_Valley_(Pennsylvania)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Laurel_Highlands\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Lehigh_Valley\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Philadelphia_Main_Line\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Moshannon,_Pennsylvania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Nittany_Valley\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Northeastern_Pennsylvania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Northern_Tier_(Pennsylvania)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Northwestern_Pennsylvania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/North_Penn_Valley\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Pittsburgh_metropolitan_area\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Oil_Region\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Oley_Valley\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Pennsylvania_Highlands_Region\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Penns_Valley\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Philicon_Valley\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Piedmont_(United_States)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Pocono_Mountains\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Ridge-and-Valley_Appalachians\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Lower_Saucon_Township,_Northampton_County,_Pennsylvania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/South_Central_Pennsylvania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Delaware_Valley\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Harrisburg-York-Lebanon,_PA_Combined_Statistical_Area\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Western_Pennsylvania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Harrisburg%E2%80%93Carlisle_metropolitan_statistical_area\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Western_Pennsylvania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Wyoming_Valley\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/List_of_counties_in_Pennsylvania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Adams_County,_Pennsylvania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Allegheny_County,_Pennsylvania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Armstrong_County,_Pennsylvania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Beaver_County,_Pennsylvania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Bedford_County,_Pennsylvania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Berks_County,_Pennsylvania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Blair_County,_Pennsylvania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Bradford_County,_Pennsylvania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Bucks_County,_Pennsylvania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Butler_County,_Pennsylvania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Cambria_County,_Pennsylvania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Cameron_County,_Pennsylvania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Carbon_County,_Pennsylvania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Centre_County,_Pennsylvania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Chester_County,_Pennsylvania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Clarion_County,_Pennsylvania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Clearfield_County,_Pennsylvania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Clinton_County,_Pennsylvania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Columbia_County,_Pennsylvania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Crawford_County,_Pennsylvania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Cumberland_County,_Pennsylvania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Dauphin_County,_Pennsylvania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Delaware_County,_Pennsylvania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Elk_County,_Pennsylvania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Erie_County,_Pennsylvania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Fayette_County,_Pennsylvania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Forest_County,_Pennsylvania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Franklin_County,_Pennsylvania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Fulton_County,_Pennsylvania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Greene_County,_Pennsylvania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Huntingdon_County,_Pennsylvania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Indiana_County,_Pennsylvania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Jefferson_County,_Pennsylvania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Juniata_County,_Pennsylvania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Lackawanna_County,_Pennsylvania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Lancaster_County,_Pennsylvania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Lawrence_County,_Pennsylvania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Lebanon_County,_Pennsylvania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Lehigh_County,_Pennsylvania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Luzerne_County,_Pennsylvania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Lycoming_County,_Pennsylvania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/McKean_County,_Pennsylvania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Mercer_County,_Pennsylvania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Mifflin_County,_Pennsylvania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Monroe_County,_Pennsylvania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Montgomery_County,_Pennsylvania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Montour_County,_Pennsylvania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Northampton_County,_Pennsylvania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Northumberland_County,_Pennsylvania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Perry_County,_Pennsylvania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Philadelphia_County,_Pennsylvania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Pike_County,_Pennsylvania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Potter_County,_Pennsylvania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Schuylkill_County,_Pennsylvania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Snyder_County,_Pennsylvania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Somerset_County,_Pennsylvania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Sullivan_County,_Pennsylvania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Susquehanna_County,_Pennsylvania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Tioga_County,_Pennsylvania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Union_County,_Pennsylvania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Venango_County,_Pennsylvania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Warren_County,_Pennsylvania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Washington_County,_Pennsylvania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Wayne_County,_Pennsylvania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Westmoreland_County,_Pennsylvania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Wyoming_County,_Pennsylvania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/York_County,_Pennsylvania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Flag_and_coat_of_arms_of_Pennsylvania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Flag_and_coat_of_arms_of_Pennsylvania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Main_Page\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Main_Page\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0\n", + "PAGE HAS NO LINKS: /wiki/Coat_of_arms_of_Pennsylvania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Seal_of_Pennsylvania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Glossary_of_vexillology\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Civil_flag\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/State_flag\n", + "5\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/List_of_flag_names\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Flags_of_the_Governors_of_the_U.S._States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Governor_of_Pennsylvania\n", + "8\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Historical_coats_of_arms_of_the_U.S._states\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Armiger\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Crest_(heraldry)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Bald_eagle\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Torse\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Supporter\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Horses\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Motto\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Seal_of_Pennsylvania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Flag\n", + "1\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Bald_eagle\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Flags_of_governors_of_the_U.S._states\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Governor_of_Pennsylvania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/North_American_Vexillological_Association\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/U.S._state\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/US_Territory\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Provinces_of_Canada\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Flags_of_the_Governors_of_the_U.S._States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Governor_of_Pennsylvania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Seals_of_the_Governors_of_the_U.S._States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Secretary_of_the_Commonwealth_of_Pennsylvania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Pennsylvania_Auditor_General\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Supreme_Court_of_Pennsylvania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Superior_Court_of_Pennsylvania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Pennsylvania_Department_of_Public_Welfare\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Coat_of_Arms_of_the_U.S._States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Flags_of_the_U.S._states\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/U.S._state\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Flag_of_Alabama\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Flag_of_Alaska\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Flag_of_Arizona\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Flag_of_Arkansas\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Flag_of_California\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Flag_of_Colorado\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Flag_of_Connecticut\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Flag_of_Delaware\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Flag_of_Florida\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Flag_of_Georgia_(U.S._state)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Flag_of_Hawaii\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Flag_of_Idaho\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Flag_of_Illinois\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Flag_of_Indiana\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Flag_of_Iowa\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Flag_of_Kansas\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Flag_of_Kentucky\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Flag_of_Louisiana\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Flag_of_Maine\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Flag_of_Maryland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Flag_of_Massachusetts\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Flag_of_Michigan\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Flag_of_Minnesota\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Flag_of_Mississippi\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Flag_of_Missouri\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Flag_of_Montana\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Flag_of_Nebraska\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Flag_of_Nevada\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Flag_of_New_Hampshire\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Flag_of_New_Jersey\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Flag_of_New_Mexico\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Flag_of_New_York\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Flag_of_North_Carolina\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Flag_of_North_Dakota\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Flag_of_Ohio\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Flag_of_Oklahoma\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Flag_of_Oregon\n", + "300\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Flag_of_Rhode_Island\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Flag_of_South_Carolina\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Flag_of_South_Dakota\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Flag_of_Tennessee\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Flag_of_Texas\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Flag_of_Utah\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Flag_of_Vermont\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Flag_of_Virginia\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Flag_of_Washington\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Flag_of_West_Virginia\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Flag_of_Wisconsin\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Flag_of_Wyoming\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Federal_district\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Flag_of_Washington,_D.C.\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Insular_area\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Flag_of_American_Samoa\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Flag_of_Guam\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Flag_of_the_Northern_Mariana_Islands\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Flag_of_Puerto_Rico\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Flag_of_the_United_States_Virgin_Islands\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/US_Minor_Outlying_Islands\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/History_of_the_flags_of_the_United_States#Uninhabited_territory_flags\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/History_of_the_flags_of_the_United_States#Uninhabited_territory_flags\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Navassa_Island#Unofficial_flag\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Palmyra_Atoll#History\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Flag_of_Wake_Island\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Flags_of_the_Confederate_States_of_America\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Flag_of_Cuba\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Flag_of_the_Philippines\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Flag_of_California#History\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Panama_Canal_Zone\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Flag_of_Texas\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Flag_of_the_Trust_Territory_of_the_Pacific_Islands\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/United_States_Civil_Administration_of_the_Ryukyu_Islands\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Flag_of_the_Green_Mountain_Boys\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Bonnie_Blue_Flag\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Commonwealth_(U.S._state)\n", + "1\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Harrisburg,_Pennsylvania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Index_of_Pennsylvania-related_articles\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/United_States_congressional_delegations_from_Pennsylvania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Government_of_Pennsylvania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/History_of_Pennsylvania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Geography_of_Pennsylvania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Geology_of_Pennsylvania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Law_of_Pennsylvania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/List_of_people_from_Pennsylvania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/List_of_Pennsylvania_state_parks\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/List_of_Pennsylvania_state_symbols\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Agriculture_in_Pennsylvania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Crime_in_Pennsylvania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Pennsylvania#Demographics\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Pennsylvania#Economy\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Education_in_Pennsylvania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Gambling_in_Pennsylvania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Politics_of_Pennsylvania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Sports_in_Pennsylvania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Pennsylvania_metropolitan_areas\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Altoona,_Pennsylvania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Baltimore%E2%80%93Washington_metropolitan_area\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Erie,_Pennsylvania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Harrisburg%E2%80%93Carlisle_metropolitan_statistical_area\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Johnstown,_Pennsylvania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Lancaster,_Pennsylvania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Lebanon,_Pennsylvania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Lehigh_Valley\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/New_York_metropolitan_area\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Delaware_Valley\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Pittsburgh_metropolitan_area\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Berks_County,_Pennsylvania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Wyoming_Valley\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/State_College,_Pennsylvania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Williamsport,_Pennsylvania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/York,_Pennsylvania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Hanover,_Pennsylvania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/List_of_cities_in_Pennsylvania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Allentown,_Pennsylvania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Altoona,_Pennsylvania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Bethlehem,_Pennsylvania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Butler,_Pennsylvania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Chester,_Pennsylvania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/DuBois,_Pennsylvania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Easton,_Pennsylvania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Erie,_Pennsylvania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Greensburg,_Pennsylvania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Harrisburg,_Pennsylvania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Hazleton,_Pennsylvania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Johnstown,_Pennsylvania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Lancaster,_Pennsylvania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Lebanon,_Pennsylvania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/McKeesport,_Pennsylvania\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0\n", + "PAGE HAS NO LINKS: /wiki/New_Castle,_Pennsylvania\n", + "1705\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Pittsburgh\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Pottsville,_Pennsylvania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Reading,_Pennsylvania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Scranton,_Pennsylvania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Sunbury,_Pennsylvania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Wilkes-Barre,_Pennsylvania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Williamsport,_Pennsylvania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/York,_Pennsylvania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/List_of_towns_and_boroughs_in_Pennsylvania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Abington_Township,_Montgomery_County,_Pennsylvania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Bensalem_Township,_Pennsylvania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Bethel_Park,_Pennsylvania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Bristol_Township,_Bucks_County,_Pennsylvania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Cheltenham_Township,_Montgomery_County,_Pennsylvania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Cranberry_Township,_Butler_County,_Pennsylvania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Darby,_Pennsylvania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Falls_Township,_Bucks_County,_Pennsylvania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Hampden_Township,_Cumberland_County,_Pennsylvania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Haverford_Township,_Delaware_County,_Pennsylvania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Hempfield_Township,_Westmoreland_County,_Pennsylvania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Lower_Macungie_Township,_Lehigh_County,_Pennsylvania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Lower_Makefield_Township,_Bucks_County,_Pennsylvania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Lower_Merion_Township,_Pennsylvania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Lower_Paxton_Township,_Dauphin_County,_Pennsylvania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Manheim_Township,_Lancaster_County,_Pennsylvania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/McCandless,_Pennsylvania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Middletown_Township,_Bucks_County,_Pennsylvania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Millcreek_Township,_Erie_County,_Pennsylvania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Monroeville,_Pennsylvania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Mt._Lebanon_Township,_Allegheny_County,_Pennsylvania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Norristown,_Pennsylvania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Northampton_Township,_Bucks_County,_Pennsylvania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/North_Huntingdon_Township,_Westmoreland_County,_Pennsylvania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Penn_Hills_Township,_Allegheny_County,_Pennsylvania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Radnor_Township,_Delaware_County,_Pennsylvania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Ridley_Township,_Delaware_County,_Pennsylvania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Ross_Township,_Allegheny_County,_Pennsylvania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Shaler_Township,_Allegheny_County,_Pennsylvania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Spring_Township,_Berks_County,_Pennsylvania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/State_College,_Pennsylvania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Tredyffrin_Township,_Chester_County,_Pennsylvania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Upper_Darby_Township,_Delaware_County,_Pennsylvania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Upper_Merion_Township,_Pennsylvania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Warminster_Township,_Bucks_County,_Pennsylvania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/West_Chester,_Pennsylvania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Whitehall_Township,_Lehigh_County,_Pennsylvania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/York_Township,_York_County,_Pennsylvania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Pennsylvania_Regions\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Allegheny_Mountains\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Allegheny_National_Forest\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Allegheny_Plateau\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Atlantic_coastal_plain\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Bald_Eagle_Valley\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Blue_Ridge_Mountains\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/South_Central_Pennsylvania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Coal_Region\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Cumberland_Valley\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Delaware_Valley\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Pennsylvania_Dutch_Country\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Lehigh_Valley\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Endless_Mountains\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Great_Valley_(Pennsylvania)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Mahoning_Valley_(geographic)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Happy_Valley_(Pennsylvania)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Laurel_Highlands\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Lehigh_Valley\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Philadelphia_Main_Line\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Moshannon,_Pennsylvania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Nittany_Valley\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Northeastern_Pennsylvania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Northern_Tier_(Pennsylvania)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Northwestern_Pennsylvania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/North_Penn_Valley\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Pittsburgh_metropolitan_area\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Oil_Region\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Oley_Valley\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Pennsylvania_Highlands_Region\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Penns_Valley\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Philicon_Valley\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Piedmont_(United_States)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Pocono_Mountains\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Ridge-and-Valley_Appalachians\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Lower_Saucon_Township,_Northampton_County,_Pennsylvania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/South_Central_Pennsylvania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Delaware_Valley\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Harrisburg-York-Lebanon,_PA_Combined_Statistical_Area\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Western_Pennsylvania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Harrisburg%E2%80%93Carlisle_metropolitan_statistical_area\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Western_Pennsylvania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Wyoming_Valley\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/List_of_counties_in_Pennsylvania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Adams_County,_Pennsylvania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Allegheny_County,_Pennsylvania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Armstrong_County,_Pennsylvania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Beaver_County,_Pennsylvania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Bedford_County,_Pennsylvania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Berks_County,_Pennsylvania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Blair_County,_Pennsylvania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Bradford_County,_Pennsylvania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Bucks_County,_Pennsylvania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Butler_County,_Pennsylvania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Cambria_County,_Pennsylvania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Cameron_County,_Pennsylvania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Carbon_County,_Pennsylvania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Centre_County,_Pennsylvania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Chester_County,_Pennsylvania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Clarion_County,_Pennsylvania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Clearfield_County,_Pennsylvania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Clinton_County,_Pennsylvania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Columbia_County,_Pennsylvania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Crawford_County,_Pennsylvania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Cumberland_County,_Pennsylvania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Dauphin_County,_Pennsylvania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Delaware_County,_Pennsylvania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Elk_County,_Pennsylvania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Erie_County,_Pennsylvania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Fayette_County,_Pennsylvania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Forest_County,_Pennsylvania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Franklin_County,_Pennsylvania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Fulton_County,_Pennsylvania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Greene_County,_Pennsylvania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Huntingdon_County,_Pennsylvania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Indiana_County,_Pennsylvania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Jefferson_County,_Pennsylvania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Juniata_County,_Pennsylvania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Lackawanna_County,_Pennsylvania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Lancaster_County,_Pennsylvania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Lawrence_County,_Pennsylvania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Lebanon_County,_Pennsylvania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Lehigh_County,_Pennsylvania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Luzerne_County,_Pennsylvania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Lycoming_County,_Pennsylvania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/McKean_County,_Pennsylvania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Mercer_County,_Pennsylvania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Mifflin_County,_Pennsylvania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Monroe_County,_Pennsylvania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Montgomery_County,_Pennsylvania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Montour_County,_Pennsylvania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Northampton_County,_Pennsylvania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Northumberland_County,_Pennsylvania\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0\n", + "PAGE HAS NO LINKS: /wiki/Perry_County,_Pennsylvania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Philadelphia_County,_Pennsylvania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Pike_County,_Pennsylvania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Potter_County,_Pennsylvania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Schuylkill_County,_Pennsylvania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Snyder_County,_Pennsylvania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Somerset_County,_Pennsylvania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Sullivan_County,_Pennsylvania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Susquehanna_County,_Pennsylvania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Tioga_County,_Pennsylvania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Union_County,_Pennsylvania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Venango_County,_Pennsylvania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Warren_County,_Pennsylvania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Washington_County,_Pennsylvania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Wayne_County,_Pennsylvania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Westmoreland_County,_Pennsylvania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Wyoming_County,_Pennsylvania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/York_County,_Pennsylvania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Flag_and_coat_of_arms_of_Pennsylvania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Flag_and_coat_of_arms_of_Pennsylvania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Main_Page\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Main_Page\n", + "1705\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/English_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/English_people\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/English-speaking_world\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Second_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Foreign_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Language_family\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Indo-European_languages\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Germanic_languages\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/West_Germanic_languages\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Anglo-Frisian_languages\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Anglic_languages\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Old_English\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Middle_English\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Early_Modern_English\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Writing_system\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Latin_script\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/English_alphabet\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/English_Braille\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Unified_English_Braille\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Manually_coded_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Manually_coded_English\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/List_of_territorial_entities_where_English_is_an_official_language#Sovereign_states\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/List_of_territorial_entities_where_English_is_an_official_language#Non-sovereign_entities\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/United_Nations\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/European_Union\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Commonwealth_of_Nations\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Council_of_Europe\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/International_Criminal_Court\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/International_Olympic_Committee\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/International_Organization_for_Standardization\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/NATO\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/WTO\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/North_American_Free_Trade_Agreement\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Organization_of_American_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Organisation_for_Economic_Co-operation_and_Development\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Organisation_of_Islamic_Cooperation\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/OPEC\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/GUAM_Organization_for_Democracy_and_Economic_Development\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Pacific_Islands_Forum\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/UKUSA_Agreement\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Association_of_Southeast_Asian_Nations\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/ASEAN_Economic_Community\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/South_Asian_Association_for_Regional_Cooperation\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Caribbean_Community\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Turkic_Council\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Economic_Cooperation_Organization\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/ISO_639-1\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/ISO_639-2\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/ISO_639-3\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Glottolog\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Linguasphere_Observatory\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/International_Phonetic_Alphabet\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/International_Phonetic_Alphabet#Fonts\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Replacement_character\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Unicode\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/West_Germanic_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Anglo-Saxon_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/List_of_languages_by_number_of_native_speakers\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Standard_Chinese\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Spanish_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Germanic_languages\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Angles\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Angeln\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Baltic_Sea\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Frisian_languages\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Low_German\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/German_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Dutch_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Afrikaans\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/French_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Romance_languages\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Old_Norse\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/North_Germanic_languages\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Latin_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Anglo-Frisian_languages\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Great_Britain\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Anglo-Saxons\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Old_English\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Middle_English\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Norman_conquest_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Early_Modern_English\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Printing_press\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/King_James_Bible\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Great_Vowel_Shift\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/British_Empire\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Jenna\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Warwick\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Superpower\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/World_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Second_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Official_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/List_of_territorial_entities_where_English_is_an_official_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Caribbean\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Official_languages_of_the_United_Nations\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Languages_of_the_European_Union\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Vocabulary\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/English_grammar\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Inflection\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Morphology_(linguistics)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Word_order\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Analytic_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Inflection\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/SVO_word_order\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Syntax\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Modern_English\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Auxiliary_verb\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Word_order\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Grammatical_tense\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Grammatical_aspect\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Grammatical_mood\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Passive_voice\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Interrogative\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Negation\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/English_accents\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/English_dialects\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Phonetics\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Phonology\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Vocabulary\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Grammar\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/English_spelling_differences\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Mutual_intelligibility\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Old_West_Norse\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Old_East_Norse\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Old_Gutnish\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Old_English\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/West_Germanic_languages\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Old_Frisian\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Old_Saxon\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Old_Dutch\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Old_High_German\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Crimean_Gothic\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/East_Germanic\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Anglo-Frisian_languages\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Scots_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/West_Frisian_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/North_Frisian_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Saterland_Frisian_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Phylogenetic_tree\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Indo-European_languages\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/West_Germanic_languages\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Germanic_languages\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Old_English\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Anglo-Saxon_settlement_of_Britain\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Anglo-Frisian_languages\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Frisian_languages\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Low_German\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Ingvaeonic_languages\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Middle_English\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0\n", + "PAGE HAS NO LINKS: /wiki/English_languages\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Scots_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Fingallian\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Forth_and_Bargy_dialect\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Icelandic_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Faroese_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/British_Isles\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Mutual_intelligibility\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Lexis_(linguistics)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Syntax\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Phonology\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Old_Norse\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Norman_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Clades\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Mixed_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Creole_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Middle_English_creole_hypothesis\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Language_change\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Dutch_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/German_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Swedish_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Proto-Germanic\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Modal_verb\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Germanic_strong_verb\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Germanic_weak_verb\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Proto-Indo-European_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Grimm%27s_law\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Verner%27s_law\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Palatalization_(sound_change)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Phonological_history_of_Old_English#Palatalization\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Word_stem\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Russian_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Sanskrit\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/History_of_English\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Old_English\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Beowulf\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Manuscript\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Half-uncial\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Ingvaeonic_languages\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Frisia\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Lower_Saxony\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Jutland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Sweden\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Angles\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Saxons\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Jutes\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Anglo-Saxon_settlement_of_Britain\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/End_of_Roman_rule_in_Britain\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Celtic_language-death_in_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Roman_Britain\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Common_Brittonic\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Celtic_languages\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Latin\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Caesar%27s_invasions_of_Britain\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Mercian_dialect\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Northumbrian_dialect\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Kentish_dialect_(Old_English)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/West_Saxon_dialect\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Alfred_the_Great\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Wessex\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Standard_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Epic_poetry\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Beowulf\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/C%C3%A6dmon%27s_Hymn\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Scots_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Anglo-Saxon_runes\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Old_English_Latin_alphabet\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Half-uncial\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Letterform\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Wynn\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Thorn_(letter)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Eth\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/%C3%86\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/German_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Old_Frisian\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Old_English_grammar\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Inflectional_morphology\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Pragmatic_word_order\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Grammatical_case\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Grammatical_person\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Grammatical_number\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Nominative_case\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Accusative_case\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Genitive_case\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Present_tense\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Middle_English\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/John_of_Trevisa\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Language_contact\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Middle_English\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Norman_conquest_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/William_the_Conqueror\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Old_Norse\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/North_Germanic\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Danelaw\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Scots_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Northern_England_English\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/The_Midlands\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Kingdom_of_Lindsey\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Norman_conquest_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Old_Norman\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Romance_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/French_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Anglo-Norman_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Loanwords\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Possession_(linguistics)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Wycliffe_Bible\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Geoffrey_Chaucer\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/The_Canterbury_Tales\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Thomas_Malory\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Le_Morte_d%27Arthur\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Early_Modern_English\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Great_Vowel_Shift\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Great_Vowel_Shift\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Chain_shift\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Mid_vowel\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Open_vowel\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Raising_(phonology)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Close_vowel\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Vowel_breaking\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Diphthong\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Henry_V_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Court_of_Chancery\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Westminster\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Writ\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Chancery_Standard\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/East_Midlands_English\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/William_Caxton\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Printing_press\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/William_Shakespeare\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/King_James_Version\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/James_VI_and_I\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Consonant_cluster\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/British_Empire\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Indigenous_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Superpower\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/BBC\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Samuel_Johnson\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/A_Dictionary_of_the_English_Language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Noah_Webster\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Webster%27s_Dictionary\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Do-support\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/List_of_territorial_entities_where_English_is_an_official_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/List_of_countries_by_English-speaking_population\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/English-speaking_world\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/First_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Standard_Chinese\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Spanish_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Lingua_franca\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Braj_Kachru\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Three_Circles_of_English\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/United_States\n", + "1830\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Australia\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Republic_of_Ireland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Second_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/David_Crystal\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Philippines\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Jamaica\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Nigeria\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Dialect_continuum\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/English-based_creole_languages\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Netherlands\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Pluricentric_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/George_Bernard_Shaw\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Accent_(sociolinguistics)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Standard_written_English\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Koin%C3%A9_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Foreign_language_influences_in_English\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Study_of_global_communication\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Indian_English\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Lingua_franca\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/World_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Controlled_natural_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Seaspeak\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/International_auxiliary_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/French_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Treaty_of_Versailles\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/United_Nations\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/World_War_II\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/International_Olympic_Committee\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/European_Free_Trade_Association\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Association_of_Southeast_Asian_Nations\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Asia-Pacific_Economic_Cooperation\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Foreign_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Malta\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0\n", + "PAGE HAS NO LINKS: /wiki/International_auxiliary_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Globish_(Nerriere)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Simple_English_Wikipedia\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Language_death\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Linguistic_imperialism\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Koin%C3%A9_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Constructed_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/International_auxiliary_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Esperanto\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/English_phonology\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Phonetics\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Phonology\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Phoneme\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Standard_language\n", + "1830\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Received_Pronunciation\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/General_American\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/English_language#Dialects,_accents,_and_varieties\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/International_Phonetic_Alphabet\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/English_phonology#Consonants\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Labial_consonant\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Interdental_consonant\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Alveolar_consonant\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Postalveolar_consonant\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Palatal_consonant\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Velar_consonant\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Glottal_consonant\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Nasal_consonant\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Bilabial_nasal\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Dental,_alveolar_and_postalveolar_nasals#Alveolar\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Velar_nasal\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Stop_consonant\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Voiceless_bilabial_stop\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Voiced_bilabial_stop\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Voiceless_dental_and_alveolar_stops#Alveolar\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Voiced_dental_and_alveolar_stops#Alveolar\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Voiceless_velar_stop\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Voiced_velar_stop\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Affricate_consonant\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Voiceless_palato-alveolar_affricate\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Voiced_palato-alveolar_affricate\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Fricative_consonant\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Voiceless_labiodental_fricative\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Voiced_labiodental_fricative\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Voiceless_dental_fricative\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Voiced_dental_fricative\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Voiceless_alveolar_fricative#Voiceless_alveolar_sibilant\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Voiced_alveolar_fricative#Voiced_alveolar_sibilant\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Voiceless_postalveolar_fricative\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Voiced_postalveolar_fricative\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Voiceless_glottal_fricative\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Approximant_consonant\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Alveolar_lateral_approximant\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Alveolar_approximant\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Palatal_approximant#Palatal\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Voiced_labio-velar_approximant\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Obstruent\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Fortis_and_lenis\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Voicelessness\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Voice_(phonetics)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Aspirated_consonant\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Allophone\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Velarized_alveolar_lateral_approximant\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Sonorant\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/English_phonology#Vowels\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Phoneme\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Lexical_set\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Received_Pronunciation\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/General_American\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Close_front_unrounded_vowel\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Near-close_near-front_unrounded_vowel\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Close-mid_front_unrounded_vowel\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Near-open_front_unrounded_vowel\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Received_Pronunciation\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/General_American\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Close_central_unrounded_vowel\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Mid_central_vowel#Mid_central_unrounded_vowel\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Open-mid_central_unrounded_vowel\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Open-mid_back_unrounded_vowel\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Received_Pronunciation\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/General_American\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Close_back_rounded_vowel\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Near-close_near-back_rounded_vowel\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Open-mid_back_rounded_vowel\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Open_back_rounded_vowel\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Open_back_unrounded_vowel\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Received_Pronunciation\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/General_American\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Vowel_length\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Triangular_colon\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Clipping_(phonetics)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Syllable\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Vowel_reduction\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Weak-vowel_merger\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Stress_and_vowel_reduction_in_English\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Intonation_in_English\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Stress_(linguistics)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Syllable\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Vowel_reduction\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Weak_and_strong_forms_in_English\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Phoneme\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Vowel_reduction\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Rhythm\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Stress-timed\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Vowel_quality\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Vowel_reduction\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/American_English\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Canadian_English\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Hiberno-English\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Ulster_English\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Scottish_English\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/English_language_in_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Welsh_English\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/South_African_English\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Australian_English\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/New_Zealand_English\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Father-bother_merger\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Unrounded\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Cot-caught_merger\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Full%E2%80%93fool_merger\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Flapping\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Trap-bath_split\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Rhoticity_in_English\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Fronted_(phonetics)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Cot%E2%80%93caught_merger\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Lot%E2%80%93cloth_split\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Father%E2%80%93bother_merger\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Trap%E2%80%93bath_split\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Canadian_English\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Australian_English\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Hiberno_English\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/New_Zealand_English\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/South_African_English\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Phonological_history_of_English\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Great_Vowel_Shift\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Northern_Cities_Vowel_Shift\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Canadian_Shift\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Phone_(phonetics)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Voicelessness\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Voiceless_labialized_velar_approximant\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Wine%E2%80%93whine_merger\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Cockney\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Th-stopping\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Th-fronting\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/African_American_Vernacular_English\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Estuary_English\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Yod-dropping\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Yod-coalescence\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/General_American\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Received_Pronunciation\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Syllable_coda\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Rhotic_and_non-rhotic_accents\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Phonological_history_of_English_short_A\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Phonological_history_of_English_low_back_vowels\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Lexical_set\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/English_grammar\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Nominative%E2%80%93accusative_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Morphosyntactic_alignment\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Case_system\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Analytic_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Personal_pronouns\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Word_class\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Do-support\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Wh-movement\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Subject%E2%80%93auxiliary_inversion\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Strong_inflection\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Ablaut\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0\n", + "PAGE HAS NO LINKS: /wiki/Proper_nouns\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Count_noun\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Mass_nouns\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Suffix\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Enclitic\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Noun_phrase\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Definiteness\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Agreement_(linguistics)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Comparison_(grammar)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Periphrasis\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Subjective_case\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Nominative_case\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Objective_case\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Accusative_case\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Indirect_object\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Henry_Sweet\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Otto_Jespersen\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Thou\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Southern_American_English\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/African_American_Vernacular_English\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Deixis\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Anaphoric_reference\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Periphrasis\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Phrasal_verb\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/English-language_idioms\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Isolating_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/English_modal_verb\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Word_order\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Auxiliary_verb\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Grammatical_voice\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Grammatical_aspect\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/V2_word_order\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Subject%E2%80%93verb%E2%80%93object\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Indirect_object\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/English_clause_syntax\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Relative_clause\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Do-support\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Subject%E2%80%93auxiliary_inversion\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Subject%E2%80%93auxiliary_inversion\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Syntax\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Modern_English\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Finite_verb\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Copular_verb\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Yes%E2%80%93no_question\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Wh-question\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Subject%E2%80%93auxiliary_inversion\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Do-support\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Interrogative_word\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Wh-movement\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Grammatical_object\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Prepositional_phrases\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Who_(pronoun)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Topic_and_comment\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Cleft_sentence\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Dummy_subject\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Focus_(linguistics)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Cohesion_(linguistics)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Anaphora_(linguistics)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Discourse_marker\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Stance_(linguistics)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Synonym\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Meaning_(linguistics)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Obsolete_word\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Species_name\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Scientific_terminology\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Prefix\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Suffix\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Jargon\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Acronym\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Lexicography\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Corpus_linguistics\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Neologisms\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/International_scientific_vocabulary\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Webster%27s_Third_New_International_Dictionary\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Lists_of_English_loanwords_by_country_or_language_of_origin\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Northern_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Calques\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Register_(sociolinguistics)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Calque\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/English_alphabet\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/English_braille\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/English_orthography\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Latin_alphabet\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Anglo-Saxon_runes\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Latin_script\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/A\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/B\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/C\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/D\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/E\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/F\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/G\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/H\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/I\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/J\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/K\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/L\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/M\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/N\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/O\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/P\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Q\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/R\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/S\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/T\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/U\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/V\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/W\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/X\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Y\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Z\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Letter_case\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Orthography\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Sound_change\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/American_and_British_English_spelling_differences\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Digraph_(orthography)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Soft_c\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Hard_and_soft_G\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Vowel_length#Short_and_long_vowels_in_English\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Silent_e\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Punctuation\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/List_of_dialects_of_the_English_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/World_Englishes\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Regional_accents_of_English\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/List_of_dialects_of_the_English_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Regional_accents_of_English\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/British_English\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/North_American_English\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Australian_English\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/New_Zealand_English\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/English_language_in_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Northern_England_English\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Scots_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Scottish_English\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Welsh_English\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Estuary_English\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Ulster_English\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Hiberno-English\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Received_Pronunciation\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/South_East_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Survey_of_English_Dialects\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/H-dropping\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Essex\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Russell_Brand\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Renfrewshire\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Received_pronunciation\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Standard_English\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/English_language_in_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/West_Country_dialects\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Northern_England_English\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Geordie\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Liverpool\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Scouse\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Manchester\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Manchester_dialect\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Cockney\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Linking_and_intrusive_R\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/T-glottalization\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Scots_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/History_of_the_Scots_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Scots_Gaelic\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Scottish_English\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Ireland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Norman_invasion_of_Ireland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/County_Wexford\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Dublin\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Forth_and_Bargy_dialect\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Fingallian\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Hiberno-English\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Ulster_English\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/American_English\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/General_American\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/African_American_Vernacular_English\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Southern_American_English\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Canadian_English\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Arkansas\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Bill_Clinton\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Rhoticity_in_English\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/North_American_English\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/The_Atlas_of_North_American_English\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/African_American_Vernacular_English\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/African_Americans\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/General_American\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Midland_American_English\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Western_American_English\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Rhoticity_in_English\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Southern_American_English\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Eastern_New_England_English\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/New_York_City_English\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/African_American_Vernacular_English\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0\n", + "PAGE HAS NO LINKS: /wiki/Canadian_English\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Atlantic_provinces\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Quebec\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Canadian_raising\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Voiceless_consonants\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Southern_American_English\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Monophthong\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Pin%E2%80%93pen_merger\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/African_Americans\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Old_South\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Pidgin\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Creole_English\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Older_Southern_American_English\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Australian_English\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/New_Zealand_English\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Oceania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Australian_English\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/General_Australian\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/New_Zealand_English\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/South_African_English\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/South_Island\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/South_African_English\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Caribbean_English\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Indian_English\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Bantu_peoples\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/South_Africa\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Afrikaans_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Khoe_languages\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Bantu_languages\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/South_African_English\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Leeward_Islands\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Windward_Islands\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Trinidad_and_Tobago\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Barbados\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Cayman_Islands\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Belize\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Jamaican_English\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Jamaican_English_Creole\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Code-switching\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Indian_English\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Breathy_voice\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Glottolog\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/The_Guardian\n", + "494\n", + "494\n", + "494\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/PBS\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Mouton_de_Gruyter\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/John_McWhorter\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Digital_object_identifier\n", + "494\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/ScienceDirect\n", + "494\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Digital_object_identifier\n", + "494\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/ScienceDirect\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Digital_object_identifier\n", + "494\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Digital_object_identifier\n", + "494\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/De_Gruyter\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Digital_object_identifier\n", + "494\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/ScienceDirect\n", + "494\n", + "494\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Digital_object_identifier\n", + "494\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/ScienceDirect\n", + "494\n", + "494\n", + "494\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Digital_object_identifier\n", + "494\n", + "494\n", + "494\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Joseph_Bosworth\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/An_Anglo-Saxon_Dictionary\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Charles_University\n", + "494\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Digital_object_identifier\n", + "494\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/ScienceDirect\n", + "494\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Alistair_Campbell_(academic)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Oxford\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Oxford_University_Press\n", + "494\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Digital_object_identifier\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/ScienceDirect\n", + "494\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/R._G._Collingwood\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Library_of_Congress_Control_Number\n", + "494\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Digital_object_identifier\n", + "494\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/ScienceDirect\n", + "494\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/De_Gruyter\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/David_Crystal\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Cambridge_University_Press\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Digital_object_identifier\n", + "494\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/David_Crystal\n", + "494\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/David_Crystal\n", + "494\n", + "494\n", + "494\n", + "494\n", + "494\n", + "494\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Digital_object_identifier\n", + "494\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/ScienceDirect\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Digital_object_identifier\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Digital_object_identifier\n", + "494\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Digital_object_identifier\n", + "494\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/ScienceDirect\n", + "494\n", + "494\n", + "494\n", + "494\n", + "494\n", + "494\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Aeon_(digital_magazine)\n", + "494\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Digital_object_identifier\n", + "494\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/ScienceDirect\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/David_Graddol\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/David_Graddol\n", + "494\n", + "494\n", + "494\n", + "494\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Digital_object_identifier\n", + "494\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Digital_object_identifier\n", + "494\n", + "494\n", + "494\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/International_Phonetic_Association\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Cambridge_University_Press\n", + "494\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Digital_object_identifier\n", + "494\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/ScienceDirect\n", + "494\n", + "494\n", + "494\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/William_Labov\n", + "494\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/De_Gruyter\n", + "494\n", + "494\n", + "494\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Digital_object_identifier\n", + "494\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/ScienceDirect\n", + "494\n", + "494\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Digital_object_identifier\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Digital_object_identifier\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/International_Standard_Serial_Number\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/De_Gruyter\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Digital_object_identifier\n", + "494\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/ScienceDirect\n", + "494\n", + "494\n", + "494\n", + "494\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Diane_McGuinness\n", + "494\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Digital_object_identifier\n", + "494\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/ScienceDirect\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Digital_object_identifier\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/International_Standard_Serial_Number\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/ScienceDirect\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Digital_object_identifier\n", + "494\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/ScienceDirect\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Digital_object_identifier\n", + "494\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/ScienceDirect\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Paul_Nation\n", + "494\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Digital_object_identifier\n", + "494\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/ScienceDirect\n", + "494\n", + "494\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Digital_object_identifier\n", + "494\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/ScienceDirect\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Digital_object_identifier\n", + "494\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/ScienceDirect\n", + "494\n", + "494\n", + "494\n", + "494\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Digital_object_identifier\n", + "494\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Digital_object_identifier\n", + "494\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/ScienceDirect\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Digital_object_identifier\n", + "494\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/ScienceDirect\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Digital_object_identifier\n", + "494\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/ScienceDirect\n", + "494\n", + "494\n", + "494\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Digital_object_identifier\n", + "494\n", + "494\n", + "494\n", + "494\n", + "494\n", + "494\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Digital_object_identifier\n", + "494\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/ScienceDirect\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/De_Gruyter\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Sarah_Thomason\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Terrence_Kaufman\n", + "494\n", + "494\n", + "494\n", + "494\n", + "494\n", + "494\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Digital_object_identifier\n", + "494\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/ScienceDirect\n", + "494\n", + "494\n", + "494\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Digital_object_identifier\n", + "494\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Digital_object_identifier\n", + "494\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/ScienceDirect\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Digital_object_identifier\n", + "494\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/ScienceDirect\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/English_grammar\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/English_phonology\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Stress_and_vowel_reduction_in_English\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/English_orthography\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/English_alphabet\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/English_Braille\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/List_of_dialects_of_the_English_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/History_of_the_English_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Phonological_history_of_English\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/History_of_English\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Proto-Indo-European_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Proto-Germanic_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/West_Germanic_languages\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Anglo-Frisian_languages\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Old_English\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Anglo-Norman_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Middle_English\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Early_Modern_English\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Modern_English\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Phonological_history_of_English\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Phonological_history_of_Old_English\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Phonological_history_of_English_vowels\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Great_Vowel_Shift\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Pronunciation_of_English_%E2%9F%A8a%E2%9F%A9\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0\n", + "PAGE HAS NO LINKS: /wiki/Phonological_history_of_English_low_back_vowels\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Phonological_history_of_English_high_back_vowels\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Phonological_history_of_English_high_front_vowels\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Phonological_history_of_English_diphthongs\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/English-language_vowel_changes_before_historic_/l/\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/English-language_vowel_changes_before_historic_/r/\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Trisyllabic_laxing\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Northern_Cities_Vowel_Shift\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Phonological_history_of_English_consonants\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Rhoticity_in_English\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Flapping\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/T-glottalization\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/L-vocalization\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Phonological_history_of_English_consonant_clusters\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/H-dropping\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Pronunciation_of_English_%E2%9F%A8wh%E2%9F%A9\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Pronunciation_of_English_%E2%9F%A8th%E2%9F%A9\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Th-fronting\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Eth\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Thorn_(letter)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Th-stopping\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/List_of_dialects_of_the_English_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Regional_accents_of_English\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Modern_English\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/English_language_in_Europe\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/British_English\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/English_language_in_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Barrovian\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Black_Country_dialect\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Brummie\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Culture_of_Bristol#Dialect\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Cheshire_dialect\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Cockney\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Mockney\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Anglo-Cornish\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Cumbrian_dialect\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/East_Anglian_English\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/East_Midlands_English\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Essex_dialect\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Estuary_English\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Geordie\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Kentish_dialect\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Lancashire_dialect_and_accent\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Mackem\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Manchester_dialect\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Multicultural_London_English\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Norfolk_dialect\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/English_language_in_northern_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Pitmatic\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Potteries_dialect\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Received_Pronunciation\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Scouse\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/English_language_in_southern_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Suffolk_dialect\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Sussex_dialect\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/West_Country_dialects\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Mummerset\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/West_Midlands_English\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Yorkshire_dialect\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/East_Anglian_English\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Essex_dialect\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Norfolk_dialect\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Suffolk_dialect\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/East_Midlands_English\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/English_language_in_northern_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Cheshire_dialect\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Cumbrian_dialect\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Barrovian\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Lancashire_dialect_and_accent\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Manchester_dialect\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Scouse\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Mackem\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Geordie\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Yorkshire_dialect\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/English_language_in_southern_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Kentish_dialect\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Estuary_English\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Multicultural_London_English\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Sussex_dialect\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/West_Country_dialects\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Culture_of_Bristol#Dialect\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Anglo-Cornish\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Dorset_dialect\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/West_Midlands_English\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Black_Country_dialect\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Brummie\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Potteries_dialect\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Ulster_English\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Mid_Ulster_English\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Ulster_Scots_dialects\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Scottish_English\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Glasgow_patter\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Highland_English\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Welsh_English\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Cardiff_English\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Gower_dialect\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Port_Talbot_English\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Hiberno-English\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Hiberno-English#Local_Dublin_English\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Dublin_4#Accent\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Hiberno-English#West_and_South-West_Irish_English\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Cork_(city)#Accent\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Hiberno-English#Supraregional_southern_Irish_English\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Ulster_English\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Channel_Island_English\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Channel_Island_English#Alderney_English\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Channel_Island_English#Guernsey_English\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Channel_Island_English#Jersey_English\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Gibraltarian_English\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Manx_English\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Languages_of_Malta#English\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/North_American_English\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/South_American_English\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/American_English\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/African-American_English\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Appalachian_English\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Boston_accent\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Cajun_English\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/California_English\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Inland_Northern_American_English\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Chicano_English\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Mid-Atlantic_American_English\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Philadelphia_English\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Baltimore_accent\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/General_American\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/High_Tider\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Maine_accent\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Miami_accent\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Midland_American_English\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Inland_Northern_American_English\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/New_England_English\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/New_Mexican_English\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/New_York_City_English\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Older_Southern_American_English\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Pacific_Northwest_English\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Pennsylvania_Dutch_English\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Pittsburgh_English\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Eastern_New_England_English\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Southern_American_English\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Texan_English\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/North-Central_American_English\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Western_American_English\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Western_New_England_English\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Yat_dialect\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Yeshivish\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Yooper_dialect\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Mid-Atlantic_American_English\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Pennsylvania_Dutch_English\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Philadelphia_English\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Baltimore_accent\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Midland_American_English\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Inland_Northern_American_English\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/North-Central_American_English\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Yooper_dialect\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/New_England_English\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Boston_accent\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Maine_accent\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Eastern_New_England_English\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Western_New_England_English\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/New_York_City_English\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/New_York_City_English#New_York_Latino_English\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Northern_American_English\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Southern_American_English\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Cajun_English\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Appalachian_English\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/High_Tider\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Miami_accent\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/New_Orleans_English\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0\n", + "PAGE HAS NO LINKS: /wiki/Texan_English\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Western_American_English\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/California_English\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/New_Mexican_English\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Pacific_Northwest_English\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Western_Pennsylvania_English\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Canadian_English\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Aboriginal_English_in_Canada\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Atlantic_Canadian_English\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Cape_Breton_accent\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Newfoundland_English\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Lunenburg_English\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Standard_Canadian_English\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Ottawa_Valley_English\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Pacific_Northwest_English\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Quebec_English\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Caribbean_English\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Bahamian_English\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/English_in_Barbados\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Saman%C3%A1_English\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Jamaican_English\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/English_language_in_Puerto_Rico\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Trinidadian_English\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Bermudian_English\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Falkland_Islands_English\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Languages_of_Guyana\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Australian_English\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Australian_Aboriginal_English\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Strine\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Variation_in_Australian_English#Broad,_general_and_cultivated_Australian\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/South_Australian_English\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Torres_Strait_English\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Western_Australian_English\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Culture_of_Fiji#Fiji_English\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/New_Zealand_English\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Palauan_English\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Solomon_Islands_English\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Cameroonian_English\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Ghanaian_English\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Kenyan_English\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Liberian_English\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Malawian_English\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Namlish\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Nigerian_English\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Sierra_Leonean_English\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/South_African_English\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Cape_Flats_English\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Ugandan_English\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Bangladeshi_English\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Brunei_English\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Burmese_English\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Hong_Kong_English\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Indian_English\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Malaysian_English\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Nepalese_English\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Pakistani_English\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Philippine_English\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Singlish\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Sri_Lankan_English\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/List_of_Germanic_languages\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/West_Germanic_languages\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Anglo-Frisian_languages\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Anglic_languages\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/List_of_dialects_of_the_English_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Forth_and_Bargy_dialect\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Fingallian\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Scots_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Frisian_languages\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Saterland_Frisian_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Saterland_Frisian_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Wangerooge_Frisian\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Wursten_Frisian\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/North_Frisian_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/S%C3%B6l%27ring\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Fering\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/%C3%96%C3%B6mrang\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/West_Frisian_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Clay_Frisian\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Wood_Frisian\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Low_Franconian_languages\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Standard_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Dutch_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Afrikaans\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/West_Low_Franconian\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Hollandic_dialect\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/West_Flemish\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/French_Flemish\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Zeelandic\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/East_Flemish\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Brabantian\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Surinamese_Dutch\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Jersey_Dutch\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Mohawk_Dutch\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Stadsfries\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Bildts\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/East_Low_Franconian\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Meuse-Rhenish\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Limburgish_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Southeast_Limburgish_dialect\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/South_Guelderish\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Low_Rhenish\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Low_Dietsch_dialects\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Low_German\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/East_Low_German\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Mecklenburgisch-Vorpommersch_dialect\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Brandenburgisch_dialect\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/East_Pomeranian\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Low_Prussian_dialect\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Plautdietsch\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/West_Low_German\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Dutch_Low_Saxon\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Stellingwarfs\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Tweants\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Gronings\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Dr%C3%A8ents\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Achterhooks\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Sallaans\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Urkers\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Veluws\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Northern_Low_Saxon\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/East_Frisian_Low_Saxon\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Schleswigsch\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Holsteinisch\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Hamburgisch\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Westphalian_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Eastphalian_dialect\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/High_German_languages\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/German_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Namibian_German\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Namibian_Black_German\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Brazilian_German\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Yiddish\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/History_of_the_Jews_in_Scotland#\"Scots-Yiddish\"\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Klezmer-loshn\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Sabesdiker_losn\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Lachoudisch\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Yenish_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Rotwelsch\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Lotegorisch\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Central_German\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/West_Central_German\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Central_Franconian\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Ripuarian_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Colognian_dialect\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Moselle_Franconian_dialects\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Luxembourgish_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Transylvanian_Saxon_dialect\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Riograndenser_Hunsr%C3%BCckisch_German\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Rhine_Franconian_dialects\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Lorraine_Franconian\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Palatine_German_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Volga_Germans#Language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Pennsylvania_German\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Hessian_dialects\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Amana_German\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/East_Central_German\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Thuringian_dialect\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Upper_Saxon_German\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Lausitzisch-neum%C3%A4rkisch_dialects\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Berlinerisch_dialect\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Silesian_German\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/High_Prussian_dialect\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Wymysorys_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Prague_German_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/High_Franconian_German\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/South_Franconian_German\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/East_Franconian_German\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Upper_German\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Alemannic_German\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Low_Alemannic_German\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Alsatian_dialect\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Colonia_Tovar_dialect\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/High_Alemannic_German\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Swiss_German\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Highest_Alemannic_German\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Walser_German\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Swabian_German\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Bavarian_language\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0\n", + "PAGE HAS NO LINKS: /wiki/Northern_Bavarian\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Central_Bavarian\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Southern_Bavarian\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/South_Tyrolean_dialect\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Cimbrian_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/M%C3%B2cheno_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Hutterite_German\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Lombardic_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Standard_German\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/German_Standard_German\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Austrian_German\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Swiss_Standard_German\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/North_Germanic_languages\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Norwegian_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Bokm%C3%A5l\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Bergensk\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Kebabnorsk\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Sognam%C3%A5l_dialect\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Tr%C3%B8ndersk\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Valdris\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Vestlandsk\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Vikv%C3%A6rsk\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Nynorsk\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Elfdalian\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Faroese_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Icelandic_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Greenlandic_Norse\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Norn_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Swedish_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/%C3%85land_Swedish\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Estonian_Swedish\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Finland_Swedish\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Jamtlandic_dialects\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Kalix_dialect\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Kiruna_dialect\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Lule%C3%A5_dialects\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Norrland_dialects\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Swedish_dialects_in_Ostrobothnia\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Sm%C3%A5l%C3%A4ndska\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/South_Swedish_dialects\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Scanian_dialect\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Stockholm_dialects\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Rinkeby_Swedish\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Uppl%C3%A4ndska_dialect\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/V%C3%A4stg%C3%B6tska\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Westrobothnian\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Danish_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Bornholmsk_dialect\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/G%C3%B8tudanskt_accent\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Insular_Danish\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Jutlandic_dialect\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/South_Jutlandic\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Perkerdansk\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Dalecarlian_dialects\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/East_Germanic_languages\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Gothic_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Crimean_Gothic\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Burgundians\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Vandalic\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Language_death\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/List_of_languages_by_number_of_native_speakers\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Variety_(linguistics)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Old_English\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Middle_English\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/An_Anglo-Saxon_Dictionary\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Dictionary_of_Old_English\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Middle_English_Dictionary\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Catholicon_Anglicum\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/The_English_Schoole-Master\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/The_New_World_of_English_Words\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/A_New_English_Dictionary\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/An_Universal_Etymological_English_Dictionary\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/A_Dictionary_of_the_English_Language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Webster%27s_Dictionary\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Joseph_Emerson_Worcester\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Charles_Richardson_(lexicographer)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/The_Imperial_Dictionary_of_the_English_Language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Century_Dictionary\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/American_English\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/The_American_Heritage_Dictionary_of_the_English_Language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Dictionary_of_American_English\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Dictionary_of_American_Regional_English\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Encarta_Webster%27s_Dictionary\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/New_Oxford_American_Dictionary\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Oxford_American_Dictionary\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Random_House_Webster%27s_Unabridged_Dictionary\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Webster%27s_New_World_Dictionary\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Webster%27s_Third_New_International_Dictionary\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/World_Book_Dictionary\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/British_English\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Chambers_Dictionary\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Collins_English_Dictionary\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Oxford_English_Dictionary\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Concise_Oxford_English_Dictionary\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Compact_Oxford_English_Dictionary_of_Current_English\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Shorter_Oxford_English_Dictionary\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Historical_Thesaurus_of_the_Oxford_English_Dictionary\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Oxford_Dictionary_of_English\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Penguin_English_Dictionary\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Canadian_English\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Canadian_Oxford_Dictionary\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Dictionary_of_Canadianisms_on_Historical_Principles\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Gage_Canadian_Dictionary\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/List_of_Canadian_English_dictionaries\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Australian_English\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/The_Australian_National_Dictionary\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Australian_Oxford_Dictionary\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Macquarie_Dictionary\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/List_of_online_dictionaries\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Wiktionary\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Collaborative_International_Dictionary_of_English\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Urban_Dictionary\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Wordnik\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Monolingual_learner%27s_dictionary\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/English_as_a_foreign_or_second_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Cambridge_Advanced_Learner%27s_Dictionary\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Collins_COBUILD_Advanced_Dictionary\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Longman_Dictionary_of_Contemporary_English\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Macmillan_English_Dictionary_for_Advanced_Learners\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Merriam-Webster%27s_Advanced_Learner%27s_English_Dictionary\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Oxford_Advanced_Learner%27s_Dictionary\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/English_language#Geographic_distribution\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/English-speaking_world\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/History_of_the_English_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/British_Empire\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/English_in_the_Commonwealth_of_Nations\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Anglosphere\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/List_of_countries_by_English-speaking_population\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/List_of_countries_where_English_is_an_official_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Languages_of_Africa\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Saint_Helena,_Ascension_and_Tristan_da_Cunha\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Anglo-America\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Anguilla\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Antigua_and_Barbuda\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/The_Bahamas\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Barbados\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Belize\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Bermuda\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/British_Virgin_Islands\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Canada\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Cayman_Islands\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Dominica\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Falkland_Islands\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Grenada\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Guyana\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Jamaica\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Montserrat\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Saba\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Saint_Kitts_and_Nevis\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Saint_Lucia\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Saint_Vincent_and_the_Grenadines\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Sint_Eustatius\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Sint_Maarten\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/South_Georgia_and_the_South_Sandwich_Islands\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Trinidad_and_Tobago\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Turks_and_Caicos_Islands\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/United_States_Virgin_Islands\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/English_language_in_Europe\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Guernsey\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Republic_of_Ireland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Isle_of_Man\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Jersey\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "1830\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Languages_of_Oceania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Australia\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/New_Zealand\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Norfolk_Island\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Pitcairn_Islands\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Botswana\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Cameroon\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/The_Gambia\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Ghana\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Kenya\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Lesotho\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Liberia\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Malawi\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Mauritius\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Namibia\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Nigeria\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Rwanda\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Sierra_Leone\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Somaliland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/South_Africa\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/South_Sudan\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Sudan\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Swaziland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Tanzania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Uganda\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Zambia\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Zimbabwe\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Puerto_Rico\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Languages_of_Asia\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Christmas_Island\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Cocos_(Keeling)_Islands\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Hong_Kong_Special_Administrative_Region\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/India\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Pakistan\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Philippines\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Singapore\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Gibraltar\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Malta\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/American_Samoa\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Cook_Islands\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Fiji\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Guam\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Kiribati\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Marshall_Islands\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Federated_States_of_Micronesia\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Nauru\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Niue\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Northern_Mariana_Islands\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Palau\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Papua_New_Guinea\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Samoa\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Solomon_Islands\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Tokelau\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Tuvalu\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Vanuatu\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Dependent_territory\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Integrated_Authority_File\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Syst%C3%A8me_universitaire_de_documentation\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Biblioth%C3%A8que_nationale_de_France\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Historical_Dictionary_of_Switzerland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/National_Diet_Library\n", + "1022\n", + "1022\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Main_Page\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Main_Page\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Pennsylvania_German_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Canada\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Belize\n", + "1\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Ohio\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Indiana\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Ontario\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Pennsylvania_Dutch\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Language_family\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Indo-European_languages\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Germanic_languages\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/West_Germanic_languages\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/High_German_languages\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/West_Central_German\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Rhine_Franconian_dialects\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Palatine_German_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/ISO_639-3\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Glottolog\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Linguasphere_Observatory\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/International_Phonetic_Alphabet\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/International_Phonetic_Alphabet#Fonts\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Replacement_character\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Unicode\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Linguistics\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Variety_(linguistics)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/West_Central_German\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Old_Order_Amish\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Old_Order_Mennonites\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Palatine_German_language\n", + "1\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Pennsylvania_Dutch\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Maryland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Virginia\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/North_Carolina\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Alsace\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Lorraine_(region)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Amish\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Old_Order_Movement\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Dutch_people\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Low_German\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Plautdietsch_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Endonym\n", + "1023\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/West_Germanic_languages\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Ohio\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Indiana\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Midwestern_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Ontario\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Canada\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Hessian_dialects\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Palatine_German_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Lorraine_Franconian\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Palatinate_(region)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Electorate_of_the_Palatinate\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Duchy_of_Baden\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Swabia\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/W%C3%BCrttemberg\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Alsace\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/German_Lorraine\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Switzerland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Rhine_Franconian\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Palatine_German_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Alemannic_German\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Dialect_levelling\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Palatine_German_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Mannheim\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Ludwigshafen\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Low_German\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Plautdietsch_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/High_German\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Plautdietsch_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/German_Mexicans\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Waterloo_County,_Ontario\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Lancaster_County,_Pennsylvania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Palatinate_(region)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Rhein_Neckar_Area\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Palatine_German_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Lord%27s_Prayer\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Book_of_Common_Prayer\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Standard_German\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Book_of_Common_Prayer\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Hiwwe_wie_Driwwe\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Michael_Werner_(publisher)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Kutztown_University\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Hiwwe_wie_Driwwe\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Rhine\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Rhineland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/W%C3%BCrttemberg\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Baden\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Saarland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Switzerland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Alsace\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Alemannic_German\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Swiss_German\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Standard_German\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Standard_German\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Perfect_(grammar)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Standard_German\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/International_Phonetic_Alphabet\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/International_Phonetic_Alphabet\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/International_Phonetic_Alphabet#Fonts\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Specials_(Unicode_block)#Replacement_character\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Unicode\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Middle_High_German\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Lancaster_County,_Pennsylvania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Industrial_Revolution\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Pennsylvania_Dutch_English\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/North_America\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Ohio\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Indiana\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Wisconsin\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Iowa\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Upper_Barton_Creek\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Springfield,_Belize\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Belize\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Noah_Hoover_Mennonite\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Regional_Municipality_of_Waterloo\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Anabaptist\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Old_Order_Amish\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Old_Order_Mennonites\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Old_Beachy_Amish\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Kauffman_Amish_Mennonite\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/John_A._Hostetler\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Kutztown_University\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Amish\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Groffdale_Conference_Mennonite_Church\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Ontario_(Old_Order)_Mennonite_Conference\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Stauffer_Mennonite\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0\n", + "PAGE HAS NO LINKS: /wiki/Kauffman_Amish_Mennonite\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Noah_Hoover_Mennonite\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/David_Martin_Mennonites\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Orthodox_Mennonites\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Reidenbach_Old_Order_Mennonites\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Old_Beachy_Amish\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Bernese_German\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Alsatian_dialect\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Virginia_Old_Order_Mennonite_Conference\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Bernese_German\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Low_Alemannic\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Alsatian_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Weaverland_Old_Order_Mennonite_Conference\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Ohio-Indiana_Mennonite_Conference\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Lutheran\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Schwenkfelder_Church\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Schwarzenau_Brethren\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Ontario_(Old_Order)_Mennonite_Conference\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/David_Martin_Mennonites\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Orthodox_Mennonites\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Markham-Waterloo_Mennonite_Conference\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/US_Census\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Mario_Pei\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/John_Schmid\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/The_Office_(U.S.)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Dwight_Schrute\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Mose_Schrute\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Orange_is_the_New_Black\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/List_of_recurring_Orange_Is_the_New_Black_characters#Leanne_Taylor\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/German-Pennsylvanian_Association\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Hiwwe_wie_Driwwe\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Dr._Michael_Werner\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Pennsylvania_Dutch_English\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Pennsylvania_Dutch_Country\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Hutterite_German\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Languages_in_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Plautdietsch\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Texas_German\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Kurrent\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Solomon_DeLong\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/H._L._Fischer\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Louis_August_Wollenweber\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Thomas_C._Zimmerman\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Assabe_and_Sabina\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/The_Forest_of_Time\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Jersey_Dutch\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Hunsrik_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Ethnologue\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Glottolog\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Global_Anabaptist_Mennonite_Encyclopedia_Online\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Donald_Kraybill\n", + "494\n", + "494\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Wikipedia\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Wikisource\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Collier%27s_Encyclopedia\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/German_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/German_language_in_Namibia\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Namibian_Black_German\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Amana_German\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Alsatian_dialect\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Bernese_German\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Hutterite_German\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Texas_German\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Wisconsin_German\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Alem%C3%A1n_Coloniero_dialect\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Argentinien-schwyzert%C3%BCtsch_dialect\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Belgranodeutsch\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Brazilian_German\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/East_Pomeranian_dialect#Brazilian_Municipalities_that_have_co-official_Pomeranian_dialect\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Paran%C3%A1-Wolga-Deutsch\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Riograndenser_Hunsr%C3%BCckisch\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Barossa_German\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Unserdeutsch_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/List_of_Germanic_languages\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/West_Germanic_languages\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Anglo-Frisian_languages\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Anglic_languages\n", + "1023\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/List_of_dialects_of_the_English_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Forth_and_Bargy_dialect\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Fingallian\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Scots_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Frisian_languages\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Saterland_Frisian_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Saterland_Frisian_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Wangerooge_Frisian\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Wursten_Frisian\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/North_Frisian_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/S%C3%B6l%27ring\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Fering\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/%C3%96%C3%B6mrang\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/West_Frisian_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Clay_Frisian\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Wood_Frisian\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Low_Franconian_languages\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Standard_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Dutch_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Afrikaans\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/West_Low_Franconian\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Hollandic_dialect\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/West_Flemish\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/French_Flemish\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Zeelandic\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/East_Flemish\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Brabantian\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Surinamese_Dutch\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Jersey_Dutch\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Mohawk_Dutch\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Stadsfries\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Bildts\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/East_Low_Franconian\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Meuse-Rhenish\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Limburgish_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Southeast_Limburgish_dialect\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/South_Guelderish\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Low_Rhenish\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Low_Dietsch_dialects\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Low_German\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/East_Low_German\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Mecklenburgisch-Vorpommersch_dialect\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Brandenburgisch_dialect\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/East_Pomeranian\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Low_Prussian_dialect\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Plautdietsch\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/West_Low_German\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Dutch_Low_Saxon\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Stellingwarfs\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Tweants\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Gronings\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Dr%C3%A8ents\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Achterhooks\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Sallaans\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Urkers\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Veluws\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Northern_Low_Saxon\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/East_Frisian_Low_Saxon\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Schleswigsch\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Holsteinisch\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Hamburgisch\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Westphalian_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Eastphalian_dialect\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/High_German_languages\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/German_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Namibian_German\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Namibian_Black_German\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Brazilian_German\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Yiddish\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/History_of_the_Jews_in_Scotland#\"Scots-Yiddish\"\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Klezmer-loshn\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Sabesdiker_losn\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Lachoudisch\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Yenish_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Rotwelsch\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Lotegorisch\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Central_German\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/West_Central_German\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Central_Franconian\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Ripuarian_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Colognian_dialect\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Moselle_Franconian_dialects\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Luxembourgish_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Transylvanian_Saxon_dialect\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Riograndenser_Hunsr%C3%BCckisch_German\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Rhine_Franconian_dialects\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Lorraine_Franconian\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Palatine_German_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Volga_Germans#Language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Pennsylvania_German\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Hessian_dialects\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Amana_German\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/East_Central_German\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Thuringian_dialect\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Upper_Saxon_German\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Lausitzisch-neum%C3%A4rkisch_dialects\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Berlinerisch_dialect\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Silesian_German\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/High_Prussian_dialect\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0\n", + "PAGE HAS NO LINKS: /wiki/Wymysorys_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Prague_German_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/High_Franconian_German\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/South_Franconian_German\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/East_Franconian_German\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Upper_German\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Alemannic_German\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Low_Alemannic_German\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Alsatian_dialect\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Colonia_Tovar_dialect\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/High_Alemannic_German\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Swiss_German\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Highest_Alemannic_German\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Walser_German\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Swabian_German\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Bavarian_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Northern_Bavarian\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Central_Bavarian\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Southern_Bavarian\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/South_Tyrolean_dialect\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Cimbrian_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/M%C3%B2cheno_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Hutterite_German\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Lombardic_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Standard_German\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/German_Standard_German\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Austrian_German\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Swiss_Standard_German\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/North_Germanic_languages\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Norwegian_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Bokm%C3%A5l\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Bergensk\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Kebabnorsk\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Sognam%C3%A5l_dialect\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Tr%C3%B8ndersk\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Valdris\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Vestlandsk\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Vikv%C3%A6rsk\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Nynorsk\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Elfdalian\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Faroese_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Icelandic_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Greenlandic_Norse\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Norn_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Swedish_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/%C3%85land_Swedish\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Estonian_Swedish\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Finland_Swedish\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Jamtlandic_dialects\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Kalix_dialect\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Kiruna_dialect\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Lule%C3%A5_dialects\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Norrland_dialects\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Swedish_dialects_in_Ostrobothnia\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Sm%C3%A5l%C3%A4ndska\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/South_Swedish_dialects\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Scanian_dialect\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Stockholm_dialects\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Rinkeby_Swedish\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Uppl%C3%A4ndska_dialect\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/V%C3%A4stg%C3%B6tska\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Westrobothnian\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Danish_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Bornholmsk_dialect\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/G%C3%B8tudanskt_accent\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Insular_Danish\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Jutlandic_dialect\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/South_Jutlandic\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Perkerdansk\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Dalecarlian_dialects\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/East_Germanic_languages\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Gothic_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Crimean_Gothic\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Burgundians\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Vandalic\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Language_death\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/List_of_languages_by_number_of_native_speakers\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Variety_(linguistics)\n", + "1\n", + "1\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Indo-European_languages\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/American_English\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/African_American_English\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Appalachian_English\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Central_Pennsylvania_dialect\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Inland_Northern_American_English\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Northeast_Pennsylvania_English\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Pennsylvania_Dutch_English\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Philadelphia_dialect\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Pittsburgh_English\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Spanish_language_in_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Italian_language_in_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Indigenous_languages_of_the_Americas\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Delaware_languages\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Munsee_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Unami_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Erie_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Susquehannock_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/American_Sign_Language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Integrated_Authority_File\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Biblioth%C3%A8que_nationale_de_France\n", + "328\n", + "328\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Main_Page\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Main_Page\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Welsh_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Chubut_Province\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Languages_of_the_United_Kingdom\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Wales\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Chubut_Province\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Canada\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/First_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Language_family\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Indo-European_languages\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Celtic_languages\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Insular_Celtic_languages\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Brittonic_languages\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Western_Brittonic_languages\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Common_Brittonic\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Old_Welsh\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Middle_Welsh\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Writing_system\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Latin_script\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Welsh_orthography\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Welsh_Braille\n", + "1830\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/List_of_language_regulators\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Meri_Huws\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Welsh_Language_Commissioner\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Welsh_Government\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/ISO_639-1\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/ISO_639-2\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/ISO_639-3\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Glottolog\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Linguasphere_Observatory\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/International_Phonetic_Alphabet\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/International_Phonetic_Alphabet#Fonts\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Replacement_character\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Unicode\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Culture_of_Wales\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/History_of_Wales\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Welsh_people\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Languages_of_Wales\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Y_Fro_Gymraeg\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/History_of_the_Welsh_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Welsh_placenames\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Welsh_surnames\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Welsh_medium_education\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Welsh_English\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Traditional_Welsh_costume\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Welsh_law\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Commote\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Cantref\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Historic_counties_of_Wales\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Welsh_mythology\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Cuisine_of_Wales\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Bara_brith\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Laver_(seaweed)#Laverbread\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Cawl\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Leek_soup\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Crempog\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Cuisine_of_Gower\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Glamorgan_sausage\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Tatws_Pum_Munud\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Full_breakfast#Full_Welsh_breakfast\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Welsh_cake\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Welsh_rarebit\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/List_of_Welsh_dishes\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/List_of_restaurants_in_Wales\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Welsh_holidays\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Calennig\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Dydd_Santes_Dwynwen\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/G%C5%B5yl_Fair_y_Canhwyllau\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Saint_David%27s_Day\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Calan_Mai\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Gathering_Day\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Calan_Gaeaf\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/G%C5%B5yl_Mabsant\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Welsh_holidays#Gŵyl_San_Steffan\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Eisteddfod\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Religion_in_Wales\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Art_of_Wales\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Literature_of_Wales\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0\n", + "PAGE HAS NO LINKS: /wiki/Welsh-language_literature\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Welsh_literature_in_English\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Medieval_Welsh_literature\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/List_of_Welsh_language_authors\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/List_of_Welsh_language_poets_(6th_century_to_c.1600)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Theatre_of_Wales\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Music_of_Wales\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Media_in_Wales\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Radio_in_Wales\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Television_in_Wales\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Cinema_of_Wales\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Sport_in_Wales\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Bando_(sport)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Boxing_in_Wales\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Cnapan\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Cricket_in_Wales\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Football_in_Wales\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Golf_in_Wales\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Horse_racing_in_Wales\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Welsh_handball\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Rugby_league_in_Wales\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Rugby_union_in_Wales\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/List_of_World_Heritage_Sites_in_Wales\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/National_symbols_of_Wales\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Flag_of_Wales\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Coat_of_arms_of_Wales\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Flag_of_Saint_David\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/List_of_Welsh_flags\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Welsh_Dragon\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Welsh_heraldry\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Celtic_cross\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Celtic_knot\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Brittonic_languages\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Celtic_languages\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Wales\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Y_Wladfa\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Chubut_Province\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Argentina\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/United_Kingdom_Census_2011\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Welsh_Language_Commissioner\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/History_of_the_Welsh_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Bible_translations_into_Welsh\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Llanwnda,_Pembrokeshire\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Celtic_Britons\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Thomas_Charles-Edwards\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Battle_of_Deorham\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Old_Welsh\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Middle_Welsh\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/History_of_the_Welsh_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Exonym_and_endonym\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Anglo-Saxons\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Walhaz\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Celtic_languages#Classification\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Celtic_Britons\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Insular_Celtic_languages\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Great_Britain\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Bronze_Age\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/British_Iron_Age\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Firth_of_Forth\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Early_Middle_Ages\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Kenneth_H._Jackson\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Hen_Ogledd\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Northern_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Scotland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Cynfeirdd\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Hen_Ogledd\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/8th_century\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Tywyn\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Inflection\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Old_Welsh\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Old_Welsh\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Poetry\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Scotland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Anglo-Saxon_settlement_of_Britain\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Gaels\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Aneirin\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Book_of_Taliesin\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Middle_Welsh\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Middle_Welsh\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Mabinogion\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Welsh_law\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Gerald_of_Wales\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Descriptio_Cambriae\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Henry_II_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Pencader,_Carmarthenshire\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Bible_translations_into_Welsh\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/New_Testament\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/William_Salesbury\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/William_Morgan_(Bible_translator)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/United_Kingdom_Census_2001\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/United_Kingdom_Census_2011\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Ceredigion\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Carmarthenshire\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Chubut_Province\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Y_Wladfa\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Discourse\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Code-switching\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Gwynedd\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Conwy_(county_borough)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Denbighshire\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Anglesey\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Pembrokeshire\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Glamorgan\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Powys\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Archenfield\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Elizabeth_I_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Bishop_of_Hereford\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Book_of_Common_Prayer\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/S4C\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Welsh_Language_Board\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Office_for_National_Statistics\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/United_Kingdom_Census_2011\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Liverpool\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Central_(Liverpool_ward)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Greenbank_(ward)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Regions_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Road_signs_in_Wales\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Cardiff_Airport\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Welsh_nationalism\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Plaid_Cymru\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Welsh_Language_Society\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Welsh_Language_Act_1993\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Government_of_Wales_Act_1998\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Welsh_Language_Board\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Statutory_Instrument_(UK)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/National_Assembly_for_Wales\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Alun_Ffred_Jones\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Welsh_Language_Board\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Welsh_Government\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Carwyn_Jones\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Plaid_Cymru\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/National_Assembly_for_Wales\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Hen_Wlad_Fy_Nhadau\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/European_Charter_for_Regional_or_Minority_Languages\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Wrexham_Central_railway_station\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/S4C\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Digital_television_transition\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/BBC\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/BBC_Radio_Cymru\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Y_Cymro\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Y_Byd\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Welsh_Government\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Golwg360\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Welsh_medium_education\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Chartism\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Newport,_Wales\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Rebecca_Riots\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Toll_road\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Turnpikes\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/The_Times\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Ralph_Lingen,_1st_Baron_Lingen\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Anglicanism\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Nonconformist\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Treachery_of_the_Blue_Books\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Nonconformity_in_Wales\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Kenneth_O._Morgan\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Massacre_of_Glencoe\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Jallianwala_Bagh_massacre\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Welsh_Not\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Hugh_Owen_(educator)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Aberystwyth_University\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Aberystwyth\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Ysgol_Syr_Hugh_Owen\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Owen_Morgan_Edwards\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Norah_Isaac\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Ysgol_Glan_Clwyd\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Rhyl\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/National_Curriculum_(England,_Wales_and_Northern_Ireland)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Local_education_authority\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Medium_of_instruction\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Coleg_Cymraeg_Cenedlaethol\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/List_of_Celtic-language_media\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Windows_7\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Microsoft_Windows_XP\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Windows_Vista\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Microsoft_Office\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/LibreOffice\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/OpenOffice.org\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Mozilla_Firefox\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Linux_distribution\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Blog\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Facebook\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0\n", + "PAGE HAS NO LINKS: /wiki/Welsh_Language_Board\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/SMS\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Predictive_text\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/National_Eisteddfod_of_Wales\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Samsung\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Orange_(UK)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Android_(operating_system)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Google_Keyboard\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/IOS\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Cryptography\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Navajo_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Code_talker\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Military_of_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/World_War_II\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Royal_Welch_Fusiliers\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Bosnia_and_Herzegovina\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Patagonia\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Falklands_War\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Council_of_the_European_Union\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Alun_Ffred_Jones\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Contents_of_the_Voyager_Golden_Record#Greetings\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Voyager_Golden_Record\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Voyager_program\n", + "1023\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Welsh_phonology\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/International_Phonetic_Alphabet\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/International_Phonetic_Alphabet\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/International_Phonetic_Alphabet#Fonts\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Specials_(Unicode_block)#Replacement_character\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Unicode\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Phonology\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Linguistic_typology\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Voiceless_dental_and_alveolar_lateral_fricatives\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Voiceless_nasal\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Voiceless_alveolar_trill\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Stress_(linguistics)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Pitch_(music)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Welsh_orthography\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Latin_script\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Digraph_(orthography)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Collation\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/William_Salesbury\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Diacritic\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Circumflex\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Vowel_length\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Colloquial_Welsh_morphology\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Literary_Welsh_morphology\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Morphology_(linguistics)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Insular_Celtic_languages\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Consonant_mutation\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Inflected_preposition\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Preposition\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Personal_pronoun\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Object_(grammar)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Grammatical_gender\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Grammatical_case\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Grammatical_number\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Auxiliary_verb\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Grammatical_conjugation\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Welsh_syntax\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Verb%E2%80%93subject%E2%80%93object\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Auxiliary_verb\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Verbnoun\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Imperfect\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Periphrastic\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Future_tense\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Conditional_mood\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Preterite\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Inflected_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Welsh_numerals\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Vigesimal\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Welsh_morphology\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Grammatical_gender\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Kingdom_of_Gwynedd\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Kingdom_of_Powys\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Kingdom_of_Dyfed\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Gwenhwyseg\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Kingdom_of_Gwent\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Morgannwg\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Patagonian_Welsh\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Y_Wladfa\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Welsh_settlement_in_Argentina\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Dialect\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Vowel\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Register_(sociolinguistics)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Pro-drop_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Periphrastic\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Welsh_Bible\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Bible\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Association_of_Welsh_Translators_and_Interpreters\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/English_and_Welsh\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Honourable_Society_of_Cymmrodorion\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Languages_in_the_United_Kingdom\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/List_of_Welsh-language_media\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/List_of_Welsh_films\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/List_of_Welsh-language_authors\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/List_of_Welsh-language_poets_(6th_century_to_c._1600)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/List_of_Welsh_people\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/List_of_Welsh_principal_areas_by_percentage_Welsh_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Literature_of_Wales_(Welsh_language)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/St_Benet%27s,_Paul%27s_Wharf\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Welsh_Language_Board\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Dal_Ati\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Welsh_placenames\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Welsh_Tract\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Welsh_(surname)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Welsh_Government\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Glottolog\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Legislation.gov.uk\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/The_National_Archives_(United_Kingdom)\n", + "494\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/OCLC\n", + "494\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/OCLC\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Digital_object_identifier\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/International_Standard_Serial_Number\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Simon_Jenkins\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/University_of_Wales_Press\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Bath,_Somerset\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/BBC_News_Online\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Wayback_Machine\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/SAGE_Publications\n", + "494\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/BBC_News_Online\n", + "494\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Wayback_Machine\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Welsh_Language_Board\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Wayback_Machine\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Welsh_Wikipedia\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/The_Independent\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/NASA\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/NASA\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/J._R._R._Tolkien\n", + "494\n", + "494\n", + "494\n", + "494\n", + "494\n", + "494\n", + "494\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Wikipedia\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Newport,_Wales\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/History_of_the_Welsh_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Old_Welsh\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Middle_Welsh\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Patagonian_Welsh\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Welsh_grammar\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Welsh_phonology\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Welsh_morphology\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Welsh_syntax\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Welsh_numerals\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Welsh_orthography\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Celtic_languages\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Continental_Celtic_languages\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Celtiberian_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Cisalpine_Gaulish\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Galatian_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Gallaecian_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Gaulish_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Lepontic_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Noric_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Insular_Celtic_languages\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Brittonic_languages\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Common_Brittonic\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Old_Welsh\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Middle_Welsh\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Cumbric\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Cornish_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Breton_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Ivernic_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Goidelic_languages\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Primitive_Irish\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Old_Irish\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Middle_Irish\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Classical_Gaelic\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Irish_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Manx_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Scottish_Gaelic\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Pictish_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Mixed_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Beurla_Reagaird\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Shelta\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Gaeltacht\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/G%C3%A0idhealtachd\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Y_Fro_Gymraeg\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Lower_Brittany\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Cape_Breton_Island\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Y_Wladfa\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Gaelscoil\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Gaelic_medium_education_in_Scotland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Bunscoill_Ghaelgagh\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0\n", + "PAGE HAS NO LINKS: /wiki/Welsh_medium_education\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Diwan_(school)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Skol_Veythrin_Karenza\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Language_death\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Languages_of_Europe\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Languages_of_Albania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Languages_of_Andorra\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Languages_of_Armenia\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Languages_of_Austria\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Languages_of_Azerbaijan\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Languages_of_Belarus\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Languages_of_Belgium\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Languages_of_Bosnia_and_Herzegovina\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Languages_of_Bulgaria\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Languages_of_Croatia\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Languages_of_Cyprus\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Languages_of_the_Czech_Republic\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Languages_of_Denmark\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Languages_of_Estonia\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Languages_of_Finland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Languages_of_France\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Languages_of_Georgia_(country)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Languages_of_Germany\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Languages_of_Greece\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Languages_of_Hungary\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Languages_of_Iceland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Languages_of_Ireland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Languages_of_Italy\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Languages_of_Kazakhstan\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Languages_of_Latvia\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Languages_of_Liechtenstein\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Languages_of_Lithuania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Languages_of_Luxembourg\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Languages_of_the_Republic_of_Macedonia\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Languages_of_Malta\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Languages_of_Moldova\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Languages_of_Monaco\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Languages_of_Montenegro\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Languages_of_the_Netherlands\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Languages_of_Norway\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Languages_of_Poland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Languages_of_Portugal\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Languages_of_Romania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Languages_of_Russia\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Languages_of_San_Marino\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Languages_of_Serbia\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Languages_of_Slovakia\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Languages_of_Slovenia\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Languages_of_Spain\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Languages_of_Sweden\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Languages_of_Switzerland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Languages_of_Turkey\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Languages_of_Ukraine\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Languages_of_the_United_Kingdom\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Languages_of_Vatican_City\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Languages_of_Abkhazia\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Languages_of_Nagorno-Karabakh\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Languages_of_Kosovo\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Languages_of_Northern_Cyprus\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Languages_of_South_Ossetia\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Languages_of_Transnistria\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Languages_of_%C3%85land\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Languages_of_the_Faroe_Islands\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Languages_of_Gibraltar\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Languages_of_the_Bailiwick_of_Guernsey\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Languages_of_the_Isle_of_Man\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Languages_of_Jersey\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Languages_of_Svalbard\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Languages_of_the_European_Union\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Library_of_Congress_Control_Number\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Integrated_Authority_File\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Biblioth%C3%A8que_nationale_de_France\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/National_Diet_Library\n", + "439\n", + "439\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Main_Page\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Main_Page\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Unami_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Delaware_River\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Hudson_River\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Oklahoma\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Extinct_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Language_family\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Algic_languages\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Algonquian_languages\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Eastern_Algonquian_languages\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Delaware_languages\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/ISO_639-3\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Glottolog\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/International_Phonetic_Alphabet\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/International_Phonetic_Alphabet#Fonts\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Replacement_character\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Unicode\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Algonquian_languages\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Lenape\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/New_Jersey\n", + "1\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Oklahoma\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Delaware_languages\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Munsee_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Delaware_Tribe_of_Indians\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Nora_Thompson_Dean\n", + "1023\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Lenapehoking\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Jamestown_Colony\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Lord_De_La_Warr\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Eastern_Algonquian_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Regularization_(linguistics)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Delaware_Tribe_of_Indians\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Delaware_Nation\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Anadarko,_Oklahoma\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/John_Heckewelder\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Geminate\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Obstruent\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Vowel_length\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Bilabial_consonant\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Dental_consonant\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Postalveolar_consonant\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Velar_consonant\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Glottal_consonant\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Stop_consonant\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Fricative_consonant\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Nasal_consonant\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Lateral_consonant\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Semivowel\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Breve\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Grave_accent\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Acute_accent\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Front_vowel\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Central_vowel\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Back_vowel\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Close_vowel\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Mid_vowel\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Open_vowel\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Front_vowel\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Central_vowel\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Back_vowel\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Close_vowel\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Mid_vowel\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Open_vowel\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Homorganic\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Stress_(phonology)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Antepenult\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Penult\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Morphophonological\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Munsee\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Continuant\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Syncope_(phonetics)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Metathesis_(linguistics)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Grammatical_person#Additional_persons\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Obviative\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Noun_class\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Agglutinative\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Polysynthetic\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Clusivity\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Desinence\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Agent_(grammar)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Object_(grammar)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Diminutives\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Pejoratives\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Algonquian_languages\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Glottolog\n", + "494\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Ives_Goddard\n", + "494\n", + "494\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/David_Zeisberger\n", + "494\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Daniel_Garrison_Brinton\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Wikipedia\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Jotham_Meeker\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Algonquian_languages\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Plains_Algonquian_languages\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Arapahoan_languages\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Arapaho_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Besawunena_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Gros_Ventre_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Nawathinehena_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Blackfoot_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Cheyenne_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Central_Algonquian_languages\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Cree_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Menominee_language\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0\n", + "PAGE HAS NO LINKS: /wiki/Miami-Illinois_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Ojibwe_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Potawatomi_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Meskwaki_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Shawnee_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Eastern_Algonquian_languages\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Abenaki_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Malecite-Passamaquoddy_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Loup_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Massachusett_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Mohegan-Pequot_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Narragansett_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Quiripi_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Delaware_languages\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Mahican_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Munsee_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Carolina_Algonquian_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Etchemin_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Mi%27kmaq_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Nanticoke_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Powhatan_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Language_death\n", + "1\n", + "1\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Indo-European_languages\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/American_English\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/African_American_English\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Appalachian_English\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Central_Pennsylvania_dialect\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Inland_Northern_American_English\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Northeast_Pennsylvania_English\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Pennsylvania_Dutch_English\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Philadelphia_dialect\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Pittsburgh_English\n", + "329\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Spanish_language_in_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Italian_language_in_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Indigenous_languages_of_the_Americas\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Delaware_languages\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Munsee_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Erie_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Susquehannock_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/American_Sign_Language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Maryland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Maryland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Indo-European_languages\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/American_English\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Baltimore_dialect\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Tidewater_accent\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Spanish_language_in_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/French_language_in_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Italian_language_in_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/German_in_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Indigenous_languages_of_the_Americas\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Siouan_languages\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Tutelo_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Saponi#Language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Nanticoke_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Piscataway_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Susquehannock_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Powhatan_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/American_Sign_Language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Chinese_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Korean_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Oklahoma\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Oklahoma\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Alabama_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Arapaho_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Caddo_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Cayuga_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Cherokee_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Cheyenne_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Chickasaw_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Chiwere_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Choctaw_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Comanche_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Mikasuki_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Kansa_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Koasati_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Mescalero-Chiricahua_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Fox_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Muscogee_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Osage_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Ottawa_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Pawnee_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Plains_Apache_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Omaha-Ponca_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Potawatomi_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Quapaw_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Seneca_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Shawnee_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Tonkawa_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Wichita_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Wyandot_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Yuchi_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Sign_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/American_Sign_Language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Black_American_Sign_Language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Plains_Indian_Sign_Language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/American_English\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/German_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Spanish_language_in_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Vietnamese_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Tribe_(Native_American)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Accokeek_tribe\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Assateague_people\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Chaptico\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Choptank_people\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Doeg_tribe\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Lumbee\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Matapeake_tribe\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Mattawoman\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Nacotchtank\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Nanticoke_people\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Ozinie_tribe\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Patuxent_people\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Piscataway_Indian_Nation_and_Tayac_Territory\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Piscataway_tribe\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Pocomoke_people\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Potapoco\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Powhatan\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Shawnee\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Susquehannock\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Tockwogh_tribe\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Tuscarora_people\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Yaocomico\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/We-Sorts\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Indigenous_languages_of_the_Americas\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Nanticoke_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Piscataway_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Powhatan_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Susquehannock_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Indian_reservation\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Piscataway_Indian_Nation_and_Tayac_Territory\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Mary_Kittamaquund\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Turkey_Tayac\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Indian_Will\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Accokeek_Creek_Site\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/History_of_the_Native_Americans_in_Baltimore\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Caiuctucuc\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Nottingham,_Prince_George%27s_County,_Maryland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Shawnee_Old_Fields_Village_Site\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Monongahela_culture\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Aisquith_Farm_E_Archeological_Site\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Arundel_Cove_Archaeological_Site\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Barton_Village_Site\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Beck_Northeast_Site_(18AN65)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Biggs_Ford_Site\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Brinsfield_I_Site\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Buckingham_Archeological_Site\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Bumpstead_Archeological_Site\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Elkridge_Site\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Grear_Prehistoric_Village_Site\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Heath_Farm_Camp_Archeological_Site\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Heath_Farm_Jasper_Quarry_Archeological_Site\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Hoye_Site\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Iron_Hill_Cut_Jasper_Quarry_Archeological_Site\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Katcef_Archeological_Site\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Martins_Pond_Site\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/McCandless_Archeological_Site\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Meyer_Site\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Monocacy_Site\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Nolands_Ferry_I_Archeological_Site\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Paw_Paw_Cove_Site\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Sandy_Point_Site\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Shoemaker_III_Village_Site\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Walker_Prehistoric_Village_Archeological_Site\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Willin_Village_Archeological_Site\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Broad_Creek_Soapstone_Quarries\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Magothy_Quartzite_Quarry_Archeological_Site\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/National_Archives_Archeological_Site_(College_Park,_Maryland)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Old_Colony_Cove_Site\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0\n", + "PAGE HAS NO LINKS: /wiki/Baltimore_American_Indian_Center\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/List_of_place_names_in_Maryland_of_Native_American_origin\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Nemacolin%27s_Path\n", + "234\n", + "234\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Main_Page\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Main_Page\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Susquehannock_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Northeastern_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Extinct_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Language_family\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Iroquoian_languages\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/ISO_639-3\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Linguist_List\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Glottolog\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Extinct_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Indigenous_peoples_of_the_Americas\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Susquehannock\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Iroquoian_languages\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/John_Campanius\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Iroquois\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Conestoga_River\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Juniata_River\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Swatara_Creek\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Glottolog\n", + "1\n", + "1\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Indo-European_languages\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/American_English\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/African_American_English\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Appalachian_English\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Central_Pennsylvania_dialect\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Inland_Northern_American_English\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Northeast_Pennsylvania_English\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Pennsylvania_Dutch_English\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Philadelphia_dialect\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Pittsburgh_English\n", + "329\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Spanish_language_in_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Italian_language_in_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Indigenous_languages_of_the_Americas\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Delaware_languages\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Munsee_language\n", + "235\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Erie_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/American_Sign_Language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Maryland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Maryland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Indo-European_languages\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/American_English\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Baltimore_dialect\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Tidewater_accent\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Spanish_language_in_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/French_language_in_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Italian_language_in_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/German_in_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Indigenous_languages_of_the_Americas\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Siouan_languages\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Tutelo_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Saponi#Language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Nanticoke_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Piscataway_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Powhatan_language\n", + "235\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/American_Sign_Language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Chinese_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Korean_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Tribe_(Native_American)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Accokeek_tribe\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Assateague_people\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Chaptico\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Choptank_people\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Doeg_tribe\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Lumbee\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Matapeake_tribe\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Mattawoman\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Nacotchtank\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Nanticoke_people\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Ozinie_tribe\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Patuxent_people\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Piscataway_Indian_Nation_and_Tayac_Territory\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Piscataway_tribe\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Pocomoke_people\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Potapoco\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Powhatan\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Shawnee\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Susquehannock\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Tockwogh_tribe\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Tuscarora_people\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Yaocomico\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/We-Sorts\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Indigenous_languages_of_the_Americas\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Nanticoke_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Piscataway_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Powhatan_language\n", + "235\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Indian_reservation\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Piscataway_Indian_Nation_and_Tayac_Territory\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Mary_Kittamaquund\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Turkey_Tayac\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Indian_Will\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Accokeek_Creek_Site\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/History_of_the_Native_Americans_in_Baltimore\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Caiuctucuc\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Nottingham,_Prince_George%27s_County,_Maryland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Shawnee_Old_Fields_Village_Site\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Monongahela_culture\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Aisquith_Farm_E_Archeological_Site\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Arundel_Cove_Archaeological_Site\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Barton_Village_Site\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Beck_Northeast_Site_(18AN65)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Biggs_Ford_Site\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Brinsfield_I_Site\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Buckingham_Archeological_Site\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Bumpstead_Archeological_Site\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Elkridge_Site\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Grear_Prehistoric_Village_Site\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Heath_Farm_Camp_Archeological_Site\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Heath_Farm_Jasper_Quarry_Archeological_Site\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Hoye_Site\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Iron_Hill_Cut_Jasper_Quarry_Archeological_Site\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Katcef_Archeological_Site\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Martins_Pond_Site\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/McCandless_Archeological_Site\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Meyer_Site\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Monocacy_Site\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Nolands_Ferry_I_Archeological_Site\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Paw_Paw_Cove_Site\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Sandy_Point_Site\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Shoemaker_III_Village_Site\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Walker_Prehistoric_Village_Archeological_Site\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Willin_Village_Archeological_Site\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Broad_Creek_Soapstone_Quarries\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Magothy_Quartzite_Quarry_Archeological_Site\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/National_Archives_Archeological_Site_(College_Park,_Maryland)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Old_Colony_Cove_Site\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Baltimore_American_Indian_Center\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/List_of_place_names_in_Maryland_of_Native_American_origin\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Nemacolin%27s_Path\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Indigenous_peoples_of_the_Americas\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Indigenous_languages_of_the_Americas\n", + "113\n", + "113\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Main_Page\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Main_Page\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Munsee_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Canada\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Ontario\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/New_York_(state)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/New_Jersey\n", + "1\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Munsee\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Language_family\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Algic_languages\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Algonquian_languages\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Eastern_Algonquian_languages\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Delaware_languages\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/ISO_639-3\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Glottolog\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/International_Phonetic_Alphabet\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/International_Phonetic_Alphabet#Fonts\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Replacement_character\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Unicode\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Endangered_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Eastern_Algonquian_languages\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Algonquian_languages\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Algic_languages\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Delaware_languages\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Lenape_language\n", + "235\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/New_York_City\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Long_Island\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Manhattan_Island\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Staten_Island\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Lower_Hudson_Valley\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/New_Jersey\n", + "1\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Moravian_47,_Ontario\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Ontario\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Canada\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0\n", + "PAGE HAS NO LINKS: /wiki/Proto-Algonquian_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Mahican\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Delaware_Water_Gap\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Daniel_Garrison_Brinton\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Herbert_C._Kraft\n", + "1023\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Delaware_River\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Thomas_West,_3rd_Baron_De_La_Warr\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Christian_Munsee\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Hudson_Valley\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Six_Nations_of_the_Grand_River_First_Nation\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Munsee-Delaware_Nation_1,_Ontario\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Moravian_47,_Ontario\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Stockbridge-Munsee\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Mohican\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Ramapough_Mountain_Indians\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Delaware_Nation\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Raritan_River\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Mahican_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Mohegan-Montauk-Narragansett_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Quiripi_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Indigenous_peoples\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Hudson_River\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Raritan_River\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Metrical_phonology\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Stress_(linguistics)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Syncope_(phonetics)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Reduplication\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/International_Phonetic_Alphabet\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Extrametricality\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Munsee_grammar\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Inflection\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Derivational_morphology\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Morphology_(linguistics)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Grammatical_gender\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Grammatical_person\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Possession_(linguistics)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Negation_(linguistics)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/International_Phonetic_Alphabet\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Americanist_phonetic_notation\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Delaware_languages#Writing_systems\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Regularization_(linguistics)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Lenape\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Monsey,_New_York\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Ethnologue\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Glottolog\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Blair_A._Rudes\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/H.C._Wolfart\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/International_Standard_Serial_Number\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/H._C._Wolfart\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/International_Standard_Serial_Number\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Ives_Goddard\n", + "494\n", + "494\n", + "494\n", + "494\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/International_Standard_Serial_Number\n", + "494\n", + "494\n", + "494\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/International_Standard_Serial_Number\n", + "494\n", + "494\n", + "494\n", + "494\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/International_Standard_Serial_Number\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Truman_Michelson\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/David_Zeisberger\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/American_Philosophical_Society\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Algonquian_languages\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Plains_Algonquian_languages\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Arapahoan_languages\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Arapaho_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Besawunena_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Gros_Ventre_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Nawathinehena_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Blackfoot_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Cheyenne_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Central_Algonquian_languages\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Cree_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Menominee_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Miami-Illinois_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Ojibwe_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Potawatomi_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Meskwaki_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Shawnee_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Eastern_Algonquian_languages\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Abenaki_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Malecite-Passamaquoddy_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Loup_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Massachusett_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Mohegan-Pequot_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Narragansett_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Quiripi_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Delaware_languages\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Mahican_language\n", + "235\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Carolina_Algonquian_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Etchemin_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Mi%27kmaq_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Nanticoke_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Powhatan_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Language_death\n", + "1\n", + "1\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Indo-European_languages\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/American_English\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/African_American_English\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Appalachian_English\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Central_Pennsylvania_dialect\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Inland_Northern_American_English\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Northeast_Pennsylvania_English\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Pennsylvania_Dutch_English\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Philadelphia_dialect\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Pittsburgh_English\n", + "329\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Spanish_language_in_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Italian_language_in_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Indigenous_languages_of_the_Americas\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Delaware_languages\n", + "235\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Erie_language\n", + "114\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/American_Sign_Language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Canada\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Languages_of_Canada\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Canada\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Canadian_English\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Canadian_French\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Algonquian_languages\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Abenaki_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Algonquin_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Blackfoot_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Cree_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Innu_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Malecite-Passamaquoddy_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Mi%27kmaq_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Naskapi_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Ojibwe_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Ottawa_dialect\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Potawatomi_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Athabaskan_languages\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Babine-Witsuwit%27en_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Carrier_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Chilcotin_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Chipewyan_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Dogrib_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Gwich%E2%80%99in_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/H%C3%A4n_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Kaska_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Nicola_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Sarcee_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Sekani_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Slavey_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Tagish_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Tahltan_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Tutchone_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Inuit_languages\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Inuinnaqtun\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Inuktitut\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Inupiat_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Inuvialuktun\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Iroquoian_languages\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Cayuga_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Mohawk_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Oneida_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Onondaga_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Seneca_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Tuscarora_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Wyandot_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Salishan_languages\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Bella_Coola_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Comox_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Halkomelem\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Lillooet_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Okanagan_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Saanich_dialect\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Sechelt_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Shuswap_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Squamish_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Thompson_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Wakashan_languages\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Ditidaht_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Haisla_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Heiltsuk-Oowekyala_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Kwak%27wala\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Nuu-chah-nulth_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Beothuk_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Haida_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Kutenai_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Tlingit_language\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0\n", + "PAGE HAS NO LINKS: /wiki/Coast_Tsimshian_dialect\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Broken_Slavey\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Bungi_Creole\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Chiac\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Chinook_Jargon\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Labrador_Inuit_Pidgin_French\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Michif_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Canadian_Gaelic\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Canadian_Irish\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Canadian_Ukrainian\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/American_Sign_Language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Quebec_Sign_Language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Inuit_Sign_Language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Plains_Indian_Sign_Language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Maritime_Sign_Language\n", + "194\n", + "194\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Main_Page\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Main_Page\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Proprietary_colony\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Cecil_Calvert,_2nd_Baron_Baltimore\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Province_of_Maryland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Crown_colony\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/North_America\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Caribbean\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/British_Empire\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Royal_charter\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Colonial_charters_in_the_Thirteen_Colonies\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Province_of_New_York\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/William_Penn\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/History_of_Pennsylvania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Crown_colony\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/County_palatine\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Marquess\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Lords_Proprietors\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Crown_Colony\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Barbados\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Colonial_charters_in_the_Thirteen_Colonies\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/British_America\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/American_Revolution\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Thirteen_colonies\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/U.S._state\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Virginia_Colony\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Province_of_Georgia\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/North_Carolina\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/South_Carolina\n", + "12\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Massachusetts\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/New_Hampshire\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Rhode_Island\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Connecticut\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Province_of_Maryland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Province_of_New_York\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Province_of_New_Jersey\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Delaware_Colony\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Nova_Scotia\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Henry_IV_of_France\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/King_of_France\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Pierre_Du_Gua_de_Monts\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Latitude\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Fur_trade\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Acadia\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/New_France\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Samuel_de_Champlain\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Glorioso_Islands\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/French_Third_Republic\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Madagascar\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/R%C3%A9union\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/French_Southern_and_Antarctic_Lands\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/English_colonial_empire\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Proprietary_governor\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Proprietary_House\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Colonial_government_in_the_Thirteen_Colonies\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Crown_colony\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Commonwealth\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Settler_colonialism\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Donatorio\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Quia_Emptores\n", + "53\n", + "53\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Main_Page\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Main_Page\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Autonomous_area\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Administrative_division\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Dependent_territory\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Country\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Self-governance\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Autonomy\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Minority_group\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Decentralization\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Federacy\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Federation\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Confederation\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Territory_(country_subdivision)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/List_of_autonomous_areas_by_country\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Azad_Kashmir\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Pakistan\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Kashmir_conflict\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Banners_of_Inner_Mongolia#Autonomous_banner\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Oroqen_Autonomous_Banner\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/China\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Evenk_Autonomous_Banner\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Morin_Dawa_Daur_Autonomous_Banner\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Autonomous_city\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Buenos_Aires\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Argentina\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Ceuta\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Spain\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Autonomous_cities_of_Spain\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Exclaves\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/North_Africa\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Morocco\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Iberian_peninsula\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Strait_of_Gibraltar\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Melilla\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Tashkent\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Uzbekistan\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Bangui\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Central_African_Republic\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Autonomous_communities_of_Spain\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Northern_Ireland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Scotland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Wales\n", + "1830\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Scotland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Wales\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Northern_Ireland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Parliament_of_the_United_Kingdom\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Unitary_state\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Constitutional_convention_(political_custom)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Autonomous_counties_of_the_People%27s_Republic_of_China\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Tobago\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Trinidad_and_Tobago\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Tobago_House_of_Assembly\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Tobago\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Autonomous_okrugs_of_Russia\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Autonomous_oblast\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Jewish_Autonomous_Oblast\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Russia\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Autonomous_prefectures_of_the_People%27s_Republic_of_China\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Aceh\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Indonesia\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Jeju_Province\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/South_Korea\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Autonomous_Province_of_Kosovo_and_Metohija\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Serbia\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Kosovo\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/International_recognition_of_Kosovo\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/United_Nations_Security_Council_Resolution_1244\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Kosovo\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Papua_(province)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Indonesia\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/South_Tyrol\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Italy\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Trentino\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Vojvodina\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Serbia\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/West_Papua_(province)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Indonesia\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Special_Region_of_Yogyakarta\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Malampa_Province\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Penama_Province\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Sanma_Province\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Shefa_Province\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Tafea_Province\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Torba_Province\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Vanuatu\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/%C3%85land_Islands\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Finland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Aosta_Valley\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Italy\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Azores\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Portugal\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Autonomous_Region_of_Bougainville\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Papua_New_Guinea\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Friuli-Venezia_Giulia\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Italy\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Guangxi\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/China\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Hong_Kong\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Macau\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/China\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Hopi_Reservation\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Cherokee_Nation\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Pine_Ridge_Indian_Reservation\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Inner_Mongolia\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/China\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Iraqi_Kurdistan\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Iraq\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Madeira\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0\n", + "PAGE HAS NO LINKS: /wiki/Portugal\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Autonomous_Region_in_Muslim_Mindanao\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Philippines\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Mount_Athos\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Greece\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Navajo_Nation\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Ningxia\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/China\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Nisga%27a_people\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Canada\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Nunatsiavut\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Regi%C3%B3n_Aut%C3%B3noma_del_Atl%C3%A1ntico_Norte\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Nicaragua\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Regi%C3%B3n_Aut%C3%B3noma_del_Atl%C3%A1ntico_Sur\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Rodrigues\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Mauritius\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Sardinia\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Italy\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Sicily\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Tibet\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/China\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/T%C5%82%C4%B1%CC%A8ch%C7%AB\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Canada\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Xinjiang\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/China\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Zanzibar\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Tanzania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Autonomous_administrative_divisions_of_India\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/De_facto\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Nakhchivan_Autonomous_Republic\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Nakhchivan_Autonomous_Republic\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Azerbaijan\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Adjara\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Georgia_(country)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Government_of_the_Autonomous_Republic_of_Abkhazia\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Georgia_(country)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Abkhazia\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/War_in_Abkhazia_(1992%E2%80%9393)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/International_recognition_of_Abkhazia_and_South_Ossetia\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Abkhazia\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Gorno-Badakhshan_Autonomous_Province\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Tajikistan\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Crimea\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Ukraine\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Russia\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Karakalpakstan\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Uzbekistan\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Bissau\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Guinea-Bissau\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Gagauzia\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Moldova\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Transnistria_autonomous_territorial_unit_with_special_legal_status\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Moldova\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Transnistria\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Soviet_Union\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/International_recognition_of_Transnistria\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Transnistria\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Republika_Srpska\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Federation_of_Bosnia_and_Herzegovina\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Bosnia_and_Herzegovina\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/British_Overseas_Territories\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Crown_dependencies\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/British_Islands\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Jersey\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Guernsey\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Isle_of_Man\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Crown_dependencies\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Gibraltar\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/British_Overseas_Territories\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/New_Zealand\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Pacific_Islands\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Cook_Islands\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Niue\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Freely_associated_state\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Tokelau\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Chatham_Islands\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Faroe_Islands\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Greenland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Kingdom_of_Denmark\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Aruba\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Cura%C3%A7ao\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Sint_Maarten\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Kingdom_of_the_Netherlands\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Overseas_collectivities\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Corsica\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Region_of_France\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/New_Caledonia\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/French_Polynesia\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Overseas_collectivity\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/French_Guiana\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Guadaloupe\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Martinique\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Mayotte\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/R%C3%A9union\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Ethiopia\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Woreda\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Demographics_of_Ethiopia\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Regions_of_Ethiopia\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Indigenous_peoples\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Indigenous_peoples_of_the_Americas\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/First_Nations\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Native_Americans_in_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Indian_reserve\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Indian_reservation\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Canada\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Provinces_and_regions_of_Panama\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Panama\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Autonomous_Silesian_Voivodeship\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Autonomous_Republic_of_Northern_Epirus\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Principality_of_Albania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Autonomous_republics_of_the_Soviet_Union\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Subcarpathian_Ruthenia\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Slovakia\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Czechoslovakia\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Grand_Duchy_of_Finland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Russian_Empire\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Magyar_Autonomous_Region\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Socialist_Republic_of_Romania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Southern_Ireland_(1921%E2%80%9322)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/History_of_Northern_Ireland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/United_Kingdom_of_Great_Britain_and_Ireland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/List_of_autonomous_areas_by_country\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Autonomous_administrative_divisions_of_the_People%27s_Republic_of_China\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Autonomous_administrative_divisions_of_India\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Autonomous_administrative_divisions_of_Russia\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Autonomous_administrative_divisions_of_Spain\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Administrative_division\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Region_(administrative)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Devolution\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Personal_union\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/List_of_current_world_leaders_and_heads_of_government#Autonomous_regions_and_particular_administrative_divisions_-_A-L\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Wayback_Machine\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Administrative_subdivision\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Federalism\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Asymmetric_federalism\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Confederation\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Corporative_federalism\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Dual_federalism\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Ethnic_federalism\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Federacy\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Federal_monarchy\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Federal_republic\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Federated_state\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Federation\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Fiscal_federalism\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Symmetric_federalism\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Unitary_state\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Devolution\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Regional_state\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Constituent_state\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Self-governance\n", + "222\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Decentralization\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Home_rule\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Multinational_state\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Personal_union\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Subsidiarity\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Supranational_union\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Tribal_sovereignty\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Administrative_division\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/List_of_terms_for_administrative_divisions\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Area_(country_subdivision)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Insular_area\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Local_government_area\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Protected_area\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Special_Areas_Board\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Statistical_area_(United_States)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Combined_statistical_area\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Metropolitan_statistical_area\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Micropolitan_statistical_area\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Urban_area\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Canton_(country_subdivision)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Half-canton\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Borough\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/County_borough\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0\n", + "PAGE HAS NO LINKS: /wiki/Metropolitan_borough\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Capital_city\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Federal_capital\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Capital_city#Origins\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/City\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/City_state\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Autonomous_city\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Charter_city\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Independent_city\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Incorporated_city\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Imperial_city\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Free_imperial_city\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Royal_free_city\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Community_(administrative_division)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Autonomous_communities_of_Spain\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Residential_community\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/County\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Administrative_county\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Autonomous_counties_of_the_People%27s_Republic_of_China\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Consolidated_city-county\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Metropolitan_county\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Non-metropolitan_county\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Viscountcy\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Country\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Overseas_country\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Department_(country_subdivision)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Overseas_department\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/District\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Capital_district\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/City_district\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Congressional_district\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Electoral_district\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Federal_district\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/List_of_municipalities_in_British_Columbia#Indian_government_districts\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Lands_administrative_divisions_of_Australia\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Metropolitan_district\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Non-metropolitan_district\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Military_district\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Municipal_district\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Police_district\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/List_of_regional_districts_of_British_Columbia\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Rural_district\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Sanitary_district\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Subdistrict\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Urban_district\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Special_district_(United_States)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Division_(country_subdivision)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Census_division\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Police_division\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Subdivision_(country_subdivision)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Municipality\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/County_municipality_(disambiguation)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/County_municipality_(Norway)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/County_municipality_(Nova_Scotia)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Regional_county_municipality\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Direct-controlled_municipality\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/District_municipality\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Mountain_resort_municipality\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Neutral_municipality\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Regional_municipality\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Resort_municipality\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Rural_municipality\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Specialized_municipality\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Prefecture\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Autonomous_prefecture\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Subprefecture\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Super-prefecture\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Praetorian_prefecture\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Province\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Autonomous_province\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Overseas_province\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Roman_province\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Region\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Administrative_region\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Autonomous_region\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Capital_region\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Development_region\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Mesoregion_(geography)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Microregion\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Overseas_region\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Special_administrative_region\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Subregion_(country_subdivision)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Reserve_(territorial_entity)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Biosphere_reserve\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Ecological_reserve\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Game_reserve\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Indian_reserve\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Nature_reserve\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Federated_state\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Federal_state\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Free_state_(government)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Sovereign_state\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Territory\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Capital_territory\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Federal_capital_territory\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Dependent_territory\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Federal_territory\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Organized_incorporated_territory\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Overseas_territory\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Union_territory\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Unorganized_territory\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Town\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Census_town\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Market_town\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Township\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Charter_township\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Civil_township\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Paper_township\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Survey_township\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Urban_township\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Autonomous_territorial_unit\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Local_administrative_unit\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Regional_unit\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Economic_zone\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Exclusive_economic_zone\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Free_economic_zone\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Special_economic_zone\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Free-trade_zone\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Neutral_zone_(territorial_entity)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Self-administered_zone\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Local_government_in_Victoria#Alpine_resorts\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Bailiwick\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Banner_(country_subdivision)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Banners_of_Inner_Mongolia\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Block_(district_subdivision)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Cadastre\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Circle_(country_subdivision)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Circuit_(administrative_division)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Colony\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Municipality\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Condominium_(international_law)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Constituency_(administrative_division)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Duchy\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Elderships_of_Lithuania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Emirate\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Federal_Dependencies_of_Venezuela\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Governorate\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Hamlet_(place)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Ilkhanate\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Indian_reservation\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Manor\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Royal_manor\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Muftiate\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Neighbourhood\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Parish_(administrative_division)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Periphery_(country_subdivision)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Precinct\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Principality\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Protectorate\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Quarter_(urban_subdivision)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/List_of_regencies_and_cities_of_Indonesia\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Autonomous_republic\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Riding_(country_subdivision)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Sector_(country_subdivision)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Autonomous_sector\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Shire\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Sultanate\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Suzerainty\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Townland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Village\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Administrative_village\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/List_of_summer_villages_in_Alberta\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Ward_(electoral_subdivision)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Agency_(country_subdivision)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Barony\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Burgh\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Exarchate\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Hide_(unit)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Hundred_(county_division)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Imperial_Circle\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/March_(territorial_entity)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Monthon\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Presidency_(country_subdivision)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Residency_(country_subdivision)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0\n", + "PAGE HAS NO LINKS: /wiki/Roman_diocese\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Seat_(territorial_administrative_unit)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Tenth_(country_subdivision)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Tithing\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Amt_(country_subdivision)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Bakhsh\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Barangay\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Bezirk\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Regierungsbezirk\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Comune\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Frazione\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Fu_(country_subdivision)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Gemeinde\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Jude%C8%9B\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Municipalities_of_Finland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Municipalities_of_Sweden\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/L%C3%A4n\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Localit%C3%A0\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Counties_of_Hungary\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Muban\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Oblast\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Autonomous_oblast\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Okrug\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Provinces_of_Iran\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Poblacion\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Purok\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Counties_of_Iran\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Sum_(country_subdivision)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/S%C3%BDsla\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Tehsil\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Vingtaine\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Commote\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Gau_(territory)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Heerlijkheid\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/K%C3%B6ping\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Maalaiskunta\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Nome_(Egypt)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Prefectures_of_Greece\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Pagus\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Pargana\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Plas%C4%83\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Satrap\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Socken\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Subah\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Syssel\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Zhou_(country_subdivision)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Arabic\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Administrative_division\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Muhafazah\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Wilayah\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Mintaqah\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Mudiriyah\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Emirate\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Baladiyah\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Shabiyah\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Mintaqah\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Kaza\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Nahiyah\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Markaz_(country_subdivision)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Mutamadiyah\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Daerah\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Da%C3%AFra\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Sanjak\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Sanjak\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Amanah_(administrative_subdivision)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Baladiyah\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Mahallah\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Village\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Sheyakhah\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/French_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Administrative_division\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Arrondissement\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Department_(country_subdivision)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Prefectures_in_France\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Subprefectures_in_France\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Greek_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Administrative_division\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Decentralized_administrations_of_Greece\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Governor-general#Greece\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Geographic_regions_of_Greece\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Administrative_regions_of_Greece\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Prefectures_of_Greece\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Regional_units_of_Greece\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Municipalities_and_communities_of_Greece\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Provinces_of_Greece\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Municipalities_and_communities_of_Greece\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Archon\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Bandon_(Byzantine_Empire)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Deme\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Despot_(court_title)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Roman_diocese\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Dux\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Droungos\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Eparchy\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Exarch\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Katepano\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Kephale_(Byzantine_Empire)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Kleisoura_(Byzantine_district)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Meridarch\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Naucrary\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Satrap\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Strategos\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Theme_(Byzantine_district)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Toparches\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Turma\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Portuguese_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Administrative_division\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Estado\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Distrito_federal\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Province\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Region\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/District\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Comarca\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Captaincy\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Munic%C3%ADpio\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Concelho\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Freguesia\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Communes_of_Angola\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Electoral_district\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Cidade\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Town\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Village\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Bairro\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Lugar_(country_subdivision)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Slavic_languages\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Administrative_division\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Dzielnica\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Gmina\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Krai\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Kraj\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Krajina\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/M%C4%9Bstys\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Obec\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Oblast\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Okr%C4%99g\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Okres\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Okrug\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Op%C5%A1tina\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Osiedle\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Powiat\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Raion\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Selsoviet\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/So%C5%82ectwo\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Voivodeship\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/%C5%BDupanija\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Darugha\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Gromada\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Guberniya\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Jurydyka\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Khutor\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Obshchina\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Okolia\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Opole_(administrative)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Pogost\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Prowincja\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Sorok\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Srez\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Starostwo\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Uyezd\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Volost\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Ziemia\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/%C5%BDupa\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Spanish_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Administrative_division\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Autonomous_communities_of_Spain\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Departamento\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Distrito_federal\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/State_(polity)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Province\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Region\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Canton_(country_subdivision)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Comarca\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Communes_of_Chile\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Corregimiento\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Boroughs_of_Mexico\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/District\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Mancomunidad\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Merindad\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Municipalidad\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Municipio\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Parroquia\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Parishes_of_Ecuador\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Parroquia_(Spain)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Hamlet_(place)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Alqueria\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Elizate\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Asentamiento\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Shanty_town\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Pueblos_j%C3%B3venes\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Barrio\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Campamento_(Chile)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Hamlet_(place)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/City\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Autonomous_city\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Colonia_(Mexico)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Lugar_(country_subdivision)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Masia\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Poblacion\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Rancher%C3%ADa\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Sitio\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Vereda\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Villa\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0\n", + "PAGE HAS NO LINKS: /wiki/Village\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Turkish_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Administrative_division\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Provinces_of_Turkey\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Il%C3%A7e\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/City\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Town\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Belediye\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Belde\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/K%C3%B6y\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Mahalle\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Agaluk\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Bucak_(administrative_unit)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Eyalet\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Kadiluk\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Kaza\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Khedivate_of_Egypt\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Mutasarr%C4%B1f\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Nahiya\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Pashalik\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Raya_(country_subdivision)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Sanjak\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Vilayet\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Voivodeship\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Census_division\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Electoral_district\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Political_division\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/List_of_administrative_divisions_by_country\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Autonomous_administrative_division\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Autonomous_administrative_division\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Main_Page\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Main_Page\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Constitutional_monarchy\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Separatism\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Associated_state\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Dominion\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Chiefdom\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Federalism\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Federation\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Confederation\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Devolution\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Supranational_union\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Empire\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Hegemony\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Unitary_state\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Administrative_division\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/French_and_Raven%27s_bases_of_power\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Democracy\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Direct_democracy\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Representative_democracy\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Liberal_democracy\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Social_democracy\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Demarchy\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Types_of_democracy\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Oligarchy\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Aristocracy\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Plutocracy\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Kraterocracy\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Stratocracy\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Timocracy\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Meritocracy\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Technocracy\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Geniocracy\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Noocracy\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Kritarchy\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Particracy\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Ergatocracy\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Netocracy\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Autocracy\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Despotism\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Dictatorship\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Military_dictatorship\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Anocracy\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Anarchy\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Theocracy\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Monarchism\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Republicanism\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Absolute_monarchy\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Legalism_(Chinese_philosophy)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Parliamentary_republic\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Directorial_system\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Semi-presidential\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Presidential_system\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Authoritarianism\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Libertarianism\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Tribalism\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Despotism\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Feudalism\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Colonialism\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Minarchism\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Distributism\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Anarchism\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Socialism\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Communism\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Totalitarianism\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Global_governance\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Local_government\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Commune\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/City-state\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Nation_state\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Intergovernmental_organisation\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/World_government\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Monarchy\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Monarch\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Monarchism\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Divine_right_of_kings\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Mandate_of_Heaven\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Absolute_monarchy\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Composite_monarchy\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Diarchy\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Dual_monarchy\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Elective_monarchy\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Emirate\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Ethnarch\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Federal_monarchy\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Hereditary_monarchy\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Legalism_(Chinese_philosophy)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Non-sovereign_monarchy\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Popular_monarchy\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Regent\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Tetrarchy\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Universal_monarchy\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Augustus#Octavian_becomes_Augustus\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Magna_Carta\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Rise_of_the_Ottoman_Empire\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Glorious_Revolution\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/French_Revolution\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Trienio_Liberal\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/First_French_Empire\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Liberal_Wars\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Second_French_Empire\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Italian_unification\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Meiji_Restoration\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Unification_of_Germany\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/5_October_1910_Revolution\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Proclamation_of_the_Republic_(Brazil)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Xinhai_Revolution\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Russian_Revolution\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Siamese_revolution_of_1932\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Italian_institutional_referendum,_1946\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Spanish_transition_to_democracy\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Iranian_Revolution\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Modern_Cambodia\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Nepalese_Civil_War\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Aristocracy\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Autocracy\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Crowned_republic\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Conservatism\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Thomas_Hobbes\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Legitimists\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Oligarchy\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Philosopher_king\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Primogeniture\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Royalist\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Regicide\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Regnal_number\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Royal_family\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Ultra-royalist\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Monarchy\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Sovereignty\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Constitution\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Absolute_monarchy\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Morocco\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Emperor_of_Japan\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Head_of_state\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Constitution\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Uncodified_constitution\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Public_policy\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Vernon_Bogdanor\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Thomas_Macaulay\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Patriotism\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Dissolution_of_parliament\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Royal_assent\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/The_English_Constitution\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Walter_Bagehot\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Reserve_power\n", + "1830\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Commonwealth_realms\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Westminster_system\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Malaysia\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Cambodia\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Elective_monarchy\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Electoral_college\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Hittites\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Ancient_Anatolians\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Bhutan\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Politics_of_Bhutan\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Constitution_of_Bhutan\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Bhutanese_democracy\n", + "548\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Glorious_Revolution\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Bill_of_Rights_1689\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Act_of_Settlement_1701\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Magna_Carta\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Kingdom_of_Scotland\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0\n", + "PAGE HAS NO LINKS: /wiki/Convention_of_Estates_(1689)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Claim_of_Right_Act_1689\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Anne,_Queen_of_Great_Britain\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Scottish_Militia_Bill\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/George_III_of_the_United_Kingdom\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Catholic_Emancipation_in_Britain\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/William_Pitt_the_Younger\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/William_IV_of_the_United_Kingdom\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Lord_Melbourne\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Lord_John_Russell,_1st_Earl_Russell\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Queen_Victoria\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Bedchamber_crisis\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/William_Ewart_Gladstone\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Hugh_Childers\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Sir_Henry_Campbell-Bannerman\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Parliament_of_the_United_Kingdom\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Government_of_the_United_Kingdom\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Prime_Minister_of_the_United_Kingdom\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Royal_Prerogative\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Oath_of_Allegiance_(United_Kingdom)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Constitutional_conventions_of_the_United_Kingdom\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Advice_(constitutional)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Constitution_of_May_3,_1791\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Constitution_of_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/French_Revolution\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Napoleon_Bonaparte\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Georg_Wilhelm_Friedrich_Hegel\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Elements_of_the_Philosophy_of_Right\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Protestantism\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Executive_branch\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Baron_de_Montesquieu\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Prime_minister\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/France\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/July_Monarchy\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Louis-Philippe_I,_King_of_the_French\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Unification_of_Germany\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Otto_von_Bismarck\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Constitution_of_the_German_Empire\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Kaiser\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Reichskanzler\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/First_World_War\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Kingdom_of_Italy\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/King_of_Italy\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Benito_Mussolini\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Parliamentary_democracy\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Republic\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Member_of_Parliament\n", + "1830\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Parliament\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Royal_Prerogative\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Sovereign_Immunity\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Responsible_government\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Allegiance\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Western_Europe\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Monarchy_of_the_United_Kingdom\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Monarchy_of_Spain\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Monarchy_of_the_Netherlands\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Monarchy_of_Belgium\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Monarchy_of_Norway\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Monarchy_of_Denmark\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Monarchy_of_Luxembourg\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Monarchy_of_Monaco\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Monarchy_of_Liechtenstein\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Monarchy_of_Sweden\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Monarchy_of_Japan\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Monarchy_of_Thailand\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Prime_minister\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Coalition_government\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Cabinet_(government)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Japan\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Sweden\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Elizabeth_II\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Commonwealth_realm\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/1975_Australian_constitutional_crisis\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Gough_Whitlam\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Budget\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Malcolm_Fraser\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Double_dissolution\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Republicanism_in_Australia\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Bhumibol_Adulyadej\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Bhumibol_Adulyadej#Role_in_Thai_politics\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/L%C3%A8se_majest%C3%A9_in_Thailand\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Partisan_(political)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Political_scientist\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Lapsed_power\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/List_of_current_monarchies\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Monarchy_of_Antigua_and_Barbuda\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Monarchy_of_Australia\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Monarchy_of_the_Bahamas\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Bahrain\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Monarchy_of_Barbados\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Belgium\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Monarchy_of_Belize\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Bhutan\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Cambodia\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Monarchy_of_Canada\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Denmark\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Monarchy_of_Grenada\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Monarchy_of_Jamaica\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Japan\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Jordan\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Kuwait\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Lesotho\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Liechtenstein\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Luxembourg\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Malaysia\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Monaco\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Morocco\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Kingdom_of_the_Netherlands\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Monarchy_of_New_Zealand\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Norway\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Monarchy_of_Papua_New_Guinea\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Saint_Kitts_and_Nevis\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Monarchy_of_Saint_Lucia\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Saint_Vincent_and_the_Grenadines\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Samoa\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Monarchy_of_the_Solomon_Islands\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Spain\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Sweden\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Thailand\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Tonga\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Monarchy_of_Tuvalu\n", + "1830\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Anglo-Corsican_Kingdom\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/History_of_Corsica\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Revolutionary_France\n", + "469\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/George_III\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Brazil\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Empire_of_Brazil\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Pedro_I_of_Brazil\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Pedro_II_of_Brazil\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Kingdom_of_Bulgaria\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Simeon_Saxe-Coburg-Gotha\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Commonwealth_republic\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Monarchy_of_Fiji\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Queen_of_the_Gambia\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Queen_of_Ghana\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Queen_of_Guyana\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Queen_of_Trinidad_and_Tobago\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Grand_Principality_of_Finland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Alexander_I_of_Russia\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Autocracy\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Absolute_monarchy\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/France\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Napoleon_I_of_France\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Bourbon_Restoration\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Louis_XVIII_of_France\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Charles_X_of_France\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/July_Monarchy\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Louis-Philippe\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Second_French_Empire\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Napoleon_III\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/German_Empire\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Constitution_of_the_German_Empire\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Greece\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Constantine_II_of_Greece\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Greek_military_junta_of_1967%E2%80%9374\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Greek_plebiscite,_1974\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Kingdom_of_Hawaii\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Kamehameha_III\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/1840_Constitution_of_the_Kingdom_of_Hawaii\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Overthrow_of_the_Kingdom_of_Hawaii#Coup_d.27état\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Kingdom_of_Hungary\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Austria-Hungary\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Hungary\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Iceland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Monarchy_of_Iceland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Iran\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Mohammad_Reza_Pahlavi\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Persian_Constitutional_Revolution\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Italy\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Korean_Empire\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Kingdom_of_Laos\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Savang_Vatthana\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Pathet_Lao\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Malta\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Elizabeth_II\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Mexico\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0\n", + "PAGE HAS NO LINKS: /wiki/First_Mexican_Empire\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Agust%C3%ADn_de_Iturbide\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Napoleon_III_of_France\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Maximilian_of_Habsburg\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Second_Mexican_Empire\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Montenegro\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Serbia\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Kingdom_of_Yugoslavia\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Nepal\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Gyanendra_of_Nepal\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Ottoman_Empire\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Kingdom_of_Afghanistan\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Mohammad_Zahir_Shah\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Polish%E2%80%93Lithuanian_Commonwealth\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Union_of_Lublin\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Constitution_of_May_3,_1791\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Norman_Davies\n", + "1830\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Portugal\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Manuel_II_of_Portugal\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/United_Kingdom_of_Portugal,_Brazil_and_the_Algarves\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Kingdom_of_Romania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Michael_I_of_Romania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Kingdom_of_Serbia\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Karadjordjevic\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Kingdom_of_Yugoslavia\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Kingdom_of_Serbs,_Croats_and_Slovenes\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Kingdom_of_Yugoslavia\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Peter_II_of_Yugoslavia\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Andorra\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Coregency\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Bishop_of_Urgell\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/President_of_France\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Andorra\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Monaco\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Liechtenstein\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Prince\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Belgium\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Popular_monarchy\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Monarchy_of_Belgium\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Japan\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Emperor\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Luxembourg\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Grand_Duke\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Malaysia\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Federation\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Elective_monarchy\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Yang_di-Pertuan_Agong\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/States_and_federal_territories_of_Malaysia\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Australian_Monarchist_League\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Monarchism\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Figurehead\n", + "494\n", + "494\n", + "494\n", + "494\n", + "494\n", + "494\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/OCLC\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Vernon_Bogdanor\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Parliamentary_Affairs\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Digital_object_identifier\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Oxford_University_Press\n", + "494\n", + "494\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/G._W._F._Hegel\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Cambridge_University_Press\n", + "494\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Digital_object_identifier\n", + "494\n", + "494\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Baron_de_Montesquieu\n", + "494\n", + "494\n", + "494\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/John_Locke\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Yale_University_Press\n", + "494\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Integrated_Authority_File\n", + "356\n", + "356\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Main_Page\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Main_Page\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Charles_II_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Order_of_the_Garter#Habit_and_insignia\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/John_Michael_Wright\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/King_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/List_of_Scottish_monarchs\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/List_of_Irish_monarchs\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Style_of_the_British_sovereign#Styles_of_English_and_Scottish_sovereigns\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Coronation\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Charles_I_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/James_II_%26_VII\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/King_of_Scotland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Charles_I_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Old_Style_and_New_Style_dates\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/St_James%27s_Palace\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Old_Style_and_New_Style_dates\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Whitehall_Palace\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Westminster_Abbey\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Catherine_of_Braganza\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/James,_Duke_of_Monmouth\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Charles_FitzCharles,_1st_Earl_of_Plymouth\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Charles_FitzRoy,_2nd_Duke_of_Cleveland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Charlotte_Lee,_Countess_of_Lichfield\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Henry_FitzRoy,_1st_Duke_of_Grafton\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/George_FitzRoy,_1st_Duke_of_Northumberland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Charles_Beauclerk,_1st_Duke_of_St_Albans\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Charles_Lennox,_1st_Duke_of_Richmond\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Dynasty\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/House_of_Stuart\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Charles_I_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Henrietta_Maria_of_France\n", + "548\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Kingdom_of_Scotland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Kingdom_of_Ireland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Restoration_(1660)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Charles_I_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Charles_I_of_England#Execution\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Palace_of_Whitehall\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/English_Civil_War\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Parliament_of_Scotland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Interregnum_(England)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Commonwealth_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Oliver_Cromwell\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Battle_of_Worcester\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Escape_of_Charles_II\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Dutch_Republic\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Spanish_Netherlands\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/English_Restoration\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Cavalier_Parliament\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Clarendon_Code\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Established_Church\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Church_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Second_Anglo-Dutch_War\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Treaty_of_Dover\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Louis_XIV_of_France\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Third_Anglo-Dutch_War\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Freedom_of_religion\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Dissenter\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Royal_Declaration_of_Indulgence\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/English_Parliament\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Titus_Oates\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Popish_Plot\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Exclusion_Crisis\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/James_II_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/British_Whig_Party\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Tory\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Rye_House_Plot\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Roman_Catholic_Church\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Puritans\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Catherine_of_Braganza\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Justus_van_Egmont\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/William_Dobson\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/St_James%27s_Palace\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Charles_I_of_England\n", + "548\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Kingdom_of_Scotland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Kingdom_of_Ireland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Henrietta_Maria_of_France\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Louis_XIII_of_France\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Church_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Presbyterianism\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Catholic_Church\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Chapel_Royal\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Bishop_of_London\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/William_Laud\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Edward_Sackville,_4th_Earl_of_Dorset#Family\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Marie_de%27_Medici\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Duke_of_Cornwall\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Duke_of_Rothesay\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Prince_of_Wales\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Roundhead\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Puritan\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/English_Civil_War\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Battle_of_Edgehill\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/West_Country\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Falmouth,_Cornwall\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Pendennis_Castle\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Isles_of_Scilly\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Jersey\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Louis_XIV_of_France\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Second_English_Civil_War\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/The_Hague\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Mary,_Princess_Royal_and_Princess_of_Orange\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/William_II,_Prince_of_Orange\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Cavalier\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Engager\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/James_Hamilton,_1st_Duke_of_Hamilton\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Battle_of_Preston_(1648)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Lucy_Walter\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/James_Scott,_1st_Duke_of_Monmouth\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Duke_of_Monmouth\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0\n", + "PAGE HAS NO LINKS: /wiki/Duke_of_Buccleuch\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Covenanter\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Parliament_of_Scotland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Mercat_Cross,_Edinburgh\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/James_Graham,_1st_Marquess_of_Montrose\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Orkney_Islands\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Treaty_of_Breda_(1650)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Breda\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Solemn_League_and_Covenant\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Presbyterian_church_governance\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Episcopy\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Philippe_de_Champaigne\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Battle_of_Dunbar_(1650)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Oliver_Cromwell\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Scone_Abbey\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Archibald_Campbell,_1st_Marquess_of_Argyll\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Battle_of_Worcester\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Royal_Oak_(tree)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Boscobel_House\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Escape_of_Charles_II\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Normandy\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Pound_sterling\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Instrument_of_Government\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Lord_Protector#Cromwellian_Commonwealth\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/British_Isles\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Stuart_family\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Dutch_Republic\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Southern_Netherlands\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Treaty_of_Brussels_(1656)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Treaty_of_Paris_(1657)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/James_II_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Battle_of_the_Dunes_(1658)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Restoration_(1660)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Richard_Cromwell\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Rump_Parliament\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/George_Monck\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/City_of_London\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Long_Parliament\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Pride%27s_Purge\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Parliament_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Convention_Parliament_(1660)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Declaration_of_Breda\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Breda\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Irish_Convention_(1660)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Lieve_Verschuier\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Scheveningen\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Dover\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Act_of_Indemnity_and_Oblivion\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/List_of_regicides_of_Charles_I\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Hanged,_drawn_and_quartered\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Oliver_Cromwell\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Henry_Ireton\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/John_Bradshaw_(Judge)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Posthumous_execution\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Royal_household\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Chimney_money\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Henry_Stuart,_Duke_of_Gloucester\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Mary,_Princess_Royal_and_Princess_of_Orange\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Smallpox\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Anne_Hyde\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Lord_Chancellor\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Edward_Hyde,_1st_Earl_of_Clarendon\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/James_II_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Earl_of_Clarendon\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Westminster_Abbey\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Coronation_of_the_British_monarch\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Cavalier_Parliament\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Non-conformist\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Church_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Corporation_Act_1661\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Act_of_Uniformity_1662\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Book_of_Common_Prayer\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Conventicle_Act_1664\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Five_Mile_Act_1665\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Puritan\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/English_Interregnum\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Oliver_Cromwell\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Restoration_comedy\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Restoration_literature\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Libertine\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/John_Wilmot,_2nd_Earl_of_Rochester\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Great_Plague_of_London\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Salisbury\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Oxford\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Great_Fire_of_London\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Pudding_Lane\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/St_Paul%27s_Cathedral\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Robert_Hubert\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Portuguese_Restoration_War\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Dynastic_union\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Treaty_of_the_Pyrenees\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Catherine_of_Braganza\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Luisa_of_Medina-Sidonia\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Dowry\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Tangier\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Seven_islands_of_Bombay\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/British_Empire\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Brazil\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/East_Indies\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Portsmouth\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Anglican\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Sale_of_Dunkirk\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Louis_XIV_of_France\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/John_Roettier\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Second_Dutch_War\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Navigation_Acts\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Dutch_Republic\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/First_Dutch_War\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/States_General_of_the_Netherlands\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Dutch_Gift\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Second_Dutch_War\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/New_Amsterdam\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Battle_of_Lowestoft\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Raid_on_the_Medway\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/River_Thames\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/HMS_Royal_Charles_(1655)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Treaty_of_Breda_(1667)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Edward_Hyde,_1st_Earl_of_Clarendon\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/High_treason\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Acronym\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Cabal\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Thomas_Clifford,_1st_Baron_Clifford\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Henry_Bennet,_1st_Earl_of_Arlington\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/George_Villiers,_2nd_Duke_of_Buckingham\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Anthony_Ashley_Cooper,_1st_Earl_of_Shaftesbury\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/John_Maitland,_1st_Duke_of_Lauderdale\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/War_of_Devolution\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Triple_Alliance_(1668)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Treaty_of_Dover\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/East_India_Company\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Criminal_jurisdiction\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Bombay\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/English_Tangier\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Hudson_Bay\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Hudson%27s_Bay_Company\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Rupert%27s_Land\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Prince_Rupert_of_the_Rhine\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Royal_Declaration_of_Indulgence\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Penal_law_(Britain)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Third_Anglo-Dutch_War\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Test_Act\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Eucharist\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Superstition\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Idolatry\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Thomas_Osborne,_1st_Duke_of_Leeds\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Pineapple\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Hendrick_Danckerts\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Miscarriage\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Stillbirth\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Heir_presumptive\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Mary_II_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/William_III_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Titus_Oates\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Society_of_Jesus\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Popish_Plot\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/High_treason\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Louis_XIV_of_France\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Lord_High_Treasurer\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/House_of_Lords\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Tower_of_London\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Anthony_Ashley_Cooper,_1st_Earl_of_Shaftesbury\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Exclusion_Bill\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Succession_to_the_British_throne\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Duke_of_Monmouth\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Tory\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/British_Whig_Party\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/John_Riley_(painter)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Rye_House_Plot\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Newmarket,_Suffolk\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Arthur_Capell,_1st_Earl_of_Essex\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Algernon_Sydney\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/William_Russell,_Lord_Russell\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Apoplexy\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Whitehall_Palace\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Uremia\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Bloodletting\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Cupping_therapy\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Louise_de_K%C3%A9rouaille,_Duchess_of_Portsmouth\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0\n", + "PAGE HAS NO LINKS: /wiki/Nell_Gwyn\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Westminster_Abbey\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/James_II_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Parliament_Square,_Edinburgh\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Ronald_Hutton\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Hilaire_Belloc\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Barbara_Palmer,_1st_Duchess_of_Cleveland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Duke_of_Cleveland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Moll_Davis\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Nell_Gwyn\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Elizabeth_Killigrew,_Viscountess_Shannon\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Catherine_Pegge\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Lucy_Walter\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Louise_de_K%C3%A9rouaille,_Duchess_of_Portsmouth\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Duke_of_Buccleuch\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Duke_of_Richmond\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Duke_of_Grafton\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Duke_of_St_Albans\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Diana,_Princess_of_Wales\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Henry_FitzRoy,_1st_Duke_of_Grafton\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Charles_Lennox,_1st_Duke_of_Richmond\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Prince_William,_Duke_of_Cambridge\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/James_Scott,_1st_Duke_of_Monmouth\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Battle_of_Sedgemoor\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Glorious_Revolution\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Grinling_Gibbons\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Royal_Hospital_Chelsea\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Despotism\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/John_Evelyn\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/John_Wilmot,_2nd_Earl_of_Rochester\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Royal_Observatory,_Greenwich\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Royal_Society\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Robert_Hooke\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Robert_Boyle\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Isaac_Newton\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Christopher_Wren\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Great_Fire_of_London\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Royal_Hospital_Chelsea\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/English_Restoration\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Oak_Apple_Day\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Soho_Square\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Gloucester\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Lichfield_Cathedral\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Cultural_depictions_of_Charles_II_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Charleston,_South_Carolina\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/South_Kingstown,_Rhode_Island\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Style_(manner_of_address)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/List_of_monarchs_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/List_of_Monarchs_of_Scotland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/English_Kings_of_France\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Kingdom_of_Ireland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Fidei_defensor\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/English_claims_to_the_French_throne\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Edward_III_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Order_of_the_Garter\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Royal_coat_of_arms_of_the_United_Kingdom\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Label_(heraldry)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Argent\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Quartering_(heraldry)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Azure_(heraldry)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Fleurs-de-lis\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Or_(heraldry)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Gules\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Attitude_(heraldry)#Passant\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Pale_(heraldry)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Royal_Arms_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Rampant\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Tressure\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Royal_coat_of_arms_of_Scotland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Coat_of_arms_of_Ireland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Descendants_of_Charles_II_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/James_de_la_Cloche\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Lucy_Walter\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/James_Scott,_1st_Duke_of_Monmouth\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Duke_of_Monmouth\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Duke_of_Buccleuch\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Sarah,_Duchess_of_York\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Elizabeth_Killigrew,_Viscountess_Shannon\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Robert_Killigrew\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Francis_Boyle,_1st_Viscount_Shannon\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Charlotte_FitzRoy,_Countess_of_Yarmouth\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/William_Paston,_2nd_Earl_of_Yarmouth\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Catherine_Pegge\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Charles_FitzCharles,_1st_Earl_of_Plymouth\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Earl_of_Plymouth\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Catherine_FitzCharles\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Barbara_Palmer,_1st_Duchess_of_Cleveland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Roger_Palmer,_1st_Earl_of_Castlemaine\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Duke_of_Cleveland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Anne_Lennard,_Countess_of_Sussex\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Thomas_Lennard,_1st_Earl_of_Sussex\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Sarah,_Duchess_of_York\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Charles_FitzRoy,_2nd_Duke_of_Cleveland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Duke_of_Southampton\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Duke_of_Cleveland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Henry_FitzRoy,_1st_Duke_of_Grafton\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Earl_of_Euston\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Duke_of_Grafton\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Diana,_Princess_of_Wales\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Charlotte_Lee,_Countess_of_Lichfield\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Edward_Lee,_1st_Earl_of_Lichfield\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/George_FitzRoy,_1st_Duke_of_Northumberland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Earl_of_Northumberland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Duke_of_Northumberland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Lady_Barbara_FitzRoy\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/John_Churchill\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Dukes_of_Marlborough\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Nell_Gwyn\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Charles_Beauclerk,_1st_Duke_of_St_Albans\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Duke_of_St_Albans\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Louise_de_K%C3%A9rouaille,_Duchess_of_Portsmouth\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Duke_of_Portsmouth\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Charles_Lennox,_1st_Duke_of_Richmond\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Duke_of_Richmond\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Duke_of_Lennox\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Diana,_Princess_of_Wales\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Camilla,_Duchess_of_Cornwall\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Sarah,_Duchess_of_York\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Moll_Davis\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Lady_Mary_Tudor\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Edward_Radclyffe,_2nd_Earl_of_Derwentwater\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Henry_Graham_(of_Levens)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Hortense_Mancini\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Winifred_Wells\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Elizabeth,_Countess_of_Falmouth\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Charles_Berkeley,_1st_Earl_of_Falmouth\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Earl_of_Kildare\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Henry_Stuart,_Lord_Darnley\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/James_VI_and_I\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Mary,_Queen_of_Scots\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Charles_I_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Frederick_II_of_Denmark\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Anne_of_Denmark\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Sophie_of_Mecklenburg-G%C3%BCstrow\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Antoine_of_Navarre\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Henry_IV_of_France\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Jeanne_III_of_Navarre\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Henrietta_Maria_of_France\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Francesco_I_de%27_Medici,_Grand_Duke_of_Tuscany\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Marie_de%27_Medici\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Joanna_of_Austria,_Grand_Duchess_of_Tuscany\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Battle_of_Worcester\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Julian_calendar\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Old_Style_and_New_Style_dates\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Rijksmuseum_Amsterdam\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Samuel_Pepys\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Thomas_Hearne_(antiquarian)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Elias_Ashmole\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/British_Medical_Journal\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Digital_object_identifier\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/JSTOR\n", + "494\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Encyclop%C3%A6dia_Britannica_Eleventh_Edition\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/George_Cokayne\n", + "494\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Antonia_Fraser\n", + "494\n", + "494\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Hudson%27s_Bay_Company\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/David_Hume\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Ronald_Hutton\n", + "494\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Ji%C5%99%C3%AD_Louda\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Michael_Maclagan\n", + "494\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Lewis_Melville\n", + "494\n", + "494\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Hesketh_Pearson\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Dictionary_of_National_Biography#Oxford_Dictionary_of_National_Biography\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0\n", + "PAGE HAS NO LINKS: /wiki/Digital_object_identifier\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Dictionary_of_National_Biography#Oxford_Dictionary_of_National_Biography\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Digital_object_identifier\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Alison_Weir_(historian)\n", + "494\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Dictionary_of_National_Biography#Oxford_Dictionary_of_National_Biography\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Digital_object_identifier\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/JSTOR\n", + "494\n", + "494\n", + "494\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/John_Phillipps_Kenyon\n", + "494\n", + "494\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Wikisource\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/The_National_Archives_(United_Kingdom)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/House_of_Stuart\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Charles_I_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/King_of_Scotland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/English_Interregnum\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Charles_I_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/King_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/King_of_Ireland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/James_II_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/King_of_Scotland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/List_of_British_monarchs\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Charles_I_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Duke_of_Cornwall\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Duke_of_Rothesay\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/James_Francis_Edward\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Prince_of_Wales\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/List_of_English_monarchs\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/List_of_Scottish_monarchs\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/List_of_British_monarchs\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/%C3%86thelstan\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Edmund_I\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Eadred\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Eadwig\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Edgar_the_Peaceful\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Edward_the_Martyr\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/%C3%86thelred_the_Unready\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Sweyn_Forkbeard\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Edmund_Ironside\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Cnut_the_Great\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Harold_Harefoot\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Harthacnut\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Edward_the_Confessor\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Harold_Godwinson\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Edgar_%C3%86theling\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/William_the_Conqueror\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/William_II_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Henry_I_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Stephen,_King_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Empress_Matilda\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Henry_II_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Henry_the_Young_King\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Richard_I_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/John,_King_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Henry_III_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Edward_I_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Edward_II_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Edward_III_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Richard_II_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Henry_IV_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Henry_V_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Henry_VI_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Edward_IV_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Edward_V_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Richard_III_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Henry_VII_of_England\n", + "559\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Edward_VI_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Lady_Jane_Grey\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Mary_I_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Philip_II_of_Spain\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Elizabeth_I_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Kenneth_MacAlpin\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Domnall_mac_Ailp%C3%ADn\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Causant%C3%ADn_mac_Cin%C3%A1eda\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/%C3%81ed_mac_Cin%C3%A1eda\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Giric\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Eochaid,_son_of_Rhun\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Donald_II_of_Scotland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Constantine_II_of_Scotland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Malcolm_I_of_Scotland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Indulf\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Dub,_King_of_Scotland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Cuil%C3%A9n\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Amla%C3%ADb,_King_of_Scotland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Kenneth_II_of_Scotland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Constantine_III_of_Scotland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Kenneth_III_of_Scotland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Malcolm_II_of_Scotland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Duncan_I_of_Scotland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Macbeth,_King_of_Scotland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Lulach\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Malcolm_III_of_Scotland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Donald_III_of_Scotland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Duncan_II_of_Scotland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Donald_III_of_Scotland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Edgar,_King_of_Scotland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Alexander_I_of_Scotland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/David_I_of_Scotland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Malcolm_IV_of_Scotland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/William_the_Lion\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Alexander_II_of_Scotland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Alexander_III_of_Scotland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Margaret,_Maid_of_Norway\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Guardian_of_Scotland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/John_Balliol\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Guardian_of_Scotland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Robert_the_Bruce\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/David_II_of_Scotland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Edward_Balliol\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Robert_II_of_Scotland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Robert_III_of_Scotland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/James_I_of_Scotland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/James_II_of_Scotland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/James_III_of_Scotland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/James_IV_of_Scotland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/James_V_of_Scotland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Mary,_Queen_of_Scots\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/James_VI_and_I\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Union_of_the_Crowns\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/James_VI_and_I\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Charles_I_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Commonwealth_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/James_II_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/William_III_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Mary_II_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Anne,_Queen_of_Great_Britain\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Acts_of_Union_1707\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Anne,_Queen_of_Great_Britain\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/George_I_of_Great_Britain\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/George_II_of_Great_Britain\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/George_III_of_the_United_Kingdom\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/George_IV_of_the_United_Kingdom\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/William_IV_of_the_United_Kingdom\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Queen_Victoria\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Edward_VII\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/George_V\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Edward_VIII\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/George_VI\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Elizabeth_II\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Duke_of_Cornwall\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Edward_the_Black_Prince\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Richard_II_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Henry_V_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Henry_VI_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Edward_of_Westminster,_Prince_of_Wales\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Richard_of_York,_3rd_Duke_of_York\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Edward_V_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Edward_of_Middleham,_Prince_of_Wales\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Arthur,_Prince_of_Wales\n", + "559\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Henry,_Duke_of_Cornwall\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Henry,_Duke_of_Cornwall\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Henry,_Duke_of_Cornwall\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Edward_VI_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Henry_Frederick,_Prince_of_Wales\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Charles_I_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/James_Francis_Edward_Stuart\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/George_II_of_Great_Britain\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Frederick,_Prince_of_Wales\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/George_IV_of_the_United_Kingdom\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Edward_VII\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/George_V\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Edward_VIII\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Charles,_Prince_of_Wales\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Duke_of_Rothesay\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/David_Stewart,_Duke_of_Rothesay\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/James_I_of_Scotland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Alexander_Stewart,_Duke_of_Rothesay\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/James_II_of_Scotland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/James_III_of_Scotland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/James_IV_of_Scotland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/James,_Duke_of_Rothesay_(born_1507)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0\n", + "PAGE HAS NO LINKS: /wiki/Arthur_Stewart,_Duke_of_Rothesay\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/James_V_of_Scotland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/James,_Duke_of_Rothesay_(born_1540)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/James_VI_and_I\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Henry_Frederick,_Prince_of_Wales\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Charles_I_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/James_Francis_Edward_Stuart\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/George_II_of_Great_Britain\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Frederick,_Prince_of_Wales\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/George_IV_of_the_United_Kingdom\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Edward_VII\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/George_V\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Edward_VIII\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Charles,_Prince_of_Wales\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Virtual_International_Authority_File\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Library_of_Congress_Control_Number\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/International_Standard_Name_Identifier\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Integrated_Authority_File\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/LIBRIS\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Syst%C3%A8me_universitaire_de_documentation\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Biblioth%C3%A8que_nationale_de_France\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/National_Library_of_Australia\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Institute_for_Advanced_Technology_in_the_Humanities\n", + "486\n", + "486\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Main_Page\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Main_Page\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/James_II_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/James_II_(disambiguation)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Peter_Lely\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/King_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/List_of_Scottish_monarchs\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/List_of_Irish_monarchs\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Style_of_the_British_sovereign#Styles_of_English_and_Scottish_sovereigns\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Coronation\n", + "487\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/William_III_%26_II\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Mary_II\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Old_Style_and_New_Style_dates\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/St._James%27s_Palace\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Old_Style_and_New_Style_dates\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Ch%C3%A2teau_de_Saint-Germain-en-Laye\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Kingdom_of_France\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Anne_Hyde\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Mary_of_Modena\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Mary_II_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Anne,_Queen_of_Great_Britain\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/James_Francis_Edward_Stuart\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Louisa_Maria_Teresa_Stuart\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Henrietta_FitzJames\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/James_FitzJames,_1st_Duke_of_Berwick\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Henry_FitzJames\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Dynasty\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/House_of_Stuart\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Charles_I_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Henrietta_Maria_of_France\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Roman_Catholicism_in_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Anglicanism\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Old_Style_and_New_Style_dates\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/List_of_English_monarchs\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/List_of_Irish_monarchs\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/List_of_Scottish_monarchs\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Glorious_Revolution\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Roman_Catholicism\n", + "548\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Kingdom_of_Scotland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Kingdom_of_Ireland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Charles_I_of_England\n", + "487\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Absolutism_(European_history)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/James_Francis_Edward\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/William_III_of_Orange\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Dutch_Republic\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Mary_II_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Jacobitism\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Williamite\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Battle_of_the_Boyne\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Kingdom_of_France\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Pretender\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/King_Louis_XIV\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Parliament_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Religious_liberty\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Anglican\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Bill_of_Rights_1689\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Charles_I_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Sir_Peter_Lely\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Charles_I_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Henrietta_Maria_of_France\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/St._James%27s_Palace\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/William_Laud\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Church_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Archbishop_of_Canterbury\n", + "487\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/George_Villiers,_1st_Duke_of_Buckingham\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/George_Villiers,_2nd_Duke_of_Buckingham\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Lord_High_Admiral_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Restoration_(England)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Duke_of_York\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Order_of_the_Garter\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/English_Parliament\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/English_Civil_War\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Battle_of_Edgehill\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Oxford\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Royalist\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Master_of_Arts\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Siege_of_Oxford\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/St._James%27s_Palace\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Joseph_Bampfield\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/The_Hague\n", + "487\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Parliament_of_Scotland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Parliament_of_Ireland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/King_of_Scotland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Scone,_Perth_and_Kinross\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Jersey\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Crown_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Henri_de_la_Tour_d%27Auvergne,_Vicomte_de_Turenne\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Fronde\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Oliver_Cromwell\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Bruges\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Henry_Stuart,_Duke_of_Gloucester\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Louis_II_de_Bourbon,_Prince_de_Cond%C3%A9\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Battle_of_the_Dunes_(1658)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Archbishop_Peter_Talbot\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Richard_Talbot,_1st_Earl_of_Tyrconnell\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Treaty_of_the_Pyrenees\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Richard_Cromwell\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Lord_Protector\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Commonwealth_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Heir_presumptive\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Duke_of_Albany\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Anne_Hyde\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Edward_Hyde,_1st_Earl_of_Clarendon\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/English_Restoration\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Commoner\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Mary_II_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Anne,_Queen_of_Great_Britain\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Samuel_Pepys\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Arabella_Churchill_(royal_mistress)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Catherine_Sedley,_Countess_of_Dorchester\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/John_Riley_(painter)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Lord_High_Admiral_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Portsmouth\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Lord_Warden_of_the_Cinque_Ports\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Royal_Navy\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Second_Anglo-Dutch_War\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Third_Anglo-Dutch_War\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Raid_on_the_Medway\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Delaware_River\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Connecticut_River\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/New_Netherland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/New_Amsterdam\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Province_of_New_York\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/City_of_New_York\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/George_Carteret\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/John_Berkeley,_1st_Baron_Berkeley_of_Stratton\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Fort_Orange\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Hudson_River\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Albany,_New_York\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Hudson%27s_Bay_Company\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Royal_African_Company\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Slave_trade\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Great_Fire_of_London\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Thomas_Bloodworth\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Mary_of_Modena\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Eucharist\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/John_Churchill,_1st_Duke_of_Marlborough\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/George_Legge,_1st_Baron_Dartmouth\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Huguenot\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Louis_de_Duras,_2nd_Earl_of_Feversham\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Test_Act\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Transubstantiation\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Church_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Mary_of_Modena\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Proxy_marriage\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0\n", + "PAGE HAS NO LINKS: /wiki/Nathaniel_Crew,_3rd_Baron_Crew\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Bishop_of_Oxford\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Pope_Clement_X\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/William_III_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Mary,_Princess_Royal_and_Princess_of_Orange\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Catherine_of_Braganza\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Defrocked\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Titus_Oates\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Popish_Plot\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/James_Scott,_1st_Duke_of_Monmouth\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Anthony_Ashley-Cooper,_1st_Earl_of_Shaftesbury\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/James_Scott,_1st_Duke_of_Monmouth\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Exclusion_Bill\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/List_of_Parliaments_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/British_Whig_Party\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Tory\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Brussels\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Holyrood_Palace\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Thomas_Osborne,_1st_Duke_of_Leeds\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Republicanism\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Commonwealth_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Rye_House_Plot\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/British_Whig_Party\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Arthur_Capell,_1st_Earl_of_Essex\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/James_Scott,_1st_Duke_of_Monmouth\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Her_Majesty%27s_Most_Honourable_Privy_Council\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Apoplexy\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Westminster_Abbey\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/List_of_Parliaments_of_England#Parliament_of_James_II\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Loyal_Parliament\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Henry_Hyde,_2nd_Earl_of_Clarendon\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Laurence_Hyde,_1st_Earl_of_Rochester\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/George_Savile,_1st_Marquess_of_Halifax\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Tonnage_and_poundage\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Monmouth_Rebellion\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Argyll%27s_Rising\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Monmouth_Rebellion\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/James_Scott,_1st_Duke_of_Monmouth\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Archibald_Campbell,_9th_Earl_of_Argyll\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Earl_of_Argyll\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Dutch_Republic\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/William_III_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Clan_Campbell\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Inchinnan\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Lyme_Regis\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Battle_of_Sedgemoor\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Tower_of_London\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/George_Jeffreys,_1st_Baron_Jeffreys\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Penal_transportation\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Indentured_servant#Caribbean\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/West_Indies\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Bloody_Assizes\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Standing_army\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Royal_Prerogative\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Parliamentary_session\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Royal_sign-manual\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Laurence_Hyde,_1st_Earl_of_Rochester\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Repeal\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Penal_law_(British)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Papal_nuncio\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Ferdinando_d%27Adda\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Mary_I_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Society_of_Jesus\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Edward_Petre\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Secretary_of_State_(England)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Robert_Spencer,_2nd_Earl_of_Sunderland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Heneage_Finch,_1st_Earl_of_Aylesford\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Declaration_of_Indulgence\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/English_Dissenters\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Statue_of_James_II,_Trafalgar_Square\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Trafalgar_Square\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Supreme_Governor_of_the_Church_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/University_of_Oxford\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Christ_Church,_Oxford\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/University_College,_Oxford\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Magdalen_College,_Oxford\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Anthony_Farmer\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Lord_Lieutenant\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Livery_companies\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Commission_of_the_Peace\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Baptists\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Quakers\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Baptists\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Congregationalists\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Presbyterians\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Catholics\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Anglicans\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Writ_of_election\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Glorious_Revolution\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/William_III_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Seven_Bishops\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/William_Sancroft\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Seditious_libel\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/James_Francis_Edward_Stuart\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Immortal_Seven\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/John_Churchill,_1st_Duke_of_Marlborough\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/List_of_deserters_from_James_II_to_William_of_Orange\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Anne,_Queen_of_Great_Britain\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Great_Seal_of_the_Realm\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/River_Thames\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Kent\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Convention_Parliament_(1689)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Abdication\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Parliament_of_Scotland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/English_Bill_of_Rights\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Williamite_War_in_Ireland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Patriot_Parliament\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Bill_of_attainder#The_Great_Act_of_Attainder\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Battle_of_the_Boyne\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Kinsale\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Breand%C3%A1n_%C3%93_Buachalla\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/%C3%89amonn_%C3%93_Ciardha\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Ch%C3%A2teau_de_Saint-Germain-en-Laye\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Saint-Germain-en-Laye\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/John_Drummond,_1st_Earl_of_Melfort\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Louisa_Maria_Teresa_Stuart\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Jacobite_assassination_plot_1696\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Royal_elections_in_Poland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Polish-Lithuanian_Commonwealth\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Penitent\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Brain_haemorrhage\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Saint-Germain-en-Laye\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Chaillot\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Scots_College_(Paris)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Saint-Omer\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Sarcophagus\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Benedictine\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Henri-Emmanuel_de_Roquette\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/French_Revolution\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Archbishop_of_Paris\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/James_Francis_Edward_Stuart\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Anne,_Queen_of_Great_Britain\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Act_of_Settlement_1701\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Sophia_of_Hanover\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/James_I_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Elizabeth_of_Bohemia\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Charles_I_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/George_I_of_Great_Britain\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/James_Francis_Edward_Stuart\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Jacobitism\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Jacobite_rising_of_1715\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Jacobite_rising_of_1745\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Charles_Edward_Stuart\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Henry_Benedict_Stuart\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Dean_of_the_College_of_Cardinals\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Jacobite_succession\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Thomas_Babington_Macaulay,_1st_Baron_Macaulay\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Whig_history\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Hilaire_Belloc\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Apologetics\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Whig_history\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Thomas_Babington_Macaulay,_1st_Baron_Macaulay\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/G._M._Trevelyan\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/David_Ogg_(historian)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/A._W._Ward\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Dictionary_of_National_Biography\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Hilaire_Belloc\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Maurice_Ashley_(historian)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/W._A._Speck\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Oxford_Dictionary_of_National_Biography\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Timothy_J._G._Harris\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Steven_Pincus\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Scott_Sowerby\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Half_crown_(British_coin)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Jacobitism\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/List_of_monarchs_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/List_of_Monarchs_of_Scotland\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0\n", + "PAGE HAS NO LINKS: /wiki/English_Kings_of_France\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Kingdom_of_Ireland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Fidei_defensor\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/English_claims_to_the_French_throne\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Edward_III_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/George_III_of_the_United_Kingdom\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Duke_of_Normandy\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Order_of_the_Garter\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Royal_coat_of_arms_of_the_United_Kingdom\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Label_(heraldry)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Ermine_(heraldry)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Quartering_(heraldry)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Azure_(heraldry)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Fleurs-de-lis\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Or_(heraldry)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Gules\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Attitude_(heraldry)#Passant\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Pale_(heraldry)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Coat_of_arms_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Rampant\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Tressure\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Royal_coat_of_arms_of_Scotland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Argent\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Coat_of_arms_of_Ireland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Monarchy_of_the_United_Kingdom\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/House_of_Stuart\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Mary_II_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Anne,_Queen_of_Great_Britain\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/James_Francis_Edward_Stuart\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Louisa_Maria_Teresa_Stuart\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Charles_Edward_Stuart\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Henry_Benedict_Stuart\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Charlotte_Stuart,_Duchess_of_Albany\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Anne_Hyde\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Charles_Stuart,_Duke_of_Cambridge_(1660%E2%80%931661)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Mary_II_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/William_III_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/James_Stuart,_Duke_of_Cambridge\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Anne,_Queen_of_Great_Britain\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Prince_George_of_Denmark\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Charles_Stuart,_Duke_of_Kendal\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Edgar_Stuart,_Duke_of_Cambridge\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Mary_of_Modena\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Isabel_Stuart\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Westminster_Abbey\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Charles_Stuart,_Duke_of_Cambridge_(born_1677)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/James_Francis_Edward_Stuart\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Maria_Clementina_Sobieska\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Louisa_Maria_Teresa_Stuart\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Arabella_Churchill_(royal_mistress)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Henrietta_FitzJames\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Henry_Waldegrave,_1st_Baron_Waldegrave\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Piers_Butler,_3rd_Viscount_Galmoye\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/James_FitzJames,_1st_Duke_of_Berwick\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Henry_FitzJames,_1st_Duke_of_Albemarle\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Catherine_Sedley\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/James_Annesley,_3rd_Earl_of_Anglesey\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/John_Sheffield,_1st_Duke_of_Buckingham_and_Normanby\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Henry_Stuart,_Lord_Darnley\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/James_VI_and_I\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Mary,_Queen_of_Scots\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Charles_I_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Frederick_II_of_Denmark\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Anne_of_Denmark\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Sophie_of_Mecklenburg-G%C3%BCstrow\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Antoine_of_Navarre\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Henry_IV_of_France\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Jeanne_III_of_Navarre\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Henrietta_Maria_of_France\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Francesco_I_de%27_Medici,_Grand_Duke_of_Tuscany\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Marie_de%27_Medici\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Joanna_of_Austria,_Grand_Duchess_of_Tuscany\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/New_Style\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/John_Somers,_1st_Baron_Somers\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/New_Style\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/English_Illustrated_Magazine\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/The_London_Gazette\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Convention_Parliament_(1689)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Parliament_of_Scotland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Alison_Weir\n", + "494\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/George_Edward_Cokayne\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Vicary_Gibbs_(St_Albans_MP)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/The_Complete_Peerage\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Samuel_Pepys\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Gilbert_Burnet\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/King_of_Scotland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Covenanter\n", + "494\n", + "494\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Parish_register\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Saint-Germain-en-Laye\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Dictionary_of_National_Biography\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Maurice_Ashley_(historian)\n", + "494\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Hilaire_Belloc\n", + "494\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Tom_Devine\n", + "494\n", + "494\n", + "494\n", + "494\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/John_Phillipps_Kenyon\n", + "494\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Ji%C5%99%C3%AD_Louda\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Michael_Maclagan\n", + "494\n", + "494\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Thomas_Babington_Macaulay,_1st_Baron_Macaulay\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/The_History_of_England_from_the_Accession_of_James_the_Second\n", + "494\n", + "494\n", + "494\n", + "494\n", + "494\n", + "494\n", + "494\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Digital_object_identifier\n", + "494\n", + "494\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Digital_object_identifier\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/National_Portrait_Gallery,_London\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/House_of_Stuart\n", + "487\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/List_of_English_monarchs\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/King_of_Scotland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/King_of_Ireland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/William_III_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Mary_II_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Heneage_Finch,_3rd_Earl_of_Winchilsea\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Lord_Warden_of_the_Cinque_Ports\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Francis_Cottington,_1st_Baron_Cottington\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Lord_High_Admiral_of_England\n", + "487\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Charles_Stewart,_6th_Duke_of_Lennox\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Lord_High_Admiral_of_Scotland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/William_Hamilton,_Duke_of_Hamilton\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/John_Maitland,_1st_Duke_of_Lauderdale\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Lord_High_Commissioner_to_the_Parliament_of_Scotland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/William_Douglas,_1st_Duke_of_Queensberry\n", + "487\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Admiralty\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/William_III_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Pretender\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Glorious_Revolution\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Jacobite_succession\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/James_Francis_Edward_Stuart\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/List_of_English_monarchs\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/List_of_Scottish_monarchs\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/List_of_British_monarchs\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/%C3%86thelstan\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Edmund_I\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Eadred\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Eadwig\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Edgar_the_Peaceful\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Edward_the_Martyr\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/%C3%86thelred_the_Unready\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Sweyn_Forkbeard\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Edmund_Ironside\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Cnut_the_Great\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Harold_Harefoot\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Harthacnut\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Edward_the_Confessor\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Harold_Godwinson\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Edgar_%C3%86theling\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/William_the_Conqueror\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/William_II_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Henry_I_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Stephen,_King_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Empress_Matilda\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Henry_II_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Henry_the_Young_King\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Richard_I_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/John,_King_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Henry_III_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Edward_I_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Edward_II_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Edward_III_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Richard_II_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Henry_IV_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Henry_V_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Henry_VI_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Edward_IV_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Edward_V_of_England\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0\n", + "PAGE HAS NO LINKS: /wiki/Richard_III_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Henry_VII_of_England\n", + "559\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Edward_VI_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Lady_Jane_Grey\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Mary_I_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Philip_II_of_Spain\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Elizabeth_I_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Kenneth_MacAlpin\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Domnall_mac_Ailp%C3%ADn\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Causant%C3%ADn_mac_Cin%C3%A1eda\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/%C3%81ed_mac_Cin%C3%A1eda\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Giric\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Eochaid,_son_of_Rhun\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Donald_II_of_Scotland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Constantine_II_of_Scotland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Malcolm_I_of_Scotland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Indulf\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Dub,_King_of_Scotland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Cuil%C3%A9n\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Amla%C3%ADb,_King_of_Scotland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Kenneth_II_of_Scotland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Constantine_III_of_Scotland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Kenneth_III_of_Scotland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Malcolm_II_of_Scotland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Duncan_I_of_Scotland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Macbeth,_King_of_Scotland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Lulach\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Malcolm_III_of_Scotland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Donald_III_of_Scotland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Duncan_II_of_Scotland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Donald_III_of_Scotland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Edgar,_King_of_Scotland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Alexander_I_of_Scotland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/David_I_of_Scotland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Malcolm_IV_of_Scotland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/William_the_Lion\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Alexander_II_of_Scotland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Alexander_III_of_Scotland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Margaret,_Maid_of_Norway\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Guardian_of_Scotland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/John_Balliol\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Guardian_of_Scotland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Robert_the_Bruce\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/David_II_of_Scotland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Edward_Balliol\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Robert_II_of_Scotland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Robert_III_of_Scotland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/James_I_of_Scotland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/James_II_of_Scotland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/James_III_of_Scotland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/James_IV_of_Scotland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/James_V_of_Scotland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Mary,_Queen_of_Scots\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/James_VI_and_I\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Union_of_the_Crowns\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/James_VI_and_I\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Charles_I_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Commonwealth_of_England\n", + "487\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/William_III_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Mary_II_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Anne,_Queen_of_Great_Britain\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Acts_of_Union_1707\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Anne,_Queen_of_Great_Britain\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/George_I_of_Great_Britain\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/George_II_of_Great_Britain\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/George_III_of_the_United_Kingdom\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/George_IV_of_the_United_Kingdom\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/William_IV_of_the_United_Kingdom\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Queen_Victoria\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Edward_VII\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/George_V\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Edward_VIII\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/George_VI\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Elizabeth_II\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Duke_of_Albany\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Robert_Stewart,_Duke_of_Albany\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Murdoch_Stewart,_Duke_of_Albany\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Alexander_Stewart,_Duke_of_Albany\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/John_Stewart,_Duke_of_Albany\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Henry_Stuart,_Lord_Darnley\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/James_VI_and_I\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Charles_I_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Prince_Leopold,_Duke_of_Albany\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Charles_Edward,_Duke_of_Saxe-Coburg_and_Gotha\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Duke_of_York\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Edmund_of_Langley,_1st_Duke_of_York\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Edward_of_Norwich,_2nd_Duke_of_York\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Richard_of_York,_3rd_Duke_of_York\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Edward_IV_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Richard_of_Shrewsbury,_Duke_of_York\n", + "559\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Charles_I_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Duke_of_York_and_Albany\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/George_V\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/George_VI\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Prince_Andrew,_Duke_of_York\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Virtual_International_Authority_File\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Library_of_Congress_Control_Number\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/International_Standard_Name_Identifier\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Integrated_Authority_File\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/LIBRIS\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Syst%C3%A8me_universitaire_de_documentation\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Biblioth%C3%A8que_nationale_de_France\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Union_List_of_Artist_Names\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Institute_for_Advanced_Technology_in_the_Humanities\n", + "459\n", + "459\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Main_Page\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Main_Page\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/William_III_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/William_III_(disambiguation)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/William_of_Orange_(disambiguation)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Godfrey_Kneller\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/King_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/King_of_Scotland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/King_of_Ireland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Styles_of_English_and_Scottish_sovereigns\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Coronation\n", + "460\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Anne,_Queen_of_Great_Britain\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Mary_II_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/List_of_monarchs_of_the_Netherlands\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/William_II,_Prince_of_Orange\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/William_IV,_Prince_of_Orange\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Principality_of_Orange\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/William_II,_Prince_of_Orange\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/John_William_Friso,_Prince_of_Orange\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Old_Style_and_New_Style_dates\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Binnenhof\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/The_Hague\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Old_Style_and_New_Style_dates\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Kensington_Palace\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Westminster_Abbey\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Mary_II_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Dynasty\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/House_of_Orange-Nassau\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/William_II,_Prince_of_Orange\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Mary,_Princess_Royal_and_Princess_of_Orange\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Protestant\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Dutch_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Prince_of_Orange\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Stadtholder\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Holland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Zeeland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Utrecht_(province)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Gelderland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Overijssel\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Dutch_Republic\n", + "548\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Kingdom_of_Ireland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Kingdom_of_Scotland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Regnal_number\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Northern_Ireland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Principality_of_Orange\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/William_II,_Prince_of_Orange\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Mary,_Princess_Royal_and_Princess_of_Orange\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Charles_I_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Mary_II_of_England\n", + "460\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Protestant\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Catholic\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Louis_XIV_of_France\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Glorious_Revolution\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Brixham\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Battle_of_the_Boyne\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/The_Twelfth\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/House_of_Stuart\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/House_of_Hanover\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/William_II,_Prince_of_Orange\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Mary,_Princess_Royal_and_Princess_of_Orange\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/The_Hague\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Dutch_Republic\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Dutch_language\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0\n", + "PAGE HAS NO LINKS: /wiki/Stadtholder\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/William_II_of_Orange\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Mary,_Princess_Royal_and_Princess_of_Orange\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Charles_I_of_England\n", + "487\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/King_James_II\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Smallpox\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Principality_of_Orange\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Princess_Royal\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Amalia_of_Solms-Braunfels\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Hoge_Raad_van_Holland_en_Zeeland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Frederick_William,_Elector_of_Brandenburg\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Louise_Henriette_of_Nassau\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Anna_Mackenzie\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Reformed_churches\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Calvinist\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Franciscus_Gomarus\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Gisbertus_Voetius\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Constantijn_Huygens\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Predestination_(Calvinism)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Divine_Providence\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/House_of_Orange-Nassau\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Jan_Davidsz_de_Heem\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Jan_Vermeer_van_Utrecht\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/House_of_Orange-Nassau\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/University_of_Leiden\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Delft\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/William_Bentinck,_1st_Earl_of_Portland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Frederick_Nassau_de_Zuylenstein\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Frederick_Henry_of_Orange\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Grand_Pensionary\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Johan_de_Witt\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Cornelis_de_Graeff\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/States_of_Holland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Smallpox\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Whitehall_Palace\n", + "487\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Orangism_(Netherlands)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Second_Anglo-Dutch_War\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Real_tennis\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Johan_de_Witt\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Gaspar_Fagel\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/First_Stadtholderless_Period\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Oliver_Cromwell\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Treaty_of_Westminster_(1654)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/First_Anglo-Dutch_War\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Act_of_Seclusion\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/English_Restoration\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/English_Commonwealth\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Orangism_(Netherlands)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Captain-General\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Dutch_States_Party\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Pensionary\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Haarlem\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Gaspar_Fagel\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Perpetual_Edict_(1667)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/States_of_Zeeland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Middelburg\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Regenten\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Council_of_State_of_the_Netherlands\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Generality_(Netherlands)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Dutch_guilder\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Calvinism\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Secret_Treaty_of_Dover\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Rump_state\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Gelderland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Dutch_States_Army\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Utrecht_(province)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Holland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/States_General_of_the_Netherlands\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Rampjaar\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Johannes_Voorhout\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Rampjaar\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Franco-Dutch_War\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Third_Anglo-Dutch_War\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Bishopric_of_M%C3%BCnster\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Electorate_of_Cologne\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Battle_of_Solebay\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Dutch_Water_Line\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Louis_XIV_of_France\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Henry_Bennet,_1st_Earl_of_Arlington\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Nieuwerbrug\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Grand_Pensionary\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Cornelis_de_Witt\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Johan_de_Witt#Year_of_Disaster\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Civil_militia\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Naarden\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Hendrik_Verhoeff\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Johan_van_Banchem\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Johan_Kievit\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Massacre_of_Glencoe\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Electorate_of_Brandenburg\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Maastricht\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Charleroi\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Lieutenant-Admiral\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Michiel_de_Ruyter\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Treaty_of_Westminster_(1674)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Overijssel\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Generality_Lands\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Zutphen\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Mary_II_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Mary_II_of_England\n", + "460\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Henry_Compton_(bishop)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Miscarriage\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Elizabeth_Hamilton,_Countess_of_Orkney\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Chambers_of_Reunion\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Edict_of_Nantes\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Huguenot\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Grand_Alliance_(League_of_Augsburg)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Holy_Roman_Empire\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Willem_Wissing\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Peter_Lely\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Exclusion_Bill\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Robert_Spencer,_2nd_Earl_of_Sunderland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Mary_of_Modena\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Open_letter\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Glorious_Revolution\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/James_Thornhill\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Guy_Fawkes_night\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Arthur_Herbert,_1st_Earl_of_Torrington\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/James_Francis_Edward_Stuart\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Seven_bishops\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Declaration_of_Indulgence\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Immortal_Seven\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Invitation_to_William\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Brixham\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Brielle\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/List_of_James_II_deserters_to_William_of_Orange\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/John_Churchill,_1st_Duke_of_Marlborough\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Great_Seal_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Thames\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Martyr\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Thomas_Murray_(artist)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Convention_Parliament_(1689)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/King_consort\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Mary_I_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Philip_II_of_Spain\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Tories_(political_faction)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/House_of_Commons_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Whig_(British_political_party)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/House_of_Lords\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Regent\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Bill_of_Rights_1689\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Heir_apparent\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Westminster_Abbey\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Bishop_of_London\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Henry_Compton_(bishop)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Archbishop_of_Canterbury\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/William_Sancroft\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Estates_of_Scotland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Toleration_Act_1689\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Religious_toleration\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Nonconformists\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Religious_liberty\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Nontrinitarianism\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Bill_of_Rights_1689\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Declaration_of_Right,_1689\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Royal_prerogative\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Right_to_petition\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Standing_army\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Right_to_bear_arms\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Excessive_bail\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Cruel_and_unusual_punishments\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Anne,_Queen_of_Great_Britain\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Divine_right_of_kings\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Jacobitism\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Nonjuring_schism\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Church_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Scottish_Episcopal_Church\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Battle_of_the_Boyne\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Jan_van_Huchtenburg\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Jacobitism\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Williamite_war_in_Ireland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Siege_of_Derry\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Siege_of_Carrickfergus\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Battle_of_the_Boyne\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Godert_de_Ginkell,_1st_Earl_of_Athlone\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Galway\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0\n", + "PAGE HAS NO LINKS: /wiki/Limerick\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Capitulation_(surrender)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Treaty_of_Limerick\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/House_of_Commons_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Earl_of_Athlone\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Jacobite_rising\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/John_Graham,_1st_Viscount_of_Dundee\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Battle_of_Killiecrankie\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/26th_(Cameronian)_Regiment_of_Foot\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Battle_of_Dunkeld\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Scottish_clan\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Massacre_of_Glencoe\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/John_Dalberg-Acton,_1st_Baron_Acton\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/John_Dalrymple,_1st_Earl_of_Stair\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Darien_scheme\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Crown_(British_coin)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/House_of_Orange-Nassau\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/George_Savile,_1st_Marquess_of_Halifax\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/English_general_election,_1690\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Thomas_Osborne,_1st_Duke_of_Leeds\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Daniel_Finch,_2nd_Earl_of_Nottingham\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Whig_Junto\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Bank_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Bank_of_Amsterdam\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Royal_Charter\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Dutch_Republic\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Bill_of_attainder\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Sir_John_Fenwick,_3rd_Baronet\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Nine_Years%27_War\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Nine_Years%27_War\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Grand_Alliance_(League_of_Augsburg)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Battle_of_La_Hougue\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Treaty_of_Limerick\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Namur_(city)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Spanish_Netherlands\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Battle_of_Landen\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Godfried_Schalcken\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Anglicanism\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/William_Bentinck,_1st_Earl_of_Portland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Earl_of_Portland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Arnold_Joost_van_Keppel,_1st_Earl_of_Albemarle\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Earl_of_Albemarle\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Arnold_van_Keppel,_1st_Earl_of_Albemarle\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Lord_Justices\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Drenthe\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Jacobite_assassination_plot_1696\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Treaty_of_Rijswijk\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Nine_Years%27_War\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Low_Countries\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/New_World\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Charles_II_of_Spain\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Leopold_I,_Holy_Roman_Emperor\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Balance_of_power_in_international_relations\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/First_Partition_Treaty\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Joseph_Ferdinand,_Electoral_Prince_of_Bavaria\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Louis_XIV_of_France\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Treaty_of_London,_1700\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Philip_V_of_Spain\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/James_Francis_Edward_Stuart\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/War_of_the_Spanish_Succession\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Prince_William,_Duke_of_Gloucester\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Act_of_Settlement_1701\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Sophia_of_Hanover\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/James_VI_and_I\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Second_Stadtholderless_Period\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/John_Michael_Rysbrack\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Queen_Square,_Bristol\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Pneumonia\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Mole_(animal)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Winston_Churchill\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/A_History_of_the_English-Speaking_Peoples\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Westminster_Abbey\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Anne,_Queen_of_Great_Britain\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Queen_regnant\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/House_of_Orange-Nassau\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/William_the_Silent\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Agnatic\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/John_William_Friso,_Prince_of_Orange\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Countess_Albertine_Agnes_of_Nassau\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Frederick_I_of_Prussia\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Primogeniture\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Countess_Louise_Henriette_of_Nassau\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Treaty_of_Utrecht\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Frederick_William_I_of_Prussia\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Louis_XIV_of_France\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/William_IV,_Prince_of_Orange\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Cultural_depictions_of_William_III_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Orange_Order\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Louis_XIV_of_France\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/War_of_the_Spanish_Succession\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/House_of_Stuart\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/James_I_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/English_Civil_War\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Glorious_Revolution\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Bill_of_Rights_1689\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Triennial_Act_1694\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Act_of_Settlement_1701\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Ulster_loyalism\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Murals_in_Northern_Ireland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Ormeau_Road\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/College_of_William_and_Mary\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Williamsburg,_Virginia\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Nassau,_Bahamas\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Nassau_County,_New_York\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Long_Island\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Princeton_University\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Princeton,_New_Jersey\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Fort_Amsterdam\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Nassau_Street_(Manhattan)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Orange_County,_New_York\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Albany,_New_York\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Orange_Order\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Battle_of_the_Boyne\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/The_Twelfth\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Hampton_Court_Palace\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/His_Highness\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Majesty\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/By_the_Grace_of_God\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Prince_of_Orange\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Count_of_Nassau-Dillenburg\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Stadtholder\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/County_of_Holland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/County_of_Zeeland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Utrecht\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Captain-General\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Admiral-General\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/King_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/King_of_Scotland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/British_claims_to_the_French_throne\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Kingdom_of_Ireland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Fidei_defensor\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Quartering_(heraldry)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Azure_(heraldry)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Sem%C3%A9\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Rampant\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Or_(heraldry)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/House_of_Nassau\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Gules\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Katzenelnbogen\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Fess\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Argent\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Vianden\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Passant_guardant\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Inescutcheon\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Sable_(heraldry)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Moers\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Bend_(heraldry)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Ch%C3%A2lons-en-Champagne\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Principality_of_Orange\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Geneva\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Buren\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Fleurs-de-lis\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Pale_(heraldry)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Royal_Arms_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Tressure\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Royal_coat_of_arms_of_Scotland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Coat_of_arms_of_Ireland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Je_Maintiendrai\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/House_of_Orange-Nassau\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Principality_of_Orange\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Prince_of_Orange\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/William_I,_Count_of_Nassau-Dillenburg\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/William_the_Silent\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Juliana_of_Stolberg\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Frederick_Henry,_Prince_of_Orange\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Gaspard_II_de_Coligny\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Louise_de_Coligny\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Charlotte_de_Laval\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/William_II,_Prince_of_Orange\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Johan_Albrecht_I_of_Solms-Braunfels\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Elisabeth_of_Nassau-Dillenburg\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0\n", + "PAGE HAS NO LINKS: /wiki/Amalia_of_Solms-Braunfels\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Louis_I,_Count_of_Sayn-Wittgenstein\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Agnes_of_Sayn-Wittgenstein\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Henry_Stuart,_Lord_Darnley\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/James_VI_and_I\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Mary,_Queen_of_Scots\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Charles_I_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Frederick_II_of_Denmark\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Anne_of_Denmark\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Sofie_of_Mecklenburg-Schwerin_(d._1631)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Mary,_Princess_Royal_and_Princess_of_Orange\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Antoine_of_Navarre\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Henry_IV_of_France\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Jeanne_III_of_Navarre\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Henrietta_Maria_of_France\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Francesco_I_de%27_Medici,_Grand_Duke_of_Tuscany\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Maria_de_Medici\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Joanna_of_Austria,_Grand_Duchess_of_Tuscany\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/William_the_Silent\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/James_I_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Frederick_Henry,_Prince_of_Orange\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Amalia_of_Solms-Braunfels\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Charles_I_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Elizabeth_Stuart,_Queen_of_Bohemia\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Frederick_Nassau_de_Zuylestein\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Countess_Louise_Henriette_of_Nassau\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Countess_Albertine_Agnes_of_Nassau\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/William_II,_Prince_of_Orange\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Mary,_Princess_Royal_and_Princess_of_Orange\n", + "487\n", + "460\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Sophia_of_Hanover\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Frederick_I_of_Prussia\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Henry_Casimir_II,_Prince_of_Nassau-Dietz\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Mary_II_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Anne,_Queen_of_Great_Britain\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/James_Francis_Edward\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/John_William_Friso,_Prince_of_Orange\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Anglo-Dutch_Wars\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/British_monarchs%27_family_tree\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Constantijn_Huygens,_Jr.\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/List_of_deserters_from_James_II_to_William_of_Orange\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Parliament_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Parliament_of_Scotland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Julian_calendar\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Gregorian_calendar\n", + "494\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Friesland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/William_Frederick,_Prince_of_Nassau-Dietz\n", + "494\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Robert_Fruin\n", + "494\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/William_I_of_Scotland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Gregorian_calendar\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/The_Twelfth\n", + "494\n", + "494\n", + "494\n", + "494\n", + "494\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Stephen_B._Baxter\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Winston_Churchill\n", + "494\n", + "494\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Norman_Davies\n", + "494\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Jonathan_Israel\n", + "494\n", + "494\n", + "494\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/John_Van_der_Kiste\n", + "494\n", + "494\n", + "494\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/The_National_Archives_(United_Kingdom)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/National_Portrait_Gallery,_London\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/House_of_Orange-Nassau\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/House_of_Nassau\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/William_II_of_Orange\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Prince_of_Orange\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Baron\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Breda\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/John_William_Friso\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Glorious_Revolution\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/James_II_%26_VII\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/King_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/King_of_Scotland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/King_of_Ireland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Mary_II_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Anne,_Queen_of_Great_Britain\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/First_Stadtholderless_Period\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/William_II,_Prince_of_Orange\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Stadtholder\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Holland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Zeeland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Second_Stadtholderless_Period\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/William_IV,_Prince_of_Orange\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Stadtholder\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Utrecht_(province)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Stadtholder\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Guelders\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Overijssel\n", + "460\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Admiralty\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Arthur_Herbert,_1st_Earl_of_Torrington\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Stadtholder\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Guelders\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Willem_van_Egmond\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Philip_I_of_Cro%C3%BF-Chimay\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Adolf_III_of_Nassau-Wiesbaden-Idstein\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Jan_V_of_Nassau-Vianden-Diez\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Philip_of_Burgundy,_bishop_of_Utrecht\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Floris_van_Egmont\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Ren%C3%A9_of_Ch%C3%A2lon\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Philip_de_Lalaing,_2nd_Count_of_Hoogstraten\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Philip_de_Montmorency,_Count_of_Hoorn\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Karel_van_Brimeu\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Gillis_van_Berlaymont\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/John_VI_of_Nassau-Dillenburg\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Willem_IV_van_den_Bergh\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Adolf_van_Nieuwenaar\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Maurice_of_Nassau,_Prince_of_Orange\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Frederick_Henry,_Prince_of_Orange\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/William_II,_Prince_of_Orange\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/William_IV,_Prince_of_Orange\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/William_V,_Prince_of_Orange\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Stadtholder\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Holland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Zeeland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Utrecht_(province)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Hugo_van_Lannoy\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Jean_de_Lannoy\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Louis_de_Gruuthuse\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Wolfert_VI_of_Borselen\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Joost_van_Lalaing\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Jan_III_van_Egmond\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Henry_III_of_Nassau-Breda\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Antoine_I_de_Lalaing\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Ren%C3%A9_of_Ch%C3%A2lon\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Louis_of_Praet\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Maximilian_II_of_Burgundy\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/William_the_Silent\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Maximilien_de_H%C3%A9nin-Li%C3%A9tard\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Philip_of_Noircarmes\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/William_the_Silent\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Adolf_van_Nieuwenaar\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Maurice_of_Nassau,_Prince_of_Orange\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Frederick_Henry,_Prince_of_Orange\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/William_II,_Prince_of_Orange\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/William_IV,_Prince_of_Orange\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/William_V,_Prince_of_Orange\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Stadtholder\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Overijssel\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Georg_Schenck_van_Toutenburg\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Maximiliaan_van_Egmond\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Jan_van_Ligne\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Karel_van_Brimeu\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Gillis_van_Berlaymont\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Caspar_van_Robles\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/George_van_Lalaing\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Francisco_Verdugo\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Adolf_van_Nieuwenaar\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Maurice_of_Nassau,_Prince_of_Orange\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Frederick_Henry,_Prince_of_Orange\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/William_II,_Prince_of_Orange\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/William_IV,_Prince_of_Orange\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/William_V,_Prince_of_Orange\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Stadtholder\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Drenthe\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Charles,_Duke_of_Guelders\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Georg_Schenck_van_Toutenburg\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Maximiliaan_van_Egmond\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Jan_van_Ligne\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Karel_van_Brimeu\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Gillis_van_Berlaymont\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Caspar_van_Robles\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/George_van_Lalaing\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Francisco_Verdugo\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Willem_Lodewijk_of_Nassau-Dietz\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Maurice_of_Nassau,_Prince_of_Orange\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Ernst_Casimir\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Hendrik_Casimir_I\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0\n", + "PAGE HAS NO LINKS: /wiki/Willem_Frederik_of_Nassau-Dietz\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/William_II,_Prince_of_Orange\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/William_IV,_Prince_of_Orange\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/William_V,_Prince_of_Orange\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/List_of_English_monarchs\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/List_of_Scottish_monarchs\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/List_of_British_monarchs\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/%C3%86thelstan\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Edmund_I\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Eadred\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Eadwig\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Edgar_the_Peaceful\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Edward_the_Martyr\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/%C3%86thelred_the_Unready\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Sweyn_Forkbeard\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Edmund_Ironside\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Cnut_the_Great\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Harold_Harefoot\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Harthacnut\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Edward_the_Confessor\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Harold_Godwinson\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Edgar_%C3%86theling\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/William_the_Conqueror\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/William_II_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Henry_I_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Stephen,_King_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Empress_Matilda\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Henry_II_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Henry_the_Young_King\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Richard_I_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/John,_King_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Henry_III_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Edward_I_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Edward_II_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Edward_III_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Richard_II_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Henry_IV_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Henry_V_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Henry_VI_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Edward_IV_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Edward_V_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Richard_III_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Henry_VII_of_England\n", + "559\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Edward_VI_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Lady_Jane_Grey\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Mary_I_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Philip_II_of_Spain\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Elizabeth_I_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Kenneth_MacAlpin\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Domnall_mac_Ailp%C3%ADn\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Causant%C3%ADn_mac_Cin%C3%A1eda\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/%C3%81ed_mac_Cin%C3%A1eda\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Giric\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Eochaid,_son_of_Rhun\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Donald_II_of_Scotland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Constantine_II_of_Scotland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Malcolm_I_of_Scotland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Indulf\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Dub,_King_of_Scotland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Cuil%C3%A9n\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Amla%C3%ADb,_King_of_Scotland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Kenneth_II_of_Scotland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Constantine_III_of_Scotland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Kenneth_III_of_Scotland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Malcolm_II_of_Scotland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Duncan_I_of_Scotland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Macbeth,_King_of_Scotland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Lulach\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Malcolm_III_of_Scotland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Donald_III_of_Scotland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Duncan_II_of_Scotland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Donald_III_of_Scotland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Edgar,_King_of_Scotland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Alexander_I_of_Scotland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/David_I_of_Scotland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Malcolm_IV_of_Scotland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/William_the_Lion\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Alexander_II_of_Scotland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Alexander_III_of_Scotland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Margaret,_Maid_of_Norway\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Guardian_of_Scotland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/John_Balliol\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Guardian_of_Scotland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Robert_the_Bruce\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/David_II_of_Scotland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Edward_Balliol\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Robert_II_of_Scotland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Robert_III_of_Scotland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/James_I_of_Scotland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/James_II_of_Scotland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/James_III_of_Scotland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/James_IV_of_Scotland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/James_V_of_Scotland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Mary,_Queen_of_Scots\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/James_VI_and_I\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Union_of_the_Crowns\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/James_VI_and_I\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Charles_I_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Commonwealth_of_England\n", + "487\n", + "460\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Mary_II_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Anne,_Queen_of_Great_Britain\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Acts_of_Union_1707\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Anne,_Queen_of_Great_Britain\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/George_I_of_Great_Britain\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/George_II_of_Great_Britain\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/George_III_of_the_United_Kingdom\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/George_IV_of_the_United_Kingdom\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/William_IV_of_the_United_Kingdom\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Queen_Victoria\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Edward_VII\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/George_V\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Edward_VIII\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/George_VI\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Elizabeth_II\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Virtual_International_Authority_File\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Library_of_Congress_Control_Number\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/International_Standard_Name_Identifier\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Integrated_Authority_File\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/LIBRIS\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Syst%C3%A8me_universitaire_de_documentation\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Biblioth%C3%A8que_nationale_de_France\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Biografisch_Portaal\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Union_List_of_Artist_Names\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/National_Library_of_the_Czech_Republic\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Netherlands_Institute_for_Art_History#Online_artist_pages\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Institute_for_Advanced_Technology_in_the_Humanities\n", + "525\n", + "525\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Main_Page\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Main_Page\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Mary_II_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Mary_II_(disambiguation)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Godfrey_Kneller\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/List_of_English_monarchs\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Queen_of_Scotland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/List_of_Irish_monarchs\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Style_of_the_British_sovereign#Styles_of_English_and_Scottish_sovereigns\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Coronation_of_the_British_monarch\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/James_II_%26_VII\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/William_III_%26_II\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Old_Style_and_New_Style_dates\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/St_James%27s_Palace\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Old_Style_and_New_Style_dates\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Kensington_Palace\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Westminster_Abbey\n", + "526\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Dynasty\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/House_of_Stuart\n", + "460\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Anne_Hyde\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Anglican\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/List_of_English_monarchs\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/List_of_Scottish_monarchs\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/List_of_Irish_monarchs\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/William_III_of_Orange\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Protestants\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Queen_regnant\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Glorious_Revolution\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/English_Bill_of_Rights\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Roman_Catholic\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/James_II_and_VII\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/St_James%27s_Palace\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/King_James_II_%26_VII\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Anne_Hyde\n", + "487\n", + "548\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Kingdom_of_Scotland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Kingdom_of_Ireland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Edward_Hyde,_1st_Earl_of_Clarendon\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Anglicanism\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Chapel_Royal\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Mary,_Queen_of_Scots\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Prince_Rupert_of_the_Rhine\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Anne,_Queen_of_Great_Britain\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0\n", + "PAGE HAS NO LINKS: /wiki/Caspar_Netscher\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Richmond_Palace\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Edward_Villiers_(1620%E2%80%931689)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Twickenham\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Mary_of_Modena\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Frances_Apsley\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Allen_Apsley_(Royalist)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Stadtholder\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Holland\n", + "526\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Mary,_Princess_Royal_and_Princess_of_Orange\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Louis,_Dauphin_of_France_(1661-1711)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Thomas_Osborne,_1st_Duke_of_Leeds\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Peter_Lely\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Henry_Compton_(bishop)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Netherlands\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Rotterdam\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Ter_Heijde\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Huis_Honselaarsdijk\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/The_Hague\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Breda\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/James_Scott,_1st_Duke_of_Monmouth\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Nicolas_de_Largilli%C3%A8re\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Heir_presumptive\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Church_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Archbishop_of_Canterbury\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/William_Sancroft\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Louis_XIV\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Principality_of_Orange\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Huguenot\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Elizabeth_Villiers\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Glorious_Revolution\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Jan_Verkolje\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Declaration_of_Indulgence\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Dissenter\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Mary_of_Modena\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/James_Francis_Edward_Stuart\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Immortal_Seven\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Dutch_Republic\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Gilbert_Burnet\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/John_Evelyn\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Sarah_Churchill,_Duchess_of_Marlborough\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Godfrey_Kneller\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Convention_Parliament_(1689)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Thomas_Osborne,_1st_Duke_of_Leeds\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Declaration_of_Right,_1689\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/James_Francis_Edward_Stuart\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Heir_apparent\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Mary_I_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Philip_II_of_Spain\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Bishop_of_London\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Henry_Compton_(bishop)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Westminster_Abbey\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Archbishop_of_Canterbury\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/William_Sancroft\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Anglican\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Estates_of_Scotland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Scotland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/John_Graham_of_Claverhouse\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Scottish_Highlands\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Battle_of_Killiecrankie\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Battle_of_Dunkeld\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Five_guineas_(British_coin)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Bill_of_Rights_1689\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Royal_prerogative\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Right_to_petition\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Right_to_bear_arms\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Jacobitism\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Henry_Hyde,_2nd_Earl_of_Clarendon\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/John_Churchill,_1st_Duke_of_Marlborough\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Sarah_Churchill,_Duchess_of_Marlborough\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Church_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Archbishop_of_Canterbury\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/John_Tillotson\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Bishop_of_Worcester\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Edward_Stillingfleet\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Bishop_of_Lincoln\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Thomas_Tenison\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Whitehall\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Kensington\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Smallpox\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Groom_of_the_stole\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Kensington_Palace\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Ten_Commandments\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/River_Thames\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Lying_in_state\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Banqueting_House,_Whitehall\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Westminster_Abbey\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Houses_of_Parliament\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Henry_Purcell\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Music_for_the_Funeral_of_Queen_Mary\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Painted_Hall\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/James_Thornhill\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/College_of_William_%26_Mary\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Williamsburg,_Virginia\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Thomas_Bray\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Society_for_Promoting_Christian_Knowledge\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Greenwich_Hospital,_London\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Battles_of_Barfleur_and_La_Hogue\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Het_Loo_Palace\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Hampton_Court_Palace\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Blue_and_white_porcelain\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Goldfish\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Nahum_Tate\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Elizabeth_I_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/William_Walsh_(poet)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Lucius_Quinctius_Cincinnatus\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Lisa_Daniely\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/The_First_Churchills\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Orlando_(film)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Rebecca_Front\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/England,_My_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Victoria_Wood\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/The_League_of_Gentlemen%27s_Apocalypse\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/List_of_monarchs_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/British_claims_to_the_French_throne\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Kingdom_of_Ireland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Fidei_defensor\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Estates_of_Scotland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/List_of_Monarchs_of_Scotland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Quartering_(heraldry)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Azure_(heraldry)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Fleurs-de-lis\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Or_(heraldry)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Gules\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Attitude_(heraldry)#Passant\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Pale_(heraldry)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Royal_Arms_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Rampant\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Tressure\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Royal_coat_of_arms_of_Scotland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Argent\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Coat_of_arms_of_Ireland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Escutcheon_(heraldry)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Variation_of_the_field#Semé\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/House_of_Orange-Nassau\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Impalement_(heraldry)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Henry_Stuart,_Lord_Darnley\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/James_I_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Mary,_Queen_of_Scots\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Charles_I_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Frederick_II_of_Denmark\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Anne_of_Denmark\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Sophie_of_Mecklenburg-G%C3%BCstrow\n", + "460\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Antoine_of_Navarre\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Henry_IV_of_France\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Jeanne_d%27Albret\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Henrietta_Maria_of_France\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Francesco_I_de%27_Medici,_Grand_Duke_of_Tuscany\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Marie_de%27_Medici\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Joanna_of_Austria,_Grand_Duchess_of_Tuscany\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Henry_Hyde_(died_1634)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Edward_Hyde,_1st_Earl_of_Clarendon\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Anne_Hyde\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Sir_Thomas_Aylesbury,_1st_Baronet\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Frances_Hyde,_Countess_of_Clarendon\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Edward_Hyde,_1st_Earl_of_Clarendon\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Charles_I_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Henry_Hyde,_2nd_Earl_of_Clarendon\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Anne_Hyde\n", + "460\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Mary,_Princess_Royal_and_Princess_of_Orange\n", + "487\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/James_Francis_Edward\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Anne,_Queen_of_Great_Britain\n", + "526\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/James_Scott,_1st_Duke_of_Monmouth\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/John_Van_der_Kiste\n", + "494\n", + "494\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Edward_Lake_(priest)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Absence_of_King_William_Act_1689\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/The_London_Gazette\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Henry_Altemus_Company\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/National_Portrait_Gallery,_London\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/New_International_Encyclopedia\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0\n", + "PAGE HAS NO LINKS: /wiki/House_of_Stuart\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Glorious_Revolution\n", + "460\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/List_of_English_monarchs\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/List_of_Scottish_monarchs\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Queen_of_Ireland\n", + "526\n", + "526\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/List_of_English_monarchs\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/List_of_Scottish_monarchs\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/List_of_British_monarchs\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/%C3%86thelstan\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Edmund_I\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Eadred\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Eadwig\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Edgar_the_Peaceful\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Edward_the_Martyr\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/%C3%86thelred_the_Unready\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Sweyn_Forkbeard\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Edmund_Ironside\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Cnut_the_Great\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Harold_Harefoot\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Harthacnut\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Edward_the_Confessor\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Harold_Godwinson\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Edgar_%C3%86theling\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/William_the_Conqueror\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/William_II_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Henry_I_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Stephen,_King_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Empress_Matilda\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Henry_II_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Henry_the_Young_King\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Richard_I_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/John,_King_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Henry_III_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Edward_I_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Edward_II_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Edward_III_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Richard_II_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Henry_IV_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Henry_V_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Henry_VI_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Edward_IV_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Edward_V_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Richard_III_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Henry_VII_of_England\n", + "559\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Edward_VI_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Lady_Jane_Grey\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Mary_I_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Philip_II_of_Spain\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Elizabeth_I_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Kenneth_MacAlpin\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Domnall_mac_Ailp%C3%ADn\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Causant%C3%ADn_mac_Cin%C3%A1eda\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/%C3%81ed_mac_Cin%C3%A1eda\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Giric\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Eochaid,_son_of_Rhun\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Donald_II_of_Scotland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Constantine_II_of_Scotland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Malcolm_I_of_Scotland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Indulf\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Dub,_King_of_Scotland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Cuil%C3%A9n\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Amla%C3%ADb,_King_of_Scotland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Kenneth_II_of_Scotland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Constantine_III_of_Scotland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Kenneth_III_of_Scotland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Malcolm_II_of_Scotland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Duncan_I_of_Scotland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Macbeth,_King_of_Scotland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Lulach\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Malcolm_III_of_Scotland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Donald_III_of_Scotland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Duncan_II_of_Scotland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Donald_III_of_Scotland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Edgar,_King_of_Scotland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Alexander_I_of_Scotland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/David_I_of_Scotland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Malcolm_IV_of_Scotland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/William_the_Lion\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Alexander_II_of_Scotland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Alexander_III_of_Scotland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Margaret,_Maid_of_Norway\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Guardian_of_Scotland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/John_Balliol\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Guardian_of_Scotland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Robert_the_Bruce\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/David_II_of_Scotland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Edward_Balliol\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Robert_II_of_Scotland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Robert_III_of_Scotland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/James_I_of_Scotland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/James_II_of_Scotland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/James_III_of_Scotland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/James_IV_of_Scotland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/James_V_of_Scotland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Mary,_Queen_of_Scots\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/James_VI_and_I\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Union_of_the_Crowns\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/James_VI_and_I\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Charles_I_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Commonwealth_of_England\n", + "487\n", + "460\n", + "526\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Anne,_Queen_of_Great_Britain\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Acts_of_Union_1707\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Anne,_Queen_of_Great_Britain\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/George_I_of_Great_Britain\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/George_II_of_Great_Britain\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/George_III_of_the_United_Kingdom\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/George_IV_of_the_United_Kingdom\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/William_IV_of_the_United_Kingdom\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Queen_Victoria\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Edward_VII\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/George_V\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Edward_VIII\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/George_VI\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Elizabeth_II\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Princess_of_Orange_(by_marriage)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Sophie_of_W%C3%BCrttemberg\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Anna_Pavlovna_of_Russia\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Wilhelmine_of_Prussia,_Queen_of_the_Netherlands\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Wilhelmina_of_Prussia,_Princess_of_Orange\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Anne,_Princess_Royal_and_Princess_of_Orange\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Landgravine_Marie_Louise_of_Hesse-Kassel\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Mary,_Princess_Royal_and_Princess_of_Orange\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Amalia_of_Solms-Braunfels\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/%C3%89l%C3%A9onore_de_Bourbon\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Louise_de_Coligny\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Charlotte_of_Bourbon\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Anna_of_Saxony\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Anna_van_Egmont\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Anna_of_Lorraine\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Virtual_International_Authority_File\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Library_of_Congress_Control_Number\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/International_Standard_Name_Identifier\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Integrated_Authority_File\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/LIBRIS\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Syst%C3%A8me_universitaire_de_documentation\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Biblioth%C3%A8que_nationale_de_France\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Biografisch_Portaal\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/BIBSYS\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Union_List_of_Artist_Names\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Institute_for_Advanced_Technology_in_the_Humanities\n", + "307\n", + "307\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Main_Page\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Main_Page\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Anne,_Queen_of_Great_Britain\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Michael_Dahl\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/List_of_English_monarchs\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/List_of_Scottish_monarchs\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/List_of_Irish_monarchs\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Styles_of_English_and_Scottish_sovereigns\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Coronation_of_the_British_monarch\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/William_III_%26_II\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Queen_of_Great_Britain\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/List_of_Irish_monarchs\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Style_of_the_British_sovereign#Styles_of_British_sovereigns\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/George_I_of_Great_Britain\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/St_James%27s_Palace\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Westminster\n", + "548\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Kensington_Palace\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Middlesex\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/England\n", + "469\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Westminster_Abbey\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Prince_George_of_Denmark\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Prince_William,_Duke_of_Gloucester\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Dynasty\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/House_of_Stuart\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/James_II_%26_VII\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Anne_Hyde\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Anglican\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0\n", + "PAGE HAS NO LINKS: /wiki/List_of_English_monarchs\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/List_of_Scottish_monarchs\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/List_of_Irish_monarchs\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Acts_of_Union_1707\n", + "548\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Kingdom_of_Scotland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Sovereign_state\n", + "469\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/List_of_British_monarchs\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Kingdom_of_Ireland\n", + "487\n", + "460\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Heir_presumptive\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Roman_Catholicism\n", + "308\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Church_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Glorious_Revolution\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/William_III_of_Orange\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Tories_(British_political_party)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Whigs_(British_political_party)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/War_of_the_Spanish_Succession\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Sarah_Churchill,_Duchess_of_Marlborough\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Prince_George_of_Denmark\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/House_of_Stuart\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Act_of_Settlement_1701\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/George_I_of_Great_Britain\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/House_of_Hanover\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Elizabeth_Stuart,_Queen_of_Bohemia\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/James_VI_and_I\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Peter_Lely\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Benedetto_Gennari_II\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/St_James%27s_Palace\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/James_II_and_VII\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Anne_Hyde\n", + "487\n", + "548\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Kingdom_of_Scotland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Kingdom_of_Ireland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Lord_Chancellor\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Edward_Hyde,_1st_Earl_of_Clarendon\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Anglicanism\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Chapel_Royal\n", + "308\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Anne_Scott,_1st_Duchess_of_Buccleuch\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Archbishop_of_Canterbury\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Gilbert_Sheldon\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Henrietta_Maria_of_France\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Henrietta_Anne,_Duchess_of_Orl%C3%A9ans\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Richmond,_London\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Edward_Villiers_(1620%E2%80%931689)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Henry_Compton_(bishop)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Bishop_of_London\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Preceptor\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Sarah_Jennings\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/John_Churchill,_1st_Duke_of_Marlborough\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Arabella_Churchill_(royal_mistress)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Mary_of_Modena\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Willem_Wissing\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Jan_van_der_Vaardt\n", + "526\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Smallpox\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Henrietta_Hyde,_Countess_of_Rochester\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Laurence_Hyde,_1st_Earl_of_Rochester\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Popish_Plot\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Holyrood_Palace\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Edinburgh\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/George_I_of_Great_Britain\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Sophia_Dorothea_of_Celle\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/John_Sheffield,_1st_Duke_of_Buckingham_and_Normanby\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Louis_XIV_of_France\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Prince_George_of_Denmark\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Christian_V_of_Denmark\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Secretary_of_State_for_the_Northern_Department\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Robert_Spencer,_2nd_Earl_of_Sunderland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Cockpit-in-Court\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Palace_of_Whitehall\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Lady_of_the_Bedchamber\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Spa_town\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Tunbridge_Wells\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Test_Act\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Rachel_Russell,_Lady_Russell\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Mary_of_Modena\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/James_Francis_Edward\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Bath,_Somerset\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/James_Francis_Edward\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Privy_Council_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Glorious_Revolution\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Nottingham\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Oxford\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Convention_Parliament_(1689)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Parliament_of_Scotland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Bill_of_Rights_1689\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Claim_of_Right_Act_1689\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Prince_William,_Duke_of_Gloucester\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Earldom_of_Marlborough\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Duke_of_Cumberland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Richmond_Palace\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Jacobitism\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Lord_Chamberlain\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Syon_House\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Charles_Seymour,_6th_Duke_of_Somerset\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Piccadilly\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Heir_apparent\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Prince_William,_Duke_of_Gloucester\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Godfrey_Kneller\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Gout\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Systemic_lupus_erythematosus\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Hughes_syndrome\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Pelvic_inflammatory_disease\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Listeriosis\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Diabetes\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Intrauterine_growth_retardation\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Rhesus_incompatibility\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Syphilis\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Porphyria\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Sedan_chair\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Chaise\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Jehu\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Nimrod\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Sir_John_Clerk,_1st_Baronet\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Parliament_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Act_of_Settlement_1701\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Sophia,_Electress_of_Hanover\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/James_VI_and_I\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Elizabeth_Stuart,_Queen_of_Bohemia\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Charles_I_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Charles_Jervas\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Lord_High_Admiral_of_Great_Britain\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Royal_Navy\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Captain-General\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Order_of_the_Garter\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Groom_of_the_Stole\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Mistress_of_the_Robes\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Keeper_of_the_Privy_Purse\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Coronation_of_the_British_monarch\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/St_George%27s_Day\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Westminster_Abbey\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/War_of_the_Spanish_Succession\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Charles_II_of_Spain\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/House_of_Habsburg\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Charles_VI,_Holy_Roman_Emperor\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/House_of_Bourbon\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Philip,_Duke_of_Anjou\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/George_Frideric_Handel\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Isaac_Newton\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/John_Croker_(engraver)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Acts_of_Union_1707\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Act_of_Settlement_1701\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Act_of_Security_1704\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Royal_assent\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Alien_Act_1705\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Alien_(law)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Acts_of_Union_1707\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/St_Paul%27s_Cathedral\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Sir_John_Clerk,_1st_Baronet\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/John_Closterman\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Tory\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Anglicanism\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Whiggism\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Dissenter\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/High_Tories\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Daniel_Finch,_2nd_Earl_of_Nottingham\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Laurence_Hyde,_1st_Earl_of_Rochester\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Lord_Treasurer\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Sidney_Godolphin,_1st_Earl_of_Godolphin\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/John_Churchill,_1st_Duke_of_Marlborough\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Speaker_of_the_House_of_Commons_(United_Kingdom)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Robert_Harley,_1st_Earl_of_Oxford_and_Mortimer\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Occasional_Conformity_Bill\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Test_Act\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Conformist\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Nonconformist\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Eucharist\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Lutheran\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Touch_piece#Healing_of_the_King's_or_Queen's_Evil\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Great_Storm_of_1703\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Money_bill\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Battle_of_Blenheim\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0\n", + "PAGE HAS NO LINKS: /wiki/Secretary_of_State_for_the_Northern_Department\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Whig_Junto\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/John_Somers,_1st_Baron_Somers\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Charles_Montagu,_1st_Earl_of_Halifax\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Edward_Russell,_1st_Earl_of_Orford\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Thomas_Wharton,_1st_Marquess_of_Wharton\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Charles_Spencer,_3rd_Earl_of_Sunderland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Secretary_of_State_for_the_Southern_Department\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Abigail_Masham,_Baroness_Masham\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Woman_of_the_bedchamber\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/British_half_crown_coin\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Latin_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/By_the_Grace_of_God\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Charles_Seymour,_6th_Duke_of_Somerset\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/James_Francis_Edward_Stuart\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Scottish_Militia_Bill_1708\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/George_Byng,_1st_Viscount_Torrington\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/British_general_election,_1708\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Kensington_Palace\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Lesbian\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Battle_of_Oudenarde\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Charles_Boit\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Kensington_Palace\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Admiralty\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/George_Churchill_(Royal_Navy_officer)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/First_Lord_of_the_Admiralty\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Thomas_Herbert,_8th_Earl_of_Pembroke\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Maundy_Thursday\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Impeachment\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Henry_Sacheverell\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/High_church\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Augustus_the_Strong\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/British_general_election,_1710\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Antoine_de_Guiscard\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Emperor_Joseph_I\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Holy_Roman_Empire\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Peace_of_Utrecht\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/House_of_Commons_of_Great_Britain\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/House_of_Lords\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Occasional_Conformity_Act_1711\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Samuel_Masham,_1st_Baron_Masham\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Louis_XIV_of_France\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Henry_St_John,_1st_Viscount_Bolingbroke\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Recess_(motion)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Charles_Talbot,_1st_Duke_of_Shrewsbury\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/John_Arbuthnot\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Jonathan_Swift\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Henry_VII_Chapel\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Act_of_Settlement_1701\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/James_Francis_Edward_Stuart\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Jacobite_rising_in_1715\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/St_Paul%27s_Cathedral,_London\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/High_Tory\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/List_of_things_named_after_Queen_Anne\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Cultural_depictions_of_Anne,_Queen_of_Great_Britain\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Male_chauvinism\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Petticoat#Petticoats_in_popular_culture\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/John_Vanbrugh\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Blenheim_Palace\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Castle_Howard\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Queen_Anne_style_architecture\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Queen_Anne_style_furniture\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Daniel_Defoe\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Alexander_Pope\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Jonathan_Swift\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Henry_Wise_(gardener)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Style_(manner_of_address)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Majesty\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Fidei_defensor\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/English_claims_to_the_French_throne\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Queen_regnant\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Royal_coat_of_arms_of_the_United_Kingdom\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Quartering_(heraldry)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Azure_(heraldry)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Fleur-de-lis\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Or_(heraldry)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Gules\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Attitude_(heraldry)#Passant\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Pale_(heraldry)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Royal_Arms_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Rampant\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Tressure\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Royal_coat_of_arms_of_Scotland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Argent\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Coat_of_arms_of_Ireland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Elizabeth_I_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Impalement_(heraldry)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Westminster_Abbey\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Palace_of_Whitehall\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Windsor_Castle\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Henry_Compton_(bishop)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Nathaniel_Crew,_3rd_Baron_Crew\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Sarah_Churchill,_Duchess_of_Marlborough\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Prince_William,_Duke_of_Gloucester\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Hampton_Court_Palace\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/St_James%27s_Palace\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Syon_House\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Alison_Weir\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Narcissus_Luttrell\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Theophilus_Hastings,_7th_Earl_of_Huntingdon\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Vanishing_twin\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Fetus_papyraceus\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Resident_(title)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/St_George%27s_Chapel,_Windsor_Castle\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/James_Vernon\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Charles_Talbot,_1st_Duke_of_Shrewsbury\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Henry_Stuart,_Lord_Darnley\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/James_VI_and_I\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Mary,_Queen_of_Scots\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Charles_I_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Frederick_II_of_Denmark\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Anne_of_Denmark\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Sophie_of_Mecklenburg-G%C3%BCstrow\n", + "460\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Antoine_of_Navarre\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Henry_IV_of_France\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Jeanne_d%27Albret\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Henrietta_Maria_of_France\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Francesco_I_de%27_Medici,_Grand_Duke_of_Tuscany\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Marie_de%27_Medici\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Joanna_of_Austria,_Grand_Duchess_of_Tuscany\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Henry_Hyde_(died_1634)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Edward_Hyde,_1st_Earl_of_Clarendon\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Anne_Hyde\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Sir_Thomas_Aylesbury,_1st_Baronet\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Frances_Hyde,_Countess_of_Clarendon\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/James_VI_and_I\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Edward_Hyde,_1st_Earl_of_Clarendon\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Charles_I_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Elizabeth_Stuart,_Queen_of_Bohemia\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Laurence_Hyde,_1st_Earl_of_Rochester\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Anne_Hyde\n", + "460\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Mary_of_Modena\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Mary,_Princess_Royal_and_Princess_of_Orange\n", + "487\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Sophia_of_Hanover\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/James_Francis_Edward_Stuart\n", + "308\n", + "526\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/George_I_of_Great_Britain\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Queen_Anne%27s_Bounty\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Early-18th-century_Whig_plots\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Old_Style_and_New_Style_dates\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Julian_calendar\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Old_Style_and_New_Style_dates\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Gregorian_calendar\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Jonathan_Swift\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Jonathan_Swift\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/The_London_Gazette\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/The_London_Gazette\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/The_London_Gazette\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/The_London_Gazette\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/The_London_Gazette\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/The_London_Gazette\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/The_London_Gazette\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Dictionary_of_National_Biography#Oxford_Dictionary_of_National_Biography\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Digital_object_identifier\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Joseph_Lemuel_Chester\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Antonia_Fraser\n", + "494\n", + "494\n", + "494\n", + "494\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Ji%C5%99%C3%AD_Louda\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Michael_Maclagan\n", + "494\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Narcissus_Luttrell\n", + "494\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/John_Pinches\n", + "494\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Anne_Somerset_(historian)\n", + "494\n", + "494\n", + "494\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Adolphus_William_Ward\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0\n", + "PAGE HAS NO LINKS: /wiki/Adolphus_William_Ward\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Leslie_Stephen\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Dictionary_of_National_Biography\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Alison_Weir\n", + "494\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Encyclop%C3%A6dia_Britannica_Eleventh_Edition\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/The_National_Archives_(United_Kingdom)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/National_Portrait_Gallery,_London\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/House_of_Stuart\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/William_III_%26_II\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/List_of_English_monarchs\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/List_of_Scottish_monarchs\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Acts_of_Union_1707\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Queen_of_Ireland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/George_I_of_Great_Britain\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Acts_of_Union_1707\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Queen_of_Great_Britain\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Prince_George_of_Denmark\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Lord_High_Admiral_of_Great_Britain\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Thomas_Herbert,_8th_Earl_of_Pembroke\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/List_of_English_monarchs\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/List_of_Scottish_monarchs\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/List_of_British_monarchs\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/%C3%86thelstan\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Edmund_I\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Eadred\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Eadwig\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Edgar_the_Peaceful\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Edward_the_Martyr\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/%C3%86thelred_the_Unready\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Sweyn_Forkbeard\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Edmund_Ironside\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Cnut_the_Great\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Harold_Harefoot\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Harthacnut\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Edward_the_Confessor\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Harold_Godwinson\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Edgar_%C3%86theling\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/William_the_Conqueror\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/William_II_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Henry_I_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Stephen,_King_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Empress_Matilda\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Henry_II_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Henry_the_Young_King\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Richard_I_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/John,_King_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Henry_III_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Edward_I_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Edward_II_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Edward_III_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Richard_II_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Henry_IV_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Henry_V_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Henry_VI_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Edward_IV_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Edward_V_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Richard_III_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Henry_VII_of_England\n", + "559\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Edward_VI_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Lady_Jane_Grey\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Mary_I_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Philip_II_of_Spain\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Elizabeth_I_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Kenneth_MacAlpin\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Domnall_mac_Ailp%C3%ADn\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Causant%C3%ADn_mac_Cin%C3%A1eda\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/%C3%81ed_mac_Cin%C3%A1eda\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Giric\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Eochaid,_son_of_Rhun\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Donald_II_of_Scotland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Constantine_II_of_Scotland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Malcolm_I_of_Scotland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Indulf\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Dub,_King_of_Scotland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Cuil%C3%A9n\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Amla%C3%ADb,_King_of_Scotland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Kenneth_II_of_Scotland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Constantine_III_of_Scotland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Kenneth_III_of_Scotland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Malcolm_II_of_Scotland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Duncan_I_of_Scotland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Macbeth,_King_of_Scotland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Lulach\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Malcolm_III_of_Scotland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Donald_III_of_Scotland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Duncan_II_of_Scotland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Donald_III_of_Scotland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Edgar,_King_of_Scotland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Alexander_I_of_Scotland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/David_I_of_Scotland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Malcolm_IV_of_Scotland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/William_the_Lion\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Alexander_II_of_Scotland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Alexander_III_of_Scotland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Margaret,_Maid_of_Norway\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Guardian_of_Scotland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/John_Balliol\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Guardian_of_Scotland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Robert_the_Bruce\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/David_II_of_Scotland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Edward_Balliol\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Robert_II_of_Scotland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Robert_III_of_Scotland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/James_I_of_Scotland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/James_II_of_Scotland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/James_III_of_Scotland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/James_IV_of_Scotland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/James_V_of_Scotland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Mary,_Queen_of_Scots\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/James_VI_and_I\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Union_of_the_Crowns\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/James_VI_and_I\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Charles_I_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Commonwealth_of_England\n", + "487\n", + "460\n", + "526\n", + "308\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Acts_of_Union_1707\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/George_I_of_Great_Britain\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/George_II_of_Great_Britain\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/George_III_of_the_United_Kingdom\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/George_IV_of_the_United_Kingdom\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/William_IV_of_the_United_Kingdom\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Queen_Victoria\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Edward_VII\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/George_V\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Edward_VIII\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/George_VI\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Elizabeth_II\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Monarchy_of_Denmark\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Frederick_III_of_Denmark\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Charlotte_Amalie_of_Hesse-Kassel\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Louise_of_Mecklenburg-G%C3%BCstrow\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Sophie_Magdalene_of_Brandenburg-Kulmbach\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Louise_of_Great_Britain\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Duchess_Sophia_Frederica_of_Mecklenburg-Schwerin\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Marie_of_Hesse-Kassel\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Duchess_Charlotte_Frederica_of_Mecklenburg-Schwerin\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Caroline_Amalie_of_Augustenburg\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Princess_Caroline_of_Denmark\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Duchess_Caroline_Mariane_of_Mecklenburg\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Princess_Vilhelmine_Marie_of_Denmark\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Louise_of_Sweden\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Olga_Constantinovna_of_Russia\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Princess_Marie_of_Orl%C3%A9ans_(1865%E2%80%931909)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Alexandrine_of_Mecklenburg-Schwerin\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Maud_of_Wales\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Princess_Helena_Adelaide_of_Schleswig-Holstein-Sonderburg-Gl%C3%BCcksburg\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Sophia_of_Prussia\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Princess_Marie_Bonaparte\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Grand_Duchess_Elena_Vladimirovna_of_Russia\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Princess_Alice_of_Battenberg\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Princess_Anastasia_of_Greece_and_Denmark\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Princess_Fran%C3%A7oise_of_Orl%C3%A9ans_(1902%E2%80%931953)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Princess_Margaretha_of_Sweden\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Ingrid_of_Sweden\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Princess_Caroline-Mathilde_of_Denmark\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Elisabeth_of_Romania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Aspasia_Manos\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Frederica_of_Hanover\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Princess_Anne_of_Denmark\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Queen_Anne-Marie_of_Greece\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Mary,_Crown_Princess_of_Denmark\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Alexandra,_Countess_of_Frederiksborg\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Princess_Marie_of_Denmark\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0\n", + "PAGE HAS NO LINKS: /wiki/Marie-Chantal,_Crown_Princess_of_Greece\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Princess_Tatiana_of_Greece_and_Denmark\n", + "469\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Acts_of_Union_1707\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Great_Britain_in_the_Seven_Years%27_War\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Jacobitism\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Jacobite_risings\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/War_of_Jenkins%27_Ear\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/French_and_Indian_War\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Boston_Massacre\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/American_Revolutionary_War\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Fourth_Anglo-Dutch_War\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/French_Revolutionary_Wars\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Acts_of_Union_1800\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/House_of_Stuart\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/House_of_Hanover\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/George_I_of_Great_Britain\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/George_II_of_Great_Britain\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/George_III_of_the_United_Kingdom\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Parliament_of_Great_Britain\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/House_of_Lords\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/House_of_Commons_of_Great_Britain\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/List_of_Parliaments_of_Great_Britain\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/List_of_Acts_of_the_Parliament_of_Great_Britain\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/List_of_Acts_of_the_Parliament_of_Great_Britain,_1707%E2%80%931719\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/List_of_Acts_of_the_Parliament_of_Great_Britain,_1720%E2%80%931739\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/List_of_Acts_of_the_Parliament_of_Great_Britain,_1740%E2%80%931759\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/List_of_Acts_of_the_Parliament_of_Great_Britain,_1760%E2%80%931779\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/List_of_Acts_of_the_Parliament_of_Great_Britain,_1780%E2%80%931800\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Elections_in_Great_Britain\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/British_general_election,_1708\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/British_general_election,_1710\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/British_general_election,_1713\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/British_general_election,_1715\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/British_general_election,_1722\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/British_general_election,_1727\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/British_general_election,_1734\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/British_general_election,_1741\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/British_general_election,_1747\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/British_general_election,_1754\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/British_general_election,_1761\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/British_general_election,_1768\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/British_general_election,_1774\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/British_general_election,_1780\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/British_general_election,_1784\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/British_general_election,_1790\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/British_general_election,_1796\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/List_of_British_monarchs\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Peerage_of_Great_Britain\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Privy_Council_of_Great_Britain\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Prime_Minister_of_Great_Britain\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/List_of_Prime_Ministers_of_Great_Britain\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Whigs_(British_political_party)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Tories_(British_political_party)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Whig_Junto\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Patriot_Whigs\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Kit-Cat_Club\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Great_Britain\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Queen_Anne_style_architecture\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Georgian_architecture\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/East_India_Company\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/British_Empire\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Longitude_prize\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Window_tax\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Proclamation_of_Rebellion\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/South_Sea_Company\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Speenhamland_system\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Flag_of_Great_Britain\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Royal_coat_of_arms_of_Great_Britain\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Virtual_International_Authority_File\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Library_of_Congress_Control_Number\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/International_Standard_Name_Identifier\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Integrated_Authority_File\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/LIBRIS\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Syst%C3%A8me_universitaire_de_documentation\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Biblioth%C3%A8que_nationale_de_France\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/BIBSYS\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Union_List_of_Artist_Names\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Institute_for_Advanced_Technology_in_the_Humanities\n", + "490\n", + "490\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Main_Page\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Main_Page\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/George_I_of_Great_Britain\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Godfrey_Kneller\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/List_of_British_monarchs\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/List_of_Irish_monarchs\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Style_of_the_British_sovereign#Styles_of_British_sovereigns\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Coronation_of_the_British_monarch\n", + "491\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/George_II_of_Great_Britain\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Prime_Minister_of_the_United_Kingdom\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Robert_Walpole\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Electorate_of_Brunswick-L%C3%BCneburg\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Ernest_Augustus,_Elector_of_Brunswick-L%C3%BCneburg\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/George_II_of_Great_Britain\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Old_Style_and_New_Style_dates\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Hanover\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Electorate_of_Brunswick-L%C3%BCneburg\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Holy_Roman_Empire\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Old_Style_and_New_Style_dates\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Osnabr%C3%BCck\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Leineschloss\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Herrenhausen_Gardens\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Sophia_Dorothea_of_Celle\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/George_II_of_Great_Britain\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Sophia_Dorothea_of_Hanover\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Dynasty\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/House_of_Hanover\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Ernest_Augustus,_Elector_of_Brunswick-L%C3%BCneburg\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Sophia_of_Hanover\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Lutheran\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/List_of_British_monarchs\n", + "469\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Kingdom_of_Ireland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Electorate_of_Brunswick-L%C3%BCneburg\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Holy_Roman_Empire\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Hanover\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Prince-elector\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Queen_Anne_of_Great_Britain\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/British_throne\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/List_of_British_Monarchs#House_of_Hanover\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/House_of_Hanover\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Primogeniture\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Act_of_Settlement_1701\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Jacobitism\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/James_Francis_Edward_Stuart\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Cabinet_government\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Robert_Walpole\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Prime_Minister_of_the_United_Kingdom\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Hanover\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Electorate_of_Brunswick-L%C3%BCneburg\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Holy_Roman_Empire\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Ernest_Augustus,_Elector_of_Brunswick-L%C3%BCneburg\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Brunswick-L%C3%BCneburg\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Sophia_of_Hanover\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/James_VI_and_I\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Elizabeth_of_Bohemia\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Italy\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Franco-Dutch_War\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Principality_of_Calenberg\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Principality_of_G%C3%B6ttingen\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/George_William,_Duke_of_Brunswick-L%C3%BCneburg\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Sophia_Dorothea_of_Celle\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Salic_law\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Primogeniture\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Godfrey_Kneller\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Sophia_Dorothea_of_Celle\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Marriage_of_state\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Great_Turkish_War\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Battle_of_Vienna\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/George_II_of_Great_Britain\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Melusine_von_der_Schulenburg,_Duchess_of_Kendal\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Philip_Christoph_von_K%C3%B6nigsmarck\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Leine\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Thaler\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Ahlden_House\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Celle\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0\n", + "PAGE HAS NO LINKS: /wiki/Elector_of_Hanover\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Prince-Bishopric_of_Osnabr%C3%BCck\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Brunswick-L%C3%BCneburg\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Prince-elector#High_offices\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Prince-Elector\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Holy_Roman_Empire\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Gottfried_Leibniz\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/George_Frideric_H%C3%A4ndel\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Agostino_Steffani\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Prince_William,_Duke_of_Gloucester\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Act_of_Settlement_1701\n", + "526\n", + "491\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Succession_to_the_British_throne\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/British_royal_family\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Order_of_the_Garter\n", + "460\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/History_of_the_British_constitution\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Sophia_Naturalization_Act_1705\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Principality_of_L%C3%BCneburg\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Principality_of_Grubenhagen\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Celle\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Electorate_of_Brunswick-L%C3%BCneburg\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Principality_of_Brunswick-Wolfenb%C3%BCttel\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Prince-Bishopric_of_Osnabr%C3%BCck\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Saxe-Lauenburg\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Bremen-Verden\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/War_of_the_Spanish_Succession\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Philip_V_of_Spain\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Louis_XIV_of_France\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Charles_II_of_Spain\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Will_(law)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Dutch_Republic\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/House_of_Bourbon\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Brunswick-Wolfenb%C3%BCttel\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Duchy_of_Saxe-Lauenburg\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Maximilian_II_Emanuel,_Elector_of_Bavaria\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/John_Churchill,_1st_Duke_of_Marlborough\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Joseph_I,_Holy_Roman_Emperor\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Elector_Palatine\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Treaty_of_Utrecht\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Godfrey_Kneller\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/English_Parliament\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Parliament_of_Scotland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Royal_Assent\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Act_of_Security_1704\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Acts_of_Union_1707\n", + "469\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Act_of_Settlement_1701\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/British_Whig_Party\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Tory\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Hereditary_right\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Stuarts\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Herrenhausen_Gardens\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/The_Hague\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Westminster_Abbey\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Coronation_riots\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/George_Vertue\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Godfrey_Kneller\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/British_general_election,_1715\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Jacobitism\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/James_Francis_Edward_Stuart\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Jacobite_rising_of_1715\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/John_Erskine,_Earl_of_Mar_(1675%E2%80%931732)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/National_debt\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Septennial_Act_1715\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Lord_Chamberlain\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Thomas_Pelham-Holles,_1st_Duke_of_Newcastle-upon-Tyne\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Baptism\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/St._James%27s_Palace\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Leicester_Square\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Robert_Walpole\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Caroline_of_Ansbach\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Triple_Alliance_(1717)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Dutch_Republic\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Holy_Roman_Empire\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/War_of_the_Quadruple_Alliance\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Treaty_of_Utrecht\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Eilean_Donan\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Artillery\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Battle_of_Glen_Shiel\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Scottish_Highlands\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Great_Northern_War\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Swedish_Empire\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Russian_Empire\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Baltic_Sea\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Bremen-Verden\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Guinea_(British_coin)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Absolute_monarch\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Pound_sterling\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Robert_Walpole\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Charles_Townshend,_2nd_Viscount_Townshend\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/James_Stanhope,_1st_Earl_Stanhope\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Charles_Spencer,_3rd_Earl_of_Sunderland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/House_of_Lords\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/South_Sea_Company\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Melusine_von_der_Schulenburg\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Charles_Stanhope_(1673%E2%80%931760)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Bubble_Act\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Prime_Minister_of_the_United_Kingdom\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/First_Lord_of_the_Treasury\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Chancellor_of_the_Exchequer\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Royal_Archives\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Order_of_the_Bath\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Prussia\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Treaty_of_Hanover_(1725)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Treaty_of_Vienna_(1725)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Delden\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Nordhorn\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Leineschloss\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Herrenhausen_Gardens\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Bombing_of_Hanover_in_World_War_II\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Ernest_Augustus_I_of_Hanover\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/George_II_of_Great_Britain\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Caroline_of_Ansbach\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/James_Thornhill\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Mary_Wortley_Montagu\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Ragnhild_Hatton\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/The_Enlightenment\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Voltaire\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/James_Francis_Edward_Stuart\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/William_Makepeace_Thackeray\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Saint-Germain-en-Laye\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Society_of_Jesus\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Walter_Scott\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Philip_Stanhope,_5th_Earl_Stanhope\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/John_Hervey,_2nd_Baron_Hervey\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/G._K._Chesterton\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/John_H._Plumb\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/List_of_British_monarchs\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/British_claims_to_the_French_throne\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Kingdom_of_Ireland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Fidei_defensor\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Brunswick-L%C3%BCneburg\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Prince-Elector\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Holy_Roman_Empire\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Quartering_(heraldry)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Gules\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Attitude_(heraldry)#Passant\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Pale_(heraldry)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Or_(heraldry)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Royal_Arms_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Impalement_(heraldry)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Rampant\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Tressure\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Royal_coat_of_arms_of_Scotland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Azure_(heraldry)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Fleurs-de-lis\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Argent\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Coat_of_arms_of_Ireland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Division_of_the_field\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Semy\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Attitude_(heraldry)#Courant\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Coat_of_arms_of_Lower_Saxony\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Charlemagne\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Sophia_Dorothea_of_Celle\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/George_II_of_Great_Britain\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Caroline_of_Ansbach\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Sophia_Dorothea_of_Hanover\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Frederick_William_I_of_Prussia\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Melusine_von_der_Schulenburg,_Duchess_of_Kendal\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Charles_VI,_Holy_Roman_Emperor\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Melusina_von_der_Schulenburg,_Countess_of_Walsingham\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Philip_Stanhope,_4th_Earl_of_Chesterfield\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Albrecht_Wolfgang,_Count_of_Schaumburg-Lippe\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Ernest_I,_Duke_of_Brunswick-L%C3%BCneburg\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/William_the_Younger,_Duke_of_Brunswick-L%C3%BCneburg\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/George,_Duke_of_Brunswick-L%C3%BCneburg\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Christian_III_of_Denmark\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Dorothea_of_Denmark,_Duchess_of_Brunswick-L%C3%BCneburg\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0\n", + "PAGE HAS NO LINKS: /wiki/Dorothea_of_Saxe-Lauenburg\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Ernest_Augustus,_Elector_of_Brunswick-L%C3%BCneburg\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/George_I,_Landgrave_of_Hesse-Darmstadt\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Louis_V,_Landgrave_of_Hesse-Darmstadt\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Magdalene_of_Lippe\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Anne_Eleonore_of_Hesse-Darmstadt\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/John_George,_Elector_of_Brandenburg\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Magdalene_of_Brandenburg\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Elisabeth_of_Anhalt-Zerbst\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Louis_VI,_Elector_Palatine\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Frederick_IV,_Elector_Palatine\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Elisabeth_of_Hesse\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Frederick_V,_Elector_Palatine\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/William_the_Silent\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Louise_Juliana_of_Orange-Nassau\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Charlotte_of_Bourbon\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Sophia_of_Hanover\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Henry_Stuart,_Lord_Darnley\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/James_VI_and_I\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Mary,_Queen_of_Scots\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Elizabeth_of_Bohemia\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Frederick_II_of_Denmark\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Anne_of_Denmark\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Sophie_of_Mecklenburg-G%C3%BCstrow\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/James_VI_and_I\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Charles_I_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Elizabeth_of_Bohemia\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/George,_Duke_of_Brunswick-L%C3%BCneburg\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Mary,_Princess_Royal_and_Princess_of_Orange\n", + "487\n", + "460\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Sophia_of_Hanover\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Ernest_Augustus,_Elector_of_Brunswick-L%C3%BCneburg\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/George_William,_Duke_of_Brunswick-L%C3%BCneburg\n", + "526\n", + "308\n", + "491\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/James_Francis_Edward_Stuart\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Sophia_Dorothea_of_Celle\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Prince_William,_Duke_of_Gloucester\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/George_II_of_Great_Britain\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Sophia_Dorothea_of_Hanover\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Old_Style_and_New_Style_dates\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Julian_calendar\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Old_Style_and_New_Style_dates\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Gregorian_calendar\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Osnabr%C3%BCck\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Louis_Mor%C3%A9ri\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Electress_Sophia\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Old_Style_and_New_Style_dates\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Gregorian_calendar\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Ernest_Augustus,_Duke_of_York_and_Albany\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Old_Style_and_New_Style_dates\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Gregorian_calendar\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Thomas_Lathbury\n", + "494\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Alison_Weir_(historian)\n", + "494\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Ragnhild_Hatton\n", + "494\n", + "494\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/BBC_Worldwide_Ltd\n", + "494\n", + "494\n", + "494\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Legislation.gov.uk\n", + "494\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Digital_object_identifier\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/John_H._Plumb\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Basil_Williams_(historian)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/The_Journal_of_Modern_History\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Digital_object_identifier\n", + "494\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/The_English_Historical_Review\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Digital_object_identifier\n", + "494\n", + "494\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Gerald_Isaacs,_2nd_Marquess_of_Reading\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Jeremy_Black_(historian)\n", + "494\n", + "494\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/William_Makepeace_Thackeray\n", + "494\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/John_H._Plumb\n", + "494\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/John_Pinches\n", + "494\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Digital_object_identifier\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/John_Cannon_(historian)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Digital_object_identifier\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Jeremy_Black_(historian)\n", + "494\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/J._P._Carswell\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/A._L._Rowse\n", + "494\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Gerald_Isaacs,_2nd_Marquess_of_Reading\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Digital_object_identifier\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Ragnhild_Hatton\n", + "494\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/John_H._Plumb\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Basil_Williams_(historian)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/JSTOR\n", + "494\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Antonia_Fraser\n", + "494\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Lewis_Namier\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/The_National_Archives_(United_Kingdom)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/National_Portrait_Gallery,_London\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/House_of_Hanover\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/House_of_Welf\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Ernest_Augustus,_Elector_of_Brunswick-L%C3%BCneburg\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Principality_of_Calenberg\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Electorate_of_Brunswick-L%C3%BCneburg\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Principality_of_L%C3%BCneburg\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Principality_of_Calenberg\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/George_William,_Duke_of_Brunswick-L%C3%BCneburg\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Principality_of_L%C3%BCneburg\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Duke_of_Brunswick-L%C3%BCneburg\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Elector_of_Brunswick-L%C3%BCneburg\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/George_II_of_Great_Britain\n", + "491\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/List_of_British_monarchs\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Monarchy_of_Ireland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/List_of_English_monarchs\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/List_of_Scottish_monarchs\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/List_of_British_monarchs\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/%C3%86thelstan\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Edmund_I\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Eadred\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Eadwig\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Edgar_the_Peaceful\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Edward_the_Martyr\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/%C3%86thelred_the_Unready\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Sweyn_Forkbeard\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Edmund_Ironside\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Cnut_the_Great\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Harold_Harefoot\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Harthacnut\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Edward_the_Confessor\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Harold_Godwinson\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Edgar_%C3%86theling\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/William_the_Conqueror\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/William_II_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Henry_I_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Stephen,_King_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Empress_Matilda\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Henry_II_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Henry_the_Young_King\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Richard_I_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/John,_King_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Henry_III_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Edward_I_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Edward_II_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Edward_III_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Richard_II_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Henry_IV_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Henry_V_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Henry_VI_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Edward_IV_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Edward_V_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Richard_III_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Henry_VII_of_England\n", + "559\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Edward_VI_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Lady_Jane_Grey\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Mary_I_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Philip_II_of_Spain\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Elizabeth_I_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Kenneth_MacAlpin\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Domnall_mac_Ailp%C3%ADn\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Causant%C3%ADn_mac_Cin%C3%A1eda\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/%C3%81ed_mac_Cin%C3%A1eda\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Giric\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Eochaid,_son_of_Rhun\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Donald_II_of_Scotland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Constantine_II_of_Scotland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Malcolm_I_of_Scotland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Indulf\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Dub,_King_of_Scotland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Cuil%C3%A9n\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Amla%C3%ADb,_King_of_Scotland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Kenneth_II_of_Scotland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Constantine_III_of_Scotland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Kenneth_III_of_Scotland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Malcolm_II_of_Scotland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Duncan_I_of_Scotland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Macbeth,_King_of_Scotland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Lulach\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0\n", + "PAGE HAS NO LINKS: /wiki/Malcolm_III_of_Scotland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Donald_III_of_Scotland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Duncan_II_of_Scotland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Donald_III_of_Scotland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Edgar,_King_of_Scotland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Alexander_I_of_Scotland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/David_I_of_Scotland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Malcolm_IV_of_Scotland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/William_the_Lion\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Alexander_II_of_Scotland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Alexander_III_of_Scotland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Margaret,_Maid_of_Norway\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Guardian_of_Scotland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/John_Balliol\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Guardian_of_Scotland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Robert_the_Bruce\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/David_II_of_Scotland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Edward_Balliol\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Robert_II_of_Scotland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Robert_III_of_Scotland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/James_I_of_Scotland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/James_II_of_Scotland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/James_III_of_Scotland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/James_IV_of_Scotland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/James_V_of_Scotland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Mary,_Queen_of_Scots\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/James_VI_and_I\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Union_of_the_Crowns\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/James_VI_and_I\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Charles_I_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Commonwealth_of_England\n", + "487\n", + "460\n", + "526\n", + "308\n", + "491\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Acts_of_Union_1707\n", + "491\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/George_II_of_Great_Britain\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/George_III_of_the_United_Kingdom\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/George_IV_of_the_United_Kingdom\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/William_IV_of_the_United_Kingdom\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Queen_Victoria\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Edward_VII\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/George_V\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Edward_VIII\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/George_VI\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Elizabeth_II\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/History_of_Hanover\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Electorate_of_Brunswick-L%C3%BCneburg\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Ernest_Augustus,_Elector_of_Brunswick-L%C3%BCneburg\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/George_II_of_Great_Britain\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/George_III_of_the_United_Kingdom\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Kingdom_of_Hanover\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/George_III_of_the_United_Kingdom\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/George_IV_of_the_United_Kingdom\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/William_IV_of_the_United_Kingdom\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Ernest_Augustus,_King_of_Hanover\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/George_V_of_Hanover\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/List_of_British_monarchs\n", + "469\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Acts_of_Union_1707\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Great_Britain_in_the_Seven_Years%27_War\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Jacobitism\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Jacobite_risings\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/War_of_Jenkins%27_Ear\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/French_and_Indian_War\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Boston_Massacre\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/American_Revolutionary_War\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Fourth_Anglo-Dutch_War\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/French_Revolutionary_Wars\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Acts_of_Union_1800\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/House_of_Stuart\n", + "491\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/House_of_Hanover\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/George_II_of_Great_Britain\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/George_III_of_the_United_Kingdom\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Parliament_of_Great_Britain\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/House_of_Lords\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/House_of_Commons_of_Great_Britain\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/List_of_Parliaments_of_Great_Britain\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/List_of_Acts_of_the_Parliament_of_Great_Britain\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/List_of_Acts_of_the_Parliament_of_Great_Britain,_1707%E2%80%931719\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/List_of_Acts_of_the_Parliament_of_Great_Britain,_1720%E2%80%931739\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/List_of_Acts_of_the_Parliament_of_Great_Britain,_1740%E2%80%931759\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/List_of_Acts_of_the_Parliament_of_Great_Britain,_1760%E2%80%931779\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/List_of_Acts_of_the_Parliament_of_Great_Britain,_1780%E2%80%931800\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Elections_in_Great_Britain\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/British_general_election,_1708\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/British_general_election,_1710\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/British_general_election,_1713\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/British_general_election,_1715\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/British_general_election,_1722\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/British_general_election,_1727\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/British_general_election,_1734\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/British_general_election,_1741\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/British_general_election,_1747\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/British_general_election,_1754\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/British_general_election,_1761\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/British_general_election,_1768\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/British_general_election,_1774\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/British_general_election,_1780\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/British_general_election,_1784\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/British_general_election,_1790\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/British_general_election,_1796\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/List_of_British_monarchs\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Peerage_of_Great_Britain\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Privy_Council_of_Great_Britain\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Prime_Minister_of_Great_Britain\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/List_of_Prime_Ministers_of_Great_Britain\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Whigs_(British_political_party)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Tories_(British_political_party)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Whig_Junto\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Patriot_Whigs\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Kit-Cat_Club\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Great_Britain\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Queen_Anne_style_architecture\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Georgian_architecture\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/East_India_Company\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/British_Empire\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Longitude_prize\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Window_tax\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Proclamation_of_Rebellion\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/South_Sea_Company\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Speenhamland_system\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Flag_of_Great_Britain\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Royal_coat_of_arms_of_Great_Britain\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Virtual_International_Authority_File\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Library_of_Congress_Control_Number\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/International_Standard_Name_Identifier\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Integrated_Authority_File\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Syst%C3%A8me_universitaire_de_documentation\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Biblioth%C3%A8que_nationale_de_France\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/BIBSYS\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/National_Diet_Library\n", + "405\n", + "405\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Main_Page\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Main_Page\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/George_II_of_Great_Britain\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Thomas_Hudson_(painter)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/King_of_Great_Britain\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/List_of_Irish_monarchs\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Elector_of_Hanover\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Style_of_the_British_sovereign#Styles_of_British_sovereigns\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Coronation_of_the_British_monarch\n", + "406\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/George_III\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Prime_Minister_of_the_United_Kingdom\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Robert_Walpole\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Spencer_Compton,_1st_Earl_of_Wilmington\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Henry_Pelham\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Thomas_Pelham-Holles,_1st_Duke_of_Newcastle\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/William_Cavendish,_4th_Duke_of_Devonshire\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Herrenhausen_Gardens\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Leineschloss\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Hanover\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Kensington_Palace\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Westminster_Abbey\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Caroline_of_Ansbach\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Frederick,_Prince_of_Wales\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Anne,_Princess_of_Orange\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Princess_Amelia_of_Great_Britain\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Princess_Caroline_of_Great_Britain\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Prince_George_William_of_Great_Britain\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0\n", + "PAGE HAS NO LINKS: /wiki/William,_Duke_of_Cumberland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Princess_Mary_of_Great_Britain\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Louise_of_Great_Britain\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Dynasty\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/House_of_Hanover\n", + "406\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Sophia_Dorothea_of_Celle\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Protestant\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/List_of_British_monarchs\n", + "469\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Kingdom_of_Ireland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Duchy_of_Brunswick-L%C3%BCneburg\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Electorate_of_Hanover\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Prince-elector\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Holy_Roman_Empire\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Old_Style_and_New_Style_dates\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/List_of_British_monarchs\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Northern_Germany\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Sophia_of_Hanover\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Act_of_Settlement_1701\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Acts_of_Union_1707\n", + "491\n", + "406\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Parliament_of_Great_Britain\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Frederick,_Prince_of_Wales\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/War_of_the_Austrian_Succession\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Battle_of_Dettingen\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/James_Francis_Edward_Stuart\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Charles_Edward_Stuart\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Jacobite_rebellions\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/George_III_of_the_United_Kingdom\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Sophia_Dorothea_of_Celle\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Sophia_Dorothea_of_Hanover\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Hanover\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Electorate_of_Hanover\n", + "406\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Sophia_Dorothea_of_Celle\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Sophia_Dorothea_of_Hanover\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Ahlden_House\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Cousin#Cousin_chart\n", + "491\n", + "548\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Kingdom_of_Scotland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Kingdom_of_Ireland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Act_of_Settlement_1701\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Parliament_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Consanguinity\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Sophia_of_Hanover\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Sophia_Naturalization_Act_1705\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Knight_of_the_Garter\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Duke_of_Cambridge\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Peerage_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Acts_of_Union_1707\n", + "469\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Caroline_of_Ansbach\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Godfrey_Kneller\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Hedvig_Sophia_of_Sweden\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Holstein-Gottorp\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Principality_of_Ansbach\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Caroline_of_Ansbach\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Sophia_Charlotte_of_Hanover\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Edmund_Poley\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Herrenhausen_Gardens\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/War_of_the_Spanish_Succession\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Flanders\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Frederick,_Prince_of_Wales\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Smallpox\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Battle_of_Oudenarde\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/John_Churchill,_1st_Duke_of_Marlborough\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Anne,_Princess_Royal_and_Princess_of_Orange\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Princess_Amelia_of_Great_Britain\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Princess_Caroline_of_Great_Britain\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/British_Whig_Party\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Peer_of_the_realm\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/House_of_Lords\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/The_Hague\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Greenwich\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Prince_of_Wales\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Royal_progress\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Chichester\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Havant\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Portsmouth\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Guildford\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Hampton_Court_Palace\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Theatre_Royal,_Drury_Lane\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Prince_George_William_of_Great_Britain\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Lord_Chamberlain\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Thomas_Pelham-Holles,_1st_Duke_of_Newcastle-upon-Tyne\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Baptism\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/St_James%27s_Palace\n", + "406\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Leicester_Square\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Sir_Robert_Walpole\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Charles_Townshend,_2nd_Viscount_Townshend\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Prince_William,_Duke_of_Cumberland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Princess_Mary_of_Great_Britain\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Louise_of_Great_Britain\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Richmond,_London\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/South_Sea_Bubble\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/British_Whig_Party\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Tory\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Act_of_Settlement_1701\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Charles_Jervas\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Westminster_Abbey\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/George_Frideric_Handel\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Zadok_the_Priest\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Spencer_Compton,_1st_Earl_of_Wilmington\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Civil_list\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Enoch_Seeman\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Anglo-Spanish_War_(1727%E2%80%931729)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/War_of_the_Polish_Succession\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Excise\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Court_(royal)#Court_officials\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Frederick,_Prince_of_Wales\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Frederick_William_I_of_Prussia\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Wilhelmine_of_Prussia,_Margravine_of_Brandenburg-Bayreuth\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Princess_Augusta_of_Saxe-Gotha\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Poor_rate\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Haemorrhoids\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Henrietta_Howard,_Countess_of_Suffolk\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Woman_of_the_Bedchamber\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Amalie_von_Wallmoden,_Countess_of_Yarmouth\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Johann_Ludwig_von_Wallmoden\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/War_of_Jenkins%27_Ear\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/War_of_the_Austrian_Succession\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Holy_Roman_Emperor_Charles_VI\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Maria_Theresa\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/British_general_election,_1741\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Spencer_Compton,_1st_Earl_of_Wilmington\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/John_Carteret,_2nd_Earl_Granville\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Henry_Pelham\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Battle_of_Dettingen\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/John_Wootton\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Half_crown_(British_coin)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Spanish_treasure_fleet\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Lima\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/War_of_the_Austrian_Succession\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Sale_of_commissions\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Battle_of_Dettingen\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/William_Pitt,_1st_Earl_of_Chatham\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/William_Pulteney,_1st_Earl_of_Bath\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Short-lived_ministry\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Jacobite_risings\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/James_Francis_Edward_Stuart\n", + "460\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Jacobite_rising_of_1715\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Jacobite_rising_of_1719\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Charles_Edward_Stuart\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Battle_of_Prestonpans\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Prince_William,_Duke_of_Cumberland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Battle_of_Culloden\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/House_of_Stuart\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Green_Park,_London\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Music_for_the_Royal_Fireworks\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/John_Shackleton\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/British_general_election,_1747\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Leicester_Square\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/George_III_of_the_United_Kingdom\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Princess_Augusta_of_Saxe-Gotha\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Thomas_Pelham-Holles,_1st_Duke_of_Newcastle\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Colonization_of_North_America\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Frederick_the_Great\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Siege_of_Fort_St_Philip_(1756)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Seven_Years%27_War\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/William_Cavendish,_4th_Duke_of_Devonshire\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/William_Pitt,_1st_Earl_of_Chatham\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Secretary_of_State_for_the_Southern_Department\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/James_Waldegrave,_2nd_Earl_Waldegrave\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Landgraviate_of_Hesse-Kassel\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Brunswick-Wolfenb%C3%BCttel\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Saxony\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Robert_Clive\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0\n", + "PAGE HAS NO LINKS: /wiki/Battle_of_Arcot\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Battle_of_Plassey\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Prince_William,_Duke_of_Cumberland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Convention_of_Klosterzeven\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Invasion_of_Hanover_(1757)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Convention_of_Klosterzeven\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Annus_Mirabilis_of_1759\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Battle_of_the_Plains_of_Abraham\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Invasion_of_Guadeloupe_(1759)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Planned_French_Invasion_of_Britain_(1759)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Battle_of_Lagos\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Battle_of_Quiberon_Bay\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Battle_of_Minden\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Close_stool\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Princess_Amelia_of_Great_Britain\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Aortic_aneurysm\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/George_III_of_the_United_Kingdom\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Westminster_Abbey\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Westminster_Abbey\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/John_Van_Nost\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Golden_Square\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/British_Museum\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Georg_August_University_of_G%C3%B6ttingen\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Electorate_of_Hanover\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Asteroid\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/359_Georgia\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/University_of_Dublin\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Columbia_University\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Province_of_Georgia\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/John_Hervey,_2nd_Baron_Hervey\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Horace_Walpole\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/James_Caulfeild,_1st_Earl_of_Charlemont\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/James_Waldegrave,_2nd_Earl_Waldegrave\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Elizabeth_Montagu\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/English_claim_to_the_French_throne\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Fidei_defensor\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Royal_coat_of_arms_of_the_United_Kingdom\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Inescutcheon\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Gules\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Cadency_labels_of_the_British_royal_family\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Argent\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Coronet\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/George_I_of_Great_Britain#Arms\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Frederick,_Prince_of_Wales\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Princess_Augusta_of_Saxe-Gotha\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/George_III_of_the_United_Kingdom\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Anne,_Princess_Royal_and_Princess_of_Orange\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/William_IV,_Prince_of_Orange\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Princess_Amelia_of_Great_Britain\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Princess_Caroline_of_Great_Britain\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Prince_George_William_of_Great_Britain\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Prince_William,_Duke_of_Cumberland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Princess_Mary_of_Great_Britain\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Frederick_II,_Landgrave_of_Hesse-Kassel\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Louise_of_Great_Britain\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Frederick_V_of_Denmark\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Old_Style_and_New_Style_dates\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/George,_Duke_of_Brunswick-L%C3%BCneburg\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Ernest_Augustus,_Elector_of_Brunswick-L%C3%BCneburg\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Anne_Eleonore_of_Hesse-Darmstadt\n", + "406\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Frederick_V,_Elector_Palatine\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Sophia_of_Hanover\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Elizabeth_Stuart,_Queen_of_Bohemia\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/George,_Duke_of_Brunswick-L%C3%BCneburg\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/George_William,_Duke_of_Brunswick-L%C3%BCneburg\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Anne_Eleonore_of_Hesse-Darmstadt\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Sophia_Dorothea_of_Celle\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/%C3%89l%C3%A9onore_Desmier_d%27Olbreuse\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Old_Style_and_New_Style_dates\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Julian_calendar\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Old_Style_and_New_Style_dates\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Gregorian_calendar\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/British_Museum\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Wayback_Machine\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Horace_Walpole\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Frank_Nicholls\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/The_London_Gazette\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/National_Maritime_Museum\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Mike_Ashley_(writer)\n", + "494\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Nicholas_Best\n", + "494\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Jeremy_Black_(historian)\n", + "494\n", + "494\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/John_Cannon_(historian)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Digital_object_identifier\n", + "494\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Digital_object_identifier\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/John_Pinches\n", + "494\n", + "494\n", + "494\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/John_Van_der_Kiste\n", + "494\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Alison_Weir\n", + "494\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/A._L._Rowse\n", + "494\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Charles_Grant_Robertson\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Basil_Williams_(historian)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/BBC\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/The_National_Archives_(United_Kingdom)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/National_Portrait_Gallery,_London\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/House_of_Hanover\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/House_of_Welf\n", + "406\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/List_of_British_monarchs\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Monarchy_of_Ireland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Elector_of_Brunswick-L%C3%BCneburg\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/George_III_of_the_United_Kingdom\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/British_monarchy\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/James_Francis_Edward_Stuart\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Prince_of_Wales\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Duke_of_Cornwall\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Duke_of_Rothesay\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Frederick,_Prince_of_Wales\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/James_Butler,_2nd_Duke_of_Ormonde\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/List_of_Chancellors_of_the_University_of_Dublin\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Frederick,_Prince_of_Wales\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/List_of_English_monarchs\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/List_of_Scottish_monarchs\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/List_of_British_monarchs\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/%C3%86thelstan\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Edmund_I\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Eadred\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Eadwig\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Edgar_the_Peaceful\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Edward_the_Martyr\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/%C3%86thelred_the_Unready\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Sweyn_Forkbeard\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Edmund_Ironside\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Cnut_the_Great\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Harold_Harefoot\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Harthacnut\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Edward_the_Confessor\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Harold_Godwinson\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Edgar_%C3%86theling\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/William_the_Conqueror\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/William_II_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Henry_I_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Stephen,_King_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Empress_Matilda\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Henry_II_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Henry_the_Young_King\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Richard_I_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/John,_King_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Henry_III_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Edward_I_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Edward_II_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Edward_III_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Richard_II_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Henry_IV_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Henry_V_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Henry_VI_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Edward_IV_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Edward_V_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Richard_III_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Henry_VII_of_England\n", + "559\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Edward_VI_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Lady_Jane_Grey\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Mary_I_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Philip_II_of_Spain\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Elizabeth_I_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Kenneth_MacAlpin\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Domnall_mac_Ailp%C3%ADn\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Causant%C3%ADn_mac_Cin%C3%A1eda\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/%C3%81ed_mac_Cin%C3%A1eda\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Giric\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Eochaid,_son_of_Rhun\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Donald_II_of_Scotland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Constantine_II_of_Scotland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Malcolm_I_of_Scotland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Indulf\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0\n", + "PAGE HAS NO LINKS: /wiki/Dub,_King_of_Scotland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Cuil%C3%A9n\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Amla%C3%ADb,_King_of_Scotland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Kenneth_II_of_Scotland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Constantine_III_of_Scotland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Kenneth_III_of_Scotland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Malcolm_II_of_Scotland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Duncan_I_of_Scotland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Macbeth,_King_of_Scotland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Lulach\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Malcolm_III_of_Scotland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Donald_III_of_Scotland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Duncan_II_of_Scotland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Donald_III_of_Scotland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Edgar,_King_of_Scotland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Alexander_I_of_Scotland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/David_I_of_Scotland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Malcolm_IV_of_Scotland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/William_the_Lion\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Alexander_II_of_Scotland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Alexander_III_of_Scotland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Margaret,_Maid_of_Norway\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Guardian_of_Scotland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/John_Balliol\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Guardian_of_Scotland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Robert_the_Bruce\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/David_II_of_Scotland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Edward_Balliol\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Robert_II_of_Scotland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Robert_III_of_Scotland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/James_I_of_Scotland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/James_II_of_Scotland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/James_III_of_Scotland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/James_IV_of_Scotland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/James_V_of_Scotland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Mary,_Queen_of_Scots\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/James_VI_and_I\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Union_of_the_Crowns\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/James_VI_and_I\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Charles_I_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Commonwealth_of_England\n", + "487\n", + "460\n", + "526\n", + "308\n", + "491\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Acts_of_Union_1707\n", + "491\n", + "406\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/George_III_of_the_United_Kingdom\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/George_IV_of_the_United_Kingdom\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/William_IV_of_the_United_Kingdom\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Queen_Victoria\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Edward_VII\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/George_V\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Edward_VIII\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/George_VI\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Elizabeth_II\n", + "469\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Acts_of_Union_1707\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Great_Britain_in_the_Seven_Years%27_War\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Jacobitism\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Jacobite_risings\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/War_of_Jenkins%27_Ear\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/French_and_Indian_War\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Boston_Massacre\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/American_Revolutionary_War\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Fourth_Anglo-Dutch_War\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/French_Revolutionary_Wars\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Acts_of_Union_1800\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/House_of_Stuart\n", + "491\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/House_of_Hanover\n", + "406\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/George_III_of_the_United_Kingdom\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Parliament_of_Great_Britain\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/House_of_Lords\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/House_of_Commons_of_Great_Britain\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/List_of_Parliaments_of_Great_Britain\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/List_of_Acts_of_the_Parliament_of_Great_Britain\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/List_of_Acts_of_the_Parliament_of_Great_Britain,_1707%E2%80%931719\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/List_of_Acts_of_the_Parliament_of_Great_Britain,_1720%E2%80%931739\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/List_of_Acts_of_the_Parliament_of_Great_Britain,_1740%E2%80%931759\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/List_of_Acts_of_the_Parliament_of_Great_Britain,_1760%E2%80%931779\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/List_of_Acts_of_the_Parliament_of_Great_Britain,_1780%E2%80%931800\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Elections_in_Great_Britain\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/British_general_election,_1708\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/British_general_election,_1710\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/British_general_election,_1713\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/British_general_election,_1715\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/British_general_election,_1722\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/British_general_election,_1727\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/British_general_election,_1734\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/British_general_election,_1741\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/British_general_election,_1747\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/British_general_election,_1754\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/British_general_election,_1761\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/British_general_election,_1768\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/British_general_election,_1774\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/British_general_election,_1780\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/British_general_election,_1784\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/British_general_election,_1790\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/British_general_election,_1796\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/List_of_British_monarchs\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Peerage_of_Great_Britain\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Privy_Council_of_Great_Britain\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Prime_Minister_of_Great_Britain\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/List_of_Prime_Ministers_of_Great_Britain\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Whigs_(British_political_party)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Tories_(British_political_party)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Whig_Junto\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Patriot_Whigs\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Kit-Cat_Club\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Great_Britain\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Queen_Anne_style_architecture\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Georgian_architecture\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/East_India_Company\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/British_Empire\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Longitude_prize\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Window_tax\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Proclamation_of_Rebellion\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/South_Sea_Company\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Speenhamland_system\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Flag_of_Great_Britain\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Royal_coat_of_arms_of_Great_Britain\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/British_prince\n", + "406\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Frederick,_Prince_of_Wales\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Prince_George_William_of_Great_Britain\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Prince_William,_Duke_of_Cumberland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/George_III_of_the_United_Kingdom\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Prince_Edward,_Duke_of_York_and_Albany\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Prince_William_Henry,_Duke_of_Gloucester_and_Edinburgh\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Prince_Henry,_Duke_of_Cumberland_and_Strathearn\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Prince_Frederick_of_Great_Britain\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/George_IV_of_the_United_Kingdom\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Prince_Frederick,_Duke_of_York_and_Albany\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/William_IV_of_the_United_Kingdom\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Prince_Edward,_Duke_of_Kent_and_Strathearn\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Ernest_Augustus,_King_of_Hanover\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Prince_Augustus_Frederick,_Duke_of_Sussex\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Prince_Adolphus,_Duke_of_Cambridge\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Prince_Octavius_of_Great_Britain\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Prince_Alfred_of_Great_Britain\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Prince_William_Frederick,_Duke_of_Gloucester_and_Edinburgh\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Albert,_Prince_Consort\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/George_V_of_Hanover\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Prince_George,_Duke_of_Cambridge\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Edward_VII\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Alfred,_Duke_of_Saxe-Coburg_and_Gotha\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Prince_Arthur,_Duke_of_Connaught_and_Strathearn\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Prince_Leopold,_Duke_of_Albany\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Prince_Ernest_Augustus,_3rd_Duke_of_Cumberland_and_Teviotdale\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Prince_Albert_Victor,_Duke_of_Clarence_and_Avondale\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/George_V\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Prince_Alexander_John_of_Wales\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Alfred,_Hereditary_Prince_of_Saxe-Coburg_and_Gotha\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Prince_Arthur_of_Connaught\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Charles_Edward,_Duke_of_Saxe-Coburg_and_Gotha\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Prince_George_William_of_Hanover_(1880%E2%80%931912)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0\n", + "PAGE HAS NO LINKS: /wiki/Prince_Christian_of_Hanover_(1885%E2%80%931901)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Ernest_Augustus,_Duke_of_Brunswick\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Edward_VIII\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/George_VI\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Prince_Henry,_Duke_of_Gloucester\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Prince_George,_Duke_of_Kent\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Prince_John_of_the_United_Kingdom\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Alastair_Windsor,_2nd_Duke_of_Connaught_and_Strathearn\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Johann_Leopold,_Hereditary_Prince_of_Saxe-Coburg_and_Gotha\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Prince_Hubertus_of_Saxe-Coburg_and_Gotha_(1909%E2%80%931943)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Prince_Ernest_Augustus_of_Hanover_(1914%E2%80%931987)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Prince_George_William_of_Hanover_(1915%E2%80%932006)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Prince_Philip,_Duke_of_Edinburgh\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Prince_William_of_Gloucester\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Prince_Richard,_Duke_of_Gloucester\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Prince_Edward,_Duke_of_Kent\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Prince_Michael_of_Kent\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Charles,_Prince_of_Wales\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Prince_Andrew,_Duke_of_York\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Prince_Edward,_Earl_of_Wessex\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Prince_William,_Duke_of_Cambridge\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Prince_Harry\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/James,_Viscount_Severn\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Prince_George_of_Cambridge\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Prince_Consort\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/James,_Viscount_Severn#Titles_and_styles\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Prince_of_Wales\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Edward_II_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Edward_the_Black_Prince\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Richard_II_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Henry_V_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Edward_of_Westminster,_Prince_of_Wales\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Richard_of_York,_3rd_Duke_of_York\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Edward_V_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Edward_of_Middleham,_Prince_of_Wales\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Arthur,_Prince_of_Wales\n", + "559\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Edward_VI_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Henry_Frederick,_Prince_of_Wales\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Charles_I_of_England\n", + "487\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/James_Francis_Edward_Stuart\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Frederick,_Prince_of_Wales\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/George_III_of_the_United_Kingdom\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/George_IV_of_the_United_Kingdom\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Edward_VII\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/George_V\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Edward_VIII\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Charles,_Prince_of_Wales\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Prince_of_Wales%27s_feathers\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Principality_of_Wales\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Duke_of_Cornwall\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Edward_the_Black_Prince\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Richard_II_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Henry_V_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Henry_VI_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Edward_of_Westminster,_Prince_of_Wales\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Richard_of_York,_3rd_Duke_of_York\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Edward_V_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Edward_of_Middleham,_Prince_of_Wales\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Arthur,_Prince_of_Wales\n", + "559\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Henry,_Duke_of_Cornwall\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Henry,_Duke_of_Cornwall\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Henry,_Duke_of_Cornwall\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Edward_VI_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Henry_Frederick,_Prince_of_Wales\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Charles_I_of_England\n", + "487\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/James_Francis_Edward_Stuart\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Frederick,_Prince_of_Wales\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/George_IV_of_the_United_Kingdom\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Edward_VII\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/George_V\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Edward_VIII\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Charles,_Prince_of_Wales\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Duke_of_Rothesay\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/David_Stewart,_Duke_of_Rothesay\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/James_I_of_Scotland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Alexander_Stewart,_Duke_of_Rothesay\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/James_II_of_Scotland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/James_III_of_Scotland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/James_IV_of_Scotland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/James,_Duke_of_Rothesay_(born_1507)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Arthur_Stewart,_Duke_of_Rothesay\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/James_V_of_Scotland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/James,_Duke_of_Rothesay_(born_1540)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/James_VI_and_I\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Henry_Frederick,_Prince_of_Wales\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Charles_I_of_England\n", + "487\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/James_Francis_Edward_Stuart\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Frederick,_Prince_of_Wales\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/George_IV_of_the_United_Kingdom\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Edward_VII\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/George_V\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Edward_VIII\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Charles,_Prince_of_Wales\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Duke_of_Cambridge\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Charles_Stuart,_Duke_of_Cambridge_(born_1660)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/James_Stuart,_Duke_of_Cambridge\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Edgar_Stuart,_Duke_of_Cambridge\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Charles_Stuart,_Duke_of_Cambridge_(born_1677)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Prince_Adolphus,_Duke_of_Cambridge\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Prince_George,_Duke_of_Cambridge\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Prince_William,_Duke_of_Cambridge\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/History_of_Hanover\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Electorate_of_Brunswick-L%C3%BCneburg\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Ernest_Augustus,_Elector_of_Brunswick-L%C3%BCneburg\n", + "406\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/George_III_of_the_United_Kingdom\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Kingdom_of_Hanover\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/George_III_of_the_United_Kingdom\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/George_IV_of_the_United_Kingdom\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/William_IV_of_the_United_Kingdom\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Ernest_Augustus,_King_of_Hanover\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/George_V_of_Hanover\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/List_of_British_monarchs\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Virtual_International_Authority_File\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Library_of_Congress_Control_Number\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/International_Standard_Name_Identifier\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Integrated_Authority_File\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/LIBRIS\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Syst%C3%A8me_universitaire_de_documentation\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Biblioth%C3%A8que_nationale_de_France\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/BIBSYS\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Union_List_of_Artist_Names\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Institute_for_Advanced_Technology_in_the_Humanities\n", + "463\n", + "463\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Main_Page\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Main_Page\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/George_III_of_Great_Britain\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/George_III_(disambiguation)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Allan_Ramsay_(artist)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/List_of_British_monarchs\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Elector_of_Hanover\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Style_of_the_British_sovereign#Styles_of_British_sovereigns\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Coronation_of_the_British_monarch\n", + "464\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/George_IV\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/George_IV_of_the_United_Kingdom\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Prime_Minister_of_the_United_Kingdom\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Thomas_Pelham-Holles,_1st_Duke_of_Newcastle\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/John_Stuart,_3rd_Earl_of_Bute\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/George_Grenville\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Charles_Watson-Wentworth,_2nd_Marquess_of_Rockingham\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/William_Pitt,_1st_Earl_of_Chatham\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Augustus_FitzRoy,_3rd_Duke_of_Grafton\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Frederick_North,_Lord_North\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/William_Petty,_2nd_Earl_of_Shelburne\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/William_Cavendish-Bentinck,_3rd_Duke_of_Portland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/William_Pitt_the_Younger\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Henry_Addington,_1st_Viscount_Sidmouth\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/William_Grenville,_1st_Baron_Grenville\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Spencer_Perceval\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Robert_Jenkinson,_2nd_Earl_of_Liverpool\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0\n", + "PAGE HAS NO LINKS: /wiki/Old_Style_and_New_Style_dates\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Norfolk_House\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/St._James%27s_Square\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Windsor_Castle\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/St_George%27s_Chapel,_Windsor_Castle\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Charlotte_of_Mecklenburg-Strelitz\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/George_IV_of_the_United_Kingdom\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Prince_Frederick,_Duke_of_York_and_Albany\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/William_IV_of_the_United_Kingdom\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Charlotte,_Princess_Royal\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Prince_Edward,_Duke_of_Kent_and_Strathearn\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Princess_Augusta_Sophia_of_the_United_Kingdom\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Princess_Elizabeth_of_the_United_Kingdom\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Ernest_Augustus,_King_of_Hanover\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Prince_Augustus_Frederick,_Duke_of_Sussex\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Prince_Adolphus,_Duke_of_Cambridge\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Princess_Mary,_Duchess_of_Gloucester_and_Edinburgh\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Princess_Sophia_of_the_United_Kingdom\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Prince_Octavius_of_Great_Britain\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Prince_Alfred_of_Great_Britain\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Princess_Amelia_of_the_United_Kingdom\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Dynasty\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/House_of_Hanover\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Frederick,_Prince_of_Wales\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Princess_Augusta_of_Saxe-Gotha\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/King_of_Great_Britain\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/King_of_Ireland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Acts_of_Union_1800\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/United_Kingdom_of_Great_Britain_and_Ireland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Prince-elector\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Electorate_of_Brunswick-L%C3%BCneburg\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Holy_Roman_Empire\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/King_of_Hanover\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/House_of_Hanover\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Seven_Years%27_War\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/American_Revolutionary_War\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/French_Revolution\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/First_French_Empire\n", + "1460\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Battle_of_Waterloo\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Mental_disorder\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Porphyria\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Regency_era\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/George_IV_of_the_United_Kingdom\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Prince_Regent\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Prince_Edward,_Duke_of_York_and_Albany\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Francis_Ayscough\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Dean_(Christianity)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Bristol_Cathedral\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Norfolk_House\n", + "464\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Frederick,_Prince_of_Wales\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Princess_Augusta_of_Saxe-Gotha\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Thomas_Secker\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/St_James%27s_Church,_Piccadilly\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Bishop_of_Oxford\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Frederick_I_of_Sweden\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Charles_Calvert,_5th_Baron_Baltimore\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Frederick_III,_Duke_of_Saxe-Gotha-Altenburg\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Henry_Brydges,_2nd_Duke_of_Chandos\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Sophia_Dorothea_of_Hanover\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/James_Hamilton,_4th_Duke_of_Hamilton#Marriage_and_issue\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Leicester_Square\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Prince_Edward,_Duke_of_York_and_Albany\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Church_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Joseph_Addison\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Cato,_a_Tragedy\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Romney_Sedgwick\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Heir_apparent\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Duke_of_Edinburgh\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Prince_of_Wales\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Prince_of_Wales\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Jean-%C3%89tienne_Liotard\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/St_James%27s_Palace\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/John_Stuart,_3rd_Earl_of_Bute\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Prime_Minister_of_the_United_Kingdom\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Dowager\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Lady_Sarah_Lennox\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Charles_Lennox,_3rd_Duke_of_Richmond\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Princess_Sophie_Caroline_of_Brunswick-Wolfenb%C3%BCttel\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Frederick,_Margrave_of_Brandenburg-Bayreuth\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Chapels_Royal\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/St_James%27s_Palace\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Charlotte_of_Mecklenburg-Strelitz\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Westminster_Abbey\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Buckingham_Palace\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Kew_Palace\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Windsor_Castle\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Weymouth,_Dorset\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Great_Britain_in_the_Seven_Years%27_War\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Philip_Yorke,_1st_Earl_of_Hardwicke\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Seven_Years%27_War\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Tory\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Whigs_(British_political_party)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Crown_land\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Crown_Estate\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Civil_list\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Royal_Academy_of_Arts\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Johannes_Vermeer\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/The_Music_Lesson\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Canaletto\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/King%27s_Library\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Allan_Ramsay_(artist)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Thomas_Pelham-Holles,_1st_Duke_of_Newcastle\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/John_Stuart,_3rd_Earl_of_Bute\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/John_Wilkes\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/The_North_Briton\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Seditious_libel\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/House_of_Commons_of_the_United_Kingdom\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Treaty_of_Paris_(1763)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/George_Grenville\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Royal_Proclamation_of_1763\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/No_taxation_without_representation\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Stamp_Act_1765\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Stamp_duty\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/William_Pitt,_1st_Earl_of_Chatham\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Charles_Watson-Wentworth,_2nd_Marquess_of_Rockingham\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Earl_of_Chatham\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/History_of_New_York_City_(1665%E2%80%931783)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Augustus_FitzRoy,_3rd_Duke_of_Grafton\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/British_general_election,_1768\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Middlesex_(UK_Parliament_constituency)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Henry_Luttrell,_2nd_Earl_of_Carhampton\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Frederick_North,_Lord_North\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Johann_Zoffany\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Prince_Henry,_Duke_of_Cumberland_and_Strathearn\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Anne,_Duchess_of_Cumberland_and_Strathearn\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Royal_Marriages_Act_1772\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Prince_William_Henry,_Duke_of_Gloucester_and_Edinburgh\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Maria,_Duchess_of_Gloucester_and_Edinburgh\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Edward_Walpole\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Boston_Harbor\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Boston_Tea_Party\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Intolerable_Acts\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Port_of_Boston\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Explanatory_charter\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Province_of_Massachusetts_Bay\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Massachusetts_Government_Act\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/The_Crown\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/American_Revolution\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/American_Revolution\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/American_Revolutionary_War\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/American_Revolutionary_War\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/American_Revolution\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/American_Enlightenment\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Rights_of_Englishmen\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Boston_Tea_Party\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Battles_of_Lexington_and_Concord\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Olive_Branch_Petition\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Proclamation_of_Rebellion\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/United_States_Declaration_of_Independence\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Saratoga_campaign\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/John_Burgoyne\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Battles_of_Saratoga\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Sir_George_Trevelyan,_2nd_Baronet\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Frederick_North,_Lord_North\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/William_Pitt,_1st_Earl_of_Chatham\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Early_modern_France\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0\n", + "PAGE HAS NO LINKS: /wiki/Treaty_of_Alliance_(1778)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Enlightenment_in_Spain\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Dutch_Republic\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Granville_Leveson-Gower,_1st_Marquess_of_Stafford\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Thomas_Thynne,_1st_Marquess_of_Bath\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Gordon_riots\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Siege_of_Charleston\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Battle_of_Camden\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Battle_of_Guilford_Court_House\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Charles_Cornwallis,_1st_Marquess_Cornwallis\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Siege_of_Yorktown\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Peace_of_Paris_(1783)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Spanish_Florida\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/John_Adams\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/United_States_Ambassador_to_the_United_Kingdom\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/William_Petty,_2nd_Earl_of_Shelburne\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Charles_James_Fox\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/William_Cavendish-Bentinck,_3rd_Duke_of_Portland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Fox%E2%80%93North_Coalition\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Money_bag\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/East_India_Company\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/George_Nugent-Temple-Grenville,_1st_Marquess_of_Buckingham\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/House_of_Lords\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/William_Pitt_the_Younger\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/British_general_election,_1784\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/John_Singleton_Copley\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Guinea_(British_coin)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Porphyria\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Arsenic\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Cheltenham_Spa\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Frederick_William_II_of_Prussia\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Francis_Willis_(physician)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Heir_apparent\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/William_Beechey\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/James_Gillray\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Margaret_Nicholson\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/John_Frith_(assailant)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/James_Hadfield\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Theatre_Royal,_Drury_Lane\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Bannister_Truelock\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/French_Revolution\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/List_of_French_monarchs\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Habeas_corpus\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/War_of_the_First_Coalition\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/War_of_the_Second_Coalition\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Ottoman_Empire\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Napoleon_Bonaparte\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/French_Consulate\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/French_First_Republic\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Acts_of_Union_1800\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/British_claims_to_the_French_throne\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Edward_III_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/British_Emperor\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Anti-Catholicism_in_the_United_Kingdom\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Roman_Catholicism_in_the_United_Kingdom\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Speaker_of_the_House_of_Commons_(United_Kingdom)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Henry_Addington,_1st_Viscount_Sidmouth\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Treaty_of_Amiens\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Hyde_Park,_London\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/The_Times\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Richard_Hurd_(bishop)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Horatio_Nelson,_1st_Viscount_Nelson\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Battle_of_Trafalgar\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/William_Grenville,_1st_Baron_Grenville\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/War_of_the_Third_Coalition\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Ministry_of_All_the_Talents\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/William_Cavendish-Bentinck,_3rd_Duke_of_Portland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Chancellor_of_the_Exchequer\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Spencer_Perceval\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/United_Kingdom_general_election,_1807\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Henry_Hoppner_Meyer\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Cataract\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Rheumatism\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Princess_Amelia_of_the_United_Kingdom\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Regency_Acts#Care_of_King_During_his_Illness,_etc._Act_1811\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Spencer_Perceval\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Assassination_of_Spencer_Perceval\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Robert_Jenkinson,_2nd_Earl_of_Liverpool\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Congress_of_Vienna\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Kingdom_of_Hanover\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Dementia\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Windsor_Castle\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Prince_Edward,_Duke_of_Kent_and_Strathearn\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Prince_Frederick,_Duke_of_York_and_Albany\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/St_George%27s_Chapel,_Windsor_Castle\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/George_IV_of_the_United_Kingdom\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/William_IV_of_the_United_Kingdom\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Queen_Victoria\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Queen_Victoria\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Elizabeth_II\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/List_of_British_monarchs_by_longevity\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/List_of_monarchs_in_Britain_by_length_of_reign\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/British_Agricultural_Revolution\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Industrial_Revolution\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Science_Museum,_London\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/King%27s_Observatory\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Richmond-upon-Thames\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Transit_of_Venus#1761_and_1769\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/William_Herschel\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Uranus\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/40-foot_telescope\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/United_States_Declaration_of_Independence\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Sir_George_Trevelyan,_2nd_Baronet\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Erskine_May,_1st_Baron_Farnborough\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Lewis_Bernstein_Namier\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Herbert_Butterfield\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Style_(manner_of_address)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Fidei_defensor\n", + "469\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Kingdom_of_Ireland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Edward_III_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/British_claims_to_the_French_throne\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Braunschweig\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/L%C3%BCneburg\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Prince-elector\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Holy_Roman_Empire\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Congress_of_Vienna\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Royal_coat_of_arms_of_the_United_Kingdom\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Label_(heraldry)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Azure_(heraldry)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Fleur-de-lis\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Or_(heraldry)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Argent\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Quartering_(heraldry)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Gules\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Attitude_(heraldry)#Passant\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Pale_(heraldry)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Royal_Arms_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Impalement_(heraldry)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Attitude_(heraldry)#Rampant\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Orle_(heraldry)#Tressure\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Royal_coat_of_arms_of_Scotland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Coat_of_arms_of_Ireland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Division_of_the_field\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Variation_of_the_field#Semé\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Attitude_(heraldry)#Courant\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Saxon_Steed\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Charlemagne\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Acts_of_Union_1800\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Electorate_of_Brunswick-L%C3%BCneburg\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Descendants_of_George_III_and_Charlotte_of_Mecklenburg-Strelitz\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Monarchy_of_the_United_Kingdom\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/House_of_Hanover\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/George_IV_of_the_United_Kingdom\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Prince_Frederick,_Duke_of_York_and_Albany\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/William_IV_of_the_United_Kingdom\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Charlotte,_Princess_Royal\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Prince_Edward,_Duke_of_Kent_and_Strathearn\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Princess_Augusta_Sophia_of_the_United_Kingdom\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Princess_Elizabeth_of_the_United_Kingdom\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Ernest_Augustus,_King_of_Hanover\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Prince_Augustus_Frederick,_Duke_of_Sussex\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Prince_Adolphus,_Duke_of_Cambridge\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Princess_Mary,_Duchess_of_Gloucester_and_Edinburgh\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Princess_Sophia_of_the_United_Kingdom\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Prince_Octavius_of_Great_Britain\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Prince_Alfred_of_Great_Britain\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0\n", + "PAGE HAS NO LINKS: /wiki/Princess_Amelia_of_the_United_Kingdom\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Princess_Charlotte_of_Wales\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/William_IV_of_the_United_Kingdom#Issue\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Princess_Elizabeth_of_Clarence\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Queen_Victoria\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/George_V_of_Hanover\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Prince_George,_Duke_of_Cambridge\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Princess_Augusta_of_Cambridge\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Princess_Mary_Adelaide_of_Cambridge\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Prince_Ernest_Augustus,_3rd_Duke_of_Cumberland_and_Teviotdale\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Princess_Frederica_of_Hanover\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Princess_Marie_of_Hanover\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Princess_Marie_Louise_of_Hanover\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Prince_George_William_of_Hanover_(1880%E2%80%931912)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Princess_Alexandra_of_Hanover_(1882%E2%80%931963)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Princess_Olga_of_Hanover\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Prince_Christian_of_Hanover_(1885%E2%80%931901)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Ernest_Augustus,_Duke_of_Brunswick\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Prince_Ernest_Augustus_of_Hanover_(1914%E2%80%931987)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Prince_George_William_of_Hanover_(1915%E2%80%932006)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Frederica_of_Hanover\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/George_IV_of_the_United_Kingdom\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Caroline_of_Brunswick\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Princess_Charlotte_of_Wales\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Prince_Frederick,_Duke_of_York_and_Albany\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Princess_Frederica_of_Prussia\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/William_IV_of_the_United_Kingdom\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Adelaide_of_Saxe-Meiningen\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Dorothea_Jordan\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/David_Cameron\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Prime_Minister_of_the_United_Kingdom\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Charlotte,_Princess_Royal\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Frederick_of_W%C3%BCrttemberg\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Prince_Edward,_Duke_of_Kent_and_Strathearn\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Princess_Victoria_of_Saxe-Coburg-Saalfeld\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Queen_Victoria\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Elizabeth_II\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Felipe_VI_of_Spain\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Carl_XVI_Gustaf_of_Sweden\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Harald_V_of_Norway\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Margrethe_II_of_Denmark\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Princess_Augusta_Sophia_of_the_United_Kingdom\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Princess_Elizabeth_of_the_United_Kingdom\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Frederick_VI,_Landgrave_of_Hesse-Homburg\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Ernest_Augustus,_King_of_Hanover\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Frederica_of_Mecklenburg-Strelitz\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Constantine_II_of_Greece\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Felipe_VI_of_Spain\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Prince_Augustus_Frederick,_Duke_of_Sussex\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Royal_Marriages_Act_1772\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Lady_Augusta_Murray\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Cecilia_Underwood,_Duchess_of_Inverness\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Duchess_of_Inverness\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Prince_Adolphus,_Duke_of_Cambridge\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Princess_Augusta_of_Hesse-Cassel\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Princess_Mary,_Duchess_of_Gloucester_and_Edinburgh\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Prince_William_Frederick,_Duke_of_Gloucester_and_Edinburgh\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Princess_Sophia_of_the_United_Kingdom\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Prince_Octavius_of_Great_Britain\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Prince_Alfred_of_Great_Britain\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Princess_Amelia_of_the_United_Kingdom\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Ernest_Augustus,_Elector_of_Brunswick-L%C3%BCneburg\n", + "406\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Sophia_of_Hanover\n", + "464\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/George_William,_Duke_of_Brunswick-L%C3%BCneburg\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Sophia_Dorothea_of_Celle\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/%C3%89l%C3%A9onore_Desmier_d%27Olbreuse\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Frederick,_Prince_of_Wales\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Albert_II,_Margrave_of_Brandenburg-Ansbach\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/John_Frederick,_Margrave_of_Brandenburg-Ansbach\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Caroline_of_Ansbach\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/John_George_I,_Duke_of_Saxe-Eisenach\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Princess_Eleonore_Erdmuthe_of_Saxe-Eisenach\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Countess_Johanetta_of_Sayn-Wittgenstein\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Ernest_I,_Duke_of_Saxe-Gotha\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Frederick_I,_Duke_of_Saxe-Gotha-Altenburg\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Princess_Elisabeth_Sophie_of_Saxe-Altenburg\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Frederick_II,_Duke_of_Saxe-Gotha-Altenburg\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Augustus,_Duke_of_Saxe-Weissenfels\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Magdalena_Sibylle_of_Saxe-Weissenfels\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Anna_Maria_of_Mecklenburg-Schwerin\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Princess_Augusta_of_Saxe-Gotha\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/John_VI,_Prince_of_Anhalt-Zerbst\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Karl,_Prince_of_Anhalt-Zerbst\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Sophie_Augusta_of_Holstein-Gottorp\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Princess_Magdalena_Augusta_of_Anhalt-Zerbst\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Augustus,_Duke_of_Saxe-Weissenfels\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Sophia_of_Saxe-Weissenfels,_Princess_of_Anhalt-Zerbst\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Anna_Maria_of_Mecklenburg-Schwerin\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Cultural_depictions_of_George_III_of_the_United_Kingdom\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/The_Madness_of_George_III\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Alan_Bennett\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Nigel_Hawthorne\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/The_Madness_of_King_George\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Nicholas_Hytner\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/List_of_mentally_ill_monarchs\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Acts_of_Union_1800\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Old_Style_and_New_Style_dates\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Julian_calendar\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Quakers\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Hannah_Lightfoot\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Lavinia_Ryves\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Olivia_Serres\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Horace_Walpole\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/The_London_Gazette\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Dictionary_of_National_Biography#Oxford_Dictionary_of_National_Biography\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Digital_object_identifier\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/The_National_Archives_(United_Kingdom)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/The_Guardian\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/John_C._G._R%C3%B6hl\n", + "494\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Digital_object_identifier\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/PubMed_Identifier\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/PLOS_ONE\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Digital_object_identifier\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/The_Lancet\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Digital_object_identifier\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/PubMed_Identifier\n", + "494\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/The_London_Gazette\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/The_London_Gazette\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/The_London_Gazette\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/The_London_Gazette\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/The_London_Gazette\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/The_London_Gazette\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/The_London_Gazette\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/William_Berry_(genealogist)\n", + "494\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/The_London_Gazette\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/The_London_Gazette\n", + "494\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Jeremy_Black_(historian)\n", + "494\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/John_Brooke_(English_historian)\n", + "494\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Herbert_Butterfield\n", + "494\n", + "494\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Antonia_Fraser\n", + "494\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Christopher_Hibbert\n", + "494\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/John_C._G._R%C3%B6hl\n", + "494\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Digital_object_identifier\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Sir_George_Trevelyan,_2nd_Baronet\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/J._Steven_Watson\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Alison_Weir\n", + "494\n", + "494\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Digital_object_identifier\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/PubMed_Central\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/PubMed_Identifier\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Digital_object_identifier\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/PubMed_Central\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/PubMed_Identifier\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Lewis_Bernstein_Namier\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Digital_object_identifier\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Charles_Grant_Robertson\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0\n", + "PAGE HAS NO LINKS: /wiki/Encyclop%C3%A6dia_Britannica\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/The_National_Archives_(United_Kingdom)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/National_Portrait_Gallery,_London\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/House_of_Hanover\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/House_of_Welf\n", + "464\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/List_of_British_monarchs\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Monarchy_of_Ireland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Acts_of_Union_1800\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Electorate_of_Brunswick-L%C3%BCneburg\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Duchy_of_Brunswick-L%C3%BCneburg\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Archtreasurer\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Holy_Roman_Empire\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Acts_of_Union_1800\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Monarchy_of_the_United_Kingdom\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/George_IV_of_the_United_Kingdom\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Congress_of_Vienna\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Kingdom_of_Hanover\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/British_monarchy\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Frederick,_Prince_of_Wales\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Prince_of_Wales\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/George_IV_of_the_United_Kingdom\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Peerage_of_Great_Britain\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Frederick,_Prince_of_Wales\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Duke_of_Edinburgh\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Pretender\n", + "464\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/British_claims_to_the_French_throne\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/List_of_English_monarchs\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/List_of_Scottish_monarchs\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/List_of_British_monarchs\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/%C3%86thelstan\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Edmund_I\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Eadred\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Eadwig\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Edgar_the_Peaceful\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Edward_the_Martyr\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/%C3%86thelred_the_Unready\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Sweyn_Forkbeard\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Edmund_Ironside\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Cnut_the_Great\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Harold_Harefoot\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Harthacnut\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Edward_the_Confessor\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Harold_Godwinson\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Edgar_%C3%86theling\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/William_the_Conqueror\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/William_II_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Henry_I_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Stephen,_King_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Empress_Matilda\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Henry_II_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Henry_the_Young_King\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Richard_I_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/John,_King_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Henry_III_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Edward_I_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Edward_II_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Edward_III_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Richard_II_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Henry_IV_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Henry_V_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Henry_VI_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Edward_IV_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Edward_V_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Richard_III_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Henry_VII_of_England\n", + "559\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Edward_VI_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Lady_Jane_Grey\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Mary_I_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Philip_II_of_Spain\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Elizabeth_I_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Kenneth_MacAlpin\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Domnall_mac_Ailp%C3%ADn\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Causant%C3%ADn_mac_Cin%C3%A1eda\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/%C3%81ed_mac_Cin%C3%A1eda\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Giric\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Eochaid,_son_of_Rhun\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Donald_II_of_Scotland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Constantine_II_of_Scotland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Malcolm_I_of_Scotland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Indulf\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Dub,_King_of_Scotland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Cuil%C3%A9n\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Amla%C3%ADb,_King_of_Scotland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Kenneth_II_of_Scotland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Constantine_III_of_Scotland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Kenneth_III_of_Scotland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Malcolm_II_of_Scotland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Duncan_I_of_Scotland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Macbeth,_King_of_Scotland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Lulach\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Malcolm_III_of_Scotland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Donald_III_of_Scotland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Duncan_II_of_Scotland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Donald_III_of_Scotland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Edgar,_King_of_Scotland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Alexander_I_of_Scotland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/David_I_of_Scotland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Malcolm_IV_of_Scotland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/William_the_Lion\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Alexander_II_of_Scotland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Alexander_III_of_Scotland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Margaret,_Maid_of_Norway\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Guardian_of_Scotland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/John_Balliol\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Guardian_of_Scotland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Robert_the_Bruce\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/David_II_of_Scotland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Edward_Balliol\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Robert_II_of_Scotland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Robert_III_of_Scotland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/James_I_of_Scotland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/James_II_of_Scotland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/James_III_of_Scotland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/James_IV_of_Scotland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/James_V_of_Scotland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Mary,_Queen_of_Scots\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/James_VI_and_I\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Union_of_the_Crowns\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/James_VI_and_I\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Charles_I_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Commonwealth_of_England\n", + "487\n", + "460\n", + "526\n", + "308\n", + "491\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Acts_of_Union_1707\n", + "491\n", + "406\n", + "464\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/George_IV_of_the_United_Kingdom\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/William_IV_of_the_United_Kingdom\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Queen_Victoria\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Edward_VII\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/George_V\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Edward_VIII\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/George_VI\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Elizabeth_II\n", + "469\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Acts_of_Union_1707\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Great_Britain_in_the_Seven_Years%27_War\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Jacobitism\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Jacobite_risings\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/War_of_Jenkins%27_Ear\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/French_and_Indian_War\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Boston_Massacre\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/American_Revolutionary_War\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Fourth_Anglo-Dutch_War\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/French_Revolutionary_Wars\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Acts_of_Union_1800\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/House_of_Stuart\n", + "491\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/House_of_Hanover\n", + "406\n", + "464\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Parliament_of_Great_Britain\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/House_of_Lords\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/House_of_Commons_of_Great_Britain\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/List_of_Parliaments_of_Great_Britain\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/List_of_Acts_of_the_Parliament_of_Great_Britain\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/List_of_Acts_of_the_Parliament_of_Great_Britain,_1707%E2%80%931719\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/List_of_Acts_of_the_Parliament_of_Great_Britain,_1720%E2%80%931739\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/List_of_Acts_of_the_Parliament_of_Great_Britain,_1740%E2%80%931759\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/List_of_Acts_of_the_Parliament_of_Great_Britain,_1760%E2%80%931779\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/List_of_Acts_of_the_Parliament_of_Great_Britain,_1780%E2%80%931800\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Elections_in_Great_Britain\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/British_general_election,_1708\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/British_general_election,_1710\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/British_general_election,_1713\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/British_general_election,_1715\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/British_general_election,_1722\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/British_general_election,_1727\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/British_general_election,_1734\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/British_general_election,_1741\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/British_general_election,_1747\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0\n", + "PAGE HAS NO LINKS: /wiki/British_general_election,_1754\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/British_general_election,_1761\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/British_general_election,_1768\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/British_general_election,_1774\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/British_general_election,_1780\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/British_general_election,_1784\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/British_general_election,_1790\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/British_general_election,_1796\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/List_of_British_monarchs\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Peerage_of_Great_Britain\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Privy_Council_of_Great_Britain\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Prime_Minister_of_Great_Britain\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/List_of_Prime_Ministers_of_Great_Britain\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Whigs_(British_political_party)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Tories_(British_political_party)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Whig_Junto\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Patriot_Whigs\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Kit-Cat_Club\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Great_Britain\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Queen_Anne_style_architecture\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Georgian_architecture\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/East_India_Company\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/British_Empire\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Longitude_prize\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Window_tax\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Proclamation_of_Rebellion\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/South_Sea_Company\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Speenhamland_system\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Flag_of_Great_Britain\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Royal_coat_of_arms_of_Great_Britain\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Duke_of_Edinburgh\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Frederick,_Prince_of_Wales\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Duke_of_Gloucester_and_Edinburgh\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Alfred,_Duke_of_Saxe-Coburg_and_Gotha\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Prince_Philip,_Duke_of_Edinburgh\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/British_prince\n", + "406\n", + "464\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Frederick,_Prince_of_Wales\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Prince_George_William_of_Great_Britain\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Prince_William,_Duke_of_Cumberland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Prince_Edward,_Duke_of_York_and_Albany\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Prince_William_Henry,_Duke_of_Gloucester_and_Edinburgh\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Prince_Henry,_Duke_of_Cumberland_and_Strathearn\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Prince_Frederick_of_Great_Britain\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/George_IV_of_the_United_Kingdom\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Prince_Frederick,_Duke_of_York_and_Albany\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/William_IV_of_the_United_Kingdom\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Prince_Edward,_Duke_of_Kent_and_Strathearn\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Ernest_Augustus,_King_of_Hanover\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Prince_Augustus_Frederick,_Duke_of_Sussex\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Prince_Adolphus,_Duke_of_Cambridge\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Prince_Octavius_of_Great_Britain\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Prince_Alfred_of_Great_Britain\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Prince_William_Frederick,_Duke_of_Gloucester_and_Edinburgh\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Albert,_Prince_Consort\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/George_V_of_Hanover\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Prince_George,_Duke_of_Cambridge\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Edward_VII\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Alfred,_Duke_of_Saxe-Coburg_and_Gotha\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Prince_Arthur,_Duke_of_Connaught_and_Strathearn\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Prince_Leopold,_Duke_of_Albany\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Prince_Ernest_Augustus,_3rd_Duke_of_Cumberland_and_Teviotdale\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Prince_Albert_Victor,_Duke_of_Clarence_and_Avondale\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/George_V\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Prince_Alexander_John_of_Wales\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Alfred,_Hereditary_Prince_of_Saxe-Coburg_and_Gotha\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Prince_Arthur_of_Connaught\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Charles_Edward,_Duke_of_Saxe-Coburg_and_Gotha\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Prince_George_William_of_Hanover_(1880%E2%80%931912)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Prince_Christian_of_Hanover_(1885%E2%80%931901)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Ernest_Augustus,_Duke_of_Brunswick\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Edward_VIII\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/George_VI\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Prince_Henry,_Duke_of_Gloucester\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Prince_George,_Duke_of_Kent\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Prince_John_of_the_United_Kingdom\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Alastair_Windsor,_2nd_Duke_of_Connaught_and_Strathearn\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Johann_Leopold,_Hereditary_Prince_of_Saxe-Coburg_and_Gotha\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Prince_Hubertus_of_Saxe-Coburg_and_Gotha_(1909%E2%80%931943)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Prince_Ernest_Augustus_of_Hanover_(1914%E2%80%931987)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Prince_George_William_of_Hanover_(1915%E2%80%932006)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Prince_Philip,_Duke_of_Edinburgh\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Prince_William_of_Gloucester\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Prince_Richard,_Duke_of_Gloucester\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Prince_Edward,_Duke_of_Kent\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Prince_Michael_of_Kent\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Charles,_Prince_of_Wales\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Prince_Andrew,_Duke_of_York\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Prince_Edward,_Earl_of_Wessex\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Prince_William,_Duke_of_Cambridge\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Prince_Harry\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/James,_Viscount_Severn\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Prince_George_of_Cambridge\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Prince_Consort\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/James,_Viscount_Severn#Titles_and_styles\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Prince_of_Wales\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Edward_II_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Edward_the_Black_Prince\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Richard_II_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Henry_V_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Edward_of_Westminster,_Prince_of_Wales\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Richard_of_York,_3rd_Duke_of_York\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Edward_V_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Edward_of_Middleham,_Prince_of_Wales\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Arthur,_Prince_of_Wales\n", + "559\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Edward_VI_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Henry_Frederick,_Prince_of_Wales\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Charles_I_of_England\n", + "487\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/James_Francis_Edward_Stuart\n", + "464\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Frederick,_Prince_of_Wales\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/George_IV_of_the_United_Kingdom\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Edward_VII\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/George_V\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Edward_VIII\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Charles,_Prince_of_Wales\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Prince_of_Wales%27s_feathers\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Principality_of_Wales\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/History_of_Hanover\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Electorate_of_Brunswick-L%C3%BCneburg\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Ernest_Augustus,_Elector_of_Brunswick-L%C3%BCneburg\n", + "406\n", + "464\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Kingdom_of_Hanover\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/George_IV_of_the_United_Kingdom\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/William_IV_of_the_United_Kingdom\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Ernest_Augustus,_King_of_Hanover\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/George_V_of_Hanover\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/List_of_British_monarchs\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Virtual_International_Authority_File\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Library_of_Congress_Control_Number\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/International_Standard_Name_Identifier\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Integrated_Authority_File\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/LIBRIS\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Syst%C3%A8me_universitaire_de_documentation\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Biblioth%C3%A8que_nationale_de_France\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/BIBSYS\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Union_List_of_Artist_Names\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/National_Library_of_Australia\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/National_Library_of_the_Czech_Republic\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Netherlands_Institute_for_Art_History#Online_artist_pages\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Institute_for_Advanced_Technology_in_the_Humanities\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/George_III_of_the_United_Kingdom\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/George_III_of_the_United_Kingdom\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Main_Page\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Main_Page\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/List_of_colonial_governors_of_Pennsylvania\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "23\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Delaware\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/American_Revolution\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/William_Penn\n", + "54\n", + "487\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/William_Penn_(admiral)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Hannah_Callowhill_Penn\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/John_Penn_%22the_American%22\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Thomas_Penn\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Richard_Penn,_Sr.\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/John_Penn_(governor)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/John_Penn_(writer)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/William_Penn\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Hannah_Callowhill_Penn\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/John_Penn_(%22the_American%22)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Thomas_Penn\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Richard_Penn,_Sr.\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Thomas_Penn\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/John_Penn_(governor)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/John_Penn_(writer)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/John_Penn_(governor)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Colonial_Pennsylvania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Lower_Counties\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/William_Markham_(Governor)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Deputy_Governor\n", + "1705\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/William_Penn\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Proprietor\n", + "1705\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Thomas_Lloyd_(lieutenant_governor)\n", + "1705\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/William_Clayton_(Governor)\n", + "1705\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Deputy_Governor\n", + "1705\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Thomas_Lloyd_(lieutenant_governor)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Deputy_Governor\n", + "1705\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/William_Markham_(Governor)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Deputy_Governor\n", + "1705\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Benjamin_Fletcher\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Governor\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/New_York,_New_York\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/William_Markham_(Governor)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Deputy_Governor\n", + "1705\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Samuel_Carpenter\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Deputy_Governor\n", + "1705\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/William_Penn\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Proprietor\n", + "1705\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Andrew_Hamilton_(New_Jersey)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Deputy_Governor\n", + "1705\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Edward_Shippen\n", + "1705\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/John_Evans_(Pennsylvania_governor)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Deputy_Governor\n", + "1705\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Charles_Gookin\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Deputy_Governor\n", + "1705\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/William_Keith_(Colonial_Lieutenant_Governor_of_Pennsylvania_and_Delaware)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Deputy_Governor\n", + "1705\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Patrick_Gordon_(governor)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Deputy_Governor\n", + "1705\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/James_Logan_(statesman)\n", + "1705\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Deputy_Governor\n", + "1705\n", + "1705\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/James_Hamilton_(Pennsylvania)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Deputy_Governor\n", + "1705\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Robert_Hunter_Morris\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Deputy_Governor\n", + "1705\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Deputy_Governor\n", + "1705\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/James_Hamilton_(Pennsylvania)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Deputy_Governor\n", + "1705\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/John_Penn_(governor)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Lieutenant_Governor\n", + "1705\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Richard_Penn_(governor)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Lieutenant_Governor\n", + "1705\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/John_Penn_(governor)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Lieutenant_Governor\n", + "1705\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Joseph_Galloway\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/List_of_Governors_of_Pennsylvania\n", + "494\n", + "41\n", + "41\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Main_Page\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Main_Page\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Pennsylvania_Provincial_Assembly\n", + "548\n", + "469\n", + "300\n", + "300\n", + "1705\n", + "1023\n", + "329\n", + "440\n", + "235\n", + "114\n", + "195\n", + "54\n", + "592\n", + "357\n", + "487\n", + "460\n", + "526\n", + "308\n", + "491\n", + "406\n", + "464\n", + "577\n", + "42\n", + "24\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/William_Penn\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Treaty_of_Paris_(1783)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Pound_sterling\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Spanish_dollar\n", + "1\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/English_overseas_possessions\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/William_Penn\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Royal_charter\n", + "487\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/William_Penn_(Royal_Navy_officer)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Restoration_colony\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Province_of_Carolina\n", + "54\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/American_Revolution\n", + "1\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Frame_of_Government_of_Pennsylvania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/American_Revolution\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Pennsylvania_Constitution_of_1776\n", + "1\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Pennsylvania_General_Assembly\n", + "1705\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Bucks_County,_Pennsylvania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Montgomery_County,_Pennsylvania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Chester_County,_Pennsylvania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Mason%E2%80%93Dixon_line\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Marcus_Hook,_Pennsylvania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Delaware\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/New_Castle_County,_Delaware\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Sussex_County,_Delaware\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Kent_County,_Delaware\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/William_Penn\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/French_and_Indian_War\n", + "1705\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Pennsylvania_Dutch_Country\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Mennonites\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Germantown,_Philadelphia,_Pennsylvania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Northkill_Amish_Settlement\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Pennsylvania_Hospital\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/The_Academy_and_College_of_Philadelphia\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/University_of_Pennsylvania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Liberty_Bell\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Benjamin_West\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Lenni_Lenape\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Native_Americans_in_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Lenape\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Susquehannock\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Voltaire\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Lenape\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Delaware_River\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Lehigh_River\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Easton,_Pennsylvania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Walking_Purchase\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Rhode_Island\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Pike_County,_Pennsylvania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Monroe_County,_Pennsylvania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Carbon_County,_Pennsylvania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Schuylkill_County,_Pennsylvania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Northampton_County,_Pennsylvania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Lehigh_County,_Pennsylvania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Bucks_County,_Pennsylvania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Great_Britain_in_the_Seven_Years%27_War\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Ohio_Country\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/French_and_Indian_War\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/British_Empire\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Pontiac%27s_War\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Royal_Proclamation_of_1763\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Appalachian_Mountains\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Fort_Pitt_(Pennsylvania)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Pittsburgh,_Pennsylvania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Edward_Shippen\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/John_Guest_(judge)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/John_Guest_(judge)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Roger_Mompesson\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/David_Lloyd_(judge)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/James_Logan_(statesman)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Jeremiah_Langhorne\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/William_Allen_(loyalist)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Benjamin_Chew\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Benjamin_Franklin\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Academy_and_College_of_Philadelphia\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/University_of_Pennsylvania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/King_George%27s_War\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Thomas_McKean\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/New_London_Township,_Pennsylvania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Continental_Army\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Articles_of_Confederation\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Gouverneur_Morris\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Robert_Morris_(merchant)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Robert_Morris_University\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/John_Morton_(politician)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Ridley_Township,_Delaware_County,_Pennsylvania\n", + "1\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Continental_Congress\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Continental_Association\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/United_States_Declaration_of_Independence\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Thomas_Paine\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Common_Sense_(pamphlet)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/William_Penn\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/George_Ross_(delegate)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0\n", + "PAGE HAS NO LINKS: /wiki/New_Castle,_Delaware\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Delaware\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Arthur_St._Clair\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Continental_Army\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Articles_of_Confederation\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/James_Wilson\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/United_States_Declaration_of_Independence\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Three-Fifths_Compromise\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Peggy_Shippen\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Edward_Shippen,_IV\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Benedict_Arnold\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Restoration_colony\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Walking_Purchase\n", + "42\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Independence_Hall\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Great_Wagon_Road\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Pennsylvania_in_the_American_Revolution\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Welsh_Tract\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Murray_Rothbard\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/LewRockwell.com\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Wilkes_University_Election_Statistics_Project\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Thirteen_Colonies\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Colonial_history_of_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/New_England_Colonies\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Middle_Colonies\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Chesapeake_Colonies\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Southern_Colonies\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Connecticut_Colony\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Delaware_Colony\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Province_of_Georgia\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Province_of_Maryland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Province_of_Massachusetts_Bay\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Province_of_New_Hampshire\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Province_of_New_Jersey\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Province_of_New_York\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Province_of_North_Carolina\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Colony_of_Rhode_Island_and_Providence_Plantations\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Province_of_South_Carolina\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Colony_of_Virginia\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Province_of_Carolina\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/East_Jersey\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Province_of_Maine\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Dominion_of_New_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/New_Haven_Colony\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Plymouth_Colony\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Saybrook_Colony\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/West_Jersey\n", + "1830\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/British_Empire\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Commonwealth_realm\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Commonwealth_of_Nations\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Historical_flags_of_the_British_Empire\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Kingdom_of_Ireland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Menorca\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Gibraltar\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Malta_Protectorate\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Crown_Colony_of_Malta\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Heligoland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/United_States_of_the_Ionian_Islands\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/British_Cyprus\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Irish_Free_State\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/New_Albion\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/History_of_Newfoundland_and_Labrador\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/British_Saint_Lucia\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Colony_of_Virginia\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Bermuda\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Plymouth_Colony\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Saint_Kitts\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/History_of_Barbados\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Saint_Croix,_U.S._Virgin_Islands\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/History_of_Saint_Vincent_and_the_Grenadines\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Nevis\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Massachusetts_Bay_Colony\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Province_of_Maryland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Montserrat\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Antigua\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Saybrook_Colony\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Connecticut_Colony\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Colony_of_Rhode_Island_and_Providence_Plantations\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/New_Haven_Colony\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Bay_Islands_Department\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Anguilla\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Mosquito_Coast\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Colony_of_Jamaica\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Province_of_Carolina\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Province_of_New_York\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Province_of_New_Jersey\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/British_Virgin_Islands\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Cayman_Islands\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/History_of_the_Bahamas\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Rupert%27s_Land\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/British_Leeward_Islands\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/East_Jersey\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/West_Jersey\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Province_of_New_Hampshire\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Dominion_of_New_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Province_of_Massachusetts_Bay\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Delaware_Colony\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Province_of_North_Carolina\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Province_of_South_Carolina\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/History_of_Nova_Scotia\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Province_of_Georgia\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Cape_Breton_Island\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/History_of_Grenada\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/History_of_Dominica\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/History_of_Prince_Edward_Island\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Province_of_Quebec_(1763%E2%80%9391)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/East_Florida\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/British_West_Florida\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/History_of_New_Brunswick\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Lower_Canada\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Upper_Canada\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Turks_and_Caicos_Islands\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Columbia_District\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Oregon_Country\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/British_Windward_Islands\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/British_Leeward_Islands\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Province_of_Canada\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Colony_of_Vancouver_Island\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Colony_of_the_Queen_Charlotte_Islands\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Colony_of_British_Columbia_(1858%E2%80%9366)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/North-Western_Territory\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/History_of_Antigua_and_Barbuda\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Stickeen_Territories\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Colony_of_British_Columbia_(1866%E2%80%9371)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Post-Confederation_Canada_(1867%E2%80%931914)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/British_Honduras\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/History_of_Saint_Kitts_and_Nevis\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/History_of_Trinidad_and_Tobago\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Dominion_of_Newfoundland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/West_Indies_Federation\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Condominium_(international_law)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Dominion\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Statute_of_Westminster_1931\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Name_of_Canada\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Responsible_government\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/De_jure\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Provinces_and_territories_of_Canada\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Providence_Island_colony\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Willoughbyland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Archipelago_of_San_Andr%C3%A9s,_Providencia_and_Santa_Catalina\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/British_Guiana\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Falkland_Islands\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/South_Georgia_and_the_South_Sandwich_Islands\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Departments_of_Colombia\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Falklands_War\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Saint_Helena\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Sierra_Leone_Colony_and_Protectorate\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Cape_Colony\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Ascension_Island\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Tristan_da_Cunha\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Cape_Colony\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/History_of_Madeira\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/British_Mauritius\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Gambia_Colony_and_Protectorate\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Colony_of_Natal\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Lagos_Colony\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Basutoland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Gold_Coast_(British_colony)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Sultanate_of_Egypt\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Niger_Coast_Protectorate\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Bechuanaland_Protectorate\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/British_Somaliland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Zulu_Kingdom\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Uganda_Protectorate\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Zanzibar\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Nyasaland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/British_Central_Africa_Protectorate\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/History_of_Swaziland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/East_Africa_Protectorate\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0\n", + "PAGE HAS NO LINKS: /wiki/Anglo-Egyptian_Sudan\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Northern_Nigeria_Protectorate\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Southern_Nigeria_Protectorate\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Orange_River_Colony\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Transvaal_Colony\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/History_of_Seychelles\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Union_of_South_Africa\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Colonial_Nigeria\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/South-West_Africa\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/British_Cameroons\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Kenya_Colony\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Tanganyika_(territory)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Southern_Rhodesia\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Northern_Rhodesia\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/League_of_Nations_mandate\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Responsible_government\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Rhodesia%27s_Unilateral_Declaration_of_Independence\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Rhodesia\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Diplomatic_recognition\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Lancaster_House_Agreement\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/British_Bencoolen\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/C%C3%B4n_S%C6%A1n_Island\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Bengal_Presidency\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/British_invasion_of_Manila\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Padang\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/History_of_Penang\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/British_Ceylon\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/History_of_the_Maldives\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Java_Island\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Bangka_Island\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Belitung\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/British_Malaya\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/British_rule_in_Burma\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Straits_Settlements\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Colony_of_Aden\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/First_Anglo-Afghan_War\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/British_Hong_Kong\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Kingdom_of_Sarawak\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Crown_Colony_of_Labuan\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/British_Raj\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/British_Borneo\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/European_influence_in_Afghanistan\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/North_Borneo\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Unfederated_Malay_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Bruneian_Empire\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Muscat_and_Oman\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Trucial_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Federated_Malay_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Weihaiwei_under_British_rule\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/British_Cyprus\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/History_of_Bhutan\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Sheikhdom_of_Kuwait\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/British_Mandate_for_Mesopotamia_(legal_instrument)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Emirate_of_Transjordan\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Mandatory_Palestine\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/War_in_Vietnam_(1945%E2%80%9346)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Crown_Colony_of_North_Borneo\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Crown_Colony_of_Sarawak\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Colony_of_Singapore\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Malayan_Union\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Federation_of_Malaya\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Akrotiri_and_Dhekelia\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Cyprus\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/British_Indian_Ocean_Territory\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Mauritius\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Seychelles\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/League_of_Nations_mandate\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Anglo-Iraqi_Treaty\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Colony_of_New_South_Wales\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Van_Diemen%27s_Land\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Colony_of_Tasmania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Auckland_Islands\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/New_Hebrides\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Colony_of_Queensland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Swan_River_Colony\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Colony_of_Western_Australia\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Colony_of_South_Australia\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/History_of_the_Pitcairn_Islands\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Colony_of_New_Zealand\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Colony_of_Victoria\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Colony_of_Fiji\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/British_Western_Pacific_Territories\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Territory_of_Papua\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Kingdom_of_Rarotonga\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Cook_Islands_Federation\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Union_Islands\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Gilbert_and_Ellice_Islands\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/British_Solomon_Islands\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/History_of_Tonga\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/History_of_Niue\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/History_of_Australia_(1901%E2%80%9345)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Dominion_of_New_Zealand\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/History_of_Nauru\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Territory_of_New_Guinea\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Territory_of_Papua_and_New_Guinea\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Realm_of_New_Zealand\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Kiribati\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Tuvalu\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Solomon_Islands\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Papua_New_Guinea\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Saint_Helena\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Ascension_Island\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Tristan_da_Cunha\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/British_Antarctic_Territory\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Australian_Antarctic_Territory\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Commonwealth_of_Australia\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Ross_Dependency\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Realm_of_New_Zealand\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Saint_Helena,_Ascension_and_Tristan_da_Cunha\n", + "267\n", + "24\n", + "24\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Main_Page\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Main_Page\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/William_Penn\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/William_Penn_(disambiguation)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/London\n", + "548\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Ruscombe\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Berkshire\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/England\n", + "469\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Chigwell_School\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Christ_Church,_Oxford\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Hannah_Callowhill_Penn\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/William_Penn,_Jr.\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/John_Penn_(%22the_American%22)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Thomas_Penn\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Richard_Penn,_Sr.\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Admiral_Sir_William_Penn\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Brooklyn_Museum\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Sir_William_Penn\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Religious_Society_of_Friends\n", + "25\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Commonwealth\n", + "1\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Religious_freedom\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Lenape\n", + "1705\n", + "487\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Admiral_Sir_William_Penn\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Delaware\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/New_Castle,_Delaware\n", + "54\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Pennsylvania_General_Assembly\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Quaker\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/New_Netherland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/New_Sweden\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/British_colonization_of_the_Americas\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Delaware\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Delaware_Colony\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/British_colonization_of_the_Americas\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Frame_of_Government_of_Pennsylvania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/United_States_Constitution\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Pacifist\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/United_States_of_Europe\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/European_Parliament\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Primitive_Christianity\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Tower_of_London\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/No_Cross,_No_Crown\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/All_Hallows-by-the-Tower\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Tower_Hill\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/William_Penn_(Royal_Navy_officer)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Rotterdam\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Commonwealth_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/English_Civil_War\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Oliver_Cromwell\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Irish_Rebellion_of_1641\n", + "487\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Royal_Navy\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Oliver_Cromwell\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Puritan\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Charles_I_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Smallpox\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Essex\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Samuel_Pepys\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Chigwell_School\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Christ_Church,_Oxford\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/University_of_Oxford\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/William_Shakespeare\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Caribbean\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Missionary\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/University_of_Oxford\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Swashbuckling\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/John_Owen_(theologian)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Louis_XIV\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0\n", + "PAGE HAS NO LINKS: /wiki/Notre-Dame_de_Paris\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Moise_Amyraut\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Saumur\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Great_Plague_of_London\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Gout\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Great_Fire_of_1666\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Five_Mile_Act_1665\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Religious_Society_of_Friends\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Cork_(city)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Original_sin\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/George_Fox\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Seekers\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Ranters\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Antinomianism\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Soul_sleep\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Adamites\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Diggers\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Levellers\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Behmenists\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Muggletonians\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Castle_Salem\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Rosscarbery\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Salzburg\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Francis_Daniel_Pastorius\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Proprietor\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Germantown,_Philadelphia\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/German_Society_of_Pennsylvania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Whore_of_Babylon\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Christian_perfection\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Tower_of_London\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Blasphemy\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Trinity\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Divinity_of_Christ\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Primitive_Christianity\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Christ_Church,_Oxford\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/William_Mead_(merchant)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Conventicles_Act_1670\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Old_Bailey\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Newgate_Prison\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Bushel%27s_Case\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Jury_nullification\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Habeas_corpus\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Jean_Leon_Gerome_Ferris\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/New_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Puritan\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Caribbean\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/West_Jersey\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/New_Jersey\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Chorleywood\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Rickmansworth\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Buckinghamshire\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Burlington,_New_Jersey\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/East_Jersey\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Province_of_Maryland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Cecilius_Calvert,_2nd_Baron_Baltimore\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Delmarva_Peninsula\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Graystones_Forest\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Pennsylvania_Charter_of_Privileges\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Utopia\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Trial_by_jury\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Freedom_of_religion\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Frame_of_Government_of_Pennsylvania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Huguenot\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Mennonite\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Amish\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Roman_Catholic_Church\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Lutheranism\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Jews\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Bloody_Code\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Cock-fighting\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Bear-baiting\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/John_Locke\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Thomas_Jefferson\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Penn%E2%80%93Calvert_Boundary_Dispute\n", + "460\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Declaration_of_Indulgence\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/George_Fox\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Slate_Roof_House\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/James_Logan_(statesman)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Isle_of_Wight\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Canterbury_(ship)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Slavery\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Germantown,_Philadelphia,_Pennsylvania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Pennsbury_Manor\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/James_Logan_(statesman)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/William_Penn,_Jr.\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Sussex_County,_Delaware\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Andrew_Hamilton_(lawyer)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Replevin\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Ruscombe\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Twyford,_Berkshire\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Jordans,_Buckinghamshire\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Chalfont_St_Giles\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Hannah_Callowhill_Penn\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/John_Penn_(%22the_American%22)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Thomas_Penn\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Earl_of_Pomfret\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Richard_Penn,_Sr.\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/William_Penn_Charter_School\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Voltaire\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Benjamin_Franklin\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/American_Revolution\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Thomas_Paine\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/American_Revolution\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/British_Empire\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/American_Revolution\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Thomas_Penn\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/John_Penn_(%22the_American%22)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Roman_Catholicism\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Quakers\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Benjamin_Franklin\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Walking_Purchase\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Lehigh_Valley\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Philadelphia_City_Hall\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Ronald_Reagan\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Act_of_Congress\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Hannah_Callowhill_Penn\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Honorary_Citizen_of_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Alexander_Milne_Calder\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Edmund_Bacon_(architect)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/One_Liberty_Place\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Curse_of_Billy_Penn\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Comcast_Center_(Philadelphia)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Philadelphia_Phillies\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/2008_World_Series\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Penn_Treaty_Park\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Penn%27s_Treaty_with_the_Indians\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Quaker_Oats_Company\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Penn_of_Pennsylvania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Clifford_Evans_(actor)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/William_Penn_High_School_for_Girls\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/National_Register_of_Historic_Places\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Chigwell_School\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Slough\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Stoke_Park,_Guildford\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/The_Friends%27_School,_Hobart\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/George_Fox_University\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Penn%E2%80%93Calvert_boundary_dispute\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Nicholas_More\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/European_Parliament\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Daniele_Archibugi\n", + "494\n", + "494\n", + "494\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Jan_Claus\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Conventicle_Act_1664\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Privateer\n", + "494\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Quaker_Oats_Company\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/National_Park_Service\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/JSTOR\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Wikisource\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Ludwig_von_Mises_Institute\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Find_a_Grave\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Project_Gutenberg\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Internet_Archive\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/LibriVox\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/No_Cross,_No_Crown\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Quakers\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/List_of_Quakers\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Susan_B._Anthony\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Robert_Barclay\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Anthony_Benezet\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Kenneth_E._Boulding\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Howard_Brinton\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/John_Cadbury\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Levi_Coffin\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Judi_Dench\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Margaret_Fell\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/George_Fox\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Elizabeth_Fry\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Edward_Hicks\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Elias_Hicks\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Herbert_Hoover\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Rufus_Jones_(writer)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Thomas_Raymond_Kelly_(Quaker_mystic)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Benjamin_Lay\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Dave_Matthews\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Lucretia_Mott\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/James_Nayler\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Richard_Nixon\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Parker_Palmer\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Alice_Paul\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Robert_Pleasants\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Bayard_Rustin\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Jessamyn_West_(writer)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/John_Greenleaf_Whittier\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/John_Woolman\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Yearly_Meeting\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0\n", + "PAGE HAS NO LINKS: /wiki/Monthly_meeting\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/American_Friends_Service_Committee\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/A_Quaker_Action_Group\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Britain_Yearly_Meeting\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Evangelical_Friends_Church_International\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Friends_Committee_on_National_Legislation\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Friends_General_Conference\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Friends_United_Meeting\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Friends_World_Committee_for_Consultation\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Nontheist_Quakers\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Quaker_Council_for_European_Affairs\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Quaker_Peace_and_Social_Witness\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Quaker_United_Nations_Office\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/World_Gathering_of_Young_Friends\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Peace_Testimony\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Testimony_of_equality\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Testimony_of_integrity\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Testimony_of_Simplicity\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Quakers_in_North_America\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Quakers_in_Latin_America\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Quakers_in_Europe\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Quakers_in_Africa\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/List_of_Quaker_businesses,_organizations_and_charities\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Quakers_in_science\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Clerk_(Quaker)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Book_of_Discipline_(Quaker)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/History_of_the_Quakers\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Homosexuality_and_Quakerism\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Inner_light\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Friends_meeting_house\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Query_(Quaker)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/List_of_Friends_schools\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Quaker_Tapestry\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Quaker_wedding\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Quaker_views_on_women\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Protestantism\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Nonconformist\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Sussex\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Baptists\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/General_Baptists\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Reformed_Baptists\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Reformed_Baptists#Strict_Baptists\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Angmering_Baptist_Church\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Ebenezer_Chapel,_Heathfield\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Grove_Road_Strict_Baptist_Church\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/West_Street_Baptist_Church,_East_Grinstead\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Jireh_Chapel,_Haywards_Heath\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Hope_Chapel,_Horsham\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Holland_Road_Baptist_Church\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Rehoboth_Chapel,_Jarvis_Brook\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Zoar_Strict_Baptist_Chapel\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/St_Leonard%27s_Baptist_Church,_St_Leonards-on-Sea\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Bethel_Strict_Baptist_Chapel,_Wivelsfield\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Angmering_Baptist_Church\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Providence_Strict_Baptist_Chapel,_Burgess_Hill\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Providence_Chapel,_Hadlow_Down\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Ebenezer_Particular_Baptist_Chapel,_Hastings\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Madina_Mosque,_Horsham\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Zion_Chapel,_Newick\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Rehoboth_Chapel,_Pell_Green\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Bethel_Strict_Baptist_Chapel,_Robertsbridge\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Rye_Particular_Baptist_Chapel\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Shover%27s_Green_Baptist_Chapel\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Southover_General_Baptist_Chapel\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Evangelicalism\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Countess_of_Huntingdon%27s_Connexion\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Worthing_Tabernacle\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Methodism\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Dorset_Gardens_Methodist_Church\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Central_Methodist_Church,_Eastbourne\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Hove_Methodist_Church\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Steyning_Methodist_Church\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Bristol_Road_Methodist_Church\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Vintners_Parrot#Bedford_Hall\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Plymouth_Brethren\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Jarvis_Hall,_Steyning\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Presbyterianism#England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Congregational_church#United_Kingdom\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/United_Reformed_Church\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/All_Saints_United_Reformed_Church\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Hounsom_Memorial_United_Reformed_Church,_Hove\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Herstmonceux_Free_Church\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Lewes_Free_Presbyterian_Church\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/St_Luke%27s_United_Reformed_Church,_Silverhill,_Hastings\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Trinity_Congregational_Church,_Arundel\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Union_Chapel,_Brighton\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Robertsbridge_United_Reformed_Church\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/St_Leonards-on-Sea_Congregational_Church\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Quakers\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Brighton_Friends_Meeting_House\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Ifield_Friends_Meeting_House\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Littlehampton_Friends_Meeting_House\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Reformed_Church_of_France\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/French_Protestant_Church,_Brighton\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Unitarianism\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Billingshurst_Unitarian_Chapel\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Brighton_Unitarian_Church\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Ditchling_Unitarian_Chapel\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Horsham_Unitarian_Church\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Countess_of_Huntingdon%27s_Connexion\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Society_of_Dependants\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Selina_Hastings,_Countess_of_Huntingdon\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/William_Huntington_(preacher)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/John_Sirgood\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Hall_of_Fame_for_Great_Americans\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/John_Adams\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/John_Quincy_Adams\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Jane_Addams\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Louis_Agassiz\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Susan_B._Anthony\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/John_James_Audubon\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/George_Bancroft\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Clara_Barton\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Henry_Ward_Beecher\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Alexander_Graham_Bell\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Daniel_Boone\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Edwin_Booth\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Louis_Brandeis\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Phillips_Brooks\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/William_Cullen_Bryant\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Luther_Burbank\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Andrew_Carnegie\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/George_Washington_Carver\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/William_Ellery_Channing\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Rufus_Choate\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Henry_Clay\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Grover_Cleveland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/James_Fenimore_Cooper\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Peter_Cooper\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Charlotte_Cushman\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/James_Buchanan_Eads\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Thomas_Edison\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Jonathan_Edwards_(theologian)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Ralph_Waldo_Emerson\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/David_Farragut\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Stephen_Foster\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Benjamin_Franklin\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Robert_Fulton\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Josiah_Willard_Gibbs\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/William_C._Gorgas\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Ulysses_S._Grant\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Asa_Gray\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Alexander_Hamilton\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Nathaniel_Hawthorne\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Joseph_Henry\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Patrick_Henry\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Oliver_Wendell_Holmes_Sr.\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Oliver_Wendell_Holmes_Jr.\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Mark_Hopkins_(educator)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Elias_Howe\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Washington_Irving\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Andrew_Jackson\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Stonewall_Jackson\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Thomas_Jefferson\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/John_Paul_Jones\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/James_Kent\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Sidney_Lanier\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Robert_E._Lee\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Abraham_Lincoln\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Henry_Wadsworth_Longfellow\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/James_Russell_Lowell\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0\n", + "PAGE HAS NO LINKS: /wiki/Mary_Lyon\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Edward_MacDowell\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/James_Madison\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Horace_Mann\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/John_Marshall\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Matthew_Fontaine_Maury\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Albert_A._Michelson\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Maria_Mitchell\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/James_Monroe\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Samuel_Morse\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/William_T._G._Morton\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/John_Lothrop_Motley\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Simon_Newcomb\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Thomas_Paine\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Alice_Freeman_Palmer\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Francis_Parkman\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/George_Peabody\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Edgar_Allan_Poe\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Walter_Reed\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Franklin_D._Roosevelt\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Theodore_Roosevelt\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Augustus_Saint-Gaudens\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/William_Tecumseh_Sherman\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/John_Philip_Sousa\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Joseph_Story\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Harriet_Beecher_Stowe\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Gilbert_Stuart\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Sylvanus_Thayer\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Henry_David_Thoreau\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Mark_Twain\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Lillian_Wald\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Booker_T._Washington\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/George_Washington\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Daniel_Webster\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/George_Westinghouse\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/James_Abbott_McNeill_Whistler\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Walt_Whitman\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Eli_Whitney\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/John_Greenleaf_Whittier\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Emma_Willard\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Frances_Willard_(suffragist)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Roger_Williams\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Woodrow_Wilson\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Wright_brothers\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Wright_brothers\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Virtual_International_Authority_File\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Library_of_Congress_Control_Number\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/International_Standard_Name_Identifier\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Integrated_Authority_File\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/LIBRIS\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Syst%C3%A8me_universitaire_de_documentation\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Biblioth%C3%A8que_nationale_de_France\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/BIBSYS\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Union_List_of_Artist_Names\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/National_Library_of_Australia\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/National_Diet_Library\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Biblioteca_Nacional_de_Espa%C3%B1a\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Institute_for_Advanced_Technology_in_the_Humanities\n", + "432\n", + "432\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Main_Page\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Main_Page\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Treaty_of_Paris_(1783)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Treaty_of_Paris_(disambiguation)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Paris\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Kingdom_of_France\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Ratification\n", + "469\n", + "469\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/National_Archives_and_Records_Administration\n", + "1023\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Wikisource\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Paris\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/George_III_of_the_United_Kingdom\n", + "469\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/American_Revolutionary_War\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Demarcation_line\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/British_Empire\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/North_America\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/France_in_the_American_Revolutionary_War\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Spain_in_the_American_Revolutionary_War\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Dutch_Republic\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Peace_of_Paris_(1783)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Sovereignty\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Sovereign_state\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Benjamin_West\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/John_Jay\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/John_Adams\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Benjamin_Franklin\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Henry_Laurens\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/William_Temple_Franklin\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Benjamin_Franklin\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/John_Jay\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Henry_Laurens\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/John_Adams\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/David_Hartley_(the_Younger)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Richard_Oswald_(merchant)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Paris\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Charles_Gravier,_comte_de_Vergennes\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Great_Siege_of_Gibraltar\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Northwest_Territory\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Indian_barrier_state\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/William_Petty,_2nd_Earl_of_Shelburne\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/6th_arrondissement_of_Paris\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/East_Florida\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/West_Florida\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Treaty_of_Madrid_(1795)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Menorca\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Bahama_Islands\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Grenada\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Montserrat\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Tobago\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Senegal\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Newfoundland_(island)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Congress_of_the_Confederation\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Ratification_Day_(United_States)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Preamble\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/British_Crown\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/British_North_America\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Grand_Banks\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Newfoundland_(island)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Gulf_of_Saint_Lawrence\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Congress_of_the_Confederation\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Loyalist_(American_Revolution)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Prisoner_of_war\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Mississippi_River\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Eschatocol\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Charles_Gravier,_comte_de_Vergennes\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Vermont_Republic\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Barbary_corsairs#United_States_and_the_Barbary_Wars\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Mediterranean_Sea\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/First_Barbary_War\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Second_Barbary_War\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Geography_of_North_America\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/West_Florida_Controversy\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Northwestern_point_of_the_Lake_of_the_Woods\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Lake_of_the_Woods\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Great_Lakes_region\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Lake_Champlain\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Northwest_Indian_War\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Jay_Treaty\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Fort_au_Fer_(New_York)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Champlain,_New_York\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/North_Hero,_Vermont\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Fort_Shelby_(Michigan)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Fort_Detroit\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Detroit_River\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Detroit\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Michigan\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Fort_Mackinac\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Straits_of_Mackinac\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Mackinac_Island,_Michigan\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Fort_Miami_(Ohio)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Maumee_River\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Maumee,_Ohio\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Fort_Niagara\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Niagara_River\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Youngstown,_New_York\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Fort_Ontario\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Lake_Ontario\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Oswego,_New_York\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Fort_de_La_Pr%C3%A9sentation\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Saint_Lawrence_River\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Ogdensburg,_New_York\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Ratification_Day_(United_States)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/List_of_United_States_treaties\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/America%27s_Critical_Period\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/History_of_the_United_States_(1776%E2%80%9389)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Diplomacy_in_the_American_Revolutionary_War\n", + "494\n", + "494\n", + "494\n", + "494\n", + "494\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/American_Revolutionary_War\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/American_Revolution\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/American_Enlightenment\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/John_Locke\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Colonial_history_of_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Liberalism_in_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Republicanism_in_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Freedom_of_religion_in_the_United_States\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0\n", + "PAGE HAS NO LINKS: /wiki/Rights_of_Englishmen\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Common_Sense_(pamphlet)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Spirit_of_%2776_(sentiment)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/All_men_are_created_equal\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Life,_Liberty_and_the_pursuit_of_Happiness\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Consent_of_the_governed\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Pitt%E2%80%93Newcastle_ministry\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Bute_ministry\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Grenville_ministry\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/First_Rockingham_ministry\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Chatham_ministry\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Grafton_ministry\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/North_ministry\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Second_Rockingham_ministry\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Shelburne_ministry\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Fox%E2%80%93North_coalition\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Loyalist_(American_Revolution)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Black_Loyalist\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Navigation_Acts\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Iron_Act\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Molasses_Act\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Royal_Proclamation_of_1763\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Sugar_Act\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Currency_Act\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Quartering_Acts\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Stamp_Act_1765\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Declaratory_Act\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Townshend_Acts\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Tea_Act\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Quebec_Act\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Intolerable_Acts\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Conciliatory_Resolution\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Restraining_Acts_1775\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Proclamation_of_Rebellion\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Prohibitory_Act\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Stamp_Act_Congress\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Declaration_of_Rights_and_Grievances\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Virginia_Association\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Sons_of_Liberty\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Patriot_(American_Revolution)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Committees_of_correspondence\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Committees_of_safety_(American_Revolution)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Letters_from_a_Farmer_in_Pennsylvania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Massachusetts_Circular_Letter\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/First_Continental_Congress\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Continental_Association\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Minutemen\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Second_Continental_Congress\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Olive_Branch_Petition\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/United_States_Declaration_of_Independence\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Articles_of_Confederation\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/French_and_Indian_War\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Treaty_of_Paris_(1763)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Boston_Massacre\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Gaspee_Affair\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Hutchinson_Letters_Affair\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Boston_Tea_Party\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Powder_Alarm\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Thirteen_Colonies\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Continental_Congress\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Continental_Army\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Continental_Navy\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Continental_Marines\n", + "469\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Parliament_of_Great_Britain\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/British_Army#Early_British_Empire\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Royal_Navy#1707–1815\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Germans_in_the_American_Revolution#Allies_of_Great_Britain\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/France_in_the_American_Revolutionary_War\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/French_Army\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/French_Navy\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Roderigue_Hortalez_and_Company\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Boston_campaign\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Invasion_of_Quebec_(1775)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/New_York_and_New_Jersey_campaign\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Saratoga_campaign\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Philadelphia_campaign\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Northern_theater_of_the_American_Revolutionary_War_after_Saratoga\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Southern_theater_of_the_American_Revolutionary_War\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Western_theater_of_the_American_Revolutionary_War\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Yorktown_campaign\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Naval_battles_of_the_American_Revolutionary_War\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/List_of_American_Revolutionary_War_battles\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Battles_of_Lexington_and_Concord\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Siege_of_Boston\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Capture_of_Fort_Ticonderoga\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Battle_of_Bunker_Hill\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Battle_of_Quebec_(1775)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Battle_of_Valcour_Island\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Battle_of_Long_Island\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Battle_of_Harlem_Heights\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Battle_of_Fort_Washington\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Battle_of_Trenton\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Battle_of_the_Assunpink_Creek\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Battle_of_Princeton\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Siege_of_Fort_Ticonderoga_(1777)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Battle_of_Bennington\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Battles_of_Saratoga\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Battle_of_Brandywine\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Battle_of_Germantown\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Battle_of_Monmouth\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Battle_of_St._Lucia\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Battle_of_Grenada\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Battle_of_Stony_Point\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Sullivan_Expedition\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Siege_of_Savannah\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Great_Siege_of_Gibraltar\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Battle_of_Cape_St._Vincent_(1780)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Siege_of_Charleston\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Battle_of_Springfield_(1780)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Battle_of_Camden\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Battle_of_Kings_Mountain\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Battle_of_Cowpens\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Battle_of_Guilford_Court_House\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Lochry%27s_Defeat\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Siege_of_Yorktown\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Battle_of_the_Saintes\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Siege_of_Cuddalore\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Staten_Island_Peace_Conference\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Sint_Eustatius#\"First_Salute\"\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/George_Washington%27s_crossing_of_the_Delaware_River\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Conway_Cabal\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Valley_Forge\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Franco-American_alliance\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Carlisle_Peace_Commission\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Gordon_Riots\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Pennsylvania_Line_mutiny\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Capture_of_Sint_Eustatius\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Newburgh_Conspiracy\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Pennsylvania_Mutiny_of_1783\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Cherokee%E2%80%93American_wars\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Fourth_Anglo-Dutch_War\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Second_Anglo-Mysore_War\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Thirteen_Colonies\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/History_of_Connecticut#The_American_Revolution_(1775–1789)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Delaware_Line\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Georgia_in_the_American_Revolution\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Maryland_in_the_American_Revolution\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/New_Jersey_in_the_American_Revolution\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/New_York_in_the_American_Revolution\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/North_Carolina_in_the_American_Revolution#American_Revolution\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Pennsylvania_in_the_American_Revolution\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Rhode_Island_in_the_American_Revolution#Revolutionary_era_1775-1790\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/South_Carolina_in_the_American_Revolution\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Virginia_in_the_American_Revolution#American_Revolution\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/East_Florida\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Nova_Scotia#17th_and_18th_centuries\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Province_of_Quebec_(1763%E2%80%931791)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/West_Florida\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Mariot_Arbuthnot\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Joseph_Brant\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/John_Burgoyne\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/John_Campbell,_of_Strachur\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Guy_Carleton,_1st_Baron_Dorchester\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Henry_Clinton_(British_Army_officer,_born_1730)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Charles_Cornwallis,_1st_Marquess_Cornwallis\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Simon_Fraser_of_Lovat\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0\n", + "PAGE HAS NO LINKS: /wiki/Thomas_Gage\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Thomas_Graves,_1st_Baron_Graves\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Richard_Howe,_1st_Earl_Howe\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/William_Howe,_5th_Viscount_Howe\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Wilhelm_von_Knyphausen\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/George_Brydges_Rodney,_1st_Baron_Rodney\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/George_III_of_the_United_Kingdom\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Jeffery_Amherst,_1st_Baron_Amherst\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/William_Barrington,_2nd_Viscount_Barrington\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/George_Germain,_1st_Viscount_Sackville\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Frederick_North,_Lord_North\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Charles_Watson-Wentworth,_2nd_Marquess_of_Rockingham\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/John_Montagu,_4th_Earl_of_Sandwich\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/William_Petty,_2nd_Earl_of_Shelburne\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/George_Washington\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/William_Alexander,_Lord_Stirling\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Ethan_Allen\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Benedict_Arnold\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/John_Barry_(naval_officer)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/George_Claghorn\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/George_Rogers_Clark\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Louis_Leb%C3%A8gue_Duportail\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Horatio_Gates\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Nathanael_Greene\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Alexander_Hamilton\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Esek_Hopkins\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/John_Paul_Jones\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Johann_de_Kalb\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Henry_Knox\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Gilbert_du_Motier,_Marquis_de_Lafayette\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Charles_Lee_(general)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Benjamin_Lincoln\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Hugh_Mercer\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Richard_Montgomery\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Samuel_Nicholson\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Israel_Putnam\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Caesar_Rodney\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Arthur_St._Clair\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Philip_Schuyler\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Friedrich_Wilhelm_von_Steuben\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/John_Sullivan_(general)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Artemas_Ward\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Anthony_Wayne\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/John_Adams\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Samuel_Adams\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Charles_Carroll_of_Carrollton\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/John_Dickinson\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Benjamin_Franklin\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/John_Hancock\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/John_Hanson\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Patrick_Henry\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Samuel_Huntington_(Connecticut_politician)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/John_Jay\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Thomas_Jefferson\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Henry_Laurens\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Richard_Henry_Lee\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Thomas_McKean\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Robert_Morris_(financier)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Paul_Revere\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Benjamin_Rush\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/John_Witherspoon\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Louis_XVI_of_France\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Pierre_Beaumarchais\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Charles_Henri_Hector_d%27Estaing\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Fran%C3%A7ois_Joseph_Paul_de_Grasse\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Luc_Urbain_de_Bou%C3%ABxic,_comte_de_Guichen\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Anne-C%C3%A9sar,_Chevalier_de_la_Luzerne\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Jean-Baptiste_Donatien_de_Vimeur,_comte_de_Rochambeau\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Pierre_Andr%C3%A9_de_Suffren\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Charles_Gravier,_comte_de_Vergennes\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Constitutional_Convention_(United_States)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/United_States_Constitution\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/United_States_Bill_of_Rights\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/The_Federalist_Papers\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Shays%27_Rebellion\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Jay_Treaty\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Prisoners_of_war_in_the_American_Revolutionary_War\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Society_of_the_Cincinnati\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Turtle_(submersible)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Founding_Fathers_of_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Diplomacy_in_the_American_Revolutionary_War\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Liberty_Tree\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Yankee_Doodle\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/African_Americans_in_the_Revolutionary_War\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Timeline_of_the_American_Revolution\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Women_in_the_American_Revolution\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/United_States_territorial_acquisitions\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Thirteen_Colonies\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Louisiana_Purchase\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Treaty_of_1818\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Adams%E2%80%93On%C3%ADs_Treaty\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Texas_annexation\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Oregon_Treaty\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Mexican_Cession\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Gadsden_Purchase\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Guano_Islands_Act\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Alaska_Purchase\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Newlands_Resolution\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Treaty_of_Paris_(1898)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Tripartite_Convention\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Treaty_of_Cession_of_Tutuila\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Treaty_of_Cession_of_Manu%27a\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Treaty_of_the_Danish_West_Indies\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Manifest_destiny\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Benjamin_Franklin\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/List_of_Governors_of_Pennsylvania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/United_States_Ambassador_to_France\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Second_Continental_Congress\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Join,_or_Die\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Albany_Plan\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Albany_Congress\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Hutchinson_Letters_Affair\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Committee_of_Secret_Correspondence\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Committee_of_Five\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/United_States_Declaration_of_Independence\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Model_Treaty\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Franco-American_alliance\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Treaty_of_Amity_and_Commerce_(United_States%E2%80%93France)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Treaty_of_Alliance_(1778)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Staten_Island_Peace_Conference\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Constitutional_Convention_(United_States)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Province_of_Pennsylvania#Government\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/United_States_Postmaster_General\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Founding_Fathers_of_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Franklin%27s_electrostatic_machine\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Bifocals\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Franklin_stove\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Glass_harmonica#Franklin's_armonica\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Gulf_Stream#History\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Lightning_rod\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Kite_experiment\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Pay_it_forward\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Associators\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/111th_Infantry_Regiment_(United_States)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Junto_(club)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/American_Philosophical_Society\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Library_Company_of_Philadelphia\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Pennsylvania_Hospital\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/The_Academy_and_College_of_Philadelphia\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/University_of_Pennsylvania\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Philadelphia_Contributionship\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Union_Fire_Company\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Early_American_currency\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Fugio_Cent\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Postage_stamps_and_postal_history_of_the_United_States#Early_postal_history\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Pennsylvania_Abolition_Society\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Les_Neuf_S%C5%93urs\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Social_contributions_and_studies_by_Benjamin_Franklin\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Christ_Church_Burial_Ground\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Silence_Dogood\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/A_Dissertation_on_Liberty_and_Necessity,_Pleasure_and_Pain\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/The_Busy-Body\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Pennsylvania_Gazette\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Poor_Richard%27s_Almanack\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/The_Drinker%27s_Dictionary\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Advice_to_a_Friend_on_Choosing_a_Mistress\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/The_Speech_of_Polly_Baker\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0\n", + "PAGE HAS NO LINKS: /wiki/Observations_Concerning_the_Increase_of_Mankind,_Peopling_of_Countries,_etc.\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Experiments_and_Observations_on_Electricity\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Thomas_Birch#Copies_of_Franklin_letters\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/The_Way_to_Wealth\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Pennsylvania_Chronicle\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Indian_removal#Benjamin_Franklin\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Fart_Proudly\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Noble_savage#Benjamin_Franklin's_Remarks_Concerning_the_Savages_of_North_America\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/The_Morals_of_Chess\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/The_Autobiography_of_Benjamin_Franklin\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Bagatelles_and_Satires\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/History_of_American_newspapers#Ben_Franklin,_journalist\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Franklin_Court\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Benjamin_Franklin_House\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Benjamin_Franklin_Institute_of_Technology\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Benjamin_Franklin_National_Memorial\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Franklin_Institute\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Benjamin_Franklin_Medal_(American_Philosophical_Society)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/The_Apotheosis_of_Washington\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Benjamin_Franklin_(Jouvenal)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Benjamin_Franklin_in_popular_culture\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Ben_and_Me\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Ben_Franklin_in_Paris\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/1776_(musical)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/1776_(film)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Benjamin_Franklin_(miniseries)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Liberty!\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Liberty%27s_Kids\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Benjamin_Franklin_(2002_film)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/John_Adams_(miniseries)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Sons_of_Liberty_(miniseries)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Sons_of_Ben_(MLS_supporters_association)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Refunding_Certificate\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Franklin_half_dollar\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/United_States_one_hundred-dollar_bill\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Washington-Franklin_Issues\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/List_of_places_named_for_Benjamin_Franklin\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Franklin_Field\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/State_of_Franklin\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Ships_named_USS_Franklin\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Ben_Franklin_effect\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Age_of_Enlightenment\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/American_Enlightenment\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/The_New-England_Courant\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/The_American_Museum_(magazine)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/American_Revolution\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Patriot_(American_Revolution)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Syng_inkstand\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Deborah_Read\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Sarah_Franklin_Bache\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Francis_Folger_Franklin\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/William_Franklin\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Richard_Bache_Jr.\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Benjamin_Franklin_Bache_(journalist)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Louis_Franklin_Bache\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/William_Temple_Franklin\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Andrew_A._Harwood\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Alexander_Dallas_Bache\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Josiah_Franklin\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Jane_Mecom\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/James_Franklin_(printer)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Mary_Morrell_Folger\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Peter_Folger_(Nantucket_settler)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Richard_Bache\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Ann_Smith_Franklin\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/John_Adams\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/List_of_Presidents_of_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/President_of_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/List_of_Vice_Presidents_of_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Vice_President_of_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/United_States_Ambassador_to_the_United_Kingdom\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/United_States_Ambassador_to_the_Netherlands\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Second_Continental_Congress\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/First_Continental_Congress\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Founding_Fathers_of_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Braintree_Instructions\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Boston_Massacre#Trials\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Continental_Association\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/John_Adams#Dispute_concerning_Parliament's_authority\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Thoughts_on_Government\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/John_Adams#Declaration_of_Independence\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/United_States_Declaration_of_Independence#May_15_preamble\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Committee_of_Five\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Model_Treaty\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Treaty_of_Amity_and_Commerce_(United_States%E2%80%93France)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Treaty_of_Alliance_(1778)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Board_of_War\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/United_States_Secretary_of_the_Navy#Secretaries_of_the_Navy\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Continental_Navy\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Staten_Island_Peace_Conference\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Conference_House\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Constitution_of_Massachusetts\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Presidency_of_John_Adams\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Inauguration_of_John_Adams\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Quasi-War\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/XYZ_Affair\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/An_Act_further_to_protect_the_commerce_of_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/History_of_the_United_States_Marine_Corps#Establishment_of_the_modern_Marine_Corps\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Convention_of_1800\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Alien_and_Sedition_Acts\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Naturalization_Act_of_1798\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Navy_Department_Library\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Treaty_of_Tellico\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Treaty_of_Tripoli\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Midnight_Judges_Act\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Marbury_v._Madison\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/1797_State_of_the_Union_Address\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/1798_State_of_the_Union_Address\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/1799_State_of_the_Union_Address\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/1800_State_of_the_Union_Address\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/John_Adams#Administration_and_cabinet\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/List_of_federal_judges_appointed_by_John_Adams\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Massachusetts_Historical_Society#Collections\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Adams_Papers_Editorial_Project\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/John_Adams#Early_life_and_education\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Adams_National_Historical_Park\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/John_Adams_Birthplace\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/John_Quincy_Adams_Birthplace\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Peacefield\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Adams_National_Historical_Park#Stone_Library\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Massachusetts_Hall_(Harvard_University)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/President%27s_House_(Philadelphia)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/American_Academy_of_Arts_and_Sciences\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/United_First_Parish_Church_(Quincy,_Massachusetts)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/United_States_presidential_election,_1788%E2%80%9389\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/United_States_presidential_election,_1792\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/United_States_presidential_election,_1796\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/United_States_presidential_election,_1800\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Adams_House_(Harvard_University)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/John_Adams_Building\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Presidents_of_the_United_States_on_U.S._postage_stamps#John_Adams\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Adams_Memorial\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Profiles_in_Courage_(TV_series)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/American_Primitive\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/1776_(musical)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/1776_(film)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/The_Adams_Chronicles\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Liberty!\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Liberty%27s_Kids\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/John_Adams_(book)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/John_Adams_(miniseries)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Sons_of_Liberty_(miniseries)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Adams_and_Liberty\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Boston_Public_Library#Overview\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/American_Enlightenment\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Congress_Hall\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Federalist_Party\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0\n", + "PAGE HAS NO LINKS: /wiki/Federalist_Era\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/First_Party_System\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Republicanism_in_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/American_Philosophical_Society\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Gazette_of_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/The_American_Museum_(magazine)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/American_Revolution\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Patriot_(American_Revolution)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Adams_political_family\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Abigail_Adams\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Quincy_political_family\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Abigail_Adams_Smith\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/John_Quincy_Adams\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Presidency_of_John_Quincy_Adams\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Charles_Adams_(1770%E2%80%931800)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Thomas_Boylston_Adams_(1772%E2%80%931832)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/George_Washington_Adams\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Charles_Francis_Adams_Sr.\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/John_Adams_II\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/John_Quincy_Adams_II\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Henry_Adams\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Brooks_Adams\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/John_Adams_Sr.\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Susanna_Boylston\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Elihu_Adams\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Samuel_Adams\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Louisa_Adams\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/First_Ladies_of_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/George_Washington\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Thomas_Jefferson\n", + "540\n", + "540\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Main_Page\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Main_Page\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Pound_sterling\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/GBP_(disambiguation)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Manx_pound\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Jersey_pound\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Guernsey_pound\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Coins_of_the_pound_sterling#2008_redesign\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/ISO_4217\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Penny_(British_decimal_coin)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Plural\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Penny_(British_decimal_coin)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Currency_symbol\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Pound_sign\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Penny_(British_decimal_coin)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Banknotes_of_the_pound_sterling\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/%C2%A35\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/%C2%A310\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/%C2%A320\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/%C2%A31\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/%C2%A350\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Coins_of_the_pound_sterling\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Penny_(British_decimal_coin)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Two_pence_(British_decimal_coin)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Five_pence_(British_coin)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Ten_pence_(British_coin)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Twenty_pence_(British_coin)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Fifty_pence_(British_coin)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/One_pound_(British_coin)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Two_pounds_(British_coin)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Royal_Maundy#Maundy_coinage\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Royal_Maundy#Maundy_coinage\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Sixpence_(British_coin)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/British_twenty-five_pence_coin\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Five_pounds_(British_coin)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Sovereign_(British_coin)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Twenty_pounds_(British_coin)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/One_hundred_pounds_(British_coin)\n", + "1830\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/British_Antarctic_Territory\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Falkland_Islands\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Falkland_Islands_pound\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Gibraltar\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Gibraltar_pound\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Saint_Helena,_Ascension_and_Tristan_da_Cunha\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Tristan_da_Cunha\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Saint_Helena_pound\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Saint_Helena\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Ascension_Island\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/South_Georgia_and_the_South_Sandwich_Islands\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Falkland_Islands_pound\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/British_Indian_Ocean_Territory\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/U.S._dollar\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Guernsey\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Guernsey_pound\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Isle_of_Man\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Manx_pound\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Jersey\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Jersey_pound\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Zimbabwe\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Pitcairn_Islands\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Central_bank\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Bank_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Printer_(publisher)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Bank_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Bank_of_Scotland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Royal_Bank_of_Scotland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Clydesdale_Bank\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Danske_Bank\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/First_Trust_Bank\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Ulster_Bank\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Bank_of_Ireland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/States_of_Guernsey\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/States_of_Jersey\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Isle_of_Man\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Mint_(coin)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Royal_Mint\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Monetary_inflation\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Consumer_Price_Index_(United_Kingdom)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Fixed_exchange_rate\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Falkland_Islands_pound\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Gibraltar_pound\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Saint_Helena_pound\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Jersey_pound\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Guernsey_pound\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Manx_pound\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/European_Exchange_Rate_Mechanism\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Black_Wednesday\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Pound_sign\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/ISO_4217\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Currency\n", + "1830\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Jersey\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Guernsey\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Isle_of_Man\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/South_Georgia_and_the_South_Sandwich_Islands\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/British_Antarctic_Territory\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Tristan_da_Cunha\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Pound_(currency)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Commodity_money\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Fiat_money\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Crown_dependencies\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Guernsey_pound\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Jersey_pound\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Manx_pound\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Gibraltar\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Gibraltar_pound\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Falkland_Islands\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Falkland_Islands_pound\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Saint_Helena\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Ascension_Island\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Saint_Helena_pound\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Bank_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Central_bank\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Foreign_exchange_market\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/United_States_dollar\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Euro\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Japanese_yen\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Basket_of_currencies\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Special_drawing_rights#Value_definition\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/International_Monetary_Fund\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Special_drawing_rights\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Reserve_currency\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Foreign_exchange_reserves\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/English_plural#Plurals_of_compound_nouns\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Pound_(currency)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/US_Dollar\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Foreign_exchange_market\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Irish_Pound\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Euro\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Diminutive\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Silver_penny\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Philip_Grierson\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Hanseatic_League\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Sterling_silver\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Currency_sign\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Pound_sign\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Ancient_Roman_units_of_measurement\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/%C2%A3sd\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Duodecimal\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Blackletter\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/ISO_4217\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/ISO_3166-1_alpha-2\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/ISO_3166\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Terminology_of_the_British_Isles#Terminology_in_detail\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Crown_dependency\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Guernsey_pound\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Jersey_pound\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Isle_of_Man_pound\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0\n", + "PAGE HAS NO LINKS: /wiki/Pence_sterling\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Italian_scudo\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Quid_pro_quo\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Decimalisation\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Decimal_Day\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Halfpenny_(British_decimal_coin)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/%C2%A3sd\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/The_Hatter\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/British_shilling_coin\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Old_penny_sterling\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Solidus_(coin)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Denarius\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Crown_(British_coin)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Farthing_(British_coin)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Sovereign_(British_coin)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Guinea_(British_coin)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Coins_of_the_pound_sterling\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/List_of_British_bank_notes_and_coins\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/George_III_of_the_United_Kingdom\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/George_IV_of_the_United_Kingdom\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/William_IV_of_the_United_Kingdom\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Queen_Victoria\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Cupro-nickel\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Two_shilling_coin\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Anglo-Saxon_pound\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Shilling\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Silver_penny\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Anglo-Saxons\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/History_of_the_English_penny_(c._600-1066)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Pound_(mass)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Currency\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Farthing_(British_coin)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Penny\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Shilling\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Charlemagne\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Francia\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/French_livre\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Offa_of_Mercia\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/History_of_the_English_penny_(c._600-1066)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Charlemagne\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Frankish_Empire\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Pound_(mass)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Grain_(mass)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Tower_pound\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/History_of_the_English_penny_(1154%E2%80%931485)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Henry_II_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/History_of_the_English_penny_(1154%E2%80%931485)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Sterling_silver\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Fine_silver\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Noble_(English_coin)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Henry_III_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Henry_IV_of_England\n", + "559\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Edward_VI\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Troy_pound\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Sterling_silver\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Gold_coinage\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Carat_(purity)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Guinea_(coin)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Troy_pound\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Isaac_Newton\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Royal_Mint\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Gresham%27s_Law\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Gold_standard\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/East_India_Company\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/History_of_opium_in_China\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Opium\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Britannia_silver\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Assay_Office\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Bank_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Bank_of_Scotland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Paper_money\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Pound_Scots\n", + "548\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Kingdom_of_Scotland\n", + "469\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Treaty_of_Union\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Kingdom_of_Ireland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/United_Kingdom_of_Great_Britain_and_Ireland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Irish_pound\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Sterling_area\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/British_Empire\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Canadian_dollar\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Barbados\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/British_West_Africa\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Cyprus\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Fiji\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Irish_Free_State\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Jamaica\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Southern_Rhodesia\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/South_African_pound\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Australian_pound\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Sterling_area\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Napoleonic_wars\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Bank_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Legal_tender\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Gold_standard\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Sovereign_(British_coin)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Irish_pound\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Nellie_Bly\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Around_the_World_in_Seventy-Two_Days\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Canadian_dollar\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Dutch_guilder\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/French_franc\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Latin_Monetary_Union\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/German_gold_mark\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Austro-Hungarian_krone\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/International_Monetary_Conferences\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Latin_Monetary_Union\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Royal_Commission\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/World_War_I\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Great_Depression\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/United_States_dollar\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/World_War_II\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Bretton_Woods_system\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Operation_Bernhard\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Second_World_War\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Harold_Wilson\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Decimal_Day\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Guinea_(British_coin)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/House_of_Commons_of_the_United_Kingdom\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/John_Bowring\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Stirling_Burghs_(UK_Parliament_constituency)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/William_Gladstone\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/South_Lancashire_(UK_Parliament_constituency)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Royal_Commission\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Samuel_Jones-Loyd,_1st_Baron_Overstone\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/John_Hubbard,_1st_Baron_Addington\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Cypriot_pound\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Queen%27s_Speech\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Bretton_Woods_system\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Floating_currency\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Sterling_area\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/James_Callaghan\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/National_Archives\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/1973_oil_crisis\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/The_Wall_Street_Journal\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/European_Economic_Community\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/International_Monetary_Fund\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Public_expenditure\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Monetarist\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Money_supply\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Recession\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Margaret_Thatcher\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Chancellor_of_the_Exchequer\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Nigel_Lawson\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Deutsche_Mark\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Edward_Heath\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/German_re-unification\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Third_Thatcher_ministry\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/European_Exchange_Rate_Mechanism\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Deutsche_Mark\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Black_Wednesday\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Labour_Party_(UK)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Bank_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Liberal_Democrats_(UK)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Consumer_Price_Index_(United_Kingdom)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Chancellor_of_the_Exchequer\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Retail_Prices_Index_(United_Kingdom)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/United_Kingdom_and_the_euro\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/European_Union\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Euro\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Gordon_Brown\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Chancellor_of_the_Exchequer\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Republic_of_Cyprus\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Cypriot_pound\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Akrotiri_and_Dhekelia\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/United_Kingdom_European_Union_membership_referendum,_2016\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/United_Kingdom%27s_withdrawal_from_the_European_Union\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Tony_Blair\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Five_economic_tests\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Convergence_criteria\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Government_budget_deficit\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Gross_domestic_product\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Denmark\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Scottish_Conservative_Party\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Scottish_independence_referendum,_2014\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Scottish_National_Party\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Economy_of_the_United_Kingdom#Exchange_rates\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0\n", + "PAGE HAS NO LINKS: /wiki/ISO_4217\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/United_States_dollar\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Euro\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Japanese_yen\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Australian_dollar\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Canadian_dollar\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Swiss_franc\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Renminbi\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Swedish_krona\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/New_Zealand_dollar\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Mexican_peso\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Singapore_dollar\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Hong_Kong_dollar\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Norwegian_krone\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/South_Korean_won\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Turkish_lira\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Russian_ruble\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Indian_rupee\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Brazilian_real\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/South_African_rand\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Global_financial_crisis_of_2008%E2%80%932009\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Bank_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Capital_(economics)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Economy_of_the_United_Kingdom\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Quantitative_easing\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Governor_of_the_Bank_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Mervyn_King,_Baron_King_of_Lothbury\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Asset\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Government_bond\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Commercial_paper\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Corporate_bond\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Chancellor_of_the_Exchequer\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Alistair_Darling\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/United_Kingdom_European_Union_membership_referendum,_2016\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Inflation\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Interest_rates\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Coins_of_the_pound_sterling\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Farthing_(British_coin)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Halfpenny_(British_coin)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Gold_penny\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Groat_(coin)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Florin_(English_coin)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Noble_(English_coin)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Angel_(coin)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Henry_VII_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Shilling\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Sovereign_(British_coin)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Crown_(British_coin)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Half_crown_(British_coin)\n", + "559\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Debasement\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Edward_VI\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Threepence_(British_coin)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Sixpence_(British_coin)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Elizabeth_I\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/James_VI\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Spur_ryal\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Unite_(English_coin)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Laurel_(English_coin)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Tin\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Copper\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Farthing_(British_coin)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Halfpenny_(British_coin)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Charles_I_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/English_Civil_War\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Guinea_(British_coin)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Spanish_dollar\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Spanish_real\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Spanish_colonial_real\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Sovereign_(British_coin)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Florin_(British_coin)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Double_florin\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/World_War_I\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Sovereign_(British_coin)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Half-sovereign\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Gold_standard\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Cupro-nickel\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Royal_Maundy#Maundy_coinage\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/One_pound_(British_decimal_coin)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Elizabeth_II\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Tudor_rose\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Leek#Cultural_significance\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Thistle#Scottish_thistle\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Shamrock\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Coins_of_the_pound_sterling\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Cupro-nickel\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Heptagon\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Bronze\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Copper_plating\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Steel\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Bi-metallic_coins\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Two_pounds_(British_decimal_coin)#The_modern_circulating_coin_(1997–present)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Entrepreneur\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Market_value\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Royal_coat_of_arms_of_the_United_Kingdom\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Nickel_electroplating\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Banknotes_of_the_pound_sterling\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Bank_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Napoleonic_wars\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Bank_of_Scotland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Pound_Scots\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Royal_Bank_of_Scotland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Bank_of_Ireland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/HM_Treasury\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Northern_Ireland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/World_War_II\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Nazi\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Operation_Bernhard\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/UV_lamp\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Offset_litho\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Intaglio_(printmaking)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Letterpress\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Banking_system\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Polymer_banknote\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Northern_Bank\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Danske_Bank_(Northern_Ireland)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Central_bank\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Bank_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Monetary_policy\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/HM_Treasury\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Royal_Mint\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Crown_Dependencies\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Manx_pound\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Jersey_pound\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Guernsey_pound\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Fixed_exchange_rate\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Currency_union\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/ISO_4217\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/British_Overseas_Territories\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Falkland_Islands_pound\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Gibraltar_pound\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Saint_Helena_pound\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/British_Islands\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Legal_tender\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Bank_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/England_and_Wales\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Northern_Ireland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/World_War_II\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Channel_Islands\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Isle_of_Man\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Five_pounds_(British_decimal_coin)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/British_twenty-five_pence_coin\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/House_of_Commons_Library\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Napoleonic_Wars\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Inflation\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/World_War_II\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Foreign_exchange_market\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/United_States_dollar\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Euro\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Japanese_yen\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Swiss_franc\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Australian_dollar\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Canadian_dollar\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Indian_rupee\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Reserve_currency\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Reserve_currency\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/United_States_dollar\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Euro\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Deutsche_Mark\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/French_franc\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Japanese_yen\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/List_of_currencies\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Angevin_pound\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Green_pound\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Zimbabwean_dollar\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Euro\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/United_States_dollar\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/South_African_rand\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Botswana_pula\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Indian_rupees\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Australian_dollars\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Chinese_yuan\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Japanese_yen\n", + "494\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Tynwald\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Frankfurter_Allgemeine_Zeitung\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Frankfurt\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Philip_Grierson\n", + "494\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Nellie_Bly\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Retail_Price_Index\n", + "494\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/The_National_Archives_(United_Kingdom)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Iain_Martin\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/The_Wall_Street_Journal\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Alexander_Cairncross_(economist)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Yale_University_Press\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "494\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/The_Observer\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Hansard\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/House_of_Commons_of_the_United_Kingdom\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Ann_Treneman\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/The_Times\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Michael_Theodoulou\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/The_Daily_Telegraph\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Currency_pair\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/The_Guardian\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/The_Royal_Mint\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/House_of_Commons_Library\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Office_for_National_Statistics\n", + "494\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/International_Standard_Serial_Number\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Portable_Document_Format\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/European_Central_Bank\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/International_Standard_Serial_Number\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/International_Standard_Serial_Number\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Portable_Document_Format\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/International_Monetary_Fund\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Portable_Document_Format\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/European_Central_Bank\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/International_Standard_Serial_Number\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/International_Standard_Serial_Number\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Fernand_Braudel\n", + "494\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/University_of_Chicago_Press\n", + "494\n", + "494\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Princeton_University_Press\n", + "494\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Oxford_University_Press\n", + "494\n", + "494\n", + "494\n", + "494\n", + "494\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Standard_Catalog_of_World_Coins\n", + "494\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Standard_Catalog_of_World_Paper_Money\n", + "494\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Standard_Catalog_of_World_Paper_Money\n", + "494\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Euro\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Economic_and_Monetary_Union_of_the_European_Union\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Euro_sign\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Eurozone\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Linguistic_issues_concerning_the_euro\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/European_Central_Bank\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/President_of_the_European_Central_Bank\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/European_System_of_Central_Banks\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Eurosystem\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Economic_and_Financial_Affairs_Council\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Eurogroup\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Euro_summit\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Stability_and_Growth_Pact\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/European_Financial_Stability_Facility\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/European_Financial_Stabilisation_Mechanism\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/European_Stability_Mechanism\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Euro_Plus_Pact\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Sixpack_(European_Union_law)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/European_Fiscal_Compact\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/History_of_the_euro\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Snake_in_the_tunnel\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/European_Monetary_System\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/European_Currency_Unit\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/European_Exchange_Rate_Mechanism\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Economic_and_Monetary_Union_of_the_European_Union\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/European_Monetary_Cooperation_Fund\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/European_Monetary_Institute\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Enlargement_of_the_eurozone\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Black_Wednesday\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Economy_of_Europe\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Economy_of_the_European_Union\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Eonia\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Euro_calculator\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Euribor\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Single_Euro_Payments_Area\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/International_status_and_usage_of_the_euro\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Eurobonds\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Reserve_currency\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Petroeuro\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/World_currency\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Euro_coins\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/1_cent_euro_coin\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/2_cent_euro_coin\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/5_cent_euro_coin\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/10_cent_euro_coin\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/20_cent_euro_coin\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/50_cent_euro_coin\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/1_euro_coin\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/2_euro_coin\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/%E2%82%AC2_commemorative_coins\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Euro_gold_and_silver_commemorative_coins\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Identifying_marks_on_euro_coins\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Euro_starter_kits\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Europa_coin_programme\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/List_of_euro_mints\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Euro_banknotes\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/5_euro_note\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/10_euro_note\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/20_euro_note\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/50_euro_note\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/100_euro_note\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/200_euro_note\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/500_euro_note\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Austrian_euro_coins\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Belgian_euro_coins\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Cypriot_euro_coins\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Estonian_euro_coins\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Finnish_euro_coins\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/French_euro_coins\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/German_euro_coins\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Greek_euro_coins\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Irish_euro_coins\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Italian_euro_coins\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Latvian_euro_coins\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Lithuania_and_the_euro\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Luxembourgish_euro_coins\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Maltese_euro_coins\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Dutch_euro_coins\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Portuguese_euro_coins\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Slovak_euro_coins\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Slovenian_euro_coins\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Spanish_euro_coins\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Andorra_and_the_euro\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Mon%C3%A9gasque_euro_coins\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Sammarinese_euro_coins\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Vatican_euro_coins\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Bulgaria_and_the_euro\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Croatia_and_the_euro\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Czech_Republic_and_the_euro\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Denmark_and_the_euro\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Hungary_and_the_euro\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Poland_and_the_euro\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Romania_and_the_euro\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Sweden_and_the_euro\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/United_Kingdom_and_the_euro\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Kosovo_and_the_euro\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Montenegro_and_the_euro\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/European_Currency_Unit\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Austrian_schilling\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Belgian_franc\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Cypriot_pound\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Dutch_guilder\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Estonian_kroon\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Finnish_markka\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/French_franc\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Deutsche_Mark\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Greek_drachma\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Irish_pound\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Italian_lira\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Latvian_lats\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Lithuanian_litas\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Luxembourgish_franc\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Maltese_lira\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Mon%C3%A9gasque_franc\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Portuguese_escudo\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Sammarinese_lira\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Slovak_koruna\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Slovenian_tolar\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Spanish_peseta\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Vatican_lira\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Currencies_of_the_European_Union\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Danish_krone\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Gibraltar_pound\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Bulgarian_lev\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Croatian_kuna\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Czech_koruna\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Hungarian_forint\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Polish_z%C5%82oty\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Romanian_leu\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Swedish_krona\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Currency\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Algerian_dinar\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Egyptian_pound\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Euro\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Plazas_de_soberan%C3%ADa\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Libyan_dinar\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Mauritanian_ouguiya\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Moroccan_dirham\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Sahrawi_peseta\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Sudanese_pound\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Tunisian_dinar\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Angolan_kwanza\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0\n", + "PAGE HAS NO LINKS: /wiki/Burundian_franc\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Central_African_CFA_franc\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Cameroon\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Central_African_Republic\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Chad\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Republic_of_the_Congo\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Equatorial_Guinea\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Gabon\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Congolese_franc\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Rwandan_franc\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Comorian_franc\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Djiboutian_franc\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Eritrean_nakfa\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Ethiopian_birr\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Kenyan_shilling\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Seychellois_rupee\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Somali_shilling\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Somaliland_shilling\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/South_Sudanese_pound\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Tanzanian_shilling\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Ugandan_shilling\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Botswana_pula\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Saint_Helena,_Ascension_and_Tristan_da_Cunha\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Zimbabwe\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Euro\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/French_Southern_and_Antarctic_Lands\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Mayotte\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/R%C3%A9union\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Zimbabwe\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Lesotho_loti\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Malagasy_ariary\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Malawian_kwacha\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Mauritian_rupee\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Mozambican_metical\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Namibian_dollar\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Saint_Helena_pound\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/South_African_rand\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Lesotho\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Namibia\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Swaziland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Zimbabwe\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Swazi_lilangeni\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/United_States_dollar\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Zimbabwe\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Zambian_kwacha\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Zimbabwean_dollar\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Hyperinflation\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Zimbabwean_bond_coins\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Cent_(currency)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Zimbabwean_bond_notes\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Dollar\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Cape_Verdean_escudo\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Euro\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Canary_Islands\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Madeira\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Gambian_dalasi\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Ghanaian_cedi\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Guinean_franc\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Liberian_dollar\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Nigerian_naira\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/S%C3%A3o_Tom%C3%A9_and_Pr%C3%ADncipe_dobra\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Sierra_Leonean_leone\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/West_African_CFA_franc\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Benin\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Burkina_Faso\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Guinea-Bissau\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Ivory_Coast\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Mali\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Niger\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Senegal\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Togo\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Currency\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Canadian_dollar\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Canada\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Saint_Pierre_and_Miquelon\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Danish_krone\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Greenland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Euro\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Saint_Pierre_and_Miquelon\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Mexican_peso\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/United_States_dollar\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Aruban_florin\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Bahamian_dollar\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Barbadian_dollar\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Bermudian_dollar\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Cayman_Islands_dollar\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Cuban_peso\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Cuban_convertible_peso\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Dominican_peso\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/East_Caribbean_dollar\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Anguilla\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Antigua_and_Barbuda\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Dominica\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Grenada\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Montserrat\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Saint_Kitts_and_Nevis\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Saint_Lucia\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Saint_Vincent_and_the_Grenadines\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Euro\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Saint_Martin\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Saint_Barth%C3%A9lemy\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Guadeloupe\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Martinique\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Haitian_gourde\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Jamaican_dollar\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Netherlands_Antillean_guilder\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Cura%C3%A7ao\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Sint_Maarten\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Trinidad_and_Tobago_dollar\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/United_States_dollar\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Puerto_Rico\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/United_States_Virgin_Islands\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/British_Virgin_Islands\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Caribbean_Netherlands\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Turks_and_Caicos_Islands\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Belize_dollar\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Costa_Rican_col%C3%B3n\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Guatemalan_quetzal\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Honduran_lempira\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Nicaraguan_c%C3%B3rdoba\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Panamanian_balboa\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/United_States_dollar\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/El_Salvador\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Panama\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Argentine_peso\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Bolivian_boliviano\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Brazilian_real\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/British_Antarctic_Territory\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/South_Georgia_and_the_South_Sandwich_Islands\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Chilean_peso\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Colombian_peso\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Ecuadorian_centavo_coins\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Ecuador\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Euro\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/French_Guiana\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Falkland_Islands_pound\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Guyanese_dollar\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Paraguayan_guaran%C3%AD\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Peruvian_sol\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Surinamese_dollar\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Uruguayan_peso\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/United_States_dollar\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Ecuador\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Venezuelan_bol%C3%ADvar\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Kazakhstani_tenge\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Kyrgyzstani_som\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Tajikistani_somoni\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Turkmenistan_manat\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Uzbekistani_so%CA%BBm\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Renminbi\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Hong_Kong_dollar\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Japanese_yen\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/North_Korean_won\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/South_Korean_won\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Macanese_pataca\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Mongolian_t%C3%B6gr%C3%B6g\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/New_Taiwan_dollar\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Russian_ruble\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Afghan_afghani\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Bangladeshi_taka\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Bhutanese_ngultrum\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Indian_rupee\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Maldivian_rufiyaa\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Nepalese_rupee\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Pakistani_rupee\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Sri_Lankan_rupee\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/British_Indian_Ocean_Territory\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/United_States_dollar\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/British_Indian_Ocean_Territory\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Brunei_dollar\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Burmese_kyat\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Cambodian_riel\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/East_Timor_centavo_coins\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Indonesian_rupiah\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Lao_kip\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Malaysian_ringgit\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Philippine_peso\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Singapore_dollar\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Thai_baht\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/United_States_dollar\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/East_Timor\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Vietnamese_%C4%91%E1%BB%93ng\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Abkhazian_apsar\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Armenian_dram\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Artsakh_dram\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Azerbaijani_manat\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Bahraini_dinar\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Egyptian_pound\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Gaza_Strip\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0\n", + "PAGE HAS NO LINKS: /wiki/Euro\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Cyprus\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Georgian_lari\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Iranian_rial\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Iraqi_dinar\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Israeli_new_shekel\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Jordanian_dinar\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Kuwaiti_dinar\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Lebanese_pound\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Omani_rial\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Russian_ruble\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Abkhazia\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/South_Ossetia\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Qatari_riyal\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Saudi_riyal\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Syrian_pound\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Turkish_lira\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/United_Arab_Emirates_dirham\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Yemeni_rial\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Currency\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Bulgarian_lev\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Croatian_kuna\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Czech_koruna\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Danish_krone\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Euro\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Gibraltar_pound\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Hungarian_forint\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Polish_z%C5%82oty\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Romanian_leu\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Swedish_krona\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Armenian_dram\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Azerbaijani_manat\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Belarusian_ruble\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Georgian_lari\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Moldovan_leu\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Kazakhstani_tenge\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Russian_ruble\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Transnistrian_ruble\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Ukrainian_hryvnia\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Albanian_lek\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Bosnia_and_Herzegovina_convertible_mark\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Macedonian_denar\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Maltese_scudo\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Serbian_dinar\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Turkish_lira\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Faroese_kr%C3%B3na\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Guernsey_pound\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Icelandic_kr%C3%B3na\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Jersey_pound\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Manx_pound\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Norwegian_krone\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Swiss_franc\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Banknotes_of_the_pound_sterling\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Bank_of_England_note_issues\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Bank_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Bank_of_England_%C2%A35_note\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Bank_of_England_%C2%A310_note\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Bank_of_England_%C2%A320_note\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Bank_of_England_%C2%A350_note\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Bank_of_England_10s_note\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Bank_of_England_%C2%A31_note\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Banknotes_of_Scotland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Bank_of_Scotland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Bank_of_Scotland_%C2%A35_note\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Bank_of_Scotland_%C2%A310_note\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Bank_of_Scotland_%C2%A320_note\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Bank_of_Scotland_%C2%A350_note\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Bank_of_Scotland_%C2%A3100_note\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/The_Royal_Bank_of_Scotland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/The_Royal_Bank_of_Scotland_%C2%A31_note\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/The_Royal_Bank_of_Scotland_%C2%A35_note\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/The_Royal_Bank_of_Scotland_%C2%A310_note\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/The_Royal_Bank_of_Scotland_%C2%A320_note\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/The_Royal_Bank_of_Scotland_%C2%A350_note\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/The_Royal_Bank_of_Scotland_%C2%A3100_note\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Clydesdale_Bank\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Clydesdale_Bank_%C2%A35_note\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Clydesdale_Bank_%C2%A310_note\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Clydesdale_Bank_%C2%A320_note\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Clydesdale_Bank_%C2%A350_note\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Clydesdale_Bank_%C2%A3100_note\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Banknotes_of_Northern_Ireland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Bank_of_Ireland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Bank_of_Ireland_%C2%A35_note\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Bank_of_Ireland_%C2%A310_note\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Bank_of_Ireland_%C2%A320_note\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Bank_of_Ireland_%C2%A350_note\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Bank_of_Ireland_%C2%A3100_note\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Danske_Bank_(Northern_Ireland)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Northern_Bank_%C2%A35_note\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Danske_Bank_%C2%A310_note\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Danske_Bank_%C2%A320_note\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/First_Trust_Bank\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Ulster_Bank\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Crown_dependencies\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Guernsey_pound\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Jersey_pound\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Manx_pound\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/British_Overseas_Territories\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Gibraltar_pound\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Falkland_Islands_pound\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Saint_Helena_pound\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Coins_of_the_pound_sterling\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Economy_of_the_United_Kingdom\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Sterling_area\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Coins_of_the_pound_sterling\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Halfpenny_(British_decimal_coin)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Penny_(British_decimal_coin)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Two_pence_(British_decimal_coin)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Five_pence_(British_coin)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Ten_pence_(British_coin)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Twenty_pence_(British_coin)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Fifty_pence_(British_coin)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/One_pound_(British_coin)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Two_pounds_(British_coin)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Quarter_farthing\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Third_farthing\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Half_farthing\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Farthing_(British_coin)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Halfpenny_(British_pre-decimal_coin)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Penny_(British_pre-decimal_coin)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Three_halfpence_(British_coin)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Twopence_(British_pre-decimal_coin)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Threepence_(British_coin)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Fourpence_(British_coin)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Sixpence_(British_coin)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Shilling_(British_coin)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Florin_(British_coin)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Half_crown_(British_coin)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Double_florin\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Crown_(British_coin)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Quarter_guinea\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Third_guinea_(British_coin)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Half_sovereign\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Half_guinea\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Sovereign_(British_coin)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Guinea_(coin)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Double_sovereign\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Two_guineas_(British_coin)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Five_pounds_(British_gold_coin)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Five_guineas_(British_coin)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/British_twenty-five_pence_coin\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Five_pounds_(British_coin)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Twenty_pounds_(British_coin)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Fifty_pounds_(British_coin)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/One_hundred_pounds_(British_coin)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Royal_Maundy\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Britannia_(coin)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Quarter_sovereign\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Half_sovereign\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Sovereign_(British_coin)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Lunar_Series_(British_coin)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/The_Queen%27s_Beasts_(coin)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Landmarks_of_Britain\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Coins_of_the_pound_sterling\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Banknotes_of_the_pound_sterling\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/List_of_British_banknotes_and_coins\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/List_of_British_currencies\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Scottish_coinage\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Coins_of_Ireland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/List_of_people_on_coins_of_the_United_Kingdom\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Currency\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Pound_(currency)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Alderney_pound\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Falkland_Islands_pound\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Gibraltar_pound\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Guernsey_pound\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0\n", + "PAGE HAS NO LINKS: /wiki/Jersey_pound\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Manx_pound\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Saint_Helena_pound\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Egyptian_pound\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Lebanese_pound\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/South_Sudanese_pound\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Sudanese_pound\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Syrian_pound\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Turkish_lira\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Bristol_Pound\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Brixton#Brixton_Pound\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Lewes_Pound\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Stroud_Pound\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Totnes_Pound\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Anglo-Saxon_pound\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Australian_pound\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Bahamian_pound\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Bermudian_pound\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Biafran_pound\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/British_West_African_pound\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Canadian_pound\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Connecticut_pound\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Cypriot_pound\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Delaware_pound\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Fijian_pound\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/French_livre\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Livre_parisis\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Livre_tournois\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/French_colonial_livre\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Guadeloupe_livre\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Haitian_livre\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/New_France_livre\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Saint_Lucia_livre\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Gambian_pound\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Georgia_pound\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Ghanaian_pound\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Irish_pound\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Israeli_pound\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Jamaican_pound\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Japanese_government-issued_Oceanian_Pound\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Libyan_pound\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Lombardo-Venetian_pound\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Luccan_pound\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Luxembourgish_livre\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Malawian_pound\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Maltese_pound\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Maltese_lira\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Maryland_pound\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Massachusetts_pound\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/New_Brunswick_pound\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/New_Guinean_pound\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/New_Hampshire_pound\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/New_Jersey_pound\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/New_York_pound\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/New_Zealand_pound\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Newfoundland_pound\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Nigerian_pound\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/North_Carolina_pound\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Nova_Scotian_pound\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Oceanian_pound\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Ottoman_lira\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Palestine_pound\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Papal_lira\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Parman_lira\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Pennsylvania_pound\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Pound_Scots\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Prince_Edward_Island_pound\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Rhode_Island_pound\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Rhodesian_pound\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Rhodesia_and_Nyasaland_pound\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Sammarinese_lira\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Sardinian_lira\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Solomon_Islands_pound\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/South_Carolina_pound\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Southern_Rhodesian_pound\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/South_African_pound\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/South_African_pound\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/South_West_African_pound\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Tongan_pound\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Tuscan_pound\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Vatican_lira\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Virginia_pound\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/West_Indian_pound\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Western_Samoan_pound\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Zambian_pound\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Dinar\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Pound_sign\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Troy_weight\n", + "1830\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/History_of_the_United_Kingdom\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Timeline_of_British_history\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/History_of_the_formation_of_the_United_Kingdom\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Georgian_era\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Victorian_era\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Edwardian_era\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/History_of_the_United_Kingdom_during_the_First_World_War\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/History_of_the_United_Kingdom#Interwar_era\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/History_of_the_United_Kingdom#World_War_II\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Political_history_of_the_United_Kingdom_(1945%E2%80%93present)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Social_history_of_the_United_Kingdom_(1945%E2%80%93present)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Economic_history_of_the_United_Kingdom\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/British_Empire\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Maritime_history_of_the_United_Kingdom\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Military_history_of_the_United_Kingdom\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Geography_of_the_United_Kingdom\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Administrative_geography_of_the_United_Kingdom\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Countries_of_the_United_Kingdom\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Crown_dependencies\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/British_Overseas_Territories\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/City_status_in_the_United_Kingdom\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/List_of_towns_in_the_United_Kingdom\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/List_of_countries_that_gained_independence_from_the_United_Kingdom\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Geography_of_the_United_Kingdom\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/British_Isles\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Terminology_of_the_British_Isles\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Great_Britain\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Coastline_of_the_United_Kingdom\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Geology_of_Great_Britain\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Geography_of_Ireland#Geological_development\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/List_of_lakes_and_lochs_in_the_United_Kingdom\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/List_of_mountains_and_hills_of_the_United_Kingdom\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/List_of_rivers_of_the_United_Kingdom\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/List_of_volcanoes_in_the_United_Kingdom\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/List_of_renewable_resources_produced_and_traded_by_the_United_Kingdom\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Energy_in_the_United_Kingdom\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Renewable_energy_in_the_United_Kingdom\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Biodiesel_in_the_United_Kingdom\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Coal_mining_in_the_United_Kingdom\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Geothermal_power_in_the_United_Kingdom\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Hydraulic_fracturing_in_the_United_Kingdom\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Hydroelectricity_in_the_United_Kingdom\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Renewable_energy_in_the_United_Kingdom#Ocean_power\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/North_Sea_oil\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Solar_power_in_the_United_Kingdom\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Wind_power_in_the_United_Kingdom\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/British_food\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Agriculture_in_the_United_Kingdom\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Fishing_in_Scotland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Fishing_industry_in_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Fishing_in_Scotland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Hunting_and_shooting_in_the_United_Kingdom\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/List_of_the_vascular_plants_of_Britain_and_Ireland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Forestry_in_the_United_Kingdom\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Mining_in_the_United_Kingdom\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Politics_of_the_United_Kingdom\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Constitution_of_the_United_Kingdom\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Courts_of_the_United_Kingdom\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Elections_in_the_United_Kingdom\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Foreign_relations_of_the_United_Kingdom\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/History_of_the_foreign_relations_of_the_United_Kingdom\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Human_rights_in_the_United_Kingdom\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Intersex_rights_in_the_United_Kingdom\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/LGBT_rights_in_the_United_Kingdom\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Transgender_rights_in_the_United_Kingdom\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Judiciary_of_the_United_Kingdom\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Law_of_the_United_Kingdom\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Law_enforcement_in_the_United_Kingdom\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/United_Kingdom_legislation\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Monarchy_of_the_United_Kingdom\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0\n", + "PAGE HAS NO LINKS: /wiki/List_of_British_monarchs\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/British_nationality_law\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Parliament_of_the_United_Kingdom\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/House_of_Commons_of_the_United_Kingdom\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/House_of_Lords\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/List_of_political_parties_in_the_United_Kingdom\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Government_of_the_United_Kingdom\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Cabinet_of_the_United_Kingdom\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/List_of_British_governments\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Her_Majesty%27s_Civil_Service\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Departments_of_the_United_Kingdom_Government\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Prime_Minister_of_the_United_Kingdom\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/List_of_Prime_Ministers_of_the_United_Kingdom\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/British_Armed_Forces\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Royal_Navy\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/British_Army\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Royal_Air_Force\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/United_Kingdom_and_weapons_of_mass_destruction\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Economy_of_the_United_Kingdom\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/List_of_banks_in_the_United_Kingdom\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Bank_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/United_Kingdom_budget\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Economic_geography_of_the_United_Kingdom\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Manufacturing_in_the_United_Kingdom\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/List_of_stock_exchanges_in_the_United_Kingdom,_the_British_Crown_Dependencies_and_United_Kingdom_Overseas_Territories\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/London_Stock_Exchange\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Taxation_in_the_United_Kingdom\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Telecommunications_in_the_United_Kingdom\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Tourism_in_the_United_Kingdom\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Transport_in_the_United_Kingdom\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/British_Rail\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Affordability_of_housing_in_the_United_Kingdom\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Crime_in_the_United_Kingdom\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Demography_of_the_United_Kingdom\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Drug_policy_of_the_United_Kingdom\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Education_in_the_United_Kingdom\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Ethnic_groups_in_the_United_Kingdom\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Healthcare_in_the_United_Kingdom\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Immigration_to_the_United_Kingdom_since_1922\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/List_of_British_innovations_and_discoveries\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Languages_of_the_United_Kingdom\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Poverty_in_the_United_Kingdom\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Food_bank#United_Kingdom\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Prostitution_in_the_United_Kingdom\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Public_holidays_in_the_United_Kingdom\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Social_care_in_the_United_Kingdom\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Social_structure_of_the_United_Kingdom\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Culture_of_the_United_Kingdom\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Art_of_the_United_Kingdom\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Cinema_of_the_United_Kingdom\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/British_cuisine\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Britishness\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/British_literature\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Media_of_the_United_Kingdom\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Television_in_the_United_Kingdom\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Music_of_the_United_Kingdom\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Religion_in_the_United_Kingdom\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Sport_in_the_United_Kingdom\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Symbols_of_the_United_Kingdom,_the_Channel_Islands_and_the_Isle_of_Man\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Theatre_of_the_United_Kingdom\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Countries_of_the_United_Kingdom\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/History_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Social_history_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Timeline_of_English_history\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Geography_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Politics_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/English_law\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Economy_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Tourism_in_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Education_in_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Healthcare_in_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Culture_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Religion_in_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/National_symbols_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Northern_Ireland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/History_of_Northern_Ireland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Northern_Ireland#Geography_and_climate\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Politics_of_Northern_Ireland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Northern_Ireland_Assembly\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Northern_Ireland_Executive\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/First_Minister_and_deputy_First_Minister\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Northern_Ireland_law\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Economy_of_Northern_Ireland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/List_of_tourist_attractions_in_Ireland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Education_in_Northern_Ireland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Health_and_Social_Care_in_Northern_Ireland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Culture_of_Northern_Ireland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Religion_in_Northern_Ireland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Northern_Ireland#Symbols\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Scotland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/History_of_Scotland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Timeline_of_Scottish_history\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Geography_of_Scotland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Politics_of_Scotland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Scottish_Parliament\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Scottish_Government\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/First_Minister_of_Scotland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Scots_law\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Economy_of_Scotland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Tourism_in_Scotland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Education_in_Scotland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Healthcare_in_Scotland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Culture_of_Scotland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Religion_in_Scotland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/National_symbols_of_Scotland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Wales\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/History_of_Wales\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Geography_of_Wales\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Welsh_Government\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Politics_of_Wales\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/National_Assembly_for_Wales\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/First_Minister_of_Wales\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Welsh_law\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Economy_of_Wales\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Tourism_in_Wales\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Education_in_Wales\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Healthcare_in_Wales\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Culture_of_Wales\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Religion_in_Wales\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/National_symbols_of_Wales\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Outline_of_the_United_Kingdom\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Index_of_United_Kingdom-related_articles\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Integrated_Authority_File\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/National_Diet_Library\n", + "979\n", + "979\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Main_Page\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Main_Page\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Spanish_dollar\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Pieces_of_Eight\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Catholic_Monarchs\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Ferdinand_V_of_Spain\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Isabella_I_of_Castile\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Kingdom_of_Granada\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Seville\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Crown_of_Castile\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Crown_of_Aragon\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Philip_V_of_Spain\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Pillars_of_Hercules\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Castile_and_Le%C3%B3n\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Granada\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Inescutcheon\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Anjou\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Ferdinand_VI_of_Spain\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Granada\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Inescutcheon\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Anjou\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Charles_III_of_Spain\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Charles_IV_of_Spain\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/United_States_Mint\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Ferdinand_VII_of_Spain\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Spanish_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Peso\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Coin\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Spanish_real\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Spanish_Empire\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Thaler\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/World_currency\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Legal_tender\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0\n", + "PAGE HAS NO LINKS: /wiki/Coinage_Act_of_1857\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/World_currency\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Canadian_dollar\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Japanese_yen\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Yuan_(currency)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Philippine_peso\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Dollar_sign\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Peso\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Argentine_peso\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Bolivian_peso\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Chilean_peso\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Colombian_peso\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Costa_Rican_peso\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Cuban_peso\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Dominican_peso\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Ecuadorian_peso\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Guatemalan_peso\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Honduran_peso\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Mexican_peso\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Nicaraguan_peso\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Paraguayan_peso\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Philippine_peso\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Puerto_Rican_peso\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Peruvian_real\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Salvadoran_peso\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Uruguayan_peso\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Venezuelan_peso\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Coin\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Currency_of_Spanish_America\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Hieronymus_Schlick\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Bohemia\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Joachimsthaler\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Dale_(landform)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Joachimsthal\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Ore_Mountains\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/J%C3%A1chymov\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Kingdom_of_Bohemia\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Holy_Roman_Empire\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Troy_grain\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Duchy_of_Burgundy\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Cross_of_Burgundy\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Burgundian_Netherlands\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Philip_II_of_Spain\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Seven_United_Provinces\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Thaler#Dutch_daalder\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/New_Netherland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Thirteen_colonies\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Guldengroschen\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Escudo\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/New_World\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Potos%C3%AD\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Bolivia\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Taxco,_Guerrero\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Zacatecas,_Zacatecas\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Peru\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/National_Mint_of_Bolivia\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Lima\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Mexican_Mint\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Bogot%C3%A1\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Popay%C3%A1n\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Guatemala_City\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Santiago\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Spanish_peseta\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Latin_Monetary_Union\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Decimalization\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Colony_of_New_South_Wales\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Lachlan_Macquarie\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/British_One_Penny_coin_(pre-decimal)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Holey_dollar\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Shilling_(British_coin)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Parliament_of_the_United_Kingdom\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Coinage_Act_of_1792\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/United_States_Mint\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Grain_(measure)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Troy_ounce\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Coinage_Act_of_1792\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Alexander_Hamilton\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/American_Revolution\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Mercantilism\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/West_Indies\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Coinage_Act_of_1857\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/New_York_Stock_Exchange\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Pirate\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Spanish_treasure_fleet\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Manila_galleon\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Manila\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Philippines\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Metallurgical_assay\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Trade_dollar\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Hong_Kong_dollar\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Chinese_yuan\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Pirates_in_popular_culture\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Robert_Louis_Stevenson\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Treasure_Island\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Long_John_Silver\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Pirates_in_popular_culture\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Calypso_(mythology)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Tia_Dalma\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Jack_Sparrow\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Neal_Stephenson\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/The_Baroque_Cycle\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Daniel_Defoe\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Robinson_Crusoe\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Puzzle_Pirates\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Monkey_Island_(series)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Pieces_of_Eight\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Styx_(band)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Doubloon\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Spanish_escudo\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Columnarios\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Maria_Theresa_thaler\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Piastre\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Holey_dollar\n", + "494\n", + "494\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Murray_Rothbard\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/LewRockwell.com\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/JSTOR\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Currency\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Dollar\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Australian_dollar\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Bahamian_dollar\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Barbadian_dollar\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Belize_dollar\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Bermudian_dollar\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Brunei_dollar\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Canadian_dollar\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Cayman_Islands_dollar\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Cook_Islands_dollar\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Eastern_Caribbean_dollar\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Fijian_dollar\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Guyanese_dollar\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Hong_Kong_dollar\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Jamaican_dollar\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Kiribati_dollar\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Liberian_dollar\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Namibian_dollar\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/New_Zealand_dollar\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Samoan_t%C4%81l%C4%81\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Singapore_dollar\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Solomon_Islands_dollar\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Surinamese_dollar\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/New_Taiwan_dollar\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Trinidad_and_Tobago_dollar\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Tuvaluan_dollar\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/United_States_dollar\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Chinese_yuan#Connection_with_dollar\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Ethiopian_birr\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Malaysian_ringgit\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Antigua_dollar\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/British_Columbia_dollar\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/British_North_Borneo_dollar\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/British_West_Indies_dollar\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Ceylonese_rixdollar\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Confederate_States_dollar\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Early_American_currency#Continental_currency\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Danish_rigsdaler\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Danish_West_Indian_daler\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Danish_West_Indian_rigsdaler\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Dominican_dollar\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Dutch_rijksdaalder\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Greenlandic_rigsdaler\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Grenadan_dollar\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Hawaiian_dollar\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Japanese_government-issued_dollar_in_Malaya_and_Borneo\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Kiautschou_dollar\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Malaya_and_British_Borneo_dollar\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Malayan_dollar\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Mauritian_dollar\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Mongolian_dollar\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Nevisian_dollar\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/New_Brunswick_dollar\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Newfoundland_dollar\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Norwegian_rigsdaler\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Norwegian_speciedaler\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Nova_Scotian_dollar\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Penang_dollar\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Prince_Edward_Island_dollar\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Currencies_of_Puerto_Rico\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Rhodesian_dollar\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Saint_Kitts_dollar\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Saint_Lucia_dollar\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Saint_Vincent_dollar\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Sarawak_dollar\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Sierra_Leonean_dollar\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Slovenian_tolar\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Straits_dollar\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0\n", + "PAGE HAS NO LINKS: /wiki/Sumatran_dollar\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Swedish_riksdaler\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Old_Taiwan_dollar\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Texas_dollar\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Trinidadian_dollar\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Tobagan_dollar\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Zimbabwean_dollar\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Niue_dollar\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Pitcairn_Islands_dollar\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Eurodollar\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Petrodollar\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Geary%E2%80%93Khamis_dollar\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Economy_of_Second_Life\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Entropia_Universe\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Angus_Bucks\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Antarctican_dollar\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Calgary_dollar\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Canadian_Tire_money\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Disney_dollar\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Liberty_dollar_(private_currency)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Salt_Spring_dollar\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Toronto_dollar\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Bristol_Pound\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Dollar_sign\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Half_dollar\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Holey_dollar\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Thaler\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Tolar\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Trade_dollar\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Zimbabwean_bond_coins\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Zimbabwean_bond_notes\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Currency\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Peso\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Argentine_peso\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Chilean_peso\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Colombian_peso\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Cuban_convertible_peso\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Cuban_peso\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Dominican_peso\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Macanese_pataca\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Mexican_peso\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Philippine_peso\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Sahrawi_peseta\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Uruguayan_peso\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Argentine_peso_argentino\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Argentine_peso_ley\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Argentine_peso_moneda_corriente\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Argentine_peso_moneda_nacional\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Bolivian_peso\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Catalan_peseta\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Costa_Rican_peso\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Ecuadorian_peso\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Equatorial_Guinean_peseta\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Guatemalan_peso\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Guinea-Bissau_peso\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Honduran_peso\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Japanese_government-issued_Philippine_Peso\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Nicaraguan_peso\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Paraguayan_peso\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Peruvian_peseta\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Portuguese_Timorese_pataca\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Currencies_of_Puerto_Rico\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Salvadoran_peso\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Spanish_peseta\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Venezuelan_peso\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Dollar_sign\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Maltese_pataca\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Spanish_Empire\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Catholic_Monarchs\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Habsburg_Spain\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Spanish_Golden_Age\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Encomienda\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/New_Laws\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Expulsion_of_the_Moriscos\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Eighty_Years%27_War\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Portuguese_Restoration_War\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Enlightenment_in_Spain\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Peninsular_War\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Spanish_American_wars_of_independence\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Spanish_Constitution_of_1812\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Carlist_Wars\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Spanish%E2%80%93American_War\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/German%E2%80%93Spanish_Treaty_(1899)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Spanish_Civil_War\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Moroccan_Army_of_Liberation\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Western_Sahara_conflict\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Kingdom_of_Naples\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Kingdom_of_Sicily#The_insular_kingdom_of_Sicily_under_the_Crown_of_Aragon_and_Spain\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Sardinia#Aragonese_period\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/List_of_rulers_of_Milan\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Charles_V,_Holy_Roman_Emperor\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Spanish_Netherlands\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Franche-Comt%C3%A9\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Iberian_Union\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/History_of_the_Philippines_(1521%E2%80%931898)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Spanish_East_Indies\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Spanish_Formosa\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Tidore\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Spanish_Florida\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/New_Spain\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Louisiana_(New_Spain)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Spanish_expeditions_to_the_Pacific_Northwest\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/History_of_Haiti#Spanish_history_(1492–1625)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/History_of_Belize_(1506%E2%80%931862)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Colony_of_Santiago\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/History_of_Trinidad_and_Tobago#Spanish_period\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Captaincy_General_of_Venezuela\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Viceroyalty_of_New_Granada\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Viceroyalty_of_Peru\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Viceroyalty_of_the_R%C3%ADo_de_la_Plata\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Real_Audiencia_of_Charcas\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Banda_Oriental\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/History_of_the_Falkland_Islands\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Captaincy_General_of_Chile\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Spanish_Guinea\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Ifni\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Cape_Juby\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Spanish_protectorate_in_Morocco\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Spanish_Sahara\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Archivo_de_Indias\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Council_of_the_Indies\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Cabildo_(council)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Trial_of_residence\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Laws_of_the_Indies\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Royal_Decree_of_Graces_of_1815\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Exequatur\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Papal_bull\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/School_of_Salamanca\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Viceroy\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Viceroyalty_of_New_Spain\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Viceroyalty_of_New_Granada\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Viceroyalty_of_Peru\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Viceroyalty_of_the_R%C3%ADo_de_la_Plata\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Real_Audiencia\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/New_Kingdom_of_Granada\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Royal_Audiencia_of_Buenos_Aires\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Captaincy_General_of_Venezuela\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Real_Audiencia_of_Charcas\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Real_Audiencia_of_Concepci%C3%B3n\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Real_Audiencia_of_Cusco\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Royal_Audiencia_of_Guadalajara\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Real_Audiencia_of_Guatemala\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Real_Audiencia_of_Lima\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Real_Audiencia_of_Manila\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Royal_Audiencia_of_Mexico\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Real_Audiencia_of_Panama\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Real_Audiencia_of_Quito\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Real_Audiencia_of_Santiago\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Real_Audiencia_of_Santo_Domingo\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Captaincies_of_the_Spanish_Empire\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Captaincy_General_of_Chile\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Captaincy_General_of_Cuba\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Captaincy_General_of_Guatemala\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Captaincy_General_of_the_Philippines\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Captaincy_General_of_Puerto_Rico\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Captaincy_General_of_Santo_Domingo\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Captaincy_General_of_Venezuela\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Captaincy_General_of_Yucat%C3%A1n\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Provincias_Internas\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Governorates_of_the_Spanish_Empire\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Castilla_de_Oro\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Governorate_of_Cuba\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Governorate_of_New_Andalusia_(1501%E2%80%9313)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Governorate_of_New_Andalusia\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Governorate_of_New_Castile\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Governorate_of_New_Toledo\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Governorate_of_Paraguay\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Governorate_of_the_R%C3%ADo_de_la_Plata\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0\n", + "PAGE HAS NO LINKS: /wiki/Currency_of_Spanish_America\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Spanish_colonial_real\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Maraved%C3%AD\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Spanish_escudo\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Columnarios\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Manila_galleon\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Spanish_treasure_fleet\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Casa_de_Contrataci%C3%B3n\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Guipuzcoan_Company_of_Caracas\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Camino_Real_de_Tierra_Adentro\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Tercio\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Army_of_Flanders\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Spanish_Armada\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Indian_auxiliaries\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Spanish_Legion\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Fernando_%C3%81lvarez_de_Toledo,_3rd_Duke_of_Alba\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Antonio_de_Leyva,_Duke_of_Terranova\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Mart%C3%ADn_de_Goiti\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Alfonso_d%27Avalos\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Garc%C3%ADa_de_Toledo_Osorio,_4th_Marquis_of_Villafranca\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Emmanuel_Philibert,_Duke_of_Savoy\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/%C3%81lvaro_de_Baz%C3%A1n_the_Elder\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/John_of_Austria\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Charles_Bonaventure_de_Longueval,_Count_of_Bucquoy\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Pedro_de_Zubiaur\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Ambrogio_Spinola,_1st_Marquis_of_the_Balbases\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Bernardo_de_G%C3%A1lvez\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Christopher_Columbus\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Pinz%C3%B3n_brothers\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Ferdinand_Magellan\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Juan_Sebasti%C3%A1n_Elcano\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Juan_de_la_Cosa\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Juan_Ponce_de_Le%C3%B3n\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Miguel_L%C3%B3pez_de_Legazpi\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Pedro_Men%C3%A9ndez_de_Avil%C3%A9s\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Sebasti%C3%A1n_de_Ocampo\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/%C3%81lvar_N%C3%BA%C3%B1ez_Cabeza_de_Vaca\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Alonso_de_Ojeda\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Vasco_N%C3%BA%C3%B1ez_de_Balboa\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Alonso_de_Salazar\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Andr%C3%A9s_de_Urdaneta\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Antonio_de_Ulloa\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Ruy_L%C3%B3pez_de_Villalobos\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Diego_Columbus\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Alonso_de_Ercilla\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Nicol%C3%A1s_de_Ovando\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Juan_de_Ayala\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Sebasti%C3%A1n_Vizca%C3%ADno\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Juan_Fern%C3%A1ndez_(explorer)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Felipe_Gonz%C3%A1lez_de_Ahedo\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Conquistador\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Hern%C3%A1n_Cort%C3%A9s\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Francisco_Pizarro\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Gonzalo_Jim%C3%A9nez_de_Quesada\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Hern%C3%A1n_P%C3%A9rez_de_Quesada\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Francisco_V%C3%A1zquez_de_Coronado\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Diego_Vel%C3%A1zquez_de_Cu%C3%A9llar\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Pedro_de_Valdivia\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Pedro_de_Alvarado\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Mart%C3%ADn_de_Urs%C3%BAa\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Diego_de_Almagro\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/P%C3%A1nfilo_de_Narv%C3%A1ez\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Diego_de_Mazariegos\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Jer%C3%B3nimo_Luis_de_Cabrera\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Battle_of_Bicocca\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Battle_of_Landriano\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Battle_of_Pavia\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Conquest_of_Tunis_(1535)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Battle_of_M%C3%BChlberg\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Battle_of_St._Quentin_(1557)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Battle_of_Gravelines_(1558)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Great_Siege_of_Malta\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Battle_of_Lepanto\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Fall_of_Antwerp\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Battle_of_Ponta_Delgada\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Siege_of_Mons_(1572)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Battle_of_Gembloux_(1578)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Siege_of_Ostend\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/English_Armada\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Battle_of_Cape_Celidonia\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Battle_of_White_Mountain\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Siege_of_Breda_(1624)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Battle_of_N%C3%B6rdlingen_(1634)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Battle_of_Valenciennes_(1656)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Sieges_of_Ceuta_(1694%E2%80%931727)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Battle_of_Bitonto\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Battle_of_Bail%C3%A9n\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Battle_of_Vitoria\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Battle_of_T%C3%A9touan\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Alhucemas_landing\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Battle_of_Capo_d%27Orso\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Battle_of_Preveza\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Siege_of_Castelnuovo\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Algiers_expedition_(1541)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Battle_of_Ceresole\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Battle_of_Djerba\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Conquest_of_Tunis_(1574)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Spanish_Armada\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Siege_of_Leiden\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Battle_of_Rocroi\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Battle_of_the_Downs\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Battle_of_Cape_Passaro\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Battle_of_Trafalgar\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Battle_of_Somosierra\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Battle_of_Annual\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Fall_of_Tenochtitlan\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Battle_of_Cajamarca\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Siege_of_Cuzco\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Spanish_conquest_of_the_Muisca\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Battle_of_Reynog%C3%BCel%C3%A9n\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Battle_of_Penco\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Battle_of_Guadalupe_Island_(1595)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Battle_of_San_Juan_(1595)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Battle_of_Cartagena_de_Indias\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Cuerno_Verde\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Siege_of_Pensacola\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/La_Noche_Triste\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Battle_of_Tucapel\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Battle_of_Chacabuco\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Battle_of_Carabobo\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Battle_of_Ayacucho\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Capture_of_Guam\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Battle_of_Santiago_de_Cuba\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Battle_of_Manila_Bay\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Puerto_Rican_Campaign#Battle_of_Asomante\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Conquest_of_the_Canary_Islands\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Spanish_conquest_of_the_Aztec_Empire\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Spanish_conquest_of_the_Maya\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Spanish_conquest_of_Chiapas\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Spanish_conquest_of_Yucat%C3%A1n\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Spanish_conquest_of_Guatemala\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Spanish_conquest_of_Pet%C3%A9n\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Spanish_conquest_of_El_Salvador\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Spanish_conquest_of_Honduras\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Spanish_conquest_of_Nicaragua\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Spanish_conquest_of_the_Chibchan_Nations\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Spanish_conquest_of_the_Muisca\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Spanish_conquest_of_the_Inca_Empire\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Conquest_of_Chile\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Spanish_Colonial_architecture\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Mesoamerican_literature\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Cuzco_School\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Indochristian_art\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Quito_School\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/List_of_colonial_universities_in_Hispanic_America\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/List_of_the_oldest_schools_in_the_Philippines\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/General_Archive_of_the_Indies\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Colonial_Spanish_Horse\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Casta\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Spanish_Inquisition\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Slavery_in_the_Spanish_New_World_colonies\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Fort_Mose_Historic_State_Park#Historical_background\n", + "480\n", + "480\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Main_Page\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Main_Page\n", + "1\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Americas\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/America_(disambiguation)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/US_(disambiguation)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/USA_(disambiguation)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/United_States_(disambiguation)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "267\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Flag_of_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Great_Seal_of_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/In_God_We_Trust\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/E_pluribus_unum\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Latin_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Annuit_c%C5%93ptis\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Latin_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/God\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Novus_ordo_seclorum\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Latin_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/The_Star-Spangled_Banner\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/The_Stars_and_Stripes_Forever\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Contiguous_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Alaska\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Hawaii\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Territories_of_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Washington,_D.C.\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/New_York_City\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Federal_government_of_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/National_language\n", + "1023\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Ethnic_groups\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/White_Americans\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/African_Americans\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Asian_Americans\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Multiracial_Americans\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Native_Americans_in_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Pacific_Islands_Americans\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Hispanic_and_Latino_Americans\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Christianity_in_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Irreligion_in_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/American_Jews\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Islam_in_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Religion_in_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Demonym\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Americans\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Politics_of_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Federalism\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Presidential_system\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Republic\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/President_of_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Donald_Trump\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Vice_President_of_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Mike_Pence\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Speaker_of_the_United_States_House_of_Representatives\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Paul_Ryan\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Chief_Justice_of_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/John_Roberts\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/United_States_Congress\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Upper_house\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/United_States_Senate\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Lower_house\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/United_States_House_of_Representatives\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/American_Revolution\n", + "469\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/United_States_Declaration_of_Independence\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Articles_of_Confederation\n", + "541\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/United_States_Constitution\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Northern_Mariana_Islands\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Geography_of_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/List_of_countries_and_dependencies_by_area\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Demographics_of_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/List_of_countries_and_dependencies_by_population\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/List_of_countries_and_dependencies_by_population\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/List_of_countries_and_territories_by_population_density\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Gross_domestic_product\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Purchasing_power_parity\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/List_of_countries_by_GDP_(PPP)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/List_of_countries_by_GDP_(PPP)_per_capita\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Gross_domestic_product\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/List_of_countries_by_GDP_(nominal)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/List_of_countries_by_GDP_(nominal)_per_capita\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Gini_coefficient\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Human_Development_Index\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/List_of_countries_by_Human_Development_Index\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/United_States_dollar\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/ISO_4217\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Coordinated_Universal_Time\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Daylight_saving_time\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Coordinated_Universal_Time\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Anno_Domini\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Right-_and_left-hand_traffic\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Telephone_numbers_in_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/North_American_Numbering_Plan\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/ISO_3166\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Country_code_top-level_domain\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/.us\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Federal_republic\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/U.S._state\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Washington,_D.C.\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Territories_of_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/United_States_Minor_Outlying_Islands\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/List_of_countries_and_dependencies_by_area\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/List_of_countries_and_dependencies_by_population\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Washington,_D.C.\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/List_of_United_States_cities_by_population\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/New_York_City\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Contiguous_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/North_America\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Canada\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Mexico\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Alaska\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Bering_Strait\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Russia\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Hawaii\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Archipelago\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Pacific_Ocean\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Territories_of_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Caribbean_Sea\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Time_in_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Geography_of_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Climate_of_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Fauna_of_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Megadiverse_countries\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Paleo-Indians\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Prehistoric_migration_and_settlement_of_the_Americas_from_Asia\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/European_colonization_of_the_Americas\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Thirteen_Colonies\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/East_Coast_of_the_United_States\n", + "469\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Seven_Years%27_War\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/American_Revolution\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/United_States_Declaration_of_Independence\n", + "541\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Colonial_empire\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/United_States_Constitution\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/United_States_Bill_of_Rights\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Natural_and_legal_rights\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/United_States_territorial_acquisitions\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/American_Indian_Wars\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/List_of_U.S._states_by_date_of_admission_to_the_Union\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/American_Civil_War\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Slavery_in_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Industrial_Revolution\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Spanish%E2%80%93American_War\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/World_War_I\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/World_War_II\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Superpower\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Nuclear_weapons_and_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Atomic_bombings_of_Hiroshima_and_Nagasaki\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Permanent_members_of_the_United_Nations_Security_Council\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/United_Nations_Security_Council\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Cold_War\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Soviet_Union\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Space_Race\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Apollo_11\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Dissolution_of_the_Soviet_Union\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Hyperpower\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/United_Nations\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/World_Bank\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/International_Monetary_Fund\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Organization_of_American_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Developed_country\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/List_of_countries_by_GDP_(nominal)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/List_of_countries_by_GDP_(PPP)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Economy_of_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Americas\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Post-industrial_society\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Service_(economics)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Knowledge_economy\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/National_wealth\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/International_rankings_of_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/List_of_countries_by_average_wage\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Human_Development_Index\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0\n", + "PAGE HAS NO LINKS: /wiki/List_of_countries_by_GDP_(nominal)_per_capita\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/United_States_Armed_Forces\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/List_of_countries_by_military_expenditures\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Politics\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Culture_of_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Science_and_technology_in_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Naming_of_America\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Names_for_United_States_citizens\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/American_(word)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Amerigo_Vespucci\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Martin_Waldseem%C3%BCller\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Americas\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Amerigo_Vespucci\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Latin_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Stephen_Moylan\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/George_Washington\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Aide-de-camp\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Continental_Army\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Joseph_Reed_(politician)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/The_Virginia_Gazette\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Articles_of_Confederation\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/John_Dickinson\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Thomas_Jefferson\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/United_States_Declaration_of_Independence\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Columbia_(name)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Christopher_Columbus\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Washington,_D.C.\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Thirteenth_Amendment_to_the_United_States_Constitution\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Americans\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/American_(word)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/History_of_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Timeline_of_United_States_history\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/American_business_history\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Economic_history_of_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Labor_history_of_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/History_of_Native_Americans_in_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Monks_Mound\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Cahokia\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/UNESCO\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/World_Heritage_Site\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Mississippian_culture\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Prehistoric_migration_and_settlement_of_the_Americas_from_Asia\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Siberia\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Beringia\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Clovis_culture\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Pre-Columbian_era\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Mississippian_culture\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Cahokia\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Archaeology\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Four_Corners\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Ancestral_Puebloans\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/UNESCO_World_Heritage_Sites\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Mesa_Verde_National_Park\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Chaco_Culture_National_Historical_Park\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Taos_Pueblo\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Great_Lakes\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Iroquois_Confederacy\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Hawaiian_Islands\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Archaeology\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/James_Cook#Third_voyage_(1776–79)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Captain_James_Cook\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Waimea,_Kauai_County,_Hawaii\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Kauai\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Archipelago\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/John_Montagu,_4th_Earl_of_Sandwich\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Lords_Commissioners_of_the_Admiralty\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Royal_Navy\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Colonial_history_of_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/European_colonization_of_the_Americas\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Thirteen_Colonies\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Saint_Augustine,_Florida\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Mayflower_Compact\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Jean_Leon_Gerome_Ferris\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Christopher_Columbus\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Voyages_of_Christopher_Columbus#First_voyage\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/New_World\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Conquistador\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Juan_Ponce_de_Le%C3%B3n\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Unincorporated_territories_of_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Christopher_Columbus\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Puerto_Rico\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Voyages_of_Christopher_Columbus#Second_voyage\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/St._Augustine,_Florida\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Santa_Fe,_New_Mexico\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Mississippi_River\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/English_overseas_possessions\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Colony_of_Virginia\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Jamestown,_Virginia\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Pilgrims_(Plymouth_Colony)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Plymouth_Colony\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/English_Dissenters\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Freedom_of_religion\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/House_of_Burgesses\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Mayflower_Compact\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Fundamental_Orders_of_Connecticut\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Cash_crops\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Scotch-Irish_American\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Indentured_servitude\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Province_of_Georgia\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Thirteen_Colonies\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Rights_of_Englishmen\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Christian_revival\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/First_Great_Awakening\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Seven_Years%27_War\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/French_and_Indian_War\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/French_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Native_Americans_in_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Spanish_Navy\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Juan_Jos%C3%A9_P%C3%A9rez_Hern%C3%A1ndez\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Nootka_Sound\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Fur\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Abalone\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/California\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Asia\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Portugal\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Russians\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Fur_trading\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Alaska\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Pacific_Northwest\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Alta_California\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Cape_Foulweather\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/43rd_parallel_north\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Bligh_Island_(Canada)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Yuquot,_British_Columbia\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Nuu-chah-nulth_people\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/American_Indian_Wars\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Population_history_of_indigenous_peoples_of_the_Americas\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/James_Cook\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Johann_Zoffany\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Native_Americans_in_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/American_Indian_Wars\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Population_history_of_indigenous_peoples_of_the_Americas\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Smallpox\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Measles\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Indigenous_peoples_of_the_Americas\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Northwest_Passage\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Maui\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Hawaii_Island\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Kealakekua_Bay\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/American_Revolutionary_War\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/United_States_Declaration_of_Independence\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/American_Revolution\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Territorial_evolution_of_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Declaration_of_Independence_(Trumbull)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/John_Trumbull\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Republicanism_in_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Rights_of_Englishmen\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/American_Revolution\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Lee_Resolution\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Second_Continental_Congress\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/United_States_Declaration_of_Independence\n", + "469\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Thirteen_Colonies\n", + "316\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Articles_of_Confederation\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Siege_of_Yorktown\n", + "541\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Mississippi_River\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Constitutional_Convention_(United_States)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/United_States_Constitution\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Ratification_of_the_United_States_Constitution\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/President_of_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/United_States_Bill_of_Rights\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Natural_and_legal_rights\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Deep_South\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Second_Great_Awakening\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Evangelicalism\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Abolitionism_in_the_United_States\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0\n", + "PAGE HAS NO LINKS: /wiki/United_States_territorial_acquisitions\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/American_Indian_Wars\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Louisiana_Purchase\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/War_of_1812\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Adams%E2%80%93On%C3%ADs_Treaty\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Steam_engine\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Steamboats\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Canal\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Erie_Canal\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Illinois_and_Michigan_Canal\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Jacksonian_democracy\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Second_Party_System\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Trail_of_Tears\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Indian_Removal_Act\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Indian_reservations\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Republic_of_Texas\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Manifest_destiny\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Oregon_Treaty\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Northwestern_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Mexican%E2%80%93American_War\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Mexican_Cession\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Southwestern_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/California_Gold_Rush\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/American_Civil_War\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Rail_transportation_in_the_United_States#History\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/American_bison\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Plains_Indians\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Presidency_of_Ulysses_S._Grant#Indian_affairs_and_human_rights\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Statue_of_Liberty\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/New_York_City\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/American_Civil_War\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Reconstruction_Era\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Battle_of_Gettysburg\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Thure_de_Thulstrup\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Slavery_in_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Africans\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/African_Americans\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Origins_of_the_American_Civil_War\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Slave_states_and_free_states\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/United_States_presidential_election,_1860\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Abraham_Lincoln\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Republican_Party_(United_States)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Confederate_States_of_America\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Union_(American_Civil_War)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Emancipation_Proclamation\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Thirteenth_Amendment_to_the_United_States_Constitution\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Reconstruction_Amendments\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Fourteenth_Amendment_to_the_United_States_Constitution\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/African_American\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Fifteenth_Amendment_to_the_United_States_Constitution\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Federalism_in_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Reconstruction_(United_States)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Assassination_of_Abraham_Lincoln\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Compromise_of_1877\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/United_States_presidential_election,_1876\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Redeemers\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Jim_Crow_laws\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Disenfranchisement_after_the_Reconstruction_Era\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Racial_segregation_in_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Lynching_in_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Economic_history_of_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Technological_and_industrial_history_of_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Ellis_Island\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Immigration_to_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Immigration_to_the_United_States#History\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Southern_Europe\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Eastern_Europe\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/First_Transcontinental_Telegraph\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/First_Transcontinental_Railroad\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/American_frontier\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Incandescent_light_bulb\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Telephone\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/American_Indian_Wars\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Alaska_Purchase\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Russian_Empire\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Overthrow_of_the_Kingdom_of_Hawaii\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Kingdom_of_Hawaii\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Republic_of_Hawaii\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Territory_of_Hawaii\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Puerto_Rico\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Guam\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Philippines\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Spanish%E2%80%93American_War\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/American_Samoa\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Second_Samoan_Civil_War\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/U.S._Virgin_Islands\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Gilded_Age\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Business_magnate\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Cornelius_Vanderbilt\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/John_D._Rockefeller\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Andrew_Carnegie\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Railways\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Petroleum_industry\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/History_of_the_steel_industry\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/J._P._Morgan\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Thomas_Edison\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Nikola_Tesla\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Henry_Ford\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Automotive_industry\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Great_power\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/People%27s_Party_(United_States)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/History_of_the_socialist_movement_in_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Anarchism_in_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Progressive_Era\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Women%27s_suffrage\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Prohibition_in_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/United_States_antitrust_law\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/World_War_I\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Great_Depression\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/World_War_II\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Wall_Street\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/World_War_I\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Allies_of_World_War_I\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Central_Powers\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Woodrow_Wilson\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Paris_Peace_Conference,_1919\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/League_of_Nations\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Treaty_of_Versailles\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Nineteenth_Amendment_to_the_United_States_Constitution\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Women%27s_suffrage_in_the_United_States\n", + "93\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Mass_communication\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Television\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Roaring_Twenties\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Wall_Street_Crash_of_1929\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Great_Depression_in_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Franklin_D._Roosevelt\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/New_Deal\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Social_Security_(United_States)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Great_Migration_(African_American)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Dust_Bowl\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Military_history_of_the_United_States_during_World_War_II\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Allies_of_World_War_II\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Lend-Lease\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Empire_of_Japan\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Attack_on_Pearl_Harbor\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Axis_powers\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Four_Policemen\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/World_War_II_casualties#Human_losses_by_country\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Bretton_Woods_Conference\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Yalta_Conference\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Victory_in_Europe_Day\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/United_Nations_Conference_on_International_Organization\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/San_Francisco\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/United_Nations_Charter\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Manhattan_Project\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Atomic_bombings_of_Hiroshima_and_Nagasaki\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Surrender_of_Japan\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Victory_Day_(United_States)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/History_of_the_United_States_(1945%E2%80%9364)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/History_of_the_United_States_(1964%E2%80%9380)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/History_of_the_United_States_(1980%E2%80%9391)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Cold_War\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Civil_Rights_Movement\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/War_on_Poverty\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Space_Race\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Reaganomics\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Ronald_Reagan\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Tear_down_this_wall!\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Berlin\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Soviet_Union\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Cold_War\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Capitalism\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Communism\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0\n", + "PAGE HAS NO LINKS: /wiki/Geopolitics\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Europe\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/NATO\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Warsaw_Pact\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Containment\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Proxy_war\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Third_World\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/People%27s_Liberation_Army\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/North_Korea\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Korean_War\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Sputnik_1\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Vostok_1\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Space_Race\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Apollo_11\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Vietnam_War\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Post%E2%80%93World_War_II_economic_expansion\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Post%E2%80%93World_War_II_baby_boom\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Interstate_Highway_System\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Inner_city\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Suburb\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Hawaii\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Civil_Rights_Movement\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Nonviolence\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Martin_Luther_King_Jr.\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Civil_Rights_Act_of_1968\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Counterculture_of_the_1960s\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Opposition_to_United_States_involvement_in_the_Vietnam_War\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Black_nationalism\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Sexual_revolution\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/War_on_Poverty\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Medicare_(United_States)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Medicaid\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Means-tested\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Food_Stamp_Program\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Aid_to_Families_with_Dependent_Children\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Stagflation\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Ronald_Reagan\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Reaganomics\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/D%C3%A9tente\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Rollback\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Cold_War_(1985%E2%80%9391)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Dissolution_of_the_Soviet_Union\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Unipolarity\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Pax_Americana\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/New_world_order_(politics)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/History_of_the_United_States_(1991%E2%80%932008)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/History_of_the_United_States_(2008%E2%80%93present)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Gulf_War\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/September_11_attacks\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/War_on_Terror\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/2008_financial_crisis\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Affordable_Care_Act\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/World_Trade_Center_(1973%E2%80%932001)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Lower_Manhattan\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/September_11_attacks\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/One_World_Trade_Center\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Ba%27athist_Iraq\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Sadaam_Hussein\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Invasion_of_Kuwait\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/George_H.W._Bush\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Gulf_War\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Gulf_War\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Coalition_of_the_Gulf_War\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/ARPANET\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Internet\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Dot-com_boom\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Alan_Greenspan\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Personal_Responsibility_and_Work_Opportunity_Act\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/1990s_United_States_boom\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/North_American_Free_Trade_Agreement\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/September_11_attacks\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Al-Qaeda\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/World_Trade_Center_(1973%E2%80%932001)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/The_Pentagon\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/War_on_Terror\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/War_in_Afghanistan_(2001%E2%80%932014)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Iraq_War\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Iraq_War_troop_surge_of_2007\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/United_States_housing_bubble\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/2008_financial_crisis\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Barack_Obama\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/African_American\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Multiracial_American\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/United_States_presidential_election,_2008\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/American_Reinvestment_and_Recovery_Act\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Dodd-Frank_Wall_Street_Reform_and_Consumer_Protection_Act\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Patient_Protection_and_Affordable_Care_Act\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Health_care_in_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Patient_Protection_and_Affordable_Care_Act#Mandates\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Premium_tax_credit\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Health_insurance_marketplace\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/United_States_House_of_Representatives_elections,_2010\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/United_States_Senate_elections,_2014\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Withdrawal_of_U.S._troops_from_Iraq\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Iraqi_insurgency_(2011%E2%80%9313)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Islamic_State_of_Iraq_and_the_Levant\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/United_States%E2%80%93Cuban_Thaw\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Cuba%E2%80%93United_States_relations\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/P5%2B1\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Joint_Comprehensive_Plan_of_Action\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Nuclear_program_of_Iran\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Geography_of_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Climate_of_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Environment_of_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/K%C3%B6ppen_climate_classification\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Contiguous_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Hawaii\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Pacific_Ocean\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Puerto_Rico\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/American_Samoa\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Guam\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Northern_Mariana_Islands\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/United_States_Virgin_Islands\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/List_of_countries_and_dependencies_by_area\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/China\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/India\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Encyclop%C3%A6dia_Britannica\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/The_World_Factbook\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Atlantic_Ocean\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Deciduous\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Piedmont_(United_States)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Appalachian_Mountains\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Great_Lakes\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Midwestern_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Mississippi_River\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Missouri_River\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/List_of_rivers_by_length\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Prairie\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Great_Plains\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/U.S._Interior_Highlands\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Rocky_Mountains\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Colorado\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Great_Basin\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Chihuahuan_Desert\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Mojave_Desert\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Sierra_Nevada_(U.S.)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Cascade_Range\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/West_Coast_of_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Extreme_points_of_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Contiguous_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/California\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Denali\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Volcano\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Alexander_Archipelago\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Aleutian_Islands\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Supervolcano\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Yellowstone_National_Park\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Rockies\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/100th_meridian_west\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Humid_continental_climate\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Humid_subtropical_climate\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Alpine_climate\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Mediterranean_climate\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Coastal_California\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Oceanic_climate\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Oregon\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Washington_(state)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Florida\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Gulf_of_Mexico\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Tropical_cyclone\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Tornado\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Tornado_Alley\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Fauna_of_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Flora_of_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Bald_eagle\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/National_bird_of_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Megadiverse_countries\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Vascular_plant\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Flowering_plant\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Bald_eagle\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/List_of_national_birds\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0\n", + "PAGE HAS NO LINKS: /wiki/List_of_national_animals\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/List_of_areas_in_the_United_States_National_Park_System\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Wilderness\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Protected_area\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Environmental_issues_in_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Nuclear_binding_energy\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Deforestation\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/United_States_Environmental_Protection_Agency\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Endangered_Species_Act\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/United_States_Fish_and_Wildlife_Service\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Demography_of_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Americans\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/List_of_U.S._states_by_population_density\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/List_of_United_States_cities_by_population\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/1790_United_States_Census\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/1800_United_States_Census\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/1810_United_States_Census\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/1820_United_States_Census\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/1830_United_States_Census\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/1840_United_States_Census\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/1850_United_States_Census\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/1860_United_States_Census\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/1870_United_States_Census\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/1880_United_States_Census\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/1890_United_States_Census\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/1900_United_States_Census\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/1910_United_States_Census\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/1920_United_States_Census\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/1930_United_States_Census\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/1940_United_States_Census\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/1950_United_States_Census\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/1960_United_States_Census\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/1970_United_States_Census\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/1980_United_States_Census\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/1990_United_States_Census\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/2000_United_States_Census\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/2010_United_States_Census\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Native_Americans_in_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/United_States_Census_Bureau\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/China\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/India\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Population_growth\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Total_fertility_rate#Developed_or_developing_countries\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Immigration_to_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Chain_migration#Legislation_and_chain_migration\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Permanent_residence_(United_States)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Mexico\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Immigration_and_Nationality_Act_of_1965\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Philippines\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Illegal_immigration_to_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Minority_group\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Non-Hispanic_whites\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Homosexuality\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Bisexuality\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Transgender\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Gallup_(company)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/LGBT\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Centers_for_Disease_Control_and_Prevention\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Native_Americans_in_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Alaska_Natives\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Native_Hawaiians\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Pacific_Islander\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Hispanic_and_Latino_Americans\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Demographic_transition\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Race_and_ethnicity_in_the_United_States_Census\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Mexican_American\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Foreign_born\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Latin_America\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/United_States_urban_area\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Great_Lakes_Megalopolis\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Northeast_Megalopolis\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Southern_California\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/List_of_United_States_cities_by_population\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Global_city\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/New_York_City\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Los_Angeles\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Chicago\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Houston\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/List_of_Metropolitan_Statistical_Areas\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/San_Bernardino,_California\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Dallas\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Atlanta\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Phoenix,_Arizona\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/List_of_Metropolitan_Statistical_Areas\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/List_of_Metropolitan_Statistical_Areas\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/New_York_City\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Los_Angeles\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Chicago\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Dallas\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/New_York_City\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/New_York_metropolitan_area#Metropolitan_Statistical_Area\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Northeastern_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Los_Angeles\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Los_Angeles_metropolitan_area\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Western_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Chicago\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Chicago_metropolitan_area\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Midwestern_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Dallas%E2%80%93Fort_Worth_metroplex\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Dallas%E2%80%93Fort_Worth_metroplex\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Southern_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Houston\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Greater_Houston\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Southern_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Washington,_D.C.\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Washington_metropolitan_area\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Southern_United_States\n", + "1705\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Delaware_Valley\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Northeastern_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Miami\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Miami_metropolitan_area\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Southern_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Atlanta\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Atlanta_metropolitan_area\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Southern_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Boston\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Greater_Boston\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Northeastern_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/San_Francisco\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/San_Francisco%E2%80%93Oakland%E2%80%93Hayward,_CA_Metropolitan_Statistical_Area\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Western_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Phoenix,_Arizona\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Phoenix_metropolitan_area\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Western_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Inland_Empire\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Inland_Empire\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Western_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Detroit\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Metro_Detroit\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Midwestern_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Seattle\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Seattle_metropolitan_area\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Western_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Minneapolis%E2%80%93Saint_Paul\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Minneapolis%E2%80%93Saint_Paul\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Midwestern_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/San_Diego\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/San_Diego_County,_California\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Western_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Tampa_Bay_Area\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Tampa_Bay_Area\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Southern_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Denver\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Denver_metropolitan_area\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Western_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/St._Louis\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Greater_St._Louis\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Midwestern_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/United_States_Census_Bureau\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Languages_of_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Language_Spoken_at_Home_in_the_United_States_of_America\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/List_of_endangered_languages_in_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Language_education_in_the_United_States\n", + "1023\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/American_English\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/De_facto\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/National_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Official_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Naturalized_citizen_of_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Spanish_language_in_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Hawaiian_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Hawaii\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Alaska\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0\n", + "PAGE HAS NO LINKS: /wiki/Alaska_Native_languages\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/New_Mexico\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Louisiana\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/French_language_in_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/California\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Samoan_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/American_Samoa\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Chamorro_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Guam\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Carolinian_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Northern_Mariana_Islands\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Puerto_Rico\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/List_of_most_commonly_learned_foreign_languages_in_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/German_language_in_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Latin\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Japanese_language_education_in_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/American_Sign_Language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Italian_language_in_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Chinese_language_in_the_United_States\n", + "1023\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Spanish_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Spanish-based_creole_languages\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Puerto_Rico\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Chinese_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Mandarin_Chinese\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Cantonese\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Tagalog_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Filipino_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Vietnamese_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Arabic_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/French_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/French_Patois\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Cajun_French\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Korean_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Religion_in_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Christianity\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Protestant\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Evangelicalism_in_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Mainline_Protestant\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Black_church\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Catholic\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Mormon\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Jehovah%27s_Witnesses\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Eastern_Orthodox\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Jewish\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Muslim\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Buddhist\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Hindu\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Irreligion\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Agnosticism\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Atheism\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/First_Amendment_to_the_United_States_Constitution\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Free_Exercise_Clause\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Establishment_Clause\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Christianity\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Vermont\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Irreligion\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Christianity_in_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Protestantism\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Catholic_Church_in_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/American_Jews\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Islam_in_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Buddhism_in_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Hinduism_in_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Agnosticism\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Atheism\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Irreligion\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Unitarian_Universalist\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Scientologist\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Bah%C3%A1%27%C3%AD_Faith\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Sikh\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Jainism\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Shinto\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Confucianism\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Taoism\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Neo-Druidism\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Native_American_religion\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Wicca\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Religious_humanism\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Deism\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Protestantism_in_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Baptists\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Southern_Baptist_Convention\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Lutheranism\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Scandinavia\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Germany\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/North_Dakota\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/South_Dakota\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Presbyterianism\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Scottish_people\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Ulster_Scots_people\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Dutch_Reformed\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/New_Amsterdam\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Nondenominational_Protestants\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Methodists\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Pentecostals\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Episcopal_Church_(USA)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Anglicans\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Holiness_movement\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Adventists\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Anabaptists\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Christian_fundamentalists\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Reformed\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Pietists\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Quakers\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/List_of_Christian_denominations#Protestantism\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Catholic_Church_in_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Spanish_colonization_of_the_Americas\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/French_colonization_of_the_Americas\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Province_of_Maryland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Rhode_Island\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Utah\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Mormonism\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Mormon_Corridor\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Idaho\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Nevada\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Wyoming\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Eastern_Orthodoxy\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Alaska\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Russian_Alaska\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Eastern_Europe\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Jehovah%27s_Witnesses\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Restorationists\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Churches_of_Christ\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Christian_Scientists\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/List_of_Christian_denominations\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Bible_Belt\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Southern_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/New_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Western_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Family_structure_in_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Educational_attainment_in_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Teenage_pregnancy\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Alabama\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Wyoming\n", + "671\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Roe_v._Wade\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Lists_of_landmark_court_decisions\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Supreme_Court_of_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Total_fertility_rate\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Adoption_in_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Same-sex_marriage_in_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/LGBT_adoption_in_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Polygamy\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Federal_government_of_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/State_governments_of_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Local_government_in_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Elections_in_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/United_States_Capitol\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/United_States_Congress\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/United_States_Senate\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/United_States_House_of_Representatives\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/White_House\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/President_of_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/United_States_Supreme_Court_Building\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Supreme_Court_of_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Federation\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Representative_democracy\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Majority_rule\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Minority_rights\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Law_of_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Separation_of_powers\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Democracy_Index\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Italy\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Corruption_Perceptions_Index\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Federalism#United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Political_divisions_of_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Local_government_in_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/County_(United_States)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Municipal_corporation\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Plurality_voting_system\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Proportional_representation\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Legislature\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Bicameralism\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/United_States_Congress\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/United_States_Senate\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/United_States_House_of_Representatives\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0\n", + "PAGE HAS NO LINKS: /wiki/Federal_law\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Declaration_of_war\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Power_of_the_purse\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Impeachment\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Executive_(government)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/President_of_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Commander-in-chief\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Bill_(law)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Cabinet_of_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Judiciary\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Supreme_Court_of_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Federal_judiciary_of_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Constitutionality\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Congressional_district\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/United_States_congressional_apportionment\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/2000_United_States_Census\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/District_of_Columbia\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Territories_of_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Non-voting_members_of_the_United_States_House_of_Representatives\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/At-large\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Term_limits_in_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/United_States_presidential_election\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Electoral_College_(United_States)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Washington,_D.C.\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Chief_Justice_of_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Nebraska\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Unicameralism\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Governor_(United_States)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Article_One_of_the_United_States_Constitution\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Habeas_corpus_in_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/United_States_Bill_of_Rights\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Fourteenth_Amendment_to_the_United_States_Constitution\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Judicial_review\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Marbury_v._Madison\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/John_Marshall\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Political_divisions_of_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/U.S._state\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Territories_of_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/List_of_states_and_territories_of_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Indian_reservation\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Territorial_evolution_of_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/United_States_territorial_acquisitions\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Exclusive_economic_zone#United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/U.S._state\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/District_of_Columbia\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Territories_of_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/United_States_Minor_Outlying_Islands\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/District_of_Columbia\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Twenty-third_Amendment_to_the_United_States_Constitution\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Territories_of_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Puerto_Rico\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Non-voting_members_of_the_United_States_House_of_Representatives\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Tribal_sovereignty_in_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/American_Samoa\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Alabama\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Alaska\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Arizona\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Arkansas\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/California\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Colorado\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Connecticut\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Delaware\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Florida\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Georgia_(U.S._state)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Hawaii\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Idaho\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Illinois\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Indiana\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Iowa\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Kansas\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Kentucky\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Louisiana\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Maine\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Maryland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Massachusetts\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Michigan\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Minnesota\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Mississippi\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Missouri\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Montana\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Nebraska\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Nevada\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/New_Hampshire\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/New_Jersey\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/New_Mexico\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/New_York_(state)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/North_Carolina\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/North_Dakota\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Ohio\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Oklahoma\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Oregon\n", + "1\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Rhode_Island\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/South_Carolina\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/South_Dakota\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Tennessee\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Texas\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Utah\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Vermont\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Virginia\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Washington_(state)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/West_Virginia\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Wisconsin\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Wyoming\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Delaware\n", + "1\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/New_Jersey\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Georgia_(U.S._state)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Connecticut\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Massachusetts\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Maryland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/South_Carolina\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/New_Hampshire\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Virginia\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/New_York_(state)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/North_Carolina\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Rhode_Island\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Vermont\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Kentucky\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Tennessee\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Ohio\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Louisiana\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Indiana\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Mississippi\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Illinois\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Alabama\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Maine\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Missouri\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Arkansas\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Michigan\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Florida\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Texas\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Iowa\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Wisconsin\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/California\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Minnesota\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Oregon\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Kansas\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/West_Virginia\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Nevada\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Nebraska\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Colorado\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/North_Dakota\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/South_Dakota\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Montana\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Washington_(state)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Idaho\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Wyoming\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Utah\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Oklahoma\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/New_Mexico\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Arizona\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Alaska\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Hawaii\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Article_Seven_of_the_United_States_Constitution\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Admission_to_the_Union\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/American_Samoa\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Washington,_D.C.\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Guam\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Northern_Mariana_Islands\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Puerto_Rico\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/United_States_Virgin_Islands\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Washington,_D.C.\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Guam\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Puerto_Rico\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/American_Samoa\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/United_States_Virgin_Islands\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Northern_Mariana_Islands\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Politics_of_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Political_ideologies_in_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Barack_Obama\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Donald_Trump\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/President_of_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Mike_Pence\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Vice_President_of_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Two-party_system\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Primary_election\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Nomination\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/General_election\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/United_States_presidential_election,_1856\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Democratic_Party_(United_States)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/History_of_the_United_States_Democratic_Party\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Republican_Party_(United_States)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/History_of_the_United_States_Republican_Party\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Third_party_(United_States)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0\n", + "PAGE HAS NO LINKS: /wiki/Theodore_Roosevelt\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Progressive_Party_(United_States,_1912)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/United_States_presidential_election,_1912\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Electoral_College_(United_States)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Political_culture\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Center-right_politics\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Conservatism_in_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Centre-left_politics\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Modern_liberalism_in_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Politics_of_the_Northeastern_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Politics_of_the_Western_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Red_states_and_blue_states\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Political_party_strength_in_U.S._states\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Politics_of_the_Southern_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Midwestern_United_States#Political_trends\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Politics_of_the_Western_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Republican_Party_(United_States)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Donald_Trump\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/United_States_Presidential_Election,_2016\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/President_of_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Mike_Pence\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Orrin_Hatch\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Party_leaders_of_the_United_States_Senate\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Mitch_McConnell\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Chuck_Schumer\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Paul_Ryan\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Party_leaders_of_the_United_States_House_of_Representatives\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Kevin_McCarthy_(California_politician)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Nancy_Pelosi\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/115th_United_States_Congress\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/United_States_House_of_Representatives\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/United_States_Senate\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Independent_politician\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/New_Progressive_Party_of_Puerto_Rico\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Foreign_relations_of_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Foreign_policy_of_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Headquarters_of_the_United_Nations\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Midtown_Manhattan\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/United_Nations_Security_Council\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Headquarters_of_the_United_Nations\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/G7\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/G20\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Organisation_for_Economic_Co-operation_and_Development\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/List_of_diplomatic_missions_in_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Consul_(representative)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/List_of_diplomatic_missions_of_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Iran%E2%80%93United_States_relations\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/North_Korea%E2%80%93United_States_relations\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Foreign_relations_of_Bhutan\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Taiwan%E2%80%93United_States_relations\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Six_Assurances\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Special_Relationship\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/United_Kingdom%E2%80%93United_States_relations\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Canada%E2%80%93United_States_relations\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Australia%E2%80%93United_States_relations\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/New_Zealand%E2%80%93United_States_relations\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Philippines%E2%80%93United_States_relations\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Japan%E2%80%93United_States_relations\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/South_Korea%E2%80%93United_States_relations\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Israel%E2%80%93United_States_relations\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/European_Union\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/France%E2%80%93United_States_relations\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Italy%E2%80%93United_States_relations\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Germany%E2%80%93United_States_relations\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Spain%E2%80%93United_States_relations\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/NATO\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Organization_of_American_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/United_States_free_trade_agreements\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/North_American_Free_Trade_Agreement\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Mexico%E2%80%93United_States_relations\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Official_development_assistance\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Gross_national_income\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Compact_of_Free_Association\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Federated_States_of_Micronesia\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Marshall_Islands\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Palau\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Trust_Territory_of_the_Pacific_Islands\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/U.S._Agency_for_International_Development\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Taxation_in_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/United_States_federal_budget\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Taxation_in_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Gross_domestic_product\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Progressive_tax\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Regressive_tax\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Unearned_income\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Congressional_Budget_Office\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Tax_incidence\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Corporate_tax_in_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Regressive_tax\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/National_debt_of_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/United_States_Armed_Forces\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Carrier_strike_group\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/USS_Kitty_Hawk_(CV-63)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/USS_Ronald_Reagan_(CVN-76)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/USS_Abraham_Lincoln_(CVN-72)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/United_States_Marine_Corps\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/United_States_Navy\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/United_States_Air_Force\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Commander-in-chief\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/United_States_Secretary_of_Defense\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Joint_Chiefs_of_Staff\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/United_States_Department_of_Defense\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/United_States_Army\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/United_States_Marine_Corps\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/United_States_Navy\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/United_States_Air_Force\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/United_States_Coast_Guard\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/United_States_Department_of_Homeland_Security\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/United_States_Department_of_the_Navy\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Reserve_components_of_the_United_States_Armed_Forces\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/National_Guard_of_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Conscription_in_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Selective_Service_System\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Aircraft_carrier\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Marine_expeditionary_unit\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/United_States_Fleet_Forces_Command\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/United_States_Pacific_Fleet\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/United_States_military_deployments\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Military_budget_of_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Saudi_Arabia\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Military_budget_of_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Iraq_War\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/War_in_Afghanistan_(2001%E2%80%932014)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Law_enforcement_in_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Crime_in_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Law_of_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Second_Amendment_to_the_United_States_Constitution\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Human_rights_in_the_United_States#Justice_system\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Incarceration_in_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Capital_punishment_in_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Sheriff\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/State_police\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/New_York_City_Police_Department\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Federal_Bureau_of_Investigation\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/United_States_Marshals_Service\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Civil_rights\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/National_Security_of_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/U.S._federal_courts\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Common_law\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Federal_judiciary_of_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Plea_bargaining_in_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Plea_bargain\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Jury_trial\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Clearance_rate\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Gun_violence_in_the_United_States\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0\n", + "PAGE HAS NO LINKS: /wiki/World_Health_Organization\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Second_Amendment_to_the_United_States_Constitution\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Gun_politics_in_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Uniform_Crime_Reports\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Capital_punishment\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Furman_v._Georgia\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Oklahoma\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Capital_punishment_in_the_United_States#States_without_capital_punishment\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Iran\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Pakistan\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Saudi_Arabia\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/United_States_incarceration_rate\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Incarceration_in_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/United_States_Federal_Sentencing_Guidelines\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Federal_drug_policy_of_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Federal_Bureau_of_Prisons\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Incarceration_in_the_United_States#Privatization\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/List_of_U.S._states_by_incarceration_rate#Incarceration_rate_by_state\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Territories_of_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/U.S._Virgin_Islands\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Puerto_Rico\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Economy_of_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Economic_history_of_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Gross_domestic_product\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Consumer_price_index\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Employment-to-population_ratio\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Unemployment_in_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Labor_force#Labor_force_in_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/National_debt_of_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Wealth_in_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Capitalism\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Mixed_economy\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Natural_resource\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/International_Monetary_Fund\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Gross_world_product\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Purchasing_power_parity\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/G7\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/List_of_countries_by_GDP_(nominal)_per_capita\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/List_of_countries_by_GDP_(PPP)_per_capita\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/United_States_dollar\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Reserve_currency\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/List_of_countries_by_imports\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/List_of_countries_by_exports\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/List_of_countries_by_exports_per_capita\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Foreign_trade_of_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Canada\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/China\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Mexico\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Japan\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Germany\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Federal_Reserve_System\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Manufacturing_in_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Post-industrial_society\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Tertiary_sector_of_the_economy\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Franchising\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/McDonald%27s\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Subway_(restaurant)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Coca-Cola\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Soft_drink\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Liquefied_natural_gas\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Sulfur\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Salt\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/National_Mining_Association\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Coal\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Mineral\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Beryllium\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Copper\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Lead\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Magnesium\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Zinc\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Titanium\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Agriculture_in_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/National_Agricultural_Statistics_Service\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Peanut\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Oat\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Rye\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Wheat\n", + "960\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Cotton\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Maize\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Barley\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Hay\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Helianthus\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Vegetable_oil\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/United_States_Department_of_Agriculture\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Beef\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Poultry\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Pork\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Milk\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Genetically_modified_food\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Crops\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Consumer_spending\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Labor_unions_in_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Western_Europe\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Global_Competitiveness_Report\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Welfare_state\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/List_of_statutory_minimum_employment_leave_by_country\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Paid_family_leave\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Papua_New_Guinea\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Suriname\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Liberia\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Workforce_productivity\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Luxembourg\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Norway\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Netherlands\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Great_Recession\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Congressional_Budget_Office\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Unemployment\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Consumer_confidence_index\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/United_States_housing_bubble\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Inflation\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/2000s_energy_crisis\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Tract_housing\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/San_Jose,_California\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Income_in_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Poverty_in_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Affluence_in_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/United_States_counties_by_per_capita_income\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Income_inequality_in_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Household_income\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/List_of_countries_by_average_wage\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Median_household_income\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Global_Food_Security_Index\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/European_Union\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/United_Nations_Development_Programme\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Human_Development_Index#2014_report\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Human_Development_Index#Inequality-adjusted_HDI\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Income_inequality_in_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Upper_class\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Wealth_in_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Wealth_inequality_in_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Great_Recession\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Household_debt\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Homelessness_in_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Hunger_in_the_United_States#Children\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Poverty_in_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/List_of_U.S._states_by_poverty_rate\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/New_Hampshire\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/American_Samoa\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Mississippi\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Transportation_in_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Interstate_Highway_System\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/National_Highway_System_(United_States)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Passenger_vehicles_in_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Sport_utility_vehicle\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/High-speed_rail_in_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Mass_transit_in_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Rail_transportation_in_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Amtrak\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Rail_transportation_in_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Light_rail_in_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/List_of_airlines_of_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Airline_Deregulation_Act\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/List_of_airports_in_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/American_Airlines\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/US_Airways\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/List_of_the_world%27s_busiest_airports_by_passenger_traffic\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Hartsfield%E2%80%93Jackson_Atlanta_International_Airport\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/O%27Hare_International_Airport\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Chicago\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/September_11_attacks\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Transportation_Security_Administration\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Energy_policy_of_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/North_American_Electric_Reliability_Corporation\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0\n", + "PAGE HAS NO LINKS: /wiki/Energy_in_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Kilowatt_hour\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/List_of_countries_by_energy_consumption_per_capita\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Renewable_energy\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Nuclear_power_in_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Three_Mile_Island_accident\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Drinking_water_supply_and_sanitation_in_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Water_scarcity\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Water_pollution_in_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Climate_change\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Combined_sewer_overflow\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Education_in_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/University_of_Virginia\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Thomas_Jefferson\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/State_school\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/United_States_Department_of_Education\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Kindergarten\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/First_grade\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Twelfth_grade\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/High_school\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Parochial_school\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Nonsectarian\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Private_school\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Homeschooling\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Public_university\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Lists_of_American_institutions_of_higher_education\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Community_college\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Bachelor%27s_degree\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Literacy\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Organisation_for_Economic_Co-operation_and_Development\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Student_debt\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Culture_of_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Alaska_Natives#Cultures\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Native_American_cultures_in_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Culture_of_the_Native_Hawaiians\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Social_class_in_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Public_holidays_in_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Tourism_in_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Multiculturalism\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Native_Americans_in_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Native_Hawaiians\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Alaska_Natives\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Western_culture\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/European_American\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/African-American_culture\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Asian_American\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Latin_American_culture\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Melting_pot\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Salad_bowl_(cultural_idea)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Protestantism\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Frontier\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Work_ethic\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Creed\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/American_Dream\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Socio-economic_mobility_in_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Classless_society\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Socialization\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Average_Joe\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Cuisine_of_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Apple_pie\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Wheat\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Thanksgiving_(United_States)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Turkey_(bird)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Thanksgiving_(United_States)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Mexican_cuisine\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Italian_cuisine\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Breakfast\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/British_cuisine\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/John_L._Hess\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Fast_food\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Drive-through\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Obesity_in_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/American_literature\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/American_philosophy\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Architecture_of_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Visual_art_of_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/American_classical_music\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Mark_Twain\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Comedy\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Nathaniel_Hawthorne\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Edgar_Allan_Poe\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Henry_David_Thoreau\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Mark_Twain\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Walt_Whitman\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Emily_Dickinson\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Herman_Melville\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Moby-Dick\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Adventures_of_Huckleberry_Finn\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/F._Scott_Fitzgerald\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/The_Great_Gatsby\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Harper_Lee\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/To_Kill_a_Mockingbird\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Great_American_Novel\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Nobel_Prize_in_Literature\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Bob_Dylan\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/William_Faulkner\n", + "647\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/John_Steinbeck\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Western_fiction\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Hardboiled\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Beat_Generation\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Postmodern_literature\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/John_Barth\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Thomas_Pynchon\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Don_DeLillo\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Transcendentalism\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Ralph_Waldo_Emerson\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/American_philosophy\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Charles_Sanders_Peirce\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/William_James\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/John_Dewey\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Pragmatism\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Willard_Van_Orman_Quine\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Richard_Rorty\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Noam_Chomsky\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Analytic_philosophy\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/John_Rawls\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Robert_Nozick\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Political_philosophy\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Cornel_West\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Judith_Butler\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Chicago_school_of_economics\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Milton_Friedman\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/James_M._Buchanan\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Thomas_Sowell\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Hudson_River_School\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Realism_(arts)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Thomas_Eakins\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Armory_Show\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Modern_art\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Georgia_O%27Keeffe\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Marsden_Hartley\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Abstract_expressionism\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Jackson_Pollock\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Willem_de_Kooning\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Pop_art\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Andy_Warhol\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Roy_Lichtenstein\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Postmodernism\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Frank_Lloyd_Wright\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Philip_Johnson\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Frank_Gehry\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Photography\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Alfred_Stieglitz\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Edward_Steichen\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Ansel_Adams\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Times_Square\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/New_York_City\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Broadway_theatre\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Theater_District,_Manhattan\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Theater_of_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/P._T._Barnum\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Manhattan\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Edward_Harrigan\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Musical_theatre\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Broadway_theatre\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Irving_Berlin\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Cole_Porter\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Stephen_Sondheim\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Traditional_pop_music\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Eugene_O%27Neill\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Pulitzer_Prize_for_Drama\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Tennessee_Williams\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Edward_Albee\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/August_Wilson\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Charles_Ives\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Henry_Cowell\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/John_Cage\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Aaron_Copland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/George_Gershwin\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Choreography\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Isadora_Duncan\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Martha_Graham\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Modern_dance\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/George_Balanchine\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Jerome_Robbins\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Music_of_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Grammy_Award\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/African-American_music\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Music_of_the_United_States\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0\n", + "PAGE HAS NO LINKS: /wiki/Folk_music\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Blues\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Old-time_music\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Popular_music\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Jazz\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Louis_Armstrong\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Duke_Ellington\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Country_music\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Rhythm_and_blues\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Elvis_Presley\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Chuck_Berry\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Rock_and_roll\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Bob_Dylan\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/American_folk_music_revival\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/James_Brown\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Funk\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Hip_hop_music\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/House_music\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Michael_Jackson\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Madonna_(entertainer)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Taylor_Swift\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Britney_Spears\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Katy_Perry\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Beyonc%C3%A9\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Jay-Z\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Eminem\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Kanye_West\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Metallica\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Eagles_(band)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Aerosmith\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/List_of_best-selling_music_artists\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Cinema_of_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Hollywood_Sign\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Los_Angeles\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Hollywood\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Los_Angeles\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Thomas_Edison\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Kinetoscope\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Sound_film\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/D._W._Griffith\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Filmmaker\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Film_grammar\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Walt_Disney\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Animation\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Merchandising\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/John_Ford\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/John_Huston\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Classical_Hollywood_cinema\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/John_Wayne\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Marilyn_Monroe\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Martin_Scorsese\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Francis_Ford_Coppola\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Robert_Altman\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/New_Hollywood\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Aftermath_of_World_War_II\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Steven_Spielberg\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/George_Lucas\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/James_Cameron\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Avatar_(2009_film)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/American_Film_Institute\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/AFI_100\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Orson_Welles\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Citizen_Kane\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Casablanca_(film)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/The_Godfather\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Gone_with_the_Wind_(1939_film)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Lawrence_of_Arabia_(film)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/The_Wizard_of_Oz_(1939_film)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/The_Graduate\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/On_the_Waterfront\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Schindler%27s_List\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Singin%27_in_the_Rain\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/It%27s_a_Wonderful_Life\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Sunset_Boulevard_(film)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Academy_Awards\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Academy_of_Motion_Picture_Arts_and_Sciences\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Golden_Globe_Awards\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Sports_in_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/American_football\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Baseball\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Basketball\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Ice_hockey\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/American_football\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/National_Football_League\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Super_Bowl\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Baseball\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/National_sport\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Major_League_Baseball\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Basketball\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Ice_hockey\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Major_professional_sports_leagues_in_the_United_States_and_Canada\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/National_Basketball_Association\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/National_Hockey_League\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/College_football\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/College_basketball\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Association_football\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/1994_FIFA_World_Cup\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/United_States_men%27s_national_soccer_team\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/United_States_women%27s_national_soccer_team\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/FIFA_Women%27s_World_Cup\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Major_League_Soccer\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Olympic_Games\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/2028_Summer_Olympics\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Summer_Olympic_Games\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Winter_Olympic_Games\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Basketball\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Volleyball\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Skateboarding\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Snowboarding\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Lacrosse\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Surfing\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Individual_sport\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Golf\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Auto_racing\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/NASCAR\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Rugby_union\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Media_of_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/American_Broadcasting_Company\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/NBC\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/CBS\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/American_Broadcasting_Company\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Fox_Broadcasting_Company\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Television_network\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Cable_television_in_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/NPR\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/PBS\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/U.S._Federal_Communications_Commission\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/The_Wall_Street_Journal\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/The_New_York_Times\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/USA_Today\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Gannett_Company\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/The_McClatchy_Company\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/The_Village_Voice\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/LA_Weekly\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Comic_strip\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/American_comic_book\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Superman\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Superhero\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/DC_Comics\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Web_portal\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Web_search_engine\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Facebook\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/YouTube\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Wikipedia\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Yahoo!\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/EBay\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Amazon.com\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Twitter\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Science_and_technology_in_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Science_policy_of_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/James_Irwin\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Moon\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Apollo_15\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Apollo_Lunar_Module\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Lunar_rover\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Space_Race\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Interchangeable_parts\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Machine_tool\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/American_system_of_manufacturing\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Electrification\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Assembly_line\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Mass_production\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Alexander_Graham_Bell\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Invention_of_the_telephone\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Thomas_Edison\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Research_institute\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Phonograph\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Incandescent_light_bulb\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Kinetoscope\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Show_business\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Ransom_E._Olds\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Henry_Ford\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Assembly_line\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Wright_brothers\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Wright_Flyer\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Fascism\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Nazism\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Albert_Einstein\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Enrico_Fermi\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/John_von_Neumann\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Manhattan_Project\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Atomic_Age\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Space_Race\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Materials_science\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Aeronautics\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Transistor\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Electronics\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Silicon_Valley\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Microprocessor\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Advanced_Micro_Devices\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0\n", + "PAGE HAS NO LINKS: /wiki/Intel\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Software\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Computer_hardware\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Adobe_Systems\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Apple_Inc.\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/IBM\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Microsoft\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Sun_Microsystems\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Personal_computer\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/ARPANET\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/United_States_Department_of_Defense\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/History_of_the_Internet\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Internet\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Personalization\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Computer\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Impact_factor\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Health_care_in_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Health_care_reform_in_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Health_insurance_in_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/New_York-Presbyterian_Hospital\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/New_York_City\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Hospital\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Weill_Cornell_Graduate_School_of_Medical_Sciences\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Hawaii\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/American_Samoa\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Obesity_in_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Diabetes_mellitus_type_2\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Coronary_artery_disease\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Lung_cancer\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Stroke\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Chronic_obstructive_pulmonary_disease\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Major_depressive_disorder\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Musculoskeletal_disorder\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Anxiety\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Risk_factor\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Hypertension\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Hyperglycemia\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Physical_inactivity\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Alzheimer%27s_disease\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Kidney_disease\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/List_of_Nobel_laureates_in_Physiology_or_Medicine\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/List_of_countries_by_total_health_expenditure_(PPP)_per_capita\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Universal_health_care\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Health_insurance\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Massachusetts\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Patient_Protection_and_Affordable_Care_Act\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Index_of_United_States-related_articles\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Lists_of_U.S._state_topics\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Outline_of_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Title_36_of_the_United_States_Code\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Official_language_of_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Hawaiian_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Hawaii\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Alaska_Native_languages\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Alaska\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Algonquian_languages\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Cherokee_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Sioux_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/French_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Maine\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Louisiana\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/New_Mexico\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Spanish_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Spanish_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Samoan_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Chamorro_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Carolinian_language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Time_in_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/United_States_Virgin_Islands\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/American_Samoa\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Guam\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Northern_Mariana_Islands\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Puerto_Rico\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/United_States_Virgin_Islands\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Baker_Island\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Howland_Island\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Jarvis_Island\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Johnston_Atoll\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Kingman_Reef\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Midway_Atoll\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Palmyra_Atoll\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Bajo_Nuevo_Bank\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Navassa_Island\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Serranilla_Bank\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Wake_Island\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Spanish_expeditions_to_the_Pacific_Northwest\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Sir_Joseph_Banks\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Makahiki\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Hawaiian_religion\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Lono\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/HMS_Resolution_(1771)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/HMS_Discovery_(1774)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/K%C5%AB\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Hawaiian_religion\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Ali%CA%BBi\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Kalani%CA%BB%C5%8Dpu%CA%BBu\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/K%C4%81nekap%C5%8Dlei\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Native_Hawaiians\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Kana%CA%BBina\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/U.s._ancestry\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/German_American\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Irish_American\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Mexican_American\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/English_American\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/White_American\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Race_(human_classification)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/African_American\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Minority_group\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Hispanic_and_Latino_Americans\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Asian_American\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Chinese_American\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Filipino_American\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Indian_American\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Fertility\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Replacement_rates\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Minority_group\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/American_Community_Survey\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/U.S._Census_Bureau\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Credit_rating\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Standard_%26_Poor%27s\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Fitch_Ratings\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Moody%27s_Investors_Service\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Stockholm_International_Peace_Research_Institute\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Arms_industry\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Lead\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Perchlorates\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Drinking_water_quality_in_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/United_States_Census_Bureau\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/International_Monetary_Fund\n", + "494\n", + "494\n", + "494\n", + "494\n", + "494\n", + "494\n", + "494\n", + "494\n", + "494\n", + "494\n", + "494\n", + "494\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Digital_object_identifier\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/JSTOR\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Bibcode\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Digital_object_identifier\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/PubMed_Identifier\n", + "494\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Michael_R._Waters\n", + "494\n", + "494\n", + "494\n", + "494\n", + "494\n", + "494\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Vanessa_Collingridge\n", + "494\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/JSTOR\n", + "494\n", + "494\n", + "494\n", + "494\n", + "494\n", + "494\n", + "494\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Wayback_Machine\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Cambridge_University_Press\n", + "494\n", + "494\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/W._W._Norton\n", + "494\n", + "494\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Routledge\n", + "494\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Rowman_Altamira\n", + "494\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Courier_Corporation\n", + "494\n", + "494\n", + "494\n", + "494\n", + "494\n", + "494\n", + "494\n", + "494\n", + "494\n", + "494\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Martin_Ridge_(historian)\n", + "494\n", + "494\n", + "494\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/University_of_North_Carolina_Press\n", + "494\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/McFarland_%26_Company\n", + "494\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Rowman_%26_Littlefield\n", + "494\n", + "494\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Jeremy_Black_(historian)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Indiana_University_Press\n", + "494\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/University_of_Nebraska_Press\n", + "494\n", + "494\n", + "494\n", + "494\n", + "494\n", + "494\n", + "494\n", + "494\n", + "494\n", + "494\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/CliffsNotes\n", + "494\n", + "494\n", + "494\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Alfred_A._Knopf\n", + "494\n", + "494\n", + "494\n", + "494\n", + "494\n", + "494\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Michael_Collins_(astronaut)\n", + "494\n", + "494\n", + "494\n", + "494\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Henry_Kissinger\n", + "494\n", + "494\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Charles_Krauthammer\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Encyclop%C3%A6dia_Britannica\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Encyclop%C3%A6dia_Britannica,_Inc.\n", + "494\n", + "494\n", + "494\n", + "494\n", + "494\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/George_W._Bush\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Peter_Feaver\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Foreign_Policy\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/NBC_News\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Peter_J._Wallison\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Encounter_Books\n", + "494\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Financial_Crisis_Inquiry_Commission\n", + "494\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/John_B._Taylor\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/National_Bureau_of_Economic_Research\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/The_Wall_Street_Journal\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Dow_Jones_%26_Company\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/The_New_York_Times\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0\n", + "PAGE HAS NO LINKS: /wiki/The_New_York_Times_Company\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Initiative_on_Global_Markets\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/University_of_Chicago\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Digital_object_identifier\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Congressional_Budget_Office\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/CNN\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Political_Science_Quarterly\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Digital_object_identifier\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/United_States_Military_Academy\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Peter_Baker_(author)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/The_New_York_Times\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/The_New_York_Times_Company\n", + "494\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Digital_object_identifier\n", + "494\n", + "494\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/United_States_Census_Bureau\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Office_of_Immigration_Statistics\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Pew_Research_Center\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/The_Plain_Dealer\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/The_Plain_Dealer\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/United_States_Census_Bureau\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Digital_object_identifier\n", + "494\n", + "494\n", + "494\n", + "494\n", + "494\n", + "494\n", + "494\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Modern_Language_Association\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Pew_Research_Center\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Pew_Research_Center\n", + "494\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/National_Public_Radio\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/All_Things_Considered\n", + "494\n", + "494\n", + "494\n", + "494\n", + "494\n", + "494\n", + "494\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Serranilla_Bank\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Bajo_Nuevo_Bank\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Title_8_of_the_United_States_Code\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Title_8_of_the_United_States_Code\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Title_8_of_the_United_States_Code\n", + "494\n", + "494\n", + "494\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Clerk_of_the_United_States_House_of_Representatives\n", + "494\n", + "494\n", + "494\n", + "494\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/The_New_York_Times\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Digital_object_identifier\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/The_Heritage_Foundation\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Stockholm_International_Peace_Research_Institute\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Frontline_(magazine)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/The_Hindu_Group\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/International_Standard_Serial_Number\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/FiveThirtyEight\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/NPR\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/The_American_Journal_of_Medicine\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Digital_object_identifier\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Reuters\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Death_Penalty_Information_Center\n", + "494\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/United_States_National_Research_Council\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/National_Academies_Press\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Human_Rights_Watch\n", + "494\n", + "494\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/The_Washington_Post\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/International_Centre_for_Prison_Studies\n", + "494\n", + "494\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Bernard_Harcourt\n", + "494\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Digital_object_identifier\n", + "494\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/The_Times-Picayune\n", + "494\n", + "494\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Center_for_Economic_and_Policy_Research\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/The_New_York_Times\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Digital_object_identifier\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Organisation_for_Economic_Co-operation_and_Development\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/OECD_Better_Life_Index\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Economic_Policy_Institute\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Tony_Atkinson\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Thomas_Piketty\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Emmanuel_Saez\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Digital_object_identifier\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Organisation_for_Economic_Co-operation_and_Development\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Emmanuel_Saez\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/University_of_California,_Berkeley\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Perspectives_on_Politics\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Digital_object_identifier\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Larry_Bartels\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Digital_object_identifier\n", + "494\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Political_Research_Quarterly\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Digital_object_identifier\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Social_Science_Research_Network\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Digital_object_identifier\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Thomas_Piketty\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Capital_in_the_Twenty-First_Century\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Harvard_University_Press\n", + "494\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/CNNMoney\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Federal_Reserve_Bank_of_New_York\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/United_States_Census_Bureau\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Philip_Alston\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Office_of_the_United_Nations_High_Commissioner_for_Human_Rights\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/The_Economist\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Cato_Institute\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/International_Energy_Agency\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/United_States_Environmental_Protection_Agency\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Mother_Nature_Network\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/NPR\n", + "494\n", + "494\n", + "494\n", + "494\n", + "494\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Samuel_P._Huntington\n", + "494\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/American%27s_Creed\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/William_Tyler_Page\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Economic_Policy_Institute\n", + "494\n", + "494\n", + "494\n", + "494\n", + "494\n", + "494\n", + "494\n", + "494\n", + "494\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Arteriosclerosis,_Thrombosis,_and_Vascular_Biology\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Harold_Bloom\n", + "494\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Digital_object_identifier\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/International_Standard_Serial_Number\n", + "494\n", + "494\n", + "494\n", + "494\n", + "494\n", + "494\n", + "494\n", + "494\n", + "494\n", + "494\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/International_Standard_Serial_Number\n", + "494\n", + "494\n", + "494\n", + "494\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Wayback_Machine\n", + "494\n", + "494\n", + "494\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/USA_Today\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Los_Angeles_Times\n", + "494\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Les_Daniels\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Titan_Books\n", + "494\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/David_A._Hounshell\n", + "494\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Library_of_Congress_Control_Number\n", + "494\n", + "494\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/The_New_York_Times\n", + "494\n", + "494\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Digital_object_identifier\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Digital_object_identifier\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/PubMed_Central\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/PubMed_Identifier\n", + "494\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Arteriosclerosis,_Thrombosis,_and_Vascular_Biology\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Digital_object_identifier\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/International_Standard_Serial_Number\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/PubMed_Identifier\n", + "494\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Edward_E._Baptist\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Basic_Books\n", + "494\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Digital_object_identifier\n", + "494\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Digital_object_identifier\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/PubMed_Identifier\n", + "494\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Johns_Hopkins_University_Press\n", + "494\n", + "494\n", + "494\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Texas_A%26M_University_Press\n", + "494\n", + "494\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/John_Wiley_%26_Sons\n", + "494\n", + "494\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/The_Atlantic\n", + "494\n", + "494\n", + "494\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/John_Steele_Gordon\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/HarperCollins\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Greenwood_Publishing_Group\n", + "494\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Routledge\n", + "494\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Westminster,_Maryland\n", + "494\n", + "494\n", + "494\n", + "494\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Infobase_Publishing\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Infobase_Publishing\n", + "494\n", + "494\n", + "494\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Robert_Leckie_(author)\n", + "494\n", + "494\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Melvyn_P._Leffler\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Odd_Arne_Westad\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Cambridge_University_Press\n", + "494\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Rowman_%26_Littlefield\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Columbia_University\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/University_of_Massachusetts_Press\n", + "494\n", + "494\n", + "494\n", + "494\n", + "494\n", + "494\n", + "494\n", + "494\n", + "494\n", + "494\n", + "494\n", + "494\n", + "494\n", + "494\n", + "494\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/University_of_Illinois_Press\n", + "494\n", + "494\n", + "494\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/David_Stannard\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Oxford_University_Press\n", + "494\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/JSTOR\n", + "494\n", + "494\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Digital_object_identifier\n", + "494\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Howard_Zinn\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/A_People%27s_History_of_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Harper_Perennial\n", + "494\n", + "494\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Journal_of_Cold_War_Studies\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/President_and_Fellows_of_Harvard_College\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Massachusetts_Institute_of_Technology\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Digital_object_identifier\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/The_World_Factbook\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Central_Intelligence_Agency\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0\n", + "PAGE HAS NO LINKS: /wiki/BBC_News\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/International_Futures\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/History_of_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Timeline_of_United_States_history\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Pre-Columbian_era\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Colonial_history_of_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Thirteen_Colonies\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Colonial_American_military_history\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Continental_Congress\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/American_Revolution\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/American_Revolutionary_War\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/American_frontier\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/America%27s_Critical_Period\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Timeline_of_drafting_and_ratification_of_the_United_States_Constitution\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Federalist_Era\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/War_of_1812\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/United_States_territorial_acquisitions\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Territorial_evolution_of_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Mexican%E2%80%93American_War\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/American_Civil_War\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Reconstruction_Era\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/American_Indian_Wars\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Gilded_Age\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Progressive_Era\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/African-American_civil_rights_movement_(1865%E2%80%931896)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/African-American_civil_rights_movement_(1896%E2%80%931954)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/African-American_civil_rights_movement_(1954%E2%80%931968)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Spanish%E2%80%93American_War\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/American_imperialism\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/History_of_the_United_States_(1865%E2%80%931918)#World_War_I\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Roaring_Twenties\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Great_Depression\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Military_history_of_the_United_States_during_World_War_II\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/United_States_home_front_during_World_War_II\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/German_American_Bund\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/American_Century\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Cold_War\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Korean_War\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Space_Race\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Second-wave_feminism\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Vietnam_War\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/History_of_the_United_States_(1991%E2%80%932008)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/War_on_Terror\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/War_in_Afghanistan_(2001%E2%80%93present)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Iraq_War\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/History_of_the_United_States_(2008%E2%80%93present)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Outline_of_the_United_States#History_of_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Demographic_history_of_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Timeline_of_United_States_discoveries\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Economic_history_of_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/History_of_United_States_debt_ceiling\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Timeline_of_United_States_inventions\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Timeline_of_United_States_inventions_(before_1890)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Timeline_of_United_States_inventions_(1890%E2%80%931945)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Timeline_of_United_States_inventions_(1946%E2%80%9391)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Timeline_of_United_States_inventions_(after_1991)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Military_history_of_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Postage_stamps_and_postal_history_of_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Technological_and_industrial_history_of_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Geography_of_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/United_States_territory\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/County_(United_States)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Washington,_D.C.\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Federal_enclave\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Indian_reservation\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Territories_of_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/United_States_Minor_Outlying_Islands\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Lists_of_populated_places_in_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/U.S._state\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/List_of_earthquakes_in_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/List_of_extreme_points_of_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/List_of_islands_of_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/List_of_mountains_of_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/List_of_mountain_peaks_of_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/List_of_mountain_ranges#United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Appalachian_Mountains\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Rocky_Mountains\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/National_Park_Service\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/List_of_areas_in_the_United_States_National_Park_System\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/List_of_regions_of_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/East_Coast_of_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/West_Coast_of_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Great_Plains\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Gulf_Coast_of_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Mid-Atlantic_(United_States)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Midwestern_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/New_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Pacific_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Central_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Eastern_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Northern_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Northeastern_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Northwestern_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Southern_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Southeastern_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Southwestern_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Western_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/List_of_rivers_of_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Colorado_River\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Columbia_River\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Mississippi_River\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Missouri_River\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Ohio_River\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Rio_Grande\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Yukon_River\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Time_in_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Drinking_water_supply_and_sanitation_in_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Politics_of_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Federal_government_of_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Cabinet_of_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/United_States_federal_civil_service\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/United_States_federal_executive_departments\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Executive_Office_of_the_President_of_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Independent_agencies_of_the_United_States_government\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Federal_law_enforcement_in_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/President_of_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Public_policy_of_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/United_States_Congress\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/United_States_House_of_Representatives\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Current_members_of_the_United_States_House_of_Representatives\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Speaker_of_the_United_States_House_of_Representatives\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/United_States_Senate\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Current_members_of_the_United_States_Senate\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/President_pro_tempore_of_the_United_States_Senate\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Vice_President_of_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Federal_judiciary_of_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/United_States_courts_of_appeals\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/United_States_district_court\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Supreme_Court_of_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Law_of_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/United_States_Bill_of_Rights\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Civil_liberties_in_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Code_of_Federal_Regulations\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/United_States_Constitution\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Federalism_in_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Federal_preemption\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Separation_of_powers_under_the_United_States_Constitution\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Federal_Reporter\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/United_States_Code\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/United_States_Reports\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/United_States_Intelligence_Community\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0\n", + "PAGE HAS NO LINKS: /wiki/Central_Intelligence_Agency\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Defense_Intelligence_Agency\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Federal_Bureau_of_Investigation\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/National_Geospatial-Intelligence_Agency\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/National_Reconnaissance_Office\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/National_Security_Agency\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Director_of_National_Intelligence\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Uniformed_services_of_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/United_States_Armed_Forces\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/United_States_Army\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/United_States_Marine_Corps\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/United_States_Navy\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/United_States_Air_Force\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/United_States_Coast_Guard\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/National_Guard_of_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/NOAA_Commissioned_Officer_Corps\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/United_States_Public_Health_Service_Commissioned_Corps\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/51st_state\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Political_status_of_Puerto_Rico\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/District_of_Columbia_statehood_movement\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Elections_in_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Electoral_College_(United_States)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Foreign_relations_of_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Foreign_policy_of_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Hawaiian_sovereignty_movement\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Political_ideologies_in_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Anti-Americanism\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/American_exceptionalism\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/American_nationalism\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Local_government_in_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Political_parties_in_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Democratic_Party_(United_States)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Republican_Party_(United_States)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Third_party_(United_States)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Red_states_and_blue_states\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Purple_America\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/List_of_federal_political_scandals_in_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/State_governments_of_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Governor_(United_States)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/State_legislature_(United_States)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/State_court_(United_States)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Uncle_Sam\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Economy_of_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Economy_of_the_United_States_by_sector\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Agriculture_in_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Banking_in_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Communications_in_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Energy_in_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Insurance_in_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Manufacturing_in_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Mining_in_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Tourism_in_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Foreign_trade_of_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Transportation_in_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/List_of_companies_of_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/List_of_companies_of_the_United_States_by_state\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/United_States_dollar\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/List_of_exports_of_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/United_States_federal_budget\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Federal_Reserve_System\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Financial_position_of_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Labor_unions_in_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/National_debt_of_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Social_programs_in_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Taxation_in_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Unemployment_in_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Wall_Street\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Society_of_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Culture_of_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Americana\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Architecture_of_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Cinema_of_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Cuisine_of_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Dance_in_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Demography_of_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Education_in_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Family_structure_in_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Fashion_in_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Flag_of_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Folklore_of_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Languages_of_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/American_English\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Indigenous_languages_of_the_Americas\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/American_Sign_Language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Black_American_Sign_Language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Hawai%27i_Sign_Language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Plains_Indian_Sign_Language\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Arabic_language_in_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Chinese_language_and_varieties_in_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/French_language_in_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/German_language_in_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Italian_language_in_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Russian_language_in_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Spanish_language_in_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/American_literature\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Media_of_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/History_of_American_journalism\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Internet_in_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/History_of_American_newspapers\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Radio_in_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Television_in_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Music_of_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Naming_in_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Americans\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/American_philosophy\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Public_holidays_in_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Religion_in_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Sexuality_in_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Sports_in_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Theater_in_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Visual_art_of_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Social_class_in_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Affluence_in_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/American_Dream\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Educational_attainment_in_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Homelessness_in_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Home-ownership_in_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Household_income_in_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Income_inequality_in_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/American_middle_class\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Personal_income_in_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Poverty_in_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Professional_and_working_class_conflict_in_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Standard_of_living_in_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Wealth_in_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Social_issues_in_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Ages_of_consent_in_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Capital_punishment_in_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Crime_in_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Incarceration_in_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Criticism_of_the_United_States_government\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Discrimination_in_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Affirmative_action_in_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Antisemitism_in_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Intersex_rights_in_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Islamophobia_in_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/LGBT_rights_in_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Racism_in_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Same-sex_marriage_in_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Federal_drug_policy_of_the_United_States\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0\n", + "PAGE HAS NO LINKS: /wiki/Energy_policy_of_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Environmental_movement_in_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Gun_politics_in_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Health_care_in_the_United_States\n", + "671\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Health_insurance_in_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Hunger_in_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Obesity_in_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Tobacco_in_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Human_rights_in_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Immigration_to_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Illegal_immigration_to_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/International_rankings_of_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/National_security_of_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Mass_surveillance_in_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Terrorism_in_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Separation_of_church_and_state_in_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Outline_of_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Index_of_United_States-related_articles\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Virtual_International_Authority_File\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Library_of_Congress_Control_Number\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/International_Standard_Name_Identifier\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Integrated_Authority_File\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/LIBRIS\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Syst%C3%A8me_universitaire_de_documentation\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Biblioth%C3%A8que_nationale_de_France\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Historical_Dictionary_of_Switzerland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/National_Library_of_Australia\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/National_Diet_Library\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Biblioteca_Nacional_de_Espa%C3%B1a\n", + "1834\n", + "1834\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Main_Page\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Main_Page\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/English_overseas_possessions\n", + "469\n", + "1830\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/British_Empire\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Angevin_Empire\n", + "548\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Acts_of_Union_1707\n", + "548\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Kingdom_of_Scotland\n", + "469\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/British_Empire\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Naval_warfare\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Dutch_Republic\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Kingdom_of_Portugal\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Kingdom_of_Spain\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Ireland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/North_America\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Bermuda\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/West_Indies\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Trading_post\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Factory_(trading_post)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/East_Indies\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Bantam_(city)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Indian_subcontinent\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Surat\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Fort_St._George_(India)\n", + "487\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Catherine_of_Braganza\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Dowry\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Portuguese_Empire\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/English_Tangier\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/North_Africa\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Mumbai\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Newfoundland_Colony\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Virginia_Colony\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Province_of_Maine\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Plymouth_Colony\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Province_of_New_Hampshire\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Salem,_Massachusetts\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Massachusetts_Bay_Colony\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Nova_Scotia\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Connecticut_Colony\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/New_Haven_Colony\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Province_of_Maryland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Rhode_Island_Colony\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/New_Netherland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/New_Sweden\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Province_of_New_York\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Province_of_New_Jersey\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Delaware\n", + "1\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/John_Cabot\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Matthew_(ship)\n", + "548\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/%C3%86thelstan\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/House_of_Kn%C3%BDtlinga\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Personal_union\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Scandinavia\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/William_the_Conqueror\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Duke_of_Normandy\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Norman_conquest_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Crown_land\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Middle_Ages\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/France\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Angevin_Empire\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/British_Isles\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Plantagenet\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Hundred_Years%27_War\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Kingdom_of_France\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Pale_of_Calais\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Channel_Islands\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Duchy_of_Normandy\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/The_Crown\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/British_Isles\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Norman_invasion_of_Ireland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Ireland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Lordship_of_Ireland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Plantation_of_Ulster\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/United_Kingdom_of_Great_Britain_and_Ireland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Voyages_of_Christopher_Columbus\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Christopher_Columbus\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/West_Indies\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Portuguese_Empire\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Spanish_Empire\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Henry_VII_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/John_Cabot\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Atlantic_Ocean\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Maluku_Islands\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Asia\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/North_West_Passage\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Newfoundland_(island)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Colony\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/English_Reformation\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Privateer\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/John_Hawkins_(naval_commander)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Francis_Drake\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/West_Africa\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Anglo-Spanish_War_(1585)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/New_World\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Richard_Hakluyt\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/John_Dee\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Portugal\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Brazil\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/China\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/French_colonization_of_the_Americas\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Saint_Lawrence_River\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/New_France\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Elizabethan_era\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Elizabeth_I_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/North_America\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Plantation_of_Ulster\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/West_Indies\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Elizabeth_I_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Muscovy_Company\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Martin_Frobisher\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Blackwall,_London\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/North_West_Passage\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Frobisher_Bay\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Baffin_Island\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Church_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Greenland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Francis_Drake\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Circumnavigation\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Elizabeth_Island_(Cape_Horn)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Cape_Horn\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Straits_of_Magellan\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/California\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/New_Albion\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Humphrey_Gilbert\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Newfoundland_(island)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/St._John%27s,_Newfoundland_and_Labrador\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/League_(unit)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Walter_Raleigh\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Charter\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/North_America\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Virginia_Colony\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Privateer\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Spain\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Orinoco_River\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/South_America\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/El_Dorado\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Roanoke_Colony\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Charter\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/East_India_Company\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/East_Indies\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Bantam_(city)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Java\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Surat\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/India\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Bangladesh\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/West_Indies\n", + "54\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Proprietary_Governor\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Charter\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Joint_stock_company\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/London_Company\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0\n", + "PAGE HAS NO LINKS: /wiki/Jamestown,_Virginia\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Bermuda\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Corporate_spin-off\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Somers_Isles_Company\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/London_and_Bristol_Company\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Cuper%27s_Cove\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/St._John%27s,_Newfoundland_and_Labrador\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Charter_colony\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Bermuda\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/British_Overseas_Territory\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Sea_Venture\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/St._George%27s,_Bermuda\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/New_World\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Privateer#Bermudians\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/West_Indies\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Chesapeake_Bay\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/New_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Barbados\n", + "487\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Royal_African_Company\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Atlantic_slave_trade\n", + "460\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Portugal\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Catherine_of_Braganza\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/English_Tangier\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Bombay\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/India\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Fort_Amsterdam\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Dutch_colonization_of_the_Americas\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/New_Netherland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/New_Amsterdam\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Second_Anglo%E2%80%93Dutch_War\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Province_of_New_York\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/New_Sweden\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Delaware\n", + "1\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Treaty_of_Westminster_(1674)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Exchequer\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Privy_Council_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Ad_hoc\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Board_of_Trade\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Tobacco\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Sugar\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/John_Smith_(explorer)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/St._John%27s,_Newfoundland_and_Labrador\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Humphrey_Gilbert\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Roanoke_Colony\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/North_Carolina\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Virginia_Dare\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Cuttyhunk\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Elizabeth_Islands\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Massachusetts\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Bartholomew_Gosnold\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Virginia_Company\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Crown_colony\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Colony_of_Virginia\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Jamestown,_Virginia\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/London_Company\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Bermuda\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/North_Atlantic\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Virginia_Company_of_London\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Flagship\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Sea_Venture\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/St._George%27s,_Bermuda\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Somers_Isles_Company\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/House_of_Assembly_of_Bermuda\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Henricus\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Indian_massacre_of_1622\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Popham_Colony\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Plymouth_Company\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Kennebec_River\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Maine\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/38th_parallel_north\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Chesapeake_Bay\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/45th_parallel_north\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/St._John%27s,_Newfoundland_and_Labrador\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Humphrey_Gilbert\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Society_of_Merchant_Venturers\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Bristol\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Newfoundland_and_Labrador\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Cuper%27s_Cove\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Subdivision_1I,_Newfoundland_and_Labrador#Bristol's_Hope\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/London_and_Bristol_Company\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Newfoundland_and_Labrador\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Cambriol\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/William_Vaughan_(writer)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Newfoundland_Company\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Avalon_Peninsula\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Calvert,_Newfoundland_and_Labrador\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Placentia_Bay\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Renews,_Newfoundland_and_Labrador\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Plymouth_Council_for_New_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Plymouth_Colony\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Massachusetts_Bay_Colony\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Ferryland,_Newfoundland_and_Labrador\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/George_Calvert,_1st_Baron_Baltimore\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Province_of_Maine\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Massachusetts_Bay_Colony\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/South_Falkland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Newfoundland_and_Labrador\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Henry_Cary,_1st_Viscount_Falkland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Province_of_New_Hampshire\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/New_Hampshire\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/New_Hampshire_Grants\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Gloucester,_Massachusetts\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Dorchester_Company\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Salem,_Massachusetts\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Massachusetts_Bay_Colony\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Nova_Scotia\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Nova_Scotia\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Connecticut_Colony\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Connecticut\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Province_of_Maryland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Maryland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Province_of_New_Albion\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Saybrook_Colony\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Rhode_Island_Colony\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/New_Haven_Colony\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Gardiners_Island\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/East_Hampton_(town),_New_York\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/New_England_Confederation\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Massachusetts_Bay_Colony\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Plymouth_Colony\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Connecticut_Colony\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/New_Haven_Colony\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Puritan\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Native_Americans_in_the_United_States\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Indentured_servant\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Province_of_New_York\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Province_of_New_Jersey\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/West_Jersey\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/East_Jersey\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Rupert%27s_Land\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Prince_Rupert_of_the_Rhine\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Nonsuch_(1650_ship)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Hudson_Bay\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Waskaganish,_Quebec\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Rupert_River\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Hudson%27s_Bay_Company\n", + "31\n", + "1\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Delaware_Colony\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Delaware\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Province_of_Carolina\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Albemarle_Settlements\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Province_of_North_Carolina\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/North_Carolina\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Province_of_South_Carolina\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/South_Carolina\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/British_colony\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Province_of_Georgia\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Georgia_(U.S._state)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Barbados\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Jamestown,_Virginia\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Saint_Kitts\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Kalinago\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Nevis\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Providence_Island_colony\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Providence_Island_Company\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Spanish_capture_of_Providencia\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Montserrat\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Antigua\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Saint_Kitts\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/The_Bahamas\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Eleutheran_Adventurers\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Bermuda\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Eleuthera\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Anguilla\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Treaty_of_Breda_(1667)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Jamaica\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Barbuda\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Cayman_Islands\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Francis_Drake\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Spanish_Inquisition\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Oliver_Cromwell\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Treaty_of_Madrid_(1670)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Elizabeth_Island_(Cape_Horn)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Cape_Horn\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Straits_of_Magellan\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/British_Guiana\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Gold\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Mosquito_Coast\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Providence_Island_Company\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Fort_St._George,_India\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Chennai\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0\n", + "PAGE HAS NO LINKS: /wiki/Bantam_(city)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/East_Indies\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/City_of_London\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/East_India_Company\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Factory_(trading_post)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Java\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Surat\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Bombay\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Machilipatnam\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Coromandel_Coast\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Run_(island)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Nathaniel_Courthope\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Dutch_East_India_Company\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/James_I_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Treaty_of_Westminster_(1654)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Second_Anglo-Dutch_War\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Manhattan\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Fort_St._George_(India)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Chennai\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/George_Town,_Chennai\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Mumbai\n", + "487\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Catherine_of_Braganza\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/John_IV_of_Portugal\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Mahim\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Sion,_Mumbai\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Dharavi\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Wadala_Road\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/East_India_Company\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Surat\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Bombay_Presidency\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/British_Bencoolen\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Black_pepper\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Garrison\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Sumatra\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Kolkata\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Hooghly_River\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Bengal\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Kunta_Kinteh_Island\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Fort_Gambia\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Gambia_River\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Ant%C3%B3nio,_Prior_of_Crato\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/List_of_Portuguese_monarchs\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Letters_patent\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/James_I_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/The_Gambia\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Gold_Coast_(British_colony)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Fort_Gambia\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Kunta_Kinteh_Island\n", + "460\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Gold\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Ivory\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Slave\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Royal_African_Company\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/English_Tangier\n", + "487\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Catherine_of_Braganza\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Saint_Helena\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/South_Atlantic\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/East_India_Company\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Oliver_Cromwell\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Ascension_Island\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Tristan_da_Cunha\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Capture_of_Gibraltar\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/George_Rooke\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Royal_Navy\n", + "469\n", + "469\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Company_of_Scotland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Evolution_of_the_British_Empire\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Bermuda\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Turks_and_Caicos\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Cayman_Islands\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Montserrat\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Anguilla\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Saint_Helena\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Saint_Helena,_Ascension_and_Tristan_da_Cunha\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Gibraltar\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/First_European_colonization_wave\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Historiography_of_the_British_Empire\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Plantations_of_Ireland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Scottish_colonization_of_the_Americas\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Thirteen_Colonies\n", + "494\n", + "494\n", + "494\n", + "494\n", + "494\n", + "494\n", + "494\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Francis_Fletcher_(clergyman)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Hakluyt_Society\n", + "494\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/University_of_Toronto\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Wayback_Machine\n", + "494\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Encyclop%C3%A6dia_Britannica\n", + "494\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Paul_O%27Neill_(author)\n", + "494\n", + "494\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Edward_John_Payne\n", + "548\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/History_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Timeline_of_English_history\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/History_of_Anglo-Saxon_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Heptarchy\n", + "548\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Norman_conquest_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Anglo-Norman_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Angevin_Empire\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/England_in_the_Late_Middle_Ages\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Wars_of_the_Roses\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Tudor_period\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Stuart_period_(England)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/English_Renaissance\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/English_Reformation\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Elizabethan_era\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Union_of_the_Crowns\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Gunpowder_Plot\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Jacobean_era\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/English_Civil_War\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Interregnum_(England)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Commonwealth_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/The_Protectorate\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Restoration_(England)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Popish_Plot\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Glorious_Revolution\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Maritime_history_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Economy_of_England_in_the_Middle_Ages\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Acts_of_Union_1707\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Dynasty\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/House_of_Wessex\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/House_of_Kn%C3%BDtlinga\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/House_of_Normandy\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Angevin_kings_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/House_of_Plantagenet\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/House_of_Lancaster\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/House_of_York\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Tudor_dynasty\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/House_of_Stuart\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/House_of_Orange-Nassau\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Politics_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/English_law\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Witenagemot\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Curia_regis\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Parliament_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/House_of_Lords_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/House_of_Commons_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/List_of_English_monarchs\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/English_Council_of_State\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Lord_Protector\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Peerage_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Privy_Council_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/List_of_English_ministries\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Secretary_of_State_(England)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Governance_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Elizabethan_government\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Star_Chamber\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Whiggism\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Tory\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/List_of_Acts_of_the_Parliament_of_England_to_1483\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/List_of_Acts_of_the_Parliament_of_England,_1485%E2%80%931601\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/List_of_Acts_of_the_Parliament_of_England,_1603%E2%80%9341\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/List_of_Ordinances_and_Acts_of_the_Parliament_of_England,_1642%E2%80%9360\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/List_of_Acts_of_the_Parliament_of_England,_1660%E2%80%9399\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/List_of_Acts_of_the_Parliament_of_England,_1700%E2%80%9306\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Military_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Anglo-Saxon_military_organization\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Anglo-Saxon_warfare\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/English_Army\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/New_Model_Army\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Royal_Navy\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/List_of_ship_names_of_the_Royal_Navy\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/History_of_the_Royal_Navy\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Geography_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Historic_counties_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/List_of_islands_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/List_of_places_in_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/List_of_towns_in_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/List_of_castles_in_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/List_of_palaces#England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Demography_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/English_language_in_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/English_people\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/List_of_English_people\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Culture_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Religion_in_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Church_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/English_cuisine\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/English_folklore\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Morris_dance\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0\n", + "PAGE HAS NO LINKS: /wiki/English_country_dance\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Architecture_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Anglo-Saxon_architecture\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/English_Gothic_architecture\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Tudor_architecture\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Elizabethan_architecture\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Jacobean_architecture\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Queen_Anne_style_architecture\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Georgian_architecture\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/National_symbols_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Flag_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/List_of_English_flags\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/English_heraldry\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Royal_Arms_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/College_of_Arms\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Royal_Badges_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Royal_Supporters_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Royal_Standards_of_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Crown_Jewels_of_the_United_Kingdom\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Tudor_rose\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Oak\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Saint_George\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/St_George%27s_Day_in_England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Empire\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Ancient_history\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Akkadian_Empire\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/New_Kingdom_of_Egypt\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Neo-Assyrian_Empire\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Neo-Babylonian_Empire\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Ancient_Carthage\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/History_of_China#Imperial_era\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Qin_dynasty\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Han_dynasty\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Jin_dynasty_(265%E2%80%93420)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Northern_Wei\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Hellenistic_period\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Macedonia_(ancient_kingdom)#Empire\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Seleucid_Empire\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Hittites\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/History_of_India\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Nanda_Empire\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Maurya_Empire\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Satavahana_dynasty\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Shunga_Empire\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Gupta_Empire\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Empire_of_Harsha\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/History_of_Iran\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Medes\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Achaemenid_Empire\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Parthian_Empire\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Sasanian_Empire\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Kushan_Empire\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/History_of_Mongolia\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Xianbei_state\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Xiongnu\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Roman_Empire\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Western_Roman_Empire\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Byzantine_Empire\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Teotihuacan\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Post-classical_history\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Caliphate\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Rashidun_Caliphate\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Umayyad_Caliphate\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Abbasid_Caliphate\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Fatimid_Caliphate\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Caliphate_of_C%C3%B3rdoba\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Crown_of_Aragon\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Angevin_Empire\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Aztec_Empire\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Benin_Empire\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Bornu_Empire\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Bruneian_Empire\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Bulgarian_Empire\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/First_Bulgarian_Empire\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Second_Bulgarian_Empire\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Byzantine_Empire\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Empire_of_Nicaea\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Empire_of_Trebizond\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Carolingian_Empire\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/History_of_China#Imperial_era\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Sui_dynasty\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Tang_dynasty\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Song_dynasty\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Yuan_dynasty\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Ethiopian_Empire\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Zagwe_dynasty\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Solomonic_dynasty\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Empire_of_Georgia\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Hunnic_Empire\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Inca_Empire\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/History_of_India\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Chola_dynasty\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Gurjara-Pratihara\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Pala_Empire\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Eastern_Ganga_dynasty\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Delhi_Sultanate\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Vijayanagara_Empire\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/History_of_Iran\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Tahirid_dynasty\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Samanid_Empire\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Buyid_dynasty\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Sallarid_dynasty\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Ziyarid_dynasty\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Kanem_Empire\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Khmer_Empire\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Latin_Empire\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Majapahit\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Malacca_Sultanate\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Mali_Empire\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Mongol_Empire\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Yuan_dynasty\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Golden_Horde\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Chagatai_Khanate\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Ilkhanate\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/History_of_Morocco\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Idrisid_dynasty\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Almoravid_dynasty\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Almohad_Caliphate\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Marinid_dynasty\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/North_Sea_Empire\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Oyo_Empire\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Holy_Roman_Empire\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Serbian_Empire\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/History_of_Somalia\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Ajuran_Sultanate\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Sultanate_of_Ifat\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Adal_Sultanate\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Sultanate_of_Mogadishu\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Warsangali_Sultanate\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Songhai_Empire\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Srivijaya\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Tibetan_Empire\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Turko-Persian_tradition\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Ghaznavids\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Seljuk_Empire\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Khwarazmian_dynasty\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Timurid_Empire\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/History_of_Vietnam\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Ly_Dynasty\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Tran_Dynasty\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Later_Le_Dynasty\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Ghana_Empire\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Modern_history\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Ashanti_Empire\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Austrian_Empire\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Austria-Hungary\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Empire_of_Brazil\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Central_African_Empire\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/History_of_China#Imperial_era\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Ming_dynasty\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Qing_dynasty\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Empire_of_China_(1915%E2%80%931916)\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Manchukuo\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Ethiopian_Empire\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/History_of_France\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/First_French_Empire\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Second_French_Empire\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/History_of_Germany\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Holy_Roman_Empire\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/German_Empire\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Nazi_Germany\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/History_of_Haiti\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/First_Empire_of_Haiti\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Second_Empire_of_Haiti\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/History_of_India\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Maratha_Empire\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Sikh_Empire\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Mughal_Empire\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/British_Raj\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/History_of_Iran\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Safavid_dynasty\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Afsharid_dynasty\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Zand_dynasty\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Qajar_dynasty\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Pahlavi_dynasty\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Empire_of_Japan\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Johor_Sultanate\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Korean_Empire\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/History_of_Mexico\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/First_Mexican_Empire\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Second_Mexican_Empire\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/History_of_Morocco\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Saadi_dynasty\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Alaouite_dynasty\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Russian_Empire\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Soviet_Empire\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0\n", + "PAGE HAS NO LINKS: /wiki/History_of_Somalia\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Sultanate_of_the_Geledi\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Majeerteen_Sultanate\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Sultanate_of_Hobyo\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Dervish_state\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Swedish_Empire\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Tu%CA%BBi_Tonga_Empire\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/History_of_Turkey\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Ottoman_Empire\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Karamanids\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Ramadanids\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/History_of_Vietnam\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Tay_Son_Dynasty\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Nguyen_Dynasty\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Empire_of_Vietnam\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Colonial_empire\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/United_States_territorial_acquisitions\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Belgian_colonial_empire\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/British_Empire\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Danish_colonial_empire\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Dutch_Empire\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/French_colonial_empire\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/German_colonial_empire\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Italian_Empire\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Empire_of_Japan\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Muscat_and_Oman\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Norwegian_expansion_during_the_Middle_Ages\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Portuguese_Empire\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Spanish_Empire\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Swedish_overseas_colonies\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/List_of_empires\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/List_of_largest_empires\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/List_of_ancient_great_powers\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/List_of_medieval_great_powers\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/List_of_modern_great_powers\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Colonial_empire\n", + "1835\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/United_States_territorial_acquisitions\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Austria-Hungary\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Austrian_colonial_policy\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Belgium\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Belgian_overseas_colonies\n", + "1830\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/British_Empire\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Courland\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Couronian_colonization\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Denmark\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Danish_colonial_empire\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Netherlands\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Dutch_Empire\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/England\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/France\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/French_colonial_empire\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/German_Empire\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/German_colonial_empire\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Kingdom_of_Italy\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Italian_Empire\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Empire_of_Japan\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Japanese_colonial_empire\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Sovereign_Military_Order_of_Malta\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/History_of_Malta_under_the_Order_of_Saint_John\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Ottoman_Empire\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Ottoman_Empire\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Portugal\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Portuguese_Empire\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Russian_Empire\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Russian_Empire\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Soviet_Union\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Soviet_Empire\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Spain\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Spanish_Empire\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Sweden\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Swedish_overseas_colonies\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Colonies_in_antiquity\n", + "610\n", + "610\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Main_Page\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Main_Page\n", + "433\n", + "0\n", + "PAGE HAS NO LINKS: /wiki/Royal_charter\n" + ] + }, + { + "ename": "URLError", + "evalue": "", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mgaierror\u001b[0m Traceback (most recent call last)", + "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/urllib/request.py\u001b[0m in \u001b[0;36mdo_open\u001b[0;34m(self, http_class, req, **http_conn_args)\u001b[0m\n\u001b[1;32m 1317\u001b[0m h.request(req.get_method(), req.selector, req.data, headers,\n\u001b[0;32m-> 1318\u001b[0;31m encode_chunked=req.has_header('Transfer-encoding'))\n\u001b[0m\u001b[1;32m 1319\u001b[0m \u001b[0;32mexcept\u001b[0m \u001b[0mOSError\u001b[0m \u001b[0;32mas\u001b[0m \u001b[0merr\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0;31m# timeout error\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/http/client.py\u001b[0m in \u001b[0;36mrequest\u001b[0;34m(self, method, url, body, headers, encode_chunked)\u001b[0m\n\u001b[1;32m 1238\u001b[0m \u001b[0;34m\"\"\"Send a complete request to the server.\"\"\"\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 1239\u001b[0;31m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_send_request\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mmethod\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0murl\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mbody\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mheaders\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mencode_chunked\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 1240\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/http/client.py\u001b[0m in \u001b[0;36m_send_request\u001b[0;34m(self, method, url, body, headers, encode_chunked)\u001b[0m\n\u001b[1;32m 1284\u001b[0m \u001b[0mbody\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0m_encode\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mbody\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m'body'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 1285\u001b[0;31m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mendheaders\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mbody\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mencode_chunked\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mencode_chunked\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 1286\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/http/client.py\u001b[0m in \u001b[0;36mendheaders\u001b[0;34m(self, message_body, encode_chunked)\u001b[0m\n\u001b[1;32m 1233\u001b[0m \u001b[0;32mraise\u001b[0m \u001b[0mCannotSendHeader\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 1234\u001b[0;31m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_send_output\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mmessage_body\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mencode_chunked\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mencode_chunked\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 1235\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/http/client.py\u001b[0m in \u001b[0;36m_send_output\u001b[0;34m(self, message_body, encode_chunked)\u001b[0m\n\u001b[1;32m 1025\u001b[0m \u001b[0;32mdel\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_buffer\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 1026\u001b[0;31m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msend\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mmsg\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 1027\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/http/client.py\u001b[0m in \u001b[0;36msend\u001b[0;34m(self, data)\u001b[0m\n\u001b[1;32m 963\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mauto_open\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 964\u001b[0;31m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mconnect\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 965\u001b[0m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/http/client.py\u001b[0m in \u001b[0;36mconnect\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 935\u001b[0m self.sock = self._create_connection(\n\u001b[0;32m--> 936\u001b[0;31m (self.host,self.port), self.timeout, self.source_address)\n\u001b[0m\u001b[1;32m 937\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msock\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msetsockopt\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0msocket\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mIPPROTO_TCP\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0msocket\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mTCP_NODELAY\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;36m1\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/socket.py\u001b[0m in \u001b[0;36mcreate_connection\u001b[0;34m(address, timeout, source_address)\u001b[0m\n\u001b[1;32m 703\u001b[0m \u001b[0merr\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;32mNone\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 704\u001b[0;31m \u001b[0;32mfor\u001b[0m \u001b[0mres\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mgetaddrinfo\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mhost\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mport\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;36m0\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mSOCK_STREAM\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 705\u001b[0m \u001b[0maf\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0msocktype\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mproto\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mcanonname\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0msa\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mres\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/socket.py\u001b[0m in \u001b[0;36mgetaddrinfo\u001b[0;34m(host, port, family, type, proto, flags)\u001b[0m\n\u001b[1;32m 742\u001b[0m \u001b[0maddrlist\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m[\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 743\u001b[0;31m \u001b[0;32mfor\u001b[0m \u001b[0mres\u001b[0m \u001b[0;32min\u001b[0m \u001b[0m_socket\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mgetaddrinfo\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mhost\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mport\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mfamily\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mtype\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mproto\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mflags\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 744\u001b[0m \u001b[0maf\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0msocktype\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mproto\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mcanonname\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0msa\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mres\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;31mgaierror\u001b[0m: [Errno 8] nodename nor servname provided, or not known", + "\nDuring handling of the above exception, another exception occurred:\n", + "\u001b[0;31mURLError\u001b[0m Traceback (most recent call last)", + "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[1;32m 58\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 59\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 60\u001b[0;31m \u001b[0mgetLinks\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'/wiki/Kevin_Bacon'\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;36m0\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mloadPages\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 61\u001b[0m \u001b[0mcur\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mclose\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 62\u001b[0m \u001b[0mconn\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mclose\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m\u001b[0m in \u001b[0;36mgetLinks\u001b[0;34m(pageUrl, recursionLevel, pages)\u001b[0m\n\u001b[1;32m 55\u001b[0m \u001b[0mprint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"PAGE HAS NO LINKS: {}\"\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mformat\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mlink\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 56\u001b[0m \u001b[0mpages\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mappend\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mlink\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 57\u001b[0;31m \u001b[0mgetLinks\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mlink\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mrecursionLevel\u001b[0m\u001b[0;34m+\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mpages\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 58\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 59\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m\u001b[0m in \u001b[0;36mgetLinks\u001b[0;34m(pageUrl, recursionLevel, pages)\u001b[0m\n\u001b[1;32m 55\u001b[0m \u001b[0mprint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"PAGE HAS NO LINKS: {}\"\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mformat\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mlink\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 56\u001b[0m \u001b[0mpages\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mappend\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mlink\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 57\u001b[0;31m \u001b[0mgetLinks\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mlink\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mrecursionLevel\u001b[0m\u001b[0;34m+\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mpages\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 58\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 59\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m\u001b[0m in \u001b[0;36mgetLinks\u001b[0;34m(pageUrl, recursionLevel, pages)\u001b[0m\n\u001b[1;32m 55\u001b[0m \u001b[0mprint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"PAGE HAS NO LINKS: {}\"\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mformat\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mlink\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 56\u001b[0m \u001b[0mpages\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mappend\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mlink\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 57\u001b[0;31m \u001b[0mgetLinks\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mlink\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mrecursionLevel\u001b[0m\u001b[0;34m+\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mpages\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 58\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 59\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m\u001b[0m in \u001b[0;36mgetLinks\u001b[0;34m(pageUrl, recursionLevel, pages)\u001b[0m\n\u001b[1;32m 55\u001b[0m \u001b[0mprint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"PAGE HAS NO LINKS: {}\"\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mformat\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mlink\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 56\u001b[0m \u001b[0mpages\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mappend\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mlink\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 57\u001b[0;31m \u001b[0mgetLinks\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mlink\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mrecursionLevel\u001b[0m\u001b[0;34m+\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mpages\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 58\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 59\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m\u001b[0m in \u001b[0;36mgetLinks\u001b[0;34m(pageUrl, recursionLevel, pages)\u001b[0m\n\u001b[1;32m 44\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 45\u001b[0m \u001b[0mpageId\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0minsertPageIfNotExists\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mpageUrl\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 46\u001b[0;31m \u001b[0mhtml\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0murlopen\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'http://en.wikipedia.org{}'\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mformat\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mpageUrl\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 47\u001b[0m \u001b[0mbs\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mBeautifulSoup\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mhtml\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m'html.parser'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 48\u001b[0m \u001b[0mlinks\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mbs\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mfindAll\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'a'\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mhref\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mre\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mcompile\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'^(/wiki/)((?!:).)*$'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/urllib/request.py\u001b[0m in \u001b[0;36murlopen\u001b[0;34m(url, data, timeout, cafile, capath, cadefault, context)\u001b[0m\n\u001b[1;32m 221\u001b[0m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 222\u001b[0m \u001b[0mopener\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0m_opener\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 223\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mopener\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mopen\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0murl\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mdata\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mtimeout\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 224\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 225\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0minstall_opener\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mopener\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/urllib/request.py\u001b[0m in \u001b[0;36mopen\u001b[0;34m(self, fullurl, data, timeout)\u001b[0m\n\u001b[1;32m 524\u001b[0m \u001b[0mreq\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mmeth\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mreq\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 525\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 526\u001b[0;31m \u001b[0mresponse\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_open\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mreq\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mdata\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 527\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 528\u001b[0m \u001b[0;31m# post-process response\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/urllib/request.py\u001b[0m in \u001b[0;36m_open\u001b[0;34m(self, req, data)\u001b[0m\n\u001b[1;32m 542\u001b[0m \u001b[0mprotocol\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mreq\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mtype\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 543\u001b[0m result = self._call_chain(self.handle_open, protocol, protocol +\n\u001b[0;32m--> 544\u001b[0;31m '_open', req)\n\u001b[0m\u001b[1;32m 545\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mresult\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 546\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mresult\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/urllib/request.py\u001b[0m in \u001b[0;36m_call_chain\u001b[0;34m(self, chain, kind, meth_name, *args)\u001b[0m\n\u001b[1;32m 502\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0mhandler\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mhandlers\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 503\u001b[0m \u001b[0mfunc\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mgetattr\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mhandler\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mmeth_name\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 504\u001b[0;31m \u001b[0mresult\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mfunc\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 505\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mresult\u001b[0m \u001b[0;32mis\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0;32mNone\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 506\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mresult\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/urllib/request.py\u001b[0m in \u001b[0;36mhttp_open\u001b[0;34m(self, req)\u001b[0m\n\u001b[1;32m 1344\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1345\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0mhttp_open\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mreq\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 1346\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mdo_open\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mhttp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mclient\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mHTTPConnection\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mreq\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 1347\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1348\u001b[0m \u001b[0mhttp_request\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mAbstractHTTPHandler\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mdo_request_\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/urllib/request.py\u001b[0m in \u001b[0;36mdo_open\u001b[0;34m(self, http_class, req, **http_conn_args)\u001b[0m\n\u001b[1;32m 1318\u001b[0m encode_chunked=req.has_header('Transfer-encoding'))\n\u001b[1;32m 1319\u001b[0m \u001b[0;32mexcept\u001b[0m \u001b[0mOSError\u001b[0m \u001b[0;32mas\u001b[0m \u001b[0merr\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0;31m# timeout error\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 1320\u001b[0;31m \u001b[0;32mraise\u001b[0m \u001b[0mURLError\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0merr\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 1321\u001b[0m \u001b[0mr\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mh\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mgetresponse\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1322\u001b[0m \u001b[0;32mexcept\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;31mURLError\u001b[0m: " + ] + } + ], + "source": [ + "from urllib.request import urlopen\n", + "from bs4 import BeautifulSoup\n", + "import re\n", + "import pymysql\n", + "from random import shuffle\n", + "\n", + "conn = pymysql.connect(host='127.0.0.1', unix_socket='/tmp/mysql.sock',\n", + " user='root', passwd='root', db='mysql', charset='utf8')\n", + "cur = conn.cursor()\n", + "cur.execute('USE wikipedia')\n", + "\n", + "def insertPageIfNotExists(url):\n", + " cur.execute('SELECT * FROM pages WHERE url = %s', (url))\n", + " if cur.rowcount == 0:\n", + " cur.execute('INSERT INTO pages (url) VALUES (%s)', (url))\n", + " conn.commit()\n", + " return cur.lastrowid\n", + " else:\n", + " return cur.fetchone()[0]\n", + "\n", + "def loadPages():\n", + " cur.execute('SELECT * FROM pages')\n", + " pages = [row[1] for row in cur.fetchall()]\n", + " return pages\n", + "\n", + "def insertLink(fromPageId, toPageId):\n", + " cur.execute('SELECT * FROM links WHERE fromPageId = %s AND toPageId = %s', \n", + " (int(fromPageId), int(toPageId)))\n", + " if cur.rowcount == 0:\n", + " cur.execute('INSERT INTO links (fromPageId, toPageId) VALUES (%s, %s)', \n", + " (int(fromPageId), int(toPageId)))\n", + " conn.commit()\n", + "def pageHasLinks(pageId):\n", + " cur.execute('SELECT * FROM links WHERE fromPageId = %s', (int(pageId)))\n", + " rowcount = cur.rowcount\n", + " if rowcount == 0:\n", + " return False\n", + " return True\n", + "\n", + "def getLinks(pageUrl, recursionLevel, pages):\n", + " if recursionLevel > 4:\n", + " return\n", + "\n", + " pageId = insertPageIfNotExists(pageUrl)\n", + " html = urlopen('http://en.wikipedia.org{}'.format(pageUrl))\n", + " bs = BeautifulSoup(html, 'html.parser')\n", + " links = bs.findAll('a', href=re.compile('^(/wiki/)((?!:).)*$'))\n", + " links = [link.attrs['href'] for link in links]\n", + "\n", + " for link in links:\n", + " linkId = insertPageIfNotExists(link)\n", + " insertLink(pageId, linkId)\n", + " if not pageHasLinks(linkId):\n", + " print(\"PAGE HAS NO LINKS: {}\".format(link))\n", + " pages.append(link)\n", + " getLinks(link, recursionLevel+1, pages)\n", + " \n", + " \n", + "getLinks('/wiki/Kevin_Bacon', 0, loadPages()) \n", + "cur.close()\n", + "conn.close()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import smtplib\n", + "from email.mime.text import MIMEText\n", + "\n", + "msg = MIMEText('The body of the email is here')\n", + "\n", + "msg['Subject'] = 'An Email Alert'\n", + "msg['From'] = 'ryan@pythonscraping.com'\n", + "msg['To'] = 'webmaster@pythonscraping.com'\n", + "\n", + "s = smtplib.SMTP('localhost')\n", + "s.send_message(msg)\n", + "s.quit()" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [ + { + "ename": "ConnectionRefusedError", + "evalue": "[Errno 61] Connection refused", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mConnectionRefusedError\u001b[0m Traceback (most recent call last)", + "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[1;32m 21\u001b[0m \u001b[0mbs\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mBeautifulSoup\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0murlopen\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'https://isitchristmas.com/'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m'html.parser'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 22\u001b[0m sendMail('It\\'s Christmas!', \n\u001b[0;32m---> 23\u001b[0;31m 'According to http://itischristmas.com, it is Christmas!')\n\u001b[0m", + "\u001b[0;32m\u001b[0m in \u001b[0;36msendMail\u001b[0;34m(subject, body)\u001b[0m\n\u001b[1;32m 11\u001b[0m \u001b[0mmsg\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m'To'\u001b[0m\u001b[0;34m]\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m'ryan@pythonscraping.com'\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 12\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 13\u001b[0;31m \u001b[0ms\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0msmtplib\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mSMTP\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'localhost'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 14\u001b[0m \u001b[0ms\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msend_message\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mmsg\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 15\u001b[0m \u001b[0ms\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mquit\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/smtplib.py\u001b[0m in \u001b[0;36m__init__\u001b[0;34m(self, host, port, local_hostname, timeout, source_address)\u001b[0m\n\u001b[1;32m 249\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 250\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mhost\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 251\u001b[0;31m \u001b[0;34m(\u001b[0m\u001b[0mcode\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mmsg\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mconnect\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mhost\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mport\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 252\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mcode\u001b[0m \u001b[0;34m!=\u001b[0m \u001b[0;36m220\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 253\u001b[0m \u001b[0;32mraise\u001b[0m \u001b[0mSMTPConnectError\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mcode\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mmsg\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/smtplib.py\u001b[0m in \u001b[0;36mconnect\u001b[0;34m(self, host, port, source_address)\u001b[0m\n\u001b[1;32m 333\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mdebuglevel\u001b[0m \u001b[0;34m>\u001b[0m \u001b[0;36m0\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 334\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_print_debug\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'connect:'\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m(\u001b[0m\u001b[0mhost\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mport\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 335\u001b[0;31m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msock\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_get_socket\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mhost\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mport\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mtimeout\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 336\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mfile\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;32mNone\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 337\u001b[0m \u001b[0;34m(\u001b[0m\u001b[0mcode\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mmsg\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mgetreply\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/smtplib.py\u001b[0m in \u001b[0;36m_get_socket\u001b[0;34m(self, host, port, timeout)\u001b[0m\n\u001b[1;32m 304\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_print_debug\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'connect: to'\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m(\u001b[0m\u001b[0mhost\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mport\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msource_address\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 305\u001b[0m return socket.create_connection((host, port), timeout,\n\u001b[0;32m--> 306\u001b[0;31m self.source_address)\n\u001b[0m\u001b[1;32m 307\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 308\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0mconnect\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mhost\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;34m'localhost'\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mport\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;36m0\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0msource_address\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;32mNone\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/socket.py\u001b[0m in \u001b[0;36mcreate_connection\u001b[0;34m(address, timeout, source_address)\u001b[0m\n\u001b[1;32m 720\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 721\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0merr\u001b[0m \u001b[0;32mis\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0;32mNone\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 722\u001b[0;31m \u001b[0;32mraise\u001b[0m \u001b[0merr\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 723\u001b[0m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 724\u001b[0m \u001b[0;32mraise\u001b[0m \u001b[0merror\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"getaddrinfo returns an empty list\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/socket.py\u001b[0m in \u001b[0;36mcreate_connection\u001b[0;34m(address, timeout, source_address)\u001b[0m\n\u001b[1;32m 711\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0msource_address\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 712\u001b[0m \u001b[0msock\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mbind\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0msource_address\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 713\u001b[0;31m \u001b[0msock\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mconnect\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0msa\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 714\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0msock\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 715\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;31mConnectionRefusedError\u001b[0m: [Errno 61] Connection refused" + ] + } + ], + "source": [ + "import smtplib\n", + "from email.mime.text import MIMEText\n", + "from bs4 import BeautifulSoup\n", + "from urllib.request import urlopen\n", + "import time\n", + "\n", + "def sendMail(subject, body):\n", + " msg = MIMEText(body)\n", + " msg['Subject'] = subject\n", + " msg['From'] ='christmas_alerts@pythonscraping.com'\n", + " msg['To'] = 'ryan@pythonscraping.com'\n", + "\n", + " s = smtplib.SMTP('localhost')\n", + " s.send_message(msg)\n", + " s.quit()\n", + "\n", + "bs = BeautifulSoup(urlopen('https://isitchristmas.com/'), 'html.parser')\n", + "while(bs.find('a', {'id':'answer'}).attrs['title'] == 'NO'):\n", + " print('It is not Christmas yet.')\n", + " time.sleep(3600)\n", + " bs = BeautifulSoup(urlopen('https://isitchristmas.com/'), 'html.parser')\n", + "sendMail('It\\'s Christmas!', \n", + " 'According to http://itischristmas.com, it is Christmas!')" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.6.1" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/v2/Chapter07_ReadingDocuments.ipynb b/v2/Chapter07_ReadingDocuments.ipynb new file mode 100644 index 0000000..cf69284 --- /dev/null +++ b/v2/Chapter07_ReadingDocuments.ipynb @@ -0,0 +1,1683 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [], + "source": [ + "from bs4 import BeautifulSoup" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "b'CHAPTER I\\n\\n\"Well, Prince, so Genoa and Lucca are now just family estates of theBuonapartes. But I warn you, if you don\\'t tell me that this means war,if you still try to defend the infamies and horrors perpetrated bythat Antichrist- I really believe he is Antichrist- I will havenothing more to do with you and you are no longer my friend, no longermy \\'faithful slave,\\' as you call yourself! But how do you do? I seeI have frightened you- sit down and tell me all the news.\"\\n\\nIt was in July, 1805, and the speaker was the well-known AnnaPavlovna Scherer, maid of honor and favorite of the Empress MaryaFedorovna. With these words she greeted Prince Vasili Kuragin, a manof high rank and importance, who was the first to arrive at herreception. Anna Pavlovna had had a cough for some days. She was, asshe said, suffering from la grippe; grippe being then a new word inSt. Petersburg, used only by the elite.\\n\\nAll her invitations without exception, written in French, anddelivered by a scarlet-liveried footman that morning, ran as follows:\\n\\n\"If you have nothing better to do, Count [or Prince], and if theprospect of spending an evening with a poor invalid is not tooterrible, I shall be very charmed to see you tonight between 7 and 10-Annette Scherer.\"\\n\\n\"Heavens! what a virulent attack!\" replied the prince, not in theleast disconcerted by this reception. He had just entered, wearingan embroidered court uniform, knee breeches, and shoes, and hadstars on his breast and a serene expression on his flat face. He spokein that refined French in which our grandfathers not only spoke butthought, and with the gentle, patronizing intonation natural to aman of importance who had grown old in society and at court. He wentup to Anna Pavlovna, kissed her hand, presenting to her his bald,scented, and shining head, and complacently seated himself on thesofa.\\n\\n\"First of all, dear friend, tell me how you are. Set your friend\\'smind at rest,\" said he without altering his tone, beneath thepoliteness and affected sympathy of which indifference and evenirony could be discerned.\\n\\n\"Can one be well while suffering morally? Can one be calm in timeslike these if one has any feeling?\" said Anna Pavlovna. \"You arestaying the whole evening, I hope?\"\\n\\n\"And the fete at the English ambassador\\'s? Today is Wednesday. Imust put in an appearance there,\" said the prince. \"My daughter iscoming for me to take me there.\"\\n\\n\"I thought today\\'s fete had been canceled. I confess all thesefestivities and fireworks are becoming wearisome.\"\\n\\n\"If they had known that you wished it, the entertainment wouldhave been put off,\" said the prince, who, like a wound-up clock, byforce of habit said things he did not even wish to be believed.\\n\\n\"Don\\'t tease! Well, and what has been decided about Novosiltsev\\'sdispatch? You know everything.\"\\n\\n\"What can one say about it?\" replied the prince in a cold,listless tone. \"What has been decided? They have decided thatBuonaparte has burnt his boats, and I believe that we are ready toburn ours.\"\\n\\nPrince Vasili always spoke languidly, like an actor repeating astale part. Anna Pavlovna Scherer on the contrary, despite her fortyyears, overflowed with animation and impulsiveness. To be anenthusiast had become her social vocation and, sometimes even when shedid not feel like it, she became enthusiastic in order not todisappoint the expectations of those who knew her. The subdued smilewhich, though it did not suit her faded features, always playedround her lips expressed, as in a spoiled child, a continualconsciousness of her charming defect, which she neither wished, norcould, nor considered it necessary, to correct.\\n\\nIn the midst of a conversation on political matters Anna Pavlovnaburst out:\\n\\n\"Oh, don\\'t speak to me of Austria. Perhaps I don\\'t understandthings, but Austria never has wished, and does not wish, for war.She is betraying us! Russia alone must save Europe. Our gracioussovereign recognizes his high vocation and will be true to it. That isthe one thing I have faith in! Our good and wonderful sovereign has toperform the noblest role on earth, and he is so virtuous and noblethat God will not forsake him. He will fulfill his vocation andcrush the hydra of revolution, which has become more terrible thanever in the person of this murderer and villain! We alone mustavenge the blood of the just one.... Whom, I ask you, can we relyon?... England with her commercial spirit will not and cannotunderstand the Emperor Alexander\\'s loftiness of soul. She hasrefused to evacuate Malta. She wanted to find, and still seeks, somesecret motive in our actions. What answer did Novosiltsev get? None.The English have not understood and cannot understand theself-abnegation of our Emperor who wants nothing for himself, but onlydesires the good of mankind. And what have they promised? Nothing! Andwhat little they have promised they will not perform! Prussia hasalways declared that Buonaparte is invincible, and that all Europeis powerless before him.... And I don\\'t believe a word that Hardenburgsays, or Haugwitz either. This famous Prussian neutrality is just atrap. I have faith only in God and the lofty destiny of our adoredmonarch. He will save Europe!\"\\n\\nShe suddenly paused, smiling at her own impetuosity.\\n\\n\"I think,\" said the prince with a smile, \"that if you had beensent instead of our dear Wintzingerode you would have captured theKing of Prussia\\'s consent by assault. You are so eloquent. Will yougive me a cup of tea?\"\\n\\n\"In a moment. A propos,\" she added, becoming calm again, \"I amexpecting two very interesting men tonight, le Vicomte de Mortemart,who is connected with the Montmorencys through the Rohans, one ofthe best French families. He is one of the genuine emigres, the goodones. And also the Abbe Morio. Do you know that profound thinker? Hehas been received by the Emperor. Had you heard?\"\\n\\n\"I shall be delighted to meet them,\" said the prince. \"But tell me,\"he added with studied carelessness as if it had only just occurredto him, though the question he was about to ask was the chief motiveof his visit, \"is it true that the Dowager Empress wants Baron Funketo be appointed first secretary at Vienna? The baron by all accountsis a poor creature.\"\\n\\nPrince Vasili wished to obtain this post for his son, but otherswere trying through the Dowager Empress Marya Fedorovna to secure itfor the baron.\\n\\nAnna Pavlovna almost closed her eyes to indicate that neither shenor anyone else had a right to criticize what the Empress desired orwas pleased with.\\n\\n\"Baron Funke has been recommended to the Dowager Empress by hersister,\" was all she said, in a dry and mournful tone.\\n\\nAs she named the Empress, Anna Pavlovna\\'s face suddenly assumed anexpression of profound and sincere devotion and respect mingled withsadness, and this occurred every time she mentioned her illustriouspatroness. She added that Her Majesty had deigned to show BaronFunke beaucoup d\\'estime, and again her face clouded over with sadness.\\n\\nThe prince was silent and looked indifferent. But, with thewomanly and courtierlike quickness and tact habitual to her, AnnaPavlovna wished both to rebuke him (for daring to speak he had done ofa man recommended to the Empress) and at the same time to console him,so she said:\\n\\n\"Now about your family. Do you know that since your daughter cameout everyone has been enraptured by her? They say she is amazinglybeautiful.\"\\n\\nThe prince bowed to signify his respect and gratitude.\\n\\n\"I often think,\" she continued after a short pause, drawing nearerto the prince and smiling amiably at him as if to show thatpolitical and social topics were ended and the time had come forintimate conversation- \"I often think how unfairly sometimes thejoys of life are distributed. Why has fate given you two such splendidchildren? I don\\'t speak of Anatole, your youngest. I don\\'t likehim,\" she added in a tone admitting of no rejoinder and raising hereyebrows. \"Two such charming children. And really you appreciatethem less than anyone, and so you don\\'t deserve to have them.\"\\n\\nAnd she smiled her ecstatic smile.\\n\\n\"I can\\'t help it,\" said the prince. \"Lavater would have said Ilack the bump of paternity.\"\\n\\n\"Don\\'t joke; I mean to have a serious talk with you. Do you know Iam dissatisfied with your younger son? Between ourselves\" (and herface assumed its melancholy expression), \"he was mentioned at HerMajesty\\'s and you were pitied....\"\\n\\nThe prince answered nothing, but she looked at him significantly,awaiting a reply. He frowned.\\n\\n\"What would you have me do?\" he said at last. \"You know I did alla father could for their education, and they have both turned outfools. Hippolyte is at least a quiet fool, but Anatole is an activeone. That is the only difference between them.\" He said this smilingin a way more natural and animated than usual, so that the wrinklesround his mouth very clearly revealed something unexpectedly coarseand unpleasant.\\n\\n\"And why are children born to such men as you? If you were not afather there would be nothing I could reproach you with,\" said AnnaPavlovna, looking up pensively.\\n\\n\"I am your faithful slave and to you alone I can confess that mychildren are the bane of my life. It is the cross I have to bear. Thatis how I explain it to myself. It can\\'t be helped!\"\\n\\nHe said no more, but expressed his resignation to cruel fate by agesture. Anna Pavlovna meditated.\\n\\n\"Have you never thought of marrying your prodigal son Anatole?\"she asked. \"They say old maids have a mania for matchmaking, andthough I don\\'t feel that weakness in myself as yet,I know a littleperson who is very unhappy with her father. She is a relation ofyours, Princess Mary Bolkonskaya.\"\\n\\nPrince Vasili did not reply, though, with the quickness of memoryand perception befitting a man of the world, he indicated by amovement of the head that he was considering this information.\\n\\n\"Do you know,\" he said at last, evidently unable to check the sadcurrent of his thoughts, \"that Anatole is costing me forty thousandrubles a year? And,\" he went on after a pause, \"what will it be infive years, if he goes on like this?\" Presently he added: \"That\\'s whatwe fathers have to put up with.... Is this princess of yours rich?\"\\n\\n\"Her father is very rich and stingy. He lives in the country. Heis the well-known Prince Bolkonski who had to retire from the armyunder the late Emperor, and was nicknamed \\'the King of Prussia.\\' He isvery clever but eccentric, and a bore. The poor girl is veryunhappy. She has a brother; I think you know him, he married LiseMeinen lately. He is an aide-de-camp of Kutuzov\\'s and will be heretonight.\"\\n\\n\"Listen, dear Annette,\" said the prince, suddenly taking AnnaPavlovna\\'s hand and for some reason drawing it downwards. \"Arrangethat affair for me and I shall always be your most devoted slave-slafe wigh an f, as a village elder of mine writes in his reports. Sheis rich and of good family and that\\'s all I want.\"\\n\\nAnd with the familiarity and easy grace peculiar to him, he raisedthe maid of honor\\'s hand to his lips, kissed it, and swung it to andfro as he lay back in his armchair, looking in another direction.\\n\\n\"Attendez,\" said Anna Pavlovna, reflecting, \"I\\'ll speak to Lise,young Bolkonski\\'s wife, this very evening, and perhaps the thing canbe arranged. It shall be on your family\\'s behalf that I\\'ll start myapprenticeship as old maid.\"'\n" + ] + } + ], + "source": [ + "from urllib.request import urlopen\n", + "textPage = urlopen('http://www.pythonscraping.com/pages/warandpeace/chapter1.txt')\n", + "print(textPage.read())" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "b\"\\xd0\\xa7\\xd0\\x90\\xd0\\xa1\\xd0\\xa2\\xd0\\xac \\xd0\\x9f\\xd0\\x95\\xd0\\xa0\\xd0\\x92\\xd0\\x90\\xd0\\xaf\\n\\nI\\n\\n\\xe2\\x80\\x94 Eh bien, mon prince. G\\xc3\\xaanes et Lucques ne sont plus que des apanages, des \\xd0\\xbf\\xd0\\xbe\\xd0\\xbc\\xd0\\xb5\\xd1\\x81\\xd1\\x82\\xd1\\x8c\\xd1\\x8f, de la famille Buonaparte. Non, je vous pr\\xc3\\xa9viens que si vous ne me dites pas que nous avons la guerre, si vous vous permettez encore de pallier toutes les infamies, toutes les atrocit\\xc3\\xa9s de cet Antichrist (ma parole, j'y crois) \\xe2\\x80\\x94 je ne vous connais plus, vous n'\\xc3\\xaates plus mon ami, vous n'\\xc3\\xaates plus \\xd0\\xbc\\xd0\\xbe\\xd0\\xb9 \\xd0\\xb2\\xd0\\xb5\\xd1\\x80\\xd0\\xbd\\xd1\\x8b\\xd0\\xb9 \\xd1\\x80\\xd0\\xb0\\xd0\\xb1, comme vous dites. \\xd0\\x9d\\xd1\\x83, \\xd0\\xb7\\xd0\\xb4\\xd1\\x80\\xd0\\xb0\\xd0\\xb2\\xd1\\x81\\xd1\\x82\\xd0\\xb2\\xd1\\x83\\xd0\\xb9\\xd1\\x82\\xd0\\xb5, \\xd0\\xb7\\xd0\\xb4\\xd1\\x80\\xd0\\xb0\\xd0\\xb2\\xd1\\x81\\xd1\\x82\\xd0\\xb2\\xd1\\x83\\xd0\\xb9\\xd1\\x82\\xd0\\xb5. Je vois que je vous fais peur, \\xd1\\x81\\xd0\\xb0\\xd0\\xb4\\xd0\\xb8\\xd1\\x82\\xd0\\xb5\\xd1\\x81\\xd1\\x8c \\xd0\\xb8 \\xd1\\x80\\xd0\\xb0\\xd1\\x81\\xd1\\x81\\xd0\\xba\\xd0\\xb0\\xd0\\xb7\\xd1\\x8b\\xd0\\xb2\\xd0\\xb0\\xd0\\xb9\\xd1\\x82\\xd0\\xb5.\\n\\xd0\\xa2\\xd0\\xb0\\xd0\\xba \\xd0\\xb3\\xd0\\xbe\\xd0\\xb2\\xd0\\xbe\\xd1\\x80\\xd0\\xb8\\xd0\\xbb\\xd0\\xb0 \\xd0\\xb2 \\xd0\\xb8\\xd1\\x8e\\xd0\\xbb\\xd0\\xb5 1805 \\xd0\\xb3\\xd0\\xbe\\xd0\\xb4\\xd0\\xb0 \\xd0\\xb8\\xd0\\xb7\\xd0\\xb2\\xd0\\xb5\\xd1\\x81\\xd1\\x82\\xd0\\xbd\\xd0\\xb0\\xd1\\x8f \\xd0\\x90\\xd0\\xbd\\xd0\\xbd\\xd0\\xb0 \\xd0\\x9f\\xd0\\xb0\\xd0\\xb2\\xd0\\xbb\\xd0\\xbe\\xd0\\xb2\\xd0\\xbd\\xd0\\xb0 \\xd0\\xa8\\xd0\\xb5\\xd1\\x80\\xd0\\xb5\\xd1\\x80, \\xd1\\x84\\xd1\\x80\\xd0\\xb5\\xd0\\xb9\\xd0\\xbb\\xd0\\xb8\\xd0\\xbd\\xd0\\xb0 \\xd0\\xb8 \\xd0\\xbf\\xd1\\x80\\xd0\\xb8\\xd0\\xb1\\xd0\\xbb\\xd0\\xb8\\xd0\\xb6\\xd0\\xb5\\xd0\\xbd\\xd0\\xbd\\xd0\\xb0\\xd1\\x8f \\xd0\\xb8\\xd0\\xbc\\xd0\\xbf\\xd0\\xb5\\xd1\\x80\\xd0\\xb0\\xd1\\x82\\xd1\\x80\\xd0\\xb8\\xd1\\x86\\xd1\\x8b \\xd0\\x9c\\xd0\\xb0\\xd1\\x80\\xd0\\xb8\\xd0\\xb8 \\xd0\\xa4\\xd0\\xb5\\xd0\\xbe\\xd0\\xb4\\xd0\\xbe\\xd1\\x80\\xd0\\xbe\\xd0\\xb2\\xd0\\xbd\\xd1\\x8b, \\xd0\\xb2\\xd1\\x81\\xd1\\x82\\xd1\\x80\\xd0\\xb5\\xd1\\x87\\xd0\\xb0\\xd1\\x8f \\xd0\\xb2\\xd0\\xb0\\xd0\\xb6\\xd0\\xbd\\xd0\\xbe\\xd0\\xb3\\xd0\\xbe \\xd0\\xb8 \\xd1\\x87\\xd0\\xb8\\xd0\\xbd\\xd0\\xbe\\xd0\\xb2\\xd0\\xbd\\xd0\\xbe\\xd0\\xb3\\xd0\\xbe \\xd0\\xba\\xd0\\xbd\\xd1\\x8f\\xd0\\xb7\\xd1\\x8f \\xd0\\x92\\xd0\\xb0\\xd1\\x81\\xd0\\xb8\\xd0\\xbb\\xd0\\xb8\\xd1\\x8f, \\xd0\\xbf\\xd0\\xb5\\xd1\\x80\\xd0\\xb2\\xd0\\xbe\\xd0\\xb3\\xd0\\xbe \\xd0\\xbf\\xd1\\x80\\xd0\\xb8\\xd0\\xb5\\xd1\\x85\\xd0\\xb0\\xd0\\xb2\\xd1\\x88\\xd0\\xb5\\xd0\\xb3\\xd0\\xbe \\xd0\\xbd\\xd0\\xb0 \\xd0\\xb5\\xd0\\xb5 \\xd0\\xb2\\xd0\\xb5\\xd1\\x87\\xd0\\xb5\\xd1\\x80. \\xd0\\x90\\xd0\\xbd\\xd0\\xbd\\xd0\\xb0 \\xd0\\x9f\\xd0\\xb0\\xd0\\xb2\\xd0\\xbb\\xd0\\xbe\\xd0\\xb2\\xd0\\xbd\\xd0\\xb0 \\xd0\\xba\\xd0\\xb0\\xd1\\x88\\xd0\\xbb\\xd1\\x8f\\xd0\\xbb\\xd0\\xb0 \\xd0\\xbd\\xd0\\xb5\\xd1\\x81\\xd0\\xba\\xd0\\xbe\\xd0\\xbb\\xd1\\x8c\\xd0\\xba\\xd0\\xbe \\xd0\\xb4\\xd0\\xbd\\xd0\\xb5\\xd0\\xb9, \\xd1\\x83 \\xd0\\xbd\\xd0\\xb5\\xd0\\xb5 \\xd0\\xb1\\xd1\\x8b\\xd0\\xbb \\xd0\\xb3\\xd1\\x80\\xd0\\xb8\\xd0\\xbf\\xd0\\xbf, \\xd0\\xba\\xd0\\xb0\\xd0\\xba \\xd0\\xbe\\xd0\\xbd\\xd0\\xb0 \\xd0\\xb3\\xd0\\xbe\\xd0\\xb2\\xd0\\xbe\\xd1\\x80\\xd0\\xb8\\xd0\\xbb\\xd0\\xb0 (\\xd0\\xb3\\xd1\\x80\\xd0\\xb8\\xd0\\xbf\\xd0\\xbf \\xd0\\xb1\\xd1\\x8b\\xd0\\xbb \\xd1\\x82\\xd0\\xbe\\xd0\\xb3\\xd0\\xb4\\xd0\\xb0 \\xd0\\xbd\\xd0\\xbe\\xd0\\xb2\\xd0\\xbe\\xd0\\xb5 \\xd1\\x81\\xd0\\xbb\\xd0\\xbe\\xd0\\xb2\\xd0\\xbe, \\xd1\\x83\\xd0\\xbf\\xd0\\xbe\\xd1\\x82\\xd1\\x80\\xd0\\xb5\\xd0\\xb1\\xd0\\xbb\\xd1\\x8f\\xd0\\xb2\\xd1\\x88\\xd0\\xb5\\xd0\\xb5\\xd1\\x81\\xd1\\x8f \\xd1\\x82\\xd0\\xbe\\xd0\\xbb\\xd1\\x8c\\xd0\\xba\\xd0\\xbe \\xd1\\x80\\xd0\\xb5\\xd0\\xb4\\xd0\\xba\\xd0\\xb8\\xd0\\xbc\\xd0\\xb8). \\xd0\\x92 \\xd0\\xb7\\xd0\\xb0\\xd0\\xbf\\xd0\\xb8\\xd1\\x81\\xd0\\xbe\\xd1\\x87\\xd0\\xba\\xd0\\xb0\\xd1\\x85, \\xd1\\x80\\xd0\\xb0\\xd0\\xb7\\xd0\\xbe\\xd1\\x81\\xd0\\xbb\\xd0\\xb0\\xd0\\xbd\\xd0\\xbd\\xd1\\x8b\\xd1\\x85 \\xd1\\x83\\xd1\\x82\\xd1\\x80\\xd0\\xbe\\xd0\\xbc \\xd1\\x81 \\xd0\\xba\\xd1\\x80\\xd0\\xb0\\xd1\\x81\\xd0\\xbd\\xd1\\x8b\\xd0\\xbc \\xd0\\xbb\\xd0\\xb0\\xd0\\xba\\xd0\\xb5\\xd0\\xb5\\xd0\\xbc, \\xd0\\xb1\\xd1\\x8b\\xd0\\xbb\\xd0\\xbe \\xd0\\xbd\\xd0\\xb0\\xd0\\xbf\\xd0\\xb8\\xd1\\x81\\xd0\\xb0\\xd0\\xbd\\xd0\\xbe \\xd0\\xb1\\xd0\\xb5\\xd0\\xb7 \\xd1\\x80\\xd0\\xb0\\xd0\\xb7\\xd0\\xbb\\xd0\\xb8\\xd1\\x87\\xd0\\xb8\\xd1\\x8f \\xd0\\xb2\\xd0\\xbe \\xd0\\xb2\\xd1\\x81\\xd0\\xb5\\xd1\\x85:\\n\\xc2\\xabSi vous n'avez rien de mieux \\xc3\\xa0 faire, Monsieur le comte (\\xd0\\xb8\\xd0\\xbb\\xd0\\xb8 mon prince), et si la perspective de passer la soir\\xc3\\xa9e chez une pauvre malade ne vous effraye pas trop, je serai charm\\xc3\\xa9e de vous voir chez moi entre 7 et 10 heures. Annette Scherer\\xc2\\xbb.\\n\\xe2\\x80\\x94 Dieu, quelle virulente sortie! \\xe2\\x80\\x94 \\xd0\\xbe\\xd1\\x82\\xd0\\xb2\\xd0\\xb5\\xd1\\x87\\xd0\\xb0\\xd0\\xbb, \\xd0\\xbd\\xd0\\xb8\\xd1\\x81\\xd0\\xba\\xd0\\xbe\\xd0\\xbb\\xd1\\x8c\\xd0\\xba\\xd0\\xbe \\xd0\\xbd\\xd0\\xb5 \\xd1\\x81\\xd0\\xbc\\xd1\\x83\\xd1\\x82\\xd1\\x8f\\xd1\\x81\\xd1\\x8c \\xd1\\x82\\xd0\\xb0\\xd0\\xba\\xd0\\xbe\\xd1\\x8e \\xd0\\xb2\\xd1\\x81\\xd1\\x82\\xd1\\x80\\xd0\\xb5\\xd1\\x87\\xd0\\xb5\\xd0\\xb9, \\xd0\\xb2\\xd0\\xbe\\xd1\\x88\\xd0\\xb5\\xd0\\xb4\\xd1\\x88\\xd0\\xb8\\xd0\\xb9 \\xd0\\xba\\xd0\\xbd\\xd1\\x8f\\xd0\\xb7\\xd1\\x8c, \\xd0\\xb2 \\xd0\\xbf\\xd1\\x80\\xd0\\xb8\\xd0\\xb4\\xd0\\xb2\\xd0\\xbe\\xd1\\x80\\xd0\\xbd\\xd0\\xbe\\xd0\\xbc, \\xd1\\x88\\xd0\\xb8\\xd1\\x82\\xd0\\xbe\\xd0\\xbc \\xd0\\xbc\\xd1\\x83\\xd0\\xbd\\xd0\\xb4\\xd0\\xb8\\xd1\\x80\\xd0\\xb5, \\xd0\\xb2 \\xd1\\x87\\xd1\\x83\\xd0\\xbb\\xd0\\xba\\xd0\\xb0\\xd1\\x85, \\xd0\\xb1\\xd0\\xb0\\xd1\\x88\\xd0\\xbc\\xd0\\xb0\\xd0\\xba\\xd0\\xb0\\xd1\\x85 \\xd0\\xb8 \\xd0\\xb7\\xd0\\xb2\\xd0\\xb5\\xd0\\xb7\\xd0\\xb4\\xd0\\xb0\\xd1\\x85, \\xd1\\x81 \\xd1\\x81\\xd0\\xb2\\xd0\\xb5\\xd1\\x82\\xd0\\xbb\\xd1\\x8b\\xd0\\xbc \\xd0\\xb2\\xd1\\x8b\\xd1\\x80\\xd0\\xb0\\xd0\\xb6\\xd0\\xb5\\xd0\\xbd\\xd0\\xb8\\xd0\\xb5\\xd0\\xbc \\xd0\\xbf\\xd0\\xbb\\xd0\\xbe\\xd1\\x81\\xd0\\xba\\xd0\\xbe\\xd0\\xb3\\xd0\\xbe \\xd0\\xbb\\xd0\\xb8\\xd1\\x86\\xd0\\xb0.\\n\\xd0\\x9e\\xd0\\xbd \\xd0\\xb3\\xd0\\xbe\\xd0\\xb2\\xd0\\xbe\\xd1\\x80\\xd0\\xb8\\xd0\\xbb \\xd0\\xbd\\xd0\\xb0 \\xd1\\x82\\xd0\\xbe\\xd0\\xbc \\xd0\\xb8\\xd0\\xb7\\xd1\\x8b\\xd1\\x81\\xd0\\xba\\xd0\\xb0\\xd0\\xbd\\xd0\\xbd\\xd0\\xbe\\xd0\\xbc \\xd1\\x84\\xd1\\x80\\xd0\\xb0\\xd0\\xbd\\xd1\\x86\\xd1\\x83\\xd0\\xb7\\xd1\\x81\\xd0\\xba\\xd0\\xbe\\xd0\\xbc \\xd1\\x8f\\xd0\\xb7\\xd1\\x8b\\xd0\\xba\\xd0\\xb5, \\xd0\\xbd\\xd0\\xb0 \\xd0\\xba\\xd0\\xbe\\xd1\\x82\\xd0\\xbe\\xd1\\x80\\xd0\\xbe\\xd0\\xbc \\xd0\\xbd\\xd0\\xb5 \\xd1\\x82\\xd0\\xbe\\xd0\\xbb\\xd1\\x8c\\xd0\\xba\\xd0\\xbe \\xd0\\xb3\\xd0\\xbe\\xd0\\xb2\\xd0\\xbe\\xd1\\x80\\xd0\\xb8\\xd0\\xbb\\xd0\\xb8, \\xd0\\xbd\\xd0\\xbe \\xd0\\xb8 \\xd0\\xb4\\xd1\\x83\\xd0\\xbc\\xd0\\xb0\\xd0\\xbb\\xd0\\xb8 \\xd0\\xbd\\xd0\\xb0\\xd1\\x88\\xd0\\xb8 \\xd0\\xb4\\xd0\\xb5\\xd0\\xb4\\xd1\\x8b, \\xd0\\xb8 \\xd1\\x81 \\xd1\\x82\\xd0\\xb5\\xd0\\xbc\\xd0\\xb8, \\xd1\\x82\\xd0\\xb8\\xd1\\x85\\xd0\\xb8\\xd0\\xbc\\xd0\\xb8, \\xd0\\xbf\\xd0\\xbe\\xd0\\xba\\xd1\\x80\\xd0\\xbe\\xd0\\xb2\\xd0\\xb8\\xd1\\x82\\xd0\\xb5\\xd0\\xbb\\xd1\\x8c\\xd1\\x81\\xd1\\x82\\xd0\\xb2\\xd0\\xb5\\xd0\\xbd\\xd0\\xbd\\xd1\\x8b\\xd0\\xbc\\xd0\\xb8 \\xd0\\xb8\\xd0\\xbd\\xd1\\x82\\xd0\\xbe\\xd0\\xbd\\xd0\\xb0\\xd1\\x86\\xd0\\xb8\\xd1\\x8f\\xd0\\xbc\\xd0\\xb8, \\xd0\\xba\\xd0\\xbe\\xd1\\x82\\xd0\\xbe\\xd1\\x80\\xd1\\x8b\\xd0\\xb5 \\xd1\\x81\\xd0\\xb2\\xd0\\xbe\\xd0\\xb9\\xd1\\x81\\xd1\\x82\\xd0\\xb2\\xd0\\xb5\\xd0\\xbd\\xd0\\xbd\\xd1\\x8b \\xd1\\x81\\xd0\\xbe\\xd1\\x81\\xd1\\x82\\xd0\\xb0\\xd1\\x80\\xd0\\xb5\\xd0\\xb2\\xd1\\x88\\xd0\\xb5\\xd0\\xbc\\xd1\\x83\\xd1\\x81\\xd1\\x8f \\xd0\\xb2 \\xd1\\x81\\xd0\\xb2\\xd0\\xb5\\xd1\\x82\\xd0\\xb5 \\xd0\\xb8 \\xd0\\xbf\\xd1\\x80\\xd0\\xb8 \\xd0\\xb4\\xd0\\xb2\\xd0\\xbe\\xd1\\x80\\xd0\\xb5 \\xd0\\xb7\\xd0\\xbd\\xd0\\xb0\\xd1\\x87\\xd0\\xb8\\xd1\\x82\\xd0\\xb5\\xd0\\xbb\\xd1\\x8c\\xd0\\xbd\\xd0\\xbe\\xd0\\xbc\\xd1\\x83 \\xd1\\x87\\xd0\\xb5\\xd0\\xbb\\xd0\\xbe\\xd0\\xb2\\xd0\\xb5\\xd0\\xba\\xd1\\x83. \\xd0\\x9e\\xd0\\xbd \\xd0\\xbf\\xd0\\xbe\\xd0\\xb4\\xd0\\xbe\\xd1\\x88\\xd0\\xb5\\xd0\\xbb \\xd0\\xba \\xd0\\x90\\xd0\\xbd\\xd0\\xbd\\xd0\\xb5 \\xd0\\x9f\\xd0\\xb0\\xd0\\xb2\\xd0\\xbb\\xd0\\xbe\\xd0\\xb2\\xd0\\xbd\\xd0\\xb5, \\xd0\\xbf\\xd0\\xbe\\xd1\\x86\\xd0\\xb5\\xd0\\xbb\\xd0\\xbe\\xd0\\xb2\\xd0\\xb0\\xd0\\xbb \\xd0\\xb5\\xd0\\xb5 \\xd1\\x80\\xd1\\x83\\xd0\\xba\\xd1\\x83, \\xd0\\xbf\\xd0\\xbe\\xd0\\xb4\\xd1\\x81\\xd1\\x82\\xd0\\xb0\\xd0\\xb2\\xd0\\xb8\\xd0\\xb2 \\xd0\\xb5\\xd0\\xb9 \\xd1\\x81\\xd0\\xb2\\xd0\\xbe\\xd1\\x8e \\xd0\\xbd\\xd0\\xb0\\xd0\\xb4\\xd1\\x83\\xd1\\x88\\xd0\\xb5\\xd0\\xbd\\xd0\\xbd\\xd1\\x83\\xd1\\x8e \\xd0\\xb8 \\xd1\\x81\\xd0\\xb8\\xd1\\x8f\\xd1\\x8e\\xd1\\x89\\xd1\\x83\\xd1\\x8e \\xd0\\xbb\\xd1\\x8b\\xd1\\x81\\xd0\\xb8\\xd0\\xbd\\xd1\\x83, \\xd0\\xb8 \\xd0\\xbf\\xd0\\xbe\\xd0\\xba\\xd0\\xbe\\xd0\\xb9\\xd0\\xbd\\xd0\\xbe \\xd1\\x83\\xd1\\x81\\xd0\\xb5\\xd0\\xbb\\xd1\\x81\\xd1\\x8f \\xd0\\xbd\\xd0\\xb0 \\xd0\\xb4\\xd0\\xb8\\xd0\\xb2\\xd0\\xb0\\xd0\\xbd\\xd0\\xb5.\\n\\xe2\\x80\\x94 Avant tout dites-moi, comment vous allez, ch\\xc3\\xa8re amie? \\xd0\\xa3\\xd1\\x81\\xd0\\xbf\\xd0\\xbe\\xd0\\xba\\xd0\\xbe\\xd0\\xb9\\xd1\\x82\\xd0\\xb5 \\xd0\\xbc\\xd0\\xb5\\xd0\\xbd\\xd1\\x8f, \\xe2\\x80\\x94 \\xd1\\x81\\xd0\\xba\\xd0\\xb0\\xd0\\xb7\\xd0\\xb0\\xd0\\xbb \\xd0\\xbe\\xd0\\xbd, \\xd0\\xbd\\xd0\\xb5 \\xd0\\xb8\\xd0\\xb7\\xd0\\xbc\\xd0\\xb5\\xd0\\xbd\\xd1\\x8f\\xd1\\x8f \\xd0\\xb3\\xd0\\xbe\\xd0\\xbb\\xd0\\xbe\\xd1\\x81\\xd0\\xb0 \\xd0\\xb8 \\xd1\\x82\\xd0\\xbe\\xd0\\xbd\\xd0\\xbe\\xd0\\xbc, \\xd0\\xb2 \\xd0\\xba\\xd0\\xbe\\xd1\\x82\\xd0\\xbe\\xd1\\x80\\xd0\\xbe\\xd0\\xbc \\xd0\\xb8\\xd0\\xb7-\\xd0\\xb7\\xd0\\xb0 \\xd0\\xbf\\xd1\\x80\\xd0\\xb8\\xd0\\xbb\\xd0\\xb8\\xd1\\x87\\xd0\\xb8\\xd1\\x8f \\xd0\\xb8 \\xd1\\x83\\xd1\\x87\\xd0\\xb0\\xd1\\x81\\xd1\\x82\\xd0\\xb8\\xd1\\x8f \\xd0\\xbf\\xd1\\x80\\xd0\\xbe\\xd1\\x81\\xd0\\xb2\\xd0\\xb5\\xd1\\x87\\xd0\\xb8\\xd0\\xb2\\xd0\\xb0\\xd0\\xbb\\xd0\\xbe \\xd1\\x80\\xd0\\xb0\\xd0\\xb2\\xd0\\xbd\\xd0\\xbe\\xd0\\xb4\\xd1\\x83\\xd1\\x88\\xd0\\xb8\\xd0\\xb5 \\xd0\\xb8 \\xd0\\xb4\\xd0\\xb0\\xd0\\xb6\\xd0\\xb5 \\xd0\\xbd\\xd0\\xb0\\xd1\\x81\\xd0\\xbc\\xd0\\xb5\\xd1\\x88\\xd0\\xba\\xd0\\xb0.\\n\\xe2\\x80\\x94 \\xd0\\x9a\\xd0\\xb0\\xd0\\xba \\xd0\\xbc\\xd0\\xbe\\xd0\\xb6\\xd0\\xbd\\xd0\\xbe \\xd0\\xb1\\xd1\\x8b\\xd1\\x82\\xd1\\x8c \\xd0\\xb7\\xd0\\xb4\\xd0\\xbe\\xd1\\x80\\xd0\\xbe\\xd0\\xb2\\xd0\\xbe\\xd0\\xb9... \\xd0\\xba\\xd0\\xbe\\xd0\\xb3\\xd0\\xb4\\xd0\\xb0 \\xd0\\xbd\\xd1\\x80\\xd0\\xb0\\xd0\\xb2\\xd1\\x81\\xd1\\x82\\xd0\\xb2\\xd0\\xb5\\xd0\\xbd\\xd0\\xbd\\xd0\\xbe \\xd1\\x81\\xd1\\x82\\xd1\\x80\\xd0\\xb0\\xd0\\xb4\\xd0\\xb0\\xd0\\xb5\\xd1\\x88\\xd1\\x8c? \\xd0\\xa0\\xd0\\xb0\\xd0\\xb7\\xd0\\xb2\\xd0\\xb5 \\xd0\\xbc\\xd0\\xbe\\xd0\\xb6\\xd0\\xbd\\xd0\\xbe, \\xd0\\xb8\\xd0\\xbc\\xd0\\xb5\\xd1\\x8f \\xd1\\x87\\xd1\\x83\\xd0\\xb2\\xd1\\x81\\xd1\\x82\\xd0\\xb2\\xd0\\xbe, \\xd0\\xbe\\xd1\\x81\\xd1\\x82\\xd0\\xb0\\xd0\\xb2\\xd0\\xb0\\xd1\\x82\\xd1\\x8c\\xd1\\x81\\xd1\\x8f \\xd1\\x81\\xd0\\xbf\\xd0\\xbe\\xd0\\xba\\xd0\\xbe\\xd0\\xb9\\xd0\\xbd\\xd0\\xbe\\xd1\\x8e \\xd0\\xb2 \\xd0\\xbd\\xd0\\xb0\\xd1\\x88\\xd0\\xb5 \\xd0\\xb2\\xd1\\x80\\xd0\\xb5\\xd0\\xbc\\xd1\\x8f? \\xe2\\x80\\x94 \\xd1\\x81\\xd0\\xba\\xd0\\xb0\\xd0\\xb7\\xd0\\xb0\\xd0\\xbb\\xd0\\xb0 \\xd0\\x90\\xd0\\xbd\\xd0\\xbd\\xd0\\xb0 \\xd0\\x9f\\xd0\\xb0\\xd0\\xb2\\xd0\\xbb\\xd0\\xbe\\xd0\\xb2\\xd0\\xbd\\xd0\\xb0. \\xe2\\x80\\x94 \\xd0\\x92\\xd1\\x8b \\xd0\\xb2\\xd0\\xb5\\xd1\\x81\\xd1\\x8c \\xd0\\xb2\\xd0\\xb5\\xd1\\x87\\xd0\\xb5\\xd1\\x80 \\xd1\\x83 \\xd0\\xbc\\xd0\\xb5\\xd0\\xbd\\xd1\\x8f, \\xd0\\xbd\\xd0\\xb0\\xd0\\xb4\\xd0\\xb5\\xd1\\x8e\\xd1\\x81\\xd1\\x8c?\\n\\xe2\\x80\\x94 \\xd0\\x90 \\xd0\\xbf\\xd1\\x80\\xd0\\xb0\\xd0\\xb7\\xd0\\xb4\\xd0\\xbd\\xd0\\xb8\\xd0\\xba \\xd0\\xb0\\xd0\\xbd\\xd0\\xb3\\xd0\\xbb\\xd0\\xb8\\xd0\\xb9\\xd1\\x81\\xd0\\xba\\xd0\\xbe\\xd0\\xb3\\xd0\\xbe \\xd0\\xbf\\xd0\\xbe\\xd1\\x81\\xd0\\xbb\\xd0\\xb0\\xd0\\xbd\\xd0\\xbd\\xd0\\xb8\\xd0\\xba\\xd0\\xb0? \\xd0\\x9d\\xd1\\x8b\\xd0\\xbd\\xd1\\x87\\xd0\\xb5 \\xd1\\x81\\xd0\\xb5\\xd1\\x80\\xd0\\xb5\\xd0\\xb4\\xd0\\xb0. \\xd0\\x9c\\xd0\\xbd\\xd0\\xb5 \\xd0\\xbd\\xd0\\xb0\\xd0\\xb4\\xd0\\xbe \\xd0\\xbf\\xd0\\xbe\\xd0\\xba\\xd0\\xb0\\xd0\\xb7\\xd0\\xb0\\xd1\\x82\\xd1\\x8c\\xd1\\x81\\xd1\\x8f \\xd1\\x82\\xd0\\xb0\\xd0\\xbc, \\xe2\\x80\\x94 \\xd1\\x81\\xd0\\xba\\xd0\\xb0\\xd0\\xb7\\xd0\\xb0\\xd0\\xbb \\xd0\\xba\\xd0\\xbd\\xd1\\x8f\\xd0\\xb7\\xd1\\x8c. \\xe2\\x80\\x94 \\xd0\\x94\\xd0\\xbe\\xd1\\x87\\xd1\\x8c \\xd0\\xb7\\xd0\\xb0\\xd0\\xb5\\xd0\\xb4\\xd0\\xb5\\xd1\\x82 \\xd0\\xb7\\xd0\\xb0 \\xd0\\xbc\\xd0\\xbd\\xd0\\xbe\\xd0\\xb9 \\xd0\\xb8 \\xd0\\xbf\\xd0\\xbe\\xd0\\xb2\\xd0\\xb5\\xd0\\xb7\\xd0\\xb5\\xd1\\x82 \\xd0\\xbc\\xd0\\xb5\\xd0\\xbd\\xd1\\x8f.\\n\\xe2\\x80\\x94 \\xd0\\xaf \\xd0\\xb4\\xd1\\x83\\xd0\\xbc\\xd0\\xb0\\xd0\\xbb\\xd0\\xb0, \\xd1\\x87\\xd1\\x82\\xd0\\xbe \\xd0\\xbd\\xd1\\x8b\\xd0\\xbd\\xd0\\xb5\\xd1\\x88\\xd0\\xbd\\xd0\\xb8\\xd0\\xb9 \\xd0\\xbf\\xd1\\x80\\xd0\\xb0\\xd0\\xb7\\xd0\\xb4\\xd0\\xbd\\xd0\\xb8\\xd0\\xba \\xd0\\xbe\\xd1\\x82\\xd0\\xbc\\xd0\\xb5\\xd0\\xbd\\xd0\\xb5\\xd0\\xbd, Je vous avoue que toutes ces f\\xc3\\xaates et tous ces feux d'artifice commencent \\xc3\\xa0 devenir insipides.\\n\\xe2\\x80\\x94 \\xd0\\x95\\xd0\\xb6\\xd0\\xb5\\xd0\\xbb\\xd0\\xb8 \\xd0\\xb1\\xd1\\x8b \\xd0\\xb7\\xd0\\xbd\\xd0\\xb0\\xd0\\xbb\\xd0\\xb8, \\xd1\\x87\\xd1\\x82\\xd0\\xbe \\xd0\\xb2\\xd1\\x8b \\xd1\\x8d\\xd1\\x82\\xd0\\xbe\\xd0\\xb3\\xd0\\xbe \\xd1\\x85\\xd0\\xbe\\xd1\\x82\\xd0\\xb8\\xd1\\x82\\xd0\\xb5, \\xd0\\xbf\\xd1\\x80\\xd0\\xb0\\xd0\\xb7\\xd0\\xb4\\xd0\\xbd\\xd0\\xb8\\xd0\\xba \\xd0\\xb1\\xd1\\x8b \\xd0\\xbe\\xd1\\x82\\xd0\\xbc\\xd0\\xb5\\xd0\\xbd\\xd0\\xb8\\xd0\\xbb\\xd0\\xb8, \\xe2\\x80\\x94 \\xd1\\x81\\xd0\\xba\\xd0\\xb0\\xd0\\xb7\\xd0\\xb0\\xd0\\xbb \\xd0\\xba\\xd0\\xbd\\xd1\\x8f\\xd0\\xb7\\xd1\\x8c \\xd0\\xbf\\xd0\\xbe \\xd0\\xbf\\xd1\\x80\\xd0\\xb8\\xd0\\xb2\\xd1\\x8b\\xd1\\x87\\xd0\\xba\\xd0\\xb5, \\xd0\\xba\\xd0\\xb0\\xd0\\xba \\xd0\\xb7\\xd0\\xb0\\xd0\\xb2\\xd0\\xb5\\xd0\\xb4\\xd0\\xb5\\xd0\\xbd\\xd0\\xbd\\xd1\\x8b\\xd0\\xb5 \\xd1\\x87\\xd0\\xb0\\xd1\\x81\\xd1\\x8b, \\xd0\\xb3\\xd0\\xbe\\xd0\\xb2\\xd0\\xbe\\xd1\\x80\\xd1\\x8f \\xd0\\xb2\\xd0\\xb5\\xd1\\x89\\xd0\\xb8, \\xd0\\xba\\xd0\\xbe\\xd1\\x82\\xd0\\xbe\\xd1\\x80\\xd1\\x8b\\xd0\\xbc \\xd0\\xbe\\xd0\\xbd \\xd0\\xb8 \\xd0\\xbd\\xd0\\xb5 \\xd1\\x85\\xd0\\xbe\\xd1\\x82\\xd0\\xb5\\xd0\\xbb, \\xd1\\x87\\xd1\\x82\\xd0\\xbe\\xd0\\xb1\\xd1\\x8b \\xd0\\xb2\\xd0\\xb5\\xd1\\x80\\xd0\\xb8\\xd0\\xbb\\xd0\\xb8.\\n\\xe2\\x80\\x94 Ne me tourmentez pas. Eh bien, qu'a-t-on d\\xc3\\xa9cid\\xc3\\xa9 par rapport \\xc3\\xa0 la d\\xc3\\xa9p\\xc3\\xaache de Novosilzoff? Vous savez tout.\\n\\xe2\\x80\\x94 \\xd0\\x9a\\xd0\\xb0\\xd0\\xba \\xd0\\xb2\\xd0\\xb0\\xd0\\xbc \\xd1\\x81\\xd0\\xba\\xd0\\xb0\\xd0\\xb7\\xd0\\xb0\\xd1\\x82\\xd1\\x8c? \\xe2\\x80\\x94 \\xd1\\x81\\xd0\\xba\\xd0\\xb0\\xd0\\xb7\\xd0\\xb0\\xd0\\xbb \\xd0\\xba\\xd0\\xbd\\xd1\\x8f\\xd0\\xb7\\xd1\\x8c \\xd1\\x85\\xd0\\xbe\\xd0\\xbb\\xd0\\xbe\\xd0\\xb4\\xd0\\xbd\\xd1\\x8b\\xd0\\xbc, \\xd1\\x81\\xd0\\xba\\xd1\\x83\\xd1\\x87\\xd0\\xb0\\xd1\\x8e\\xd1\\x89\\xd0\\xb8\\xd0\\xbc \\xd1\\x82\\xd0\\xbe\\xd0\\xbd\\xd0\\xbe\\xd0\\xbc. \\xe2\\x80\\x94 Qu'a-t-on d\\xc3\\xa9cid\\xc3\\xa9? On a d\\xc3\\xa9cid\\xc3\\xa9 que Buonaparte a br\\xc3\\xbbl\\xc3\\xa9 ses vaisseaux, et je crois que nous sommes en train de br\\xc3\\xbbler les n\\xc3\\xb4tres.\\n\\xd0\\x9a\\xd0\\xbd\\xd1\\x8f\\xd0\\xb7\\xd1\\x8c \\xd0\\x92\\xd0\\xb0\\xd1\\x81\\xd0\\xb8\\xd0\\xbb\\xd0\\xb8\\xd0\\xb9 \\xd0\\xb3\\xd0\\xbe\\xd0\\xb2\\xd0\\xbe\\xd1\\x80\\xd0\\xb8\\xd0\\xbb \\xd0\\xb2\\xd1\\x81\\xd0\\xb5\\xd0\\xb3\\xd0\\xb4\\xd0\\xb0 \\xd0\\xbb\\xd0\\xb5\\xd0\\xbd\\xd0\\xb8\\xd0\\xb2\\xd0\\xbe, \\xd0\\xba\\xd0\\xb0\\xd0\\xba \\xd0\\xb0\\xd0\\xba\\xd1\\x82\\xd0\\xb5\\xd1\\x80 \\xd0\\xb3\\xd0\\xbe\\xd0\\xb2\\xd0\\xbe\\xd1\\x80\\xd0\\xb8\\xd1\\x82 \\xd1\\x80\\xd0\\xbe\\xd0\\xbb\\xd1\\x8c \\xd1\\x81\\xd1\\x82\\xd0\\xb0\\xd1\\x80\\xd0\\xbe\\xd0\\xb9 \\xd0\\xbf\\xd0\\xb8\\xd0\\xb5\\xd1\\x81\\xd1\\x8b. \\xd0\\x90\\xd0\\xbd\\xd0\\xbd\\xd0\\xb0 \\xd0\\x9f\\xd0\\xb0\\xd0\\xb2\\xd0\\xbb\\xd0\\xbe\\xd0\\xb2\\xd0\\xbd\\xd0\\xb0 \\xd0\\xa8\\xd0\\xb5\\xd1\\x80\\xd0\\xb5\\xd1\\x80, \\xd0\\xbd\\xd0\\xb0\\xd0\\xbf\\xd1\\x80\\xd0\\xbe\\xd1\\x82\\xd0\\xb8\\xd0\\xb2, \\xd0\\xbd\\xd0\\xb5\\xd1\\x81\\xd0\\xbc\\xd0\\xbe\\xd1\\x82\\xd1\\x80\\xd1\\x8f \\xd0\\xbd\\xd0\\xb0 \\xd1\\x81\\xd0\\xb2\\xd0\\xbe\\xd0\\xb8 \\xd1\\x81\\xd0\\xbe\\xd1\\x80\\xd0\\xbe\\xd0\\xba \\xd0\\xbb\\xd0\\xb5\\xd1\\x82, \\xd0\\xb1\\xd1\\x8b\\xd0\\xbb\\xd0\\xb0 \\xd0\\xbf\\xd1\\x80\\xd0\\xb5\\xd0\\xb8\\xd1\\x81\\xd0\\xbf\\xd0\\xbe\\xd0\\xbb\\xd0\\xbd\\xd0\\xb5\\xd0\\xbd\\xd0\\xb0 \\xd0\\xbe\\xd0\\xb6\\xd0\\xb8\\xd0\\xb2\\xd0\\xbb\\xd0\\xb5\\xd0\\xbd\\xd0\\xb8\\xd1\\x8f \\xd0\\xb8 \\xd0\\xbf\\xd0\\xbe\\xd1\\x80\\xd1\\x8b\\xd0\\xb2\\xd0\\xbe\\xd0\\xb2.\\n\\xd0\\x91\\xd1\\x8b\\xd1\\x82\\xd1\\x8c \\xd1\\x8d\\xd0\\xbd\\xd1\\x82\\xd1\\x83\\xd0\\xb7\\xd0\\xb8\\xd0\\xb0\\xd1\\x81\\xd1\\x82\\xd0\\xba\\xd0\\xbe\\xd0\\xb9 \\xd1\\x81\\xd0\\xb4\\xd0\\xb5\\xd0\\xbb\\xd0\\xb0\\xd0\\xbb\\xd0\\xbe\\xd1\\x81\\xd1\\x8c \\xd0\\xb5\\xd0\\xb5 \\xd0\\xbe\\xd0\\xb1\\xd1\\x89\\xd0\\xb5\\xd1\\x81\\xd1\\x82\\xd0\\xb2\\xd0\\xb5\\xd0\\xbd\\xd0\\xbd\\xd1\\x8b\\xd0\\xbc \\xd0\\xbf\\xd0\\xbe\\xd0\\xbb\\xd0\\xbe\\xd0\\xb6\\xd0\\xb5\\xd0\\xbd\\xd0\\xb8\\xd0\\xb5\\xd0\\xbc, \\xd0\\xb8 \\xd0\\xb8\\xd0\\xbd\\xd0\\xbe\\xd0\\xb3\\xd0\\xb4\\xd0\\xb0, \\xd0\\xba\\xd0\\xbe\\xd0\\xb3\\xd0\\xb4\\xd0\\xb0 \\xd0\\xb5\\xd0\\xb9 \\xd0\\xb4\\xd0\\xb0\\xd0\\xb6\\xd0\\xb5 \\xd1\\x82\\xd0\\xbe\\xd0\\xb3\\xd0\\xbe \\xd0\\xbd\\xd0\\xb5 \\xd1\\x85\\xd0\\xbe\\xd1\\x82\\xd0\\xb5\\xd0\\xbb\\xd0\\xbe\\xd1\\x81\\xd1\\x8c, \\xd0\\xbe\\xd0\\xbd\\xd0\\xb0, \\xd1\\x87\\xd1\\x82\\xd0\\xbe\\xd0\\xb1\\xd1\\x8b \\xd0\\xbd\\xd0\\xb5 \\xd0\\xbe\\xd0\\xb1\\xd0\\xbc\\xd0\\xb0\\xd0\\xbd\\xd1\\x83\\xd1\\x82\\xd1\\x8c \\xd0\\xbe\\xd0\\xb6\\xd0\\xb8\\xd0\\xb4\\xd0\\xb0\\xd0\\xbd\\xd0\\xb8\\xd0\\xb9 \\xd0\\xbb\\xd1\\x8e\\xd0\\xb4\\xd0\\xb5\\xd0\\xb9, \\xd0\\xb7\\xd0\\xbd\\xd0\\xb0\\xd0\\xb2\\xd1\\x88\\xd0\\xb8\\xd1\\x85 \\xd0\\xb5\\xd0\\xb5, \\xd0\\xb4\\xd0\\xb5\\xd0\\xbb\\xd0\\xb0\\xd0\\xbb\\xd0\\xb0\\xd1\\x81\\xd1\\x8c \\xd1\\x8d\\xd0\\xbd\\xd1\\x82\\xd1\\x83\\xd0\\xb7\\xd0\\xb8\\xd0\\xb0\\xd1\\x81\\xd1\\x82\\xd0\\xba\\xd0\\xbe\\xd0\\xb9. \\xd0\\xa1\\xd0\\xb4\\xd0\\xb5\\xd1\\x80\\xd0\\xb6\\xd0\\xb0\\xd0\\xbd\\xd0\\xbd\\xd0\\xb0\\xd1\\x8f \\xd1\\x83\\xd0\\xbb\\xd1\\x8b\\xd0\\xb1\\xd0\\xba\\xd0\\xb0, \\xd0\\xb8\\xd0\\xb3\\xd1\\x80\\xd0\\xb0\\xd0\\xb2\\xd1\\x88\\xd0\\xb0\\xd1\\x8f \\xd0\\xbf\\xd0\\xbe\\xd1\\x81\\xd1\\x82\\xd0\\xbe\\xd1\\x8f\\xd0\\xbd\\xd0\\xbd\\xd0\\xbe \\xd0\\xbd\\xd0\\xb0 \\xd0\\xbb\\xd0\\xb8\\xd1\\x86\\xd0\\xb5 \\xd0\\x90\\xd0\\xbd\\xd0\\xbd\\xd1\\x8b \\xd0\\x9f\\xd0\\xb0\\xd0\\xb2\\xd0\\xbb\\xd0\\xbe\\xd0\\xb2\\xd0\\xbd\\xd1\\x8b, \\xd1\\x85\\xd0\\xbe\\xd1\\x82\\xd1\\x8f \\xd0\\xb8 \\xd0\\xbd\\xd0\\xb5 \\xd1\\x88\\xd0\\xbb\\xd0\\xb0 \\xd0\\xba \\xd0\\xb5\\xd0\\xb5 \\xd0\\xbe\\xd1\\x82\\xd0\\xb6\\xd0\\xb8\\xd0\\xb2\\xd1\\x88\\xd0\\xb8\\xd0\\xbc \\xd1\\x87\\xd0\\xb5\\xd1\\x80\\xd1\\x82\\xd0\\xb0\\xd0\\xbc, \\xd0\\xb2\\xd1\\x8b\\xd1\\x80\\xd0\\xb0\\xd0\\xb6\\xd0\\xb0\\xd0\\xbb\\xd0\\xb0, \\xd0\\xba\\xd0\\xb0\\xd0\\xba \\xd1\\x83 \\xd0\\xb8\\xd0\\xb7\\xd0\\xb1\\xd0\\xb0\\xd0\\xbb\\xd0\\xbe\\xd0\\xb2\\xd0\\xb0\\xd0\\xbd\\xd0\\xbd\\xd1\\x8b\\xd1\\x85 \\xd0\\xb4\\xd0\\xb5\\xd1\\x82\\xd0\\xb5\\xd0\\xb9, \\xd0\\xbf\\xd0\\xbe\\xd1\\x81\\xd1\\x82\\xd0\\xbe\\xd1\\x8f\\xd0\\xbd\\xd0\\xbd\\xd0\\xbe\\xd0\\xb5 \\xd1\\x81\\xd0\\xbe\\xd0\\xb7\\xd0\\xbd\\xd0\\xb0\\xd0\\xbd\\xd0\\xb8\\xd0\\xb5 \\xd1\\x81\\xd0\\xb2\\xd0\\xbe\\xd0\\xb5\\xd0\\xb3\\xd0\\xbe \\xd0\\xbc\\xd0\\xb8\\xd0\\xbb\\xd0\\xbe\\xd0\\xb3\\xd0\\xbe \\xd0\\xbd\\xd0\\xb5\\xd0\\xb4\\xd0\\xbe\\xd1\\x81\\xd1\\x82\\xd0\\xb0\\xd1\\x82\\xd0\\xba\\xd0\\xb0, \\xd0\\xbe\\xd1\\x82 \\xd0\\xba\\xd0\\xbe\\xd1\\x82\\xd0\\xbe\\xd1\\x80\\xd0\\xbe\\xd0\\xb3\\xd0\\xbe \\xd0\\xbe\\xd0\\xbd\\xd0\\xb0 \\xd0\\xbd\\xd0\\xb5 \\xd1\\x85\\xd0\\xbe\\xd1\\x87\\xd0\\xb5\\xd1\\x82, \\xd0\\xbd\\xd0\\xb5 \\xd0\\xbc\\xd0\\xbe\\xd0\\xb6\\xd0\\xb5\\xd1\\x82 \\xd0\\xb8 \\xd0\\xbd\\xd0\\xb5 \\xd0\\xbd\\xd0\\xb0\\xd1\\x85\\xd0\\xbe\\xd0\\xb4\\xd0\\xb8\\xd1\\x82 \\xd0\\xbd\\xd1\\x83\\xd0\\xb6\\xd0\\xbd\\xd1\\x8b\\xd0\\xbc \\xd0\\xb8\\xd1\\x81\\xd0\\xbf\\xd1\\x80\\xd0\\xb0\\xd0\\xb2\\xd0\\xbb\\xd1\\x8f\\xd1\\x82\\xd1\\x8c\\xd1\\x81\\xd1\\x8f.\\n\\xd0\\x92 \\xd1\\x81\\xd0\\xb5\\xd1\\x80\\xd0\\xb5\\xd0\\xb4\\xd0\\xb8\\xd0\\xbd\\xd0\\xb5 \\xd1\\x80\\xd0\\xb0\\xd0\\xb7\\xd0\\xb3\\xd0\\xbe\\xd0\\xb2\\xd0\\xbe\\xd1\\x80\\xd0\\xb0 \\xd0\\xbf\\xd1\\x80\\xd0\\xbe \\xd0\\xbf\\xd0\\xbe\\xd0\\xbb\\xd0\\xb8\\xd1\\x82\\xd0\\xb8\\xd1\\x87\\xd0\\xb5\\xd1\\x81\\xd0\\xba\\xd0\\xb8\\xd0\\xb5 \\xd0\\xb4\\xd0\\xb5\\xd0\\xb9\\xd1\\x81\\xd1\\x82\\xd0\\xb2\\xd0\\xb8\\xd1\\x8f \\xd0\\x90\\xd0\\xbd\\xd0\\xbd\\xd0\\xb0 \\xd0\\x9f\\xd0\\xb0\\xd0\\xb2\\xd0\\xbb\\xd0\\xbe\\xd0\\xb2\\xd0\\xbd\\xd0\\xb0 \\xd1\\x80\\xd0\\xb0\\xd0\\xb7\\xd0\\xb3\\xd0\\xbe\\xd1\\x80\\xd1\\x8f\\xd1\\x87\\xd0\\xb8\\xd0\\xbb\\xd0\\xb0\\xd1\\x81\\xd1\\x8c.\\n\\xe2\\x80\\x94 \\xd0\\x90\\xd1\\x85, \\xd0\\xbd\\xd0\\xb5 \\xd0\\xb3\\xd0\\xbe\\xd0\\xb2\\xd0\\xbe\\xd1\\x80\\xd0\\xb8\\xd1\\x82\\xd0\\xb5 \\xd0\\xbc\\xd0\\xbd\\xd0\\xb5 \\xd0\\xbf\\xd1\\x80\\xd0\\xbe \\xd0\\x90\\xd0\\xb2\\xd1\\x81\\xd1\\x82\\xd1\\x80\\xd0\\xb8\\xd1\\x8e! \\xd0\\xaf \\xd0\\xbd\\xd0\\xb8\\xd1\\x87\\xd0\\xb5\\xd0\\xb3\\xd0\\xbe \\xd0\\xbd\\xd0\\xb5 \\xd0\\xbf\\xd0\\xbe\\xd0\\xbd\\xd0\\xb8\\xd0\\xbc\\xd0\\xb0\\xd1\\x8e, \\xd0\\xbc\\xd0\\xbe\\xd0\\xb6\\xd0\\xb5\\xd1\\x82 \\xd0\\xb1\\xd1\\x8b\\xd1\\x82\\xd1\\x8c, \\xd0\\xbd\\xd0\\xbe \\xd0\\x90\\xd0\\xb2\\xd1\\x81\\xd1\\x82\\xd1\\x80\\xd0\\xb8\\xd1\\x8f \\xd0\\xbd\\xd0\\xb8\\xd0\\xba\\xd0\\xbe\\xd0\\xb3\\xd0\\xb4\\xd0\\xb0 \\xd0\\xbd\\xd0\\xb5 \\xd1\\x85\\xd0\\xbe\\xd1\\x82\\xd0\\xb5\\xd0\\xbb\\xd0\\xb0 \\xd0\\xb8 \\xd0\\xbd\\xd0\\xb5 \\xd1\\x85\\xd0\\xbe\\xd1\\x87\\xd0\\xb5\\xd1\\x82 \\xd0\\xb2\\xd0\\xbe\\xd0\\xb9\\xd0\\xbd\\xd1\\x8b. \\xd0\\x9e\\xd0\\xbd\\xd0\\xb0 \\xd0\\xbf\\xd1\\x80\\xd0\\xb5\\xd0\\xb4\\xd0\\xb0\\xd0\\xb5\\xd1\\x82 \\xd0\\xbd\\xd0\\xb0\\xd1\\x81. \\xd0\\xa0\\xd0\\xbe\\xd1\\x81\\xd1\\x81\\xd0\\xb8\\xd1\\x8f \\xd0\\xbe\\xd0\\xb4\\xd0\\xbd\\xd0\\xb0 \\xd0\\xb4\\xd0\\xbe\\xd0\\xbb\\xd0\\xb6\\xd0\\xbd\\xd0\\xb0 \\xd0\\xb1\\xd1\\x8b\\xd1\\x82\\xd1\\x8c \\xd1\\x81\\xd0\\xbf\\xd0\\xb0\\xd1\\x81\\xd0\\xb8\\xd1\\x82\\xd0\\xb5\\xd0\\xbb\\xd1\\x8c\\xd0\\xbd\\xd0\\xb8\\xd1\\x86\\xd0\\xb5\\xd0\\xb9 \\xd0\\x95\\xd0\\xb2\\xd1\\x80\\xd0\\xbe\\xd0\\xbf\\xd1\\x8b. \\xd0\\x9d\\xd0\\xb0\\xd1\\x88 \\xd0\\xb1\\xd0\\xbb\\xd0\\xb0\\xd0\\xb3\\xd0\\xbe\\xd0\\xb4\\xd0\\xb5\\xd1\\x82\\xd0\\xb5\\xd0\\xbb\\xd1\\x8c \\xd0\\xb7\\xd0\\xbd\\xd0\\xb0\\xd0\\xb5\\xd1\\x82 \\xd1\\x81\\xd0\\xb2\\xd0\\xbe\\xd0\\xb5 \\xd0\\xb2\\xd1\\x8b\\xd1\\x81\\xd0\\xbe\\xd0\\xba\\xd0\\xbe\\xd0\\xb5 \\xd0\\xbf\\xd1\\x80\\xd0\\xb8\\xd0\\xb7\\xd0\\xb2\\xd0\\xb0\\xd0\\xbd\\xd0\\xb8\\xd0\\xb5 \\xd0\\xb8 \\xd0\\xb1\\xd1\\x83\\xd0\\xb4\\xd0\\xb5\\xd1\\x82 \\xd0\\xb2\\xd0\\xb5\\xd1\\x80\\xd0\\xb5\\xd0\\xbd \\xd0\\xb5\\xd0\\xbc\\xd1\\x83. \\xd0\\x92\\xd0\\xbe\\xd1\\x82 \\xd0\\xbe\\xd0\\xb4\\xd0\\xbd\\xd0\\xbe, \\xd0\\xb2\\xd0\\xbe \\xd1\\x87\\xd1\\x82\\xd0\\xbe \\xd1\\x8f \\xd0\\xb2\\xd0\\xb5\\xd1\\x80\\xd1\\x8e. \\xd0\\x9d\\xd0\\xb0\\xd1\\x88\\xd0\\xb5\\xd0\\xbc\\xd1\\x83 \\xd0\\xb4\\xd0\\xbe\\xd0\\xb1\\xd1\\x80\\xd0\\xbe\\xd0\\xbc\\xd1\\x83 \\xd0\\xb8 \\xd1\\x87\\xd1\\x83\\xd0\\xb4\\xd0\\xbd\\xd0\\xbe\\xd0\\xbc\\xd1\\x83 \\xd0\\xb3\\xd0\\xbe\\xd1\\x81\\xd1\\x83\\xd0\\xb4\\xd0\\xb0\\xd1\\x80\\xd1\\x8e \\xd0\\xbf\\xd1\\x80\\xd0\\xb5\\xd0\\xb4\\xd1\\x81\\xd1\\x82\\xd0\\xbe\\xd0\\xb8\\xd1\\x82 \\xd0\\xb2\\xd0\\xb5\\xd0\\xbb\\xd0\\xb8\\xd1\\x87\\xd0\\xb0\\xd0\\xb9\\xd1\\x88\\xd0\\xb0\\xd1\\x8f \\xd1\\x80\\xd0\\xbe\\xd0\\xbb\\xd1\\x8c \\xd0\\xb2 \\xd0\\xbc\\xd0\\xb8\\xd1\\x80\\xd0\\xb5, \\xd0\\xb8 \\xd0\\xbe\\xd0\\xbd \\xd1\\x82\\xd0\\xb0\\xd0\\xba \\xd0\\xb4\\xd0\\xbe\\xd0\\xb1\\xd1\\x80\\xd0\\xbe\\xd0\\xb4\\xd0\\xb5\\xd1\\x82\\xd0\\xb5\\xd0\\xbb\\xd0\\xb5\\xd0\\xbd \\xd0\\xb8 \\xd1\\x85\\xd0\\xbe\\xd1\\x80\\xd0\\xbe\\xd1\\x88, \\xd1\\x87\\xd1\\x82\\xd0\\xbe \\xd0\\x91\\xd0\\xbe\\xd0\\xb3 \\xd0\\xbd\\xd0\\xb5 \\xd0\\xbe\\xd1\\x81\\xd1\\x82\\xd0\\xb0\\xd0\\xb2\\xd0\\xb8\\xd1\\x82 \\xd0\\xb5\\xd0\\xb3\\xd0\\xbe, \\xd0\\xb8 \\xd0\\xbe\\xd0\\xbd \\xd0\\xb8\\xd1\\x81\\xd0\\xbf\\xd0\\xbe\\xd0\\xbb\\xd0\\xbd\\xd0\\xb8\\xd1\\x82 \\xd1\\x81\\xd0\\xb2\\xd0\\xbe\\xd0\\xb5 \\xd0\\xbf\\xd1\\x80\\xd0\\xb8\\xd0\\xb7\\xd0\\xb2\\xd0\\xb0\\xd0\\xbd\\xd0\\xb8\\xd0\\xb5 \\xd0\\xb7\\xd0\\xb0\\xd0\\xb4\\xd0\\xb0\\xd0\\xb2\\xd0\\xb8\\xd1\\x82\\xd1\\x8c \\xd0\\xb3\\xd0\\xb8\\xd0\\xb4\\xd1\\x80\\xd1\\x83 \\xd1\\x80\\xd0\\xb5\\xd0\\xb2\\xd0\\xbe\\xd0\\xbb\\xd1\\x8e\\xd1\\x86\\xd0\\xb8\\xd0\\xb8, \\xd0\\xba\\xd0\\xbe\\xd1\\x82\\xd0\\xbe\\xd1\\x80\\xd0\\xb0\\xd1\\x8f \\xd1\\x82\\xd0\\xb5\\xd0\\xbf\\xd0\\xb5\\xd1\\x80\\xd1\\x8c \\xd0\\xb5\\xd1\\x89\\xd0\\xb5 \\xd1\\x83\\xd0\\xb6\\xd0\\xb0\\xd1\\x81\\xd0\\xbd\\xd0\\xb5\\xd0\\xb5 \\xd0\\xb2 \\xd0\\xbb\\xd0\\xb8\\xd1\\x86\\xd0\\xb5 \\xd1\\x8d\\xd1\\x82\\xd0\\xbe\\xd0\\xb3\\xd0\\xbe \\xd1\\x83\\xd0\\xb1\\xd0\\xb8\\xd0\\xb9\\xd1\\x86\\xd1\\x8b \\xd0\\xb8 \\xd0\\xb7\\xd0\\xbb\\xd0\\xbe\\xd0\\xb4\\xd0\\xb5\\xd1\\x8f. \\xd0\\x9c\\xd1\\x8b \\xd0\\xbe\\xd0\\xb4\\xd0\\xbd\\xd0\\xb8 \\xd0\\xb4\\xd0\\xbe\\xd0\\xbb\\xd0\\xb6\\xd0\\xbd\\xd1\\x8b \\xd0\\xb8\\xd1\\x81\\xd0\\xba\\xd1\\x83\\xd0\\xbf\\xd0\\xb8\\xd1\\x82\\xd1\\x8c \\xd0\\xba\\xd1\\x80\\xd0\\xbe\\xd0\\xb2\\xd1\\x8c \\xd0\\xbf\\xd1\\x80\\xd0\\xb0\\xd0\\xb2\\xd0\\xb5\\xd0\\xb4\\xd0\\xbd\\xd0\\xb8\\xd0\\xba\\xd0\\xb0. \\xd0\\x9d\\xd0\\xb0 \\xd0\\xba\\xd0\\xbe\\xd0\\xb3\\xd0\\xbe \\xd0\\xbd\\xd0\\xb0\\xd0\\xbc \\xd0\\xbd\\xd0\\xb0\\xd0\\xb4\\xd0\\xb5\\xd1\\x8f\\xd1\\x82\\xd1\\x8c\\xd1\\x81\\xd1\\x8f, \\xd1\\x8f \\xd0\\xb2\\xd0\\xb0\\xd1\\x81 \\xd1\\x81\\xd0\\xbf\\xd1\\x80\\xd0\\xb0\\xd1\\x88\\xd0\\xb8\\xd0\\xb2\\xd0\\xb0\\xd1\\x8e?.. \\xd0\\x90\\xd0\\xbd\\xd0\\xb3\\xd0\\xbb\\xd0\\xb8\\xd1\\x8f \\xd1\\x81 \\xd1\\x81\\xd0\\xb2\\xd0\\xbe\\xd0\\xb8\\xd0\\xbc \\xd0\\xba\\xd0\\xbe\\xd0\\xbc\\xd0\\xbc\\xd0\\xb5\\xd1\\x80\\xd1\\x87\\xd0\\xb5\\xd1\\x81\\xd0\\xba\\xd0\\xb8\\xd0\\xbc \\xd0\\xb4\\xd1\\x83\\xd1\\x85\\xd0\\xbe\\xd0\\xbc \\xd0\\xbd\\xd0\\xb5 \\xd0\\xbf\\xd0\\xbe\\xd0\\xb9\\xd0\\xbc\\xd0\\xb5\\xd1\\x82 \\xd0\\xb8 \\xd0\\xbd\\xd0\\xb5 \\xd0\\xbc\\xd0\\xbe\\xd0\\xb6\\xd0\\xb5\\xd1\\x82 \\xd0\\xbf\\xd0\\xbe\\xd0\\xbd\\xd1\\x8f\\xd1\\x82\\xd1\\x8c \\xd0\\xb2\\xd1\\x81\\xd1\\x8e \\xd0\\xb2\\xd1\\x8b\\xd1\\x81\\xd0\\xbe\\xd1\\x82\\xd1\\x83 \\xd0\\xb4\\xd1\\x83\\xd1\\x88\\xd0\\xb8 \\xd0\\xb8\\xd0\\xbc\\xd0\\xbf\\xd0\\xb5\\xd1\\x80\\xd0\\xb0\\xd1\\x82\\xd0\\xbe\\xd1\\x80\\xd0\\xb0 \\xd0\\x90\\xd0\\xbb\\xd0\\xb5\\xd0\\xba\\xd1\\x81\\xd0\\xb0\\xd0\\xbd\\xd0\\xb4\\xd1\\x80\\xd0\\xb0. \\xd0\\x9e\\xd0\\xbd\\xd0\\xb0 \\xd0\\xbe\\xd1\\x82\\xd0\\xba\\xd0\\xb0\\xd0\\xb7\\xd0\\xb0\\xd0\\xbb\\xd0\\xb0\\xd1\\x81\\xd1\\x8c \\xd0\\xbe\\xd1\\x87\\xd0\\xb8\\xd1\\x81\\xd1\\x82\\xd0\\xb8\\xd1\\x82\\xd1\\x8c \\xd0\\x9c\\xd0\\xb0\\xd0\\xbb\\xd1\\x8c\\xd1\\x82\\xd1\\x83. \\xd0\\x9e\\xd0\\xbd\\xd0\\xb0 \\xd1\\x85\\xd0\\xbe\\xd1\\x87\\xd0\\xb5\\xd1\\x82 \\xd0\\xb2\\xd0\\xb8\\xd0\\xb4\\xd0\\xb5\\xd1\\x82\\xd1\\x8c, \\xd0\\xb8\\xd1\\x89\\xd0\\xb5\\xd1\\x82 \\xd0\\xb7\\xd0\\xb0\\xd0\\xb4\\xd0\\xbd\\xd1\\x8e\\xd1\\x8e \\xd0\\xbc\\xd1\\x8b\\xd1\\x81\\xd0\\xbb\\xd1\\x8c \\xd0\\xbd\\xd0\\xb0\\xd1\\x88\\xd0\\xb8\\xd1\\x85 \\xd0\\xb4\\xd0\\xb5\\xd0\\xb9\\xd1\\x81\\xd1\\x82\\xd0\\xb2\\xd0\\xb8\\xd0\\xb9. \\xd0\\xa7\\xd1\\x82\\xd0\\xbe \\xd0\\xbe\\xd0\\xbd\\xd0\\xb8 \\xd1\\x81\\xd0\\xba\\xd0\\xb0\\xd0\\xb7\\xd0\\xb0\\xd0\\xbb\\xd0\\xb8 \\xd0\\x9d\\xd0\\xbe\\xd0\\xb2\\xd0\\xbe\\xd1\\x81\\xd0\\xb8\\xd0\\xbb\\xd1\\x8c\\xd1\\x86\\xd0\\xb5\\xd0\\xb2\\xd1\\x83? \\xd0\\x9d\\xd0\\xb8\\xd1\\x87\\xd0\\xb5\\xd0\\xb3\\xd0\\xbe. \\xd0\\x9e\\xd0\\xbd\\xd0\\xb8 \\xd0\\xbd\\xd0\\xb5 \\xd0\\xbf\\xd0\\xbe\\xd0\\xbd\\xd1\\x8f\\xd0\\xbb\\xd0\\xb8, \\xd0\\xbe\\xd0\\xbd\\xd0\\xb8 \\xd0\\xbd\\xd0\\xb5 \\xd0\\xbc\\xd0\\xbe\\xd0\\xb3\\xd0\\xbb\\xd0\\xb8 \\xd0\\xbf\\xd0\\xbe\\xd0\\xbd\\xd1\\x8f\\xd1\\x82\\xd1\\x8c \\xd1\\x81\\xd0\\xb0\\xd0\\xbc\\xd0\\xbe\\xd0\\xbe\\xd1\\x82\\xd0\\xb2\\xd0\\xb5\\xd1\\x80\\xd0\\xb6\\xd0\\xb5\\xd0\\xbd\\xd0\\xb8\\xd1\\x8f \\xd0\\xbd\\xd0\\xb0\\xd1\\x88\\xd0\\xb5\\xd0\\xb3\\xd0\\xbe \\xd0\\xb8\\xd0\\xbc\\xd0\\xbf\\xd0\\xb5\\xd1\\x80\\xd0\\xb0\\xd1\\x82\\xd0\\xbe\\xd1\\x80\\xd0\\xb0, \\xd0\\xba\\xd0\\xbe\\xd1\\x82\\xd0\\xbe\\xd1\\x80\\xd1\\x8b\\xd0\\xb9 \\xd0\\xbd\\xd0\\xb8\\xd1\\x87\\xd0\\xb5\\xd0\\xb3\\xd0\\xbe \\xd0\\xbd\\xd0\\xb5 \\xd1\\x85\\xd0\\xbe\\xd1\\x87\\xd0\\xb5\\xd1\\x82 \\xd0\\xb4\\xd0\\xbb\\xd1\\x8f \\xd1\\x81\\xd0\\xb5\\xd0\\xb1\\xd1\\x8f \\xd0\\xb8 \\xd0\\xb2\\xd1\\x81\\xd0\\xb5 \\xd1\\x85\\xd0\\xbe\\xd1\\x87\\xd0\\xb5\\xd1\\x82 \\xd0\\xb4\\xd0\\xbb\\xd1\\x8f \\xd0\\xb1\\xd0\\xbb\\xd0\\xb0\\xd0\\xb3\\xd0\\xb0 \\xd0\\xbc\\xd0\\xb8\\xd1\\x80\\xd0\\xb0. \\xd0\\x98 \\xd1\\x87\\xd1\\x82\\xd0\\xbe \\xd0\\xbe\\xd0\\xbd\\xd0\\xb8 \\xd0\\xbe\\xd0\\xb1\\xd0\\xb5\\xd1\\x89\\xd0\\xb0\\xd0\\xbb\\xd0\\xb8? \\xd0\\x9d\\xd0\\xb8\\xd1\\x87\\xd0\\xb5\\xd0\\xb3\\xd0\\xbe. \\xd0\\x98 \\xd1\\x87\\xd1\\x82\\xd0\\xbe \\xd0\\xbe\\xd0\\xb1\\xd0\\xb5\\xd1\\x89\\xd0\\xb0\\xd0\\xbb\\xd0\\xb8, \\xd0\\xb8 \\xd1\\x82\\xd0\\xbe\\xd0\\xb3\\xd0\\xbe \\xd0\\xbd\\xd0\\xb5 \\xd0\\xb1\\xd1\\x83\\xd0\\xb4\\xd0\\xb5\\xd1\\x82! \\xd0\\x9f\\xd1\\x80\\xd1\\x83\\xd1\\x81\\xd1\\x81\\xd0\\xb8\\xd1\\x8f \\xd1\\x83\\xd0\\xb6\\xd0\\xb5 \\xd0\\xbe\\xd0\\xb1\\xd1\\x8a\\xd1\\x8f\\xd0\\xb2\\xd0\\xb8\\xd0\\xbb\\xd0\\xb0, \\xd1\\x87\\xd1\\x82\\xd0\\xbe \\xd0\\x91\\xd0\\xbe\\xd0\\xbd\\xd0\\xb0\\xd0\\xbf\\xd0\\xb0\\xd1\\x80\\xd1\\x82\\xd0\\xb5 \\xd0\\xbd\\xd0\\xb5\\xd0\\xbf\\xd0\\xbe\\xd0\\xb1\\xd0\\xb5\\xd0\\xb4\\xd0\\xb8\\xd0\\xbc \\xd0\\xb8 \\xd1\\x87\\xd1\\x82\\xd0\\xbe \\xd0\\xb2\\xd1\\x81\\xd1\\x8f \\xd0\\x95\\xd0\\xb2\\xd1\\x80\\xd0\\xbe\\xd0\\xbf\\xd0\\xb0 \\xd0\\xbd\\xd0\\xb8\\xd1\\x87\\xd0\\xb5\\xd0\\xb3\\xd0\\xbe \\xd0\\xbd\\xd0\\xb5 \\xd0\\xbc\\xd0\\xbe\\xd0\\xb6\\xd0\\xb5\\xd1\\x82 \\xd0\\xbf\\xd1\\x80\\xd0\\xbe\\xd1\\x82\\xd0\\xb8\\xd0\\xb2 \\xd0\\xbd\\xd0\\xb5\\xd0\\xb3\\xd0\\xbe... \\xd0\\x98 \\xd1\\x8f \\xd0\\xbd\\xd0\\xb5 \\xd0\\xb2\\xd0\\xb5\\xd1\\x80\\xd1\\x8e \\xd0\\xbd\\xd0\\xb8 \\xd0\\xb2 \\xd0\\xbe\\xd0\\xb4\\xd0\\xbd\\xd0\\xbe\\xd0\\xbc \\xd1\\x81\\xd0\\xbb\\xd0\\xbe\\xd0\\xb2\\xd0\\xb5 \\xd0\\xbd\\xd0\\xb8 \\xd0\\x93\\xd0\\xb0\\xd1\\x80\\xd0\\xb4\\xd0\\xb5\\xd0\\xbd\\xd0\\xb1\\xd0\\xb5\\xd1\\x80\\xd0\\xb3\\xd1\\x83, \\xd0\\xbd\\xd0\\xb8 \\xd0\\x93\\xd0\\xb0\\xd1\\x83\\xd0\\xb3\\xd0\\xb2\\xd0\\xb8\\xd1\\x86\\xd1\\x83. Cette fameuse neutralit\\xc3\\xa9 prussienne, ce n'est qu'un pi\\xc3\\xa8ge. \\xd0\\xaf \\xd0\\xb2\\xd0\\xb5\\xd1\\x80\\xd1\\x8e \\xd0\\xb2 \\xd0\\xbe\\xd0\\xb4\\xd0\\xbd\\xd0\\xbe\\xd0\\xb3\\xd0\\xbe \\xd0\\x91\\xd0\\xbe\\xd0\\xb3\\xd0\\xb0 \\xd0\\xb8 \\xd0\\xb2 \\xd0\\xb2\\xd1\\x8b\\xd1\\x81\\xd0\\xbe\\xd0\\xba\\xd1\\x83\\xd1\\x8e \\xd1\\x81\\xd1\\x83\\xd0\\xb4\\xd1\\x8c\\xd0\\xb1\\xd1\\x83 \\xd0\\xbd\\xd0\\xb0\\xd1\\x88\\xd0\\xb5\\xd0\\xb3\\xd0\\xbe \\xd0\\xbc\\xd0\\xb8\\xd0\\xbb\\xd0\\xbe\\xd0\\xb3\\xd0\\xbe \\xd0\\xb8\\xd0\\xbc\\xd0\\xbf\\xd0\\xb5\\xd1\\x80\\xd0\\xb0\\xd1\\x82\\xd0\\xbe\\xd1\\x80\\xd0\\xb0. \\xd0\\x9e\\xd0\\xbd \\xd1\\x81\\xd0\\xbf\\xd0\\xb0\\xd1\\x81\\xd0\\xb5\\xd1\\x82 \\xd0\\x95\\xd0\\xb2\\xd1\\x80\\xd0\\xbe\\xd0\\xbf\\xd1\\x83!.. \\xe2\\x80\\x94 \\xd0\\x9e\\xd0\\xbd\\xd0\\xb0 \\xd0\\xb2\\xd0\\xb4\\xd1\\x80\\xd1\\x83\\xd0\\xb3 \\xd0\\xbe\\xd1\\x81\\xd1\\x82\\xd0\\xb0\\xd0\\xbd\\xd0\\xbe\\xd0\\xb2\\xd0\\xb8\\xd0\\xbb\\xd0\\xb0\\xd1\\x81\\xd1\\x8c \\xd1\\x81 \\xd1\\x83\\xd0\\xbb\\xd1\\x8b\\xd0\\xb1\\xd0\\xba\\xd0\\xbe\\xd0\\xb9 \\xd0\\xbd\\xd0\\xb0\\xd1\\x81\\xd0\\xbc\\xd0\\xb5\\xd1\\x88\\xd0\\xba\\xd0\\xb8 \\xd0\\xbd\\xd0\\xb0\\xd0\\xb4 \\xd1\\x81\\xd0\\xb2\\xd0\\xbe\\xd0\\xb5\\xd1\\x8e \\xd0\\xb3\\xd0\\xbe\\xd1\\x80\\xd1\\x8f\\xd1\\x87\\xd0\\xbd\\xd0\\xbe\\xd1\\x81\\xd1\\x82\\xd1\\x8c\\xd1\\x8e.\\n\\xe2\\x80\\x94 \\xd0\\xaf \\xd0\\xb4\\xd1\\x83\\xd0\\xbc\\xd0\\xb0\\xd1\\x8e, \\xe2\\x80\\x94 \\xd1\\x81\\xd0\\xba\\xd0\\xb0\\xd0\\xb7\\xd0\\xb0\\xd0\\xbb \\xd0\\xba\\xd0\\xbd\\xd1\\x8f\\xd0\\xb7\\xd1\\x8c, \\xd1\\x83\\xd0\\xbb\\xd1\\x8b\\xd0\\xb1\\xd0\\xb0\\xd1\\x8f\\xd1\\x81\\xd1\\x8c, \\xe2\\x80\\x94 \\xd1\\x87\\xd1\\x82\\xd0\\xbe, \\xd0\\xb5\\xd0\\xb6\\xd0\\xb5\\xd0\\xbb\\xd0\\xb8 \\xd0\\xb1\\xd1\\x8b \\xd0\\xb2\\xd0\\xb0\\xd1\\x81 \\xd0\\xbf\\xd0\\xbe\\xd1\\x81\\xd0\\xbb\\xd0\\xb0\\xd0\\xbb\\xd0\\xb8 \\xd0\\xb2\\xd0\\xbc\\xd0\\xb5\\xd1\\x81\\xd1\\x82\\xd0\\xbe \\xd0\\xbd\\xd0\\xb0\\xd1\\x88\\xd0\\xb5\\xd0\\xb3\\xd0\\xbe \\xd0\\xbc\\xd0\\xb8\\xd0\\xbb\\xd0\\xbe\\xd0\\xb3\\xd0\\xbe \\xd0\\x92\\xd0\\xb8\\xd0\\xbd\\xd1\\x86\\xd0\\xb5\\xd0\\xbd\\xd0\\xb3\\xd0\\xb5\\xd1\\x80\\xd0\\xbe\\xd0\\xb4\\xd0\\xb5, \\xd0\\xb2\\xd1\\x8b \\xd0\\xb1\\xd1\\x8b \\xd0\\xb2\\xd0\\xb7\\xd1\\x8f\\xd0\\xbb\\xd0\\xb8 \\xd0\\xbf\\xd1\\x80\\xd0\\xb8\\xd1\\x81\\xd1\\x82\\xd1\\x83\\xd0\\xbf\\xd0\\xbe\\xd0\\xbc \\xd1\\x81\\xd0\\xbe\\xd0\\xb3\\xd0\\xbb\\xd0\\xb0\\xd1\\x81\\xd0\\xb8\\xd0\\xb5 \\xd0\\xbf\\xd1\\x80\\xd1\\x83\\xd1\\x81\\xd1\\x81\\xd0\\xba\\xd0\\xbe\\xd0\\xb3\\xd0\\xbe \\xd0\\xba\\xd0\\xbe\\xd1\\x80\\xd0\\xbe\\xd0\\xbb\\xd1\\x8f. \\xd0\\x92\\xd1\\x8b \\xd1\\x82\\xd0\\xb0\\xd0\\xba \\xd0\\xba\\xd1\\x80\\xd0\\xb0\\xd1\\x81\\xd0\\xbd\\xd0\\xbe\\xd1\\x80\\xd0\\xb5\\xd1\\x87\\xd0\\xb8\\xd0\\xb2\\xd1\\x8b. \\xd0\\x92\\xd1\\x8b \\xd0\\xb4\\xd0\\xb0\\xd0\\xb4\\xd0\\xb8\\xd1\\x82\\xd0\\xb5 \\xd0\\xbc\\xd0\\xbd\\xd0\\xb5 \\xd1\\x87\\xd0\\xb0\\xd1\\x8e?\\n\\xe2\\x80\\x94 \\xd0\\xa1\\xd0\\xb5\\xd0\\xb9\\xd1\\x87\\xd0\\xb0\\xd1\\x81. A propos, \\xe2\\x80\\x94 \\xd0\\xbf\\xd1\\x80\\xd0\\xb8\\xd0\\xb1\\xd0\\xb0\\xd0\\xb2\\xd0\\xb8\\xd0\\xbb\\xd0\\xb0 \\xd0\\xbe\\xd0\\xbd\\xd0\\xb0, \\xd0\\xbe\\xd0\\xbf\\xd1\\x8f\\xd1\\x82\\xd1\\x8c \\xd1\\x83\\xd1\\x81\\xd0\\xbf\\xd0\\xbe\\xd0\\xba\\xd0\\xbe\\xd0\\xb8\\xd0\\xb2\\xd0\\xb0\\xd1\\x8f\\xd1\\x81\\xd1\\x8c, \\xe2\\x80\\x94 \\xd0\\xbd\\xd1\\x8b\\xd0\\xbd\\xd1\\x87\\xd0\\xb5 \\xd1\\x83 \\xd0\\xbc\\xd0\\xb5\\xd0\\xbd\\xd1\\x8f \\xd0\\xb4\\xd0\\xb2\\xd0\\xb0 \\xd0\\xbe\\xd1\\x87\\xd0\\xb5\\xd0\\xbd\\xd1\\x8c \\xd0\\xb8\\xd0\\xbd\\xd1\\x82\\xd0\\xb5\\xd1\\x80\\xd0\\xb5\\xd1\\x81\\xd0\\xbd\\xd1\\x8b\\xd0\\xb5 \\xd1\\x87\\xd0\\xb5\\xd0\\xbb\\xd0\\xbe\\xd0\\xb2\\xd0\\xb5\\xd0\\xba\\xd0\\xb0, le vicomte de Mortemart, il est alli\\xc3\\xa9 aux Montmorency par les Rohans, \\xd0\\xbe\\xd0\\xb4\\xd0\\xbd\\xd0\\xb0 \\xd0\\xb8\\xd0\\xb7 \\xd0\\xbb\\xd1\\x83\\xd1\\x87\\xd1\\x88\\xd0\\xb8\\xd1\\x85 \\xd1\\x84\\xd0\\xb0\\xd0\\xbc\\xd0\\xb8\\xd0\\xbb\\xd0\\xb8\\xd0\\xb9 \\xd0\\xa4\\xd1\\x80\\xd0\\xb0\\xd0\\xbd\\xd1\\x86\\xd0\\xb8\\xd0\\xb8. \\xd0\\xad\\xd1\\x82\\xd0\\xbe \\xd0\\xbe\\xd0\\xb4\\xd0\\xb8\\xd0\\xbd \\xd0\\xb8\\xd0\\xb7 \\xd1\\x85\\xd0\\xbe\\xd1\\x80\\xd0\\xbe\\xd1\\x88\\xd0\\xb8\\xd1\\x85 \\xd1\\x8d\\xd0\\xbc\\xd0\\xb8\\xd0\\xb3\\xd1\\x80\\xd0\\xb0\\xd0\\xbd\\xd1\\x82\\xd0\\xbe\\xd0\\xb2, \\xd0\\xb8\\xd0\\xb7 \\xd0\\xbd\\xd0\\xb0\\xd1\\x81\\xd1\\x82\\xd0\\xbe\\xd1\\x8f\\xd1\\x89\\xd0\\xb8\\xd1\\x85. \\xd0\\x98 \\xd0\\xbf\\xd0\\xbe\\xd1\\x82\\xd0\\xbe\\xd0\\xbc l'abb\\xc3\\xa9 Morio; \\xd0\\xb2\\xd1\\x8b \\xd0\\xb7\\xd0\\xbd\\xd0\\xb0\\xd0\\xb5\\xd1\\x82\\xd0\\xb5 \\xd1\\x8d\\xd1\\x82\\xd0\\xbe\\xd1\\x82 \\xd0\\xb3\\xd0\\xbb\\xd1\\x83\\xd0\\xb1\\xd0\\xbe\\xd0\\xba\\xd0\\xb8\\xd0\\xb9 \\xd1\\x83\\xd0\\xbc? \\xd0\\x9e\\xd0\\xbd \\xd0\\xb1\\xd1\\x8b\\xd0\\xbb \\xd0\\xbf\\xd1\\x80\\xd0\\xb8\\xd0\\xbd\\xd1\\x8f\\xd1\\x82 \\xd0\\xb3\\xd0\\xbe\\xd1\\x81\\xd1\\x83\\xd0\\xb4\\xd0\\xb0\\xd1\\x80\\xd0\\xb5\\xd0\\xbc. \\xd0\\x92\\xd1\\x8b \\xd0\\xb7\\xd0\\xbd\\xd0\\xb0\\xd0\\xb5\\xd1\\x82\\xd0\\xb5?\\n\\xe2\\x80\\x94 \\xd0\\x90! \\xd0\\xaf \\xd0\\xbe\\xd1\\x87\\xd0\\xb5\\xd0\\xbd\\xd1\\x8c \\xd1\\x80\\xd0\\xb0\\xd0\\xb4 \\xd0\\xb1\\xd1\\x83\\xd0\\xb4\\xd1\\x83, \\xe2\\x80\\x94 \\xd1\\x81\\xd0\\xba\\xd0\\xb0\\xd0\\xb7\\xd0\\xb0\\xd0\\xbb \\xd0\\xba\\xd0\\xbd\\xd1\\x8f\\xd0\\xb7\\xd1\\x8c. \\xe2\\x80\\x94 \\xd0\\xa1\\xd0\\xba\\xd0\\xb0\\xd0\\xb6\\xd0\\xb8\\xd1\\x82\\xd0\\xb5, \\xe2\\x80\\x94 \\xd0\\xbf\\xd1\\x80\\xd0\\xb8\\xd0\\xb1\\xd0\\xb0\\xd0\\xb2\\xd0\\xb8\\xd0\\xbb \\xd0\\xbe\\xd0\\xbd, \\xd0\\xba\\xd0\\xb0\\xd0\\xba \\xd0\\xb1\\xd1\\x83\\xd0\\xb4\\xd1\\x82\\xd0\\xbe \\xd1\\x82\\xd0\\xbe\\xd0\\xbb\\xd1\\x8c\\xd0\\xba\\xd0\\xbe \\xd1\\x87\\xd1\\x82\\xd0\\xbe \\xd0\\xb2\\xd1\\x81\\xd0\\xbf\\xd0\\xbe\\xd0\\xbc\\xd0\\xbd\\xd0\\xb8\\xd0\\xb2 \\xd1\\x87\\xd1\\x82\\xd0\\xbe-\\xd1\\x82\\xd0\\xbe \\xd0\\xb8 \\xd0\\xbe\\xd1\\x81\\xd0\\xbe\\xd0\\xb1\\xd0\\xb5\\xd0\\xbd\\xd0\\xbd\\xd0\\xbe-\\xd0\\xbd\\xd0\\xb5\\xd0\\xb1\\xd1\\x80\\xd0\\xb5\\xd0\\xb6\\xd0\\xbd\\xd0\\xbe, \\xd1\\x82\\xd0\\xbe\\xd0\\xb3\\xd0\\xb4\\xd0\\xb0 \\xd0\\xba\\xd0\\xb0\\xd0\\xba \\xd1\\x82\\xd0\\xbe, \\xd0\\xbe \\xd1\\x87\\xd0\\xb5\\xd0\\xbc \\xd0\\xbe\\xd0\\xbd \\xd1\\x81\\xd0\\xbf\\xd1\\x80\\xd0\\xb0\\xd1\\x88\\xd0\\xb8\\xd0\\xb2\\xd0\\xb0\\xd0\\xbb, \\xd0\\xb1\\xd1\\x8b\\xd0\\xbb\\xd0\\xbe \\xd0\\xb3\\xd0\\xbb\\xd0\\xb0\\xd0\\xb2\\xd0\\xbd\\xd0\\xbe\\xd0\\xb9 \\xd1\\x86\\xd0\\xb5\\xd0\\xbb\\xd1\\x8c\\xd1\\x8e \\xd0\\xb5\\xd0\\xb3\\xd0\\xbe \\xd0\\xbf\\xd0\\xbe\\xd1\\x81\\xd0\\xb5\\xd1\\x89\\xd0\\xb5\\xd0\\xbd\\xd0\\xb8\\xd1\\x8f, \\xe2\\x80\\x94 \\xd0\\xbf\\xd1\\x80\\xd0\\xb0\\xd0\\xb2\\xd0\\xb4\\xd0\\xb0, \\xd1\\x87\\xd1\\x82\\xd0\\xbe l'imp\\xc3\\xa9ratrice-m\\xc3\\xa8re \\xd0\\xb6\\xd0\\xb5\\xd0\\xbb\\xd0\\xb0\\xd0\\xb5\\xd1\\x82 \\xd0\\xbd\\xd0\\xb0\\xd0\\xb7\\xd0\\xbd\\xd0\\xb0\\xd1\\x87\\xd0\\xb5\\xd0\\xbd\\xd0\\xb8\\xd1\\x8f \\xd0\\xb1\\xd0\\xb0\\xd1\\x80\\xd0\\xbe\\xd0\\xbd\\xd0\\xb0 \\xd0\\xa4\\xd1\\x83\\xd0\\xbd\\xd0\\xba\\xd0\\xb5 \\xd0\\xbf\\xd0\\xb5\\xd1\\x80\\xd0\\xb2\\xd1\\x8b\\xd0\\xbc \\xd1\\x81\\xd0\\xb5\\xd0\\xba\\xd1\\x80\\xd0\\xb5\\xd1\\x82\\xd0\\xb0\\xd1\\x80\\xd0\\xb5\\xd0\\xbc \\xd0\\xb2 \\xd0\\x92\\xd0\\xb5\\xd0\\xbd\\xd1\\x83? C'est un pauvre sire, ce baron, \\xc3\\xa0 ce qu'il para\\xc3\\xaet. \\xe2\\x80\\x94 \\xd0\\x9a\\xd0\\xbd\\xd1\\x8f\\xd0\\xb7\\xd1\\x8c \\xd0\\x92\\xd0\\xb0\\xd1\\x81\\xd0\\xb8\\xd0\\xbb\\xd0\\xb8\\xd0\\xb9 \\xd0\\xb6\\xd0\\xb5\\xd0\\xbb\\xd0\\xb0\\xd0\\xbb \\xd0\\xbe\\xd0\\xbf\\xd1\\x80\\xd0\\xb5\\xd0\\xb4\\xd0\\xb5\\xd0\\xbb\\xd0\\xb8\\xd1\\x82\\xd1\\x8c \\xd1\\x81\\xd1\\x8b\\xd0\\xbd\\xd0\\xb0 \\xd0\\xbd\\xd0\\xb0 \\xd1\\x8d\\xd1\\x82\\xd0\\xbe \\xd0\\xbc\\xd0\\xb5\\xd1\\x81\\xd1\\x82\\xd0\\xbe, \\xd0\\xba\\xd0\\xbe\\xd1\\x82\\xd0\\xbe\\xd1\\x80\\xd0\\xbe\\xd0\\xb5 \\xd1\\x87\\xd0\\xb5\\xd1\\x80\\xd0\\xb5\\xd0\\xb7 \\xd0\\xb8\\xd0\\xbc\\xd0\\xbf\\xd0\\xb5\\xd1\\x80\\xd0\\xb0\\xd1\\x82\\xd1\\x80\\xd0\\xb8\\xd1\\x86\\xd1\\x83 \\xd0\\x9c\\xd0\\xb0\\xd1\\x80\\xd0\\xb8\\xd1\\x8e \\xd0\\xa4\\xd0\\xb5\\xd0\\xbe\\xd0\\xb4\\xd0\\xbe\\xd1\\x80\\xd0\\xbe\\xd0\\xb2\\xd0\\xbd\\xd1\\x83 \\xd1\\x81\\xd1\\x82\\xd0\\xb0\\xd1\\x80\\xd0\\xb0\\xd0\\xbb\\xd0\\xb8\\xd1\\x81\\xd1\\x8c \\xd0\\xb4\\xd0\\xbe\\xd1\\x81\\xd1\\x82\\xd0\\xb0\\xd0\\xb2\\xd0\\xb8\\xd1\\x82\\xd1\\x8c \\xd0\\xb1\\xd0\\xb0\\xd1\\x80\\xd0\\xbe\\xd0\\xbd\\xd1\\x83.\\n\\xd0\\x90\\xd0\\xbd\\xd0\\xbd\\xd0\\xb0 \\xd0\\x9f\\xd0\\xb0\\xd0\\xb2\\xd0\\xbb\\xd0\\xbe\\xd0\\xb2\\xd0\\xbd\\xd0\\xb0 \\xd0\\xbf\\xd0\\xbe\\xd1\\x87\\xd1\\x82\\xd0\\xb8 \\xd0\\xb7\\xd0\\xb0\\xd0\\xba\\xd1\\x80\\xd1\\x8b\\xd0\\xbb\\xd0\\xb0 \\xd0\\xb3\\xd0\\xbb\\xd0\\xb0\\xd0\\xb7\\xd0\\xb0 \\xd0\\xb2 \\xd0\\xb7\\xd0\\xbd\\xd0\\xb0\\xd0\\xba \\xd1\\x82\\xd0\\xbe\\xd0\\xb3\\xd0\\xbe, \\xd1\\x87\\xd1\\x82\\xd0\\xbe \\xd0\\xbd\\xd0\\xb8 \\xd0\\xbe\\xd0\\xbd\\xd0\\xb0, \\xd0\\xbd\\xd0\\xb8 \\xd0\\xba\\xd1\\x82\\xd0\\xbe \\xd0\\xb4\\xd1\\x80\\xd1\\x83\\xd0\\xb3\\xd0\\xbe\\xd0\\xb9 \\xd0\\xbd\\xd0\\xb5 \\xd0\\xbc\\xd0\\xbe\\xd0\\xb3\\xd1\\x83\\xd1\\x82 \\xd1\\x81\\xd1\\x83\\xd0\\xb4\\xd0\\xb8\\xd1\\x82\\xd1\\x8c \\xd0\\xbf\\xd1\\x80\\xd0\\xbe \\xd1\\x82\\xd0\\xbe, \\xd1\\x87\\xd1\\x82\\xd0\\xbe \\xd1\\x83\\xd0\\xb3\\xd0\\xbe\\xd0\\xb4\\xd0\\xbd\\xd0\\xbe \\xd0\\xb8\\xd0\\xbb\\xd0\\xb8 \\xd0\\xbd\\xd1\\x80\\xd0\\xb0\\xd0\\xb2\\xd0\\xb8\\xd1\\x82\\xd1\\x81\\xd1\\x8f \\xd0\\xb8\\xd0\\xbc\\xd0\\xbf\\xd0\\xb5\\xd1\\x80\\xd0\\xb0\\xd1\\x82\\xd1\\x80\\xd0\\xb8\\xd1\\x86\\xd0\\xb5.\\n\\xe2\\x80\\x94 Monsieur le baron de Funke a \\xc3\\xa9t\\xc3\\xa9 recommand\\xc3\\xa9 \\xc3\\xa0 l'imp\\xc3\\xa9ratrice-m\\xc3\\xa8re par sa sur, \\xe2\\x80\\x94 \\xd1\\x82\\xd0\\xbe\\xd0\\xbb\\xd1\\x8c\\xd0\\xba\\xd0\\xbe \\xd1\\x81\\xd0\\xba\\xd0\\xb0\\xd0\\xb7\\xd0\\xb0\\xd0\\xbb\\xd0\\xb0 \\xd0\\xbe\\xd0\\xbd\\xd0\\xb0 \\xd0\\xb3\\xd1\\x80\\xd1\\x83\\xd1\\x81\\xd1\\x82\\xd0\\xbd\\xd1\\x8b\\xd0\\xbc, \\xd1\\x81\\xd1\\x83\\xd1\\x85\\xd0\\xb8\\xd0\\xbc \\xd1\\x82\\xd0\\xbe\\xd0\\xbd\\xd0\\xbe\\xd0\\xbc. \\xd0\\x92 \\xd1\\x82\\xd0\\xbe \\xd0\\xb2\\xd1\\x80\\xd0\\xb5\\xd0\\xbc\\xd1\\x8f \\xd0\\xba\\xd0\\xb0\\xd0\\xba \\xd0\\x90\\xd0\\xbd\\xd0\\xbd\\xd0\\xb0 \\xd0\\x9f\\xd0\\xb0\\xd0\\xb2\\xd0\\xbb\\xd0\\xbe\\xd0\\xb2\\xd0\\xbd\\xd0\\xb0 \\xd0\\xbd\\xd0\\xb0\\xd0\\xb7\\xd0\\xb2\\xd0\\xb0\\xd0\\xbb\\xd0\\xb0 \\xd0\\xb8\\xd0\\xbc\\xd0\\xbf\\xd0\\xb5\\xd1\\x80\\xd0\\xb0\\xd1\\x82\\xd1\\x80\\xd0\\xb8\\xd1\\x86\\xd1\\x83, \\xd0\\xbb\\xd0\\xb8\\xd1\\x86\\xd0\\xbe \\xd0\\xb5\\xd0\\xb5 \\xd0\\xb2\\xd0\\xb4\\xd1\\x80\\xd1\\x83\\xd0\\xb3 \\xd0\\xbf\\xd1\\x80\\xd0\\xb5\\xd0\\xb4\\xd1\\x81\\xd1\\x82\\xd0\\xb0\\xd0\\xb2\\xd0\\xb8\\xd0\\xbb\\xd0\\xbe \\xd0\\xb3\\xd0\\xbb\\xd1\\x83\\xd0\\xb1\\xd0\\xbe\\xd0\\xba\\xd0\\xbe\\xd0\\xb5 \\xd0\\xb8 \\xd0\\xb8\\xd1\\x81\\xd0\\xba\\xd1\\x80\\xd0\\xb5\\xd0\\xbd\\xd0\\xbd\\xd0\\xb5\\xd0\\xb5 \\xd0\\xb2\\xd1\\x8b\\xd1\\x80\\xd0\\xb0\\xd0\\xb6\\xd0\\xb5\\xd0\\xbd\\xd0\\xb8\\xd0\\xb5 \\xd0\\xbf\\xd1\\x80\\xd0\\xb5\\xd0\\xb4\\xd0\\xb0\\xd0\\xbd\\xd0\\xbd\\xd0\\xbe\\xd1\\x81\\xd1\\x82\\xd0\\xb8 \\xd0\\xb8 \\xd1\\x83\\xd0\\xb2\\xd0\\xb0\\xd0\\xb6\\xd0\\xb5\\xd0\\xbd\\xd0\\xb8\\xd1\\x8f, \\xd1\\x81\\xd0\\xbe\\xd0\\xb5\\xd0\\xb4\\xd0\\xb8\\xd0\\xbd\\xd0\\xb5\\xd0\\xbd\\xd0\\xbd\\xd0\\xbe\\xd0\\xb5 \\xd1\\x81 \\xd0\\xb3\\xd1\\x80\\xd1\\x83\\xd1\\x81\\xd1\\x82\\xd1\\x8c\\xd1\\x8e, \\xd1\\x87\\xd1\\x82\\xd0\\xbe \\xd1\\x81 \\xd0\\xbd\\xd0\\xb5\\xd0\\xb9 \\xd0\\xb1\\xd1\\x8b\\xd0\\xb2\\xd0\\xb0\\xd0\\xbb\\xd0\\xbe \\xd0\\xba\\xd0\\xb0\\xd0\\xb6\\xd0\\xb4\\xd1\\x8b\\xd0\\xb9 \\xd1\\x80\\xd0\\xb0\\xd0\\xb7, \\xd0\\xba\\xd0\\xbe\\xd0\\xb3\\xd0\\xb4\\xd0\\xb0 \\xd0\\xbe\\xd0\\xbd\\xd0\\xb0 \\xd0\\xb2 \\xd1\\x80\\xd0\\xb0\\xd0\\xb7\\xd0\\xb3\\xd0\\xbe\\xd0\\xb2\\xd0\\xbe\\xd1\\x80\\xd0\\xb5 \\xd1\\x83\\xd0\\xbf\\xd0\\xbe\\xd0\\xbc\\xd0\\xb8\\xd0\\xbd\\xd0\\xb0\\xd0\\xbb\\xd0\\xb0 \\xd0\\xbe \\xd1\\x81\\xd0\\xb2\\xd0\\xbe\\xd0\\xb5\\xd0\\xb9 \\xd0\\xb2\\xd1\\x8b\\xd1\\x81\\xd0\\xbe\\xd0\\xba\\xd0\\xbe\\xd0\\xb9 \\xd0\\xbf\\xd0\\xbe\\xd0\\xba\\xd1\\x80\\xd0\\xbe\\xd0\\xb2\\xd0\\xb8\\xd1\\x82\\xd0\\xb5\\xd0\\xbb\\xd1\\x8c\\xd0\\xbd\\xd0\\xb8\\xd1\\x86\\xd0\\xb5. \\xd0\\x9e\\xd0\\xbd\\xd0\\xb0 \\xd1\\x81\\xd0\\xba\\xd0\\xb0\\xd0\\xb7\\xd0\\xb0\\xd0\\xbb\\xd0\\xb0, \\xd1\\x87\\xd1\\x82\\xd0\\xbe \\xd0\\xb5\\xd0\\xb5 \\xd0\\xb2\\xd0\\xb5\\xd0\\xbb\\xd0\\xb8\\xd1\\x87\\xd0\\xb5\\xd1\\x81\\xd1\\x82\\xd0\\xb2\\xd0\\xbe \\xd0\\xb8\\xd0\\xb7\\xd0\\xb2\\xd0\\xbe\\xd0\\xbb\\xd0\\xb8\\xd0\\xbb\\xd0\\xb0 \\xd0\\xbe\\xd0\\xba\\xd0\\xb0\\xd0\\xb7\\xd0\\xb0\\xd1\\x82\\xd1\\x8c \\xd0\\xb1\\xd0\\xb0\\xd1\\x80\\xd0\\xbe\\xd0\\xbd\\xd1\\x83 \\xd0\\xa4\\xd1\\x83\\xd0\\xbd\\xd0\\xba\\xd0\\xb5 beaucoup d'estime, \\xd0\\xb8 \\xd0\\xbe\\xd0\\xbf\\xd1\\x8f\\xd1\\x82\\xd1\\x8c \\xd0\\xb2\\xd0\\xb7\\xd0\\xb3\\xd0\\xbb\\xd1\\x8f\\xd0\\xb4 \\xd0\\xb5\\xd0\\xb5 \\xd0\\xbf\\xd0\\xbe\\xd0\\xb4\\xd0\\xb5\\xd1\\x80\\xd0\\xbd\\xd1\\x83\\xd0\\xbb\\xd1\\x81\\xd1\\x8f \\xd0\\xb3\\xd1\\x80\\xd1\\x83\\xd1\\x81\\xd1\\x82\\xd1\\x8c\\xd1\\x8e.\\n\\xd0\\x9a\\xd0\\xbd\\xd1\\x8f\\xd0\\xb7\\xd1\\x8c \\xd1\\x80\\xd0\\xb0\\xd0\\xb2\\xd0\\xbd\\xd0\\xbe\\xd0\\xb4\\xd1\\x83\\xd1\\x88\\xd0\\xbd\\xd0\\xbe \\xd0\\xb7\\xd0\\xb0\\xd0\\xbc\\xd0\\xbe\\xd0\\xbb\\xd0\\xba, \\xd0\\x90\\xd0\\xbd\\xd0\\xbd\\xd0\\xb0 \\xd0\\x9f\\xd0\\xb0\\xd0\\xb2\\xd0\\xbb\\xd0\\xbe\\xd0\\xb2\\xd0\\xbd\\xd0\\xb0, \\xd1\\x81 \\xd1\\x81\\xd0\\xb2\\xd0\\xbe\\xd0\\xb9\\xd1\\x81\\xd1\\x82\\xd0\\xb2\\xd0\\xb5\\xd0\\xbd\\xd0\\xbd\\xd0\\xbe\\xd1\\x8e \\xd0\\xb5\\xd0\\xb9 \\xd0\\xbf\\xd1\\x80\\xd0\\xb8\\xd0\\xb4\\xd0\\xb2\\xd0\\xbe\\xd1\\x80\\xd0\\xbd\\xd0\\xbe\\xd1\\x8e \\xd0\\xb8 \\xd0\\xb6\\xd0\\xb5\\xd0\\xbd\\xd1\\x81\\xd0\\xba\\xd0\\xbe\\xd1\\x8e \\xd0\\xbb\\xd0\\xbe\\xd0\\xb2\\xd0\\xba\\xd0\\xbe\\xd1\\x81\\xd1\\x82\\xd1\\x8c\\xd1\\x8e \\xd0\\xb8 \\xd0\\xb1\\xd1\\x8b\\xd1\\x81\\xd1\\x82\\xd1\\x80\\xd0\\xbe\\xd1\\x82\\xd0\\xbe\\xd1\\x8e \\xd1\\x82\\xd0\\xb0\\xd0\\xba\\xd1\\x82\\xd0\\xb0, \\xd0\\xb7\\xd0\\xb0\\xd1\\x85\\xd0\\xbe\\xd1\\x82\\xd0\\xb5\\xd0\\xbb\\xd0\\xb0 \\xd0\\xb8 \\xd1\\x89\\xd0\\xb5\\xd0\\xbb\\xd0\\xba\\xd0\\xb0\\xd0\\xbd\\xd1\\x83\\xd1\\x82\\xd1\\x8c \\xd0\\xba\\xd0\\xbd\\xd1\\x8f\\xd0\\xb7\\xd1\\x8f \\xd0\\xb7\\xd0\\xb0 \\xd1\\x82\\xd0\\xbe, \\xd1\\x87\\xd1\\x82\\xd0\\xbe \\xd0\\xbe\\xd0\\xbd \\xd0\\xb4\\xd0\\xb5\\xd1\\x80\\xd0\\xb7\\xd0\\xbd\\xd1\\x83\\xd0\\xbb \\xd1\\x82\\xd0\\xb0\\xd0\\xba \\xd0\\xbe\\xd1\\x82\\xd0\\xbe\\xd0\\xb7\\xd0\\xb2\\xd0\\xb0\\xd1\\x82\\xd1\\x8c\\xd1\\x81\\xd1\\x8f \\xd0\\xbe \\xd0\\xbb\\xd0\\xb8\\xd1\\x86\\xd0\\xb5, \\xd1\\x80\\xd0\\xb5\\xd0\\xba\\xd0\\xbe\\xd0\\xbc\\xd0\\xb5\\xd0\\xbd\\xd0\\xb4\\xd0\\xbe\\xd0\\xb2\\xd0\\xb0\\xd0\\xbd\\xd0\\xbd\\xd0\\xbe\\xd0\\xbc \\xd0\\xb8\\xd0\\xbc\\xd0\\xbf\\xd0\\xb5\\xd1\\x80\\xd0\\xb0\\xd1\\x82\\xd1\\x80\\xd0\\xb8\\xd1\\x86\\xd0\\xb5, \\xd0\\xb8 \\xd0\\xb2 \\xd1\\x82\\xd0\\xbe \\xd0\\xb6\\xd0\\xb5 \\xd0\\xb2\\xd1\\x80\\xd0\\xb5\\xd0\\xbc\\xd1\\x8f \\xd1\\x83\\xd1\\x82\\xd0\\xb5\\xd1\\x88\\xd0\\xb8\\xd1\\x82\\xd1\\x8c \\xd0\\xb5\\xd0\\xb3\\xd0\\xbe.\\n\\xe2\\x80\\x94 Mais \\xc3\\xa0 propos de votre famille, \\xe2\\x80\\x94 \\xd1\\x81\\xd0\\xba\\xd0\\xb0\\xd0\\xb7\\xd0\\xb0\\xd0\\xbb\\xd0\\xb0 \\xd0\\xbe\\xd0\\xbd\\xd0\\xb0, \\xe2\\x80\\x94 \\xd0\\xb7\\xd0\\xbd\\xd0\\xb0\\xd0\\xb5\\xd1\\x82\\xd0\\xb5 \\xd0\\xbb\\xd0\\xb8, \\xd1\\x87\\xd1\\x82\\xd0\\xbe \\xd0\\xb2\\xd0\\xb0\\xd1\\x88\\xd0\\xb0 \\xd0\\xb4\\xd0\\xbe\\xd1\\x87\\xd1\\x8c, \\xd1\\x81 \\xd1\\x82\\xd0\\xb5\\xd1\\x85 \\xd0\\xbf\\xd0\\xbe\\xd1\\x80 \\xd0\\xba\\xd0\\xb0\\xd0\\xba \\xd0\\xb2\\xd1\\x8b\\xd0\\xb5\\xd0\\xb7\\xd0\\xb6\\xd0\\xb0\\xd0\\xb5\\xd1\\x82, fait les d\\xc3\\xa9lices de tout le monde. On la trouve belle comme le jour.\\n\\xd0\\x9a\\xd0\\xbd\\xd1\\x8f\\xd0\\xb7\\xd1\\x8c \\xd0\\xbd\\xd0\\xb0\\xd0\\xba\\xd0\\xbb\\xd0\\xbe\\xd0\\xbd\\xd0\\xb8\\xd0\\xbb\\xd1\\x81\\xd1\\x8f \\xd0\\xb2 \\xd0\\xb7\\xd0\\xbd\\xd0\\xb0\\xd0\\xba \\xd1\\x83\\xd0\\xb2\\xd0\\xb0\\xd0\\xb6\\xd0\\xb5\\xd0\\xbd\\xd0\\xb8\\xd1\\x8f \\xd0\\xb8 \\xd0\\xbf\\xd1\\x80\\xd0\\xb8\\xd0\\xb7\\xd0\\xbd\\xd0\\xb0\\xd1\\x82\\xd0\\xb5\\xd0\\xbb\\xd1\\x8c\\xd0\\xbd\\xd0\\xbe\\xd1\\x81\\xd1\\x82\\xd0\\xb8.\\n\\xe2\\x80\\x94 \\xd0\\xaf \\xd1\\x87\\xd0\\xb0\\xd1\\x81\\xd1\\x82\\xd0\\xbe \\xd0\\xb4\\xd1\\x83\\xd0\\xbc\\xd0\\xb0\\xd1\\x8e, \\xe2\\x80\\x94 \\xd0\\xbf\\xd1\\x80\\xd0\\xbe\\xd0\\xb4\\xd0\\xbe\\xd0\\xbb\\xd0\\xb6\\xd0\\xb0\\xd0\\xbb\\xd0\\xb0 \\xd0\\x90\\xd0\\xbd\\xd0\\xbd\\xd0\\xb0 \\xd0\\x9f\\xd0\\xb0\\xd0\\xb2\\xd0\\xbb\\xd0\\xbe\\xd0\\xb2\\xd0\\xbd\\xd0\\xb0 \\xd0\\xbf\\xd0\\xbe\\xd1\\x81\\xd0\\xbb\\xd0\\xb5 \\xd0\\xbc\\xd0\\xb8\\xd0\\xbd\\xd1\\x83\\xd1\\x82\\xd0\\xbd\\xd0\\xbe\\xd0\\xb3\\xd0\\xbe \\xd0\\xbc\\xd0\\xbe\\xd0\\xbb\\xd1\\x87\\xd0\\xb0\\xd0\\xbd\\xd0\\xb8\\xd1\\x8f, \\xd0\\xbf\\xd1\\x80\\xd0\\xb8\\xd0\\xb4\\xd0\\xb2\\xd0\\xb8\\xd0\\xb3\\xd0\\xb0\\xd1\\x8f\\xd1\\x81\\xd1\\x8c \\xd0\\xba \\xd0\\xba\\xd0\\xbd\\xd1\\x8f\\xd0\\xb7\\xd1\\x8e \\xd0\\xb8 \\xd0\\xbb\\xd0\\xb0\\xd1\\x81\\xd0\\xba\\xd0\\xbe\\xd0\\xb2\\xd0\\xbe \\xd1\\x83\\xd0\\xbb\\xd1\\x8b\\xd0\\xb1\\xd0\\xb0\\xd1\\x8f\\xd1\\x81\\xd1\\x8c \\xd0\\xb5\\xd0\\xbc\\xd1\\x83, \\xd0\\xba\\xd0\\xb0\\xd0\\xba \\xd0\\xb1\\xd1\\x83\\xd0\\xb4\\xd1\\x82\\xd0\\xbe \\xd0\\xb2\\xd1\\x8b\\xd0\\xba\\xd0\\xb0\\xd0\\xb7\\xd1\\x8b\\xd0\\xb2\\xd0\\xb0\\xd1\\x8f \\xd1\\x8d\\xd1\\x82\\xd0\\xb8\\xd0\\xbc, \\xd1\\x87\\xd1\\x82\\xd0\\xbe \\xd0\\xbf\\xd0\\xbe\\xd0\\xbb\\xd0\\xb8\\xd1\\x82\\xd0\\xb8\\xd1\\x87\\xd0\\xb5\\xd1\\x81\\xd0\\xba\\xd0\\xb8\\xd0\\xb5 \\xd0\\xb8 \\xd1\\x81\\xd0\\xb2\\xd0\\xb5\\xd1\\x82\\xd1\\x81\\xd0\\xba\\xd0\\xb8\\xd0\\xb5 \\xd1\\x80\\xd0\\xb0\\xd0\\xb7\\xd0\\xb3\\xd0\\xbe\\xd0\\xb2\\xd0\\xbe\\xd1\\x80\\xd1\\x8b \\xd0\\xba\\xd0\\xbe\\xd0\\xbd\\xd1\\x87\\xd0\\xb5\\xd0\\xbd\\xd1\\x8b \\xd0\\xb8 \\xd1\\x82\\xd0\\xb5\\xd0\\xbf\\xd0\\xb5\\xd1\\x80\\xd1\\x8c \\xd0\\xbd\\xd0\\xb0\\xd1\\x87\\xd0\\xb8\\xd0\\xbd\\xd0\\xb0\\xd0\\xb5\\xd1\\x82\\xd1\\x81\\xd1\\x8f \\xd0\\xb7\\xd0\\xb0\\xd0\\xb4\\xd1\\x83\\xd1\\x88\\xd0\\xb5\\xd0\\xb2\\xd0\\xbd\\xd1\\x8b\\xd0\\xb9, \\xe2\\x80\\x94 \\xd1\\x8f \\xd1\\x87\\xd0\\xb0\\xd1\\x81\\xd1\\x82\\xd0\\xbe \\xd0\\xb4\\xd1\\x83\\xd0\\xbc\\xd0\\xb0\\xd1\\x8e, \\xd0\\xba\\xd0\\xb0\\xd0\\xba \\xd0\\xb8\\xd0\\xbd\\xd0\\xbe\\xd0\\xb3\\xd0\\xb4\\xd0\\xb0 \\xd0\\xbd\\xd0\\xb5\\xd1\\x81\\xd0\\xbf\\xd1\\x80\\xd0\\xb0\\xd0\\xb2\\xd0\\xb5\\xd0\\xb4\\xd0\\xbb\\xd0\\xb8\\xd0\\xb2\\xd0\\xbe \\xd1\\x80\\xd0\\xb0\\xd1\\x81\\xd0\\xbf\\xd1\\x80\\xd0\\xb5\\xd0\\xb4\\xd0\\xb5\\xd0\\xbb\\xd1\\x8f\\xd0\\xb5\\xd1\\x82\\xd1\\x81\\xd1\\x8f \\xd1\\x81\\xd1\\x87\\xd0\\xb0\\xd1\\x81\\xd1\\x82\\xd0\\xb8\\xd0\\xb5 \\xd0\\xb6\\xd0\\xb8\\xd0\\xb7\\xd0\\xbd\\xd0\\xb8. \\xd0\\x97\\xd0\\xb0 \\xd1\\x87\\xd1\\x82\\xd0\\xbe \\xd0\\xb2\\xd0\\xb0\\xd0\\xbc \\xd0\\xb4\\xd0\\xb0\\xd0\\xbb\\xd0\\xb0 \\xd1\\x81\\xd1\\x83\\xd0\\xb4\\xd1\\x8c\\xd0\\xb1\\xd0\\xb0 \\xd1\\x82\\xd0\\xb0\\xd0\\xba\\xd0\\xb8\\xd1\\x85 \\xd0\\xb4\\xd0\\xb2\\xd1\\x83\\xd1\\x85 \\xd1\\x81\\xd0\\xbb\\xd0\\xb0\\xd0\\xb2\\xd0\\xbd\\xd1\\x8b\\xd1\\x85 \\xd0\\xb4\\xd0\\xb5\\xd1\\x82\\xd0\\xb5\\xd0\\xb9 (\\xd0\\xb8\\xd1\\x81\\xd0\\xba\\xd0\\xbb\\xd1\\x8e\\xd1\\x87\\xd0\\xb0\\xd1\\x8f \\xd0\\x90\\xd0\\xbd\\xd0\\xb0\\xd1\\x82\\xd0\\xbe\\xd0\\xbb\\xd1\\x8f, \\xd0\\xb2\\xd0\\xb0\\xd1\\x88\\xd0\\xb5\\xd0\\xb3\\xd0\\xbe \\xd0\\xbc\\xd0\\xb5\\xd0\\xbd\\xd1\\x8c\\xd1\\x88\\xd0\\xbe\\xd0\\xb3\\xd0\\xbe, \\xd1\\x8f \\xd0\\xb5\\xd0\\xb3\\xd0\\xbe \\xd0\\xbd\\xd0\\xb5 \\xd0\\xbb\\xd1\\x8e\\xd0\\xb1\\xd0\\xbb\\xd1\\x8e, \\xe2\\x80\\x94 \\xd0\\xb2\\xd1\\x81\\xd1\\x82\\xd0\\xb0\\xd0\\xb2\\xd0\\xb8\\xd0\\xbb\\xd0\\xb0 \\xd0\\xbe\\xd0\\xbd\\xd0\\xb0 \\xd0\\xb1\\xd0\\xb5\\xd0\\xb7\\xd0\\xb0\\xd0\\xbf\\xd0\\xb5\\xd0\\xbb\\xd0\\xbb\\xd1\\x8f\\xd1\\x86\\xd0\\xb8\\xd0\\xbe\\xd0\\xbd\\xd0\\xbd\\xd0\\xbe, \\xd0\\xbf\\xd1\\x80\\xd0\\xb8\\xd0\\xbf\\xd0\\xbe\\xd0\\xb4\\xd0\\xbd\\xd1\\x8f\\xd0\\xb2 \\xd0\\xb1\\xd1\\x80\\xd0\\xbe\\xd0\\xb2\\xd0\\xb8), \\xe2\\x80\\x94 \\xd1\\x82\\xd0\\xb0\\xd0\\xba\\xd0\\xb8\\xd1\\x85 \\xd0\\xbf\\xd1\\x80\\xd0\\xb5\\xd0\\xbb\\xd0\\xb5\\xd1\\x81\\xd1\\x82\\xd0\\xbd\\xd1\\x8b\\xd1\\x85 \\xd0\\xb4\\xd0\\xb5\\xd1\\x82\\xd0\\xb5\\xd0\\xb9? \\xd0\\x90 \\xd0\\xb2\\xd1\\x8b, \\xd0\\xbf\\xd1\\x80\\xd0\\xb0\\xd0\\xb2\\xd0\\xbe, \\xd0\\xbc\\xd0\\xb5\\xd0\\xbd\\xd0\\xb5\\xd0\\xb5 \\xd0\\xb2\\xd1\\x81\\xd0\\xb5\\xd1\\x85 \\xd1\\x86\\xd0\\xb5\\xd0\\xbd\\xd0\\xb8\\xd1\\x82\\xd0\\xb5 \\xd0\\xb8\\xd1\\x85 \\xd0\\xb8 \\xd0\\xbf\\xd0\\xbe\\xd1\\x82\\xd0\\xbe\\xd0\\xbc\\xd1\\x83 \\xd0\\xb8\\xd1\\x85 \\xd0\\xbd\\xd0\\xb5 \\xd1\\x81\\xd1\\x82\\xd0\\xbe\\xcc\\x81\\xd0\\xb8\\xd1\\x82\\xd0\\xb5.\\n\\xd0\\x98 \\xd0\\xbe\\xd0\\xbd\\xd0\\xb0 \\xd1\\x83\\xd0\\xbb\\xd1\\x8b\\xd0\\xb1\\xd0\\xbd\\xd1\\x83\\xd0\\xbb\\xd0\\xb0\\xd1\\x81\\xd1\\x8c \\xd1\\x81\\xd0\\xb2\\xd0\\xbe\\xd0\\xb5\\xd1\\x8e \\xd0\\xb2\\xd0\\xbe\\xd1\\x81\\xd1\\x82\\xd0\\xbe\\xd1\\x80\\xd0\\xb6\\xd0\\xb5\\xd0\\xbd\\xd0\\xbd\\xd0\\xbe\\xd0\\xb9 \\xd1\\x83\\xd0\\xbb\\xd1\\x8b\\xd0\\xb1\\xd0\\xba\\xd0\\xbe\\xd0\\xb9.\\n\\xe2\\x80\\x94 Que voulez-vous? Lafater aurait dit que je n'ai pas la bosse de la paternit\\xc3\\xa9, \\xe2\\x80\\x94 \\xd1\\x81\\xd0\\xba\\xd0\\xb0\\xd0\\xb7\\xd0\\xb0\\xd0\\xbb \\xd0\\xba\\xd0\\xbd\\xd1\\x8f\\xd0\\xb7\\xd1\\x8c.\\n\\xe2\\x80\\x94 \\xd0\\x9f\\xd0\\xb5\\xd1\\x80\\xd0\\xb5\\xd1\\x81\\xd1\\x82\\xd0\\xb0\\xd0\\xbd\\xd1\\x8c\\xd1\\x82\\xd0\\xb5 \\xd1\\x88\\xd1\\x83\\xd1\\x82\\xd0\\xb8\\xd1\\x82\\xd1\\x8c. \\xd0\\xaf \\xd1\\x85\\xd0\\xbe\\xd1\\x82\\xd0\\xb5\\xd0\\xbb\\xd0\\xb0 \\xd1\\x81\\xd0\\xb5\\xd1\\x80\\xd1\\x8c\\xd0\\xb5\\xd0\\xb7\\xd0\\xbd\\xd0\\xbe \\xd0\\xbf\\xd0\\xbe\\xd0\\xb3\\xd0\\xbe\\xd0\\xb2\\xd0\\xbe\\xd1\\x80\\xd0\\xb8\\xd1\\x82\\xd1\\x8c \\xd1\\x81 \\xd0\\xb2\\xd0\\xb0\\xd0\\xbc\\xd0\\xb8. \\xd0\\x97\\xd0\\xbd\\xd0\\xb0\\xd0\\xb5\\xd1\\x82\\xd0\\xb5, \\xd1\\x8f \\xd0\\xbd\\xd0\\xb5\\xd0\\xb4\\xd0\\xbe\\xd0\\xb2\\xd0\\xbe\\xd0\\xbb\\xd1\\x8c\\xd0\\xbd\\xd0\\xb0 \\xd0\\xb2\\xd0\\xb0\\xd1\\x88\\xd0\\xb8\\xd0\\xbc \\xd0\\xbc\\xd0\\xb5\\xd0\\xbd\\xd1\\x8c\\xd1\\x88\\xd0\\xb8\\xd0\\xbc \\xd1\\x81\\xd1\\x8b\\xd0\\xbd\\xd0\\xbe\\xd0\\xbc. \\xd0\\x9c\\xd0\\xb5\\xd0\\xb6\\xd0\\xb4\\xd1\\x83 \\xd0\\xbd\\xd0\\xb0\\xd0\\xbc\\xd0\\xb8 \\xd0\\xb1\\xd1\\x83\\xd0\\xb4\\xd1\\x8c \\xd1\\x81\\xd0\\xba\\xd0\\xb0\\xd0\\xb7\\xd0\\xb0\\xd0\\xbd\\xd0\\xbe (\\xd0\\xbb\\xd0\\xb8\\xd1\\x86\\xd0\\xbe \\xd0\\xb5\\xd0\\xb5 \\xd0\\xbf\\xd1\\x80\\xd0\\xb8\\xd0\\xbd\\xd1\\x8f\\xd0\\xbb\\xd0\\xbe \\xd0\\xb3\\xd1\\x80\\xd1\\x83\\xd1\\x81\\xd1\\x82\\xd0\\xbd\\xd0\\xbe\\xd0\\xb5 \\xd0\\xb2\\xd1\\x8b\\xd1\\x80\\xd0\\xb0\\xd0\\xb6\\xd0\\xb5\\xd0\\xbd\\xd0\\xb8\\xd0\\xb5), \\xd0\\xbe \\xd0\\xbd\\xd0\\xb5\\xd0\\xbc \\xd0\\xb3\\xd0\\xbe\\xd0\\xb2\\xd0\\xbe\\xd1\\x80\\xd0\\xb8\\xd0\\xbb\\xd0\\xb8 \\xd1\\x83 \\xd0\\xb5\\xd0\\xb5 \\xd0\\xb2\\xd0\\xb5\\xd0\\xbb\\xd0\\xb8\\xd1\\x87\\xd0\\xb5\\xd1\\x81\\xd1\\x82\\xd0\\xb2\\xd0\\xb0 \\xd0\\xb8 \\xd0\\xb6\\xd0\\xb0\\xd0\\xbb\\xd0\\xb5\\xd1\\x8e\\xd1\\x82 \\xd0\\xb2\\xd0\\xb0\\xd1\\x81...\\n\\xd0\\x9a\\xd0\\xbd\\xd1\\x8f\\xd0\\xb7\\xd1\\x8c \\xd0\\xbd\\xd0\\xb5 \\xd0\\xbe\\xd1\\x82\\xd0\\xb2\\xd0\\xb5\\xd1\\x87\\xd0\\xb0\\xd0\\xbb, \\xd0\\xbd\\xd0\\xbe \\xd0\\xbe\\xd0\\xbd\\xd0\\xb0 \\xd0\\xbc\\xd0\\xbe\\xd0\\xbb\\xd1\\x87\\xd0\\xb0, \\xd0\\xb7\\xd0\\xbd\\xd0\\xb0\\xd1\\x87\\xd0\\xb8\\xd1\\x82\\xd0\\xb5\\xd0\\xbb\\xd1\\x8c\\xd0\\xbd\\xd0\\xbe \\xd0\\xb3\\xd0\\xbb\\xd1\\x8f\\xd0\\xb4\\xd1\\x8f \\xd0\\xbd\\xd0\\xb0 \\xd0\\xbd\\xd0\\xb5\\xd0\\xb3\\xd0\\xbe, \\xd0\\xb6\\xd0\\xb4\\xd0\\xb0\\xd0\\xbb\\xd0\\xb0 \\xd0\\xbe\\xd1\\x82\\xd0\\xb2\\xd0\\xb5\\xd1\\x82\\xd0\\xb0. \\xd0\\x9a\\xd0\\xbd\\xd1\\x8f\\xd0\\xb7\\xd1\\x8c \\xd0\\x92\\xd0\\xb0\\xd1\\x81\\xd0\\xb8\\xd0\\xbb\\xd0\\xb8\\xd0\\xb9 \\xd0\\xbf\\xd0\\xbe\\xd0\\xbc\\xd0\\xbe\\xd1\\x80\\xd1\\x89\\xd0\\xb8\\xd0\\xbb\\xd1\\x81\\xd1\\x8f.\\n\\xe2\\x80\\x94 \\xd0\\xa7\\xd1\\x82\\xd0\\xbe \\xd0\\xb6 \\xd0\\xbc\\xd0\\xbd\\xd0\\xb5 \\xd0\\xb4\\xd0\\xb5\\xd0\\xbb\\xd0\\xb0\\xd1\\x82\\xd1\\x8c? \\xe2\\x80\\x94 \\xd1\\x81\\xd0\\xba\\xd0\\xb0\\xd0\\xb7\\xd0\\xb0\\xd0\\xbb \\xd0\\xbe\\xd0\\xbd \\xd0\\xbd\\xd0\\xb0\\xd0\\xba\\xd0\\xbe\\xd0\\xbd\\xd0\\xb5\\xd1\\x86. \\xe2\\x80\\x94 \\xd0\\x92\\xd1\\x8b \\xd0\\xb7\\xd0\\xbd\\xd0\\xb0\\xd0\\xb5\\xd1\\x82\\xd0\\xb5, \\xd1\\x8f \\xd1\\x81\\xd0\\xb4\\xd0\\xb5\\xd0\\xbb\\xd0\\xb0\\xd0\\xbb \\xd0\\xb4\\xd0\\xbb\\xd1\\x8f \\xd0\\xb8\\xd1\\x85 \\xd0\\xb2\\xd0\\xbe\\xd1\\x81\\xd0\\xbf\\xd0\\xb8\\xd1\\x82\\xd0\\xb0\\xd0\\xbd\\xd0\\xb8\\xd1\\x8f \\xd0\\xb2\\xd1\\x81\\xd0\\xb5, \\xd1\\x87\\xd1\\x82\\xd0\\xbe \\xd0\\xbc\\xd0\\xbe\\xd0\\xb6\\xd0\\xb5\\xd1\\x82 \\xd0\\xbe\\xd1\\x82\\xd0\\xb5\\xd1\\x86, \\xd0\\xb8 \\xd0\\xbe\\xd0\\xb1\\xd0\\xb0 \\xd0\\xb2\\xd1\\x8b\\xd1\\x88\\xd0\\xbb\\xd0\\xb8 des imb\\xc3\\xa9ciles. \\xd0\\x98\\xd0\\xbf\\xd0\\xbf\\xd0\\xbe\\xd0\\xbb\\xd0\\xb8\\xd1\\x82, \\xd0\\xbf\\xd0\\xbe \\xd0\\xba\\xd1\\x80\\xd0\\xb0\\xd0\\xb9\\xd0\\xbd\\xd0\\xb5\\xd0\\xb9 \\xd0\\xbc\\xd0\\xb5\\xd1\\x80\\xd0\\xb5, \\xd0\\xbf\\xd0\\xbe\\xd0\\xba\\xd0\\xbe\\xd0\\xb9\\xd0\\xbd\\xd1\\x8b\\xd0\\xb9 \\xd0\\xb4\\xd1\\x83\\xd1\\x80\\xd0\\xb0\\xd0\\xba, \\xd0\\xb0 \\xd0\\x90\\xd0\\xbd\\xd0\\xb0\\xd1\\x82\\xd0\\xbe\\xd0\\xbb\\xd1\\x8c \\xe2\\x80\\x94 \\xd0\\xb1\\xd0\\xb5\\xd1\\x81\\xd0\\xbf\\xd0\\xbe\\xd0\\xba\\xd0\\xbe\\xd0\\xb9\\xd0\\xbd\\xd1\\x8b\\xd0\\xb9. \\xd0\\x92\\xd0\\xbe\\xd1\\x82 \\xd0\\xbe\\xd0\\xb4\\xd0\\xbd\\xd0\\xbe \\xd1\\x80\\xd0\\xb0\\xd0\\xb7\\xd0\\xbb\\xd0\\xb8\\xd1\\x87\\xd0\\xb8\\xd0\\xb5, \\xe2\\x80\\x94 \\xd1\\x81\\xd0\\xba\\xd0\\xb0\\xd0\\xb7\\xd0\\xb0\\xd0\\xbb \\xd0\\xbe\\xd0\\xbd, \\xd1\\x83\\xd0\\xbb\\xd1\\x8b\\xd0\\xb1\\xd0\\xb0\\xd1\\x8f\\xd1\\x81\\xd1\\x8c \\xd0\\xb1\\xd0\\xbe\\xd0\\xbb\\xd0\\xb5\\xd0\\xb5 \\xd0\\xbd\\xd0\\xb5\\xd0\\xb5\\xd1\\x81\\xd1\\x82\\xd0\\xb5\\xd1\\x81\\xd1\\x82\\xd0\\xb2\\xd0\\xb5\\xd0\\xbd\\xd0\\xbd\\xd0\\xbe \\xd0\\xb8 \\xd0\\xbe\\xd0\\xb4\\xd1\\x83\\xd1\\x88\\xd0\\xb5\\xd0\\xb2\\xd0\\xbb\\xd0\\xb5\\xd0\\xbd\\xd0\\xbd\\xd0\\xbe, \\xd1\\x87\\xd0\\xb5\\xd0\\xbc \\xd0\\xbe\\xd0\\xb1\\xd1\\x8b\\xd0\\xba\\xd0\\xbd\\xd0\\xbe\\xd0\\xb2\\xd0\\xb5\\xd0\\xbd\\xd0\\xbd\\xd0\\xbe, \\xd0\\xb8 \\xd0\\xbf\\xd1\\x80\\xd0\\xb8 \\xd1\\x8d\\xd1\\x82\\xd0\\xbe\\xd0\\xbc \\xd0\\xbe\\xd1\\x81\\xd0\\xbe\\xd0\\xb1\\xd0\\xb5\\xd0\\xbd\\xd0\\xbd\\xd0\\xbe \\xd1\\x80\\xd0\\xb5\\xd0\\xb7\\xd0\\xba\\xd0\\xbe \\xd0\\xb2\\xd1\\x8b\\xd0\\xba\\xd0\\xb0\\xd0\\xb7\\xd1\\x8b\\xd0\\xb2\\xd0\\xb0\\xd1\\x8f \\xd0\\xb2 \\xd1\\x81\\xd0\\xbb\\xd0\\xbe\\xd0\\xb6\\xd0\\xb8\\xd0\\xb2\\xd1\\x88\\xd0\\xb8\\xd1\\x85\\xd1\\x81\\xd1\\x8f \\xd0\\xbe\\xd0\\xba\\xd0\\xbe\\xd0\\xbb\\xd0\\xbe \\xd0\\xb5\\xd0\\xb3\\xd0\\xbe \\xd1\\x80\\xd1\\x82\\xd0\\xb0 \\xd0\\xbc\\xd0\\xbe\\xd1\\x80\\xd1\\x89\\xd0\\xb8\\xd0\\xbd\\xd0\\xb0\\xd1\\x85 \\xd1\\x87\\xd1\\x82\\xd0\\xbe-\\xd1\\x82\\xd0\\xbe \\xd0\\xbd\\xd0\\xb5\\xd0\\xbe\\xd0\\xb6\\xd0\\xb8\\xd0\\xb4\\xd0\\xb0\\xd0\\xbd\\xd0\\xbd\\xd0\\xbe-\\xd0\\xb3\\xd1\\x80\\xd1\\x83\\xd0\\xb1\\xd0\\xbe\\xd0\\xb5 \\xd0\\xb8 \\xd0\\xbd\\xd0\\xb5\\xd0\\xbf\\xd1\\x80\\xd0\\xb8\\xd1\\x8f\\xd1\\x82\\xd0\\xbd\\xd0\\xbe\\xd0\\xb5.\\n\\xe2\\x80\\x94 \\xd0\\x98 \\xd0\\xb7\\xd0\\xb0\\xd1\\x87\\xd0\\xb5\\xd0\\xbc \\xd1\\x80\\xd0\\xbe\\xd0\\xb4\\xd1\\x8f\\xd1\\x82\\xd1\\x81\\xd1\\x8f \\xd0\\xb4\\xd0\\xb5\\xd1\\x82\\xd0\\xb8 \\xd1\\x83 \\xd1\\x82\\xd0\\xb0\\xd0\\xba\\xd0\\xb8\\xd1\\x85 \\xd0\\xbb\\xd1\\x8e\\xd0\\xb4\\xd0\\xb5\\xd0\\xb9, \\xd0\\xba\\xd0\\xb0\\xd0\\xba \\xd0\\xb2\\xd1\\x8b? \\xd0\\x95\\xd0\\xb6\\xd0\\xb5\\xd0\\xbb\\xd0\\xb8 \\xd0\\xb1\\xd1\\x8b \\xd0\\xb2\\xd1\\x8b \\xd0\\xbd\\xd0\\xb5 \\xd0\\xb1\\xd1\\x8b\\xd0\\xbb\\xd0\\xb8 \\xd0\\xbe\\xd1\\x82\\xd0\\xb5\\xd1\\x86, \\xd1\\x8f \\xd0\\xb1\\xd1\\x8b \\xd0\\xbd\\xd0\\xb8 \\xd0\\xb2 \\xd1\\x87\\xd0\\xb5\\xd0\\xbc \\xd0\\xbd\\xd0\\xb5 \\xd0\\xbc\\xd0\\xbe\\xd0\\xb3\\xd0\\xbb\\xd0\\xb0 \\xd1\\x83\\xd0\\xbf\\xd1\\x80\\xd0\\xb5\\xd0\\xba\\xd0\\xbd\\xd1\\x83\\xd1\\x82\\xd1\\x8c \\xd0\\xb2\\xd0\\xb0\\xd1\\x81, \\xe2\\x80\\x94 \\xd1\\x81\\xd0\\xba\\xd0\\xb0\\xd0\\xb7\\xd0\\xb0\\xd0\\xbb\\xd0\\xb0 \\xd0\\x90\\xd0\\xbd\\xd0\\xbd\\xd0\\xb0 \\xd0\\x9f\\xd0\\xb0\\xd0\\xb2\\xd0\\xbb\\xd0\\xbe\\xd0\\xb2\\xd0\\xbd\\xd0\\xb0, \\xd0\\xb7\\xd0\\xb0\\xd0\\xb4\\xd1\\x83\\xd0\\xbc\\xd1\\x87\\xd0\\xb8\\xd0\\xb2\\xd0\\xbe \\xd0\\xbf\\xd0\\xbe\\xd0\\xb4\\xd0\\xbd\\xd0\\xb8\\xd0\\xbc\\xd0\\xb0\\xd1\\x8f \\xd0\\xb3\\xd0\\xbb\\xd0\\xb0\\xd0\\xb7\\xd0\\xb0.\\n\\xe2\\x80\\x94 Je suis votre \\xd0\\xb2\\xd0\\xb5\\xd1\\x80\\xd0\\xbd\\xd1\\x8b\\xd0\\xb9 \\xd1\\x80\\xd0\\xb0\\xd0\\xb1, et \\xc3\\xa0 vous seule je puis l'avouer. \\xd0\\x9c\\xd0\\xbe\\xd0\\xb8 \\xd0\\xb4\\xd0\\xb5\\xd1\\x82\\xd0\\xb8 \\xe2\\x80\\x94 ce sont les entraves de mon existence. \\xd0\\xad\\xd1\\x82\\xd0\\xbe \\xd0\\xbc\\xd0\\xbe\\xd0\\xb9 \\xd0\\xba\\xd1\\x80\\xd0\\xb5\\xd1\\x81\\xd1\\x82. \\xd0\\xaf \\xd1\\x82\\xd0\\xb0\\xd0\\xba \\xd1\\x81\\xd0\\xb5\\xd0\\xb1\\xd0\\xb5 \\xd0\\xbe\\xd0\\xb1\\xd1\\x8a\\xd1\\x8f\\xd1\\x81\\xd0\\xbd\\xd1\\x8f\\xd1\\x8e. Que voulez-vous?..\\xe2\\x80\\x94 \\xd0\\x9e\\xd0\\xbd \\xd0\\xbf\\xd0\\xbe\\xd0\\xbc\\xd0\\xbe\\xd0\\xbb\\xd1\\x87\\xd0\\xb0\\xd0\\xbb, \\xd0\\xb2\\xd1\\x8b\\xd1\\x80\\xd0\\xb0\\xd0\\xb6\\xd0\\xb0\\xd1\\x8f \\xd0\\xb6\\xd0\\xb5\\xd1\\x81\\xd1\\x82\\xd0\\xbe\\xd0\\xbc \\xd1\\x81\\xd0\\xb2\\xd0\\xbe\\xd1\\x8e \\xd0\\xbf\\xd0\\xbe\\xd0\\xba\\xd0\\xbe\\xd1\\x80\\xd0\\xbd\\xd0\\xbe\\xd1\\x81\\xd1\\x82\\xd1\\x8c \\xd0\\xb6\\xd0\\xb5\\xd1\\x81\\xd1\\x82\\xd0\\xbe\\xd0\\xba\\xd0\\xbe\\xd0\\xb9 \\xd1\\x81\\xd1\\x83\\xd0\\xb4\\xd1\\x8c\\xd0\\xb1\\xd0\\xb5.\\n\\xd0\\x90\\xd0\\xbd\\xd0\\xbd\\xd0\\xb0 \\xd0\\x9f\\xd0\\xb0\\xd0\\xb2\\xd0\\xbb\\xd0\\xbe\\xd0\\xb2\\xd0\\xbd\\xd0\\xb0 \\xd0\\xb7\\xd0\\xb0\\xd0\\xb4\\xd1\\x83\\xd0\\xbc\\xd0\\xb0\\xd0\\xbb\\xd0\\xb0\\xd1\\x81\\xd1\\x8c.\\n\\xe2\\x80\\x94 \\xd0\\x92\\xd1\\x8b \\xd0\\xbd\\xd0\\xb8\\xd0\\xba\\xd0\\xbe\\xd0\\xb3\\xd0\\xb4\\xd0\\xb0 \\xd0\\xbd\\xd0\\xb5 \\xd0\\xb4\\xd1\\x83\\xd0\\xbc\\xd0\\xb0\\xd0\\xbb\\xd0\\xb8 \\xd0\\xbe \\xd1\\x82\\xd0\\xbe\\xd0\\xbc, \\xd1\\x87\\xd1\\x82\\xd0\\xbe\\xd0\\xb1\\xd1\\x8b \\xd0\\xb6\\xd0\\xb5\\xd0\\xbd\\xd0\\xb8\\xd1\\x82\\xd1\\x8c \\xd0\\xb2\\xd0\\xb0\\xd1\\x88\\xd0\\xb5\\xd0\\xb3\\xd0\\xbe \\xd0\\xb1\\xd0\\xbb\\xd1\\x83\\xd0\\xb4\\xd0\\xbd\\xd0\\xbe\\xd0\\xb3\\xd0\\xbe \\xd1\\x81\\xd1\\x8b\\xd0\\xbd\\xd0\\xb0 \\xd0\\x90\\xd0\\xbd\\xd0\\xb0\\xd1\\x82\\xd0\\xbe\\xd0\\xbb\\xd1\\x8f. \\xd0\\x93\\xd0\\xbe\\xd0\\xb2\\xd0\\xbe\\xd1\\x80\\xd1\\x8f\\xd1\\x82, \\xe2\\x80\\x94 \\xd1\\x81\\xd0\\xba\\xd0\\xb0\\xd0\\xb7\\xd0\\xb0\\xd0\\xbb\\xd0\\xb0 \\xd0\\xbe\\xd0\\xbd\\xd0\\xb0, \\xe2\\x80\\x94 \\xd1\\x87\\xd1\\x82\\xd0\\xbe \\xd1\\x81\\xd1\\x82\\xd0\\xb0\\xd1\\x80\\xd1\\x8b\\xd0\\xb5 \\xd0\\xb4\\xd0\\xb5\\xd0\\xb2\\xd0\\xb8\\xd1\\x86\\xd1\\x8b ont la manie des mariages. \\xd0\\xaf \\xd0\\xb5\\xd1\\x89\\xd0\\xb5 \\xd0\\xbd\\xd0\\xb5 \\xd1\\x87\\xd1\\x83\\xd0\\xb2\\xd1\\x81\\xd1\\x82\\xd0\\xb2\\xd1\\x83\\xd1\\x8e \\xd0\\xb7\\xd0\\xb0 \\xd1\\x81\\xd0\\xbe\\xd0\\xb1\\xd0\\xbe\\xd1\\x8e \\xd1\\x8d\\xd1\\x82\\xd0\\xbe\\xd0\\xb9 \\xd1\\x81\\xd0\\xbb\\xd0\\xb0\\xd0\\xb1\\xd0\\xbe\\xd1\\x81\\xd1\\x82\\xd0\\xb8, \\xd0\\xbd\\xd0\\xbe \\xd1\\x83 \\xd0\\xbc\\xd0\\xb5\\xd0\\xbd\\xd1\\x8f \\xd0\\xb5\\xd1\\x81\\xd1\\x82\\xd1\\x8c \\xd0\\xbe\\xd0\\xb4\\xd0\\xbd\\xd0\\xb0 petite personne, \\xd0\\xba\\xd0\\xbe\\xd1\\x82\\xd0\\xbe\\xd1\\x80\\xd0\\xb0\\xd1\\x8f \\xd0\\xbe\\xd1\\x87\\xd0\\xb5\\xd0\\xbd\\xd1\\x8c \\xd0\\xbd\\xd0\\xb5\\xd1\\x81\\xd1\\x87\\xd0\\xb0\\xd1\\x81\\xd1\\x82\\xd0\\xbb\\xd0\\xb8\\xd0\\xb2\\xd0\\xb0 \\xd1\\x81 \\xd0\\xbe\\xd1\\x82\\xd1\\x86\\xd0\\xbe\\xd0\\xbc, une parente \\xc3\\xa0 nous, une princesse \\xd0\\x91\\xd0\\xbe\\xd0\\xbb\\xd0\\xba\\xd0\\xbe\\xd0\\xbd\\xd1\\x81\\xd0\\xba\\xd0\\xb0\\xd1\\x8f. \\xe2\\x80\\x94 \\xd0\\x9a\\xd0\\xbd\\xd1\\x8f\\xd0\\xb7\\xd1\\x8c \\xd0\\x92\\xd0\\xb0\\xd1\\x81\\xd0\\xb8\\xd0\\xbb\\xd0\\xb8\\xd0\\xb9 \\xd0\\xbd\\xd0\\xb5 \\xd0\\xbe\\xd1\\x82\\xd0\\xb2\\xd0\\xb5\\xd1\\x87\\xd0\\xb0\\xd0\\xbb, \\xd1\\x85\\xd0\\xbe\\xd1\\x82\\xd1\\x8f \\xd1\\x81 \\xd1\\x81\\xd0\\xb2\\xd0\\xbe\\xd0\\xb9\\xd1\\x81\\xd1\\x82\\xd0\\xb2\\xd0\\xb5\\xd0\\xbd\\xd0\\xbd\\xd0\\xbe\\xd0\\xb9 \\xd1\\x81\\xd0\\xb2\\xd0\\xb5\\xd1\\x82\\xd1\\x81\\xd0\\xba\\xd0\\xb8\\xd0\\xbc \\xd0\\xbb\\xd1\\x8e\\xd0\\xb4\\xd1\\x8f\\xd0\\xbc \\xd0\\xb1\\xd1\\x8b\\xd1\\x81\\xd1\\x82\\xd1\\x80\\xd0\\xbe\\xd1\\x82\\xd0\\xbe\\xd0\\xb9 \\xd1\\x81\\xd0\\xbe\\xd0\\xbe\\xd0\\xb1\\xd1\\x80\\xd0\\xb0\\xd0\\xb6\\xd0\\xb5\\xd0\\xbd\\xd0\\xb8\\xd1\\x8f \\xd0\\xb8 \\xd0\\xbf\\xd0\\xb0\\xd0\\xbc\\xd1\\x8f\\xd1\\x82\\xd1\\x8c\\xd1\\x8e \\xd0\\xb4\\xd0\\xb2\\xd0\\xb8\\xd0\\xb6\\xd0\\xb5\\xd0\\xbd\\xd0\\xb8\\xd0\\xb5\\xd0\\xbc \\xd0\\xb3\\xd0\\xbe\\xd0\\xbb\\xd0\\xbe\\xd0\\xb2\\xd1\\x8b \\xd0\\xbf\\xd0\\xbe\\xd0\\xba\\xd0\\xb0\\xd0\\xb7\\xd0\\xb0\\xd0\\xbb, \\xd1\\x87\\xd1\\x82\\xd0\\xbe \\xd0\\xbe\\xd0\\xbd \\xd0\\xbf\\xd1\\x80\\xd0\\xb8\\xd0\\xbd\\xd1\\x8f\\xd0\\xbb \\xd0\\xba \\xd1\\x81\\xd0\\xbe\\xd0\\xbe\\xd0\\xb1\\xd1\\x80\\xd0\\xb0\\xd0\\xb6\\xd0\\xb5\\xd0\\xbd\\xd0\\xb8\\xd1\\x8e \\xd1\\x8d\\xd1\\x82\\xd0\\xbe \\xd1\\x81\\xd0\\xb2\\xd0\\xb5\\xd0\\xb4\\xd0\\xb5\\xd0\\xbd\\xd1\\x8c\\xd0\\xb5.\\n\\xe2\\x80\\x94 \\xd0\\x9d\\xd0\\xb5\\xd1\\x82, \\xd0\\xb2\\xd1\\x8b \\xd0\\xb7\\xd0\\xbd\\xd0\\xb0\\xd0\\xb5\\xd1\\x82\\xd0\\xb5 \\xd0\\xbb\\xd0\\xb8, \\xd1\\x87\\xd1\\x82\\xd0\\xbe \\xd1\\x8d\\xd1\\x82\\xd0\\xbe\\xd1\\x82 \\xd0\\x90\\xd0\\xbd\\xd0\\xb0\\xd1\\x82\\xd0\\xbe\\xd0\\xbb\\xd1\\x8c \\xd0\\xbc\\xd0\\xbd\\xd0\\xb5 \\xd1\\x81\\xd1\\x82\\xd0\\xbe\\xd0\\xb8\\xd1\\x82 \\xd1\\x81\\xd0\\xbe\\xd1\\x80\\xd0\\xbe\\xd0\\xba \\xd1\\x82\\xd1\\x8b\\xd1\\x81\\xd1\\x8f\\xd1\\x87 \\xd0\\xb2 \\xd0\\xb3\\xd0\\xbe\\xd0\\xb4, \\xe2\\x80\\x94 \\xd1\\x81\\xd0\\xba\\xd0\\xb0\\xd0\\xb7\\xd0\\xb0\\xd0\\xbb \\xd0\\xbe\\xd0\\xbd, \\xd0\\xb2\\xd0\\xb8\\xd0\\xb4\\xd0\\xb8\\xd0\\xbc\\xd0\\xbe \\xd0\\xbd\\xd0\\xb5 \\xd0\\xb2 \\xd1\\x81\\xd0\\xb8\\xd0\\xbb\\xd0\\xb0\\xd1\\x85 \\xd1\\x83\\xd0\\xb4\\xd0\\xb5\\xd1\\x80\\xd0\\xb6\\xd0\\xb8\\xd0\\xb2\\xd0\\xb0\\xd1\\x82\\xd1\\x8c \\xd0\\xbf\\xd0\\xb5\\xd1\\x87\\xd0\\xb0\\xd0\\xbb\\xd1\\x8c\\xd0\\xbd\\xd1\\x8b\\xd0\\xb9 \\xd1\\x85\\xd0\\xbe\\xd0\\xb4 \\xd1\\x81\\xd0\\xb2\\xd0\\xbe\\xd0\\xb8\\xd1\\x85 \\xd0\\xbc\\xd1\\x8b\\xd1\\x81\\xd0\\xbb\\xd0\\xb5\\xd0\\xb9. \\xd0\\x9e\\xd0\\xbd \\xd0\\xbf\\xd0\\xbe\\xd0\\xbc\\xd0\\xbe\\xd0\\xbb\\xd1\\x87\\xd0\\xb0\\xd0\\xbb.\\n\\xe2\\x80\\x94 \\xd0\\xa7\\xd1\\x82\\xd0\\xbe \\xd0\\xb1\\xd1\\x83\\xd0\\xb4\\xd0\\xb5\\xd1\\x82 \\xd1\\x87\\xd0\\xb5\\xd1\\x80\\xd0\\xb5\\xd0\\xb7 \\xd0\\xbf\\xd1\\x8f\\xd1\\x82\\xd1\\x8c \\xd0\\xbb\\xd0\\xb5\\xd1\\x82, \\xd0\\xb5\\xd0\\xb6\\xd0\\xb5\\xd0\\xbb\\xd0\\xb8 \\xd1\\x8d\\xd1\\x82\\xd0\\xbe \\xd0\\xbf\\xd0\\xbe\\xd0\\xb9\\xd0\\xb4\\xd0\\xb5\\xd1\\x82 \\xd1\\x82\\xd0\\xb0\\xd0\\xba? Voil\\xc3\\xa0 l'avantage d'\\xc3\\xaatre p\\xc3\\xa8re. \\xd0\\x9e\\xd0\\xbd\\xd0\\xb0 \\xd0\\xb1\\xd0\\xbe\\xd0\\xb3\\xd0\\xb0\\xd1\\x82\\xd0\\xb0, \\xd0\\xb2\\xd0\\xb0\\xd1\\x88\\xd0\\xb0 \\xd0\\xba\\xd0\\xbd\\xd1\\x8f\\xd0\\xb6\\xd0\\xbd\\xd0\\xb0?\\n\\xe2\\x80\\x94 \\xd0\\x9e\\xd1\\x82\\xd0\\xb5\\xd1\\x86 \\xd0\\xbe\\xd1\\x87\\xd0\\xb5\\xd0\\xbd\\xd1\\x8c \\xd0\\xb1\\xd0\\xbe\\xd0\\xb3\\xd0\\xb0\\xd1\\x82 \\xd0\\xb8 \\xd1\\x81\\xd0\\xba\\xd1\\x83\\xd0\\xbf. \\xd0\\x9e\\xd0\\xbd \\xd0\\xb6\\xd0\\xb8\\xd0\\xb2\\xd0\\xb5\\xd1\\x82 \\xd0\\xb2 \\xd0\\xb4\\xd0\\xb5\\xd1\\x80\\xd0\\xb5\\xd0\\xb2\\xd0\\xbd\\xd0\\xb5. \\xd0\\x97\\xd0\\xbd\\xd0\\xb0\\xd0\\xb5\\xd1\\x82\\xd0\\xb5, \\xd1\\x8d\\xd1\\x82\\xd0\\xbe\\xd1\\x82 \\xd0\\xb8\\xd0\\xb7\\xd0\\xb2\\xd0\\xb5\\xd1\\x81\\xd1\\x82\\xd0\\xbd\\xd1\\x8b\\xd0\\xb9 \\xd0\\xba\\xd0\\xbd\\xd1\\x8f\\xd0\\xb7\\xd1\\x8c \\xd0\\x91\\xd0\\xbe\\xd0\\xbb\\xd0\\xba\\xd0\\xbe\\xd0\\xbd\\xd1\\x81\\xd0\\xba\\xd0\\xb8\\xd0\\xb9, \\xd0\\xbe\\xd1\\x82\\xd1\\x81\\xd1\\x82\\xd0\\xb0\\xd0\\xb2\\xd0\\xbb\\xd0\\xb5\\xd0\\xbd\\xd0\\xbd\\xd1\\x8b\\xd0\\xb9 \\xd0\\xb5\\xd1\\x89\\xd0\\xb5 \\xd0\\xbf\\xd1\\x80\\xd0\\xb8 \\xd0\\xbf\\xd0\\xbe\\xd0\\xba\\xd0\\xbe\\xd0\\xb9\\xd0\\xbd\\xd0\\xbe\\xd0\\xbc \\xd0\\xb8\\xd0\\xbc\\xd0\\xbf\\xd0\\xb5\\xd1\\x80\\xd0\\xb0\\xd1\\x82\\xd0\\xbe\\xd1\\x80\\xd0\\xb5 \\xd0\\xb8 \\xd0\\xbf\\xd1\\x80\\xd0\\xbe\\xd0\\xb7\\xd0\\xb2\\xd0\\xb0\\xd0\\xbd\\xd0\\xbd\\xd1\\x8b\\xd0\\xb9 \\xd0\\xbf\\xd1\\x80\\xd1\\x83\\xd1\\x81\\xd1\\x81\\xd0\\xba\\xd0\\xb8\\xd0\\xbc \\xd0\\xba\\xd0\\xbe\\xd1\\x80\\xd0\\xbe\\xd0\\xbb\\xd0\\xb5\\xd0\\xbc. \\xd0\\x9e\\xd0\\xbd \\xd0\\xbe\\xd1\\x87\\xd0\\xb5\\xd0\\xbd\\xd1\\x8c \\xd1\\x83\\xd0\\xbc\\xd0\\xbd\\xd1\\x8b\\xd0\\xb9 \\xd1\\x87\\xd0\\xb5\\xd0\\xbb\\xd0\\xbe\\xd0\\xb2\\xd0\\xb5\\xd0\\xba, \\xd0\\xbd\\xd0\\xbe \\xd1\\x81\\xd0\\xbe \\xd1\\x81\\xd1\\x82\\xd1\\x80\\xd0\\xb0\\xd0\\xbd\\xd0\\xbd\\xd0\\xbe\\xd1\\x81\\xd1\\x82\\xd1\\x8f\\xd0\\xbc\\xd0\\xb8 \\xd0\\xb8 \\xd1\\x82\\xd1\\x8f\\xd0\\xb6\\xd0\\xb5\\xd0\\xbb\\xd1\\x8b\\xd0\\xb9. La pauvre petite est malheureuse comme les pierres. \\xd0\\xa3 \\xd0\\xbd\\xd0\\xb5\\xd0\\xb5 \\xd0\\xb1\\xd1\\x80\\xd0\\xb0\\xd1\\x82, \\xd0\\xb2\\xd0\\xbe\\xd1\\x82 \\xd1\\x87\\xd1\\x82\\xd0\\xbe \\xd0\\xbd\\xd0\\xb5\\xd0\\xb4\\xd0\\xb0\\xd0\\xb2\\xd0\\xbd\\xd0\\xbe \\xd0\\xb6\\xd0\\xb5\\xd0\\xbd\\xd0\\xb8\\xd0\\xbb\\xd1\\x81\\xd1\\x8f \\xd0\\xbd\\xd0\\xb0 Lise \\xd0\\x9c\\xd0\\xb5\\xd0\\xb9\\xd0\\xbd\\xd0\\xb5\\xd0\\xbd, \\xd0\\xb0\\xd0\\xb4\\xd1\\x8a\\xd1\\x8e\\xd1\\x82\\xd0\\xb0\\xd0\\xbd\\xd1\\x82 \\xd0\\x9a\\xd1\\x83\\xd1\\x82\\xd1\\x83\\xd0\\xb7\\xd0\\xbe\\xd0\\xb2\\xd0\\xb0. \\xd0\\x9e\\xd0\\xbd \\xd0\\xb1\\xd1\\x83\\xd0\\xb4\\xd0\\xb5\\xd1\\x82 \\xd0\\xbd\\xd1\\x8b\\xd0\\xbd\\xd1\\x87\\xd0\\xb5 \\xd1\\x83 \\xd0\\xbc\\xd0\\xb5\\xd0\\xbd\\xd1\\x8f.\\n\\xe2\\x80\\x94 Ecoutez, ch\\xc3\\xa8re Annette, \\xe2\\x80\\x94 \\xd1\\x81\\xd0\\xba\\xd0\\xb0\\xd0\\xb7\\xd0\\xb0\\xd0\\xbb \\xd0\\xba\\xd0\\xbd\\xd1\\x8f\\xd0\\xb7\\xd1\\x8c, \\xd0\\xb2\\xd0\\xb7\\xd1\\x8f\\xd0\\xb2 \\xd0\\xb2\\xd0\\xb4\\xd1\\x80\\xd1\\x83\\xd0\\xb3 \\xd1\\x81\\xd0\\xb2\\xd0\\xbe\\xd1\\x8e \\xd1\\x81\\xd0\\xbe\\xd0\\xb1\\xd0\\xb5\\xd1\\x81\\xd0\\xb5\\xd0\\xb4\\xd0\\xbd\\xd0\\xb8\\xd1\\x86\\xd1\\x83 \\xd0\\xb7\\xd0\\xb0 \\xd1\\x80\\xd1\\x83\\xd0\\xba\\xd1\\x83 \\xd0\\xb8 \\xd0\\xbf\\xd1\\x80\\xd0\\xb8\\xd0\\xb3\\xd0\\xb8\\xd0\\xb1\\xd0\\xb0\\xd1\\x8f \\xd0\\xb5\\xd0\\xb5 \\xd0\\xbf\\xd0\\xbe\\xd1\\x87\\xd0\\xb5\\xd0\\xbc\\xd1\\x83-\\xd1\\x82\\xd0\\xbe \\xd0\\xba\\xd0\\xbd\\xd0\\xb8\\xd0\\xb7\\xd1\\x83. \\xe2\\x80\\x94 Arrangez-moi cette affaire et je suis votre \\xd0\\xb2\\xd0\\xb5\\xd1\\x80\\xd0\\xbd\\xd0\\xb5\\xd0\\xb9\\xd1\\x88\\xd0\\xb8\\xd0\\xb9 \\xd1\\x80\\xd0\\xb0\\xd0\\xb1 \\xc3\\xa0 tout jamais (\\xd1\\x80\\xd0\\xb0\\xd0\\xbf \\xe2\\x80\\x94 comme mon \\xd1\\x81\\xd1\\x82\\xd0\\xb0\\xd1\\x80\\xd0\\xbe\\xd1\\x81\\xd1\\x82\\xd0\\xb0 m'\\xc3\\xa9crit des \\xd0\\xb4\\xd0\\xbe\\xd0\\xbd\\xd0\\xb5\\xd1\\x81\\xd0\\xb5\\xd0\\xbd\\xd1\\x8c\\xd1\\x8f: \\xd0\\xbf\\xd0\\xbe\\xd0\\xba\\xd0\\xbe\\xd0\\xb9-\\xd0\\xb5\\xd1\\x80-\\xd0\\xbf). \\xd0\\x9e\\xd0\\xbd\\xd0\\xb0 \\xd1\\x85\\xd0\\xbe\\xd1\\x80\\xd0\\xbe\\xd1\\x88\\xd0\\xb5\\xd0\\xb9 \\xd1\\x84\\xd0\\xb0\\xd0\\xbc\\xd0\\xb8\\xd0\\xbb\\xd0\\xb8\\xd0\\xb8 \\xd0\\xb8 \\xd0\\xb1\\xd0\\xbe\\xd0\\xb3\\xd0\\xb0\\xd1\\x82\\xd0\\xb0. \\xd0\\x92\\xd1\\x81\\xd0\\xb5, \\xd1\\x87\\xd1\\x82\\xd0\\xbe \\xd0\\xbc\\xd0\\xbd\\xd0\\xb5 \\xd0\\xbd\\xd1\\x83\\xd0\\xb6\\xd0\\xbd\\xd0\\xbe.\\n\\xd0\\x98 \\xd0\\xbe\\xd0\\xbd \\xd1\\x81 \\xd1\\x82\\xd0\\xb5\\xd0\\xbc\\xd0\\xb8 \\xd1\\x81\\xd0\\xb2\\xd0\\xbe\\xd0\\xb1\\xd0\\xbe\\xd0\\xb4\\xd0\\xbd\\xd1\\x8b\\xd0\\xbc\\xd0\\xb8 \\xd0\\xb8 \\xd1\\x84\\xd0\\xb0\\xd0\\xbc\\xd0\\xb8\\xd0\\xbb\\xd1\\x8c\\xd1\\x8f\\xd1\\x80\\xd0\\xbd\\xd1\\x8b\\xd0\\xbc\\xd0\\xb8 \\xd0\\xb3\\xd1\\x80\\xd0\\xb0\\xd1\\x86\\xd0\\xb8\\xd0\\xbe\\xd0\\xb7\\xd0\\xbd\\xd1\\x8b\\xd0\\xbc\\xd0\\xb8 \\xd0\\xb4\\xd0\\xb2\\xd0\\xb8\\xd0\\xb6\\xd0\\xb5\\xd0\\xbd\\xd0\\xb8\\xd1\\x8f\\xd0\\xbc\\xd0\\xb8, \\xd0\\xba\\xd0\\xbe\\xd1\\x82\\xd0\\xbe\\xd1\\x80\\xd1\\x8b\\xd0\\xb5 \\xd0\\xb5\\xd0\\xb3\\xd0\\xbe \\xd0\\xbe\\xd1\\x82\\xd0\\xbb\\xd0\\xb8\\xd1\\x87\\xd0\\xb0\\xd0\\xbb\\xd0\\xb8, \\xd0\\xb2\\xd0\\xb7\\xd1\\x8f\\xd0\\xbb \\xd0\\xb7\\xd0\\xb0 \\xd1\\x80\\xd1\\x83\\xd0\\xba\\xd1\\x83 \\xd1\\x84\\xd1\\x80\\xd0\\xb5\\xd0\\xb9\\xd0\\xbb\\xd0\\xb8\\xd0\\xbd\\xd1\\x83, \\xd0\\xbf\\xd0\\xbe\\xd1\\x86\\xd0\\xb5\\xd0\\xbb\\xd0\\xbe\\xd0\\xb2\\xd0\\xb0\\xd0\\xbb \\xd0\\xb5\\xd0\\xb5 \\xd0\\xb8, \\xd0\\xbf\\xd0\\xbe\\xd1\\x86\\xd0\\xb5\\xd0\\xbb\\xd0\\xbe\\xd0\\xb2\\xd0\\xb0\\xd0\\xb2, \\xd0\\xbf\\xd0\\xbe\\xd0\\xbc\\xd0\\xb0\\xd1\\x85\\xd0\\xb0\\xd0\\xbb \\xd1\\x84\\xd1\\x80\\xd0\\xb5\\xd0\\xb9\\xd0\\xbb\\xd0\\xb8\\xd0\\xbd\\xd1\\x81\\xd0\\xba\\xd0\\xbe\\xd1\\x8e \\xd1\\x80\\xd1\\x83\\xd0\\xba\\xd0\\xbe\\xd0\\xb9, \\xd1\\x80\\xd0\\xb0\\xd0\\xb7\\xd0\\xb2\\xd0\\xb0\\xd0\\xbb\\xd0\\xb8\\xd0\\xb2\\xd1\\x88\\xd0\\xb8\\xd1\\x81\\xd1\\x8c \\xd0\\xbd\\xd0\\xb0 \\xd0\\xba\\xd1\\x80\\xd0\\xb5\\xd1\\x81\\xd0\\xbb\\xd0\\xb0\\xd1\\x85 \\xd0\\xb8 \\xd0\\xb3\\xd0\\xbb\\xd1\\x8f\\xd0\\xb4\\xd1\\x8f \\xd0\\xb2 \\xd1\\x81\\xd1\\x82\\xd0\\xbe\\xd1\\x80\\xd0\\xbe\\xd0\\xbd\\xd1\\x83.\\n\\xe2\\x80\\x94 Attendez, \\xe2\\x80\\x94 \\xd1\\x81\\xd0\\xba\\xd0\\xb0\\xd0\\xb7\\xd0\\xb0\\xd0\\xbb\\xd0\\xb0 \\xd0\\x90\\xd0\\xbd\\xd0\\xbd\\xd0\\xb0 \\xd0\\x9f\\xd0\\xb0\\xd0\\xb2\\xd0\\xbb\\xd0\\xbe\\xd0\\xb2\\xd0\\xbd\\xd0\\xb0, \\xd1\\x81\\xd0\\xbe\\xd0\\xbe\\xd0\\xb1\\xd1\\x80\\xd0\\xb0\\xd0\\xb6\\xd0\\xb0\\xd1\\x8f. \\xe2\\x80\\x94 \\xd0\\xaf \\xd0\\xbd\\xd1\\x8b\\xd0\\xbd\\xd1\\x87\\xd0\\xb5 \\xd0\\xb6\\xd0\\xb5 \\xd0\\xbf\\xd0\\xbe\\xd0\\xb3\\xd0\\xbe\\xd0\\xb2\\xd0\\xbe\\xd1\\x80\\xd1\\x8e Lise (la femme du jeune \\xd0\\x91\\xd0\\xbe\\xd0\\xbb\\xd0\\xba\\xd0\\xbe\\xd0\\xbd\\xd1\\x81\\xd0\\xba\\xd0\\xb8\\xd0\\xb9). \\xd0\\x98, \\xd0\\xbc\\xd0\\xbe\\xd0\\xb6\\xd0\\xb5\\xd1\\x82 \\xd0\\xb1\\xd1\\x8b\\xd1\\x82\\xd1\\x8c, \\xd1\\x8d\\xd1\\x82\\xd0\\xbe \\xd1\\x83\\xd0\\xbb\\xd0\\xb0\\xd0\\xb4\\xd0\\xb8\\xd1\\x82\\xd1\\x81\\xd1\\x8f. Ce sera dans votre famille que je ferai mon apprentissage de vieille fille.\"\n" + ] + } + ], + "source": [ + "from urllib.request import urlopen\n", + "textPage = urlopen(\n", + " 'http://www.pythonscraping.com/pages/warandpeace/chapter1-ru.txt')\n", + "print(textPage.read())" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "ЧАСТЬ ПЕРВАЯ\n", + "\n", + "I\n", + "\n", + "— Eh bien, mon prince. Gênes et Lucques ne sont plus que des apanages, des поместья, de la famille Buonaparte. Non, je vous préviens que si vous ne me dites pas que nous avons la guerre, si vous vous permettez encore de pallier toutes les infamies, toutes les atrocités de cet Antichrist (ma parole, j'y crois) — je ne vous connais plus, vous n'êtes plus mon ami, vous n'êtes plus мой верный раб, comme vous dites. Ну, здравствуйте, здравствуйте. Je vois que je vous fais peur, садитесь и рассказывайте.\n", + "Так говорила в июле 1805 года известная Анна Павловна Шерер, фрейлина и приближенная императрицы Марии Феодоровны, встречая важного и чиновного князя Василия, первого приехавшего на ее вечер. Анна Павловна кашляла несколько дней, у нее был грипп, как она говорила (грипп был тогда новое слово, употреблявшееся только редкими). В записочках, разосланных утром с красным лакеем, было написано без различия во всех:\n", + "«Si vous n'avez rien de mieux à faire, Monsieur le comte (или mon prince), et si la perspective de passer la soirée chez une pauvre malade ne vous effraye pas trop, je serai charmée de vous voir chez moi entre 7 et 10 heures. Annette Scherer».\n", + "— Dieu, quelle virulente sortie! — отвечал, нисколько не смутясь такою встречей, вошедший князь, в придворном, шитом мундире, в чулках, башмаках и звездах, с светлым выражением плоского лица.\n", + "Он говорил на том изысканном французском языке, на котором не только говорили, но и думали наши деды, и с теми, тихими, покровительственными интонациями, которые свойственны состаревшемуся в свете и при дворе значительному человеку. Он подошел к Анне Павловне, поцеловал ее руку, подставив ей свою надушенную и сияющую лысину, и покойно уселся на диване.\n", + "— Avant tout dites-moi, comment vous allez, chère amie? Успокойте меня, — сказал он, не изменяя голоса и тоном, в котором из-за приличия и участия просвечивало равнодушие и даже насмешка.\n", + "— Как можно быть здоровой... когда нравственно страдаешь? Разве можно, имея чувство, оставаться спокойною в наше время? — сказала Анна Павловна. — Вы весь вечер у меня, надеюсь?\n", + "— А праздник английского посланника? Нынче середа. Мне надо показаться там, — сказал князь. — Дочь заедет за мной и повезет меня.\n", + "— Я думала, что нынешний праздник отменен, Je vous avoue que toutes ces fêtes et tous ces feux d'artifice commencent à devenir insipides.\n", + "— Ежели бы знали, что вы этого хотите, праздник бы отменили, — сказал князь по привычке, как заведенные часы, говоря вещи, которым он и не хотел, чтобы верили.\n", + "— Ne me tourmentez pas. Eh bien, qu'a-t-on décidé par rapport à la dépêche de Novosilzoff? Vous savez tout.\n", + "— Как вам сказать? — сказал князь холодным, скучающим тоном. — Qu'a-t-on décidé? On a décidé que Buonaparte a brûlé ses vaisseaux, et je crois que nous sommes en train de brûler les nôtres.\n", + "Князь Василий говорил всегда лениво, как актер говорит роль старой пиесы. Анна Павловна Шерер, напротив, несмотря на свои сорок лет, была преисполнена оживления и порывов.\n", + "Быть энтузиасткой сделалось ее общественным положением, и иногда, когда ей даже того не хотелось, она, чтобы не обмануть ожиданий людей, знавших ее, делалась энтузиасткой. Сдержанная улыбка, игравшая постоянно на лице Анны Павловны, хотя и не шла к ее отжившим чертам, выражала, как у избалованных детей, постоянное сознание своего милого недостатка, от которого она не хочет, не может и не находит нужным исправляться.\n", + "В середине разговора про политические действия Анна Павловна разгорячилась.\n", + "— Ах, не говорите мне про Австрию! Я ничего не понимаю, может быть, но Австрия никогда не хотела и не хочет войны. Она предает нас. Россия одна должна быть спасительницей Европы. Наш благодетель знает свое высокое призвание и будет верен ему. Вот одно, во что я верю. Нашему доброму и чудному государю предстоит величайшая роль в мире, и он так добродетелен и хорош, что Бог не оставит его, и он исполнит свое призвание задавить гидру революции, которая теперь еще ужаснее в лице этого убийцы и злодея. Мы одни должны искупить кровь праведника. На кого нам надеяться, я вас спрашиваю?.. Англия с своим коммерческим духом не поймет и не может понять всю высоту души императора Александра. Она отказалась очистить Мальту. Она хочет видеть, ищет заднюю мысль наших действий. Что они сказали Новосильцеву? Ничего. Они не поняли, они не могли понять самоотвержения нашего императора, который ничего не хочет для себя и все хочет для блага мира. И что они обещали? Ничего. И что обещали, и того не будет! Пруссия уже объявила, что Бонапарте непобедим и что вся Европа ничего не может против него... И я не верю ни в одном слове ни Гарденбергу, ни Гаугвицу. Cette fameuse neutralité prussienne, ce n'est qu'un piège. Я верю в одного Бога и в высокую судьбу нашего милого императора. Он спасет Европу!.. — Она вдруг остановилась с улыбкой насмешки над своею горячностью.\n", + "— Я думаю, — сказал князь, улыбаясь, — что, ежели бы вас послали вместо нашего милого Винценгероде, вы бы взяли приступом согласие прусского короля. Вы так красноречивы. Вы дадите мне чаю?\n", + "— Сейчас. A propos, — прибавила она, опять успокоиваясь, — нынче у меня два очень интересные человека, le vicomte de Mortemart, il est allié aux Montmorency par les Rohans, одна из лучших фамилий Франции. Это один из хороших эмигрантов, из настоящих. И потом l'abbé Morio; вы знаете этот глубокий ум? Он был принят государем. Вы знаете?\n", + "— А! Я очень рад буду, — сказал князь. — Скажите, — прибавил он, как будто только что вспомнив что-то и особенно-небрежно, тогда как то, о чем он спрашивал, было главной целью его посещения, — правда, что l'impératrice-mère желает назначения барона Функе первым секретарем в Вену? C'est un pauvre sire, ce baron, à ce qu'il paraît. — Князь Василий желал определить сына на это место, которое через императрицу Марию Феодоровну старались доставить барону.\n", + "Анна Павловна почти закрыла глаза в знак того, что ни она, ни кто другой не могут судить про то, что угодно или нравится императрице.\n", + "— Monsieur le baron de Funke a été recommandé à l'impératrice-mère par sa sur, — только сказала она грустным, сухим тоном. В то время как Анна Павловна назвала императрицу, лицо ее вдруг представило глубокое и искреннее выражение преданности и уважения, соединенное с грустью, что с ней бывало каждый раз, когда она в разговоре упоминала о своей высокой покровительнице. Она сказала, что ее величество изволила оказать барону Функе beaucoup d'estime, и опять взгляд ее подернулся грустью.\n", + "Князь равнодушно замолк, Анна Павловна, с свойственною ей придворною и женскою ловкостью и быстротою такта, захотела и щелкануть князя за то, что он дерзнул так отозваться о лице, рекомендованном императрице, и в то же время утешить его.\n", + "— Mais à propos de votre famille, — сказала она, — знаете ли, что ваша дочь, с тех пор как выезжает, fait les délices de tout le monde. On la trouve belle comme le jour.\n", + "Князь наклонился в знак уважения и признательности.\n", + "— Я часто думаю, — продолжала Анна Павловна после минутного молчания, придвигаясь к князю и ласково улыбаясь ему, как будто выказывая этим, что политические и светские разговоры кончены и теперь начинается задушевный, — я часто думаю, как иногда несправедливо распределяется счастие жизни. За что вам дала судьба таких двух славных детей (исключая Анатоля, вашего меньшого, я его не люблю, — вставила она безапелляционно, приподняв брови), — таких прелестных детей? А вы, право, менее всех цените их и потому их не сто́ите.\n", + "И она улыбнулась своею восторженной улыбкой.\n", + "— Que voulez-vous? Lafater aurait dit que je n'ai pas la bosse de la paternité, — сказал князь.\n", + "— Перестаньте шутить. Я хотела серьезно поговорить с вами. Знаете, я недовольна вашим меньшим сыном. Между нами будь сказано (лицо ее приняло грустное выражение), о нем говорили у ее величества и жалеют вас...\n", + "Князь не отвечал, но она молча, значительно глядя на него, ждала ответа. Князь Василий поморщился.\n", + "— Что ж мне делать? — сказал он наконец. — Вы знаете, я сделал для их воспитания все, что может отец, и оба вышли des imbéciles. Ипполит, по крайней мере, покойный дурак, а Анатоль — беспокойный. Вот одно различие, — сказал он, улыбаясь более неестественно и одушевленно, чем обыкновенно, и при этом особенно резко выказывая в сложившихся около его рта морщинах что-то неожиданно-грубое и неприятное.\n", + "— И зачем родятся дети у таких людей, как вы? Ежели бы вы не были отец, я бы ни в чем не могла упрекнуть вас, — сказала Анна Павловна, задумчиво поднимая глаза.\n", + "— Je suis votre верный раб, et à vous seule je puis l'avouer. Мои дети — ce sont les entraves de mon existence. Это мой крест. Я так себе объясняю. Que voulez-vous?..— Он помолчал, выражая жестом свою покорность жестокой судьбе.\n", + "Анна Павловна задумалась.\n", + "— Вы никогда не думали о том, чтобы женить вашего блудного сына Анатоля. Говорят, — сказала она, — что старые девицы ont la manie des mariages. Я еще не чувствую за собою этой слабости, но у меня есть одна petite personne, которая очень несчастлива с отцом, une parente à nous, une princesse Болконская. — Князь Василий не отвечал, хотя с свойственной светским людям быстротой соображения и памятью движением головы показал, что он принял к соображению это сведенье.\n", + "— Нет, вы знаете ли, что этот Анатоль мне стоит сорок тысяч в год, — сказал он, видимо не в силах удерживать печальный ход своих мыслей. Он помолчал.\n", + "— Что будет через пять лет, ежели это пойдет так? Voilà l'avantage d'être père. Она богата, ваша княжна?\n", + "— Отец очень богат и скуп. Он живет в деревне. Знаете, этот известный князь Болконский, отставленный еще при покойном императоре и прозванный прусским королем. Он очень умный человек, но со странностями и тяжелый. La pauvre petite est malheureuse comme les pierres. У нее брат, вот что недавно женился на Lise Мейнен, адъютант Кутузова. Он будет нынче у меня.\n", + "— Ecoutez, chère Annette, — сказал князь, взяв вдруг свою собеседницу за руку и пригибая ее почему-то книзу. — Arrangez-moi cette affaire et je suis votre вернейший раб à tout jamais (рап — comme mon староста m'écrit des донесенья: покой-ер-п). Она хорошей фамилии и богата. Все, что мне нужно.\n", + "И он с теми свободными и фамильярными грациозными движениями, которые его отличали, взял за руку фрейлину, поцеловал ее и, поцеловав, помахал фрейлинскою рукой, развалившись на креслах и глядя в сторону.\n", + "— Attendez, — сказала Анна Павловна, соображая. — Я нынче же поговорю Lise (la femme du jeune Болконский). И, может быть, это уладится. Ce sera dans votre famille que je ferai mon apprentissage de vieille fille.\n" + ] + } + ], + "source": [ + "from urllib.request import urlopen\n", + "\n", + "textPage = urlopen(\n", + " 'http://www.pythonscraping.com/pages/warandpeace/chapter1-ru.txt')\n", + "print(str(textPage.read(), 'utf-8'))" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "Python\n", + "\n", + "\n", + "\n", + "\n", + "Paradigm\n", + "Object-oriented, imperative, functional, procedural, reflective\n", + "\n", + "\n", + "Designed by\n", + "Guido van Rossum\n", + "\n", + "\n", + "Developer\n", + "Python Software Foundation\n", + "\n", + "\n", + "First appeared\n", + "20 February 1991; 26 years ago (1991-02-20)[1]\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "Stable release\n", + "\n", + "3.6.4 / 19 December 2017; 18 days ago (2017-12-19)[2]\n", + "2.7.14 / 16 September 2017; 3 months ago (2017-09-16)[3]\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "Typing discipline\n", + "Duck, dynamic, strong\n", + "\n", + "\n", + "License\n", + "Python Software Foundation License\n", + "\n", + "\n", + "Filename extensions\n", + ".py, .pyc, .pyd, .pyo (prior to 3.5),[4] .pyw, .pyz (since 3.5)[5]\n", + "\n", + "\n", + "Website\n", + "python.org\n", + "\n", + "\n", + "Major implementations\n", + "\n", + "\n", + "CPython, IronPython, Jython, MicroPython, Numba, PyPy, Stackless Python\n", + "\n", + "\n", + "Dialects\n", + "\n", + "\n", + "Cython, RPython\n", + "\n", + "\n", + "Influenced by\n", + "\n", + "\n", + "ABC,[6] ALGOL 68,[7] C,[8] C++,[9] CLU,[10] Dylan,[11] Haskell,[12] Icon,[13] Java,[14] Lisp,[15] Modula-3,[9] Perl\n", + "\n", + "\n", + "Influenced\n", + "\n", + "\n", + "Boo, Cobra, Coconut,[16] CoffeeScript,[17] D, F#, Falcon, Genie,[18] Go, Groovy, JavaScript,[19][20] Julia,[21] Nim, Ring[22], Ruby,[23] Swift[24]\n", + "\n", + "\n", + "\n", + "\n", + " Python Programming at Wikibooks\n", + "\n", + "\n", + "\n", + "\n", + "Python is an interpreted high-level programming language for general-purpose programming. Created by Guido van Rossum and first released in 1991, Python has a design philosophy that emphasizes code readability, and a syntax that allows programmers to express concepts in fewer lines of code,[25][26] notably using significant whitespace. It provides constructs that enable clear programming on both small and large scales.[27]\n", + "Python features a dynamic type system and automatic memory management. It supports multiple programming paradigms, including object-oriented, imperative, functional and procedural, and has a large and comprehensive standard library.[28]\n", + "Python interpreters are available for many operating systems. CPython, the reference implementation of Python, is open source software[29] and has a community-based development model, as do nearly all of its variant implementations. CPython is managed by the non-profit Python Software Foundation.\n", + "\n", + "\n", + "\n", + "Contents\n", + "\n", + "\n", + "1 History\n", + "2 Features and philosophy\n", + "3 Syntax and semantics\n", + "\n", + "3.1 Indentation\n", + "3.2 Statements and control flow\n", + "3.3 Expressions\n", + "3.4 Methods\n", + "3.5 Typing\n", + "3.6 Mathematics\n", + "\n", + "\n", + "4 Libraries\n", + "5 Development environments\n", + "6 Implementations\n", + "\n", + "6.1 Reference implementation\n", + "6.2 Other implementations\n", + "6.3 Unsupported implementations\n", + "6.4 Cross-compilers to other languages\n", + "6.5 Performance\n", + "\n", + "\n", + "7 Development\n", + "8 Naming\n", + "9 Uses\n", + "10 Languages influenced by Python\n", + "11 See also\n", + "12 References\n", + "13 Further reading\n", + "14 External links\n", + "\n", + "\n", + "\n", + "History[edit]\n", + "\n", + "\n", + "\n", + "\n", + "Guido van Rossum, the creator of Python\n", + "\n", + "\n", + "Main article: History of Python\n", + "Python was conceived in the late 1980s,[30] and its implementation began in December 1989[31] by Guido van Rossum at Centrum Wiskunde & Informatica (CWI) in the Netherlands as a successor to the ABC language (itself inspired by SETL)[32] capable of exception handling and interfacing with the Amoeba operating system.[6] Van Rossum remains Python's principal author. His continuing central role in Python's development is reflected in the title given to him by the Python community: Benevolent Dictator For Life (BDFL).\n", + "On the origins of Python, Van Rossum wrote in 1996:[33]\n", + "\n", + "\n", + "“\n", + "...In December 1989, I was looking for a \"hobby\" programming project that would keep me occupied during the week around Christmas. My office ... would be closed, but I had a home computer, and not much else on my hands. I decided to write an interpreter for the new scripting language I had been thinking about lately: a descendant of ABC that would appeal to Unix/C hackers. I chose Python as a working title for the project, being in a slightly irreverent mood (and a big fan of Monty Python's Flying Circus).\n", + "”\n", + "\n", + "\n", + "Python 2.0 was released on 16 October 2000 and had many major new features, including a cycle-detecting garbage collector and support for Unicode. With this release, the development process became more transparent and community-backed.[34]\n", + "Python 3.0 (initially called Python 3000 or py3k) was released on 3 December 2008 after a long testing period. It is a major revision of the language that is not backward-compatible with previous versions.[35] However, many of its major features have been backported to the backward-compatible Python 2.6.x[36] and 2.7.x version series.\n", + "Python 2.7's end-of-life date (a.k.a. EOL, sunset date) was initially set at 2015, then postponed to 2020 out of concern that a large body of existing code could not easily be forward-ported to Python 3.[37][38] In January 2017, Google announced work on a Python 2.7 to Go transcompiler. The Register speculated that this was in response to Python 2.7's planned end-of-life[39], but Google cited performance under concurrent workloads as their only motivation.[40]\n", + "Features and philosophy[edit]\n", + "Python is a multi-paradigm programming language. Object-oriented programming and structured programming are fully supported, and many of its features support functional programming and aspect-oriented programming (including by metaprogramming[41] and metaobjects (magic methods)).[42] Many other paradigms are supported via extensions, including design by contract[43][44] and logic programming.[45]\n", + "Python uses dynamic typing, and a combination of reference counting and a cycle-detecting garbage collector for memory management. It also features dynamic name resolution (late binding), which binds method and variable names during program execution.\n", + "Python's design offers some support for functional programming in the Lisp tradition. It has filter(), map(), and reduce() functions; list comprehensions, dictionaries, and sets; and generator expressions.[46] The standard library has two modules (itertools and functools) that implement functional tools borrowed from Haskell and Standard ML.[47]\n", + "The language's core philosophy is summarized in the document The Zen of Python (PEP 20), which includes aphorisms such as:[48]\n", + "\n", + "Beautiful is better than ugly\n", + "Explicit is better than implicit\n", + "Simple is better than complex\n", + "Complex is better than complicated\n", + "Readability counts\n", + "\n", + "Rather than having all of its functionality built into its core, Python was designed to be highly extensible. This compact modularity has made it particularly popular as a means of adding programmable interfaces to existing applications. Van Rossum's vision of a small core language with a large standard library and easily extensible interpreter stemmed from his frustrations with ABC, which espoused the opposite approach.[30]\n", + "While offering choice in coding methodology, the Python philosophy rejects exuberant syntax (such as that of Perl) in favor of a simpler, less-cluttered grammar. As Alex Martelli put it: \"To describe something as 'clever' is not considered a compliment in the Python culture.\"[49] Python's philosophy rejects the Perl \"there is more than one way to do it\" approach to language design in favor of \"there should be one—and preferably only one—obvious way to do it\".[48]\n", + "Python's developers strive to avoid premature optimization, and reject patches to non-critical parts of CPython that would offer marginal increases in speed at the cost of clarity.[50] When speed is important, a Python programmer can move time-critical functions to extension modules written in languages such as C, or use PyPy, a just-in-time compiler. Cython is also available, which translates a Python script into C and makes direct C-level API calls into the Python interpreter.\n", + "An important goal of Python's developers is keeping it fun to use. This is reflected in the language's name—a tribute to the British comedy group Monty Python[51]—and in occasionally playful approaches to tutorials and reference materials, such as examples that refer to spam and eggs (from a famous Monty Python sketch) instead of the standard foo and bar.[52][53]\n", + "A common neologism in the Python community is pythonic, which can have a wide range of meanings related to program style. To say that code is pythonic is to say that it uses Python idioms well, that it is natural or shows fluency in the language, that it conforms with Python's minimalist philosophy and emphasis on readability. In contrast, code that is difficult to understand or reads like a rough transcription from another programming language is called unpythonic.\n", + "Users and admirers of Python, especially those considered knowledgeable or experienced, are often referred to as Pythonists, Pythonistas, and Pythoneers.[54][55]\n", + "Syntax and semantics[edit]\n", + "Main article: Python syntax and semantics\n", + "Python is meant to be an easily readable language. Its formatting is visually uncluttered, and it often uses English keywords where other languages use punctuation. Unlike many other languages, it does not use curly brackets to delimit blocks, and semicolons after statements are optional. It has fewer syntactic exceptions and special cases than C or Pascal.[56]\n", + "Indentation[edit]\n", + "Main article: Python syntax and semantics § Indentation\n", + "Python uses whitespace indentation, rather than curly braces or keywords, to delimit blocks. An increase in indentation comes after certain statements; a decrease in indentation signifies the end of the current block.[57] This feature is also sometimes termed the off-side rule.\n", + "Statements and control flow[edit]\n", + "Python's statements include (among others):\n", + "\n", + "The assignment statement (token '=', the equals sign). This operates differently than in traditional imperative programming languages, and this fundamental mechanism (including the nature of Python's version of variables) illuminates many other features of the language. Assignment in C, e.g., x = 2, translates to \"typed variable name x receives a copy of numeric value 2\". The (right-hand) value is copied into an allocated storage location for which the (left-hand) variable name is the symbolic address. The memory allocated to the variable is large enough (potentially quite large) for the declared type. In the simplest case of Python assignment, using the same example, x = 2, translates to \"(generic) name x receives a reference to a separate, dynamically allocated object of numeric (int) type of value 2.\" This is termed binding the name to the object. Since the name's storage location doesn't contain the indicated value, it is improper to call it a variable. Names may be subsequently rebound at any time to objects of greatly varying types, including strings, procedures, complex objects with data and methods, etc. Successive assignments of a common value to multiple names, e.g., x = 2; y = 2; z = 2 result in allocating storage to (at most) three names and one numeric object, to which all three names are bound. Since a name is a generic reference holder it is unreasonable to associate a fixed data type with it. However at a given time a name will be bound to some object, which will have a type; thus there is dynamic typing.\n", + "The if statement, which conditionally executes a block of code, along with else and elif (a contraction of else-if).\n", + "The for statement, which iterates over an iterable object, capturing each element to a local variable for use by the attached block.\n", + "The while statement, which executes a block of code as long as its condition is true.\n", + "The try statement, which allows exceptions raised in its attached code block to be caught and handled by except clauses; it also ensures that clean-up code in a finally block will always be run regardless of how the block exits.\n", + "The class statement, which executes a block of code and attaches its local namespace to a class, for use in object-oriented programming.\n", + "The def statement, which defines a function or method.\n", + "The with statement (from Python 2.5), which encloses a code block within a context manager (for example, acquiring a lock before the block of code is run and releasing the lock afterwards, or opening a file and then closing it), allowing Resource Acquisition Is Initialization (RAII)-like behavior.\n", + "The pass statement, which serves as a NOP. It is syntactically needed to create an empty code block.\n", + "The assert statement, used during debugging to check for conditions that ought to apply.\n", + "The yield statement, which returns a value from a generator function. From Python 2.5, yield is also an operator. This form is used to implement coroutines.\n", + "The import statement, which is used to import modules whose functions or variables can be used in the current program. There are two ways of using import: from import * or import .\n", + "The print statement was changed to the print() function in Python 3.[58]\n", + "\n", + "Python does not support tail call optimization or first-class continuations, and, according to Guido van Rossum, it never will.[59][60] However, better support for coroutine-like functionality is provided in 2.5, by extending Python's generators.[61] Before 2.5, generators were lazy iterators; information was passed unidirectionally out of the generator. From Python 2.5, it is possible to pass information back into a generator function, and from Python 3.3, the information can be passed through multiple stack levels.[62]\n", + "Expressions[edit]\n", + "Some Python expressions are similar to languages such as C and Java, while some are not:\n", + "\n", + "Addition, subtraction, and multiplication are the same, but the behavior of division differs. There are two types of divisions in Python. They are floor division and integer division.[63] Python also added the ** operator for exponentiation.\n", + "From Python 3.5, it enables support of matrix multiplication with the @ operator.[64][65]\n", + "In Python, == compares by value, versus Java, which compares numerics by value[66] and objects by reference.[67] (Value comparisons in Java on objects can be performed with the equals() method.) Python's is operator may be used to compare object identities (comparison by reference). In Python, comparisons may be chained, for example a <= b <= c.\n", + "Python uses the words and, or, not for its boolean operators rather than the symbolic &&, ||, ! used in Java and C.\n", + "Python has a type of expression termed a list comprehension. Python 2.4 extended list comprehensions into a more general expression termed a generator expression.[46]\n", + "Anonymous functions are implemented using lambda expressions; however, these are limited in that the body can only be one expression.\n", + "Conditional expressions in Python are written as x if c else y[68] (different in order of operands from the c ? x : y operator common to many other languages).\n", + "Python makes a distinction between lists and tuples. Lists are written as [1, 2, 3], are mutable, and cannot be used as the keys of dictionaries (dictionary keys must be immutable in Python). Tuples are written as (1, 2, 3), are immutable and thus can be used as the keys of dictionaries, provided all elements of the tuple are immutable. The + operator can be used to concatenate two tuples, which does not directly modify their contents, but rather produces a new tuple containing the elements of both provided tuples. Thus, given the variable t initially equal to (1, 2, 3), executing t = t + (4, 5) first evaluates t + (4, 5), which yields (1, 2, 3, 4, 5), which is then assigned back to t, thereby effectively \"modifying the contents\" of t, while conforming to the immutable nature of tuple objects. Parentheses are optional for tuples in unambiguous contexts.[69]\n", + "Python features sequence unpacking where multiple expressions, each evaluating to anything that can be assigned to (a variable, a writable property, etc), are associated in the identical manner to that forming tuple literals and, as a whole, are put on the left hand side of the equal sign in an assignment statement. The statement expects an iterable object on the right hand side of the equal sign that produces the same number of values as the provided writable expressions when iterated through, and will iterate through it, assigning each of the produced values to the corresponding expression on the left.[citation needed]\n", + "Python has a \"string format\" operator %. This functions analogous to printf format strings in C, e.g. \"spam=%s eggs=%d\" % (\"blah\", 2) evaluates to \"spam=blah eggs=2\". In Python 3 and 2.6+, this was supplemented by the format() method of the str class, e.g. \"spam={0} eggs={1}\".format(\"blah\", 2), Python 3.6 added \"f-strings\": f'spam={\"blah\"} eggs={2}'.[70]\n", + "Python has various kinds of string literals:\n", + "\n", + "Strings delimited by single or double quote marks. Unlike in Unix shells, Perl and Perl-influenced languages, single quote marks and double quote marks function identically. Both kinds of string use the backslash (\\) as an escape character. String interpolation became available in Python 3.6 as \"formatted string literals\".[70]\n", + "Triple-quoted strings, which begin and end with a series of three single or double quote marks. They may span multiple lines and function like here documents in shells, Perl and Ruby.\n", + "Raw string varieties, denoted by prefixing the string literal with an r. Escape sequences are not interpreted; hence raw strings are useful where literal backslashes are common, such as regular expressions and Windows-style paths. Compare \"@-quoting\" in C#.\n", + "\n", + "\n", + "Python has array index and array slicing expressions on lists, denoted as a[key], a[start:stop] or a[start:stop:step]. Indexes are zero-based, and negative indexes are relative to the end. Slices take elements from the start index up to, but not including, the stop index. The third slice parameter, called step or stride, allows elements to be skipped and reversed. Slice indexes may be omitted, for example a[:] returns a copy of the entire list. Each element of a slice is a shallow copy.\n", + "\n", + "In Python, a distinction between expressions and statements is rigidly enforced, in contrast to languages such as Common Lisp, Scheme, or Ruby. This leads to duplicating some functionality. For example:\n", + "\n", + "List comprehensions vs. for-loops\n", + "Conditional expressions vs. if blocks\n", + "The eval() vs. exec() built-in functions (in Python 2, exec is a statement); the former is for expressions, the latter is for statements.\n", + "\n", + "Statements cannot be a part of an expression, so list and other comprehensions or lambda expressions, all being expressions, cannot contain statements. A particular case of this is that an assignment statement such as a = 1 cannot form part of the conditional expression of a conditional statement. This has the advantage of avoiding a classic C error of mistaking an assignment operator = for an equality operator == in conditions: if (c = 1) { ... } is syntactically valid (but probably unintended) C code but if c = 1: ... causes a syntax error in Python.\n", + "Methods[edit]\n", + "Methods on objects are functions attached to the object's class; the syntax instance.method(argument) is, for normal methods and functions, syntactic sugar for Class.method(instance, argument). Python methods have an explicit self parameter to access instance data, in contrast to the implicit self (or this) in some other object-oriented programming languages (e.g., C++, Java, Objective-C, or Ruby).[71]\n", + "Typing[edit]\n", + "Python uses duck typing and has typed objects but untyped variable names. Type constraints are not checked at compile time; rather, operations on an object may fail, signifying that the given object is not of a suitable type. Despite being dynamically typed, Python is strongly typed, forbidding operations that are not well-defined (for example, adding a number to a string) rather than silently attempting to make sense of them.\n", + "Python allows programmers to define their own types using classes, which are most often used for object-oriented programming. New instances of classes are constructed by calling the class (for example, SpamClass() or EggsClass()), and the classes are instances of the metaclass type (itself an instance of itself), allowing metaprogramming and reflection.\n", + "Before version 3.0, Python had two kinds of classes: old-style and new-style.[72] The syntax of both styles is the same, the difference being whether the class object is inherited from, directly or indirectly (all new-style classes inherit from object and are instances of type). In versions of Python 2 from Python 2.2 onwards, both kinds of classes can be used. Old-style classes were eliminated in Python 3.0.\n", + "The long term plan is to support gradual typing[73] and from Python 3.5, the syntax of the language allows specifying static types but they are not checked in the default implementation, CPython. An experimental optional static type checker named mypy supports compile-time type checking.[74]\n", + "\n", + "Summary of Python 3's built-in types\n", + "\n", + "Type\n", + "mutable\n", + "Description\n", + "Syntax example\n", + "\n", + "\n", + "bool\n", + "immutable\n", + "Boolean value\n", + "True\n", + "False\n", + "\n", + "\n", + "bytearray\n", + "mutable\n", + "Sequence of bytes\n", + "bytearray(b'Some ASCII')\n", + "bytearray(b\"Some ASCII\")\n", + "bytearray([119, 105, 107, 105])\n", + "\n", + "\n", + "bytes\n", + "immutable\n", + "Sequence of bytes\n", + "b'Some ASCII'\n", + "b\"Some ASCII\"\n", + "bytes([119, 105, 107, 105])\n", + "\n", + "\n", + "complex\n", + "immutable\n", + "Complex number with real and imaginary parts\n", + "3+2.7j\n", + "\n", + "\n", + "dict\n", + "mutable\n", + "Associative array (or dictionary) of key and value pairs; can contain mixed types (keys and values), keys must be a hashable type\n", + "{'key1': 1.0, 3: False}\n", + "\n", + "\n", + "ellipsis\n", + "\n", + "An ellipsis placeholder to be used as an index in NumPy arrays\n", + "...\n", + "\n", + "\n", + "float\n", + "immutable\n", + "Floating point number, system-defined precision\n", + "3.1415927\n", + "\n", + "\n", + "frozenset\n", + "immutable\n", + "Unordered set, contains no duplicates; can contain mixed types, if hashable\n", + "frozenset([4.0, 'string', True])\n", + "\n", + "\n", + "int\n", + "immutable\n", + "Integer of unlimited magnitude[75]\n", + "42\n", + "\n", + "\n", + "list\n", + "mutable\n", + "List, can contain mixed types\n", + "[4.0, 'string', True]\n", + "\n", + "\n", + "set\n", + "mutable\n", + "Unordered set, contains no duplicates; can contain mixed types, if hashable\n", + "{4.0, 'string', True}\n", + "\n", + "\n", + "str\n", + "immutable\n", + "A character string: sequence of Unicode codepoints\n", + "'Wikipedia'\n", + "\"Wikipedia\"\n", + "\"\"\"Spanning\n", + "multiple\n", + "lines\"\"\"\n", + "\n", + "\n", + "tuple\n", + "immutable\n", + "Can contain mixed types\n", + "(4.0, 'string', True)But we can append elements using __add__ .\n", + "a = (4.0, 'string' , True).__add__(('hi' ,))\n", + "now a gives (4.0, 'string', True ,'hi')\n", + "\n", + "\n", + "\n", + "Mathematics[edit]\n", + "Python has the usual C arithmetic operators (+, -, *, /, %). It also has ** for exponentiation, e.g. 5**3 == 125 and 9**0.5 == 3.0, and a new matrix multiply @ operator is included in version 3.5.[76] Additionally, it has a unary operator (~), which essentially inverts all the bytes of its one argument. For integers, this means ~x=-x-1.[77] Other operators include bitwise shift operators x << y, which shifts x to the left y places, the same as x*(2**y) , and x >> y, which shifts x to the right y places, the same as x/(2**y) .[78]\n", + "The behavior of division has changed significantly over time:[79]\n", + "\n", + "Python 2.1 and earlier use the C division behavior. The / operator is integer division if both operands are integers, and floating-point division otherwise. Integer division rounds towards 0, e.g. 7/3 == 2 and -7/3 == -2.\n", + "Python 2.2 changes integer division to round towards negative infinity, e.g. 7/3 == 2 and -7/3 == -3. The floor division // operator is introduced. So 7//3 == 2, -7//3 == -3, 7.5//3 == 2.0 and -7.5//3 == -3.0. Adding from __future__ import division causes a module to use Python 3.0 rules for division (see next).\n", + "Python 3.0 changes / to be always floating-point division. In Python terms, the pre-3.0 / is classic division, the version-3.0 / is real division, and // is floor division.\n", + "\n", + "Rounding towards negative infinity, though different from most languages, adds consistency. For instance, it means that the equation (a + b)//b == a//b + 1 is always true. It also means that the equation b*(a//b) + a%b == a is valid for both positive and negative values of a. However, maintaining the validity of this equation means that while the result of a%b is, as expected, in the half-open interval [0, b), where b is a positive integer, it has to lie in the interval (b, 0] when b is negative.[80]\n", + "Python provides a round function for rounding a float to the nearest integer. For tie-breaking, versions before 3 use round-away-from-zero: round(0.5) is 1.0, round(-0.5) is −1.0.[81] Python 3 uses round to even: round(1.5) is 2, round(2.5) is 2.[82]\n", + "Python allows boolean expressions with multiple equality relations in a manner that is consistent with general use in mathematics. For example, the expression a < b < c tests whether a is less than b and b is less than c. C-derived languages interpret this expression differently: in C, the expression would first evaluate a < b, resulting in 0 or 1, and that result would then be compared with c.[83][page needed]\n", + "Python has extensive built-in support for arbitrary precision arithmetic. Integers are transparently switched from the machine-supported maximum fixed-precision (usually 32 or 64 bits), belonging to the python type int, to arbitrary precision, belonging to the python type long, where needed. The latter have an \"L\" suffix in their textual representation.[84] (In Python 3, the distinction between the int and long types was eliminated; this behavior is now entirely contained by the int class.) The Decimal type/class in module decimal (since version 2.4) provides decimal floating point numbers to arbitrary precision and several rounding modes.[85] The Fraction type in module fractions (since version 2.6) provides arbitrary precision for rational numbers.[86]\n", + "Due to Python's extensive mathematics library, and the third-party library NumPy that further extends the native capabilities, it is frequently used as a scientific scripting language to aid in problems such as numerical data processing and manipulation.\n", + "Libraries[edit]\n", + "Python's large standard library, commonly cited as one of its greatest strengths,[87] provides tools suited to many tasks. For Internet-facing applications, many standard formats and protocols such as MIME and HTTP are supported. It includes modules for creating graphical user interfaces, connecting to relational databases, generating pseudorandom numbers, arithmetic with arbitrary precision decimals,[88] manipulating regular expressions, and unit testing.\n", + "Some parts of the standard library are covered by specifications (for example, the Web Server Gateway Interface (WSGI) implementation wsgiref follows PEP 333[89]), but most modules are not. They are specified by their code, internal documentation, and test suites (if supplied). However, because most of the standard library is cross-platform Python code, only a few modules need altering or rewriting for variant implementations.\n", + "As of September 2017,[update] the Python Package Index, the official repository for third-party Python software, contains over 117,000[90] packages with a wide range of functionality, including:\n", + "\n", + "Graphical user interfaces\n", + "Web frameworks\n", + "Multimedia\n", + "Databases\n", + "Networking\n", + "Test frameworks\n", + "Automation\n", + "Web scraping\n", + "Documentation\n", + "System administration\n", + "Scientific computing\n", + "Text processing\n", + "Image processing\n", + "\n", + "Development environments[edit]\n", + "See also: Comparison of integrated development environments § Python\n", + "Most Python implementations (including CPython) include a read–eval–print loop (REPL), permitting them to function as a command line interpreter for which the user enters statements sequentially and receives results immediately.\n", + "Other shells, including IDLE and IPython, add further abilities such as auto-completion, session state retention and syntax highlighting.\n", + "As well as standard desktop integrated development environments (see Wikipedia's \"Python IDE\" article), there are Web browser-based IDEs; SageMath (intended for developing science and math-related Python programs); PythonAnywhere, a browser-based IDE and hosting environment; and Canopy IDE, a commercial Python IDE emphasizing scientific computing.[91]\n", + "Implementations[edit]\n", + "See also: List of Python software § Python implementations\n", + "Reference implementation[edit]\n", + "CPython is the reference implementation of Python. It is written in C, meeting the C89 standard with several select C99 features.[92] It compiles Python programs into an intermediate bytecode[93] which is then executed by its virtual machine.[94] CPython is distributed with a large standard library written in a mixture of C and native Python. It is available for many platforms, including Windows and most modern Unix-like systems. Platform portability was one of its earliest priorities.[95]\n", + "Other implementations[edit]\n", + "PyPy is a fast, compliant[96] interpreter of Python 2.7 and 3.5. Its just-in-time compiler brings a significant speed improvement over CPython.[97] A version is under development that will use software transactional memory to take advantage of multi-core processors.[98]\n", + "Stackless Python is a significant fork of CPython that implements microthreads; it does not use the C memory stack, thus allowing massively concurrent programs. PyPy also has a stackless version.[99]\n", + "MicroPython is a Python 3 variant optimised for microcontrollers.\n", + "Unsupported implementations[edit]\n", + "Other just-in-time Python compilers have been developed, but are now unsupported:\n", + "\n", + "Google began a project named Unladen Swallow in 2009 with the aim of speeding up the Python interpreter fivefold by using the LLVM, and of improving its multithreading ability to scale to thousands of cores.[100]\n", + "Psyco is a just-in-time specialising compiler that integrates with CPython and transforms bytecode to machine code at runtime. The emitted code is specialised for certain data types and is faster than standard Python code.\n", + "\n", + "In 2005, Nokia released a Python interpreter for the Series 60 mobile phones named PyS60. It includes many of the modules from the CPython implementations and some additional modules to integrate with the Symbian operating system. The project has been kept up-to-date to run on all variants of the S60 platform, and several third-party modules are available. The Nokia N900 also supports Python with GTK widget libraries, enabling programs to be written and run on the target device.[101]\n", + "Cross-compilers to other languages[edit]\n", + "There are several compilers to high-level object languages, with either unrestricted Python, a restricted subset of Python, or a language similar to Python as the source language:\n", + "\n", + "Jython compiles into Java byte code, which can then be executed by every Java virtual machine implementation. This also enables the use of Java class library functions from the Python program.\n", + "IronPython follows a similar approach in order to run Python programs on the .NET Common Language Runtime.\n", + "The RPython language can be compiled to C, Java bytecode, or Common Intermediate Language, and is used to build the PyPy interpreter of Python.\n", + "Pyjs compiles Python to JavaScript.\n", + "Cython compiles Python to C and C++.\n", + "Pythran compiles Python to C++.\n", + "Somewhat dated Pyrex (latest release in 2010) and Shed Skin (latest release in 2013) compile to C and C++ respectively.\n", + "Google's Grumpy compiles Python to Go.\n", + "Nuitka compiles Python into C++ [102]\n", + "\n", + "Performance[edit]\n", + "A performance comparison of various Python implementations on a non-numerical (combinatorial) workload was presented at EuroSciPy '13.[103]\n", + "Development[edit]\n", + "Python's development is conducted largely through the Python Enhancement Proposal (PEP) process, the primary mechanism for proposing major new features, collecting community input on issues and documenting Python design decisions.[104] Outstanding PEPs are reviewed and commented on by the Python community and Guido Van Rossum, Python's Benevolent Dictator For Life.[104]\n", + "Enhancement of the language corresponds with development of the CPython reference implementation. The mailing list python-dev is the primary forum for the language's development. Specific issues are discussed in the Roundup bug tracker maintained at python.org.[105] Development originally took place on a self-hosted source-code repository running Mercurial, until Python moved to GitHub in January 2017.[106]\n", + "CPython's public releases come in three types, distinguished by which part of the version number is incremented:\n", + "\n", + "Backward-incompatible versions, where code is expected to break and need to be manually ported. The first part of the version number is incremented. These releases happen infrequently—for example, version 3.0 was released 8 years after 2.0.\n", + "Major or \"feature\" releases, about every 18 months, are largely compatible but introduce new features. The second part of the version number is incremented. Each major version is supported by bugfixes for several years after its release.[107]\n", + "Bugfix releases, which introduce no new features, occur about every 3 months and are made when a sufficient number of bugs have been fixed upstream since the last release. Security vulnerabilities are also patched in these releases. The third and final part of the version number is incremented.[108]\n", + "\n", + "Many alpha, beta, and release-candidates are also released as previews and for testing before final releases. Although there is a rough schedule for each release, they are often delayed if the code is not ready. Python's development team monitors the state of the code by running the large unit test suite during development, and using the BuildBot continuous integration system.[109]\n", + "The community of Python developers has also contributed over 86,000[110] software modules (as of 20 August 2016[update]) to the Python Package Index (PyPI), the official repository of third-party Python libraries.\n", + "The major academic conference on Python is PyCon. There are also special Python mentoring programmes, such as Pyladies.\n", + "Naming[edit]\n", + "Python's name is derived from the British comedy group Monty Python, whom Python creator Guido van Rossum enjoyed while developing the language. Monty Python references appear frequently in Python code and culture;[111] for example, the metasyntactic variables often used in Python literature are spam and eggs instead of the traditional foo and bar[111][112]. The official Python documentation also contains various references to Monty Python routines.[113][114]\n", + "The prefix Py- is used to show that something is related to Python. Examples of the use of this prefix in names of Python applications or libraries include Pygame, a binding of SDL to Python (commonly used to create games); Python for S60, an implementation for the Symbian S60 operating system; PyQt and PyGTK, which bind Qt and GTK to Python respectively; and PyPy, a Python implementation originally written in Python.\n", + "Uses[edit]\n", + "Main article: List of Python software\n", + "Since 2003, Python has consistently ranked in the top ten most popular programming languages in the TIOBE Programming Community Index. As of March 2017[update], it is the fifth most popular language.[115] It was selected Programming Language of the Year in 2007 and 2010.[116] It is the third most popular language whose grammatical syntax is not predominantly based on C.\n", + "An empirical study found that scripting languages, such as Python, are more productive than conventional languages, such as C and Java, for programming problems involving string manipulation and search in a dictionary, and determined that memory consumption was often \"better than Java and not much worse than C or C++\".[117]\n", + "Large organizations that use Python include Wikipedia, Google,[118] Yahoo!,[119] CERN,[120] NASA,[121] and some smaller entities like ILM[122] and ITA.[123] The social news networking site Reddit is written entirely in Python.\n", + "Python can serve as a scripting language for web applications, e.g., via mod_wsgi for the Apache web server.[124] With Web Server Gateway Interface, a standard API has evolved to facilitate these applications. Web frameworks like Django, Pylons, Pyramid, TurboGears, web2py, Tornado, Flask, Bottle and Zope support developers in the design and maintenance of complex applications. Pyjs and IronPython can be used to develop the client-side of Ajax-based applications. SQLAlchemy can be used as data mapper to a relational database. Twisted is a framework to program communications between computers, and is used (for example) by Dropbox.\n", + "Libraries such as NumPy, SciPy and Matplotlib allow the effective use of Python in scientific computing,[125][126] with specialized libraries such as Biopython and Astropy providing domain-specific functionality. SageMath is a mathematical software with a \"notebook\" programmable in Python: its library covers many aspects of mathematics, including algebra, combinatorics, numerical mathematics, number theory, and calculus. The Python language re-implemented in Java platform is used for numeric and statistical calculations with 2D/3D visualization by the DMelt project.[127][128]\n", + "Python has been successfully embedded in many software products as a scripting language, including in finite element method software such as Abaqus, 3D parametric modeler like FreeCAD, 3D animation packages such as 3ds Max, Blender, Cinema 4D, Lightwave, Houdini, Maya, modo, MotionBuilder, Softimage, the visual effects compositor Nuke, 2D imaging programs like GIMP,[129] Inkscape, Scribus and Paint Shop Pro,[130] and musical notation programs like scorewriter and capella. GNU Debugger uses Python as a pretty printer to show complex structures such as C++ containers. Esri promotes Python as the best choice for writing scripts in ArcGIS.[131] It has also been used in several video games,[132][133] and has been adopted as first of the three available programming languages in Google App Engine, the other two being Java and Go.[134] Python is also used in algorithmic trading and quantitative finance.[135] Python can also be implemented in APIs of online brokerages that run on other languages by using wrappers.[136]\n", + "Python has been used in artificial intelligence projects.[137][138][139][140] As a scripting language with modular architecture, simple syntax and rich text processing tools, Python is often used for natural language processing.[141]\n", + "Many operating systems include Python as a standard component. It ships with most Linux distributions, AmigaOS 4, FreeBSD, NetBSD, OpenBSD and macOS, and can be used from the command line (terminal). Many Linux distributions use installers written in Python: Ubuntu uses the Ubiquity installer, while Red Hat Linux and Fedora use the Anaconda installer. Gentoo Linux uses Python in its package management system, Portage.\n", + "Python is used extensively in the information security industry, including in exploit development.[142][143]\n", + "Most of the Sugar software for the One Laptop per Child XO, now developed at Sugar Labs, is written in Python.[144]\n", + "The Raspberry Pi single-board computer project has adopted Python as its main user-programming language.\n", + "LibreOffice includes Python, and intends to replace Java with Python. Its Python Scripting Provider is a core feature[145] since Version 4.0 from 7 February 2013.\n", + "Languages influenced by Python[edit]\n", + "Python's design and philosophy have influenced many other programming languages:\n", + "\n", + "Boo uses indentation, a similar syntax, and a similar object model.[146]\n", + "Cobra uses indentation and a similar syntax, and its \"Acknowledgements\" document lists Python first among languages that influenced it.[147] However, Cobra directly supports design-by-contract, unit tests, and optional static typing.[148]\n", + "CoffeeScript, a programming language that cross-compiles to JavaScript, has Python-inspired syntax.\n", + "ECMAScript borrowed iterators, generators and list comprehensions from Python.[149]\n", + "Go is described as incorporating the \"development speed of working in a dynamic language like Python\".[150]\n", + "Groovy was motivated by the desire to bring the Python design philosophy to Java.[151]\n", + "Julia was designed \"with true macros [.. and to be] as usable for general programming as Python [and] should be as fast as C\".[21] Calling to or from Julia is possible; to with PyCall.jl and a Python package pyjulia allows calling, in the other direction, from Python.\n", + "OCaml has an optional syntax named twt (The Whitespace Thing), inspired by Python and Haskell.[152]\n", + "Ruby's creator, Yukihiro Matsumoto, has said: \"I wanted a scripting language that was more powerful than Perl, and more object-oriented than Python. That's why I decided to design my own language.\"[153]\n", + "Swift, a programming language developed by Apple, has some Python-inspired syntax.[154]\n", + "\n", + "Python's development practices have also been emulated by other languages. For example, the practice of requiring a document describing the rationale for, and issues surrounding, a change to the language (in Python, a PEP) is also used in Tcl[155] and Erlang[156].\n", + "Python received TIOBE's Programming Language of the Year awards in 2007 and 2010. The award is given to the language with the greatest growth in popularity over the year, as measured by the TIOBE index.[157]\n", + "See also[edit]\n", + "\n", + "\n", + "Free software portal\n", + "Python programming portal\n", + "\n", + "\n", + "\n", + "Comparison of integrated development environments for Python\n", + "Comparison of programming languages\n", + "List of programming languages\n", + "Off-side rule\n", + "\n", + "References[edit]\n", + "\n", + "\n", + "^ \"The History of Python: A Brief Timeline of Python\". Blogger. 20 January 2009. Retrieved 20 March 2016. \n", + "^ Deily, Ned (19 December 2017). \"Python 3.6.4 is now available\". Python Insider. The Python Core Developers. Retrieved 20 December 2017. \n", + "^ Peterson, Benjamin (16 September 2017). \"Python 2.7.14 released\". Python Insider. The Python Core Developers. Retrieved 17 September 2017. \n", + "^ File extension .pyo was removed in Python 3.5. See PEP 0488\n", + "^ Holth, Moore (30 March 2014). \"PEP 0441 -- Improving Python ZIP Application Support\". Retrieved 12 November 2015. \n", + "^ a b \"Why was Python created in the first place?\". General Python FAQ. Python Software Foundation. Retrieved 22 March 2007. \n", + "^ Kuchling, Andrew M. (22 December 2006). \"Interview with Guido van Rossum (July 1998)\". amk.ca. Archived from the original on 1 May 2007. Retrieved 12 March 2012. \n", + "^ van Rossum, Guido (1993). \"An Introduction to Python for UNIX/C Programmers\". Proceedings of the NLUUG najaarsconferentie (Dutch UNIX users group). even though the design of C is far from ideal, its influence on Python is considerable. \n", + "^ a b \"Classes\". The Python Tutorial. Python Software Foundation. Retrieved 20 February 2012. It is a mixture of the class mechanisms found in C++ and Modula-3 \n", + "^ Lundh, Fredrik. \"Call By Object\". effbot.org. Retrieved 21 November 2017. replace \"CLU\" with \"Python\", \"record\" with \"instance\", and \"procedure\" with \"function or method\", and you get a pretty accurate description of Python's object model. \n", + "^ Simionato, Michele. \"The Python 2.3 Method Resolution Order\". Python Software Foundation. The C3 method itself has nothing to do with Python, since it was invented by people working on Dylan and it is described in a paper intended for lispers \n", + "^ Kuchling, A. M. \"Functional Programming HOWTO\". Python v2.7.2 documentation. Python Software Foundation. Retrieved 9 February 2012. \n", + "^ Schemenauer, Neil; Peters, Tim; Hetland, Magnus Lie (18 May 2001). \"PEP 255 – Simple Generators\". Python Enhancement Proposals. Python Software Foundation. Retrieved 9 February 2012. \n", + "^ Smith, Kevin D.; Jewett, Jim J.; Montanaro, Skip; Baxter, Anthony (2 September 2004). \"PEP 318 – Decorators for Functions and Methods\". Python Enhancement Proposals. Python Software Foundation. Retrieved 24 February 2012. \n", + "^ \"More Control Flow Tools\". Python 3 documentation. Python Software Foundation. Retrieved 24 July 2015. \n", + "^ Hubinger, Evan. \"Coconut Programming Language\". coconut-lang.org. Retrieved 18 August 2017. \n", + "^ \"CoffeeScript borrows chained comparisons from Python\". \n", + "^ \"Genie Language - A brief guide\". Retrieved 28 December 2015. \n", + "^ \"Perl and Python influences in JavaScript\". www.2ality.com. 24 February 2013. Retrieved 15 May 2015. \n", + "^ Rauschmayer, Axel. \"Chapter 3: The Nature of JavaScript; Influences\". O'Reilly, Speaking JavaScript. Retrieved 15 May 2015. \n", + "^ a b \"Why We Created Julia\". Julia website. February 2012. Retrieved 5 June 2014. \n", + "^ Ring Team (4 December 2017). \"Ring and other languages\". ring-lang.net. ring-lang. \n", + "^ Bini, Ola (2007). Practical JRuby on Rails Web 2.0 Projects: bringing Ruby on Rails to the Java platform. Berkeley: APress. p. 3. ISBN 978-1-59059-881-8. \n", + "^ Lattner, Chris (3 June 2014). \"Chris Lattner's Homepage\". Chris Lattner. Retrieved 3 June 2014. The Swift language is the product of tireless effort from a team of language experts, documentation gurus, compiler optimization ninjas, and an incredibly important internal dogfooding group who provided feedback to help refine and battle-test ideas. Of course, it also greatly benefited from the experiences hard-won by many other languages in the field, drawing ideas from Objective-C, Rust, Haskell, Ruby, Python, C#, CLU, and far too many others to list. \n", + "^ Summerfield, Mark. Rapid GUI Programming with Python and Qt. Python is a very expressive language, which means that we can usually write far fewer lines of Python code than would be required for an equivalent application written in, say, C++ or Java \n", + "^ McConnell, Steve (30 November 2009). Code Complete, p. 100. ISBN 9780735636972. \n", + "^ Kuhlman, Dave. \"A Python Book: Beginning Python, Advanced Python, and Python Exercises\". \n", + "^ \"About Python\". Python Software Foundation. Retrieved 24 April 2012. , second section \"Fans of Python use the phrase \"batteries included\" to describe the standard library, which covers everything from asynchronous processing to zip files.\"\n", + "^ \"History and License\". Retrieved 5 December 2016.  \"All Python releases are Open Source\"\n", + "^ a b Venners, Bill (13 January 2003). \"The Making of Python\". Artima Developer. Artima. Retrieved 22 March 2007. \n", + "^ van Rossum, Guido (20 January 2009). \"A Brief Timeline of Python\". The History of Python. Google. Retrieved 20 January 2009. \n", + "^ van Rossum, Guido (29 August 2000). \"SETL (was: Lukewarm about range literals)\". Python-Dev (Mailing list). Retrieved 13 March 2011. \n", + "^ van Rossum, Guido (1996). \"Foreword for \"Programming Python\" (1st ed.)\". Retrieved 10 July 2014. \n", + "^ Kuchling, A. M.; Zadka, Moshe (16 October 2000). \"What's New in Python 2.0\". Python Software Foundation. Retrieved 11 February 2012. \n", + "^ \"Python 3.0 Release\". Python Software Foundation. Retrieved 8 July 2009. \n", + "^ van Rossum, Guido (5 April 2006). \"PEP 3000 – Python 3000\". Python Enhancement Proposals. Python Software Foundation. Retrieved 27 June 2009. \n", + "^ \"PEP 373 -- Python 2.7 Release Schedule\". python.org. Retrieved 9 January 2017. \n", + "^ \"PEP 466 -- Network Security Enhancements for Python 2.7.x\". python.org. Retrieved 9 January 2017. \n", + "^ Claburn, Thomas (5 January 2017). \"Google's Grumpy code makes Python Go\". Retrieved 9 January 2017. \n", + "^ \"Google Open Source Blog: Grumpy: Go running Python!\". 4 January 2017. Retrieved 7 March 2017. \n", + "^ The Cain Gang Ltd. \"Python Metaclasses: Who? Why? When?\" (PDF). Archived from the original (PDF) on 10 December 2009. Retrieved 27 June 2009. \n", + "^ \"3.3. Special method names\". The Python Language Reference. Python Software Foundation. Retrieved 27 June 2009. \n", + "^ \"PyDBC: method preconditions, method postconditions and class invariants for Python\". Retrieved 24 September 2011. \n", + "^ \"Contracts for Python\". Retrieved 24 September 2011. \n", + "^ \"PyDatalog\". Retrieved 22 July 2012. \n", + "^ a b Hettinger, Raymond (30 January 2002). \"PEP 289 – Generator Expressions\". Python Enhancement Proposals. Python Software Foundation. Retrieved 19 February 2012. \n", + "^ \"6.5 itertools – Functions creating iterators for efficient looping\". Docs.python.org. Retrieved 22 November 2016. \n", + "^ a b Peters, Tim (19 August 2004). \"PEP 20 – The Zen of Python\". Python Enhancement Proposals. Python Software Foundation. Retrieved 24 November 2008. \n", + "^ Martelli, Alex; Ravenscroft, Anna; Ascher, David (2005). Python Cookbook, 2nd Edition. O'Reilly Media. p. 230. ISBN 978-0-596-00797-3. \n", + "^ \"Python Culture\". \n", + "^ \"General Python FAQ\". Python v2.7.3 documentation. Docs.python.org. Retrieved 3 December 2012. \n", + "^ \"15 Ways Python Is a Powerful Force on the Web\". \n", + "^ \"pprint - Data pretty printer - Python Documentation\". \n", + "^ Goodger, David. \"Code Like a Pythonista: Idiomatic Python\". \n", + "^ \"How to think like a Pythonista\". \n", + "^ \"Is Python a good language for beginning programmers?\". General Python FAQ. Python Software Foundation. Retrieved 21 March 2007. \n", + "^ \"Myths about indentation in Python\". Secnetix.de. Retrieved 19 April 2011. \n", + "^ Sweigart, Al (2010). \"Appendix A: Differences Between Python 2 and 3\". Invent Your Own Computer Games with Python (2 ed.). ISBN 978-0-9821060-1-3. Retrieved 20 February 2014. \n", + "^ van Rossum, Guido (22 April 2009). \"Tail Recursion Elimination\". Neopythonic.blogspot.be. Retrieved 3 December 2012. \n", + "^ van Rossum, Guido (9 February 2006). \"Language Design Is Not Just Solving Puzzles\". Artima forums. Artima. Retrieved 21 March 2007. \n", + "^ van Rossum, Guido; Eby, Phillip J. (10 May 2005). \"PEP 342 – Coroutines via Enhanced Generators\". Python Enhancement Proposals. Python Software Foundation. Retrieved 19 February 2012. \n", + "^ \"PEP 380\". Python.org. Retrieved 3 December 2012. \n", + "^ \"division\". python.org. \n", + "^ \"PEP 0465 -- A dedicated infix operator for matrix multiplication\". python.org. Retrieved 1 January 2016. \n", + "^ \"Python 3.5.1 Release and Changelog\". python.org. Retrieved 1 January 2016. \n", + "^ \"Chapter 15. Expressions - 15.21.1. Numerical Equality Operators == and !=\". Oracle Corporation. Retrieved 28 August 2016. \n", + "^ \"Chapter 15. Expressions - 15.21.3. Reference Equality Operators == and !=\". Oracle Corporation. Retrieved 28 August 2016. \n", + "^ van Rossum, Guido; Hettinger, Raymond (7 February 2003). \"PEP 308 – Conditional Expressions\". Python Enhancement Proposals. Python Software Foundation. Retrieved 13 July 2011. \n", + "^ \"4. Built-in Types — Python 3.6.3rc1 documentation\". python.org. Retrieved 1 October 2017. \n", + "^ a b \"PEP 498 -- Literal String Interpolation\". python.org. Retrieved 8 March 2017. \n", + "^ \"Why must 'self' be used explicitly in method definitions and calls?\". Design and History FAQ. Python Software Foundation. Retrieved 19 February 2012. \n", + "^ \"The Python Language Reference, section 3.3. New-style and classic classes, for release 2.7.1\". Retrieved 12 January 2011. \n", + "^ \"Type hinting for Python\". LWN.net. 24 December 2014. Retrieved 5 May 2015. \n", + "^ \"mypy - Optional Static Typing for Python\". Retrieved 28 January 2017. \n", + "^ Zadka, Moshe; van Rossum, Guido (11 March 2001). \"PEP 237 – Unifying Long Integers and Integers\". Python Enhancement Proposals. Python Software Foundation. Retrieved 24 September 2011. \n", + "^ \"PEP 465 -- A dedicated infix operator for matrix multiplication\". python.org. \n", + "^ \"The tilde operator in Python - Stackoverflow\". stackoverflow.com. \n", + "^ \"BitwiseOperators - Python Wiki\". wiki.python.org. \n", + "^ Zadka, Moshe; van Rossum, Guido (11 March 2001). \"PEP 238 – Changing the Division Operator\". Python Enhancement Proposals. Python Software Foundation. Retrieved 23 October 2013. \n", + "^ \"Why Python's Integer Division Floors\". Retrieved 25 August 2010. \n", + "^ \"round\", The Python standard library, release 2.7, §2: Built-in functions, retrieved 14 August 2011 \n", + "^ \"round\", The Python standard library, release 3.2, §2: Built-in functions, retrieved 14 August 2011 \n", + "^ Python Essential Reference, David M. Beazley\n", + "^ \"Built-in Type\". docs.python.org. \n", + "^ Batista, Facundo. \"PEP 0327 -- Decimal Data Type\". Python.org. Retrieved 26 September 2015. \n", + "^ \"What's New in Python 2.6 — Python v2.6.9 documentation\". docs.python.org. Retrieved 26 September 2015. \n", + "^ Piotrowski, Przemyslaw (July 2006). \"Build a Rapid Web Development Environment for Python Server Pages and Oracle\". Oracle Technology Network. Oracle. Retrieved 12 March 2012. \n", + "^ Batista, Facundo (17 October 2003). \"PEP 327 – Decimal Data Type\". Python Enhancement Proposals. Python Software Foundation. Retrieved 24 November 2008. \n", + "^ Eby, Phillip J. (7 December 2003). \"PEP 333 – Python Web Server Gateway Interface v1.0\". Python Enhancement Proposals. Python Software Foundation. Retrieved 19 February 2012. \n", + "^ Debill, Erik. \"Module Counts\". ModuleCounts. Retrieved 20 September 2017. \n", + "^ Enthought, Canopy. \"Canopy\". www.enthought.com. Retrieved 20 August 2016. \n", + "^ van Rossum, Guido (5 June 2001). \"PEP 7 – Style Guide for C Code\". Python Enhancement Proposals. Python Software Foundation. Retrieved 24 November 2008. \n", + "^ \"CPython byte code\". Docs.python.org. Retrieved 16 February 2016. \n", + "^ \"Python 2.5 internals\" (PDF). Retrieved 19 April 2011. \n", + "^ \"An Interview with Guido van Rossum\". Oreilly.com. Retrieved 24 November 2008. \n", + "^ \"PyPy compatibility\". Pypy.org. Retrieved 3 December 2012. \n", + "^ \"speed comparison between CPython and Pypy\". Speed.pypy.org. Retrieved 3 December 2012. \n", + "^ \"STM with threads\". Morepypy.blogspot.be. 10 June 2012. Retrieved 3 December 2012. \n", + "^ \"Application-level Stackless features — PyPy 2.0.2 documentation\". Doc.pypy.org. Retrieved 17 July 2013. \n", + "^ \"Plans for optimizing Python\". Google Project Hosting. Google. 15 December 2009. Retrieved 24 September 2011. \n", + "^ \"Python on the Nokia N900\". Stochastic Geometry. \n", + "^ \"Nuitka Home | Nuitka Home\". nuitka.net. Retrieved 18 August 2017. \n", + "^ Murri, Riccardo (2013). Performance of Python runtimes on a non-numeric scientific code. European Conference on Python in Science (EuroSciPy). arXiv:1404.6388 . \n", + "^ a b Warsaw, Barry; Hylton, Jeremy; Goodger, David (13 June 2000). \"PEP 1 – PEP Purpose and Guidelines\". Python Enhancement Proposals. Python Software Foundation. Retrieved 19 April 2011. \n", + "^ Cannon, Brett. \"Guido, Some Guys, and a Mailing List: How Python is Developed\". python.org. Python Software Foundation. Archived from the original on 1 June 2009. Retrieved 27 June 2009. \n", + "^ \"Python Developer's Guide\". \n", + "^ Norwitz, Neal (8 April 2002). \"[Python-Dev] Release Schedules (was Stability & change)\". Retrieved 27 June 2009. \n", + "^ Aahz; Baxter, Anthony (15 March 2001). \"PEP 6 – Bug Fix Releases\". Python Enhancement Proposals. Python Software Foundation. Retrieved 27 June 2009. \n", + "^ \"Python Buildbot\". Python Developer’s Guide. Python Software Foundation. Retrieved 24 September 2011. \n", + "^ DeBill, Erik. \"Module Counts\". www.modulecounts.com. Retrieved 20 August 2016. \n", + "^ a b \"Whetting Your Appetite\". The Python Tutorial. Python Software Foundation. Retrieved 20 February 2012. \n", + "^ \"In Python, should I use else after a return in an if block?\". Stack Overflow. Stack Exchange. 17 February 2011. Retrieved 6 May 2011. \n", + "^ Lutz, Mark (2009). Learning Python: Powerful Object-Oriented Programming. O'Reilly Media, Inc. p. 17. ISBN 9781449379322. \n", + "^ Fehily, Chris (2002). Python. Peachpit Press. p. xv. ISBN 9780201748840. \n", + "^ \"TIOBE Index\". TIOBE - The Software Quality Company. Retrieved 7 March 2017. \n", + "^ TIOBE Software Index (2015). \"TIOBE Programming Community Index Python\". Retrieved 10 September 2015. \n", + "^ Prechelt, Lutz (14 March 2000). \"An empirical comparison of C, C++, Java, Perl, Python, Rexx, and Tcl\" (PDF). Retrieved 30 August 2013. \n", + "^ \"Quotes about Python\". Python Software Foundation. Retrieved 8 January 2012. \n", + "^ \"Organizations Using Python\". Python Software Foundation. Retrieved 15 January 2009. \n", + "^ \"Python : the holy grail of programming\". CERN Bulletin. CERN Publications (31/2006). 31 July 2006. Retrieved 11 February 2012. \n", + "^ Shafer, Daniel G. (17 January 2003). \"Python Streamlines Space Shuttle Mission Design\". Python Software Foundation. Retrieved 24 November 2008. \n", + "^ Fortenberry, Tim (17 January 2003). \"Industrial Light & Magic Runs on Python\". Python Software Foundation. Retrieved 11 February 2012. \n", + "^ Taft, Darryl K. (5 March 2007). \"Python Slithers into Systems\". eWeek.com. Ziff Davis Holdings. Retrieved 24 September 2011. \n", + "^ \"Usage statistics and market share of Python for websites\". 2012. Retrieved 18 December 2012. \n", + "^ Oliphant, Travis (2007). \"Python for Scientific Computing\". Computing in Science and Engineering. \n", + "^ Millman, K. Jarrod; Aivazis, Michael (2011). \"Python for Scientists and Engineers\". Computing in Science and Engineering. 13 (2): 9–12. \n", + "^ Chekanov, S. (April 2016). Numeric Computation and Statistical Data Analysis on the Java Platform. London: Springer. p. 670. ISBN 978-3-319-28531-3. \n", + "^ Chekanov, S. (2010). Scientific Data Analysis using Jython Scripting and Java. London: Springer. p. 600. ISBN 978-3-319-28531-3. \n", + "^ \"Installers for GIMP for Windows - Frequently Asked Questions\". 26 July 2013. Retrieved 26 July 2013. \n", + "^ \"jasc psp9components\". Archived from the original on 19 March 2008. \n", + "^ \"About getting started with writing geoprocessing scripts\". ArcGIS Desktop Help 9.2. Environmental Systems Research Institute. 17 November 2006. Retrieved 11 February 2012. \n", + "^ CCP porkbelly (24 August 2010). \"Stackless Python 2.7\". EVE Community Dev Blogs. CCP Games. As you may know, EVE has at its core the programming language known as Stackless Python. \n", + "^ Caudill, Barry (20 September 2005). \"Modding Sid Meier's Civilization IV\". Sid Meier's Civilization IV Developer Blog. Firaxis Games. Archived from the original on 11 August 2010. we created three levels of tools ... The next level offers Python and XML support, letting modders with more experience manipulate the game world and everything in it. \n", + "^ \"Python Language Guide (v1.0)\". Google Documents List Data API v1.0. Google. Archived from the original on 11 August 2010. \n", + "^ \"Python - Best Programming Language for Algorithmic Trading Systems\". 9 March 2016. Retrieved 3 October 2016. \n", + "^ \"Trading with Interactive Brokers using Python: An IBPy Tutorial\". 19 September 2016. Retrieved 3 October 2016. \n", + "^ \"Python for Artificial Intelligence\". Wiki.python.org. 19 July 2012. Archived from the original on 1 November 2012. Retrieved 3 December 2012. \n", + "^ Paine, Jocelyn, ed. (August 2005). \"AI in Python\". AI Expert Newsletter. Amzi!. Retrieved 11 February 2012. \n", + "^ \"PyAIML 0.8.5 : Python Package Index\". Pypi.python.org. Retrieved 17 July 2013. \n", + "^ Russell, Stuart J. & Norvig, Peter (2009). Artificial Intelligence: A Modern Approach (3rd ed.). Upper Saddle River, NJ: Prentice Hall. p. 1062. ISBN 978-0-13-604259-4. Retrieved 11 February 2012. \n", + "^ \"Natural Language Toolkit\". \n", + "^ \"Immunity: Knowing You're Secure\". \n", + "^ \"Corelabs site\". \n", + "^ \"What is Sugar?\". Sugar Labs. Retrieved 11 February 2012. \n", + "^ \"4.0 New Features and Fixes\". LibreOffice.org. The Document Foundation. 2013. Retrieved 25 February 2013. \n", + "^ \"Gotchas for Python Users\". boo.codehaus.org. Codehaus Foundation. Retrieved 24 November 2008. \n", + "^ Esterbrook, Charles. \"Acknowledgements\". cobra-language.com. Cobra Language. Retrieved 7 April 2010. \n", + "^ Esterbrook, Charles. \"Comparison to Python\". cobra-language.com. Cobra Language. Retrieved 7 April 2010. \n", + "^ \"Proposals: iterators and generators [ES4 Wiki]\". wiki.ecmascript.org. Retrieved 24 November 2008. \n", + "^ Kincaid, Jason (10 November 2009). \"Google's Go: A New Programming Language That's Python Meets C++\". TechCrunch. Retrieved 29 January 2010. \n", + "^ Strachan, James (29 August 2003). \"Groovy – the birth of a new dynamic language for the Java platform\". \n", + "^ Lin, Mike. \"The Whitespace Thing for OCaml\". Massachusetts Institute of Technology. Retrieved 12 April 2009. \n", + "^ \"An Interview with the Creator of Ruby\". Linuxdevcenter.com. Retrieved 3 December 2012. \n", + "^ Lattner, Chris (3 June 2014). \"Chris Lattner's Homepage\". Chris Lattner. Retrieved 3 June 2014. I started work on the Swift Programming Language in July of 2010. I implemented much of the basic language structure, with only a few people knowing of its existence. A few other (amazing) people started contributing in earnest late in 2011, and it became a major focus for the Apple Developer Tools group in July 2013 [...] drawing ideas from Objective-C, Rust, Haskell, Ruby, Python, C#, CLU, and far too many others to list. \n", + "^ Kupries, Andreas; Fellows, Donal K. (14 September 2000). \"TIP #3: TIP Format\". tcl.tk. Tcl Developer Xchange. Retrieved 24 November 2008. \n", + "^ Gustafsson, Per; Niskanen, Raimo (29 January 2007). \"EEP 1: EEP Purpose and Guidelines\". erlang.org. Retrieved 19 April 2011. \n", + "^ \"TIOBE Programming Community Index for March 2012\". TIOBE Software. March 2012. Retrieved 25 March 2012. \n", + "\n", + "\n", + "Further reading[edit]\n", + "\n", + "Downey, Allen B. (May 2012). Think Python: How to Think Like a Computer Scientist (Version 1.6.6 ed.). ISBN 978-0-521-72596-5. \n", + "Hamilton, Naomi (5 August 2008). \"The A-Z of Programming Languages: Python\". Computerworld. Archived from the original on 29 December 2008. Retrieved 31 March 2010. \n", + "Lutz, Mark (2013). Learning Python (5th ed.). O'Reilly Media. ISBN 978-0-596-15806-4. \n", + "Pilgrim, Mark (2004). Dive Into Python. Apress. ISBN 978-1-59059-356-1. \n", + "Pilgrim, Mark (2009). Dive Into Python 3. Apress. ISBN 978-1-4302-2415-0. \n", + "Summerfield, Mark (2009). Programming in Python 3 (2nd ed.). Addison-Wesley Professional. ISBN 978-0-321-68056-3. \n", + "\n", + "External links[edit]\n", + "\n", + "Find more aboutPython (programming language)at Wikipedia's sister projects\n", + "\n", + "Media from Wikimedia Commons\n", + "Quotations from Wikiquote\n", + "Textbooks from Wikibooks\n", + "Learning resources from Wikiversity\n", + "\n", + "\n", + "\n", + "Official website\n", + "Python at Curlie (based on DMOZ)\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "v\n", + "t\n", + "e\n", + "\n", + "\n", + "Programming languages\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "Comparison\n", + "Timeline\n", + "History\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "Assembly\n", + "BASIC\n", + "C\n", + "C++\n", + "C#\n", + "COBOL\n", + "Fortran\n", + "Аналитик\n", + "Go\n", + "Groovy\n", + "Haskell\n", + "Java\n", + "JavaScript (JS)\n", + "Kotlin\n", + "Lisp\n", + "Lua\n", + "Objective-C\n", + "Pascal\n", + "Perl\n", + "PHP\n", + "Python\n", + "Rexx\n", + "Ruby\n", + "Shell\n", + "Smalltalk\n", + "Swift\n", + "Visual Basic .NET (VB.NET)\n", + "VBScript\n", + "more...\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " Category\n", + " Lists\n", + "\n", + "Alphabetical\n", + "Categorical\n", + "Generational\n", + "Non-English-based\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "v\n", + "t\n", + "e\n", + "\n", + "\n", + "Python\n", + "\n", + "\n", + "\n", + "Implementations\n", + "\n", + "\n", + "\n", + "CLPython\n", + "CPython\n", + "Cython\n", + "MicroPython\n", + "Numba\n", + "IronPython\n", + "Jython\n", + "Psyco\n", + "PyPy\n", + "Python for S60\n", + "Shed Skin\n", + "Stackless Python\n", + "Unladen Swallow\n", + "more...\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "IDE\n", + "\n", + "\n", + "\n", + "Boa\n", + "Eric Python IDE\n", + "IDLE\n", + "PyDev\n", + "SPE\n", + "Ninja-IDE\n", + "more...\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "Topics\n", + "\n", + "\n", + "\n", + "WSGI\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "software (list)\n", + "Python Software Foundation\n", + "PyCon\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "v\n", + "t\n", + "e\n", + "\n", + "\n", + "Python web frameworks\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "BlueBream\n", + "Bottle\n", + "CherryPy\n", + "Django\n", + "Flask\n", + "Grok\n", + "Nagare\n", + "Nevow\n", + "Pyjs\n", + "Pylons\n", + "Pyramid\n", + "Quixote\n", + "Spyce\n", + "TACTIC\n", + "Tornado\n", + "TurboGears\n", + "TwistedWeb\n", + "Webware\n", + "web2py\n", + "Zope 2\n", + "more...\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "v\n", + "t\n", + "e\n", + "\n", + "\n", + "Free and open-source software\n", + "\n", + "\n", + "\n", + "General\n", + "\n", + "\n", + "\n", + "Alternative terms for free software\n", + "Comparison of open-source and closed-source software\n", + "Comparison of source code hosting facilities\n", + "Free software\n", + "Free software project directories\n", + "Gratis versus libre\n", + "Long-term support\n", + "Open-source software\n", + "Open-source software development\n", + "Outline\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "Software\n", + "packages\n", + "\n", + "\n", + "\n", + "Audio\n", + "Bioinformatics\n", + "Codecs\n", + "Collaboration\n", + "Configuration management\n", + "Device drivers\n", + "\n", + "Graphics\n", + "Wireless\n", + "\n", + "\n", + "Geophysics\n", + "Health\n", + "Mathematics\n", + "Operating systems\n", + "Programming languages\n", + "Routing\n", + "Statistics\n", + "Television\n", + "Video games\n", + "Web applications\n", + "\n", + "Content management systems\n", + "E-commerce\n", + "\n", + "\n", + "Word processors\n", + "Android apps\n", + "iOS apps\n", + "Commercial\n", + "Trademarked\n", + "Formerly proprietary\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "Community\n", + "\n", + "\n", + "\n", + "Free software movement\n", + "History\n", + "Open-source software movement\n", + "Organizations\n", + "Events\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "Licenses\n", + "\n", + "\n", + "\n", + "AFL\n", + "Apache\n", + "APSL\n", + "Artistic\n", + "Beerware\n", + "Boost\n", + "BSD\n", + "CC0\n", + "CDDL\n", + "EPL\n", + "GNU GPL\n", + "GNU LGPL\n", + "ISC\n", + "MIT\n", + "MPL\n", + "Ms-PL/RL\n", + "Python\n", + "Python Software Foundation\n", + "Sleepycat\n", + "Unlicense\n", + "WTFPL\n", + "zlib\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "License types\n", + "and standards\n", + "\n", + "\n", + "\n", + "Comparison of free and open-source software licenses\n", + "Contributor License Agreement\n", + "Copyfree\n", + "Copyleft\n", + "Debian Free Software Guidelines\n", + "Definition of Free Cultural Works\n", + "Free license\n", + "The Free Software Definition\n", + "The Open Source Definition\n", + "Open-source license\n", + "Permissive software licence\n", + "Public domain\n", + "Viral license\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "Challenges\n", + "\n", + "\n", + "\n", + "Binary blob\n", + "Digital rights management\n", + "Hardware restrictions\n", + "License proliferation\n", + "Mozilla software rebranding\n", + "Proprietary software\n", + "SCO/Linux controversies\n", + "Secure boot\n", + "Software patents\n", + "Software security\n", + "Trusted Computing\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "Related topics\n", + "\n", + "\n", + "\n", + "The Cathedral and the Bazaar\n", + "Forking\n", + "Microsoft Open Specification Promise\n", + "Revolution OS\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " Book\n", + " Category\n", + " Commons\n", + " Portal\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "Authority control\n", + "\n", + "\n", + "\n", + "LCCN: sh96008834\n", + "GND: 4434275-5\n", + "SUDOC: 051626225\n", + "BNF: cb13560465c (data)\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n" + ] + } + ], + "source": [ + "html = urlopen(\"http://en.wikipedia.org/wiki/Python_(programming_language)\")\n", + "bs = BeautifulSoup(html, \"html.parser\")\n", + "content = bs.find(\"div\", {\"id\":\"mw-content-text\"}).get_text()\n", + "content = bytes(content, \"UTF-8\")\n", + "content = content.decode(\"UTF-8\")\n", + "print(content)" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "['Name', 'Year']\n", + "The album \"Name\" was released in Year\n", + "[\"Monty Python's Flying Circus\", '1970']\n", + "The album \"Monty Python's Flying Circus\" was released in 1970\n", + "['Another Monty Python Record', '1971']\n", + "The album \"Another Monty Python Record\" was released in 1971\n", + "[\"Monty Python's Previous Record\", '1972']\n", + "The album \"Monty Python's Previous Record\" was released in 1972\n", + "['The Monty Python Matching Tie and Handkerchief', '1973']\n", + "The album \"The Monty Python Matching Tie and Handkerchief\" was released in 1973\n", + "['Monty Python Live at Drury Lane', '1974']\n", + "The album \"Monty Python Live at Drury Lane\" was released in 1974\n", + "['An Album of the Soundtrack of the Trailer of the Film of Monty Python and the Holy Grail', '1975']\n", + "The album \"An Album of the Soundtrack of the Trailer of the Film of Monty Python and the Holy Grail\" was released in 1975\n", + "['Monty Python Live at City Center', '1977']\n", + "The album \"Monty Python Live at City Center\" was released in 1977\n", + "['The Monty Python Instant Record Collection', '1977']\n", + "The album \"The Monty Python Instant Record Collection\" was released in 1977\n", + "[\"Monty Python's Life of Brian\", '1979']\n", + "The album \"Monty Python's Life of Brian\" was released in 1979\n", + "[\"Monty Python's Cotractual Obligation Album\", '1980']\n", + "The album \"Monty Python's Cotractual Obligation Album\" was released in 1980\n", + "[\"Monty Python's The Meaning of Life\", '1983']\n", + "The album \"Monty Python's The Meaning of Life\" was released in 1983\n", + "['The Final Rip Off', '1987']\n", + "The album \"The Final Rip Off\" was released in 1987\n", + "['Monty Python Sings', '1989']\n", + "The album \"Monty Python Sings\" was released in 1989\n", + "['The Ultimate Monty Python Rip Off', '1994']\n", + "The album \"The Ultimate Monty Python Rip Off\" was released in 1994\n", + "['Monty Python Sings Again', '2014']\n", + "The album \"Monty Python Sings Again\" was released in 2014\n" + ] + } + ], + "source": [ + "from urllib.request import urlopen\n", + "from io import StringIO\n", + "import csv\n", + "\n", + "data = urlopen('http://pythonscraping.com/files/MontyPythonAlbums.csv').read().decode('ascii', 'ignore')\n", + "dataFile = StringIO(data)\n", + "csvReader = csv.reader(dataFile)\n", + "\n", + "for row in csvReader:\n", + " print(row)\n", + " print(\"The album \\\"\"+row[0]+\"\\\" was released in \"+str(row[1]))" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [], + "source": [ + "for row in csvReader:\n", + " print(\"The album \\\"\"+row[0]+\"\\\" was released in \"+str(row[1]))" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "['Name', 'Year']\n", + "OrderedDict([('Name', \"Monty Python's Flying Circus\"), ('Year', '1970')])\n", + "OrderedDict([('Name', 'Another Monty Python Record'), ('Year', '1971')])\n", + "OrderedDict([('Name', \"Monty Python's Previous Record\"), ('Year', '1972')])\n", + "OrderedDict([('Name', 'The Monty Python Matching Tie and Handkerchief'), ('Year', '1973')])\n", + "OrderedDict([('Name', 'Monty Python Live at Drury Lane'), ('Year', '1974')])\n", + "OrderedDict([('Name', 'An Album of the Soundtrack of the Trailer of the Film of Monty Python and the Holy Grail'), ('Year', '1975')])\n", + "OrderedDict([('Name', 'Monty Python Live at City Center'), ('Year', '1977')])\n", + "OrderedDict([('Name', 'The Monty Python Instant Record Collection'), ('Year', '1977')])\n", + "OrderedDict([('Name', \"Monty Python's Life of Brian\"), ('Year', '1979')])\n", + "OrderedDict([('Name', \"Monty Python's Cotractual Obligation Album\"), ('Year', '1980')])\n", + "OrderedDict([('Name', \"Monty Python's The Meaning of Life\"), ('Year', '1983')])\n", + "OrderedDict([('Name', 'The Final Rip Off'), ('Year', '1987')])\n", + "OrderedDict([('Name', 'Monty Python Sings'), ('Year', '1989')])\n", + "OrderedDict([('Name', 'The Ultimate Monty Python Rip Off'), ('Year', '1994')])\n", + "OrderedDict([('Name', 'Monty Python Sings Again'), ('Year', '2014')])\n" + ] + } + ], + "source": [ + "from urllib.request import urlopen\n", + "from io import StringIO\n", + "import csv\n", + "\n", + "data = urlopen(\"http://pythonscraping.com/files/MontyPythonAlbums.csv\").read().decode('ascii', 'ignore')\n", + "dataFile = StringIO(data)\n", + "dictReader = csv.DictReader(dataFile)\n", + "\n", + "print(dictReader.fieldnames)\n", + "\n", + "for row in dictReader:\n", + " print(row)" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "CHAPTER I\n", + "\n", + "\"Well, Prince, so Genoa and Lucca are now just family estates of \n", + "theBuonapartes. But I warn you, if you don't tell me that this \n", + "means war,if you still try to defend the infamies and horrors \n", + "perpetrated bythat Antichrist- I really believe he is Antichrist- I will \n", + "havenothing more to do with you and you are no longer my friend, \n", + "no longermy 'faithful slave,' as you call yourself! But how do you \n", + "do? I seeI have frightened you- sit down and tell me all the news.\"\n", + "\n", + "It was in July, 1805, and the speaker was the well-known \n", + "AnnaPavlovna Scherer, maid of honor and favorite of the \n", + "Empress MaryaFedorovna. With these words she greeted Prince \n", + "Vasili Kuragin, a manof high rank and importance, who was the \n", + "first to arrive at herreception. Anna Pavlovna had had a cough for \n", + "some days. She was, asshe said, suffering from la grippe; grippe \n", + "being then a new word inSt. Petersburg, used only by the elite.\n", + "\n", + "All her invitations without exception, written in French, \n", + "anddelivered by a scarlet-liveried footman that morning, ran as \n", + "follows:\n", + "\n", + "\"If you have nothing better to do, Count [or Prince], and if \n", + "theprospect of spending an evening with a poor invalid is not \n", + "tooterrible, I shall be very charmed to see you tonight between 7 \n", + "and 10-Annette Scherer.\"\n", + "\n", + "\"Heavens! what a virulent attack!\" replied the prince, not in \n", + "theleast disconcerted by this reception. He had just entered, \n", + "wearingan embroidered court uniform, knee breeches, and shoes, \n", + "and hadstars on his breast and a serene expression on his flat \n", + "face. He spokein that refined French in which our grandfathers \n", + "not only spoke butthought, and with the gentle, patronizing \n", + "intonation natural to aman of importance who had grown old in \n", + "society and at court. He wentup to Anna Pavlovna, kissed her \n", + "hand, presenting to her his bald,scented, and shining head, and \n", + "\n", + "\f", + "complacently seated himself on thesofa.\n", + "\n", + "\"First of all, dear friend, tell me how you are. Set your friend'smind \n", + "at rest,\" said he without altering his tone, beneath thepoliteness \n", + "and affected sympathy of which indifference and evenirony could \n", + "be discerned.\n", + "\n", + "\"Can one be well while suffering morally? Can one be calm in \n", + "timeslike these if one has any feeling?\" said Anna Pavlovna. \"You \n", + "arestaying the whole evening, I hope?\"\n", + "\n", + "\"And the fete at the English ambassador's? Today is Wednesday. \n", + "Imust put in an appearance there,\" said the prince. \"My daughter \n", + "iscoming for me to take me there.\"\n", + "\n", + "\"I thought today's fete had been canceled. I confess all \n", + "thesefestivities and fireworks are becoming wearisome.\"\n", + "\n", + "\"If they had known that you wished it, the entertainment \n", + "wouldhave been put off,\" said the prince, who, like a wound-up \n", + "clock, byforce of habit said things he did not even wish to be \n", + "believed.\n", + "\n", + "\"Don't tease! Well, and what has been decided about \n", + "Novosiltsev'sdispatch? You know everything.\"\n", + "\n", + "\"What can one say about it?\" replied the prince in a cold,listless \n", + "tone. \"What has been decided? They have decided \n", + "thatBuonaparte has burnt his boats, and I believe that we are \n", + "ready toburn ours.\"\n", + "\n", + "Prince Vasili always spoke languidly, like an actor repeating astale \n", + "part. Anna Pavlovna Scherer on the contrary, despite her \n", + "fortyyears, overflowed with animation and impulsiveness. To be \n", + "anenthusiast had become her social vocation and, sometimes \n", + "even when shedid not feel like it, she became enthusiastic in \n", + "\n", + "\f", + "order not todisappoint the expectations of those who knew her. \n", + "The subdued smilewhich, though it did not suit her faded features, \n", + "always playedround her lips expressed, as in a spoiled child, a \n", + "continualconsciousness of her charming defect, which she neither \n", + "wished, norcould, nor considered it necessary, to correct.\n", + "\n", + "In the midst of a conversation on political matters Anna \n", + "Pavlovnaburst out:\n", + "\n", + "\"Oh, don't speak to me of Austria. Perhaps I don't \n", + "understandthings, but Austria never has wished, and does not \n", + "wish, for war.She is betraying us! Russia alone must save \n", + "Europe. Our gracioussovereign recognizes his high vocation and \n", + "will be true to it. That isthe one thing I have faith in! Our good and \n", + "wonderful sovereign has toperform the noblest role on earth, and \n", + "he is so virtuous and noblethat God will not forsake him. He will \n", + "fulfill his vocation andcrush the hydra of revolution, which has \n", + "become more terrible thanever in the person of this murderer and \n", + "villain! We alone mustavenge the blood of the just one.... Whom, I \n", + "ask you, can we relyon?... England with her commercial spirit will \n", + "not and cannotunderstand the Emperor Alexander's loftiness of \n", + "soul. She hasrefused to evacuate Malta. She wanted to find, and \n", + "still seeks, somesecret motive in our actions. What answer did \n", + "Novosiltsev get? None.The English have not understood and \n", + "cannot understand theself-abnegation of our Emperor who wants \n", + "nothing for himself, but onlydesires the good of mankind. And \n", + "what have they promised? Nothing! Andwhat little they have \n", + "promised they will not perform! Prussia hasalways declared that \n", + "Buonaparte is invincible, and that all Europeis powerless before \n", + "him.... And I don't believe a word that Hardenburgsays, or \n", + "Haugwitz either. This famous Prussian neutrality is just atrap. I \n", + "have faith only in God and the lofty destiny of our adoredmonarch. \n", + "He will save Europe!\"\n", + "\n", + "She suddenly paused, smiling at her own impetuosity.\n", + "\n", + "\f", + "\"I think,\" said the prince with a smile, \"that if you had beensent \n", + "instead of our dear Wintzingerode you would have captured \n", + "theKing of Prussia's consent by assault. You are so eloquent. Will \n", + "yougive me a cup of tea?\"\n", + "\n", + "\"In a moment. A propos,\" she added, becoming calm again, \"I \n", + "amexpecting two very interesting men tonight, le Vicomte de \n", + "Mortemart,who is connected with the Montmorencys through the \n", + "Rohans, one ofthe best French families. He is one of the genuine \n", + "emigres, the goodones. And also the Abbe Morio. Do you know \n", + "that profound thinker? Hehas been received by the Emperor. Had \n", + "you heard?\"\n", + "\n", + "\"I shall be delighted to meet them,\" said the prince. \"But tell \n", + "me,\"he added with studied carelessness as if it had only just \n", + "occurredto him, though the question he was about to ask was the \n", + "chief motiveof his visit, \"is it true that the Dowager Empress wants \n", + "Baron Funketo be appointed first secretary at Vienna? The baron \n", + "by all accountsis a poor creature.\"\n", + "\n", + "Prince Vasili wished to obtain this post for his son, but otherswere \n", + "trying through the Dowager Empress Marya Fedorovna to secure \n", + "itfor the baron.\n", + "\n", + "Anna Pavlovna almost closed her eyes to indicate that neither \n", + "shenor anyone else had a right to criticize what the Empress \n", + "desired orwas pleased with.\n", + "\n", + "\"Baron Funke has been recommended to the Dowager Empress \n", + "by hersister,\" was all she said, in a dry and mournful tone.\n", + "\n", + "As she named the Empress, Anna Pavlovna's face suddenly \n", + "assumed anexpression of profound and sincere devotion and \n", + "respect mingled withsadness, and this occurred every time she \n", + "mentioned her illustriouspatroness. She added that Her Majesty \n", + "had deigned to show BaronFunke beaucoup d'estime, and again \n", + "\n", + "\f", + "her face clouded over with sadness.\n", + "\n", + "The prince was silent and looked indifferent. But, with thewomanly \n", + "and courtierlike quickness and tact habitual to her, AnnaPavlovna \n", + "wished both to rebuke him (for daring to speak he had done ofa \n", + "man recommended to the Empress) and at the same time to \n", + "console him,so she said:\n", + "\n", + "\"Now about your family. Do you know that since your daughter \n", + "cameout everyone has been enraptured by her? They say she is \n", + "amazinglybeautiful.\"\n", + "\n", + "The prince bowed to signify his respect and gratitude.\n", + "\n", + "\"I often think,\" she continued after a short pause, drawing \n", + "nearerto the prince and smiling amiably at him as if to show \n", + "thatpolitical and social topics were ended and the time had come \n", + "forintimate conversation- \"I often think how unfairly sometimes \n", + "thejoys of life are distributed. Why has fate given you two such \n", + "splendidchildren? I don't speak of Anatole, your youngest. I don't \n", + "likehim,\" she added in a tone admitting of no rejoinder and raising \n", + "hereyebrows. \"Two such charming children. And really you \n", + "appreciatethem less than anyone, and so you don't deserve to \n", + "have them.\"\n", + "\n", + "And she smiled her ecstatic smile.\n", + "\n", + "\"I can't help it,\" said the prince. \"Lavater would have said Ilack the \n", + "bump of paternity.\"\n", + "\n", + "\"Don't joke; I mean to have a serious talk with you. Do you know \n", + "Iam dissatisfied with your younger son? Between ourselves\" (and \n", + "herface assumed its melancholy expression), \"he was mentioned \n", + "at HerMajesty's and you were pitied....\"\n", + "\n", + "The prince answered nothing, but she looked at him \n", + "\n", + "\f", + "significantly,awaiting a reply. He frowned.\n", + "\n", + "\"What would you have me do?\" he said at last. \"You know I did \n", + "alla father could for their education, and they have both turned \n", + "outfools. Hippolyte is at least a quiet fool, but Anatole is an \n", + "activeone. That is the only difference between them.\" He said this \n", + "smilingin a way more natural and animated than usual, so that the \n", + "wrinklesround his mouth very clearly revealed something \n", + "unexpectedly coarseand unpleasant.\n", + "\n", + "\"And why are children born to such men as you? If you were not \n", + "afather there would be nothing I could reproach you with,\" said \n", + "AnnaPavlovna, looking up pensively.\n", + "\n", + "\"I am your faithful slave and to you alone I can confess that \n", + "mychildren are the bane of my life. It is the cross I have to bear. \n", + "Thatis how I explain it to myself. It can't be helped!\"\n", + "\n", + "He said no more, but expressed his resignation to cruel fate by \n", + "agesture. Anna Pavlovna meditated.\n", + "\n", + "\"Have you never thought of marrying your prodigal son \n", + "Anatole?\"she asked. \"They say old maids have a mania for \n", + "matchmaking, andthough I don't feel that weakness in myself as \n", + "yet,I know a littleperson who is very unhappy with her father. She \n", + "is a relation ofyours, Princess Mary Bolkonskaya.\"\n", + "\n", + "Prince Vasili did not reply, though, with the quickness of \n", + "memoryand perception befitting a man of the world, he indicated \n", + "by amovement of the head that he was considering this \n", + "information.\n", + "\n", + "\"Do you know,\" he said at last, evidently unable to check the \n", + "sadcurrent of his thoughts, \"that Anatole is costing me forty \n", + "thousandrubles a year? And,\" he went on after a pause, \"what will \n", + "it be infive years, if he goes on like this?\" Presently he added: \n", + "\n", + "\f", + "\"That's whatwe fathers have to put up with.... Is this princess of \n", + "yours rich?\"\n", + "\n", + "\"Her father is very rich and stingy. He lives in the country. Heis the \n", + "well-known Prince Bolkonski who had to retire from the \n", + "armyunder the late Emperor, and was nicknamed 'the King of \n", + "Prussia.' He isvery clever but eccentric, and a bore. The poor girl \n", + "is veryunhappy. She has a brother; I think you know him, he \n", + "married LiseMeinen lately. He is an aide-de-camp of Kutuzov's \n", + "and will be heretonight.\"\n", + "\n", + "\"Listen, dear Annette,\" said the prince, suddenly taking \n", + "AnnaPavlovna's hand and for some reason drawing it \n", + "downwards. \"Arrangethat affair for me and I shall always be your \n", + "most devoted slave-slafe wigh an f, as a village elder of mine \n", + "writes in his reports. Sheis rich and of good family and that's all I \n", + "want.\"\n", + "\n", + "And with the familiarity and easy grace peculiar to him, he \n", + "raisedthe maid of honor's hand to his lips, kissed it, and swung it \n", + "to andfro as he lay back in his armchair, looking in another \n", + "direction.\n", + "\n", + "\"Attendez,\" said Anna Pavlovna, reflecting, \"I'll speak to \n", + "Lise,young Bolkonski's wife, this very evening, and perhaps the \n", + "thing canbe arranged. It shall be on your family's behalf that I'll \n", + "start myapprenticeship as old maid.\"\n", + "\n", + "\f", + "\n" + ] + } + ], + "source": [ + "from urllib.request import urlopen\n", + "from pdfminer.pdfinterp import PDFResourceManager, process_pdf\n", + "from pdfminer.converter import TextConverter\n", + "from pdfminer.layout import LAParams\n", + "from io import StringIO\n", + "from io import open\n", + "\n", + "def readPDF(pdfFile):\n", + " rsrcmgr = PDFResourceManager()\n", + " retstr = StringIO()\n", + " laparams = LAParams()\n", + " device = TextConverter(rsrcmgr, retstr, laparams=laparams)\n", + "\n", + " process_pdf(rsrcmgr, device, pdfFile)\n", + " device.close()\n", + "\n", + " content = retstr.getvalue()\n", + " retstr.close()\n", + " return content\n", + "\n", + "pdfFile = urlopen(\"http://pythonscraping.com/pages/warandpeace/chapter1.pdf\")\n", + "outputString = readPDF(pdfFile)\n", + "print(outputString)\n", + "pdfFile.close()" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "A Word Document on a Website\n", + "This is a Word document, full of content that you want very much. Unfortunately, it’s difficult to access because I’m putting it on my website as a .\n", + "docx\n", + " file, rather than just publishing it as HTML\n" + ] + } + ], + "source": [ + "from zipfile import ZipFile\n", + "from urllib.request import urlopen\n", + "from io import BytesIO\n", + "from bs4 import BeautifulSoup\n", + "\n", + "wordFile = urlopen('http://pythonscraping.com/pages/AWordDocument.docx').read()\n", + "wordFile = BytesIO(wordFile)\n", + "document = ZipFile(wordFile)\n", + "xml_content = document.read('word/document.xml')\n", + "\n", + "wordObj = BeautifulSoup(xml_content.decode('utf-8'), 'xml')\n", + "textStrings = wordObj.find_all('w:t')\n", + "\n", + "for textElem in textStrings:\n", + " print(textElem.text)" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Title is: A Word Document on a Website\n", + "This is a Word document, full of content that you want very much. Unfortunately, it’s difficult to access because I’m putting it on my website as a .\n", + "docx\n", + " file, rather than just publishing it as HTML\n" + ] + } + ], + "source": [ + "textStrings = wordObj.find_all('w:t')\n", + "\n", + "for textElem in textStrings:\n", + " style = textElem.parent.parent.find('w:pStyle')\n", + " if style is not None and style['w:val'] == 'Title':\n", + " print('Title is: {}'.format(textElem.text))\n", + " else:\n", + " print(textElem.text)\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.6.1" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/v2/Chapter08-CleaningYourDirtyData.ipynb b/v2/Chapter08-CleaningYourDirtyData.ipynb new file mode 100644 index 0000000..05d9944 --- /dev/null +++ b/v2/Chapter08-CleaningYourDirtyData.ipynb @@ -0,0 +1,206 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[['\\nPython\\n\\n\\n\\n\\nParadigm\\nObject-oriented,', 'imperative,'], ['imperative,', 'functional,'], ['functional,', 'procedural,'], ['procedural,', 'reflective\\n\\n\\nDesigned\\xa0by\\nGuido'], ['reflective\\n\\n\\nDesigned\\xa0by\\nGuido', 'van'], ['van', 'Rossum\\n\\n\\nDeveloper\\nPython'], ['Rossum\\n\\n\\nDeveloper\\nPython', 'Software'], ['Software', 'Foundation\\n\\n\\nFirst\\xa0appeared\\n20\\xa0February'], ['Foundation\\n\\n\\nFirst\\xa0appeared\\n20\\xa0February', '1991;'], ['1991;', '26'], ['26', 'years'], ['years', 'ago\\xa0(1991-02-20)[1]\\n\\n\\n\\n\\n\\nStable'], ['ago\\xa0(1991-02-20)[1]\\n\\n\\n\\n\\n\\nStable', 'release\\n\\n3.6.4'], ['release\\n\\n3.6.4', '/'], ['/', '19\\xa0December'], ['19\\xa0December', '2017;'], ['2017;', '18'], ['18', 'days'], ['days', 'ago\\xa0(2017-12-19)[2]\\n2.7.14'], ['ago\\xa0(2017-12-19)[2]\\n2.7.14', '/'], ['/', '16\\xa0September'], ['16\\xa0September', '2017;'], ['2017;', '3'], ['3', 'months'], ['months', 'ago\\xa0(2017-09-16)[3]\\n\\n\\n\\n\\n\\n\\nTyping'], ['ago\\xa0(2017-09-16)[3]\\n\\n\\n\\n\\n\\n\\nTyping', 'discipline\\nDuck,'], ['discipline\\nDuck,', 'dynamic,'], ['dynamic,', 'strong\\n\\n\\nLicense\\nPython'], ['strong\\n\\n\\nLicense\\nPython', 'Software'], ['Software', 'Foundation'], ['Foundation', 'License\\n\\n\\nFilename'], ['License\\n\\n\\nFilename', 'extensions\\n.py,'], ['extensions\\n.py,', '.pyc,'], ['.pyc,', '.pyd,'], ['.pyd,', '.pyo'], ['.pyo', '(prior'], ['(prior', 'to'], ['to', '3.5),[4]'], ['3.5),[4]', '.pyw,'], ['.pyw,', '.pyz'], ['.pyz', '(since'], ['(since', '3.5)[5]\\n\\n\\nWebsite\\npython.org\\n\\n\\nMajor'], ['3.5)[5]\\n\\n\\nWebsite\\npython.org\\n\\n\\nMajor', 'implementations\\n\\n\\nCPython,'], ['implementations\\n\\n\\nCPython,', 'IronPython,'], ['IronPython,', 'Jython,'], ['Jython,', 'MicroPython,'], ['MicroPython,', 'Numba,'], ['Numba,', 'PyPy,'], ['PyPy,', 'Stackless'], ['Stackless', 'Python\\n\\n\\nDialects\\n\\n\\nCython,'], ['Python\\n\\n\\nDialects\\n\\n\\nCython,', 'RPython\\n\\n\\nInfluenced'], ['RPython\\n\\n\\nInfluenced', 'by\\n\\n\\nABC,[6]'], ['by\\n\\n\\nABC,[6]', 'ALGOL'], ['ALGOL', '68,[7]'], ['68,[7]', 'C,[8]'], ['C,[8]', 'C++,[9]'], ['C++,[9]', 'CLU,[10]'], ['CLU,[10]', 'Dylan,[11]'], ['Dylan,[11]', 'Haskell,[12]'], ['Haskell,[12]', 'Icon,[13]'], ['Icon,[13]', 'Java,[14]'], ['Java,[14]', 'Lisp,[15]'], ['Lisp,[15]', 'Modula-3,[9]'], ['Modula-3,[9]', 'Perl\\n\\n\\nInfluenced\\n\\n\\nBoo,'], ['Perl\\n\\n\\nInfluenced\\n\\n\\nBoo,', 'Cobra,'], ['Cobra,', 'Coconut,[16]'], ['Coconut,[16]', 'CoffeeScript,[17]'], ['CoffeeScript,[17]', 'D,'], ['D,', 'F#,'], ['F#,', 'Falcon,'], ['Falcon,', 'Genie,[18]'], ['Genie,[18]', 'Go,'], ['Go,', 'Groovy,'], ['Groovy,', 'JavaScript,[19][20]'], ['JavaScript,[19][20]', 'Julia,[21]'], ['Julia,[21]', 'Nim,'], ['Nim,', 'Ring[22],'], ['Ring[22],', 'Ruby,[23]'], ['Ruby,[23]', 'Swift[24]\\n\\n\\n\\n\\n'], ['Swift[24]\\n\\n\\n\\n\\n', 'Python'], ['Python', 'Programming'], ['Programming', 'at'], ['at', 'Wikibooks\\n\\n\\n\\n\\nPython'], ['Wikibooks\\n\\n\\n\\n\\nPython', 'is'], ['is', 'an'], ['an', 'interpreted'], ['interpreted', 'high-level'], ['high-level', 'programming'], ['programming', 'language'], ['language', 'for'], ['for', 'general-purpose'], ['general-purpose', 'programming.'], ['programming.', 'Created'], ['Created', 'by'], ['by', 'Guido'], ['Guido', 'van'], ['van', 'Rossum'], ['Rossum', 'and'], ['and', 'first'], ['first', 'released'], ['released', 'in'], ['in', '1991,'], ['1991,', 'Python'], ['Python', 'has'], ['has', 'a'], ['a', 'design'], ['design', 'philosophy'], ['philosophy', 'that'], ['that', 'emphasizes'], ['emphasizes', 'code'], ['code', 'readability,'], ['readability,', 'and'], ['and', 'a'], ['a', 'syntax'], ['syntax', 'that'], ['that', 'allows'], ['allows', 'programmers'], ['programmers', 'to'], ['to', 'express'], ['express', 'concepts'], ['concepts', 'in'], ['in', 'fewer'], ['fewer', 'lines'], ['lines', 'of'], ['of', 'code,[25][26]'], ['code,[25][26]', 'notably'], ['notably', 'using'], ['using', 'significant'], ['significant', 'whitespace.'], ['whitespace.', 'It'], ['It', 'provides'], ['provides', 'constructs'], ['constructs', 'that'], ['that', 'enable'], ['enable', 'clear'], ['clear', 'programming'], ['programming', 'on'], ['on', 'both'], ['both', 'small'], ['small', 'and'], ['and', 'large'], ['large', 'scales.[27]\\nPython'], ['scales.[27]\\nPython', 'features'], ['features', 'a'], ['a', 'dynamic'], ['dynamic', 'type'], ['type', 'system'], ['system', 'and'], ['and', 'automatic'], ['automatic', 'memory'], ['memory', 'management.'], ['management.', 'It'], ['It', 'supports'], ['supports', 'multiple'], ['multiple', 'programming'], ['programming', 'paradigms,'], ['paradigms,', 'including'], ['including', 'object-oriented,'], ['object-oriented,', 'imperative,'], ['imperative,', 'functional'], ['functional', 'and'], ['and', 'procedural,'], ['procedural,', 'and'], ['and', 'has'], ['has', 'a'], ['a', 'large'], ['large', 'and'], ['and', 'comprehensive'], ['comprehensive', 'standard'], ['standard', 'library.[28]\\nPython'], ['library.[28]\\nPython', 'interpreters'], ['interpreters', 'are'], ['are', 'available'], ['available', 'for'], ['for', 'many'], ['many', 'operating'], ['operating', 'systems.'], ['systems.', 'CPython,'], ['CPython,', 'the'], ['the', 'reference'], ['reference', 'implementation'], ['implementation', 'of'], ['of', 'Python,'], ['Python,', 'is'], ['is', 'open'], ['open', 'source'], ['source', 'software[29]'], ['software[29]', 'and'], ['and', 'has'], ['has', 'a'], ['a', 'community-based'], ['community-based', 'development'], ['development', 'model,'], ['model,', 'as'], ['as', 'do'], ['do', 'nearly'], ['nearly', 'all'], ['all', 'of'], ['of', 'its'], ['its', 'variant'], ['variant', 'implementations.'], ['implementations.', 'CPython'], ['CPython', 'is'], ['is', 'managed'], ['managed', 'by'], ['by', 'the'], ['the', 'non-profit'], ['non-profit', 'Python'], ['Python', 'Software'], ['Software', 'Foundation.\\n\\n\\n\\nContents\\n\\n\\n1'], ['Foundation.\\n\\n\\n\\nContents\\n\\n\\n1', 'History\\n2'], ['History\\n2', 'Features'], ['Features', 'and'], ['and', 'philosophy\\n3'], ['philosophy\\n3', 'Syntax'], ['Syntax', 'and'], ['and', 'semantics\\n\\n3.1'], ['semantics\\n\\n3.1', 'Indentation\\n3.2'], ['Indentation\\n3.2', 'Statements'], ['Statements', 'and'], ['and', 'control'], ['control', 'flow\\n3.3'], ['flow\\n3.3', 'Expressions\\n3.4'], ['Expressions\\n3.4', 'Methods\\n3.5'], ['Methods\\n3.5', 'Typing\\n3.6'], ['Typing\\n3.6', 'Mathematics\\n\\n\\n4'], ['Mathematics\\n\\n\\n4', 'Libraries\\n5'], ['Libraries\\n5', 'Development'], ['Development', 'environments\\n6'], ['environments\\n6', 'Implementations\\n\\n6.1'], ['Implementations\\n\\n6.1', 'Reference'], ['Reference', 'implementation\\n6.2'], ['implementation\\n6.2', 'Other'], ['Other', 'implementations\\n6.3'], ['implementations\\n6.3', 'Unsupported'], ['Unsupported', 'implementations\\n6.4'], ['implementations\\n6.4', 'Cross-compilers'], ['Cross-compilers', 'to'], ['to', 'other'], ['other', 'languages\\n6.5'], ['languages\\n6.5', 'Performance\\n\\n\\n7'], ['Performance\\n\\n\\n7', 'Development\\n8'], ['Development\\n8', 'Naming\\n9'], ['Naming\\n9', 'Uses\\n10'], ['Uses\\n10', 'Languages'], ['Languages', 'influenced'], ['influenced', 'by'], ['by', 'Python\\n11'], ['Python\\n11', 'See'], ['See', 'also\\n12'], ['also\\n12', 'References\\n13'], ['References\\n13', 'Further'], ['Further', 'reading\\n14'], ['reading\\n14', 'External'], ['External', 'links\\n\\n\\n\\nHistory[edit]\\n\\n\\n\\n\\nGuido'], ['links\\n\\n\\n\\nHistory[edit]\\n\\n\\n\\n\\nGuido', 'van'], ['van', 'Rossum,'], ['Rossum,', 'the'], ['the', 'creator'], ['creator', 'of'], ['of', 'Python\\n\\n\\nMain'], ['Python\\n\\n\\nMain', 'article:'], ['article:', 'History'], ['History', 'of'], ['of', 'Python\\nPython'], ['Python\\nPython', 'was'], ['was', 'conceived'], ['conceived', 'in'], ['in', 'the'], ['the', 'late'], ['late', '1980s,[30]'], ['1980s,[30]', 'and'], ['and', 'its'], ['its', 'implementation'], ['implementation', 'began'], ['began', 'in'], ['in', 'December'], ['December', '1989[31]'], ['1989[31]', 'by'], ['by', 'Guido'], ['Guido', 'van'], ['van', 'Rossum'], ['Rossum', 'at'], ['at', 'Centrum'], ['Centrum', 'Wiskunde'], ['Wiskunde', '&'], ['&', 'Informatica'], ['Informatica', '(CWI)'], ['(CWI)', 'in'], ['in', 'the'], ['the', 'Netherlands'], ['Netherlands', 'as'], ['as', 'a'], ['a', 'successor'], ['successor', 'to'], ['to', 'the'], ['the', 'ABC'], ['ABC', 'language'], ['language', '(itself'], ['(itself', 'inspired'], ['inspired', 'by'], ['by', 'SETL)[32]'], ['SETL)[32]', 'capable'], ['capable', 'of'], ['of', 'exception'], ['exception', 'handling'], ['handling', 'and'], ['and', 'interfacing'], ['interfacing', 'with'], ['with', 'the'], ['the', 'Amoeba'], ['Amoeba', 'operating'], ['operating', 'system.[6]'], ['system.[6]', 'Van'], ['Van', 'Rossum'], ['Rossum', 'remains'], ['remains', \"Python's\"], [\"Python's\", 'principal'], ['principal', 'author.'], ['author.', 'His'], ['His', 'continuing'], ['continuing', 'central'], ['central', 'role'], ['role', 'in'], ['in', \"Python's\"], [\"Python's\", 'development'], ['development', 'is'], ['is', 'reflected'], ['reflected', 'in'], ['in', 'the'], ['the', 'title'], ['title', 'given'], ['given', 'to'], ['to', 'him'], ['him', 'by'], ['by', 'the'], ['the', 'Python'], ['Python', 'community:'], ['community:', 'Benevolent'], ['Benevolent', 'Dictator'], ['Dictator', 'For'], ['For', 'Life'], ['Life', '(BDFL).\\nOn'], ['(BDFL).\\nOn', 'the'], ['the', 'origins'], ['origins', 'of'], ['of', 'Python,'], ['Python,', 'Van'], ['Van', 'Rossum'], ['Rossum', 'wrote'], ['wrote', 'in'], ['in', '1996:[33]\\n\\n\\n“\\n...In'], ['1996:[33]\\n\\n\\n“\\n...In', 'December'], ['December', '1989,'], ['1989,', 'I'], ['I', 'was'], ['was', 'looking'], ['looking', 'for'], ['for', 'a'], ['a', '\"hobby\"'], ['\"hobby\"', 'programming'], ['programming', 'project'], ['project', 'that'], ['that', 'would'], ['would', 'keep'], ['keep', 'me'], ['me', 'occupied'], ['occupied', 'during'], ['during', 'the'], ['the', 'week'], ['week', 'around'], ['around', 'Christmas.'], ['Christmas.', 'My'], ['My', 'office'], ['office', '...'], ['...', 'would'], ['would', 'be'], ['be', 'closed,'], ['closed,', 'but'], ['but', 'I'], ['I', 'had'], ['had', 'a'], ['a', 'home'], ['home', 'computer,'], ['computer,', 'and'], ['and', 'not'], ['not', 'much'], ['much', 'else'], ['else', 'on'], ['on', 'my'], ['my', 'hands.'], ['hands.', 'I'], ['I', 'decided'], ['decided', 'to'], ['to', 'write'], ['write', 'an'], ['an', 'interpreter'], ['interpreter', 'for'], ['for', 'the'], ['the', 'new'], ['new', 'scripting'], ['scripting', 'language'], ['language', 'I'], ['I', 'had'], ['had', 'been'], ['been', 'thinking'], ['thinking', 'about'], ['about', 'lately:'], ['lately:', 'a'], ['a', 'descendant'], ['descendant', 'of'], ['of', 'ABC'], ['ABC', 'that'], ['that', 'would'], ['would', 'appeal'], ['appeal', 'to'], ['to', 'Unix/C'], ['Unix/C', 'hackers.'], ['hackers.', 'I'], ['I', 'chose'], ['chose', 'Python'], ['Python', 'as'], ['as', 'a'], ['a', 'working'], ['working', 'title'], ['title', 'for'], ['for', 'the'], ['the', 'project,'], ['project,', 'being'], ['being', 'in'], ['in', 'a'], ['a', 'slightly'], ['slightly', 'irreverent'], ['irreverent', 'mood'], ['mood', '(and'], ['(and', 'a'], ['a', 'big'], ['big', 'fan'], ['fan', 'of'], ['of', 'Monty'], ['Monty', \"Python's\"], [\"Python's\", 'Flying'], ['Flying', 'Circus).\\n”\\n\\n\\nPython'], ['Circus).\\n”\\n\\n\\nPython', '2.0'], ['2.0', 'was'], ['was', 'released'], ['released', 'on'], ['on', '16'], ['16', 'October'], ['October', '2000'], ['2000', 'and'], ['and', 'had'], ['had', 'many'], ['many', 'major'], ['major', 'new'], ['new', 'features,'], ['features,', 'including'], ['including', 'a'], ['a', 'cycle-detecting'], ['cycle-detecting', 'garbage'], ['garbage', 'collector'], ['collector', 'and'], ['and', 'support'], ['support', 'for'], ['for', 'Unicode.'], ['Unicode.', 'With'], ['With', 'this'], ['this', 'release,'], ['release,', 'the'], ['the', 'development'], ['development', 'process'], ['process', 'became'], ['became', 'more'], ['more', 'transparent'], ['transparent', 'and'], ['and', 'community-backed.[34]\\nPython'], ['community-backed.[34]\\nPython', '3.0'], ['3.0', '(initially'], ['(initially', 'called'], ['called', 'Python'], ['Python', '3000'], ['3000', 'or'], ['or', 'py3k)'], ['py3k)', 'was'], ['was', 'released'], ['released', 'on'], ['on', '3'], ['3', 'December'], ['December', '2008'], ['2008', 'after'], ['after', 'a'], ['a', 'long'], ['long', 'testing'], ['testing', 'period.'], ['period.', 'It'], ['It', 'is'], ['is', 'a'], ['a', 'major'], ['major', 'revision'], ['revision', 'of'], ['of', 'the'], ['the', 'language'], ['language', 'that'], ['that', 'is'], ['is', 'not'], ['not', 'backward-compatible'], ['backward-compatible', 'with'], ['with', 'previous'], ['previous', 'versions.[35]'], ['versions.[35]', 'However,'], ['However,', 'many'], ['many', 'of'], ['of', 'its'], ['its', 'major'], ['major', 'features'], ['features', 'have'], ['have', 'been'], ['been', 'backported'], ['backported', 'to'], ['to', 'the'], ['the', 'backward-compatible'], ['backward-compatible', 'Python'], ['Python', '2.6.x[36]'], ['2.6.x[36]', 'and'], ['and', '2.7.x'], ['2.7.x', 'version'], ['version', 'series.\\nPython'], ['series.\\nPython', \"2.7's\"], [\"2.7's\", 'end-of-life'], ['end-of-life', 'date'], ['date', '(a.k.a.'], ['(a.k.a.', 'EOL,'], ['EOL,', 'sunset'], ['sunset', 'date)'], ['date)', 'was'], ['was', 'initially'], ['initially', 'set'], ['set', 'at'], ['at', '2015,'], ['2015,', 'then'], ['then', 'postponed'], ['postponed', 'to'], ['to', '2020'], ['2020', 'out'], ['out', 'of'], ['of', 'concern'], ['concern', 'that'], ['that', 'a'], ['a', 'large'], ['large', 'body'], ['body', 'of'], ['of', 'existing'], ['existing', 'code'], ['code', 'could'], ['could', 'not'], ['not', 'easily'], ['easily', 'be'], ['be', 'forward-ported'], ['forward-ported', 'to'], ['to', 'Python'], ['Python', '3.[37][38]'], ['3.[37][38]', 'In'], ['In', 'January'], ['January', '2017,'], ['2017,', 'Google'], ['Google', 'announced'], ['announced', 'work'], ['work', 'on'], ['on', 'a'], ['a', 'Python'], ['Python', '2.7'], ['2.7', 'to'], ['to', 'Go'], ['Go', 'transcompiler.'], ['transcompiler.', 'The'], ['The', 'Register'], ['Register', 'speculated'], ['speculated', 'that'], ['that', 'this'], ['this', 'was'], ['was', 'in'], ['in', 'response'], ['response', 'to'], ['to', 'Python'], ['Python', \"2.7's\"], [\"2.7's\", 'planned'], ['planned', 'end-of-life[39],'], ['end-of-life[39],', 'but'], ['but', 'Google'], ['Google', 'cited'], ['cited', 'performance'], ['performance', 'under'], ['under', 'concurrent'], ['concurrent', 'workloads'], ['workloads', 'as'], ['as', 'their'], ['their', 'only'], ['only', 'motivation.[40]\\nFeatures'], ['motivation.[40]\\nFeatures', 'and'], ['and', 'philosophy[edit]\\nPython'], ['philosophy[edit]\\nPython', 'is'], ['is', 'a'], ['a', 'multi-paradigm'], ['multi-paradigm', 'programming'], ['programming', 'language.'], ['language.', 'Object-oriented'], ['Object-oriented', 'programming'], ['programming', 'and'], ['and', 'structured'], ['structured', 'programming'], ['programming', 'are'], ['are', 'fully'], ['fully', 'supported,'], ['supported,', 'and'], ['and', 'many'], ['many', 'of'], ['of', 'its'], ['its', 'features'], ['features', 'support'], ['support', 'functional'], ['functional', 'programming'], ['programming', 'and'], ['and', 'aspect-oriented'], ['aspect-oriented', 'programming'], ['programming', '(including'], ['(including', 'by'], ['by', 'metaprogramming[41]'], ['metaprogramming[41]', 'and'], ['and', 'metaobjects'], ['metaobjects', '(magic'], ['(magic', 'methods)).[42]'], ['methods)).[42]', 'Many'], ['Many', 'other'], ['other', 'paradigms'], ['paradigms', 'are'], ['are', 'supported'], ['supported', 'via'], ['via', 'extensions,'], ['extensions,', 'including'], ['including', 'design'], ['design', 'by'], ['by', 'contract[43][44]'], ['contract[43][44]', 'and'], ['and', 'logic'], ['logic', 'programming.[45]\\nPython'], ['programming.[45]\\nPython', 'uses'], ['uses', 'dynamic'], ['dynamic', 'typing,'], ['typing,', 'and'], ['and', 'a'], ['a', 'combination'], ['combination', 'of'], ['of', 'reference'], ['reference', 'counting'], ['counting', 'and'], ['and', 'a'], ['a', 'cycle-detecting'], ['cycle-detecting', 'garbage'], ['garbage', 'collector'], ['collector', 'for'], ['for', 'memory'], ['memory', 'management.'], ['management.', 'It'], ['It', 'also'], ['also', 'features'], ['features', 'dynamic'], ['dynamic', 'name'], ['name', 'resolution'], ['resolution', '(late'], ['(late', 'binding),'], ['binding),', 'which'], ['which', 'binds'], ['binds', 'method'], ['method', 'and'], ['and', 'variable'], ['variable', 'names'], ['names', 'during'], ['during', 'program'], ['program', \"execution.\\nPython's\"], [\"execution.\\nPython's\", 'design'], ['design', 'offers'], ['offers', 'some'], ['some', 'support'], ['support', 'for'], ['for', 'functional'], ['functional', 'programming'], ['programming', 'in'], ['in', 'the'], ['the', 'Lisp'], ['Lisp', 'tradition.'], ['tradition.', 'It'], ['It', 'has'], ['has', 'filter(),'], ['filter(),', 'map(),'], ['map(),', 'and'], ['and', 'reduce()'], ['reduce()', 'functions;'], ['functions;', 'list'], ['list', 'comprehensions,'], ['comprehensions,', 'dictionaries,'], ['dictionaries,', 'and'], ['and', 'sets;'], ['sets;', 'and'], ['and', 'generator'], ['generator', 'expressions.[46]'], ['expressions.[46]', 'The'], ['The', 'standard'], ['standard', 'library'], ['library', 'has'], ['has', 'two'], ['two', 'modules'], ['modules', '(itertools'], ['(itertools', 'and'], ['and', 'functools)'], ['functools)', 'that'], ['that', 'implement'], ['implement', 'functional'], ['functional', 'tools'], ['tools', 'borrowed'], ['borrowed', 'from'], ['from', 'Haskell'], ['Haskell', 'and'], ['and', 'Standard'], ['Standard', 'ML.[47]\\nThe'], ['ML.[47]\\nThe', \"language's\"], [\"language's\", 'core'], ['core', 'philosophy'], ['philosophy', 'is'], ['is', 'summarized'], ['summarized', 'in'], ['in', 'the'], ['the', 'document'], ['document', 'The'], ['The', 'Zen'], ['Zen', 'of'], ['of', 'Python'], ['Python', '(PEP'], ['(PEP', '20),'], ['20),', 'which'], ['which', 'includes'], ['includes', 'aphorisms'], ['aphorisms', 'such'], ['such', 'as:[48]\\n\\nBeautiful'], ['as:[48]\\n\\nBeautiful', 'is'], ['is', 'better'], ['better', 'than'], ['than', 'ugly\\nExplicit'], ['ugly\\nExplicit', 'is'], ['is', 'better'], ['better', 'than'], ['than', 'implicit\\nSimple'], ['implicit\\nSimple', 'is'], ['is', 'better'], ['better', 'than'], ['than', 'complex\\nComplex'], ['complex\\nComplex', 'is'], ['is', 'better'], ['better', 'than'], ['than', 'complicated\\nReadability'], ['complicated\\nReadability', 'counts\\n\\nRather'], ['counts\\n\\nRather', 'than'], ['than', 'having'], ['having', 'all'], ['all', 'of'], ['of', 'its'], ['its', 'functionality'], ['functionality', 'built'], ['built', 'into'], ['into', 'its'], ['its', 'core,'], ['core,', 'Python'], ['Python', 'was'], ['was', 'designed'], ['designed', 'to'], ['to', 'be'], ['be', 'highly'], ['highly', 'extensible.'], ['extensible.', 'This'], ['This', 'compact'], ['compact', 'modularity'], ['modularity', 'has'], ['has', 'made'], ['made', 'it'], ['it', 'particularly'], ['particularly', 'popular'], ['popular', 'as'], ['as', 'a'], ['a', 'means'], ['means', 'of'], ['of', 'adding'], ['adding', 'programmable'], ['programmable', 'interfaces'], ['interfaces', 'to'], ['to', 'existing'], ['existing', 'applications.'], ['applications.', 'Van'], ['Van', \"Rossum's\"], [\"Rossum's\", 'vision'], ['vision', 'of'], ['of', 'a'], ['a', 'small'], ['small', 'core'], ['core', 'language'], ['language', 'with'], ['with', 'a'], ['a', 'large'], ['large', 'standard'], ['standard', 'library'], ['library', 'and'], ['and', 'easily'], ['easily', 'extensible'], ['extensible', 'interpreter'], ['interpreter', 'stemmed'], ['stemmed', 'from'], ['from', 'his'], ['his', 'frustrations'], ['frustrations', 'with'], ['with', 'ABC,'], ['ABC,', 'which'], ['which', 'espoused'], ['espoused', 'the'], ['the', 'opposite'], ['opposite', 'approach.[30]\\nWhile'], ['approach.[30]\\nWhile', 'offering'], ['offering', 'choice'], ['choice', 'in'], ['in', 'coding'], ['coding', 'methodology,'], ['methodology,', 'the'], ['the', 'Python'], ['Python', 'philosophy'], ['philosophy', 'rejects'], ['rejects', 'exuberant'], ['exuberant', 'syntax'], ['syntax', '(such'], ['(such', 'as'], ['as', 'that'], ['that', 'of'], ['of', 'Perl)'], ['Perl)', 'in'], ['in', 'favor'], ['favor', 'of'], ['of', 'a'], ['a', 'simpler,'], ['simpler,', 'less-cluttered'], ['less-cluttered', 'grammar.'], ['grammar.', 'As'], ['As', 'Alex'], ['Alex', 'Martelli'], ['Martelli', 'put'], ['put', 'it:'], ['it:', '\"To'], ['\"To', 'describe'], ['describe', 'something'], ['something', 'as'], ['as', \"'clever'\"], [\"'clever'\", 'is'], ['is', 'not'], ['not', 'considered'], ['considered', 'a'], ['a', 'compliment'], ['compliment', 'in'], ['in', 'the'], ['the', 'Python'], ['Python', 'culture.\"[49]'], ['culture.\"[49]', \"Python's\"], [\"Python's\", 'philosophy'], ['philosophy', 'rejects'], ['rejects', 'the'], ['the', 'Perl'], ['Perl', '\"there'], ['\"there', 'is'], ['is', 'more'], ['more', 'than'], ['than', 'one'], ['one', 'way'], ['way', 'to'], ['to', 'do'], ['do', 'it\"'], ['it\"', 'approach'], ['approach', 'to'], ['to', 'language'], ['language', 'design'], ['design', 'in'], ['in', 'favor'], ['favor', 'of'], ['of', '\"there'], ['\"there', 'should'], ['should', 'be'], ['be', 'one—and'], ['one—and', 'preferably'], ['preferably', 'only'], ['only', 'one—obvious'], ['one—obvious', 'way'], ['way', 'to'], ['to', 'do'], ['do', 'it\".[48]\\nPython\\'s'], ['it\".[48]\\nPython\\'s', 'developers'], ['developers', 'strive'], ['strive', 'to'], ['to', 'avoid'], ['avoid', 'premature'], ['premature', 'optimization,'], ['optimization,', 'and'], ['and', 'reject'], ['reject', 'patches'], ['patches', 'to'], ['to', 'non-critical'], ['non-critical', 'parts'], ['parts', 'of'], ['of', 'CPython'], ['CPython', 'that'], ['that', 'would'], ['would', 'offer'], ['offer', 'marginal'], ['marginal', 'increases'], ['increases', 'in'], ['in', 'speed'], ['speed', 'at'], ['at', 'the'], ['the', 'cost'], ['cost', 'of'], ['of', 'clarity.[50]'], ['clarity.[50]', 'When'], ['When', 'speed'], ['speed', 'is'], ['is', 'important,'], ['important,', 'a'], ['a', 'Python'], ['Python', 'programmer'], ['programmer', 'can'], ['can', 'move'], ['move', 'time-critical'], ['time-critical', 'functions'], ['functions', 'to'], ['to', 'extension'], ['extension', 'modules'], ['modules', 'written'], ['written', 'in'], ['in', 'languages'], ['languages', 'such'], ['such', 'as'], ['as', 'C,'], ['C,', 'or'], ['or', 'use'], ['use', 'PyPy,'], ['PyPy,', 'a'], ['a', 'just-in-time'], ['just-in-time', 'compiler.'], ['compiler.', 'Cython'], ['Cython', 'is'], ['is', 'also'], ['also', 'available,'], ['available,', 'which'], ['which', 'translates'], ['translates', 'a'], ['a', 'Python'], ['Python', 'script'], ['script', 'into'], ['into', 'C'], ['C', 'and'], ['and', 'makes'], ['makes', 'direct'], ['direct', 'C-level'], ['C-level', 'API'], ['API', 'calls'], ['calls', 'into'], ['into', 'the'], ['the', 'Python'], ['Python', 'interpreter.\\nAn'], ['interpreter.\\nAn', 'important'], ['important', 'goal'], ['goal', 'of'], ['of', \"Python's\"], [\"Python's\", 'developers'], ['developers', 'is'], ['is', 'keeping'], ['keeping', 'it'], ['it', 'fun'], ['fun', 'to'], ['to', 'use.'], ['use.', 'This'], ['This', 'is'], ['is', 'reflected'], ['reflected', 'in'], ['in', 'the'], ['the', \"language's\"], [\"language's\", 'name—a'], ['name—a', 'tribute'], ['tribute', 'to'], ['to', 'the'], ['the', 'British'], ['British', 'comedy'], ['comedy', 'group'], ['group', 'Monty'], ['Monty', 'Python[51]—and'], ['Python[51]—and', 'in'], ['in', 'occasionally'], ['occasionally', 'playful'], ['playful', 'approaches'], ['approaches', 'to'], ['to', 'tutorials'], ['tutorials', 'and'], ['and', 'reference'], ['reference', 'materials,'], ['materials,', 'such'], ['such', 'as'], ['as', 'examples'], ['examples', 'that'], ['that', 'refer'], ['refer', 'to'], ['to', 'spam'], ['spam', 'and'], ['and', 'eggs'], ['eggs', '(from'], ['(from', 'a'], ['a', 'famous'], ['famous', 'Monty'], ['Monty', 'Python'], ['Python', 'sketch)'], ['sketch)', 'instead'], ['instead', 'of'], ['of', 'the'], ['the', 'standard'], ['standard', 'foo'], ['foo', 'and'], ['and', 'bar.[52][53]\\nA'], ['bar.[52][53]\\nA', 'common'], ['common', 'neologism'], ['neologism', 'in'], ['in', 'the'], ['the', 'Python'], ['Python', 'community'], ['community', 'is'], ['is', 'pythonic,'], ['pythonic,', 'which'], ['which', 'can'], ['can', 'have'], ['have', 'a'], ['a', 'wide'], ['wide', 'range'], ['range', 'of'], ['of', 'meanings'], ['meanings', 'related'], ['related', 'to'], ['to', 'program'], ['program', 'style.'], ['style.', 'To'], ['To', 'say'], ['say', 'that'], ['that', 'code'], ['code', 'is'], ['is', 'pythonic'], ['pythonic', 'is'], ['is', 'to'], ['to', 'say'], ['say', 'that'], ['that', 'it'], ['it', 'uses'], ['uses', 'Python'], ['Python', 'idioms'], ['idioms', 'well,'], ['well,', 'that'], ['that', 'it'], ['it', 'is'], ['is', 'natural'], ['natural', 'or'], ['or', 'shows'], ['shows', 'fluency'], ['fluency', 'in'], ['in', 'the'], ['the', 'language,'], ['language,', 'that'], ['that', 'it'], ['it', 'conforms'], ['conforms', 'with'], ['with', \"Python's\"], [\"Python's\", 'minimalist'], ['minimalist', 'philosophy'], ['philosophy', 'and'], ['and', 'emphasis'], ['emphasis', 'on'], ['on', 'readability.'], ['readability.', 'In'], ['In', 'contrast,'], ['contrast,', 'code'], ['code', 'that'], ['that', 'is'], ['is', 'difficult'], ['difficult', 'to'], ['to', 'understand'], ['understand', 'or'], ['or', 'reads'], ['reads', 'like'], ['like', 'a'], ['a', 'rough'], ['rough', 'transcription'], ['transcription', 'from'], ['from', 'another'], ['another', 'programming'], ['programming', 'language'], ['language', 'is'], ['is', 'called'], ['called', 'unpythonic.\\nUsers'], ['unpythonic.\\nUsers', 'and'], ['and', 'admirers'], ['admirers', 'of'], ['of', 'Python,'], ['Python,', 'especially'], ['especially', 'those'], ['those', 'considered'], ['considered', 'knowledgeable'], ['knowledgeable', 'or'], ['or', 'experienced,'], ['experienced,', 'are'], ['are', 'often'], ['often', 'referred'], ['referred', 'to'], ['to', 'as'], ['as', 'Pythonists,'], ['Pythonists,', 'Pythonistas,'], ['Pythonistas,', 'and'], ['and', 'Pythoneers.[54][55]\\nSyntax'], ['Pythoneers.[54][55]\\nSyntax', 'and'], ['and', 'semantics[edit]\\nMain'], ['semantics[edit]\\nMain', 'article:'], ['article:', 'Python'], ['Python', 'syntax'], ['syntax', 'and'], ['and', 'semantics\\nPython'], ['semantics\\nPython', 'is'], ['is', 'meant'], ['meant', 'to'], ['to', 'be'], ['be', 'an'], ['an', 'easily'], ['easily', 'readable'], ['readable', 'language.'], ['language.', 'Its'], ['Its', 'formatting'], ['formatting', 'is'], ['is', 'visually'], ['visually', 'uncluttered,'], ['uncluttered,', 'and'], ['and', 'it'], ['it', 'often'], ['often', 'uses'], ['uses', 'English'], ['English', 'keywords'], ['keywords', 'where'], ['where', 'other'], ['other', 'languages'], ['languages', 'use'], ['use', 'punctuation.'], ['punctuation.', 'Unlike'], ['Unlike', 'many'], ['many', 'other'], ['other', 'languages,'], ['languages,', 'it'], ['it', 'does'], ['does', 'not'], ['not', 'use'], ['use', 'curly'], ['curly', 'brackets'], ['brackets', 'to'], ['to', 'delimit'], ['delimit', 'blocks,'], ['blocks,', 'and'], ['and', 'semicolons'], ['semicolons', 'after'], ['after', 'statements'], ['statements', 'are'], ['are', 'optional.'], ['optional.', 'It'], ['It', 'has'], ['has', 'fewer'], ['fewer', 'syntactic'], ['syntactic', 'exceptions'], ['exceptions', 'and'], ['and', 'special'], ['special', 'cases'], ['cases', 'than'], ['than', 'C'], ['C', 'or'], ['or', 'Pascal.[56]\\nIndentation[edit]\\nMain'], ['Pascal.[56]\\nIndentation[edit]\\nMain', 'article:'], ['article:', 'Python'], ['Python', 'syntax'], ['syntax', 'and'], ['and', 'semantics'], ['semantics', '§\\xa0Indentation\\nPython'], ['§\\xa0Indentation\\nPython', 'uses'], ['uses', 'whitespace'], ['whitespace', 'indentation,'], ['indentation,', 'rather'], ['rather', 'than'], ['than', 'curly'], ['curly', 'braces'], ['braces', 'or'], ['or', 'keywords,'], ['keywords,', 'to'], ['to', 'delimit'], ['delimit', 'blocks.'], ['blocks.', 'An'], ['An', 'increase'], ['increase', 'in'], ['in', 'indentation'], ['indentation', 'comes'], ['comes', 'after'], ['after', 'certain'], ['certain', 'statements;'], ['statements;', 'a'], ['a', 'decrease'], ['decrease', 'in'], ['in', 'indentation'], ['indentation', 'signifies'], ['signifies', 'the'], ['the', 'end'], ['end', 'of'], ['of', 'the'], ['the', 'current'], ['current', 'block.[57]'], ['block.[57]', 'This'], ['This', 'feature'], ['feature', 'is'], ['is', 'also'], ['also', 'sometimes'], ['sometimes', 'termed'], ['termed', 'the'], ['the', 'off-side'], ['off-side', 'rule.\\nStatements'], ['rule.\\nStatements', 'and'], ['and', 'control'], ['control', \"flow[edit]\\nPython's\"], [\"flow[edit]\\nPython's\", 'statements'], ['statements', 'include'], ['include', '(among'], ['(among', 'others):\\n\\nThe'], ['others):\\n\\nThe', 'assignment'], ['assignment', 'statement'], ['statement', '(token'], ['(token', \"'=',\"], [\"'=',\", 'the'], ['the', 'equals'], ['equals', 'sign).'], ['sign).', 'This'], ['This', 'operates'], ['operates', 'differently'], ['differently', 'than'], ['than', 'in'], ['in', 'traditional'], ['traditional', 'imperative'], ['imperative', 'programming'], ['programming', 'languages,'], ['languages,', 'and'], ['and', 'this'], ['this', 'fundamental'], ['fundamental', 'mechanism'], ['mechanism', '(including'], ['(including', 'the'], ['the', 'nature'], ['nature', 'of'], ['of', \"Python's\"], [\"Python's\", 'version'], ['version', 'of'], ['of', 'variables)'], ['variables)', 'illuminates'], ['illuminates', 'many'], ['many', 'other'], ['other', 'features'], ['features', 'of'], ['of', 'the'], ['the', 'language.'], ['language.', 'Assignment'], ['Assignment', 'in'], ['in', 'C,'], ['C,', 'e.g.,'], ['e.g.,', 'x'], ['x', '='], ['=', '2,'], ['2,', 'translates'], ['translates', 'to'], ['to', '\"typed'], ['\"typed', 'variable'], ['variable', 'name'], ['name', 'x'], ['x', 'receives'], ['receives', 'a'], ['a', 'copy'], ['copy', 'of'], ['of', 'numeric'], ['numeric', 'value'], ['value', '2\".'], ['2\".', 'The'], ['The', '(right-hand)'], ['(right-hand)', 'value'], ['value', 'is'], ['is', 'copied'], ['copied', 'into'], ['into', 'an'], ['an', 'allocated'], ['allocated', 'storage'], ['storage', 'location'], ['location', 'for'], ['for', 'which'], ['which', 'the'], ['the', '(left-hand)'], ['(left-hand)', 'variable'], ['variable', 'name'], ['name', 'is'], ['is', 'the'], ['the', 'symbolic'], ['symbolic', 'address.'], ['address.', 'The'], ['The', 'memory'], ['memory', 'allocated'], ['allocated', 'to'], ['to', 'the'], ['the', 'variable'], ['variable', 'is'], ['is', 'large'], ['large', 'enough'], ['enough', '(potentially'], ['(potentially', 'quite'], ['quite', 'large)'], ['large)', 'for'], ['for', 'the'], ['the', 'declared'], ['declared', 'type.'], ['type.', 'In'], ['In', 'the'], ['the', 'simplest'], ['simplest', 'case'], ['case', 'of'], ['of', 'Python'], ['Python', 'assignment,'], ['assignment,', 'using'], ['using', 'the'], ['the', 'same'], ['same', 'example,'], ['example,', 'x'], ['x', '='], ['=', '2,'], ['2,', 'translates'], ['translates', 'to'], ['to', '\"(generic)'], ['\"(generic)', 'name'], ['name', 'x'], ['x', 'receives'], ['receives', 'a'], ['a', 'reference'], ['reference', 'to'], ['to', 'a'], ['a', 'separate,'], ['separate,', 'dynamically'], ['dynamically', 'allocated'], ['allocated', 'object'], ['object', 'of'], ['of', 'numeric'], ['numeric', '(int)'], ['(int)', 'type'], ['type', 'of'], ['of', 'value'], ['value', '2.\"'], ['2.\"', 'This'], ['This', 'is'], ['is', 'termed'], ['termed', 'binding'], ['binding', 'the'], ['the', 'name'], ['name', 'to'], ['to', 'the'], ['the', 'object.'], ['object.', 'Since'], ['Since', 'the'], ['the', \"name's\"], [\"name's\", 'storage'], ['storage', 'location'], ['location', \"doesn't\"], [\"doesn't\", 'contain'], ['contain', 'the'], ['the', 'indicated'], ['indicated', 'value,'], ['value,', 'it'], ['it', 'is'], ['is', 'improper'], ['improper', 'to'], ['to', 'call'], ['call', 'it'], ['it', 'a'], ['a', 'variable.'], ['variable.', 'Names'], ['Names', 'may'], ['may', 'be'], ['be', 'subsequently'], ['subsequently', 'rebound'], ['rebound', 'at'], ['at', 'any'], ['any', 'time'], ['time', 'to'], ['to', 'objects'], ['objects', 'of'], ['of', 'greatly'], ['greatly', 'varying'], ['varying', 'types,'], ['types,', 'including'], ['including', 'strings,'], ['strings,', 'procedures,'], ['procedures,', 'complex'], ['complex', 'objects'], ['objects', 'with'], ['with', 'data'], ['data', 'and'], ['and', 'methods,'], ['methods,', 'etc.'], ['etc.', 'Successive'], ['Successive', 'assignments'], ['assignments', 'of'], ['of', 'a'], ['a', 'common'], ['common', 'value'], ['value', 'to'], ['to', 'multiple'], ['multiple', 'names,'], ['names,', 'e.g.,'], ['e.g.,', 'x'], ['x', '='], ['=', '2;'], ['2;', 'y'], ['y', '='], ['=', '2;'], ['2;', 'z'], ['z', '='], ['=', '2'], ['2', 'result'], ['result', 'in'], ['in', 'allocating'], ['allocating', 'storage'], ['storage', 'to'], ['to', '(at'], ['(at', 'most)'], ['most)', 'three'], ['three', 'names'], ['names', 'and'], ['and', 'one'], ['one', 'numeric'], ['numeric', 'object,'], ['object,', 'to'], ['to', 'which'], ['which', 'all'], ['all', 'three'], ['three', 'names'], ['names', 'are'], ['are', 'bound.'], ['bound.', 'Since'], ['Since', 'a'], ['a', 'name'], ['name', 'is'], ['is', 'a'], ['a', 'generic'], ['generic', 'reference'], ['reference', 'holder'], ['holder', 'it'], ['it', 'is'], ['is', 'unreasonable'], ['unreasonable', 'to'], ['to', 'associate'], ['associate', 'a'], ['a', 'fixed'], ['fixed', 'data'], ['data', 'type'], ['type', 'with'], ['with', 'it.'], ['it.', 'However'], ['However', 'at'], ['at', 'a'], ['a', 'given'], ['given', 'time'], ['time', 'a'], ['a', 'name'], ['name', 'will'], ['will', 'be'], ['be', 'bound'], ['bound', 'to'], ['to', 'some'], ['some', 'object,'], ['object,', 'which'], ['which', 'will'], ['will', 'have'], ['have', 'a'], ['a', 'type;'], ['type;', 'thus'], ['thus', 'there'], ['there', 'is'], ['is', 'dynamic'], ['dynamic', 'typing.\\nThe'], ['typing.\\nThe', 'if'], ['if', 'statement,'], ['statement,', 'which'], ['which', 'conditionally'], ['conditionally', 'executes'], ['executes', 'a'], ['a', 'block'], ['block', 'of'], ['of', 'code,'], ['code,', 'along'], ['along', 'with'], ['with', 'else'], ['else', 'and'], ['and', 'elif'], ['elif', '(a'], ['(a', 'contraction'], ['contraction', 'of'], ['of', 'else-if).\\nThe'], ['else-if).\\nThe', 'for'], ['for', 'statement,'], ['statement,', 'which'], ['which', 'iterates'], ['iterates', 'over'], ['over', 'an'], ['an', 'iterable'], ['iterable', 'object,'], ['object,', 'capturing'], ['capturing', 'each'], ['each', 'element'], ['element', 'to'], ['to', 'a'], ['a', 'local'], ['local', 'variable'], ['variable', 'for'], ['for', 'use'], ['use', 'by'], ['by', 'the'], ['the', 'attached'], ['attached', 'block.\\nThe'], ['block.\\nThe', 'while'], ['while', 'statement,'], ['statement,', 'which'], ['which', 'executes'], ['executes', 'a'], ['a', 'block'], ['block', 'of'], ['of', 'code'], ['code', 'as'], ['as', 'long'], ['long', 'as'], ['as', 'its'], ['its', 'condition'], ['condition', 'is'], ['is', 'true.\\nThe'], ['true.\\nThe', 'try'], ['try', 'statement,'], ['statement,', 'which'], ['which', 'allows'], ['allows', 'exceptions'], ['exceptions', 'raised'], ['raised', 'in'], ['in', 'its'], ['its', 'attached'], ['attached', 'code'], ['code', 'block'], ['block', 'to'], ['to', 'be'], ['be', 'caught'], ['caught', 'and'], ['and', 'handled'], ['handled', 'by'], ['by', 'except'], ['except', 'clauses;'], ['clauses;', 'it'], ['it', 'also'], ['also', 'ensures'], ['ensures', 'that'], ['that', 'clean-up'], ['clean-up', 'code'], ['code', 'in'], ['in', 'a'], ['a', 'finally'], ['finally', 'block'], ['block', 'will'], ['will', 'always'], ['always', 'be'], ['be', 'run'], ['run', 'regardless'], ['regardless', 'of'], ['of', 'how'], ['how', 'the'], ['the', 'block'], ['block', 'exits.\\nThe'], ['exits.\\nThe', 'class'], ['class', 'statement,'], ['statement,', 'which'], ['which', 'executes'], ['executes', 'a'], ['a', 'block'], ['block', 'of'], ['of', 'code'], ['code', 'and'], ['and', 'attaches'], ['attaches', 'its'], ['its', 'local'], ['local', 'namespace'], ['namespace', 'to'], ['to', 'a'], ['a', 'class,'], ['class,', 'for'], ['for', 'use'], ['use', 'in'], ['in', 'object-oriented'], ['object-oriented', 'programming.\\nThe'], ['programming.\\nThe', 'def'], ['def', 'statement,'], ['statement,', 'which'], ['which', 'defines'], ['defines', 'a'], ['a', 'function'], ['function', 'or'], ['or', 'method.\\nThe'], ['method.\\nThe', 'with'], ['with', 'statement'], ['statement', '(from'], ['(from', 'Python'], ['Python', '2.5),'], ['2.5),', 'which'], ['which', 'encloses'], ['encloses', 'a'], ['a', 'code'], ['code', 'block'], ['block', 'within'], ['within', 'a'], ['a', 'context'], ['context', 'manager'], ['manager', '(for'], ['(for', 'example,'], ['example,', 'acquiring'], ['acquiring', 'a'], ['a', 'lock'], ['lock', 'before'], ['before', 'the'], ['the', 'block'], ['block', 'of'], ['of', 'code'], ['code', 'is'], ['is', 'run'], ['run', 'and'], ['and', 'releasing'], ['releasing', 'the'], ['the', 'lock'], ['lock', 'afterwards,'], ['afterwards,', 'or'], ['or', 'opening'], ['opening', 'a'], ['a', 'file'], ['file', 'and'], ['and', 'then'], ['then', 'closing'], ['closing', 'it),'], ['it),', 'allowing'], ['allowing', 'Resource'], ['Resource', 'Acquisition'], ['Acquisition', 'Is'], ['Is', 'Initialization'], ['Initialization', '(RAII)-like'], ['(RAII)-like', 'behavior.\\nThe'], ['behavior.\\nThe', 'pass'], ['pass', 'statement,'], ['statement,', 'which'], ['which', 'serves'], ['serves', 'as'], ['as', 'a'], ['a', 'NOP.'], ['NOP.', 'It'], ['It', 'is'], ['is', 'syntactically'], ['syntactically', 'needed'], ['needed', 'to'], ['to', 'create'], ['create', 'an'], ['an', 'empty'], ['empty', 'code'], ['code', 'block.\\nThe'], ['block.\\nThe', 'assert'], ['assert', 'statement,'], ['statement,', 'used'], ['used', 'during'], ['during', 'debugging'], ['debugging', 'to'], ['to', 'check'], ['check', 'for'], ['for', 'conditions'], ['conditions', 'that'], ['that', 'ought'], ['ought', 'to'], ['to', 'apply.\\nThe'], ['apply.\\nThe', 'yield'], ['yield', 'statement,'], ['statement,', 'which'], ['which', 'returns'], ['returns', 'a'], ['a', 'value'], ['value', 'from'], ['from', 'a'], ['a', 'generator'], ['generator', 'function.'], ['function.', 'From'], ['From', 'Python'], ['Python', '2.5,'], ['2.5,', 'yield'], ['yield', 'is'], ['is', 'also'], ['also', 'an'], ['an', 'operator.'], ['operator.', 'This'], ['This', 'form'], ['form', 'is'], ['is', 'used'], ['used', 'to'], ['to', 'implement'], ['implement', 'coroutines.\\nThe'], ['coroutines.\\nThe', 'import'], ['import', 'statement,'], ['statement,', 'which'], ['which', 'is'], ['is', 'used'], ['used', 'to'], ['to', 'import'], ['import', 'modules'], ['modules', 'whose'], ['whose', 'functions'], ['functions', 'or'], ['or', 'variables'], ['variables', 'can'], ['can', 'be'], ['be', 'used'], ['used', 'in'], ['in', 'the'], ['the', 'current'], ['current', 'program.'], ['program.', 'There'], ['There', 'are'], ['are', 'two'], ['two', 'ways'], ['ways', 'of'], ['of', 'using'], ['using', 'import:'], ['import:', 'from'], ['from', ''], ['name>', 'import'], ['import', '*'], ['*', 'or'], ['or', 'import'], ['import', '.\\nThe'], ['name>.\\nThe', 'print'], ['print', 'statement'], ['statement', 'was'], ['was', 'changed'], ['changed', 'to'], ['to', 'the'], ['the', 'print()'], ['print()', 'function'], ['function', 'in'], ['in', 'Python'], ['Python', '3.[58]\\n\\nPython'], ['3.[58]\\n\\nPython', 'does'], ['does', 'not'], ['not', 'support'], ['support', 'tail'], ['tail', 'call'], ['call', 'optimization'], ['optimization', 'or'], ['or', 'first-class'], ['first-class', 'continuations,'], ['continuations,', 'and,'], ['and,', 'according'], ['according', 'to'], ['to', 'Guido'], ['Guido', 'van'], ['van', 'Rossum,'], ['Rossum,', 'it'], ['it', 'never'], ['never', 'will.[59][60]'], ['will.[59][60]', 'However,'], ['However,', 'better'], ['better', 'support'], ['support', 'for'], ['for', 'coroutine-like'], ['coroutine-like', 'functionality'], ['functionality', 'is'], ['is', 'provided'], ['provided', 'in'], ['in', '2.5,'], ['2.5,', 'by'], ['by', 'extending'], ['extending', \"Python's\"], [\"Python's\", 'generators.[61]'], ['generators.[61]', 'Before'], ['Before', '2.5,'], ['2.5,', 'generators'], ['generators', 'were'], ['were', 'lazy'], ['lazy', 'iterators;'], ['iterators;', 'information'], ['information', 'was'], ['was', 'passed'], ['passed', 'unidirectionally'], ['unidirectionally', 'out'], ['out', 'of'], ['of', 'the'], ['the', 'generator.'], ['generator.', 'From'], ['From', 'Python'], ['Python', '2.5,'], ['2.5,', 'it'], ['it', 'is'], ['is', 'possible'], ['possible', 'to'], ['to', 'pass'], ['pass', 'information'], ['information', 'back'], ['back', 'into'], ['into', 'a'], ['a', 'generator'], ['generator', 'function,'], ['function,', 'and'], ['and', 'from'], ['from', 'Python'], ['Python', '3.3,'], ['3.3,', 'the'], ['the', 'information'], ['information', 'can'], ['can', 'be'], ['be', 'passed'], ['passed', 'through'], ['through', 'multiple'], ['multiple', 'stack'], ['stack', 'levels.[62]\\nExpressions[edit]\\nSome'], ['levels.[62]\\nExpressions[edit]\\nSome', 'Python'], ['Python', 'expressions'], ['expressions', 'are'], ['are', 'similar'], ['similar', 'to'], ['to', 'languages'], ['languages', 'such'], ['such', 'as'], ['as', 'C'], ['C', 'and'], ['and', 'Java,'], ['Java,', 'while'], ['while', 'some'], ['some', 'are'], ['are', 'not:\\n\\nAddition,'], ['not:\\n\\nAddition,', 'subtraction,'], ['subtraction,', 'and'], ['and', 'multiplication'], ['multiplication', 'are'], ['are', 'the'], ['the', 'same,'], ['same,', 'but'], ['but', 'the'], ['the', 'behavior'], ['behavior', 'of'], ['of', 'division'], ['division', 'differs.'], ['differs.', 'There'], ['There', 'are'], ['are', 'two'], ['two', 'types'], ['types', 'of'], ['of', 'divisions'], ['divisions', 'in'], ['in', 'Python.'], ['Python.', 'They'], ['They', 'are'], ['are', 'floor'], ['floor', 'division'], ['division', 'and'], ['and', 'integer'], ['integer', 'division.[63]'], ['division.[63]', 'Python'], ['Python', 'also'], ['also', 'added'], ['added', 'the'], ['the', '**'], ['**', 'operator'], ['operator', 'for'], ['for', 'exponentiation.\\nFrom'], ['exponentiation.\\nFrom', 'Python'], ['Python', '3.5,'], ['3.5,', 'it'], ['it', 'enables'], ['enables', 'support'], ['support', 'of'], ['of', 'matrix'], ['matrix', 'multiplication'], ['multiplication', 'with'], ['with', 'the'], ['the', '@'], ['@', 'operator.[64][65]\\nIn'], ['operator.[64][65]\\nIn', 'Python,'], ['Python,', '=='], ['==', 'compares'], ['compares', 'by'], ['by', 'value,'], ['value,', 'versus'], ['versus', 'Java,'], ['Java,', 'which'], ['which', 'compares'], ['compares', 'numerics'], ['numerics', 'by'], ['by', 'value[66]'], ['value[66]', 'and'], ['and', 'objects'], ['objects', 'by'], ['by', 'reference.[67]'], ['reference.[67]', '(Value'], ['(Value', 'comparisons'], ['comparisons', 'in'], ['in', 'Java'], ['Java', 'on'], ['on', 'objects'], ['objects', 'can'], ['can', 'be'], ['be', 'performed'], ['performed', 'with'], ['with', 'the'], ['the', 'equals()'], ['equals()', 'method.)'], ['method.)', \"Python's\"], [\"Python's\", 'is'], ['is', 'operator'], ['operator', 'may'], ['may', 'be'], ['be', 'used'], ['used', 'to'], ['to', 'compare'], ['compare', 'object'], ['object', 'identities'], ['identities', '(comparison'], ['(comparison', 'by'], ['by', 'reference).'], ['reference).', 'In'], ['In', 'Python,'], ['Python,', 'comparisons'], ['comparisons', 'may'], ['may', 'be'], ['be', 'chained,'], ['chained,', 'for'], ['for', 'example'], ['example', 'a'], ['a', '<='], ['<=', 'b'], ['b', '<='], ['<=', 'c.\\nPython'], ['c.\\nPython', 'uses'], ['uses', 'the'], ['the', 'words'], ['words', 'and,'], ['and,', 'or,'], ['or,', 'not'], ['not', 'for'], ['for', 'its'], ['its', 'boolean'], ['boolean', 'operators'], ['operators', 'rather'], ['rather', 'than'], ['than', 'the'], ['the', 'symbolic'], ['symbolic', '&&,'], ['&&,', '||,'], ['||,', '!'], ['!', 'used'], ['used', 'in'], ['in', 'Java'], ['Java', 'and'], ['and', 'C.\\nPython'], ['C.\\nPython', 'has'], ['has', 'a'], ['a', 'type'], ['type', 'of'], ['of', 'expression'], ['expression', 'termed'], ['termed', 'a'], ['a', 'list'], ['list', 'comprehension.'], ['comprehension.', 'Python'], ['Python', '2.4'], ['2.4', 'extended'], ['extended', 'list'], ['list', 'comprehensions'], ['comprehensions', 'into'], ['into', 'a'], ['a', 'more'], ['more', 'general'], ['general', 'expression'], ['expression', 'termed'], ['termed', 'a'], ['a', 'generator'], ['generator', 'expression.[46]\\nAnonymous'], ['expression.[46]\\nAnonymous', 'functions'], ['functions', 'are'], ['are', 'implemented'], ['implemented', 'using'], ['using', 'lambda'], ['lambda', 'expressions;'], ['expressions;', 'however,'], ['however,', 'these'], ['these', 'are'], ['are', 'limited'], ['limited', 'in'], ['in', 'that'], ['that', 'the'], ['the', 'body'], ['body', 'can'], ['can', 'only'], ['only', 'be'], ['be', 'one'], ['one', 'expression.\\nConditional'], ['expression.\\nConditional', 'expressions'], ['expressions', 'in'], ['in', 'Python'], ['Python', 'are'], ['are', 'written'], ['written', 'as'], ['as', 'x'], ['x', 'if'], ['if', 'c'], ['c', 'else'], ['else', 'y[68]'], ['y[68]', '(different'], ['(different', 'in'], ['in', 'order'], ['order', 'of'], ['of', 'operands'], ['operands', 'from'], ['from', 'the'], ['the', 'c'], ['c', '?'], ['?', 'x'], ['x', ':'], [':', 'y'], ['y', 'operator'], ['operator', 'common'], ['common', 'to'], ['to', 'many'], ['many', 'other'], ['other', 'languages).\\nPython'], ['languages).\\nPython', 'makes'], ['makes', 'a'], ['a', 'distinction'], ['distinction', 'between'], ['between', 'lists'], ['lists', 'and'], ['and', 'tuples.'], ['tuples.', 'Lists'], ['Lists', 'are'], ['are', 'written'], ['written', 'as'], ['as', '[1,'], ['[1,', '2,'], ['2,', '3],'], ['3],', 'are'], ['are', 'mutable,'], ['mutable,', 'and'], ['and', 'cannot'], ['cannot', 'be'], ['be', 'used'], ['used', 'as'], ['as', 'the'], ['the', 'keys'], ['keys', 'of'], ['of', 'dictionaries'], ['dictionaries', '(dictionary'], ['(dictionary', 'keys'], ['keys', 'must'], ['must', 'be'], ['be', 'immutable'], ['immutable', 'in'], ['in', 'Python).'], ['Python).', 'Tuples'], ['Tuples', 'are'], ['are', 'written'], ['written', 'as'], ['as', '(1,'], ['(1,', '2,'], ['2,', '3),'], ['3),', 'are'], ['are', 'immutable'], ['immutable', 'and'], ['and', 'thus'], ['thus', 'can'], ['can', 'be'], ['be', 'used'], ['used', 'as'], ['as', 'the'], ['the', 'keys'], ['keys', 'of'], ['of', 'dictionaries,'], ['dictionaries,', 'provided'], ['provided', 'all'], ['all', 'elements'], ['elements', 'of'], ['of', 'the'], ['the', 'tuple'], ['tuple', 'are'], ['are', 'immutable.'], ['immutable.', 'The'], ['The', '+'], ['+', 'operator'], ['operator', 'can'], ['can', 'be'], ['be', 'used'], ['used', 'to'], ['to', 'concatenate'], ['concatenate', 'two'], ['two', 'tuples,'], ['tuples,', 'which'], ['which', 'does'], ['does', 'not'], ['not', 'directly'], ['directly', 'modify'], ['modify', 'their'], ['their', 'contents,'], ['contents,', 'but'], ['but', 'rather'], ['rather', 'produces'], ['produces', 'a'], ['a', 'new'], ['new', 'tuple'], ['tuple', 'containing'], ['containing', 'the'], ['the', 'elements'], ['elements', 'of'], ['of', 'both'], ['both', 'provided'], ['provided', 'tuples.'], ['tuples.', 'Thus,'], ['Thus,', 'given'], ['given', 'the'], ['the', 'variable'], ['variable', 't'], ['t', 'initially'], ['initially', 'equal'], ['equal', 'to'], ['to', '(1,'], ['(1,', '2,'], ['2,', '3),'], ['3),', 'executing'], ['executing', 't'], ['t', '='], ['=', 't'], ['t', '+'], ['+', '(4,'], ['(4,', '5)'], ['5)', 'first'], ['first', 'evaluates'], ['evaluates', 't'], ['t', '+'], ['+', '(4,'], ['(4,', '5),'], ['5),', 'which'], ['which', 'yields'], ['yields', '(1,'], ['(1,', '2,'], ['2,', '3,'], ['3,', '4,'], ['4,', '5),'], ['5),', 'which'], ['which', 'is'], ['is', 'then'], ['then', 'assigned'], ['assigned', 'back'], ['back', 'to'], ['to', 't,'], ['t,', 'thereby'], ['thereby', 'effectively'], ['effectively', '\"modifying'], ['\"modifying', 'the'], ['the', 'contents\"'], ['contents\"', 'of'], ['of', 't,'], ['t,', 'while'], ['while', 'conforming'], ['conforming', 'to'], ['to', 'the'], ['the', 'immutable'], ['immutable', 'nature'], ['nature', 'of'], ['of', 'tuple'], ['tuple', 'objects.'], ['objects.', 'Parentheses'], ['Parentheses', 'are'], ['are', 'optional'], ['optional', 'for'], ['for', 'tuples'], ['tuples', 'in'], ['in', 'unambiguous'], ['unambiguous', 'contexts.[69]\\nPython'], ['contexts.[69]\\nPython', 'features'], ['features', 'sequence'], ['sequence', 'unpacking'], ['unpacking', 'where'], ['where', 'multiple'], ['multiple', 'expressions,'], ['expressions,', 'each'], ['each', 'evaluating'], ['evaluating', 'to'], ['to', 'anything'], ['anything', 'that'], ['that', 'can'], ['can', 'be'], ['be', 'assigned'], ['assigned', 'to'], ['to', '(a'], ['(a', 'variable,'], ['variable,', 'a'], ['a', 'writable'], ['writable', 'property,'], ['property,', 'etc),'], ['etc),', 'are'], ['are', 'associated'], ['associated', 'in'], ['in', 'the'], ['the', 'identical'], ['identical', 'manner'], ['manner', 'to'], ['to', 'that'], ['that', 'forming'], ['forming', 'tuple'], ['tuple', 'literals'], ['literals', 'and,'], ['and,', 'as'], ['as', 'a'], ['a', 'whole,'], ['whole,', 'are'], ['are', 'put'], ['put', 'on'], ['on', 'the'], ['the', 'left'], ['left', 'hand'], ['hand', 'side'], ['side', 'of'], ['of', 'the'], ['the', 'equal'], ['equal', 'sign'], ['sign', 'in'], ['in', 'an'], ['an', 'assignment'], ['assignment', 'statement.'], ['statement.', 'The'], ['The', 'statement'], ['statement', 'expects'], ['expects', 'an'], ['an', 'iterable'], ['iterable', 'object'], ['object', 'on'], ['on', 'the'], ['the', 'right'], ['right', 'hand'], ['hand', 'side'], ['side', 'of'], ['of', 'the'], ['the', 'equal'], ['equal', 'sign'], ['sign', 'that'], ['that', 'produces'], ['produces', 'the'], ['the', 'same'], ['same', 'number'], ['number', 'of'], ['of', 'values'], ['values', 'as'], ['as', 'the'], ['the', 'provided'], ['provided', 'writable'], ['writable', 'expressions'], ['expressions', 'when'], ['when', 'iterated'], ['iterated', 'through,'], ['through,', 'and'], ['and', 'will'], ['will', 'iterate'], ['iterate', 'through'], ['through', 'it,'], ['it,', 'assigning'], ['assigning', 'each'], ['each', 'of'], ['of', 'the'], ['the', 'produced'], ['produced', 'values'], ['values', 'to'], ['to', 'the'], ['the', 'corresponding'], ['corresponding', 'expression'], ['expression', 'on'], ['on', 'the'], ['the', 'left.[citation'], ['left.[citation', 'needed]\\nPython'], ['needed]\\nPython', 'has'], ['has', 'a'], ['a', '\"string'], ['\"string', 'format\"'], ['format\"', 'operator'], ['operator', '%.'], ['%.', 'This'], ['This', 'functions'], ['functions', 'analogous'], ['analogous', 'to'], ['to', 'printf'], ['printf', 'format'], ['format', 'strings'], ['strings', 'in'], ['in', 'C,'], ['C,', 'e.g.'], ['e.g.', '\"spam=%s'], ['\"spam=%s', 'eggs=%d\"\\xa0%'], ['eggs=%d\"\\xa0%', '(\"blah\",'], ['(\"blah\",', '2)'], ['2)', 'evaluates'], ['evaluates', 'to'], ['to', '\"spam=blah'], ['\"spam=blah', 'eggs=2\".'], ['eggs=2\".', 'In'], ['In', 'Python'], ['Python', '3'], ['3', 'and'], ['and', '2.6+,'], ['2.6+,', 'this'], ['this', 'was'], ['was', 'supplemented'], ['supplemented', 'by'], ['by', 'the'], ['the', 'format()'], ['format()', 'method'], ['method', 'of'], ['of', 'the'], ['the', 'str'], ['str', 'class,'], ['class,', 'e.g.'], ['e.g.', '\"spam={0}'], ['\"spam={0}', 'eggs={1}\".format(\"blah\",'], ['eggs={1}\".format(\"blah\",', '2),'], ['2),', 'Python'], ['Python', '3.6'], ['3.6', 'added'], ['added', '\"f-strings\":'], ['\"f-strings\":', 'f\\'spam={\"blah\"}'], ['f\\'spam={\"blah\"}', \"eggs={2}'.[70]\\nPython\"], [\"eggs={2}'.[70]\\nPython\", 'has'], ['has', 'various'], ['various', 'kinds'], ['kinds', 'of'], ['of', 'string'], ['string', 'literals:\\n\\nStrings'], ['literals:\\n\\nStrings', 'delimited'], ['delimited', 'by'], ['by', 'single'], ['single', 'or'], ['or', 'double'], ['double', 'quote'], ['quote', 'marks.'], ['marks.', 'Unlike'], ['Unlike', 'in'], ['in', 'Unix'], ['Unix', 'shells,'], ['shells,', 'Perl'], ['Perl', 'and'], ['and', 'Perl-influenced'], ['Perl-influenced', 'languages,'], ['languages,', 'single'], ['single', 'quote'], ['quote', 'marks'], ['marks', 'and'], ['and', 'double'], ['double', 'quote'], ['quote', 'marks'], ['marks', 'function'], ['function', 'identically.'], ['identically.', 'Both'], ['Both', 'kinds'], ['kinds', 'of'], ['of', 'string'], ['string', 'use'], ['use', 'the'], ['the', 'backslash'], ['backslash', '(\\\\)'], ['(\\\\)', 'as'], ['as', 'an'], ['an', 'escape'], ['escape', 'character.'], ['character.', 'String'], ['String', 'interpolation'], ['interpolation', 'became'], ['became', 'available'], ['available', 'in'], ['in', 'Python'], ['Python', '3.6'], ['3.6', 'as'], ['as', '\"formatted'], ['\"formatted', 'string'], ['string', 'literals\".[70]\\nTriple-quoted'], ['literals\".[70]\\nTriple-quoted', 'strings,'], ['strings,', 'which'], ['which', 'begin'], ['begin', 'and'], ['and', 'end'], ['end', 'with'], ['with', 'a'], ['a', 'series'], ['series', 'of'], ['of', 'three'], ['three', 'single'], ['single', 'or'], ['or', 'double'], ['double', 'quote'], ['quote', 'marks.'], ['marks.', 'They'], ['They', 'may'], ['may', 'span'], ['span', 'multiple'], ['multiple', 'lines'], ['lines', 'and'], ['and', 'function'], ['function', 'like'], ['like', 'here'], ['here', 'documents'], ['documents', 'in'], ['in', 'shells,'], ['shells,', 'Perl'], ['Perl', 'and'], ['and', 'Ruby.\\nRaw'], ['Ruby.\\nRaw', 'string'], ['string', 'varieties,'], ['varieties,', 'denoted'], ['denoted', 'by'], ['by', 'prefixing'], ['prefixing', 'the'], ['the', 'string'], ['string', 'literal'], ['literal', 'with'], ['with', 'an'], ['an', 'r.'], ['r.', 'Escape'], ['Escape', 'sequences'], ['sequences', 'are'], ['are', 'not'], ['not', 'interpreted;'], ['interpreted;', 'hence'], ['hence', 'raw'], ['raw', 'strings'], ['strings', 'are'], ['are', 'useful'], ['useful', 'where'], ['where', 'literal'], ['literal', 'backslashes'], ['backslashes', 'are'], ['are', 'common,'], ['common,', 'such'], ['such', 'as'], ['as', 'regular'], ['regular', 'expressions'], ['expressions', 'and'], ['and', 'Windows-style'], ['Windows-style', 'paths.'], ['paths.', 'Compare'], ['Compare', '\"@-quoting\"'], ['\"@-quoting\"', 'in'], ['in', 'C#.\\n\\n\\nPython'], ['C#.\\n\\n\\nPython', 'has'], ['has', 'array'], ['array', 'index'], ['index', 'and'], ['and', 'array'], ['array', 'slicing'], ['slicing', 'expressions'], ['expressions', 'on'], ['on', 'lists,'], ['lists,', 'denoted'], ['denoted', 'as'], ['as', 'a[key],'], ['a[key],', 'a[start:stop]'], ['a[start:stop]', 'or'], ['or', 'a[start:stop:step].'], ['a[start:stop:step].', 'Indexes'], ['Indexes', 'are'], ['are', 'zero-based,'], ['zero-based,', 'and'], ['and', 'negative'], ['negative', 'indexes'], ['indexes', 'are'], ['are', 'relative'], ['relative', 'to'], ['to', 'the'], ['the', 'end.'], ['end.', 'Slices'], ['Slices', 'take'], ['take', 'elements'], ['elements', 'from'], ['from', 'the'], ['the', 'start'], ['start', 'index'], ['index', 'up'], ['up', 'to,'], ['to,', 'but'], ['but', 'not'], ['not', 'including,'], ['including,', 'the'], ['the', 'stop'], ['stop', 'index.'], ['index.', 'The'], ['The', 'third'], ['third', 'slice'], ['slice', 'parameter,'], ['parameter,', 'called'], ['called', 'step'], ['step', 'or'], ['or', 'stride,'], ['stride,', 'allows'], ['allows', 'elements'], ['elements', 'to'], ['to', 'be'], ['be', 'skipped'], ['skipped', 'and'], ['and', 'reversed.'], ['reversed.', 'Slice'], ['Slice', 'indexes'], ['indexes', 'may'], ['may', 'be'], ['be', 'omitted,'], ['omitted,', 'for'], ['for', 'example'], ['example', 'a[:]'], ['a[:]', 'returns'], ['returns', 'a'], ['a', 'copy'], ['copy', 'of'], ['of', 'the'], ['the', 'entire'], ['entire', 'list.'], ['list.', 'Each'], ['Each', 'element'], ['element', 'of'], ['of', 'a'], ['a', 'slice'], ['slice', 'is'], ['is', 'a'], ['a', 'shallow'], ['shallow', 'copy.\\n\\nIn'], ['copy.\\n\\nIn', 'Python,'], ['Python,', 'a'], ['a', 'distinction'], ['distinction', 'between'], ['between', 'expressions'], ['expressions', 'and'], ['and', 'statements'], ['statements', 'is'], ['is', 'rigidly'], ['rigidly', 'enforced,'], ['enforced,', 'in'], ['in', 'contrast'], ['contrast', 'to'], ['to', 'languages'], ['languages', 'such'], ['such', 'as'], ['as', 'Common'], ['Common', 'Lisp,'], ['Lisp,', 'Scheme,'], ['Scheme,', 'or'], ['or', 'Ruby.'], ['Ruby.', 'This'], ['This', 'leads'], ['leads', 'to'], ['to', 'duplicating'], ['duplicating', 'some'], ['some', 'functionality.'], ['functionality.', 'For'], ['For', 'example:\\n\\nList'], ['example:\\n\\nList', 'comprehensions'], ['comprehensions', 'vs.'], ['vs.', 'for-loops\\nConditional'], ['for-loops\\nConditional', 'expressions'], ['expressions', 'vs.'], ['vs.', 'if'], ['if', 'blocks\\nThe'], ['blocks\\nThe', 'eval()'], ['eval()', 'vs.'], ['vs.', 'exec()'], ['exec()', 'built-in'], ['built-in', 'functions'], ['functions', '(in'], ['(in', 'Python'], ['Python', '2,'], ['2,', 'exec'], ['exec', 'is'], ['is', 'a'], ['a', 'statement);'], ['statement);', 'the'], ['the', 'former'], ['former', 'is'], ['is', 'for'], ['for', 'expressions,'], ['expressions,', 'the'], ['the', 'latter'], ['latter', 'is'], ['is', 'for'], ['for', 'statements.\\n\\nStatements'], ['statements.\\n\\nStatements', 'cannot'], ['cannot', 'be'], ['be', 'a'], ['a', 'part'], ['part', 'of'], ['of', 'an'], ['an', 'expression,'], ['expression,', 'so'], ['so', 'list'], ['list', 'and'], ['and', 'other'], ['other', 'comprehensions'], ['comprehensions', 'or'], ['or', 'lambda'], ['lambda', 'expressions,'], ['expressions,', 'all'], ['all', 'being'], ['being', 'expressions,'], ['expressions,', 'cannot'], ['cannot', 'contain'], ['contain', 'statements.'], ['statements.', 'A'], ['A', 'particular'], ['particular', 'case'], ['case', 'of'], ['of', 'this'], ['this', 'is'], ['is', 'that'], ['that', 'an'], ['an', 'assignment'], ['assignment', 'statement'], ['statement', 'such'], ['such', 'as'], ['as', 'a'], ['a', '='], ['=', '1'], ['1', 'cannot'], ['cannot', 'form'], ['form', 'part'], ['part', 'of'], ['of', 'the'], ['the', 'conditional'], ['conditional', 'expression'], ['expression', 'of'], ['of', 'a'], ['a', 'conditional'], ['conditional', 'statement.'], ['statement.', 'This'], ['This', 'has'], ['has', 'the'], ['the', 'advantage'], ['advantage', 'of'], ['of', 'avoiding'], ['avoiding', 'a'], ['a', 'classic'], ['classic', 'C'], ['C', 'error'], ['error', 'of'], ['of', 'mistaking'], ['mistaking', 'an'], ['an', 'assignment'], ['assignment', 'operator'], ['operator', '='], ['=', 'for'], ['for', 'an'], ['an', 'equality'], ['equality', 'operator'], ['operator', '=='], ['==', 'in'], ['in', 'conditions:'], ['conditions:', 'if'], ['if', '(c'], ['(c', '='], ['=', '1)'], ['1)', '{'], ['{', '...'], ['...', '}'], ['}', 'is'], ['is', 'syntactically'], ['syntactically', 'valid'], ['valid', '(but'], ['(but', 'probably'], ['probably', 'unintended)'], ['unintended)', 'C'], ['C', 'code'], ['code', 'but'], ['but', 'if'], ['if', 'c'], ['c', '='], ['=', '1:'], ['1:', '...'], ['...', 'causes'], ['causes', 'a'], ['a', 'syntax'], ['syntax', 'error'], ['error', 'in'], ['in', 'Python.\\nMethods[edit]\\nMethods'], ['Python.\\nMethods[edit]\\nMethods', 'on'], ['on', 'objects'], ['objects', 'are'], ['are', 'functions'], ['functions', 'attached'], ['attached', 'to'], ['to', 'the'], ['the', \"object's\"], [\"object's\", 'class;'], ['class;', 'the'], ['the', 'syntax'], ['syntax', 'instance.method(argument)'], ['instance.method(argument)', 'is,'], ['is,', 'for'], ['for', 'normal'], ['normal', 'methods'], ['methods', 'and'], ['and', 'functions,'], ['functions,', 'syntactic'], ['syntactic', 'sugar'], ['sugar', 'for'], ['for', 'Class.method(instance,'], ['Class.method(instance,', 'argument).'], ['argument).', 'Python'], ['Python', 'methods'], ['methods', 'have'], ['have', 'an'], ['an', 'explicit'], ['explicit', 'self'], ['self', 'parameter'], ['parameter', 'to'], ['to', 'access'], ['access', 'instance'], ['instance', 'data,'], ['data,', 'in'], ['in', 'contrast'], ['contrast', 'to'], ['to', 'the'], ['the', 'implicit'], ['implicit', 'self'], ['self', '(or'], ['(or', 'this)'], ['this)', 'in'], ['in', 'some'], ['some', 'other'], ['other', 'object-oriented'], ['object-oriented', 'programming'], ['programming', 'languages'], ['languages', '(e.g.,'], ['(e.g.,', 'C++,'], ['C++,', 'Java,'], ['Java,', 'Objective-C,'], ['Objective-C,', 'or'], ['or', 'Ruby).[71]\\nTyping[edit]\\nPython'], ['Ruby).[71]\\nTyping[edit]\\nPython', 'uses'], ['uses', 'duck'], ['duck', 'typing'], ['typing', 'and'], ['and', 'has'], ['has', 'typed'], ['typed', 'objects'], ['objects', 'but'], ['but', 'untyped'], ['untyped', 'variable'], ['variable', 'names.'], ['names.', 'Type'], ['Type', 'constraints'], ['constraints', 'are'], ['are', 'not'], ['not', 'checked'], ['checked', 'at'], ['at', 'compile'], ['compile', 'time;'], ['time;', 'rather,'], ['rather,', 'operations'], ['operations', 'on'], ['on', 'an'], ['an', 'object'], ['object', 'may'], ['may', 'fail,'], ['fail,', 'signifying'], ['signifying', 'that'], ['that', 'the'], ['the', 'given'], ['given', 'object'], ['object', 'is'], ['is', 'not'], ['not', 'of'], ['of', 'a'], ['a', 'suitable'], ['suitable', 'type.'], ['type.', 'Despite'], ['Despite', 'being'], ['being', 'dynamically'], ['dynamically', 'typed,'], ['typed,', 'Python'], ['Python', 'is'], ['is', 'strongly'], ['strongly', 'typed,'], ['typed,', 'forbidding'], ['forbidding', 'operations'], ['operations', 'that'], ['that', 'are'], ['are', 'not'], ['not', 'well-defined'], ['well-defined', '(for'], ['(for', 'example,'], ['example,', 'adding'], ['adding', 'a'], ['a', 'number'], ['number', 'to'], ['to', 'a'], ['a', 'string)'], ['string)', 'rather'], ['rather', 'than'], ['than', 'silently'], ['silently', 'attempting'], ['attempting', 'to'], ['to', 'make'], ['make', 'sense'], ['sense', 'of'], ['of', 'them.\\nPython'], ['them.\\nPython', 'allows'], ['allows', 'programmers'], ['programmers', 'to'], ['to', 'define'], ['define', 'their'], ['their', 'own'], ['own', 'types'], ['types', 'using'], ['using', 'classes,'], ['classes,', 'which'], ['which', 'are'], ['are', 'most'], ['most', 'often'], ['often', 'used'], ['used', 'for'], ['for', 'object-oriented'], ['object-oriented', 'programming.'], ['programming.', 'New'], ['New', 'instances'], ['instances', 'of'], ['of', 'classes'], ['classes', 'are'], ['are', 'constructed'], ['constructed', 'by'], ['by', 'calling'], ['calling', 'the'], ['the', 'class'], ['class', '(for'], ['(for', 'example,'], ['example,', 'SpamClass()'], ['SpamClass()', 'or'], ['or', 'EggsClass()),'], ['EggsClass()),', 'and'], ['and', 'the'], ['the', 'classes'], ['classes', 'are'], ['are', 'instances'], ['instances', 'of'], ['of', 'the'], ['the', 'metaclass'], ['metaclass', 'type'], ['type', '(itself'], ['(itself', 'an'], ['an', 'instance'], ['instance', 'of'], ['of', 'itself),'], ['itself),', 'allowing'], ['allowing', 'metaprogramming'], ['metaprogramming', 'and'], ['and', 'reflection.\\nBefore'], ['reflection.\\nBefore', 'version'], ['version', '3.0,'], ['3.0,', 'Python'], ['Python', 'had'], ['had', 'two'], ['two', 'kinds'], ['kinds', 'of'], ['of', 'classes:'], ['classes:', 'old-style'], ['old-style', 'and'], ['and', 'new-style.[72]'], ['new-style.[72]', 'The'], ['The', 'syntax'], ['syntax', 'of'], ['of', 'both'], ['both', 'styles'], ['styles', 'is'], ['is', 'the'], ['the', 'same,'], ['same,', 'the'], ['the', 'difference'], ['difference', 'being'], ['being', 'whether'], ['whether', 'the'], ['the', 'class'], ['class', 'object'], ['object', 'is'], ['is', 'inherited'], ['inherited', 'from,'], ['from,', 'directly'], ['directly', 'or'], ['or', 'indirectly'], ['indirectly', '(all'], ['(all', 'new-style'], ['new-style', 'classes'], ['classes', 'inherit'], ['inherit', 'from'], ['from', 'object'], ['object', 'and'], ['and', 'are'], ['are', 'instances'], ['instances', 'of'], ['of', 'type).'], ['type).', 'In'], ['In', 'versions'], ['versions', 'of'], ['of', 'Python'], ['Python', '2'], ['2', 'from'], ['from', 'Python'], ['Python', '2.2'], ['2.2', 'onwards,'], ['onwards,', 'both'], ['both', 'kinds'], ['kinds', 'of'], ['of', 'classes'], ['classes', 'can'], ['can', 'be'], ['be', 'used.'], ['used.', 'Old-style'], ['Old-style', 'classes'], ['classes', 'were'], ['were', 'eliminated'], ['eliminated', 'in'], ['in', 'Python'], ['Python', '3.0.\\nThe'], ['3.0.\\nThe', 'long'], ['long', 'term'], ['term', 'plan'], ['plan', 'is'], ['is', 'to'], ['to', 'support'], ['support', 'gradual'], ['gradual', 'typing[73]'], ['typing[73]', 'and'], ['and', 'from'], ['from', 'Python'], ['Python', '3.5,'], ['3.5,', 'the'], ['the', 'syntax'], ['syntax', 'of'], ['of', 'the'], ['the', 'language'], ['language', 'allows'], ['allows', 'specifying'], ['specifying', 'static'], ['static', 'types'], ['types', 'but'], ['but', 'they'], ['they', 'are'], ['are', 'not'], ['not', 'checked'], ['checked', 'in'], ['in', 'the'], ['the', 'default'], ['default', 'implementation,'], ['implementation,', 'CPython.'], ['CPython.', 'An'], ['An', 'experimental'], ['experimental', 'optional'], ['optional', 'static'], ['static', 'type'], ['type', 'checker'], ['checker', 'named'], ['named', 'mypy'], ['mypy', 'supports'], ['supports', 'compile-time'], ['compile-time', 'type'], ['type', 'checking.[74]\\n\\nSummary'], ['checking.[74]\\n\\nSummary', 'of'], ['of', 'Python'], ['Python', \"3's\"], [\"3's\", 'built-in'], ['built-in', 'types\\n\\nType\\nmutable\\nDescription\\nSyntax'], ['types\\n\\nType\\nmutable\\nDescription\\nSyntax', 'example\\n\\n\\nbool\\nimmutable\\nBoolean'], ['example\\n\\n\\nbool\\nimmutable\\nBoolean', 'value\\nTrue\\nFalse\\n\\n\\nbytearray\\nmutable\\nSequence'], ['value\\nTrue\\nFalse\\n\\n\\nbytearray\\nmutable\\nSequence', 'of'], ['of', \"bytes\\nbytearray(b'Some\"], [\"bytes\\nbytearray(b'Some\", 'ASCII\\')\\nbytearray(b\"Some'], ['ASCII\\')\\nbytearray(b\"Some', 'ASCII\")\\nbytearray([119,'], ['ASCII\")\\nbytearray([119,', '105,'], ['105,', '107,'], ['107,', '105])\\n\\n\\nbytes\\nimmutable\\nSequence'], ['105])\\n\\n\\nbytes\\nimmutable\\nSequence', 'of'], ['of', \"bytes\\nb'Some\"], [\"bytes\\nb'Some\", 'ASCII\\'\\nb\"Some'], ['ASCII\\'\\nb\"Some', 'ASCII\"\\nbytes([119,'], ['ASCII\"\\nbytes([119,', '105,'], ['105,', '107,'], ['107,', '105])\\n\\n\\ncomplex\\nimmutable\\nComplex'], ['105])\\n\\n\\ncomplex\\nimmutable\\nComplex', 'number'], ['number', 'with'], ['with', 'real'], ['real', 'and'], ['and', 'imaginary'], ['imaginary', 'parts\\n3+2.7j\\n\\n\\ndict\\nmutable\\nAssociative'], ['parts\\n3+2.7j\\n\\n\\ndict\\nmutable\\nAssociative', 'array'], ['array', '(or'], ['(or', 'dictionary)'], ['dictionary)', 'of'], ['of', 'key'], ['key', 'and'], ['and', 'value'], ['value', 'pairs;'], ['pairs;', 'can'], ['can', 'contain'], ['contain', 'mixed'], ['mixed', 'types'], ['types', '(keys'], ['(keys', 'and'], ['and', 'values),'], ['values),', 'keys'], ['keys', 'must'], ['must', 'be'], ['be', 'a'], ['a', 'hashable'], ['hashable', \"type\\n{'key1':\"], [\"type\\n{'key1':\", '1.0,'], ['1.0,', '3:'], ['3:', 'False}\\n\\n\\nellipsis\\n\\nAn'], ['False}\\n\\n\\nellipsis\\n\\nAn', 'ellipsis'], ['ellipsis', 'placeholder'], ['placeholder', 'to'], ['to', 'be'], ['be', 'used'], ['used', 'as'], ['as', 'an'], ['an', 'index'], ['index', 'in'], ['in', 'NumPy'], ['NumPy', 'arrays\\n...\\n\\n\\nfloat\\nimmutable\\nFloating'], ['arrays\\n...\\n\\n\\nfloat\\nimmutable\\nFloating', 'point'], ['point', 'number,'], ['number,', 'system-defined'], ['system-defined', 'precision\\n3.1415927\\n\\n\\nfrozenset\\nimmutable\\nUnordered'], ['precision\\n3.1415927\\n\\n\\nfrozenset\\nimmutable\\nUnordered', 'set,'], ['set,', 'contains'], ['contains', 'no'], ['no', 'duplicates;'], ['duplicates;', 'can'], ['can', 'contain'], ['contain', 'mixed'], ['mixed', 'types,'], ['types,', 'if'], ['if', 'hashable\\nfrozenset([4.0,'], ['hashable\\nfrozenset([4.0,', \"'string',\"], [\"'string',\", 'True])\\n\\n\\nint\\nimmutable\\nInteger'], ['True])\\n\\n\\nint\\nimmutable\\nInteger', 'of'], ['of', 'unlimited'], ['unlimited', 'magnitude[75]\\n42\\n\\n\\nlist\\nmutable\\nList,'], ['magnitude[75]\\n42\\n\\n\\nlist\\nmutable\\nList,', 'can'], ['can', 'contain'], ['contain', 'mixed'], ['mixed', 'types\\n[4.0,'], ['types\\n[4.0,', \"'string',\"], [\"'string',\", 'True]\\n\\n\\nset\\nmutable\\nUnordered'], ['True]\\n\\n\\nset\\nmutable\\nUnordered', 'set,'], ['set,', 'contains'], ['contains', 'no'], ['no', 'duplicates;'], ['duplicates;', 'can'], ['can', 'contain'], ['contain', 'mixed'], ['mixed', 'types,'], ['types,', 'if'], ['if', 'hashable\\n{4.0,'], ['hashable\\n{4.0,', \"'string',\"], [\"'string',\", 'True}\\n\\n\\nstr\\nimmutable\\nA'], ['True}\\n\\n\\nstr\\nimmutable\\nA', 'character'], ['character', 'string:'], ['string:', 'sequence'], ['sequence', 'of'], ['of', 'Unicode'], ['Unicode', 'codepoints\\n\\'Wikipedia\\'\\n\"Wikipedia\"\\n\"\"\"Spanning\\nmultiple\\nlines\"\"\"\\n\\n\\ntuple\\nimmutable\\nCan'], ['codepoints\\n\\'Wikipedia\\'\\n\"Wikipedia\"\\n\"\"\"Spanning\\nmultiple\\nlines\"\"\"\\n\\n\\ntuple\\nimmutable\\nCan', 'contain'], ['contain', 'mixed'], ['mixed', 'types\\n(4.0,'], ['types\\n(4.0,', \"'string',\"], [\"'string',\", 'True)But'], ['True)But', 'we'], ['we', 'can'], ['can', 'append'], ['append', 'elements'], ['elements', 'using'], ['using', '__add__'], ['__add__', '.\\na'], ['.\\na', '='], ['=', '(4.0,'], ['(4.0,', \"'string'\"], [\"'string'\", ','], [',', \"True).__add__(('hi'\"], [\"True).__add__(('hi'\", ',))\\nnow'], [',))\\nnow', 'a'], ['a', 'gives'], ['gives', '(4.0,'], ['(4.0,', \"'string',\"], [\"'string',\", 'True'], ['True', \",'hi')\\n\\n\\n\\nMathematics[edit]\\nPython\"], [\",'hi')\\n\\n\\n\\nMathematics[edit]\\nPython\", 'has'], ['has', 'the'], ['the', 'usual'], ['usual', 'C'], ['C', 'arithmetic'], ['arithmetic', 'operators'], ['operators', '(+,'], ['(+,', '-,'], ['-,', '*,'], ['*,', '/,'], ['/,', '%).'], ['%).', 'It'], ['It', 'also'], ['also', 'has'], ['has', '**'], ['**', 'for'], ['for', 'exponentiation,'], ['exponentiation,', 'e.g.'], ['e.g.', '5**3'], ['5**3', '=='], ['==', '125'], ['125', 'and'], ['and', '9**0.5'], ['9**0.5', '=='], ['==', '3.0,'], ['3.0,', 'and'], ['and', 'a'], ['a', 'new'], ['new', 'matrix'], ['matrix', 'multiply'], ['multiply', '@'], ['@', 'operator'], ['operator', 'is'], ['is', 'included'], ['included', 'in'], ['in', 'version'], ['version', '3.5.[76]'], ['3.5.[76]', 'Additionally,'], ['Additionally,', 'it'], ['it', 'has'], ['has', 'a'], ['a', 'unary'], ['unary', 'operator'], ['operator', '(~),'], ['(~),', 'which'], ['which', 'essentially'], ['essentially', 'inverts'], ['inverts', 'all'], ['all', 'the'], ['the', 'bytes'], ['bytes', 'of'], ['of', 'its'], ['its', 'one'], ['one', 'argument.'], ['argument.', 'For'], ['For', 'integers,'], ['integers,', 'this'], ['this', 'means'], ['means', '~x=-x-1.[77]'], ['~x=-x-1.[77]', 'Other'], ['Other', 'operators'], ['operators', 'include'], ['include', 'bitwise'], ['bitwise', 'shift'], ['shift', 'operators'], ['operators', 'x'], ['x', '<<'], ['<<', 'y,'], ['y,', 'which'], ['which', 'shifts'], ['shifts', 'x'], ['x', 'to'], ['to', 'the'], ['the', 'left'], ['left', 'y'], ['y', 'places,'], ['places,', 'the'], ['the', 'same'], ['same', 'as'], ['as', 'x*(2**y)'], ['x*(2**y)', ','], [',', 'and'], ['and', 'x'], ['x', '>>'], ['>>', 'y,'], ['y,', 'which'], ['which', 'shifts'], ['shifts', 'x'], ['x', 'to'], ['to', 'the'], ['the', 'right'], ['right', 'y'], ['y', 'places,'], ['places,', 'the'], ['the', 'same'], ['same', 'as'], ['as', 'x/(2**y)'], ['x/(2**y)', '.[78]\\nThe'], ['.[78]\\nThe', 'behavior'], ['behavior', 'of'], ['of', 'division'], ['division', 'has'], ['has', 'changed'], ['changed', 'significantly'], ['significantly', 'over'], ['over', 'time:[79]\\n\\nPython'], ['time:[79]\\n\\nPython', '2.1'], ['2.1', 'and'], ['and', 'earlier'], ['earlier', 'use'], ['use', 'the'], ['the', 'C'], ['C', 'division'], ['division', 'behavior.'], ['behavior.', 'The'], ['The', '/'], ['/', 'operator'], ['operator', 'is'], ['is', 'integer'], ['integer', 'division'], ['division', 'if'], ['if', 'both'], ['both', 'operands'], ['operands', 'are'], ['are', 'integers,'], ['integers,', 'and'], ['and', 'floating-point'], ['floating-point', 'division'], ['division', 'otherwise.'], ['otherwise.', 'Integer'], ['Integer', 'division'], ['division', 'rounds'], ['rounds', 'towards'], ['towards', '0,'], ['0,', 'e.g.'], ['e.g.', '7/3'], ['7/3', '=='], ['==', '2'], ['2', 'and'], ['and', '-7/3'], ['-7/3', '=='], ['==', '-2.\\nPython'], ['-2.\\nPython', '2.2'], ['2.2', 'changes'], ['changes', 'integer'], ['integer', 'division'], ['division', 'to'], ['to', 'round'], ['round', 'towards'], ['towards', 'negative'], ['negative', 'infinity,'], ['infinity,', 'e.g.'], ['e.g.', '7/3'], ['7/3', '=='], ['==', '2'], ['2', 'and'], ['and', '-7/3'], ['-7/3', '=='], ['==', '-3.'], ['-3.', 'The'], ['The', 'floor'], ['floor', 'division'], ['division', '//'], ['//', 'operator'], ['operator', 'is'], ['is', 'introduced.'], ['introduced.', 'So'], ['So', '7//3'], ['7//3', '=='], ['==', '2,'], ['2,', '-7//3'], ['-7//3', '=='], ['==', '-3,'], ['-3,', '7.5//3'], ['7.5//3', '=='], ['==', '2.0'], ['2.0', 'and'], ['and', '-7.5//3'], ['-7.5//3', '=='], ['==', '-3.0.'], ['-3.0.', 'Adding'], ['Adding', 'from'], ['from', '__future__'], ['__future__', 'import'], ['import', 'division'], ['division', 'causes'], ['causes', 'a'], ['a', 'module'], ['module', 'to'], ['to', 'use'], ['use', 'Python'], ['Python', '3.0'], ['3.0', 'rules'], ['rules', 'for'], ['for', 'division'], ['division', '(see'], ['(see', 'next).\\nPython'], ['next).\\nPython', '3.0'], ['3.0', 'changes'], ['changes', '/'], ['/', 'to'], ['to', 'be'], ['be', 'always'], ['always', 'floating-point'], ['floating-point', 'division.'], ['division.', 'In'], ['In', 'Python'], ['Python', 'terms,'], ['terms,', 'the'], ['the', 'pre-3.0'], ['pre-3.0', '/'], ['/', 'is'], ['is', 'classic'], ['classic', 'division,'], ['division,', 'the'], ['the', 'version-3.0'], ['version-3.0', '/'], ['/', 'is'], ['is', 'real'], ['real', 'division,'], ['division,', 'and'], ['and', '//'], ['//', 'is'], ['is', 'floor'], ['floor', 'division.\\n\\nRounding'], ['division.\\n\\nRounding', 'towards'], ['towards', 'negative'], ['negative', 'infinity,'], ['infinity,', 'though'], ['though', 'different'], ['different', 'from'], ['from', 'most'], ['most', 'languages,'], ['languages,', 'adds'], ['adds', 'consistency.'], ['consistency.', 'For'], ['For', 'instance,'], ['instance,', 'it'], ['it', 'means'], ['means', 'that'], ['that', 'the'], ['the', 'equation'], ['equation', '(a'], ['(a', '+'], ['+', 'b)//b'], ['b)//b', '=='], ['==', 'a//b'], ['a//b', '+'], ['+', '1'], ['1', 'is'], ['is', 'always'], ['always', 'true.'], ['true.', 'It'], ['It', 'also'], ['also', 'means'], ['means', 'that'], ['that', 'the'], ['the', 'equation'], ['equation', 'b*(a//b)'], ['b*(a//b)', '+'], ['+', 'a%b'], ['a%b', '=='], ['==', 'a'], ['a', 'is'], ['is', 'valid'], ['valid', 'for'], ['for', 'both'], ['both', 'positive'], ['positive', 'and'], ['and', 'negative'], ['negative', 'values'], ['values', 'of'], ['of', 'a.'], ['a.', 'However,'], ['However,', 'maintaining'], ['maintaining', 'the'], ['the', 'validity'], ['validity', 'of'], ['of', 'this'], ['this', 'equation'], ['equation', 'means'], ['means', 'that'], ['that', 'while'], ['while', 'the'], ['the', 'result'], ['result', 'of'], ['of', 'a%b'], ['a%b', 'is,'], ['is,', 'as'], ['as', 'expected,'], ['expected,', 'in'], ['in', 'the'], ['the', 'half-open'], ['half-open', 'interval'], ['interval', '[0,'], ['[0,', 'b),'], ['b),', 'where'], ['where', 'b'], ['b', 'is'], ['is', 'a'], ['a', 'positive'], ['positive', 'integer,'], ['integer,', 'it'], ['it', 'has'], ['has', 'to'], ['to', 'lie'], ['lie', 'in'], ['in', 'the'], ['the', 'interval'], ['interval', '(b,'], ['(b,', '0]'], ['0]', 'when'], ['when', 'b'], ['b', 'is'], ['is', 'negative.[80]\\nPython'], ['negative.[80]\\nPython', 'provides'], ['provides', 'a'], ['a', 'round'], ['round', 'function'], ['function', 'for'], ['for', 'rounding'], ['rounding', 'a'], ['a', 'float'], ['float', 'to'], ['to', 'the'], ['the', 'nearest'], ['nearest', 'integer.'], ['integer.', 'For'], ['For', 'tie-breaking,'], ['tie-breaking,', 'versions'], ['versions', 'before'], ['before', '3'], ['3', 'use'], ['use', 'round-away-from-zero:'], ['round-away-from-zero:', 'round(0.5)'], ['round(0.5)', 'is'], ['is', '1.0,'], ['1.0,', 'round(-0.5)'], ['round(-0.5)', 'is'], ['is', '−1.0.[81]'], ['−1.0.[81]', 'Python'], ['Python', '3'], ['3', 'uses'], ['uses', 'round'], ['round', 'to'], ['to', 'even:'], ['even:', 'round(1.5)'], ['round(1.5)', 'is'], ['is', '2,'], ['2,', 'round(2.5)'], ['round(2.5)', 'is'], ['is', '2.[82]\\nPython'], ['2.[82]\\nPython', 'allows'], ['allows', 'boolean'], ['boolean', 'expressions'], ['expressions', 'with'], ['with', 'multiple'], ['multiple', 'equality'], ['equality', 'relations'], ['relations', 'in'], ['in', 'a'], ['a', 'manner'], ['manner', 'that'], ['that', 'is'], ['is', 'consistent'], ['consistent', 'with'], ['with', 'general'], ['general', 'use'], ['use', 'in'], ['in', 'mathematics.'], ['mathematics.', 'For'], ['For', 'example,'], ['example,', 'the'], ['the', 'expression'], ['expression', 'a'], ['a', '<'], ['<', 'b'], ['b', '<'], ['<', 'c'], ['c', 'tests'], ['tests', 'whether'], ['whether', 'a'], ['a', 'is'], ['is', 'less'], ['less', 'than'], ['than', 'b'], ['b', 'and'], ['and', 'b'], ['b', 'is'], ['is', 'less'], ['less', 'than'], ['than', 'c.'], ['c.', 'C-derived'], ['C-derived', 'languages'], ['languages', 'interpret'], ['interpret', 'this'], ['this', 'expression'], ['expression', 'differently:'], ['differently:', 'in'], ['in', 'C,'], ['C,', 'the'], ['the', 'expression'], ['expression', 'would'], ['would', 'first'], ['first', 'evaluate'], ['evaluate', 'a'], ['a', '<'], ['<', 'b,'], ['b,', 'resulting'], ['resulting', 'in'], ['in', '0'], ['0', 'or'], ['or', '1,'], ['1,', 'and'], ['and', 'that'], ['that', 'result'], ['result', 'would'], ['would', 'then'], ['then', 'be'], ['be', 'compared'], ['compared', 'with'], ['with', 'c.[83][page\\xa0needed]\\nPython'], ['c.[83][page\\xa0needed]\\nPython', 'has'], ['has', 'extensive'], ['extensive', 'built-in'], ['built-in', 'support'], ['support', 'for'], ['for', 'arbitrary'], ['arbitrary', 'precision'], ['precision', 'arithmetic.'], ['arithmetic.', 'Integers'], ['Integers', 'are'], ['are', 'transparently'], ['transparently', 'switched'], ['switched', 'from'], ['from', 'the'], ['the', 'machine-supported'], ['machine-supported', 'maximum'], ['maximum', 'fixed-precision'], ['fixed-precision', '(usually'], ['(usually', '32'], ['32', 'or'], ['or', '64'], ['64', 'bits),'], ['bits),', 'belonging'], ['belonging', 'to'], ['to', 'the'], ['the', 'python'], ['python', 'type'], ['type', 'int,'], ['int,', 'to'], ['to', 'arbitrary'], ['arbitrary', 'precision,'], ['precision,', 'belonging'], ['belonging', 'to'], ['to', 'the'], ['the', 'python'], ['python', 'type'], ['type', 'long,'], ['long,', 'where'], ['where', 'needed.'], ['needed.', 'The'], ['The', 'latter'], ['latter', 'have'], ['have', 'an'], ['an', '\"L\"'], ['\"L\"', 'suffix'], ['suffix', 'in'], ['in', 'their'], ['their', 'textual'], ['textual', 'representation.[84]'], ['representation.[84]', '(In'], ['(In', 'Python'], ['Python', '3,'], ['3,', 'the'], ['the', 'distinction'], ['distinction', 'between'], ['between', 'the'], ['the', 'int'], ['int', 'and'], ['and', 'long'], ['long', 'types'], ['types', 'was'], ['was', 'eliminated;'], ['eliminated;', 'this'], ['this', 'behavior'], ['behavior', 'is'], ['is', 'now'], ['now', 'entirely'], ['entirely', 'contained'], ['contained', 'by'], ['by', 'the'], ['the', 'int'], ['int', 'class.)'], ['class.)', 'The'], ['The', 'Decimal'], ['Decimal', 'type/class'], ['type/class', 'in'], ['in', 'module'], ['module', 'decimal'], ['decimal', '(since'], ['(since', 'version'], ['version', '2.4)'], ['2.4)', 'provides'], ['provides', 'decimal'], ['decimal', 'floating'], ['floating', 'point'], ['point', 'numbers'], ['numbers', 'to'], ['to', 'arbitrary'], ['arbitrary', 'precision'], ['precision', 'and'], ['and', 'several'], ['several', 'rounding'], ['rounding', 'modes.[85]'], ['modes.[85]', 'The'], ['The', 'Fraction'], ['Fraction', 'type'], ['type', 'in'], ['in', 'module'], ['module', 'fractions'], ['fractions', '(since'], ['(since', 'version'], ['version', '2.6)'], ['2.6)', 'provides'], ['provides', 'arbitrary'], ['arbitrary', 'precision'], ['precision', 'for'], ['for', 'rational'], ['rational', 'numbers.[86]\\nDue'], ['numbers.[86]\\nDue', 'to'], ['to', \"Python's\"], [\"Python's\", 'extensive'], ['extensive', 'mathematics'], ['mathematics', 'library,'], ['library,', 'and'], ['and', 'the'], ['the', 'third-party'], ['third-party', 'library'], ['library', 'NumPy'], ['NumPy', 'that'], ['that', 'further'], ['further', 'extends'], ['extends', 'the'], ['the', 'native'], ['native', 'capabilities,'], ['capabilities,', 'it'], ['it', 'is'], ['is', 'frequently'], ['frequently', 'used'], ['used', 'as'], ['as', 'a'], ['a', 'scientific'], ['scientific', 'scripting'], ['scripting', 'language'], ['language', 'to'], ['to', 'aid'], ['aid', 'in'], ['in', 'problems'], ['problems', 'such'], ['such', 'as'], ['as', 'numerical'], ['numerical', 'data'], ['data', 'processing'], ['processing', 'and'], ['and', \"manipulation.\\nLibraries[edit]\\nPython's\"], [\"manipulation.\\nLibraries[edit]\\nPython's\", 'large'], ['large', 'standard'], ['standard', 'library,'], ['library,', 'commonly'], ['commonly', 'cited'], ['cited', 'as'], ['as', 'one'], ['one', 'of'], ['of', 'its'], ['its', 'greatest'], ['greatest', 'strengths,[87]'], ['strengths,[87]', 'provides'], ['provides', 'tools'], ['tools', 'suited'], ['suited', 'to'], ['to', 'many'], ['many', 'tasks.'], ['tasks.', 'For'], ['For', 'Internet-facing'], ['Internet-facing', 'applications,'], ['applications,', 'many'], ['many', 'standard'], ['standard', 'formats'], ['formats', 'and'], ['and', 'protocols'], ['protocols', 'such'], ['such', 'as'], ['as', 'MIME'], ['MIME', 'and'], ['and', 'HTTP'], ['HTTP', 'are'], ['are', 'supported.'], ['supported.', 'It'], ['It', 'includes'], ['includes', 'modules'], ['modules', 'for'], ['for', 'creating'], ['creating', 'graphical'], ['graphical', 'user'], ['user', 'interfaces,'], ['interfaces,', 'connecting'], ['connecting', 'to'], ['to', 'relational'], ['relational', 'databases,'], ['databases,', 'generating'], ['generating', 'pseudorandom'], ['pseudorandom', 'numbers,'], ['numbers,', 'arithmetic'], ['arithmetic', 'with'], ['with', 'arbitrary'], ['arbitrary', 'precision'], ['precision', 'decimals,[88]'], ['decimals,[88]', 'manipulating'], ['manipulating', 'regular'], ['regular', 'expressions,'], ['expressions,', 'and'], ['and', 'unit'], ['unit', 'testing.\\nSome'], ['testing.\\nSome', 'parts'], ['parts', 'of'], ['of', 'the'], ['the', 'standard'], ['standard', 'library'], ['library', 'are'], ['are', 'covered'], ['covered', 'by'], ['by', 'specifications'], ['specifications', '(for'], ['(for', 'example,'], ['example,', 'the'], ['the', 'Web'], ['Web', 'Server'], ['Server', 'Gateway'], ['Gateway', 'Interface'], ['Interface', '(WSGI)'], ['(WSGI)', 'implementation'], ['implementation', 'wsgiref'], ['wsgiref', 'follows'], ['follows', 'PEP'], ['PEP', '333[89]),'], ['333[89]),', 'but'], ['but', 'most'], ['most', 'modules'], ['modules', 'are'], ['are', 'not.'], ['not.', 'They'], ['They', 'are'], ['are', 'specified'], ['specified', 'by'], ['by', 'their'], ['their', 'code,'], ['code,', 'internal'], ['internal', 'documentation,'], ['documentation,', 'and'], ['and', 'test'], ['test', 'suites'], ['suites', '(if'], ['(if', 'supplied).'], ['supplied).', 'However,'], ['However,', 'because'], ['because', 'most'], ['most', 'of'], ['of', 'the'], ['the', 'standard'], ['standard', 'library'], ['library', 'is'], ['is', 'cross-platform'], ['cross-platform', 'Python'], ['Python', 'code,'], ['code,', 'only'], ['only', 'a'], ['a', 'few'], ['few', 'modules'], ['modules', 'need'], ['need', 'altering'], ['altering', 'or'], ['or', 'rewriting'], ['rewriting', 'for'], ['for', 'variant'], ['variant', 'implementations.\\nAs'], ['implementations.\\nAs', 'of'], ['of', 'September'], ['September', '2017,[update]'], ['2017,[update]', 'the'], ['the', 'Python'], ['Python', 'Package'], ['Package', 'Index,'], ['Index,', 'the'], ['the', 'official'], ['official', 'repository'], ['repository', 'for'], ['for', 'third-party'], ['third-party', 'Python'], ['Python', 'software,'], ['software,', 'contains'], ['contains', 'over'], ['over', '117,000[90]'], ['117,000[90]', 'packages'], ['packages', 'with'], ['with', 'a'], ['a', 'wide'], ['wide', 'range'], ['range', 'of'], ['of', 'functionality,'], ['functionality,', 'including:\\n\\nGraphical'], ['including:\\n\\nGraphical', 'user'], ['user', 'interfaces\\nWeb'], ['interfaces\\nWeb', 'frameworks\\nMultimedia\\nDatabases\\nNetworking\\nTest'], ['frameworks\\nMultimedia\\nDatabases\\nNetworking\\nTest', 'frameworks\\nAutomation\\nWeb'], ['frameworks\\nAutomation\\nWeb', 'scraping\\nDocumentation\\nSystem'], ['scraping\\nDocumentation\\nSystem', 'administration\\nScientific'], ['administration\\nScientific', 'computing\\nText'], ['computing\\nText', 'processing\\nImage'], ['processing\\nImage', 'processing\\n\\nDevelopment'], ['processing\\n\\nDevelopment', 'environments[edit]\\nSee'], ['environments[edit]\\nSee', 'also:'], ['also:', 'Comparison'], ['Comparison', 'of'], ['of', 'integrated'], ['integrated', 'development'], ['development', 'environments'], ['environments', '§\\xa0Python\\nMost'], ['§\\xa0Python\\nMost', 'Python'], ['Python', 'implementations'], ['implementations', '(including'], ['(including', 'CPython)'], ['CPython)', 'include'], ['include', 'a'], ['a', 'read–eval–print'], ['read–eval–print', 'loop'], ['loop', '(REPL),'], ['(REPL),', 'permitting'], ['permitting', 'them'], ['them', 'to'], ['to', 'function'], ['function', 'as'], ['as', 'a'], ['a', 'command'], ['command', 'line'], ['line', 'interpreter'], ['interpreter', 'for'], ['for', 'which'], ['which', 'the'], ['the', 'user'], ['user', 'enters'], ['enters', 'statements'], ['statements', 'sequentially'], ['sequentially', 'and'], ['and', 'receives'], ['receives', 'results'], ['results', 'immediately.\\nOther'], ['immediately.\\nOther', 'shells,'], ['shells,', 'including'], ['including', 'IDLE'], ['IDLE', 'and'], ['and', 'IPython,'], ['IPython,', 'add'], ['add', 'further'], ['further', 'abilities'], ['abilities', 'such'], ['such', 'as'], ['as', 'auto-completion,'], ['auto-completion,', 'session'], ['session', 'state'], ['state', 'retention'], ['retention', 'and'], ['and', 'syntax'], ['syntax', 'highlighting.\\nAs'], ['highlighting.\\nAs', 'well'], ['well', 'as'], ['as', 'standard'], ['standard', 'desktop'], ['desktop', 'integrated'], ['integrated', 'development'], ['development', 'environments'], ['environments', '(see'], ['(see', \"Wikipedia's\"], [\"Wikipedia's\", '\"Python'], ['\"Python', 'IDE\"'], ['IDE\"', 'article),'], ['article),', 'there'], ['there', 'are'], ['are', 'Web'], ['Web', 'browser-based'], ['browser-based', 'IDEs;'], ['IDEs;', 'SageMath'], ['SageMath', '(intended'], ['(intended', 'for'], ['for', 'developing'], ['developing', 'science'], ['science', 'and'], ['and', 'math-related'], ['math-related', 'Python'], ['Python', 'programs);'], ['programs);', 'PythonAnywhere,'], ['PythonAnywhere,', 'a'], ['a', 'browser-based'], ['browser-based', 'IDE'], ['IDE', 'and'], ['and', 'hosting'], ['hosting', 'environment;'], ['environment;', 'and'], ['and', 'Canopy'], ['Canopy', 'IDE,'], ['IDE,', 'a'], ['a', 'commercial'], ['commercial', 'Python'], ['Python', 'IDE'], ['IDE', 'emphasizing'], ['emphasizing', 'scientific'], ['scientific', 'computing.[91]\\nImplementations[edit]\\nSee'], ['computing.[91]\\nImplementations[edit]\\nSee', 'also:'], ['also:', 'List'], ['List', 'of'], ['of', 'Python'], ['Python', 'software'], ['software', '§\\xa0Python'], ['§\\xa0Python', 'implementations\\nReference'], ['implementations\\nReference', 'implementation[edit]\\nCPython'], ['implementation[edit]\\nCPython', 'is'], ['is', 'the'], ['the', 'reference'], ['reference', 'implementation'], ['implementation', 'of'], ['of', 'Python.'], ['Python.', 'It'], ['It', 'is'], ['is', 'written'], ['written', 'in'], ['in', 'C,'], ['C,', 'meeting'], ['meeting', 'the'], ['the', 'C89'], ['C89', 'standard'], ['standard', 'with'], ['with', 'several'], ['several', 'select'], ['select', 'C99'], ['C99', 'features.[92]'], ['features.[92]', 'It'], ['It', 'compiles'], ['compiles', 'Python'], ['Python', 'programs'], ['programs', 'into'], ['into', 'an'], ['an', 'intermediate'], ['intermediate', 'bytecode[93]'], ['bytecode[93]', 'which'], ['which', 'is'], ['is', 'then'], ['then', 'executed'], ['executed', 'by'], ['by', 'its'], ['its', 'virtual'], ['virtual', 'machine.[94]'], ['machine.[94]', 'CPython'], ['CPython', 'is'], ['is', 'distributed'], ['distributed', 'with'], ['with', 'a'], ['a', 'large'], ['large', 'standard'], ['standard', 'library'], ['library', 'written'], ['written', 'in'], ['in', 'a'], ['a', 'mixture'], ['mixture', 'of'], ['of', 'C'], ['C', 'and'], ['and', 'native'], ['native', 'Python.'], ['Python.', 'It'], ['It', 'is'], ['is', 'available'], ['available', 'for'], ['for', 'many'], ['many', 'platforms,'], ['platforms,', 'including'], ['including', 'Windows'], ['Windows', 'and'], ['and', 'most'], ['most', 'modern'], ['modern', 'Unix-like'], ['Unix-like', 'systems.'], ['systems.', 'Platform'], ['Platform', 'portability'], ['portability', 'was'], ['was', 'one'], ['one', 'of'], ['of', 'its'], ['its', 'earliest'], ['earliest', 'priorities.[95]\\nOther'], ['priorities.[95]\\nOther', 'implementations[edit]\\nPyPy'], ['implementations[edit]\\nPyPy', 'is'], ['is', 'a'], ['a', 'fast,'], ['fast,', 'compliant[96]'], ['compliant[96]', 'interpreter'], ['interpreter', 'of'], ['of', 'Python'], ['Python', '2.7'], ['2.7', 'and'], ['and', '3.5.'], ['3.5.', 'Its'], ['Its', 'just-in-time'], ['just-in-time', 'compiler'], ['compiler', 'brings'], ['brings', 'a'], ['a', 'significant'], ['significant', 'speed'], ['speed', 'improvement'], ['improvement', 'over'], ['over', 'CPython.[97]'], ['CPython.[97]', 'A'], ['A', 'version'], ['version', 'is'], ['is', 'under'], ['under', 'development'], ['development', 'that'], ['that', 'will'], ['will', 'use'], ['use', 'software'], ['software', 'transactional'], ['transactional', 'memory'], ['memory', 'to'], ['to', 'take'], ['take', 'advantage'], ['advantage', 'of'], ['of', 'multi-core'], ['multi-core', 'processors.[98]\\nStackless'], ['processors.[98]\\nStackless', 'Python'], ['Python', 'is'], ['is', 'a'], ['a', 'significant'], ['significant', 'fork'], ['fork', 'of'], ['of', 'CPython'], ['CPython', 'that'], ['that', 'implements'], ['implements', 'microthreads;'], ['microthreads;', 'it'], ['it', 'does'], ['does', 'not'], ['not', 'use'], ['use', 'the'], ['the', 'C'], ['C', 'memory'], ['memory', 'stack,'], ['stack,', 'thus'], ['thus', 'allowing'], ['allowing', 'massively'], ['massively', 'concurrent'], ['concurrent', 'programs.'], ['programs.', 'PyPy'], ['PyPy', 'also'], ['also', 'has'], ['has', 'a'], ['a', 'stackless'], ['stackless', 'version.[99]\\nMicroPython'], ['version.[99]\\nMicroPython', 'is'], ['is', 'a'], ['a', 'Python'], ['Python', '3'], ['3', 'variant'], ['variant', 'optimised'], ['optimised', 'for'], ['for', 'microcontrollers.\\nUnsupported'], ['microcontrollers.\\nUnsupported', 'implementations[edit]\\nOther'], ['implementations[edit]\\nOther', 'just-in-time'], ['just-in-time', 'Python'], ['Python', 'compilers'], ['compilers', 'have'], ['have', 'been'], ['been', 'developed,'], ['developed,', 'but'], ['but', 'are'], ['are', 'now'], ['now', 'unsupported:\\n\\nGoogle'], ['unsupported:\\n\\nGoogle', 'began'], ['began', 'a'], ['a', 'project'], ['project', 'named'], ['named', 'Unladen'], ['Unladen', 'Swallow'], ['Swallow', 'in'], ['in', '2009'], ['2009', 'with'], ['with', 'the'], ['the', 'aim'], ['aim', 'of'], ['of', 'speeding'], ['speeding', 'up'], ['up', 'the'], ['the', 'Python'], ['Python', 'interpreter'], ['interpreter', 'fivefold'], ['fivefold', 'by'], ['by', 'using'], ['using', 'the'], ['the', 'LLVM,'], ['LLVM,', 'and'], ['and', 'of'], ['of', 'improving'], ['improving', 'its'], ['its', 'multithreading'], ['multithreading', 'ability'], ['ability', 'to'], ['to', 'scale'], ['scale', 'to'], ['to', 'thousands'], ['thousands', 'of'], ['of', 'cores.[100]\\nPsyco'], ['cores.[100]\\nPsyco', 'is'], ['is', 'a'], ['a', 'just-in-time'], ['just-in-time', 'specialising'], ['specialising', 'compiler'], ['compiler', 'that'], ['that', 'integrates'], ['integrates', 'with'], ['with', 'CPython'], ['CPython', 'and'], ['and', 'transforms'], ['transforms', 'bytecode'], ['bytecode', 'to'], ['to', 'machine'], ['machine', 'code'], ['code', 'at'], ['at', 'runtime.'], ['runtime.', 'The'], ['The', 'emitted'], ['emitted', 'code'], ['code', 'is'], ['is', 'specialised'], ['specialised', 'for'], ['for', 'certain'], ['certain', 'data'], ['data', 'types'], ['types', 'and'], ['and', 'is'], ['is', 'faster'], ['faster', 'than'], ['than', 'standard'], ['standard', 'Python'], ['Python', 'code.\\n\\nIn'], ['code.\\n\\nIn', '2005,'], ['2005,', 'Nokia'], ['Nokia', 'released'], ['released', 'a'], ['a', 'Python'], ['Python', 'interpreter'], ['interpreter', 'for'], ['for', 'the'], ['the', 'Series'], ['Series', '60'], ['60', 'mobile'], ['mobile', 'phones'], ['phones', 'named'], ['named', 'PyS60.'], ['PyS60.', 'It'], ['It', 'includes'], ['includes', 'many'], ['many', 'of'], ['of', 'the'], ['the', 'modules'], ['modules', 'from'], ['from', 'the'], ['the', 'CPython'], ['CPython', 'implementations'], ['implementations', 'and'], ['and', 'some'], ['some', 'additional'], ['additional', 'modules'], ['modules', 'to'], ['to', 'integrate'], ['integrate', 'with'], ['with', 'the'], ['the', 'Symbian'], ['Symbian', 'operating'], ['operating', 'system.'], ['system.', 'The'], ['The', 'project'], ['project', 'has'], ['has', 'been'], ['been', 'kept'], ['kept', 'up-to-date'], ['up-to-date', 'to'], ['to', 'run'], ['run', 'on'], ['on', 'all'], ['all', 'variants'], ['variants', 'of'], ['of', 'the'], ['the', 'S60'], ['S60', 'platform,'], ['platform,', 'and'], ['and', 'several'], ['several', 'third-party'], ['third-party', 'modules'], ['modules', 'are'], ['are', 'available.'], ['available.', 'The'], ['The', 'Nokia'], ['Nokia', 'N900'], ['N900', 'also'], ['also', 'supports'], ['supports', 'Python'], ['Python', 'with'], ['with', 'GTK'], ['GTK', 'widget'], ['widget', 'libraries,'], ['libraries,', 'enabling'], ['enabling', 'programs'], ['programs', 'to'], ['to', 'be'], ['be', 'written'], ['written', 'and'], ['and', 'run'], ['run', 'on'], ['on', 'the'], ['the', 'target'], ['target', 'device.[101]\\nCross-compilers'], ['device.[101]\\nCross-compilers', 'to'], ['to', 'other'], ['other', 'languages[edit]\\nThere'], ['languages[edit]\\nThere', 'are'], ['are', 'several'], ['several', 'compilers'], ['compilers', 'to'], ['to', 'high-level'], ['high-level', 'object'], ['object', 'languages,'], ['languages,', 'with'], ['with', 'either'], ['either', 'unrestricted'], ['unrestricted', 'Python,'], ['Python,', 'a'], ['a', 'restricted'], ['restricted', 'subset'], ['subset', 'of'], ['of', 'Python,'], ['Python,', 'or'], ['or', 'a'], ['a', 'language'], ['language', 'similar'], ['similar', 'to'], ['to', 'Python'], ['Python', 'as'], ['as', 'the'], ['the', 'source'], ['source', 'language:\\n\\nJython'], ['language:\\n\\nJython', 'compiles'], ['compiles', 'into'], ['into', 'Java'], ['Java', 'byte'], ['byte', 'code,'], ['code,', 'which'], ['which', 'can'], ['can', 'then'], ['then', 'be'], ['be', 'executed'], ['executed', 'by'], ['by', 'every'], ['every', 'Java'], ['Java', 'virtual'], ['virtual', 'machine'], ['machine', 'implementation.'], ['implementation.', 'This'], ['This', 'also'], ['also', 'enables'], ['enables', 'the'], ['the', 'use'], ['use', 'of'], ['of', 'Java'], ['Java', 'class'], ['class', 'library'], ['library', 'functions'], ['functions', 'from'], ['from', 'the'], ['the', 'Python'], ['Python', 'program.\\nIronPython'], ['program.\\nIronPython', 'follows'], ['follows', 'a'], ['a', 'similar'], ['similar', 'approach'], ['approach', 'in'], ['in', 'order'], ['order', 'to'], ['to', 'run'], ['run', 'Python'], ['Python', 'programs'], ['programs', 'on'], ['on', 'the'], ['the', '.NET'], ['.NET', 'Common'], ['Common', 'Language'], ['Language', 'Runtime.\\nThe'], ['Runtime.\\nThe', 'RPython'], ['RPython', 'language'], ['language', 'can'], ['can', 'be'], ['be', 'compiled'], ['compiled', 'to'], ['to', 'C,'], ['C,', 'Java'], ['Java', 'bytecode,'], ['bytecode,', 'or'], ['or', 'Common'], ['Common', 'Intermediate'], ['Intermediate', 'Language,'], ['Language,', 'and'], ['and', 'is'], ['is', 'used'], ['used', 'to'], ['to', 'build'], ['build', 'the'], ['the', 'PyPy'], ['PyPy', 'interpreter'], ['interpreter', 'of'], ['of', 'Python.\\nPyjs'], ['Python.\\nPyjs', 'compiles'], ['compiles', 'Python'], ['Python', 'to'], ['to', 'JavaScript.\\nCython'], ['JavaScript.\\nCython', 'compiles'], ['compiles', 'Python'], ['Python', 'to'], ['to', 'C'], ['C', 'and'], ['and', 'C++.\\nPythran'], ['C++.\\nPythran', 'compiles'], ['compiles', 'Python'], ['Python', 'to'], ['to', 'C++.\\nSomewhat'], ['C++.\\nSomewhat', 'dated'], ['dated', 'Pyrex'], ['Pyrex', '(latest'], ['(latest', 'release'], ['release', 'in'], ['in', '2010)'], ['2010)', 'and'], ['and', 'Shed'], ['Shed', 'Skin'], ['Skin', '(latest'], ['(latest', 'release'], ['release', 'in'], ['in', '2013)'], ['2013)', 'compile'], ['compile', 'to'], ['to', 'C'], ['C', 'and'], ['and', 'C++'], ['C++', \"respectively.\\nGoogle's\"], [\"respectively.\\nGoogle's\", 'Grumpy'], ['Grumpy', 'compiles'], ['compiles', 'Python'], ['Python', 'to'], ['to', 'Go.\\nNuitka'], ['Go.\\nNuitka', 'compiles'], ['compiles', 'Python'], ['Python', 'into'], ['into', 'C++'], ['C++', '[102]\\n\\nPerformance[edit]\\nA'], ['[102]\\n\\nPerformance[edit]\\nA', 'performance'], ['performance', 'comparison'], ['comparison', 'of'], ['of', 'various'], ['various', 'Python'], ['Python', 'implementations'], ['implementations', 'on'], ['on', 'a'], ['a', 'non-numerical'], ['non-numerical', '(combinatorial)'], ['(combinatorial)', 'workload'], ['workload', 'was'], ['was', 'presented'], ['presented', 'at'], ['at', 'EuroSciPy'], ['EuroSciPy', \"'13.[103]\\nDevelopment[edit]\\nPython's\"], [\"'13.[103]\\nDevelopment[edit]\\nPython's\", 'development'], ['development', 'is'], ['is', 'conducted'], ['conducted', 'largely'], ['largely', 'through'], ['through', 'the'], ['the', 'Python'], ['Python', 'Enhancement'], ['Enhancement', 'Proposal'], ['Proposal', '(PEP)'], ['(PEP)', 'process,'], ['process,', 'the'], ['the', 'primary'], ['primary', 'mechanism'], ['mechanism', 'for'], ['for', 'proposing'], ['proposing', 'major'], ['major', 'new'], ['new', 'features,'], ['features,', 'collecting'], ['collecting', 'community'], ['community', 'input'], ['input', 'on'], ['on', 'issues'], ['issues', 'and'], ['and', 'documenting'], ['documenting', 'Python'], ['Python', 'design'], ['design', 'decisions.[104]'], ['decisions.[104]', 'Outstanding'], ['Outstanding', 'PEPs'], ['PEPs', 'are'], ['are', 'reviewed'], ['reviewed', 'and'], ['and', 'commented'], ['commented', 'on'], ['on', 'by'], ['by', 'the'], ['the', 'Python'], ['Python', 'community'], ['community', 'and'], ['and', 'Guido'], ['Guido', 'Van'], ['Van', 'Rossum,'], ['Rossum,', \"Python's\"], [\"Python's\", 'Benevolent'], ['Benevolent', 'Dictator'], ['Dictator', 'For'], ['For', 'Life.[104]\\nEnhancement'], ['Life.[104]\\nEnhancement', 'of'], ['of', 'the'], ['the', 'language'], ['language', 'corresponds'], ['corresponds', 'with'], ['with', 'development'], ['development', 'of'], ['of', 'the'], ['the', 'CPython'], ['CPython', 'reference'], ['reference', 'implementation.'], ['implementation.', 'The'], ['The', 'mailing'], ['mailing', 'list'], ['list', 'python-dev'], ['python-dev', 'is'], ['is', 'the'], ['the', 'primary'], ['primary', 'forum'], ['forum', 'for'], ['for', 'the'], ['the', \"language's\"], [\"language's\", 'development.'], ['development.', 'Specific'], ['Specific', 'issues'], ['issues', 'are'], ['are', 'discussed'], ['discussed', 'in'], ['in', 'the'], ['the', 'Roundup'], ['Roundup', 'bug'], ['bug', 'tracker'], ['tracker', 'maintained'], ['maintained', 'at'], ['at', 'python.org.[105]'], ['python.org.[105]', 'Development'], ['Development', 'originally'], ['originally', 'took'], ['took', 'place'], ['place', 'on'], ['on', 'a'], ['a', 'self-hosted'], ['self-hosted', 'source-code'], ['source-code', 'repository'], ['repository', 'running'], ['running', 'Mercurial,'], ['Mercurial,', 'until'], ['until', 'Python'], ['Python', 'moved'], ['moved', 'to'], ['to', 'GitHub'], ['GitHub', 'in'], ['in', 'January'], ['January', \"2017.[106]\\nCPython's\"], [\"2017.[106]\\nCPython's\", 'public'], ['public', 'releases'], ['releases', 'come'], ['come', 'in'], ['in', 'three'], ['three', 'types,'], ['types,', 'distinguished'], ['distinguished', 'by'], ['by', 'which'], ['which', 'part'], ['part', 'of'], ['of', 'the'], ['the', 'version'], ['version', 'number'], ['number', 'is'], ['is', 'incremented:\\n\\nBackward-incompatible'], ['incremented:\\n\\nBackward-incompatible', 'versions,'], ['versions,', 'where'], ['where', 'code'], ['code', 'is'], ['is', 'expected'], ['expected', 'to'], ['to', 'break'], ['break', 'and'], ['and', 'need'], ['need', 'to'], ['to', 'be'], ['be', 'manually'], ['manually', 'ported.'], ['ported.', 'The'], ['The', 'first'], ['first', 'part'], ['part', 'of'], ['of', 'the'], ['the', 'version'], ['version', 'number'], ['number', 'is'], ['is', 'incremented.'], ['incremented.', 'These'], ['These', 'releases'], ['releases', 'happen'], ['happen', 'infrequently—for'], ['infrequently—for', 'example,'], ['example,', 'version'], ['version', '3.0'], ['3.0', 'was'], ['was', 'released'], ['released', '8'], ['8', 'years'], ['years', 'after'], ['after', '2.0.\\nMajor'], ['2.0.\\nMajor', 'or'], ['or', '\"feature\"'], ['\"feature\"', 'releases,'], ['releases,', 'about'], ['about', 'every'], ['every', '18'], ['18', 'months,'], ['months,', 'are'], ['are', 'largely'], ['largely', 'compatible'], ['compatible', 'but'], ['but', 'introduce'], ['introduce', 'new'], ['new', 'features.'], ['features.', 'The'], ['The', 'second'], ['second', 'part'], ['part', 'of'], ['of', 'the'], ['the', 'version'], ['version', 'number'], ['number', 'is'], ['is', 'incremented.'], ['incremented.', 'Each'], ['Each', 'major'], ['major', 'version'], ['version', 'is'], ['is', 'supported'], ['supported', 'by'], ['by', 'bugfixes'], ['bugfixes', 'for'], ['for', 'several'], ['several', 'years'], ['years', 'after'], ['after', 'its'], ['its', 'release.[107]\\nBugfix'], ['release.[107]\\nBugfix', 'releases,'], ['releases,', 'which'], ['which', 'introduce'], ['introduce', 'no'], ['no', 'new'], ['new', 'features,'], ['features,', 'occur'], ['occur', 'about'], ['about', 'every'], ['every', '3'], ['3', 'months'], ['months', 'and'], ['and', 'are'], ['are', 'made'], ['made', 'when'], ['when', 'a'], ['a', 'sufficient'], ['sufficient', 'number'], ['number', 'of'], ['of', 'bugs'], ['bugs', 'have'], ['have', 'been'], ['been', 'fixed'], ['fixed', 'upstream'], ['upstream', 'since'], ['since', 'the'], ['the', 'last'], ['last', 'release.'], ['release.', 'Security'], ['Security', 'vulnerabilities'], ['vulnerabilities', 'are'], ['are', 'also'], ['also', 'patched'], ['patched', 'in'], ['in', 'these'], ['these', 'releases.'], ['releases.', 'The'], ['The', 'third'], ['third', 'and'], ['and', 'final'], ['final', 'part'], ['part', 'of'], ['of', 'the'], ['the', 'version'], ['version', 'number'], ['number', 'is'], ['is', 'incremented.[108]\\n\\nMany'], ['incremented.[108]\\n\\nMany', 'alpha,'], ['alpha,', 'beta,'], ['beta,', 'and'], ['and', 'release-candidates'], ['release-candidates', 'are'], ['are', 'also'], ['also', 'released'], ['released', 'as'], ['as', 'previews'], ['previews', 'and'], ['and', 'for'], ['for', 'testing'], ['testing', 'before'], ['before', 'final'], ['final', 'releases.'], ['releases.', 'Although'], ['Although', 'there'], ['there', 'is'], ['is', 'a'], ['a', 'rough'], ['rough', 'schedule'], ['schedule', 'for'], ['for', 'each'], ['each', 'release,'], ['release,', 'they'], ['they', 'are'], ['are', 'often'], ['often', 'delayed'], ['delayed', 'if'], ['if', 'the'], ['the', 'code'], ['code', 'is'], ['is', 'not'], ['not', 'ready.'], ['ready.', \"Python's\"], [\"Python's\", 'development'], ['development', 'team'], ['team', 'monitors'], ['monitors', 'the'], ['the', 'state'], ['state', 'of'], ['of', 'the'], ['the', 'code'], ['code', 'by'], ['by', 'running'], ['running', 'the'], ['the', 'large'], ['large', 'unit'], ['unit', 'test'], ['test', 'suite'], ['suite', 'during'], ['during', 'development,'], ['development,', 'and'], ['and', 'using'], ['using', 'the'], ['the', 'BuildBot'], ['BuildBot', 'continuous'], ['continuous', 'integration'], ['integration', 'system.[109]\\nThe'], ['system.[109]\\nThe', 'community'], ['community', 'of'], ['of', 'Python'], ['Python', 'developers'], ['developers', 'has'], ['has', 'also'], ['also', 'contributed'], ['contributed', 'over'], ['over', '86,000[110]'], ['86,000[110]', 'software'], ['software', 'modules'], ['modules', '(as'], ['(as', 'of'], ['of', '20'], ['20', 'August'], ['August', '2016[update])'], ['2016[update])', 'to'], ['to', 'the'], ['the', 'Python'], ['Python', 'Package'], ['Package', 'Index'], ['Index', '(PyPI),'], ['(PyPI),', 'the'], ['the', 'official'], ['official', 'repository'], ['repository', 'of'], ['of', 'third-party'], ['third-party', 'Python'], ['Python', 'libraries.\\nThe'], ['libraries.\\nThe', 'major'], ['major', 'academic'], ['academic', 'conference'], ['conference', 'on'], ['on', 'Python'], ['Python', 'is'], ['is', 'PyCon.'], ['PyCon.', 'There'], ['There', 'are'], ['are', 'also'], ['also', 'special'], ['special', 'Python'], ['Python', 'mentoring'], ['mentoring', 'programmes,'], ['programmes,', 'such'], ['such', 'as'], ['as', \"Pyladies.\\nNaming[edit]\\nPython's\"], [\"Pyladies.\\nNaming[edit]\\nPython's\", 'name'], ['name', 'is'], ['is', 'derived'], ['derived', 'from'], ['from', 'the'], ['the', 'British'], ['British', 'comedy'], ['comedy', 'group'], ['group', 'Monty'], ['Monty', 'Python,'], ['Python,', 'whom'], ['whom', 'Python'], ['Python', 'creator'], ['creator', 'Guido'], ['Guido', 'van'], ['van', 'Rossum'], ['Rossum', 'enjoyed'], ['enjoyed', 'while'], ['while', 'developing'], ['developing', 'the'], ['the', 'language.'], ['language.', 'Monty'], ['Monty', 'Python'], ['Python', 'references'], ['references', 'appear'], ['appear', 'frequently'], ['frequently', 'in'], ['in', 'Python'], ['Python', 'code'], ['code', 'and'], ['and', 'culture;[111]'], ['culture;[111]', 'for'], ['for', 'example,'], ['example,', 'the'], ['the', 'metasyntactic'], ['metasyntactic', 'variables'], ['variables', 'often'], ['often', 'used'], ['used', 'in'], ['in', 'Python'], ['Python', 'literature'], ['literature', 'are'], ['are', 'spam'], ['spam', 'and'], ['and', 'eggs'], ['eggs', 'instead'], ['instead', 'of'], ['of', 'the'], ['the', 'traditional'], ['traditional', 'foo'], ['foo', 'and'], ['and', 'bar[111][112].'], ['bar[111][112].', 'The'], ['The', 'official'], ['official', 'Python'], ['Python', 'documentation'], ['documentation', 'also'], ['also', 'contains'], ['contains', 'various'], ['various', 'references'], ['references', 'to'], ['to', 'Monty'], ['Monty', 'Python'], ['Python', 'routines.[113][114]\\nThe'], ['routines.[113][114]\\nThe', 'prefix'], ['prefix', 'Py-'], ['Py-', 'is'], ['is', 'used'], ['used', 'to'], ['to', 'show'], ['show', 'that'], ['that', 'something'], ['something', 'is'], ['is', 'related'], ['related', 'to'], ['to', 'Python.'], ['Python.', 'Examples'], ['Examples', 'of'], ['of', 'the'], ['the', 'use'], ['use', 'of'], ['of', 'this'], ['this', 'prefix'], ['prefix', 'in'], ['in', 'names'], ['names', 'of'], ['of', 'Python'], ['Python', 'applications'], ['applications', 'or'], ['or', 'libraries'], ['libraries', 'include'], ['include', 'Pygame,'], ['Pygame,', 'a'], ['a', 'binding'], ['binding', 'of'], ['of', 'SDL'], ['SDL', 'to'], ['to', 'Python'], ['Python', '(commonly'], ['(commonly', 'used'], ['used', 'to'], ['to', 'create'], ['create', 'games);'], ['games);', 'Python'], ['Python', 'for'], ['for', 'S60,'], ['S60,', 'an'], ['an', 'implementation'], ['implementation', 'for'], ['for', 'the'], ['the', 'Symbian'], ['Symbian', 'S60'], ['S60', 'operating'], ['operating', 'system;'], ['system;', 'PyQt'], ['PyQt', 'and'], ['and', 'PyGTK,'], ['PyGTK,', 'which'], ['which', 'bind'], ['bind', 'Qt'], ['Qt', 'and'], ['and', 'GTK'], ['GTK', 'to'], ['to', 'Python'], ['Python', 'respectively;'], ['respectively;', 'and'], ['and', 'PyPy,'], ['PyPy,', 'a'], ['a', 'Python'], ['Python', 'implementation'], ['implementation', 'originally'], ['originally', 'written'], ['written', 'in'], ['in', 'Python.\\nUses[edit]\\nMain'], ['Python.\\nUses[edit]\\nMain', 'article:'], ['article:', 'List'], ['List', 'of'], ['of', 'Python'], ['Python', 'software\\nSince'], ['software\\nSince', '2003,'], ['2003,', 'Python'], ['Python', 'has'], ['has', 'consistently'], ['consistently', 'ranked'], ['ranked', 'in'], ['in', 'the'], ['the', 'top'], ['top', 'ten'], ['ten', 'most'], ['most', 'popular'], ['popular', 'programming'], ['programming', 'languages'], ['languages', 'in'], ['in', 'the'], ['the', 'TIOBE'], ['TIOBE', 'Programming'], ['Programming', 'Community'], ['Community', 'Index.'], ['Index.', 'As'], ['As', 'of'], ['of', 'March'], ['March', '2017[update],'], ['2017[update],', 'it'], ['it', 'is'], ['is', 'the'], ['the', 'fifth'], ['fifth', 'most'], ['most', 'popular'], ['popular', 'language.[115]'], ['language.[115]', 'It'], ['It', 'was'], ['was', 'selected'], ['selected', 'Programming'], ['Programming', 'Language'], ['Language', 'of'], ['of', 'the'], ['the', 'Year'], ['Year', 'in'], ['in', '2007'], ['2007', 'and'], ['and', '2010.[116]'], ['2010.[116]', 'It'], ['It', 'is'], ['is', 'the'], ['the', 'third'], ['third', 'most'], ['most', 'popular'], ['popular', 'language'], ['language', 'whose'], ['whose', 'grammatical'], ['grammatical', 'syntax'], ['syntax', 'is'], ['is', 'not'], ['not', 'predominantly'], ['predominantly', 'based'], ['based', 'on'], ['on', 'C.\\nAn'], ['C.\\nAn', 'empirical'], ['empirical', 'study'], ['study', 'found'], ['found', 'that'], ['that', 'scripting'], ['scripting', 'languages,'], ['languages,', 'such'], ['such', 'as'], ['as', 'Python,'], ['Python,', 'are'], ['are', 'more'], ['more', 'productive'], ['productive', 'than'], ['than', 'conventional'], ['conventional', 'languages,'], ['languages,', 'such'], ['such', 'as'], ['as', 'C'], ['C', 'and'], ['and', 'Java,'], ['Java,', 'for'], ['for', 'programming'], ['programming', 'problems'], ['problems', 'involving'], ['involving', 'string'], ['string', 'manipulation'], ['manipulation', 'and'], ['and', 'search'], ['search', 'in'], ['in', 'a'], ['a', 'dictionary,'], ['dictionary,', 'and'], ['and', 'determined'], ['determined', 'that'], ['that', 'memory'], ['memory', 'consumption'], ['consumption', 'was'], ['was', 'often'], ['often', '\"better'], ['\"better', 'than'], ['than', 'Java'], ['Java', 'and'], ['and', 'not'], ['not', 'much'], ['much', 'worse'], ['worse', 'than'], ['than', 'C'], ['C', 'or'], ['or', 'C++\".[117]\\nLarge'], ['C++\".[117]\\nLarge', 'organizations'], ['organizations', 'that'], ['that', 'use'], ['use', 'Python'], ['Python', 'include'], ['include', 'Wikipedia,'], ['Wikipedia,', 'Google,[118]'], ['Google,[118]', 'Yahoo!,[119]'], ['Yahoo!,[119]', 'CERN,[120]'], ['CERN,[120]', 'NASA,[121]'], ['NASA,[121]', 'and'], ['and', 'some'], ['some', 'smaller'], ['smaller', 'entities'], ['entities', 'like'], ['like', 'ILM[122]'], ['ILM[122]', 'and'], ['and', 'ITA.[123]'], ['ITA.[123]', 'The'], ['The', 'social'], ['social', 'news'], ['news', 'networking'], ['networking', 'site'], ['site', 'Reddit'], ['Reddit', 'is'], ['is', 'written'], ['written', 'entirely'], ['entirely', 'in'], ['in', 'Python.\\nPython'], ['Python.\\nPython', 'can'], ['can', 'serve'], ['serve', 'as'], ['as', 'a'], ['a', 'scripting'], ['scripting', 'language'], ['language', 'for'], ['for', 'web'], ['web', 'applications,'], ['applications,', 'e.g.,'], ['e.g.,', 'via'], ['via', 'mod_wsgi'], ['mod_wsgi', 'for'], ['for', 'the'], ['the', 'Apache'], ['Apache', 'web'], ['web', 'server.[124]'], ['server.[124]', 'With'], ['With', 'Web'], ['Web', 'Server'], ['Server', 'Gateway'], ['Gateway', 'Interface,'], ['Interface,', 'a'], ['a', 'standard'], ['standard', 'API'], ['API', 'has'], ['has', 'evolved'], ['evolved', 'to'], ['to', 'facilitate'], ['facilitate', 'these'], ['these', 'applications.'], ['applications.', 'Web'], ['Web', 'frameworks'], ['frameworks', 'like'], ['like', 'Django,'], ['Django,', 'Pylons,'], ['Pylons,', 'Pyramid,'], ['Pyramid,', 'TurboGears,'], ['TurboGears,', 'web2py,'], ['web2py,', 'Tornado,'], ['Tornado,', 'Flask,'], ['Flask,', 'Bottle'], ['Bottle', 'and'], ['and', 'Zope'], ['Zope', 'support'], ['support', 'developers'], ['developers', 'in'], ['in', 'the'], ['the', 'design'], ['design', 'and'], ['and', 'maintenance'], ['maintenance', 'of'], ['of', 'complex'], ['complex', 'applications.'], ['applications.', 'Pyjs'], ['Pyjs', 'and'], ['and', 'IronPython'], ['IronPython', 'can'], ['can', 'be'], ['be', 'used'], ['used', 'to'], ['to', 'develop'], ['develop', 'the'], ['the', 'client-side'], ['client-side', 'of'], ['of', 'Ajax-based'], ['Ajax-based', 'applications.'], ['applications.', 'SQLAlchemy'], ['SQLAlchemy', 'can'], ['can', 'be'], ['be', 'used'], ['used', 'as'], ['as', 'data'], ['data', 'mapper'], ['mapper', 'to'], ['to', 'a'], ['a', 'relational'], ['relational', 'database.'], ['database.', 'Twisted'], ['Twisted', 'is'], ['is', 'a'], ['a', 'framework'], ['framework', 'to'], ['to', 'program'], ['program', 'communications'], ['communications', 'between'], ['between', 'computers,'], ['computers,', 'and'], ['and', 'is'], ['is', 'used'], ['used', '(for'], ['(for', 'example)'], ['example)', 'by'], ['by', 'Dropbox.\\nLibraries'], ['Dropbox.\\nLibraries', 'such'], ['such', 'as'], ['as', 'NumPy,'], ['NumPy,', 'SciPy'], ['SciPy', 'and'], ['and', 'Matplotlib'], ['Matplotlib', 'allow'], ['allow', 'the'], ['the', 'effective'], ['effective', 'use'], ['use', 'of'], ['of', 'Python'], ['Python', 'in'], ['in', 'scientific'], ['scientific', 'computing,[125][126]'], ['computing,[125][126]', 'with'], ['with', 'specialized'], ['specialized', 'libraries'], ['libraries', 'such'], ['such', 'as'], ['as', 'Biopython'], ['Biopython', 'and'], ['and', 'Astropy'], ['Astropy', 'providing'], ['providing', 'domain-specific'], ['domain-specific', 'functionality.'], ['functionality.', 'SageMath'], ['SageMath', 'is'], ['is', 'a'], ['a', 'mathematical'], ['mathematical', 'software'], ['software', 'with'], ['with', 'a'], ['a', '\"notebook\"'], ['\"notebook\"', 'programmable'], ['programmable', 'in'], ['in', 'Python:'], ['Python:', 'its'], ['its', 'library'], ['library', 'covers'], ['covers', 'many'], ['many', 'aspects'], ['aspects', 'of'], ['of', 'mathematics,'], ['mathematics,', 'including'], ['including', 'algebra,'], ['algebra,', 'combinatorics,'], ['combinatorics,', 'numerical'], ['numerical', 'mathematics,'], ['mathematics,', 'number'], ['number', 'theory,'], ['theory,', 'and'], ['and', 'calculus.'], ['calculus.', 'The'], ['The', 'Python'], ['Python', 'language'], ['language', 're-implemented'], ['re-implemented', 'in'], ['in', 'Java'], ['Java', 'platform'], ['platform', 'is'], ['is', 'used'], ['used', 'for'], ['for', 'numeric'], ['numeric', 'and'], ['and', 'statistical'], ['statistical', 'calculations'], ['calculations', 'with'], ['with', '2D/3D'], ['2D/3D', 'visualization'], ['visualization', 'by'], ['by', 'the'], ['the', 'DMelt'], ['DMelt', 'project.[127][128]\\nPython'], ['project.[127][128]\\nPython', 'has'], ['has', 'been'], ['been', 'successfully'], ['successfully', 'embedded'], ['embedded', 'in'], ['in', 'many'], ['many', 'software'], ['software', 'products'], ['products', 'as'], ['as', 'a'], ['a', 'scripting'], ['scripting', 'language,'], ['language,', 'including'], ['including', 'in'], ['in', 'finite'], ['finite', 'element'], ['element', 'method'], ['method', 'software'], ['software', 'such'], ['such', 'as'], ['as', 'Abaqus,'], ['Abaqus,', '3D'], ['3D', 'parametric'], ['parametric', 'modeler'], ['modeler', 'like'], ['like', 'FreeCAD,'], ['FreeCAD,', '3D'], ['3D', 'animation'], ['animation', 'packages'], ['packages', 'such'], ['such', 'as'], ['as', '3ds'], ['3ds', 'Max,'], ['Max,', 'Blender,'], ['Blender,', 'Cinema'], ['Cinema', '4D,'], ['4D,', 'Lightwave,'], ['Lightwave,', 'Houdini,'], ['Houdini,', 'Maya,'], ['Maya,', 'modo,'], ['modo,', 'MotionBuilder,'], ['MotionBuilder,', 'Softimage,'], ['Softimage,', 'the'], ['the', 'visual'], ['visual', 'effects'], ['effects', 'compositor'], ['compositor', 'Nuke,'], ['Nuke,', '2D'], ['2D', 'imaging'], ['imaging', 'programs'], ['programs', 'like'], ['like', 'GIMP,[129]'], ['GIMP,[129]', 'Inkscape,'], ['Inkscape,', 'Scribus'], ['Scribus', 'and'], ['and', 'Paint'], ['Paint', 'Shop'], ['Shop', 'Pro,[130]'], ['Pro,[130]', 'and'], ['and', 'musical'], ['musical', 'notation'], ['notation', 'programs'], ['programs', 'like'], ['like', 'scorewriter'], ['scorewriter', 'and'], ['and', 'capella.'], ['capella.', 'GNU'], ['GNU', 'Debugger'], ['Debugger', 'uses'], ['uses', 'Python'], ['Python', 'as'], ['as', 'a'], ['a', 'pretty'], ['pretty', 'printer'], ['printer', 'to'], ['to', 'show'], ['show', 'complex'], ['complex', 'structures'], ['structures', 'such'], ['such', 'as'], ['as', 'C++'], ['C++', 'containers.'], ['containers.', 'Esri'], ['Esri', 'promotes'], ['promotes', 'Python'], ['Python', 'as'], ['as', 'the'], ['the', 'best'], ['best', 'choice'], ['choice', 'for'], ['for', 'writing'], ['writing', 'scripts'], ['scripts', 'in'], ['in', 'ArcGIS.[131]'], ['ArcGIS.[131]', 'It'], ['It', 'has'], ['has', 'also'], ['also', 'been'], ['been', 'used'], ['used', 'in'], ['in', 'several'], ['several', 'video'], ['video', 'games,[132][133]'], ['games,[132][133]', 'and'], ['and', 'has'], ['has', 'been'], ['been', 'adopted'], ['adopted', 'as'], ['as', 'first'], ['first', 'of'], ['of', 'the'], ['the', 'three'], ['three', 'available'], ['available', 'programming'], ['programming', 'languages'], ['languages', 'in'], ['in', 'Google'], ['Google', 'App'], ['App', 'Engine,'], ['Engine,', 'the'], ['the', 'other'], ['other', 'two'], ['two', 'being'], ['being', 'Java'], ['Java', 'and'], ['and', 'Go.[134]'], ['Go.[134]', 'Python'], ['Python', 'is'], ['is', 'also'], ['also', 'used'], ['used', 'in'], ['in', 'algorithmic'], ['algorithmic', 'trading'], ['trading', 'and'], ['and', 'quantitative'], ['quantitative', 'finance.[135]'], ['finance.[135]', 'Python'], ['Python', 'can'], ['can', 'also'], ['also', 'be'], ['be', 'implemented'], ['implemented', 'in'], ['in', 'APIs'], ['APIs', 'of'], ['of', 'online'], ['online', 'brokerages'], ['brokerages', 'that'], ['that', 'run'], ['run', 'on'], ['on', 'other'], ['other', 'languages'], ['languages', 'by'], ['by', 'using'], ['using', 'wrappers.[136]\\nPython'], ['wrappers.[136]\\nPython', 'has'], ['has', 'been'], ['been', 'used'], ['used', 'in'], ['in', 'artificial'], ['artificial', 'intelligence'], ['intelligence', 'projects.[137][138][139][140]'], ['projects.[137][138][139][140]', 'As'], ['As', 'a'], ['a', 'scripting'], ['scripting', 'language'], ['language', 'with'], ['with', 'modular'], ['modular', 'architecture,'], ['architecture,', 'simple'], ['simple', 'syntax'], ['syntax', 'and'], ['and', 'rich'], ['rich', 'text'], ['text', 'processing'], ['processing', 'tools,'], ['tools,', 'Python'], ['Python', 'is'], ['is', 'often'], ['often', 'used'], ['used', 'for'], ['for', 'natural'], ['natural', 'language'], ['language', 'processing.[141]\\nMany'], ['processing.[141]\\nMany', 'operating'], ['operating', 'systems'], ['systems', 'include'], ['include', 'Python'], ['Python', 'as'], ['as', 'a'], ['a', 'standard'], ['standard', 'component.'], ['component.', 'It'], ['It', 'ships'], ['ships', 'with'], ['with', 'most'], ['most', 'Linux'], ['Linux', 'distributions,'], ['distributions,', 'AmigaOS'], ['AmigaOS', '4,'], ['4,', 'FreeBSD,'], ['FreeBSD,', 'NetBSD,'], ['NetBSD,', 'OpenBSD'], ['OpenBSD', 'and'], ['and', 'macOS,'], ['macOS,', 'and'], ['and', 'can'], ['can', 'be'], ['be', 'used'], ['used', 'from'], ['from', 'the'], ['the', 'command'], ['command', 'line'], ['line', '(terminal).'], ['(terminal).', 'Many'], ['Many', 'Linux'], ['Linux', 'distributions'], ['distributions', 'use'], ['use', 'installers'], ['installers', 'written'], ['written', 'in'], ['in', 'Python:'], ['Python:', 'Ubuntu'], ['Ubuntu', 'uses'], ['uses', 'the'], ['the', 'Ubiquity'], ['Ubiquity', 'installer,'], ['installer,', 'while'], ['while', 'Red'], ['Red', 'Hat'], ['Hat', 'Linux'], ['Linux', 'and'], ['and', 'Fedora'], ['Fedora', 'use'], ['use', 'the'], ['the', 'Anaconda'], ['Anaconda', 'installer.'], ['installer.', 'Gentoo'], ['Gentoo', 'Linux'], ['Linux', 'uses'], ['uses', 'Python'], ['Python', 'in'], ['in', 'its'], ['its', 'package'], ['package', 'management'], ['management', 'system,'], ['system,', 'Portage.\\nPython'], ['Portage.\\nPython', 'is'], ['is', 'used'], ['used', 'extensively'], ['extensively', 'in'], ['in', 'the'], ['the', 'information'], ['information', 'security'], ['security', 'industry,'], ['industry,', 'including'], ['including', 'in'], ['in', 'exploit'], ['exploit', 'development.[142][143]\\nMost'], ['development.[142][143]\\nMost', 'of'], ['of', 'the'], ['the', 'Sugar'], ['Sugar', 'software'], ['software', 'for'], ['for', 'the'], ['the', 'One'], ['One', 'Laptop'], ['Laptop', 'per'], ['per', 'Child'], ['Child', 'XO,'], ['XO,', 'now'], ['now', 'developed'], ['developed', 'at'], ['at', 'Sugar'], ['Sugar', 'Labs,'], ['Labs,', 'is'], ['is', 'written'], ['written', 'in'], ['in', 'Python.[144]\\nThe'], ['Python.[144]\\nThe', 'Raspberry'], ['Raspberry', 'Pi'], ['Pi', 'single-board'], ['single-board', 'computer'], ['computer', 'project'], ['project', 'has'], ['has', 'adopted'], ['adopted', 'Python'], ['Python', 'as'], ['as', 'its'], ['its', 'main'], ['main', 'user-programming'], ['user-programming', 'language.\\nLibreOffice'], ['language.\\nLibreOffice', 'includes'], ['includes', 'Python,'], ['Python,', 'and'], ['and', 'intends'], ['intends', 'to'], ['to', 'replace'], ['replace', 'Java'], ['Java', 'with'], ['with', 'Python.'], ['Python.', 'Its'], ['Its', 'Python'], ['Python', 'Scripting'], ['Scripting', 'Provider'], ['Provider', 'is'], ['is', 'a'], ['a', 'core'], ['core', 'feature[145]'], ['feature[145]', 'since'], ['since', 'Version'], ['Version', '4.0'], ['4.0', 'from'], ['from', '7'], ['7', 'February'], ['February', '2013.\\nLanguages'], ['2013.\\nLanguages', 'influenced'], ['influenced', 'by'], ['by', \"Python[edit]\\nPython's\"], [\"Python[edit]\\nPython's\", 'design'], ['design', 'and'], ['and', 'philosophy'], ['philosophy', 'have'], ['have', 'influenced'], ['influenced', 'many'], ['many', 'other'], ['other', 'programming'], ['programming', 'languages:\\n\\nBoo'], ['languages:\\n\\nBoo', 'uses'], ['uses', 'indentation,'], ['indentation,', 'a'], ['a', 'similar'], ['similar', 'syntax,'], ['syntax,', 'and'], ['and', 'a'], ['a', 'similar'], ['similar', 'object'], ['object', 'model.[146]\\nCobra'], ['model.[146]\\nCobra', 'uses'], ['uses', 'indentation'], ['indentation', 'and'], ['and', 'a'], ['a', 'similar'], ['similar', 'syntax,'], ['syntax,', 'and'], ['and', 'its'], ['its', '\"Acknowledgements\"'], ['\"Acknowledgements\"', 'document'], ['document', 'lists'], ['lists', 'Python'], ['Python', 'first'], ['first', 'among'], ['among', 'languages'], ['languages', 'that'], ['that', 'influenced'], ['influenced', 'it.[147]'], ['it.[147]', 'However,'], ['However,', 'Cobra'], ['Cobra', 'directly'], ['directly', 'supports'], ['supports', 'design-by-contract,'], ['design-by-contract,', 'unit'], ['unit', 'tests,'], ['tests,', 'and'], ['and', 'optional'], ['optional', 'static'], ['static', 'typing.[148]\\nCoffeeScript,'], ['typing.[148]\\nCoffeeScript,', 'a'], ['a', 'programming'], ['programming', 'language'], ['language', 'that'], ['that', 'cross-compiles'], ['cross-compiles', 'to'], ['to', 'JavaScript,'], ['JavaScript,', 'has'], ['has', 'Python-inspired'], ['Python-inspired', 'syntax.\\nECMAScript'], ['syntax.\\nECMAScript', 'borrowed'], ['borrowed', 'iterators,'], ['iterators,', 'generators'], ['generators', 'and'], ['and', 'list'], ['list', 'comprehensions'], ['comprehensions', 'from'], ['from', 'Python.[149]\\nGo'], ['Python.[149]\\nGo', 'is'], ['is', 'described'], ['described', 'as'], ['as', 'incorporating'], ['incorporating', 'the'], ['the', '\"development'], ['\"development', 'speed'], ['speed', 'of'], ['of', 'working'], ['working', 'in'], ['in', 'a'], ['a', 'dynamic'], ['dynamic', 'language'], ['language', 'like'], ['like', 'Python\".[150]\\nGroovy'], ['Python\".[150]\\nGroovy', 'was'], ['was', 'motivated'], ['motivated', 'by'], ['by', 'the'], ['the', 'desire'], ['desire', 'to'], ['to', 'bring'], ['bring', 'the'], ['the', 'Python'], ['Python', 'design'], ['design', 'philosophy'], ['philosophy', 'to'], ['to', 'Java.[151]\\nJulia'], ['Java.[151]\\nJulia', 'was'], ['was', 'designed'], ['designed', '\"with'], ['\"with', 'true'], ['true', 'macros'], ['macros', '[..'], ['[..', 'and'], ['and', 'to'], ['to', 'be]'], ['be]', 'as'], ['as', 'usable'], ['usable', 'for'], ['for', 'general'], ['general', 'programming'], ['programming', 'as'], ['as', 'Python'], ['Python', '[and]'], ['[and]', 'should'], ['should', 'be'], ['be', 'as'], ['as', 'fast'], ['fast', 'as'], ['as', 'C\".[21]'], ['C\".[21]', 'Calling'], ['Calling', 'to'], ['to', 'or'], ['or', 'from'], ['from', 'Julia'], ['Julia', 'is'], ['is', 'possible;'], ['possible;', 'to'], ['to', 'with'], ['with', 'PyCall.jl'], ['PyCall.jl', 'and'], ['and', 'a'], ['a', 'Python'], ['Python', 'package'], ['package', 'pyjulia'], ['pyjulia', 'allows'], ['allows', 'calling,'], ['calling,', 'in'], ['in', 'the'], ['the', 'other'], ['other', 'direction,'], ['direction,', 'from'], ['from', 'Python.\\nOCaml'], ['Python.\\nOCaml', 'has'], ['has', 'an'], ['an', 'optional'], ['optional', 'syntax'], ['syntax', 'named'], ['named', 'twt'], ['twt', '(The'], ['(The', 'Whitespace'], ['Whitespace', 'Thing),'], ['Thing),', 'inspired'], ['inspired', 'by'], ['by', 'Python'], ['Python', 'and'], ['and', \"Haskell.[152]\\nRuby's\"], [\"Haskell.[152]\\nRuby's\", 'creator,'], ['creator,', 'Yukihiro'], ['Yukihiro', 'Matsumoto,'], ['Matsumoto,', 'has'], ['has', 'said:'], ['said:', '\"I'], ['\"I', 'wanted'], ['wanted', 'a'], ['a', 'scripting'], ['scripting', 'language'], ['language', 'that'], ['that', 'was'], ['was', 'more'], ['more', 'powerful'], ['powerful', 'than'], ['than', 'Perl,'], ['Perl,', 'and'], ['and', 'more'], ['more', 'object-oriented'], ['object-oriented', 'than'], ['than', 'Python.'], ['Python.', \"That's\"], [\"That's\", 'why'], ['why', 'I'], ['I', 'decided'], ['decided', 'to'], ['to', 'design'], ['design', 'my'], ['my', 'own'], ['own', 'language.\"[153]\\nSwift,'], ['language.\"[153]\\nSwift,', 'a'], ['a', 'programming'], ['programming', 'language'], ['language', 'developed'], ['developed', 'by'], ['by', 'Apple,'], ['Apple,', 'has'], ['has', 'some'], ['some', 'Python-inspired'], ['Python-inspired', \"syntax.[154]\\n\\nPython's\"], [\"syntax.[154]\\n\\nPython's\", 'development'], ['development', 'practices'], ['practices', 'have'], ['have', 'also'], ['also', 'been'], ['been', 'emulated'], ['emulated', 'by'], ['by', 'other'], ['other', 'languages.'], ['languages.', 'For'], ['For', 'example,'], ['example,', 'the'], ['the', 'practice'], ['practice', 'of'], ['of', 'requiring'], ['requiring', 'a'], ['a', 'document'], ['document', 'describing'], ['describing', 'the'], ['the', 'rationale'], ['rationale', 'for,'], ['for,', 'and'], ['and', 'issues'], ['issues', 'surrounding,'], ['surrounding,', 'a'], ['a', 'change'], ['change', 'to'], ['to', 'the'], ['the', 'language'], ['language', '(in'], ['(in', 'Python,'], ['Python,', 'a'], ['a', 'PEP)'], ['PEP)', 'is'], ['is', 'also'], ['also', 'used'], ['used', 'in'], ['in', 'Tcl[155]'], ['Tcl[155]', 'and'], ['and', 'Erlang[156].\\nPython'], ['Erlang[156].\\nPython', 'received'], ['received', \"TIOBE's\"], [\"TIOBE's\", 'Programming'], ['Programming', 'Language'], ['Language', 'of'], ['of', 'the'], ['the', 'Year'], ['Year', 'awards'], ['awards', 'in'], ['in', '2007'], ['2007', 'and'], ['and', '2010.'], ['2010.', 'The'], ['The', 'award'], ['award', 'is'], ['is', 'given'], ['given', 'to'], ['to', 'the'], ['the', 'language'], ['language', 'with'], ['with', 'the'], ['the', 'greatest'], ['greatest', 'growth'], ['growth', 'in'], ['in', 'popularity'], ['popularity', 'over'], ['over', 'the'], ['the', 'year,'], ['year,', 'as'], ['as', 'measured'], ['measured', 'by'], ['by', 'the'], ['the', 'TIOBE'], ['TIOBE', 'index.[157]\\nSee'], ['index.[157]\\nSee', 'also[edit]\\n\\n\\nFree'], ['also[edit]\\n\\n\\nFree', 'software'], ['software', 'portal\\nPython'], ['portal\\nPython', 'programming'], ['programming', 'portal\\n\\n\\n\\nComparison'], ['portal\\n\\n\\n\\nComparison', 'of'], ['of', 'integrated'], ['integrated', 'development'], ['development', 'environments'], ['environments', 'for'], ['for', 'Python\\nComparison'], ['Python\\nComparison', 'of'], ['of', 'programming'], ['programming', 'languages\\nList'], ['languages\\nList', 'of'], ['of', 'programming'], ['programming', 'languages\\nOff-side'], ['languages\\nOff-side', 'rule\\n\\nReferences[edit]\\n\\n\\n^'], ['rule\\n\\nReferences[edit]\\n\\n\\n^', '\"The'], ['\"The', 'History'], ['History', 'of'], ['of', 'Python:'], ['Python:', 'A'], ['A', 'Brief'], ['Brief', 'Timeline'], ['Timeline', 'of'], ['of', 'Python\".'], ['Python\".', 'Blogger.'], ['Blogger.', '20'], ['20', 'January'], ['January', '2009.'], ['2009.', 'Retrieved'], ['Retrieved', '20'], ['20', 'March'], ['March', '2016.\\xa0\\n^'], ['2016.\\xa0\\n^', 'Deily,'], ['Deily,', 'Ned'], ['Ned', '(19'], ['(19', 'December'], ['December', '2017).'], ['2017).', '\"Python'], ['\"Python', '3.6.4'], ['3.6.4', 'is'], ['is', 'now'], ['now', 'available\".'], ['available\".', 'Python'], ['Python', 'Insider.'], ['Insider.', 'The'], ['The', 'Python'], ['Python', 'Core'], ['Core', 'Developers.'], ['Developers.', 'Retrieved'], ['Retrieved', '20'], ['20', 'December'], ['December', '2017.\\xa0\\n^'], ['2017.\\xa0\\n^', 'Peterson,'], ['Peterson,', 'Benjamin'], ['Benjamin', '(16'], ['(16', 'September'], ['September', '2017).'], ['2017).', '\"Python'], ['\"Python', '2.7.14'], ['2.7.14', 'released\".'], ['released\".', 'Python'], ['Python', 'Insider.'], ['Insider.', 'The'], ['The', 'Python'], ['Python', 'Core'], ['Core', 'Developers.'], ['Developers.', 'Retrieved'], ['Retrieved', '17'], ['17', 'September'], ['September', '2017.\\xa0\\n^'], ['2017.\\xa0\\n^', 'File'], ['File', 'extension'], ['extension', '.pyo'], ['.pyo', 'was'], ['was', 'removed'], ['removed', 'in'], ['in', 'Python'], ['Python', '3.5.'], ['3.5.', 'See'], ['See', 'PEP'], ['PEP', '0488\\n^'], ['0488\\n^', 'Holth,'], ['Holth,', 'Moore'], ['Moore', '(30'], ['(30', 'March'], ['March', '2014).'], ['2014).', '\"PEP'], ['\"PEP', '0441'], ['0441', '--'], ['--', 'Improving'], ['Improving', 'Python'], ['Python', 'ZIP'], ['ZIP', 'Application'], ['Application', 'Support\".'], ['Support\".', 'Retrieved'], ['Retrieved', '12'], ['12', 'November'], ['November', '2015.\\xa0\\n^'], ['2015.\\xa0\\n^', 'a'], ['a', 'b'], ['b', '\"Why'], ['\"Why', 'was'], ['was', 'Python'], ['Python', 'created'], ['created', 'in'], ['in', 'the'], ['the', 'first'], ['first', 'place?\".'], ['place?\".', 'General'], ['General', 'Python'], ['Python', 'FAQ.'], ['FAQ.', 'Python'], ['Python', 'Software'], ['Software', 'Foundation.'], ['Foundation.', 'Retrieved'], ['Retrieved', '22'], ['22', 'March'], ['March', '2007.\\xa0\\n^'], ['2007.\\xa0\\n^', 'Kuchling,'], ['Kuchling,', 'Andrew'], ['Andrew', 'M.'], ['M.', '(22'], ['(22', 'December'], ['December', '2006).'], ['2006).', '\"Interview'], ['\"Interview', 'with'], ['with', 'Guido'], ['Guido', 'van'], ['van', 'Rossum'], ['Rossum', '(July'], ['(July', '1998)\".'], ['1998)\".', 'amk.ca.'], ['amk.ca.', 'Archived'], ['Archived', 'from'], ['from', 'the'], ['the', 'original'], ['original', 'on'], ['on', '1'], ['1', 'May'], ['May', '2007.'], ['2007.', 'Retrieved'], ['Retrieved', '12'], ['12', 'March'], ['March', '2012.\\xa0\\n^'], ['2012.\\xa0\\n^', 'van'], ['van', 'Rossum,'], ['Rossum,', 'Guido'], ['Guido', '(1993).'], ['(1993).', '\"An'], ['\"An', 'Introduction'], ['Introduction', 'to'], ['to', 'Python'], ['Python', 'for'], ['for', 'UNIX/C'], ['UNIX/C', 'Programmers\".'], ['Programmers\".', 'Proceedings'], ['Proceedings', 'of'], ['of', 'the'], ['the', 'NLUUG'], ['NLUUG', 'najaarsconferentie'], ['najaarsconferentie', '(Dutch'], ['(Dutch', 'UNIX'], ['UNIX', 'users'], ['users', 'group).'], ['group).', 'even'], ['even', 'though'], ['though', 'the'], ['the', 'design'], ['design', 'of'], ['of', 'C'], ['C', 'is'], ['is', 'far'], ['far', 'from'], ['from', 'ideal,'], ['ideal,', 'its'], ['its', 'influence'], ['influence', 'on'], ['on', 'Python'], ['Python', 'is'], ['is', 'considerable.\\xa0\\n^'], ['considerable.\\xa0\\n^', 'a'], ['a', 'b'], ['b', '\"Classes\".'], ['\"Classes\".', 'The'], ['The', 'Python'], ['Python', 'Tutorial.'], ['Tutorial.', 'Python'], ['Python', 'Software'], ['Software', 'Foundation.'], ['Foundation.', 'Retrieved'], ['Retrieved', '20'], ['20', 'February'], ['February', '2012.'], ['2012.', 'It'], ['It', 'is'], ['is', 'a'], ['a', 'mixture'], ['mixture', 'of'], ['of', 'the'], ['the', 'class'], ['class', 'mechanisms'], ['mechanisms', 'found'], ['found', 'in'], ['in', 'C++'], ['C++', 'and'], ['and', 'Modula-3\\xa0\\n^'], ['Modula-3\\xa0\\n^', 'Lundh,'], ['Lundh,', 'Fredrik.'], ['Fredrik.', '\"Call'], ['\"Call', 'By'], ['By', 'Object\".'], ['Object\".', 'effbot.org.'], ['effbot.org.', 'Retrieved'], ['Retrieved', '21'], ['21', 'November'], ['November', '2017.'], ['2017.', 'replace'], ['replace', '\"CLU\"'], ['\"CLU\"', 'with'], ['with', '\"Python\",'], ['\"Python\",', '\"record\"'], ['\"record\"', 'with'], ['with', '\"instance\",'], ['\"instance\",', 'and'], ['and', '\"procedure\"'], ['\"procedure\"', 'with'], ['with', '\"function'], ['\"function', 'or'], ['or', 'method\",'], ['method\",', 'and'], ['and', 'you'], ['you', 'get'], ['get', 'a'], ['a', 'pretty'], ['pretty', 'accurate'], ['accurate', 'description'], ['description', 'of'], ['of', \"Python's\"], [\"Python's\", 'object'], ['object', 'model.\\xa0\\n^'], ['model.\\xa0\\n^', 'Simionato,'], ['Simionato,', 'Michele.'], ['Michele.', '\"The'], ['\"The', 'Python'], ['Python', '2.3'], ['2.3', 'Method'], ['Method', 'Resolution'], ['Resolution', 'Order\".'], ['Order\".', 'Python'], ['Python', 'Software'], ['Software', 'Foundation.'], ['Foundation.', 'The'], ['The', 'C3'], ['C3', 'method'], ['method', 'itself'], ['itself', 'has'], ['has', 'nothing'], ['nothing', 'to'], ['to', 'do'], ['do', 'with'], ['with', 'Python,'], ['Python,', 'since'], ['since', 'it'], ['it', 'was'], ['was', 'invented'], ['invented', 'by'], ['by', 'people'], ['people', 'working'], ['working', 'on'], ['on', 'Dylan'], ['Dylan', 'and'], ['and', 'it'], ['it', 'is'], ['is', 'described'], ['described', 'in'], ['in', 'a'], ['a', 'paper'], ['paper', 'intended'], ['intended', 'for'], ['for', 'lispers\\xa0\\n^'], ['lispers\\xa0\\n^', 'Kuchling,'], ['Kuchling,', 'A.'], ['A.', 'M.'], ['M.', '\"Functional'], ['\"Functional', 'Programming'], ['Programming', 'HOWTO\".'], ['HOWTO\".', 'Python'], ['Python', 'v2.7.2'], ['v2.7.2', 'documentation.'], ['documentation.', 'Python'], ['Python', 'Software'], ['Software', 'Foundation.'], ['Foundation.', 'Retrieved'], ['Retrieved', '9'], ['9', 'February'], ['February', '2012.\\xa0\\n^'], ['2012.\\xa0\\n^', 'Schemenauer,'], ['Schemenauer,', 'Neil;'], ['Neil;', 'Peters,'], ['Peters,', 'Tim;'], ['Tim;', 'Hetland,'], ['Hetland,', 'Magnus'], ['Magnus', 'Lie'], ['Lie', '(18'], ['(18', 'May'], ['May', '2001).'], ['2001).', '\"PEP'], ['\"PEP', '255\\xa0–'], ['255\\xa0–', 'Simple'], ['Simple', 'Generators\".'], ['Generators\".', 'Python'], ['Python', 'Enhancement'], ['Enhancement', 'Proposals.'], ['Proposals.', 'Python'], ['Python', 'Software'], ['Software', 'Foundation.'], ['Foundation.', 'Retrieved'], ['Retrieved', '9'], ['9', 'February'], ['February', '2012.\\xa0\\n^'], ['2012.\\xa0\\n^', 'Smith,'], ['Smith,', 'Kevin'], ['Kevin', 'D.;'], ['D.;', 'Jewett,'], ['Jewett,', 'Jim'], ['Jim', 'J.;'], ['J.;', 'Montanaro,'], ['Montanaro,', 'Skip;'], ['Skip;', 'Baxter,'], ['Baxter,', 'Anthony'], ['Anthony', '(2'], ['(2', 'September'], ['September', '2004).'], ['2004).', '\"PEP'], ['\"PEP', '318\\xa0–'], ['318\\xa0–', 'Decorators'], ['Decorators', 'for'], ['for', 'Functions'], ['Functions', 'and'], ['and', 'Methods\".'], ['Methods\".', 'Python'], ['Python', 'Enhancement'], ['Enhancement', 'Proposals.'], ['Proposals.', 'Python'], ['Python', 'Software'], ['Software', 'Foundation.'], ['Foundation.', 'Retrieved'], ['Retrieved', '24'], ['24', 'February'], ['February', '2012.\\xa0\\n^'], ['2012.\\xa0\\n^', '\"More'], ['\"More', 'Control'], ['Control', 'Flow'], ['Flow', 'Tools\".'], ['Tools\".', 'Python'], ['Python', '3'], ['3', 'documentation.'], ['documentation.', 'Python'], ['Python', 'Software'], ['Software', 'Foundation.'], ['Foundation.', 'Retrieved'], ['Retrieved', '24'], ['24', 'July'], ['July', '2015.\\xa0\\n^'], ['2015.\\xa0\\n^', 'Hubinger,'], ['Hubinger,', 'Evan.'], ['Evan.', '\"Coconut'], ['\"Coconut', 'Programming'], ['Programming', 'Language\".'], ['Language\".', 'coconut-lang.org.'], ['coconut-lang.org.', 'Retrieved'], ['Retrieved', '18'], ['18', 'August'], ['August', '2017.\\xa0\\n^'], ['2017.\\xa0\\n^', '\"CoffeeScript'], ['\"CoffeeScript', 'borrows'], ['borrows', 'chained'], ['chained', 'comparisons'], ['comparisons', 'from'], ['from', 'Python\".\\xa0\\n^'], ['Python\".\\xa0\\n^', '\"Genie'], ['\"Genie', 'Language'], ['Language', '-'], ['-', 'A'], ['A', 'brief'], ['brief', 'guide\".'], ['guide\".', 'Retrieved'], ['Retrieved', '28'], ['28', 'December'], ['December', '2015.\\xa0\\n^'], ['2015.\\xa0\\n^', '\"Perl'], ['\"Perl', 'and'], ['and', 'Python'], ['Python', 'influences'], ['influences', 'in'], ['in', 'JavaScript\".'], ['JavaScript\".', 'www.2ality.com.'], ['www.2ality.com.', '24'], ['24', 'February'], ['February', '2013.'], ['2013.', 'Retrieved'], ['Retrieved', '15'], ['15', 'May'], ['May', '2015.\\xa0\\n^'], ['2015.\\xa0\\n^', 'Rauschmayer,'], ['Rauschmayer,', 'Axel.'], ['Axel.', '\"Chapter'], ['\"Chapter', '3:'], ['3:', 'The'], ['The', 'Nature'], ['Nature', 'of'], ['of', 'JavaScript;'], ['JavaScript;', 'Influences\".'], ['Influences\".', \"O'Reilly,\"], [\"O'Reilly,\", 'Speaking'], ['Speaking', 'JavaScript.'], ['JavaScript.', 'Retrieved'], ['Retrieved', '15'], ['15', 'May'], ['May', '2015.\\xa0\\n^'], ['2015.\\xa0\\n^', 'a'], ['a', 'b'], ['b', '\"Why'], ['\"Why', 'We'], ['We', 'Created'], ['Created', 'Julia\".'], ['Julia\".', 'Julia'], ['Julia', 'website.'], ['website.', 'February'], ['February', '2012.'], ['2012.', 'Retrieved'], ['Retrieved', '5'], ['5', 'June'], ['June', '2014.\\xa0\\n^'], ['2014.\\xa0\\n^', 'Ring'], ['Ring', 'Team'], ['Team', '(4'], ['(4', 'December'], ['December', '2017).'], ['2017).', '\"Ring'], ['\"Ring', 'and'], ['and', 'other'], ['other', 'languages\".'], ['languages\".', 'ring-lang.net.'], ['ring-lang.net.', 'ring-lang.\\xa0\\n^'], ['ring-lang.\\xa0\\n^', 'Bini,'], ['Bini,', 'Ola'], ['Ola', '(2007).'], ['(2007).', 'Practical'], ['Practical', 'JRuby'], ['JRuby', 'on'], ['on', 'Rails'], ['Rails', 'Web'], ['Web', '2.0'], ['2.0', 'Projects:'], ['Projects:', 'bringing'], ['bringing', 'Ruby'], ['Ruby', 'on'], ['on', 'Rails'], ['Rails', 'to'], ['to', 'the'], ['the', 'Java'], ['Java', 'platform.'], ['platform.', 'Berkeley:'], ['Berkeley:', 'APress.'], ['APress.', 'p.\\xa03.'], ['p.\\xa03.', 'ISBN\\xa0978-1-59059-881-8.\\xa0\\n^'], ['ISBN\\xa0978-1-59059-881-8.\\xa0\\n^', 'Lattner,'], ['Lattner,', 'Chris'], ['Chris', '(3'], ['(3', 'June'], ['June', '2014).'], ['2014).', '\"Chris'], ['\"Chris', \"Lattner's\"], [\"Lattner's\", 'Homepage\".'], ['Homepage\".', 'Chris'], ['Chris', 'Lattner.'], ['Lattner.', 'Retrieved'], ['Retrieved', '3'], ['3', 'June'], ['June', '2014.'], ['2014.', 'The'], ['The', 'Swift'], ['Swift', 'language'], ['language', 'is'], ['is', 'the'], ['the', 'product'], ['product', 'of'], ['of', 'tireless'], ['tireless', 'effort'], ['effort', 'from'], ['from', 'a'], ['a', 'team'], ['team', 'of'], ['of', 'language'], ['language', 'experts,'], ['experts,', 'documentation'], ['documentation', 'gurus,'], ['gurus,', 'compiler'], ['compiler', 'optimization'], ['optimization', 'ninjas,'], ['ninjas,', 'and'], ['and', 'an'], ['an', 'incredibly'], ['incredibly', 'important'], ['important', 'internal'], ['internal', 'dogfooding'], ['dogfooding', 'group'], ['group', 'who'], ['who', 'provided'], ['provided', 'feedback'], ['feedback', 'to'], ['to', 'help'], ['help', 'refine'], ['refine', 'and'], ['and', 'battle-test'], ['battle-test', 'ideas.'], ['ideas.', 'Of'], ['Of', 'course,'], ['course,', 'it'], ['it', 'also'], ['also', 'greatly'], ['greatly', 'benefited'], ['benefited', 'from'], ['from', 'the'], ['the', 'experiences'], ['experiences', 'hard-won'], ['hard-won', 'by'], ['by', 'many'], ['many', 'other'], ['other', 'languages'], ['languages', 'in'], ['in', 'the'], ['the', 'field,'], ['field,', 'drawing'], ['drawing', 'ideas'], ['ideas', 'from'], ['from', 'Objective-C,'], ['Objective-C,', 'Rust,'], ['Rust,', 'Haskell,'], ['Haskell,', 'Ruby,'], ['Ruby,', 'Python,'], ['Python,', 'C#,'], ['C#,', 'CLU,'], ['CLU,', 'and'], ['and', 'far'], ['far', 'too'], ['too', 'many'], ['many', 'others'], ['others', 'to'], ['to', 'list.\\xa0\\n^'], ['list.\\xa0\\n^', 'Summerfield,'], ['Summerfield,', 'Mark.'], ['Mark.', 'Rapid'], ['Rapid', 'GUI'], ['GUI', 'Programming'], ['Programming', 'with'], ['with', 'Python'], ['Python', 'and'], ['and', 'Qt.'], ['Qt.', 'Python'], ['Python', 'is'], ['is', 'a'], ['a', 'very'], ['very', 'expressive'], ['expressive', 'language,'], ['language,', 'which'], ['which', 'means'], ['means', 'that'], ['that', 'we'], ['we', 'can'], ['can', 'usually'], ['usually', 'write'], ['write', 'far'], ['far', 'fewer'], ['fewer', 'lines'], ['lines', 'of'], ['of', 'Python'], ['Python', 'code'], ['code', 'than'], ['than', 'would'], ['would', 'be'], ['be', 'required'], ['required', 'for'], ['for', 'an'], ['an', 'equivalent'], ['equivalent', 'application'], ['application', 'written'], ['written', 'in,'], ['in,', 'say,'], ['say,', 'C++'], ['C++', 'or'], ['or', 'Java\\xa0\\n^'], ['Java\\xa0\\n^', 'McConnell,'], ['McConnell,', 'Steve'], ['Steve', '(30'], ['(30', 'November'], ['November', '2009).'], ['2009).', 'Code'], ['Code', 'Complete,'], ['Complete,', 'p.'], ['p.', '100.'], ['100.', 'ISBN\\xa09780735636972.\\xa0\\n^'], ['ISBN\\xa09780735636972.\\xa0\\n^', 'Kuhlman,'], ['Kuhlman,', 'Dave.'], ['Dave.', '\"A'], ['\"A', 'Python'], ['Python', 'Book:'], ['Book:', 'Beginning'], ['Beginning', 'Python,'], ['Python,', 'Advanced'], ['Advanced', 'Python,'], ['Python,', 'and'], ['and', 'Python'], ['Python', 'Exercises\".\\xa0\\n^'], ['Exercises\".\\xa0\\n^', '\"About'], ['\"About', 'Python\".'], ['Python\".', 'Python'], ['Python', 'Software'], ['Software', 'Foundation.'], ['Foundation.', 'Retrieved'], ['Retrieved', '24'], ['24', 'April'], ['April', '2012.\\xa0,'], ['2012.\\xa0,', 'second'], ['second', 'section'], ['section', '\"Fans'], ['\"Fans', 'of'], ['of', 'Python'], ['Python', 'use'], ['use', 'the'], ['the', 'phrase'], ['phrase', '\"batteries'], ['\"batteries', 'included\"'], ['included\"', 'to'], ['to', 'describe'], ['describe', 'the'], ['the', 'standard'], ['standard', 'library,'], ['library,', 'which'], ['which', 'covers'], ['covers', 'everything'], ['everything', 'from'], ['from', 'asynchronous'], ['asynchronous', 'processing'], ['processing', 'to'], ['to', 'zip'], ['zip', 'files.\"\\n^'], ['files.\"\\n^', '\"History'], ['\"History', 'and'], ['and', 'License\".'], ['License\".', 'Retrieved'], ['Retrieved', '5'], ['5', 'December'], ['December', '2016.\\xa0'], ['2016.\\xa0', '\"All'], ['\"All', 'Python'], ['Python', 'releases'], ['releases', 'are'], ['are', 'Open'], ['Open', 'Source\"\\n^'], ['Source\"\\n^', 'a'], ['a', 'b'], ['b', 'Venners,'], ['Venners,', 'Bill'], ['Bill', '(13'], ['(13', 'January'], ['January', '2003).'], ['2003).', '\"The'], ['\"The', 'Making'], ['Making', 'of'], ['of', 'Python\".'], ['Python\".', 'Artima'], ['Artima', 'Developer.'], ['Developer.', 'Artima.'], ['Artima.', 'Retrieved'], ['Retrieved', '22'], ['22', 'March'], ['March', '2007.\\xa0\\n^'], ['2007.\\xa0\\n^', 'van'], ['van', 'Rossum,'], ['Rossum,', 'Guido'], ['Guido', '(20'], ['(20', 'January'], ['January', '2009).'], ['2009).', '\"A'], ['\"A', 'Brief'], ['Brief', 'Timeline'], ['Timeline', 'of'], ['of', 'Python\".'], ['Python\".', 'The'], ['The', 'History'], ['History', 'of'], ['of', 'Python.'], ['Python.', 'Google.'], ['Google.', 'Retrieved'], ['Retrieved', '20'], ['20', 'January'], ['January', '2009.\\xa0\\n^'], ['2009.\\xa0\\n^', 'van'], ['van', 'Rossum,'], ['Rossum,', 'Guido'], ['Guido', '(29'], ['(29', 'August'], ['August', '2000).'], ['2000).', '\"SETL'], ['\"SETL', '(was:'], ['(was:', 'Lukewarm'], ['Lukewarm', 'about'], ['about', 'range'], ['range', 'literals)\".'], ['literals)\".', 'Python-Dev'], ['Python-Dev', '(Mailing'], ['(Mailing', 'list).'], ['list).', 'Retrieved'], ['Retrieved', '13'], ['13', 'March'], ['March', '2011.\\xa0\\n^'], ['2011.\\xa0\\n^', 'van'], ['van', 'Rossum,'], ['Rossum,', 'Guido'], ['Guido', '(1996).'], ['(1996).', '\"Foreword'], ['\"Foreword', 'for'], ['for', '\"Programming'], ['\"Programming', 'Python\"'], ['Python\"', '(1st'], ['(1st', 'ed.)\".'], ['ed.)\".', 'Retrieved'], ['Retrieved', '10'], ['10', 'July'], ['July', '2014.\\xa0\\n^'], ['2014.\\xa0\\n^', 'Kuchling,'], ['Kuchling,', 'A.'], ['A.', 'M.;'], ['M.;', 'Zadka,'], ['Zadka,', 'Moshe'], ['Moshe', '(16'], ['(16', 'October'], ['October', '2000).'], ['2000).', '\"What\\'s'], ['\"What\\'s', 'New'], ['New', 'in'], ['in', 'Python'], ['Python', '2.0\".'], ['2.0\".', 'Python'], ['Python', 'Software'], ['Software', 'Foundation.'], ['Foundation.', 'Retrieved'], ['Retrieved', '11'], ['11', 'February'], ['February', '2012.\\xa0\\n^'], ['2012.\\xa0\\n^', '\"Python'], ['\"Python', '3.0'], ['3.0', 'Release\".'], ['Release\".', 'Python'], ['Python', 'Software'], ['Software', 'Foundation.'], ['Foundation.', 'Retrieved'], ['Retrieved', '8'], ['8', 'July'], ['July', '2009.\\xa0\\n^'], ['2009.\\xa0\\n^', 'van'], ['van', 'Rossum,'], ['Rossum,', 'Guido'], ['Guido', '(5'], ['(5', 'April'], ['April', '2006).'], ['2006).', '\"PEP'], ['\"PEP', '3000\\xa0–'], ['3000\\xa0–', 'Python'], ['Python', '3000\".'], ['3000\".', 'Python'], ['Python', 'Enhancement'], ['Enhancement', 'Proposals.'], ['Proposals.', 'Python'], ['Python', 'Software'], ['Software', 'Foundation.'], ['Foundation.', 'Retrieved'], ['Retrieved', '27'], ['27', 'June'], ['June', '2009.\\xa0\\n^'], ['2009.\\xa0\\n^', '\"PEP'], ['\"PEP', '373'], ['373', '--'], ['--', 'Python'], ['Python', '2.7'], ['2.7', 'Release'], ['Release', 'Schedule\".'], ['Schedule\".', 'python.org.'], ['python.org.', 'Retrieved'], ['Retrieved', '9'], ['9', 'January'], ['January', '2017.\\xa0\\n^'], ['2017.\\xa0\\n^', '\"PEP'], ['\"PEP', '466'], ['466', '--'], ['--', 'Network'], ['Network', 'Security'], ['Security', 'Enhancements'], ['Enhancements', 'for'], ['for', 'Python'], ['Python', '2.7.x\".'], ['2.7.x\".', 'python.org.'], ['python.org.', 'Retrieved'], ['Retrieved', '9'], ['9', 'January'], ['January', '2017.\\xa0\\n^'], ['2017.\\xa0\\n^', 'Claburn,'], ['Claburn,', 'Thomas'], ['Thomas', '(5'], ['(5', 'January'], ['January', '2017).'], ['2017).', '\"Google\\'s'], ['\"Google\\'s', 'Grumpy'], ['Grumpy', 'code'], ['code', 'makes'], ['makes', 'Python'], ['Python', 'Go\".'], ['Go\".', 'Retrieved'], ['Retrieved', '9'], ['9', 'January'], ['January', '2017.\\xa0\\n^'], ['2017.\\xa0\\n^', '\"Google'], ['\"Google', 'Open'], ['Open', 'Source'], ['Source', 'Blog:'], ['Blog:', 'Grumpy:'], ['Grumpy:', 'Go'], ['Go', 'running'], ['running', 'Python!\".'], ['Python!\".', '4'], ['4', 'January'], ['January', '2017.'], ['2017.', 'Retrieved'], ['Retrieved', '7'], ['7', 'March'], ['March', '2017.\\xa0\\n^'], ['2017.\\xa0\\n^', 'The'], ['The', 'Cain'], ['Cain', 'Gang'], ['Gang', 'Ltd.'], ['Ltd.', '\"Python'], ['\"Python', 'Metaclasses:'], ['Metaclasses:', 'Who?'], ['Who?', 'Why?'], ['Why?', 'When?\"'], ['When?\"', '(PDF).'], ['(PDF).', 'Archived'], ['Archived', 'from'], ['from', 'the'], ['the', 'original'], ['original', '(PDF)'], ['(PDF)', 'on'], ['on', '10'], ['10', 'December'], ['December', '2009.'], ['2009.', 'Retrieved'], ['Retrieved', '27'], ['27', 'June'], ['June', '2009.\\xa0\\n^'], ['2009.\\xa0\\n^', '\"3.3.'], ['\"3.3.', 'Special'], ['Special', 'method'], ['method', 'names\".'], ['names\".', 'The'], ['The', 'Python'], ['Python', 'Language'], ['Language', 'Reference.'], ['Reference.', 'Python'], ['Python', 'Software'], ['Software', 'Foundation.'], ['Foundation.', 'Retrieved'], ['Retrieved', '27'], ['27', 'June'], ['June', '2009.\\xa0\\n^'], ['2009.\\xa0\\n^', '\"PyDBC:'], ['\"PyDBC:', 'method'], ['method', 'preconditions,'], ['preconditions,', 'method'], ['method', 'postconditions'], ['postconditions', 'and'], ['and', 'class'], ['class', 'invariants'], ['invariants', 'for'], ['for', 'Python\".'], ['Python\".', 'Retrieved'], ['Retrieved', '24'], ['24', 'September'], ['September', '2011.\\xa0\\n^'], ['2011.\\xa0\\n^', '\"Contracts'], ['\"Contracts', 'for'], ['for', 'Python\".'], ['Python\".', 'Retrieved'], ['Retrieved', '24'], ['24', 'September'], ['September', '2011.\\xa0\\n^'], ['2011.\\xa0\\n^', '\"PyDatalog\".'], ['\"PyDatalog\".', 'Retrieved'], ['Retrieved', '22'], ['22', 'July'], ['July', '2012.\\xa0\\n^'], ['2012.\\xa0\\n^', 'a'], ['a', 'b'], ['b', 'Hettinger,'], ['Hettinger,', 'Raymond'], ['Raymond', '(30'], ['(30', 'January'], ['January', '2002).'], ['2002).', '\"PEP'], ['\"PEP', '289\\xa0–'], ['289\\xa0–', 'Generator'], ['Generator', 'Expressions\".'], ['Expressions\".', 'Python'], ['Python', 'Enhancement'], ['Enhancement', 'Proposals.'], ['Proposals.', 'Python'], ['Python', 'Software'], ['Software', 'Foundation.'], ['Foundation.', 'Retrieved'], ['Retrieved', '19'], ['19', 'February'], ['February', '2012.\\xa0\\n^'], ['2012.\\xa0\\n^', '\"6.5'], ['\"6.5', 'itertools\\xa0–'], ['itertools\\xa0–', 'Functions'], ['Functions', 'creating'], ['creating', 'iterators'], ['iterators', 'for'], ['for', 'efficient'], ['efficient', 'looping\".'], ['looping\".', 'Docs.python.org.'], ['Docs.python.org.', 'Retrieved'], ['Retrieved', '22'], ['22', 'November'], ['November', '2016.\\xa0\\n^'], ['2016.\\xa0\\n^', 'a'], ['a', 'b'], ['b', 'Peters,'], ['Peters,', 'Tim'], ['Tim', '(19'], ['(19', 'August'], ['August', '2004).'], ['2004).', '\"PEP'], ['\"PEP', '20\\xa0–'], ['20\\xa0–', 'The'], ['The', 'Zen'], ['Zen', 'of'], ['of', 'Python\".'], ['Python\".', 'Python'], ['Python', 'Enhancement'], ['Enhancement', 'Proposals.'], ['Proposals.', 'Python'], ['Python', 'Software'], ['Software', 'Foundation.'], ['Foundation.', 'Retrieved'], ['Retrieved', '24'], ['24', 'November'], ['November', '2008.\\xa0\\n^'], ['2008.\\xa0\\n^', 'Martelli,'], ['Martelli,', 'Alex;'], ['Alex;', 'Ravenscroft,'], ['Ravenscroft,', 'Anna;'], ['Anna;', 'Ascher,'], ['Ascher,', 'David'], ['David', '(2005).'], ['(2005).', 'Python'], ['Python', 'Cookbook,'], ['Cookbook,', '2nd'], ['2nd', 'Edition.'], ['Edition.', \"O'Reilly\"], [\"O'Reilly\", 'Media.'], ['Media.', 'p.\\xa0230.'], ['p.\\xa0230.', 'ISBN\\xa0978-0-596-00797-3.\\xa0\\n^'], ['ISBN\\xa0978-0-596-00797-3.\\xa0\\n^', '\"Python'], ['\"Python', 'Culture\".\\xa0\\n^'], ['Culture\".\\xa0\\n^', '\"General'], ['\"General', 'Python'], ['Python', 'FAQ\".'], ['FAQ\".', 'Python'], ['Python', 'v2.7.3'], ['v2.7.3', 'documentation.'], ['documentation.', 'Docs.python.org.'], ['Docs.python.org.', 'Retrieved'], ['Retrieved', '3'], ['3', 'December'], ['December', '2012.\\xa0\\n^'], ['2012.\\xa0\\n^', '\"15'], ['\"15', 'Ways'], ['Ways', 'Python'], ['Python', 'Is'], ['Is', 'a'], ['a', 'Powerful'], ['Powerful', 'Force'], ['Force', 'on'], ['on', 'the'], ['the', 'Web\".\\xa0\\n^'], ['Web\".\\xa0\\n^', '\"pprint'], ['\"pprint', '-'], ['-', 'Data'], ['Data', 'pretty'], ['pretty', 'printer'], ['printer', '-'], ['-', 'Python'], ['Python', 'Documentation\".\\xa0\\n^'], ['Documentation\".\\xa0\\n^', 'Goodger,'], ['Goodger,', 'David.'], ['David.', '\"Code'], ['\"Code', 'Like'], ['Like', 'a'], ['a', 'Pythonista:'], ['Pythonista:', 'Idiomatic'], ['Idiomatic', 'Python\".\\xa0\\n^'], ['Python\".\\xa0\\n^', '\"How'], ['\"How', 'to'], ['to', 'think'], ['think', 'like'], ['like', 'a'], ['a', 'Pythonista\".\\xa0\\n^'], ['Pythonista\".\\xa0\\n^', '\"Is'], ['\"Is', 'Python'], ['Python', 'a'], ['a', 'good'], ['good', 'language'], ['language', 'for'], ['for', 'beginning'], ['beginning', 'programmers?\".'], ['programmers?\".', 'General'], ['General', 'Python'], ['Python', 'FAQ.'], ['FAQ.', 'Python'], ['Python', 'Software'], ['Software', 'Foundation.'], ['Foundation.', 'Retrieved'], ['Retrieved', '21'], ['21', 'March'], ['March', '2007.\\xa0\\n^'], ['2007.\\xa0\\n^', '\"Myths'], ['\"Myths', 'about'], ['about', 'indentation'], ['indentation', 'in'], ['in', 'Python\".'], ['Python\".', 'Secnetix.de.'], ['Secnetix.de.', 'Retrieved'], ['Retrieved', '19'], ['19', 'April'], ['April', '2011.\\xa0\\n^'], ['2011.\\xa0\\n^', 'Sweigart,'], ['Sweigart,', 'Al'], ['Al', '(2010).'], ['(2010).', '\"Appendix'], ['\"Appendix', 'A:'], ['A:', 'Differences'], ['Differences', 'Between'], ['Between', 'Python'], ['Python', '2'], ['2', 'and'], ['and', '3\".'], ['3\".', 'Invent'], ['Invent', 'Your'], ['Your', 'Own'], ['Own', 'Computer'], ['Computer', 'Games'], ['Games', 'with'], ['with', 'Python'], ['Python', '(2'], ['(2', 'ed.).'], ['ed.).', 'ISBN\\xa0978-0-9821060-1-3.'], ['ISBN\\xa0978-0-9821060-1-3.', 'Retrieved'], ['Retrieved', '20'], ['20', 'February'], ['February', '2014.\\xa0\\n^'], ['2014.\\xa0\\n^', 'van'], ['van', 'Rossum,'], ['Rossum,', 'Guido'], ['Guido', '(22'], ['(22', 'April'], ['April', '2009).'], ['2009).', '\"Tail'], ['\"Tail', 'Recursion'], ['Recursion', 'Elimination\".'], ['Elimination\".', 'Neopythonic.blogspot.be.'], ['Neopythonic.blogspot.be.', 'Retrieved'], ['Retrieved', '3'], ['3', 'December'], ['December', '2012.\\xa0\\n^'], ['2012.\\xa0\\n^', 'van'], ['van', 'Rossum,'], ['Rossum,', 'Guido'], ['Guido', '(9'], ['(9', 'February'], ['February', '2006).'], ['2006).', '\"Language'], ['\"Language', 'Design'], ['Design', 'Is'], ['Is', 'Not'], ['Not', 'Just'], ['Just', 'Solving'], ['Solving', 'Puzzles\".'], ['Puzzles\".', 'Artima'], ['Artima', 'forums.'], ['forums.', 'Artima.'], ['Artima.', 'Retrieved'], ['Retrieved', '21'], ['21', 'March'], ['March', '2007.\\xa0\\n^'], ['2007.\\xa0\\n^', 'van'], ['van', 'Rossum,'], ['Rossum,', 'Guido;'], ['Guido;', 'Eby,'], ['Eby,', 'Phillip'], ['Phillip', 'J.'], ['J.', '(10'], ['(10', 'May'], ['May', '2005).'], ['2005).', '\"PEP'], ['\"PEP', '342\\xa0–'], ['342\\xa0–', 'Coroutines'], ['Coroutines', 'via'], ['via', 'Enhanced'], ['Enhanced', 'Generators\".'], ['Generators\".', 'Python'], ['Python', 'Enhancement'], ['Enhancement', 'Proposals.'], ['Proposals.', 'Python'], ['Python', 'Software'], ['Software', 'Foundation.'], ['Foundation.', 'Retrieved'], ['Retrieved', '19'], ['19', 'February'], ['February', '2012.\\xa0\\n^'], ['2012.\\xa0\\n^', '\"PEP'], ['\"PEP', '380\".'], ['380\".', 'Python.org.'], ['Python.org.', 'Retrieved'], ['Retrieved', '3'], ['3', 'December'], ['December', '2012.\\xa0\\n^'], ['2012.\\xa0\\n^', '\"division\".'], ['\"division\".', 'python.org.\\xa0\\n^'], ['python.org.\\xa0\\n^', '\"PEP'], ['\"PEP', '0465'], ['0465', '--'], ['--', 'A'], ['A', 'dedicated'], ['dedicated', 'infix'], ['infix', 'operator'], ['operator', 'for'], ['for', 'matrix'], ['matrix', 'multiplication\".'], ['multiplication\".', 'python.org.'], ['python.org.', 'Retrieved'], ['Retrieved', '1'], ['1', 'January'], ['January', '2016.\\xa0\\n^'], ['2016.\\xa0\\n^', '\"Python'], ['\"Python', '3.5.1'], ['3.5.1', 'Release'], ['Release', 'and'], ['and', 'Changelog\".'], ['Changelog\".', 'python.org.'], ['python.org.', 'Retrieved'], ['Retrieved', '1'], ['1', 'January'], ['January', '2016.\\xa0\\n^'], ['2016.\\xa0\\n^', '\"Chapter'], ['\"Chapter', '15.'], ['15.', 'Expressions'], ['Expressions', '-'], ['-', '15.21.1.'], ['15.21.1.', 'Numerical'], ['Numerical', 'Equality'], ['Equality', 'Operators'], ['Operators', '=='], ['==', 'and\\xa0!=\".'], ['and\\xa0!=\".', 'Oracle'], ['Oracle', 'Corporation.'], ['Corporation.', 'Retrieved'], ['Retrieved', '28'], ['28', 'August'], ['August', '2016.\\xa0\\n^'], ['2016.\\xa0\\n^', '\"Chapter'], ['\"Chapter', '15.'], ['15.', 'Expressions'], ['Expressions', '-'], ['-', '15.21.3.'], ['15.21.3.', 'Reference'], ['Reference', 'Equality'], ['Equality', 'Operators'], ['Operators', '=='], ['==', 'and\\xa0!=\".'], ['and\\xa0!=\".', 'Oracle'], ['Oracle', 'Corporation.'], ['Corporation.', 'Retrieved'], ['Retrieved', '28'], ['28', 'August'], ['August', '2016.\\xa0\\n^'], ['2016.\\xa0\\n^', 'van'], ['van', 'Rossum,'], ['Rossum,', 'Guido;'], ['Guido;', 'Hettinger,'], ['Hettinger,', 'Raymond'], ['Raymond', '(7'], ['(7', 'February'], ['February', '2003).'], ['2003).', '\"PEP'], ['\"PEP', '308\\xa0–'], ['308\\xa0–', 'Conditional'], ['Conditional', 'Expressions\".'], ['Expressions\".', 'Python'], ['Python', 'Enhancement'], ['Enhancement', 'Proposals.'], ['Proposals.', 'Python'], ['Python', 'Software'], ['Software', 'Foundation.'], ['Foundation.', 'Retrieved'], ['Retrieved', '13'], ['13', 'July'], ['July', '2011.\\xa0\\n^'], ['2011.\\xa0\\n^', '\"4.'], ['\"4.', 'Built-in'], ['Built-in', 'Types'], ['Types', '—'], ['—', 'Python'], ['Python', '3.6.3rc1'], ['3.6.3rc1', 'documentation\".'], ['documentation\".', 'python.org.'], ['python.org.', 'Retrieved'], ['Retrieved', '1'], ['1', 'October'], ['October', '2017.\\xa0\\n^'], ['2017.\\xa0\\n^', 'a'], ['a', 'b'], ['b', '\"PEP'], ['\"PEP', '498'], ['498', '--'], ['--', 'Literal'], ['Literal', 'String'], ['String', 'Interpolation\".'], ['Interpolation\".', 'python.org.'], ['python.org.', 'Retrieved'], ['Retrieved', '8'], ['8', 'March'], ['March', '2017.\\xa0\\n^'], ['2017.\\xa0\\n^', '\"Why'], ['\"Why', 'must'], ['must', \"'self'\"], [\"'self'\", 'be'], ['be', 'used'], ['used', 'explicitly'], ['explicitly', 'in'], ['in', 'method'], ['method', 'definitions'], ['definitions', 'and'], ['and', 'calls?\".'], ['calls?\".', 'Design'], ['Design', 'and'], ['and', 'History'], ['History', 'FAQ.'], ['FAQ.', 'Python'], ['Python', 'Software'], ['Software', 'Foundation.'], ['Foundation.', 'Retrieved'], ['Retrieved', '19'], ['19', 'February'], ['February', '2012.\\xa0\\n^'], ['2012.\\xa0\\n^', '\"The'], ['\"The', 'Python'], ['Python', 'Language'], ['Language', 'Reference,'], ['Reference,', 'section'], ['section', '3.3.'], ['3.3.', 'New-style'], ['New-style', 'and'], ['and', 'classic'], ['classic', 'classes,'], ['classes,', 'for'], ['for', 'release'], ['release', '2.7.1\".'], ['2.7.1\".', 'Retrieved'], ['Retrieved', '12'], ['12', 'January'], ['January', '2011.\\xa0\\n^'], ['2011.\\xa0\\n^', '\"Type'], ['\"Type', 'hinting'], ['hinting', 'for'], ['for', 'Python\".'], ['Python\".', 'LWN.net.'], ['LWN.net.', '24'], ['24', 'December'], ['December', '2014.'], ['2014.', 'Retrieved'], ['Retrieved', '5'], ['5', 'May'], ['May', '2015.\\xa0\\n^'], ['2015.\\xa0\\n^', '\"mypy'], ['\"mypy', '-'], ['-', 'Optional'], ['Optional', 'Static'], ['Static', 'Typing'], ['Typing', 'for'], ['for', 'Python\".'], ['Python\".', 'Retrieved'], ['Retrieved', '28'], ['28', 'January'], ['January', '2017.\\xa0\\n^'], ['2017.\\xa0\\n^', 'Zadka,'], ['Zadka,', 'Moshe;'], ['Moshe;', 'van'], ['van', 'Rossum,'], ['Rossum,', 'Guido'], ['Guido', '(11'], ['(11', 'March'], ['March', '2001).'], ['2001).', '\"PEP'], ['\"PEP', '237\\xa0–'], ['237\\xa0–', 'Unifying'], ['Unifying', 'Long'], ['Long', 'Integers'], ['Integers', 'and'], ['and', 'Integers\".'], ['Integers\".', 'Python'], ['Python', 'Enhancement'], ['Enhancement', 'Proposals.'], ['Proposals.', 'Python'], ['Python', 'Software'], ['Software', 'Foundation.'], ['Foundation.', 'Retrieved'], ['Retrieved', '24'], ['24', 'September'], ['September', '2011.\\xa0\\n^'], ['2011.\\xa0\\n^', '\"PEP'], ['\"PEP', '465'], ['465', '--'], ['--', 'A'], ['A', 'dedicated'], ['dedicated', 'infix'], ['infix', 'operator'], ['operator', 'for'], ['for', 'matrix'], ['matrix', 'multiplication\".'], ['multiplication\".', 'python.org.\\xa0\\n^'], ['python.org.\\xa0\\n^', '\"The'], ['\"The', 'tilde'], ['tilde', 'operator'], ['operator', 'in'], ['in', 'Python'], ['Python', '-'], ['-', 'Stackoverflow\".'], ['Stackoverflow\".', 'stackoverflow.com.\\xa0\\n^'], ['stackoverflow.com.\\xa0\\n^', '\"BitwiseOperators'], ['\"BitwiseOperators', '-'], ['-', 'Python'], ['Python', 'Wiki\".'], ['Wiki\".', 'wiki.python.org.\\xa0\\n^'], ['wiki.python.org.\\xa0\\n^', 'Zadka,'], ['Zadka,', 'Moshe;'], ['Moshe;', 'van'], ['van', 'Rossum,'], ['Rossum,', 'Guido'], ['Guido', '(11'], ['(11', 'March'], ['March', '2001).'], ['2001).', '\"PEP'], ['\"PEP', '238\\xa0–'], ['238\\xa0–', 'Changing'], ['Changing', 'the'], ['the', 'Division'], ['Division', 'Operator\".'], ['Operator\".', 'Python'], ['Python', 'Enhancement'], ['Enhancement', 'Proposals.'], ['Proposals.', 'Python'], ['Python', 'Software'], ['Software', 'Foundation.'], ['Foundation.', 'Retrieved'], ['Retrieved', '23'], ['23', 'October'], ['October', '2013.\\xa0\\n^'], ['2013.\\xa0\\n^', '\"Why'], ['\"Why', \"Python's\"], [\"Python's\", 'Integer'], ['Integer', 'Division'], ['Division', 'Floors\".'], ['Floors\".', 'Retrieved'], ['Retrieved', '25'], ['25', 'August'], ['August', '2010.\\xa0\\n^'], ['2010.\\xa0\\n^', '\"round\",'], ['\"round\",', 'The'], ['The', 'Python'], ['Python', 'standard'], ['standard', 'library,'], ['library,', 'release'], ['release', '2.7,'], ['2.7,', '§2:'], ['§2:', 'Built-in'], ['Built-in', 'functions,'], ['functions,', 'retrieved'], ['retrieved', '14'], ['14', 'August'], ['August', '2011\\xa0\\n^'], ['2011\\xa0\\n^', '\"round\",'], ['\"round\",', 'The'], ['The', 'Python'], ['Python', 'standard'], ['standard', 'library,'], ['library,', 'release'], ['release', '3.2,'], ['3.2,', '§2:'], ['§2:', 'Built-in'], ['Built-in', 'functions,'], ['functions,', 'retrieved'], ['retrieved', '14'], ['14', 'August'], ['August', '2011\\xa0\\n^'], ['2011\\xa0\\n^', 'Python'], ['Python', 'Essential'], ['Essential', 'Reference,'], ['Reference,', 'David'], ['David', 'M.'], ['M.', 'Beazley\\n^'], ['Beazley\\n^', '\"Built-in'], ['\"Built-in', 'Type\".'], ['Type\".', 'docs.python.org.\\xa0\\n^'], ['docs.python.org.\\xa0\\n^', 'Batista,'], ['Batista,', 'Facundo.'], ['Facundo.', '\"PEP'], ['\"PEP', '0327'], ['0327', '--'], ['--', 'Decimal'], ['Decimal', 'Data'], ['Data', 'Type\".'], ['Type\".', 'Python.org.'], ['Python.org.', 'Retrieved'], ['Retrieved', '26'], ['26', 'September'], ['September', '2015.\\xa0\\n^'], ['2015.\\xa0\\n^', '\"What\\'s'], ['\"What\\'s', 'New'], ['New', 'in'], ['in', 'Python'], ['Python', '2.6'], ['2.6', '—'], ['—', 'Python'], ['Python', 'v2.6.9'], ['v2.6.9', 'documentation\".'], ['documentation\".', 'docs.python.org.'], ['docs.python.org.', 'Retrieved'], ['Retrieved', '26'], ['26', 'September'], ['September', '2015.\\xa0\\n^'], ['2015.\\xa0\\n^', 'Piotrowski,'], ['Piotrowski,', 'Przemyslaw'], ['Przemyslaw', '(July'], ['(July', '2006).'], ['2006).', '\"Build'], ['\"Build', 'a'], ['a', 'Rapid'], ['Rapid', 'Web'], ['Web', 'Development'], ['Development', 'Environment'], ['Environment', 'for'], ['for', 'Python'], ['Python', 'Server'], ['Server', 'Pages'], ['Pages', 'and'], ['and', 'Oracle\".'], ['Oracle\".', 'Oracle'], ['Oracle', 'Technology'], ['Technology', 'Network.'], ['Network.', 'Oracle.'], ['Oracle.', 'Retrieved'], ['Retrieved', '12'], ['12', 'March'], ['March', '2012.\\xa0\\n^'], ['2012.\\xa0\\n^', 'Batista,'], ['Batista,', 'Facundo'], ['Facundo', '(17'], ['(17', 'October'], ['October', '2003).'], ['2003).', '\"PEP'], ['\"PEP', '327\\xa0–'], ['327\\xa0–', 'Decimal'], ['Decimal', 'Data'], ['Data', 'Type\".'], ['Type\".', 'Python'], ['Python', 'Enhancement'], ['Enhancement', 'Proposals.'], ['Proposals.', 'Python'], ['Python', 'Software'], ['Software', 'Foundation.'], ['Foundation.', 'Retrieved'], ['Retrieved', '24'], ['24', 'November'], ['November', '2008.\\xa0\\n^'], ['2008.\\xa0\\n^', 'Eby,'], ['Eby,', 'Phillip'], ['Phillip', 'J.'], ['J.', '(7'], ['(7', 'December'], ['December', '2003).'], ['2003).', '\"PEP'], ['\"PEP', '333\\xa0–'], ['333\\xa0–', 'Python'], ['Python', 'Web'], ['Web', 'Server'], ['Server', 'Gateway'], ['Gateway', 'Interface'], ['Interface', 'v1.0\".'], ['v1.0\".', 'Python'], ['Python', 'Enhancement'], ['Enhancement', 'Proposals.'], ['Proposals.', 'Python'], ['Python', 'Software'], ['Software', 'Foundation.'], ['Foundation.', 'Retrieved'], ['Retrieved', '19'], ['19', 'February'], ['February', '2012.\\xa0\\n^'], ['2012.\\xa0\\n^', 'Debill,'], ['Debill,', 'Erik.'], ['Erik.', '\"Module'], ['\"Module', 'Counts\".'], ['Counts\".', 'ModuleCounts.'], ['ModuleCounts.', 'Retrieved'], ['Retrieved', '20'], ['20', 'September'], ['September', '2017.\\xa0\\n^'], ['2017.\\xa0\\n^', 'Enthought,'], ['Enthought,', 'Canopy.'], ['Canopy.', '\"Canopy\".'], ['\"Canopy\".', 'www.enthought.com.'], ['www.enthought.com.', 'Retrieved'], ['Retrieved', '20'], ['20', 'August'], ['August', '2016.\\xa0\\n^'], ['2016.\\xa0\\n^', 'van'], ['van', 'Rossum,'], ['Rossum,', 'Guido'], ['Guido', '(5'], ['(5', 'June'], ['June', '2001).'], ['2001).', '\"PEP'], ['\"PEP', '7\\xa0–'], ['7\\xa0–', 'Style'], ['Style', 'Guide'], ['Guide', 'for'], ['for', 'C'], ['C', 'Code\".'], ['Code\".', 'Python'], ['Python', 'Enhancement'], ['Enhancement', 'Proposals.'], ['Proposals.', 'Python'], ['Python', 'Software'], ['Software', 'Foundation.'], ['Foundation.', 'Retrieved'], ['Retrieved', '24'], ['24', 'November'], ['November', '2008.\\xa0\\n^'], ['2008.\\xa0\\n^', '\"CPython'], ['\"CPython', 'byte'], ['byte', 'code\".'], ['code\".', 'Docs.python.org.'], ['Docs.python.org.', 'Retrieved'], ['Retrieved', '16'], ['16', 'February'], ['February', '2016.\\xa0\\n^'], ['2016.\\xa0\\n^', '\"Python'], ['\"Python', '2.5'], ['2.5', 'internals\"'], ['internals\"', '(PDF).'], ['(PDF).', 'Retrieved'], ['Retrieved', '19'], ['19', 'April'], ['April', '2011.\\xa0\\n^'], ['2011.\\xa0\\n^', '\"An'], ['\"An', 'Interview'], ['Interview', 'with'], ['with', 'Guido'], ['Guido', 'van'], ['van', 'Rossum\".'], ['Rossum\".', 'Oreilly.com.'], ['Oreilly.com.', 'Retrieved'], ['Retrieved', '24'], ['24', 'November'], ['November', '2008.\\xa0\\n^'], ['2008.\\xa0\\n^', '\"PyPy'], ['\"PyPy', 'compatibility\".'], ['compatibility\".', 'Pypy.org.'], ['Pypy.org.', 'Retrieved'], ['Retrieved', '3'], ['3', 'December'], ['December', '2012.\\xa0\\n^'], ['2012.\\xa0\\n^', '\"speed'], ['\"speed', 'comparison'], ['comparison', 'between'], ['between', 'CPython'], ['CPython', 'and'], ['and', 'Pypy\".'], ['Pypy\".', 'Speed.pypy.org.'], ['Speed.pypy.org.', 'Retrieved'], ['Retrieved', '3'], ['3', 'December'], ['December', '2012.\\xa0\\n^'], ['2012.\\xa0\\n^', '\"STM'], ['\"STM', 'with'], ['with', 'threads\".'], ['threads\".', 'Morepypy.blogspot.be.'], ['Morepypy.blogspot.be.', '10'], ['10', 'June'], ['June', '2012.'], ['2012.', 'Retrieved'], ['Retrieved', '3'], ['3', 'December'], ['December', '2012.\\xa0\\n^'], ['2012.\\xa0\\n^', '\"Application-level'], ['\"Application-level', 'Stackless'], ['Stackless', 'features'], ['features', '—'], ['—', 'PyPy'], ['PyPy', '2.0.2'], ['2.0.2', 'documentation\".'], ['documentation\".', 'Doc.pypy.org.'], ['Doc.pypy.org.', 'Retrieved'], ['Retrieved', '17'], ['17', 'July'], ['July', '2013.\\xa0\\n^'], ['2013.\\xa0\\n^', '\"Plans'], ['\"Plans', 'for'], ['for', 'optimizing'], ['optimizing', 'Python\".'], ['Python\".', 'Google'], ['Google', 'Project'], ['Project', 'Hosting.'], ['Hosting.', 'Google.'], ['Google.', '15'], ['15', 'December'], ['December', '2009.'], ['2009.', 'Retrieved'], ['Retrieved', '24'], ['24', 'September'], ['September', '2011.\\xa0\\n^'], ['2011.\\xa0\\n^', '\"Python'], ['\"Python', 'on'], ['on', 'the'], ['the', 'Nokia'], ['Nokia', 'N900\".'], ['N900\".', 'Stochastic'], ['Stochastic', 'Geometry.\\xa0\\n^'], ['Geometry.\\xa0\\n^', '\"Nuitka'], ['\"Nuitka', 'Home'], ['Home', '|'], ['|', 'Nuitka'], ['Nuitka', 'Home\".'], ['Home\".', 'nuitka.net.'], ['nuitka.net.', 'Retrieved'], ['Retrieved', '18'], ['18', 'August'], ['August', '2017.\\xa0\\n^'], ['2017.\\xa0\\n^', 'Murri,'], ['Murri,', 'Riccardo'], ['Riccardo', '(2013).'], ['(2013).', 'Performance'], ['Performance', 'of'], ['of', 'Python'], ['Python', 'runtimes'], ['runtimes', 'on'], ['on', 'a'], ['a', 'non-numeric'], ['non-numeric', 'scientific'], ['scientific', 'code.'], ['code.', 'European'], ['European', 'Conference'], ['Conference', 'on'], ['on', 'Python'], ['Python', 'in'], ['in', 'Science'], ['Science', '(EuroSciPy).'], ['(EuroSciPy).', 'arXiv:1404.6388\\u202f.\\xa0\\n^'], ['arXiv:1404.6388\\u202f.\\xa0\\n^', 'a'], ['a', 'b'], ['b', 'Warsaw,'], ['Warsaw,', 'Barry;'], ['Barry;', 'Hylton,'], ['Hylton,', 'Jeremy;'], ['Jeremy;', 'Goodger,'], ['Goodger,', 'David'], ['David', '(13'], ['(13', 'June'], ['June', '2000).'], ['2000).', '\"PEP'], ['\"PEP', '1\\xa0–'], ['1\\xa0–', 'PEP'], ['PEP', 'Purpose'], ['Purpose', 'and'], ['and', 'Guidelines\".'], ['Guidelines\".', 'Python'], ['Python', 'Enhancement'], ['Enhancement', 'Proposals.'], ['Proposals.', 'Python'], ['Python', 'Software'], ['Software', 'Foundation.'], ['Foundation.', 'Retrieved'], ['Retrieved', '19'], ['19', 'April'], ['April', '2011.\\xa0\\n^'], ['2011.\\xa0\\n^', 'Cannon,'], ['Cannon,', 'Brett.'], ['Brett.', '\"Guido,'], ['\"Guido,', 'Some'], ['Some', 'Guys,'], ['Guys,', 'and'], ['and', 'a'], ['a', 'Mailing'], ['Mailing', 'List:'], ['List:', 'How'], ['How', 'Python'], ['Python', 'is'], ['is', 'Developed\".'], ['Developed\".', 'python.org.'], ['python.org.', 'Python'], ['Python', 'Software'], ['Software', 'Foundation.'], ['Foundation.', 'Archived'], ['Archived', 'from'], ['from', 'the'], ['the', 'original'], ['original', 'on'], ['on', '1'], ['1', 'June'], ['June', '2009.'], ['2009.', 'Retrieved'], ['Retrieved', '27'], ['27', 'June'], ['June', '2009.\\xa0\\n^'], ['2009.\\xa0\\n^', '\"Python'], ['\"Python', \"Developer's\"], [\"Developer's\", 'Guide\".\\xa0\\n^'], ['Guide\".\\xa0\\n^', 'Norwitz,'], ['Norwitz,', 'Neal'], ['Neal', '(8'], ['(8', 'April'], ['April', '2002).'], ['2002).', '\"[Python-Dev]'], ['\"[Python-Dev]', 'Release'], ['Release', 'Schedules'], ['Schedules', '(was'], ['(was', 'Stability'], ['Stability', '&'], ['&', 'change)\".'], ['change)\".', 'Retrieved'], ['Retrieved', '27'], ['27', 'June'], ['June', '2009.\\xa0\\n^'], ['2009.\\xa0\\n^', 'Aahz;'], ['Aahz;', 'Baxter,'], ['Baxter,', 'Anthony'], ['Anthony', '(15'], ['(15', 'March'], ['March', '2001).'], ['2001).', '\"PEP'], ['\"PEP', '6\\xa0–'], ['6\\xa0–', 'Bug'], ['Bug', 'Fix'], ['Fix', 'Releases\".'], ['Releases\".', 'Python'], ['Python', 'Enhancement'], ['Enhancement', 'Proposals.'], ['Proposals.', 'Python'], ['Python', 'Software'], ['Software', 'Foundation.'], ['Foundation.', 'Retrieved'], ['Retrieved', '27'], ['27', 'June'], ['June', '2009.\\xa0\\n^'], ['2009.\\xa0\\n^', '\"Python'], ['\"Python', 'Buildbot\".'], ['Buildbot\".', 'Python'], ['Python', 'Developer’s'], ['Developer’s', 'Guide.'], ['Guide.', 'Python'], ['Python', 'Software'], ['Software', 'Foundation.'], ['Foundation.', 'Retrieved'], ['Retrieved', '24'], ['24', 'September'], ['September', '2011.\\xa0\\n^'], ['2011.\\xa0\\n^', 'DeBill,'], ['DeBill,', 'Erik.'], ['Erik.', '\"Module'], ['\"Module', 'Counts\".'], ['Counts\".', 'www.modulecounts.com.'], ['www.modulecounts.com.', 'Retrieved'], ['Retrieved', '20'], ['20', 'August'], ['August', '2016.\\xa0\\n^'], ['2016.\\xa0\\n^', 'a'], ['a', 'b'], ['b', '\"Whetting'], ['\"Whetting', 'Your'], ['Your', 'Appetite\".'], ['Appetite\".', 'The'], ['The', 'Python'], ['Python', 'Tutorial.'], ['Tutorial.', 'Python'], ['Python', 'Software'], ['Software', 'Foundation.'], ['Foundation.', 'Retrieved'], ['Retrieved', '20'], ['20', 'February'], ['February', '2012.\\xa0\\n^'], ['2012.\\xa0\\n^', '\"In'], ['\"In', 'Python,'], ['Python,', 'should'], ['should', 'I'], ['I', 'use'], ['use', 'else'], ['else', 'after'], ['after', 'a'], ['a', 'return'], ['return', 'in'], ['in', 'an'], ['an', 'if'], ['if', 'block?\".'], ['block?\".', 'Stack'], ['Stack', 'Overflow.'], ['Overflow.', 'Stack'], ['Stack', 'Exchange.'], ['Exchange.', '17'], ['17', 'February'], ['February', '2011.'], ['2011.', 'Retrieved'], ['Retrieved', '6'], ['6', 'May'], ['May', '2011.\\xa0\\n^'], ['2011.\\xa0\\n^', 'Lutz,'], ['Lutz,', 'Mark'], ['Mark', '(2009).'], ['(2009).', 'Learning'], ['Learning', 'Python:'], ['Python:', 'Powerful'], ['Powerful', 'Object-Oriented'], ['Object-Oriented', 'Programming.'], ['Programming.', \"O'Reilly\"], [\"O'Reilly\", 'Media,'], ['Media,', 'Inc.'], ['Inc.', 'p.\\xa017.'], ['p.\\xa017.', 'ISBN\\xa09781449379322.\\xa0\\n^'], ['ISBN\\xa09781449379322.\\xa0\\n^', 'Fehily,'], ['Fehily,', 'Chris'], ['Chris', '(2002).'], ['(2002).', 'Python.'], ['Python.', 'Peachpit'], ['Peachpit', 'Press.'], ['Press.', 'p.\\xa0xv.'], ['p.\\xa0xv.', 'ISBN\\xa09780201748840.\\xa0\\n^'], ['ISBN\\xa09780201748840.\\xa0\\n^', '\"TIOBE'], ['\"TIOBE', 'Index\".'], ['Index\".', 'TIOBE'], ['TIOBE', '-'], ['-', 'The'], ['The', 'Software'], ['Software', 'Quality'], ['Quality', 'Company.'], ['Company.', 'Retrieved'], ['Retrieved', '7'], ['7', 'March'], ['March', '2017.\\xa0\\n^'], ['2017.\\xa0\\n^', 'TIOBE'], ['TIOBE', 'Software'], ['Software', 'Index'], ['Index', '(2015).'], ['(2015).', '\"TIOBE'], ['\"TIOBE', 'Programming'], ['Programming', 'Community'], ['Community', 'Index'], ['Index', 'Python\".'], ['Python\".', 'Retrieved'], ['Retrieved', '10'], ['10', 'September'], ['September', '2015.\\xa0\\n^'], ['2015.\\xa0\\n^', 'Prechelt,'], ['Prechelt,', 'Lutz'], ['Lutz', '(14'], ['(14', 'March'], ['March', '2000).'], ['2000).', '\"An'], ['\"An', 'empirical'], ['empirical', 'comparison'], ['comparison', 'of'], ['of', 'C,'], ['C,', 'C++,'], ['C++,', 'Java,'], ['Java,', 'Perl,'], ['Perl,', 'Python,'], ['Python,', 'Rexx,'], ['Rexx,', 'and'], ['and', 'Tcl\"'], ['Tcl\"', '(PDF).'], ['(PDF).', 'Retrieved'], ['Retrieved', '30'], ['30', 'August'], ['August', '2013.\\xa0\\n^'], ['2013.\\xa0\\n^', '\"Quotes'], ['\"Quotes', 'about'], ['about', 'Python\".'], ['Python\".', 'Python'], ['Python', 'Software'], ['Software', 'Foundation.'], ['Foundation.', 'Retrieved'], ['Retrieved', '8'], ['8', 'January'], ['January', '2012.\\xa0\\n^'], ['2012.\\xa0\\n^', '\"Organizations'], ['\"Organizations', 'Using'], ['Using', 'Python\".'], ['Python\".', 'Python'], ['Python', 'Software'], ['Software', 'Foundation.'], ['Foundation.', 'Retrieved'], ['Retrieved', '15'], ['15', 'January'], ['January', '2009.\\xa0\\n^'], ['2009.\\xa0\\n^', '\"Python\\xa0:'], ['\"Python\\xa0:', 'the'], ['the', 'holy'], ['holy', 'grail'], ['grail', 'of'], ['of', 'programming\".'], ['programming\".', 'CERN'], ['CERN', 'Bulletin.'], ['Bulletin.', 'CERN'], ['CERN', 'Publications'], ['Publications', '(31/2006).'], ['(31/2006).', '31'], ['31', 'July'], ['July', '2006.'], ['2006.', 'Retrieved'], ['Retrieved', '11'], ['11', 'February'], ['February', '2012.\\xa0\\n^'], ['2012.\\xa0\\n^', 'Shafer,'], ['Shafer,', 'Daniel'], ['Daniel', 'G.'], ['G.', '(17'], ['(17', 'January'], ['January', '2003).'], ['2003).', '\"Python'], ['\"Python', 'Streamlines'], ['Streamlines', 'Space'], ['Space', 'Shuttle'], ['Shuttle', 'Mission'], ['Mission', 'Design\".'], ['Design\".', 'Python'], ['Python', 'Software'], ['Software', 'Foundation.'], ['Foundation.', 'Retrieved'], ['Retrieved', '24'], ['24', 'November'], ['November', '2008.\\xa0\\n^'], ['2008.\\xa0\\n^', 'Fortenberry,'], ['Fortenberry,', 'Tim'], ['Tim', '(17'], ['(17', 'January'], ['January', '2003).'], ['2003).', '\"Industrial'], ['\"Industrial', 'Light'], ['Light', '&'], ['&', 'Magic'], ['Magic', 'Runs'], ['Runs', 'on'], ['on', 'Python\".'], ['Python\".', 'Python'], ['Python', 'Software'], ['Software', 'Foundation.'], ['Foundation.', 'Retrieved'], ['Retrieved', '11'], ['11', 'February'], ['February', '2012.\\xa0\\n^'], ['2012.\\xa0\\n^', 'Taft,'], ['Taft,', 'Darryl'], ['Darryl', 'K.'], ['K.', '(5'], ['(5', 'March'], ['March', '2007).'], ['2007).', '\"Python'], ['\"Python', 'Slithers'], ['Slithers', 'into'], ['into', 'Systems\".'], ['Systems\".', 'eWeek.com.'], ['eWeek.com.', 'Ziff'], ['Ziff', 'Davis'], ['Davis', 'Holdings.'], ['Holdings.', 'Retrieved'], ['Retrieved', '24'], ['24', 'September'], ['September', '2011.\\xa0\\n^'], ['2011.\\xa0\\n^', '\"Usage'], ['\"Usage', 'statistics'], ['statistics', 'and'], ['and', 'market'], ['market', 'share'], ['share', 'of'], ['of', 'Python'], ['Python', 'for'], ['for', 'websites\".'], ['websites\".', '2012.'], ['2012.', 'Retrieved'], ['Retrieved', '18'], ['18', 'December'], ['December', '2012.\\xa0\\n^'], ['2012.\\xa0\\n^', 'Oliphant,'], ['Oliphant,', 'Travis'], ['Travis', '(2007).'], ['(2007).', '\"Python'], ['\"Python', 'for'], ['for', 'Scientific'], ['Scientific', 'Computing\".'], ['Computing\".', 'Computing'], ['Computing', 'in'], ['in', 'Science'], ['Science', 'and'], ['and', 'Engineering.\\xa0\\n^'], ['Engineering.\\xa0\\n^', 'Millman,'], ['Millman,', 'K.'], ['K.', 'Jarrod;'], ['Jarrod;', 'Aivazis,'], ['Aivazis,', 'Michael'], ['Michael', '(2011).'], ['(2011).', '\"Python'], ['\"Python', 'for'], ['for', 'Scientists'], ['Scientists', 'and'], ['and', 'Engineers\".'], ['Engineers\".', 'Computing'], ['Computing', 'in'], ['in', 'Science'], ['Science', 'and'], ['and', 'Engineering.'], ['Engineering.', '13'], ['13', '(2):'], ['(2):', '9–12.\\xa0\\n^'], ['9–12.\\xa0\\n^', 'Chekanov,'], ['Chekanov,', 'S.'], ['S.', '(April'], ['(April', '2016).'], ['2016).', 'Numeric'], ['Numeric', 'Computation'], ['Computation', 'and'], ['and', 'Statistical'], ['Statistical', 'Data'], ['Data', 'Analysis'], ['Analysis', 'on'], ['on', 'the'], ['the', 'Java'], ['Java', 'Platform.'], ['Platform.', 'London:'], ['London:', 'Springer.'], ['Springer.', 'p.\\xa0670.'], ['p.\\xa0670.', 'ISBN\\xa0978-3-319-28531-3.\\xa0\\n^'], ['ISBN\\xa0978-3-319-28531-3.\\xa0\\n^', 'Chekanov,'], ['Chekanov,', 'S.'], ['S.', '(2010).'], ['(2010).', 'Scientific'], ['Scientific', 'Data'], ['Data', 'Analysis'], ['Analysis', 'using'], ['using', 'Jython'], ['Jython', 'Scripting'], ['Scripting', 'and'], ['and', 'Java.'], ['Java.', 'London:'], ['London:', 'Springer.'], ['Springer.', 'p.\\xa0600.'], ['p.\\xa0600.', 'ISBN\\xa0978-3-319-28531-3.\\xa0\\n^'], ['ISBN\\xa0978-3-319-28531-3.\\xa0\\n^', '\"Installers'], ['\"Installers', 'for'], ['for', 'GIMP'], ['GIMP', 'for'], ['for', 'Windows'], ['Windows', '-'], ['-', 'Frequently'], ['Frequently', 'Asked'], ['Asked', 'Questions\".'], ['Questions\".', '26'], ['26', 'July'], ['July', '2013.'], ['2013.', 'Retrieved'], ['Retrieved', '26'], ['26', 'July'], ['July', '2013.\\xa0\\n^'], ['2013.\\xa0\\n^', '\"jasc'], ['\"jasc', 'psp9components\".'], ['psp9components\".', 'Archived'], ['Archived', 'from'], ['from', 'the'], ['the', 'original'], ['original', 'on'], ['on', '19'], ['19', 'March'], ['March', '2008.\\xa0\\n^'], ['2008.\\xa0\\n^', '\"About'], ['\"About', 'getting'], ['getting', 'started'], ['started', 'with'], ['with', 'writing'], ['writing', 'geoprocessing'], ['geoprocessing', 'scripts\".'], ['scripts\".', 'ArcGIS'], ['ArcGIS', 'Desktop'], ['Desktop', 'Help'], ['Help', '9.2.'], ['9.2.', 'Environmental'], ['Environmental', 'Systems'], ['Systems', 'Research'], ['Research', 'Institute.'], ['Institute.', '17'], ['17', 'November'], ['November', '2006.'], ['2006.', 'Retrieved'], ['Retrieved', '11'], ['11', 'February'], ['February', '2012.\\xa0\\n^'], ['2012.\\xa0\\n^', 'CCP'], ['CCP', 'porkbelly'], ['porkbelly', '(24'], ['(24', 'August'], ['August', '2010).'], ['2010).', '\"Stackless'], ['\"Stackless', 'Python'], ['Python', '2.7\".'], ['2.7\".', 'EVE'], ['EVE', 'Community'], ['Community', 'Dev'], ['Dev', 'Blogs.'], ['Blogs.', 'CCP'], ['CCP', 'Games.'], ['Games.', 'As'], ['As', 'you'], ['you', 'may'], ['may', 'know,'], ['know,', 'EVE'], ['EVE', 'has'], ['has', 'at'], ['at', 'its'], ['its', 'core'], ['core', 'the'], ['the', 'programming'], ['programming', 'language'], ['language', 'known'], ['known', 'as'], ['as', 'Stackless'], ['Stackless', 'Python.\\xa0\\n^'], ['Python.\\xa0\\n^', 'Caudill,'], ['Caudill,', 'Barry'], ['Barry', '(20'], ['(20', 'September'], ['September', '2005).'], ['2005).', '\"Modding'], ['\"Modding', 'Sid'], ['Sid', \"Meier's\"], [\"Meier's\", 'Civilization'], ['Civilization', 'IV\".'], ['IV\".', 'Sid'], ['Sid', \"Meier's\"], [\"Meier's\", 'Civilization'], ['Civilization', 'IV'], ['IV', 'Developer'], ['Developer', 'Blog.'], ['Blog.', 'Firaxis'], ['Firaxis', 'Games.'], ['Games.', 'Archived'], ['Archived', 'from'], ['from', 'the'], ['the', 'original'], ['original', 'on'], ['on', '11'], ['11', 'August'], ['August', '2010.'], ['2010.', 'we'], ['we', 'created'], ['created', 'three'], ['three', 'levels'], ['levels', 'of'], ['of', 'tools'], ['tools', '...'], ['...', 'The'], ['The', 'next'], ['next', 'level'], ['level', 'offers'], ['offers', 'Python'], ['Python', 'and'], ['and', 'XML'], ['XML', 'support,'], ['support,', 'letting'], ['letting', 'modders'], ['modders', 'with'], ['with', 'more'], ['more', 'experience'], ['experience', 'manipulate'], ['manipulate', 'the'], ['the', 'game'], ['game', 'world'], ['world', 'and'], ['and', 'everything'], ['everything', 'in'], ['in', 'it.\\xa0\\n^'], ['it.\\xa0\\n^', '\"Python'], ['\"Python', 'Language'], ['Language', 'Guide'], ['Guide', '(v1.0)\".'], ['(v1.0)\".', 'Google'], ['Google', 'Documents'], ['Documents', 'List'], ['List', 'Data'], ['Data', 'API'], ['API', 'v1.0.'], ['v1.0.', 'Google.'], ['Google.', 'Archived'], ['Archived', 'from'], ['from', 'the'], ['the', 'original'], ['original', 'on'], ['on', '11'], ['11', 'August'], ['August', '2010.\\xa0\\n^'], ['2010.\\xa0\\n^', '\"Python'], ['\"Python', '-'], ['-', 'Best'], ['Best', 'Programming'], ['Programming', 'Language'], ['Language', 'for'], ['for', 'Algorithmic'], ['Algorithmic', 'Trading'], ['Trading', 'Systems\".'], ['Systems\".', '9'], ['9', 'March'], ['March', '2016.'], ['2016.', 'Retrieved'], ['Retrieved', '3'], ['3', 'October'], ['October', '2016.\\xa0\\n^'], ['2016.\\xa0\\n^', '\"Trading'], ['\"Trading', 'with'], ['with', 'Interactive'], ['Interactive', 'Brokers'], ['Brokers', 'using'], ['using', 'Python:'], ['Python:', 'An'], ['An', 'IBPy'], ['IBPy', 'Tutorial\".'], ['Tutorial\".', '19'], ['19', 'September'], ['September', '2016.'], ['2016.', 'Retrieved'], ['Retrieved', '3'], ['3', 'October'], ['October', '2016.\\xa0\\n^'], ['2016.\\xa0\\n^', '\"Python'], ['\"Python', 'for'], ['for', 'Artificial'], ['Artificial', 'Intelligence\".'], ['Intelligence\".', 'Wiki.python.org.'], ['Wiki.python.org.', '19'], ['19', 'July'], ['July', '2012.'], ['2012.', 'Archived'], ['Archived', 'from'], ['from', 'the'], ['the', 'original'], ['original', 'on'], ['on', '1'], ['1', 'November'], ['November', '2012.'], ['2012.', 'Retrieved'], ['Retrieved', '3'], ['3', 'December'], ['December', '2012.\\xa0\\n^'], ['2012.\\xa0\\n^', 'Paine,'], ['Paine,', 'Jocelyn,'], ['Jocelyn,', 'ed.'], ['ed.', '(August'], ['(August', '2005).'], ['2005).', '\"AI'], ['\"AI', 'in'], ['in', 'Python\".'], ['Python\".', 'AI'], ['AI', 'Expert'], ['Expert', 'Newsletter.'], ['Newsletter.', 'Amzi!.'], ['Amzi!.', 'Retrieved'], ['Retrieved', '11'], ['11', 'February'], ['February', '2012.\\xa0\\n^'], ['2012.\\xa0\\n^', '\"PyAIML'], ['\"PyAIML', '0.8.5\\xa0:'], ['0.8.5\\xa0:', 'Python'], ['Python', 'Package'], ['Package', 'Index\".'], ['Index\".', 'Pypi.python.org.'], ['Pypi.python.org.', 'Retrieved'], ['Retrieved', '17'], ['17', 'July'], ['July', '2013.\\xa0\\n^'], ['2013.\\xa0\\n^', 'Russell,'], ['Russell,', 'Stuart'], ['Stuart', 'J.'], ['J.', '&'], ['&', 'Norvig,'], ['Norvig,', 'Peter'], ['Peter', '(2009).'], ['(2009).', 'Artificial'], ['Artificial', 'Intelligence:'], ['Intelligence:', 'A'], ['A', 'Modern'], ['Modern', 'Approach'], ['Approach', '(3rd'], ['(3rd', 'ed.).'], ['ed.).', 'Upper'], ['Upper', 'Saddle'], ['Saddle', 'River,'], ['River,', 'NJ:'], ['NJ:', 'Prentice'], ['Prentice', 'Hall.'], ['Hall.', 'p.\\xa01062.'], ['p.\\xa01062.', 'ISBN\\xa0978-0-13-604259-4.'], ['ISBN\\xa0978-0-13-604259-4.', 'Retrieved'], ['Retrieved', '11'], ['11', 'February'], ['February', '2012.\\xa0\\n^'], ['2012.\\xa0\\n^', '\"Natural'], ['\"Natural', 'Language'], ['Language', 'Toolkit\".\\xa0\\n^'], ['Toolkit\".\\xa0\\n^', '\"Immunity:'], ['\"Immunity:', 'Knowing'], ['Knowing', \"You're\"], [\"You're\", 'Secure\".\\xa0\\n^'], ['Secure\".\\xa0\\n^', '\"Corelabs'], ['\"Corelabs', 'site\".\\xa0\\n^'], ['site\".\\xa0\\n^', '\"What'], ['\"What', 'is'], ['is', 'Sugar?\".'], ['Sugar?\".', 'Sugar'], ['Sugar', 'Labs.'], ['Labs.', 'Retrieved'], ['Retrieved', '11'], ['11', 'February'], ['February', '2012.\\xa0\\n^'], ['2012.\\xa0\\n^', '\"4.0'], ['\"4.0', 'New'], ['New', 'Features'], ['Features', 'and'], ['and', 'Fixes\".'], ['Fixes\".', 'LibreOffice.org.'], ['LibreOffice.org.', 'The'], ['The', 'Document'], ['Document', 'Foundation.'], ['Foundation.', '2013.'], ['2013.', 'Retrieved'], ['Retrieved', '25'], ['25', 'February'], ['February', '2013.\\xa0\\n^'], ['2013.\\xa0\\n^', '\"Gotchas'], ['\"Gotchas', 'for'], ['for', 'Python'], ['Python', 'Users\".'], ['Users\".', 'boo.codehaus.org.'], ['boo.codehaus.org.', 'Codehaus'], ['Codehaus', 'Foundation.'], ['Foundation.', 'Retrieved'], ['Retrieved', '24'], ['24', 'November'], ['November', '2008.\\xa0\\n^'], ['2008.\\xa0\\n^', 'Esterbrook,'], ['Esterbrook,', 'Charles.'], ['Charles.', '\"Acknowledgements\".'], ['\"Acknowledgements\".', 'cobra-language.com.'], ['cobra-language.com.', 'Cobra'], ['Cobra', 'Language.'], ['Language.', 'Retrieved'], ['Retrieved', '7'], ['7', 'April'], ['April', '2010.\\xa0\\n^'], ['2010.\\xa0\\n^', 'Esterbrook,'], ['Esterbrook,', 'Charles.'], ['Charles.', '\"Comparison'], ['\"Comparison', 'to'], ['to', 'Python\".'], ['Python\".', 'cobra-language.com.'], ['cobra-language.com.', 'Cobra'], ['Cobra', 'Language.'], ['Language.', 'Retrieved'], ['Retrieved', '7'], ['7', 'April'], ['April', '2010.\\xa0\\n^'], ['2010.\\xa0\\n^', '\"Proposals:'], ['\"Proposals:', 'iterators'], ['iterators', 'and'], ['and', 'generators'], ['generators', '[ES4'], ['[ES4', 'Wiki]\".'], ['Wiki]\".', 'wiki.ecmascript.org.'], ['wiki.ecmascript.org.', 'Retrieved'], ['Retrieved', '24'], ['24', 'November'], ['November', '2008.\\xa0\\n^'], ['2008.\\xa0\\n^', 'Kincaid,'], ['Kincaid,', 'Jason'], ['Jason', '(10'], ['(10', 'November'], ['November', '2009).'], ['2009).', '\"Google\\'s'], ['\"Google\\'s', 'Go:'], ['Go:', 'A'], ['A', 'New'], ['New', 'Programming'], ['Programming', 'Language'], ['Language', \"That's\"], [\"That's\", 'Python'], ['Python', 'Meets'], ['Meets', 'C++\".'], ['C++\".', 'TechCrunch.'], ['TechCrunch.', 'Retrieved'], ['Retrieved', '29'], ['29', 'January'], ['January', '2010.\\xa0\\n^'], ['2010.\\xa0\\n^', 'Strachan,'], ['Strachan,', 'James'], ['James', '(29'], ['(29', 'August'], ['August', '2003).'], ['2003).', '\"Groovy\\xa0–'], ['\"Groovy\\xa0–', 'the'], ['the', 'birth'], ['birth', 'of'], ['of', 'a'], ['a', 'new'], ['new', 'dynamic'], ['dynamic', 'language'], ['language', 'for'], ['for', 'the'], ['the', 'Java'], ['Java', 'platform\".\\xa0\\n^'], ['platform\".\\xa0\\n^', 'Lin,'], ['Lin,', 'Mike.'], ['Mike.', '\"The'], ['\"The', 'Whitespace'], ['Whitespace', 'Thing'], ['Thing', 'for'], ['for', 'OCaml\".'], ['OCaml\".', 'Massachusetts'], ['Massachusetts', 'Institute'], ['Institute', 'of'], ['of', 'Technology.'], ['Technology.', 'Retrieved'], ['Retrieved', '12'], ['12', 'April'], ['April', '2009.\\xa0\\n^'], ['2009.\\xa0\\n^', '\"An'], ['\"An', 'Interview'], ['Interview', 'with'], ['with', 'the'], ['the', 'Creator'], ['Creator', 'of'], ['of', 'Ruby\".'], ['Ruby\".', 'Linuxdevcenter.com.'], ['Linuxdevcenter.com.', 'Retrieved'], ['Retrieved', '3'], ['3', 'December'], ['December', '2012.\\xa0\\n^'], ['2012.\\xa0\\n^', 'Lattner,'], ['Lattner,', 'Chris'], ['Chris', '(3'], ['(3', 'June'], ['June', '2014).'], ['2014).', '\"Chris'], ['\"Chris', \"Lattner's\"], [\"Lattner's\", 'Homepage\".'], ['Homepage\".', 'Chris'], ['Chris', 'Lattner.'], ['Lattner.', 'Retrieved'], ['Retrieved', '3'], ['3', 'June'], ['June', '2014.'], ['2014.', 'I'], ['I', 'started'], ['started', 'work'], ['work', 'on'], ['on', 'the'], ['the', 'Swift'], ['Swift', 'Programming'], ['Programming', 'Language'], ['Language', 'in'], ['in', 'July'], ['July', 'of'], ['of', '2010.'], ['2010.', 'I'], ['I', 'implemented'], ['implemented', 'much'], ['much', 'of'], ['of', 'the'], ['the', 'basic'], ['basic', 'language'], ['language', 'structure,'], ['structure,', 'with'], ['with', 'only'], ['only', 'a'], ['a', 'few'], ['few', 'people'], ['people', 'knowing'], ['knowing', 'of'], ['of', 'its'], ['its', 'existence.'], ['existence.', 'A'], ['A', 'few'], ['few', 'other'], ['other', '(amazing)'], ['(amazing)', 'people'], ['people', 'started'], ['started', 'contributing'], ['contributing', 'in'], ['in', 'earnest'], ['earnest', 'late'], ['late', 'in'], ['in', '2011,'], ['2011,', 'and'], ['and', 'it'], ['it', 'became'], ['became', 'a'], ['a', 'major'], ['major', 'focus'], ['focus', 'for'], ['for', 'the'], ['the', 'Apple'], ['Apple', 'Developer'], ['Developer', 'Tools'], ['Tools', 'group'], ['group', 'in'], ['in', 'July'], ['July', '2013'], ['2013', '[...]'], ['[...]', 'drawing'], ['drawing', 'ideas'], ['ideas', 'from'], ['from', 'Objective-C,'], ['Objective-C,', 'Rust,'], ['Rust,', 'Haskell,'], ['Haskell,', 'Ruby,'], ['Ruby,', 'Python,'], ['Python,', 'C#,'], ['C#,', 'CLU,'], ['CLU,', 'and'], ['and', 'far'], ['far', 'too'], ['too', 'many'], ['many', 'others'], ['others', 'to'], ['to', 'list.\\xa0\\n^'], ['list.\\xa0\\n^', 'Kupries,'], ['Kupries,', 'Andreas;'], ['Andreas;', 'Fellows,'], ['Fellows,', 'Donal'], ['Donal', 'K.'], ['K.', '(14'], ['(14', 'September'], ['September', '2000).'], ['2000).', '\"TIP'], ['\"TIP', '#3:'], ['#3:', 'TIP'], ['TIP', 'Format\".'], ['Format\".', 'tcl.tk.'], ['tcl.tk.', 'Tcl'], ['Tcl', 'Developer'], ['Developer', 'Xchange.'], ['Xchange.', 'Retrieved'], ['Retrieved', '24'], ['24', 'November'], ['November', '2008.\\xa0\\n^'], ['2008.\\xa0\\n^', 'Gustafsson,'], ['Gustafsson,', 'Per;'], ['Per;', 'Niskanen,'], ['Niskanen,', 'Raimo'], ['Raimo', '(29'], ['(29', 'January'], ['January', '2007).'], ['2007).', '\"EEP'], ['\"EEP', '1:'], ['1:', 'EEP'], ['EEP', 'Purpose'], ['Purpose', 'and'], ['and', 'Guidelines\".'], ['Guidelines\".', 'erlang.org.'], ['erlang.org.', 'Retrieved'], ['Retrieved', '19'], ['19', 'April'], ['April', '2011.\\xa0\\n^'], ['2011.\\xa0\\n^', '\"TIOBE'], ['\"TIOBE', 'Programming'], ['Programming', 'Community'], ['Community', 'Index'], ['Index', 'for'], ['for', 'March'], ['March', '2012\".'], ['2012\".', 'TIOBE'], ['TIOBE', 'Software.'], ['Software.', 'March'], ['March', '2012.'], ['2012.', 'Retrieved'], ['Retrieved', '25'], ['25', 'March'], ['March', '2012.\\xa0\\n\\n\\nFurther'], ['2012.\\xa0\\n\\n\\nFurther', 'reading[edit]\\n\\nDowney,'], ['reading[edit]\\n\\nDowney,', 'Allen'], ['Allen', 'B.'], ['B.', '(May'], ['(May', '2012).'], ['2012).', 'Think'], ['Think', 'Python:'], ['Python:', 'How'], ['How', 'to'], ['to', 'Think'], ['Think', 'Like'], ['Like', 'a'], ['a', 'Computer'], ['Computer', 'Scientist'], ['Scientist', '(Version'], ['(Version', '1.6.6'], ['1.6.6', 'ed.).'], ['ed.).', 'ISBN\\xa0978-0-521-72596-5.\\xa0\\nHamilton,'], ['ISBN\\xa0978-0-521-72596-5.\\xa0\\nHamilton,', 'Naomi'], ['Naomi', '(5'], ['(5', 'August'], ['August', '2008).'], ['2008).', '\"The'], ['\"The', 'A-Z'], ['A-Z', 'of'], ['of', 'Programming'], ['Programming', 'Languages:'], ['Languages:', 'Python\".'], ['Python\".', 'Computerworld.'], ['Computerworld.', 'Archived'], ['Archived', 'from'], ['from', 'the'], ['the', 'original'], ['original', 'on'], ['on', '29'], ['29', 'December'], ['December', '2008.'], ['2008.', 'Retrieved'], ['Retrieved', '31'], ['31', 'March'], ['March', '2010.\\xa0\\nLutz,'], ['2010.\\xa0\\nLutz,', 'Mark'], ['Mark', '(2013).'], ['(2013).', 'Learning'], ['Learning', 'Python'], ['Python', '(5th'], ['(5th', 'ed.).'], ['ed.).', \"O'Reilly\"], [\"O'Reilly\", 'Media.'], ['Media.', 'ISBN\\xa0978-0-596-15806-4.\\xa0\\nPilgrim,'], ['ISBN\\xa0978-0-596-15806-4.\\xa0\\nPilgrim,', 'Mark'], ['Mark', '(2004).'], ['(2004).', 'Dive'], ['Dive', 'Into'], ['Into', 'Python.'], ['Python.', 'Apress.'], ['Apress.', 'ISBN\\xa0978-1-59059-356-1.\\xa0\\nPilgrim,'], ['ISBN\\xa0978-1-59059-356-1.\\xa0\\nPilgrim,', 'Mark'], ['Mark', '(2009).'], ['(2009).', 'Dive'], ['Dive', 'Into'], ['Into', 'Python'], ['Python', '3.'], ['3.', 'Apress.'], ['Apress.', 'ISBN\\xa0978-1-4302-2415-0.\\xa0\\nSummerfield,'], ['ISBN\\xa0978-1-4302-2415-0.\\xa0\\nSummerfield,', 'Mark'], ['Mark', '(2009).'], ['(2009).', 'Programming'], ['Programming', 'in'], ['in', 'Python'], ['Python', '3'], ['3', '(2nd'], ['(2nd', 'ed.).'], ['ed.).', 'Addison-Wesley'], ['Addison-Wesley', 'Professional.'], ['Professional.', 'ISBN\\xa0978-0-321-68056-3.\\xa0\\n\\nExternal'], ['ISBN\\xa0978-0-321-68056-3.\\xa0\\n\\nExternal', 'links[edit]\\n\\nFind'], ['links[edit]\\n\\nFind', 'more'], ['more', 'aboutPython'], ['aboutPython', '(programming'], ['(programming', 'language)at'], ['language)at', \"Wikipedia's\"], [\"Wikipedia's\", 'sister'], ['sister', 'projects\\n\\nMedia'], ['projects\\n\\nMedia', 'from'], ['from', 'Wikimedia'], ['Wikimedia', 'Commons\\nQuotations'], ['Commons\\nQuotations', 'from'], ['from', 'Wikiquote\\nTextbooks'], ['Wikiquote\\nTextbooks', 'from'], ['from', 'Wikibooks\\nLearning'], ['Wikibooks\\nLearning', 'resources'], ['resources', 'from'], ['from', 'Wikiversity\\n\\n\\n\\nOfficial'], ['Wikiversity\\n\\n\\n\\nOfficial', 'website\\nPython'], ['website\\nPython', 'at'], ['at', 'Curlie'], ['Curlie', '(based'], ['(based', 'on'], ['on', 'DMOZ)\\n\\n\\n\\n\\n\\n\\n\\nv\\nt\\ne\\n\\n\\nProgramming'], ['DMOZ)\\n\\n\\n\\n\\n\\n\\n\\nv\\nt\\ne\\n\\n\\nProgramming', 'languages\\n\\n\\n\\n\\n\\n\\nComparison\\nTimeline\\nHistory\\n\\n\\n\\n\\n\\n\\n\\n\\nAssembly\\nBASIC\\nC\\nC++\\nC#\\nCOBOL\\nFortran\\nАналитик\\nGo\\nGroovy\\nHaskell\\nJava\\nJavaScript'], ['languages\\n\\n\\n\\n\\n\\n\\nComparison\\nTimeline\\nHistory\\n\\n\\n\\n\\n\\n\\n\\n\\nAssembly\\nBASIC\\nC\\nC++\\nC#\\nCOBOL\\nFortran\\nАналитик\\nGo\\nGroovy\\nHaskell\\nJava\\nJavaScript', '(JS)\\nKotlin\\nLisp\\nLua\\nObjective-C\\nPascal\\nPerl\\nPHP\\nPython\\nRexx\\nRuby\\nShell\\nSmalltalk\\nSwift\\nVisual'], ['(JS)\\nKotlin\\nLisp\\nLua\\nObjective-C\\nPascal\\nPerl\\nPHP\\nPython\\nRexx\\nRuby\\nShell\\nSmalltalk\\nSwift\\nVisual', 'Basic'], ['Basic', '.NET'], ['.NET', '(VB.NET)\\nVBScript\\nmore...\\n\\n\\n\\n\\n\\n\\n\\n\\n'], ['(VB.NET)\\nVBScript\\nmore...\\n\\n\\n\\n\\n\\n\\n\\n\\n', 'Category\\n'], ['Category\\n', 'Lists\\n\\nAlphabetical\\nCategorical\\nGenerational\\nNon-English-based\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\nv\\nt\\ne\\n\\n\\nPython\\n\\n\\n\\nImplementations\\n\\n\\n\\nCLPython\\nCPython\\nCython\\nMicroPython\\nNumba\\nIronPython\\nJython\\nPsyco\\nPyPy\\nPython'], ['Lists\\n\\nAlphabetical\\nCategorical\\nGenerational\\nNon-English-based\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\nv\\nt\\ne\\n\\n\\nPython\\n\\n\\n\\nImplementations\\n\\n\\n\\nCLPython\\nCPython\\nCython\\nMicroPython\\nNumba\\nIronPython\\nJython\\nPsyco\\nPyPy\\nPython', 'for'], ['for', 'S60\\nShed'], ['S60\\nShed', 'Skin\\nStackless'], ['Skin\\nStackless', 'Python\\nUnladen'], ['Python\\nUnladen', 'Swallow\\nmore...\\n\\n\\n\\n\\n\\n\\n\\n\\nIDE\\n\\n\\n\\nBoa\\nEric'], ['Swallow\\nmore...\\n\\n\\n\\n\\n\\n\\n\\n\\nIDE\\n\\n\\n\\nBoa\\nEric', 'Python'], ['Python', 'IDE\\nIDLE\\nPyDev\\nSPE\\nNinja-IDE\\nmore...\\n\\n\\n\\n\\n\\nTopics\\n\\n\\n\\nWSGI\\n\\n\\n\\n\\n\\n\\n\\n\\nsoftware'], ['IDE\\nIDLE\\nPyDev\\nSPE\\nNinja-IDE\\nmore...\\n\\n\\n\\n\\n\\nTopics\\n\\n\\n\\nWSGI\\n\\n\\n\\n\\n\\n\\n\\n\\nsoftware', '(list)\\nPython'], ['(list)\\nPython', 'Software'], ['Software', 'Foundation\\nPyCon\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\nv\\nt\\ne\\n\\n\\nPython'], ['Foundation\\nPyCon\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\nv\\nt\\ne\\n\\n\\nPython', 'web'], ['web', 'frameworks\\n\\n\\n\\n\\n\\n\\nBlueBream\\nBottle\\nCherryPy\\nDjango\\nFlask\\nGrok\\nNagare\\nNevow\\nPyjs\\nPylons\\nPyramid\\nQuixote\\nSpyce\\nTACTIC\\nTornado\\nTurboGears\\nTwistedWeb\\nWebware\\nweb2py\\nZope'], ['frameworks\\n\\n\\n\\n\\n\\n\\nBlueBream\\nBottle\\nCherryPy\\nDjango\\nFlask\\nGrok\\nNagare\\nNevow\\nPyjs\\nPylons\\nPyramid\\nQuixote\\nSpyce\\nTACTIC\\nTornado\\nTurboGears\\nTwistedWeb\\nWebware\\nweb2py\\nZope', '2\\nmore...\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\nv\\nt\\ne\\n\\n\\nFree'], ['2\\nmore...\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\nv\\nt\\ne\\n\\n\\nFree', 'and'], ['and', 'open-source'], ['open-source', 'software\\n\\n\\n\\nGeneral\\n\\n\\n\\nAlternative'], ['software\\n\\n\\n\\nGeneral\\n\\n\\n\\nAlternative', 'terms'], ['terms', 'for'], ['for', 'free'], ['free', 'software\\nComparison'], ['software\\nComparison', 'of'], ['of', 'open-source'], ['open-source', 'and'], ['and', 'closed-source'], ['closed-source', 'software\\nComparison'], ['software\\nComparison', 'of'], ['of', 'source'], ['source', 'code'], ['code', 'hosting'], ['hosting', 'facilities\\nFree'], ['facilities\\nFree', 'software\\nFree'], ['software\\nFree', 'software'], ['software', 'project'], ['project', 'directories\\nGratis'], ['directories\\nGratis', 'versus'], ['versus', 'libre\\nLong-term'], ['libre\\nLong-term', 'support\\nOpen-source'], ['support\\nOpen-source', 'software\\nOpen-source'], ['software\\nOpen-source', 'software'], ['software', 'development\\nOutline\\n\\n\\n\\n\\n\\nSoftware\\npackages\\n\\n\\n\\nAudio\\nBioinformatics\\nCodecs\\nCollaboration\\nConfiguration'], ['development\\nOutline\\n\\n\\n\\n\\n\\nSoftware\\npackages\\n\\n\\n\\nAudio\\nBioinformatics\\nCodecs\\nCollaboration\\nConfiguration', 'management\\nDevice'], ['management\\nDevice', 'drivers\\n\\nGraphics\\nWireless\\n\\n\\nGeophysics\\nHealth\\nMathematics\\nOperating'], ['drivers\\n\\nGraphics\\nWireless\\n\\n\\nGeophysics\\nHealth\\nMathematics\\nOperating', 'systems\\nProgramming'], ['systems\\nProgramming', 'languages\\nRouting\\nStatistics\\nTelevision\\nVideo'], ['languages\\nRouting\\nStatistics\\nTelevision\\nVideo', 'games\\nWeb'], ['games\\nWeb', 'applications\\n\\nContent'], ['applications\\n\\nContent', 'management'], ['management', 'systems\\nE-commerce\\n\\n\\nWord'], ['systems\\nE-commerce\\n\\n\\nWord', 'processors\\nAndroid'], ['processors\\nAndroid', 'apps\\niOS'], ['apps\\niOS', 'apps\\nCommercial\\nTrademarked\\nFormerly'], ['apps\\nCommercial\\nTrademarked\\nFormerly', 'proprietary\\n\\n\\n\\n\\n\\nCommunity\\n\\n\\n\\nFree'], ['proprietary\\n\\n\\n\\n\\n\\nCommunity\\n\\n\\n\\nFree', 'software'], ['software', 'movement\\nHistory\\nOpen-source'], ['movement\\nHistory\\nOpen-source', 'software'], ['software', 'movement\\nOrganizations\\nEvents\\n\\n\\n\\n\\n\\nLicenses\\n\\n\\n\\nAFL\\nApache\\nAPSL\\nArtistic\\nBeerware\\nBoost\\nBSD\\nCC0\\nCDDL\\nEPL\\nGNU'], ['movement\\nOrganizations\\nEvents\\n\\n\\n\\n\\n\\nLicenses\\n\\n\\n\\nAFL\\nApache\\nAPSL\\nArtistic\\nBeerware\\nBoost\\nBSD\\nCC0\\nCDDL\\nEPL\\nGNU', 'GPL\\nGNU'], ['GPL\\nGNU', 'LGPL\\nISC\\nMIT\\nMPL\\nMs-PL/RL\\nPython\\nPython'], ['LGPL\\nISC\\nMIT\\nMPL\\nMs-PL/RL\\nPython\\nPython', 'Software'], ['Software', 'Foundation\\nSleepycat\\nUnlicense\\nWTFPL\\nzlib\\n\\n\\n\\n\\n\\nLicense'], ['Foundation\\nSleepycat\\nUnlicense\\nWTFPL\\nzlib\\n\\n\\n\\n\\n\\nLicense', 'types\\nand'], ['types\\nand', 'standards\\n\\n\\n\\nComparison'], ['standards\\n\\n\\n\\nComparison', 'of'], ['of', 'free'], ['free', 'and'], ['and', 'open-source'], ['open-source', 'software'], ['software', 'licenses\\nContributor'], ['licenses\\nContributor', 'License'], ['License', 'Agreement\\nCopyfree\\nCopyleft\\nDebian'], ['Agreement\\nCopyfree\\nCopyleft\\nDebian', 'Free'], ['Free', 'Software'], ['Software', 'Guidelines\\nDefinition'], ['Guidelines\\nDefinition', 'of'], ['of', 'Free'], ['Free', 'Cultural'], ['Cultural', 'Works\\nFree'], ['Works\\nFree', 'license\\nThe'], ['license\\nThe', 'Free'], ['Free', 'Software'], ['Software', 'Definition\\nThe'], ['Definition\\nThe', 'Open'], ['Open', 'Source'], ['Source', 'Definition\\nOpen-source'], ['Definition\\nOpen-source', 'license\\nPermissive'], ['license\\nPermissive', 'software'], ['software', 'licence\\nPublic'], ['licence\\nPublic', 'domain\\nViral'], ['domain\\nViral', 'license\\n\\n\\n\\n\\n\\nChallenges\\n\\n\\n\\nBinary'], ['license\\n\\n\\n\\n\\n\\nChallenges\\n\\n\\n\\nBinary', 'blob\\nDigital'], ['blob\\nDigital', 'rights'], ['rights', 'management\\nHardware'], ['management\\nHardware', 'restrictions\\nLicense'], ['restrictions\\nLicense', 'proliferation\\nMozilla'], ['proliferation\\nMozilla', 'software'], ['software', 'rebranding\\nProprietary'], ['rebranding\\nProprietary', 'software\\nSCO/Linux'], ['software\\nSCO/Linux', 'controversies\\nSecure'], ['controversies\\nSecure', 'boot\\nSoftware'], ['boot\\nSoftware', 'patents\\nSoftware'], ['patents\\nSoftware', 'security\\nTrusted'], ['security\\nTrusted', 'Computing\\n\\n\\n\\n\\n\\nRelated'], ['Computing\\n\\n\\n\\n\\n\\nRelated', 'topics\\n\\n\\n\\nThe'], ['topics\\n\\n\\n\\nThe', 'Cathedral'], ['Cathedral', 'and'], ['and', 'the'], ['the', 'Bazaar\\nForking\\nMicrosoft'], ['Bazaar\\nForking\\nMicrosoft', 'Open'], ['Open', 'Specification'], ['Specification', 'Promise\\nRevolution'], ['Promise\\nRevolution', 'OS\\n\\n\\n\\n\\n\\n\\n\\n\\n'], ['OS\\n\\n\\n\\n\\n\\n\\n\\n\\n', 'Book\\n'], ['Book\\n', 'Category\\n'], ['Category\\n', 'Commons\\n'], ['Commons\\n', 'Portal\\n\\n\\n\\n\\n\\n\\n\\n\\n\\nAuthority'], ['Portal\\n\\n\\n\\n\\n\\n\\n\\n\\n\\nAuthority', 'control\\n\\n\\n\\nLCCN:'], ['control\\n\\n\\n\\nLCCN:', 'sh96008834\\nGND:'], ['sh96008834\\nGND:', '4434275-5\\nSUDOC:'], ['4434275-5\\nSUDOC:', '051626225\\nBNF:'], ['051626225\\nBNF:', 'cb13560465c'], ['cb13560465c', '(data)\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n']]\n", + "2-grams count is: 8614\n" + ] + } + ], + "source": [ + "from urllib.request import urlopen\n", + "from bs4 import BeautifulSoup\n", + "\n", + "def getNgrams(content, n):\n", + " content = content.split(' ')\n", + " output = []\n", + " for i in range(len(content)-n+1):\n", + " output.append(content[i:i+n])\n", + " return output\n", + "\n", + "html = urlopen('http://en.wikipedia.org/wiki/Python_(programming_language)')\n", + "bs = BeautifulSoup(html, 'html.parser')\n", + "content = bs.find('div', {'id':'mw-content-text'}).get_text()\n", + "ngrams = getNgrams(content, 2)\n", + "print(ngrams)\n", + "print('2-grams count is: '+str(len(ngrams)))" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": {}, + "outputs": [], + "source": [ + "import re\n", + "\n", + "def getNgrams(content, n):\n", + " content = re.sub('\\n|[[\\d+\\]]', ' ', content)\n", + " content = bytes(content, 'UTF-8')\n", + " content = content.decode('ascii', 'ignore')\n", + " content = content.split(' ')\n", + " content = [word for word in content if word != '']\n", + " output = []\n", + " for i in range(len(content)-n+1):\n", + " output.append(content[i:i+n])\n", + " return output" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[['Python', 'Paradigm'], ['Paradigm', 'Object-oriented,'], ['Object-oriented,', 'imperative,'], ['imperative,', 'functional,'], ['functional,', 'procedural,'], ['procedural,', 'reflective'], ['reflective', 'Designedby'], ['Designedby', 'Guido'], ['Guido', 'van'], ['van', 'Rossum'], ['Rossum', 'Developer'], ['Developer', 'Python'], ['Python', 'Software'], ['Software', 'Foundation'], ['Foundation', 'Firstappeared'], ['Firstappeared', 'February'], ['February', ';'], [';', 'years'], ['years', 'ago('], ['ago(', '-'], ['-', '-'], ['-', ')'], [')', 'Stable'], ['Stable', 'release'], ['release', '.'], ['.', '.'], ['.', '/'], ['/', 'December'], ['December', ';'], [';', 'days'], ['days', 'ago('], ['ago(', '-'], ['-', '-'], ['-', ')'], [')', '.'], ['.', '.'], ['.', '/'], ['/', 'September'], ['September', ';'], [';', 'months'], ['months', 'ago('], ['ago(', '-'], ['-', '-'], ['-', ')'], [')', 'Typing'], ['Typing', 'discipline'], ['discipline', 'Duck,'], ['Duck,', 'dynamic,'], ['dynamic,', 'strong'], ['strong', 'License'], ['License', 'Python'], ['Python', 'Software'], ['Software', 'Foundation'], ['Foundation', 'License'], ['License', 'Filename'], ['Filename', 'extensions'], ['extensions', '.py,'], ['.py,', '.pyc,'], ['.pyc,', '.pyd,'], ['.pyd,', '.pyo'], ['.pyo', '(prior'], ['(prior', 'to'], ['to', '.'], ['.', '),'], ['),', '.pyw,'], ['.pyw,', '.pyz'], ['.pyz', '(since'], ['(since', '.'], ['.', ')'], [')', 'Website'], ['Website', 'python.org'], ['python.org', 'Major'], ['Major', 'implementations'], ['implementations', 'CPython,'], ['CPython,', 'IronPython,'], ['IronPython,', 'Jython,'], ['Jython,', 'MicroPython,'], ['MicroPython,', 'Numba,'], ['Numba,', 'PyPy,'], ['PyPy,', 'Stackless'], ['Stackless', 'Python'], ['Python', 'Dialects'], ['Dialects', 'Cython,'], ['Cython,', 'RPython'], ['RPython', 'Influenced'], ['Influenced', 'by'], ['by', 'ABC,'], ['ABC,', 'ALGOL'], ['ALGOL', ','], [',', 'C,'], ['C,', 'C'], ['C', ','], [',', 'CLU,'], ['CLU,', 'Dylan,'], ['Dylan,', 'Haskell,'], ['Haskell,', 'Icon,'], ['Icon,', 'Java,'], ['Java,', 'Lisp,'], ['Lisp,', 'Modula-'], ['Modula-', ','], [',', 'Perl'], ['Perl', 'Influenced'], ['Influenced', 'Boo,'], ['Boo,', 'Cobra,'], ['Cobra,', 'Coconut,'], ['Coconut,', 'CoffeeScript,'], ['CoffeeScript,', 'D,'], ['D,', 'F#,'], ['F#,', 'Falcon,'], ['Falcon,', 'Genie,'], ['Genie,', 'Go,'], ['Go,', 'Groovy,'], ['Groovy,', 'JavaScript,'], ['JavaScript,', 'Julia,'], ['Julia,', 'Nim,'], ['Nim,', 'Ring'], ['Ring', ','], [',', 'Ruby,'], ['Ruby,', 'Swift'], ['Swift', 'Python'], ['Python', 'Programming'], ['Programming', 'at'], ['at', 'Wikibooks'], ['Wikibooks', 'Python'], ['Python', 'is'], ['is', 'an'], ['an', 'interpreted'], ['interpreted', 'high-level'], ['high-level', 'programming'], ['programming', 'language'], ['language', 'for'], ['for', 'general-purpose'], ['general-purpose', 'programming.'], ['programming.', 'Created'], ['Created', 'by'], ['by', 'Guido'], ['Guido', 'van'], ['van', 'Rossum'], ['Rossum', 'and'], ['and', 'first'], ['first', 'released'], ['released', 'in'], ['in', ','], [',', 'Python'], ['Python', 'has'], ['has', 'a'], ['a', 'design'], ['design', 'philosophy'], ['philosophy', 'that'], ['that', 'emphasizes'], ['emphasizes', 'code'], ['code', 'readability,'], ['readability,', 'and'], ['and', 'a'], ['a', 'syntax'], ['syntax', 'that'], ['that', 'allows'], ['allows', 'programmers'], ['programmers', 'to'], ['to', 'express'], ['express', 'concepts'], ['concepts', 'in'], ['in', 'fewer'], ['fewer', 'lines'], ['lines', 'of'], ['of', 'code,'], ['code,', 'notably'], ['notably', 'using'], ['using', 'significant'], ['significant', 'whitespace.'], ['whitespace.', 'It'], ['It', 'provides'], ['provides', 'constructs'], ['constructs', 'that'], ['that', 'enable'], ['enable', 'clear'], ['clear', 'programming'], ['programming', 'on'], ['on', 'both'], ['both', 'small'], ['small', 'and'], ['and', 'large'], ['large', 'scales.'], ['scales.', 'Python'], ['Python', 'features'], ['features', 'a'], ['a', 'dynamic'], ['dynamic', 'type'], ['type', 'system'], ['system', 'and'], ['and', 'automatic'], ['automatic', 'memory'], ['memory', 'management.'], ['management.', 'It'], ['It', 'supports'], ['supports', 'multiple'], ['multiple', 'programming'], ['programming', 'paradigms,'], ['paradigms,', 'including'], ['including', 'object-oriented,'], ['object-oriented,', 'imperative,'], ['imperative,', 'functional'], ['functional', 'and'], ['and', 'procedural,'], ['procedural,', 'and'], ['and', 'has'], ['has', 'a'], ['a', 'large'], ['large', 'and'], ['and', 'comprehensive'], ['comprehensive', 'standard'], ['standard', 'library.'], ['library.', 'Python'], ['Python', 'interpreters'], ['interpreters', 'are'], ['are', 'available'], ['available', 'for'], ['for', 'many'], ['many', 'operating'], ['operating', 'systems.'], ['systems.', 'CPython,'], ['CPython,', 'the'], ['the', 'reference'], ['reference', 'implementation'], ['implementation', 'of'], ['of', 'Python,'], ['Python,', 'is'], ['is', 'open'], ['open', 'source'], ['source', 'software'], ['software', 'and'], ['and', 'has'], ['has', 'a'], ['a', 'community-based'], ['community-based', 'development'], ['development', 'model,'], ['model,', 'as'], ['as', 'do'], ['do', 'nearly'], ['nearly', 'all'], ['all', 'of'], ['of', 'its'], ['its', 'variant'], ['variant', 'implementations.'], ['implementations.', 'CPython'], ['CPython', 'is'], ['is', 'managed'], ['managed', 'by'], ['by', 'the'], ['the', 'non-profit'], ['non-profit', 'Python'], ['Python', 'Software'], ['Software', 'Foundation.'], ['Foundation.', 'Contents'], ['Contents', 'History'], ['History', 'Features'], ['Features', 'and'], ['and', 'philosophy'], ['philosophy', 'Syntax'], ['Syntax', 'and'], ['and', 'semantics'], ['semantics', '.'], ['.', 'Indentation'], ['Indentation', '.'], ['.', 'Statements'], ['Statements', 'and'], ['and', 'control'], ['control', 'flow'], ['flow', '.'], ['.', 'Expressions'], ['Expressions', '.'], ['.', 'Methods'], ['Methods', '.'], ['.', 'Typing'], ['Typing', '.'], ['.', 'Mathematics'], ['Mathematics', 'Libraries'], ['Libraries', 'Development'], ['Development', 'environments'], ['environments', 'Implementations'], ['Implementations', '.'], ['.', 'Reference'], ['Reference', 'implementation'], ['implementation', '.'], ['.', 'Other'], ['Other', 'implementations'], ['implementations', '.'], ['.', 'Unsupported'], ['Unsupported', 'implementations'], ['implementations', '.'], ['.', 'Cross-compilers'], ['Cross-compilers', 'to'], ['to', 'other'], ['other', 'languages'], ['languages', '.'], ['.', 'Performance'], ['Performance', 'Development'], ['Development', 'Naming'], ['Naming', 'Uses'], ['Uses', 'Languages'], ['Languages', 'influenced'], ['influenced', 'by'], ['by', 'Python'], ['Python', 'See'], ['See', 'also'], ['also', 'References'], ['References', 'Further'], ['Further', 'reading'], ['reading', 'External'], ['External', 'links'], ['links', 'History'], ['History', 'edit'], ['edit', 'Guido'], ['Guido', 'van'], ['van', 'Rossum,'], ['Rossum,', 'the'], ['the', 'creator'], ['creator', 'of'], ['of', 'Python'], ['Python', 'Main'], ['Main', 'article:'], ['article:', 'History'], ['History', 'of'], ['of', 'Python'], ['Python', 'Python'], ['Python', 'was'], ['was', 'conceived'], ['conceived', 'in'], ['in', 'the'], ['the', 'late'], ['late', 's,'], ['s,', 'and'], ['and', 'its'], ['its', 'implementation'], ['implementation', 'began'], ['began', 'in'], ['in', 'December'], ['December', 'by'], ['by', 'Guido'], ['Guido', 'van'], ['van', 'Rossum'], ['Rossum', 'at'], ['at', 'Centrum'], ['Centrum', 'Wiskunde'], ['Wiskunde', '&'], ['&', 'Informatica'], ['Informatica', '(CWI)'], ['(CWI)', 'in'], ['in', 'the'], ['the', 'Netherlands'], ['Netherlands', 'as'], ['as', 'a'], ['a', 'successor'], ['successor', 'to'], ['to', 'the'], ['the', 'ABC'], ['ABC', 'language'], ['language', '(itself'], ['(itself', 'inspired'], ['inspired', 'by'], ['by', 'SETL)'], ['SETL)', 'capable'], ['capable', 'of'], ['of', 'exception'], ['exception', 'handling'], ['handling', 'and'], ['and', 'interfacing'], ['interfacing', 'with'], ['with', 'the'], ['the', 'Amoeba'], ['Amoeba', 'operating'], ['operating', 'system.'], ['system.', 'Van'], ['Van', 'Rossum'], ['Rossum', 'remains'], ['remains', \"Python's\"], [\"Python's\", 'principal'], ['principal', 'author.'], ['author.', 'His'], ['His', 'continuing'], ['continuing', 'central'], ['central', 'role'], ['role', 'in'], ['in', \"Python's\"], [\"Python's\", 'development'], ['development', 'is'], ['is', 'reflected'], ['reflected', 'in'], ['in', 'the'], ['the', 'title'], ['title', 'given'], ['given', 'to'], ['to', 'him'], ['him', 'by'], ['by', 'the'], ['the', 'Python'], ['Python', 'community:'], ['community:', 'Benevolent'], ['Benevolent', 'Dictator'], ['Dictator', 'For'], ['For', 'Life'], ['Life', '(BDFL).'], ['(BDFL).', 'On'], ['On', 'the'], ['the', 'origins'], ['origins', 'of'], ['of', 'Python,'], ['Python,', 'Van'], ['Van', 'Rossum'], ['Rossum', 'wrote'], ['wrote', 'in'], ['in', ':'], [':', '...In'], ['...In', 'December'], ['December', ','], [',', 'I'], ['I', 'was'], ['was', 'looking'], ['looking', 'for'], ['for', 'a'], ['a', '\"hobby\"'], ['\"hobby\"', 'programming'], ['programming', 'project'], ['project', 'that'], ['that', 'would'], ['would', 'keep'], ['keep', 'me'], ['me', 'occupied'], ['occupied', 'during'], ['during', 'the'], ['the', 'week'], ['week', 'around'], ['around', 'Christmas.'], ['Christmas.', 'My'], ['My', 'office'], ['office', '...'], ['...', 'would'], ['would', 'be'], ['be', 'closed,'], ['closed,', 'but'], ['but', 'I'], ['I', 'had'], ['had', 'a'], ['a', 'home'], ['home', 'computer,'], ['computer,', 'and'], ['and', 'not'], ['not', 'much'], ['much', 'else'], ['else', 'on'], ['on', 'my'], ['my', 'hands.'], ['hands.', 'I'], ['I', 'decided'], ['decided', 'to'], ['to', 'write'], ['write', 'an'], ['an', 'interpreter'], ['interpreter', 'for'], ['for', 'the'], ['the', 'new'], ['new', 'scripting'], ['scripting', 'language'], ['language', 'I'], ['I', 'had'], ['had', 'been'], ['been', 'thinking'], ['thinking', 'about'], ['about', 'lately:'], ['lately:', 'a'], ['a', 'descendant'], ['descendant', 'of'], ['of', 'ABC'], ['ABC', 'that'], ['that', 'would'], ['would', 'appeal'], ['appeal', 'to'], ['to', 'Unix/C'], ['Unix/C', 'hackers.'], ['hackers.', 'I'], ['I', 'chose'], ['chose', 'Python'], ['Python', 'as'], ['as', 'a'], ['a', 'working'], ['working', 'title'], ['title', 'for'], ['for', 'the'], ['the', 'project,'], ['project,', 'being'], ['being', 'in'], ['in', 'a'], ['a', 'slightly'], ['slightly', 'irreverent'], ['irreverent', 'mood'], ['mood', '(and'], ['(and', 'a'], ['a', 'big'], ['big', 'fan'], ['fan', 'of'], ['of', 'Monty'], ['Monty', \"Python's\"], [\"Python's\", 'Flying'], ['Flying', 'Circus).'], ['Circus).', 'Python'], ['Python', '.'], ['.', 'was'], ['was', 'released'], ['released', 'on'], ['on', 'October'], ['October', 'and'], ['and', 'had'], ['had', 'many'], ['many', 'major'], ['major', 'new'], ['new', 'features,'], ['features,', 'including'], ['including', 'a'], ['a', 'cycle-detecting'], ['cycle-detecting', 'garbage'], ['garbage', 'collector'], ['collector', 'and'], ['and', 'support'], ['support', 'for'], ['for', 'Unicode.'], ['Unicode.', 'With'], ['With', 'this'], ['this', 'release,'], ['release,', 'the'], ['the', 'development'], ['development', 'process'], ['process', 'became'], ['became', 'more'], ['more', 'transparent'], ['transparent', 'and'], ['and', 'community-backed.'], ['community-backed.', 'Python'], ['Python', '.'], ['.', '(initially'], ['(initially', 'called'], ['called', 'Python'], ['Python', 'or'], ['or', 'py'], ['py', 'k)'], ['k)', 'was'], ['was', 'released'], ['released', 'on'], ['on', 'December'], ['December', 'after'], ['after', 'a'], ['a', 'long'], ['long', 'testing'], ['testing', 'period.'], ['period.', 'It'], ['It', 'is'], ['is', 'a'], ['a', 'major'], ['major', 'revision'], ['revision', 'of'], ['of', 'the'], ['the', 'language'], ['language', 'that'], ['that', 'is'], ['is', 'not'], ['not', 'backward-compatible'], ['backward-compatible', 'with'], ['with', 'previous'], ['previous', 'versions.'], ['versions.', 'However,'], ['However,', 'many'], ['many', 'of'], ['of', 'its'], ['its', 'major'], ['major', 'features'], ['features', 'have'], ['have', 'been'], ['been', 'backported'], ['backported', 'to'], ['to', 'the'], ['the', 'backward-compatible'], ['backward-compatible', 'Python'], ['Python', '.'], ['.', '.x'], ['.x', 'and'], ['and', '.'], ['.', '.x'], ['.x', 'version'], ['version', 'series.'], ['series.', 'Python'], ['Python', '.'], ['.', \"'s\"], [\"'s\", 'end-of-life'], ['end-of-life', 'date'], ['date', '(a.k.a.'], ['(a.k.a.', 'EOL,'], ['EOL,', 'sunset'], ['sunset', 'date)'], ['date)', 'was'], ['was', 'initially'], ['initially', 'set'], ['set', 'at'], ['at', ','], [',', 'then'], ['then', 'postponed'], ['postponed', 'to'], ['to', 'out'], ['out', 'of'], ['of', 'concern'], ['concern', 'that'], ['that', 'a'], ['a', 'large'], ['large', 'body'], ['body', 'of'], ['of', 'existing'], ['existing', 'code'], ['code', 'could'], ['could', 'not'], ['not', 'easily'], ['easily', 'be'], ['be', 'forward-ported'], ['forward-ported', 'to'], ['to', 'Python'], ['Python', '.'], ['.', 'In'], ['In', 'January'], ['January', ','], [',', 'Google'], ['Google', 'announced'], ['announced', 'work'], ['work', 'on'], ['on', 'a'], ['a', 'Python'], ['Python', '.'], ['.', 'to'], ['to', 'Go'], ['Go', 'transcompiler.'], ['transcompiler.', 'The'], ['The', 'Register'], ['Register', 'speculated'], ['speculated', 'that'], ['that', 'this'], ['this', 'was'], ['was', 'in'], ['in', 'response'], ['response', 'to'], ['to', 'Python'], ['Python', '.'], ['.', \"'s\"], [\"'s\", 'planned'], ['planned', 'end-of-life'], ['end-of-life', ','], [',', 'but'], ['but', 'Google'], ['Google', 'cited'], ['cited', 'performance'], ['performance', 'under'], ['under', 'concurrent'], ['concurrent', 'workloads'], ['workloads', 'as'], ['as', 'their'], ['their', 'only'], ['only', 'motivation.'], ['motivation.', 'Features'], ['Features', 'and'], ['and', 'philosophy'], ['philosophy', 'edit'], ['edit', 'Python'], ['Python', 'is'], ['is', 'a'], ['a', 'multi-paradigm'], ['multi-paradigm', 'programming'], ['programming', 'language.'], ['language.', 'Object-oriented'], ['Object-oriented', 'programming'], ['programming', 'and'], ['and', 'structured'], ['structured', 'programming'], ['programming', 'are'], ['are', 'fully'], ['fully', 'supported,'], ['supported,', 'and'], ['and', 'many'], ['many', 'of'], ['of', 'its'], ['its', 'features'], ['features', 'support'], ['support', 'functional'], ['functional', 'programming'], ['programming', 'and'], ['and', 'aspect-oriented'], ['aspect-oriented', 'programming'], ['programming', '(including'], ['(including', 'by'], ['by', 'metaprogramming'], ['metaprogramming', 'and'], ['and', 'metaobjects'], ['metaobjects', '(magic'], ['(magic', 'methods)).'], ['methods)).', 'Many'], ['Many', 'other'], ['other', 'paradigms'], ['paradigms', 'are'], ['are', 'supported'], ['supported', 'via'], ['via', 'extensions,'], ['extensions,', 'including'], ['including', 'design'], ['design', 'by'], ['by', 'contract'], ['contract', 'and'], ['and', 'logic'], ['logic', 'programming.'], ['programming.', 'Python'], ['Python', 'uses'], ['uses', 'dynamic'], ['dynamic', 'typing,'], ['typing,', 'and'], ['and', 'a'], ['a', 'combination'], ['combination', 'of'], ['of', 'reference'], ['reference', 'counting'], ['counting', 'and'], ['and', 'a'], ['a', 'cycle-detecting'], ['cycle-detecting', 'garbage'], ['garbage', 'collector'], ['collector', 'for'], ['for', 'memory'], ['memory', 'management.'], ['management.', 'It'], ['It', 'also'], ['also', 'features'], ['features', 'dynamic'], ['dynamic', 'name'], ['name', 'resolution'], ['resolution', '(late'], ['(late', 'binding),'], ['binding),', 'which'], ['which', 'binds'], ['binds', 'method'], ['method', 'and'], ['and', 'variable'], ['variable', 'names'], ['names', 'during'], ['during', 'program'], ['program', 'execution.'], ['execution.', \"Python's\"], [\"Python's\", 'design'], ['design', 'offers'], ['offers', 'some'], ['some', 'support'], ['support', 'for'], ['for', 'functional'], ['functional', 'programming'], ['programming', 'in'], ['in', 'the'], ['the', 'Lisp'], ['Lisp', 'tradition.'], ['tradition.', 'It'], ['It', 'has'], ['has', 'filter(),'], ['filter(),', 'map(),'], ['map(),', 'and'], ['and', 'reduce()'], ['reduce()', 'functions;'], ['functions;', 'list'], ['list', 'comprehensions,'], ['comprehensions,', 'dictionaries,'], ['dictionaries,', 'and'], ['and', 'sets;'], ['sets;', 'and'], ['and', 'generator'], ['generator', 'expressions.'], ['expressions.', 'The'], ['The', 'standard'], ['standard', 'library'], ['library', 'has'], ['has', 'two'], ['two', 'modules'], ['modules', '(itertools'], ['(itertools', 'and'], ['and', 'functools)'], ['functools)', 'that'], ['that', 'implement'], ['implement', 'functional'], ['functional', 'tools'], ['tools', 'borrowed'], ['borrowed', 'from'], ['from', 'Haskell'], ['Haskell', 'and'], ['and', 'Standard'], ['Standard', 'ML.'], ['ML.', 'The'], ['The', \"language's\"], [\"language's\", 'core'], ['core', 'philosophy'], ['philosophy', 'is'], ['is', 'summarized'], ['summarized', 'in'], ['in', 'the'], ['the', 'document'], ['document', 'The'], ['The', 'Zen'], ['Zen', 'of'], ['of', 'Python'], ['Python', '(PEP'], ['(PEP', '),'], ['),', 'which'], ['which', 'includes'], ['includes', 'aphorisms'], ['aphorisms', 'such'], ['such', 'as:'], ['as:', 'Beautiful'], ['Beautiful', 'is'], ['is', 'better'], ['better', 'than'], ['than', 'ugly'], ['ugly', 'Explicit'], ['Explicit', 'is'], ['is', 'better'], ['better', 'than'], ['than', 'implicit'], ['implicit', 'Simple'], ['Simple', 'is'], ['is', 'better'], ['better', 'than'], ['than', 'complex'], ['complex', 'Complex'], ['Complex', 'is'], ['is', 'better'], ['better', 'than'], ['than', 'complicated'], ['complicated', 'Readability'], ['Readability', 'counts'], ['counts', 'Rather'], ['Rather', 'than'], ['than', 'having'], ['having', 'all'], ['all', 'of'], ['of', 'its'], ['its', 'functionality'], ['functionality', 'built'], ['built', 'into'], ['into', 'its'], ['its', 'core,'], ['core,', 'Python'], ['Python', 'was'], ['was', 'designed'], ['designed', 'to'], ['to', 'be'], ['be', 'highly'], ['highly', 'extensible.'], ['extensible.', 'This'], ['This', 'compact'], ['compact', 'modularity'], ['modularity', 'has'], ['has', 'made'], ['made', 'it'], ['it', 'particularly'], ['particularly', 'popular'], ['popular', 'as'], ['as', 'a'], ['a', 'means'], ['means', 'of'], ['of', 'adding'], ['adding', 'programmable'], ['programmable', 'interfaces'], ['interfaces', 'to'], ['to', 'existing'], ['existing', 'applications.'], ['applications.', 'Van'], ['Van', \"Rossum's\"], [\"Rossum's\", 'vision'], ['vision', 'of'], ['of', 'a'], ['a', 'small'], ['small', 'core'], ['core', 'language'], ['language', 'with'], ['with', 'a'], ['a', 'large'], ['large', 'standard'], ['standard', 'library'], ['library', 'and'], ['and', 'easily'], ['easily', 'extensible'], ['extensible', 'interpreter'], ['interpreter', 'stemmed'], ['stemmed', 'from'], ['from', 'his'], ['his', 'frustrations'], ['frustrations', 'with'], ['with', 'ABC,'], ['ABC,', 'which'], ['which', 'espoused'], ['espoused', 'the'], ['the', 'opposite'], ['opposite', 'approach.'], ['approach.', 'While'], ['While', 'offering'], ['offering', 'choice'], ['choice', 'in'], ['in', 'coding'], ['coding', 'methodology,'], ['methodology,', 'the'], ['the', 'Python'], ['Python', 'philosophy'], ['philosophy', 'rejects'], ['rejects', 'exuberant'], ['exuberant', 'syntax'], ['syntax', '(such'], ['(such', 'as'], ['as', 'that'], ['that', 'of'], ['of', 'Perl)'], ['Perl)', 'in'], ['in', 'favor'], ['favor', 'of'], ['of', 'a'], ['a', 'simpler,'], ['simpler,', 'less-cluttered'], ['less-cluttered', 'grammar.'], ['grammar.', 'As'], ['As', 'Alex'], ['Alex', 'Martelli'], ['Martelli', 'put'], ['put', 'it:'], ['it:', '\"To'], ['\"To', 'describe'], ['describe', 'something'], ['something', 'as'], ['as', \"'clever'\"], [\"'clever'\", 'is'], ['is', 'not'], ['not', 'considered'], ['considered', 'a'], ['a', 'compliment'], ['compliment', 'in'], ['in', 'the'], ['the', 'Python'], ['Python', 'culture.\"'], ['culture.\"', \"Python's\"], [\"Python's\", 'philosophy'], ['philosophy', 'rejects'], ['rejects', 'the'], ['the', 'Perl'], ['Perl', '\"there'], ['\"there', 'is'], ['is', 'more'], ['more', 'than'], ['than', 'one'], ['one', 'way'], ['way', 'to'], ['to', 'do'], ['do', 'it\"'], ['it\"', 'approach'], ['approach', 'to'], ['to', 'language'], ['language', 'design'], ['design', 'in'], ['in', 'favor'], ['favor', 'of'], ['of', '\"there'], ['\"there', 'should'], ['should', 'be'], ['be', 'oneand'], ['oneand', 'preferably'], ['preferably', 'only'], ['only', 'oneobvious'], ['oneobvious', 'way'], ['way', 'to'], ['to', 'do'], ['do', 'it\".'], ['it\".', \"Python's\"], [\"Python's\", 'developers'], ['developers', 'strive'], ['strive', 'to'], ['to', 'avoid'], ['avoid', 'premature'], ['premature', 'optimization,'], ['optimization,', 'and'], ['and', 'reject'], ['reject', 'patches'], ['patches', 'to'], ['to', 'non-critical'], ['non-critical', 'parts'], ['parts', 'of'], ['of', 'CPython'], ['CPython', 'that'], ['that', 'would'], ['would', 'offer'], ['offer', 'marginal'], ['marginal', 'increases'], ['increases', 'in'], ['in', 'speed'], ['speed', 'at'], ['at', 'the'], ['the', 'cost'], ['cost', 'of'], ['of', 'clarity.'], ['clarity.', 'When'], ['When', 'speed'], ['speed', 'is'], ['is', 'important,'], ['important,', 'a'], ['a', 'Python'], ['Python', 'programmer'], ['programmer', 'can'], ['can', 'move'], ['move', 'time-critical'], ['time-critical', 'functions'], ['functions', 'to'], ['to', 'extension'], ['extension', 'modules'], ['modules', 'written'], ['written', 'in'], ['in', 'languages'], ['languages', 'such'], ['such', 'as'], ['as', 'C,'], ['C,', 'or'], ['or', 'use'], ['use', 'PyPy,'], ['PyPy,', 'a'], ['a', 'just-in-time'], ['just-in-time', 'compiler.'], ['compiler.', 'Cython'], ['Cython', 'is'], ['is', 'also'], ['also', 'available,'], ['available,', 'which'], ['which', 'translates'], ['translates', 'a'], ['a', 'Python'], ['Python', 'script'], ['script', 'into'], ['into', 'C'], ['C', 'and'], ['and', 'makes'], ['makes', 'direct'], ['direct', 'C-level'], ['C-level', 'API'], ['API', 'calls'], ['calls', 'into'], ['into', 'the'], ['the', 'Python'], ['Python', 'interpreter.'], ['interpreter.', 'An'], ['An', 'important'], ['important', 'goal'], ['goal', 'of'], ['of', \"Python's\"], [\"Python's\", 'developers'], ['developers', 'is'], ['is', 'keeping'], ['keeping', 'it'], ['it', 'fun'], ['fun', 'to'], ['to', 'use.'], ['use.', 'This'], ['This', 'is'], ['is', 'reflected'], ['reflected', 'in'], ['in', 'the'], ['the', \"language's\"], [\"language's\", 'namea'], ['namea', 'tribute'], ['tribute', 'to'], ['to', 'the'], ['the', 'British'], ['British', 'comedy'], ['comedy', 'group'], ['group', 'Monty'], ['Monty', 'Python'], ['Python', 'and'], ['and', 'in'], ['in', 'occasionally'], ['occasionally', 'playful'], ['playful', 'approaches'], ['approaches', 'to'], ['to', 'tutorials'], ['tutorials', 'and'], ['and', 'reference'], ['reference', 'materials,'], ['materials,', 'such'], ['such', 'as'], ['as', 'examples'], ['examples', 'that'], ['that', 'refer'], ['refer', 'to'], ['to', 'spam'], ['spam', 'and'], ['and', 'eggs'], ['eggs', '(from'], ['(from', 'a'], ['a', 'famous'], ['famous', 'Monty'], ['Monty', 'Python'], ['Python', 'sketch)'], ['sketch)', 'instead'], ['instead', 'of'], ['of', 'the'], ['the', 'standard'], ['standard', 'foo'], ['foo', 'and'], ['and', 'bar.'], ['bar.', 'A'], ['A', 'common'], ['common', 'neologism'], ['neologism', 'in'], ['in', 'the'], ['the', 'Python'], ['Python', 'community'], ['community', 'is'], ['is', 'pythonic,'], ['pythonic,', 'which'], ['which', 'can'], ['can', 'have'], ['have', 'a'], ['a', 'wide'], ['wide', 'range'], ['range', 'of'], ['of', 'meanings'], ['meanings', 'related'], ['related', 'to'], ['to', 'program'], ['program', 'style.'], ['style.', 'To'], ['To', 'say'], ['say', 'that'], ['that', 'code'], ['code', 'is'], ['is', 'pythonic'], ['pythonic', 'is'], ['is', 'to'], ['to', 'say'], ['say', 'that'], ['that', 'it'], ['it', 'uses'], ['uses', 'Python'], ['Python', 'idioms'], ['idioms', 'well,'], ['well,', 'that'], ['that', 'it'], ['it', 'is'], ['is', 'natural'], ['natural', 'or'], ['or', 'shows'], ['shows', 'fluency'], ['fluency', 'in'], ['in', 'the'], ['the', 'language,'], ['language,', 'that'], ['that', 'it'], ['it', 'conforms'], ['conforms', 'with'], ['with', \"Python's\"], [\"Python's\", 'minimalist'], ['minimalist', 'philosophy'], ['philosophy', 'and'], ['and', 'emphasis'], ['emphasis', 'on'], ['on', 'readability.'], ['readability.', 'In'], ['In', 'contrast,'], ['contrast,', 'code'], ['code', 'that'], ['that', 'is'], ['is', 'difficult'], ['difficult', 'to'], ['to', 'understand'], ['understand', 'or'], ['or', 'reads'], ['reads', 'like'], ['like', 'a'], ['a', 'rough'], ['rough', 'transcription'], ['transcription', 'from'], ['from', 'another'], ['another', 'programming'], ['programming', 'language'], ['language', 'is'], ['is', 'called'], ['called', 'unpythonic.'], ['unpythonic.', 'Users'], ['Users', 'and'], ['and', 'admirers'], ['admirers', 'of'], ['of', 'Python,'], ['Python,', 'especially'], ['especially', 'those'], ['those', 'considered'], ['considered', 'knowledgeable'], ['knowledgeable', 'or'], ['or', 'experienced,'], ['experienced,', 'are'], ['are', 'often'], ['often', 'referred'], ['referred', 'to'], ['to', 'as'], ['as', 'Pythonists,'], ['Pythonists,', 'Pythonistas,'], ['Pythonistas,', 'and'], ['and', 'Pythoneers.'], ['Pythoneers.', 'Syntax'], ['Syntax', 'and'], ['and', 'semantics'], ['semantics', 'edit'], ['edit', 'Main'], ['Main', 'article:'], ['article:', 'Python'], ['Python', 'syntax'], ['syntax', 'and'], ['and', 'semantics'], ['semantics', 'Python'], ['Python', 'is'], ['is', 'meant'], ['meant', 'to'], ['to', 'be'], ['be', 'an'], ['an', 'easily'], ['easily', 'readable'], ['readable', 'language.'], ['language.', 'Its'], ['Its', 'formatting'], ['formatting', 'is'], ['is', 'visually'], ['visually', 'uncluttered,'], ['uncluttered,', 'and'], ['and', 'it'], ['it', 'often'], ['often', 'uses'], ['uses', 'English'], ['English', 'keywords'], ['keywords', 'where'], ['where', 'other'], ['other', 'languages'], ['languages', 'use'], ['use', 'punctuation.'], ['punctuation.', 'Unlike'], ['Unlike', 'many'], ['many', 'other'], ['other', 'languages,'], ['languages,', 'it'], ['it', 'does'], ['does', 'not'], ['not', 'use'], ['use', 'curly'], ['curly', 'brackets'], ['brackets', 'to'], ['to', 'delimit'], ['delimit', 'blocks,'], ['blocks,', 'and'], ['and', 'semicolons'], ['semicolons', 'after'], ['after', 'statements'], ['statements', 'are'], ['are', 'optional.'], ['optional.', 'It'], ['It', 'has'], ['has', 'fewer'], ['fewer', 'syntactic'], ['syntactic', 'exceptions'], ['exceptions', 'and'], ['and', 'special'], ['special', 'cases'], ['cases', 'than'], ['than', 'C'], ['C', 'or'], ['or', 'Pascal.'], ['Pascal.', 'Indentation'], ['Indentation', 'edit'], ['edit', 'Main'], ['Main', 'article:'], ['article:', 'Python'], ['Python', 'syntax'], ['syntax', 'and'], ['and', 'semantics'], ['semantics', 'Indentation'], ['Indentation', 'Python'], ['Python', 'uses'], ['uses', 'whitespace'], ['whitespace', 'indentation,'], ['indentation,', 'rather'], ['rather', 'than'], ['than', 'curly'], ['curly', 'braces'], ['braces', 'or'], ['or', 'keywords,'], ['keywords,', 'to'], ['to', 'delimit'], ['delimit', 'blocks.'], ['blocks.', 'An'], ['An', 'increase'], ['increase', 'in'], ['in', 'indentation'], ['indentation', 'comes'], ['comes', 'after'], ['after', 'certain'], ['certain', 'statements;'], ['statements;', 'a'], ['a', 'decrease'], ['decrease', 'in'], ['in', 'indentation'], ['indentation', 'signifies'], ['signifies', 'the'], ['the', 'end'], ['end', 'of'], ['of', 'the'], ['the', 'current'], ['current', 'block.'], ['block.', 'This'], ['This', 'feature'], ['feature', 'is'], ['is', 'also'], ['also', 'sometimes'], ['sometimes', 'termed'], ['termed', 'the'], ['the', 'off-side'], ['off-side', 'rule.'], ['rule.', 'Statements'], ['Statements', 'and'], ['and', 'control'], ['control', 'flow'], ['flow', 'edit'], ['edit', \"Python's\"], [\"Python's\", 'statements'], ['statements', 'include'], ['include', '(among'], ['(among', 'others):'], ['others):', 'The'], ['The', 'assignment'], ['assignment', 'statement'], ['statement', '(token'], ['(token', \"'=',\"], [\"'=',\", 'the'], ['the', 'equals'], ['equals', 'sign).'], ['sign).', 'This'], ['This', 'operates'], ['operates', 'differently'], ['differently', 'than'], ['than', 'in'], ['in', 'traditional'], ['traditional', 'imperative'], ['imperative', 'programming'], ['programming', 'languages,'], ['languages,', 'and'], ['and', 'this'], ['this', 'fundamental'], ['fundamental', 'mechanism'], ['mechanism', '(including'], ['(including', 'the'], ['the', 'nature'], ['nature', 'of'], ['of', \"Python's\"], [\"Python's\", 'version'], ['version', 'of'], ['of', 'variables)'], ['variables)', 'illuminates'], ['illuminates', 'many'], ['many', 'other'], ['other', 'features'], ['features', 'of'], ['of', 'the'], ['the', 'language.'], ['language.', 'Assignment'], ['Assignment', 'in'], ['in', 'C,'], ['C,', 'e.g.,'], ['e.g.,', 'x'], ['x', '='], ['=', ','], [',', 'translates'], ['translates', 'to'], ['to', '\"typed'], ['\"typed', 'variable'], ['variable', 'name'], ['name', 'x'], ['x', 'receives'], ['receives', 'a'], ['a', 'copy'], ['copy', 'of'], ['of', 'numeric'], ['numeric', 'value'], ['value', '\".'], ['\".', 'The'], ['The', '(right-hand)'], ['(right-hand)', 'value'], ['value', 'is'], ['is', 'copied'], ['copied', 'into'], ['into', 'an'], ['an', 'allocated'], ['allocated', 'storage'], ['storage', 'location'], ['location', 'for'], ['for', 'which'], ['which', 'the'], ['the', '(left-hand)'], ['(left-hand)', 'variable'], ['variable', 'name'], ['name', 'is'], ['is', 'the'], ['the', 'symbolic'], ['symbolic', 'address.'], ['address.', 'The'], ['The', 'memory'], ['memory', 'allocated'], ['allocated', 'to'], ['to', 'the'], ['the', 'variable'], ['variable', 'is'], ['is', 'large'], ['large', 'enough'], ['enough', '(potentially'], ['(potentially', 'quite'], ['quite', 'large)'], ['large)', 'for'], ['for', 'the'], ['the', 'declared'], ['declared', 'type.'], ['type.', 'In'], ['In', 'the'], ['the', 'simplest'], ['simplest', 'case'], ['case', 'of'], ['of', 'Python'], ['Python', 'assignment,'], ['assignment,', 'using'], ['using', 'the'], ['the', 'same'], ['same', 'example,'], ['example,', 'x'], ['x', '='], ['=', ','], [',', 'translates'], ['translates', 'to'], ['to', '\"(generic)'], ['\"(generic)', 'name'], ['name', 'x'], ['x', 'receives'], ['receives', 'a'], ['a', 'reference'], ['reference', 'to'], ['to', 'a'], ['a', 'separate,'], ['separate,', 'dynamically'], ['dynamically', 'allocated'], ['allocated', 'object'], ['object', 'of'], ['of', 'numeric'], ['numeric', '(int)'], ['(int)', 'type'], ['type', 'of'], ['of', 'value'], ['value', '.\"'], ['.\"', 'This'], ['This', 'is'], ['is', 'termed'], ['termed', 'binding'], ['binding', 'the'], ['the', 'name'], ['name', 'to'], ['to', 'the'], ['the', 'object.'], ['object.', 'Since'], ['Since', 'the'], ['the', \"name's\"], [\"name's\", 'storage'], ['storage', 'location'], ['location', \"doesn't\"], [\"doesn't\", 'contain'], ['contain', 'the'], ['the', 'indicated'], ['indicated', 'value,'], ['value,', 'it'], ['it', 'is'], ['is', 'improper'], ['improper', 'to'], ['to', 'call'], ['call', 'it'], ['it', 'a'], ['a', 'variable.'], ['variable.', 'Names'], ['Names', 'may'], ['may', 'be'], ['be', 'subsequently'], ['subsequently', 'rebound'], ['rebound', 'at'], ['at', 'any'], ['any', 'time'], ['time', 'to'], ['to', 'objects'], ['objects', 'of'], ['of', 'greatly'], ['greatly', 'varying'], ['varying', 'types,'], ['types,', 'including'], ['including', 'strings,'], ['strings,', 'procedures,'], ['procedures,', 'complex'], ['complex', 'objects'], ['objects', 'with'], ['with', 'data'], ['data', 'and'], ['and', 'methods,'], ['methods,', 'etc.'], ['etc.', 'Successive'], ['Successive', 'assignments'], ['assignments', 'of'], ['of', 'a'], ['a', 'common'], ['common', 'value'], ['value', 'to'], ['to', 'multiple'], ['multiple', 'names,'], ['names,', 'e.g.,'], ['e.g.,', 'x'], ['x', '='], ['=', ';'], [';', 'y'], ['y', '='], ['=', ';'], [';', 'z'], ['z', '='], ['=', 'result'], ['result', 'in'], ['in', 'allocating'], ['allocating', 'storage'], ['storage', 'to'], ['to', '(at'], ['(at', 'most)'], ['most)', 'three'], ['three', 'names'], ['names', 'and'], ['and', 'one'], ['one', 'numeric'], ['numeric', 'object,'], ['object,', 'to'], ['to', 'which'], ['which', 'all'], ['all', 'three'], ['three', 'names'], ['names', 'are'], ['are', 'bound.'], ['bound.', 'Since'], ['Since', 'a'], ['a', 'name'], ['name', 'is'], ['is', 'a'], ['a', 'generic'], ['generic', 'reference'], ['reference', 'holder'], ['holder', 'it'], ['it', 'is'], ['is', 'unreasonable'], ['unreasonable', 'to'], ['to', 'associate'], ['associate', 'a'], ['a', 'fixed'], ['fixed', 'data'], ['data', 'type'], ['type', 'with'], ['with', 'it.'], ['it.', 'However'], ['However', 'at'], ['at', 'a'], ['a', 'given'], ['given', 'time'], ['time', 'a'], ['a', 'name'], ['name', 'will'], ['will', 'be'], ['be', 'bound'], ['bound', 'to'], ['to', 'some'], ['some', 'object,'], ['object,', 'which'], ['which', 'will'], ['will', 'have'], ['have', 'a'], ['a', 'type;'], ['type;', 'thus'], ['thus', 'there'], ['there', 'is'], ['is', 'dynamic'], ['dynamic', 'typing.'], ['typing.', 'The'], ['The', 'if'], ['if', 'statement,'], ['statement,', 'which'], ['which', 'conditionally'], ['conditionally', 'executes'], ['executes', 'a'], ['a', 'block'], ['block', 'of'], ['of', 'code,'], ['code,', 'along'], ['along', 'with'], ['with', 'else'], ['else', 'and'], ['and', 'elif'], ['elif', '(a'], ['(a', 'contraction'], ['contraction', 'of'], ['of', 'else-if).'], ['else-if).', 'The'], ['The', 'for'], ['for', 'statement,'], ['statement,', 'which'], ['which', 'iterates'], ['iterates', 'over'], ['over', 'an'], ['an', 'iterable'], ['iterable', 'object,'], ['object,', 'capturing'], ['capturing', 'each'], ['each', 'element'], ['element', 'to'], ['to', 'a'], ['a', 'local'], ['local', 'variable'], ['variable', 'for'], ['for', 'use'], ['use', 'by'], ['by', 'the'], ['the', 'attached'], ['attached', 'block.'], ['block.', 'The'], ['The', 'while'], ['while', 'statement,'], ['statement,', 'which'], ['which', 'executes'], ['executes', 'a'], ['a', 'block'], ['block', 'of'], ['of', 'code'], ['code', 'as'], ['as', 'long'], ['long', 'as'], ['as', 'its'], ['its', 'condition'], ['condition', 'is'], ['is', 'true.'], ['true.', 'The'], ['The', 'try'], ['try', 'statement,'], ['statement,', 'which'], ['which', 'allows'], ['allows', 'exceptions'], ['exceptions', 'raised'], ['raised', 'in'], ['in', 'its'], ['its', 'attached'], ['attached', 'code'], ['code', 'block'], ['block', 'to'], ['to', 'be'], ['be', 'caught'], ['caught', 'and'], ['and', 'handled'], ['handled', 'by'], ['by', 'except'], ['except', 'clauses;'], ['clauses;', 'it'], ['it', 'also'], ['also', 'ensures'], ['ensures', 'that'], ['that', 'clean-up'], ['clean-up', 'code'], ['code', 'in'], ['in', 'a'], ['a', 'finally'], ['finally', 'block'], ['block', 'will'], ['will', 'always'], ['always', 'be'], ['be', 'run'], ['run', 'regardless'], ['regardless', 'of'], ['of', 'how'], ['how', 'the'], ['the', 'block'], ['block', 'exits.'], ['exits.', 'The'], ['The', 'class'], ['class', 'statement,'], ['statement,', 'which'], ['which', 'executes'], ['executes', 'a'], ['a', 'block'], ['block', 'of'], ['of', 'code'], ['code', 'and'], ['and', 'attaches'], ['attaches', 'its'], ['its', 'local'], ['local', 'namespace'], ['namespace', 'to'], ['to', 'a'], ['a', 'class,'], ['class,', 'for'], ['for', 'use'], ['use', 'in'], ['in', 'object-oriented'], ['object-oriented', 'programming.'], ['programming.', 'The'], ['The', 'def'], ['def', 'statement,'], ['statement,', 'which'], ['which', 'defines'], ['defines', 'a'], ['a', 'function'], ['function', 'or'], ['or', 'method.'], ['method.', 'The'], ['The', 'with'], ['with', 'statement'], ['statement', '(from'], ['(from', 'Python'], ['Python', '.'], ['.', '),'], ['),', 'which'], ['which', 'encloses'], ['encloses', 'a'], ['a', 'code'], ['code', 'block'], ['block', 'within'], ['within', 'a'], ['a', 'context'], ['context', 'manager'], ['manager', '(for'], ['(for', 'example,'], ['example,', 'acquiring'], ['acquiring', 'a'], ['a', 'lock'], ['lock', 'before'], ['before', 'the'], ['the', 'block'], ['block', 'of'], ['of', 'code'], ['code', 'is'], ['is', 'run'], ['run', 'and'], ['and', 'releasing'], ['releasing', 'the'], ['the', 'lock'], ['lock', 'afterwards,'], ['afterwards,', 'or'], ['or', 'opening'], ['opening', 'a'], ['a', 'file'], ['file', 'and'], ['and', 'then'], ['then', 'closing'], ['closing', 'it),'], ['it),', 'allowing'], ['allowing', 'Resource'], ['Resource', 'Acquisition'], ['Acquisition', 'Is'], ['Is', 'Initialization'], ['Initialization', '(RAII)-like'], ['(RAII)-like', 'behavior.'], ['behavior.', 'The'], ['The', 'pass'], ['pass', 'statement,'], ['statement,', 'which'], ['which', 'serves'], ['serves', 'as'], ['as', 'a'], ['a', 'NOP.'], ['NOP.', 'It'], ['It', 'is'], ['is', 'syntactically'], ['syntactically', 'needed'], ['needed', 'to'], ['to', 'create'], ['create', 'an'], ['an', 'empty'], ['empty', 'code'], ['code', 'block.'], ['block.', 'The'], ['The', 'assert'], ['assert', 'statement,'], ['statement,', 'used'], ['used', 'during'], ['during', 'debugging'], ['debugging', 'to'], ['to', 'check'], ['check', 'for'], ['for', 'conditions'], ['conditions', 'that'], ['that', 'ought'], ['ought', 'to'], ['to', 'apply.'], ['apply.', 'The'], ['The', 'yield'], ['yield', 'statement,'], ['statement,', 'which'], ['which', 'returns'], ['returns', 'a'], ['a', 'value'], ['value', 'from'], ['from', 'a'], ['a', 'generator'], ['generator', 'function.'], ['function.', 'From'], ['From', 'Python'], ['Python', '.'], ['.', ','], [',', 'yield'], ['yield', 'is'], ['is', 'also'], ['also', 'an'], ['an', 'operator.'], ['operator.', 'This'], ['This', 'form'], ['form', 'is'], ['is', 'used'], ['used', 'to'], ['to', 'implement'], ['implement', 'coroutines.'], ['coroutines.', 'The'], ['The', 'import'], ['import', 'statement,'], ['statement,', 'which'], ['which', 'is'], ['is', 'used'], ['used', 'to'], ['to', 'import'], ['import', 'modules'], ['modules', 'whose'], ['whose', 'functions'], ['functions', 'or'], ['or', 'variables'], ['variables', 'can'], ['can', 'be'], ['be', 'used'], ['used', 'in'], ['in', 'the'], ['the', 'current'], ['current', 'program.'], ['program.', 'There'], ['There', 'are'], ['are', 'two'], ['two', 'ways'], ['ways', 'of'], ['of', 'using'], ['using', 'import:'], ['import:', 'from'], ['from', ''], ['name>', 'import'], ['import', '*'], ['*', 'or'], ['or', 'import'], ['import', '.'], ['name>.', 'The'], ['The', 'print'], ['print', 'statement'], ['statement', 'was'], ['was', 'changed'], ['changed', 'to'], ['to', 'the'], ['the', 'print()'], ['print()', 'function'], ['function', 'in'], ['in', 'Python'], ['Python', '.'], ['.', 'Python'], ['Python', 'does'], ['does', 'not'], ['not', 'support'], ['support', 'tail'], ['tail', 'call'], ['call', 'optimization'], ['optimization', 'or'], ['or', 'first-class'], ['first-class', 'continuations,'], ['continuations,', 'and,'], ['and,', 'according'], ['according', 'to'], ['to', 'Guido'], ['Guido', 'van'], ['van', 'Rossum,'], ['Rossum,', 'it'], ['it', 'never'], ['never', 'will.'], ['will.', 'However,'], ['However,', 'better'], ['better', 'support'], ['support', 'for'], ['for', 'coroutine-like'], ['coroutine-like', 'functionality'], ['functionality', 'is'], ['is', 'provided'], ['provided', 'in'], ['in', '.'], ['.', ','], [',', 'by'], ['by', 'extending'], ['extending', \"Python's\"], [\"Python's\", 'generators.'], ['generators.', 'Before'], ['Before', '.'], ['.', ','], [',', 'generators'], ['generators', 'were'], ['were', 'lazy'], ['lazy', 'iterators;'], ['iterators;', 'information'], ['information', 'was'], ['was', 'passed'], ['passed', 'unidirectionally'], ['unidirectionally', 'out'], ['out', 'of'], ['of', 'the'], ['the', 'generator.'], ['generator.', 'From'], ['From', 'Python'], ['Python', '.'], ['.', ','], [',', 'it'], ['it', 'is'], ['is', 'possible'], ['possible', 'to'], ['to', 'pass'], ['pass', 'information'], ['information', 'back'], ['back', 'into'], ['into', 'a'], ['a', 'generator'], ['generator', 'function,'], ['function,', 'and'], ['and', 'from'], ['from', 'Python'], ['Python', '.'], ['.', ','], [',', 'the'], ['the', 'information'], ['information', 'can'], ['can', 'be'], ['be', 'passed'], ['passed', 'through'], ['through', 'multiple'], ['multiple', 'stack'], ['stack', 'levels.'], ['levels.', 'Expressions'], ['Expressions', 'edit'], ['edit', 'Some'], ['Some', 'Python'], ['Python', 'expressions'], ['expressions', 'are'], ['are', 'similar'], ['similar', 'to'], ['to', 'languages'], ['languages', 'such'], ['such', 'as'], ['as', 'C'], ['C', 'and'], ['and', 'Java,'], ['Java,', 'while'], ['while', 'some'], ['some', 'are'], ['are', 'not:'], ['not:', 'Addition,'], ['Addition,', 'subtraction,'], ['subtraction,', 'and'], ['and', 'multiplication'], ['multiplication', 'are'], ['are', 'the'], ['the', 'same,'], ['same,', 'but'], ['but', 'the'], ['the', 'behavior'], ['behavior', 'of'], ['of', 'division'], ['division', 'differs.'], ['differs.', 'There'], ['There', 'are'], ['are', 'two'], ['two', 'types'], ['types', 'of'], ['of', 'divisions'], ['divisions', 'in'], ['in', 'Python.'], ['Python.', 'They'], ['They', 'are'], ['are', 'floor'], ['floor', 'division'], ['division', 'and'], ['and', 'integer'], ['integer', 'division.'], ['division.', 'Python'], ['Python', 'also'], ['also', 'added'], ['added', 'the'], ['the', '**'], ['**', 'operator'], ['operator', 'for'], ['for', 'exponentiation.'], ['exponentiation.', 'From'], ['From', 'Python'], ['Python', '.'], ['.', ','], [',', 'it'], ['it', 'enables'], ['enables', 'support'], ['support', 'of'], ['of', 'matrix'], ['matrix', 'multiplication'], ['multiplication', 'with'], ['with', 'the'], ['the', '@'], ['@', 'operator.'], ['operator.', 'In'], ['In', 'Python,'], ['Python,', '=='], ['==', 'compares'], ['compares', 'by'], ['by', 'value,'], ['value,', 'versus'], ['versus', 'Java,'], ['Java,', 'which'], ['which', 'compares'], ['compares', 'numerics'], ['numerics', 'by'], ['by', 'value'], ['value', 'and'], ['and', 'objects'], ['objects', 'by'], ['by', 'reference.'], ['reference.', '(Value'], ['(Value', 'comparisons'], ['comparisons', 'in'], ['in', 'Java'], ['Java', 'on'], ['on', 'objects'], ['objects', 'can'], ['can', 'be'], ['be', 'performed'], ['performed', 'with'], ['with', 'the'], ['the', 'equals()'], ['equals()', 'method.)'], ['method.)', \"Python's\"], [\"Python's\", 'is'], ['is', 'operator'], ['operator', 'may'], ['may', 'be'], ['be', 'used'], ['used', 'to'], ['to', 'compare'], ['compare', 'object'], ['object', 'identities'], ['identities', '(comparison'], ['(comparison', 'by'], ['by', 'reference).'], ['reference).', 'In'], ['In', 'Python,'], ['Python,', 'comparisons'], ['comparisons', 'may'], ['may', 'be'], ['be', 'chained,'], ['chained,', 'for'], ['for', 'example'], ['example', 'a'], ['a', '<='], ['<=', 'b'], ['b', '<='], ['<=', 'c.'], ['c.', 'Python'], ['Python', 'uses'], ['uses', 'the'], ['the', 'words'], ['words', 'and,'], ['and,', 'or,'], ['or,', 'not'], ['not', 'for'], ['for', 'its'], ['its', 'boolean'], ['boolean', 'operators'], ['operators', 'rather'], ['rather', 'than'], ['than', 'the'], ['the', 'symbolic'], ['symbolic', '&&,'], ['&&,', '||,'], ['||,', '!'], ['!', 'used'], ['used', 'in'], ['in', 'Java'], ['Java', 'and'], ['and', 'C.'], ['C.', 'Python'], ['Python', 'has'], ['has', 'a'], ['a', 'type'], ['type', 'of'], ['of', 'expression'], ['expression', 'termed'], ['termed', 'a'], ['a', 'list'], ['list', 'comprehension.'], ['comprehension.', 'Python'], ['Python', '.'], ['.', 'extended'], ['extended', 'list'], ['list', 'comprehensions'], ['comprehensions', 'into'], ['into', 'a'], ['a', 'more'], ['more', 'general'], ['general', 'expression'], ['expression', 'termed'], ['termed', 'a'], ['a', 'generator'], ['generator', 'expression.'], ['expression.', 'Anonymous'], ['Anonymous', 'functions'], ['functions', 'are'], ['are', 'implemented'], ['implemented', 'using'], ['using', 'lambda'], ['lambda', 'expressions;'], ['expressions;', 'however,'], ['however,', 'these'], ['these', 'are'], ['are', 'limited'], ['limited', 'in'], ['in', 'that'], ['that', 'the'], ['the', 'body'], ['body', 'can'], ['can', 'only'], ['only', 'be'], ['be', 'one'], ['one', 'expression.'], ['expression.', 'Conditional'], ['Conditional', 'expressions'], ['expressions', 'in'], ['in', 'Python'], ['Python', 'are'], ['are', 'written'], ['written', 'as'], ['as', 'x'], ['x', 'if'], ['if', 'c'], ['c', 'else'], ['else', 'y'], ['y', '(different'], ['(different', 'in'], ['in', 'order'], ['order', 'of'], ['of', 'operands'], ['operands', 'from'], ['from', 'the'], ['the', 'c'], ['c', '?'], ['?', 'x'], ['x', ':'], [':', 'y'], ['y', 'operator'], ['operator', 'common'], ['common', 'to'], ['to', 'many'], ['many', 'other'], ['other', 'languages).'], ['languages).', 'Python'], ['Python', 'makes'], ['makes', 'a'], ['a', 'distinction'], ['distinction', 'between'], ['between', 'lists'], ['lists', 'and'], ['and', 'tuples.'], ['tuples.', 'Lists'], ['Lists', 'are'], ['are', 'written'], ['written', 'as'], ['as', ','], [',', ','], [',', ','], [',', 'are'], ['are', 'mutable,'], ['mutable,', 'and'], ['and', 'cannot'], ['cannot', 'be'], ['be', 'used'], ['used', 'as'], ['as', 'the'], ['the', 'keys'], ['keys', 'of'], ['of', 'dictionaries'], ['dictionaries', '(dictionary'], ['(dictionary', 'keys'], ['keys', 'must'], ['must', 'be'], ['be', 'immutable'], ['immutable', 'in'], ['in', 'Python).'], ['Python).', 'Tuples'], ['Tuples', 'are'], ['are', 'written'], ['written', 'as'], ['as', '('], ['(', ','], [',', ','], [',', '),'], ['),', 'are'], ['are', 'immutable'], ['immutable', 'and'], ['and', 'thus'], ['thus', 'can'], ['can', 'be'], ['be', 'used'], ['used', 'as'], ['as', 'the'], ['the', 'keys'], ['keys', 'of'], ['of', 'dictionaries,'], ['dictionaries,', 'provided'], ['provided', 'all'], ['all', 'elements'], ['elements', 'of'], ['of', 'the'], ['the', 'tuple'], ['tuple', 'are'], ['are', 'immutable.'], ['immutable.', 'The'], ['The', 'operator'], ['operator', 'can'], ['can', 'be'], ['be', 'used'], ['used', 'to'], ['to', 'concatenate'], ['concatenate', 'two'], ['two', 'tuples,'], ['tuples,', 'which'], ['which', 'does'], ['does', 'not'], ['not', 'directly'], ['directly', 'modify'], ['modify', 'their'], ['their', 'contents,'], ['contents,', 'but'], ['but', 'rather'], ['rather', 'produces'], ['produces', 'a'], ['a', 'new'], ['new', 'tuple'], ['tuple', 'containing'], ['containing', 'the'], ['the', 'elements'], ['elements', 'of'], ['of', 'both'], ['both', 'provided'], ['provided', 'tuples.'], ['tuples.', 'Thus,'], ['Thus,', 'given'], ['given', 'the'], ['the', 'variable'], ['variable', 't'], ['t', 'initially'], ['initially', 'equal'], ['equal', 'to'], ['to', '('], ['(', ','], [',', ','], [',', '),'], ['),', 'executing'], ['executing', 't'], ['t', '='], ['=', 't'], ['t', '('], ['(', ','], [',', ')'], [')', 'first'], ['first', 'evaluates'], ['evaluates', 't'], ['t', '('], ['(', ','], [',', '),'], ['),', 'which'], ['which', 'yields'], ['yields', '('], ['(', ','], [',', ','], [',', ','], [',', ','], [',', '),'], ['),', 'which'], ['which', 'is'], ['is', 'then'], ['then', 'assigned'], ['assigned', 'back'], ['back', 'to'], ['to', 't,'], ['t,', 'thereby'], ['thereby', 'effectively'], ['effectively', '\"modifying'], ['\"modifying', 'the'], ['the', 'contents\"'], ['contents\"', 'of'], ['of', 't,'], ['t,', 'while'], ['while', 'conforming'], ['conforming', 'to'], ['to', 'the'], ['the', 'immutable'], ['immutable', 'nature'], ['nature', 'of'], ['of', 'tuple'], ['tuple', 'objects.'], ['objects.', 'Parentheses'], ['Parentheses', 'are'], ['are', 'optional'], ['optional', 'for'], ['for', 'tuples'], ['tuples', 'in'], ['in', 'unambiguous'], ['unambiguous', 'contexts.'], ['contexts.', 'Python'], ['Python', 'features'], ['features', 'sequence'], ['sequence', 'unpacking'], ['unpacking', 'where'], ['where', 'multiple'], ['multiple', 'expressions,'], ['expressions,', 'each'], ['each', 'evaluating'], ['evaluating', 'to'], ['to', 'anything'], ['anything', 'that'], ['that', 'can'], ['can', 'be'], ['be', 'assigned'], ['assigned', 'to'], ['to', '(a'], ['(a', 'variable,'], ['variable,', 'a'], ['a', 'writable'], ['writable', 'property,'], ['property,', 'etc),'], ['etc),', 'are'], ['are', 'associated'], ['associated', 'in'], ['in', 'the'], ['the', 'identical'], ['identical', 'manner'], ['manner', 'to'], ['to', 'that'], ['that', 'forming'], ['forming', 'tuple'], ['tuple', 'literals'], ['literals', 'and,'], ['and,', 'as'], ['as', 'a'], ['a', 'whole,'], ['whole,', 'are'], ['are', 'put'], ['put', 'on'], ['on', 'the'], ['the', 'left'], ['left', 'hand'], ['hand', 'side'], ['side', 'of'], ['of', 'the'], ['the', 'equal'], ['equal', 'sign'], ['sign', 'in'], ['in', 'an'], ['an', 'assignment'], ['assignment', 'statement.'], ['statement.', 'The'], ['The', 'statement'], ['statement', 'expects'], ['expects', 'an'], ['an', 'iterable'], ['iterable', 'object'], ['object', 'on'], ['on', 'the'], ['the', 'right'], ['right', 'hand'], ['hand', 'side'], ['side', 'of'], ['of', 'the'], ['the', 'equal'], ['equal', 'sign'], ['sign', 'that'], ['that', 'produces'], ['produces', 'the'], ['the', 'same'], ['same', 'number'], ['number', 'of'], ['of', 'values'], ['values', 'as'], ['as', 'the'], ['the', 'provided'], ['provided', 'writable'], ['writable', 'expressions'], ['expressions', 'when'], ['when', 'iterated'], ['iterated', 'through,'], ['through,', 'and'], ['and', 'will'], ['will', 'iterate'], ['iterate', 'through'], ['through', 'it,'], ['it,', 'assigning'], ['assigning', 'each'], ['each', 'of'], ['of', 'the'], ['the', 'produced'], ['produced', 'values'], ['values', 'to'], ['to', 'the'], ['the', 'corresponding'], ['corresponding', 'expression'], ['expression', 'on'], ['on', 'the'], ['the', 'left.'], ['left.', 'citation'], ['citation', 'needed'], ['needed', 'Python'], ['Python', 'has'], ['has', 'a'], ['a', '\"string'], ['\"string', 'format\"'], ['format\"', 'operator'], ['operator', '%.'], ['%.', 'This'], ['This', 'functions'], ['functions', 'analogous'], ['analogous', 'to'], ['to', 'printf'], ['printf', 'format'], ['format', 'strings'], ['strings', 'in'], ['in', 'C,'], ['C,', 'e.g.'], ['e.g.', '\"spam=%s'], ['\"spam=%s', 'eggs=%d\"%'], ['eggs=%d\"%', '(\"blah\",'], ['(\"blah\",', ')'], [')', 'evaluates'], ['evaluates', 'to'], ['to', '\"spam=blah'], ['\"spam=blah', 'eggs='], ['eggs=', '\".'], ['\".', 'In'], ['In', 'Python'], ['Python', 'and'], ['and', '.'], ['.', ','], [',', 'this'], ['this', 'was'], ['was', 'supplemented'], ['supplemented', 'by'], ['by', 'the'], ['the', 'format()'], ['format()', 'method'], ['method', 'of'], ['of', 'the'], ['the', 'str'], ['str', 'class,'], ['class,', 'e.g.'], ['e.g.', '\"spam={'], ['\"spam={', '}'], ['}', 'eggs={'], ['eggs={', '}\".format(\"blah\",'], ['}\".format(\"blah\",', '),'], ['),', 'Python'], ['Python', '.'], ['.', 'added'], ['added', '\"f-strings\":'], ['\"f-strings\":', 'f\\'spam={\"blah\"}'], ['f\\'spam={\"blah\"}', 'eggs={'], ['eggs={', \"}'.\"], [\"}'.\", 'Python'], ['Python', 'has'], ['has', 'various'], ['various', 'kinds'], ['kinds', 'of'], ['of', 'string'], ['string', 'literals:'], ['literals:', 'Strings'], ['Strings', 'delimited'], ['delimited', 'by'], ['by', 'single'], ['single', 'or'], ['or', 'double'], ['double', 'quote'], ['quote', 'marks.'], ['marks.', 'Unlike'], ['Unlike', 'in'], ['in', 'Unix'], ['Unix', 'shells,'], ['shells,', 'Perl'], ['Perl', 'and'], ['and', 'Perl-influenced'], ['Perl-influenced', 'languages,'], ['languages,', 'single'], ['single', 'quote'], ['quote', 'marks'], ['marks', 'and'], ['and', 'double'], ['double', 'quote'], ['quote', 'marks'], ['marks', 'function'], ['function', 'identically.'], ['identically.', 'Both'], ['Both', 'kinds'], ['kinds', 'of'], ['of', 'string'], ['string', 'use'], ['use', 'the'], ['the', 'backslash'], ['backslash', '(\\\\)'], ['(\\\\)', 'as'], ['as', 'an'], ['an', 'escape'], ['escape', 'character.'], ['character.', 'String'], ['String', 'interpolation'], ['interpolation', 'became'], ['became', 'available'], ['available', 'in'], ['in', 'Python'], ['Python', '.'], ['.', 'as'], ['as', '\"formatted'], ['\"formatted', 'string'], ['string', 'literals\".'], ['literals\".', 'Triple-quoted'], ['Triple-quoted', 'strings,'], ['strings,', 'which'], ['which', 'begin'], ['begin', 'and'], ['and', 'end'], ['end', 'with'], ['with', 'a'], ['a', 'series'], ['series', 'of'], ['of', 'three'], ['three', 'single'], ['single', 'or'], ['or', 'double'], ['double', 'quote'], ['quote', 'marks.'], ['marks.', 'They'], ['They', 'may'], ['may', 'span'], ['span', 'multiple'], ['multiple', 'lines'], ['lines', 'and'], ['and', 'function'], ['function', 'like'], ['like', 'here'], ['here', 'documents'], ['documents', 'in'], ['in', 'shells,'], ['shells,', 'Perl'], ['Perl', 'and'], ['and', 'Ruby.'], ['Ruby.', 'Raw'], ['Raw', 'string'], ['string', 'varieties,'], ['varieties,', 'denoted'], ['denoted', 'by'], ['by', 'prefixing'], ['prefixing', 'the'], ['the', 'string'], ['string', 'literal'], ['literal', 'with'], ['with', 'an'], ['an', 'r.'], ['r.', 'Escape'], ['Escape', 'sequences'], ['sequences', 'are'], ['are', 'not'], ['not', 'interpreted;'], ['interpreted;', 'hence'], ['hence', 'raw'], ['raw', 'strings'], ['strings', 'are'], ['are', 'useful'], ['useful', 'where'], ['where', 'literal'], ['literal', 'backslashes'], ['backslashes', 'are'], ['are', 'common,'], ['common,', 'such'], ['such', 'as'], ['as', 'regular'], ['regular', 'expressions'], ['expressions', 'and'], ['and', 'Windows-style'], ['Windows-style', 'paths.'], ['paths.', 'Compare'], ['Compare', '\"@-quoting\"'], ['\"@-quoting\"', 'in'], ['in', 'C#.'], ['C#.', 'Python'], ['Python', 'has'], ['has', 'array'], ['array', 'index'], ['index', 'and'], ['and', 'array'], ['array', 'slicing'], ['slicing', 'expressions'], ['expressions', 'on'], ['on', 'lists,'], ['lists,', 'denoted'], ['denoted', 'as'], ['as', 'a'], ['a', 'key'], ['key', ','], [',', 'a'], ['a', 'start:stop'], ['start:stop', 'or'], ['or', 'a'], ['a', 'start:stop:step'], ['start:stop:step', '.'], ['.', 'Indexes'], ['Indexes', 'are'], ['are', 'zero-based,'], ['zero-based,', 'and'], ['and', 'negative'], ['negative', 'indexes'], ['indexes', 'are'], ['are', 'relative'], ['relative', 'to'], ['to', 'the'], ['the', 'end.'], ['end.', 'Slices'], ['Slices', 'take'], ['take', 'elements'], ['elements', 'from'], ['from', 'the'], ['the', 'start'], ['start', 'index'], ['index', 'up'], ['up', 'to,'], ['to,', 'but'], ['but', 'not'], ['not', 'including,'], ['including,', 'the'], ['the', 'stop'], ['stop', 'index.'], ['index.', 'The'], ['The', 'third'], ['third', 'slice'], ['slice', 'parameter,'], ['parameter,', 'called'], ['called', 'step'], ['step', 'or'], ['or', 'stride,'], ['stride,', 'allows'], ['allows', 'elements'], ['elements', 'to'], ['to', 'be'], ['be', 'skipped'], ['skipped', 'and'], ['and', 'reversed.'], ['reversed.', 'Slice'], ['Slice', 'indexes'], ['indexes', 'may'], ['may', 'be'], ['be', 'omitted,'], ['omitted,', 'for'], ['for', 'example'], ['example', 'a'], ['a', ':'], [':', 'returns'], ['returns', 'a'], ['a', 'copy'], ['copy', 'of'], ['of', 'the'], ['the', 'entire'], ['entire', 'list.'], ['list.', 'Each'], ['Each', 'element'], ['element', 'of'], ['of', 'a'], ['a', 'slice'], ['slice', 'is'], ['is', 'a'], ['a', 'shallow'], ['shallow', 'copy.'], ['copy.', 'In'], ['In', 'Python,'], ['Python,', 'a'], ['a', 'distinction'], ['distinction', 'between'], ['between', 'expressions'], ['expressions', 'and'], ['and', 'statements'], ['statements', 'is'], ['is', 'rigidly'], ['rigidly', 'enforced,'], ['enforced,', 'in'], ['in', 'contrast'], ['contrast', 'to'], ['to', 'languages'], ['languages', 'such'], ['such', 'as'], ['as', 'Common'], ['Common', 'Lisp,'], ['Lisp,', 'Scheme,'], ['Scheme,', 'or'], ['or', 'Ruby.'], ['Ruby.', 'This'], ['This', 'leads'], ['leads', 'to'], ['to', 'duplicating'], ['duplicating', 'some'], ['some', 'functionality.'], ['functionality.', 'For'], ['For', 'example:'], ['example:', 'List'], ['List', 'comprehensions'], ['comprehensions', 'vs.'], ['vs.', 'for-loops'], ['for-loops', 'Conditional'], ['Conditional', 'expressions'], ['expressions', 'vs.'], ['vs.', 'if'], ['if', 'blocks'], ['blocks', 'The'], ['The', 'eval()'], ['eval()', 'vs.'], ['vs.', 'exec()'], ['exec()', 'built-in'], ['built-in', 'functions'], ['functions', '(in'], ['(in', 'Python'], ['Python', ','], [',', 'exec'], ['exec', 'is'], ['is', 'a'], ['a', 'statement);'], ['statement);', 'the'], ['the', 'former'], ['former', 'is'], ['is', 'for'], ['for', 'expressions,'], ['expressions,', 'the'], ['the', 'latter'], ['latter', 'is'], ['is', 'for'], ['for', 'statements.'], ['statements.', 'Statements'], ['Statements', 'cannot'], ['cannot', 'be'], ['be', 'a'], ['a', 'part'], ['part', 'of'], ['of', 'an'], ['an', 'expression,'], ['expression,', 'so'], ['so', 'list'], ['list', 'and'], ['and', 'other'], ['other', 'comprehensions'], ['comprehensions', 'or'], ['or', 'lambda'], ['lambda', 'expressions,'], ['expressions,', 'all'], ['all', 'being'], ['being', 'expressions,'], ['expressions,', 'cannot'], ['cannot', 'contain'], ['contain', 'statements.'], ['statements.', 'A'], ['A', 'particular'], ['particular', 'case'], ['case', 'of'], ['of', 'this'], ['this', 'is'], ['is', 'that'], ['that', 'an'], ['an', 'assignment'], ['assignment', 'statement'], ['statement', 'such'], ['such', 'as'], ['as', 'a'], ['a', '='], ['=', 'cannot'], ['cannot', 'form'], ['form', 'part'], ['part', 'of'], ['of', 'the'], ['the', 'conditional'], ['conditional', 'expression'], ['expression', 'of'], ['of', 'a'], ['a', 'conditional'], ['conditional', 'statement.'], ['statement.', 'This'], ['This', 'has'], ['has', 'the'], ['the', 'advantage'], ['advantage', 'of'], ['of', 'avoiding'], ['avoiding', 'a'], ['a', 'classic'], ['classic', 'C'], ['C', 'error'], ['error', 'of'], ['of', 'mistaking'], ['mistaking', 'an'], ['an', 'assignment'], ['assignment', 'operator'], ['operator', '='], ['=', 'for'], ['for', 'an'], ['an', 'equality'], ['equality', 'operator'], ['operator', '=='], ['==', 'in'], ['in', 'conditions:'], ['conditions:', 'if'], ['if', '(c'], ['(c', '='], ['=', ')'], [')', '{'], ['{', '...'], ['...', '}'], ['}', 'is'], ['is', 'syntactically'], ['syntactically', 'valid'], ['valid', '(but'], ['(but', 'probably'], ['probably', 'unintended)'], ['unintended)', 'C'], ['C', 'code'], ['code', 'but'], ['but', 'if'], ['if', 'c'], ['c', '='], ['=', ':'], [':', '...'], ['...', 'causes'], ['causes', 'a'], ['a', 'syntax'], ['syntax', 'error'], ['error', 'in'], ['in', 'Python.'], ['Python.', 'Methods'], ['Methods', 'edit'], ['edit', 'Methods'], ['Methods', 'on'], ['on', 'objects'], ['objects', 'are'], ['are', 'functions'], ['functions', 'attached'], ['attached', 'to'], ['to', 'the'], ['the', \"object's\"], [\"object's\", 'class;'], ['class;', 'the'], ['the', 'syntax'], ['syntax', 'instance.method(argument)'], ['instance.method(argument)', 'is,'], ['is,', 'for'], ['for', 'normal'], ['normal', 'methods'], ['methods', 'and'], ['and', 'functions,'], ['functions,', 'syntactic'], ['syntactic', 'sugar'], ['sugar', 'for'], ['for', 'Class.method(instance,'], ['Class.method(instance,', 'argument).'], ['argument).', 'Python'], ['Python', 'methods'], ['methods', 'have'], ['have', 'an'], ['an', 'explicit'], ['explicit', 'self'], ['self', 'parameter'], ['parameter', 'to'], ['to', 'access'], ['access', 'instance'], ['instance', 'data,'], ['data,', 'in'], ['in', 'contrast'], ['contrast', 'to'], ['to', 'the'], ['the', 'implicit'], ['implicit', 'self'], ['self', '(or'], ['(or', 'this)'], ['this)', 'in'], ['in', 'some'], ['some', 'other'], ['other', 'object-oriented'], ['object-oriented', 'programming'], ['programming', 'languages'], ['languages', '(e.g.,'], ['(e.g.,', 'C'], ['C', ','], [',', 'Java,'], ['Java,', 'Objective-C,'], ['Objective-C,', 'or'], ['or', 'Ruby).'], ['Ruby).', 'Typing'], ['Typing', 'edit'], ['edit', 'Python'], ['Python', 'uses'], ['uses', 'duck'], ['duck', 'typing'], ['typing', 'and'], ['and', 'has'], ['has', 'typed'], ['typed', 'objects'], ['objects', 'but'], ['but', 'untyped'], ['untyped', 'variable'], ['variable', 'names.'], ['names.', 'Type'], ['Type', 'constraints'], ['constraints', 'are'], ['are', 'not'], ['not', 'checked'], ['checked', 'at'], ['at', 'compile'], ['compile', 'time;'], ['time;', 'rather,'], ['rather,', 'operations'], ['operations', 'on'], ['on', 'an'], ['an', 'object'], ['object', 'may'], ['may', 'fail,'], ['fail,', 'signifying'], ['signifying', 'that'], ['that', 'the'], ['the', 'given'], ['given', 'object'], ['object', 'is'], ['is', 'not'], ['not', 'of'], ['of', 'a'], ['a', 'suitable'], ['suitable', 'type.'], ['type.', 'Despite'], ['Despite', 'being'], ['being', 'dynamically'], ['dynamically', 'typed,'], ['typed,', 'Python'], ['Python', 'is'], ['is', 'strongly'], ['strongly', 'typed,'], ['typed,', 'forbidding'], ['forbidding', 'operations'], ['operations', 'that'], ['that', 'are'], ['are', 'not'], ['not', 'well-defined'], ['well-defined', '(for'], ['(for', 'example,'], ['example,', 'adding'], ['adding', 'a'], ['a', 'number'], ['number', 'to'], ['to', 'a'], ['a', 'string)'], ['string)', 'rather'], ['rather', 'than'], ['than', 'silently'], ['silently', 'attempting'], ['attempting', 'to'], ['to', 'make'], ['make', 'sense'], ['sense', 'of'], ['of', 'them.'], ['them.', 'Python'], ['Python', 'allows'], ['allows', 'programmers'], ['programmers', 'to'], ['to', 'define'], ['define', 'their'], ['their', 'own'], ['own', 'types'], ['types', 'using'], ['using', 'classes,'], ['classes,', 'which'], ['which', 'are'], ['are', 'most'], ['most', 'often'], ['often', 'used'], ['used', 'for'], ['for', 'object-oriented'], ['object-oriented', 'programming.'], ['programming.', 'New'], ['New', 'instances'], ['instances', 'of'], ['of', 'classes'], ['classes', 'are'], ['are', 'constructed'], ['constructed', 'by'], ['by', 'calling'], ['calling', 'the'], ['the', 'class'], ['class', '(for'], ['(for', 'example,'], ['example,', 'SpamClass()'], ['SpamClass()', 'or'], ['or', 'EggsClass()),'], ['EggsClass()),', 'and'], ['and', 'the'], ['the', 'classes'], ['classes', 'are'], ['are', 'instances'], ['instances', 'of'], ['of', 'the'], ['the', 'metaclass'], ['metaclass', 'type'], ['type', '(itself'], ['(itself', 'an'], ['an', 'instance'], ['instance', 'of'], ['of', 'itself),'], ['itself),', 'allowing'], ['allowing', 'metaprogramming'], ['metaprogramming', 'and'], ['and', 'reflection.'], ['reflection.', 'Before'], ['Before', 'version'], ['version', '.'], ['.', ','], [',', 'Python'], ['Python', 'had'], ['had', 'two'], ['two', 'kinds'], ['kinds', 'of'], ['of', 'classes:'], ['classes:', 'old-style'], ['old-style', 'and'], ['and', 'new-style.'], ['new-style.', 'The'], ['The', 'syntax'], ['syntax', 'of'], ['of', 'both'], ['both', 'styles'], ['styles', 'is'], ['is', 'the'], ['the', 'same,'], ['same,', 'the'], ['the', 'difference'], ['difference', 'being'], ['being', 'whether'], ['whether', 'the'], ['the', 'class'], ['class', 'object'], ['object', 'is'], ['is', 'inherited'], ['inherited', 'from,'], ['from,', 'directly'], ['directly', 'or'], ['or', 'indirectly'], ['indirectly', '(all'], ['(all', 'new-style'], ['new-style', 'classes'], ['classes', 'inherit'], ['inherit', 'from'], ['from', 'object'], ['object', 'and'], ['and', 'are'], ['are', 'instances'], ['instances', 'of'], ['of', 'type).'], ['type).', 'In'], ['In', 'versions'], ['versions', 'of'], ['of', 'Python'], ['Python', 'from'], ['from', 'Python'], ['Python', '.'], ['.', 'onwards,'], ['onwards,', 'both'], ['both', 'kinds'], ['kinds', 'of'], ['of', 'classes'], ['classes', 'can'], ['can', 'be'], ['be', 'used.'], ['used.', 'Old-style'], ['Old-style', 'classes'], ['classes', 'were'], ['were', 'eliminated'], ['eliminated', 'in'], ['in', 'Python'], ['Python', '.'], ['.', '.'], ['.', 'The'], ['The', 'long'], ['long', 'term'], ['term', 'plan'], ['plan', 'is'], ['is', 'to'], ['to', 'support'], ['support', 'gradual'], ['gradual', 'typing'], ['typing', 'and'], ['and', 'from'], ['from', 'Python'], ['Python', '.'], ['.', ','], [',', 'the'], ['the', 'syntax'], ['syntax', 'of'], ['of', 'the'], ['the', 'language'], ['language', 'allows'], ['allows', 'specifying'], ['specifying', 'static'], ['static', 'types'], ['types', 'but'], ['but', 'they'], ['they', 'are'], ['are', 'not'], ['not', 'checked'], ['checked', 'in'], ['in', 'the'], ['the', 'default'], ['default', 'implementation,'], ['implementation,', 'CPython.'], ['CPython.', 'An'], ['An', 'experimental'], ['experimental', 'optional'], ['optional', 'static'], ['static', 'type'], ['type', 'checker'], ['checker', 'named'], ['named', 'mypy'], ['mypy', 'supports'], ['supports', 'compile-time'], ['compile-time', 'type'], ['type', 'checking.'], ['checking.', 'Summary'], ['Summary', 'of'], ['of', 'Python'], ['Python', \"'s\"], [\"'s\", 'built-in'], ['built-in', 'types'], ['types', 'Type'], ['Type', 'mutable'], ['mutable', 'Description'], ['Description', 'Syntax'], ['Syntax', 'example'], ['example', 'bool'], ['bool', 'immutable'], ['immutable', 'Boolean'], ['Boolean', 'value'], ['value', 'True'], ['True', 'False'], ['False', 'bytearray'], ['bytearray', 'mutable'], ['mutable', 'Sequence'], ['Sequence', 'of'], ['of', 'bytes'], ['bytes', \"bytearray(b'Some\"], [\"bytearray(b'Some\", \"ASCII')\"], [\"ASCII')\", 'bytearray(b\"Some'], ['bytearray(b\"Some', 'ASCII\")'], ['ASCII\")', 'bytearray('], ['bytearray(', ','], [',', ','], [',', ','], [',', ')'], [')', 'bytes'], ['bytes', 'immutable'], ['immutable', 'Sequence'], ['Sequence', 'of'], ['of', 'bytes'], ['bytes', \"b'Some\"], [\"b'Some\", \"ASCII'\"], [\"ASCII'\", 'b\"Some'], ['b\"Some', 'ASCII\"'], ['ASCII\"', 'bytes('], ['bytes(', ','], [',', ','], [',', ','], [',', ')'], [')', 'complex'], ['complex', 'immutable'], ['immutable', 'Complex'], ['Complex', 'number'], ['number', 'with'], ['with', 'real'], ['real', 'and'], ['and', 'imaginary'], ['imaginary', 'parts'], ['parts', '.'], ['.', 'j'], ['j', 'dict'], ['dict', 'mutable'], ['mutable', 'Associative'], ['Associative', 'array'], ['array', '(or'], ['(or', 'dictionary)'], ['dictionary)', 'of'], ['of', 'key'], ['key', 'and'], ['and', 'value'], ['value', 'pairs;'], ['pairs;', 'can'], ['can', 'contain'], ['contain', 'mixed'], ['mixed', 'types'], ['types', '(keys'], ['(keys', 'and'], ['and', 'values),'], ['values),', 'keys'], ['keys', 'must'], ['must', 'be'], ['be', 'a'], ['a', 'hashable'], ['hashable', 'type'], ['type', \"{'key\"], [\"{'key\", \"':\"], [\"':\", '.'], ['.', ','], [',', ':'], [':', 'False}'], ['False}', 'ellipsis'], ['ellipsis', 'An'], ['An', 'ellipsis'], ['ellipsis', 'placeholder'], ['placeholder', 'to'], ['to', 'be'], ['be', 'used'], ['used', 'as'], ['as', 'an'], ['an', 'index'], ['index', 'in'], ['in', 'NumPy'], ['NumPy', 'arrays'], ['arrays', '...'], ['...', 'float'], ['float', 'immutable'], ['immutable', 'Floating'], ['Floating', 'point'], ['point', 'number,'], ['number,', 'system-defined'], ['system-defined', 'precision'], ['precision', '.'], ['.', 'frozenset'], ['frozenset', 'immutable'], ['immutable', 'Unordered'], ['Unordered', 'set,'], ['set,', 'contains'], ['contains', 'no'], ['no', 'duplicates;'], ['duplicates;', 'can'], ['can', 'contain'], ['contain', 'mixed'], ['mixed', 'types,'], ['types,', 'if'], ['if', 'hashable'], ['hashable', 'frozenset('], ['frozenset(', '.'], ['.', ','], [',', \"'string',\"], [\"'string',\", 'True'], ['True', ')'], [')', 'int'], ['int', 'immutable'], ['immutable', 'Integer'], ['Integer', 'of'], ['of', 'unlimited'], ['unlimited', 'magnitude'], ['magnitude', 'list'], ['list', 'mutable'], ['mutable', 'List,'], ['List,', 'can'], ['can', 'contain'], ['contain', 'mixed'], ['mixed', 'types'], ['types', '.'], ['.', ','], [',', \"'string',\"], [\"'string',\", 'True'], ['True', 'set'], ['set', 'mutable'], ['mutable', 'Unordered'], ['Unordered', 'set,'], ['set,', 'contains'], ['contains', 'no'], ['no', 'duplicates;'], ['duplicates;', 'can'], ['can', 'contain'], ['contain', 'mixed'], ['mixed', 'types,'], ['types,', 'if'], ['if', 'hashable'], ['hashable', '{'], ['{', '.'], ['.', ','], [',', \"'string',\"], [\"'string',\", 'True}'], ['True}', 'str'], ['str', 'immutable'], ['immutable', 'A'], ['A', 'character'], ['character', 'string:'], ['string:', 'sequence'], ['sequence', 'of'], ['of', 'Unicode'], ['Unicode', 'codepoints'], ['codepoints', \"'Wikipedia'\"], [\"'Wikipedia'\", '\"Wikipedia\"'], ['\"Wikipedia\"', '\"\"\"Spanning'], ['\"\"\"Spanning', 'multiple'], ['multiple', 'lines\"\"\"'], ['lines\"\"\"', 'tuple'], ['tuple', 'immutable'], ['immutable', 'Can'], ['Can', 'contain'], ['contain', 'mixed'], ['mixed', 'types'], ['types', '('], ['(', '.'], ['.', ','], [',', \"'string',\"], [\"'string',\", 'True)But'], ['True)But', 'we'], ['we', 'can'], ['can', 'append'], ['append', 'elements'], ['elements', 'using'], ['using', '__add__'], ['__add__', '.'], ['.', 'a'], ['a', '='], ['=', '('], ['(', '.'], ['.', ','], [',', \"'string'\"], [\"'string'\", ','], [',', \"True).__add__(('hi'\"], [\"True).__add__(('hi'\", ',))'], [',))', 'now'], ['now', 'a'], ['a', 'gives'], ['gives', '('], ['(', '.'], ['.', ','], [',', \"'string',\"], [\"'string',\", 'True'], ['True', \",'hi')\"], [\",'hi')\", 'Mathematics'], ['Mathematics', 'edit'], ['edit', 'Python'], ['Python', 'has'], ['has', 'the'], ['the', 'usual'], ['usual', 'C'], ['C', 'arithmetic'], ['arithmetic', 'operators'], ['operators', '('], ['(', ','], [',', '-,'], ['-,', '*,'], ['*,', '/,'], ['/,', '%).'], ['%).', 'It'], ['It', 'also'], ['also', 'has'], ['has', '**'], ['**', 'for'], ['for', 'exponentiation,'], ['exponentiation,', 'e.g.'], ['e.g.', '**'], ['**', '=='], ['==', 'and'], ['and', '**'], ['**', '.'], ['.', '=='], ['==', '.'], ['.', ','], [',', 'and'], ['and', 'a'], ['a', 'new'], ['new', 'matrix'], ['matrix', 'multiply'], ['multiply', '@'], ['@', 'operator'], ['operator', 'is'], ['is', 'included'], ['included', 'in'], ['in', 'version'], ['version', '.'], ['.', '.'], ['.', 'Additionally,'], ['Additionally,', 'it'], ['it', 'has'], ['has', 'a'], ['a', 'unary'], ['unary', 'operator'], ['operator', '(~),'], ['(~),', 'which'], ['which', 'essentially'], ['essentially', 'inverts'], ['inverts', 'all'], ['all', 'the'], ['the', 'bytes'], ['bytes', 'of'], ['of', 'its'], ['its', 'one'], ['one', 'argument.'], ['argument.', 'For'], ['For', 'integers,'], ['integers,', 'this'], ['this', 'means'], ['means', '~x=-x-'], ['~x=-x-', '.'], ['.', 'Other'], ['Other', 'operators'], ['operators', 'include'], ['include', 'bitwise'], ['bitwise', 'shift'], ['shift', 'operators'], ['operators', 'x'], ['x', '<<'], ['<<', 'y,'], ['y,', 'which'], ['which', 'shifts'], ['shifts', 'x'], ['x', 'to'], ['to', 'the'], ['the', 'left'], ['left', 'y'], ['y', 'places,'], ['places,', 'the'], ['the', 'same'], ['same', 'as'], ['as', 'x*('], ['x*(', '**y)'], ['**y)', ','], [',', 'and'], ['and', 'x'], ['x', '>>'], ['>>', 'y,'], ['y,', 'which'], ['which', 'shifts'], ['shifts', 'x'], ['x', 'to'], ['to', 'the'], ['the', 'right'], ['right', 'y'], ['y', 'places,'], ['places,', 'the'], ['the', 'same'], ['same', 'as'], ['as', 'x/('], ['x/(', '**y)'], ['**y)', '.'], ['.', 'The'], ['The', 'behavior'], ['behavior', 'of'], ['of', 'division'], ['division', 'has'], ['has', 'changed'], ['changed', 'significantly'], ['significantly', 'over'], ['over', 'time:'], ['time:', 'Python'], ['Python', '.'], ['.', 'and'], ['and', 'earlier'], ['earlier', 'use'], ['use', 'the'], ['the', 'C'], ['C', 'division'], ['division', 'behavior.'], ['behavior.', 'The'], ['The', '/'], ['/', 'operator'], ['operator', 'is'], ['is', 'integer'], ['integer', 'division'], ['division', 'if'], ['if', 'both'], ['both', 'operands'], ['operands', 'are'], ['are', 'integers,'], ['integers,', 'and'], ['and', 'floating-point'], ['floating-point', 'division'], ['division', 'otherwise.'], ['otherwise.', 'Integer'], ['Integer', 'division'], ['division', 'rounds'], ['rounds', 'towards'], ['towards', ','], [',', 'e.g.'], ['e.g.', '/'], ['/', '=='], ['==', 'and'], ['and', '-'], ['-', '/'], ['/', '=='], ['==', '-'], ['-', '.'], ['.', 'Python'], ['Python', '.'], ['.', 'changes'], ['changes', 'integer'], ['integer', 'division'], ['division', 'to'], ['to', 'round'], ['round', 'towards'], ['towards', 'negative'], ['negative', 'infinity,'], ['infinity,', 'e.g.'], ['e.g.', '/'], ['/', '=='], ['==', 'and'], ['and', '-'], ['-', '/'], ['/', '=='], ['==', '-'], ['-', '.'], ['.', 'The'], ['The', 'floor'], ['floor', 'division'], ['division', '//'], ['//', 'operator'], ['operator', 'is'], ['is', 'introduced.'], ['introduced.', 'So'], ['So', '//'], ['//', '=='], ['==', ','], [',', '-'], ['-', '//'], ['//', '=='], ['==', '-'], ['-', ','], [',', '.'], ['.', '//'], ['//', '=='], ['==', '.'], ['.', 'and'], ['and', '-'], ['-', '.'], ['.', '//'], ['//', '=='], ['==', '-'], ['-', '.'], ['.', '.'], ['.', 'Adding'], ['Adding', 'from'], ['from', '__future__'], ['__future__', 'import'], ['import', 'division'], ['division', 'causes'], ['causes', 'a'], ['a', 'module'], ['module', 'to'], ['to', 'use'], ['use', 'Python'], ['Python', '.'], ['.', 'rules'], ['rules', 'for'], ['for', 'division'], ['division', '(see'], ['(see', 'next).'], ['next).', 'Python'], ['Python', '.'], ['.', 'changes'], ['changes', '/'], ['/', 'to'], ['to', 'be'], ['be', 'always'], ['always', 'floating-point'], ['floating-point', 'division.'], ['division.', 'In'], ['In', 'Python'], ['Python', 'terms,'], ['terms,', 'the'], ['the', 'pre-'], ['pre-', '.'], ['.', '/'], ['/', 'is'], ['is', 'classic'], ['classic', 'division,'], ['division,', 'the'], ['the', 'version-'], ['version-', '.'], ['.', '/'], ['/', 'is'], ['is', 'real'], ['real', 'division,'], ['division,', 'and'], ['and', '//'], ['//', 'is'], ['is', 'floor'], ['floor', 'division.'], ['division.', 'Rounding'], ['Rounding', 'towards'], ['towards', 'negative'], ['negative', 'infinity,'], ['infinity,', 'though'], ['though', 'different'], ['different', 'from'], ['from', 'most'], ['most', 'languages,'], ['languages,', 'adds'], ['adds', 'consistency.'], ['consistency.', 'For'], ['For', 'instance,'], ['instance,', 'it'], ['it', 'means'], ['means', 'that'], ['that', 'the'], ['the', 'equation'], ['equation', '(a'], ['(a', 'b)//b'], ['b)//b', '=='], ['==', 'a//b'], ['a//b', 'is'], ['is', 'always'], ['always', 'true.'], ['true.', 'It'], ['It', 'also'], ['also', 'means'], ['means', 'that'], ['that', 'the'], ['the', 'equation'], ['equation', 'b*(a//b)'], ['b*(a//b)', 'a%b'], ['a%b', '=='], ['==', 'a'], ['a', 'is'], ['is', 'valid'], ['valid', 'for'], ['for', 'both'], ['both', 'positive'], ['positive', 'and'], ['and', 'negative'], ['negative', 'values'], ['values', 'of'], ['of', 'a.'], ['a.', 'However,'], ['However,', 'maintaining'], ['maintaining', 'the'], ['the', 'validity'], ['validity', 'of'], ['of', 'this'], ['this', 'equation'], ['equation', 'means'], ['means', 'that'], ['that', 'while'], ['while', 'the'], ['the', 'result'], ['result', 'of'], ['of', 'a%b'], ['a%b', 'is,'], ['is,', 'as'], ['as', 'expected,'], ['expected,', 'in'], ['in', 'the'], ['the', 'half-open'], ['half-open', 'interval'], ['interval', ','], [',', 'b),'], ['b),', 'where'], ['where', 'b'], ['b', 'is'], ['is', 'a'], ['a', 'positive'], ['positive', 'integer,'], ['integer,', 'it'], ['it', 'has'], ['has', 'to'], ['to', 'lie'], ['lie', 'in'], ['in', 'the'], ['the', 'interval'], ['interval', '(b,'], ['(b,', 'when'], ['when', 'b'], ['b', 'is'], ['is', 'negative.'], ['negative.', 'Python'], ['Python', 'provides'], ['provides', 'a'], ['a', 'round'], ['round', 'function'], ['function', 'for'], ['for', 'rounding'], ['rounding', 'a'], ['a', 'float'], ['float', 'to'], ['to', 'the'], ['the', 'nearest'], ['nearest', 'integer.'], ['integer.', 'For'], ['For', 'tie-breaking,'], ['tie-breaking,', 'versions'], ['versions', 'before'], ['before', 'use'], ['use', 'round-away-from-zero:'], ['round-away-from-zero:', 'round('], ['round(', '.'], ['.', ')'], [')', 'is'], ['is', '.'], ['.', ','], [',', 'round(-'], ['round(-', '.'], ['.', ')'], [')', 'is'], ['is', '.'], ['.', '.'], ['.', 'Python'], ['Python', 'uses'], ['uses', 'round'], ['round', 'to'], ['to', 'even:'], ['even:', 'round('], ['round(', '.'], ['.', ')'], [')', 'is'], ['is', ','], [',', 'round('], ['round(', '.'], ['.', ')'], [')', 'is'], ['is', '.'], ['.', 'Python'], ['Python', 'allows'], ['allows', 'boolean'], ['boolean', 'expressions'], ['expressions', 'with'], ['with', 'multiple'], ['multiple', 'equality'], ['equality', 'relations'], ['relations', 'in'], ['in', 'a'], ['a', 'manner'], ['manner', 'that'], ['that', 'is'], ['is', 'consistent'], ['consistent', 'with'], ['with', 'general'], ['general', 'use'], ['use', 'in'], ['in', 'mathematics.'], ['mathematics.', 'For'], ['For', 'example,'], ['example,', 'the'], ['the', 'expression'], ['expression', 'a'], ['a', '<'], ['<', 'b'], ['b', '<'], ['<', 'c'], ['c', 'tests'], ['tests', 'whether'], ['whether', 'a'], ['a', 'is'], ['is', 'less'], ['less', 'than'], ['than', 'b'], ['b', 'and'], ['and', 'b'], ['b', 'is'], ['is', 'less'], ['less', 'than'], ['than', 'c.'], ['c.', 'C-derived'], ['C-derived', 'languages'], ['languages', 'interpret'], ['interpret', 'this'], ['this', 'expression'], ['expression', 'differently:'], ['differently:', 'in'], ['in', 'C,'], ['C,', 'the'], ['the', 'expression'], ['expression', 'would'], ['would', 'first'], ['first', 'evaluate'], ['evaluate', 'a'], ['a', '<'], ['<', 'b,'], ['b,', 'resulting'], ['resulting', 'in'], ['in', 'or'], ['or', ','], [',', 'and'], ['and', 'that'], ['that', 'result'], ['result', 'would'], ['would', 'then'], ['then', 'be'], ['be', 'compared'], ['compared', 'with'], ['with', 'c.'], ['c.', 'pageneeded'], ['pageneeded', 'Python'], ['Python', 'has'], ['has', 'extensive'], ['extensive', 'built-in'], ['built-in', 'support'], ['support', 'for'], ['for', 'arbitrary'], ['arbitrary', 'precision'], ['precision', 'arithmetic.'], ['arithmetic.', 'Integers'], ['Integers', 'are'], ['are', 'transparently'], ['transparently', 'switched'], ['switched', 'from'], ['from', 'the'], ['the', 'machine-supported'], ['machine-supported', 'maximum'], ['maximum', 'fixed-precision'], ['fixed-precision', '(usually'], ['(usually', 'or'], ['or', 'bits),'], ['bits),', 'belonging'], ['belonging', 'to'], ['to', 'the'], ['the', 'python'], ['python', 'type'], ['type', 'int,'], ['int,', 'to'], ['to', 'arbitrary'], ['arbitrary', 'precision,'], ['precision,', 'belonging'], ['belonging', 'to'], ['to', 'the'], ['the', 'python'], ['python', 'type'], ['type', 'long,'], ['long,', 'where'], ['where', 'needed.'], ['needed.', 'The'], ['The', 'latter'], ['latter', 'have'], ['have', 'an'], ['an', '\"L\"'], ['\"L\"', 'suffix'], ['suffix', 'in'], ['in', 'their'], ['their', 'textual'], ['textual', 'representation.'], ['representation.', '(In'], ['(In', 'Python'], ['Python', ','], [',', 'the'], ['the', 'distinction'], ['distinction', 'between'], ['between', 'the'], ['the', 'int'], ['int', 'and'], ['and', 'long'], ['long', 'types'], ['types', 'was'], ['was', 'eliminated;'], ['eliminated;', 'this'], ['this', 'behavior'], ['behavior', 'is'], ['is', 'now'], ['now', 'entirely'], ['entirely', 'contained'], ['contained', 'by'], ['by', 'the'], ['the', 'int'], ['int', 'class.)'], ['class.)', 'The'], ['The', 'Decimal'], ['Decimal', 'type/class'], ['type/class', 'in'], ['in', 'module'], ['module', 'decimal'], ['decimal', '(since'], ['(since', 'version'], ['version', '.'], ['.', ')'], [')', 'provides'], ['provides', 'decimal'], ['decimal', 'floating'], ['floating', 'point'], ['point', 'numbers'], ['numbers', 'to'], ['to', 'arbitrary'], ['arbitrary', 'precision'], ['precision', 'and'], ['and', 'several'], ['several', 'rounding'], ['rounding', 'modes.'], ['modes.', 'The'], ['The', 'Fraction'], ['Fraction', 'type'], ['type', 'in'], ['in', 'module'], ['module', 'fractions'], ['fractions', '(since'], ['(since', 'version'], ['version', '.'], ['.', ')'], [')', 'provides'], ['provides', 'arbitrary'], ['arbitrary', 'precision'], ['precision', 'for'], ['for', 'rational'], ['rational', 'numbers.'], ['numbers.', 'Due'], ['Due', 'to'], ['to', \"Python's\"], [\"Python's\", 'extensive'], ['extensive', 'mathematics'], ['mathematics', 'library,'], ['library,', 'and'], ['and', 'the'], ['the', 'third-party'], ['third-party', 'library'], ['library', 'NumPy'], ['NumPy', 'that'], ['that', 'further'], ['further', 'extends'], ['extends', 'the'], ['the', 'native'], ['native', 'capabilities,'], ['capabilities,', 'it'], ['it', 'is'], ['is', 'frequently'], ['frequently', 'used'], ['used', 'as'], ['as', 'a'], ['a', 'scientific'], ['scientific', 'scripting'], ['scripting', 'language'], ['language', 'to'], ['to', 'aid'], ['aid', 'in'], ['in', 'problems'], ['problems', 'such'], ['such', 'as'], ['as', 'numerical'], ['numerical', 'data'], ['data', 'processing'], ['processing', 'and'], ['and', 'manipulation.'], ['manipulation.', 'Libraries'], ['Libraries', 'edit'], ['edit', \"Python's\"], [\"Python's\", 'large'], ['large', 'standard'], ['standard', 'library,'], ['library,', 'commonly'], ['commonly', 'cited'], ['cited', 'as'], ['as', 'one'], ['one', 'of'], ['of', 'its'], ['its', 'greatest'], ['greatest', 'strengths,'], ['strengths,', 'provides'], ['provides', 'tools'], ['tools', 'suited'], ['suited', 'to'], ['to', 'many'], ['many', 'tasks.'], ['tasks.', 'For'], ['For', 'Internet-facing'], ['Internet-facing', 'applications,'], ['applications,', 'many'], ['many', 'standard'], ['standard', 'formats'], ['formats', 'and'], ['and', 'protocols'], ['protocols', 'such'], ['such', 'as'], ['as', 'MIME'], ['MIME', 'and'], ['and', 'HTTP'], ['HTTP', 'are'], ['are', 'supported.'], ['supported.', 'It'], ['It', 'includes'], ['includes', 'modules'], ['modules', 'for'], ['for', 'creating'], ['creating', 'graphical'], ['graphical', 'user'], ['user', 'interfaces,'], ['interfaces,', 'connecting'], ['connecting', 'to'], ['to', 'relational'], ['relational', 'databases,'], ['databases,', 'generating'], ['generating', 'pseudorandom'], ['pseudorandom', 'numbers,'], ['numbers,', 'arithmetic'], ['arithmetic', 'with'], ['with', 'arbitrary'], ['arbitrary', 'precision'], ['precision', 'decimals,'], ['decimals,', 'manipulating'], ['manipulating', 'regular'], ['regular', 'expressions,'], ['expressions,', 'and'], ['and', 'unit'], ['unit', 'testing.'], ['testing.', 'Some'], ['Some', 'parts'], ['parts', 'of'], ['of', 'the'], ['the', 'standard'], ['standard', 'library'], ['library', 'are'], ['are', 'covered'], ['covered', 'by'], ['by', 'specifications'], ['specifications', '(for'], ['(for', 'example,'], ['example,', 'the'], ['the', 'Web'], ['Web', 'Server'], ['Server', 'Gateway'], ['Gateway', 'Interface'], ['Interface', '(WSGI)'], ['(WSGI)', 'implementation'], ['implementation', 'wsgiref'], ['wsgiref', 'follows'], ['follows', 'PEP'], ['PEP', '),'], ['),', 'but'], ['but', 'most'], ['most', 'modules'], ['modules', 'are'], ['are', 'not.'], ['not.', 'They'], ['They', 'are'], ['are', 'specified'], ['specified', 'by'], ['by', 'their'], ['their', 'code,'], ['code,', 'internal'], ['internal', 'documentation,'], ['documentation,', 'and'], ['and', 'test'], ['test', 'suites'], ['suites', '(if'], ['(if', 'supplied).'], ['supplied).', 'However,'], ['However,', 'because'], ['because', 'most'], ['most', 'of'], ['of', 'the'], ['the', 'standard'], ['standard', 'library'], ['library', 'is'], ['is', 'cross-platform'], ['cross-platform', 'Python'], ['Python', 'code,'], ['code,', 'only'], ['only', 'a'], ['a', 'few'], ['few', 'modules'], ['modules', 'need'], ['need', 'altering'], ['altering', 'or'], ['or', 'rewriting'], ['rewriting', 'for'], ['for', 'variant'], ['variant', 'implementations.'], ['implementations.', 'As'], ['As', 'of'], ['of', 'September'], ['September', ','], [',', 'update'], ['update', 'the'], ['the', 'Python'], ['Python', 'Package'], ['Package', 'Index,'], ['Index,', 'the'], ['the', 'official'], ['official', 'repository'], ['repository', 'for'], ['for', 'third-party'], ['third-party', 'Python'], ['Python', 'software,'], ['software,', 'contains'], ['contains', 'over'], ['over', ','], [',', 'packages'], ['packages', 'with'], ['with', 'a'], ['a', 'wide'], ['wide', 'range'], ['range', 'of'], ['of', 'functionality,'], ['functionality,', 'including:'], ['including:', 'Graphical'], ['Graphical', 'user'], ['user', 'interfaces'], ['interfaces', 'Web'], ['Web', 'frameworks'], ['frameworks', 'Multimedia'], ['Multimedia', 'Databases'], ['Databases', 'Networking'], ['Networking', 'Test'], ['Test', 'frameworks'], ['frameworks', 'Automation'], ['Automation', 'Web'], ['Web', 'scraping'], ['scraping', 'Documentation'], ['Documentation', 'System'], ['System', 'administration'], ['administration', 'Scientific'], ['Scientific', 'computing'], ['computing', 'Text'], ['Text', 'processing'], ['processing', 'Image'], ['Image', 'processing'], ['processing', 'Development'], ['Development', 'environments'], ['environments', 'edit'], ['edit', 'See'], ['See', 'also:'], ['also:', 'Comparison'], ['Comparison', 'of'], ['of', 'integrated'], ['integrated', 'development'], ['development', 'environments'], ['environments', 'Python'], ['Python', 'Most'], ['Most', 'Python'], ['Python', 'implementations'], ['implementations', '(including'], ['(including', 'CPython)'], ['CPython)', 'include'], ['include', 'a'], ['a', 'readevalprint'], ['readevalprint', 'loop'], ['loop', '(REPL),'], ['(REPL),', 'permitting'], ['permitting', 'them'], ['them', 'to'], ['to', 'function'], ['function', 'as'], ['as', 'a'], ['a', 'command'], ['command', 'line'], ['line', 'interpreter'], ['interpreter', 'for'], ['for', 'which'], ['which', 'the'], ['the', 'user'], ['user', 'enters'], ['enters', 'statements'], ['statements', 'sequentially'], ['sequentially', 'and'], ['and', 'receives'], ['receives', 'results'], ['results', 'immediately.'], ['immediately.', 'Other'], ['Other', 'shells,'], ['shells,', 'including'], ['including', 'IDLE'], ['IDLE', 'and'], ['and', 'IPython,'], ['IPython,', 'add'], ['add', 'further'], ['further', 'abilities'], ['abilities', 'such'], ['such', 'as'], ['as', 'auto-completion,'], ['auto-completion,', 'session'], ['session', 'state'], ['state', 'retention'], ['retention', 'and'], ['and', 'syntax'], ['syntax', 'highlighting.'], ['highlighting.', 'As'], ['As', 'well'], ['well', 'as'], ['as', 'standard'], ['standard', 'desktop'], ['desktop', 'integrated'], ['integrated', 'development'], ['development', 'environments'], ['environments', '(see'], ['(see', \"Wikipedia's\"], [\"Wikipedia's\", '\"Python'], ['\"Python', 'IDE\"'], ['IDE\"', 'article),'], ['article),', 'there'], ['there', 'are'], ['are', 'Web'], ['Web', 'browser-based'], ['browser-based', 'IDEs;'], ['IDEs;', 'SageMath'], ['SageMath', '(intended'], ['(intended', 'for'], ['for', 'developing'], ['developing', 'science'], ['science', 'and'], ['and', 'math-related'], ['math-related', 'Python'], ['Python', 'programs);'], ['programs);', 'PythonAnywhere,'], ['PythonAnywhere,', 'a'], ['a', 'browser-based'], ['browser-based', 'IDE'], ['IDE', 'and'], ['and', 'hosting'], ['hosting', 'environment;'], ['environment;', 'and'], ['and', 'Canopy'], ['Canopy', 'IDE,'], ['IDE,', 'a'], ['a', 'commercial'], ['commercial', 'Python'], ['Python', 'IDE'], ['IDE', 'emphasizing'], ['emphasizing', 'scientific'], ['scientific', 'computing.'], ['computing.', 'Implementations'], ['Implementations', 'edit'], ['edit', 'See'], ['See', 'also:'], ['also:', 'List'], ['List', 'of'], ['of', 'Python'], ['Python', 'software'], ['software', 'Python'], ['Python', 'implementations'], ['implementations', 'Reference'], ['Reference', 'implementation'], ['implementation', 'edit'], ['edit', 'CPython'], ['CPython', 'is'], ['is', 'the'], ['the', 'reference'], ['reference', 'implementation'], ['implementation', 'of'], ['of', 'Python.'], ['Python.', 'It'], ['It', 'is'], ['is', 'written'], ['written', 'in'], ['in', 'C,'], ['C,', 'meeting'], ['meeting', 'the'], ['the', 'C'], ['C', 'standard'], ['standard', 'with'], ['with', 'several'], ['several', 'select'], ['select', 'C'], ['C', 'features.'], ['features.', 'It'], ['It', 'compiles'], ['compiles', 'Python'], ['Python', 'programs'], ['programs', 'into'], ['into', 'an'], ['an', 'intermediate'], ['intermediate', 'bytecode'], ['bytecode', 'which'], ['which', 'is'], ['is', 'then'], ['then', 'executed'], ['executed', 'by'], ['by', 'its'], ['its', 'virtual'], ['virtual', 'machine.'], ['machine.', 'CPython'], ['CPython', 'is'], ['is', 'distributed'], ['distributed', 'with'], ['with', 'a'], ['a', 'large'], ['large', 'standard'], ['standard', 'library'], ['library', 'written'], ['written', 'in'], ['in', 'a'], ['a', 'mixture'], ['mixture', 'of'], ['of', 'C'], ['C', 'and'], ['and', 'native'], ['native', 'Python.'], ['Python.', 'It'], ['It', 'is'], ['is', 'available'], ['available', 'for'], ['for', 'many'], ['many', 'platforms,'], ['platforms,', 'including'], ['including', 'Windows'], ['Windows', 'and'], ['and', 'most'], ['most', 'modern'], ['modern', 'Unix-like'], ['Unix-like', 'systems.'], ['systems.', 'Platform'], ['Platform', 'portability'], ['portability', 'was'], ['was', 'one'], ['one', 'of'], ['of', 'its'], ['its', 'earliest'], ['earliest', 'priorities.'], ['priorities.', 'Other'], ['Other', 'implementations'], ['implementations', 'edit'], ['edit', 'PyPy'], ['PyPy', 'is'], ['is', 'a'], ['a', 'fast,'], ['fast,', 'compliant'], ['compliant', 'interpreter'], ['interpreter', 'of'], ['of', 'Python'], ['Python', '.'], ['.', 'and'], ['and', '.'], ['.', '.'], ['.', 'Its'], ['Its', 'just-in-time'], ['just-in-time', 'compiler'], ['compiler', 'brings'], ['brings', 'a'], ['a', 'significant'], ['significant', 'speed'], ['speed', 'improvement'], ['improvement', 'over'], ['over', 'CPython.'], ['CPython.', 'A'], ['A', 'version'], ['version', 'is'], ['is', 'under'], ['under', 'development'], ['development', 'that'], ['that', 'will'], ['will', 'use'], ['use', 'software'], ['software', 'transactional'], ['transactional', 'memory'], ['memory', 'to'], ['to', 'take'], ['take', 'advantage'], ['advantage', 'of'], ['of', 'multi-core'], ['multi-core', 'processors.'], ['processors.', 'Stackless'], ['Stackless', 'Python'], ['Python', 'is'], ['is', 'a'], ['a', 'significant'], ['significant', 'fork'], ['fork', 'of'], ['of', 'CPython'], ['CPython', 'that'], ['that', 'implements'], ['implements', 'microthreads;'], ['microthreads;', 'it'], ['it', 'does'], ['does', 'not'], ['not', 'use'], ['use', 'the'], ['the', 'C'], ['C', 'memory'], ['memory', 'stack,'], ['stack,', 'thus'], ['thus', 'allowing'], ['allowing', 'massively'], ['massively', 'concurrent'], ['concurrent', 'programs.'], ['programs.', 'PyPy'], ['PyPy', 'also'], ['also', 'has'], ['has', 'a'], ['a', 'stackless'], ['stackless', 'version.'], ['version.', 'MicroPython'], ['MicroPython', 'is'], ['is', 'a'], ['a', 'Python'], ['Python', 'variant'], ['variant', 'optimised'], ['optimised', 'for'], ['for', 'microcontrollers.'], ['microcontrollers.', 'Unsupported'], ['Unsupported', 'implementations'], ['implementations', 'edit'], ['edit', 'Other'], ['Other', 'just-in-time'], ['just-in-time', 'Python'], ['Python', 'compilers'], ['compilers', 'have'], ['have', 'been'], ['been', 'developed,'], ['developed,', 'but'], ['but', 'are'], ['are', 'now'], ['now', 'unsupported:'], ['unsupported:', 'Google'], ['Google', 'began'], ['began', 'a'], ['a', 'project'], ['project', 'named'], ['named', 'Unladen'], ['Unladen', 'Swallow'], ['Swallow', 'in'], ['in', 'with'], ['with', 'the'], ['the', 'aim'], ['aim', 'of'], ['of', 'speeding'], ['speeding', 'up'], ['up', 'the'], ['the', 'Python'], ['Python', 'interpreter'], ['interpreter', 'fivefold'], ['fivefold', 'by'], ['by', 'using'], ['using', 'the'], ['the', 'LLVM,'], ['LLVM,', 'and'], ['and', 'of'], ['of', 'improving'], ['improving', 'its'], ['its', 'multithreading'], ['multithreading', 'ability'], ['ability', 'to'], ['to', 'scale'], ['scale', 'to'], ['to', 'thousands'], ['thousands', 'of'], ['of', 'cores.'], ['cores.', 'Psyco'], ['Psyco', 'is'], ['is', 'a'], ['a', 'just-in-time'], ['just-in-time', 'specialising'], ['specialising', 'compiler'], ['compiler', 'that'], ['that', 'integrates'], ['integrates', 'with'], ['with', 'CPython'], ['CPython', 'and'], ['and', 'transforms'], ['transforms', 'bytecode'], ['bytecode', 'to'], ['to', 'machine'], ['machine', 'code'], ['code', 'at'], ['at', 'runtime.'], ['runtime.', 'The'], ['The', 'emitted'], ['emitted', 'code'], ['code', 'is'], ['is', 'specialised'], ['specialised', 'for'], ['for', 'certain'], ['certain', 'data'], ['data', 'types'], ['types', 'and'], ['and', 'is'], ['is', 'faster'], ['faster', 'than'], ['than', 'standard'], ['standard', 'Python'], ['Python', 'code.'], ['code.', 'In'], ['In', ','], [',', 'Nokia'], ['Nokia', 'released'], ['released', 'a'], ['a', 'Python'], ['Python', 'interpreter'], ['interpreter', 'for'], ['for', 'the'], ['the', 'Series'], ['Series', 'mobile'], ['mobile', 'phones'], ['phones', 'named'], ['named', 'PyS'], ['PyS', '.'], ['.', 'It'], ['It', 'includes'], ['includes', 'many'], ['many', 'of'], ['of', 'the'], ['the', 'modules'], ['modules', 'from'], ['from', 'the'], ['the', 'CPython'], ['CPython', 'implementations'], ['implementations', 'and'], ['and', 'some'], ['some', 'additional'], ['additional', 'modules'], ['modules', 'to'], ['to', 'integrate'], ['integrate', 'with'], ['with', 'the'], ['the', 'Symbian'], ['Symbian', 'operating'], ['operating', 'system.'], ['system.', 'The'], ['The', 'project'], ['project', 'has'], ['has', 'been'], ['been', 'kept'], ['kept', 'up-to-date'], ['up-to-date', 'to'], ['to', 'run'], ['run', 'on'], ['on', 'all'], ['all', 'variants'], ['variants', 'of'], ['of', 'the'], ['the', 'S'], ['S', 'platform,'], ['platform,', 'and'], ['and', 'several'], ['several', 'third-party'], ['third-party', 'modules'], ['modules', 'are'], ['are', 'available.'], ['available.', 'The'], ['The', 'Nokia'], ['Nokia', 'N'], ['N', 'also'], ['also', 'supports'], ['supports', 'Python'], ['Python', 'with'], ['with', 'GTK'], ['GTK', 'widget'], ['widget', 'libraries,'], ['libraries,', 'enabling'], ['enabling', 'programs'], ['programs', 'to'], ['to', 'be'], ['be', 'written'], ['written', 'and'], ['and', 'run'], ['run', 'on'], ['on', 'the'], ['the', 'target'], ['target', 'device.'], ['device.', 'Cross-compilers'], ['Cross-compilers', 'to'], ['to', 'other'], ['other', 'languages'], ['languages', 'edit'], ['edit', 'There'], ['There', 'are'], ['are', 'several'], ['several', 'compilers'], ['compilers', 'to'], ['to', 'high-level'], ['high-level', 'object'], ['object', 'languages,'], ['languages,', 'with'], ['with', 'either'], ['either', 'unrestricted'], ['unrestricted', 'Python,'], ['Python,', 'a'], ['a', 'restricted'], ['restricted', 'subset'], ['subset', 'of'], ['of', 'Python,'], ['Python,', 'or'], ['or', 'a'], ['a', 'language'], ['language', 'similar'], ['similar', 'to'], ['to', 'Python'], ['Python', 'as'], ['as', 'the'], ['the', 'source'], ['source', 'language:'], ['language:', 'Jython'], ['Jython', 'compiles'], ['compiles', 'into'], ['into', 'Java'], ['Java', 'byte'], ['byte', 'code,'], ['code,', 'which'], ['which', 'can'], ['can', 'then'], ['then', 'be'], ['be', 'executed'], ['executed', 'by'], ['by', 'every'], ['every', 'Java'], ['Java', 'virtual'], ['virtual', 'machine'], ['machine', 'implementation.'], ['implementation.', 'This'], ['This', 'also'], ['also', 'enables'], ['enables', 'the'], ['the', 'use'], ['use', 'of'], ['of', 'Java'], ['Java', 'class'], ['class', 'library'], ['library', 'functions'], ['functions', 'from'], ['from', 'the'], ['the', 'Python'], ['Python', 'program.'], ['program.', 'IronPython'], ['IronPython', 'follows'], ['follows', 'a'], ['a', 'similar'], ['similar', 'approach'], ['approach', 'in'], ['in', 'order'], ['order', 'to'], ['to', 'run'], ['run', 'Python'], ['Python', 'programs'], ['programs', 'on'], ['on', 'the'], ['the', '.NET'], ['.NET', 'Common'], ['Common', 'Language'], ['Language', 'Runtime.'], ['Runtime.', 'The'], ['The', 'RPython'], ['RPython', 'language'], ['language', 'can'], ['can', 'be'], ['be', 'compiled'], ['compiled', 'to'], ['to', 'C,'], ['C,', 'Java'], ['Java', 'bytecode,'], ['bytecode,', 'or'], ['or', 'Common'], ['Common', 'Intermediate'], ['Intermediate', 'Language,'], ['Language,', 'and'], ['and', 'is'], ['is', 'used'], ['used', 'to'], ['to', 'build'], ['build', 'the'], ['the', 'PyPy'], ['PyPy', 'interpreter'], ['interpreter', 'of'], ['of', 'Python.'], ['Python.', 'Pyjs'], ['Pyjs', 'compiles'], ['compiles', 'Python'], ['Python', 'to'], ['to', 'JavaScript.'], ['JavaScript.', 'Cython'], ['Cython', 'compiles'], ['compiles', 'Python'], ['Python', 'to'], ['to', 'C'], ['C', 'and'], ['and', 'C'], ['C', '.'], ['.', 'Pythran'], ['Pythran', 'compiles'], ['compiles', 'Python'], ['Python', 'to'], ['to', 'C'], ['C', '.'], ['.', 'Somewhat'], ['Somewhat', 'dated'], ['dated', 'Pyrex'], ['Pyrex', '(latest'], ['(latest', 'release'], ['release', 'in'], ['in', ')'], [')', 'and'], ['and', 'Shed'], ['Shed', 'Skin'], ['Skin', '(latest'], ['(latest', 'release'], ['release', 'in'], ['in', ')'], [')', 'compile'], ['compile', 'to'], ['to', 'C'], ['C', 'and'], ['and', 'C'], ['C', 'respectively.'], ['respectively.', \"Google's\"], [\"Google's\", 'Grumpy'], ['Grumpy', 'compiles'], ['compiles', 'Python'], ['Python', 'to'], ['to', 'Go.'], ['Go.', 'Nuitka'], ['Nuitka', 'compiles'], ['compiles', 'Python'], ['Python', 'into'], ['into', 'C'], ['C', 'Performance'], ['Performance', 'edit'], ['edit', 'A'], ['A', 'performance'], ['performance', 'comparison'], ['comparison', 'of'], ['of', 'various'], ['various', 'Python'], ['Python', 'implementations'], ['implementations', 'on'], ['on', 'a'], ['a', 'non-numerical'], ['non-numerical', '(combinatorial)'], ['(combinatorial)', 'workload'], ['workload', 'was'], ['was', 'presented'], ['presented', 'at'], ['at', 'EuroSciPy'], ['EuroSciPy', \"'\"], [\"'\", '.'], ['.', 'Development'], ['Development', 'edit'], ['edit', \"Python's\"], [\"Python's\", 'development'], ['development', 'is'], ['is', 'conducted'], ['conducted', 'largely'], ['largely', 'through'], ['through', 'the'], ['the', 'Python'], ['Python', 'Enhancement'], ['Enhancement', 'Proposal'], ['Proposal', '(PEP)'], ['(PEP)', 'process,'], ['process,', 'the'], ['the', 'primary'], ['primary', 'mechanism'], ['mechanism', 'for'], ['for', 'proposing'], ['proposing', 'major'], ['major', 'new'], ['new', 'features,'], ['features,', 'collecting'], ['collecting', 'community'], ['community', 'input'], ['input', 'on'], ['on', 'issues'], ['issues', 'and'], ['and', 'documenting'], ['documenting', 'Python'], ['Python', 'design'], ['design', 'decisions.'], ['decisions.', 'Outstanding'], ['Outstanding', 'PEPs'], ['PEPs', 'are'], ['are', 'reviewed'], ['reviewed', 'and'], ['and', 'commented'], ['commented', 'on'], ['on', 'by'], ['by', 'the'], ['the', 'Python'], ['Python', 'community'], ['community', 'and'], ['and', 'Guido'], ['Guido', 'Van'], ['Van', 'Rossum,'], ['Rossum,', \"Python's\"], [\"Python's\", 'Benevolent'], ['Benevolent', 'Dictator'], ['Dictator', 'For'], ['For', 'Life.'], ['Life.', 'Enhancement'], ['Enhancement', 'of'], ['of', 'the'], ['the', 'language'], ['language', 'corresponds'], ['corresponds', 'with'], ['with', 'development'], ['development', 'of'], ['of', 'the'], ['the', 'CPython'], ['CPython', 'reference'], ['reference', 'implementation.'], ['implementation.', 'The'], ['The', 'mailing'], ['mailing', 'list'], ['list', 'python-dev'], ['python-dev', 'is'], ['is', 'the'], ['the', 'primary'], ['primary', 'forum'], ['forum', 'for'], ['for', 'the'], ['the', \"language's\"], [\"language's\", 'development.'], ['development.', 'Specific'], ['Specific', 'issues'], ['issues', 'are'], ['are', 'discussed'], ['discussed', 'in'], ['in', 'the'], ['the', 'Roundup'], ['Roundup', 'bug'], ['bug', 'tracker'], ['tracker', 'maintained'], ['maintained', 'at'], ['at', 'python.org.'], ['python.org.', 'Development'], ['Development', 'originally'], ['originally', 'took'], ['took', 'place'], ['place', 'on'], ['on', 'a'], ['a', 'self-hosted'], ['self-hosted', 'source-code'], ['source-code', 'repository'], ['repository', 'running'], ['running', 'Mercurial,'], ['Mercurial,', 'until'], ['until', 'Python'], ['Python', 'moved'], ['moved', 'to'], ['to', 'GitHub'], ['GitHub', 'in'], ['in', 'January'], ['January', '.'], ['.', \"CPython's\"], [\"CPython's\", 'public'], ['public', 'releases'], ['releases', 'come'], ['come', 'in'], ['in', 'three'], ['three', 'types,'], ['types,', 'distinguished'], ['distinguished', 'by'], ['by', 'which'], ['which', 'part'], ['part', 'of'], ['of', 'the'], ['the', 'version'], ['version', 'number'], ['number', 'is'], ['is', 'incremented:'], ['incremented:', 'Backward-incompatible'], ['Backward-incompatible', 'versions,'], ['versions,', 'where'], ['where', 'code'], ['code', 'is'], ['is', 'expected'], ['expected', 'to'], ['to', 'break'], ['break', 'and'], ['and', 'need'], ['need', 'to'], ['to', 'be'], ['be', 'manually'], ['manually', 'ported.'], ['ported.', 'The'], ['The', 'first'], ['first', 'part'], ['part', 'of'], ['of', 'the'], ['the', 'version'], ['version', 'number'], ['number', 'is'], ['is', 'incremented.'], ['incremented.', 'These'], ['These', 'releases'], ['releases', 'happen'], ['happen', 'infrequentlyfor'], ['infrequentlyfor', 'example,'], ['example,', 'version'], ['version', '.'], ['.', 'was'], ['was', 'released'], ['released', 'years'], ['years', 'after'], ['after', '.'], ['.', '.'], ['.', 'Major'], ['Major', 'or'], ['or', '\"feature\"'], ['\"feature\"', 'releases,'], ['releases,', 'about'], ['about', 'every'], ['every', 'months,'], ['months,', 'are'], ['are', 'largely'], ['largely', 'compatible'], ['compatible', 'but'], ['but', 'introduce'], ['introduce', 'new'], ['new', 'features.'], ['features.', 'The'], ['The', 'second'], ['second', 'part'], ['part', 'of'], ['of', 'the'], ['the', 'version'], ['version', 'number'], ['number', 'is'], ['is', 'incremented.'], ['incremented.', 'Each'], ['Each', 'major'], ['major', 'version'], ['version', 'is'], ['is', 'supported'], ['supported', 'by'], ['by', 'bugfixes'], ['bugfixes', 'for'], ['for', 'several'], ['several', 'years'], ['years', 'after'], ['after', 'its'], ['its', 'release.'], ['release.', 'Bugfix'], ['Bugfix', 'releases,'], ['releases,', 'which'], ['which', 'introduce'], ['introduce', 'no'], ['no', 'new'], ['new', 'features,'], ['features,', 'occur'], ['occur', 'about'], ['about', 'every'], ['every', 'months'], ['months', 'and'], ['and', 'are'], ['are', 'made'], ['made', 'when'], ['when', 'a'], ['a', 'sufficient'], ['sufficient', 'number'], ['number', 'of'], ['of', 'bugs'], ['bugs', 'have'], ['have', 'been'], ['been', 'fixed'], ['fixed', 'upstream'], ['upstream', 'since'], ['since', 'the'], ['the', 'last'], ['last', 'release.'], ['release.', 'Security'], ['Security', 'vulnerabilities'], ['vulnerabilities', 'are'], ['are', 'also'], ['also', 'patched'], ['patched', 'in'], ['in', 'these'], ['these', 'releases.'], ['releases.', 'The'], ['The', 'third'], ['third', 'and'], ['and', 'final'], ['final', 'part'], ['part', 'of'], ['of', 'the'], ['the', 'version'], ['version', 'number'], ['number', 'is'], ['is', 'incremented.'], ['incremented.', 'Many'], ['Many', 'alpha,'], ['alpha,', 'beta,'], ['beta,', 'and'], ['and', 'release-candidates'], ['release-candidates', 'are'], ['are', 'also'], ['also', 'released'], ['released', 'as'], ['as', 'previews'], ['previews', 'and'], ['and', 'for'], ['for', 'testing'], ['testing', 'before'], ['before', 'final'], ['final', 'releases.'], ['releases.', 'Although'], ['Although', 'there'], ['there', 'is'], ['is', 'a'], ['a', 'rough'], ['rough', 'schedule'], ['schedule', 'for'], ['for', 'each'], ['each', 'release,'], ['release,', 'they'], ['they', 'are'], ['are', 'often'], ['often', 'delayed'], ['delayed', 'if'], ['if', 'the'], ['the', 'code'], ['code', 'is'], ['is', 'not'], ['not', 'ready.'], ['ready.', \"Python's\"], [\"Python's\", 'development'], ['development', 'team'], ['team', 'monitors'], ['monitors', 'the'], ['the', 'state'], ['state', 'of'], ['of', 'the'], ['the', 'code'], ['code', 'by'], ['by', 'running'], ['running', 'the'], ['the', 'large'], ['large', 'unit'], ['unit', 'test'], ['test', 'suite'], ['suite', 'during'], ['during', 'development,'], ['development,', 'and'], ['and', 'using'], ['using', 'the'], ['the', 'BuildBot'], ['BuildBot', 'continuous'], ['continuous', 'integration'], ['integration', 'system.'], ['system.', 'The'], ['The', 'community'], ['community', 'of'], ['of', 'Python'], ['Python', 'developers'], ['developers', 'has'], ['has', 'also'], ['also', 'contributed'], ['contributed', 'over'], ['over', ','], [',', 'software'], ['software', 'modules'], ['modules', '(as'], ['(as', 'of'], ['of', 'August'], ['August', 'update'], ['update', ')'], [')', 'to'], ['to', 'the'], ['the', 'Python'], ['Python', 'Package'], ['Package', 'Index'], ['Index', '(PyPI),'], ['(PyPI),', 'the'], ['the', 'official'], ['official', 'repository'], ['repository', 'of'], ['of', 'third-party'], ['third-party', 'Python'], ['Python', 'libraries.'], ['libraries.', 'The'], ['The', 'major'], ['major', 'academic'], ['academic', 'conference'], ['conference', 'on'], ['on', 'Python'], ['Python', 'is'], ['is', 'PyCon.'], ['PyCon.', 'There'], ['There', 'are'], ['are', 'also'], ['also', 'special'], ['special', 'Python'], ['Python', 'mentoring'], ['mentoring', 'programmes,'], ['programmes,', 'such'], ['such', 'as'], ['as', 'Pyladies.'], ['Pyladies.', 'Naming'], ['Naming', 'edit'], ['edit', \"Python's\"], [\"Python's\", 'name'], ['name', 'is'], ['is', 'derived'], ['derived', 'from'], ['from', 'the'], ['the', 'British'], ['British', 'comedy'], ['comedy', 'group'], ['group', 'Monty'], ['Monty', 'Python,'], ['Python,', 'whom'], ['whom', 'Python'], ['Python', 'creator'], ['creator', 'Guido'], ['Guido', 'van'], ['van', 'Rossum'], ['Rossum', 'enjoyed'], ['enjoyed', 'while'], ['while', 'developing'], ['developing', 'the'], ['the', 'language.'], ['language.', 'Monty'], ['Monty', 'Python'], ['Python', 'references'], ['references', 'appear'], ['appear', 'frequently'], ['frequently', 'in'], ['in', 'Python'], ['Python', 'code'], ['code', 'and'], ['and', 'culture;'], ['culture;', 'for'], ['for', 'example,'], ['example,', 'the'], ['the', 'metasyntactic'], ['metasyntactic', 'variables'], ['variables', 'often'], ['often', 'used'], ['used', 'in'], ['in', 'Python'], ['Python', 'literature'], ['literature', 'are'], ['are', 'spam'], ['spam', 'and'], ['and', 'eggs'], ['eggs', 'instead'], ['instead', 'of'], ['of', 'the'], ['the', 'traditional'], ['traditional', 'foo'], ['foo', 'and'], ['and', 'bar'], ['bar', '.'], ['.', 'The'], ['The', 'official'], ['official', 'Python'], ['Python', 'documentation'], ['documentation', 'also'], ['also', 'contains'], ['contains', 'various'], ['various', 'references'], ['references', 'to'], ['to', 'Monty'], ['Monty', 'Python'], ['Python', 'routines.'], ['routines.', 'The'], ['The', 'prefix'], ['prefix', 'Py-'], ['Py-', 'is'], ['is', 'used'], ['used', 'to'], ['to', 'show'], ['show', 'that'], ['that', 'something'], ['something', 'is'], ['is', 'related'], ['related', 'to'], ['to', 'Python.'], ['Python.', 'Examples'], ['Examples', 'of'], ['of', 'the'], ['the', 'use'], ['use', 'of'], ['of', 'this'], ['this', 'prefix'], ['prefix', 'in'], ['in', 'names'], ['names', 'of'], ['of', 'Python'], ['Python', 'applications'], ['applications', 'or'], ['or', 'libraries'], ['libraries', 'include'], ['include', 'Pygame,'], ['Pygame,', 'a'], ['a', 'binding'], ['binding', 'of'], ['of', 'SDL'], ['SDL', 'to'], ['to', 'Python'], ['Python', '(commonly'], ['(commonly', 'used'], ['used', 'to'], ['to', 'create'], ['create', 'games);'], ['games);', 'Python'], ['Python', 'for'], ['for', 'S'], ['S', ','], [',', 'an'], ['an', 'implementation'], ['implementation', 'for'], ['for', 'the'], ['the', 'Symbian'], ['Symbian', 'S'], ['S', 'operating'], ['operating', 'system;'], ['system;', 'PyQt'], ['PyQt', 'and'], ['and', 'PyGTK,'], ['PyGTK,', 'which'], ['which', 'bind'], ['bind', 'Qt'], ['Qt', 'and'], ['and', 'GTK'], ['GTK', 'to'], ['to', 'Python'], ['Python', 'respectively;'], ['respectively;', 'and'], ['and', 'PyPy,'], ['PyPy,', 'a'], ['a', 'Python'], ['Python', 'implementation'], ['implementation', 'originally'], ['originally', 'written'], ['written', 'in'], ['in', 'Python.'], ['Python.', 'Uses'], ['Uses', 'edit'], ['edit', 'Main'], ['Main', 'article:'], ['article:', 'List'], ['List', 'of'], ['of', 'Python'], ['Python', 'software'], ['software', 'Since'], ['Since', ','], [',', 'Python'], ['Python', 'has'], ['has', 'consistently'], ['consistently', 'ranked'], ['ranked', 'in'], ['in', 'the'], ['the', 'top'], ['top', 'ten'], ['ten', 'most'], ['most', 'popular'], ['popular', 'programming'], ['programming', 'languages'], ['languages', 'in'], ['in', 'the'], ['the', 'TIOBE'], ['TIOBE', 'Programming'], ['Programming', 'Community'], ['Community', 'Index.'], ['Index.', 'As'], ['As', 'of'], ['of', 'March'], ['March', 'update'], ['update', ','], [',', 'it'], ['it', 'is'], ['is', 'the'], ['the', 'fifth'], ['fifth', 'most'], ['most', 'popular'], ['popular', 'language.'], ['language.', 'It'], ['It', 'was'], ['was', 'selected'], ['selected', 'Programming'], ['Programming', 'Language'], ['Language', 'of'], ['of', 'the'], ['the', 'Year'], ['Year', 'in'], ['in', 'and'], ['and', '.'], ['.', 'It'], ['It', 'is'], ['is', 'the'], ['the', 'third'], ['third', 'most'], ['most', 'popular'], ['popular', 'language'], ['language', 'whose'], ['whose', 'grammatical'], ['grammatical', 'syntax'], ['syntax', 'is'], ['is', 'not'], ['not', 'predominantly'], ['predominantly', 'based'], ['based', 'on'], ['on', 'C.'], ['C.', 'An'], ['An', 'empirical'], ['empirical', 'study'], ['study', 'found'], ['found', 'that'], ['that', 'scripting'], ['scripting', 'languages,'], ['languages,', 'such'], ['such', 'as'], ['as', 'Python,'], ['Python,', 'are'], ['are', 'more'], ['more', 'productive'], ['productive', 'than'], ['than', 'conventional'], ['conventional', 'languages,'], ['languages,', 'such'], ['such', 'as'], ['as', 'C'], ['C', 'and'], ['and', 'Java,'], ['Java,', 'for'], ['for', 'programming'], ['programming', 'problems'], ['problems', 'involving'], ['involving', 'string'], ['string', 'manipulation'], ['manipulation', 'and'], ['and', 'search'], ['search', 'in'], ['in', 'a'], ['a', 'dictionary,'], ['dictionary,', 'and'], ['and', 'determined'], ['determined', 'that'], ['that', 'memory'], ['memory', 'consumption'], ['consumption', 'was'], ['was', 'often'], ['often', '\"better'], ['\"better', 'than'], ['than', 'Java'], ['Java', 'and'], ['and', 'not'], ['not', 'much'], ['much', 'worse'], ['worse', 'than'], ['than', 'C'], ['C', 'or'], ['or', 'C'], ['C', '\".'], ['\".', 'Large'], ['Large', 'organizations'], ['organizations', 'that'], ['that', 'use'], ['use', 'Python'], ['Python', 'include'], ['include', 'Wikipedia,'], ['Wikipedia,', 'Google,'], ['Google,', 'Yahoo!,'], ['Yahoo!,', 'CERN,'], ['CERN,', 'NASA,'], ['NASA,', 'and'], ['and', 'some'], ['some', 'smaller'], ['smaller', 'entities'], ['entities', 'like'], ['like', 'ILM'], ['ILM', 'and'], ['and', 'ITA.'], ['ITA.', 'The'], ['The', 'social'], ['social', 'news'], ['news', 'networking'], ['networking', 'site'], ['site', 'Reddit'], ['Reddit', 'is'], ['is', 'written'], ['written', 'entirely'], ['entirely', 'in'], ['in', 'Python.'], ['Python.', 'Python'], ['Python', 'can'], ['can', 'serve'], ['serve', 'as'], ['as', 'a'], ['a', 'scripting'], ['scripting', 'language'], ['language', 'for'], ['for', 'web'], ['web', 'applications,'], ['applications,', 'e.g.,'], ['e.g.,', 'via'], ['via', 'mod_wsgi'], ['mod_wsgi', 'for'], ['for', 'the'], ['the', 'Apache'], ['Apache', 'web'], ['web', 'server.'], ['server.', 'With'], ['With', 'Web'], ['Web', 'Server'], ['Server', 'Gateway'], ['Gateway', 'Interface,'], ['Interface,', 'a'], ['a', 'standard'], ['standard', 'API'], ['API', 'has'], ['has', 'evolved'], ['evolved', 'to'], ['to', 'facilitate'], ['facilitate', 'these'], ['these', 'applications.'], ['applications.', 'Web'], ['Web', 'frameworks'], ['frameworks', 'like'], ['like', 'Django,'], ['Django,', 'Pylons,'], ['Pylons,', 'Pyramid,'], ['Pyramid,', 'TurboGears,'], ['TurboGears,', 'web'], ['web', 'py,'], ['py,', 'Tornado,'], ['Tornado,', 'Flask,'], ['Flask,', 'Bottle'], ['Bottle', 'and'], ['and', 'Zope'], ['Zope', 'support'], ['support', 'developers'], ['developers', 'in'], ['in', 'the'], ['the', 'design'], ['design', 'and'], ['and', 'maintenance'], ['maintenance', 'of'], ['of', 'complex'], ['complex', 'applications.'], ['applications.', 'Pyjs'], ['Pyjs', 'and'], ['and', 'IronPython'], ['IronPython', 'can'], ['can', 'be'], ['be', 'used'], ['used', 'to'], ['to', 'develop'], ['develop', 'the'], ['the', 'client-side'], ['client-side', 'of'], ['of', 'Ajax-based'], ['Ajax-based', 'applications.'], ['applications.', 'SQLAlchemy'], ['SQLAlchemy', 'can'], ['can', 'be'], ['be', 'used'], ['used', 'as'], ['as', 'data'], ['data', 'mapper'], ['mapper', 'to'], ['to', 'a'], ['a', 'relational'], ['relational', 'database.'], ['database.', 'Twisted'], ['Twisted', 'is'], ['is', 'a'], ['a', 'framework'], ['framework', 'to'], ['to', 'program'], ['program', 'communications'], ['communications', 'between'], ['between', 'computers,'], ['computers,', 'and'], ['and', 'is'], ['is', 'used'], ['used', '(for'], ['(for', 'example)'], ['example)', 'by'], ['by', 'Dropbox.'], ['Dropbox.', 'Libraries'], ['Libraries', 'such'], ['such', 'as'], ['as', 'NumPy,'], ['NumPy,', 'SciPy'], ['SciPy', 'and'], ['and', 'Matplotlib'], ['Matplotlib', 'allow'], ['allow', 'the'], ['the', 'effective'], ['effective', 'use'], ['use', 'of'], ['of', 'Python'], ['Python', 'in'], ['in', 'scientific'], ['scientific', 'computing,'], ['computing,', 'with'], ['with', 'specialized'], ['specialized', 'libraries'], ['libraries', 'such'], ['such', 'as'], ['as', 'Biopython'], ['Biopython', 'and'], ['and', 'Astropy'], ['Astropy', 'providing'], ['providing', 'domain-specific'], ['domain-specific', 'functionality.'], ['functionality.', 'SageMath'], ['SageMath', 'is'], ['is', 'a'], ['a', 'mathematical'], ['mathematical', 'software'], ['software', 'with'], ['with', 'a'], ['a', '\"notebook\"'], ['\"notebook\"', 'programmable'], ['programmable', 'in'], ['in', 'Python:'], ['Python:', 'its'], ['its', 'library'], ['library', 'covers'], ['covers', 'many'], ['many', 'aspects'], ['aspects', 'of'], ['of', 'mathematics,'], ['mathematics,', 'including'], ['including', 'algebra,'], ['algebra,', 'combinatorics,'], ['combinatorics,', 'numerical'], ['numerical', 'mathematics,'], ['mathematics,', 'number'], ['number', 'theory,'], ['theory,', 'and'], ['and', 'calculus.'], ['calculus.', 'The'], ['The', 'Python'], ['Python', 'language'], ['language', 're-implemented'], ['re-implemented', 'in'], ['in', 'Java'], ['Java', 'platform'], ['platform', 'is'], ['is', 'used'], ['used', 'for'], ['for', 'numeric'], ['numeric', 'and'], ['and', 'statistical'], ['statistical', 'calculations'], ['calculations', 'with'], ['with', 'D/'], ['D/', 'D'], ['D', 'visualization'], ['visualization', 'by'], ['by', 'the'], ['the', 'DMelt'], ['DMelt', 'project.'], ['project.', 'Python'], ['Python', 'has'], ['has', 'been'], ['been', 'successfully'], ['successfully', 'embedded'], ['embedded', 'in'], ['in', 'many'], ['many', 'software'], ['software', 'products'], ['products', 'as'], ['as', 'a'], ['a', 'scripting'], ['scripting', 'language,'], ['language,', 'including'], ['including', 'in'], ['in', 'finite'], ['finite', 'element'], ['element', 'method'], ['method', 'software'], ['software', 'such'], ['such', 'as'], ['as', 'Abaqus,'], ['Abaqus,', 'D'], ['D', 'parametric'], ['parametric', 'modeler'], ['modeler', 'like'], ['like', 'FreeCAD,'], ['FreeCAD,', 'D'], ['D', 'animation'], ['animation', 'packages'], ['packages', 'such'], ['such', 'as'], ['as', 'ds'], ['ds', 'Max,'], ['Max,', 'Blender,'], ['Blender,', 'Cinema'], ['Cinema', 'D,'], ['D,', 'Lightwave,'], ['Lightwave,', 'Houdini,'], ['Houdini,', 'Maya,'], ['Maya,', 'modo,'], ['modo,', 'MotionBuilder,'], ['MotionBuilder,', 'Softimage,'], ['Softimage,', 'the'], ['the', 'visual'], ['visual', 'effects'], ['effects', 'compositor'], ['compositor', 'Nuke,'], ['Nuke,', 'D'], ['D', 'imaging'], ['imaging', 'programs'], ['programs', 'like'], ['like', 'GIMP,'], ['GIMP,', 'Inkscape,'], ['Inkscape,', 'Scribus'], ['Scribus', 'and'], ['and', 'Paint'], ['Paint', 'Shop'], ['Shop', 'Pro,'], ['Pro,', 'and'], ['and', 'musical'], ['musical', 'notation'], ['notation', 'programs'], ['programs', 'like'], ['like', 'scorewriter'], ['scorewriter', 'and'], ['and', 'capella.'], ['capella.', 'GNU'], ['GNU', 'Debugger'], ['Debugger', 'uses'], ['uses', 'Python'], ['Python', 'as'], ['as', 'a'], ['a', 'pretty'], ['pretty', 'printer'], ['printer', 'to'], ['to', 'show'], ['show', 'complex'], ['complex', 'structures'], ['structures', 'such'], ['such', 'as'], ['as', 'C'], ['C', 'containers.'], ['containers.', 'Esri'], ['Esri', 'promotes'], ['promotes', 'Python'], ['Python', 'as'], ['as', 'the'], ['the', 'best'], ['best', 'choice'], ['choice', 'for'], ['for', 'writing'], ['writing', 'scripts'], ['scripts', 'in'], ['in', 'ArcGIS.'], ['ArcGIS.', 'It'], ['It', 'has'], ['has', 'also'], ['also', 'been'], ['been', 'used'], ['used', 'in'], ['in', 'several'], ['several', 'video'], ['video', 'games,'], ['games,', 'and'], ['and', 'has'], ['has', 'been'], ['been', 'adopted'], ['adopted', 'as'], ['as', 'first'], ['first', 'of'], ['of', 'the'], ['the', 'three'], ['three', 'available'], ['available', 'programming'], ['programming', 'languages'], ['languages', 'in'], ['in', 'Google'], ['Google', 'App'], ['App', 'Engine,'], ['Engine,', 'the'], ['the', 'other'], ['other', 'two'], ['two', 'being'], ['being', 'Java'], ['Java', 'and'], ['and', 'Go.'], ['Go.', 'Python'], ['Python', 'is'], ['is', 'also'], ['also', 'used'], ['used', 'in'], ['in', 'algorithmic'], ['algorithmic', 'trading'], ['trading', 'and'], ['and', 'quantitative'], ['quantitative', 'finance.'], ['finance.', 'Python'], ['Python', 'can'], ['can', 'also'], ['also', 'be'], ['be', 'implemented'], ['implemented', 'in'], ['in', 'APIs'], ['APIs', 'of'], ['of', 'online'], ['online', 'brokerages'], ['brokerages', 'that'], ['that', 'run'], ['run', 'on'], ['on', 'other'], ['other', 'languages'], ['languages', 'by'], ['by', 'using'], ['using', 'wrappers.'], ['wrappers.', 'Python'], ['Python', 'has'], ['has', 'been'], ['been', 'used'], ['used', 'in'], ['in', 'artificial'], ['artificial', 'intelligence'], ['intelligence', 'projects.'], ['projects.', 'As'], ['As', 'a'], ['a', 'scripting'], ['scripting', 'language'], ['language', 'with'], ['with', 'modular'], ['modular', 'architecture,'], ['architecture,', 'simple'], ['simple', 'syntax'], ['syntax', 'and'], ['and', 'rich'], ['rich', 'text'], ['text', 'processing'], ['processing', 'tools,'], ['tools,', 'Python'], ['Python', 'is'], ['is', 'often'], ['often', 'used'], ['used', 'for'], ['for', 'natural'], ['natural', 'language'], ['language', 'processing.'], ['processing.', 'Many'], ['Many', 'operating'], ['operating', 'systems'], ['systems', 'include'], ['include', 'Python'], ['Python', 'as'], ['as', 'a'], ['a', 'standard'], ['standard', 'component.'], ['component.', 'It'], ['It', 'ships'], ['ships', 'with'], ['with', 'most'], ['most', 'Linux'], ['Linux', 'distributions,'], ['distributions,', 'AmigaOS'], ['AmigaOS', ','], [',', 'FreeBSD,'], ['FreeBSD,', 'NetBSD,'], ['NetBSD,', 'OpenBSD'], ['OpenBSD', 'and'], ['and', 'macOS,'], ['macOS,', 'and'], ['and', 'can'], ['can', 'be'], ['be', 'used'], ['used', 'from'], ['from', 'the'], ['the', 'command'], ['command', 'line'], ['line', '(terminal).'], ['(terminal).', 'Many'], ['Many', 'Linux'], ['Linux', 'distributions'], ['distributions', 'use'], ['use', 'installers'], ['installers', 'written'], ['written', 'in'], ['in', 'Python:'], ['Python:', 'Ubuntu'], ['Ubuntu', 'uses'], ['uses', 'the'], ['the', 'Ubiquity'], ['Ubiquity', 'installer,'], ['installer,', 'while'], ['while', 'Red'], ['Red', 'Hat'], ['Hat', 'Linux'], ['Linux', 'and'], ['and', 'Fedora'], ['Fedora', 'use'], ['use', 'the'], ['the', 'Anaconda'], ['Anaconda', 'installer.'], ['installer.', 'Gentoo'], ['Gentoo', 'Linux'], ['Linux', 'uses'], ['uses', 'Python'], ['Python', 'in'], ['in', 'its'], ['its', 'package'], ['package', 'management'], ['management', 'system,'], ['system,', 'Portage.'], ['Portage.', 'Python'], ['Python', 'is'], ['is', 'used'], ['used', 'extensively'], ['extensively', 'in'], ['in', 'the'], ['the', 'information'], ['information', 'security'], ['security', 'industry,'], ['industry,', 'including'], ['including', 'in'], ['in', 'exploit'], ['exploit', 'development.'], ['development.', 'Most'], ['Most', 'of'], ['of', 'the'], ['the', 'Sugar'], ['Sugar', 'software'], ['software', 'for'], ['for', 'the'], ['the', 'One'], ['One', 'Laptop'], ['Laptop', 'per'], ['per', 'Child'], ['Child', 'XO,'], ['XO,', 'now'], ['now', 'developed'], ['developed', 'at'], ['at', 'Sugar'], ['Sugar', 'Labs,'], ['Labs,', 'is'], ['is', 'written'], ['written', 'in'], ['in', 'Python.'], ['Python.', 'The'], ['The', 'Raspberry'], ['Raspberry', 'Pi'], ['Pi', 'single-board'], ['single-board', 'computer'], ['computer', 'project'], ['project', 'has'], ['has', 'adopted'], ['adopted', 'Python'], ['Python', 'as'], ['as', 'its'], ['its', 'main'], ['main', 'user-programming'], ['user-programming', 'language.'], ['language.', 'LibreOffice'], ['LibreOffice', 'includes'], ['includes', 'Python,'], ['Python,', 'and'], ['and', 'intends'], ['intends', 'to'], ['to', 'replace'], ['replace', 'Java'], ['Java', 'with'], ['with', 'Python.'], ['Python.', 'Its'], ['Its', 'Python'], ['Python', 'Scripting'], ['Scripting', 'Provider'], ['Provider', 'is'], ['is', 'a'], ['a', 'core'], ['core', 'feature'], ['feature', 'since'], ['since', 'Version'], ['Version', '.'], ['.', 'from'], ['from', 'February'], ['February', '.'], ['.', 'Languages'], ['Languages', 'influenced'], ['influenced', 'by'], ['by', 'Python'], ['Python', 'edit'], ['edit', \"Python's\"], [\"Python's\", 'design'], ['design', 'and'], ['and', 'philosophy'], ['philosophy', 'have'], ['have', 'influenced'], ['influenced', 'many'], ['many', 'other'], ['other', 'programming'], ['programming', 'languages:'], ['languages:', 'Boo'], ['Boo', 'uses'], ['uses', 'indentation,'], ['indentation,', 'a'], ['a', 'similar'], ['similar', 'syntax,'], ['syntax,', 'and'], ['and', 'a'], ['a', 'similar'], ['similar', 'object'], ['object', 'model.'], ['model.', 'Cobra'], ['Cobra', 'uses'], ['uses', 'indentation'], ['indentation', 'and'], ['and', 'a'], ['a', 'similar'], ['similar', 'syntax,'], ['syntax,', 'and'], ['and', 'its'], ['its', '\"Acknowledgements\"'], ['\"Acknowledgements\"', 'document'], ['document', 'lists'], ['lists', 'Python'], ['Python', 'first'], ['first', 'among'], ['among', 'languages'], ['languages', 'that'], ['that', 'influenced'], ['influenced', 'it.'], ['it.', 'However,'], ['However,', 'Cobra'], ['Cobra', 'directly'], ['directly', 'supports'], ['supports', 'design-by-contract,'], ['design-by-contract,', 'unit'], ['unit', 'tests,'], ['tests,', 'and'], ['and', 'optional'], ['optional', 'static'], ['static', 'typing.'], ['typing.', 'CoffeeScript,'], ['CoffeeScript,', 'a'], ['a', 'programming'], ['programming', 'language'], ['language', 'that'], ['that', 'cross-compiles'], ['cross-compiles', 'to'], ['to', 'JavaScript,'], ['JavaScript,', 'has'], ['has', 'Python-inspired'], ['Python-inspired', 'syntax.'], ['syntax.', 'ECMAScript'], ['ECMAScript', 'borrowed'], ['borrowed', 'iterators,'], ['iterators,', 'generators'], ['generators', 'and'], ['and', 'list'], ['list', 'comprehensions'], ['comprehensions', 'from'], ['from', 'Python.'], ['Python.', 'Go'], ['Go', 'is'], ['is', 'described'], ['described', 'as'], ['as', 'incorporating'], ['incorporating', 'the'], ['the', '\"development'], ['\"development', 'speed'], ['speed', 'of'], ['of', 'working'], ['working', 'in'], ['in', 'a'], ['a', 'dynamic'], ['dynamic', 'language'], ['language', 'like'], ['like', 'Python\".'], ['Python\".', 'Groovy'], ['Groovy', 'was'], ['was', 'motivated'], ['motivated', 'by'], ['by', 'the'], ['the', 'desire'], ['desire', 'to'], ['to', 'bring'], ['bring', 'the'], ['the', 'Python'], ['Python', 'design'], ['design', 'philosophy'], ['philosophy', 'to'], ['to', 'Java.'], ['Java.', 'Julia'], ['Julia', 'was'], ['was', 'designed'], ['designed', '\"with'], ['\"with', 'true'], ['true', 'macros'], ['macros', '..'], ['..', 'and'], ['and', 'to'], ['to', 'be'], ['be', 'as'], ['as', 'usable'], ['usable', 'for'], ['for', 'general'], ['general', 'programming'], ['programming', 'as'], ['as', 'Python'], ['Python', 'and'], ['and', 'should'], ['should', 'be'], ['be', 'as'], ['as', 'fast'], ['fast', 'as'], ['as', 'C\".'], ['C\".', 'Calling'], ['Calling', 'to'], ['to', 'or'], ['or', 'from'], ['from', 'Julia'], ['Julia', 'is'], ['is', 'possible;'], ['possible;', 'to'], ['to', 'with'], ['with', 'PyCall.jl'], ['PyCall.jl', 'and'], ['and', 'a'], ['a', 'Python'], ['Python', 'package'], ['package', 'pyjulia'], ['pyjulia', 'allows'], ['allows', 'calling,'], ['calling,', 'in'], ['in', 'the'], ['the', 'other'], ['other', 'direction,'], ['direction,', 'from'], ['from', 'Python.'], ['Python.', 'OCaml'], ['OCaml', 'has'], ['has', 'an'], ['an', 'optional'], ['optional', 'syntax'], ['syntax', 'named'], ['named', 'twt'], ['twt', '(The'], ['(The', 'Whitespace'], ['Whitespace', 'Thing),'], ['Thing),', 'inspired'], ['inspired', 'by'], ['by', 'Python'], ['Python', 'and'], ['and', 'Haskell.'], ['Haskell.', \"Ruby's\"], [\"Ruby's\", 'creator,'], ['creator,', 'Yukihiro'], ['Yukihiro', 'Matsumoto,'], ['Matsumoto,', 'has'], ['has', 'said:'], ['said:', '\"I'], ['\"I', 'wanted'], ['wanted', 'a'], ['a', 'scripting'], ['scripting', 'language'], ['language', 'that'], ['that', 'was'], ['was', 'more'], ['more', 'powerful'], ['powerful', 'than'], ['than', 'Perl,'], ['Perl,', 'and'], ['and', 'more'], ['more', 'object-oriented'], ['object-oriented', 'than'], ['than', 'Python.'], ['Python.', \"That's\"], [\"That's\", 'why'], ['why', 'I'], ['I', 'decided'], ['decided', 'to'], ['to', 'design'], ['design', 'my'], ['my', 'own'], ['own', 'language.\"'], ['language.\"', 'Swift,'], ['Swift,', 'a'], ['a', 'programming'], ['programming', 'language'], ['language', 'developed'], ['developed', 'by'], ['by', 'Apple,'], ['Apple,', 'has'], ['has', 'some'], ['some', 'Python-inspired'], ['Python-inspired', 'syntax.'], ['syntax.', \"Python's\"], [\"Python's\", 'development'], ['development', 'practices'], ['practices', 'have'], ['have', 'also'], ['also', 'been'], ['been', 'emulated'], ['emulated', 'by'], ['by', 'other'], ['other', 'languages.'], ['languages.', 'For'], ['For', 'example,'], ['example,', 'the'], ['the', 'practice'], ['practice', 'of'], ['of', 'requiring'], ['requiring', 'a'], ['a', 'document'], ['document', 'describing'], ['describing', 'the'], ['the', 'rationale'], ['rationale', 'for,'], ['for,', 'and'], ['and', 'issues'], ['issues', 'surrounding,'], ['surrounding,', 'a'], ['a', 'change'], ['change', 'to'], ['to', 'the'], ['the', 'language'], ['language', '(in'], ['(in', 'Python,'], ['Python,', 'a'], ['a', 'PEP)'], ['PEP)', 'is'], ['is', 'also'], ['also', 'used'], ['used', 'in'], ['in', 'Tcl'], ['Tcl', 'and'], ['and', 'Erlang'], ['Erlang', '.'], ['.', 'Python'], ['Python', 'received'], ['received', \"TIOBE's\"], [\"TIOBE's\", 'Programming'], ['Programming', 'Language'], ['Language', 'of'], ['of', 'the'], ['the', 'Year'], ['Year', 'awards'], ['awards', 'in'], ['in', 'and'], ['and', '.'], ['.', 'The'], ['The', 'award'], ['award', 'is'], ['is', 'given'], ['given', 'to'], ['to', 'the'], ['the', 'language'], ['language', 'with'], ['with', 'the'], ['the', 'greatest'], ['greatest', 'growth'], ['growth', 'in'], ['in', 'popularity'], ['popularity', 'over'], ['over', 'the'], ['the', 'year,'], ['year,', 'as'], ['as', 'measured'], ['measured', 'by'], ['by', 'the'], ['the', 'TIOBE'], ['TIOBE', 'index.'], ['index.', 'See'], ['See', 'also'], ['also', 'edit'], ['edit', 'Free'], ['Free', 'software'], ['software', 'portal'], ['portal', 'Python'], ['Python', 'programming'], ['programming', 'portal'], ['portal', 'Comparison'], ['Comparison', 'of'], ['of', 'integrated'], ['integrated', 'development'], ['development', 'environments'], ['environments', 'for'], ['for', 'Python'], ['Python', 'Comparison'], ['Comparison', 'of'], ['of', 'programming'], ['programming', 'languages'], ['languages', 'List'], ['List', 'of'], ['of', 'programming'], ['programming', 'languages'], ['languages', 'Off-side'], ['Off-side', 'rule'], ['rule', 'References'], ['References', 'edit'], ['edit', '^'], ['^', '\"The'], ['\"The', 'History'], ['History', 'of'], ['of', 'Python:'], ['Python:', 'A'], ['A', 'Brief'], ['Brief', 'Timeline'], ['Timeline', 'of'], ['of', 'Python\".'], ['Python\".', 'Blogger.'], ['Blogger.', 'January'], ['January', '.'], ['.', 'Retrieved'], ['Retrieved', 'March'], ['March', '.'], ['.', '^'], ['^', 'Deily,'], ['Deily,', 'Ned'], ['Ned', '('], ['(', 'December'], ['December', ').'], [').', '\"Python'], ['\"Python', '.'], ['.', '.'], ['.', 'is'], ['is', 'now'], ['now', 'available\".'], ['available\".', 'Python'], ['Python', 'Insider.'], ['Insider.', 'The'], ['The', 'Python'], ['Python', 'Core'], ['Core', 'Developers.'], ['Developers.', 'Retrieved'], ['Retrieved', 'December'], ['December', '.'], ['.', '^'], ['^', 'Peterson,'], ['Peterson,', 'Benjamin'], ['Benjamin', '('], ['(', 'September'], ['September', ').'], [').', '\"Python'], ['\"Python', '.'], ['.', '.'], ['.', 'released\".'], ['released\".', 'Python'], ['Python', 'Insider.'], ['Insider.', 'The'], ['The', 'Python'], ['Python', 'Core'], ['Core', 'Developers.'], ['Developers.', 'Retrieved'], ['Retrieved', 'September'], ['September', '.'], ['.', '^'], ['^', 'File'], ['File', 'extension'], ['extension', '.pyo'], ['.pyo', 'was'], ['was', 'removed'], ['removed', 'in'], ['in', 'Python'], ['Python', '.'], ['.', '.'], ['.', 'See'], ['See', 'PEP'], ['PEP', '^'], ['^', 'Holth,'], ['Holth,', 'Moore'], ['Moore', '('], ['(', 'March'], ['March', ').'], [').', '\"PEP'], ['\"PEP', '--'], ['--', 'Improving'], ['Improving', 'Python'], ['Python', 'ZIP'], ['ZIP', 'Application'], ['Application', 'Support\".'], ['Support\".', 'Retrieved'], ['Retrieved', 'November'], ['November', '.'], ['.', '^'], ['^', 'a'], ['a', 'b'], ['b', '\"Why'], ['\"Why', 'was'], ['was', 'Python'], ['Python', 'created'], ['created', 'in'], ['in', 'the'], ['the', 'first'], ['first', 'place?\".'], ['place?\".', 'General'], ['General', 'Python'], ['Python', 'FAQ.'], ['FAQ.', 'Python'], ['Python', 'Software'], ['Software', 'Foundation.'], ['Foundation.', 'Retrieved'], ['Retrieved', 'March'], ['March', '.'], ['.', '^'], ['^', 'Kuchling,'], ['Kuchling,', 'Andrew'], ['Andrew', 'M.'], ['M.', '('], ['(', 'December'], ['December', ').'], [').', '\"Interview'], ['\"Interview', 'with'], ['with', 'Guido'], ['Guido', 'van'], ['van', 'Rossum'], ['Rossum', '(July'], ['(July', ')\".'], [')\".', 'amk.ca.'], ['amk.ca.', 'Archived'], ['Archived', 'from'], ['from', 'the'], ['the', 'original'], ['original', 'on'], ['on', 'May'], ['May', '.'], ['.', 'Retrieved'], ['Retrieved', 'March'], ['March', '.'], ['.', '^'], ['^', 'van'], ['van', 'Rossum,'], ['Rossum,', 'Guido'], ['Guido', '('], ['(', ').'], [').', '\"An'], ['\"An', 'Introduction'], ['Introduction', 'to'], ['to', 'Python'], ['Python', 'for'], ['for', 'UNIX/C'], ['UNIX/C', 'Programmers\".'], ['Programmers\".', 'Proceedings'], ['Proceedings', 'of'], ['of', 'the'], ['the', 'NLUUG'], ['NLUUG', 'najaarsconferentie'], ['najaarsconferentie', '(Dutch'], ['(Dutch', 'UNIX'], ['UNIX', 'users'], ['users', 'group).'], ['group).', 'even'], ['even', 'though'], ['though', 'the'], ['the', 'design'], ['design', 'of'], ['of', 'C'], ['C', 'is'], ['is', 'far'], ['far', 'from'], ['from', 'ideal,'], ['ideal,', 'its'], ['its', 'influence'], ['influence', 'on'], ['on', 'Python'], ['Python', 'is'], ['is', 'considerable.'], ['considerable.', '^'], ['^', 'a'], ['a', 'b'], ['b', '\"Classes\".'], ['\"Classes\".', 'The'], ['The', 'Python'], ['Python', 'Tutorial.'], ['Tutorial.', 'Python'], ['Python', 'Software'], ['Software', 'Foundation.'], ['Foundation.', 'Retrieved'], ['Retrieved', 'February'], ['February', '.'], ['.', 'It'], ['It', 'is'], ['is', 'a'], ['a', 'mixture'], ['mixture', 'of'], ['of', 'the'], ['the', 'class'], ['class', 'mechanisms'], ['mechanisms', 'found'], ['found', 'in'], ['in', 'C'], ['C', 'and'], ['and', 'Modula-'], ['Modula-', '^'], ['^', 'Lundh,'], ['Lundh,', 'Fredrik.'], ['Fredrik.', '\"Call'], ['\"Call', 'By'], ['By', 'Object\".'], ['Object\".', 'effbot.org.'], ['effbot.org.', 'Retrieved'], ['Retrieved', 'November'], ['November', '.'], ['.', 'replace'], ['replace', '\"CLU\"'], ['\"CLU\"', 'with'], ['with', '\"Python\",'], ['\"Python\",', '\"record\"'], ['\"record\"', 'with'], ['with', '\"instance\",'], ['\"instance\",', 'and'], ['and', '\"procedure\"'], ['\"procedure\"', 'with'], ['with', '\"function'], ['\"function', 'or'], ['or', 'method\",'], ['method\",', 'and'], ['and', 'you'], ['you', 'get'], ['get', 'a'], ['a', 'pretty'], ['pretty', 'accurate'], ['accurate', 'description'], ['description', 'of'], ['of', \"Python's\"], [\"Python's\", 'object'], ['object', 'model.'], ['model.', '^'], ['^', 'Simionato,'], ['Simionato,', 'Michele.'], ['Michele.', '\"The'], ['\"The', 'Python'], ['Python', '.'], ['.', 'Method'], ['Method', 'Resolution'], ['Resolution', 'Order\".'], ['Order\".', 'Python'], ['Python', 'Software'], ['Software', 'Foundation.'], ['Foundation.', 'The'], ['The', 'C'], ['C', 'method'], ['method', 'itself'], ['itself', 'has'], ['has', 'nothing'], ['nothing', 'to'], ['to', 'do'], ['do', 'with'], ['with', 'Python,'], ['Python,', 'since'], ['since', 'it'], ['it', 'was'], ['was', 'invented'], ['invented', 'by'], ['by', 'people'], ['people', 'working'], ['working', 'on'], ['on', 'Dylan'], ['Dylan', 'and'], ['and', 'it'], ['it', 'is'], ['is', 'described'], ['described', 'in'], ['in', 'a'], ['a', 'paper'], ['paper', 'intended'], ['intended', 'for'], ['for', 'lispers'], ['lispers', '^'], ['^', 'Kuchling,'], ['Kuchling,', 'A.'], ['A.', 'M.'], ['M.', '\"Functional'], ['\"Functional', 'Programming'], ['Programming', 'HOWTO\".'], ['HOWTO\".', 'Python'], ['Python', 'v'], ['v', '.'], ['.', '.'], ['.', 'documentation.'], ['documentation.', 'Python'], ['Python', 'Software'], ['Software', 'Foundation.'], ['Foundation.', 'Retrieved'], ['Retrieved', 'February'], ['February', '.'], ['.', '^'], ['^', 'Schemenauer,'], ['Schemenauer,', 'Neil;'], ['Neil;', 'Peters,'], ['Peters,', 'Tim;'], ['Tim;', 'Hetland,'], ['Hetland,', 'Magnus'], ['Magnus', 'Lie'], ['Lie', '('], ['(', 'May'], ['May', ').'], [').', '\"PEP'], ['\"PEP', 'Simple'], ['Simple', 'Generators\".'], ['Generators\".', 'Python'], ['Python', 'Enhancement'], ['Enhancement', 'Proposals.'], ['Proposals.', 'Python'], ['Python', 'Software'], ['Software', 'Foundation.'], ['Foundation.', 'Retrieved'], ['Retrieved', 'February'], ['February', '.'], ['.', '^'], ['^', 'Smith,'], ['Smith,', 'Kevin'], ['Kevin', 'D.;'], ['D.;', 'Jewett,'], ['Jewett,', 'Jim'], ['Jim', 'J.;'], ['J.;', 'Montanaro,'], ['Montanaro,', 'Skip;'], ['Skip;', 'Baxter,'], ['Baxter,', 'Anthony'], ['Anthony', '('], ['(', 'September'], ['September', ').'], [').', '\"PEP'], ['\"PEP', 'Decorators'], ['Decorators', 'for'], ['for', 'Functions'], ['Functions', 'and'], ['and', 'Methods\".'], ['Methods\".', 'Python'], ['Python', 'Enhancement'], ['Enhancement', 'Proposals.'], ['Proposals.', 'Python'], ['Python', 'Software'], ['Software', 'Foundation.'], ['Foundation.', 'Retrieved'], ['Retrieved', 'February'], ['February', '.'], ['.', '^'], ['^', '\"More'], ['\"More', 'Control'], ['Control', 'Flow'], ['Flow', 'Tools\".'], ['Tools\".', 'Python'], ['Python', 'documentation.'], ['documentation.', 'Python'], ['Python', 'Software'], ['Software', 'Foundation.'], ['Foundation.', 'Retrieved'], ['Retrieved', 'July'], ['July', '.'], ['.', '^'], ['^', 'Hubinger,'], ['Hubinger,', 'Evan.'], ['Evan.', '\"Coconut'], ['\"Coconut', 'Programming'], ['Programming', 'Language\".'], ['Language\".', 'coconut-lang.org.'], ['coconut-lang.org.', 'Retrieved'], ['Retrieved', 'August'], ['August', '.'], ['.', '^'], ['^', '\"CoffeeScript'], ['\"CoffeeScript', 'borrows'], ['borrows', 'chained'], ['chained', 'comparisons'], ['comparisons', 'from'], ['from', 'Python\".'], ['Python\".', '^'], ['^', '\"Genie'], ['\"Genie', 'Language'], ['Language', '-'], ['-', 'A'], ['A', 'brief'], ['brief', 'guide\".'], ['guide\".', 'Retrieved'], ['Retrieved', 'December'], ['December', '.'], ['.', '^'], ['^', '\"Perl'], ['\"Perl', 'and'], ['and', 'Python'], ['Python', 'influences'], ['influences', 'in'], ['in', 'JavaScript\".'], ['JavaScript\".', 'www.'], ['www.', 'ality.com.'], ['ality.com.', 'February'], ['February', '.'], ['.', 'Retrieved'], ['Retrieved', 'May'], ['May', '.'], ['.', '^'], ['^', 'Rauschmayer,'], ['Rauschmayer,', 'Axel.'], ['Axel.', '\"Chapter'], ['\"Chapter', ':'], [':', 'The'], ['The', 'Nature'], ['Nature', 'of'], ['of', 'JavaScript;'], ['JavaScript;', 'Influences\".'], ['Influences\".', \"O'Reilly,\"], [\"O'Reilly,\", 'Speaking'], ['Speaking', 'JavaScript.'], ['JavaScript.', 'Retrieved'], ['Retrieved', 'May'], ['May', '.'], ['.', '^'], ['^', 'a'], ['a', 'b'], ['b', '\"Why'], ['\"Why', 'We'], ['We', 'Created'], ['Created', 'Julia\".'], ['Julia\".', 'Julia'], ['Julia', 'website.'], ['website.', 'February'], ['February', '.'], ['.', 'Retrieved'], ['Retrieved', 'June'], ['June', '.'], ['.', '^'], ['^', 'Ring'], ['Ring', 'Team'], ['Team', '('], ['(', 'December'], ['December', ').'], [').', '\"Ring'], ['\"Ring', 'and'], ['and', 'other'], ['other', 'languages\".'], ['languages\".', 'ring-lang.net.'], ['ring-lang.net.', 'ring-lang.'], ['ring-lang.', '^'], ['^', 'Bini,'], ['Bini,', 'Ola'], ['Ola', '('], ['(', ').'], [').', 'Practical'], ['Practical', 'JRuby'], ['JRuby', 'on'], ['on', 'Rails'], ['Rails', 'Web'], ['Web', '.'], ['.', 'Projects:'], ['Projects:', 'bringing'], ['bringing', 'Ruby'], ['Ruby', 'on'], ['on', 'Rails'], ['Rails', 'to'], ['to', 'the'], ['the', 'Java'], ['Java', 'platform.'], ['platform.', 'Berkeley:'], ['Berkeley:', 'APress.'], ['APress.', 'p.'], ['p.', '.'], ['.', 'ISBN'], ['ISBN', '-'], ['-', '-'], ['-', '-'], ['-', '-'], ['-', '.'], ['.', '^'], ['^', 'Lattner,'], ['Lattner,', 'Chris'], ['Chris', '('], ['(', 'June'], ['June', ').'], [').', '\"Chris'], ['\"Chris', \"Lattner's\"], [\"Lattner's\", 'Homepage\".'], ['Homepage\".', 'Chris'], ['Chris', 'Lattner.'], ['Lattner.', 'Retrieved'], ['Retrieved', 'June'], ['June', '.'], ['.', 'The'], ['The', 'Swift'], ['Swift', 'language'], ['language', 'is'], ['is', 'the'], ['the', 'product'], ['product', 'of'], ['of', 'tireless'], ['tireless', 'effort'], ['effort', 'from'], ['from', 'a'], ['a', 'team'], ['team', 'of'], ['of', 'language'], ['language', 'experts,'], ['experts,', 'documentation'], ['documentation', 'gurus,'], ['gurus,', 'compiler'], ['compiler', 'optimization'], ['optimization', 'ninjas,'], ['ninjas,', 'and'], ['and', 'an'], ['an', 'incredibly'], ['incredibly', 'important'], ['important', 'internal'], ['internal', 'dogfooding'], ['dogfooding', 'group'], ['group', 'who'], ['who', 'provided'], ['provided', 'feedback'], ['feedback', 'to'], ['to', 'help'], ['help', 'refine'], ['refine', 'and'], ['and', 'battle-test'], ['battle-test', 'ideas.'], ['ideas.', 'Of'], ['Of', 'course,'], ['course,', 'it'], ['it', 'also'], ['also', 'greatly'], ['greatly', 'benefited'], ['benefited', 'from'], ['from', 'the'], ['the', 'experiences'], ['experiences', 'hard-won'], ['hard-won', 'by'], ['by', 'many'], ['many', 'other'], ['other', 'languages'], ['languages', 'in'], ['in', 'the'], ['the', 'field,'], ['field,', 'drawing'], ['drawing', 'ideas'], ['ideas', 'from'], ['from', 'Objective-C,'], ['Objective-C,', 'Rust,'], ['Rust,', 'Haskell,'], ['Haskell,', 'Ruby,'], ['Ruby,', 'Python,'], ['Python,', 'C#,'], ['C#,', 'CLU,'], ['CLU,', 'and'], ['and', 'far'], ['far', 'too'], ['too', 'many'], ['many', 'others'], ['others', 'to'], ['to', 'list.'], ['list.', '^'], ['^', 'Summerfield,'], ['Summerfield,', 'Mark.'], ['Mark.', 'Rapid'], ['Rapid', 'GUI'], ['GUI', 'Programming'], ['Programming', 'with'], ['with', 'Python'], ['Python', 'and'], ['and', 'Qt.'], ['Qt.', 'Python'], ['Python', 'is'], ['is', 'a'], ['a', 'very'], ['very', 'expressive'], ['expressive', 'language,'], ['language,', 'which'], ['which', 'means'], ['means', 'that'], ['that', 'we'], ['we', 'can'], ['can', 'usually'], ['usually', 'write'], ['write', 'far'], ['far', 'fewer'], ['fewer', 'lines'], ['lines', 'of'], ['of', 'Python'], ['Python', 'code'], ['code', 'than'], ['than', 'would'], ['would', 'be'], ['be', 'required'], ['required', 'for'], ['for', 'an'], ['an', 'equivalent'], ['equivalent', 'application'], ['application', 'written'], ['written', 'in,'], ['in,', 'say,'], ['say,', 'C'], ['C', 'or'], ['or', 'Java'], ['Java', '^'], ['^', 'McConnell,'], ['McConnell,', 'Steve'], ['Steve', '('], ['(', 'November'], ['November', ').'], [').', 'Code'], ['Code', 'Complete,'], ['Complete,', 'p.'], ['p.', '.'], ['.', 'ISBN'], ['ISBN', '.'], ['.', '^'], ['^', 'Kuhlman,'], ['Kuhlman,', 'Dave.'], ['Dave.', '\"A'], ['\"A', 'Python'], ['Python', 'Book:'], ['Book:', 'Beginning'], ['Beginning', 'Python,'], ['Python,', 'Advanced'], ['Advanced', 'Python,'], ['Python,', 'and'], ['and', 'Python'], ['Python', 'Exercises\".'], ['Exercises\".', '^'], ['^', '\"About'], ['\"About', 'Python\".'], ['Python\".', 'Python'], ['Python', 'Software'], ['Software', 'Foundation.'], ['Foundation.', 'Retrieved'], ['Retrieved', 'April'], ['April', '.,'], ['.,', 'second'], ['second', 'section'], ['section', '\"Fans'], ['\"Fans', 'of'], ['of', 'Python'], ['Python', 'use'], ['use', 'the'], ['the', 'phrase'], ['phrase', '\"batteries'], ['\"batteries', 'included\"'], ['included\"', 'to'], ['to', 'describe'], ['describe', 'the'], ['the', 'standard'], ['standard', 'library,'], ['library,', 'which'], ['which', 'covers'], ['covers', 'everything'], ['everything', 'from'], ['from', 'asynchronous'], ['asynchronous', 'processing'], ['processing', 'to'], ['to', 'zip'], ['zip', 'files.\"'], ['files.\"', '^'], ['^', '\"History'], ['\"History', 'and'], ['and', 'License\".'], ['License\".', 'Retrieved'], ['Retrieved', 'December'], ['December', '.'], ['.', '\"All'], ['\"All', 'Python'], ['Python', 'releases'], ['releases', 'are'], ['are', 'Open'], ['Open', 'Source\"'], ['Source\"', '^'], ['^', 'a'], ['a', 'b'], ['b', 'Venners,'], ['Venners,', 'Bill'], ['Bill', '('], ['(', 'January'], ['January', ').'], [').', '\"The'], ['\"The', 'Making'], ['Making', 'of'], ['of', 'Python\".'], ['Python\".', 'Artima'], ['Artima', 'Developer.'], ['Developer.', 'Artima.'], ['Artima.', 'Retrieved'], ['Retrieved', 'March'], ['March', '.'], ['.', '^'], ['^', 'van'], ['van', 'Rossum,'], ['Rossum,', 'Guido'], ['Guido', '('], ['(', 'January'], ['January', ').'], [').', '\"A'], ['\"A', 'Brief'], ['Brief', 'Timeline'], ['Timeline', 'of'], ['of', 'Python\".'], ['Python\".', 'The'], ['The', 'History'], ['History', 'of'], ['of', 'Python.'], ['Python.', 'Google.'], ['Google.', 'Retrieved'], ['Retrieved', 'January'], ['January', '.'], ['.', '^'], ['^', 'van'], ['van', 'Rossum,'], ['Rossum,', 'Guido'], ['Guido', '('], ['(', 'August'], ['August', ').'], [').', '\"SETL'], ['\"SETL', '(was:'], ['(was:', 'Lukewarm'], ['Lukewarm', 'about'], ['about', 'range'], ['range', 'literals)\".'], ['literals)\".', 'Python-Dev'], ['Python-Dev', '(Mailing'], ['(Mailing', 'list).'], ['list).', 'Retrieved'], ['Retrieved', 'March'], ['March', '.'], ['.', '^'], ['^', 'van'], ['van', 'Rossum,'], ['Rossum,', 'Guido'], ['Guido', '('], ['(', ').'], [').', '\"Foreword'], ['\"Foreword', 'for'], ['for', '\"Programming'], ['\"Programming', 'Python\"'], ['Python\"', '('], ['(', 'st'], ['st', 'ed.)\".'], ['ed.)\".', 'Retrieved'], ['Retrieved', 'July'], ['July', '.'], ['.', '^'], ['^', 'Kuchling,'], ['Kuchling,', 'A.'], ['A.', 'M.;'], ['M.;', 'Zadka,'], ['Zadka,', 'Moshe'], ['Moshe', '('], ['(', 'October'], ['October', ').'], [').', '\"What\\'s'], ['\"What\\'s', 'New'], ['New', 'in'], ['in', 'Python'], ['Python', '.'], ['.', '\".'], ['\".', 'Python'], ['Python', 'Software'], ['Software', 'Foundation.'], ['Foundation.', 'Retrieved'], ['Retrieved', 'February'], ['February', '.'], ['.', '^'], ['^', '\"Python'], ['\"Python', '.'], ['.', 'Release\".'], ['Release\".', 'Python'], ['Python', 'Software'], ['Software', 'Foundation.'], ['Foundation.', 'Retrieved'], ['Retrieved', 'July'], ['July', '.'], ['.', '^'], ['^', 'van'], ['van', 'Rossum,'], ['Rossum,', 'Guido'], ['Guido', '('], ['(', 'April'], ['April', ').'], [').', '\"PEP'], ['\"PEP', 'Python'], ['Python', '\".'], ['\".', 'Python'], ['Python', 'Enhancement'], ['Enhancement', 'Proposals.'], ['Proposals.', 'Python'], ['Python', 'Software'], ['Software', 'Foundation.'], ['Foundation.', 'Retrieved'], ['Retrieved', 'June'], ['June', '.'], ['.', '^'], ['^', '\"PEP'], ['\"PEP', '--'], ['--', 'Python'], ['Python', '.'], ['.', 'Release'], ['Release', 'Schedule\".'], ['Schedule\".', 'python.org.'], ['python.org.', 'Retrieved'], ['Retrieved', 'January'], ['January', '.'], ['.', '^'], ['^', '\"PEP'], ['\"PEP', '--'], ['--', 'Network'], ['Network', 'Security'], ['Security', 'Enhancements'], ['Enhancements', 'for'], ['for', 'Python'], ['Python', '.'], ['.', '.x\".'], ['.x\".', 'python.org.'], ['python.org.', 'Retrieved'], ['Retrieved', 'January'], ['January', '.'], ['.', '^'], ['^', 'Claburn,'], ['Claburn,', 'Thomas'], ['Thomas', '('], ['(', 'January'], ['January', ').'], [').', '\"Google\\'s'], ['\"Google\\'s', 'Grumpy'], ['Grumpy', 'code'], ['code', 'makes'], ['makes', 'Python'], ['Python', 'Go\".'], ['Go\".', 'Retrieved'], ['Retrieved', 'January'], ['January', '.'], ['.', '^'], ['^', '\"Google'], ['\"Google', 'Open'], ['Open', 'Source'], ['Source', 'Blog:'], ['Blog:', 'Grumpy:'], ['Grumpy:', 'Go'], ['Go', 'running'], ['running', 'Python!\".'], ['Python!\".', 'January'], ['January', '.'], ['.', 'Retrieved'], ['Retrieved', 'March'], ['March', '.'], ['.', '^'], ['^', 'The'], ['The', 'Cain'], ['Cain', 'Gang'], ['Gang', 'Ltd.'], ['Ltd.', '\"Python'], ['\"Python', 'Metaclasses:'], ['Metaclasses:', 'Who?'], ['Who?', 'Why?'], ['Why?', 'When?\"'], ['When?\"', '(PDF).'], ['(PDF).', 'Archived'], ['Archived', 'from'], ['from', 'the'], ['the', 'original'], ['original', '(PDF)'], ['(PDF)', 'on'], ['on', 'December'], ['December', '.'], ['.', 'Retrieved'], ['Retrieved', 'June'], ['June', '.'], ['.', '^'], ['^', '\"'], ['\"', '.'], ['.', '.'], ['.', 'Special'], ['Special', 'method'], ['method', 'names\".'], ['names\".', 'The'], ['The', 'Python'], ['Python', 'Language'], ['Language', 'Reference.'], ['Reference.', 'Python'], ['Python', 'Software'], ['Software', 'Foundation.'], ['Foundation.', 'Retrieved'], ['Retrieved', 'June'], ['June', '.'], ['.', '^'], ['^', '\"PyDBC:'], ['\"PyDBC:', 'method'], ['method', 'preconditions,'], ['preconditions,', 'method'], ['method', 'postconditions'], ['postconditions', 'and'], ['and', 'class'], ['class', 'invariants'], ['invariants', 'for'], ['for', 'Python\".'], ['Python\".', 'Retrieved'], ['Retrieved', 'September'], ['September', '.'], ['.', '^'], ['^', '\"Contracts'], ['\"Contracts', 'for'], ['for', 'Python\".'], ['Python\".', 'Retrieved'], ['Retrieved', 'September'], ['September', '.'], ['.', '^'], ['^', '\"PyDatalog\".'], ['\"PyDatalog\".', 'Retrieved'], ['Retrieved', 'July'], ['July', '.'], ['.', '^'], ['^', 'a'], ['a', 'b'], ['b', 'Hettinger,'], ['Hettinger,', 'Raymond'], ['Raymond', '('], ['(', 'January'], ['January', ').'], [').', '\"PEP'], ['\"PEP', 'Generator'], ['Generator', 'Expressions\".'], ['Expressions\".', 'Python'], ['Python', 'Enhancement'], ['Enhancement', 'Proposals.'], ['Proposals.', 'Python'], ['Python', 'Software'], ['Software', 'Foundation.'], ['Foundation.', 'Retrieved'], ['Retrieved', 'February'], ['February', '.'], ['.', '^'], ['^', '\"'], ['\"', '.'], ['.', 'itertools'], ['itertools', 'Functions'], ['Functions', 'creating'], ['creating', 'iterators'], ['iterators', 'for'], ['for', 'efficient'], ['efficient', 'looping\".'], ['looping\".', 'Docs.python.org.'], ['Docs.python.org.', 'Retrieved'], ['Retrieved', 'November'], ['November', '.'], ['.', '^'], ['^', 'a'], ['a', 'b'], ['b', 'Peters,'], ['Peters,', 'Tim'], ['Tim', '('], ['(', 'August'], ['August', ').'], [').', '\"PEP'], ['\"PEP', 'The'], ['The', 'Zen'], ['Zen', 'of'], ['of', 'Python\".'], ['Python\".', 'Python'], ['Python', 'Enhancement'], ['Enhancement', 'Proposals.'], ['Proposals.', 'Python'], ['Python', 'Software'], ['Software', 'Foundation.'], ['Foundation.', 'Retrieved'], ['Retrieved', 'November'], ['November', '.'], ['.', '^'], ['^', 'Martelli,'], ['Martelli,', 'Alex;'], ['Alex;', 'Ravenscroft,'], ['Ravenscroft,', 'Anna;'], ['Anna;', 'Ascher,'], ['Ascher,', 'David'], ['David', '('], ['(', ').'], [').', 'Python'], ['Python', 'Cookbook,'], ['Cookbook,', 'nd'], ['nd', 'Edition.'], ['Edition.', \"O'Reilly\"], [\"O'Reilly\", 'Media.'], ['Media.', 'p.'], ['p.', '.'], ['.', 'ISBN'], ['ISBN', '-'], ['-', '-'], ['-', '-'], ['-', '-'], ['-', '.'], ['.', '^'], ['^', '\"Python'], ['\"Python', 'Culture\".'], ['Culture\".', '^'], ['^', '\"General'], ['\"General', 'Python'], ['Python', 'FAQ\".'], ['FAQ\".', 'Python'], ['Python', 'v'], ['v', '.'], ['.', '.'], ['.', 'documentation.'], ['documentation.', 'Docs.python.org.'], ['Docs.python.org.', 'Retrieved'], ['Retrieved', 'December'], ['December', '.'], ['.', '^'], ['^', '\"'], ['\"', 'Ways'], ['Ways', 'Python'], ['Python', 'Is'], ['Is', 'a'], ['a', 'Powerful'], ['Powerful', 'Force'], ['Force', 'on'], ['on', 'the'], ['the', 'Web\".'], ['Web\".', '^'], ['^', '\"pprint'], ['\"pprint', '-'], ['-', 'Data'], ['Data', 'pretty'], ['pretty', 'printer'], ['printer', '-'], ['-', 'Python'], ['Python', 'Documentation\".'], ['Documentation\".', '^'], ['^', 'Goodger,'], ['Goodger,', 'David.'], ['David.', '\"Code'], ['\"Code', 'Like'], ['Like', 'a'], ['a', 'Pythonista:'], ['Pythonista:', 'Idiomatic'], ['Idiomatic', 'Python\".'], ['Python\".', '^'], ['^', '\"How'], ['\"How', 'to'], ['to', 'think'], ['think', 'like'], ['like', 'a'], ['a', 'Pythonista\".'], ['Pythonista\".', '^'], ['^', '\"Is'], ['\"Is', 'Python'], ['Python', 'a'], ['a', 'good'], ['good', 'language'], ['language', 'for'], ['for', 'beginning'], ['beginning', 'programmers?\".'], ['programmers?\".', 'General'], ['General', 'Python'], ['Python', 'FAQ.'], ['FAQ.', 'Python'], ['Python', 'Software'], ['Software', 'Foundation.'], ['Foundation.', 'Retrieved'], ['Retrieved', 'March'], ['March', '.'], ['.', '^'], ['^', '\"Myths'], ['\"Myths', 'about'], ['about', 'indentation'], ['indentation', 'in'], ['in', 'Python\".'], ['Python\".', 'Secnetix.de.'], ['Secnetix.de.', 'Retrieved'], ['Retrieved', 'April'], ['April', '.'], ['.', '^'], ['^', 'Sweigart,'], ['Sweigart,', 'Al'], ['Al', '('], ['(', ').'], [').', '\"Appendix'], ['\"Appendix', 'A:'], ['A:', 'Differences'], ['Differences', 'Between'], ['Between', 'Python'], ['Python', 'and'], ['and', '\".'], ['\".', 'Invent'], ['Invent', 'Your'], ['Your', 'Own'], ['Own', 'Computer'], ['Computer', 'Games'], ['Games', 'with'], ['with', 'Python'], ['Python', '('], ['(', 'ed.).'], ['ed.).', 'ISBN'], ['ISBN', '-'], ['-', '-'], ['-', '-'], ['-', '-'], ['-', '.'], ['.', 'Retrieved'], ['Retrieved', 'February'], ['February', '.'], ['.', '^'], ['^', 'van'], ['van', 'Rossum,'], ['Rossum,', 'Guido'], ['Guido', '('], ['(', 'April'], ['April', ').'], [').', '\"Tail'], ['\"Tail', 'Recursion'], ['Recursion', 'Elimination\".'], ['Elimination\".', 'Neopythonic.blogspot.be.'], ['Neopythonic.blogspot.be.', 'Retrieved'], ['Retrieved', 'December'], ['December', '.'], ['.', '^'], ['^', 'van'], ['van', 'Rossum,'], ['Rossum,', 'Guido'], ['Guido', '('], ['(', 'February'], ['February', ').'], [').', '\"Language'], ['\"Language', 'Design'], ['Design', 'Is'], ['Is', 'Not'], ['Not', 'Just'], ['Just', 'Solving'], ['Solving', 'Puzzles\".'], ['Puzzles\".', 'Artima'], ['Artima', 'forums.'], ['forums.', 'Artima.'], ['Artima.', 'Retrieved'], ['Retrieved', 'March'], ['March', '.'], ['.', '^'], ['^', 'van'], ['van', 'Rossum,'], ['Rossum,', 'Guido;'], ['Guido;', 'Eby,'], ['Eby,', 'Phillip'], ['Phillip', 'J.'], ['J.', '('], ['(', 'May'], ['May', ').'], [').', '\"PEP'], ['\"PEP', 'Coroutines'], ['Coroutines', 'via'], ['via', 'Enhanced'], ['Enhanced', 'Generators\".'], ['Generators\".', 'Python'], ['Python', 'Enhancement'], ['Enhancement', 'Proposals.'], ['Proposals.', 'Python'], ['Python', 'Software'], ['Software', 'Foundation.'], ['Foundation.', 'Retrieved'], ['Retrieved', 'February'], ['February', '.'], ['.', '^'], ['^', '\"PEP'], ['\"PEP', '\".'], ['\".', 'Python.org.'], ['Python.org.', 'Retrieved'], ['Retrieved', 'December'], ['December', '.'], ['.', '^'], ['^', '\"division\".'], ['\"division\".', 'python.org.'], ['python.org.', '^'], ['^', '\"PEP'], ['\"PEP', '--'], ['--', 'A'], ['A', 'dedicated'], ['dedicated', 'infix'], ['infix', 'operator'], ['operator', 'for'], ['for', 'matrix'], ['matrix', 'multiplication\".'], ['multiplication\".', 'python.org.'], ['python.org.', 'Retrieved'], ['Retrieved', 'January'], ['January', '.'], ['.', '^'], ['^', '\"Python'], ['\"Python', '.'], ['.', '.'], ['.', 'Release'], ['Release', 'and'], ['and', 'Changelog\".'], ['Changelog\".', 'python.org.'], ['python.org.', 'Retrieved'], ['Retrieved', 'January'], ['January', '.'], ['.', '^'], ['^', '\"Chapter'], ['\"Chapter', '.'], ['.', 'Expressions'], ['Expressions', '-'], ['-', '.'], ['.', '.'], ['.', '.'], ['.', 'Numerical'], ['Numerical', 'Equality'], ['Equality', 'Operators'], ['Operators', '=='], ['==', 'and!=\".'], ['and!=\".', 'Oracle'], ['Oracle', 'Corporation.'], ['Corporation.', 'Retrieved'], ['Retrieved', 'August'], ['August', '.'], ['.', '^'], ['^', '\"Chapter'], ['\"Chapter', '.'], ['.', 'Expressions'], ['Expressions', '-'], ['-', '.'], ['.', '.'], ['.', '.'], ['.', 'Reference'], ['Reference', 'Equality'], ['Equality', 'Operators'], ['Operators', '=='], ['==', 'and!=\".'], ['and!=\".', 'Oracle'], ['Oracle', 'Corporation.'], ['Corporation.', 'Retrieved'], ['Retrieved', 'August'], ['August', '.'], ['.', '^'], ['^', 'van'], ['van', 'Rossum,'], ['Rossum,', 'Guido;'], ['Guido;', 'Hettinger,'], ['Hettinger,', 'Raymond'], ['Raymond', '('], ['(', 'February'], ['February', ').'], [').', '\"PEP'], ['\"PEP', 'Conditional'], ['Conditional', 'Expressions\".'], ['Expressions\".', 'Python'], ['Python', 'Enhancement'], ['Enhancement', 'Proposals.'], ['Proposals.', 'Python'], ['Python', 'Software'], ['Software', 'Foundation.'], ['Foundation.', 'Retrieved'], ['Retrieved', 'July'], ['July', '.'], ['.', '^'], ['^', '\"'], ['\"', '.'], ['.', 'Built-in'], ['Built-in', 'Types'], ['Types', 'Python'], ['Python', '.'], ['.', '.'], ['.', 'rc'], ['rc', 'documentation\".'], ['documentation\".', 'python.org.'], ['python.org.', 'Retrieved'], ['Retrieved', 'October'], ['October', '.'], ['.', '^'], ['^', 'a'], ['a', 'b'], ['b', '\"PEP'], ['\"PEP', '--'], ['--', 'Literal'], ['Literal', 'String'], ['String', 'Interpolation\".'], ['Interpolation\".', 'python.org.'], ['python.org.', 'Retrieved'], ['Retrieved', 'March'], ['March', '.'], ['.', '^'], ['^', '\"Why'], ['\"Why', 'must'], ['must', \"'self'\"], [\"'self'\", 'be'], ['be', 'used'], ['used', 'explicitly'], ['explicitly', 'in'], ['in', 'method'], ['method', 'definitions'], ['definitions', 'and'], ['and', 'calls?\".'], ['calls?\".', 'Design'], ['Design', 'and'], ['and', 'History'], ['History', 'FAQ.'], ['FAQ.', 'Python'], ['Python', 'Software'], ['Software', 'Foundation.'], ['Foundation.', 'Retrieved'], ['Retrieved', 'February'], ['February', '.'], ['.', '^'], ['^', '\"The'], ['\"The', 'Python'], ['Python', 'Language'], ['Language', 'Reference,'], ['Reference,', 'section'], ['section', '.'], ['.', '.'], ['.', 'New-style'], ['New-style', 'and'], ['and', 'classic'], ['classic', 'classes,'], ['classes,', 'for'], ['for', 'release'], ['release', '.'], ['.', '.'], ['.', '\".'], ['\".', 'Retrieved'], ['Retrieved', 'January'], ['January', '.'], ['.', '^'], ['^', '\"Type'], ['\"Type', 'hinting'], ['hinting', 'for'], ['for', 'Python\".'], ['Python\".', 'LWN.net.'], ['LWN.net.', 'December'], ['December', '.'], ['.', 'Retrieved'], ['Retrieved', 'May'], ['May', '.'], ['.', '^'], ['^', '\"mypy'], ['\"mypy', '-'], ['-', 'Optional'], ['Optional', 'Static'], ['Static', 'Typing'], ['Typing', 'for'], ['for', 'Python\".'], ['Python\".', 'Retrieved'], ['Retrieved', 'January'], ['January', '.'], ['.', '^'], ['^', 'Zadka,'], ['Zadka,', 'Moshe;'], ['Moshe;', 'van'], ['van', 'Rossum,'], ['Rossum,', 'Guido'], ['Guido', '('], ['(', 'March'], ['March', ').'], [').', '\"PEP'], ['\"PEP', 'Unifying'], ['Unifying', 'Long'], ['Long', 'Integers'], ['Integers', 'and'], ['and', 'Integers\".'], ['Integers\".', 'Python'], ['Python', 'Enhancement'], ['Enhancement', 'Proposals.'], ['Proposals.', 'Python'], ['Python', 'Software'], ['Software', 'Foundation.'], ['Foundation.', 'Retrieved'], ['Retrieved', 'September'], ['September', '.'], ['.', '^'], ['^', '\"PEP'], ['\"PEP', '--'], ['--', 'A'], ['A', 'dedicated'], ['dedicated', 'infix'], ['infix', 'operator'], ['operator', 'for'], ['for', 'matrix'], ['matrix', 'multiplication\".'], ['multiplication\".', 'python.org.'], ['python.org.', '^'], ['^', '\"The'], ['\"The', 'tilde'], ['tilde', 'operator'], ['operator', 'in'], ['in', 'Python'], ['Python', '-'], ['-', 'Stackoverflow\".'], ['Stackoverflow\".', 'stackoverflow.com.'], ['stackoverflow.com.', '^'], ['^', '\"BitwiseOperators'], ['\"BitwiseOperators', '-'], ['-', 'Python'], ['Python', 'Wiki\".'], ['Wiki\".', 'wiki.python.org.'], ['wiki.python.org.', '^'], ['^', 'Zadka,'], ['Zadka,', 'Moshe;'], ['Moshe;', 'van'], ['van', 'Rossum,'], ['Rossum,', 'Guido'], ['Guido', '('], ['(', 'March'], ['March', ').'], [').', '\"PEP'], ['\"PEP', 'Changing'], ['Changing', 'the'], ['the', 'Division'], ['Division', 'Operator\".'], ['Operator\".', 'Python'], ['Python', 'Enhancement'], ['Enhancement', 'Proposals.'], ['Proposals.', 'Python'], ['Python', 'Software'], ['Software', 'Foundation.'], ['Foundation.', 'Retrieved'], ['Retrieved', 'October'], ['October', '.'], ['.', '^'], ['^', '\"Why'], ['\"Why', \"Python's\"], [\"Python's\", 'Integer'], ['Integer', 'Division'], ['Division', 'Floors\".'], ['Floors\".', 'Retrieved'], ['Retrieved', 'August'], ['August', '.'], ['.', '^'], ['^', '\"round\",'], ['\"round\",', 'The'], ['The', 'Python'], ['Python', 'standard'], ['standard', 'library,'], ['library,', 'release'], ['release', '.'], ['.', ','], [',', ':'], [':', 'Built-in'], ['Built-in', 'functions,'], ['functions,', 'retrieved'], ['retrieved', 'August'], ['August', '^'], ['^', '\"round\",'], ['\"round\",', 'The'], ['The', 'Python'], ['Python', 'standard'], ['standard', 'library,'], ['library,', 'release'], ['release', '.'], ['.', ','], [',', ':'], [':', 'Built-in'], ['Built-in', 'functions,'], ['functions,', 'retrieved'], ['retrieved', 'August'], ['August', '^'], ['^', 'Python'], ['Python', 'Essential'], ['Essential', 'Reference,'], ['Reference,', 'David'], ['David', 'M.'], ['M.', 'Beazley'], ['Beazley', '^'], ['^', '\"Built-in'], ['\"Built-in', 'Type\".'], ['Type\".', 'docs.python.org.'], ['docs.python.org.', '^'], ['^', 'Batista,'], ['Batista,', 'Facundo.'], ['Facundo.', '\"PEP'], ['\"PEP', '--'], ['--', 'Decimal'], ['Decimal', 'Data'], ['Data', 'Type\".'], ['Type\".', 'Python.org.'], ['Python.org.', 'Retrieved'], ['Retrieved', 'September'], ['September', '.'], ['.', '^'], ['^', '\"What\\'s'], ['\"What\\'s', 'New'], ['New', 'in'], ['in', 'Python'], ['Python', '.'], ['.', 'Python'], ['Python', 'v'], ['v', '.'], ['.', '.'], ['.', 'documentation\".'], ['documentation\".', 'docs.python.org.'], ['docs.python.org.', 'Retrieved'], ['Retrieved', 'September'], ['September', '.'], ['.', '^'], ['^', 'Piotrowski,'], ['Piotrowski,', 'Przemyslaw'], ['Przemyslaw', '(July'], ['(July', ').'], [').', '\"Build'], ['\"Build', 'a'], ['a', 'Rapid'], ['Rapid', 'Web'], ['Web', 'Development'], ['Development', 'Environment'], ['Environment', 'for'], ['for', 'Python'], ['Python', 'Server'], ['Server', 'Pages'], ['Pages', 'and'], ['and', 'Oracle\".'], ['Oracle\".', 'Oracle'], ['Oracle', 'Technology'], ['Technology', 'Network.'], ['Network.', 'Oracle.'], ['Oracle.', 'Retrieved'], ['Retrieved', 'March'], ['March', '.'], ['.', '^'], ['^', 'Batista,'], ['Batista,', 'Facundo'], ['Facundo', '('], ['(', 'October'], ['October', ').'], [').', '\"PEP'], ['\"PEP', 'Decimal'], ['Decimal', 'Data'], ['Data', 'Type\".'], ['Type\".', 'Python'], ['Python', 'Enhancement'], ['Enhancement', 'Proposals.'], ['Proposals.', 'Python'], ['Python', 'Software'], ['Software', 'Foundation.'], ['Foundation.', 'Retrieved'], ['Retrieved', 'November'], ['November', '.'], ['.', '^'], ['^', 'Eby,'], ['Eby,', 'Phillip'], ['Phillip', 'J.'], ['J.', '('], ['(', 'December'], ['December', ').'], [').', '\"PEP'], ['\"PEP', 'Python'], ['Python', 'Web'], ['Web', 'Server'], ['Server', 'Gateway'], ['Gateway', 'Interface'], ['Interface', 'v'], ['v', '.'], ['.', '\".'], ['\".', 'Python'], ['Python', 'Enhancement'], ['Enhancement', 'Proposals.'], ['Proposals.', 'Python'], ['Python', 'Software'], ['Software', 'Foundation.'], ['Foundation.', 'Retrieved'], ['Retrieved', 'February'], ['February', '.'], ['.', '^'], ['^', 'Debill,'], ['Debill,', 'Erik.'], ['Erik.', '\"Module'], ['\"Module', 'Counts\".'], ['Counts\".', 'ModuleCounts.'], ['ModuleCounts.', 'Retrieved'], ['Retrieved', 'September'], ['September', '.'], ['.', '^'], ['^', 'Enthought,'], ['Enthought,', 'Canopy.'], ['Canopy.', '\"Canopy\".'], ['\"Canopy\".', 'www.enthought.com.'], ['www.enthought.com.', 'Retrieved'], ['Retrieved', 'August'], ['August', '.'], ['.', '^'], ['^', 'van'], ['van', 'Rossum,'], ['Rossum,', 'Guido'], ['Guido', '('], ['(', 'June'], ['June', ').'], [').', '\"PEP'], ['\"PEP', 'Style'], ['Style', 'Guide'], ['Guide', 'for'], ['for', 'C'], ['C', 'Code\".'], ['Code\".', 'Python'], ['Python', 'Enhancement'], ['Enhancement', 'Proposals.'], ['Proposals.', 'Python'], ['Python', 'Software'], ['Software', 'Foundation.'], ['Foundation.', 'Retrieved'], ['Retrieved', 'November'], ['November', '.'], ['.', '^'], ['^', '\"CPython'], ['\"CPython', 'byte'], ['byte', 'code\".'], ['code\".', 'Docs.python.org.'], ['Docs.python.org.', 'Retrieved'], ['Retrieved', 'February'], ['February', '.'], ['.', '^'], ['^', '\"Python'], ['\"Python', '.'], ['.', 'internals\"'], ['internals\"', '(PDF).'], ['(PDF).', 'Retrieved'], ['Retrieved', 'April'], ['April', '.'], ['.', '^'], ['^', '\"An'], ['\"An', 'Interview'], ['Interview', 'with'], ['with', 'Guido'], ['Guido', 'van'], ['van', 'Rossum\".'], ['Rossum\".', 'Oreilly.com.'], ['Oreilly.com.', 'Retrieved'], ['Retrieved', 'November'], ['November', '.'], ['.', '^'], ['^', '\"PyPy'], ['\"PyPy', 'compatibility\".'], ['compatibility\".', 'Pypy.org.'], ['Pypy.org.', 'Retrieved'], ['Retrieved', 'December'], ['December', '.'], ['.', '^'], ['^', '\"speed'], ['\"speed', 'comparison'], ['comparison', 'between'], ['between', 'CPython'], ['CPython', 'and'], ['and', 'Pypy\".'], ['Pypy\".', 'Speed.pypy.org.'], ['Speed.pypy.org.', 'Retrieved'], ['Retrieved', 'December'], ['December', '.'], ['.', '^'], ['^', '\"STM'], ['\"STM', 'with'], ['with', 'threads\".'], ['threads\".', 'Morepypy.blogspot.be.'], ['Morepypy.blogspot.be.', 'June'], ['June', '.'], ['.', 'Retrieved'], ['Retrieved', 'December'], ['December', '.'], ['.', '^'], ['^', '\"Application-level'], ['\"Application-level', 'Stackless'], ['Stackless', 'features'], ['features', 'PyPy'], ['PyPy', '.'], ['.', '.'], ['.', 'documentation\".'], ['documentation\".', 'Doc.pypy.org.'], ['Doc.pypy.org.', 'Retrieved'], ['Retrieved', 'July'], ['July', '.'], ['.', '^'], ['^', '\"Plans'], ['\"Plans', 'for'], ['for', 'optimizing'], ['optimizing', 'Python\".'], ['Python\".', 'Google'], ['Google', 'Project'], ['Project', 'Hosting.'], ['Hosting.', 'Google.'], ['Google.', 'December'], ['December', '.'], ['.', 'Retrieved'], ['Retrieved', 'September'], ['September', '.'], ['.', '^'], ['^', '\"Python'], ['\"Python', 'on'], ['on', 'the'], ['the', 'Nokia'], ['Nokia', 'N'], ['N', '\".'], ['\".', 'Stochastic'], ['Stochastic', 'Geometry.'], ['Geometry.', '^'], ['^', '\"Nuitka'], ['\"Nuitka', 'Home'], ['Home', '|'], ['|', 'Nuitka'], ['Nuitka', 'Home\".'], ['Home\".', 'nuitka.net.'], ['nuitka.net.', 'Retrieved'], ['Retrieved', 'August'], ['August', '.'], ['.', '^'], ['^', 'Murri,'], ['Murri,', 'Riccardo'], ['Riccardo', '('], ['(', ').'], [').', 'Performance'], ['Performance', 'of'], ['of', 'Python'], ['Python', 'runtimes'], ['runtimes', 'on'], ['on', 'a'], ['a', 'non-numeric'], ['non-numeric', 'scientific'], ['scientific', 'code.'], ['code.', 'European'], ['European', 'Conference'], ['Conference', 'on'], ['on', 'Python'], ['Python', 'in'], ['in', 'Science'], ['Science', '(EuroSciPy).'], ['(EuroSciPy).', 'arXiv:'], ['arXiv:', '.'], ['.', '.'], ['.', '^'], ['^', 'a'], ['a', 'b'], ['b', 'Warsaw,'], ['Warsaw,', 'Barry;'], ['Barry;', 'Hylton,'], ['Hylton,', 'Jeremy;'], ['Jeremy;', 'Goodger,'], ['Goodger,', 'David'], ['David', '('], ['(', 'June'], ['June', ').'], [').', '\"PEP'], ['\"PEP', 'PEP'], ['PEP', 'Purpose'], ['Purpose', 'and'], ['and', 'Guidelines\".'], ['Guidelines\".', 'Python'], ['Python', 'Enhancement'], ['Enhancement', 'Proposals.'], ['Proposals.', 'Python'], ['Python', 'Software'], ['Software', 'Foundation.'], ['Foundation.', 'Retrieved'], ['Retrieved', 'April'], ['April', '.'], ['.', '^'], ['^', 'Cannon,'], ['Cannon,', 'Brett.'], ['Brett.', '\"Guido,'], ['\"Guido,', 'Some'], ['Some', 'Guys,'], ['Guys,', 'and'], ['and', 'a'], ['a', 'Mailing'], ['Mailing', 'List:'], ['List:', 'How'], ['How', 'Python'], ['Python', 'is'], ['is', 'Developed\".'], ['Developed\".', 'python.org.'], ['python.org.', 'Python'], ['Python', 'Software'], ['Software', 'Foundation.'], ['Foundation.', 'Archived'], ['Archived', 'from'], ['from', 'the'], ['the', 'original'], ['original', 'on'], ['on', 'June'], ['June', '.'], ['.', 'Retrieved'], ['Retrieved', 'June'], ['June', '.'], ['.', '^'], ['^', '\"Python'], ['\"Python', \"Developer's\"], [\"Developer's\", 'Guide\".'], ['Guide\".', '^'], ['^', 'Norwitz,'], ['Norwitz,', 'Neal'], ['Neal', '('], ['(', 'April'], ['April', ').'], [').', '\"'], ['\"', 'Python-Dev'], ['Python-Dev', 'Release'], ['Release', 'Schedules'], ['Schedules', '(was'], ['(was', 'Stability'], ['Stability', '&'], ['&', 'change)\".'], ['change)\".', 'Retrieved'], ['Retrieved', 'June'], ['June', '.'], ['.', '^'], ['^', 'Aahz;'], ['Aahz;', 'Baxter,'], ['Baxter,', 'Anthony'], ['Anthony', '('], ['(', 'March'], ['March', ').'], [').', '\"PEP'], ['\"PEP', 'Bug'], ['Bug', 'Fix'], ['Fix', 'Releases\".'], ['Releases\".', 'Python'], ['Python', 'Enhancement'], ['Enhancement', 'Proposals.'], ['Proposals.', 'Python'], ['Python', 'Software'], ['Software', 'Foundation.'], ['Foundation.', 'Retrieved'], ['Retrieved', 'June'], ['June', '.'], ['.', '^'], ['^', '\"Python'], ['\"Python', 'Buildbot\".'], ['Buildbot\".', 'Python'], ['Python', 'Developers'], ['Developers', 'Guide.'], ['Guide.', 'Python'], ['Python', 'Software'], ['Software', 'Foundation.'], ['Foundation.', 'Retrieved'], ['Retrieved', 'September'], ['September', '.'], ['.', '^'], ['^', 'DeBill,'], ['DeBill,', 'Erik.'], ['Erik.', '\"Module'], ['\"Module', 'Counts\".'], ['Counts\".', 'www.modulecounts.com.'], ['www.modulecounts.com.', 'Retrieved'], ['Retrieved', 'August'], ['August', '.'], ['.', '^'], ['^', 'a'], ['a', 'b'], ['b', '\"Whetting'], ['\"Whetting', 'Your'], ['Your', 'Appetite\".'], ['Appetite\".', 'The'], ['The', 'Python'], ['Python', 'Tutorial.'], ['Tutorial.', 'Python'], ['Python', 'Software'], ['Software', 'Foundation.'], ['Foundation.', 'Retrieved'], ['Retrieved', 'February'], ['February', '.'], ['.', '^'], ['^', '\"In'], ['\"In', 'Python,'], ['Python,', 'should'], ['should', 'I'], ['I', 'use'], ['use', 'else'], ['else', 'after'], ['after', 'a'], ['a', 'return'], ['return', 'in'], ['in', 'an'], ['an', 'if'], ['if', 'block?\".'], ['block?\".', 'Stack'], ['Stack', 'Overflow.'], ['Overflow.', 'Stack'], ['Stack', 'Exchange.'], ['Exchange.', 'February'], ['February', '.'], ['.', 'Retrieved'], ['Retrieved', 'May'], ['May', '.'], ['.', '^'], ['^', 'Lutz,'], ['Lutz,', 'Mark'], ['Mark', '('], ['(', ').'], [').', 'Learning'], ['Learning', 'Python:'], ['Python:', 'Powerful'], ['Powerful', 'Object-Oriented'], ['Object-Oriented', 'Programming.'], ['Programming.', \"O'Reilly\"], [\"O'Reilly\", 'Media,'], ['Media,', 'Inc.'], ['Inc.', 'p.'], ['p.', '.'], ['.', 'ISBN'], ['ISBN', '.'], ['.', '^'], ['^', 'Fehily,'], ['Fehily,', 'Chris'], ['Chris', '('], ['(', ').'], [').', 'Python.'], ['Python.', 'Peachpit'], ['Peachpit', 'Press.'], ['Press.', 'p.xv.'], ['p.xv.', 'ISBN'], ['ISBN', '.'], ['.', '^'], ['^', '\"TIOBE'], ['\"TIOBE', 'Index\".'], ['Index\".', 'TIOBE'], ['TIOBE', '-'], ['-', 'The'], ['The', 'Software'], ['Software', 'Quality'], ['Quality', 'Company.'], ['Company.', 'Retrieved'], ['Retrieved', 'March'], ['March', '.'], ['.', '^'], ['^', 'TIOBE'], ['TIOBE', 'Software'], ['Software', 'Index'], ['Index', '('], ['(', ').'], [').', '\"TIOBE'], ['\"TIOBE', 'Programming'], ['Programming', 'Community'], ['Community', 'Index'], ['Index', 'Python\".'], ['Python\".', 'Retrieved'], ['Retrieved', 'September'], ['September', '.'], ['.', '^'], ['^', 'Prechelt,'], ['Prechelt,', 'Lutz'], ['Lutz', '('], ['(', 'March'], ['March', ').'], [').', '\"An'], ['\"An', 'empirical'], ['empirical', 'comparison'], ['comparison', 'of'], ['of', 'C,'], ['C,', 'C'], ['C', ','], [',', 'Java,'], ['Java,', 'Perl,'], ['Perl,', 'Python,'], ['Python,', 'Rexx,'], ['Rexx,', 'and'], ['and', 'Tcl\"'], ['Tcl\"', '(PDF).'], ['(PDF).', 'Retrieved'], ['Retrieved', 'August'], ['August', '.'], ['.', '^'], ['^', '\"Quotes'], ['\"Quotes', 'about'], ['about', 'Python\".'], ['Python\".', 'Python'], ['Python', 'Software'], ['Software', 'Foundation.'], ['Foundation.', 'Retrieved'], ['Retrieved', 'January'], ['January', '.'], ['.', '^'], ['^', '\"Organizations'], ['\"Organizations', 'Using'], ['Using', 'Python\".'], ['Python\".', 'Python'], ['Python', 'Software'], ['Software', 'Foundation.'], ['Foundation.', 'Retrieved'], ['Retrieved', 'January'], ['January', '.'], ['.', '^'], ['^', '\"Python:'], ['\"Python:', 'the'], ['the', 'holy'], ['holy', 'grail'], ['grail', 'of'], ['of', 'programming\".'], ['programming\".', 'CERN'], ['CERN', 'Bulletin.'], ['Bulletin.', 'CERN'], ['CERN', 'Publications'], ['Publications', '('], ['(', '/'], ['/', ').'], [').', 'July'], ['July', '.'], ['.', 'Retrieved'], ['Retrieved', 'February'], ['February', '.'], ['.', '^'], ['^', 'Shafer,'], ['Shafer,', 'Daniel'], ['Daniel', 'G.'], ['G.', '('], ['(', 'January'], ['January', ').'], [').', '\"Python'], ['\"Python', 'Streamlines'], ['Streamlines', 'Space'], ['Space', 'Shuttle'], ['Shuttle', 'Mission'], ['Mission', 'Design\".'], ['Design\".', 'Python'], ['Python', 'Software'], ['Software', 'Foundation.'], ['Foundation.', 'Retrieved'], ['Retrieved', 'November'], ['November', '.'], ['.', '^'], ['^', 'Fortenberry,'], ['Fortenberry,', 'Tim'], ['Tim', '('], ['(', 'January'], ['January', ').'], [').', '\"Industrial'], ['\"Industrial', 'Light'], ['Light', '&'], ['&', 'Magic'], ['Magic', 'Runs'], ['Runs', 'on'], ['on', 'Python\".'], ['Python\".', 'Python'], ['Python', 'Software'], ['Software', 'Foundation.'], ['Foundation.', 'Retrieved'], ['Retrieved', 'February'], ['February', '.'], ['.', '^'], ['^', 'Taft,'], ['Taft,', 'Darryl'], ['Darryl', 'K.'], ['K.', '('], ['(', 'March'], ['March', ').'], [').', '\"Python'], ['\"Python', 'Slithers'], ['Slithers', 'into'], ['into', 'Systems\".'], ['Systems\".', 'eWeek.com.'], ['eWeek.com.', 'Ziff'], ['Ziff', 'Davis'], ['Davis', 'Holdings.'], ['Holdings.', 'Retrieved'], ['Retrieved', 'September'], ['September', '.'], ['.', '^'], ['^', '\"Usage'], ['\"Usage', 'statistics'], ['statistics', 'and'], ['and', 'market'], ['market', 'share'], ['share', 'of'], ['of', 'Python'], ['Python', 'for'], ['for', 'websites\".'], ['websites\".', '.'], ['.', 'Retrieved'], ['Retrieved', 'December'], ['December', '.'], ['.', '^'], ['^', 'Oliphant,'], ['Oliphant,', 'Travis'], ['Travis', '('], ['(', ').'], [').', '\"Python'], ['\"Python', 'for'], ['for', 'Scientific'], ['Scientific', 'Computing\".'], ['Computing\".', 'Computing'], ['Computing', 'in'], ['in', 'Science'], ['Science', 'and'], ['and', 'Engineering.'], ['Engineering.', '^'], ['^', 'Millman,'], ['Millman,', 'K.'], ['K.', 'Jarrod;'], ['Jarrod;', 'Aivazis,'], ['Aivazis,', 'Michael'], ['Michael', '('], ['(', ').'], [').', '\"Python'], ['\"Python', 'for'], ['for', 'Scientists'], ['Scientists', 'and'], ['and', 'Engineers\".'], ['Engineers\".', 'Computing'], ['Computing', 'in'], ['in', 'Science'], ['Science', 'and'], ['and', 'Engineering.'], ['Engineering.', '('], ['(', '):'], ['):', '.'], ['.', '^'], ['^', 'Chekanov,'], ['Chekanov,', 'S.'], ['S.', '(April'], ['(April', ').'], [').', 'Numeric'], ['Numeric', 'Computation'], ['Computation', 'and'], ['and', 'Statistical'], ['Statistical', 'Data'], ['Data', 'Analysis'], ['Analysis', 'on'], ['on', 'the'], ['the', 'Java'], ['Java', 'Platform.'], ['Platform.', 'London:'], ['London:', 'Springer.'], ['Springer.', 'p.'], ['p.', '.'], ['.', 'ISBN'], ['ISBN', '-'], ['-', '-'], ['-', '-'], ['-', '-'], ['-', '.'], ['.', '^'], ['^', 'Chekanov,'], ['Chekanov,', 'S.'], ['S.', '('], ['(', ').'], [').', 'Scientific'], ['Scientific', 'Data'], ['Data', 'Analysis'], ['Analysis', 'using'], ['using', 'Jython'], ['Jython', 'Scripting'], ['Scripting', 'and'], ['and', 'Java.'], ['Java.', 'London:'], ['London:', 'Springer.'], ['Springer.', 'p.'], ['p.', '.'], ['.', 'ISBN'], ['ISBN', '-'], ['-', '-'], ['-', '-'], ['-', '-'], ['-', '.'], ['.', '^'], ['^', '\"Installers'], ['\"Installers', 'for'], ['for', 'GIMP'], ['GIMP', 'for'], ['for', 'Windows'], ['Windows', '-'], ['-', 'Frequently'], ['Frequently', 'Asked'], ['Asked', 'Questions\".'], ['Questions\".', 'July'], ['July', '.'], ['.', 'Retrieved'], ['Retrieved', 'July'], ['July', '.'], ['.', '^'], ['^', '\"jasc'], ['\"jasc', 'psp'], ['psp', 'components\".'], ['components\".', 'Archived'], ['Archived', 'from'], ['from', 'the'], ['the', 'original'], ['original', 'on'], ['on', 'March'], ['March', '.'], ['.', '^'], ['^', '\"About'], ['\"About', 'getting'], ['getting', 'started'], ['started', 'with'], ['with', 'writing'], ['writing', 'geoprocessing'], ['geoprocessing', 'scripts\".'], ['scripts\".', 'ArcGIS'], ['ArcGIS', 'Desktop'], ['Desktop', 'Help'], ['Help', '.'], ['.', '.'], ['.', 'Environmental'], ['Environmental', 'Systems'], ['Systems', 'Research'], ['Research', 'Institute.'], ['Institute.', 'November'], ['November', '.'], ['.', 'Retrieved'], ['Retrieved', 'February'], ['February', '.'], ['.', '^'], ['^', 'CCP'], ['CCP', 'porkbelly'], ['porkbelly', '('], ['(', 'August'], ['August', ').'], [').', '\"Stackless'], ['\"Stackless', 'Python'], ['Python', '.'], ['.', '\".'], ['\".', 'EVE'], ['EVE', 'Community'], ['Community', 'Dev'], ['Dev', 'Blogs.'], ['Blogs.', 'CCP'], ['CCP', 'Games.'], ['Games.', 'As'], ['As', 'you'], ['you', 'may'], ['may', 'know,'], ['know,', 'EVE'], ['EVE', 'has'], ['has', 'at'], ['at', 'its'], ['its', 'core'], ['core', 'the'], ['the', 'programming'], ['programming', 'language'], ['language', 'known'], ['known', 'as'], ['as', 'Stackless'], ['Stackless', 'Python.'], ['Python.', '^'], ['^', 'Caudill,'], ['Caudill,', 'Barry'], ['Barry', '('], ['(', 'September'], ['September', ').'], [').', '\"Modding'], ['\"Modding', 'Sid'], ['Sid', \"Meier's\"], [\"Meier's\", 'Civilization'], ['Civilization', 'IV\".'], ['IV\".', 'Sid'], ['Sid', \"Meier's\"], [\"Meier's\", 'Civilization'], ['Civilization', 'IV'], ['IV', 'Developer'], ['Developer', 'Blog.'], ['Blog.', 'Firaxis'], ['Firaxis', 'Games.'], ['Games.', 'Archived'], ['Archived', 'from'], ['from', 'the'], ['the', 'original'], ['original', 'on'], ['on', 'August'], ['August', '.'], ['.', 'we'], ['we', 'created'], ['created', 'three'], ['three', 'levels'], ['levels', 'of'], ['of', 'tools'], ['tools', '...'], ['...', 'The'], ['The', 'next'], ['next', 'level'], ['level', 'offers'], ['offers', 'Python'], ['Python', 'and'], ['and', 'XML'], ['XML', 'support,'], ['support,', 'letting'], ['letting', 'modders'], ['modders', 'with'], ['with', 'more'], ['more', 'experience'], ['experience', 'manipulate'], ['manipulate', 'the'], ['the', 'game'], ['game', 'world'], ['world', 'and'], ['and', 'everything'], ['everything', 'in'], ['in', 'it.'], ['it.', '^'], ['^', '\"Python'], ['\"Python', 'Language'], ['Language', 'Guide'], ['Guide', '(v'], ['(v', '.'], ['.', ')\".'], [')\".', 'Google'], ['Google', 'Documents'], ['Documents', 'List'], ['List', 'Data'], ['Data', 'API'], ['API', 'v'], ['v', '.'], ['.', '.'], ['.', 'Google.'], ['Google.', 'Archived'], ['Archived', 'from'], ['from', 'the'], ['the', 'original'], ['original', 'on'], ['on', 'August'], ['August', '.'], ['.', '^'], ['^', '\"Python'], ['\"Python', '-'], ['-', 'Best'], ['Best', 'Programming'], ['Programming', 'Language'], ['Language', 'for'], ['for', 'Algorithmic'], ['Algorithmic', 'Trading'], ['Trading', 'Systems\".'], ['Systems\".', 'March'], ['March', '.'], ['.', 'Retrieved'], ['Retrieved', 'October'], ['October', '.'], ['.', '^'], ['^', '\"Trading'], ['\"Trading', 'with'], ['with', 'Interactive'], ['Interactive', 'Brokers'], ['Brokers', 'using'], ['using', 'Python:'], ['Python:', 'An'], ['An', 'IBPy'], ['IBPy', 'Tutorial\".'], ['Tutorial\".', 'September'], ['September', '.'], ['.', 'Retrieved'], ['Retrieved', 'October'], ['October', '.'], ['.', '^'], ['^', '\"Python'], ['\"Python', 'for'], ['for', 'Artificial'], ['Artificial', 'Intelligence\".'], ['Intelligence\".', 'Wiki.python.org.'], ['Wiki.python.org.', 'July'], ['July', '.'], ['.', 'Archived'], ['Archived', 'from'], ['from', 'the'], ['the', 'original'], ['original', 'on'], ['on', 'November'], ['November', '.'], ['.', 'Retrieved'], ['Retrieved', 'December'], ['December', '.'], ['.', '^'], ['^', 'Paine,'], ['Paine,', 'Jocelyn,'], ['Jocelyn,', 'ed.'], ['ed.', '(August'], ['(August', ').'], [').', '\"AI'], ['\"AI', 'in'], ['in', 'Python\".'], ['Python\".', 'AI'], ['AI', 'Expert'], ['Expert', 'Newsletter.'], ['Newsletter.', 'Amzi!.'], ['Amzi!.', 'Retrieved'], ['Retrieved', 'February'], ['February', '.'], ['.', '^'], ['^', '\"PyAIML'], ['\"PyAIML', '.'], ['.', '.'], ['.', ':'], [':', 'Python'], ['Python', 'Package'], ['Package', 'Index\".'], ['Index\".', 'Pypi.python.org.'], ['Pypi.python.org.', 'Retrieved'], ['Retrieved', 'July'], ['July', '.'], ['.', '^'], ['^', 'Russell,'], ['Russell,', 'Stuart'], ['Stuart', 'J.'], ['J.', '&'], ['&', 'Norvig,'], ['Norvig,', 'Peter'], ['Peter', '('], ['(', ').'], [').', 'Artificial'], ['Artificial', 'Intelligence:'], ['Intelligence:', 'A'], ['A', 'Modern'], ['Modern', 'Approach'], ['Approach', '('], ['(', 'rd'], ['rd', 'ed.).'], ['ed.).', 'Upper'], ['Upper', 'Saddle'], ['Saddle', 'River,'], ['River,', 'NJ:'], ['NJ:', 'Prentice'], ['Prentice', 'Hall.'], ['Hall.', 'p.'], ['p.', '.'], ['.', 'ISBN'], ['ISBN', '-'], ['-', '-'], ['-', '-'], ['-', '-'], ['-', '.'], ['.', 'Retrieved'], ['Retrieved', 'February'], ['February', '.'], ['.', '^'], ['^', '\"Natural'], ['\"Natural', 'Language'], ['Language', 'Toolkit\".'], ['Toolkit\".', '^'], ['^', '\"Immunity:'], ['\"Immunity:', 'Knowing'], ['Knowing', \"You're\"], [\"You're\", 'Secure\".'], ['Secure\".', '^'], ['^', '\"Corelabs'], ['\"Corelabs', 'site\".'], ['site\".', '^'], ['^', '\"What'], ['\"What', 'is'], ['is', 'Sugar?\".'], ['Sugar?\".', 'Sugar'], ['Sugar', 'Labs.'], ['Labs.', 'Retrieved'], ['Retrieved', 'February'], ['February', '.'], ['.', '^'], ['^', '\"'], ['\"', '.'], ['.', 'New'], ['New', 'Features'], ['Features', 'and'], ['and', 'Fixes\".'], ['Fixes\".', 'LibreOffice.org.'], ['LibreOffice.org.', 'The'], ['The', 'Document'], ['Document', 'Foundation.'], ['Foundation.', '.'], ['.', 'Retrieved'], ['Retrieved', 'February'], ['February', '.'], ['.', '^'], ['^', '\"Gotchas'], ['\"Gotchas', 'for'], ['for', 'Python'], ['Python', 'Users\".'], ['Users\".', 'boo.codehaus.org.'], ['boo.codehaus.org.', 'Codehaus'], ['Codehaus', 'Foundation.'], ['Foundation.', 'Retrieved'], ['Retrieved', 'November'], ['November', '.'], ['.', '^'], ['^', 'Esterbrook,'], ['Esterbrook,', 'Charles.'], ['Charles.', '\"Acknowledgements\".'], ['\"Acknowledgements\".', 'cobra-language.com.'], ['cobra-language.com.', 'Cobra'], ['Cobra', 'Language.'], ['Language.', 'Retrieved'], ['Retrieved', 'April'], ['April', '.'], ['.', '^'], ['^', 'Esterbrook,'], ['Esterbrook,', 'Charles.'], ['Charles.', '\"Comparison'], ['\"Comparison', 'to'], ['to', 'Python\".'], ['Python\".', 'cobra-language.com.'], ['cobra-language.com.', 'Cobra'], ['Cobra', 'Language.'], ['Language.', 'Retrieved'], ['Retrieved', 'April'], ['April', '.'], ['.', '^'], ['^', '\"Proposals:'], ['\"Proposals:', 'iterators'], ['iterators', 'and'], ['and', 'generators'], ['generators', 'ES'], ['ES', 'Wiki'], ['Wiki', '\".'], ['\".', 'wiki.ecmascript.org.'], ['wiki.ecmascript.org.', 'Retrieved'], ['Retrieved', 'November'], ['November', '.'], ['.', '^'], ['^', 'Kincaid,'], ['Kincaid,', 'Jason'], ['Jason', '('], ['(', 'November'], ['November', ').'], [').', '\"Google\\'s'], ['\"Google\\'s', 'Go:'], ['Go:', 'A'], ['A', 'New'], ['New', 'Programming'], ['Programming', 'Language'], ['Language', \"That's\"], [\"That's\", 'Python'], ['Python', 'Meets'], ['Meets', 'C'], ['C', '\".'], ['\".', 'TechCrunch.'], ['TechCrunch.', 'Retrieved'], ['Retrieved', 'January'], ['January', '.'], ['.', '^'], ['^', 'Strachan,'], ['Strachan,', 'James'], ['James', '('], ['(', 'August'], ['August', ').'], [').', '\"Groovy'], ['\"Groovy', 'the'], ['the', 'birth'], ['birth', 'of'], ['of', 'a'], ['a', 'new'], ['new', 'dynamic'], ['dynamic', 'language'], ['language', 'for'], ['for', 'the'], ['the', 'Java'], ['Java', 'platform\".'], ['platform\".', '^'], ['^', 'Lin,'], ['Lin,', 'Mike.'], ['Mike.', '\"The'], ['\"The', 'Whitespace'], ['Whitespace', 'Thing'], ['Thing', 'for'], ['for', 'OCaml\".'], ['OCaml\".', 'Massachusetts'], ['Massachusetts', 'Institute'], ['Institute', 'of'], ['of', 'Technology.'], ['Technology.', 'Retrieved'], ['Retrieved', 'April'], ['April', '.'], ['.', '^'], ['^', '\"An'], ['\"An', 'Interview'], ['Interview', 'with'], ['with', 'the'], ['the', 'Creator'], ['Creator', 'of'], ['of', 'Ruby\".'], ['Ruby\".', 'Linuxdevcenter.com.'], ['Linuxdevcenter.com.', 'Retrieved'], ['Retrieved', 'December'], ['December', '.'], ['.', '^'], ['^', 'Lattner,'], ['Lattner,', 'Chris'], ['Chris', '('], ['(', 'June'], ['June', ').'], [').', '\"Chris'], ['\"Chris', \"Lattner's\"], [\"Lattner's\", 'Homepage\".'], ['Homepage\".', 'Chris'], ['Chris', 'Lattner.'], ['Lattner.', 'Retrieved'], ['Retrieved', 'June'], ['June', '.'], ['.', 'I'], ['I', 'started'], ['started', 'work'], ['work', 'on'], ['on', 'the'], ['the', 'Swift'], ['Swift', 'Programming'], ['Programming', 'Language'], ['Language', 'in'], ['in', 'July'], ['July', 'of'], ['of', '.'], ['.', 'I'], ['I', 'implemented'], ['implemented', 'much'], ['much', 'of'], ['of', 'the'], ['the', 'basic'], ['basic', 'language'], ['language', 'structure,'], ['structure,', 'with'], ['with', 'only'], ['only', 'a'], ['a', 'few'], ['few', 'people'], ['people', 'knowing'], ['knowing', 'of'], ['of', 'its'], ['its', 'existence.'], ['existence.', 'A'], ['A', 'few'], ['few', 'other'], ['other', '(amazing)'], ['(amazing)', 'people'], ['people', 'started'], ['started', 'contributing'], ['contributing', 'in'], ['in', 'earnest'], ['earnest', 'late'], ['late', 'in'], ['in', ','], [',', 'and'], ['and', 'it'], ['it', 'became'], ['became', 'a'], ['a', 'major'], ['major', 'focus'], ['focus', 'for'], ['for', 'the'], ['the', 'Apple'], ['Apple', 'Developer'], ['Developer', 'Tools'], ['Tools', 'group'], ['group', 'in'], ['in', 'July'], ['July', '...'], ['...', 'drawing'], ['drawing', 'ideas'], ['ideas', 'from'], ['from', 'Objective-C,'], ['Objective-C,', 'Rust,'], ['Rust,', 'Haskell,'], ['Haskell,', 'Ruby,'], ['Ruby,', 'Python,'], ['Python,', 'C#,'], ['C#,', 'CLU,'], ['CLU,', 'and'], ['and', 'far'], ['far', 'too'], ['too', 'many'], ['many', 'others'], ['others', 'to'], ['to', 'list.'], ['list.', '^'], ['^', 'Kupries,'], ['Kupries,', 'Andreas;'], ['Andreas;', 'Fellows,'], ['Fellows,', 'Donal'], ['Donal', 'K.'], ['K.', '('], ['(', 'September'], ['September', ').'], [').', '\"TIP'], ['\"TIP', '#'], ['#', ':'], [':', 'TIP'], ['TIP', 'Format\".'], ['Format\".', 'tcl.tk.'], ['tcl.tk.', 'Tcl'], ['Tcl', 'Developer'], ['Developer', 'Xchange.'], ['Xchange.', 'Retrieved'], ['Retrieved', 'November'], ['November', '.'], ['.', '^'], ['^', 'Gustafsson,'], ['Gustafsson,', 'Per;'], ['Per;', 'Niskanen,'], ['Niskanen,', 'Raimo'], ['Raimo', '('], ['(', 'January'], ['January', ').'], [').', '\"EEP'], ['\"EEP', ':'], [':', 'EEP'], ['EEP', 'Purpose'], ['Purpose', 'and'], ['and', 'Guidelines\".'], ['Guidelines\".', 'erlang.org.'], ['erlang.org.', 'Retrieved'], ['Retrieved', 'April'], ['April', '.'], ['.', '^'], ['^', '\"TIOBE'], ['\"TIOBE', 'Programming'], ['Programming', 'Community'], ['Community', 'Index'], ['Index', 'for'], ['for', 'March'], ['March', '\".'], ['\".', 'TIOBE'], ['TIOBE', 'Software.'], ['Software.', 'March'], ['March', '.'], ['.', 'Retrieved'], ['Retrieved', 'March'], ['March', '.'], ['.', 'Further'], ['Further', 'reading'], ['reading', 'edit'], ['edit', 'Downey,'], ['Downey,', 'Allen'], ['Allen', 'B.'], ['B.', '(May'], ['(May', ').'], [').', 'Think'], ['Think', 'Python:'], ['Python:', 'How'], ['How', 'to'], ['to', 'Think'], ['Think', 'Like'], ['Like', 'a'], ['a', 'Computer'], ['Computer', 'Scientist'], ['Scientist', '(Version'], ['(Version', '.'], ['.', '.'], ['.', 'ed.).'], ['ed.).', 'ISBN'], ['ISBN', '-'], ['-', '-'], ['-', '-'], ['-', '-'], ['-', '.'], ['.', 'Hamilton,'], ['Hamilton,', 'Naomi'], ['Naomi', '('], ['(', 'August'], ['August', ').'], [').', '\"The'], ['\"The', 'A-Z'], ['A-Z', 'of'], ['of', 'Programming'], ['Programming', 'Languages:'], ['Languages:', 'Python\".'], ['Python\".', 'Computerworld.'], ['Computerworld.', 'Archived'], ['Archived', 'from'], ['from', 'the'], ['the', 'original'], ['original', 'on'], ['on', 'December'], ['December', '.'], ['.', 'Retrieved'], ['Retrieved', 'March'], ['March', '.'], ['.', 'Lutz,'], ['Lutz,', 'Mark'], ['Mark', '('], ['(', ').'], [').', 'Learning'], ['Learning', 'Python'], ['Python', '('], ['(', 'th'], ['th', 'ed.).'], ['ed.).', \"O'Reilly\"], [\"O'Reilly\", 'Media.'], ['Media.', 'ISBN'], ['ISBN', '-'], ['-', '-'], ['-', '-'], ['-', '-'], ['-', '.'], ['.', 'Pilgrim,'], ['Pilgrim,', 'Mark'], ['Mark', '('], ['(', ').'], [').', 'Dive'], ['Dive', 'Into'], ['Into', 'Python.'], ['Python.', 'Apress.'], ['Apress.', 'ISBN'], ['ISBN', '-'], ['-', '-'], ['-', '-'], ['-', '-'], ['-', '.'], ['.', 'Pilgrim,'], ['Pilgrim,', 'Mark'], ['Mark', '('], ['(', ').'], [').', 'Dive'], ['Dive', 'Into'], ['Into', 'Python'], ['Python', '.'], ['.', 'Apress.'], ['Apress.', 'ISBN'], ['ISBN', '-'], ['-', '-'], ['-', '-'], ['-', '-'], ['-', '.'], ['.', 'Summerfield,'], ['Summerfield,', 'Mark'], ['Mark', '('], ['(', ').'], [').', 'Programming'], ['Programming', 'in'], ['in', 'Python'], ['Python', '('], ['(', 'nd'], ['nd', 'ed.).'], ['ed.).', 'Addison-Wesley'], ['Addison-Wesley', 'Professional.'], ['Professional.', 'ISBN'], ['ISBN', '-'], ['-', '-'], ['-', '-'], ['-', '-'], ['-', '.'], ['.', 'External'], ['External', 'links'], ['links', 'edit'], ['edit', 'Find'], ['Find', 'more'], ['more', 'aboutPython'], ['aboutPython', '(programming'], ['(programming', 'language)at'], ['language)at', \"Wikipedia's\"], [\"Wikipedia's\", 'sister'], ['sister', 'projects'], ['projects', 'Media'], ['Media', 'from'], ['from', 'Wikimedia'], ['Wikimedia', 'Commons'], ['Commons', 'Quotations'], ['Quotations', 'from'], ['from', 'Wikiquote'], ['Wikiquote', 'Textbooks'], ['Textbooks', 'from'], ['from', 'Wikibooks'], ['Wikibooks', 'Learning'], ['Learning', 'resources'], ['resources', 'from'], ['from', 'Wikiversity'], ['Wikiversity', 'Official'], ['Official', 'website'], ['website', 'Python'], ['Python', 'at'], ['at', 'Curlie'], ['Curlie', '(based'], ['(based', 'on'], ['on', 'DMOZ)'], ['DMOZ)', 'v'], ['v', 't'], ['t', 'e'], ['e', 'Programming'], ['Programming', 'languages'], ['languages', 'Comparison'], ['Comparison', 'Timeline'], ['Timeline', 'History'], ['History', 'Assembly'], ['Assembly', 'BASIC'], ['BASIC', 'C'], ['C', 'C'], ['C', 'C#'], ['C#', 'COBOL'], ['COBOL', 'Fortran'], ['Fortran', 'Go'], ['Go', 'Groovy'], ['Groovy', 'Haskell'], ['Haskell', 'Java'], ['Java', 'JavaScript'], ['JavaScript', '(JS)'], ['(JS)', 'Kotlin'], ['Kotlin', 'Lisp'], ['Lisp', 'Lua'], ['Lua', 'Objective-C'], ['Objective-C', 'Pascal'], ['Pascal', 'Perl'], ['Perl', 'PHP'], ['PHP', 'Python'], ['Python', 'Rexx'], ['Rexx', 'Ruby'], ['Ruby', 'Shell'], ['Shell', 'Smalltalk'], ['Smalltalk', 'Swift'], ['Swift', 'Visual'], ['Visual', 'Basic'], ['Basic', '.NET'], ['.NET', '(VB.NET)'], ['(VB.NET)', 'VBScript'], ['VBScript', 'more...'], ['more...', 'Category'], ['Category', 'Lists'], ['Lists', 'Alphabetical'], ['Alphabetical', 'Categorical'], ['Categorical', 'Generational'], ['Generational', 'Non-English-based'], ['Non-English-based', 'v'], ['v', 't'], ['t', 'e'], ['e', 'Python'], ['Python', 'Implementations'], ['Implementations', 'CLPython'], ['CLPython', 'CPython'], ['CPython', 'Cython'], ['Cython', 'MicroPython'], ['MicroPython', 'Numba'], ['Numba', 'IronPython'], ['IronPython', 'Jython'], ['Jython', 'Psyco'], ['Psyco', 'PyPy'], ['PyPy', 'Python'], ['Python', 'for'], ['for', 'S'], ['S', 'Shed'], ['Shed', 'Skin'], ['Skin', 'Stackless'], ['Stackless', 'Python'], ['Python', 'Unladen'], ['Unladen', 'Swallow'], ['Swallow', 'more...'], ['more...', 'IDE'], ['IDE', 'Boa'], ['Boa', 'Eric'], ['Eric', 'Python'], ['Python', 'IDE'], ['IDE', 'IDLE'], ['IDLE', 'PyDev'], ['PyDev', 'SPE'], ['SPE', 'Ninja-IDE'], ['Ninja-IDE', 'more...'], ['more...', 'Topics'], ['Topics', 'WSGI'], ['WSGI', 'software'], ['software', '(list)'], ['(list)', 'Python'], ['Python', 'Software'], ['Software', 'Foundation'], ['Foundation', 'PyCon'], ['PyCon', 'v'], ['v', 't'], ['t', 'e'], ['e', 'Python'], ['Python', 'web'], ['web', 'frameworks'], ['frameworks', 'BlueBream'], ['BlueBream', 'Bottle'], ['Bottle', 'CherryPy'], ['CherryPy', 'Django'], ['Django', 'Flask'], ['Flask', 'Grok'], ['Grok', 'Nagare'], ['Nagare', 'Nevow'], ['Nevow', 'Pyjs'], ['Pyjs', 'Pylons'], ['Pylons', 'Pyramid'], ['Pyramid', 'Quixote'], ['Quixote', 'Spyce'], ['Spyce', 'TACTIC'], ['TACTIC', 'Tornado'], ['Tornado', 'TurboGears'], ['TurboGears', 'TwistedWeb'], ['TwistedWeb', 'Webware'], ['Webware', 'web'], ['web', 'py'], ['py', 'Zope'], ['Zope', 'more...'], ['more...', 'v'], ['v', 't'], ['t', 'e'], ['e', 'Free'], ['Free', 'and'], ['and', 'open-source'], ['open-source', 'software'], ['software', 'General'], ['General', 'Alternative'], ['Alternative', 'terms'], ['terms', 'for'], ['for', 'free'], ['free', 'software'], ['software', 'Comparison'], ['Comparison', 'of'], ['of', 'open-source'], ['open-source', 'and'], ['and', 'closed-source'], ['closed-source', 'software'], ['software', 'Comparison'], ['Comparison', 'of'], ['of', 'source'], ['source', 'code'], ['code', 'hosting'], ['hosting', 'facilities'], ['facilities', 'Free'], ['Free', 'software'], ['software', 'Free'], ['Free', 'software'], ['software', 'project'], ['project', 'directories'], ['directories', 'Gratis'], ['Gratis', 'versus'], ['versus', 'libre'], ['libre', 'Long-term'], ['Long-term', 'support'], ['support', 'Open-source'], ['Open-source', 'software'], ['software', 'Open-source'], ['Open-source', 'software'], ['software', 'development'], ['development', 'Outline'], ['Outline', 'Software'], ['Software', 'packages'], ['packages', 'Audio'], ['Audio', 'Bioinformatics'], ['Bioinformatics', 'Codecs'], ['Codecs', 'Collaboration'], ['Collaboration', 'Configuration'], ['Configuration', 'management'], ['management', 'Device'], ['Device', 'drivers'], ['drivers', 'Graphics'], ['Graphics', 'Wireless'], ['Wireless', 'Geophysics'], ['Geophysics', 'Health'], ['Health', 'Mathematics'], ['Mathematics', 'Operating'], ['Operating', 'systems'], ['systems', 'Programming'], ['Programming', 'languages'], ['languages', 'Routing'], ['Routing', 'Statistics'], ['Statistics', 'Television'], ['Television', 'Video'], ['Video', 'games'], ['games', 'Web'], ['Web', 'applications'], ['applications', 'Content'], ['Content', 'management'], ['management', 'systems'], ['systems', 'E-commerce'], ['E-commerce', 'Word'], ['Word', 'processors'], ['processors', 'Android'], ['Android', 'apps'], ['apps', 'iOS'], ['iOS', 'apps'], ['apps', 'Commercial'], ['Commercial', 'Trademarked'], ['Trademarked', 'Formerly'], ['Formerly', 'proprietary'], ['proprietary', 'Community'], ['Community', 'Free'], ['Free', 'software'], ['software', 'movement'], ['movement', 'History'], ['History', 'Open-source'], ['Open-source', 'software'], ['software', 'movement'], ['movement', 'Organizations'], ['Organizations', 'Events'], ['Events', 'Licenses'], ['Licenses', 'AFL'], ['AFL', 'Apache'], ['Apache', 'APSL'], ['APSL', 'Artistic'], ['Artistic', 'Beerware'], ['Beerware', 'Boost'], ['Boost', 'BSD'], ['BSD', 'CC'], ['CC', 'CDDL'], ['CDDL', 'EPL'], ['EPL', 'GNU'], ['GNU', 'GPL'], ['GPL', 'GNU'], ['GNU', 'LGPL'], ['LGPL', 'ISC'], ['ISC', 'MIT'], ['MIT', 'MPL'], ['MPL', 'Ms-PL/RL'], ['Ms-PL/RL', 'Python'], ['Python', 'Python'], ['Python', 'Software'], ['Software', 'Foundation'], ['Foundation', 'Sleepycat'], ['Sleepycat', 'Unlicense'], ['Unlicense', 'WTFPL'], ['WTFPL', 'zlib'], ['zlib', 'License'], ['License', 'types'], ['types', 'and'], ['and', 'standards'], ['standards', 'Comparison'], ['Comparison', 'of'], ['of', 'free'], ['free', 'and'], ['and', 'open-source'], ['open-source', 'software'], ['software', 'licenses'], ['licenses', 'Contributor'], ['Contributor', 'License'], ['License', 'Agreement'], ['Agreement', 'Copyfree'], ['Copyfree', 'Copyleft'], ['Copyleft', 'Debian'], ['Debian', 'Free'], ['Free', 'Software'], ['Software', 'Guidelines'], ['Guidelines', 'Definition'], ['Definition', 'of'], ['of', 'Free'], ['Free', 'Cultural'], ['Cultural', 'Works'], ['Works', 'Free'], ['Free', 'license'], ['license', 'The'], ['The', 'Free'], ['Free', 'Software'], ['Software', 'Definition'], ['Definition', 'The'], ['The', 'Open'], ['Open', 'Source'], ['Source', 'Definition'], ['Definition', 'Open-source'], ['Open-source', 'license'], ['license', 'Permissive'], ['Permissive', 'software'], ['software', 'licence'], ['licence', 'Public'], ['Public', 'domain'], ['domain', 'Viral'], ['Viral', 'license'], ['license', 'Challenges'], ['Challenges', 'Binary'], ['Binary', 'blob'], ['blob', 'Digital'], ['Digital', 'rights'], ['rights', 'management'], ['management', 'Hardware'], ['Hardware', 'restrictions'], ['restrictions', 'License'], ['License', 'proliferation'], ['proliferation', 'Mozilla'], ['Mozilla', 'software'], ['software', 'rebranding'], ['rebranding', 'Proprietary'], ['Proprietary', 'software'], ['software', 'SCO/Linux'], ['SCO/Linux', 'controversies'], ['controversies', 'Secure'], ['Secure', 'boot'], ['boot', 'Software'], ['Software', 'patents'], ['patents', 'Software'], ['Software', 'security'], ['security', 'Trusted'], ['Trusted', 'Computing'], ['Computing', 'Related'], ['Related', 'topics'], ['topics', 'The'], ['The', 'Cathedral'], ['Cathedral', 'and'], ['and', 'the'], ['the', 'Bazaar'], ['Bazaar', 'Forking'], ['Forking', 'Microsoft'], ['Microsoft', 'Open'], ['Open', 'Specification'], ['Specification', 'Promise'], ['Promise', 'Revolution'], ['Revolution', 'OS'], ['OS', 'Book'], ['Book', 'Category'], ['Category', 'Commons'], ['Commons', 'Portal'], ['Portal', 'Authority'], ['Authority', 'control'], ['control', 'LCCN:'], ['LCCN:', 'sh'], ['sh', 'GND:'], ['GND:', '-'], ['-', 'SUDOC:'], ['SUDOC:', 'BNF:'], ['BNF:', 'cb'], ['cb', 'c'], ['c', '(data)']]\n", + "2-grams count is: 9348\n" + ] + } + ], + "source": [ + "html = urlopen('http://en.wikipedia.org/wiki/Python_(programming_language)')\n", + "bs = BeautifulSoup(html, 'html.parser')\n", + "content = bs.find('div', {'id':'mw-content-text'}).get_text()\n", + "ngrams = getNgrams(content, 2)\n", + "print(ngrams)\n", + "print('2-grams count is: '+str(len(ngrams)))" + ] + }, + { + "cell_type": "code", + "execution_count": 70, + "metadata": {}, + "outputs": [], + "source": [ + "from urllib.request import urlopen\n", + "from bs4 import BeautifulSoup\n", + "import re\n", + "import string\n", + "\n", + "def cleanSentence(sentence):\n", + " sentence = sentence.split(' ')\n", + " sentence = [word.strip(string.punctuation+string.whitespace) for word in sentence]\n", + " sentence = [word for word in sentence if len(word) > 1 or (word.lower() == 'a' or word.lower() == 'i')]\n", + " return sentence\n", + "\n", + "def cleanInput(content):\n", + " content = content.upper()\n", + " content = re.sub('\\n|[[\\d+\\]]', ' ', content)\n", + " content = bytes(content, \"UTF-8\")\n", + " content = content.decode(\"ascii\", \"ignore\")\n", + " sentences = content.split('. ')\n", + " return [cleanSentence(sentence) for sentence in sentences]\n", + "\n", + "def getNgramsFromSentence(content, n):\n", + " output = []\n", + " for i in range(len(content)-n+1):\n", + " output.append(content[i:i+n])\n", + " return output\n", + "\n", + "def getNgrams(content, n):\n", + " content = cleanInput(content)\n", + " ngrams = []\n", + " for sentence in content:\n", + " ngrams.extend(getNgramsFromSentence(sentence, n))\n", + " return(ngrams)\n", + " \n" + ] + }, + { + "cell_type": "code", + "execution_count": 71, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "7275\n" + ] + } + ], + "source": [ + "html = urlopen('http://en.wikipedia.org/wiki/Python_(programming_language)')\n", + "bs = BeautifulSoup(html, 'html.parser')\n", + "content = bs.find('div', {'id':'mw-content-text'}).get_text()\n", + "print(len(getNgrams(content, 2)))" + ] + }, + { + "cell_type": "code", + "execution_count": 68, + "metadata": {}, + "outputs": [], + "source": [ + "from collections import Counter\n", + "\n", + "def getNgrams(content, n):\n", + " content = cleanInput(content)\n", + " ngrams = Counter()\n", + " ngrams_list = []\n", + " for sentence in content:\n", + " newNgrams = [' '.join(ngram) for ngram in getNgramsFromSentence(sentence, n)]\n", + " ngrams_list.extend(newNgrams)\n", + " ngrams.update(newNgrams)\n", + " return(ngrams)" + ] + }, + { + "cell_type": "code", + "execution_count": 69, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "5479\n", + "7275\n", + "Counter({'PYTHON SOFTWARE': 40, 'SOFTWARE FOUNDATION': 37, 'OF THE': 34, 'IN PYTHON': 31, 'OF PYTHON': 28, 'IN THE': 24, 'THE PYTHON': 24, 'VAN ROSSUM': 23, 'TO THE': 20, 'SUCH AS': 19, 'RETRIEVED FEBRUARY': 19, 'IS A': 17, 'FROM THE': 16, 'PYTHON ENHANCEMENT': 15, 'PYTHON IS': 14, 'AS A': 14, 'ENHANCEMENT PROPOSALS': 14, 'IT IS': 13, 'RETRIEVED MARCH': 13, 'PROGRAMMING LANGUAGE': 12, 'RETRIEVED DECEMBER': 12, 'ROSSUM GUIDO': 12, 'FOR EXAMPLE': 11, 'CAN BE': 11, 'BE USED': 11, 'RETRIEVED SEPTEMBER': 11, 'RETRIEVED NOVEMBER': 11, 'RETRIEVED JANUARY': 11, 'PYTHON HAS': 10, 'STANDARD LIBRARY': 10, 'ON THE': 10, 'FOR THE': 10, 'PROGRAMMING LANGUAGES': 10, 'FROM PYTHON': 10, 'RETRIEVED AUGUST': 10, 'GUIDO VAN': 9, 'AND A': 9, 'BY THE': 9, 'OTHER LANGUAGES': 9, 'TO BE': 9, 'PYTHON AND': 9, 'STATEMENT WHICH': 9, 'RETRIEVED JUNE': 9, 'OF ITS': 8, 'THE LANGUAGE': 8, 'TO PYTHON': 8, 'A PYTHON': 8, 'OF A': 8, 'USED TO': 8, 'COMPARISON OF': 8, 'FOR PYTHON': 8, 'ARCHIVED FROM': 8, 'THE ORIGINAL': 8, 'RETRIEVED JULY': 8, 'RETRIEVED APRIL': 8, 'HAS A': 7, 'SYNTAX AND': 7, 'WITH THE': 7, 'IN A': 7, 'WRITTEN IN': 7, 'IS THE': 7, 'IS USED': 7, 'USED IN': 7, 'PYTHON FOR': 7, 'FREE SOFTWARE': 7, 'ORIGINAL ON': 7, 'SCRIPTING LANGUAGE': 6, 'PYTHON AS': 6, 'IS NOT': 6, 'MANY OTHER': 6, 'THE STANDARD': 6, 'THE SAME': 6, 'TO A': 6, 'ARE NOT': 6, 'PART OF': 6, 'COMPILES PYTHON': 6, 'STACKLESS PYTHON': 5, 'LANGUAGE FOR': 5, 'OF CODE': 5, 'REFERENCE IMPLEMENTATION': 5, 'DEVELOPMENT ENVIRONMENTS': 5, 'NEW FEATURES': 5, 'OBJECT-ORIENTED PROGRAMMING': 5, 'PYTHON USES': 5, 'IT ALSO': 5, 'IT HAS': 5, 'BETTER THAN': 5, 'WITH A': 5, 'LANGUAGES SUCH': 5, 'IS ALSO': 5, 'MONTY PYTHON': 5, 'CODE IS': 5, \"EDIT PYTHON'S\": 5, 'THERE ARE': 5, 'INTEGER DIVISION': 5, 'THE OPERATOR': 5, 'USED AS': 5, 'AS THE': 5, 'USE THE': 5, 'PYTHON A': 5, 'CAN CONTAIN': 5, 'CONTAIN MIXED': 5, 'MIXED TYPES': 5, 'THE VERSION': 5, 'AND IS': 5, 'ARBITRARY PRECISION': 5, 'IN AND': 5, 'WITH PYTHON': 5, 'OPEN-SOURCE SOFTWARE': 5, 'AND HAS': 4, 'A LARGE': 4, 'OPEN SOURCE': 4, 'AND SEMANTICS': 4, 'SEE ALSO': 4, 'MAIN ARTICLE': 4, \"PYTHON'S DEVELOPMENT\": 4, 'SUPPORT FOR': 4, 'LANGUAGE THAT': 4, 'ON A': 4, 'LIST COMPREHENSIONS': 4, 'IS BETTER': 4, 'RATHER THAN': 4, 'LIKE A': 4, 'DOES NOT': 4, 'MAY BE': 4, 'BLOCK OF': 4, 'THE CLASS': 4, 'THEY ARE': 4, 'OPERATOR FOR': 4, 'THAT THE': 4, 'A NEW': 4, 'KINDS OF': 4, 'QUOTE MARKS': 4, 'PERL AND': 4, 'USED FOR': 4, 'STRING TRUE': 4, 'MEANS THAT': 4, 'EXAMPLE THE': 4, 'WEB SERVER': 4, 'PYTHON CODE': 4, 'PYTHON PACKAGE': 4, 'SCIENTIFIC COMPUTING': 4, 'PYTHON IMPLEMENTATIONS': 4, 'HAS BEEN': 4, 'A SIMILAR': 4, 'PYTHON TO': 4, 'VERSION NUMBER': 4, 'NUMBER IS': 4, 'IS INCREMENTED': 4, 'ON PYTHON': 4, 'A SCRIPTING': 4, 'PYTHON LANGUAGE': 4, 'JAVA PLATFORM': 4, 'OF PROGRAMMING': 4, 'RETRIEVED MAY': 4, 'RETRIEVED OCTOBER': 4, 'INFLUENCED BY': 3, 'OPERATING SYSTEMS': 3, 'CPYTHON IS': 3, 'FEATURES AND': 3, 'AND PHILOSOPHY': 3, 'CONTROL FLOW': 3, 'BY PYTHON': 3, 'HISTORY OF': 3, 'OPERATING SYSTEM': 3, 'PYTHON COMMUNITY': 3, 'THAT WOULD': 3, 'INTERPRETER FOR': 3, 'WAS RELEASED': 3, 'ON DECEMBER': 3, 'THAT IS': 3, 'MANY OF': 3, 'HAVE BEEN': 3, 'EDIT PYTHON': 3, 'FUNCTIONAL PROGRAMMING': 3, 'TYPING AND': 3, \"THE LANGUAGE'S\": 3, 'LANGUAGE WITH': 3, 'LARGE STANDARD': 3, 'THERE IS': 3, 'TO DO': 3, 'PYTHON INTERPRETER': 3, \"OF PYTHON'S\": 3, 'THIS IS': 3, 'FROM A': 3, 'THAT IT': 3, 'USES PYTHON': 3, 'IN CONTRAST': 3, 'EDIT MAIN': 3, 'AND IT': 3, 'ASSIGNMENT STATEMENT': 3, 'NATURE OF': 3, 'NAME IS': 3, 'USING THE': 3, 'DATA TYPE': 3, 'EXECUTES A': 3, 'A BLOCK': 3, 'CODE BLOCK': 3, 'A GENERATOR': 3, 'WHICH IS': 3, 'AS AND': 3, 'AND JAVA': 3, 'FLOOR DIVISION': 3, 'MATRIX MULTIPLICATION': 3, 'IN JAVA': 3, 'JAVA AND': 3, 'CONDITIONAL EXPRESSIONS': 3, 'ARE WRITTEN': 3, 'WRITTEN AS': 3, 'DISTINCTION BETWEEN': 3, 'THE LEFT': 3, 'AN ASSIGNMENT': 3, 'DOUBLE QUOTE': 3, 'EXPRESSIONS AND': 3, 'THE THIRD': 3, 'BUILT-IN FUNCTIONS': 3, 'IS FOR': 3, 'OF THIS': 3, 'FOR AN': 3, 'THE SYNTAX': 3, 'OFTEN USED': 3, 'INSTANCES OF': 3, 'OF CLASSES': 3, 'AND THE': 3, 'OPTIONAL STATIC': 3, 'SEQUENCE OF': 3, 'OPERATOR IS': 3, 'SINCE VERSION': 3, 'SERVER GATEWAY': 3, 'GATEWAY INTERFACE': 3, 'A FEW': 3, 'AS OF': 3, 'PACKAGE INDEX': 3, 'THE OFFICIAL': 3, 'WEB FRAMEWORKS': 3, 'INTEGRATED DEVELOPMENT': 3, 'PYTHON IDE': 3, 'SCIENCE AND': 3, 'PYTHON PROGRAMS': 3, 'IMPLEMENTATIONS EDIT': 3, 'LIST OF': 3, 'IS WRITTEN': 3, 'RUN ON': 3, 'USE OF': 3, 'MAILING LIST': 3, 'ARE ALSO': 3, 'PYTHON DOCUMENTATION': 3, 'MOST POPULAR': 3, 'LANGUAGES IN': 3, 'TIOBE PROGRAMMING': 3, 'PROGRAMMING COMMUNITY': 3, 'COMMUNITY INDEX': 3, 'THE YEAR': 3, 'DESIGN AND': 3, 'PYTHON IN': 3, 'ARTIFICIAL INTELLIGENCE': 3, 'A BRIEF': 3, 'GENERAL PYTHON': 3, 'PYTHON FAQ': 3, 'INTERVIEW WITH': 3, 'THE JAVA': 3, 'ZADKA MOSHE': 3, 'PEP PYTHON': 3, \"O'REILLY MEDIA\": 3, 'IN SCIENCE': 3, 'OBJECT-ORIENTED IMPERATIVE': 2, 'IMPERATIVE FUNCTIONAL': 2, 'IRONPYTHON JYTHON': 2, 'MICROPYTHON NUMBA': 2, 'GO GROOVY': 2, 'PYTHON PROGRAMMING': 2, 'BY GUIDO': 2, 'DESIGN PHILOSOPHY': 2, 'A SYNTAX': 2, 'ALLOWS PROGRAMMERS': 2, 'PROGRAMMERS TO': 2, 'FEWER LINES': 2, 'LINES OF': 2, 'PYTHON FEATURES': 2, 'A DYNAMIC': 2, 'MEMORY MANAGEMENT': 2, 'ARE AVAILABLE': 2, 'AVAILABLE FOR': 2, 'FOR MANY': 2, 'MANY OPERATING': 2, 'THE REFERENCE': 2, 'IMPLEMENTATION OF': 2, 'ALL OF': 2, 'VARIANT IMPLEMENTATIONS': 2, 'STATEMENTS AND': 2, 'AND CONTROL': 2, 'OTHER IMPLEMENTATIONS': 2, 'UNSUPPORTED IMPLEMENTATIONS': 2, 'CROSS-COMPILERS TO': 2, 'TO OTHER': 2, 'LANGUAGES INFLUENCED': 2, 'FURTHER READING': 2, 'EXTERNAL LINKS': 2, 'THE CREATOR': 2, 'CREATOR OF': 2, 'PYTHON PYTHON': 2, 'PYTHON WAS': 2, 'AND ITS': 2, 'IN DECEMBER': 2, 'INSPIRED BY': 2, 'DEVELOPMENT IS': 2, 'IS REFLECTED': 2, 'REFLECTED IN': 2, 'GIVEN TO': 2, 'BENEVOLENT DICTATOR': 2, 'DICTATOR FOR': 2, 'FOR LIFE': 2, 'WOULD BE': 2, 'I HAD': 2, 'AND NOT': 2, 'NOT MUCH': 2, 'I DECIDED': 2, 'DECIDED TO': 2, 'THE PROJECT': 2, 'RELEASED ON': 2, 'MAJOR NEW': 2, 'A CYCLE-DETECTING': 2, 'CYCLE-DETECTING GARBAGE': 2, 'GARBAGE COLLECTOR': 2, 'THE DEVELOPMENT': 2, 'PYTHON OR': 2, 'AFTER A': 2, 'A MAJOR': 2, 'OUT OF': 2, 'IN JANUARY': 2, 'WORK ON': 2, 'TO GO': 2, 'THIS WAS': 2, 'PROGRAMMING AND': 2, 'METAPROGRAMMING AND': 2, 'ARE SUPPORTED': 2, 'DYNAMIC TYPING': 2, 'METHOD AND': 2, 'VARIABLE NAMES': 2, \"PYTHON'S DESIGN\": 2, 'PROGRAMMING IN': 2, 'GENERATOR EXPRESSIONS': 2, 'THE DOCUMENT': 2, 'THE ZEN': 2, 'ZEN OF': 2, 'ITS CORE': 2, 'WAS DESIGNED': 2, 'LIBRARY AND': 2, 'PHILOSOPHY REJECTS': 2, 'IN FAVOR': 2, 'FAVOR OF': 2, 'TO DESCRIBE': 2, 'PYTHON CULTURE': 2, 'WAY TO': 2, 'DO IT': 2, 'LANGUAGE DESIGN': 2, 'SHOULD BE': 2, \"PYTHON'S DEVELOPERS\": 2, 'PARTS OF': 2, 'OF CPYTHON': 2, 'CPYTHON THAT': 2, 'PYPY A': 2, 'A JUST-IN-TIME': 2, 'JUST-IN-TIME COMPILER': 2, 'TO USE': 2, 'THE BRITISH': 2, 'BRITISH COMEDY': 2, 'COMEDY GROUP': 2, 'GROUP MONTY': 2, 'SPAM AND': 2, 'AND EGGS': 2, 'INSTEAD OF': 2, 'FOO AND': 2, 'AND BAR': 2, 'A COMMON': 2, 'IS PYTHONIC': 2, 'WHICH CAN': 2, 'HAVE A': 2, 'A WIDE': 2, 'WIDE RANGE': 2, 'RANGE OF': 2, 'RELATED TO': 2, 'TO PROGRAM': 2, 'TO SAY': 2, 'SAY THAT': 2, 'IS TO': 2, 'A ROUGH': 2, 'LANGUAGE IS': 2, 'ARE OFTEN': 2, 'ARTICLE PYTHON': 2, 'PYTHON SYNTAX': 2, 'IT DOES': 2, 'NOT USE': 2, 'TO DELIMIT': 2, 'DELIMIT BLOCKS': 2, 'ARE OPTIONAL': 2, 'THAN OR': 2, 'IN INDENTATION': 2, 'THE END': 2, 'THE CURRENT': 2, 'OFF-SIDE RULE': 2, 'THE EQUALS': 2, 'INCLUDING THE': 2, 'THE NATURE': 2, 'IN E.G': 2, 'TRANSLATES TO': 2, 'VARIABLE NAME': 2, 'NAME RECEIVES': 2, 'RECEIVES A': 2, 'A COPY': 2, 'COPY OF': 2, 'OF NUMERIC': 2, 'INTO AN': 2, 'STORAGE LOCATION': 2, 'FOR WHICH': 2, 'WHICH THE': 2, 'THE SYMBOLIC': 2, 'THE MEMORY': 2, 'THE VARIABLE': 2, 'CASE OF': 2, 'TYPE OF': 2, 'SINCE THE': 2, 'A VARIABLE': 2, 'AND METHODS': 2, 'THREE NAMES': 2, 'A NAME': 2, 'A TYPE': 2, 'AN ITERABLE': 2, 'ITERABLE OBJECT': 2, 'EACH ELEMENT': 2, 'FOR USE': 2, 'WHICH EXECUTES': 2, 'AS ITS': 2, 'IN ITS': 2, 'THE BLOCK': 2, 'CODE AND': 2, 'CLASS FOR': 2, 'USE IN': 2, 'FUNCTION OR': 2, 'OR METHOD': 2, 'IS SYNTACTICALLY': 2, 'TO CREATE': 2, 'RETURNS A': 2, 'GENERATOR FUNCTION': 2, 'ARE TWO': 2, 'MODULE NAME': 2, 'THE PRINT': 2, 'IS POSSIBLE': 2, 'POSSIBLE TO': 2, 'INTO A': 2, 'AND FROM': 2, 'THE INFORMATION': 2, 'SIMILAR TO': 2, 'TO LANGUAGES': 2, 'THE BEHAVIOR': 2, 'BEHAVIOR OF': 2, 'OF DIVISION': 2, 'DIVISION AND': 2, 'FOR EXPONENTIATION': 2, 'BY VALUE': 2, 'BY REFERENCE': 2, 'ON OBJECTS': 2, 'EXAMPLE A': 2, 'USES THE': 2, 'EXPRESSION TERMED': 2, 'TERMED A': 2, 'LAMBDA EXPRESSIONS': 2, 'PYTHON ARE': 2, 'IN ORDER': 2, 'TO MANY': 2, 'A DISTINCTION': 2, 'AS ARE': 2, 'CANNOT BE': 2, 'THE KEYS': 2, 'KEYS OF': 2, 'OF DICTIONARIES': 2, 'KEYS MUST': 2, 'MUST BE': 2, 'ARE IMMUTABLE': 2, 'ELEMENTS OF': 2, 'OF BOTH': 2, 'IS THEN': 2, 'HAND SIDE': 2, 'SIDE OF': 2, 'THE EQUAL': 2, 'EQUAL SIGN': 2, 'IN AN': 2, 'THE RIGHT': 2, 'NUMBER OF': 2, 'A STRING': 2, 'OF STRING': 2, 'STRING LITERALS': 2, 'SINGLE OR': 2, 'OR DOUBLE': 2, 'SHELLS PERL': 2, 'BOTH KINDS': 2, 'AS AN': 2, 'STRING INTERPOLATION': 2, 'MULTIPLE LINES': 2, 'REGULAR EXPRESSIONS': 2, 'OR A': 2, 'INDEXES ARE': 2, 'AND NEGATIVE': 2, 'CONTRAST TO': 2, 'OR RUBY': 2, 'THE LATTER': 2, 'BE A': 2, 'AND OTHER': 2, 'HAS THE': 2, 'ADVANTAGE OF': 2, 'OPERATOR IN': 2, 'CAUSES A': 2, 'CLASS THE': 2, 'HAVE AN': 2, 'NOT CHECKED': 2, 'OBJECT IS': 2, 'PYTHON ALLOWS': 2, 'CLASSES ARE': 2, 'ARE INSTANCES': 2, 'SYNTAX OF': 2, 'AND ARE': 2, 'BUILT-IN TYPES': 2, 'OF BYTES': 2, 'FLOATING POINT': 2, 'UNORDERED SET': 2, 'SET CONTAINS': 2, 'CONTAINS NO': 2, 'NO DUPLICATES': 2, 'DUPLICATES CAN': 2, 'TYPES IF': 2, 'IF HASHABLE': 2, 'WE CAN': 2, 'ALSO HAS': 2, 'WHICH SHIFTS': 2, 'SHIFTS TO': 2, 'PLACES THE': 2, 'SAME AS': 2, 'THE DIVISION': 2, 'INTEGERS AND': 2, 'FLOATING-POINT DIVISION': 2, 'TOWARDS NEGATIVE': 2, 'NEGATIVE INFINITY': 2, 'DIVISION OPERATOR': 2, 'USE PYTHON': 2, 'THE EQUATION': 2, 'A IS': 2, 'THE EXPRESSION': 2, 'IS LESS': 2, 'LESS THAN': 2, 'THEN BE': 2, 'BELONGING TO': 2, 'PYTHON TYPE': 2, 'TO ARBITRARY': 2, 'PYTHON THE': 2, 'THE INT': 2, 'IS NOW': 2, 'IN MODULE': 2, 'AND SEVERAL': 2, 'ONE OF': 2, 'IT INCLUDES': 2, 'GRAPHICAL USER': 2, 'USER INTERFACES': 2, 'THE WEB': 2, 'MODULES ARE': 2, 'MOST OF': 2, 'ONLY A': 2, 'OFFICIAL REPOSITORY': 2, 'THIRD-PARTY PYTHON': 2, 'TEXT PROCESSING': 2, 'EDIT SEE': 2, 'OF INTEGRATED': 2, 'COMMAND LINE': 2, 'INTENDED FOR': 2, 'EXECUTED BY': 2, 'VIRTUAL MACHINE': 2, 'A MIXTURE': 2, 'MIXTURE OF': 2, 'INTERPRETER OF': 2, 'A SIGNIFICANT': 2, 'VERSION IS': 2, 'UNLADEN SWALLOW': 2, 'BY USING': 2, 'CPYTHON AND': 2, 'TYPES AND': 2, 'THE CPYTHON': 2, 'AND SOME': 2, 'THE SYMBIAN': 2, 'SYMBIAN OPERATING': 2, 'PROJECT HAS': 2, 'TO RUN': 2, 'THE NOKIA': 2, 'BYTE CODE': 2, 'THE USE': 2, 'OF JAVA': 2, 'TO JAVA': 2, 'TO JAVASCRIPT': 2, 'TO AND': 2, 'LATEST RELEASE': 2, 'RELEASE IN': 2, 'SHED SKIN': 2, \"GOOGLE'S GRUMPY\": 2, 'THE PRIMARY': 2, 'PYTHON DESIGN': 2, 'THE FIRST': 2, 'THESE RELEASES': 2, 'YEARS AFTER': 2, 'ABOUT EVERY': 2, 'EVERY MONTHS': 2, 'THE CODE': 2, 'PYTHON DEVELOPERS': 2, 'HAS ALSO': 2, 'CONFERENCE ON': 2, 'TO SHOW': 2, 'AND PYPY': 2, 'THE TIOBE': 2, 'POPULAR LANGUAGE': 2, 'IT WAS': 2, 'LANGUAGE OF': 2, 'BASED ON': 2, 'AN EMPIRICAL': 2, 'AS PYTHON': 2, 'FOR PROGRAMMING': 2, 'PYTHON CAN': 2, 'WEB APPLICATIONS': 2, 'A STANDARD': 2, 'PYLONS PYRAMID': 2, 'WEB PY': 2, 'THE DESIGN': 2, 'LIBRARIES SUCH': 2, 'AND STATISTICAL': 2, 'INCLUDING IN': 2, 'PROGRAMS LIKE': 2, 'A PRETTY': 2, 'PRETTY PRINTER': 2, 'ALSO BEEN': 2, 'BEEN USED': 2, 'VIDEO GAMES': 2, 'THE OTHER': 2, 'ALSO USED': 2, 'ALGORITHMIC TRADING': 2, 'NATURAL LANGUAGE': 2, 'LINUX DISTRIBUTIONS': 2, 'SUGAR LABS': 2, 'USES INDENTATION': 2, 'SIMILAR SYNTAX': 2, 'OBJECT MODEL': 2, 'STATIC TYPING': 2, 'A PROGRAMMING': 2, 'PYTHON-INSPIRED SYNTAX': 2, 'IS DESCRIBED': 2, 'DYNAMIC LANGUAGE': 2, 'BE AS': 2, 'THE WHITESPACE': 2, 'WHITESPACE THING': 2, 'LANGUAGE IN': 2, 'A PEP': 2, 'TIOBE INDEX': 2, 'THE HISTORY': 2, 'BRIEF TIMELINE': 2, 'TIMELINE OF': 2, 'PYTHON INSIDER': 2, 'PYTHON CORE': 2, 'CORE DEVELOPERS': 2, 'A WHY': 2, 'WITH GUIDO': 2, 'PYTHON TUTORIAL': 2, 'KUCHLING A': 2, 'PETERS TIM': 2, 'BAXTER ANTHONY': 2, 'AND PYTHON': 2, 'WE CREATED': 2, 'ON RAILS': 2, 'LATTNER CHRIS': 2, 'CHRIS JUNE': 2, \"CHRIS LATTNER'S\": 2, \"LATTNER'S HOMEPAGE\": 2, 'CHRIS LATTNER': 2, 'THE SWIFT': 2, 'DRAWING IDEAS': 2, 'IDEAS FROM': 2, 'FROM OBJECTIVE-C': 2, 'OBJECTIVE-C RUST': 2, 'RUST HASKELL': 2, 'HASKELL RUBY': 2, 'RUBY PYTHON': 2, 'PYTHON CLU': 2, 'CLU AND': 2, 'AND FAR': 2, 'FAR TOO': 2, 'TOO MANY': 2, 'MANY OTHERS': 2, 'OTHERS TO': 2, 'TO LIST': 2, 'SUMMERFIELD MARK': 2, 'ABOUT PYTHON': 2, \"WHAT'S NEW\": 2, 'NEW IN': 2, 'GUIDO APRIL': 2, 'LANGUAGE REFERENCE': 2, 'HETTINGER RAYMOND': 2, 'GOODGER DAVID': 2, 'A PYTHONISTA': 2, 'HOW TO': 2, 'TO THINK': 2, 'THINK LIKE': 2, 'EBY PHILLIP': 2, 'PEP A': 2, 'A DEDICATED': 2, 'DEDICATED INFIX': 2, 'INFIX OPERATOR': 2, 'FOR MATRIX': 2, 'EQUALITY OPERATORS': 2, 'OPERATORS AND': 2, 'ORACLE CORPORATION': 2, 'MOSHE VAN': 2, 'GUIDO MARCH': 2, 'ROUND THE': 2, 'PYTHON STANDARD': 2, 'LIBRARY RELEASE': 2, 'FUNCTIONS RETRIEVED': 2, 'BATISTA FACUNDO': 2, 'PEP DECIMAL': 2, 'DECIMAL DATA': 2, 'PYTHON WEB': 2, 'DEBILL ERIK': 2, 'MODULE COUNTS': 2, 'AN INTERVIEW': 2, 'NUITKA HOME': 2, 'PURPOSE AND': 2, 'AND GUIDELINES': 2, 'LUTZ MARK': 2, 'LEARNING PYTHON': 2, 'TIOBE SOFTWARE': 2, 'PYTHON REXX': 2, 'USING PYTHON': 2, 'COMPUTING IN': 2, 'AND ENGINEERING': 2, 'DATA ANALYSIS': 2, 'LONDON SPRINGER': 2, \"SID MEIER'S\": 2, \"MEIER'S CIVILIZATION\": 2, 'CIVILIZATION IV': 2, 'ON AUGUST': 2, 'ESTERBROOK CHARLES': 2, 'COBRA LANGUAGE': 2, 'IN JULY': 2, 'PILGRIM MARK': 2, 'DIVE INTO': 2, 'INTO PYTHON': 2, 'FREE AND': 2, 'AND OPEN-SOURCE': 2, 'SOFTWARE COMPARISON': 2, 'SOFTWARE MOVEMENT': 2, 'OF FREE': 2, 'PYTHON PARADIGM': 1, 'PARADIGM OBJECT-ORIENTED': 1, 'FUNCTIONAL PROCEDURAL': 1, 'PROCEDURAL REFLECTIVE': 1, 'REFLECTIVE DESIGNEDBY': 1, 'DESIGNEDBY GUIDO': 1, 'ROSSUM DEVELOPER': 1, 'DEVELOPER PYTHON': 1, 'FOUNDATION FIRSTAPPEARED': 1, 'FIRSTAPPEARED FEBRUARY': 1, 'FEBRUARY YEARS': 1, 'YEARS AGO': 1, 'AGO STABLE': 1, 'STABLE RELEASE': 1, 'DECEMBER DAYS': 1, 'DAYS AGO': 1, 'SEPTEMBER MONTHS': 1, 'MONTHS AGO': 1, 'AGO TYPING': 1, 'TYPING DISCIPLINE': 1, 'DISCIPLINE DUCK': 1, 'DUCK DYNAMIC': 1, 'DYNAMIC STRONG': 1, 'STRONG LICENSE': 1, 'LICENSE PYTHON': 1, 'FOUNDATION LICENSE': 1, 'LICENSE FILENAME': 1, 'FILENAME EXTENSIONS': 1, 'EXTENSIONS PY': 1, 'PY PYC': 1, 'PYC PYD': 1, 'PYD PYO': 1, 'PYO PRIOR': 1, 'PRIOR TO': 1, 'PYW PYZ': 1, 'PYZ SINCE': 1, 'WEBSITE PYTHON.ORG': 1, 'PYTHON.ORG MAJOR': 1, 'MAJOR IMPLEMENTATIONS': 1, 'IMPLEMENTATIONS CPYTHON': 1, 'CPYTHON IRONPYTHON': 1, 'JYTHON MICROPYTHON': 1, 'NUMBA PYPY': 1, 'PYPY STACKLESS': 1, 'PYTHON DIALECTS': 1, 'DIALECTS CYTHON': 1, 'CYTHON RPYTHON': 1, 'RPYTHON INFLUENCED': 1, 'BY ABC': 1, 'ABC ALGOL': 1, 'ALGOL CLU': 1, 'CLU DYLAN': 1, 'DYLAN HASKELL': 1, 'HASKELL ICON': 1, 'ICON JAVA': 1, 'JAVA LISP': 1, 'LISP MODULA': 1, 'MODULA PERL': 1, 'PERL INFLUENCED': 1, 'INFLUENCED BOO': 1, 'BOO COBRA': 1, 'COBRA COCONUT': 1, 'COCONUT COFFEESCRIPT': 1, 'COFFEESCRIPT FALCON': 1, 'FALCON GENIE': 1, 'GENIE GO': 1, 'GROOVY JAVASCRIPT': 1, 'JAVASCRIPT JULIA': 1, 'JULIA NIM': 1, 'NIM RING': 1, 'RING RUBY': 1, 'RUBY SWIFT': 1, 'SWIFT PYTHON': 1, 'PROGRAMMING AT': 1, 'AT WIKIBOOKS': 1, 'WIKIBOOKS PYTHON': 1, 'IS AN': 1, 'AN INTERPRETED': 1, 'INTERPRETED HIGH-LEVEL': 1, 'HIGH-LEVEL PROGRAMMING': 1, 'FOR GENERAL-PURPOSE': 1, 'GENERAL-PURPOSE PROGRAMMING': 1, 'CREATED BY': 1, 'ROSSUM AND': 1, 'AND FIRST': 1, 'FIRST RELEASED': 1, 'RELEASED IN': 1, 'A DESIGN': 1, 'PHILOSOPHY THAT': 1, 'THAT EMPHASIZES': 1, 'EMPHASIZES CODE': 1, 'CODE READABILITY': 1, 'READABILITY AND': 1, 'SYNTAX THAT': 1, 'THAT ALLOWS': 1, 'TO EXPRESS': 1, 'EXPRESS CONCEPTS': 1, 'CONCEPTS IN': 1, 'IN FEWER': 1, 'CODE NOTABLY': 1, 'NOTABLY USING': 1, 'USING SIGNIFICANT': 1, 'SIGNIFICANT WHITESPACE': 1, 'IT PROVIDES': 1, 'PROVIDES CONSTRUCTS': 1, 'CONSTRUCTS THAT': 1, 'THAT ENABLE': 1, 'ENABLE CLEAR': 1, 'CLEAR PROGRAMMING': 1, 'PROGRAMMING ON': 1, 'ON BOTH': 1, 'BOTH SMALL': 1, 'SMALL AND': 1, 'AND LARGE': 1, 'LARGE SCALES': 1, 'FEATURES A': 1, 'DYNAMIC TYPE': 1, 'TYPE SYSTEM': 1, 'SYSTEM AND': 1, 'AND AUTOMATIC': 1, 'AUTOMATIC MEMORY': 1, 'IT SUPPORTS': 1, 'SUPPORTS MULTIPLE': 1, 'MULTIPLE PROGRAMMING': 1, 'PROGRAMMING PARADIGMS': 1, 'PARADIGMS INCLUDING': 1, 'INCLUDING OBJECT-ORIENTED': 1, 'FUNCTIONAL AND': 1, 'AND PROCEDURAL': 1, 'PROCEDURAL AND': 1, 'LARGE AND': 1, 'AND COMPREHENSIVE': 1, 'COMPREHENSIVE STANDARD': 1, 'PYTHON INTERPRETERS': 1, 'INTERPRETERS ARE': 1, 'CPYTHON THE': 1, 'IS OPEN': 1, 'SOURCE SOFTWARE': 1, 'SOFTWARE AND': 1, 'A COMMUNITY-BASED': 1, 'COMMUNITY-BASED DEVELOPMENT': 1, 'DEVELOPMENT MODEL': 1, 'MODEL AS': 1, 'AS DO': 1, 'DO NEARLY': 1, 'NEARLY ALL': 1, 'ITS VARIANT': 1, 'IS MANAGED': 1, 'MANAGED BY': 1, 'THE NON-PROFIT': 1, 'NON-PROFIT PYTHON': 1, 'CONTENTS HISTORY': 1, 'HISTORY FEATURES': 1, 'PHILOSOPHY SYNTAX': 1, 'MATHEMATICS LIBRARIES': 1, 'LIBRARIES DEVELOPMENT': 1, 'ENVIRONMENTS IMPLEMENTATIONS': 1, 'PERFORMANCE DEVELOPMENT': 1, 'DEVELOPMENT NAMING': 1, 'NAMING USES': 1, 'USES LANGUAGES': 1, 'PYTHON SEE': 1, 'ALSO REFERENCES': 1, 'REFERENCES FURTHER': 1, 'READING EXTERNAL': 1, 'LINKS HISTORY': 1, 'HISTORY EDIT': 1, 'EDIT GUIDO': 1, 'ROSSUM THE': 1, 'PYTHON MAIN': 1, 'ARTICLE HISTORY': 1, 'WAS CONCEIVED': 1, 'CONCEIVED IN': 1, 'THE LATE': 1, 'LATE AND': 1, 'ITS IMPLEMENTATION': 1, 'IMPLEMENTATION BEGAN': 1, 'BEGAN IN': 1, 'DECEMBER BY': 1, 'ROSSUM AT': 1, 'AT CENTRUM': 1, 'CENTRUM WISKUNDE': 1, 'WISKUNDE INFORMATICA': 1, 'INFORMATICA CWI': 1, 'CWI IN': 1, 'THE NETHERLANDS': 1, 'NETHERLANDS AS': 1, 'A SUCCESSOR': 1, 'SUCCESSOR TO': 1, 'THE ABC': 1, 'ABC LANGUAGE': 1, 'LANGUAGE ITSELF': 1, 'ITSELF INSPIRED': 1, 'BY SETL': 1, 'SETL CAPABLE': 1, 'CAPABLE OF': 1, 'OF EXCEPTION': 1, 'EXCEPTION HANDLING': 1, 'HANDLING AND': 1, 'AND INTERFACING': 1, 'INTERFACING WITH': 1, 'THE AMOEBA': 1, 'AMOEBA OPERATING': 1, 'ROSSUM REMAINS': 1, \"REMAINS PYTHON'S\": 1, \"PYTHON'S PRINCIPAL\": 1, 'PRINCIPAL AUTHOR': 1, 'HIS CONTINUING': 1, 'CONTINUING CENTRAL': 1, 'CENTRAL ROLE': 1, 'ROLE IN': 1, \"IN PYTHON'S\": 1, 'THE TITLE': 1, 'TITLE GIVEN': 1, 'TO HIM': 1, 'HIM BY': 1, 'COMMUNITY BENEVOLENT': 1, 'LIFE BDFL': 1, 'THE ORIGINS': 1, 'ORIGINS OF': 1, 'PYTHON VAN': 1, 'ROSSUM WROTE': 1, 'WROTE IN': 1, 'IN IN': 1, 'DECEMBER I': 1, 'I WAS': 1, 'WAS LOOKING': 1, 'LOOKING FOR': 1, 'FOR A': 1, 'A HOBBY': 1, 'HOBBY PROGRAMMING': 1, 'PROGRAMMING PROJECT': 1, 'PROJECT THAT': 1, 'WOULD KEEP': 1, 'KEEP ME': 1, 'ME OCCUPIED': 1, 'OCCUPIED DURING': 1, 'DURING THE': 1, 'THE WEEK': 1, 'WEEK AROUND': 1, 'AROUND CHRISTMAS': 1, 'MY OFFICE': 1, 'BE CLOSED': 1, 'CLOSED BUT': 1, 'BUT I': 1, 'HAD A': 1, 'A HOME': 1, 'HOME COMPUTER': 1, 'COMPUTER AND': 1, 'MUCH ELSE': 1, 'ELSE ON': 1, 'ON MY': 1, 'MY HANDS': 1, 'TO WRITE': 1, 'WRITE AN': 1, 'AN INTERPRETER': 1, 'THE NEW': 1, 'NEW SCRIPTING': 1, 'LANGUAGE I': 1, 'HAD BEEN': 1, 'BEEN THINKING': 1, 'THINKING ABOUT': 1, 'ABOUT LATELY': 1, 'LATELY A': 1, 'A DESCENDANT': 1, 'DESCENDANT OF': 1, 'OF ABC': 1, 'ABC THAT': 1, 'WOULD APPEAL': 1, 'APPEAL TO': 1, 'TO UNIX/C': 1, 'UNIX/C HACKERS': 1, 'I CHOSE': 1, 'CHOSE PYTHON': 1, 'A WORKING': 1, 'WORKING TITLE': 1, 'TITLE FOR': 1, 'PROJECT BEING': 1, 'BEING IN': 1, 'A SLIGHTLY': 1, 'SLIGHTLY IRREVERENT': 1, 'IRREVERENT MOOD': 1, 'MOOD AND': 1, 'A BIG': 1, 'BIG FAN': 1, 'FAN OF': 1, 'OF MONTY': 1, \"MONTY PYTHON'S\": 1, \"PYTHON'S FLYING\": 1, 'FLYING CIRCUS': 1, 'ON OCTOBER': 1, 'OCTOBER AND': 1, 'AND HAD': 1, 'HAD MANY': 1, 'MANY MAJOR': 1, 'FEATURES INCLUDING': 1, 'INCLUDING A': 1, 'COLLECTOR AND': 1, 'AND SUPPORT': 1, 'FOR UNICODE': 1, 'WITH THIS': 1, 'THIS RELEASE': 1, 'RELEASE THE': 1, 'DEVELOPMENT PROCESS': 1, 'PROCESS BECAME': 1, 'BECAME MORE': 1, 'MORE TRANSPARENT': 1, 'TRANSPARENT AND': 1, 'AND COMMUNITY-BACKED': 1, 'INITIALLY CALLED': 1, 'CALLED PYTHON': 1, 'OR PY': 1, 'PY WAS': 1, 'DECEMBER AFTER': 1, 'A LONG': 1, 'LONG TESTING': 1, 'TESTING PERIOD': 1, 'MAJOR REVISION': 1, 'REVISION OF': 1, 'NOT BACKWARD-COMPATIBLE': 1, 'BACKWARD-COMPATIBLE WITH': 1, 'WITH PREVIOUS': 1, 'PREVIOUS VERSIONS': 1, 'HOWEVER MANY': 1, 'ITS MAJOR': 1, 'MAJOR FEATURES': 1, 'FEATURES HAVE': 1, 'BEEN BACKPORTED': 1, 'BACKPORTED TO': 1, 'THE BACKWARD-COMPATIBLE': 1, 'BACKWARD-COMPATIBLE PYTHON': 1, 'VERSION SERIES': 1, 'END-OF-LIFE DATE': 1, 'DATE A.K.A': 1, 'EOL SUNSET': 1, 'SUNSET DATE': 1, 'DATE WAS': 1, 'WAS INITIALLY': 1, 'INITIALLY SET': 1, 'SET AT': 1, 'AT THEN': 1, 'THEN POSTPONED': 1, 'POSTPONED TO': 1, 'TO OUT': 1, 'OF CONCERN': 1, 'CONCERN THAT': 1, 'THAT A': 1, 'LARGE BODY': 1, 'BODY OF': 1, 'OF EXISTING': 1, 'EXISTING CODE': 1, 'CODE COULD': 1, 'COULD NOT': 1, 'NOT EASILY': 1, 'EASILY BE': 1, 'BE FORWARD-PORTED': 1, 'FORWARD-PORTED TO': 1, 'JANUARY GOOGLE': 1, 'GOOGLE ANNOUNCED': 1, 'ANNOUNCED WORK': 1, 'GO TRANSCOMPILER': 1, 'THE REGISTER': 1, 'REGISTER SPECULATED': 1, 'SPECULATED THAT': 1, 'THAT THIS': 1, 'WAS IN': 1, 'IN RESPONSE': 1, 'RESPONSE TO': 1, 'PLANNED END-OF-LIFE': 1, 'END-OF-LIFE BUT': 1, 'BUT GOOGLE': 1, 'GOOGLE CITED': 1, 'CITED PERFORMANCE': 1, 'PERFORMANCE UNDER': 1, 'UNDER CONCURRENT': 1, 'CONCURRENT WORKLOADS': 1, 'WORKLOADS AS': 1, 'AS THEIR': 1, 'THEIR ONLY': 1, 'ONLY MOTIVATION': 1, 'PHILOSOPHY EDIT': 1, 'A MULTI-PARADIGM': 1, 'MULTI-PARADIGM PROGRAMMING': 1, 'AND STRUCTURED': 1, 'STRUCTURED PROGRAMMING': 1, 'PROGRAMMING ARE': 1, 'ARE FULLY': 1, 'FULLY SUPPORTED': 1, 'SUPPORTED AND': 1, 'AND MANY': 1, 'ITS FEATURES': 1, 'FEATURES SUPPORT': 1, 'SUPPORT FUNCTIONAL': 1, 'AND ASPECT-ORIENTED': 1, 'ASPECT-ORIENTED PROGRAMMING': 1, 'PROGRAMMING INCLUDING': 1, 'INCLUDING BY': 1, 'BY METAPROGRAMMING': 1, 'AND METAOBJECTS': 1, 'METAOBJECTS MAGIC': 1, 'MAGIC METHODS': 1, 'OTHER PARADIGMS': 1, 'PARADIGMS ARE': 1, 'SUPPORTED VIA': 1, 'VIA EXTENSIONS': 1, 'EXTENSIONS INCLUDING': 1, 'INCLUDING DESIGN': 1, 'DESIGN BY': 1, 'BY CONTRACT': 1, 'CONTRACT AND': 1, 'AND LOGIC': 1, 'LOGIC PROGRAMMING': 1, 'USES DYNAMIC': 1, 'A COMBINATION': 1, 'COMBINATION OF': 1, 'OF REFERENCE': 1, 'REFERENCE COUNTING': 1, 'COUNTING AND': 1, 'COLLECTOR FOR': 1, 'FOR MEMORY': 1, 'ALSO FEATURES': 1, 'FEATURES DYNAMIC': 1, 'DYNAMIC NAME': 1, 'NAME RESOLUTION': 1, 'RESOLUTION LATE': 1, 'LATE BINDING': 1, 'BINDING WHICH': 1, 'WHICH BINDS': 1, 'BINDS METHOD': 1, 'AND VARIABLE': 1, 'NAMES DURING': 1, 'DURING PROGRAM': 1, 'PROGRAM EXECUTION': 1, 'DESIGN OFFERS': 1, 'OFFERS SOME': 1, 'SOME SUPPORT': 1, 'FOR FUNCTIONAL': 1, 'THE LISP': 1, 'LISP TRADITION': 1, 'HAS FILTER': 1, 'FILTER MAP': 1, 'MAP AND': 1, 'AND REDUCE': 1, 'REDUCE FUNCTIONS': 1, 'FUNCTIONS LIST': 1, 'COMPREHENSIONS DICTIONARIES': 1, 'DICTIONARIES AND': 1, 'AND SETS': 1, 'SETS AND': 1, 'AND GENERATOR': 1, 'LIBRARY HAS': 1, 'HAS TWO': 1, 'TWO MODULES': 1, 'MODULES ITERTOOLS': 1, 'ITERTOOLS AND': 1, 'AND FUNCTOOLS': 1, 'FUNCTOOLS THAT': 1, 'THAT IMPLEMENT': 1, 'IMPLEMENT FUNCTIONAL': 1, 'FUNCTIONAL TOOLS': 1, 'TOOLS BORROWED': 1, 'BORROWED FROM': 1, 'FROM HASKELL': 1, 'HASKELL AND': 1, 'AND STANDARD': 1, 'STANDARD ML': 1, \"LANGUAGE'S CORE\": 1, 'CORE PHILOSOPHY': 1, 'PHILOSOPHY IS': 1, 'IS SUMMARIZED': 1, 'SUMMARIZED IN': 1, 'DOCUMENT THE': 1, 'PYTHON PEP': 1, 'PEP WHICH': 1, 'WHICH INCLUDES': 1, 'INCLUDES APHORISMS': 1, 'APHORISMS SUCH': 1, 'AS BEAUTIFUL': 1, 'BEAUTIFUL IS': 1, 'THAN UGLY': 1, 'UGLY EXPLICIT': 1, 'EXPLICIT IS': 1, 'THAN IMPLICIT': 1, 'IMPLICIT SIMPLE': 1, 'SIMPLE IS': 1, 'THAN COMPLEX': 1, 'COMPLEX COMPLEX': 1, 'COMPLEX IS': 1, 'THAN COMPLICATED': 1, 'COMPLICATED READABILITY': 1, 'READABILITY COUNTS': 1, 'COUNTS RATHER': 1, 'THAN HAVING': 1, 'HAVING ALL': 1, 'ITS FUNCTIONALITY': 1, 'FUNCTIONALITY BUILT': 1, 'BUILT INTO': 1, 'INTO ITS': 1, 'CORE PYTHON': 1, 'DESIGNED TO': 1, 'BE HIGHLY': 1, 'HIGHLY EXTENSIBLE': 1, 'THIS COMPACT': 1, 'COMPACT MODULARITY': 1, 'MODULARITY HAS': 1, 'HAS MADE': 1, 'MADE IT': 1, 'IT PARTICULARLY': 1, 'PARTICULARLY POPULAR': 1, 'POPULAR AS': 1, 'A MEANS': 1, 'MEANS OF': 1, 'OF ADDING': 1, 'ADDING PROGRAMMABLE': 1, 'PROGRAMMABLE INTERFACES': 1, 'INTERFACES TO': 1, 'TO EXISTING': 1, 'EXISTING APPLICATIONS': 1, \"VAN ROSSUM'S\": 1, \"ROSSUM'S VISION\": 1, 'VISION OF': 1, 'A SMALL': 1, 'SMALL CORE': 1, 'CORE LANGUAGE': 1, 'AND EASILY': 1, 'EASILY EXTENSIBLE': 1, 'EXTENSIBLE INTERPRETER': 1, 'INTERPRETER STEMMED': 1, 'STEMMED FROM': 1, 'FROM HIS': 1, 'HIS FRUSTRATIONS': 1, 'FRUSTRATIONS WITH': 1, 'WITH ABC': 1, 'ABC WHICH': 1, 'WHICH ESPOUSED': 1, 'ESPOUSED THE': 1, 'THE OPPOSITE': 1, 'OPPOSITE APPROACH': 1, 'WHILE OFFERING': 1, 'OFFERING CHOICE': 1, 'CHOICE IN': 1, 'IN CODING': 1, 'CODING METHODOLOGY': 1, 'METHODOLOGY THE': 1, 'PYTHON PHILOSOPHY': 1, 'REJECTS EXUBERANT': 1, 'EXUBERANT SYNTAX': 1, 'SYNTAX SUCH': 1, 'AS THAT': 1, 'THAT OF': 1, 'OF PERL': 1, 'PERL IN': 1, 'A SIMPLER': 1, 'SIMPLER LESS-CLUTTERED': 1, 'LESS-CLUTTERED GRAMMAR': 1, 'AS ALEX': 1, 'ALEX MARTELLI': 1, 'MARTELLI PUT': 1, 'PUT IT': 1, 'IT TO': 1, 'DESCRIBE SOMETHING': 1, 'SOMETHING AS': 1, 'AS CLEVER': 1, 'CLEVER IS': 1, 'NOT CONSIDERED': 1, 'CONSIDERED A': 1, 'A COMPLIMENT': 1, 'COMPLIMENT IN': 1, \"CULTURE PYTHON'S\": 1, \"PYTHON'S PHILOSOPHY\": 1, 'REJECTS THE': 1, 'THE PERL': 1, 'PERL THERE': 1, 'IS MORE': 1, 'MORE THAN': 1, 'THAN ONE': 1, 'ONE WAY': 1, 'IT APPROACH': 1, 'APPROACH TO': 1, 'TO LANGUAGE': 1, 'DESIGN IN': 1, 'OF THERE': 1, 'THERE SHOULD': 1, 'BE ONEAND': 1, 'ONEAND PREFERABLY': 1, 'PREFERABLY ONLY': 1, 'ONLY ONEOBVIOUS': 1, 'ONEOBVIOUS WAY': 1, 'DEVELOPERS STRIVE': 1, 'STRIVE TO': 1, 'TO AVOID': 1, 'AVOID PREMATURE': 1, 'PREMATURE OPTIMIZATION': 1, 'OPTIMIZATION AND': 1, 'AND REJECT': 1, 'REJECT PATCHES': 1, 'PATCHES TO': 1, 'TO NON-CRITICAL': 1, 'NON-CRITICAL PARTS': 1, 'WOULD OFFER': 1, 'OFFER MARGINAL': 1, 'MARGINAL INCREASES': 1, 'INCREASES IN': 1, 'IN SPEED': 1, 'SPEED AT': 1, 'AT THE': 1, 'THE COST': 1, 'COST OF': 1, 'OF CLARITY': 1, 'WHEN SPEED': 1, 'SPEED IS': 1, 'IS IMPORTANT': 1, 'IMPORTANT A': 1, 'PYTHON PROGRAMMER': 1, 'PROGRAMMER CAN': 1, 'CAN MOVE': 1, 'MOVE TIME-CRITICAL': 1, 'TIME-CRITICAL FUNCTIONS': 1, 'FUNCTIONS TO': 1, 'TO EXTENSION': 1, 'EXTENSION MODULES': 1, 'MODULES WRITTEN': 1, 'IN LANGUAGES': 1, 'AS OR': 1, 'OR USE': 1, 'USE PYPY': 1, 'CYTHON IS': 1, 'ALSO AVAILABLE': 1, 'AVAILABLE WHICH': 1, 'WHICH TRANSLATES': 1, 'TRANSLATES A': 1, 'PYTHON SCRIPT': 1, 'SCRIPT INTO': 1, 'INTO AND': 1, 'AND MAKES': 1, 'MAKES DIRECT': 1, 'DIRECT C-LEVEL': 1, 'C-LEVEL API': 1, 'API CALLS': 1, 'CALLS INTO': 1, 'INTO THE': 1, 'AN IMPORTANT': 1, 'IMPORTANT GOAL': 1, 'GOAL OF': 1, 'DEVELOPERS IS': 1, 'IS KEEPING': 1, 'KEEPING IT': 1, 'IT FUN': 1, 'FUN TO': 1, \"LANGUAGE'S NAMEA\": 1, 'NAMEA TRIBUTE': 1, 'TRIBUTE TO': 1, 'AND IN': 1, 'IN OCCASIONALLY': 1, 'OCCASIONALLY PLAYFUL': 1, 'PLAYFUL APPROACHES': 1, 'APPROACHES TO': 1, 'TO TUTORIALS': 1, 'TUTORIALS AND': 1, 'AND REFERENCE': 1, 'REFERENCE MATERIALS': 1, 'MATERIALS SUCH': 1, 'AS EXAMPLES': 1, 'EXAMPLES THAT': 1, 'THAT REFER': 1, 'REFER TO': 1, 'TO SPAM': 1, 'EGGS FROM': 1, 'A FAMOUS': 1, 'FAMOUS MONTY': 1, 'PYTHON SKETCH': 1, 'SKETCH INSTEAD': 1, 'STANDARD FOO': 1, 'COMMON NEOLOGISM': 1, 'NEOLOGISM IN': 1, 'COMMUNITY IS': 1, 'PYTHONIC WHICH': 1, 'CAN HAVE': 1, 'OF MEANINGS': 1, 'MEANINGS RELATED': 1, 'PROGRAM STYLE': 1, 'THAT CODE': 1, 'PYTHONIC IS': 1, 'IT USES': 1, 'PYTHON IDIOMS': 1, 'IDIOMS WELL': 1, 'WELL THAT': 1, 'IS NATURAL': 1, 'NATURAL OR': 1, 'OR SHOWS': 1, 'SHOWS FLUENCY': 1, 'FLUENCY IN': 1, 'IT CONFORMS': 1, 'CONFORMS WITH': 1, \"WITH PYTHON'S\": 1, \"PYTHON'S MINIMALIST\": 1, 'MINIMALIST PHILOSOPHY': 1, 'PHILOSOPHY AND': 1, 'AND EMPHASIS': 1, 'EMPHASIS ON': 1, 'ON READABILITY': 1, 'CONTRAST CODE': 1, 'CODE THAT': 1, 'IS DIFFICULT': 1, 'DIFFICULT TO': 1, 'TO UNDERSTAND': 1, 'UNDERSTAND OR': 1, 'OR READS': 1, 'READS LIKE': 1, 'ROUGH TRANSCRIPTION': 1, 'TRANSCRIPTION FROM': 1, 'FROM ANOTHER': 1, 'ANOTHER PROGRAMMING': 1, 'IS CALLED': 1, 'CALLED UNPYTHONIC': 1, 'USERS AND': 1, 'AND ADMIRERS': 1, 'ADMIRERS OF': 1, 'PYTHON ESPECIALLY': 1, 'ESPECIALLY THOSE': 1, 'THOSE CONSIDERED': 1, 'CONSIDERED KNOWLEDGEABLE': 1, 'KNOWLEDGEABLE OR': 1, 'OR EXPERIENCED': 1, 'EXPERIENCED ARE': 1, 'OFTEN REFERRED': 1, 'REFERRED TO': 1, 'TO AS': 1, 'AS PYTHONISTS': 1, 'PYTHONISTS PYTHONISTAS': 1, 'PYTHONISTAS AND': 1, 'AND PYTHONEERS': 1, 'SEMANTICS EDIT': 1, 'SEMANTICS PYTHON': 1, 'IS MEANT': 1, 'MEANT TO': 1, 'BE AN': 1, 'AN EASILY': 1, 'EASILY READABLE': 1, 'READABLE LANGUAGE': 1, 'ITS FORMATTING': 1, 'FORMATTING IS': 1, 'IS VISUALLY': 1, 'VISUALLY UNCLUTTERED': 1, 'UNCLUTTERED AND': 1, 'IT OFTEN': 1, 'OFTEN USES': 1, 'USES ENGLISH': 1, 'ENGLISH KEYWORDS': 1, 'KEYWORDS WHERE': 1, 'WHERE OTHER': 1, 'LANGUAGES USE': 1, 'USE PUNCTUATION': 1, 'UNLIKE MANY': 1, 'LANGUAGES IT': 1, 'USE CURLY': 1, 'CURLY BRACKETS': 1, 'BRACKETS TO': 1, 'BLOCKS AND': 1, 'AND SEMICOLONS': 1, 'SEMICOLONS AFTER': 1, 'AFTER STATEMENTS': 1, 'STATEMENTS ARE': 1, 'HAS FEWER': 1, 'FEWER SYNTACTIC': 1, 'SYNTACTIC EXCEPTIONS': 1, 'EXCEPTIONS AND': 1, 'AND SPECIAL': 1, 'SPECIAL CASES': 1, 'CASES THAN': 1, 'OR PASCAL': 1, 'INDENTATION EDIT': 1, 'SEMANTICS INDENTATION': 1, 'INDENTATION PYTHON': 1, 'USES WHITESPACE': 1, 'WHITESPACE INDENTATION': 1, 'INDENTATION RATHER': 1, 'THAN CURLY': 1, 'CURLY BRACES': 1, 'BRACES OR': 1, 'OR KEYWORDS': 1, 'KEYWORDS TO': 1, 'AN INCREASE': 1, 'INCREASE IN': 1, 'INDENTATION COMES': 1, 'COMES AFTER': 1, 'AFTER CERTAIN': 1, 'CERTAIN STATEMENTS': 1, 'STATEMENTS A': 1, 'A DECREASE': 1, 'DECREASE IN': 1, 'INDENTATION SIGNIFIES': 1, 'SIGNIFIES THE': 1, 'END OF': 1, 'CURRENT BLOCK': 1, 'THIS FEATURE': 1, 'FEATURE IS': 1, 'ALSO SOMETIMES': 1, 'SOMETIMES TERMED': 1, 'TERMED THE': 1, 'THE OFF-SIDE': 1, 'FLOW EDIT': 1, \"PYTHON'S STATEMENTS\": 1, 'STATEMENTS INCLUDE': 1, 'INCLUDE AMONG': 1, 'AMONG OTHERS': 1, 'OTHERS THE': 1, 'THE ASSIGNMENT': 1, 'STATEMENT TOKEN': 1, 'TOKEN THE': 1, 'EQUALS SIGN': 1, 'THIS OPERATES': 1, 'OPERATES DIFFERENTLY': 1, 'DIFFERENTLY THAN': 1, 'THAN IN': 1, 'IN TRADITIONAL': 1, 'TRADITIONAL IMPERATIVE': 1, 'IMPERATIVE PROGRAMMING': 1, 'LANGUAGES AND': 1, 'AND THIS': 1, 'THIS FUNDAMENTAL': 1, 'FUNDAMENTAL MECHANISM': 1, 'MECHANISM INCLUDING': 1, \"PYTHON'S VERSION\": 1, 'VERSION OF': 1, 'OF VARIABLES': 1, 'VARIABLES ILLUMINATES': 1, 'ILLUMINATES MANY': 1, 'OTHER FEATURES': 1, 'FEATURES OF': 1, 'ASSIGNMENT IN': 1, 'E.G TRANSLATES': 1, 'TO TYPED': 1, 'TYPED VARIABLE': 1, 'NUMERIC VALUE': 1, 'THE RIGHT-HAND': 1, 'RIGHT-HAND VALUE': 1, 'VALUE IS': 1, 'IS COPIED': 1, 'COPIED INTO': 1, 'AN ALLOCATED': 1, 'ALLOCATED STORAGE': 1, 'LOCATION FOR': 1, 'THE LEFT-HAND': 1, 'LEFT-HAND VARIABLE': 1, 'SYMBOLIC ADDRESS': 1, 'MEMORY ALLOCATED': 1, 'ALLOCATED TO': 1, 'VARIABLE IS': 1, 'IS LARGE': 1, 'LARGE ENOUGH': 1, 'ENOUGH POTENTIALLY': 1, 'POTENTIALLY QUITE': 1, 'QUITE LARGE': 1, 'LARGE FOR': 1, 'THE DECLARED': 1, 'DECLARED TYPE': 1, 'THE SIMPLEST': 1, 'SIMPLEST CASE': 1, 'PYTHON ASSIGNMENT': 1, 'ASSIGNMENT USING': 1, 'SAME EXAMPLE': 1, 'EXAMPLE TRANSLATES': 1, 'TO GENERIC': 1, 'GENERIC NAME': 1, 'A REFERENCE': 1, 'REFERENCE TO': 1, 'A SEPARATE': 1, 'SEPARATE DYNAMICALLY': 1, 'DYNAMICALLY ALLOCATED': 1, 'ALLOCATED OBJECT': 1, 'OBJECT OF': 1, 'NUMERIC INT': 1, 'INT TYPE': 1, 'OF VALUE': 1, 'VALUE THIS': 1, 'IS TERMED': 1, 'TERMED BINDING': 1, 'BINDING THE': 1, 'THE NAME': 1, 'NAME TO': 1, 'THE OBJECT': 1, \"THE NAME'S\": 1, \"NAME'S STORAGE\": 1, \"LOCATION DOESN'T\": 1, \"DOESN'T CONTAIN\": 1, 'CONTAIN THE': 1, 'THE INDICATED': 1, 'INDICATED VALUE': 1, 'VALUE IT': 1, 'IS IMPROPER': 1, 'IMPROPER TO': 1, 'TO CALL': 1, 'CALL IT': 1, 'IT A': 1, 'NAMES MAY': 1, 'BE SUBSEQUENTLY': 1, 'SUBSEQUENTLY REBOUND': 1, 'REBOUND AT': 1, 'AT ANY': 1, 'ANY TIME': 1, 'TIME TO': 1, 'TO OBJECTS': 1, 'OBJECTS OF': 1, 'OF GREATLY': 1, 'GREATLY VARYING': 1, 'VARYING TYPES': 1, 'TYPES INCLUDING': 1, 'INCLUDING STRINGS': 1, 'STRINGS PROCEDURES': 1, 'PROCEDURES COMPLEX': 1, 'COMPLEX OBJECTS': 1, 'OBJECTS WITH': 1, 'WITH DATA': 1, 'DATA AND': 1, 'METHODS ETC': 1, 'SUCCESSIVE ASSIGNMENTS': 1, 'ASSIGNMENTS OF': 1, 'COMMON VALUE': 1, 'VALUE TO': 1, 'TO MULTIPLE': 1, 'MULTIPLE NAMES': 1, 'NAMES E.G': 1, 'E.G RESULT': 1, 'RESULT IN': 1, 'IN ALLOCATING': 1, 'ALLOCATING STORAGE': 1, 'STORAGE TO': 1, 'TO AT': 1, 'AT MOST': 1, 'MOST THREE': 1, 'NAMES AND': 1, 'AND ONE': 1, 'ONE NUMERIC': 1, 'NUMERIC OBJECT': 1, 'OBJECT TO': 1, 'TO WHICH': 1, 'WHICH ALL': 1, 'ALL THREE': 1, 'NAMES ARE': 1, 'ARE BOUND': 1, 'SINCE A': 1, 'A GENERIC': 1, 'GENERIC REFERENCE': 1, 'REFERENCE HOLDER': 1, 'HOLDER IT': 1, 'IS UNREASONABLE': 1, 'UNREASONABLE TO': 1, 'TO ASSOCIATE': 1, 'ASSOCIATE A': 1, 'A FIXED': 1, 'FIXED DATA': 1, 'TYPE WITH': 1, 'WITH IT': 1, 'HOWEVER AT': 1, 'AT A': 1, 'A GIVEN': 1, 'GIVEN TIME': 1, 'TIME A': 1, 'NAME WILL': 1, 'WILL BE': 1, 'BE BOUND': 1, 'BOUND TO': 1, 'TO SOME': 1, 'SOME OBJECT': 1, 'OBJECT WHICH': 1, 'WHICH WILL': 1, 'WILL HAVE': 1, 'TYPE THUS': 1, 'THUS THERE': 1, 'IS DYNAMIC': 1, 'THE IF': 1, 'IF STATEMENT': 1, 'WHICH CONDITIONALLY': 1, 'CONDITIONALLY EXECUTES': 1, 'CODE ALONG': 1, 'ALONG WITH': 1, 'WITH ELSE': 1, 'ELSE AND': 1, 'AND ELIF': 1, 'ELIF A': 1, 'A CONTRACTION': 1, 'CONTRACTION OF': 1, 'OF ELSE-IF': 1, 'THE FOR': 1, 'FOR STATEMENT': 1, 'WHICH ITERATES': 1, 'ITERATES OVER': 1, 'OVER AN': 1, 'OBJECT CAPTURING': 1, 'CAPTURING EACH': 1, 'ELEMENT TO': 1, 'A LOCAL': 1, 'LOCAL VARIABLE': 1, 'VARIABLE FOR': 1, 'USE BY': 1, 'THE ATTACHED': 1, 'ATTACHED BLOCK': 1, 'THE WHILE': 1, 'WHILE STATEMENT': 1, 'CODE AS': 1, 'AS LONG': 1, 'LONG AS': 1, 'ITS CONDITION': 1, 'CONDITION IS': 1, 'IS TRUE': 1, 'THE TRY': 1, 'TRY STATEMENT': 1, 'WHICH ALLOWS': 1, 'ALLOWS EXCEPTIONS': 1, 'EXCEPTIONS RAISED': 1, 'RAISED IN': 1, 'ITS ATTACHED': 1, 'ATTACHED CODE': 1, 'BLOCK TO': 1, 'BE CAUGHT': 1, 'CAUGHT AND': 1, 'AND HANDLED': 1, 'HANDLED BY': 1, 'BY EXCEPT': 1, 'EXCEPT CLAUSES': 1, 'CLAUSES IT': 1, 'ALSO ENSURES': 1, 'ENSURES THAT': 1, 'THAT CLEAN-UP': 1, 'CLEAN-UP CODE': 1, 'CODE IN': 1, 'A FINALLY': 1, 'FINALLY BLOCK': 1, 'BLOCK WILL': 1, 'WILL ALWAYS': 1, 'ALWAYS BE': 1, 'BE RUN': 1, 'RUN REGARDLESS': 1, 'REGARDLESS OF': 1, 'OF HOW': 1, 'HOW THE': 1, 'BLOCK EXITS': 1, 'CLASS STATEMENT': 1, 'AND ATTACHES': 1, 'ATTACHES ITS': 1, 'ITS LOCAL': 1, 'LOCAL NAMESPACE': 1, 'NAMESPACE TO': 1, 'A CLASS': 1, 'IN OBJECT-ORIENTED': 1, 'THE DEF': 1, 'DEF STATEMENT': 1, 'WHICH DEFINES': 1, 'DEFINES A': 1, 'A FUNCTION': 1, 'THE WITH': 1, 'WITH STATEMENT': 1, 'STATEMENT FROM': 1, 'WHICH ENCLOSES': 1, 'ENCLOSES A': 1, 'A CODE': 1, 'BLOCK WITHIN': 1, 'WITHIN A': 1, 'A CONTEXT': 1, 'CONTEXT MANAGER': 1, 'MANAGER FOR': 1, 'EXAMPLE ACQUIRING': 1, 'ACQUIRING A': 1, 'A LOCK': 1, 'LOCK BEFORE': 1, 'BEFORE THE': 1, 'IS RUN': 1, 'RUN AND': 1, 'AND RELEASING': 1, 'RELEASING THE': 1, 'THE LOCK': 1, 'LOCK AFTERWARDS': 1, 'AFTERWARDS OR': 1, 'OR OPENING': 1, 'OPENING A': 1, 'A FILE': 1, 'FILE AND': 1, 'AND THEN': 1, 'THEN CLOSING': 1, 'CLOSING IT': 1, 'IT ALLOWING': 1, 'ALLOWING RESOURCE': 1, 'RESOURCE ACQUISITION': 1, 'ACQUISITION IS': 1, 'IS INITIALIZATION': 1, 'INITIALIZATION RAII)-LIKE': 1, 'RAII)-LIKE BEHAVIOR': 1, 'THE PASS': 1, 'PASS STATEMENT': 1, 'WHICH SERVES': 1, 'SERVES AS': 1, 'A NOP': 1, 'SYNTACTICALLY NEEDED': 1, 'NEEDED TO': 1, 'CREATE AN': 1, 'AN EMPTY': 1, 'EMPTY CODE': 1, 'THE ASSERT': 1, 'ASSERT STATEMENT': 1, 'STATEMENT USED': 1, 'USED DURING': 1, 'DURING DEBUGGING': 1, 'DEBUGGING TO': 1, 'TO CHECK': 1, 'CHECK FOR': 1, 'FOR CONDITIONS': 1, 'CONDITIONS THAT': 1, 'THAT OUGHT': 1, 'OUGHT TO': 1, 'TO APPLY': 1, 'THE YIELD': 1, 'YIELD STATEMENT': 1, 'WHICH RETURNS': 1, 'A VALUE': 1, 'VALUE FROM': 1, 'YIELD IS': 1, 'ALSO AN': 1, 'AN OPERATOR': 1, 'THIS FORM': 1, 'FORM IS': 1, 'TO IMPLEMENT': 1, 'IMPLEMENT COROUTINES': 1, 'THE IMPORT': 1, 'IMPORT STATEMENT': 1, 'TO IMPORT': 1, 'IMPORT MODULES': 1, 'MODULES WHOSE': 1, 'WHOSE FUNCTIONS': 1, 'FUNCTIONS OR': 1, 'OR VARIABLES': 1, 'VARIABLES CAN': 1, 'CURRENT PROGRAM': 1, 'TWO WAYS': 1, 'WAYS OF': 1, 'OF USING': 1, 'USING IMPORT': 1, 'IMPORT FROM': 1, 'FROM MODULE': 1, 'NAME IMPORT': 1, 'IMPORT OR': 1, 'OR IMPORT': 1, 'IMPORT MODULE': 1, 'PRINT STATEMENT': 1, 'STATEMENT WAS': 1, 'WAS CHANGED': 1, 'CHANGED TO': 1, 'PRINT FUNCTION': 1, 'FUNCTION IN': 1, 'PYTHON DOES': 1, 'NOT SUPPORT': 1, 'SUPPORT TAIL': 1, 'TAIL CALL': 1, 'CALL OPTIMIZATION': 1, 'OPTIMIZATION OR': 1, 'OR FIRST-CLASS': 1, 'FIRST-CLASS CONTINUATIONS': 1, 'CONTINUATIONS AND': 1, 'AND ACCORDING': 1, 'ACCORDING TO': 1, 'TO GUIDO': 1, 'ROSSUM IT': 1, 'IT NEVER': 1, 'NEVER WILL': 1, 'HOWEVER BETTER': 1, 'BETTER SUPPORT': 1, 'FOR COROUTINE-LIKE': 1, 'COROUTINE-LIKE FUNCTIONALITY': 1, 'FUNCTIONALITY IS': 1, 'IS PROVIDED': 1, 'PROVIDED IN': 1, 'BY EXTENDING': 1, \"EXTENDING PYTHON'S\": 1, \"PYTHON'S GENERATORS\": 1, 'GENERATORS WERE': 1, 'WERE LAZY': 1, 'LAZY ITERATORS': 1, 'ITERATORS INFORMATION': 1, 'INFORMATION WAS': 1, 'WAS PASSED': 1, 'PASSED UNIDIRECTIONALLY': 1, 'UNIDIRECTIONALLY OUT': 1, 'THE GENERATOR': 1, 'TO PASS': 1, 'PASS INFORMATION': 1, 'INFORMATION BACK': 1, 'BACK INTO': 1, 'FUNCTION AND': 1, 'INFORMATION CAN': 1, 'BE PASSED': 1, 'PASSED THROUGH': 1, 'THROUGH MULTIPLE': 1, 'MULTIPLE STACK': 1, 'STACK LEVELS': 1, 'EXPRESSIONS EDIT': 1, 'EDIT SOME': 1, 'SOME PYTHON': 1, 'PYTHON EXPRESSIONS': 1, 'EXPRESSIONS ARE': 1, 'ARE SIMILAR': 1, 'JAVA WHILE': 1, 'WHILE SOME': 1, 'SOME ARE': 1, 'NOT ADDITION': 1, 'ADDITION SUBTRACTION': 1, 'SUBTRACTION AND': 1, 'AND MULTIPLICATION': 1, 'MULTIPLICATION ARE': 1, 'ARE THE': 1, 'SAME BUT': 1, 'BUT THE': 1, 'DIVISION DIFFERS': 1, 'TWO TYPES': 1, 'TYPES OF': 1, 'OF DIVISIONS': 1, 'DIVISIONS IN': 1, 'ARE FLOOR': 1, 'AND INTEGER': 1, 'PYTHON ALSO': 1, 'ALSO ADDED': 1, 'ADDED THE': 1, 'IT ENABLES': 1, 'ENABLES SUPPORT': 1, 'SUPPORT OF': 1, 'OF MATRIX': 1, 'MULTIPLICATION WITH': 1, 'PYTHON COMPARES': 1, 'COMPARES BY': 1, 'VALUE VERSUS': 1, 'VERSUS JAVA': 1, 'JAVA WHICH': 1, 'WHICH COMPARES': 1, 'COMPARES NUMERICS': 1, 'NUMERICS BY': 1, 'VALUE AND': 1, 'AND OBJECTS': 1, 'OBJECTS BY': 1, 'VALUE COMPARISONS': 1, 'COMPARISONS IN': 1, 'JAVA ON': 1, 'OBJECTS CAN': 1, 'BE PERFORMED': 1, 'PERFORMED WITH': 1, 'EQUALS METHOD': 1, \"METHOD PYTHON'S\": 1, \"PYTHON'S IS\": 1, 'IS OPERATOR': 1, 'OPERATOR MAY': 1, 'TO COMPARE': 1, 'COMPARE OBJECT': 1, 'OBJECT IDENTITIES': 1, 'IDENTITIES COMPARISON': 1, 'COMPARISON BY': 1, 'PYTHON COMPARISONS': 1, 'COMPARISONS MAY': 1, 'BE CHAINED': 1, 'CHAINED FOR': 1, 'THE WORDS': 1, 'WORDS AND': 1, 'AND OR': 1, 'OR NOT': 1, 'NOT FOR': 1, 'FOR ITS': 1, 'ITS BOOLEAN': 1, 'BOOLEAN OPERATORS': 1, 'OPERATORS RATHER': 1, 'THAN THE': 1, 'SYMBOLIC USED': 1, 'OF EXPRESSION': 1, 'A LIST': 1, 'LIST COMPREHENSION': 1, 'EXTENDED LIST': 1, 'COMPREHENSIONS INTO': 1, 'A MORE': 1, 'MORE GENERAL': 1, 'GENERAL EXPRESSION': 1, 'GENERATOR EXPRESSION': 1, 'ANONYMOUS FUNCTIONS': 1, 'FUNCTIONS ARE': 1, 'ARE IMPLEMENTED': 1, 'IMPLEMENTED USING': 1, 'USING LAMBDA': 1, 'EXPRESSIONS HOWEVER': 1, 'HOWEVER THESE': 1, 'THESE ARE': 1, 'ARE LIMITED': 1, 'LIMITED IN': 1, 'IN THAT': 1, 'THE BODY': 1, 'BODY CAN': 1, 'CAN ONLY': 1, 'ONLY BE': 1, 'BE ONE': 1, 'ONE EXPRESSION': 1, 'EXPRESSIONS IN': 1, 'AS IF': 1, 'IF ELSE': 1, 'ELSE DIFFERENT': 1, 'DIFFERENT IN': 1, 'ORDER OF': 1, 'OF OPERANDS': 1, 'OPERANDS FROM': 1, 'OPERATOR COMMON': 1, 'COMMON TO': 1, 'PYTHON MAKES': 1, 'MAKES A': 1, 'BETWEEN LISTS': 1, 'LISTS AND': 1, 'AND TUPLES': 1, 'LISTS ARE': 1, 'ARE MUTABLE': 1, 'MUTABLE AND': 1, 'AND CANNOT': 1, 'DICTIONARIES DICTIONARY': 1, 'DICTIONARY KEYS': 1, 'BE IMMUTABLE': 1, 'IMMUTABLE IN': 1, 'TUPLES ARE': 1, 'IMMUTABLE AND': 1, 'AND THUS': 1, 'THUS CAN': 1, 'DICTIONARIES PROVIDED': 1, 'PROVIDED ALL': 1, 'ALL ELEMENTS': 1, 'THE TUPLE': 1, 'TUPLE ARE': 1, 'OPERATOR CAN': 1, 'TO CONCATENATE': 1, 'CONCATENATE TWO': 1, 'TWO TUPLES': 1, 'TUPLES WHICH': 1, 'WHICH DOES': 1, 'NOT DIRECTLY': 1, 'DIRECTLY MODIFY': 1, 'MODIFY THEIR': 1, 'THEIR CONTENTS': 1, 'CONTENTS BUT': 1, 'BUT RATHER': 1, 'RATHER PRODUCES': 1, 'PRODUCES A': 1, 'NEW TUPLE': 1, 'TUPLE CONTAINING': 1, 'CONTAINING THE': 1, 'THE ELEMENTS': 1, 'BOTH PROVIDED': 1, 'PROVIDED TUPLES': 1, 'THUS GIVEN': 1, 'GIVEN THE': 1, 'VARIABLE INITIALLY': 1, 'INITIALLY EQUAL': 1, 'EQUAL TO': 1, 'TO EXECUTING': 1, 'EXECUTING FIRST': 1, 'FIRST EVALUATES': 1, 'EVALUATES WHICH': 1, 'WHICH YIELDS': 1, 'YIELDS WHICH': 1, 'THEN ASSIGNED': 1, 'ASSIGNED BACK': 1, 'BACK TO': 1, 'TO THEREBY': 1, 'THEREBY EFFECTIVELY': 1, 'EFFECTIVELY MODIFYING': 1, 'MODIFYING THE': 1, 'THE CONTENTS': 1, 'CONTENTS OF': 1, 'OF WHILE': 1, 'WHILE CONFORMING': 1, 'CONFORMING TO': 1, 'THE IMMUTABLE': 1, 'IMMUTABLE NATURE': 1, 'OF TUPLE': 1, 'TUPLE OBJECTS': 1, 'PARENTHESES ARE': 1, 'OPTIONAL FOR': 1, 'FOR TUPLES': 1, 'TUPLES IN': 1, 'IN UNAMBIGUOUS': 1, 'UNAMBIGUOUS CONTEXTS': 1, 'FEATURES SEQUENCE': 1, 'SEQUENCE UNPACKING': 1, 'UNPACKING WHERE': 1, 'WHERE MULTIPLE': 1, 'MULTIPLE EXPRESSIONS': 1, 'EXPRESSIONS EACH': 1, 'EACH EVALUATING': 1, 'EVALUATING TO': 1, 'TO ANYTHING': 1, 'ANYTHING THAT': 1, 'THAT CAN': 1, 'BE ASSIGNED': 1, 'ASSIGNED TO': 1, 'VARIABLE A': 1, 'A WRITABLE': 1, 'WRITABLE PROPERTY': 1, 'PROPERTY ETC': 1, 'ETC ARE': 1, 'ARE ASSOCIATED': 1, 'ASSOCIATED IN': 1, 'THE IDENTICAL': 1, 'IDENTICAL MANNER': 1, 'MANNER TO': 1, 'TO THAT': 1, 'THAT FORMING': 1, 'FORMING TUPLE': 1, 'TUPLE LITERALS': 1, 'LITERALS AND': 1, 'AND AS': 1, 'A WHOLE': 1, 'WHOLE ARE': 1, 'ARE PUT': 1, 'PUT ON': 1, 'LEFT HAND': 1, 'SIGN IN': 1, 'THE STATEMENT': 1, 'STATEMENT EXPECTS': 1, 'EXPECTS AN': 1, 'OBJECT ON': 1, 'RIGHT HAND': 1, 'SIGN THAT': 1, 'THAT PRODUCES': 1, 'PRODUCES THE': 1, 'SAME NUMBER': 1, 'OF VALUES': 1, 'VALUES AS': 1, 'THE PROVIDED': 1, 'PROVIDED WRITABLE': 1, 'WRITABLE EXPRESSIONS': 1, 'EXPRESSIONS WHEN': 1, 'WHEN ITERATED': 1, 'ITERATED THROUGH': 1, 'THROUGH AND': 1, 'AND WILL': 1, 'WILL ITERATE': 1, 'ITERATE THROUGH': 1, 'THROUGH IT': 1, 'IT ASSIGNING': 1, 'ASSIGNING EACH': 1, 'EACH OF': 1, 'THE PRODUCED': 1, 'PRODUCED VALUES': 1, 'VALUES TO': 1, 'THE CORRESPONDING': 1, 'CORRESPONDING EXPRESSION': 1, 'EXPRESSION ON': 1, 'CITATION NEEDED': 1, 'NEEDED PYTHON': 1, 'STRING FORMAT': 1, 'FORMAT OPERATOR': 1, 'THIS FUNCTIONS': 1, 'FUNCTIONS ANALOGOUS': 1, 'ANALOGOUS TO': 1, 'TO PRINTF': 1, 'PRINTF FORMAT': 1, 'FORMAT STRINGS': 1, 'STRINGS IN': 1, 'SPAM=%S EGGS=%D': 1, 'EGGS=%D BLAH': 1, 'BLAH EVALUATES': 1, 'EVALUATES TO': 1, 'TO SPAM=BLAH': 1, 'SPAM=BLAH EGGS': 1, 'WAS SUPPLEMENTED': 1, 'SUPPLEMENTED BY': 1, 'THE FORMAT': 1, 'FORMAT METHOD': 1, 'METHOD OF': 1, 'THE STR': 1, 'STR CLASS': 1, 'CLASS E.G': 1, 'SPAM EGGS': 1, 'EGGS FORMAT(\"BLAH': 1, 'FORMAT(\"BLAH PYTHON': 1, 'ADDED F-STRINGS': 1, 'F-STRINGS F\\'SPAM={\"BLAH': 1, 'F\\'SPAM={\"BLAH EGGS': 1, 'HAS VARIOUS': 1, 'VARIOUS KINDS': 1, 'LITERALS STRINGS': 1, 'STRINGS DELIMITED': 1, 'DELIMITED BY': 1, 'BY SINGLE': 1, 'UNLIKE IN': 1, 'IN UNIX': 1, 'UNIX SHELLS': 1, 'AND PERL-INFLUENCED': 1, 'PERL-INFLUENCED LANGUAGES': 1, 'LANGUAGES SINGLE': 1, 'SINGLE QUOTE': 1, 'MARKS AND': 1, 'AND DOUBLE': 1, 'MARKS FUNCTION': 1, 'FUNCTION IDENTICALLY': 1, 'STRING USE': 1, 'THE BACKSLASH': 1, 'BACKSLASH AS': 1, 'AN ESCAPE': 1, 'ESCAPE CHARACTER': 1, 'INTERPOLATION BECAME': 1, 'BECAME AVAILABLE': 1, 'AVAILABLE IN': 1, 'AS FORMATTED': 1, 'FORMATTED STRING': 1, 'TRIPLE-QUOTED STRINGS': 1, 'STRINGS WHICH': 1, 'WHICH BEGIN': 1, 'BEGIN AND': 1, 'AND END': 1, 'END WITH': 1, 'A SERIES': 1, 'SERIES OF': 1, 'OF THREE': 1, 'THREE SINGLE': 1, 'THEY MAY': 1, 'MAY SPAN': 1, 'SPAN MULTIPLE': 1, 'LINES AND': 1, 'AND FUNCTION': 1, 'FUNCTION LIKE': 1, 'LIKE HERE': 1, 'HERE DOCUMENTS': 1, 'DOCUMENTS IN': 1, 'IN SHELLS': 1, 'AND RUBY': 1, 'RAW STRING': 1, 'STRING VARIETIES': 1, 'VARIETIES DENOTED': 1, 'DENOTED BY': 1, 'BY PREFIXING': 1, 'PREFIXING THE': 1, 'THE STRING': 1, 'STRING LITERAL': 1, 'LITERAL WITH': 1, 'WITH AN': 1, 'ESCAPE SEQUENCES': 1, 'SEQUENCES ARE': 1, 'NOT INTERPRETED': 1, 'INTERPRETED HENCE': 1, 'HENCE RAW': 1, 'RAW STRINGS': 1, 'STRINGS ARE': 1, 'ARE USEFUL': 1, 'USEFUL WHERE': 1, 'WHERE LITERAL': 1, 'LITERAL BACKSLASHES': 1, 'BACKSLASHES ARE': 1, 'ARE COMMON': 1, 'COMMON SUCH': 1, 'AS REGULAR': 1, 'AND WINDOWS-STYLE': 1, 'WINDOWS-STYLE PATHS': 1, 'COMPARE QUOTING': 1, 'QUOTING IN': 1, 'HAS ARRAY': 1, 'ARRAY INDEX': 1, 'INDEX AND': 1, 'AND ARRAY': 1, 'ARRAY SLICING': 1, 'SLICING EXPRESSIONS': 1, 'EXPRESSIONS ON': 1, 'ON LISTS': 1, 'LISTS DENOTED': 1, 'DENOTED AS': 1, 'A KEY': 1, 'KEY A': 1, 'A START:STOP': 1, 'START:STOP OR': 1, 'A START:STOP:STEP': 1, 'ARE ZERO-BASED': 1, 'ZERO-BASED AND': 1, 'NEGATIVE INDEXES': 1, 'ARE RELATIVE': 1, 'RELATIVE TO': 1, 'SLICES TAKE': 1, 'TAKE ELEMENTS': 1, 'ELEMENTS FROM': 1, 'THE START': 1, 'START INDEX': 1, 'INDEX UP': 1, 'UP TO': 1, 'TO BUT': 1, 'BUT NOT': 1, 'NOT INCLUDING': 1, 'THE STOP': 1, 'STOP INDEX': 1, 'THIRD SLICE': 1, 'SLICE PARAMETER': 1, 'PARAMETER CALLED': 1, 'CALLED STEP': 1, 'STEP OR': 1, 'OR STRIDE': 1, 'STRIDE ALLOWS': 1, 'ALLOWS ELEMENTS': 1, 'ELEMENTS TO': 1, 'BE SKIPPED': 1, 'SKIPPED AND': 1, 'AND REVERSED': 1, 'SLICE INDEXES': 1, 'INDEXES MAY': 1, 'BE OMITTED': 1, 'OMITTED FOR': 1, 'A RETURNS': 1, 'THE ENTIRE': 1, 'ENTIRE LIST': 1, 'ELEMENT OF': 1, 'A SLICE': 1, 'SLICE IS': 1, 'A SHALLOW': 1, 'SHALLOW COPY': 1, 'BETWEEN EXPRESSIONS': 1, 'AND STATEMENTS': 1, 'STATEMENTS IS': 1, 'IS RIGIDLY': 1, 'RIGIDLY ENFORCED': 1, 'ENFORCED IN': 1, 'AS COMMON': 1, 'COMMON LISP': 1, 'LISP SCHEME': 1, 'SCHEME OR': 1, 'THIS LEADS': 1, 'LEADS TO': 1, 'TO DUPLICATING': 1, 'DUPLICATING SOME': 1, 'SOME FUNCTIONALITY': 1, 'EXAMPLE LIST': 1, 'COMPREHENSIONS VS': 1, 'FOR-LOOPS CONDITIONAL': 1, 'EXPRESSIONS VS': 1, 'IF BLOCKS': 1, 'BLOCKS THE': 1, 'THE EVAL': 1, 'EVAL VS': 1, 'EXEC BUILT-IN': 1, 'FUNCTIONS IN': 1, 'PYTHON EXEC': 1, 'EXEC IS': 1, 'A STATEMENT': 1, 'STATEMENT THE': 1, 'THE FORMER': 1, 'FORMER IS': 1, 'FOR EXPRESSIONS': 1, 'EXPRESSIONS THE': 1, 'LATTER IS': 1, 'FOR STATEMENTS': 1, 'STATEMENTS CANNOT': 1, 'A PART': 1, 'OF AN': 1, 'AN EXPRESSION': 1, 'EXPRESSION SO': 1, 'SO LIST': 1, 'LIST AND': 1, 'OTHER COMPREHENSIONS': 1, 'COMPREHENSIONS OR': 1, 'OR LAMBDA': 1, 'EXPRESSIONS ALL': 1, 'ALL BEING': 1, 'BEING EXPRESSIONS': 1, 'EXPRESSIONS CANNOT': 1, 'CANNOT CONTAIN': 1, 'CONTAIN STATEMENTS': 1, 'A PARTICULAR': 1, 'PARTICULAR CASE': 1, 'IS THAT': 1, 'THAT AN': 1, 'STATEMENT SUCH': 1, 'A CANNOT': 1, 'CANNOT FORM': 1, 'FORM PART': 1, 'THE CONDITIONAL': 1, 'CONDITIONAL EXPRESSION': 1, 'EXPRESSION OF': 1, 'A CONDITIONAL': 1, 'CONDITIONAL STATEMENT': 1, 'THIS HAS': 1, 'THE ADVANTAGE': 1, 'OF AVOIDING': 1, 'AVOIDING A': 1, 'A CLASSIC': 1, 'CLASSIC ERROR': 1, 'ERROR OF': 1, 'OF MISTAKING': 1, 'MISTAKING AN': 1, 'ASSIGNMENT OPERATOR': 1, 'AN EQUALITY': 1, 'EQUALITY OPERATOR': 1, 'IN CONDITIONS': 1, 'CONDITIONS IF': 1, 'SYNTACTICALLY VALID': 1, 'VALID BUT': 1, 'BUT PROBABLY': 1, 'PROBABLY UNINTENDED': 1, 'UNINTENDED CODE': 1, 'CODE BUT': 1, 'BUT IF': 1, 'SYNTAX ERROR': 1, 'ERROR IN': 1, 'METHODS EDIT': 1, 'EDIT METHODS': 1, 'METHODS ON': 1, 'OBJECTS ARE': 1, 'ARE FUNCTIONS': 1, 'FUNCTIONS ATTACHED': 1, 'ATTACHED TO': 1, \"THE OBJECT'S\": 1, \"OBJECT'S CLASS\": 1, 'SYNTAX INSTANCE.METHOD(ARGUMENT': 1, 'INSTANCE.METHOD(ARGUMENT IS': 1, 'FOR NORMAL': 1, 'NORMAL METHODS': 1, 'METHODS AND': 1, 'AND FUNCTIONS': 1, 'FUNCTIONS SYNTACTIC': 1, 'SYNTACTIC SUGAR': 1, 'SUGAR FOR': 1, 'FOR CLASS.METHOD(INSTANCE': 1, 'CLASS.METHOD(INSTANCE ARGUMENT': 1, 'PYTHON METHODS': 1, 'METHODS HAVE': 1, 'AN EXPLICIT': 1, 'EXPLICIT SELF': 1, 'SELF PARAMETER': 1, 'PARAMETER TO': 1, 'TO ACCESS': 1, 'ACCESS INSTANCE': 1, 'INSTANCE DATA': 1, 'DATA IN': 1, 'THE IMPLICIT': 1, 'IMPLICIT SELF': 1, 'SELF OR': 1, 'OR THIS': 1, 'THIS IN': 1, 'IN SOME': 1, 'SOME OTHER': 1, 'OTHER OBJECT-ORIENTED': 1, 'LANGUAGES E.G': 1, 'E.G JAVA': 1, 'JAVA OBJECTIVE-C': 1, 'OBJECTIVE-C OR': 1, 'TYPING EDIT': 1, 'USES DUCK': 1, 'DUCK TYPING': 1, 'HAS TYPED': 1, 'TYPED OBJECTS': 1, 'OBJECTS BUT': 1, 'BUT UNTYPED': 1, 'UNTYPED VARIABLE': 1, 'TYPE CONSTRAINTS': 1, 'CONSTRAINTS ARE': 1, 'CHECKED AT': 1, 'AT COMPILE': 1, 'COMPILE TIME': 1, 'TIME RATHER': 1, 'RATHER OPERATIONS': 1, 'OPERATIONS ON': 1, 'ON AN': 1, 'AN OBJECT': 1, 'OBJECT MAY': 1, 'MAY FAIL': 1, 'FAIL SIGNIFYING': 1, 'SIGNIFYING THAT': 1, 'THE GIVEN': 1, 'GIVEN OBJECT': 1, 'NOT OF': 1, 'A SUITABLE': 1, 'SUITABLE TYPE': 1, 'DESPITE BEING': 1, 'BEING DYNAMICALLY': 1, 'DYNAMICALLY TYPED': 1, 'TYPED PYTHON': 1, 'IS STRONGLY': 1, 'STRONGLY TYPED': 1, 'TYPED FORBIDDING': 1, 'FORBIDDING OPERATIONS': 1, 'OPERATIONS THAT': 1, 'THAT ARE': 1, 'NOT WELL-DEFINED': 1, 'WELL-DEFINED FOR': 1, 'EXAMPLE ADDING': 1, 'ADDING A': 1, 'A NUMBER': 1, 'NUMBER TO': 1, 'STRING RATHER': 1, 'THAN SILENTLY': 1, 'SILENTLY ATTEMPTING': 1, 'ATTEMPTING TO': 1, 'TO MAKE': 1, 'MAKE SENSE': 1, 'SENSE OF': 1, 'OF THEM': 1, 'TO DEFINE': 1, 'DEFINE THEIR': 1, 'THEIR OWN': 1, 'OWN TYPES': 1, 'TYPES USING': 1, 'USING CLASSES': 1, 'CLASSES WHICH': 1, 'WHICH ARE': 1, 'ARE MOST': 1, 'MOST OFTEN': 1, 'FOR OBJECT-ORIENTED': 1, 'NEW INSTANCES': 1, 'ARE CONSTRUCTED': 1, 'CONSTRUCTED BY': 1, 'BY CALLING': 1, 'CALLING THE': 1, 'EXAMPLE SPAMCLASS': 1, 'SPAMCLASS OR': 1, 'OR EGGSCLASS': 1, 'EGGSCLASS AND': 1, 'THE CLASSES': 1, 'THE METACLASS': 1, 'METACLASS TYPE': 1, 'TYPE ITSELF': 1, 'ITSELF AN': 1, 'AN INSTANCE': 1, 'INSTANCE OF': 1, 'OF ITSELF': 1, 'ITSELF ALLOWING': 1, 'ALLOWING METAPROGRAMMING': 1, 'AND REFLECTION': 1, 'BEFORE VERSION': 1, 'PYTHON HAD': 1, 'HAD TWO': 1, 'TWO KINDS': 1, 'CLASSES OLD-STYLE': 1, 'OLD-STYLE AND': 1, 'AND NEW-STYLE': 1, 'BOTH STYLES': 1, 'STYLES IS': 1, 'SAME THE': 1, 'THE DIFFERENCE': 1, 'DIFFERENCE BEING': 1, 'BEING WHETHER': 1, 'WHETHER THE': 1, 'CLASS OBJECT': 1, 'IS INHERITED': 1, 'INHERITED FROM': 1, 'FROM DIRECTLY': 1, 'DIRECTLY OR': 1, 'OR INDIRECTLY': 1, 'INDIRECTLY ALL': 1, 'ALL NEW-STYLE': 1, 'NEW-STYLE CLASSES': 1, 'CLASSES INHERIT': 1, 'INHERIT FROM': 1, 'FROM OBJECT': 1, 'OBJECT AND': 1, 'OF TYPE': 1, 'IN VERSIONS': 1, 'VERSIONS OF': 1, 'PYTHON FROM': 1, 'ONWARDS BOTH': 1, 'CLASSES CAN': 1, 'OLD-STYLE CLASSES': 1, 'CLASSES WERE': 1, 'WERE ELIMINATED': 1, 'ELIMINATED IN': 1, 'THE LONG': 1, 'LONG TERM': 1, 'TERM PLAN': 1, 'PLAN IS': 1, 'TO SUPPORT': 1, 'SUPPORT GRADUAL': 1, 'GRADUAL TYPING': 1, 'LANGUAGE ALLOWS': 1, 'ALLOWS SPECIFYING': 1, 'SPECIFYING STATIC': 1, 'STATIC TYPES': 1, 'TYPES BUT': 1, 'BUT THEY': 1, 'CHECKED IN': 1, 'THE DEFAULT': 1, 'DEFAULT IMPLEMENTATION': 1, 'IMPLEMENTATION CPYTHON': 1, 'AN EXPERIMENTAL': 1, 'EXPERIMENTAL OPTIONAL': 1, 'STATIC TYPE': 1, 'TYPE CHECKER': 1, 'CHECKER NAMED': 1, 'NAMED MYPY': 1, 'MYPY SUPPORTS': 1, 'SUPPORTS COMPILE-TIME': 1, 'COMPILE-TIME TYPE': 1, 'TYPE CHECKING': 1, 'SUMMARY OF': 1, 'PYTHON BUILT-IN': 1, 'TYPES TYPE': 1, 'TYPE MUTABLE': 1, 'MUTABLE DESCRIPTION': 1, 'DESCRIPTION SYNTAX': 1, 'SYNTAX EXAMPLE': 1, 'EXAMPLE BOOL': 1, 'BOOL IMMUTABLE': 1, 'IMMUTABLE BOOLEAN': 1, 'BOOLEAN VALUE': 1, 'VALUE TRUE': 1, 'TRUE FALSE': 1, 'FALSE BYTEARRAY': 1, 'BYTEARRAY MUTABLE': 1, 'MUTABLE SEQUENCE': 1, \"BYTES BYTEARRAY(B'SOME\": 1, \"BYTEARRAY(B'SOME ASCII\": 1, 'ASCII BYTEARRAY(B\"SOME': 1, 'BYTEARRAY(B\"SOME ASCII': 1, 'ASCII BYTEARRAY': 1, 'BYTEARRAY BYTES': 1, 'BYTES IMMUTABLE': 1, 'IMMUTABLE SEQUENCE': 1, \"BYTES B'SOME\": 1, \"B'SOME ASCII\": 1, 'ASCII B\"SOME': 1, 'B\"SOME ASCII': 1, 'ASCII BYTES': 1, 'BYTES COMPLEX': 1, 'COMPLEX IMMUTABLE': 1, 'IMMUTABLE COMPLEX': 1, 'COMPLEX NUMBER': 1, 'NUMBER WITH': 1, 'WITH REAL': 1, 'REAL AND': 1, 'AND IMAGINARY': 1, 'IMAGINARY PARTS': 1, 'DICT MUTABLE': 1, 'MUTABLE ASSOCIATIVE': 1, 'ASSOCIATIVE ARRAY': 1, 'ARRAY OR': 1, 'OR DICTIONARY': 1, 'DICTIONARY OF': 1, 'OF KEY': 1, 'KEY AND': 1, 'AND VALUE': 1, 'VALUE PAIRS': 1, 'PAIRS CAN': 1, 'TYPES KEYS': 1, 'KEYS AND': 1, 'AND VALUES': 1, 'VALUES KEYS': 1, 'A HASHABLE': 1, 'HASHABLE TYPE': 1, 'TYPE KEY': 1, 'FALSE ELLIPSIS': 1, 'ELLIPSIS AN': 1, 'AN ELLIPSIS': 1, 'ELLIPSIS PLACEHOLDER': 1, 'PLACEHOLDER TO': 1, 'AN INDEX': 1, 'INDEX IN': 1, 'IN NUMPY': 1, 'NUMPY ARRAYS': 1, 'FLOAT IMMUTABLE': 1, 'IMMUTABLE FLOATING': 1, 'POINT NUMBER': 1, 'NUMBER SYSTEM-DEFINED': 1, 'SYSTEM-DEFINED PRECISION': 1, 'FROZENSET IMMUTABLE': 1, 'IMMUTABLE UNORDERED': 1, 'HASHABLE FROZENSET': 1, 'TRUE INT': 1, 'INT IMMUTABLE': 1, 'IMMUTABLE INTEGER': 1, 'INTEGER OF': 1, 'OF UNLIMITED': 1, 'UNLIMITED MAGNITUDE': 1, 'MAGNITUDE LIST': 1, 'LIST MUTABLE': 1, 'MUTABLE LIST': 1, 'LIST CAN': 1, 'TRUE SET': 1, 'SET MUTABLE': 1, 'MUTABLE UNORDERED': 1, 'TRUE STR': 1, 'STR IMMUTABLE': 1, 'IMMUTABLE A': 1, 'A CHARACTER': 1, 'CHARACTER STRING': 1, 'STRING SEQUENCE': 1, 'OF UNICODE': 1, 'UNICODE CODEPOINTS': 1, 'CODEPOINTS WIKIPEDIA': 1, 'WIKIPEDIA WIKIPEDIA': 1, 'WIKIPEDIA SPANNING': 1, 'SPANNING MULTIPLE': 1, 'LINES TUPLE': 1, 'TUPLE IMMUTABLE': 1, 'IMMUTABLE CAN': 1, 'STRING TRUE)BUT': 1, 'TRUE)BUT WE': 1, 'CAN APPEND': 1, 'APPEND ELEMENTS': 1, 'ELEMENTS USING': 1, 'USING ADD': 1, \"STRING TRUE).__ADD__(('HI\": 1, \"TRUE).__ADD__(('HI NOW\": 1, 'NOW A': 1, 'A GIVES': 1, 'TRUE HI': 1, 'HI MATHEMATICS': 1, 'MATHEMATICS EDIT': 1, 'THE USUAL': 1, 'USUAL ARITHMETIC': 1, 'ARITHMETIC OPERATORS': 1, 'HAS FOR': 1, 'EXPONENTIATION E.G': 1, 'NEW MATRIX': 1, 'MATRIX MULTIPLY': 1, 'MULTIPLY OPERATOR': 1, 'IS INCLUDED': 1, 'INCLUDED IN': 1, 'IN VERSION': 1, 'ADDITIONALLY IT': 1, 'A UNARY': 1, 'UNARY OPERATOR': 1, 'OPERATOR WHICH': 1, 'WHICH ESSENTIALLY': 1, 'ESSENTIALLY INVERTS': 1, 'INVERTS ALL': 1, 'ALL THE': 1, 'THE BYTES': 1, 'BYTES OF': 1, 'ITS ONE': 1, 'ONE ARGUMENT': 1, 'FOR INTEGERS': 1, 'INTEGERS THIS': 1, 'THIS MEANS': 1, 'MEANS X=-X': 1, 'OTHER OPERATORS': 1, 'OPERATORS INCLUDE': 1, 'INCLUDE BITWISE': 1, 'BITWISE SHIFT': 1, 'SHIFT OPERATORS': 1, 'OPERATORS WHICH': 1, 'LEFT PLACES': 1, 'AND WHICH': 1, 'RIGHT PLACES': 1, 'DIVISION HAS': 1, 'HAS CHANGED': 1, 'CHANGED SIGNIFICANTLY': 1, 'SIGNIFICANTLY OVER': 1, 'OVER TIME': 1, 'TIME PYTHON': 1, 'AND EARLIER': 1, 'EARLIER USE': 1, 'DIVISION BEHAVIOR': 1, 'IS INTEGER': 1, 'DIVISION IF': 1, 'IF BOTH': 1, 'BOTH OPERANDS': 1, 'OPERANDS ARE': 1, 'ARE INTEGERS': 1, 'AND FLOATING-POINT': 1, 'DIVISION OTHERWISE': 1, 'DIVISION ROUNDS': 1, 'ROUNDS TOWARDS': 1, 'TOWARDS E.G': 1, 'CHANGES INTEGER': 1, 'DIVISION TO': 1, 'TO ROUND': 1, 'ROUND TOWARDS': 1, 'INFINITY E.G': 1, 'THE FLOOR': 1, 'IS INTRODUCED': 1, 'ADDING FROM': 1, 'FROM FUTURE': 1, 'FUTURE IMPORT': 1, 'IMPORT DIVISION': 1, 'DIVISION CAUSES': 1, 'A MODULE': 1, 'MODULE TO': 1, 'RULES FOR': 1, 'FOR DIVISION': 1, 'DIVISION SEE': 1, 'SEE NEXT': 1, 'CHANGES TO': 1, 'BE ALWAYS': 1, 'ALWAYS FLOATING-POINT': 1, 'PYTHON TERMS': 1, 'TERMS THE': 1, 'THE PRE': 1, 'IS CLASSIC': 1, 'CLASSIC DIVISION': 1, 'DIVISION THE': 1, 'IS REAL': 1, 'REAL DIVISION': 1, 'IS FLOOR': 1, 'ROUNDING TOWARDS': 1, 'INFINITY THOUGH': 1, 'THOUGH DIFFERENT': 1, 'DIFFERENT FROM': 1, 'FROM MOST': 1, 'MOST LANGUAGES': 1, 'LANGUAGES ADDS': 1, 'ADDS CONSISTENCY': 1, 'FOR INSTANCE': 1, 'INSTANCE IT': 1, 'IT MEANS': 1, 'EQUATION A': 1, 'A B)//B': 1, 'B)//B A//B': 1, 'A//B IS': 1, 'IS ALWAYS': 1, 'ALWAYS TRUE': 1, 'ALSO MEANS': 1, 'EQUATION B*(A//B': 1, 'B*(A//B A%B': 1, 'A%B A': 1, 'IS VALID': 1, 'VALID FOR': 1, 'FOR BOTH': 1, 'BOTH POSITIVE': 1, 'POSITIVE AND': 1, 'NEGATIVE VALUES': 1, 'VALUES OF': 1, 'HOWEVER MAINTAINING': 1, 'MAINTAINING THE': 1, 'THE VALIDITY': 1, 'VALIDITY OF': 1, 'THIS EQUATION': 1, 'EQUATION MEANS': 1, 'THAT WHILE': 1, 'WHILE THE': 1, 'THE RESULT': 1, 'RESULT OF': 1, 'OF A%B': 1, 'A%B IS': 1, 'IS AS': 1, 'AS EXPECTED': 1, 'EXPECTED IN': 1, 'THE HALF-OPEN': 1, 'HALF-OPEN INTERVAL': 1, 'INTERVAL WHERE': 1, 'WHERE IS': 1, 'A POSITIVE': 1, 'POSITIVE INTEGER': 1, 'INTEGER IT': 1, 'HAS TO': 1, 'TO LIE': 1, 'LIE IN': 1, 'THE INTERVAL': 1, 'INTERVAL WHEN': 1, 'WHEN IS': 1, 'IS NEGATIVE': 1, 'PYTHON PROVIDES': 1, 'PROVIDES A': 1, 'A ROUND': 1, 'ROUND FUNCTION': 1, 'FUNCTION FOR': 1, 'FOR ROUNDING': 1, 'ROUNDING A': 1, 'A FLOAT': 1, 'FLOAT TO': 1, 'THE NEAREST': 1, 'NEAREST INTEGER': 1, 'FOR TIE-BREAKING': 1, 'TIE-BREAKING VERSIONS': 1, 'VERSIONS BEFORE': 1, 'BEFORE USE': 1, 'USE ROUND-AWAY-FROM-ZERO': 1, 'ROUND-AWAY-FROM-ZERO ROUND': 1, 'USES ROUND': 1, 'ROUND TO': 1, 'TO EVEN': 1, 'EVEN ROUND': 1, 'IS ROUND': 1, 'ALLOWS BOOLEAN': 1, 'BOOLEAN EXPRESSIONS': 1, 'EXPRESSIONS WITH': 1, 'WITH MULTIPLE': 1, 'MULTIPLE EQUALITY': 1, 'EQUALITY RELATIONS': 1, 'RELATIONS IN': 1, 'A MANNER': 1, 'MANNER THAT': 1, 'IS CONSISTENT': 1, 'CONSISTENT WITH': 1, 'WITH GENERAL': 1, 'GENERAL USE': 1, 'IN MATHEMATICS': 1, 'EXPRESSION A': 1, 'A TESTS': 1, 'TESTS WHETHER': 1, 'WHETHER A': 1, 'THAN AND': 1, 'C-DERIVED LANGUAGES': 1, 'LANGUAGES INTERPRET': 1, 'INTERPRET THIS': 1, 'THIS EXPRESSION': 1, 'EXPRESSION DIFFERENTLY': 1, 'DIFFERENTLY IN': 1, 'EXPRESSION WOULD': 1, 'WOULD FIRST': 1, 'FIRST EVALUATE': 1, 'EVALUATE A': 1, 'A RESULTING': 1, 'RESULTING IN': 1, 'IN OR': 1, 'OR AND': 1, 'AND THAT': 1, 'THAT RESULT': 1, 'RESULT WOULD': 1, 'WOULD THEN': 1, 'BE COMPARED': 1, 'COMPARED WITH': 1, 'PAGENEEDED PYTHON': 1, 'HAS EXTENSIVE': 1, 'EXTENSIVE BUILT-IN': 1, 'BUILT-IN SUPPORT': 1, 'FOR ARBITRARY': 1, 'PRECISION ARITHMETIC': 1, 'INTEGERS ARE': 1, 'ARE TRANSPARENTLY': 1, 'TRANSPARENTLY SWITCHED': 1, 'SWITCHED FROM': 1, 'THE MACHINE-SUPPORTED': 1, 'MACHINE-SUPPORTED MAXIMUM': 1, 'MAXIMUM FIXED-PRECISION': 1, 'FIXED-PRECISION USUALLY': 1, 'USUALLY OR': 1, 'OR BITS': 1, 'BITS BELONGING': 1, 'TYPE INT': 1, 'INT TO': 1, 'PRECISION BELONGING': 1, 'TYPE LONG': 1, 'LONG WHERE': 1, 'WHERE NEEDED': 1, 'LATTER HAVE': 1, 'AN SUFFIX': 1, 'SUFFIX IN': 1, 'IN THEIR': 1, 'THEIR TEXTUAL': 1, 'TEXTUAL REPRESENTATION': 1, 'THE DISTINCTION': 1, 'BETWEEN THE': 1, 'INT AND': 1, 'AND LONG': 1, 'LONG TYPES': 1, 'TYPES WAS': 1, 'WAS ELIMINATED': 1, 'ELIMINATED THIS': 1, 'THIS BEHAVIOR': 1, 'BEHAVIOR IS': 1, 'NOW ENTIRELY': 1, 'ENTIRELY CONTAINED': 1, 'CONTAINED BY': 1, 'INT CLASS': 1, 'THE DECIMAL': 1, 'DECIMAL TYPE/CLASS': 1, 'TYPE/CLASS IN': 1, 'MODULE DECIMAL': 1, 'DECIMAL SINCE': 1, 'PROVIDES DECIMAL': 1, 'DECIMAL FLOATING': 1, 'POINT NUMBERS': 1, 'NUMBERS TO': 1, 'PRECISION AND': 1, 'SEVERAL ROUNDING': 1, 'ROUNDING MODES': 1, 'THE FRACTION': 1, 'FRACTION TYPE': 1, 'TYPE IN': 1, 'MODULE FRACTIONS': 1, 'FRACTIONS SINCE': 1, 'PROVIDES ARBITRARY': 1, 'PRECISION FOR': 1, 'FOR RATIONAL': 1, 'RATIONAL NUMBERS': 1, 'DUE TO': 1, \"TO PYTHON'S\": 1, \"PYTHON'S EXTENSIVE\": 1, 'EXTENSIVE MATHEMATICS': 1, 'MATHEMATICS LIBRARY': 1, 'THE THIRD-PARTY': 1, 'THIRD-PARTY LIBRARY': 1, 'LIBRARY NUMPY': 1, 'NUMPY THAT': 1, 'THAT FURTHER': 1, 'FURTHER EXTENDS': 1, 'EXTENDS THE': 1, 'THE NATIVE': 1, 'NATIVE CAPABILITIES': 1, 'CAPABILITIES IT': 1, 'IS FREQUENTLY': 1, 'FREQUENTLY USED': 1, 'A SCIENTIFIC': 1, 'SCIENTIFIC SCRIPTING': 1, 'LANGUAGE TO': 1, 'TO AID': 1, 'AID IN': 1, 'IN PROBLEMS': 1, 'PROBLEMS SUCH': 1, 'AS NUMERICAL': 1, 'NUMERICAL DATA': 1, 'DATA PROCESSING': 1, 'PROCESSING AND': 1, 'AND MANIPULATION': 1, 'LIBRARIES EDIT': 1, \"PYTHON'S LARGE\": 1, 'LIBRARY COMMONLY': 1, 'COMMONLY CITED': 1, 'CITED AS': 1, 'AS ONE': 1, 'ITS GREATEST': 1, 'GREATEST STRENGTHS': 1, 'STRENGTHS PROVIDES': 1, 'PROVIDES TOOLS': 1, 'TOOLS SUITED': 1, 'SUITED TO': 1, 'MANY TASKS': 1, 'FOR INTERNET-FACING': 1, 'INTERNET-FACING APPLICATIONS': 1, 'APPLICATIONS MANY': 1, 'MANY STANDARD': 1, 'STANDARD FORMATS': 1, 'FORMATS AND': 1, 'AND PROTOCOLS': 1, 'PROTOCOLS SUCH': 1, 'AS MIME': 1, 'MIME AND': 1, 'AND HTTP': 1, 'HTTP ARE': 1, 'INCLUDES MODULES': 1, 'MODULES FOR': 1, 'FOR CREATING': 1, 'CREATING GRAPHICAL': 1, 'INTERFACES CONNECTING': 1, 'CONNECTING TO': 1, 'TO RELATIONAL': 1, 'RELATIONAL DATABASES': 1, 'DATABASES GENERATING': 1, 'GENERATING PSEUDORANDOM': 1, 'PSEUDORANDOM NUMBERS': 1, 'NUMBERS ARITHMETIC': 1, 'ARITHMETIC WITH': 1, 'WITH ARBITRARY': 1, 'PRECISION DECIMALS': 1, 'DECIMALS MANIPULATING': 1, 'MANIPULATING REGULAR': 1, 'AND UNIT': 1, 'UNIT TESTING': 1, 'SOME PARTS': 1, 'LIBRARY ARE': 1, 'ARE COVERED': 1, 'COVERED BY': 1, 'BY SPECIFICATIONS': 1, 'SPECIFICATIONS FOR': 1, 'INTERFACE WSGI': 1, 'WSGI IMPLEMENTATION': 1, 'IMPLEMENTATION WSGIREF': 1, 'WSGIREF FOLLOWS': 1, 'FOLLOWS PEP': 1, 'PEP BUT': 1, 'BUT MOST': 1, 'MOST MODULES': 1, 'ARE SPECIFIED': 1, 'SPECIFIED BY': 1, 'BY THEIR': 1, 'THEIR CODE': 1, 'CODE INTERNAL': 1, 'INTERNAL DOCUMENTATION': 1, 'DOCUMENTATION AND': 1, 'AND TEST': 1, 'TEST SUITES': 1, 'SUITES IF': 1, 'IF SUPPLIED': 1, 'HOWEVER BECAUSE': 1, 'BECAUSE MOST': 1, 'LIBRARY IS': 1, 'IS CROSS-PLATFORM': 1, 'CROSS-PLATFORM PYTHON': 1, 'CODE ONLY': 1, 'FEW MODULES': 1, 'MODULES NEED': 1, 'NEED ALTERING': 1, 'ALTERING OR': 1, 'OR REWRITING': 1, 'REWRITING FOR': 1, 'FOR VARIANT': 1, 'OF SEPTEMBER': 1, 'SEPTEMBER UPDATE': 1, 'UPDATE THE': 1, 'INDEX THE': 1, 'REPOSITORY FOR': 1, 'FOR THIRD-PARTY': 1, 'SOFTWARE CONTAINS': 1, 'CONTAINS OVER': 1, 'OVER PACKAGES': 1, 'PACKAGES WITH': 1, 'OF FUNCTIONALITY': 1, 'FUNCTIONALITY INCLUDING': 1, 'INCLUDING GRAPHICAL': 1, 'INTERFACES WEB': 1, 'FRAMEWORKS MULTIMEDIA': 1, 'MULTIMEDIA DATABASES': 1, 'DATABASES NETWORKING': 1, 'NETWORKING TEST': 1, 'TEST FRAMEWORKS': 1, 'FRAMEWORKS AUTOMATION': 1, 'AUTOMATION WEB': 1, 'WEB SCRAPING': 1, 'SCRAPING DOCUMENTATION': 1, 'DOCUMENTATION SYSTEM': 1, 'SYSTEM ADMINISTRATION': 1, 'ADMINISTRATION SCIENTIFIC': 1, 'COMPUTING TEXT': 1, 'PROCESSING IMAGE': 1, 'IMAGE PROCESSING': 1, 'PROCESSING DEVELOPMENT': 1, 'ENVIRONMENTS EDIT': 1, 'ALSO COMPARISON': 1, 'ENVIRONMENTS PYTHON': 1, 'PYTHON MOST': 1, 'MOST PYTHON': 1, 'IMPLEMENTATIONS INCLUDING': 1, 'INCLUDING CPYTHON': 1, 'CPYTHON INCLUDE': 1, 'INCLUDE A': 1, 'A READEVALPRINT': 1, 'READEVALPRINT LOOP': 1, 'LOOP REPL': 1, 'REPL PERMITTING': 1, 'PERMITTING THEM': 1, 'THEM TO': 1, 'TO FUNCTION': 1, 'FUNCTION AS': 1, 'A COMMAND': 1, 'LINE INTERPRETER': 1, 'THE USER': 1, 'USER ENTERS': 1, 'ENTERS STATEMENTS': 1, 'STATEMENTS SEQUENTIALLY': 1, 'SEQUENTIALLY AND': 1, 'AND RECEIVES': 1, 'RECEIVES RESULTS': 1, 'RESULTS IMMEDIATELY': 1, 'OTHER SHELLS': 1, 'SHELLS INCLUDING': 1, 'INCLUDING IDLE': 1, 'IDLE AND': 1, 'AND IPYTHON': 1, 'IPYTHON ADD': 1, 'ADD FURTHER': 1, 'FURTHER ABILITIES': 1, 'ABILITIES SUCH': 1, 'AS AUTO-COMPLETION': 1, 'AUTO-COMPLETION SESSION': 1, 'SESSION STATE': 1, 'STATE RETENTION': 1, 'RETENTION AND': 1, 'AND SYNTAX': 1, 'SYNTAX HIGHLIGHTING': 1, 'AS WELL': 1, 'WELL AS': 1, 'AS STANDARD': 1, 'STANDARD DESKTOP': 1, 'DESKTOP INTEGRATED': 1, 'ENVIRONMENTS SEE': 1, \"SEE WIKIPEDIA'S\": 1, \"WIKIPEDIA'S PYTHON\": 1, 'IDE ARTICLE': 1, 'ARTICLE THERE': 1, 'ARE WEB': 1, 'WEB BROWSER-BASED': 1, 'BROWSER-BASED IDES': 1, 'IDES SAGEMATH': 1, 'SAGEMATH INTENDED': 1, 'FOR DEVELOPING': 1, 'DEVELOPING SCIENCE': 1, 'AND MATH-RELATED': 1, 'MATH-RELATED PYTHON': 1, 'PROGRAMS PYTHONANYWHERE': 1, 'PYTHONANYWHERE A': 1, 'A BROWSER-BASED': 1, 'BROWSER-BASED IDE': 1, 'IDE AND': 1, 'AND HOSTING': 1, 'HOSTING ENVIRONMENT': 1, 'ENVIRONMENT AND': 1, 'AND CANOPY': 1, 'CANOPY IDE': 1, 'IDE A': 1, 'A COMMERCIAL': 1, 'COMMERCIAL PYTHON': 1, 'IDE EMPHASIZING': 1, 'EMPHASIZING SCIENTIFIC': 1, 'ALSO LIST': 1, 'SOFTWARE PYTHON': 1, 'IMPLEMENTATIONS REFERENCE': 1, 'IMPLEMENTATION EDIT': 1, 'EDIT CPYTHON': 1, 'IN MEETING': 1, 'MEETING THE': 1, 'STANDARD WITH': 1, 'WITH SEVERAL': 1, 'SEVERAL SELECT': 1, 'SELECT FEATURES': 1, 'IT COMPILES': 1, 'PROGRAMS INTO': 1, 'AN INTERMEDIATE': 1, 'INTERMEDIATE BYTECODE': 1, 'BYTECODE WHICH': 1, 'THEN EXECUTED': 1, 'BY ITS': 1, 'ITS VIRTUAL': 1, 'IS DISTRIBUTED': 1, 'DISTRIBUTED WITH': 1, 'LIBRARY WRITTEN': 1, 'OF AND': 1, 'AND NATIVE': 1, 'NATIVE PYTHON': 1, 'IS AVAILABLE': 1, 'MANY PLATFORMS': 1, 'PLATFORMS INCLUDING': 1, 'INCLUDING WINDOWS': 1, 'WINDOWS AND': 1, 'AND MOST': 1, 'MOST MODERN': 1, 'MODERN UNIX-LIKE': 1, 'UNIX-LIKE SYSTEMS': 1, 'PLATFORM PORTABILITY': 1, 'PORTABILITY WAS': 1, 'WAS ONE': 1, 'ITS EARLIEST': 1, 'EARLIEST PRIORITIES': 1, 'EDIT PYPY': 1, 'PYPY IS': 1, 'A FAST': 1, 'FAST COMPLIANT': 1, 'COMPLIANT INTERPRETER': 1, 'ITS JUST-IN-TIME': 1, 'COMPILER BRINGS': 1, 'BRINGS A': 1, 'SIGNIFICANT SPEED': 1, 'SPEED IMPROVEMENT': 1, 'IMPROVEMENT OVER': 1, 'OVER CPYTHON': 1, 'A VERSION': 1, 'IS UNDER': 1, 'UNDER DEVELOPMENT': 1, 'DEVELOPMENT THAT': 1, 'THAT WILL': 1, 'WILL USE': 1, 'USE SOFTWARE': 1, 'SOFTWARE TRANSACTIONAL': 1, 'TRANSACTIONAL MEMORY': 1, 'MEMORY TO': 1, 'TO TAKE': 1, 'TAKE ADVANTAGE': 1, 'OF MULTI-CORE': 1, 'MULTI-CORE PROCESSORS': 1, 'SIGNIFICANT FORK': 1, 'FORK OF': 1, 'THAT IMPLEMENTS': 1, 'IMPLEMENTS MICROTHREADS': 1, 'MICROTHREADS IT': 1, 'MEMORY STACK': 1, 'STACK THUS': 1, 'THUS ALLOWING': 1, 'ALLOWING MASSIVELY': 1, 'MASSIVELY CONCURRENT': 1, 'CONCURRENT PROGRAMS': 1, 'PYPY ALSO': 1, 'A STACKLESS': 1, 'STACKLESS VERSION': 1, 'MICROPYTHON IS': 1, 'PYTHON VARIANT': 1, 'VARIANT OPTIMISED': 1, 'OPTIMISED FOR': 1, 'FOR MICROCONTROLLERS': 1, 'EDIT OTHER': 1, 'OTHER JUST-IN-TIME': 1, 'JUST-IN-TIME PYTHON': 1, 'PYTHON COMPILERS': 1, 'COMPILERS HAVE': 1, 'BEEN DEVELOPED': 1, 'DEVELOPED BUT': 1, 'BUT ARE': 1, 'ARE NOW': 1, 'NOW UNSUPPORTED': 1, 'UNSUPPORTED GOOGLE': 1, 'GOOGLE BEGAN': 1, 'BEGAN A': 1, 'A PROJECT': 1, 'PROJECT NAMED': 1, 'NAMED UNLADEN': 1, 'SWALLOW IN': 1, 'IN WITH': 1, 'THE AIM': 1, 'AIM OF': 1, 'OF SPEEDING': 1, 'SPEEDING UP': 1, 'UP THE': 1, 'INTERPRETER FIVEFOLD': 1, 'FIVEFOLD BY': 1, 'THE LLVM': 1, 'LLVM AND': 1, 'AND OF': 1, 'OF IMPROVING': 1, 'IMPROVING ITS': 1, 'ITS MULTITHREADING': 1, 'MULTITHREADING ABILITY': 1, 'ABILITY TO': 1, 'TO SCALE': 1, 'SCALE TO': 1, 'TO THOUSANDS': 1, 'THOUSANDS OF': 1, 'OF CORES': 1, 'PSYCO IS': 1, 'JUST-IN-TIME SPECIALISING': 1, 'SPECIALISING COMPILER': 1, 'COMPILER THAT': 1, 'THAT INTEGRATES': 1, 'INTEGRATES WITH': 1, 'WITH CPYTHON': 1, 'AND TRANSFORMS': 1, 'TRANSFORMS BYTECODE': 1, 'BYTECODE TO': 1, 'TO MACHINE': 1, 'MACHINE CODE': 1, 'CODE AT': 1, 'AT RUNTIME': 1, 'THE EMITTED': 1, 'EMITTED CODE': 1, 'IS SPECIALISED': 1, 'SPECIALISED FOR': 1, 'FOR CERTAIN': 1, 'CERTAIN DATA': 1, 'DATA TYPES': 1, 'IS FASTER': 1, 'FASTER THAN': 1, 'THAN STANDARD': 1, 'STANDARD PYTHON': 1, 'IN NOKIA': 1, 'NOKIA RELEASED': 1, 'RELEASED A': 1, 'THE SERIES': 1, 'SERIES MOBILE': 1, 'MOBILE PHONES': 1, 'PHONES NAMED': 1, 'NAMED PYS': 1, 'INCLUDES MANY': 1, 'THE MODULES': 1, 'MODULES FROM': 1, 'CPYTHON IMPLEMENTATIONS': 1, 'IMPLEMENTATIONS AND': 1, 'SOME ADDITIONAL': 1, 'ADDITIONAL MODULES': 1, 'MODULES TO': 1, 'TO INTEGRATE': 1, 'INTEGRATE WITH': 1, 'BEEN KEPT': 1, 'KEPT UP-TO-DATE': 1, 'UP-TO-DATE TO': 1, 'ON ALL': 1, 'ALL VARIANTS': 1, 'VARIANTS OF': 1, 'THE PLATFORM': 1, 'PLATFORM AND': 1, 'SEVERAL THIRD-PARTY': 1, 'THIRD-PARTY MODULES': 1, 'NOKIA ALSO': 1, 'ALSO SUPPORTS': 1, 'SUPPORTS PYTHON': 1, 'PYTHON WITH': 1, 'WITH GTK': 1, 'GTK WIDGET': 1, 'WIDGET LIBRARIES': 1, 'LIBRARIES ENABLING': 1, 'ENABLING PROGRAMS': 1, 'PROGRAMS TO': 1, 'BE WRITTEN': 1, 'WRITTEN AND': 1, 'AND RUN': 1, 'THE TARGET': 1, 'TARGET DEVICE': 1, 'LANGUAGES EDIT': 1, 'EDIT THERE': 1, 'ARE SEVERAL': 1, 'SEVERAL COMPILERS': 1, 'COMPILERS TO': 1, 'TO HIGH-LEVEL': 1, 'HIGH-LEVEL OBJECT': 1, 'OBJECT LANGUAGES': 1, 'LANGUAGES WITH': 1, 'WITH EITHER': 1, 'EITHER UNRESTRICTED': 1, 'UNRESTRICTED PYTHON': 1, 'A RESTRICTED': 1, 'RESTRICTED SUBSET': 1, 'SUBSET OF': 1, 'A LANGUAGE': 1, 'LANGUAGE SIMILAR': 1, 'THE SOURCE': 1, 'SOURCE LANGUAGE': 1, 'LANGUAGE JYTHON': 1, 'JYTHON COMPILES': 1, 'COMPILES INTO': 1, 'INTO JAVA': 1, 'JAVA BYTE': 1, 'CODE WHICH': 1, 'CAN THEN': 1, 'BE EXECUTED': 1, 'BY EVERY': 1, 'EVERY JAVA': 1, 'JAVA VIRTUAL': 1, 'MACHINE IMPLEMENTATION': 1, 'THIS ALSO': 1, 'ALSO ENABLES': 1, 'ENABLES THE': 1, 'JAVA CLASS': 1, 'CLASS LIBRARY': 1, 'LIBRARY FUNCTIONS': 1, 'FUNCTIONS FROM': 1, 'PYTHON PROGRAM': 1, 'IRONPYTHON FOLLOWS': 1, 'FOLLOWS A': 1, 'SIMILAR APPROACH': 1, 'APPROACH IN': 1, 'ORDER TO': 1, 'RUN PYTHON': 1, 'PROGRAMS ON': 1, 'THE NET': 1, 'NET COMMON': 1, 'COMMON LANGUAGE': 1, 'LANGUAGE RUNTIME': 1, 'THE RPYTHON': 1, 'RPYTHON LANGUAGE': 1, 'LANGUAGE CAN': 1, 'BE COMPILED': 1, 'COMPILED TO': 1, 'JAVA BYTECODE': 1, 'BYTECODE OR': 1, 'OR COMMON': 1, 'COMMON INTERMEDIATE': 1, 'INTERMEDIATE LANGUAGE': 1, 'LANGUAGE AND': 1, 'TO BUILD': 1, 'BUILD THE': 1, 'THE PYPY': 1, 'PYPY INTERPRETER': 1, 'PYJS COMPILES': 1, 'CYTHON COMPILES': 1, 'PYTHRAN COMPILES': 1, 'SOMEWHAT DATED': 1, 'DATED PYREX': 1, 'PYREX LATEST': 1, 'AND SHED': 1, 'SKIN LATEST': 1, 'IN COMPILE': 1, 'COMPILE TO': 1, 'AND RESPECTIVELY': 1, 'GRUMPY COMPILES': 1, 'NUITKA COMPILES': 1, 'PYTHON INTO': 1, 'INTO PERFORMANCE': 1, 'PERFORMANCE EDIT': 1, 'EDIT A': 1, 'A PERFORMANCE': 1, 'PERFORMANCE COMPARISON': 1, 'OF VARIOUS': 1, 'VARIOUS PYTHON': 1, 'IMPLEMENTATIONS ON': 1, 'A NON-NUMERICAL': 1, 'NON-NUMERICAL COMBINATORIAL': 1, 'COMBINATORIAL WORKLOAD': 1, 'WORKLOAD WAS': 1, 'WAS PRESENTED': 1, 'PRESENTED AT': 1, 'AT EUROSCIPY': 1, 'DEVELOPMENT EDIT': 1, 'IS CONDUCTED': 1, 'CONDUCTED LARGELY': 1, 'LARGELY THROUGH': 1, 'THROUGH THE': 1, 'ENHANCEMENT PROPOSAL': 1, 'PROPOSAL PEP': 1, 'PEP PROCESS': 1, 'PROCESS THE': 1, 'PRIMARY MECHANISM': 1, 'MECHANISM FOR': 1, 'FOR PROPOSING': 1, 'PROPOSING MAJOR': 1, 'FEATURES COLLECTING': 1, 'COLLECTING COMMUNITY': 1, 'COMMUNITY INPUT': 1, 'INPUT ON': 1, 'ON ISSUES': 1, 'ISSUES AND': 1, 'AND DOCUMENTING': 1, 'DOCUMENTING PYTHON': 1, 'DESIGN DECISIONS': 1, 'OUTSTANDING PEPS': 1, 'PEPS ARE': 1, 'ARE REVIEWED': 1, 'REVIEWED AND': 1, 'AND COMMENTED': 1, 'COMMENTED ON': 1, 'ON BY': 1, 'COMMUNITY AND': 1, 'AND GUIDO': 1, \"ROSSUM PYTHON'S\": 1, \"PYTHON'S BENEVOLENT\": 1, 'ENHANCEMENT OF': 1, 'LANGUAGE CORRESPONDS': 1, 'CORRESPONDS WITH': 1, 'WITH DEVELOPMENT': 1, 'DEVELOPMENT OF': 1, 'CPYTHON REFERENCE': 1, 'THE MAILING': 1, 'LIST PYTHON-DEV': 1, 'PYTHON-DEV IS': 1, 'PRIMARY FORUM': 1, 'FORUM FOR': 1, \"LANGUAGE'S DEVELOPMENT\": 1, 'SPECIFIC ISSUES': 1, 'ISSUES ARE': 1, 'ARE DISCUSSED': 1, 'DISCUSSED IN': 1, 'THE ROUNDUP': 1, 'ROUNDUP BUG': 1, 'BUG TRACKER': 1, 'TRACKER MAINTAINED': 1, 'MAINTAINED AT': 1, 'AT PYTHON.ORG': 1, 'DEVELOPMENT ORIGINALLY': 1, 'ORIGINALLY TOOK': 1, 'TOOK PLACE': 1, 'PLACE ON': 1, 'A SELF-HOSTED': 1, 'SELF-HOSTED SOURCE-CODE': 1, 'SOURCE-CODE REPOSITORY': 1, 'REPOSITORY RUNNING': 1, 'RUNNING MERCURIAL': 1, 'MERCURIAL UNTIL': 1, 'UNTIL PYTHON': 1, 'PYTHON MOVED': 1, 'MOVED TO': 1, 'TO GITHUB': 1, 'GITHUB IN': 1, \"CPYTHON'S PUBLIC\": 1, 'PUBLIC RELEASES': 1, 'RELEASES COME': 1, 'COME IN': 1, 'IN THREE': 1, 'THREE TYPES': 1, 'TYPES DISTINGUISHED': 1, 'DISTINGUISHED BY': 1, 'BY WHICH': 1, 'WHICH PART': 1, 'INCREMENTED BACKWARD-INCOMPATIBLE': 1, 'BACKWARD-INCOMPATIBLE VERSIONS': 1, 'VERSIONS WHERE': 1, 'WHERE CODE': 1, 'IS EXPECTED': 1, 'EXPECTED TO': 1, 'TO BREAK': 1, 'BREAK AND': 1, 'AND NEED': 1, 'NEED TO': 1, 'BE MANUALLY': 1, 'MANUALLY PORTED': 1, 'FIRST PART': 1, 'RELEASES HAPPEN': 1, 'HAPPEN INFREQUENTLYFOR': 1, 'INFREQUENTLYFOR EXAMPLE': 1, 'EXAMPLE VERSION': 1, 'RELEASED YEARS': 1, 'MAJOR OR': 1, 'OR FEATURE': 1, 'FEATURE RELEASES': 1, 'RELEASES ABOUT': 1, 'MONTHS ARE': 1, 'ARE LARGELY': 1, 'LARGELY COMPATIBLE': 1, 'COMPATIBLE BUT': 1, 'BUT INTRODUCE': 1, 'INTRODUCE NEW': 1, 'THE SECOND': 1, 'SECOND PART': 1, 'EACH MAJOR': 1, 'MAJOR VERSION': 1, 'IS SUPPORTED': 1, 'SUPPORTED BY': 1, 'BY BUGFIXES': 1, 'BUGFIXES FOR': 1, 'FOR SEVERAL': 1, 'SEVERAL YEARS': 1, 'AFTER ITS': 1, 'ITS RELEASE': 1, 'BUGFIX RELEASES': 1, 'RELEASES WHICH': 1, 'WHICH INTRODUCE': 1, 'INTRODUCE NO': 1, 'NO NEW': 1, 'FEATURES OCCUR': 1, 'OCCUR ABOUT': 1, 'MONTHS AND': 1, 'ARE MADE': 1, 'MADE WHEN': 1, 'WHEN A': 1, 'A SUFFICIENT': 1, 'SUFFICIENT NUMBER': 1, 'OF BUGS': 1, 'BUGS HAVE': 1, 'BEEN FIXED': 1, 'FIXED UPSTREAM': 1, 'UPSTREAM SINCE': 1, 'THE LAST': 1, 'LAST RELEASE': 1, 'SECURITY VULNERABILITIES': 1, 'VULNERABILITIES ARE': 1, 'ALSO PATCHED': 1, 'PATCHED IN': 1, 'IN THESE': 1, 'THIRD AND': 1, 'AND FINAL': 1, 'FINAL PART': 1, 'MANY ALPHA': 1, 'ALPHA BETA': 1, 'BETA AND': 1, 'AND RELEASE-CANDIDATES': 1, 'RELEASE-CANDIDATES ARE': 1, 'ALSO RELEASED': 1, 'RELEASED AS': 1, 'AS PREVIEWS': 1, 'PREVIEWS AND': 1, 'AND FOR': 1, 'FOR TESTING': 1, 'TESTING BEFORE': 1, 'BEFORE FINAL': 1, 'FINAL RELEASES': 1, 'ALTHOUGH THERE': 1, 'ROUGH SCHEDULE': 1, 'SCHEDULE FOR': 1, 'FOR EACH': 1, 'EACH RELEASE': 1, 'RELEASE THEY': 1, 'OFTEN DELAYED': 1, 'DELAYED IF': 1, 'IF THE': 1, 'NOT READY': 1, 'DEVELOPMENT TEAM': 1, 'TEAM MONITORS': 1, 'MONITORS THE': 1, 'THE STATE': 1, 'STATE OF': 1, 'CODE BY': 1, 'BY RUNNING': 1, 'RUNNING THE': 1, 'THE LARGE': 1, 'LARGE UNIT': 1, 'UNIT TEST': 1, 'TEST SUITE': 1, 'SUITE DURING': 1, 'DURING DEVELOPMENT': 1, 'DEVELOPMENT AND': 1, 'AND USING': 1, 'THE BUILDBOT': 1, 'BUILDBOT CONTINUOUS': 1, 'CONTINUOUS INTEGRATION': 1, 'INTEGRATION SYSTEM': 1, 'THE COMMUNITY': 1, 'COMMUNITY OF': 1, 'DEVELOPERS HAS': 1, 'ALSO CONTRIBUTED': 1, 'CONTRIBUTED OVER': 1, 'OVER SOFTWARE': 1, 'SOFTWARE MODULES': 1, 'MODULES AS': 1, 'OF AUGUST': 1, 'AUGUST UPDATE': 1, 'UPDATE TO': 1, 'INDEX PYPI': 1, 'PYPI THE': 1, 'REPOSITORY OF': 1, 'OF THIRD-PARTY': 1, 'PYTHON LIBRARIES': 1, 'THE MAJOR': 1, 'MAJOR ACADEMIC': 1, 'ACADEMIC CONFERENCE': 1, 'IS PYCON': 1, 'ALSO SPECIAL': 1, 'SPECIAL PYTHON': 1, 'PYTHON MENTORING': 1, 'MENTORING PROGRAMMES': 1, 'PROGRAMMES SUCH': 1, 'AS PYLADIES': 1, 'NAMING EDIT': 1, \"PYTHON'S NAME\": 1, 'IS DERIVED': 1, 'DERIVED FROM': 1, 'PYTHON WHOM': 1, 'WHOM PYTHON': 1, 'PYTHON CREATOR': 1, 'CREATOR GUIDO': 1, 'ROSSUM ENJOYED': 1, 'ENJOYED WHILE': 1, 'WHILE DEVELOPING': 1, 'DEVELOPING THE': 1, 'PYTHON REFERENCES': 1, 'REFERENCES APPEAR': 1, 'APPEAR FREQUENTLY': 1, 'FREQUENTLY IN': 1, 'AND CULTURE': 1, 'CULTURE FOR': 1, 'THE METASYNTACTIC': 1, 'METASYNTACTIC VARIABLES': 1, 'VARIABLES OFTEN': 1, 'PYTHON LITERATURE': 1, 'LITERATURE ARE': 1, 'ARE SPAM': 1, 'EGGS INSTEAD': 1, 'THE TRADITIONAL': 1, 'TRADITIONAL FOO': 1, 'OFFICIAL PYTHON': 1, 'DOCUMENTATION ALSO': 1, 'ALSO CONTAINS': 1, 'CONTAINS VARIOUS': 1, 'VARIOUS REFERENCES': 1, 'REFERENCES TO': 1, 'TO MONTY': 1, 'PYTHON ROUTINES': 1, 'THE PREFIX': 1, 'PREFIX PY': 1, 'PY IS': 1, 'SHOW THAT': 1, 'THAT SOMETHING': 1, 'SOMETHING IS': 1, 'IS RELATED': 1, 'EXAMPLES OF': 1, 'THIS PREFIX': 1, 'PREFIX IN': 1, 'IN NAMES': 1, 'NAMES OF': 1, 'PYTHON APPLICATIONS': 1, 'APPLICATIONS OR': 1, 'OR LIBRARIES': 1, 'LIBRARIES INCLUDE': 1, 'INCLUDE PYGAME': 1, 'PYGAME A': 1, 'A BINDING': 1, 'BINDING OF': 1, 'OF SDL': 1, 'SDL TO': 1, 'PYTHON COMMONLY': 1, 'COMMONLY USED': 1, 'CREATE GAMES': 1, 'GAMES PYTHON': 1, 'AN IMPLEMENTATION': 1, 'IMPLEMENTATION FOR': 1, 'SYSTEM PYQT': 1, 'PYQT AND': 1, 'AND PYGTK': 1, 'PYGTK WHICH': 1, 'WHICH BIND': 1, 'BIND QT': 1, 'QT AND': 1, 'AND GTK': 1, 'GTK TO': 1, 'PYTHON RESPECTIVELY': 1, 'RESPECTIVELY AND': 1, 'PYTHON IMPLEMENTATION': 1, 'IMPLEMENTATION ORIGINALLY': 1, 'ORIGINALLY WRITTEN': 1, 'USES EDIT': 1, 'ARTICLE LIST': 1, 'SOFTWARE SINCE': 1, 'SINCE PYTHON': 1, 'HAS CONSISTENTLY': 1, 'CONSISTENTLY RANKED': 1, 'RANKED IN': 1, 'THE TOP': 1, 'TOP TEN': 1, 'TEN MOST': 1, 'POPULAR PROGRAMMING': 1, 'OF MARCH': 1, 'MARCH UPDATE': 1, 'UPDATE IT': 1, 'THE FIFTH': 1, 'FIFTH MOST': 1, 'WAS SELECTED': 1, 'SELECTED PROGRAMMING': 1, 'YEAR IN': 1, 'THIRD MOST': 1, 'LANGUAGE WHOSE': 1, 'WHOSE GRAMMATICAL': 1, 'GRAMMATICAL SYNTAX': 1, 'SYNTAX IS': 1, 'NOT PREDOMINANTLY': 1, 'PREDOMINANTLY BASED': 1, 'EMPIRICAL STUDY': 1, 'STUDY FOUND': 1, 'FOUND THAT': 1, 'THAT SCRIPTING': 1, 'SCRIPTING LANGUAGES': 1, 'ARE MORE': 1, 'MORE PRODUCTIVE': 1, 'PRODUCTIVE THAN': 1, 'THAN CONVENTIONAL': 1, 'CONVENTIONAL LANGUAGES': 1, 'JAVA FOR': 1, 'PROGRAMMING PROBLEMS': 1, 'PROBLEMS INVOLVING': 1, 'INVOLVING STRING': 1, 'STRING MANIPULATION': 1, 'MANIPULATION AND': 1, 'AND SEARCH': 1, 'SEARCH IN': 1, 'A DICTIONARY': 1, 'DICTIONARY AND': 1, 'AND DETERMINED': 1, 'DETERMINED THAT': 1, 'THAT MEMORY': 1, 'MEMORY CONSUMPTION': 1, 'CONSUMPTION WAS': 1, 'WAS OFTEN': 1, 'OFTEN BETTER': 1, 'THAN JAVA': 1, 'MUCH WORSE': 1, 'WORSE THAN': 1, 'LARGE ORGANIZATIONS': 1, 'ORGANIZATIONS THAT': 1, 'THAT USE': 1, 'PYTHON INCLUDE': 1, 'INCLUDE WIKIPEDIA': 1, 'WIKIPEDIA GOOGLE': 1, 'GOOGLE YAHOO': 1, 'YAHOO CERN': 1, 'CERN NASA': 1, 'NASA AND': 1, 'SOME SMALLER': 1, 'SMALLER ENTITIES': 1, 'ENTITIES LIKE': 1, 'LIKE ILM': 1, 'ILM AND': 1, 'AND ITA': 1, 'THE SOCIAL': 1, 'SOCIAL NEWS': 1, 'NEWS NETWORKING': 1, 'NETWORKING SITE': 1, 'SITE REDDIT': 1, 'REDDIT IS': 1, 'WRITTEN ENTIRELY': 1, 'ENTIRELY IN': 1, 'CAN SERVE': 1, 'SERVE AS': 1, 'FOR WEB': 1, 'APPLICATIONS E.G': 1, 'E.G VIA': 1, 'VIA MOD_WSGI': 1, 'MOD_WSGI FOR': 1, 'THE APACHE': 1, 'APACHE WEB': 1, 'WITH WEB': 1, 'INTERFACE A': 1, 'STANDARD API': 1, 'API HAS': 1, 'HAS EVOLVED': 1, 'EVOLVED TO': 1, 'TO FACILITATE': 1, 'FACILITATE THESE': 1, 'THESE APPLICATIONS': 1, 'FRAMEWORKS LIKE': 1, 'LIKE DJANGO': 1, 'DJANGO PYLONS': 1, 'PYRAMID TURBOGEARS': 1, 'TURBOGEARS WEB': 1, 'PY TORNADO': 1, 'TORNADO FLASK': 1, 'FLASK BOTTLE': 1, 'BOTTLE AND': 1, 'AND ZOPE': 1, 'ZOPE SUPPORT': 1, 'SUPPORT DEVELOPERS': 1, 'DEVELOPERS IN': 1, 'AND MAINTENANCE': 1, 'MAINTENANCE OF': 1, 'OF COMPLEX': 1, 'COMPLEX APPLICATIONS': 1, 'PYJS AND': 1, 'AND IRONPYTHON': 1, 'IRONPYTHON CAN': 1, 'TO DEVELOP': 1, 'DEVELOP THE': 1, 'THE CLIENT-SIDE': 1, 'CLIENT-SIDE OF': 1, 'OF AJAX-BASED': 1, 'AJAX-BASED APPLICATIONS': 1, 'SQLALCHEMY CAN': 1, 'AS DATA': 1, 'DATA MAPPER': 1, 'MAPPER TO': 1, 'A RELATIONAL': 1, 'RELATIONAL DATABASE': 1, 'TWISTED IS': 1, 'A FRAMEWORK': 1, 'FRAMEWORK TO': 1, 'PROGRAM COMMUNICATIONS': 1, 'COMMUNICATIONS BETWEEN': 1, 'BETWEEN COMPUTERS': 1, 'COMPUTERS AND': 1, 'EXAMPLE BY': 1, 'BY DROPBOX': 1, 'AS NUMPY': 1, 'NUMPY SCIPY': 1, 'SCIPY AND': 1, 'AND MATPLOTLIB': 1, 'MATPLOTLIB ALLOW': 1, 'ALLOW THE': 1, 'THE EFFECTIVE': 1, 'EFFECTIVE USE': 1, 'IN SCIENTIFIC': 1, 'COMPUTING WITH': 1, 'WITH SPECIALIZED': 1, 'SPECIALIZED LIBRARIES': 1, 'AS BIOPYTHON': 1, 'BIOPYTHON AND': 1, 'AND ASTROPY': 1, 'ASTROPY PROVIDING': 1, 'PROVIDING DOMAIN-SPECIFIC': 1, 'DOMAIN-SPECIFIC FUNCTIONALITY': 1, 'SAGEMATH IS': 1, 'A MATHEMATICAL': 1, 'MATHEMATICAL SOFTWARE': 1, 'SOFTWARE WITH': 1, 'A NOTEBOOK': 1, 'NOTEBOOK PROGRAMMABLE': 1, 'PROGRAMMABLE IN': 1, 'PYTHON ITS': 1, 'ITS LIBRARY': 1, 'LIBRARY COVERS': 1, 'COVERS MANY': 1, 'MANY ASPECTS': 1, 'ASPECTS OF': 1, 'OF MATHEMATICS': 1, 'MATHEMATICS INCLUDING': 1, 'INCLUDING ALGEBRA': 1, 'ALGEBRA COMBINATORICS': 1, 'COMBINATORICS NUMERICAL': 1, 'NUMERICAL MATHEMATICS': 1, 'MATHEMATICS NUMBER': 1, 'NUMBER THEORY': 1, 'THEORY AND': 1, 'AND CALCULUS': 1, 'LANGUAGE RE-IMPLEMENTED': 1, 'RE-IMPLEMENTED IN': 1, 'PLATFORM IS': 1, 'FOR NUMERIC': 1, 'NUMERIC AND': 1, 'STATISTICAL CALCULATIONS': 1, 'CALCULATIONS WITH': 1, 'WITH VISUALIZATION': 1, 'VISUALIZATION BY': 1, 'THE DMELT': 1, 'DMELT PROJECT': 1, 'BEEN SUCCESSFULLY': 1, 'SUCCESSFULLY EMBEDDED': 1, 'EMBEDDED IN': 1, 'IN MANY': 1, 'MANY SOFTWARE': 1, 'SOFTWARE PRODUCTS': 1, 'PRODUCTS AS': 1, 'LANGUAGE INCLUDING': 1, 'IN FINITE': 1, 'FINITE ELEMENT': 1, 'ELEMENT METHOD': 1, 'METHOD SOFTWARE': 1, 'SOFTWARE SUCH': 1, 'AS ABAQUS': 1, 'ABAQUS PARAMETRIC': 1, 'PARAMETRIC MODELER': 1, 'MODELER LIKE': 1, 'LIKE FREECAD': 1, 'FREECAD ANIMATION': 1, 'ANIMATION PACKAGES': 1, 'PACKAGES SUCH': 1, 'AS DS': 1, 'DS MAX': 1, 'MAX BLENDER': 1, 'BLENDER CINEMA': 1, 'CINEMA LIGHTWAVE': 1, 'LIGHTWAVE HOUDINI': 1, 'HOUDINI MAYA': 1, 'MAYA MODO': 1, 'MODO MOTIONBUILDER': 1, 'MOTIONBUILDER SOFTIMAGE': 1, 'SOFTIMAGE THE': 1, 'THE VISUAL': 1, 'VISUAL EFFECTS': 1, 'EFFECTS COMPOSITOR': 1, 'COMPOSITOR NUKE': 1, 'NUKE IMAGING': 1, 'IMAGING PROGRAMS': 1, 'LIKE GIMP': 1, 'GIMP INKSCAPE': 1, 'INKSCAPE SCRIBUS': 1, 'SCRIBUS AND': 1, 'AND PAINT': 1, 'PAINT SHOP': 1, 'SHOP PRO': 1, 'PRO AND': 1, 'AND MUSICAL': 1, 'MUSICAL NOTATION': 1, 'NOTATION PROGRAMS': 1, 'LIKE SCOREWRITER': 1, 'SCOREWRITER AND': 1, 'AND CAPELLA': 1, 'GNU DEBUGGER': 1, 'DEBUGGER USES': 1, 'PRINTER TO': 1, 'SHOW COMPLEX': 1, 'COMPLEX STRUCTURES': 1, 'STRUCTURES SUCH': 1, 'AS CONTAINERS': 1, 'ESRI PROMOTES': 1, 'PROMOTES PYTHON': 1, 'THE BEST': 1, 'BEST CHOICE': 1, 'CHOICE FOR': 1, 'FOR WRITING': 1, 'WRITING SCRIPTS': 1, 'SCRIPTS IN': 1, 'IN ARCGIS': 1, 'IN SEVERAL': 1, 'SEVERAL VIDEO': 1, 'GAMES AND': 1, 'BEEN ADOPTED': 1, 'ADOPTED AS': 1, 'AS FIRST': 1, 'FIRST OF': 1, 'THE THREE': 1, 'THREE AVAILABLE': 1, 'AVAILABLE PROGRAMMING': 1, 'IN GOOGLE': 1, 'GOOGLE APP': 1, 'APP ENGINE': 1, 'ENGINE THE': 1, 'OTHER TWO': 1, 'TWO BEING': 1, 'BEING JAVA': 1, 'AND GO': 1, 'IN ALGORITHMIC': 1, 'TRADING AND': 1, 'AND QUANTITATIVE': 1, 'QUANTITATIVE FINANCE': 1, 'CAN ALSO': 1, 'ALSO BE': 1, 'BE IMPLEMENTED': 1, 'IMPLEMENTED IN': 1, 'IN APIS': 1, 'APIS OF': 1, 'OF ONLINE': 1, 'ONLINE BROKERAGES': 1, 'BROKERAGES THAT': 1, 'THAT RUN': 1, 'ON OTHER': 1, 'LANGUAGES BY': 1, 'USING WRAPPERS': 1, 'IN ARTIFICIAL': 1, 'INTELLIGENCE PROJECTS': 1, 'WITH MODULAR': 1, 'MODULAR ARCHITECTURE': 1, 'ARCHITECTURE SIMPLE': 1, 'SIMPLE SYNTAX': 1, 'AND RICH': 1, 'RICH TEXT': 1, 'PROCESSING TOOLS': 1, 'TOOLS PYTHON': 1, 'IS OFTEN': 1, 'FOR NATURAL': 1, 'LANGUAGE PROCESSING': 1, 'SYSTEMS INCLUDE': 1, 'INCLUDE PYTHON': 1, 'STANDARD COMPONENT': 1, 'IT SHIPS': 1, 'SHIPS WITH': 1, 'WITH MOST': 1, 'MOST LINUX': 1, 'DISTRIBUTIONS AMIGAOS': 1, 'AMIGAOS FREEBSD': 1, 'FREEBSD NETBSD': 1, 'NETBSD OPENBSD': 1, 'OPENBSD AND': 1, 'AND MACOS': 1, 'MACOS AND': 1, 'AND CAN': 1, 'USED FROM': 1, 'THE COMMAND': 1, 'LINE TERMINAL': 1, 'MANY LINUX': 1, 'DISTRIBUTIONS USE': 1, 'USE INSTALLERS': 1, 'INSTALLERS WRITTEN': 1, 'PYTHON UBUNTU': 1, 'UBUNTU USES': 1, 'THE UBIQUITY': 1, 'UBIQUITY INSTALLER': 1, 'INSTALLER WHILE': 1, 'WHILE RED': 1, 'RED HAT': 1, 'HAT LINUX': 1, 'LINUX AND': 1, 'AND FEDORA': 1, 'FEDORA USE': 1, 'THE ANACONDA': 1, 'ANACONDA INSTALLER': 1, 'GENTOO LINUX': 1, 'LINUX USES': 1, 'ITS PACKAGE': 1, 'PACKAGE MANAGEMENT': 1, 'MANAGEMENT SYSTEM': 1, 'SYSTEM PORTAGE': 1, 'USED EXTENSIVELY': 1, 'EXTENSIVELY IN': 1, 'INFORMATION SECURITY': 1, 'SECURITY INDUSTRY': 1, 'INDUSTRY INCLUDING': 1, 'IN EXPLOIT': 1, 'EXPLOIT DEVELOPMENT': 1, 'THE SUGAR': 1, 'SUGAR SOFTWARE': 1, 'SOFTWARE FOR': 1, 'THE ONE': 1, 'ONE LAPTOP': 1, 'LAPTOP PER': 1, 'PER CHILD': 1, 'CHILD XO': 1, 'XO NOW': 1, 'NOW DEVELOPED': 1, 'DEVELOPED AT': 1, 'AT SUGAR': 1, 'LABS IS': 1, 'THE RASPBERRY': 1, 'RASPBERRY PI': 1, 'PI SINGLE-BOARD': 1, 'SINGLE-BOARD COMPUTER': 1, 'COMPUTER PROJECT': 1, 'HAS ADOPTED': 1, 'ADOPTED PYTHON': 1, 'ITS MAIN': 1, 'MAIN USER-PROGRAMMING': 1, 'USER-PROGRAMMING LANGUAGE': 1, 'LIBREOFFICE INCLUDES': 1, 'INCLUDES PYTHON': 1, 'AND INTENDS': 1, 'INTENDS TO': 1, 'TO REPLACE': 1, 'REPLACE JAVA': 1, 'JAVA WITH': 1, 'ITS PYTHON': 1, 'PYTHON SCRIPTING': 1, 'SCRIPTING PROVIDER': 1, 'PROVIDER IS': 1, 'A CORE': 1, 'CORE FEATURE': 1, 'FEATURE SINCE': 1, 'FROM FEBRUARY': 1, 'PYTHON EDIT': 1, 'PHILOSOPHY HAVE': 1, 'HAVE INFLUENCED': 1, 'INFLUENCED MANY': 1, 'OTHER PROGRAMMING': 1, 'LANGUAGES BOO': 1, 'BOO USES': 1, 'INDENTATION A': 1, 'SIMILAR OBJECT': 1, 'COBRA USES': 1, 'INDENTATION AND': 1, 'ITS ACKNOWLEDGEMENTS': 1, 'ACKNOWLEDGEMENTS DOCUMENT': 1, 'DOCUMENT LISTS': 1, 'LISTS PYTHON': 1, 'PYTHON FIRST': 1, 'FIRST AMONG': 1, 'AMONG LANGUAGES': 1, 'LANGUAGES THAT': 1, 'THAT INFLUENCED': 1, 'INFLUENCED IT': 1, 'HOWEVER COBRA': 1, 'COBRA DIRECTLY': 1, 'DIRECTLY SUPPORTS': 1, 'SUPPORTS DESIGN-BY-CONTRACT': 1, 'DESIGN-BY-CONTRACT UNIT': 1, 'UNIT TESTS': 1, 'TESTS AND': 1, 'AND OPTIONAL': 1, 'COFFEESCRIPT A': 1, 'THAT CROSS-COMPILES': 1, 'CROSS-COMPILES TO': 1, 'JAVASCRIPT HAS': 1, 'HAS PYTHON-INSPIRED': 1, 'ECMASCRIPT BORROWED': 1, 'BORROWED ITERATORS': 1, 'ITERATORS GENERATORS': 1, 'GENERATORS AND': 1, 'AND LIST': 1, 'COMPREHENSIONS FROM': 1, 'GO IS': 1, 'DESCRIBED AS': 1, 'AS INCORPORATING': 1, 'INCORPORATING THE': 1, 'DEVELOPMENT SPEED': 1, 'SPEED OF': 1, 'OF WORKING': 1, 'WORKING IN': 1, 'LANGUAGE LIKE': 1, 'LIKE PYTHON': 1, 'GROOVY WAS': 1, 'WAS MOTIVATED': 1, 'MOTIVATED BY': 1, 'THE DESIRE': 1, 'DESIRE TO': 1, 'TO BRING': 1, 'BRING THE': 1, 'PHILOSOPHY TO': 1, 'JULIA WAS': 1, 'DESIGNED WITH': 1, 'WITH TRUE': 1, 'TRUE MACROS': 1, 'AND TO': 1, 'AS USABLE': 1, 'USABLE FOR': 1, 'FOR GENERAL': 1, 'GENERAL PROGRAMMING': 1, 'PROGRAMMING AS': 1, 'AND SHOULD': 1, 'AS FAST': 1, 'FAST AS': 1, 'CALLING TO': 1, 'TO OR': 1, 'OR FROM': 1, 'FROM JULIA': 1, 'JULIA IS': 1, 'TO WITH': 1, 'WITH PYCALL.JL': 1, 'PYCALL.JL AND': 1, 'PACKAGE PYJULIA': 1, 'PYJULIA ALLOWS': 1, 'ALLOWS CALLING': 1, 'CALLING IN': 1, 'OTHER DIRECTION': 1, 'DIRECTION FROM': 1, 'OCAML HAS': 1, 'HAS AN': 1, 'AN OPTIONAL': 1, 'OPTIONAL SYNTAX': 1, 'SYNTAX NAMED': 1, 'NAMED TWT': 1, 'TWT THE': 1, 'THING INSPIRED': 1, 'AND HASKELL': 1, \"RUBY'S CREATOR\": 1, 'CREATOR YUKIHIRO': 1, 'YUKIHIRO MATSUMOTO': 1, 'MATSUMOTO HAS': 1, 'HAS SAID': 1, 'SAID I': 1, 'I WANTED': 1, 'WANTED A': 1, 'THAT WAS': 1, 'WAS MORE': 1, 'MORE POWERFUL': 1, 'POWERFUL THAN': 1, 'THAN PERL': 1, 'AND MORE': 1, 'MORE OBJECT-ORIENTED': 1, 'OBJECT-ORIENTED THAN': 1, 'THAN PYTHON': 1, \"THAT'S WHY\": 1, 'WHY I': 1, 'TO DESIGN': 1, 'DESIGN MY': 1, 'MY OWN': 1, 'OWN LANGUAGE': 1, 'LANGUAGE SWIFT': 1, 'SWIFT A': 1, 'LANGUAGE DEVELOPED': 1, 'DEVELOPED BY': 1, 'BY APPLE': 1, 'APPLE HAS': 1, 'HAS SOME': 1, 'SOME PYTHON-INSPIRED': 1, 'DEVELOPMENT PRACTICES': 1, 'PRACTICES HAVE': 1, 'HAVE ALSO': 1, 'BEEN EMULATED': 1, 'EMULATED BY': 1, 'BY OTHER': 1, 'THE PRACTICE': 1, 'PRACTICE OF': 1, 'OF REQUIRING': 1, 'REQUIRING A': 1, 'A DOCUMENT': 1, 'DOCUMENT DESCRIBING': 1, 'DESCRIBING THE': 1, 'THE RATIONALE': 1, 'RATIONALE FOR': 1, 'FOR AND': 1, 'AND ISSUES': 1, 'ISSUES SURROUNDING': 1, 'SURROUNDING A': 1, 'A CHANGE': 1, 'CHANGE TO': 1, 'PEP IS': 1, 'IN TCL': 1, 'TCL AND': 1, 'AND ERLANG': 1, 'PYTHON RECEIVED': 1, \"RECEIVED TIOBE'S\": 1, \"TIOBE'S PROGRAMMING\": 1, 'YEAR AWARDS': 1, 'AWARDS IN': 1, 'THE AWARD': 1, 'AWARD IS': 1, 'IS GIVEN': 1, 'THE GREATEST': 1, 'GREATEST GROWTH': 1, 'GROWTH IN': 1, 'IN POPULARITY': 1, 'POPULARITY OVER': 1, 'OVER THE': 1, 'YEAR AS': 1, 'AS MEASURED': 1, 'MEASURED BY': 1, 'ALSO EDIT': 1, 'EDIT FREE': 1, 'SOFTWARE PORTAL': 1, 'PORTAL PYTHON': 1, 'PROGRAMMING PORTAL': 1, 'PORTAL COMPARISON': 1, 'ENVIRONMENTS FOR': 1, 'PYTHON COMPARISON': 1, 'LANGUAGES LIST': 1, 'LANGUAGES OFF-SIDE': 1, 'RULE REFERENCES': 1, 'REFERENCES EDIT': 1, 'EDIT THE': 1, 'DEILY NED': 1, 'NED DECEMBER': 1, 'NOW AVAILABLE': 1, 'PETERSON BENJAMIN': 1, 'BENJAMIN SEPTEMBER': 1, 'FILE EXTENSION': 1, 'EXTENSION PYO': 1, 'PYO WAS': 1, 'WAS REMOVED': 1, 'REMOVED IN': 1, 'SEE PEP': 1, 'PEP HOLTH': 1, 'HOLTH MOORE': 1, 'MOORE MARCH': 1, 'PEP IMPROVING': 1, 'IMPROVING PYTHON': 1, 'PYTHON ZIP': 1, 'ZIP APPLICATION': 1, 'APPLICATION SUPPORT': 1, 'WHY WAS': 1, 'WAS PYTHON': 1, 'PYTHON CREATED': 1, 'CREATED IN': 1, 'FIRST PLACE': 1, 'KUCHLING ANDREW': 1, 'ROSSUM JULY': 1, 'ON MAY': 1, 'AN INTRODUCTION': 1, 'INTRODUCTION TO': 1, 'FOR UNIX/C': 1, 'UNIX/C PROGRAMMERS': 1, 'PROCEEDINGS OF': 1, 'THE NLUUG': 1, 'NLUUG NAJAARSCONFERENTIE': 1, 'NAJAARSCONFERENTIE DUTCH': 1, 'DUTCH UNIX': 1, 'UNIX USERS': 1, 'USERS GROUP': 1, 'EVEN THOUGH': 1, 'THOUGH THE': 1, 'DESIGN OF': 1, 'OF IS': 1, 'IS FAR': 1, 'FAR FROM': 1, 'FROM IDEAL': 1, 'IDEAL ITS': 1, 'ITS INFLUENCE': 1, 'INFLUENCE ON': 1, 'IS CONSIDERABLE': 1, 'A CLASSES': 1, 'CLASS MECHANISMS': 1, 'MECHANISMS FOUND': 1, 'FOUND IN': 1, 'AND MODULA': 1, 'MODULA LUNDH': 1, 'LUNDH FREDRIK': 1, 'CALL BY': 1, 'BY OBJECT': 1, 'REPLACE CLU': 1, 'CLU WITH': 1, 'PYTHON RECORD': 1, 'RECORD WITH': 1, 'WITH INSTANCE': 1, 'INSTANCE AND': 1, 'AND PROCEDURE': 1, 'PROCEDURE WITH': 1, 'WITH FUNCTION': 1, 'AND YOU': 1, 'YOU GET': 1, 'GET A': 1, 'PRETTY ACCURATE': 1, 'ACCURATE DESCRIPTION': 1, 'DESCRIPTION OF': 1, \"PYTHON'S OBJECT\": 1, 'SIMIONATO MICHELE': 1, 'METHOD RESOLUTION': 1, 'RESOLUTION ORDER': 1, 'THE METHOD': 1, 'METHOD ITSELF': 1, 'ITSELF HAS': 1, 'HAS NOTHING': 1, 'NOTHING TO': 1, 'DO WITH': 1, 'PYTHON SINCE': 1, 'SINCE IT': 1, 'WAS INVENTED': 1, 'INVENTED BY': 1, 'BY PEOPLE': 1, 'PEOPLE WORKING': 1, 'WORKING ON': 1, 'ON DYLAN': 1, 'DYLAN AND': 1, 'DESCRIBED IN': 1, 'A PAPER': 1, 'PAPER INTENDED': 1, 'FOR LISPERS': 1, 'LISPERS KUCHLING': 1, 'PROGRAMMING HOWTO': 1, 'SCHEMENAUER NEIL': 1, 'NEIL PETERS': 1, 'TIM HETLAND': 1, 'HETLAND MAGNUS': 1, 'MAGNUS LIE': 1, 'LIE MAY': 1, 'PEP SIMPLE': 1, 'SIMPLE GENERATORS': 1, 'SMITH KEVIN': 1, 'KEVIN JEWETT': 1, 'JEWETT JIM': 1, 'JIM MONTANARO': 1, 'MONTANARO SKIP': 1, 'SKIP BAXTER': 1, 'ANTHONY SEPTEMBER': 1, 'PEP DECORATORS': 1, 'DECORATORS FOR': 1, 'FOR FUNCTIONS': 1, 'FUNCTIONS AND': 1, 'MORE CONTROL': 1, 'FLOW TOOLS': 1, 'HUBINGER EVAN': 1, 'COCONUT PROGRAMMING': 1, 'COFFEESCRIPT BORROWS': 1, 'BORROWS CHAINED': 1, 'CHAINED COMPARISONS': 1, 'COMPARISONS FROM': 1, 'GENIE LANGUAGE': 1, 'LANGUAGE A': 1, 'BRIEF GUIDE': 1, 'PYTHON INFLUENCES': 1, 'INFLUENCES IN': 1, 'IN JAVASCRIPT': 1, 'RAUSCHMAYER AXEL': 1, 'CHAPTER THE': 1, 'OF JAVASCRIPT': 1, 'JAVASCRIPT INFLUENCES': 1, \"O'REILLY SPEAKING\": 1, 'SPEAKING JAVASCRIPT': 1, 'WHY WE': 1, 'CREATED JULIA': 1, 'JULIA WEBSITE': 1, 'RING TEAM': 1, 'TEAM DECEMBER': 1, 'RING AND': 1, 'BINI OLA': 1, 'PRACTICAL JRUBY': 1, 'JRUBY ON': 1, 'RAILS WEB': 1, 'PROJECTS BRINGING': 1, 'BRINGING RUBY': 1, 'RUBY ON': 1, 'RAILS TO': 1, 'BERKELEY APRESS': 1, 'SWIFT LANGUAGE': 1, 'THE PRODUCT': 1, 'PRODUCT OF': 1, 'OF TIRELESS': 1, 'TIRELESS EFFORT': 1, 'EFFORT FROM': 1, 'A TEAM': 1, 'TEAM OF': 1, 'OF LANGUAGE': 1, 'LANGUAGE EXPERTS': 1, 'EXPERTS DOCUMENTATION': 1, 'DOCUMENTATION GURUS': 1, 'GURUS COMPILER': 1, 'COMPILER OPTIMIZATION': 1, 'OPTIMIZATION NINJAS': 1, 'NINJAS AND': 1, 'AND AN': 1, 'AN INCREDIBLY': 1, 'INCREDIBLY IMPORTANT': 1, 'IMPORTANT INTERNAL': 1, 'INTERNAL DOGFOODING': 1, 'DOGFOODING GROUP': 1, 'GROUP WHO': 1, 'WHO PROVIDED': 1, 'PROVIDED FEEDBACK': 1, 'FEEDBACK TO': 1, 'TO HELP': 1, 'HELP REFINE': 1, 'REFINE AND': 1, 'AND BATTLE-TEST': 1, 'BATTLE-TEST IDEAS': 1, 'OF COURSE': 1, 'COURSE IT': 1, 'ALSO GREATLY': 1, 'GREATLY BENEFITED': 1, 'BENEFITED FROM': 1, 'THE EXPERIENCES': 1, 'EXPERIENCES HARD-WON': 1, 'HARD-WON BY': 1, 'BY MANY': 1, 'THE FIELD': 1, 'FIELD DRAWING': 1, 'RAPID GUI': 1, 'GUI PROGRAMMING': 1, 'PROGRAMMING WITH': 1, 'AND QT': 1, 'A VERY': 1, 'VERY EXPRESSIVE': 1, 'EXPRESSIVE LANGUAGE': 1, 'LANGUAGE WHICH': 1, 'WHICH MEANS': 1, 'THAT WE': 1, 'CAN USUALLY': 1, 'USUALLY WRITE': 1, 'WRITE FAR': 1, 'FAR FEWER': 1, 'CODE THAN': 1, 'THAN WOULD': 1, 'BE REQUIRED': 1, 'REQUIRED FOR': 1, 'AN EQUIVALENT': 1, 'EQUIVALENT APPLICATION': 1, 'APPLICATION WRITTEN': 1, 'IN SAY': 1, 'SAY OR': 1, 'OR JAVA': 1, 'JAVA MCCONNELL': 1, 'MCCONNELL STEVE': 1, 'STEVE NOVEMBER': 1, 'CODE COMPLETE': 1, 'KUHLMAN DAVE': 1, 'PYTHON BOOK': 1, 'BOOK BEGINNING': 1, 'BEGINNING PYTHON': 1, 'PYTHON ADVANCED': 1, 'ADVANCED PYTHON': 1, 'PYTHON EXERCISES': 1, 'APRIL SECOND': 1, 'SECOND SECTION': 1, 'SECTION FANS': 1, 'FANS OF': 1, 'PYTHON USE': 1, 'THE PHRASE': 1, 'PHRASE BATTERIES': 1, 'BATTERIES INCLUDED': 1, 'INCLUDED TO': 1, 'DESCRIBE THE': 1, 'LIBRARY WHICH': 1, 'WHICH COVERS': 1, 'COVERS EVERYTHING': 1, 'EVERYTHING FROM': 1, 'FROM ASYNCHRONOUS': 1, 'ASYNCHRONOUS PROCESSING': 1, 'PROCESSING TO': 1, 'TO ZIP': 1, 'ZIP FILES': 1, 'FILES HISTORY': 1, 'HISTORY AND': 1, 'AND LICENSE': 1, 'ALL PYTHON': 1, 'PYTHON RELEASES': 1, 'RELEASES ARE': 1, 'ARE OPEN': 1, 'SOURCE A': 1, 'A VENNERS': 1, 'VENNERS BILL': 1, 'BILL JANUARY': 1, 'THE MAKING': 1, 'MAKING OF': 1, 'ARTIMA DEVELOPER': 1, 'GUIDO JANUARY': 1, 'GUIDO AUGUST': 1, 'SETL WAS': 1, 'WAS LUKEWARM': 1, 'LUKEWARM ABOUT': 1, 'ABOUT RANGE': 1, 'RANGE LITERALS': 1, 'PYTHON-DEV MAILING': 1, 'FOREWORD FOR': 1, 'PROGRAMMING PYTHON': 1, 'PYTHON ST': 1, 'ST ED': 1, 'MOSHE OCTOBER': 1, 'RELEASE SCHEDULE': 1, 'PEP NETWORK': 1, 'NETWORK SECURITY': 1, 'SECURITY ENHANCEMENTS': 1, 'ENHANCEMENTS FOR': 1, 'CLABURN THOMAS': 1, 'THOMAS JANUARY': 1, 'GRUMPY CODE': 1, 'CODE MAKES': 1, 'MAKES PYTHON': 1, 'PYTHON GO': 1, 'GOOGLE OPEN': 1, 'SOURCE BLOG': 1, 'BLOG GRUMPY': 1, 'GRUMPY GO': 1, 'GO RUNNING': 1, 'RUNNING PYTHON': 1, 'THE CAIN': 1, 'CAIN GANG': 1, 'GANG LTD': 1, 'PYTHON METACLASSES': 1, 'METACLASSES WHO': 1, 'WHO WHY': 1, 'WHY WHEN': 1, 'WHEN PDF': 1, 'ORIGINAL PDF': 1, 'PDF ON': 1, 'SPECIAL METHOD': 1, 'METHOD NAMES': 1, 'PYDBC METHOD': 1, 'METHOD PRECONDITIONS': 1, 'PRECONDITIONS METHOD': 1, 'METHOD POSTCONDITIONS': 1, 'POSTCONDITIONS AND': 1, 'AND CLASS': 1, 'CLASS INVARIANTS': 1, 'INVARIANTS FOR': 1, 'CONTRACTS FOR': 1, 'A HETTINGER': 1, 'RAYMOND JANUARY': 1, 'PEP GENERATOR': 1, 'ITERTOOLS FUNCTIONS': 1, 'FUNCTIONS CREATING': 1, 'CREATING ITERATORS': 1, 'ITERATORS FOR': 1, 'FOR EFFICIENT': 1, 'EFFICIENT LOOPING': 1, 'A PETERS': 1, 'TIM AUGUST': 1, 'PEP THE': 1, 'MARTELLI ALEX': 1, 'ALEX RAVENSCROFT': 1, 'RAVENSCROFT ANNA': 1, 'ANNA ASCHER': 1, 'ASCHER DAVID': 1, 'PYTHON COOKBOOK': 1, 'COOKBOOK ND': 1, 'ND EDITION': 1, 'WAYS PYTHON': 1, 'A POWERFUL': 1, 'POWERFUL FORCE': 1, 'FORCE ON': 1, 'PPRINT DATA': 1, 'DATA PRETTY': 1, 'PRINTER PYTHON': 1, 'CODE LIKE': 1, 'PYTHONISTA IDIOMATIC': 1, 'IDIOMATIC PYTHON': 1, 'IS PYTHON': 1, 'A GOOD': 1, 'GOOD LANGUAGE': 1, 'FOR BEGINNING': 1, 'BEGINNING PROGRAMMERS': 1, 'MYTHS ABOUT': 1, 'ABOUT INDENTATION': 1, 'INDENTATION IN': 1, 'SWEIGART AL': 1, 'APPENDIX A': 1, 'A DIFFERENCES': 1, 'DIFFERENCES BETWEEN': 1, 'BETWEEN PYTHON': 1, 'INVENT YOUR': 1, 'YOUR OWN': 1, 'OWN COMPUTER': 1, 'COMPUTER GAMES': 1, 'GAMES WITH': 1, 'PYTHON ED': 1, 'TAIL RECURSION': 1, 'RECURSION ELIMINATION': 1, 'GUIDO FEBRUARY': 1, 'DESIGN IS': 1, 'NOT JUST': 1, 'JUST SOLVING': 1, 'SOLVING PUZZLES': 1, 'ARTIMA FORUMS': 1, 'GUIDO EBY': 1, 'PEP COROUTINES': 1, 'COROUTINES VIA': 1, 'VIA ENHANCED': 1, 'ENHANCED GENERATORS': 1, 'RELEASE AND': 1, 'AND CHANGELOG': 1, 'NUMERICAL EQUALITY': 1, 'REFERENCE EQUALITY': 1, 'GUIDO HETTINGER': 1, 'RAYMOND FEBRUARY': 1, 'PEP CONDITIONAL': 1, 'TYPES PYTHON': 1, 'RC DOCUMENTATION': 1, 'PEP LITERAL': 1, 'LITERAL STRING': 1, 'WHY MUST': 1, 'MUST SELF': 1, 'SELF BE': 1, 'USED EXPLICITLY': 1, 'EXPLICITLY IN': 1, 'IN METHOD': 1, 'METHOD DEFINITIONS': 1, 'DEFINITIONS AND': 1, 'AND CALLS': 1, 'AND HISTORY': 1, 'HISTORY FAQ': 1, 'REFERENCE SECTION': 1, 'NEW-STYLE AND': 1, 'AND CLASSIC': 1, 'CLASSIC CLASSES': 1, 'CLASSES FOR': 1, 'FOR RELEASE': 1, 'TYPE HINTING': 1, 'HINTING FOR': 1, 'MYPY OPTIONAL': 1, 'TYPING FOR': 1, 'PEP UNIFYING': 1, 'UNIFYING LONG': 1, 'LONG INTEGERS': 1, 'AND INTEGERS': 1, 'THE TILDE': 1, 'TILDE OPERATOR': 1, 'PYTHON STACKOVERFLOW': 1, 'BITWISEOPERATORS PYTHON': 1, 'PYTHON WIKI': 1, 'PEP CHANGING': 1, 'CHANGING THE': 1, \"WHY PYTHON'S\": 1, \"PYTHON'S INTEGER\": 1, 'DIVISION FLOORS': 1, 'AUGUST ROUND': 1, 'AUGUST PYTHON': 1, 'PYTHON ESSENTIAL': 1, 'ESSENTIAL REFERENCE': 1, 'REFERENCE DAVID': 1, 'BEAZLEY BUILT-IN': 1, 'BUILT-IN TYPE': 1, 'PIOTROWSKI PRZEMYSLAW': 1, 'PRZEMYSLAW JULY': 1, 'BUILD A': 1, 'A RAPID': 1, 'RAPID WEB': 1, 'WEB DEVELOPMENT': 1, 'DEVELOPMENT ENVIRONMENT': 1, 'ENVIRONMENT FOR': 1, 'PYTHON SERVER': 1, 'SERVER PAGES': 1, 'PAGES AND': 1, 'AND ORACLE': 1, 'ORACLE TECHNOLOGY': 1, 'TECHNOLOGY NETWORK': 1, 'FACUNDO OCTOBER': 1, 'ENTHOUGHT CANOPY': 1, 'GUIDO JUNE': 1, 'PEP STYLE': 1, 'STYLE GUIDE': 1, 'GUIDE FOR': 1, 'FOR CODE': 1, 'CPYTHON BYTE': 1, 'INTERNALS PDF': 1, 'PYPY COMPATIBILITY': 1, 'SPEED COMPARISON': 1, 'COMPARISON BETWEEN': 1, 'BETWEEN CPYTHON': 1, 'STM WITH': 1, 'WITH THREADS': 1, 'APPLICATION-LEVEL STACKLESS': 1, 'STACKLESS FEATURES': 1, 'FEATURES PYPY': 1, 'PLANS FOR': 1, 'FOR OPTIMIZING': 1, 'OPTIMIZING PYTHON': 1, 'GOOGLE PROJECT': 1, 'PROJECT HOSTING': 1, 'PYTHON ON': 1, 'STOCHASTIC GEOMETRY': 1, 'HOME NUITKA': 1, 'MURRI RICCARDO': 1, 'PERFORMANCE OF': 1, 'PYTHON RUNTIMES': 1, 'RUNTIMES ON': 1, 'A NON-NUMERIC': 1, 'NON-NUMERIC SCIENTIFIC': 1, 'SCIENTIFIC CODE': 1, 'EUROPEAN CONFERENCE': 1, 'SCIENCE EUROSCIPY': 1, 'A WARSAW': 1, 'WARSAW BARRY': 1, 'BARRY HYLTON': 1, 'HYLTON JEREMY': 1, 'JEREMY GOODGER': 1, 'DAVID JUNE': 1, 'PEP PEP': 1, 'PEP PURPOSE': 1, 'CANNON BRETT': 1, 'GUIDO SOME': 1, 'SOME GUYS': 1, 'GUYS AND': 1, 'A MAILING': 1, 'LIST HOW': 1, 'HOW PYTHON': 1, 'IS DEVELOPED': 1, 'ON JUNE': 1, \"PYTHON DEVELOPER'S\": 1, \"DEVELOPER'S GUIDE\": 1, 'NORWITZ NEAL': 1, 'NEAL APRIL': 1, 'PYTHON-DEV RELEASE': 1, 'RELEASE SCHEDULES': 1, 'SCHEDULES WAS': 1, 'WAS STABILITY': 1, 'STABILITY CHANGE': 1, 'AAHZ BAXTER': 1, 'ANTHONY MARCH': 1, 'PEP BUG': 1, 'BUG FIX': 1, 'FIX RELEASES': 1, 'PYTHON BUILDBOT': 1, 'DEVELOPERS GUIDE': 1, 'A WHETTING': 1, 'WHETTING YOUR': 1, 'YOUR APPETITE': 1, 'PYTHON SHOULD': 1, 'SHOULD I': 1, 'I USE': 1, 'USE ELSE': 1, 'ELSE AFTER': 1, 'A RETURN': 1, 'RETURN IN': 1, 'AN IF': 1, 'IF BLOCK': 1, 'STACK OVERFLOW': 1, 'STACK EXCHANGE': 1, 'PYTHON POWERFUL': 1, 'POWERFUL OBJECT-ORIENTED': 1, 'MEDIA INC': 1, 'FEHILY CHRIS': 1, 'PEACHPIT PRESS': 1, 'TIOBE THE': 1, 'THE SOFTWARE': 1, 'SOFTWARE QUALITY': 1, 'QUALITY COMPANY': 1, 'SOFTWARE INDEX': 1, 'INDEX PYTHON': 1, 'PRECHELT LUTZ': 1, 'LUTZ MARCH': 1, 'EMPIRICAL COMPARISON': 1, 'JAVA PERL': 1, 'PERL PYTHON': 1, 'REXX AND': 1, 'AND TCL': 1, 'TCL PDF': 1, 'QUOTES ABOUT': 1, 'ORGANIZATIONS USING': 1, 'THE HOLY': 1, 'HOLY GRAIL': 1, 'GRAIL OF': 1, 'CERN BULLETIN': 1, 'CERN PUBLICATIONS': 1, 'SHAFER DANIEL': 1, 'PYTHON STREAMLINES': 1, 'STREAMLINES SPACE': 1, 'SPACE SHUTTLE': 1, 'SHUTTLE MISSION': 1, 'MISSION DESIGN': 1, 'FORTENBERRY TIM': 1, 'TIM JANUARY': 1, 'INDUSTRIAL LIGHT': 1, 'LIGHT MAGIC': 1, 'MAGIC RUNS': 1, 'RUNS ON': 1, 'TAFT DARRYL': 1, 'PYTHON SLITHERS': 1, 'SLITHERS INTO': 1, 'INTO SYSTEMS': 1, 'ZIFF DAVIS': 1, 'DAVIS HOLDINGS': 1, 'USAGE STATISTICS': 1, 'STATISTICS AND': 1, 'AND MARKET': 1, 'MARKET SHARE': 1, 'SHARE OF': 1, 'FOR WEBSITES': 1, 'OLIPHANT TRAVIS': 1, 'FOR SCIENTIFIC': 1, 'JARROD AIVAZIS': 1, 'AIVAZIS MICHAEL': 1, 'FOR SCIENTISTS': 1, 'SCIENTISTS AND': 1, 'AND ENGINEERS': 1, 'NUMERIC COMPUTATION': 1, 'COMPUTATION AND': 1, 'STATISTICAL DATA': 1, 'ANALYSIS ON': 1, 'SCIENTIFIC DATA': 1, 'ANALYSIS USING': 1, 'USING JYTHON': 1, 'JYTHON SCRIPTING': 1, 'SCRIPTING AND': 1, 'INSTALLERS FOR': 1, 'FOR GIMP': 1, 'GIMP FOR': 1, 'FOR WINDOWS': 1, 'WINDOWS FREQUENTLY': 1, 'FREQUENTLY ASKED': 1, 'ASKED QUESTIONS': 1, 'JASC PSP': 1, 'PSP COMPONENTS': 1, 'ON MARCH': 1, 'ABOUT GETTING': 1, 'GETTING STARTED': 1, 'STARTED WITH': 1, 'WITH WRITING': 1, 'WRITING GEOPROCESSING': 1, 'GEOPROCESSING SCRIPTS': 1, 'ARCGIS DESKTOP': 1, 'DESKTOP HELP': 1, 'ENVIRONMENTAL SYSTEMS': 1, 'SYSTEMS RESEARCH': 1, 'RESEARCH INSTITUTE': 1, 'CCP PORKBELLY': 1, 'PORKBELLY AUGUST': 1, 'EVE COMMUNITY': 1, 'COMMUNITY DEV': 1, 'DEV BLOGS': 1, 'CCP GAMES': 1, 'AS YOU': 1, 'YOU MAY': 1, 'MAY KNOW': 1, 'KNOW EVE': 1, 'EVE HAS': 1, 'HAS AT': 1, 'AT ITS': 1, 'CORE THE': 1, 'THE PROGRAMMING': 1, 'LANGUAGE KNOWN': 1, 'KNOWN AS': 1, 'AS STACKLESS': 1, 'CAUDILL BARRY': 1, 'BARRY SEPTEMBER': 1, 'MODDING SID': 1, 'IV DEVELOPER': 1, 'DEVELOPER BLOG': 1, 'FIRAXIS GAMES': 1, 'CREATED THREE': 1, 'THREE LEVELS': 1, 'LEVELS OF': 1, 'OF TOOLS': 1, 'THE NEXT': 1, 'NEXT LEVEL': 1, 'LEVEL OFFERS': 1, 'OFFERS PYTHON': 1, 'AND XML': 1, 'XML SUPPORT': 1, 'SUPPORT LETTING': 1, 'LETTING MODDERS': 1, 'MODDERS WITH': 1, 'WITH MORE': 1, 'MORE EXPERIENCE': 1, 'EXPERIENCE MANIPULATE': 1, 'MANIPULATE THE': 1, 'THE GAME': 1, 'GAME WORLD': 1, 'WORLD AND': 1, 'AND EVERYTHING': 1, 'EVERYTHING IN': 1, 'IN IT': 1, 'LANGUAGE GUIDE': 1, 'GOOGLE DOCUMENTS': 1, 'DOCUMENTS LIST': 1, 'LIST DATA': 1, 'DATA API': 1, 'PYTHON BEST': 1, 'BEST PROGRAMMING': 1, 'FOR ALGORITHMIC': 1, 'TRADING SYSTEMS': 1, 'TRADING WITH': 1, 'WITH INTERACTIVE': 1, 'INTERACTIVE BROKERS': 1, 'BROKERS USING': 1, 'PYTHON AN': 1, 'AN IBPY': 1, 'IBPY TUTORIAL': 1, 'FOR ARTIFICIAL': 1, 'ON NOVEMBER': 1, 'PAINE JOCELYN': 1, 'JOCELYN ED': 1, 'AI IN': 1, 'AI EXPERT': 1, 'EXPERT NEWSLETTER': 1, 'RUSSELL STUART': 1, 'NORVIG PETER': 1, 'INTELLIGENCE A': 1, 'A MODERN': 1, 'MODERN APPROACH': 1, 'APPROACH RD': 1, 'RD ED': 1, 'UPPER SADDLE': 1, 'SADDLE RIVER': 1, 'RIVER NJ': 1, 'NJ PRENTICE': 1, 'PRENTICE HALL': 1, 'LANGUAGE TOOLKIT': 1, 'IMMUNITY KNOWING': 1, \"KNOWING YOU'RE\": 1, \"YOU'RE SECURE\": 1, 'CORELABS SITE': 1, 'WHAT IS': 1, 'IS SUGAR': 1, 'AND FIXES': 1, 'DOCUMENT FOUNDATION': 1, 'GOTCHAS FOR': 1, 'PYTHON USERS': 1, 'CODEHAUS FOUNDATION': 1, 'COMPARISON TO': 1, 'PROPOSALS ITERATORS': 1, 'ITERATORS AND': 1, 'AND GENERATORS': 1, 'GENERATORS ES': 1, 'ES WIKI': 1, 'KINCAID JASON': 1, 'JASON NOVEMBER': 1, \"GOOGLE'S GO\": 1, 'GO A': 1, 'NEW PROGRAMMING': 1, \"LANGUAGE THAT'S\": 1, \"THAT'S PYTHON\": 1, 'PYTHON MEETS': 1, 'STRACHAN JAMES': 1, 'JAMES AUGUST': 1, 'GROOVY THE': 1, 'THE BIRTH': 1, 'BIRTH OF': 1, 'NEW DYNAMIC': 1, 'LIN MIKE': 1, 'THING FOR': 1, 'FOR OCAML': 1, 'MASSACHUSETTS INSTITUTE': 1, 'INSTITUTE OF': 1, 'OF TECHNOLOGY': 1, 'OF RUBY': 1, 'I STARTED': 1, 'STARTED WORK': 1, 'SWIFT PROGRAMMING': 1, 'JULY OF': 1, 'I IMPLEMENTED': 1, 'IMPLEMENTED MUCH': 1, 'MUCH OF': 1, 'THE BASIC': 1, 'BASIC LANGUAGE': 1, 'LANGUAGE STRUCTURE': 1, 'STRUCTURE WITH': 1, 'WITH ONLY': 1, 'FEW PEOPLE': 1, 'PEOPLE KNOWING': 1, 'KNOWING OF': 1, 'ITS EXISTENCE': 1, 'FEW OTHER': 1, 'OTHER AMAZING': 1, 'AMAZING PEOPLE': 1, 'PEOPLE STARTED': 1, 'STARTED CONTRIBUTING': 1, 'CONTRIBUTING IN': 1, 'IN EARNEST': 1, 'EARNEST LATE': 1, 'LATE IN': 1, 'IT BECAME': 1, 'BECAME A': 1, 'MAJOR FOCUS': 1, 'FOCUS FOR': 1, 'THE APPLE': 1, 'APPLE DEVELOPER': 1, 'DEVELOPER TOOLS': 1, 'TOOLS GROUP': 1, 'GROUP IN': 1, 'KUPRIES ANDREAS': 1, 'ANDREAS FELLOWS': 1, 'FELLOWS DONAL': 1, 'TIP TIP': 1, 'TIP FORMAT': 1, 'TCL DEVELOPER': 1, 'DEVELOPER XCHANGE': 1, 'GUSTAFSSON PER': 1, 'PER NISKANEN': 1, 'NISKANEN RAIMO': 1, 'RAIMO JANUARY': 1, 'EEP EEP': 1, 'EEP PURPOSE': 1, 'INDEX FOR': 1, 'FOR MARCH': 1, 'READING EDIT': 1, 'EDIT DOWNEY': 1, 'DOWNEY ALLEN': 1, 'THINK PYTHON': 1, 'PYTHON HOW': 1, 'A COMPUTER': 1, 'COMPUTER SCIENTIST': 1, 'SCIENTIST VERSION': 1, 'HAMILTON NAOMI': 1, 'NAOMI AUGUST': 1, 'THE A-Z': 1, 'A-Z OF': 1, 'LANGUAGES PYTHON': 1, 'PYTHON TH': 1, 'TH ED': 1, 'PYTHON ND': 1, 'ND ED': 1, 'ADDISON-WESLEY PROFESSIONAL': 1, 'LINKS EDIT': 1, 'EDIT FIND': 1, 'FIND MORE': 1, 'MORE ABOUTPYTHON': 1, 'ABOUTPYTHON PROGRAMMING': 1, 'PROGRAMMING LANGUAGE)AT': 1, \"LANGUAGE)AT WIKIPEDIA'S\": 1, \"WIKIPEDIA'S SISTER\": 1, 'SISTER PROJECTS': 1, 'PROJECTS MEDIA': 1, 'MEDIA FROM': 1, 'FROM WIKIMEDIA': 1, 'WIKIMEDIA COMMONS': 1, 'COMMONS QUOTATIONS': 1, 'QUOTATIONS FROM': 1, 'FROM WIKIQUOTE': 1, 'WIKIQUOTE TEXTBOOKS': 1, 'TEXTBOOKS FROM': 1, 'FROM WIKIBOOKS': 1, 'WIKIBOOKS LEARNING': 1, 'LEARNING RESOURCES': 1, 'RESOURCES FROM': 1, 'FROM WIKIVERSITY': 1, 'WIKIVERSITY OFFICIAL': 1, 'OFFICIAL WEBSITE': 1, 'WEBSITE PYTHON': 1, 'PYTHON AT': 1, 'AT CURLIE': 1, 'CURLIE BASED': 1, 'ON DMOZ': 1, 'DMOZ PROGRAMMING': 1, 'LANGUAGES COMPARISON': 1, 'COMPARISON TIMELINE': 1, 'TIMELINE HISTORY': 1, 'HISTORY ASSEMBLY': 1, 'ASSEMBLY BASIC': 1, 'BASIC COBOL': 1, 'COBOL FORTRAN': 1, 'FORTRAN GO': 1, 'GROOVY HASKELL': 1, 'HASKELL JAVA': 1, 'JAVA JAVASCRIPT': 1, 'JAVASCRIPT JS': 1, 'JS KOTLIN': 1, 'KOTLIN LISP': 1, 'LISP LUA': 1, 'LUA OBJECTIVE-C': 1, 'OBJECTIVE-C PASCAL': 1, 'PASCAL PERL': 1, 'PERL PHP': 1, 'PHP PYTHON': 1, 'REXX RUBY': 1, 'RUBY SHELL': 1, 'SHELL SMALLTALK': 1, 'SMALLTALK SWIFT': 1, 'SWIFT VISUAL': 1, 'VISUAL BASIC': 1, 'BASIC NET': 1, 'NET VB.NET': 1, 'VB.NET VBSCRIPT': 1, 'VBSCRIPT MORE': 1, 'CATEGORY LISTS': 1, 'LISTS ALPHABETICAL': 1, 'ALPHABETICAL CATEGORICAL': 1, 'CATEGORICAL GENERATIONAL': 1, 'GENERATIONAL NON-ENGLISH-BASED': 1, 'NON-ENGLISH-BASED PYTHON': 1, 'IMPLEMENTATIONS CLPYTHON': 1, 'CLPYTHON CPYTHON': 1, 'CPYTHON CYTHON': 1, 'CYTHON MICROPYTHON': 1, 'NUMBA IRONPYTHON': 1, 'JYTHON PSYCO': 1, 'PSYCO PYPY': 1, 'PYPY PYTHON': 1, 'FOR SHED': 1, 'SKIN STACKLESS': 1, 'PYTHON UNLADEN': 1, 'SWALLOW MORE': 1, 'IDE BOA': 1, 'BOA ERIC': 1, 'ERIC PYTHON': 1, 'IDE IDLE': 1, 'IDLE PYDEV': 1, 'PYDEV SPE': 1, 'SPE NINJA-IDE': 1, 'NINJA-IDE MORE': 1, 'TOPICS WSGI': 1, 'WSGI SOFTWARE': 1, 'SOFTWARE LIST': 1, 'LIST PYTHON': 1, 'FOUNDATION PYCON': 1, 'PYCON PYTHON': 1, 'FRAMEWORKS BLUEBREAM': 1, 'BLUEBREAM BOTTLE': 1, 'BOTTLE CHERRYPY': 1, 'CHERRYPY DJANGO': 1, 'DJANGO FLASK': 1, 'FLASK GROK': 1, 'GROK NAGARE': 1, 'NAGARE NEVOW': 1, 'NEVOW PYJS': 1, 'PYJS PYLONS': 1, 'PYRAMID QUIXOTE': 1, 'QUIXOTE SPYCE': 1, 'SPYCE TACTIC': 1, 'TACTIC TORNADO': 1, 'TORNADO TURBOGEARS': 1, 'TURBOGEARS TWISTEDWEB': 1, 'TWISTEDWEB WEBWARE': 1, 'WEBWARE WEB': 1, 'PY ZOPE': 1, 'ZOPE MORE': 1, 'SOFTWARE GENERAL': 1, 'GENERAL ALTERNATIVE': 1, 'ALTERNATIVE TERMS': 1, 'TERMS FOR': 1, 'FOR FREE': 1, 'OF OPEN-SOURCE': 1, 'OPEN-SOURCE AND': 1, 'AND CLOSED-SOURCE': 1, 'CLOSED-SOURCE SOFTWARE': 1, 'OF SOURCE': 1, 'SOURCE CODE': 1, 'CODE HOSTING': 1, 'HOSTING FACILITIES': 1, 'FACILITIES FREE': 1, 'SOFTWARE FREE': 1, 'SOFTWARE PROJECT': 1, 'PROJECT DIRECTORIES': 1, 'DIRECTORIES GRATIS': 1, 'GRATIS VERSUS': 1, 'VERSUS LIBRE': 1, 'LIBRE LONG-TERM': 1, 'LONG-TERM SUPPORT': 1, 'SUPPORT OPEN-SOURCE': 1, 'SOFTWARE OPEN-SOURCE': 1, 'SOFTWARE DEVELOPMENT': 1, 'DEVELOPMENT OUTLINE': 1, 'OUTLINE SOFTWARE': 1, 'SOFTWARE PACKAGES': 1, 'PACKAGES AUDIO': 1, 'AUDIO BIOINFORMATICS': 1, 'BIOINFORMATICS CODECS': 1, 'CODECS COLLABORATION': 1, 'COLLABORATION CONFIGURATION': 1, 'CONFIGURATION MANAGEMENT': 1, 'MANAGEMENT DEVICE': 1, 'DEVICE DRIVERS': 1, 'DRIVERS GRAPHICS': 1, 'GRAPHICS WIRELESS': 1, 'WIRELESS GEOPHYSICS': 1, 'GEOPHYSICS HEALTH': 1, 'HEALTH MATHEMATICS': 1, 'MATHEMATICS OPERATING': 1, 'SYSTEMS PROGRAMMING': 1, 'LANGUAGES ROUTING': 1, 'ROUTING STATISTICS': 1, 'STATISTICS TELEVISION': 1, 'TELEVISION VIDEO': 1, 'GAMES WEB': 1, 'APPLICATIONS CONTENT': 1, 'CONTENT MANAGEMENT': 1, 'MANAGEMENT SYSTEMS': 1, 'SYSTEMS E-COMMERCE': 1, 'E-COMMERCE WORD': 1, 'WORD PROCESSORS': 1, 'PROCESSORS ANDROID': 1, 'ANDROID APPS': 1, 'APPS IOS': 1, 'IOS APPS': 1, 'APPS COMMERCIAL': 1, 'COMMERCIAL TRADEMARKED': 1, 'TRADEMARKED FORMERLY': 1, 'FORMERLY PROPRIETARY': 1, 'PROPRIETARY COMMUNITY': 1, 'COMMUNITY FREE': 1, 'MOVEMENT HISTORY': 1, 'HISTORY OPEN-SOURCE': 1, 'MOVEMENT ORGANIZATIONS': 1, 'ORGANIZATIONS EVENTS': 1, 'EVENTS LICENSES': 1, 'LICENSES AFL': 1, 'AFL APACHE': 1, 'APACHE APSL': 1, 'APSL ARTISTIC': 1, 'ARTISTIC BEERWARE': 1, 'BEERWARE BOOST': 1, 'BOOST BSD': 1, 'BSD CC': 1, 'CC CDDL': 1, 'CDDL EPL': 1, 'EPL GNU': 1, 'GNU GPL': 1, 'GPL GNU': 1, 'GNU LGPL': 1, 'LGPL ISC': 1, 'ISC MIT': 1, 'MIT MPL': 1, 'MPL MS-PL/RL': 1, 'MS-PL/RL PYTHON': 1, 'FOUNDATION SLEEPYCAT': 1, 'SLEEPYCAT UNLICENSE': 1, 'UNLICENSE WTFPL': 1, 'WTFPL ZLIB': 1, 'ZLIB LICENSE': 1, 'LICENSE TYPES': 1, 'AND STANDARDS': 1, 'STANDARDS COMPARISON': 1, 'SOFTWARE LICENSES': 1, 'LICENSES CONTRIBUTOR': 1, 'CONTRIBUTOR LICENSE': 1, 'LICENSE AGREEMENT': 1, 'AGREEMENT COPYFREE': 1, 'COPYFREE COPYLEFT': 1, 'COPYLEFT DEBIAN': 1, 'DEBIAN FREE': 1, 'SOFTWARE GUIDELINES': 1, 'GUIDELINES DEFINITION': 1, 'DEFINITION OF': 1, 'FREE CULTURAL': 1, 'CULTURAL WORKS': 1, 'WORKS FREE': 1, 'FREE LICENSE': 1, 'LICENSE THE': 1, 'THE FREE': 1, 'SOFTWARE DEFINITION': 1, 'DEFINITION THE': 1, 'THE OPEN': 1, 'SOURCE DEFINITION': 1, 'DEFINITION OPEN-SOURCE': 1, 'OPEN-SOURCE LICENSE': 1, 'LICENSE PERMISSIVE': 1, 'PERMISSIVE SOFTWARE': 1, 'SOFTWARE LICENCE': 1, 'LICENCE PUBLIC': 1, 'PUBLIC DOMAIN': 1, 'DOMAIN VIRAL': 1, 'VIRAL LICENSE': 1, 'LICENSE CHALLENGES': 1, 'CHALLENGES BINARY': 1, 'BINARY BLOB': 1, 'BLOB DIGITAL': 1, 'DIGITAL RIGHTS': 1, 'RIGHTS MANAGEMENT': 1, 'MANAGEMENT HARDWARE': 1, 'HARDWARE RESTRICTIONS': 1, 'RESTRICTIONS LICENSE': 1, 'LICENSE PROLIFERATION': 1, 'PROLIFERATION MOZILLA': 1, 'MOZILLA SOFTWARE': 1, 'SOFTWARE REBRANDING': 1, 'REBRANDING PROPRIETARY': 1, 'PROPRIETARY SOFTWARE': 1, 'SOFTWARE SCO/LINUX': 1, 'SCO/LINUX CONTROVERSIES': 1, 'CONTROVERSIES SECURE': 1, 'SECURE BOOT': 1, 'BOOT SOFTWARE': 1, 'SOFTWARE PATENTS': 1, 'PATENTS SOFTWARE': 1, 'SOFTWARE SECURITY': 1, 'SECURITY TRUSTED': 1, 'TRUSTED COMPUTING': 1, 'COMPUTING RELATED': 1, 'RELATED TOPICS': 1, 'TOPICS THE': 1, 'THE CATHEDRAL': 1, 'CATHEDRAL AND': 1, 'THE BAZAAR': 1, 'BAZAAR FORKING': 1, 'FORKING MICROSOFT': 1, 'MICROSOFT OPEN': 1, 'OPEN SPECIFICATION': 1, 'SPECIFICATION PROMISE': 1, 'PROMISE REVOLUTION': 1, 'REVOLUTION OS': 1, 'OS BOOK': 1, 'BOOK CATEGORY': 1, 'CATEGORY COMMONS': 1, 'COMMONS PORTAL': 1, 'PORTAL AUTHORITY': 1, 'AUTHORITY CONTROL': 1, 'CONTROL LCCN': 1, 'LCCN SH': 1, 'SH GND': 1, 'GND SUDOC': 1, 'SUDOC BNF': 1, 'BNF CB': 1, 'CB DATA': 1})\n" + ] + } + ], + "source": [ + "print(getNgrams(content, 2))" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.6.1" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/v2/Chapter09_NaturalLanguages.ipynb b/v2/Chapter09_NaturalLanguages.ipynb new file mode 100644 index 0000000..139482a --- /dev/null +++ b/v2/Chapter09_NaturalLanguages.ipynb @@ -0,0 +1,310 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Counter({'OF THE PEOPLE': 13, 'OF THE CONSTITUTION': 11, 'THE UNITED STATES': 10, 'OF THE UNITED': 9, 'IT MAY BE': 8, 'OF THE GOVERNMENT': 8, 'THE CHARACTER OF': 7, 'OF THE EXECUTIVE': 7, 'BY THE CONSTITUTION': 6, 'PART OF THE': 6, 'OF THE LEGISLATIVE': 6, 'OF THE STATES': 6, 'ACTS OF THE': 6, 'OF THE PUBLIC': 6, 'OF THE WHOLE': 6, 'IN RELATION TO': 5, 'OF POWER TO': 5, 'OF ALL THE': 5, 'AS TO THE': 5, 'TO THE EXECUTIVE': 5, 'THE ACTS OF': 5, 'OF THE LEGISLATURE': 5, 'OF THE COUNTRY': 5, 'AS WELL AS': 5, 'IT HAS BEEN': 4, 'THE PEOPLE TO': 4, 'ON THE CONTRARY': 4, 'GRANT OF POWER': 4, 'PEOPLE OF THE': 4, 'THE INFLUENCE OF': 4, 'ONE OF THE': 4, 'THE HANDS OF': 4, 'EXERCISE OF THE': 4, 'OF THE FORMER': 4, 'IT WOULD BE': 4, 'IF THERE IS': 4, 'CHARACTER OF THE': 4, 'THE EXECUTIVE DEPARTMENT': 4, 'THE GENERAL GOVERNMENT': 4, 'THE CONTROL OF': 4, 'CONTROL OF THE': 4, 'OF THE TREASURY': 4, 'THE CITIZEN OF': 4, 'THE CITIZENS OF': 4, 'THE SPIRIT OF': 4, 'SPIRIT OF LIBERTY': 4, 'WHICH THE CONSTITUTION': 3, 'CALLED UPON TO': 3, 'IT WAS THE': 3, 'SOME OF THE': 3, 'OF THE POWER': 3, 'THE DUTY OF': 3, 'WHICH HAVE BEEN': 3, 'WHICH HAS BEEN': 3, 'BEEN GRANTED TO': 3, 'THE POWER OF': 3, 'BUT BY THE': 3, 'THE PEOPLE OF': 3, 'WHICH THEY HAVE': 3, 'RELATION TO THE': 3, 'OF THE MOST': 3, 'THE FRAMERS OF': 3, 'FRAMERS OF THE': 3, 'NOT APPEAR TO': 3, 'THE GOVERNMENT OF': 3, 'IN ONE OF': 3, 'OF THE DEPARTMENTS': 3, 'THE POWERS WHICH': 3, 'HANDS OF THE': 3, 'THE EXTENT OF': 3, 'AS FAR AS': 3, 'WHICH MAY BE': 3, 'POWER IN THE': 3, 'THE MANAGEMENT OF': 3, 'OF THEIR AFFAIRS': 3, 'THE LOVE OF': 3, 'IT IS THE': 3, 'THE PART OF': 3, 'THE CONTINUANCE OF': 3, 'A PART OF': 3, 'THE POWER TO': 3, 'THE CONSTITUTION HAS': 3, 'THE LEGISLATIVE BODY': 3, 'UPON THE ACTS': 3, 'THE ADOPTION OF': 3, 'THAN ANY OTHER': 3, 'OF THE UNION': 3, 'THE SAME CAUSES': 3, 'THE LEGISLATION OF': 3, 'THE EFFECTS OF': 3, 'DEPARTMENTS OF THE': 3, 'STATE OF THINGS': 3, 'TO CONTROL THE': 3, 'THE FREEDOM OF': 3, 'FREEDOM OF THE': 3, 'AT THIS TIME': 3, 'TO BE THE': 3, 'OF THEIR OWN': 3, 'THE GOVERNMENT SHOULD': 3, 'IT IS IN': 3, 'THE DISTRICT OF': 3, 'DISTRICT OF COLUMBIA': 3, 'OF ANY OTHER': 3, 'AS IN THE': 3, 'THE CHARACTER AND': 3, 'THE WHOLE COUNTRY': 3, 'I PROCEED TO': 2, 'IN THE DISCHARGE': 2, 'THE DISCHARGE OF': 2, 'DISCHARGE OF THE': 2, 'OF THE DUTIES': 2, 'WHICH I SHALL': 2, 'I SHALL BE': 2, 'UPON TO PERFORM': 2, 'REMARK OF A': 2, 'OF A ROMAN': 2, 'OF THAT CELEBRATED': 2, 'IN THE LATTER': 2, 'THE LAPSE OF': 2, 'EXAMINATION OF THE': 2, 'OF SOME OF': 2, 'UPON THEIR PART': 2, 'SUPPOSED TO HAVE': 2, 'THERE MAY BE': 2, 'OF A FEW': 2, 'AND I SHALL': 2, 'THE MASS OF': 2, 'OF THOSE WHO': 2, 'THE POWER WHICH': 2, 'POWER WHICH IT': 2, 'WHICH IT HAS': 2, 'THE AID OF': 2, 'TO ME BY': 2, 'UPON WHICH OUR': 2, 'NONE OF THE': 2, 'OF THE GREAT': 2, 'TO THAT OF': 2, 'IF WE WOULD': 2, 'OF OUR PEOPLE': 2, 'OF OUR CITIZENS': 2, 'AMOUNT OF POWER': 2, 'THAT WHICH HAS': 2, 'TO THEM BY': 2, 'THEM BY THE': 2, 'SO FAR AS': 2, 'AN EXPRESS GRANT': 2, 'THE CONSTITUTION OF': 2, 'CONSTITUTION OF THE': 2, 'POWER TO THE': 2, 'OF THAT INSTRUMENT': 2, 'BE FOUND TO': 2, 'THE RIGHT TO': 2, 'BEING IN THE': 2, 'IN THE LANGUAGE': 2, 'THE LANGUAGE OF': 2, 'OF OUR SYSTEM': 2, 'THE SUBJECT OF': 2, 'SUBJECT OF THE': 2, 'WITH OR WITHOUT': 2, 'NOT OF A': 2, 'PRESCRIBED BY THE': 2, 'THE GOVERNMENT THE': 2, 'BY THE SAME': 2, 'SHARE OF THE': 2, 'BY THE PEOPLE': 2, 'THE AMOUNT OF': 2, 'AND NOT ONLY': 2, 'THE EXERCISE OF': 2, 'TO CARRY INTO': 2, 'CARRY INTO EFFECT': 2, 'INTO EFFECT THE': 2, 'MANY OF OUR': 2, 'AT ONE TIME': 2, 'OF THEIR POLITICAL': 2, 'OF EACH OF': 2, 'ARE ATTRIBUTABLE TO': 2, 'DANGER TO OUR': 2, 'TO OUR INSTITUTIONS': 2, 'DOES NOT APPEAR': 2, 'TO ME TO': 2, 'ME TO BE': 2, 'TO BE IN': 2, 'THE PEOPLE BUT': 2, 'THE DEPARTMENTS OF': 2, 'HAVE BEEN GRANTED': 2, 'WHEN THE CONSTITUTION': 2, 'FROM THE HANDS': 2, 'OF THE CONVENTION': 2, 'WHICH HAD BEEN': 2, 'THE FEDERAL GOVERNMENT': 2, 'FEDERAL GOVERNMENT AND': 2, 'ASSIGNED TO THE': 2, 'NOT TO BE': 2, 'THE TENDENCY OF': 2, 'POWER TO INCREASE': 2, 'TO INCREASE ITSELF': 2, 'TO SAY THAT': 2, 'HAS BEEN IN': 2, 'THAT I SHOULD': 2, 'TO ITS PRISTINE': 2, 'ITS PRISTINE HEALTH': 2, 'PRISTINE HEALTH AND': 2, 'CAN BE EFFECTED': 2, 'BE EFFECTED BY': 2, 'PLACED IN MY': 2, 'IN MY HANDS': 2, 'OPINION OF THE': 2, 'TO BE FOUND': 2, 'DEFECTS OF THE': 2, 'A MISCONSTRUCTION OF': 2, 'OF ITS PROVISIONS': 2, 'OF THE SAME': 2, 'A SECOND TERM': 2, 'IS IN THE': 2, 'THE OPINION OF': 2, 'FRAMED THE CONSTITUTION': 2, 'HAVE BEEN THE': 2, 'MAY BE OBSERVED': 2, 'BE OBSERVED HOWEVER': 2, 'OF POWER IN': 2, 'IN THE BOSOMS': 2, 'THE BOSOMS OF': 2, 'OF THOSE TO': 2, 'THOSE TO WHOM': 2, 'MORE LIKELY TO': 2, 'LIKELY TO PRODUCE': 2, 'A STATE OF': 2, 'TO THE CHARACTER': 2, 'OF THE HUMAN': 2, 'LAWS AND THE': 2, 'BY RENEWING THE': 2, 'CONTINUANCE OF THE': 2, 'THE EXECUTIVE POWER': 2, 'OR EITHER OF': 2, 'CAN NOT BE': 2, 'IT IS A': 2, 'AND ALTHOUGH THERE': 2, 'CONFIDENCE IN THE': 2, 'INDEED THAT THE': 2, 'THAT THE CONSTITUTION': 2, 'GIVEN TO THE': 2, 'THE EXECUTIVE THE': 2, 'NO PART OF': 2, 'NEGATIVE UPON THE': 2, 'THAT OF WANT': 2, 'OF WANT OF': 2, 'WANT OF CONFORMITY': 2, 'OF CONFORMITY TO': 2, 'CONFORMITY TO THE': 2, 'TO THE CONSTITUTION': 2, 'OF THE JUDICIARY': 2, 'BOTH HOUSES OF': 2, 'HOUSES OF CONGRESS': 2, 'BY THE EXECUTIVE': 2, 'THAT IN THE': 2, 'IN THE HANDS': 2, 'SEEM TO BE': 2, 'IN OUR SYSTEM': 2, 'THE CONSTITUTION THE': 2, 'APPEAR TO HAVE': 2, 'THE STATE GOVERNMENTS': 2, 'FOR THE ADOPTION': 2, 'PEOPLE AND THE': 2, 'OF THE STATE': 2, 'NOT TO HAVE': 2, 'THE CIRCUMSTANCES OF': 2, 'CIRCUMSTANCES OF THE': 2, 'AND IT IS': 2, 'TIE OF INTEREST': 2, 'THE VETO POWER': 2, 'THE LABORS OF': 2, 'HAD BEEN COMMITTED': 2, 'ADOPTION OF THE': 2, 'TO THE CONVENTION': 2, 'TO THE SECURITY': 2, 'INTERESTS OF THE': 2, 'THE CONSTITUTION AND': 2, 'CONSTITUTED BY THE': 2, 'THAT HIGH OFFICE': 2, 'THE RIGHTS OF': 2, 'POWER TO BE': 2, 'TO PREVENT THE': 2, 'OF THE GENERAL': 2, 'OF THE NATION': 2, 'MADE OF THE': 2, 'OF THE POWERS': 2, 'POWERS WHICH THEY': 2, 'WHICH THEY RESPECTIVELY': 2, 'THEY RESPECTIVELY CLAIM': 2, 'THOSE OF THE': 2, 'THE COMMENCEMENT OF': 2, 'OF ITS OPERATIONS': 2, 'THE RESERVED POWERS': 2, 'RESERVED POWERS OF': 2, 'OF THE FEDERAL': 2, 'FOR WHICH THEY': 2, 'THE MODE OF': 2, 'RIGHTS OF THE': 2, 'THE STATE AUTHORITIES': 2, 'BY THE GREAT': 2, 'THE GREAT INCREASE': 2, 'DEPARTMENT OF THE': 2, 'GENERAL GOVERNMENT BUT': 2, 'GOVERNMENT BUT THE': 2, 'IN THE CONSTITUTION': 2, 'IN CONTROLLING THE': 2, 'CONTROLLING THE FREEDOM': 2, 'OF THE ELECTIVE': 2, 'THE ELECTIVE FRANCHISE': 2, 'IT IS NOT': 2, 'DUTY OF THE': 2, 'OF THE PRESIDENT': 2, 'THE PRESIDENT TO': 2, 'TO ME IT': 2, 'ME IT APPEARS': 2, 'STRANGE INDEED THAT': 2, 'WHICH THE PRESIDENT': 2, 'THE PUBLIC MONEY': 2, 'BY THE POWER': 2, 'UNION OF THE': 2, 'BRANCH OF THE': 2, 'WHICH OUR ANCESTORS': 2, 'OF CIVIL AND': 2, 'CIVIL AND RELIGIOUS': 2, 'SHOULD NEVER BE': 2, 'GOVERNMENT SHOULD BE': 2, 'IT SHOULD BE': 2, 'TO PROPOSE AMENDMENTS': 2, 'THEM TO THE': 2, 'OF KEEPING THE': 2, 'OF THE CITIZENS': 2, 'BY WHICH THE': 2, 'IT IS AN': 2, 'IS AN EXCLUSIVE': 2, 'AN EXCLUSIVE METALLIC': 2, 'EXCLUSIVE METALLIC CURRENCY': 2, 'THERE IS A': 2, 'OF THEIR SUBJECTS': 2, 'IN THE DISTRICT': 2, 'TO THE GENERAL': 2, 'OF OUR COUNTRY': 2, 'OF OUR GOVERNMENT': 2, 'ALL ITS MEMBERS': 2, 'CITIZEN OF ANY': 2, 'BUT THAT OF': 2, 'TO BE EXERCISED': 2, 'CITIZENS OF ONE': 2, 'OF ONE STATE': 2, 'CONTROL THE DOMESTIC': 2, 'THE DESTRUCTION OF': 2, 'THE INSTITUTIONS OF': 2, 'IN THE PRINCIPLES': 2, 'AND FORMS OF': 2, 'WELL AS IN': 2, 'OF THE SEVERAL': 2, 'CONTENT WITH THE': 2, 'THE INDIVIDUAL MEMBERS': 2, 'THE PRINCIPLES OF': 2, 'TO OUR COUNTRY': 2, 'CHARACTER AND CREDIT': 2, 'AND CREDIT OF': 2, 'CREDIT OF THE': 2, 'FOR WHICH OUR': 2, 'OF LIBERTY IS': 2, 'THE CONTRARY NO': 2, 'A FREE PEOPLE': 2, 'AND AS LONG': 2, 'AS LONG AS': 2, 'LONG AS THE': 2, 'THE LIBERTIES OF': 2, 'OF A PEOPLE': 2, 'THE GENUINE SPIRIT': 2, 'GENUINE SPIRIT OF': 2, 'THE TRUE SPIRIT': 2, 'SPIRIT OF PARTY': 2, 'THAT OF LIBERTY': 2, 'TO MY FELLOW-CITIZENS': 2, 'AND OF THE': 2, 'THE INTERESTS OF': 2, 'ON THE PART': 2, 'OF MY COUNTRYMEN': 2, 'FOR THE SAKE': 2, 'THE SAKE OF': 2, 'WHOLE COUNTRY FOR': 2, 'COUNTRY FOR THE': 2, 'FOR THE DEFENSE': 2, 'THE DEFENSE OF': 2, 'THE SUPPORT OF': 2, 'CALLED FROM A': 1, 'FROM A RETIREMENT': 1, 'A RETIREMENT WHICH': 1, 'RETIREMENT WHICH I': 1, 'WHICH I HAD': 1, 'I HAD SUPPOSED': 1, 'HAD SUPPOSED WAS': 1, 'SUPPOSED WAS TO': 1, 'WAS TO CONTINUE': 1, 'TO CONTINUE FOR': 1, 'CONTINUE FOR THE': 1, 'FOR THE RESIDUE': 1, 'THE RESIDUE OF': 1, 'RESIDUE OF MY': 1, 'OF MY LIFE': 1, 'MY LIFE TO': 1, 'LIFE TO FILL': 1, 'TO FILL THE': 1, 'FILL THE CHIEF': 1, 'THE CHIEF EXECUTIVE': 1, 'CHIEF EXECUTIVE OFFICE': 1, 'EXECUTIVE OFFICE OF': 1, 'OFFICE OF THIS': 1, 'OF THIS GREAT': 1, 'THIS GREAT AND': 1, 'GREAT AND FREE': 1, 'AND FREE NATION': 1, 'FREE NATION I': 1, 'NATION I APPEAR': 1, 'I APPEAR BEFORE': 1, 'APPEAR BEFORE YOU': 1, 'BEFORE YOU FELLOW-CITIZENS': 1, 'YOU FELLOW-CITIZENS TO': 1, 'FELLOW-CITIZENS TO TAKE': 1, 'TO TAKE THE': 1, 'TAKE THE OATHS': 1, 'THE OATHS WHICH': 1, 'OATHS WHICH THE': 1, 'THE CONSTITUTION PRESCRIBES': 1, 'CONSTITUTION PRESCRIBES AS': 1, 'PRESCRIBES AS A': 1, 'AS A NECESSARY': 1, 'A NECESSARY QUALIFICATION': 1, 'NECESSARY QUALIFICATION FOR': 1, 'QUALIFICATION FOR THE': 1, 'FOR THE PERFORMANCE': 1, 'THE PERFORMANCE OF': 1, 'PERFORMANCE OF ITS': 1, 'OF ITS DUTIES': 1, 'ITS DUTIES AND': 1, 'DUTIES AND IN': 1, 'AND IN OBEDIENCE': 1, 'IN OBEDIENCE TO': 1, 'OBEDIENCE TO A': 1, 'TO A CUSTOM': 1, 'A CUSTOM COEVAL': 1, 'CUSTOM COEVAL WITH': 1, 'COEVAL WITH OUR': 1, 'WITH OUR GOVERNMENT': 1, 'OUR GOVERNMENT AND': 1, 'GOVERNMENT AND WHAT': 1, 'AND WHAT I': 1, 'WHAT I BELIEVE': 1, 'I BELIEVE TO': 1, 'BELIEVE TO BE': 1, 'TO BE YOUR': 1, 'BE YOUR EXPECTATIONS': 1, 'YOUR EXPECTATIONS I': 1, 'EXPECTATIONS I PROCEED': 1, 'PROCEED TO PRESENT': 1, 'TO PRESENT TO': 1, 'PRESENT TO YOU': 1, 'TO YOU A': 1, 'YOU A SUMMARY': 1, 'A SUMMARY OF': 1, 'SUMMARY OF THE': 1, 'OF THE PRINCIPLES': 1, 'THE PRINCIPLES WHICH': 1, 'PRINCIPLES WHICH WILL': 1, 'WHICH WILL GOVERN': 1, 'WILL GOVERN ME': 1, 'GOVERN ME IN': 1, 'ME IN THE': 1, 'THE DUTIES WHICH': 1, 'DUTIES WHICH I': 1, 'SHALL BE CALLED': 1, 'BE CALLED UPON': 1, 'WAS THE REMARK': 1, 'THE REMARK OF': 1, 'A ROMAN CONSUL': 1, 'ROMAN CONSUL IN': 1, 'CONSUL IN AN': 1, 'IN AN EARLY': 1, 'AN EARLY PERIOD': 1, 'EARLY PERIOD OF': 1, 'PERIOD OF THAT': 1, 'THAT CELEBRATED REPUBLIC': 1, 'CELEBRATED REPUBLIC THAT': 1, 'REPUBLIC THAT A': 1, 'THAT A MOST': 1, 'A MOST STRIKING': 1, 'MOST STRIKING CONTRAST': 1, 'STRIKING CONTRAST WAS': 1, 'CONTRAST WAS OBSERVABLE': 1, 'WAS OBSERVABLE IN': 1, 'OBSERVABLE IN THE': 1, 'IN THE CONDUCT': 1, 'THE CONDUCT OF': 1, 'CONDUCT OF CANDIDATES': 1, 'OF CANDIDATES FOR': 1, 'CANDIDATES FOR OFFICES': 1, 'FOR OFFICES OF': 1, 'OFFICES OF POWER': 1, 'OF POWER AND': 1, 'POWER AND TRUST': 1, 'AND TRUST BEFORE': 1, 'TRUST BEFORE AND': 1, 'BEFORE AND AFTER': 1, 'AND AFTER OBTAINING': 1, 'AFTER OBTAINING THEM': 1, 'OBTAINING THEM THEY': 1, 'THEM THEY SELDOM': 1, 'THEY SELDOM CARRYING': 1, 'SELDOM CARRYING OUT': 1, 'CARRYING OUT IN': 1, 'OUT IN THE': 1, 'THE LATTER CASE': 1, 'LATTER CASE THE': 1, 'CASE THE PLEDGES': 1, 'THE PLEDGES AND': 1, 'PLEDGES AND PROMISES': 1, 'AND PROMISES MADE': 1, 'PROMISES MADE IN': 1, 'MADE IN THE': 1, 'IN THE FORMER': 1, 'HOWEVER MUCH THE': 1, 'MUCH THE WORLD': 1, 'THE WORLD MAY': 1, 'WORLD MAY HAVE': 1, 'MAY HAVE IMPROVED': 1, 'HAVE IMPROVED IN': 1, 'IMPROVED IN MANY': 1, 'IN MANY RESPECTS': 1, 'MANY RESPECTS IN': 1, 'RESPECTS IN THE': 1, 'IN THE LAPSE': 1, 'LAPSE OF UPWARD': 1, 'OF UPWARD OF': 1, 'UPWARD OF TWO': 1, 'OF TWO THOUSAND': 1, 'TWO THOUSAND YEARS': 1, 'THOUSAND YEARS SINCE': 1, 'YEARS SINCE THE': 1, 'SINCE THE REMARK': 1, 'THE REMARK WAS': 1, 'REMARK WAS MADE': 1, 'WAS MADE BY': 1, 'MADE BY THE': 1, 'BY THE VIRTUOUS': 1, 'THE VIRTUOUS AND': 1, 'VIRTUOUS AND INDIGNANT': 1, 'AND INDIGNANT ROMAN': 1, 'INDIGNANT ROMAN I': 1, 'ROMAN I FEAR': 1, 'I FEAR THAT': 1, 'FEAR THAT A': 1, 'THAT A STRICT': 1, 'A STRICT EXAMINATION': 1, 'STRICT EXAMINATION OF': 1, 'OF THE ANNALS': 1, 'THE ANNALS OF': 1, 'ANNALS OF SOME': 1, 'OF THE MODERN': 1, 'THE MODERN ELECTIVE': 1, 'MODERN ELECTIVE GOVERNMENTS': 1, 'ELECTIVE GOVERNMENTS WOULD': 1, 'GOVERNMENTS WOULD DEVELOP': 1, 'WOULD DEVELOP SIMILAR': 1, 'DEVELOP SIMILAR INSTANCES': 1, 'SIMILAR INSTANCES OF': 1, 'INSTANCES OF VIOLATED': 1, 'OF VIOLATED CONFIDENCE': 1, 'ALTHOUGH THE FIAT': 1, 'THE FIAT OF': 1, 'FIAT OF THE': 1, 'THE PEOPLE HAS': 1, 'PEOPLE HAS GONE': 1, 'HAS GONE FORTH': 1, 'GONE FORTH PROCLAIMING': 1, 'FORTH PROCLAIMING ME': 1, 'PROCLAIMING ME THE': 1, 'ME THE CHIEF': 1, 'THE CHIEF MAGISTRATE': 1, 'CHIEF MAGISTRATE OF': 1, 'MAGISTRATE OF THIS': 1, 'OF THIS GLORIOUS': 1, 'THIS GLORIOUS UNION': 1, 'GLORIOUS UNION NOTHING': 1, 'UNION NOTHING UPON': 1, 'NOTHING UPON THEIR': 1, 'THEIR PART REMAINING': 1, 'PART REMAINING TO': 1, 'REMAINING TO BE': 1, 'TO BE DONE': 1, 'BE DONE IT': 1, 'DONE IT MAY': 1, 'MAY BE THOUGHT': 1, 'BE THOUGHT THAT': 1, 'THOUGHT THAT A': 1, 'THAT A MOTIVE': 1, 'A MOTIVE MAY': 1, 'MOTIVE MAY EXIST': 1, 'MAY EXIST TO': 1, 'EXIST TO KEEP': 1, 'TO KEEP UP': 1, 'KEEP UP THE': 1, 'UP THE DELUSION': 1, 'THE DELUSION UNDER': 1, 'DELUSION UNDER WHICH': 1, 'UNDER WHICH THEY': 1, 'WHICH THEY MAY': 1, 'THEY MAY BE': 1, 'MAY BE SUPPOSED': 1, 'BE SUPPOSED TO': 1, 'TO HAVE ACTED': 1, 'HAVE ACTED IN': 1, 'ACTED IN RELATION': 1, 'RELATION TO MY': 1, 'TO MY PRINCIPLES': 1, 'MY PRINCIPLES AND': 1, 'PRINCIPLES AND OPINIONS': 1, 'AND OPINIONS AND': 1, 'OPINIONS AND PERHAPS': 1, 'AND PERHAPS THERE': 1, 'PERHAPS THERE MAY': 1, 'MAY BE SOME': 1, 'BE SOME IN': 1, 'SOME IN THIS': 1, 'IN THIS ASSEMBLY': 1, 'THIS ASSEMBLY WHO': 1, 'ASSEMBLY WHO HAVE': 1, 'WHO HAVE COME': 1, 'HAVE COME HERE': 1, 'COME HERE EITHER': 1, 'HERE EITHER PREPARED': 1, 'EITHER PREPARED TO': 1, 'PREPARED TO CONDEMN': 1, 'TO CONDEMN THOSE': 1, 'CONDEMN THOSE I': 1, 'THOSE I SHALL': 1, 'I SHALL NOW': 1, 'SHALL NOW DELIVER': 1, 'NOW DELIVER OR': 1, 'DELIVER OR APPROVING': 1, 'OR APPROVING THEM': 1, 'APPROVING THEM TO': 1, 'THEM TO DOUBT': 1, 'TO DOUBT THE': 1, 'DOUBT THE SINCERITY': 1, 'THE SINCERITY WITH': 1, 'SINCERITY WITH WHICH': 1, 'WITH WHICH THEY': 1, 'WHICH THEY ARE': 1, 'THEY ARE NOW': 1, 'ARE NOW UTTERED': 1, 'BUT THE LAPSE': 1, 'LAPSE OF A': 1, 'A FEW MONTHS': 1, 'FEW MONTHS WILL': 1, 'MONTHS WILL CONFIRM': 1, 'WILL CONFIRM OR': 1, 'CONFIRM OR DISPEL': 1, 'OR DISPEL THEIR': 1, 'DISPEL THEIR FEARS': 1, 'THE OUTLINE OF': 1, 'OUTLINE OF PRINCIPLES': 1, 'OF PRINCIPLES TO': 1, 'PRINCIPLES TO GOVERN': 1, 'TO GOVERN AND': 1, 'GOVERN AND MEASURES': 1, 'AND MEASURES TO': 1, 'MEASURES TO BE': 1, 'TO BE ADOPTED': 1, 'BE ADOPTED BY': 1, 'ADOPTED BY AN': 1, 'BY AN ADMINISTRATION': 1, 'AN ADMINISTRATION NOT': 1, 'ADMINISTRATION NOT YET': 1, 'NOT YET BEGUN': 1, 'YET BEGUN WILL': 1, 'BEGUN WILL SOON': 1, 'WILL SOON BE': 1, 'SOON BE EXCHANGED': 1, 'BE EXCHANGED FOR': 1, 'EXCHANGED FOR IMMUTABLE': 1, 'FOR IMMUTABLE HISTORY': 1, 'IMMUTABLE HISTORY AND': 1, 'HISTORY AND I': 1, 'I SHALL STAND': 1, 'SHALL STAND EITHER': 1, 'STAND EITHER EXONERATED': 1, 'EITHER EXONERATED BY': 1, 'EXONERATED BY MY': 1, 'BY MY COUNTRYMEN': 1, 'MY COUNTRYMEN OR': 1, 'COUNTRYMEN OR CLASSED': 1, 'OR CLASSED WITH': 1, 'CLASSED WITH THE': 1, 'WITH THE MASS': 1, 'MASS OF THOSE': 1, 'THOSE WHO PROMISED': 1, 'WHO PROMISED THAT': 1, 'PROMISED THAT THEY': 1, 'THAT THEY MIGHT': 1, 'THEY MIGHT DECEIVE': 1, 'MIGHT DECEIVE AND': 1, 'DECEIVE AND FLATTERED': 1, 'AND FLATTERED WITH': 1, 'FLATTERED WITH THE': 1, 'WITH THE INTENTION': 1, 'THE INTENTION TO': 1, 'INTENTION TO BETRAY': 1, 'HOWEVER STRONG MAY': 1, 'STRONG MAY BE': 1, 'MAY BE MY': 1, 'BE MY PRESENT': 1, 'MY PRESENT PURPOSE': 1, 'PRESENT PURPOSE TO': 1, 'PURPOSE TO REALIZE': 1, 'TO REALIZE THE': 1, 'REALIZE THE EXPECTATIONS': 1, 'THE EXPECTATIONS OF': 1, 'EXPECTATIONS OF A': 1, 'OF A MAGNANIMOUS': 1, 'A MAGNANIMOUS AND': 1, 'MAGNANIMOUS AND CONFIDING': 1, 'AND CONFIDING PEOPLE': 1, 'CONFIDING PEOPLE I': 1, 'PEOPLE I TOO': 1, 'I TOO WELL': 1, 'TOO WELL UNDERSTAND': 1, 'WELL UNDERSTAND THE': 1, 'UNDERSTAND THE DANGEROUS': 1, 'THE DANGEROUS TEMPTATIONS': 1, 'DANGEROUS TEMPTATIONS TO': 1, 'TEMPTATIONS TO WHICH': 1, 'TO WHICH I': 1, 'SHALL BE EXPOSED': 1, 'BE EXPOSED FROM': 1, 'EXPOSED FROM THE': 1, 'FROM THE MAGNITUDE': 1, 'THE MAGNITUDE OF': 1, 'MAGNITUDE OF THE': 1, 'HAS BEEN THE': 1, 'BEEN THE PLEASURE': 1, 'THE PLEASURE OF': 1, 'PLEASURE OF THE': 1, 'PEOPLE TO COMMIT': 1, 'TO COMMIT TO': 1, 'COMMIT TO MY': 1, 'TO MY HANDS': 1, 'MY HANDS NOT': 1, 'HANDS NOT TO': 1, 'NOT TO PLACE': 1, 'TO PLACE MY': 1, 'PLACE MY CHIEF': 1, 'MY CHIEF CONFIDENCE': 1, 'CHIEF CONFIDENCE UPON': 1, 'CONFIDENCE UPON THE': 1, 'UPON THE AID': 1, 'AID OF THAT': 1, 'OF THAT ALMIGHTY': 1, 'THAT ALMIGHTY POWER': 1, 'ALMIGHTY POWER WHICH': 1, 'POWER WHICH HAS': 1, 'WHICH HAS HITHERTO': 1, 'HAS HITHERTO PROTECTED': 1, 'HITHERTO PROTECTED ME': 1, 'PROTECTED ME AND': 1, 'ME AND ENABLED': 1, 'AND ENABLED ME': 1, 'ENABLED ME TO': 1, 'ME TO BRING': 1, 'TO BRING TO': 1, 'BRING TO FAVORABLE': 1, 'TO FAVORABLE ISSUES': 1, 'FAVORABLE ISSUES OTHER': 1, 'ISSUES OTHER IMPORTANT': 1, 'OTHER IMPORTANT BUT': 1, 'IMPORTANT BUT STILL': 1, 'BUT STILL GREATLY': 1, 'STILL GREATLY INFERIOR': 1, 'GREATLY INFERIOR TRUSTS': 1, 'INFERIOR TRUSTS HERETOFORE': 1, 'TRUSTS HERETOFORE CONFIDED': 1, 'HERETOFORE CONFIDED TO': 1, 'CONFIDED TO ME': 1, 'ME BY MY': 1, 'BY MY COUNTRY': 1, 'THE BROAD FOUNDATION': 1, 'BROAD FOUNDATION UPON': 1, 'FOUNDATION UPON WHICH': 1, 'WHICH OUR CONSTITUTION': 1, 'OUR CONSTITUTION RESTS': 1, 'CONSTITUTION RESTS BEING': 1, 'RESTS BEING THE': 1, 'BEING THE PEOPLE--A': 1, 'THE PEOPLE--A BREATH': 1, 'PEOPLE--A BREATH OF': 1, 'BREATH OF THEIRS': 1, 'OF THEIRS HAVING': 1, 'THEIRS HAVING MADE': 1, 'HAVING MADE AS': 1, 'MADE AS A': 1, 'AS A BREATH': 1, 'A BREATH CAN': 1, 'BREATH CAN UNMAKE': 1, 'CAN UNMAKE CHANGE': 1, 'UNMAKE CHANGE OR': 1, 'CHANGE OR MODIFY': 1, 'OR MODIFY IT--IT': 1, 'MODIFY IT--IT CAN': 1, 'IT--IT CAN BE': 1, 'CAN BE ASSIGNED': 1, 'BE ASSIGNED TO': 1, 'ASSIGNED TO NONE': 1, 'TO NONE OF': 1, 'THE GREAT DIVISIONS': 1, 'GREAT DIVISIONS OF': 1, 'DIVISIONS OF GOVERNMENT': 1, 'OF GOVERNMENT BUT': 1, 'GOVERNMENT BUT TO': 1, 'BUT TO THAT': 1, 'THAT OF DEMOCRACY': 1, 'IF SUCH IS': 1, 'SUCH IS ITS': 1, 'IS ITS THEORY': 1, 'ITS THEORY THOSE': 1, 'THEORY THOSE WHO': 1, 'THOSE WHO ARE': 1, 'WHO ARE CALLED': 1, 'ARE CALLED UPON': 1, 'UPON TO ADMINISTER': 1, 'TO ADMINISTER IT': 1, 'ADMINISTER IT MUST': 1, 'IT MUST RECOGNIZE': 1, 'MUST RECOGNIZE AS': 1, 'RECOGNIZE AS ITS': 1, 'AS ITS LEADING': 1, 'ITS LEADING PRINCIPLE': 1, 'LEADING PRINCIPLE THE': 1, 'PRINCIPLE THE DUTY': 1, 'DUTY OF SHAPING': 1, 'OF SHAPING THEIR': 1, 'SHAPING THEIR MEASURES': 1, 'THEIR MEASURES SO': 1, 'MEASURES SO AS': 1, 'SO AS TO': 1, 'AS TO PRODUCE': 1, 'TO PRODUCE THE': 1, 'PRODUCE THE GREATEST': 1, 'THE GREATEST GOOD': 1, 'GREATEST GOOD TO': 1, 'GOOD TO THE': 1, 'TO THE GREATEST': 1, 'THE GREATEST NUMBER': 1, 'BUT WITH THESE': 1, 'WITH THESE BROAD': 1, 'THESE BROAD ADMISSIONS': 1, 'BROAD ADMISSIONS IF': 1, 'ADMISSIONS IF WE': 1, 'WE WOULD COMPARE': 1, 'WOULD COMPARE THE': 1, 'COMPARE THE SOVEREIGNTY': 1, 'THE SOVEREIGNTY ACKNOWLEDGED': 1, 'SOVEREIGNTY ACKNOWLEDGED TO': 1, 'ACKNOWLEDGED TO EXIST': 1, 'TO EXIST IN': 1, 'EXIST IN THE': 1, 'IN THE MASS': 1, 'MASS OF OUR': 1, 'OUR PEOPLE WITH': 1, 'PEOPLE WITH THE': 1, 'WITH THE POWER': 1, 'THE POWER CLAIMED': 1, 'POWER CLAIMED BY': 1, 'CLAIMED BY OTHER': 1, 'BY OTHER SOVEREIGNTIES': 1, 'OTHER SOVEREIGNTIES EVEN': 1, 'SOVEREIGNTIES EVEN BY': 1, 'EVEN BY THOSE': 1, 'BY THOSE WHICH': 1, 'THOSE WHICH HAVE': 1, 'HAVE BEEN CONSIDERED': 1, 'BEEN CONSIDERED MOST': 1, 'CONSIDERED MOST PURELY': 1, 'MOST PURELY DEMOCRATIC': 1, 'PURELY DEMOCRATIC WE': 1, 'DEMOCRATIC WE SHALL': 1, 'WE SHALL FIND': 1, 'SHALL FIND A': 1, 'FIND A MOST': 1, 'A MOST ESSENTIAL': 1, 'MOST ESSENTIAL DIFFERENCE': 1, 'ALL OTHERS LAY': 1, 'OTHERS LAY CLAIM': 1, 'LAY CLAIM TO': 1, 'CLAIM TO POWER': 1, 'TO POWER LIMITED': 1, 'POWER LIMITED ONLY': 1, 'LIMITED ONLY BY': 1, 'ONLY BY THEIR': 1, 'BY THEIR OWN': 1, 'THEIR OWN WILL': 1, 'THE MAJORITY OF': 1, 'MAJORITY OF OUR': 1, 'OUR CITIZENS ON': 1, 'CITIZENS ON THE': 1, 'THE CONTRARY POSSESS': 1, 'CONTRARY POSSESS A': 1, 'POSSESS A SOVEREIGNTY': 1, 'A SOVEREIGNTY WITH': 1, 'SOVEREIGNTY WITH AN': 1, 'WITH AN AMOUNT': 1, 'AN AMOUNT OF': 1, 'OF POWER PRECISELY': 1, 'POWER PRECISELY EQUAL': 1, 'PRECISELY EQUAL TO': 1, 'EQUAL TO THAT': 1, 'TO THAT WHICH': 1, 'HAS BEEN GRANTED': 1, 'GRANTED TO THEM': 1, 'BY THE PARTIES': 1, 'THE PARTIES TO': 1, 'PARTIES TO THE': 1, 'TO THE NATIONAL': 1, 'THE NATIONAL COMPACT': 1, 'NATIONAL COMPACT AND': 1, 'COMPACT AND NOTHING': 1, 'AND NOTHING BEYOND': 1, 'WE ADMIT OF': 1, 'ADMIT OF NO': 1, 'OF NO GOVERNMENT': 1, 'NO GOVERNMENT BY': 1, 'GOVERNMENT BY DIVINE': 1, 'BY DIVINE RIGHT': 1, 'DIVINE RIGHT BELIEVING': 1, 'RIGHT BELIEVING THAT': 1, 'BELIEVING THAT SO': 1, 'THAT SO FAR': 1, 'FAR AS POWER': 1, 'AS POWER IS': 1, 'POWER IS CONCERNED': 1, 'IS CONCERNED THE': 1, 'CONCERNED THE BENEFICENT': 1, 'THE BENEFICENT CREATOR': 1, 'BENEFICENT CREATOR HAS': 1, 'CREATOR HAS MADE': 1, 'HAS MADE NO': 1, 'MADE NO DISTINCTION': 1, 'NO DISTINCTION AMONGST': 1, 'DISTINCTION AMONGST MEN': 1, 'AMONGST MEN THAT': 1, 'MEN THAT ALL': 1, 'THAT ALL ARE': 1, 'ALL ARE UPON': 1, 'ARE UPON AN': 1, 'UPON AN EQUALITY': 1, 'AN EQUALITY AND': 1, 'EQUALITY AND THAT': 1, 'AND THAT THE': 1, 'THAT THE ONLY': 1, 'THE ONLY LEGITIMATE': 1, 'ONLY LEGITIMATE RIGHT': 1, 'LEGITIMATE RIGHT TO': 1, 'RIGHT TO GOVERN': 1, 'TO GOVERN IS': 1, 'GOVERN IS AN': 1, 'IS AN EXPRESS': 1, 'EXPRESS GRANT OF': 1, 'OF POWER FROM': 1, 'POWER FROM THE': 1, 'FROM THE GOVERNED': 1, 'UNITED STATES IS': 1, 'STATES IS THE': 1, 'IS THE INSTRUMENT': 1, 'THE INSTRUMENT CONTAINING': 1, 'INSTRUMENT CONTAINING THIS': 1, 'CONTAINING THIS GRANT': 1, 'THIS GRANT OF': 1, 'TO THE SEVERAL': 1, 'THE SEVERAL DEPARTMENTS': 1, 'SEVERAL DEPARTMENTS COMPOSING': 1, 'DEPARTMENTS COMPOSING THE': 1, 'COMPOSING THE GOVERNMENT': 1, 'ON AN EXAMINATION': 1, 'AN EXAMINATION OF': 1, 'EXAMINATION OF THAT': 1, 'THAT INSTRUMENT IT': 1, 'INSTRUMENT IT WILL': 1, 'IT WILL BE': 1, 'WILL BE FOUND': 1, 'FOUND TO CONTAIN': 1, 'TO CONTAIN DECLARATIONS': 1, 'CONTAIN DECLARATIONS OF': 1, 'DECLARATIONS OF POWER': 1, 'OF POWER GRANTED': 1, 'POWER GRANTED AND': 1, 'GRANTED AND OF': 1, 'AND OF POWER': 1, 'OF POWER WITHHELD': 1, 'THE LATTER IS': 1, 'LATTER IS ALSO': 1, 'IS ALSO SUSCEPTIBLE': 1, 'ALSO SUSCEPTIBLE OF': 1, 'SUSCEPTIBLE OF DIVISION': 1, 'OF DIVISION INTO': 1, 'DIVISION INTO POWER': 1, 'INTO POWER WHICH': 1, 'POWER WHICH THE': 1, 'WHICH THE MAJORITY': 1, 'THE MAJORITY HAD': 1, 'MAJORITY HAD THE': 1, 'HAD THE RIGHT': 1, 'RIGHT TO GRANT': 1, 'TO GRANT BUT': 1, 'GRANT BUT WHICH': 1, 'BUT WHICH THEY': 1, 'WHICH THEY DO': 1, 'THEY DO NOT': 1, 'DO NOT THINK': 1, 'NOT THINK PROPER': 1, 'THINK PROPER TO': 1, 'PROPER TO INTRUST': 1, 'TO INTRUST TO': 1, 'INTRUST TO THEIR': 1, 'TO THEIR AGENTS': 1, 'THEIR AGENTS AND': 1, 'AGENTS AND THAT': 1, 'AND THAT WHICH': 1, 'THAT WHICH THEY': 1, 'WHICH THEY COULD': 1, 'THEY COULD NOT': 1, 'COULD NOT HAVE': 1, 'NOT HAVE GRANTED': 1, 'HAVE GRANTED NOT': 1, 'GRANTED NOT BEING': 1, 'NOT BEING POSSESSED': 1, 'BEING POSSESSED BY': 1, 'POSSESSED BY THEMSELVES': 1, 'IN OTHER WORDS': 1, 'OTHER WORDS THERE': 1, 'WORDS THERE ARE': 1, 'THERE ARE CERTAIN': 1, 'ARE CERTAIN RIGHTS': 1, 'CERTAIN RIGHTS POSSESSED': 1, 'RIGHTS POSSESSED BY': 1, 'POSSESSED BY EACH': 1, 'BY EACH INDIVIDUAL': 1, 'EACH INDIVIDUAL AMERICAN': 1, 'INDIVIDUAL AMERICAN CITIZEN': 1, 'AMERICAN CITIZEN WHICH': 1, 'CITIZEN WHICH IN': 1, 'WHICH IN HIS': 1, 'IN HIS COMPACT': 1, 'HIS COMPACT WITH': 1, 'COMPACT WITH THE': 1, 'WITH THE OTHERS': 1, 'THE OTHERS HE': 1, 'OTHERS HE HAS': 1, 'HE HAS NEVER': 1, 'HAS NEVER SURRENDERED': 1, 'SOME OF THEM': 1, 'OF THEM INDEED': 1, 'THEM INDEED HE': 1, 'INDEED HE IS': 1, 'HE IS UNABLE': 1, 'IS UNABLE TO': 1, 'UNABLE TO SURRENDER': 1, 'TO SURRENDER BEING': 1, 'SURRENDER BEING IN': 1, 'LANGUAGE OF OUR': 1, 'OUR SYSTEM UNALIENABLE': 1, 'THE BOASTED PRIVILEGE': 1, 'BOASTED PRIVILEGE OF': 1, 'PRIVILEGE OF A': 1, 'A ROMAN CITIZEN': 1, 'ROMAN CITIZEN WAS': 1, 'CITIZEN WAS TO': 1, 'WAS TO HIM': 1, 'TO HIM A': 1, 'HIM A SHIELD': 1, 'A SHIELD ONLY': 1, 'SHIELD ONLY AGAINST': 1, 'ONLY AGAINST A': 1, 'AGAINST A PETTY': 1, 'A PETTY PROVINCIAL': 1, 'PETTY PROVINCIAL RULER': 1, 'PROVINCIAL RULER WHILST': 1, 'RULER WHILST THE': 1, 'WHILST THE PROUD': 1, 'THE PROUD DEMOCRAT': 1, 'PROUD DEMOCRAT OF': 1, 'DEMOCRAT OF ATHENS': 1, 'OF ATHENS WOULD': 1, 'ATHENS WOULD CONSOLE': 1, 'WOULD CONSOLE HIMSELF': 1, 'CONSOLE HIMSELF UNDER': 1, 'HIMSELF UNDER A': 1, 'UNDER A SENTENCE': 1, 'A SENTENCE OF': 1, 'SENTENCE OF DEATH': 1, 'OF DEATH FOR': 1, 'DEATH FOR A': 1, 'FOR A SUPPOSED': 1, 'A SUPPOSED VIOLATION': 1, 'SUPPOSED VIOLATION OF': 1, 'VIOLATION OF THE': 1, 'OF THE NATIONAL': 1, 'THE NATIONAL FAITH--WHICH': 1, 'NATIONAL FAITH--WHICH NO': 1, 'FAITH--WHICH NO ONE': 1, 'NO ONE UNDERSTOOD': 1, 'ONE UNDERSTOOD AND': 1, 'UNDERSTOOD AND WHICH': 1, 'AND WHICH AT': 1, 'WHICH AT TIMES': 1, 'AT TIMES WAS': 1, 'TIMES WAS THE': 1, 'WAS THE SUBJECT': 1, 'OF THE MOCKERY': 1, 'THE MOCKERY OF': 1, 'MOCKERY OF ALL--OR': 1, 'OF ALL--OR THE': 1, 'ALL--OR THE BANISHMENT': 1, 'THE BANISHMENT FROM': 1, 'BANISHMENT FROM HIS': 1, 'FROM HIS HOME': 1, 'HIS HOME HIS': 1, 'HOME HIS FAMILY': 1, 'HIS FAMILY AND': 1, 'FAMILY AND HIS': 1, 'AND HIS COUNTRY': 1, 'HIS COUNTRY WITH': 1, 'COUNTRY WITH OR': 1, 'OR WITHOUT AN': 1, 'WITHOUT AN ALLEGED': 1, 'AN ALLEGED CAUSE': 1, 'ALLEGED CAUSE THAT': 1, 'CAUSE THAT IT': 1, 'THAT IT WAS': 1, 'WAS THE ACT': 1, 'THE ACT NOT': 1, 'ACT NOT OF': 1, 'OF A SINGLE': 1, 'A SINGLE TYRANT': 1, 'SINGLE TYRANT OR': 1, 'TYRANT OR HATED': 1, 'OR HATED ARISTOCRACY': 1, 'HATED ARISTOCRACY BUT': 1, 'ARISTOCRACY BUT OF': 1, 'BUT OF HIS': 1, 'OF HIS ASSEMBLED': 1, 'HIS ASSEMBLED COUNTRYMEN': 1, 'FAR DIFFERENT IS': 1, 'DIFFERENT IS THE': 1, 'IS THE POWER': 1, 'POWER OF OUR': 1, 'OF OUR SOVEREIGNTY': 1, 'IT CAN INTERFERE': 1, 'CAN INTERFERE WITH': 1, 'INTERFERE WITH NO': 1, \"WITH NO ONE'S\": 1, \"NO ONE'S FAITH\": 1, \"ONE'S FAITH PRESCRIBE\": 1, 'FAITH PRESCRIBE FORMS': 1, 'PRESCRIBE FORMS OF': 1, 'FORMS OF WORSHIP': 1, 'OF WORSHIP FOR': 1, 'WORSHIP FOR NO': 1, \"FOR NO ONE'S\": 1, \"NO ONE'S OBSERVANCE\": 1, \"ONE'S OBSERVANCE INFLICT\": 1, 'OBSERVANCE INFLICT NO': 1, 'INFLICT NO PUNISHMENT': 1, 'NO PUNISHMENT BUT': 1, 'PUNISHMENT BUT AFTER': 1, 'BUT AFTER WELL-ASCERTAINED': 1, 'AFTER WELL-ASCERTAINED GUILT': 1, 'WELL-ASCERTAINED GUILT THE': 1, 'GUILT THE RESULT': 1, 'THE RESULT OF': 1, 'RESULT OF INVESTIGATION': 1, 'OF INVESTIGATION UNDER': 1, 'INVESTIGATION UNDER RULES': 1, 'UNDER RULES PRESCRIBED': 1, 'RULES PRESCRIBED BY': 1, 'THE CONSTITUTION ITSELF': 1, 'THESE PRECIOUS PRIVILEGES': 1, 'PRECIOUS PRIVILEGES AND': 1, 'PRIVILEGES AND THOSE': 1, 'AND THOSE SCARCELY': 1, 'THOSE SCARCELY LESS': 1, 'SCARCELY LESS IMPORTANT': 1, 'LESS IMPORTANT OF': 1, 'IMPORTANT OF GIVING': 1, 'OF GIVING EXPRESSION': 1, 'GIVING EXPRESSION TO': 1, 'EXPRESSION TO HIS': 1, 'TO HIS THOUGHTS': 1, 'HIS THOUGHTS AND': 1, 'THOUGHTS AND OPINIONS': 1, 'AND OPINIONS EITHER': 1, 'OPINIONS EITHER BY': 1, 'EITHER BY WRITING': 1, 'BY WRITING OR': 1, 'WRITING OR SPEAKING': 1, 'OR SPEAKING UNRESTRAINED': 1, 'SPEAKING UNRESTRAINED BUT': 1, 'UNRESTRAINED BUT BY': 1, 'BY THE LIABILITY': 1, 'THE LIABILITY FOR': 1, 'LIABILITY FOR INJURY': 1, 'FOR INJURY TO': 1, 'INJURY TO OTHERS': 1, 'TO OTHERS AND': 1, 'OTHERS AND THAT': 1, 'AND THAT OF': 1, 'THAT OF A': 1, 'OF A FULL': 1, 'A FULL PARTICIPATION': 1, 'FULL PARTICIPATION IN': 1, 'PARTICIPATION IN ALL': 1, 'IN ALL THE': 1, 'ALL THE ADVANTAGES': 1, 'THE ADVANTAGES WHICH': 1, 'ADVANTAGES WHICH FLOW': 1, 'WHICH FLOW FROM': 1, 'FLOW FROM THE': 1, 'FROM THE GOVERNMENT': 1, 'GOVERNMENT THE ACKNOWLEDGED': 1, 'THE ACKNOWLEDGED PROPERTY': 1, 'ACKNOWLEDGED PROPERTY OF': 1, 'PROPERTY OF ALL': 1, 'ALL THE AMERICAN': 1, 'THE AMERICAN CITIZEN': 1, 'AMERICAN CITIZEN DERIVES': 1, 'CITIZEN DERIVES FROM': 1, 'DERIVES FROM NO': 1, 'FROM NO CHARTER': 1, 'NO CHARTER GRANTED': 1, 'CHARTER GRANTED BY': 1, 'GRANTED BY HIS': 1, 'BY HIS FELLOW-MAN': 1, 'HE CLAIMS THEM': 1, 'CLAIMS THEM BECAUSE': 1, 'THEM BECAUSE HE': 1, 'BECAUSE HE IS': 1, 'HE IS HIMSELF': 1, 'IS HIMSELF A': 1, 'HIMSELF A MAN': 1, 'A MAN FASHIONED': 1, 'MAN FASHIONED BY': 1, 'FASHIONED BY THE': 1, 'THE SAME ALMIGHTY': 1, 'SAME ALMIGHTY HAND': 1, 'ALMIGHTY HAND AS': 1, 'HAND AS THE': 1, 'AS THE REST': 1, 'THE REST OF': 1, 'REST OF HIS': 1, 'OF HIS SPECIES': 1, 'HIS SPECIES AND': 1, 'SPECIES AND ENTITLED': 1, 'AND ENTITLED TO': 1, 'ENTITLED TO A': 1, 'TO A FULL': 1, 'A FULL SHARE': 1, 'FULL SHARE OF': 1, 'OF THE BLESSINGS': 1, 'THE BLESSINGS WITH': 1, 'BLESSINGS WITH WHICH': 1, 'WITH WHICH HE': 1, 'WHICH HE HAS': 1, 'HE HAS ENDOWED': 1, 'HAS ENDOWED THEM': 1, 'NOTWITHSTANDING THE LIMITED': 1, 'THE LIMITED SOVEREIGNTY': 1, 'LIMITED SOVEREIGNTY POSSESSED': 1, 'SOVEREIGNTY POSSESSED BY': 1, 'POSSESSED BY THE': 1, 'UNITED STATES AND': 1, 'STATES AND THE': 1, 'AND THE RESTRICTED': 1, 'THE RESTRICTED GRANT': 1, 'RESTRICTED GRANT OF': 1, 'TO THE GOVERNMENT': 1, 'THE GOVERNMENT WHICH': 1, 'GOVERNMENT WHICH THEY': 1, 'THEY HAVE ADOPTED': 1, 'HAVE ADOPTED ENOUGH': 1, 'ADOPTED ENOUGH HAS': 1, 'ENOUGH HAS BEEN': 1, 'HAS BEEN GIVEN': 1, 'BEEN GIVEN TO': 1, 'GIVEN TO ACCOMPLISH': 1, 'TO ACCOMPLISH ALL': 1, 'ACCOMPLISH ALL THE': 1, 'ALL THE OBJECTS': 1, 'THE OBJECTS FOR': 1, 'OBJECTS FOR WHICH': 1, 'FOR WHICH IT': 1, 'WHICH IT WAS': 1, 'IT WAS CREATED': 1, 'HAS BEEN FOUND': 1, 'BEEN FOUND POWERFUL': 1, 'FOUND POWERFUL IN': 1, 'POWERFUL IN WAR': 1, 'IN WAR AND': 1, 'WAR AND HITHERTO': 1, 'AND HITHERTO JUSTICE': 1, 'HITHERTO JUSTICE HAS': 1, 'JUSTICE HAS BEEN': 1, 'HAS BEEN ADMINISTERED': 1, 'BEEN ADMINISTERED AND': 1, 'ADMINISTERED AND INTIMATE': 1, 'AND INTIMATE UNION': 1, 'INTIMATE UNION EFFECTED': 1, 'UNION EFFECTED DOMESTIC': 1, 'EFFECTED DOMESTIC TRANQUILLITY': 1, 'DOMESTIC TRANQUILLITY PRESERVED': 1, 'TRANQUILLITY PRESERVED AND': 1, 'PRESERVED AND PERSONAL': 1, 'AND PERSONAL LIBERTY': 1, 'PERSONAL LIBERTY SECURED': 1, 'LIBERTY SECURED TO': 1, 'SECURED TO THE': 1, 'TO THE CITIZEN': 1, 'AS WAS TO': 1, 'WAS TO BE': 1, 'TO BE EXPECTED': 1, 'BE EXPECTED HOWEVER': 1, 'EXPECTED HOWEVER FROM': 1, 'HOWEVER FROM THE': 1, 'FROM THE DEFECT': 1, 'THE DEFECT OF': 1, 'DEFECT OF LANGUAGE': 1, 'OF LANGUAGE AND': 1, 'LANGUAGE AND THE': 1, 'AND THE NECESSARILY': 1, 'THE NECESSARILY SENTENTIOUS': 1, 'NECESSARILY SENTENTIOUS MANNER': 1, 'SENTENTIOUS MANNER IN': 1, 'MANNER IN WHICH': 1, 'IN WHICH THE': 1, 'THE CONSTITUTION IS': 1, 'CONSTITUTION IS WRITTEN': 1, 'IS WRITTEN DISPUTES': 1, 'WRITTEN DISPUTES HAVE': 1, 'DISPUTES HAVE ARISEN': 1, 'HAVE ARISEN AS': 1, 'ARISEN AS TO': 1, 'TO THE AMOUNT': 1, 'OF POWER WHICH': 1, 'IT HAS ACTUALLY': 1, 'HAS ACTUALLY GRANTED': 1, 'ACTUALLY GRANTED OR': 1, 'GRANTED OR WAS': 1, 'OR WAS INTENDED': 1, 'WAS INTENDED TO': 1, 'INTENDED TO GRANT': 1, 'THIS IS MORE': 1, 'IS MORE PARTICULARLY': 1, 'MORE PARTICULARLY THE': 1, 'PARTICULARLY THE CASE': 1, 'THE CASE IN': 1, 'CASE IN RELATION': 1, 'RELATION TO THAT': 1, 'TO THAT PART': 1, 'THAT PART OF': 1, 'OF THE INSTRUMENT': 1, 'THE INSTRUMENT WHICH': 1, 'INSTRUMENT WHICH TREATS': 1, 'WHICH TREATS OF': 1, 'TREATS OF THE': 1, 'THE LEGISLATIVE BRANCH': 1, 'LEGISLATIVE BRANCH AND': 1, 'BRANCH AND NOT': 1, 'NOT ONLY AS': 1, 'ONLY AS REGARDS': 1, 'AS REGARDS THE': 1, 'REGARDS THE EXERCISE': 1, 'EXERCISE OF POWERS': 1, 'OF POWERS CLAIMED': 1, 'POWERS CLAIMED UNDER': 1, 'CLAIMED UNDER A': 1, 'UNDER A GENERAL': 1, 'A GENERAL CLAUSE': 1, 'GENERAL CLAUSE GIVING': 1, 'CLAUSE GIVING THAT': 1, 'GIVING THAT BODY': 1, 'THAT BODY THE': 1, 'BODY THE AUTHORITY': 1, 'THE AUTHORITY TO': 1, 'AUTHORITY TO PASS': 1, 'TO PASS ALL': 1, 'PASS ALL LAWS': 1, 'ALL LAWS NECESSARY': 1, 'LAWS NECESSARY TO': 1, 'NECESSARY TO CARRY': 1, 'EFFECT THE SPECIFIED': 1, 'THE SPECIFIED POWERS': 1, 'SPECIFIED POWERS BUT': 1, 'POWERS BUT IN': 1, 'BUT IN RELATION': 1, 'TO THE LATTER': 1, 'THE LATTER ALSO': 1, 'IT IS HOWEVER': 1, 'IS HOWEVER CONSOLATORY': 1, 'HOWEVER CONSOLATORY TO': 1, 'CONSOLATORY TO REFLECT': 1, 'TO REFLECT THAT': 1, 'REFLECT THAT MOST': 1, 'THAT MOST OF': 1, 'MOST OF THE': 1, 'OF THE INSTANCES': 1, 'THE INSTANCES OF': 1, 'INSTANCES OF ALLEGED': 1, 'OF ALLEGED DEPARTURE': 1, 'ALLEGED DEPARTURE FROM': 1, 'DEPARTURE FROM THE': 1, 'FROM THE LETTER': 1, 'THE LETTER OR': 1, 'LETTER OR SPIRIT': 1, 'OR SPIRIT OF': 1, 'SPIRIT OF THE': 1, 'THE CONSTITUTION HAVE': 1, 'CONSTITUTION HAVE ULTIMATELY': 1, 'HAVE ULTIMATELY RECEIVED': 1, 'ULTIMATELY RECEIVED THE': 1, 'RECEIVED THE SANCTION': 1, 'THE SANCTION OF': 1, 'SANCTION OF A': 1, 'OF A MAJORITY': 1, 'A MAJORITY OF': 1, 'MAJORITY OF THE': 1, 'AND THE FACT': 1, 'THE FACT THAT': 1, 'FACT THAT MANY': 1, 'THAT MANY OF': 1, 'OF OUR STATESMEN': 1, 'OUR STATESMEN MOST': 1, 'STATESMEN MOST DISTINGUISHED': 1, 'MOST DISTINGUISHED FOR': 1, 'DISTINGUISHED FOR TALENT': 1, 'FOR TALENT AND': 1, 'TALENT AND PATRIOTISM': 1, 'AND PATRIOTISM HAVE': 1, 'PATRIOTISM HAVE BEEN': 1, 'HAVE BEEN AT': 1, 'BEEN AT ONE': 1, 'ONE TIME OR': 1, 'TIME OR OTHER': 1, 'OR OTHER OF': 1, 'OTHER OF THEIR': 1, 'THEIR POLITICAL CAREER': 1, 'POLITICAL CAREER ON': 1, 'CAREER ON BOTH': 1, 'ON BOTH SIDES': 1, 'BOTH SIDES OF': 1, 'SIDES OF EACH': 1, 'EACH OF THE': 1, 'THE MOST WARMLY': 1, 'MOST WARMLY DISPUTED': 1, 'WARMLY DISPUTED QUESTIONS': 1, 'DISPUTED QUESTIONS FORCES': 1, 'QUESTIONS FORCES UPON': 1, 'FORCES UPON US': 1, 'UPON US THE': 1, 'US THE INFERENCE': 1, 'THE INFERENCE THAT': 1, 'INFERENCE THAT THE': 1, 'THAT THE ERRORS': 1, 'THE ERRORS IF': 1, 'ERRORS IF ERRORS': 1, 'IF ERRORS THERE': 1, 'ERRORS THERE WERE': 1, 'THERE WERE ARE': 1, 'WERE ARE ATTRIBUTABLE': 1, 'ATTRIBUTABLE TO THE': 1, 'TO THE INTRINSIC': 1, 'THE INTRINSIC DIFFICULTY': 1, 'INTRINSIC DIFFICULTY IN': 1, 'DIFFICULTY IN MANY': 1, 'IN MANY INSTANCES': 1, 'MANY INSTANCES OF': 1, 'INSTANCES OF ASCERTAINING': 1, 'OF ASCERTAINING THE': 1, 'ASCERTAINING THE INTENTIONS': 1, 'THE INTENTIONS OF': 1, 'INTENTIONS OF THE': 1, 'OF THE FRAMERS': 1, 'THE CONSTITUTION RATHER': 1, 'CONSTITUTION RATHER THAN': 1, 'RATHER THAN THE': 1, 'THAN THE INFLUENCE': 1, 'INFLUENCE OF ANY': 1, 'OF ANY SINISTER': 1, 'ANY SINISTER OR': 1, 'SINISTER OR UNPATRIOTIC': 1, 'OR UNPATRIOTIC MOTIVE': 1, 'BUT THE GREAT': 1, 'THE GREAT DANGER': 1, 'GREAT DANGER TO': 1, 'OUR INSTITUTIONS DOES': 1, 'INSTITUTIONS DOES NOT': 1, 'APPEAR TO ME': 1, 'BE IN A': 1, 'IN A USURPATION': 1, 'A USURPATION BY': 1, 'USURPATION BY THE': 1, 'BY THE GOVERNMENT': 1, 'GOVERNMENT OF POWER': 1, 'OF POWER NOT': 1, 'POWER NOT GRANTED': 1, 'NOT GRANTED BY': 1, 'GRANTED BY THE': 1, 'PEOPLE BUT BY': 1, 'BY THE ACCUMULATION': 1, 'THE ACCUMULATION IN': 1, 'ACCUMULATION IN ONE': 1, 'DEPARTMENTS OF THAT': 1, 'OF THAT WHICH': 1, 'THAT WHICH WAS': 1, 'WHICH WAS ASSIGNED': 1, 'WAS ASSIGNED TO': 1, 'ASSIGNED TO OTHERS': 1, 'LIMITED AS ARE': 1, 'AS ARE THE': 1, 'ARE THE POWERS': 1, 'POWERS WHICH HAVE': 1, 'BEEN GRANTED STILL': 1, 'GRANTED STILL ENOUGH': 1, 'STILL ENOUGH HAVE': 1, 'ENOUGH HAVE BEEN': 1, 'GRANTED TO CONSTITUTE': 1, 'TO CONSTITUTE A': 1, 'CONSTITUTE A DESPOTISM': 1, 'A DESPOTISM IF': 1, 'DESPOTISM IF CONCENTRATED': 1, 'IF CONCENTRATED IN': 1, 'CONCENTRATED IN ONE': 1, 'THIS DANGER IS': 1, 'DANGER IS GREATLY': 1, 'IS GREATLY HEIGHTENED': 1, 'GREATLY HEIGHTENED AS': 1, 'HEIGHTENED AS IT': 1, 'AS IT HAS': 1, 'HAS BEEN ALWAYS': 1, 'BEEN ALWAYS OBSERVABLE': 1, 'ALWAYS OBSERVABLE THAT': 1, 'OBSERVABLE THAT MEN': 1, 'THAT MEN ARE': 1, 'MEN ARE LESS': 1, 'ARE LESS JEALOUS': 1, 'LESS JEALOUS OF': 1, 'JEALOUS OF ENCROACHMENTS': 1, 'OF ENCROACHMENTS OF': 1, 'ENCROACHMENTS OF ONE': 1, 'OF ONE DEPARTMENT': 1, 'ONE DEPARTMENT UPON': 1, 'DEPARTMENT UPON ANOTHER': 1, 'UPON ANOTHER THAN': 1, 'ANOTHER THAN UPON': 1, 'THAN UPON THEIR': 1, 'UPON THEIR OWN': 1, 'THEIR OWN RESERVED': 1, 'OWN RESERVED RIGHTS': 1, 'UNITED STATES FIRST': 1, 'STATES FIRST CAME': 1, 'FIRST CAME FROM': 1, 'CAME FROM THE': 1, 'THE CONVENTION WHICH': 1, 'CONVENTION WHICH FORMED': 1, 'WHICH FORMED IT': 1, 'FORMED IT MANY': 1, 'IT MANY OF': 1, 'MANY OF THE': 1, 'OF THE STERNEST': 1, 'THE STERNEST REPUBLICANS': 1, 'STERNEST REPUBLICANS OF': 1, 'REPUBLICANS OF THE': 1, 'OF THE DAY': 1, 'THE DAY WERE': 1, 'DAY WERE ALARMED': 1, 'WERE ALARMED AT': 1, 'ALARMED AT THE': 1, 'AT THE EXTENT': 1, 'EXTENT OF THE': 1, 'POWER WHICH HAD': 1, 'HAD BEEN GRANTED': 1, 'GRANTED TO THE': 1, 'TO THE FEDERAL': 1, 'GOVERNMENT AND MORE': 1, 'AND MORE PARTICULARLY': 1, 'MORE PARTICULARLY OF': 1, 'PARTICULARLY OF THAT': 1, 'OF THAT PORTION': 1, 'THAT PORTION WHICH': 1, 'PORTION WHICH HAD': 1, 'HAD BEEN ASSIGNED': 1, 'BEEN ASSIGNED TO': 1, 'THE EXECUTIVE BRANCH': 1, 'THERE WERE IN': 1, 'WERE IN IT': 1, 'IN IT FEATURES': 1, 'IT FEATURES WHICH': 1, 'FEATURES WHICH APPEARED': 1, 'WHICH APPEARED NOT': 1, 'APPEARED NOT TO': 1, 'BE IN HARMONY': 1, 'IN HARMONY WITH': 1, 'HARMONY WITH THEIR': 1, 'WITH THEIR IDEAS': 1, 'THEIR IDEAS OF': 1, 'IDEAS OF A': 1, 'OF A SIMPLE': 1, 'A SIMPLE REPRESENTATIVE': 1, 'SIMPLE REPRESENTATIVE DEMOCRACY': 1, 'REPRESENTATIVE DEMOCRACY OR': 1, 'DEMOCRACY OR REPUBLIC': 1, 'OR REPUBLIC AND': 1, 'REPUBLIC AND KNOWING': 1, 'AND KNOWING THE': 1, 'KNOWING THE TENDENCY': 1, 'TENDENCY OF POWER': 1, 'INCREASE ITSELF PARTICULARLY': 1, 'ITSELF PARTICULARLY WHEN': 1, 'PARTICULARLY WHEN EXERCISED': 1, 'WHEN EXERCISED BY': 1, 'EXERCISED BY A': 1, 'BY A SINGLE': 1, 'A SINGLE INDIVIDUAL': 1, 'SINGLE INDIVIDUAL PREDICTIONS': 1, 'INDIVIDUAL PREDICTIONS WERE': 1, 'PREDICTIONS WERE MADE': 1, 'WERE MADE THAT': 1, 'MADE THAT AT': 1, 'THAT AT NO': 1, 'AT NO VERY': 1, 'NO VERY REMOTE': 1, 'VERY REMOTE PERIOD': 1, 'REMOTE PERIOD THE': 1, 'PERIOD THE GOVERNMENT': 1, 'THE GOVERNMENT WOULD': 1, 'GOVERNMENT WOULD TERMINATE': 1, 'WOULD TERMINATE IN': 1, 'TERMINATE IN VIRTUAL': 1, 'IN VIRTUAL MONARCHY': 1, 'IT WOULD NOT': 1, 'WOULD NOT BECOME': 1, 'NOT BECOME ME': 1, 'BECOME ME TO': 1, 'ME TO SAY': 1, 'SAY THAT THE': 1, 'THAT THE FEARS': 1, 'THE FEARS OF': 1, 'FEARS OF THESE': 1, 'OF THESE PATRIOTS': 1, 'THESE PATRIOTS HAVE': 1, 'PATRIOTS HAVE BEEN': 1, 'HAVE BEEN ALREADY': 1, 'BEEN ALREADY REALIZED': 1, 'ALREADY REALIZED BUT': 1, 'REALIZED BUT AS': 1, 'BUT AS I': 1, 'AS I SINCERELY': 1, 'I SINCERELY BELIEVE': 1, 'SINCERELY BELIEVE THAT': 1, 'BELIEVE THAT THE': 1, 'THAT THE TENDENCY': 1, 'TENDENCY OF MEASURES': 1, 'OF MEASURES AND': 1, 'MEASURES AND OF': 1, \"AND OF MEN'S\": 1, \"OF MEN'S OPINIONS\": 1, \"MEN'S OPINIONS FOR\": 1, 'OPINIONS FOR SOME': 1, 'FOR SOME YEARS': 1, 'SOME YEARS PAST': 1, 'YEARS PAST HAS': 1, 'PAST HAS BEEN': 1, 'BEEN IN THAT': 1, 'IN THAT DIRECTION': 1, 'THAT DIRECTION IT': 1, 'DIRECTION IT IS': 1, 'IT IS I': 1, 'IS I CONCEIVE': 1, 'I CONCEIVE STRICTLY': 1, 'CONCEIVE STRICTLY PROPER': 1, 'STRICTLY PROPER THAT': 1, 'PROPER THAT I': 1, 'I SHOULD TAKE': 1, 'SHOULD TAKE THIS': 1, 'TAKE THIS OCCASION': 1, 'THIS OCCASION TO': 1, 'OCCASION TO REPEAT': 1, 'TO REPEAT THE': 1, 'REPEAT THE ASSURANCES': 1, 'THE ASSURANCES I': 1, 'ASSURANCES I HAVE': 1, 'I HAVE HERETOFORE': 1, 'HAVE HERETOFORE GIVEN': 1, 'HERETOFORE GIVEN OF': 1, 'GIVEN OF MY': 1, 'OF MY DETERMINATION': 1, 'MY DETERMINATION TO': 1, 'DETERMINATION TO ARREST': 1, 'TO ARREST THE': 1, 'ARREST THE PROGRESS': 1, 'THE PROGRESS OF': 1, 'PROGRESS OF THAT': 1, 'OF THAT TENDENCY': 1, 'THAT TENDENCY IF': 1, 'TENDENCY IF IT': 1, 'IF IT REALLY': 1, 'IT REALLY EXISTS': 1, 'REALLY EXISTS AND': 1, 'EXISTS AND RESTORE': 1, 'AND RESTORE THE': 1, 'RESTORE THE GOVERNMENT': 1, 'THE GOVERNMENT TO': 1, 'GOVERNMENT TO ITS': 1, 'HEALTH AND VIGOR': 1, 'AND VIGOR AS': 1, 'VIGOR AS FAR': 1, 'FAR AS THIS': 1, 'AS THIS CAN': 1, 'THIS CAN BE': 1, 'EFFECTED BY ANY': 1, 'BY ANY LEGITIMATE': 1, 'ANY LEGITIMATE EXERCISE': 1, 'LEGITIMATE EXERCISE OF': 1, 'THE POWER PLACED': 1, 'POWER PLACED IN': 1, 'PROCEED TO STATE': 1, 'TO STATE IN': 1, 'STATE IN AS': 1, 'IN AS SUMMARY': 1, 'AS SUMMARY A': 1, 'SUMMARY A MANNER': 1, 'A MANNER AS': 1, 'MANNER AS I': 1, 'AS I CAN': 1, 'I CAN MY': 1, 'CAN MY OPINION': 1, 'MY OPINION OF': 1, 'OF THE SOURCES': 1, 'THE SOURCES OF': 1, 'SOURCES OF THE': 1, 'OF THE EVILS': 1, 'THE EVILS WHICH': 1, 'EVILS WHICH HAVE': 1, 'HAVE BEEN SO': 1, 'BEEN SO EXTENSIVELY': 1, 'SO EXTENSIVELY COMPLAINED': 1, 'EXTENSIVELY COMPLAINED OF': 1, 'COMPLAINED OF AND': 1, 'OF AND THE': 1, 'AND THE CORRECTIVES': 1, 'THE CORRECTIVES WHICH': 1, 'CORRECTIVES WHICH MAY': 1, 'MAY BE APPLIED': 1, 'THE FORMER ARE': 1, 'FORMER ARE UNQUESTIONABLY': 1, 'ARE UNQUESTIONABLY TO': 1, 'UNQUESTIONABLY TO BE': 1, 'BE FOUND IN': 1, 'FOUND IN THE': 1, 'IN THE DEFECTS': 1, 'THE DEFECTS OF': 1, 'THE CONSTITUTION OTHERS': 1, 'CONSTITUTION OTHERS IN': 1, 'OTHERS IN MY': 1, 'IN MY JUDGMENT': 1, 'MY JUDGMENT ARE': 1, 'JUDGMENT ARE ATTRIBUTABLE': 1, 'ATTRIBUTABLE TO A': 1, 'TO A MISCONSTRUCTION': 1, 'MISCONSTRUCTION OF SOME': 1, 'SOME OF ITS': 1, 'THE FORMER IS': 1, 'FORMER IS THE': 1, 'IS THE ELIGIBILITY': 1, 'THE ELIGIBILITY OF': 1, 'ELIGIBILITY OF THE': 1, 'THE SAME INDIVIDUAL': 1, 'SAME INDIVIDUAL TO': 1, 'INDIVIDUAL TO A': 1, 'TO A SECOND': 1, 'SECOND TERM OF': 1, 'TERM OF THE': 1, 'OF THE PRESIDENCY': 1, 'THE SAGACIOUS MIND': 1, 'SAGACIOUS MIND OF': 1, 'MIND OF MR': 1, 'JEFFERSON EARLY SAW': 1, 'EARLY SAW AND': 1, 'SAW AND LAMENTED': 1, 'AND LAMENTED THIS': 1, 'LAMENTED THIS ERROR': 1, 'THIS ERROR AND': 1, 'ERROR AND ATTEMPTS': 1, 'AND ATTEMPTS HAVE': 1, 'ATTEMPTS HAVE BEEN': 1, 'HAVE BEEN MADE': 1, 'BEEN MADE HITHERTO': 1, 'MADE HITHERTO WITHOUT': 1, 'HITHERTO WITHOUT SUCCESS': 1, 'WITHOUT SUCCESS TO': 1, 'SUCCESS TO APPLY': 1, 'TO APPLY THE': 1, 'APPLY THE AMENDATORY': 1, 'THE AMENDATORY POWER': 1, 'AMENDATORY POWER OF': 1, 'POWER OF THE': 1, 'THE STATES TO': 1, 'STATES TO ITS': 1, 'TO ITS CORRECTION': 1, 'AS HOWEVER ONE': 1, 'HOWEVER ONE MODE': 1, 'ONE MODE OF': 1, 'MODE OF CORRECTION': 1, 'OF CORRECTION IS': 1, 'CORRECTION IS IN': 1, 'IN THE POWER': 1, 'POWER OF EVERY': 1, 'OF EVERY PRESIDENT': 1, 'EVERY PRESIDENT AND': 1, 'PRESIDENT AND CONSEQUENTLY': 1, 'AND CONSEQUENTLY IN': 1, 'CONSEQUENTLY IN MINE': 1, 'IN MINE IT': 1, 'MINE IT WOULD': 1, 'WOULD BE USELESS': 1, 'BE USELESS AND': 1, 'USELESS AND PERHAPS': 1, 'AND PERHAPS INVIDIOUS': 1, 'PERHAPS INVIDIOUS TO': 1, 'INVIDIOUS TO ENUMERATE': 1, 'TO ENUMERATE THE': 1, 'ENUMERATE THE EVILS': 1, 'THE EVILS OF': 1, 'EVILS OF WHICH': 1, 'OF WHICH IN': 1, 'WHICH IN THE': 1, 'IN THE OPINION': 1, 'OPINION OF MANY': 1, 'OF MANY OF': 1, 'OF OUR FELLOW-CITIZENS': 1, 'OUR FELLOW-CITIZENS THIS': 1, 'FELLOW-CITIZENS THIS ERROR': 1, 'THIS ERROR OF': 1, 'ERROR OF THE': 1, 'OF THE SAGES': 1, 'THE SAGES WHO': 1, 'SAGES WHO FRAMED': 1, 'WHO FRAMED THE': 1, 'THE CONSTITUTION MAY': 1, 'CONSTITUTION MAY HAVE': 1, 'MAY HAVE BEEN': 1, 'BEEN THE SOURCE': 1, 'THE SOURCE AND': 1, 'SOURCE AND THE': 1, 'AND THE BITTER': 1, 'THE BITTER FRUITS': 1, 'BITTER FRUITS WHICH': 1, 'FRUITS WHICH WE': 1, 'WHICH WE ARE': 1, 'WE ARE STILL': 1, 'ARE STILL TO': 1, 'STILL TO GATHER': 1, 'TO GATHER FROM': 1, 'GATHER FROM IT': 1, 'FROM IT IF': 1, 'IT IF IT': 1, 'IF IT CONTINUES': 1, 'IT CONTINUES TO': 1, 'CONTINUES TO DISFIGURE': 1, 'TO DISFIGURE OUR': 1, 'DISFIGURE OUR SYSTEM': 1, 'OBSERVED HOWEVER AS': 1, 'HOWEVER AS A': 1, 'AS A GENERAL': 1, 'A GENERAL REMARK': 1, 'GENERAL REMARK THAT': 1, 'REMARK THAT REPUBLICS': 1, 'THAT REPUBLICS CAN': 1, 'REPUBLICS CAN COMMIT': 1, 'CAN COMMIT NO': 1, 'COMMIT NO GREATER': 1, 'NO GREATER ERROR': 1, 'GREATER ERROR THAN': 1, 'ERROR THAN TO': 1, 'THAN TO ADOPT': 1, 'TO ADOPT OR': 1, 'ADOPT OR CONTINUE': 1, 'OR CONTINUE ANY': 1, 'CONTINUE ANY FEATURE': 1, 'ANY FEATURE IN': 1, 'FEATURE IN THEIR': 1, 'IN THEIR SYSTEMS': 1, 'THEIR SYSTEMS OF': 1, 'SYSTEMS OF GOVERNMENT': 1, 'OF GOVERNMENT WHICH': 1, 'GOVERNMENT WHICH MAY': 1, 'MAY BE CALCULATED': 1, 'BE CALCULATED TO': 1, 'CALCULATED TO CREATE': 1, 'TO CREATE OR': 1, 'CREATE OR INCREASE': 1, 'OR INCREASE THE': 1, 'INCREASE THE LOVER': 1, 'THE LOVER OF': 1, 'LOVER OF POWER': 1, 'BOSOMS OF THOSE': 1, 'TO WHOM NECESSITY': 1, 'WHOM NECESSITY OBLIGES': 1, 'NECESSITY OBLIGES THEM': 1, 'OBLIGES THEM TO': 1, 'THEM TO COMMIT': 1, 'TO COMMIT THE': 1, 'COMMIT THE MANAGEMENT': 1, 'MANAGEMENT OF THEIR': 1, 'THEIR AFFAIRS AND': 1, 'AFFAIRS AND SURELY': 1, 'AND SURELY NOTHING': 1, 'SURELY NOTHING IS': 1, 'NOTHING IS MORE': 1, 'IS MORE LIKELY': 1, 'TO PRODUCE SUCH': 1, 'PRODUCE SUCH A': 1, 'SUCH A STATE': 1, 'STATE OF MIND': 1, 'OF MIND THAN': 1, 'MIND THAN THE': 1, 'THAN THE LONG': 1, 'THE LONG CONTINUANCE': 1, 'LONG CONTINUANCE OF': 1, 'CONTINUANCE OF AN': 1, 'OF AN OFFICE': 1, 'AN OFFICE OF': 1, 'OFFICE OF HIGH': 1, 'OF HIGH TRUST': 1, 'NOTHING CAN BE': 1, 'CAN BE MORE': 1, 'BE MORE CORRUPTING': 1, 'MORE CORRUPTING NOTHING': 1, 'CORRUPTING NOTHING MORE': 1, 'NOTHING MORE DESTRUCTIVE': 1, 'MORE DESTRUCTIVE OF': 1, 'DESTRUCTIVE OF ALL': 1, 'OF ALL THOSE': 1, 'ALL THOSE NOBLE': 1, 'THOSE NOBLE FEELINGS': 1, 'NOBLE FEELINGS WHICH': 1, 'FEELINGS WHICH BELONG': 1, 'WHICH BELONG TO': 1, 'BELONG TO THE': 1, 'CHARACTER OF A': 1, 'OF A DEVOTED': 1, 'A DEVOTED REPUBLICAN': 1, 'DEVOTED REPUBLICAN PATRIOT': 1, 'WHEN THIS CORRUPTING': 1, 'THIS CORRUPTING PASSION': 1, 'CORRUPTING PASSION ONCE': 1, 'PASSION ONCE TAKES': 1, 'ONCE TAKES POSSESSION': 1, 'TAKES POSSESSION OF': 1, 'POSSESSION OF THE': 1, 'THE HUMAN MIND': 1, 'HUMAN MIND LIKE': 1, 'MIND LIKE THE': 1, 'LIKE THE LOVE': 1, 'LOVE OF GOLD': 1, 'OF GOLD IT': 1, 'GOLD IT BECOMES': 1, 'IT BECOMES INSATIABLE': 1, 'IS THE NEVER-DYING': 1, 'THE NEVER-DYING WORM': 1, 'NEVER-DYING WORM IN': 1, 'WORM IN HIS': 1, 'IN HIS BOSOM': 1, 'HIS BOSOM GROWS': 1, 'BOSOM GROWS WITH': 1, 'GROWS WITH HIS': 1, 'WITH HIS GROWTH': 1, 'HIS GROWTH AND': 1, 'GROWTH AND STRENGTHENS': 1, 'AND STRENGTHENS WITH': 1, 'STRENGTHENS WITH THE': 1, 'WITH THE DECLINING': 1, 'THE DECLINING YEARS': 1, 'DECLINING YEARS OF': 1, 'YEARS OF ITS': 1, 'OF ITS VICTIM': 1, 'IF THIS IS': 1, 'THIS IS TRUE': 1, 'IS TRUE IT': 1, 'TRUE IT IS': 1, 'IS THE PART': 1, 'PART OF WISDOM': 1, 'OF WISDOM FOR': 1, 'WISDOM FOR A': 1, 'FOR A REPUBLIC': 1, 'A REPUBLIC TO': 1, 'REPUBLIC TO LIMIT': 1, 'TO LIMIT THE': 1, 'LIMIT THE SERVICE': 1, 'THE SERVICE OF': 1, 'SERVICE OF THAT': 1, 'OF THAT OFFICER': 1, 'THAT OFFICER AT': 1, 'OFFICER AT LEAST': 1, 'AT LEAST TO': 1, 'LEAST TO WHOM': 1, 'TO WHOM SHE': 1, 'WHOM SHE HAS': 1, 'SHE HAS INTRUSTED': 1, 'HAS INTRUSTED THE': 1, 'INTRUSTED THE MANAGEMENT': 1, 'MANAGEMENT OF HER': 1, 'OF HER FOREIGN': 1, 'HER FOREIGN RELATIONS': 1, 'FOREIGN RELATIONS THE': 1, 'RELATIONS THE EXECUTION': 1, 'THE EXECUTION OF': 1, 'EXECUTION OF HER': 1, 'OF HER LAWS': 1, 'HER LAWS AND': 1, 'AND THE COMMAND': 1, 'THE COMMAND OF': 1, 'COMMAND OF HER': 1, 'OF HER ARMIES': 1, 'HER ARMIES AND': 1, 'ARMIES AND NAVIES': 1, 'AND NAVIES TO': 1, 'NAVIES TO A': 1, 'TO A PERIOD': 1, 'A PERIOD SO': 1, 'PERIOD SO SHORT': 1, 'SO SHORT AS': 1, 'SHORT AS TO': 1, 'AS TO PREVENT': 1, 'TO PREVENT HIS': 1, 'PREVENT HIS FORGETTING': 1, 'HIS FORGETTING THAT': 1, 'FORGETTING THAT HE': 1, 'THAT HE IS': 1, 'HE IS THE': 1, 'IS THE ACCOUNTABLE': 1, 'THE ACCOUNTABLE AGENT': 1, 'ACCOUNTABLE AGENT NOT': 1, 'AGENT NOT THE': 1, 'NOT THE PRINCIPAL': 1, 'THE PRINCIPAL THE': 1, 'PRINCIPAL THE SERVANT': 1, 'THE SERVANT NOT': 1, 'SERVANT NOT THE': 1, 'NOT THE MASTER': 1, 'UNTIL AN AMENDMENT': 1, 'AN AMENDMENT OF': 1, 'AMENDMENT OF THE': 1, 'THE CONSTITUTION CAN': 1, 'CONSTITUTION CAN BE': 1, 'BE EFFECTED PUBLIC': 1, 'EFFECTED PUBLIC OPINION': 1, 'PUBLIC OPINION MAY': 1, 'OPINION MAY SECURE': 1, 'MAY SECURE THE': 1, 'SECURE THE DESIRED': 1, 'THE DESIRED OBJECT': 1, 'I GIVE MY': 1, 'GIVE MY AID': 1, 'MY AID TO': 1, 'AID TO IT': 1, 'TO IT BY': 1, 'IT BY RENEWING': 1, 'RENEWING THE PLEDGE': 1, 'THE PLEDGE HERETOFORE': 1, 'PLEDGE HERETOFORE GIVEN': 1, 'HERETOFORE GIVEN THAT': 1, 'GIVEN THAT UNDER': 1, 'THAT UNDER NO': 1, 'UNDER NO CIRCUMSTANCES': 1, 'NO CIRCUMSTANCES WILL': 1, 'CIRCUMSTANCES WILL I': 1, 'WILL I CONSENT': 1, 'I CONSENT TO': 1, 'CONSENT TO SERVE': 1, 'TO SERVE A': 1, 'SERVE A SECOND': 1, 'BUT IF THERE': 1, 'THERE IS DANGER': 1, 'IS DANGER TO': 1, 'DANGER TO PUBLIC': 1, 'TO PUBLIC LIBERTY': 1, 'PUBLIC LIBERTY FROM': 1, 'LIBERTY FROM THE': 1, 'FROM THE ACKNOWLEDGED': 1, 'THE ACKNOWLEDGED DEFECTS': 1, 'ACKNOWLEDGED DEFECTS OF': 1, 'THE CONSTITUTION IN': 1, 'CONSTITUTION IN THE': 1, 'IN THE WANT': 1, 'THE WANT OF': 1, 'WANT OF LIMIT': 1, 'OF LIMIT TO': 1, 'LIMIT TO THE': 1, 'TO THE CONTINUANCE': 1, 'EXECUTIVE POWER IN': 1, 'IN THE SAME': 1, 'THE SAME HANDS': 1, 'SAME HANDS THERE': 1, 'HANDS THERE IS': 1, 'THERE IS I': 1, 'IS I APPREHEND': 1, 'I APPREHEND NOT': 1, 'APPREHEND NOT MUCH': 1, 'NOT MUCH LESS': 1, 'MUCH LESS FROM': 1, 'LESS FROM A': 1, 'FROM A MISCONSTRUCTION': 1, 'MISCONSTRUCTION OF THAT': 1, 'THAT INSTRUMENT AS': 1, 'INSTRUMENT AS IT': 1, 'AS IT REGARDS': 1, 'IT REGARDS THE': 1, 'REGARDS THE POWERS': 1, 'THE POWERS ACTUALLY': 1, 'POWERS ACTUALLY GIVEN': 1, 'I CAN NOT': 1, 'CAN NOT CONCEIVE': 1, 'NOT CONCEIVE THAT': 1, 'CONCEIVE THAT BY': 1, 'THAT BY A': 1, 'BY A FAIR': 1, 'A FAIR CONSTRUCTION': 1, 'FAIR CONSTRUCTION ANY': 1, 'CONSTRUCTION ANY OR': 1, 'ANY OR EITHER': 1, 'EITHER OF ITS': 1, 'ITS PROVISIONS WOULD': 1, 'PROVISIONS WOULD BE': 1, 'WOULD BE FOUND': 1, 'FOUND TO CONSTITUTE': 1, 'TO CONSTITUTE THE': 1, 'CONSTITUTE THE PRESIDENT': 1, 'THE PRESIDENT A': 1, 'PRESIDENT A PART': 1, 'THE LEGISLATIVE POWER': 1, 'IT CAN NOT': 1, 'NOT BE CLAIMED': 1, 'BE CLAIMED FROM': 1, 'CLAIMED FROM THE': 1, 'FROM THE POWER': 1, 'POWER TO RECOMMEND': 1, 'TO RECOMMEND SINCE': 1, 'RECOMMEND SINCE ALTHOUGH': 1, 'SINCE ALTHOUGH ENJOINED': 1, 'ALTHOUGH ENJOINED AS': 1, 'ENJOINED AS A': 1, 'AS A DUTY': 1, 'A DUTY UPON': 1, 'DUTY UPON HIM': 1, 'UPON HIM IT': 1, 'HIM IT IS': 1, 'IS A PRIVILEGE': 1, 'A PRIVILEGE WHICH': 1, 'PRIVILEGE WHICH HE': 1, 'WHICH HE HOLDS': 1, 'HE HOLDS IN': 1, 'HOLDS IN COMMON': 1, 'IN COMMON WITH': 1, 'COMMON WITH EVERY': 1, 'WITH EVERY OTHER': 1, 'EVERY OTHER CITIZEN': 1, 'OTHER CITIZEN AND': 1, 'CITIZEN AND ALTHOUGH': 1, 'ALTHOUGH THERE MAY': 1, 'MAY BE SOMETHING': 1, 'BE SOMETHING MORE': 1, 'SOMETHING MORE OF': 1, 'MORE OF CONFIDENCE': 1, 'OF CONFIDENCE IN': 1, 'IN THE PROPRIETY': 1, 'THE PROPRIETY OF': 1, 'PROPRIETY OF THE': 1, 'OF THE MEASURES': 1, 'THE MEASURES RECOMMENDED': 1, 'MEASURES RECOMMENDED IN': 1, 'RECOMMENDED IN THE': 1, 'IN THE ONE': 1, 'THE ONE CASE': 1, 'ONE CASE THAN': 1, 'CASE THAN IN': 1, 'THAN IN THE': 1, 'IN THE OTHER': 1, 'THE OTHER IN': 1, 'OTHER IN THE': 1, 'IN THE OBLIGATIONS': 1, 'THE OBLIGATIONS OF': 1, 'OBLIGATIONS OF ULTIMATE': 1, 'OF ULTIMATE DECISION': 1, 'ULTIMATE DECISION THERE': 1, 'DECISION THERE CAN': 1, 'THERE CAN BE': 1, 'CAN BE NO': 1, 'BE NO DIFFERENCE': 1, 'LANGUAGE OF THE': 1, 'THE CONSTITUTION ALL': 1, 'CONSTITUTION ALL THE': 1, 'ALL THE LEGISLATIVE': 1, 'THE LEGISLATIVE POWERS': 1, 'LEGISLATIVE POWERS WHICH': 1, 'POWERS WHICH IT': 1, 'WHICH IT GRANTS': 1, 'IT GRANTS ARE': 1, 'GRANTS ARE VESTED': 1, 'ARE VESTED IN': 1, 'VESTED IN THE': 1, 'IN THE CONGRESS': 1, 'THE CONGRESS OF': 1, 'CONGRESS OF THE': 1, 'UNITED STATES IT': 1, 'STATES IT WOULD': 1, 'WOULD BE A': 1, 'BE A SOLECISM': 1, 'A SOLECISM IN': 1, 'SOLECISM IN LANGUAGE': 1, 'IN LANGUAGE TO': 1, 'LANGUAGE TO SAY': 1, 'SAY THAT ANY': 1, 'THAT ANY PORTION': 1, 'ANY PORTION OF': 1, 'PORTION OF THESE': 1, 'OF THESE IS': 1, 'THESE IS NOT': 1, 'IS NOT INCLUDED': 1, 'NOT INCLUDED IN': 1, 'INCLUDED IN THE': 1, 'IN THE WHOLE': 1, 'MAY BE SAID': 1, 'BE SAID INDEED': 1, 'SAID INDEED THAT': 1, 'CONSTITUTION HAS GIVEN': 1, 'HAS GIVEN TO': 1, 'EXECUTIVE THE POWER': 1, 'POWER TO ANNUL': 1, 'TO ANNUL THE': 1, 'ANNUL THE ACTS': 1, 'LEGISLATIVE BODY BY': 1, 'BODY BY REFUSING': 1, 'BY REFUSING TO': 1, 'REFUSING TO THEM': 1, 'TO THEM HIS': 1, 'THEM HIS ASSENT': 1, 'SO A SIMILAR': 1, 'A SIMILAR POWER': 1, 'SIMILAR POWER HAS': 1, 'POWER HAS NECESSARILY': 1, 'HAS NECESSARILY RESULTED': 1, 'NECESSARILY RESULTED FROM': 1, 'RESULTED FROM THAT': 1, 'FROM THAT INSTRUMENT': 1, 'THAT INSTRUMENT TO': 1, 'INSTRUMENT TO THE': 1, 'TO THE JUDICIARY': 1, 'THE JUDICIARY AND': 1, 'JUDICIARY AND YET': 1, 'AND YET THE': 1, 'YET THE JUDICIARY': 1, 'THE JUDICIARY FORMS': 1, 'JUDICIARY FORMS NO': 1, 'FORMS NO PART': 1, 'THERE IS IT': 1, 'IS IT IS': 1, 'IT IS TRUE': 1, 'IS TRUE THIS': 1, 'TRUE THIS DIFFERENCE': 1, 'THIS DIFFERENCE BETWEEN': 1, 'DIFFERENCE BETWEEN THESE': 1, 'BETWEEN THESE GRANTS': 1, 'THESE GRANTS OF': 1, 'GRANTS OF POWER': 1, 'OF POWER THE': 1, 'POWER THE EXECUTIVE': 1, 'THE EXECUTIVE CAN': 1, 'EXECUTIVE CAN PUT': 1, 'CAN PUT HIS': 1, 'PUT HIS NEGATIVE': 1, 'HIS NEGATIVE UPON': 1, 'THE LEGISLATURE FOR': 1, 'LEGISLATURE FOR OTHER': 1, 'FOR OTHER CAUSE': 1, 'OTHER CAUSE THAN': 1, 'CAUSE THAN THAT': 1, 'THAN THAT OF': 1, 'THE CONSTITUTION WHILST': 1, 'CONSTITUTION WHILST THE': 1, 'WHILST THE JUDICIARY': 1, 'THE JUDICIARY CAN': 1, 'JUDICIARY CAN ONLY': 1, 'CAN ONLY DECLARE': 1, 'ONLY DECLARE VOID': 1, 'DECLARE VOID THOSE': 1, 'VOID THOSE WHICH': 1, 'THOSE WHICH VIOLATE': 1, 'WHICH VIOLATE THAT': 1, 'VIOLATE THAT INSTRUMENT': 1, 'BUT THE DECISION': 1, 'THE DECISION OF': 1, 'DECISION OF THE': 1, 'THE JUDICIARY IS': 1, 'JUDICIARY IS FINAL': 1, 'IS FINAL IN': 1, 'FINAL IN SUCH': 1, 'IN SUCH A': 1, 'SUCH A CASE': 1, 'A CASE WHEREAS': 1, 'CASE WHEREAS IN': 1, 'WHEREAS IN EVERY': 1, 'IN EVERY INSTANCE': 1, 'EVERY INSTANCE WHERE': 1, 'INSTANCE WHERE THE': 1, 'WHERE THE VETO': 1, 'THE VETO OF': 1, 'VETO OF THE': 1, 'THE EXECUTIVE IS': 1, 'EXECUTIVE IS APPLIED': 1, 'IS APPLIED IT': 1, 'APPLIED IT MAY': 1, 'MAY BE OVERCOME': 1, 'BE OVERCOME BY': 1, 'OVERCOME BY A': 1, 'BY A VOTE': 1, 'A VOTE OF': 1, 'VOTE OF TWO-THIRDS': 1, 'OF TWO-THIRDS OF': 1, 'TWO-THIRDS OF BOTH': 1, 'OF BOTH HOUSES': 1, 'THE NEGATIVE UPON': 1, 'THE LEGISLATIVE BY': 1, 'LEGISLATIVE BY THE': 1, 'THE EXECUTIVE AUTHORITY': 1, 'EXECUTIVE AUTHORITY AND': 1, 'AUTHORITY AND THAT': 1, 'AND THAT IN': 1, 'HANDS OF ONE': 1, 'OF ONE INDIVIDUAL': 1, 'ONE INDIVIDUAL WOULD': 1, 'INDIVIDUAL WOULD SEEM': 1, 'WOULD SEEM TO': 1, 'TO BE AN': 1, 'BE AN INCONGRUITY': 1, 'AN INCONGRUITY IN': 1, 'INCONGRUITY IN OUR': 1, 'LIKE SOME OTHERS': 1, 'SOME OTHERS OF': 1, 'OTHERS OF A': 1, 'OF A SIMILAR': 1, 'A SIMILAR CHARACTER': 1, 'SIMILAR CHARACTER HOWEVER': 1, 'CHARACTER HOWEVER IT': 1, 'HOWEVER IT APPEARS': 1, 'IT APPEARS TO': 1, 'APPEARS TO BE': 1, 'TO BE HIGHLY': 1, 'BE HIGHLY EXPEDIENT': 1, 'HIGHLY EXPEDIENT AND': 1, 'EXPEDIENT AND IF': 1, 'AND IF USED': 1, 'IF USED ONLY': 1, 'USED ONLY WITH': 1, 'ONLY WITH THE': 1, 'WITH THE FORBEARANCE': 1, 'THE FORBEARANCE AND': 1, 'FORBEARANCE AND IN': 1, 'AND IN THE': 1, 'IN THE SPIRIT': 1, 'THE SPIRIT WHICH': 1, 'SPIRIT WHICH WAS': 1, 'WHICH WAS INTENDED': 1, 'WAS INTENDED BY': 1, 'INTENDED BY ITS': 1, 'BY ITS AUTHORS': 1, 'ITS AUTHORS IT': 1, 'AUTHORS IT MAY': 1, 'MAY BE PRODUCTIVE': 1, 'BE PRODUCTIVE OF': 1, 'PRODUCTIVE OF GREAT': 1, 'OF GREAT GOOD': 1, 'GREAT GOOD AND': 1, 'GOOD AND BE': 1, 'AND BE FOUND': 1, 'BE FOUND ONE': 1, 'FOUND ONE OF': 1, 'OF THE BEST': 1, 'THE BEST SAFEGUARDS': 1, 'BEST SAFEGUARDS TO': 1, 'SAFEGUARDS TO THE': 1, 'TO THE UNION': 1, 'AT THE PERIOD': 1, 'THE PERIOD OF': 1, 'PERIOD OF THE': 1, 'OF THE FORMATION': 1, 'THE FORMATION OF': 1, 'FORMATION OF THE': 1, 'CONSTITUTION THE PRINCIPLE': 1, 'THE PRINCIPLE DOES': 1, 'PRINCIPLE DOES NOT': 1, 'TO HAVE ENJOYED': 1, 'HAVE ENJOYED MUCH': 1, 'ENJOYED MUCH FAVOR': 1, 'MUCH FAVOR IN': 1, 'FAVOR IN THE': 1, 'IN THE STATE': 1, 'IT EXISTED BUT': 1, 'EXISTED BUT IN': 1, 'BUT IN TWO': 1, 'IN TWO AND': 1, 'TWO AND IN': 1, 'AND IN ONE': 1, 'ONE OF THESE': 1, 'OF THESE THERE': 1, 'THESE THERE WAS': 1, 'THERE WAS A': 1, 'WAS A PLURAL': 1, 'A PLURAL EXECUTIVE': 1, 'WE WOULD SEARCH': 1, 'WOULD SEARCH FOR': 1, 'SEARCH FOR THE': 1, 'FOR THE MOTIVES': 1, 'THE MOTIVES WHICH': 1, 'MOTIVES WHICH OPERATED': 1, 'WHICH OPERATED UPON': 1, 'OPERATED UPON THE': 1, 'UPON THE PURELY': 1, 'THE PURELY PATRIOTIC': 1, 'PURELY PATRIOTIC AND': 1, 'PATRIOTIC AND ENLIGHTENED': 1, 'AND ENLIGHTENED ASSEMBLY': 1, 'ENLIGHTENED ASSEMBLY WHICH': 1, 'ASSEMBLY WHICH FRAMED': 1, 'WHICH FRAMED THE': 1, 'THE CONSTITUTION FOR': 1, 'CONSTITUTION FOR THE': 1, 'ADOPTION OF A': 1, 'OF A PROVISION': 1, 'A PROVISION SO': 1, 'PROVISION SO APPARENTLY': 1, 'SO APPARENTLY REPUGNANT': 1, 'APPARENTLY REPUGNANT TO': 1, 'REPUGNANT TO THE': 1, 'TO THE LEADING': 1, 'THE LEADING DEMOCRATIC': 1, 'LEADING DEMOCRATIC PRINCIPLE': 1, 'DEMOCRATIC PRINCIPLE THAT': 1, 'PRINCIPLE THAT THE': 1, 'THAT THE MAJORITY': 1, 'THE MAJORITY SHOULD': 1, 'MAJORITY SHOULD GOVERN': 1, 'SHOULD GOVERN WE': 1, 'GOVERN WE MUST': 1, 'WE MUST REJECT': 1, 'MUST REJECT THE': 1, 'REJECT THE IDEA': 1, 'THE IDEA THAT': 1, 'IDEA THAT THEY': 1, 'THAT THEY ANTICIPATED': 1, 'THEY ANTICIPATED FROM': 1, 'ANTICIPATED FROM IT': 1, 'FROM IT ANY': 1, 'IT ANY BENEFIT': 1, 'ANY BENEFIT TO': 1, 'BENEFIT TO THE': 1, 'TO THE ORDINARY': 1, 'THE ORDINARY COURSE': 1, 'ORDINARY COURSE OF': 1, 'COURSE OF LEGISLATION': 1, 'THEY KNEW TOO': 1, 'KNEW TOO WELL': 1, 'TOO WELL THE': 1, 'WELL THE HIGH': 1, 'THE HIGH DEGREE': 1, 'HIGH DEGREE OF': 1, 'DEGREE OF INTELLIGENCE': 1, 'OF INTELLIGENCE WHICH': 1, 'INTELLIGENCE WHICH EXISTED': 1, 'WHICH EXISTED AMONG': 1, 'EXISTED AMONG THE': 1, 'AMONG THE PEOPLE': 1, 'THE PEOPLE AND': 1, 'AND THE ENLIGHTENED': 1, 'THE ENLIGHTENED CHARACTER': 1, 'ENLIGHTENED CHARACTER OF': 1, 'THE STATE LEGISLATURES': 1, 'STATE LEGISLATURES NOT': 1, 'LEGISLATURES NOT TO': 1, 'TO HAVE THE': 1, 'HAVE THE FULLEST': 1, 'THE FULLEST CONFIDENCE': 1, 'FULLEST CONFIDENCE THAT': 1, 'CONFIDENCE THAT THE': 1, 'THAT THE TWO': 1, 'THE TWO BODIES': 1, 'TWO BODIES ELECTED': 1, 'BODIES ELECTED BY': 1, 'ELECTED BY THEM': 1, 'BY THEM WOULD': 1, 'THEM WOULD BE': 1, 'WOULD BE WORTHY': 1, 'BE WORTHY REPRESENTATIVES': 1, 'WORTHY REPRESENTATIVES OF': 1, 'REPRESENTATIVES OF SUCH': 1, 'OF SUCH CONSTITUENTS': 1, 'SUCH CONSTITUENTS AND': 1, 'CONSTITUENTS AND OF': 1, 'AND OF COURSE': 1, 'OF COURSE THAT': 1, 'COURSE THAT THEY': 1, 'THAT THEY WOULD': 1, 'THEY WOULD REQUIRE': 1, 'WOULD REQUIRE NO': 1, 'REQUIRE NO AID': 1, 'NO AID IN': 1, 'AID IN CONCEIVING': 1, 'IN CONCEIVING AND': 1, 'CONCEIVING AND MATURING': 1, 'AND MATURING THE': 1, 'MATURING THE MEASURES': 1, 'THE MEASURES WHICH': 1, 'MEASURES WHICH THE': 1, 'WHICH THE CIRCUMSTANCES': 1, 'THE COUNTRY MIGHT': 1, 'COUNTRY MIGHT REQUIRE': 1, 'IT IS PREPOSTEROUS': 1, 'IS PREPOSTEROUS TO': 1, 'PREPOSTEROUS TO SUPPOSE': 1, 'TO SUPPOSE THAT': 1, 'SUPPOSE THAT A': 1, 'THAT A THOUGHT': 1, 'A THOUGHT COULD': 1, 'THOUGHT COULD FOR': 1, 'COULD FOR A': 1, 'FOR A MOMENT': 1, 'A MOMENT HAVE': 1, 'MOMENT HAVE BEEN': 1, 'HAVE BEEN ENTERTAINED': 1, 'BEEN ENTERTAINED THAT': 1, 'ENTERTAINED THAT THE': 1, 'THAT THE PRESIDENT': 1, 'THE PRESIDENT PLACED': 1, 'PRESIDENT PLACED AT': 1, 'PLACED AT THE': 1, 'AT THE CAPITAL': 1, 'THE CAPITAL IN': 1, 'CAPITAL IN THE': 1, 'IN THE CENTER': 1, 'THE CENTER OF': 1, 'CENTER OF THE': 1, 'THE COUNTRY COULD': 1, 'COUNTRY COULD BETTER': 1, 'COULD BETTER UNDERSTAND': 1, 'BETTER UNDERSTAND THE': 1, 'UNDERSTAND THE WANTS': 1, 'THE WANTS AND': 1, 'WANTS AND WISHES': 1, 'AND WISHES OF': 1, 'WISHES OF THE': 1, 'THE PEOPLE THAN': 1, 'PEOPLE THAN THEIR': 1, 'THAN THEIR OWN': 1, 'THEIR OWN IMMEDIATE': 1, 'OWN IMMEDIATE REPRESENTATIVES': 1, 'IMMEDIATE REPRESENTATIVES WHO': 1, 'REPRESENTATIVES WHO SPEND': 1, 'WHO SPEND A': 1, 'SPEND A PART': 1, 'PART OF EVERY': 1, 'OF EVERY YEAR': 1, 'EVERY YEAR AMONG': 1, 'YEAR AMONG THEM': 1, 'AMONG THEM LIVING': 1, 'THEM LIVING WITH': 1, 'LIVING WITH THEM': 1, 'WITH THEM OFTEN': 1, 'THEM OFTEN LABORING': 1, 'OFTEN LABORING WITH': 1, 'LABORING WITH THEM': 1, 'WITH THEM AND': 1, 'THEM AND BOUND': 1, 'AND BOUND TO': 1, 'BOUND TO THEM': 1, 'BY THE TRIPLE': 1, 'THE TRIPLE TIE': 1, 'TRIPLE TIE OF': 1, 'OF INTEREST DUTY': 1, 'INTEREST DUTY AND': 1, 'DUTY AND AFFECTION': 1, 'TO ASSIST OR': 1, 'ASSIST OR CONTROL': 1, 'OR CONTROL CONGRESS': 1, 'CONTROL CONGRESS THEN': 1, 'CONGRESS THEN IN': 1, 'THEN IN ITS': 1, 'IN ITS ORDINARY': 1, 'ITS ORDINARY LEGISLATION': 1, 'ORDINARY LEGISLATION COULD': 1, 'LEGISLATION COULD NOT': 1, 'COULD NOT I': 1, 'NOT I CONCEIVE': 1, 'I CONCEIVE HAVE': 1, 'CONCEIVE HAVE BEEN': 1, 'BEEN THE MOTIVE': 1, 'THE MOTIVE FOR': 1, 'MOTIVE FOR CONFERRING': 1, 'FOR CONFERRING THE': 1, 'CONFERRING THE VETO': 1, 'VETO POWER ON': 1, 'POWER ON THE': 1, 'ON THE PRESIDENT': 1, 'THIS ARGUMENT ACQUIRES': 1, 'ARGUMENT ACQUIRES ADDITIONAL': 1, 'ACQUIRES ADDITIONAL FORCE': 1, 'ADDITIONAL FORCE FROM': 1, 'FORCE FROM THE': 1, 'FROM THE FACT': 1, 'THE FACT OF': 1, 'FACT OF ITS': 1, 'OF ITS NEVER': 1, 'ITS NEVER HAVING': 1, 'NEVER HAVING BEEN': 1, 'HAVING BEEN THUS': 1, 'BEEN THUS USED': 1, 'THUS USED BY': 1, 'USED BY THE': 1, 'BY THE FIRST': 1, 'THE FIRST SIX': 1, 'FIRST SIX PRESIDENTS--AND': 1, 'SIX PRESIDENTS--AND TWO': 1, 'PRESIDENTS--AND TWO OF': 1, 'TWO OF THEM': 1, 'OF THEM WERE': 1, 'THEM WERE MEMBERS': 1, 'WERE MEMBERS OF': 1, 'MEMBERS OF THE': 1, 'THE CONVENTION ONE': 1, 'CONVENTION ONE PRESIDING': 1, 'ONE PRESIDING OVER': 1, 'PRESIDING OVER ITS': 1, 'OVER ITS DELIBERATIONS': 1, 'ITS DELIBERATIONS AND': 1, 'DELIBERATIONS AND THE': 1, 'AND THE OTHER': 1, 'THE OTHER BEARING': 1, 'OTHER BEARING A': 1, 'BEARING A LARGER': 1, 'A LARGER SHARE': 1, 'LARGER SHARE IN': 1, 'SHARE IN CONSUMMATING': 1, 'IN CONSUMMATING THE': 1, 'CONSUMMATING THE LABORS': 1, 'LABORS OF THAT': 1, 'OF THAT AUGUST': 1, 'THAT AUGUST BODY': 1, 'AUGUST BODY THAN': 1, 'BODY THAN ANY': 1, 'ANY OTHER PERSON': 1, 'BUT IF BILLS': 1, 'IF BILLS WERE': 1, 'BILLS WERE NEVER': 1, 'WERE NEVER RETURNED': 1, 'NEVER RETURNED TO': 1, 'RETURNED TO CONGRESS': 1, 'TO CONGRESS BY': 1, 'CONGRESS BY EITHER': 1, 'BY EITHER OF': 1, 'EITHER OF THE': 1, 'OF THE PRESIDENTS': 1, 'THE PRESIDENTS ABOVE': 1, 'PRESIDENTS ABOVE REFERRED': 1, 'ABOVE REFERRED TO': 1, 'REFERRED TO UPON': 1, 'TO UPON THE': 1, 'UPON THE GROUND': 1, 'THE GROUND OF': 1, 'GROUND OF THEIR': 1, 'OF THEIR BEING': 1, 'THEIR BEING INEXPEDIENT': 1, 'BEING INEXPEDIENT OR': 1, 'INEXPEDIENT OR NOT': 1, 'OR NOT AS': 1, 'NOT AS WELL': 1, 'AS WELL ADAPTED': 1, 'WELL ADAPTED AS': 1, 'ADAPTED AS THEY': 1, 'AS THEY MIGHT': 1, 'THEY MIGHT BE': 1, 'MIGHT BE TO': 1, 'BE TO THE': 1, 'TO THE WANTS': 1, 'THE WANTS OF': 1, 'WANTS OF THE': 1, 'THE PEOPLE THE': 1, 'PEOPLE THE VETO': 1, 'THE VETO WAS': 1, 'VETO WAS APPLIED': 1, 'WAS APPLIED UPON': 1, 'APPLIED UPON THAT': 1, 'UPON THAT OF': 1, 'THE CONSTITUTION OR': 1, 'CONSTITUTION OR BECAUSE': 1, 'OR BECAUSE ERRORS': 1, 'BECAUSE ERRORS HAD': 1, 'ERRORS HAD BEEN': 1, 'BEEN COMMITTED FROM': 1, 'COMMITTED FROM A': 1, 'FROM A TOO': 1, 'A TOO HASTY': 1, 'TOO HASTY ENACTMENT': 1, 'THERE IS ANOTHER': 1, 'IS ANOTHER GROUND': 1, 'ANOTHER GROUND FOR': 1, 'GROUND FOR THE': 1, 'OF THE VETO': 1, 'THE VETO PRINCIPLE': 1, 'VETO PRINCIPLE WHICH': 1, 'PRINCIPLE WHICH HAD': 1, 'WHICH HAD PROBABLY': 1, 'HAD PROBABLY MORE': 1, 'PROBABLY MORE INFLUENCE': 1, 'MORE INFLUENCE IN': 1, 'INFLUENCE IN RECOMMENDING': 1, 'IN RECOMMENDING IT': 1, 'RECOMMENDING IT TO': 1, 'IT TO THE': 1, 'THE CONVENTION THAN': 1, 'CONVENTION THAN ANY': 1, 'I REFER TO': 1, 'REFER TO THE': 1, 'THE SECURITY WHICH': 1, 'SECURITY WHICH IT': 1, 'WHICH IT GIVES': 1, 'IT GIVES TO': 1, 'GIVES TO THE': 1, 'TO THE JUST': 1, 'THE JUST AND': 1, 'JUST AND EQUITABLE': 1, 'AND EQUITABLE ACTION': 1, 'EQUITABLE ACTION OF': 1, 'ACTION OF THE': 1, 'THE LEGISLATURE UPON': 1, 'LEGISLATURE UPON ALL': 1, 'UPON ALL PARTS': 1, 'ALL PARTS OF': 1, 'PARTS OF THE': 1, 'IT COULD NOT': 1, 'COULD NOT BUT': 1, 'NOT BUT HAVE': 1, 'BUT HAVE OCCURRED': 1, 'HAVE OCCURRED TO': 1, 'OCCURRED TO THE': 1, 'THE CONVENTION THAT': 1, 'CONVENTION THAT IN': 1, 'THAT IN A': 1, 'IN A COUNTRY': 1, 'A COUNTRY SO': 1, 'COUNTRY SO EXTENSIVE': 1, 'SO EXTENSIVE EMBRACING': 1, 'EXTENSIVE EMBRACING SO': 1, 'EMBRACING SO GREAT': 1, 'SO GREAT A': 1, 'GREAT A VARIETY': 1, 'A VARIETY OF': 1, 'VARIETY OF SOIL': 1, 'OF SOIL AND': 1, 'SOIL AND CLIMATE': 1, 'AND CLIMATE AND': 1, 'CLIMATE AND CONSEQUENTLY': 1, 'AND CONSEQUENTLY OF': 1, 'CONSEQUENTLY OF PRODUCTS': 1, 'OF PRODUCTS AND': 1, 'PRODUCTS AND WHICH': 1, 'AND WHICH FROM': 1, 'WHICH FROM THE': 1, 'FROM THE SAME': 1, 'SAME CAUSES MUST': 1, 'CAUSES MUST EVER': 1, 'MUST EVER EXHIBIT': 1, 'EVER EXHIBIT A': 1, 'EXHIBIT A GREAT': 1, 'A GREAT DIFFERENCE': 1, 'GREAT DIFFERENCE IN': 1, 'DIFFERENCE IN THE': 1, 'IN THE AMOUNT': 1, 'AMOUNT OF THE': 1, 'OF THE POPULATION': 1, 'THE POPULATION OF': 1, 'POPULATION OF ITS': 1, 'OF ITS VARIOUS': 1, 'ITS VARIOUS SECTIONS': 1, 'VARIOUS SECTIONS CALLING': 1, 'SECTIONS CALLING FOR': 1, 'CALLING FOR A': 1, 'FOR A GREAT': 1, 'A GREAT DIVERSITY': 1, 'GREAT DIVERSITY IN': 1, 'DIVERSITY IN THE': 1, 'IN THE EMPLOYMENTS': 1, 'THE EMPLOYMENTS OF': 1, 'EMPLOYMENTS OF THE': 1, 'THE PEOPLE THAT': 1, 'PEOPLE THAT THE': 1, 'THAT THE LEGISLATION': 1, 'LEGISLATION OF THE': 1, 'OF THE MAJORITY': 1, 'THE MAJORITY MIGHT': 1, 'MAJORITY MIGHT NOT': 1, 'MIGHT NOT ALWAYS': 1, 'NOT ALWAYS JUSTLY': 1, 'ALWAYS JUSTLY REGARD': 1, 'JUSTLY REGARD THE': 1, 'REGARD THE RIGHTS': 1, 'THE RIGHTS AND': 1, 'RIGHTS AND INTERESTS': 1, 'AND INTERESTS OF': 1, 'OF THE MINORITY': 1, 'THE MINORITY AND': 1, 'MINORITY AND THAT': 1, 'AND THAT ACTS': 1, 'THAT ACTS OF': 1, 'ACTS OF THIS': 1, 'OF THIS CHARACTER': 1, 'THIS CHARACTER MIGHT': 1, 'CHARACTER MIGHT BE': 1, 'MIGHT BE PASSED': 1, 'BE PASSED UNDER': 1, 'PASSED UNDER AN': 1, 'UNDER AN EXPRESS': 1, 'EXPRESS GRANT BY': 1, 'GRANT BY THE': 1, 'BY THE WORDS': 1, 'THE WORDS OF': 1, 'WORDS OF THE': 1, 'CONSTITUTION AND THEREFORE': 1, 'AND THEREFORE NOT': 1, 'THEREFORE NOT WITHIN': 1, 'NOT WITHIN THE': 1, 'WITHIN THE COMPETENCY': 1, 'THE COMPETENCY OF': 1, 'COMPETENCY OF THE': 1, 'THE JUDICIARY TO': 1, 'JUDICIARY TO DECLARE': 1, 'TO DECLARE VOID': 1, 'DECLARE VOID THAT': 1, 'VOID THAT HOWEVER': 1, 'THAT HOWEVER ENLIGHTENED': 1, 'HOWEVER ENLIGHTENED AND': 1, 'ENLIGHTENED AND PATRIOTIC': 1, 'AND PATRIOTIC THEY': 1, 'PATRIOTIC THEY MIGHT': 1, 'THEY MIGHT SUPPOSE': 1, 'MIGHT SUPPOSE FROM': 1, 'SUPPOSE FROM PAST': 1, 'FROM PAST EXPERIENCE': 1, 'PAST EXPERIENCE THE': 1, 'EXPERIENCE THE MEMBERS': 1, 'THE MEMBERS OF': 1, 'MEMBERS OF CONGRESS': 1, 'OF CONGRESS MIGHT': 1, 'CONGRESS MIGHT BE': 1, 'MIGHT BE AND': 1, 'BE AND HOWEVER': 1, 'AND HOWEVER LARGELY': 1, 'HOWEVER LARGELY PARTAKING': 1, 'LARGELY PARTAKING IN': 1, 'PARTAKING IN THE': 1, 'IN THE GENERAL': 1, 'THE GENERAL OF': 1, 'GENERAL OF THE': 1, 'OF THE LIBERAL': 1, 'THE LIBERAL FEELINGS': 1, 'LIBERAL FEELINGS OF': 1, 'FEELINGS OF THE': 1, 'THE PEOPLE IT': 1, 'PEOPLE IT WAS': 1, 'IT WAS IMPOSSIBLE': 1, 'WAS IMPOSSIBLE TO': 1, 'IMPOSSIBLE TO EXPECT': 1, 'TO EXPECT THAT': 1, 'EXPECT THAT BODIES': 1, 'THAT BODIES SO': 1, 'BODIES SO CONSTITUTED': 1, 'SO CONSTITUTED SHOULD': 1, 'CONSTITUTED SHOULD NOT': 1, 'SHOULD NOT SOMETIMES': 1, 'NOT SOMETIMES BE': 1, 'SOMETIMES BE CONTROLLED': 1, 'BE CONTROLLED BY': 1, 'CONTROLLED BY LOCAL': 1, 'BY LOCAL INTERESTS': 1, 'LOCAL INTERESTS AND': 1, 'INTERESTS AND SECTIONAL': 1, 'AND SECTIONAL FEELINGS': 1, 'IT WAS PROPER': 1, 'WAS PROPER THEREFORE': 1, 'PROPER THEREFORE TO': 1, 'THEREFORE TO PROVIDE': 1, 'TO PROVIDE SOME': 1, 'PROVIDE SOME UMPIRE': 1, 'SOME UMPIRE FROM': 1, 'UMPIRE FROM WHOSE': 1, 'FROM WHOSE SITUATION': 1, 'WHOSE SITUATION AND': 1, 'SITUATION AND MODE': 1, 'AND MODE OF': 1, 'MODE OF APPOINTMENT': 1, 'OF APPOINTMENT MORE': 1, 'APPOINTMENT MORE INDEPENDENCE': 1, 'MORE INDEPENDENCE AND': 1, 'INDEPENDENCE AND FREEDOM': 1, 'AND FREEDOM FROM': 1, 'FREEDOM FROM SUCH': 1, 'FROM SUCH INFLUENCES': 1, 'SUCH INFLUENCES MIGHT': 1, 'INFLUENCES MIGHT BE': 1, 'MIGHT BE EXPECTED': 1, 'SUCH A ONE': 1, 'A ONE WAS': 1, 'ONE WAS AFFORDED': 1, 'WAS AFFORDED BY': 1, 'AFFORDED BY THE': 1, 'EXECUTIVE DEPARTMENT CONSTITUTED': 1, 'DEPARTMENT CONSTITUTED BY': 1, 'A PERSON ELECTED': 1, 'PERSON ELECTED TO': 1, 'ELECTED TO THAT': 1, 'TO THAT HIGH': 1, 'HIGH OFFICE HAVING': 1, 'OFFICE HAVING HIS': 1, 'HAVING HIS CONSTITUENTS': 1, 'HIS CONSTITUENTS IN': 1, 'CONSTITUENTS IN EVERY': 1, 'IN EVERY SECTION': 1, 'EVERY SECTION STATE': 1, 'SECTION STATE AND': 1, 'STATE AND SUBDIVISION': 1, 'AND SUBDIVISION OF': 1, 'SUBDIVISION OF THE': 1, 'THE UNION MUST': 1, 'UNION MUST CONSIDER': 1, 'MUST CONSIDER HIMSELF': 1, 'CONSIDER HIMSELF BOUND': 1, 'HIMSELF BOUND BY': 1, 'BOUND BY THE': 1, 'BY THE MOST': 1, 'THE MOST SOLEMN': 1, 'MOST SOLEMN SANCTIONS': 1, 'SOLEMN SANCTIONS TO': 1, 'SANCTIONS TO GUARD': 1, 'TO GUARD PROTECT': 1, 'GUARD PROTECT AND': 1, 'PROTECT AND DEFEND': 1, 'AND DEFEND THE': 1, 'DEFEND THE RIGHTS': 1, 'RIGHTS OF ALL': 1, 'OF ALL AND': 1, 'ALL AND OF': 1, 'AND OF EVERY': 1, 'OF EVERY PORTION': 1, 'EVERY PORTION GREAT': 1, 'PORTION GREAT OR': 1, 'GREAT OR SMALL': 1, 'OR SMALL FROM': 1, 'SMALL FROM THE': 1, 'FROM THE INJUSTICE': 1, 'THE INJUSTICE AND': 1, 'INJUSTICE AND OPPRESSION': 1, 'AND OPPRESSION OF': 1, 'OPPRESSION OF THE': 1, 'OF THE REST': 1, 'I CONSIDER THE': 1, 'CONSIDER THE VETO': 1, 'VETO POWER THEREFORE': 1, 'POWER THEREFORE GIVEN': 1, 'THEREFORE GIVEN BY': 1, 'GIVEN BY THE': 1, 'THE CONSTITUTION TO': 1, 'CONSTITUTION TO THE': 1, 'THE EXECUTIVE OF': 1, 'EXECUTIVE OF THE': 1, 'UNITED STATES SOLELY': 1, 'STATES SOLELY AS': 1, 'SOLELY AS A': 1, 'AS A CONSERVATIVE': 1, 'A CONSERVATIVE POWER': 1, 'CONSERVATIVE POWER TO': 1, 'TO BE USED': 1, 'BE USED ONLY': 1, 'USED ONLY FIRST': 1, 'ONLY FIRST TO': 1, 'FIRST TO PROTECT': 1, 'TO PROTECT THE': 1, 'PROTECT THE CONSTITUTION': 1, 'THE CONSTITUTION FROM': 1, 'CONSTITUTION FROM VIOLATION': 1, 'FROM VIOLATION SECONDLY': 1, 'VIOLATION SECONDLY THE': 1, 'SECONDLY THE PEOPLE': 1, 'THE PEOPLE FROM': 1, 'PEOPLE FROM THE': 1, 'FROM THE EFFECTS': 1, 'EFFECTS OF HASTY': 1, 'OF HASTY LEGISLATION': 1, 'HASTY LEGISLATION WHERE': 1, 'LEGISLATION WHERE THEIR': 1, 'WHERE THEIR WILL': 1, 'THEIR WILL HAS': 1, 'WILL HAS BEEN': 1, 'HAS BEEN PROBABLY': 1, 'BEEN PROBABLY DISREGARDED': 1, 'PROBABLY DISREGARDED OR': 1, 'DISREGARDED OR NOT': 1, 'OR NOT WELL': 1, 'NOT WELL UNDERSTOOD': 1, 'WELL UNDERSTOOD AND': 1, 'UNDERSTOOD AND THIRDLY': 1, 'AND THIRDLY TO': 1, 'THIRDLY TO PREVENT': 1, 'PREVENT THE EFFECTS': 1, 'EFFECTS OF COMBINATIONS': 1, 'OF COMBINATIONS VIOLATIVE': 1, 'COMBINATIONS VIOLATIVE OF': 1, 'VIOLATIVE OF THE': 1, 'OF THE RIGHTS': 1, 'RIGHTS OF MINORITIES': 1, 'IN REFERENCE TO': 1, 'REFERENCE TO THE': 1, 'TO THE SECOND': 1, 'THE SECOND OF': 1, 'SECOND OF THESE': 1, 'OF THESE OBJECTS': 1, 'THESE OBJECTS I': 1, 'OBJECTS I MAY': 1, 'I MAY OBSERVE': 1, 'MAY OBSERVE THAT': 1, 'OBSERVE THAT I': 1, 'THAT I CONSIDER': 1, 'I CONSIDER IT': 1, 'CONSIDER IT THE': 1, 'IT THE RIGHT': 1, 'THE RIGHT AND': 1, 'RIGHT AND PRIVILEGE': 1, 'AND PRIVILEGE OF': 1, 'PRIVILEGE OF THE': 1, 'PEOPLE TO DECIDE': 1, 'TO DECIDE DISPUTED': 1, 'DECIDE DISPUTED POINTS': 1, 'DISPUTED POINTS OF': 1, 'POINTS OF THE': 1, 'THE CONSTITUTION ARISING': 1, 'CONSTITUTION ARISING FROM': 1, 'ARISING FROM THE': 1, 'FROM THE GENERAL': 1, 'THE GENERAL GRANT': 1, 'GENERAL GRANT OF': 1, 'POWER TO CONGRESS': 1, 'TO CONGRESS TO': 1, 'CONGRESS TO CARRY': 1, 'EFFECT THE POWERS': 1, 'THE POWERS EXPRESSLY': 1, 'POWERS EXPRESSLY GIVEN': 1, 'EXPRESSLY GIVEN AND': 1, 'GIVEN AND I': 1, 'AND I BELIEVE': 1, 'I BELIEVE WITH': 1, 'BELIEVE WITH MR': 1, 'MADISON THAT REPEATED': 1, 'THAT REPEATED RECOGNITIONS': 1, 'REPEATED RECOGNITIONS UNDER': 1, 'RECOGNITIONS UNDER VARIED': 1, 'UNDER VARIED CIRCUMSTANCES': 1, 'VARIED CIRCUMSTANCES IN': 1, 'CIRCUMSTANCES IN ACTS': 1, 'IN ACTS OF': 1, 'THE LEGISLATIVE EXECUTIVE': 1, 'LEGISLATIVE EXECUTIVE AND': 1, 'EXECUTIVE AND JUDICIAL': 1, 'AND JUDICIAL BRANCHES': 1, 'JUDICIAL BRANCHES OF': 1, 'BRANCHES OF THE': 1, 'THE GOVERNMENT ACCOMPANIED': 1, 'GOVERNMENT ACCOMPANIED BY': 1, 'ACCOMPANIED BY INDICATIONS': 1, 'BY INDICATIONS IN': 1, 'INDICATIONS IN DIFFERENT': 1, 'IN DIFFERENT MODES': 1, 'DIFFERENT MODES OF': 1, 'MODES OF THE': 1, 'OF THE CONCURRENCE': 1, 'THE CONCURRENCE OF': 1, 'CONCURRENCE OF THE': 1, 'THE GENERAL WILL': 1, 'GENERAL WILL OF': 1, 'WILL OF THE': 1, 'THE NATION AS': 1, 'NATION AS AFFORDING': 1, 'AS AFFORDING TO': 1, 'AFFORDING TO THE': 1, 'TO THE PRESIDENT': 1, 'THE PRESIDENT SUFFICIENT': 1, 'PRESIDENT SUFFICIENT AUTHORITY': 1, 'SUFFICIENT AUTHORITY FOR': 1, 'AUTHORITY FOR HIS': 1, 'FOR HIS CONSIDERING': 1, 'HIS CONSIDERING SUCH': 1, 'CONSIDERING SUCH DISPUTED': 1, 'SUCH DISPUTED POINTS': 1, 'DISPUTED POINTS AS': 1, 'POINTS AS SETTLED': 1, 'UPWARD OF HALF': 1, 'OF HALF A': 1, 'HALF A CENTURY': 1, 'A CENTURY HAS': 1, 'CENTURY HAS ELAPSED': 1, 'HAS ELAPSED SINCE': 1, 'ELAPSED SINCE THE': 1, 'SINCE THE ADOPTION': 1, 'OF THE PRESENT': 1, 'THE PRESENT FORM': 1, 'PRESENT FORM OF': 1, 'FORM OF GOVERNMENT': 1, 'WOULD BE AN': 1, 'BE AN OBJECT': 1, 'AN OBJECT MORE': 1, 'OBJECT MORE HIGHLY': 1, 'MORE HIGHLY DESIRABLE': 1, 'HIGHLY DESIRABLE THAN': 1, 'DESIRABLE THAN THE': 1, 'THAN THE GRATIFICATION': 1, 'THE GRATIFICATION OF': 1, 'GRATIFICATION OF THE': 1, 'OF THE CURIOSITY': 1, 'THE CURIOSITY OF': 1, 'CURIOSITY OF SPECULATIVE': 1, 'OF SPECULATIVE STATESMEN': 1, 'SPECULATIVE STATESMEN IF': 1, 'STATESMEN IF ITS': 1, 'IF ITS PRECISE': 1, 'ITS PRECISE SITUATION': 1, 'PRECISE SITUATION COULD': 1, 'SITUATION COULD BE': 1, 'COULD BE ASCERTAINED': 1, 'BE ASCERTAINED A': 1, 'ASCERTAINED A FAIR': 1, 'A FAIR EXHIBIT': 1, 'FAIR EXHIBIT MADE': 1, 'EXHIBIT MADE OF': 1, 'OF THE OPERATIONS': 1, 'THE OPERATIONS OF': 1, 'OPERATIONS OF EACH': 1, 'EACH OF ITS': 1, 'OF ITS DEPARTMENTS': 1, 'ITS DEPARTMENTS OF': 1, 'RESPECTIVELY CLAIM AND': 1, 'CLAIM AND EXERCISE': 1, 'AND EXERCISE OF': 1, 'OF THE COLLISIONS': 1, 'THE COLLISIONS WHICH': 1, 'COLLISIONS WHICH HAVE': 1, 'WHICH HAVE OCCURRED': 1, 'HAVE OCCURRED BETWEEN': 1, 'OCCURRED BETWEEN THEM': 1, 'BETWEEN THEM OR': 1, 'THEM OR BETWEEN': 1, 'OR BETWEEN THE': 1, 'BETWEEN THE WHOLE': 1, 'THE WHOLE GOVERNMENT': 1, 'WHOLE GOVERNMENT AND': 1, 'GOVERNMENT AND THOSE': 1, 'AND THOSE OF': 1, 'THE STATES OR': 1, 'STATES OR EITHER': 1, 'EITHER OF THEM': 1, 'WE COULD THEN': 1, 'COULD THEN COMPARE': 1, 'THEN COMPARE OUR': 1, 'COMPARE OUR ACTUAL': 1, 'OUR ACTUAL CONDITION': 1, 'ACTUAL CONDITION AFTER': 1, 'CONDITION AFTER FIFTY': 1, 'AFTER FIFTY YEARS': 1, 'FIFTY YEARS TRIAL': 1, 'YEARS TRIAL OF': 1, 'TRIAL OF OUR': 1, 'OUR SYSTEM WITH': 1, 'SYSTEM WITH WHAT': 1, 'WITH WHAT IT': 1, 'WHAT IT WAS': 1, 'IT WAS IN': 1, 'WAS IN THE': 1, 'IN THE COMMENCEMENT': 1, 'COMMENCEMENT OF ITS': 1, 'ITS OPERATIONS AND': 1, 'OPERATIONS AND ASCERTAIN': 1, 'AND ASCERTAIN WHETHER': 1, 'ASCERTAIN WHETHER THE': 1, 'WHETHER THE PREDICTIONS': 1, 'THE PREDICTIONS OF': 1, 'PREDICTIONS OF THE': 1, 'OF THE PATRIOTS': 1, 'THE PATRIOTS WHO': 1, 'PATRIOTS WHO OPPOSED': 1, 'WHO OPPOSED ITS': 1, 'OPPOSED ITS ADOPTION': 1, 'ITS ADOPTION OR': 1, 'ADOPTION OR THE': 1, 'OR THE CONFIDENT': 1, 'THE CONFIDENT HOPES': 1, 'CONFIDENT HOPES OF': 1, 'HOPES OF ITS': 1, 'OF ITS ADVOCATES': 1, 'ITS ADVOCATES HAVE': 1, 'ADVOCATES HAVE BEEN': 1, 'HAVE BEEN BEST': 1, 'BEEN BEST REALIZED': 1, 'THE GREAT DREAD': 1, 'GREAT DREAD OF': 1, 'DREAD OF THE': 1, 'THE FORMER SEEMS': 1, 'FORMER SEEMS TO': 1, 'SEEMS TO HAVE': 1, 'TO HAVE BEEN': 1, 'HAVE BEEN THAT': 1, 'BEEN THAT THE': 1, 'THAT THE RESERVED': 1, 'POWERS OF THE': 1, 'THE STATES WOULD': 1, 'STATES WOULD BE': 1, 'WOULD BE ABSORBED': 1, 'BE ABSORBED BY': 1, 'ABSORBED BY THOSE': 1, 'BY THOSE OF': 1, 'GOVERNMENT AND A': 1, 'AND A CONSOLIDATED': 1, 'A CONSOLIDATED POWER': 1, 'CONSOLIDATED POWER ESTABLISHED': 1, 'POWER ESTABLISHED LEAVING': 1, 'ESTABLISHED LEAVING TO': 1, 'LEAVING TO THE': 1, 'TO THE STATES': 1, 'THE STATES THE': 1, 'STATES THE SHADOW': 1, 'THE SHADOW ONLY': 1, 'SHADOW ONLY OF': 1, 'ONLY OF THAT': 1, 'OF THAT INDEPENDENT': 1, 'THAT INDEPENDENT ACTION': 1, 'INDEPENDENT ACTION FOR': 1, 'ACTION FOR WHICH': 1, 'WHICH THEY HAD': 1, 'THEY HAD SO': 1, 'HAD SO ZEALOUSLY': 1, 'SO ZEALOUSLY CONTENDED': 1, 'ZEALOUSLY CONTENDED AND': 1, 'CONTENDED AND ON': 1, 'AND ON THE': 1, 'ON THE PRESERVATION': 1, 'THE PRESERVATION OF': 1, 'PRESERVATION OF WHICH': 1, 'OF WHICH THEY': 1, 'WHICH THEY RELIED': 1, 'THEY RELIED AS': 1, 'RELIED AS THE': 1, 'AS THE LAST': 1, 'THE LAST HOPE': 1, 'LAST HOPE OF': 1, 'HOPE OF LIBERTY': 1, 'WITHOUT DENYING THAT': 1, 'DENYING THAT THE': 1, 'THAT THE RESULT': 1, 'THE RESULT TO': 1, 'RESULT TO WHICH': 1, 'TO WHICH THEY': 1, 'WHICH THEY LOOKED': 1, 'THEY LOOKED WITH': 1, 'LOOKED WITH SO': 1, 'WITH SO MUCH': 1, 'SO MUCH APPREHENSION': 1, 'MUCH APPREHENSION IS': 1, 'APPREHENSION IS IN': 1, 'IN THE WAY': 1, 'THE WAY OF': 1, 'WAY OF BEING': 1, 'OF BEING REALIZED': 1, 'BEING REALIZED IT': 1, 'REALIZED IT IS': 1, 'IT IS OBVIOUS': 1, 'IS OBVIOUS THAT': 1, 'OBVIOUS THAT THEY': 1, 'THAT THEY DID': 1, 'THEY DID NOT': 1, 'DID NOT CLEARLY': 1, 'NOT CLEARLY SEE': 1, 'CLEARLY SEE THE': 1, 'SEE THE MODE': 1, 'MODE OF ITS': 1, 'OF ITS ACCOMPLISHMENT': 1, 'GENERAL GOVERNMENT HAS': 1, 'GOVERNMENT HAS SEIZED': 1, 'HAS SEIZED UPON': 1, 'SEIZED UPON NONE': 1, 'UPON NONE OF': 1, 'OF THE RESERVED': 1, 'THE RESERVED RIGHTS': 1, 'RESERVED RIGHTS OF': 1, 'FAR AS ANY': 1, 'AS ANY OPEN': 1, 'ANY OPEN WARFARE': 1, 'OPEN WARFARE MAY': 1, 'WARFARE MAY HAVE': 1, 'MAY HAVE GONE': 1, 'HAVE GONE THE': 1, 'GONE THE STATE': 1, 'STATE AUTHORITIES HAVE': 1, 'AUTHORITIES HAVE AMPLY': 1, 'HAVE AMPLY MAINTAINED': 1, 'AMPLY MAINTAINED THEIR': 1, 'MAINTAINED THEIR RIGHTS': 1, 'TO A CASUAL': 1, 'A CASUAL OBSERVER': 1, 'CASUAL OBSERVER OUR': 1, 'OBSERVER OUR SYSTEM': 1, 'OUR SYSTEM PRESENTS': 1, 'SYSTEM PRESENTS NO': 1, 'PRESENTS NO APPEARANCE': 1, 'NO APPEARANCE OF': 1, 'APPEARANCE OF DISCORD': 1, 'OF DISCORD BETWEEN': 1, 'DISCORD BETWEEN THE': 1, 'BETWEEN THE DIFFERENT': 1, 'THE DIFFERENT MEMBERS': 1, 'DIFFERENT MEMBERS WHICH': 1, 'MEMBERS WHICH COMPOSE': 1, 'WHICH COMPOSE IT': 1, 'EVEN THE ADDITION': 1, 'THE ADDITION OF': 1, 'ADDITION OF MANY': 1, 'OF MANY NEW': 1, 'MANY NEW ONES': 1, 'NEW ONES HAS': 1, 'ONES HAS PRODUCED': 1, 'HAS PRODUCED NO': 1, 'PRODUCED NO JARRING': 1, 'THEY MOVE IN': 1, 'MOVE IN THEIR': 1, 'IN THEIR RESPECTIVE': 1, 'THEIR RESPECTIVE ORBITS': 1, 'RESPECTIVE ORBITS IN': 1, 'ORBITS IN PERFECT': 1, 'IN PERFECT HARMONY': 1, 'PERFECT HARMONY WITH': 1, 'HARMONY WITH THE': 1, 'WITH THE CENTRAL': 1, 'THE CENTRAL HEAD': 1, 'CENTRAL HEAD AND': 1, 'HEAD AND WITH': 1, 'AND WITH EACH': 1, 'WITH EACH OTHER': 1, 'BUT THERE IS': 1, 'THERE IS STILL': 1, 'IS STILL AN': 1, 'STILL AN UNDERCURRENT': 1, 'AN UNDERCURRENT AT': 1, 'UNDERCURRENT AT WORK': 1, 'AT WORK BY': 1, 'WORK BY WHICH': 1, 'BY WHICH IF': 1, 'WHICH IF NOT': 1, 'IF NOT SEASONABLY': 1, 'NOT SEASONABLY CHECKED': 1, 'SEASONABLY CHECKED THE': 1, 'CHECKED THE WORST': 1, 'THE WORST APPREHENSIONS': 1, 'WORST APPREHENSIONS OF': 1, 'APPREHENSIONS OF OUR': 1, 'OF OUR ANTIFEDERAL': 1, 'OUR ANTIFEDERAL PATRIOTS': 1, 'ANTIFEDERAL PATRIOTS WILL': 1, 'PATRIOTS WILL BE': 1, 'WILL BE REALIZED': 1, 'BE REALIZED AND': 1, 'REALIZED AND NOT': 1, 'NOT ONLY WILL': 1, 'ONLY WILL THE': 1, 'WILL THE STATE': 1, 'STATE AUTHORITIES BE': 1, 'AUTHORITIES BE OVERSHADOWED': 1, 'BE OVERSHADOWED BY': 1, 'OVERSHADOWED BY THE': 1, 'GREAT INCREASE OF': 1, 'INCREASE OF POWER': 1, 'IN THE EXECUTIVE': 1, 'EXECUTIVE DEPARTMENT OF': 1, 'BUT THE CHARACTER': 1, 'CHARACTER OF THAT': 1, 'OF THAT GOVERNMENT': 1, 'THAT GOVERNMENT IF': 1, 'GOVERNMENT IF NOT': 1, 'IF NOT ITS': 1, 'NOT ITS DESIGNATION': 1, 'ITS DESIGNATION BE': 1, 'DESIGNATION BE ESSENTIALLY': 1, 'BE ESSENTIALLY AND': 1, 'ESSENTIALLY AND RADICALLY': 1, 'AND RADICALLY CHANGED': 1, 'THIS STATE OF': 1, 'OF THINGS HAS': 1, 'THINGS HAS BEEN': 1, 'BEEN IN PART': 1, 'IN PART EFFECTED': 1, 'PART EFFECTED BY': 1, 'EFFECTED BY CAUSES': 1, 'BY CAUSES INHERENT': 1, 'CAUSES INHERENT IN': 1, 'INHERENT IN THE': 1, 'CONSTITUTION AND IN': 1, 'AND IN PART': 1, 'IN PART BY': 1, 'PART BY THE': 1, 'BY THE NEVER-FAILING': 1, 'THE NEVER-FAILING TENDENCY': 1, 'NEVER-FAILING TENDENCY OF': 1, 'TENDENCY OF POLITICAL': 1, 'OF POLITICAL POWER': 1, 'POLITICAL POWER TO': 1, 'BY MAKING THE': 1, 'MAKING THE PRESIDENT': 1, 'THE PRESIDENT THE': 1, 'PRESIDENT THE SOLE': 1, 'THE SOLE DISTRIBUTER': 1, 'SOLE DISTRIBUTER OF': 1, 'DISTRIBUTER OF ALL': 1, 'ALL THE PATRONAGE': 1, 'THE PATRONAGE OF': 1, 'PATRONAGE OF THE': 1, 'GOVERNMENT THE FRAMERS': 1, 'THE CONSTITUTION DO': 1, 'CONSTITUTION DO NOT': 1, 'DO NOT APPEAR': 1, 'TO HAVE ANTICIPATED': 1, 'HAVE ANTICIPATED AT': 1, 'ANTICIPATED AT HOW': 1, 'AT HOW SHORT': 1, 'HOW SHORT A': 1, 'SHORT A PERIOD': 1, 'A PERIOD IT': 1, 'PERIOD IT WOULD': 1, 'IT WOULD BECOME': 1, 'WOULD BECOME A': 1, 'BECOME A FORMIDABLE': 1, 'A FORMIDABLE INSTRUMENT': 1, 'FORMIDABLE INSTRUMENT TO': 1, 'INSTRUMENT TO CONTROL': 1, 'CONTROL THE FREE': 1, 'THE FREE OPERATIONS': 1, 'FREE OPERATIONS OF': 1, 'OPERATIONS OF THE': 1, 'OF TRIFLING IMPORTANCE': 1, 'TRIFLING IMPORTANCE AT': 1, 'IMPORTANCE AT FIRST': 1, 'AT FIRST IT': 1, 'FIRST IT HAD': 1, 'IT HAD EARLY': 1, 'HAD EARLY IN': 1, 'EARLY IN MR': 1, \"JEFFERSON'S ADMINISTRATION BECOME\": 1, 'ADMINISTRATION BECOME SO': 1, 'BECOME SO POWERFUL': 1, 'SO POWERFUL AS': 1, 'POWERFUL AS TO': 1, 'AS TO CREATE': 1, 'TO CREATE GREAT': 1, 'CREATE GREAT ALARM': 1, 'GREAT ALARM IN': 1, 'ALARM IN THE': 1, 'IN THE MIND': 1, 'THE MIND OF': 1, 'MIND OF THAT': 1, 'OF THAT PATRIOT': 1, 'THAT PATRIOT FROM': 1, 'PATRIOT FROM THE': 1, 'FROM THE POTENT': 1, 'THE POTENT INFLUENCE': 1, 'POTENT INFLUENCE IT': 1, 'INFLUENCE IT MIGHT': 1, 'IT MIGHT EXERT': 1, 'MIGHT EXERT IN': 1, 'EXERT IN CONTROLLING': 1, 'IF SUCH COULD': 1, 'SUCH COULD HAVE': 1, 'COULD HAVE THEN': 1, 'HAVE THEN BEEN': 1, 'THEN BEEN THE': 1, 'BEEN THE EFFECTS': 1, 'EFFECTS OF ITS': 1, 'OF ITS INFLUENCE': 1, 'ITS INFLUENCE HOW': 1, 'INFLUENCE HOW MUCH': 1, 'HOW MUCH GREATER': 1, 'MUCH GREATER MUST': 1, 'GREATER MUST BE': 1, 'MUST BE THE': 1, 'BE THE DANGER': 1, 'THE DANGER AT': 1, 'DANGER AT THIS': 1, 'THIS TIME QUADRUPLED': 1, 'TIME QUADRUPLED IN': 1, 'QUADRUPLED IN AMOUNT': 1, 'IN AMOUNT AS': 1, 'AMOUNT AS IT': 1, 'AS IT CERTAINLY': 1, 'IT CERTAINLY IS': 1, 'CERTAINLY IS AND': 1, 'IS AND MORE': 1, 'AND MORE COMPLETELY': 1, 'MORE COMPLETELY UNDER': 1, 'COMPLETELY UNDER THE': 1, 'UNDER THE CONTROL': 1, 'THE EXECUTIVE WILL': 1, 'EXECUTIVE WILL THAN': 1, 'WILL THAN THEIR': 1, 'THAN THEIR CONSTRUCTION': 1, 'THEIR CONSTRUCTION OF': 1, 'CONSTRUCTION OF THEIR': 1, 'OF THEIR POWERS': 1, 'THEIR POWERS ALLOWED': 1, 'POWERS ALLOWED OR': 1, 'ALLOWED OR THE': 1, 'OR THE FORBEARING': 1, 'THE FORBEARING CHARACTERS': 1, 'FORBEARING CHARACTERS OF': 1, 'CHARACTERS OF ALL': 1, 'ALL THE EARLY': 1, 'THE EARLY PRESIDENTS': 1, 'EARLY PRESIDENTS PERMITTED': 1, 'PRESIDENTS PERMITTED THEM': 1, 'PERMITTED THEM TO': 1, 'THEM TO MAKE': 1, 'BUT IT IS': 1, 'IS NOT BY': 1, 'NOT BY THE': 1, 'BY THE EXTENT': 1, 'EXTENT OF ITS': 1, 'OF ITS PATRONAGE': 1, 'ITS PATRONAGE ALONE': 1, 'PATRONAGE ALONE THAT': 1, 'ALONE THAT THE': 1, 'THAT THE EXECUTIVE': 1, 'EXECUTIVE DEPARTMENT HAS': 1, 'DEPARTMENT HAS BECOME': 1, 'HAS BECOME DANGEROUS': 1, 'BECOME DANGEROUS BUT': 1, 'DANGEROUS BUT BY': 1, 'BY THE USE': 1, 'THE USE WHICH': 1, 'USE WHICH IT': 1, 'WHICH IT APPEARS': 1, 'IT APPEARS MAY': 1, 'APPEARS MAY BE': 1, 'MAY BE MADE': 1, 'BE MADE OF': 1, 'OF THE APPOINTING': 1, 'THE APPOINTING POWER': 1, 'APPOINTING POWER TO': 1, 'POWER TO BRING': 1, 'TO BRING UNDER': 1, 'BRING UNDER ITS': 1, 'UNDER ITS CONTROL': 1, 'ITS CONTROL THE': 1, 'CONTROL THE WHOLE': 1, 'THE WHOLE REVENUES': 1, 'WHOLE REVENUES OF': 1, 'REVENUES OF THE': 1, 'CONSTITUTION HAS DECLARED': 1, 'HAS DECLARED IT': 1, 'DECLARED IT TO': 1, 'IT TO BE': 1, 'BE THE DUTY': 1, 'PRESIDENT TO SEE': 1, 'TO SEE THAT': 1, 'SEE THAT THE': 1, 'THAT THE LAWS': 1, 'THE LAWS ARE': 1, 'LAWS ARE EXECUTED': 1, 'ARE EXECUTED AND': 1, 'EXECUTED AND IT': 1, 'AND IT MAKES': 1, 'IT MAKES HIM': 1, 'MAKES HIM THE': 1, 'HIM THE COMMANDER': 1, 'THE COMMANDER IN': 1, 'COMMANDER IN CHIEF': 1, 'IN CHIEF OF': 1, 'CHIEF OF THE': 1, 'OF THE ARMIES': 1, 'THE ARMIES AND': 1, 'ARMIES AND NAVY': 1, 'AND NAVY OF': 1, 'NAVY OF THE': 1, 'IF THE OPINION': 1, 'THE MOST APPROVED': 1, 'MOST APPROVED WRITERS': 1, 'APPROVED WRITERS UPON': 1, 'WRITERS UPON THAT': 1, 'UPON THAT SPECIES': 1, 'THAT SPECIES OF': 1, 'SPECIES OF MIXED': 1, 'OF MIXED GOVERNMENT': 1, 'MIXED GOVERNMENT WHICH': 1, 'GOVERNMENT WHICH IN': 1, 'WHICH IN MODERN': 1, 'IN MODERN EUROPE': 1, 'MODERN EUROPE IS': 1, 'EUROPE IS TERMED': 1, 'IS TERMED MONARCHY': 1, 'TERMED MONARCHY IN': 1, 'MONARCHY IN CONTRADISTINCTION': 1, 'IN CONTRADISTINCTION TO': 1, 'CONTRADISTINCTION TO DESPOTISM': 1, 'TO DESPOTISM IS': 1, 'DESPOTISM IS CORRECT': 1, 'IS CORRECT THERE': 1, 'CORRECT THERE WAS': 1, 'THERE WAS WANTING': 1, 'WAS WANTING NO': 1, 'WANTING NO OTHER': 1, 'NO OTHER ADDITION': 1, 'OTHER ADDITION TO': 1, 'ADDITION TO THE': 1, 'TO THE POWERS': 1, 'THE POWERS OF': 1, 'POWERS OF OUR': 1, 'OF OUR CHIEF': 1, 'OUR CHIEF MAGISTRATE': 1, 'CHIEF MAGISTRATE TO': 1, 'MAGISTRATE TO STAMP': 1, 'TO STAMP A': 1, 'STAMP A MONARCHICAL': 1, 'A MONARCHICAL CHARACTER': 1, 'MONARCHICAL CHARACTER ON': 1, 'CHARACTER ON OUR': 1, 'ON OUR GOVERNMENT': 1, 'OUR GOVERNMENT BUT': 1, 'BUT THE CONTROL': 1, 'THE PUBLIC FINANCES': 1, 'PUBLIC FINANCES AND': 1, 'FINANCES AND TO': 1, 'AND TO ME': 1, 'IT APPEARS STRANGE': 1, 'APPEARS STRANGE INDEED': 1, 'INDEED THAT ANYONE': 1, 'THAT ANYONE SHOULD': 1, 'ANYONE SHOULD DOUBT': 1, 'SHOULD DOUBT THAT': 1, 'DOUBT THAT THE': 1, 'THAT THE ENTIRE': 1, 'THE ENTIRE CONTROL': 1, 'ENTIRE CONTROL WHICH': 1, 'CONTROL WHICH THE': 1, 'THE PRESIDENT POSSESSES': 1, 'PRESIDENT POSSESSES OVER': 1, 'POSSESSES OVER THE': 1, 'OVER THE OFFICERS': 1, 'THE OFFICERS WHO': 1, 'OFFICERS WHO HAVE': 1, 'WHO HAVE THE': 1, 'HAVE THE CUSTODY': 1, 'THE CUSTODY OF': 1, 'CUSTODY OF THE': 1, 'PUBLIC MONEY BY': 1, 'MONEY BY THE': 1, 'POWER OF REMOVAL': 1, 'OF REMOVAL WITH': 1, 'REMOVAL WITH OR': 1, 'OR WITHOUT CAUSE': 1, 'WITHOUT CAUSE DOES': 1, 'CAUSE DOES FOR': 1, 'DOES FOR ALL': 1, 'FOR ALL MISCHIEVOUS': 1, 'ALL MISCHIEVOUS PURPOSES': 1, 'MISCHIEVOUS PURPOSES AT': 1, 'PURPOSES AT LEAST': 1, 'AT LEAST VIRTUALLY': 1, 'LEAST VIRTUALLY SUBJECT': 1, 'VIRTUALLY SUBJECT THE': 1, 'SUBJECT THE TREASURE': 1, 'THE TREASURE ALSO': 1, 'TREASURE ALSO TO': 1, 'ALSO TO HIS': 1, 'TO HIS DISPOSAL': 1, 'THE FIRST ROMAN': 1, 'FIRST ROMAN EMPEROR': 1, 'ROMAN EMPEROR IN': 1, 'EMPEROR IN HIS': 1, 'IN HIS ATTEMPT': 1, 'HIS ATTEMPT TO': 1, 'ATTEMPT TO SEIZE': 1, 'TO SEIZE THE': 1, 'SEIZE THE SACRED': 1, 'THE SACRED TREASURE': 1, 'SACRED TREASURE SILENCED': 1, 'TREASURE SILENCED THE': 1, 'SILENCED THE OPPOSITION': 1, 'THE OPPOSITION OF': 1, 'OPPOSITION OF THE': 1, 'OF THE OFFICER': 1, 'THE OFFICER TO': 1, 'OFFICER TO WHOSE': 1, 'TO WHOSE CHARGE': 1, 'WHOSE CHARGE IT': 1, 'CHARGE IT HAD': 1, 'IT HAD BEEN': 1, 'BEEN COMMITTED BY': 1, 'COMMITTED BY A': 1, 'BY A SIGNIFICANT': 1, 'A SIGNIFICANT ALLUSION': 1, 'SIGNIFICANT ALLUSION TO': 1, 'ALLUSION TO HIS': 1, 'TO HIS SWORD': 1, 'BY A SELECTION': 1, 'A SELECTION OF': 1, 'SELECTION OF POLITICAL': 1, 'OF POLITICAL INSTRUMENTS': 1, 'POLITICAL INSTRUMENTS FOR': 1, 'INSTRUMENTS FOR THE': 1, 'FOR THE CARE': 1, 'THE CARE OF': 1, 'CARE OF THE': 1, 'PUBLIC MONEY A': 1, 'MONEY A REFERENCE': 1, 'A REFERENCE TO': 1, 'REFERENCE TO THEIR': 1, 'TO THEIR COMMISSIONS': 1, 'THEIR COMMISSIONS BY': 1, 'COMMISSIONS BY A': 1, 'BY A PRESIDENT': 1, 'A PRESIDENT WOULD': 1, 'PRESIDENT WOULD BE': 1, 'WOULD BE QUITE': 1, 'BE QUITE AS': 1, 'QUITE AS EFFECTUAL': 1, 'AS EFFECTUAL AN': 1, 'EFFECTUAL AN ARGUMENT': 1, 'AN ARGUMENT AS': 1, 'ARGUMENT AS THAT': 1, 'AS THAT OF': 1, 'THAT OF CAESAR': 1, 'OF CAESAR TO': 1, 'CAESAR TO THE': 1, 'TO THE ROMAN': 1, 'THE ROMAN KNIGHT': 1, 'I AM NOT': 1, 'AM NOT INSENSIBLE': 1, 'NOT INSENSIBLE OF': 1, 'INSENSIBLE OF THE': 1, 'THE GREAT DIFFICULTY': 1, 'GREAT DIFFICULTY THAT': 1, 'DIFFICULTY THAT EXISTS': 1, 'THAT EXISTS IN': 1, 'EXISTS IN DRAWING': 1, 'IN DRAWING A': 1, 'DRAWING A PROPER': 1, 'A PROPER PLAN': 1, 'PROPER PLAN FOR': 1, 'PLAN FOR THE': 1, 'FOR THE SAFE-KEEPING': 1, 'THE SAFE-KEEPING AND': 1, 'SAFE-KEEPING AND DISBURSEMENT': 1, 'AND DISBURSEMENT OF': 1, 'DISBURSEMENT OF THE': 1, 'THE PUBLIC REVENUES': 1, 'PUBLIC REVENUES AND': 1, 'REVENUES AND I': 1, 'AND I KNOW': 1, 'I KNOW THE': 1, 'KNOW THE IMPORTANCE': 1, 'THE IMPORTANCE WHICH': 1, 'IMPORTANCE WHICH HAS': 1, 'HAS BEEN ATTACHED': 1, 'BEEN ATTACHED BY': 1, 'ATTACHED BY MEN': 1, 'BY MEN OF': 1, 'MEN OF GREAT': 1, 'OF GREAT ABILITIES': 1, 'GREAT ABILITIES AND': 1, 'ABILITIES AND PATRIOTISM': 1, 'AND PATRIOTISM TO': 1, 'PATRIOTISM TO THE': 1, 'TO THE DIVORCE': 1, 'THE DIVORCE AS': 1, 'DIVORCE AS IT': 1, 'AS IT IS': 1, 'IT IS CALLED': 1, 'IS CALLED OF': 1, 'CALLED OF THE': 1, 'THE TREASURY FROM': 1, 'TREASURY FROM THE': 1, 'FROM THE BANKING': 1, 'THE BANKING INSTITUTIONS': 1, 'IS NOT THE': 1, 'NOT THE DIVORCE': 1, 'THE DIVORCE WHICH': 1, 'DIVORCE WHICH IS': 1, 'WHICH IS COMPLAINED': 1, 'IS COMPLAINED OF': 1, 'COMPLAINED OF BUT': 1, 'OF BUT THE': 1, 'BUT THE UNHALLOWED': 1, 'THE UNHALLOWED UNION': 1, 'UNHALLOWED UNION OF': 1, 'THE TREASURY WITH': 1, 'TREASURY WITH THE': 1, 'WITH THE EXECUTIVE': 1, 'EXECUTIVE DEPARTMENT WHICH': 1, 'DEPARTMENT WHICH HAS': 1, 'WHICH HAS CREATED': 1, 'HAS CREATED SUCH': 1, 'CREATED SUCH EXTENSIVE': 1, 'SUCH EXTENSIVE ALARM': 1, 'TO THIS DANGER': 1, 'THIS DANGER TO': 1, 'TO OUR REPUBLICAN': 1, 'OUR REPUBLICAN INSTITUTIONS': 1, 'REPUBLICAN INSTITUTIONS AND': 1, 'INSTITUTIONS AND THAT': 1, 'AND THAT CREATED': 1, 'THAT CREATED BY': 1, 'CREATED BY THE': 1, 'BY THE INFLUENCE': 1, 'THE INFLUENCE GIVEN': 1, 'INFLUENCE GIVEN TO': 1, 'THE EXECUTIVE THROUGH': 1, 'EXECUTIVE THROUGH THE': 1, 'THROUGH THE INSTRUMENTALITY': 1, 'THE INSTRUMENTALITY OF': 1, 'INSTRUMENTALITY OF THE': 1, 'THE FEDERAL OFFICERS': 1, 'FEDERAL OFFICERS I': 1, 'OFFICERS I PROPOSE': 1, 'I PROPOSE TO': 1, 'PROPOSE TO APPLY': 1, 'TO APPLY ALL': 1, 'APPLY ALL THE': 1, 'ALL THE REMEDIES': 1, 'THE REMEDIES WHICH': 1, 'REMEDIES WHICH MAY': 1, 'MAY BE AT': 1, 'BE AT MY': 1, 'AT MY COMMAND': 1, 'IT WAS CERTAINLY': 1, 'WAS CERTAINLY A': 1, 'CERTAINLY A GREAT': 1, 'A GREAT ERROR': 1, 'GREAT ERROR IN': 1, 'ERROR IN THE': 1, 'IN THE FRAMERS': 1, 'THE CONSTITUTION NOT': 1, 'CONSTITUTION NOT TO': 1, 'TO HAVE MADE': 1, 'HAVE MADE THE': 1, 'MADE THE OFFICER': 1, 'THE OFFICER AT': 1, 'OFFICER AT THE': 1, 'AT THE HEAD': 1, 'THE HEAD OF': 1, 'HEAD OF THE': 1, 'THE TREASURY DEPARTMENT': 1, 'TREASURY DEPARTMENT ENTIRELY': 1, 'DEPARTMENT ENTIRELY INDEPENDENT': 1, 'ENTIRELY INDEPENDENT OF': 1, 'INDEPENDENT OF THE': 1, 'HE SHOULD AT': 1, 'SHOULD AT LEAST': 1, 'AT LEAST HAVE': 1, 'LEAST HAVE BEEN': 1, 'HAVE BEEN REMOVABLE': 1, 'BEEN REMOVABLE ONLY': 1, 'REMOVABLE ONLY UPON': 1, 'ONLY UPON THE': 1, 'UPON THE DEMAND': 1, 'THE DEMAND OF': 1, 'DEMAND OF THE': 1, 'OF THE POPULAR': 1, 'THE POPULAR BRANCH': 1, 'POPULAR BRANCH OF': 1, 'I HAVE DETERMINED': 1, 'HAVE DETERMINED NEVER': 1, 'DETERMINED NEVER TO': 1, 'NEVER TO REMOVE': 1, 'TO REMOVE A': 1, 'REMOVE A SECRETARY': 1, 'A SECRETARY OF': 1, 'SECRETARY OF THE': 1, 'THE TREASURY WITHOUT': 1, 'TREASURY WITHOUT COMMUNICATING': 1, 'WITHOUT COMMUNICATING ALL': 1, 'COMMUNICATING ALL THE': 1, 'ALL THE CIRCUMSTANCES': 1, 'THE CIRCUMSTANCES ATTENDING': 1, 'CIRCUMSTANCES ATTENDING SUCH': 1, 'ATTENDING SUCH REMOVAL': 1, 'SUCH REMOVAL TO': 1, 'REMOVAL TO BOTH': 1, 'TO BOTH HOUSES': 1, 'INFLUENCE OF THE': 1, 'THE EXECUTIVE IN': 1, 'EXECUTIVE IN CONTROLLING': 1, 'ELECTIVE FRANCHISE THROUGH': 1, 'FRANCHISE THROUGH THE': 1, 'THROUGH THE MEDIUM': 1, 'THE MEDIUM OF': 1, 'MEDIUM OF THE': 1, 'THE PUBLIC OFFICERS': 1, 'PUBLIC OFFICERS CAN': 1, 'OFFICERS CAN BE': 1, 'CAN BE EFFECTUALLY': 1, 'BE EFFECTUALLY CHECKED': 1, 'EFFECTUALLY CHECKED BY': 1, 'CHECKED BY RENEWING': 1, 'RENEWING THE PROHIBITION': 1, 'THE PROHIBITION PUBLISHED': 1, 'PROHIBITION PUBLISHED BY': 1, 'PUBLISHED BY MR': 1, 'JEFFERSON FORBIDDING THEIR': 1, 'FORBIDDING THEIR INTERFERENCE': 1, 'THEIR INTERFERENCE IN': 1, 'INTERFERENCE IN ELECTIONS': 1, 'IN ELECTIONS FURTHER': 1, 'ELECTIONS FURTHER THAN': 1, 'FURTHER THAN GIVING': 1, 'THAN GIVING THEIR': 1, 'GIVING THEIR OWN': 1, 'THEIR OWN VOTES': 1, 'OWN VOTES AND': 1, 'VOTES AND THEIR': 1, 'AND THEIR OWN': 1, 'THEIR OWN INDEPENDENCE': 1, 'OWN INDEPENDENCE SECURED': 1, 'INDEPENDENCE SECURED BY': 1, 'SECURED BY AN': 1, 'BY AN ASSURANCE': 1, 'AN ASSURANCE OF': 1, 'ASSURANCE OF PERFECT': 1, 'OF PERFECT IMMUNITY': 1, 'PERFECT IMMUNITY IN': 1, 'IMMUNITY IN EXERCISING': 1, 'IN EXERCISING THIS': 1, 'EXERCISING THIS SACRED': 1, 'THIS SACRED PRIVILEGE': 1, 'SACRED PRIVILEGE OF': 1, 'PRIVILEGE OF FREEMEN': 1, 'OF FREEMEN UNDER': 1, 'FREEMEN UNDER THE': 1, 'UNDER THE DICTATES': 1, 'THE DICTATES OF': 1, 'DICTATES OF THEIR': 1, 'THEIR OWN UNBIASED': 1, 'OWN UNBIASED JUDGMENTS': 1, 'NEVER WITH MY': 1, 'WITH MY CONSENT': 1, 'MY CONSENT SHALL': 1, 'CONSENT SHALL AN': 1, 'SHALL AN OFFICER': 1, 'AN OFFICER OF': 1, 'OFFICER OF THE': 1, 'THE PEOPLE COMPENSATED': 1, 'PEOPLE COMPENSATED FOR': 1, 'COMPENSATED FOR HIS': 1, 'FOR HIS SERVICES': 1, 'HIS SERVICES OUT': 1, 'SERVICES OUT OF': 1, 'OUT OF THEIR': 1, 'OF THEIR POCKETS': 1, 'THEIR POCKETS BECOME': 1, 'POCKETS BECOME THE': 1, 'BECOME THE PLIANT': 1, 'THE PLIANT INSTRUMENT': 1, 'PLIANT INSTRUMENT OF': 1, 'INSTRUMENT OF EXECUTIVE': 1, 'OF EXECUTIVE WILL': 1, 'THERE IS NO': 1, 'IS NO PART': 1, 'OF THE MEANS': 1, 'THE MEANS PLACED': 1, 'MEANS PLACED IN': 1, 'PLACED IN THE': 1, 'THE EXECUTIVE WHICH': 1, 'EXECUTIVE WHICH MIGHT': 1, 'WHICH MIGHT BE': 1, 'MIGHT BE USED': 1, 'BE USED WITH': 1, 'USED WITH GREATER': 1, 'WITH GREATER EFFECT': 1, 'GREATER EFFECT FOR': 1, 'EFFECT FOR UNHALLOWED': 1, 'FOR UNHALLOWED PURPOSES': 1, 'UNHALLOWED PURPOSES THAN': 1, 'PURPOSES THAN THE': 1, 'THAN THE CONTROL': 1, 'THE PUBLIC PRESS': 1, 'THE MAXIM WHICH': 1, 'MAXIM WHICH OUR': 1, 'OUR ANCESTORS DERIVED': 1, 'ANCESTORS DERIVED FROM': 1, 'DERIVED FROM THE': 1, 'FROM THE MOTHER': 1, 'THE MOTHER COUNTRY': 1, 'MOTHER COUNTRY THAT': 1, 'COUNTRY THAT THE': 1, 'THAT THE FREEDOM': 1, 'OF THE PRESS': 1, 'THE PRESS IS': 1, 'PRESS IS THE': 1, 'IS THE GREAT': 1, 'THE GREAT BULWARK': 1, 'GREAT BULWARK OF': 1, 'BULWARK OF CIVIL': 1, 'AND RELIGIOUS LIBERTY': 1, 'RELIGIOUS LIBERTY IS': 1, 'LIBERTY IS ONE': 1, 'IS ONE OF': 1, 'THE MOST PRECIOUS': 1, 'MOST PRECIOUS LEGACIES': 1, 'PRECIOUS LEGACIES WHICH': 1, 'LEGACIES WHICH THEY': 1, 'THEY HAVE LEFT': 1, 'HAVE LEFT US': 1, 'WE HAVE LEARNED': 1, 'HAVE LEARNED TOO': 1, 'LEARNED TOO FROM': 1, 'TOO FROM OUR': 1, 'FROM OUR OWN': 1, 'OUR OWN AS': 1, 'OWN AS WELL': 1, 'WELL AS THE': 1, 'AS THE EXPERIENCE': 1, 'THE EXPERIENCE OF': 1, 'EXPERIENCE OF OTHER': 1, 'OF OTHER COUNTRIES': 1, 'OTHER COUNTRIES THAT': 1, 'COUNTRIES THAT GOLDEN': 1, 'THAT GOLDEN SHACKLES': 1, 'GOLDEN SHACKLES BY': 1, 'SHACKLES BY WHOMSOEVER': 1, 'BY WHOMSOEVER OR': 1, 'WHOMSOEVER OR BY': 1, 'OR BY WHATEVER': 1, 'BY WHATEVER PRETENSE': 1, 'WHATEVER PRETENSE IMPOSED': 1, 'PRETENSE IMPOSED ARE': 1, 'IMPOSED ARE AS': 1, 'ARE AS FATAL': 1, 'AS FATAL TO': 1, 'FATAL TO IT': 1, 'TO IT AS': 1, 'IT AS THE': 1, 'AS THE IRON': 1, 'THE IRON BONDS': 1, 'IRON BONDS OF': 1, 'BONDS OF DESPOTISM': 1, 'THE PRESSES IN': 1, 'PRESSES IN THE': 1, 'IN THE NECESSARY': 1, 'THE NECESSARY EMPLOYMENT': 1, 'NECESSARY EMPLOYMENT OF': 1, 'EMPLOYMENT OF THE': 1, 'GOVERNMENT SHOULD NEVER': 1, 'NEVER BE USED': 1, 'BE USED TO': 1, 'USED TO CLEAR': 1, 'TO CLEAR THE': 1, 'CLEAR THE GUILTY': 1, 'THE GUILTY OR': 1, 'GUILTY OR TO': 1, 'OR TO VARNISH': 1, 'TO VARNISH CRIME': 1, 'VARNISH CRIME A': 1, 'CRIME A DECENT': 1, 'A DECENT AND': 1, 'DECENT AND MANLY': 1, 'AND MANLY EXAMINATION': 1, 'MANLY EXAMINATION OF': 1, 'OF THE ACTS': 1, 'SHOULD BE NOT': 1, 'BE NOT ONLY': 1, 'NOT ONLY TOLERATED': 1, 'ONLY TOLERATED BUT': 1, 'TOLERATED BUT ENCOURAGED': 1, 'UPON ANOTHER OCCASION': 1, 'ANOTHER OCCASION I': 1, 'OCCASION I HAVE': 1, 'I HAVE GIVEN': 1, 'HAVE GIVEN MY': 1, 'GIVEN MY OPINION': 1, 'MY OPINION AT': 1, 'OPINION AT SOME': 1, 'AT SOME LENGTH': 1, 'SOME LENGTH UPON': 1, 'LENGTH UPON THE': 1, 'UPON THE IMPROPRIETY': 1, 'THE IMPROPRIETY OF': 1, 'IMPROPRIETY OF EXECUTIVE': 1, 'OF EXECUTIVE INTERFERENCE': 1, 'EXECUTIVE INTERFERENCE IN': 1, 'INTERFERENCE IN THE': 1, 'IN THE LEGISLATION': 1, 'LEGISLATION OF CONGRESS--THAT': 1, 'OF CONGRESS--THAT THE': 1, 'CONGRESS--THAT THE ARTICLE': 1, 'THE ARTICLE IN': 1, 'ARTICLE IN THE': 1, 'THE CONSTITUTION MAKING': 1, 'CONSTITUTION MAKING IT': 1, 'MAKING IT THE': 1, 'IT THE DUTY': 1, 'PRESIDENT TO COMMUNICATE': 1, 'TO COMMUNICATE INFORMATION': 1, 'COMMUNICATE INFORMATION AND': 1, 'INFORMATION AND AUTHORIZING': 1, 'AND AUTHORIZING HIM': 1, 'AUTHORIZING HIM TO': 1, 'HIM TO RECOMMEND': 1, 'TO RECOMMEND MEASURES': 1, 'RECOMMEND MEASURES WAS': 1, 'MEASURES WAS NOT': 1, 'WAS NOT INTENDED': 1, 'NOT INTENDED TO': 1, 'INTENDED TO MAKE': 1, 'TO MAKE HIM': 1, 'MAKE HIM THE': 1, 'HIM THE SOURCE': 1, 'THE SOURCE IN': 1, 'SOURCE IN LEGISLATION': 1, 'IN LEGISLATION AND': 1, 'LEGISLATION AND IN': 1, 'AND IN PARTICULAR': 1, 'IN PARTICULAR THAT': 1, 'PARTICULAR THAT HE': 1, 'THAT HE SHOULD': 1, 'HE SHOULD NEVER': 1, 'NEVER BE LOOKED': 1, 'BE LOOKED TO': 1, 'LOOKED TO FOR': 1, 'TO FOR SCHEMES': 1, 'FOR SCHEMES OF': 1, 'SCHEMES OF FINANCE': 1, 'WOULD BE VERY': 1, 'BE VERY STRANGE': 1, 'VERY STRANGE INDEED': 1, 'THE CONSTITUTION SHOULD': 1, 'CONSTITUTION SHOULD HAVE': 1, 'SHOULD HAVE STRICTLY': 1, 'HAVE STRICTLY FORBIDDEN': 1, 'STRICTLY FORBIDDEN ONE': 1, 'FORBIDDEN ONE BRANCH': 1, 'ONE BRANCH OF': 1, 'THE LEGISLATURE FROM': 1, 'LEGISLATURE FROM INTERFERING': 1, 'FROM INTERFERING IN': 1, 'INTERFERING IN THE': 1, 'IN THE ORIGINATION': 1, 'THE ORIGINATION OF': 1, 'ORIGINATION OF SUCH': 1, 'OF SUCH BILLS': 1, 'SUCH BILLS AND': 1, 'BILLS AND THAT': 1, 'AND THAT IT': 1, 'THAT IT SHOULD': 1, 'SHOULD BE CONSIDERED': 1, 'BE CONSIDERED PROPER': 1, 'CONSIDERED PROPER THAT': 1, 'PROPER THAT AN': 1, 'THAT AN ALTOGETHER': 1, 'AN ALTOGETHER DIFFERENT': 1, 'ALTOGETHER DIFFERENT DEPARTMENT': 1, 'DIFFERENT DEPARTMENT OF': 1, 'SHOULD BE PERMITTED': 1, 'BE PERMITTED TO': 1, 'PERMITTED TO DO': 1, 'TO DO SO': 1, 'SOME OF OUR': 1, 'OF OUR BEST': 1, 'OUR BEST POLITICAL': 1, 'BEST POLITICAL MAXIMS': 1, 'POLITICAL MAXIMS AND': 1, 'MAXIMS AND OPINIONS': 1, 'AND OPINIONS HAVE': 1, 'OPINIONS HAVE BEEN': 1, 'HAVE BEEN DRAWN': 1, 'BEEN DRAWN FROM': 1, 'DRAWN FROM OUR': 1, 'FROM OUR PARENT': 1, 'OUR PARENT ISLE': 1, 'THERE ARE OTHERS': 1, 'ARE OTHERS HOWEVER': 1, 'OTHERS HOWEVER WHICH': 1, 'HOWEVER WHICH CAN': 1, 'WHICH CAN NOT': 1, 'NOT BE INTRODUCED': 1, 'BE INTRODUCED IN': 1, 'INTRODUCED IN OUR': 1, 'OUR SYSTEM WITHOUT': 1, 'SYSTEM WITHOUT SINGULAR': 1, 'WITHOUT SINGULAR INCONGRUITY': 1, 'SINGULAR INCONGRUITY AND': 1, 'INCONGRUITY AND THE': 1, 'AND THE PRODUCTION': 1, 'THE PRODUCTION OF': 1, 'PRODUCTION OF MUCH': 1, 'OF MUCH MISCHIEF': 1, 'MUCH MISCHIEF AND': 1, 'MISCHIEF AND THIS': 1, 'AND THIS I': 1, 'THIS I CONCEIVE': 1, 'I CONCEIVE TO': 1, 'CONCEIVE TO BE': 1, 'TO BE ONE': 1, 'NO MATTER IN': 1, 'MATTER IN WHICH': 1, 'IN WHICH OF': 1, 'WHICH OF THE': 1, 'OF THE HOUSES': 1, 'THE HOUSES OF': 1, 'HOUSES OF PARLIAMENT': 1, 'OF PARLIAMENT A': 1, 'PARLIAMENT A BILL': 1, 'A BILL MAY': 1, 'BILL MAY ORIGINATE': 1, 'MAY ORIGINATE NOR': 1, 'ORIGINATE NOR BY': 1, 'NOR BY WHOM': 1, 'BY WHOM INTRODUCED--A': 1, 'WHOM INTRODUCED--A MINISTER': 1, 'INTRODUCED--A MINISTER OR': 1, 'MINISTER OR A': 1, 'OR A MEMBER': 1, 'A MEMBER OF': 1, 'MEMBER OF THE': 1, 'OF THE OPPOSITION--BY': 1, 'THE OPPOSITION--BY THE': 1, 'OPPOSITION--BY THE FICTION': 1, 'THE FICTION OF': 1, 'FICTION OF LAW': 1, 'OF LAW OR': 1, 'LAW OR RATHER': 1, 'OR RATHER OF': 1, 'RATHER OF CONSTITUTIONAL': 1, 'OF CONSTITUTIONAL PRINCIPLE': 1, 'CONSTITUTIONAL PRINCIPLE THE': 1, 'PRINCIPLE THE SOVEREIGN': 1, 'THE SOVEREIGN IS': 1, 'SOVEREIGN IS SUPPOSED': 1, 'IS SUPPOSED TO': 1, 'TO HAVE PREPARED': 1, 'HAVE PREPARED IT': 1, 'PREPARED IT AGREEABLY': 1, 'IT AGREEABLY TO': 1, 'AGREEABLY TO HIS': 1, 'TO HIS WILL': 1, 'HIS WILL AND': 1, 'WILL AND THEN': 1, 'AND THEN SUBMITTED': 1, 'THEN SUBMITTED IT': 1, 'SUBMITTED IT TO': 1, 'IT TO PARLIAMENT': 1, 'TO PARLIAMENT FOR': 1, 'PARLIAMENT FOR THEIR': 1, 'FOR THEIR ADVICE': 1, 'THEIR ADVICE AND': 1, 'ADVICE AND CONSENT': 1, 'NOW THE VERY': 1, 'THE VERY REVERSE': 1, 'VERY REVERSE IS': 1, 'REVERSE IS THE': 1, 'IS THE CASE': 1, 'THE CASE HERE': 1, 'CASE HERE NOT': 1, 'HERE NOT ONLY': 1, 'NOT ONLY WITH': 1, 'ONLY WITH REGARD': 1, 'WITH REGARD TO': 1, 'REGARD TO THE': 1, 'TO THE PRINCIPLE': 1, 'THE PRINCIPLE BUT': 1, 'PRINCIPLE BUT THE': 1, 'BUT THE FORMS': 1, 'THE FORMS PRESCRIBED': 1, 'FORMS PRESCRIBED BY': 1, 'THE PRINCIPLE CERTAINLY': 1, 'PRINCIPLE CERTAINLY ASSIGNS': 1, 'CERTAINLY ASSIGNS TO': 1, 'ASSIGNS TO THE': 1, 'TO THE ONLY': 1, 'THE ONLY BODY': 1, 'ONLY BODY CONSTITUTED': 1, 'BODY CONSTITUTED BY': 1, 'CONSTITUTION THE LEGISLATIVE': 1, 'LEGISLATIVE BODY THE': 1, 'BODY THE POWER': 1, 'POWER TO MAKE': 1, 'TO MAKE LAWS': 1, 'MAKE LAWS AND': 1, 'AND THE FORMS': 1, 'THE FORMS EVEN': 1, 'FORMS EVEN DIRECT': 1, 'EVEN DIRECT THAT': 1, 'DIRECT THAT THE': 1, 'THAT THE ENACTMENT': 1, 'THE ENACTMENT SHOULD': 1, 'ENACTMENT SHOULD BE': 1, 'SHOULD BE ASCRIBED': 1, 'BE ASCRIBED TO': 1, 'ASCRIBED TO THEM': 1, 'THE SENATE IN': 1, 'SENATE IN RELATION': 1, 'RELATION TO REVENUE': 1, 'TO REVENUE BILLS': 1, 'REVENUE BILLS HAVE': 1, 'BILLS HAVE THE': 1, 'HAVE THE RIGHT': 1, 'RIGHT TO PROPOSE': 1, 'PROPOSE AMENDMENTS AND': 1, 'AMENDMENTS AND SO': 1, 'AND SO HAS': 1, 'SO HAS THE': 1, 'HAS THE EXECUTIVE': 1, 'THE EXECUTIVE BY': 1, 'EXECUTIVE BY THE': 1, 'THE POWER GIVEN': 1, 'POWER GIVEN HIM': 1, 'GIVEN HIM TO': 1, 'HIM TO RETURN': 1, 'TO RETURN THEM': 1, 'RETURN THEM TO': 1, 'TO THE HOUSE': 1, 'THE HOUSE OF': 1, 'HOUSE OF REPRESENTATIVES': 1, 'OF REPRESENTATIVES WITH': 1, 'REPRESENTATIVES WITH HIS': 1, 'WITH HIS OBJECTIONS': 1, 'IS IN HIS': 1, 'IN HIS POWER': 1, 'HIS POWER ALSO': 1, 'POWER ALSO TO': 1, 'ALSO TO PROPOSE': 1, 'PROPOSE AMENDMENTS IN': 1, 'AMENDMENTS IN THE': 1, 'IN THE EXISTING': 1, 'THE EXISTING REVENUE': 1, 'EXISTING REVENUE LAWS': 1, 'REVENUE LAWS SUGGESTED': 1, 'LAWS SUGGESTED BY': 1, 'SUGGESTED BY HIS': 1, 'BY HIS OBSERVATIONS': 1, 'HIS OBSERVATIONS UPON': 1, 'OBSERVATIONS UPON THEIR': 1, 'UPON THEIR DEFECTIVE': 1, 'THEIR DEFECTIVE OR': 1, 'DEFECTIVE OR INJURIOUS': 1, 'OR INJURIOUS OPERATION': 1, 'BUT THE DELICATE': 1, 'THE DELICATE DUTY': 1, 'DELICATE DUTY OF': 1, 'DUTY OF DEVISING': 1, 'OF DEVISING SCHEMES': 1, 'DEVISING SCHEMES OF': 1, 'SCHEMES OF REVENUE': 1, 'OF REVENUE SHOULD': 1, 'REVENUE SHOULD BE': 1, 'SHOULD BE LEFT': 1, 'BE LEFT WHERE': 1, 'LEFT WHERE THE': 1, 'WHERE THE CONSTITUTION': 1, 'CONSTITUTION HAS PLACED': 1, 'HAS PLACED IT--WITH': 1, 'PLACED IT--WITH THE': 1, 'IT--WITH THE IMMEDIATE': 1, 'THE IMMEDIATE REPRESENTATIVES': 1, 'IMMEDIATE REPRESENTATIVES OF': 1, 'REPRESENTATIVES OF THE': 1, 'FOR SIMILAR REASONS': 1, 'SIMILAR REASONS THE': 1, 'REASONS THE MODE': 1, 'MODE OF KEEPING': 1, 'KEEPING THE PUBLIC': 1, 'THE PUBLIC TREASURE': 1, 'PUBLIC TREASURE SHOULD': 1, 'TREASURE SHOULD BE': 1, 'SHOULD BE PRESCRIBED': 1, 'BE PRESCRIBED BY': 1, 'PRESCRIBED BY THEM': 1, 'BY THEM AND': 1, 'THEM AND THE': 1, 'AND THE FURTHER': 1, 'THE FURTHER REMOVED': 1, 'FURTHER REMOVED IT': 1, 'REMOVED IT MAY': 1, 'MAY BE FROM': 1, 'BE FROM THE': 1, 'FROM THE CONTROL': 1, 'EXECUTIVE THE MORE': 1, 'THE MORE WHOLESOME': 1, 'MORE WHOLESOME THE': 1, 'WHOLESOME THE ARRANGEMENT': 1, 'THE ARRANGEMENT AND': 1, 'ARRANGEMENT AND THE': 1, 'AND THE MORE': 1, 'THE MORE IN': 1, 'MORE IN ACCORDANCE': 1, 'IN ACCORDANCE WITH': 1, 'ACCORDANCE WITH REPUBLICAN': 1, 'WITH REPUBLICAN PRINCIPLE': 1, 'CONNECTED WITH THIS': 1, 'WITH THIS SUBJECT': 1, 'THIS SUBJECT IS': 1, 'SUBJECT IS THE': 1, 'IS THE CHARACTER': 1, 'OF THE CURRENCY': 1, 'THE IDEA OF': 1, 'IDEA OF MAKING': 1, 'OF MAKING IT': 1, 'MAKING IT EXCLUSIVELY': 1, 'IT EXCLUSIVELY METALLIC': 1, 'EXCLUSIVELY METALLIC HOWEVER': 1, 'METALLIC HOWEVER WELL': 1, 'HOWEVER WELL INTENDED': 1, 'WELL INTENDED APPEARS': 1, 'INTENDED APPEARS TO': 1, 'APPEARS TO ME': 1, 'TO BE FRAUGHT': 1, 'BE FRAUGHT WITH': 1, 'FRAUGHT WITH MORE': 1, 'WITH MORE FATAL': 1, 'MORE FATAL CONSEQUENCES': 1, 'FATAL CONSEQUENCES THAN': 1, 'CONSEQUENCES THAN ANY': 1, 'ANY OTHER SCHEME': 1, 'OTHER SCHEME HAVING': 1, 'SCHEME HAVING NO': 1, 'HAVING NO RELATION': 1, 'NO RELATION TO': 1, 'TO THE PERSONAL': 1, 'THE PERSONAL RIGHTS': 1, 'PERSONAL RIGHTS OF': 1, 'THE CITIZENS THAT': 1, 'CITIZENS THAT HAS': 1, 'THAT HAS EVER': 1, 'HAS EVER BEEN': 1, 'EVER BEEN DEVISED': 1, 'IF ANY SINGLE': 1, 'ANY SINGLE SCHEME': 1, 'SINGLE SCHEME COULD': 1, 'SCHEME COULD PRODUCE': 1, 'COULD PRODUCE THE': 1, 'PRODUCE THE EFFECT': 1, 'THE EFFECT OF': 1, 'EFFECT OF ARRESTING': 1, 'OF ARRESTING AT': 1, 'ARRESTING AT ONCE': 1, 'AT ONCE THAT': 1, 'ONCE THAT MUTATION': 1, 'THAT MUTATION OF': 1, 'MUTATION OF CONDITION': 1, 'OF CONDITION BY': 1, 'CONDITION BY WHICH': 1, 'BY WHICH THOUSANDS': 1, 'WHICH THOUSANDS OF': 1, 'THOUSANDS OF OUR': 1, 'OF OUR MOST': 1, 'OUR MOST INDIGENT': 1, 'MOST INDIGENT FELLOW-CITIZENS': 1, 'INDIGENT FELLOW-CITIZENS BY': 1, 'FELLOW-CITIZENS BY THEIR': 1, 'BY THEIR INDUSTRY': 1, 'THEIR INDUSTRY AND': 1, 'INDUSTRY AND ENTERPRISE': 1, 'AND ENTERPRISE ARE': 1, 'ENTERPRISE ARE RAISED': 1, 'ARE RAISED TO': 1, 'RAISED TO THE': 1, 'TO THE POSSESSION': 1, 'THE POSSESSION OF': 1, 'POSSESSION OF WEALTH': 1, 'OF WEALTH THAT': 1, 'WEALTH THAT IS': 1, 'THAT IS THE': 1, 'IS THE ONE': 1, 'THERE IS ONE': 1, 'IS ONE MEASURE': 1, 'ONE MEASURE BETTER': 1, 'MEASURE BETTER CALCULATED': 1, 'BETTER CALCULATED THAN': 1, 'CALCULATED THAN ANOTHER': 1, 'THAN ANOTHER TO': 1, 'ANOTHER TO PRODUCE': 1, 'TO PRODUCE THAT': 1, 'PRODUCE THAT STATE': 1, 'THAT STATE OF': 1, 'OF THINGS SO': 1, 'THINGS SO MUCH': 1, 'SO MUCH DEPRECATED': 1, 'MUCH DEPRECATED BY': 1, 'DEPRECATED BY ALL': 1, 'BY ALL TRUE': 1, 'ALL TRUE REPUBLICANS': 1, 'TRUE REPUBLICANS BY': 1, 'REPUBLICANS BY WHICH': 1, 'WHICH THE RICH': 1, 'THE RICH ARE': 1, 'RICH ARE DAILY': 1, 'ARE DAILY ADDING': 1, 'DAILY ADDING TO': 1, 'ADDING TO THEIR': 1, 'TO THEIR HOARDS': 1, 'THEIR HOARDS AND': 1, 'HOARDS AND THE': 1, 'AND THE POOR': 1, 'THE POOR SINKING': 1, 'POOR SINKING DEEPER': 1, 'SINKING DEEPER INTO': 1, 'DEEPER INTO PENURY': 1, 'INTO PENURY IT': 1, 'PENURY IT IS': 1, 'OR IF THERE': 1, 'IS A PROCESS': 1, 'A PROCESS BY': 1, 'PROCESS BY WHICH': 1, 'WHICH THE CHARACTER': 1, 'THE COUNTRY FOR': 1, 'COUNTRY FOR GENEROSITY': 1, 'FOR GENEROSITY AND': 1, 'GENEROSITY AND NOBLENESS': 1, 'AND NOBLENESS OF': 1, 'NOBLENESS OF FEELING': 1, 'OF FEELING MAY': 1, 'FEELING MAY BE': 1, 'MAY BE DESTROYED': 1, 'BE DESTROYED BY': 1, 'DESTROYED BY THE': 1, 'GREAT INCREASE AND': 1, 'INCREASE AND NECK': 1, 'AND NECK TOLERATION': 1, 'NECK TOLERATION OF': 1, 'TOLERATION OF USURY': 1, 'OF USURY IT': 1, 'USURY IT IS': 1, 'AMONGST THE OTHER': 1, 'THE OTHER DUTIES': 1, 'OTHER DUTIES OF': 1, 'DUTIES OF A': 1, 'OF A DELICATE': 1, 'A DELICATE CHARACTER': 1, 'DELICATE CHARACTER WHICH': 1, 'CHARACTER WHICH THE': 1, 'THE PRESIDENT IS': 1, 'PRESIDENT IS CALLED': 1, 'IS CALLED UPON': 1, 'TO PERFORM IS': 1, 'PERFORM IS THE': 1, 'IS THE SUPERVISION': 1, 'THE SUPERVISION OF': 1, 'SUPERVISION OF THE': 1, 'GOVERNMENT OF THE': 1, 'OF THE TERRITORIES': 1, 'THE TERRITORIES OF': 1, 'TERRITORIES OF THE': 1, 'THOSE OF THEM': 1, 'OF THEM WHICH': 1, 'THEM WHICH ARE': 1, 'WHICH ARE DESTINED': 1, 'ARE DESTINED TO': 1, 'DESTINED TO BECOME': 1, 'TO BECOME MEMBERS': 1, 'BECOME MEMBERS OF': 1, 'MEMBERS OF OUR': 1, 'OF OUR GREAT': 1, 'OUR GREAT POLITICAL': 1, 'GREAT POLITICAL FAMILY': 1, 'POLITICAL FAMILY ARE': 1, 'FAMILY ARE COMPENSATED': 1, 'ARE COMPENSATED BY': 1, 'COMPENSATED BY THEIR': 1, 'BY THEIR RAPID': 1, 'THEIR RAPID PROGRESS': 1, 'RAPID PROGRESS FROM': 1, 'PROGRESS FROM INFANCY': 1, 'FROM INFANCY TO': 1, 'INFANCY TO MANHOOD': 1, 'TO MANHOOD FOR': 1, 'MANHOOD FOR THE': 1, 'FOR THE PARTIAL': 1, 'THE PARTIAL AND': 1, 'PARTIAL AND TEMPORARY': 1, 'AND TEMPORARY DEPRIVATION': 1, 'TEMPORARY DEPRIVATION OF': 1, 'DEPRIVATION OF THEIR': 1, 'THEIR POLITICAL RIGHTS': 1, 'IS IN THIS': 1, 'IN THIS DISTRICT': 1, 'THIS DISTRICT ONLY': 1, 'DISTRICT ONLY WHERE': 1, 'ONLY WHERE AMERICAN': 1, 'WHERE AMERICAN CITIZENS': 1, 'AMERICAN CITIZENS ARE': 1, 'CITIZENS ARE TO': 1, 'ARE TO BE': 1, 'BE FOUND WHO': 1, 'FOUND WHO UNDER': 1, 'WHO UNDER A': 1, 'UNDER A SETTLED': 1, 'A SETTLED POLICY': 1, 'SETTLED POLICY ARE': 1, 'POLICY ARE DEPRIVED': 1, 'ARE DEPRIVED OF': 1, 'DEPRIVED OF MANY': 1, 'OF MANY IMPORTANT': 1, 'MANY IMPORTANT POLITICAL': 1, 'IMPORTANT POLITICAL PRIVILEGES': 1, 'POLITICAL PRIVILEGES WITHOUT': 1, 'PRIVILEGES WITHOUT ANY': 1, 'WITHOUT ANY INSPIRING': 1, 'ANY INSPIRING HOPE': 1, 'INSPIRING HOPE AS': 1, 'HOPE AS TO': 1, 'TO THE FUTURE': 1, 'THEIR ONLY CONSOLATION': 1, 'ONLY CONSOLATION UNDER': 1, 'CONSOLATION UNDER CIRCUMSTANCES': 1, 'UNDER CIRCUMSTANCES OF': 1, 'CIRCUMSTANCES OF SUCH': 1, 'OF SUCH DEPRIVATION': 1, 'SUCH DEPRIVATION IS': 1, 'DEPRIVATION IS THAT': 1, 'IS THAT OF': 1, 'THAT OF THE': 1, 'OF THE DEVOTED': 1, 'THE DEVOTED EXTERIOR': 1, 'DEVOTED EXTERIOR GUARDS': 1, 'EXTERIOR GUARDS OF': 1, 'GUARDS OF A': 1, 'OF A CAMP--THAT': 1, 'A CAMP--THAT THEIR': 1, 'CAMP--THAT THEIR SUFFERINGS': 1, 'THEIR SUFFERINGS SECURE': 1, 'SUFFERINGS SECURE TRANQUILLITY': 1, 'SECURE TRANQUILLITY AND': 1, 'TRANQUILLITY AND SAFETY': 1, 'AND SAFETY WITHIN': 1, 'ARE THERE ANY': 1, 'THERE ANY OF': 1, 'ANY OF THEIR': 1, 'OF THEIR COUNTRYMEN': 1, 'THEIR COUNTRYMEN WHO': 1, 'COUNTRYMEN WHO WOULD': 1, 'WHO WOULD SUBJECT': 1, 'WOULD SUBJECT THEM': 1, 'SUBJECT THEM TO': 1, 'THEM TO GREATER': 1, 'TO GREATER SACRIFICES': 1, 'GREATER SACRIFICES TO': 1, 'SACRIFICES TO ANY': 1, 'TO ANY OTHER': 1, 'ANY OTHER HUMILIATIONS': 1, 'OTHER HUMILIATIONS THAN': 1, 'HUMILIATIONS THAN THOSE': 1, 'THAN THOSE ESSENTIALLY': 1, 'THOSE ESSENTIALLY NECESSARY': 1, 'ESSENTIALLY NECESSARY TO': 1, 'NECESSARY TO THE': 1, 'THE SECURITY OF': 1, 'SECURITY OF THE': 1, 'OF THE OBJECT': 1, 'THE OBJECT FOR': 1, 'OBJECT FOR WHICH': 1, 'WHICH THEY WERE': 1, 'THEY WERE THUS': 1, 'WERE THUS SEPARATED': 1, 'THUS SEPARATED FROM': 1, 'SEPARATED FROM THEIR': 1, 'FROM THEIR FELLOW-CITIZENS': 1, 'THEIR FELLOW-CITIZENS ARE': 1, 'FELLOW-CITIZENS ARE THEIR': 1, 'ARE THEIR RIGHTS': 1, 'THEIR RIGHTS ALONE': 1, 'RIGHTS ALONE NOT': 1, 'ALONE NOT TO': 1, 'TO BE GUARANTEED': 1, 'BE GUARANTEED BY': 1, 'GUARANTEED BY THE': 1, 'BY THE APPLICATION': 1, 'THE APPLICATION OF': 1, 'APPLICATION OF THOSE': 1, 'OF THOSE GREAT': 1, 'THOSE GREAT PRINCIPLES': 1, 'GREAT PRINCIPLES UPON': 1, 'PRINCIPLES UPON WHICH': 1, 'UPON WHICH ALL': 1, 'WHICH ALL OUR': 1, 'ALL OUR CONSTITUTIONS': 1, 'OUR CONSTITUTIONS ARE': 1, 'CONSTITUTIONS ARE FOUNDED': 1, 'ARE FOUNDED WE': 1, 'FOUNDED WE ARE': 1, 'WE ARE TOLD': 1, 'ARE TOLD BY': 1, 'TOLD BY THE': 1, 'BY THE GREATEST': 1, 'THE GREATEST OF': 1, 'GREATEST OF BRITISH': 1, 'OF BRITISH ORATORS': 1, 'BRITISH ORATORS AND': 1, 'ORATORS AND STATESMEN': 1, 'AND STATESMEN THAT': 1, 'STATESMEN THAT AT': 1, 'THAT AT THE': 1, 'AT THE COMMENCEMENT': 1, 'COMMENCEMENT OF THE': 1, 'OF THE WAR': 1, 'THE WAR OF': 1, 'WAR OF THE': 1, 'OF THE REVOLUTION': 1, 'THE REVOLUTION THE': 1, 'REVOLUTION THE MOST': 1, 'THE MOST STUPID': 1, 'MOST STUPID MEN': 1, 'STUPID MEN IN': 1, 'MEN IN ENGLAND': 1, 'IN ENGLAND SPOKE': 1, 'ENGLAND SPOKE OF': 1, 'SPOKE OF THEIR': 1, 'OF THEIR AMERICAN': 1, 'THEIR AMERICAN SUBJECTS': 1, 'AMERICAN SUBJECTS ARE': 1, 'SUBJECTS ARE THERE': 1, 'ARE THERE INDEED': 1, 'THERE INDEED CITIZENS': 1, 'INDEED CITIZENS OF': 1, 'CITIZENS OF ANY': 1, 'OF ANY OF': 1, 'ANY OF OUR': 1, 'OF OUR STATES': 1, 'OUR STATES WHO': 1, 'STATES WHO HAVE': 1, 'WHO HAVE DREAMED': 1, 'HAVE DREAMED OF': 1, 'DREAMED OF THEIR': 1, 'THEIR SUBJECTS IN': 1, 'SUBJECTS IN THE': 1, 'OF COLUMBIA SUCH': 1, 'COLUMBIA SUCH DREAMS': 1, 'SUCH DREAMS CAN': 1, 'DREAMS CAN NEVER': 1, 'CAN NEVER BE': 1, 'NEVER BE REALIZED': 1, 'BE REALIZED BY': 1, 'REALIZED BY ANY': 1, 'BY ANY AGENCY': 1, 'ANY AGENCY OF': 1, 'AGENCY OF MINE': 1, 'OF THE DISTRICT': 1, 'OF COLUMBIA ARE': 1, 'COLUMBIA ARE NOT': 1, 'ARE NOT THE': 1, 'NOT THE SUBJECTS': 1, 'THE SUBJECTS OF': 1, 'SUBJECTS OF THE': 1, 'THE STATES BUT': 1, 'STATES BUT FREE': 1, 'BUT FREE AMERICAN': 1, 'FREE AMERICAN CITIZENS': 1, 'THE LATTER CONDITION': 1, 'LATTER CONDITION WHEN': 1, 'CONDITION WHEN THE': 1, 'THE CONSTITUTION WAS': 1, 'CONSTITUTION WAS FORMED': 1, 'WAS FORMED NO': 1, 'FORMED NO WORDS': 1, 'NO WORDS USED': 1, 'WORDS USED IN': 1, 'USED IN THAT': 1, 'IN THAT INSTRUMENT': 1, 'THAT INSTRUMENT COULD': 1, 'INSTRUMENT COULD HAVE': 1, 'COULD HAVE BEEN': 1, 'HAVE BEEN INTENDED': 1, 'BEEN INTENDED TO': 1, 'INTENDED TO DEPRIVE': 1, 'TO DEPRIVE THEM': 1, 'DEPRIVE THEM OF': 1, 'THEM OF THAT': 1, 'OF THAT CHARACTER': 1, 'THERE IS ANYTHING': 1, 'IS ANYTHING IN': 1, 'ANYTHING IN THE': 1, 'IN THE GREAT': 1, 'THE GREAT PRINCIPLE': 1, 'GREAT PRINCIPLE OF': 1, 'PRINCIPLE OF UNALIENABLE': 1, 'OF UNALIENABLE RIGHTS': 1, 'UNALIENABLE RIGHTS SO': 1, 'RIGHTS SO EMPHATICALLY': 1, 'SO EMPHATICALLY INSISTED': 1, 'EMPHATICALLY INSISTED UPON': 1, 'INSISTED UPON IN': 1, 'UPON IN OUR': 1, 'IN OUR DECLARATION': 1, 'OUR DECLARATION OF': 1, 'DECLARATION OF INDEPENDENCE': 1, 'OF INDEPENDENCE THEY': 1, 'INDEPENDENCE THEY COULD': 1, 'THEY COULD NEITHER': 1, 'COULD NEITHER MAKE': 1, 'NEITHER MAKE NOR': 1, 'MAKE NOR THE': 1, 'NOR THE UNITED': 1, 'UNITED STATES ACCEPT': 1, 'STATES ACCEPT A': 1, 'ACCEPT A SURRENDER': 1, 'A SURRENDER OF': 1, 'SURRENDER OF THEIR': 1, 'OF THEIR LIBERTIES': 1, 'THEIR LIBERTIES AND': 1, 'LIBERTIES AND BECOME': 1, 'AND BECOME THE': 1, \"BECOME THE SUBJECTS'--IN\": 1, \"THE SUBJECTS'--IN OTHER\": 1, \"SUBJECTS'--IN OTHER WORDS\": 1, 'OTHER WORDS THE': 1, 'WORDS THE SLAVES--OF': 1, 'THE SLAVES--OF THEIR': 1, 'SLAVES--OF THEIR FORMER': 1, 'THEIR FORMER FELLOW-CITIZENS': 1, 'IF THIS BE': 1, 'THIS BE TRUE--AND': 1, 'BE TRUE--AND IT': 1, 'TRUE--AND IT WILL': 1, 'IT WILL SCARCELY': 1, 'WILL SCARCELY BE': 1, 'SCARCELY BE DENIED': 1, 'BE DENIED BY': 1, 'DENIED BY ANYONE': 1, 'BY ANYONE WHO': 1, 'ANYONE WHO HAS': 1, 'WHO HAS A': 1, 'HAS A CORRECT': 1, 'A CORRECT IDEA': 1, 'CORRECT IDEA OF': 1, 'IDEA OF HIS': 1, 'OF HIS OWN': 1, 'HIS OWN RIGHTS': 1, 'OWN RIGHTS AS': 1, 'RIGHTS AS AN': 1, 'AS AN AMERICAN': 1, 'AN AMERICAN CITIZEN--THE': 1, 'AMERICAN CITIZEN--THE GRANT': 1, 'CITIZEN--THE GRANT TO': 1, 'GRANT TO CONGRESS': 1, 'TO CONGRESS OF': 1, 'CONGRESS OF EXCLUSIVE': 1, 'OF EXCLUSIVE JURISDICTION': 1, 'EXCLUSIVE JURISDICTION IN': 1, 'JURISDICTION IN THE': 1, 'OF COLUMBIA CAN': 1, 'COLUMBIA CAN BE': 1, 'CAN BE INTERPRETED': 1, 'BE INTERPRETED SO': 1, 'INTERPRETED SO FAR': 1, 'FAR AS RESPECTS': 1, 'AS RESPECTS THE': 1, 'RESPECTS THE AGGREGATE': 1, 'THE AGGREGATE PEOPLE': 1, 'AGGREGATE PEOPLE OF': 1, 'UNITED STATES AS': 1, 'STATES AS MEANING': 1, 'AS MEANING NOTHING': 1, 'MEANING NOTHING MORE': 1, 'NOTHING MORE THAN': 1, 'MORE THAN TO': 1, 'THAN TO ALLOW': 1, 'TO ALLOW TO': 1, 'ALLOW TO CONGRESS': 1, 'TO CONGRESS THE': 1, 'CONGRESS THE CONTROLLING': 1, 'THE CONTROLLING POWER': 1, 'CONTROLLING POWER NECESSARY': 1, 'POWER NECESSARY TO': 1, 'NECESSARY TO AFFORD': 1, 'TO AFFORD A': 1, 'AFFORD A FREE': 1, 'A FREE AND': 1, 'FREE AND SAFE': 1, 'AND SAFE EXERCISE': 1, 'SAFE EXERCISE OF': 1, 'OF THE FUNCTIONS': 1, 'THE FUNCTIONS ASSIGNED': 1, 'FUNCTIONS ASSIGNED TO': 1, 'GENERAL GOVERNMENT BY': 1, 'GOVERNMENT BY THE': 1, 'IN ALL OTHER': 1, 'ALL OTHER RESPECTS': 1, 'OTHER RESPECTS THE': 1, 'RESPECTS THE LEGISLATION': 1, 'LEGISLATION OF CONGRESS': 1, 'OF CONGRESS SHOULD': 1, 'CONGRESS SHOULD BE': 1, 'SHOULD BE ADAPTED': 1, 'BE ADAPTED TO': 1, 'ADAPTED TO THEIR': 1, 'TO THEIR PECULIAR': 1, 'THEIR PECULIAR POSITION': 1, 'PECULIAR POSITION AND': 1, 'POSITION AND WANTS': 1, 'AND WANTS AND': 1, 'WANTS AND BE': 1, 'AND BE CONFORMABLE': 1, 'BE CONFORMABLE WITH': 1, 'CONFORMABLE WITH THEIR': 1, 'WITH THEIR DELIBERATE': 1, 'THEIR DELIBERATE OPINIONS': 1, 'DELIBERATE OPINIONS OF': 1, 'OPINIONS OF THEIR': 1, 'THEIR OWN INTERESTS': 1, 'I HAVE SPOKEN': 1, 'HAVE SPOKEN OF': 1, 'SPOKEN OF THE': 1, 'OF THE NECESSITY': 1, 'THE NECESSITY OF': 1, 'NECESSITY OF KEEPING': 1, 'KEEPING THE RESPECTIVE': 1, 'THE RESPECTIVE DEPARTMENTS': 1, 'RESPECTIVE DEPARTMENTS OF': 1, 'THE GOVERNMENT AS': 1, 'GOVERNMENT AS WELL': 1, 'WELL AS ALL': 1, 'AS ALL THE': 1, 'ALL THE OTHER': 1, 'THE OTHER AUTHORITIES': 1, 'OTHER AUTHORITIES OF': 1, 'AUTHORITIES OF OUR': 1, 'OUR COUNTRY WITHIN': 1, 'COUNTRY WITHIN THEIR': 1, 'WITHIN THEIR APPROPRIATE': 1, 'THEIR APPROPRIATE ORBITS': 1, 'THIS IS A': 1, 'IS A MATTER': 1, 'A MATTER OF': 1, 'MATTER OF DIFFICULTY': 1, 'OF DIFFICULTY IN': 1, 'DIFFICULTY IN SOME': 1, 'IN SOME CASES': 1, 'SOME CASES AS': 1, 'CASES AS THE': 1, 'AS THE POWERS': 1, 'RESPECTIVELY CLAIM ARE': 1, 'CLAIM ARE OFTEN': 1, 'ARE OFTEN NOT': 1, 'OFTEN NOT DEFINED': 1, 'NOT DEFINED BY': 1, 'DEFINED BY ANY': 1, 'BY ANY DISTINCT': 1, 'ANY DISTINCT LINES': 1, 'MISCHIEVOUS HOWEVER IN': 1, 'HOWEVER IN THEIR': 1, 'IN THEIR TENDENCIES': 1, 'THEIR TENDENCIES AS': 1, 'TENDENCIES AS COLLISIONS': 1, 'AS COLLISIONS OF': 1, 'COLLISIONS OF THIS': 1, 'OF THIS KIND': 1, 'THIS KIND MAY': 1, 'KIND MAY BE': 1, 'MAY BE THOSE': 1, 'BE THOSE WHICH': 1, 'THOSE WHICH ARISE': 1, 'WHICH ARISE BETWEEN': 1, 'ARISE BETWEEN THE': 1, 'BETWEEN THE RESPECTIVE': 1, 'THE RESPECTIVE COMMUNITIES': 1, 'RESPECTIVE COMMUNITIES WHICH': 1, 'COMMUNITIES WHICH FOR': 1, 'WHICH FOR CERTAIN': 1, 'FOR CERTAIN PURPOSES': 1, 'CERTAIN PURPOSES COMPOSE': 1, 'PURPOSES COMPOSE ONE': 1, 'COMPOSE ONE NATION': 1, 'ONE NATION ARE': 1, 'NATION ARE MUCH': 1, 'ARE MUCH MORE': 1, 'MUCH MORE SO': 1, 'MORE SO FOR': 1, 'SO FOR NO': 1, 'FOR NO SUCH': 1, 'NO SUCH NATION': 1, 'SUCH NATION CAN': 1, 'NATION CAN LONG': 1, 'CAN LONG EXIST': 1, 'LONG EXIST WITHOUT': 1, 'EXIST WITHOUT THE': 1, 'WITHOUT THE CAREFUL': 1, 'THE CAREFUL CULTURE': 1, 'CAREFUL CULTURE OF': 1, 'CULTURE OF THOSE': 1, 'OF THOSE FEELINGS': 1, 'THOSE FEELINGS OF': 1, 'FEELINGS OF CONFIDENCE': 1, 'OF CONFIDENCE AND': 1, 'CONFIDENCE AND AFFECTION': 1, 'AND AFFECTION WHICH': 1, 'AFFECTION WHICH ARE': 1, 'WHICH ARE THE': 1, 'ARE THE EFFECTIVE': 1, 'THE EFFECTIVE BONDS': 1, 'EFFECTIVE BONDS TO': 1, 'BONDS TO UNION': 1, 'TO UNION BETWEEN': 1, 'UNION BETWEEN FREE': 1, 'BETWEEN FREE AND': 1, 'FREE AND CONFEDERATED': 1, 'AND CONFEDERATED STATES': 1, 'STRONG AS IS': 1, 'AS IS THE': 1, 'IS THE TIE': 1, 'THE TIE OF': 1, 'OF INTEREST IT': 1, 'INTEREST IT HAS': 1, 'HAS BEEN OFTEN': 1, 'BEEN OFTEN FOUND': 1, 'OFTEN FOUND INEFFECTUAL': 1, 'MEN BLINDED BY': 1, 'BLINDED BY THEIR': 1, 'BY THEIR PASSIONS': 1, 'THEIR PASSIONS HAVE': 1, 'PASSIONS HAVE BEEN': 1, 'HAVE BEEN KNOWN': 1, 'BEEN KNOWN TO': 1, 'KNOWN TO ADOPT': 1, 'TO ADOPT MEASURES': 1, 'ADOPT MEASURES FOR': 1, 'MEASURES FOR THEIR': 1, 'FOR THEIR COUNTRY': 1, 'THEIR COUNTRY IN': 1, 'COUNTRY IN DIRECT': 1, 'IN DIRECT OPPOSITION': 1, 'DIRECT OPPOSITION TO': 1, 'OPPOSITION TO ALL': 1, 'TO ALL THE': 1, 'ALL THE SUGGESTIONS': 1, 'THE SUGGESTIONS OF': 1, 'SUGGESTIONS OF POLICY': 1, 'THE ALTERNATIVE THEN': 1, 'ALTERNATIVE THEN IS': 1, 'THEN IS TO': 1, 'IS TO DESTROY': 1, 'TO DESTROY OR': 1, 'DESTROY OR KEEP': 1, 'OR KEEP DOWN': 1, 'KEEP DOWN A': 1, 'DOWN A BAD': 1, 'A BAD PASSION': 1, 'BAD PASSION BY': 1, 'PASSION BY CREATING': 1, 'BY CREATING AND': 1, 'CREATING AND FOSTERING': 1, 'AND FOSTERING A': 1, 'FOSTERING A GOOD': 1, 'A GOOD ONE': 1, 'GOOD ONE AND': 1, 'ONE AND THIS': 1, 'AND THIS SEEMS': 1, 'THIS SEEMS TO': 1, 'SEEMS TO BE': 1, 'BE THE CORNER': 1, 'THE CORNER STONE': 1, 'CORNER STONE UPON': 1, 'STONE UPON WHICH': 1, 'WHICH OUR AMERICAN': 1, 'OUR AMERICAN POLITICAL': 1, 'AMERICAN POLITICAL ARCHITECTS': 1, 'POLITICAL ARCHITECTS HAVE': 1, 'ARCHITECTS HAVE REARED': 1, 'HAVE REARED THE': 1, 'REARED THE FABRIC': 1, 'THE FABRIC OF': 1, 'FABRIC OF OUR': 1, 'THE CEMENT WHICH': 1, 'CEMENT WHICH WAS': 1, 'WHICH WAS TO': 1, 'WAS TO BIND': 1, 'TO BIND IT': 1, 'BIND IT AND': 1, 'IT AND PERPETUATE': 1, 'AND PERPETUATE ITS': 1, 'PERPETUATE ITS EXISTENCE': 1, 'ITS EXISTENCE WAS': 1, 'EXISTENCE WAS THE': 1, 'WAS THE AFFECTIONATE': 1, 'THE AFFECTIONATE ATTACHMENT': 1, 'AFFECTIONATE ATTACHMENT BETWEEN': 1, 'ATTACHMENT BETWEEN ALL': 1, 'BETWEEN ALL ITS': 1, 'TO INSURE THE': 1, 'INSURE THE CONTINUANCE': 1, 'CONTINUANCE OF THIS': 1, 'OF THIS FEELING': 1, 'THIS FEELING PRODUCED': 1, 'FEELING PRODUCED AT': 1, 'PRODUCED AT FIRST': 1, 'AT FIRST BY': 1, 'FIRST BY A': 1, 'BY A COMMUNITY': 1, 'A COMMUNITY OF': 1, 'COMMUNITY OF DANGERS': 1, 'OF DANGERS OF': 1, 'DANGERS OF SUFFERINGS': 1, 'OF SUFFERINGS AND': 1, 'SUFFERINGS AND OF': 1, 'AND OF INTERESTS': 1, 'OF INTERESTS THE': 1, 'INTERESTS THE ADVANTAGES': 1, 'THE ADVANTAGES OF': 1, 'ADVANTAGES OF EACH': 1, 'OF EACH WERE': 1, 'EACH WERE MADE': 1, 'WERE MADE ACCESSIBLE': 1, 'MADE ACCESSIBLE TO': 1, 'ACCESSIBLE TO ALL': 1, 'NO PARTICIPATION IN': 1, 'PARTICIPATION IN ANY': 1, 'IN ANY GOOD': 1, 'ANY GOOD POSSESSED': 1, 'GOOD POSSESSED BY': 1, 'POSSESSED BY ANY': 1, 'BY ANY MEMBER': 1, 'ANY MEMBER OF': 1, 'MEMBER OF OUR': 1, 'OF OUR EXTENSIVE': 1, 'OUR EXTENSIVE CONFEDERACY': 1, 'EXTENSIVE CONFEDERACY EXCEPT': 1, 'CONFEDERACY EXCEPT IN': 1, 'EXCEPT IN DOMESTIC': 1, 'IN DOMESTIC GOVERNMENT': 1, 'DOMESTIC GOVERNMENT WAS': 1, 'GOVERNMENT WAS WITHHELD': 1, 'WAS WITHHELD FROM': 1, 'WITHHELD FROM THE': 1, 'FROM THE CITIZEN': 1, 'ANY OTHER MEMBER': 1, 'BY A PROCESS': 1, 'A PROCESS ATTENDED': 1, 'PROCESS ATTENDED WITH': 1, 'ATTENDED WITH NO': 1, 'WITH NO DIFFICULTY': 1, 'NO DIFFICULTY NO': 1, 'DIFFICULTY NO DELAY': 1, 'NO DELAY NO': 1, 'DELAY NO EXPENSE': 1, 'NO EXPENSE BUT': 1, 'EXPENSE BUT THAT': 1, 'THAT OF REMOVAL': 1, 'OF REMOVAL THE': 1, 'REMOVAL THE CITIZEN': 1, 'CITIZEN OF ONE': 1, 'OF ONE MIGHT': 1, 'ONE MIGHT BECOME': 1, 'MIGHT BECOME THE': 1, 'BECOME THE CITIZEN': 1, 'ANY OTHER AND': 1, 'OTHER AND SUCCESSIVELY': 1, 'AND SUCCESSIVELY OF': 1, 'SUCCESSIVELY OF THE': 1, 'THE LINES TOO': 1, 'LINES TOO SEPARATING': 1, 'TOO SEPARATING POWERS': 1, 'SEPARATING POWERS TO': 1, 'POWERS TO BE': 1, 'BE EXERCISED BY': 1, 'EXERCISED BY THE': 1, 'BY THE CITIZENS': 1, 'ONE STATE FROM': 1, 'STATE FROM THOSE': 1, 'FROM THOSE OF': 1, 'THOSE OF ANOTHER': 1, 'OF ANOTHER SEEM': 1, 'ANOTHER SEEM TO': 1, 'TO BE SO': 1, 'BE SO DISTINCTLY': 1, 'SO DISTINCTLY DRAWN': 1, 'DISTINCTLY DRAWN AS': 1, 'DRAWN AS TO': 1, 'AS TO LEAVE': 1, 'TO LEAVE NO': 1, 'LEAVE NO ROOM': 1, 'NO ROOM FOR': 1, 'ROOM FOR MISUNDERSTANDING': 1, 'CITIZENS OF EACH': 1, 'OF EACH STATE': 1, 'EACH STATE UNITE': 1, 'STATE UNITE IN': 1, 'UNITE IN THEIR': 1, 'IN THEIR PERSONS': 1, 'THEIR PERSONS ALL': 1, 'PERSONS ALL THE': 1, 'ALL THE PRIVILEGES': 1, 'THE PRIVILEGES WHICH': 1, 'PRIVILEGES WHICH THAT': 1, 'WHICH THAT CHARACTER': 1, 'THAT CHARACTER CONFERS': 1, 'CHARACTER CONFERS AND': 1, 'CONFERS AND ALL': 1, 'AND ALL THAT': 1, 'ALL THAT THEY': 1, 'THAT THEY MAY': 1, 'THEY MAY CLAIM': 1, 'MAY CLAIM AS': 1, 'CLAIM AS CITIZENS': 1, 'AS CITIZENS OF': 1, 'CITIZENS OF THE': 1, 'UNITED STATES BUT': 1, 'STATES BUT IN': 1, 'BUT IN NO': 1, 'IN NO CASE': 1, 'NO CASE CAN': 1, 'CASE CAN THE': 1, 'CAN THE SAME': 1, 'THE SAME PERSONS': 1, 'SAME PERSONS AT': 1, 'PERSONS AT THE': 1, 'AT THE SAME': 1, 'THE SAME TIME': 1, 'SAME TIME ACT': 1, 'TIME ACT AS': 1, 'ACT AS THE': 1, 'AS THE CITIZEN': 1, 'CITIZEN OF TWO': 1, 'OF TWO SEPARATE': 1, 'TWO SEPARATE STATES': 1, 'SEPARATE STATES AND': 1, 'STATES AND HE': 1, 'AND HE IS': 1, 'HE IS THEREFORE': 1, 'IS THEREFORE POSITIVELY': 1, 'THEREFORE POSITIVELY PRECLUDED': 1, 'POSITIVELY PRECLUDED FROM': 1, 'PRECLUDED FROM ANY': 1, 'FROM ANY INTERFERENCE': 1, 'ANY INTERFERENCE WITH': 1, 'INTERFERENCE WITH THE': 1, 'WITH THE RESERVED': 1, 'POWERS OF ANY': 1, 'OF ANY STATE': 1, 'ANY STATE BUT': 1, 'STATE BUT THAT': 1, 'THAT OF WHICH': 1, 'OF WHICH HE': 1, 'WHICH HE IS': 1, 'HE IS FOR': 1, 'IS FOR THE': 1, 'FOR THE TIME': 1, 'THE TIME BEING': 1, 'TIME BEING A': 1, 'BEING A CITIZEN': 1, 'HE MAY INDEED': 1, 'MAY INDEED OFFER': 1, 'INDEED OFFER TO': 1, 'OFFER TO THE': 1, 'TO THE CITIZENS': 1, 'CITIZENS OF OTHER': 1, 'OF OTHER STATES': 1, 'OTHER STATES HIS': 1, 'STATES HIS ADVICE': 1, 'HIS ADVICE AS': 1, 'ADVICE AS TO': 1, 'AS TO THEIR': 1, 'TO THEIR MANAGEMENT': 1, 'THEIR MANAGEMENT AND': 1, 'MANAGEMENT AND THE': 1, 'AND THE FORM': 1, 'THE FORM IN': 1, 'FORM IN WHICH': 1, 'IN WHICH IT': 1, 'WHICH IT IS': 1, 'IT IS TENDERED': 1, 'IS TENDERED IS': 1, 'TENDERED IS LEFT': 1, 'IS LEFT TO': 1, 'LEFT TO HIS': 1, 'TO HIS OWN': 1, 'HIS OWN DISCRETION': 1, 'OWN DISCRETION AND': 1, 'DISCRETION AND SENSE': 1, 'AND SENSE OF': 1, 'SENSE OF PROPRIETY': 1, 'OBSERVED HOWEVER THAT': 1, 'HOWEVER THAT ORGANIZED': 1, 'THAT ORGANIZED ASSOCIATIONS': 1, 'ORGANIZED ASSOCIATIONS OF': 1, 'ASSOCIATIONS OF CITIZENS': 1, 'OF CITIZENS REQUIRING': 1, 'CITIZENS REQUIRING COMPLIANCE': 1, 'REQUIRING COMPLIANCE WITH': 1, 'COMPLIANCE WITH THEIR': 1, 'WITH THEIR WISHES': 1, 'THEIR WISHES TOO': 1, 'WISHES TOO MUCH': 1, 'TOO MUCH RESEMBLE': 1, 'MUCH RESEMBLE THE': 1, 'RESEMBLE THE RECOMMENDATIONS': 1, 'THE RECOMMENDATIONS OF': 1, 'RECOMMENDATIONS OF ATHENS': 1, 'OF ATHENS TO': 1, 'ATHENS TO HER': 1, 'TO HER ALLIES': 1, 'HER ALLIES SUPPORTED': 1, 'ALLIES SUPPORTED BY': 1, 'SUPPORTED BY AN': 1, 'BY AN ARMED': 1, 'AN ARMED AND': 1, 'ARMED AND POWERFUL': 1, 'AND POWERFUL FLEET': 1, 'IT WAS INDEED': 1, 'WAS INDEED TO': 1, 'INDEED TO THE': 1, 'TO THE AMBITION': 1, 'THE AMBITION OF': 1, 'AMBITION OF THE': 1, 'OF THE LEADING': 1, 'THE LEADING STATES': 1, 'LEADING STATES OF': 1, 'STATES OF GREECE': 1, 'OF GREECE TO': 1, 'GREECE TO CONTROL': 1, 'THE DOMESTIC CONCERNS': 1, 'DOMESTIC CONCERNS OF': 1, 'CONCERNS OF THE': 1, 'OF THE OTHERS': 1, 'THE OTHERS THAT': 1, 'OTHERS THAT THE': 1, 'THAT THE DESTRUCTION': 1, 'DESTRUCTION OF THAT': 1, 'THAT CELEBRATED CONFEDERACY': 1, 'CELEBRATED CONFEDERACY AND': 1, 'CONFEDERACY AND SUBSEQUENTLY': 1, 'AND SUBSEQUENTLY OF': 1, 'SUBSEQUENTLY OF ALL': 1, 'OF ALL ITS': 1, 'ITS MEMBERS IS': 1, 'MEMBERS IS MAINLY': 1, 'IS MAINLY TO': 1, 'MAINLY TO BE': 1, 'TO BE ATTRIBUTED': 1, 'BE ATTRIBUTED AND': 1, 'ATTRIBUTED AND IT': 1, 'IT IS OWING': 1, 'IS OWING TO': 1, 'OWING TO THE': 1, 'TO THE ABSENCE': 1, 'THE ABSENCE OF': 1, 'ABSENCE OF THAT': 1, 'OF THAT SPIRIT': 1, 'THAT SPIRIT THAT': 1, 'SPIRIT THAT THE': 1, 'THAT THE HELVETIC': 1, 'THE HELVETIC CONFEDERACY': 1, 'HELVETIC CONFEDERACY HAS': 1, 'CONFEDERACY HAS FOR': 1, 'HAS FOR SO': 1, 'FOR SO MANY': 1, 'SO MANY YEARS': 1, 'MANY YEARS BEEN': 1, 'YEARS BEEN PRESERVED': 1, 'NEVER HAS THERE': 1, 'HAS THERE BEEN': 1, 'THERE BEEN SEEN': 1, 'BEEN SEEN IN': 1, 'SEEN IN THE': 1, 'IN THE INSTITUTIONS': 1, 'INSTITUTIONS OF THE': 1, 'OF THE SEPARATE': 1, 'THE SEPARATE MEMBERS': 1, 'SEPARATE MEMBERS OF': 1, 'MEMBERS OF ANY': 1, 'OF ANY CONFEDERACY': 1, 'ANY CONFEDERACY MORE': 1, 'CONFEDERACY MORE ELEMENTS': 1, 'MORE ELEMENTS OF': 1, 'ELEMENTS OF DISCORD': 1, 'THE PRINCIPLES AND': 1, 'PRINCIPLES AND FORMS': 1, 'FORMS OF GOVERNMENT': 1, 'OF GOVERNMENT AND': 1, 'GOVERNMENT AND RELIGION': 1, 'AND RELIGION AS': 1, 'RELIGION AS WELL': 1, 'IN THE CIRCUMSTANCES': 1, 'THE SEVERAL CANTONS': 1, 'SEVERAL CANTONS SO': 1, 'CANTONS SO MARKED': 1, 'SO MARKED A': 1, 'MARKED A DISCREPANCY': 1, 'A DISCREPANCY WAS': 1, 'DISCREPANCY WAS OBSERVABLE': 1, 'WAS OBSERVABLE AS': 1, 'OBSERVABLE AS TO': 1, 'AS TO PROMISE': 1, 'TO PROMISE ANYTHING': 1, 'PROMISE ANYTHING BUT': 1, 'ANYTHING BUT HARMONY': 1, 'BUT HARMONY IN': 1, 'HARMONY IN THEIR': 1, 'IN THEIR INTERCOURSE': 1, 'THEIR INTERCOURSE OR': 1, 'INTERCOURSE OR PERMANENCY': 1, 'OR PERMANENCY IN': 1, 'PERMANENCY IN THEIR': 1, 'IN THEIR ALLIANCE': 1, 'THEIR ALLIANCE AND': 1, 'ALLIANCE AND YET': 1, 'AND YET FOR': 1, 'YET FOR AGES': 1, 'FOR AGES NEITHER': 1, 'AGES NEITHER HAS': 1, 'NEITHER HAS BEEN': 1, 'HAS BEEN INTERRUPTED': 1, 'WITH THE POSITIVE': 1, 'THE POSITIVE BENEFITS': 1, 'POSITIVE BENEFITS WHICH': 1, 'BENEFITS WHICH THEIR': 1, 'WHICH THEIR UNION': 1, 'THEIR UNION PRODUCED': 1, 'UNION PRODUCED WITH': 1, 'PRODUCED WITH THE': 1, 'WITH THE INDEPENDENCE': 1, 'THE INDEPENDENCE AND': 1, 'INDEPENDENCE AND SAFETY': 1, 'AND SAFETY FROM': 1, 'SAFETY FROM FOREIGN': 1, 'FROM FOREIGN AGGRESSION': 1, 'FOREIGN AGGRESSION WHICH': 1, 'AGGRESSION WHICH IT': 1, 'WHICH IT SECURED': 1, 'IT SECURED THESE': 1, 'SECURED THESE SAGACIOUS': 1, 'THESE SAGACIOUS PEOPLE': 1, 'SAGACIOUS PEOPLE RESPECTED': 1, 'PEOPLE RESPECTED THE': 1, 'RESPECTED THE INSTITUTIONS': 1, 'INSTITUTIONS OF EACH': 1, 'OF EACH OTHER': 1, 'EACH OTHER HOWEVER': 1, 'OTHER HOWEVER REPUGNANT': 1, 'HOWEVER REPUGNANT TO': 1, 'REPUGNANT TO THEIR': 1, 'TO THEIR OWN': 1, 'THEIR OWN PRINCIPLES': 1, 'OWN PRINCIPLES AND': 1, 'PRINCIPLES AND PREJUDICES': 1, 'OUR CONFEDERACY FELLOW-CITIZENS': 1, 'CONFEDERACY FELLOW-CITIZENS CAN': 1, 'FELLOW-CITIZENS CAN ONLY': 1, 'CAN ONLY BE': 1, 'ONLY BE PRESERVED': 1, 'BE PRESERVED BY': 1, 'PRESERVED BY THE': 1, 'THE SAME FORBEARANCE': 1, 'OUR CITIZENS MUST': 1, 'CITIZENS MUST BE': 1, 'MUST BE CONTENT': 1, 'BE CONTENT WITH': 1, 'WITH THE EXERCISE': 1, 'THE POWERS WITH': 1, 'POWERS WITH WHICH': 1, 'WITH WHICH THE': 1, 'THE CONSTITUTION CLOTHES': 1, 'CONSTITUTION CLOTHES THEM': 1, 'THE ATTEMPT OF': 1, 'ATTEMPT OF THOSE': 1, 'OF THOSE OF': 1, 'THOSE OF ONE': 1, 'ONE STATE TO': 1, 'STATE TO CONTROL': 1, 'THE DOMESTIC INSTITUTIONS': 1, 'DOMESTIC INSTITUTIONS OF': 1, 'INSTITUTIONS OF ANOTHER': 1, 'OF ANOTHER CAN': 1, 'ANOTHER CAN ONLY': 1, 'CAN ONLY RESULT': 1, 'ONLY RESULT IN': 1, 'RESULT IN FEELINGS': 1, 'IN FEELINGS OF': 1, 'FEELINGS OF DISTRUST': 1, 'OF DISTRUST AND': 1, 'DISTRUST AND JEALOUSY': 1, 'AND JEALOUSY THE': 1, 'JEALOUSY THE CERTAIN': 1, 'THE CERTAIN HARBINGERS': 1, 'CERTAIN HARBINGERS OF': 1, 'HARBINGERS OF DISUNION': 1, 'OF DISUNION VIOLENCE': 1, 'DISUNION VIOLENCE AND': 1, 'VIOLENCE AND CIVIL': 1, 'AND CIVIL WAR': 1, 'CIVIL WAR AND': 1, 'WAR AND THE': 1, 'AND THE ULTIMATE': 1, 'THE ULTIMATE DESTRUCTION': 1, 'ULTIMATE DESTRUCTION OF': 1, 'DESTRUCTION OF OUR': 1, 'OF OUR FREE': 1, 'OUR FREE INSTITUTIONS': 1, 'OUR CONFEDERACY IS': 1, 'CONFEDERACY IS PERFECTLY': 1, 'IS PERFECTLY ILLUSTRATED': 1, 'PERFECTLY ILLUSTRATED BY': 1, 'ILLUSTRATED BY THE': 1, 'BY THE TERMS': 1, 'THE TERMS AND': 1, 'TERMS AND PRINCIPLES': 1, 'AND PRINCIPLES GOVERNING': 1, 'PRINCIPLES GOVERNING A': 1, 'GOVERNING A COMMON': 1, 'A COMMON COPARTNERSHIP': 1, 'IS A FUND': 1, 'A FUND OF': 1, 'FUND OF POWER': 1, 'BE EXERCISED UNDER': 1, 'EXERCISED UNDER THE': 1, 'UNDER THE DIRECTION': 1, 'THE DIRECTION OF': 1, 'DIRECTION OF THE': 1, 'OF THE JOINT': 1, 'THE JOINT COUNCILS': 1, 'JOINT COUNCILS OF': 1, 'COUNCILS OF THE': 1, 'OF THE ALLIED': 1, 'THE ALLIED MEMBERS': 1, 'ALLIED MEMBERS BUT': 1, 'MEMBERS BUT THAT': 1, 'BUT THAT WHICH': 1, 'HAS BEEN RESERVED': 1, 'BEEN RESERVED BY': 1, 'RESERVED BY THE': 1, 'BY THE INDIVIDUAL': 1, 'INDIVIDUAL MEMBERS IS': 1, 'MEMBERS IS INTANGIBLE': 1, 'IS INTANGIBLE BY': 1, 'INTANGIBLE BY THE': 1, 'BY THE COMMON': 1, 'THE COMMON GOVERNMENT': 1, 'COMMON GOVERNMENT OR': 1, 'GOVERNMENT OR THE': 1, 'OR THE INDIVIDUAL': 1, 'INDIVIDUAL MEMBERS COMPOSING': 1, 'MEMBERS COMPOSING IT': 1, 'TO ATTEMPT IT': 1, 'ATTEMPT IT FINDS': 1, 'IT FINDS NO': 1, 'FINDS NO SUPPORT': 1, 'NO SUPPORT IN': 1, 'SUPPORT IN THE': 1, 'PRINCIPLES OF OUR': 1, 'OF OUR CONSTITUTION': 1, 'SHOULD BE OUR': 1, 'BE OUR CONSTANT': 1, 'OUR CONSTANT AND': 1, 'CONSTANT AND EARNEST': 1, 'AND EARNEST ENDEAVOR': 1, 'EARNEST ENDEAVOR MUTUALLY': 1, 'ENDEAVOR MUTUALLY TO': 1, 'MUTUALLY TO CULTIVATE': 1, 'TO CULTIVATE A': 1, 'CULTIVATE A SPIRIT': 1, 'A SPIRIT OF': 1, 'SPIRIT OF CONCORD': 1, 'OF CONCORD AND': 1, 'CONCORD AND HARMONY': 1, 'AND HARMONY AMONG': 1, 'HARMONY AMONG THE': 1, 'AMONG THE VARIOUS': 1, 'THE VARIOUS PARTS': 1, 'VARIOUS PARTS OF': 1, 'PARTS OF OUR': 1, 'OF OUR CONFEDERACY': 1, 'EXPERIENCE HAS ABUNDANTLY': 1, 'HAS ABUNDANTLY TAUGHT': 1, 'ABUNDANTLY TAUGHT US': 1, 'TAUGHT US THAT': 1, 'US THAT THE': 1, 'THAT THE AGITATION': 1, 'THE AGITATION BY': 1, 'AGITATION BY CITIZENS': 1, 'BY CITIZENS OF': 1, 'OF ONE PART': 1, 'ONE PART OF': 1, 'THE UNION OF': 1, 'UNION OF A': 1, 'OF A SUBJECT': 1, 'A SUBJECT NOT': 1, 'SUBJECT NOT CONFIDED': 1, 'NOT CONFIDED TO': 1, 'CONFIDED TO THE': 1, 'GOVERNMENT BUT EXCLUSIVELY': 1, 'BUT EXCLUSIVELY UNDER': 1, 'EXCLUSIVELY UNDER THE': 1, 'UNDER THE GUARDIANSHIP': 1, 'THE GUARDIANSHIP OF': 1, 'GUARDIANSHIP OF THE': 1, 'OF THE LOCAL': 1, 'THE LOCAL AUTHORITIES': 1, 'LOCAL AUTHORITIES IS': 1, 'AUTHORITIES IS PRODUCTIVE': 1, 'IS PRODUCTIVE OF': 1, 'PRODUCTIVE OF NO': 1, 'OF NO OTHER': 1, 'NO OTHER CONSEQUENCES': 1, 'OTHER CONSEQUENCES THAN': 1, 'CONSEQUENCES THAN BITTERNESS': 1, 'THAN BITTERNESS ALIENATION': 1, 'BITTERNESS ALIENATION DISCORD': 1, 'ALIENATION DISCORD AND': 1, 'DISCORD AND INJURY': 1, 'AND INJURY TO': 1, 'INJURY TO THE': 1, 'TO THE VERY': 1, 'THE VERY CAUSE': 1, 'VERY CAUSE WHICH': 1, 'CAUSE WHICH IS': 1, 'WHICH IS INTENDED': 1, 'IS INTENDED TO': 1, 'INTENDED TO BE': 1, 'TO BE ADVANCED': 1, 'ALL THE GREAT': 1, 'THE GREAT INTERESTS': 1, 'GREAT INTERESTS WHICH': 1, 'INTERESTS WHICH APPERTAIN': 1, 'WHICH APPERTAIN TO': 1, 'APPERTAIN TO OUR': 1, 'OUR COUNTRY THAT': 1, 'COUNTRY THAT OF': 1, 'THAT OF UNION--CORDIAL': 1, 'OF UNION--CORDIAL CONFIDING': 1, 'UNION--CORDIAL CONFIDING FRATERNAL': 1, 'CONFIDING FRATERNAL UNION--IS': 1, 'FRATERNAL UNION--IS BY': 1, 'UNION--IS BY FAR': 1, 'BY FAR THE': 1, 'FAR THE MOST': 1, 'THE MOST IMPORTANT': 1, 'MOST IMPORTANT SINCE': 1, 'IMPORTANT SINCE IT': 1, 'SINCE IT IS': 1, 'IS THE ONLY': 1, 'THE ONLY TRUE': 1, 'ONLY TRUE AND': 1, 'TRUE AND SURE': 1, 'AND SURE GUARANTY': 1, 'SURE GUARANTY OF': 1, 'GUARANTY OF ALL': 1, 'OF ALL OTHERS': 1, 'IN CONSEQUENCE OF': 1, 'CONSEQUENCE OF THE': 1, 'OF THE EMBARRASSED': 1, 'THE EMBARRASSED STATE': 1, 'EMBARRASSED STATE OF': 1, 'STATE OF BUSINESS': 1, 'OF BUSINESS AND': 1, 'BUSINESS AND THE': 1, 'AND THE CURRENCY': 1, 'THE CURRENCY SOME': 1, 'CURRENCY SOME OF': 1, 'THE STATES MAY': 1, 'STATES MAY MEET': 1, 'MAY MEET WITH': 1, 'MEET WITH DIFFICULTY': 1, 'WITH DIFFICULTY IN': 1, 'DIFFICULTY IN THEIR': 1, 'IN THEIR FINANCIAL': 1, 'THEIR FINANCIAL CONCERNS': 1, 'HOWEVER DEEPLY WE': 1, 'DEEPLY WE MAY': 1, 'WE MAY REGRET': 1, 'MAY REGRET ANYTHING': 1, 'REGRET ANYTHING IMPRUDENT': 1, 'ANYTHING IMPRUDENT OR': 1, 'IMPRUDENT OR EXCESSIVE': 1, 'OR EXCESSIVE IN': 1, 'EXCESSIVE IN THE': 1, 'IN THE ENGAGEMENTS': 1, 'THE ENGAGEMENTS INTO': 1, 'ENGAGEMENTS INTO WHICH': 1, 'INTO WHICH STATES': 1, 'WHICH STATES HAVE': 1, 'STATES HAVE ENTERED': 1, 'HAVE ENTERED FOR': 1, 'ENTERED FOR PURPOSES': 1, 'FOR PURPOSES OF': 1, 'PURPOSES OF THEIR': 1, 'THEIR OWN IT': 1, 'OWN IT DOES': 1, 'IT DOES NOT': 1, 'DOES NOT BECOME': 1, 'NOT BECOME US': 1, 'BECOME US TO': 1, 'US TO DISPARAGE': 1, 'TO DISPARAGE THE': 1, 'DISPARAGE THE STATES': 1, 'THE STATES GOVERNMENTS': 1, 'STATES GOVERNMENTS NOR': 1, 'GOVERNMENTS NOR TO': 1, 'NOR TO DISCOURAGE': 1, 'TO DISCOURAGE THEM': 1, 'DISCOURAGE THEM FROM': 1, 'THEM FROM MAKING': 1, 'FROM MAKING PROPER': 1, 'MAKING PROPER EFFORTS': 1, 'PROPER EFFORTS FOR': 1, 'EFFORTS FOR THEIR': 1, 'FOR THEIR OWN': 1, 'THEIR OWN RELIEF': 1, 'THE CONTRARY IT': 1, 'CONTRARY IT IS': 1, 'IT IS OUR': 1, 'IS OUR DUTY': 1, 'OUR DUTY TO': 1, 'DUTY TO ENCOURAGE': 1, 'TO ENCOURAGE THEM': 1, 'ENCOURAGE THEM TO': 1, 'TO THE EXTENT': 1, 'EXTENT OF OUR': 1, 'OF OUR CONSTITUTIONAL': 1, 'OUR CONSTITUTIONAL AUTHORITY': 1, 'CONSTITUTIONAL AUTHORITY TO': 1, 'AUTHORITY TO APPLY': 1, 'TO APPLY THEIR': 1, 'APPLY THEIR BEST': 1, 'THEIR BEST MEANS': 1, 'BEST MEANS AND': 1, 'MEANS AND CHEERFULLY': 1, 'AND CHEERFULLY TO': 1, 'CHEERFULLY TO MAKE': 1, 'TO MAKE ALL': 1, 'MAKE ALL NECESSARY': 1, 'ALL NECESSARY SACRIFICES': 1, 'NECESSARY SACRIFICES AND': 1, 'SACRIFICES AND SUBMIT': 1, 'AND SUBMIT TO': 1, 'SUBMIT TO ALL': 1, 'TO ALL NECESSARY': 1, 'ALL NECESSARY BURDENS': 1, 'NECESSARY BURDENS TO': 1, 'BURDENS TO FULFILL': 1, 'TO FULFILL THEIR': 1, 'FULFILL THEIR ENGAGEMENTS': 1, 'THEIR ENGAGEMENTS AND': 1, 'ENGAGEMENTS AND MAINTAIN': 1, 'AND MAINTAIN THEIR': 1, 'MAINTAIN THEIR CREDIT': 1, 'THEIR CREDIT FOR': 1, 'CREDIT FOR THE': 1, 'FOR THE CHARACTER': 1, 'THE SEVERAL STATES': 1, 'SEVERAL STATES FORM': 1, 'STATES FORM A': 1, 'FORM A PART': 1, 'OF THE CHARACTER': 1, 'THE RESOURCES OF': 1, 'RESOURCES OF THE': 1, 'THE COUNTRY ARE': 1, 'COUNTRY ARE ABUNDANT': 1, 'ARE ABUNDANT THE': 1, 'ABUNDANT THE ENTERPRISE': 1, 'THE ENTERPRISE AND': 1, 'ENTERPRISE AND ACTIVITY': 1, 'AND ACTIVITY OF': 1, 'ACTIVITY OF OUR': 1, 'OUR PEOPLE PROVERBIAL': 1, 'PEOPLE PROVERBIAL AND': 1, 'PROVERBIAL AND WE': 1, 'AND WE MAY': 1, 'WE MAY WELL': 1, 'MAY WELL HOPE': 1, 'WELL HOPE THAT': 1, 'HOPE THAT WISE': 1, 'THAT WISE LEGISLATION': 1, 'WISE LEGISLATION AND': 1, 'LEGISLATION AND PRUDENT': 1, 'AND PRUDENT ADMINISTRATION': 1, 'PRUDENT ADMINISTRATION BY': 1, 'ADMINISTRATION BY THE': 1, 'BY THE RESPECTIVE': 1, 'THE RESPECTIVE GOVERNMENTS': 1, 'RESPECTIVE GOVERNMENTS EACH': 1, 'GOVERNMENTS EACH ACTING': 1, 'EACH ACTING WITHIN': 1, 'ACTING WITHIN ITS': 1, 'WITHIN ITS OWN': 1, 'ITS OWN SPHERE': 1, 'OWN SPHERE WILL': 1, 'SPHERE WILL RESTORE': 1, 'WILL RESTORE FORMER': 1, 'RESTORE FORMER PROSPERITY': 1, 'UNPLEASANT AND EVEN': 1, 'AND EVEN DANGEROUS': 1, 'EVEN DANGEROUS AS': 1, 'DANGEROUS AS COLLISIONS': 1, 'AS COLLISIONS MAY': 1, 'COLLISIONS MAY SOMETIMES': 1, 'MAY SOMETIMES BE': 1, 'SOMETIMES BE BETWEEN': 1, 'BE BETWEEN THE': 1, 'BETWEEN THE CONSTITUTED': 1, 'THE CONSTITUTED AUTHORITIES': 1, 'CONSTITUTED AUTHORITIES OF': 1, 'AUTHORITIES OF THE': 1, 'CITIZENS OF OUR': 1, 'OUR COUNTRY IN': 1, 'COUNTRY IN RELATION': 1, 'TO THE LINES': 1, 'THE LINES WHICH': 1, 'LINES WHICH SEPARATE': 1, 'WHICH SEPARATE THEIR': 1, 'SEPARATE THEIR RESPECTIVE': 1, 'THEIR RESPECTIVE JURISDICTIONS': 1, 'RESPECTIVE JURISDICTIONS THE': 1, 'JURISDICTIONS THE RESULTS': 1, 'THE RESULTS CAN': 1, 'RESULTS CAN BE': 1, 'CAN BE OF': 1, 'BE OF NO': 1, 'OF NO VITAL': 1, 'NO VITAL INJURY': 1, 'VITAL INJURY TO': 1, 'INJURY TO OUR': 1, 'OUR INSTITUTIONS IF': 1, 'INSTITUTIONS IF THAT': 1, 'IF THAT ARDENT': 1, 'THAT ARDENT PATRIOTISM': 1, 'ARDENT PATRIOTISM THAT': 1, 'PATRIOTISM THAT DEVOTED': 1, 'THAT DEVOTED ATTACHMENT': 1, 'DEVOTED ATTACHMENT TO': 1, 'ATTACHMENT TO LIBERTY': 1, 'TO LIBERTY THAT': 1, 'LIBERTY THAT SPIRIT': 1, 'THAT SPIRIT OF': 1, 'SPIRIT OF MODERATION': 1, 'OF MODERATION AND': 1, 'MODERATION AND FORBEARANCE': 1, 'AND FORBEARANCE FOR': 1, 'FORBEARANCE FOR WHICH': 1, 'WHICH OUR COUNTRYMEN': 1, 'OUR COUNTRYMEN WERE': 1, 'COUNTRYMEN WERE ONCE': 1, 'WERE ONCE DISTINGUISHED': 1, 'ONCE DISTINGUISHED CONTINUE': 1, 'DISTINGUISHED CONTINUE TO': 1, 'CONTINUE TO BE': 1, 'TO BE CHERISHED': 1, 'IF THIS CONTINUES': 1, 'THIS CONTINUES TO': 1, 'CONTINUES TO BE': 1, 'BE THE RULING': 1, 'THE RULING PASSION': 1, 'RULING PASSION OF': 1, 'PASSION OF OUR': 1, 'OF OUR SOULS': 1, 'OUR SOULS THE': 1, 'SOULS THE WEAKER': 1, 'THE WEAKER FEELING': 1, 'WEAKER FEELING OF': 1, 'FEELING OF THE': 1, 'OF THE MISTAKEN': 1, 'THE MISTAKEN ENTHUSIAST': 1, 'MISTAKEN ENTHUSIAST WILL': 1, 'ENTHUSIAST WILL BE': 1, 'WILL BE CORRECTED': 1, 'BE CORRECTED THE': 1, 'CORRECTED THE UTOPIAN': 1, 'THE UTOPIAN DREAMS': 1, 'UTOPIAN DREAMS OF': 1, 'DREAMS OF THE': 1, 'OF THE SCHEMING': 1, 'THE SCHEMING POLITICIAN': 1, 'SCHEMING POLITICIAN DISSIPATED': 1, 'POLITICIAN DISSIPATED AND': 1, 'DISSIPATED AND THE': 1, 'AND THE COMPLICATED': 1, 'THE COMPLICATED INTRIGUES': 1, 'COMPLICATED INTRIGUES OF': 1, 'INTRIGUES OF THE': 1, 'OF THE DEMAGOGUE': 1, 'THE DEMAGOGUE RENDERED': 1, 'DEMAGOGUE RENDERED HARMLESS': 1, 'LIBERTY IS THE': 1, 'IS THE SOVEREIGN': 1, 'THE SOVEREIGN BALM': 1, 'SOVEREIGN BALM FOR': 1, 'BALM FOR EVERY': 1, 'FOR EVERY INJURY': 1, 'EVERY INJURY WHICH': 1, 'INJURY WHICH OUR': 1, 'WHICH OUR INSTITUTIONS': 1, 'OUR INSTITUTIONS MAY': 1, 'INSTITUTIONS MAY RECEIVE': 1, 'CONTRARY NO CARE': 1, 'NO CARE THAT': 1, 'CARE THAT CAN': 1, 'THAT CAN BE': 1, 'CAN BE USED': 1, 'BE USED IN': 1, 'USED IN THE': 1, 'IN THE CONSTRUCTION': 1, 'THE CONSTRUCTION OF': 1, 'CONSTRUCTION OF OUR': 1, 'OUR GOVERNMENT NO': 1, 'GOVERNMENT NO DIVISION': 1, 'NO DIVISION OF': 1, 'DIVISION OF POWERS': 1, 'OF POWERS NO': 1, 'POWERS NO DISTRIBUTION': 1, 'NO DISTRIBUTION OF': 1, 'DISTRIBUTION OF CHECKS': 1, 'OF CHECKS IN': 1, 'CHECKS IN ITS': 1, 'IN ITS SEVERAL': 1, 'ITS SEVERAL DEPARTMENTS': 1, 'SEVERAL DEPARTMENTS WILL': 1, 'DEPARTMENTS WILL PROVE': 1, 'WILL PROVE EFFECTUAL': 1, 'PROVE EFFECTUAL TO': 1, 'EFFECTUAL TO KEEP': 1, 'TO KEEP US': 1, 'KEEP US A': 1, 'US A FREE': 1, 'FREE PEOPLE IF': 1, 'PEOPLE IF THIS': 1, 'IF THIS SPIRIT': 1, 'THIS SPIRIT IS': 1, 'SPIRIT IS SUFFERED': 1, 'IS SUFFERED TO': 1, 'SUFFERED TO DECAY': 1, 'TO DECAY AND': 1, 'DECAY AND DECAY': 1, 'AND DECAY IT': 1, 'DECAY IT WILL': 1, 'IT WILL WITHOUT': 1, 'WILL WITHOUT CONSTANT': 1, 'WITHOUT CONSTANT NURTURE': 1, 'TO THE NEGLECT': 1, 'THE NEGLECT OF': 1, 'NEGLECT OF THIS': 1, 'OF THIS DUTY': 1, 'THIS DUTY THE': 1, 'DUTY THE BEST': 1, 'THE BEST HISTORIANS': 1, 'BEST HISTORIANS AGREE': 1, 'HISTORIANS AGREE IN': 1, 'AGREE IN ATTRIBUTING': 1, 'IN ATTRIBUTING THE': 1, 'ATTRIBUTING THE RUIN': 1, 'THE RUIN OF': 1, 'RUIN OF ALL': 1, 'ALL THE REPUBLICS': 1, 'THE REPUBLICS WITH': 1, 'REPUBLICS WITH WHOSE': 1, 'WITH WHOSE EXISTENCE': 1, 'WHOSE EXISTENCE AND': 1, 'EXISTENCE AND FALL': 1, 'AND FALL THEIR': 1, 'FALL THEIR WRITINGS': 1, 'THEIR WRITINGS HAVE': 1, 'WRITINGS HAVE MADE': 1, 'HAVE MADE US': 1, 'MADE US ACQUAINTED': 1, 'SAME CAUSES WILL': 1, 'CAUSES WILL EVER': 1, 'WILL EVER PRODUCE': 1, 'EVER PRODUCE THE': 1, 'PRODUCE THE SAME': 1, 'THE SAME EFFECTS': 1, 'SAME EFFECTS AND': 1, 'EFFECTS AND AS': 1, 'AS THE LOVE': 1, 'LOVE OF POWER': 1, 'OF POWER IS': 1, 'POWER IS A': 1, 'IS A DOMINANT': 1, 'A DOMINANT PASSION': 1, 'DOMINANT PASSION OF': 1, 'PASSION OF THE': 1, 'THE HUMAN BOSOM': 1, 'HUMAN BOSOM AND': 1, 'BOSOM AND AS': 1, 'AS THE UNDERSTANDINGS': 1, 'THE UNDERSTANDINGS OF': 1, 'UNDERSTANDINGS OF MEN': 1, 'OF MEN CAN': 1, 'MEN CAN BE': 1, 'CAN BE WARPED': 1, 'BE WARPED AND': 1, 'WARPED AND THEIR': 1, 'AND THEIR AFFECTIONS': 1, 'THEIR AFFECTIONS CHANGED': 1, 'AFFECTIONS CHANGED BY': 1, 'CHANGED BY OPERATIONS': 1, 'BY OPERATIONS UPON': 1, 'OPERATIONS UPON THEIR': 1, 'UPON THEIR PASSIONS': 1, 'THEIR PASSIONS AND': 1, 'PASSIONS AND PREJUDICES': 1, 'AND PREJUDICES SO': 1, 'PREJUDICES SO LONG': 1, 'SO LONG WILL': 1, 'LONG WILL THE': 1, 'WILL THE LIBERTIES': 1, 'LIBERTIES OF A': 1, 'A PEOPLE DEPEND': 1, 'PEOPLE DEPEND ON': 1, 'DEPEND ON THEIR': 1, 'ON THEIR OWN': 1, 'THEIR OWN CONSTANT': 1, 'OWN CONSTANT ATTENTION': 1, 'CONSTANT ATTENTION TO': 1, 'ATTENTION TO ITS': 1, 'TO ITS PRESERVATION': 1, 'THE DANGER TO': 1, 'DANGER TO ALL': 1, 'TO ALL WELL-ESTABLISHED': 1, 'ALL WELL-ESTABLISHED FREE': 1, 'WELL-ESTABLISHED FREE GOVERNMENTS': 1, 'FREE GOVERNMENTS ARISES': 1, 'GOVERNMENTS ARISES FROM': 1, 'ARISES FROM THE': 1, 'FROM THE UNWILLINGNESS': 1, 'THE UNWILLINGNESS OF': 1, 'UNWILLINGNESS OF THE': 1, 'PEOPLE TO BELIEVE': 1, 'TO BELIEVE IN': 1, 'BELIEVE IN ITS': 1, 'IN ITS EXISTENCE': 1, 'ITS EXISTENCE OR': 1, 'EXISTENCE OR FROM': 1, 'OR FROM THE': 1, 'FROM THE INFLUENCE': 1, 'INFLUENCE OF DESIGNING': 1, 'OF DESIGNING MEN': 1, 'DESIGNING MEN DIVERTING': 1, 'MEN DIVERTING THEIR': 1, 'DIVERTING THEIR ATTENTION': 1, 'THEIR ATTENTION FROM': 1, 'ATTENTION FROM THE': 1, 'FROM THE QUARTER': 1, 'THE QUARTER WHENCE': 1, 'QUARTER WHENCE IT': 1, 'WHENCE IT APPROACHES': 1, 'IT APPROACHES TO': 1, 'APPROACHES TO A': 1, 'TO A SOURCE': 1, 'A SOURCE FROM': 1, 'SOURCE FROM WHICH': 1, 'FROM WHICH IT': 1, 'WHICH IT CAN': 1, 'IT CAN NEVER': 1, 'CAN NEVER COME': 1, 'THIS IS THE': 1, 'IS THE OLD': 1, 'THE OLD TRICK': 1, 'OLD TRICK OF': 1, 'TRICK OF THOSE': 1, 'THOSE WHO WOULD': 1, 'WHO WOULD USURP': 1, 'WOULD USURP THE': 1, 'USURP THE GOVERNMENT': 1, 'GOVERNMENT OF THEIR': 1, 'OF THEIR COUNTRY': 1, 'IN THE NAME': 1, 'THE NAME OF': 1, 'NAME OF DEMOCRACY': 1, 'OF DEMOCRACY THEY': 1, 'DEMOCRACY THEY SPEAK': 1, 'THEY SPEAK WARNING': 1, 'SPEAK WARNING THE': 1, 'WARNING THE PEOPLE': 1, 'THE PEOPLE AGAINST': 1, 'PEOPLE AGAINST THE': 1, 'AGAINST THE INFLUENCE': 1, 'INFLUENCE OF WEALTH': 1, 'OF WEALTH AND': 1, 'WEALTH AND THE': 1, 'AND THE DANGER': 1, 'THE DANGER OF': 1, 'DANGER OF ARISTOCRACY': 1, 'HISTORY ANCIENT AND': 1, 'ANCIENT AND MODERN': 1, 'AND MODERN IS': 1, 'MODERN IS FULL': 1, 'IS FULL OF': 1, 'FULL OF SUCH': 1, 'OF SUCH EXAMPLES': 1, 'CAESAR BECAME THE': 1, 'BECAME THE MASTER': 1, 'THE MASTER OF': 1, 'MASTER OF THE': 1, 'OF THE ROMAN': 1, 'THE ROMAN PEOPLE': 1, 'ROMAN PEOPLE AND': 1, 'AND THE SENATE': 1, 'THE SENATE UNDER': 1, 'SENATE UNDER THE': 1, 'UNDER THE PRETENSE': 1, 'THE PRETENSE OF': 1, 'PRETENSE OF SUPPORTING': 1, 'OF SUPPORTING THE': 1, 'SUPPORTING THE DEMOCRATIC': 1, 'THE DEMOCRATIC CLAIMS': 1, 'DEMOCRATIC CLAIMS OF': 1, 'CLAIMS OF THE': 1, 'THE FORMER AGAINST': 1, 'FORMER AGAINST THE': 1, 'AGAINST THE ARISTOCRACY': 1, 'THE ARISTOCRACY OF': 1, 'ARISTOCRACY OF THE': 1, 'OF THE LATTER': 1, 'THE LATTER CROMWELL': 1, 'LATTER CROMWELL IN': 1, 'CROMWELL IN THE': 1, 'IN THE CHARACTER': 1, 'CHARACTER OF PROTECTOR': 1, 'OF PROTECTOR OF': 1, 'PROTECTOR OF THE': 1, 'OF THE LIBERTIES': 1, 'LIBERTIES OF THE': 1, 'THE PEOPLE BECAME': 1, 'PEOPLE BECAME THE': 1, 'BECAME THE DICTATOR': 1, 'THE DICTATOR OF': 1, 'DICTATOR OF ENGLAND': 1, 'OF ENGLAND AND': 1, 'ENGLAND AND BOLIVAR': 1, 'AND BOLIVAR POSSESSED': 1, 'BOLIVAR POSSESSED HIMSELF': 1, 'POSSESSED HIMSELF OF': 1, 'HIMSELF OF UNLIMITED': 1, 'OF UNLIMITED POWER': 1, 'UNLIMITED POWER WITH': 1, 'POWER WITH THE': 1, 'WITH THE TITLE': 1, 'THE TITLE OF': 1, 'TITLE OF HIS': 1, \"OF HIS COUNTRY'S\": 1, \"HIS COUNTRY'S LIBERATOR\": 1, 'THERE IS ON': 1, 'IS ON THE': 1, 'CONTRARY NO INSTANCE': 1, 'NO INSTANCE ON': 1, 'INSTANCE ON RECORD': 1, 'ON RECORD OF': 1, 'RECORD OF AN': 1, 'OF AN EXTENSIVE': 1, 'AN EXTENSIVE AND': 1, 'EXTENSIVE AND WELL-ESTABLISHED': 1, 'AND WELL-ESTABLISHED REPUBLIC': 1, 'WELL-ESTABLISHED REPUBLIC BEING': 1, 'REPUBLIC BEING CHANGED': 1, 'BEING CHANGED INTO': 1, 'CHANGED INTO AN': 1, 'INTO AN ARISTOCRACY': 1, 'THE TENDENCIES OF': 1, 'TENDENCIES OF ALL': 1, 'OF ALL SUCH': 1, 'ALL SUCH GOVERNMENTS': 1, 'SUCH GOVERNMENTS IN': 1, 'GOVERNMENTS IN THEIR': 1, 'IN THEIR DECLINE': 1, 'THEIR DECLINE IS': 1, 'DECLINE IS TO': 1, 'IS TO MONARCHY': 1, 'TO MONARCHY AND': 1, 'MONARCHY AND THE': 1, 'AND THE ANTAGONIST': 1, 'THE ANTAGONIST PRINCIPLE': 1, 'ANTAGONIST PRINCIPLE TO': 1, 'PRINCIPLE TO LIBERTY': 1, 'TO LIBERTY THERE': 1, 'LIBERTY THERE IS': 1, 'THERE IS THE': 1, 'IS THE SPIRIT': 1, 'SPIRIT OF FACTION--A': 1, 'OF FACTION--A SPIRIT': 1, 'FACTION--A SPIRIT WHICH': 1, 'SPIRIT WHICH ASSUMES': 1, 'WHICH ASSUMES THE': 1, 'ASSUMES THE CHARACTER': 1, 'CHARACTER AND IN': 1, 'AND IN TIMES': 1, 'IN TIMES OF': 1, 'TIMES OF GREAT': 1, 'OF GREAT EXCITEMENT': 1, 'GREAT EXCITEMENT IMPOSES': 1, 'EXCITEMENT IMPOSES ITSELF': 1, 'IMPOSES ITSELF UPON': 1, 'ITSELF UPON THE': 1, 'UPON THE PEOPLE': 1, 'THE PEOPLE AS': 1, 'PEOPLE AS THE': 1, 'AS THE GENUINE': 1, 'SPIRIT OF FREEDOM': 1, 'OF FREEDOM AND': 1, 'FREEDOM AND LIKE': 1, 'AND LIKE THE': 1, 'LIKE THE FALSE': 1, 'THE FALSE CHRISTS': 1, 'FALSE CHRISTS WHOSE': 1, 'CHRISTS WHOSE COMING': 1, 'WHOSE COMING WAS': 1, 'COMING WAS FORETOLD': 1, 'WAS FORETOLD BY': 1, 'FORETOLD BY THE': 1, 'BY THE SAVIOR': 1, 'THE SAVIOR SEEKS': 1, 'SAVIOR SEEKS TO': 1, 'SEEKS TO AND': 1, 'TO AND WERE': 1, 'AND WERE IT': 1, 'WERE IT POSSIBLE': 1, 'IT POSSIBLE WOULD': 1, 'POSSIBLE WOULD IMPOSE': 1, 'WOULD IMPOSE UPON': 1, 'IMPOSE UPON THE': 1, 'UPON THE TRUE': 1, 'THE TRUE AND': 1, 'TRUE AND MOST': 1, 'AND MOST FAITHFUL': 1, 'MOST FAITHFUL DISCIPLES': 1, 'FAITHFUL DISCIPLES OF': 1, 'DISCIPLES OF LIBERTY': 1, 'IS IN PERIODS': 1, 'IN PERIODS LIKE': 1, 'PERIODS LIKE THIS': 1, 'LIKE THIS THAT': 1, 'THIS THAT IT': 1, 'THAT IT BEHOOVES': 1, 'IT BEHOOVES THE': 1, 'BEHOOVES THE PEOPLE': 1, 'PEOPLE TO BE': 1, 'TO BE MOST': 1, 'BE MOST WATCHFUL': 1, 'MOST WATCHFUL OF': 1, 'WATCHFUL OF THOSE': 1, 'TO WHOM THEY': 1, 'WHOM THEY HAVE': 1, 'THEY HAVE INTRUSTED': 1, 'HAVE INTRUSTED POWER': 1, 'ALTHOUGH THERE IS': 1, 'THERE IS AT': 1, 'IS AT TIMES': 1, 'AT TIMES MUCH': 1, 'TIMES MUCH DIFFICULTY': 1, 'MUCH DIFFICULTY IN': 1, 'DIFFICULTY IN DISTINGUISHING': 1, 'IN DISTINGUISHING THE': 1, 'DISTINGUISHING THE FALSE': 1, 'THE FALSE FROM': 1, 'FALSE FROM THE': 1, 'FROM THE TRUE': 1, 'TRUE SPIRIT A': 1, 'SPIRIT A CALM': 1, 'A CALM AND': 1, 'CALM AND DISPASSIONATE': 1, 'AND DISPASSIONATE INVESTIGATION': 1, 'DISPASSIONATE INVESTIGATION WILL': 1, 'INVESTIGATION WILL DETECT': 1, 'WILL DETECT THE': 1, 'DETECT THE COUNTERFEIT': 1, 'THE COUNTERFEIT AS': 1, 'COUNTERFEIT AS WELL': 1, 'AS WELL BY': 1, 'WELL BY THE': 1, 'BY THE CHARACTER': 1, 'CHARACTER OF ITS': 1, 'ITS OPERATIONS AS': 1, 'OPERATIONS AS THE': 1, 'AS THE RESULTS': 1, 'THE RESULTS THAT': 1, 'RESULTS THAT ARE': 1, 'THAT ARE PRODUCED': 1, 'TRUE SPIRIT OF': 1, 'OF LIBERTY ALTHOUGH': 1, 'LIBERTY ALTHOUGH DEVOTED': 1, 'ALTHOUGH DEVOTED PERSEVERING': 1, 'DEVOTED PERSEVERING BOLD': 1, 'PERSEVERING BOLD AND': 1, 'BOLD AND UNCOMPROMISING': 1, 'AND UNCOMPROMISING IN': 1, 'UNCOMPROMISING IN PRINCIPLE': 1, 'IN PRINCIPLE THAT': 1, 'PRINCIPLE THAT SECURED': 1, 'THAT SECURED IS': 1, 'SECURED IS MILD': 1, 'IS MILD AND': 1, 'MILD AND TOLERANT': 1, 'AND TOLERANT AND': 1, 'TOLERANT AND SCRUPULOUS': 1, 'AND SCRUPULOUS AS': 1, 'SCRUPULOUS AS TO': 1, 'TO THE MEANS': 1, 'THE MEANS IT': 1, 'MEANS IT EMPLOYS': 1, 'IT EMPLOYS WHILST': 1, 'EMPLOYS WHILST THE': 1, 'WHILST THE SPIRIT': 1, 'OF PARTY ASSUMING': 1, 'PARTY ASSUMING TO': 1, 'ASSUMING TO BE': 1, 'TO BE THAT': 1, 'BE THAT OF': 1, 'LIBERTY IS HARSH': 1, 'IS HARSH VINDICTIVE': 1, 'HARSH VINDICTIVE AND': 1, 'VINDICTIVE AND INTOLERANT': 1, 'AND INTOLERANT AND': 1, 'INTOLERANT AND TOTALLY': 1, 'AND TOTALLY RECKLESS': 1, 'TOTALLY RECKLESS AS': 1, 'RECKLESS AS TO': 1, 'OF THE ALLIES': 1, 'THE ALLIES WHICH': 1, 'ALLIES WHICH IT': 1, 'WHICH IT BRINGS': 1, 'IT BRINGS TO': 1, 'BRINGS TO THE': 1, 'TO THE AID': 1, 'AID OF ITS': 1, 'OF ITS CAUSE': 1, 'WHEN THE GENUINE': 1, 'OF LIBERTY ANIMATES': 1, 'LIBERTY ANIMATES THE': 1, 'ANIMATES THE BODY': 1, 'THE BODY OF': 1, 'BODY OF A': 1, 'A PEOPLE TO': 1, 'PEOPLE TO A': 1, 'TO A THOROUGH': 1, 'A THOROUGH EXAMINATION': 1, 'THOROUGH EXAMINATION OF': 1, 'EXAMINATION OF THEIR': 1, 'THEIR AFFAIRS IT': 1, 'AFFAIRS IT LEADS': 1, 'IT LEADS TO': 1, 'LEADS TO THE': 1, 'TO THE EXCISION': 1, 'THE EXCISION OF': 1, 'EXCISION OF EVERY': 1, 'OF EVERY EXCRESCENCE': 1, 'EVERY EXCRESCENCE WHICH': 1, 'EXCRESCENCE WHICH MAY': 1, 'WHICH MAY HAVE': 1, 'MAY HAVE FASTENED': 1, 'HAVE FASTENED ITSELF': 1, 'FASTENED ITSELF UPON': 1, 'ITSELF UPON ANY': 1, 'UPON ANY OF': 1, 'ANY OF THE': 1, 'THE GOVERNMENT AND': 1, 'GOVERNMENT AND RESTORES': 1, 'AND RESTORES THE': 1, 'RESTORES THE SYSTEM': 1, 'THE SYSTEM TO': 1, 'SYSTEM TO ITS': 1, 'HEALTH AND BEAUTY': 1, 'BUT THE REIGN': 1, 'THE REIGN OF': 1, 'REIGN OF AN': 1, 'OF AN INTOLERANT': 1, 'AN INTOLERANT SPIRIT': 1, 'INTOLERANT SPIRIT OF': 1, 'OF PARTY AMONGST': 1, 'PARTY AMONGST A': 1, 'AMONGST A FREE': 1, 'FREE PEOPLE SELDOM': 1, 'PEOPLE SELDOM FAILS': 1, 'SELDOM FAILS TO': 1, 'FAILS TO RESULT': 1, 'TO RESULT IN': 1, 'RESULT IN A': 1, 'IN A DANGEROUS': 1, 'A DANGEROUS ACCESSION': 1, 'DANGEROUS ACCESSION TO': 1, 'ACCESSION TO THE': 1, 'EXECUTIVE POWER INTRODUCED': 1, 'POWER INTRODUCED AND': 1, 'INTRODUCED AND ESTABLISHED': 1, 'AND ESTABLISHED AMIDST': 1, 'ESTABLISHED AMIDST UNUSUAL': 1, 'AMIDST UNUSUAL PROFESSIONS': 1, 'UNUSUAL PROFESSIONS OF': 1, 'PROFESSIONS OF DEVOTION': 1, 'OF DEVOTION TO': 1, 'DEVOTION TO DEMOCRACY': 1, 'THE FOREGOING REMARKS': 1, 'FOREGOING REMARKS RELATE': 1, 'REMARKS RELATE ALMOST': 1, 'RELATE ALMOST EXCLUSIVELY': 1, 'ALMOST EXCLUSIVELY TO': 1, 'EXCLUSIVELY TO MATTERS': 1, 'TO MATTERS CONNECTED': 1, 'MATTERS CONNECTED WITH': 1, 'CONNECTED WITH OUR': 1, 'WITH OUR DOMESTIC': 1, 'OUR DOMESTIC CONCERNS': 1, 'MAY BE PROPER': 1, 'BE PROPER HOWEVER': 1, 'PROPER HOWEVER THAT': 1, 'HOWEVER THAT I': 1, 'I SHOULD GIVE': 1, 'SHOULD GIVE SOME': 1, 'GIVE SOME INDICATIONS': 1, 'SOME INDICATIONS TO': 1, 'INDICATIONS TO MY': 1, 'MY FELLOW-CITIZENS OF': 1, 'FELLOW-CITIZENS OF MY': 1, 'OF MY PROPOSED': 1, 'MY PROPOSED COURSE': 1, 'PROPOSED COURSE OF': 1, 'COURSE OF CONDUCT': 1, 'OF CONDUCT IN': 1, 'CONDUCT IN THE': 1, 'IN THE MANAGEMENT': 1, 'MANAGEMENT OF OUR': 1, 'OF OUR FOREIGN': 1, 'OUR FOREIGN RELATIONS': 1, 'I ASSURE THEM': 1, 'ASSURE THEM THEREFORE': 1, 'THEM THEREFORE THAT': 1, 'THEREFORE THAT IT': 1, 'THAT IT IS': 1, 'IT IS MY': 1, 'IS MY INTENTION': 1, 'MY INTENTION TO': 1, 'INTENTION TO USE': 1, 'TO USE EVERY': 1, 'USE EVERY MEANS': 1, 'EVERY MEANS IN': 1, 'MEANS IN MY': 1, 'IN MY POWER': 1, 'MY POWER TO': 1, 'POWER TO PRESERVE': 1, 'TO PRESERVE THE': 1, 'PRESERVE THE FRIENDLY': 1, 'THE FRIENDLY INTERCOURSE': 1, 'FRIENDLY INTERCOURSE WHICH': 1, 'INTERCOURSE WHICH NOW': 1, 'WHICH NOW SO': 1, 'NOW SO HAPPILY': 1, 'SO HAPPILY SUBSISTS': 1, 'HAPPILY SUBSISTS WITH': 1, 'SUBSISTS WITH EVERY': 1, 'WITH EVERY FOREIGN': 1, 'EVERY FOREIGN NATION': 1, 'FOREIGN NATION AND': 1, 'NATION AND THAT': 1, 'AND THAT ALTHOUGH': 1, 'THAT ALTHOUGH OF': 1, 'ALTHOUGH OF COURSE': 1, 'OF COURSE NOT': 1, 'COURSE NOT WELL': 1, 'NOT WELL INFORMED': 1, 'WELL INFORMED AS': 1, 'INFORMED AS TO': 1, 'TO THE STATE': 1, 'THE STATE OF': 1, 'STATE OF PENDING': 1, 'OF PENDING NEGOTIATIONS': 1, 'PENDING NEGOTIATIONS WITH': 1, 'NEGOTIATIONS WITH ANY': 1, 'WITH ANY OF': 1, 'ANY OF THEM': 1, 'OF THEM I': 1, 'THEM I SEE': 1, 'I SEE IN': 1, 'SEE IN THE': 1, 'IN THE PERSONAL': 1, 'THE PERSONAL CHARACTERS': 1, 'PERSONAL CHARACTERS OF': 1, 'CHARACTERS OF THE': 1, 'OF THE SOVEREIGNS': 1, 'THE SOVEREIGNS AS': 1, 'SOVEREIGNS AS WELL': 1, 'IN THE MUTUAL': 1, 'THE MUTUAL INTERESTS': 1, 'MUTUAL INTERESTS OF': 1, 'INTERESTS OF OUR': 1, 'OF OUR OWN': 1, 'OUR OWN AND': 1, 'OWN AND OF': 1, 'OF THE GOVERNMENTS': 1, 'THE GOVERNMENTS WITH': 1, 'GOVERNMENTS WITH WHICH': 1, 'WITH WHICH OUR': 1, 'WHICH OUR RELATIONS': 1, 'OUR RELATIONS ARE': 1, 'RELATIONS ARE MOST': 1, 'ARE MOST INTIMATE': 1, 'MOST INTIMATE A': 1, 'INTIMATE A PLEASING': 1, 'A PLEASING GUARANTY': 1, 'PLEASING GUARANTY THAT': 1, 'GUARANTY THAT THE': 1, 'THAT THE HARMONY': 1, 'THE HARMONY SO': 1, 'HARMONY SO IMPORTANT': 1, 'SO IMPORTANT TO': 1, 'IMPORTANT TO THE': 1, 'TO THE INTERESTS': 1, 'INTERESTS OF THEIR': 1, 'THEIR SUBJECTS AS': 1, 'SUBJECTS AS WELL': 1, 'WELL AS OF': 1, 'AS OF OUR': 1, 'OUR CITIZENS WILL': 1, 'CITIZENS WILL NOT': 1, 'WILL NOT BE': 1, 'NOT BE INTERRUPTED': 1, 'BE INTERRUPTED BY': 1, 'INTERRUPTED BY THE': 1, 'BY THE ADVANCEMENT': 1, 'THE ADVANCEMENT OF': 1, 'ADVANCEMENT OF ANY': 1, 'OF ANY CLAIM': 1, 'ANY CLAIM OR': 1, 'CLAIM OR PRETENSION': 1, 'OR PRETENSION UPON': 1, 'PRETENSION UPON THEIR': 1, 'THEIR PART TO': 1, 'PART TO WHICH': 1, 'TO WHICH OUR': 1, 'WHICH OUR HONOR': 1, 'OUR HONOR WOULD': 1, 'HONOR WOULD NOT': 1, 'WOULD NOT PERMIT': 1, 'NOT PERMIT US': 1, 'PERMIT US TO': 1, 'US TO YIELD': 1, 'LONG THE DEFENDER': 1, 'THE DEFENDER OF': 1, 'DEFENDER OF MY': 1, \"OF MY COUNTRY'S\": 1, \"MY COUNTRY'S RIGHTS\": 1, \"COUNTRY'S RIGHTS IN\": 1, 'RIGHTS IN THE': 1, 'IN THE FIELD': 1, 'THE FIELD I': 1, 'FIELD I TRUST': 1, 'I TRUST THAT': 1, 'TRUST THAT MY': 1, 'THAT MY FELLOW-CITIZENS': 1, 'MY FELLOW-CITIZENS WILL': 1, 'FELLOW-CITIZENS WILL NOT': 1, 'WILL NOT SEE': 1, 'NOT SEE IN': 1, 'SEE IN MY': 1, 'IN MY EARNEST': 1, 'MY EARNEST DESIRE': 1, 'EARNEST DESIRE TO': 1, 'DESIRE TO PRESERVE': 1, 'TO PRESERVE PEACE': 1, 'PRESERVE PEACE WITH': 1, 'PEACE WITH FOREIGN': 1, 'WITH FOREIGN POWERS': 1, 'FOREIGN POWERS ANY': 1, 'POWERS ANY INDICATION': 1, 'ANY INDICATION THAT': 1, 'INDICATION THAT THEIR': 1, 'THAT THEIR RIGHTS': 1, 'THEIR RIGHTS WILL': 1, 'RIGHTS WILL EVER': 1, 'WILL EVER BE': 1, 'EVER BE SACRIFICED': 1, 'BE SACRIFICED OR': 1, 'SACRIFICED OR THE': 1, 'OR THE HONOR': 1, 'THE HONOR OF': 1, 'HONOR OF THE': 1, 'THE NATION TARNISHED': 1, 'NATION TARNISHED BY': 1, 'TARNISHED BY ANY': 1, 'BY ANY ADMISSION': 1, 'ANY ADMISSION ON': 1, 'ADMISSION ON THE': 1, 'PART OF THEIR': 1, 'OF THEIR CHIEF': 1, 'THEIR CHIEF MAGISTRATE': 1, 'CHIEF MAGISTRATE UNWORTHY': 1, 'MAGISTRATE UNWORTHY OF': 1, 'UNWORTHY OF THEIR': 1, 'OF THEIR FORMER': 1, 'THEIR FORMER GLORY': 1, 'IN OUR INTERCOURSE': 1, 'OUR INTERCOURSE WITH': 1, 'INTERCOURSE WITH OUR': 1, 'WITH OUR ABORIGINAL': 1, 'OUR ABORIGINAL NEIGHBORS': 1, 'ABORIGINAL NEIGHBORS THE': 1, 'NEIGHBORS THE SAME': 1, 'THE SAME LIBERALITY': 1, 'SAME LIBERALITY AND': 1, 'LIBERALITY AND JUSTICE': 1, 'AND JUSTICE WHICH': 1, 'JUSTICE WHICH MARKED': 1, 'WHICH MARKED THE': 1, 'MARKED THE COURSE': 1, 'THE COURSE PRESCRIBED': 1, 'COURSE PRESCRIBED TO': 1, 'PRESCRIBED TO ME': 1, 'ME BY TWO': 1, 'BY TWO OF': 1, 'TWO OF MY': 1, 'OF MY ILLUSTRIOUS': 1, 'MY ILLUSTRIOUS PREDECESSORS': 1, 'ILLUSTRIOUS PREDECESSORS WHEN': 1, 'PREDECESSORS WHEN ACTING': 1, 'WHEN ACTING UNDER': 1, 'ACTING UNDER THEIR': 1, 'UNDER THEIR DIRECTION': 1, 'THEIR DIRECTION IN': 1, 'DIRECTION IN THE': 1, 'THE DUTIES OF': 1, 'DUTIES OF SUPERINTENDENT': 1, 'OF SUPERINTENDENT AND': 1, 'SUPERINTENDENT AND COMMISSIONER': 1, 'AND COMMISSIONER SHALL': 1, 'COMMISSIONER SHALL BE': 1, 'SHALL BE STRICTLY': 1, 'BE STRICTLY OBSERVED': 1, 'I CAN CONCEIVE': 1, 'CAN CONCEIVE OF': 1, 'CONCEIVE OF NO': 1, 'OF NO MORE': 1, 'NO MORE SUBLIME': 1, 'MORE SUBLIME SPECTACLE': 1, 'SUBLIME SPECTACLE NONE': 1, 'SPECTACLE NONE MORE': 1, 'NONE MORE LIKELY': 1, 'LIKELY TO PROPITIATE': 1, 'TO PROPITIATE AN': 1, 'PROPITIATE AN IMPARTIAL': 1, 'AN IMPARTIAL AND': 1, 'IMPARTIAL AND COMMON': 1, 'AND COMMON CREATOR': 1, 'COMMON CREATOR THAN': 1, 'CREATOR THAN A': 1, 'THAN A RIGID': 1, 'A RIGID ADHERENCE': 1, 'RIGID ADHERENCE TO': 1, 'ADHERENCE TO THE': 1, 'TO THE PRINCIPLES': 1, 'PRINCIPLES OF JUSTICE': 1, 'OF JUSTICE ON': 1, 'JUSTICE ON THE': 1, 'PART OF A': 1, 'OF A POWERFUL': 1, 'A POWERFUL NATION': 1, 'POWERFUL NATION IN': 1, 'NATION IN ITS': 1, 'IN ITS TRANSACTIONS': 1, 'ITS TRANSACTIONS WITH': 1, 'TRANSACTIONS WITH A': 1, 'WITH A WEAKER': 1, 'A WEAKER AND': 1, 'WEAKER AND UNCIVILIZED': 1, 'AND UNCIVILIZED PEOPLE': 1, 'UNCIVILIZED PEOPLE WHOM': 1, 'PEOPLE WHOM CIRCUMSTANCES': 1, 'WHOM CIRCUMSTANCES HAVE': 1, 'CIRCUMSTANCES HAVE PLACED': 1, 'HAVE PLACED AT': 1, 'PLACED AT ITS': 1, 'AT ITS DISPOSAL': 1, 'BEFORE CONCLUDING FELLOW-CITIZENS': 1, 'CONCLUDING FELLOW-CITIZENS I': 1, 'FELLOW-CITIZENS I MUST': 1, 'I MUST SAY': 1, 'MUST SAY SOMETHING': 1, 'SAY SOMETHING TO': 1, 'SOMETHING TO YOU': 1, 'TO YOU ON': 1, 'YOU ON THE': 1, 'ON THE SUBJECT': 1, 'OF THE PARTIES': 1, 'THE PARTIES AT': 1, 'PARTIES AT THIS': 1, 'THIS TIME EXISTING': 1, 'TIME EXISTING IN': 1, 'EXISTING IN OUR': 1, 'IN OUR COUNTRY': 1, 'IT APPEARS PERFECTLY': 1, 'APPEARS PERFECTLY CLEAR': 1, 'PERFECTLY CLEAR THAT': 1, 'CLEAR THAT THE': 1, 'THAT THE INTEREST': 1, 'THE INTEREST OF': 1, 'INTEREST OF THAT': 1, 'OF THAT COUNTRY': 1, 'THAT COUNTRY REQUIRES': 1, 'COUNTRY REQUIRES THAT': 1, 'REQUIRES THAT THE': 1, 'THAT THE VIOLENCE': 1, 'THE VIOLENCE OF': 1, 'VIOLENCE OF THE': 1, 'OF THE SPIRIT': 1, 'THE SPIRIT BY': 1, 'SPIRIT BY WHICH': 1, 'BY WHICH THOSE': 1, 'WHICH THOSE PARTIES': 1, 'THOSE PARTIES ARE': 1, 'PARTIES ARE AT': 1, 'ARE AT THIS': 1, 'THIS TIME GOVERNED': 1, 'TIME GOVERNED MUST': 1, 'GOVERNED MUST BE': 1, 'MUST BE GREATLY': 1, 'BE GREATLY MITIGATED': 1, 'GREATLY MITIGATED IF': 1, 'MITIGATED IF NOT': 1, 'IF NOT ENTIRELY': 1, 'NOT ENTIRELY EXTINGUISHED': 1, 'ENTIRELY EXTINGUISHED OR': 1, 'EXTINGUISHED OR CONSEQUENCES': 1, 'OR CONSEQUENCES WILL': 1, 'CONSEQUENCES WILL ENSUE': 1, 'WILL ENSUE WHICH': 1, 'ENSUE WHICH ARE': 1, 'WHICH ARE APPALLING': 1, 'ARE APPALLING TO': 1, 'APPALLING TO BE': 1, 'TO BE THOUGHT': 1, 'BE THOUGHT OF': 1, 'IF PARTIES IN': 1, 'PARTIES IN A': 1, 'IN A REPUBLIC': 1, 'A REPUBLIC ARE': 1, 'REPUBLIC ARE NECESSARY': 1, 'ARE NECESSARY TO': 1, 'NECESSARY TO SECURE': 1, 'TO SECURE A': 1, 'SECURE A DEGREE': 1, 'A DEGREE OF': 1, 'DEGREE OF VIGILANCE': 1, 'OF VIGILANCE SUFFICIENT': 1, 'VIGILANCE SUFFICIENT TO': 1, 'SUFFICIENT TO KEEP': 1, 'TO KEEP THE': 1, 'KEEP THE PUBLIC': 1, 'THE PUBLIC FUNCTIONARIES': 1, 'PUBLIC FUNCTIONARIES WITHIN': 1, 'FUNCTIONARIES WITHIN THE': 1, 'WITHIN THE BOUNDS': 1, 'THE BOUNDS OF': 1, 'BOUNDS OF LAW': 1, 'OF LAW AND': 1, 'LAW AND DUTY': 1, 'AND DUTY AT': 1, 'DUTY AT THAT': 1, 'AT THAT POINT': 1, 'THAT POINT THEIR': 1, 'POINT THEIR USEFULNESS': 1, 'THEIR USEFULNESS ENDS': 1, 'BEYOND THAT THEY': 1, 'THAT THEY BECOME': 1, 'THEY BECOME DESTRUCTIVE': 1, 'BECOME DESTRUCTIVE OF': 1, 'DESTRUCTIVE OF PUBLIC': 1, 'OF PUBLIC VIRTUE': 1, 'PUBLIC VIRTUE THE': 1, 'VIRTUE THE PARENT': 1, 'THE PARENT OF': 1, 'PARENT OF A': 1, 'OF A SPIRIT': 1, 'A SPIRIT ANTAGONIST': 1, 'SPIRIT ANTAGONIST TO': 1, 'ANTAGONIST TO THAT': 1, 'OF LIBERTY AND': 1, 'LIBERTY AND EVENTUALLY': 1, 'AND EVENTUALLY ITS': 1, 'EVENTUALLY ITS INEVITABLE': 1, 'ITS INEVITABLE CONQUEROR': 1, 'WE HAVE EXAMPLES': 1, 'HAVE EXAMPLES OF': 1, 'EXAMPLES OF REPUBLICS': 1, 'OF REPUBLICS WHERE': 1, 'REPUBLICS WHERE THE': 1, 'WHERE THE LOVE': 1, 'LOVE OF COUNTRY': 1, 'OF COUNTRY AND': 1, 'COUNTRY AND OF': 1, 'AND OF LIBERTY': 1, 'OF LIBERTY AT': 1, 'LIBERTY AT ONE': 1, 'ONE TIME WERE': 1, 'TIME WERE THE': 1, 'WERE THE DOMINANT': 1, 'THE DOMINANT PASSIONS': 1, 'DOMINANT PASSIONS OF': 1, 'PASSIONS OF THE': 1, 'THE WHOLE MASS': 1, 'WHOLE MASS OF': 1, 'MASS OF CITIZENS': 1, 'OF CITIZENS AND': 1, 'CITIZENS AND YET': 1, 'AND YET WITH': 1, 'YET WITH THE': 1, 'WITH THE CONTINUANCE': 1, 'OF THE NAME': 1, 'THE NAME AND': 1, 'NAME AND FORMS': 1, 'FORMS OF FREE': 1, 'OF FREE GOVERNMENT': 1, 'FREE GOVERNMENT NOT': 1, 'GOVERNMENT NOT A': 1, 'NOT A VESTIGE': 1, 'A VESTIGE OF': 1, 'VESTIGE OF THESE': 1, 'OF THESE QUALITIES': 1, 'THESE QUALITIES REMAINING': 1, 'QUALITIES REMAINING IN': 1, 'REMAINING IN THE': 1, 'BOSOMS OF ANY': 1, 'OF ANY ONE': 1, 'ANY ONE OF': 1, 'ONE OF ITS': 1, 'OF ITS CITIZENS': 1, 'WAS THE BEAUTIFUL': 1, 'THE BEAUTIFUL REMARK': 1, 'BEAUTIFUL REMARK OF': 1, 'OF A DISTINGUISHED': 1, 'A DISTINGUISHED ENGLISH': 1, 'DISTINGUISHED ENGLISH WRITER': 1, 'ENGLISH WRITER THAT': 1, 'WRITER THAT IN': 1, 'IN THE ROMAN': 1, 'THE ROMAN SENATE': 1, 'ROMAN SENATE OCTAVIUS': 1, 'SENATE OCTAVIUS HAD': 1, 'OCTAVIUS HAD A': 1, 'HAD A PARTY': 1, 'A PARTY AND': 1, 'PARTY AND ANTHONY': 1, 'AND ANTHONY A': 1, 'ANTHONY A PARTY': 1, 'A PARTY BUT': 1, 'PARTY BUT THE': 1, 'BUT THE COMMONWEALTH': 1, 'THE COMMONWEALTH HAD': 1, 'COMMONWEALTH HAD NONE': 1, 'HAD NONE YET': 1, 'NONE YET THE': 1, 'YET THE SENATE': 1, 'THE SENATE CONTINUED': 1, 'SENATE CONTINUED TO': 1, 'CONTINUED TO MEET': 1, 'TO MEET IN': 1, 'MEET IN THE': 1, 'IN THE TEMPLE': 1, 'THE TEMPLE OF': 1, 'TEMPLE OF LIBERTY': 1, 'OF LIBERTY TO': 1, 'LIBERTY TO TALK': 1, 'TO TALK OF': 1, 'TALK OF THE': 1, 'OF THE SACREDNESS': 1, 'THE SACREDNESS AND': 1, 'SACREDNESS AND BEAUTY': 1, 'AND BEAUTY OF': 1, 'BEAUTY OF THE': 1, 'OF THE COMMONWEALTH': 1, 'THE COMMONWEALTH AND': 1, 'COMMONWEALTH AND GAZE': 1, 'AND GAZE AT': 1, 'GAZE AT THE': 1, 'AT THE STATUES': 1, 'THE STATUES OF': 1, 'STATUES OF THE': 1, 'OF THE ELDER': 1, 'THE ELDER BRUTUS': 1, 'ELDER BRUTUS AND': 1, 'BRUTUS AND OF': 1, 'OF THE CURTII': 1, 'THE CURTII AND': 1, 'CURTII AND DECII': 1, 'AND DECII AND': 1, 'DECII AND THE': 1, 'AND THE PEOPLE': 1, 'THE PEOPLE ASSEMBLED': 1, 'PEOPLE ASSEMBLED IN': 1, 'ASSEMBLED IN THE': 1, 'IN THE FORUM': 1, 'THE FORUM NOT': 1, 'FORUM NOT AS': 1, 'NOT AS IN': 1, 'IN THE DAYS': 1, 'THE DAYS OF': 1, 'DAYS OF CAMILLUS': 1, 'OF CAMILLUS AND': 1, 'CAMILLUS AND THE': 1, 'AND THE SCIPIOS': 1, 'THE SCIPIOS TO': 1, 'SCIPIOS TO CAST': 1, 'TO CAST THEIR': 1, 'CAST THEIR FREE': 1, 'THEIR FREE VOTES': 1, 'FREE VOTES FOR': 1, 'VOTES FOR ANNUAL': 1, 'FOR ANNUAL MAGISTRATES': 1, 'ANNUAL MAGISTRATES OR': 1, 'MAGISTRATES OR PASS': 1, 'OR PASS UPON': 1, 'PASS UPON THE': 1, 'OF THE SENATE': 1, 'THE SENATE BUT': 1, 'SENATE BUT TO': 1, 'BUT TO RECEIVE': 1, 'TO RECEIVE FROM': 1, 'RECEIVE FROM THE': 1, 'OF THE LEADERS': 1, 'THE LEADERS OF': 1, 'LEADERS OF THE': 1, 'OF THE RESPECTIVE': 1, 'THE RESPECTIVE PARTIES': 1, 'RESPECTIVE PARTIES THEIR': 1, 'PARTIES THEIR SHARE': 1, 'THEIR SHARE OF': 1, 'OF THE SPOILS': 1, 'THE SPOILS AND': 1, 'SPOILS AND TO': 1, 'AND TO SHOUT': 1, 'TO SHOUT FOR': 1, 'SHOUT FOR ONE': 1, 'FOR ONE OR': 1, 'ONE OR THE': 1, 'OR THE OTHER': 1, 'THE OTHER AS': 1, 'OTHER AS THOSE': 1, 'AS THOSE COLLECTED': 1, 'THOSE COLLECTED IN': 1, 'COLLECTED IN GAUL': 1, 'IN GAUL OR': 1, 'GAUL OR EGYPT': 1, 'OR EGYPT AND': 1, 'EGYPT AND THE': 1, 'AND THE LESSER': 1, 'THE LESSER ASIA': 1, 'LESSER ASIA WOULD': 1, 'ASIA WOULD FURNISH': 1, 'WOULD FURNISH THE': 1, 'FURNISH THE LARGER': 1, 'THE LARGER DIVIDEND': 1, 'OF LIBERTY HAD': 1, 'LIBERTY HAD FLED': 1, 'HAD FLED AND': 1, 'FLED AND AVOIDING': 1, 'AND AVOIDING THE': 1, 'AVOIDING THE ABODES': 1, 'THE ABODES OF': 1, 'ABODES OF CIVILIZED': 1, 'OF CIVILIZED MAN': 1, 'CIVILIZED MAN HAD': 1, 'MAN HAD SOUGHT': 1, 'HAD SOUGHT PROTECTION': 1, 'SOUGHT PROTECTION IN': 1, 'PROTECTION IN THE': 1, 'IN THE WILDS': 1, 'THE WILDS OF': 1, 'WILDS OF SCYTHIA': 1, 'OF SCYTHIA OR': 1, 'SCYTHIA OR SCANDINAVIA': 1, 'OR SCANDINAVIA AND': 1, 'SCANDINAVIA AND SO': 1, 'AND SO UNDER': 1, 'SO UNDER THE': 1, 'UNDER THE OPERATION': 1, 'THE OPERATION OF': 1, 'OPERATION OF THE': 1, 'SAME CAUSES AND': 1, 'CAUSES AND INFLUENCES': 1, 'AND INFLUENCES IT': 1, 'INFLUENCES IT WILL': 1, 'IT WILL FLY': 1, 'WILL FLY FROM': 1, 'FLY FROM OUR': 1, 'FROM OUR CAPITOL': 1, 'OUR CAPITOL AND': 1, 'CAPITOL AND OUR': 1, 'AND OUR FORUMS': 1, 'A CALAMITY SO': 1, 'CALAMITY SO AWFUL': 1, 'SO AWFUL NOT': 1, 'AWFUL NOT ONLY': 1, 'NOT ONLY TO': 1, 'ONLY TO OUR': 1, 'OUR COUNTRY BUT': 1, 'COUNTRY BUT TO': 1, 'BUT TO THE': 1, 'TO THE WORLD': 1, 'THE WORLD MUST': 1, 'WORLD MUST BE': 1, 'MUST BE DEPRECATED': 1, 'BE DEPRECATED BY': 1, 'DEPRECATED BY EVERY': 1, 'BY EVERY PATRIOT': 1, 'EVERY PATRIOT AND': 1, 'PATRIOT AND EVERY': 1, 'AND EVERY TENDENCY': 1, 'EVERY TENDENCY TO': 1, 'TENDENCY TO A': 1, 'TO A STATE': 1, 'OF THINGS LIKELY': 1, 'THINGS LIKELY TO': 1, 'TO PRODUCE IT': 1, 'PRODUCE IT IMMEDIATELY': 1, 'IT IMMEDIATELY CHECKED': 1, 'SUCH A TENDENCY': 1, 'A TENDENCY HAS': 1, 'TENDENCY HAS EXISTED--DOES': 1, 'HAS EXISTED--DOES EXIST': 1, 'ALWAYS THE FRIEND': 1, 'THE FRIEND OF': 1, 'FRIEND OF MY': 1, 'MY COUNTRYMEN NEVER': 1, 'COUNTRYMEN NEVER THEIR': 1, 'NEVER THEIR FLATTERER': 1, 'THEIR FLATTERER IT': 1, 'FLATTERER IT BECOMES': 1, 'IT BECOMES MY': 1, 'BECOMES MY DUTY': 1, 'MY DUTY TO': 1, 'DUTY TO SAY': 1, 'TO SAY TO': 1, 'SAY TO THEM': 1, 'TO THEM FROM': 1, 'THEM FROM THIS': 1, 'FROM THIS HIGH': 1, 'THIS HIGH PLACE': 1, 'HIGH PLACE TO': 1, 'PLACE TO WHICH': 1, 'TO WHICH THEIR': 1, 'WHICH THEIR PARTIALITY': 1, 'THEIR PARTIALITY HAS': 1, 'PARTIALITY HAS EXALTED': 1, 'HAS EXALTED ME': 1, 'EXALTED ME THAT': 1, 'ME THAT THERE': 1, 'THAT THERE EXISTS': 1, 'THERE EXISTS IN': 1, 'EXISTS IN THE': 1, 'IN THE LAND': 1, 'THE LAND A': 1, 'LAND A SPIRIT': 1, 'A SPIRIT HOSTILE': 1, 'SPIRIT HOSTILE TO': 1, 'HOSTILE TO THEIR': 1, 'TO THEIR BEST': 1, 'THEIR BEST INTERESTS--HOSTILE': 1, 'BEST INTERESTS--HOSTILE TO': 1, 'INTERESTS--HOSTILE TO LIBERTY': 1, 'TO LIBERTY ITSELF': 1, 'IS A SPIRIT': 1, 'A SPIRIT CONTRACTED': 1, 'SPIRIT CONTRACTED IN': 1, 'CONTRACTED IN ITS': 1, 'IN ITS VIEWS': 1, 'ITS VIEWS SELFISH': 1, 'VIEWS SELFISH IN': 1, 'SELFISH IN ITS': 1, 'IN ITS OBJECTS': 1, 'IT LOOKS TO': 1, 'LOOKS TO THE': 1, 'TO THE AGGRANDIZEMENT': 1, 'THE AGGRANDIZEMENT OF': 1, 'AGGRANDIZEMENT OF A': 1, 'A FEW EVEN': 1, 'FEW EVEN TO': 1, 'EVEN TO THE': 1, 'TO THE DESTRUCTION': 1, 'DESTRUCTION OF THE': 1, 'OF THE INTERESTS': 1, 'THE ENTIRE REMEDY': 1, 'ENTIRE REMEDY IS': 1, 'REMEDY IS WITH': 1, 'IS WITH THE': 1, 'WITH THE PEOPLE': 1, 'SOMETHING HOWEVER MAY': 1, 'HOWEVER MAY BE': 1, 'MAY BE EFFECTED': 1, 'EFFECTED BY THE': 1, 'BY THE MEANS': 1, 'THE MEANS WHICH': 1, 'MEANS WHICH THEY': 1, 'THEY HAVE PLACED': 1, 'HAVE PLACED IN': 1, 'IT IS UNION': 1, 'IS UNION THAT': 1, 'UNION THAT WE': 1, 'THAT WE WANT': 1, 'WE WANT NOT': 1, 'WANT NOT OF': 1, 'OF A PARTY': 1, 'A PARTY FOR': 1, 'PARTY FOR THE': 1, 'SAKE OF THAT': 1, 'OF THAT PARTY': 1, 'THAT PARTY BUT': 1, 'PARTY BUT A': 1, 'BUT A UNION': 1, 'A UNION OF': 1, 'SAKE OF THE': 1, 'DEFENSE OF ITS': 1, 'OF ITS INTERESTS': 1, 'ITS INTERESTS AND': 1, 'INTERESTS AND ITS': 1, 'AND ITS HONOR': 1, 'ITS HONOR AGAINST': 1, 'HONOR AGAINST FOREIGN': 1, 'AGAINST FOREIGN AGGRESSION': 1, 'FOREIGN AGGRESSION FOR': 1, 'AGGRESSION FOR THE': 1, 'DEFENSE OF THOSE': 1, 'OF THOSE PRINCIPLES': 1, 'THOSE PRINCIPLES FOR': 1, 'PRINCIPLES FOR WHICH': 1, 'OUR ANCESTORS SO': 1, 'ANCESTORS SO GLORIOUSLY': 1, 'SO GLORIOUSLY CONTENDED': 1, 'FAR AS IT': 1, 'AS IT DEPENDS': 1, 'IT DEPENDS UPON': 1, 'DEPENDS UPON ME': 1, 'UPON ME IT': 1, 'ME IT SHALL': 1, 'IT SHALL BE': 1, 'SHALL BE ACCOMPLISHED': 1, 'ALL THE INFLUENCE': 1, 'THE INFLUENCE THAT': 1, 'INFLUENCE THAT I': 1, 'THAT I POSSESS': 1, 'I POSSESS SHALL': 1, 'POSSESS SHALL BE': 1, 'SHALL BE EXERTED': 1, 'BE EXERTED TO': 1, 'EXERTED TO PREVENT': 1, 'PREVENT THE FORMATION': 1, 'THE FORMATION AT': 1, 'FORMATION AT LEAST': 1, 'AT LEAST OF': 1, 'LEAST OF AN': 1, 'OF AN EXECUTIVE': 1, 'AN EXECUTIVE PARTY': 1, 'EXECUTIVE PARTY IN': 1, 'PARTY IN THE': 1, 'IN THE HALLS': 1, 'THE HALLS OF': 1, 'HALLS OF THE': 1, 'I WISH FOR': 1, 'WISH FOR THE': 1, 'FOR THE SUPPORT': 1, 'SUPPORT OF NO': 1, 'OF NO MEMBER': 1, 'NO MEMBER OF': 1, 'MEMBER OF THAT': 1, 'OF THAT BODY': 1, 'THAT BODY TO': 1, 'BODY TO ANY': 1, 'TO ANY MEASURE': 1, 'ANY MEASURE OF': 1, 'MEASURE OF MINE': 1, 'OF MINE THAT': 1, 'MINE THAT DOES': 1, 'THAT DOES NOT': 1, 'DOES NOT SATISFY': 1, 'NOT SATISFY HIS': 1, 'SATISFY HIS JUDGMENT': 1, 'HIS JUDGMENT AND': 1, 'JUDGMENT AND HIS': 1, 'AND HIS SENSE': 1, 'HIS SENSE OF': 1, 'SENSE OF DUTY': 1, 'OF DUTY TO': 1, 'DUTY TO THOSE': 1, 'TO THOSE FROM': 1, 'THOSE FROM WHOM': 1, 'FROM WHOM HE': 1, 'WHOM HE HOLDS': 1, 'HE HOLDS HIS': 1, 'HOLDS HIS APPOINTMENT': 1, 'HIS APPOINTMENT NOR': 1, 'APPOINTMENT NOR ANY': 1, 'NOR ANY CONFIDENCE': 1, 'ANY CONFIDENCE IN': 1, 'CONFIDENCE IN ADVANCE': 1, 'IN ADVANCE FROM': 1, 'ADVANCE FROM THE': 1, 'FROM THE PEOPLE': 1, 'PEOPLE BUT THAT': 1, 'BUT THAT ASKED': 1, 'THAT ASKED FOR': 1, 'ASKED FOR BY': 1, 'FOR BY MR': 1, 'JEFFERSON TO GIVE': 1, 'TO GIVE FIRMNESS': 1, 'GIVE FIRMNESS AND': 1, 'FIRMNESS AND EFFECT': 1, 'AND EFFECT TO': 1, 'EFFECT TO THE': 1, 'TO THE LEGAL': 1, 'THE LEGAL ADMINISTRATION': 1, 'LEGAL ADMINISTRATION OF': 1, 'ADMINISTRATION OF THEIR': 1, 'THEIR AFFAIRS I': 1, 'AFFAIRS I DEEM': 1, 'I DEEM THE': 1, 'DEEM THE PRESENT': 1, 'THE PRESENT OCCASION': 1, 'PRESENT OCCASION SUFFICIENTLY': 1, 'OCCASION SUFFICIENTLY IMPORTANT': 1, 'SUFFICIENTLY IMPORTANT AND': 1, 'IMPORTANT AND SOLEMN': 1, 'AND SOLEMN TO': 1, 'SOLEMN TO JUSTIFY': 1, 'TO JUSTIFY ME': 1, 'JUSTIFY ME IN': 1, 'ME IN EXPRESSING': 1, 'IN EXPRESSING TO': 1, 'EXPRESSING TO MY': 1, 'MY FELLOW-CITIZENS A': 1, 'FELLOW-CITIZENS A PROFOUND': 1, 'A PROFOUND REVERENCE': 1, 'PROFOUND REVERENCE FOR': 1, 'REVERENCE FOR THE': 1, 'FOR THE CHRISTIAN': 1, 'THE CHRISTIAN RELIGION': 1, 'CHRISTIAN RELIGION AND': 1, 'RELIGION AND A': 1, 'AND A THOROUGH': 1, 'A THOROUGH CONVICTION': 1, 'THOROUGH CONVICTION THAT': 1, 'CONVICTION THAT SOUND': 1, 'THAT SOUND MORALS': 1, 'SOUND MORALS RELIGIOUS': 1, 'MORALS RELIGIOUS LIBERTY': 1, 'RELIGIOUS LIBERTY AND': 1, 'LIBERTY AND A': 1, 'AND A JUST': 1, 'A JUST SENSE': 1, 'JUST SENSE OF': 1, 'SENSE OF RELIGIOUS': 1, 'OF RELIGIOUS RESPONSIBILITY': 1, 'RELIGIOUS RESPONSIBILITY ARE': 1, 'RESPONSIBILITY ARE ESSENTIALLY': 1, 'ARE ESSENTIALLY CONNECTED': 1, 'ESSENTIALLY CONNECTED WITH': 1, 'CONNECTED WITH ALL': 1, 'WITH ALL TRUE': 1, 'ALL TRUE AND': 1, 'TRUE AND LASTING': 1, 'AND LASTING HAPPINESS': 1, 'LASTING HAPPINESS AND': 1, 'HAPPINESS AND TO': 1, 'AND TO THAT': 1, 'TO THAT GOOD': 1, 'THAT GOOD BEING': 1, 'GOOD BEING WHO': 1, 'BEING WHO HAS': 1, 'WHO HAS BLESSED': 1, 'HAS BLESSED US': 1, 'BLESSED US BY': 1, 'US BY THE': 1, 'BY THE GIFTS': 1, 'THE GIFTS OF': 1, 'GIFTS OF CIVIL': 1, 'AND RELIGIOUS FREEDOM': 1, 'RELIGIOUS FREEDOM WHO': 1, 'FREEDOM WHO WATCHED': 1, 'WHO WATCHED OVER': 1, 'WATCHED OVER AND': 1, 'OVER AND PROSPERED': 1, 'AND PROSPERED THE': 1, 'PROSPERED THE LABORS': 1, 'LABORS OF OUR': 1, 'OF OUR FATHERS': 1, 'OUR FATHERS AND': 1, 'FATHERS AND HAS': 1, 'AND HAS HITHERTO': 1, 'HAS HITHERTO PRESERVED': 1, 'HITHERTO PRESERVED TO': 1, 'PRESERVED TO US': 1, 'TO US INSTITUTIONS': 1, 'US INSTITUTIONS FAR': 1, 'INSTITUTIONS FAR EXCEEDING': 1, 'FAR EXCEEDING IN': 1, 'EXCEEDING IN EXCELLENCE': 1, 'IN EXCELLENCE THOSE': 1, 'EXCELLENCE THOSE OF': 1, 'THOSE OF ANY': 1, 'ANY OTHER PEOPLE': 1, 'OTHER PEOPLE LET': 1, 'PEOPLE LET US': 1, 'LET US UNITE': 1, 'US UNITE IN': 1, 'UNITE IN FERVENTLY': 1, 'IN FERVENTLY COMMENDING': 1, 'FERVENTLY COMMENDING EVERY': 1, 'COMMENDING EVERY INTEREST': 1, 'EVERY INTEREST OF': 1, 'INTEREST OF OUR': 1, 'OF OUR BELOVED': 1, 'OUR BELOVED COUNTRY': 1, 'BELOVED COUNTRY IN': 1, 'COUNTRY IN ALL': 1, 'IN ALL FUTURE': 1, 'ALL FUTURE TIME': 1, 'FELLOW-CITIZENS BEING FULLY': 1, 'BEING FULLY INVESTED': 1, 'FULLY INVESTED WITH': 1, 'INVESTED WITH THAT': 1, 'WITH THAT HIGH': 1, 'HIGH OFFICE TO': 1, 'OFFICE TO WHICH': 1, 'TO WHICH THE': 1, 'WHICH THE PARTIALITY': 1, 'THE PARTIALITY OF': 1, 'PARTIALITY OF MY': 1, 'MY COUNTRYMEN HAS': 1, 'COUNTRYMEN HAS CALLED': 1, 'HAS CALLED ME': 1, 'CALLED ME I': 1, 'ME I NOW': 1, 'I NOW TAKE': 1, 'NOW TAKE AN': 1, 'TAKE AN AFFECTIONATE': 1, 'AN AFFECTIONATE LEAVE': 1, 'AFFECTIONATE LEAVE OF': 1, 'LEAVE OF YOU': 1, 'YOU WILL BEAR': 1, 'WILL BEAR WITH': 1, 'BEAR WITH YOU': 1, 'WITH YOU TO': 1, 'YOU TO YOUR': 1, 'TO YOUR HOMES': 1, 'YOUR HOMES THE': 1, 'HOMES THE REMEMBRANCE': 1, 'THE REMEMBRANCE OF': 1, 'REMEMBRANCE OF THE': 1, 'OF THE PLEDGE': 1, 'THE PLEDGE I': 1, 'PLEDGE I HAVE': 1, 'I HAVE THIS': 1, 'HAVE THIS DAY': 1, 'THIS DAY GIVEN': 1, 'DAY GIVEN TO': 1, 'GIVEN TO DISCHARGE': 1, 'TO DISCHARGE ALL': 1, 'DISCHARGE ALL THE': 1, 'ALL THE HIGH': 1, 'THE HIGH DUTIES': 1, 'HIGH DUTIES OF': 1, 'DUTIES OF MY': 1, 'OF MY EXALTED': 1, 'MY EXALTED STATION': 1, 'EXALTED STATION ACCORDING': 1, 'STATION ACCORDING TO': 1, 'ACCORDING TO THE': 1, 'TO THE BEST': 1, 'THE BEST OF': 1, 'BEST OF MY': 1, 'OF MY ABILITY': 1, 'MY ABILITY AND': 1, 'ABILITY AND I': 1, 'I SHALL ENTER': 1, 'SHALL ENTER UPON': 1, 'ENTER UPON THEIR': 1, 'UPON THEIR PERFORMANCE': 1, 'THEIR PERFORMANCE WITH': 1, 'PERFORMANCE WITH ENTIRE': 1, 'WITH ENTIRE CONFIDENCE': 1, 'ENTIRE CONFIDENCE IN': 1, 'IN THE SUPPORT': 1, 'SUPPORT OF A': 1, 'OF A JUST': 1, 'A JUST AND': 1, 'JUST AND GENEROUS': 1, 'AND GENEROUS PEOPLE': 1})\n" + ] + } + ], + "source": [ + "from urllib.request import urlopen\n", + "from bs4 import BeautifulSoup\n", + "import re\n", + "import string\n", + "from collections import Counter\n", + "\n", + "def cleanSentence(sentence):\n", + " sentence = sentence.split(' ')\n", + " sentence = [word.strip(string.punctuation+string.whitespace) for word in sentence]\n", + " sentence = [word for word in sentence if len(word) > 1 or (word.lower() == 'a' or word.lower() == 'i')]\n", + " return sentence\n", + "\n", + "def cleanInput(content):\n", + " content = content.upper()\n", + " content = re.sub('\\n', ' ', content)\n", + " content = bytes(content, 'UTF-8')\n", + " content = content.decode('ascii', 'ignore')\n", + " sentences = content.split('. ')\n", + " return [cleanSentence(sentence) for sentence in sentences]\n", + "\n", + "def getNgramsFromSentence(content, n):\n", + " output = []\n", + " for i in range(len(content)-n+1):\n", + " output.append(content[i:i+n])\n", + " return output\n", + "\n", + "def getNgrams(content, n):\n", + " content = cleanInput(content)\n", + " ngrams = Counter()\n", + " ngrams_list = []\n", + " for sentence in content:\n", + " newNgrams = [' '.join(ngram) for ngram in getNgramsFromSentence(sentence, n)]\n", + " ngrams_list.extend(newNgrams)\n", + " ngrams.update(newNgrams)\n", + " return(ngrams)\n", + "\n", + "\n", + "content = str(\n", + " urlopen('http://pythonscraping.com/files/inaugurationSpeech.txt').read(),\n", + " 'utf-8')\n", + "ngrams = getNgrams(content, 3)\n", + "print(ngrams)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": 31, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Counter({'EXCLUSIVE METALLIC CURRENCY': 2, 'HAD SUPPOSED WAS': 1, 'CHIEF EXECUTIVE OFFICE': 1, 'MOST STRIKING CONTRAST': 1, 'STRIKING CONTRAST WAS': 1, 'CONTRAST WAS OBSERVABLE': 1, 'THOUSAND YEARS SINCE': 1, 'REMARK WAS MADE': 1, 'MODERN ELECTIVE GOVERNMENTS': 1, 'DEVELOP SIMILAR INSTANCES': 1, 'GONE FORTH PROCLAIMING': 1, 'GLORIOUS UNION NOTHING': 1, 'UNION NOTHING UPON': 1, 'MOTIVE MAY EXIST': 1, 'SHALL STAND EITHER': 1, 'STAND EITHER EXONERATED': 1, 'HOWEVER STRONG MAY': 1, 'CHIEF CONFIDENCE UPON': 1, 'STILL GREATLY INFERIOR': 1, 'GREATLY INFERIOR TRUSTS': 1, 'INFERIOR TRUSTS HERETOFORE': 1, 'TRUSTS HERETOFORE CONFIDED': 1, 'BROAD FOUNDATION UPON': 1, 'CONSTITUTION RESTS BEING': 1, 'THEIRS HAVING MADE': 1, 'ARE CALLED UPON': 1, 'CONSIDERED MOST PURELY': 1, 'MOST PURELY DEMOCRATIC': 1, 'MOST ESSENTIAL DIFFERENCE': 1, 'OTHERS LAY CLAIM': 1, 'POWER LIMITED ONLY': 1, 'POWER PRECISELY EQUAL': 1, 'DIVINE RIGHT BELIEVING': 1, 'DISTINCTION AMONGST MEN': 1, 'ONLY LEGITIMATE RIGHT': 1, 'SEVERAL DEPARTMENTS COMPOSING': 1, 'ARE CERTAIN RIGHTS': 1, 'CERTAIN RIGHTS POSSESSED': 1, 'EACH INDIVIDUAL AMERICAN': 1, 'INDIVIDUAL AMERICAN CITIZEN': 1, 'ROMAN CITIZEN WAS': 1, 'SHIELD ONLY AGAINST': 1, 'PETTY PROVINCIAL RULER': 1, 'PROVINCIAL RULER WHILST': 1, 'CONSOLE HIMSELF UNDER': 1, \"ONE'S FAITH PRESCRIBE\": 1, 'FAITH PRESCRIBE FORMS': 1, \"ONE'S OBSERVANCE INFLICT\": 1, 'AFTER WELL-ASCERTAINED GUILT': 1, 'INVESTIGATION UNDER RULES': 1, 'UNDER RULES PRESCRIBED': 1, 'THOSE SCARCELY LESS': 1, 'SCARCELY LESS IMPORTANT': 1, 'AMERICAN CITIZEN DERIVES': 1, 'SAME ALMIGHTY HAND': 1, 'LIMITED SOVEREIGNTY POSSESSED': 1, 'INTIMATE UNION EFFECTED': 1, 'UNION EFFECTED DOMESTIC': 1, 'EFFECTED DOMESTIC TRANQUILLITY': 1, 'DOMESTIC TRANQUILLITY PRESERVED': 1, 'PERSONAL LIBERTY SECURED': 1, 'NECESSARILY SENTENTIOUS MANNER': 1, 'POWERS CLAIMED UNDER': 1, 'GENERAL CLAUSE GIVING': 1, 'STATESMEN MOST DISTINGUISHED': 1, 'MOST WARMLY DISPUTED': 1, 'WARMLY DISPUTED QUESTIONS': 1, 'DISPUTED QUESTIONS FORCES': 1, 'QUESTIONS FORCES UPON': 1, 'FORCES UPON US': 1, 'WERE ARE ATTRIBUTABLE': 1, 'GRANTED STILL ENOUGH': 1, 'MEN ARE LESS': 1, 'ARE LESS JEALOUS': 1, 'DEPARTMENT UPON ANOTHER': 1, 'OWN RESERVED RIGHTS': 1, 'SIMPLE REPRESENTATIVE DEMOCRACY': 1, 'INCREASE ITSELF PARTICULARLY': 1, 'SINGLE INDIVIDUAL PREDICTIONS': 1, 'INDIVIDUAL PREDICTIONS WERE': 1, 'PREDICTIONS WERE MADE': 1, 'VERY REMOTE PERIOD': 1, 'CONCEIVE STRICTLY PROPER': 1, 'ANY LEGITIMATE EXERCISE': 1, 'FORMER ARE UNQUESTIONABLY': 1, 'JUDGMENT ARE ATTRIBUTABLE': 1, 'JEFFERSON EARLY SAW': 1, 'MADE HITHERTO WITHOUT': 1, 'HITHERTO WITHOUT SUCCESS': 1, 'CONTINUE ANY FEATURE': 1, 'WHOM NECESSITY OBLIGES': 1, 'THOSE NOBLE FEELINGS': 1, 'DEVOTED REPUBLICAN PATRIOT': 1, 'CORRUPTING PASSION ONCE': 1, 'PASSION ONCE TAKES': 1, 'ONCE TAKES POSSESSION': 1, 'EFFECTED PUBLIC OPINION': 1, 'PUBLIC OPINION MAY': 1, 'OPINION MAY SECURE': 1, 'PLEDGE HERETOFORE GIVEN': 1, 'POWERS ACTUALLY GIVEN': 1, 'FAIR CONSTRUCTION ANY': 1, 'RECOMMEND SINCE ALTHOUGH': 1, 'SINCE ALTHOUGH ENJOINED': 1, 'GRANTS ARE VESTED': 1, 'ONLY DECLARE VOID': 1, 'DECLARE VOID THOSE': 1, 'EVERY INSTANCE WHERE': 1, 'SIMILAR CHARACTER HOWEVER': 1, 'ENJOYED MUCH FAVOR': 1, 'LEADING DEMOCRATIC PRINCIPLE': 1, 'MAJORITY SHOULD GOVERN': 1, 'COUNTRY MIGHT REQUIRE': 1, 'OWN IMMEDIATE REPRESENTATIVES': 1, 'ARGUMENT ACQUIRES ADDITIONAL': 1, 'ACQUIRES ADDITIONAL FORCE': 1, 'BILLS WERE NEVER': 1, 'WERE NEVER RETURNED': 1, 'PRESIDENTS ABOVE REFERRED': 1, 'VETO WAS APPLIED': 1, 'WAS APPLIED UPON': 1, 'TOO HASTY ENACTMENT': 1, 'SAME CAUSES MUST': 1, 'CAUSES MUST EVER': 1, 'MUST EVER EXHIBIT': 1, 'VARIOUS SECTIONS CALLING': 1, 'ALWAYS JUSTLY REGARD': 1, 'HOWEVER LARGELY PARTAKING': 1, 'WAS PROPER THEREFORE': 1, 'SUCH INFLUENCES MIGHT': 1, 'EXECUTIVE DEPARTMENT CONSTITUTED': 1, 'HIGH OFFICE HAVING': 1, 'EVERY SECTION STATE': 1, 'UNION MUST CONSIDER': 1, 'MUST CONSIDER HIMSELF': 1, 'CONSIDER HIMSELF BOUND': 1, 'MOST SOLEMN SANCTIONS': 1, 'EVERY PORTION GREAT': 1, 'VETO POWER THEREFORE': 1, 'POWER THEREFORE GIVEN': 1, 'UNITED STATES SOLELY': 1, 'HASTY LEGISLATION WHERE': 1, 'DECIDE DISPUTED POINTS': 1, 'POWERS EXPRESSLY GIVEN': 1, 'REPEATED RECOGNITIONS UNDER': 1, 'RECOGNITIONS UNDER VARIED': 1, 'UNDER VARIED CIRCUMSTANCES': 1, 'PRESIDENT SUFFICIENT AUTHORITY': 1, 'CONSIDERING SUCH DISPUTED': 1, 'SUCH DISPUTED POINTS': 1, 'FAIR EXHIBIT MADE': 1, 'ACTUAL CONDITION AFTER': 1, 'CONDITION AFTER FIFTY': 1, 'AFTER FIFTY YEARS': 1, 'FIFTY YEARS TRIAL': 1, 'CONSOLIDATED POWER ESTABLISHED': 1, 'POWER ESTABLISHED LEAVING': 1, 'SEIZED UPON NONE': 1, 'ANY OPEN WARFARE': 1, 'OPEN WARFARE MAY': 1, \"JEFFERSON'S ADMINISTRATION BECOME\": 1, 'CREATE GREAT ALARM': 1, 'MUCH GREATER MUST': 1, 'EARLY PRESIDENTS PERMITTED': 1, 'LAWS ARE EXECUTED': 1, 'MOST APPROVED WRITERS': 1, 'APPROVED WRITERS UPON': 1, 'APPEARS STRANGE INDEED': 1, 'ANYONE SHOULD DOUBT': 1, 'PRESIDENT POSSESSES OVER': 1, 'WITHOUT CAUSE DOES': 1, 'LEAST VIRTUALLY SUBJECT': 1, 'SACRED TREASURE SILENCED': 1, 'CREATED SUCH EXTENSIVE': 1, 'SUCH EXTENSIVE ALARM': 1, 'TREASURY DEPARTMENT ENTIRELY': 1, 'DEPARTMENT ENTIRELY INDEPENDENT': 1, 'REMOVABLE ONLY UPON': 1, 'TREASURY WITHOUT COMMUNICATING': 1, 'CIRCUMSTANCES ATTENDING SUCH': 1, 'ATTENDING SUCH REMOVAL': 1, 'ELECTIVE FRANCHISE THROUGH': 1, 'OWN INDEPENDENCE SECURED': 1, 'OWN UNBIASED JUDGMENTS': 1, 'MOST PRECIOUS LEGACIES': 1, 'WHATEVER PRETENSE IMPOSED': 1, 'PRETENSE IMPOSED ARE': 1, 'GOVERNMENT SHOULD NEVER': 1, 'UPON ANOTHER OCCASION': 1, 'RECOMMEND MEASURES WAS': 1, 'VERY STRANGE INDEED': 1, 'ALTOGETHER DIFFERENT DEPARTMENT': 1, 'BEST POLITICAL MAXIMS': 1, 'ARE OTHERS HOWEVER': 1, 'SYSTEM WITHOUT SINGULAR': 1, 'WITHOUT SINGULAR INCONGRUITY': 1, 'BILL MAY ORIGINATE': 1, 'MAY ORIGINATE NOR': 1, 'WHOM INTRODUCED--A MINISTER': 1, 'PRINCIPLE CERTAINLY ASSIGNS': 1, 'ONLY BODY CONSTITUTED': 1, 'FORMS EVEN DIRECT': 1, 'EXISTING REVENUE LAWS': 1, 'REVENUE LAWS SUGGESTED': 1, 'PUBLIC TREASURE SHOULD': 1, 'EXCLUSIVELY METALLIC HOWEVER': 1, 'ANY SINGLE SCHEME': 1, 'MOST INDIGENT FELLOW-CITIZENS': 1, 'ENTERPRISE ARE RAISED': 1, 'MEASURE BETTER CALCULATED': 1, 'RICH ARE DAILY': 1, 'ARE DAILY ADDING': 1, 'POOR SINKING DEEPER': 1, 'GREAT POLITICAL FAMILY': 1, 'POLITICAL FAMILY ARE': 1, 'FAMILY ARE COMPENSATED': 1, 'DISTRICT ONLY WHERE': 1, 'ONLY WHERE AMERICAN': 1, 'WHERE AMERICAN CITIZENS': 1, 'AMERICAN CITIZENS ARE': 1, 'SETTLED POLICY ARE': 1, 'POLICY ARE DEPRIVED': 1, 'IMPORTANT POLITICAL PRIVILEGES': 1, 'POLITICAL PRIVILEGES WITHOUT': 1, 'PRIVILEGES WITHOUT ANY': 1, 'WITHOUT ANY INSPIRING': 1, 'ANY INSPIRING HOPE': 1, 'ONLY CONSOLATION UNDER': 1, 'CONSOLATION UNDER CIRCUMSTANCES': 1, 'DEVOTED EXTERIOR GUARDS': 1, 'SUFFERINGS SECURE TRANQUILLITY': 1, 'THOSE ESSENTIALLY NECESSARY': 1, 'WERE THUS SEPARATED': 1, 'THOSE GREAT PRINCIPLES': 1, 'GREAT PRINCIPLES UPON': 1, 'CONSTITUTIONS ARE FOUNDED': 1, 'MOST STUPID MEN': 1, 'AMERICAN SUBJECTS ARE': 1, 'COLUMBIA SUCH DREAMS': 1, 'FREE AMERICAN CITIZENS': 1, 'CONSTITUTION WAS FORMED': 1, 'EMPHATICALLY INSISTED UPON': 1, 'UNITED STATES ACCEPT': 1, 'AMERICAN CITIZEN--THE GRANT': 1, 'CONTROLLING POWER NECESSARY': 1, 'RESPECTIVELY CLAIM ARE': 1, 'CLAIM ARE OFTEN': 1, 'ANY DISTINCT LINES': 1, 'CERTAIN PURPOSES COMPOSE': 1, 'NATION ARE MUCH': 1, 'LONG EXIST WITHOUT': 1, 'UNION BETWEEN FREE': 1, 'OFTEN FOUND INEFFECTUAL': 1, 'CORNER STONE UPON': 1, 'AMERICAN POLITICAL ARCHITECTS': 1, 'AFFECTIONATE ATTACHMENT BETWEEN': 1, 'EACH WERE MADE': 1, 'WERE MADE ACCESSIBLE': 1, 'ANY GOOD POSSESSED': 1, 'EXTENSIVE CONFEDERACY EXCEPT': 1, 'DOMESTIC GOVERNMENT WAS': 1, 'GOVERNMENT WAS WITHHELD': 1, 'LINES TOO SEPARATING': 1, 'TOO SEPARATING POWERS': 1, 'EACH STATE UNITE': 1, 'THEREFORE POSITIVELY PRECLUDED': 1, 'MAY INDEED OFFER': 1, 'CITIZENS REQUIRING COMPLIANCE': 1, 'WISHES TOO MUCH': 1, 'TOO MUCH RESEMBLE': 1, 'DISCREPANCY WAS OBSERVABLE': 1, 'INDIVIDUAL MEMBERS COMPOSING': 1, 'EARNEST ENDEAVOR MUTUALLY': 1, 'ABUNDANTLY TAUGHT US': 1, 'BITTERNESS ALIENATION DISCORD': 1, 'UNION--CORDIAL CONFIDING FRATERNAL': 1, 'CONFIDING FRATERNAL UNION--IS': 1, 'MOST IMPORTANT SINCE': 1, 'STATES MAY MEET': 1, 'MAY REGRET ANYTHING': 1, 'REGRET ANYTHING IMPRUDENT': 1, 'STATES GOVERNMENTS NOR': 1, 'MAKING PROPER EFFORTS': 1, 'SEVERAL STATES FORM': 1, 'COUNTRY ARE ABUNDANT': 1, 'RESPECTIVE GOVERNMENTS EACH': 1, 'GOVERNMENTS EACH ACTING': 1, 'EACH ACTING WITHIN': 1, 'RESTORE FORMER PROSPERITY': 1, 'COLLISIONS MAY SOMETIMES': 1, 'COUNTRYMEN WERE ONCE': 1, 'WERE ONCE DISTINGUISHED': 1, 'ONCE DISTINGUISHED CONTINUE': 1, 'SCHEMING POLITICIAN DISSIPATED': 1, 'DEMAGOGUE RENDERED HARMLESS': 1, 'INSTITUTIONS MAY RECEIVE': 1, 'WITHOUT CONSTANT NURTURE': 1, 'BEST HISTORIANS AGREE': 1, 'MADE US ACQUAINTED': 1, 'OWN CONSTANT ATTENTION': 1, 'WELL-ESTABLISHED FREE GOVERNMENTS': 1, 'FREE GOVERNMENTS ARISES': 1, 'DESIGNING MEN DIVERTING': 1, 'BOLIVAR POSSESSED HIMSELF': 1, 'WELL-ESTABLISHED REPUBLIC BEING': 1, 'REPUBLIC BEING CHANGED': 1, 'GREAT EXCITEMENT IMPOSES': 1, 'EXCITEMENT IMPOSES ITSELF': 1, 'IMPOSES ITSELF UPON': 1, 'FALSE CHRISTS WHOSE': 1, 'CHRISTS WHOSE COMING': 1, 'WHOSE COMING WAS': 1, 'COMING WAS FORETOLD': 1, 'MOST FAITHFUL DISCIPLES': 1, 'TIMES MUCH DIFFICULTY': 1, 'LIBERTY ALTHOUGH DEVOTED': 1, 'ALTHOUGH DEVOTED PERSEVERING': 1, 'DEVOTED PERSEVERING BOLD': 1, 'FASTENED ITSELF UPON': 1, 'ITSELF UPON ANY': 1, 'EXECUTIVE POWER INTRODUCED': 1, 'ESTABLISHED AMIDST UNUSUAL': 1, 'AMIDST UNUSUAL PROFESSIONS': 1, 'FOREGOING REMARKS RELATE': 1, 'REMARKS RELATE ALMOST': 1, 'RELATE ALMOST EXCLUSIVELY': 1, 'EVERY FOREIGN NATION': 1, 'RELATIONS ARE MOST': 1, 'ARE MOST INTIMATE': 1, 'FOREIGN POWERS ANY': 1, 'POWERS ANY INDICATION': 1, 'CHIEF MAGISTRATE UNWORTHY': 1, 'SUBLIME SPECTACLE NONE': 1, 'BEFORE CONCLUDING FELLOW-CITIZENS': 1, 'APPEARS PERFECTLY CLEAR': 1, 'THOSE PARTIES ARE': 1, 'REPUBLIC ARE NECESSARY': 1, 'PUBLIC FUNCTIONARIES WITHIN': 1, 'DISTINGUISHED ENGLISH WRITER': 1, 'ROMAN SENATE OCTAVIUS': 1, 'SENATE OCTAVIUS HAD': 1, 'COMMONWEALTH HAD NONE': 1, 'HAD NONE YET': 1, 'LIBERTY HAD FLED': 1, 'HAD SOUGHT PROTECTION': 1, 'SOMETHING HOWEVER MAY': 1, 'HONOR AGAINST FOREIGN': 1, 'AGAINST FOREIGN AGGRESSION': 1, 'APPOINTMENT NOR ANY': 1, 'NOR ANY CONFIDENCE': 1, 'PRESENT OCCASION SUFFICIENTLY': 1, 'OCCASION SUFFICIENTLY IMPORTANT': 1, 'SOUND MORALS RELIGIOUS': 1, 'MORALS RELIGIOUS LIBERTY': 1, 'RELIGIOUS RESPONSIBILITY ARE': 1, 'RESPONSIBILITY ARE ESSENTIALLY': 1, 'ARE ESSENTIALLY CONNECTED': 1, 'US INSTITUTIONS FAR': 1, 'INSTITUTIONS FAR EXCEEDING': 1, 'LET US UNITE': 1, 'FERVENTLY COMMENDING EVERY': 1, 'COMMENDING EVERY INTEREST': 1, 'FELLOW-CITIZENS BEING FULLY': 1, 'BEING FULLY INVESTED': 1, 'EXALTED STATION ACCORDING': 1, 'SHALL ENTER UPON': 1})\n" + ] + } + ], + "source": [ + "\n", + "\n", + "def isCommon(ngram):\n", + " commonWords = ['THE', 'BE', 'AND', 'OF', 'A', 'IN', 'TO', 'HAVE', 'IT', 'I', 'THAT', 'FOR', 'YOU', 'HE', 'WITH', 'ON', 'DO', 'SAY', 'THIS', 'THEY', 'IS', 'AN', 'AT', 'BUT', 'WE', 'HIS', 'FROM', 'THAT', 'NOT', 'BY', 'SHE', 'OR', 'AS', 'WHAT', 'GO', 'THEIR', 'CAN', 'WHO', 'GET', 'IF', 'WOULD', 'HER', 'ALL', 'MY', 'MAKE', 'ABOUT', 'KNOW', 'WILL', 'AS', 'UP', 'ONE', 'TIME', 'HAS', 'BEEN', 'THERE', 'YEAR', 'SO', 'THINK', 'WHEN', 'WHICH', 'THEM', 'SOME', 'ME', 'PEOPLE', 'TAKE', 'OUT', 'INTO', 'JUST', 'SEE', 'HIM', 'YOUR', 'COME', 'COULD', 'NOW', 'THAN', 'LIKE', 'OTHER', 'HOW', 'THEN', 'ITS', 'OUR', 'TWO', 'MORE', 'THESE', 'WANT', 'WAY', 'LOOK', 'FIRST', 'ALSO', 'NEW', 'BECAUSE', 'DAY', 'MORE', 'USE', 'NO', 'MAN', 'FIND', 'HERE', 'THING', 'GIVE', 'MANY', 'WELL']\n", + " for word in ngram:\n", + " if word in commonWords:\n", + " return True\n", + " return False\n", + "\n", + "def getNgramsFromSentence(content, n):\n", + " output = []\n", + " for i in range(len(content)-n+1):\n", + " if not isCommon(content[i:i+n]):\n", + " output.append(content[i:i+n])\n", + " return output\n", + "\n", + "ngrams = getNgrams(content, 3)\n", + "print(ngrams)\n" + ] + }, + { + "cell_type": "code", + "execution_count": 29, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "IF THERE IS ONE MEASURE BETTER CALCULATED THAN ANOTHER TO PRODUCE THAT STATE OF THINGS SO MUCH DEPRECATED BY ALL TRUE REPUBLICANS, BY WHICH THE RICH ARE DAILY ADDING TO THEIR HOARDS AND THE POOR SINKING DEEPER INTO PENURY, IT IS AN EXCLUSIVE METALLIC CURRENCY\n", + "\n", + "SUCH A ONE WAS AFFORDED BY THE EXECUTIVE DEPARTMENT CONSTITUTED BY THE CONSTITUTION\n", + "\n", + "THE GENERAL GOVERNMENT HAS SEIZED UPON NONE OF THE RESERVED RIGHTS OF THE STATES\n", + "\n", + "CALLED FROM A RETIREMENT WHICH I HAD SUPPOSED WAS TO CONTINUE FOR THE RESIDUE OF MY LIFE TO FILL THE CHIEF EXECUTIVE OFFICE OF THIS GREAT AND FREE NATION, I APPEAR BEFORE YOU, FELLOW-CITIZENS, TO TAKE THE OATHS WHICH THE CONSTITUTION PRESCRIBES AS A NECESSARY QUALIFICATION FOR THE PERFORMANCE OF ITS DUTIES; AND IN OBEDIENCE TO A CUSTOM COEVAL WITH OUR GOVERNMENT AND WHAT I BELIEVE TO BE YOUR EXPECTATIONS I PROCEED TO PRESENT TO YOU A SUMMARY OF THE PRINCIPLES WHICH WILL GOVERN ME IN THE DISCHARGE OF THE DUTIES WHICH I SHALL BE CALLED UPON TO PERFORM.\n", + "\n", + "IT WAS THE REMARK OF A ROMAN CONSUL IN AN EARLY PERIOD OF THAT CELEBRATED REPUBLIC THAT A MOST STRIKING CONTRAST WAS OBSERVABLE IN THE CONDUCT OF CANDIDATES FOR OFFICES OF POWER AND TRUST BEFORE AND AFTER OBTAINING THEM, THEY SELDOM CARRYING OUT IN THE LATTER CASE THE PLEDGES AND PROMISES MADE IN THE FORMER\n", + "\n", + "HOWEVER MUCH THE WORLD MAY HAVE IMPROVED IN MANY RESPECTS IN THE LAPSE OF UPWARD OF TWO THOUSAND YEARS SINCE THE REMARK WAS MADE BY THE VIRTUOUS AND INDIGNANT ROMAN, I FEAR THAT A STRICT EXAMINATION OF THE ANNALS OF SOME OF THE MODERN ELECTIVE GOVERNMENTS WOULD DEVELOP SIMILAR INSTANCES OF VIOLATED CONFIDENCE.\n", + "\n", + "ALTHOUGH THE FIAT OF THE PEOPLE HAS GONE FORTH PROCLAIMING ME THE CHIEF MAGISTRATE OF THIS GLORIOUS UNION, NOTHING UPON THEIR PART REMAINING TO BE DONE, IT MAY BE THOUGHT THAT A MOTIVE MAY EXIST TO KEEP UP THE DELUSION UNDER WHICH THEY MAY BE SUPPOSED TO HAVE ACTED IN RELATION TO MY PRINCIPLES AND OPINIONS; AND PERHAPS THERE MAY BE SOME IN THIS ASSEMBLY WHO HAVE COME HERE EITHER PREPARED TO CONDEMN THOSE I SHALL NOW DELIVER, OR, APPROVING THEM, TO DOUBT THE SINCERITY WITH WHICH THEY ARE NOW UTTERED\n", + "\n" + ] + } + ], + "source": [ + "def getFirstSentenceContaining(ngram, content):\n", + " #print(ngram)\n", + " sentences = content.upper().split(\". \")\n", + " for sentence in sentences: \n", + " if ngram in sentence:\n", + " return sentence+'\\n'\n", + " return \"\"\n", + "\n", + "\n", + "print(getFirstSentenceContaining('EXCLUSIVE METALLIC CURRENCY', content))\n", + "print(getFirstSentenceContaining('EXECUTIVE DEPARTMENT', content))\n", + "print(getFirstSentenceContaining('GENERAL GOVERNMENT', content))\n", + "print(getFirstSentenceContaining('CALLED UPON', content))\n", + "print(getFirstSentenceContaining('CHIEF MAGISTRATE', content))" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "I know the ruling passion of the source in the several Cantons , must be proper efforts for one of its theory , in no very cause , is termed 'monarchy' in which our Government , it finds no member of those collected in the Constitution can be , and eventually its pristine health and strengthens with each other of its disposal . A calamity so gloriously contended . It existed but free operations upon the act as the fact of another can be the accountable agent , if errors had been drawn as fatal consequences will . Jefferson forbidding their\n" + ] + } + ], + "source": [ + "from urllib.request import urlopen\n", + "from random import randint\n", + "\n", + "def wordListSum(wordList):\n", + " sum = 0\n", + " for word, value in wordList.items():\n", + " sum += value\n", + " return sum\n", + "\n", + "def retrieveRandomWord(wordList):\n", + " randIndex = randint(1, wordListSum(wordList))\n", + " for word, value in wordList.items():\n", + " randIndex -= value\n", + " if randIndex <= 0:\n", + " return word\n", + "\n", + "def buildWordDict(text):\n", + " # Remove newlines and quotes\n", + " text = text.replace('\\n', ' ');\n", + " text = text.replace('\"', '');\n", + "\n", + " # Make sure punctuation marks are treated as their own \"words,\"\n", + " # so that they will be included in the Markov chain\n", + " punctuation = [',','.',';',':']\n", + " for symbol in punctuation:\n", + " text = text.replace(symbol, ' {} '.format(symbol));\n", + "\n", + " words = text.split(' ')\n", + " # Filter out empty words\n", + " words = [word for word in words if word != '']\n", + "\n", + " wordDict = {}\n", + " for i in range(1, len(words)):\n", + " if words[i-1] not in wordDict:\n", + " # Create a new dictionary for this word\n", + " wordDict[words[i-1]] = {}\n", + " if words[i] not in wordDict[words[i-1]]:\n", + " wordDict[words[i-1]][words[i]] = 0\n", + " wordDict[words[i-1]][words[i]] += 1\n", + " return wordDict\n", + "\n", + "text = str(urlopen('http://pythonscraping.com/files/inaugurationSpeech.txt')\n", + " .read(), 'utf-8')\n", + "wordDict = buildWordDict(text)\n", + "\n", + "#Generate a Markov chain of length 100\n", + "length = 100\n", + "chain = ['I']\n", + "for i in range(0, length):\n", + " newWord = retrieveRandomWord(wordDict[chain[-1]])\n", + " chain.append(newWord)\n", + "\n", + "print(' '.join(chain))" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "/wiki/Kevin_Bacon\n", + "/wiki/San_Diego_Comic-Con\n", + "/wiki/Harvey_Kurtzman\n", + "/wiki/Monty_Python\n" + ] + } + ], + "source": [ + "import pymysql\n", + "\n", + "conn = pymysql.connect(host='127.0.0.1', unix_socket='/tmp/mysql.sock', user='root', passwd='root', db='mysql', charset='utf8')\n", + "cur = conn.cursor()\n", + "cur.execute('USE wikipedia')\n", + "\n", + "def getUrl(pageId):\n", + " cur.execute('SELECT url FROM pages WHERE id = %s', (int(pageId)))\n", + " return cur.fetchone()[0]\n", + "\n", + "def getLinks(fromPageId):\n", + " cur.execute('SELECT toPageId FROM links WHERE fromPageId = %s', (int(fromPageId)))\n", + " if cur.rowcount == 0:\n", + " return []\n", + " return [x[0] for x in cur.fetchall()]\n", + "\n", + "def searchBreadth(targetPageId, paths=[[1]]):\n", + " newPaths = []\n", + " for path in paths:\n", + " links = getLinks(path[-1])\n", + " for link in links:\n", + " if link == targetPageId:\n", + " return path + [link]\n", + " else:\n", + " newPaths.append(path+[link])\n", + " return searchBreadth(targetPageId, newPaths)\n", + " \n", + "nodes = getLinks(1)\n", + "targetPageId = 16642\n", + "pageIds = searchBreadth(targetPageId)\n", + "for pageId in pageIds:\n", + " print(getUrl(pageId))" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.6.1" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/v2/Chapter10-CrawlingThroughFormsAndLogins.ipynb b/v2/Chapter10-CrawlingThroughFormsAndLogins.ipynb new file mode 100644 index 0000000..3f082b0 --- /dev/null +++ b/v2/Chapter10-CrawlingThroughFormsAndLogins.ipynb @@ -0,0 +1,554 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Hello there, Ryan Mitchell!\n" + ] + } + ], + "source": [ + "import requests\n", + "\n", + "params = {'firstname': 'Ryan', 'lastname': 'Mitchell'}\n", + "r = requests.post(\"http://pythonscraping.com/pages/processing.php\", data=params)\n", + "print(r.text)" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " \n", + "\tO’Reilly Media - Email Subscription Center\n", + "\n", + " \n", + " \n", + "\n", + " \n", + "\n", + "\t\n", + " \n", + "\n", + " \n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\t
\n", + "\n", + "\t
\n", + "
\n", + " \t\t
\n", + " \t\t\t

Your Email Subscription

\n", + "\n", + " \n", + "\n", + " \t\t\t

We want to stay in touch, but only in ways that you find helpful. Select your preferences by using the form below and saving your changes.

\n", + "\n", + "

You’re Almost Finished

\n", + "\n", + "

One more click and you’ll be all set. To confirm your subscription, please add to your profile below, or simply confirm by clicking this button:

\n", + "\n", + " \n", + "
\n", + " \n", + "
\n", + "\n", + "

Complete Your Profile

\n", + "
\n", + "
\n", + "\t\n", + "\tryan.e.mitchell@gmail.com   (Not ryan.e.mitchell@gmail.com?)\n", + "\t
\n", + "
\n", + "
\n", + " \n", + "\n", + "
\n", + "\n", + "
\n", + " \n", + "\n", + "
\n", + "
\n", + " \t\t
\n", + "\n", + " \t\t
\n", + "

Choose Your Email Preferences

\n", + "\n", + "
\n", + " \t\t\t

Training

\n", + " \n", + "\n", + " \t\t\t

Webcasts

\n", + " \n", + "\n", + " \t\t\t

Product and Promotion Alerts

\n", + "
\n", + " Business & Leadership\n", + " Data\n", + " Design\n", + " Digital Photography\n", + " DIY\n", + " Game Design & Development\n", + " IoT\n", + " Linux & Unix\n", + " Math and Science\n", + " Mobile Design & Development\n", + "
\n", + "\n", + " \n", + "
\n", + "\n", + "
\n", + " \t\t\t

Newsletters

\n", + "
\n", + " Artifical Intelligence\n", + " Data\n", + " Design\n", + " FinTech\n", + " Four short links\n", + " Next:Economy\n", + " Programming\n", + " Security\n", + " Systems Engineering and Operations\n", + " Web\n", + " \t
\n", + "\n", + "\n", + "

Conference Bulletins

\n", + " \n", + "\n", + "
\n", + "\n", + " \n", + "\n", + " \n", + "\n", + " \n", + "\n", + " \n", + "\n", + " \n", + "\n", + " \n", + "\n", + " \n", + "\n", + " \n", + "\n", + " \n", + "\n", + " \n", + "\n", + " \n", + "\n", + " \n", + "\n", + " \n", + "\n", + " \n", + "\n", + " \n", + "\n", + " \n", + "\n", + " \n", + "\n", + " \n", + "\n", + " \n", + "\n", + " \n", + "\n", + " \n", + "\n", + " \n", + "\n", + " \n", + "\n", + " \n", + "\n", + " \n", + "\n", + " \n", + "\n", + " \n", + "\n", + " \n", + "\n", + " \n", + "\n", + " \n", + "\n", + "\n", + " \n", + "\n", + " \n", + "\n", + " \n", + "\n", + " \n", + "\n", + " \n", + "\n", + " \n", + "\n", + " \n", + "\n", + " \n", + "\n", + " \n", + "\n", + " \n", + "\n", + " \n", + "\n", + " \n", + "\n", + " \n", + "\n", + " \n", + "\n", + "
\n", + "
\n", + "

Scroll to manage all subscription options.

\n", + "
\n", + "
\n", + "
\n", + " \n", + "
\n", + "\n", + "

We take your privacy seriously and will not sell or distribute your email.

\n", + " \n", + "\t\t
\n", + " \n", + "
\n", + "\t
\n", + "\n", + "\t\n", + "\n", + " \n", + "\n", + " \n", + "\n", + "\n", + "\n", + "\n", + "\n" + ] + } + ], + "source": [ + "import requests\n", + "params = {'email_addr': 'ryan.e.mitchell@gmail.com'}\n", + "r = requests.post(\"http://post.oreilly.com/client/o/oreilly/forms/quicksignup.cgi\",\n", + " data=params)\n", + "print(r.text)" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "ename": "FileNotFoundError", + "evalue": "[Errno 2] No such file or directory: 'files/Python-logo.png'", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mFileNotFoundError\u001b[0m Traceback (most recent call last)", + "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[1;32m 1\u001b[0m \u001b[0;32mimport\u001b[0m \u001b[0mrequests\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 2\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 3\u001b[0;31m \u001b[0mfiles\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m{\u001b[0m\u001b[0;34m'uploadFile'\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0mopen\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'files/Python-logo.png'\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m'rb'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m}\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 4\u001b[0m \u001b[0mr\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mrequests\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mpost\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'http://pythonscraping.com/pages/processing2.php'\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mfiles\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mfiles\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 5\u001b[0m \u001b[0mprint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mr\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mtext\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;31mFileNotFoundError\u001b[0m: [Errno 2] No such file or directory: 'files/Python-logo.png'" + ] + } + ], + "source": [ + "import requests\n", + "\n", + "files = {'uploadFile': open('files/Python-logo.png', 'rb')}\n", + "r = requests.post('http://pythonscraping.com/pages/processing2.php', files=files)\n", + "print(r.text)" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Cookie is set to:\n", + "{'loggedin': '1', 'username': 'Ryan'}\n", + "-----------\n", + "Going to profile page...\n", + "Hey Ryan! Looks like you're still logged into the site!\n" + ] + } + ], + "source": [ + "import requests\n", + "\n", + "params = {'username': 'Ryan', 'password': 'password'}\n", + "r = requests.post('http://pythonscraping.com/pages/cookies/welcome.php', params)\n", + "print('Cookie is set to:')\n", + "print(r.cookies.get_dict())\n", + "print('Going to profile page...')\n", + "r = requests.get('http://pythonscraping.com/pages/cookies/profile.php', \n", + " cookies=r.cookies)\n", + "print(r.text)" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Cookie is set to:\n", + "{'loggedin': '1', 'username': 'username'}\n", + "Going to profile page...\n", + "Hey username! Looks like you're still logged into the site!\n" + ] + } + ], + "source": [ + "import requests\n", + "\n", + "session = requests.Session()\n", + "\n", + "params = {'username': 'username', 'password': 'password'}\n", + "s = session.post('http://pythonscraping.com/pages/cookies/welcome.php', params)\n", + "print(\"Cookie is set to:\")\n", + "print(s.cookies.get_dict())\n", + "print('Going to profile page...')\n", + "s = session.get('http://pythonscraping.com/pages/cookies/profile.php')\n", + "print(s.text)" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "

Hello ryan.

You entered password as your password.

\n" + ] + } + ], + "source": [ + "import requests\n", + "from requests.auth import AuthBase\n", + "from requests.auth import HTTPBasicAuth\n", + "\n", + "auth = HTTPBasicAuth('ryan', 'password')\n", + "r = requests.post(url='http://pythonscraping.com/pages/auth/login.php', auth=\n", + " auth)\n", + "print(r.text)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.6.1" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/v2/Chapter11-JavaScript.ipynb b/v2/Chapter11-JavaScript.ipynb new file mode 100644 index 0000000..f550269 --- /dev/null +++ b/v2/Chapter11-JavaScript.ipynb @@ -0,0 +1,107 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Timing out after 10 seconds and returning\n", + "\n", + "The Destination Page!\n", + "\n", + "\n", + "\n", + "This is the page you are looking for!\n", + "\n", + "\n" + ] + } + ], + "source": [ + "from selenium import webdriver\n", + "import time\n", + "from selenium.webdriver.remote.webelement import WebElement\n", + "from selenium.common.exceptions import StaleElementReferenceException\n", + "\n", + "def waitForLoad(driver):\n", + " elem = driver.find_element_by_tag_name(\"html\")\n", + " count = 0\n", + " while True:\n", + " count += 1\n", + " if count > 20:\n", + " print(\"Timing out after 10 seconds and returning\")\n", + " return\n", + " time.sleep(.5)\n", + " try:\n", + " elem == driver.find_element_by_tag_name(\"html\")\n", + " except StaleElementReferenceException:\n", + " return\n", + "\n", + "driver = webdriver.PhantomJS(executable_path='drivers/phantomjs/phantomjs-2.1.1-macosx/bin/phantomjs')\n", + "driver.get(\"http://pythonscraping.com/pages/javascript/redirectDemo1.html\")\n", + "waitForLoad(driver)\n", + "print(driver.page_source)" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "This is the page you are looking for!\n" + ] + } + ], + "source": [ + "from selenium.webdriver.common.by import By\n", + "from selenium.webdriver.support.ui import WebDriverWait\n", + "from selenium.webdriver.support import expected_conditions as EC\n", + "from selenium.common.exceptions import TimeoutException\n", + "\n", + "driver = webdriver.PhantomJS(executable_path='drivers/phantomjs/phantomjs-2.1.1-macosx/bin/phantomjs')\n", + "driver.get('http://pythonscraping.com/pages/javascript/redirectDemo1.html')\n", + "try:\n", + " bodyElement = WebDriverWait(driver, 15).until(EC.presence_of_element_located((By.XPATH, '//body[contains(text(), \"This is the page you are looking for!\")]')))\n", + " print(bodyElement.text)\n", + "except TimeoutException:\n", + " print('Did not find the element')\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.6.1" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/v2/Chapter12-API-Scraping.ipynb b/v2/Chapter12-API-Scraping.ipynb new file mode 100644 index 0000000..13fcb96 --- /dev/null +++ b/v2/Chapter12-API-Scraping.ipynb @@ -0,0 +1,34 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.6.1" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/v2/Chapter13-ImageProcessing.ipynb b/v2/Chapter13-ImageProcessing.ipynb new file mode 100644 index 0000000..d2232fa --- /dev/null +++ b/v2/Chapter13-ImageProcessing.ipynb @@ -0,0 +1,562 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "{'level': [1, 2, 3, 4, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 4, 5, 5, 5, 5, 5, 5], 'page_num': [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], 'block_num': [0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], 'par_num': [0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], 'line_num': [0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2], 'word_num': [0, 0, 0, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 0, 1, 2, 3, 4, 5, 6], 'left': [0, 23, 23, 23, 23, 76, 99, 164, 215, 295, 317, 378, 425, 467, 500, 555, 23, 23, 140, 198, 239, 304, 407], 'top': [0, 26, 26, 26, 26, 26, 30, 26, 26, 26, 26, 26, 26, 26, 26, 26, 54, 55, 55, 59, 59, 55, 54], 'width': [600, 555, 555, 555, 44, 15, 57, 42, 70, 15, 52, 40, 32, 24, 45, 23, 513, 107, 49, 32, 57, 92, 129], 'height': [103, 51, 51, 22, 17, 17, 13, 21, 17, 17, 21, 17, 17, 17, 17, 22, 23, 17, 17, 13, 13, 22, 23], 'conf': [-1, -1, -1, -1, 86, 86, 86, 73, 82, 95, 73, 80, 95, 85, 87, 85, -1, 82, 91, 86, 86, 86, 65], 'text': ['', '', '', '', 'This', 'is', 'some', 'text,', 'written', 'in', 'Arial,', 'that', 'will', 'be', 'read', 'by', '', 'Tesseract.', 'Here', 'are', 'some', 'symbols:', '!@#$%\"&‘()']}\n", + "b'This is some text, written in Arial, that will be read by\\nTesseract. Here are some symbols: !@#$%\"&\\xe2\\x80\\x98()\\n\\n'\n" + ] + } + ], + "source": [ + "from PIL import Image\n", + "import pytesseract\n", + "from pytesseract import Output\n", + "\n", + "print(pytesseract.image_to_data(Image.open('files/textOriginal.png'), output_type=Output.DICT))\n", + "print(pytesseract.image_to_string(Image.open('files/textOriginal.png'), output_type=Output.BYTES))\n" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "2.2803508502\n", + "100.0\n" + ] + } + ], + "source": [ + "import numpy as np\n", + "\n", + "numbers = [100, 102, 98, 97, 103]\n", + "print(np.std(numbers))\n", + "print(np.mean(numbers))" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "ThIS IS some (ext written In Anal, that will be read by\n", + "Tesseract Here are some symbols: l@#$%\"&'()\n" + ] + } + ], + "source": [ + "from PIL import Image\n", + "import pytesseract\n", + "\n", + "def cleanFile(filePath, newFilePath):\n", + " image = Image.open(filePath)\n", + "\n", + " #Set a threshold value for the image, and save\n", + " image = image.point(lambda x: 0 if x<143 else 255)\n", + " image.save(newFilePath)\n", + " return image\n", + "\n", + "image = cleanFile(\"files/textBad.png\", \"files/textCleaned.png\")\n", + "\n", + "#call tesseract to do OCR on the newly created image\n", + "print(pytesseract.image_to_string(image))" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "This is some text, written in Arial, that will be read by\n", + "Tesseract. Here are some symbols: !@#$%\"&‘()\n", + "\n", + "\n" + ] + } + ], + "source": [ + "from PIL import Image\n", + "import subprocess\n", + "\n", + "def cleanFile(filePath, newFilePath):\n", + " image = Image.open(filePath)\n", + "\n", + " #Set a threshold value for the image, and save\n", + " image = image.point(lambda x: 0 if x<135 else 255)\n", + " image.save(newFilePath)\n", + "\n", + " #call tesseract to do OCR on the newly created image\n", + " subprocess.call([\"tesseract\", newFilePath, \"output\"])\n", + " \n", + " #Open and read the resulting data file\n", + " outputFile = open(\"output.txt\", 'r')\n", + " print(outputFile.read())\n", + " outputFile.close()\n", + "\n", + "cleanFile(\"files/textOriginal.png\", \"files/text_2.png\")" + ] + }, + { + "cell_type": "code", + "execution_count": 26, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "threshold: 80, confidence: 61.8333333333 numChars 18\n", + "threshold: 85, confidence: 64.9130434783 numChars 23\n", + "threshold: 90, confidence: 62.2564102564 numChars 39\n", + "threshold: 95, confidence: 64.5135135135 numChars 37\n", + "threshold: 100, confidence: 60.7878787879 numChars 66\n", + "threshold: 105, confidence: 61.9078947368 numChars 76\n", + "threshold: 110, confidence: 64.6329113924 numChars 79\n", + "threshold: 115, confidence: 69.7397260274 numChars 73\n", + "threshold: 120, confidence: 72.9078947368 numChars 76\n", + "threshold: 125, confidence: 73.582278481 numChars 79\n", + "threshold: 130, confidence: 75.6708860759 numChars 79\n", + "threshold: 135, confidence: 76.8292682927 numChars 82\n", + "threshold: 140, confidence: 72.1686746988 numChars 83\n", + "threshold: 145, confidence: 75.5662650602 numChars 83\n", + "threshold: 150, confidence: 77.5443037975 numChars 79\n", + "threshold: 155, confidence: 79.1066666667 numChars 75\n", + "threshold: 160, confidence: 78.4666666667 numChars 75\n", + "threshold: 165, confidence: 80.1428571429 numChars 70\n", + "threshold: 170, confidence: 78.4285714286 numChars 70\n", + "threshold: 175, confidence: 76.3731343284 numChars 67\n", + "threshold: 180, confidence: 76.7575757576 numChars 66\n", + "threshold: 185, confidence: 79.4920634921 numChars 63\n", + "threshold: 190, confidence: 76.0793650794 numChars 63\n", + "threshold: 195, confidence: 70.6153846154 numChars 65\n" + ] + } + ], + "source": [ + "import pytesseract\n", + "from pytesseract import Output\n", + "from PIL import Image\n", + "import numpy as np\n", + "\n", + "def cleanFile(filePath, threshold):\n", + " image = Image.open(filePath)\n", + " #Set a threshold value for the image, and save\n", + " image = image.point(lambda x: 0 if x -1:\n", + " confidences.append(data['conf'][i])\n", + " numChars.append(len(text[i]))\n", + " \n", + " return np.average(confidences, weights=numChars), sum(numChars)\n", + " \n", + "filePath = \"files/textBad.png\"\n", + "\n", + "start = 80\n", + "step = 5\n", + "end = 200\n", + "\n", + "for threshold in range(start, end, step):\n", + " image = cleanFile(filePath, threshold)\n", + " scores = getConfidence(image)\n", + " print(\"threshold: \"+str(threshold)+\", confidence: \"+str(scores[0])+\" numChars \"+str(scores[1]))\n" + ] + }, + { + "cell_type": "code", + "execution_count": 35, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "CLICKED\n", + "Found image: https://d1b14unh5d6w7g.cloudfront.net/1534770720.01.S003.LXXXXXXX.jpg?Expires=1516142762&Signature=Gfh/IgAyS6fXTja9Kw0CvSoCxp9YBjdOzwuBCURL5fQEw3E3NVHJGQC2AYyaPstELbbRbkAGiThdxboDus+DoEUaOa2NtK4o9pbB8hD+JOlGAzJPNOzM3ckqmADcerLg1EFickty4BxuskEwATkv53mmNxbn04zHkaTw3pVPiOU=&Key-Pair-Id=APKAIUO27P366FGALUMQ\n", + "\\i\n", + "\n", + "anrluhled Mmenzl\n", + "\n", + "Copyright © 2016 by s M. Holden\n", + "All rights reserved.\n", + "lSBN-13:978»1534770720\n", + "lSBN-IO: 1534770720\n", + "\n", + "anrluhled Mmenzl\n", + "\n", + "\n", + "Found image: https://d1b14unh5d6w7g.cloudfront.net/1534770720.01.S005.LXXXXXXX.jpg?Expires=1516142770&Signature=VOPuiRcBMO/0IUpVbnsJtMf8RnKojxdqYqhmJ0TA/2YMDQeb8NeazpO6QcqBj6w1ojY7ATMmQSQ7sTgLVeX7vmiCQ6cf/Ew1rZzq+45FyoZ2efnRl2AuuNrnpmgu75csX8dcwrq/l5F7c+tzdw3Om5wBEj9br7JjETYOAsLZ+pY=&Key-Pair-Id=APKAIUO27P366FGALUMQ\n", + "anrluhled Mmenzl\n", + "\n", + "Ben-Hux by Lew Wallace\n", + "Three 5mm by thn Dos Passm\n", + "Hean or Darkness by Joseph Conrad\n", + "Lnrd Iirn by JMPh Conrad\n", + "Cap|am Blood by Ralael Sabauni\n", + "The Golden Bough by James G. mm\n", + "The Pnsoher of Zenda by Amhony Hope\n", + "Heretics by 5.x, Chesterton\n", + "Crime and Punishment by Fyodor Dbsmyeysky\n", + "Sherlock Holmee, His L35! Bow by Sir Arthur Conan Doyle\n", + "The mum by Fyodor Dosmyevsky\n", + "Th2 innocence of Father Brown by GK. Chemmn\n", + "The Wisdom of Falher Brown by GK, Cheskenon\n", + "Wukhcring Hughes by Emily Bronte\n", + "or Human Bondage by w. Svmexsel Maugham\n", + "Ohm Twist by Chaxlcs Dickens\n", + "Davxd Copperfield by Chaxles Dickens\n", + "Moby Dick by Herman Melville\n", + "\n", + "LARGE PRINT CLASSICS\n", + "\n", + "Vish uur webyite at\n", + "www.summikclaisicpress.mm\n", + "to view our growing Imeup hr Smmml Classic ngg Prim\n", + "de/ums and our complete calalog 01 classic and vintage books\n", + "\n", + "Alsa mrm avuM/Ihle,.\n", + "LARGE PRINT MYSTERIES\n", + "\n", + "uh. smite collection of Summil Classic Mysteries, mmplem\n", + "and unabridge-‘L in large prim edinom.\n", + "\n", + "anrluhled Mmenzl\n", + "\n", + "\n", + "Found image: https://d1b14unh5d6w7g.cloudfront.net/1534770720.01.S003.LXXXXXXX.jpg?Expires=1516142762&Signature=Gfh/IgAyS6fXTja9Kw0CvSoCxp9YBjdOzwuBCURL5fQEw3E3NVHJGQC2AYyaPstELbbRbkAGiThdxboDus+DoEUaOa2NtK4o9pbB8hD+JOlGAzJPNOzM3ckqmADcerLg1EFickty4BxuskEwATkv53mmNxbn04zHkaTw3pVPiOU=&Key-Pair-Id=APKAIUO27P366FGALUMQ\n", + "Found image: https://d1b14unh5d6w7g.cloudfront.net/1534770720.01.S005.LXXXXXXX.jpg?Expires=1516142770&Signature=VOPuiRcBMO/0IUpVbnsJtMf8RnKojxdqYqhmJ0TA/2YMDQeb8NeazpO6QcqBj6w1ojY7ATMmQSQ7sTgLVeX7vmiCQ6cf/Ew1rZzq+45FyoZ2efnRl2AuuNrnpmgu75csX8dcwrq/l5F7c+tzdw3Om5wBEj9br7JjETYOAsLZ+pY=&Key-Pair-Id=APKAIUO27P366FGALUMQ\n", + "Found image: https://d1b14unh5d6w7g.cloudfront.net/1534770720.01.S006.LXXXXXXX.jpg?Expires=1516142781&Signature=Gnj3fJz37cYkPlj4ZobugITgSoY/xYuRCiQDzcAvPdo+GTStF0k7Xsyxq2LZZhmLXoJJKDb9vo3MsrekyAM+NmRFeMhsXi63gOjMNRG1tP+oddjYIYtQmjasWOd1jxkqr/1J/zgCWGMV4kJR7+erMHe+yVAUPOwNTHlFtjHZkUI=&Key-Pair-Id=APKAIUO27P366FGALUMQ\n", + "anrluhled Mmenzl\n", + "\n", + "Publisher's Note\n", + "\n", + "This edition is not an eleclronic scan or reproduction. The\n", + "text has been formalled and edited by human edilors based on\n", + "the I9I5 translation by Eva Martin, the widely—nvailnble\n", + "\"classic\" English version. We have retained antiquahed and\n", + "occasionally inconsistent spellings. puncmation and the like to\n", + "preserve the inlegrily oflhe original work, rather than alter Ihe\n", + "material to conform to modern American convenlions.\n", + "\n", + "Only obvious typogmphical errors have been corrected.\n", + "Where the author made use of \"phoneme\" spelling to convey\n", + "the pronunciation of words by various chamolers, these\n", + "spellings have been Iefi in Ihe original form. The original was\n", + "occasionally inconsistent in the style of punctuation, and\n", + "without substituting our preferences for those oflhe aulhor or\n", + "the origmal editors, we have rammed original punctuation\n", + "unless obviously a simple typographical error,\n", + "\n", + "Translated works Can present challenges in preparing a book\n", + "as text, ralher than a reproduclion or facsimile of an earlier\n", + "versmn. Spelling; particularly the names of people and\n", + "places, can vary from one work to anotherv and even within a\n", + "single work, The author's name, for Example, commonly\n", + "appears as either \"Dosloyavsky\" or \"Dostoevsky.\" and olher\n", + "variations appear occasionally. \"Dosmyevsky\" is the most\n", + "common variant, and we have used this spelling consistenlly\n", + "throughout, even Ihough some of the introductory\n", + "commenlaryv drawn fmm other source; originally used\n", + "\"Doslocvsky.\" We havc nm ancmptcd lo harmonizc those few\n", + "inconsistent placc-name spellings which are only in ‘denlal lo\n", + "the content. Further, we have adopted the \"stands ' or most\n", + "widely-used spelling oflhe names of cenain major characters\n", + "\n", + " \n", + "\n", + "anrluhled Mmenzl\n", + "\n", + "\n", + "Found image: https://d1b14unh5d6w7g.cloudfront.net/1534770720.01.S007.LXXXXXXX.jpg?Expires=1516142792&Signature=aHvypX4/mmWHgUYAuwLChjH+wcTUj1T4+xOd7wWDl2EZ27FmwDdcsEHGfF2WkHyJ2h7zg+sZUFdlItkMC1qa1xqkZI11sAm1wjJtZwj+kVdTmT5B75v8S3Z90WJNkhrklvE/YMlimTqFQIrEOdodEtKxiB67Y9f17xrZpjwfT68=&Key-Pair-Id=APKAIUO27P366FGALUMQ\n", + "anrluhled Material\n", + "\n", + "1hmughoult\n", + "\n", + "On another level, translated wurks always suffer 10 some\n", + "extent from meaning which is \"lost in translation,\" sometimes\n", + "resulting in difficulues for readers. Dostoyevsky's seemtngly\n", + "inconsistent dtalog, which varies in length and complexity of\n", + "sentence structure, vocabulary and style. when read in the\n", + "original Russian hy native spcakers oflhe language, is, rather\n", + "than \"incansiqent,\" a gum: Io recognizable character trailst\n", + "\n", + "The main text for this edition fmthfully follows the 1915\n", + "lmnslatinn. Th: \"Biographical Note\" is excerpted fram the\n", + "1917 P. F Collier & Son edition of Crime and Punishment.\n", + "The \"cm sms and Interpretations\" are from the sources\n", + "cited wilh each excerpt.\n", + "\n", + "The text for Ibis volume was edited by SM. Holden. wnh\n", + "book and cover design and publicalion preparalion servtces by\n", + "Summit Classic Press ofAkmn, Ohio.\n", + "\n", + "The cover image for Ihis edition is ”Porlrait of Fedor\n", + "Dostoyevsky\" painted in 1872 by Vasily Perov (183371882).\n", + "The original is an oil on canvas portrait measuring 39 inchcs\n", + "high by 31,7 inches wide which currently hangs in [he\n", + "Tretyakov Gallery in Moscow.\n", + "\n", + " \n", + "\n", + "v1\n", + "anrluhled Material\n", + "\n", + "\n", + "Found image: https://d1b14unh5d6w7g.cloudfront.net/1534770720.01.S005.LXXXXXXX.jpg?Expires=1516142770&Signature=VOPuiRcBMO/0IUpVbnsJtMf8RnKojxdqYqhmJ0TA/2YMDQeb8NeazpO6QcqBj6w1ojY7ATMmQSQ7sTgLVeX7vmiCQ6cf/Ew1rZzq+45FyoZ2efnRl2AuuNrnpmgu75csX8dcwrq/l5F7c+tzdw3Om5wBEj9br7JjETYOAsLZ+pY=&Key-Pair-Id=APKAIUO27P366FGALUMQ\n", + "Found image: https://d1b14unh5d6w7g.cloudfront.net/1534770720.01.S006.LXXXXXXX.jpg?Expires=1516142781&Signature=Gnj3fJz37cYkPlj4ZobugITgSoY/xYuRCiQDzcAvPdo+GTStF0k7Xsyxq2LZZhmLXoJJKDb9vo3MsrekyAM+NmRFeMhsXi63gOjMNRG1tP+oddjYIYtQmjasWOd1jxkqr/1J/zgCWGMV4kJR7+erMHe+yVAUPOwNTHlFtjHZkUI=&Key-Pair-Id=APKAIUO27P366FGALUMQ\n", + "Found image: https://d1b14unh5d6w7g.cloudfront.net/1534770720.01.S007.LXXXXXXX.jpg?Expires=1516142792&Signature=aHvypX4/mmWHgUYAuwLChjH+wcTUj1T4+xOd7wWDl2EZ27FmwDdcsEHGfF2WkHyJ2h7zg+sZUFdlItkMC1qa1xqkZI11sAm1wjJtZwj+kVdTmT5B75v8S3Z90WJNkhrklvE/YMlimTqFQIrEOdodEtKxiB67Y9f17xrZpjwfT68=&Key-Pair-Id=APKAIUO27P366FGALUMQ\n", + "Found image: https://d1b14unh5d6w7g.cloudfront.net/1534770720.01.S008.LXXXXXXX.jpg?Expires=1516142800&Signature=f90jYcaaO5s1fkcxsyi66c1yMeUxE6JRSL02fa+2Vz2GcIPqUgeNVADzc2/7f93wokwOWlRCNxH9r8Pwco7qBJvoKjZObEBOqi8ftOtOJHixu4dJTPQ0hWoHNrkaRMpch10q9Ztd/xftF7McioBe5/SQLBNQuc76TaDMkuXbCG8=&Key-Pair-Id=APKAIUO27P366FGALUMQ\n", + "anrluhled Maternal\n", + "\n", + "BIOGRAPHICAL NOTE\n", + "\n", + "FYODOR MIKHAILOVITCH DOSTOYEVSKY Was born\n", + "at Mascaw on October 30» I821, Ihe son of a milimy\n", + "surgeon. He was educated in his native city and an the School\n", + "of Military Engineering an 51. Pexersburg from which he\n", + "graduated in 1843 with Ihe grade of sub-lieutenanl. The\n", + "atlracuon of literature led him to give up the career that lay\n", + "open to him, and he entered instead upon a long struggle wnh\n", + "poverty.\n", + "\n", + "His first book» Paar Folks (1846). though obviously\n", + "influenced by Gogol, was recognized by Ihe critics as Ihe\n", + "work or an nfiginal genius, and he became a regular\n", + "contributor to a monthly magazine, \"Annals ohhe Country\".\n", + "He is said to have undertaken [en new novels at once. and was\n", + "cerlamly workmg at a terrific pace when a sudden hall was\n", + "called. He had joined Ihe circle of a polilical agitator.\n", + "Pelrachevskl, and had been taking pan in its ralher harmless\n", + "discussions on polnicnl ecnnnmy, when the susplclnns ohhe\n", + "police were amused and he, wi|h his bmther and shiny\n", + "cnmrades, was arrested in April 1349» and thrown into (he\n", + "fortress of SI. Peler and St. Paul in St. Pelersburg. where he\n", + "wrote h|s story, \"A Little Hero.\" On December 22d, he and\n", + "twcnty—onc others were conductcd lo the fool ofa scaffold in\n", + "the Simonovsky Squarc, and told to prepare for death. Bm\n", + "bcfore lhc sentencc was executcd, as they stood in Iheir shins\n", + "in ma bitter December weather, i! was announced that hheir\n", + "penahy was commuted Io exile in Siberia. 0n Chrisxmas Eve\n", + "he started on his Joumey, and the next four years were spent\n", + "among convicts in a prison a! Omsk. He has described his\n", + "\n", + "vih\n", + "Cnrrynuhleu Material\n", + "\n", + "\n", + "Found image: https://d1b14unh5d6w7g.cloudfront.net/1534770720.01.S005.LXXXXXXX.jpg?Expires=1516142770&Signature=VOPuiRcBMO/0IUpVbnsJtMf8RnKojxdqYqhmJ0TA/2YMDQeb8NeazpO6QcqBj6w1ojY7ATMmQSQ7sTgLVeX7vmiCQ6cf/Ew1rZzq+45FyoZ2efnRl2AuuNrnpmgu75csX8dcwrq/l5F7c+tzdw3Om5wBEj9br7JjETYOAsLZ+pY=&Key-Pair-Id=APKAIUO27P366FGALUMQ\n", + "Found image: https://d1b14unh5d6w7g.cloudfront.net/1534770720.01.S006.LXXXXXXX.jpg?Expires=1516142781&Signature=Gnj3fJz37cYkPlj4ZobugITgSoY/xYuRCiQDzcAvPdo+GTStF0k7Xsyxq2LZZhmLXoJJKDb9vo3MsrekyAM+NmRFeMhsXi63gOjMNRG1tP+oddjYIYtQmjasWOd1jxkqr/1J/zgCWGMV4kJR7+erMHe+yVAUPOwNTHlFtjHZkUI=&Key-Pair-Id=APKAIUO27P366FGALUMQ\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Found image: https://d1b14unh5d6w7g.cloudfront.net/1534770720.01.S007.LXXXXXXX.jpg?Expires=1516142792&Signature=aHvypX4/mmWHgUYAuwLChjH+wcTUj1T4+xOd7wWDl2EZ27FmwDdcsEHGfF2WkHyJ2h7zg+sZUFdlItkMC1qa1xqkZI11sAm1wjJtZwj+kVdTmT5B75v8S3Z90WJNkhrklvE/YMlimTqFQIrEOdodEtKxiB67Y9f17xrZpjwfT68=&Key-Pair-Id=APKAIUO27P366FGALUMQ\n", + "Found image: https://d1b14unh5d6w7g.cloudfront.net/1534770720.01.S008.LXXXXXXX.jpg?Expires=1516142800&Signature=f90jYcaaO5s1fkcxsyi66c1yMeUxE6JRSL02fa+2Vz2GcIPqUgeNVADzc2/7f93wokwOWlRCNxH9r8Pwco7qBJvoKjZObEBOqi8ftOtOJHixu4dJTPQ0hWoHNrkaRMpch10q9Ztd/xftF7McioBe5/SQLBNQuc76TaDMkuXbCG8=&Key-Pair-Id=APKAIUO27P366FGALUMQ\n", + "Found image: https://d1b14unh5d6w7g.cloudfront.net/1534770720.01.S009.LXXXXXXX.jpg?Expires=1516142810&Signature=cEx45kkP4hodAgCBj3N5P/FK62U48Lr+wsHHTcTFkDt0srEM++eNV1orrtmifYfjhULcuNJiSyeZPgaqO48TlQ9pVsg7tI6GY7yiDRHbWWLrA3KAkohy2TcWtE40swg32NGzzHDloLmHa6ssO4zTR0G4IZp1BzWqhMmNV5cwEmE=&Key-Pair-Id=APKAIUO27P366FGALUMQ\n", + "anrluhled MaienaI\n", + "\n", + "experiences there in his Memories (7/th House nfthe Dead\n", + "(1853) experiences whmh, though frightful 1n Ihe extreme.\n", + "seem I0 have slrenglhened rather than injured him in body and\n", + "mind. though they may have embittered his temper. His\n", + "imprisonmenl was followed by three yeals of compulsory\n", + "military service, during the lasl of which he became an under-\n", + "officer, and manied a widow, Madame Isaiev. He now\n", + "resumed his lilerary careere publishing The Injured and [he\n", + "[mulled in 1860. [n 1862 he visited western Europe, but\n", + "seems to have made little use of his opponunities to study the\n", + "civilization or national character of olher peoples,\n", + "\n", + "He was a confirmed gambler. and 1115 conduct at times\n", + "reduced his wife and himselflo an almosl desperale situation,\n", + "She died in 1863, and in Ihe following year he 1051 his brother\n", + "Michael, who had shared with him the management of a\n", + "periodical. Lefi alnne. he was unable to conduct the business\n", + "affairs connected wilh it, and only the success of Crime and\n", + "Punishment in 1866 rescued him from mine He had now\n", + "reached the height of his powers, and the novels wrilten afier\n", + "this period are generally regarded as showing an increasing\n", + "lack of the proportion and restraint which had never been his\n", + "m any great degree. The mosl important ofihe later works am\n", + "The Idiot (186% The Pammd [1873), The Adult (1875){\n", + "and The Bm/herx Kummuzov (188]). He married as his\n", + "second wife, his slenographer. Anna Grigorevna Svilkine. a\n", + "girl who, though no: h1gh1y educated, was capable and\n", + "devoted: and through her energy his last yeais were passed in\n", + "comfen and comparative prosperiiy, Hc issued periodieany\n", + "\"An Author's Nale-Book\" m which he canlfibuled an amount\n", + "of aulobiographical matter, and through this and mher\n", + "wrhihgs in magazines he exercised a good deal or influence.\n", + "He came finally I0 have a very high position in the popular\n", + "regard. and his death in Fehmary, 1331, brought forth an\n", + "\n", + "V111\n", + "anrluhled MaienaI\n", + "\n", + "\n", + "Found image: https://d1b14unh5d6w7g.cloudfront.net/1534770720.01.S006.LXXXXXXX.jpg?Expires=1516142781&Signature=Gnj3fJz37cYkPlj4ZobugITgSoY/xYuRCiQDzcAvPdo+GTStF0k7Xsyxq2LZZhmLXoJJKDb9vo3MsrekyAM+NmRFeMhsXi63gOjMNRG1tP+oddjYIYtQmjasWOd1jxkqr/1J/zgCWGMV4kJR7+erMHe+yVAUPOwNTHlFtjHZkUI=&Key-Pair-Id=APKAIUO27P366FGALUMQ\n", + "Found image: https://d1b14unh5d6w7g.cloudfront.net/1534770720.01.S009.LXXXXXXX.jpg?Expires=1516142810&Signature=cEx45kkP4hodAgCBj3N5P/FK62U48Lr+wsHHTcTFkDt0srEM++eNV1orrtmifYfjhULcuNJiSyeZPgaqO48TlQ9pVsg7tI6GY7yiDRHbWWLrA3KAkohy2TcWtE40swg32NGzzHDloLmHa6ssO4zTR0G4IZp1BzWqhMmNV5cwEmE=&Key-Pair-Id=APKAIUO27P366FGALUMQ\n", + "Found image: https://d1b14unh5d6w7g.cloudfront.net/1534770720.01.S00C.LXXXXXXX.jpg?Expires=1516142821&Signature=B5ALvVQPnv0DhirF9MxDckuqWDRRWAj/rNojC43UcM7TYFlOustmkwYUZghs4WyGy+OQpkukCRosTo8J9gYG+gHD051eg5L/T10jtW+W3mf+eN53vLEm0dqasf5HWHdjnh/H9dtyLko1D85OLQ6XMtsFUvoabR5E85IBkN3yKGQ=&Key-Pair-Id=APKAIUO27P366FGALUMQ\n", + "anrluhled Mmenzl\n", + "\n", + "CRITICISMS AND INTERPRETATIONS\n", + "\n", + "I. The London Times\n", + "\n", + "THE novels of Dostoyevsky may seem to discover a very\n", + "strange world Io us, in which pump]: talk and act like no one\n", + "that we have ever met. Yet we do run read them because we\n", + "want to hear about these slrange Russian people, so unlike\n", + "ourselves. Rather we read them because xhsy remind us of\n", + "what we had forgouen about ourselves, as 3 seem may\n", + "suddenly remind us of some place or scene not remembered\n", + "since childhood And as WC have no doubt about the truth of\n", + "the memories rccallod by a seem, so we have none aboul\n", + "Dostayevsky's truth\n", + "\n", + "It is slranges like Ihose memorics of childhood, but only\n", + "because ix has been so long sleeping in our minds, He has no\n", + "need Io prove it. and he never tries to do so; he only presenls\n", + "n for our recognition: and we recognize it at once. however\n", + "contrary it may be 10 all that we are accustomed to believe\n", + "about ourselves.\n", + "\n", + "The strangeness of Dostoyevsky's novels lies m his method.\n", + "which is unlike Ihal of other novelists because his inlerest is\n", + "dmmm from meirs. The novel of pure plot is all cancamad\n", + "with success in failure. The hero has some definite Iask Io\n", + "perform, and w: read to dismver whether he succeeds in\n", + "performing it. Bul even in novels where chamcxer is more\n", + "cons|dered it is still Ihe interest of failure and success which\n", + "usually makes thc plot, The hams for instances falls in love\n", + "and the plol forms round this love interest; or he is marriads\n", + "\n", + "xi\n", + "anrluhled Mmenzl\n", + "\n", + "\n", + "Found image: https://d1b14unh5d6w7g.cloudfront.net/1534770720.01.S009.LXXXXXXX.jpg?Expires=1516142810&Signature=cEx45kkP4hodAgCBj3N5P/FK62U48Lr+wsHHTcTFkDt0srEM++eNV1orrtmifYfjhULcuNJiSyeZPgaqO48TlQ9pVsg7tI6GY7yiDRHbWWLrA3KAkohy2TcWtE40swg32NGzzHDloLmHa6ssO4zTR0G4IZp1BzWqhMmNV5cwEmE=&Key-Pair-Id=APKAIUO27P366FGALUMQ\n", + "Found image: https://d1b14unh5d6w7g.cloudfront.net/1534770720.01.S00C.LXXXXXXX.jpg?Expires=1516142821&Signature=B5ALvVQPnv0DhirF9MxDckuqWDRRWAj/rNojC43UcM7TYFlOustmkwYUZghs4WyGy+OQpkukCRosTo8J9gYG+gHD051eg5L/T10jtW+W3mf+eN53vLEm0dqasf5HWHdjnh/H9dtyLko1D85OLQ6XMtsFUvoabR5E85IBkN3yKGQ=&Key-Pair-Id=APKAIUO27P366FGALUMQ\n", + "Found image: https://d1b14unh5d6w7g.cloudfront.net/1534770720.01.S00D.LXXXXXXX.jpg?Expires=1516142830&Signature=CfS/KL88yTK/pRbt2xAZSWEiLx7uhyEkTv8rLqL7eaHWvnGdu6Jyph1hc3DtikT5Mc/IgK96Nq/2zvf61LKMQiKFnSRlDh6rqlSdbq2p6XKlnjH4kB5qFMXxH3RLFijYhAaqh7MZaJROhMgiFB6KUxWHgoM9MyG5bjP+qEZ868U=&Key-Pair-Id=APKAIUO27P366FGALUMQ\n" + ] + }, + { + "ename": "KeyboardInterrupt", + "evalue": "", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mKeyboardInterrupt\u001b[0m Traceback (most recent call last)", + "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[1;32m 40\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mimage\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mimageList\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 41\u001b[0m \u001b[0mimageList\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mappend\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mimage\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 42\u001b[0;31m \u001b[0mgetImageText\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mimage\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 43\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 44\u001b[0m \u001b[0mdriver\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mquit\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m\u001b[0m in \u001b[0;36mgetImageText\u001b[0;34m(imageUrl)\u001b[0m\n\u001b[1;32m 8\u001b[0m \u001b[0murlretrieve\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mimage\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m'page.jpg'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 9\u001b[0m \u001b[0mp\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0msubprocess\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mPopen\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m'tesseract'\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m'page.jpg'\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m'page'\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mstdout\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0msubprocess\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mPIPE\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0mstderr\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0msubprocess\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mPIPE\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 10\u001b[0;31m \u001b[0mp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mwait\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 11\u001b[0m \u001b[0mf\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mopen\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'page.txt'\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m'r'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 12\u001b[0m \u001b[0mprint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mf\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mread\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/subprocess.py\u001b[0m in \u001b[0;36mwait\u001b[0;34m(self, timeout, endtime)\u001b[0m\n\u001b[1;32m 1437\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mreturncode\u001b[0m \u001b[0;32mis\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0;32mNone\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1438\u001b[0m \u001b[0;32mbreak\u001b[0m \u001b[0;31m# Another thread waited.\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 1439\u001b[0;31m \u001b[0;34m(\u001b[0m\u001b[0mpid\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0msts\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_try_wait\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;36m0\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 1440\u001b[0m \u001b[0;31m# Check the pid and loop as waitpid has been known to\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1441\u001b[0m \u001b[0;31m# return 0 even without WNOHANG in odd situations.\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/subprocess.py\u001b[0m in \u001b[0;36m_try_wait\u001b[0;34m(self, wait_flags)\u001b[0m\n\u001b[1;32m 1384\u001b[0m \u001b[0;34m\"\"\"All callers to this function MUST hold self._waitpid_lock.\"\"\"\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1385\u001b[0m \u001b[0;32mtry\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 1386\u001b[0;31m \u001b[0;34m(\u001b[0m\u001b[0mpid\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0msts\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mos\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mwaitpid\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mpid\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mwait_flags\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 1387\u001b[0m \u001b[0;32mexcept\u001b[0m \u001b[0mChildProcessError\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1388\u001b[0m \u001b[0;31m# This happens if SIGCLD is set to be ignored or waiting\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;31mKeyboardInterrupt\u001b[0m: " + ] + } + ], + "source": [ + "import time\n", + "from urllib.request import urlretrieve\n", + "from PIL import Image\n", + "import tesseract\n", + "from selenium import webdriver\n", + "\n", + "\n", + "def getImageText(imageUrl):\n", + " urlretrieve(image, 'page.jpg')\n", + " p = subprocess.Popen(['tesseract', 'page.jpg', 'page'], stdout=subprocess.PIPE,stderr=subprocess.PIPE)\n", + " p.wait()\n", + " f = open('page.txt', 'r')\n", + " print(f.read())\n", + "\n", + "#Create new Selenium driver\n", + "driver = webdriver.Chrome(executable_path='drivers/chromedriver/chromedriver')\n", + "\n", + "driver.get('https://www.amazon.com/War-Peace-Leo-Nikolayevich-Tolstoy/dp/1427049629')\n", + "time.sleep(2)\n", + "\n", + "#Click on the book preview button\n", + "driver.find_element_by_id('imgBlkFront').click()\n", + "imageList = []\n", + "\n", + "#Wait for the page to load\n", + "time.sleep(5)\n", + "\n", + "while 'pointer' in driver.find_element_by_id('sitbReaderRightPageTurner').get_attribute('style'):\n", + " #While the right arrow is available for clicking, turn through pages\n", + " driver.find_element_by_id('sitbReaderRightPageTurner').click()\n", + " time.sleep(2)\n", + " # Get any new pages that have loaded (multiple pages can load at once,\n", + " # but duplicates will not be added to a set)\n", + " pages = driver.find_elements_by_xpath('//div[@class=\\'pageImage\\']/div/img')\n", + " if not len(pages):\n", + " print(\"No pages found\")\n", + " for page in pages:\n", + " image = page.get_attribute('src')\n", + " print('Found image: {}'.format(image))\n", + " if image not in imageList:\n", + " imageList.append(image)\n", + " getImageText(image)\n", + "\n", + "driver.quit()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.6.1" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/v2/Chapter15_Testing.ipynb b/v2/Chapter15_Testing.ipynb new file mode 100644 index 0000000..3d5b2cd --- /dev/null +++ b/v2/Chapter15_Testing.ipynb @@ -0,0 +1,262 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "..\n", + "----------------------------------------------------------------------\n", + "Ran 2 tests in 0.491s\n", + "\n", + "OK\n" + ] + } + ], + "source": [ + "from urllib.request import urlopen\n", + "from bs4 import BeautifulSoup\n", + "import unittest\n", + "\n", + "class TestWikipedia(unittest.TestCase):\n", + " bs = None\n", + " def setUpClass():\n", + " url = \"http://en.wikipedia.org/wiki/Monty_Python\"\n", + " TestWikipedia.bs = BeautifulSoup(urlopen(url), \"html.parser\")\n", + "\n", + " def test_titleText(self):\n", + " pageTitle = TestWikipedia.bs.find(\"h1\").get_text()\n", + " self.assertEqual(\"Monty Python\", pageTitle);\n", + "\n", + " def test_contentExists(self):\n", + " content = TestWikipedia.bs.find(\"div\",{\"id\":\"mw-content-text\"})\n", + " self.assertIsNotNone(content)\n", + "\n", + "if __name__ == '__main__':\n", + " unittest.main(argv=[''], exit=False)" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/ipykernel_launcher.py:16: DeprecationWarning: Please use assertEqual instead.\n", + " app.launch_new_instance()\n", + "." + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Done!\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "\n", + "----------------------------------------------------------------------\n", + "Ran 1 test in 7.794s\n", + "\n", + "OK\n" + ] + } + ], + "source": [ + "from urllib.request import urlopen\n", + "from bs4 import BeautifulSoup\n", + "import unittest\n", + "import re\n", + "import random\n", + "from urllib.parse import unquote\n", + "\n", + "class TestWikipedia(unittest.TestCase):\n", + "\n", + " def test_PageProperties(self):\n", + " self.url = \"http://en.wikipedia.org/wiki/Monty_Python\"\n", + " #Test the first 10 pages we encounter\n", + " for i in range(1, 10):\n", + " self.bs = BeautifulSoup(urlopen(self.url), \"html.parser\")\n", + " titles = self.titleMatchesURL()\n", + " self.assertEquals(titles[0], titles[1])\n", + " self.assertTrue(self.contentExists())\n", + " self.url = self.getNextLink()\n", + " print(\"Done!\")\n", + "\n", + " def titleMatchesURL(self):\n", + " pageTitle = self.bs.find(\"h1\").get_text()\n", + " urlTitle = self.url[(self.url.index(\"/wiki/\")+6):]\n", + " urlTitle = urlTitle.replace(\"_\", \" \")\n", + " urlTitle = unquote(urlTitle)\n", + " return [pageTitle.lower(), urlTitle.lower()]\n", + "\n", + " def contentExists(self):\n", + " content = self.bs.find(\"div\",{\"id\":\"mw-content-text\"})\n", + " if content is not None:\n", + " return True\n", + " return False\n", + "\n", + " def getNextLink(self):\n", + " #Returns random link on page, using technique from Chapter 3\n", + " links = self.bs.find('div', {'id':'bodyContent'}).find_all('a', href=re.compile('^(/wiki/)((?!:).)*$'))\n", + " randomLink = random.SystemRandom().choice(links)\n", + " return 'https://wikipedia.org'+randomLink.attrs['href']\n", + " \n", + "if __name__ == '__main__':\n", + " unittest.main(argv=[''], exit=False)" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "ename": "IndentationError", + "evalue": "unexpected indent (, line 22)", + "output_type": "error", + "traceback": [ + "\u001b[0;36m File \u001b[0;32m\"\"\u001b[0;36m, line \u001b[0;32m22\u001b[0m\n\u001b[0;31m .click(firstnameField)\u001b[0m\n\u001b[0m ^\u001b[0m\n\u001b[0;31mIndentationError\u001b[0m\u001b[0;31m:\u001b[0m unexpected indent\n" + ] + } + ], + "source": [ + "from selenium import webdriver\n", + "from selenium.webdriver.remote.webelement import WebElement\n", + "from selenium.webdriver.common.keys import Keys\n", + "from selenium.webdriver import ActionChains\n", + "\n", + "\n", + "driver = webdriver.PhantomJS(executable_path='drivers/phantomjs/phantomjs')\n", + "driver.get('http://pythonscraping.com/pages/files/form.html')\n", + "\n", + "firstnameField = driver.find_element_by_name('firstname')\n", + "lastnameField = driver.find_element_by_name('lastname')\n", + "submitButton = driver.find_element_by_id('submit')\n", + "\n", + "### METHOD 1 ###\n", + "#firstnameField.send_keys('Ryan')\n", + "lastnameField.send_keys('Mitchell')\n", + "submitButton.click()\n", + "################\n", + "\n", + "### METHOD 2 ###\n", + "actions = ActionChains(driver).click(firstnameField).send_keys('Ryan').click(lastnameField).send_keys('Mitchell').send_keys(Keys.RETURN)\n", + "actions.perform()\n", + "################\n", + "\n", + "print(driver.find_element_by_tag_name('body').text)\n", + "\n", + "driver.close()" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "F" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Tearing down the test\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "\n", + "======================================================================\n", + "FAIL: test_drag (__main__.TestAddition)\n", + "----------------------------------------------------------------------\n", + "Traceback (most recent call last):\n", + " File \"\", line 21, in test_drag\n", + " self.assertEqual(\"You are definitely not a bot!\", self.driver.find_element_by_id(\"message\").text)\n", + "AssertionError: 'You are definitely not a bot!' != 'Prove you are not a bot, by dragging the [38 chars]rea!'\n", + "- You are definitely not a bot!\n", + "+ Prove you are not a bot, by dragging the square from the blue area to the red area!\n", + "\n", + "\n", + "----------------------------------------------------------------------\n", + "Ran 1 test in 4.681s\n", + "\n", + "FAILED (failures=1)\n" + ] + } + ], + "source": [ + "from selenium import webdriver\n", + "from selenium.webdriver.remote.webelement import WebElement\n", + "from selenium.webdriver import ActionChains\n", + "import unittest\n", + "\n", + "class TestAddition(unittest.TestCase):\n", + " driver = None\n", + " def setUp(self):\n", + " self.driver = webdriver.PhantomJS(executable_path='drivers/phantomjs/phantomjs')\n", + " url = 'http://pythonscraping.com/pages/javascript/draggableDemo.html'\n", + " self.driver.get(url)\n", + "\n", + " def tearDown(self):\n", + " print(\"Tearing down the test\")\n", + "\n", + " def test_drag(self):\n", + " element = self.driver.find_element_by_id(\"draggable\")\n", + " target = self.driver.find_element_by_id(\"div2\")\n", + " actions = ActionChains(self.driver)\n", + " actions.drag_and_drop(element, target).perform()\n", + " self.assertEqual(\"You are definitely not a bot!\", self.driver.find_element_by_id(\"message\").text)\n", + "\n", + "if __name__ == '__main__':\n", + " unittest.main(argv=[''], exit=False)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.6.1" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/v2/Chapter2-AdvancedHTMLParsing.ipynb b/v2/Chapter2-AdvancedHTMLParsing.ipynb new file mode 100644 index 0000000..13fcb96 --- /dev/null +++ b/v2/Chapter2-AdvancedHTMLParsing.ipynb @@ -0,0 +1,34 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.6.1" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/v2/chapter16/multiprocess.py b/v2/chapter16/multiprocess.py new file mode 100644 index 0000000..83be186 --- /dev/null +++ b/v2/chapter16/multiprocess.py @@ -0,0 +1,36 @@ +from urllib.request import urlopen +from bs4 import BeautifulSoup +import re +import random + +from multiprocessing import Process, Queue +import os +import time +import Thread + +def getLinks(bsObj, queue): + print('Getting links in {}'.format(os.getpid())) + links = bsObj.find('div', {'id':'bodyContent'}).find_all('a', href=re.compile('^(/wiki/)((?!:).)*$')) + return [link for link in links if link not in queue.get()] + +def scrape_article(path, queue): + queue.get().append() + print("Process {} list is now: {}".format(os.getpid(), visited)) + html = urlopen('http://en.wikipedia.org{}'.format(path)) + time.sleep(5) + bsObj = BeautifulSoup(html, 'html.parser') + title = bsObj.find('h1').get_text() + print('Scraping {} in process {}'.format(title, os.getpid())) + links = getLinks(bsObj) + if len(links) > 0: + newArticle = links[random.randint(0, len(links)-1)].attrs['href'] + print(newArticle) + scrape_article(newArticle) + +processes = [] +queue = Queue() +processes.append(Process(target=scrape_article, args=('/wiki/Kevin_Bacon', queue,))) +processes.append(Process(target=scrape_article, args=('/wiki/Monty_Python', queue,))) + +for p in processes: + p.start() diff --git a/v2/chapter16/multiprocess_example.py b/v2/chapter16/multiprocess_example.py new file mode 100644 index 0000000..9d019b6 --- /dev/null +++ b/v2/chapter16/multiprocess_example.py @@ -0,0 +1,23 @@ +from multiprocessing import Process +import time + +def print_time(threadName, delay, iterations): + start = int(time.time()) + for i in range(0,iterations): + time.sleep(delay) + seconds_elapsed = str(int(time.time()) - start) + print (threadName if threadName else seconds_elapsed) + + +processes = [] +processes.append(Process(target=print_time, args=(None, 1, 100))) +processes.append(Process(target=print_time, args=("Fizz", 3, 33))) +processes.append(Process(target=print_time, args=("Buzz", 5, 20))) + +for p in processes: + p.start() + +for p in processes: + p.join() + +print("Program complete") \ No newline at end of file diff --git a/v2/chapter16/multiprocess_queue.py b/v2/chapter16/multiprocess_queue.py new file mode 100644 index 0000000..caea096 --- /dev/null +++ b/v2/chapter16/multiprocess_queue.py @@ -0,0 +1,54 @@ + +from urllib.request import urlopen +from bs4 import BeautifulSoup +import re +import random +from multiprocessing import Process, Queue +import os +import time + + +def task_delegator(taskQueue, foundUrlsQueue): + #Initialize with a task for each process + visited = ['/wiki/Kevin_Bacon', '/wiki/Monty_Python'] + taskQueue.put('/wiki/Kevin_Bacon') + taskQueue.put('/wiki/Monty_Python') + + while 1: + #Check to see if there are new links in the foundUrlsQueue for processing + if not foundUrlsQueue.empty(): + links = [link for link in foundUrlsQueue.get() if link not in visited] + for link in links: + #Add new link to the taskQueue + taskQueue.put(link) + +def get_links(bsObj): + links = bsObj.find('div', {'id':'bodyContent'}).find_all('a', href=re.compile('^(/wiki/)((?!:).)*$')) + return [link.attrs['href'] for link in links] + +def scrape_article(taskQueue, foundUrlsQueue): + while 1: + while taskQueue.empty(): + #Sleep 100 ms while waiting for the task queue + #This should be rare + time.sleep(.1) + path = taskQueue.get() + html = urlopen('http://en.wikipedia.org{}'.format(path)) + time.sleep(5) + bsObj = BeautifulSoup(html, 'html.parser') + title = bsObj.find('h1').get_text() + print('Scraping {} in process {}'.format(title, os.getpid())) + links = get_links(bsObj) + #Send these to the delegator for processing + foundUrlsQueue.put(links) + + +processes = [] +taskQueue = Queue() +foundUrlsQueue = Queue() +processes.append(Process(target=task_delegator, args=(taskQueue, foundUrlsQueue,))) +processes.append(Process(target=scrape_article, args=(taskQueue, foundUrlsQueue,))) +processes.append(Process(target=scrape_article, args=(taskQueue, foundUrlsQueue,))) + +for p in processes: + p.start() \ No newline at end of file diff --git a/v2/chapter16/multithreaded.py b/v2/chapter16/multithreaded.py new file mode 100644 index 0000000..709e4e4 --- /dev/null +++ b/v2/chapter16/multithreaded.py @@ -0,0 +1,36 @@ +from urllib.request import urlopen +from bs4 import BeautifulSoup +import re +import random + +import _thread +import time + +visited = [] +def getLinks(thread_name, bsObj): + print('Getting links in {}'.format(thread_name)) + links = bsObj.find('div', {'id':'bodyContent'}).find_all('a', href=re.compile('^(/wiki/)((?!:).)*$')) + return [link for link in links if link not in visited] + +def scrape_article(thread_name, path): + visited.append(path) + html = urlopen('http://en.wikipedia.org{}'.format(path)) + time.sleep(5) + bsObj = BeautifulSoup(html, 'html.parser') + title = bsObj.find('h1').get_text() + print('Scraping {} in thread {}'.format(title, thread_name)) + links = getLinks(thread_name, bsObj) + if len(links) > 0: + newArticle = links[random.randint(0, len(links)-1)].attrs['href'] + print(newArticle) + scrape_article(thread_name, newArticle) + + +try: + _thread.start_new_thread(scrape_article, ('Thread 1', '/wiki/Kevin_Bacon',)) + _thread.start_new_thread(scrape_article, ('Thread 2', '/wiki/Monty_Python',)) +except: + print ('Error: unable to start threads') + +while 1: + pass \ No newline at end of file diff --git a/v2/chapter16/multithreaded_class.py b/v2/chapter16/multithreaded_class.py new file mode 100644 index 0000000..8f4b47d --- /dev/null +++ b/v2/chapter16/multithreaded_class.py @@ -0,0 +1,38 @@ +from urllib.request import urlopen +from bs4 import BeautifulSoup +import re +import random + +import _thread +import time + +visited = [] +def getLinks(thread_name, bsObj): + print('Getting links in {}'.format(thread_name)) + links = bsObj.find('div', {'id':'bodyContent'}).find_all('a', href=re.compile('^(/wiki/)((?!:).)*$')) + return [link for link in links if link not in visited] + +# Define a function for the thread +def scrape_article(thread_name, path): + visited.append(path) + html = urlopen('http://en.wikipedia.org{}'.format(path)) + time.sleep(5) + bsObj = BeautifulSoup(html, 'html.parser') + title = bsObj.find('h1').get_text() + print('Scraping {} in thread {}'.format(title, thread_name)) + links = getLinks(thread_name, bsObj) + if len(links) > 0: + newArticle = links[random.randint(0, len(links)-1)].attrs['href'] + print(newArticle) + scrape_article(thread_name, newArticle) + + +# Create two threads as follows +try: + _thread.start_new_thread(scrape_article, ('Thread 1', '/wiki/Kevin_Bacon',)) + _thread.start_new_thread(scrape_article, ('Thread 2', '/wiki/Monty_Python',)) +except: + print ('Error: unable to start threads') + +while 1: + pass \ No newline at end of file diff --git a/v2/chapter16/multithreaded_example.py b/v2/chapter16/multithreaded_example.py new file mode 100644 index 0000000..0ee93de --- /dev/null +++ b/v2/chapter16/multithreaded_example.py @@ -0,0 +1,19 @@ +import _thread +import time + +def print_time(threadName, delay, iterations): + start = int(time.time()) + for i in range(0,iterations): + time.sleep(delay) + seconds_elapsed = str(int(time.time()) - start) + print (threadName if threadName else seconds_elapsed) + +try: + _thread.start_new_thread(print_time, (None, 1, 100)) + _thread.start_new_thread(print_time, ("Fizz", 3, 33)) + _thread.start_new_thread(print_time, ("Buzz", 5, 20)) +except: + print ("Error: unable to start thread") + +while 1: + pass \ No newline at end of file diff --git a/v2/chapter16/multithreaded_queue.py b/v2/chapter16/multithreaded_queue.py new file mode 100644 index 0000000..25fc315 --- /dev/null +++ b/v2/chapter16/multithreaded_queue.py @@ -0,0 +1,54 @@ +from urllib.request import urlopen +from bs4 import BeautifulSoup +import re +import random +import _thread +from queue import Queue +import time +import pymysql + + +def storage(queue): + conn = pymysql.connect(host='127.0.0.1', unix_socket='/tmp/mysql.sock', user='root', passwd='', db='mysql', charset='utf8') + cur = conn.cursor() + cur.execute('USE wiki_threads') + while 1: + if not queue.empty(): + article = queue.get() + cur.execute('SELECT * FROM pages WHERE path = %s', (article["path"])) + if cur.rowcount == 0: + print("Storing article {}".format(article["title"])) + cur.execute('INSERT INTO pages (title, path) VALUES (%s, %s)', (article["title"], article["path"])) + conn.commit() + else: + print("Article already exists: {}".format(article['title'])) + +visited = [] +def getLinks(thread_name, bsObj): + print('Getting links in {}'.format(thread_name)) + links = bsObj.find('div', {'id':'bodyContent'}).find_all('a', href=re.compile('^(/wiki/)((?!:).)*$')) + return [link for link in links if link not in visited] + +def scrape_article(thread_name, path, queue): + visited.append(path) + html = urlopen('http://en.wikipedia.org{}'.format(path)) + time.sleep(5) + bsObj = BeautifulSoup(html, 'html.parser') + title = bsObj.find('h1').get_text() + print('Added {} for storage in thread {}'.format(title, thread_name)) + queue.put({"title":title, "path":path}) + links = getLinks(thread_name, bsObj) + if len(links) > 0: + newArticle = links[random.randint(0, len(links)-1)].attrs['href'] + scrape_article(thread_name, newArticle, queue) + +queue = Queue() +try: + _thread.start_new_thread(scrape_article, ('Thread 1', '/wiki/Kevin_Bacon', queue,)) + _thread.start_new_thread(scrape_article, ('Thread 2', '/wiki/Monty_Python', queue,)) + _thread.start_new_thread(storage, (queue,)) +except: + print ('Error: unable to start threads') + +while 1: + pass \ No newline at end of file diff --git a/v2/chapter2_scrapy/tutorial/scrapy.cfg b/v2/chapter2_scrapy/tutorial/scrapy.cfg new file mode 100644 index 0000000..ce8c9bb --- /dev/null +++ b/v2/chapter2_scrapy/tutorial/scrapy.cfg @@ -0,0 +1,11 @@ +# Automatically created by: scrapy startproject +# +# For more information about the [deploy] section see: +# https://scrapyd.readthedocs.org/en/latest/deploy.html + +[settings] +default = tutorial.settings + +[deploy] +#url = http://localhost:6800/ +project = tutorial diff --git a/v2/chapter2_scrapy/tutorial/tutorial/__init__.py b/v2/chapter2_scrapy/tutorial/tutorial/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/v2/chapter2_scrapy/tutorial/tutorial/items.py b/v2/chapter2_scrapy/tutorial/tutorial/items.py new file mode 100644 index 0000000..10c39f9 --- /dev/null +++ b/v2/chapter2_scrapy/tutorial/tutorial/items.py @@ -0,0 +1,14 @@ +# -*- coding: utf-8 -*- + +# Define here the models for your scraped items +# +# See documentation in: +# http://doc.scrapy.org/en/latest/topics/items.html + +import scrapy + + +class TutorialItem(scrapy.Item): + # define the fields for your item here like: + # name = scrapy.Field() + pass diff --git a/v2/chapter2_scrapy/tutorial/tutorial/middlewares.py b/v2/chapter2_scrapy/tutorial/tutorial/middlewares.py new file mode 100644 index 0000000..7eb7357 --- /dev/null +++ b/v2/chapter2_scrapy/tutorial/tutorial/middlewares.py @@ -0,0 +1,56 @@ +# -*- coding: utf-8 -*- + +# Define here the models for your spider middleware +# +# See documentation in: +# http://doc.scrapy.org/en/latest/topics/spider-middleware.html + +from scrapy import signals + + +class TutorialSpiderMiddleware(object): + # Not all methods need to be defined. If a method is not defined, + # scrapy acts as if the spider middleware does not modify the + # passed objects. + + @classmethod + def from_crawler(cls, crawler): + # This method is used by Scrapy to create your spiders. + s = cls() + crawler.signals.connect(s.spider_opened, signal=signals.spider_opened) + return s + + def process_spider_input(self, response, spider): + # Called for each response that goes through the spider + # middleware and into the spider. + + # Should return None or raise an exception. + return None + + def process_spider_output(self, response, result, spider): + # Called with the results returned from the Spider, after + # it has processed the response. + + # Must return an iterable of Request, dict or Item objects. + for i in result: + yield i + + def process_spider_exception(self, response, exception, spider): + # Called when a spider or process_spider_input() method + # (from other spider middleware) raises an exception. + + # Should return either None or an iterable of Response, dict + # or Item objects. + pass + + def process_start_requests(self, start_requests, spider): + # Called with the start requests of the spider, and works + # similarly to the process_spider_output() method, except + # that it doesn’t have a response associated. + + # Must return only requests (not items). + for r in start_requests: + yield r + + def spider_opened(self, spider): + spider.logger.info('Spider opened: %s' % spider.name) diff --git a/v2/chapter2_scrapy/tutorial/tutorial/pipelines.py b/v2/chapter2_scrapy/tutorial/tutorial/pipelines.py new file mode 100644 index 0000000..d0f684f --- /dev/null +++ b/v2/chapter2_scrapy/tutorial/tutorial/pipelines.py @@ -0,0 +1,11 @@ +# -*- coding: utf-8 -*- + +# Define your item pipelines here +# +# Don't forget to add your pipeline to the ITEM_PIPELINES setting +# See: http://doc.scrapy.org/en/latest/topics/item-pipeline.html + + +class TutorialPipeline(object): + def process_item(self, item, spider): + return item diff --git a/v2/chapter2_scrapy/tutorial/tutorial/settings.py b/v2/chapter2_scrapy/tutorial/tutorial/settings.py new file mode 100644 index 0000000..3549d60 --- /dev/null +++ b/v2/chapter2_scrapy/tutorial/tutorial/settings.py @@ -0,0 +1,90 @@ +# -*- coding: utf-8 -*- + +# Scrapy settings for tutorial project +# +# For simplicity, this file contains only settings considered important or +# commonly used. You can find more settings consulting the documentation: +# +# http://doc.scrapy.org/en/latest/topics/settings.html +# http://scrapy.readthedocs.org/en/latest/topics/downloader-middleware.html +# http://scrapy.readthedocs.org/en/latest/topics/spider-middleware.html + +BOT_NAME = 'tutorial' + +SPIDER_MODULES = ['tutorial.spiders'] +NEWSPIDER_MODULE = 'tutorial.spiders' + + +# Crawl responsibly by identifying yourself (and your website) on the user-agent +#USER_AGENT = 'tutorial (+http://www.yourdomain.com)' + +# Obey robots.txt rules +ROBOTSTXT_OBEY = True + +# Configure maximum concurrent requests performed by Scrapy (default: 16) +#CONCURRENT_REQUESTS = 32 + +# Configure a delay for requests for the same website (default: 0) +# See http://scrapy.readthedocs.org/en/latest/topics/settings.html#download-delay +# See also autothrottle settings and docs +#DOWNLOAD_DELAY = 3 +# The download delay setting will honor only one of: +#CONCURRENT_REQUESTS_PER_DOMAIN = 16 +#CONCURRENT_REQUESTS_PER_IP = 16 + +# Disable cookies (enabled by default) +#COOKIES_ENABLED = False + +# Disable Telnet Console (enabled by default) +#TELNETCONSOLE_ENABLED = False + +# Override the default request headers: +#DEFAULT_REQUEST_HEADERS = { +# 'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8', +# 'Accept-Language': 'en', +#} + +# Enable or disable spider middlewares +# See http://scrapy.readthedocs.org/en/latest/topics/spider-middleware.html +#SPIDER_MIDDLEWARES = { +# 'tutorial.middlewares.TutorialSpiderMiddleware': 543, +#} + +# Enable or disable downloader middlewares +# See http://scrapy.readthedocs.org/en/latest/topics/downloader-middleware.html +#DOWNLOADER_MIDDLEWARES = { +# 'tutorial.middlewares.MyCustomDownloaderMiddleware': 543, +#} + +# Enable or disable extensions +# See http://scrapy.readthedocs.org/en/latest/topics/extensions.html +#EXTENSIONS = { +# 'scrapy.extensions.telnet.TelnetConsole': None, +#} + +# Configure item pipelines +# See http://scrapy.readthedocs.org/en/latest/topics/item-pipeline.html +#ITEM_PIPELINES = { +# 'tutorial.pipelines.TutorialPipeline': 300, +#} + +# Enable and configure the AutoThrottle extension (disabled by default) +# See http://doc.scrapy.org/en/latest/topics/autothrottle.html +#AUTOTHROTTLE_ENABLED = True +# The initial download delay +#AUTOTHROTTLE_START_DELAY = 5 +# The maximum download delay to be set in case of high latencies +#AUTOTHROTTLE_MAX_DELAY = 60 +# The average number of requests Scrapy should be sending in parallel to +# each remote server +#AUTOTHROTTLE_TARGET_CONCURRENCY = 1.0 +# Enable showing throttling stats for every response received: +#AUTOTHROTTLE_DEBUG = False + +# Enable and configure HTTP caching (disabled by default) +# See http://scrapy.readthedocs.org/en/latest/topics/downloader-middleware.html#httpcache-middleware-settings +#HTTPCACHE_ENABLED = True +#HTTPCACHE_EXPIRATION_SECS = 0 +#HTTPCACHE_DIR = 'httpcache' +#HTTPCACHE_IGNORE_HTTP_CODES = [] +#HTTPCACHE_STORAGE = 'scrapy.extensions.httpcache.FilesystemCacheStorage' diff --git a/v2/chapter2_scrapy/tutorial/tutorial/spiders/__init__.py b/v2/chapter2_scrapy/tutorial/tutorial/spiders/__init__.py new file mode 100644 index 0000000..ebd689a --- /dev/null +++ b/v2/chapter2_scrapy/tutorial/tutorial/spiders/__init__.py @@ -0,0 +1,4 @@ +# This package will contain the spiders of your Scrapy project +# +# Please refer to the documentation for information on how to create and manage +# your spiders. diff --git a/v2/chapter4_crawlingLayouts/__init__.py b/v2/chapter4_crawlingLayouts/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/v2/chapter4_crawlingLayouts/content.py b/v2/chapter4_crawlingLayouts/content.py new file mode 100644 index 0000000..bb99925 --- /dev/null +++ b/v2/chapter4_crawlingLayouts/content.py @@ -0,0 +1,18 @@ +class Content: + """Common base class for all articles/pages""" + + def __init__(self, topic, title, body, url): + self.topic = topic + self.title = title + self.body = body + self.url = url + + def print(self): + """ + Flexible printing function controls output + """ + print("New article found for: {}".format(self.topic)) + print("TITLE: {}".format(self.title)) + print("BODY:\n{}".format(self.body)) + print("URL: {}".format(self.url)) + \ No newline at end of file diff --git a/v2/chapter4_crawlingLayouts/crawler.py b/v2/chapter4_crawlingLayouts/crawler.py new file mode 100644 index 0000000..bee3d57 --- /dev/null +++ b/v2/chapter4_crawlingLayouts/crawler.py @@ -0,0 +1,72 @@ +from website import Website +from content import Content + +import requests +from bs4 import BeautifulSoup + +class Crawler: + + def getPage(self, url): + """ + Utilty function used to get a Beautiful Soup object from a given URL + """ + print("Retrieving URL:\n{}".format(url)) + session = requests.Session() + headers = {"User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.95 Safari/537.36", "Accept":"text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8"} + try: + req = session.get(url, headers=headers) + except requests.exceptions.RequestException: + return None + bsObj = BeautifulSoup(req.text, "lxml") + return bsObj + + def safeGet(self, pageObj, selector): + """ + Utilty function used to get a content string from a Beautiful Soup + object and a selector. Returns an empty string if no object + is found for the given selector + """ + childObj = pageObj.select(selector) + if childObj is not None and len(childObj) > 0: + return childObj[0].get_text() + return "" + + def search(self, topic, site): + """ + Searches a given website for a given topic and records all pages found + """ + bsObj = self.getPage(site.searchUrl+topic) + searchResults = bsObj.select(site.resultListing) + for result in searchResults: + url = result.select(site.resultUrl)[0].attrs["href"] + #Check to see whether it's a relative or an absolute URL + if(site.absoluteUrl): + pageObj = self.getPage(url) + else: + pageObj = self.getPage(site.url+url) + if pageObj is None: + print("Something was wrong with that page or URL. Skipping!") + return + title = self.safeGet(pageObj, site.pageTitle) + body = self.safeGet(pageObj, site.pageBody) + if title != "" and body != "": + content = Content(topic, title, body, url) + content.print() + + +crawler = Crawler() + +siteData = [ + ["O'Reilly Media","http://oreilly.com","https://ssearch.oreilly.com/?q=", "article.product-result","p.title a",True,"h1","section#product-description"], + ["Reuters","http://reuters.com","http://www.reuters.com/search/news?blob=","div.search-result-content","h3.search-result-title a",False,"h1","div.ArticleBody_body_2ECha"], + ["Brookings","http://www.brookings.edu","https://www.brookings.edu/search/?s=","div.list-content article","h4.title a",True,"h1","div.post-body"] + ] +sites = [] +for row in siteData: + sites.append(Website(row[0], row[1], row[2], row[3], row[4], row[5], row[6], row[7])) + +topics = ["python","data science"] +for topic in topics: + print("GETTING INFO ABOUT: "+topic) + for targetSite in sites: + crawler.search(topic, targetSite) diff --git a/v2/chapter4_crawlingLayouts/crawler2.py b/v2/chapter4_crawlingLayouts/crawler2.py new file mode 100644 index 0000000..ce3b9a6 --- /dev/null +++ b/v2/chapter4_crawlingLayouts/crawler2.py @@ -0,0 +1,67 @@ +from website import Website +from content import Content + +import requests +from bs4 import BeautifulSoup + +class Crawler: + + def getInternalLinks(bsObj, includeUrl): + internalLinks = [] + #Finds all links that begin with a "/" + for link in bsObj.findAll("a", href=re.compile("^(/|.*"+includeUrl+")")): + if link.attrs['href'] is not None: + if link.attrs['href'] not in internalLinks: + internalLinks.append(link.attrs['href']) + return internalLinksdef getInternalLinks(bsObj, includeUrl): + internalLinks = [] + #Finds all links that begin with a "/" + for link in bsObj.findAll("a", href=re.compile("^(/|.*"+includeUrl+")")): + if link.attrs['href'] is not None: + if link.attrs['href'] not in internalLinks: + internalLinks.append(link.attrs['href']) + return internalLinks + + def getPage(self, url): + """ + Utilty function used to get a Beautiful Soup object from a given URL + """ + print("Retrieving URL:\n{}".format(url)) + session = requests.Session() + headers = {"User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.95 Safari/537.36", "Accept":"text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8"} + try: + req = session.get(url, headers=headers) + except requests.exceptions.RequestException: + return None + bsObj = BeautifulSoup(req.text, "lxml") + return bsObj + + def safeGet(self, pageObj, selector): + """ + Utilty function used to get a content string from a Beautiful Soup + object and a selector. Returns an empty string if no object + is found for the given selector + """ + childObj = pageObj.select(selector) + if childObj is not None and len(childObj) > 0: + return childObj[0].get_text() + return "" + + def crawl(self, topic, site): + """ + Searches a given website for a given topic and records all pages found + """ + bsObj = self.getPage(site.searchUrl+topic) + links = getInternalLinks() + +crawler = Crawler() + +siteData = [ + ["O'Reilly Media","http://oreilly.com","https://ssearch.oreilly.com/?q=", "article.product-result","p.title a",True,"h1","section#product-description"], + ["Reuters","http://reuters.com","http://www.reuters.com/search/news?blob=","div.search-result-content","h3.search-result-title a",False,"h1","div.ArticleBody_body_2ECha"], + ["Brookings","http://www.brookings.edu","https://www.brookings.edu/search/?s=","div.list-content article","h4.title a",True,"h1","div.post-body"] + ] +sites = [] +for row in siteData: + sites.append(Website(row[0], row[1], row[2], row[3], row[4], row[5], row[6], row[7])) + diff --git a/v2/chapter4_crawlingLayouts/topic.py b/v2/chapter4_crawlingLayouts/topic.py new file mode 100644 index 0000000..484d930 --- /dev/null +++ b/v2/chapter4_crawlingLayouts/topic.py @@ -0,0 +1,6 @@ +class Topic: + 'Common base class for all topics' + def __init__(self, name): + self.name = name + + \ No newline at end of file diff --git a/v2/chapter4_crawlingLayouts/website.py b/v2/chapter4_crawlingLayouts/website.py new file mode 100644 index 0000000..61120aa --- /dev/null +++ b/v2/chapter4_crawlingLayouts/website.py @@ -0,0 +1,12 @@ +class Website: + """Common base class for all articles/pages""" + + def __init__(self, name, url, searchUrl, resultListing, resultUrl, absoluteUrl, pageTitle, pageBody): + self.name = name + self.url = url + self.searchUrl = searchUrl + self.resultListing = resultListing + self.resultUrl = resultUrl + self.absoluteUrl=absoluteUrl + self.pageTitle = pageTitle + self.pageBody = pageBody \ No newline at end of file diff --git a/v2/files/new.png b/v2/files/new.png new file mode 100644 index 0000000000000000000000000000000000000000..d4a9336585fa2589a0f8c9bc665a330871fe3e20 GIT binary patch literal 28501 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%0AD`1ht;e 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 literal 0 HcmV?d00001 diff --git a/v2/files/out.txt b/v2/files/out.txt new file mode 100644 index 0000000..799dbe2 --- /dev/null +++ b/v2/files/out.txt @@ -0,0 +1,3 @@ +This is some text, written in Arial, that will be read by +Tesseract. Here are some symbols: !@#$%A&‘() + diff --git a/v2/files/out6.box b/v2/files/out6.box new file mode 100644 index 0000000..88cd478 --- /dev/null +++ b/v2/files/out6.box @@ -0,0 +1,85 @@ +T 23 60 36 77 0 +h 39 60 49 77 0 +i 52 60 54 77 0 +s 56 60 67 73 0 +i 76 60 78 77 0 +s 80 60 91 73 0 +s 99 60 109 73 0 +o 111 60 122 73 0 +m 125 60 142 73 0 +e 144 60 156 73 0 +t 164 60 170 77 0 +e 171 60 182 73 0 +x 184 60 195 73 0 +t 196 60 202 77 0 +, 204 56 206 62 0 +w 215 60 233 73 0 +r 235 60 241 73 0 +i 243 60 245 77 0 +t 246 60 252 77 0 +t 253 60 259 77 0 +e 260 60 272 73 0 +n 275 60 285 73 0 +i 295 60 297 77 0 +n 300 60 310 73 0 +A 317 60 333 77 0 +r 335 60 341 73 0 +i 343 60 345 77 0 +a 347 60 358 73 0 +l 361 60 363 77 0 +, 367 56 369 62 0 +t 378 60 384 77 0 +h 387 60 397 77 0 +a 399 60 410 73 0 +t 412 60 418 77 0 +w 425 60 442 73 0 +i 444 60 446 77 0 +l 449 60 451 77 0 +l 455 60 457 77 0 +b 467 60 477 77 0 +e 479 60 491 73 0 +r 500 60 506 73 0 +e 507 60 519 73 0 +a 520 60 532 73 0 +d 534 60 545 77 0 +b 555 60 565 77 0 +y 567 55 578 73 0 +T 23 31 36 48 0 +e 35 31 46 44 0 +s 48 31 59 44 0 +s 60 31 71 44 0 +e 72 31 84 44 0 +r 87 31 93 44 0 +a 94 31 105 44 0 +c 107 31 118 44 0 +t 118 31 124 48 0 +. 127 31 130 33 0 +H 140 31 153 48 0 +e 156 31 168 44 0 +r 171 31 177 44 0 +e 178 31 189 44 0 +a 198 31 209 44 0 +r 212 31 218 44 0 +e 219 31 230 44 0 +s 239 31 249 44 0 +o 251 31 262 44 0 +m 265 31 282 44 0 +e 284 31 296 44 0 +s 304 31 315 44 0 +y 316 26 327 44 0 +m 329 31 346 44 0 +b 349 31 360 48 0 +o 362 31 373 44 0 +l 376 31 378 48 0 +s 380 31 391 44 0 +: 394 31 396 44 0 +! 407 31 410 48 0 +@ 413 26 435 48 0 +# 436 31 449 48 0 +$ 450 29 462 49 0 +% 464 31 482 48 0 +A 485 39 494 48 0 +& 496 31 510 48 0 +‘ 512 41 519 48 0 +( 522 26 527 48 0 +) 530 26 536 48 0 diff --git a/v2/files/outbox.box b/v2/files/outbox.box new file mode 100644 index 0000000..88cd478 --- /dev/null +++ b/v2/files/outbox.box @@ -0,0 +1,85 @@ +T 23 60 36 77 0 +h 39 60 49 77 0 +i 52 60 54 77 0 +s 56 60 67 73 0 +i 76 60 78 77 0 +s 80 60 91 73 0 +s 99 60 109 73 0 +o 111 60 122 73 0 +m 125 60 142 73 0 +e 144 60 156 73 0 +t 164 60 170 77 0 +e 171 60 182 73 0 +x 184 60 195 73 0 +t 196 60 202 77 0 +, 204 56 206 62 0 +w 215 60 233 73 0 +r 235 60 241 73 0 +i 243 60 245 77 0 +t 246 60 252 77 0 +t 253 60 259 77 0 +e 260 60 272 73 0 +n 275 60 285 73 0 +i 295 60 297 77 0 +n 300 60 310 73 0 +A 317 60 333 77 0 +r 335 60 341 73 0 +i 343 60 345 77 0 +a 347 60 358 73 0 +l 361 60 363 77 0 +, 367 56 369 62 0 +t 378 60 384 77 0 +h 387 60 397 77 0 +a 399 60 410 73 0 +t 412 60 418 77 0 +w 425 60 442 73 0 +i 444 60 446 77 0 +l 449 60 451 77 0 +l 455 60 457 77 0 +b 467 60 477 77 0 +e 479 60 491 73 0 +r 500 60 506 73 0 +e 507 60 519 73 0 +a 520 60 532 73 0 +d 534 60 545 77 0 +b 555 60 565 77 0 +y 567 55 578 73 0 +T 23 31 36 48 0 +e 35 31 46 44 0 +s 48 31 59 44 0 +s 60 31 71 44 0 +e 72 31 84 44 0 +r 87 31 93 44 0 +a 94 31 105 44 0 +c 107 31 118 44 0 +t 118 31 124 48 0 +. 127 31 130 33 0 +H 140 31 153 48 0 +e 156 31 168 44 0 +r 171 31 177 44 0 +e 178 31 189 44 0 +a 198 31 209 44 0 +r 212 31 218 44 0 +e 219 31 230 44 0 +s 239 31 249 44 0 +o 251 31 262 44 0 +m 265 31 282 44 0 +e 284 31 296 44 0 +s 304 31 315 44 0 +y 316 26 327 44 0 +m 329 31 346 44 0 +b 349 31 360 48 0 +o 362 31 373 44 0 +l 376 31 378 48 0 +s 380 31 391 44 0 +: 394 31 396 44 0 +! 407 31 410 48 0 +@ 413 26 435 48 0 +# 436 31 449 48 0 +$ 450 29 462 49 0 +% 464 31 482 48 0 +A 485 39 494 48 0 +& 496 31 510 48 0 +‘ 512 41 519 48 0 +( 522 26 527 48 0 +) 530 26 536 48 0 diff --git a/v2/files/output.tsv b/v2/files/output.tsv new file mode 100644 index 0000000..fd5ecfd --- /dev/null +++ b/v2/files/output.tsv @@ -0,0 +1,24 @@ +level page_num block_num par_num line_num word_num left top width height conf text +1 1 0 0 0 0 0 0 600 103 -1 +2 1 1 0 0 0 23 25 556 53 -1 +3 1 1 1 0 0 23 25 556 53 -1 +4 1 1 1 1 0 23 25 556 24 -1 +5 1 1 1 1 1 23 26 43 17 79 ThIS +5 1 1 1 1 2 76 30 14 13 88 IS +5 1 1 1 1 3 99 30 57 13 83 some +5 1 1 1 1 4 164 27 42 17 55 (ext +5 1 1 1 1 5 216 27 69 16 71 written +5 1 1 1 1 6 294 30 16 12 77 In +5 1 1 1 1 7 318 26 51 20 75 Anal, +5 1 1 1 1 8 379 26 39 17 82 that +5 1 1 1 1 9 425 26 32 17 89 will +5 1 1 1 1 10 466 26 25 18 81 be +5 1 1 1 1 11 499 25 47 19 77 read +5 1 1 1 1 12 553 25 26 24 83 by +4 1 1 1 2 0 24 54 513 24 -1 +5 1 1 1 2 1 24 55 100 17 81 Tesseract +5 1 1 1 2 2 140 56 49 16 88 Here +5 1 1 1 2 3 198 59 32 13 88 are +5 1 1 1 2 4 239 59 57 13 82 some +5 1 1 1 2 5 305 55 91 22 86 symbols: +5 1 1 1 2 6 407 54 130 24 64 l@#$%"&'() diff --git a/v2/files/python.png b/v2/files/python.png new file mode 100644 index 0000000000000000000000000000000000000000..b3b5b2220a609b23acf42fcbba221cafea22f043 GIT binary patch literal 7821 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 HyTtqtVVYXp literal 0 HcmV?d00001 diff --git a/v2/files/textCleaned.png b/v2/files/textCleaned.png new file mode 100755 index 0000000000000000000000000000000000000000..cc6229e4748614183d00fe9e1ee9a4d20940e8b7 GIT binary patch literal 9449 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 O1IS7$NmPj$2L2!0LUgPE literal 0 HcmV?d00001 diff --git a/v2/files/textCleaned_100.png b/v2/files/textCleaned_100.png new file mode 100644 index 0000000000000000000000000000000000000000..7534eb4162f77d0eb1ba3e1a315b9dec505c7578 GIT binary patch literal 8899 zcmc(kWm6jru(ng6&|-mN0g5}NP~2UEyK8YT9^9e0Q{1J+-617VT#6NU3GQxrpYsFW zujkC{T(h$?`}LZ8XQNb=WwFpn&;bAd7FbS79RNVm{jaxvhx8vcS}T_T01%_Cq@*fX zQj${D)!E9{!4d#~uZ!P2K@o`V$)~QDhhw)Muao9^WBc0XNDo#(4$4mmr)Uazu2bNxhAtfL^&sq2lD0waU273PD9KN>95EAyi zUcByy7YY+fZ!17-CJ{E21TYoA?J!leSRl-k`GQBRhSO_ru;5H;e$Y}kk4?C==TgTh zRYwAVASKD&A_on;E4-3UdB)-AT9YG{{OKje2qTFxB}*2?Ep*|c7E-68dTKrQMTzl# ziTMac(9ayzDpF6Kv8~lxc5cKWQNu!_&|dRrE&_ifZu}HAKc`9CP~mA@ZXnKVT`71W zG{^|r$WpCc{rApF?3+T+9S?%=^eTbF?Ri{OIr@v#9%dcoeJAhK5K^xp;CHH;c>E)@ z{#{bnD$!;n783P1S%5jiWkBcp<>v3d8>{Jpt{ad*iYrmRRR-9?D=@)1D2hJ>*QD3d znRyx<)bZs4)R z`^4|d=Jiy%Ow;SV4&`hk)60WH5NpHK7?q#f&i<;eW=W`?(1&eUNb9z5Ox`J;Lx(hx z*f$rcrkDI4qa-=ilZAL6a=8`D#$wJx4c(HsK4<^*V7f0TGC@EosyU2fv|!2t=NdEY zhvu2DNZ*4npM!vjuSyRyecqjP_})vQeCNdCB9vRsqM;|+6gY8z=Mm~&dDFkWI=Ov1 zWpVCO|4VcdOLrhgEJ;u1~RGR(v%&p4Ii3ewl4$cG@}-(7t|eX-^;!FUkp=Uv|Uo*=19sOiBNVECk zN&8GZ?qtwPDW&|Ig1r66mDAN8!7gyoin`+%7%G>)FjOsV+9rAo;Qu`-nyf;x818>R zCJE+H_d|ER9053-90(c=6s_JGW7S_HB(IXu#2m>M8+;Ij;gnDIS{wi&;A>%2D$VFF z4q)C5thTdHM&ff6EUt{MZ(&)7OiuZ(A150>2>maL&u`E%(!bwt+CsXAs-8k|q>ey1 z!1xgSMAV7k7)sKeP-<0FW^pnbz~=%o_u#<|CJ3rARXzJ#t6m{pq)Hr=O-j4(xL+e7 zRAzD?)PrUz$%a4;VaJp@LwJ{=5`~P6o-;Zl9};g%yA6a;zZFby-t?} zLmR&`x=KmMf%2B}7M}-b5Z4_^_FMUD;KnyT&m3B1QtLRHEov90w$V1yw$3*36?`XR zm2mi4zZKSl6WJX!#)d+>vzVpu=}sgj!g0k`?bOOi)lmPA}Jw!W0 zJKvMd@uMUCiPBQQ62Abt0IqZOs8cLb+*1rzv{g(~^jEwZ!yJthDkSXn{=( zI*pO{2jq1Jzi^{vNrv>L(?o2e4fq|I%>$jt zoit9roQ|&CwZkF0kZTB%HwR=1Vg(`g_JANmI3Z`30bAyKGjNQ((XFGMY&d+2cROJV zIa;BjK=#Ne-+Ho&A811Hx*#3Fi~kK z=^W|!7_RS%F%3~!F#}P?L}Ylygfj#fM4#|U2?wJqqtK$@QKD%d3#h_Z5w6#D7yz6 z0(&Jp3>&=WTDyd!^8?5s{(kJy<P^@I+IN=&#B~%FvX~GR?+V#wN16zrcAIGJj-G zo~f^<)m6@fn3_2!IbKYt!;&2q9o`z8G<2A9w-`XY_D@mmO&y*5dmo$Qek!$%lNnT1 z$2rEIpb2_+LOPv%WuE+R32qgzQL(MbjQOMaW%xb$rUcpr(*$4Kd0dsf$i0$0z~8)& zM>a_|mi8mu++07oJk<|ECjSU)oQ|9_olXi%34ay#xph6pT3hZ&@T72AS5k>BZ?q1F zlT2ml$~|vdo~9jft8ma7QIGo^d0Rs!?`@t+p8T%oZk6tGZ)a{hH+Z*ekMa*hiA+I> zWOX<;gc%g~oI?UXxokKW_}c_fD7J{F@kek-@R!>2tpkr=gTD;drPf`1i#w0myt2S> z1*70^;!c5v!wmC$i~Eb>rInC=!^Oh_dw6(VuJ1{WEA_1U_kg_rDEobJ#Jrwl44 z7^xJ3smi zb!u-nKcc`VKP~@HK~iCG^ms&IRBLqfQycSyab&HmQGWYoz_x9vnx%P~``nye`e74^ zDxTKWuYZlV-nr67gG$ZWTCHKuyK7cmx%$94il6z;=guH!cgK%5OLMbRRf~R4@ngBu zgsM)6Wq)S>o0p20IF-449-s|Y6V@Si3y>Jg11lRS z8qo5z_}gs|PQ$ih5}N=?P)tBgVC{+xXn#B$0$H)#aIYSX@ftd#uSY|x$#saGbH8Nm z`&%PU=V)zRZ~gn9nt$y8XDK*DF9TTewKJSD*)zQ#Z70irE!Hj0wWm&A=et3_`?ud{ zo!OstjXuvJd7E7=|B}A_Gkqq%E*P-z3~9t~XnN%I$nBY#9%i3g*{!A-`^BIW`Xf2?j?rlO6~MOn7h`na`McQdHrxWR70$ST*-ZHZ@?bwXsC zYK0xfH1Lo(`hFg>6(*c^szpxVt8h!;ZA`c4OOROOL-dsTr2WMGunyb@`r$R~s(E|4DJ5qu;g$0PII5R+I*3iZAie=iv+Lbk>ypE8t5o6O>-$S=L!Ht{|* zrR-OW?T$u!x$gu^KAz}VUcjS-!GIzCDBU>A-Dv$H+%?+u=!)FPI~V$mz-UOFR=X-- zysN)-ww9$rsD5kgCWmyM*}n2r`))pVo^`E%ZL90Ej`PaK5@_1Jg#Tq?E`6pt$+5<( z`Rt-4^wx{)?(BzqnJ}f7xBHpT&#Ar{&ZnRE^=@n}t&dTCDZ4$#0jsaS%85{8(f*;H zVbWn6h;IAe?s^}^%;FBJtxX;LNUMbn;t%#fYkcu;wKq>5A?s4Fops>uyX&)crMUpU z$0@5Uug9ygTonduvb_bkjHt=u)~(k0QSCzl21d-*`Xnoub*5&aX57)q>B$7ABKY&B zwSq|}E$R6#pe}Us z>+>JA+qKtTrCy|;8*M@`4BiBgWP9ZI`?xKu3;N7;#{> ztN3Rpbt8tATvnN$*3uK7TvJD$B2tBz+ekC}p%&-T0&cLa%gk*bVO7R3y_jm4JiI;i zJ4)f1YM~Vr^hHK{D@(;dXx(*HF={>E>V)houu7U}GqnC=GgDq@i$Dqe2K(my4b}z5 zEfD=3<~8v0J$=M6mdEnhM=J^^rIzS#ao5r{WAE9S>aDRY`i(>~Nb`Rr2L9am)|(Vk zEFEM%GgGd6G~K1nT}R&&JS?ggY#!yg&b56v2b>=4p`-NYv#=PwTt?4z^%#u z5XAcpBgIvgg)2+H{)w!yOw~*mVevJ2Q{%S&x5~YSS|`7vU3*#m?t1UYfU`A_ODt|y z>3AIGwWB|4fVJeg+T0FbIQ>@-?~yEjK(1yzaGHp0i@Xw^q~I2wIEV|}S}R|ioPs`I zKm4xl#gI(uW1YOtQ-E%enUPxh4`0cDRXl2bA+2q7+AhPBKf7nJrRQA>%*?t!-!lL2 zHp3bBkY80BEKm!$nd((QG}2WB*u^80A4d`M*wp;iDs4@(UF(t6$|SI7uf)IAP`wD$*qxtW?~ zgWOv%)wC5om20#`^u;C3Bvl4)$k_{e+_+B@=QmoxOC~w< zOjHo=W-R9CTPb6MKOP$+*b*!fcDu&?^LhPu?O&(0ROPh#jadSeD*Ibzp~rIG+S21U zr=;6y&=omT4IufcWZJSk$venFGK|yR0ehYHN-2E0?3XG30ovik~}Fv1hY(B(Lv(J6UL6W-LY!DQl>TL zYhN?#2^XY}$!G_Y2gA22zL_K$G7|@V>Qu!(!Wa&qqlp1C`3EM zAHKuGkm#_7Da`3F63QisQB1IHK+nOM&YvwEQ5rgz=@I`qDL1z}y)WK8yfI@m!alb% zc`)=xdTS_KmPvA;A*IH*Rvhi0T72qK`W7-xhAg^<;(l61vK$7?noGJ7I#x=zX@-^0 zOmBhGZ|RszZFkAj?B*PrQw}dkEXHxF0VjZ5F(VVAi+AwkLvRtx@hw zkL$;wfp(>tlNV$pkQiVrh++uI$P~j*Oh`_)YyHi@Z;pOUCUI<4uGF{9VrQo4y5wuf z<-J}TlZ+y%c!&6hZ%8DL3V}t=h43%bAZmKx)rZjtj{z$)ldU!v<2Kh7BxAflBt(ux zDs}wVAob)++FhYJ@(S`0flbtAfCnoUsS@F5G{-l&pj9Ow|3|Y3F_{eZ1aPix7=L+7CRf9_E6@Kwqkj|n~$9TEN8sCQd}2Q~&Xr=}~iVE1=H zy#RiwPX19sU2eWFze~TnjPFW-m->BVk6FGV#BS_RlLVwBhhftvz-MG99J?0% z+SQx7`KefZn>+=3M!V7KYR{;e5Xgd7Mem8Iqgp^;vRx9SZq0C0=AP(d{p1wlTeS-G zoju9D#iu;I8lmexFT88M7Cc?Yt&4{U@|3W<(<$;kqj>YFGcwb6h-x2*or*gM@tbYc zttQn-os6txT}cByYb%~j9s`f!$pl4+d<#J4;+@a?oNobe<2+((m(SG%%g{& zmYjut`51HR-yQ$!d(0Y`8PEHiTz%zLx%6_DEwV5}wwCgEzm(GXQjCnzmjNH6L1HT% zNL~AxPzl`*NXXQ`=M$OXU4G_A*dK>nP(OG3f#KHkY~5*>+!Y?v1LKZ}J^(Nyh_d1K zb1<76(!&NTDDv-6#X6R>1pi-u8*HoKo6UD^AM?aqif;=pRq<@p+(D1ns0l6usb)NN zH4F3~fv2>mL?R#rw%)pAs&=ZdrnY7uiV95UP>RGe%b@ADNx|Lw+UmLzvpKd`FQ2dtg>S(wDCcfCYHwP06oFw zuDYvc6BnT~maXZ1t1fs_LK7IQ4=UR)RU^gF z-$2n8_(e#3<8LF)Af8qVeL^Yu522~t4z`o!gZ@SbxZTWWwlPB?7cf_);4&{!icUtY z!Fj`%hKxOZ+g|~T+0kL7LTPsu-S$j}c24}O#?FjR4K}a;T-%k-P6uxr@7e`9J8U{t z?*58&ER0^2RGDnrE*C8R-QX;T)6ggvztqMKICXCZ`a1ZX<}U9H&GrCiW(qlH8a>_S z^5M|Sar@7p01dqzgXib&2Q=>}^IzKx7x2j4joomQB&c!CesyYAXZ2JKe=R|k zQtfChh3=WI$->6km-X*Uj0^j#x@-7LO^ZTpdL8^tyNGut(%~oD$kZS}kauHyJ0lW+ zl`QDyDm%L}JUjbHTCRZ|^>_D1F2b#4l4K`#*l0x};oj|aJ1`A_R9O74`+Vfd4gf&c z21|)+LUK-4mtC)_u!GFJ#sd+p#~z6fporXX98lFAznuo@7y9pU+0UzY{%-&qbBHz8 z|6UHx)Hp~0Lz@46Gy=l{lg^{PSph-0V4qi|qP`+xGuP&9L!ooJi~Xy%WLWEWtv;ARJ@0iRWb%7h z4i##Y?~7<-mJXULSkuoh7h`^sp5V$mRn&OsYZaZWAVyeaKZw@@H!XHa zjcwEaoIisaDNKG)6!0}D)T4bL|331EYg>BhT;6y&uHBRaM~z5@y-f#B&_(#Jb6~Hx zlghDobxup6pp$iT3w&9=Wa7BqbQK}nT_(d5Pc|wEu@1?Dra#)r|~+j#W@+?t@Hr-H8-oM)ZHiADiZsR2I@5 zdnF8qLg-?y-?!P@b4d$M#@M-}COExA*yX2*;z8J88l0fl6p z=99d?oer{9ok^mzrWvm>RzDbQpJ7IGG(y^|BUBqAx9DLKaoz470y=?wnmIN@c9QkD z=OhMf3_Zg1!oHWn-j!>I@kA8YkXpV^3nIm|$IZ$5CyvM|ONtzC>Rc@-F{|vPa+O_+ zgmTlehohE+d@YFye+n<$+8`8Sxa9>o6j?+P8zj4!jHhB7hLIzdaA!uIaY1HUlbtl2 zggZPwcAA3~tX8clyqkUoROhG*` za=<*yKs(vFE(e#n=K=GBCcQFmGnObS|1j@W+>bAahUuld71kr>a1+aqb{iFe#4}7L zf)$+h3Fn*y7M44trNJ}Zb5zf3UU&Yy=&H~09?~){>QIWM2W&eO{^i|uwzpkbdcoiN zlmjEF4@S;?KCKiU`sC{F%`hGM^#a%ttT$WpE3FJF!+KZIpTRs*W%`-(4iMqj8%j36 zr!b2rD)P`KhGQLgD;00LY?uk~MK{Bf*z-#FxNeBEEmLi*)L*vdKhyCZt^KK4N&@fV z&o>8%3OUWW8^N}>tzZhIEYPkw(a!5&~dMjwS5s;E)E_ADzACPufZFFM9 z+v@40r2b)ZXm4I^06w6jqbN1sXt=mrDT@p?gK5&YSHmvnw=!!S5}ZF7Tuz173}+gK z6#1rx4R|(ma9}iwz~U8(vvq2|>6^c%V>jm9&)Y9CE1Ad1{V34Nu{qM$Q_p$&x4}EC zV;s8`1)B-4);G!oQ#(udT2yH~-Mp4VEFimV>SLAZJwo3JJ1K{wy0MLR)pZ|%H+%k- zX7PgS$3pjDnr>*;C#=+Lia``c55g7}ZynE*%3yKv}oHEeBNvj>$ zpeSM}PcNX;L^#`)n{0lWN}+;l3>!MIdkEqR=!VD}&Mt{Hv*)N_V?z(^3XWL7f=uXG zeI=kc7FyaH69q(?Dl-*Jn#E^jT`F`Mn$_o(nh%GtWHY)jTSJc3CVA18Wsv?!c%)?r z^wE6W+eFo%)RqE|f{-x$b!}laH`m;EoSDM2$lii`1qPw7_4_;Pn%3s64 zZ8_;x@BY*S?Z}=}UZKsUtT6_ws>v4M3`9ej!+i2C2w!98f>q}+Od7_YpELYkHCZH` zf8qC4CI!fQ6@6nb*RAtwE7*U$@})W!-%?Z1DFX`>(uRUPEOq=WpRvh_;2)BC&u#`R z_ZnNfG#@5^v>6R&cb7CJM3<^3Fum~YNw(6RfQgDoc)*U!S`As%J|{~Ha;|k+W%Tcz z7EqUvSt?6t;iofehKqGdhb&lO7$o)_n20g|!{*Iqpi?(Xoq;zkjAuDZ?r*2TKaZ_h z1sopeK(hKrrxcUgN1K}q*fQGw;ZA@0bIlw@JrBnxbqDc;9Yz&ZK7;1Z0}gD25Za@+ zWKNFujcx8$yJPj2kw3zB_U&Ie#7z(NzA&m6qr+=)6Z>=qm z3479F0z@wrQ*nIs@7}l{ek4dN{ z_Xg|hnAwHuFR$Erv-~NcJ$a=1FHVWnbg!vC&A7yS+u;LzE*6FgAl}b?@4^5gNAV)h zS0@cQ73}b*0r&H-w)lMW+KAfrc49G{a4t|Is9gZx{eD|KHaC30{HI Y3*x1Sw@UW^B}D*OT3M<_!ZhUn0q^%&)c^nh literal 0 HcmV?d00001 diff --git a/v2/files/textCleaned_105.png b/v2/files/textCleaned_105.png new file mode 100644 index 0000000000000000000000000000000000000000..2693225eebab3c9d4a5b3b3d2a99394f6bdf8fcc GIT binary patch literal 9010 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 F{13i0xibI& literal 0 HcmV?d00001 diff --git a/v2/files/textCleaned_110.png b/v2/files/textCleaned_110.png new file mode 100644 index 0000000000000000000000000000000000000000..e87e2e1a91abca521e8b865c6eaa659c04971a72 GIT binary patch literal 9105 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%0DW!BA-Tp8*;8e#ZUPl1% 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 literal 0 HcmV?d00001 diff --git a/v2/files/textCleaned_120.png b/v2/files/textCleaned_120.png new file mode 100644 index 0000000000000000000000000000000000000000..d4bd593a56218d0f7b64548e1933d44199010fb5 GIT binary patch literal 9173 zcmc(kSp1wx|gIZLQX-RRDmP$zDoIT|r8U zO5MZN#@@*q0PxFAGe8s8*=pT_tmFL?p1%FxM1d_qr`cs~!_tVFvrGz+s9EFsS(3@} z(U^oKG|azg=t;IDps-#zyn7nf_4;(?+2ecO{Lj>}wmHh11CWdKO<(`BGK#po9o@>* zLdf*r#dw^DkKzC*W4`QXd=d@Zen+EaS2D}vmb!n~A6F0E>v*K= zNCAEb$@2GzA;YMJw=$_OxB|SJ@?=uwzT!*+q_O7YDPnkq?z}X@n$*;=)~i6ISpV19 zPrY!4`O{iun%PUv&3fz3?RW&5fzW7_w}ScW;Ebg0axu#*+O%!8FO6#rBw4NNzg|BY zWrl2LtJiKUq1uSMDTO?Ifq%TXP2~1`nG{ov`7C{iSx5EQ`E_;_q2CzL2hxy8cfE~7>6_W!NEhN>$i4) z!=4ff7>J*Jr`n099JW36lPWNF3y8A!g5?X}p_W^5K8}0*n14^7vwVK_3zZr#_)HQl z>F1hdJ+(gb+*ZF+8Rz)i+Q_J%tuZK8t$fcFsQzY=jO^3=he1qBMf8i$*l1WN*n)Pa!0IU4z1dah9?_@cnw(55E5E36Z|(wVy)y)5lLUx!>w-`V*Wb zCTxc%?P%Tf&X8=Da+Z8D^bjy-M?drd*u?QIhg##8pOuO^y zL-#^5>0;DMC9T>=Nzs1l!Q0UIigIK#yIZc=>f z7a{R`d~=3OvX4KkE%@{)TSCaqah7qgqxQC~9x-#@6AgUb4rn6}!W0V|*)e!TLH|{* z&c+l3;#I`5{@EbgUie+ZYJpmtg#};dXQd<`Z4ZTHe9@tL?~Fb#Z8i>j{7@OmDxQjD zR1r?0T4Cd?^-+KqV*skik9;{-^Kvd@Vud*5;ZJ*^*MmdmnxC^WKY*RVh*syy7U^~R zY#6!(RWW~5^qi>fsqP8B;26bsN0Ilbehc1qQzf&Fr`@G-XKtHlBWvqylUOHk zAyJEf{AJx%xpH|_|4t){Z}!7=5NB6xSC9FKDV&*?=?`-kGq!qe2~(+E=}}qcZ~cI&ploF)bpziq8!O%hEC3Zw|d~jTSEOn$dt2gs7qsFsM zEKM9o(nXR&5<`5!qs;xA_&o_0i9(!0+}}7H;NtZZ#RG%0QJ=xbnCGj-mLbl<}Gh6l&q_40*6}$ zrbb-A6hlGz-9KLWP_m^$2h(XI_s~ZW69iNlR8>?z*s|D?LzFl&l|m;HPO0?p^f>?F zxKOxgU3|WnSbu1T`04xI`62jo`>p!f_>uT~`yu-A_+8!v?OGnrLof~}c2D{o_Kn(8VudY`50q})t@>WwNgnI3h_C|RIe@L2@!C=F~3 zh{;IH>G zw@@G)1B?leyifLM20f87Ti zgdW5kn2zy`UZ$vlT+`vDRE6T2qZ-7z#k#y2!he>_+kVki>=${-*h^<=tSCOUc|_fG z#8jdilqg!u>c}r@@##S$NK>=pSDBlmPKdn`p@S#vC%wGdyfl0#ygd$zj>z`9cB+oi z4o`N3jw%iqcKFS;4vD8%$9^XSM{%b&rysmAytj_gPW(^Pj(`h9|8N$13*mpor$U_E z*0#$EBP~LAL})?D6&jTq1zchEMeZ%vWccs!#ZpfhZcE2YQB*FoEWm8wshsZ5kS~l` z89CFJnj2|#Rr8_d7Ou(8*HfAUDNZX+?~TqII?VZ6jQo6$E|49~on3(a&&~1WDs7YG zMt`c~ofFPcg#0`GI$Z)~VZeLBdnIgSY+G_uffxZ<0U!QZ!FHiEp;xaj9;&_+zRBJS zZvJQEJEYsIN0FYM9<1)L`VqhBzam-};}^^q(<0I$-$VlLJ1lL4pxwtmx(cCcdD_q)Y=m503h`TNf8uY0wp1;=7U z=EO*R<)m^*AU&Zd+ zT48u7AQ9}~%@U7=8|McW4gF4#QIS5ChDdXc@c&(pD@nwPKNq2L-`@X`=+5B&5BoPx z3bxPC?FeOjf&7eGTL7xyzIXXv-S*D@pq89+B8a?1nAGb|;kWU(fZYc=Nb#Z7#Xjv= z>WFfpiCUooby*jGjlVD)=~=ojx+gV;k+Wc39;yliF=V7?wfMw%oy^)l%^Q?`oqo(e z7OL{N9~U@lpYfcYKF#M;DpN~TD(EuzE))&pq~+U#{RI*Qa;I_Ma%z~ybnxa|XD#{} z9Nn}}IIg^{OnYE@RC>01s2#q6Z>Pw*e*2cN6bOm22bWO>*N}UVN5J9stugX?V>> zeJk6&aCG=LuEei6r?{jfr8F{eHZC}!Gcm#1#xi9ZRV!yw(7qG2XJ4XWZJFk^xag36 z(nP9`uX9_m)OhcoCu1_A(ww8y8t!_qY15Twh_gspUf_D=O6=<8{K;;0abfn)%6C`- zIB)LbTY9eU;ZmbB$a%~;$9M1It&PaXwPvFh*kEZkQU&99h!S!Zf>G!T`z>3~dG{Li z!Y-uFqu51AMN|?ODENeR{f)P()&pVDH>qnt79jMs@-<#8+;FBXQ09 zoP7kegAM2Y-k-pB zsLrM1W!J>Z0)oHA?OKJ*{olDu#Vw(rlA+f|LP(C|2&jTxetoP(>X?>0!Og-p13)*$; z#H7bI659jbANZffF5r!5Y|b8Mq}2|L5RCNn)&%0;>+YOC`)x_Tb=E0#KipkzsVoNZ zKhN4^`##@-^VAq^$q$zyvSMb>yZ1U*r?pRs7#Oj;Thkm09P>5HHIvRRE-*9P${*}I z{@M(yNUw-mG0*|DoziO^f@ILM_5f1A06LUyl6AGr3+HH!n3R|-%P`Z(VAUXS8F{%= zz);|{-J!kq7Id9{WwO&t<)&IEUvBgm%M_cL?^h??vM*IZPl9I<*e-QLh>jSeH15RW zP`TtF4Hd^qDXmIRYw1Zysi~t#75xKW+)lH|(1>?$QE0HQ%gSpX=TOBkzn*QFKDod6 zewzAawuMeeC=e0ly&N^;N87I3$_d+ltuBaxf*WK>cB5MvJ6VdtyM!v}P;4j~6zdw} z9tRy2^A6_*jUn<3%X{telMSVdN=uAe{GCh<7>$d$-WJ$9Ghp(+(VETPSQ-Bi&1SZ2=Y9H2xQ-e9#;~v@pN$v+vIm^=PrJ47YpQu*i!r@ zO!z*A5MNaqp(^wCH>$=Oq@6Cx7HIaa#&c`tk5>(iUO{EM?waPq-QlSbPiru*c>IFO z+2nxlzTtuq)~e4&b30`DVyPa|BUSc)Vob?L1qmcyH)(AeA@g^bSBkHA`N(L`@O3jdEBo=GAStQpN09g4+SakF*hxQ zc(q_^=qmfD*64~FN=R8q)tfLItZ2Wly^-frnN-Y^>{g;x&{FeMsnQVAlv9PIUhs*i z0kK~#!gwMNBgtgH#v`iusYEI#=GbQgzf5mgJH9hmFbFW1H4<6QGq1LIoj*)xCutY^ z-dyW}>J9RFInzG=v`cfqeQtPk*b!wv9Rd@;fpwn+Zk<=%2+KEJ?cO{~Iy|U8xIYly z?bVFiVhyYfY^3lOmcqK3;75Q&~U~ z4+SBd-r{cNbudkigIpw=7_<-i6RgY-0po{W$Kzu#iWT?BI|_M2z2-;?8f_rO(>(cR zYH%+LHp{EsRPac~b7LfDqE+HS*CepuEAYVaZB9pBUT4UZEl8zmsAZw|Ox|BtW)gZq zwwKmhN#a=SIC=WwQo7F4{#qAQliZ`wDsV8R&Z?GkxiKCXOP>9Z=#A}#<~<_z9Xh)0 zevTjA^HO&7Zr2=EH_&)Uw68H&<>1KNo&-Mm1= z{ujn1r$bB;9-wF#uM|cR;hqr#H&41ij!a}p*kYD<0(){^UU&Lnf@MTw=0v1pUT4Zk zSVnql7-zOwO0Y4NmRl>XZn+M>rnI4zY?CpYzOlr2o!@fYMl9N^`jL7zD)(u|RWHo% zab(`pvy|8$P^395IyI-BT$5T&;#LFB0eRvkW+JRWdPHm~^T&7X)cFvu;Bm zW+ZjQ#dx^{bDah3;ICcOq1-9N-i(n#Edo=t6a_P0{AcA>yUHH+=*LL^#tNJE$`+@_ z3vjxx_~(Tkxgq<6*P*L4Z;mL6rxRNn=9LYV0$N`Kj9RF>NgSekV_l}t!aId2T7(Y+ zJ-XnqUzb-oM1itqiBDZmU)+yhHxuW0<~{MuRu3tGop&a0aw~I(4PZ_f;hN3_UzYdX z^XPE9%KZ5&A_B2E031R&ieO@n@m*Y4Uao8F-EbfG5GJz(wmL89eY5zbIl4Z@CSqB? z@Afp4CdKXZN|KH z^@Da;izN0aQnBZC8*Oe6O{zcQu%Y~6@PXG+FQc#8uL{w$W_qgfO$~Cex`YP)*}w^0 zIM2H$pt`snr|-Thd}zKCy4b?2OYjr=Qq1K=ul)4|$)8`7iG`s8+h?y|86T2xqaa-SexxmwwLOTY?{{B;9nK)rx zbrr4%Fy%3PI9nQg&K{nh%x6!jzV)qIeZ9;PU7jc3OnrV_P3?RwLc|!%gn(%gI7@~> zo8^gBy?a54S%#1NqVr$ZUIgHdXQ9_LFWui2Ah!QFyVGv?D!u21C!OJg0G!Mas)l>^ zADr?CPum>CQ8S~JTUauZ0y986Y?~j@9n`i@`Qq+H_rGq`@$EFch@Y{M6WxbF7GLUW zmKi?bT+m$*i4w!H4Ys5}x*!p4UF|_6wE?{oX;PnTqo(^NB`^Owo4YE^=D2?46lJr_ zQ-c)!^Od0$i~H738@b-bGV2-s95<$t7t~*IYZFi>(cvFTKJ4M^rPXC%W^_<((D5*j zP`MVmnY!y|$^6xTcCA`sHI=sL#@(yry%&*s{S;Opt2&HTdS-(%Il|V&)>s{6Ahgz1 zciU{{E_}(hJ9lK$1xb!N-u$9w@QovSPN*N!Y4#Id))(?ijk>?kY+zupS8hnUMw)S` zfwC?5v#`YWOe5_GzD_DbVhKft@N8ZO=lR<4P@@yXVV<26Y%J`qz*{A>_LV4AFSFL@ zs^N1(=Aof|MbJu4OgNcv+CycxBlC%ai@=7dE0aru-P@8!yUOLo$bI8OyAV%@U8mZ^ zjA+O5#BK2(vmN`jUn?`)JY^7CTGgW0+PGnt?w#O3r|%beYx|=MJvj68g*@|(KAwvO zklvd~M|R>MErWfdmzVA*6#r<;iao|_NYughL4;XyuW8LuHRz9Kt?VD4>e(8BTEagn zwG*|J`j`4<%iEiuw|=fNEgx;@ZxXCFtq8XnbOWW;I&sy_Q&4a4e_eyd6T}7a zzk7ishYA1`_TwP{#O>U|0RUXmPt*WFIP(8{`7qctMzkQ2?dmnC`vf5*Wg0TbvL?PX z-CNBWI7j~TAI{PNUbu~e)xDdV>@qYPaG`Cx;aIv`OD&Xh`}EyuQ3oTt8LgS$!AJw< zc({q-Hi0^UdwdBH!=bN|n&pw&@D1z-@xX$4^z`d~vs&e~^)WWk(Y~k<=#$24smWvBf_kF_L=*m|SB=@cfB$h`&S*0jXoiURXlt^8r7OfLZePx;X! zvr<1k<#BZ=PkCirJLhT2-Ud_RTw9V-C|Ryi}%L&#Ii z)f`3n4_{ja24Z=mnAVupt{dd5(1}E>`!9ylqUscVAB~#hT=E(es&(8$=c}I^DG!fW z<_lgsn{PO`XywQ6^>j$iTF>LEJ1Q@)K+Q+TOGf8Na%+aq5j&;HyShqDXIcZ1^uT>ukgolkFb0S|V1v)Mo4XNP1(nRN^`)#9}zA*KJ`u{rsK%NSa$e z=Q^g-x?VOHsbL7)jOn0&2Zo!z{$5CpX5Q%QO3q%fF(M3(KeoPgBfI%qVqjlYpf(z2 z)aI&Y9e40s*T7rvS2J>z=-~U?!dcu6^O~2|29ExUGHvftv6ErStV(LxSeWYHuunT< zfs+yIup+T)4twiwhCrA6PoYz1W1KYkYQX%623IKg+~Svo)>}mPLv{4%pG9wE$%u}x zl?$oq&aW`;;dL?CbT~u%x!uC|!y>Ue{bJj-WjnCjg6Fmbyd_-7l6&Thxh{Qf3YH8@ zcI$^=6lGY-lRxXj=EPE`MD=&jGi<~P4p!FAC~Sw5@8BN4dj%6O-xXt6Hu*g0VN@Gp z>!FHG`EH^h%ZjCwwg{p?t)VwvRg~i!+=06;%Xqz_T+;rk&OKV@^Qq*etV->PxtFB; z>pRY(ks@7RIXY6umt0MWc%AqXR=>12G-N&oi0pVg?*FAhv}%?jKNaG-yUgrj0qV!<&ALutI`@|BMCGcJ%U7uxX4vf`LX3QZ59t1^e(6QSwAat3I|ujOnX0$Z zHbQ9!a{`psuBkAIEtkE>$tDOvnQ~bxb_WmyFFy9c(}W zrDa#OnM|8mu9=*`<}2uX(8;# z=_(l=nnsS%s-^~KOEd+2c5@jGiyKizvJOGKbn}Ep?#|GY6D-*55gpg^7akmIGB5)D z&3b;EWJgs+#}za~YstiN#sB4MG{eZ_sL4=Ga86QUi_HzEhdig-kiU>M@_UP(t1!Xs z32}$e5+Mg63(@vg17BvARnECi)a-^DZ%U{|5wbSobETnFt^;ccO24W>f?KTwy!eH({uCu>D6&E(0&7XT<-}QLgd%DixF0xV#x_mn63sC_* zKUTZflkj|mI-ZLK%dE3{ukB=b(0GTfzUkdHah%zSX#4!+rl|Gtz_4C%Q3etcg}>(- z^g~N8)~M?;!G^-^@FVM1I5Q?G5=f0zCiYk5#=O#fSmv2MyALff!{TfLyoj>7_5JCM zf)m~BD8W{|gTkr2+Uyl43!U%GS|9AS2wk!&bJrz_jt8xtqSc|w*UFj#xYeaA<5Lg8 zrDpgyIj!smb?9F}K+)nW7^OohtKBdM@Y}L~I2`-HYG9oF9BD*l*cgiOa&Tc*PDGO( zcrv2CEFq(}gE8C2@r@D=3oVVjUw^c9qCk+SByY(XPV-%C5ihHa3;sEfk z*;E52KgE^Nsx~$N2`oXjwtjXf`k2nHy1OQ>p@Vu(_h_D$2-8`6wWaU@Qz@YIM8Opj zQH>_$2}>_G_QWmIgThAQ!w!s~t!;yvJ{fKZSw5qDSm9k-GrER1zTi3j_&}HVbP#@t zS1vLM(G*T?B~OsOH)%Z~gT3l#ZKa&;-$NGy;yifbFX41;3I;Xq;`W@D^g=g?&(Dkk+Yt5q=Et64lnUMw#Mbt z^PzW;juYHt#>`_Z$+JgW!G8fH!rPP$+{0CU!Ax~CQA{7pSFX`~O)#iF+GM_HkP>lE zYhg%q6QKs~9x&KGoAJPn_&8+h6z3sXFK^HkiawjS+OG5)TA`5?&T6a5IYU{sv`V8D zTpb?6XNyyzflIhqlu|)r%w##~jazktVvf=eXOd{8wN4Q>Q1jwiWq^E`u}`Ue0JwVD zGXKND2Uhw{BY5POpqO4eYN3#^y_Iy2e#dk%!aHKH{>c@{Bh3@@p}TFfp_a!ewy$W`Xsl(b%OAOBh)rd(em&%zvkv-_5iAG zc{`I0^*A?mY;lM#l+p43&l=_qu+J{i>J!j>GP*=Za(!Ts^V=1Y1gM7+5qvgg@DNbS z?LvZ~ZtlN_Pd!Bh077K!HVsA*EELRYd)hqzGnk3tvB9Jb#cmtcSwxm?D0lq-X*h>` zLbIBct(KJt>Ln)_TMPECQ$FtifDShUWB@=ij27uXv~Hum15okuO9B9>SpTE${}1_= Z6IJ2OLiAqS^grtiP>@lTu8}kk{XgI?*>L~> literal 0 HcmV?d00001 diff --git a/v2/files/textCleaned_125.png b/v2/files/textCleaned_125.png new file mode 100644 index 0000000000000000000000000000000000000000..c3d61a3a0a8b0cb630c4608dc1e9f77cdf9c9267 GIT binary patch literal 9305 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 literal 0 HcmV?d00001 diff --git a/v2/files/textCleaned_135.png b/v2/files/textCleaned_135.png new file mode 100644 index 0000000000000000000000000000000000000000..7fd2100379b5cebd0c0792e57f739597e85e2253 GIT binary patch literal 9422 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 literal 0 HcmV?d00001 diff --git a/v2/files/textCleaned_140.png b/v2/files/textCleaned_140.png new file mode 100644 index 0000000000000000000000000000000000000000..4cb6fe63a723a67c7b7eb57c2b425153fb9abe33 GIT binary patch literal 9447 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 literal 0 HcmV?d00001 diff --git a/v2/files/textCleaned_160.png b/v2/files/textCleaned_160.png new file mode 100644 index 0000000000000000000000000000000000000000..df5a3aa98a0ff1ee382c57894c80de083c937ff4 GIT binary patch literal 9538 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 literal 0 HcmV?d00001 diff --git a/v2/files/textCleaned_165.png b/v2/files/textCleaned_165.png new file mode 100644 index 0000000000000000000000000000000000000000..5ffdd1e59cf76a9faaf163b92657cea829695cd6 GIT binary patch literal 9421 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 f`)y07Vf6Yhs!xR$9ejrTwE?6hJ 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 DB#b*q literal 0 HcmV?d00001 diff --git a/v2/files/textCleaned_175.png b/v2/files/textCleaned_175.png new file mode 100644 index 0000000000000000000000000000000000000000..1c80fd5ad4f9da94be33086d8e71ba2d4dcc49a3 GIT binary patch literal 9311 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 z�oGDQJr=_X$(27Hpc5kFW4dCeW$?XMh|5U47o~z7)_X!Um6@+DMkNb=Y`~-G+IL z)N4f(_WdeaH~uWD+h*B>pLTO8a7%Hoa1FI$w%)f_wM%<@oK0*##0(#r%8y?AoqY#G zAo{qqz#{Ztn6n*u^yBQEBtgtcKv$|T?q<$OGQzxR7mm|1lN}i+%P&VTOC$M>yQK@0 zqj{)ZmmG6E*36JStgE0^(sye(sgtp-4TJLfa!zG-FYRWME?lcfP_*6DX-EeTVKdKx zw^QfG%kPWJY#eVf{rIQOr=N~TZ=3P6EOXB2`l|;-z8$x^@8T=72leBOFIa1;V{DnO zx6i|aZL)J`Z_rRc0l;_w(J+**0iurpkA!&V)~CT9<^d!cK@iP)O;xz$C$^T@PtnCQ48$zAxxw|QcBdDuVZ1ZgJy>MJFSj-txoGudKmstAHRfB zNaKtGl#;H=_jwiw%L#+Hwqct9t_;Zdve@)+wx4o<8?s)$&xTZjv8<>SKbwd_?u=_U;P(>>KYhCZ#Aa`Qhsb zdxiS7Dk;5)wCKzP(^S)RX`ga`4buq=BPC+=fL5wJ$ZGsp1rI1IfoRds#i47(8?zbp z-r1Y7{k>3dmoOP+POZW0=0LX!8_JTqtDNUtv5sl&EPb+xgXw1kMF*csLDr zYBv(AMb3%_jmv3dsa)jwq?|eLj>fN?X(9Z&)NMcq$tPyhdl$Qp)Wx9oKK#E+(zIj8 z-&gH<{&?xJXg!=R_CIG0&Q0XfCsp0JSFFBWWb-Z05o{(uKdvTsycI$t_GduG$)FgE z2U9l7;wwPAe({-Fj~sk+>}#)_AJ(TqSER39K9UggCC0AQYqoON*})0hkA47ZMgVdB zJ$)df1k@9l0T@0#T)u@YD#SVMYk^`Gc()DT`Yl($vGD%)wE~8Pq6_dD1vcJsFvaj^ zZS^wcH`H_Ta~wY42a4vFaEe+AuZo&VKa6~z`mqR}Tb6d?eWSFC=dIao1yWN?uS}AR ze#VJrlE&G}z>490%eReRt~#RY>7ESNdP3(U>}WM{@DpD?z7~Jo#ZXVJO-D*^C*B}u zp&25!&v(#s)W{V5t9aMBYK+`i(ySJ9FPrn3SNQE)aGsdlAacp68QjDWT_asXm7gZ} zT4(J|lfEO*1>MfSL*y)XFQh|1;-j=D;I}+UZ@zwCUq48EK%`oP zYM`E|)t`w+5Io&LHiV&?Oc`HHn9ehk)6RIdb~Mmn1F@Q;XB^kzag=1O;9g_LNmkFO z(Y~x_s?Rvkvi#$>k{uO-&y)I4-epa5Y-Pu}p=VERS8wsY=+q{AaXxh4@X*H1(r(cq z|1izhzC3nQRH?shx%PWy8q87(AtRG3e5;8WwCmdT_qOpl&sp0Wp6^DTo6BdJYjAU3 z$b*2cC#>m#e#)AA+OMx&PjH@*#(#FHt{~z2;QdhjM37$fVO2_{QjJ)pTh&Z8XAM@R zY|U5=k;a9F{xW!zX)9utdiiieV-s_=afPQO4R>=?dbyNd^k5x;qAqY=&lRJKRUnf`lo(Ct30RV`R zk|KgC9>30V){;)jQACrKUq1XfAtX&YcF;zoA-#q%EpEYR>Lh_V50D$rPke|H}uI28jcq!q5PKW>{f( z06;sK1O^aL^<>}tZ*nn>R2m!zMu+@vcz>*FEKop`4Sbzs?Mvvfsss{aQe-IzV z+&fLyjr{Q)=Y<`wq6Gku@==GBeI{31g%32ZtN9g4%S$84kz6wHxFH!JUgo}R`dekl zVqSrem4Yy;OI=sLyL#|s{%GX~leIw%bxZrZ8q2d2XFE52op_e62%UMIrfS9h&#JWL zzBTw(x`w`TIMS^@Y<5AhX5LLSb3#Q+xn~8@fHpXJjTtoWE2^SbaL~E(!xfk0dz|y=O)8G4aoU3 zO)I_T@e-o`rY0v&<+!OP3u0vqaB;Li%`6u=?Rr+r?DcvZFXO64MBZ7BK4mFUDWf|* z1-15>e&%e^%zQq4O(j+Pki|&l+1esd>uE$ILjY5BlU`X%c!a$^BkcJ`;Z2g_3XfWa z=0cmwXMOs0{LL9Dr8d=j@EW}JGrHJLv-%h_-3N6DCeF-=I@W3HX+ ztR@@M8TFr=c_YjI6c5DJ>nNGA(B_`}C9FCgrF{;kOMhpj?B!dMI65`fo+(+vgxV_X^`vVsr>OGG~Hvfo08jsb9eLeWF zs*kaY+g>U^5e^yi)w!+onoc#^C(n5)6Pvtb+Aa5+AJxyjD?KEnR4r?hJ51~v;3N>O58PA0Dtkz=>pVvK+j7j*&#w_yZ@qI zCj3sf#cq;;Tu`1`r;H9~Vrj7=+9F5c?&dqbHX_#HwHqQ#9RDNaK2*{@LO9*nWSn6o z%E2_ZsL#8^uAMK6OTQBQdCh@gU(xitQ<-_oU=WPnr!#hhxT;`2Ca?K9)ls`^D8|t$ z{(^gx-z0Rggjb$iq}rd;-cOR1r4q`k$T6gC76z!8Y6T07Kt|3-StqWFChgjlDP|%1 zN=mJ+-2*${eG?suEr`WaJ_~R6eMK6&r!0S-k`-_s{K=I~b?@I%Bt0lX}mf*=luqxO|{P=x{?$Q6Sn& z(O5nt+X)tg4F0(e!Z}2#>l2RTA!99oWY4iUXSi}>v^q2UL58osix#s+HL^<6;IJcs z3Bx$32UF0x23a#1WkJ*}eKqxk>+=V^kh8amLp43imUpvq#sjBDft0hO^kA&@s28OCE?+w*;(^G$ zZ2O_5_<`c0EV@f=snO?bUutZva__nCJ>4I14DIv!!JBq*^()q-DDQIH;!Cdr7PoNa zmuoVQ_2Z^KYxpu0!^smFvNzA%;d3*deog~ow@u9ShhZ-}Zb8o0C$92&(e4Atfkqvn zIJ(F1-rrVd8Kz=?RL1ib>hw2RMVYG=M%?!(lpOE3&041u@0p^gHI#B>k*boViJ#iL znf0Au6nh#ya^?90XBjNNkui3_w5s1YZ{9rwpYOI*mgTxtVABtpF+vy8*t1Pkyj9Ns zAdc74$(m5y&OEpD>96}0;;NKL>)N0JSV#>>m0B#1|`w|OgE^`-MO_|TV6LMF0he@?J(MprdD1a-a)TWRrv#&bkce;L|UrxyoS0~;acY36l=6EF{bEHssTbksa zBif*!tYp31k(RezhSTi8Mya3XNnzM%qe9<-SY7f1(_*7H(#TuNGW7y`w(Vwt!ll~u zo&$Y><=j2xP*FPuh@Z8r8ZoO}T6DZ0Hq5Enlr!gcxW!=7G>VSPRBy1xtA6AY5Y@&56W92f`b_a z&$57W2gdR^)c8>{%IfeX-)eNRH9cbO^kurxbsw4wZjp>FR=ZnWPNY@Rri#fBqYZ9;)t)KZ#i4Zl8DZYzu zR9E8sG$CvmAWKcq5Q?LidNEgYd>$Q+h(jT))9*~)fM==xrAb}`6M+dHiKHjEtrv|C zb8Sy0xtPW`ln{IJ=Pa}XzmOAON z=7IkkKmS9JJ&XS#LIdmnCp#MOb#nhe|EK;hl>9GvWy0MlaQ^>GDRppjQ2v`(|1a_W qM<){u-G|llKkjxWW@v~1fRkX9BF*ZRNd1S^07+3fk!m4>p#KGK<^@@QJpOD zB$+5QykbiF-;~q@TVnUnZWyd{3fl4V@7%4+>!NYV$gZX_!h;3y6TwVJhfM)dRL1)A z%H(|T)ZjuK=EEmZ06N_}{B7D~%Dy`Xd!}BP0XZN&&q?SVFnKfizWeIMDSUH{HuQUB ztr#f73xOV?w;3Qhm)JLw1Tf*pZZlE%w)`ninhl3Q6|2`yf7yx1{G!6Ip?J^PbE2^|@W$ya5I)bd`^(cAl9LxLyN5PpYa|{8M)= zQc}kT{!Ros9OVQ_pgHYLVEfk1PS5oAM!JCOws#QOtqAW1ZQt@MW`a|26kjN|aj%8T zE5@XNZ(rQZJEeAPg|O|(NOHfJtpLQmXLK*v4#n3Mhm+XHPk9jPoaKwFUq}?#LFeMg ziIHpOwG=w^vs=CPrL3c~Yr`YnRtBjt%4K^_0V=PiNgq7B|LygKHt+ex$4ihdqp57Oup+R5_X|Qh7~ux1XJ_Mo9*#x=kjg; ziuD-0jm3$mhxjL|Nixq@MpLx1U;%cwSNOugun4sK&efl7G6*{r6K}wfW*|U##^glZ zzX;Q5E|xzgBYI7W_!msj)6p;3A8Rfhg5%xIe898R6)btvZ8M2j)x%3UvES@r6gi$H zB4~{*X=l;!PLF7YY=&ea^bjy>O+D~2pn=6Khh6+d8@=%L6f$M-3ia04gH;N3pKyNU z9PMtrdO9QM?>2z33|<)@ju83iKMT;FBAn7x5G}-?iZ%Ws1dyGwRA4W}*lzR%QSH2V zetssHaMW)mmsIK@BW*o%<#4rwec``u{;=;56eg3uJn~1%q($T$z}GV+lB`U&5+3k4 zE+NaV=8xifGYYW3I1$hv`n>@$La)7pN!%tQiaL<2)cL{+!pWg_n(P2U%-4dbRI0H9 zEWnbRtm^(T38C*K7Zx8SsZn5WGOK9gv6*LS>@(hTD z86S$9_+c_6hMZ_Wj8f$TgBXc5fcY1Rd&uxMz4r$rirO#lEqeuZ;3}~YcF1ibvCSg9 zDNJQPss+!JlZ*iCzMqq8kKo*di5Jk(k;;Y6{&J@yYC}nrXjH+O$G8`TpQht{HzB(9 z3lI1n$Al)6=u?P=DVGjeQ!t4M<}xNm#NPI|N3@^s@%wnTeOpKZ(L}}7wMAk{S7Wk`vo2SrVV8GFgtPtm->LL}7D?C)`p4Q={%En}l8z?1M#a0xL zD8wvKE~uZeIQDg?^+gg2$@}VLQuf6FC>#4>hV@sUO!FLDHjS7PRfm>-qDu5|LFL)h?wAeal!2QA>M^*gCEw zfpYlKAmg^;mE)s|Kcz5^afnkt=B~)DHvKW(cY02`D*6t343(e7bS2g$$EBISb&88h zaf|0m+<&1J3Cd+j=}P?zc8zsSijI~GmdhPYX9zw;()^@}z93P7Tw#pxArzrEaa$>p z@+U>=M=-WDa?JevJmtLayyJY*yj9s)`K5Yyfl-NRQBuK|((4jFg%k;OWe%C!@bplv zOs#xRRtI7SnhV9%z*Rne6n<=e34Y2AiZ0D2eX04)*o7rymh?qyy1M6j*fPD z_7ZlxN4JK%8ORy7=@RKwn6LB_)l?Lxwb>*<63#}E+9PswM#pW_@}?-JT&6)g@_ie9 zB2to4Kc(VhI3pEe>Y}n^hN6t{NpK23&EcWqGvX3`8jh}vLX0|!5=jfDPNjaPcK!TB zZ7PfR7w}i`?>qX~)HaPWje>bpo6v?X_l7%<6J&x<1oByuSs$`k>%{9E>y9kiEqL}* z4?+*34~+hDj9exwr#hv>O2`XD)kai-T18r%s)AL^Wi7uxm+u$4OW8ZNXlu7o;F~VQQY0a_B*TRoLwo5RJJBme!yV{y>6?Fa@!uA)G3c7ZVyNcPl z{f6o)i-5a>Jp=sv-5}4eaNu{ml%nLB|x@@=QJE zod{IALPq({Tc_Qorq1$MR~RBmE}8KIRTyA9f+-07v^WGR{Wvy zj<>Lz6^fFa=irQ#({c_E)0(;B@2{S>1KlK|ZV zJqJ@HunD@-<2HOm#ky`Bo8XxJv8KEo;WbQY#Z@RveM`@jFznFI*X|Gn&+Lw zb3a8|7JaTd?EU+mUE%mc7sd1XuqkOJZwF2X@@345B4-`y{9O?bBJikF%~Az4YHfd< zCJ{cnL!SSwza44TFjWZF?vCI8BwAvys|0I3EX6LdYz}Phb}(x@t#7XaXWfhVUM3gP=l&!) zRC_gEUN?n7yht7{Gu%sr$h~~rFMZ2q`sX;HWskLPtWC{NQT-_gUFU%tujQrqA7T*~ zKU|_wW9WlCSL`+0KW%%Pqx) zK;EYr%WSWw+wojwS}T&ngDPQ2S-P!F;+zg z^Nx=O%__nRyn6I~AM#GgwI*&->XSwvf^Q$nJ<|l^YN$m)2 zxt&js@2u6fwdOYUI{nIUr<>ea2_#dd{}@9TlbPoYl5E` zXRxhUw3WOUMNclNOiyd-ichWvk){Y&!4|gDOfyvDT$*I-Y(QDLt)nbTs3zAlbyKGh zu>V;K_e|4g0RcaF#P?q*Xg^tX+*XWPEj2sB`|)oOC0dVcW$a|h3GU)4qTFNLBj2N6 zqe3uIkkIZhZ;)wzoTGcJT@qW8IVv_qJICEgRgWWop|7>V_%>iDoJo|Qkr-6A?cAFb zS|}BDFB|Z8jy`h_PDU_MEoC-ZsWCs$?eK^%`!@8X0-uSagJsAvuT$gaf`6-sAN!FN z=^$Rb|6jPc%93y;sn@}XYKv5jbYUhx<9F3=ThmqU)s))#6|GupY7cjZXZjq?L7bv- z^NQyaeO~)|^ZMwko*Rv=N6X;F+M_Os(tq%OSWX-#BU&PEg{H{3geFhof_67cSEgpV zpYQ(l{OLuNNa|;qy33RA-X<|6vIzKlD`%!~*7!nH)9kocf+KhNNNYpGvl*0?{dl!& z{+1hMJ7Rxj{-vIx^~Pr>_~spAU!b?4Jr$xQ#fmAAj;}J= zGsVb!#sz(K({a9Wd)@c#GaOIpIU6q>Q67e={*t}=o*2f~eAOaTKqsr9a~|g1IuIz! zMc*(V?B0Z?s-@tmRIMefCnjMkQEN!AyQ1;F=0=7~aY8Ovyi=Y^R$bXmu~Jn)?W@vJ z3YbesIRN9uG>qfN;SVBdo;Y|#Z^a)92{|^|0o+qt7IyD+=XHH`XY_@Zb4~u3zRVq_ zGZVCm_&3(LB6*~GKA&rx5bshRuwUpMAGSr~EDNAwBxw|VT%5=@ zaj9=22Pqzm+VpPvr9bT}3yDxRFm*q*DoBAQ9Ljrt9fyNTD^k=YV<+Ho?>{znS(E0)jtWN5ZZRR_eRAE%kx!f4_iy_H=NbtaLNA?&N z@xLG0cDcZb>Uu6cez$7^1@+Y*;_s`@R@ynO(~g$@u#Acc)qmak2Wip-F#rtq#n?6Y z0q3l6&V+pAlHG7Ua>&8xTmXzyz-BSJNeM52;PzQa#Is9@9l-K=O+(Dp#tI85J{U~} z0~~@40$`JW`ONcKEJ_7?9y#E9xe4DgfztQNoh3RrIU>9t4AODGPZEhQ=-S?Q#;W#8 znpB%_nq}2~T9!N~`8=FF9KKuOY@B4k@F^%ERCGsLRjfATo9u!{tOjBk4O04d8e8O3 z!OwGi;rraQiS~zRLL33YVVn}Eg?M}VH0&Jdd^u7-io+JNJmQ&?a&tS=`{T{S>odoG z*yXk-4~J!>H;1ui8z%=DkgGd4V`-IX@~TPdeUol5VA3%V^Vj_Sm0h1fV^!yewxuE@ z&7ks`{ynDDduoPan*-7`+Xef^l+$a%ZxdL502hEdQC+=)}KJz$F2Sq4*GSGwehd>kGBo%4?v^(#4*|%KX=k_EKi8NPm9nLVr@#W}@2eMcyMR)G22so;o>5=cpddHZqfhsThmsqt=$i&2Z~I-C(s z5FG5Mcq(PQS+H92&F2Hb1=0%AQ2w0{jQ|f8bRxx1%!m%}a)BF)z5!3BKSZT7za+@! z+I;6r4-YF&TZloQ(&`5fh3vHamEAQv^c~0@Dg1kz^1yA3+l>N??lJ7$6X)(5?=z>Q z{{8JsfXjz#%#VMPGm0pSF23Pf=vpit&>XDcy5ixaMvfjb$W?^ej-P4}0u^OYt^4_T z4Q+*DH=|!WdQ*283&r+GQ!wVV>Md^%4gY+?WJ0W>@q~dWmQhx1Rs|@VGu@Q9Ci__! z9Yg)9HZc9>FLEKcdvczhsHYr@D?^G-dljX=!-kG0?#vo53d>>15KNV)`=)s z%wCYsbQiRdR4sW?G-O^uuSn~zEG*~7cYiW|?Z$8o+H^zd3sz;X@4n%NA1r% z8mEF|EgnkUEK8{D-V02~(tG3;p5s}2=7ZUthh9@Yclyg7SuL@4rrmH=c+3t>IKcV= zn3=)kbr9wdRvEZ|+bqC{>5+;pbSZJZ=>TgC%aHpWq!!{lQI|r|3X^vu?8fHcUv``lUHRiZV< z_9`SR7-yd8ChJ_R46K+!nu#}ldKgHpXZWz(7>R=^c(7{XktR@JAB#Wk;b^CUGSD*G z$TvQ7&<~S46*wEY=wwL^s@`|3nxi+AG-<^`6m#DTNxTq;>j2$08oLNyGVRVDTXq~JMVxGME9;uEM9m8H9<>`s!b*FBe<@S+78v*S^>=?A zkgS%Z9jGH~31Slz+n%nc8phE~p-Ctv%@CZ)ZDYMyI~l0AKeC-;W*s*Wbdlw(6jB$)P4(P>A2YU{|iVdO;TSZDpZ=-R4y2_A;jKeP&P zv{|<+KTHd^Esxz6RT=Ntto>S<-sUJhqM}kNe5r{Ya_rm*^0W5`=dSIK%y(hV%@uIW z)qA=v^+ zTj}5cEF{7Aw>deL;W;^HQZjX4KJ;{M=fd2YrU>_A{~E4~Cp@~n?ggd6;0g*CJFiBe zwg3PsqpYNuhWF2ljkUTpax~GIqB$7s;EsZWbcvkedrNp{o{~Bd2!6yMxkDs>3Kal~ zeSiwJBU%09Xa@j-VQj(#v7$%-UcwM8z+&J0u?d1WKnGR5Fbo^%oe6U+5+W5A93Wnr z93eQIjhHy$f2Gcxa1?;5P@frkr0)O_iZJh&_iqMTy^+o+Z-H&=H5Tet!s+6Gsf5FJdyo>7a#rNcFz`CcK+%)sYh&EBE!f)GW>P z(9i_Wf976*Ix^iH-?ogOYbuumh4^1GR$&mj1c7$@c;<3~dZg>)Gtv;1q@CkOS zlMUSN6V|ou`uF-x4W2}XecQi1C#o5)<2DQ7-&bLuP6;q8e^XUQ4(2HdDLt-&?T< z_fwoJ?oYLu@vcRwWAfmVq6t>v2lvRrvD0Px4qFBnUw`hTI|Dy+M+I6xEr{fp>0pk^ zIR^2b(?Lb$D3e3t?ZyIU?(o@cqx{CGImznsy@n>Hkm6oD`39$-ny;y?m#t2E9ijHU zziAI?N@}xyE0Nk$I!{^T3%kCKU7Sh{^(>sS!^TZ9)r-?pqP}2NrmAl+6~2I%t-2Pm zAM3cJX8koGnJqIu?*WZLmS;sGp&Bta z-;)Kj*a8RUFKk0lS0f{Z?vns_rsJTd`5@Sd8BbhUv|=%al@oqP>74Z(;%odf^0aCF z1XsC%743MA-FKz#h;XSV`bCO+(jq@sz(Yt5Z8CadCeR5!tc;5OK&F@mc&T|A0Q0>j zO`!u@;g<*M4P{79OEB?JHnh~#H3+I2-5P@3!B+1lndqqrIDV(mxTdj9TQ`ypyX3>O z_G;r5);Zd1UAza8;qZ>BLAS$=+1(^{1mesub1zOhUNI|&ByHWAomQqf(2c!WS)}7L z0?>jwmRU(f*qKQ=cpmZa^ES-0Pu?;qJFX>0ia}JHv`2J-IHY14lE(Por8sF&&yrZQ zI&6MhmpkXd_Af1R5##VR_H$-r7WJ$f=@74Z;eSuF$m2q%Ne~8QKVxI!i2HQmODm^G z5T#H$vUW_#5QB!ktFHqx)d*RWF8OnIyDp7iy7{F=YC6VhSJF}C3xx^(>|*Q|%>{zd z+wD{NkT1b7wb+FGJwB~t*?ksAHAQtV<>2~G5`>x&i@vHi2+Va%3H3Vl7*gIFN zbXccEG#8D047v8OvV2FuDsL@~xd|2)Ii7);myL*6h+`#BIdG-Dwk!RJ)XUbFrLmT+ z!%U~-E<(5BMuMFJOD>MNoxz*{eZI-am|t^{I}Z%@T5tYc0UQkT^N$rHa9pkD2rQxA zzh4b2wTIMpgISDZs&WIj>UbzV+x6{?2D+7o8E!v)`uya&x1FrO+HV4uXX&zA`SR0P5X`ovDM5c&Yt%whBK?j$`QvG1sGXTDE}+UkCTO60@Cz3T zfaY?YwE?$#>u2xKQyZeVr}DcsWT&Q=r*}~8a{7LDs2509_6tc{V{o}Dbj{zD*Zu^F z>4@}^Is16vVN5+8!4FZKK4yp&LAjp1=>^C=W?%R?BD*)RJET2RvE|Q3svrRsdZ%7E zSfgZ8DOAMSdMatUcJ63Bkpwv=kpB-q|uyx{1Xx*ENDlOi3DLvkVW zmo7(dVYugl43FnS@@|zSG&FRoM$22Ktz%1W>xR2oPS59KwjW*fGC`hO#D%aOQ*Z5o)j7PH(4*mKi zn>dZe?RUNl;g4W_h{rH`YM^L`j`+*rw@U|^4MrpJ)4cct45%eGa|S($rO)1-(;-tH zxaWxMitQrDf+?WaBeqLiMQ~_@l!&R+%KUWkt~6bKERiS2yp7JnfJuSz2kviT>Qvzx zOJi}yHWraTdR??1zX~z2$d^Ve9RB{i(67lj>mT$hsn1G@T;uSLbm96*-^OOeeD-`5 zwIfuCk!AGwPbZ_(yzqoIap0dTmeRrLn%&&z#gH$Fyt@;W&1F)TbTNt!w;@k zuO(*#s?g~o9-+B1sMgr)=l#t#z9c8!_FrZP1X>@r?WQ9^wh#&3HkqULRC6%05$oz# zMA$jNUFYi|QRBCcPr1(h=75^$a3aVBFr%(Z9l*24O?s3(OjjAiX7GqM%LmyV2oFS z{}9n~4QdnG#+`f%QN0=MM#ERT1$h1J!?Q)vRBUHnaq_wnhje;wbNRH+RW(oS<4w6v zYUccEtGmwGbm6h)Ij8YP{3(a?stx)gj-8ryusU^kS#woDsj_BQSBJQqnLQ}oYX@6B zhU4#Sf5Y0yax7l#8dD(;U~m4wJOm_EzIlh28<-;}{t0)j@!?Rjax4MoUTHD8eGSE< zCck1K4swDB#kt*{UU2o$8J#vPR4e{cZN6cQsUWwjGp1og2I9r{zIZx`H`;8j)5(d{ zXc|7#Jki#~^I}m`y@$Q!Zwt-mVI|3~4vJ-pTctwp_x5b&ZxBoNihd z%N=^e;3Z23<5Ks>x1;n|%`v|v;c#~ILz*%J=(6rFx1q<9S=KD{94pC4+S@XP-93Wj=NPx`Tg z9f39i;!zA97Sh{W_7d{~LV5$g0rG8!=r=~}jg0i8z=9L~iZFP8eU1G8Sa2G(znA$< z{tJIGuSxWcD2;&Fjv@aaQM&hb9JBl{5&lALiUo(h#SPiG+ED-FPKDz5{cU`miNAsL zMv}WV18vB5rem~ EABw#0d;kCd literal 0 HcmV?d00001 diff --git a/v2/files/textCleaned_190.png b/v2/files/textCleaned_190.png new file mode 100644 index 0000000000000000000000000000000000000000..0cc4a819ec7c69920cdc7c77c28341328e3e4f12 GIT binary patch literal 9000 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 literal 0 HcmV?d00001 diff --git a/v2/files/textCleaned_195.png b/v2/files/textCleaned_195.png new file mode 100644 index 0000000000000000000000000000000000000000..69aa963c87db152a9480fe9d663e8bf6d4a700a3 GIT binary patch literal 8962 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 literal 0 HcmV?d00001 diff --git a/v2/files/textCleaned_90.png b/v2/files/textCleaned_90.png new file mode 100644 index 0000000000000000000000000000000000000000..56464b0bb7c9d8a0723862ca94c9254b71a5e6ee GIT binary patch literal 8375 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 z�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 BFM$96 literal 0 HcmV?d00001 diff --git a/v2/files/textOriginal_out.tsv b/v2/files/textOriginal_out.tsv new file mode 100644 index 0000000..89c4f25 --- /dev/null +++ b/v2/files/textOriginal_out.tsv @@ -0,0 +1,24 @@ +level page_num block_num par_num line_num word_num left top width height conf text +1 1 0 0 0 0 0 0 600 103 -1 +2 1 1 0 0 0 23 26 555 51 -1 +3 1 1 1 0 0 23 26 555 51 -1 +4 1 1 1 1 0 23 26 555 22 -1 +5 1 1 1 1 1 23 26 44 17 86 This +5 1 1 1 1 2 76 26 15 17 86 is +5 1 1 1 1 3 99 30 57 13 86 some +5 1 1 1 1 4 164 26 42 21 73 text, +5 1 1 1 1 5 215 26 70 17 82 written +5 1 1 1 1 6 295 26 15 17 95 in +5 1 1 1 1 7 317 26 52 21 73 Arial, +5 1 1 1 1 8 378 26 40 17 80 that +5 1 1 1 1 9 425 26 32 17 95 will +5 1 1 1 1 10 467 26 24 17 85 be +5 1 1 1 1 11 500 26 45 17 87 read +5 1 1 1 1 12 555 26 23 22 85 by +4 1 1 1 2 0 23 54 513 23 -1 +5 1 1 1 2 1 23 55 107 17 82 Tesseract. +5 1 1 1 2 2 140 55 49 17 91 Here +5 1 1 1 2 3 198 59 32 13 86 are +5 1 1 1 2 4 239 59 57 13 86 some +5 1 1 1 2 5 304 55 92 22 86 symbols: +5 1 1 1 2 6 407 54 129 23 65 !@#$%"&‘() diff --git a/v2/files/textOriginal_out2.tsv b/v2/files/textOriginal_out2.tsv new file mode 100644 index 0000000..89c4f25 --- /dev/null +++ b/v2/files/textOriginal_out2.tsv @@ -0,0 +1,24 @@ +level page_num block_num par_num line_num word_num left top width height conf text +1 1 0 0 0 0 0 0 600 103 -1 +2 1 1 0 0 0 23 26 555 51 -1 +3 1 1 1 0 0 23 26 555 51 -1 +4 1 1 1 1 0 23 26 555 22 -1 +5 1 1 1 1 1 23 26 44 17 86 This +5 1 1 1 1 2 76 26 15 17 86 is +5 1 1 1 1 3 99 30 57 13 86 some +5 1 1 1 1 4 164 26 42 21 73 text, +5 1 1 1 1 5 215 26 70 17 82 written +5 1 1 1 1 6 295 26 15 17 95 in +5 1 1 1 1 7 317 26 52 21 73 Arial, +5 1 1 1 1 8 378 26 40 17 80 that +5 1 1 1 1 9 425 26 32 17 95 will +5 1 1 1 1 10 467 26 24 17 85 be +5 1 1 1 1 11 500 26 45 17 87 read +5 1 1 1 1 12 555 26 23 22 85 by +4 1 1 1 2 0 23 54 513 23 -1 +5 1 1 1 2 1 23 55 107 17 82 Tesseract. +5 1 1 1 2 2 140 55 49 17 91 Here +5 1 1 1 2 3 198 59 32 13 86 are +5 1 1 1 2 4 239 59 57 13 86 some +5 1 1 1 2 5 304 55 92 22 86 symbols: +5 1 1 1 2 6 407 54 129 23 65 !@#$%"&‘() diff --git a/v2/files/textOriginal_out4.txt b/v2/files/textOriginal_out4.txt new file mode 100644 index 0000000..aa6b34d --- /dev/null +++ b/v2/files/textOriginal_out4.txt @@ -0,0 +1,3 @@ +This is some text, written in Arial, that will be read by +Tesseract. Here are some symbols: !@#$%"&‘() + diff --git a/v2/files/text_2.png b/v2/files/text_2.png new file mode 100644 index 0000000000000000000000000000000000000000..93b7f192be6e2d3be8a2dc0769ea9c4fca6417fd GIT binary patch literal 9678 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 Date: Fri, 19 Jan 2018 20:58:44 -0500 Subject: [PATCH 18/47] Removed old scrapy dir --- v2/chapter2_scrapy/tutorial/scrapy.cfg | 11 --- .../tutorial/tutorial/__init__.py | 0 v2/chapter2_scrapy/tutorial/tutorial/items.py | 14 --- .../tutorial/tutorial/middlewares.py | 56 ------------ .../tutorial/tutorial/pipelines.py | 11 --- .../tutorial/tutorial/settings.py | 90 ------------------- .../tutorial/tutorial/spiders/__init__.py | 4 - 7 files changed, 186 deletions(-) delete mode 100644 v2/chapter2_scrapy/tutorial/scrapy.cfg delete mode 100644 v2/chapter2_scrapy/tutorial/tutorial/__init__.py delete mode 100644 v2/chapter2_scrapy/tutorial/tutorial/items.py delete mode 100644 v2/chapter2_scrapy/tutorial/tutorial/middlewares.py delete mode 100644 v2/chapter2_scrapy/tutorial/tutorial/pipelines.py delete mode 100644 v2/chapter2_scrapy/tutorial/tutorial/settings.py delete mode 100644 v2/chapter2_scrapy/tutorial/tutorial/spiders/__init__.py diff --git a/v2/chapter2_scrapy/tutorial/scrapy.cfg b/v2/chapter2_scrapy/tutorial/scrapy.cfg deleted file mode 100644 index ce8c9bb..0000000 --- a/v2/chapter2_scrapy/tutorial/scrapy.cfg +++ /dev/null @@ -1,11 +0,0 @@ -# Automatically created by: scrapy startproject -# -# For more information about the [deploy] section see: -# https://scrapyd.readthedocs.org/en/latest/deploy.html - -[settings] -default = tutorial.settings - -[deploy] -#url = http://localhost:6800/ -project = tutorial diff --git a/v2/chapter2_scrapy/tutorial/tutorial/__init__.py b/v2/chapter2_scrapy/tutorial/tutorial/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/v2/chapter2_scrapy/tutorial/tutorial/items.py b/v2/chapter2_scrapy/tutorial/tutorial/items.py deleted file mode 100644 index 10c39f9..0000000 --- a/v2/chapter2_scrapy/tutorial/tutorial/items.py +++ /dev/null @@ -1,14 +0,0 @@ -# -*- coding: utf-8 -*- - -# Define here the models for your scraped items -# -# See documentation in: -# http://doc.scrapy.org/en/latest/topics/items.html - -import scrapy - - -class TutorialItem(scrapy.Item): - # define the fields for your item here like: - # name = scrapy.Field() - pass diff --git a/v2/chapter2_scrapy/tutorial/tutorial/middlewares.py b/v2/chapter2_scrapy/tutorial/tutorial/middlewares.py deleted file mode 100644 index 7eb7357..0000000 --- a/v2/chapter2_scrapy/tutorial/tutorial/middlewares.py +++ /dev/null @@ -1,56 +0,0 @@ -# -*- coding: utf-8 -*- - -# Define here the models for your spider middleware -# -# See documentation in: -# http://doc.scrapy.org/en/latest/topics/spider-middleware.html - -from scrapy import signals - - -class TutorialSpiderMiddleware(object): - # Not all methods need to be defined. If a method is not defined, - # scrapy acts as if the spider middleware does not modify the - # passed objects. - - @classmethod - def from_crawler(cls, crawler): - # This method is used by Scrapy to create your spiders. - s = cls() - crawler.signals.connect(s.spider_opened, signal=signals.spider_opened) - return s - - def process_spider_input(self, response, spider): - # Called for each response that goes through the spider - # middleware and into the spider. - - # Should return None or raise an exception. - return None - - def process_spider_output(self, response, result, spider): - # Called with the results returned from the Spider, after - # it has processed the response. - - # Must return an iterable of Request, dict or Item objects. - for i in result: - yield i - - def process_spider_exception(self, response, exception, spider): - # Called when a spider or process_spider_input() method - # (from other spider middleware) raises an exception. - - # Should return either None or an iterable of Response, dict - # or Item objects. - pass - - def process_start_requests(self, start_requests, spider): - # Called with the start requests of the spider, and works - # similarly to the process_spider_output() method, except - # that it doesn’t have a response associated. - - # Must return only requests (not items). - for r in start_requests: - yield r - - def spider_opened(self, spider): - spider.logger.info('Spider opened: %s' % spider.name) diff --git a/v2/chapter2_scrapy/tutorial/tutorial/pipelines.py b/v2/chapter2_scrapy/tutorial/tutorial/pipelines.py deleted file mode 100644 index d0f684f..0000000 --- a/v2/chapter2_scrapy/tutorial/tutorial/pipelines.py +++ /dev/null @@ -1,11 +0,0 @@ -# -*- coding: utf-8 -*- - -# Define your item pipelines here -# -# Don't forget to add your pipeline to the ITEM_PIPELINES setting -# See: http://doc.scrapy.org/en/latest/topics/item-pipeline.html - - -class TutorialPipeline(object): - def process_item(self, item, spider): - return item diff --git a/v2/chapter2_scrapy/tutorial/tutorial/settings.py b/v2/chapter2_scrapy/tutorial/tutorial/settings.py deleted file mode 100644 index 3549d60..0000000 --- a/v2/chapter2_scrapy/tutorial/tutorial/settings.py +++ /dev/null @@ -1,90 +0,0 @@ -# -*- coding: utf-8 -*- - -# Scrapy settings for tutorial project -# -# For simplicity, this file contains only settings considered important or -# commonly used. You can find more settings consulting the documentation: -# -# http://doc.scrapy.org/en/latest/topics/settings.html -# http://scrapy.readthedocs.org/en/latest/topics/downloader-middleware.html -# http://scrapy.readthedocs.org/en/latest/topics/spider-middleware.html - -BOT_NAME = 'tutorial' - -SPIDER_MODULES = ['tutorial.spiders'] -NEWSPIDER_MODULE = 'tutorial.spiders' - - -# Crawl responsibly by identifying yourself (and your website) on the user-agent -#USER_AGENT = 'tutorial (+http://www.yourdomain.com)' - -# Obey robots.txt rules -ROBOTSTXT_OBEY = True - -# Configure maximum concurrent requests performed by Scrapy (default: 16) -#CONCURRENT_REQUESTS = 32 - -# Configure a delay for requests for the same website (default: 0) -# See http://scrapy.readthedocs.org/en/latest/topics/settings.html#download-delay -# See also autothrottle settings and docs -#DOWNLOAD_DELAY = 3 -# The download delay setting will honor only one of: -#CONCURRENT_REQUESTS_PER_DOMAIN = 16 -#CONCURRENT_REQUESTS_PER_IP = 16 - -# Disable cookies (enabled by default) -#COOKIES_ENABLED = False - -# Disable Telnet Console (enabled by default) -#TELNETCONSOLE_ENABLED = False - -# Override the default request headers: -#DEFAULT_REQUEST_HEADERS = { -# 'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8', -# 'Accept-Language': 'en', -#} - -# Enable or disable spider middlewares -# See http://scrapy.readthedocs.org/en/latest/topics/spider-middleware.html -#SPIDER_MIDDLEWARES = { -# 'tutorial.middlewares.TutorialSpiderMiddleware': 543, -#} - -# Enable or disable downloader middlewares -# See http://scrapy.readthedocs.org/en/latest/topics/downloader-middleware.html -#DOWNLOADER_MIDDLEWARES = { -# 'tutorial.middlewares.MyCustomDownloaderMiddleware': 543, -#} - -# Enable or disable extensions -# See http://scrapy.readthedocs.org/en/latest/topics/extensions.html -#EXTENSIONS = { -# 'scrapy.extensions.telnet.TelnetConsole': None, -#} - -# Configure item pipelines -# See http://scrapy.readthedocs.org/en/latest/topics/item-pipeline.html -#ITEM_PIPELINES = { -# 'tutorial.pipelines.TutorialPipeline': 300, -#} - -# Enable and configure the AutoThrottle extension (disabled by default) -# See http://doc.scrapy.org/en/latest/topics/autothrottle.html -#AUTOTHROTTLE_ENABLED = True -# The initial download delay -#AUTOTHROTTLE_START_DELAY = 5 -# The maximum download delay to be set in case of high latencies -#AUTOTHROTTLE_MAX_DELAY = 60 -# The average number of requests Scrapy should be sending in parallel to -# each remote server -#AUTOTHROTTLE_TARGET_CONCURRENCY = 1.0 -# Enable showing throttling stats for every response received: -#AUTOTHROTTLE_DEBUG = False - -# Enable and configure HTTP caching (disabled by default) -# See http://scrapy.readthedocs.org/en/latest/topics/downloader-middleware.html#httpcache-middleware-settings -#HTTPCACHE_ENABLED = True -#HTTPCACHE_EXPIRATION_SECS = 0 -#HTTPCACHE_DIR = 'httpcache' -#HTTPCACHE_IGNORE_HTTP_CODES = [] -#HTTPCACHE_STORAGE = 'scrapy.extensions.httpcache.FilesystemCacheStorage' diff --git a/v2/chapter2_scrapy/tutorial/tutorial/spiders/__init__.py b/v2/chapter2_scrapy/tutorial/tutorial/spiders/__init__.py deleted file mode 100644 index ebd689a..0000000 --- a/v2/chapter2_scrapy/tutorial/tutorial/spiders/__init__.py +++ /dev/null @@ -1,4 +0,0 @@ -# This package will contain the spiders of your Scrapy project -# -# Please refer to the documentation for information on how to create and manage -# your spiders. From 1f4e5c1f5ee1d3329cf593f8f655b2677770e721 Mon Sep 17 00:00:00 2001 From: remitchell Date: Sat, 20 Jan 2018 23:50:21 -0500 Subject: [PATCH 19/47] Working on Scrapy --- .../wikiSpider/wikiSpider/articles.py | 15 +++++++++++++ .../wikiSpider/wikiSpider/items.py | 16 +++++++++----- .../wikiSpider/wikiSpider/settings.py | 2 +- .../wikiSpider/spiders/articleSpider.py | 19 ----------------- .../wikiSpider/spiders/testSpider.py | 21 ------------------- 5 files changed, 27 insertions(+), 46 deletions(-) create mode 100644 v2/Chapter05_Scrapy/wikiSpider/wikiSpider/articles.py delete mode 100644 v2/Chapter05_Scrapy/wikiSpider/wikiSpider/spiders/articleSpider.py delete mode 100644 v2/Chapter05_Scrapy/wikiSpider/wikiSpider/spiders/testSpider.py diff --git a/v2/Chapter05_Scrapy/wikiSpider/wikiSpider/articles.py b/v2/Chapter05_Scrapy/wikiSpider/wikiSpider/articles.py new file mode 100644 index 0000000..4dedd22 --- /dev/null +++ b/v2/Chapter05_Scrapy/wikiSpider/wikiSpider/articles.py @@ -0,0 +1,15 @@ +import scrapy + +class ArticleSpider(scrapy.Spider): + name='articles' + + def start_requests(self): + urls = [ + "http://en.wikipedia.org/wiki/Python_%28programming_language%29", + "https://en.wikipedia.org/wiki/Functional_programming", + "https://en.wikipedia.org/wiki/Monty_Python"] + return [scrapy.Request(url=a, callback=self.parse) for a in urls] + + def parse(self, response): + title = response.css('h1::text').extract_first() + print('Title is: {}'.format(title)) diff --git a/v2/Chapter05_Scrapy/wikiSpider/wikiSpider/items.py b/v2/Chapter05_Scrapy/wikiSpider/wikiSpider/items.py index e779c99..1244838 100644 --- a/v2/Chapter05_Scrapy/wikiSpider/wikiSpider/items.py +++ b/v2/Chapter05_Scrapy/wikiSpider/wikiSpider/items.py @@ -1,8 +1,14 @@ -from scrapy import Item, Field +# -*- coding: utf-8 -*- +# Define here the models for your scraped items +# +# See documentation in: +# http://doc.scrapy.org/en/latest/topics/items.html -class Article(Item): - title = Field() - last_edited = Field() - url = Field() +import scrapy + +class WikispiderItem(scrapy.Item): + # define the fields for your item here like: + # name = scrapy.Field() + pass diff --git a/v2/Chapter05_Scrapy/wikiSpider/wikiSpider/settings.py b/v2/Chapter05_Scrapy/wikiSpider/wikiSpider/settings.py index 278ab63..c57b4c8 100644 --- a/v2/Chapter05_Scrapy/wikiSpider/wikiSpider/settings.py +++ b/v2/Chapter05_Scrapy/wikiSpider/wikiSpider/settings.py @@ -13,7 +13,7 @@ SPIDER_MODULES = ['wikiSpider.spiders'] NEWSPIDER_MODULE = 'wikiSpider.spiders' -LOG_LEVEL = 'ERROR' + # Crawl responsibly by identifying yourself (and your website) on the user-agent #USER_AGENT = 'wikiSpider (+http://www.yourdomain.com)' diff --git a/v2/Chapter05_Scrapy/wikiSpider/wikiSpider/spiders/articleSpider.py b/v2/Chapter05_Scrapy/wikiSpider/wikiSpider/spiders/articleSpider.py deleted file mode 100644 index 79a2767..0000000 --- a/v2/Chapter05_Scrapy/wikiSpider/wikiSpider/spiders/articleSpider.py +++ /dev/null @@ -1,19 +0,0 @@ -from scrapy.linkextractors import LinkExtractor -from scrapy.spiders import CrawlSpider, Rule -from wikiSpider.items import Article - -class ArticleSpider(CrawlSpider): - name = 'articles' - allowed_domains = ['wikipedia.org'] - start_urls = ['https://en.wikipedia.org/wiki/Benevolent_dictator_for_life'] - - rules = [Rule(LinkExtractor(allow=r'^(/wiki/)((?!:).)*$'), callback='parse_items', follow=True, cb_kwargs={'is_article': True}) ] - - def parse_items(self, response, is_article=True): - item = Article() - item['title'] = response.css('h1::text').extract_first() - item['url'] = response.url - last_edited = response.css('id#footer-info-lastmod::text').extract_first() - last_edited = last_edited.replace('This page was last edited on ') - item['last_edited'] = last_edited - return item diff --git a/v2/Chapter05_Scrapy/wikiSpider/wikiSpider/spiders/testSpider.py b/v2/Chapter05_Scrapy/wikiSpider/wikiSpider/spiders/testSpider.py deleted file mode 100644 index ad785a3..0000000 --- a/v2/Chapter05_Scrapy/wikiSpider/wikiSpider/spiders/testSpider.py +++ /dev/null @@ -1,21 +0,0 @@ -from scrapy.contrib.linkextractors import LinkExtractor -from scrapy.contrib.spiders import CrawlSpider, Rule - - -class Stinkybklyn(CrawlSpider): - name = "wiki2" - allowed_domains = ["wikipedia.org"] - - start_urls = [ - "https://en.wikipedia.org/wiki/Benevolent_dictator_for_life" - ] - - rules = [ - Rule(LinkExtractor(allow=r'.*'), callback='parse_items', follow=True) - ] - - def parse_items(self, response): - title = response.css("h1::text").extract_first() - title = "".join(title) - title = title.strip().replace("\n", "").lstrip() - print("title is:"+title) \ No newline at end of file From 7db63939920af7cdaf19c2edbb8abc6c586f855a Mon Sep 17 00:00:00 2001 From: remitchell Date: Sun, 21 Jan 2018 23:15:59 -0500 Subject: [PATCH 20/47] More Scrapy stuff --- .../wikiSpider/wikiSpider/article.py | 15 +++++++++++ .../wikiSpider/wikiSpider/articleItems.py | 19 ++++++++++++++ .../wikiSpider/wikiSpider/articles.py | 26 ++++++++++--------- .../wikiSpider/articlesMoreRules.py | 25 ++++++++++++++++++ .../wikiSpider/wikiSpider/items.py | 7 ++--- 5 files changed, 77 insertions(+), 15 deletions(-) create mode 100644 v2/Chapter05_Scrapy/wikiSpider/wikiSpider/article.py create mode 100644 v2/Chapter05_Scrapy/wikiSpider/wikiSpider/articleItems.py create mode 100644 v2/Chapter05_Scrapy/wikiSpider/wikiSpider/articlesMoreRules.py diff --git a/v2/Chapter05_Scrapy/wikiSpider/wikiSpider/article.py b/v2/Chapter05_Scrapy/wikiSpider/wikiSpider/article.py new file mode 100644 index 0000000..36828af --- /dev/null +++ b/v2/Chapter05_Scrapy/wikiSpider/wikiSpider/article.py @@ -0,0 +1,15 @@ +import scrapy + +class ArticleSpider(scrapy.Spider): + name='article' + + def start_requests(self): + urls = [ + "http://en.wikipedia.org/wiki/Python_%28programming_language%29", + "https://en.wikipedia.org/wiki/Functional_programming", + "https://en.wikipedia.org/wiki/Monty_Python"] + return [scrapy.Request(url=url, callback=self.parse) for url in urls] + + def parse(self, response): + title = response.css('h1::text').extract_first() + print('Title is: {}'.format(title)) diff --git a/v2/Chapter05_Scrapy/wikiSpider/wikiSpider/articleItems.py b/v2/Chapter05_Scrapy/wikiSpider/wikiSpider/articleItems.py new file mode 100644 index 0000000..d4525c8 --- /dev/null +++ b/v2/Chapter05_Scrapy/wikiSpider/wikiSpider/articleItems.py @@ -0,0 +1,19 @@ +from scrapy.contrib.linkextractors import LinkExtractor +from scrapy.contrib.spiders import CrawlSpider, Rule +from wikiSpider.items import Article + +class ArticleSpider(CrawlSpider): + name = 'articleItems' + allowed_domains = ['wikipedia.org'] + start_urls = ['https://en.wikipedia.org/wiki/Benevolent_dictator_for_life'] + rules = [ + Rule(LinkExtractor(allow='(/wiki/)((?!:).)*$'), callback='parse_items', follow=True), + ] + + def parse_items(self, response): + article = Article() + article['title'] = response.css('h1::text').extract_first() + article['text'] = response.xpath('//div[@id="mw-content-text"]//text()').extract() + lastUpdated = response.css('li#footer-info-lastmod::text').extract_first() + article['lastUpdated'] = lastUpdated.replace('This page was last edited on ', '') + return article \ No newline at end of file diff --git a/v2/Chapter05_Scrapy/wikiSpider/wikiSpider/articles.py b/v2/Chapter05_Scrapy/wikiSpider/wikiSpider/articles.py index 4dedd22..0585621 100644 --- a/v2/Chapter05_Scrapy/wikiSpider/wikiSpider/articles.py +++ b/v2/Chapter05_Scrapy/wikiSpider/wikiSpider/articles.py @@ -1,15 +1,17 @@ -import scrapy +from scrapy.contrib.linkextractors import LinkExtractor +from scrapy.contrib.spiders import CrawlSpider, Rule -class ArticleSpider(scrapy.Spider): - name='articles' +class ArticleSpider(CrawlSpider): + name = 'articles' + allowed_domains = ['wikipedia.org'] + start_urls = ['https://en.wikipedia.org/wiki/Benevolent_dictator_for_life'] + rules = [Rule(LinkExtractor(allow=r'.*'), callback='parse_items', follow=True)] - def start_requests(self): - urls = [ - "http://en.wikipedia.org/wiki/Python_%28programming_language%29", - "https://en.wikipedia.org/wiki/Functional_programming", - "https://en.wikipedia.org/wiki/Monty_Python"] - return [scrapy.Request(url=a, callback=self.parse) for a in urls] - - def parse(self, response): + def parse_items(self, response): title = response.css('h1::text').extract_first() - print('Title is: {}'.format(title)) + text = response.xpath('//div[@id="mw-content-text"]//text()').extract() + lastUpdated = response.css('li#footer-info-lastmod::text').extract_first() + lastUpdated = lastUpdated.replace('This page was last edited on ', '') + print('title is: {} '.format(title)) + print('text is: {}'.format(text)) + print('Last updated: {}'.format(lastUpdated)) diff --git a/v2/Chapter05_Scrapy/wikiSpider/wikiSpider/articlesMoreRules.py b/v2/Chapter05_Scrapy/wikiSpider/wikiSpider/articlesMoreRules.py new file mode 100644 index 0000000..1deb3c9 --- /dev/null +++ b/v2/Chapter05_Scrapy/wikiSpider/wikiSpider/articlesMoreRules.py @@ -0,0 +1,25 @@ +from scrapy.contrib.linkextractors import LinkExtractor +from scrapy.contrib.spiders import CrawlSpider, Rule + +class ArticleSpider(CrawlSpider): + name = 'articles' + allowed_domains = ['wikipedia.org'] + start_urls = ['https://en.wikipedia.org/wiki/Benevolent_dictator_for_life'] + rules = [ + Rule(LinkExtractor(allow='^(/wiki/)((?!:).)*$'), callback='parse_items', follow=True, cb_kwargs={'is_article': True}), + Rule(LinkExtractor(allow='.*'), callback='parse_items', cb_kwargs={'is_article': False}) + ] + + def parse_items(self, response, is_article): + print(response.url) + title = response.css('h1::text').extract_first() + if is_article: + text = response.xpath('//div[@id="mw-content-text"]//text()').extract() + lastUpdated = response.css('li#footer-info-lastmod::text').extract_first() + lastUpdated = lastUpdated.replace('This page was last edited on ', '') + print('Title is: {} '.format(title)) + print('title is: {} '.format(title)) + print('text is: {}'.format(text)) + else: + print('This is not an article: {}'.format(title)) + diff --git a/v2/Chapter05_Scrapy/wikiSpider/wikiSpider/items.py b/v2/Chapter05_Scrapy/wikiSpider/wikiSpider/items.py index 1244838..9d2ec8e 100644 --- a/v2/Chapter05_Scrapy/wikiSpider/wikiSpider/items.py +++ b/v2/Chapter05_Scrapy/wikiSpider/wikiSpider/items.py @@ -8,7 +8,8 @@ import scrapy -class WikispiderItem(scrapy.Item): - # define the fields for your item here like: - # name = scrapy.Field() +class Article(scrapy.Item): + title = scrapy.Field() + text = scrapy.Field() + lastUpdated = scrapy.Field() pass From 0a29b99270b6bb358f21ef070f9d0e0d5fc5c11d Mon Sep 17 00:00:00 2001 From: remitchell Date: Mon, 22 Jan 2018 23:11:22 -0500 Subject: [PATCH 21/47] More scrapy --- v2/Chapter05_Scrapy/wikiSpider/wikiSpider/article.py | 3 +++ v2/Chapter05_Scrapy/wikiSpider/wikiSpider/articleItems.py | 1 + v2/Chapter05_Scrapy/wikiSpider/wikiSpider/articles.py | 2 ++ v2/Chapter05_Scrapy/wikiSpider/wikiSpider/articlesMoreRules.py | 1 + v2/Chapter05_Scrapy/wikiSpider/wikiSpider/items.py | 2 +- 5 files changed, 8 insertions(+), 1 deletion(-) diff --git a/v2/Chapter05_Scrapy/wikiSpider/wikiSpider/article.py b/v2/Chapter05_Scrapy/wikiSpider/wikiSpider/article.py index 36828af..7c0ebdb 100644 --- a/v2/Chapter05_Scrapy/wikiSpider/wikiSpider/article.py +++ b/v2/Chapter05_Scrapy/wikiSpider/wikiSpider/article.py @@ -11,5 +11,8 @@ def start_requests(self): return [scrapy.Request(url=url, callback=self.parse) for url in urls] def parse(self, response): + url = response.url title = response.css('h1::text').extract_first() + print('URL is: {}'.format(url)) print('Title is: {}'.format(title)) + diff --git a/v2/Chapter05_Scrapy/wikiSpider/wikiSpider/articleItems.py b/v2/Chapter05_Scrapy/wikiSpider/wikiSpider/articleItems.py index d4525c8..0ccd9c0 100644 --- a/v2/Chapter05_Scrapy/wikiSpider/wikiSpider/articleItems.py +++ b/v2/Chapter05_Scrapy/wikiSpider/wikiSpider/articleItems.py @@ -12,6 +12,7 @@ class ArticleSpider(CrawlSpider): def parse_items(self, response): article = Article() + article['url'] = response.url article['title'] = response.css('h1::text').extract_first() article['text'] = response.xpath('//div[@id="mw-content-text"]//text()').extract() lastUpdated = response.css('li#footer-info-lastmod::text').extract_first() diff --git a/v2/Chapter05_Scrapy/wikiSpider/wikiSpider/articles.py b/v2/Chapter05_Scrapy/wikiSpider/wikiSpider/articles.py index 0585621..2b2d0c2 100644 --- a/v2/Chapter05_Scrapy/wikiSpider/wikiSpider/articles.py +++ b/v2/Chapter05_Scrapy/wikiSpider/wikiSpider/articles.py @@ -8,10 +8,12 @@ class ArticleSpider(CrawlSpider): rules = [Rule(LinkExtractor(allow=r'.*'), callback='parse_items', follow=True)] def parse_items(self, response): + url = response.url title = response.css('h1::text').extract_first() text = response.xpath('//div[@id="mw-content-text"]//text()').extract() lastUpdated = response.css('li#footer-info-lastmod::text').extract_first() lastUpdated = lastUpdated.replace('This page was last edited on ', '') + print('URL is: {}'.format(url)) print('title is: {} '.format(title)) print('text is: {}'.format(text)) print('Last updated: {}'.format(lastUpdated)) diff --git a/v2/Chapter05_Scrapy/wikiSpider/wikiSpider/articlesMoreRules.py b/v2/Chapter05_Scrapy/wikiSpider/wikiSpider/articlesMoreRules.py index 1deb3c9..efe28b3 100644 --- a/v2/Chapter05_Scrapy/wikiSpider/wikiSpider/articlesMoreRules.py +++ b/v2/Chapter05_Scrapy/wikiSpider/wikiSpider/articlesMoreRules.py @@ -14,6 +14,7 @@ def parse_items(self, response, is_article): print(response.url) title = response.css('h1::text').extract_first() if is_article: + url = response.url text = response.xpath('//div[@id="mw-content-text"]//text()').extract() lastUpdated = response.css('li#footer-info-lastmod::text').extract_first() lastUpdated = lastUpdated.replace('This page was last edited on ', '') diff --git a/v2/Chapter05_Scrapy/wikiSpider/wikiSpider/items.py b/v2/Chapter05_Scrapy/wikiSpider/wikiSpider/items.py index 9d2ec8e..0c4a68d 100644 --- a/v2/Chapter05_Scrapy/wikiSpider/wikiSpider/items.py +++ b/v2/Chapter05_Scrapy/wikiSpider/wikiSpider/items.py @@ -9,7 +9,7 @@ class Article(scrapy.Item): + url = scrapy.Field() title = scrapy.Field() text = scrapy.Field() lastUpdated = scrapy.Field() - pass From fb9cc07e3e301b74fc873103d81ca2d0ea38be23 Mon Sep 17 00:00:00 2001 From: remitchell Date: Thu, 25 Jan 2018 23:42:36 -0500 Subject: [PATCH 22/47] Added pipelines --- .../wikiSpider/wikiSpider/articlePipelines.py | 19 +++++++++++++++++ .../wikiSpider/wikiSpider/pipelines.py | 21 +++++++++++-------- 2 files changed, 31 insertions(+), 9 deletions(-) create mode 100644 v2/Chapter05_Scrapy/wikiSpider/wikiSpider/articlePipelines.py diff --git a/v2/Chapter05_Scrapy/wikiSpider/wikiSpider/articlePipelines.py b/v2/Chapter05_Scrapy/wikiSpider/wikiSpider/articlePipelines.py new file mode 100644 index 0000000..d6d2b18 --- /dev/null +++ b/v2/Chapter05_Scrapy/wikiSpider/wikiSpider/articlePipelines.py @@ -0,0 +1,19 @@ +from scrapy.contrib.linkextractors import LinkExtractor +from scrapy.contrib.spiders import CrawlSpider, Rule +from wikiSpider.items import Article + +class ArticleSpider(CrawlSpider): + name = 'articlePipelines' + allowed_domains = ['wikipedia.org'] + start_urls = ['https://en.wikipedia.org/wiki/Benevolent_dictator_for_life'] + rules = [ + Rule(LinkExtractor(allow='(/wiki/)((?!:).)*$'), callback='parse_items', follow=True), + ] + + def parse_items(self, response): + article = Article() + article['url'] = response.url + article['title'] = response.css('h1::text').extract_first() + article['text'] = response.xpath('//div[@id="mw-content-text"]//text()').extract() + article['lastUpdated'] = response.css('li#footer-info-lastmod::text').extract_first() + return article \ No newline at end of file diff --git a/v2/Chapter05_Scrapy/wikiSpider/wikiSpider/pipelines.py b/v2/Chapter05_Scrapy/wikiSpider/wikiSpider/pipelines.py index 8ec6c0e..99e316f 100644 --- a/v2/Chapter05_Scrapy/wikiSpider/wikiSpider/pipelines.py +++ b/v2/Chapter05_Scrapy/wikiSpider/wikiSpider/pipelines.py @@ -1,11 +1,14 @@ -# -*- coding: utf-8 -*- - -# Define your item pipelines here -# -# Don't forget to add your pipeline to the ITEM_PIPELINES setting -# See: http://doc.scrapy.org/en/latest/topics/item-pipeline.html - +from datetime import datetime +from wikiSpider.items import Article +from string import whitespace class WikispiderPipeline(object): - def process_item(self, item, spider): - return item + def process_item(self, article, spider): + dateStr = article['lastUpdated'] + # This page was last edited on 26 January 2018, at 03:56. + article['lastUpdated'] = article['lastUpdated'].replace('This page was last edited on', '') + article['lastUpdated'] = article['lastUpdated'].strip() + article['lastUpdated'] = datetime.strptime(article['lastUpdated'], '%d %B %Y, at %H:%M.') + article['text'] = [line for line in article['text'] if line not in whitespace] + article['text'] = ''.join(article['text']) + return article From 235bbe77eed6509e3dedba569b586fe4dde39205 Mon Sep 17 00:00:00 2001 From: remitchell Date: Sat, 27 Jan 2018 18:19:22 -0500 Subject: [PATCH 23/47] Code cleanup --- v2/Chapter02-AdvancedHTMLParsing.ipynb | 60 ++- v2/Chapter03-web-crawlers.ipynb | 462 +++++++++++------- v2/Chapter04_CrawlingModels.ipynb | 78 ++- .../wikiSpider/wikiSpider/pipelines.py | 2 - .../wikiSpider/wikiSpider/settings.py | 6 +- v2/Chapter09_NaturalLanguages.ipynb | 10 +- v2/Chapter15_Testing.ipynb | 101 +++- 7 files changed, 481 insertions(+), 238 deletions(-) diff --git a/v2/Chapter02-AdvancedHTMLParsing.ipynb b/v2/Chapter02-AdvancedHTMLParsing.ipynb index b025cf6..bf6034f 100644 --- a/v2/Chapter02-AdvancedHTMLParsing.ipynb +++ b/v2/Chapter02-AdvancedHTMLParsing.ipynb @@ -229,23 +229,21 @@ "source": [ "from urllib.request import urlopen\n", "from bs4 import BeautifulSoup\n", - "html = urlopen(\"http://www.pythonscraping.com/pages/warandpeace.html\")\n", - "bs = BeautifulSoup(html, \"html.parser\")\n", - "print(bs)" + "html = urlopen('http://www.pythonscraping.com/pages/warandpeace.html')\n", + "bsObj = BeautifulSoup(html, 'html.parser')\n", + "print(bsObj)" ] }, { "cell_type": "code", "execution_count": 6, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "from urllib.request import urlopen\n", "from bs4 import BeautifulSoup\n", - "html = urlopen(\"http://www.pythonscraping.com/pages/warandpeace.html\")\n", - "bs = BeautifulSoup(html, \"html.parser\")" + "html = urlopen('http://www.pythonscraping.com/pages/warandpeace.html')\n", + "bsObj = BeautifulSoup(html, \"html.parser\")" ] }, { @@ -307,14 +305,14 @@ } ], "source": [ - "nameList = bs.findAll(\"span\", {\"class\":\"green\"})\n", + "nameList = bsObj.findAll('span', {'class':'green'})\n", "for name in nameList:\n", " print(name.get_text())" ] }, { "cell_type": "code", - "execution_count": 18, + "execution_count": 7, "metadata": {}, "outputs": [ { @@ -326,13 +324,13 @@ } ], "source": [ - "titles = bs.find_all({\"h1\",\"h2\",\"h3\",\"h4\",\"h5\",\"h6\"})\n", + "titles = bsObj.find_all(['h1', 'h2','h3','h4','h5','h6'])\n", "print([title for title in titles])\n" ] }, { "cell_type": "code", - "execution_count": 20, + "execution_count": 8, "metadata": {}, "outputs": [ { @@ -416,7 +414,7 @@ } ], "source": [ - "allText = bs.find_all(\"span\", {\"class\":{\"green\", \"red\"}})\n", + "allText = bsObj.find_all('span', {'class':{'green', 'red'}})\n", "print([text for text in allText])" ] }, @@ -434,7 +432,7 @@ } ], "source": [ - "nameList = bs.find_all(text=\"the prince\")\n", + "nameList = bsObj.find_all(text='the prince')\n", "print(len(nameList))" ] }, @@ -452,7 +450,7 @@ } ], "source": [ - "allText = bs.find_all(id=\"title\", class_=\"text\")\n", + "allText = bsObj.find_all(id='title', class_='text')\n", "print([text for text in allText])" ] }, @@ -541,10 +539,10 @@ "from urllib.request import urlopen\n", "from bs4 import BeautifulSoup\n", "\n", - "html = urlopen(\"http://www.pythonscraping.com/pages/page3.html\")\n", - "bs = BeautifulSoup(html, \"html.parser\")\n", + "html = urlopen('http://www.pythonscraping.com/pages/page3.html')\n", + "bsObj = BeautifulSoup(html, 'html.parser')\n", "\n", - "for child in bs.find(\"table\",{\"id\":\"giftList\"}).children:\n", + "for child in bsObj.find('table',{'id':'giftList'}).children:\n", " print(child)" ] }, @@ -621,16 +619,16 @@ "source": [ "from urllib.request import urlopen\n", "from bs4 import BeautifulSoup\n", - "html = urlopen(\"http://www.pythonscraping.com/pages/page3.html\")\n", - "bs = BeautifulSoup(html, \"html.parser\")\n", + "html = urlopen('http://www.pythonscraping.com/pages/page3.html')\n", + "bsObj = BeautifulSoup(html, 'html.parser')\n", "\n", - "for sibling in bs.find(\"table\",{\"id\":\"giftList\"}).tr.next_siblings:\n", + "for sibling in bsObj.find('table', {'id':'giftList'}).tr.next_siblings:\n", " print(sibling) " ] }, { "cell_type": "code", - "execution_count": 27, + "execution_count": 1, "metadata": {}, "outputs": [ { @@ -647,14 +645,14 @@ "from urllib.request import urlopen\n", "from bs4 import BeautifulSoup\n", "\n", - "html = urlopen(\"http://www.pythonscraping.com/pages/page3.html\")\n", - "bs = BeautifulSoup(html, \"html.parser\")\n", - "print(bs.find(\"img\",{\"src\":\"../img/gifts/img1.jpg\"}).parent.previous_sibling.get_text())" + "html = urlopen('http://www.pythonscraping.com/pages/page3.html')\n", + "bsObj = BeautifulSoup(html, 'html.parser')\n", + "print(bsObj.find('img',{'src':'../img/gifts/img1.jpg'}).parent.previous_sibling.get_text())" ] }, { "cell_type": "code", - "execution_count": 28, + "execution_count": 3, "metadata": {}, "outputs": [ { @@ -674,11 +672,11 @@ "from bs4 import BeautifulSoup\n", "import re\n", "\n", - "html = urlopen(\"http://www.pythonscraping.com/pages/page3.html\")\n", - "bs = BeautifulSoup(html, \"html.parser\")\n", - "images = bs.find_all(\"img\", {\"src\":re.compile(\"\\.\\.\\/img\\/gifts/img.*\\.jpg\")})\n", + "html = urlopen('http://www.pythonscraping.com/pages/page3.html')\n", + "bsObj = BeautifulSoup(html, 'html.parser')\n", + "images = bsObj.find_all('img', {'src':re.compile('\\.\\.\\/img\\/gifts/img.*\\.jpg')})\n", "for image in images: \n", - " print(image[\"src\"])" + " print(image['src'])" ] }, { @@ -744,7 +742,7 @@ } ], "source": [ - "bs.find_all(lambda tag: len(tag.attrs) == 2)" + "bsObj.find_all(lambda tag: len(tag.attrs) == 2)" ] }, { diff --git a/v2/Chapter03-web-crawlers.ipynb b/v2/Chapter03-web-crawlers.ipynb index 474ed98..6ced823 100644 --- a/v2/Chapter03-web-crawlers.ipynb +++ b/v2/Chapter03-web-crawlers.ipynb @@ -2,7 +2,7 @@ "cells": [ { "cell_type": "code", - "execution_count": 2, + "execution_count": 1, "metadata": {}, "outputs": [ { @@ -59,6 +59,7 @@ "#Six_Degrees_of_Kevin_Bacon\n", "#Music\n", "#Awards_and_nominations\n", + "#Filmography\n", "#See_also\n", "#References\n", "#External_links\n", @@ -73,7 +74,6 @@ "/wiki/Glory_Van_Scott\n", "#cite_note-walk-5\n", "#cite_note-bacon-6\n", - "/wiki/Kevin_Bacon_filmography\n", "/wiki/Circle_in_the_Square\n", "/wiki/Nancy_Mills\n", "/wiki/Cosmopolitan_(magazine)\n", @@ -213,7 +213,7 @@ "/wiki/United_Kingdom\n", "#cite_note-37\n", "#cite_note-38\n", - "/wiki/Egg\n", + "/wiki/Egg_as_food\n", "#cite_note-39\n", "/wiki/Kyra_Sedgwick\n", "/wiki/PBS\n", @@ -251,7 +251,7 @@ "/wiki/Trivia\n", "/wiki/Big_screen\n", "/wiki/Six_degrees_of_separation\n", - "/wiki/Meme\n", + "/wiki/Internet_meme\n", "/wiki/SixDegrees.org\n", "#cite_note-51\n", "/wiki/Bacon_number\n", @@ -268,6 +268,13 @@ "/wiki/Michael_Bacon_(musician)\n", "/wiki/Music_album\n", "#cite_note-54\n", + "/wiki/File:Question_book-new.svg\n", + "/wiki/Wikipedia:Citing_sources\n", + "/wiki/Wikipedia:Verifiability\n", + "//en.wikipedia.org/w/index.php?title=Kevin_Bacon&action=edit\n", + "/wiki/Help:Introduction_to_referencing_with_Wiki_Markup/1\n", + "/wiki/Wikipedia:Verifiability#Burden_of_evidence\n", + "/wiki/Help:Maintenance_template_removal\n", "/wiki/Golden_Globe_Awards\n", "/wiki/Golden_Globe_Award_for_Best_Supporting_Actor_%E2%80%93_Motion_Picture\n", "/wiki/The_River_Wild\n", @@ -322,6 +329,14 @@ "/wiki/Saturn_Awards\n", "/wiki/Saturn_Award_for_Best_Actor_on_Television\n", "/wiki/The_Following\n", + "/wiki/Golden_Globe_Awards\n", + "/wiki/Golden_Globe_Award_for_Best_Actor_%E2%80%93_Television_Series_Musical_or_Comedy\n", + "/wiki/I_Love_Dick_(TV_series)\n", + "#cite_note-55\n", + "#cite_note-56\n", + "#cite_note-57\n", + "#cite_note-58\n", + "/wiki/Kevin_Bacon_filmography\n", "/wiki/List_of_actors_with_Hollywood_Walk_of_Fame_motion_picture_stars\n", "#cite_ref-1\n", "https://web.archive.org/web/20090113222205/http://www.newenglandancestors.org/research/services/articles_gbr78.asp\n", @@ -360,7 +375,7 @@ "#cite_ref-bio_10-8\n", "#cite_ref-bio_10-9\n", "#cite_ref-bio_10-10\n", - "http://www.pbs.org/wnet/finding-your-roots/profiles/kevin-bacon%C2%A0/\n", + "https://www.pbs.org/wnet/finding-your-roots/profiles/kevin-bacon%C2%A0/\n", "#cite_ref-kevin_11-0\n", "http://www.tvguide.com/celebrities/kevin-bacon/bio/160550\n", "#cite_ref-12\n", @@ -431,11 +446,12 @@ "#cite_ref-42\n", "http://www.au.org/media/church-and-state/archives/2008/05/two-thumbs-up.html\n", "#cite_ref-43\n", - "http://www.washingtonpost.com/wp-dyn/content/article/2008/03/25/AR2008032503852.html\n", + "https://www.washingtonpost.com/wp-dyn/content/article/2008/03/25/AR2008032503852.html\n", "#cite_ref-44\n", "#cite_ref-45\n", "http://www.foxnews.com/story/0,2933,343589,00.html\n", "#cite_ref-financialpost_46-0\n", + "https://web.archive.org/web/20140314085857/http://economiccrisis.us/2009/06/may-god-spare-mercy-victim-tells-madoff/\n", "http://economiccrisis.us/2009/06/may-god-spare-mercy-victim-tells-madoff/\n", "#cite_ref-47\n", "#cite_ref-48\n", @@ -453,18 +469,29 @@ "http://www.telegraph.co.uk/science/science-news/4768389/And-the-winner-tonight-is.html\n", "#cite_ref-54\n", "http://baconbros.com/\n", + "#cite_ref-55\n", + "/wiki/Reuters\n", + "https://www.cbsnews.com/pictures/golden-globes-2018-highlights/50/\n", + "/wiki/CBS_News\n", + "#cite_ref-56\n", + "https://www.theverge.com/2018/1/7/16861812/golden-globes-2018-aziz-ansari-master-of-none-best-actor-tv\n", + "/wiki/The_Verge\n", + "#cite_ref-57\n", + "https://www.hollywoodreporter.com/news/aziz-ansari-wins-best-performance-by-an-actor-a-tv-series-comedy-musical-golden-globes-2018-1072154\n", + "/wiki/The_Hollywood_Reporter\n", + "#cite_ref-58\n", + "http://www.indiewire.com/2018/01/aziz-ansari-wins-golden-globe-best-actor-tv-comedy-1201914235/\n", + "/wiki/Indie_Wire\n", "https://commons.wikimedia.org/wiki/Category:Kevin_Bacon\n", "http://www.imdb.com/name/nm0000102/\n", "/wiki/IMDb\n", - "http://ibdb.com/person.php?id=90569\n", + "https://www.ibdb.com/Person/View/90569\n", "/wiki/Internet_Broadway_Database\n", "https://www.wikidata.org/wiki/Q3454165#P1220\n", "http://www.lortel.org/Archives/CreditableEntity/5597\n", "/wiki/Lortel_Archives\n", - "http://www.allmovie.com/artist/p3164\n", + "https://www.allmovie.com/artist/p3164\n", "/wiki/AllMovie\n", - "//worldcat.org/identities/lccn-n88-34930\n", - "/wiki/WorldCat\n", "http://oracleofbacon.org\n", "/wiki/Template:Critics%27_Choice_Movie_Award_for_Best_Actor\n", "/wiki/Template_talk:Critics%27_Choice_Movie_Award_for_Best_Actor\n", @@ -492,6 +519,7 @@ "/wiki/Michael_Keaton\n", "/wiki/Leonardo_DiCaprio\n", "/wiki/Casey_Affleck\n", + "/wiki/Gary_Oldman\n", "/wiki/Template:GoldenGlobeBestActorTVMiniseriesFilm\n", "/wiki/Template_talk:GoldenGlobeBestActorTVMiniseriesFilm\n", "//en.wikipedia.org/w/index.php?title=Template:GoldenGlobeBestActorTVMiniseriesFilm&action=edit\n", @@ -532,6 +560,7 @@ "/wiki/Billy_Bob_Thornton\n", "/wiki/Oscar_Isaac\n", "/wiki/Tom_Hiddleston\n", + "/wiki/Ewan_McGregor\n", "/wiki/Template:Saturn_Award_for_Best_Actor_on_Television\n", "/wiki/Template_talk:Saturn_Award_for_Best_Actor_on_Television\n", "//en.wikipedia.org/w/index.php?title=Template:Saturn_Award_for_Best_Actor_on_Television&action=edit\n", @@ -557,6 +586,7 @@ "/wiki/Hugh_Dancy\n", "/wiki/Andrew_Lincoln\n", "/wiki/Bruce_Campbell\n", + "/wiki/Andrew_Lincoln\n", "/wiki/Template:ScreenActorsGuildAward_MaleTVMiniseriesMovie\n", "/wiki/Template_talk:ScreenActorsGuildAward_MaleTVMiniseriesMovie\n", "//en.wikipedia.org/w/index.php?title=Template:ScreenActorsGuildAward_MaleTVMiniseriesMovie&action=edit\n", @@ -583,6 +613,7 @@ "/wiki/Mark_Ruffalo\n", "/wiki/Idris_Elba\n", "/wiki/Bryan_Cranston\n", + "/wiki/Alexander_Skarsg%C3%A5rd\n", "/wiki/Template:ScreenActorsGuildAward_CastMotionPicture_1995%E2%80%932000\n", "/wiki/Template_talk:ScreenActorsGuildAward_CastMotionPicture_1995%E2%80%932000\n", "//en.wikipedia.org/w/index.php?title=Template:ScreenActorsGuildAward_CastMotionPicture_1995%E2%80%932000&action=edit\n", @@ -605,7 +636,7 @@ "/wiki/Mark_Addy\n", "/wiki/Paul_Barber_(actor)\n", "/wiki/Robert_Carlyle\n", - "/wiki/Deirdre_Costello_(actress)\n", + "/w/index.php?title=Deirdre_Costello_(actress)&action=edit&redlink=1\n", "/wiki/Steve_Huison\n", "/wiki/Bruce_Jones_(actor)\n", "/wiki/Lesley_Sharp\n", @@ -659,7 +690,7 @@ "/wiki/Template:ScreenActorsGuildAward_CastMotionPicture_2001%E2%80%932010\n", "/wiki/Template:ScreenActorsGuildAward_CastMotionPicture_2011%E2%80%932020\n", "/wiki/Help:Authority_control\n", - "//www.worldcat.org/identities/containsVIAFID/39570812\n", + "https://www.worldcat.org/identities/containsVIAFID/39570812\n", "/wiki/Virtual_International_Authority_File\n", "https://viaf.org/viaf/39570812\n", "/wiki/Library_of_Congress_Control_Number\n", @@ -667,18 +698,19 @@ "/wiki/International_Standard_Name_Identifier\n", "http://isni.org/isni/0000000121291300\n", "/wiki/Integrated_Authority_File\n", - "http://d-nb.info/gnd/124109659\n", + "https://d-nb.info/gnd/124109659\n", "/wiki/Syst%C3%A8me_universitaire_de_documentation\n", "https://www.idref.fr/084292652\n", "/wiki/Biblioth%C3%A8que_nationale_de_France\n", "http://catalogue.bnf.fr/ark:/12148/cb139817766\n", "http://data.bnf.fr/ark:/12148/cb139817766\n", "/wiki/MusicBrainz\n", - "//musicbrainz.org/artist/cc0dbdfc-9b2c-4e31-8448-808412388406\n", - "https://en.wikipedia.org/w/index.php?title=Kevin_Bacon&oldid=787491952\n", + "https://musicbrainz.org/artist/cc0dbdfc-9b2c-4e31-8448-808412388406\n", + "/wiki/SNAC\n", + "http://socialarchive.iath.virginia.edu/ark:/99166/w6w67gw2\n", + "https://en.wikipedia.org/w/index.php?title=Kevin_Bacon&oldid=821876006\n", "/wiki/Help:Category\n", "/wiki/Category:1958_births\n", - "/wiki/Category:Living_people\n", "/wiki/Category:20th-century_American_male_actors\n", "/wiki/Category:21st-century_American_male_actors\n", "/wiki/Category:American_atheists\n", @@ -686,18 +718,21 @@ "/wiki/Category:American_male_soap_opera_actors\n", "/wiki/Category:American_male_television_actors\n", "/wiki/Category:American_male_voice_actors\n", + "/wiki/Category:The_Bacon_Brothers_members\n", "/wiki/Category:Best_Miniseries_or_Television_Movie_Actor_Golden_Globe_winners\n", "/wiki/Category:Circle_in_the_Square_Theatre_School_alumni\n", + "/wiki/Category:Living_people\n", "/wiki/Category:Male_actors_from_Philadelphia\n", "/wiki/Category:Obie_Award_recipients\n", "/wiki/Category:Outstanding_Performance_by_a_Cast_in_a_Motion_Picture_Screen_Actors_Guild_Award_winners\n", "/wiki/Category:Sedgwick_family\n", - "/wiki/Category:The_Bacon_Brothers_members\n", "/wiki/Category:Wikipedia_indefinitely_semi-protected_biographies_of_living_people\n", "/wiki/Category:Use_mdy_dates_from_October_2016\n", "/wiki/Category:Articles_with_hCards\n", "/wiki/Category:All_articles_with_unsourced_statements\n", "/wiki/Category:Articles_with_unsourced_statements_from_January_2016\n", + "/wiki/Category:Articles_needing_additional_references_from_October_2017\n", + "/wiki/Category:All_articles_needing_additional_references\n", "/wiki/Category:Articles_with_IBDb_links\n", "/wiki/Category:Wikipedia_articles_with_VIAF_identifiers\n", "/wiki/Category:Wikipedia_articles_with_LCCN_identifiers\n", @@ -705,17 +740,16 @@ "/wiki/Category:Wikipedia_articles_with_GND_identifiers\n", "/wiki/Category:Wikipedia_articles_with_BNF_identifiers\n", "/wiki/Category:Wikipedia_articles_with_MusicBrainz_identifiers\n", + "/wiki/Category:Wikipedia_articles_with_SNAC-ID_identifiers\n", "/wiki/Special:MyTalk\n", "/wiki/Special:MyContributions\n", "/w/index.php?title=Special:CreateAccount&returnto=Kevin+Bacon\n", "/w/index.php?title=Special:UserLogin&returnto=Kevin+Bacon\n", "/wiki/Kevin_Bacon\n", "/wiki/Talk:Kevin_Bacon\n", - "#\n", "/wiki/Kevin_Bacon\n", "/w/index.php?title=Kevin_Bacon&action=edit\n", "/w/index.php?title=Kevin_Bacon&action=history\n", - "#\n", "/wiki/Main_Page\n", "/wiki/Main_Page\n", "/wiki/Portal:Contents\n", @@ -733,18 +767,19 @@ "/wiki/Special:RecentChangesLinked/Kevin_Bacon\n", "/wiki/Wikipedia:File_Upload_Wizard\n", "/wiki/Special:SpecialPages\n", - "/w/index.php?title=Kevin_Bacon&oldid=787491952\n", + "/w/index.php?title=Kevin_Bacon&oldid=821876006\n", "/w/index.php?title=Kevin_Bacon&action=info\n", - "https://www.wikidata.org/wiki/Q3454165\n", - "/w/index.php?title=Special:CiteThisPage&page=Kevin_Bacon&id=787491952\n", + "https://www.wikidata.org/wiki/Special:EntityPage/Q3454165\n", + "/w/index.php?title=Special:CiteThisPage&page=Kevin_Bacon&id=821876006\n", "/w/index.php?title=Special:Book&bookcmd=book_creator&referer=Kevin+Bacon\n", - "/w/index.php?title=Special:ElectronPdf&page=Kevin+Bacon&action=show-selection-screen&coll-download-url=%2Fw%2Findex.php%3Ftitle%3DSpecial%3ABook%26bookcmd%3Drender_article%26arttitle%3DKevin%2BBacon%26returnto%3DKevin%2BBacon%26oldid%3D787491952%26writer%3Drdf2latex\n", + "/w/index.php?title=Special:ElectronPdf&page=Kevin+Bacon&action=show-download-screen\n", "/w/index.php?title=Kevin_Bacon&printable=yes\n", "https://commons.wikimedia.org/wiki/Category:Kevin_Bacon\n", "https://af.wikipedia.org/wiki/Kevin_Bacon\n", "https://ar.wikipedia.org/wiki/%D9%83%D9%8A%D9%81%D9%8A%D9%86_%D8%A8%D9%8A%D9%83%D9%86\n", "https://an.wikipedia.org/wiki/Kevin_Bacon\n", "https://ast.wikipedia.org/wiki/Kevin_Bacon\n", + "https://azb.wikipedia.org/wiki/%DA%A9%D9%88%DB%8C%D9%86_%D8%A8%DB%8C%DA%A9%D9%86\n", "https://zh-min-nan.wikipedia.org/wiki/Kevin_Bacon\n", "https://bi.wikipedia.org/wiki/Kevin_Bacon\n", "https://bg.wikipedia.org/wiki/%D0%9A%D0%B5%D0%B2%D0%B8%D0%BD_%D0%91%D0%B5%D0%B9%D0%BA%D1%8A%D0%BD\n", @@ -780,7 +815,7 @@ "https://pl.wikipedia.org/wiki/Kevin_Bacon\n", "https://pt.wikipedia.org/wiki/Kevin_Bacon\n", "https://ro.wikipedia.org/wiki/Kevin_Bacon\n", - "https://ru.wikipedia.org/wiki/%D0%91%D1%8D%D0%B9%D0%BA%D0%BE%D0%BD,_%D0%9A%D0%B5%D0%B2%D0%B8%D0%BD\n", + "https://ru.wikipedia.org/wiki/%D0%91%D0%B5%D0%B9%D0%BA%D0%BE%D0%BD,_%D0%9A%D0%B5%D0%B2%D0%B8%D0%BD\n", "https://sco.wikipedia.org/wiki/Kevin_Bacon\n", "https://simple.wikipedia.org/wiki/Kevin_Bacon\n", "https://sk.wikipedia.org/wiki/Kevin_Bacon\n", @@ -794,7 +829,7 @@ "https://uk.wikipedia.org/wiki/%D0%9A%D0%B5%D0%B2%D1%96%D0%BD_%D0%91%D0%B5%D0%B9%D0%BA%D0%BE%D0%BD\n", "https://vi.wikipedia.org/wiki/Kevin_Bacon\n", "https://zh.wikipedia.org/wiki/%E5%87%AF%E6%96%87%C2%B7%E8%B4%9D%E8%82%AF\n", - "https://www.wikidata.org/wiki/Q3454165#sitelinks-wikipedia\n", + "https://www.wikidata.org/wiki/Special:EntityPage/Q3454165#sitelinks-wikipedia\n", "//en.wikipedia.org/wiki/Wikipedia:Text_of_Creative_Commons_Attribution-ShareAlike_3.0_Unported_License\n", "//creativecommons.org/licenses/by-sa/3.0/\n", "//wikimediafoundation.org/wiki/Terms_of_Use\n", @@ -817,8 +852,8 @@ "from bs4 import BeautifulSoup \n", "\n", "html = urlopen('http://en.wikipedia.org/wiki/Kevin_Bacon')\n", - "bs = BeautifulSoup(html, 'html.parser')\n", - "for link in bs.find_all('a'):\n", + "bsObj = BeautifulSoup(html, 'html.parser')\n", + "for link in bsObj.find_all('a'):\n", " if 'href' in link.attrs:\n", " print(link.attrs['href'])" ] @@ -832,7 +867,7 @@ }, { "cell_type": "code", - "execution_count": 4, + "execution_count": 2, "metadata": {}, "outputs": [ { @@ -872,7 +907,6 @@ "/wiki/Pennsylvania_Governor%27s_School_for_the_Arts\n", "/wiki/Bucknell_University\n", "/wiki/Glory_Van_Scott\n", - "/wiki/Kevin_Bacon_filmography\n", "/wiki/Circle_in_the_Square\n", "/wiki/Nancy_Mills\n", "/wiki/Cosmopolitan_(magazine)\n", @@ -963,7 +997,7 @@ "/wiki/Tremors_(film)\n", "/wiki/EE_(telecommunications_company)\n", "/wiki/United_Kingdom\n", - "/wiki/Egg\n", + "/wiki/Egg_as_food\n", "/wiki/Kyra_Sedgwick\n", "/wiki/PBS\n", "/wiki/Lanford_Wilson\n", @@ -988,7 +1022,7 @@ "/wiki/Trivia\n", "/wiki/Big_screen\n", "/wiki/Six_degrees_of_separation\n", - "/wiki/Meme\n", + "/wiki/Internet_meme\n", "/wiki/SixDegrees.org\n", "/wiki/Bacon_number\n", "/wiki/Internet_Movie_Database\n", @@ -1054,14 +1088,22 @@ "/wiki/Saturn_Awards\n", "/wiki/Saturn_Award_for_Best_Actor_on_Television\n", "/wiki/The_Following\n", + "/wiki/Golden_Globe_Awards\n", + "/wiki/Golden_Globe_Award_for_Best_Actor_%E2%80%93_Television_Series_Musical_or_Comedy\n", + "/wiki/I_Love_Dick_(TV_series)\n", + "/wiki/Kevin_Bacon_filmography\n", "/wiki/List_of_actors_with_Hollywood_Walk_of_Fame_motion_picture_stars\n", "/wiki/The_Austin_Chronicle\n", "/wiki/Access_Hollywood\n", + "/wiki/Reuters\n", + "/wiki/CBS_News\n", + "/wiki/The_Verge\n", + "/wiki/The_Hollywood_Reporter\n", + "/wiki/Indie_Wire\n", "/wiki/IMDb\n", "/wiki/Internet_Broadway_Database\n", "/wiki/Lortel_Archives\n", "/wiki/AllMovie\n", - "/wiki/WorldCat\n", "/wiki/Critics%27_Choice_Movie_Award_for_Best_Actor\n", "/wiki/Geoffrey_Rush\n", "/wiki/Jack_Nicholson\n", @@ -1085,6 +1127,7 @@ "/wiki/Michael_Keaton\n", "/wiki/Leonardo_DiCaprio\n", "/wiki/Casey_Affleck\n", + "/wiki/Gary_Oldman\n", "/wiki/Golden_Globe_Award_for_Best_Actor_%E2%80%93_Miniseries_or_Television_Film\n", "/wiki/Mickey_Rooney\n", "/wiki/Anthony_Andrews\n", @@ -1122,6 +1165,7 @@ "/wiki/Billy_Bob_Thornton\n", "/wiki/Oscar_Isaac\n", "/wiki/Tom_Hiddleston\n", + "/wiki/Ewan_McGregor\n", "/wiki/Saturn_Award_for_Best_Actor_on_Television\n", "/wiki/Kyle_Chandler\n", "/wiki/Steven_Weber_(actor)\n", @@ -1144,6 +1188,7 @@ "/wiki/Hugh_Dancy\n", "/wiki/Andrew_Lincoln\n", "/wiki/Bruce_Campbell\n", + "/wiki/Andrew_Lincoln\n", "/wiki/Screen_Actors_Guild_Award_for_Outstanding_Performance_by_a_Male_Actor_in_a_Miniseries_or_Television_Movie\n", "/wiki/Ra%C3%BAl_Juli%C3%A1\n", "/wiki/Gary_Sinise\n", @@ -1167,6 +1212,7 @@ "/wiki/Mark_Ruffalo\n", "/wiki/Idris_Elba\n", "/wiki/Bryan_Cranston\n", + "/wiki/Alexander_Skarsg%C3%A5rd\n", "/wiki/Screen_Actors_Guild_Award_for_Outstanding_Performance_by_a_Cast_in_a_Motion_Picture\n", "/wiki/Apollo_13_(film)\n", "/wiki/Tom_Hanks\n", @@ -1186,7 +1232,6 @@ "/wiki/Mark_Addy\n", "/wiki/Paul_Barber_(actor)\n", "/wiki/Robert_Carlyle\n", - "/wiki/Deirdre_Costello_(actress)\n", "/wiki/Steve_Huison\n", "/wiki/Bruce_Jones_(actor)\n", "/wiki/Lesley_Sharp\n", @@ -1242,7 +1287,8 @@ "/wiki/Integrated_Authority_File\n", "/wiki/Syst%C3%A8me_universitaire_de_documentation\n", "/wiki/Biblioth%C3%A8que_nationale_de_France\n", - "/wiki/MusicBrainz\n" + "/wiki/MusicBrainz\n", + "/wiki/SNAC\n" ] } ], @@ -1252,8 +1298,8 @@ "import re\n", "\n", "html = urlopen('http://en.wikipedia.org/wiki/Kevin_Bacon')\n", - "bs = BeautifulSoup(html, 'html.parser')\n", - "for link in bs.find('div', {'id':'bodyContent'}).find_all('a', href=re.compile('^(/wiki/)((?!:).)*$')):\n", + "bsObj = BeautifulSoup(html, 'html.parser')\n", + "for link in bsObj.find('div', {'id':'bodyContent'}).find_all('a', href=re.compile('^(/wiki/)((?!:).)*$')):\n", " if 'href' in link.attrs:\n", " print(link.attrs['href'])" ] @@ -1267,17 +1313,21 @@ }, { "cell_type": "code", - "execution_count": 6, + "execution_count": 3, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "/wiki/Geoffrey_Rush\n", - "/wiki/Kevin_Spacey\n", - "/wiki/Jack_Lemmon\n", - "/wiki/Peter_Mullan\n" + "/wiki/Philip_Seymour_Hoffman\n", + "/wiki/Jeremy_Renner\n", + "/wiki/Tom_Hiddleston\n", + "/wiki/Joanna_Hogg\n", + "/wiki/Casualty_(TV_series)\n", + "/wiki/Roath_Lock\n", + "/wiki/Sony_Pictures_Television\n", + "/wiki/Animax_Spain\n" ] }, { @@ -1287,15 +1337,15 @@ "traceback": [ "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", "\u001b[0;31mKeyboardInterrupt\u001b[0m Traceback (most recent call last)", - "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[1;32m 15\u001b[0m \u001b[0mnewArticle\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mlinks\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mrandom\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mrandint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;36m0\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mlen\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mlinks\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m-\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mattrs\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m\"href\"\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 16\u001b[0m \u001b[0mprint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mnewArticle\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 17\u001b[0;31m \u001b[0mlinks\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mgetLinks\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mnewArticle\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m", - "\u001b[0;32m\u001b[0m in \u001b[0;36mgetLinks\u001b[0;34m(articleUrl)\u001b[0m\n\u001b[1;32m 8\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0mgetLinks\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0marticleUrl\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 9\u001b[0m \u001b[0mhtml\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0murlopen\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"http://en.wikipedia.org\"\u001b[0m\u001b[0;34m+\u001b[0m\u001b[0marticleUrl\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 10\u001b[0;31m \u001b[0mbsObj\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mBeautifulSoup\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mhtml\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m\"html.parser\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 11\u001b[0m return bsObj.find(\"div\", {\"id\":\"bodyContent\"}).find_all(\"a\", \n\u001b[1;32m 12\u001b[0m href=re.compile(\"^(/wiki/)((?!:).)*$\"))\n", - "\u001b[0;32m/Users/rmitchell/anaconda3/lib/python3.6/site-packages/bs4/__init__.py\u001b[0m in \u001b[0;36m__init__\u001b[0;34m(self, markup, features, builder, parse_only, from_encoding, exclude_encodings, **kwargs)\u001b[0m\n\u001b[1;32m 189\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 190\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mhasattr\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mmarkup\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m'read'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0;31m# It's a file-type object.\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 191\u001b[0;31m \u001b[0mmarkup\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mmarkup\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mread\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 192\u001b[0m elif len(markup) <= 256 and (\n\u001b[1;32m 193\u001b[0m \u001b[0;34m(\u001b[0m\u001b[0misinstance\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mmarkup\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mbytes\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;32mand\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0;34mb'<'\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mmarkup\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m/Users/rmitchell/anaconda3/lib/python3.6/http/client.py\u001b[0m in \u001b[0;36mread\u001b[0;34m(self, amt)\u001b[0m\n\u001b[1;32m 460\u001b[0m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 461\u001b[0m \u001b[0;32mtry\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 462\u001b[0;31m \u001b[0ms\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_safe_read\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mlength\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 463\u001b[0m \u001b[0;32mexcept\u001b[0m \u001b[0mIncompleteRead\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 464\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_close_conn\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m/Users/rmitchell/anaconda3/lib/python3.6/http/client.py\u001b[0m in \u001b[0;36m_safe_read\u001b[0;34m(self, amt)\u001b[0m\n\u001b[1;32m 610\u001b[0m \u001b[0ms\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m[\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 611\u001b[0m \u001b[0;32mwhile\u001b[0m \u001b[0mamt\u001b[0m \u001b[0;34m>\u001b[0m \u001b[0;36m0\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 612\u001b[0;31m \u001b[0mchunk\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mfp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mread\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mmin\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mamt\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mMAXAMOUNT\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 613\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0mchunk\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 614\u001b[0m \u001b[0;32mraise\u001b[0m \u001b[0mIncompleteRead\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34mb''\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mjoin\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0ms\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mamt\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m/Users/rmitchell/anaconda3/lib/python3.6/socket.py\u001b[0m in \u001b[0;36mreadinto\u001b[0;34m(self, b)\u001b[0m\n\u001b[1;32m 584\u001b[0m \u001b[0;32mwhile\u001b[0m \u001b[0;32mTrue\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 585\u001b[0m \u001b[0;32mtry\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 586\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_sock\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mrecv_into\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mb\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 587\u001b[0m \u001b[0;32mexcept\u001b[0m \u001b[0mtimeout\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 588\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_timeout_occurred\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;32mTrue\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m/Users/rmitchell/anaconda3/lib/python3.6/ssl.py\u001b[0m in \u001b[0;36mrecv_into\u001b[0;34m(self, buffer, nbytes, flags)\u001b[0m\n\u001b[1;32m 1000\u001b[0m \u001b[0;34m\"non-zero flags not allowed in calls to recv_into() on %s\"\u001b[0m \u001b[0;34m%\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1001\u001b[0m self.__class__)\n\u001b[0;32m-> 1002\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mread\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mnbytes\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mbuffer\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 1003\u001b[0m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1004\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0msocket\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mrecv_into\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mbuffer\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mnbytes\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mflags\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m/Users/rmitchell/anaconda3/lib/python3.6/ssl.py\u001b[0m in \u001b[0;36mread\u001b[0;34m(self, len, buffer)\u001b[0m\n\u001b[1;32m 863\u001b[0m \u001b[0;32mraise\u001b[0m \u001b[0mValueError\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"Read on closed or unwrapped SSL socket.\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 864\u001b[0m \u001b[0;32mtry\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 865\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_sslobj\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mread\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mlen\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mbuffer\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 866\u001b[0m \u001b[0;32mexcept\u001b[0m \u001b[0mSSLError\u001b[0m \u001b[0;32mas\u001b[0m \u001b[0mx\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 867\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mx\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m0\u001b[0m\u001b[0;34m]\u001b[0m \u001b[0;34m==\u001b[0m \u001b[0mSSL_ERROR_EOF\u001b[0m \u001b[0;32mand\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msuppress_ragged_eofs\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m/Users/rmitchell/anaconda3/lib/python3.6/ssl.py\u001b[0m in \u001b[0;36mread\u001b[0;34m(self, len, buffer)\u001b[0m\n\u001b[1;32m 623\u001b[0m \"\"\"\n\u001b[1;32m 624\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mbuffer\u001b[0m \u001b[0;32mis\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0;32mNone\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 625\u001b[0;31m \u001b[0mv\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_sslobj\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mread\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mlen\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mbuffer\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 626\u001b[0m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 627\u001b[0m \u001b[0mv\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_sslobj\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mread\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mlen\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[1;32m 14\u001b[0m \u001b[0mnewArticle\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mlinks\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mrandom\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mrandint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;36m0\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mlen\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mlinks\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m-\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mattrs\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m'href'\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 15\u001b[0m \u001b[0mprint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mnewArticle\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 16\u001b[0;31m \u001b[0mlinks\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mgetLinks\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mnewArticle\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m", + "\u001b[0;32m\u001b[0m in \u001b[0;36mgetLinks\u001b[0;34m(articleUrl)\u001b[0m\n\u001b[1;32m 8\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0mgetLinks\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0marticleUrl\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 9\u001b[0m \u001b[0mhtml\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0murlopen\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'http://en.wikipedia.org{}'\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mformat\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0marticleUrl\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 10\u001b[0;31m \u001b[0mbsObj\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mBeautifulSoup\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mhtml\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m'html.parser'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 11\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mbsObj\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mfind\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'div'\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m{\u001b[0m\u001b[0;34m'id'\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m'bodyContent'\u001b[0m\u001b[0;34m}\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mfind_all\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'a'\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mhref\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mre\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mcompile\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'^(/wiki/)((?!:).)*$'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 12\u001b[0m \u001b[0mlinks\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mgetLinks\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'/wiki/Kevin_Bacon'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/bs4/__init__.py\u001b[0m in \u001b[0;36m__init__\u001b[0;34m(self, markup, features, builder, parse_only, from_encoding, exclude_encodings, **kwargs)\u001b[0m\n\u001b[1;32m 226\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mreset\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 227\u001b[0m \u001b[0;32mtry\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 228\u001b[0;31m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_feed\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 229\u001b[0m \u001b[0;32mbreak\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 230\u001b[0m \u001b[0;32mexcept\u001b[0m \u001b[0mParserRejectedMarkup\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/bs4/__init__.py\u001b[0m in \u001b[0;36m_feed\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 287\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mbuilder\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mreset\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 288\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 289\u001b[0;31m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mbuilder\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mfeed\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mmarkup\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 290\u001b[0m \u001b[0;31m# Close out any unfinished strings and close all the open tags.\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 291\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mendData\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/bs4/builder/_htmlparser.py\u001b[0m in \u001b[0;36mfeed\u001b[0;34m(self, markup)\u001b[0m\n\u001b[1;32m 213\u001b[0m \u001b[0mparser\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msoup\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msoup\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 214\u001b[0m \u001b[0;32mtry\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 215\u001b[0;31m \u001b[0mparser\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mfeed\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mmarkup\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 216\u001b[0m \u001b[0;32mexcept\u001b[0m \u001b[0mHTMLParseError\u001b[0m \u001b[0;32mas\u001b[0m \u001b[0me\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 217\u001b[0m warnings.warn(RuntimeWarning(\n", + "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/html/parser.py\u001b[0m in \u001b[0;36mfeed\u001b[0;34m(self, data)\u001b[0m\n\u001b[1;32m 109\u001b[0m \"\"\"\n\u001b[1;32m 110\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mrawdata\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mrawdata\u001b[0m \u001b[0;34m+\u001b[0m \u001b[0mdata\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 111\u001b[0;31m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mgoahead\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;36m0\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 112\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 113\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0mclose\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/html/parser.py\u001b[0m in \u001b[0;36mgoahead\u001b[0;34m(self, end)\u001b[0m\n\u001b[1;32m 169\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mstartswith\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'<'\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mi\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 170\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mstarttagopen\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mmatch\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mrawdata\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mi\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0;31m# < + letter\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 171\u001b[0;31m \u001b[0mk\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mparse_starttag\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mi\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 172\u001b[0m \u001b[0;32melif\u001b[0m \u001b[0mstartswith\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\" 345\u001b[0;31m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mhandle_starttag\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mtag\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mattrs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 346\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mtag\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mCDATA_CONTENT_ELEMENTS\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 347\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mset_cdata_mode\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mtag\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/bs4/builder/_htmlparser.py\u001b[0m in \u001b[0;36mhandle_starttag\u001b[0;34m(self, name, attrs, handle_empty_element)\u001b[0m\n\u001b[1;32m 79\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0mhandle_starttag\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mname\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mattrs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mhandle_empty_element\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;32mTrue\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 80\u001b[0m \u001b[0;31m# XXX namespace\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 81\u001b[0;31m \u001b[0mattr_dict\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m{\u001b[0m\u001b[0;34m}\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 82\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0mkey\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mvalue\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mattrs\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 83\u001b[0m \u001b[0;31m# Change None attribute values to the empty string\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;31mKeyboardInterrupt\u001b[0m: " ] } @@ -1310,8 +1360,8 @@ "random.seed(datetime.datetime.now())\n", "def getLinks(articleUrl):\n", " html = urlopen('http://en.wikipedia.org{}'.format(articleUrl))\n", - " bs = BeautifulSoup(html, 'html.parser')\n", - " return bs.find('div', {'id':'bodyContent'}).find_all('a', href=re.compile('^(/wiki/)((?!:).)*$'))\n", + " bsObj = BeautifulSoup(html, 'html.parser')\n", + " return bsObj.find('div', {'id':'bodyContent'}).find_all('a', href=re.compile('^(/wiki/)((?!:).)*$'))\n", "links = getLinks('/wiki/Kevin_Bacon')\n", "while len(links) > 0:\n", " newArticle = links[random.randint(0, len(links)-1)].attrs['href']\n", @@ -1328,7 +1378,7 @@ }, { "cell_type": "code", - "execution_count": 1, + "execution_count": 4, "metadata": {}, "outputs": [ { @@ -1340,9 +1390,7 @@ "/wiki/Wikipedia:Requests_for_page_protection\n", "/wiki/Wikipedia:Requests_for_permissions\n", "/wiki/Wikipedia:Requesting_copyright_permission\n", - "/wiki/Wikipedia:User_access_levels\n", - "/wiki/Wikipedia:Requests_for_adminship\n", - "/wiki/Wikipedia:Requested_articles\n" + "/wiki/Wikipedia:User_access_levels\n" ] }, { @@ -1352,27 +1400,20 @@ "traceback": [ "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", "\u001b[0;31mKeyboardInterrupt\u001b[0m Traceback (most recent call last)", - "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[1;32m 16\u001b[0m \u001b[0mpages\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0madd\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mnewPage\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 17\u001b[0m \u001b[0mgetLinks\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mnewPage\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 18\u001b[0;31m \u001b[0mgetLinks\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m", - "\u001b[0;32m\u001b[0m in \u001b[0;36mgetLinks\u001b[0;34m(pageUrl)\u001b[0m\n\u001b[1;32m 15\u001b[0m \u001b[0mprint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mnewPage\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 16\u001b[0m \u001b[0mpages\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0madd\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mnewPage\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 17\u001b[0;31m \u001b[0mgetLinks\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mnewPage\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 18\u001b[0m \u001b[0mgetLinks\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m\u001b[0m in \u001b[0;36mgetLinks\u001b[0;34m(pageUrl)\u001b[0m\n\u001b[1;32m 15\u001b[0m \u001b[0mprint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mnewPage\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 16\u001b[0m \u001b[0mpages\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0madd\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mnewPage\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 17\u001b[0;31m \u001b[0mgetLinks\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mnewPage\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 18\u001b[0m \u001b[0mgetLinks\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m\u001b[0m in \u001b[0;36mgetLinks\u001b[0;34m(pageUrl)\u001b[0m\n\u001b[1;32m 15\u001b[0m \u001b[0mprint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mnewPage\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 16\u001b[0m \u001b[0mpages\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0madd\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mnewPage\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 17\u001b[0;31m \u001b[0mgetLinks\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mnewPage\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 18\u001b[0m \u001b[0mgetLinks\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m\u001b[0m in \u001b[0;36mgetLinks\u001b[0;34m(pageUrl)\u001b[0m\n\u001b[1;32m 15\u001b[0m \u001b[0mprint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mnewPage\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 16\u001b[0m \u001b[0mpages\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0madd\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mnewPage\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 17\u001b[0;31m \u001b[0mgetLinks\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mnewPage\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 18\u001b[0m \u001b[0mgetLinks\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m\u001b[0m in \u001b[0;36mgetLinks\u001b[0;34m(pageUrl)\u001b[0m\n\u001b[1;32m 15\u001b[0m \u001b[0mprint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mnewPage\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 16\u001b[0m \u001b[0mpages\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0madd\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mnewPage\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 17\u001b[0;31m \u001b[0mgetLinks\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mnewPage\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 18\u001b[0m \u001b[0mgetLinks\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m\u001b[0m in \u001b[0;36mgetLinks\u001b[0;34m(pageUrl)\u001b[0m\n\u001b[1;32m 15\u001b[0m \u001b[0mprint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mnewPage\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 16\u001b[0m \u001b[0mpages\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0madd\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mnewPage\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 17\u001b[0;31m \u001b[0mgetLinks\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mnewPage\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 18\u001b[0m \u001b[0mgetLinks\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m\u001b[0m in \u001b[0;36mgetLinks\u001b[0;34m(pageUrl)\u001b[0m\n\u001b[1;32m 15\u001b[0m \u001b[0mprint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mnewPage\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 16\u001b[0m \u001b[0mpages\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0madd\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mnewPage\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 17\u001b[0;31m \u001b[0mgetLinks\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mnewPage\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 18\u001b[0m \u001b[0mgetLinks\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m\u001b[0m in \u001b[0;36mgetLinks\u001b[0;34m(pageUrl)\u001b[0m\n\u001b[1;32m 15\u001b[0m \u001b[0mprint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mnewPage\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 16\u001b[0m \u001b[0mpages\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0madd\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mnewPage\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 17\u001b[0;31m \u001b[0mgetLinks\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mnewPage\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 18\u001b[0m \u001b[0mgetLinks\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m\u001b[0m in \u001b[0;36mgetLinks\u001b[0;34m(pageUrl)\u001b[0m\n\u001b[1;32m 7\u001b[0m \u001b[0;32mglobal\u001b[0m \u001b[0mpages\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 8\u001b[0m \u001b[0mhtml\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0murlopen\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"http://en.wikipedia.org\"\u001b[0m\u001b[0;34m+\u001b[0m\u001b[0mpageUrl\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 9\u001b[0;31m \u001b[0mbs\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mBeautifulSoup\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mhtml\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m\"html.parser\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 10\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0mlink\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mbs\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mfind_all\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"a\"\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mhref\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mre\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mcompile\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"^(/wiki/)\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 11\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0;34m'href'\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mlink\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mattrs\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m/Users/rmitchell/anaconda3/lib/python3.6/site-packages/bs4/__init__.py\u001b[0m in \u001b[0;36m__init__\u001b[0;34m(self, markup, features, builder, parse_only, from_encoding, exclude_encodings, **kwargs)\u001b[0m\n\u001b[1;32m 226\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mreset\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 227\u001b[0m \u001b[0;32mtry\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 228\u001b[0;31m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_feed\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 229\u001b[0m \u001b[0;32mbreak\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 230\u001b[0m \u001b[0;32mexcept\u001b[0m \u001b[0mParserRejectedMarkup\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m/Users/rmitchell/anaconda3/lib/python3.6/site-packages/bs4/__init__.py\u001b[0m in \u001b[0;36m_feed\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 287\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mbuilder\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mreset\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 288\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 289\u001b[0;31m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mbuilder\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mfeed\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mmarkup\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 290\u001b[0m \u001b[0;31m# Close out any unfinished strings and close all the open tags.\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 291\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mendData\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m/Users/rmitchell/anaconda3/lib/python3.6/site-packages/bs4/builder/_htmlparser.py\u001b[0m in \u001b[0;36mfeed\u001b[0;34m(self, markup)\u001b[0m\n\u001b[1;32m 213\u001b[0m \u001b[0mparser\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msoup\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msoup\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 214\u001b[0m \u001b[0;32mtry\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 215\u001b[0;31m \u001b[0mparser\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mfeed\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mmarkup\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 216\u001b[0m \u001b[0;32mexcept\u001b[0m \u001b[0mHTMLParseError\u001b[0m \u001b[0;32mas\u001b[0m \u001b[0me\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 217\u001b[0m warnings.warn(RuntimeWarning(\n", - "\u001b[0;32m/Users/rmitchell/anaconda3/lib/python3.6/html/parser.py\u001b[0m in \u001b[0;36mfeed\u001b[0;34m(self, data)\u001b[0m\n\u001b[1;32m 109\u001b[0m \"\"\"\n\u001b[1;32m 110\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mrawdata\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mrawdata\u001b[0m \u001b[0;34m+\u001b[0m \u001b[0mdata\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 111\u001b[0;31m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mgoahead\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;36m0\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 112\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 113\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0mclose\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m/Users/rmitchell/anaconda3/lib/python3.6/html/parser.py\u001b[0m in \u001b[0;36mgoahead\u001b[0;34m(self, end)\u001b[0m\n\u001b[1;32m 169\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mstartswith\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'<'\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mi\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 170\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mstarttagopen\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mmatch\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mrawdata\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mi\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0;31m# < + letter\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 171\u001b[0;31m \u001b[0mk\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mparse_starttag\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mi\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 172\u001b[0m \u001b[0;32melif\u001b[0m \u001b[0mstartswith\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\" 345\u001b[0;31m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mhandle_starttag\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mtag\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mattrs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 346\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mtag\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mCDATA_CONTENT_ELEMENTS\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 347\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mset_cdata_mode\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mtag\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m/Users/rmitchell/anaconda3/lib/python3.6/site-packages/bs4/builder/_htmlparser.py\u001b[0m in \u001b[0;36mhandle_starttag\u001b[0;34m(self, name, attrs, handle_empty_element)\u001b[0m\n\u001b[1;32m 88\u001b[0m \u001b[0mattrvalue\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m'\"\"'\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 89\u001b[0m \u001b[0;31m#print \"START\", name\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 90\u001b[0;31m \u001b[0mtag\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msoup\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mhandle_starttag\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mname\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;32mNone\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;32mNone\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mattr_dict\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 91\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mtag\u001b[0m \u001b[0;32mand\u001b[0m \u001b[0mtag\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mis_empty_element\u001b[0m \u001b[0;32mand\u001b[0m \u001b[0mhandle_empty_element\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 92\u001b[0m \u001b[0;31m# Unlike other parsers, html.parser doesn't send separate end tag\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m/Users/rmitchell/anaconda3/lib/python3.6/site-packages/bs4/__init__.py\u001b[0m in \u001b[0;36mhandle_starttag\u001b[0;34m(self, name, namespace, nsprefix, attrs)\u001b[0m\n\u001b[1;32m 455\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 456\u001b[0m \u001b[0;31m# print \"Start tag %s: %s\" % (name, attrs)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 457\u001b[0;31m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mendData\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 458\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 459\u001b[0m if (self.parse_only and len(self.tagStack) <= 1\n", - "\u001b[0;32m/Users/rmitchell/anaconda3/lib/python3.6/site-packages/bs4/__init__.py\u001b[0m in \u001b[0;36mendData\u001b[0;34m(self, containerClass)\u001b[0m\n\u001b[1;32m 363\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 364\u001b[0m \u001b[0mo\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mcontainerClass\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mcurrent_data\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 365\u001b[0;31m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mobject_was_parsed\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mo\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 366\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 367\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0mobject_was_parsed\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mo\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mparent\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;32mNone\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mmost_recent_element\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;32mNone\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m/Users/rmitchell/anaconda3/lib/python3.6/site-packages/bs4/__init__.py\u001b[0m in \u001b[0;36mobject_was_parsed\u001b[0;34m(self, o, parent, most_recent_element)\u001b[0m\n\u001b[1;32m 378\u001b[0m \u001b[0mprevious_element\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mo\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mprevious_element\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 379\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 380\u001b[0;31m \u001b[0mo\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msetup\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mparent\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mprevious_element\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mnext_element\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mprevious_sibling\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mnext_sibling\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 381\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 382\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_most_recent_element\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mo\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m/Users/rmitchell/anaconda3/lib/python3.6/site-packages/bs4/element.py\u001b[0m in \u001b[0;36msetup\u001b[0;34m(self, parent, previous_element, next_element, previous_sibling, next_sibling)\u001b[0m\n\u001b[1;32m 212\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 213\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mnext_element\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mnext_element\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 214\u001b[0;31m \u001b[0;32mif\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mnext_element\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 215\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mnext_element\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mprevious_element\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 216\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[1;32m 16\u001b[0m \u001b[0mpages\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0madd\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mnewPage\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 17\u001b[0m \u001b[0mgetLinks\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mnewPage\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 18\u001b[0;31m \u001b[0mgetLinks\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m", + "\u001b[0;32m\u001b[0m in \u001b[0;36mgetLinks\u001b[0;34m(pageUrl)\u001b[0m\n\u001b[1;32m 15\u001b[0m \u001b[0mprint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mnewPage\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 16\u001b[0m \u001b[0mpages\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0madd\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mnewPage\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 17\u001b[0;31m \u001b[0mgetLinks\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mnewPage\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 18\u001b[0m \u001b[0mgetLinks\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m\u001b[0m in \u001b[0;36mgetLinks\u001b[0;34m(pageUrl)\u001b[0m\n\u001b[1;32m 15\u001b[0m \u001b[0mprint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mnewPage\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 16\u001b[0m \u001b[0mpages\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0madd\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mnewPage\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 17\u001b[0;31m \u001b[0mgetLinks\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mnewPage\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 18\u001b[0m \u001b[0mgetLinks\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m\u001b[0m in \u001b[0;36mgetLinks\u001b[0;34m(pageUrl)\u001b[0m\n\u001b[1;32m 15\u001b[0m \u001b[0mprint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mnewPage\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 16\u001b[0m \u001b[0mpages\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0madd\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mnewPage\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 17\u001b[0;31m \u001b[0mgetLinks\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mnewPage\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 18\u001b[0m \u001b[0mgetLinks\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m\u001b[0m in \u001b[0;36mgetLinks\u001b[0;34m(pageUrl)\u001b[0m\n\u001b[1;32m 15\u001b[0m \u001b[0mprint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mnewPage\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 16\u001b[0m \u001b[0mpages\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0madd\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mnewPage\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 17\u001b[0;31m \u001b[0mgetLinks\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mnewPage\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 18\u001b[0m \u001b[0mgetLinks\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m\u001b[0m in \u001b[0;36mgetLinks\u001b[0;34m(pageUrl)\u001b[0m\n\u001b[1;32m 15\u001b[0m \u001b[0mprint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mnewPage\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 16\u001b[0m \u001b[0mpages\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0madd\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mnewPage\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 17\u001b[0;31m \u001b[0mgetLinks\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mnewPage\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 18\u001b[0m \u001b[0mgetLinks\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m\u001b[0m in \u001b[0;36mgetLinks\u001b[0;34m(pageUrl)\u001b[0m\n\u001b[1;32m 15\u001b[0m \u001b[0mprint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mnewPage\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 16\u001b[0m \u001b[0mpages\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0madd\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mnewPage\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 17\u001b[0;31m \u001b[0mgetLinks\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mnewPage\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 18\u001b[0m \u001b[0mgetLinks\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m\u001b[0m in \u001b[0;36mgetLinks\u001b[0;34m(pageUrl)\u001b[0m\n\u001b[1;32m 7\u001b[0m \u001b[0;32mglobal\u001b[0m \u001b[0mpages\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 8\u001b[0m \u001b[0mhtml\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0murlopen\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'http://en.wikipedia.org{}'\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mformat\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mpageUrl\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 9\u001b[0;31m \u001b[0mbsObj\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mBeautifulSoup\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mhtml\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m'html.parser'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 10\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0mlink\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mbsObj\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mfind_all\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'a'\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mhref\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mre\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mcompile\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'^(/wiki/)'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 11\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0;34m'href'\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mlink\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mattrs\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/bs4/__init__.py\u001b[0m in \u001b[0;36m__init__\u001b[0;34m(self, markup, features, builder, parse_only, from_encoding, exclude_encodings, **kwargs)\u001b[0m\n\u001b[1;32m 226\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mreset\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 227\u001b[0m \u001b[0;32mtry\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 228\u001b[0;31m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_feed\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 229\u001b[0m \u001b[0;32mbreak\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 230\u001b[0m \u001b[0;32mexcept\u001b[0m \u001b[0mParserRejectedMarkup\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/bs4/__init__.py\u001b[0m in \u001b[0;36m_feed\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 287\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mbuilder\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mreset\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 288\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 289\u001b[0;31m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mbuilder\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mfeed\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mmarkup\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 290\u001b[0m \u001b[0;31m# Close out any unfinished strings and close all the open tags.\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 291\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mendData\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/bs4/builder/_htmlparser.py\u001b[0m in \u001b[0;36mfeed\u001b[0;34m(self, markup)\u001b[0m\n\u001b[1;32m 213\u001b[0m \u001b[0mparser\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msoup\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msoup\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 214\u001b[0m \u001b[0;32mtry\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 215\u001b[0;31m \u001b[0mparser\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mfeed\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mmarkup\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 216\u001b[0m \u001b[0;32mexcept\u001b[0m \u001b[0mHTMLParseError\u001b[0m \u001b[0;32mas\u001b[0m \u001b[0me\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 217\u001b[0m warnings.warn(RuntimeWarning(\n", + "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/html/parser.py\u001b[0m in \u001b[0;36mfeed\u001b[0;34m(self, data)\u001b[0m\n\u001b[1;32m 109\u001b[0m \"\"\"\n\u001b[1;32m 110\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mrawdata\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mrawdata\u001b[0m \u001b[0;34m+\u001b[0m \u001b[0mdata\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 111\u001b[0;31m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mgoahead\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;36m0\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 112\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 113\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0mclose\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/html/parser.py\u001b[0m in \u001b[0;36mgoahead\u001b[0;34m(self, end)\u001b[0m\n\u001b[1;32m 197\u001b[0m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 198\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mhandle_data\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mrawdata\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mi\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0mk\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 199\u001b[0;31m \u001b[0mi\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mupdatepos\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mi\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mk\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 200\u001b[0m \u001b[0;32melif\u001b[0m \u001b[0mstartswith\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"&#\"\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mi\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 201\u001b[0m \u001b[0mmatch\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mcharref\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mmatch\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mrawdata\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mi\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/_markupbase.py\u001b[0m in \u001b[0;36mupdatepos\u001b[0;34m(self, i, j)\u001b[0m\n\u001b[1;32m 50\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mj\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 51\u001b[0m \u001b[0mrawdata\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mrawdata\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 52\u001b[0;31m \u001b[0mnlines\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mrawdata\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mcount\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"\\n\"\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mi\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mj\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 53\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mnlines\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 54\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mlineno\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mlineno\u001b[0m \u001b[0;34m+\u001b[0m \u001b[0mnlines\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;31mKeyboardInterrupt\u001b[0m: " ] } @@ -1386,8 +1427,8 @@ "def getLinks(pageUrl):\n", " global pages\n", " html = urlopen('http://en.wikipedia.org{}'.format(pageUrl))\n", - " bs = BeautifulSoup(html, 'html.parser')\n", - " for link in bs.find_all('a', href=re.compile('^(/wiki/)')):\n", + " bsObj = BeautifulSoup(html, 'html.parser')\n", + " for link in bsObj.find_all('a', href=re.compile('^(/wiki/)')):\n", " if 'href' in link.attrs:\n", " if link.attrs['href'] not in pages:\n", " #We have encountered a new page\n", @@ -1395,7 +1436,7 @@ " print(newPage)\n", " pages.add(newPage)\n", " getLinks(newPage)\n", - "getLinks(\"\")" + "getLinks('')" ] }, { @@ -1407,11 +1448,83 @@ }, { "cell_type": "code", - "execution_count": null, - "metadata": { - "collapsed": true - }, - "outputs": [], + "execution_count": 11, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Main Page\n", + "

The Finnish Civil War (27 January – 15 May 1918) marked the transition from the Grand Duchy of Finland, part of the Russian Empire, to an independent state. Arising during World War I, it was fought between the Reds, led by the Social Democratic Party, and the Whites, led by the conservative Senate. In February 1918, the Reds carried out an unsuccessful offensive, supplied with weapons by Soviet Russia. A counteroffensive by the Whites began in March, reinforced by the German Empire's military detachments in April. The decisive engagements were the battles of Tampere and Vyborg, won by the Whites, and the battles of Helsinki and Lahti, won by German troops, leading to overall victory for the Whites and the German forces. The 39,000 casualties included political terror deaths. Although the Senate and Parliament were initially pressured into accepting the brother-in-law of German Emperor William II as the King of Finland, the country emerged within a few months as an independent, democratic republic. The war would divide the nation for decades. (Full article...)

\n", + "This page is missing something! No worries, we will continue!\n", + "--------------------\n", + "/wiki/Wikipedia\n", + "Wikipedia\n", + "

Wikipedia (/ˌwɪkɪˈpdiə/ (\"About listen) WIK-i-PEE-dee-ə or /ˌwɪkiˈpdiə/ (\"About listen) WIK-ee-PEE-dee-ə) is a free online encyclopedia with the mission of allowing anyone to edit articles.[3][not in citation given] Wikipedia is the largest and most popular general reference work on the Internet,[4][5][6] and is ranked the fifth-most popular website.[7] Wikipedia is owned by the nonprofit Wikimedia Foundation.[8][9][10]

\n", + "This page is missing something! No worries, we will continue!\n", + "--------------------\n", + "/wiki/Wikipedia:Protection_policy#semi\n", + "Wikipedia:Protection policy\n", + "

Wikipedia is built around the principle that anyone can edit it, and it therefore aims to have as many of its pages as possible open for public editing so that anyone can add material and correct errors. However, in some particular circumstances, because of a specifically identified likelihood of damage resulting if editing is left open, some individual pages may need to be subject to technical restrictions (often only temporary but sometimes indefinitely) on who is permitted to modify them. The placing of such restrictions on pages is called protection.

\n", + "This page is missing something! No worries, we will continue!\n", + "--------------------\n", + "/wiki/Wikipedia:Requests_for_page_protection\n", + "Wikipedia:Requests for page protection\n", + "

This page is for requesting that a page, file or template be fully protected, create protected (salted), extended confirmed protected, semi-protected, added to pending changes, move-protected, template protected (template-specific), upload protected (file-specific), or unprotected. Please read up on the protection policy. Full protection is used to stop edit warring between multiple users or to prevent vandalism to high-risk templates; semi-protection and pending changes are usually used only to prevent IP and new user vandalism (see the rough guide to semi-protection); and move protection is used to stop pagemove revert wars. Extended confirmed protection is used where semi-protection has proved insufficient (see the rough guide to extended confirmed protection)

\n", + "/w/index.php?title=Wikipedia:Requests_for_page_protection&action=edit\n", + "--------------------\n", + "/wiki/Wikipedia:Requests_for_permissions\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Wikipedia:Requests for permissions\n", + "

Administrator instructions

\n", + "This page is missing something! No worries, we will continue!\n", + "--------------------\n", + "/wiki/Wikipedia:Requesting_copyright_permission\n" + ] + }, + { + "ename": "KeyboardInterrupt", + "evalue": "", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mKeyboardInterrupt\u001b[0m Traceback (most recent call last)", + "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[1;32m 24\u001b[0m \u001b[0mpages\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0madd\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mnewPage\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 25\u001b[0m \u001b[0mgetLinks\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mnewPage\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 26\u001b[0;31m \u001b[0mgetLinks\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m''\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m", + "\u001b[0;32m\u001b[0m in \u001b[0;36mgetLinks\u001b[0;34m(pageUrl)\u001b[0m\n\u001b[1;32m 23\u001b[0m \u001b[0mprint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mnewPage\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 24\u001b[0m \u001b[0mpages\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0madd\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mnewPage\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 25\u001b[0;31m \u001b[0mgetLinks\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mnewPage\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 26\u001b[0m \u001b[0mgetLinks\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m''\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m\u001b[0m in \u001b[0;36mgetLinks\u001b[0;34m(pageUrl)\u001b[0m\n\u001b[1;32m 23\u001b[0m \u001b[0mprint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mnewPage\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 24\u001b[0m \u001b[0mpages\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0madd\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mnewPage\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 25\u001b[0;31m \u001b[0mgetLinks\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mnewPage\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 26\u001b[0m \u001b[0mgetLinks\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m''\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m\u001b[0m in \u001b[0;36mgetLinks\u001b[0;34m(pageUrl)\u001b[0m\n\u001b[1;32m 23\u001b[0m \u001b[0mprint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mnewPage\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 24\u001b[0m \u001b[0mpages\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0madd\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mnewPage\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 25\u001b[0;31m \u001b[0mgetLinks\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mnewPage\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 26\u001b[0m \u001b[0mgetLinks\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m''\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m\u001b[0m in \u001b[0;36mgetLinks\u001b[0;34m(pageUrl)\u001b[0m\n\u001b[1;32m 23\u001b[0m \u001b[0mprint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mnewPage\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 24\u001b[0m \u001b[0mpages\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0madd\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mnewPage\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 25\u001b[0;31m \u001b[0mgetLinks\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mnewPage\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 26\u001b[0m \u001b[0mgetLinks\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m''\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m\u001b[0m in \u001b[0;36mgetLinks\u001b[0;34m(pageUrl)\u001b[0m\n\u001b[1;32m 23\u001b[0m \u001b[0mprint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mnewPage\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 24\u001b[0m \u001b[0mpages\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0madd\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mnewPage\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 25\u001b[0;31m \u001b[0mgetLinks\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mnewPage\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 26\u001b[0m \u001b[0mgetLinks\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m''\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m\u001b[0m in \u001b[0;36mgetLinks\u001b[0;34m(pageUrl)\u001b[0m\n\u001b[1;32m 6\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0mgetLinks\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mpageUrl\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 7\u001b[0m \u001b[0;32mglobal\u001b[0m \u001b[0mpages\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 8\u001b[0;31m \u001b[0mhtml\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0murlopen\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'http://en.wikipedia.org{}'\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mformat\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mpageUrl\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 9\u001b[0m \u001b[0mbsObj\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mBeautifulSoup\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mhtml\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m'html.parser'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 10\u001b[0m \u001b[0;32mtry\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/urllib/request.py\u001b[0m in \u001b[0;36murlopen\u001b[0;34m(url, data, timeout, cafile, capath, cadefault, context)\u001b[0m\n\u001b[1;32m 221\u001b[0m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 222\u001b[0m \u001b[0mopener\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0m_opener\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 223\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mopener\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mopen\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0murl\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mdata\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mtimeout\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 224\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 225\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0minstall_opener\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mopener\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/urllib/request.py\u001b[0m in \u001b[0;36mopen\u001b[0;34m(self, fullurl, data, timeout)\u001b[0m\n\u001b[1;32m 530\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0mprocessor\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mprocess_response\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mget\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mprotocol\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m[\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 531\u001b[0m \u001b[0mmeth\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mgetattr\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mprocessor\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mmeth_name\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 532\u001b[0;31m \u001b[0mresponse\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mmeth\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mreq\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mresponse\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 533\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 534\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mresponse\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/urllib/request.py\u001b[0m in \u001b[0;36mhttp_response\u001b[0;34m(self, request, response)\u001b[0m\n\u001b[1;32m 640\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0;34m(\u001b[0m\u001b[0;36m200\u001b[0m \u001b[0;34m<=\u001b[0m \u001b[0mcode\u001b[0m \u001b[0;34m<\u001b[0m \u001b[0;36m300\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 641\u001b[0m response = self.parent.error(\n\u001b[0;32m--> 642\u001b[0;31m 'http', request, response, code, msg, hdrs)\n\u001b[0m\u001b[1;32m 643\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 644\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mresponse\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/urllib/request.py\u001b[0m in \u001b[0;36merror\u001b[0;34m(self, proto, *args)\u001b[0m\n\u001b[1;32m 562\u001b[0m \u001b[0mhttp_err\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;36m0\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 563\u001b[0m \u001b[0margs\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m(\u001b[0m\u001b[0mdict\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mproto\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mmeth_name\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;34m+\u001b[0m \u001b[0margs\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 564\u001b[0;31m \u001b[0mresult\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_call_chain\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 565\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mresult\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 566\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mresult\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/urllib/request.py\u001b[0m in \u001b[0;36m_call_chain\u001b[0;34m(self, chain, kind, meth_name, *args)\u001b[0m\n\u001b[1;32m 502\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0mhandler\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mhandlers\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 503\u001b[0m \u001b[0mfunc\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mgetattr\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mhandler\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mmeth_name\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 504\u001b[0;31m \u001b[0mresult\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mfunc\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 505\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mresult\u001b[0m \u001b[0;32mis\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0;32mNone\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 506\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mresult\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/urllib/request.py\u001b[0m in \u001b[0;36mhttp_error_302\u001b[0;34m(self, req, fp, code, msg, headers)\u001b[0m\n\u001b[1;32m 754\u001b[0m \u001b[0mfp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mclose\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 755\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 756\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mparent\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mopen\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mnew\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mtimeout\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mreq\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mtimeout\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 757\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 758\u001b[0m \u001b[0mhttp_error_301\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mhttp_error_303\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mhttp_error_307\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mhttp_error_302\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/urllib/request.py\u001b[0m in \u001b[0;36mopen\u001b[0;34m(self, fullurl, data, timeout)\u001b[0m\n\u001b[1;32m 524\u001b[0m \u001b[0mreq\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mmeth\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mreq\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 525\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 526\u001b[0;31m \u001b[0mresponse\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_open\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mreq\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mdata\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 527\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 528\u001b[0m \u001b[0;31m# post-process response\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/urllib/request.py\u001b[0m in \u001b[0;36m_open\u001b[0;34m(self, req, data)\u001b[0m\n\u001b[1;32m 542\u001b[0m \u001b[0mprotocol\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mreq\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mtype\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 543\u001b[0m result = self._call_chain(self.handle_open, protocol, protocol +\n\u001b[0;32m--> 544\u001b[0;31m '_open', req)\n\u001b[0m\u001b[1;32m 545\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mresult\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 546\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mresult\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/urllib/request.py\u001b[0m in \u001b[0;36m_call_chain\u001b[0;34m(self, chain, kind, meth_name, *args)\u001b[0m\n\u001b[1;32m 502\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0mhandler\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mhandlers\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 503\u001b[0m \u001b[0mfunc\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mgetattr\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mhandler\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mmeth_name\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 504\u001b[0;31m \u001b[0mresult\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mfunc\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 505\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mresult\u001b[0m \u001b[0;32mis\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0;32mNone\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 506\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mresult\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/urllib/request.py\u001b[0m in \u001b[0;36mhttps_open\u001b[0;34m(self, req)\u001b[0m\n\u001b[1;32m 1359\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0mhttps_open\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mreq\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1360\u001b[0m return self.do_open(http.client.HTTPSConnection, req,\n\u001b[0;32m-> 1361\u001b[0;31m context=self._context, check_hostname=self._check_hostname)\n\u001b[0m\u001b[1;32m 1362\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1363\u001b[0m \u001b[0mhttps_request\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mAbstractHTTPHandler\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mdo_request_\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/urllib/request.py\u001b[0m in \u001b[0;36mdo_open\u001b[0;34m(self, http_class, req, **http_conn_args)\u001b[0m\n\u001b[1;32m 1316\u001b[0m \u001b[0;32mtry\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1317\u001b[0m h.request(req.get_method(), req.selector, req.data, headers,\n\u001b[0;32m-> 1318\u001b[0;31m encode_chunked=req.has_header('Transfer-encoding'))\n\u001b[0m\u001b[1;32m 1319\u001b[0m \u001b[0;32mexcept\u001b[0m \u001b[0mOSError\u001b[0m \u001b[0;32mas\u001b[0m \u001b[0merr\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0;31m# timeout error\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1320\u001b[0m \u001b[0;32mraise\u001b[0m \u001b[0mURLError\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0merr\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/http/client.py\u001b[0m in \u001b[0;36mrequest\u001b[0;34m(self, method, url, body, headers, encode_chunked)\u001b[0m\n\u001b[1;32m 1237\u001b[0m encode_chunked=False):\n\u001b[1;32m 1238\u001b[0m \u001b[0;34m\"\"\"Send a complete request to the server.\"\"\"\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 1239\u001b[0;31m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_send_request\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mmethod\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0murl\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mbody\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mheaders\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mencode_chunked\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 1240\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1241\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0m_send_request\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mmethod\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0murl\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mbody\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mheaders\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mencode_chunked\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/http/client.py\u001b[0m in \u001b[0;36m_send_request\u001b[0;34m(self, method, url, body, headers, encode_chunked)\u001b[0m\n\u001b[1;32m 1283\u001b[0m \u001b[0;31m# default charset of iso-8859-1.\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1284\u001b[0m \u001b[0mbody\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0m_encode\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mbody\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m'body'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 1285\u001b[0;31m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mendheaders\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mbody\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mencode_chunked\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mencode_chunked\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 1286\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1287\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0mgetresponse\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/http/client.py\u001b[0m in \u001b[0;36mendheaders\u001b[0;34m(self, message_body, encode_chunked)\u001b[0m\n\u001b[1;32m 1232\u001b[0m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1233\u001b[0m \u001b[0;32mraise\u001b[0m \u001b[0mCannotSendHeader\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 1234\u001b[0;31m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_send_output\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mmessage_body\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mencode_chunked\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mencode_chunked\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 1235\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1236\u001b[0m def request(self, method, url, body=None, headers={}, *,\n", + "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/http/client.py\u001b[0m in \u001b[0;36m_send_output\u001b[0;34m(self, message_body, encode_chunked)\u001b[0m\n\u001b[1;32m 1024\u001b[0m \u001b[0mmsg\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34mb\"\\r\\n\"\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mjoin\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_buffer\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1025\u001b[0m \u001b[0;32mdel\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_buffer\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 1026\u001b[0;31m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msend\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mmsg\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 1027\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1028\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mmessage_body\u001b[0m \u001b[0;32mis\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0;32mNone\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/http/client.py\u001b[0m in \u001b[0;36msend\u001b[0;34m(self, data)\u001b[0m\n\u001b[1;32m 962\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msock\u001b[0m \u001b[0;32mis\u001b[0m \u001b[0;32mNone\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 963\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mauto_open\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 964\u001b[0;31m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mconnect\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 965\u001b[0m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 966\u001b[0m \u001b[0;32mraise\u001b[0m \u001b[0mNotConnected\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/http/client.py\u001b[0m in \u001b[0;36mconnect\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 1390\u001b[0m \u001b[0;34m\"Connect to a host on a given (SSL) port.\"\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1391\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 1392\u001b[0;31m \u001b[0msuper\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mconnect\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 1393\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1394\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_tunnel_host\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/http/client.py\u001b[0m in \u001b[0;36mconnect\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 934\u001b[0m \u001b[0;34m\"\"\"Connect to the host and port specified in __init__.\"\"\"\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 935\u001b[0m self.sock = self._create_connection(\n\u001b[0;32m--> 936\u001b[0;31m (self.host,self.port), self.timeout, self.source_address)\n\u001b[0m\u001b[1;32m 937\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msock\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msetsockopt\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0msocket\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mIPPROTO_TCP\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0msocket\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mTCP_NODELAY\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;36m1\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 938\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/socket.py\u001b[0m in \u001b[0;36mcreate_connection\u001b[0;34m(address, timeout, source_address)\u001b[0m\n\u001b[1;32m 711\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0msource_address\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 712\u001b[0m \u001b[0msock\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mbind\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0msource_address\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 713\u001b[0;31m \u001b[0msock\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mconnect\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0msa\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 714\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0msock\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 715\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;31mKeyboardInterrupt\u001b[0m: " + ] + } + ], "source": [ "from urllib.request import urlopen\n", "from bs4 import BeautifulSoup\n", @@ -1419,33 +1532,32 @@ "\n", "pages = set()\n", "def getLinks(pageUrl):\n", - " global pages\n", + " global pages\n", " html = urlopen('http://en.wikipedia.org{}'.format(pageUrl))\n", - " bs = BeautifulSoup(html, 'html.parser')\n", + " bsObj = BeautifulSoup(html, 'html.parser')\n", " try:\n", - " print(bs.h1.get_text())\n", - " print(bs.find(id ='mw-content-text').find_all('p')[0])\n", - " print(bs.find(id='ca-edit').find('span').find('a').attrs['href'])\n", + " print(bsObj.h1.get_text())\n", + " print(bsObj.find(id ='mw-content-text').find_all('p')[0])\n", + " print(bsObj.find(id='ca-edit').find('span').find('a').attrs['href'])\n", " except AttributeError:\n", " print('This page is missing something! No worries, we will continue!')\n", " \n", - " for link in bs.find_all('a', href=re.compile('^(/wiki/)')):\n", + " for link in bsObj.find_all('a', href=re.compile('^(/wiki/)')):\n", " if 'href' in link.attrs:\n", " if link.attrs['href'] not in pages:\n", " #We have encountered a new page\n", " newPage = link.attrs['href']\n", - " print(\"----------------\\n\"+newPage)\n", + " print('-'*20)\n", + " print(newPage)\n", " pages.add(newPage)\n", " getLinks(newPage)\n", - "getLinks(\"\") " + "getLinks('') " ] }, { "cell_type": "code", - "execution_count": null, - "metadata": { - "collapsed": true - }, + "execution_count": 7, + "metadata": {}, "outputs": [], "source": [ "# # Crawling across the Internet" @@ -1453,15 +1565,21 @@ }, { "cell_type": "code", - "execution_count": 4, + "execution_count": 16, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "Random external link is: https://www.youtube.com/user/OreillyMedia\n", - "Random external link is: http://facebook.com/OReilly\n" + "Random external link is: http://twitter.com/oreillymedia\n", + "Random external link is: https://t.co/4JOnrjTQU7\n", + "Random external link is: http://eepurl.com/bgUEf\n", + "Random external link is: http://www.copperfieldsbooks.com/\n", + "Random external link is: http://Libro.fm/copperfieldsbooks\n", + "Random external link is: https://libro.fm/audiobooks/9780062797889-heart-spring-mountain\n", + "Random external link is: https://goo.gl/\n", + "Random external link is: https://news.google.com/nwshp?hl=en\n" ] }, { @@ -1471,35 +1589,23 @@ "traceback": [ "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", "\u001b[0;31mKeyboardInterrupt\u001b[0m Traceback (most recent call last)", - "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[1;32m 52\u001b[0m \u001b[0mfollowExternalOnly\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mexternalLink\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 53\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 54\u001b[0;31m \u001b[0mfollowExternalOnly\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"http://oreilly.com\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m", - "\u001b[0;32m\u001b[0m in \u001b[0;36mfollowExternalOnly\u001b[0;34m(startingSite)\u001b[0m\n\u001b[1;32m 50\u001b[0m \u001b[0mexternalLink\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mgetRandomExternalLink\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mstartingSite\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 51\u001b[0m \u001b[0mprint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"Random external link is: \"\u001b[0m\u001b[0;34m+\u001b[0m\u001b[0mexternalLink\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 52\u001b[0;31m \u001b[0mfollowExternalOnly\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mexternalLink\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 53\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 54\u001b[0m \u001b[0mfollowExternalOnly\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"http://oreilly.com\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m\u001b[0m in \u001b[0;36mfollowExternalOnly\u001b[0;34m(startingSite)\u001b[0m\n\u001b[1;32m 50\u001b[0m \u001b[0mexternalLink\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mgetRandomExternalLink\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mstartingSite\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 51\u001b[0m \u001b[0mprint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"Random external link is: \"\u001b[0m\u001b[0;34m+\u001b[0m\u001b[0mexternalLink\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 52\u001b[0;31m \u001b[0mfollowExternalOnly\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mexternalLink\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 53\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 54\u001b[0m \u001b[0mfollowExternalOnly\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"http://oreilly.com\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m\u001b[0m in \u001b[0;36mfollowExternalOnly\u001b[0;34m(startingSite)\u001b[0m\n\u001b[1;32m 48\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 49\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0mfollowExternalOnly\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mstartingSite\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 50\u001b[0;31m \u001b[0mexternalLink\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mgetRandomExternalLink\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mstartingSite\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 51\u001b[0m \u001b[0mprint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"Random external link is: \"\u001b[0m\u001b[0;34m+\u001b[0m\u001b[0mexternalLink\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 52\u001b[0m \u001b[0mfollowExternalOnly\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mexternalLink\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m\u001b[0m in \u001b[0;36mgetRandomExternalLink\u001b[0;34m(startingPage)\u001b[0m\n\u001b[1;32m 35\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 36\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0mgetRandomExternalLink\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mstartingPage\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 37\u001b[0;31m \u001b[0mhtml\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0murlopen\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mstartingPage\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 38\u001b[0m \u001b[0mbs\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mBeautifulSoup\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mhtml\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m\"html.parser\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 39\u001b[0m \u001b[0mexternalLinks\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mgetExternalLinks\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mbs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0murlparse\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mstartingPage\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mnetloc\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m/Users/rmitchell/anaconda3/lib/python3.6/urllib/request.py\u001b[0m in \u001b[0;36murlopen\u001b[0;34m(url, data, timeout, cafile, capath, cadefault, context)\u001b[0m\n\u001b[1;32m 221\u001b[0m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 222\u001b[0m \u001b[0mopener\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0m_opener\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 223\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mopener\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mopen\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0murl\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mdata\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mtimeout\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 224\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 225\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0minstall_opener\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mopener\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m/Users/rmitchell/anaconda3/lib/python3.6/urllib/request.py\u001b[0m in \u001b[0;36mopen\u001b[0;34m(self, fullurl, data, timeout)\u001b[0m\n\u001b[1;32m 530\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0mprocessor\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mprocess_response\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mget\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mprotocol\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m[\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 531\u001b[0m \u001b[0mmeth\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mgetattr\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mprocessor\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mmeth_name\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 532\u001b[0;31m \u001b[0mresponse\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mmeth\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mreq\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mresponse\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 533\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 534\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mresponse\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m/Users/rmitchell/anaconda3/lib/python3.6/urllib/request.py\u001b[0m in \u001b[0;36mhttp_response\u001b[0;34m(self, request, response)\u001b[0m\n\u001b[1;32m 640\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0;34m(\u001b[0m\u001b[0;36m200\u001b[0m \u001b[0;34m<=\u001b[0m \u001b[0mcode\u001b[0m \u001b[0;34m<\u001b[0m \u001b[0;36m300\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 641\u001b[0m response = self.parent.error(\n\u001b[0;32m--> 642\u001b[0;31m 'http', request, response, code, msg, hdrs)\n\u001b[0m\u001b[1;32m 643\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 644\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mresponse\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m/Users/rmitchell/anaconda3/lib/python3.6/urllib/request.py\u001b[0m in \u001b[0;36merror\u001b[0;34m(self, proto, *args)\u001b[0m\n\u001b[1;32m 562\u001b[0m \u001b[0mhttp_err\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;36m0\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 563\u001b[0m \u001b[0margs\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m(\u001b[0m\u001b[0mdict\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mproto\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mmeth_name\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;34m+\u001b[0m \u001b[0margs\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 564\u001b[0;31m \u001b[0mresult\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_call_chain\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 565\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mresult\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 566\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mresult\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m/Users/rmitchell/anaconda3/lib/python3.6/urllib/request.py\u001b[0m in \u001b[0;36m_call_chain\u001b[0;34m(self, chain, kind, meth_name, *args)\u001b[0m\n\u001b[1;32m 502\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0mhandler\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mhandlers\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 503\u001b[0m \u001b[0mfunc\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mgetattr\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mhandler\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mmeth_name\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 504\u001b[0;31m \u001b[0mresult\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mfunc\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 505\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mresult\u001b[0m \u001b[0;32mis\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0;32mNone\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 506\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mresult\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m/Users/rmitchell/anaconda3/lib/python3.6/urllib/request.py\u001b[0m in \u001b[0;36mhttp_error_302\u001b[0;34m(self, req, fp, code, msg, headers)\u001b[0m\n\u001b[1;32m 754\u001b[0m \u001b[0mfp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mclose\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 755\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 756\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mparent\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mopen\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mnew\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mtimeout\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mreq\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mtimeout\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 757\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 758\u001b[0m \u001b[0mhttp_error_301\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mhttp_error_303\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mhttp_error_307\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mhttp_error_302\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m/Users/rmitchell/anaconda3/lib/python3.6/urllib/request.py\u001b[0m in \u001b[0;36mopen\u001b[0;34m(self, fullurl, data, timeout)\u001b[0m\n\u001b[1;32m 530\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0mprocessor\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mprocess_response\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mget\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mprotocol\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m[\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 531\u001b[0m \u001b[0mmeth\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mgetattr\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mprocessor\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mmeth_name\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 532\u001b[0;31m \u001b[0mresponse\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mmeth\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mreq\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mresponse\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 533\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 534\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mresponse\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m/Users/rmitchell/anaconda3/lib/python3.6/urllib/request.py\u001b[0m in \u001b[0;36mhttp_response\u001b[0;34m(self, request, response)\u001b[0m\n\u001b[1;32m 640\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0;34m(\u001b[0m\u001b[0;36m200\u001b[0m \u001b[0;34m<=\u001b[0m \u001b[0mcode\u001b[0m \u001b[0;34m<\u001b[0m \u001b[0;36m300\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 641\u001b[0m response = self.parent.error(\n\u001b[0;32m--> 642\u001b[0;31m 'http', request, response, code, msg, hdrs)\n\u001b[0m\u001b[1;32m 643\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 644\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mresponse\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m/Users/rmitchell/anaconda3/lib/python3.6/urllib/request.py\u001b[0m in \u001b[0;36merror\u001b[0;34m(self, proto, *args)\u001b[0m\n\u001b[1;32m 562\u001b[0m \u001b[0mhttp_err\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;36m0\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 563\u001b[0m \u001b[0margs\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m(\u001b[0m\u001b[0mdict\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mproto\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mmeth_name\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;34m+\u001b[0m \u001b[0margs\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 564\u001b[0;31m \u001b[0mresult\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_call_chain\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 565\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mresult\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 566\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mresult\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m/Users/rmitchell/anaconda3/lib/python3.6/urllib/request.py\u001b[0m in \u001b[0;36m_call_chain\u001b[0;34m(self, chain, kind, meth_name, *args)\u001b[0m\n\u001b[1;32m 502\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0mhandler\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mhandlers\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 503\u001b[0m \u001b[0mfunc\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mgetattr\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mhandler\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mmeth_name\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 504\u001b[0;31m \u001b[0mresult\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mfunc\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 505\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mresult\u001b[0m \u001b[0;32mis\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0;32mNone\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 506\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mresult\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m/Users/rmitchell/anaconda3/lib/python3.6/urllib/request.py\u001b[0m in \u001b[0;36mhttp_error_302\u001b[0;34m(self, req, fp, code, msg, headers)\u001b[0m\n\u001b[1;32m 754\u001b[0m \u001b[0mfp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mclose\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 755\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 756\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mparent\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mopen\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mnew\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mtimeout\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mreq\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mtimeout\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 757\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 758\u001b[0m \u001b[0mhttp_error_301\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mhttp_error_303\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mhttp_error_307\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mhttp_error_302\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m/Users/rmitchell/anaconda3/lib/python3.6/urllib/request.py\u001b[0m in \u001b[0;36mopen\u001b[0;34m(self, fullurl, data, timeout)\u001b[0m\n\u001b[1;32m 524\u001b[0m \u001b[0mreq\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mmeth\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mreq\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 525\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 526\u001b[0;31m \u001b[0mresponse\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_open\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mreq\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mdata\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 527\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 528\u001b[0m \u001b[0;31m# post-process response\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m/Users/rmitchell/anaconda3/lib/python3.6/urllib/request.py\u001b[0m in \u001b[0;36m_open\u001b[0;34m(self, req, data)\u001b[0m\n\u001b[1;32m 542\u001b[0m \u001b[0mprotocol\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mreq\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mtype\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 543\u001b[0m result = self._call_chain(self.handle_open, protocol, protocol +\n\u001b[0;32m--> 544\u001b[0;31m '_open', req)\n\u001b[0m\u001b[1;32m 545\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mresult\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 546\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mresult\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m/Users/rmitchell/anaconda3/lib/python3.6/urllib/request.py\u001b[0m in \u001b[0;36m_call_chain\u001b[0;34m(self, chain, kind, meth_name, *args)\u001b[0m\n\u001b[1;32m 502\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0mhandler\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mhandlers\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 503\u001b[0m \u001b[0mfunc\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mgetattr\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mhandler\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mmeth_name\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 504\u001b[0;31m \u001b[0mresult\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mfunc\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 505\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mresult\u001b[0m \u001b[0;32mis\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0;32mNone\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 506\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mresult\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m/Users/rmitchell/anaconda3/lib/python3.6/urllib/request.py\u001b[0m in \u001b[0;36mhttps_open\u001b[0;34m(self, req)\u001b[0m\n\u001b[1;32m 1359\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0mhttps_open\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mreq\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1360\u001b[0m return self.do_open(http.client.HTTPSConnection, req,\n\u001b[0;32m-> 1361\u001b[0;31m context=self._context, check_hostname=self._check_hostname)\n\u001b[0m\u001b[1;32m 1362\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1363\u001b[0m \u001b[0mhttps_request\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mAbstractHTTPHandler\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mdo_request_\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m/Users/rmitchell/anaconda3/lib/python3.6/urllib/request.py\u001b[0m in \u001b[0;36mdo_open\u001b[0;34m(self, http_class, req, **http_conn_args)\u001b[0m\n\u001b[1;32m 1316\u001b[0m \u001b[0;32mtry\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1317\u001b[0m h.request(req.get_method(), req.selector, req.data, headers,\n\u001b[0;32m-> 1318\u001b[0;31m encode_chunked=req.has_header('Transfer-encoding'))\n\u001b[0m\u001b[1;32m 1319\u001b[0m \u001b[0;32mexcept\u001b[0m \u001b[0mOSError\u001b[0m \u001b[0;32mas\u001b[0m \u001b[0merr\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0;31m# timeout error\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1320\u001b[0m \u001b[0;32mraise\u001b[0m \u001b[0mURLError\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0merr\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m/Users/rmitchell/anaconda3/lib/python3.6/http/client.py\u001b[0m in \u001b[0;36mrequest\u001b[0;34m(self, method, url, body, headers, encode_chunked)\u001b[0m\n\u001b[1;32m 1237\u001b[0m encode_chunked=False):\n\u001b[1;32m 1238\u001b[0m \u001b[0;34m\"\"\"Send a complete request to the server.\"\"\"\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 1239\u001b[0;31m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_send_request\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mmethod\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0murl\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mbody\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mheaders\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mencode_chunked\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 1240\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1241\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0m_send_request\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mmethod\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0murl\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mbody\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mheaders\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mencode_chunked\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m/Users/rmitchell/anaconda3/lib/python3.6/http/client.py\u001b[0m in \u001b[0;36m_send_request\u001b[0;34m(self, method, url, body, headers, encode_chunked)\u001b[0m\n\u001b[1;32m 1283\u001b[0m \u001b[0;31m# default charset of iso-8859-1.\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1284\u001b[0m \u001b[0mbody\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0m_encode\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mbody\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m'body'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 1285\u001b[0;31m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mendheaders\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mbody\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mencode_chunked\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mencode_chunked\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 1286\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1287\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0mgetresponse\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m/Users/rmitchell/anaconda3/lib/python3.6/http/client.py\u001b[0m in \u001b[0;36mendheaders\u001b[0;34m(self, message_body, encode_chunked)\u001b[0m\n\u001b[1;32m 1232\u001b[0m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1233\u001b[0m \u001b[0;32mraise\u001b[0m \u001b[0mCannotSendHeader\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 1234\u001b[0;31m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_send_output\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mmessage_body\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mencode_chunked\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mencode_chunked\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 1235\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1236\u001b[0m def request(self, method, url, body=None, headers={}, *,\n", - "\u001b[0;32m/Users/rmitchell/anaconda3/lib/python3.6/http/client.py\u001b[0m in \u001b[0;36m_send_output\u001b[0;34m(self, message_body, encode_chunked)\u001b[0m\n\u001b[1;32m 1024\u001b[0m \u001b[0mmsg\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34mb\"\\r\\n\"\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mjoin\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_buffer\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1025\u001b[0m \u001b[0;32mdel\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_buffer\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 1026\u001b[0;31m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msend\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mmsg\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 1027\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1028\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mmessage_body\u001b[0m \u001b[0;32mis\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0;32mNone\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m/Users/rmitchell/anaconda3/lib/python3.6/http/client.py\u001b[0m in \u001b[0;36msend\u001b[0;34m(self, data)\u001b[0m\n\u001b[1;32m 962\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msock\u001b[0m \u001b[0;32mis\u001b[0m \u001b[0;32mNone\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 963\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mauto_open\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 964\u001b[0;31m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mconnect\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 965\u001b[0m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 966\u001b[0m \u001b[0;32mraise\u001b[0m \u001b[0mNotConnected\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m/Users/rmitchell/anaconda3/lib/python3.6/http/client.py\u001b[0m in \u001b[0;36mconnect\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 1390\u001b[0m \u001b[0;34m\"Connect to a host on a given (SSL) port.\"\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1391\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 1392\u001b[0;31m \u001b[0msuper\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mconnect\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 1393\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1394\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_tunnel_host\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m/Users/rmitchell/anaconda3/lib/python3.6/http/client.py\u001b[0m in \u001b[0;36mconnect\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 934\u001b[0m \u001b[0;34m\"\"\"Connect to the host and port specified in __init__.\"\"\"\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 935\u001b[0m self.sock = self._create_connection(\n\u001b[0;32m--> 936\u001b[0;31m (self.host,self.port), self.timeout, self.source_address)\n\u001b[0m\u001b[1;32m 937\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msock\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msetsockopt\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0msocket\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mIPPROTO_TCP\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0msocket\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mTCP_NODELAY\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;36m1\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 938\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m/Users/rmitchell/anaconda3/lib/python3.6/socket.py\u001b[0m in \u001b[0;36mcreate_connection\u001b[0;34m(address, timeout, source_address)\u001b[0m\n\u001b[1;32m 711\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0msource_address\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 712\u001b[0m \u001b[0msock\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mbind\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0msource_address\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 713\u001b[0;31m \u001b[0msock\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mconnect\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0msa\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 714\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0msock\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 715\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[1;32m 52\u001b[0m \u001b[0mfollowExternalOnly\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mexternalLink\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 53\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 54\u001b[0;31m \u001b[0mfollowExternalOnly\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'http://oreilly.com'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m", + "\u001b[0;32m\u001b[0m in \u001b[0;36mfollowExternalOnly\u001b[0;34m(startingSite)\u001b[0m\n\u001b[1;32m 50\u001b[0m \u001b[0mexternalLink\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mgetRandomExternalLink\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mstartingSite\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 51\u001b[0m \u001b[0mprint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'Random external link is: {}'\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mformat\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mexternalLink\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 52\u001b[0;31m \u001b[0mfollowExternalOnly\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mexternalLink\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 53\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 54\u001b[0m \u001b[0mfollowExternalOnly\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'http://oreilly.com'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m\u001b[0m in \u001b[0;36mfollowExternalOnly\u001b[0;34m(startingSite)\u001b[0m\n\u001b[1;32m 50\u001b[0m \u001b[0mexternalLink\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mgetRandomExternalLink\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mstartingSite\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 51\u001b[0m \u001b[0mprint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'Random external link is: {}'\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mformat\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mexternalLink\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 52\u001b[0;31m \u001b[0mfollowExternalOnly\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mexternalLink\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 53\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 54\u001b[0m \u001b[0mfollowExternalOnly\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'http://oreilly.com'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m\u001b[0m in \u001b[0;36mfollowExternalOnly\u001b[0;34m(startingSite)\u001b[0m\n\u001b[1;32m 50\u001b[0m \u001b[0mexternalLink\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mgetRandomExternalLink\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mstartingSite\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 51\u001b[0m \u001b[0mprint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'Random external link is: {}'\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mformat\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mexternalLink\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 52\u001b[0;31m \u001b[0mfollowExternalOnly\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mexternalLink\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 53\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 54\u001b[0m \u001b[0mfollowExternalOnly\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'http://oreilly.com'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m\u001b[0m in \u001b[0;36mfollowExternalOnly\u001b[0;34m(startingSite)\u001b[0m\n\u001b[1;32m 50\u001b[0m \u001b[0mexternalLink\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mgetRandomExternalLink\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mstartingSite\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 51\u001b[0m \u001b[0mprint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'Random external link is: {}'\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mformat\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mexternalLink\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 52\u001b[0;31m \u001b[0mfollowExternalOnly\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mexternalLink\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 53\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 54\u001b[0m \u001b[0mfollowExternalOnly\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'http://oreilly.com'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m\u001b[0m in \u001b[0;36mfollowExternalOnly\u001b[0;34m(startingSite)\u001b[0m\n\u001b[1;32m 50\u001b[0m \u001b[0mexternalLink\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mgetRandomExternalLink\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mstartingSite\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 51\u001b[0m \u001b[0mprint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'Random external link is: {}'\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mformat\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mexternalLink\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 52\u001b[0;31m \u001b[0mfollowExternalOnly\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mexternalLink\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 53\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 54\u001b[0m \u001b[0mfollowExternalOnly\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'http://oreilly.com'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m\u001b[0m in \u001b[0;36mfollowExternalOnly\u001b[0;34m(startingSite)\u001b[0m\n\u001b[1;32m 50\u001b[0m \u001b[0mexternalLink\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mgetRandomExternalLink\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mstartingSite\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 51\u001b[0m \u001b[0mprint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'Random external link is: {}'\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mformat\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mexternalLink\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 52\u001b[0;31m \u001b[0mfollowExternalOnly\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mexternalLink\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 53\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 54\u001b[0m \u001b[0mfollowExternalOnly\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'http://oreilly.com'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m\u001b[0m in \u001b[0;36mfollowExternalOnly\u001b[0;34m(startingSite)\u001b[0m\n\u001b[1;32m 50\u001b[0m \u001b[0mexternalLink\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mgetRandomExternalLink\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mstartingSite\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 51\u001b[0m \u001b[0mprint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'Random external link is: {}'\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mformat\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mexternalLink\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 52\u001b[0;31m \u001b[0mfollowExternalOnly\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mexternalLink\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 53\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 54\u001b[0m \u001b[0mfollowExternalOnly\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'http://oreilly.com'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m\u001b[0m in \u001b[0;36mfollowExternalOnly\u001b[0;34m(startingSite)\u001b[0m\n\u001b[1;32m 50\u001b[0m \u001b[0mexternalLink\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mgetRandomExternalLink\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mstartingSite\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 51\u001b[0m \u001b[0mprint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'Random external link is: {}'\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mformat\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mexternalLink\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 52\u001b[0;31m \u001b[0mfollowExternalOnly\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mexternalLink\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 53\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 54\u001b[0m \u001b[0mfollowExternalOnly\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'http://oreilly.com'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m\u001b[0m in \u001b[0;36mfollowExternalOnly\u001b[0;34m(startingSite)\u001b[0m\n\u001b[1;32m 48\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 49\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0mfollowExternalOnly\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mstartingSite\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 50\u001b[0;31m \u001b[0mexternalLink\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mgetRandomExternalLink\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mstartingSite\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 51\u001b[0m \u001b[0mprint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'Random external link is: {}'\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mformat\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mexternalLink\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 52\u001b[0m \u001b[0mfollowExternalOnly\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mexternalLink\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m\u001b[0m in \u001b[0;36mgetRandomExternalLink\u001b[0;34m(startingPage)\u001b[0m\n\u001b[1;32m 36\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0mgetRandomExternalLink\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mstartingPage\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 37\u001b[0m \u001b[0mhtml\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0murlopen\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mstartingPage\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 38\u001b[0;31m \u001b[0mbsObj\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mBeautifulSoup\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mhtml\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m'html.parser'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 39\u001b[0m \u001b[0mexternalLinks\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mgetExternalLinks\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mbsObj\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0murlparse\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mstartingPage\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mnetloc\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 40\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mlen\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mexternalLinks\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;34m==\u001b[0m \u001b[0;36m0\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/bs4/__init__.py\u001b[0m in \u001b[0;36m__init__\u001b[0;34m(self, markup, features, builder, parse_only, from_encoding, exclude_encodings, **kwargs)\u001b[0m\n\u001b[1;32m 189\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 190\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mhasattr\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mmarkup\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m'read'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0;31m# It's a file-type object.\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 191\u001b[0;31m \u001b[0mmarkup\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mmarkup\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mread\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 192\u001b[0m elif len(markup) <= 256 and (\n\u001b[1;32m 193\u001b[0m \u001b[0;34m(\u001b[0m\u001b[0misinstance\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mmarkup\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mbytes\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;32mand\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0;34mb'<'\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mmarkup\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/http/client.py\u001b[0m in \u001b[0;36mread\u001b[0;34m(self, amt)\u001b[0m\n\u001b[1;32m 457\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 458\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mlength\u001b[0m \u001b[0;32mis\u001b[0m \u001b[0;32mNone\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 459\u001b[0;31m \u001b[0ms\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mfp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mread\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 460\u001b[0m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 461\u001b[0m \u001b[0;32mtry\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/socket.py\u001b[0m in \u001b[0;36mreadinto\u001b[0;34m(self, b)\u001b[0m\n\u001b[1;32m 584\u001b[0m \u001b[0;32mwhile\u001b[0m \u001b[0;32mTrue\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 585\u001b[0m \u001b[0;32mtry\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 586\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_sock\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mrecv_into\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mb\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 587\u001b[0m \u001b[0;32mexcept\u001b[0m \u001b[0mtimeout\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 588\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_timeout_occurred\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;32mTrue\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/ssl.py\u001b[0m in \u001b[0;36mrecv_into\u001b[0;34m(self, buffer, nbytes, flags)\u001b[0m\n\u001b[1;32m 1000\u001b[0m \u001b[0;34m\"non-zero flags not allowed in calls to recv_into() on %s\"\u001b[0m \u001b[0;34m%\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1001\u001b[0m self.__class__)\n\u001b[0;32m-> 1002\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mread\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mnbytes\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mbuffer\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 1003\u001b[0m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1004\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0msocket\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mrecv_into\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mbuffer\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mnbytes\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mflags\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/ssl.py\u001b[0m in \u001b[0;36mread\u001b[0;34m(self, len, buffer)\u001b[0m\n\u001b[1;32m 863\u001b[0m \u001b[0;32mraise\u001b[0m \u001b[0mValueError\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"Read on closed or unwrapped SSL socket.\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 864\u001b[0m \u001b[0;32mtry\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 865\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_sslobj\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mread\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mlen\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mbuffer\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 866\u001b[0m \u001b[0;32mexcept\u001b[0m \u001b[0mSSLError\u001b[0m \u001b[0;32mas\u001b[0m \u001b[0mx\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 867\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mx\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m0\u001b[0m\u001b[0;34m]\u001b[0m \u001b[0;34m==\u001b[0m \u001b[0mSSL_ERROR_EOF\u001b[0m \u001b[0;32mand\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msuppress_ragged_eofs\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/ssl.py\u001b[0m in \u001b[0;36mread\u001b[0;34m(self, len, buffer)\u001b[0m\n\u001b[1;32m 623\u001b[0m \"\"\"\n\u001b[1;32m 624\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mbuffer\u001b[0m \u001b[0;32mis\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0;32mNone\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 625\u001b[0;31m \u001b[0mv\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_sslobj\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mread\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mlen\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mbuffer\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 626\u001b[0m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 627\u001b[0m \u001b[0mv\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_sslobj\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mread\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mlen\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;31mKeyboardInterrupt\u001b[0m: " ] } @@ -1516,11 +1622,11 @@ "random.seed(datetime.datetime.now())\n", "\n", "#Retrieves a list of all Internal links found on a page\n", - "def getInternalLinks(bs, includeUrl):\n", - " includeUrl = \"{}://{}\".format(urlparse(includeUrl).scheme, urlparse(includeUrl).netloc)\n", + "def getInternalLinks(bsObj, includeUrl):\n", + " includeUrl = '{}://{}'.format(urlparse(includeUrl).scheme, urlparse(includeUrl).netloc)\n", " internalLinks = []\n", " #Finds all links that begin with a \"/\"\n", - " for link in bs.find_all('a', href=re.compile('^(/|.*'+includeUrl+')')):\n", + " for link in bsObj.find_all('a', href=re.compile('^(/|.*'+includeUrl+')')):\n", " if link.attrs['href'] is not None:\n", " if link.attrs['href'] not in internalLinks:\n", " if(link.attrs['href'].startswith('/')):\n", @@ -1530,11 +1636,11 @@ " return internalLinks\n", " \n", "#Retrieves a list of all external links found on a page\n", - "def getExternalLinks(bs, excludeUrl):\n", + "def getExternalLinks(bsObj, excludeUrl):\n", " externalLinks = []\n", " #Finds all links that start with \"http\" that do\n", " #not contain the current URL\n", - " for link in bs.find_all('a', href=re.compile('^(http|www)((?!'+excludeUrl+').)*$')):\n", + " for link in bsObj.find_all('a', href=re.compile('^(http|www)((?!'+excludeUrl+').)*$')):\n", " if link.attrs['href'] is not None:\n", " if link.attrs['href'] not in externalLinks:\n", " externalLinks.append(link.attrs['href'])\n", @@ -1542,12 +1648,12 @@ "\n", "def getRandomExternalLink(startingPage):\n", " html = urlopen(startingPage)\n", - " bs = BeautifulSoup(html, 'html.parser')\n", - " externalLinks = getExternalLinks(bs, urlparse(startingPage).netloc)\n", + " bsObj = BeautifulSoup(html, 'html.parser')\n", + " externalLinks = getExternalLinks(bsObj, urlparse(startingPage).netloc)\n", " if len(externalLinks) == 0:\n", " print('No external links, looking around the site for one')\n", - " domain = \"{}://{}\".format(urlparse(startingPage).scheme, urlparse(startingPage).netloc)\n", - " internalLinks = getInternalLinks(bs, domain)\n", + " domain = '{}://{}'.format(urlparse(startingPage).scheme, urlparse(startingPage).netloc)\n", + " internalLinks = getInternalLinks(bsObj, domain)\n", " return getRandomExternalLink(internalLinks[random.randint(0,\n", " len(internalLinks)-1)])\n", " else:\n", @@ -1558,15 +1664,13 @@ " print('Random external link is: {}'.format(externalLink))\n", " followExternalOnly(externalLink)\n", " \n", - "followExternalOnly(\"http://oreilly.com\")" + "followExternalOnly('http://oreilly.com')" ] }, { "cell_type": "code", - "execution_count": null, - "metadata": { - "collapsed": true - }, + "execution_count": 14, + "metadata": {}, "outputs": [], "source": [ "## Collect all External Links from a Site" @@ -1574,7 +1678,7 @@ }, { "cell_type": "code", - "execution_count": 5, + "execution_count": 17, "metadata": {}, "outputs": [ { @@ -1590,9 +1694,6 @@ "https://www.oreilly.com/topics\n", "https://www.safaribooksonline.com/?utm_medium=content&utm_source=oreilly.com&utm_campaign=lgen&utm_content=20170505+homepage+get+started+now\n", "https://www.safaribooksonline.com/accounts/login/?utm_medium=content&utm_source=oreilly.com&utm_campaign=lgen&utm_content=20170203+homepage+sign+in\n", - "https://www.safaribooksonline.com/?utm_medium=content&utm_source=oreilly.com&utm_campaign=lgen&utm_content=20170710+homepage+get+started+now\n", - "https://www.safaribooksonline.com/public/free-trial/?utm_medium=content&utm_source=oreilly.com&utm_campaign=lgen&utm_content=20170710+homepage+start+free+trial\n", - "https://www.safaribooksonline.com/accounts/login/?utm_medium=content&utm_source=oreilly.com&utm_campaign=lgen&utm_content=20170710+homepage+sign+in\n", "https://www.safaribooksonline.com/live-training/?utm_medium=content&utm_source=oreilly.com&utm_campaign=lgen&utm_content=20170201+homepage+take+a+live+online+course\n", "https://www.safaribooksonline.com/learning-paths/?utm_medium=content&utm_source=oreilly.com&utm_campaign=lgen&utm_content=20170201+homepage+follow+a+path\n", "https://www.safaribooksonline.com/?utm_medium=content&utm_source=oreilly.com&utm_campaign=lgen&utm_content=20170505+homepage+unlimited+access\n", @@ -1615,12 +1716,9 @@ "http://www.oreilly.com/privacy.html\n", "http://www.oreilly.com/about/editorial_independence.html\n", "https://www.safaribooksonline.com/home/?utm_medium=content&utm_source=oreilly.com&utm_campaign=lgen&utm_content=20170601+nav\n", - "https://www.safaribooksonline.com/home/?utm_source=newsite&utm_medium=content&utm_campaign=lgen&utm_content=ai-topic-cta\n", - "https://conferences.oreilly.com/artificial-intelligence/ai-ca?intcmp=il-data-confreg-lp-aica17_20170803_new_site_ai_event_block_hero_link\n", - "https://conferences.oreilly.com/artificial-intelligence/ai-ca/public/schedule/detail/60305\n", - "https://conferences.oreilly.com/artificial-intelligence/ai-ca/public/schedule/detail/60516\n", - "https://conferences.oreilly.com/artificial-intelligence/ai-ca/public/schedule/detail/60540\n", - "https://conferences.oreilly.com/artificial-intelligence/ai-ca/public/schedule/detail/62726\n", + "http://www.oreilly.com/emails/newsletters/?display=preview#ai\n", + "https://www.oreilly.com/privacy.html\n", + "http://www.oreilly.com/ai/building-bots-with-natural-language-processing.csp?utm_source=oreilly&utm_medium=newsite&utm_campaign=ai-topic-cta\n", "https://www.flickr.com/photos/ebmorse/7536436622/in/dateposted/\n", "http://oreilly.com/about/\n", "http://oreilly.com/work-with-us.html\n", @@ -1639,37 +1737,27 @@ "traceback": [ "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", "\u001b[0;31mKeyboardInterrupt\u001b[0m Traceback (most recent call last)", - "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[1;32m 19\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 20\u001b[0m \u001b[0mallIntLinks\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0madd\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"http://oreilly.com\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 21\u001b[0;31m \u001b[0mgetAllExternalLinks\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"http://oreilly.com\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m", - "\u001b[0;32m\u001b[0m in \u001b[0;36mgetAllExternalLinks\u001b[0;34m(siteUrl)\u001b[0m\n\u001b[1;32m 16\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mlink\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mallIntLinks\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 17\u001b[0m \u001b[0mallIntLinks\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0madd\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mlink\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 18\u001b[0;31m \u001b[0mgetAllExternalLinks\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mlink\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 19\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 20\u001b[0m \u001b[0mallIntLinks\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0madd\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"http://oreilly.com\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m\u001b[0m in \u001b[0;36mgetAllExternalLinks\u001b[0;34m(siteUrl)\u001b[0m\n\u001b[1;32m 16\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mlink\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mallIntLinks\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 17\u001b[0m \u001b[0mallIntLinks\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0madd\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mlink\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 18\u001b[0;31m \u001b[0mgetAllExternalLinks\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mlink\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 19\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 20\u001b[0m \u001b[0mallIntLinks\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0madd\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"http://oreilly.com\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m\u001b[0m in \u001b[0;36mgetAllExternalLinks\u001b[0;34m(siteUrl)\u001b[0m\n\u001b[1;32m 16\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mlink\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mallIntLinks\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 17\u001b[0m \u001b[0mallIntLinks\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0madd\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mlink\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 18\u001b[0;31m \u001b[0mgetAllExternalLinks\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mlink\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 19\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 20\u001b[0m \u001b[0mallIntLinks\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0madd\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"http://oreilly.com\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m\u001b[0m in \u001b[0;36mgetAllExternalLinks\u001b[0;34m(siteUrl)\u001b[0m\n\u001b[1;32m 16\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mlink\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mallIntLinks\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 17\u001b[0m \u001b[0mallIntLinks\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0madd\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mlink\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 18\u001b[0;31m \u001b[0mgetAllExternalLinks\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mlink\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 19\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 20\u001b[0m \u001b[0mallIntLinks\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0madd\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"http://oreilly.com\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m\u001b[0m in \u001b[0;36mgetAllExternalLinks\u001b[0;34m(siteUrl)\u001b[0m\n\u001b[1;32m 16\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mlink\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mallIntLinks\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 17\u001b[0m \u001b[0mallIntLinks\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0madd\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mlink\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 18\u001b[0;31m \u001b[0mgetAllExternalLinks\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mlink\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 19\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 20\u001b[0m \u001b[0mallIntLinks\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0madd\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"http://oreilly.com\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m\u001b[0m in \u001b[0;36mgetAllExternalLinks\u001b[0;34m(siteUrl)\u001b[0m\n\u001b[1;32m 16\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mlink\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mallIntLinks\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 17\u001b[0m \u001b[0mallIntLinks\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0madd\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mlink\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 18\u001b[0;31m \u001b[0mgetAllExternalLinks\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mlink\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 19\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 20\u001b[0m \u001b[0mallIntLinks\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0madd\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"http://oreilly.com\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m\u001b[0m in \u001b[0;36mgetAllExternalLinks\u001b[0;34m(siteUrl)\u001b[0m\n\u001b[1;32m 3\u001b[0m \u001b[0mallIntLinks\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mset\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 4\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0mgetAllExternalLinks\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0msiteUrl\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 5\u001b[0;31m \u001b[0mhtml\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0murlopen\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0msiteUrl\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 6\u001b[0m \u001b[0mdomain\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0murlparse\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0msiteUrl\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mscheme\u001b[0m\u001b[0;34m+\u001b[0m\u001b[0;34m\"://\"\u001b[0m\u001b[0;34m+\u001b[0m\u001b[0murlparse\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0msiteUrl\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mnetloc\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 7\u001b[0m \u001b[0mbs\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mBeautifulSoup\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mhtml\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m\"html.parser\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m/Users/rmitchell/anaconda3/lib/python3.6/urllib/request.py\u001b[0m in \u001b[0;36murlopen\u001b[0;34m(url, data, timeout, cafile, capath, cadefault, context)\u001b[0m\n\u001b[1;32m 221\u001b[0m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 222\u001b[0m \u001b[0mopener\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0m_opener\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 223\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mopener\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mopen\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0murl\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mdata\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mtimeout\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 224\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 225\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0minstall_opener\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mopener\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m/Users/rmitchell/anaconda3/lib/python3.6/urllib/request.py\u001b[0m in \u001b[0;36mopen\u001b[0;34m(self, fullurl, data, timeout)\u001b[0m\n\u001b[1;32m 530\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0mprocessor\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mprocess_response\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mget\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mprotocol\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m[\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 531\u001b[0m \u001b[0mmeth\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mgetattr\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mprocessor\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mmeth_name\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 532\u001b[0;31m \u001b[0mresponse\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mmeth\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mreq\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mresponse\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 533\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 534\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mresponse\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m/Users/rmitchell/anaconda3/lib/python3.6/urllib/request.py\u001b[0m in \u001b[0;36mhttp_response\u001b[0;34m(self, request, response)\u001b[0m\n\u001b[1;32m 640\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0;34m(\u001b[0m\u001b[0;36m200\u001b[0m \u001b[0;34m<=\u001b[0m \u001b[0mcode\u001b[0m \u001b[0;34m<\u001b[0m \u001b[0;36m300\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 641\u001b[0m response = self.parent.error(\n\u001b[0;32m--> 642\u001b[0;31m 'http', request, response, code, msg, hdrs)\n\u001b[0m\u001b[1;32m 643\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 644\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mresponse\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m/Users/rmitchell/anaconda3/lib/python3.6/urllib/request.py\u001b[0m in \u001b[0;36merror\u001b[0;34m(self, proto, *args)\u001b[0m\n\u001b[1;32m 562\u001b[0m \u001b[0mhttp_err\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;36m0\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 563\u001b[0m \u001b[0margs\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m(\u001b[0m\u001b[0mdict\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mproto\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mmeth_name\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;34m+\u001b[0m \u001b[0margs\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 564\u001b[0;31m \u001b[0mresult\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_call_chain\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 565\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mresult\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 566\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mresult\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m/Users/rmitchell/anaconda3/lib/python3.6/urllib/request.py\u001b[0m in \u001b[0;36m_call_chain\u001b[0;34m(self, chain, kind, meth_name, *args)\u001b[0m\n\u001b[1;32m 502\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0mhandler\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mhandlers\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 503\u001b[0m \u001b[0mfunc\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mgetattr\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mhandler\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mmeth_name\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 504\u001b[0;31m \u001b[0mresult\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mfunc\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 505\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mresult\u001b[0m \u001b[0;32mis\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0;32mNone\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 506\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mresult\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m/Users/rmitchell/anaconda3/lib/python3.6/urllib/request.py\u001b[0m in \u001b[0;36mhttp_error_302\u001b[0;34m(self, req, fp, code, msg, headers)\u001b[0m\n\u001b[1;32m 754\u001b[0m \u001b[0mfp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mclose\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 755\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 756\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mparent\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mopen\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mnew\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mtimeout\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mreq\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mtimeout\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 757\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 758\u001b[0m \u001b[0mhttp_error_301\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mhttp_error_303\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mhttp_error_307\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mhttp_error_302\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m/Users/rmitchell/anaconda3/lib/python3.6/urllib/request.py\u001b[0m in \u001b[0;36mopen\u001b[0;34m(self, fullurl, data, timeout)\u001b[0m\n\u001b[1;32m 530\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0mprocessor\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mprocess_response\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mget\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mprotocol\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m[\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 531\u001b[0m \u001b[0mmeth\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mgetattr\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mprocessor\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mmeth_name\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 532\u001b[0;31m \u001b[0mresponse\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mmeth\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mreq\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mresponse\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 533\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 534\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mresponse\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m/Users/rmitchell/anaconda3/lib/python3.6/urllib/request.py\u001b[0m in \u001b[0;36mhttp_response\u001b[0;34m(self, request, response)\u001b[0m\n\u001b[1;32m 640\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0;34m(\u001b[0m\u001b[0;36m200\u001b[0m \u001b[0;34m<=\u001b[0m \u001b[0mcode\u001b[0m \u001b[0;34m<\u001b[0m \u001b[0;36m300\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 641\u001b[0m response = self.parent.error(\n\u001b[0;32m--> 642\u001b[0;31m 'http', request, response, code, msg, hdrs)\n\u001b[0m\u001b[1;32m 643\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 644\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mresponse\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m/Users/rmitchell/anaconda3/lib/python3.6/urllib/request.py\u001b[0m in \u001b[0;36merror\u001b[0;34m(self, proto, *args)\u001b[0m\n\u001b[1;32m 562\u001b[0m \u001b[0mhttp_err\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;36m0\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 563\u001b[0m \u001b[0margs\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m(\u001b[0m\u001b[0mdict\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mproto\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mmeth_name\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;34m+\u001b[0m \u001b[0margs\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 564\u001b[0;31m \u001b[0mresult\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_call_chain\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 565\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mresult\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 566\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mresult\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m/Users/rmitchell/anaconda3/lib/python3.6/urllib/request.py\u001b[0m in \u001b[0;36m_call_chain\u001b[0;34m(self, chain, kind, meth_name, *args)\u001b[0m\n\u001b[1;32m 502\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0mhandler\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mhandlers\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 503\u001b[0m \u001b[0mfunc\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mgetattr\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mhandler\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mmeth_name\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 504\u001b[0;31m \u001b[0mresult\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mfunc\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 505\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mresult\u001b[0m \u001b[0;32mis\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0;32mNone\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 506\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mresult\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m/Users/rmitchell/anaconda3/lib/python3.6/urllib/request.py\u001b[0m in \u001b[0;36mhttp_error_302\u001b[0;34m(self, req, fp, code, msg, headers)\u001b[0m\n\u001b[1;32m 754\u001b[0m \u001b[0mfp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mclose\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 755\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 756\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mparent\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mopen\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mnew\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mtimeout\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mreq\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mtimeout\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 757\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 758\u001b[0m \u001b[0mhttp_error_301\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mhttp_error_303\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mhttp_error_307\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mhttp_error_302\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m/Users/rmitchell/anaconda3/lib/python3.6/urllib/request.py\u001b[0m in \u001b[0;36mopen\u001b[0;34m(self, fullurl, data, timeout)\u001b[0m\n\u001b[1;32m 524\u001b[0m \u001b[0mreq\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mmeth\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mreq\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 525\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 526\u001b[0;31m \u001b[0mresponse\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_open\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mreq\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mdata\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 527\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 528\u001b[0m \u001b[0;31m# post-process response\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m/Users/rmitchell/anaconda3/lib/python3.6/urllib/request.py\u001b[0m in \u001b[0;36m_open\u001b[0;34m(self, req, data)\u001b[0m\n\u001b[1;32m 542\u001b[0m \u001b[0mprotocol\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mreq\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mtype\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 543\u001b[0m result = self._call_chain(self.handle_open, protocol, protocol +\n\u001b[0;32m--> 544\u001b[0;31m '_open', req)\n\u001b[0m\u001b[1;32m 545\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mresult\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 546\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mresult\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m/Users/rmitchell/anaconda3/lib/python3.6/urllib/request.py\u001b[0m in \u001b[0;36m_call_chain\u001b[0;34m(self, chain, kind, meth_name, *args)\u001b[0m\n\u001b[1;32m 502\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0mhandler\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mhandlers\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 503\u001b[0m \u001b[0mfunc\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mgetattr\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mhandler\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mmeth_name\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 504\u001b[0;31m \u001b[0mresult\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mfunc\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 505\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mresult\u001b[0m \u001b[0;32mis\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0;32mNone\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 506\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mresult\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m/Users/rmitchell/anaconda3/lib/python3.6/urllib/request.py\u001b[0m in \u001b[0;36mhttps_open\u001b[0;34m(self, req)\u001b[0m\n\u001b[1;32m 1359\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0mhttps_open\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mreq\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1360\u001b[0m return self.do_open(http.client.HTTPSConnection, req,\n\u001b[0;32m-> 1361\u001b[0;31m context=self._context, check_hostname=self._check_hostname)\n\u001b[0m\u001b[1;32m 1362\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1363\u001b[0m \u001b[0mhttps_request\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mAbstractHTTPHandler\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mdo_request_\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m/Users/rmitchell/anaconda3/lib/python3.6/urllib/request.py\u001b[0m in \u001b[0;36mdo_open\u001b[0;34m(self, http_class, req, **http_conn_args)\u001b[0m\n\u001b[1;32m 1319\u001b[0m \u001b[0;32mexcept\u001b[0m \u001b[0mOSError\u001b[0m \u001b[0;32mas\u001b[0m \u001b[0merr\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0;31m# timeout error\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1320\u001b[0m \u001b[0;32mraise\u001b[0m \u001b[0mURLError\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0merr\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 1321\u001b[0;31m \u001b[0mr\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mh\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mgetresponse\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 1322\u001b[0m \u001b[0;32mexcept\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1323\u001b[0m \u001b[0mh\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mclose\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m/Users/rmitchell/anaconda3/lib/python3.6/http/client.py\u001b[0m in \u001b[0;36mgetresponse\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 1329\u001b[0m \u001b[0;32mtry\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1330\u001b[0m \u001b[0;32mtry\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 1331\u001b[0;31m \u001b[0mresponse\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mbegin\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 1332\u001b[0m \u001b[0;32mexcept\u001b[0m \u001b[0mConnectionError\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1333\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mclose\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m/Users/rmitchell/anaconda3/lib/python3.6/http/client.py\u001b[0m in \u001b[0;36mbegin\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 295\u001b[0m \u001b[0;31m# read until we get a non-100 response\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 296\u001b[0m \u001b[0;32mwhile\u001b[0m \u001b[0;32mTrue\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 297\u001b[0;31m \u001b[0mversion\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mstatus\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mreason\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_read_status\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 298\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mstatus\u001b[0m \u001b[0;34m!=\u001b[0m \u001b[0mCONTINUE\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 299\u001b[0m \u001b[0;32mbreak\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m/Users/rmitchell/anaconda3/lib/python3.6/http/client.py\u001b[0m in \u001b[0;36m_read_status\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 256\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 257\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0m_read_status\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 258\u001b[0;31m \u001b[0mline\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mstr\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mfp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mreadline\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0m_MAXLINE\u001b[0m \u001b[0;34m+\u001b[0m \u001b[0;36m1\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m\"iso-8859-1\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 259\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mlen\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mline\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;34m>\u001b[0m \u001b[0m_MAXLINE\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 260\u001b[0m \u001b[0;32mraise\u001b[0m \u001b[0mLineTooLong\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"status line\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m/Users/rmitchell/anaconda3/lib/python3.6/socket.py\u001b[0m in \u001b[0;36mreadinto\u001b[0;34m(self, b)\u001b[0m\n\u001b[1;32m 584\u001b[0m \u001b[0;32mwhile\u001b[0m \u001b[0;32mTrue\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 585\u001b[0m \u001b[0;32mtry\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 586\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_sock\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mrecv_into\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mb\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 587\u001b[0m \u001b[0;32mexcept\u001b[0m \u001b[0mtimeout\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 588\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_timeout_occurred\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;32mTrue\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m/Users/rmitchell/anaconda3/lib/python3.6/ssl.py\u001b[0m in \u001b[0;36mrecv_into\u001b[0;34m(self, buffer, nbytes, flags)\u001b[0m\n\u001b[1;32m 1000\u001b[0m \u001b[0;34m\"non-zero flags not allowed in calls to recv_into() on %s\"\u001b[0m \u001b[0;34m%\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1001\u001b[0m self.__class__)\n\u001b[0;32m-> 1002\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mread\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mnbytes\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mbuffer\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 1003\u001b[0m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1004\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0msocket\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mrecv_into\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mbuffer\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mnbytes\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mflags\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m/Users/rmitchell/anaconda3/lib/python3.6/ssl.py\u001b[0m in \u001b[0;36mread\u001b[0;34m(self, len, buffer)\u001b[0m\n\u001b[1;32m 863\u001b[0m \u001b[0;32mraise\u001b[0m \u001b[0mValueError\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"Read on closed or unwrapped SSL socket.\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 864\u001b[0m \u001b[0;32mtry\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 865\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_sslobj\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mread\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mlen\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mbuffer\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 866\u001b[0m \u001b[0;32mexcept\u001b[0m \u001b[0mSSLError\u001b[0m \u001b[0;32mas\u001b[0m \u001b[0mx\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 867\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mx\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m0\u001b[0m\u001b[0;34m]\u001b[0m \u001b[0;34m==\u001b[0m \u001b[0mSSL_ERROR_EOF\u001b[0m \u001b[0;32mand\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msuppress_ragged_eofs\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m/Users/rmitchell/anaconda3/lib/python3.6/ssl.py\u001b[0m in \u001b[0;36mread\u001b[0;34m(self, len, buffer)\u001b[0m\n\u001b[1;32m 623\u001b[0m \"\"\"\n\u001b[1;32m 624\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mbuffer\u001b[0m \u001b[0;32mis\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0;32mNone\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 625\u001b[0;31m \u001b[0mv\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_sslobj\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mread\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mlen\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mbuffer\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 626\u001b[0m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 627\u001b[0m \u001b[0mv\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_sslobj\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mread\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mlen\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[1;32m 19\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 20\u001b[0m \u001b[0mallIntLinks\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0madd\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'http://oreilly.com'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 21\u001b[0;31m \u001b[0mgetAllExternalLinks\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'http://oreilly.com'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m", + "\u001b[0;32m\u001b[0m in \u001b[0;36mgetAllExternalLinks\u001b[0;34m(siteUrl)\u001b[0m\n\u001b[1;32m 16\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mlink\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mallIntLinks\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 17\u001b[0m \u001b[0mallIntLinks\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0madd\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mlink\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 18\u001b[0;31m \u001b[0mgetAllExternalLinks\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mlink\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 19\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 20\u001b[0m \u001b[0mallIntLinks\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0madd\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'http://oreilly.com'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m\u001b[0m in \u001b[0;36mgetAllExternalLinks\u001b[0;34m(siteUrl)\u001b[0m\n\u001b[1;32m 16\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mlink\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mallIntLinks\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 17\u001b[0m \u001b[0mallIntLinks\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0madd\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mlink\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 18\u001b[0;31m \u001b[0mgetAllExternalLinks\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mlink\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 19\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 20\u001b[0m \u001b[0mallIntLinks\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0madd\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'http://oreilly.com'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m\u001b[0m in \u001b[0;36mgetAllExternalLinks\u001b[0;34m(siteUrl)\u001b[0m\n\u001b[1;32m 16\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mlink\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mallIntLinks\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 17\u001b[0m \u001b[0mallIntLinks\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0madd\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mlink\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 18\u001b[0;31m \u001b[0mgetAllExternalLinks\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mlink\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 19\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 20\u001b[0m \u001b[0mallIntLinks\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0madd\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'http://oreilly.com'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m\u001b[0m in \u001b[0;36mgetAllExternalLinks\u001b[0;34m(siteUrl)\u001b[0m\n\u001b[1;32m 16\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mlink\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mallIntLinks\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 17\u001b[0m \u001b[0mallIntLinks\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0madd\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mlink\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 18\u001b[0;31m \u001b[0mgetAllExternalLinks\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mlink\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 19\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 20\u001b[0m \u001b[0mallIntLinks\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0madd\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'http://oreilly.com'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m\u001b[0m in \u001b[0;36mgetAllExternalLinks\u001b[0;34m(siteUrl)\u001b[0m\n\u001b[1;32m 16\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mlink\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mallIntLinks\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 17\u001b[0m \u001b[0mallIntLinks\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0madd\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mlink\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 18\u001b[0;31m \u001b[0mgetAllExternalLinks\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mlink\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 19\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 20\u001b[0m \u001b[0mallIntLinks\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0madd\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'http://oreilly.com'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m\u001b[0m in \u001b[0;36mgetAllExternalLinks\u001b[0;34m(siteUrl)\u001b[0m\n\u001b[1;32m 16\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mlink\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mallIntLinks\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 17\u001b[0m \u001b[0mallIntLinks\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0madd\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mlink\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 18\u001b[0;31m \u001b[0mgetAllExternalLinks\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mlink\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 19\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 20\u001b[0m \u001b[0mallIntLinks\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0madd\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'http://oreilly.com'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m\u001b[0m in \u001b[0;36mgetAllExternalLinks\u001b[0;34m(siteUrl)\u001b[0m\n\u001b[1;32m 3\u001b[0m \u001b[0mallIntLinks\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mset\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 4\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0mgetAllExternalLinks\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0msiteUrl\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 5\u001b[0;31m \u001b[0mhtml\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0murlopen\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0msiteUrl\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 6\u001b[0m \u001b[0mdomain\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m'{}://{}'\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mformat\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0murlparse\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0msiteUrl\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mscheme\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0murlparse\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0msiteUrl\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mnetloc\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 7\u001b[0m \u001b[0mbs\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mBeautifulSoup\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mhtml\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m\"html.parser\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/urllib/request.py\u001b[0m in \u001b[0;36murlopen\u001b[0;34m(url, data, timeout, cafile, capath, cadefault, context)\u001b[0m\n\u001b[1;32m 221\u001b[0m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 222\u001b[0m \u001b[0mopener\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0m_opener\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 223\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mopener\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mopen\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0murl\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mdata\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mtimeout\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 224\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 225\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0minstall_opener\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mopener\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/urllib/request.py\u001b[0m in \u001b[0;36mopen\u001b[0;34m(self, fullurl, data, timeout)\u001b[0m\n\u001b[1;32m 524\u001b[0m \u001b[0mreq\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mmeth\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mreq\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 525\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 526\u001b[0;31m \u001b[0mresponse\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_open\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mreq\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mdata\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 527\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 528\u001b[0m \u001b[0;31m# post-process response\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/urllib/request.py\u001b[0m in \u001b[0;36m_open\u001b[0;34m(self, req, data)\u001b[0m\n\u001b[1;32m 542\u001b[0m \u001b[0mprotocol\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mreq\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mtype\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 543\u001b[0m result = self._call_chain(self.handle_open, protocol, protocol +\n\u001b[0;32m--> 544\u001b[0;31m '_open', req)\n\u001b[0m\u001b[1;32m 545\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mresult\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 546\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mresult\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/urllib/request.py\u001b[0m in \u001b[0;36m_call_chain\u001b[0;34m(self, chain, kind, meth_name, *args)\u001b[0m\n\u001b[1;32m 502\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0mhandler\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mhandlers\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 503\u001b[0m \u001b[0mfunc\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mgetattr\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mhandler\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mmeth_name\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 504\u001b[0;31m \u001b[0mresult\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mfunc\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 505\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mresult\u001b[0m \u001b[0;32mis\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0;32mNone\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 506\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mresult\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/urllib/request.py\u001b[0m in \u001b[0;36mhttp_open\u001b[0;34m(self, req)\u001b[0m\n\u001b[1;32m 1344\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1345\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0mhttp_open\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mreq\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 1346\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mdo_open\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mhttp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mclient\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mHTTPConnection\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mreq\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 1347\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1348\u001b[0m \u001b[0mhttp_request\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mAbstractHTTPHandler\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mdo_request_\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/urllib/request.py\u001b[0m in \u001b[0;36mdo_open\u001b[0;34m(self, http_class, req, **http_conn_args)\u001b[0m\n\u001b[1;32m 1316\u001b[0m \u001b[0;32mtry\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1317\u001b[0m h.request(req.get_method(), req.selector, req.data, headers,\n\u001b[0;32m-> 1318\u001b[0;31m encode_chunked=req.has_header('Transfer-encoding'))\n\u001b[0m\u001b[1;32m 1319\u001b[0m \u001b[0;32mexcept\u001b[0m \u001b[0mOSError\u001b[0m \u001b[0;32mas\u001b[0m \u001b[0merr\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0;31m# timeout error\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1320\u001b[0m \u001b[0;32mraise\u001b[0m \u001b[0mURLError\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0merr\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/http/client.py\u001b[0m in \u001b[0;36mrequest\u001b[0;34m(self, method, url, body, headers, encode_chunked)\u001b[0m\n\u001b[1;32m 1237\u001b[0m encode_chunked=False):\n\u001b[1;32m 1238\u001b[0m \u001b[0;34m\"\"\"Send a complete request to the server.\"\"\"\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 1239\u001b[0;31m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_send_request\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mmethod\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0murl\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mbody\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mheaders\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mencode_chunked\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 1240\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1241\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0m_send_request\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mmethod\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0murl\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mbody\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mheaders\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mencode_chunked\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/http/client.py\u001b[0m in \u001b[0;36m_send_request\u001b[0;34m(self, method, url, body, headers, encode_chunked)\u001b[0m\n\u001b[1;32m 1283\u001b[0m \u001b[0;31m# default charset of iso-8859-1.\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1284\u001b[0m \u001b[0mbody\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0m_encode\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mbody\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m'body'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 1285\u001b[0;31m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mendheaders\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mbody\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mencode_chunked\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mencode_chunked\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 1286\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1287\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0mgetresponse\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/http/client.py\u001b[0m in \u001b[0;36mendheaders\u001b[0;34m(self, message_body, encode_chunked)\u001b[0m\n\u001b[1;32m 1232\u001b[0m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1233\u001b[0m \u001b[0;32mraise\u001b[0m \u001b[0mCannotSendHeader\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 1234\u001b[0;31m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_send_output\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mmessage_body\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mencode_chunked\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mencode_chunked\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 1235\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1236\u001b[0m def request(self, method, url, body=None, headers={}, *,\n", + "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/http/client.py\u001b[0m in \u001b[0;36m_send_output\u001b[0;34m(self, message_body, encode_chunked)\u001b[0m\n\u001b[1;32m 1024\u001b[0m \u001b[0mmsg\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34mb\"\\r\\n\"\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mjoin\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_buffer\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1025\u001b[0m \u001b[0;32mdel\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_buffer\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 1026\u001b[0;31m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msend\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mmsg\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 1027\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1028\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mmessage_body\u001b[0m \u001b[0;32mis\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0;32mNone\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/http/client.py\u001b[0m in \u001b[0;36msend\u001b[0;34m(self, data)\u001b[0m\n\u001b[1;32m 962\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msock\u001b[0m \u001b[0;32mis\u001b[0m \u001b[0;32mNone\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 963\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mauto_open\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 964\u001b[0;31m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mconnect\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 965\u001b[0m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 966\u001b[0m \u001b[0;32mraise\u001b[0m \u001b[0mNotConnected\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/http/client.py\u001b[0m in \u001b[0;36mconnect\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 934\u001b[0m \u001b[0;34m\"\"\"Connect to the host and port specified in __init__.\"\"\"\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 935\u001b[0m self.sock = self._create_connection(\n\u001b[0;32m--> 936\u001b[0;31m (self.host,self.port), self.timeout, self.source_address)\n\u001b[0m\u001b[1;32m 937\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msock\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msetsockopt\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0msocket\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mIPPROTO_TCP\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0msocket\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mTCP_NODELAY\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;36m1\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 938\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/socket.py\u001b[0m in \u001b[0;36mcreate_connection\u001b[0;34m(address, timeout, source_address)\u001b[0m\n\u001b[1;32m 711\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0msource_address\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 712\u001b[0m \u001b[0msock\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mbind\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0msource_address\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 713\u001b[0;31m \u001b[0msock\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mconnect\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0msa\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 714\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0msock\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 715\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;31mKeyboardInterrupt\u001b[0m: " ] } @@ -1681,9 +1769,9 @@ "def getAllExternalLinks(siteUrl):\n", " html = urlopen(siteUrl)\n", " domain = '{}://{}'.format(urlparse(siteUrl).scheme, urlparse(siteUrl).netloc)\n", - " bs = BeautifulSoup(html, \"html.parser\")\n", - " internalLinks = getInternalLinks(bs,domain)\n", - " externalLinks = getExternalLinks(bs,domain)\n", + " bsObj = BeautifulSoup(html, 'html.parser')\n", + " internalLinks = getInternalLinks(bsObj, domain)\n", + " externalLinks = getExternalLinks(bsObj, domain)\n", "\n", " for link in externalLinks:\n", " if link not in allExtLinks:\n", diff --git a/v2/Chapter04_CrawlingModels.ipynb b/v2/Chapter04_CrawlingModels.ipynb index ada0c1c..47528db 100644 --- a/v2/Chapter04_CrawlingModels.ipynb +++ b/v2/Chapter04_CrawlingModels.ipynb @@ -2,16 +2,86 @@ "cells": [ { "cell_type": "code", - "execution_count": null, - "metadata": { - "collapsed": true - }, + "execution_count": 5, + "metadata": {}, "outputs": [], "source": [ "import requests\n", "from bs4 import BeautifulSoup" ] }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [], + "source": [ + "def getPage(url):\n", + " \"\"\"\n", + " Utilty function used to get a Beautiful Soup object from a given URL\n", + " \"\"\"\n", + " print(\"Retrieving URL:\\n{}\".format(url))\n", + " session = requests.Session()\n", + " headers = {\"User-Agent\":\"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.95 Safari/537.36\", \"Accept\":\"text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8\"}\n", + " try:\n", + " req = session.get(url, headers=headers)\n", + " except requests.exceptions.RequestException:\n", + " return None\n", + " bs = BeautifulSoup(req.text, \"html.parser\")\n", + " return bs" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Retrieving URL:\n", + "https://www.nytimes.com/2018/01/25/opinion/sunday/silicon-valley-immortality.html\n", + "[

Would you like to live forever? Some billionaires, already invincible in every other way, have decided that they also deserve not to die. Today several biotech companies, fueled by Silicon Valley fortunes, are devoted to “life extension” — or as some put it, to solving “the problem of death.”

,

It’s a cause championed by the tech billionaire Peter Thiel, the TED Talk darling Aubrey de Gray, Google’s billion-dollar Calico longevity lab and investment by Amazon’s Jeff Bezos. The National Academy of Medicine, an independent group, recently dedicated funding to “end aging forever.”

,

As the longevity entrepreneur Arram Sabeti told The New Yorker: “The proposition that we can live forever is obvious. It doesn’t violate the laws of physics, so we can achieve it.” Of all the slightly creepy aspects to this trend, the strangest is the least noticed: The people publicly championing life extension are mainly men.

,

Not all of them, of course. In 2009, Elizabeth Blackburn received the Nobel Prize for her work on telomeres, protein caps on chromosomes that may be a key to understanding aging. Cynthia Kenyon, the vice president for aging research at Calico, studied life extension long before it was cool; her former protégée, Laura Deming, now runs a venture capital fund for the cause. But these women are focused on curbing age-related pathology, a concept about as controversial as cancer research. They do not appear thirsty for the Fountain of Youth.

,

Professor Blackburn’s new book on telomeres couldn’t be clearer. “Does our research show that by maintaining your telomeres you will live into your hundreds?” it says. “No. Everyone’s cells become old and eventually we die.” Ms. Kenyon once described her research’s goal as “to just have a healthy life and then turn out the lights.” Even Ms. Deming, a 23-year-old prodigy who worked in Ms. Kenyon’s lab at age 12, points out that “aging is innately important to us.”

,

Few of these experts come close to matching the gaudy statements of the longevity investor and “biohacker” Dave Asprey, who has told journalists, “I decided that I was just not going to die.” Or those of Brian Hanley, a microbiologist who has tested an anti-aging gene therapy he developed on himself, who claimed: “There’s a bunch of things that will need to be done to achieve life spans into at least hundreds of years. But we’ll get there.” Or of the 74-year-old fashion mogul Peter Nygard, who during a promotional clip receives injections of his own stem cells to reverse his aging while declaring: “Ponce de León had the right idea. He was just too early. That was then. This is now.”

,

I came across Mr. Nygard’s ode to human endurance three years ago while beginning research on a novel about a woman who can’t die, and watching that video allowed me to experience something close to life extension. As Mr. Nygard compared himself to Leonardo da Vinci and Benjamin Franklin while dancing with a bevy of models — or as a voice-over explained, “living a life most can only dream of” — nine minutes of YouTube expanded into a vapid eternity, where time melted into a vortex of solipsism.

,

At that time I was immersed in caring for my four young children, and this paean to everlasting youth seemed especially stupid. I recall thinking that if this was eternal life, death didn’t seem that bad.

,

But now, as powerful men have begun falling like dominoes under accusations of sexual assault, that video with its young women clustered around an elderly multimillionaire has haunted me anew. As I recall my discomfort with the proclamations of longevity-driven men who hope to achieve “escape velocity,” I think of the astonishing hubris of the Harvey Weinsteins of the world, those who saw young women’s bodies as theirs for the taking.

,

Much has been said about why we allowed such behavior to go unchecked. What has remained unsaid, because it is so obvious, is what would make someone so shameless in the first place: These people believed they were invincible. They saw their own bodies as entirely theirs and other people’s bodies as at their disposal; apparently nothing in their lives led them to believe otherwise.

,

Historically, this is a mistake that few women would make, because until very recently, the physical experience of being a woman entailed exactly the opposite — and not only because women have to hold their keys in self-defense while walking through parking lots at night. It’s only very recently that women have widely participated in public life, but it’s even more recently that men have been welcome, or even expected, to provide physical care for vulnerable people.

,

Only for a nanosecond of human history have men even slightly shared what was once exclusively a woman’s burden: the relentless daily labor of caring for another person’s body, the life-preserving work of cleaning feces and vomit, the constant cycle of cooking and feeding and blanketing and bathing, whether for the young, the ill or the old. For nearly as long as there have been humans, being a female human has meant a daily nonoptional immersion in the fragility of human life and the endless effort required to sustain it.

,

Obviously not everyone who provides care for others is a saint. But engaging in that daily devotion, or even living with its expectation, has enormous potential to change a person. It forces one to constantly imagine the world from someone else’s point of view: Is he hungry? Maybe she’s tired. Is his back hurting him? What is she trying to say?

,

The most obvious cure for today’s gender inequities is to put more women in power. But if we really hope to create an equal society, we will also need more men to care for the powerless — more women in the boardroom, but also more men at the nurses’ station and the changing table, immersed in daily physical empathy. If that sounds like an evolutionary impossibility, well, it doesn’t violate the laws of physics, so we can achieve it. It is surely worth at least as much investment as defeating death.

,

Perhaps it takes the promise of immortality to inspire the self-absorbed to invest in unsexy work like Alzheimer’s research. If so, we may all one day bless the inane death-defiance as a means to a worthy end.

,

But men who hope to live forever might pause on their eternal journey to consider the frightening void at invincibility’s core. Death is the ultimate vulnerability. It is the moment when all of us must confront exactly what so many women have known all too well: You are a body, only a body, and nothing more.

]\n" + ] + }, + { + "ename": "AttributeError", + "evalue": "'list' object has no attribute 'join'", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mAttributeError\u001b[0m Traceback (most recent call last)", + "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[1;32m 17\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 18\u001b[0m \u001b[0mbsObj\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mgetPage\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"https://www.nytimes.com/2018/01/25/opinion/sunday/silicon-valley-immortality.html\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 19\u001b[0;31m \u001b[0mcontent\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mscrapeNYTimes\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mbsObj\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 20\u001b[0m \u001b[0mprint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mcontent\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mtitle\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 21\u001b[0m \u001b[0mprint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mcontent\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mcontent\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m\u001b[0m in \u001b[0;36mscrapeNYTimes\u001b[0;34m(bs)\u001b[0m\n\u001b[1;32m 8\u001b[0m \u001b[0mlines\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mbs\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mfind_all\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"p\"\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m{\u001b[0m\u001b[0;34m\"class\"\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\"story-content\"\u001b[0m\u001b[0;34m}\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 9\u001b[0m \u001b[0mprint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mlines\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 10\u001b[0;31m \u001b[0mcontent\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m[\u001b[0m\u001b[0mline\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mtext\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0mline\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mlines\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mjoin\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"\\n\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 11\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mContent\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mtitle\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mcontent\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 12\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;31mAttributeError\u001b[0m: 'list' object has no attribute 'join'" + ] + } + ], + "source": [ + "class Content:\n", + " def __init__(self, title, author, content):\n", + " self.title = title\n", + " self.content = content\n", + "\n", + "def scrapeNYTimes(bs):\n", + " title = bs.find(\"h1\").text\n", + " lines = bs.find_all(\"p\", {\"class\":\"story-content\"})\n", + " print(lines)\n", + " content = [line.text for line in lines].join(\"\\n\")\n", + " return Content(title, content)\n", + "\n", + "def scrapeBrookings(bs):\n", + " title = bs.find(\"h1\").text\n", + " content = bs.find(\"div\",{\"class\",\"post-body\"}).text\n", + " return Content(text, content)\n", + "\n", + "bsObj = getPage(\"https://www.nytimes.com/2018/01/25/opinion/sunday/silicon-valley-immortality.html\")\n", + "content = scrapeNYTimes(bsObj)\n", + "print(content.title)\n", + "print(content.content)" + ] + }, { "cell_type": "code", "execution_count": null, diff --git a/v2/Chapter05_Scrapy/wikiSpider/wikiSpider/pipelines.py b/v2/Chapter05_Scrapy/wikiSpider/wikiSpider/pipelines.py index 99e316f..15b9161 100644 --- a/v2/Chapter05_Scrapy/wikiSpider/wikiSpider/pipelines.py +++ b/v2/Chapter05_Scrapy/wikiSpider/wikiSpider/pipelines.py @@ -4,8 +4,6 @@ class WikispiderPipeline(object): def process_item(self, article, spider): - dateStr = article['lastUpdated'] - # This page was last edited on 26 January 2018, at 03:56. article['lastUpdated'] = article['lastUpdated'].replace('This page was last edited on', '') article['lastUpdated'] = article['lastUpdated'].strip() article['lastUpdated'] = datetime.strptime(article['lastUpdated'], '%d %B %Y, at %H:%M.') diff --git a/v2/Chapter05_Scrapy/wikiSpider/wikiSpider/settings.py b/v2/Chapter05_Scrapy/wikiSpider/wikiSpider/settings.py index c57b4c8..d6986ec 100644 --- a/v2/Chapter05_Scrapy/wikiSpider/wikiSpider/settings.py +++ b/v2/Chapter05_Scrapy/wikiSpider/wikiSpider/settings.py @@ -64,9 +64,9 @@ # Configure item pipelines # See http://scrapy.readthedocs.org/en/latest/topics/item-pipeline.html -#ITEM_PIPELINES = { -# 'wikiSpider.pipelines.WikispiderPipeline': 300, -#} +ITEM_PIPELINES = { + 'wikiSpider.pipelines.WikispiderPipeline': 300, +} # Enable and configure the AutoThrottle extension (disabled by default) # See http://doc.scrapy.org/en/latest/topics/autothrottle.html diff --git a/v2/Chapter09_NaturalLanguages.ipynb b/v2/Chapter09_NaturalLanguages.ipynb index 139482a..35ba9c8 100644 --- a/v2/Chapter09_NaturalLanguages.ipynb +++ b/v2/Chapter09_NaturalLanguages.ipynb @@ -222,7 +222,7 @@ }, { "cell_type": "code", - "execution_count": 14, + "execution_count": 2, "metadata": {}, "outputs": [ { @@ -230,9 +230,9 @@ "output_type": "stream", "text": [ "/wiki/Kevin_Bacon\n", - "/wiki/San_Diego_Comic-Con\n", - "/wiki/Harvey_Kurtzman\n", - "/wiki/Monty_Python\n" + "/wiki/Primetime_Emmy_Award_for_Outstanding_Lead_Actor_in_a_Miniseries_or_a_Movie\n", + "/wiki/Gary_Gilmore\n", + "/wiki/Eric_Idle\n" ] } ], @@ -265,7 +265,7 @@ " return searchBreadth(targetPageId, newPaths)\n", " \n", "nodes = getLinks(1)\n", - "targetPageId = 16642\n", + "targetPageId = 28624\n", "pageIds = searchBreadth(targetPageId)\n", "for pageId in pageIds:\n", " print(getUrl(pageId))" diff --git a/v2/Chapter15_Testing.ipynb b/v2/Chapter15_Testing.ipynb index 3d5b2cd..988e31d 100644 --- a/v2/Chapter15_Testing.ipynb +++ b/v2/Chapter15_Testing.ipynb @@ -2,19 +2,91 @@ "cells": [ { "cell_type": "code", - "execution_count": 3, + "execution_count": 18, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "." + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Setting up the test\n", + "Tearing down the test\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "\n", + "----------------------------------------------------------------------\n", + "Ran 1 test in 0.001s\n", + "\n", + "OK\n" + ] + } + ], + "source": [ + "import unittest\n", + "\n", + "class TestAddition(unittest.TestCase):\n", + " def setUp(self):\n", + " print('Setting up the test')\n", + "\n", + " def tearDown(self):\n", + " print('Tearing down the test')\n", + "\n", + " def test_twoPlusTwo(self):\n", + " total = 2+2\n", + " self.assertEqual(4, total);\n", + "\n", + "if __name__ == '__main__':\n", + " unittest.main(argv=[''], exit=False)" + ] + }, + { + "cell_type": "code", + "execution_count": 19, "metadata": {}, "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "." + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Setting up the test\n", + "Tearing down the test\n" + ] + }, { "name": "stderr", "output_type": "stream", "text": [ "..\n", "----------------------------------------------------------------------\n", - "Ran 2 tests in 0.491s\n", + "Ran 3 tests in 1.390s\n", "\n", "OK\n" ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Once deleted, variables cannot be recovered. Proceed (y/[n])? y\n" + ] } ], "source": [ @@ -24,6 +96,8 @@ "\n", "class TestWikipedia(unittest.TestCase):\n", " bs = None\n", + " def setup(self):\n", + " print(\"TEST WIKIPEDIA\")\n", " def setUpClass():\n", " url = \"http://en.wikipedia.org/wiki/Monty_Python\"\n", " TestWikipedia.bs = BeautifulSoup(urlopen(url), \"html.parser\")\n", @@ -36,8 +110,10 @@ " content = TestWikipedia.bs.find(\"div\",{\"id\":\"mw-content-text\"})\n", " self.assertIsNotNone(content)\n", "\n", + "\n", "if __name__ == '__main__':\n", - " unittest.main(argv=[''], exit=False)" + " unittest.main(argv=[''], exit=False)\n", + " %reset\n" ] }, { @@ -67,10 +143,20 @@ "text": [ "\n", "----------------------------------------------------------------------\n", - "Ran 1 test in 7.794s\n", + "Ran 1 test in 11.476s\n", "\n", "OK\n" ] + }, + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 3, + "metadata": {}, + "output_type": "execute_result" } ], "source": [ @@ -113,8 +199,10 @@ " randomLink = random.SystemRandom().choice(links)\n", " return 'https://wikipedia.org'+randomLink.attrs['href']\n", " \n", + "\n", "if __name__ == '__main__':\n", - " unittest.main(argv=[''], exit=False)" + " unittest.main(argv=[''], exit=False)\n", + " %reset" ] }, { @@ -227,7 +315,8 @@ " self.assertEqual(\"You are definitely not a bot!\", self.driver.find_element_by_id(\"message\").text)\n", "\n", "if __name__ == '__main__':\n", - " unittest.main(argv=[''], exit=False)" + " unittest.main(argv=[''], exit=False)\n", + " %reset" ] }, { From 2bd87865ecdb3e710f26f0d76bcbbac6146963d6 Mon Sep 17 00:00:00 2001 From: remitchell Date: Sat, 27 Jan 2018 20:09:07 -0500 Subject: [PATCH 24/47] Minor formatting --- v2/Chapter01_BeginningToScrape.ipynb | 10 +- v2/Chapter02-AdvancedHTMLParsing.ipynb | 322 +++++---------------- v2/Chapter03-web-crawlers.ipynb | 210 +++++++------- v2/Chapter04_CrawlingModels.ipynb | 381 +++++++++++++++++++++---- v2/Chapter06_StoringData.ipynb | 31 +- 5 files changed, 534 insertions(+), 420 deletions(-) diff --git a/v2/Chapter01_BeginningToScrape.ipynb b/v2/Chapter01_BeginningToScrape.ipynb index a522c18..5d4af4c 100644 --- a/v2/Chapter01_BeginningToScrape.ipynb +++ b/v2/Chapter01_BeginningToScrape.ipynb @@ -16,7 +16,7 @@ "source": [ "from urllib.request import urlopen\n", "\n", - "html = urlopen(\"http://pythonscraping.com/pages/page1.html\")\n", + "html = urlopen('http://pythonscraping.com/pages/page1.html')\n", "print(html.read())" ] }, @@ -37,9 +37,9 @@ "from urllib.request import urlopen\n", "from bs4 import BeautifulSoup\n", "\n", - "html = urlopen(\"http://www.pythonscraping.com/pages/page1.html\")\n", - "bsObj = BeautifulSoup(html.read(), \"html.parser\")\n", - "print(bsObj.h1)" + "html = urlopen('http://www.pythonscraping.com/pages/page1.html')\n", + "bs = BeautifulSoup(html.read(), 'html.parser')\n", + "print(bs.h1)" ] }, { @@ -60,8 +60,6 @@ "from urllib.error import HTTPError\n", "from urllib.error import URLError\n", "\n", - "from bs4 import BeautifulSoup\n", - "\n", "try:\n", " html = urlopen(\"https://pythonscrapingthisurldoesnotexist.com\")\n", "except HTTPError as e:\n", diff --git a/v2/Chapter02-AdvancedHTMLParsing.ipynb b/v2/Chapter02-AdvancedHTMLParsing.ipynb index bf6034f..5ae99c8 100644 --- a/v2/Chapter02-AdvancedHTMLParsing.ipynb +++ b/v2/Chapter02-AdvancedHTMLParsing.ipynb @@ -1,254 +1,31 @@ { "cells": [ { - "cell_type": "code", - "execution_count": 5, + "cell_type": "raw", "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "\n", - "\n", - "\n", - "\n", - "\n", - "

War and Peace

\n", - "

Chapter 1

\n", - "
\n", - "\"Well, Prince, so Genoa and Lucca are now just family estates of the\n", - "Buonapartes. But I warn you, if you don't tell me that this means war,\n", - "if you still try to defend the infamies and horrors perpetrated by\n", - "that Antichrist- I really believe he is Antichrist- I will have\n", - "nothing more to do with you and you are no longer my friend, no longer\n", - "my 'faithful slave,' as you call yourself! But how do you do? I see\n", - "I have frightened you- sit down and tell me all the news.\"\n", - "

\n", - "It was in July, 1805, and the speaker was the well-known Anna\n", - "Pavlovna Scherer, maid of honor and favorite of the Empress Marya\n", - "Fedorovna. With these words she greeted Prince Vasili Kuragin, a man\n", - "of high rank and importance, who was the first to arrive at her\n", - "reception. Anna Pavlovna had had a cough for some days. She was, as\n", - "she said, suffering from la grippe; grippe being then a new word in\n", - "St. Petersburg, used only by the elite.\n", - "

\n", - "All her invitations without exception, written in French, and\n", - "delivered by a scarlet-liveried footman that morning, ran as follows:\n", - "

\n", - "\"If you have nothing better to do, Count [or Prince], and if the\n", - "prospect of spending an evening with a poor invalid is not too\n", - "terrible, I shall be very charmed to see you tonight between 7 and 10-\n", - "Annette Scherer.\"\n", - "

\n", - "\"Heavens! what a virulent attack!\" replied the prince, not in the\n", - "least disconcerted by this reception. He had just entered, wearing\n", - "an embroidered court uniform, knee breeches, and shoes, and had\n", - "stars on his breast and a serene expression on his flat face. He spoke\n", - "in that refined French in which our grandfathers not only spoke but\n", - "thought, and with the gentle, patronizing intonation natural to a\n", - "man of importance who had grown old in society and at court. He went\n", - "up to Anna Pavlovna, kissed her hand, presenting to her his bald,\n", - "scented, and shining head, and complacently seated himself on the\n", - "sofa.\n", - "

\n", - "\"First of all, dear friend, tell me how you are. Set your friend's\n", - "mind at rest,\" said he without altering his tone, beneath the\n", - "politeness and affected sympathy of which indifference and even\n", - "irony could be discerned.\n", - "

\n", - "\"Can one be well while suffering morally? Can one be calm in times\n", - "like these if one has any feeling?\" said Anna Pavlovna. \"You are\n", - "staying the whole evening, I hope?\"\n", - "

\n", - "\"And the fete at the English ambassador's? Today is Wednesday. I\n", - "must put in an appearance there,\" said the prince. \"My daughter is\n", - "coming for me to take me there.\"\n", - "

\n", - "\"I thought today's fete had been canceled. I confess all these\n", - "festivities and fireworks are becoming wearisome.\"\n", - "

\n", - "\"If they had known that you wished it, the entertainment would\n", - "have been put off,\" said the prince, who, like a wound-up clock, by\n", - "force of habit said things he did not even wish to be believed.\n", - "

\n", - "\"Don't tease! Well, and what has been decided about Novosiltsev's\n", - "dispatch? You know everything.\"\n", - "

\n", - "\"What can one say about it?\" replied the prince in a cold,\n", - "listless tone. \"What has been decided? They have decided that\n", - "Buonaparte has burnt his boats, and I believe that we are ready to\n", - "burn ours.\"\n", - "

\n", - "Prince Vasili always spoke languidly, like an actor repeating a\n", - "stale part. Anna Pavlovna Scherer on the contrary, despite her forty\n", - "years, overflowed with animation and impulsiveness. To be an\n", - "enthusiast had become her social vocation and, sometimes even when she\n", - "did not feel like it, she became enthusiastic in order not to\n", - "disappoint the expectations of those who knew her. The subdued smile\n", - "which, though it did not suit her faded features, always played\n", - "round her lips expressed, as in a spoiled child, a continual\n", - "consciousness of her charming defect, which she neither wished, nor\n", - "could, nor considered it necessary, to correct.\n", - "

\n", - "In the midst of a conversation on political matters Anna Pavlovna\n", - "burst out:\n", - "

\n", - "\"Oh, don't speak to me of Austria. Perhaps I don't understand\n", - "things, but Austria never has wished, and does not wish, for war.\n", - "She is betraying us! Russia alone must save Europe. Our gracious\n", - "sovereign recognizes his high vocation and will be true to it. That is\n", - "the one thing I have faith in! Our good and wonderful sovereign has to\n", - "perform the noblest role on earth, and he is so virtuous and noble\n", - "that God will not forsake him. He will fulfill his vocation and\n", - "crush the hydra of revolution, which has become more terrible than\n", - "ever in the person of this murderer and villain! We alone must\n", - "avenge the blood of the just one.... Whom, I ask you, can we rely\n", - "on?... England with her commercial spirit will not and cannot\n", - "understand the Emperor Alexander's loftiness of soul. She has\n", - "refused to evacuate Malta. She wanted to find, and still seeks, some\n", - "secret motive in our actions. What answer did Novosiltsev get? None.\n", - "The English have not understood and cannot understand the\n", - "self-abnegation of our Emperor who wants nothing for himself, but only\n", - "desires the good of mankind. And what have they promised? Nothing! And\n", - "what little they have promised they will not perform! Prussia has\n", - "always declared that Buonaparte is invincible, and that all Europe\n", - "is powerless before him.... And I don't believe a word that Hardenburg\n", - "says, or Haugwitz either. This famous Prussian neutrality is just a\n", - "trap. I have faith only in God and the lofty destiny of our adored\n", - "monarch. He will save Europe!\"\n", - "

\n", - "She suddenly paused, smiling at her own impetuosity.\n", - "

\n", - "\"I think,\" said the prince with a smile, \"that if you had been\n", - "sent instead of our dear Wintzingerode you would have captured the\n", - "King of Prussia's consent by assault. You are so eloquent. Will you\n", - "give me a cup of tea?\"\n", - "

\n", - "\"In a moment. A propos,\" she added, becoming calm again, \"I am\n", - "expecting two very interesting men tonight, le Vicomte de Mortemart,\n", - "who is connected with the Montmorencys through the Rohans, one of\n", - "the best French families. He is one of the genuine emigres, the good\n", - "ones. And also the Abbe Morio. Do you know that profound thinker? He\n", - "has been received by the Emperor. Had you heard?\"\n", - "

\n", - "\"I shall be delighted to meet them,\" said the prince. \"But tell me,\"\n", - "he added with studied carelessness as if it had only just occurred\n", - "to him, though the question he was about to ask was the chief motive\n", - "of his visit, \"is it true that the Dowager Empress wants Baron Funke\n", - "to be appointed first secretary at Vienna? The baron by all accounts\n", - "is a poor creature.\"\n", - "

\n", - "Prince Vasili wished to obtain this post for his son, but others\n", - "were trying through the Dowager Empress Marya Fedorovna to secure it\n", - "for the baron.\n", - "

\n", - "Anna Pavlovna almost closed her eyes to indicate that neither she\n", - "nor anyone else had a right to criticize what the Empress desired or\n", - "was pleased with.\n", - "

\n", - "\"Baron Funke has been recommended to the Dowager Empress by her\n", - "sister,\" was all she said, in a dry and mournful tone.\n", - "

\n", - "As she named the Empress, Anna Pavlovna's face suddenly assumed an\n", - "expression of profound and sincere devotion and respect mingled with\n", - "sadness, and this occurred every time she mentioned her illustrious\n", - "patroness. She added that Her Majesty had deigned to show Baron\n", - "Funke, and again her face clouded over with sadness.\n", - "

\n", - "The prince was silent and looked indifferent. But, with the\n", - "womanly and courtierlike quickness and tact habitual to her, Anna\n", - "Pavlovna wished both to rebuke him (for daring to speak he had done of\n", - "a man recommended to the Empress) and at the same time to console him,\n", - "so she said:\n", - "

\n", - "\"Now about your family. Do you know that since your daughter came\n", - "out everyone has been enraptured by her? They say she is amazingly\n", - "beautiful.\"\n", - "

\n", - "The prince bowed to signify his respect and gratitude.\n", - "

\n", - "\"I often think,\" she continued after a short pause, drawing nearer\n", - "to the prince and smiling amiably at him as if to show that\n", - "political and social topics were ended and the time had come for\n", - "intimate conversation- \"I often think how unfairly sometimes the\n", - "joys of life are distributed. Why has fate given you two such splendid\n", - "children? I don't speak of Anatole, your youngest. I don't like\n", - "him,\" she added in a tone admitting of no rejoinder and raising her\n", - "eyebrows. \"Two such charming children. And really you appreciate\n", - "them less than anyone, and so you don't deserve to have them.\"\n", - "

\n", - "And she smiled her ecstatic smile.\n", - "

\n", - "\"I can't help it,\" said the prince. \"Lavater would have said I\n", - "lack the bump of paternity.\"\n", - "

\n", - "\"Don't joke; I mean to have a serious talk with you. Do you know I\n", - "am dissatisfied with your younger son? Between ourselves\" (and her\n", - "face assumed its melancholy expression), \"he was mentioned at Her\n", - "Majesty's and you were pitied....\"\n", - "

\n", - "The prince answered nothing, but she looked at him significantly,\n", - "awaiting a reply. He frowned.\n", - "

\n", - "\"What would you have me do?\" he said at last. \"You know I did all\n", - "a father could for their education, and they have both turned out\n", - "fools. Hippolyte is at least a quiet fool, but Anatole is an active\n", - "one. That is the only difference between them.\" He said this smiling\n", - "in a way more natural and animated than usual, so that the wrinkles\n", - "round his mouth very clearly revealed something unexpectedly coarse\n", - "and unpleasant.\n", - "

\n", - "\"And why are children born to such men as you? If you were not a\n", - "father there would be nothing I could reproach you with,\" said Anna\n", - "Pavlovna, looking up pensively.\n", - "

\n", - "\"I am your faithful slave and to you alone I can confess that my\n", - "children are the bane of my life. It is the cross I have to bear. That\n", - "is how I explain it to myself. It can't be helped!\"\n", - "

\n", - "He said no more, but expressed his resignation to cruel fate by a\n", - "gesture. Anna Pavlovna meditated.\n", - "
\n", - "\n", - "\n", - "\n" - ] - } - ], "source": [ "from urllib.request import urlopen\n", "from bs4 import BeautifulSoup\n", "html = urlopen('http://www.pythonscraping.com/pages/warandpeace.html')\n", - "bsObj = BeautifulSoup(html, 'html.parser')\n", - "print(bsObj)" + "bs = BeautifulSoup(html, 'html.parser')\n", + "print(bs)" ] }, { "cell_type": "code", - "execution_count": 6, + "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "from urllib.request import urlopen\n", "from bs4 import BeautifulSoup\n", "html = urlopen('http://www.pythonscraping.com/pages/warandpeace.html')\n", - "bsObj = BeautifulSoup(html, \"html.parser\")" + "bs = BeautifulSoup(html, \"html.parser\")" ] }, { "cell_type": "code", - "execution_count": 7, + "execution_count": 2, "metadata": {}, "outputs": [ { @@ -305,14 +82,14 @@ } ], "source": [ - "nameList = bsObj.findAll('span', {'class':'green'})\n", + "nameList = bs.findAll('span', {'class':'green'})\n", "for name in nameList:\n", " print(name.get_text())" ] }, { "cell_type": "code", - "execution_count": 7, + "execution_count": 3, "metadata": {}, "outputs": [ { @@ -324,7 +101,7 @@ } ], "source": [ - "titles = bsObj.find_all(['h1', 'h2','h3','h4','h5','h6'])\n", + "titles = bs.find_all(['h1', 'h2','h3','h4','h5','h6'])\n", "print([title for title in titles])\n" ] }, @@ -414,13 +191,13 @@ } ], "source": [ - "allText = bsObj.find_all('span', {'class':{'green', 'red'}})\n", + "allText = bs.find_all('span', {'class':{'green', 'red'}})\n", "print([text for text in allText])" ] }, { "cell_type": "code", - "execution_count": 21, + "execution_count": 4, "metadata": {}, "outputs": [ { @@ -432,13 +209,13 @@ } ], "source": [ - "nameList = bsObj.find_all(text='the prince')\n", + "nameList = bs.find_all(text='the prince')\n", "print(len(nameList))" ] }, { "cell_type": "code", - "execution_count": 24, + "execution_count": 5, "metadata": {}, "outputs": [ { @@ -450,13 +227,13 @@ } ], "source": [ - "allText = bsObj.find_all(id='title', class_='text')\n", + "title = bs.find_all(id='title', class_='text')\n", "print([text for text in allText])" ] }, { "cell_type": "code", - "execution_count": 25, + "execution_count": 6, "metadata": {}, "outputs": [ { @@ -540,9 +317,9 @@ "from bs4 import BeautifulSoup\n", "\n", "html = urlopen('http://www.pythonscraping.com/pages/page3.html')\n", - "bsObj = BeautifulSoup(html, 'html.parser')\n", + "bs = BeautifulSoup(html, 'html.parser')\n", "\n", - "for child in bsObj.find('table',{'id':'giftList'}).children:\n", + "for child in bs.find('table',{'id':'giftList'}).children:\n", " print(child)" ] }, @@ -619,16 +396,17 @@ "source": [ "from urllib.request import urlopen\n", "from bs4 import BeautifulSoup\n", + "\n", "html = urlopen('http://www.pythonscraping.com/pages/page3.html')\n", - "bsObj = BeautifulSoup(html, 'html.parser')\n", + "bs = BeautifulSoup(html, 'html.parser')\n", "\n", - "for sibling in bsObj.find('table', {'id':'giftList'}).tr.next_siblings:\n", + "for sibling in bs.find('table', {'id':'giftList'}).tr.next_siblings:\n", " print(sibling) " ] }, { "cell_type": "code", - "execution_count": 1, + "execution_count": 7, "metadata": {}, "outputs": [ { @@ -646,13 +424,15 @@ "from bs4 import BeautifulSoup\n", "\n", "html = urlopen('http://www.pythonscraping.com/pages/page3.html')\n", - "bsObj = BeautifulSoup(html, 'html.parser')\n", - "print(bsObj.find('img',{'src':'../img/gifts/img1.jpg'}).parent.previous_sibling.get_text())" + "bs = BeautifulSoup(html, 'html.parser')\n", + "print(bs.find('img',\n", + " {'src':'../img/gifts/img1.jpg'})\n", + " .parent.previous_sibling.get_text())" ] }, { "cell_type": "code", - "execution_count": 3, + "execution_count": 8, "metadata": {}, "outputs": [ { @@ -673,8 +453,8 @@ "import re\n", "\n", "html = urlopen('http://www.pythonscraping.com/pages/page3.html')\n", - "bsObj = BeautifulSoup(html, 'html.parser')\n", - "images = bsObj.find_all('img', {'src':re.compile('\\.\\.\\/img\\/gifts/img.*\\.jpg')})\n", + "bs = BeautifulSoup(html, 'html.parser')\n", + "images = bs.find_all('img', {'src':re.compile('\\.\\.\\/img\\/gifts/img.*\\.jpg')})\n", "for image in images: \n", " print(image['src'])" ] @@ -742,15 +522,53 @@ } ], "source": [ - "bsObj.find_all(lambda tag: len(tag.attrs) == 2)" + "bs.find_all(lambda tag: len(tag.attrs) == 2)" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[Or maybe he's only resting?]" + ] + }, + "execution_count": 9, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "bs.find_all(lambda tag: tag.get_text() == 'Or maybe he\\'s only resting?')" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[\"Or maybe he's only resting?\"]" + ] + }, + "execution_count": 10, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "bs.find_all('', text='Or maybe he\\'s only resting?')" ] }, { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [] } diff --git a/v2/Chapter03-web-crawlers.ipynb b/v2/Chapter03-web-crawlers.ipynb index 6ced823..53d202b 100644 --- a/v2/Chapter03-web-crawlers.ipynb +++ b/v2/Chapter03-web-crawlers.ipynb @@ -852,8 +852,8 @@ "from bs4 import BeautifulSoup \n", "\n", "html = urlopen('http://en.wikipedia.org/wiki/Kevin_Bacon')\n", - "bsObj = BeautifulSoup(html, 'html.parser')\n", - "for link in bsObj.find_all('a'):\n", + "bs = BeautifulSoup(html, 'html.parser')\n", + "for link in bs.find_all('a'):\n", " if 'href' in link.attrs:\n", " print(link.attrs['href'])" ] @@ -1298,8 +1298,9 @@ "import re\n", "\n", "html = urlopen('http://en.wikipedia.org/wiki/Kevin_Bacon')\n", - "bsObj = BeautifulSoup(html, 'html.parser')\n", - "for link in bsObj.find('div', {'id':'bodyContent'}).find_all('a', href=re.compile('^(/wiki/)((?!:).)*$')):\n", + "bs = BeautifulSoup(html, 'html.parser')\n", + "for link in bs.find('div', {'id':'bodyContent'}).find_all(\n", + " 'a', href=re.compile('^(/wiki/)((?!:).)*$')):\n", " if 'href' in link.attrs:\n", " print(link.attrs['href'])" ] @@ -1320,14 +1321,12 @@ "name": "stdout", "output_type": "stream", "text": [ - "/wiki/Philip_Seymour_Hoffman\n", - "/wiki/Jeremy_Renner\n", - "/wiki/Tom_Hiddleston\n", - "/wiki/Joanna_Hogg\n", - "/wiki/Casualty_(TV_series)\n", - "/wiki/Roath_Lock\n", - "/wiki/Sony_Pictures_Television\n", - "/wiki/Animax_Spain\n" + "/wiki/Screen_Actors_Guild_Award_for_Outstanding_Performance_by_a_Cast_in_a_Motion_Picture\n", + "/wiki/Paul_Barber_(actor)\n", + "/wiki/Christine_Baranski\n", + "/wiki/Brendan_Fraser\n", + "/wiki/Derek_Jacobi\n", + "/wiki/Shea_Whigham\n" ] }, { @@ -1337,15 +1336,15 @@ "traceback": [ "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", "\u001b[0;31mKeyboardInterrupt\u001b[0m Traceback (most recent call last)", - "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[1;32m 14\u001b[0m \u001b[0mnewArticle\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mlinks\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mrandom\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mrandint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;36m0\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mlen\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mlinks\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m-\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mattrs\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m'href'\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 15\u001b[0m \u001b[0mprint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mnewArticle\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 16\u001b[0;31m \u001b[0mlinks\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mgetLinks\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mnewArticle\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m", - "\u001b[0;32m\u001b[0m in \u001b[0;36mgetLinks\u001b[0;34m(articleUrl)\u001b[0m\n\u001b[1;32m 8\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0mgetLinks\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0marticleUrl\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 9\u001b[0m \u001b[0mhtml\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0murlopen\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'http://en.wikipedia.org{}'\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mformat\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0marticleUrl\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 10\u001b[0;31m \u001b[0mbsObj\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mBeautifulSoup\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mhtml\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m'html.parser'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 11\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mbsObj\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mfind\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'div'\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m{\u001b[0m\u001b[0;34m'id'\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m'bodyContent'\u001b[0m\u001b[0;34m}\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mfind_all\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'a'\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mhref\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mre\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mcompile\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'^(/wiki/)((?!:).)*$'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 12\u001b[0m \u001b[0mlinks\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mgetLinks\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'/wiki/Kevin_Bacon'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/bs4/__init__.py\u001b[0m in \u001b[0;36m__init__\u001b[0;34m(self, markup, features, builder, parse_only, from_encoding, exclude_encodings, **kwargs)\u001b[0m\n\u001b[1;32m 226\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mreset\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 227\u001b[0m \u001b[0;32mtry\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 228\u001b[0;31m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_feed\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 229\u001b[0m \u001b[0;32mbreak\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 230\u001b[0m \u001b[0;32mexcept\u001b[0m \u001b[0mParserRejectedMarkup\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/bs4/__init__.py\u001b[0m in \u001b[0;36m_feed\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 287\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mbuilder\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mreset\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 288\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 289\u001b[0;31m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mbuilder\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mfeed\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mmarkup\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 290\u001b[0m \u001b[0;31m# Close out any unfinished strings and close all the open tags.\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 291\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mendData\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/bs4/builder/_htmlparser.py\u001b[0m in \u001b[0;36mfeed\u001b[0;34m(self, markup)\u001b[0m\n\u001b[1;32m 213\u001b[0m \u001b[0mparser\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msoup\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msoup\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 214\u001b[0m \u001b[0;32mtry\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 215\u001b[0;31m \u001b[0mparser\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mfeed\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mmarkup\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 216\u001b[0m \u001b[0;32mexcept\u001b[0m \u001b[0mHTMLParseError\u001b[0m \u001b[0;32mas\u001b[0m \u001b[0me\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 217\u001b[0m warnings.warn(RuntimeWarning(\n", - "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/html/parser.py\u001b[0m in \u001b[0;36mfeed\u001b[0;34m(self, data)\u001b[0m\n\u001b[1;32m 109\u001b[0m \"\"\"\n\u001b[1;32m 110\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mrawdata\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mrawdata\u001b[0m \u001b[0;34m+\u001b[0m \u001b[0mdata\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 111\u001b[0;31m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mgoahead\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;36m0\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 112\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 113\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0mclose\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/html/parser.py\u001b[0m in \u001b[0;36mgoahead\u001b[0;34m(self, end)\u001b[0m\n\u001b[1;32m 169\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mstartswith\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'<'\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mi\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 170\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mstarttagopen\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mmatch\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mrawdata\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mi\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0;31m# < + letter\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 171\u001b[0;31m \u001b[0mk\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mparse_starttag\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mi\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 172\u001b[0m \u001b[0;32melif\u001b[0m \u001b[0mstartswith\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\" 345\u001b[0;31m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mhandle_starttag\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mtag\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mattrs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 346\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mtag\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mCDATA_CONTENT_ELEMENTS\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 347\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mset_cdata_mode\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mtag\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/bs4/builder/_htmlparser.py\u001b[0m in \u001b[0;36mhandle_starttag\u001b[0;34m(self, name, attrs, handle_empty_element)\u001b[0m\n\u001b[1;32m 79\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0mhandle_starttag\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mname\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mattrs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mhandle_empty_element\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;32mTrue\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 80\u001b[0m \u001b[0;31m# XXX namespace\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 81\u001b[0;31m \u001b[0mattr_dict\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m{\u001b[0m\u001b[0;34m}\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 82\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0mkey\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mvalue\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mattrs\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 83\u001b[0m \u001b[0;31m# Change None attribute values to the empty string\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[1;32m 15\u001b[0m \u001b[0mnewArticle\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mlinks\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mrandom\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mrandint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;36m0\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mlen\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mlinks\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m-\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mattrs\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m'href'\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 16\u001b[0m \u001b[0mprint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mnewArticle\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 17\u001b[0;31m \u001b[0mlinks\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mgetLinks\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mnewArticle\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m", + "\u001b[0;32m\u001b[0m in \u001b[0;36mgetLinks\u001b[0;34m(articleUrl)\u001b[0m\n\u001b[1;32m 8\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0mgetLinks\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0marticleUrl\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 9\u001b[0m \u001b[0mhtml\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0murlopen\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'http://en.wikipedia.org{}'\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mformat\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0marticleUrl\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 10\u001b[0;31m \u001b[0mbs\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mBeautifulSoup\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mhtml\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m'html.parser'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 11\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mbs\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mfind\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'div'\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m{\u001b[0m\u001b[0;34m'id'\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m'bodyContent'\u001b[0m\u001b[0;34m}\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mfind_all\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'a'\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mhref\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mre\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mcompile\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'^(/wiki/)((?!:).)*$'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 12\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/bs4/__init__.py\u001b[0m in \u001b[0;36m__init__\u001b[0;34m(self, markup, features, builder, parse_only, from_encoding, exclude_encodings, **kwargs)\u001b[0m\n\u001b[1;32m 189\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 190\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mhasattr\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mmarkup\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m'read'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0;31m# It's a file-type object.\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 191\u001b[0;31m \u001b[0mmarkup\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mmarkup\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mread\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 192\u001b[0m elif len(markup) <= 256 and (\n\u001b[1;32m 193\u001b[0m \u001b[0;34m(\u001b[0m\u001b[0misinstance\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mmarkup\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mbytes\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;32mand\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0;34mb'<'\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mmarkup\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/http/client.py\u001b[0m in \u001b[0;36mread\u001b[0;34m(self, amt)\u001b[0m\n\u001b[1;32m 460\u001b[0m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 461\u001b[0m \u001b[0;32mtry\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 462\u001b[0;31m \u001b[0ms\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_safe_read\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mlength\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 463\u001b[0m \u001b[0;32mexcept\u001b[0m \u001b[0mIncompleteRead\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 464\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_close_conn\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/http/client.py\u001b[0m in \u001b[0;36m_safe_read\u001b[0;34m(self, amt)\u001b[0m\n\u001b[1;32m 610\u001b[0m \u001b[0ms\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m[\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 611\u001b[0m \u001b[0;32mwhile\u001b[0m \u001b[0mamt\u001b[0m \u001b[0;34m>\u001b[0m \u001b[0;36m0\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 612\u001b[0;31m \u001b[0mchunk\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mfp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mread\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mmin\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mamt\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mMAXAMOUNT\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 613\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0mchunk\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 614\u001b[0m \u001b[0;32mraise\u001b[0m \u001b[0mIncompleteRead\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34mb''\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mjoin\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0ms\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mamt\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/socket.py\u001b[0m in \u001b[0;36mreadinto\u001b[0;34m(self, b)\u001b[0m\n\u001b[1;32m 584\u001b[0m \u001b[0;32mwhile\u001b[0m \u001b[0;32mTrue\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 585\u001b[0m \u001b[0;32mtry\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 586\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_sock\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mrecv_into\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mb\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 587\u001b[0m \u001b[0;32mexcept\u001b[0m \u001b[0mtimeout\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 588\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_timeout_occurred\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;32mTrue\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/ssl.py\u001b[0m in \u001b[0;36mrecv_into\u001b[0;34m(self, buffer, nbytes, flags)\u001b[0m\n\u001b[1;32m 1000\u001b[0m \u001b[0;34m\"non-zero flags not allowed in calls to recv_into() on %s\"\u001b[0m \u001b[0;34m%\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1001\u001b[0m self.__class__)\n\u001b[0;32m-> 1002\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mread\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mnbytes\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mbuffer\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 1003\u001b[0m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1004\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0msocket\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mrecv_into\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mbuffer\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mnbytes\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mflags\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/ssl.py\u001b[0m in \u001b[0;36mread\u001b[0;34m(self, len, buffer)\u001b[0m\n\u001b[1;32m 863\u001b[0m \u001b[0;32mraise\u001b[0m \u001b[0mValueError\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"Read on closed or unwrapped SSL socket.\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 864\u001b[0m \u001b[0;32mtry\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 865\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_sslobj\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mread\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mlen\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mbuffer\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 866\u001b[0m \u001b[0;32mexcept\u001b[0m \u001b[0mSSLError\u001b[0m \u001b[0;32mas\u001b[0m \u001b[0mx\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 867\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mx\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m0\u001b[0m\u001b[0;34m]\u001b[0m \u001b[0;34m==\u001b[0m \u001b[0mSSL_ERROR_EOF\u001b[0m \u001b[0;32mand\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msuppress_ragged_eofs\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/ssl.py\u001b[0m in \u001b[0;36mread\u001b[0;34m(self, len, buffer)\u001b[0m\n\u001b[1;32m 623\u001b[0m \"\"\"\n\u001b[1;32m 624\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mbuffer\u001b[0m \u001b[0;32mis\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0;32mNone\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 625\u001b[0;31m \u001b[0mv\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_sslobj\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mread\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mlen\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mbuffer\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 626\u001b[0m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 627\u001b[0m \u001b[0mv\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_sslobj\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mread\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mlen\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;31mKeyboardInterrupt\u001b[0m: " ] } @@ -1360,8 +1359,9 @@ "random.seed(datetime.datetime.now())\n", "def getLinks(articleUrl):\n", " html = urlopen('http://en.wikipedia.org{}'.format(articleUrl))\n", - " bsObj = BeautifulSoup(html, 'html.parser')\n", - " return bsObj.find('div', {'id':'bodyContent'}).find_all('a', href=re.compile('^(/wiki/)((?!:).)*$'))\n", + " bs = BeautifulSoup(html, 'html.parser')\n", + " return bs.find('div', {'id':'bodyContent'}).find_all('a', href=re.compile('^(/wiki/)((?!:).)*$'))\n", + "\n", "links = getLinks('/wiki/Kevin_Bacon')\n", "while len(links) > 0:\n", " newArticle = links[random.randint(0, len(links)-1)].attrs['href']\n", @@ -1388,9 +1388,7 @@ "/wiki/Wikipedia\n", "/wiki/Wikipedia:Protection_policy#semi\n", "/wiki/Wikipedia:Requests_for_page_protection\n", - "/wiki/Wikipedia:Requests_for_permissions\n", - "/wiki/Wikipedia:Requesting_copyright_permission\n", - "/wiki/Wikipedia:User_access_levels\n" + "/wiki/Wikipedia:Requests_for_permissions\n" ] }, { @@ -1400,20 +1398,30 @@ "traceback": [ "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", "\u001b[0;31mKeyboardInterrupt\u001b[0m Traceback (most recent call last)", - "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[1;32m 16\u001b[0m \u001b[0mpages\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0madd\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mnewPage\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 17\u001b[0m \u001b[0mgetLinks\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mnewPage\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 18\u001b[0;31m \u001b[0mgetLinks\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m", - "\u001b[0;32m\u001b[0m in \u001b[0;36mgetLinks\u001b[0;34m(pageUrl)\u001b[0m\n\u001b[1;32m 15\u001b[0m \u001b[0mprint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mnewPage\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 16\u001b[0m \u001b[0mpages\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0madd\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mnewPage\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 17\u001b[0;31m \u001b[0mgetLinks\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mnewPage\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 18\u001b[0m \u001b[0mgetLinks\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m\u001b[0m in \u001b[0;36mgetLinks\u001b[0;34m(pageUrl)\u001b[0m\n\u001b[1;32m 15\u001b[0m \u001b[0mprint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mnewPage\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 16\u001b[0m \u001b[0mpages\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0madd\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mnewPage\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 17\u001b[0;31m \u001b[0mgetLinks\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mnewPage\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 18\u001b[0m \u001b[0mgetLinks\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m\u001b[0m in \u001b[0;36mgetLinks\u001b[0;34m(pageUrl)\u001b[0m\n\u001b[1;32m 15\u001b[0m \u001b[0mprint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mnewPage\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 16\u001b[0m \u001b[0mpages\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0madd\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mnewPage\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 17\u001b[0;31m \u001b[0mgetLinks\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mnewPage\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 18\u001b[0m \u001b[0mgetLinks\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m\u001b[0m in \u001b[0;36mgetLinks\u001b[0;34m(pageUrl)\u001b[0m\n\u001b[1;32m 15\u001b[0m \u001b[0mprint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mnewPage\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 16\u001b[0m \u001b[0mpages\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0madd\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mnewPage\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 17\u001b[0;31m \u001b[0mgetLinks\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mnewPage\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 18\u001b[0m \u001b[0mgetLinks\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m\u001b[0m in \u001b[0;36mgetLinks\u001b[0;34m(pageUrl)\u001b[0m\n\u001b[1;32m 15\u001b[0m \u001b[0mprint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mnewPage\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 16\u001b[0m \u001b[0mpages\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0madd\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mnewPage\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 17\u001b[0;31m \u001b[0mgetLinks\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mnewPage\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 18\u001b[0m \u001b[0mgetLinks\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m\u001b[0m in \u001b[0;36mgetLinks\u001b[0;34m(pageUrl)\u001b[0m\n\u001b[1;32m 15\u001b[0m \u001b[0mprint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mnewPage\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 16\u001b[0m \u001b[0mpages\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0madd\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mnewPage\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 17\u001b[0;31m \u001b[0mgetLinks\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mnewPage\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 18\u001b[0m \u001b[0mgetLinks\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m\u001b[0m in \u001b[0;36mgetLinks\u001b[0;34m(pageUrl)\u001b[0m\n\u001b[1;32m 7\u001b[0m \u001b[0;32mglobal\u001b[0m \u001b[0mpages\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 8\u001b[0m \u001b[0mhtml\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0murlopen\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'http://en.wikipedia.org{}'\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mformat\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mpageUrl\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 9\u001b[0;31m \u001b[0mbsObj\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mBeautifulSoup\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mhtml\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m'html.parser'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 10\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0mlink\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mbsObj\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mfind_all\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'a'\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mhref\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mre\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mcompile\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'^(/wiki/)'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 11\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0;34m'href'\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mlink\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mattrs\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/bs4/__init__.py\u001b[0m in \u001b[0;36m__init__\u001b[0;34m(self, markup, features, builder, parse_only, from_encoding, exclude_encodings, **kwargs)\u001b[0m\n\u001b[1;32m 226\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mreset\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 227\u001b[0m \u001b[0;32mtry\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 228\u001b[0;31m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_feed\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 229\u001b[0m \u001b[0;32mbreak\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 230\u001b[0m \u001b[0;32mexcept\u001b[0m \u001b[0mParserRejectedMarkup\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/bs4/__init__.py\u001b[0m in \u001b[0;36m_feed\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 287\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mbuilder\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mreset\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 288\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 289\u001b[0;31m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mbuilder\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mfeed\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mmarkup\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 290\u001b[0m \u001b[0;31m# Close out any unfinished strings and close all the open tags.\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 291\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mendData\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/bs4/builder/_htmlparser.py\u001b[0m in \u001b[0;36mfeed\u001b[0;34m(self, markup)\u001b[0m\n\u001b[1;32m 213\u001b[0m \u001b[0mparser\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msoup\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msoup\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 214\u001b[0m \u001b[0;32mtry\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 215\u001b[0;31m \u001b[0mparser\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mfeed\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mmarkup\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 216\u001b[0m \u001b[0;32mexcept\u001b[0m \u001b[0mHTMLParseError\u001b[0m \u001b[0;32mas\u001b[0m \u001b[0me\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 217\u001b[0m warnings.warn(RuntimeWarning(\n", - "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/html/parser.py\u001b[0m in \u001b[0;36mfeed\u001b[0;34m(self, data)\u001b[0m\n\u001b[1;32m 109\u001b[0m \"\"\"\n\u001b[1;32m 110\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mrawdata\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mrawdata\u001b[0m \u001b[0;34m+\u001b[0m \u001b[0mdata\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 111\u001b[0;31m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mgoahead\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;36m0\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 112\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 113\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0mclose\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/html/parser.py\u001b[0m in \u001b[0;36mgoahead\u001b[0;34m(self, end)\u001b[0m\n\u001b[1;32m 197\u001b[0m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 198\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mhandle_data\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mrawdata\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mi\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0mk\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 199\u001b[0;31m \u001b[0mi\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mupdatepos\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mi\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mk\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 200\u001b[0m \u001b[0;32melif\u001b[0m \u001b[0mstartswith\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"&#\"\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mi\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 201\u001b[0m \u001b[0mmatch\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mcharref\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mmatch\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mrawdata\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mi\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/_markupbase.py\u001b[0m in \u001b[0;36mupdatepos\u001b[0;34m(self, i, j)\u001b[0m\n\u001b[1;32m 50\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mj\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 51\u001b[0m \u001b[0mrawdata\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mrawdata\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 52\u001b[0;31m \u001b[0mnlines\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mrawdata\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mcount\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"\\n\"\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mi\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mj\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 53\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mnlines\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 54\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mlineno\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mlineno\u001b[0m \u001b[0;34m+\u001b[0m \u001b[0mnlines\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[1;32m 16\u001b[0m \u001b[0mpages\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0madd\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mnewPage\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 17\u001b[0m \u001b[0mgetLinks\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mnewPage\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 18\u001b[0;31m \u001b[0mgetLinks\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m''\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m", + "\u001b[0;32m\u001b[0m in \u001b[0;36mgetLinks\u001b[0;34m(pageUrl)\u001b[0m\n\u001b[1;32m 15\u001b[0m \u001b[0mprint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mnewPage\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 16\u001b[0m \u001b[0mpages\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0madd\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mnewPage\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 17\u001b[0;31m \u001b[0mgetLinks\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mnewPage\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 18\u001b[0m \u001b[0mgetLinks\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m''\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m\u001b[0m in \u001b[0;36mgetLinks\u001b[0;34m(pageUrl)\u001b[0m\n\u001b[1;32m 15\u001b[0m \u001b[0mprint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mnewPage\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 16\u001b[0m \u001b[0mpages\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0madd\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mnewPage\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 17\u001b[0;31m \u001b[0mgetLinks\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mnewPage\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 18\u001b[0m \u001b[0mgetLinks\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m''\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m\u001b[0m in \u001b[0;36mgetLinks\u001b[0;34m(pageUrl)\u001b[0m\n\u001b[1;32m 15\u001b[0m \u001b[0mprint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mnewPage\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 16\u001b[0m \u001b[0mpages\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0madd\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mnewPage\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 17\u001b[0;31m \u001b[0mgetLinks\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mnewPage\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 18\u001b[0m \u001b[0mgetLinks\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m''\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m\u001b[0m in \u001b[0;36mgetLinks\u001b[0;34m(pageUrl)\u001b[0m\n\u001b[1;32m 15\u001b[0m \u001b[0mprint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mnewPage\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 16\u001b[0m \u001b[0mpages\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0madd\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mnewPage\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 17\u001b[0;31m \u001b[0mgetLinks\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mnewPage\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 18\u001b[0m \u001b[0mgetLinks\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m''\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m\u001b[0m in \u001b[0;36mgetLinks\u001b[0;34m(pageUrl)\u001b[0m\n\u001b[1;32m 6\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0mgetLinks\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mpageUrl\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 7\u001b[0m \u001b[0;32mglobal\u001b[0m \u001b[0mpages\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 8\u001b[0;31m \u001b[0mhtml\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0murlopen\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'http://en.wikipedia.org{}'\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mformat\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mpageUrl\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 9\u001b[0m \u001b[0mbs\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mBeautifulSoup\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mhtml\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m'html.parser'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 10\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0mlink\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mbs\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mfind_all\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'a'\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mhref\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mre\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mcompile\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'^(/wiki/)'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/urllib/request.py\u001b[0m in \u001b[0;36murlopen\u001b[0;34m(url, data, timeout, cafile, capath, cadefault, context)\u001b[0m\n\u001b[1;32m 221\u001b[0m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 222\u001b[0m \u001b[0mopener\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0m_opener\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 223\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mopener\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mopen\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0murl\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mdata\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mtimeout\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 224\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 225\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0minstall_opener\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mopener\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/urllib/request.py\u001b[0m in \u001b[0;36mopen\u001b[0;34m(self, fullurl, data, timeout)\u001b[0m\n\u001b[1;32m 530\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0mprocessor\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mprocess_response\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mget\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mprotocol\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m[\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 531\u001b[0m \u001b[0mmeth\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mgetattr\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mprocessor\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mmeth_name\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 532\u001b[0;31m \u001b[0mresponse\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mmeth\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mreq\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mresponse\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 533\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 534\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mresponse\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/urllib/request.py\u001b[0m in \u001b[0;36mhttp_response\u001b[0;34m(self, request, response)\u001b[0m\n\u001b[1;32m 640\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0;34m(\u001b[0m\u001b[0;36m200\u001b[0m \u001b[0;34m<=\u001b[0m \u001b[0mcode\u001b[0m \u001b[0;34m<\u001b[0m \u001b[0;36m300\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 641\u001b[0m response = self.parent.error(\n\u001b[0;32m--> 642\u001b[0;31m 'http', request, response, code, msg, hdrs)\n\u001b[0m\u001b[1;32m 643\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 644\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mresponse\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/urllib/request.py\u001b[0m in \u001b[0;36merror\u001b[0;34m(self, proto, *args)\u001b[0m\n\u001b[1;32m 562\u001b[0m \u001b[0mhttp_err\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;36m0\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 563\u001b[0m \u001b[0margs\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m(\u001b[0m\u001b[0mdict\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mproto\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mmeth_name\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;34m+\u001b[0m \u001b[0margs\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 564\u001b[0;31m \u001b[0mresult\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_call_chain\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 565\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mresult\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 566\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mresult\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/urllib/request.py\u001b[0m in \u001b[0;36m_call_chain\u001b[0;34m(self, chain, kind, meth_name, *args)\u001b[0m\n\u001b[1;32m 502\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0mhandler\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mhandlers\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 503\u001b[0m \u001b[0mfunc\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mgetattr\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mhandler\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mmeth_name\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 504\u001b[0;31m \u001b[0mresult\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mfunc\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 505\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mresult\u001b[0m \u001b[0;32mis\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0;32mNone\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 506\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mresult\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/urllib/request.py\u001b[0m in \u001b[0;36mhttp_error_302\u001b[0;34m(self, req, fp, code, msg, headers)\u001b[0m\n\u001b[1;32m 754\u001b[0m \u001b[0mfp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mclose\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 755\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 756\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mparent\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mopen\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mnew\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mtimeout\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mreq\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mtimeout\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 757\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 758\u001b[0m \u001b[0mhttp_error_301\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mhttp_error_303\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mhttp_error_307\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mhttp_error_302\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/urllib/request.py\u001b[0m in \u001b[0;36mopen\u001b[0;34m(self, fullurl, data, timeout)\u001b[0m\n\u001b[1;32m 524\u001b[0m \u001b[0mreq\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mmeth\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mreq\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 525\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 526\u001b[0;31m \u001b[0mresponse\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_open\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mreq\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mdata\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 527\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 528\u001b[0m \u001b[0;31m# post-process response\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/urllib/request.py\u001b[0m in \u001b[0;36m_open\u001b[0;34m(self, req, data)\u001b[0m\n\u001b[1;32m 542\u001b[0m \u001b[0mprotocol\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mreq\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mtype\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 543\u001b[0m result = self._call_chain(self.handle_open, protocol, protocol +\n\u001b[0;32m--> 544\u001b[0;31m '_open', req)\n\u001b[0m\u001b[1;32m 545\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mresult\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 546\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mresult\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/urllib/request.py\u001b[0m in \u001b[0;36m_call_chain\u001b[0;34m(self, chain, kind, meth_name, *args)\u001b[0m\n\u001b[1;32m 502\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0mhandler\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mhandlers\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 503\u001b[0m \u001b[0mfunc\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mgetattr\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mhandler\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mmeth_name\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 504\u001b[0;31m \u001b[0mresult\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mfunc\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 505\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mresult\u001b[0m \u001b[0;32mis\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0;32mNone\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 506\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mresult\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/urllib/request.py\u001b[0m in \u001b[0;36mhttps_open\u001b[0;34m(self, req)\u001b[0m\n\u001b[1;32m 1359\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0mhttps_open\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mreq\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1360\u001b[0m return self.do_open(http.client.HTTPSConnection, req,\n\u001b[0;32m-> 1361\u001b[0;31m context=self._context, check_hostname=self._check_hostname)\n\u001b[0m\u001b[1;32m 1362\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1363\u001b[0m \u001b[0mhttps_request\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mAbstractHTTPHandler\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mdo_request_\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/urllib/request.py\u001b[0m in \u001b[0;36mdo_open\u001b[0;34m(self, http_class, req, **http_conn_args)\u001b[0m\n\u001b[1;32m 1319\u001b[0m \u001b[0;32mexcept\u001b[0m \u001b[0mOSError\u001b[0m \u001b[0;32mas\u001b[0m \u001b[0merr\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0;31m# timeout error\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1320\u001b[0m \u001b[0;32mraise\u001b[0m \u001b[0mURLError\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0merr\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 1321\u001b[0;31m \u001b[0mr\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mh\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mgetresponse\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 1322\u001b[0m \u001b[0;32mexcept\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1323\u001b[0m \u001b[0mh\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mclose\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/http/client.py\u001b[0m in \u001b[0;36mgetresponse\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 1329\u001b[0m \u001b[0;32mtry\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1330\u001b[0m \u001b[0;32mtry\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 1331\u001b[0;31m \u001b[0mresponse\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mbegin\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 1332\u001b[0m \u001b[0;32mexcept\u001b[0m \u001b[0mConnectionError\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1333\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mclose\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/http/client.py\u001b[0m in \u001b[0;36mbegin\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 295\u001b[0m \u001b[0;31m# read until we get a non-100 response\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 296\u001b[0m \u001b[0;32mwhile\u001b[0m \u001b[0;32mTrue\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 297\u001b[0;31m \u001b[0mversion\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mstatus\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mreason\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_read_status\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 298\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mstatus\u001b[0m \u001b[0;34m!=\u001b[0m \u001b[0mCONTINUE\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 299\u001b[0m \u001b[0;32mbreak\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/http/client.py\u001b[0m in \u001b[0;36m_read_status\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 256\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 257\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0m_read_status\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 258\u001b[0;31m \u001b[0mline\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mstr\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mfp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mreadline\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0m_MAXLINE\u001b[0m \u001b[0;34m+\u001b[0m \u001b[0;36m1\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m\"iso-8859-1\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 259\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mlen\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mline\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;34m>\u001b[0m \u001b[0m_MAXLINE\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 260\u001b[0m \u001b[0;32mraise\u001b[0m \u001b[0mLineTooLong\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"status line\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/socket.py\u001b[0m in \u001b[0;36mreadinto\u001b[0;34m(self, b)\u001b[0m\n\u001b[1;32m 584\u001b[0m \u001b[0;32mwhile\u001b[0m \u001b[0;32mTrue\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 585\u001b[0m \u001b[0;32mtry\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 586\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_sock\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mrecv_into\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mb\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 587\u001b[0m \u001b[0;32mexcept\u001b[0m \u001b[0mtimeout\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 588\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_timeout_occurred\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;32mTrue\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/ssl.py\u001b[0m in \u001b[0;36mrecv_into\u001b[0;34m(self, buffer, nbytes, flags)\u001b[0m\n\u001b[1;32m 1000\u001b[0m \u001b[0;34m\"non-zero flags not allowed in calls to recv_into() on %s\"\u001b[0m \u001b[0;34m%\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1001\u001b[0m self.__class__)\n\u001b[0;32m-> 1002\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mread\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mnbytes\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mbuffer\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 1003\u001b[0m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1004\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0msocket\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mrecv_into\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mbuffer\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mnbytes\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mflags\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/ssl.py\u001b[0m in \u001b[0;36mread\u001b[0;34m(self, len, buffer)\u001b[0m\n\u001b[1;32m 863\u001b[0m \u001b[0;32mraise\u001b[0m \u001b[0mValueError\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"Read on closed or unwrapped SSL socket.\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 864\u001b[0m \u001b[0;32mtry\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 865\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_sslobj\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mread\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mlen\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mbuffer\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 866\u001b[0m \u001b[0;32mexcept\u001b[0m \u001b[0mSSLError\u001b[0m \u001b[0;32mas\u001b[0m \u001b[0mx\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 867\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mx\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m0\u001b[0m\u001b[0;34m]\u001b[0m \u001b[0;34m==\u001b[0m \u001b[0mSSL_ERROR_EOF\u001b[0m \u001b[0;32mand\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msuppress_ragged_eofs\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/ssl.py\u001b[0m in \u001b[0;36mread\u001b[0;34m(self, len, buffer)\u001b[0m\n\u001b[1;32m 623\u001b[0m \"\"\"\n\u001b[1;32m 624\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mbuffer\u001b[0m \u001b[0;32mis\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0;32mNone\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 625\u001b[0;31m \u001b[0mv\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_sslobj\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mread\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mlen\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mbuffer\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 626\u001b[0m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 627\u001b[0m \u001b[0mv\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_sslobj\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mread\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mlen\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;31mKeyboardInterrupt\u001b[0m: " ] } @@ -1427,8 +1435,8 @@ "def getLinks(pageUrl):\n", " global pages\n", " html = urlopen('http://en.wikipedia.org{}'.format(pageUrl))\n", - " bsObj = BeautifulSoup(html, 'html.parser')\n", - " for link in bsObj.find_all('a', href=re.compile('^(/wiki/)')):\n", + " bs = BeautifulSoup(html, 'html.parser')\n", + " for link in bs.find_all('a', href=re.compile('^(/wiki/)')):\n", " if 'href' in link.attrs:\n", " if link.attrs['href'] not in pages:\n", " #We have encountered a new page\n", @@ -1534,15 +1542,15 @@ "def getLinks(pageUrl):\n", " global pages\n", " html = urlopen('http://en.wikipedia.org{}'.format(pageUrl))\n", - " bsObj = BeautifulSoup(html, 'html.parser')\n", + " bs = BeautifulSoup(html, 'html.parser')\n", " try:\n", - " print(bsObj.h1.get_text())\n", - " print(bsObj.find(id ='mw-content-text').find_all('p')[0])\n", - " print(bsObj.find(id='ca-edit').find('span').find('a').attrs['href'])\n", + " print(bs.h1.get_text())\n", + " print(bs.find(id ='mw-content-text').find_all('p')[0])\n", + " print(bs.find(id='ca-edit').find('span').find('a').attrs['href'])\n", " except AttributeError:\n", - " print('This page is missing something! No worries, we will continue!')\n", + " print('This page is missing something! Continuing.')\n", " \n", - " for link in bsObj.find_all('a', href=re.compile('^(/wiki/)')):\n", + " for link in bs.find_all('a', href=re.compile('^(/wiki/)')):\n", " if 'href' in link.attrs:\n", " if link.attrs['href'] not in pages:\n", " #We have encountered a new page\n", @@ -1565,21 +1573,14 @@ }, { "cell_type": "code", - "execution_count": 16, + "execution_count": 6, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "Random external link is: http://twitter.com/oreillymedia\n", - "Random external link is: https://t.co/4JOnrjTQU7\n", - "Random external link is: http://eepurl.com/bgUEf\n", - "Random external link is: http://www.copperfieldsbooks.com/\n", - "Random external link is: http://Libro.fm/copperfieldsbooks\n", - "Random external link is: https://libro.fm/audiobooks/9780062797889-heart-spring-mountain\n", - "Random external link is: https://goo.gl/\n", - "Random external link is: https://news.google.com/nwshp?hl=en\n" + "Random external link is: http://twitter.com/oreillymedia\n" ] }, { @@ -1589,23 +1590,17 @@ "traceback": [ "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", "\u001b[0;31mKeyboardInterrupt\u001b[0m Traceback (most recent call last)", - "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[1;32m 52\u001b[0m \u001b[0mfollowExternalOnly\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mexternalLink\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 53\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 54\u001b[0;31m \u001b[0mfollowExternalOnly\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'http://oreilly.com'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m", - "\u001b[0;32m\u001b[0m in \u001b[0;36mfollowExternalOnly\u001b[0;34m(startingSite)\u001b[0m\n\u001b[1;32m 50\u001b[0m \u001b[0mexternalLink\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mgetRandomExternalLink\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mstartingSite\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 51\u001b[0m \u001b[0mprint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'Random external link is: {}'\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mformat\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mexternalLink\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 52\u001b[0;31m \u001b[0mfollowExternalOnly\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mexternalLink\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 53\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 54\u001b[0m \u001b[0mfollowExternalOnly\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'http://oreilly.com'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m\u001b[0m in \u001b[0;36mfollowExternalOnly\u001b[0;34m(startingSite)\u001b[0m\n\u001b[1;32m 50\u001b[0m \u001b[0mexternalLink\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mgetRandomExternalLink\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mstartingSite\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 51\u001b[0m \u001b[0mprint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'Random external link is: {}'\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mformat\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mexternalLink\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 52\u001b[0;31m \u001b[0mfollowExternalOnly\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mexternalLink\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 53\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 54\u001b[0m \u001b[0mfollowExternalOnly\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'http://oreilly.com'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m\u001b[0m in \u001b[0;36mfollowExternalOnly\u001b[0;34m(startingSite)\u001b[0m\n\u001b[1;32m 50\u001b[0m \u001b[0mexternalLink\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mgetRandomExternalLink\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mstartingSite\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 51\u001b[0m \u001b[0mprint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'Random external link is: {}'\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mformat\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mexternalLink\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 52\u001b[0;31m \u001b[0mfollowExternalOnly\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mexternalLink\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 53\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 54\u001b[0m \u001b[0mfollowExternalOnly\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'http://oreilly.com'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m\u001b[0m in \u001b[0;36mfollowExternalOnly\u001b[0;34m(startingSite)\u001b[0m\n\u001b[1;32m 50\u001b[0m \u001b[0mexternalLink\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mgetRandomExternalLink\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mstartingSite\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 51\u001b[0m \u001b[0mprint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'Random external link is: {}'\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mformat\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mexternalLink\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 52\u001b[0;31m \u001b[0mfollowExternalOnly\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mexternalLink\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 53\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 54\u001b[0m \u001b[0mfollowExternalOnly\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'http://oreilly.com'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m\u001b[0m in \u001b[0;36mfollowExternalOnly\u001b[0;34m(startingSite)\u001b[0m\n\u001b[1;32m 50\u001b[0m \u001b[0mexternalLink\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mgetRandomExternalLink\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mstartingSite\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 51\u001b[0m \u001b[0mprint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'Random external link is: {}'\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mformat\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mexternalLink\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 52\u001b[0;31m \u001b[0mfollowExternalOnly\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mexternalLink\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 53\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 54\u001b[0m \u001b[0mfollowExternalOnly\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'http://oreilly.com'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m\u001b[0m in \u001b[0;36mfollowExternalOnly\u001b[0;34m(startingSite)\u001b[0m\n\u001b[1;32m 50\u001b[0m \u001b[0mexternalLink\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mgetRandomExternalLink\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mstartingSite\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 51\u001b[0m \u001b[0mprint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'Random external link is: {}'\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mformat\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mexternalLink\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 52\u001b[0;31m \u001b[0mfollowExternalOnly\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mexternalLink\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 53\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 54\u001b[0m \u001b[0mfollowExternalOnly\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'http://oreilly.com'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m\u001b[0m in \u001b[0;36mfollowExternalOnly\u001b[0;34m(startingSite)\u001b[0m\n\u001b[1;32m 50\u001b[0m \u001b[0mexternalLink\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mgetRandomExternalLink\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mstartingSite\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 51\u001b[0m \u001b[0mprint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'Random external link is: {}'\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mformat\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mexternalLink\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 52\u001b[0;31m \u001b[0mfollowExternalOnly\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mexternalLink\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 53\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 54\u001b[0m \u001b[0mfollowExternalOnly\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'http://oreilly.com'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m\u001b[0m in \u001b[0;36mfollowExternalOnly\u001b[0;34m(startingSite)\u001b[0m\n\u001b[1;32m 50\u001b[0m \u001b[0mexternalLink\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mgetRandomExternalLink\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mstartingSite\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 51\u001b[0m \u001b[0mprint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'Random external link is: {}'\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mformat\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mexternalLink\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 52\u001b[0;31m \u001b[0mfollowExternalOnly\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mexternalLink\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 53\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 54\u001b[0m \u001b[0mfollowExternalOnly\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'http://oreilly.com'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m\u001b[0m in \u001b[0;36mfollowExternalOnly\u001b[0;34m(startingSite)\u001b[0m\n\u001b[1;32m 48\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 49\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0mfollowExternalOnly\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mstartingSite\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 50\u001b[0;31m \u001b[0mexternalLink\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mgetRandomExternalLink\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mstartingSite\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 51\u001b[0m \u001b[0mprint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'Random external link is: {}'\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mformat\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mexternalLink\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 52\u001b[0m \u001b[0mfollowExternalOnly\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mexternalLink\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m\u001b[0m in \u001b[0;36mgetRandomExternalLink\u001b[0;34m(startingPage)\u001b[0m\n\u001b[1;32m 36\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0mgetRandomExternalLink\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mstartingPage\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 37\u001b[0m \u001b[0mhtml\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0murlopen\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mstartingPage\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 38\u001b[0;31m \u001b[0mbsObj\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mBeautifulSoup\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mhtml\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m'html.parser'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 39\u001b[0m \u001b[0mexternalLinks\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mgetExternalLinks\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mbsObj\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0murlparse\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mstartingPage\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mnetloc\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 40\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mlen\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mexternalLinks\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;34m==\u001b[0m \u001b[0;36m0\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/bs4/__init__.py\u001b[0m in \u001b[0;36m__init__\u001b[0;34m(self, markup, features, builder, parse_only, from_encoding, exclude_encodings, **kwargs)\u001b[0m\n\u001b[1;32m 189\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 190\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mhasattr\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mmarkup\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m'read'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0;31m# It's a file-type object.\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 191\u001b[0;31m \u001b[0mmarkup\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mmarkup\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mread\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 192\u001b[0m elif len(markup) <= 256 and (\n\u001b[1;32m 193\u001b[0m \u001b[0;34m(\u001b[0m\u001b[0misinstance\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mmarkup\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mbytes\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;32mand\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0;34mb'<'\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mmarkup\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/http/client.py\u001b[0m in \u001b[0;36mread\u001b[0;34m(self, amt)\u001b[0m\n\u001b[1;32m 457\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 458\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mlength\u001b[0m \u001b[0;32mis\u001b[0m \u001b[0;32mNone\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 459\u001b[0;31m \u001b[0ms\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mfp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mread\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 460\u001b[0m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 461\u001b[0m \u001b[0;32mtry\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/socket.py\u001b[0m in \u001b[0;36mreadinto\u001b[0;34m(self, b)\u001b[0m\n\u001b[1;32m 584\u001b[0m \u001b[0;32mwhile\u001b[0m \u001b[0;32mTrue\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 585\u001b[0m \u001b[0;32mtry\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 586\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_sock\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mrecv_into\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mb\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 587\u001b[0m \u001b[0;32mexcept\u001b[0m \u001b[0mtimeout\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 588\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_timeout_occurred\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;32mTrue\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/ssl.py\u001b[0m in \u001b[0;36mrecv_into\u001b[0;34m(self, buffer, nbytes, flags)\u001b[0m\n\u001b[1;32m 1000\u001b[0m \u001b[0;34m\"non-zero flags not allowed in calls to recv_into() on %s\"\u001b[0m \u001b[0;34m%\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1001\u001b[0m self.__class__)\n\u001b[0;32m-> 1002\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mread\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mnbytes\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mbuffer\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 1003\u001b[0m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1004\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0msocket\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mrecv_into\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mbuffer\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mnbytes\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mflags\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/ssl.py\u001b[0m in \u001b[0;36mread\u001b[0;34m(self, len, buffer)\u001b[0m\n\u001b[1;32m 863\u001b[0m \u001b[0;32mraise\u001b[0m \u001b[0mValueError\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"Read on closed or unwrapped SSL socket.\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 864\u001b[0m \u001b[0;32mtry\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 865\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_sslobj\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mread\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mlen\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mbuffer\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 866\u001b[0m \u001b[0;32mexcept\u001b[0m \u001b[0mSSLError\u001b[0m \u001b[0;32mas\u001b[0m \u001b[0mx\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 867\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mx\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m0\u001b[0m\u001b[0;34m]\u001b[0m \u001b[0;34m==\u001b[0m \u001b[0mSSL_ERROR_EOF\u001b[0m \u001b[0;32mand\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msuppress_ragged_eofs\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/ssl.py\u001b[0m in \u001b[0;36mread\u001b[0;34m(self, len, buffer)\u001b[0m\n\u001b[1;32m 623\u001b[0m \"\"\"\n\u001b[1;32m 624\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mbuffer\u001b[0m \u001b[0;32mis\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0;32mNone\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 625\u001b[0;31m \u001b[0mv\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_sslobj\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mread\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mlen\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mbuffer\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 626\u001b[0m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 627\u001b[0m \u001b[0mv\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_sslobj\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mread\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mlen\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[1;32m 52\u001b[0m \u001b[0mfollowExternalOnly\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mexternalLink\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 53\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 54\u001b[0;31m \u001b[0mfollowExternalOnly\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'http://oreilly.com'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m", + "\u001b[0;32m\u001b[0m in \u001b[0;36mfollowExternalOnly\u001b[0;34m(startingSite)\u001b[0m\n\u001b[1;32m 50\u001b[0m \u001b[0mexternalLink\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mgetRandomExternalLink\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mstartingSite\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 51\u001b[0m \u001b[0mprint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'Random external link is: {}'\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mformat\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mexternalLink\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 52\u001b[0;31m \u001b[0mfollowExternalOnly\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mexternalLink\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 53\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 54\u001b[0m \u001b[0mfollowExternalOnly\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'http://oreilly.com'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m\u001b[0m in \u001b[0;36mfollowExternalOnly\u001b[0;34m(startingSite)\u001b[0m\n\u001b[1;32m 48\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 49\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0mfollowExternalOnly\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mstartingSite\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 50\u001b[0;31m \u001b[0mexternalLink\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mgetRandomExternalLink\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mstartingSite\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 51\u001b[0m \u001b[0mprint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'Random external link is: {}'\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mformat\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mexternalLink\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 52\u001b[0m \u001b[0mfollowExternalOnly\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mexternalLink\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m\u001b[0m in \u001b[0;36mgetRandomExternalLink\u001b[0;34m(startingPage)\u001b[0m\n\u001b[1;32m 36\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0mgetRandomExternalLink\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mstartingPage\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 37\u001b[0m \u001b[0mhtml\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0murlopen\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mstartingPage\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 38\u001b[0;31m \u001b[0mbs\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mBeautifulSoup\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mhtml\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m'html.parser'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 39\u001b[0m \u001b[0mexternalLinks\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mgetExternalLinks\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mbs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0murlparse\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mstartingPage\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mnetloc\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 40\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mlen\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mexternalLinks\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;34m==\u001b[0m \u001b[0;36m0\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/bs4/__init__.py\u001b[0m in \u001b[0;36m__init__\u001b[0;34m(self, markup, features, builder, parse_only, from_encoding, exclude_encodings, **kwargs)\u001b[0m\n\u001b[1;32m 226\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mreset\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 227\u001b[0m \u001b[0;32mtry\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 228\u001b[0;31m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_feed\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 229\u001b[0m \u001b[0;32mbreak\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 230\u001b[0m \u001b[0;32mexcept\u001b[0m \u001b[0mParserRejectedMarkup\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/bs4/__init__.py\u001b[0m in \u001b[0;36m_feed\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 287\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mbuilder\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mreset\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 288\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 289\u001b[0;31m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mbuilder\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mfeed\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mmarkup\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 290\u001b[0m \u001b[0;31m# Close out any unfinished strings and close all the open tags.\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 291\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mendData\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/bs4/builder/_htmlparser.py\u001b[0m in \u001b[0;36mfeed\u001b[0;34m(self, markup)\u001b[0m\n\u001b[1;32m 213\u001b[0m \u001b[0mparser\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msoup\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msoup\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 214\u001b[0m \u001b[0;32mtry\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 215\u001b[0;31m \u001b[0mparser\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mfeed\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mmarkup\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 216\u001b[0m \u001b[0;32mexcept\u001b[0m \u001b[0mHTMLParseError\u001b[0m \u001b[0;32mas\u001b[0m \u001b[0me\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 217\u001b[0m warnings.warn(RuntimeWarning(\n", + "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/html/parser.py\u001b[0m in \u001b[0;36mfeed\u001b[0;34m(self, data)\u001b[0m\n\u001b[1;32m 109\u001b[0m \"\"\"\n\u001b[1;32m 110\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mrawdata\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mrawdata\u001b[0m \u001b[0;34m+\u001b[0m \u001b[0mdata\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 111\u001b[0;31m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mgoahead\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;36m0\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 112\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 113\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0mclose\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/html/parser.py\u001b[0m in \u001b[0;36mgoahead\u001b[0;34m(self, end)\u001b[0m\n\u001b[1;32m 169\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mstartswith\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'<'\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mi\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 170\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mstarttagopen\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mmatch\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mrawdata\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mi\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0;31m# < + letter\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 171\u001b[0;31m \u001b[0mk\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mparse_starttag\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mi\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 172\u001b[0m \u001b[0;32melif\u001b[0m \u001b[0mstartswith\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\" 303\u001b[0;31m \u001b[0mendpos\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mcheck_for_whole_start_tag\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mi\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 304\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mendpos\u001b[0m \u001b[0;34m<\u001b[0m \u001b[0;36m0\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 305\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mendpos\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/html/parser.py\u001b[0m in \u001b[0;36mcheck_for_whole_start_tag\u001b[0;34m(self, i)\u001b[0m\n\u001b[1;32m 355\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mm\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 356\u001b[0m \u001b[0mj\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mm\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mend\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 357\u001b[0;31m \u001b[0mnext\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mrawdata\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mj\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0mj\u001b[0m\u001b[0;34m+\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 358\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mnext\u001b[0m \u001b[0;34m==\u001b[0m \u001b[0;34m\">\"\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 359\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mj\u001b[0m \u001b[0;34m+\u001b[0m \u001b[0;36m1\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;31mKeyboardInterrupt\u001b[0m: " ] } @@ -1622,11 +1617,11 @@ "random.seed(datetime.datetime.now())\n", "\n", "#Retrieves a list of all Internal links found on a page\n", - "def getInternalLinks(bsObj, includeUrl):\n", + "def getInternalLinks(bs, includeUrl):\n", " includeUrl = '{}://{}'.format(urlparse(includeUrl).scheme, urlparse(includeUrl).netloc)\n", " internalLinks = []\n", " #Finds all links that begin with a \"/\"\n", - " for link in bsObj.find_all('a', href=re.compile('^(/|.*'+includeUrl+')')):\n", + " for link in bs.find_all('a', href=re.compile('^(/|.*'+includeUrl+')')):\n", " if link.attrs['href'] is not None:\n", " if link.attrs['href'] not in internalLinks:\n", " if(link.attrs['href'].startswith('/')):\n", @@ -1636,11 +1631,11 @@ " return internalLinks\n", " \n", "#Retrieves a list of all external links found on a page\n", - "def getExternalLinks(bsObj, excludeUrl):\n", + "def getExternalLinks(bs, excludeUrl):\n", " externalLinks = []\n", " #Finds all links that start with \"http\" that do\n", " #not contain the current URL\n", - " for link in bsObj.find_all('a', href=re.compile('^(http|www)((?!'+excludeUrl+').)*$')):\n", + " for link in bs.find_all('a', href=re.compile('^(http|www)((?!'+excludeUrl+').)*$')):\n", " if link.attrs['href'] is not None:\n", " if link.attrs['href'] not in externalLinks:\n", " externalLinks.append(link.attrs['href'])\n", @@ -1648,12 +1643,12 @@ "\n", "def getRandomExternalLink(startingPage):\n", " html = urlopen(startingPage)\n", - " bsObj = BeautifulSoup(html, 'html.parser')\n", - " externalLinks = getExternalLinks(bsObj, urlparse(startingPage).netloc)\n", + " bs = BeautifulSoup(html, 'html.parser')\n", + " externalLinks = getExternalLinks(bs, urlparse(startingPage).netloc)\n", " if len(externalLinks) == 0:\n", " print('No external links, looking around the site for one')\n", " domain = '{}://{}'.format(urlparse(startingPage).scheme, urlparse(startingPage).netloc)\n", - " internalLinks = getInternalLinks(bsObj, domain)\n", + " internalLinks = getInternalLinks(bs, domain)\n", " return getRandomExternalLink(internalLinks[random.randint(0,\n", " len(internalLinks)-1)])\n", " else:\n", @@ -1669,7 +1664,7 @@ }, { "cell_type": "code", - "execution_count": 14, + "execution_count": 7, "metadata": {}, "outputs": [], "source": [ @@ -1678,7 +1673,7 @@ }, { "cell_type": "code", - "execution_count": 17, + "execution_count": 8, "metadata": {}, "outputs": [ { @@ -1737,27 +1732,35 @@ "traceback": [ "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", "\u001b[0;31mKeyboardInterrupt\u001b[0m Traceback (most recent call last)", - "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[1;32m 19\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 20\u001b[0m \u001b[0mallIntLinks\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0madd\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'http://oreilly.com'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 21\u001b[0;31m \u001b[0mgetAllExternalLinks\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'http://oreilly.com'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m", - "\u001b[0;32m\u001b[0m in \u001b[0;36mgetAllExternalLinks\u001b[0;34m(siteUrl)\u001b[0m\n\u001b[1;32m 16\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mlink\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mallIntLinks\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 17\u001b[0m \u001b[0mallIntLinks\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0madd\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mlink\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 18\u001b[0;31m \u001b[0mgetAllExternalLinks\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mlink\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 19\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 20\u001b[0m \u001b[0mallIntLinks\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0madd\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'http://oreilly.com'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m\u001b[0m in \u001b[0;36mgetAllExternalLinks\u001b[0;34m(siteUrl)\u001b[0m\n\u001b[1;32m 16\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mlink\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mallIntLinks\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 17\u001b[0m \u001b[0mallIntLinks\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0madd\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mlink\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 18\u001b[0;31m \u001b[0mgetAllExternalLinks\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mlink\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 19\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 20\u001b[0m \u001b[0mallIntLinks\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0madd\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'http://oreilly.com'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m\u001b[0m in \u001b[0;36mgetAllExternalLinks\u001b[0;34m(siteUrl)\u001b[0m\n\u001b[1;32m 16\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mlink\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mallIntLinks\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 17\u001b[0m \u001b[0mallIntLinks\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0madd\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mlink\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 18\u001b[0;31m \u001b[0mgetAllExternalLinks\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mlink\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 19\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 20\u001b[0m \u001b[0mallIntLinks\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0madd\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'http://oreilly.com'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m\u001b[0m in \u001b[0;36mgetAllExternalLinks\u001b[0;34m(siteUrl)\u001b[0m\n\u001b[1;32m 16\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mlink\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mallIntLinks\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 17\u001b[0m \u001b[0mallIntLinks\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0madd\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mlink\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 18\u001b[0;31m \u001b[0mgetAllExternalLinks\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mlink\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 19\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 20\u001b[0m \u001b[0mallIntLinks\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0madd\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'http://oreilly.com'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m\u001b[0m in \u001b[0;36mgetAllExternalLinks\u001b[0;34m(siteUrl)\u001b[0m\n\u001b[1;32m 16\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mlink\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mallIntLinks\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 17\u001b[0m \u001b[0mallIntLinks\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0madd\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mlink\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 18\u001b[0;31m \u001b[0mgetAllExternalLinks\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mlink\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 19\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 20\u001b[0m \u001b[0mallIntLinks\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0madd\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'http://oreilly.com'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m\u001b[0m in \u001b[0;36mgetAllExternalLinks\u001b[0;34m(siteUrl)\u001b[0m\n\u001b[1;32m 16\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mlink\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mallIntLinks\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 17\u001b[0m \u001b[0mallIntLinks\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0madd\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mlink\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 18\u001b[0;31m \u001b[0mgetAllExternalLinks\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mlink\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 19\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 20\u001b[0m \u001b[0mallIntLinks\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0madd\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'http://oreilly.com'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m\u001b[0m in \u001b[0;36mgetAllExternalLinks\u001b[0;34m(siteUrl)\u001b[0m\n\u001b[1;32m 3\u001b[0m \u001b[0mallIntLinks\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mset\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 4\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0mgetAllExternalLinks\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0msiteUrl\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 5\u001b[0;31m \u001b[0mhtml\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0murlopen\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0msiteUrl\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 6\u001b[0m \u001b[0mdomain\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m'{}://{}'\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mformat\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0murlparse\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0msiteUrl\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mscheme\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0murlparse\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0msiteUrl\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mnetloc\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 7\u001b[0m \u001b[0mbs\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mBeautifulSoup\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mhtml\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m\"html.parser\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[1;32m 19\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 20\u001b[0m \u001b[0mallIntLinks\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0madd\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'http://oreilly.com'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 21\u001b[0;31m \u001b[0mgetAllExternalLinks\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'http://oreilly.com'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m", + "\u001b[0;32m\u001b[0m in \u001b[0;36mgetAllExternalLinks\u001b[0;34m(siteUrl)\u001b[0m\n\u001b[1;32m 16\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mlink\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mallIntLinks\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 17\u001b[0m \u001b[0mallIntLinks\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0madd\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mlink\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 18\u001b[0;31m \u001b[0mgetAllExternalLinks\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mlink\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 19\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 20\u001b[0m \u001b[0mallIntLinks\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0madd\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'http://oreilly.com'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m\u001b[0m in \u001b[0;36mgetAllExternalLinks\u001b[0;34m(siteUrl)\u001b[0m\n\u001b[1;32m 16\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mlink\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mallIntLinks\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 17\u001b[0m \u001b[0mallIntLinks\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0madd\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mlink\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 18\u001b[0;31m \u001b[0mgetAllExternalLinks\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mlink\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 19\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 20\u001b[0m \u001b[0mallIntLinks\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0madd\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'http://oreilly.com'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m\u001b[0m in \u001b[0;36mgetAllExternalLinks\u001b[0;34m(siteUrl)\u001b[0m\n\u001b[1;32m 16\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mlink\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mallIntLinks\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 17\u001b[0m \u001b[0mallIntLinks\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0madd\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mlink\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 18\u001b[0;31m \u001b[0mgetAllExternalLinks\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mlink\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 19\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 20\u001b[0m \u001b[0mallIntLinks\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0madd\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'http://oreilly.com'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m\u001b[0m in \u001b[0;36mgetAllExternalLinks\u001b[0;34m(siteUrl)\u001b[0m\n\u001b[1;32m 16\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mlink\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mallIntLinks\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 17\u001b[0m \u001b[0mallIntLinks\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0madd\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mlink\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 18\u001b[0;31m \u001b[0mgetAllExternalLinks\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mlink\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 19\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 20\u001b[0m \u001b[0mallIntLinks\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0madd\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'http://oreilly.com'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m\u001b[0m in \u001b[0;36mgetAllExternalLinks\u001b[0;34m(siteUrl)\u001b[0m\n\u001b[1;32m 3\u001b[0m \u001b[0mallIntLinks\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mset\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 4\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0mgetAllExternalLinks\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0msiteUrl\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 5\u001b[0;31m \u001b[0mhtml\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0murlopen\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0msiteUrl\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 6\u001b[0m \u001b[0mdomain\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m'{}://{}'\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mformat\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0murlparse\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0msiteUrl\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mscheme\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0murlparse\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0msiteUrl\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mnetloc\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 7\u001b[0m \u001b[0mbs\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mBeautifulSoup\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mhtml\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m'html.parser'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/urllib/request.py\u001b[0m in \u001b[0;36murlopen\u001b[0;34m(url, data, timeout, cafile, capath, cadefault, context)\u001b[0m\n\u001b[1;32m 221\u001b[0m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 222\u001b[0m \u001b[0mopener\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0m_opener\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 223\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mopener\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mopen\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0murl\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mdata\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mtimeout\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 224\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 225\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0minstall_opener\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mopener\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/urllib/request.py\u001b[0m in \u001b[0;36mopen\u001b[0;34m(self, fullurl, data, timeout)\u001b[0m\n\u001b[1;32m 530\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0mprocessor\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mprocess_response\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mget\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mprotocol\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m[\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 531\u001b[0m \u001b[0mmeth\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mgetattr\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mprocessor\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mmeth_name\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 532\u001b[0;31m \u001b[0mresponse\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mmeth\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mreq\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mresponse\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 533\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 534\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mresponse\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/urllib/request.py\u001b[0m in \u001b[0;36mhttp_response\u001b[0;34m(self, request, response)\u001b[0m\n\u001b[1;32m 640\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0;34m(\u001b[0m\u001b[0;36m200\u001b[0m \u001b[0;34m<=\u001b[0m \u001b[0mcode\u001b[0m \u001b[0;34m<\u001b[0m \u001b[0;36m300\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 641\u001b[0m response = self.parent.error(\n\u001b[0;32m--> 642\u001b[0;31m 'http', request, response, code, msg, hdrs)\n\u001b[0m\u001b[1;32m 643\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 644\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mresponse\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/urllib/request.py\u001b[0m in \u001b[0;36merror\u001b[0;34m(self, proto, *args)\u001b[0m\n\u001b[1;32m 562\u001b[0m \u001b[0mhttp_err\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;36m0\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 563\u001b[0m \u001b[0margs\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m(\u001b[0m\u001b[0mdict\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mproto\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mmeth_name\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;34m+\u001b[0m \u001b[0margs\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 564\u001b[0;31m \u001b[0mresult\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_call_chain\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 565\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mresult\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 566\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mresult\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/urllib/request.py\u001b[0m in \u001b[0;36m_call_chain\u001b[0;34m(self, chain, kind, meth_name, *args)\u001b[0m\n\u001b[1;32m 502\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0mhandler\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mhandlers\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 503\u001b[0m \u001b[0mfunc\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mgetattr\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mhandler\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mmeth_name\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 504\u001b[0;31m \u001b[0mresult\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mfunc\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 505\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mresult\u001b[0m \u001b[0;32mis\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0;32mNone\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 506\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mresult\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/urllib/request.py\u001b[0m in \u001b[0;36mhttp_error_302\u001b[0;34m(self, req, fp, code, msg, headers)\u001b[0m\n\u001b[1;32m 754\u001b[0m \u001b[0mfp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mclose\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 755\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 756\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mparent\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mopen\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mnew\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mtimeout\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mreq\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mtimeout\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 757\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 758\u001b[0m \u001b[0mhttp_error_301\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mhttp_error_303\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mhttp_error_307\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mhttp_error_302\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/urllib/request.py\u001b[0m in \u001b[0;36mopen\u001b[0;34m(self, fullurl, data, timeout)\u001b[0m\n\u001b[1;32m 530\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0mprocessor\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mprocess_response\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mget\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mprotocol\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m[\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 531\u001b[0m \u001b[0mmeth\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mgetattr\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mprocessor\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mmeth_name\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 532\u001b[0;31m \u001b[0mresponse\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mmeth\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mreq\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mresponse\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 533\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 534\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mresponse\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/urllib/request.py\u001b[0m in \u001b[0;36mhttp_response\u001b[0;34m(self, request, response)\u001b[0m\n\u001b[1;32m 640\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0;34m(\u001b[0m\u001b[0;36m200\u001b[0m \u001b[0;34m<=\u001b[0m \u001b[0mcode\u001b[0m \u001b[0;34m<\u001b[0m \u001b[0;36m300\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 641\u001b[0m response = self.parent.error(\n\u001b[0;32m--> 642\u001b[0;31m 'http', request, response, code, msg, hdrs)\n\u001b[0m\u001b[1;32m 643\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 644\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mresponse\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/urllib/request.py\u001b[0m in \u001b[0;36merror\u001b[0;34m(self, proto, *args)\u001b[0m\n\u001b[1;32m 562\u001b[0m \u001b[0mhttp_err\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;36m0\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 563\u001b[0m \u001b[0margs\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m(\u001b[0m\u001b[0mdict\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mproto\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mmeth_name\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;34m+\u001b[0m \u001b[0margs\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 564\u001b[0;31m \u001b[0mresult\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_call_chain\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 565\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mresult\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 566\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mresult\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/urllib/request.py\u001b[0m in \u001b[0;36m_call_chain\u001b[0;34m(self, chain, kind, meth_name, *args)\u001b[0m\n\u001b[1;32m 502\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0mhandler\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mhandlers\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 503\u001b[0m \u001b[0mfunc\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mgetattr\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mhandler\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mmeth_name\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 504\u001b[0;31m \u001b[0mresult\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mfunc\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 505\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mresult\u001b[0m \u001b[0;32mis\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0;32mNone\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 506\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mresult\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/urllib/request.py\u001b[0m in \u001b[0;36mhttp_error_302\u001b[0;34m(self, req, fp, code, msg, headers)\u001b[0m\n\u001b[1;32m 754\u001b[0m \u001b[0mfp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mclose\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 755\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 756\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mparent\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mopen\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mnew\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mtimeout\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mreq\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mtimeout\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 757\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 758\u001b[0m \u001b[0mhttp_error_301\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mhttp_error_303\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mhttp_error_307\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mhttp_error_302\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/urllib/request.py\u001b[0m in \u001b[0;36mopen\u001b[0;34m(self, fullurl, data, timeout)\u001b[0m\n\u001b[1;32m 524\u001b[0m \u001b[0mreq\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mmeth\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mreq\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 525\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 526\u001b[0;31m \u001b[0mresponse\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_open\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mreq\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mdata\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 527\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 528\u001b[0m \u001b[0;31m# post-process response\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/urllib/request.py\u001b[0m in \u001b[0;36m_open\u001b[0;34m(self, req, data)\u001b[0m\n\u001b[1;32m 542\u001b[0m \u001b[0mprotocol\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mreq\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mtype\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 543\u001b[0m result = self._call_chain(self.handle_open, protocol, protocol +\n\u001b[0;32m--> 544\u001b[0;31m '_open', req)\n\u001b[0m\u001b[1;32m 545\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mresult\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 546\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mresult\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/urllib/request.py\u001b[0m in \u001b[0;36m_call_chain\u001b[0;34m(self, chain, kind, meth_name, *args)\u001b[0m\n\u001b[1;32m 502\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0mhandler\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mhandlers\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 503\u001b[0m \u001b[0mfunc\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mgetattr\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mhandler\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mmeth_name\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 504\u001b[0;31m \u001b[0mresult\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mfunc\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 505\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mresult\u001b[0m \u001b[0;32mis\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0;32mNone\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 506\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mresult\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/urllib/request.py\u001b[0m in \u001b[0;36mhttp_open\u001b[0;34m(self, req)\u001b[0m\n\u001b[1;32m 1344\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1345\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0mhttp_open\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mreq\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 1346\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mdo_open\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mhttp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mclient\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mHTTPConnection\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mreq\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 1347\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1348\u001b[0m \u001b[0mhttp_request\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mAbstractHTTPHandler\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mdo_request_\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/urllib/request.py\u001b[0m in \u001b[0;36mdo_open\u001b[0;34m(self, http_class, req, **http_conn_args)\u001b[0m\n\u001b[1;32m 1316\u001b[0m \u001b[0;32mtry\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1317\u001b[0m h.request(req.get_method(), req.selector, req.data, headers,\n\u001b[0;32m-> 1318\u001b[0;31m encode_chunked=req.has_header('Transfer-encoding'))\n\u001b[0m\u001b[1;32m 1319\u001b[0m \u001b[0;32mexcept\u001b[0m \u001b[0mOSError\u001b[0m \u001b[0;32mas\u001b[0m \u001b[0merr\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0;31m# timeout error\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1320\u001b[0m \u001b[0;32mraise\u001b[0m \u001b[0mURLError\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0merr\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/http/client.py\u001b[0m in \u001b[0;36mrequest\u001b[0;34m(self, method, url, body, headers, encode_chunked)\u001b[0m\n\u001b[1;32m 1237\u001b[0m encode_chunked=False):\n\u001b[1;32m 1238\u001b[0m \u001b[0;34m\"\"\"Send a complete request to the server.\"\"\"\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 1239\u001b[0;31m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_send_request\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mmethod\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0murl\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mbody\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mheaders\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mencode_chunked\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 1240\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1241\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0m_send_request\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mmethod\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0murl\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mbody\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mheaders\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mencode_chunked\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/http/client.py\u001b[0m in \u001b[0;36m_send_request\u001b[0;34m(self, method, url, body, headers, encode_chunked)\u001b[0m\n\u001b[1;32m 1283\u001b[0m \u001b[0;31m# default charset of iso-8859-1.\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1284\u001b[0m \u001b[0mbody\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0m_encode\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mbody\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m'body'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 1285\u001b[0;31m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mendheaders\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mbody\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mencode_chunked\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mencode_chunked\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 1286\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1287\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0mgetresponse\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/http/client.py\u001b[0m in \u001b[0;36mendheaders\u001b[0;34m(self, message_body, encode_chunked)\u001b[0m\n\u001b[1;32m 1232\u001b[0m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1233\u001b[0m \u001b[0;32mraise\u001b[0m \u001b[0mCannotSendHeader\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 1234\u001b[0;31m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_send_output\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mmessage_body\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mencode_chunked\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mencode_chunked\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 1235\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1236\u001b[0m def request(self, method, url, body=None, headers={}, *,\n", - "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/http/client.py\u001b[0m in \u001b[0;36m_send_output\u001b[0;34m(self, message_body, encode_chunked)\u001b[0m\n\u001b[1;32m 1024\u001b[0m \u001b[0mmsg\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34mb\"\\r\\n\"\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mjoin\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_buffer\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1025\u001b[0m \u001b[0;32mdel\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_buffer\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 1026\u001b[0;31m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msend\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mmsg\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 1027\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1028\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mmessage_body\u001b[0m \u001b[0;32mis\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0;32mNone\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/http/client.py\u001b[0m in \u001b[0;36msend\u001b[0;34m(self, data)\u001b[0m\n\u001b[1;32m 962\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msock\u001b[0m \u001b[0;32mis\u001b[0m \u001b[0;32mNone\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 963\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mauto_open\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 964\u001b[0;31m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mconnect\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 965\u001b[0m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 966\u001b[0m \u001b[0;32mraise\u001b[0m \u001b[0mNotConnected\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/http/client.py\u001b[0m in \u001b[0;36mconnect\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 934\u001b[0m \u001b[0;34m\"\"\"Connect to the host and port specified in __init__.\"\"\"\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 935\u001b[0m self.sock = self._create_connection(\n\u001b[0;32m--> 936\u001b[0;31m (self.host,self.port), self.timeout, self.source_address)\n\u001b[0m\u001b[1;32m 937\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msock\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msetsockopt\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0msocket\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mIPPROTO_TCP\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0msocket\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mTCP_NODELAY\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;36m1\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 938\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/socket.py\u001b[0m in \u001b[0;36mcreate_connection\u001b[0;34m(address, timeout, source_address)\u001b[0m\n\u001b[1;32m 711\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0msource_address\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 712\u001b[0m \u001b[0msock\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mbind\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0msource_address\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 713\u001b[0;31m \u001b[0msock\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mconnect\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0msa\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 714\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0msock\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 715\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/urllib/request.py\u001b[0m in \u001b[0;36mhttps_open\u001b[0;34m(self, req)\u001b[0m\n\u001b[1;32m 1359\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0mhttps_open\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mreq\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1360\u001b[0m return self.do_open(http.client.HTTPSConnection, req,\n\u001b[0;32m-> 1361\u001b[0;31m context=self._context, check_hostname=self._check_hostname)\n\u001b[0m\u001b[1;32m 1362\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1363\u001b[0m \u001b[0mhttps_request\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mAbstractHTTPHandler\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mdo_request_\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/urllib/request.py\u001b[0m in \u001b[0;36mdo_open\u001b[0;34m(self, http_class, req, **http_conn_args)\u001b[0m\n\u001b[1;32m 1319\u001b[0m \u001b[0;32mexcept\u001b[0m \u001b[0mOSError\u001b[0m \u001b[0;32mas\u001b[0m \u001b[0merr\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0;31m# timeout error\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1320\u001b[0m \u001b[0;32mraise\u001b[0m \u001b[0mURLError\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0merr\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 1321\u001b[0;31m \u001b[0mr\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mh\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mgetresponse\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 1322\u001b[0m \u001b[0;32mexcept\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1323\u001b[0m \u001b[0mh\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mclose\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/http/client.py\u001b[0m in \u001b[0;36mgetresponse\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 1329\u001b[0m \u001b[0;32mtry\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1330\u001b[0m \u001b[0;32mtry\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 1331\u001b[0;31m \u001b[0mresponse\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mbegin\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 1332\u001b[0m \u001b[0;32mexcept\u001b[0m \u001b[0mConnectionError\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1333\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mclose\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/http/client.py\u001b[0m in \u001b[0;36mbegin\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 295\u001b[0m \u001b[0;31m# read until we get a non-100 response\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 296\u001b[0m \u001b[0;32mwhile\u001b[0m \u001b[0;32mTrue\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 297\u001b[0;31m \u001b[0mversion\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mstatus\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mreason\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_read_status\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 298\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mstatus\u001b[0m \u001b[0;34m!=\u001b[0m \u001b[0mCONTINUE\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 299\u001b[0m \u001b[0;32mbreak\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/http/client.py\u001b[0m in \u001b[0;36m_read_status\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 256\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 257\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0m_read_status\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 258\u001b[0;31m \u001b[0mline\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mstr\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mfp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mreadline\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0m_MAXLINE\u001b[0m \u001b[0;34m+\u001b[0m \u001b[0;36m1\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m\"iso-8859-1\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 259\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mlen\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mline\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;34m>\u001b[0m \u001b[0m_MAXLINE\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 260\u001b[0m \u001b[0;32mraise\u001b[0m \u001b[0mLineTooLong\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"status line\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/socket.py\u001b[0m in \u001b[0;36mreadinto\u001b[0;34m(self, b)\u001b[0m\n\u001b[1;32m 584\u001b[0m \u001b[0;32mwhile\u001b[0m \u001b[0;32mTrue\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 585\u001b[0m \u001b[0;32mtry\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 586\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_sock\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mrecv_into\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mb\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 587\u001b[0m \u001b[0;32mexcept\u001b[0m \u001b[0mtimeout\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 588\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_timeout_occurred\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;32mTrue\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/ssl.py\u001b[0m in \u001b[0;36mrecv_into\u001b[0;34m(self, buffer, nbytes, flags)\u001b[0m\n\u001b[1;32m 1000\u001b[0m \u001b[0;34m\"non-zero flags not allowed in calls to recv_into() on %s\"\u001b[0m \u001b[0;34m%\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1001\u001b[0m self.__class__)\n\u001b[0;32m-> 1002\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mread\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mnbytes\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mbuffer\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 1003\u001b[0m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1004\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0msocket\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mrecv_into\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mbuffer\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mnbytes\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mflags\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/ssl.py\u001b[0m in \u001b[0;36mread\u001b[0;34m(self, len, buffer)\u001b[0m\n\u001b[1;32m 863\u001b[0m \u001b[0;32mraise\u001b[0m \u001b[0mValueError\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"Read on closed or unwrapped SSL socket.\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 864\u001b[0m \u001b[0;32mtry\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 865\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_sslobj\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mread\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mlen\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mbuffer\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 866\u001b[0m \u001b[0;32mexcept\u001b[0m \u001b[0mSSLError\u001b[0m \u001b[0;32mas\u001b[0m \u001b[0mx\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 867\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mx\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m0\u001b[0m\u001b[0;34m]\u001b[0m \u001b[0;34m==\u001b[0m \u001b[0mSSL_ERROR_EOF\u001b[0m \u001b[0;32mand\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msuppress_ragged_eofs\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/ssl.py\u001b[0m in \u001b[0;36mread\u001b[0;34m(self, len, buffer)\u001b[0m\n\u001b[1;32m 623\u001b[0m \"\"\"\n\u001b[1;32m 624\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mbuffer\u001b[0m \u001b[0;32mis\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0;32mNone\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 625\u001b[0;31m \u001b[0mv\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_sslobj\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mread\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mlen\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mbuffer\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 626\u001b[0m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 627\u001b[0m \u001b[0mv\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_sslobj\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mread\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mlen\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;31mKeyboardInterrupt\u001b[0m: " ] } @@ -1766,12 +1769,13 @@ "#Collects a list of all external URLs found on the site\n", "allExtLinks = set()\n", "allIntLinks = set()\n", + "\n", "def getAllExternalLinks(siteUrl):\n", " html = urlopen(siteUrl)\n", " domain = '{}://{}'.format(urlparse(siteUrl).scheme, urlparse(siteUrl).netloc)\n", - " bsObj = BeautifulSoup(html, 'html.parser')\n", - " internalLinks = getInternalLinks(bsObj, domain)\n", - " externalLinks = getExternalLinks(bsObj, domain)\n", + " bs = BeautifulSoup(html, 'html.parser')\n", + " internalLinks = getInternalLinks(bs, domain)\n", + " externalLinks = getExternalLinks(bs, domain)\n", "\n", " for link in externalLinks:\n", " if link not in allExtLinks:\n", diff --git a/v2/Chapter04_CrawlingModels.ipynb b/v2/Chapter04_CrawlingModels.ipynb index 47528db..b73e852 100644 --- a/v2/Chapter04_CrawlingModels.ipynb +++ b/v2/Chapter04_CrawlingModels.ipynb @@ -2,7 +2,7 @@ "cells": [ { "cell_type": "code", - "execution_count": 5, + "execution_count": 4, "metadata": {}, "outputs": [], "source": [ @@ -12,7 +12,7 @@ }, { "cell_type": "code", - "execution_count": 6, + "execution_count": 2, "metadata": {}, "outputs": [], "source": [ @@ -20,7 +20,7 @@ " \"\"\"\n", " Utilty function used to get a Beautiful Soup object from a given URL\n", " \"\"\"\n", - " print(\"Retrieving URL:\\n{}\".format(url))\n", + "\n", " session = requests.Session()\n", " headers = {\"User-Agent\":\"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.95 Safari/537.36\", \"Accept\":\"text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8\"}\n", " try:\n", @@ -33,53 +33,157 @@ }, { "cell_type": "code", - "execution_count": 8, + "execution_count": 16, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "Retrieving URL:\n", - "https://www.nytimes.com/2018/01/25/opinion/sunday/silicon-valley-immortality.html\n", - "[

Would you like to live forever? Some billionaires, already invincible in every other way, have decided that they also deserve not to die. Today several biotech companies, fueled by Silicon Valley fortunes, are devoted to “life extension” — or as some put it, to solving “the problem of death.”

,

It’s a cause championed by the tech billionaire Peter Thiel, the TED Talk darling Aubrey de Gray, Google’s billion-dollar Calico longevity lab and investment by Amazon’s Jeff Bezos. The National Academy of Medicine, an independent group, recently dedicated funding to “end aging forever.”

,

As the longevity entrepreneur Arram Sabeti told The New Yorker: “The proposition that we can live forever is obvious. It doesn’t violate the laws of physics, so we can achieve it.” Of all the slightly creepy aspects to this trend, the strangest is the least noticed: The people publicly championing life extension are mainly men.

,

Not all of them, of course. In 2009, Elizabeth Blackburn received the Nobel Prize for her work on telomeres, protein caps on chromosomes that may be a key to understanding aging. Cynthia Kenyon, the vice president for aging research at Calico, studied life extension long before it was cool; her former protégée, Laura Deming, now runs a venture capital fund for the cause. But these women are focused on curbing age-related pathology, a concept about as controversial as cancer research. They do not appear thirsty for the Fountain of Youth.

,

Professor Blackburn’s new book on telomeres couldn’t be clearer. “Does our research show that by maintaining your telomeres you will live into your hundreds?” it says. “No. Everyone’s cells become old and eventually we die.” Ms. Kenyon once described her research’s goal as “to just have a healthy life and then turn out the lights.” Even Ms. Deming, a 23-year-old prodigy who worked in Ms. Kenyon’s lab at age 12, points out that “aging is innately important to us.”

,

Few of these experts come close to matching the gaudy statements of the longevity investor and “biohacker” Dave Asprey, who has told journalists, “I decided that I was just not going to die.” Or those of Brian Hanley, a microbiologist who has tested an anti-aging gene therapy he developed on himself, who claimed: “There’s a bunch of things that will need to be done to achieve life spans into at least hundreds of years. But we’ll get there.” Or of the 74-year-old fashion mogul Peter Nygard, who during a promotional clip receives injections of his own stem cells to reverse his aging while declaring: “Ponce de León had the right idea. He was just too early. That was then. This is now.”

,

I came across Mr. Nygard’s ode to human endurance three years ago while beginning research on a novel about a woman who can’t die, and watching that video allowed me to experience something close to life extension. As Mr. Nygard compared himself to Leonardo da Vinci and Benjamin Franklin while dancing with a bevy of models — or as a voice-over explained, “living a life most can only dream of” — nine minutes of YouTube expanded into a vapid eternity, where time melted into a vortex of solipsism.

,

At that time I was immersed in caring for my four young children, and this paean to everlasting youth seemed especially stupid. I recall thinking that if this was eternal life, death didn’t seem that bad.

,

But now, as powerful men have begun falling like dominoes under accusations of sexual assault, that video with its young women clustered around an elderly multimillionaire has haunted me anew. As I recall my discomfort with the proclamations of longevity-driven men who hope to achieve “escape velocity,” I think of the astonishing hubris of the Harvey Weinsteins of the world, those who saw young women’s bodies as theirs for the taking.

,

Much has been said about why we allowed such behavior to go unchecked. What has remained unsaid, because it is so obvious, is what would make someone so shameless in the first place: These people believed they were invincible. They saw their own bodies as entirely theirs and other people’s bodies as at their disposal; apparently nothing in their lives led them to believe otherwise.

,

Historically, this is a mistake that few women would make, because until very recently, the physical experience of being a woman entailed exactly the opposite — and not only because women have to hold their keys in self-defense while walking through parking lots at night. It’s only very recently that women have widely participated in public life, but it’s even more recently that men have been welcome, or even expected, to provide physical care for vulnerable people.

,

Only for a nanosecond of human history have men even slightly shared what was once exclusively a woman’s burden: the relentless daily labor of caring for another person’s body, the life-preserving work of cleaning feces and vomit, the constant cycle of cooking and feeding and blanketing and bathing, whether for the young, the ill or the old. For nearly as long as there have been humans, being a female human has meant a daily nonoptional immersion in the fragility of human life and the endless effort required to sustain it.

,

Obviously not everyone who provides care for others is a saint. But engaging in that daily devotion, or even living with its expectation, has enormous potential to change a person. It forces one to constantly imagine the world from someone else’s point of view: Is he hungry? Maybe she’s tired. Is his back hurting him? What is she trying to say?

,

The most obvious cure for today’s gender inequities is to put more women in power. But if we really hope to create an equal society, we will also need more men to care for the powerless — more women in the boardroom, but also more men at the nurses’ station and the changing table, immersed in daily physical empathy. If that sounds like an evolutionary impossibility, well, it doesn’t violate the laws of physics, so we can achieve it. It is surely worth at least as much investment as defeating death.

,

Perhaps it takes the promise of immortality to inspire the self-absorbed to invest in unsexy work like Alzheimer’s research. If so, we may all one day bless the inane death-defiance as a means to a worthy end.

,

But men who hope to live forever might pause on their eternal journey to consider the frightening void at invincibility’s core. Death is the ultimate vulnerability. It is the moment when all of us must confront exactly what so many women have known all too well: You are a body, only a body, and nothing more.

]\n" - ] - }, - { - "ename": "AttributeError", - "evalue": "'list' object has no attribute 'join'", - "output_type": "error", - "traceback": [ - "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", - "\u001b[0;31mAttributeError\u001b[0m Traceback (most recent call last)", - "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[1;32m 17\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 18\u001b[0m \u001b[0mbsObj\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mgetPage\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"https://www.nytimes.com/2018/01/25/opinion/sunday/silicon-valley-immortality.html\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 19\u001b[0;31m \u001b[0mcontent\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mscrapeNYTimes\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mbsObj\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 20\u001b[0m \u001b[0mprint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mcontent\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mtitle\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 21\u001b[0m \u001b[0mprint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mcontent\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mcontent\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m\u001b[0m in \u001b[0;36mscrapeNYTimes\u001b[0;34m(bs)\u001b[0m\n\u001b[1;32m 8\u001b[0m \u001b[0mlines\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mbs\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mfind_all\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"p\"\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m{\u001b[0m\u001b[0;34m\"class\"\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\"story-content\"\u001b[0m\u001b[0;34m}\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 9\u001b[0m \u001b[0mprint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mlines\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 10\u001b[0;31m \u001b[0mcontent\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m[\u001b[0m\u001b[0mline\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mtext\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0mline\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mlines\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mjoin\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"\\n\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 11\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mContent\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mtitle\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mcontent\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 12\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;31mAttributeError\u001b[0m: 'list' object has no attribute 'join'" + "Title: Delivering inclusive urban access: 3 uncomfortable truths\n", + "URL: https://www.brookings.edu/blog/future-development/2018/01/26/delivering-inclusive-urban-access-3-uncomfortable-truths/\n", + "\n", + "\n", + "The past few decades have been filled with a deep optimism about the role of cities and suburbs across the world. These engines of economic growth host a majority of world population, are major drivers of economic innovation, and have created pathways to opportunities for untold amounts of people.\t\n", + "Authors\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "Jeffrey Gutman\n", + "Senior Fellow - Global Economy and Development\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "Adie Tomer\n", + "Fellow - Metropolitan Policy Program\n", + "\n", + " Twitter\n", + "AdieTomer\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "But all is not well within our so-called Urban Century. Rapid urbanization, rising gentrification, concentrated poverty, and shortages of basic infrastructure have combined to create spatial inequity in cities and suburbs across the globe. The challenges of housing, moving, and employing so many people have led to longer travel times, rising housing costs, and unsustainable public spending. Moreover, policymakers are questioning traditional policies and approaches.\n", + "The past couple years, we’ve led a project at Brookings—Moving to Access—that responds to these spatial challenges by promoting the idea of connecting people to opportunities as a new foundational principle for 21st century urban development. This principle of accessibility is meant to be a corollary to the natural questions we ask ourselves everyday about the communities where we live: Is this the best location to access employment? Are there nearby schools and health services? Is there a market in the neighborhood? How can I get from here to there? Such choices are valid for those with sufficient income. But what about those with more limited resources and thus choices in terms of affordable housing and affordable transport?\n", + "While economists, planners, and engineers have promoted accessibility for decades, the concept is more often found in textbooks than formal urban policies. In the first stage of this project, we worked with a team of experts to determine what has stalled practical implementation of appropriate policies and practices? “Delivering Inclusive Access,” a report of this initial work, offers a synthesis of what we found and where we believe researchers, policymakers, and practitioners can take this work next. The paper found three central challenges.\n", + "The fallacy of the single indicator\n", + "The current transport regime’s approach to measurement is one of outward elegance: The dominant pursuit is speed, and the primary way to measure it is congestion (or what slows us down). Many have come to label this approach a pursuit of “mobility.” It is seen through different, but often singular, measures of how congestion affects a specific roadway. Such singular measures are easily interpreted by policymakers and civil society and can be translated directly into economic analysis of related investments through timesavings. They also conveniently serve such purposes as the internationally agreed-upon Sustainable Development Goals. Yet they actually don’t answer the fundamental question of who can reach where, in how much time, and at what cost.\n", + "\n", + "\n", + "Related Content\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " \n", + "\n", + "\n", + "\n", + "Cities & Regions\n", + "Delivering inclusive access\n", + "\n", + "Jeffrey Gutman, Adie Tomer, Joseph Kane, Nirav Patel, and Ranjitha Shivaram\n", + "August 2017\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " \n", + "\n", + "\n", + "\n", + "Cities & Regions\n", + "Measuring performance: Accessibility metrics in metropolitan regions around the world\n", + "\n", + "Geneviève Boisjoly and Ahmed El-Geneidy\n", + "August 2017\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " \n", + "\n", + "\n", + "\n", + "Cities & Regions\n", + "Is better access key to inclusive cities?\n", + "\n", + "Jeffrey Gutman and Nirav Patel\n", + "Wednesday, October 5, 2016\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "Accessibility measures can answer those questions, but not through any one measure. First, the variable social, economic, and political contexts related to access mean searching for a single magical indicator is counterintuitive. For example, a wealthy, automobile-centric region like Dallas, Texas, may have very different measurable goals than a denser, poorer region like Dar es Salaam, Tanzania. Second, academic literature is now rife with such complex measures that it could be difficult to communicate their methodology and results with practitioners. The development of a suite of indicators could offer a menu for policymakers and practitioners to judge accessibility based on local objectives, local conditions, and local capacity.\n", + "The danger of excessive localization\n", + "Decentralization and empowering local communities is fast becoming a mantra of governance experts across the world, from development practitioners at institutions like the World Bank to city-focused theorists. And for good reason: delegating policy design and fiscal authority directly to the local level helps ensure policies and practices respond to local needs and desires. Yet as urban areas spillover into contiguous and often numerous municipalities, local independence can introduce certain challenges, especially relating to social and environmental externalities. When it comes to transportation and land development, interests of one municipality are often different from its neighbors. And these divergent development goals can exacerbate accessibility challenges within growing regions, spreading people, housing jobs, and other activities further from one another.\n", + "Addressing spatial inequities in land use and real estate markets require a broader approach to horizontal governance. While there are examples of metropolitan transport authorities, there is less willingness to consider metropolitan or horizontal governance of land use and fiscal policies. For example, should housing be coordinated across an entire region?\n", + "Countries with a more centralized top down approach to governance, such as France and Germany, have greater ability to formulate metropolitan governance than more decentralized countries such as the U.S. This is not to say there is a one-size-fits-all approach, but there is an opportunity to test different solutions within different governance contexts, comparing how effective each model is to promote spatial inclusivity.\n", + "The finance community is missing in action\n", + "Financing is a central topic in infrastructure circles. As maintenance bills from the automobile era come due, populations continue to grow, and fiscal budgets are tight, how can urban areas afford to build enough infrastructure to support future economic growth? In response, new approaches are evolving in fiscal instruments, such as value capture and private-public partnerships. Missing in these discussions, however, are the implications for inclusive access.\n", + "We conducted a multi-decade review of past academic literature on access and found that there is no clear substantive discussion of accessibility from a fiscal perspective. While urban transport and land use professionals clearly recognize their interrelationship in achieving inclusive accessibility, at least in theory, the fiscal and finance professionals generally ignore the implications of their instruments with regard to inclusivity. The multilateral development banks and their economic evaluations have ignored the distributive impacts until very recently. And the efforts of some countries to incorporate measures through multi-criteria analysis have had limited impact.\n", + "This gap must be resolved in any effort toward inclusive urban development. There is little doubt that fiscal approaches must carefully assess who ultimately pays and that alternative finance instruments should be adapted to foster access for all.\n", + "Going forward\n", + "Our research confirms that there are enormous opportunities to advance accessibility theory into practice. At this point, what is desperately needed is to launch a range of case studies that deal with these issues and challenges under different geographic, governance, and economic contexts. The good news is that many initiatives are already underway, and more robust communication channels and technology can support such efforts. In Chicago, researchers created an online platform to visually explore accessibility by location. In Bogota, researchers evaluated how affordability is a key principle of access. And in Cairo and Kigali, researchers used open tools to achieve new insights for accessibility. Sharing the results of these case studies could lead to a new level of cross-disciplinary approaches to improve accessibility and lessen the effects of spatial inequity.\n", + "\n" ] } ], "source": [ + "import requests\n", + "\n", "class Content:\n", - " def __init__(self, title, author, content):\n", + " def __init__(self, url, title, body):\n", + " self.url = url\n", " self.title = title\n", - " self.content = content\n", + " self.body = body\n", "\n", - "def scrapeNYTimes(bs):\n", + "def getPage(url):\n", + " req = requests.get(url)\n", + " return BeautifulSoup(req.text, 'html.parser')\n", + "\n", + "def scrapeNYTimes(url):\n", + " bs = getPage(url)\n", " title = bs.find(\"h1\").text\n", " lines = bs.find_all(\"p\", {\"class\":\"story-content\"})\n", - " print(lines)\n", - " content = [line.text for line in lines].join(\"\\n\")\n", - " return Content(title, content)\n", + " body = '\\n'.join([line.text for line in lines])\n", + " return Content(url, title, body)\n", "\n", - "def scrapeBrookings(bs):\n", + "def scrapeBrookings(url):\n", + " bs = getPage(url)\n", " title = bs.find(\"h1\").text\n", - " content = bs.find(\"div\",{\"class\",\"post-body\"}).text\n", - " return Content(text, content)\n", + " body = bs.find(\"div\",{\"class\",\"post-body\"}).text\n", + " return Content(url, title, body)\n", "\n", - "bsObj = getPage(\"https://www.nytimes.com/2018/01/25/opinion/sunday/silicon-valley-immortality.html\")\n", - "content = scrapeNYTimes(bsObj)\n", - "print(content.title)\n", - "print(content.content)" + "url = 'https://www.brookings.edu/blog/future-development/2018/01/26/delivering-inclusive-urban-access-3-uncomfortable-truths/'\n", + "content = scrapeBrookings(url)\n", + "print('Title: {}'.format(content.title))\n", + "print('URL: {}\\n'.format(content.url))\n", + "print(content.body)\n", + "#url = \"https://www.nytimes.com/2018/01/25/opinion/sunday/silicon-valley-immortality.html\"\n", + "#content = scrapeNYTimes(url)\n", + "#print('Title: {}'.format(content.title))\n", + "#print('URL: {}\\n'.format(content.url))\n", + "#print(content.body)" ] }, { @@ -93,19 +197,19 @@ "class Content:\n", " \"\"\"Common base class for all articles/pages\"\"\"\n", "\n", - " def __init__(self, title, body, url):\n", + " def __init__(self, url, title, body):\n", + " self.url= url\n", " self.title = title\n", " self.body = body\n", - " self.url = url\n", "\n", " def print(self):\n", " \"\"\"\n", " Flexible printing function controls output\n", " \"\"\"\n", " print(\"New article found for: {}\".format(self.topic))\n", - " print(\"TITLE: {}\".format(self.title))\n", - " print(\"BODY:\\n{}\".format(self.body))\n", - " print(\"URL: {}\".format(self.url))\n", + " print('Title: {}'.format(content.title))\n", + " print('URL: {}\\n'.format(content.url))\n", + " print(content.body)\n", "\n", "class Website:\n", " 'Common base class for all articles/pages'\n", @@ -125,6 +229,12 @@ }, "outputs": [], "source": [ + "from website import Website\n", + "from content import Content\n", + "\n", + "import requests\n", + "from bs4 import BeautifulSoup\n", + "\n", "class Crawler:\n", "\n", " def getPage(self, url):\n", @@ -138,8 +248,8 @@ " req = session.get(url, headers=headers)\n", " except requests.exceptions.RequestException:\n", " return None\n", - " bsObj = BeautifulSoup(req.text, \"lxml\")\n", - " return bsObj\n", + " bs = BeautifulSoup(req.text, \"html.parser\")\n", + " return bs\n", "\n", " def safeGet(self, pageObj, selector):\n", " \"\"\"\n", @@ -157,11 +267,11 @@ " Extract content from a given page URL\n", " \"\"\"\n", " pageObj = self.getPage(url)\n", - " title = self.safeGet(pageObj, site.pageTitle)\n", - " body = self.safeGet(pageObj, site.pageBody)\n", + " title = self.safeGet(pageObj, site.titleTag)\n", + " body = self.safeGet(pageObj, site.bodyTag)\n", " if title != \"\" and body != \"\":\n", " content = Content(topic, title, body, url)\n", - " content.print()" + " content.print()\n" ] }, { @@ -182,24 +292,29 @@ } ], "source": [ - "\n", - "\n", "crawler = Crawler()\n", "\n", "siteData = [\n", - " [\"O'Reilly Media\",\"http://oreilly.com\",\"https://ssearch.oreilly.com/?q=\", \"article.product-result\",\"p.title a\",True,\"h1\",\"section#product-description\"],\n", - " [\"Reuters\",\"http://reuters.com\",\"http://www.reuters.com/search/news?blob=\",\"div.search-result-content\",\"h3.search-result-title a\",False,\"h1\",\"div.ArticleBody_body_2ECha\"],\n", - " [\"Brookings\",\"http://www.brookings.edu\",\"https://www.brookings.edu/search/?s=\",\"div.list-content article\",\"h4.title a\",True,\"h1\",\"div.post-body\"]\n", + " [\"O'Reilly Media\",\"http://oreilly.com\", \"h1\", \"section#product-description\"],\n", + " [\"Reuters\",\"http://reuters.com\", \"h1\",\"div.ArticleBody_body_2ECha\"],\n", + " [\"Brookings\",\"http://www.brookings.edu\", \"h1\",\"div.post-body\"]\n", " ]\n", "sites = []\n", "for row in siteData:\n", - " sites.append(Website(row[0], row[1], row[2], row[3], row[4], row[5], row[6], row[7]))\n", + " sites.append(Website(row[0], row[1], row[2]))\n", "\n", "crawler.parse(sites[0], \"http://shop.oreilly.com/product/0636920028154.do\")\n", "crawler.parse(sites[1], \"http://www.reuters.com/article/us-usa-epa-pruitt-idUSKBN19W2D0\")\n", "crawler.parse(sites[2], \"https://www.brookings.edu/blog/techtank/2016/03/01/idea-to-retire-old-methods-of-policy-education/\")" ] }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Crawling through sites with search" + ] + }, { "cell_type": "code", "execution_count": null, @@ -207,7 +322,177 @@ "collapsed": true }, "outputs": [], + "source": [ + "class Content:\n", + " \"\"\"Common base class for all articles/pages\"\"\"\n", + "\n", + " def __init__(self, topic, title, body, url):\n", + " self.topic = topic\n", + " self.title = title\n", + " self.body = body\n", + " self.url = url\n", + "\n", + " def print(self):\n", + " \"\"\"\n", + " Flexible printing function controls output\n", + " \"\"\"\n", + " print(\"New article found for: {}\".format(self.topic))\n", + " print(\"TITLE: {}\".format(self.title))\n", + " print(\"BODY:\\n{}\".format(self.body))\n", + " print(\"URL: {}\".format(self.url))" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "class Website:\n", + " \"\"\"Common base class for all articles/pages\"\"\"\n", + "\n", + " def __init__(self, name, url, searchUrl, resultListing, resultUrl, absoluteUrl, titleTag, bodyTag):\n", + " self.name = name\n", + " self.url = url\n", + " self.searchUrl = searchUrl\n", + " self.resultListing = resultListing\n", + " self.resultUrl = resultUrl\n", + " self.absoluteUrl=absoluteUrl\n", + " self.titleTag = titleTag\n", + " self.bodyTag = bodyTag" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from website import Website\n", + "from content import Content\n", + "\n", + "import requests\n", + "from bs4 import BeautifulSoup\n", + "\n", + "class Crawler:\n", + "\n", + " def getPage(self, url):\n", + " \"\"\"\n", + " Utilty function used to get a Beautiful Soup object from a given URL\n", + " \"\"\"\n", + " print(\"Retrieving URL:\\n{}\".format(url))\n", + " session = requests.Session()\n", + " headers = {\"User-Agent\":\"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.95 Safari/537.36\", \"Accept\":\"text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8\"}\n", + " try:\n", + " req = session.get(url, headers=headers)\n", + " except requests.exceptions.RequestException:\n", + " return None\n", + " bs = BeautifulSoup(req.text, \"html.parser\")\n", + " return bs\n", + "\n", + " def safeGet(self, pageObj, selector):\n", + " \"\"\"\n", + " Utilty function used to get a content string from a Beautiful Soup\n", + " object and a selector. Returns an empty string if no object\n", + " is found for the given selector\n", + " \"\"\"\n", + " childObj = pageObj.select(selector)\n", + " if childObj is not None and len(childObj) > 0:\n", + " return childObj[0].get_text()\n", + " return \"\"\n", + "\n", + " def search(self, topic, site):\n", + " \"\"\"\n", + " Searches a given website for a given topic and records all pages found\n", + " \"\"\"\n", + " bs = self.getPage(site.searchUrl+topic)\n", + " searchResults = bs.select(site.resultListing)\n", + " for result in searchResults:\n", + " url = result.select(site.resultUrl)[0].attrs[\"href\"]\n", + " #Check to see whether it's a relative or an absolute URL\n", + " if(site.absoluteUrl):\n", + " pageObj = self.getPage(url)\n", + " else:\n", + " pageObj = self.getPage(site.url+url)\n", + " if pageObj is None:\n", + " print(\"Something was wrong with that page or URL. Skipping!\")\n", + " return\n", + " title = self.safeGet(pageObj, site.titleTag)\n", + " body = self.safeGet(pageObj, site.bodyTag)\n", + " if title != \"\" and body != \"\":\n", + " content = Content(topic, title, body, url)\n", + " content.print()\n", + "\n", + "\n", + "crawler = Crawler()\n", + "\n", + "siteData = [\n", + " [\"O'Reilly Media\",\"http://oreilly.com\",\"https://ssearch.oreilly.com/?q=\", \"article.product-result\",\"p.title a\",True,\"h1\",\"section#product-description\"],\n", + " [\"Reuters\",\"http://reuters.com\",\"http://www.reuters.com/search/news?blob=\",\"div.search-result-content\",\"h3.search-result-title a\",False,\"h1\",\"div.ArticleBody_body_2ECha\"],\n", + " [\"Brookings\",\"http://www.brookings.edu\",\"https://www.brookings.edu/search/?s=\",\"div.list-content article\",\"h4.title a\",True,\"h1\",\"div.post-body\"]\n", + " ]\n", + "sites = []\n", + "for row in siteData:\n", + " sites.append(Website(row[0], row[1], row[2], row[3], row[4], row[5], row[6], row[7]))\n", + "\n", + "topics = [\"python\",\"data science\"]\n", + "for topic in topics:\n", + " print(\"GETTING INFO ABOUT: \"+topic)\n", + " for targetSite in sites:\n", + " crawler.search(topic, targetSite)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Crawling Sites through Links" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "class Website:\n", + " \"\"\"Common base class for all articles/pages\"\"\"\n", + "\n", + " def __init__(self, type, name, url, searchUrl, resultListing, resultUrl, absoluteUrl, titleTag, bodyTag):\n", + " self.name = name\n", + " self.url = url\n", + " self.titleTag = titleTag\n", + " self.bodyTag = bodyTag\n", + " self.pageType = pageType" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "class Product(Website):\n", + " \"\"\"Contains information for scraping a product page\"\"\"\n", + " def __init__(self, name, url, titleTag, productNumber, price):\n", + " Website.__init__(self, name, url, TitleTag)\n", + " self.productNumberTag = productNumberTag\n", + " self.priceTag = priceTag\n", + "\n", + "class Article(Website):\n", + " \"\"\"Contains information for scraping an article page\"\"\"\n", + " def __init__(self, name, url, titleTag, bodyTag, dateTag):\n", + " Website.__init__(self, name, url, titleTag)\n", + " self.bodyTag = bodyTag\n", + " self.dateTag = dateTag" + ] } ], "metadata": { diff --git a/v2/Chapter06_StoringData.ipynb b/v2/Chapter06_StoringData.ipynb index c6a3068..dbf4cc5 100644 --- a/v2/Chapter06_StoringData.ipynb +++ b/v2/Chapter06_StoringData.ipynb @@ -22,11 +22,20 @@ "from bs4 import BeautifulSoup\n", "\n", "html = urlopen('http://www.pythonscraping.com')\n", - "bsObj = BeautifulSoup(html, 'html.parser')\n", - "imageLocation = bsObj.find('a', {'id': 'logo'}).find('img')['src']\n", + "bs = BeautifulSoup(html, 'html.parser')\n", + "imageLocation = bs.find('a', {'id': 'logo'}).find('img')['src']\n", "urlretrieve (imageLocation, 'logo.jpg')" ] }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "scrolled": true + }, + "outputs": [], + "source": [] + }, { "cell_type": "code", "execution_count": 2, @@ -68,13 +77,13 @@ "def getAbsoluteURL(baseUrl, source):\n", " if source.startswith('http://www.'):\n", " url = 'http://{}'.format(source[11:])\n", - " elif source.startswith(\"http://\"):\n", + " elif source.startswith('http://'):\n", " url = source\n", - " elif source.startswith(\"www.\"):\n", + " elif source.startswith('www.'):\n", " url = source[4:]\n", - " url = \"http://{}\".format(source)\n", + " url = 'http://{}'.format(source)\n", " else:\n", - " url = \"{}/{}\".format(baseUrl, source)\n", + " url = '{}/{}'.format(baseUrl, source)\n", " if baseUrl not in url:\n", " return None\n", " return url\n", @@ -91,8 +100,8 @@ " return path\n", "\n", "html = urlopen('http://www.pythonscraping.com')\n", - "bsObj = BeautifulSoup(html, 'html.parser')\n", - "downloadList = bsObj.findAll(src=True)\n", + "bs = BeautifulSoup(html, 'html.parser')\n", + "downloadList = bs.findAll(src=True)\n", "\n", "for download in downloadList:\n", " fileUrl = getAbsoluteURL(baseUrl, download['src'])\n", @@ -104,7 +113,7 @@ }, { "cell_type": "code", - "execution_count": 3, + "execution_count": 1, "metadata": {}, "outputs": [], "source": [ @@ -131,9 +140,9 @@ "from bs4 import BeautifulSoup\n", "\n", "html = urlopen('http://en.wikipedia.org/wiki/Comparison_of_text_editors')\n", - "bsObj = BeautifulSoup(html, 'html.parser')\n", + "bs = BeautifulSoup(html, 'html.parser')\n", "#The main comparison table is currently the first table on the page\n", - "table = bsObj.findAll('table',{'class':'wikitable'})[0]\n", + "table = bs.findAll('table',{'class':'wikitable'})[0]\n", "rows = table.findAll('tr')\n", "\n", "csvFile = open('editors.csv', 'wt+')\n", From 89a19981ad51d48189da5b93dc32e14cc58d54f9 Mon Sep 17 00:00:00 2001 From: remitchell Date: Mon, 29 Jan 2018 10:40:17 -0500 Subject: [PATCH 25/47] Cleanup, added crawling through links --- v2/Chapter04_CrawlingModels.ipynb | 983 ++++++++++++++++++++++++++---- 1 file changed, 875 insertions(+), 108 deletions(-) diff --git a/v2/Chapter04_CrawlingModels.ipynb b/v2/Chapter04_CrawlingModels.ipynb index b73e852..211fa3d 100644 --- a/v2/Chapter04_CrawlingModels.ipynb +++ b/v2/Chapter04_CrawlingModels.ipynb @@ -31,9 +31,16 @@ " return bs" ] }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Dealing with different website layouts" + ] + }, { "cell_type": "code", - "execution_count": 16, + "execution_count": 37, "metadata": {}, "outputs": [ { @@ -146,6 +153,31 @@ "Our research confirms that there are enormous opportunities to advance accessibility theory into practice. At this point, what is desperately needed is to launch a range of case studies that deal with these issues and challenges under different geographic, governance, and economic contexts. The good news is that many initiatives are already underway, and more robust communication channels and technology can support such efforts. In Chicago, researchers created an online platform to visually explore accessibility by location. In Bogota, researchers evaluated how affordability is a key principle of access. And in Cairo and Kigali, researchers used open tools to achieve new insights for accessibility. Sharing the results of these case studies could lead to a new level of cross-disciplinary approaches to improve accessibility and lessen the effects of spatial inequity.\n", "\n" ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Title: The Men Who Want to Live Forever\n", + "URL: https://www.nytimes.com/2018/01/25/opinion/sunday/silicon-valley-immortality.html\n", + "\n", + "Would you like to live forever? Some billionaires, already invincible in every other way, have decided that they also deserve not to die. Today several biotech companies, fueled by Silicon Valley fortunes, are devoted to “life extension” — or as some put it, to solving “the problem of death.”\n", + "It’s a cause championed by the tech billionaire Peter Thiel, the TED Talk darling Aubrey de Gray, Google’s billion-dollar Calico longevity lab and investment by Amazon’s Jeff Bezos. The National Academy of Medicine, an independent group, recently dedicated funding to “end aging forever.”\n", + "As the longevity entrepreneur Arram Sabeti told The New Yorker: “The proposition that we can live forever is obvious. It doesn’t violate the laws of physics, so we can achieve it.” Of all the slightly creepy aspects to this trend, the strangest is the least noticed: The people publicly championing life extension are mainly men.\n", + "Not all of them, of course. In 2009, Elizabeth Blackburn received the Nobel Prize for her work on telomeres, protein caps on chromosomes that may be a key to understanding aging. Cynthia Kenyon, the vice president for aging research at Calico, studied life extension long before it was cool; her former protégée, Laura Deming, now runs a venture capital fund for the cause. But these women are focused on curbing age-related pathology, a concept about as controversial as cancer research. They do not appear thirsty for the Fountain of Youth.\n", + "Professor Blackburn’s new book on telomeres couldn’t be clearer. “Does our research show that by maintaining your telomeres you will live into your hundreds?” it says. “No. Everyone’s cells become old and eventually we die.” Ms. Kenyon once described her research’s goal as “to just have a healthy life and then turn out the lights.” Even Ms. Deming, a 23-year-old prodigy who worked in Ms. Kenyon’s lab at age 12, points out that “aging is innately important to us.”\n", + "Few of these experts come close to matching the gaudy statements of the longevity investor and “biohacker” Dave Asprey, who has told journalists, “I decided that I was just not going to die.” Or those of Brian Hanley, a microbiologist who has tested an anti-aging gene therapy he developed on himself, who claimed: “There’s a bunch of things that will need to be done to achieve life spans into at least hundreds of years. But we’ll get there.” Or of the 74-year-old fashion mogul Peter Nygard, who during a promotional clip receives injections of his own stem cells to reverse his aging while declaring: “Ponce de León had the right idea. He was just too early. That was then. This is now.”\n", + "I came across Mr. Nygard’s ode to human endurance three years ago while beginning research on a novel about a woman who can’t die, and watching that video allowed me to experience something close to life extension. As Mr. Nygard compared himself to Leonardo da Vinci and Benjamin Franklin while dancing with a bevy of models — or as a voice-over explained, “living a life most can only dream of” — nine minutes of YouTube expanded into a vapid eternity, where time melted into a vortex of solipsism.\n", + "At that time I was immersed in caring for my four young children, and this paean to everlasting youth seemed especially stupid. I recall thinking that if this was eternal life, death didn’t seem that bad.\n", + "But now, as powerful men have begun falling like dominoes under accusations of sexual assault, that video with its young women clustered around an elderly multimillionaire has haunted me anew. As I recall my discomfort with the proclamations of longevity-driven men who hope to achieve “escape velocity,” I think of the astonishing hubris of the Harvey Weinsteins of the world, those who saw young women’s bodies as theirs for the taking.\n", + "Much has been said about why we allowed such behavior to go unchecked. What has remained unsaid, because it is so obvious, is what would make someone so shameless in the first place: These people believed they were invincible. They saw their own bodies as entirely theirs and other people’s bodies as at their disposal; apparently nothing in their lives led them to believe otherwise.\n", + "Historically, this is a mistake that few women would make, because until very recently, the physical experience of being a woman entailed exactly the opposite — and not only because women have to hold their keys in self-defense while walking through parking lots at night. It’s only very recently that women have widely participated in public life, but it’s even more recently that men have been welcome, or even expected, to provide physical care for vulnerable people.\n", + "Only for a nanosecond of human history have men even slightly shared what was once exclusively a woman’s burden: the relentless daily labor of caring for another person’s body, the life-preserving work of cleaning feces and vomit, the constant cycle of cooking and feeding and blanketing and bathing, whether for the young, the ill or the old. For nearly as long as there have been humans, being a female human has meant a daily nonoptional immersion in the fragility of human life and the endless effort required to sustain it.\n", + "Obviously not everyone who provides care for others is a saint. But engaging in that daily devotion, or even living with its expectation, has enormous potential to change a person. It forces one to constantly imagine the world from someone else’s point of view: Is he hungry? Maybe she’s tired. Is his back hurting him? What is she trying to say?\n", + "The most obvious cure for today’s gender inequities is to put more women in power. But if we really hope to create an equal society, we will also need more men to care for the powerless — more women in the boardroom, but also more men at the nurses’ station and the changing table, immersed in daily physical empathy. If that sounds like an evolutionary impossibility, well, it doesn’t violate the laws of physics, so we can achieve it. It is surely worth at least as much investment as defeating death.\n", + "Perhaps it takes the promise of immortality to inspire the self-absorbed to invest in unsexy work like Alzheimer’s research. If so, we may all one day bless the inane death-defiance as a means to a worthy end.\n", + "But men who hope to live forever might pause on their eternal journey to consider the frightening void at invincibility’s core. Death is the ultimate vulnerability. It is the moment when all of us must confront exactly what so many women have known all too well: You are a body, only a body, and nothing more.\n" + ] } ], "source": [ @@ -179,26 +211,27 @@ "print('Title: {}'.format(content.title))\n", "print('URL: {}\\n'.format(content.url))\n", "print(content.body)\n", - "#url = \"https://www.nytimes.com/2018/01/25/opinion/sunday/silicon-valley-immortality.html\"\n", - "#content = scrapeNYTimes(url)\n", - "#print('Title: {}'.format(content.title))\n", - "#print('URL: {}\\n'.format(content.url))\n", - "#print(content.body)" + "\n", + "url = \"https://www.nytimes.com/2018/01/25/opinion/sunday/silicon-valley-immortality.html\"\n", + "content = scrapeNYTimes(url)\n", + "print('Title: {}'.format(content.title))\n", + "print('URL: {}\\n'.format(content.url))\n", + "print(content.body)" ] }, { "cell_type": "code", - "execution_count": null, - "metadata": { - "collapsed": true - }, + "execution_count": 40, + "metadata": {}, "outputs": [], "source": [ "class Content:\n", - " \"\"\"Common base class for all articles/pages\"\"\"\n", - "\n", + " \"\"\"\n", + " Common base class for all articles/pages\n", + " \"\"\"\n", + " \n", " def __init__(self, url, title, body):\n", - " self.url= url\n", + " self.url = url\n", " self.title = title\n", " self.body = body\n", "\n", @@ -206,50 +239,40 @@ " \"\"\"\n", " Flexible printing function controls output\n", " \"\"\"\n", - " print(\"New article found for: {}\".format(self.topic))\n", - " print('Title: {}'.format(content.title))\n", - " print('URL: {}\\n'.format(content.url))\n", - " print(content.body)\n", + " print(\"URL: {}\".format(self.url))\n", + " print(\"TITLE: {}\".format(self.title))\n", + " print(\"BODY:\\n{}\".format(self.body))\n", + " \n", "\n", "class Website:\n", - " 'Common base class for all articles/pages'\n", + " \"\"\" \n", + " Contains information about website structure\n", + " \"\"\"\n", "\n", - " def __init__(pageTitle, pageBody):\n", + " def __init__(self, name, url, titleTag, bodyTag):\n", " self.name = name\n", " self.url = url\n", - " self.pageTitle = pageTitle\n", - " self.pageBody = pageBody" + " self.titleTag = titleTag\n", + " self.bodyTag = bodyTag" ] }, { "cell_type": "code", - "execution_count": null, - "metadata": { - "collapsed": true - }, + "execution_count": 41, + "metadata": {}, "outputs": [], "source": [ - "from website import Website\n", - "from content import Content\n", - "\n", "import requests\n", "from bs4 import BeautifulSoup\n", "\n", "class Crawler:\n", "\n", " def getPage(self, url):\n", - " \"\"\"\n", - " Utilty function used to get a Beautiful Soup object from a given URL\n", - " \"\"\"\n", - " print(\"Retrieving URL:\\n{}\".format(url))\n", - " session = requests.Session()\n", - " headers = {\"User-Agent\":\"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.95 Safari/537.36\", \"Accept\":\"text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8\"}\n", " try:\n", - " req = session.get(url, headers=headers)\n", + " req = requests.get(url)\n", " except requests.exceptions.RequestException:\n", - " return None\n", - " bs = BeautifulSoup(req.text, \"html.parser\")\n", - " return bs\n", + " return None \n", + " return BeautifulSoup(req.text, 'html.parser')\n", "\n", " def safeGet(self, pageObj, selector):\n", " \"\"\"\n", @@ -257,37 +280,509 @@ " object and a selector. Returns an empty string if no object\n", " is found for the given selector\n", " \"\"\"\n", - " childObj = pageObj.select(selector)\n", - " if childObj is not None and len(childObj) > 0:\n", - " return childObj[0].get_text()\n", - " return \"\"\n", + " selectedElems = pageObj.select(selector)\n", + " if selectedElems is not None and len(selectedElems) > 0:\n", + " return '\\n'.join([elem.get_text() for elem in selectedElems])\n", + " return ''\n", "\n", " def parse(self, site, url):\n", " \"\"\"\n", " Extract content from a given page URL\n", " \"\"\"\n", - " pageObj = self.getPage(url)\n", - " title = self.safeGet(pageObj, site.titleTag)\n", - " body = self.safeGet(pageObj, site.bodyTag)\n", - " if title != \"\" and body != \"\":\n", - " content = Content(topic, title, body, url)\n", - " content.print()\n" + " bs = self.getPage(url)\n", + " if bs is not None:\n", + " title = self.safeGet(bs, site.titleTag)\n", + " body = self.safeGet(bs, site.bodyTag)\n", + " if title != '' and body != '':\n", + " content = Content(url, title, body)\n", + " content.print()" ] }, { "cell_type": "code", - "execution_count": 2, + "execution_count": 42, "metadata": {}, "outputs": [ { - "ename": "ModuleNotFoundError", - "evalue": "No module named 'Crawler'", - "output_type": "error", - "traceback": [ - "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", - "\u001b[0;31mModuleNotFoundError\u001b[0m Traceback (most recent call last)", - "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0;32mimport\u001b[0m \u001b[0mCrawler\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 2\u001b[0m \u001b[0;32mimport\u001b[0m \u001b[0mContent\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 3\u001b[0m \u001b[0;32mimport\u001b[0m \u001b[0mWebsite\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 4\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 5\u001b[0m \u001b[0mcrawler\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mCrawler\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;31mModuleNotFoundError\u001b[0m: No module named 'Crawler'" + "name": "stdout", + "output_type": "stream", + "text": [ + "title is:\n", + "Learning Python, 5th Edition \n", + "Body is:\n", + "\n", + "Get a comprehensive, in-depth introduction to the core Python language with this hands-on book. Based on author Mark Lutz’s popular training course, this updated fifth edition will help you quickly write efficient, high-quality code with Python. It’s an ideal way to begin, whether you’re new to programming or a professional developer versed in other languages. \n", + "\n", + "Complete with quizzes, exercises, and helpful illustrations, this easy-to-follow, self-paced tutorial gets you started with both Python 2.7 and 3.3— the latest releases in the 3.X and 2.X lines—plus all other releases in common use today. You’ll also learn some advanced language features that recently have become more common in Python code.\n", + "\n", + "Explore Python’s major built-in object types such as numbers, lists, and dictionaries \n", + "Create and process objects with Python statements, and learn Python’s general syntax model\n", + "Use functions to avoid code redundancy and package code for reuse\n", + "Organize statements, functions, and other tools into larger components with modules \n", + "Dive into classes: Python’s object-oriented programming tool for structuring code\n", + "Write large programs with Python’s exception-handling model and development tools\n", + "Learn advanced Python tools, including decorators, descriptors, metaclasses, and Unicode processing\n", + "\n", + "\n", + "URL: http://shop.oreilly.com/product/0636920028154.do\n", + "TITLE: Learning Python, 5th Edition \n", + "BODY:\n", + "\n", + "Get a comprehensive, in-depth introduction to the core Python language with this hands-on book. Based on author Mark Lutz’s popular training course, this updated fifth edition will help you quickly write efficient, high-quality code with Python. It’s an ideal way to begin, whether you’re new to programming or a professional developer versed in other languages. \n", + "\n", + "Complete with quizzes, exercises, and helpful illustrations, this easy-to-follow, self-paced tutorial gets you started with both Python 2.7 and 3.3— the latest releases in the 3.X and 2.X lines—plus all other releases in common use today. You’ll also learn some advanced language features that recently have become more common in Python code.\n", + "\n", + "Explore Python’s major built-in object types such as numbers, lists, and dictionaries \n", + "Create and process objects with Python statements, and learn Python’s general syntax model\n", + "Use functions to avoid code redundancy and package code for reuse\n", + "Organize statements, functions, and other tools into larger components with modules \n", + "Dive into classes: Python’s object-oriented programming tool for structuring code\n", + "Write large programs with Python’s exception-handling model and development tools\n", + "Learn advanced Python tools, including decorators, descriptors, metaclasses, and Unicode processing\n", + "\n", + "\n", + "title is:\n", + "EPA chief wants scientists to debate climate on TV\n", + "Body is:\n", + "WASHINGTON (Reuters) - The U.S. Environmental Protection Agency is in the early stages of launching a debate about climate change that could air on television – challenging scientists to prove the widespread view that global warming is a serious threat, the head of the agency said. The move comes as the administration of President Donald Trump seeks to roll back a slew of Obama-era regulations limiting carbon dioxide emissions from fossil fuels, and begins a withdrawal from the Paris Climate Agreement - a global pact to stem planetary warming through emissions cuts. “There are lots of questions that have not been asked and answered (about climate change),” EPA Administrator Scott Pruitt told Reuters in an interview late on Monday. “Who better to do that than a group of scientists... getting together and having a robust discussion for all the world to see,” he added without explaining how the scientists would be chosen. Asked if he thought the debate should be televised, Pruitt said: “I think so. I think so. I mean, I don’t know yet, but you want this to be open to the world. You want this to be on full display. I think the American people would be very interested in consuming that. I think they deserve it.” Pruitt, one of the most controversial figures in the Trump administration, has repeatedly expressed doubts about climate change – one of the main points of contention in his narrow confirmation by the Senate. While acknowledging the planet is warming, Pruitt says he questions the gravity of the problem and the need for regulations that require companies to take costly measures to reduce their carbon footprint. “It is a question about how much we contribute to it. How do we measure that with precision? And by the way, are we on an unsustainable path? And is it causing an existential threat?” he said in the interview. Since taking up his role at EPA, he has emerged as one of the more prolific Trump cabinet appointees, taking steps to undo more than two dozen regulations, and influencing Trump’s decision to pull the United States from the Paris climate change deal, agreed by nearly 200 countries in 2015. Pruitt rejected global criticism of the United States for pulling out of the climate deal, which Trump has said would have cost America trillions of dollars without benefit. Environmental Protection Agency Administrator Scott Pruitt waves after an interview for Reuters at his office in Washington, U.S., July 10, 2017. REUTERS/Yuri Gripas“We have nothing to be apologetic about,” Pruitt said. “It was absolutely a decision of courage and fortitude and truly represented an America First strategy with respect to how we are leading on this issue.” Pruitt said the United States had already cut its carbon output to the lowest levels in nearly 25 years without mandates, thanks mainly to increased use of natural gas - which burns cleaner than coal. “RED TEAM, BLUE TEAM” TACTICS Slideshow (4 Images)Pruitt said his desire for the agency to host an ongoing climate change debate was inspired by two articles published in April – one in the Wall Street Journal by theoretical physicist Steve Koonin, who served as undersecretary of energy under Obama – and one by conservative columnist Brett Stephens in the New York Times. Koonin’s article made the case that climate science should use the “red team-blue team” methodology used by the national security community to test assumptions. Stephens’ article criticized claims of complete certainty in climate science, saying that it “traduces the spirit of science.” Pruitt said scientists should not scoff at the idea of participating in these debates. Related CoverageTranscript of Reuters interview with EPA Administrator Scott Pruitt“If you’re going to win and if you’re so certain about it, come and do your deal. They shouldn’t be scared of the debate and discussion,” he said. Pruitt said debate is not necessarily aimed at undermining the 2009 “endangerment finding,” the scientific determination that carbon dioxide harms human health that formed the basis for the Democratic Obama administration’s regulation of greenhouse gases. He said there may be a legal basis to challenge the finding but would prefer Congress weigh in on the matter. In the interview, Pruitt added that he intended to deal “very aggressively” with automakers that use devices to cheat emissions tests, and would also seek to boost accountability for companies to clean up polluted sites under the Superfund program. He said EPA was also not ready to decide yet on a change proposed by Trump’s special adviser Carl Icahn to the U.S. biofuels program, that would shift the burden of blending biofuels like ethanol into gasoline away from refiners to companies further down the supply chain. Editing by Richard Valdmanis and Marguerita ChoyOur Standards:The Thomson Reuters Trust Principles.\n", + "URL: http://www.reuters.com/article/us-usa-epa-pruitt-idUSKBN19W2D0\n", + "TITLE: EPA chief wants scientists to debate climate on TV\n", + "BODY:\n", + "WASHINGTON (Reuters) - The U.S. Environmental Protection Agency is in the early stages of launching a debate about climate change that could air on television – challenging scientists to prove the widespread view that global warming is a serious threat, the head of the agency said. The move comes as the administration of President Donald Trump seeks to roll back a slew of Obama-era regulations limiting carbon dioxide emissions from fossil fuels, and begins a withdrawal from the Paris Climate Agreement - a global pact to stem planetary warming through emissions cuts. “There are lots of questions that have not been asked and answered (about climate change),” EPA Administrator Scott Pruitt told Reuters in an interview late on Monday. “Who better to do that than a group of scientists... getting together and having a robust discussion for all the world to see,” he added without explaining how the scientists would be chosen. Asked if he thought the debate should be televised, Pruitt said: “I think so. I think so. I mean, I don’t know yet, but you want this to be open to the world. You want this to be on full display. I think the American people would be very interested in consuming that. I think they deserve it.” Pruitt, one of the most controversial figures in the Trump administration, has repeatedly expressed doubts about climate change – one of the main points of contention in his narrow confirmation by the Senate. While acknowledging the planet is warming, Pruitt says he questions the gravity of the problem and the need for regulations that require companies to take costly measures to reduce their carbon footprint. “It is a question about how much we contribute to it. How do we measure that with precision? And by the way, are we on an unsustainable path? And is it causing an existential threat?” he said in the interview. Since taking up his role at EPA, he has emerged as one of the more prolific Trump cabinet appointees, taking steps to undo more than two dozen regulations, and influencing Trump’s decision to pull the United States from the Paris climate change deal, agreed by nearly 200 countries in 2015. Pruitt rejected global criticism of the United States for pulling out of the climate deal, which Trump has said would have cost America trillions of dollars without benefit. Environmental Protection Agency Administrator Scott Pruitt waves after an interview for Reuters at his office in Washington, U.S., July 10, 2017. REUTERS/Yuri Gripas“We have nothing to be apologetic about,” Pruitt said. “It was absolutely a decision of courage and fortitude and truly represented an America First strategy with respect to how we are leading on this issue.” Pruitt said the United States had already cut its carbon output to the lowest levels in nearly 25 years without mandates, thanks mainly to increased use of natural gas - which burns cleaner than coal. “RED TEAM, BLUE TEAM” TACTICS Slideshow (4 Images)Pruitt said his desire for the agency to host an ongoing climate change debate was inspired by two articles published in April – one in the Wall Street Journal by theoretical physicist Steve Koonin, who served as undersecretary of energy under Obama – and one by conservative columnist Brett Stephens in the New York Times. Koonin’s article made the case that climate science should use the “red team-blue team” methodology used by the national security community to test assumptions. Stephens’ article criticized claims of complete certainty in climate science, saying that it “traduces the spirit of science.” Pruitt said scientists should not scoff at the idea of participating in these debates. Related CoverageTranscript of Reuters interview with EPA Administrator Scott Pruitt“If you’re going to win and if you’re so certain about it, come and do your deal. They shouldn’t be scared of the debate and discussion,” he said. Pruitt said debate is not necessarily aimed at undermining the 2009 “endangerment finding,” the scientific determination that carbon dioxide harms human health that formed the basis for the Democratic Obama administration’s regulation of greenhouse gases. He said there may be a legal basis to challenge the finding but would prefer Congress weigh in on the matter. In the interview, Pruitt added that he intended to deal “very aggressively” with automakers that use devices to cheat emissions tests, and would also seek to boost accountability for companies to clean up polluted sites under the Superfund program. He said EPA was also not ready to decide yet on a change proposed by Trump’s special adviser Carl Icahn to the U.S. biofuels program, that would shift the burden of blending biofuels like ethanol into gasoline away from refiners to companies further down the supply chain. Editing by Richard Valdmanis and Marguerita ChoyOur Standards:The Thomson Reuters Trust Principles.\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "title is:\n", + "Idea to Retire: Old methods of policy education\n", + "Idea to Retire: Old methods of policy education\n", + "Body is:\n", + "\n", + "Public policy and public affairs schools aim to train competent creators and implementers of government policy. While drawing on the principles that gird our economic and political systems to provide a well-rounded education, like law schools and business schools, policy schools provide professional training. They are quite distinct from graduate programs in political science or economics which aim to train the next generation of academics. As professional training programs, they add value by imparting both the skills which are relevant to current employers, and skills which we know will be relevant as organizations and societies evolve. \n", + "The relevance of the skills that policy programs impart to address problems of today and tomorrow bears further discussion. We are living through an era in which societies are increasingly interconnected. The wide-scale adoption of devices such as the smartphone is having a profound impact on our culture, communities, and economy. The use of social and digital media and associated means of communication enabled by mobile devices is changing the tone, content, and geographic scope of our conversations, modifying how information is generated and consumed, and changing the very nature of citizen engagement. \n", + "Information technology-based platforms provisioned by private providers such as Facebook, Google, Uber, and Lyft maintain information about millions of citizens and enable services such as transportation that were mediated in the past solely by the public sector. Surveillance for purposes of public safety via large-scale deployment of sensors also raises fundamental questions about information privacy. From technology-enabled global delivery of work to displacement and replacement of categories of work, some studies estimate that up to 47 percent of U.S. employment might be at risk of computerization with an attendant rise in income inequality. These technology-induced changes will affect every policy domain. How should policy programs best prepare students to address societal challenges in this world that is being transformed by technology? We believe the answer lies in educating students to be “men and women of intelligent action.” \n", + "A model of policy education\n", + "We begin with a skills-based model of policy education. These four essential skills address the general problems policy practitioners frequently face:\n", + "\n", + "Design skills to craft policy ideas \n", + "Analytical skills to make smart ex ante decisions \n", + "Interpersonal experience to manage policy implementation  \n", + "Evaluative skills to assess outcomes ex post and correct course if necessary\n", + "\n", + "These skills make up the policy analysis toolkit required to be data driven practitioner of “intelligent action” in any policy domain. This toolkit needs to be supplemented by an understanding of how technology is transforming societal challenges, enabling new solutions, or disrupting existing regulatory regimes. This understanding is essential to policy formulation and implementation. \n", + "Pillar 1: Design skills\n", + "As with engineering, where design precedes analysis, this first pillar seeks to educate students in thinking creatively about problems in order to devise and develop policy ideas. Using ideas derived from design, divergent and convergent thinking principles are employed to generate, explore, and arrive at a candidate set of solutions. Using Uber as an example, an approach to identify and explore the key policy issues such as convenience, costs, driver working hours, and insurance would involve interviewing and observing both incumbent taxi drivers and Uber drivers. This in turn would lead to a set of alternatives that deserve further and careful consideration.  Using these skills, candidate designs and choices that are generated can be evaluated using the policy analytic toolkit. \n", + "Pillar 2: Analytical skills\n", + "\n", + "\n", + "Related\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " \n", + "\n", + "\n", + "\n", + "TechTank\n", + "The Blockchain: What It Is and Why It Matters\n", + "\n", + "Mohit Kaushal and Sheel Tyle\n", + "Tuesday, January 13, 2015\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " \n", + "\n", + "\n", + "\n", + "TechTank\n", + "How technology is changing manufacturing\n", + "\n", + "Darrell M. West\n", + "Thursday, June 2, 2016\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " \n", + "\n", + "\n", + "\n", + "TechTank\n", + "Rural and urban America divided by broadband access\n", + "\n", + "Darrell M. West and Jack Karsten\n", + "Monday, July 18, 2016\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "At Carnegie Mellon, we are often cited in media and interrogated by peers on our approach to analytical and technology skills education. Curiosity about which skills are the “right” skills to teach policy practitioners are common, but we believe this is the wrong approach. We instead begin from the premise that policy or management decisions should be grounded in evidence.  We then determine the skills required to assemble the types of evidence that will likely be available to policy makers in the future.  In increasingly instrumented environments where citizens and infrastructure produce continuous streams of data, making sense of it all will require a somewhat different set of skills. We believe that a grounding in micro-economics, operations research, statistics, and program evaluation (aka causal inference) to be an essential core to policy programs. \n", + "New coursework will teach students to work with multi-variable data and machine learning with an emphasis on prediction. This material ought to be part of the required coursework in statistics given the importance of prediction in many policy implementation settings. Along the same lines, the ability to work with unstructured data (especially text) and data visualization will become increasingly relevant to all students, not just those students who want to specialize in data analytics. Finally, knowledge of data manipulation and analysis languages such as Python and R for analytic work will be important because data often has to be massaged and cleansed prior to analysis. An important task for programs will be to determine the competencies expected of graduates. \n", + "Pillar 3: Interpersonal experiences\n", + "The third pillar of the skills-based model is interpersonal experience, where the practiced habits of good communication and steady negotiation developed with a sound understanding of organizations, their design and their behaviors. We label these purposely as experiences rather than skills because we believe they are best practiced either in the real-world or in simulated real-world settings. It is also in this pillar where practitioners learn the knowledge necessary to become credible experts in their domain. We believe that in addition to core coursework in the area, a supplementary curriculum which provides students with opportunities to gain these experiences is an essential component of our educational model.\n", + "Pillar 4: Evaluative skills\n", + "\n", + "\n", + "Related Books\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "Constitution 3.0\n", + "\n", + "\n", + "\t\t\t\t\t\tEdited by Jeffrey Rosen and Benjamin Wittes \n", + "2013\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "The Need for Speed\n", + "\n", + "\n", + "\t\t\t\t\t\tBy Robert E. Litan and Hal J. Singer \n", + "2013\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "After the Breakup\n", + "\n", + "\n", + "\t\t\t\t\t\tBy Robert W. Crandall \n", + "2010\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "The ability to carefully diagnose the effectiveness of policy or management interventions is the fourth pillar of our model. It is insufficient to create and execute policy without measurement, and this is where both careful thought to the fundamental issues of measurement and evaluation become important. The ability to make objective judgments on the benefits, liabilities, and unintended consequences of prior policies is the goal of this set of skills. Here, sound statistical and econometric training with an understanding of the principles of causal inference is essential. In addition, program evaluation skills such as cost-benefit and financial analysis help practitioners round out their evaluation skills by considering both non-monetary and economic impacts.\n", + "What should be retired?\n", + "A skills-based approach might replace certain aspects of existing policy training.  This depends on a number of factors specific to each institution, but three generally applicable observations are clear. First, real-world experiences are a powerful way to encode domain learning as well as project management skills. Through project-based work, students can learn about institutional contexts in specific policy domains and political processes such as budgeting. Second, team-based projects allow students to learn and apply principles of management and organizational behavior. At Carnegie Mellon, we refer to these as “systems synthesis” projects, since they require students to adopt a systemic point of view and to synthesize a number of skills in their policy analysis toolkit. Third, interpersonal skills training can be practiced through activities such as weekend negotiation exercises, hackathons, and speaker series. These activities can be highly intentional and fashioned to reinforce skills rather than as a recess from the “real work” of classroom training. Since students complete graduate programs in such a short time, counseling them to focus on outcomes from day one will allow them to choose a reinforcing set of coursework and real-world experiences. \n", + "In summary, we argue for a model of policy education that views practitioners as future problem solvers. Good policy education must consider the ways in which problems will present themselves, and the ways in which answers will obscure themselves. Rigorous training grounded in the analysis of available evidence and buoyed by real-world interpersonal experiences is a sound approach to relevant, durable policy training.\n", + " \n", + "Authors\n", + "\n", + "\n", + "\n", + "\n", + "R\n", + "\n", + "\n", + "\n", + "Ramayya Krishnan\n", + "Ramayya Krishnan is the dean of H. John Heinz III College of Information Systems and Public Policy at Carnegie Mellon University where he is the W.W. Cooper and Ruth F. Cooper Professor of Management Science and Information Systems.\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "J\n", + "\n", + "\n", + "\n", + "Jon Nehlsen\n", + "Jon Nehlsen is senior director of external relations at H. John Heinz III College of Information Systems and Public Policy at Carnegie Mellon University.\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "Read other essays in the Ideas to Retire blog series here.\n", + "\n", + "URL: https://www.brookings.edu/blog/techtank/2016/03/01/idea-to-retire-old-methods-of-policy-education/\n", + "TITLE: Idea to Retire: Old methods of policy education\n", + "Idea to Retire: Old methods of policy education\n", + "BODY:\n", + "\n", + "Public policy and public affairs schools aim to train competent creators and implementers of government policy. While drawing on the principles that gird our economic and political systems to provide a well-rounded education, like law schools and business schools, policy schools provide professional training. They are quite distinct from graduate programs in political science or economics which aim to train the next generation of academics. As professional training programs, they add value by imparting both the skills which are relevant to current employers, and skills which we know will be relevant as organizations and societies evolve. \n", + "The relevance of the skills that policy programs impart to address problems of today and tomorrow bears further discussion. We are living through an era in which societies are increasingly interconnected. The wide-scale adoption of devices such as the smartphone is having a profound impact on our culture, communities, and economy. The use of social and digital media and associated means of communication enabled by mobile devices is changing the tone, content, and geographic scope of our conversations, modifying how information is generated and consumed, and changing the very nature of citizen engagement. \n", + "Information technology-based platforms provisioned by private providers such as Facebook, Google, Uber, and Lyft maintain information about millions of citizens and enable services such as transportation that were mediated in the past solely by the public sector. Surveillance for purposes of public safety via large-scale deployment of sensors also raises fundamental questions about information privacy. From technology-enabled global delivery of work to displacement and replacement of categories of work, some studies estimate that up to 47 percent of U.S. employment might be at risk of computerization with an attendant rise in income inequality. These technology-induced changes will affect every policy domain. How should policy programs best prepare students to address societal challenges in this world that is being transformed by technology? We believe the answer lies in educating students to be “men and women of intelligent action.” \n", + "A model of policy education\n", + "We begin with a skills-based model of policy education. These four essential skills address the general problems policy practitioners frequently face:\n", + "\n", + "Design skills to craft policy ideas \n", + "Analytical skills to make smart ex ante decisions \n", + "Interpersonal experience to manage policy implementation  \n", + "Evaluative skills to assess outcomes ex post and correct course if necessary\n", + "\n", + "These skills make up the policy analysis toolkit required to be data driven practitioner of “intelligent action” in any policy domain. This toolkit needs to be supplemented by an understanding of how technology is transforming societal challenges, enabling new solutions, or disrupting existing regulatory regimes. This understanding is essential to policy formulation and implementation. \n", + "Pillar 1: Design skills\n", + "As with engineering, where design precedes analysis, this first pillar seeks to educate students in thinking creatively about problems in order to devise and develop policy ideas. Using ideas derived from design, divergent and convergent thinking principles are employed to generate, explore, and arrive at a candidate set of solutions. Using Uber as an example, an approach to identify and explore the key policy issues such as convenience, costs, driver working hours, and insurance would involve interviewing and observing both incumbent taxi drivers and Uber drivers. This in turn would lead to a set of alternatives that deserve further and careful consideration.  Using these skills, candidate designs and choices that are generated can be evaluated using the policy analytic toolkit. \n", + "Pillar 2: Analytical skills\n", + "\n", + "\n", + "Related\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " \n", + "\n", + "\n", + "\n", + "TechTank\n", + "The Blockchain: What It Is and Why It Matters\n", + "\n", + "Mohit Kaushal and Sheel Tyle\n", + "Tuesday, January 13, 2015\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " \n", + "\n", + "\n", + "\n", + "TechTank\n", + "How technology is changing manufacturing\n", + "\n", + "Darrell M. West\n", + "Thursday, June 2, 2016\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " \n", + "\n", + "\n", + "\n", + "TechTank\n", + "Rural and urban America divided by broadband access\n", + "\n", + "Darrell M. West and Jack Karsten\n", + "Monday, July 18, 2016\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "At Carnegie Mellon, we are often cited in media and interrogated by peers on our approach to analytical and technology skills education. Curiosity about which skills are the “right” skills to teach policy practitioners are common, but we believe this is the wrong approach. We instead begin from the premise that policy or management decisions should be grounded in evidence.  We then determine the skills required to assemble the types of evidence that will likely be available to policy makers in the future.  In increasingly instrumented environments where citizens and infrastructure produce continuous streams of data, making sense of it all will require a somewhat different set of skills. We believe that a grounding in micro-economics, operations research, statistics, and program evaluation (aka causal inference) to be an essential core to policy programs. \n", + "New coursework will teach students to work with multi-variable data and machine learning with an emphasis on prediction. This material ought to be part of the required coursework in statistics given the importance of prediction in many policy implementation settings. Along the same lines, the ability to work with unstructured data (especially text) and data visualization will become increasingly relevant to all students, not just those students who want to specialize in data analytics. Finally, knowledge of data manipulation and analysis languages such as Python and R for analytic work will be important because data often has to be massaged and cleansed prior to analysis. An important task for programs will be to determine the competencies expected of graduates. \n", + "Pillar 3: Interpersonal experiences\n", + "The third pillar of the skills-based model is interpersonal experience, where the practiced habits of good communication and steady negotiation developed with a sound understanding of organizations, their design and their behaviors. We label these purposely as experiences rather than skills because we believe they are best practiced either in the real-world or in simulated real-world settings. It is also in this pillar where practitioners learn the knowledge necessary to become credible experts in their domain. We believe that in addition to core coursework in the area, a supplementary curriculum which provides students with opportunities to gain these experiences is an essential component of our educational model.\n", + "Pillar 4: Evaluative skills\n", + "\n", + "\n", + "Related Books\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "Constitution 3.0\n", + "\n", + "\n", + "\t\t\t\t\t\tEdited by Jeffrey Rosen and Benjamin Wittes \n", + "2013\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "The Need for Speed\n", + "\n", + "\n", + "\t\t\t\t\t\tBy Robert E. Litan and Hal J. Singer \n", + "2013\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "After the Breakup\n", + "\n", + "\n", + "\t\t\t\t\t\tBy Robert W. Crandall \n", + "2010\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "The ability to carefully diagnose the effectiveness of policy or management interventions is the fourth pillar of our model. It is insufficient to create and execute policy without measurement, and this is where both careful thought to the fundamental issues of measurement and evaluation become important. The ability to make objective judgments on the benefits, liabilities, and unintended consequences of prior policies is the goal of this set of skills. Here, sound statistical and econometric training with an understanding of the principles of causal inference is essential. In addition, program evaluation skills such as cost-benefit and financial analysis help practitioners round out their evaluation skills by considering both non-monetary and economic impacts.\n", + "What should be retired?\n", + "A skills-based approach might replace certain aspects of existing policy training.  This depends on a number of factors specific to each institution, but three generally applicable observations are clear. First, real-world experiences are a powerful way to encode domain learning as well as project management skills. Through project-based work, students can learn about institutional contexts in specific policy domains and political processes such as budgeting. Second, team-based projects allow students to learn and apply principles of management and organizational behavior. At Carnegie Mellon, we refer to these as “systems synthesis” projects, since they require students to adopt a systemic point of view and to synthesize a number of skills in their policy analysis toolkit. Third, interpersonal skills training can be practiced through activities such as weekend negotiation exercises, hackathons, and speaker series. These activities can be highly intentional and fashioned to reinforce skills rather than as a recess from the “real work” of classroom training. Since students complete graduate programs in such a short time, counseling them to focus on outcomes from day one will allow them to choose a reinforcing set of coursework and real-world experiences. \n", + "In summary, we argue for a model of policy education that views practitioners as future problem solvers. Good policy education must consider the ways in which problems will present themselves, and the ways in which answers will obscure themselves. Rigorous training grounded in the analysis of available evidence and buoyed by real-world interpersonal experiences is a sound approach to relevant, durable policy training.\n", + " \n", + "Authors\n", + "\n", + "\n", + "\n", + "\n", + "R\n", + "\n", + "\n", + "\n", + "Ramayya Krishnan\n", + "Ramayya Krishnan is the dean of H. John Heinz III College of Information Systems and Public Policy at Carnegie Mellon University where he is the W.W. Cooper and Ruth F. Cooper Professor of Management Science and Information Systems.\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "J\n", + "\n", + "\n", + "\n", + "Jon Nehlsen\n", + "Jon Nehlsen is senior director of external relations at H. John Heinz III College of Information Systems and Public Policy at Carnegie Mellon University.\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "Read other essays in the Ideas to Retire blog series here.\n", + "\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "title is:\n", + "Oil Boom Gives the U.S. a New Edge in Energy and Diplomacy\n", + "Body is:\n", + "HOUSTON — A substantial rise in oil prices in recent months has led to a resurgence in American oil production, enabling the country to challenge the dominance of Saudi Arabia and dampen price pressures at the pump.\n", + "The success has come in the face of efforts by Saudi Arabia and its oil allies to undercut the shale drilling spree in the United States. Those strategies backfired and ultimately ended up benefiting the oil industry.\n", + "Overcoming three years of slumping prices proved the resiliency of the shale boom. Energy companies and their financial backers were able to weather market turmoil — and the maneuvers of the global oil cartel — by adjusting exploration and extraction techniques.\n", + "After a painful shakeout in the industry that included scores of bankruptcies and a significant loss of jobs, a steadier shale-drilling industry is arising, anchored by better-financed companies.\n", + "With the price of West Texas intermediate crude above $65 a barrel, a level not seen in almost three years, the United States is becoming a dominant producer. It is able to outflank competitors in supplying growing global markets, particularly China and India, while slashing imports from the Middle East and North Africa.\n", + "This year, the United States is expected to surpass Saudi Arabia and to rival Russia as the world’s leader, with record output of over 10 million barrels a day, according to the International Energy Agency.\n", + "“This is a 180-degree turn for the United States and the impacts are being felt around the world,” said Daniel Yergin, the economic historian and author of “The Prize: The Epic Quest for Oil, Money and Power.” “This not only contributes to U.S. energy security but also contributes to world energy security by bringing new supplies to the world.”\n", + "At the same time, the United States is becoming a major exporter of natural gas, another outgrowth of the shale revolution, undercutting Russian energy dominance over Eastern Europe.\n", + "The improving energy picture comes as the Trump administration is attempting to increase offshore drilling and loosen other regulations on fossil fuel development. But just as the surge in oil and gas production in shale fields during the Barack Obama administration had little to do with Washington, the current rise is the result of private companies responding to global markets.\n", + "Shale fields can be developed relatively quickly and at modest costs relative to the giant projects, whether on land or offshore, that were once favored by big oil companies. That makes it easier to turn investment spigots on or off to adjust to market fluctuations. Companies like Exxon Mobil and Chevron are putting increasing amounts of capital in shale fields, particularly in West Texas and New Mexico.\n", + "The results go far beyond the economic, offering Washington strategic weapons once unthinkable. The United States and its allies now have a supply cushion at a time when political turmoil in Venezuela, Libya and Nigeria is threatening to interrupt flows to markets.\n", + "Only a few years ago, such threats — along with a recent pipeline failure in the North Sea and storms in the Gulf of Mexico — would have sent the price of crude soaring. Instead, the rise has been muted, and gasoline at the pump remains below $2.60 a gallon across most of the United States.\n", + "The new energy power also relieves pressure on Washington to act militarily if tensions between Iran and Saudi Arabia break out into war. And it gives Washington the leeway to apply sanctions on other producers — as it has in Russia, and may in Iran or Venezuela — with far less risk to the global economy.\n", + "It is a striking contrast to the 1970s, when Arab oil boycotts forced motorists to line up for blocks to fill their tanks and the economy went into a tailspin. Even more recently, during the presidency of George W. Bush, domestic oil output was declining so rapidly that the country set a course to replace oil with biofuels like ethanol.\n", + "Many environmentalists argue that by increasing oil and gas supplies and lowering prices for consumers, shale drilling is extending the life of fossil fuels to the detriment of the environment and the development of cleaner energy.\n", + "The shale drilling revolution has remade the global energy market, with imports from members of the Organization of the Petroleum Exporting Countries plunging by 20 percent from late 2016 to late 2017. At the same time, exports rose by hundreds of thousands of barrels a day.\n", + "Nothing like the current situation was foreseen in late 2014, when rising domestic production began weighing on global oil prices.\n", + "In response, Saudi Arabia led OPEC in a new direction. Instead of throttling back to support prices as the cartel had done so often, it left the market alone and even increased production for a time.\n", + "Prices fell below $40 a barrel, as the Saudis and their allies hoped to drive American operations out of business by making shale drilling uneconomical. American exploration quickly dropped, but the price squeeze made companies more innovative in the use of drilling technologies, robotics and sensors to maximize output and reduce costs.\n", + "While scores of smaller companies went out of business, the survivors lengthened horizontal wells to yield more oil, and used clever hedging and drilling strategies to maximize profits even when prices slumped.\n", + "The response surprised the global oil community. OPEC, Russia and allied producing countries changed course and began cutting back again in 2016.\n", + "“OPEC missed the point,” said René Ortiz, a former OPEC secretary general and former Ecuadorean energy minister. “They thought they could recover the U.S. market by bringing the prices down. Now the U.S. has gained the leading position in the world oil market regardless of what OPEC does.”\n", + "“This displacement of Saudi oil, Nigerian oil, Libyan oil and Venezuelan oil,” Mr. Ortiz concluded, “was never anticipated.”\n", + "A week ago, OPEC leaders met in Oman to discuss a probable extension of production cuts into 2019 to support prices. Their biggest obstacle is the United States.\n", + "Technological advances unlocking oil from tight rocks like shale has led to a drilling frenzy enabling a doubling of output in a decade, transforming unlikely places like North Dakota and New Mexico into world class petroleum hubs. Pipelines are being built across Texas to serve ports where oil can be pumped onto tankers headed for China, India and other markets.\n", + "Domestic production last year averaged 9.3 million barrels a day, and the Energy Department projects that the figure will climb to 10.3 million barrels a day this year, surpassing the record set in 1970. In the meantime, since a 40-year export ban was lifted in 2015, exports of American oil have risen to roughly two million barrels a day — more than many OPEC members.\n", + "The department projects an additional increase in domestic production of 500,000 barrels a day in 2019.\n", + "Concerns over climate change as well as the growing popularity of electric cars and the eventual aging of the best shale fields will probably curb production and demand over the next few decades. But in the short term, the boom has changed the landscape.\n", + "The Energy Department projects that the recent surge will hold the price of Brent crude, the global benchmark, to $60 a barrel in 2018 and $61 a barrel in 2019 — a modest increase from $54 last year. (The Brent price rose above $70 a barrel this month, but few analysts see a return to $100-a-barrel oil.)\n", + "The emerging order in the energy realm is a stable balance of power. Saudi Arabia, which essentially runs OPEC, has put a floor under the oil price — probably around $50 a barrel — with its limits on output and exports over the last four years. But now the United States, by the sheer force of its production, the supremacy of its technology, and an unmatched pipeline, refinery and storage structure, has put a ceiling to the price.\n", + "Experts note that when oil climbs to $60 a barrel and higher, as it has lately, a drilling rush commences — the national rig count has climbed by over a third in the last year — promising to refill domestic and even global energy inventories. Only a major war or other disruption is likely to send prices soaring.\n", + "“We have all suffered these depressed prices over the last two years and we are excited to see the new prices and we will respond accordingly,” said Harald Jordan, vice president for engineering at Peak Energy, a Colorado-based producer. “You will see rig activity continue to increase.”\n", + "URL: https://www.nytimes.com/2018/01/28/business/energy-environment/oil-boom.html\n", + "TITLE: Oil Boom Gives the U.S. a New Edge in Energy and Diplomacy\n", + "BODY:\n", + "HOUSTON — A substantial rise in oil prices in recent months has led to a resurgence in American oil production, enabling the country to challenge the dominance of Saudi Arabia and dampen price pressures at the pump.\n", + "The success has come in the face of efforts by Saudi Arabia and its oil allies to undercut the shale drilling spree in the United States. Those strategies backfired and ultimately ended up benefiting the oil industry.\n", + "Overcoming three years of slumping prices proved the resiliency of the shale boom. Energy companies and their financial backers were able to weather market turmoil — and the maneuvers of the global oil cartel — by adjusting exploration and extraction techniques.\n", + "After a painful shakeout in the industry that included scores of bankruptcies and a significant loss of jobs, a steadier shale-drilling industry is arising, anchored by better-financed companies.\n", + "With the price of West Texas intermediate crude above $65 a barrel, a level not seen in almost three years, the United States is becoming a dominant producer. It is able to outflank competitors in supplying growing global markets, particularly China and India, while slashing imports from the Middle East and North Africa.\n", + "This year, the United States is expected to surpass Saudi Arabia and to rival Russia as the world’s leader, with record output of over 10 million barrels a day, according to the International Energy Agency.\n", + "“This is a 180-degree turn for the United States and the impacts are being felt around the world,” said Daniel Yergin, the economic historian and author of “The Prize: The Epic Quest for Oil, Money and Power.” “This not only contributes to U.S. energy security but also contributes to world energy security by bringing new supplies to the world.”\n", + "At the same time, the United States is becoming a major exporter of natural gas, another outgrowth of the shale revolution, undercutting Russian energy dominance over Eastern Europe.\n", + "The improving energy picture comes as the Trump administration is attempting to increase offshore drilling and loosen other regulations on fossil fuel development. But just as the surge in oil and gas production in shale fields during the Barack Obama administration had little to do with Washington, the current rise is the result of private companies responding to global markets.\n", + "Shale fields can be developed relatively quickly and at modest costs relative to the giant projects, whether on land or offshore, that were once favored by big oil companies. That makes it easier to turn investment spigots on or off to adjust to market fluctuations. Companies like Exxon Mobil and Chevron are putting increasing amounts of capital in shale fields, particularly in West Texas and New Mexico.\n", + "The results go far beyond the economic, offering Washington strategic weapons once unthinkable. The United States and its allies now have a supply cushion at a time when political turmoil in Venezuela, Libya and Nigeria is threatening to interrupt flows to markets.\n", + "Only a few years ago, such threats — along with a recent pipeline failure in the North Sea and storms in the Gulf of Mexico — would have sent the price of crude soaring. Instead, the rise has been muted, and gasoline at the pump remains below $2.60 a gallon across most of the United States.\n", + "The new energy power also relieves pressure on Washington to act militarily if tensions between Iran and Saudi Arabia break out into war. And it gives Washington the leeway to apply sanctions on other producers — as it has in Russia, and may in Iran or Venezuela — with far less risk to the global economy.\n", + "It is a striking contrast to the 1970s, when Arab oil boycotts forced motorists to line up for blocks to fill their tanks and the economy went into a tailspin. Even more recently, during the presidency of George W. Bush, domestic oil output was declining so rapidly that the country set a course to replace oil with biofuels like ethanol.\n", + "Many environmentalists argue that by increasing oil and gas supplies and lowering prices for consumers, shale drilling is extending the life of fossil fuels to the detriment of the environment and the development of cleaner energy.\n", + "The shale drilling revolution has remade the global energy market, with imports from members of the Organization of the Petroleum Exporting Countries plunging by 20 percent from late 2016 to late 2017. At the same time, exports rose by hundreds of thousands of barrels a day.\n", + "Nothing like the current situation was foreseen in late 2014, when rising domestic production began weighing on global oil prices.\n", + "In response, Saudi Arabia led OPEC in a new direction. Instead of throttling back to support prices as the cartel had done so often, it left the market alone and even increased production for a time.\n", + "Prices fell below $40 a barrel, as the Saudis and their allies hoped to drive American operations out of business by making shale drilling uneconomical. American exploration quickly dropped, but the price squeeze made companies more innovative in the use of drilling technologies, robotics and sensors to maximize output and reduce costs.\n", + "While scores of smaller companies went out of business, the survivors lengthened horizontal wells to yield more oil, and used clever hedging and drilling strategies to maximize profits even when prices slumped.\n", + "The response surprised the global oil community. OPEC, Russia and allied producing countries changed course and began cutting back again in 2016.\n", + "“OPEC missed the point,” said René Ortiz, a former OPEC secretary general and former Ecuadorean energy minister. “They thought they could recover the U.S. market by bringing the prices down. Now the U.S. has gained the leading position in the world oil market regardless of what OPEC does.”\n", + "“This displacement of Saudi oil, Nigerian oil, Libyan oil and Venezuelan oil,” Mr. Ortiz concluded, “was never anticipated.”\n", + "A week ago, OPEC leaders met in Oman to discuss a probable extension of production cuts into 2019 to support prices. Their biggest obstacle is the United States.\n", + "Technological advances unlocking oil from tight rocks like shale has led to a drilling frenzy enabling a doubling of output in a decade, transforming unlikely places like North Dakota and New Mexico into world class petroleum hubs. Pipelines are being built across Texas to serve ports where oil can be pumped onto tankers headed for China, India and other markets.\n", + "Domestic production last year averaged 9.3 million barrels a day, and the Energy Department projects that the figure will climb to 10.3 million barrels a day this year, surpassing the record set in 1970. In the meantime, since a 40-year export ban was lifted in 2015, exports of American oil have risen to roughly two million barrels a day — more than many OPEC members.\n", + "The department projects an additional increase in domestic production of 500,000 barrels a day in 2019.\n", + "Concerns over climate change as well as the growing popularity of electric cars and the eventual aging of the best shale fields will probably curb production and demand over the next few decades. But in the short term, the boom has changed the landscape.\n", + "The Energy Department projects that the recent surge will hold the price of Brent crude, the global benchmark, to $60 a barrel in 2018 and $61 a barrel in 2019 — a modest increase from $54 last year. (The Brent price rose above $70 a barrel this month, but few analysts see a return to $100-a-barrel oil.)\n", + "The emerging order in the energy realm is a stable balance of power. Saudi Arabia, which essentially runs OPEC, has put a floor under the oil price — probably around $50 a barrel — with its limits on output and exports over the last four years. But now the United States, by the sheer force of its production, the supremacy of its technology, and an unmatched pipeline, refinery and storage structure, has put a ceiling to the price.\n", + "Experts note that when oil climbs to $60 a barrel and higher, as it has lately, a drilling rush commences — the national rig count has climbed by over a third in the last year — promising to refill domestic and even global energy inventories. Only a major war or other disruption is likely to send prices soaring.\n", + "“We have all suffered these depressed prices over the last two years and we are excited to see the new prices and we will respond accordingly,” said Harald Jordan, vice president for engineering at Peak Energy, a Colorado-based producer. “You will see rig activity continue to increase.”\n" ] } ], @@ -295,38 +790,38 @@ "crawler = Crawler()\n", "\n", "siteData = [\n", - " [\"O'Reilly Media\",\"http://oreilly.com\", \"h1\", \"section#product-description\"],\n", - " [\"Reuters\",\"http://reuters.com\", \"h1\",\"div.ArticleBody_body_2ECha\"],\n", - " [\"Brookings\",\"http://www.brookings.edu\", \"h1\",\"div.post-body\"]\n", - " ]\n", - "sites = []\n", + " ['O\\'Reilly Media', 'http://oreilly.com', 'h1', 'section#product-description'],\n", + " ['Reuters', 'http://reuters.com', 'h1', 'div.StandardArticleBody_body_1gnLA'],\n", + " ['Brookings', 'http://www.brookings.edu', 'h1', 'div.post-body'],\n", + " ['New York Times', 'http://nytimes.com', 'h1', 'p.story-content']\n", + "]\n", + "websites = []\n", "for row in siteData:\n", - " sites.append(Website(row[0], row[1], row[2]))\n", + " websites.append(Website(row[0], row[1], row[2], row[3]))\n", "\n", - "crawler.parse(sites[0], \"http://shop.oreilly.com/product/0636920028154.do\")\n", - "crawler.parse(sites[1], \"http://www.reuters.com/article/us-usa-epa-pruitt-idUSKBN19W2D0\")\n", - "crawler.parse(sites[2], \"https://www.brookings.edu/blog/techtank/2016/03/01/idea-to-retire-old-methods-of-policy-education/\")" + "crawler.parse(websites[0], 'http://shop.oreilly.com/product/0636920028154.do')\n", + "crawler.parse(websites[1], 'http://www.reuters.com/article/us-usa-epa-pruitt-idUSKBN19W2D0')\n", + "crawler.parse(websites[2], 'https://www.brookings.edu/blog/techtank/2016/03/01/idea-to-retire-old-methods-of-policy-education/')\n", + "crawler.parse(websites[3], 'https://www.nytimes.com/2018/01/28/business/energy-environment/oil-boom.html')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "Crawling through sites with search" + "## Crawling through sites with search" ] }, { "cell_type": "code", - "execution_count": null, - "metadata": { - "collapsed": true - }, + "execution_count": 43, + "metadata": {}, "outputs": [], "source": [ "class Content:\n", " \"\"\"Common base class for all articles/pages\"\"\"\n", "\n", - " def __init__(self, topic, title, body, url):\n", + " def __init__(self, topic, url, title, body):\n", " self.topic = topic\n", " self.title = title\n", " self.body = body\n", @@ -336,20 +831,20 @@ " \"\"\"\n", " Flexible printing function controls output\n", " \"\"\"\n", - " print(\"New article found for: {}\".format(self.topic))\n", + " print(\"New article found for topic: {}\".format(self.topic))\n", + " print(\"URL: {}\".format(self.url))\n", " print(\"TITLE: {}\".format(self.title))\n", - " print(\"BODY:\\n{}\".format(self.body))\n", - " print(\"URL: {}\".format(self.url))" + " print(\"BODY:\\n{}\".format(self.body))" ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 44, "metadata": {}, "outputs": [], "source": [ "class Website:\n", - " \"\"\"Common base class for all articles/pages\"\"\"\n", + " \"\"\"Contains information about website structure\"\"\"\n", "\n", " def __init__(self, name, url, searchUrl, resultListing, resultUrl, absoluteUrl, titleTag, bodyTag):\n", " self.name = name\n", @@ -364,38 +859,133 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 48, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "GETTING INFO ABOUT: python\n", + "New article found for topic: python\n", + "TITLE: JAKARTA (Reuters) - An Indonesian farmer has been found dead inside a 7-meter (23-foot) python after being reported missing on his failure to return home from work on a palm plantation. Village officials cut open the swollen body of the snake in a graphic video taken by a resident of Mamuju, on the eastern island of Sulawesi, the site of the incident. The victim’s legs, encased in rubber boots, emerge as the snake is pulled apart. Family members and neighbors of the 26-year-old victim, Akbar, had launched a search when he failed to come home for more than 24 hours, a resident of the area told Reuters. A 7-metre (23-foot) python is being cut open to reveal a young Indonesian man in the village of Salobiru, in a remote part of the West Sulawesi province, Indonesia in this still image taken from video on March 26, 2017. Courtesy of Andi Fathir/via REUTERS TV “We saw a python that couldn’t move properly and it’s belly was swollen,” said Asdin Rudi Fathir, 43. “Residents and officials decided to kill the python and were shocked to find a human body inside.” Relatives identified the victim, who went by only one name, as do many Indonesians. While large snakes and other animals are common in that part of Sulawesi, attacks on humans are rare, Fathir added. Reporting by Kanupriya Kapoor; Editing by Clarence FernandezOur Standards:The Thomson Reuters Trust Principles.\n", + "BODY:\n", + "/article/us-indonesia-python/indonesian-found-dead-after-being-swallowed-by-python-idUSKBN1711E3\n", + "URL: Indonesian found dead after being swallowed by python\n", + "New article found for topic: python\n", + "TITLE: GANYIEL, South Sudan (Thomson Reuters Foundation) - Martha’s fear grows each morning as her toes touch the cold and muddy water of the swamp in a remote part of South Sudan. Yet she steps confidently into the chest-deep marsh, her clothes drenched and her feet sinking into the slippery mud as she holds her schoolbag above her head to keep it dry. “I know there could be crocodiles, pythons and Guinea worm in here and I‘m scared every day,” said 18-year-old, who is one of thousands who have found safety in Ganyiel, a rebel-held town in the center of the war-torn country. “Some of the children in my village have died in the swamps,” she told the Thomson Reuters Foundation, sitting on a plastic chair outside her classroom in a spare dry dress that she carried with her. Martha has made up her mind that receiving an education is her priority even though the journey takes four hours a day, a quarter of which is spent wading through the treacherous swamp. With 72 percent of children out of school, South Sudan ranks worst in education among all African nations, according to the United Nations children’s agency (UNICEF). One of the most common reasons for non-attendance is the long distance students have to walk to school, it says. The world’s youngest nation gained independence in 2011, but civil war erupted in late 2013 between soldiers of President Salva Kiir, an ethnic Dinka, and his former vice president, Riek Machar, a Nuer. Tens of thousands have been killed and one-third of the country’s 12 million-strong population has fled their homes, creating Africa’s largest refugee crisis. School enrollment, which was 42 percent at the start of the war, has plummeted. Only 700,000 school-aged children out of a total of 2.5 million attend classes, UNICEF says. “With so many children out of school and with a large portion of those currently enrolled unlikely to go beyond primary school, the country will face a serious shortage of qualified people,” its education expert, Vinobajee Gautam, said. CAUGHT IN THE CROSSFIRE Martha only returned to school last month. She and her siblings had been living in one of the U.N.’s tightly-packed camps for displaced people in the capital, Juba. “My mother took me and my seven siblings to Juba many years ago, because she wanted us to have access to education,” the teenager explained in perfect English. “When the war broke out, soldiers abducted and killed her. I had to take care of my brothers and sisters and wasn’t able to go to school anymore.” Martha decided to journey northwards for several days by boat to opposition-held Ganyiel in Southern Liech State, so that her father and other relatives who still lived there could help care for her siblings, freeing up her time to study. “I heard that a new school was built in Ganyiel, so I decided that going back home would help our family receive a better education,” she said. Wild animals and waterborne diseases are not the only risks students face on their exhausting journeys to school. “Children from rural areas outside Ganyiel have to live with the fear of being caught in the crossfire of inter-clan fights, revenge killings or even cattle raids,” said Raphael Ndiku of Welthungerhilfe, the German charity that built Martha’s school. With the construction of a new building last year, about 500 new students arrived from remote villages, boosting enrolment by more than half to almost 1,500 children, he said. News of the latest school openings spreads fast. At least one in three schools has been attacked by armed forces since the start of the conflict, according to UNICEF. Many are closed, destroyed or occupied by soldiers or displaced people. “We have nine classrooms and 37 teachers and use the buildings for primary school students in the mornings and secondary education in the afternoons,” said Ganyiel Mixed School’s headmaster, William Puol. South Sudanese families often make huge personal sacrifices so that their children can learn. “My father made me move to my aunt’s house because he wanted me to get an education,” said 14-year-old James Koang, whose family home was four hours from the nearest school. “I now walk for less than an hour but I‘m always afraid that wild animals might attack me because I walk alone,” said Koang, the only one of six siblings in education. He has set his mind on attending university. “If all children could go to school, there would be less fighting in my country,” he said, pointing out that many deadly cattle raids are carried out by youths who did not have the chance to get an education. Being in school gives children some protection from being recruited as child soldiers or forced into other dangerous means of survival, such as selling sex. “I am sometimes scared of being abducted on my way to school,” Martha said quietly. “But I want South Sudan to be a strong and peaceful country. Children need to be educated because we are the future. That’s what I think about when I walk to school and it helps me overcome my fear.” Reporting by Stefanie Glinski. Editing by Katy Migiro. Please credit the Thomson Reuters Foundation, the charitable arm of Thomson Reuters, that covers humanitarian news, women’s rights, trafficking, property rights and climate change. Visit news.trust.org to see more stories.Our Standards:The Thomson Reuters Trust Principles.\n", + "BODY:\n", + "/article/us-southsudan-education-children/crocodiles-pythons-and-militias-south-sudans-children-risk-death-for-school-idUSKBN1DR0UP\n", + "URL: Crocodiles, pythons and militias: South Sudan's children risk death for school\n", + "New article found for topic: python\n", + "TITLE: A 20 feet rock python was caught on camera in Junagadh district of India’s western Gujarat state with a swollen stomach after it consumed an antelope on Tuesday (September 20). Residents informed authorities at Girnar Wildlife Sanctuary after they spotted the reptile lying in discomfort in a field. In view of the massive swelling of the python’s stomach, the forest authorities suspect that it gobbled up a full-grown ‘nilgai’ or blue bull. The python - unable to move now - was rescued by the forest personnel and has been put under observation. “We will keep it (python) under observation. We will release it back in the wild once it digests the antelope and the swelling subsides,” said Assistant Conservator of Forest, S.D. Tilala. A blue bull is far larger than an ideal prey for pythons and digesting the mammal could prove to be a great struggle for the reptile. When unable to digest an unusually large prey, pythons are known to regurgitate them.Our Standards:The Thomson Reuters Trust Principles.\n", + "BODY:\n", + "/article/us-india-python/python-in-india-demonstrates-huge-appetite-idUSKCN11S04G\n", + "URL: Python in India demonstrates huge appetite\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "New article found for topic: python\n", + "TITLE: Forest department officials on Saturday (September 24) promised strict action after a python attacked a man when a group was trying to click a photo with it. The incident took place on Friday (September 23) after forest department officials removed the python from the premises of a school in northwestern Rajasthan state. They were posing for pictures with it after successfully capturing it. Deputy Conservator of Forests, K.G.Shrivastav, said the incident was unexpected as all officers were highly trained. “I wanted the snake to be released in my presence, but the officials released it before I could reach the spot. I had no clue that civilians were also present at the spot and something could go wrong as all the officials are highly trained. Clicking selfies with the snake and releasing the photos publicly is an offense under the Wildlife Act and we will issue notice to all involved in this incident,” Shrivastav said. The victim, Ashok Bishnoi, accepted the incident happened due to carelessness on his part. “The moment I received the news I reached the location. I did not realize how close I was to the python and it attacked me. This is entirely my fault,” said the victim, Ashok Bishnoi. Vishnoi added that the mishap happened in a short span of time in spite of the fact that the rescue officials had a strong grip on the reptile. The snake was later released in a forest.Our Standards:The Thomson Reuters Trust Principles.\n", + "BODY:\n", + "/article/us-india-python-attack/indian-man-bitten-by-python-whilst-posing-for-selfie-idUSKCN11W1LT\n", + "URL: Indian man bitten by python whilst posing for selfie\n", + "New article found for topic: python\n", + "TITLE: JOHANNESBURG (Reuters) - A Zimbabwean man has been jailed for nine years for eating python, a protected species, a Zimbabwean daily reported on Friday. Archwell Maramba said he had been eating the snake meat for its medicinal value. “I wanted to eat the python to cure my spine and since I ate my first python I have seen remarkable improvement,” NewsDay quoted Maramba as saying during his court case. Acting on a tipoff, police found the 58-year-old drying snakeskin and python meat stashed in his house. Reporting by Helen Nyambura-Mwaura; Editing by Andrew RocheOur Standards:The Thomson Reuters Trust Principles.\n", + "BODY:\n", + "/article/us-zimbabwe-python/zimbabwean-jailed-for-nine-years-for-eating-python-meat-idUSKBN0L31PS20150130\n", + "URL: Zimbabwean jailed for nine years for eating python meat\n", + "New article found for topic: python\n", + "TITLE: LONDON (Reuters) - The surviving members of the British comedy troupe Monty Python lost a High Court battle on Friday over tens of thousands of pounds in royalties from their hit Broadway musical “Spamalot”. Mark Forstater, who helped produce the 1975 film “Monty Python and the Holy Grail” on which the stage show was based, said he had not received his fair share of the profits from the spin-off. Despite hearing evidence from three Pythons - Eric Idle, Michael Palin and Terry Jones - the judge, Justice Alastair Norris, sided with the producer. “I have always been adamant I was correct. I have been proved right - justice has prevailed,” Forstater said. Inspired by the film, the musical opened on Broadway in 2005 and has also enjoyed a successful run in Britain. Idle wrote the lyrics and collaborated on most of the music. Forstater, an American based in Britain, argued that he was entitled to one-seventh of the profits from the “Holy Grail” film and any merchandise or spin-offs. His lawyer told the court that for the purposes of profit-sharing, it had been agreed in 1974 that Forstater was “the seventh Python”. However Palin, along with Jones and Idle, who formed Monty Python with John Cleese, Terry Gilliam and Graham Chapman, dismissed this suggestion. “The idea of a seventh Python just doesn’t happen ... I don’t think there was ever any suggestion this man was going to be a ‘seventh Python’,” said Palin, giving evidence in December. In his judgment, Norris said Palin had been a “balanced and trustworthy” witness but had admitted his recollection was “hazy”, while evidence from Jones had been “suffused with a sense that Mr Forstater had done very well out of his brief connection with the Pythons”. “Eric Idle was frank enough to acknowledge that he now disliked Mr Forstater, but he expressed the hope that, in his evidence, he was being honest and that his dislike did not affect his honesty,” Norris said. “He undoubtedly regarded Mr Forstater as ungrateful.” “SOFT LOT” His ruling also made reference to the Pythons’ lack of business acumen, highlighting a diary entry from Palin in 1975. “As we are a soft lot and not at all businesslike, I think it would be in the finest traditions of Python irrationality if we gave Mark an extra 1,000 pounds and a silver tray with some cut-glass sherry glasses and told him to stop writing to us for more money,” Palin wrote. “Beyond that even I am not prepared to go. Oh, all right, some cheese straws to go with the sherry glasses.” The judge added: “As I assess the evidence, the Pythons continued at that point to be ‘a soft lot and not at all businesslike’.” No members of the Python group were present in court to hear the ruling. Final figures will be worked out at later hearings but Forstater told reporters he was entitled to more than 200,000 pounds ($300,000) including interest, the Press Association reported. “There is a sadness, though, about having to face people who were my friends in court,” he said. “The friendship has gone.” Forstater said he did not think the litigation would damage the Pythons’ reputation. “They’re an institution,” he said. “I still think they are very funny.” Editing by Michael Holden and Janet LawrenceOur Standards:The Thomson Reuters Trust Principles.\n", + "BODY:\n", + "/article/entertainment-us-britain-python-court/monty-python-lose-spamalot-court-battle-idUSBRE9640KE20130705\n", + "URL: Monty Python lose 'Spamalot' court battle\n", + "New article found for topic: python\n", + "TITLE: ORLANDO, Florida (Reuters) - A python hunting competition starting on Saturday is drawing hundreds of amateurs armed with clubs, machetes and guns to the Florida Everglades, where captured Burmese pythons have exceeded the length of minivans and weighed as much as grown men. Python Challenge 2013, a month-long event sponsored by the Florida Fish and Wildlife Conservation Commission, is open to hunters and non-hunters alike. But the idea of luring weapon-wielding amateurs into the harsh environment of the Everglades has raised some alarms. “I just thought it was as exciting as could be. It’s a once- in-a-lifetime opportunity,” said contestant Ron Polster, a retired salesman from Ohio whose closest encounter with the swamp has been from the highway heading south for the winter. Participants pay a $25 entry fee and take an online training course, which consists mostly of looking at photographs of both the targeted pythons and protected native snakes to learn the difference. The state wildlife agency is offering prizes of $1,500 for the most pythons captured and $1,000 for the longest python. A Burmese python found in Florida last year set records as the largest ever captured in the state at 17-feet, 7-inches. The snake weighed nearly 165 pounds (75 kg). FWC spokeswoman Carli Segelson said the number of registered contestants reached about 500 this week and was growing, with people coming from 32 states. A handout photo released on October 6, 2005 by Everglades National Park shows a dead Burmese python which had swallowed an American alligator. REUTERS/Everglades National Park/HandoutThe stated goal of the competition is to raise awareness of the threat Burmese pythons pose to the Everglades ecosystem. The snakes are native to Southeast Asia and have no known predators in Florida. The contest also serves as a pilot program to determine whether regular hunting competitions can cull the growing population of the invasive species, said Frank Mazzotti, a wildlife expert from the University of Florida who helped create the competition. Python Challenge rules require contestants to kill specimens on the spot in a humane fashion, recommending shooting the snakes precisely through the brain. “I was hoping there would be a lot of machetes and not a lot of guns,” said Polster, the retired salesman. He said he worries “these idiots will be firing all over the place.” Shawn Heflick, star of the National Geographic “Wild” television show “Python Hunters,” told Reuters that despite the formidable size of the snakes, he expects the swamp itself, with its alligators, crocodiles and venomous snakes, to pose a greater threat to the contestants. “You get these people going down there, they’ll get lost, they’ll get dehydrated, they’ll get sucked dry by mosquitoes,” Heflick said. Segelson said the wildlife agency will provide training on the use of GPS devices and on identifying venomous snakes at the kick-off event. In the meantime, she said, contestants should be familiarizing themselves with the Everglades environment, just as they should before entering any other strange territory. Heflick said most of the contestants likely were drawn to the Python Challenge by the romantic mystique of bagging a giant predator. He expects few will last long in the hunt. “The vast majority of them will never see a python. The vast majority of them will probably curtail their hunting very quickly when they figure out there’s a lot of mosquitoes, it’s hot, it’s rather boring sometimes - most of the time really, and I think a lot of them will go home,” Heflick said. Editing by Tom Brown and Dan GreblerOur Standards:The Thomson Reuters Trust Principles.\n", + "BODY:\n", + "/article/us-usa-python-hunt/florida-python-hunting-contest-draws-hundreds-idUSBRE9081CL20130110\n", + "URL: Florida python hunting contest draws hundreds\n", + "New article found for topic: python\n", + "TITLE: ORLANDO, Florida (Reuters) - A python hunting competition starting on Saturday is drawing hundreds of amateurs armed with clubs, machetes and guns to the Florida Everglades, where captured Burmese pythons have exceeded the length of minivans and weighed as much as grown men. Python Challenge 2013, a month-long event sponsored by the Florida Fish and Wildlife Conservation Commission, is open to hunters and non-hunters alike. But the idea of luring weapon-wielding amateurs into the harsh environment of the Everglades has raised some alarms. “I just thought it was as exciting as could be. It’s a once- in-a-lifetime opportunity,” said contestant Ron Polster, a retired salesman from Ohio whose closest encounter with the swamp has been from the highway heading south for the winter. Participants pay a $25 entry fee and take an online training course, which consists mostly of looking at photographs of both the targeted pythons and protected native snakes to learn the difference. The state wildlife agency is offering prizes of $1,500 for the most pythons captured and $1,000 for the longest python. A Burmese python found in Florida last year set records as the largest ever captured in the state at 17-feet, 7-inches. The snake weighed nearly 165 pounds (75 kg). FWC spokeswoman Carli Segelson said the number of registered contestants reached about 500 this week and was growing, with people coming from 32 states. The stated goal of the competition is to raise awareness of the threat Burmese pythons pose to the Everglades ecosystem. The snakes are native to Southeast Asia and have no known predators in Florida. The contest also serves as a pilot program to determine whether regular hunting competitions can cull the growing population of the invasive species, said Frank Mazzotti, a wildlife expert from the University of Florida who helped create the competition. Python Challenge rules require contestants to kill specimens on the spot in a humane fashion, recommending shooting the snakes precisely through the brain. “I was hoping there would be a lot of machetes and not a lot of guns,” said Polster, the retired salesman. He said he worries “these idiots will be firing all over the place.” Shawn Heflick, star of the National Geographic “Wild” television show “Python Hunters,” told Reuters that despite the formidable size of the snakes, he expects the swamp itself, with its alligators, crocodiles and venomous snakes, to pose a greater threat to the contestants. “You get these people going down there, they’ll get lost, they’ll get dehydrated, they’ll get sucked dry by mosquitoes,” Heflick said. Segelson said the wildlife agency will provide training on the use of GPS devices and on identifying venomous snakes at the kick-off event. In the meantime, she said, contestants should be familiarizing themselves with the Everglades environment, just as they should before entering any other strange territory. Heflick said most of the contestants likely were drawn to the Python Challenge by the romantic mystique of bagging a giant predator. He expects few will last long in the hunt. “The vast majority of them will never see a python. The vast majority of them will probably curtail their hunting very quickly when they figure out there’s a lot of mosquitoes, it’s hot, it’s rather boring sometimes - most of the time really, and I think a lot of them will go home,” Heflick said. Editing by Tom Brown and Dan GreblerOur Standards:The Thomson Reuters Trust Principles.\n", + "BODY:\n", + "/article/us-usa-python-hunt/florida-python-hunting-contest-draws-hundreds-idUSBRE9081CL20130109\n", + "URL: Florida python hunting contest draws hundreds\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "New article found for topic: python\n", + "TITLE: MIAMI (Reuters) - Engineers in the Everglades stumbled upon a near-record-breaking Burmese python measuring more than 18 feet long during a routine inspection of levees on Tuesday, a water management district spokesman said. The snake, measuring at 18 feet 2 inches, fell short of the state record by 6 inches, according to the Florida Fish and Wildlife Conservation Commission. Last year, a snake collector in the state discovered the largest python on record there, measuring 18 feet 8 inches, commission spokeswoman Katie Johnson said. The pythons, which can grow to more than 20 feet in their native habitat in Southeast Asia, are one of the most problematic invaders of Florida’s sprawling Everglades wetlands. A near record-breaking Burmese Python measuring more than 18-feet long (5.5 meters) is shown in this January 4, 2014 handout photo provided by South Florida Water Management District January 5, 2014 in Everglades National Park near Miami, Florida. REUTERS/South Florida Water Management District/Handout via ReutersThey eat indigenous species and their food sources, fueling concerns that the predator snakes will fundamentally change the ecosystem. The python found on Tuesday was killed, and its corpse was taken to the University of Florida, where it will be measured and studied by scientists trying to combat the species, according to South Florida Water Management District spokesman Gabe Margasak. Officials have said the python population is believed to have grown to as many as 150,000 in the Everglades. The cold-blooded reptiles are often found atop levees, where they lie for hours at a time to warm up under the Florida sun. The snakes, one of the largest species in the world, found a home to their liking in the Everglades when pet owners started using the wetlands as a convenient dumping ground. Reporting by Zachary Fagenson; Editing by Colleen Jenkins and Lisa Von AhnOur Standards:The Thomson Reuters Trust Principles.\n", + "BODY:\n", + "/article/us-usa-florida-python/18-foot-burmese-python-found-in-florida-everglades-idUSBREA141OP20140205\n", + "URL: 18-foot Burmese python found in Florida Everglades\n", + "New article found for topic: python\n", + "TITLE: LONDON, Nov 20 (Reuters) - The comic team Monty Python, whose BBC TV series from the 1970s and feature films took their subversive humour and “Dead Parrot” routine around the world, are to reunite for a stage show, British media reported on Wednesday. A news release issued on behalf of the five surviving Pythons, Eric Idle, John Cleese, Terry Gilliam, Michael Palin and Terry Jones, all in their 70s, said that an official announcement would be made on Thursday. But several British newspapers and media outlets reported that the five would be appearing on stage for the first time together since the 1980s. The group was famed for its skits about a man trying to return a dead parrot to a shopkeeper who claimed the bird was “resting” and for poking fun at the establishment, the military and religion. “We’re getting together and putting on a show - it’s real,” Jones told the BBC. “I‘m quite excited about it. I hope it makes us a lot of money. I hope to be able to pay off my mortgage!” On his Twitter account, Palin wrote: “The Python rides again...?” while Idle on Tuesday tweeted: “Only three days to go till the Python Press Conference. Make sure Python fans are alerted to the big forthcoming news event.” The BBC programme “Monty Python’s Flying Circus” was made for television between 1969 and 1974. The Pythons went on to make films including “Monty Python And The Holy Grail” (1975) and “Monty Python’s Life of Brian” (1979). They last performed live together in Monty Python Live At The Hollywood Bowl in 1982. The sixth Python, Graham Chapman, died of cancer at age 48 in 1989. (Writing by Michael Roddy; Editing by Doina Chiacu)Our Standards:The Thomson Reuters Trust Principles.\n", + "BODY:\n", + "/article/britain-python/monty-python-not-dead-after-all-stage-show-planned-idUSL5N0J50QB20131120\n", + "URL: Monty Python not dead after all - stage show planned\n", + "GETTING INFO ABOUT: data science\n", + "New article found for topic: data science\n", + "TITLE: Dec 20 (Reuters) - Veritone Inc: * VERITONE ACQUIRES ADVANCED DATA SCIENCE AND MACHINE LEARNING FIRM * VERITONE INC - ACQUIRED ADVANCED DATA ANALYTICS SOFTWARE AND RELATED IP ASSETS OF ATIGEO CORP Source text for Eikon: Further company coverage:Our Standards:The Thomson Reuters Trust Principles.\n", + "BODY:\n", + "/article/brief-veritone-acquires-advanced-data-sc/brief-veritone-acquires-advanced-data-science-and-machine-learning-firm-idUSASB0BYPZ\n", + "URL: BRIEF-Veritone Acquires Advanced Data Science And Machine Learning Firm\n" + ] + }, + { + "ename": "KeyboardInterrupt", + "evalue": "", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mTypeError\u001b[0m Traceback (most recent call last)", + "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/requests/packages/urllib3/connectionpool.py\u001b[0m in \u001b[0;36m_make_request\u001b[0;34m(self, conn, method, url, timeout, **httplib_request_kw)\u001b[0m\n\u001b[1;32m 375\u001b[0m \u001b[0;32mtry\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0;31m# Python 2.7, use buffering of HTTP responses\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 376\u001b[0;31m \u001b[0mhttplib_response\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mconn\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mgetresponse\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mbuffering\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;32mTrue\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 377\u001b[0m \u001b[0;32mexcept\u001b[0m \u001b[0mTypeError\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0;31m# Python 2.6 and older\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;31mTypeError\u001b[0m: getresponse() got an unexpected keyword argument 'buffering'", + "\nDuring handling of the above exception, another exception occurred:\n", + "\u001b[0;31mKeyboardInterrupt\u001b[0m Traceback (most recent call last)", + "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[1;32m 55\u001b[0m \u001b[0mprint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"GETTING INFO ABOUT: \"\u001b[0m\u001b[0;34m+\u001b[0m\u001b[0mtopic\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 56\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0mtargetSite\u001b[0m \u001b[0;32min\u001b[0m \u001b[0msites\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 57\u001b[0;31m \u001b[0mcrawler\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msearch\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mtopic\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mtargetSite\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m", + "\u001b[0;32m\u001b[0m in \u001b[0;36msearch\u001b[0;34m(self, topic, site)\u001b[0m\n\u001b[1;32m 29\u001b[0m \u001b[0mbs\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mgetPage\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0murl\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 30\u001b[0m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 31\u001b[0;31m \u001b[0mbs\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mgetPage\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0msite\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0murl\u001b[0m\u001b[0;34m+\u001b[0m\u001b[0murl\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 32\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mbs\u001b[0m \u001b[0;32mis\u001b[0m \u001b[0;32mNone\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 33\u001b[0m \u001b[0mprint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"Something was wrong with that page or URL. Skipping!\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m\u001b[0m in \u001b[0;36mgetPage\u001b[0;34m(self, url)\u001b[0m\n\u001b[1;32m 6\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0mgetPage\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0murl\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 7\u001b[0m \u001b[0;32mtry\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 8\u001b[0;31m \u001b[0mreq\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mrequests\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mget\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0murl\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 9\u001b[0m \u001b[0;32mexcept\u001b[0m \u001b[0mrequests\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mexceptions\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mRequestException\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 10\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0;32mNone\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/requests/api.py\u001b[0m in \u001b[0;36mget\u001b[0;34m(url, params, **kwargs)\u001b[0m\n\u001b[1;32m 65\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 66\u001b[0m \u001b[0mkwargs\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msetdefault\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'allow_redirects'\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;32mTrue\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 67\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mrequest\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'get'\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0murl\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mparams\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mparams\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 68\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 69\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/requests/api.py\u001b[0m in \u001b[0;36mrequest\u001b[0;34m(method, url, **kwargs)\u001b[0m\n\u001b[1;32m 51\u001b[0m \u001b[0;31m# cases, and look like a memory leak in others.\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 52\u001b[0m \u001b[0;32mwith\u001b[0m \u001b[0msessions\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mSession\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;32mas\u001b[0m \u001b[0msession\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 53\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0msession\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mrequest\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mmethod\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mmethod\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0murl\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0murl\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 54\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 55\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/requests/sessions.py\u001b[0m in \u001b[0;36mrequest\u001b[0;34m(self, method, url, params, data, headers, cookies, files, auth, timeout, allow_redirects, proxies, hooks, stream, verify, cert, json)\u001b[0m\n\u001b[1;32m 466\u001b[0m }\n\u001b[1;32m 467\u001b[0m \u001b[0msend_kwargs\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mupdate\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0msettings\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 468\u001b[0;31m \u001b[0mresp\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msend\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mprep\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0msend_kwargs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 469\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 470\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mresp\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/requests/sessions.py\u001b[0m in \u001b[0;36msend\u001b[0;34m(self, request, **kwargs)\u001b[0m\n\u001b[1;32m 595\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 596\u001b[0m \u001b[0;31m# Resolve redirects if allowed.\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 597\u001b[0;31m \u001b[0mhistory\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m[\u001b[0m\u001b[0mresp\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0mresp\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mgen\u001b[0m\u001b[0;34m]\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mallow_redirects\u001b[0m \u001b[0;32melse\u001b[0m \u001b[0;34m[\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 598\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 599\u001b[0m \u001b[0;31m# Shuffle things around if there's history.\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/requests/sessions.py\u001b[0m in \u001b[0;36m\u001b[0;34m(.0)\u001b[0m\n\u001b[1;32m 595\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 596\u001b[0m \u001b[0;31m# Resolve redirects if allowed.\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 597\u001b[0;31m \u001b[0mhistory\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m[\u001b[0m\u001b[0mresp\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0mresp\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mgen\u001b[0m\u001b[0;34m]\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mallow_redirects\u001b[0m \u001b[0;32melse\u001b[0m \u001b[0;34m[\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 598\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 599\u001b[0m \u001b[0;31m# Shuffle things around if there's history.\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/requests/sessions.py\u001b[0m in \u001b[0;36mresolve_redirects\u001b[0;34m(self, resp, req, stream, timeout, verify, cert, proxies, **adapter_kwargs)\u001b[0m\n\u001b[1;32m 193\u001b[0m \u001b[0mproxies\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mproxies\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 194\u001b[0m \u001b[0mallow_redirects\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;32mFalse\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 195\u001b[0;31m \u001b[0;34m**\u001b[0m\u001b[0madapter_kwargs\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 196\u001b[0m )\n\u001b[1;32m 197\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/requests/sessions.py\u001b[0m in \u001b[0;36msend\u001b[0;34m(self, request, **kwargs)\u001b[0m\n\u001b[1;32m 574\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 575\u001b[0m \u001b[0;31m# Send the request\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 576\u001b[0;31m \u001b[0mr\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0madapter\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msend\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mrequest\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 577\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 578\u001b[0m \u001b[0;31m# Total elapsed time of the request (approximately)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/requests/adapters.py\u001b[0m in \u001b[0;36msend\u001b[0;34m(self, request, stream, timeout, verify, cert, proxies)\u001b[0m\n\u001b[1;32m 374\u001b[0m \u001b[0mdecode_content\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;32mFalse\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 375\u001b[0m \u001b[0mretries\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mmax_retries\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 376\u001b[0;31m \u001b[0mtimeout\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mtimeout\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 377\u001b[0m )\n\u001b[1;32m 378\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/requests/packages/urllib3/connectionpool.py\u001b[0m in \u001b[0;36murlopen\u001b[0;34m(self, method, url, body, headers, retries, redirect, assert_same_host, timeout, pool_timeout, release_conn, **response_kw)\u001b[0m\n\u001b[1;32m 557\u001b[0m httplib_response = self._make_request(conn, method, url,\n\u001b[1;32m 558\u001b[0m \u001b[0mtimeout\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mtimeout_obj\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 559\u001b[0;31m body=body, headers=headers)\n\u001b[0m\u001b[1;32m 560\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 561\u001b[0m \u001b[0;31m# If we're going to release the connection in ``finally:``, then\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/requests/packages/urllib3/connectionpool.py\u001b[0m in \u001b[0;36m_make_request\u001b[0;34m(self, conn, method, url, timeout, **httplib_request_kw)\u001b[0m\n\u001b[1;32m 376\u001b[0m \u001b[0mhttplib_response\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mconn\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mgetresponse\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mbuffering\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;32mTrue\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 377\u001b[0m \u001b[0;32mexcept\u001b[0m \u001b[0mTypeError\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0;31m# Python 2.6 and older\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 378\u001b[0;31m \u001b[0mhttplib_response\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mconn\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mgetresponse\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 379\u001b[0m \u001b[0;32mexcept\u001b[0m \u001b[0;34m(\u001b[0m\u001b[0mSocketTimeout\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mBaseSSLError\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mSocketError\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;32mas\u001b[0m \u001b[0me\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 380\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_raise_timeout\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0merr\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0me\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0murl\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0murl\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mtimeout_value\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mread_timeout\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/http/client.py\u001b[0m in \u001b[0;36mgetresponse\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 1329\u001b[0m \u001b[0;32mtry\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1330\u001b[0m \u001b[0;32mtry\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 1331\u001b[0;31m \u001b[0mresponse\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mbegin\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 1332\u001b[0m \u001b[0;32mexcept\u001b[0m \u001b[0mConnectionError\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1333\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mclose\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/http/client.py\u001b[0m in \u001b[0;36mbegin\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 295\u001b[0m \u001b[0;31m# read until we get a non-100 response\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 296\u001b[0m \u001b[0;32mwhile\u001b[0m \u001b[0;32mTrue\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 297\u001b[0;31m \u001b[0mversion\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mstatus\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mreason\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_read_status\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 298\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mstatus\u001b[0m \u001b[0;34m!=\u001b[0m \u001b[0mCONTINUE\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 299\u001b[0m \u001b[0;32mbreak\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/http/client.py\u001b[0m in \u001b[0;36m_read_status\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 256\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 257\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0m_read_status\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 258\u001b[0;31m \u001b[0mline\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mstr\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mfp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mreadline\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0m_MAXLINE\u001b[0m \u001b[0;34m+\u001b[0m \u001b[0;36m1\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m\"iso-8859-1\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 259\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mlen\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mline\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;34m>\u001b[0m \u001b[0m_MAXLINE\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 260\u001b[0m \u001b[0;32mraise\u001b[0m \u001b[0mLineTooLong\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"status line\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/socket.py\u001b[0m in \u001b[0;36mreadinto\u001b[0;34m(self, b)\u001b[0m\n\u001b[1;32m 584\u001b[0m \u001b[0;32mwhile\u001b[0m \u001b[0;32mTrue\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 585\u001b[0m \u001b[0;32mtry\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 586\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_sock\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mrecv_into\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mb\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 587\u001b[0m \u001b[0;32mexcept\u001b[0m \u001b[0mtimeout\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 588\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_timeout_occurred\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;32mTrue\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/ssl.py\u001b[0m in \u001b[0;36mrecv_into\u001b[0;34m(self, buffer, nbytes, flags)\u001b[0m\n\u001b[1;32m 1000\u001b[0m \u001b[0;34m\"non-zero flags not allowed in calls to recv_into() on %s\"\u001b[0m \u001b[0;34m%\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1001\u001b[0m self.__class__)\n\u001b[0;32m-> 1002\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mread\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mnbytes\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mbuffer\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 1003\u001b[0m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1004\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0msocket\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mrecv_into\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mbuffer\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mnbytes\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mflags\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/ssl.py\u001b[0m in \u001b[0;36mread\u001b[0;34m(self, len, buffer)\u001b[0m\n\u001b[1;32m 863\u001b[0m \u001b[0;32mraise\u001b[0m \u001b[0mValueError\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"Read on closed or unwrapped SSL socket.\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 864\u001b[0m \u001b[0;32mtry\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 865\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_sslobj\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mread\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mlen\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mbuffer\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 866\u001b[0m \u001b[0;32mexcept\u001b[0m \u001b[0mSSLError\u001b[0m \u001b[0;32mas\u001b[0m \u001b[0mx\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 867\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mx\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m0\u001b[0m\u001b[0;34m]\u001b[0m \u001b[0;34m==\u001b[0m \u001b[0mSSL_ERROR_EOF\u001b[0m \u001b[0;32mand\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msuppress_ragged_eofs\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/ssl.py\u001b[0m in \u001b[0;36mread\u001b[0;34m(self, len, buffer)\u001b[0m\n\u001b[1;32m 623\u001b[0m \"\"\"\n\u001b[1;32m 624\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mbuffer\u001b[0m \u001b[0;32mis\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0;32mNone\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 625\u001b[0;31m \u001b[0mv\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_sslobj\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mread\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mlen\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mbuffer\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 626\u001b[0m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 627\u001b[0m \u001b[0mv\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_sslobj\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mread\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mlen\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;31mKeyboardInterrupt\u001b[0m: " + ] + } + ], "source": [ - "from website import Website\n", - "from content import Content\n", - "\n", "import requests\n", "from bs4 import BeautifulSoup\n", "\n", "class Crawler:\n", "\n", " def getPage(self, url):\n", - " \"\"\"\n", - " Utilty function used to get a Beautiful Soup object from a given URL\n", - " \"\"\"\n", - " print(\"Retrieving URL:\\n{}\".format(url))\n", - " session = requests.Session()\n", - " headers = {\"User-Agent\":\"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.95 Safari/537.36\", \"Accept\":\"text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8\"}\n", " try:\n", - " req = session.get(url, headers=headers)\n", + " req = requests.get(url)\n", " except requests.exceptions.RequestException:\n", - " return None\n", - " bs = BeautifulSoup(req.text, \"html.parser\")\n", - " return bs\n", + " return None \n", + " return BeautifulSoup(req.text, 'html.parser')\n", "\n", " def safeGet(self, pageObj, selector):\n", - " \"\"\"\n", - " Utilty function used to get a content string from a Beautiful Soup\n", - " object and a selector. Returns an empty string if no object\n", - " is found for the given selector\n", - " \"\"\"\n", " childObj = pageObj.select(selector)\n", " if childObj is not None and len(childObj) > 0:\n", " return childObj[0].get_text()\n", @@ -411,14 +1001,14 @@ " url = result.select(site.resultUrl)[0].attrs[\"href\"]\n", " #Check to see whether it's a relative or an absolute URL\n", " if(site.absoluteUrl):\n", - " pageObj = self.getPage(url)\n", + " bs = self.getPage(url)\n", " else:\n", - " pageObj = self.getPage(site.url+url)\n", - " if pageObj is None:\n", + " bs = self.getPage(site.url+url)\n", + " if bs is None:\n", " print(\"Something was wrong with that page or URL. Skipping!\")\n", " return\n", - " title = self.safeGet(pageObj, site.titleTag)\n", - " body = self.safeGet(pageObj, site.bodyTag)\n", + " title = self.safeGet(bs, site.titleTag)\n", + " body = self.safeGet(bs, site.bodyTag)\n", " if title != \"\" and body != \"\":\n", " content = Content(topic, title, body, url)\n", " content.print()\n", @@ -427,9 +1017,9 @@ "crawler = Crawler()\n", "\n", "siteData = [\n", - " [\"O'Reilly Media\",\"http://oreilly.com\",\"https://ssearch.oreilly.com/?q=\", \"article.product-result\",\"p.title a\",True,\"h1\",\"section#product-description\"],\n", - " [\"Reuters\",\"http://reuters.com\",\"http://www.reuters.com/search/news?blob=\",\"div.search-result-content\",\"h3.search-result-title a\",False,\"h1\",\"div.ArticleBody_body_2ECha\"],\n", - " [\"Brookings\",\"http://www.brookings.edu\",\"https://www.brookings.edu/search/?s=\",\"div.list-content article\",\"h4.title a\",True,\"h1\",\"div.post-body\"]\n", + " ['O\\'Reilly Media', 'http://oreilly.com', 'https://ssearch.oreilly.com/?q=', 'article.product-result','p.title a', True, 'h1', 'section#product-description'],\n", + " ['Reuters', 'http://reuters.com', 'http://www.reuters.com/search/news?blob=', 'div.search-result-content', 'h3.search-result-title a', False, 'h1', 'div.StandardArticleBody_body_1gnLA'],\n", + " ['Brookings', 'http://www.brookings.edu', 'https://www.brookings.edu/search/?s=', 'div.list-content article', 'h4.title a', True, 'h1', 'div.post-body']\n", " ]\n", "sites = []\n", "for row in siteData:\n", @@ -446,15 +1036,192 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Crawling Sites through Links" + "## Crawling Sites through Links" ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 68, "metadata": {}, "outputs": [], - "source": [] + "source": [ + "class Website:\n", + " \n", + " def __init__(self, name, url, targetPattern, absoluteUrl, titleTag, bodyTag):\n", + " self.name = name\n", + " self.url = url\n", + " self.targetPattern = targetPattern\n", + " self.absoluteUrl=absoluteUrl\n", + " self.titleTag = titleTag\n", + " self.bodyTag = bodyTag\n", + " \n", + "class Content:\n", + "\n", + " def __init__(self, url, title, body):\n", + " self.url = url\n", + " self.title = title\n", + " self.body = body\n", + "\n", + " def print(self):\n", + " print(\"URL: {}\".format(self.url))\n", + " print(\"TITLE: {}\".format(self.title))\n", + " print(\"BODY:\\n{}\".format(self.body))" + ] + }, + { + "cell_type": "code", + "execution_count": 69, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "GETTING https://www.reuters.com\n", + "GETTING https://www.reuters.com/article/us-usa-trump-5g/trump-national-security-team-sees-building-5g-network-as-option-idUSKBN1FH103\n", + "URL: https://www.reuters.com/article/us-usa-trump-5g/trump-national-security-team-sees-building-5g-network-as-option-idUSKBN1FH103\n", + "TITLE: Trump security team sees building U.S. 5G network as option\n", + "BODY:\n", + "WASHINGTON (Reuters) - President Donald Trump’s national security team is looking at options to counter the threat of China spying on U.S. phone calls that include the government building a super-fast 5G wireless network, a senior administration official said on Sunday. The official, confirming the gist of a report from Axios.com, said the option was being debated at a low level in the administration and was six to eight months away from being considered by the president himself. The 5G network concept is aimed at addressing what officials see as China’s threat to U.S. cyber security and economic security. The Trump administration has taken a harder line on policies initiated by predecessor Barack Obama on issues ranging from Beijing’s role in restraining North Korea to Chinese efforts to acquire U.S. strategic industries. Earlier this month, AT&T; was forced to scrap a plan to offer its customers handsets built by China’s Huawei after some members of Congress lobbied against the idea with federal regulators, sources told Reuters. In 2012, Huawei and ZTE Corp were the subject of a U.S. investigation into whether their equipment provided an opportunity for foreign espionage and threatened critical U.S. infrastructure. Some members of the House intelligence committee remain troubled by security threats posed by Huawei and ZTE, according to a congressional aide. Issues raised in a 2012 committee report about the Chinese firms have “never subsided,” the aide said, adding that there was newer classified intelligence that recently resurfaced those concerns. “We want to build a network so the Chinese can’t listen to your calls,” the senior official told Reuters. “We have to have a secure network that doesn’t allow bad actors to get in. We also have to ensure the Chinese don’t take over the market and put every non-5G network out of business.” Major wireless carriers have spent billions of dollars buying spectrum to launch 5G networks, and it is unclear if the U.S. government would have enough spectrum to build its own 5G network. Furthermore, Accenture has estimated that wireless operators will invest as much as $275 billion in the United States over seven years as they build out 5G. Last year, T-Mobile US Inc spent $8 billion and Dish Network Corp $6.2 billion to win the bulk of broadcast airwaves spectrum for sale in a government auction. An AT&T; spokesman said they could not comment on something they have not seen, and added: “Thanks to multi-billion dollar investments made by American companies, the work to launch 5G service in the United States is already well down the road.” Later this year, AT&T; is set to be the first to launch mobile 5G service in 12 U.S. locations, the spokesman said. A Verizon spokesman declined to comment. Representatives for Sprint and T-Mobile did not immediately respond to requests for comment. Another option includes having a 5G network built by a consortium of wireless carriers, the U.S. official said. “We want to build a secure 5G network and we have to work with industry to figure out the best way to do it,” the official said, speaking on condition of anonymity. Axios published documents it said were from a presentation from a National Security Council official. If the government built the network, it would rent access to carriers, Axios said. A looming concern laid out in the presentation was China’s growing presence in the manufacture and operation of wireless networks. A concerted government push could help the U.S. compete on that front, according to the presentation. A 5G network is expected to offer significantly faster speeds, more capacity and shorter response times, which could be utilized for new technologies ranging from self-driving cars to remote surgeries. Telecom companies and their suppliers consider it to be a multibillion-dollar revenue opportunity. Reporting by Steve Holland and Pete Schroeder; Additional reporting by Duston Volz, Suzanne Barlyn and David Shepardson; Editing by Chris Sanders, Peter Cooney and Cynthia OstermanOur Standards:The Thomson Reuters Trust Principles.\n", + "GETTING https://www.reuters.com/article/us-trump-effect-nafta-farmers/u-s-farmers-have-much-to-lose-if-nafta-deal-collapses-idUSKBN1FH0O0\n", + "URL: https://www.reuters.com/article/us-trump-effect-nafta-farmers/u-s-farmers-have-much-to-lose-if-nafta-deal-collapses-idUSKBN1FH0O0\n", + "TITLE: U.S. farmers have much to lose if NAFTA deal collapses\n", + "BODY:\n", + "CHICAGO/MONTREAL (Reuters) - A collapse of the North American Free Trade Agreement (NAFTA), which U.S. President Donald Trump has threatened to scrap, could create the most profound disruption for U.S. farmers who produce grains, meats and dairy products sold to Canada and Mexico. Blake Erwin, a third-generation American who raises cattle, corn and soybeans in Dixon, Nebraska, said on Saturday that he is not closely monitoring the negotiations, but that he hopes the outcome will support U.S. farmers who are struggling to make a living due to low commodities prices, rising healthcare costs and high property taxes. “A trade agreement has to be fair for the United States, but we also want to keep those exports going for the farmer,” said Erwin, 34. “We don’t want to mess up any good things we got going.” Erwin spoke to Reuters over the weekend as U.S., Canadian and Mexican negotiators met in Montreal for the sixth of seven planned rounds of talks to revamp the 1994 pact. U.S. farmers and exporters are fighting to preserve their exports at a time when Canada is finding customers in new markets. They also face strained relations between the United States and Mexico, a major buyer of U.S. corn, wheat, beef, pork and dairy products. “The U.S. is behaving so badly it’s going to create opportunities for Canadian agriculture,” Iowa State University economist Dermot Hayes said last week during a visit to Winnipeg. Trade flows have already begun to shift. The United States remains the dominant grain supplier to Mexico. Yet Mexico imported 583,000 metric tonnes of corn from Brazil in 2017, a 980 percent jump from the previous year, according to Mexican government trade data. Mexican imports of U.S. soybean meal, used to feed chickens and livestock, fell 29 percent in the first 11 months of 2017, compared with the same period the previous year, according to the U.S. Department of Agriculture. ‘MORE IMPORTANT THAN PRICE’ Slideshow (17 Images)Trump’s animosity toward Mexico and complaints over trade imbalances have pushed longtime buyers to work with new suppliers and expand existing relationships in South America, the European Union and other regions, trade experts said. “You get partners who build a bond and get real comfortable working together. We’re starting to see that bond becoming more important than price for where countries are buying grains,” said Karl Setzer, risk management team leader for MaxYield Cooperative. Case in point: A rare 30,000-tonne shipment of Brazilian corn steamed its way in November to grain terminals in the state of Veracruz, Mexico, operated by agribusiness heavyweights Cargill Inc [CARG.UL] and Archer Daniels Midland Co (ADM.N). Despite a steep decline in U.S. corn prices, with stocks sitting at a historic high, the buyer paid a premium for the Brazilian grain - as much as $2 more per tonne, according to trade sources. A Cargill spokeswoman said the company had no immediate comment. ADM did not respond to requests for comment. Canada last week agreed to join the new version of the Trans-Pacific Partnership, part of a broad effort to court new trade partners. “The tough NAFTA negotiations have convinced Canada that we have to have a number of trading partners, not just one,” said Ron Bonnett, a beef farmer and president of the Canadian Federation of Agriculture. The revised TPP, known as the Comprehensive and Progressive Agreement for Trans-Pacific Partnership, will reduce tariffs on Canadian pork, beef and wheat to Japan and other markets, in some cases eliminating duties altogether. Darci Vetter, former U.S. chief agriculture negotiator, said if the talks dragged on past March they might not end until next year, making it more challenging to sell American farm products. “Other trade agreements will be implemented, buyers of U.S. products in Mexico and Canada won’t be sure that we are a good long-term bet, and so we’re likely to see our clients react accordingly,” she told a panel on NAFTA in Montreal on Friday. Reporting by P.J. Huffstutter in Chicago and David Ljunggren in Montreal; Writing and additional reporting by Rod Nickel in Winnipeg, Manitoba; Additional reporting by Lucas Jackson in Dixon, Nebraska; Editing by Jim Finkle and Daniel WallisOur Standards:The Thomson Reuters Trust Principles.\n", + "GETTING https://www.reuters.com/article/us-afghanistan-blast/militants-attack-afghan-army-post-near-military-academy-in-capital-idUSKBN1FI07M\n", + "URL: https://www.reuters.com/article/us-afghanistan-blast/militants-attack-afghan-army-post-near-military-academy-in-capital-idUSKBN1FI07M\n", + "TITLE: Militants attack Afghan army post near military academy in capital\n", + "BODY:\n", + "KABUL (Reuters) - At least four militants attacked an army outpost near one of Afghanistan’s main military academies on Monday and at least one soldier was killed and three wounded, a defense ministry official said. The attack in the western outskirts of the capital, Kabul, came two days after an ambulance bomb in the center of the city killed more than 100 people and just over a week after another attack on the Hotel Intercontinental killed more than 20. Both of those attacks were claimed by the Taliban. Ministry of Defence officials said the militants attacked the outpost near the well-defended Marshal Fahim military academy just before dawn. One of the attackers blew himself up, one had been killed and two were still fighting. One soldier had been killed and three were wounded, said one official, who declined to be identified. Ministry spokesman Dawlat Waziri said three soldiers had been wounded and the clash was still going on. Earlier, resident Mohammad Ehsan said he heard a series of explosions coming from the area beginning at around 5 a.m. and lasting for at least an hour. Smaller blasts could still be heard at less frequent intervals. In October, a suicide attacker rammed a car full of explosives into a bus carrying cadets from the defense university, which is home to one of Afghanistan’s main officer training schools, killing 15 of them. Reporting by Omar Sobhani; Writing by James Mackenzie; Editing by Robert Birsel and Paul TaitOur Standards:The Thomson Reuters Trust Principles.\n", + "GETTING https://www.reuters.com/article/us-usa-immigration-manchin/democratic-senator-criticizes-pelosis-immigration-comment-idUSKBN1FH0RC\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "URL: https://www.reuters.com/article/us-usa-immigration-manchin/democratic-senator-criticizes-pelosis-immigration-comment-idUSKBN1FH0RC\n", + "TITLE: Democratic senator criticizes Pelosi's immigration comment\n", + "BODY:\n", + "WASHINGTON (Reuters) - U.S. Senator Joe Manchin, a moderate Democrat, said on Sunday he thought a new White House immigration plan was a good starting point, and he criticized House Democratic leader Nancy Pelosi for dismissing it as a way to “make America white again.” “We don’t need that type of rhetoric on either side, from Nancy, (Republican House Speaker) Paul Ryan or anybody else,” said Manchin, a West Virginian and a leader of a bipartisan Senate group working on immigration. He spoke on CNN’s “State of the Union” program. Manchin’s comments highlighted differences among Democrats ahead of a Feb. 8 deadline for the U.S. Congress to pass another spending bill and try to reach an immigration agreement that would also protect up to 1.8 million illegal immigrants brought to the United States as children, a group known as “Dreamers,” from deportation. Senior White House officials outlined an immigration plan on Thursday that would offer Dreamers a path to citizenship. The proposal also would curb some legal immigration programs and build a border wall with Mexico. The White House described the language on Dreamers as a major concession to Democrats, but leading Democrats quickly dismissed the plan as a non-starter. FILE PHOTO - House Minority Leader Nancy Pelosi (D-CA) speaks during a news conference after President Donald Trump and the U.S. Congress failed to reach a deal on funding for federal agencies on Capitol Hill in Washington, U.S., January 20, 2018. REUTERS/Joshua Roberts Pelosi said it held Dreamers “hostage to a hateful anti-immigrant scheme” and accused the administration of Republican President Donald Trump of a campaign “to make America white again.” In a separate interview on Sunday on NBC’s “Meet the Press” program, Manchin said he thought the White House plan was “a good starting point.” Manchin said the bipartisan group that he and moderate Republican Senator Susan Collins lead would meet on Monday evening to examine the White House immigration outline. “I think we can find a pathway forward; I really do,” Manchin told NBC. Collins, speaking to CBS’s “Face the Nation” on Sunday, said the group hoped to influence a proposal that the Senate’s two whips, Republican John Cornyn and Democrat Dick Durbin, are trying to assemble. “If (Cornyn and Durbin) agree, I have a feeling that that will be a bill that can go all the way to the president’s desk, and that’s our goal,” Collins said. The group of more than 20 senators from both parties, which has been dubbed the “Common Sense Coalition,” helped to end a three-day U.S. government shutdown last week. Reporting by Susan Cornwell; Editing by Jeffrey Benkoe and Lisa Von AhnOur Standards:The Thomson Reuters Trust Principles.\n", + "GETTING https://www.reuters.com/article/us-usa-trump-russia/republican-senators-urge-congress-to-revisit-bill-to-protect-mueller-idUSKBN1FH0SG\n", + "URL: https://www.reuters.com/article/us-usa-trump-russia/republican-senators-urge-congress-to-revisit-bill-to-protect-mueller-idUSKBN1FH0SG\n", + "TITLE: Republican senators urge Congress to revisit bill to protect Mueller\n", + "BODY:\n", + "WASHINGTON (Reuters) - The U.S. Congress should revisit proposed legislation to protect special counsel Robert Mueller after President Donald Trump tried to fire him last year while he investigated the Trump campaign’s ties with Russia, two Republican senators said on Sunday. In separate television interviews, Senators Susan Collins and Lindsey Graham expressed dismay at reports the Republican president had told the top White House lawyer to order U.S. Justice Department officials to fire Mueller. “I’ve got legislation protecting Mr. Mueller, and I’d be glad to pass it tomorrow,” Graham told the ABC News “This Week” program. On CNN’s “State of the Union,” Collins said: “It certainly wouldn’t hurt to put that extra safeguard in place, given the latest stories.” Tensions over Mueller’s probe are hovering over Trump’s year-old presidency as he prepares to give his first State of the Union Address on Tuesday. The New York Times reported on Thursday that Trump ordered White House counsel Donald McGahn to fire Mueller in June but backed down after McGahn threatened to resign rather than carry out the order. McGahn was “fed up” after Trump’s order, a person familiar with the matter told Reuters. He did not issue an ultimatum directly to the president but told then-White House chief of staff Reince Priebus and then-chief strategist Steve Bannon that he wanted to quit, the source said. FILE PHOTO: Special Counsel Robert Mueller (R) departs after briefing members of the U.S. Senate on his investigation into potential collusion between Russia and the Trump campaign on Capitol Hill in Washington, U.S., June 21, 2017. REUTERS/Joshua Roberts/File PhotoGraham and three Democratic senators introduced legislation last August that would protect special counsels, including Mueller, by requiring that a panel of federal judges review any action to remove them. The likelihood that such a bill would become law have seemed remote. Republicans in the U.S. House of Representatives have shown little enthusiasm for the idea. “I don’t think there’s a need for legislation right now to protect Mueller,” House Republican leader Kevin McCarthy said on NBC’s “Meet the Press” program. “The president and his team have fully cooperated” with the special counsel, he said. U.S. President Donald Trump looks on during the World Economic Forum (WEF) annual meeting in Davos, Switzerland January 26, 2018. REUTERS/Carlos Barria Republicans hold the majority in both the House and Senate. Mueller is investigating whether Trump associates and the Kremlin colluded during the 2016 presidential election. Russia denies such collusion, and Trump frequently denounces the probe as a “witch hunt.” Both Collins and Graham said they saw no sign that Trump is currently trying to fire Mueller. “I think what happened here is the president had a bad idea,” Collins said. “He talked with his counsel, who explained to an angry and frustrated president why it was a bad idea.” Graham said: “It’s pretty clear to me everyone in the White House knows it’d be the end of President Trump’s presidency if he tried to fire Mr. Mueller.” Reporting by Yasmeen Abutaled and Caren Bohan Writing by Warren Strobel Editing by Lisa Von AhnOur Standards:The Thomson Reuters Trust Principles.\n", + "GETTING https://www.reuters.com/article/us-china-economy-growth/china-eyes-black-swans-gray-rhinos-as-2018-growth-seen-slowing-to-6-5-6-8-percent-media-idUSKBN1FI0AY?il=0\n", + "URL: https://www.reuters.com/article/us-china-economy-growth/china-eyes-black-swans-gray-rhinos-as-2018-growth-seen-slowing-to-6-5-6-8-percent-media-idUSKBN1FI0AY?il=0\n", + "TITLE: China eyes black swans, gray rhinos as 2018 growth seen slowing to 6.5-6.8 percent - media\n", + "BODY:\n", + "BEIJING (Reuters) - China’s economic growth will likely slow to 6.5-6.8 percent this year, a senior official at the country’s top economic planner wrote in the Beijing Daily on Monday, while warning about the risks of “Black Swan” and “Gray Rhino” events. Black swans, or unforeseen occurrences, and gray rhinos, or highly possible yet ignored threats, are likely to occur this year with adverse consequences, Fan Hengshan, vice secretary general of the National Development and Reform Commission (NDRC), wrote in a commentary in the state-controlled newspaper. China’s economy grew 6.9 percent in 2017, the first annual acceleration since 2010. That pace easily beat the government’s 2017 target of around 6.5 percent, welcome news for policymakers looking to curb financial risks and cut corporate debt. “My personal opinion is that economic growth this year is very likely to exceed 6.5 percent, roughly between 6.5 and 6.8 percent,” Fan said. Analysts polled by Reuters earlier this month also predicted a slowdown to 6.5 percent this year as government-led crackdowns on debt risks and factory pollution drag on overall activity. China will focus on fending off risks this year, particularly risks that will impact regions and cause systemic fluctuations, Fan said. “To this end, we must remain highly vigilant and enhance our sense of urgency,” Fan said. Earlier this month, China’s banking regulator chief told the official People’s Daily in an interview that a black swan event could threaten the country’s financial stability, adding that risks, while still manageable, are “complex and serious.” Reporting by Stella Qiu and Ryan Woo; Editing by Kim CoghillOur Standards:The Thomson Reuters Trust Principles.\n", + "GETTING https://www.reuters.com/article/us-australia-defence/australia-to-spend-3-1-billion-to-increase-stake-in-global-arms-exports-idUSKBN1FI08I?il=0\n", + "URL: https://www.reuters.com/article/us-australia-defence/australia-to-spend-3-1-billion-to-increase-stake-in-global-arms-exports-idUSKBN1FI08I?il=0\n", + "TITLE: Australia to spend $3.1 billion to increase stake in global arms exports\n", + "BODY:\n", + "SYDNEY (Reuters) - Prime Minister Malcolm Turnbull said on Monday Australian military equipment manufacturers will be offered government-backed loans as part of a A$3.8 billion ($3.1 billion) package to become one of the world’s top 10 defense exporters. Australia said in 2016 it would boost defense spending by A$30 billion by 2021, purchasing frigates, armored personnel carriers, strike fighter jets, drones and a fleet of new submarines - many of which would be built at home. The defense industry has struggled to obtain finance from traditional lenders that have been unwilling to fund the arms industry, so Australia has created a A$3.8 billion loan scheme for companies seeking finance to export military equipment. “Australia is around the 20th largest exporter. Given the size of our defense budget we should be higher up the scale than that,” Turnbull told reporters in Sydney. “The goal is to get into the top 10,” he said. Christopher Pyne, the minister for the defense industry, said Australia would target sales to the United States, Canada, Britain and New Zealand. Australia’s annual defense budget was worth A$34.6 billion this year. The scheme is also meant to arrest a slide in Australia’s manufacturing sector and provide some support for its economy, which has been hampered by record-low wage growth. Australia saw a record number of jobs created in 2017 but its manufacturing sector has shrunk significantly following the end of domestic car manufacturing. Employment in manufacturing peaked in mid-1989 at roughly 1.17 million, or 15 percent of the entire workforce. That shrank to 877,000, or 7 percent, late last year. Australia has seen a wave of new jobs but companies are not keen on paying employees more, leaving wage growth near record lows in an unwelcome drag on consumer spending and inflation. Australia’s expansion plans come amid increased global demand for military hardware, led by China and Middle East nations, prompting criticism of Canberra from aid agencies who argue Australia could make human rights violations worse if weapons were sold to the wrong buyers. Analysts said Australia would need to significantly expand sales beyond its traditional partners to have any chance of fulfilling its ambition. “There are possibilities, but I doubt U.S. interest especially will go beyond niche capabilities,” said Euan Graham, director of the international security program at Australian think tank the Lowy Institute. Reporting by Colin PackhamOur Standards:The Thomson Reuters Trust Principles.\n", + "GETTING https://www.reuters.com/article/us-afghanistan-blast/militants-attack-afghan-army-post-near-military-academy-in-capital-idUSKBN1FI07M?il=0\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "URL: https://www.reuters.com/article/us-afghanistan-blast/militants-attack-afghan-army-post-near-military-academy-in-capital-idUSKBN1FI07M?il=0\n", + "TITLE: Militants attack Afghan army post near military academy in capital\n", + "BODY:\n", + "KABUL (Reuters) - At least four militants attacked an army outpost near one of Afghanistan’s main military academies on Monday and at least one soldier was killed and three wounded, a defense ministry official said. The attack in the western outskirts of the capital, Kabul, came two days after an ambulance bomb in the center of the city killed more than 100 people and just over a week after another attack on the Hotel Intercontinental killed more than 20. Both of those attacks were claimed by the Taliban. Ministry of Defence officials said the militants attacked the outpost near the well-defended Marshal Fahim military academy just before dawn. One of the attackers blew himself up, one had been killed and two were still fighting. One soldier had been killed and three were wounded, said one official, who declined to be identified. Ministry spokesman Dawlat Waziri said three soldiers had been wounded and the clash was still going on. Earlier, resident Mohammad Ehsan said he heard a series of explosions coming from the area beginning at around 5 a.m. and lasting for at least an hour. Smaller blasts could still be heard at less frequent intervals. In October, a suicide attacker rammed a car full of explosives into a bus carrying cadets from the defense university, which is home to one of Afghanistan’s main officer training schools, killing 15 of them. Reporting by Omar Sobhani; Writing by James Mackenzie; Editing by Robert Birsel and Paul TaitOur Standards:The Thomson Reuters Trust Principles.\n", + "GETTING https://www.reuters.com/article/us-usa-election-kochs/fearing-democratic-wave-koch-network-to-spend-big-on-u-s-midterm-elections-idUSKBN1FI07H?il=0\n", + "URL: https://www.reuters.com/article/us-usa-election-kochs/fearing-democratic-wave-koch-network-to-spend-big-on-u-s-midterm-elections-idUSKBN1FI07H?il=0\n", + "TITLE: Fearing Democratic wave, Koch network to spend big on U.S. midterm elections\n", + "BODY:\n", + "INDIAN WELLS, Calif. (Reuters) - The conservative Koch network spent its annual donor conference celebrating policy victories under President Donald Trump such as the tax overhaul, but the elation was tinged with anxiety over November’s congressional elections that could pose a risk to its agenda. To that end, the network plans to spend what would be unprecedented sums for the Kochs to maintain Republican majorities in the U.S. Senate and House of Representatives, while trying to sell voters on the benefits of the newly passed tax package, according to network officials who briefed reporters on their strategy during the conference this weekend in Indian Wells, California. Historically, the party in power loses seats in congressional elections after a new president’s election. This year, Republican angst is compounded by Trump, whose tumultuous presidency helped galvanize Democratic and independent voters to go to the polls in special and state elections last year. “It’s going to be a very challenging environment,” said Tim Phillips, president of Americans for Prosperity, a grassroots political group that is part of the Koch network. “The left is energized. There’s no question about that.” The network is prepared to spend up to $400 million on the congressional races - a 60 percent increase from its investment in the 2016 election, officials said. Energy magnates Charles and David Koch have long been outsized players in Republican politics, but they never warmed to Trump during the 2016 campaign. With Trump in the White House, however, they have seen several policy goals realized, including the tax legislation and cutting federal regulations. But the Koch network still diverges from the Republican president on issues such as immigration and trade. The Kochs strongly support legislation that would protect “Dreamers” - people brought illegally to the United States as children - from deportation. Two Koch operatives, Daniel Garza and Jorge Lima, were at the White House on Friday to try to help broker a deal with Congress over the Dreamers. The network issued a statement on Friday disagreeing with a proposal in Trump’s immigration blueprint that would set new limits on legal immigration. On trade, Phillips and other Koch operatives are deeply concerned about the administration’s moves to impose tariffs on some imports and ardently support the North American Free Trade Agreement with Canada and Mexico, which is being renegotiated and that Trump has threatened to abandon. ‘GET OUT AND DEFINE YOURSELF’ Senator John Cornyn, the No. 2 Republican in the Senate, was an attendee at the Koch event, a measure of the network’s deep ties to conservatives in Congress and an example of the leverage it would lose should Democrats take control next year. Of the $400 million the network is looking to spend, $20 million will go toward promoting the tax law, which passed Congress in December and included big cuts in corporate tax rates along with tax reductions for many individuals. Polls at the time of passage showed Americans divided about the bill’s merits, but Phillips said he believed that would change as voters see increased paychecks. Democrats condemned the tax measure as favoring corporations and the rich. Americans for Prosperity is positioned to be a ground-level force in the congressional elections. Its largest presence is in Florida, where Democratic Senator Bill Nelson may face a fight from Republican Governor Rick Scott. The group also has offices in Arizona, Nevada, and Wisconsin, among other states, all of which are expected to see highly competitive Senate races. Phillips said his group would likely stay out of Republican primaries. One variable hanging over the Kochs’ effort is Trump. Republican losses in a special U.S. Senate election in Alabama last month and a governor’s race in Virginia in November were attributed in part to discontent with the president. In 2010, Republicans seized on voter worries about Democratic President Barack Obama’s signature healthcare law, known as Obamacare, to capture the House and thwart Obama’s policy goals. For the Koch network, the challenge will be to avoid having every local race become a referendum on the president, which could propel a Democratic wave. James Davis, vice president of Freedom Partners, another Koch-backed policy group, said strong candidates should be able to differentiate themselves from Trump. “Get out there and define yourself and where you stand on the issues,” Davis said. During one event, a donor from Nebraska, Gail Werner-Robertson, stood up and addressed Charles Koch directly, urging attendees to contribute more to the midterm effort. “We can’t lose the progress you all have fought so hard for,” she said.  Reporting by James Oliphant; Editing by Caren Bohan and Peter CooneyOur Standards:The Thomson Reuters Trust Principles.\n", + "GETTING https://www.reuters.com/article/uk-global-markets/asia-shares-extend-bull-run-dollar-crawls-off-lows-idUSKBN1FI01D?il=0\n", + "URL: https://www.reuters.com/article/uk-global-markets/asia-shares-extend-bull-run-dollar-crawls-off-lows-idUSKBN1FI01D?il=0\n", + "TITLE: Asia shares extend bull run, dollar crawls off lows\n", + "BODY:\n", + "SYDNEY (Reuters) - Asian shares extended their bull run on Monday amid upbeat corporate earnings and strong global economic growth, while the dollar tried to bounce even as the White House continued to complain of “unfair” trade practices by competitors. MSCI’s broadest index of Asia-Pacific shares outside Japan added 0.4 percent, aiming for a 12th straight session of gains. It is up 8 percent for the year so far. Japan’s Nikkei rose 0.5 percent as the yen eased a little, while South Korea notched a record. Hong Kong’s Hang Seng also rose 0.5 percent. It has been the best performer for the year with a rise of more than 11 percent, followed by Shanghai blue chips with gains of nearly 9 percent, though the latter dipped on Monday. Wall Street has likewise been on a tear. Just last week, the Dow rose 2.08 percent, the S&P; 500 2.22 percent and the Nasdaq 2.31 percent. Quarterly earnings growth for the S&P; 500 is estimated at 13.2 percent, according to Thomson Reuters data, up from 12 percent at the start of the year. Of the 133 companies in the index that have reported, almost 80 percent beat forecasts. Another 36 percent of the S&P; 500 is due to report this week including heavy hitters Apple, Alphabet, Facebook, Microsoft and Amazon. The rush to equities combined with the risk of faster global inflation, has been a major negative for sovereign bonds with yields rising across much of the developed world. Yields on U.S. two-year Treasuries have risen steadily to their highest since 2008 and are fully priced for a rate hike by the Federal Reserve in March. Ten-year yields broke above the range of the last week or so to reach 2.69 percent on Monday, levels last visited in mid-2014. The Fed holds its next meeting on Wednesday, the last for Chair Janet Yellen, and analysts suspect the statement will only cement expectations for a March move. WORDS MATTER The inexorable increase in Treasury yields has not, however, been enough to rescue the U.S. dollar which sank to three-year lows last week as U.S. officials welcomed a weaker currency. President Donald Trump did try and walk some of that back late in the week but by then the damage had been done. Indeed, in an interview shown on Sunday, Trump threatened to confront the European Union over what he calls “very unfair” trade policy toward the U.S.. “‘Words’ in the world of FX do matter,” said Deutsche Bank strategist George Saravelos. “The U.S. is reengaging with a weak dollar policy similarly to the 1994-95 period.” This was happening while the sum of trade and investment flows into the United States was shrinking. The opposite was happening in the euro zone, where the German export engine was powering an ever-expanding current account surplus. “We continue to target $1.30 in EUR/USD for this year,” Saravelos concluded. The euro did run into a little profit-taking in Asia on Monday which nudged it to back to $1.2393 and away from a three-year peak of $1.2538 last week. The dollar was a fraction firmer on the yen at 108.89, but not far from a four-month trough of 108.28. Against a basket of major currencies, it edged up 0.2 percent to 89.281 having been at the lowest since late 2014. The dollar faces a bevy of U.S. economic reports this week including releases on inflation, manufacturing and payrolls. The currency’s decline has been a boon for many commodities, with gold making a 17-month top last week and last trading at $1,348.10 an ounce. Oil prices had reached their highest in three years and Brent crude futures were holding atop $70 at $70.40 a barrel. U.S. crude futures were up 18 cents at $66.32. Editing by Shri Navaratnam and Kim CoghillOur Standards:The Thomson Reuters Trust Principles.\n", + "GETTING https://www.reuters.com/article/us-japan-cryptocurrency/japan-to-punish-hacked-cryptocurrency-exchange-coincheck-on-monday-idUSKBN1FI06S?il=0\n" + ] + }, + { + "ename": "KeyboardInterrupt", + "evalue": "", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mKeyboardInterrupt\u001b[0m Traceback (most recent call last)", + "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[1;32m 52\u001b[0m \u001b[0mreuters\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mWebsite\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'Reuters'\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m'https://www.reuters.com'\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m'^(/article/)'\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;32mFalse\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m'h1'\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m'div.StandardArticleBody_body_1gnLA'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 53\u001b[0m \u001b[0mcrawler\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mCrawler\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mreuters\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 54\u001b[0;31m \u001b[0mcrawler\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mcrawl\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m", + "\u001b[0;32m\u001b[0m in \u001b[0;36mcrawl\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 47\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msite\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mabsoluteUrl\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 48\u001b[0m \u001b[0mtargetPage\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m'{}{}'\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mformat\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msite\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0murl\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mtargetPage\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 49\u001b[0;31m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mparse\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mtargetPage\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 50\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 51\u001b[0m \u001b[0;31m# self, name, url, targetPattern, absoluteUrl, titleTag, bodyTag\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m\u001b[0m in \u001b[0;36mparse\u001b[0;34m(self, url)\u001b[0m\n\u001b[1;32m 27\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 28\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0mparse\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0murl\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 29\u001b[0;31m \u001b[0mbs\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mgetPage\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0murl\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 30\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mbs\u001b[0m \u001b[0;32mis\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0;32mNone\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 31\u001b[0m \u001b[0mtitle\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msafeGet\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mbs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msite\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mtitleTag\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m\u001b[0m in \u001b[0;36mgetPage\u001b[0;34m(self, url)\u001b[0m\n\u001b[1;32m 9\u001b[0m \u001b[0mprint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"GETTING \"\u001b[0m\u001b[0;34m+\u001b[0m\u001b[0murl\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 10\u001b[0m \u001b[0;32mtry\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 11\u001b[0;31m \u001b[0mreq\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mrequests\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mget\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0murl\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 12\u001b[0m \u001b[0;32mexcept\u001b[0m \u001b[0mrequests\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mexceptions\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mRequestException\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 13\u001b[0m \u001b[0mprint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"Did not get page\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/requests/api.py\u001b[0m in \u001b[0;36mget\u001b[0;34m(url, params, **kwargs)\u001b[0m\n\u001b[1;32m 65\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 66\u001b[0m \u001b[0mkwargs\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msetdefault\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'allow_redirects'\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;32mTrue\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 67\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mrequest\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'get'\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0murl\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mparams\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mparams\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 68\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 69\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/requests/api.py\u001b[0m in \u001b[0;36mrequest\u001b[0;34m(method, url, **kwargs)\u001b[0m\n\u001b[1;32m 51\u001b[0m \u001b[0;31m# cases, and look like a memory leak in others.\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 52\u001b[0m \u001b[0;32mwith\u001b[0m \u001b[0msessions\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mSession\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;32mas\u001b[0m \u001b[0msession\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 53\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0msession\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mrequest\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mmethod\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mmethod\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0murl\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0murl\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 54\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 55\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/requests/sessions.py\u001b[0m in \u001b[0;36m__exit__\u001b[0;34m(self, *args)\u001b[0m\n\u001b[1;32m 348\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 349\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0m__exit__\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 350\u001b[0;31m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mclose\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 351\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 352\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0mprepare_request\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mrequest\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/requests/sessions.py\u001b[0m in \u001b[0;36mclose\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 647\u001b[0m \u001b[0;34m\"\"\"Closes all adapters and as such the session\"\"\"\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 648\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0mv\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0madapters\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mvalues\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 649\u001b[0;31m \u001b[0mv\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mclose\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 650\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 651\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0mmount\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mprefix\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0madapter\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/requests/adapters.py\u001b[0m in \u001b[0;36mclose\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 268\u001b[0m \u001b[0mconnections\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 269\u001b[0m \"\"\"\n\u001b[0;32m--> 270\u001b[0;31m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mpoolmanager\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mclear\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 271\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 272\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0mrequest_url\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mrequest\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mproxies\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/requests/packages/urllib3/poolmanager.py\u001b[0m in \u001b[0;36mclear\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 98\u001b[0m \u001b[0mre\u001b[0m\u001b[0;34m-\u001b[0m\u001b[0mused\u001b[0m \u001b[0mafter\u001b[0m \u001b[0mcompletion\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 99\u001b[0m \"\"\"\n\u001b[0;32m--> 100\u001b[0;31m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mpools\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mclear\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 101\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 102\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0mconnection_from_host\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mhost\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mport\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;32mNone\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mscheme\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;34m'http'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/requests/packages/urllib3/_collections.py\u001b[0m in \u001b[0;36mclear\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 92\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mdispose_func\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 93\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0mvalue\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mvalues\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 94\u001b[0;31m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mdispose_func\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mvalue\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 95\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 96\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0mkeys\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/requests/packages/urllib3/poolmanager.py\u001b[0m in \u001b[0;36m\u001b[0;34m(p)\u001b[0m\n\u001b[1;32m 64\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mconnection_pool_kw\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mconnection_pool_kw\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 65\u001b[0m self.pools = RecentlyUsedContainer(num_pools,\n\u001b[0;32m---> 66\u001b[0;31m dispose_func=lambda p: p.close())\n\u001b[0m\u001b[1;32m 67\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 68\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0m__enter__\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/requests/packages/urllib3/connectionpool.py\u001b[0m in \u001b[0;36mclose\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 410\u001b[0m \u001b[0mconn\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mold_pool\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mget\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mblock\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;32mFalse\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 411\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mconn\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 412\u001b[0;31m \u001b[0mconn\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mclose\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 413\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 414\u001b[0m \u001b[0;32mexcept\u001b[0m \u001b[0mEmpty\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;31mKeyboardInterrupt\u001b[0m: " + ] + } + ], + "source": [ + "import re\n", + "\n", + "class Crawler:\n", + " def __init__(self, site):\n", + " self.site = site\n", + " self.visited = []\n", + " \n", + " def getPage(self, url):\n", + " try:\n", + " req = requests.get(url)\n", + " except requests.exceptions.RequestException:\n", + " return None \n", + " return BeautifulSoup(req.text, 'html.parser')\n", + "\n", + " def safeGet(self, pageObj, selector):\n", + " selectedElems = pageObj.select(selector)\n", + " if selectedElems is not None and len(selectedElems) > 0:\n", + " return '\\n'.join([elem.get_text() for elem in selectedElems])\n", + " return ''\n", + " \n", + " def parse(self, url):\n", + " bs = self.getPage(url)\n", + " if bs is not None:\n", + " title = self.safeGet(bs, self.site.titleTag)\n", + " body = self.safeGet(bs, self.site.bodyTag)\n", + " if title != '' and body != '':\n", + " content = Content(url, title, body)\n", + " content.print()\n", + "\n", + " def crawl(self):\n", + " \"\"\"\n", + " Get pages from website home page\n", + " \"\"\"\n", + " bs = self.getPage(self.site.url)\n", + " targetPages = bs.findAll('a', href=re.compile(self.site.targetPattern))\n", + " for targetPage in targetPages:\n", + " targetPage = targetPage.attrs['href']\n", + " if targetPage not in self.visited:\n", + " self.visited.append(targetPage)\n", + " if not self.site.absoluteUrl:\n", + " targetPage = '{}{}'.format(self.site.url, targetPage)\n", + " self.parse(targetPage)\n", + "\n", + "reuters = Website('Reuters', 'https://www.reuters.com', '^(/article/)', False, 'h1', 'div.StandardArticleBody_body_1gnLA')\n", + "crawler = Crawler(reuters)\n", + "crawler.crawl()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Crawling multiple page types" + ] }, { "cell_type": "code", From e8163f51b9a1c1dc0d32ee9d11f1c979bb5298da Mon Sep 17 00:00:00 2001 From: remitchell Date: Mon, 29 Jan 2018 23:41:22 -0500 Subject: [PATCH 26/47] Deleted old chap2 notebook, code formatting --- v2/Chapter01_BeginningToScrape.ipynb | 2 + v2/Chapter02-AdvancedHTMLParsing.ipynb | 2 +- v2/Chapter03-web-crawlers.ipynb | 7 +- v2/Chapter04_CrawlingModels.ipynb | 82 ++++++++++++------- v2/Chapter06_StoringData.ipynb | 4 +- v2/Chapter09_NaturalLanguages.ipynb | 4 +- ...pter10-CrawlingThroughFormsAndLogins.ipynb | 4 +- v2/Chapter11-JavaScript.ipynb | 8 +- v2/Chapter13-ImageProcessing.ipynb | 18 ++-- v2/Chapter15_Testing.ipynb | 13 ++- v2/Chapter2-AdvancedHTMLParsing.ipynb | 34 -------- 11 files changed, 95 insertions(+), 83 deletions(-) delete mode 100644 v2/Chapter2-AdvancedHTMLParsing.ipynb diff --git a/v2/Chapter01_BeginningToScrape.ipynb b/v2/Chapter01_BeginningToScrape.ipynb index 5d4af4c..8d7a74b 100644 --- a/v2/Chapter01_BeginningToScrape.ipynb +++ b/v2/Chapter01_BeginningToScrape.ipynb @@ -88,6 +88,7 @@ "from urllib.error import HTTPError\n", "from bs4 import BeautifulSoup\n", "\n", + "\n", "def getTitle(url):\n", " try:\n", " html = urlopen(url)\n", @@ -100,6 +101,7 @@ " return None\n", " return title\n", "\n", + "\n", "title = getTitle(\"http://www.pythonscraping.com/pages/page1.html\")\n", "if title == None:\n", " print(\"Title could not be found\")\n", diff --git a/v2/Chapter02-AdvancedHTMLParsing.ipynb b/v2/Chapter02-AdvancedHTMLParsing.ipynb index 5ae99c8..6779c08 100644 --- a/v2/Chapter02-AdvancedHTMLParsing.ipynb +++ b/v2/Chapter02-AdvancedHTMLParsing.ipynb @@ -82,7 +82,7 @@ } ], "source": [ - "nameList = bs.findAll('span', {'class':'green'})\n", + "nameList = bs.findAll('span', {'class': 'green'})\n", "for name in nameList:\n", " print(name.get_text())" ] diff --git a/v2/Chapter03-web-crawlers.ipynb b/v2/Chapter03-web-crawlers.ipynb index 53d202b..aae002a 100644 --- a/v2/Chapter03-web-crawlers.ipynb +++ b/v2/Chapter03-web-crawlers.ipynb @@ -1766,13 +1766,15 @@ } ], "source": [ - "#Collects a list of all external URLs found on the site\n", + "# Collects a list of all external URLs found on the site\n", "allExtLinks = set()\n", "allIntLinks = set()\n", "\n", + "\n", "def getAllExternalLinks(siteUrl):\n", " html = urlopen(siteUrl)\n", - " domain = '{}://{}'.format(urlparse(siteUrl).scheme, urlparse(siteUrl).netloc)\n", + " domain = '{}://{}'.format(urlparse(siteUrl).scheme,\n", + " urlparse(siteUrl).netloc)\n", " bs = BeautifulSoup(html, 'html.parser')\n", " internalLinks = getInternalLinks(bs, domain)\n", " externalLinks = getExternalLinks(bs, domain)\n", @@ -1786,6 +1788,7 @@ " allIntLinks.add(link)\n", " getAllExternalLinks(link)\n", "\n", + "\n", "allIntLinks.add('http://oreilly.com')\n", "getAllExternalLinks('http://oreilly.com')" ] diff --git a/v2/Chapter04_CrawlingModels.ipynb b/v2/Chapter04_CrawlingModels.ipynb index 211fa3d..0b3efd5 100644 --- a/v2/Chapter04_CrawlingModels.ipynb +++ b/v2/Chapter04_CrawlingModels.ipynb @@ -22,7 +22,8 @@ " \"\"\"\n", "\n", " session = requests.Session()\n", - " headers = {\"User-Agent\":\"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.95 Safari/537.36\", \"Accept\":\"text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8\"}\n", + " headers = {\"User-Agent\": \"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.95 Safari/537.36\",\n", + " \"Accept\": \"text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8\"}\n", " try:\n", " req = session.get(url, headers=headers)\n", " except requests.exceptions.RequestException:\n", @@ -183,36 +184,41 @@ "source": [ "import requests\n", "\n", + "\n", "class Content:\n", " def __init__(self, url, title, body):\n", " self.url = url\n", " self.title = title\n", " self.body = body\n", "\n", + "\n", "def getPage(url):\n", " req = requests.get(url)\n", " return BeautifulSoup(req.text, 'html.parser')\n", "\n", + "\n", "def scrapeNYTimes(url):\n", " bs = getPage(url)\n", " title = bs.find(\"h1\").text\n", - " lines = bs.find_all(\"p\", {\"class\":\"story-content\"})\n", + " lines = bs.find_all(\"p\", {\"class\": \"story-content\"})\n", " body = '\\n'.join([line.text for line in lines])\n", " return Content(url, title, body)\n", "\n", + "\n", "def scrapeBrookings(url):\n", " bs = getPage(url)\n", " title = bs.find(\"h1\").text\n", - " body = bs.find(\"div\",{\"class\",\"post-body\"}).text\n", + " body = bs.find(\"div\", {\"class\", \"post-body\"}).text\n", " return Content(url, title, body)\n", "\n", + "\n", "url = 'https://www.brookings.edu/blog/future-development/2018/01/26/delivering-inclusive-urban-access-3-uncomfortable-truths/'\n", "content = scrapeBrookings(url)\n", "print('Title: {}'.format(content.title))\n", "print('URL: {}\\n'.format(content.url))\n", "print(content.body)\n", "\n", - "url = \"https://www.nytimes.com/2018/01/25/opinion/sunday/silicon-valley-immortality.html\"\n", + "url = 'https://www.nytimes.com/2018/01/25/opinion/sunday/silicon-valley-immortality.html'\n", "content = scrapeNYTimes(url)\n", "print('Title: {}'.format(content.title))\n", "print('URL: {}\\n'.format(content.url))\n", @@ -229,7 +235,7 @@ " \"\"\"\n", " Common base class for all articles/pages\n", " \"\"\"\n", - " \n", + "\n", " def __init__(self, url, title, body):\n", " self.url = url\n", " self.title = title\n", @@ -242,7 +248,7 @@ " print(\"URL: {}\".format(self.url))\n", " print(\"TITLE: {}\".format(self.title))\n", " print(\"BODY:\\n{}\".format(self.body))\n", - " \n", + "\n", "\n", "class Website:\n", " \"\"\" \n", @@ -265,13 +271,14 @@ "import requests\n", "from bs4 import BeautifulSoup\n", "\n", + "\n", "class Crawler:\n", "\n", " def getPage(self, url):\n", " try:\n", " req = requests.get(url)\n", " except requests.exceptions.RequestException:\n", - " return None \n", + " return None\n", " return BeautifulSoup(req.text, 'html.parser')\n", "\n", " def safeGet(self, pageObj, selector):\n", @@ -800,9 +807,14 @@ " websites.append(Website(row[0], row[1], row[2], row[3]))\n", "\n", "crawler.parse(websites[0], 'http://shop.oreilly.com/product/0636920028154.do')\n", - "crawler.parse(websites[1], 'http://www.reuters.com/article/us-usa-epa-pruitt-idUSKBN19W2D0')\n", - "crawler.parse(websites[2], 'https://www.brookings.edu/blog/techtank/2016/03/01/idea-to-retire-old-methods-of-policy-education/')\n", - "crawler.parse(websites[3], 'https://www.nytimes.com/2018/01/28/business/energy-environment/oil-boom.html')" + "crawler.parse(\n", + " websites[1], 'http://www.reuters.com/article/us-usa-epa-pruitt-idUSKBN19W2D0')\n", + "crawler.parse(\n", + " websites[2],\n", + " 'https://www.brookings.edu/blog/techtank/2016/03/01/idea-to-retire-old-methods-of-policy-education/')\n", + "crawler.parse(\n", + " websites[3], \n", + " 'https://www.nytimes.com/2018/01/28/business/energy-environment/oil-boom.html')" ] }, { @@ -852,7 +864,7 @@ " self.searchUrl = searchUrl\n", " self.resultListing = resultListing\n", " self.resultUrl = resultUrl\n", - " self.absoluteUrl=absoluteUrl\n", + " self.absoluteUrl = absoluteUrl\n", " self.titleTag = titleTag\n", " self.bodyTag = bodyTag" ] @@ -976,13 +988,14 @@ "import requests\n", "from bs4 import BeautifulSoup\n", "\n", + "\n", "class Crawler:\n", "\n", " def getPage(self, url):\n", " try:\n", " req = requests.get(url)\n", " except requests.exceptions.RequestException:\n", - " return None \n", + " return None\n", " return BeautifulSoup(req.text, 'html.parser')\n", "\n", " def safeGet(self, pageObj, selector):\n", @@ -995,15 +1008,15 @@ " \"\"\"\n", " Searches a given website for a given topic and records all pages found\n", " \"\"\"\n", - " bs = self.getPage(site.searchUrl+topic)\n", + " bs = self.getPage(site.searchUrl + topic)\n", " searchResults = bs.select(site.resultListing)\n", " for result in searchResults:\n", " url = result.select(site.resultUrl)[0].attrs[\"href\"]\n", - " #Check to see whether it's a relative or an absolute URL\n", + " # Check to see whether it's a relative or an absolute URL\n", " if(site.absoluteUrl):\n", " bs = self.getPage(url)\n", " else:\n", - " bs = self.getPage(site.url+url)\n", + " bs = self.getPage(site.url + url)\n", " if bs is None:\n", " print(\"Something was wrong with that page or URL. Skipping!\")\n", " return\n", @@ -1017,17 +1030,21 @@ "crawler = Crawler()\n", "\n", "siteData = [\n", - " ['O\\'Reilly Media', 'http://oreilly.com', 'https://ssearch.oreilly.com/?q=', 'article.product-result','p.title a', True, 'h1', 'section#product-description'],\n", - " ['Reuters', 'http://reuters.com', 'http://www.reuters.com/search/news?blob=', 'div.search-result-content', 'h3.search-result-title a', False, 'h1', 'div.StandardArticleBody_body_1gnLA'],\n", - " ['Brookings', 'http://www.brookings.edu', 'https://www.brookings.edu/search/?s=', 'div.list-content article', 'h4.title a', True, 'h1', 'div.post-body']\n", - " ]\n", + " ['O\\'Reilly Media', 'http://oreilly.com', 'https://ssearch.oreilly.com/?q=',\n", + " 'article.product-result', 'p.title a', True, 'h1', 'section#product-description'],\n", + " ['Reuters', 'http://reuters.com', 'http://www.reuters.com/search/news?blob=', 'div.search-result-content',\n", + " 'h3.search-result-title a', False, 'h1', 'div.StandardArticleBody_body_1gnLA'],\n", + " ['Brookings', 'http://www.brookings.edu', 'https://www.brookings.edu/search/?s=',\n", + " 'div.list-content article', 'h4.title a', True, 'h1', 'div.post-body']\n", + "]\n", "sites = []\n", "for row in siteData:\n", - " sites.append(Website(row[0], row[1], row[2], row[3], row[4], row[5], row[6], row[7]))\n", + " sites.append(Website(row[0], row[1], row[2],\n", + " row[3], row[4], row[5], row[6], row[7]))\n", "\n", - "topics = [\"python\",\"data science\"]\n", + "topics = [\"python\", \"data science\"]\n", "for topic in topics:\n", - " print(\"GETTING INFO ABOUT: \"+topic)\n", + " print(\"GETTING INFO ABOUT: \" + topic)\n", " for targetSite in sites:\n", " crawler.search(topic, targetSite)" ] @@ -1046,15 +1063,16 @@ "outputs": [], "source": [ "class Website:\n", - " \n", + "\n", " def __init__(self, name, url, targetPattern, absoluteUrl, titleTag, bodyTag):\n", " self.name = name\n", " self.url = url\n", " self.targetPattern = targetPattern\n", - " self.absoluteUrl=absoluteUrl\n", + " self.absoluteUrl = absoluteUrl\n", " self.titleTag = titleTag\n", " self.bodyTag = bodyTag\n", - " \n", + "\n", + "\n", "class Content:\n", "\n", " def __init__(self, url, title, body):\n", @@ -1170,16 +1188,17 @@ "source": [ "import re\n", "\n", + "\n", "class Crawler:\n", " def __init__(self, site):\n", " self.site = site\n", " self.visited = []\n", - " \n", + "\n", " def getPage(self, url):\n", " try:\n", " req = requests.get(url)\n", " except requests.exceptions.RequestException:\n", - " return None \n", + " return None\n", " return BeautifulSoup(req.text, 'html.parser')\n", "\n", " def safeGet(self, pageObj, selector):\n", @@ -1187,7 +1206,7 @@ " if selectedElems is not None and len(selectedElems) > 0:\n", " return '\\n'.join([elem.get_text() for elem in selectedElems])\n", " return ''\n", - " \n", + "\n", " def parse(self, url):\n", " bs = self.getPage(url)\n", " if bs is not None:\n", @@ -1211,7 +1230,9 @@ " targetPage = '{}{}'.format(self.site.url, targetPage)\n", " self.parse(targetPage)\n", "\n", - "reuters = Website('Reuters', 'https://www.reuters.com', '^(/article/)', False, 'h1', 'div.StandardArticleBody_body_1gnLA')\n", + "\n", + "reuters = Website('Reuters', 'https://www.reuters.com', '^(/article/)',\n", + " False, 'h1', 'div.StandardArticleBody_body_1gnLA')\n", "crawler = Crawler(reuters)\n", "crawler.crawl()" ] @@ -1248,13 +1269,16 @@ "source": [ "class Product(Website):\n", " \"\"\"Contains information for scraping a product page\"\"\"\n", + "\n", " def __init__(self, name, url, titleTag, productNumber, price):\n", " Website.__init__(self, name, url, TitleTag)\n", " self.productNumberTag = productNumberTag\n", " self.priceTag = priceTag\n", "\n", + "\n", "class Article(Website):\n", " \"\"\"Contains information for scraping an article page\"\"\"\n", + "\n", " def __init__(self, name, url, titleTag, bodyTag, dateTag):\n", " Website.__init__(self, name, url, titleTag)\n", " self.bodyTag = bodyTag\n", diff --git a/v2/Chapter06_StoringData.ipynb b/v2/Chapter06_StoringData.ipynb index dbf4cc5..212696e 100644 --- a/v2/Chapter06_StoringData.ipynb +++ b/v2/Chapter06_StoringData.ipynb @@ -37025,7 +37025,9 @@ "execution_count": null, "metadata": {}, "outputs": [], - "source": [] + "source": [ + "'" + ] } ], "metadata": { diff --git a/v2/Chapter09_NaturalLanguages.ipynb b/v2/Chapter09_NaturalLanguages.ipynb index 35ba9c8..5d90fa0 100644 --- a/v2/Chapter09_NaturalLanguages.ipynb +++ b/v2/Chapter09_NaturalLanguages.ipynb @@ -276,7 +276,9 @@ "execution_count": null, "metadata": {}, "outputs": [], - "source": [] + "source": [ + "'" + ] }, { "cell_type": "code", diff --git a/v2/Chapter10-CrawlingThroughFormsAndLogins.ipynb b/v2/Chapter10-CrawlingThroughFormsAndLogins.ipynb index 3f082b0..9c9f25f 100644 --- a/v2/Chapter10-CrawlingThroughFormsAndLogins.ipynb +++ b/v2/Chapter10-CrawlingThroughFormsAndLogins.ipynb @@ -517,8 +517,8 @@ "from requests.auth import HTTPBasicAuth\n", "\n", "auth = HTTPBasicAuth('ryan', 'password')\n", - "r = requests.post(url='http://pythonscraping.com/pages/auth/login.php', auth=\n", - " auth)\n", + "r = requests.post(\n", + " url='http://pythonscraping.com/pages/auth/login.php', auth=auth)\n", "print(r.text)" ] }, diff --git a/v2/Chapter11-JavaScript.ipynb b/v2/Chapter11-JavaScript.ipynb index f550269..57a13ef 100644 --- a/v2/Chapter11-JavaScript.ipynb +++ b/v2/Chapter11-JavaScript.ipynb @@ -66,13 +66,15 @@ "from selenium.webdriver.support import expected_conditions as EC\n", "from selenium.common.exceptions import TimeoutException\n", "\n", - "driver = webdriver.PhantomJS(executable_path='drivers/phantomjs/phantomjs-2.1.1-macosx/bin/phantomjs')\n", + "driver = webdriver.PhantomJS(\n", + " executable_path='drivers/phantomjs/phantomjs-2.1.1-macosx/bin/phantomjs')\n", "driver.get('http://pythonscraping.com/pages/javascript/redirectDemo1.html')\n", "try:\n", - " bodyElement = WebDriverWait(driver, 15).until(EC.presence_of_element_located((By.XPATH, '//body[contains(text(), \"This is the page you are looking for!\")]')))\n", + " bodyElement = WebDriverWait(driver, 15).until(EC.presence_of_element_located(\n", + " (By.XPATH, '//body[contains(text(), \"This is the page you are looking for!\")]')))\n", " print(bodyElement.text)\n", "except TimeoutException:\n", - " print('Did not find the element')\n" + " print('Did not find the element')" ] }, { diff --git a/v2/Chapter13-ImageProcessing.ipynb b/v2/Chapter13-ImageProcessing.ipynb index d2232fa..2ecaaaa 100644 --- a/v2/Chapter13-ImageProcessing.ipynb +++ b/v2/Chapter13-ImageProcessing.ipynb @@ -493,31 +493,35 @@ "\n", "def getImageText(imageUrl):\n", " urlretrieve(image, 'page.jpg')\n", - " p = subprocess.Popen(['tesseract', 'page.jpg', 'page'], stdout=subprocess.PIPE,stderr=subprocess.PIPE)\n", + " p = subprocess.Popen(['tesseract', 'page.jpg', 'page'],\n", + " stdout=subprocess.PIPE, stderr=subprocess.PIPE)\n", " p.wait()\n", " f = open('page.txt', 'r')\n", " print(f.read())\n", "\n", - "#Create new Selenium driver\n", + "\n", + "# Create new Selenium driver\n", "driver = webdriver.Chrome(executable_path='drivers/chromedriver/chromedriver')\n", "\n", - "driver.get('https://www.amazon.com/War-Peace-Leo-Nikolayevich-Tolstoy/dp/1427049629')\n", + "driver.get(\n", + " 'https://www.amazon.com/War-Peace-Leo-Nikolayevich-Tolstoy/dp/1427049629')\n", "time.sleep(2)\n", "\n", - "#Click on the book preview button\n", + "# Click on the book preview button\n", "driver.find_element_by_id('imgBlkFront').click()\n", "imageList = []\n", "\n", - "#Wait for the page to load\n", + "# Wait for the page to load\n", "time.sleep(5)\n", "\n", "while 'pointer' in driver.find_element_by_id('sitbReaderRightPageTurner').get_attribute('style'):\n", - " #While the right arrow is available for clicking, turn through pages\n", + " # While the right arrow is available for clicking, turn through pages\n", " driver.find_element_by_id('sitbReaderRightPageTurner').click()\n", " time.sleep(2)\n", " # Get any new pages that have loaded (multiple pages can load at once,\n", " # but duplicates will not be added to a set)\n", - " pages = driver.find_elements_by_xpath('//div[@class=\\'pageImage\\']/div/img')\n", + " pages = driver.find_elements_by_xpath(\n", + " '//div[@class=\\'pageImage\\']/div/img')\n", " if not len(pages):\n", " print(\"No pages found\")\n", " for page in pages:\n", diff --git a/v2/Chapter15_Testing.ipynb b/v2/Chapter15_Testing.ipynb index 988e31d..39552e0 100644 --- a/v2/Chapter15_Testing.ipynb +++ b/v2/Chapter15_Testing.ipynb @@ -252,7 +252,9 @@ { "cell_type": "code", "execution_count": 2, - "metadata": {}, + "metadata": { + "scrolled": true + }, "outputs": [ { "name": "stderr", @@ -297,10 +299,13 @@ "from selenium.webdriver import ActionChains\n", "import unittest\n", "\n", + "\n", "class TestAddition(unittest.TestCase):\n", " driver = None\n", + "\n", " def setUp(self):\n", - " self.driver = webdriver.PhantomJS(executable_path='drivers/phantomjs/phantomjs')\n", + " self.driver = webdriver.PhantomJS(\n", + " executable_path='drivers/phantomjs/phantomjs')\n", " url = 'http://pythonscraping.com/pages/javascript/draggableDemo.html'\n", " self.driver.get(url)\n", "\n", @@ -312,7 +317,9 @@ " target = self.driver.find_element_by_id(\"div2\")\n", " actions = ActionChains(self.driver)\n", " actions.drag_and_drop(element, target).perform()\n", - " self.assertEqual(\"You are definitely not a bot!\", self.driver.find_element_by_id(\"message\").text)\n", + " self.assertEqual(\"You are definitely not a bot!\",\n", + " self.driver.find_element_by_id(\"message\").text)\n", + "\n", "\n", "if __name__ == '__main__':\n", " unittest.main(argv=[''], exit=False)\n", diff --git a/v2/Chapter2-AdvancedHTMLParsing.ipynb b/v2/Chapter2-AdvancedHTMLParsing.ipynb deleted file mode 100644 index 13fcb96..0000000 --- a/v2/Chapter2-AdvancedHTMLParsing.ipynb +++ /dev/null @@ -1,34 +0,0 @@ -{ - "cells": [ - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.6.1" - } - }, - "nbformat": 4, - "nbformat_minor": 2 -} From 81a32646e20cbbb3d865a9a4fbd9a498d65d4c7d Mon Sep 17 00:00:00 2001 From: remitchell Date: Sun, 4 Feb 2018 02:27:48 -0500 Subject: [PATCH 27/47] Updated Amazon preview reader --- v2/Chapter13-ImageProcessing.ipynb | 450 +++++++++++------------------ 1 file changed, 163 insertions(+), 287 deletions(-) diff --git a/v2/Chapter13-ImageProcessing.ipynb b/v2/Chapter13-ImageProcessing.ipynb index 2ecaaaa..9403cb0 100644 --- a/v2/Chapter13-ImageProcessing.ipynb +++ b/v2/Chapter13-ImageProcessing.ipynb @@ -190,282 +190,169 @@ }, { "cell_type": "code", - "execution_count": 35, + "execution_count": 1, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "CLICKED\n", - "Found image: https://d1b14unh5d6w7g.cloudfront.net/1534770720.01.S003.LXXXXXXX.jpg?Expires=1516142762&Signature=Gfh/IgAyS6fXTja9Kw0CvSoCxp9YBjdOzwuBCURL5fQEw3E3NVHJGQC2AYyaPstELbbRbkAGiThdxboDus+DoEUaOa2NtK4o9pbB8hD+JOlGAzJPNOzM3ckqmADcerLg1EFickty4BxuskEwATkv53mmNxbn04zHkaTw3pVPiOU=&Key-Pair-Id=APKAIUO27P366FGALUMQ\n", - "\\i\n", - "\n", - "anrluhled Mmenzl\n", - "\n", - "Copyright © 2016 by s M. Holden\n", - "All rights reserved.\n", - "lSBN-13:978»1534770720\n", - "lSBN-IO: 1534770720\n", - "\n", - "anrluhled Mmenzl\n", - "\n", - "\n", - "Found image: https://d1b14unh5d6w7g.cloudfront.net/1534770720.01.S005.LXXXXXXX.jpg?Expires=1516142770&Signature=VOPuiRcBMO/0IUpVbnsJtMf8RnKojxdqYqhmJ0TA/2YMDQeb8NeazpO6QcqBj6w1ojY7ATMmQSQ7sTgLVeX7vmiCQ6cf/Ew1rZzq+45FyoZ2efnRl2AuuNrnpmgu75csX8dcwrq/l5F7c+tzdw3Om5wBEj9br7JjETYOAsLZ+pY=&Key-Pair-Id=APKAIUO27P366FGALUMQ\n", - "anrluhled Mmenzl\n", - "\n", - "Ben-Hux by Lew Wallace\n", - "Three 5mm by thn Dos Passm\n", - "Hean or Darkness by Joseph Conrad\n", - "Lnrd Iirn by JMPh Conrad\n", - "Cap|am Blood by Ralael Sabauni\n", - "The Golden Bough by James G. mm\n", - "The Pnsoher of Zenda by Amhony Hope\n", - "Heretics by 5.x, Chesterton\n", - "Crime and Punishment by Fyodor Dbsmyeysky\n", - "Sherlock Holmee, His L35! Bow by Sir Arthur Conan Doyle\n", - "The mum by Fyodor Dosmyevsky\n", - "Th2 innocence of Father Brown by GK. Chemmn\n", - "The Wisdom of Falher Brown by GK, Cheskenon\n", - "Wukhcring Hughes by Emily Bronte\n", - "or Human Bondage by w. Svmexsel Maugham\n", - "Ohm Twist by Chaxlcs Dickens\n", - "Davxd Copperfield by Chaxles Dickens\n", - "Moby Dick by Herman Melville\n", - "\n", - "LARGE PRINT CLASSICS\n", - "\n", - "Vish uur webyite at\n", - "www.summikclaisicpress.mm\n", - "to view our growing Imeup hr Smmml Classic ngg Prim\n", - "de/ums and our complete calalog 01 classic and vintage books\n", - "\n", - "Alsa mrm avuM/Ihle,.\n", - "LARGE PRINT MYSTERIES\n", - "\n", - "uh. smite collection of Summil Classic Mysteries, mmplem\n", - "and unabridge-‘L in large prim edinom.\n", - "\n", - "anrluhled Mmenzl\n", - "\n", - "\n", - "Found image: https://d1b14unh5d6w7g.cloudfront.net/1534770720.01.S003.LXXXXXXX.jpg?Expires=1516142762&Signature=Gfh/IgAyS6fXTja9Kw0CvSoCxp9YBjdOzwuBCURL5fQEw3E3NVHJGQC2AYyaPstELbbRbkAGiThdxboDus+DoEUaOa2NtK4o9pbB8hD+JOlGAzJPNOzM3ckqmADcerLg1EFickty4BxuskEwATkv53mmNxbn04zHkaTw3pVPiOU=&Key-Pair-Id=APKAIUO27P366FGALUMQ\n", - "Found image: https://d1b14unh5d6w7g.cloudfront.net/1534770720.01.S005.LXXXXXXX.jpg?Expires=1516142770&Signature=VOPuiRcBMO/0IUpVbnsJtMf8RnKojxdqYqhmJ0TA/2YMDQeb8NeazpO6QcqBj6w1ojY7ATMmQSQ7sTgLVeX7vmiCQ6cf/Ew1rZzq+45FyoZ2efnRl2AuuNrnpmgu75csX8dcwrq/l5F7c+tzdw3Om5wBEj9br7JjETYOAsLZ+pY=&Key-Pair-Id=APKAIUO27P366FGALUMQ\n", - "Found image: https://d1b14unh5d6w7g.cloudfront.net/1534770720.01.S006.LXXXXXXX.jpg?Expires=1516142781&Signature=Gnj3fJz37cYkPlj4ZobugITgSoY/xYuRCiQDzcAvPdo+GTStF0k7Xsyxq2LZZhmLXoJJKDb9vo3MsrekyAM+NmRFeMhsXi63gOjMNRG1tP+oddjYIYtQmjasWOd1jxkqr/1J/zgCWGMV4kJR7+erMHe+yVAUPOwNTHlFtjHZkUI=&Key-Pair-Id=APKAIUO27P366FGALUMQ\n", - "anrluhled Mmenzl\n", - "\n", - "Publisher's Note\n", - "\n", - "This edition is not an eleclronic scan or reproduction. The\n", - "text has been formalled and edited by human edilors based on\n", - "the I9I5 translation by Eva Martin, the widely—nvailnble\n", - "\"classic\" English version. We have retained antiquahed and\n", - "occasionally inconsistent spellings. puncmation and the like to\n", - "preserve the inlegrily oflhe original work, rather than alter Ihe\n", - "material to conform to modern American convenlions.\n", - "\n", - "Only obvious typogmphical errors have been corrected.\n", - "Where the author made use of \"phoneme\" spelling to convey\n", - "the pronunciation of words by various chamolers, these\n", - "spellings have been Iefi in Ihe original form. The original was\n", - "occasionally inconsistent in the style of punctuation, and\n", - "without substituting our preferences for those oflhe aulhor or\n", - "the origmal editors, we have rammed original punctuation\n", - "unless obviously a simple typographical error,\n", - "\n", - "Translated works Can present challenges in preparing a book\n", - "as text, ralher than a reproduclion or facsimile of an earlier\n", - "versmn. Spelling; particularly the names of people and\n", - "places, can vary from one work to anotherv and even within a\n", - "single work, The author's name, for Example, commonly\n", - "appears as either \"Dosloyavsky\" or \"Dostoevsky.\" and olher\n", - "variations appear occasionally. \"Dosmyevsky\" is the most\n", - "common variant, and we have used this spelling consistenlly\n", - "throughout, even Ihough some of the introductory\n", - "commenlaryv drawn fmm other source; originally used\n", - "\"Doslocvsky.\" We havc nm ancmptcd lo harmonizc those few\n", - "inconsistent placc-name spellings which are only in ‘denlal lo\n", - "the content. Further, we have adopted the \"stands ' or most\n", - "widely-used spelling oflhe names of cenain major characters\n", - "\n", - " \n", - "\n", - "anrluhled Mmenzl\n", - "\n", - "\n", - "Found image: https://d1b14unh5d6w7g.cloudfront.net/1534770720.01.S007.LXXXXXXX.jpg?Expires=1516142792&Signature=aHvypX4/mmWHgUYAuwLChjH+wcTUj1T4+xOd7wWDl2EZ27FmwDdcsEHGfF2WkHyJ2h7zg+sZUFdlItkMC1qa1xqkZI11sAm1wjJtZwj+kVdTmT5B75v8S3Z90WJNkhrklvE/YMlimTqFQIrEOdodEtKxiB67Y9f17xrZpjwfT68=&Key-Pair-Id=APKAIUO27P366FGALUMQ\n", - "anrluhled Material\n", - "\n", - "1hmughoult\n", - "\n", - "On another level, translated wurks always suffer 10 some\n", - "extent from meaning which is \"lost in translation,\" sometimes\n", - "resulting in difficulues for readers. Dostoyevsky's seemtngly\n", - "inconsistent dtalog, which varies in length and complexity of\n", - "sentence structure, vocabulary and style. when read in the\n", - "original Russian hy native spcakers oflhe language, is, rather\n", - "than \"incansiqent,\" a gum: Io recognizable character trailst\n", - "\n", - "The main text for this edition fmthfully follows the 1915\n", - "lmnslatinn. Th: \"Biographical Note\" is excerpted fram the\n", - "1917 P. F Collier & Son edition of Crime and Punishment.\n", - "The \"cm sms and Interpretations\" are from the sources\n", - "cited wilh each excerpt.\n", - "\n", - "The text for Ibis volume was edited by SM. Holden. wnh\n", - "book and cover design and publicalion preparalion servtces by\n", - "Summit Classic Press ofAkmn, Ohio.\n", - "\n", - "The cover image for Ihis edition is ”Porlrait of Fedor\n", - "Dostoyevsky\" painted in 1872 by Vasily Perov (183371882).\n", - "The original is an oil on canvas portrait measuring 39 inchcs\n", - "high by 31,7 inches wide which currently hangs in [he\n", - "Tretyakov Gallery in Moscow.\n", - "\n", - " \n", - "\n", - "v1\n", - "anrluhled Material\n", - "\n", - "\n", - "Found image: https://d1b14unh5d6w7g.cloudfront.net/1534770720.01.S005.LXXXXXXX.jpg?Expires=1516142770&Signature=VOPuiRcBMO/0IUpVbnsJtMf8RnKojxdqYqhmJ0TA/2YMDQeb8NeazpO6QcqBj6w1ojY7ATMmQSQ7sTgLVeX7vmiCQ6cf/Ew1rZzq+45FyoZ2efnRl2AuuNrnpmgu75csX8dcwrq/l5F7c+tzdw3Om5wBEj9br7JjETYOAsLZ+pY=&Key-Pair-Id=APKAIUO27P366FGALUMQ\n", - "Found image: https://d1b14unh5d6w7g.cloudfront.net/1534770720.01.S006.LXXXXXXX.jpg?Expires=1516142781&Signature=Gnj3fJz37cYkPlj4ZobugITgSoY/xYuRCiQDzcAvPdo+GTStF0k7Xsyxq2LZZhmLXoJJKDb9vo3MsrekyAM+NmRFeMhsXi63gOjMNRG1tP+oddjYIYtQmjasWOd1jxkqr/1J/zgCWGMV4kJR7+erMHe+yVAUPOwNTHlFtjHZkUI=&Key-Pair-Id=APKAIUO27P366FGALUMQ\n", - "Found image: https://d1b14unh5d6w7g.cloudfront.net/1534770720.01.S007.LXXXXXXX.jpg?Expires=1516142792&Signature=aHvypX4/mmWHgUYAuwLChjH+wcTUj1T4+xOd7wWDl2EZ27FmwDdcsEHGfF2WkHyJ2h7zg+sZUFdlItkMC1qa1xqkZI11sAm1wjJtZwj+kVdTmT5B75v8S3Z90WJNkhrklvE/YMlimTqFQIrEOdodEtKxiB67Y9f17xrZpjwfT68=&Key-Pair-Id=APKAIUO27P366FGALUMQ\n", - "Found image: https://d1b14unh5d6w7g.cloudfront.net/1534770720.01.S008.LXXXXXXX.jpg?Expires=1516142800&Signature=f90jYcaaO5s1fkcxsyi66c1yMeUxE6JRSL02fa+2Vz2GcIPqUgeNVADzc2/7f93wokwOWlRCNxH9r8Pwco7qBJvoKjZObEBOqi8ftOtOJHixu4dJTPQ0hWoHNrkaRMpch10q9Ztd/xftF7McioBe5/SQLBNQuc76TaDMkuXbCG8=&Key-Pair-Id=APKAIUO27P366FGALUMQ\n", - "anrluhled Maternal\n", - "\n", - "BIOGRAPHICAL NOTE\n", - "\n", - "FYODOR MIKHAILOVITCH DOSTOYEVSKY Was born\n", - "at Mascaw on October 30» I821, Ihe son of a milimy\n", - "surgeon. He was educated in his native city and an the School\n", - "of Military Engineering an 51. Pexersburg from which he\n", - "graduated in 1843 with Ihe grade of sub-lieutenanl. The\n", - "atlracuon of literature led him to give up the career that lay\n", - "open to him, and he entered instead upon a long struggle wnh\n", - "poverty.\n", - "\n", - "His first book» Paar Folks (1846). though obviously\n", - "influenced by Gogol, was recognized by Ihe critics as Ihe\n", - "work or an nfiginal genius, and he became a regular\n", - "contributor to a monthly magazine, \"Annals ohhe Country\".\n", - "He is said to have undertaken [en new novels at once. and was\n", - "cerlamly workmg at a terrific pace when a sudden hall was\n", - "called. He had joined Ihe circle of a polilical agitator.\n", - "Pelrachevskl, and had been taking pan in its ralher harmless\n", - "discussions on polnicnl ecnnnmy, when the susplclnns ohhe\n", - "police were amused and he, wi|h his bmther and shiny\n", - "cnmrades, was arrested in April 1349» and thrown into (he\n", - "fortress of SI. Peler and St. Paul in St. Pelersburg. where he\n", - "wrote h|s story, \"A Little Hero.\" On December 22d, he and\n", - "twcnty—onc others were conductcd lo the fool ofa scaffold in\n", - "the Simonovsky Squarc, and told to prepare for death. Bm\n", - "bcfore lhc sentencc was executcd, as they stood in Iheir shins\n", - "in ma bitter December weather, i! was announced that hheir\n", - "penahy was commuted Io exile in Siberia. 0n Chrisxmas Eve\n", - "he started on his Joumey, and the next four years were spent\n", - "among convicts in a prison a! Omsk. He has described his\n", - "\n", - "vih\n", - "Cnrrynuhleu Material\n", - "\n", - "\n", - "Found image: https://d1b14unh5d6w7g.cloudfront.net/1534770720.01.S005.LXXXXXXX.jpg?Expires=1516142770&Signature=VOPuiRcBMO/0IUpVbnsJtMf8RnKojxdqYqhmJ0TA/2YMDQeb8NeazpO6QcqBj6w1ojY7ATMmQSQ7sTgLVeX7vmiCQ6cf/Ew1rZzq+45FyoZ2efnRl2AuuNrnpmgu75csX8dcwrq/l5F7c+tzdw3Om5wBEj9br7JjETYOAsLZ+pY=&Key-Pair-Id=APKAIUO27P366FGALUMQ\n", - "Found image: https://d1b14unh5d6w7g.cloudfront.net/1534770720.01.S006.LXXXXXXX.jpg?Expires=1516142781&Signature=Gnj3fJz37cYkPlj4ZobugITgSoY/xYuRCiQDzcAvPdo+GTStF0k7Xsyxq2LZZhmLXoJJKDb9vo3MsrekyAM+NmRFeMhsXi63gOjMNRG1tP+oddjYIYtQmjasWOd1jxkqr/1J/zgCWGMV4kJR7+erMHe+yVAUPOwNTHlFtjHZkUI=&Key-Pair-Id=APKAIUO27P366FGALUMQ\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Found image: https://d1b14unh5d6w7g.cloudfront.net/1534770720.01.S007.LXXXXXXX.jpg?Expires=1516142792&Signature=aHvypX4/mmWHgUYAuwLChjH+wcTUj1T4+xOd7wWDl2EZ27FmwDdcsEHGfF2WkHyJ2h7zg+sZUFdlItkMC1qa1xqkZI11sAm1wjJtZwj+kVdTmT5B75v8S3Z90WJNkhrklvE/YMlimTqFQIrEOdodEtKxiB67Y9f17xrZpjwfT68=&Key-Pair-Id=APKAIUO27P366FGALUMQ\n", - "Found image: https://d1b14unh5d6w7g.cloudfront.net/1534770720.01.S008.LXXXXXXX.jpg?Expires=1516142800&Signature=f90jYcaaO5s1fkcxsyi66c1yMeUxE6JRSL02fa+2Vz2GcIPqUgeNVADzc2/7f93wokwOWlRCNxH9r8Pwco7qBJvoKjZObEBOqi8ftOtOJHixu4dJTPQ0hWoHNrkaRMpch10q9Ztd/xftF7McioBe5/SQLBNQuc76TaDMkuXbCG8=&Key-Pair-Id=APKAIUO27P366FGALUMQ\n", - "Found image: https://d1b14unh5d6w7g.cloudfront.net/1534770720.01.S009.LXXXXXXX.jpg?Expires=1516142810&Signature=cEx45kkP4hodAgCBj3N5P/FK62U48Lr+wsHHTcTFkDt0srEM++eNV1orrtmifYfjhULcuNJiSyeZPgaqO48TlQ9pVsg7tI6GY7yiDRHbWWLrA3KAkohy2TcWtE40swg32NGzzHDloLmHa6ssO4zTR0G4IZp1BzWqhMmNV5cwEmE=&Key-Pair-Id=APKAIUO27P366FGALUMQ\n", - "anrluhled MaienaI\n", - "\n", - "experiences there in his Memories (7/th House nfthe Dead\n", - "(1853) experiences whmh, though frightful 1n Ihe extreme.\n", - "seem I0 have slrenglhened rather than injured him in body and\n", - "mind. though they may have embittered his temper. His\n", - "imprisonmenl was followed by three yeals of compulsory\n", - "military service, during the lasl of which he became an under-\n", - "officer, and manied a widow, Madame Isaiev. He now\n", - "resumed his lilerary careere publishing The Injured and [he\n", - "[mulled in 1860. [n 1862 he visited western Europe, but\n", - "seems to have made little use of his opponunities to study the\n", - "civilization or national character of olher peoples,\n", - "\n", - "He was a confirmed gambler. and 1115 conduct at times\n", - "reduced his wife and himselflo an almosl desperale situation,\n", - "She died in 1863, and in Ihe following year he 1051 his brother\n", - "Michael, who had shared with him the management of a\n", - "periodical. Lefi alnne. he was unable to conduct the business\n", - "affairs connected wilh it, and only the success of Crime and\n", - "Punishment in 1866 rescued him from mine He had now\n", - "reached the height of his powers, and the novels wrilten afier\n", - "this period are generally regarded as showing an increasing\n", - "lack of the proportion and restraint which had never been his\n", - "m any great degree. The mosl important ofihe later works am\n", - "The Idiot (186% The Pammd [1873), The Adult (1875){\n", - "and The Bm/herx Kummuzov (188]). He married as his\n", - "second wife, his slenographer. Anna Grigorevna Svilkine. a\n", - "girl who, though no: h1gh1y educated, was capable and\n", - "devoted: and through her energy his last yeais were passed in\n", - "comfen and comparative prosperiiy, Hc issued periodieany\n", - "\"An Author's Nale-Book\" m which he canlfibuled an amount\n", - "of aulobiographical matter, and through this and mher\n", - "wrhihgs in magazines he exercised a good deal or influence.\n", - "He came finally I0 have a very high position in the popular\n", - "regard. and his death in Fehmary, 1331, brought forth an\n", - "\n", - "V111\n", - "anrluhled MaienaI\n", - "\n", - "\n", - "Found image: https://d1b14unh5d6w7g.cloudfront.net/1534770720.01.S006.LXXXXXXX.jpg?Expires=1516142781&Signature=Gnj3fJz37cYkPlj4ZobugITgSoY/xYuRCiQDzcAvPdo+GTStF0k7Xsyxq2LZZhmLXoJJKDb9vo3MsrekyAM+NmRFeMhsXi63gOjMNRG1tP+oddjYIYtQmjasWOd1jxkqr/1J/zgCWGMV4kJR7+erMHe+yVAUPOwNTHlFtjHZkUI=&Key-Pair-Id=APKAIUO27P366FGALUMQ\n", - "Found image: https://d1b14unh5d6w7g.cloudfront.net/1534770720.01.S009.LXXXXXXX.jpg?Expires=1516142810&Signature=cEx45kkP4hodAgCBj3N5P/FK62U48Lr+wsHHTcTFkDt0srEM++eNV1orrtmifYfjhULcuNJiSyeZPgaqO48TlQ9pVsg7tI6GY7yiDRHbWWLrA3KAkohy2TcWtE40swg32NGzzHDloLmHa6ssO4zTR0G4IZp1BzWqhMmNV5cwEmE=&Key-Pair-Id=APKAIUO27P366FGALUMQ\n", - "Found image: https://d1b14unh5d6w7g.cloudfront.net/1534770720.01.S00C.LXXXXXXX.jpg?Expires=1516142821&Signature=B5ALvVQPnv0DhirF9MxDckuqWDRRWAj/rNojC43UcM7TYFlOustmkwYUZghs4WyGy+OQpkukCRosTo8J9gYG+gHD051eg5L/T10jtW+W3mf+eN53vLEm0dqasf5HWHdjnh/H9dtyLko1D85OLQ6XMtsFUvoabR5E85IBkN3yKGQ=&Key-Pair-Id=APKAIUO27P366FGALUMQ\n", - "anrluhled Mmenzl\n", - "\n", - "CRITICISMS AND INTERPRETATIONS\n", - "\n", - "I. The London Times\n", - "\n", - "THE novels of Dostoyevsky may seem to discover a very\n", - "strange world Io us, in which pump]: talk and act like no one\n", - "that we have ever met. Yet we do run read them because we\n", - "want to hear about these slrange Russian people, so unlike\n", - "ourselves. Rather we read them because xhsy remind us of\n", - "what we had forgouen about ourselves, as 3 seem may\n", - "suddenly remind us of some place or scene not remembered\n", - "since childhood And as WC have no doubt about the truth of\n", - "the memories rccallod by a seem, so we have none aboul\n", - "Dostayevsky's truth\n", - "\n", - "It is slranges like Ihose memorics of childhood, but only\n", - "because ix has been so long sleeping in our minds, He has no\n", - "need Io prove it. and he never tries to do so; he only presenls\n", - "n for our recognition: and we recognize it at once. however\n", - "contrary it may be 10 all that we are accustomed to believe\n", - "about ourselves.\n", - "\n", - "The strangeness of Dostoyevsky's novels lies m his method.\n", - "which is unlike Ihal of other novelists because his inlerest is\n", - "dmmm from meirs. The novel of pure plot is all cancamad\n", - "with success in failure. The hero has some definite Iask Io\n", - "perform, and w: read to dismver whether he succeeds in\n", - "performing it. Bul even in novels where chamcxer is more\n", - "cons|dered it is still Ihe interest of failure and success which\n", - "usually makes thc plot, The hams for instances falls in love\n", - "and the plol forms round this love interest; or he is marriads\n", - "\n", - "xi\n", - "anrluhled Mmenzl\n", - "\n", - "\n", - "Found image: https://d1b14unh5d6w7g.cloudfront.net/1534770720.01.S009.LXXXXXXX.jpg?Expires=1516142810&Signature=cEx45kkP4hodAgCBj3N5P/FK62U48Lr+wsHHTcTFkDt0srEM++eNV1orrtmifYfjhULcuNJiSyeZPgaqO48TlQ9pVsg7tI6GY7yiDRHbWWLrA3KAkohy2TcWtE40swg32NGzzHDloLmHa6ssO4zTR0G4IZp1BzWqhMmNV5cwEmE=&Key-Pair-Id=APKAIUO27P366FGALUMQ\n", - "Found image: https://d1b14unh5d6w7g.cloudfront.net/1534770720.01.S00C.LXXXXXXX.jpg?Expires=1516142821&Signature=B5ALvVQPnv0DhirF9MxDckuqWDRRWAj/rNojC43UcM7TYFlOustmkwYUZghs4WyGy+OQpkukCRosTo8J9gYG+gHD051eg5L/T10jtW+W3mf+eN53vLEm0dqasf5HWHdjnh/H9dtyLko1D85OLQ6XMtsFUvoabR5E85IBkN3yKGQ=&Key-Pair-Id=APKAIUO27P366FGALUMQ\n", - "Found image: https://d1b14unh5d6w7g.cloudfront.net/1534770720.01.S00D.LXXXXXXX.jpg?Expires=1516142830&Signature=CfS/KL88yTK/pRbt2xAZSWEiLx7uhyEkTv8rLqL7eaHWvnGdu6Jyph1hc3DtikT5Mc/IgK96Nq/2zvf61LKMQiKFnSRlDh6rqlSdbq2p6XKlnjH4kB5qFMXxH3RLFijYhAaqh7MZaJROhMgiFB6KUxWHgoM9MyG5bjP+qEZ868U=&Key-Pair-Id=APKAIUO27P366FGALUMQ\n" + "Found image: https://d1b14unh5d6w7g.cloudfront.net/1427027277.01.S003.LXXXXXXX.jpg?Expires=1517813908&Signature=Esov1bmGrixpRerzigTNris1X5NxXhYh0M0h2Vkzho4KQmOMUetNtvC4Q2NcPHEJarhgoTEGgQk33rK/NlL6g7bGd7kEuqDtTVeDnfVFv6N45Fh5zjinOfWRfbaWlbKi0y51WDRPROG/ITUSztyovyxhtTtiAiviUocae/fO4Ic=&Key-Pair-Id=APKAIUO27P366FGALUMQ\n", + "rammed Mam 3‘\n", + "\n", + "Copyright © 2007\n", + "\n", + "The text in this book has been formatted\n", + "and typeset to make reading easier and\n", + "more enjoyable. Spelling and punctuation\n", + "have been modernized and standardized,\n", + "and hyphens have been avoided when\n", + "possible. Obvious typographical errors\n", + "have been corrected. In addition, the text\n", + "has been formatted to the specifications\n", + "indicated on the titIe page. The original\n", + "text is out of copyright. The edited text in\n", + "this edition and the formatting are the\n", + "copyright of Objective Systems Pty Ltd\n", + "ACN 085119 953.\n", + "» 1m\n", + "\n", + "LaDY'M‘Hed mew\n", + "Found image: https://d1b14unh5d6w7g.cloudfront.net/1427027277.01.S006.LXXXXXXX.jpg?Expires=1517813908&Signature=hHkVlIbhqEXCF0eEwjT+XFQHLowD/B0emBi4Xe7ThHptbtNnPqZqeM1KztJlHBD7Xf1V16GWe4APyf9yYWHSS6QQ3isvEakHB5Me/NBS8fcXj718gDbFEl4v9VgoLpxjsRy8g3c/Xay87LlMhYlgqK634w4cG5hrd9Gcbi1lDuE=&Key-Pair-Id=APKAIUO27P366FGALUMQ\n", + "CuDYnlNed Manna:\n", + "\n", + "TABLE OF CONTENTS\n", + "\n", + "Chapter} 1\n", + "Chapter 11 17\n", + "Chapter 111 31\n", + "Chapter IV 43\n", + "Chapter v 55\n", + "Chapter VI 53\n", + "Chapter V11 59\n", + "Chapter vm 77\n", + "chapter IX 91\n", + "Chapter X 97\n", + "Chapter X] 101\n", + "Chapter xu 107\n", + "\n", + "Canyrmhted mum\n", + "Found image: https://d1b14unh5d6w7g.cloudfront.net/1427027277.01.S003.LXXXXXXX.jpg?Expires=1517813908&Signature=Esov1bmGrixpRerzigTNris1X5NxXhYh0M0h2Vkzho4KQmOMUetNtvC4Q2NcPHEJarhgoTEGgQk33rK/NlL6g7bGd7kEuqDtTVeDnfVFv6N45Fh5zjinOfWRfbaWlbKi0y51WDRPROG/ITUSztyovyxhtTtiAiviUocae/fO4Ic=&Key-Pair-Id=APKAIUO27P366FGALUMQ\n", + "Found image: https://d1b14unh5d6w7g.cloudfront.net/1427027277.01.S006.LXXXXXXX.jpg?Expires=1517813908&Signature=hHkVlIbhqEXCF0eEwjT+XFQHLowD/B0emBi4Xe7ThHptbtNnPqZqeM1KztJlHBD7Xf1V16GWe4APyf9yYWHSS6QQ3isvEakHB5Me/NBS8fcXj718gDbFEl4v9VgoLpxjsRy8g3c/Xay87LlMhYlgqK634w4cG5hrd9Gcbi1lDuE=&Key-Pair-Id=APKAIUO27P366FGALUMQ\n", + "Found image: https://d1b14unh5d6w7g.cloudfront.net/1427027277.01.S007.LXXXXXXX.jpg?Expires=1517813916&Signature=cC2WHvp6Zb3YMWwf0XmPG2xhhna9IDpIWTZog3643bMtqb5krx+PPwGBIS5Z2+VD/0BoxQYW7TuUrQ2QA1ouuzFHBrMMl13iFKOPdeOcNuTFvqsNx2zZGrUXLvmrafaiEHiF097ruUQpJT2dvhQk3kAPuYWkPxhNKLRyuFjJ8H8=&Key-Pair-Id=APKAIUO27P366FGALUMQ\n", + "Conyflihud Mmml\n", + "\n", + "Copyflghud anhl\n", + "Found image: https://d1b14unh5d6w7g.cloudfront.net/1427027277.01.S008.LXXXXXXX.jpg?Expires=1517813908&Signature=HuGS9+TRIYXlx5jvFLtR/LGK1ThQSTiurvNJjd2sfHMPRdkhCb22LJM+baLu5nYZtDQguGgY9kdgAROBKYs+tqas89iVjs1bVNG6m4kMctJHokK5yfTVe6szwhf11+yY7JnhFn8qcOMmL7IbyBvV3s/gQIRxWb+j4lILGIoBj/M=&Key-Pair-Id=APKAIUO27P366FGALUMQ\n", + "canyngmed Malena»\n", + "\n", + "Chapter I\n", + "\n", + "During an Interval In the Melvmskl trial In the large\n", + "building of the Law Courts the members and public\n", + "prosecutor met in [van Egorowch Shebek‘s private\n", + "room, where the conversation turned on the celebrated\n", + "Krasovski case. Fedor Vasillevich warmly maintained\n", + "that it was not subject to their jurisdiction, Ivan\n", + "Egorovich maintained the contrary, while Peter\n", + "ivanowch, not havmg entered into the discussmn at\n", + "the start, took no part in it but looked through the\n", + "Gazette which had Just been handed in.\n", + "\n", + "“Gentlemen,” he said, “Ivan Ilych has died!\"\n", + "“You don't say 50!”\n", + "\n", + "“Here, read it yourself,\" repiied Peter Ivanovich,\n", + "handing Fedor VaSIllevich the paper still damp from\n", + "the press, Surrounded by a black border were the\n", + "words: “Praskovya Fedorovna Golovina, with profound\n", + "sorrow, informs relatives and friends of the demise\n", + "of her beloved husband Ivan Ilych Goiovin, Member\n", + "of the Court of Justice, which occurred on February\n", + "the 4th of this year 1882. The funeral will take place\n", + "on Friday at one o'clock in the afternoon.“\n", + "\n", + "Ivan Iiych had been a colleague of the gentlemen\n", + "present and was liked by them ali. He had been ill for\n", + "\n", + "annnhted Malenai\n", + "Found image: https://d1b14unh5d6w7g.cloudfront.net/1427027277.01.S006.LXXXXXXX.jpg?Expires=1517813908&Signature=hHkVlIbhqEXCF0eEwjT+XFQHLowD/B0emBi4Xe7ThHptbtNnPqZqeM1KztJlHBD7Xf1V16GWe4APyf9yYWHSS6QQ3isvEakHB5Me/NBS8fcXj718gDbFEl4v9VgoLpxjsRy8g3c/Xay87LlMhYlgqK634w4cG5hrd9Gcbi1lDuE=&Key-Pair-Id=APKAIUO27P366FGALUMQ\n", + "Found image: https://d1b14unh5d6w7g.cloudfront.net/1427027277.01.S007.LXXXXXXX.jpg?Expires=1517813916&Signature=cC2WHvp6Zb3YMWwf0XmPG2xhhna9IDpIWTZog3643bMtqb5krx+PPwGBIS5Z2+VD/0BoxQYW7TuUrQ2QA1ouuzFHBrMMl13iFKOPdeOcNuTFvqsNx2zZGrUXLvmrafaiEHiF097ruUQpJT2dvhQk3kAPuYWkPxhNKLRyuFjJ8H8=&Key-Pair-Id=APKAIUO27P366FGALUMQ\n", + "Found image: https://d1b14unh5d6w7g.cloudfront.net/1427027277.01.S008.LXXXXXXX.jpg?Expires=1517813908&Signature=HuGS9+TRIYXlx5jvFLtR/LGK1ThQSTiurvNJjd2sfHMPRdkhCb22LJM+baLu5nYZtDQguGgY9kdgAROBKYs+tqas89iVjs1bVNG6m4kMctJHokK5yfTVe6szwhf11+yY7JnhFn8qcOMmL7IbyBvV3s/gQIRxWb+j4lILGIoBj/M=&Key-Pair-Id=APKAIUO27P366FGALUMQ\n", + "Found image: https://d1b14unh5d6w7g.cloudfront.net/1427027277.01.S009.LXXXXXXX.jpg?Expires=1517813916&Signature=Z9uc1Ch9ZhdwrfxfYHfEuPMRBNuTpNZeCC5M6PX5zf9IN75gBvITca59UVgXzCx0vgszKfu5Td7jp4lWobt6b66UBpmbOP/VPHfTtjlkxAHCF8RXA3ilXK+t8Ss8J8GD7fTD/KjdIin+APbwocIH19VlczSLvpL2ynq1Wd7mW/U=&Key-Pair-Id=APKAIUO27P366FGALUMQ\n", + "canyngmed Material\n", + "\n", + "some weeks with an illness said to be incurable.\n", + "His past had been kept open for him, but there\n", + "had been conjectures that in case of his death\n", + "Alexeev might receive his appointment, and that\n", + "either Vinnikov or Shtabel would succeed Alexeev.\n", + "So on receiving the news of Ivan llych's death the\n", + "first thought of each of the gentlemen in that prie\n", + "vate room was of the changes and promotions it\n", + "might occasion among themselves or theiracquaine\n", + "tances.\n", + "\n", + "“I shall be sure to get Shtabel's place or Vin‘\n", + "nikov's,\" thought FedorVasilievich. “I was promised\n", + "that long ago, and the promotion means an extra\n", + "eight hundred rubles a year for me besides the\n", + "allowance.”\n", + "\n", + "“Now I must apply for my brother-in-Iaw’s transfer\n", + "from Kaluga,\" thought Peter Ivanovich. “My Wife\n", + "will be very glad, and then she won't be able to\n", + "say that I never do anything for her relatiuns.”\n", + "“I thought he would never leave his bed again,\"\n", + "said Peter Ivanovich aloud. “It‘s very sad.”\n", + "\n", + "“But what really was the matter with him?\"\n", + "\n", + "“The doctors couldn't say - at least they could,\n", + "but each of them said something different. When\n", + "last I saw him I though he was getting better.\"\n", + "\n", + "CnDYnnhled Material\n", + "Found image: https://d1b14unh5d6w7g.cloudfront.net/1427027277.01.S007.LXXXXXXX.jpg?Expires=1517813916&Signature=cC2WHvp6Zb3YMWwf0XmPG2xhhna9IDpIWTZog3643bMtqb5krx+PPwGBIS5Z2+VD/0BoxQYW7TuUrQ2QA1ouuzFHBrMMl13iFKOPdeOcNuTFvqsNx2zZGrUXLvmrafaiEHiF097ruUQpJT2dvhQk3kAPuYWkPxhNKLRyuFjJ8H8=&Key-Pair-Id=APKAIUO27P366FGALUMQ\n", + "Found image: https://d1b14unh5d6w7g.cloudfront.net/1427027277.01.S008.LXXXXXXX.jpg?Expires=1517813908&Signature=HuGS9+TRIYXlx5jvFLtR/LGK1ThQSTiurvNJjd2sfHMPRdkhCb22LJM+baLu5nYZtDQguGgY9kdgAROBKYs+tqas89iVjs1bVNG6m4kMctJHokK5yfTVe6szwhf11+yY7JnhFn8qcOMmL7IbyBvV3s/gQIRxWb+j4lILGIoBj/M=&Key-Pair-Id=APKAIUO27P366FGALUMQ\n", + "Found image: https://d1b14unh5d6w7g.cloudfront.net/1427027277.01.S009.LXXXXXXX.jpg?Expires=1517813916&Signature=Z9uc1Ch9ZhdwrfxfYHfEuPMRBNuTpNZeCC5M6PX5zf9IN75gBvITca59UVgXzCx0vgszKfu5Td7jp4lWobt6b66UBpmbOP/VPHfTtjlkxAHCF8RXA3ilXK+t8Ss8J8GD7fTD/KjdIin+APbwocIH19VlczSLvpL2ynq1Wd7mW/U=&Key-Pair-Id=APKAIUO27P366FGALUMQ\n", + "Found image: https://d1b14unh5d6w7g.cloudfront.net/1427027277.01.S00A.LXXXXXXX.jpg?Expires=1517813916&Signature=X0hJbtaKDIHCfhjTcLIt80MY0p6DxRyq+vPbVRcvxuvu8pRrOZdysPayP0gZQlKmh1R+vPCs46euKSsN8dRmfBUSWZbox303sPZQH48shcFHPAgxhoG9Z+C47sCPx++fjA+dkBkBwKoYKAo2QnBEIzkyRZusli0wT7Iz3sedt0E=&Key-Pair-Id=APKAIUO27P366FGALUMQ\n", + "canymmeu Malena»\n", + "\n", + "3\n", + "\n", + "“And I haven't been to see him since the holidays.\n", + "I always meant to go.\"\n", + "\n", + "“Had he any property?”\n", + "\n", + "“I think his wife had a little — but something quiet\n", + "trifling.\"\n", + "\n", + "“We shall have to go to see her, but they live so\n", + "terribly far away.\"\n", + "\n", + "“Far away from you, you mean. Everything's far\n", + "away from your place.\"\n", + "\n", + "“You see, he never can forgive my living on the\n", + "other side of the river,\" said Peter Ivanovich,\n", + "smiling at Shebek. Then, still talking of the dis\n", + "tances between different parts of the city, they\n", + "returned to the Court.\n", + "\n", + "Besides considerations as to the possible transfers\n", + "and promotions likely to result from Ivan Ilych’s\n", + "death, the mere fact of the death of a near acquain-\n", + "tance aroused, as usual, in all who heard of it the\n", + "complacent feefing that, “it is he who is dead and\n", + "not 1.\"\n", + "\n", + "Each one thought or felt, “Well, he's dead but I’m\n", + "alive!” But the more intimate of Ivan Ilych's ac-\n", + "quaintances, his so-called friends, could not help\n", + "\n", + "annnmea Mum\n" ] }, { @@ -475,10 +362,7 @@ "traceback": [ "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", "\u001b[0;31mKeyboardInterrupt\u001b[0m Traceback (most recent call last)", - "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[1;32m 40\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mimage\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mimageList\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 41\u001b[0m \u001b[0mimageList\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mappend\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mimage\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 42\u001b[0;31m \u001b[0mgetImageText\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mimage\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 43\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 44\u001b[0m \u001b[0mdriver\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mquit\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m\u001b[0m in \u001b[0;36mgetImageText\u001b[0;34m(imageUrl)\u001b[0m\n\u001b[1;32m 8\u001b[0m \u001b[0murlretrieve\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mimage\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m'page.jpg'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 9\u001b[0m \u001b[0mp\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0msubprocess\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mPopen\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m'tesseract'\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m'page.jpg'\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m'page'\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mstdout\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0msubprocess\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mPIPE\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0mstderr\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0msubprocess\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mPIPE\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 10\u001b[0;31m \u001b[0mp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mwait\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 11\u001b[0m \u001b[0mf\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mopen\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'page.txt'\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m'r'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 12\u001b[0m \u001b[0mprint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mf\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mread\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/subprocess.py\u001b[0m in \u001b[0;36mwait\u001b[0;34m(self, timeout, endtime)\u001b[0m\n\u001b[1;32m 1437\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mreturncode\u001b[0m \u001b[0;32mis\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0;32mNone\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1438\u001b[0m \u001b[0;32mbreak\u001b[0m \u001b[0;31m# Another thread waited.\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 1439\u001b[0;31m \u001b[0;34m(\u001b[0m\u001b[0mpid\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0msts\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_try_wait\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;36m0\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 1440\u001b[0m \u001b[0;31m# Check the pid and loop as waitpid has been known to\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1441\u001b[0m \u001b[0;31m# return 0 even without WNOHANG in odd situations.\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/subprocess.py\u001b[0m in \u001b[0;36m_try_wait\u001b[0;34m(self, wait_flags)\u001b[0m\n\u001b[1;32m 1384\u001b[0m \u001b[0;34m\"\"\"All callers to this function MUST hold self._waitpid_lock.\"\"\"\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1385\u001b[0m \u001b[0;32mtry\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 1386\u001b[0;31m \u001b[0;34m(\u001b[0m\u001b[0mpid\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0msts\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mos\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mwaitpid\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mpid\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mwait_flags\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 1387\u001b[0m \u001b[0;32mexcept\u001b[0m \u001b[0mChildProcessError\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1388\u001b[0m \u001b[0;31m# This happens if SIGCLD is set to be ignored or waiting\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[1;32m 23\u001b[0m \u001b[0;31m# While the right arrow is available for clicking, turn through pages\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 24\u001b[0m \u001b[0mdriver\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mfind_element_by_id\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'sitbReaderRightPageTurner'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mclick\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 25\u001b[0;31m \u001b[0mtime\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msleep\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;36m2\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 26\u001b[0m \u001b[0;31m# Get any new pages that have loaded (multiple pages can load at once,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 27\u001b[0m \u001b[0;31m# but duplicates will not be added to a set)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;31mKeyboardInterrupt\u001b[0m: " ] } @@ -487,24 +371,15 @@ "import time\n", "from urllib.request import urlretrieve\n", "from PIL import Image\n", - "import tesseract\n", + "import pytesseract\n", "from selenium import webdriver\n", - "\n", - "\n", - "def getImageText(imageUrl):\n", - " urlretrieve(image, 'page.jpg')\n", - " p = subprocess.Popen(['tesseract', 'page.jpg', 'page'],\n", - " stdout=subprocess.PIPE, stderr=subprocess.PIPE)\n", - " p.wait()\n", - " f = open('page.txt', 'r')\n", - " print(f.read())\n", - "\n", + "from PIL import Image\n", "\n", "# Create new Selenium driver\n", "driver = webdriver.Chrome(executable_path='drivers/chromedriver/chromedriver')\n", "\n", "driver.get(\n", - " 'https://www.amazon.com/War-Peace-Leo-Nikolayevich-Tolstoy/dp/1427049629')\n", + " 'https://www.amazon.com/Death-Ivan-Ilyich-Nikolayevich-Tolstoy/dp/1427027277')\n", "time.sleep(2)\n", "\n", "# Click on the book preview button\n", @@ -528,8 +403,9 @@ " image = page.get_attribute('src')\n", " print('Found image: {}'.format(image))\n", " if image not in imageList:\n", + " urlretrieve(image, 'page.jpg')\n", " imageList.append(image)\n", - " getImageText(image)\n", + " print(pytesseract.image_to_string(Image.open('page.jpg')))\n", "\n", "driver.quit()" ] From d29de8f8148ed02338f524aae7a40fdc394c3e9c Mon Sep 17 00:00:00 2001 From: MaloneGod <809829352@qq.com> Date: Wed, 28 Feb 2018 17:21:39 +0800 Subject: [PATCH 28/47] getNextExternalLink does not exist --- chapter3/3-crawlSite.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/chapter3/3-crawlSite.py b/chapter3/3-crawlSite.py index ea5e128..62507d7 100644 --- a/chapter3/3-crawlSite.py +++ b/chapter3/3-crawlSite.py @@ -38,7 +38,7 @@ def getRandomExternalLink(startingPage): externalLinks = getExternalLinks(bsObj, splitAddress(startingPage)[0]) if len(externalLinks) == 0: internalLinks = getInternalLinks(startingPage) - return getNextExternalLink(internalLinks[random.randint(0, + return getRandomExternalLink(internalLinks[random.randint(0, len(internalLinks)-1)]) else: return externalLinks[random.randint(0, len(externalLinks)-1)] @@ -48,4 +48,4 @@ def followExternalOnly(startingSite): print("Random external link is: "+externalLink) followExternalOnly(externalLink) -followExternalOnly("http://oreilly.com") \ No newline at end of file +followExternalOnly("http://oreilly.com") From 71ad2c99e78142db01520d885db299fa589324eb Mon Sep 17 00:00:00 2001 From: remitchell Date: Mon, 5 Mar 2018 00:53:13 -0500 Subject: [PATCH 29/47] Added chapter 14 and 16 code, formatting changes --- v2/Chapter04_CrawlingModels.ipynb | 28 +- .../wikiSpider/wikiSpider/articles.csv | 16615 ++++++++++++++++ .../wikiSpider/wikiSpider/articles.json | 33 + .../wikiSpider/wikiSpider/articles.xml | 7608 +++++++ v2/Chapter12-API-Scraping.ipynb | 560 +- v2/Chapter13-ImageProcessing.ipynb | 6 +- v2/Chapter14-ScrapingTraps.ipynb | 174 + v2/Chapter15_Testing.ipynb | 47 +- v2/chapter16/threading_crawler.py | 28 + v2/chapter16/threading_example.py | 14 + 10 files changed, 25070 insertions(+), 43 deletions(-) create mode 100644 v2/Chapter05_Scrapy/wikiSpider/wikiSpider/articles.csv create mode 100644 v2/Chapter05_Scrapy/wikiSpider/wikiSpider/articles.json create mode 100644 v2/Chapter05_Scrapy/wikiSpider/wikiSpider/articles.xml create mode 100644 v2/Chapter14-ScrapingTraps.ipynb create mode 100644 v2/chapter16/threading_crawler.py create mode 100644 v2/chapter16/threading_example.py diff --git a/v2/Chapter04_CrawlingModels.ipynb b/v2/Chapter04_CrawlingModels.ipynb index 0b3efd5..1f0692f 100644 --- a/v2/Chapter04_CrawlingModels.ipynb +++ b/v2/Chapter04_CrawlingModels.ipynb @@ -1022,7 +1022,7 @@ " return\n", " title = self.safeGet(bs, site.titleTag)\n", " body = self.safeGet(bs, site.bodyTag)\n", - " if title != \"\" and body != \"\":\n", + " if title != '' and body != '':\n", " content = Content(topic, title, body, url)\n", " content.print()\n", "\n", @@ -1042,7 +1042,7 @@ " sites.append(Website(row[0], row[1], row[2],\n", " row[3], row[4], row[5], row[6], row[7]))\n", "\n", - "topics = [\"python\", \"data science\"]\n", + "topics = ['python', 'data science']\n", "for topic in topics:\n", " print(\"GETTING INFO ABOUT: \" + topic)\n", " for targetSite in sites:\n", @@ -1246,24 +1246,24 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "class Website:\n", " \"\"\"Common base class for all articles/pages\"\"\"\n", "\n", - " def __init__(self, type, name, url, searchUrl, resultListing, resultUrl, absoluteUrl, titleTag, bodyTag):\n", + " def __init__(self, name, url, titleTag, bodyTag):\n", " self.name = name\n", " self.url = url\n", " self.titleTag = titleTag\n", " self.bodyTag = bodyTag\n", - " self.pageType = pageType" + " " ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 2, "metadata": {}, "outputs": [], "source": [ @@ -1284,6 +1284,22 @@ " self.bodyTag = bodyTag\n", " self.dateTag = dateTag" ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "\n", + "\n", + "def parsePage(url):\n", + " \n", + " if '/ideas/' in url:\n", + " \n", + "\n", + "oreilly = Website('O\\'Reilly', 'https://oreilly.com', 'h1' '') " + ] } ], "metadata": { diff --git a/v2/Chapter05_Scrapy/wikiSpider/wikiSpider/articles.csv b/v2/Chapter05_Scrapy/wikiSpider/wikiSpider/articles.csv new file mode 100644 index 0000000..2a91e82 --- /dev/null +++ b/v2/Chapter05_Scrapy/wikiSpider/wikiSpider/articles.csv @@ -0,0 +1,16615 @@ +lastUpdated,text,title +" 13 December 2017, at 09:26.","For the political term, see ,Benevolent dictatorship,., +,Benevolent Dictator For Life, (,BDFL,) is a title given to a small number of ,open-source software development, leaders, typically project founders who retain the final say in disputes or arguments within the community. The phrase originated in 1995 with reference to ,Guido van Rossum,, creator of the ,Python programming language,.,[1],[2], Shortly after van Rossum joined the ,Corporation for National Research Initiatives,, the term appeared in a follow-up mail by ,Ken Manheimer, to a meeting trying to create a semi-formal group that would oversee Python development and workshops; this initial use included the additional joke of naming van Rossum the "",First Interim, BDFL"".,[1], +,BDFL should not be confused with the more common term for open-source leaders, "",benevolent dictator,"", which was popularized by ,Eric S. Raymond,'s essay "",Homesteading the Noosphere,"" (1999).,[3], Among other topics related to ,hacker culture,, Raymond elaborates on how the nature of open source forces the ""dictatorship"" to keep itself ,benevolent,, since a strong disagreement can lead to the ,forking, of the project under the rule of new leaders., +,Persons sometimes referred to as ""Benevolent dictators for life"",[,edit,], +, +, +,Name, +,Project, +,Type, +,Reference, +, +, +,Vitalik Buterin, +,Ethereum, +,blockchain-based cryptocurrency, +,[4], +, +, +,Dries Buytaert, +,Drupal, +,content management framework, +,[5], +, +, +,Shaun Walker, +,DotNetNuke, +,web application framework, +,[6], +, +, +,David Heinemeier Hansson, +,Ruby on Rails, +,web framework, +,[7], +, +, +,Adrian Holovaty, and Jacob Kaplan-Moss, +,Django, +,web framework, +,[8], +, +, +,Taylor Otwell, +,Laravel, +,web framework, +,[9],[10], +, +, +,Theo de Raadt, +,OpenBSD, +,Unix,-like operating system, +,[11], +, +, +,Daniel Robbins, +,Funtoo Linux, +,Linux distribution, +,[12], +, +, +,Sébastien Ros, +,Orchard Project, +,content management system, +,[13], +, +, +,Guido van Rossum, +,Python, +,programming language, +,[7],[14], +, +, +,Linus Torvalds, +,Linux, +,operating system kernel, +,[7],[15], +, +, +,Patrick Volkerding, +,Slackware, +,Linux distribution, +,[16], +, +, +,Mark Shuttleworth, +,Ubuntu Linux, +,Linux distribution, +,[17], +, +, +,Larry Wall, +,Perl, +,programming language, +,[18], +, +, +,Matt Mullenweg, +,WordPress, +,content management framework, +,[19], +, +, +,Nathan Voxland, +,Liquibase, +,database schema management, +,[20], +, +, +,Xavier Leroy, +,OCaml, +,programming language, +,[21],[22], +, +, +,Ton Roosendaal, +,Blender, +,3D computer graphics software, +,[23], +, +, +,Bram Moolenaar, +,Vim, +,text editor, +,[24], +, +, +,Don Syme, +,F#, +,programming language, +,[25], +, +, +,Rich Hickey, +,Clojure, +,programming language, +,[26], +, +, +,Wes McKinney, +,Pandas, +,Python data analysis library, +,[27], +, +, +,Martin Odersky, +,Scala, +,programming language, +,[28], +, +, +,Yukihiro Matsumoto (Matz), +,Ruby, +,programming language, +,[29], +, +, +,Evan Czaplicki, +,Elm, +,front-end web framework, +,[30],[31], +, +, +,Juan Benet, +,InterPlanetary File System, +,decentralized internet, +,[32], +, +, +,Sylvain Benner, +,Spacemacs, +,community-driven ,Emacs, distribution, +,[33], +, +, +,Pauli Virtanen, +,SciPy, +,Python, library used for scientific and technical computing, +,[34],[35], +, +, +,José Valim, +,elixir, +,programming language, +,[36], +, +, +,References,[,edit,], +, +, +,^ ,a, ,b, ,Guido van Rossum (July 31, 2008). ,""Origin of BDFL"",. Retrieved ,August 1,, 2008,., , +,^, ,""Python Creator Scripts Inside Google"",. www.eweek.com,. Retrieved ,May 13,, 2008,., , +,^, ,Eric S. Raymond. ,""Homesteading the Noosphere"",. Retrieved ,August 1,, 2008,., , +,^, ,"",Ethereum's Boy King Is Thinking About Giving Up the Mantle,"", +,^, ,Randy Fay, "",How Do Open Source Communities Govern Themselves?,"", +,^, ,Book: Building Websites with DotNetNuke 5, Michael Washington and Ian Lackey, Packt Publishing. Page 14 ""The core team comprises individuals invited to join the team by Shaun Walker, whom they affectionately call the ""Benevolent Dictator""."", +,^ ,a, ,b, ,c, ,Constine, Josh (December 7, 2012). ,""Dropbox Hires Away Google's Guido Van Rossum, The Father Of Python"",. TechCrunch,. Retrieved ,June 1,, 2015,., , +,^, ,""Adrian and Jacob retiring as Django BDFLs"",. Adrian Holovaty. January 12, 2014,. Retrieved ,June 14,, 2015,., , +,^, ,""Taylor Otwell, Twitter"",. Taylor Otwell. October 9, 2014,. Retrieved ,October 9,, 2014,., , +,^, ,""Taylor Otwell, Creator of the Laravel PHP Framework"",. August 5, 2014,. Retrieved ,August 5,, 2014,., , +,^, ,Hildebrand, Matthew (July 5, 2005). ,""Interview: Theo de Raadt on Industry and Free Software"",. ,The Epoch Times,. The Epoch Times. Archived from ,the original, on June 21, 2015,. Retrieved ,June 20,, 2015,., , +,^, ,""Welcome to Funtoo Linux"",., , +,^, ,""Orchard Project Steering Committee"",. Archived from ,the original, on August 12, 2015., , +,^, ,""The Four Hundred—Next Up on the System i: Python"",. www.itjungle.com,. Retrieved ,May 13,, 2008,., , +,^, ,Dee-Ann LeBlanc (31 July 2006). ,Linux For Dummies, (7th ed.). John Wiley & Sons. p. 15. ,ISBN, ,978-0-470-04793-4,., , +,^, ,""Stories of Linux: A Look at Slackware Linux"",. ,linux.com,., , +,^, ,""Ubuntu carves niche in Linux landscape"",. ,CNET,. Archived from ,the original, on 6 November 2015., , +,^, ,""The Art of Ballistic Programming"",. Archived from ,the original, on June 17, 2013., , +,^, ,""Thesis, Automattic, and WordPress | Post Status"",. Retrieved ,2015-07-24,., , +,^, ,""User and Developer Community | Post Status"",. Retrieved ,2015-08-13,., , +,^, ,""A History of OCaml | OCaml.org"",. Retrieved ,2015-09-18,., , +,^, ,""OCaml Infrastructure mailing list"",. Retrieved ,2015-09-18,., , +,^, ,""New Developer Info"",. Retrieved ,21 September, 2015,., , +,^, ,""Why Neovim is Better than Vim"",. Retrieved ,30 September, 2015,., , +,^, ,""Contributing to the F# Language and Compiler"",. Retrieved ,29 September, 2015,., , +,^, ,""Clojure JIRA Workflow"",. Retrieved ,3 October, 2015,., , +,^, ,""pandas 0.20.3 documentation: Tutorials"",. Retrieved ,2017-07-24,., , ""Wes McKinney’s (pandas BDFL) blog"", +,^, ,""Programming in Scala Leaps onto the World Stage!"",. Retrieved ,2015-11-25,., , +,^, ,""A Ruby Design Process"",. Retrieved ,2016-04-17,., , +,^, ,""56: Ember vs. Elm: The Showdown with Philip Poots | The Frontside Podcast"",. ,The Frontside Podcast,. Retrieved ,2017-08-14,., , +,^, ,elm-conf (2016-09-19), ,""Code is the Easy Part"" by Evan Czaplicki,, retrieved ,2017-08-14, , +,^, ,""Understanding the IPFS White Paper part 2"",. Retrieved ,2017-08-21,., , +,^, ,""Spacemacs COMMUNITY.org"",. Retrieved ,2017-08-24,., , +,^, ,""SciPy 1.0.0"",. Retrieved ,2017-10-27,., , +,^, ,""SciPy project governance"",. Retrieved ,2017-10-27,., , +,^, ,""Elixir Companies"",. Retrieved ,2017-11-01,., , +, +, + + +, +, +, +, +",Benevolent dictator for life +" 29 December 2017, at 03:58.","Not to be confused with ,Ruby (programming language),., +, +,Ruby on Rails, +, +, +, +, +,Original author(s), +,David Heinemeier Hansson, +, +, +,Initial release, +,13 December 2005,; 12 years ago, (,2005-12-13,),[1], +, +, +, +, +, +,Stable release, +,5.1.4 ,(September 7, 2017,; 4 months ago, (,2017-09-07,),[2],), ,[±], +, +, +, +, +, +,Repository, +, +, +, +,https://github.com/rails/rails, +, +, +, +, +, +,Development status, +,Active, +, +, +,Written in, +,Ruby, +, +, +,Operating system, +,Cross-platform, +, +, +,Size, +,18.2 ,MB,[3], +, +, +,Type, +,Web application framework, +, +, +,License, +,MIT License, +, +, +,Website, +,rubyonrails,.org, +, +, +,Ruby on Rails,, or ,Rails,, is a server-side ,web application framework, written in ,Ruby, under the ,MIT License,. Rails is a ,model–view–controller, (MVC) framework, providing default structures for a ,database,, a ,web service,, and ,web pages,. It encourages and facilitates the use of ,web standards, such as ,JSON, or ,XML, for data transfer, and ,HTML,, ,CSS, and ,JavaScript, for display and user interfacing. In addition to MVC, Rails emphasizes the use of other well-known ,software engineering, ,patterns, and paradigms, including ,convention over configuration, (CoC), ,don't repeat yourself, (DRY), and the ,active record pattern,.,[4], +,Ruby on Rails' emergence in the 2000s greatly influenced web app development, through innovative features such as seamless database table creations, migrations, and scaffolding of views to enable rapid application development. Ruby on Rails' influence on other web frameworks remains apparent today, with many frameworks in other languages borrowing its ideas, including ,Django, in ,Python,, ,Laravel, in ,PHP,, Phoenix in ,Elixir,, and ,Sails.js, in ,Node.js,., +, +, +, +,Contents, +, +, +,1, ,History, +,2, ,Technical overview, +, +,2.1, ,Framework structure, +,2.2, ,Deployment, +, +, +,3, ,Philosophy and design, +,4, ,Trademarks, +,5, ,Reception, +, +,5.1, ,Scalability, +,5.2, ,Security, +, +, +,6, ,References, +,7, ,Bibliography, +,8, ,External links, +, +, +, +,History,[,edit,], +,David Heinemeier Hansson, extracted Ruby on Rails from his work on the project management tool ,Basecamp, at the ,web application, company also called ,Basecamp,.,[5], Hansson first released Rails as open source in July 2004, but did not share ,commit, rights to the project until February 2005.,[,citation needed,], In August 2006, the framework reached a milestone when ,Apple, announced that it would ship Ruby on Rails with ,Mac OS X v10.5 ""Leopard"",,,[6], which was released in October 2007., +,Rails version 2.3 was released on March 15, 2009 with major new developments in templates, engines, ,Rack, and nested model forms. Templates enable the developer to generate a skeleton application with custom ,gems, and configurations. Engines give developers the ability to reuse application pieces complete with routes, view paths and models. The Rack web server interface and Metal allow one to write optimized pieces of code that route around Action Controller.,[7], +,On December 23, 2008, ,Merb,, another web application framework, was launched, and Ruby on Rails announced it would work with the Merb project to bring ""the best ideas of Merb"" into Rails 3, ending the ""unnecessary duplication"" across both communities.,[8], Merb was merged with Rails as part of the Rails 3.0 release.,[9],[10], +,Rails 3.1 was released on August 31, 2011, featuring Reversible Database Migrations, Asset Pipeline, Streaming, ,jQuery, as default ,JavaScript, library and newly introduced ,CoffeeScript, and ,Sass, into the stack.,[11], +,Rails 3.2 was released on January 20, 2012 with a faster development mode and routing engine (also known as Journey engine), Automatic Query Explain and Tagged Logging.,[12], Rails 3.2.x is the last version that supports Ruby 1.8.7.,[13], Rails 3.2.12 supports Ruby 2.0.,[14], +,Rails 4.0 was released on June 25, 2013, introducing Russian Doll Caching, Turbolinks, Live Streaming as well as making Active Resource, Active Record Observer and other components optional by splitting them as gems.,[15], +,Rails 4.1 was released on April 8, 2014, introducing Spring, Variants, Enums, Mailer previews, and secrets.yml.,[16], +,Rails 4.2 was released on December 19, 2014, introducing Active Job, asynchronous emails, Adequate Record, Web Console, and ,foreign keys,.,[17], +,Rails 5.0 was released on June 30, 2016, introducing Action Cable, API mode, and Turbolinks 5.,[18], +,Rails 5.0.0.1 was released on August 10, 2016 with Exclusive use of rails CLI over Rake and supports Ruby 2.2.2+ versions, +,Rails 5.1 was released on April 27, 2017, introducing ,JavaScript, integration changes (management of JavaScript dependencies from NPM via Yarn, optional compilation of JavaScript using ,Webpack,, and a rewrite of Rails UJS to use vanilla JavaScript instead of depending on jQuery), system tests using ,Capybara,, encrypted secrets, parameterized mailers, direct & resolved routes, and a unified form_with helper replacing the form_tag/form_for helpers.,[19], +, +,Version history, +, +,Version, +,Date, +,Notes, +, +, +,Old version, no longer supported:, 1.0,[20], +,000000002005-12-13-0000,December 13, 2005, +, +, +, +,Old version, no longer supported:, 1.2,[21], +,000000002007-01-19-0000,January 19, 2007, +, +, +, +,Old version, no longer supported:, 2.0,[22], +,000000002007-12-07-0000,December 7, 2007, +, +, +, +,Old version, no longer supported:, 2.1,[23], +,000000002008-06-01-0000,June 1, 2008, +, +, +, +,Old version, no longer supported:, 2.2,[24], +,000000002008-11-21-0000,November 21, 2008, +, +, +, +,Old version, no longer supported:, 2.3,[25], +,000000002009-03-16-0000,March 16, 2009, +, +, +, +,Old version, no longer supported:, 3.0,[26], +,000000002010-08-29-0000,August 29, 2010, +, +, +, +,Old version, no longer supported:, 3.1,[27], +,000000002011-08-31-0000,August 31, 2011, +, +, +, +,Old version, no longer supported:, 3.2,[28], +,000000002012-01-20-0000,January 20, 2012, +, +, +, +,Old version, no longer supported:, 4.0,[29], +,000000002013-06-25-0000,June 25, 2013, +, +, +, +,Old version, no longer supported:, 4.1,[16], +,000000002014-04-08-0000,April 8, 2014, +, +, +, +,Old version, no longer supported:, 4.2,[17], +,000000002014-12-19-0000,December 19, 2014, +, +, +, +,Older version, yet still supported:, 5.0,[18], +,000000002016-06-30-0000,June 30, 2016, +, +, +, +,Current stable version:, ,5.1,[19], +,000000002017-05-10-0000,May 10, 2017, +, +, +, +,Latest preview version of a future release:, 5.2, +, +, +, +, +, +, +,Legend:, +,Old version, +,Older version, still supported, +,Latest version, +,Latest preview version, +,Future release, +, +, +, +, +, +, +,Technical overview,[,edit,], +,Like many web frameworks, Ruby on Rails uses the ,model–view–controller, (MVC) pattern to organize application programming., +,In a default configuration, a ,model, in the Ruby on Rails framework maps to a table in a database and to a Ruby file. For example, a model class ,User, will usually be defined in the file 'user.rb' in the app/models directory, and linked to the table 'users' in the database. While developers are free to ignore this convention and choose differing names for their models, files, and database table, this is not common practice and is usually discouraged in accordance with the ""convention-over-configuration"" philosophy., +,A ,controller, is a server-side component of Rails that responds to external requests from the web server to the application, by determining which view file to render. The controller may also have to query one or more models for information and pass these on to the view. For example, in an airline reservation system, a controller implementing a flight-search function would need to query a model representing individual flights to find flights matching the search, and might also need to query models representing airports and airlines to find related secondary data. The controller might then pass some subset of the flight data to the corresponding view, which would contain a mixture of static HTML and logic that use the flight data to create an HTML document containing a table with one row per flight. A controller may provide one or more actions. In Ruby on Rails, an action is typically a basic unit that describes how to respond to a specific external web-browser request. Also, note that the controller/action will be accessible for external web requests only if a corresponding route is mapped to it. Rails encourages developers to use ,RESTful, routes, which include actions such as create, new, edit, update, destroy, show, and index. These mappings of incoming requests/routes to controller actions can be easily set up in the routes.rb configuration file., +,A ,view, in the default configuration of Rails is an ,erb, file, which is evaluated and converted to ,HTML, at run-time. Alternatively, many other templating systems can be used for views., +,Ruby on Rails includes tools that make common development tasks easier ""out-of-the-box"", such as ,scaffolding, that can automatically construct some of the models and views needed for a basic ,website,.,[30], Also included are ,WEBrick,, a simple Ruby web server that is distributed with Ruby, and ,Rake,, a build system, distributed as a ,gem,. Together with Ruby on Rails, these tools provide a basic development environment., +,Ruby on Rails is most commonly not connected to the Internet directly, but through some front-end ,web server,. ,Mongrel, was generally preferred,[,by whom?,], over WEBrick in the early days,,[,citation needed,], but it can also run on ,Lighttpd,, ,Apache,, ,Cherokee,, ,Hiawatha,, ,Nginx, (either as a module – ,Phusion Passenger, for example – or via ,CGI,, ,FastCGI, or ,mod_ruby,), and many others. From 2008 onward, Passenger replaced Mongrel as the most-used web server for Ruby on Rails.,[31], Ruby is also supported natively on the ,IBM i,.,[32], +,Ruby on Rails is also noteworthy for its extensive use of the ,JavaScript, libraries, ,Prototype, and ,Script.aculo.us,, for scripting ,Ajax, actions.,[33], Ruby on Rails initially utilized lightweight ,SOAP, for web services; this was later replaced by RESTful ,web services,. Ruby on Rails 3.0 uses a technique called ,Unobtrusive JavaScript, to separate the functionality (or logic) from the structure of the web page. jQuery is fully supported as a replacement for Prototype and is the default JavaScript library in Rails 3.1, reflecting an industry-wide move towards jQuery. Additionally, ,CoffeeScript, was introduced in Rails 3.1 as the default JavaScript language., +,Since version 2.0, Ruby on Rails offers both HTML and XML as standard output formats. The latter is the facility for RESTful web services., +,Rails 3.1 introduced ,Sass, as standard ,CSS, templating., +,By default, the server uses ,Embedded Ruby, in the HTML views, with files having an html.erb extension. Rails supports swapping-in alternative templating languages, such as ,HAML, and ,Mustache,., +,Ruby on Rails 3.0 has been designed to work with Ruby 1.8.7, Ruby 1.9.2, and ,JRuby, 1.5.2+; earlier versions are not supported.,[34], +,Ruby on Rails 3.2 is the last series of releases that support Ruby 1.8.7., +,Framework structure,[,edit,], +,Ruby on Rails is separated into various packages, namely ,ActiveRecord, (an ,object-relational mapping, system for database access), Active Resource (provides web services), Action Pack, Active Support and Action Mailer. Prior to version 2.0, Ruby on Rails also included the Action Web Service package that is now replaced by Active Resource. Apart from standard packages, developers can make ,plugins, to extend existing packages. Earlier Rails supported plugins within their own custom framework; version 3.2 deprecates these in favor of standard Ruby ""gems"".,[35], +,Deployment,[,edit,], +,Ruby on Rails is often installed using ,RubyGems,, a package manager,[36], which is included with current versions of Ruby. Many free ,Unix-like systems, also support installation of Ruby on Rails and its dependencies through their native ,package management system,., +,Ruby on Rails is typically deployed with a database server such as ,MySQL, or ,PostgreSQL,, and a web server such as ,Apache, running the ,Phusion Passenger, module., +,Philosophy and design,[,edit,], +,Ruby on Rails is intended to emphasize ,Convention over Configuration, (CoC), and the ,Don't Repeat Yourself, (DRY) principle., +,""Convention over Configuration"" means a developer only needs to specify unconventional aspects of the application. For example, if there is a class ,Sales, in the model, the corresponding table in the database is called ,sales, by default. It is only if one deviates from this convention, such as calling the table ""products sold"", that the developer needs to write code regarding these names. Generally, Ruby on Rails conventions lead to less code and less repetition.,[37], +,""Don't repeat yourself"" means that information is located in a single, unambiguous place. For example, using the ,ActiveRecord, module of Rails, the developer does not need to specify database column names in class definitions. Instead, Ruby on Rails can retrieve this information from the database based on the class name., +,""Fat models, skinny controllers"" means that most of the application logic should be placed within the model while leaving the controller as light as possible., +,Trademarks,[,edit,], +,In March 2007, ,David Heinemeier Hansson, filed three Ruby on Rails-related ,trademark, applications to the ,USPTO,. These applications regard the phrase ""RUBY ON RAILS"",,[38], the word ""RAILS"",,[39], and the official Rails logo.,[40], As a consequence, in the summer of 2007, Hansson denied permission to ,Apress, to use the Ruby on Rails logo on the cover of a new Ruby on Rails book written by some authoritative community members. The episode gave rise to a polite protest in the Ruby on Rails community.,[41],[42], In response to this criticism, Hansson replied:, +, +,I only grant promotional use [of the Rails logo] for products I'm directly involved with. Such as books that I've been part of the development process for or conferences where I have a say in the execution. I would most definitely seek to enforce all the trademarks of Rails.,[41], +, +,Reception,[,edit,], +,Scalability,[,edit,], +,Rails running on ,Matz's Ruby Interpreter, (the ,de facto, reference interpreter for Ruby) had been criticized for issues with scalability.,[43], These critics often mentioned various ,Twitter, outages in 2007 and 2008, which spurred Twitter's partial transition to ,Scala, (which runs on the ,Java Virtual Machine,) for their ,queueing system, and other ,middleware,.,[44],[45], The user interface aspects of the site continued to run Ruby on Rails,[46], until 2011 when it was replaced due to concerns over performance,[47], +,In 2011, ,Gartner Research, noted that despite criticisms and comparisons to Java, many high-profile consumer web firms are using Ruby on Rails to build scalable web applications. Some of the largest sites running Ruby on Rails include ,Airbnb,, ,GitHub,, ,Scribd,, ,Shopify,, ,Hulu,, and ,Basecamp,.,[48], As of January 2016, it is estimated that more than 1.2 million web sites are running Ruby on Rails.,[49],[50], +,Security,[,edit,], +,In March 2012, security researcher Egor Homakov discovered a ""mass assignment"" vulnerability that allowed certain Rails applications to be remotely exploited, and demonstrated it by non-maliciously hacking ,GitHub, after his earlier attempts at responsible disclosure were dismissed.,[51], +,On September 24, 2013, a session cookie persistence security flaw was reported in Ruby on Rails. In a default configuration, the entire session hash is stored within a session cookie known as ,CookieStore,, allowing any authenticated session possessing the session cookie to log in as the target user at any time in the future. As a workaround, administrators are advised to configure cookies to be stored on the server using mechanisms such as ,ActiveRecordStore,.,[52], +,Researchers Daniel Jackson and Joseph Near developed a data debugger they called ""Space"" that can analyze the data access of a Rails program and determine if the program properly adheres to rules regarding access restrictions. On April 15, 2016, Near reported that an analysis of 50 popular Web applications using Space uncovered 23 previously unknown security flaws.,[53], +,References,[,edit,], +, +, +,^, ,David. ,""Rails 1.0: Party like it's one oh oh!"",. ,Ruby on Rails,. Retrieved ,2017-03-01,., , +,^, ,matthewd. ,""Rails 5.1.4 and 5.0.6 released"",. ,Ruby on Rails,. Retrieved ,2017-09-09,., , +,^, ,""Release v5.1.1 · rails/rails · GitHub"",. Retrieved ,25 June, 2017,., , +,^, ,""Getting Started with Rails: What Is Rails?"",. ,Ruby on Rails Guides,. Retrieved ,10 August, 2014,., , +,^, ,Grimmer, Lenz−− (February 2006). ,""Interview with David Heinemeier Hansson from Ruby on Rails"",. ,MySQL AB,. Archived from ,the original, on February 25, 2013,. Retrieved ,2008-06-08,., , +,^, ,Hansson, David (August 7, 2006). ,""Ruby on Rails will ship with OS X 10.5 (Leopard)"",. Retrieved ,2008-06-08,., , +,^, ,Hansson, David (March 16, 2009). ,""Rails 2.3: Templates, Engines, Rack, Metal, much more!"",., , +,^, ,""The day Merb joined Rails"",. 2008-12-27. Archived from ,the original, on 2013-02-09., , +,^, ,""Ruby on Rails 3.0 Release Notes — Ruby on Rails Guides"",. ,Edgeguides.rubyonrails.org,. Retrieved ,2017-05-24,., , +,^, ,""Ruby on Rails 3.0 goes modular"",. sdtimes.com. 2010-02-10,. Retrieved ,2010-08-06,., , +,^, ,""Ruby on Rails 3.1 Release Notes"",. 2012-09-01., , +,^, ,""Ruby on Rails 3.2 Release Notes"",. 2012-09-01., , +,^, ,""Rails/master is now 4.0.0.beta"",. 2012-09-01., , +,^, ,Rails 3.2.x is now compatible with Ruby 2.0.0 by sikachu · Pull Request #9406 · rails/rails · GitHub,. Github.com. Retrieved on 2014-05-30., +,^, ,""Rails 4.0: Final version released! | Riding Rails"",. ,Weblog.rubyonrails.org,. 2013-06-25,. Retrieved ,2017-05-24,., , +,^ ,a, ,b, ,""Rails 4.1.0: Spring, Variants, Enums, Mailer previews, secrets.yml"",. ,weblog.rubyonrails.org,., , +,^ ,a, ,b, ,""Rails 4.2: Active Job, Asynchronous Mails, Adequate Record, Web Console, Foreign Keys"",. ,Ruby on Rails,. Retrieved ,5 Dec, 2015,., , +,^ ,a, ,b, ,""Rails 5.0: Action Cable, API mode, and so much more"",. ,Ruby on Rails,. Retrieved ,19 Nov, 2016,., , +,^ ,a, ,b, ,""Rails 5.1: Loving JavaScript, System Tests, Encrypted Secrets, and more"",. ,Ruby on Rails,. Retrieved ,10 May, 2017,., , +,^, ,""Rails 1.0: Party like it's one oh oh!"",. Riding Rails. Retrieved June 9, 2010., +,^, ,""Rails 1.2: REST admiration, HTTP lovefest, and UTF-8 celebrations"",. Riding Rails. Retrieved June 9, 2010., +,^, ,""Rails 2.0: It's done!"",. Riding Rails. Retrieved June 9, 2010., +,^, ,Rails 2.1: Time zones, dirty, caching, gem dependencies, caching, etc,. Riding Rails. Retrieved June 9, 2010., +,^, ,""Rails 2.2: i18n, HTTP validators, thread safety, JRuby/1.9 compatibility, docs"",. Riding Rails. Retrieved June 9, 2010., +,^, ,""Rails 2.3: Templates, Engines, Rack, Metal, much more!"",. Riding Rails. Retrieved June 9, 2010., +,^, ,""Rails 3.0: It's ready!"",. Riding Rails. Retrieved August 30, 2010., +,^, ,""bumping to 3.1.0"",. ,Github.com,., , +,^, ,""Preparing for 3.2.0 release"",. ,Github.com,., , +,^, ,""Rails 4 in 30,',"",. ,blog.wyeworks.com,., , +,^, ,Sean Lynch (2007-12-15). ,""fairleads: Rails 2.0 and Scaffolding Step by Step"",. ,Fairleads.blogspot.com,. Retrieved ,2017-05-24,., , +,^, ,""Archived copy"",. Archived from ,the original, on 2009-07-07,. Retrieved ,2012-12-03,., , +,^, ,Maxcer, Chris. ,""PowerRuby Brings Enterprise Ruby on Rails Support to IBM i"",. iPro Developer. Archived from ,the original, on 9 October 2013,. Retrieved ,9 May, 2014,., , +,^, ,Js_Escape_Map. ,""ActionView::Helpers::JavaScriptHelper"",. ,Api.rubyonrails.org,. Retrieved ,2017-05-24,., , +,^, ,""Rails 3.0: It's ready!"",. rubyonrails.org,. Retrieved ,2010-08-30,. ,Rails 3.0 has been designed to work with Ruby 1.8.7, Ruby 1.9.2, and JRuby 1.5.2+., , +,^, ,""Rails 3.2.0.rc2 has been released!"",. ,Weblog.rubyonrails.org,. 2012-09-01., , +,^, ,""Ruby on Rails: Download"",. RubyonRails.org. Archived from ,the original, on 2009-12-12., , +,^, ,""Getting Started with Rails"",. Rubyonrails.org,. Retrieved ,2014-03-10,., , +,^, ,"","",Ruby on Rails"" Trademark Status"",. ,USPTO,. Retrieved ,2007-08-01,., , +,^, ,"","",Rails"" Trademark Status"",. ,USPTO,. Retrieved ,2007-08-01,., , +,^, ,""Rails Logo Trademark Status"",. ,USPTO,. Retrieved ,2007-08-01,., , +,^ ,a, ,b, ,Forde, Pete (2007-07-23). ,""Beginning Rails: From Novice to Professional"",. Archived from ,the original, on August 5, 2007,. Retrieved ,2007-08-01,., , +,^, ,Cooper, Peter (2007-07-24). ,""David Heinemeier Hansson says No to Use of Rails Logo"",. Retrieved ,2007-08-01,., , +,^, ,""5 Question Interview with Twitter Developer Alex Payne"",. radicalbehavior.com. 2007-03-29. Archived from ,the original, on April 23, 2009,. Retrieved ,2014-11-04,. ,By various metrics Twitter is the biggest Rails site on the net right now. Running on Rails has forced us to deal with scaling issues - issues that any growing site eventually contends with – far sooner than I think we would on another framework., , +,^, ,Steve Jenson; Alex Payne & Robey Pointer interview (2009-04-03). ,""Twitter on Scala"",. artima.com,. Retrieved ,2009-07-18,. ,We had a Ruby-based queuing system that we used for communicating between the Rails front ends and the daemons, and we ended up replacing that with one written in Scala. The Ruby one actually worked pretty decently in a normal steady state, but the startup time and the crash behavior were undesirable., , +,^, ,""Twitter jilts Ruby for Scala"",. theregister.co.uk. 2009-04-01,. Retrieved ,2009-07-18,. ,By the end of this year, Payne said, Twitter hopes to have its entire middleware infrastructure and its APIs ported to the new language. Ruby will remain, but only on the front end. ""We're still happy with Rails for building user facing features... performance-wise, it's fine for people clicking around web pages. It's the heavy lifting, asynchronous processing type of stuff that we've moved away from."", , +,^, ,ryan king (2009-09-25). ,""Twitter on Ruby"",. evan weaver,. Retrieved ,2009-09-29,. ,We use Scala for a few things at Twitter, but the majority of the site is Ruby., , +,^, ,""Twitter Search is Now 3x Faster"",. Twitter,. Retrieved ,June 6,, 2014,., , +,^, ,""Here's Why Ruby On Rails Is Hot"",. Business Insider. Archived from ,the original, on December 21, 2011,. Retrieved ,February 10,, 2012,., , +,^, ,""Ruby on Rails Usage Statistics"",. ,trends.builtwith.com,. Retrieved ,2016-01-04,., , +,^, ,""Ruby on Rails Token Usage Statistics"",. ,trends.builtwith.com,. Retrieved ,2016-01-04,., , +,^, ,Protalinski, Emil. ,""How GitHub handled getting hacked"",. ,Zdnet.com,. Retrieved ,2017-05-24,., , +,^, ,Brook, Chris (2013-09-25). ,""Security Issue in Ruby on Rails Could Expose Cookies"",. ,Threat Post,. The Kaspersky Lab Security News Service,. Retrieved ,2014-06-04,., , +,^, ,""Patching up Web applications"",. ,MIT News,. Retrieved ,2016-04-21,., , +, +, +,Bibliography,[,edit,], +, +, +,Ruby, Sam; Thomas, Dave; Hansson, David (March 28, 2009). ,""Agile Web Development with Rails"", (Third ed.). ,Pragmatic Bookshelf,: 850. ,ISBN, ,1-934356-16-6,., , +,Laurent, Simon St.; Dumbill, Edd (November 28, 2008). ,""Learning Rails"", (First ed.). ,O'Reilly Media,: 442. ,ISBN, ,0-596-51877-3,., , +,Lenz, Patrick (May 1, 2008). ,""Simply Rails 2"", (Second ed.). ,SitePoint,: 450. ,ISBN, ,0-9804552-0-0,., , +,Tate, Bruce; Hibbs, Curt (August 22, 2006). ,""Ruby on Rails: Up and Running"", (First ed.). ,O'Reilly Media,: 182. ,ISBN, ,0-596-10132-5,., , +,Holzner Ph.D., Steve (November 29, 2006). ,""Beginning Ruby on Rails"", (First ed.). ,Wrox,: 380. ,ISBN, ,0-470-06915-5,., , +,Allan Hardy, Jeffrey; Carneiro Jr, Cloves; Catlin, Hampton (July 20, 2007). ,""Beginning Ruby on Rails E-Commerce: From Novice to Professional"", (First ed.). ,Wrox,: 361. ,ISBN, ,1-59059-686-2,., , +,Clark, Mike (May 15, 2008). ,""Advanced Rails Recipes"", (First ed.). Pragmatic Bookshelf: 464. ,ISBN, ,0-9787392-2-1,., , +, +, +,External links,[,edit,], +, +, +, +,Wikibooks has more on the topic of: ,Ruby on Rails, +, +, +, +,Official website, +,The Rails Tutorial, – The Ruby on Rails Tutorial book and screencast series teach you how to develop and deploy Ruby on Rails apps, +,Rails source code, +,Rails guides, +,Rails API, +, +, +, +, +, +, +, +,v, +,t, +,e, +, +, +,Ruby programming language, +, +, +, +,Implementations, +, +, +, +, +,Active, +, +, +, +,Ruby MRI, / ,YARV, +,mruby, +,JRuby, +,Rubinius, +,MagLev, +,RubyMotion, +, +, +, +, +, +,Discontinued, +, +, +, +,MacRuby, +,IronRuby, +,XRuby, +,RubyJS, +,HotRuby, +, +, +, +, +, +, +, +, +, +, +, +,IDE, +, +, +, +,Komodo, +,NetBeans, +,RadRails, +,RubyMine, +, +, +, +, +, +,Applications, +, +, +, +,Capistrano, +,Chef, +,Hackety Hack, +,Homebrew, +,Interactive Ruby Shell, +,Pry, +,Puppet, +,Rake, +,Redmine, +,RSpec, +,RubyGems, +,RVM, +, +, +, +, +, +,Libraries and frameworks, +, +, +, +,Adhearsion, +,Camping, +,eRuby, (RHTML), +,Merb, +,Padrino, +,RubyCocoa, +,Ruby on Rails, +,Shoes, +,Sinatra, +,QtRuby, +, +, +, +, +, +,Server software, +, +, +, +,mod_ruby, +,Mongrel, +,Phusion Passenger, (mod_rails/mod_rack), +,Rack, +,WEBrick, +, +, +, +, +, +,People, +, +, +, +,Yukihiro Matsumoto, +,David Heinemeier Hansson, +,why the lucky stiff, +, +, +, +, +, +,Other, +, +, +, +,Document format, +,why's (poignant) Guide to Ruby, +,Ruby Central, +,RubyKaigi, +,RubyForge, +,Ruby License, +, +, +, +, +, +, +, +, +, ,Category, +, ,Commons, +, +, +, +, +, +, +, +, +, +, +, +, +,v, +,t, +,e, +, +, +,Web frameworks, +, +, +, +, +, +, +,Comparison, +, +, +, +, +, +,C++, +, +, +, +,CppCMS, +,Wt, +, +, +, +, +, +,CLI, +, +, +, +,ASP.NET, +, +,Core, +,AJAX, +,Dynamic Data, +,MVC, +,Razor, +,Web Forms, +, +, +,DNN, +,BFC, +,MonoRail, +,OpenRasta, +,Umbraco, +, +, +, +, +, +,ColdFusion, +, +, +, +,CFWheels, +,ColdBox Platform, +,ColdSpring, +,Fusebox, +,Mach-II, +,Model-Glue, +, +, +, +, +, +,Common Lisp, +, +, +, +,Caveman2, +,CL-HTTP, +,UnCommon Web, +,Weblocks, +, +, +, +, +, +,Haskell, +, +, +, +,Happstack, +,Yesod, +,Snap, +, +, +, +, +, +,Java, +, +, +, +,AppFuse, +,Flexive, +,Grails, +,GWT, +,ICEfaces, +,ItsNat, +,JavaServer Faces, +,JHipster, +,Jspx, +,JWt, +,OpenXava, +,Play, +,Reasonable Server Faces, +,Remote Application Platform, +,RIFE, +,Seam, +,Sling, +,Spring, +,Stripes, +,Struts, +,Tapestry, +,Vaadin, +,Vert.x, +,WebWork, +,Wicket, +,WaveMaker, +,ZK, +, +, +, +, +, +,JavaScript, +, +, +, +,Ample SDK, +,Angular,/,AngularJS, +,Backbone.js, +,Chaplin.js, +,Closure, +,Dojo Toolkit, +,Ember.js, +,Ext JS, +,jQuery, +,Meteor, +,MooTools, +,Node.js, +,OpenUI5, +,Prototype, +,React, +,Rico, +,script.aculo.us, +,Sencha Touch, +,SproutCore, +,Wakanda, +, +, +, +, +, +,Perl, +, +, +, +,Catalyst, +,Dancer, +,Mason, +,Maypole, +,Mojolicious, +,WebGUI, +, +, +, +, +, +,PHP, +, +, +, +,CakePHP, +,CodeIgniter, +,Drupal, +,Fat-Free, +,FuelPHP, +,Flow, +,Gyroscope, +,Horde, +,Kohana, +,Laravel, +,Lithium, +,Midgard, +,MODX, +,Nette, +,Phalcon, +,Pop PHP, +,PRADO, +,ProcessWire, +,Qcodo, +,Silex, +,SilverStripe, +,Symfony, +,TYPO3, +,Xaraya, +,XOOPS, +,Yii, +,Zend Framework, +, +, +, +, +, +,Python, +, +, +, +,BlueBream, +,CherryPy, +,Django, +,Flask, +,Grok, +,Nevow, +,Pyjs, +,Pylons, +,Pyramid, +,Quixote, +,TACTIC, +,Tornado, +,TurboGears, +,web2py, +,Webware, +,Zope 2, +, +, +, +, +, +,Ruby, +, +, +, +,Camping, +,Merb, +,Padrino, +,Ruby on Rails, +,Sinatra, +, +, +, +, +, +,Scala, +, +, +, +,Lift, +,Play, +,Scalatra, +, +, +, +, +, +,Smalltalk, +, +, +, +,AIDA/Web, +,Seaside, +, +, +, +, +, +,Other languages, +, +, +, +,Vibe.d, (,D,), +,Application Express, (,PL/SQL,), +,Grails, (,Groovy,), +,Kepler, (,Lua,), +,Rocket, (,Rust,), +,OpenACS, (,Tcl,), +,Phoenix, (,Elixir,), +,SproutCore, (,JavaScript,-,Ruby,), +,Yaws, (,Erlang,), +, +, +, +, +, +, + + +, +, +, +, +",Ruby on Rails +" 7 January 2018, at 05:36.","Not to be confused with ,David Hanson (computer scientist),., +, +, +, +, +, +, +, +,This article has multiple issues., Please help ,improve it, or discuss these issues on the ,talk page,. ,(,Learn how and when to remove these template messages,), +, +, +, +, +, +, +, +,This article ,is written like a personal reflection or opinion essay, that states a Wikipedia editor's personal feelings about a topic. ,Please ,help improve it, by rewriting it in an ,encyclopedic style,., ,(July 2017), ,(,Learn how and when to remove this template message,), +, +, +, +, +, +, +, +, +, +,This article ,reads like ,a press release, or ,a news article, or ,is entirely based on ,routine coverage,. ,Please ,expand this article, with ,properly sourced content, to meet Wikipedia's ,quality standards,, ,event notability guideline,, or ,encyclopedic content policy,., ,(July 2017), +, +, +, +, +, +, +, +, +, +,The topic of this article ,may not meet Wikipedia's ,notability guideline for biographies,. ,Please help to establish notability by citing ,reliable secondary sources, that are ,independent, of the topic and provide significant coverage of it beyond its mere trivial mention. If notability cannot be established, the article is likely to be ,merged,, ,redirected,, or ,deleted,., +,Find sources:, ,""David Heinemeier Hansson"", – ,news, ,·, ,newspapers, ,·, ,books, ,·, ,scholar, ,·, ,JSTOR, ,(July 2017), ,(,Learn how and when to remove this template message,), +, +, +, +, +, +, +, +, +, +,Some of this article's ,listed sources, ,may not be ,reliable,. ,Please help this article by looking for better, more reliable sources. Unreliable citations may be challenged or deleted., ,(July 2017), ,(,Learn how and when to remove this template message,), +, +, +, +, +, +,(,Learn how and when to remove this template message,), +, +, +, +, +, +,David Heinemeier Hansson, +, +, +, +,Hansson at the 2006 O'Reilly Emerging Technology Conference, +, +, +, +,Born, +,(,1979-10-15,), 15 October 1979 ,(age 38),[1], +,Copenhagen,, ,Denmark, +, +, +,Residence, +,Benahavís,, ,Spain, +, +, +,Other names, +,DHH, +, +, +,Occupation, +,Programmer,[2], +, +, +,Employer, +,Basecamp, +, +, +,Known for, +,Ruby on Rails, +, +, +,Website, +,david,.heinemeierhansson,.com, +, +, +,David Heinemeier Hansson, (born 15 October 1979; known to the ,Ruby, and car racing communities as ,DHH,) is a ,Danish, ,programmer, and the creator of the popular ,Ruby on Rails, ,web development, ,framework, and the ,Instiki wiki,.,[3], He is also a partner at the web-based software development firm ,Basecamp, (formerly ,37signals,)., +,Hansson co-wrote ,Agile Web Development with Rails, with ,Dave Thomas, in 2005 as part of ,The Facets of Ruby Series,. He also co-wrote ,Getting Real,, ,Rework,, and ,Remote, with ,Jason Fried,., +, +, +, +,Contents, +, +, +,1, ,Programming, +,2, ,Personal life, +, +,2.1, ,24 Hours of Le Mans results, +,2.2, ,Complete FIA World Endurance Championship results, +, +, +,3, ,Recognition, +,4, ,See also, +,5, ,References, +,6, ,External links, +, +, +, +,Programming,[,edit,], +,In 1999, Hansson founded and built a Danish online gaming news website and community called Daily Rush, which he ran until 2001.,[4], +,After attracting the attention of ,Jason Fried, by offering him help with PHP coding, Hansson was hired by Fried to build a web-based ,project management, tool, which ultimately became 37signals' ,Basecamp, ,software as a service, product., +,To aid the development process, Hansson used the then-obscure Ruby programming language to develop a custom ,web framework,. He released the framework separately from the project management tool in 2004 as the ,open source, project ,Ruby on Rails,. In 2005, Hansson was recognized by ,Google, and ,O'Reilly, with the ""Hacker of the Year"" award for his creation of Ruby on Rails.,[5], +,After graduating from the ,Copenhagen Business School, and receiving his ,bachelor's degree, in Computer Science and Business Administration, Hansson moved from ,Denmark, to ,Chicago,, Illinois, ,U.S., in November 2005.,[6], +,Personal life,[,edit,], +, +, +,24 Hours of Le Mans, career, +, +, +,Years, +,2012 -, +, +, +,Teams, +,OAK Racing,, ,Aston Martin Racing,, ,Extreme Speed Motorsports,, ,Proton Competition,, ,Rebellion Racing, +, +, +,Best finish, +,8th ,(,2013,), +, +, +,Class wins, +,1, +, +, +,David Heinemeier Hansson lists photography and race car driving amongst his hobbies.,[7], He took part in the ,2012 24 Hours of Le Mans, driving for ,OAK Racing,.,[8], He also drove a Morgan-Nissan P2 car for ,Conquest Racing, in the ,American Le Mans Series, (ALMS), winning two races in the season. Heinemeier Hansson joined OAK Racing full-time in 2013, taking five 2nd-place finishes to finish 2nd in the Trophy for LMP2 Drivers., +,In July 2010 it was revealed that Heinemeier Hansson was the person that had commissioned the one-off ,Pagani Zonda HH, supercar.,[9], He also owns the one-off ,Koenigsegg Agera, HH car.,[10], +,24 Hours of Le Mans results,[,edit,], +, +, +,Year, +,Team, +,Co-Drivers, +,Car, +,Class, +,Laps, +,Pos., +,Class, +Pos., +, +, +,2012, +, ,OAK Racing, +, ,Bas Leinders, +, ,Maxime Martin, +,Morgan LMP2,-,Nissan, +,LMP2, +,341, +,14th, +,7th, +, +, +,2013, +, ,OAK Racing, +, ,Olivier Pla, +, ,Alex Brundle, +,Morgan LMP2,-,Nissan, +,LMP2, +,328, +,8th, +,2nd, +, +, +,2014, +, ,Aston Martin Racing, +, ,Kristian Poulsen, +, ,Nicki Thiim, +,Aston Martin Vantage GTE, +,GTE, +Am, +,334, +,17th, +,1st, +, +, +,2015, +, ,Extreme Speed Motorsports, +, ,Scott Sharp, +, ,Ryan Dalziel, +,Ligier JS P2,-,Honda, +,LMP2, +,329, +,28th, +,10th, +, +, +,2016, +, ,Abu Dhabi-Proton Racing, +, Khaled Al Qubaisi, +, ,Patrick Long, +,Porsche 911 RSR, +,GTE, +Am, +,330, +,28th, +,3rd, +, +, +,2017, +, ,Vaillante Rebellion, +, ,Nelson Piquet Jr., +, ,Mathias Beche, +,Oreca 07,-,Gibson, +,LMP2, +,364, +,DSQ, +,DSQ, +, +, +,Complete FIA World Endurance Championship results,[,edit,], +, +, +,Year, +,Entrant, +,Class, +,Car, +,Engine, +,Tyres, +,1, +,2, +,3, +,4, +,5, +,6, +,7, +,8, +,9, +,Rank, +,Points, +, +, +,2013, +,OAK Racing, +,LMP2, +,Morgan LMP2, +,Nissan, VK45DE 4.5 L V8, +,D, +,SIL, +,2, +,SPA, +,2, +,LMS, +,2, +,SÃO, +,6, +,COA, +,6, +,FUJ, +,3, +,SHA, +,2, +,BHR, +,2, +, +,2nd, +,132.5, +, +, +,2014, +,Aston Martin Racing, +,LMGTE, +Am, +,Aston Martin Vantage V8 GTE, +,Aston Martin, 4.5 L V8, +,M, +,SIL, +,1, +,SPA, +,2, +,LMS, +,1, +,COA, +,2, +,FUJ, +,1, +,SHA, +,2, +,BHR, +,1, +,SÃO, +,2, +, +,1st, +,198, +, +, +,2015, +,Extreme Speed Motorsports, +,LMP2, +,HPD ARX-03b, +,Ligier JS P2, +,Honda, HR28TT 2.8 L Turbo V6, +,D, +,SIL, +,EX, +,SPA, +,8, +,LMS, +,5, +,NÜR, +,6, +,COA, +,4, +,FUJ, +,4, +,SHA, +,Ret, +,BHR, +,7, +, +,7th, +,62, +, +, +,2016, +,Abu Dhabi-Proton Racing, +,LMGTE, +Am, +,Porsche 911 RSR, +,Porsche, 4.0 L Flat-6, +,M, +,SIL, +,5, +,SPA, +,6, +,LMS, +,2, +,NÜR, +,4, +,MEX, +,1, +,COA, +,5, +,FUJ, +,5, +,SHA, +,4, +,BHR, +,1, +,2nd, +,151, +, +, +,2017, +,Vaillante Rebellion, +,LMP2, +,Oreca 07, +,Gibson, GK-428 4.2 litre ,V8, +,D, +,SIL, +,9, +,SPA, +4, +,LMS, +,DSQ, +,NÜR, +,4, +,MEX, +,5, +,COA, +,2, +,FUJ, +,DSQ, +,SHA, +,3, +,BHR, +,3, +,8th, +,85, +, +, +,Recognition,[,edit,], +, +,2005: Won Best Hacker of the Year 2005 at ,OSCON, from ,Google, and ,O'Reilly, for the work on Rails.,[11], +,2006: Accepted the ,Jolt Award, of product excellence for Rails 1.0.,[11], +,2012: Named ,ALMS, Rookie of the year.,[12], +, +,See also,[,edit,], +, +,Basecamp, +, +,References,[,edit,], +, +, +,^, ,David Heinemeier Hansson, ed. (October 2001). ,""Turning Another Year (Loud Thinking)"",. Archived from ,the original, on 1 November 2007,. Retrieved ,2 October, 2007,., , +,^, ,The home screens of 37signals, +,^, ,DHH, interviewed on the TV show Triangulation on the ,TWiT.tv, network, +,^, ,Daily Rush, +,^, ,""Google-O'Reilly Open Source Awards - Hall of Fame"",. Google Code,. Retrieved ,2010-09-03,. ,Best Hacker: David Heinemeier Hansson (Ruby on Rails and 37Signals), , +,^, ,Staff writer (March 9, 2014). ,""David Heinemeier Hansson: Basecamp, Remote and the next big thing"",. eTalks,. Retrieved ,April 30,, 2015,., ,[,permanent dead link,], +,^, ,""DHH weblog"",. Retrieved ,2012-07-02,., , +,^, ,Mercier, Laurent (2012-04-18). ,""L'équipage de la Morgan 2012 LMP2 #35 affiche complet"", [The crew of the #35 LMP2 2012 Morgan sold out]. ,Endurance-Info, (in French). Infomaniak Network SA,. Retrieved ,2012-04-18,., , +,^, ,""Pagani Zonda HH"",. secretentourage.com. August 2010,. Retrieved ,2011-01-02,., , +,^, ,Gary Bonanni (Oct 7, 2014). ,""One-of-a-Kind Koenigsegg Agera HH Spotted"",. ,carbuzz.com,. Retrieved ,7 October, 2014,., , +,^ ,a, ,b, ,About David Heinemeier Hansson, ,Archived, 2011-06-02 at the ,Wayback Machine,.. Loudthinking.com. Retrieved on 2014-05-30., +,^, ,""Archived copy"",. Archived from ,the original, on 2013-06-02,. Retrieved ,2013-06-23,., , +, +, +,External links,[,edit,], +, +,Loud Thinking, - Hansson's weblog, +,37signals, +,Ruby on Rails, +,Video of David Heinemeier Hansson presentation at Startup School, +,David Heinemeier Hansson - The Pareto Principle and Stoic Philosophy, on Developer on Fire, +,David Heinemeier Hansson interview, on the Inside the Net Podcast, +,Martin Fowler and David Heinemeier Hansson interview, on Hanselminutes Podcast, +,David Heinemeier Hansson interview in Danish, on Builder.dk Podcast, +,Podcast interview with David Heinemeier Hansson, on the Web 2.0 Show, +,Ruby on Rails video,[,permanent dead link,], David Heinemeier Hansson explains Ruby on Rails at the university of Roskilde, in 2004, +,Keynote 2007 - RailsConf Europe 2007 - Berlin, +,RailsConf Keynote, on REST. July 9, 2006, +,The Great Surplus - Keynote at RailsConf 2008 - Portland,[,permanent dead link,], +,Living with legacy software - Keynote at RailsConf Europe 2008 - Berlin, +,FLOSS Weekly podcast 79, and its ,transcription, +,Podcast interview with David Heinemeier Hansson, on This Developer's Life, +, +, +, +,Sporting positions, +, +, +,Preceded by, +,Jamie Campbell-Walter, +,Stuart Hall, +,FIA Endurance Trophy for LMGTE Am Drivers, +,2014, ,with:, +,Kristian Poulsen, +,Succeeded by, +,Aleksey Basov, +,Andrea Bertolini, +Viktor Shaitar, +, +, +, +, +, +,Authority control, +, +, +, +,WorldCat Identities, +,VIAF,: ,24888522, +,LCCN,: ,no2006071728, +,ISNI,: ,0000 0001 1609 5882, +,GND,: ,173789617, +,SELIBR,: ,264350, +,SUDOC,: ,097530417, +,BNF,: ,cb150608725, ,(data), +,BIBSYS,: ,5081149, +,NDL,: ,01034410, +,NKC,: ,stk2007383215, +,BNE,: ,XX4895045, +,CiNii,: ,DA1757643X, +, +, +, +, +, +, + + +, +, +, +, +",David Heinemeier Hansson +" 9 January 2018, at 10:32."," +, +, +, +, +, +, +,This article has multiple issues., Please help ,improve it, or discuss these issues on the ,talk page,. ,(,Learn how and when to remove these template messages,), +, +, +, +, +, +, +, +,This article ,relies too much on ,references, to ,primary sources,. ,Please improve this by adding ,secondary or tertiary sources,., ,(September 2015), ,(,Learn how and when to remove this template message,), +, +, +, +, +, +, +, +, +, +,Some of this article's ,listed sources, ,may not be ,reliable,. ,Please help this article by looking for better, more reliable sources. Unreliable citations may be challenged or deleted., ,(September 2015), ,(,Learn how and when to remove this template message,), +, +, +, +, +, +,(,Learn how and when to remove this template message,), +, +, +, +, +, +, +, +, +, +,This article ,has an unclear citation style,. ,The references used may be made clearer with a different or consistent style of ,citation,, ,footnoting,, or ,external linking,. ,Violates Wikipedia:External links: ""Wikipedia articles may include links to web pages outside Wikipedia (external links), but they should not normally be used in the body of an article.""., ,(November 2017), ,(,Learn how and when to remove this template message,), +, +, +, +, +,Laravel, +, +, +, +, +,Developer(s), +,Taylor Otwell, +, +, +,Initial release, +,June 2011,; 6 years ago, (,2011-06,),[1], +, +, +, +, +, +,Stable release, +, +,5.5.0,[2], / August 30, 2017,; 4 months ago, (,2017-08-30,), +, +, +, +, +, +, +,Repository, +, +, +, +,https://github.com/laravel/framework, +, +, +, +, +, +,Development status, +,Active, +, +, +,Written in, +,PHP, 7,[a], +, +, +,Operating system, +,Cross-platform, +, +, +,Type, +,Web framework, +, +, +,License, +,MIT License, +, +, +,Website, +,laravel,.com, +, +, +,Laravel, is a ,free,, open-source,[4], PHP ,web framework,, created by Taylor Otwell and intended for the development of web applications following the ,model–view–controller, (MVC) ,architectural pattern,. Some of the features of Laravel are a modular ,packaging system, with a dedicated dependency manager, different ways for accessing ,relational databases,, utilities that aid in ,application deployment, and maintenance, and its orientation toward ,syntactic sugar,.,[5],[6],:,2,5–9,[7],[8], +,As of March 2015,[update],, Laravel is regarded as one of the most popular ,PHP, frameworks, together with ,Symfony,, Zend, ,CodeIgniter,, ,Yii2, and others.,[6],:,1,[9], +,The ,source code, of Laravel is hosted on ,GitHub, and licensed under the terms of ,MIT License,.,[10], +, +, +, +,Contents, +, +, +,1, ,History, +, +,1.1, ,Release history, +, +, +,2, ,Features, +, +,2.1, ,Featured packages, +,2.2, ,Artisan CLI, +, +, +,3, ,Conferences, +,4, ,Laravel Partners, +,5, ,See also, +,6, ,Notes, +,7, ,References, +,8, ,Further reading, +,9, ,External links, +, +, +, +,History,[,edit,], +,Taylor Otwell created Laravel as an attempt to provide a more advanced alternative to the CodeIgniter framework, which did not provide certain features such as built-in support for user ,authentication, and ,authorization,. Laravel's first ,beta release, was made available on June 9, 2011, followed by the Laravel 1 release later in the same month. Laravel 1 included built-in support for authentication, ,localisation,, ,models,, ,views,, ,sessions,, routing and other mechanisms, but lacked support for ,controllers, that prevented it from being a true ,MVC, framework.,[1], +,Laravel 2 was released in September 2011, bringing various improvements from the author and community. Major new features included the support for controllers, which made Laravel 2 a fully MVC-compliant framework, built-in support for the ,inversion of control, (IoC) principle, and a ,templating system, called ,Blade,. As a downside, support for third-party ,packages, was removed in Laravel 2.,[1], +,Laravel 3 was released in February 2012 with a set of new features including the ,command-line interface, (CLI) named ,Artisan,, built-in support for more ,database management systems,, database migrations as a form of ,version control, for database layouts, support for handling ,events,, and a packaging system called ,Bundles,. An increase of Laravel's userbase and popularity lined up with the release of Laravel 3.,[1], +,Laravel 4, codenamed ,Illuminate,, was released in May 2013. It was made as a complete rewrite of the Laravel framework, migrating its layout into a set of separate packages distributed through ,Composer,, which serves as an ,application-level package manager,. Such a layout improved the extensibility of Laravel 4, which was paired with its official regular release schedule spanning six months between minor ,point releases,. Other new features in the Laravel 4 release include ,database seeding, for the initial population of databases, support for ,message queues,, built-in support for sending different types of email, and support for delayed deletion of database records called ,soft deletion,.,[1],[11],:,18–19, +,Laravel 5 was released in February 2015 as a result of internal changes that ended up in renumbering the then-future Laravel 4.3 release. New features in the Laravel 5 release include support for scheduling periodically executed tasks through a package called ,Scheduler,, an abstraction layer called ,Flysystem, that allows remote storage to be used in the same way as local ,file systems,, improved handling of package assets through ,Elixir,, and simplified externally handled authentication through the optional ,Socialite, package. Laravel 5 also introduced a new internal ,directory tree, structure for developed applications.,[6],:,13–14,[12], +,Laravel 5.1, released in June 2015, is the first release of Laravel to receive ,long-term support, (LTS), with planned availability of ,bug fixes, for two years and ,security patches, for three years. LTS releases of Laravel are planned to be released every two years.,[13], +,Laravel 5.3, released in August 23, 2016, The new features in 5.3 are focused on improving developer speed by adding additional out of the box improvements for common tasks.,[14], ,[15], +,Laravel 5.4, released in January 24, 2017, This release has many new features, like Laravel Dusk, Laravel Mix, Blade Components and Slots, Markdown Emails, Automatic Facades, Route Improvements, Higher Order Messaging for Collections, and many others.,[16], +,Laravel 5.5, released in August 30, 2017, +,Release history,[,edit,], +,For LTS releases, such as Laravel 5.1, bug fixes are provided for 2 years and security fixes are provided for 3 years. These releases provide the longest window of support and maintenance. For general releases, bug fixes are provided for 6 months and security fixes are provided for 1 year.,[17], +, +, +, +,Version, +,Release date, +,Notes, +, +, +,Old version, no longer supported:, 1.0, +,June 2011, +,NA, +, +, +,Old version, no longer supported:, 2.0, +,September 2011, +,NA, +, +, +,Old version, no longer supported:, 3.0, +,February 22, 2012, +,NA, +, +, +,Old version, no longer supported:, 3.1, +,March 27, 2012, +,NA, +, +, +,Old version, no longer supported:, 3.2, +,May 22, 2012, +,NA, +, +, +,Old version, no longer supported:, 4.0, +,May 28, 2013, +,NA, +, +, +,Old version, no longer supported:, 4.1, +,December 11, 2013, +,NA, +, +, +,Old version, no longer supported:, 4.2, +,June 1, 2014, +,NA, +, +, +,Old version, no longer supported:, 5.0, +,February 4, 2015, +,NA, +, +, +,Older version, yet still supported:, 5.1 LTS, +,June 9, 2015, +,NA, +, +, +,Old version, no longer supported:, 5.2, +,December 21, 2015, +,NA, +, +, +,Old version, no longer supported:, 5.3, +,August 23, 2016, +,NA, +, +, +,Older version, yet still supported:, 5.4, +,January 24, 2017, +,NA, +, +, +,Current stable version:, ,5.5 LTS, +,August 30, 2017, +,NA, +, +, +,Future release:, 5.6, +,February, 2018, +,NA, +, +, +, +, +,Legend:, +,Old version, +,Older version, still supported, +,Current stable version, +,Latest preview version, +,Future release, +, +, +,Source: GitHub,[18], +,Features,[,edit,], +,The following features serve as Laravel's key design points (where not specifically noted, descriptions refer to the features of Laravel 3):,[5],[6],:,5–9,[7],[8],[19], +, +,Bundles, provide a modular ,packaging system, since the release of Laravel 3, with bundled features already available for easy addition to applications. Furthermore, Laravel 4 uses Composer as a dependency manager to add framework-agnostic and Laravel-specific PHP packages available from the ,Packagist, repository.,[20], +,Eloquent ORM, (,object-relational mapping,) is an advanced PHP implementation of the ,active record pattern,, providing at the same time internal methods for enforcing constraints on the relationships between ,database, objects. Following the active record pattern, Eloquent ORM presents ,database tables, as ,classes,, with their ,object instances, tied to single ,table rows,.,[21],[22], +,Query builder,, available since Laravel 3, provides a more direct database access alternative to the Eloquent ORM. Instead of requiring ,SQL queries, to be written directly, Laravel's query builder provides a set of classes and ,methods, capable of building queries programmatically. It also allows selectable ,caching, of the results of executed queries.,[23], +,Application logic, is an integral part of developed applications, implemented either by using ,controllers, or as part of the route declarations. The ,syntax, used to define application logic is similar to the one used by ,Sinatra, framework., +,Reverse routing, defines a relationship between the links and routes, making it possible for later changes to routes to be automatically propagated into relevant links. When the links are created by using names of existing routes, the appropriate ,uniform resource identifiers, (URIs) are automatically created by Laravel., +,Restful controllers, provide an optional way for separating the logic behind serving ,HTTP GET, and ,POST, requests., +,Class auto loading, provides automated loading of PHP classes without the need for manual maintenance of inclusion paths. On-demand loading prevents inclusion of unnecessary components, so only the actually used components are loaded., +,View, composers, serve as customizable logical code units that can be executed when a view is loaded., +,Blade, ,templating engine, combines one or more templates with a ,data model, to produce resulting views, doing that by ,transpiling, the templates into cached PHP code for improved performance. Blade also provides a set of its own ,control structures, such as ,conditional statements, and ,loops,, which are internally mapped to their PHP counterparts. Furthermore, Laravel services may be called from Blade templates, and the templating engine itself can be extended with custom directives.,[24],[25], +,IoC containers, make it possible for new objects to be generated by following the ,inversion of control, (IoC) principle, in which the framework calls into the application- or task-specific code, with optional instantiating and referencing of new objects as ,singletons,., +,Migrations, provide a ,version control, system for ,database schemas,, making it possible to associate changes in the application's ,codebase, and required changes in the database layout. As a result, this feature simplifies the ,deployment, and updating of Laravel-based applications.,[26], +,Database seeding, provides a way to populate database tables with selected default data that can be used for application ,testing, or be performed as part of the initial application setup.,[26], +,Unit testing, is provided as an integral part of Laravel,,[11],:,61–62, which itself contains unit tests that detect and prevent ,regressions, in the framework. Unit tests can be run through the provided ,artisan, ,command-line utility,., +,Automatic pagination, simplifies the task of implementing pagination, replacing the usual manual implementation approaches with automated methods integrated into Laravel., +,Form request, is a feature of Laravel 5 that serves as the base for ,form, input validation by internally binding ,event, listeners, resulting in automated invoking of the form validation methods and generation of the actual form.,[27], +,Homestead, - a ,Vagrant, ,virtual machine, that provides Laravel developers with all the tools necessary to develop Laravel straight out of the box, including, ,Ubuntu,, ,Gulp, , Bower and other development tools that are useful in developing full scale web applications.,[28], +, +,Featured packages,[,edit,], +,Ready-to-use bundles provided by Laravel through Composer and Packagist include the following:,[3], +, +,Cashier,, introduced in Laravel 4.2, provides an interface for managing subscription billing services provided by ,Stripe,, such as handling ,coupons, and generating ,invoices,., +,SSH,, introduced in Laravel 4.1, allows programmatic execution of ,CLI, commands on remote servers using the ,Secure Shell, (SSH) as an encrypted ,network protocol,., +,Scheduler,, introduced in Laravel 5.0, is an addition to the Artisan that allows programmatic scheduling of periodically executed tasks. Internally, Scheduler relies on the ,cron, daemon to run a single Artisan job that, in turn, executes the configured tasks., +,Flysystem,, introduced in Laravel 5.0, is a ,file system, abstraction layer that allows local file systems and ,cloud,-based storage services provided by ,Amazon S3, and ,Rackspace Cloud, to be used transparently and in the same way., +,Socialite,, introduced in Laravel 5.0 as an optional package, provides simplified mechanisms for authentication with different ,OAuth, providers, including ,Facebook,, ,Twitter,, ,Google,, ,GitHub, and ,Bitbucket,.,[6],:,13, +, +,Artisan CLI,[,edit,], +,Laravel's ,command-line interface, (CLI), called ,Artisan,, was initially introduced in Laravel 3 with a limited set of capabilities. Laravel's later migration to a Composer-based architecture allowed Artisan to incorporate different components from the ,Symfony, framework, resulting in the availability of additional Artisan features in Laravel 4.,[11],:,73–83,[29], +,The features of Artisan are mapped to different subcommands of the ,artisan, command-line utility, providing functionality that aids in managing and building Laravel-based applications. Common uses of Artisan include managing database migrations and seeding, publishing package assets, and generating ,boilerplate code, for new controllers and migrations; the latter frees the developer from creating proper code ,skeletons,. The functionality and capabilities of Artisan can also be expanded by implementing new custom commands, which, for example, may be used to automate application-specific recurring tasks.,[11],:,73–83,[29], +,Server requirements, +,The Laravel framework has a few system requirements. Of course, all of these requirements are satisfied by the Laravel Homestead virtual machine, so it is highly recommended that you use Homestead as your local Laravel development environment., +,However, if you are not using Homestead, you will need to make sure your server meets the following requirements:, +, + ,• PHP >= 7.0.0, + • OpenSSL PHP Extension + • PDO PHP Extension + • Mbstring PHP Extension + • Tokenizer PHP Extension + • XML PHP Extension +, +,Conferences,[,edit,], +,Laracon, is the official Laravel conference centered around the Laravel framework, covering its development, uses, and related general ,software development, topics. Laracon has taken place in the ,United States,, ,Europe, and online in the past.,[30],[31], Typically, the conference happens in the ,United States, and ,Europe, every year. 2017 was the first year a Laracon was held as an online event only. As of March 2017, there are plans for more Laracons to be held online in the future.,[32], Each year the conference has a different variety of sponsors and organizers, but Laravel, Laravel News and UserScape are usually the primary organizers. As of March 2017,[update],, the following Laracons have been held or are announced:, +, +, +, +, +Taylor Otwell at the 2013 US Laracon, +, +, +, +, +,Date, +,Location, +, +, +,February 22–23, 2013, +,Washington, D.C., +, +, +,August 30–31, 2013,[33], +,Amsterdam, +, +, +,May 15–16, 2014, +,New York City, +, +, +,August 28–30, 2014,[34], +,Amsterdam, +, +, +,August 11–12, 2015,[35], +,Louisville, Kentucky, +, +, +,August 25–26, 2015,[36], +,Amsterdam, +, +, +,July 27–29, 2016,[37], +,Louisville, Kentucky, +, +, +,August 23–24, 2016,[38], +,Amsterdam, +, +, +,March 8, 2017,[39], +,Online, +, +, +,July 25–26, 2017,[40], +,New York City, +, +, +,August 28–30, 2017,[41],[42], +,Amsterdam, +, +, +,Laravel Partners,[,edit,], +,On April 7, 2017, Taylor Otwell announced the Partners section of the Laravel website. The intention was to provide the Laravel community a recommended list of trusted companies who provide best-in-class Laravel development and guidance.,[43], As of September, 2017, the current list of Laravel Partners includes, +, +,Vehikl, +,Tighten Co., +,Kirschbaum Development Group, +, +,See also,[,edit,], +, +, +,Computer programming portal, +,Free software portal, +, +, +, +,Comparison of web frameworks, +,Comparison of web template engines, +, +,Notes,[,edit,], +, +, +, +,^, ,PHP version 5.3.7 or newer is required for Laravel versions 4.1 and older, Laravel 4.2 and 5.0 require at least PHP 5.4, while Laravel 5.1 requires PHP 5.5.9 or newer. Laravel 5.5 requires PHP 7.0.0 or newer.,[3], +, +, +, +,References,[,edit,], +, +, +,^ ,a, ,b, ,c, ,d, ,e, ,Maks Surguy (July 27, 2013). ,""History of Laravel PHP framework, Eloquence emerging"",. ,maxoffsky.com,. Retrieved ,May 10,, 2015,., , +,^, ,""laravel/framework: Release v5.5.0"",. ,github.com,. August 30, 2017,. Retrieved ,August 30,, 2017,., , +,^ ,a, ,b, ,""Laravel documentation (version 5.3): Release notes"",. ,laravel.com,. Retrieved ,August 29,, 2015,., , +,^, ,""The real-time community site Voten goes open-source"",., , +,^ ,a, ,b, ,Daniel Gafitescu (June 6, 2013). ,""Goodbye CodeIgniter, Hello Laravel"",. ,sitepoint.com,. Retrieved ,December 21,, 2013,., , +,^ ,a, ,b, ,c, ,d, ,e, ,Martin Bean (April 2015). ,Laravel 5 Essentials,. ,books.google.com,. ,Packt,. ,ISBN, ,978-1785283017,. Retrieved ,September 2,, 2015,., , +,^ ,a, ,b, ,""Laravel Documentation (versions 3.0–3.2.14)"",. ,three.laravel.com,. Retrieved ,August 30,, 2014,., , +,^ ,a, ,b, ,""Laravel Documentation (version 4.2)"",. ,laravel.com,. Retrieved ,August 30,, 2014,., , +,^, ,Bruno Skvorc (March 28, 2015). ,""Best PHP Framework for 2015 – SitePoint Survey Results"",. ,sitepoint.com,. Retrieved ,June 14,, 2015,., , +,^, ,""laravel/laravel: laravel/readme.md at master"",. ,github.com,. April 22, 2015,. Retrieved ,May 10,, 2015,., , +,^ ,a, ,b, ,c, ,d, ,Raphaël Saunier (January 2014). ,Getting Started with Laravel 4,. ,worldcat.org,. ,Packt,. ,ISBN, ,978-1783287031,. Retrieved ,September 2,, 2015,., , +,^, ,Eric Barnes (January 30, 2015). ,""Laravel 5"",. ,laravel-news.com,. Retrieved ,May 10,, 2015,., , +,^, ,Eric L. Barnes (June 9, 2015). ,""Laravel 5.1 is released"",. ,laravel-news.com,. Retrieved ,June 14,, 2015,., , +,^, ,Eric L. Barnes (August 23, 2016). ,""Laravel  5.3 is now released"",. ,laravel-news.com,. Retrieved ,August 23,, 2016,., , +,^, ,David oscar (August 23, 2016). ,""What's new in laravel  5.3"",. ,digitalsoft.in,. Retrieved ,August 23,, 2016,., , +,^, ,""Laravel 5.4 Is Now Released"",. ,Laravel News,. 2017-01-24,. Retrieved ,2017-02-21,., , +,^, ,""Laravel Documentation: Releases"",. Laravel,. Retrieved ,February 26,, 2017,., , +,^, ,""Github: Laravel"",. Laravel,. Retrieved ,February 26,, 2017,., , +,^, ,Jeffrey Way (November 28, 2012). ,""Why Laravel is Taking the PHP Community by Storm"",. ,code.tutsplus.com,. Retrieved ,May 9,, 2015,., , +,^, ,""Laravel documentation (version 4.2): Package development"",. ,laravel.com,. Retrieved ,August 30,, 2014,., , +,^, ,""Eloquent ORM in Laravel: What and Why!"",. ,enukesoftware.com,. Retrieved ,December 19,, 2014,., , +,^, ,""Develop Faster with the Laravel PHP Framework"",. ,developer.com,. Retrieved ,April 17,, 2015,., , +,^, ,""Laravel documentation (version 4.0): Query builder"",. ,laravel.com,. Retrieved ,April 27,, 2015,., , +,^, ,""Laravel documentation (version 5.1): Blade Templates"",. ,laravel.com,. Retrieved ,June 10,, 2015,., , +,^, ,Dayle Rees (2014). ,""Laravel Blade engine"",. ,daylerees.com,. Retrieved ,June 10,, 2015,., , +,^ ,a, ,b, ,""Laravel documentation (version 5.0): Migrations and seeding"",. ,laravel.com,. Retrieved ,April 27,, 2015,., , +,^, ,Manmeet Anand. ,""Creating a Contact Form in Laravel 5 Using the Form Request Feature!"",. ,tisindia.com,. Retrieved ,March 2,, 2015,., , +,^, ,""Laravel Homestead - Laravel the PHP Framework for Web artisans"",. Retrieved ,30 October, 2016,., , +,^ ,a, ,b, ,Jason Lewis (February 28, 2013). ,""Your One-Stop Guide to Laravel Commands"",. ,code.tutsplus.com,. Retrieved ,May 9,, 2015,., , +,^, ,""Laracon Online | The official worldwide Laravel online conference"",. ,laracon.net,. Retrieved ,2017-03-24,., , +,^, ,""Search Results"",. ,laravel-news.com,. Retrieved ,2017-03-24,., , +,^, ,""Supporting Laravel"",. ,Medium,. 2017-03-13,. Retrieved ,2017-03-24,., , +,^, ,""Laracon EU 2013"",. ,laracon.eu,. Retrieved ,January 2,, 2014,., , +,^, ,""Laracon EU 2014"",. ,laracon.eu,. Retrieved ,August 30,, 2014,., , +,^, ,Eric L. Barnes (January 15, 2015). ,""Laracon 2015 will be in Louisville KY"",. ,laravel-news.com,. Retrieved ,July 9,, 2015,., , +,^, ,""Laracon EU 2015"",. ,laracon.eu,. Retrieved ,July 9,, 2015,., , +,^, ,Eric L. Barnes (January 6, 2016). ,""Laracon tickets are now on sale"",. ,laravel-news.com,. Retrieved ,January 7,, 2016,., , +,^, ,Eric L. Barnes (January 7, 2016). ,""Laracon EU tickets on sale"",. ,laravel-news.com,. Retrieved ,April 7,, 2016,., , +,^, ,""Announcing Laracon Online"",. ,Laravel News,. 2017-02-06,. Retrieved ,2017-03-24,., , +,^, ,""Laracon 2017 – Location and dates have been announced"",. ,Laravel News,. 2016-11-09,. Retrieved ,2017-03-24,., , +,^, ,WebEngineers. ,""Announcing Laracon EU 2017 the official European Laravel conference"",. ,Laracon EU 2017,. Retrieved ,2017-03-24,., , +,^, ,""Laracon EU 2017 is Announced"",. ,Laravel News,. 2017-01-16,. Retrieved ,2017-03-24,., , +,^, ,Otwell, Taylor (2017-04-07). ,""Laravel Partners"",. ,Taylor Otwell,. Retrieved ,2017-09-04,., , +, +, +,[1], +,Further reading,[,edit,], +, +,Laravel Design Patterns and Best Practices, Packt, ,ISBN, ,978-1783287987,, July 2014, by Arda Kılıçdağı and H. İbrahim Yilmaz, +, +,External links,[,edit,], +, +, +, +,Wikimedia Commons has media related to ,Laravel,., +, +, +, +,Official website, +, +, +, +, +, +, +, +, +,v, +,t, +,e, +, +, +,PHP, +, +, +, +,People, +, +, +, +,Andi Gutmans, +,Rasmus Lerdorf, +,Zeev Suraski, +, +, +, +, +, +, +, +, +,Resources, +, +, +, +,Accelerator, (,List,), +,Composer, +,Editors, +,Libraries, +,PEAR, +, +, +, +, +, +,Implementations, +, +, +, +,HHVM, +,HPHPc, +,Parrot, +,Phalanger, +,Project Zero, +,Quercus, +,Zend Engine, +, +, +, +, +, +,Web frameworks, +, +, +, +,CakePHP, +,CodeIgniter, +,Drupal, +,eZ Publish, +,Fat-Free, +,FuelPHP, +,Horde, +,Joomla!, +,Laravel, +,Lithium, +,Midgard, +,MODx, +,Nette Framework, +,Phalcon, +,Pop PHP, +,PRADO, +,Qcodo, +,Silex, +,SilverStripe, +,Symfony, +,TYPO3, +,WordPress, +,Xaraya, +,XOOPS, +,Yii, +,Zend Framework, +,Zeta Components, +, +, +, +, +, +,Testing, +, +, +, +,Behat, +,PHPUnit, +,PHP Unit Testing Framework, +,Lime, (,Symfony,), +, +, +, +, +, +,ORMs, +, +, +, +,Doctrine, +,Propel, +, +, +, +, +, +,IDEs, +, +, +, +,Aptana, +,Codelobster, +,Eclipse PDT, +,NetBeans, +,PHPEdit, +,PhpStorm, +,RadPHP, +,Zend Studio, +, +, +, +, +, +,Widget toolkit, +, +, +, +,PHP-GTK, +,PHP-Qt, +,wxPHP, +, +, +, +, +, +, +, +, +, ,Category, +, ,Commons, +, +, +, +, +, +, +, +, +, +, +, +, +,v, +,t, +,e, +, +, +,Web frameworks, +, +, +, +, +, +, +,Comparison, +, +, +, +, +, +,C++, +, +, +, +,CppCMS, +,Wt, +, +, +, +, +, +,CLI, +, +, +, +,ASP.NET, +, +,Core, +,AJAX, +,Dynamic Data, +,MVC, +,Razor, +,Web Forms, +, +, +,DNN, +,BFC, +,MonoRail, +,OpenRasta, +,Umbraco, +, +, +, +, +, +,ColdFusion, +, +, +, +,CFWheels, +,ColdBox Platform, +,ColdSpring, +,Fusebox, +,Mach-II, +,Model-Glue, +, +, +, +, +, +,Common Lisp, +, +, +, +,Caveman2, +,CL-HTTP, +,UnCommon Web, +,Weblocks, +, +, +, +, +, +,Haskell, +, +, +, +,Happstack, +,Yesod, +,Snap, +, +, +, +, +, +,Java, +, +, +, +,AppFuse, +,Flexive, +,Grails, +,GWT, +,ICEfaces, +,ItsNat, +,JavaServer Faces, +,JHipster, +,Jspx, +,JWt, +,OpenXava, +,Play, +,Reasonable Server Faces, +,Remote Application Platform, +,RIFE, +,Seam, +,Sling, +,Spring, +,Stripes, +,Struts, +,Tapestry, +,Vaadin, +,Vert.x, +,WebWork, +,Wicket, +,WaveMaker, +,ZK, +, +, +, +, +, +,JavaScript, +, +, +, +,Ample SDK, +,Angular,/,AngularJS, +,Backbone.js, +,Chaplin.js, +,Closure, +,Dojo Toolkit, +,Ember.js, +,Ext JS, +,jQuery, +,Meteor, +,MooTools, +,Node.js, +,OpenUI5, +,Prototype, +,React, +,Rico, +,script.aculo.us, +,Sencha Touch, +,SproutCore, +,Wakanda, +, +, +, +, +, +,Perl, +, +, +, +,Catalyst, +,Dancer, +,Mason, +,Maypole, +,Mojolicious, +,WebGUI, +, +, +, +, +, +,PHP, +, +, +, +,CakePHP, +,CodeIgniter, +,Drupal, +,Fat-Free, +,FuelPHP, +,Flow, +,Gyroscope, +,Horde, +,Kohana, +,Laravel, +,Lithium, +,Midgard, +,MODX, +,Nette, +,Phalcon, +,Pop PHP, +,PRADO, +,ProcessWire, +,Qcodo, +,Silex, +,SilverStripe, +,Symfony, +,TYPO3, +,Xaraya, +,XOOPS, +,Yii, +,Zend Framework, +, +, +, +, +, +,Python, +, +, +, +,BlueBream, +,CherryPy, +,Django, +,Flask, +,Grok, +,Nevow, +,Pyjs, +,Pylons, +,Pyramid, +,Quixote, +,TACTIC, +,Tornado, +,TurboGears, +,web2py, +,Webware, +,Zope 2, +, +, +, +, +, +,Ruby, +, +, +, +,Camping, +,Merb, +,Padrino, +,Ruby on Rails, +,Sinatra, +, +, +, +, +, +,Scala, +, +, +, +,Lift, +,Play, +,Scalatra, +, +, +, +, +, +,Smalltalk, +, +, +, +,AIDA/Web, +,Seaside, +, +, +, +, +, +,Other languages, +, +, +, +,Vibe.d, (,D,), +,Application Express, (,PL/SQL,), +,Grails, (,Groovy,), +,Kepler, (,Lua,), +,Rocket, (,Rust,), +,OpenACS, (,Tcl,), +,Phoenix, (,Elixir,), +,SproutCore, (,JavaScript,-,Ruby,), +,Yaws, (,Erlang,), +, +, +, +, +, +, +, +, +,^, ,http://www.mindinventory.com/blog/laravel-the-best-php-framework-for-web-development/, +, +, + + +, +, +, +, +",Laravel +" 17 January 2018, at 04:00."," +,DotNetNuke, +, +, +, +, +,Developer(s), +,DNN Corporation, ,[1], +, +, +, +, +, +,Stable release, +, +,9.1.1,[2], +, +, +, +, +, +, +,Development status, +,Active, +, +, +,Operating system, +,Microsoft Windows, or ,Cloud, +, +, +,Platform, +,ASP.NET, or ,Cloud,[3], +, +, +,Type, +,Web framework, +, +, +,License, +,MIT,[4], +, +, +,Website, +,www,.dnnsoftware,.com, +, +, +,DNN, (formerly ,DotNetNuke,) is a ,web content management system, based on ,Microsoft .NET,. The DNN Platform Edition is ,open source,., +,DNN is written in ,C#,, though it existed for many years as a ,VB.NET, project.,[5],[6], It is distributed under both a Community Edition ,MIT, license ,[4], and commercial proprietary licenses as DNN Evoq Content and DNN Evoq Engage editions., +, +, +, +,Contents, +, +, +,1, ,Editions, +,2, ,Architecture, +, +,2.1, ,Modules, +,2.2, ,Skins, +, +, +,3, ,Hosting, +,4, ,Developer ecosystem community, +,5, ,Project history, +,6, ,See also, +,7, ,References, +,8, ,External links, +, +, +, +,Editions,[,edit,], +,DNN Platform (formerly ""DotNetNuke Community Edition"" ,content management system,) is open source software that is intended to allow management of websites without much technical knowledge, and to be extensible through a large number of third-party apps to provide functionality not included in the ,DNN core modules,. ,Skins, can be used to change the look of a website using DNN., +,There are two commercial editions of the software with increased functionality compared to DNN Platform, and technical support. The DotNetNuke ,Professional Edition, was introduced in February 2009 with version 4.9. In July 2013, DotNetNuke Professional Edition was renamed Evoq Content.,[7], In addition, DotNetNuke Enterprise Edition was renamed Evoq Content: Enterprise.,[8], Evoq version 9.0 was released in December 2016.,[9], +,Architecture,[,edit,], +, +, +, +, +DNN uses a three-tier architecture model., +, +, +,DotNetNuke uses a three-tier architecture model with a core framework providing support to the extensible modular structure., +,While traditionally DNN focused on providing server side functionality, recent projects strive to enhance client side experiences - along with the rest of the industry.,[10], In recent years DNN migrated from using exclusively ,Web Forms, to also allowing ,Model View Controller, and ,Single-page application, architectures.,[11], In the future, DNN faces the challenge of moving from ,ASP.NET, 4.6 to the cross-platform free and open source ,.NET Core,., +,DNN can be extended using 3rd-party modules and providers that add functionality at the server or client side. The appearance of individual pages and sites can be customized using skins.,[12], +,Modules,[,edit,], +, +, +, +, +DotNetNuke modules., +, +, +,The default functionality of DNN can be expanded by adding third-party modules, either from an existing module store,,[13], from 3rd party authors,,[14], or through ,in-house development, of custom functionality.,[15], The DNN framework provides basic functionality such as ,security,, user administration, and ,content management,, while modules are used to tailor the web site for specific deployment needs.,[16], +,A set of primary modules are included with the core DNN distribution. These modules provide the functionality required to create an e-commerce system, an intranet, a public web site or a custom web application. They are maintained by a volunteer team community. In 2015 and 2016 most projects were moved from the DotNetNuke Community Forge,[17], to GitHub.,[18], +,Web pages have skins which define regions of a page (plus their appearance) where page editors can place modules (or extensions) made available by site administrators. Pages and modules can inherit or set custom access permissions that define which groups of users can view or edit each item., +,Module can be created in various ways: compiled modules use the Web Application Project model and are written in C# or VB.NET,,[19], dynamic modules use the Web Site Project model, and ,Razor, modules which use a C# or VB.NET scripting language.,[20], +,Skins,[,edit,], +,A skinning architecture provides a ,separation of presentation and content,, enabling a web designer to develop skins without requiring any specialist knowledge of development in ASP.NET: only knowledge of ,HTML, and an understanding of how to prepare and package the skins themselves is required. Skins consist of basic HTML files with placeholders (,tokens,) for content, menus and other functionality, along with support files such as images, ,style sheets, and ,JavaScript,, packaged in a ,ZIP file,.,[21], +,Upon Microsoft's release of the ,.NET Framework version 2,, Microsoft had included functionality known as master pages. The principal idea behind master pages was to encourage ,code recycling, and consistent design and aesthetics throughout a site by creating a master page with placeholders, which at ,runtime, would be ,compiled, and replaced by content., +,Like modules, skins, can be uploaded and automatically installed through the administration pages. If the compiled skin does not contain an ASP.NET user control file, then the DNN skinning engine builds one based on various tokens included in the HTML file which refer to various sections, placeholders and/or modules of a DNN-produced page. Modern skins incorporate CSS3 and HTML5,[22], with many authors' skins supporting ,Responsive web design,, various ,JavaScript libraries,. With no credentialing, a skin's quality may vary, but often trial periods are available to evaluate functionality., +,Hosting,[,edit,], +,DNN 7.0 and above has a minimum requirement of Windows Vista, ,SQL Server, 2008, and ,.NET, 4.0 and ,IIS, 7+. These product's latest versions are supported.,[23], As of version 6.0, DNN can also be installed in an ,Azure, ,cloud computing, environment.,[24], Numerous web hosting companies offer DNN as an offering, and a 1 step installation process is available through Microsoft.,[25], However DNN's requirement for an IIS medium trust environment has prevented broader adoption,[26], among some mainstream hosting companies., +,Developer ecosystem community,[,edit,], +,DNNSoftware.com has over 1 million registered members as of November 2013 and is used on some 750,000 websites globally.,[27], Support for the Community Edition of DotNetNuke is provided by community members and developers can participate in the open-source project on GitHub.,[28], +,API, reference documents for modules,[29], and skins,[30], are available, although as of 2013, some documentation was still available only in task-oriented form.,[31], A Wiki has been created to address this weakness, with 400 wiki pages as of May 2014.,[32], +,Project history,[,edit,], +,The DotNetNuke application originally evolved out of another project, the IBuySpy Workshop.,[33], The IBuySpy Workshop application had been created by Shaun Walker ,[34], as an enhancement to the IBuySpy Portal that started as a sample application for the ,.NET Framework,. Early versions of DotNetNuke were released by Walker's company, Perpetual Motion Inc, while later development was expanded by the open source community.,[,citation needed,], +,The name DotNetNuke was coined by Walker by combining the term ,.NET, with the word ""nuke"", which had been popular with pre-existing frameworks such as ,PHP-Nuke, and PostNuke.,[35], The term DotNetNuke and DNN are registered trademarks in the US (Search USPTO,[36],) and Canada.,[37],[38], +,In September 2006, four members of the project's board of directors formed a corporation to oversee the development of the project. The new DotNetNuke Corporation was co-founded by Walker,,[39], Joe Brinkman,,[40], Nik Kalyani,,[41], and Scott Willhite,[42], and replaced Perpetual Motion Interactive Systems Inc. as the corporate entity behind the project.,[43], +,On November 25, 2008, DotNetNuke announced ,Series A, financing from Sierra Ventures and ,August Capital,, and in February 2009, after hiring Navin Nagiah as CEO, a Professional Edition version of DotNetNuke has been released for business and enterprise customers. In February 2010 DotNetNuke announced a Series B financing from Sierra Ventures, ,August Capital,, and Pelion Venture Partners.,[44], +,In August 2009 a partner program was launched by DotNetNuke Corporation, aimed at providing support to the web design and development companies that build web sites using DotNetNuke. DotNetNuke Corporation also announced the acquisition of Snowcovered, an online market for DotNetNuke modules, skins, services and related products.,[45], +,In October 2009, the 2009 Open Source CMS Market Share Report concluded that DotNetNuke was the leading .NET-based open source web content management system.,[46], +,In 2013, the company was renamed to ,DNN Corporation,.,[47], +,See also,[,edit,], +, +,List of content management systems, (CMS), +, +,References,[,edit,], +, +, +,^, ,""Web CMS - Online Community Software - DNN (DotNetNuke)"",. ,dnnsoftware.com,., , +,^, ,""Releases · dnnsoftware_Dnn.Platform"",. ,GitHub,. GitHub,. Retrieved ,27 September, 2017,., , +,^, ,Pranav Singh (2013-06-04). ,""Deploying DotNetNuke on Windows Azure"",. CodeProject,. Retrieved ,2017-04-05,., , +,^ ,a, ,b, ,""DNN CMS Platform - License"",. ,Dotnetnuke.codeplex.com,. Retrieved ,2017-04-05,., , +,^, ,""DotNetNuke Switches to C# !! >"",. DNN Software. 2011-02-28,. Retrieved ,2017-04-05,., , +,^, ,a (2007-05-11). ,""A conversion of the popular DotNetNuke web application to C#"",. CodeProject,. Retrieved ,2017-04-05,., , +,^, ,""DNN Expands Product Suite, Services and SaaS Offering With DNN Evoq"",. DNN Corp,. Retrieved ,14 Aug, 2013,., , +,^, ,Mosher, Barb (2013-07-09). ,""DotNetNuke Rebrands to DNN Evoq, Focuses on Business Solutions + Platform"",. ,Cmswire.com,. Retrieved ,2017-04-05,., , +,^, ,""New CMS Features in Evoq 9"",. ,DNNSoftware,. DNN Corp,. Retrieved ,6 March, 2017,., , +,^, ,""Client Resource Management API"",. ,Dnnsoftware.com,. Retrieved ,2017-04-05,., , +,^, ,""DNN Loves MVC: 1 - Introduction"",. ,Charlesnurse.com,. 2015-03-28,. Retrieved ,2017-04-05,., , +,^, ,""DotNetNuke - the easy way to an ASP.NET website - .NET tutorial"",. Developer Fusion. 2010-06-28,. Retrieved ,2017-04-05,., , +,^, ,""The Official DNN Store - Modules, Skins and Extensions"",. ,Store.dnnsoftware.com,. 2017-02-11,. Retrieved ,2017-04-05,., , +,^, ,""DNN Community"",. ,Github.com,. Retrieved ,2017-04-05,., , +,^, ,""DotNetNuke 4 - Module Developers Guide - Chapter 1"",. ,Adefwebserver.com,. Retrieved ,2017-04-05,., , +,^, ,""Amazon.com: dnn and dotnetnuke"",. ,Smile.amazon.com,. Retrieved ,2017-04-05,., , +,^, ,""NET Forge CMS, Extensible CMS - DNN Software Forge"",. ,Dotnetnuke.com,. 2017-01-28,. Retrieved ,2017-04-05,., , +,^, ,""Why DNN Community Extensions have Moved to GitHub"",. ,Github.com,. 2015-02-20,. Retrieved ,2017-04-05,., , +,^, ,""DotNetNuke Development | DNN Developer | DNN Experts, DNN Module Development, DNN Skins India"",. ,Swayamsoft.com,. Retrieved ,2017-04-05,., , +,^, ,""Build CMS, Building a Product Roadmap, CMS Development Tools"",. ,Dnnsoftware.com,. 2017-01-28,. Retrieved ,2017-04-05,., , +,^, ,""Top 5 DotNetNuke Manifest file Module Packaging Tips"",. iFinity,. Retrieved ,2017-04-05,., , +,^, ,""How to Create a Responsive HTML5 Skin for DotNetNuke"",. ,Dnncreative.com,. Retrieved ,2017-04-05,., , +,^, ,""DNN Cloud Demo - Install DNN Software | DNN DotNetNuke"",. ,Dnnsoftware.com,. 2017-01-28,. Retrieved ,2017-04-05,., , +,^, ,""DotNetNuke in Azure Cloud"",. Elinext. 2012-04-14,. Retrieved ,2017-04-05,., , +,^, ,""Microsoft Web Platform"",. ,Microsoft.com,. Retrieved ,2017-04-05,., , +,^, ,""Installing DotNetNuke 4.9.0 on Medium Trust Webservers"",. ,Programmersanonymous.net,. Retrieved ,2017-04-05,., , +,^, ,""DNN CMS Platform - Home"",. ,Dotnetnuke.codeplex.com,. Retrieved ,2017-04-05,., , +,^, ,""dnnsoftware/Dnn.Platform: DNN Corp Platform Repository"",. GitHub,. Retrieved ,2017-04-05,., , +,^, ,""DNN API Endpoint Documentation"",. ,Endpoint.dnnapi.dnnsharp.com,. Retrieved ,2017-04-05,., , +,^, ,""DNN Skinning Reference | DNN Skinning Tool | Dot Net Nuke Skinning"",. ,10poundgorilla.com,. Retrieved ,2017-04-05,., , +,^, ,""About DNN - DNN Company Overview | DNN"",. DotNetNuke,. Retrieved ,2017-04-05,., , +,^, ,""CMS Wiki, Content Management Wiki"",. DNN Software. 2017-01-28,. Retrieved ,2017-04-05,., , +,^, ,""Open Source CMS Project History - DNN CMS & Online Community Software"",. ,dotnetnuke.com,., , +,^, ,Book: Building Websites with DotNetNuke 5, Michael Washington and Ian Lackey, Packt Publishing. Page 14 ""The core team comprises individuals invited to join the team by Shaun Walker, whom they affectionately call the ""Benevolent Dictator""."", +,^, ,""About DNN - DNN Company Overview - DNN (DotNetNuke)"",. ,dotnetnuke.com,., , +,^, ,""Trademark Electronic Search System (TESS)"",. ,uspto.gov,., , +,^, ,""Basic search: 1192080 - Canadian trade-marks database - Intellectual property and copyright - Canadian Intellectual Property Office - Industry Canada"",. ,ic.gc.ca,., , +,^, ,""Basic search: 1256752 - Canadian trade-marks database - Intellectual property and copyright - Canadian Intellectual Property Office - Industry Canada"",. ,ic.gc.ca,., , +,^, ,[1],[,permanent dead link,], +,^, ,[2],[,permanent dead link,], +,^, ,[3],[,permanent dead link,], +,^, ,[4],[,permanent dead link,], +,^, ,""About DNN - DNN Company Overview - DNN (DotNetNuke)"",. ,dotnetnuke.com,., , +,^, ,""DotNetNuke Raises $8 Million"",. PE Hub. 2010-02-09,. Retrieved ,2017-04-05,., , +,^, ,""DotNetNuke Buys Snowcovered"",. ,Silicontap.com,. 2009-08-27,. Retrieved ,2017-04-05,., , +,^, ,""Archived copy"",. Archived from ,the original, on 2010-06-18,. Retrieved ,2010-06-15,., , +,^, ,Shaun Walker. ,""DNN: The Metamorphosis Continues.."", ,DNN Software,., , +, +, +,External links,[,edit,], +, +,DNN Corp., - The official DNN Corp Site, +,Comparison of Evoq with other CMS systems, +,DNN Plus., - DNN Persian Site, +,DotNetNuke Development, - Content Management System, +, +, +, +, +, +, +, +,v, +,t, +,e, +, +, +,Web frameworks, +, +, +, +, +, +, +,Comparison, +, +, +, +, +, +,C++, +, +, +, +,CppCMS, +,Wt, +, +, +, +, +, +,CLI, +, +, +, +,ASP.NET, +, +,Core, +,AJAX, +,Dynamic Data, +,MVC, +,Razor, +,Web Forms, +, +, +,DNN, +,BFC, +,MonoRail, +,OpenRasta, +,Umbraco, +, +, +, +, +, +,ColdFusion, +, +, +, +,CFWheels, +,ColdBox Platform, +,ColdSpring, +,Fusebox, +,Mach-II, +,Model-Glue, +, +, +, +, +, +,Common Lisp, +, +, +, +,Caveman2, +,CL-HTTP, +,UnCommon Web, +,Weblocks, +, +, +, +, +, +,Haskell, +, +, +, +,Happstack, +,Yesod, +,Snap, +, +, +, +, +, +,Java, +, +, +, +,AppFuse, +,Flexive, +,Grails, +,GWT, +,ICEfaces, +,ItsNat, +,JavaServer Faces, +,JHipster, +,Jspx, +,JWt, +,OpenXava, +,Play, +,Reasonable Server Faces, +,Remote Application Platform, +,RIFE, +,Seam, +,Sling, +,Spring, +,Stripes, +,Struts, +,Tapestry, +,Vaadin, +,Vert.x, +,WebWork, +,Wicket, +,WaveMaker, +,ZK, +, +, +, +, +, +,JavaScript, +, +, +, +,Ample SDK, +,Angular,/,AngularJS, +,Backbone.js, +,Chaplin.js, +,Closure, +,Dojo Toolkit, +,Ember.js, +,Ext JS, +,jQuery, +,Meteor, +,MooTools, +,Node.js, +,OpenUI5, +,Prototype, +,React, +,Rico, +,script.aculo.us, +,Sencha Touch, +,SproutCore, +,Wakanda, +, +, +, +, +, +,Perl, +, +, +, +,Catalyst, +,Dancer, +,Mason, +,Maypole, +,Mojolicious, +,WebGUI, +, +, +, +, +, +,PHP, +, +, +, +,CakePHP, +,CodeIgniter, +,Drupal, +,Fat-Free, +,FuelPHP, +,Flow, +,Gyroscope, +,Horde, +,Kohana, +,Laravel, +,Lithium, +,Midgard, +,MODX, +,Nette, +,Phalcon, +,Pop PHP, +,PRADO, +,ProcessWire, +,Qcodo, +,Silex, +,SilverStripe, +,Symfony, +,TYPO3, +,Xaraya, +,XOOPS, +,Yii, +,Zend Framework, +, +, +, +, +, +,Python, +, +, +, +,BlueBream, +,CherryPy, +,Django, +,Flask, +,Grok, +,Nevow, +,Pyjs, +,Pylons, +,Pyramid, +,Quixote, +,TACTIC, +,Tornado, +,TurboGears, +,web2py, +,Webware, +,Zope 2, +, +, +, +, +, +,Ruby, +, +, +, +,Camping, +,Merb, +,Padrino, +,Ruby on Rails, +,Sinatra, +, +, +, +, +, +,Scala, +, +, +, +,Lift, +,Play, +,Scalatra, +, +, +, +, +, +,Smalltalk, +, +, +, +,AIDA/Web, +,Seaside, +, +, +, +, +, +,Other languages, +, +, +, +,Vibe.d, (,D,), +,Application Express, (,PL/SQL,), +,Grails, (,Groovy,), +,Kepler, (,Lua,), +,Rocket, (,Rust,), +,OpenACS, (,Tcl,), +,Phoenix, (,Elixir,), +,SproutCore, (,JavaScript,-,Ruby,), +,Yaws, (,Erlang,), +, +, +, +, +, +, + + +, +, +, +, +",DotNetNuke +" 2 January 2018, at 02:25.","For other uses, see ,Django,., +, +,Django, +, +, +, +, +, +, +, +,Original author(s), +,Lawrence Journal-World, +, +, +,Developer(s), +,Django Software Foundation, +, +, +,Initial release, +,21 July 2005,; 12 years ago, (,2005-07-21,),[1], +, +, +, +, +, +,Stable release, +,2.0.1,[2], ,(1 January 2018,; 21 days ago, (,2018-01-01,),), ,[±], +, +, +,Preview release, +,2.0 release candidate 1,[3], ,[±], +, +, +, +, +, +,Repository, +, +, +, +,https://github.com/django/django, +, +, +, +, +, +,Development status, +,Active, +, +, +,Written in, +,Python, +, +, +,Size, +,7.6 ,MB,[4], +, +, +,Type, +,Web framework, +, +, +,License, +,3-clause BSD, +, +, +,Website, +,www,.djangoproject,.com, +, +, +,Django, (,/,ˈ,dʒ,æ,ŋ,ɡ,oʊ,/, ,JANG,-goh,),[5], is a ,free and open-source, ,web framework,, written in ,Python,, which follows the model-view-template (MVT) ,architectural pattern,.,[6],[7], It is maintained by the ,Django Software Foundation, (DSF), an independent organization established as a ,501(c)(3), non-profit., +,Django's primary goal is to ease the creation of complex, database-driven websites. Django emphasizes ,reusability, and ""pluggability"" of components, rapid development, and the principle of ,don't repeat yourself,. Python is used throughout, even for settings files and data models. Django also provides an optional administrative ,create, read, update and delete, interface that is generated dynamically through ,introspection, and configured via admin models., +,Some well-known sites that use Django include the ,Public Broadcasting Service,,,[8], ,Instagram,,,[9], ,Mozilla,,,[10], ,The Washington Times,,,[11], ,Disqus,,,[12], ,Bitbucket,,,[13], and ,Nextdoor,.,[14], It was used on ,Pinterest,,,[15], but later the site moved to a framework built over ,Flask,.,[16], +, +, +, +,Contents, +, +, +,1, ,History, +,2, ,Features, +, +,2.1, ,Components, +,2.2, ,Bundled applications, +,2.3, ,Extensibility, +,2.4, ,Server arrangements, +, +, +,3, ,Version history, +,4, ,Development tools with Django support, +,5, ,Community, +,6, ,Ports to other languages, +,7, ,Bibliography, +,8, ,See also, +,9, ,References, +,10, ,External links, +, +, +, +,History,[,edit,], +,Django was created in the fall of 2003, when the ,web programmers, at the ,Lawrence Journal-World, newspaper, ,Adrian Holovaty, and ,Simon Willison,, began using Python to build applications.,[17], It was released publicly under a ,BSD license, in July 2005. The framework was named after guitarist ,Django Reinhardt,.,[17], +,In June 2008, it was announced that a newly formed ,Django Software Foundation, (DSF) would maintain Django in the future.,[18], +,Features,[,edit,], +,Components,[,edit,], +, +, +, +, +Screenshot of the Django admin interface for modifying a user account., +, +, +,Despite having its own nomenclature, such as naming the callable objects generating the ,HTTP, responses ""views"",,[6], the core Django framework can be seen as an ,MVC, architecture.,[7], It consists of an ,object-relational mapper, (ORM) that mediates between ,data models, (defined as Python classes) and a ,relational database, ("",M,odel""), a system for processing HTTP requests with a ,web templating system, ("",V,iew""), and a ,regular-expression,-based ,URL, dispatcher ("",C,ontroller"")., +,Also included in the core framework are:, +, +,a lightweight and standalone web server for development and testing, +,a form serialization and validation system that can translate between ,HTML, forms and values suitable for storage in the database, +,a template system that utilizes the concept of ,inheritance, borrowed from object-oriented programming, +,a ,caching, framework that can use any of several cache methods, +,support for ,middleware, classes that can intervene at various stages of request processing and carry out custom functions, +,an internal dispatcher system that allows components of an application to communicate events to each other via pre-defined signals, +,an ,internationalization, system, including translations of Django's own components into a variety of languages, +,a ,serialization, system that can produce and read ,XML, and/or ,JSON, representations of Django model instances, +,a system for extending the capabilities of the template engine, +,an interface to Python's built-in ,unit test, framework, +, +,Bundled applications,[,edit,], +,The main Django distribution also bundles a number of applications in its ""contrib"" package, including:, +, +,an extensible authentication system, +,the dynamic administrative interface, +,tools for generating ,RSS, and ,Atom, syndication feeds, +,a site's framework that allows one Django installation to run multiple websites, each with their own content and applications, +,tools for generating ,Google Sitemaps, +,built-in mitigation for ,cross-site request forgery,, ,cross-site scripting,, ,SQL injection,, ,password cracking, and other typical web attacks, most of them turned on by default,[19],[20], +,a framework for creating ,GIS, applications, +, +,Extensibility,[,edit,], +, +, +, +, +, +, +,This section ,relies too much on ,references, to ,primary sources,. ,Please improve this section by adding ,secondary or tertiary sources,., ,(January 2015), ,(,Learn how and when to remove this template message,), +, +, +, +,Django's configuration system allows third party code to be plugged into a regular project, provided that it follows the reusable app,[21], conventions. More than 2500 packages,[22], are available to extend the framework's original behavior, providing solutions to issues the original tool didn't tackle: registration, search, ,API, provision and consumption, ,CMS,, etc., +,This extensibility is, however, mitigated by internal components dependencies. While the Django philosophy implies loose coupling,,[23], the template filters and tags assume one engine implementation, and both the auth and admin bundled applications require the use of the internal ,ORM,. None of these filters or bundled apps are mandatory to run a Django project, but reusable apps tend to depend on them, encouraging developers to keep using the official stack in order to benefit fully from the apps ecosystem., +,Server arrangements,[,edit,], +,Django can be run in conjunction with ,Apache,, ,Nginx, using ,WSGI,, ,Gunicorn,, or ,Cherokee, using flup (a Python module).,[24],[25], Django also includes the ability to launch a ,FastCGI, server, enabling use behind any web server which supports FastCGI, such as ,Lighttpd, or ,Hiawatha,. It is also possible to use other ,WSGI,-compliant web servers.,[26], Django officially supports four database backends: ,PostgreSQL,, ,MySQL,, ,SQLite,, and ,Oracle,. ,Microsoft SQL Server, can be used with django-mssql on ,Microsoft, ,operating systems,,,[27], while similarly external backends exist for ,IBM Db2,,,[28], ,SQL Anywhere,[29], and ,Firebird,.,[30], There is a ,fork, named django-nonrel, which supports ,NoSQL, databases, such as ,MongoDB, and ,Google App Engine,'s Datastore.,[31], +,Django may also be run in conjunction with ,Jython, on any ,Java EE, application server such as ,GlassFish, or ,JBoss,. In this case django-jython must be installed in order to provide ,JDBC, drivers for database connectivity, which also can provide functionality to compile Django in to a .war suitable for deployment.,[32], +,Google App Engine, includes support for Django version 1.x.x,[33], as one of the bundled frameworks., +,Version history,[,edit,], +,The Django team will occasionally designate certain releases to be “Long-term support” (LTS) releases.,[34], LTS releases will get security and data loss fixes applied for a guaranteed period of time, typically 3+ years, regardless of the pace of releases afterwards., +, +, +,Version, +,Date,[35], +,Notes,[36], +, +, +,Old version, no longer supported:, 0.90,[37], +,000000002005-11-16-0000,16 Nov 2005, +, +, +, +,Old version, no longer supported:, 0.91,[38], +,000000002006-01-11-0000,11 Jan 2006, +,""new-admin"", +, +, +,Old version, no longer supported:, 0.95,[39], +,000000002006-07-29-0000,29 Jul 2006, +,""magic removal"", +, +, +,Old version, no longer supported:, 0.96,[40], +,000000002007-03-23-0000,23 Mar 2007, +,""newforms"", testing tools, +, +, +,Old version, no longer supported:, 1.0,[41], +,000000002008-09-03-0000,3 Sep 2008, +,API stability, decoupled admin, unicode, +, +, +,Old version, no longer supported:, 1.1,[42], +,000000002009-07-29-0000,29 Jul 2009, +,Aggregates, transaction based tests, +, +, +,Old version, no longer supported:, 1.2,[43], +,000000002010-05-17-0000,17 May 2010, +,Multiple db connections, ,CSRF,, model validation, +, +, +,Old version, no longer supported:, 1.3,[44], +,000000002011-03-23-0000,23 Mar 2011, +,Class based views, staticfiles, +, +, +,Old version, no longer supported:, 1.4 LTS,[45], +,000000002012-03-23-0000,23 Mar 2012, +,Timezones, in browser testing, app templates., +, +, +,Old version, no longer supported:, 1.5,[46], +,000000002013-02-26-0000,26 Feb 2013, +,Python 3 Support, configurable user model, +, +, +,Old version, no longer supported:, 1.6,[47], +,000000002013-11-06-0000,6 Nov 2013, +,Dedicated to Malcolm Tredinnick, db transaction management, connection pooling., +, +, +,Old version, no longer supported:, 1.7,[48], +,000000002014-09-02-0000,2 Sep 2014, +,Migrations, application loading and configuration., +, +, +,Older version, yet still supported:, 1.8 LTS,[49], +,000000002015-04-01-0000,1 Apr 2015, +,Native support for multiple template engines. ,Supported until at least April 2018, +, +, +,Old version, no longer supported:, 1.9,[50], +,000000002015-12-01-0000,1 Dec 2015, +,Automatic password validation. New styling for admin interface., +, +, +,Old version, no longer supported:, 1.10,[51], +,000000002016-08-01-0000,1 Aug 2016, +,Full text search for PostgreSQL. New-style middleware., +, +, +,Older version, yet still supported:, 1.11 LTS,[52], +,000000002017-04-04-0000,4 Apr 2017, +,Last version to support Python 2.7. ,Supported until at least April 2020, +, +, +,Current stable version:, ,2.0,[53], +,000000002017-12-01-0000,Dec 2017, +,First Python 3-only release, Simplified URL routing syntax, Mobile friendly admin., +, +, +,Future release:, 2.1,[53], +,000000002018-08-01-0000,Aug 2018, +, +, +, +,Future release:, 2.2 LTS,[53], +,000000002019-04-01-0000,Apr 2019, +,Supported until at least April 2022, +, +, +,Future release:, 3.0,[53], +,000000002019-12-01-0000,Dec 2019, +, +, +, +,Future release:, 3.1,[53], +,000000002020-08-01-0000,Aug 2020, +, +, +, +,Future release:, 3.2 LTS,[53], +,000000002021-04-01-0000,Apr 2021, +,Supported until at least April 2024, +, +, +, +, +,Legend:, +,Old version, +,Older version, still supported, +,Latest version, +,Latest preview version, +,Future release, +, +, +, +, +, +,Development tools with Django support,[,edit,], +,For developing a Django project, no special tools are necessary, since the source code can be edited with any conventional ,text editor,. Nevertheless, editors specialized on ,computer programming, can help increase the productivity of development, e.g. with features such as ,syntax highlighting,. Since Django is written in Python, text editors which are aware of Python syntax are beneficial in this regard., +,Integrated development environments, (IDE) add further functionality, such as debugging, refactoring, unit testing, etc. As with plain editors, IDEs with support for Python can be beneficial. Some IDEs that are specialized on Python additionally have integrated support for Django projects, so that using such an IDE when developing a Django project can help further increase productivity. For comparison of such Python IDEs, see the main article:, +,Main article: ,Comparison of integrated development environments § Python, +,Community,[,edit,], +,There is a semiannual conference for Django developers and users, named ""DjangoCon"", that has been held since September 2008. DjangoCon is held annually in Europe, in May or June;,[54], while another is held in the United States in August or September, in various cities.,[55], The 2012 DjangoCon took place in Washington D.C. from 3 to 8 September. 2013 DjangoCon was held in Chicago at the Hyatt Regency Hotel and the post-conference ,Sprints, were hosted at Digital Bootcamp, computer training center.,[56], The 2014 DjangoCon US returned to Portland, OR from 30 August to 6 September. The 2015 DjangoCon US was held in Austin, TX from 6 to 11 September at the AT&T Executive Center. The 2016 DjangoCon US was held in Philadelphia, PA at The ,Wharton School of the University of Pennsylvania, from 17 to 22 July.,[57], +,Django mini-conferences were held in ,Hobart,, Australia in July 2013, in ,Brisbane,, Australia in August 2014 and 2015, and in ,Melbourne,, Australia in 2016.,[58], +,Ports to other languages,[,edit,], +,Programmers have ported Django's template design from Python to other languages, providing decent cross-platform support. Some of these options are more direct ports; others, though inspired by Django and retaining its concepts, take the liberty to deviate from Django's design:, +, +,Liquid for ,Ruby,[59], +,Template::Swig for ,Perl,[60], +,Twig for ,PHP,[61], +,Jinja for ,Python,[62], +,ErlyDTL for ,Erlang,[63], +, +,Bibliography,[,edit,], +, +, +,Roy Greenfeld, Daniel; Roy Greenfeld, Audrey (2015), ,Two Scoops of Django: Best Practices for Django 1.8, (3rd ed.), Two Scoops Press, p. 531, ,ISBN, ,0981467342, , +,Jaiswal, Sanjeev; Kumar, Ratan (22 June 2015), ,Learning Django Web Development, (1st ed.), Packt, p. 405, ,ISBN, ,1783984406, , +,Ravindrun, Arun (31 March 2015), ,Django Design Patterns and Best Practices, (1st ed.), Packt, p. 180, ,ISBN, ,1783986646, , +,Osborn, Tracy (May 2015), ,Hello Web App, (1st ed.), Tracy Osborn, p. 142, ,ISBN, ,0986365912, , +,Bendoraitis, Aidas (October 2014), ,Web Development with Django Cookbook, (1st ed.), Packt, p. 294, ,ISBN, ,178328689X, , +,Baumgartner, Peter; Malet, Yann (2015), ,High Performance Django, (1st ed.), Lincoln Loop, p. 184, ,ISBN, ,1508748128, , +,Elman, Julia; Lavin, Mark (2014), ,Lightweight Django, (1st ed.), O'Reilly Media, p. 246, ,ISBN, ,149194594X, , +,Percival, Harry (2014), ,Test-Driven Development with Python, (1st ed.), O'Reilly Media, p. 480, ,ISBN, ,1449364829, , +, +, +,This list is an extraction from ,Current Django Books, +,See also,[,edit,], +, +, +,Free software portal, +, +, +, +,Flask (web framework), +,Pylons project, +,Comparison of web frameworks, +,Web2py, +, +, +,References,[,edit,], +, +, +,^, ,""Django FAQ"",. Retrieved ,2 September, 2014,., , +,^, ,Graham, Tim (1 January 2018). ,""Django bugfix releases: 2.0.1 and 1.11.9"",. ,Django Weblog,. Retrieved ,2 January, 2018,., , +,^, ,Graham, Tim (15 November 2017). ,""Django 2.0 release candidate 1 released"",. ,Django Weblog,. Retrieved ,16 November, 2017,., , +,^, ,""Django Download"",. Retrieved ,2 January, 2018,., , +,^, ,""FAQ: General - Django documentation - Django"",. Retrieved ,30 April, 2016,., , +,^ ,a, ,b, ,""FAQ: General - Django documentation - Django"",. Retrieved ,30 April, 2016,., , +,^ ,a, ,b, ,Adrian Holovaty, Jacob Kaplan-Moss; et al. ,The Django Book,. ,Django follows this MVC pattern closely enough that it can be called an MVC framework, , +,^, ,""20 Creative Websites Running Django"",., , +,^, ,""What Powers Instagram: Hundreds of Instances, Dozens of Technologies"",., , +,^, ,""Python"",. ,Mozilla Developer Network,. Retrieved ,30 April, 2016,., , +,^, ,Opensource.washingtontimes.com,. Retrieved on 2014-05-30., +,^, ,""Scaling Django to 8 Billion Page Views"",., , +,^, ,""DjangoSuccessStoryBitbucket – Django"",. Retrieved ,30 April, 2016,., , +,^, ,""The anti-Facebook: one in four American neighborhoods are now using this private social network"",. ,The Verge,. Retrieved ,16 June, 2016,., , +,^, ,""What is the technology stack behind Pinterest?"",. Retrieved ,30 April, 2016,., , +,^, ,""Sai Deep Chand G's answer to What is the technology stack behind Pinterest? - Quora"",. ,www.quora.com,. Retrieved ,2017-05-20,., , +,^ ,a, ,b, ,""Django's History"",. The Django Book,. Retrieved ,6 June, 2013,., , +,^, ,""Announcing the Django Software Foundation - Weblog - Django"",. Retrieved ,30 April, 2016,., , +,^, ,""Security in Django"",. Django Project,. Retrieved ,25 March, 2013,., , +,^, ,Socol, James (2012). ,""Best Basic Security Practices (Especially with Django)"",. Retrieved ,25 March, 2013,., , +,^, ,""What is a reusable app? — django-reusable-app-docs 0.1.0 documentation"",. Retrieved ,30 April, 2016,., , +,^, ,""Django Packages"",. Retrieved ,30 April, 2016,., , +,^, ,""Design philosophies - Django documentation - Django"",. Retrieved ,30 April, 2016,., , +,^, ,Django documentation of deployment, ,Archived, 11 January 2012 at the ,Wayback Machine,., +,^, ,""Cherokee Web Server - Cookbook Setting up Django - Cherokee Documentation"",. Retrieved ,30 April, 2016,., , +,^, ,How to use Django with Apache and mod_wsgi, ,Archived, 8 March 2013 at the ,Wayback Machine,.. Official Django documentation., +,^, ,""Manfre / django-mssql / source / — Bitbucket"",. Retrieved ,30 April, 2016,., , +,^, ,ibmdb. ,""GitHub - ibmdb/python-ibmdb: Automatically exported from code.google.com/p/ibm-db"",. ,GitHub,. Retrieved ,30 April, 2016,., , +,^, ,""Google Code Archive - Long-term storage for Google Code Project Hosting"",. Retrieved ,30 April, 2016,., , +,^, ,maxirobaina. ,""GitHub - maxirobaina/django-firebird: Firebird SQL backend for django"",. ,GitHub,. Retrieved ,30 April, 2016,., , +,^, ,""Django non-rel"",. Retrieved ,30 April, 2016,., , +,^, ,beachmachine. ,""GitHub - beachmachine/django-jython: Database backends and extensions for Django development on top of Jython"",. ,GitHub,. Retrieved ,30 April, 2016,., , +,^, ,Running Pure Django Projects on Google App Engine,. Code.google.com (2010-11-01). Retrieved on 5 December 2011., +,^, ,""Django's release process - Django documentation - Django"",. Retrieved ,30 April, 2016,., , +,^, ,Supported Versions, +,^, ,What Python version can I use with Django?, +,^, ,""Introducing Django 0.90"",. Django weblog. Retrieved 2 February 2013., +,^, ,""Django 0.91 released"",. Django weblog. Retrieved 2 February 2013., +,^, ,""Introducing Django 0.95"",. Django weblog. Retrieved 2 February 2013., +,^, ,""Announcing Django 0.96!"",. Django weblog. Retrieved 2 February 2013., +,^, ,""Django 1.0 released!"",. Django weblog. Retrieved 2 February 2013., +,^, ,""Django 1.1 released"",. Django weblog. Retrieved 2 February 2013., +,^, ,""Django 1.2 released"",. Django weblog. Retrieved 2 February 2013., +,^, ,""Django 1.3 released"",. Django weblog. Retrieved 2 February 2013., +,^, ,""Django 1.4 released"",. Django weblog. Retrieved 2 February 2013., +,^, ,""Django 1.5 released"", Django weblog. Retrieved 27 February 2013., +,^, ,""Django 1.6 released"", Django weblog. Retrieved 6 November 2013., +,^, ,""Django 1.7 released"", Django weblog. Retrieved 4 September 2014., +,^, ,""Django 1.8 released"", Django weblog. Retrieved 2 April 2015., +,^, ,""Django 1.9 released"", Django weblog. Retrieved 1 December 2015., +,^, ,""Django 1.10 released"", Django weblog. Retrieved 1 August 2016., +,^, ,""Django 1.11 released"", Django weblog. Retrieved 4 April 2017., +,^ ,a, ,b, ,c, ,d, ,e, ,f, ,""Django 2.0 released"", Django weblog. Retrieved 3 December 2017., +,^, ,DjangoCon EU series,, Lanyrd.com, +,^, ,DjangoCon US series,, Lanyrd.com, +,^, ,""DjangoCon"",. DjangoCon. Archived from ,the original, on 5 August 2012,. Retrieved ,29 July, 2012,., , +,^, ,""DjangoCon"",. DjangoCon,. Retrieved ,1 December, 2016,., , +,^, ,DjangoCon AU,. Djangocon.com.au. Retrieved on 2016-09-23., +,^, ,http://liquidmarkup.org, +,^, ,https://metacpan.org/pod/Template::Swig, +,^, ,http://twig.sensiolabs.org, +,^, ,http://jinja.pocoo.org, +,^, ,https://github.com/erlydtl/erlydtl/wiki, +, +, +,External links,[,edit,], +, +, +, +,Wikimedia Commons has media related to ,Django (web framework),., +, +, +, +,Official website, +, +, +, +, +, +, +, +, +,v, +,t, +,e, +, +, +,Python, ,web frameworks, +, +, +, +, +, +, +,BlueBream, +,Bottle, +,CherryPy, +,Django, +,Flask, +,Grok, +,Nagare, +,Nevow, +,Pyjs, +,Pylons, +,Pyramid, +,Quixote, +,Spyce, +,TACTIC, +,Tornado, +,TurboGears, +,TwistedWeb, +,Webware, +,web2py, +,Zope 2, +,more,..., +, +, +, +, +, +, +, +, +, +, +, +, +,v, +,t, +,e, +, +, +,Web frameworks, +, +, +, +, +, +, +,Comparison, +, +, +, +, +, +,C++, +, +, +, +,CppCMS, +,Wt, +, +, +, +, +, +,CLI, +, +, +, +,ASP.NET, +, +,Core, +,AJAX, +,Dynamic Data, +,MVC, +,Razor, +,Web Forms, +, +, +,DNN, +,BFC, +,MonoRail, +,OpenRasta, +,Umbraco, +, +, +, +, +, +,ColdFusion, +, +, +, +,CFWheels, +,ColdBox Platform, +,ColdSpring, +,Fusebox, +,Mach-II, +,Model-Glue, +, +, +, +, +, +,Common Lisp, +, +, +, +,Caveman2, +,CL-HTTP, +,UnCommon Web, +,Weblocks, +, +, +, +, +, +,Haskell, +, +, +, +,Happstack, +,Yesod, +,Snap, +, +, +, +, +, +,Java, +, +, +, +,AppFuse, +,Flexive, +,Grails, +,GWT, +,ICEfaces, +,ItsNat, +,JavaServer Faces, +,JHipster, +,Jspx, +,JWt, +,OpenXava, +,Play, +,Reasonable Server Faces, +,Remote Application Platform, +,RIFE, +,Seam, +,Sling, +,Spring, +,Stripes, +,Struts, +,Tapestry, +,Vaadin, +,Vert.x, +,WebWork, +,Wicket, +,WaveMaker, +,ZK, +, +, +, +, +, +,JavaScript, +, +, +, +,Ample SDK, +,Angular,/,AngularJS, +,Backbone.js, +,Chaplin.js, +,Closure, +,Dojo Toolkit, +,Ember.js, +,Ext JS, +,jQuery, +,Meteor, +,MooTools, +,Node.js, +,OpenUI5, +,Prototype, +,React, +,Rico, +,script.aculo.us, +,Sencha Touch, +,SproutCore, +,Wakanda, +, +, +, +, +, +,Perl, +, +, +, +,Catalyst, +,Dancer, +,Mason, +,Maypole, +,Mojolicious, +,WebGUI, +, +, +, +, +, +,PHP, +, +, +, +,CakePHP, +,CodeIgniter, +,Drupal, +,Fat-Free, +,FuelPHP, +,Flow, +,Gyroscope, +,Horde, +,Kohana, +,Laravel, +,Lithium, +,Midgard, +,MODX, +,Nette, +,Phalcon, +,Pop PHP, +,PRADO, +,ProcessWire, +,Qcodo, +,Silex, +,SilverStripe, +,Symfony, +,TYPO3, +,Xaraya, +,XOOPS, +,Yii, +,Zend Framework, +, +, +, +, +, +,Python, +, +, +, +,BlueBream, +,CherryPy, +,Django, +,Flask, +,Grok, +,Nevow, +,Pyjs, +,Pylons, +,Pyramid, +,Quixote, +,TACTIC, +,Tornado, +,TurboGears, +,web2py, +,Webware, +,Zope 2, +, +, +, +, +, +,Ruby, +, +, +, +,Camping, +,Merb, +,Padrino, +,Ruby on Rails, +,Sinatra, +, +, +, +, +, +,Scala, +, +, +, +,Lift, +,Play, +,Scalatra, +, +, +, +, +, +,Smalltalk, +, +, +, +,AIDA/Web, +,Seaside, +, +, +, +, +, +,Other languages, +, +, +, +,Vibe.d, (,D,), +,Application Express, (,PL/SQL,), +,Grails, (,Groovy,), +,Kepler, (,Lua,), +,Rocket, (,Rust,), +,OpenACS, (,Tcl,), +,Phoenix, (,Elixir,), +,SproutCore, (,JavaScript,-,Ruby,), +,Yaws, (,Erlang,), +, +, +, +, +, +, + + +, +, +, +, +",Django (web framework) +" 9 November 2017, at 14:46.","For the art historian, see ,Daniel Robbins (art historian),., +, +, +,Daniel Robbins, +, +, +,Born, +,Montreal,, ,Quebec,, Canada, +, +, +,Residence, +,Albuquerque, New Mexico,, US, +, +, +,Nationality, +,United States, +, +, +,Education, +,Worcester Polytechnic Institute, +, +, +,Organization, +,Funtoo Technologies, +, +, +,Known for, +,Free Software,, ,Hacker,, ,Gentoo,, ,Funtoo, +, +, +,Website, +,www,.funtoo,.org, +, +, +,Daniel Robbins, is a ,computer programmer, and consultant best known as the founder and former chief architect of the ,Gentoo Linux, project. In 2008, he launched the ,Funtoo project,, a ,free, ,Linux distribution, based on Gentoo, and is the project's lead hacker and organizer. He also currently works at the same time in ,Albuquerque, New Mexico,, as 'Open Source/Community Strategy Lead' at Zenoss, and as president for ,Funtoo Technologies,., +, +, +, +,Contents, +, +, +,1, ,Biography, +, +,1.1, ,Formation of Gentoo Linux distribution, +, +,1.1.1, ,Funtoo Linux, +,1.1.2, ,Microsoft, +,1.1.3, ,RTLinux, +, +, +,1.2, ,Funtoo Technologies, +, +, +,2, ,See also, +,3, ,References, +,4, ,External links, +, +, +, +,Biography,[,edit,], +,Formation of Gentoo Linux distribution,[,edit,], +,During his time as a system administrator at the ,University of New Mexico, in ,Albuquerque, Robbins formed his own distribution ,Enoch Linux,, which was later renamed ,Gentoo, in 2002., +,However, like many other ,free software, projects, Gentoo struggled to create a ,business model, which would support its key developers.,[1], Robbins resigned as Chief Architect on 26 April 2004,,[2], citing considerable ,personal debt,,,[3], and a desire to spend more time with his family, formed the ,Gentoo Foundation, and transferred all Gentoo ,intellectual property, to it, so that Gentoo is now run as a full community-based model. He did rejoin the project for a short time from August 2006,,[4],[5], becoming a developer again in February 2007 and joining the amd64 team,[6], but resigned in early March 2007.,[7], +,There have been several high-profile criticisms,[8],[9], of the way Gentoo has run since Robbins left, such as: ""...since the resignation of Gentoo's founder and benevolent dictator from the project in 2004, the newly established Gentoo Foundation has been battling with lack of clear directions and frequent developer conflicts..."",,[10], but in mid-July 2007 it emerged that Robbins was still technically the legal president of the Gentoo Foundation:,[11],[12], +, +,...I would like to see more fun in Gentoo, and a lot less politics, and in my apparent role as President of the Gentoo Foundation, I may have an opportunity to change things for the better. I will need to look into this more...,[11], +, +,Funtoo Linux,[,edit,], +,In 2008, Robbins began to work on ,Funtoo,, a project created to allow him to work on extending the technologies originally created for Gentoo.,[13], +,Microsoft,[,edit,], +,Robbins' move to ,Microsoft,, in May 2005, attracted attention,[14],[15], within the Linux community, which has historically had a combative relationship with Microsoft. He described his role working for ,Bill Hilf, as ""...helping Microsoft to understand Open Source and community-based projects..."",[16], +,However, Robbins resigned less than a year later on 16 January 2006 due to frustrations that he was unable to fully utilize his technical skills in this position., +,RTLinux,[,edit,], +,Later in 2006, he joined ,FSMLabs, in Socorro, New Mexico, to work on ,RTLinux,., +,Funtoo Technologies,[,edit,], +,Daniel Robbins is also president of ,Funtoo Technologies,, a consulting firm founded in 2006 and located in ,Albuquerque, New Mexico,., +,See also,[,edit,], +, +, +,Free software portal, +, +, +, +,References,[,edit,], +, +, +,^, ,Loli-Queru, Eugenia, (14 May 2002). ,""Interview with Gentoo's Daniel Robbins"",. ,OSNews,. Retrieved ,17 April, 2009,. ,I very much want to find a way to turn the Gentoo Linux project into a profitable enterprise. My main motivation in wanting to do this is so I can stop living from paycheck to paycheck and focus my professional efforts exclusively on Gentoo Linux development. Many of our developers would like to do the same thing., , +,^, ,Lord, timothy (26 April 2004). ,""Interview with Gentoo's Daniel Robbins"",. ,Slashdot,. Retrieved ,17 April, 2009,., , +,^, ,""Mail To News And Back Again"",. Gmane. 26 April 2004,. Retrieved ,4 August, 2009,., , +,^, ,""Funtoo by Daniel Robbins"",. Funtoo.org. Archived from ,the original, on 12 October 2006,. Retrieved ,4 August, 2009,., , +,^, ,""Gentoo Bug 145649 - Retire (once more): Daniel Robbins (drobbins)"",. Bugs.gentoo.org,. Retrieved ,4 August, 2009,., , +,^, ,""Gentoo Bug 145649 - Retire (once more): Daniel Robbins (drobbins)"",. Bugs.gentoo.org,. Retrieved ,4 August, 2009,., , +,^, ,[1], ,Archived, 30 September 2007 at the ,Wayback Machine,., +,^, ,""Put the fun back into computing. Use Linux, BSD"",. DistroWatch.com,. Retrieved ,4 August, 2009,., , +,^, ,""Slashdot | Is Gentoo in crisis?"",. Linux.slashdot.org,. Retrieved ,4 August, 2009,., , +,^, ,""Put the fun back into computing. Use Linux, BSD"",. DistroWatch.com,. Retrieved ,4 August, 2009,., , +,^ ,a, ,b, ,""Funtoo by Daniel Robbins: I am still President of the Gentoo Foundation?"",. Blog.funtoo.org. 18 July 2007. Archived from ,the original, on 7 February 2009,. Retrieved ,4 August, 2009,., , +,^, ,[2], +,^, ,[3], ,Archived, 21 April 2010 at the ,Wayback Machine,., +,^, ,""Slashdot | Gentoo Founder on his way to Redmond"",. Linux.slashdot.org,. Retrieved ,4 August, 2009,., , +,^, ,Marson, Ingrid (16 June 2005). ,""Gentoo Linux founder to 'educate' Microsoft | CNET News.com"",. News.com.com,. Retrieved ,4 August, 2009,., , +,^, ,""Gentoo Founder Joins Microsoft"",. Osnews.com,. Retrieved ,4 August, 2009,., , +, +, +,External links,[,edit,], +, +,Robbins' blog, +,Common threads: OpenSSH key management, Part 1, +,linuxcrazy mp3 and ogg interview, +, +, +, +, +, +, +, +,v, +,t, +,e, +, +, +,Linux, +, +, +, +,Linux kernel, +, +, +, +,History, +,Kernel, +,Linus's Law, +,Linux-libre, +,Linux startup process, +,Linux kernel oops, +,Tux, +,more…, +, +, +, +, +, +,Controversies, +, +, +, +,Criticism of Linux, +,Criticism of desktop Linux, +,GNU/Linux naming controversy, +,Tanenbaum–Torvalds debate, +,SCO and Linux, +, +, +, +, +, +,Distributions, +, +, +, +,General comparison, +,Distributions list, +,Netbook-specific comparison, +,Distributions that run from RAM, +,Lightweight, +,Security-focused operating system, +,Proprietary software for Linux, +,Package manager, +, +,Package format, +,List of software package managers, +, +, +, +, +, +, +, +,Organizations, +, +, +, +,Linux Foundation, +,Linux Mark Institute, +,Linux User Group (LUG), +,Linux Documentation Project, +,LinuxChix, +,Linux Counter, +, +, +, +, +, +,Adoption, +, +, +, +,Desktop, +,Embedded, +,Mobile, +,Gaming, +,Linux range of use, +,List of Linux adopters, +, +, +, +, +, +,Media, +, +, +, +,DistroWatch, +,Free Software Magazine, +,Full Circle, +,Linux.com, +,Linux Format, +,Linux Gazette, +,Linux Journal, +,Linux Magazine, +,LinuxUser, +, +,Ubuntu User, +, +, +,Linux Outlaws, +,Linux Voice, +,LugRadio, +,LWN.net, +,OMG! Ubuntu!, +,Open Source For You, +,Phoronix, +,Revolution OS, +,The Code, +, +, +, +, +, +, +, +, +, ,Linux, +, ,Linux kernel features, +, ,Portal:Linux, +, ,WikiProject Linux, +, +, +, +, +, +, +, +, +, +, +, +, +,v, +,t, +,e, +, +, +,Notable contributors to the ,Linux operating system, +, +, +, +,Kernel, +, +, +, +,H. Peter Anvin, +,Jens Axboe, +,Andries Brouwer, +,Rémy Card, +,Arnaldo Carvalho de Melo, +,Alan Cox, +,Kristoffer Ericson, +,Matthew Garrett, +,Michael Kerrisk, +,Con Kolivas, +,Greg Kroah-Hartman, +,Robert Love, +,David S. Miller, +,Ingo Molnár, +,Andrew Morton, +,Keith Packard, +,Hans Reiser, +,Rusty Russell, +,Sage Sharp, +,Linus Torvalds, +,Theodore Ts'o, +,Sage Weil, +,Harald Welte, +,Chris Wright, +, +, +, +, +, +,GNU, +, +, +, +,Loïc Dachary, +,Alexandre Oliva, +,Richard Stallman, +,Michael Tiemann, +, +, +, +, +, +,Distributions, +, +, +, +,Benjamin Mako Hill, +,Daniel Robbins, +,Gaël Duval, +,Ian Murdock, +,Mark Shuttleworth, +,Jane Silber, +,Patrick Volkerding, +,Peter MacDonald, +, +, +, +, +, +,Other developers, +, +, +, +,Timothee Besset, +,Matthias Ettrich, +,Olivier Fourdan, +,Mark Galassi, +,Jim Gettys, +,Ryan C. Gordon, +,Harald Hoyer, +,Miguel de Icaza, +,Havoc Pennington, +,Lennart Poettering, +,Michael Simms, +,Kay Sievers, +,Dave Taylor, +,Jeff Waugh, +, +, +, +, +, +,Advocates, +, +, +, +,Bradley M. Kuhn, +,Bruce Perens, +,Donna Benjamin, +,Eric S. Raymond, +,Federico Heinz, +,Jon Hall, +,Ken Coar, +,Mary Gardiner, +,Valerie Aurora, +, +, +, +, +, +,Others, +, +, +, +,Allison Randal, +,Dave Sifry, +,Jono Bacon, +,Karen Sandler, +,Keith Bergelt, +,Luis Villa, +,Pamela Jones, +,Pia Waugh, +, +, +, +, +, +, + + +, +, +, +, +",Daniel Robbins (computer programmer) +" 19 January 2018, at 07:22."," +,OpenBSD, +, +, +,""Free, Functional, and Secure"", +, +, +, +, +,OpenBSD 5.9 desktop, +, +, +, +,Developer, +,The OpenBSD Project, +, +, +,Written in, +,Primarily ,C,, ,assembly,, ,Perl,, ,Makefile,, and ,KornShell, +, +, +,OS family, +,Unix-like, (,BSD,), +, +, +,Working state, +,Current, +, +, +,Source model, +,Open source, +, +, +,Initial release, +,1 October 1996,; 21 years ago, (,1996-10-01,), +, +, +,Latest release, +,6.2 ,(9 October 2017,; 3 months ago, (,2017-10-09,),), ,[±], +, +, +,Package manager, +,OpenBSD package tools,[1], +, +, +,Platforms, +,Alpha,, ,x86-64,, ,ARMv7,, ,PA-RISC,, ,IA-32,, ,LANDISK,, ,Omron LUNA-88K,, ,MIPS64,, ,PowerPC,, and ,SPARC 64,[2], +, +, +,Kernel, type, +,Monolithic, +, +, +,Userland, +,BSD, +, +, +,Default ,user interface, +,Modified ,pdksh,, ,FVWM, ,X11, +, +, +,License, +,BSD,, ,ISC,, ATU,,[3], and other custom licenses,[4], +, +, +,Official website, +,openbsd,.org, +, +, +,OpenBSD, is a ,free and open-source, ,Unix-like, computer ,operating system, descended from ,Berkeley Software Distribution, (BSD), a ,Research Unix, derivative developed at the ,University of California, Berkeley,. In late 1995, ,Theo de Raadt, ,forked, it from ,NetBSD,. Besides the operating system as a whole, the project maintains portable versions of many subsystems, most notably ,OpenSSH,, which are available as packages in other operating systems., +,The project is known for its developers' insistence on ,open-source, code, good documentation, code correctness, and security. It has strict policies on ,licensing,, preferring the ,ISC license, and other variants of the ,Simplified BSD License,. Many of its ,security features, are optional or absent in other operating systems. Its developers frequently ,audit, the ,source tree, for software bugs and security holes., +,De Raadt coordinates the project from his home in ,Calgary,, Alberta, Canada. Its logo and mascot is a ,pufferfish, named Puffy., +, +, +, +,Contents, +, +, +,1, ,History and popularity, +,2, ,Uses, +, +,2.1, ,Security, +,2.2, ,Desktop, +,2.3, ,Server, +, +, +,3, ,Component projects, +,4, ,Third-party components in the base system, +,5, ,Development and release process, +,6, ,Open-source and open documentation, +,7, ,Licensing, +,8, ,Funding, +,9, ,Security and code auditing, +, +,9.1, ,Alleged FBI backdoor investigated, +,9.2, ,Slogan, +, +, +,10, ,Distribution and marketing, +,11, ,See also, +,12, ,Notes, +,13, ,References, +,14, ,External links, +, +, +, +,History and popularity,[,edit,], +,See also: ,Timeline of OpenBSD, +, +, +, +, +,Bar chart, showing the proportion of users of each ,BSD, variant from a 2005 BSD usage survey.,[5],[n 1], +, +, +,In December 1994, NetBSD co-founder ,Theo de Raadt, was asked to resign from his position as a senior developer and member of the NetBSD core team.,[6], The reason for this is not wholly clear, although there are claims that it was due to personality clashes within the NetBSD project and on its mailing lists.,[6], +,In October 1995, de Raadt founded OpenBSD, a new project forked from NetBSD 1.0. The initial release, OpenBSD 1.2, was made in July 1996, followed by OpenBSD 2.0 in October of the same year.,[7], Since then, the project has followed a schedule of a release every six months, each of which is supported for one year., +,On 25 July 2007, OpenBSD developer Bob Beck announced the formation of the ,OpenBSD Foundation,, a Canadian non-profit organization formed to ""act as a single point of contact for persons and organizations requiring a legal entity to deal with when they wish to support OpenBSD."",[8], +,Just how widely OpenBSD is used is hard to determine as its developers do not publish or collect usage statistics. In September 2005, the BSD Certification Group performed a usage survey which revealed that 32.8% of BSD users (1420 of 4330 respondents) were using OpenBSD,,[5], placing it second out of the four major BSD variants, behind ,FreeBSD, with 77% and ahead of NetBSD with 16.3%.,[n 1], +,Uses,[,edit,], +, +, +, +, +OpenBSD startup in console mode, +, +, +, +, +, +, +OpenBSD console login and welcome message, +, +, +, +, +, +, +Interaction with ,pdksh, in OpenBSD, +, +, +,Security,[,edit,], +,OpenBSD's security enhancements,, built-in cryptography, and the pf ,packet filter, suit it for use in the security industry, such as on firewalls,,[9], ,intrusion-detection systems,, and ,VPN, ,gateways,., +,Proprietary, systems from several manufacturers are based on OpenBSD, including devices from ,Armorlogic, (Profense web application firewall), Calyptix Security,,[10], GeNUA,,[11], RTMX,,[12], and .vantronix.,[13], Later versions of ,Microsoft,'s ,Services for UNIX,, an extension to the ,Windows, operating system providing ,Unix,-like functionality, use large amounts of OpenBSD code.,[14], +,Desktop,[,edit,], +,OpenBSD ships with the ,X Window System,[15], and is suitable for use on the desktop.,[16],[17],:,xl, There are a huge number of packages totalling 7814,[18], in number. Packages are available for popular applications, including desktop environments such as ,GNOME,, ,KDE,, and ,Xfce,, and web browsers such as ,Firefox, and ,Chromium,.,[19], The project also includes three window managers in the main distribution: ,cwm,, ,FVWM,, and ,twm,.,[20], +,Server,[,edit,], +,OpenBSD features a full server suite and can be easily configured as a ,mail server,, ,web server,, ,FTP server,, ,DNS server,, ,router,, ,firewall,, ,NFS, ,file server,, or any combination of these., +,Component projects,[,edit,], +,Despite the small team size and relatively low usage of OpenBSD, the project maintains portable versions of many parts of the base system, including:, +, +,LibreSSL,, a free implementation of the ,Secure Sockets Layer, (SSL) and ,Transport Layer Security, (TLS) protocols, forked from the ,OpenSSL, 1.0.1g branch, +,OpenBGPD,, a free implementation of the ,Border Gateway Protocol, 4 (BGP-4), +,OpenOSPFD,, a free implementation of the ,Open Shortest Path First, (OSPF) routing protocol, +,OpenNTPD,, a simple alternative to ntp.org's ,Network Time Protocol, (NTP) daemon, +,OpenSMTPD,, a free ,Simple Mail Transfer Protocol, (SMTP) daemon with ,IPv4,/,IPv6,, ,PAM,, ,Maildir, and virtual domains support, +,httpd, an ,HTTP, server first included in the 5.6 release, +,OpenSSH,, a free implementation of the ,Secure Shell, (SSH) protocol, +,OpenIKED,, a free implementation of the ,Internet Key Exchange, (IKEv2) protocol, +,Common Address Redundancy Protocol, (CARP), a free alternative to ,Cisco,'s patented ,HSRP,/,VRRP, server redundancy protocols, +,PF,, an ,IPv4,/,IPv6, stateful firewall with ,NAT,, ,PAT,, ,QoS, and traffic normalization support, +,pfsync,, a firewall states synchronization protocol for ,PF firewall, with ,High Availability, support using ,CARP, +,spamd,, a spam filter with ,greylisting, support designed to inter-operate with the ,PF firewall, +,sndio,, a compact audio and MIDI framework, +,Xenocara,, a customized ,X.Org, build infrastructure, +,cwm,, a stacking window manager, +,tmux, virtual console multiplexer, +, +,Some subsystems have been integrated into the base system of several other BSD projects,,[21],[22],[23], while many are available as packages for use in other Unix-like systems.,[24],[25],[26], +,Third-party components in the base system,[,edit,], +,OpenBSD includes a number of ,third-party software components,, many with OpenBSD-specific patches;,[19], examples include the ,X.Org Server,, ,GNU Compiler Collection,[27], (which acts as the default ,compiler,),,[n 2], ,Perl,, ,NSD,, ,Unbound,, ,Ncurses,, ,GNU Binutils,, ,GNU Debugger, and ,Awk,., +,OpenBSD used to include a fork of ,Apache 1.3,, which was later replaced by ,Nginx,. In the 5.6 release, Nginx was replaced with ,httpd,, an ,HTTP server, with ,FastCGI, and ,Transport Layer Security, support.,[28], As of May 2016,[update],, Apache and Nginx are still available as ports.,[29],[30], +,Development and release process,[,edit,], +, +, +, +, +OpenBSD developers at c2k1 ,hackathon, at ,MIT, +, +, +,Development is continuous, and team management is open and tiered. Anyone with appropriate skills may contribute, with commit rights being awarded on merit and de Raadt acting as coordinator.,[17],:,xxxv, Two official releases are made per year, with the version number incremented by 0.1,,[31], and these are each supported for twelve months (two release cycles).,[32], Snapshot releases are also available at frequent intervals., +,Maintenance patches for supported releases may be applied manually or by updating the system against the patch branch of the ,CVS, repository for that release.,[33], Alternatively, a system administrator may opt to upgrade using a snapshot release and then regularly update the system against the ,-current, branch of the CVS repository, in order to gain pre-release access to recently added features., +,The standard OpenBSD kernel, as maintained by the project, is strongly recommended for end users; this is as opposed to kernels customized by the user.,[34], +,Packages outside the base system are maintained by CVS through a ,ports tree, and are the responsibility of the individual maintainers, known as porters. As well as keeping the current branch up to date, porters are expected to apply appropriate bug-fixes and maintenance fixes to branches of their package for OpenBSD's supported releases. Ports are generally not subject to the same continuous auditing as the base system due to lack of manpower., +,Binary packages are built centrally from the ports tree for each architecture. This process is applied for the current version, for each supported release, and for each snapshot. Administrators are recommended to use the package mechanism rather than build the package from the ports tree, unless they need to perform their own source changes., +,OpenBSD's developers regularly meet at special events called ,hackathons,,,[35], where they ""sit down and code"", emphasizing productivity.,[36], +,Every new release includes a song.,[37], +,The ,OpenBSD Foundation, was accepted as a mentoring organization for the 2014 Google Summer of Code.,[38],[39], +,Open-source and open documentation,[,edit,], +,The OpenBSD Project is noted for its high-quality user documentation, considered top among the BSD family operating systems, all of which have excellent documentation.,[40],[41], When OpenBSD was created, de Raadt decided that the source should be easily available for anyone to read at any time, so, with the assistance of Chuck Cranor,,[42], he set up the first public, anonymous ,CVS, server. At the time, the tradition was for only a small team of developers to have access to a project's source repository.,[43], Cranor and de Raadt concluded that this practice ""runs counter to the open source philosophy"" and is inconvenient to contributors. De Raadt's decision allowed ""users to take a more active role"", and signaled the project's belief in open and public access to source code.,[43], +,OpenBSD does not include ,closed source, binary drivers in the source tree, nor do they include code requiring the signing of ,non-disclosure agreements,.,[44], +,Since OpenBSD is based in Canada, no United States export restrictions on cryptography apply, allowing the distribution to make full use of modern algorithms for encryption. For example, the swap space is divided into small sections and each section is encrypted with its own key, ensuring that sensitive data does not leak into an insecure part of the system.,[9], +,OpenBSD randomizes various behaviors of applications, making them less predictable and thus more difficult to attack. For example, PIDs are created and associated randomly to processes; the ,bind, ,system call, uses random ,port numbers,; files are created with random ,inode, numbers; and IP datagrams have random identifiers.,[45], This approach also helps expose bugs in the kernel and in user space programs., +,The OpenBSD policy on openness extends to hardware documentation: in the slides for a December 2006 presentation, de Raadt explained that without it ""developers often make mistakes writing drivers"", and pointed out that ""the [oh my god, I got it to work] rush is harder to achieve, and some developers just give up."",[46], He went on to say that vendor-supplied binary drivers are unacceptable for inclusion in OpenBSD, that they have ""no trust of vendor binaries running in our kernel"" and that there is ""no way to fix [them] ... when they break."",[46], +,Licensing,[,edit,], +,See also: ,BSD and GPL licensing, +,A goal of the OpenBSD Project is to ""maintain the spirit of the original Berkeley Unix ,copyrights,"", which permitted a ""relatively un-encumbered Unix source distribution."",[47], To this end, the ,Internet Systems Consortium (ISC) license, is preferred for new code, but the ,MIT, and BSD licenses are also accepted. The widely used ,GNU General Public License, is considered overly restrictive compared to these.,[48], +,In June 2001, triggered by concerns over Darren Reed's modification of IPFilter's license wording, a systematic license audit of the OpenBSD ports and source trees was undertaken.,[49], Code in more than a hundred files throughout the system was found to be unlicensed, ambiguously licensed or in use against the terms of the license. To ensure that all licenses were properly adhered to, an attempt was made to contact all the relevant copyright holders: some pieces of code were removed, many were replaced, and others, such as the ,multicast, ,routing, tools ,mrinfo, and ,map-mbone,, were ,relicensed, so that OpenBSD could continue to use them.,[50],[51], Also removed during this audit was all software produced by ,Daniel J. Bernstein,. At the time, Bernstein requested that all modified versions of his code be approved by him prior to redistribution, a requirement to which OpenBSD developers were unwilling to devote time or effort.,[52],[53],[54], +,Because of licensing concerns, the OpenBSD team has re-implemented software from scratch or adopted suitable existing software. Of particular note is the development, after license restrictions were imposed on ,IPFilter,, of the ,pf, ,packet filter,, which first appeared in OpenBSD 3.0,[55], and is now available in other major BSDs.,[56], OpenBSD developers have also replaced GPL licensed tools (such as ,diff,, ,grep, and ,pkg-config,) with BSD licensed equivalents.,[,citation needed,], +,Funding,[,edit,], +,Although the operating system and its portable components are used in commercial products, de Raadt says that little of the funding for the project comes from the industry: ""traditionally all our funding has come from user donations and users buying our CDs (our other products don't really make us much money). Obviously, that has not been a lot of money."",[31], +,For a two-year period in the early 2000s, the project received ,DARPA, funding, which ""paid the salaries of 5 people to work completely full-time, bought about $30k in hardware, and paid for 3 hackathons"", from the ,POSSE project,.,[31], +,In 2006, de Raadt expressed concern about the asymmetry of funding: ""I think that contributions should have come first from the vendors, secondly from the corporate users, and thirdly from individual users. But the response has been almost entirely the opposite, with almost a 15 to 1 dollar ratio in favor of the little people. Thanks a lot, little people!"",[31], However, since 2014 several large contributions to the ,OpenBSD Foundation, have come from corporations such as Microsoft,,[57], Facebook, and Google as well as the ,Core Infrastructure Initiative,.,[58], +,In 2006, the OpenBSD Project experienced financial danger.,[59], The ,Mozilla Foundation,[60], and ,GoDaddy,[61], are among the organizations that helped the OpenBSD Project to overcome its financial troubles., +,On 14 January 2014, Bob Beck issued a request for funding to cover electrical costs. If sustainable funding was not found, Beck suggested the OpenBSD Project would shut down.,[62], The project soon received a US$20,000 donation from Mircea Popescu, the Romanian creator of the MPEx bitcoin stock exchange, paid in ,bitcoins,.,[63], The project raised US$150,000,[64], in response to the appeal, enabling it to pay its bills and securing its short-term future.,[63], +,Security and code auditing,[,edit,], +,For more details on this topic, see ,OpenBSD security features,., +,Shortly after OpenBSD's creation, de Raadt was contacted by a local security software company named Secure Networks (SNI).,[65],[66], They were developing a ""network security auditing tool"" called Ballista,,[n 3], which was intended to find and attempt to ,exploit, possible software security flaws. This coincided with de Raadt's own interest in security, so for a time the two cooperated, a relationship that was of particular usefulness leading up to the release of OpenBSD 2.3,[67], and helped to define security as the focal point of the project.,[68], +,OpenBSD includes features designed to improve security, such as:, +, +,secure alternatives to ,POSIX, functions in the C standard library, such as ,strlcat, for ,strcat, and ,strlcpy, for ,strcpy,[69], +,toolchain alterations, including a ,static bounds checker,[27], +,memory protection techniques to guard against invalid accesses, such as ,ProPolice, and the ,W^X, ,page, protection feature, +,strong ,cryptography, and ,randomization,[70], +, +,To reduce the risk of a vulnerability or misconfiguration allowing ,privilege escalation,, many programs have been written or adapted to make use of ,privilege separation,, ,privilege revocation, and ,chrooting,. Privilege separation is a technique, pioneered on OpenBSD and inspired by the ,principle of least privilege,, where a program is split into two or more parts, one of which performs privileged operations and the other—almost always the bulk of the code—runs without privilege.,[71], Privilege revocation is similar and involves a program performing any necessary operations with the privileges it starts with then dropping them. Chrooting involves restricting an application to one section of the ,file system,, prohibiting it from accessing areas that contain private or system files. Developers have applied these features to OpenBSD versions of many common applications, such as ,tcpdump,, ,file,, ,tmux,, ,smtpd,, and ,syslogd,.,[72], +,OpenBSD developers were instrumental in the creation and development of ,OpenSSH,, which is developed in the OpenBSD CVS repositories. OpenSSH is based on the original ,SSH,.,[73], It first appeared in OpenBSD 2.6 and is now by far the most popular SSH client and server, available on many operating systems.,[74], +,The project has a policy of continually auditing source code for problems, work that developer Marc Espie has described as ""never finished ... more a question of process than of a specific bug being hunted."" He went on to list several typical steps once a bug is found, including examining the entire source tree for the same and similar issues, ""try[ing] to find out whether the documentation ought to be amended"", and investigating whether ""it's possible to augment the ,compiler, to warn against this specific problem."",[75], +,The default install is quite minimal, which the project states is to ensure novice users ""do not need to become security experts overnight"",,[76], which fits with open-source and code auditing practices argued to be important elements of a security system.,[77], +,Alleged FBI backdoor investigated,[,edit,], +,On 11 December 2010, Gregory Perry, a former technical consultant for the ,Federal Bureau of Investigation, (FBI), emailed de Raadt alleging that the FBI had paid some OpenBSD ex-developers 10 years previously to insert backdoors into the ,OpenBSD Cryptographic Framework,. De Raadt made the email public on 14 December by forwarding it to the openbsd-tech mailing list and suggested an audit of the ,IPsec, codebase.,[78],[79], De Raadt's response was skeptical of the report and he invited all developers to independently review the relevant code. In the weeks that followed, bugs were fixed but no evidence of backdoors were found.,[80], De Raadt stated ""I believe that NetSec was probably contracted to write backdoors as alleged. If those were written, I don't believe they made it into our tree. They might have been deployed as their own product."",[81], +,Slogan,[,edit,], +,The OpenBSD website features a prominent reference to the security record of the default installation. Until June 2002, the wording read ""Five years without a remote hole in the default install!"",[82], An ,OpenSSH, bug was then discovered that made it possible for a remote attacker to gain ,root privileges, in OpenBSD and in any of the other systems running OpenSSH at the time. It was quickly fixed, as is normal with known security holes.,[83],[84], The slogan was changed to ""One remote hole in the default install, in nearly 6 years!"" In 2007, a network-related remote vulnerability was found, which was also quickly fixed.,[85], The quote was subsequently altered to ""Only two remote holes in the default install, in a heck of a long time!"" As of May 2017,[update],, the wording remains., +,Distribution and marketing,[,edit,], +,The name OpenBSD refers to the fact that OpenBSD's source code is freely available on the Internet. It also refers to the wide range of hardware platforms the operating system supports.,[86], +,OpenBSD is freely available in various ways: the source can be retrieved by anonymous ,CVS,,,[87], and binary releases and development snapshots can be downloaded by FTP, HTTP, and rsync.,[88], Prepackaged CD-ROM sets through version 6.0 can be ordered online for a small fee, complete with an assortment of stickers and a copy of the release's theme song. These, with their artwork and other bonuses, have been one of the project's few sources of income, funding hardware, Internet service, and other expenses.,[89], Beginning with version 6.1, CD-ROM sets are no longer released., +,In common with other operating systems, OpenBSD provides a ,package management system, for easy installation and management of programs which are not part of the base operating system.,[90], Packages are binary files which are extracted, managed and removed using the package tools. On OpenBSD, the source of packages is the ports system, a collection of ,Makefiles, and other infrastructure required to create packages. In OpenBSD, the ports and base operating system are developed and released together for each version: this means that the ports or packages released with, for example, 4.6 are not suitable for use with 4.5 and vice versa.,[90], +, +, +, +, +Animated OpenBSD mascot ,Puffy,, 3D-rendered with ,Blender3D, +, +, +,OpenBSD at first used the ,BSD daemon, mascot. A specialized version of the daemon, the haloed daemon was drawn by Erick Green. Green was asked by de Raadt to create the logo for the 2.3 and 2.4 versions of OpenBSD. At first, it was planned to create a full daemon, including head and body, but Green was only able to complete the head part for OpenBSD 2.3. The body as well as pitchfork and tail was completed for OpenBSD 2.4.,[91], Subsequent releases saw variations, such as Cop daemon by Ty Semaka,,[92], but eventually settling on Puffy,,[93], described as a ,pufferfish,.,[n 4], Since then Puffy has appeared on OpenBSD promotional material and featured in release songs and artwork. The promotional material of early OpenBSD releases did not have a cohesive theme or design, but later the CD-ROMs, release songs, posters and tee-shirts for each release have been produced with a single style and theme, sometimes contributed to by Ty Semaka of the ,Plaid Tongued Devils,.,[37], These have become a part of OpenBSD ,advocacy,, with each release expounding a moral or political point important to the project, often through parody.,[94], Past themes have included: in OpenBSD 3.8, the ,Hackers of the Lost RAID,, a parody of ,Indiana Jones, linked to the new RAID tools featured as part of the release; ,The Wizard of OS,, making its debut in OpenBSD 3.7, based on the work of ,Pink Floyd, and a parody of ,The Wizard of Oz, related to the project's recent work on wireless card drivers; and OpenBSD 3.3's ,Puff the Barbarian,, including an 80s rock-style song and parody of ,Conan the Barbarian,, alluding to open documentation.,[37], +,See also,[,edit,], +, +, +,Free software portal, +,Cryptography portal, +,Computer science portal, +, +, +, +, +,Category:Computing mascots, +,Comparison of BSD operating systems, +,Comparison of open-source operating systems, +,KAME project, – responsible for OpenBSD's IPv6 support, +,List of computing mascots, +,OpenBSD Journal, – online newspaper dedicated to OpenBSD news, +,OpenBSD version history, +,Security-focused operating system, +, +, +,Notes,[,edit,], +, +, +, +,^ ,a, ,b, ,Multiple selections were permitted as a user may use multiple BSD variants side by side., +,^, ,As of OpenBSD 6.0,[update],, either 4.2.1 or 3.3.6 is shipped, depending on the platform.,[27], +,^, ,Later renamed to Cybercop Scanner after SNI was purchased by ,Network Associates,., +,^, ,Pufferfish do not, in fact, possess spikes; images of Puffy are closer to a similar species, the ,porcupinefish,., +, +, +, +,References,[,edit,], +, +, +,^, ,""Package Management"",. ,OpenBSD Frequently Asked Questions,. Retrieved ,1 June, 2016,., , +,^, ,""Platforms"",. ,OpenBSD,. Retrieved ,3 September, 2016,., , +,^, ,""src/sys/dev/microcode/atmel/atu-license – view – 1.3"",. ,cvsweb.openbsd.org,. Retrieved ,20 May, 2016,. ,Redistribution [...] is permitted provided that the following conditions are met: [...] Firmware is redistributed in object code only., , +,^, ,""src/sys/dev/microcode/tigon/tigon-license – view – 1.5"",. ,cvsweb.openbsd.org,. Retrieved ,20 May, 2016,., , +,^ ,a, ,b, ,BSD Usage Survey, ,(PDF), (Report). The BSD Certification Group. 31 October 2005. p. 9,. Retrieved ,16 September, 2012,., , +,^ ,a, ,b, ,Glass, Adam (23 December 1994). ,""Theo De Raadt"",. ,netbsd-users, (Mailing list)., , +,^, ,de Raadt, Theo, (18 October 1996). ,""The OpenBSD 2.0 release"",. ,openbsd-announce, (Mailing list)., , +,^, ,""Announcing – The OpenBSD Foundation"",. ,OpenBSD Journal,. 26 July 2007., , +,^ ,a, ,b, ,McIntire, Tim (8 August 2006). ,""Take a closer look at OpenBSD"",. ,Developerworks,. ,IBM,. Retrieved ,13 December, 2011,., , +,^, ,""AccessEnforcer Model AE800"",. ,Calyptix Security,. Retrieved ,28 May, 2016,., , +,^, ,""High Resistance Firewall genugate"",. ,GeNUA,. Retrieved ,29 May, 2016,., , +,^, ,""RTMX O/S IEEE Real Time POSIX Operating Systems"",. ,RTMX,. Retrieved ,13 December, 2011,. ,RTMX O/S is a product extension to OpenBSD Unix-like operating system with emphasis on embedded, dedicated applications., , +,^, ,"".vantronix secure system"",. ,Compumatica secure networks,. Retrieved ,13 December, 2011,. ,The Next Generation Firewall is not a standalone device, it is a Router for operation in security critical environments with high requirements for availability, comprehensive support as well as reliable and trusted systems powered by OpenBSD., , +,^, ,Dohnert, Roberto J. (21 January 2004). ,""Review of Windows Services for UNIX 3.5"",. ,OSNews,. David Adams., , +,^, ,""About Xenocara"",. ,Xenocara,. Retrieved ,13 December, 2011,., , +,^, ,Tzanidakis, Manolis (21 April 2006). ,""Using OpenBSD on the desktop"",. ,Linux.com,. Retrieved ,9 March, 2012,., , +,^ ,a, ,b, ,Lucas, Michael W. (April 2013). ,Absolute OpenBSD: Unix for the Practical Paranoid, (2nd ed.). San Francisco, California: ,No Starch Press,. ,ISBN, ,978-1-59327-476-4,., , +,^, ,http://openports.se/statistics.php,., , ,Missing or empty ,|title=, (,help,);, ,External link in ,|website=, (,help,);, ,Missing or empty ,|url=, (,help,), +,^ ,a, ,b, ,""OpenBSD 6.0"",. ,OpenBSD,. Retrieved ,1 November, 2016,., , +,^, ,""The X Windows System"",. ,OpenBSD Frequently Asked Questions,. Retrieved ,22 May, 2016,. ,OpenBSD ships with the cwm(1), fvwm(1) and twm(1) window managers, [...], , +,^, ,""Contents of /stable/10/crypto/openssh/README"",. ,svnweb.freebsd.org,. Retrieved ,19 May, 2016,. ,This is the port of OpenBSD's excellent OpenSSH to Linux and other Unices., , +,^, ,""src/crypto/external/bsd/openssh/dist/README – view – 1.4"",. ,NetBSD CVS Repositories,. Retrieved ,19 May, 2016,., , +,^, ,""dragonfly.git/blob – crypto/openssh/README"",. ,gitweb.dragonflybsd.org,. Retrieved ,19 May, 2016,. ,This is the port of OpenBSD's excellent OpenSSH to Linux and other Unices., , +,^, ,""Arch Linux – openssh 7.2p2-1 (x86_64)"",. ,Arch Linux,. Retrieved ,17 May, 2016,., , +,^, ,""openssh"",. ,OpenSUSE,. Retrieved ,17 May, 2016,., , +,^, ,""Debian – Details of package openssh-client in jessie"",. ,Debian,. Retrieved ,17 May, 2016,., , +,^ ,a, ,b, ,c, ,""gcc-local – local modifications to gcc"",. ,OpenBSD manual pages,. Retrieved ,1 November, 2016,., , +,^, ,""httpd – HTTP daemon"",. ,OpenBSD manual pages,. Retrieved ,1 November, 2016,., , +,^, ,""OpenBSD ports ∴ www/apache-httpd,-main"",. ,ports.su,. Retrieved ,18 May, 2016,., , +,^, ,""OpenBSD ports ∴ www/nginx"",. ,ports.su,. Retrieved ,18 May, 2016,., , +,^ ,a, ,b, ,c, ,d, ,Andrews, Jeremy (2 May 2006). ,""Interview: Theo de Raadt"",. ,KernelTrap,. Archived from ,the original, on 24 April 2013., , +,^, ,""OpenBSD's flavors"",. ,OpenBSD Frequently Asked Questions,. Retrieved ,22 May, 2016,., , +,^, ,""Applying patches in OpenBSD"",. ,OpenBSD Frequently Asked Questions,. Retrieved ,15 May, 2016,., , +,^, ,""Migrating to OpenBSD"",. ,OpenBSD Frequently Asked Questions,. Retrieved ,4 January, 2017,., , +,^, ,""Hackathons"",. ,OpenBSD,. Retrieved ,18 May, 2016,., , +,^, ,""Interview: Theo de Raadt of OpenBSD"",. ,NewsForge,. 28 March 2006,. Retrieved ,31 March, 2016,., , +,^ ,a, ,b, ,c, ,""Release Songs"",. ,OpenBSD,. Retrieved ,22 May, 2016,., , +,^, ,Beck, Bob (25 February 2014). ,""Google Summer of Code 2014"",. ,openbsd-misc, (Mailing list),. Retrieved ,4 March, 2014,., , +,^, ,""GSOC 2014 with the OpenBSD Foundation"",. ,Google Summer of Code 2014,. Retrieved ,4 March, 2014,., , +,^, ,Chisnall, David (20 January 2006). ,""BSD: The Other Free UNIX Family"",. ,InformIT,. ,Archived, from the original on 14 March 2014., , +,^, ,Smith, Jesse (18 November 2013). ,""OpenBSD 5.4: Puffy on the Desktop"",. ,Archived, from the original on 30 April 2014., , +,^, ,Cranor, Chuck D. ,""Chuck Cranor's Home Page"",. Retrieved ,13 December, 2011,. ,I also hosted and helped create the first Anonymous CVS server on the Internet (the original ,anoncvs,.openbsd,.org, [...], , +,^ ,a, ,b, ,Cranor, Chuck D.; ,de Raadt, Theo, (6 June 1999). ,Opening the Source Repository with Anonymous CVS,. ,USENIX, Annual Technical Conference. Monterey, California,. Retrieved ,13 December, 2011,., , +,^, ,""Project Goals"",. ,OpenBSD,. Retrieved ,18 May, 2016,. ,Integrate good code from any source with acceptable licenses. [...], NDAs are never acceptable., , +,^, ,de Raadt, Theo,; Hallqvist, Niklas; Grabowski, Artur; Keromytis, Angelos D.; ,Provos, Niels, (6 June 1999). ,""Randomness Used Inside the Kernel"",. ,Cryptography in OpenBSD: An Overview,. ,USENIX, Annual Technical Conference. Monterey, California,. Retrieved ,1 February, 2014,., , +,^ ,a, ,b, ,de Raadt, Theo, (5 December 2006). ,""Presentation at OpenCON"",. ,OpenBSD,. Retrieved ,13 December, 2011,., , +,^, ,""Copyright Policy"",. ,OpenBSD,. Retrieved ,13 December, 2011,., , +,^, ,Matzan, Jem (15 June 2005). ,""BSD cognoscenti on Linux"",. ,NewsForge,. ,Linux.com,. Retrieved ,28 May, 2016,., , +,^, ,Gasperson, Tina (6 June 2001). ,""OpenBSD and ipfilter still fighting over license disagreement"",. ,Linux.com,. Archived from ,the original, on 26 June 2008., , +,^, ,""src/usr.sbin/mrinfo/mrinfo.c – view – 1.7"",. ,cvsweb.openbsd.org,. 31 July 2001,. Retrieved ,24 May, 2016,. ,New license from Xerox! This code is now FREE! Took a while and a lot of mails, but it is worth it., , +,^, ,""src/usr.sbin/map-mbone/mapper.c – view – 1.5"",. ,cvsweb.openbsd.org,. 31 July 2001,. Retrieved ,24 May, 2016,. ,New license from Xerox! This code is now FREE! Took a while and a lot of mails, but it is worth it., , +,^, ,de Raadt, Theo, (24 August 2001). ,""Re: Why were all DJB's ports removed? No more qmail?"",. ,openbsd-misc, (Mailing list). Archived from ,the original, on 19 April 2016., , +,^, ,Bernstein, Daniel J., (27 August 2001). ,""Re: Why were all DJB's ports removed? No more qmail?"",. ,openbsd-misc, (Mailing list). Archived from ,the original, on 4 February 2012., , +,^, ,Espie, Marc (28 August 2001). ,""Re: Why were all DJB's ports removed? No more qmail?"",. ,openbsd-misc, (Mailing list). Archived from ,the original, on 19 April 2016., , +,^, ,Hartmeier, Daniel (10 June 2002). ,Design and Performance of the OpenBSD Stateful Packet Filter (pf),. ,USENIX, Annual Technical Conference. Monterey, California,. Retrieved ,13 December, 2011,., , +,^, ,The OpenBSD PF Packet Filter Book: PF for NetBSD, FreeBSD, DragonFly and OpenBSD,. Reed Media Services. ,ISBN, ,0-9790342-0-5,. Retrieved ,19 May, 2016,., , +,^, ,McAllister, Neil (8 July 2015). ,""Microsoft rains cash on OpenBSD Foundation, becomes top 2015 donor"",. ,The Register,. Retrieved ,27 May, 2016,., , +,^, ,""Contributors"",. ,OpenBSD Foundation,. Retrieved ,27 May, 2016,., , +,^, ,""OpenBSD Project in Financial Danger"",. ,Slashdot,. 21 March 2006,. Retrieved ,12 December, 2014,., , +,^, ,""Mozilla Foundation Donates $10K to OpenSSH"",. ,Slashdot,. 4 April 2006,. Retrieved ,12 December, 2014,., , +,^, ,""GoDaddy.com Donates $10K to Open Source Development Project"",. ,The Hosting News,. 19 April 2006. Archived from ,the original, on 11 November 2006., , +,^, ,Beck, Bob (14 January 2014). ,""Request for Funding our Electricity"",. ,openbsd-misc, (Mailing list),. Retrieved ,17 May, 2016,., , +,^ ,a, ,b, ,Bright, Peter (20 January 2014). ,""OpenBSD rescued from unpowered oblivion by $20K bitcoin donation"",. ,Ars Technica,. Retrieved ,20 January, 2014,., , +,^, ,""The OpenBSD Foundation 2014 Fundraising Campaign"",. ,OpenBSD Foundation,. Retrieved ,24 May, 2014,., , +,^, ,Varghese, Sam (8 October 2004). ,""Staying on the cutting edge"",. ,The Age,. Retrieved ,13 December, 2011,., , +,^, ,Laird, Cameron; Staplin, George Peter (17 July 2003). ,""The Essence of OpenBSD"",. ,ONLamp,. Retrieved ,13 December, 2011,., , +,^, ,de Raadt, Theo, (19 December 2005). ,""2.3 release announcement"",. ,openbsd-misc, (Mailing list). ,Without [SNI's] support at the right time, this release probably would not have happened., , +,^, ,Wayner, Peter (13 July 2000). ,""18.3 Flames, Fights, and the Birth of OpenBSD"",. ,Free For All: How Linux and the Free Software Movement Undercut the High Tech Titans, (1st ed.). ,HarperBusiness,. ,ISBN, ,978-0-06-662050-3,. Retrieved ,13 December, 2011,., , +,^, ,Miller, Todd C.; ,de Raadt, Theo, (6 June 1999). ,strlcpy and strlcat - Consistent, Safe, String Copy and Concatenation,. ,USENIX, Annual Technical Conference. Monterey, California,. Retrieved ,13 December, 2011,., , +,^, ,de Raadt, Theo,; Hallqvist, Niklas; Grabowski, Artur; Keromytis, Angelos D.; ,Provos, Niels, (6 June 1999). ,Cryptography in OpenBSD: An Overview,. ,USENIX, Annual Technical Conference. Monterey, California,. Retrieved ,27 May, 2016,., , +,^, ,Provos, Niels, (9 August 2003). ,""Privilege Separated OpenSSH"",. Retrieved ,13 December, 2011,., , +,^, ,""Innovations"",. ,OpenBSD,. Retrieved ,18 May, 2016,. ,Privilege separation: [...] The concept is now used in many OpenBSD programs, for example [...] etc., , +,^, ,""Project History and Credits"",. ,OpenSSH,. Retrieved ,13 December, 2011,., , +,^, ,""SSH usage profiling"",. ,OpenSSH,. Retrieved ,13 December, 2011,., , +,^, ,Biancuzzi, Federico (18 March 2004). ,""An Interview with OpenBSD's Marc Espie"",. ,ONLamp,. Retrieved ,13 December, 2011,., , +,^, ,""Security"",. ,OpenBSD,. Retrieved ,13 December, 2011,. ,Secure by Default., , +,^, ,Wheeler, David A., (3 March 2003). ,""2.4. Is Open Source Good for Security?"",. ,Secure Programming for Linux and Unix HOWTO,. Retrieved ,13 December, 2011,., , +,^, ,de Raadt, Theo, (14 December 2010). ,""Allegations regarding OpenBSD IPSEC"",. ,openbsd-tech, (Mailing list),. Retrieved ,28 May, 2016,., , +,^, ,Holwerda, Thom (14 December 2010). ,""FBI Added Secret Backdoors to OpenBSD IPSEC"",. ,OSNews,. Retrieved ,13 December, 2011,., , +,^, ,Ryan, Paul (23 December 2010). ,""OpenBSD code audit uncovers bugs, but no evidence of backdoor"",. ,Ars Technica,. Retrieved ,9 January, 2011,., , +,^, ,Mathew J. Schwartz (22 December 2010). ,""OpenBSD Founder Believes FBI Built IPsec Backdoor"",. ,InformationWeek: DARKreading,., , +,^, ,""OpenBSD"",. ,OpenBSD,. Archived from ,the original, on 28 May 2002., , +,^, ,""OpenSSH Remote Challenge Vulnerability"",. ,Internet Security Systems,. 26 June 2002,. Retrieved ,13 December, 2011,., , +,^, ,""OpenSSH 'Challenge-Response' authentication buffer overflow"",. ,Internet Security Systems,. Retrieved ,13 December, 2011,., , +,^, ,""OpenBSD's IPv6 mbufs remote kernel buffer overflow"",. ,Core Security Technologies,. 13 March 2007,. Retrieved ,13 December, 2011,., , +,^, ,Grimes, Roger A. (29 December 2006). ,""New year's resolution No. 1: Get OpenBSD"",. ,InfoWorld,., , +,^, ,""Anonymous CVS"",. ,OpenBSD,. Retrieved ,13 December, 2011,., , +,^, ,""Mirrors"",. ,OpenBSD,. Retrieved ,22 May, 2016,., , +,^, ,""Orders"",. ,OpenBSD,. Retrieved ,20 May, 2016,., , +,^ ,a, ,b, ,""Packages and Ports"",. ,OpenBSD Frequently Asked Questions,. Retrieved ,22 May, 2016,., , +,^, ,""OpenBSD"",. ,mckusick.com,. Retrieved ,12 December, 2014,., , +,^, ,de Raadt, Theo, (19 May 1999). ,""OpenBSD 2.5 Release Announcement"",. ,openbsd-announce, (Mailing list). Archived from ,the original, on 14 March 2014. ,OpenBSD 2.5 introduces the new Cop daemon image done by cartoonist Ty Semeka., , +,^, ,""OpenBSD 2.7"",. ,OpenBSD,. Retrieved ,22 May, 2016,., , +,^, ,Matzan, Jem (1 December 2006). ,""OpenBSD 4.0 review"",. ,Software in Review,. Retrieved ,13 December, 2011,. ,Each OpenBSD release has a graphical theme and a song that goes with it. The theme reflects a major concern that the OpenBSD programmers are addressing or bringing to light., , +, +, +,External links,[,edit,], +, +,Listen to this article, (,info/dl,) +, +, +, +, +, +, +, +, +, +, +, +, +,This audio file was created from a revision of the article "",OpenBSD,"" dated 2011-10-23, and does not reflect subsequent edits to the article. (,Audio help,), +,More spoken articles, +, +, +, +, +,Wikimedia Commons has media related to ,OpenBSD,., +, +, +, +, +, +,The Wikibook ,Guide to Unix, has a page on the topic of: ,OpenBSD, +, +, +, +,Official website, +,OpenBSD, at ,DistroWatch, +,OpenBSD ports & packages, ,latest package info, +,OpenBSD source code search, +,old list of OpenBSD commands, +,Video – An OpenBSD talk by Michael Lucas, on ,YouTube, +, +, +, +, +, +, +, +,v, +,t, +,e, +, +, +,The ,OpenBSD, Project, +, +, +, +,Operating system, +, +, +, +,OpenBSD, +, +,version history, +,security, +, +, +, +, +, +, +, +,Related projects, +, +, +, +,CARP, +,LibreSSL, +,mandoc, +,OpenSSH, +,OpenBGPD, +,OpenIKED, +,OpenOSPFD, +,OpenNTPD, +,OpenSMTPD, +,PF, +,sndio, +,spamd, +,Systrace, +,tmux, +,Xenocara, +, +,cwm, +, +, +,W^X, +, +, +, +, +, +,People, +, +, +, +,Theo de Raadt, +,Niels Provos, +,OpenBSD Foundation, +,Plaid Tongued Devils, +, +, +, +, +, +,Resources, +, +, +, +,OpenBSD Journal, +, +, +, +, +, +, +, +, +, +, +, +, +,v, +,t, +,e, +, +, +,Berkeley Software Distribution, +, +, +, +,People, +, +, +, +,Bob Fabry, +,Keith Bostic, +,Marshall Kirk McKusick, +,Michael J. Karels, +,Bill Joy, +,Samuel Leffler, +,Jordan Hubbard, +,Theo de Raadt, +,Poul-Henning Kamp, +,Lynne, and ,William Jolitz, +, +, +, +, +, +,Derivatives, +, +, +, +, +,Active, +, +, +, +,FreeBSD, +,OpenBSD, +,NetBSD, +,DragonFly BSD, +,TrueOS, +,Junos OS, +,Darwin, +,PS3,/,PS4,/,PSP,/,PS Vita operating system, +,Nintendo Switch operating system, +,Full list, +, +, +, +, +, +,Discontinued, +, +, +, +,386BSD, +,BSD/OS, +,SunOS, +,Ultrix, +, +, +, +, +, +, +, +, +,Companies, +, +, +, +,Sleepycat Software, +,Walnut Creek CDROM, +,Berkeley Software Design, +,iXsystems, +, +, +, +, +, +,Other topics, +, +, +, +,Comparison, +,History, +,Licensing, +,BSD Daemon, +,Computer Systems Research Group, +, +, +, +, +, +, +, +, +, +, +, +, +,v, +,t, +,e, +, +, +,Unix, and ,Unix-like, ,operating systems, +, +, +, +, +, +, +,BSD, +, +,386BSD, +, +,FreeBSD, +,NetBSD, +,OpenBSD, +,DragonFly BSD, +, +, +,NeXTSTEP, +,Darwin, +, +,macOS, +,iOS, +, +, +,SunOS, +,Ultrix, +, +, +,Coherent, +,GNU, +,Linux, +, +,Android, +,Chrome OS, +, +, +,LynxOS, +,MINIX, +,QNX, +, +,BlackBerry 10, +, +, +,Research Unix, +,System V, +, +,A/UX, +,AIX, +,HP-UX, +,illumos, +,IRIX, +,OpenServer, +,Solaris, +,Tru64 UNIX, +,UnixWare, +, +, +,Xenix, +,more..., +, +, +, +, +, +, +, +, +, ,Category, +, ,Commons, +, ,Book, +, +, +, +, +, +, +, +, +, +,Authority control, +, +, +, +,MusicBrainz,: ,1ffebdcd-b78e-463d-9ce9-f2536be58db5, +, +, +, +, +, +, + + +, +, +, +, +",OpenBSD +" 3 September 2017, at 09:03."," +, +,Adrian Holovaty, +, +, +, +,Adrian Holovaty in 2009, +, +, +, +,Born, +,1981 (age 36–37), +,Naperville, Illinois, +, +, +,Nationality, +,USA, +, +, +,Alma mater, +,Missouri School of Journalism, (B.A., 2001), +, +, +,Occupation, +,web developer, journalist, entrepreneur, +, +, +,Known for, +,Django Web framework, +, +, +,Adrian Holovaty, (born 1981) is an American web developer, journalist and entrepreneur from ,Chicago, Illinois,, living in ,Amsterdam, the Netherlands,. He is co-creator of the ,Django web framework, and an advocate of ""journalism via computer programming""., +, +, +, +,Contents, +, +, +,1, ,Life and career, +, +,1.1, ,Crime mapping innovations, +, +, +,2, ,References, +,3, ,External links, +, +, +, +,Life and career,[,edit,], +,Holovaty, a ,Ukrainian American,, grew up in ,Naperville, Illinois,. He graduated from the ,Missouri School of Journalism, in 2001 and worked as a web developer/journalist for ,The Atlanta Journal-Constitution,, ,Lawrence Journal-World, and ,The Washington Post, before starting ,EveryBlock,, a web startup that provided ""microlocal"" news, in 2007.,[1], +,While working at the ,Lawrence Journal-World, from 2002 to 2005, he and other web developers (,Simon Willison,, Jacob Kaplan-Moss and Wilson Miner,[2],) created ,Django,, an ,open source, ,web application framework, for ,Python,. He and Kaplan-Moss served as the framework's ,Benevolent Dictators for Life, until January 2014.,[3], The pair wrote ,The Django Book,, first published in 2007., +,Holovaty is also a guitarist. In 1999, he recorded an album of his own guitar compositions,,[4], and since 2007 he has posted videos of his acoustic guitar arrangements on ,YouTube,, building an audience of more than 20,000 subscribers.,[5], In 2012 he and PJ Macklin founded ,SoundSlice,, a ,collaboratively edited, website which shows YouTube music videos alongside simultaneous animated ,tablature,, intended to help guitarists learn new musical pieces.,[6], +,Crime mapping innovations,[,edit,], +,In 2005, Holovaty launched ,chicagocrime.org,, a ,Google Maps, ,mashup, of ,Chicago Police Department, crime data.,[7], The site won the 2005 Batten Award for Innovations in Journalism,[8], and was named by ,The New York Times, as one of 2005's best ideas.,[9], +,As one of the first Google Maps mashups, it helped influence Google to create its official Google Maps API.,[10], Newspaper sites such as the ,Chicago Tribune, and the ,Chicago Sun-Times, have incorporated a map from EveryBlock, the successor to chicagocrime.org, into their web sites.,[11], +,In 2007, Holovaty was awarded a $1.1 million ,Knight Foundation, grant and left his job as editor of editorial innovations at ,washingtonpost.com, to start EveryBlock, the successor to chicagocrime.org.,[12], On August 17, 2009 EveryBlock was officially acquired by ,msnbc.com,.,[13], The terms of the deal were not disclosed.,[14], In February 2013, NBC News announced that it was shutting down EveryBlock.,[15], +,References,[,edit,], +, +, +, +,^, ,Goodbye hyperlocal, hello microlocal | Holovaty.com, +,^, ,Django committers, +,^, ,Adrian and Jacob retiring as Django BDFLs | Holovaty.com, +,^, ,Music | Holovaty.com, +,^, ,YouTube - adrianholovaty's Channel, +,^, ,""About Soundslice"",. SoundSlice LLC. November 2012., , +,^, ,Announcing chicagocrime.org | Holovaty.com, +,^, ,Batten award, +,^, ,Do-It-Yourself Cartography, +,^, ,Official Google Blog: The world is your JavaScript-enabled oyster, +,^, ,Street Wise: ,http://www.chicagomag.com/Chicago-Magazine/June-2009/Street-Wise/, +,^, ,Knight Foundation grant | Holovaty.com, +,^, ,Nieman Journalism Lab. ,""EveryBlock"",. ,Encyclo: an encyclopedia of the future of news,. Retrieved ,1 April, 2012,., , +,^, ,http://www.msnbc.msn.com/id/32443365/ns/business-us_business/, +,^, ,""NBC News shuts down hyperlocal site EveryBlock"",. CNN. February 7, 2013,. Retrieved ,February 7,, 2013,., , +, +, +, +,External links,[,edit,], +, +,Holovaty.com -- personal site, +,EveryBlock, +,YouTube videos, +, + + +, +, +, +, +",Adrian Holovaty +" 15 January 2018, at 11:32."," +,Drupal, +, +, +, +, +, +,Drupal 8 in action. Showing in-context editing and previews (,WYSIWYG,)., +, +, +, +,Original author(s), +,Dries Buytaert, +, +, +,Initial release, +,May 18, 2000,; 17 years ago, (,2000-05-18,),[1], +, +, +, +, +, +,Stable release, +, +,8.4.2,[2], / 3 November 2017,; 2 months ago, (,2017-11-03,), +, +, +, +, +, +, +,Repository, +, +, +, +,http://cgit.drupalcode.org/drupal, +, +, +, +, +, +,Development status, +,Active, +, +, +,Written in, +,PHP,, using ,Symfony, +, +, +,Operating system, +,Unix-like,, ,Windows, +, +, +,Platform, +,Cross-platform, +, +, +,Size, +,80 MB (uncompressed Drupal 8 core),[2], +, +, +,Available in, +,Multilingual, +, +, +,Type, +,Content management framework,, ,Content management system,, ,Community, and ,Blog software, +, +, +,License, +,GPLv2, or later,[3], +, +, +,Website, +,www,.drupal,.org, +, +, +,Drupal, ,/,ˈ,d,r,uː,p,əl,/, is ,[4], a ,free, and ,open source, ,content-management framework, written in ,PHP, and distributed under the ,GNU General Public License,.,[3],[5],[6], Drupal provides a ,back-end, framework for at least 2.3% of all ,web sites, worldwide,[7],[8], – ranging from personal ,blogs, to corporate, political, and government sites.,[9], Systems also use Drupal for ,knowledge management, and for business collaboration.,[10], +,As of November 2017,[update],, the Drupal community is composed of more than 1.3 million members,,[11],[12], including 109,000 users actively contributing,,[13], resulting in more than 39,000 free modules that extend and customize Drupal functionality,,[14], over 2,500 free themes that change the look and feel of Drupal,,[15], and at least 1,180 free distributions that allow users to quickly and easily set up a complex, use-specific Drupal in fewer steps.,[16], +,The standard release of Drupal, known as ,Drupal core,, contains basic features common to ,content-management systems,. These include user account registration and maintenance, menu management, ,RSS, feeds, taxonomy, page layout customization, and system administration. The Drupal core installation can serve as a simple Web site, a single- or multi-user blog, an ,Internet forum,, or a community Web site providing for ,user-generated content,., +,Drupal also describes itself as a ,Web application framework,.,[17], When compared with notable frameworks Drupal meets most of the generally accepted ,feature requirements, for such web frameworks.,[18],[19],[20], +,Although Drupal offers a sophisticated ,API, for developers, basic Web-site installation and administration of the framework require no programming skills.,[21], +,Drupal runs on any ,computing platform, that supports both a ,Web server, capable of running PHP and a ,database, to store content and configuration., +, +, +, +,Contents, +, +, +,1, ,History, +,2, ,Core, +, +,2.1, ,Core modules, +,2.2, ,Core themes, +,2.3, ,Localization, +,2.4, ,Auto-update notification, +,2.5, ,Database abstraction, +,2.6, ,Windows development, +,2.7, ,Accessibility, +, +, +,3, ,Extending the core, +, +,3.1, ,Modules, +,3.2, ,Themes, +,3.3, ,Distributions, +, +, +,4, ,Architecture, +,5, ,Community, +,6, ,Security, +,7, ,Criticism, +,8, ,See also, +,9, ,References, +,10, ,Further reading, +,11, ,External links, +, +, +, +,History,[,edit,], +, +,Latest major releases, +, +,Version, +,Release date, +, +, +,8.4.2, +,November 3, 2017,[2], +, +, +,8.2.8, +,April 19, 2017,[2], +, +, +,7.56, +,June 21, 2017,[22], +, +, +,6.38, +,February 24, 2016,[23], +, +, +,5.23, +,August 11, 2010,[24], +, +, +, +, +, +, +Drupal version 1-6 release history timeline, +, +, +,Originally written by ,Dries Buytaert, as a ,message board,, Drupal became an ,open source, project in 2001.,[25], The name ,Drupal, represents an English rendering of the ,Dutch, word ,druppel,, which means ""drop"" (as in a water droplet).,[26], The name came from the now-defunct Drop.org Web site, whose code slowly evolved into Drupal. Buytaert wanted to call the site ""dorp"" (Dutch for ""village"") for its community aspects, but mistyped it when checking the domain name and thought the error sounded better.,[25], +,Interest in Drupal got a significant boost in 2003 when it helped build ""DeanSpace"" for ,Howard Dean,, one of the candidates in the ,U.S. Democratic Party,'s primary campaign for the ,2004 U.S. presidential election,. DeanSpace used open-source sharing of Drupal to support a decentralized network of approximately 50 disparate, unofficial pro-Dean websites that allowed users to communicate directly with one another as well as with the campaign.,[27], After Dean ended his campaign, members of his Web team continued to pursue their interest in developing a Web platform that could aid political activism by launching CivicSpace Labs in July 2004, ""...the first company with full-time employees that was developing and distributing Drupal technology."",[28], Other companies began to also specialize in Drupal development.,[29],[30], By 2013 the Drupal Web site listed hundreds of vendors that offered Drupal-related services.,[31], +,As of 2014,[update], Drupal is developed by a community,,[32], and its popularity is growing rapidly.,[,citation needed,], From July 2007 to June 2008 the Drupal.org site provided more than 1.4 million downloads of Drupal software, an increase of approximately 125% from the previous year.,[33],[34], +,As of January 2017,[update], more than 1,180,000 sites use Drupal.,[35], These include hundreds of well-known organizations,,[36], including corporations, media and publishing companies, governments, non-profits,,[37], schools, and individuals. Drupal has won several ,Packt, Open Source CMS Awards,[38], and won the ,Webware 100, ,[,clarification needed,], three times in a row.,[39],[40], +,On March 5, 2009 Buytaert announced a ,code freeze, for Drupal 7 for September 1, 2009.,[41], Drupal 7 was released on January 5, 2011, with release parties in several countries.,[42], After that, maintenance on Drupal 5 stopped, with only Drupal 7 and Drupal 6 maintained.,[43], Drupal 7 series maintenance updates are released regularly.,[44], +,On December 1, 2012, Drupal 8 started its feature completion.,[45], About three years later, on October 7, 2015 Drupal 8 first release candidate (rc1) was announced.,[46], Drupal 8 includes new features and improvements for both users and developers, including: a revamped user interface; WYSIWYG and in-place editing; improved mobile support; added and improved key contributed modules including Views, Date, and Entity Reference; introduced a new object-oriented backend leveraging Symfony components; revamped configuration management; and improved multilingual support. Drupal 8 rc1 is the collective work of over 3,200 core contributors.,[47], +,Drupal 8.0.0 was released on November 19, 2015.,[48], A subsequent upgrade to it is also available in the form of Drupal 8.1.0,[49], that brings numerous improvements, including CKEditor WYSIWYG enhancements, added APIs, an improved help page, and two new experimental modules. Experimental modules are meant for testing purposes, but are not yet fully supported., +,Core,[,edit,], +,In the Drupal community, ""core"" refers to the collaboratively built codebase that can be extended through contributory modules and for versions prior to Drupal 8 is kept outside of the ""sites"" folder of a Drupal installation.,[50], (Starting with version 8, core is kept in its own 'core' sub-directory.) Drupal core is the stock element of Drupal. Bootstrap and Common libraries are defined as Drupal core and all other functionality is defined as Drupal modules including the system module itself., +,In a Drupal website's default configuration, authors can contribute content as either registered or anonymous users (at the discretion of the administrator). This content is accessible to web visitors through a variety of selectable criteria. As of Drupal 8, Drupal has adopted some ,Symfony, libraries into Drupal core., +,Core modules also includes a hierarchical ,taxonomy, system, which lets developers categorize content or ,tagged, with key words for easier access.,[21], +,Drupal maintains a detailed ,changelog, of core feature updates by version.,[51], +,Core modules,[,edit,], +,Drupal core includes optional modules that can be enabled by the administrator to extend the functionality of the core website.,[52], +,The core Drupal distribution provides a number of features, including:,[52], +, +, +,Access statistics and logging, +,Advanced search, +,Blogs, books, comments, forums, and polls, +,Caching and feature throttling for improved performance, +,Descriptive URLs, +,Multi-level menu system, +,Multi-site support,[53], +,Multi-user content creation and editing, +,OpenID, support, +,RSS feed and feed aggregator, +,Security and new release update notification, +,User profiles, +,Various access control restrictions (user roles, IP addresses, email), +,Workflow tools (triggers and actions), +, +, +,Core themes,[,edit,], +,Drupal includes core themes, which customize the ""look and feel"" of Drupal sites,,[54], for example, Garland and Bartik., +,The Color Module, introduced in Drupal core 5.0, allows administrators to change the color scheme of certain themes via a browser interface.,[55], +,Localization,[,edit,], +,As of January 2017,[update],, Drupal had been made available in 100 languages and ,English, (the default).,[56], Support is included for right-to-left languages such as ,Arabic,, ,Persian,, and ,Hebrew,.,[57], +,Drupal localization is built on top of ,gettext,, the GNU ,internationalization and localization, (i18n) library., +,Auto-update notification,[,edit,], +,Drupal can automatically notify the administrator about new versions of modules, themes, or the Drupal core.,[57], It's important to update quickly after security updates are released., +,Before updating it is highly recommended to take backup of core, modules, theme, files and database. If there is any error shown after update or new updates is not compatible with a module, then it can be quickly replace by backup. There are several backup modules available in Drupal., +,On October 15, 2014, a sql injection vulnerability was announced and update released.,[58], Two weeks later the Drupal security team released an advisory explaining that everyone should act under the assumption that any site not updated within 7 hours of the announcement are infected.,[59], Thus, it can be extremely important to apply these updates quickly and usage of a tool to make this process easier like drush is highly recommended., +,Database abstraction,[,edit,], +,Prior to version 7, Drupal had functions that performed tasks related to databases, such as SQL query cleansing, multi-site table name prefixing, and generating proper SQL queries. In particular, Drupal 6 introduced an abstraction layer that allowed programmers to create SQL queries without writing SQL., +,Drupal 7 extends the data abstraction layer so that a programmer no longer needs to write SQL queries as text strings. It uses ,PHP Data Objects, to abstract the database. ,Microsoft, has written a database driver for their ,SQL Server,.,[60], Drupal 7 supports the file-based SQLite database engine, which is part of the standard PHP distribution., +,Windows development,[,edit,], +,With Drupal 7's new database abstraction layer, and ability to run on the Windows web server ,IIS,, it is now easier for Windows developers to participate in the Drupal community., +,A group on Drupal.org is dedicated to Windows issues.,[61], +,Accessibility,[,edit,], +,With the release of Drupal 7, ,Web accessibility, has been greatly improved by the Drupal community.,[62], Drupal is a good framework for building sites accessible to people with disabilities, because many of the best practices have been incorporated into the program code Core. The accessibility team is carrying on the work of identifying and resolving accessibility barriers and raising awareness within the community., +,Drupal 7 started the adoption of ,WAI-ARIA, support for ,Rich Internet Applications, and this has been carried further in Drupal 8. There have been many improvements to both the visitor and administrator sides of Drupal, especially:, +, +,Drag and drop functionality, +,Improved color contrast and intensity, +,Adding skip navigation to core themes, +,Adding labels by default for input forms, +,Fixing CSS display:none with consistent methods for hiding and exposing text on focus., +, +,The community also added an accessibility gate for core issues in Drupal 8.,[63], +,Extending the core,[,edit,], +,Drupal core is ,modular,, defining a system of ,hooks, and ,callbacks,, which are accessed internally via an ,API,.,[64], This design allows third-party contributed ,modules, and ,themes, to extend or override Drupal's default behaviors without changing Drupal core's code., +,Drupal isolates core files from contributed modules and themes. This increases flexibility and security and allows administrators to cleanly upgrade to new releases without overwriting their site's customizations.,[65], The Drupal community has the saying, ""Never hack core,"" a strong recommendation that site developers do not change core files.,[50], +,Modules,[,edit,], +,Contributed modules offer such additional or alternate features as image galleries, custom content types and content listings, ,WYSIWYG, editors, private messaging, third-party integration tools,,[66], integrating with BPM portals,,[67], and more. As of January 2017,[update], the Drupal website lists more than 36,500 free ,modules,.,[14], +,Some of the most commonly used contributed modules include:,[68], +, +,Content Construction Kit (CCK): allows site administrators to dynamically create content types by extending the database schema. ""Content type"" describes the kind of information. Content types include, but are not limited to, events, invitations, reviews, articles, and products. The CCK Fields API is in Drupal core in Drupal 7.,[69],[70], +,Views: facilitates the retrieval and presentation, through a database abstraction system, of content to site visitors. Basic views functionality has been added to core in Drupal 8.,[71], +,Panels: drag and drop layout manager that allows site administrators to visually design their site., +,Rules: conditionally executed actions based on recurring events., +,Features: enables the capture and management of features (entities, views, fields, configuration, etc.) into custom modules., +,Context: allows definition of sections of site where Drupal features can be conditionally activated, +,Media: makes photo uploading and media management easier, +,Services: provides an API for Drupal., +,Organic Groups Mailing List, +, +,Themes,[,edit,], +,As of January 2017,[update],, there are more than 2,400,[15], free community-contributed ,themes,. Themes adapt or replace a Drupal site's default look and feel., +,Drupal themes use standardized formats that may be generated by common third-party theme design engines. Many are written in the ,PHPTemplate, engine,[72], or, to a lesser extent, the ,XTemplate, engine.,[73], Some templates use hard-coded ,PHP,. Drupal 8 will integrate the ,Twig, templating engine., +,The inclusion of the PHPTemplate and XTemplate engines in Drupal addressed user concerns about flexibility and complexity.,[74], The Drupal theming system utilizes a ,template engine, to further separate ,HTML,/,CSS, from PHP. A popular Drupal contributed module called 'Devel' provides GUI information to developers and themers about the page build., +,Community-contributed themes,[75], at the Drupal website are released under a free ,GPL, license,,[76], and the most installed Drupal themes are ,listed on this page,.,[77], +,Distributions,[,edit,], +,In the past, those wanting a fully customized installation of Drupal had to download a pre-tailored version separately from the official Drupal core. Today, however, a distribution defines a packaged version of Drupal that upon installation, provides a website or application built for a specific purpose., +,The distributions offer the benefit of a new Drupal site without having to manually seek out and install third-party contributed modules or adjust configuration settings.,[78], They are collections of modules, themes, and associated configuration settings that prepare Drupal for custom operation. For example, a distribution could configure Drupal as a ""brochure"" site rather than a news site or ,online store,., +,Architecture,[,edit,], +,Drupal is based on the ,Presentation Abstraction Control, architecture, or PAC., +,The ,menu system, acts as the Controller. It accepts input via a single source (,HTTP GET, and ,POST,), routes requests to the appropriate helper functions, pulls data out of the Abstraction (nodes and, from Drupal 5 onwards, forms), and then pushes it through a filter to get a Presentation of it (the theme system)., +,It even has multiple, parallel PAC agents in the form of blocks that push data out to a common canvas (page.tpl.php).,[79], +,Community,[,edit,], +,Drupal.org has a large community of users and developers who provide active ,community, support by coming up with new updates to help improve the functionality of Drupal,,[80], As of January 2017,[update], more than 105,400 users are actively contributing.,[13], The semiannual DrupalCon conference alternates between North America, Europe and Asia.,[81], Attendance at DrupalCon grew from 500 at ,Szeged, in August 2008, to over 3,700 people at Austin, Texas in June, 2014., +,Smaller events, known as ""Drupal Camps"" or DrupalCamp,,[82], occur throughout the year all over the world. The annual Florida DrupalCamp brings users together for ,Coding for a Cause, that benefits a local nonprofit organization, as does the annual GLADCamp (,Greater Los Angeles Drupal, Camp) event, ,Coders with a Cause,., +,The Drupal community also organizes professional and semi-professional gatherings called ,meetups, at a large number of venues around the world. In July, 2013, ,Droplabs,, a co-working space in Los Angeles, California, was recognized as the world's ""Top Drupal Location,[83],"" (with 62 recorded events) when compared with other event venues over a 12-month period., +,There are a number of active Drupal forums,,[84], mailing lists,[85], and discussion groups.,[86], Drupal also maintains several ,IRC, channels,[87], on the ,Freenode, network., +,There are over 30 national communities,[88], around drupal.org offering language-specific support., +,Notable Drupal users include ,NBC,, ,Taboola,, and ,Patch,.,[89], +,Security,[,edit,], +,Drupal's policy is to announce the nature of each security vulnerability once the fix is released.,[90],[91], +,Administrators of Drupal sites are automatically notified of these new releases via the Update Status module (Drupal 6) or via the Update Manager (Drupal 7).,[92], +,Drupal maintains a security announcement mailing list, a history of all security advisories,,[93], a security team home page,,[94], and an RSS feed,[95], with the most recent security advisories., +,In mid-October 2014,,[96], Drupal issued a ""highly critical"" security advisory regarding an ,SQL injection, bug in Drupal 7, also known as Drupalgeddon.,[97],[98], +,Downloading and installing an upgrade to Drupal 7.32 fixes the vulnerability, but does not remove any ,backdoor, installed by hackers if the site has already been ,compromised,.,[99], Attacks began soon after the vulnerability was announced. According to the Drupal security team, where a site was not patched within hours of the announcement, it should be considered compromised and taken offline by being replaced with a static HTML page while the administrator of its server must be told that other sites on the same server may also have been compromised., +,To solve the problem, the site must be restored using backups from before October 15, be patched and manually updated, and anything merged from the site must be audited.,[100], +,Criticism,[,edit,], +, +, +, +, +, +, +,This section needs to be ,updated,. ,Please update this article to reflect recent events or newly available information., ,(December 2014), +, +, +, +,In an article,[101], about the adoption of Drupal by the Whitehouse.gov site, ,Slate, associate editor Chris Wilson,[102], lists some common criticisms of Drupal. Other criticisms have included:, +, +,Usability:, Aspects of the Drupal 6 administration interface were confusing and intimidating to some, particularly for new administrators.,[103],[104],[105], According to Dries Buytaert, Drupal 7 addressed 90% of the problems identified by usability tests conducted at the Universities of Minnesota and Baltimore.,[106],[107], To achieve this, ,Acquia, (the company founded by the project lead of Drupal) hired ,user experience, designer Mark Boulton to work with the Drupal community to design an improved user interface for Drupal's administration interface.,[108], The majority of his team's design work has been implemented by the community in Drupal 7. The 2011 usability test results from the University of Minnesota Office of Information Technology show that all of the major usability problems identified in Drupal 6 are either vastly improved or non-existent in Drupal 7. However, some new usability problems were identified.,[109],[110], Since the release of Drupal 7 there are now various distributions and applications to enhance the Back-end Usability of Drupal such as Drupal Gardens,,[111], Open Enterprise,[112], and Mitkom Builder.,[113], +,Learning curve:, Some users describe Drupal as being difficult to master.,[114],[115], Drupal's many contributed modules can have overlapping functionality and have been reported as overwhelming to new users.,[116], +,Backward compatibility (for software development):, Prior to 7, Drupal did not commit to backward compatibility across major revisions.,[117], This means that module and theme developers may have to rework their code to make it compatible. However, Drupal's policy is to not change how it uses data. This means that data from previous versions is still usable without alteration in the new release.,[118],[119], Drupal documents any incompatibilities, allowing the user to make informed decisions about when and whether to upgrade. Upgrades from 8 to 9 and beyond will require substantially less effort."" ,[120], +,Performance/scalability:, In 2008, ,performance, tests between Drupal 6.1 and ,Joomla, 1.5 demonstrated that Drupal's pages were delivered ""significantly faster"" than those of Joomla.,[121], Despite this, arguments over speed persist.,[122], Drupal is likely to be slower than a special-purpose application for a given task. For example, ,WordPress, typically outperforms Drupal as a single-user blogging tool. Drupal positions itself for broader applications requirements that are outside the scope of more narrowly focused applications.,[123], Drupal offers ,caching, to store various page elements, the use of which resulted in a 508% improvement in one benchmark.,[124], When using Drupal's default Page Cache mechanism, the cached pages are delivered only to anonymous users, so contributed modules must be installed to allow caching content for logged in users.,[125],[126], Like performance, ,scalability, (the ability to add servers to handle growing numbers of visitors with consistent response) can become a concern on large, interactive sites. ,MySQL,'s query caching can help reduce the load on the database server caused by Drupal's high ,query rate,.,[127],[128], Drupal caches database schema ,metadata, as well as elements such as blocks, forms and menus.,[129], Drupal 7 increases performance in database queries and reduces PHP code usage.,[130], +,Integrability with hosting structures:, Because of Drupal's demanding query requirements, Drupal-based websites can quickly become very taxing to hosts whose databases reside on a machine separate from their ,HTTP server,. While the issue can normally be addressed by implementing aggressive ,caching, as described above, such methods may be unimplementable in cases where the host does not offer access to ,PHP accelerators, like ,XCache, or ,APC,. Drupal has plugins that facilitate similar caching without requiring special PHP extensions.,[131],[132], +,The Drupal core search is ineffective at searching content:,[,citation needed,], There are contributed modules that will greatly improve the search functionality on a Drupal website, but they are not easily accessible due to a high learning curve and the difficulty users have in general of finding the right module.,[,citation needed,], One of the faceted search options is ,Apache Solr, Search Integration module, however, the module requires a dedicated server or ,virtual private server, (VPS) to operate because Solr must run on a ,servlet, container, e.g. ,Tomcat,, ,Jetty, or ,Resin,. These requirements make it harder for a Drupal website to have a functional search feature. In response some companies have created Apache Solr ,SaaS, products., +,Many published, yet incomplete or outdated modules,[133], While Drupal's site boasts over 30,000 downloadable modules, searching the Drupal module directory finds many that are incomplete abandoned projects and do not work at all, only work for an outdated version due to lack of backward compatibility, or are unusable due to serious bugs. This is due to the open source nature of Drupal, and the fact that anyone is free to start a module and publish it on drupal.org. Modules with an active maintenance team are often highly polished, secure, and nearly bug free. Recent changes to the drupal.org website now let users search for modules, themes, and distributions, while filtering results by stability. ,[134], +, +, +,Difficult to unit test:,[135], Drupal 7 doesn't follow MVC framework and stores all of its configurations in database and as a result, unit testing the code without touching the database becomes extremely difficult. As a result, developers have resorted to using integration testing frameworks such as Red Test or behavior-driven development framework such as Behat and Codeception. Drupal 8 has taken a great stride in making it easier for developers to write unit-testable code., +, +,See also,[,edit,], +, +, +,Free software portal, +, +, +, +,Comparison of web frameworks, +,List of applications with iCalendar support, +,List of content management systems, +, +,References,[,edit,], +, +, +,^, ,Earliest tagged releases, +,^ ,a, ,b, ,c, ,d, ,Drupal 8 release history; drupal.org, +,^ ,a, ,b, ,""Licensing FAQ"",. ,drupal.org,. Retrieved ,2009-04-08,., , +,^, ,A query on ,Drupal,',s official website on March 2009: ,How does one pronounce ""Drupal""?, (accessed 19 June 2013), +,^, ,""The Drupal Overview"",. ,drupal.org,. Retrieved ,2009-04-08,., , +,^, ,""System Requirements"",. ,drupal.org,. Retrieved ,2009-04-08,., , +,^, ,W3Techs (2011-07-15). ,""Usage of content management systems for websites"",. Retrieved ,2011-07-15,., , +,^, ,BuiltWith (2011-03-28). ,""Drupal Usage Statistics"",. Retrieved ,2011-03-28,., , +,^, ,""The State of Drupal 2010 speech"",. Archive.org. 2001-03-10,. Retrieved ,2011-08-31,., , +,^, ,""Knowledge management with Drupal"",., , +,^, ,""Getting Involved | Drupal.org"",. ,www.drupal.org,. 2017-04-10,. Retrieved ,2017-04-11,. ,Drupal.org Activity, , +,^, ,""1 Million Users on Drupal.org!"",. ,www.drupal.org,. 2013-10-11., , +,^ ,a, ,b, ,""Drupal Homepage"",. ,www.drupal.org,. 2017-04-09,. Retrieved ,2017-04-09,., , +,^ ,a, ,b, ,""Module project"",. ,www.drupal.org,. 2017-04-09,. Retrieved ,2017-04-09,., , +,^ ,a, ,b, ,""Download & Extend: Themes"",. ,www.drupal.org,. 2017-04-09,. Retrieved ,2017-04-09,., , +,^, ,""Download & Extend: Distributions"",. ,www.drupal.org,. 2017-04-09,. Retrieved ,2017-04-09,., , +,^, ,""Drupal 7 as an enterprise web application framework"",. ,drupal.org,., , +,^, ,""Comparison of web frameworks"",. ,Wikipedia,. 2017-04-07. ,Comparison of features, , +,^, ,O'Connor, William (2014-08-19). ,""The Drupal API turns a CMS into a true enterprise application - O'Reilly Radar"",. ,O'Reilly Media,. Retrieved ,2017-04-11,., , +,^, ,Diana, Dupuis (2013-05-15). ,""Drupal Is a Framework: Why Everyone Needs to Understand This"",. ,Linux Journal,., , +,^ ,a, ,b, ,""Features"",. ,drupal.org,. Retrieved ,2009-04-08,., , +,^, ,Drupal 7 release history; drupal.org, +,^, ,Drupal 6 release history; drupal.org, +,^, ,Drupal 5 release history; drupal.org, +,^ ,a, ,b, ,""History"",. ,drupal.org,. Retrieved ,2009-04-08,., , +,^, ,""Druppel: Dutch to English Translation"",. ,Babylon Translation,. Retrieved ,2009-04-08,., , +,^, ,Benjamin Melançon; et al. (2011). ,The Definitive Guide to Drupal 7, (2nd ed.). Apress. p. 823. ,ISBN, ,9781430231356,. Retrieved ,2012-05-27,., , +,^, ,Critchley, Spencer (2006-05-03). ,""Digital Politics: An Interview With CivicSpace Founder Zack Rosen"",. ,O'Reilly Media,. Retrieved ,2012-05-27,., , +,^, ,Kreiss, Daniel (2012-03-05). ,""Dean, Romney, and Drupal: Values and Technological Adoption"",. ,Culture Digitally,. Retrieved ,2012-05-27,., , +,^, ,Samantha M. Shapiro, ,""The Dean Connection"",, ,The New York Times, December 7, 2003, accessed May 27, 2012., +,^, ,""Marketplace"",. ,drupal.org,. Retrieved ,2013-04-18,., , +,^, ,Koenig, Josh. ,""Growth Graphs"",. ,Groups.Drupal,. Retrieved ,2009-04-08,., , +,^, ,Buytaert, Dries (2008). ,""Drupal Download Statistics"",. Retrieved ,2009-04-08,., , +,^, ,Buytaert, Dries (2007). ,""Drupal Download Statistics"",. Retrieved ,2009-04-08,., , +,^, ,""Usage statistics for Drupal core"",., , +,^, ,""Drupal Sites"",. ,Dries Buytaert,. Retrieved ,2010-07-20,., , +,^, ,""List of Nonprofit, NPO, NGO Websites Using Drupal"",. ,ENGINE Industries,. Archived from ,the original, on 2009-12-24,. Retrieved ,2010-07-20,., , +,^, ,""OSS CMS Award Previous Winners"",. ,Packt Publishing,. Retrieved ,2009-04-08,., , +,^, ,""Drupal is a Webware 100 winner for the third year in a row"",. Drupal.org,. Retrieved ,2011-08-31,., , +,^, ,""Cnet.com"",. News.cnet.com. 2009-05-19,. Retrieved ,2011-08-31,., , +,^, ,""Buytaert.net"",. Buytaert.net,. Retrieved ,2011-08-31,., , +,^, ,""Drupal 7 to be released on January 5 (with one ginormous party)"",. Buytaert.net,. Retrieved ,2011-08-31,., , +,^, ,""Xplain Hosting Drupal 7 Quickstart training seminar"",. ,Scoop,. 2010-12-16., , +,^, ,""drupal 7.24"",. ,drupal.org,. Retrieved ,2013-11-20,., , +,^, ,""Drupal 8 In Marking The Biggest Change In Its Content Management History"",. ,eyerys.com,. Retrieved ,19 November, 2015,., , +,^, ,""Drupal 8.0.0-rc1 announcement"",. ,drupal.org,., , +,^, ,""Drupal 8.0.0-rc1 announcement"",. ,drupal.org,., , +,^, ,""Drupal 8.0.0 released"",. ,drupal.org,. Retrieved ,19 November, 2015,., , +,^, ,https://www.drupal.org/blog/drupal-8-1-0, +,^ ,a, ,b, ,""Never hack core"",. ,drupal.org,., , +,^, ,""Drupal 7.39 released"",. ,drupal.org,. Retrieved ,2015-09-19,., , +,^ ,a, ,b, ,""Handbook: Core Modules"",. ,drupal.org,. Archived from ,the original, on 2008-07-28,. Retrieved ,2009-04-08,., , +,^, ,""Drupal Multi-site installation recipes"",., , +,^, ,Buytaert, Dries. ,""Garland, the new default core theme"",. ,drupal.org,. Retrieved ,2009-04-08,., , +,^, ,""Color: Allows the user to change the color scheme of certain themes"",. ,drupal.org,. Retrieved ,2009-04-08,., , +,^, ,""Drupal core translation downloads"",. ,drupal.org,. Retrieved ,2017-01-30,., , +,^ ,a, ,b, ,""Drupal 6.0 released"",. ,drupal.org,. Retrieved ,2009-04-08,., , +,^, ,""SA-CORE-2014-005 - Drupal core - SQL injection"",. ,Https:,. Retrieved ,December 3,, 2014,., , +,^, ,""Drupal Core - Highly Critical - Public Service announcement - PSA-2014-003"",. ,Https:,. Retrieved ,December 3,, 2014,., , +,^, ,""Install Drupal for Windows"",. ,microsoft.com,. Retrieved ,2011-02-14,., , +,^, ,""Drupal on Windows Group"",. ,drupal.org,. Retrieved ,2011-02-14,., , +,^, ,Killesreiter, Gerhard (2013-02-25). ,""Accessibility statement"",. ,drupal.org,. Retrieved ,2013-04-16,., , +,^, ,Scholten, Roy (2012-12-10). ,""Drupal core gates"",. ,drupal.org,. Retrieved ,2013-04-16,., , +,^, ,""API Reference"",. ,drupal.org,. Retrieved ,2009-04-08,., , +,^, ,""File and directory management"",. ,drupal.org,., , +,^, ,14 hours 40 min ago. (2009-05-20). ,""Integrating Drupal with External Systems"",. Appnovation.com. Archived from ,the original, on 2011-08-24,. Retrieved ,2011-08-31,., , +,^, ,""Drupal Camunda BPM Integration"",. ,Srijan Technologies,. Srijan Technologies., , +,^, ,""Project usage overview"",. ,Drupal.org,. Retrieved ,2011-08-18,., , +,^, ,""DRUPAL 5 TO DRUPAL 7"",., , +,^, ,""Field API"",. 2009,. Retrieved ,2009-05-08,., , +,^, ,""Views in Drupal Core initiative: Status report and roadmap"",. Retrieved ,2014-11-04,., , +,^, ,""PHPTemplate theme engine"",. ,drupal.org,. Archived from ,the original, on 2009-03-08,. Retrieved ,2009-04-08,., , +,^, ,""XTemplate theme engine"",. ,drupal.org,. Archived from ,the original, on 2009-03-16,. Retrieved ,2009-04-08,., , +,^, ,""How does Drupal compare to Mambo? discussion thread"",. ,drupal.org,. 2005-01-17,. Retrieved ,2009-04-08,., , +,^, ,""Drupal themes"",. Drupal.org,. Retrieved ,2011-08-31,., , +,^, ,""Adding your theme to Drupal.org"",. Drupal.org., , +,^, ,""10 Best Drupal Themes"",. MAAN Softwares,. Retrieved ,2017-11-08,., , +,^, ,""Top Drupal Distributions"",. AGLOBALWAY Consulting Services Inc. Archived from ,the original, on 2014-04-13., , +,^, ,""MVC vs. PAC"",., , +,^, ,Drupal - CMS Grew Overnight, By MAAN Softwares, Retrieved, June 8th, 2017, +,^, ,""drupal.org discussion on DrupalCon event management"",. Groups.drupal.org,. Retrieved ,2011-08-31,., , +,^, ,""Drupal Camps and Cons"",. Retrieved ,25 January, 2013,., , +,^, ,""1 Year of Drupal Events Visualized"",. Retrieved ,13 July, 2013,., , +,^, ,""forums"",. Drupal.org,. Retrieved ,2011-08-31,., , +,^, ,""mailing lists"",. Drupal.org,. Retrieved ,2011-08-31,., , +,^, ,""Drupal Groups"",. Groups.drupal.org,. Retrieved ,2011-08-31,., , +,^, ,""Drupal IRC channels on FreeNode"",. Drupal.org,. Retrieved ,2011-08-31,., , +,^, ,""Language specific communities"",. Drupal.org. 2011-08-26,. Retrieved ,2011-08-31,., , +,^, ,Keller, Katherine (7 April 2017). ,""CMS Battle for Beginners: WordPress vs Joomla vs Drupal (Infographic)"",. ,Entrepreneur,. Retrieved ,17 May, 2017,., , +,^, ,Drupal. ,""Security announcement and release process"",., , +,^, ,Drupal. ,""How to report a security issue"",., , +,^, ,""Update manager (and Update status)"",. ,drupal.org,. Retrieved ,2011-07-01,., , +,^, ,""Security advisories"",. ,drupal.org,. Retrieved ,2009-04-28,., , +,^, ,""Drupal security team"",. Drupal.org,. Retrieved ,2011-08-31,., , +,^, ,""Drupal Security RSS feed"",. Drupal.org,. Retrieved ,2011-08-31,., , +,^, ,""Drupalgeddon megaflaw raises questions over CMS bods' crisis mgmt"",., , +,^, ,""SA-CORE-2014-005 - Drupal core - SQL injection"",. ,Security advisories,. Drupal security team., , +,^, ,""Drupalgeddon strikes back: outdated Drupal allegedly linked to ""Panama Papers,"","",. ,Blog,. Drop Guard., , +,^, ,""Drupal Core—Highly Critical—Public Service Announcement—PSA-2014-003"",. ,Security advisories,. Drupal security team. October 29, 2014 – via Drupal.org. , +,You should proceed under the assumption that every Drupal 7 website was compromised unless updated or patched before Oct 15th, 11pm UTC, that is 7 hours after the announcement., +,Simply updating to Drupal 7.32 will not remove backdoors,....updating to version 7.32 or applying the patch fixes the vulnerability but does not fix an already compromised website. If you find that your site is already patched but you didn’t do it, that can be a symptom that the site was compromised - some attacks have applied the patch as a way to guarantee they are the only attacker in control of the site., +, , +,^, ,Robinson, Brian (2014-11-07). ,""Attacks on open source call for better software design -"",. ,GCN,. Retrieved ,2016-07-29,., , +,^, ,Why running the White House Web site on Drupal is a political disaster waiting to happen., +,^, ,Message Error, Why running the White House Web site on Drupal is a political disaster waiting to happen, Chris Wilson. ,Slate (magazine), October 27, 2009, +,^, ,Scollan, Becca; Abby Byrnes; Malia Nagle; Paul Coyle; Cynthia York; Maleka Ingram (2008-05-01). ,""Drupal Usability Research Report"", ,(PDF),. Retrieved ,2009-04-08,., , +,^, ,Lal, Kieran (2008-06-26). ,""Drupal usability tests from the University of Baltimore with community solutions"",. ,drupal.org,. Retrieved ,2009-04-08,., , +,^, ,Buytaert, Dries (2008-07-03). ,""Usability, usability, and usability"",. Retrieved ,2009-04-08,., , +,^, ,Buytaert, Dries (2008-03-10). ,""First results from usability testing"",. Retrieved ,2009-04-08,., , +,^, ,""Report from Formal Drupal"", ,(PDF),. 2008-03-03,. Retrieved ,2009-04-08,., , +,^, ,Buytaert, Dries (2009-02-04). ,""Mark Boulton to help with Drupal 7"",. Archived from ,the original, on 2010-04-13., , +,^, ,University of Minnesota Office of Information Technology (2011-05-23). ,""Usability test at University of Minnesota, may 2011"",. ,drupal.org,., , +,^, ,University of Minnesota Office of Information Technology (2011-06-01). ,""Report from the University of Minnesota Drupal Usability Testing"",. ,drupal.org,., , +,^, ,""Drupal Gardens"",., , +,^, ,""Open Enterprise"",., , +,^, ,""Mitkom"",., , +,^, ,Howard, Brian C. (2007-01-25). ,""Harnessing Drupal for Citizen Journalism"",. ,NewAssignment.Net,. Retrieved ,2009-04-08,., , +,^, ,""Drupal Review"",. Archived from ,the original, on 2010-02-05., , +,^, ,James, Heather (2010-11-09). ,""203 people tell What I wish I knew when I started Drupal"",. ,Acquia.com,. Retrieved ,2010-11-11,., , +,^, ,Buytaert, Dries (2006-05-26). ,""Backward Compatibility"",. Retrieved ,2009-04-08,., , +,^, ,Buytaert, Dries (2006-07-27). ,""The pain before the pay-off"",. Retrieved ,2009-04-08,., , +,^, ,""Drupal's Upgrade Instructions (end-user)"",. Drupal.org,. Retrieved ,2011-08-31,., , +,^, ,http://buytaert.net/making-drupal-upgrades-easy-forever, +,^, ,""Joomla 1.5 & Drupal 6.1 Performance Comparison"",. Archived from ,the original, on 2012-07-22., , +,^, ,""Is Drupal Slow & Bloated?"",. Archived from ,the original, on 2012-09-09., , +,^, ,""Is Drupal the right tool for the job?"",., , +,^, ,""Drupal vs Joomla: performance | Dries Buytaert"",. Buytaert.net,. Retrieved ,2012-05-05,., , +,^, ,""Authenticated User Page Caching (Authcache)"",. ,drupal.org,. Retrieved ,2009-09-23,., , +,^, ,Buytaert, Dries (2006-08-11). ,""Drupal vs Joomla! performance"",. Retrieved ,2009-05-20,., , +,^, ,""Speed up a Drupal web site by enabling MySQL query caching"",. ,nadeausoftware.com,. 2007-03-07,. Retrieved ,2009-06-21,., , +,^, ,""Book on Drupal Performance & Scalability"",. Books.tag1consulting.com. 2008-07-16. Archived from ,the original, on 2011-09-06,. Retrieved ,2011-08-31,., , +,^, ,""Caching in Drupal 6"",. ,drupal.org,. 2008-07-28,. Retrieved ,2009-06-21,., , +,^, ,""Drupal 6 vs Drupal 7 performance and comments vs nodes"",. ,CivicActions.com,. 2009-05-19,. Retrieved ,2009-06-21,., , +,^, ,""Boost"",. drupal.org. 2006-10-15,. Retrieved ,2012-05-05,., , +,^, ,""Memcache API and Integration"",. drupal.org,. Retrieved ,2012-05-05,., , +,^, ,""Dealing with unsupported (abandoned) projects"",. ,While experienced Drupal users know to check the queue and the git commits to determine the health of a project, having broken and unmaintained/unsupported projects available can be confusing and off-putting for new users., , +,^, ,https://www.drupal.org/project/project_module, +,^, ,""Drupal Testing Methodologies Are Broken - Here's Why | Red Crackle"",. ,redcrackle.com,. Retrieved ,2015-12-05,., , +, +, +,Further reading,[,edit,], +, +,Abbott/Jones (2016), Learning Drupal 8, England, Packt Publishing. ,ISBN, ,978-1-78216-875-1, +,Pol, Kristen (2012). ,Drupal 7 Multilingual Sites,. Birmingham, England: Packt Publishing. ,ISBN, ,978-1-84951-818-5,., , +,Mercer, David (2010). ,Drupal 7,. Birmingham, England: Packt Publishing. ,ISBN, ,1-84951-286-8,., , +,Travis, Brian (2011). ,Pro Drupal 7 for Windows Developers,. Berkeley: APress. ,ISBN, ,978-1-4302-3153-0,., , +,Butcher, Matt; Larry Garfield; John Wilkins; Matt Farina; Ken Rickard; Greg Dunlap (2010). ,Drupal 7 Module Development,. Birmingham, England: Packt Publishing. ,ISBN, ,978-1-84951-116-2,., , +,Bhavin, Patel (Aug 2010). ,Drupal 6 Panel Cookbook,. Canada: Packt Publishing. ,ISBN, ,1-84951-118-7,., , +,Beighley, Lynn (2009). ,Drupal for Dummies,. New York: For Dummies. ,ISBN, ,978-0-470-55611-5,., , +,Herremans, D. (2009). ,Drupal 6: Ultimate Community Site Guide,. Switzerland. ,ISBN, ,978-2-8399-0490-2,., , +,Peacock, Michael (2008). ,Selling Online with Drupal e-Commerce,. Birmingham, England: Packt Publishing. ,ISBN, ,978-1-84719-406-0,., , +,VanDyk, John K. (2008). ,Pro Drupal Development, Second Edition,. New York: Springer Verlag/Apress. ,ISBN, ,1-4302-0989-5,., , +,Kafer, Konstantin; Emma Hogbin (Apr 2009). ,Front End Drupal: Designing, Theming, Scripting,. Jersey, USA: Prentice Hall. ,ISBN, ,0-13-713669-2,., , +, +,External links,[,edit,], +, +, +, +,Wikimedia Commons has media related to ,Drupal,., +, +, +, +,Official website, +, +, +, +, +, +, +, +, +,v, +,t, +,e, +, +, +,Web frameworks, +, +, +, +, +, +, +,Comparison, +, +, +, +, +, +,C++, +, +, +, +,CppCMS, +,Wt, +, +, +, +, +, +,CLI, +, +, +, +,ASP.NET, +, +,Core, +,AJAX, +,Dynamic Data, +,MVC, +,Razor, +,Web Forms, +, +, +,DNN, +,BFC, +,MonoRail, +,OpenRasta, +,Umbraco, +, +, +, +, +, +,ColdFusion, +, +, +, +,CFWheels, +,ColdBox Platform, +,ColdSpring, +,Fusebox, +,Mach-II, +,Model-Glue, +, +, +, +, +, +,Common Lisp, +, +, +, +,Caveman2, +,CL-HTTP, +,UnCommon Web, +,Weblocks, +, +, +, +, +, +,Haskell, +, +, +, +,Happstack, +,Yesod, +,Snap, +, +, +, +, +, +,Java, +, +, +, +,AppFuse, +,Flexive, +,Grails, +,GWT, +,ICEfaces, +,ItsNat, +,JavaServer Faces, +,JHipster, +,Jspx, +,JWt, +,OpenXava, +,Play, +,Reasonable Server Faces, +,Remote Application Platform, +,RIFE, +,Seam, +,Sling, +,Spring, +,Stripes, +,Struts, +,Tapestry, +,Vaadin, +,Vert.x, +,WebWork, +,Wicket, +,WaveMaker, +,ZK, +, +, +, +, +, +,JavaScript, +, +, +, +,Ample SDK, +,Angular,/,AngularJS, +,Backbone.js, +,Chaplin.js, +,Closure, +,Dojo Toolkit, +,Ember.js, +,Ext JS, +,jQuery, +,Meteor, +,MooTools, +,Node.js, +,OpenUI5, +,Prototype, +,React, +,Rico, +,script.aculo.us, +,Sencha Touch, +,SproutCore, +,Wakanda, +, +, +, +, +, +,Perl, +, +, +, +,Catalyst, +,Dancer, +,Mason, +,Maypole, +,Mojolicious, +,WebGUI, +, +, +, +, +, +,PHP, +, +, +, +,CakePHP, +,CodeIgniter, +,Drupal, +,Fat-Free, +,FuelPHP, +,Flow, +,Gyroscope, +,Horde, +,Kohana, +,Laravel, +,Lithium, +,Midgard, +,MODX, +,Nette, +,Phalcon, +,Pop PHP, +,PRADO, +,ProcessWire, +,Qcodo, +,Silex, +,SilverStripe, +,Symfony, +,TYPO3, +,Xaraya, +,XOOPS, +,Yii, +,Zend Framework, +, +, +, +, +, +,Python, +, +, +, +,BlueBream, +,CherryPy, +,Django, +,Flask, +,Grok, +,Nevow, +,Pyjs, +,Pylons, +,Pyramid, +,Quixote, +,TACTIC, +,Tornado, +,TurboGears, +,web2py, +,Webware, +,Zope 2, +, +, +, +, +, +,Ruby, +, +, +, +,Camping, +,Merb, +,Padrino, +,Ruby on Rails, +,Sinatra, +, +, +, +, +, +,Scala, +, +, +, +,Lift, +,Play, +,Scalatra, +, +, +, +, +, +,Smalltalk, +, +, +, +,AIDA/Web, +,Seaside, +, +, +, +, +, +,Other languages, +, +, +, +,Vibe.d, (,D,), +,Application Express, (,PL/SQL,), +,Grails, (,Groovy,), +,Kepler, (,Lua,), +,Rocket, (,Rust,), +,OpenACS, (,Tcl,), +,Phoenix, (,Elixir,), +,SproutCore, (,JavaScript,-,Ruby,), +,Yaws, (,Erlang,), +, +, +, +, +, +, +, +, +, +, +, +, +,v, +,t, +,e, +, +, +,Software in the Public Interest, +, +, +, +,People, +, +, +, +,Bdale Garbee, (President), +, +, +, +, +, +,Projects, +, +, +, +,0 A.D., +,Arch Linux, +,Debian, +,Drizzle, +,Drupal, +,FFmpeg, +,Fluxbox, +,freedesktop.org, +,FreedomBox, +,Gallery Project, +,GNU TeXmacs, +,GNUstep, +,Jenkins, +,LibreOffice, +,MinGW, +,Open and Free Technology Community, +,Open Bioinformatics Foundation, +,Open64, +,OpenEmbedded, +,OpenVAS, +,OpenWrt, +,PostgreSQL, +,Privoxy, +,SproutCore, +,X.Org Foundation, +,YafaRay, +, +, +, +, +, +, +, +, +, +,Authority control, +, +, +, +,WorldCat Identities, +,VIAF,: ,180810498, +,LCCN,: ,n2009053036, +,GND,: ,7522644-3, +, +, +, +, +, +, + + +, +, +, +, +",Drupal +" 22 January 2018, at 01:37."," +,Unix, +, +, +,Evolution of Unix and Unix-like systems, +, +, +, +,Developer, +,Ken Thompson,, ,Dennis Ritchie,, ,Brian Kernighan,, ,Douglas McIlroy,, and ,Joe Ossanna, at ,Bell Labs, +, +, +,Written in, +,C, and ,assembly language, +, +, +,OS family, +,Unix, +, +, +,Working state, +,Current, +, +, +,Source model, +,Historically ,closed-source,, while some Unix projects (including ,BSD, family and ,Illumos,) are ,open-source, +, +, +,Initial release, +,Development started in 1969,; 49 years ago, (,1969,), +First manual published ,internally, in November 1971, (,1971-11,),[1], +Announced outside Bell Labs in October 1973, (,1973-10,),[2], +, +, +,Available in, +,English, +, +, +,Kernel, type, +,Varies; ,monolithic,, ,microkernel,, ,hybrid, +, +, +,Default ,user interface, +,Command-line interface, and ,Graphical, (,X Window System,), +, +, +,License, +,Varies; some versions are ,proprietary,, others are ,free,/,open-source software, +, +, +,Official website, +,opengroup,.org,/unix, +, +, +,Unix, (,/,ˈ,j,uː,n,ɪ,k,s,/,; trademarked as ,UNIX,) is a family of ,multitasking,, ,multiuser, computer ,operating systems, that derive from the original ,AT&T, Unix, development starting in the 1970s at the ,Bell Labs, research center by ,Ken Thompson,, ,Dennis Ritchie,, and others.,[3], +,Initially intended for use inside the ,Bell System,, AT&T licensed Unix to outside parties in the late 1970s, leading to a variety of both academic and commercial Unix variants from vendors like the ,University of California, Berkeley, (,BSD,), ,Microsoft, (,Xenix,), ,IBM, (,AIX,), and ,Sun Microsystems, (,Solaris,). In the early 1990s, AT&T sold its rights in Unix to ,Novell,, which then sold its Unix business to the ,Santa Cruz Operation, (SCO) in 1995.,[4], The UNIX trademark passed to ,The Open Group,, a neutral industry consortium, which allows the use of the mark for certified operating systems that comply with the ,Single UNIX Specification, (SUS). As of 2014, the Unix version with the largest installed base is ,Apple,'s ,macOS,.,[5], +,From the perspective of a power user or programmer, Unix systems are characterized by a ,modular design, that is sometimes called the "",Unix philosophy,""—that is to say, the operating system provides a set of simple tools that each perform a limited, well-defined function,,[6], with a unified ,filesystem, as the main means of communication,[3], and a ,shell, scripting and command language to combine the tools to perform complex workflows. Additionally, Unix also distinguishes itself from its predecessors as the first ,portable, operating system: almost the entire operating system is written in the ,C programming language, that allowed Unix to reach numerous platforms.,[7], +,Over the years, many ,Unix-like, operating systems have been developed, but ,Linux, is the most popular. In fact, Linux has displaced ,SUS,-certified Unix on many server platforms since its inception in the early 1990s. The world's most-used mobile operating system, ,Android,, is based on Linux., +, +, +, +,Contents, +, +, +,1, ,Overview, +,2, ,History, +,3, ,Standards, +,4, ,Components, +,5, ,Impact, +, +,5.1, ,Free Unix and Unix-like variants, +,5.2, ,ARPANET, +, +, +,6, ,Branding, +,7, ,See also, +,8, ,References, +,9, ,Further reading, +,10, ,External links, +, +, +, +,Overview,[,edit,], +, +, +, +, +,Version 7 Unix,, the ,Research Unix, ancestor of all modern Unix systems, +, +, +,Unix was originally meant to be a convenient platform for programmers developing software to be run on it and on other systems, rather than for non-programmers.,[8],[9], The system grew larger as the operating system started spreading in academic circles, as users added their own tools to the system and shared them with colleagues.,[10], +,Unix was designed to be ,portable,, ,multi-tasking, and ,multi-user, in a ,time-sharing, configuration. Unix systems are characterized by various concepts: the use of ,plain text, for storing data; a hierarchical ,file system,; treating devices and certain types of ,inter-process communication, (IPC) as files; and the use of a large number of ,software tools,, small programs that can be strung together through a ,command-line interpreter, using ,pipes,, as opposed to using a single monolithic program that includes all of the same functionality. These concepts are collectively known as the "",Unix philosophy,"". ,Brian Kernighan, and ,Rob Pike, summarize this in ,The Unix Programming Environment, as ""the idea that the power of a system comes more from the relationships among programs than from the programs themselves"".,[11], +,By the early 1980s, users began seeing Unix as a potential universal operating system, suitable for computers of all sizes.,[12],[13], The Unix environment and the ,client–server, program model were essential elements in the development of the ,Internet, and the reshaping of computing as centered in ,networks, rather than in individual computers., +,Both Unix and the ,C programming language, were developed by AT&T and distributed to government and academic institutions, which led to both being ported to a wider variety of machine families than any other operating system., +,Under Unix, the operating system consists of many utilities along with the master control program, the ,kernel,. The kernel provides services to start and stop programs, handles the ,file system, and other common ""low-level"" tasks that most programs share, and schedules access to avoid conflicts when programs try to access the same resource or device simultaneously. To mediate such access, the kernel has special rights, reflected in the division between ,user space and kernel space,., +,The ,microkernel, concept was introduced in an effort to reverse the trend towards larger kernels and return to a system in which most tasks were completed by smaller utilities. In an era when a standard computer consisted of a hard disk for storage and a ,data terminal, for ,input and output, (I/O), the Unix file model worked quite well, as I/O was generally linear. However, modern systems include networking and other new devices. As graphical user interfaces developed, the file model proved inadequate to the task of handling asynchronous events such as those generated by a ,mouse,. In the 1980s, ,non-blocking I/O, and the set of ,inter-process communication, mechanisms were augmented with ,Unix domain sockets,, ,shared memory,, ,message queues,, and ,semaphores,. In microkernel implementations, functions such as network protocols could be moved out of the kernel, while conventional (,monolithic,) Unix implementations have network protocol stacks as part of the kernel., +,History,[,edit,], +,Main article: ,History of Unix, +, +, +, +, +,Ken Thompson, (sitting) and ,Dennis Ritchie, working together at a ,PDP-11, +, +, +,The pre-history of Unix dates back to the mid-1960s when the ,Massachusetts Institute of Technology,, ,Bell Labs,, and ,General Electric, were developing an innovative ,time-sharing, operating system called ,Multics, for the ,GE-645, mainframe.,[14], Multics introduced ,many innovations,, but had many problems. Frustrated by the size and complexity of Multics but not by the aims, Bell Labs slowly pulled out of the project. Their last researchers to leave Multics, ,Ken Thompson,, ,Dennis Ritchie,, ,M. D. McIlroy,, and ,J. F. Ossanna,,,[15], decided to redo the work on a much smaller scale., +,The new operating system was initially without organizational backing, and also without a name. At this stage, the new operating system was a singletasking operating system, not a multitasking one such as Multics.,[15], The name ,Unics, (Uniplexed Information and Computing Service, pronounced as "",eunuchs,""), a ,pun, on ,Multics, (Multiplexed Information and Computer Services), was initially suggested for the project in 1970. ,Brian Kernighan, claims the coining for himself, and adds that ""no one can remember"" who came up with the final spelling Unix.,[16], Dennis Ritchie,,[15], Doug McIlroy,,[1], and ,Peter G. Neumann,[17], also credit Kernighan., +,In 1972, Unix was rewritten in the ,C programming language,.,[18], The migration from assembly to the ,higher-level language, C resulted in much more ,portable, software, requiring only a relatively small amount of machine-dependent code to be replaced when porting Unix to other ,computing platforms,.,[19], Bell Labs produced several versions of Unix that are collectively referred to as "",Research Unix,"". In 1975, the first source license for UNIX was sold to ,Donald B. Gillies, at the ,University of Illinois, Department of Computer Science.,[20], UIUC graduate student ,Greg Chesson, (who had worked on the UNIX kernel at Bell Labs) was instrumental in negotiating the terms of the license.,[21], +,During the late 1970s and early 1980s, the influence of Unix in academic circles led to large-scale adoption of Unix (,BSD, and ,System V,) by commercial startups, including ,Sequent,, ,HP-UX,, ,Solaris,, ,AIX,, and ,Xenix,. In the late 1980s, AT&T ,Unix System Laboratories, and ,Sun Microsystems, developed System V Release 4 (,SVR4,), which was subsequently adopted by many commercial Unix vendors., +,In the 1990s, Unix-like systems grew in popularity as ,Linux, and BSD distributions were developed through collaboration by a worldwide network of programmers. In 2000, Apple released ,Darwin,, also a Unix-like system, which became the core of the Mac OS X operating system, later renamed ,macOS,.,[22], +,Unix operating systems are widely used in modern ,servers,, ,workstations,, and ,mobile devices,.,[23], +,Standards,[,edit,], +, +, +, +, +The ,Common Desktop Environment, (CDE), part of the ,COSE initiative, +, +, +,In the late 1980s, an open operating system standardization effort now known as ,POSIX, provided a common baseline for all operating systems; ,IEEE, based POSIX around the common structure of the major competing variants of the Unix system, publishing the first POSIX standard in 1988. In the early 1990s, a separate but very similar effort was started by an industry consortium, the ,Common Open Software Environment, (COSE) initiative, which eventually became the ,Single UNIX Specification, (SUS) administered by ,The Open Group,. Starting in 1998, the Open Group and IEEE started the ,Austin Group,, to provide a common definition of POSIX and the Single UNIX Specification, which, by 2008, had become the Open Group Base Specification., +,In 1999, in an effort towards compatibility, several Unix system vendors agreed on SVR4's ,Executable and Linkable Format, (ELF) as the standard for binary and object code files. The common format allows substantial binary compatibility among Unix systems operating on the same CPU architecture., +,The ,Filesystem Hierarchy Standard, was created to provide a reference directory layout for Unix-like operating systems, and has mainly been used in Linux., +,Components,[,edit,], +,See also: ,List of Unix commands, +, +, +, +, +, +, +,This section ,does not ,cite, any ,sources,. ,Please help ,improve this section, by ,adding citations to reliable sources,. Unsourced material may be challenged and ,removed,., ,(January 2017), ,(,Learn how and when to remove this template message,), +, +, +, +,The Unix system is composed of several components that were originally packaged together. By including the development environment, libraries, documents and the portable, modifiable source code for all of these components, in addition to the ,kernel, of an operating system, Unix was a self-contained software system. This was one of the key reasons it emerged as an important teaching and learning tool and has had such a broad influence.,[,according to whom?,], +,The inclusion of these components did not make the system large – the original V7 UNIX distribution, consisting of copies of all of the compiled binaries plus all of the source code and documentation occupied less than 10 MB and arrived on a single nine-track ,magnetic tape,. The printed documentation, typeset from the online sources, was contained in two volumes., +,The names and filesystem locations of the Unix components have changed substantially across the history of the system. Nonetheless, the V7 implementation is considered by many,[,who?,], to have the canonical early structure:, +, +,Kernel, – source code in /usr/sys, composed of several sub-components: +, +,conf, – configuration and machine-dependent parts, including boot code, +,dev, – device drivers for control of hardware (and some pseudo-hardware), +,sys, – operating system ""kernel"", handling memory management, process scheduling, system calls, etc., +,h, – header files, defining key structures within the system and important system-specific invariables, +, +, +,Development environment, – early versions of Unix contained a development environment sufficient to recreate the entire system from source code: +, +,cc, – ,C language, compiler (first appeared in V3 Unix), +,as, – machine-language assembler for the machine, +,ld, – linker, for combining object files, +,lib, – object-code libraries (installed in /lib or /usr/lib). ,libc,, the system library with C run-time support, was the primary library, but there have always been additional libraries for such things as mathematical functions (,libm,) or database access. V7 Unix introduced the first version of the modern ""Standard I/O"" library ,stdio, as part of the system library. Later implementations increased the number of libraries significantly., +,make, – build manager (introduced in ,PWB/UNIX,), for effectively automating the build process, +,include, – header files for software development, defining standard interfaces and system invariants, +,Other languages, – V7 Unix contained a Fortran-77 compiler, a programmable arbitrary-precision calculator (,bc,, ,dc,), and the ,awk, scripting language; later versions and implementations contain many other language compilers and toolsets. Early BSD releases included ,Pascal, tools, and many modern Unix systems also include the ,GNU Compiler Collection, as well as or instead of a proprietary compiler system., +,Other tools, – including an object-code archive manager (,ar,), symbol-table lister (,nm,), compiler-development tools (e.g. ,lex, & ,yacc,), and debugging tools., +, +, +,Commands, – Unix makes little distinction between commands (user-level programs) for system operation and maintenance (e.g. ,cron,), commands of general utility (e.g. ,grep,), and more general-purpose applications such as the text formatting and typesetting package. Nonetheless, some major categories are: +, +,sh, – the ""shell"" programmable ,command-line interpreter,, the primary user interface on Unix before window systems appeared, and even afterward (within a ""command window"")., +,Utilities, – the core toolkit of the Unix command set, including ,cp,, ,ls,, ,grep,, ,find, and many others. Subcategories include: +, +,System utilities, – administrative tools such as ,mkfs,, ,fsck,, and many others., +,User utilities, – environment management tools such as ,passwd,, ,kill,, and others., +, +, +,Document formatting, – Unix systems were used from the outset for document preparation and typesetting systems, and included many related programs such as ,nroff,, ,troff,, ,tbl,, ,eqn,, ,refer,, and ,pic,. Some modern Unix systems also include packages such as ,TeX, and ,Ghostscript,., +,Graphics, – the ,plot, subsystem provided facilities for producing simple vector plots in a device-independent format, with device-specific interpreters to display such files. Modern Unix systems also generally include ,X11, as a standard windowing system and ,GUI,, and many support ,OpenGL,., +,Communications, – early Unix systems contained no inter-system communication, but did include the inter-user communication programs ,mail, and ,write,. V7 introduced the early inter-system communication system ,UUCP,, and systems beginning with BSD release 4.1c included ,TCP/IP, utilities., +, +, +,Documentation, – Unix was the first,[,citation needed,], operating system to include all of its documentation online in machine-readable form. The documentation included: +, +,man, – manual pages for each command, library component, ,system call,, header file, etc., +,doc, – longer documents detailing major subsystems, such as the C language and troff, +, +, +, +,Impact,[,edit,], +,See also: ,Unix-like, +, +, +, +, +, +, +,This section ,needs additional citations for ,verification,. ,Please help ,improve this article, by ,adding citations to reliable sources,. Unsourced material may be challenged and removed., ,(January 2017), ,(,Learn how and when to remove this template message,), +, +, +, +, +, +, +, +,Ken Thompson, and ,Dennis Ritchie,, principal developers of ,Research Unix, +, +, +, +, +, +, +Photo from ,USENIX, 1984, including ,Dennis Ritchie, (center), +, +, +, +, +, +, +,Plan 9 from Bell Labs, extends Unix design principles, and was developed as a successor to Unix, +, +, +,The Unix system had significant impact on other operating systems. It achieved its reputation by its interactivity, by providing the software at a nominal fee for educational use, by running on inexpensive hardware, and by being easy to adapt and move to different machines. Unix was originally written in ,assembly language, (which had been thought necessary for system implementations on early computers), but was soon rewritten in ,C,, a ,high-level programming language,.,[24], Although this followed the lead of ,Multics, and ,Burroughs,, it was Unix that popularized the idea., +,Unix had a drastically simplified file model compared to many contemporary operating systems: treating all kinds of files as simple byte arrays. The file system hierarchy contained machine services and devices (such as ,printers,, ,terminals,, or ,disk drives,), providing a uniform interface, but at the expense of occasionally requiring additional mechanisms such as ,ioctl, and mode flags to access features of the hardware that did not fit the simple ""stream of bytes"" model. The ,Plan 9, operating system pushed this model even further and eliminated the need for additional mechanisms., +,Unix also popularized the hierarchical file system with arbitrarily nested subdirectories, originally introduced by Multics. Other common operating systems of the era had ways to divide a storage device into multiple directories or sections, but they had a fixed number of levels, often only one level. Several major proprietary operating systems eventually added recursive subdirectory capabilities also patterned after Multics. DEC's ,RSX-11,M's ""group, user"" hierarchy evolved into ,VMS, directories, ,CP/M,'s volumes evolved into ,MS-DOS, 2.0+ subdirectories, and HP's ,MPE, group.account hierarchy and IBM's ,SSP, and ,OS/400, library systems were folded into broader POSIX file systems., +,Making the command interpreter an ordinary user-level program, with additional commands provided as separate programs, was another Multics innovation popularized by Unix. The ,Unix shell, used the same language for interactive commands as for scripting (,shell scripts, – there was no separate job control language like IBM's ,JCL,). Since the shell and OS commands were ""just another program"", the user could choose (or even write) his own shell. New commands could be added without changing the shell itself. Unix's innovative command-line syntax for creating modular chains of producer-consumer processes (,pipelines,) made a powerful programming paradigm (,coroutines,) widely available. Many later command-line interpreters have been inspired by the Unix shell., +,A fundamental simplifying assumption of Unix was its focus on ,newline,-,delimited, text for nearly all file formats. There were no ""binary"" editors in the original version of Unix – the entire system was configured using textual shell command scripts. The common denominator in the I/O system was the byte – unlike ,""record-based"" file systems,. The focus on text for representing nearly everything made Unix pipes especially useful, and encouraged the development of simple, general tools that could be easily combined to perform more complicated ,ad hoc, tasks. The focus on text and bytes made the system far more scalable and portable than other systems. Over time, text-based applications have also proven popular in application areas, such as printing languages (,PostScript,, ,ODF,), and at the application layer of the ,Internet protocols,, e.g., ,FTP,, ,SMTP,, ,HTTP,, ,SOAP,, and ,SIP,., +,Unix popularized a syntax for ,regular expressions, that found widespread use. The Unix programming interface became the basis for a widely implemented operating system interface standard (POSIX, see above). The ,C programming language, soon spread beyond Unix, and is now ubiquitous in systems and applications programming., +,Early Unix developers were important in bringing the concepts of ,modularity, and ,reusability, into ,software engineering, practice, spawning a ""software tools"" movement. Over time, the leading developers of Unix (and programs that ran on it) established a set of cultural norms for developing software, norms which became as important and influential as the technology of Unix itself; this has been termed the ,Unix philosophy,., +,The ,TCP/IP networking protocols, were quickly implemented on the Unix versions widely used on relatively inexpensive computers, which contributed to the ,Internet, explosion of worldwide real-time connectivity, and which formed the basis for implementations on many other platforms., +,The Unix policy of extensive on-line documentation and (for many years) ready access to all system source code raised programmer expectations, and contributed to the 1983 launch of the ,free software movement,., +,Free Unix and Unix-like variants,[,edit,], +,See also: ,Operating system § Unix and Unix-like operating systems, +, +, +, +, +, +, +, +, +,Console screenshots of ,Debian, (top, a popular ,Linux distribution,) and ,FreeBSD, (bottom, a popular ,Unix-like, operating system), +, +, +,In 1983, ,Richard Stallman, announced the ,GNU, (short for ""GNU's Not Unix"") project, an ambitious effort to create a ,free software, ,Unix-like, system; ""free"" in the sense that everyone who received a copy would be free to use, study, modify, and redistribute it. The GNU project's own kernel development project, ,GNU Hurd,, had not produced a working kernel, but in 1991 ,Linus Torvalds, released the ,Linux kernel, as free software under the ,GNU General Public License,. In addition to their use in the ,Linux, operating system, many GNU packages – such as the ,GNU Compiler Collection, (and the rest of the ,GNU toolchain,), the ,GNU C library, and the ,GNU core utilities, – have gone on to play central roles in other free Unix systems as well., +,Linux distributions,, consisting of the Linux kernel and large collections of compatible software have become popular both with individual users and in business. Popular distributions include ,Red Hat Enterprise Linux,, ,Fedora,, ,SUSE Linux Enterprise,, ,openSUSE,, ,Debian GNU/Linux,, ,Ubuntu,, ,Linux Mint,, ,Mandriva Linux,, ,Slackware Linux,, and ,Gentoo,., +,A free derivative of ,BSD, Unix, ,386BSD,, was released in 1992 and led to the ,NetBSD, and ,FreeBSD, projects. With the 1994 settlement of a lawsuit brought against the University of California and Berkeley Software Design Inc. (,USL v. BSDi,) by ,UNIX Systems Laboratories,, it was clarified that Berkeley had the right to distribute BSD Unix for free, if it so desired. Since then, BSD Unix has been developed in several different product branches, including ,OpenBSD, and ,DragonFly BSD,., +,Linux and BSD are increasingly filling the market needs traditionally served by proprietary Unix operating systems, as well as expanding into new markets such as the consumer desktop and mobile and embedded devices. Because of the modular design of the Unix model, sharing components is relatively common; consequently, most or all Unix and Unix-like systems include at least some BSD code, and some systems also include GNU utilities in their distributions., +,In a 1999 interview, Dennis Ritchie voiced his opinion that Linux and BSD operating systems are a continuation of the basis of the Unix design, and are derivatives of Unix:,[25], +, +,""I think the Linux phenomenon is quite delightful, because it draws so strongly on the basis that Unix provided. Linux seems to be the among the healthiest of the direct Unix derivatives, though there are also the various BSD systems as well as the more official offerings from the workstation and mainframe manufacturers."", +, +,In the same interview, he states that he views both Unix and Linux as ""the continuation of ideas that were started by Ken and me and many others, many years ago."",[25], +,OpenSolaris, was the open-source counterpart to ,Solaris, developed by ,Sun Microsystems,, which included a ,CDDL,-licensed kernel and a primarily ,GNU, userland. However, ,Oracle, discontinued the project upon their acquisition of Sun, which prompted a group of former Sun employees and members of the OpenSolaris community to fork OpenSolaris into the ,illumos, kernel. As of 2014, illumos remains the only active open-source System V derivative., +,ARPANET,[,edit,], +,In May 1975, ,RFC 681, described the development of ,Network Unix, by the Center for Advanced Computation at the ,University of Illinois,. The system was said to ""present several interesting capabilities as an ,ARPANET, mini-host"". At the time Unix required a license from ,Bell Laboratories, that at $20,000(US) was very expensive for non-,university, users, while an educational license cost just $150. It was noted that Bell was ""open to suggestions"" for an ARPANET-wide license., +,Specific features found beneficial were the local processing facilities, ,compilers,, ,editors,, a ,document preparation system,, efficient file system and access control, ,mountable, and unmountable volumes, unified treatment of peripherals as ,special files,, integration of the ,network control program, (NCP) within the Unix file system, treatment of ,network connections, as special files that can be accessed through standard Unix ,I/O calls,, closing of all files on program exit, and the decision to be ""desirable to minimize the amount of code added to the basic Unix kernel""., +,Branding,[,edit,], +,See also: ,List of Unix systems, +, +, +, +, +Promotional ,license plate, by ,Digital Equipment Corporation, +, +, +, +, +, +, +,HP9000, ,workstation, running ,HP-UX,, a certified Unix operating system, +, +, +,In October 1993, ,Novell,, the company that owned the rights to the Unix System V source at the time, transferred the ,trademarks, of Unix to the X/Open Company (now ,The Open Group,),,[26], and in 1995 sold the related business operations to ,Santa Cruz Operation, (SCO).,[27], Whether Novell also sold the ,copyrights, to the actual software was the subject of a 2006 federal lawsuit, ,SCO v. Novell,, which Novell won. The case was appealed, but on August 30, 2011, the United States Court of Appeals for the Tenth Circuit affirmed the trial decisions, closing the case.,[28], Unix vendor ,SCO Group Inc., accused Novell of ,slander of title,., +,The present owner of the trademark ,UNIX, is The Open Group, an industry standards consortium. Only systems fully compliant with and certified to the ,Single UNIX Specification, qualify as ""UNIX"" (others are called "",Unix-like,"")., +,By decree of The Open Group, the term ""UNIX"" refers more to a class of operating systems than to a specific implementation of an operating system; those operating systems which meet The Open Group's Single UNIX Specification should be able to bear the ,UNIX 98, or ,UNIX 03, trademarks today, after the operating system's vendor pays a substantial certification fee and annual trademark royalties to The Open Group.,[29], Systems licensed to use the UNIX trademark include ,AIX,,,[30], ,HP-UX,,,[31], ,Inspur K-UX,,,[32], ,IRIX,,,[33], ,Solaris,,,[34], ,Tru64 UNIX, (formerly ""Digital UNIX"", or ,OSF/1,),,[35], ,macOS,,,[36], and a part of ,z/OS,.,[37], Notably, Inspur K-UX is a Linux distribution certified as UNIX 03 compliant.,[38],[39], +,Sometimes a representation like ,Un*x,, ,*NIX,, or ,*N?X, is used to indicate all operating systems similar to Unix. This comes from the use of the asterisk (,*,) and the question mark characters as wildcard indicators in many utilities. This notation is also used to describe other Unix-like systems that have not met the requirements for UNIX branding from the Open Group., +,The Open Group requests that ,UNIX, is always used as an adjective followed by a generic term such as ,system, to help avoid the creation of a ,genericized trademark,., +,Unix, was the original formatting, but the usage of ,UNIX, remains widespread because it was once typeset in ,small caps, (,Unix,). According to ,Dennis Ritchie,, when presenting the original Unix paper to the third Operating Systems Symposium of the American ,Association for Computing Machinery, (ACM), ""we had a new typesetter and ,troff, had just been invented and we were intoxicated by being able to produce small caps."",[40], Many of the operating system's predecessors and contemporaries used all-uppercase lettering, so many people wrote the name in upper case due to force of habit. It is not an acronym.,[41], +,Trademark names can be registered by different entities in different countries and trademark laws in some countries allow the same trademark name to be controlled by two different entities if each entity uses the trademark in easily distinguishable categories. The result is that Unix has been used as a brand name for various products including book shelves, ink pens, bottled glue, diapers, hair driers and food containers.,[42], +,Several plural forms of Unix are used casually to refer to multiple brands of Unix and Unix-like systems. Most common is the conventional ,Unixes,, but ,Unices,, treating Unix as a ,Latin, noun of the ,third declension,, is also popular. The pseudo-,Anglo-Saxon, plural form ,Unixen, is not common, although occasionally seen. ,Sun Microsystems,, developer of the Solaris variant, has asserted that the term ,Unix, is itself plural, referencing its many implementations.,[43], +,See also,[,edit,], +, +, +, +, +, +,Book: Unix, +, +, +, +, +, +,Comparison of operating systems, and ,open-source and closed-source software, +,List of operating systems,, ,Unix systems,, and ,Unix utilities, +,Market share of operating systems, +,Operating systems timeline, +,Plan 9 from Bell Labs, +,Unix time, +,Year 2038 problem, +, +,References,[,edit,], +, +, +,^ ,a, ,b, ,McIlroy, M. D., (1987). ,A Research Unix reader: annotated excerpts from the Programmer's Manual, 1971–1986, ,(PDF), (Technical report). CSTR. Bell Labs. 139. ,Archived, ,(PDF), from the original on 11 November 2017., , +,^, ,Ritchie, D. M.; Thompson, K. (1974). ,""The UNIX Time-Sharing System"", ,(PDF),. ,CACM,. ,17, (7): 365–375. ,Archived, ,(PDF), from the original on 11 June 2015., , +,^ ,a, ,b, ,Ritchie, D.M.; Thompson, K. (July 1978). ,""The UNIX Time-Sharing System"",. ,Bell System Tech. J,. USA: American Tel. & Tel. ,57, (6): 1905–1929. ,doi,:,10.1002/j.1538-7305.1978.tb02136.x,. Retrieved ,December 9,, 2012,., , +,^, ,""Novell Completes Sale of UnixWare Business to The Santa Cruz Operation | Micro Focus"",. ,www.novell.com,. ,Archived, from the original on 20 December 2015,. Retrieved ,20 December, 2015,., , +,^, ,Apple Inc. - UNIX 03, ,Archived, 4 November 2013 at the ,Wayback Machine,. Register of Certified Products, The Open Group, +,^, ,Raymond, Eric, (19 September 2003). ,The Art of Unix Programming,. Addison-Wesley. ,ISBN, ,0-13-142901-9,. ,Archived, from the original on 12 February 2009,. Retrieved ,9 February, 2009,., , +,^, ,Ritchie, Dennis M., (January 1993). ,""The Development of the C Language"", ,(PDF),. ,Archived, ,(PDF), from the original on 11 June 2015,. Retrieved ,20 December, 2015,., , +,^, ,""The Elements of Operating-System Style"",. ,Archived, from the original on 12 November 2008., , +,^, ,""Tandy/Radio Shack Book: Whole Earth Software Catalog"",. 1984. ,UNIX was created by software developers for software developers, to give themselves an environment they could completely manipulate., , +,^, ,Powers, Shelley; Peek, Jerry; O'Reilly, Tim; Loukides, Mike (2002). ,Unix Power Tools,. ,ISBN, ,0-596-00330-7,., , +,^, ,Kernighan, Brian W. Pike, Rob. ,The UNIX Programming Environment., 1984. viii, +,^, ,Fiedler, Ryan (October 1983). ,""The Unix Tutorial / Part 3: Unix in the Microcomputer Marketplace"",. ,BYTE,. p. 132,. Retrieved ,30 January, 2015,., , +,^, ,""Tandy/Radio Shack Book: Whole Earth Software Catalog"",. 1984. ,The best thing about UNIX is its portability. UNIX ports across a full range of hardware—from the single-user $5000 IBM PC to the $5 million Cray. For the first time, the point of stability becomes the software environment, not the hardware architecture; UNIX transcends changes in hardware technology, so programs written for the UNIX environment can move into the next generation of hardware., , +,^, ,Stuart, Brian L. (2009). ,Principles of operating systems: design & applications,. Boston, Massachusetts: Thompson Learning. p. 23. ,ISBN, ,1-4188-3769-5,., , +,^ ,a, ,b, ,c, ,Ritchie, Dennis M. ,""The Evolution of the Unix Time-sharing System"", ,(PDF),. ,Archived, ,(PDF), from the original on 3 April 2017,. Retrieved ,9 January, 2017,., , +,^, ,Dolya, Aleksey (29 July 2003). ,""Interview with Brian Kernighan"",. ,Linux Journal,. ,Archived, from the original on 18 October 2017., , +,^, ,Rik Farrow. ,""An Interview with Peter G. Neumann"", ,(PDF),. ,;login:,. ,42, (4): 38. ,That then led to Unics (the castrated one-user Multics, so- called due to Brian Kernighan) later becoming UNIX (probably as a result of AT&T lawyers)., , +,^, ,Stallings, William. ,Operating Systems: Internals and Design Principles, 5th ed, page 91. Pearson Education, Inc. 2005., +,^, ,""The History of Unix"",. ,BYTE,. August 1983. p. 188,. Retrieved ,31 January, 2015,., , +,^, ,Thompson, Ken (16 September 2014). ,""personal communication, Ken Thompson to Donald W. Gillies"",. ,UBC ECE Website,. ,Archived, from the original on 22 March 2016., , +,^, ,Chesson, Greg, (12 November 2014). ,""Personal Communication, Greg Chesson to Donald W. Gillies"",. ,UBC ECE Website,. ,Archived, from the original on 22 March 2016., , +,^, ,""Loading"",. Developer.apple.com. ,Archived, from the original on 5 June 2012,. Retrieved ,22 August, 2012,., , +,^, ,""Unix's Revenge"",. asymco. 29 September 2010. ,Archived, from the original on 9 November 2010,. Retrieved ,9 November, 2010,., , +,^, ,Ritchie, Dennis (1979). ,""The Evolution of the Unix Time-sharing System"",. Bell Labs. ,Archived, from the original on 11 June 2015,. Retrieved ,30 April, 2016,. ,Perhaps the most important watershed occurred during 1973, when the operating system kernel was rewritten in C., , +,^ ,a, ,b, ,Benet, Manuel (1999). ,""Interview With Dennis M. Ritchie"",. LinuxFocus.org. ,Archived, from the original on 17 January 2018., , +,^, ,Chuck Karish   View profile    More options. ,""The name UNIX is now the property of X/Open – comp.std.unix | Google Groups"",. Groups.google.com,. Retrieved ,2010-11-09,., ,CS1 maint: Multiple names: authors list (,link,), +,^, ,""HP, Novell and SCO To Deliver High-Volume UNIX OS With Advanced Network And Enterprise Services"",. Novell.com. 20 September 1995. ,Archived, from the original on 23 January 2007,. Retrieved ,9 November, 2010,., , +,^, ,Jones, Pamela. ,""SCO Files Docketing Statement and We Find Out What Its Appeal Will Be About"",. ,Groklaw,. Groklaw.net,. Retrieved ,12 April, 2011,., , +,^, ,The Open Group. ,""The Open Brand Fee Schedule"",. ,Archived, from the original on 31 December 2011,. Retrieved ,26 December, 2011,. ,The right to use the UNIX Trademark requires the Licensee to pay to The Open Group an additional annual fee, calculated in accordance with the fee table set out below., , +,^, ,The Open Group. ,""AIX 6 Operating System V6.1.2 with SP1 or later certification"",. ,Archived, from the original on 8 April 2016., , +,^, ,The Open Group. ,""HP-UX 11i V3 Release B.11.31 or later certification"",. ,Archived, from the original on 8 April 2016., , +,^, ,The Open Group. ,""Inspur K-UX 2.0 certification"",. ,Archived, from the original on 9 July 2014., , +,^, ,The Open Group. ,""IRIX 6.5.28 with patches (4605 and 7029) certification"",. ,Archived, from the original on 4 March 2016., , +,^, ,The Open Group. ,""Oracle Solaris 11 FCS and later certification"",. ,Archived, from the original on 24 September 2015., , +,^, ,Bonnie Talerico. ,""Hewlett-Packard Company Conformance Statement"",. The Open Group. ,Archived, from the original on 10 December 2015,. Retrieved ,8 December, 2015,., , +,^, ,""macOS version 10.12 Sierra on Intel-based Mac computers"",. The Open Group. ,Archived, from the original on 2 October 2016., , +,^, ,Vivian W. Morabito. ,""IBM Corporation Conformance Statement"",. The Open Group,. Retrieved ,2018-01-21,., , +,^, ,Xie Ruohong. ,""Inspur Conformance Statement"",. The Open Group. ,Archived, from the original on 10 December 2015,. Retrieved ,8 December, 2015,., , +,^, ,Xie Ruohong. ,""Inspur Conformance Statement: Commands and Utilities V4"",. The Open Group. ,Archived, from the original on 16 April 2016,. Retrieved ,8 December, 2015,., , +,^, ,""Unix"",. Catb.org. ,Archived, from the original on 4 June 2011,. Retrieved ,9 November, 2010,., , +,^, ,Troy, Douglas (1990). ,UNIX Systems,. Computing Fundamentals. Benjamin/Cumming Publishing Company. p. 4. ,ISBN, ,0-201-19827-4,., , +,^, ,""Autres Unix, autres moeurs (OtherUnix)"",. ,Bell Laboratories,. 1 April 2000. ,Archived, from the original on 3 April 2017,. Retrieved ,3 January, 2018,., , +,^, ,""History of Solaris"", ,(PDF),. ,Archived, ,(PDF), from the original on 18 March 2017. ,UNIX is plural. It is not one operating system but, many implementations of an idea that originated in 1965., , +, +, +,Further reading,[,edit,], +, +,General, +, +, +,Ritchie, D.M.,; ,Thompson, K., (July–August 1978). ,""The UNIX Time-Sharing System"",. ,Bell System Technical Journal,. ,57, (6). Archived from ,the original, on November 3, 2010., , +,""UNIX History"",. ,www.levenez.com,. Retrieved ,17 March, 2005,., , +,""AIX, FreeBSD, HP-UX, Linux, Solaris, Tru64"",. ,UNIXguide.net,. Retrieved ,17 March, 2005,., , +,""Linux Weekly News, February 21, 2002"",. ,lwn.net,. Retrieved ,7 April, 2006,., , +,Lions, John,: ,Lions' ,""Commentary on the Sixth Edition UNIX Operating System"",., , with Source Code,, Peer-to-Peer Communications, 1996; ,ISBN, ,1-57398-013-7, +, +, +,Books, +, +, +,Salus, Peter H.,: ,A Quarter Century of UNIX,, Addison Wesley, 1 June 1994; ,ISBN, ,0-201-54777-5, +, +, +,Television, +, +, +,Computer Chronicles, (1985). "",UNIX,""., +,Computer Chronicles, (1989). "",Unix,""., +, +,External links,[,edit,], +, +, +, +,Look up ,Unix, in Wiktionary, the free dictionary., +, +, +, +, +, +,Wikimedia Commons has media related to ,Unix,., +, +, +, +, +, +,The Wikibook ,Guide to Unix, has a page on the topic of: ,Commands, +, +, +, +,The UNIX System,, at ,The Open Group,., +,The Evolution of the Unix Time-sharing System, at the ,Wayback Machine, (archived 8 April 2015), +,The Creation of the UNIX Operating System, at the ,Wayback Machine, (archived 2 April 2014), +,The Unix Tree: files from historic releases, +,Unix, at Curlie (based on ,DMOZ,), +,The Unix 1st Edition Manuals,., +,1982 film about Unix featuring Dennis Ritchie, Ken Thompson, Brian Kernighan, Alfred Aho, and more, +,A History of UNIX before Berkeley: UNIX Evolution: 1975-1984, +,BYTE Magazine, September 1986: UNIX and the MC68000, – a software perspective on the MC68000 CPU architecture and UNIX compatibility, +, +, +, +, +, +, +, +,v, +,t, +,e, +, +, +,Unix, ,command-line interface, programs and ,shell builtins, +, +, +, +,File system, +, +, +, +,cat, +,chmod, +,chown, +,chgrp, +,cksum, +,cmp, +,cp, +,dd, +,du, +,df, +,file, +,fuser, +,ln, +,ls, +,mkdir, +,mv, +,pax, +,pwd, +,rm, +,rmdir, +,split, +,tee, +,touch, +,type, +,umask, +, +, +, +, +, +,Processes, +, +, +, +,at, +,bg, +,crontab, +,fg, +,kill, +,nice, +,ps, +,time, +, +, +, +, +, +,User environment, +, +, +, +,env, +,exit, +,logname, +,mesg, +,talk, +,tput, +,uname, +,who, +,write, +, +, +, +, +, +,Text processing, +, +, +, +,awk, +,basename, +,comm, +,csplit, +,cut, +,diff, +,dirname, +,ed, +,ex, +,fold, +,head, +,iconv, +,join, +,m4, +,more, +,nl, +,paste, +,printf, +,sed, +,sort, +,strings, +,tail, +,tr, +,uniq, +,vi, +,wc, +,xargs, +, +, +, +, +, +,Shell builtins, +, +, +, +,alias, +,cd, +,echo, +,test, +,unset, +,wait, +, +, +, +, +, +,Searching, +, +, +, +,find, +,grep, +, +, +, +, +, +,Documentation, +, +, +, +,man, +, +, +, +, +, +,Software development, +, +, +, +,ar, +,ctags, +,lex, +,make, +,nm, +,strip, +,yacc, +, +, +, +, +, +,Miscellaneous, +, +, +, +,bc, +,cal, +,expr, +,lp, +,od, +,sleep, +,true and false, +, +, +, +, +, +, +, +, +, ,Categories, +, +,Standard Unix programs, +,Unix SUS2008 utilities, +, +, +, ,List, +, +, +, +, +, +, +, +, +, +, +, +, +,v, +,t, +,e, +, +, +,Unix, and ,Unix-like, ,operating systems, +, +, +, +, +, +, +,BSD, +, +,386BSD, +, +,FreeBSD, +,NetBSD, +,OpenBSD, +,DragonFly BSD, +, +, +,NeXTSTEP, +,Darwin, +, +,macOS, +,iOS, +, +, +,SunOS, +,Ultrix, +, +, +,Coherent, +,GNU, +,Linux, +, +,Android, +,Chrome OS, +, +, +,LynxOS, +,MINIX, +,QNX, +, +,BlackBerry 10, +, +, +,Research Unix, +,System V, +, +,A/UX, +,AIX, +,HP-UX, +,illumos, +,IRIX, +,OpenServer, +,Solaris, +,Tru64 UNIX, +,UnixWare, +, +, +,Xenix, +,more..., +, +, +, +, +, +, +, +, +, ,Category, +, ,Commons, +, ,Book, +, +, +, +, +, +, +, +, +, +, +, +, +,v, +,t, +,e, +, +, +,Operating systems, +, +, +, +,General, +, +, +, +,Advocacy, +,Comparison, +,Forensic engineering, +,History, +,Hobbyist development, +,List, +,Timeline, +,Usage share, +, +, +, +, +, +,Kernel, +, +, +, +, +,Architectures, +, +, +, +,Exokernel, +,Hybrid, +,Microkernel, +,Monolithic, +,Rump kernel, +,Unikernel, +, +, +, +, +, +,Components, +, +, +, +,Device driver, +,Loadable kernel module, +,Microkernel, +,User space, +, +, +, +, +, +, +, +, +,Process management, +, +, +, +, +,Concepts, +, +, +, +,Context switch, +,Interrupt, +,IPC, +,Process, +,Process control block, +,Real-time, +,Thread, +,Time-sharing, +, +, +, +, +, +,Scheduling, +algorithms, +, +, +, +,Computer multitasking, +,Fixed-priority preemptive, +,Multilevel feedback queue, +,Preemptive, +,Round-robin, +,Shortest job next, +, +, +, +, +, +, +, +, +,Memory management, and, +,resource, protection, +, +, +, +,Bus error, +,General protection fault, +,Memory protection, +,Paging, +,Protection ring, +,Segmentation fault, +,Virtual memory, +, +, +, +, +, +,Storage, access and, +,file systems, +, +, +, +,Boot loader, +,Defragmentation, +,Device file, +,File attribute, +,Inode, +,Journal, +,Partition, +,Virtual file system, +,Virtual tape library, +, +, +, +, +, +,List, +, +, +, +,AmigaOS, +,Android, +,BeOS, +,BSD, +,Chrome OS, +,CP/M, +,DOS, +,GNU, +,Haiku, +,illumos, +,IncludeOS, +,iOS, +,Linux, +,Macintosh, +, +,Classic Mac OS, +,macOS, +, +, +,MINIX, +,MorphOS, +,MUSIC/SP, +,Nemesis, +,NOS, +,OpenVMS, +,ORVYL, +,OS/2, +,OSv, +,Pick, +,QNX, +,ReactOS, +,RISC OS, +,RSTS/E, +,RSX-11, +,RT-11, +,Solaris, +,TOPS-10,/,TOPS-20, +,TPF, +,Unix, +,Visi On, +,VM/CMS, +,VS/9, +,Windows, +,Xinu, +,z/OS, +, +, +, +, +, +,Miscellaneous concepts, +, +, +, +,API, +,Computer network, +,HAL, +,Live CD, +,Live USB, +,OS shell, +, +,CLI, +,GUI, +,TUI, +,VUI, +, +, +,PXE, +, +, +, +, +, +, +, +, +, +,Authority control, +, +, +, +,GND,: ,4061835-3, +,BNF,: ,cb11968227m, ,(data), +, +, +, +, +, +, + + +, +, +, +, +",Unix +" 6 January 2018, at 06:23."," +, +, +, +Dries Buytaert at ,FOSDEM, 2008., +, +, +,Dries Buytaert, (born 19 November 1978 in ,Wilrijk,, ,Antwerp,, ,Belgium,),[1], is an ,open-source software, ,programmer, notable as founder and lead developer of the ,Drupal, ,CMS,.,[2],[3],[4], +, +, +, +,Contents, +, +, +,1, ,Career, +,2, ,References, +,3, ,External links, +, +,3.1, ,Interviews, +,3.2, ,Talks, +, +, +, +, +, +,Career,[,edit,], +,Buytaert defended his PhD dissertation in ,Computer Science, on 27 January 2008,[5], at ,Ghent University, in Belgium.,[6], +,From 1999-2000 he was the maintainer of the ,Linux,-,WLAN, FAQ,.,[7], +,It was during this time that he founded the concept of Drupal. At first, Dries maintained a small news site and a web board, but it developed to attract more audience.,[8], +,On 1 December 2007, Dries,[9], announced, together with co-founder ,Jay Batson, the launch of a start-up called ,Acquia,.,[10], Acquia is a commercial open-source software company providing products, services, and technical support for ,Drupal,. Acquia wants to be to Drupal what ,Red Hat, has been to ,Linux,.,[11], In 2009, Acquia helped re-launch Whitehouse.gov on Drupal.,[12], +,On 31 March 2008, Dries launched ,Mollom,, a service dedicated to stopping website spam: ""Mollom's purpose is to dramatically reduce the effort of keeping your site clean and the quality of your content high. Currently, Mollom is a spam-killing one-two punch combination of a state-of-the-art spam filter and CAPTCHA server."" Over 59,000 websites are protected by the Mollom service,,[13], including all of ,Netlog,'s messages.,[14], +,In 2008, Buytaert was elected ""Young Entrepreneurs of Tech"" by ,BusinessWeek,.,[15], He was also named to the ,MIT, ,Technology Review, ,TR35, as one of the top 35 innovators in the world under the age of 35.,[16],[17], +,References,[,edit,], +, +, +,^, ,Curriculum Vitae, ,Archived, 21 August 2010 at the ,Wayback Machine,., +,^, ,""History"",. Drupal.org,. Retrieved ,23 April, 2012,., , +,^, ,""The Drupal core"",. Drupal.org. Archived from ,the original, on 3 May 2012,. Retrieved ,23 April, 2012,., , +,^, ,""Revamp of MAINTAINERS.txt"",. Groups.drupal.org,. Retrieved ,23 April, 2012,., , +,^, ,""Dr. Dre, Dries Buytaert"",. Buytaert.net,. Retrieved ,23 April, 2012,., , +,^, ,""conferences.oreilly.com"",. Conferences.oreillynet.com,. Retrieved ,23 April, 2012,., , +,^, ,""Linux-Wlan Faq (Old)"",. Linux-wlan.org. 6 March 2000,. Retrieved ,23 April, 2012,., , +,^, ,""The Drop By Dries Buytaert"",. Eyerys. 30 December 2016., , +,^, ,""Acquia, my Drupal startup, Dries Buytaert"",. Buytaert.net,. Retrieved ,23 April, 2012,., , +,^, ,""Acquia"",. Acquia,. Retrieved ,23 April, 2012,., , +,^, ,""With $30M in funding, Acquia edges closer to an IPO"",. Venturebeat.com. 29 November 2012,. Retrieved ,20 January, 2013,., , +,^, ,""Whitehouse goes Drupal"",. Techpresident.com. 24 October 2009,. Retrieved ,23 April, 2012,., , +,^, ,""Mollom Scorecard"",. Retrieved ,27 January, 2013,., , +,^, ,""Mollom filtering millions of messages for Netlog"",. Buytaert.net. 20 May 2009,. Retrieved ,23 April, 2012,., , +,^, ,Kharif, Olga (17 April 2008). ,""Young Entrepreneurs of Tech 2008"",. Businessweek.com,. Retrieved ,23 April, 2012,., , +,^, ,""2008 Young Innovators Under 35"",. ,Technology Review,. 2008,. Retrieved ,15 August, 2011,., , +,^, ,Christopher Chang, 33 University of California, Berkeley. ,""TR35 2008 Young Innovator"",. Technologyreview.com,. Retrieved ,23 April, 2012,., ,CS1 maint: Multiple names: authors list (,link,), +, +, +,External links,[,edit,], +, +, +, +,Wikimedia Commons has media related to ,Dries Buytaert,., +, +, +, +, +, +,Wikinews, has :, +, +, +, +, +,an ,interview with Dries Buytaert,., +, +, +, +, +, +,Personal website, +,Acquia, +,Mollom, +, +,Interviews,[,edit,], +, +,An In-Depth Interview With Dries, Drupal Watchdog interview (February 2011), +,Drupal founder, Dries Buytaert Interview, CMS Critic interview (January 2009), +,Video interview, with Dries Buytaert by Noel Hidalgo in Antwerp, Belgium (26 July 2007), +, +,Talks,[,edit,], +, +,DrupalCon Los Angeles 2015: Driesnote Keynote, - Dries' talk at DrupalCon 2015 in Los Angeles, United States (May 2015), +,The State of Drupal, - Dries' talk at ,FOSDEM, 2007 in Brussels, Belgium (February 2007), +,Video of talk, delivered by Dries Buytaert titled the ,State of Drupal, from OSCMS conference on Yahoo campus in Sunnyvale, California (late March 2007), +,The State of Drupal, - Dries' State of Drupal talk at Drupalcon 2007 in Barcelona, Spain (September 2007), +, + + +, +, +, +, +",Dries Buytaert +" 18 January 2018, at 07:07."," +, +,Theo de Raadt, +, +, +, +,Theo de Raadt in 2013, +, +, +, +,Born, +,(,1968-05-19,), May 19, 1968 ,(age 49), +,Pretoria,, ,South Africa, +, +, +,Residence, +,Calgary,, ,Alberta,, ,Canada, +, +, +,Nationality, +,Canadian, +, +, +,Alma mater, +,University of Calgary, +, +, +,Known for, +,NetBSD,, ,OpenBSD,, ,OpenSSH,, advocacy, +, +, +,Awards, +,Award for the Advancement of Free Software, +, +, +,Scientific career, +, +, +,Fields, +,computer science, free software development, +, +, +,Institutions, +,FSA Corporation, +, +, +, +, +, +,Theo de Raadt, (,/,ˈ,θ,iː,.,oʊ, ,d,ɛ,ˈ,r,ɔː,t,/,; ,Dutch: ,[ˈteː.joː dəˈraːt],; born May 19, 1968) is a ,software engineer, who lives in ,Calgary,, ,Alberta,, ,Canada,. He is the founder and leader of the ,OpenBSD, and ,OpenSSH, projects, and was also a founding member of the ,NetBSD, project., +, +, +, +,Contents, +, +, +,1, ,Childhood, +,2, ,NetBSD, +,3, ,OpenBSD, +,4, ,Outspokenness, +, +,4.1, ,DARPA funding cancellation, +,4.2, ,Free driver advocacy, +,4.3, ,Clash with Linux developers, +, +, +,5, ,References, +,6, ,External links, +, +, +, +,Childhood,[,edit,], +,Theo de Raadt is the eldest of four children to a ,Dutch, father and a ,South African, mother, with two sisters and a brother. Concern over the mandatory two-year armed forces ,conscription, in South Africa led the family to emigrate to Calgary, Alberta, Canada in November 1977. In 1983, the ,largest recession in Canada, since the ,Great Depression, sent the family to the ,Yukon,. Prior to the move, De Raadt got his first computer, a ,Commodore VIC-20,, which was soon followed by an ,Amiga,. It is with these computers that he first began to develop software.,[1], +,In 1992, he obtained a ,BSc, in ,Computer Science, from the ,University of Calgary,., +,NetBSD,[,edit,], +,The ,NetBSD, project was founded in 1993 by Chris Demetriou, Adam Glass, Charles Hannum, and De Raadt, who collectively felt frustration at the speed and quality of ,Jolix,, the standard Berkeley software distribution then, and believed that a more open development model would be of greater benefit to development of an operating system. Jolix, also known as ,386BSD,, was derived from the original University of California Berkeley's 4.3BSD release, while the new NetBSD project would merge relevant code from the Networking/2 and 386BSD releases. The new project would centre its focus on clean, portable, correct code with the goal being to produce a unified, multi-platform, production-quality, BSD-based operating system., +,Because of the importance of networks such as the Internet in the distributed, collaborative nature of its development, De Raadt suggested the name ""NetBSD"", which the three other founders agreed upon.,[,citation needed,], +,The first NetBSD source code repository was established on March 21, 1993 and the initial release, NetBSD 0.8, was made in April 1993. This was derived from 386BSD 0.1 plus the version 0.2.2 unofficial patchkit, with several programs from the Net/2 release missing from 386BSD re-integrated, and various other improvements. In August 1993, NetBSD 0.9 was released, which contained many enhancements and bug fixes. This was still a ,PC,-platform-only release, although by this time work was underway to add support for other architectures., +,NetBSD 1.0 was released in October, 1994. This was the first multi-platform release, supporting the ,IBM PC compatible,, ,HP 9000, Series 300, ,Amiga,, ,68k, ,Macintosh,, ,Sun-4c, series and ,PC532,. Also in this release, the legally encumbered Net/2-derived source code was replaced with equivalent code from 4.4BSD-lite, in accordance with the ,USL v BSDi, lawsuit settlement. De Raadt played a vital role in the creation of the ,SPARC, port, as together with Chuck Cranor,,[2], he implemented much of the initial code., +,OpenBSD,[,edit,], +,In December 1994, De Raadt was asked to resign his position as a senior developer and member of the NetBSD core team, and his access to the source code repository was revoked. The reason for this is not wholly clear, although there are claims that it was due to personality clashes within the NetBSD project and on its ,mailing lists,.,[3], De Raadt has been criticized for having a somewhat abrasive personality: in his book, ,Free for All,, Peter Wayner claims that De Raadt ""began to rub some people the wrong way"" before the split from NetBSD;,[4], while ,Linus Torvalds, has described him as ""difficult"".,[5], Many have different feelings: the same interviewer describes De Raadt's ""transformation"" on founding OpenBSD and his ""desire to take care of his team,"" some find his straightforwardness refreshing, and few deny he is a talented ,hacker,[6], and security ""guru"".,[7], +,In October 1995, De Raadt founded OpenBSD, a new project ,forked, from NetBSD 1.0. The initial ,release,, OpenBSD 1.2, was made in July 1996, followed in October of the same year by OpenBSD 2.0.,[8], Since then, the project has followed a schedule of a release every six months, each of which is maintained and supported for one year., +,Outspokenness,[,edit,], +, +, +, +, +,Jon ""maddog"" Hall, presents De Raadt with ,daemon, horns at ,FISL8, +, +, +,De Raadt has been a vocal advocate of free software since the inception of OpenBSD, but he is also a strong proponent of free speech, having on occasion had rather public disputes with various groups, from Linux advocates to governments. This outspoken attitude, while sometimes the cause of conflict, has also led him to acclaim; De Raadt has given presentations at open source, free software and security conferences around the world—including ,FOSDEM, in ,Brussels,, ,Belgium,, ,Usenix, in ,San Antonio, Texas,, ,U.S.,, ,AUUG, Conference in ,Melbourne,, ,Australia, and ,FISL, in ,Porto Alegre,, RS, ,Brazil,., +,DARPA funding cancellation,[,edit,], +,After De Raadt stated his disapproval of the U.S.-led ,occupation of Iraq, in an April, 2003 ,interview,[9], with ,Toronto,'s ,Globe and Mail,, a multi-million-dollar ,US Department of Defense, grant to the ,University of Pennsylvania,'s ,POSSE project, was cancelled, effectively ending the project. Funding from the grant had been used in the development of OpenSSH and OpenBSD, as well as many other projects and was to be used to pay for the ,hackathon, planned for May 8, 2003. Despite money from the grant already having been used to secure accommodations for sixty developers for a week, the money was reclaimed by the government at a loss and the hotel was told not to allow the developers to pay the reclaimed money to resecure the rooms.,[10], This resulted in criticism among some that the US military held an anti-,free speech, attitude. The grant termination was, however, not as bad a blow as some portrayed it. The project's supporters rallied to help and the hackathon went on almost as planned. The funding was cut mere months before the end of the grant, further fueling the speculations regarding the situation surrounding the grant's termination., +,Free driver advocacy,[,edit,], +,De Raadt is also well known for his advocacy of ,free software, ,drivers,. He has long been critical of developers of ,Linux, and other free platforms for their tolerance of non-free drivers and acceptance of ,non-disclosure agreements,., +,In particular, De Raadt has worked to convince ,wireless, hardware vendors to allow the ,firmware, images of their products to be freely redistributed. These efforts have been largely successful, particularly in negotiations with ,Taiwanese, companies, leading to many new wireless drivers. De Raadt has commented that ""most Taiwanese vendors give us documentation almost immediately"", allowing open source drivers to reliably support devices, as opposed to the lack of willingness from US companies like ,Intel, and ,Broadcom, to release firmware images free from ,licensing, restrictions.,[11], +,For this De Raadt was awarded the ,Free Software Foundation,'s 2004 ,Award for the Advancement of Free Software,.,[12], +,Clash with Linux developers,[,edit,], +,In April 2007, De Raadt was involved in a controversy involving the use of ,GPL, code from the Linux ,bcm43xx, driver in the BSD ,bcw, driver.,[13],[14], Linux developers accused the BSD community of infringing GPL code, but De Raadt denied infringement, arguing that the BSD driver was not ""released"". He also maintained that the conflict was not about GPL, but the way Linux developer ,Michael Buesch, handled the situation. To Buesch's email, he responded:,[15], +, +,It will be resolved in our tree, but it is up to him which way he does it. But when you approach issues like this with comments like ""We'd like you to start contacting us to resolve the issue now"" and your first mail is cc'd to a couple hundred people.... in the future, please think more carefully, ok?, +,Because right now, in that mail, you've pretty much done Broadcom's job for them. You've told the entire BSD community who may want to use a driver for this chip later, that because of a few GPL issues you are willing to use very strong words—published very widely—to disrupt the efforts of one guy who is trying to do things for them. And, you are going to do this using the GPL, even. You did not privately mail that developer. No, you basically went public with it., +,That is how about half the user and developer community will see it. They will see your widely posted mail as an overly strong position., +, +,Another clash occurred in August 2007, when a group of Linux developers attempted to modify the license of dual-licensed ath5k driver. De Raadt summarized the issue as follows:,[16], +, +,GPL fans said the great problem we would face is that companies would take our BSD code, modify it, and not give back. Nope—the great problem we face is that people would wrap the GPL around our code, and lock us out in the same way that these supposed companies would lock us out. Just like the Linux community, we have many companies giving us code back, all the time. But once the code is GPL'd, we cannot get it back., +, +,References,[,edit,], +, +, +,^, ,The Age article: ,""Staying on the cutting edge"",. October 8, 2004. Accessed April 5, 2006., +,^, ,""Chuck Cranor's Home Page"",., , +,^, ,Glass, Adam. Message to netbsd-users: ,Theo De Raadt(sic),,, December 23, 1994. Visited January 8, 2006., +,^, ,Wayner, Peter. ,Free For All: How Linux and the Free Software Movement Undercut the High Tech Titans,, ,18.3 Flames, Fights, and the Birth of OpenBSD,, 2000. Visited January 6, 2006., +,^, ,Forbes. ,Is Linux For Losers?, June 16, 2005. Visited January 8, 2006., +,^, ,In ,this message, the NetBSD core team acknowledge De Raadt's ""positive contributions"" to the project despite their problems with him., +,^, ,Tux Journal. ,A good morning with: Theo de Raadt,,, June 2, 2005. Visited April 21, 2006 (original is ,404,; please see a ,cached copy on archive.org,), +,^, ,Raadt, Theo de. Mail to openbsd-announce: ,The OpenBSD 2.0 release,,, October 18, 1996. Visited December 10, 2005., +,^, ,Globe and Mail article: ,""U.S. military helps fund Calgary hacker"",. April 6, 2003. Accessed October 30, 2006., +,^, ,LWN.net article: ,""DARPA Cancels OpenBSD Funding"",. April 24, 2003. Accessed April 5, 2006., +,^, ,Andrews, Jeremy (May 2, 2006). ,""Interview: Theo de Raadt"",. Archived from ,the original, on April 24, 2013., , +,^, ,Lee, Matt (February 26, 2005). ,""Theo de Raadt presented with the 2004 Free Software Award"",. Free Software Foundation., , +,^, ,LXer article: ,Broadcom Driver Dispute Uglier Than Necessary,. April 7, 2007. Accessed April 8, 2007., +,^, ,Thread on gmane.linux.kernel.wireless.general: ,OpenBSD bcw: Possible GPL license violation issues, Various dates beginning April 4, 2007. Accessed April 8, 2007., +,^, ,Theo de Raadt (4 April 2007). ,""OpenBSD bcw: Possible GPL license violation issues"",. Retrieved ,28 May, 2017, – via ,marc.info,., , +,^, ,de Raadt, Theo (August 31, 2007). ,""That whole ""Linux stealing our code"" thing"",. LKML.org., , +, +, +,External links,[,edit,], +, +, +,Free software portal, +, +, +, +, +, +,Wikiquote has quotations related to: ,Theo de Raadt, +, +, +, +, +, +,Wikimedia Commons has media related to ,Theo de Raadt,., +, +, +, +,Theo de Raadt's Web site, +,Interview (2006): Theo de Raadt,, at ,KernelTrap.org, (copy at Internet Archive)., +,Theo de Raadt Responds,, interview at ,Slashdot,., +,Interview (2001): Theo de Raadt,, at ,KernelTrap.org, (copy at Internet Archive)., +,Is Linux For Losers?,, interview at ,Forbes.com,., +,Theo de Raadt presented with the 2004 Free Software Award, +,NNDB: Theo de Raadt, +,Staying on the cutting edge, +, +, +, +, +, +, +, +,v, +,t, +,e, +, +, +,The ,OpenBSD, Project, +, +, +, +,Operating system, +, +, +, +,OpenBSD, +, +,version history, +,security, +, +, +, +, +, +, +, +,Related projects, +, +, +, +,CARP, +,LibreSSL, +,mandoc, +,OpenSSH, +,OpenBGPD, +,OpenIKED, +,OpenOSPFD, +,OpenNTPD, +,OpenSMTPD, +,PF, +,sndio, +,spamd, +,Systrace, +,tmux, +,Xenocara, +, +,cwm, +, +, +,W^X, +, +, +, +, +, +,People, +, +, +, +,Theo de Raadt, +,Niels Provos, +,OpenBSD Foundation, +,Plaid Tongued Devils, +, +, +, +, +, +,Resources, +, +, +, +,OpenBSD Journal, +, +, +, +, +, +, +, +, +, +,Authority control, +, +, +, +,WorldCat Identities, +,VIAF,: ,106072661, +,MusicBrainz,: ,11ff06a3-6127-4b6d-9b43-bafcd8c650da, +,DBLP,: ,54/954, +, +, +, +, +, +, + + +, +, +, +, +",Theo de Raadt +" 22 January 2018, at 01:35.","This article is about the computing platform. For the currency, see ,Ether (currency),., +, +, +,Ethereum, +Currency: ,Ether, +, +, +, +,Ethereum Project's logo, +, +, +, +,Denominations, +, +, +,Plural, +,Ethers/Ethereums, +, +, +,Symbol, +,Ξ, +, +, +,Ticker symbol, +,ETH, +, +, +,Superunits, +, +, +, +, 10,12, +,Tether, +, +, +, 10,9, +,Gether, +, +, +, 10,6, +,Mether, +, +, +, 10,3, +,Kether, +, +, +,Subunits, +, +, +, +, 10,-3, +,Finney, milliether (mETH), +, +, +, 10,-6, +,Szabo, μETH, +, +, +, 10,-9, +,Shannon, nETH, Gwei, +, +, +, 10,-12, +,Babbage, pETH, Mwei, +, +, +, 10,-18, +,Wei, +, +, +,Coins, +,Balances from accounts to be debited/credited, in Wei, non-UTXO scheme, +, +, +,Development, +, +, +,White paper, +,https://github.com/ethereum/wiki/wiki/White-Paper, +, +, +,Implementation(s), +,Various, Go reference implementation, +, +, +,Code repository, +,https://github.com/ethereum/, +, +, +,Operating System, +,Non-specific, +, +, +,Source model, +,Open Source, +, +, +,License, +,GPL-3.0 & LGPL-3.0, +, +, +,Website, +,ethereum.org, +, +, +,Ledger, +, +, +,Timestamping scheme, +,Memory-hard Proof of Work (Ethash), +, +, +,Hash function, +,Keccak, +, +, +,Issuance, +,Block and Ommer reward, +, +, +,Block reward, +,3 ETH (non-deterministic), +, +, +,Block time, +,17-20 seconds, +, +, +,Block explorer, +,etherscan.io, +, +, +,Ethereum, is an ,open-source,, public, ,blockchain,-based ,distributed computing, platform featuring ,smart contract, (scripting) functionality.,[1], More specifically, it is a distributed ledger for state transitions. It is the bockchain network for ,Ether,, a ,cryptocurrency,. Ether can be transferred between accounts and used to compensate participant nodes for computations performed.,[2], Etherium provides a decentralized ,Turing-complete, ,virtual machine,, the Ethereum Virtual Machine (EVM), which can execute scripts using an international network of public nodes. ""Gas"", an internal transaction pricing mechanism, is used to mitigate ,spam, and allocate resources on the network.,[1],[3], +,Ethereum was proposed in late 2013 by ,Vitalik Buterin,, a ,cryptocurrency, researcher and programmer. Development was funded by an online ,crowdsale, that took place between July and August 2014. ,[4], The system went live on 30 July 2015, with 11.9 million coins ""premined"" for the crowdsale.,[5], This accounts for approximately 13 percent of the total circulating supply., +,In 2016, as a result of the collapse of ,The DAO, project, Ethereum was split into two separate blockchains – the new separate version became Ethereum (ETH), and the original continued as ,Ethereum Classic, (ETC).,[6],[7],[8], The value of the Ethereum currency grew over 13,000 percent in 2017.,[9], +, +, +, +,Contents, +, +, +,1, ,Etymology, +,2, ,History, +, +,2.1, ,Milestones, +,2.2, ,Public Testnets, +,2.3, ,The DAO event, +,2.4, ,Hard Forks, +, +, +,3, ,Architecture, +, +,3.1, ,Ether, +,3.2, ,Ethereum Virtual Machine, +,3.3, ,Smart contracts, +,3.4, ,Performance, +,3.5, ,Proposed uses, +, +, +,4, ,Decentralized applications, +, +,4.1, ,Enterprise software, +, +,4.1.1, ,Enterprise Ethereum Alliance (EEA), +,4.1.2, ,Permissioned ledgers, +, +, +, +, +,5, ,Ethereums, +,6, ,Criticisms, +,7, ,References, +,8, ,External links, +, +, +, +,Etymology,[,edit,], +,Vitalik Buterin picked the name Ethereum after browsing Wikipedia articles about elements and science fiction, when he found the name, noting, ""I immediately realized that I liked it better than all of the other alternatives that I had seen; I suppose it was the fact that sounded nice and it had the word ""ether"", referring to the hypothetical invisible medium that permeates the universe and allows light to travel."",[10], +,History,[,edit,], +,Ethereum was initially described in a white paper by ,Vitalik Buterin,,,[11], a programmer involved with ,Bitcoin Magazine,, in late 2013 with a goal of building decentralized applications.,[12],[13], Buterin had argued that Bitcoin needed a ,scripting language, for application development. Failing to gain agreement, he proposed development of a new platform with a more general scripting language.,[14],:,88, +,At the time of public announcement in January 2014, the core Ethereum team was Vitalik Buterin, Mihai Alisie, Anthony Di Iorio, and Charles Hoskinson.,[15], Formal development of the Ethereum software project began in early 2014 through a ,Swiss, company, ,Ethereum Switzerland GmbH, (,EthSuisse,).,[16],[17], Subsequently, a Swiss non-profit foundation, the Ethereum Foundation (,Stiftung Ethereum,), was created as well. Development was funded by an online public ,crowdsale, during July–August 2014, with the participants buying the Ethereum value token (ether) with another digital currency, ,bitcoin,.,[4], While there was early praise for the technical innovations of Ethereum, questions were also raised about its security and scalability.,[12], +,Milestones,[,edit,], +,Several codenamed prototypes of the Ethereum platform were developed by the Foundation, as part of their Proof-of-Concept series, prior to the official launch of the Frontier network. ""Olympic"" was the last of these prototypes, and public beta pre-release.,[18],[19], The Olympic network provided users with a ,bug bounty, of 25,000 ether for stress testing the limits of the Ethereum blockchain. ""Frontier"" marked the tentative experimental release of the Ethereum platform in July 2015.,[20],[21], +,""Homestead"" was the first to be considered ,stable,.,[22],[23], It includes improvements to transaction processing, gas pricing, and security.,[24],[22],[25], Since the initial launch, Ethereum has undergone several planned protocol upgrades, which are important changes affecting the underlying functionality and/or ,incentive structures, of the platform.,[26],[27], +,There are at least two other protocol upgrades planned in the future: ""Metropolis"" is intended to reduce the complexity of the EVM and provide more flexibility for smart contract developers.,[27], Metropolis also adds supports for zkSnarks (from ,Zcash,); with the first zksnarks transaction occurring on testnet on September 19, 2017.,[28], ""Serenity"" should include a fundamental change to Ethereum's consensus algorithm to enable a basic transition from hardware mining (,proof-of-work,) to virtual mining (,proof-of-stake,).,[27],[29], Improvements to ,scalability,, specifically ,sharding,, are also said to be a key objective on the development roadmap.,[30],[31], +, +, +,Version, +,Code name, +,Release date, +, +, +,Old version, no longer supported:, 0, +,Olympic, +,May, 2015, +, +, +,Old version, no longer supported:, 1, +,Frontier, +,30 July 2015, +, +, +,Old version, no longer supported:, 2, +,Homestead, +,14 March 2016, +, +, +,Current stable version:, ,3, +,Metropolis (vByzantium), +,16 October 2017, +, +, +,Future release:, 3.5, +,Metropolis (vConstantinople), +,TBA,[28], +, +, +,Future release:, 4, +,Serenity, +,TBA, +, +, +, +, +,Legend:, +,Old version, +,Older version, still supported, +,Latest version, +,Latest preview version, +,Future release, +, +, +, +, +, +,Public Testnets,[,edit,], +,Ethereum has three active public testnets: Ropsten (Proof of Work secured), Kovan (Parity based Proof of Authority secured), and Rinkeby (Clique Proof of Authority scheme). There is no Proof of Stake secured testnet. Each testnet has its own distinct genesis block, and are fully functional testing grounds for decentralized applications. Testnet Ether is not supposed to have market value., +,The DAO event,[,edit,], +,In 2016 a ,decentralized autonomous organization, called ,The DAO,, a set of ,smart contracts, developed on the platform, raised a record ,US$150 million, in a ,crowdsale, to fund the project.,[32], The DAO was exploited in June when ,US$50 million, in ether were claimed by an anonymous entity.,[33],[34], The event sparked a debate in the crypto-community about whether Ethereum should perform a contentious ""hard fork"" to reappropriate the affected funds.,[35], As a result of the dispute, the network split in two. Ethereum (the subject of this article) continued on the forked blockchain, while ,Ethereum Classic, continued on the original blockchain.,[36], The hard fork created a rivalry between the two networks.,[37], +,Hard Forks,[,edit,], +,After the hard fork related to The DAO, Ethereum subsequently forked twice in the fourth quarter of 2016 to deal with other attacks.,[38], By the end of November 2016, Ethereum had increased its ,DDoS, protection, de-bloated the blockchain, and thwarted further spam attacks by hackers.,[25], +,Architecture,[,edit,], +,Ether,[,edit,], +,Main article: ,Ether (currency), +,The value token of the Ethereum blockchain is called ether. It is listed under the code ETH and traded on ,cryptocurrency, exchanges, and the ,Greek, ,uppercase Xi, character (Ξ) is generally used for its ,currency symbol,. It is also used to pay for transaction fees and computational services on the Ethereum network.,[39], +,Ethereum Virtual Machine,[,edit,], +,The Ethereum Virtual Machine (EVM),[40],[41], is the runtime environment for smart contracts in Ethereum. The formal definition of the EVM is specified in the Ethereum Yellow Paper, original version by ,Gavin Wood,.,[42],[,better source needed,],[43], It is sandboxed and also completely isolated from the network, filesystem or other processes of the host computer system. Every Ethereum node in the network runs an EVM implementation and executes the same instructions. Ethereum Virtual Machines have been implemented in ,C++,, ,Go,, ,Haskell,, ,Java,, ,JavaScript,, ,Python,, ,Ruby,, ,Rust,, and ,WebAssembly, (currently under development).,[44],[45], +,Smart contracts,[,edit,], +,Ethereum's ,smart contracts, are based on computer language, which developers use to program their own functionalities.,[46], Smart contracts are ,high-level, programming ,abstractions, that are compiled down to EVM ,bytecode, and deployed to the Ethereum blockchain for execution. They can be written in ,Solidity, (a language library with similarities to ,C, and ,JavaScript,), Serpent (similar to ,Python,), LLL (a ,low-level, ,Lisp,-like language), and Mutan (,Go,-based, but deprecated). There is also a research-oriented language under development called Viper (a ,strongly-typed, ,Python,-derived ,decidable language,).,[47], +,Smart contracts can be public, which opens up the possibility to prove functionality, e.g. self-contained ,provably fair, casinos.,[48], +,One issue related to using smart contracts on a public blockchain is that bugs, including security holes, are visible to all but cannot be fixed quickly.,[49], One example of this is the 17 June 2016 attack on The DAO, which could not be quickly stopped or reversed.,[33], +,There is ongoing research on how to use formal verification to express and prove non-trivial properties. A ,Microsoft Research, report noted that writing solid smart contracts can be extremely difficult in practice, using The DAO hack to illustrate this problem. The report discussed tools that Microsoft had developed for verifying contracts, and noted that a large-scale analysis of published contracts is likely to uncover widespread vulnerabilities. The report also stated that it is possible to verify the equivalence of a Solidity program and the EVM code.,[50], +,Performance,[,edit,], +,In Ethereum all smart contracts are stored publicly on every node of the blockchain, which has trade-offs.,[51], Being a ,blockchain, means it is ,secure by design, and is an example of a distributed computing system with high ,Byzantine fault tolerance,. The downside is that performance issues arise in that every node is calculating all the smart contracts in real time, resulting in lower speeds.,[51], As of January 2016, the Ethereum protocol could process 25 transactions per second.,[51], On 19 December 2016, Ethereum exceeded one million transactions in a single day for the first time.,[52], +, +,Micro Raiden was launched November 2017.,[53], +,Buterin and Joseph Poon (a co-author of ,Bitcoin,'s lightning network whitepaper) announced in 2017 their plan to launch a scaling solution called Plasma which creates ""child"" blockchains to the ""main"" parent blockchain.,[54], The plasma project is not without skeptics, specifically Vlad Zamfir (Ethereum's lead researcher on proof of stake) has publicly questioned the plasma project's viability.,[54], +,Ethereum engineers have been working on ,sharding, the calculations, and the next step (called Ethereum 2) was presented at Devcon 3.,[55], +, +,Ethereum's blockchain uses ,Merkle Patricia trees,, for security reasons, to improve scalability, and to optimize transaction hashing.,[56], +,Proposed uses,[,edit,], +,Many uses have been proposed for Ethereum platform, including ones that are impossible or unfeasible.,[57],[58],[39], Use case proposals have included finance, the ,internet-of-things,, ,farm-to-table, produce, ,electricity sourcing and pricing,, and ,sports betting,.,[39],[59], Ethereum is (as of 2017) the leading ,blockchain, platform for ,initial coin offering, projects, with over 50% market share.,[60], +,Decentralized applications,[,edit,], +,The projects listed in this section are not exhaustive and may be outdated., +, +,Digital signatures, that ensure authenticity and proof of existence of documents: the ,Luxembourg Stock Exchange, has developed such a system,[61], +,Slock.It, is developing ,smart locks,[62], +,Digital tokens ,pegged, to ,fiat currencies,: Dai, stablecoin pegged to US dollar.,[63], ,Decentralized Capital.,[64], Spanish bank ,Santander, is also involved in such a project,[65],., +,Digital tokens ,pegged, to ,gold,: ,Digix,[4],[66], +,Improved ,digital rights management, for music: ,Imogen Heap, used the technology,[67], +,Platforms for ,prediction markets,: ,Augur,, Gnosis,[68],[69], Stox,[70],[71], +,Platforms for ,crowdfunding,: ,the DAO,[72],[73],[32], +,Social media platforms with economic incentives: ,Backfeed,,[74], ,Akasha,[75], +,Decentralized marketplaces: ,FreeMyVunk,,[76], ,Etheropt,,[77], ,TransActive Grid,[78], +,Remittance: ,Everex,[79], +,Online ,gambling,: ,Etheroll,[80], +,Electric car charging management: RWE,[81], +,Secure ,identity systems, for the Internet: ,uPort,[82],[83], +,Labour economics,: ,Blocklancer,,,[84], ,Ethlance,[85], +,Video Games,: ,Cryptokitties, popularity in December 2017 caused the Ethereum network to slow down.,[86], +, +,Enterprise software,[,edit,], +,Ethereum-based customized software and networks, independent from the public Ethereum chain, are being tested by ,enterprise software, companies.,[87], Interested parties include ,Microsoft,, ,IBM,, ,JPMorgan Chase,,,[39],[88], ,Deloitte,,,[89], ,R3,,,[90], ,Innovate UK, (cross-border payments prototype).,[91],[92], Barclays, UBS and Credit Suisse are experimenting with Ethereum blockchain to automate Markets in Financial Instruments Directive (MiFID) II requirements.,[93], +,Enterprise Ethereum Alliance (EEA),[,edit,], +,In March 2017, various blockchain start-ups, research groups, and Fortune 500 companies announced the creation of the Enterprise Ethereum Alliance (EEA) with 30 founding members.,[94], By May, the nonprofit organization had 116 enterprise members—including ,ConsenSys,, ,CME Group,, ,Cornell University's research group,, ,Toyota Research Institute,, ,Samsung SDS,, ,Microsoft,, ,Intel,, ,J.P. Morgan,, ,Cooley LLP,, ,Merck KGaA,, ,DTCC,, ,Deloitte,, ,Accenture,, ,Banco Santander,, ,BNY Mellon,, ,ING,, and ,National Bank of Canada,.,[95],[96],[97], +,The purpose of the EEA is to coordinate the engineering of an open-source reference standard and private ""permissioned"" version of the Ethereum blockchain that can address the common interests of enterprises in banking, management, consulting, automotive, pharmaceutical, health, technology, mobile, entertainment, and other industries, while working with developers from the Ethereum ecosystem. Certain members of the alliance have also indicated a desire to investigate and collaborate on hybrid architectures to potentially anchor private blockchains to the public Ethereum blockchain in the future, although concerns remain over the security, compliance, and regulations involved in bridging such permissioned and ""permissionless"" blockchains.,[94], +,By July 2017, there were over 150 members in the alliance, including recent additions ,MasterCard,, ,Cisco Systems,, and ,Scotiabank,.,[98], +,Permissioned ledgers,[,edit,], +,Ethereum-based ,permissioned blockchain, variants are used and being investigated for various projects., +, +,J.P. Morgan Chase, is developing a permissioned-variant of Ethereum blockchain dubbed ""Quorum."",[99], It's designed to toe the line between private and public in the realm of shuffling derivatives and payments. The idea is to satisfy regulators who need seamless access to financial goings-on, while protecting the privacy of parties that don't wish to reveal their identities nor the details of their transactions to the general public.,[100], +,Royal Bank of Scotland, has announced that it has built a Clearing and Settlement Mechanism (CSM) based on the Ethereum distributed ledger and smart contract platform.,[101],[102], +, +,Ethereums,[,edit,], +,Ethereums refer to the broad category that consists of all cryptocurrencies which emerged from the original ,Ethereum, blockchain:, +, +,Ethereum Classic, +,Expanse.,[103], +,Ethereum Fog,[104], +,EtherZero,[105], +,Ethereum Vega,[106], +,Etherite,[107], +,Ethereum Dark,[108], +, +,Ethereums can also refer for all ,tokens, developed and run on the Ethereum blockchain,[109], +,Criticisms,[,edit,], +,A finance blogger on ,FT Alphaville, has pointed out that criminals are using Ethereum to run ,Ponzi schemes, and other forms of investment fraud.,[110], The article was based on a paper from the ,University of Cagliari,, which placed the number of Ethereum smart contracts which facilitate Ponzi schemes at nearly 10% of 1384 smart contracts examined. However, it also estimated that only 0.05% of the transactions on the network were related to such contracts.,[111], +,References,[,edit,], +, +, +,^ ,a, ,b, ,Understanding Ethereum (Report). CoinDesk. 24 June 2016., , +,^, ,Cryptocurrencies: A Brief Thematic Review, ,Archived, 25 December 2017 at the ,Wayback Machine,.. Social Science Research Network. Date accessed 28 august 2017., +,^, ,ConsenSys (23 June 2016). ,""Ethereum, Gas, Fuel, & Fees"",. ,ConsenSys Media,. ,Archived, from the original on 23 May 2017,. Retrieved ,15 January, 2017,., , +,^ ,a, ,b, ,c, ,Aitken, Roger (23 April 2016). ,""Digital Gold 'Done Right' With DigixDAO Crypto-Trading on OpenLedger"",. ,Forbes,. ,Archived, from the original on 28 April 2016,. Retrieved ,28 April, 2016,., , +,^, ,etherchain.org. ,""Accounts - etherchain.org - The ethereum blockchain explorer"",. ,www.etherchain.org,. ,Archived, from the original on 7 August 2017,. Retrieved ,30 May, 2017,., , +,^, ,De Jesus, Cecille (19 July 2016). ,""The DAO Heist Undone: 97% of ETH Holders Vote for the Hard Fork"",. Futurism, LLC. ,Archived, from the original on 7 August 2017,. Retrieved ,16 May, 2017,., , +,^, ,Quentson, Andrew (17 July 2016). ,""Miners Vote Overwhelmingly in Support of Ethereum's Hardfork"",. Cryptocoinnews. ,Archived, from the original on 26 June 2017,. Retrieved ,14 May, 2017,., , +,^, ,Bradley, Miles (17 November 2016). ,""CoinDesk Research: Ethereum Hard Fork Had Little Impact on Sentiment"",. Coindesk. ,Archived, from the original on 8 July 2017,. Retrieved ,14 May, 2017,., , +,^, ,""Ethereum hits a fresh record high and is up over 13,000% in a year"",. ,CNBC,. January 8, 2017., , +,^, ,Vitalik Buterin (2014). ,""So where did the name Ethereum come from?"",., , +,^, ,""White Paper· ethereum/wiki Wiki · GitHub"",. ,Archived, from the original on 28 March 2015., , +,^ ,a, ,b, ,Finley, Klint (27 January 2014). ,""Out in the Open: Teenage Hacker Transforms Web Into One Giant Bitcoin Network"",. ,Wired,. ,Archived, from the original on 18 March 2016,. Retrieved ,21 March, 2016,., , +,^, ,Schneider, Nathan (7 April 2014). ,""Code your own utopia: Meet Ethereum, bitcoin's most ambitious successor"",. Al Jazeera. ,Archived, from the original on 23 February 2016,. Retrieved ,21 February, 2016,., , +,^, ,Tapscott, Don; Tapscott, Alex (2016-05-07). ,The Blockchain Revolution: How the Technology Behind Bitcoin is Changing Money, Business, and the World,. Portfolio. ,ISBN, ,978-0670069972,., , +,^, ,Vitalik Buterin (23 January 2014). ,""Ethereum: Now Going Public"",. Archived from ,the original, on 2 March 2014., , +,^, ,Schmid, Valentin (10 May 2014). ,""The Entrepreneur: Joe Lubin, COO of Ethereum"",. ,Epoch Times,. ,Archived, from the original on 25 April 2016,. Retrieved ,31 March, 2016,., , +,^, ,""Company Overview of Ethereum Switzerland GmbH"",. Bloomberg. 20 August 2016. ,Archived, from the original on 20 August 2016,. Retrieved ,20 August, 2016,. ,The company was founded in 2014 and is based in Baar, Switzerland., , +,^, ,Buterin, Vitalik (9 May 2015). ,""Olympic: Frontier Pre-Release"",. Ethereum Foundation. ,Archived, from the original on 2 June 2017,. Retrieved ,5 June, 2017,., , +,^, ,Lombardo, Hans (17 May 2015). ,""Ethereum Debuts ""eπ"" Ethereum-on-Raspberry Pi as Olympic Whirs before Frontier Release"",. Allcoinsnews. ,Archived, from the original on 20 August 2017,. Retrieved ,5 June, 2017,., , +,^, ,Gupta, Vinay (12 March 2015). ,""Getting to the Frontier"",. Ethereum Foundation. ,Archived, from the original on 8 May 2015,. Retrieved ,5 June, 2015,., , +,^, ,Vigna, Paul (31 July 2015). ,""BitBeat: Ethereum Opens Its 'Frontier' for Business"",. The Wall Street Journal. ,Archived, from the original on 6 September 2017,. Retrieved ,5 June, 2017,., , +,^ ,a, ,b, ,""Ethereum Homestead Documentation: The Homestead Release"",. Ethereum Foundation. n.d. ,Archived, from the original on 6 June 2017,. Retrieved ,5 June, 2017,., , +,^, ,Donnelly, Jacob (14 March 2016). ,""Ethereum Blockchain Project Launches First Production Release"",. CoindDesk. ,Archived, from the original on 6 June 2017,. Retrieved ,5 June, 2017,., , +,^, ,Wilcke, Jeffrey (29 February 2016). ,""Homestead Release"",. Ethereum Foundation. ,Archived, from the original on 3 June 2017,. Retrieved ,5 June, 2017,., , +,^ ,a, ,b, ,Hertig, Alyssa (22 November 2016). ,""Ethereum's Fourth Blockchain Fork: So Far, So Good"",. CoinDesk. ,Archived, from the original on 27 May 2017,. Retrieved ,5 June, 2017,., , +,^, ,Gupta, Vinay (3 March 2015). ,""The Ethereum Launch Process"",. Ethereum Foundation. ,Archived, from the original on 6 June 2017,. Retrieved ,5 June, 2017,., , +,^ ,a, ,b, ,c, ,Silva, Los (25 February 2017). ,""Ethereum's Road Map for 2017"",. ETHNews. ,Archived, from the original on 2 June 2017,. Retrieved ,5 June, 2017,., , +,^ ,a, ,b, ,O'Leary, Rachel Rose (19 September 2017). ,""Ethereum's Byzantium Testnet Just Verified A Private Transaction"",. CoinDesk. ,Archived, from the original on 23 September 2017,. Retrieved ,24 September, 2017,., , +,^, ,Hertig, Alyssa (18 January 2017). ,""Where's Casper? Inside Ethereum's Race to Reinvent its Blockchain"",. CoinDesk. ,Archived, from the original on 30 May 2017,. Retrieved ,5 June, 2017,., , +,^, ,Hertig, Alyssa (n.d.). ,""How Will Ethereum Scale?"",. CoinDesk. ,Archived, from the original on 10 June 2017,. Retrieved ,5 June, 2017,., , +,^, ,Rizzo, Pete (19 September 2016). ,""Ethereum's Creator Proves Blockchain Scaling Vision is No Joke"",. CoinDesk. ,Archived, from the original on 6 June 2017,. Retrieved ,5 June, 2017,., , +,^ ,a, ,b, ,Vigna, Paul (16 May 2016). ,""Chiefless Company Rakes in More than $100 Million"",. ,Wall Street Journal,. ,Archived, from the original on 25 June 2017,. Retrieved ,14 May, 2017,., , +,^ ,a, ,b, ,Popper, Nathaniel (18 June 2016). ,""Hacker May Have Taken $50 Million From Cybercurrency Project"",. ,The New York Times,. ,Archived, from the original on 20 June 2017,. Retrieved ,14 May, 2017,., , +,^, ,Price, Rob (17 June 2016). ,""Digital Currency Ethereum is Cratering Amid Claims of a $50 Million Hack"",. ,Business Insider,. Business Insider. ,Archived, from the original on 11 June 2017,. Retrieved ,14 May, 2017,., , +,^, ,Peck, Morgan (19 July 2016). ,"","",Hard Fork"" Coming to Restore Ethereum Funds to Investors of Hacked DAO"",. ,IEEE Spectrum: Technology, Engineering, and Science News,. IEEE. ,Archived, from the original on 3 March 2017,. Retrieved ,14 May, 2017,., , +,^, ,""What is Ethereum? | The Ultimate Beginners' Guide – CoinCentral"",. ,coincentral.com,. ,Archived, from the original on 11 September 2017,. Retrieved ,11 September, 2017,., , +,^, ,Hertig, Alyssa (28 July 2016). ,""Ethereum's Two Ethereums Explained"",. CoinDesk. ,Archived, from the original on 24 May 2017,. Retrieved ,15 May, 2017,., , +,^, ,Redman, Jamie (14 October 2016). ,""Ethereum to Hard Fork Two More Times Following Recent Attacks"",. ,Bitcoin.com,. Bitcoin.com. ,Archived, from the original on 2 November 2016,. Retrieved ,22 November, 2016,., , +,^ ,a, ,b, ,c, ,d, ,Popper, Nathaniel (27 March 2016). ,""Ethereum, a Virtual Currency, Enables Transactions That Rival Bitcoin's"",. ,New York Times,. ,Archived, from the original on 24 July 2016,. Retrieved ,2 September, 2016,., , +,^, ,""What Is Ethereum?—Ethereum Homestead 0.1 documentation"",. ,ethdocs.org,. ,Archived, from the original on 27 April 2017., , +,^, ,Dannen, Chris (2017). ""The EVM"". ,Introducing Ethereum and Solidity: Foundations of Cryptocurrency and Blockchain Programming for Beginners,. Apress. pp. 47–67. ,ISBN, ,9781484225356,., , +,^, ,Ethereum Yellow Paper, ,Archived, 18 February 2015 at the ,Wayback Machine,. by Gavin Wood, +,^, ,Triantafyllidis, Nikolaos Petros (19 February 2016). ""The Ethereum Project: Ethereum History"". Developing an Ethereum Blockchain Application (Report). University of Amsterdam. p. 20., , +,^, ,Dannen, Chris (27 March 2017). ,""Ethereum Devs Publish Roadmap for EVM Upgrade"",. CryptoNews. ,Archived, from the original on 25 December 2017., , +,^, ,""Ethereum Client Implementations - EntEthAlliance - Confluence"",. ,entethalliance.atlassian.net,., , +,^, ,""How Do Ethereum Smart Contracts Work?"",. ,CoinDesk,., , +,^, ,Rivlin, Brianne (14 November 2016). ,""Geth, Viper, and Wafr: New Ethereum Developments"",. ETHNews. ,Archived, from the original on 4 September 2017., , +,^, ,Piasecki, Piotr J. (2016). ,""Gaming Self-Contained Provably Fair Smart Contract Casinos"",. ,Ledger,. ,1,: 99–110. ,doi,:,10.5195/ledger.2016.29,. ,Archived, from the original on 24 December 2016., , +,^, ,Peck, M. (28 May 2016). ,""Ethereum's $150-Million Blockchain-Powered Fund Opens Just as Researchers Call For a Halt"",. ,IEEE Spectrum,. ,Institute of Electrical and Electronics Engineers,. ,Archived, from the original on 30 May 2016., , +,^, ,""Short Paper: Formal Verification of Smart Contracts"", ,(PDF),. ,microsoft.com/,. Microsoft. Archived from ,the original, ,(PDF), on 27 August 2016,. Retrieved ,25 August, 2016,., , +,^ ,a, ,b, ,c, ,Allison, Ian (25 January 2016). ,""How are banks actually going to use blockchains and smart contracts?"",. ,International Business Times,. ,Archived, from the original on 8 May 2016,. Retrieved ,4 May, 2016,., , +,^, ,Filiba, Jack. ,""Ethereum Breaks One Million Transactions in a Single Day"",. ,Archived, from the original on 22 December 2017., , +,^, ,Higgins, Stan. ,"",',Microraiden' Payment Channels Go Live on Ethereum Network"",. ,Archived, from the original on 22 December 2017., , +,^ ,a, ,b, ,Hertig, Alyssa (12 August 2017). ,""Ethereum + Lightning? Buterin and Poon Unveil 'Plasma' Scaling Plan"",. CoinDesk. ,Archived, from the original on 24 August 2017,. Retrieved ,23 August, 2017,., , +,^, ,Galeon, Dom. ,""Ethereum's Co-Founder Just Unveiled His Plan for the Future of Cryptocurrency"",. ,Archived, from the original on 9 November 2017., , +,^, ,Vitalik Buterin. ,""Merkling in Ethereum"",. ,Ethereum.org,., , +,^, ,Greenspan, Gideon (17 April 2016). ,""Why Many Smart Contract Use Cases Are Simply Impossible - CoinDesk"",. ,CoinDesk,. ,Archived, from the original on 7 August 2017., , +,^, ,""This Is Your Company on Blockchain"",. ,Bloomberg Businessweek,. ,Archived, from the original on 14 September 2016,. Retrieved ,14 September, 2016,., , +,^, ,Bordet, Julián (21 March 2016). ,""Decentralized Autonomous Organizations: Ethereum Sparks Up Googles of Tomorrow"",. ,The Cointelegraph,. ,Archived, from the original on 27 June 2016,. Retrieved ,21 July, 2016,., , +,^, ,""ICO Market Research: The Leading Blockchain Platforms Of 2017 - ICO Watch List Blog"",. ,ICO Watch List Blog,. 17 August 2017. ,Archived, from the original on 17 August 2017,. Retrieved ,20 August, 2017,., , +,^, ,""Luxembourg Stock Exchange introduces blockchain into reporting service"",. 2016-10-18,. Retrieved ,2016-11-04,., , +,^, ,Allison, Ian. ,""Ethereum-based Slock.it reveals first ever lock opened with money"",. ,International Business Times UK,. ,Archived, from the original on 2 April 2016., , +,^, ,Prince, Eliot. ,""MakerDAO Launches New Dai Stablecoin on the Ethereum Blockchain"",. ,Cryptoslate,., , +,^, ,Allison, Ian (12 September 2016). ,""Decentralized Capital issuing fiat-backed digital assets on the Ethereum blockchain"",. ,International Business Times,. ,Archived, from the original on 18 September 2016., , +,^, ,""Santander Confirms Fiat-backed Token Project on Ethereum Blockchain"",. ,CoinTelegraph,. ,Archived, from the original on 17 December 2016,. Retrieved ,15 January, 2017,., , +,^, ,Buntinx, JP (28 April 2016). ,""DigixDAO DGD Assets To Be Listed on OpenLedger"",. The Merkle. ,Archived, from the original on 2 June 2016,. Retrieved ,29 May, 2016,., , +,^, ,Allison, Ian (4 October 2015). ,""Imogen Heap shows how smart music contracts work using Ethereum"",. ,International Business Times,. ,Archived, from the original on 21 March 2016,. Retrieved ,24 March, 2016,., , +,^, ,""Ethereum Prediction Market Service Takes First Steps With Beta Launch - CoinDesk"",. ,CoinDesk,. 17 August 2016. ,Archived, from the original on 7 February 2017,. Retrieved ,6 February, 2017,., , +,^, ,""ICO Roundup 2017 by Cointelegraph: Cashing In On Blockchain Apps' Mainstream Year"",. ,CoinTelegraph,. ,Archived, from the original on 7 February 2017,. Retrieved ,6 February, 2017,., , +,^, ,""Stox Prediction Platform Closes ICO after One Day; Raises over $30 Million"",. CryptoCoinsNews. 2 August 2017. ,Archived, from the original on 29 September 2017,. Retrieved ,17 November, 2017,., , +,^, ,[1],[,dead link,], +,^, ,Rennie, Ellie (12 May 2016). ,""The radical DAO experiment"",. ,Swinburne News,. Swinburne University of Technology. ,Archived, from the original on 16 May 2016,. Retrieved ,12 May, 2016,. ,When it reaches the end of the funding phase on 28 May, it will begin contracting blockchain-based start-ups to create innovative technologies. The extraordinary thing about The DAO is that no single entity owns it, and it has no conventional management structure or board of directors., , +,^, ,Allison, Ian (30 April 2016). ,""Ethereum reinvents companies with launch of The DAO"",. ,International Business Times,. ,Archived, from the original on 1 May 2016,. Retrieved ,1 May, 2016,., , +,^, ,Weinglass, Simona (19 August 2015). ,""Backfeed wants to decentralize the Internet and help you earn what you deserve"",. Geektime.com. ,Archived, from the original on 14 March 2016,. Retrieved ,24 March, 2016,., , +,^, ,CFA, Adam Hayes, (3 February 2017). ,""This New Social Network is Powered by Ethereum Technology"",. ,Investopedia,. ,Archived, from the original on 6 February 2017,. Retrieved ,6 February, 2017,., , +,^, ,Allison, Ian (22 December 2015). ,""Game-changers FreeMyVunk and Digix allow video gamers to trade virtual assets for physical gold"",. ,International Business Times,. ,Archived, from the original on 17 March 2016,. Retrieved ,24 March, 2016,., , +,^, ,""Decentralized Options Exchange Etheropt Uses Automated Ethereum Smart Contract"",. ,Archived, from the original on 8 January 2017., , +,^, ,Rutkin, Aviva (2 March 2016). ,""Blockchain-based microgrid gives power to consumers in New York"",. ,New Scientist,. ,Archived, from the original on 22 March 2016,. Retrieved ,24 March, 2016,., , +,^, ,Mizrahi, Avi (1 December 2016). ,""Everex Helps Migrant Workers Send Remittance Back to Myanmar via Ethereum"",. ,Finance Magnates,. ,Archived, from the original on 20 December 2016,. Retrieved ,14 December, 2016,., , +,^, ,Bitcoinist. ,""Ethereum Dice Game Etheroll Announces Crowdfund Opening Feb. 13"",. ,bitcoinist.com,. ,Archived, from the original on 19 August 2017,. Retrieved ,18 August, 2017,., , +,^, ,Higgins, Stan. ,""Why a German Power Company is Using Ethereum to Test Blockchain Car Charging"",. ,CoinDesk,. ,Archived, from the original on 2 July 2017,. Retrieved ,2 May, 2017,., , +,^, ,EconoTimes. ,""ConsenSys uPort wins International Blockchain Summit - EconoTimes"",. ,EconoTimes,. ,Archived, from the original on 8 February 2017,. Retrieved ,6 February, 2017,., , +,^, ,Allison, Ian (23 September 2016). ,""ConsenSys uPort scoops first prize in International Blockchain Summit Demo Day"",. ,International Business Times UK,. ,Archived, from the original on 8 February 2017,. Retrieved ,6 February, 2017,., , +,^, ,Tkatchuk, Ralph (20 November 2017). ,""Can Blockchain Supercharge the Gig Economy?"",. ,Dataconomy,. ,Archived, from the original on 20 November 2017., , +,^, ,Gebron, Hunter (12 February 2017). ,""Ethlance and the Rise of the On-Demand Economy"",. ,Archived, from the original on 1 December 2017., , +,^, ,""CryptoKitties craze slows down transactions on Ethereum"",. 12 May 2017., , +,^, ,""Big Business Giants From Microsoft to J.P. Morgan Are Getting Behind Ethereum"",. ,Fortune,. ,Archived, from the original on 29 September 2017,. Retrieved ,8 November, 2017,., , +,^, ,""Hyperledger blockchain code almost comes together for IoT"",. Rethink Research. ,Archived, from the original on 16 August 2016,. Retrieved ,23 April, 2016,., , +,^, ,Allison, Ian (3 May 2016). ,""Deloitte to build Ethereum-based 'digital bank' with New York City's ConsenSys"",. ,International Business Times,. ,Archived, from the original on 6 May 2016., , +,^, ,Allison, Ian (20 January 2016). ,""R3 connects 11 banks to distributed ledger using Ethereum and Microsoft Azure"",. ,International Business Times,. ,Archived, from the original on 23 February 2016,. Retrieved ,23 February, 2016,., , +,^, ,""UK Government Awards £248k for Ethereum Prototype"",. ,CoinDesk,. ,Archived, from the original on 5 June 2016., , +,^, ,""Settlement using blockchain to Automate Foreign Exchange in a Regulated environment (SAFER)"",. ,Innovate UK,. ,Archived, from the original on 4 May 2016., , +,^, ,""Barclays, UBS, Credit Suisse Seek Ethereum Blockchain Solution For MiFID II Regulations"",. ,ETHNews.com,. Retrieved ,2017-12-29,., , +,^ ,a, ,b, ,Popper, Nathaniel (27 February 2017). ,""Business Giants to Announce Creation of a Computing System Based on Ethereum"",. ,New York Times,. ,Archived, from the original on 20 June 2017,. Retrieved ,5 June, 2017,., , +,^, ,Peck, Morgan (2 March 2017). ,""Corporate Titans Unite to Build an Enterprise Version of the Ethereum Blockchain"",. Institute of Electrical and Electronics Engineers (IEEE). ,Archived, from the original on 17 June 2017,. Retrieved ,5 June, 2017,., , +,^, ,""Enterprise Ethereum Alliance expands dramatically announcing 86 new members"", ,(PDF), (Press release). Enterprise Ethereum Alliance (EEA). 19 May 2017. ,Archived, ,(PDF), from the original on 7 June 2017,. Retrieved ,5 June, 2017,., , +,^, ,Shin, Laura (22 May 2017). ,""Ethereum Enterprise Alliance Adds 86 New Members Including DTCC, State Street And Infosys"",. Forbes. ,Archived, from the original on 22 May 2017,. Retrieved ,22 May, 2017,., , +,^, ,https://www.inc.com/brian-d-evans/the-enterprise-ethereum-alliance-just-got-a-whole-.html, +,^, ,""JP Morgan's Quorum blockchain powers new correspondent banking network "" Banking Technology"",. ,www.bankingtech.com,. ,Archived, from the original on 9 November 2017,. Retrieved ,8 November, 2017,., , +,^, ,Hacket, Robert. ,""Why J.P. Morgan Chase Is Building a Blockchain on Ethereum"",. ,Fortune,. ,Archived, from the original on 2 February 2017., , +,^, ,""Proving Ethereum for the Clearing Use Case"", ,(PDF),. ,Archived, ,(PDF), from the original on 10 October 2016., , +,^, ,Allison, Ian (7 December 2016). ,""Blockchain: RBS builds Ethereum-based distributed clearing house"",. ,IB Times,. ,Archived, from the original on 13 April 2017,. Retrieved ,8 May, 2017,., , +,^, ,""Expanse DAO Seeks to Develop Decentralised Ethereum"",., , +,^, ,""What Is Ethereum Fog?"",., , +,^, ,""EtherZero — a Revolutionary Ethereum Hard Fork"",., , +,^, ,""The New Classic? Protesters Are Already Plotting Alternative Ethereums"",., , +,^, ,""What is Etherite and how to help out"",., , +,^, ,""Ethereum Dark Official"",., , +,^, ,""Create your own CRYPTO-CURRENCY with Ethereum"",., , +,^, ,Kaminska, Izabella (1 June 2017). ,""It's not a ponzi, it's a smart ponzi"",. ,FT Alphaville,. ,Archived, from the original on 23 July 2017., , +,^, ,Bartoletti, Carta; et al. ,""Dissecting Ponzi schemes on Ethereum: identification, analysis, and impact"", ,(PDF),. Universita di Cagliari. ,Archived, ,(PDF), from the original on 17 August 2017,. Retrieved ,30 July, 2017,., ,CS1 maint: Explicit use of et al. (,link,), +, +, +,External links,[,edit,], +, +, +, +,Wikimedia Commons has media related to ,Ethereum,., +, +, +, +,Official website, +, +, +, +, +, +, +, +,v, +,t, +,e, +, +, +,Cryptocurrencies, +, +, +, +,SHA-256,-based, +, +, +, +,Bitcoin, +,Bitcoin Cash, +,Factom, +,Namecoin, +,NuBits, +,Peercoin, +,Titcoin, +, +, +, +, +, +,Scrypt,-based, +, +, +, +,Auroracoin, +,Dogecoin, +,Litecoin, +,PotCoin, +, +, +, +, +, +,Zerocoin,-based, +, +, +, +,Zcash, +,Zcoin, +,Zclassic, +,ZeroVert, +,Bitcoin Gold, +, +, +, +, +, +,CryptoNote,-based, +, +, +, +,Boolberry, +,Bytecoin, +,Monero, +, +, +, +, +, +,Ethash,-based, +, +, +, +,Ethereum, +,Ethereum Classic, +,KodakCoin, +,Ubiq, +, +, +, +, +, +,Other ,proof-of-work, +, +, +, +,Dash, +,Decred, +,DigiByte, +,IOTA, +,Myriadcoin, +,Primecoin, +,Sia, +,Zerocash, +, +, +, +, +, +,Non ,proof-of-work, +, +, +, +,Ardor, +,BitShares, +,BlackCoin, +,Burstcoin, +,Cardano, +,Counterparty, +,Enigma, +,EOS, +,FunFair, +,Gridcoin, +,Lisk, +,Melonport, +,NEM, +,NEO, +,Nxt, +,OmiseGO, +,Polkadot, +,Qtum, +,RChain, +,Ripple, +,Shadow, +,Simple Token, +,Stellar, +,Steem, +,Waves Platform, +, +, +, +, +, +,Consensus, mechanisms, +, +, +, +,Proof-of-authority, +,Proof-of-space, +,Proof-of-stake, +,Proof-of-work system, +, +, +, +, +, +,Technology, +, +, +, +,Blockchain, +,Fork, +,Cryptocurrency tumbler, +,Zerocoin, +,Lightning Network, +,Atomic swap, +, +, +, +, +, +,Related topics, +, +, +, +,Anonymous Internet banking, +,Bitcoin network, +,Complementary currency, +,Crypto-anarchism, +,Cryptocurrency exchange, +,Digital currency, +,Double-spending, +,Electronic money, +,Initial coin offering, +,Airdrop, +,Virtual currency, +,Crypto Valley, +, +, +, +, +, +, +, +, +, ,Category, +, ,Commons, +, ,List, +, +, +, +, +, +, + + +, +, +, +, +",Ethereum +" 11 January 2018, at 13:32."," +, +,Vitalik Buterin, +, +, +, +,Vitalik Buterin, 2016, +, +, +, +,Native name, +,Виталий Дмитриевич Бутерин, +, +, +,Born, +,(,1994-01-31,), January 31, 1994 ,(age 23), +,Kolomna,, ,Russia, +, +, +,Nationality, +,Russian-Canadian, +, +, +,Alma mater, +,University of Waterloo, +(Dropped Out), +, +, +,Known for, +,Ethereum,, ,Bitcoin Magazine, +, +, +,Awards, +,Thiel Fellowship, +, +, +,Website, +,http://vitalik.ca, +, +, +,Scientific career, +, +, +,Fields, +,Digital contracts,, ,Digital currencies,, ,Game Theory, +, +, +, +, +, +,Vitalik Buterin, (Born January 31, 1994. ,Russian,: ,Виталий Дмитриевич Бутерин,) is a ,Russian,-,Canadian, ,programmer, and writer primarily known as a co-founder of ,Ethereum, and as a co-founder of ,Bitcoin Magazine,.,[1],[2],[3], +, +, +, +,Contents, +, +, +,1, ,Personal life, +,2, ,Endeavors, +, +,2.1, ,Beginnings at ,Bitcoin Magazine, +,2.2, ,Ethereum, +,2.3, ,Open source software, +, +, +,3, ,Awards and recognition, +,4, ,See also, +,5, ,References, +,6, ,External links, +, +, +, +,Personal life,[,edit,], +,Buterin was born in ,Kolomna,, ,Moscow Oblast,, ,Russia, to Dmitry Buterin, a computer scientist, and Natalia Ameline (née Chistyakova).,[,citation needed,], He lived in the area until the age of six when his parents emigrated to ,Canada, in search of better employment opportunities. While in grade three of elementary school in Canada, Buterin was placed into a class for gifted children and started to understand that he was drawn to math, programming, and economics. He also had the ability to add three-digit numbers in his head at twice the speed of his peers.,[4], Buterin attended the ,Abelard School,, a private high school in Toronto, for four years,,[5], which he said, ""proved to be among the most interesting and productive years of my life; the closer connection between students and teachers [&] the level of depth at which the material was taught, made me want to learn, and to focus on learning as my primary goal"".,[5], Buterin has written that although he was ""never particularly inspired by the traditional education system"",,[5], when subjects were presented with ""dedication and focus on intellectual inquiry"", he said he:, +, +,""noticed my attitude and my results almost immediately and drastically change. Education is ultimately much more than simply memorizing individual facts, or even learning individual concepts. [What] matters most: learning how to think, learning how to reason and learning how to learn."",[5], +, +,Buterin learned about Bitcoin, from his father, at age 17.,[4], In 2012, he obtained a Bronze Medal in the International Olympiad in Informatics.,[6], In 2013 he visited developers in other countries who shared his enthusiasm for code. He returned to Toronto later that year and published a white paper proposing Ethereum.,[7], He attended the ,University of Waterloo, but dropped out in 2014, when he received the ,Thiel Fellowship, in the amount of $100,000,,[8], and went to work on Ethereum full-time.,[8], +,On June 25, 2017, Buterin was the subject of a ,death hoax, originating from ,4chan,.,[9], +,Endeavors,[,edit,], +, +,Pybitcointools, (2013–), +,Bitcoin Magazine, (2011–2014), +,Ethereum, (2013–), +, +,Beginnings at ,Bitcoin Magazine,[,edit,], +,Main article: ,Bitcoin Magazine, +,Buterin met a person on a bitcoin chat forum trying to start a bitcoin blog. The owner offered five bitcoin (about $3.50) to anyone who would write an article for him. Buterin wrote for the site until its website shut down soon thereafter due to Bitcoin's lack of mainstream attention.,[10], +,In September 2011, another person reached out to Buterin about a new publication called ,Bitcoin Magazine,, a position which Buterin would accept as the first co-founder, and contribute as a leading writer., +,In addition Buterin wrote about bitcoin-related topics for other publications, including ,Bitcoin Weekly,.,[1],[11], ,Bitcoin Magazine, in 2012 later began publishing a print edition and has been referred to as the first serious publication dedicated to cryptocurrencies.,[12], ,Bitcoin Magazine, was then purchased by ,BTC Media,, where Buterin continued to write until mid-2014., +,In addition, he held a position on the editorial board of ,Ledger,, a peer-reviewed scholarly journal that publishes full-length original research articles on the subjects of cryptocurrency and blockchain technology.,[13], +,Ethereum,[,edit,], +,Main article: ,Ethereum, +,He is a co-creator and inventor of Ethereum, described as a “decentralised mining network and software development platform rolled into one” that facilitates the creation of new cryptocurrencies and programs that share a single ,blockchain, (a cryptographic transaction ledger).,[14],[15],[16], +,Ethereum was first described in Buterin's white paper, in late 2013. Buterin argued that bitcoin needed a scripting language for application development. But when he failed to gain agreement, he proposed development of a new platform with a more general scripting language.,[17], About the Ethereum Project, Buterin has said: ""I am truly grateful to have the opportunity to work in such an interesting and interdisciplinary area of industry, where I have the chance to interact with cryptographers, mathematicians and economists prominent in their fields, to help build software and tools that already affect tens of thousands of people around the world, and to work on advanced problems in computer science, economics and philosophy every week."",[5], +,Open source software,[,edit,], +,Vitalik has contributed as a developer to other open source software projects.,[1], Some early examples are: Kryptokit, pybitcointools, multisig.info, and btckeysplit.,[18], He also contributed to DarkWallet,[19], by ,Cody Wilson,, ,Bitcoin, ,Python, libraries,,[20], and the ,cryptocurrency, marketplace site Egora.,[2], +,Awards and recognition,[,edit,], +, +,Thiel Fellowship, Award, 2014 ,[21], +,World Technology Award in the IT Software category, 2014 ,[22], +,Fortune, 40 under 40 list, 2016.,[23], +,Forbes, 30 under 30 list, 2018.,[24], +, +,See also,[,edit,], +, +,Joseph Lubin, – Ethereum co-founder, +, +,References,[,edit,], +, +, +,^ ,a, ,b, ,c, ,Finley, Klint (27 January 2014). ,""Out in the open: Teenage hacker transforms web into one giant Bitcoin network"",. ,Wired,. Retrieved ,7 February, 2014,., , +,^ ,a, ,b, ,Melendez, Steven (10 February 2014). ,""Could this 20-Year-Old kid make Bitcoin obsolete?"",. ,Fast Company,. Retrieved ,22 February, 2014,., , +,^, ,del Castillo, Michael (24 September 2014). ,""Dark wallet: A radical way to Bitcoin"",. ,The New Yorker,. Retrieved ,24 January, 2014,., , +,^ ,a, ,b, ,Peck, Morgen (2016-06-13). ,""The Uncanny Mind That Built Ethereum"",. ,Backchannel,. Retrieved ,2016-06-15,., , +,^ ,a, ,b, ,c, ,d, ,e, ,""Students"",. ,Abelard School,. Retrieved ,7 October, 2017,., , +,^, ,""Results | IOI 2012"",. ,www.ioi2012.org,. Retrieved ,2016-07-21,., , +,^, ,Braga, Matthew (13 Oct 2016). ,""Change Agents 2016: Vitalik Buterin, Ethereum"",. Canadian Business,. Retrieved ,6 June, 2017,., , +,^ ,a, ,b, ,Elliot, Josh (July 2, 2014). ,""Why a 20-year-old Toronto drop-out accepted $100,000 to stay out of school"",. ,CTV,. Retrieved ,25 April, 2016,., , +,^, ,""4chan's Vitalik Buterin Death Hoax Crashes Ethereum Price"",. ,Bitsonline,. 2017-06-25,. Retrieved ,2017-06-25,., , +,^, ,""Interview with Vitalik Buterin"",. Bitcorati, Inc. January 10, 2014,. Retrieved ,June 3,, 2017,., , +,^, ,""About us – Bitcoin Magazine"",. ,Bitcoin Magazine,. Coin Publishing Ltd,. Retrieved ,23 February, 2014,., , +,^, ,Vigna, Paul; Casey, Michael J. (2015). ""Community"". ,The Age of Cryptocurrency: How Bitcoin and the Blockchain Are Challenging .., ,Macmillan Publishers,. p. 88. ,ISBN, ,9781250065636,., , +,^, ,""Ledger"",. Retrieved ,4 February, 2016,., , +,^, ,Aron, Jacob (6 February 2014). ,""Bitcoin: How its core technology will change the world"",. ,New Scientist, (2955),. Retrieved ,22 February, 2014,., , +,^, ,Hajdarbegovic, Nermin (23 February 2014). ,""Ethereum launches 'Cryptocurrency 2.0' network"",. ,CoinDesk,. Retrieved ,22 February, 2014,., , +,^, ,""Vitalik Buterin on Ethereum and The Decentralized Future"",. ,Future Thinkers Podcast,. 2015-04-21,. Retrieved ,2016-05-13,., , +,^, ,""Facilitating Online Contractual Agreements With Vitalik Buterin"",. ,Eyerys.com,. 2017-06-29,. Retrieved ,2017-06-30,., , +,^, ,Southurst, Jon (7 January 2014). ,""Roger Ver and Erik Voorhees Back Bitcoin Wallet KryptoKit"",. ,CoinDesk,. Retrieved ,25 April, 2016,., , +,^, ,Kelly, Brian (2015). ""Smart Money, set it and forget it"". ,The Bitcoin Big Bang: How Alternative Currencies Are About to Change the World,. ,Wiley Publishing,. p. 156. ,ISBN, ,978-1118963661,., , +,^, ,Antonopoulos, Andreas M. (December 20, 2014). ""#4. Keys, Addresses, and Wallets"". ,Mastering Bitcoin: Unlocking Digital Cryptocurrencies,. ,O'Reilly Media,. p. 82. ,ISBN, ,978-1449374044,., , +,^, ,Finley, Klint (5 June 2014). ,""$100k Peter Thiel Fellowship Awarded to Ethereum's Vitalik Buterin"",. ,CoinDesk,. Retrieved ,11 August, 2014,., , +,^, ,The 2014 World Technology Award Winner, +,^, ,40 under 40: Vitalik Buterin, 22,, ,Fortune,, September 2016., +,^, ,Forbes 30 under 30,, ,Forbes,, November 2017., +, +, +,External links,[,edit,], +, +,Decentralizing Everything with Ethereum's Vitalik Buterin | Disrupt SF 2017, (YouTube), +, + + +, +, +, +, +",Vitalik Buterin +" 20 November 2017, at 16:38."," +, +, +, +A timeline chart of how ,Linux distributions, forked., +, +, +,In ,software engineering,, a ,project fork, happens when developers take a copy of ,source code, from one ,software package, and start independent development on it, creating a distinct and separate piece of software. The term often implies not merely a ,development branch,, but also a split in the developer community, a form of ,schism,.,[1], +,Free and open-source software, is that which, by definition, may be forked from the original development team without prior permission, without violating ,copyright, law. However, licensed forks of proprietary software (,e.g., ,Unix,) also happen., +, +, +, +,Contents, +, +, +,1, ,Etymology, +,2, ,Forking of free and open source software, +,3, ,Forking proprietary software, +,4, ,See also, +,5, ,References, +,6, ,External links, +, +, +, +,Etymology,[,edit,], +,The word fork stems from the Latin word furca, meaning a ""fork or similarly shaped instrument."",[2], ""Fork"" in the meaning of ""to divide in branches, go separate ways"" has been used as early as the 14th century.,[3], In the software environment, the word evokes the ,fork, system call, which causes a running process to split itself into two (almost) identical copies that (typically) diverge to perform different tasks.,[4], +,In the context of software development, ""fork"" was used in the sense of creating a revision control "",branch,"" by ,Eric Allman, as early as 1980, in the context of ,SCCS,:,[5], +, +,Creating a branch ""forks off"" a version of the program., +, +,The term was in use on ,Usenet, by 1983 for the process of creating a subgroup to move topics of discussion to.,[6], +,""Fork"" is not known to have been used in the sense of a community schism during the origins of Lucid Emacs (now ,XEmacs,) (1991) or the ,BSDs, (1993–1994); ,Russ Nelson, used the term ""shattering"" for this sort of fork in 1993, attributing it to ,John Gilmore,.,[7], However, ""fork"" was in use in the present sense by 1995 to describe the XEmacs split,,[8], and was an understood usage in the ,GNU, Project by 1996.,[9], +,Forking of free and open source software,[,edit,], +,Free and open source software may be legally forked without prior approval of those currently developing, managing, or distributing the software per both ,The Free Software Definition, and ,The Open Source Definition,:,[10], +, +,The freedom to distribute copies of your modified versions to others (freedom 3). By doing this, you can give the whole community a chance to benefit from your changes. Access to the source code is a precondition for this., +,— ,The Free Software Definition,[11], +, +, +,3. Derived Works: The license must allow modifications and derived works, and must allow them to be distributed under the same terms as the license of the original software., +,— ,The Open Source Definition,[12], +, +,In free software, forks often result from a schism over different goals or personality clashes. In a fork, both parties assume nearly identical code bases, but typically only the larger group, or whoever controls the Web site, will retain the full original name and the associated user community. Thus, there is a reputation penalty associated with forking.,[10], The relationship between the different teams can be cordial or very bitter., +,Eric S. Raymond,, in his essay ,Homesteading the Noosphere,,,[13], stated that ""The most important characteristic of a fork is that it spawns competing projects that cannot later exchange code, splitting the potential developer community"". He notes in the ,Jargon File,:,[14], +, +,Forking is considered a Bad Thing—not merely because it implies a lot of wasted effort in the future, but because forks tend to be accompanied by a great deal of strife and acrimony between the successor groups over issues of legitimacy, succession, and design direction. There is serious social pressure against forking. As a result, major forks (such as the ,Gnu-Emacs,/,XEmacs, split, the fissioning of the ,386BSD, group into three daughter projects, and the short-lived GCC/EGCS split) are rare enough that they are remembered individually in hacker folklore., +, +,David A. Wheeler, notes,[10], four possible outcomes of a fork, with examples:, +, +,The death of the fork. This is by far the most common case. It is easy to declare a fork, but considerable effort to continue independent development and support., +,A re-merging of the fork (,e.g.,, ,egcs, becoming ""blessed"" as the new version of ,gcc,.), +,The death of the original (,e.g., the ,X.Org Server, succeeding and ,XFree86, dying.), +,Successful branching, typically with differentiation (,e.g.,, ,OpenBSD, and ,NetBSD,.), +, +,Distributed revision control, (DVCS) tools have popularised a less emotive use of the term ""fork"", blurring the distinction with ""branch"".,[15], With a DVCS such as ,Mercurial, or ,Git,, the normal way to contribute to a project, is to first create a personal branch of the repository, independent of the main repository, and later seek to have your changes integrated with it. Sites such as ,GitHub,, ,Bitbucket, and ,Launchpad, provide free DVCS hosting expressly supporting independent branches, such that the technical, social and financial barriers to forking a source code repository are massively reduced, and GitHub uses ""fork"" as its term for this method of contribution to a project., +,Forks often restart version numbering from 0.1 or 1.0 even if the original software was at version 3.0, 4.0, or 5.0. An exception is when the forked software is designed to be a drop-in replacement for the original project, ,e.g., ,MariaDB, for ,MySQL,[16], or ,LibreOffice, for ,OpenOffice.org,., +,Forking proprietary software,[,edit,], +,In ,proprietary software,, the copyright is usually held by the employing entity, not by the individual software developers. Proprietary code is thus more commonly forked when the owner needs to develop two or more versions, such as a ,windowed, version and a ,command line, version, or versions for differing operating systems, such as a ,word processor, for ,IBM PC, compatible machines and ,Macintosh, computers. Generally, such internal forks will concentrate on having the same look, feel, data format, and behavior between platforms so that a user familiar with one can also be productive or share documents generated on the other. This is almost always an economic decision to generate a greater ,market share, and thus pay back the associated extra development costs created by the fork., +,A notable proprietary fork not of this kind is the many varieties of proprietary ,Unix,—almost all derived from AT&T Unix under license and all called ""Unix"", but increasingly mutually incompatible.,[17], ,See, ,UNIX wars,., +,The ,BSD licenses, permit forks to become proprietary software, and some say,[,who?,], that commercial incentives thus make proprietisation almost inevitable. Examples include ,macOS, (based on the proprietary ,NeXTSTEP, and the open source ,FreeBSD,), ,Cedega, and ,CrossOver, (proprietary forks of ,Wine,, though CrossOver tracks Wine and contributes considerably), EnterpriseDB (a fork of ,PostgreSQL,, adding Oracle compatibility features,[18],), Supported PostgreSQL with their proprietary ESM storage system,,[19], and Netezza's,[20], proprietary highly scalable derivative of PostgreSQL. Some of these vendors contribute back changes to the community project, while some keep their changes as their own competitive advantages., +,See also,[,edit,], +, +,List of software forks, +,Source port, +,Downstream (software development), +,Group decision-making, +,Modular programming, +, +,Modding, +, +, +,Custom software, +,Personalization, +,Team effectiveness, +, +,Duplicate code, +, +, +,ROM Hacking, +, +,References,[,edit,], +, +, +,^, ,""Schism"", with its connotations, is a common usage, ,e.g., ,""the Lemacs/FSFmacs schism"", (,Jamie Zawinski,, 2000), ,""Behind the KOffice split"", (Joe Brockmeier, ,Linux Weekly News,, 2010-12-14), ,""Copyright assignment - once bitten, twice shy"", (Richard Hillesley, ,H-Online,, 2010-08-06), ,""Forking is a feature"", (,Anil Dash,, 2010-09-10), ,""The Great Software Schism"", (,Glyn Moody,, ,Linux Journal,, 2006-09-28), ,""To Fork Or Not To Fork: Lessons From Ubuntu and Debian"", (,Benjamin Mako Hill,, 2005)., +,^, ,See, e.g., ,""furca"" from Etymological Dictionary of Latin by Michiel de Vaan (Ph.D. 2002), +,^, ,Entry 'fork' in Online Etymology Dictionary, +,^, ,""The term fork is derived from the POSIX standard for operating systems: the system call used so that a process generates a copy of itself is called fork()."" ,Robles, Gregorio; González-Barahona, Jesús M. (2012). ,A Comprehensive Study of Software Forks: Dates, Reasons and Outcomes, ,(PDF),. OSS 2012 The Eighth International Conference on Open Source Systems,. Retrieved ,20 Oct, 2012,., , +,^, ,Allman, Eric. ,""An Introduction to the Source Code Control System."", Project Ingres, University of California at Berkeley, 1980., +,^, ,Can somebody fork off a ""net.philosophy""?, (,John Gilmore,, net.misc, 18 January 1983), +,^, ,Shattering — good or bad?, (Russell Nelson, gnu.misc.discuss, 1 October 1993), +,^, ,Re: Hey Franz: 32K Windows SUCK!!!!!, (Bill Dubuque, cu.cs.macl.info, 21 September 1995), +,^, ,Lignux?, (Marcus G. Daniels, gnu.misc.discuss, 7 June 1996), +,^ ,a, ,b, ,c, ,Why Open Source Software / Free Software (OSS/FS, FLOSS, or FOSS)? Look at the Numbers!: Forking, (,David A. Wheeler,), +,^, ,Stallman, Richard. ,""The Free Software Definition"",. Free Software Foundation,. Retrieved ,2013-10-15,., , +,^, ,""The Open Source Definition"",. The Open Source Initiative,. Retrieved ,15 October, 2013,., , +,^, ,Raymond, Eric S., (15 August 2002). ,""Promiscuous Theory, Puritan Practice"",., , +,^, ,Forked, (,Jargon File,), first added to ,v4.2.2,, 20 Aug 2000), +,^, ,e.g., ,Willis, Nathan (15 January 2015). ,""An ""open governance"" fork of Node.js"",. ,LWN.net,. Retrieved ,15 January, 2015,. ,Forks are a natural part of the open development model—so much so that GitHub famously plasters a ""fork your own copy"" button on almost every page., , See also ,Nyman, Linus (2015). ,""Understanding Code Forking in Open Source Software"", (Ph.D.). Hanken School of Economics. p. 57. ,Where practitioners have previously had rather narrow definitions of a fork, [...] the term now appears to be used much more broadly. Actions that would traditionally have been called a branch, a new distribution, code fragmentation, a pseudo-fork, etc. may all now be called forks by some developers. This appears to be in no insignificant part due to the broad definition and use of the term fork by GitHub., , +,^, ,Forked a project, where do my version numbers start?, +,^, ,Fear of forking, - An essay about forking in ,free software, projects, by Rick Moen, +,^, ,EnterpriseDB, +,^, ,Fujitsu Supported PostgreSQL, ,Archived, 20 August 2006 at the ,Wayback Machine,., +,^, ,Netezza, +, +, +,External links,[,edit,], +, +,Right to Fork, at ,Meatball Wiki, +,A PhD examining forking: ,(Nyman, 2015), ""Understanding Code Forking in Open Source Software - An examination of code forking, its effect on open source software, and how it is viewed and practiced by developers"", +, +, +, +, +, +, +, +,v, +,t, +,e, +, +, +,Free and open-source software, +, +, +, +,General, +, +, +, +,Alternative terms for free software, +,Comparison of open-source and closed-source software, +,Comparison of source code hosting facilities, +,Free software, +,Free software project directories, +,Gratis versus libre, +,Long-term support, +,Open-source software, +,Open-source software development, +,Outline, +, +, +, +, +, +,Software, +packages, +, +, +, +,Audio, +,Bioinformatics, +,Codecs, +,Collaboration, +,Configuration management, +,Device drivers, +, +,Graphics, +,Wireless, +, +, +,Geophysics, +,Health, +,Mathematics, +,Operating systems, +,Programming languages, +,Routing, +,Statistics, +,Television, +,Video games, +,Web applications, +, +,Content management systems, +,E-commerce, +, +, +,Word processors, +,Android apps, +,iOS apps, +,Commercial, +,Trademarked, +,Formerly proprietary, +, +, +, +, +, +,Community, +, +, +, +,Free software movement, +,History, +,Open-source software movement, +,Organizations, +,Events, +, +, +, +, +, +,Licenses, +, +, +, +,AFL, +,Apache, +,APSL, +,Artistic, +,Beerware, +,Boost, +,BSD, +,CC0, +,CDDL, +,EPL, +,GNU GPL, +,GNU LGPL, +,ISC, +,MIT, +,MPL, +,Ms-PL/RL, +,Python, +,Python Software Foundation, +,Sleepycat, +,Unlicense, +,WTFPL, +,zlib, +, +, +, +, +, +,License types, +and standards, +, +, +, +,Comparison of free and open-source software licenses, +,Contributor License Agreement, +,Copyfree, +,Copyleft, +,Debian Free Software Guidelines, +,Definition of Free Cultural Works, +,Free license, +,The Free Software Definition, +,The Open Source Definition, +,Open-source license, +,Permissive software licence, +,Public domain, +,Viral license, +, +, +, +, +, +,Challenges, +, +, +, +,Binary blob, +,Digital rights management, +,Hardware restrictions, +,License proliferation, +,Mozilla software rebranding, +,Proprietary software, +,SCO/Linux controversies, +,Secure boot, +,Software patents, +,Software security, +,Trusted Computing, +, +, +, +, +, +,Related topics, +, +, +, +,The Cathedral and the Bazaar, +,Forking, +,Microsoft Open Specification Promise, +,Revolution OS, +, +, +, +, +, +, +, +, +, ,Book, +, ,Category, +, ,Commons, +, ,Portal, +, +, +, +, +, +, + + +, +, +, +, +",Fork (software development) +" 31 December 2017, at 19:16."," +,pandas, +, +, +, +, +,Original author(s), +,Wes McKinney, +, +, +,Developer(s), +,Community, +, +, +, +, +, +,Stable release, +, +,0.22.0,[1], / 29 December 2017,; 19 days ago, (,2017-12-29,), +, +, +, +, +, +, +,Repository, +, +, +, +,https://github.com/pandas-dev/pandas, +, +, +, +, +, +,Written in, +,Python, +, +, +,Operating system, +,Cross-platform, +, +, +,Type, +,Technical computing, +, +, +,License, +,BSD-new license, +, +, +,Website, +,pandas,.pydata,.org, +, +, +,In ,computer programming,, ,pandas, is a ,software library, written for the ,Python programming language, for data manipulation and analysis. In particular, it offers data structures and operations for manipulating numerical tables and ,time series,. It is ,free software, released under the ,three-clause BSD license,.,[2], The name is derived from the term "",panel data,"", an ,econometrics, term for multidimensional, structured data sets,[,citation needed,],., +, +, +, +,Contents, +, +, +,1, ,Library features, +,2, ,History, +,3, ,See also, +,4, ,References, +,5, ,External links, +, +, +, +,Library features,[,edit,], +, +,DataFrame object for data manipulation with integrated indexing., +,Tools for reading and writing data between in-memory data structures and different file formats., +,Data alignment and integrated handling of missing data., +,Reshaping and pivoting of data sets., +,Label-based slicing, fancy indexing, and subsetting of large data sets., +,Data structure column insertion and deletion., +,Group by engine allowing split-apply-combine operations on data sets., +,Data set merging and joining., +,Hierarchical axis indexing to work with high-dimensional data in a lower-dimensional data structure., +,Time series-functionality: Date range generation,[3], and frequency conversion, moving window statistics, moving window linear regressions, date shifting and lagging., +, +,The library is highly optimized for performance, with critical code paths written in ,Cython, or ,C,.,[4], +,History,[,edit,], +,Developer ,Wes McKinney, started working on pandas in 2008 while at ,AQR Capital Management, out of the need for a high performance, flexible tool to perform quantitative analysis on financial data. Before leaving AQR he was able to convince management to allow him to open source the library., +,Another AQR employee, Chang She, joined the effort in 2012 as the second major contributor to the library., +,See also,[,edit,], +, +,matplotlib, +,NumPy, +,SciPy, +,R (programming language), +,Scikit-learn, +,statsmodels, +,List of numerical analysis software, +, +,References,[,edit,], +, +, +, +,^, ,""Release Notes – pandas 0.22.0 documentation"",. ,pandas,. 29 December 2017,. Retrieved ,31 December, 2017,., , +,^, ,""License – Package overview – pandas 0.21.1 documentation"",. ,pandas,. 12 December 2017,. Retrieved ,13 December, 2017,., , +,^, ,""pandas.date_range – pandas 0.21.1 documentation"",. ,pandas,. 12 December 2017,. Retrieved ,13 December, 2017,., , +,^, ,""Python Data Analysis Library – pandas: Python Data Analysis Library"",. ,pandas,. Retrieved ,13 November, 2017,., , +, +, +, +,External links,[,edit,], +, +,Official website, +, +, +, +, +, +, +, +,v, +,t, +,e, +, +, +,Scientific software in ,Python, +, +, +, +, +, +, +,NumPy, +,SciPy, +,matplotlib, +,pandas, +,scikit-learn, +,scikit-image, +,statsmodels, +,MayaVi, +,more, +, +, +, +, +, +, +, +, +, +,This ,software, article is a ,stub,. You can help Wikipedia by ,expanding it,., +, +, +,v, +,t, +,e, +, +, +, +, +, + + +, +, +, +, +",pandas (software) +" 18 October 2017, at 17:23.","In ,software engineering,, the ,active record pattern, is an ,architectural pattern, found in software that stores in-memory object data in ,relational databases,. It was named by ,Martin Fowler, in his 2003 book ,Patterns of Enterprise Application Architecture,.,[1], The interface of an object conforming to this pattern would include functions such as Insert, Update, and Delete, plus properties that correspond more or less directly to the columns in the underlying database table., +,The active record pattern is an approach to accessing data in a ,database,. A ,database table, or ,view, is wrapped into a ,class,. Thus, an ,object, instance is tied to a single row in the table. After creation of an object, a new row is added to the table upon save. Any object loaded gets its information from the database. When an object is updated, the corresponding row in the table is also updated. The wrapper class implements ,accessor, ,methods, or properties for each column in the table or view., +,This pattern is commonly used by object persistence tools and in ,object-relational mapping, (ORM). Typically, ,foreign key, relationships will be exposed as an object instance of the appropriate type via a property., +, +, +, +,Contents, +, +, +,1, ,Implementations, +, +,1.1, ,ColdFusion, +,1.2, ,PHP, +,1.3, ,Ruby, +,1.4, ,Python, +,1.5, ,Java, +,1.6, ,Dart, +,1.7, ,Other languages, +, +, +,2, ,Criticism, +, +,2.1, ,Testability, +,2.2, ,Single responsibility principle and separation of concerns, +, +, +,3, ,See also, +,4, ,References, +,5, ,External links, +, +, +, +,Implementations,[,edit,], +,Implementations of the concept can be found in various ,frameworks, for many programming environments. For example, if in a database there is a table ,parts, with columns ,name, (string type) and ,price, (number type), and the Active Record pattern is implemented in the class ,Part,, the pseudo-code, +, +part = new Part() +part.name = ""Sample part"" +part.price = 123.45 +part.save() +, +,will create a new row in the ,parts, table with the given values, and is roughly equivalent to the ,SQL, command, +, +, +,INSERT, ,INTO, ,parts, ,(,name,,, ,price,), ,VALUES, ,(,'Sample part',,, ,123,.,45,);, +, +,Conversely, the class can be used to query the database:, +, +b = Part.find_first(""name"", ""gearbox"") +, +,This will find a new ,Part, object based on the first matching row from the ,parts, table whose ,name, column has the value ""gearbox"". The SQL command used might be similar to the following, depending on the SQL implementation details of the database:, +, +, +,SELECT, ,*, ,FROM, ,parts, ,WHERE, ,name, ,=, ,'gearbox', ,LIMIT, ,1,;, ,-- MySQL or PostgreSQL, +, +,ColdFusion,[,edit,], +,ColdFusion, has an open source implementation of the active record pattern., +,The ,ColdFusion on Wheels, framework has an implementation of the active record pattern. It is open source and has the added advantage of requiring no complex configuration., +,PHP,[,edit,], +,PHP ActiveRecord is one ,open-source, library designed to fulfill the active record pattern.,[2], +,Several open-source ,PHP, frameworks also bundle their own ,ORM, implementing the active record pattern. Most implementations support relationships, behaviors, ,validation,, ,serialization, and support for multiple data sources., +, +,Maghead,, a high performance database framework written in pure PHP, contains a class/query method generator to boost the performance. It mixes the active record pattern with repository pattern., +,Boiler,, an ,MVC, framework for PHP, contains a set of tools for auto-generation of active record models.,[3], The project, designed for data-centered projects, aims to automate as much of the development process as possible,,[4], using ,Apache Ant,. Although a new addition to Open Source market,,[5], the project is already in use in many live applications, both commercially and open. The framework currently only supports ,MySQL, though the developers have reported some commercial work in Postgres., +,Cygnite PHP Framework,'s default database layer implements Active Record pattern which closely resemble with ,Ruby on Rails,.,[6], +,Laravel, contains an ORM called 'Eloquent' which implements the active record pattern, closely resembling that of ,Ruby on Rails, ,[7], +,CakePHP,'s ORM implements the active record pattern,,[8], but as of version 2.x queries return arrays of data, with levels of ,related data, as required. Version 3.0 uses objects and offers a hybrid implementation of ActiveRecord and Datamapper patterns., +,Lithium,'s ORM implements active record., +,Symfony,'s default database layer and ORM "",Doctrine,"" does not implement active record but rather a ,data mapper, approach., +,CodeIgniter, has a query builder it calls ""ActiveRecord"", but which does not implement the Active Record pattern. Instead, it implements what the user guide refers to as a modified version of the pattern. The Active Record functionality in CodeIgniter can be achieved by using either CodeIgniter DataMapper library or CodeIgniter Gas ORM library., +,Yii,'s ORM also implements the active record pattern.,[9], +,Propel, also implements the active record pattern.,[10], +,Paris is A lightweight Active Record implementation for PHP5, built on top of Idiorm.,[11], +, +,Ruby,[,edit,], +,The ,Ruby, library ActiveRecord implements ORM. It creates a ,persistable, domain model from business objects and database tables, where logic and data are presented as a unified package. It largely simplifies object-record mapping by assuming homogeneous identification method (i.e. ,Surrogate key,) by virtue of ,convention over configuration,. ActiveRecord adds ,inheritance, and ,associations, to the pattern above, solving two substantial limitations of that pattern. A set of macros acts as a domain language for the latter, and the ,Single Table Inheritance, pattern is integrated for the former; thus, ActiveRecord increases the functionality of the active record pattern approach to database interaction. ActiveRecord is the default ‘model’ component of the ,model-view-controller, web-application framework ,Ruby on Rails,, and is also a stand-alone ORM package for other Ruby applications. In both forms, it was conceived of by ,David Heinemeier Hansson,, and has been improved upon by a number of contributors.,[12], +,Other ORMs have been released since ActiveRecord first appeared. For example, ,DataMapper, and ,Sequel,. These ORMs include improvements over the original ActiveRecord framework.,[,neutrality, is ,disputed,], As a response to their release and adoption by the Rails community, Ruby on Rails v3.0 became independent of an ORM system, so that Rails users can instead use DataMapper or Sequel as their ORM., +,Python,[,edit,], +,Django,, one of ,Python,'s many web frameworks, uses the Active Record pattern for its ORM.,[13], +,Java,[,edit,], +,The ,Java language, implements the Active Record pattern via the ,ActiveJDBC, library. ActiveJDBC is an implementation of Active Record design pattern inspired by ,Ruby on Rails, ActiveRecord. ActiveJDBC is lightweight, fast, small and does not require any configuration., +,ActiveJPA, and ,jOOQ (for Java Object Oriented Querying), implements the Active record pattern, combining active records with ,source code generation, and a querying DSL similar to ,SQL, allowing for retrieving active records using complex SQL statements., +,The ,Play framework, is a Java web framework which implements the Active Record pattern, using ideas from ,Ruby on Rails,., +,JActiveRecord, is yet another library providing easy ,ORM, mapping for Java, inspired by ,Ruby on Rails, ActiveRecord but more focused on Java's type-safety., +,Dart,[,edit,], +,The ,Dart, language implements the Active Record pattern via the ,Dartabase Migration, and ,Dartabase Model, packages, +,Dartabase Migration, Serverside Database Object Models for simple data manipulation currently supporting MySQL/PGSQL inspired by Ruby on Rails Migration, +,Dartabase Model, Serverside Database migration for simple version controlled database structure manipulation currently supporting MySQL/PGSQL inspired by Ruby on Rails Model now console and GUI (build in Polymer 1.0), +,Other languages,[,edit,], +,There are several open source implementations of the Active Record pattern in other languages, including ,JavaScript, (e.g., ,ActiveJS,'s Active Record,[14],), ,Perl, (,DBIx::Class,), ,ActionScript,, ,Haxe, (SPOD,[15],), ,C#,,,[16], ,Objective-C,[17], and ,Scala,.,[18], +,Criticism,[,edit,], +,Testability,[,edit,], +,Due to the coupling of database interaction and application logic when using the active record pattern, unit testing an active record object without a database becomes difficult,[,citation needed,],. The negative effects on testability in the active record pattern can be minimized by using ,mocking, or ,dependency injection, frameworks to substitute the real data tier with a simulated one,[,citation needed,],., +,Single responsibility principle and separation of concerns,[,edit,], +,Another critique of the active record pattern is that, also due to the strong coupling of database interaction and application logic, an active record object does not follow the ,single responsibility principle, and ,separation of concerns, as opposed to ,multitier architecture, which properly addresses these practices. Because of this, the active record pattern is best and most often employed in simple applications that are all forms-over-data with ,CRUD, functionality, or only as one part of an architecture. Typically that part is data access and why several ORMs implement the active record pattern., +,See also,[,edit,], +, +,Business object, +,CRUD, +,Data mapper pattern, +,Object-relational mapping, +, +,References,[,edit,], +, +, +,^, ,Fowler, Martin (2003). ,Patterns of enterprise application architecture,. Addison-Wesley. ,ISBN, ,978-0-321-12742-6,., , +,^, ,""PHP ActiveRecord"",., , +,^, ,""Boiler Documentation: Models"",., , +,^, ,""YouTube demonstration of automation tools"",., , +,^, ,""Open Source Code, hosted on Github"",., , +,^, ,""Cygnite Framework Documentation: Active Record"",., , +,^, ,""Laravel Documentation: Eloquent ORM"",., , +,^, ,""CakePHP (most popular PHP framework)"",. ,Stanford University Wiki,., , +,^, ,""The Definitive Guide to Yii: Active Record"",., , +,^, ,""Propel: Active Record Reference"",., , +,^, ,""Github: j4mie/paris"",., , +,^, ,""Ruby Active Record"",. Retrieved ,2013-04-12,., , +,^, ,https://docs.djangoproject.com/en/1.11/misc/design-philosophies/#models,. Retrieved ,2017-06-28,., , ,Missing or empty ,|title=, (,help,), +,^, ,""ActiveJS Active Record"",. Retrieved ,2011-07-28,., , +,^, ,""SPOD Macros"",. Retrieved ,2013-01-09,., , +,^, ,""Castle ActiveRecord"",. Retrieved ,14 January, 2014,., , +,^, ,""Objective Record"",. Retrieved ,14 January, 2013,., , +,^, ,""Scala Active Record"",. Retrieved ,4 December, 2013,., , +, +, +,External links,[,edit,], +, +,Ruby implementation, +,DBIx::Class Perl Implementation, +,PHP implementation, +,.NET implementation, +,AIR Active Record project home, +,troba Active record extension, +, +, +, +, +, +, +, +,v, +,t, +,e, +, +, +,Software design patterns, +, +, +, +,Gang of Four, +patterns, +, +, +, +, +,Creational, +, +, +, +,Abstract factory, +,Builder, +,Factory method, +,Prototype, +,Singleton, +, +, +, +, +, +,Structural, +, +, +, +,Adapter, +,Bridge, +,Composite, +,Decorator, +,Facade, +,Flyweight, +,Proxy, +, +, +, +, +, +,Behavioral, +, +, +, +,Chain of responsibility, +,Command, +,Interpreter, +,Iterator, +,Mediator, +,Memento, +,Observer, +,State, +,Strategy, +,Template method, +,Visitor, +, +, +, +, +, +, +, +, +,Concurrency, +patterns, +, +, +, +,Active object, +,Balking, +,Binding properties, +,Double-checked locking, +,Event-based asynchronous, +,Guarded suspension, +,Join, +,Lock, +,Monitor, +,Proactor, +,Reactor, +,Read write lock, +,Scheduler, +,Thread pool, +,Thread-local storage, +, +, +, +, +, +,Architectural, +patterns, +, +, +, +,Front controller, +,Interceptor, +,MVC, +,ADR, +,ECS, +,n,-tier, +,Specification, +,Publish–subscribe, +,Naked objects, +,Service locator, +,Active record, +,Identity map, +,Data access object, +,Data transfer object, +,Inversion of control, +,Model 2, +, +, +, +, +, +,Other, +patterns, +, +, +, +,Blackboard, +,Business delegate, +,Composite entity, +,Dependency injection, +,Intercepting filter, +,Lazy loading, +,Mock object, +,Null object, +,Object pool, +,Servant, +,Twin, +,Type tunnel, +,Method chaining, +, +, +, +, +, +,Books, +, +, +, +,Design Patterns, +,Enterprise Integration Patterns, +, +, +, +, +, +,People, +, +, +, +,Christopher Alexander, +,Erich Gamma, +,Ralph Johnson, +,John Vlissides, +,Grady Booch, +,Kent Beck, +,Ward Cunningham, +,Martin Fowler, +,Robert Martin, +,Jim Coplien, +,Douglas Schmidt, +,Linda Rising, +, +, +, +, +, +,Communities, +, +, +, +,The Hillside Group, +,The Portland Pattern Repository, +, +, +, +, +, +, + + +, +, +, +, +",Active record pattern +" 10 October 2017, at 13:13."," +, +, +, +, +, +,This article ,needs additional citations for ,verification,. ,Please help ,improve this article, by ,adding citations to reliable sources,. Unsourced material may be challenged and removed., ,(September 2016), ,(,Learn how and when to remove this template message,), +, +, +, +,In ,software engineering,, ,don't repeat yourself, (,DRY,) is a ,principle, of ,software development, aimed at reducing repetition of software patterns, replacing them with abstractions; and several copies of the same data, using ,data normalization, to avoid redundancy., +,The DRY principle is stated as ""Every piece of knowledge must have a single, unambiguous, authoritative representation within a system"". The principle has been formulated by ,Andy Hunt, and ,Dave Thomas, in their book ,The Pragmatic Programmer,. They apply it quite broadly to include "",database schemas,, ,test plans,, the ,build, system, even ,documentation,"".,[1], When the DRY principle is applied successfully, a modification of any single element of a system does not require a change in other logically unrelated elements. Additionally, elements that are logically related all change predictably and uniformly, and are thus kept in ,sync,. Besides using ,methods, and ,subroutines, in their code, Thomas and Hunt rely on ,code generators,, automatic build systems, and ,scripting languages, to observe the DRY principle across layers., +, +, +, +,Contents, +, +, +,1, ,DRY vs WET solutions, +,2, ,See also, +,3, ,References, +,4, ,External links, +, +, +, +,DRY vs WET solutions,[,edit,], +,Violations of DRY are typically referred to as WET solutions, which is commonly taken to stand for either ""write everything twice"", ""we enjoy typing"" or ""waste everyone's time"". WET solutions are common in multi-tiered architectures where a developer may be tasked with, for example, adding a comment field on a form in a web application. The text string ""comment"" might be repeated in the label, the HTML tag, in a read function name, a private variable, database DDL, queries, and so on. A DRY approach eliminates that redundancy by leveraging frameworks that reduce or eliminate all those edit tasks excepting the most important one, leaving the extensibility of adding new knowledge variables in one place.,[2],[3],[4], +,See also,[,edit,], +, +,Abstraction principle (programming), +,Code duplication, +,Code reuse, +,Database normalization, and ,Denormalization, +,Disk mirroring, +,Redundancy (engineering), +,Rule of three (computer programming), +,Separation of concerns, +,Single source of truth, (SSOT/SPOT), +,Structured programming, +, +,References,[,edit,], +, +, +, +,^, ,Dave Thomas, interviewed by Bill Venners (2003-10-10). ,""Orthogonality and the DRY Principle"",. Retrieved ,2006-12-01,., , +,^, ,Justin Lee (2006-03-08). ,""DRY is for losers"",. Retrieved ,2013-08-31,., , +,^, ,Alex Papadimoulis (2011-12-08). ,""The WET Cart"",. Retrieved ,2012-05-21,., , +,^, ,Kevin Greer (2016-02-05). ,""FOAM DRY + WET"",. Retrieved ,2016-03-09,., , +, +, +, +,External links,[,edit,], +, +,Orthogonality and the DRY Principle, +,Don't Repeat Yourself, at ,WikiWikiWeb, +,Once and Only Once, at WikiWikiWeb, +,97 Things Every Programmer Should Know (O'Reilly), +,The myth of over-normalization, (discussion of academic extremes vs. real-word database scenarios), +,Wilson G, Aruliah DA, Brown CT, Chue Hong NP, Davis M, Guy RT, et al. (2014). ,""Best Practices for Scientific Computing"",. ,PLoS Biol,. ,12, (1): e1001745. ,doi,:,10.1371/journal.pbio.1001745,. ,Don't Repeat Yourself (or Others), , +, + + +, +, +, +, +",Don't repeat yourself +" 1 November 2017, at 09:32."," +, +, +, +, +, +,This article ,needs additional citations for ,verification,. ,Please help ,improve this article, by ,adding citations to reliable sources,. Unsourced material may be challenged and removed., ,(January 2013), ,(,Learn how and when to remove this template message,), +, +, +, +,Convention over configuration, (also known as ,coding by convention,) is a software ,design paradigm, used by ,software frameworks, that attempt to decrease the number of decisions that a ,developer, using the framework is required to make without necessarily losing flexibility. The concept was introduced by ,David Heinemeier Hansson, to describe the philosophy of the ,Ruby on Rails, ,web framework,, but is related to earlier ideas like the concept of ""sensible ,defaults,"" and the ,principle of least astonishment, in ,user interface design,., +,The phrase essentially means a developer only needs to specify unconventional aspects of the application. For example, if there is a class Sales in the model, the corresponding table in the database is called ""sales"" by default. It is only if one deviates from this convention, such as the table ""product sales"", that one needs to write code regarding these names., +,When the convention implemented by the tool matches the desired behavior, it behaves as expected without having to write configuration files. Only when the desired behavior deviates from the implemented convention is explicit configuration required., +,Ruby on Rails' use of the phrase is particularly focused on its default project file and directory structure, which prevent developers from having to write ,XML, configuration files to specify which ,modules, the framework should load, which was common in many earlier frameworks., +,Disadvantages of the convention over configuration approach can occur due to conflicts with other software design principles, like the ,Zen of Python,'s ""explicit is better than implicit."" A ,software framework, based on convention over configuration often involves a ,domain-specific language, with a limited set of constructs or an ,inversion of control, in which the developer can only affect behavior using a limited set of ,hooks,, both of which can make implementing behaviors not easily expressed by the provided conventions more difficult than when using a ,software library, that does not try to decrease the number of decisions developers have to make or require inversion of control., +,Other methods of decreasing the number of decisions a developer needs to make include ,programming idioms, and configuration libraries with a ,multilayered architecture,., +, +, +, +,Contents, +, +, +,1, ,Motivation, +,2, ,Usage, +,3, ,See also, +,4, ,References, +,5, ,External links, +, +, +, +,Motivation,[,edit,], +,Some frameworks need multiple configuration files, each with many settings. These provide information specific to each project, ranging from URLs to mappings between classes and database tables. A large number of configuration files with lots of parameters is often difficult to maintain., +,For example, early versions of the Java persistence mapper ,Hibernate, mapped entities and their fields to the database by describing these relationships in XML files. Most of this information could have been revealed by conventionally mapping class names to the identically named ,database, tables and the fields to their columns, respectively. Later versions did away with the ,XML, configuration file and instead employed these very conventions, deviations from which can be indicated through the use of ,Java annotations, (see JavaBeans specification, linked below)., +,Usage,[,edit,], +, +, +, +, +The ,Maven, software tool auto-generated this directory structure for a Java project., +, +, +,Many modern frameworks use a ,convention over configuration, approach., +,The concept is older, however, dating back to the concept of a ,default,, and can be spotted more recently in the roots of ,Java, libraries. For example, the ,JavaBeans, specification relies on it heavily. To quote the ,JavaBeans, specification 1.01:,[1], +, +,""As a general rule we don't want to invent an enormous java.beans.everything class that people have to inherit from. Instead we'd like the ,JavaBeans, runtimes to provide default behaviour for 'normal' objects, but to allow objects to override a given piece of default behaviour by inheriting from some specific java.beans.something interface."", +, +,See also,[,edit,], +, +,Principle of least astonishment, +,Comparison of web frameworks, +,Frameworks that use the paradigm: +, +,ColdBox Platform, runs on ,Railo, +,Ruby on Rails, +,Lift, +,CakePHP, +,Apache Maven, +,Grails, +,Symfony, +,Appcelerator's Titanium Alloy, +,Yii, +,Laravel, +,Crosslight, +,Durandal (JavaScript SPA Framework), +,Ember.js, +,Enduro.js, +,Java Platform, Enterprise Edition, +,ASP.NET MVC, +,Spring Framework, +,Contao, +,Sails (web framework), +,Meteor, +,Roxy rest-API, +,Play Framework, +,KumbiaPHP Framework, +,Aurelia, +, +, +, +,References,[,edit,], +, +, +, +,^, ,Sun (24 July 1997). ,JavaBeans specification, ,Archived, 6 April 2012 at the ,Wayback Machine,., section 1.4., +, +, +, +, +,Bachle, M., & Kirchberg, P. (2007). ""Ruby on rails"". Software, IEEE, 24(6), 105-108. ,DOI 10.1109/BCI.2009.31,., +,Miller, J. (2009). ""Design For Convention Over Configuration"". Microsoft, Retrieved 18 April 2010., +,Chen, Nicholas (2006). ""Convention over configuration""., +, +,External links,[,edit,], +, +,Detailed information on CoC, +, + + +, +, +, +, +",Convention over configuration +" 2 January 2018, at 17:20.","In ,software engineering,, a ,software design pattern, is a general, ,reusable, solution to a commonly occurring problem within a given context in ,software design,. It is not a finished design that can be transformed directly into ,source, or ,machine code,. It is a description or template for how to solve a problem that can be used in many different situations. Design patterns are formalized ,best practices, that the programmer can use to solve common problems when designing an application or system., +,Object-oriented, design patterns typically show relationships and ,interactions, between ,classes, or ,objects,, without specifying the final application classes or objects that are involved. Patterns that imply mutable state may be unsuited for ,functional programming, languages, some patterns can be rendered unnecessary in languages that have built-in support for solving the problem they are trying to solve, and object-oriented patterns are not necessarily suitable for non-object-oriented languages., +,Design patterns may be viewed as a structured approach to ,computer programming, intermediate between the levels of a ,programming paradigm, and a concrete ,algorithm,., +, +, +, +,Contents, +, +, +,1, ,History, +,2, ,Practice, +,3, ,Structure, +, +,3.1, ,Domain-specific patterns, +, +, +,4, ,Classification and list, +, +,4.1, ,Creational patterns, +,4.2, ,Structural patterns, +,4.3, ,Behavioral patterns, +,4.4, ,Concurrency patterns, +, +, +,5, ,Documentation, +,6, ,Criticism, +,7, ,See also, +,8, ,References, +,9, ,Further reading, +, +, +, +,History,[,edit,], +,Patterns originated as an ,architectural concept, by ,Christopher Alexander, (1977/79). In 1987, ,Kent Beck, and ,Ward Cunningham, began experimenting with the idea of applying patterns to programming – specifically ,pattern languages, – and presented their results at the ,OOPSLA, conference that year.,[1],[2], In the following years, Beck, Cunningham and others followed up on this work., +,Design patterns gained popularity in ,computer science, after the book ,Design Patterns: Elements of Reusable Object-Oriented Software, was published in 1994 by the so-called ""Gang of Four"" (Gamma et al.), which is frequently abbreviated as ""GoF"". That same year, the first ,Pattern Languages of Programming, Conference was held and the following year, the ,Portland Pattern Repository, was set up for documentation of design patterns. The scope of the term remains a matter of dispute. Notable books in the design pattern genre include:, +, +,Gamma, Erich,; ,Helm, Richard,; ,Johnson, Ralph,; ,Vlissides, John, (1995). ,Design Patterns: Elements of Reusable Object-Oriented Software,. ,Addison-Wesley,. ,ISBN, ,0-201-63361-2,., , +,Brinch Hansen, Per, (1995). ,Studies in Computational Science: Parallel Programming Paradigms,. Prentice Hall. ,ISBN, ,0-13-439324-4,., , +,Buschmann, Frank,; Meunier, Regine; Rohnert, Hans; Sommerlad, Peter (1996). ,Pattern-Oriented Software Architecture, Volume 1: A System of Patterns,. John Wiley & Sons. ,ISBN, ,0-471-95869-7,., , +,Schmidt, Douglas C.,; Stal, Michael; Rohnert, Hans; Buschmann, Frank (2000). ,Pattern-Oriented Software Architecture, Volume 2: Patterns for Concurrent and Networked Objects,. John Wiley & Sons. ,ISBN, ,0-471-60695-2,., , +,Fowler, Martin, (2002). ,Patterns of Enterprise Application Architecture,. ,Addison-Wesley,. ,ISBN, ,978-0-321-12742-6,., , +,Hohpe, Gregor; Woolf, Bobby (2003). ,Enterprise Integration Patterns: Designing, Building, and Deploying Messaging Solutions,. ,Addison-Wesley,. ,ISBN, ,0-321-20068-3,., , +,Freeman, Eric T; Robson, Elisabeth; Bates, Bert; ,Sierra, Kathy, (2004). ,Head First Design Patterns,. ,O'Reilly Media,. ,ISBN, ,0-596-00712-4,., , +, +,Although design patterns have been applied practically for a long time, formalization of the concept of design patterns languished for several years.,[3], +,Practice,[,edit,], +,Design patterns can speed up the development process by providing tested, proven development paradigms.,[4], Effective software design requires considering issues that may not become visible until later in the implementation. Reusing design patterns helps to prevent subtle issues that can cause major problems,[,citation needed,],, and it also improves code readability for coders and architects who are familiar with the patterns., +,In order to achieve flexibility, design patterns usually introduce additional levels of ,indirection,, which in some cases may complicate the resulting designs and hurt application performance., +,By definition, a pattern must be programmed anew into each application that uses it. Since some authors see this as a step backward from ,software reuse, as provided by ,components,, researchers have worked to turn patterns into components. Meyer and Arnout were able to provide full or partial componentization of two-thirds of the patterns they attempted.,[5], +,Software design techniques are difficult to apply to a broader range of problems.,[,citation needed,], Design patterns provide general solutions, ,documented, in a format that does not require specifics tied to a particular problem., +,Structure,[,edit,], +,Design patterns are composed of several sections (see ,§ Documentation, below). Of particular interest are the Structure, Participants, and Collaboration sections. These sections describe a ,design motif,: a prototypical ,micro-architecture, that developers copy and adapt to their particular designs to solve the recurrent problem described by the design pattern. A micro-architecture is a set of program constituents (e.g., classes, methods...) and their relationships. Developers use the design pattern by introducing in their designs this prototypical micro-architecture, which means that micro-architectures in their designs will have structure and organization similar to the chosen design motif., +,Domain-specific patterns,[,edit,], +,Efforts have also been made to codify design patterns in particular domains, including use of existing design patterns as well as domain specific design patterns. Examples include ,user interface, design patterns,,[6], ,information visualization,,,[7], secure design,,[8], ""secure usability"",,[9], Web design ,[10], and business model design.,[11], +,The annual ,Pattern Languages of Programming, Conference proceedings ,[12], include many examples of domain-specific patterns., +,Classification and list,[,edit,], +, +, +, +, +, +, +,This section ,may have been ,copied and pasted, from a source, ,possibly, in violation of ,Wikipedia's copyright policy,. ,Please ,remedy this, by editing this article to remove any non-free copyrighted content and attributing free content correctly, or flagging the content for deletion. Please be sure that the supposed source of the copyright violation is not itself a ,Wikipedia mirror,., ,(August 2017), +, +, +, +,Design patterns were originally grouped into the categories: ,creational patterns,, ,structural patterns,, and ,behavioral patterns,, and described using the concepts of ,delegation,, ,aggregation,, and consultation. For further background on object-oriented design, see ,coupling, and ,cohesion,, ,inheritance,, ,interface,, and ,polymorphism,. Another classification has also introduced the notion of ,architectural design pattern, that may be applied at the architecture level of the software such as the ,Model–View–Controller, pattern., +,Creational patterns,[,edit,], +, +, +,Name, +,Description, +,In ,Design Patterns, +,In ,Code Complete,[13], +,Other, +, +, +,Abstract factory, +,Provide an interface for creating ,families, of related or dependent objects without specifying their concrete classes., +,Yes, +,Yes, +,N/A, +, +, +,Builder, +,Separate the construction of a complex object from its representation, allowing the same construction process to create various representations., +,Yes, +,No, +,N/A, +, +, +,Dependency Injection, +,A class accepts the objects it requires from an injector instead of creating the objects directly., +,No, +,No, +,N/A, +, +, +,Factory method, +,Define an interface for creating a ,single, object, but let subclasses decide which class to instantiate. Factory Method lets a class defer instantiation to subclasses., +,Yes, +,Yes, +,N/A, +, +, +,Lazy initialization, +,Tactic of delaying the creation of an object, the calculation of a value, or some other expensive process until the first time it is needed. This pattern appears in the GoF catalog as ""virtual proxy"", an implementation strategy for the ,Proxy, pattern., +,Yes, +,No, +,PoEAA,[14], +, +, +,Multiton, +,Ensure a class has only named instances, and provide a global point of access to them., +,No, +,No, +,N/A, +, +, +,Object pool, +,Avoid expensive acquisition and release of resources by recycling objects that are no longer in use. Can be considered a generalisation of ,connection pool, and ,thread pool, patterns., +,No, +,No, +,N/A, +, +, +,Prototype, +,Specify the kinds of objects to create using a prototypical instance, and create new objects from the 'skeleton' of an existing object, thus boosting performance and keeping memory footprints to a minimum., +,Yes, +,No, +,N/A, +, +, +,Resource acquisition is initialization, (RAII), +,Ensure that resources are properly released by tying them to the lifespan of suitable objects., +,No, +,No, +,N/A, +, +, +,Singleton, +,Ensure a class has only one instance, and provide a global point of access to it., +,Yes, +,Yes, +,N/A, +, +, +,Structural patterns,[,edit,], +, +, +,Name, +,Description, +,In ,Design Patterns, +,In ,Code Complete,[13], +,Other, +, +, +,Adapter,, Wrapper, or Translator, +,Convert the interface of a class into another interface clients expect. An adapter lets classes work together that could not otherwise because of incompatible interfaces. The enterprise integration pattern equivalent is the translator., +,Yes, +,Yes, +,N/A, +, +, +,Bridge, +,Decouple an abstraction from its implementation allowing the two to vary independently., +,Yes, +,Yes, +,N/A, +, +, +,Composite, +,Compose objects into tree structures to represent part-whole hierarchies. Composite lets clients treat individual objects and compositions of objects uniformly., +,Yes, +,Yes, +,N/A, +, +, +,Decorator, +,Attach additional responsibilities to an object dynamically keeping the same interface. Decorators provide a flexible alternative to subclassing for extending functionality., +,Yes, +,Yes, +,N/A, +, +, +,Extension object, +,Adding functionality to a hierarchy without changing the hierarchy., +,No, +,No, +,Agile Software Development, Principles, Patterns, and Practices,[15], +, +, +,Facade, +,Provide a unified interface to a set of interfaces in a subsystem. Facade defines a higher-level interface that makes the subsystem easier to use., +,Yes, +,Yes, +,N/A, +, +, +,Flyweight, +,Use sharing to support large numbers of similar objects efficiently., +,Yes, +,No, +,N/A, +, +, +,Front controller, +,The pattern relates to the design of Web applications. It provides a centralized entry point for handling requests., +,No, +,No, +, +,J2EE Patterns,[16], ,PoEAA,[17], +, +, +, +,Marker, +,Empty interface to associate metadata with a class., +,No, +,No, +,Effective Java,[18], +, +, +,Module, +,Group several related elements, such as classes, singletons, methods, globally used, into a single conceptual entity., +,No, +,No, +,N/A, +, +, +,Proxy, +,Provide a surrogate or placeholder for another object to control access to it., +,Yes, +,No, +,N/A, +, +, +,Twin, ,[19], +,Twin allows modeling of multiple inheritance in programming languages that do not support this feature., +,No, +,No, +,N/A, +, +, +,Behavioral patterns,[,edit,], +, +, +,Name, +,Description, +,In ,Design Patterns, +,In ,Code Complete,[13], +,Other, +, +, +,Blackboard, +,Artificial intelligence, pattern for combining disparate sources of data (see ,blackboard system,), +,No, +,No, +,N/A, +, +, +,Chain of responsibility, +,Avoid coupling the sender of a request to its receiver by giving more than one object a chance to handle the request. Chain the receiving objects and pass the request along the chain until an object handles it., +,Yes, +,No, +,N/A, +, +, +,Command, +,Encapsulate a request as an object, thereby allowing for the parameterization of clients with different requests, and the queuing or logging of requests. It also allows for the support of undoable operations., +,Yes, +,No, +,N/A, +, +, +,Interpreter, +,Given a language, define a representation for its grammar along with an interpreter that uses the representation to interpret sentences in the language., +,Yes, +,No, +,N/A, +, +, +,Iterator, +,Provide a way to access the elements of an ,aggregate, object sequentially without exposing its underlying representation., +,Yes, +,Yes, +,N/A, +, +, +,Mediator, +,Define an object that encapsulates how a set of objects interact. Mediator promotes ,loose coupling, by keeping objects from referring to each other explicitly, and it allows their interaction to vary independently., +,Yes, +,No, +,N/A, +, +, +,Memento, +,Without violating encapsulation, capture and externalize an object's internal state allowing the object to be restored to this state later., +,Yes, +,No, +,N/A, +, +, +,Null object, +,Avoid null references by providing a default object., +,No, +,No, +,N/A, +, +, +,Observer, or ,Publish/subscribe, +,Define a one-to-many dependency between objects where a state change in one object results in all its dependents being notified and updated automatically., +,Yes, +,Yes, +,N/A, +, +, +,Servant, +,Define common functionality for a group of classes., +,No, +,No, +,N/A, +, +, +,Specification, +,Recombinable ,business logic, in a ,Boolean, fashion., +,No, +,No, +,N/A, +, +, +,State, +,Allow an object to alter its behavior when its internal state changes. The object will appear to change its class., +,Yes, +,No, +,N/A, +, +, +,Strategy, +,Define a family of algorithms, encapsulate each one, and make them interchangeable. Strategy lets the algorithm vary independently from clients that use it., +,Yes, +,Yes, +,N/A, +, +, +,Template method, +,Define the skeleton of an algorithm in an operation, deferring some steps to subclasses. Template method lets subclasses redefine certain steps of an algorithm without changing the algorithm's structure., +,Yes, +,Yes, +,N/A, +, +, +,Visitor, +,Represent an operation to be performed on the elements of an object structure. Visitor lets a new operation be defined without changing the classes of the elements on which it operates., +,Yes, +,No, +,N/A, +, +, +,Concurrency patterns,[,edit,], +, +, +,Name, +,Description, +,In ,POSA2,[20], +,Other, +, +, +,Active Object, +,Decouples method execution from method invocation that reside in their own thread of control. The goal is to introduce concurrency, by using ,asynchronous method invocation, and a ,scheduler, for handling requests., +,Yes, +,N/A, +, +, +,Balking, +,Only execute an action on an object when the object is in a particular state., +,No, +,N/A, +, +, +,Binding properties, +,Combining multiple observers to force properties in different objects to be synchronized or coordinated in some way.,[21], +,No, +,N/A, +, +, +,Blockchain, +,Decentralized way to store data and agree on ways of processing it in a ,Merkle tree,, optionally using ,digital signature, for any individual contributions., +,No, +,N/A, +, +, +,Compute kernel, +,The same calculation many times in parallel, differing by integer parameters used with non-branching pointer math into shared arrays, such as ,GPU,-optimized ,Matrix multiplication, or ,Convolutional neural network,., +,No, +,N/A, +, +, +,Double-checked locking, +,Reduce the overhead of acquiring a lock by first testing the locking criterion (the 'lock hint') in an unsafe manner; only if that succeeds does the actual locking logic proceed. +,Can be unsafe when implemented in some language/hardware combinations. It can therefore sometimes be considered an ,anti-pattern,., +, +,Yes, +,N/A, +, +, +,Event-based asynchronous, +,Addresses problems with the asynchronous pattern that occur in multithreaded programs.,[22], +,No, +,N/A, +, +, +,Guarded suspension, +,Manages operations that require both a lock to be acquired and a precondition to be satisfied before the operation can be executed., +,No, +,N/A, +, +, +,Join, +,Join-pattern provides a way to write concurrent, parallel and distributed programs by message passing. Compared to the use of threads and locks, this is a high-level programming model., +,No, +,N/A, +, +, +,Lock, +,One thread puts a ""lock"" on a resource, preventing other threads from accessing or modifying it.,[23], +,No, +,PoEAA,[14], +, +, +,Messaging design pattern (MDP), +,Allows the interchange of information (i.e. messages) between components and applications., +,No, +,N/A, +, +, +,Monitor object, +,An object whose methods are subject to ,mutual exclusion,, thus preventing multiple objects from erroneously trying to use it at the same time., +,Yes, +,N/A, +, +, +,Reactor, +,A reactor object provides an asynchronous interface to resources that must be handled synchronously., +,Yes, +,N/A, +, +, +,Read-write lock, +,Allows concurrent read access to an object, but requires exclusive access for write operations., +,No, +,N/A, +, +, +,Scheduler, +,Explicitly control when threads may execute single-threaded code., +,No, +,N/A, +, +, +,Thread pool, +,A number of threads are created to perform a number of tasks, which are usually organized in a queue. Typically, there are many more tasks than threads. Can be considered a special case of the ,object pool, pattern., +,No, +,N/A, +, +, +,Thread-specific storage, +,Static or ""global"" memory local to a thread., +,Yes, +,N/A, +, +, +,Documentation,[,edit,], +,The documentation for a design pattern describes the context in which the pattern is used, the forces within the context that the pattern seeks to resolve, and the suggested solution.,[24], There is no single, standard format for documenting design patterns. Rather, a variety of different formats have been used by different pattern authors. However, according to ,Martin Fowler,, certain pattern forms have become more well-known than others, and consequently become common starting points for new pattern-writing efforts.,[25], One example of a commonly used documentation format is the one used by ,Erich Gamma,, ,Richard Helm,, ,Ralph Johnson, and ,John Vlissides, (collectively known as the ""Gang of Four"", or GoF for short) in their book ,Design Patterns,. It contains the following sections:, +, +,Pattern Name and Classification:, A descriptive and unique name that helps in identifying and referring to the pattern., +,Intent:, A description of the goal behind the pattern and the reason for using it., +,Also Known As:, Other names for the pattern., +,Motivation (Forces):, A scenario consisting of a problem and a context in which this pattern can be used., +,Applicability:, Situations in which this pattern is usable; the context for the pattern., +,Structure:, A graphical representation of the pattern. ,Class diagrams, and ,Interaction diagrams, may be used for this purpose., +,Participants:, A listing of the classes and objects used in the pattern and their roles in the design., +,Collaboration:, A description of how classes and objects used in the pattern interact with each other., +,Consequences:, A description of the results, side effects, and trade offs caused by using the pattern., +,Implementation:, A description of an implementation of the pattern; the solution part of the pattern., +,Sample Code:, An illustration of how the pattern can be used in a programming language., +,Known Uses:, Examples of real usages of the pattern., +,Related Patterns:, Other patterns that have some relationship with the pattern; discussion of the differences between the pattern and similar patterns., +, +,Criticism,[,edit,], +,The concept of design patterns has been criticized in several ways., +,The design patterns may just be a sign of some missing features of a given programming language (,Java, or ,C++, for instance). ,Peter Norvig, demonstrates that 16 out of the 23 patterns in the ,Design Patterns, book (which is primarily focused on C++) are simplified or eliminated (via direct language support) in ,Lisp, or ,Dylan,.,[26], Related observations were made by Hannemann and Kiczales who implemented several of the 23 design patterns using an ,aspect-oriented programming language, (AspectJ) and showed that code-level dependencies were removed from the implementations of 17 of the 23 design patterns and that aspect-oriented programming could simplify the implementations of design patterns.,[27], See also ,Paul Graham's, essay ""Revenge of the Nerds"".,[28], +,Moreover, inappropriate use of patterns may unnecessarily increase complexity.,[29], +,Another point of criticism is the lack of an update version since the ,Design Patterns, book was published in 1994., +,See also,[,edit,], +, +, +,Abstraction principle, +,Algorithmic skeleton, +,Anti-pattern, +,Architectural pattern, +,Debugging patterns, +,Design pattern, +,Distributed design patterns, +,Double-chance function, +,Enterprise Architecture framework, +,GRASP (object-oriented design), +,Helper class, +,Interaction design pattern, +,List of software development philosophies, +,List of software engineering topics, +,Pattern language, +,Pattern theory, +,Pedagogical patterns, +,Portland Pattern Repository, +,Refactoring, +,Software development methodology, +,Material Design, +, +, +,References,[,edit,], +, +, +,^, ,Smith, Reid (October 1987). ,Panel on design methodology,. ,OOPSLA, '87 Addendum to the Proceedings. ,doi,:,10.1145/62138.62151,., ,, ,""Ward cautioned against requiring too much programming at, what he termed, 'the high level of wizards.' He pointed out that a written 'pattern language' can significantly improve the selection and application of abstractions. He proposed a 'radical shift in the burden of design and implementation' basing the new methodology on an adaptation of Christopher Alexander's work in pattern languages and that programming-oriented pattern languages developed at ,Tektronix, has significantly aided their software development efforts."", +,^, ,Beck, Kent,; ,Cunningham, Ward, (September 1987). ,Using Pattern Languages for Object-Oriented Program,. ,OOPSLA, '87 workshop on ,Specification and Design for Object-Oriented Programming,. Retrieved ,2006-05-26,., , +,^, ,Baroni, Aline Lúcia; Guéhéneuc, Yann-Gaël; Albin-Amiot, Hervé (June 2003). ""Design Patterns Formalization"". ,Nantes,: École Nationale Supérieure des Techniques Industrielles et des Mines de Nantes. ,CiteSeerX, ,10.1.1.62.6466, ,., , +,^, ,Bishop, Judith. ,""C# 3.0 Design Patterns: Use the Power of C# 3.0 to Solve Real-World Problems"",. C# Books from O'Reilly Media,. Retrieved ,2012-05-15,. ,If you want to speed up the development of your .NET applications, you're ready for C# design patterns -- elegant, accepted and proven ways to tackle common programming problems., , +,^, ,Meyer, Bertrand,; Arnout, Karine (July 2006). ,""Componentization: The Visitor Example"", ,(PDF),. ,IEEE Computer,. ,IEEE,. ,39, (7): 23–30. ,doi,:,10.1109/MC.2006.227,., , +,^, ,Laakso, Sari A. (2003-09-16). ,""Collection of User Interface Design Patterns"",. University of Helsinki, Dept. of Computer Science,. Retrieved ,2008-01-31,., , +,^, ,Heer, J.; Agrawala, M. (2006). ,""Software Design Patterns for Information Visualization"",. ,IEEE Transactions on Visualization and Computer Graphics,. ,12, (5): 853–60. ,doi,:,10.1109/TVCG.2006.178,. ,PMID, ,17080809,., , +,^, ,Dougherty, Chad; Sayre, Kirk; Seacord, Robert C.; Svoboda, David; Togashi, Kazuya (2009). ,Secure Design Patterns, ,(PDF),. Software Engineering Institute., , +,^, ,Garfinkel, Simson L. (2005). ,Design Principles and Patterns for Computer Systems That Are Simultaneously Secure and Usable, (Ph.D. thesis)., , +,^, ,""Yahoo! Design Pattern Library"",. Archived from ,the original, on 2008-02-29,. Retrieved ,2008-01-31,., , +,^, ,""How to design your Business Model as a Lean Startup?"",. Retrieved ,2010-01-06,., , +,^, ,Pattern Languages of Programming, Conference proceedings (annual, 1994—) ,[1], +,^ ,a, ,b, ,c, ,McConnell, Steve, (June 2004). ""Design in Construction"". ,Code Complete, (2nd ed.). ,Microsoft Press,. p. 104. ,ISBN, ,978-0-7356-1967-8,. ,Table 5.1 Popular Design Patterns, , +,^ ,a, ,b, ,Fowler, Martin, (2002). ,Patterns of Enterprise Application Architecture,. ,Addison-Wesley,. ,ISBN, ,978-0-321-12742-6,., , +,^, ,C. Martin, Robert (2002). ""28. Extension object"". ,Agile Software Development, Principles, Patterns, and Practices,. p. 408. ,ISBN, ,978-0135974445,., , +,^, ,Alur, Deepak; Crupi, John; Malks, Dan (2003). ,Core J2EE Patterns: Best Practices and Design Strategies,. ,Prentice Hall,. p. 166. ,ISBN, ,0-13-142246-4,., , +,^, ,Fowler, Martin, (2002). ,Patterns of Enterprise Application Architecture,. ,Addison-Wesley,. p. 344. ,ISBN, ,978-0-321-12742-6,., , +,^, ,Bloch, Joshua (2008). ""Item 37: Use marker interfaces to define types"". ,Effective Java (Second edition),. Addison-Wesley. p. 179. ,ISBN, ,978-0-321-35668-0,., , +,^, ,""Twin – A Design Pattern for Modeling Multiple Inheritance"", ,(PDF),., , +,^, ,Schmidt, Douglas C.,; Stal, Michael; Rohnert, Hans; Buschmann, Frank (2000). ,Pattern-Oriented Software Architecture, Volume 2: Patterns for Concurrent and Networked Objects,. John Wiley & Sons. ,ISBN, ,0-471-60695-2,., , +,^, ,Binding Properties, +,^, ,Nagel, Christian; Evjen, Bill; Glynn, Jay; Watson, Karli; Skinner, Morgan (2008). ""Event-based Asynchronous Pattern"". ,Professional C# 2008,. Wiley. pp. 570–571. ,ISBN, ,0-470-19137-6,., , +,^, ,Lock Pattern, +,^, ,Gabriel, Dick,. ,""A Pattern Definition"",. Archived from ,the original, on 2007-02-09,. Retrieved ,2007-03-06,., , +,^, ,Fowler, Martin, (2006-08-01). ,""Writing Software Patterns"",. Retrieved ,2007-03-06,., , +,^, ,Norvig, Peter, (1998). ,Design Patterns in Dynamic Languages,., , +,^, ,Hannemann, Jan (2002). ,Design pattern implementation in Java and AspectJ,., , +,^, ,Graham, Paul, (2002). ,Revenge of the Nerds,. Retrieved ,2012-08-11,., , +,^, ,McConnell, Steve (2004). ,Code Complete: A Practical Handbook of Software Construction, 2nd Edition,. p. 105., , +, +, +,Further reading,[,edit,], +, +, +,Alexander, Christopher,; Ishikawa, Sara; Silverstein, Murray; Jacobson, Max; Fiksdahl-King, Ingrid; Angel, Shlomo (1977). ,A Pattern Language: Towns, Buildings, Construction,. New York: Oxford University Press. ,ISBN, ,978-0-19-501919-3,., , +,Alur, Deepak; Crupi, John; Malks, Dan (May 2003). ,Core J2EE Patterns: Best Practices and Design Strategies (2nd Edition),. ,Prentice Hall,. ,ISBN, ,0-13-142246-4,., , +,Beck, Kent, (October 2007). ,Implementation Patterns,. ,Addison-Wesley,. ,ISBN, ,978-0-321-41309-3,., , +,Beck, Kent,; Crocker, R.; Meszaros, G.; ,Coplien, J. O.,; Dominick, L.; Paulisch, F.; ,Vlissides, J., (March 1996). ,Proceedings of the 18th International Conference on Software Engineering,. pp. 25–30., , +,Borchers, Jan (2001). ,A Pattern Approach to Interaction Design,. ,John Wiley & Sons,. ,ISBN, ,0-471-49828-9,., , +,Coplien, James O.,; Schmidt, Douglas C. (1995). ,Pattern Languages of Program Design,. ,Addison-Wesley,. ,ISBN, ,0-201-60734-4,., , +,Coplien, James O.,; ,Vlissides, John M.,; Kerth, Norman L. (1996). ,Pattern Languages of Program Design 2,. ,Addison-Wesley,. ,ISBN, ,0-201-89527-7,., , +,Eloranta, Veli-Pekka; Koskinen, Johannes; Leppänen, Marko; Reijonen, Ville (2014). ,Designing Distributed Control Systems: A Pattern Language Approach,. Wiley. ,ISBN, ,1118694155,., , +,Fowler, Martin, (1997). ,Analysis Patterns: Reusable Object Models,. ,Addison-Wesley,. ,ISBN, ,0-201-89542-0,., , +,Fowler, Martin, (2003). ,Patterns of Enterprise Application Architecture,. ,Addison-Wesley,. ,ISBN, ,978-0-321-12742-6,., , +,Freeman, Eric; Freeman, Elisabeth; ,Sierra, Kathy,; Bates, Bert (2004). ,Head First Design Patterns,. ,O'Reilly Media,. ,ISBN, ,0-596-00712-4,., , +,Hohmann, Luke; Fowler, Martin; Kawasaki, Guy (2003). ,Beyond Software Architecture,. ,Addison-Wesley,. ,ISBN, ,0-201-77594-8,., , +,Gabriel, Richard, (1996). ,Patterns of Software: Tales From The Software Community, ,(PDF),. ,Oxford University Press,. p. 235. ,ISBN, ,0-19-512123-6,. Archived from ,the original, ,(PDF), on 2003-08-01., , +,Gamma, Erich,; ,Helm, Richard,; ,Johnson, Ralph,; ,Vlissides, John, (1995). ,Design Patterns: Elements of Reusable Object-Oriented Software,. ,Addison-Wesley,. ,ISBN, ,0-201-63361-2,., , +,Hohpe, Gregor; Woolf, Bobby (2003). ,Enterprise Integration Patterns: Designing, Building, and Deploying Messaging Solutions,. ,Addison-Wesley,. ,ISBN, ,0-321-20068-3,., , +,Holub, Allen, (2004). ,Holub on Patterns,. ,Apress,. ,ISBN, ,1-59059-388-X,., , +,Kircher, Michael; Völter, Markus; Zdun, Uwe (2005). ,Remoting Patterns: Foundations of Enterprise, Internet and Realtime Distributed Object Middleware,. ,John Wiley & Sons,. ,ISBN, ,0-470-85662-9,., , +,Larman, Craig, (2005). ,Applying UML and Patterns,. ,Prentice Hall,. ,ISBN, ,0-13-148906-2,., , +,Liskov, Barbara,; ,Guttag, John, (2000). ,Program Development in Java: Abstraction, Specification, and Object-Oriented Design,. ,Addison-Wesley,. ,ISBN, ,0-201-65768-6,., , +,Manolescu, Dragos; Voelter, Markus; Noble, James (2006). ,Pattern Languages of Program Design 5,. ,Addison-Wesley,. ,ISBN, ,0-321-32194-4,., , +,Marinescu, Floyd (2002). ,EJB Design Patterns: Advanced Patterns, Processes and Idioms,. ,John Wiley & Sons,. ,ISBN, ,0-471-20831-0,., , +,Martin, Robert Cecil,; Riehle, Dirk; Buschmann, Frank (1997). ,Pattern Languages of Program Design 3,. ,Addison-Wesley,. ,ISBN, ,0-201-31011-2,., , +,Mattson, Timothy G; Sanders, Beverly A.; Massingill, Berna L. (2005). ,Patterns for Parallel Programming,. Addison-Wesley. ,ISBN, ,0-321-22811-1,., , +,Shalloway, Alan; Trott, James R. (2001). ,Design Patterns Explained, Second Edition: A New Perspective on Object-Oriented Design,. Addison-Wesley. ,ISBN, ,0-321-24714-0,., , +,Vlissides, John M., (1998). ,Pattern Hatching: Design Patterns Applied,. ,Addison-Wesley,. ,ISBN, ,0-201-43293-5,., , +,Weir, Charles; Noble, James (2000). ,Small Memory Software: Patterns for systems with limited memory,. ,Addison-Wesley,. ,ISBN, ,0-201-59607-5,. Archived from ,the original, on 2007-06-17., , +, +, +, +, +, +, +, +, +,v, +,t, +,e, +, +, +,Software design patterns, +, +, +, +,Gang of Four, +patterns, +, +, +, +, +,Creational, +, +, +, +,Abstract factory, +,Builder, +,Factory method, +,Prototype, +,Singleton, +, +, +, +, +, +,Structural, +, +, +, +,Adapter, +,Bridge, +,Composite, +,Decorator, +,Facade, +,Flyweight, +,Proxy, +, +, +, +, +, +,Behavioral, +, +, +, +,Chain of responsibility, +,Command, +,Interpreter, +,Iterator, +,Mediator, +,Memento, +,Observer, +,State, +,Strategy, +,Template method, +,Visitor, +, +, +, +, +, +, +, +, +,Concurrency, +patterns, +, +, +, +,Active object, +,Balking, +,Binding properties, +,Double-checked locking, +,Event-based asynchronous, +,Guarded suspension, +,Join, +,Lock, +,Monitor, +,Proactor, +,Reactor, +,Read write lock, +,Scheduler, +,Thread pool, +,Thread-local storage, +, +, +, +, +, +,Architectural, +patterns, +, +, +, +,Front controller, +,Interceptor, +,MVC, +,ADR, +,ECS, +,n,-tier, +,Specification, +,Publish–subscribe, +,Naked objects, +,Service locator, +,Active record, +,Identity map, +,Data access object, +,Data transfer object, +,Inversion of control, +,Model 2, +, +, +, +, +, +,Other, +patterns, +, +, +, +,Blackboard, +,Business delegate, +,Composite entity, +,Dependency injection, +,Intercepting filter, +,Lazy loading, +,Mock object, +,Null object, +,Object pool, +,Servant, +,Twin, +,Type tunnel, +,Method chaining, +, +, +, +, +, +,Books, +, +, +, +,Design Patterns, +,Enterprise Integration Patterns, +, +, +, +, +, +,People, +, +, +, +,Christopher Alexander, +,Erich Gamma, +,Ralph Johnson, +,John Vlissides, +,Grady Booch, +,Kent Beck, +,Ward Cunningham, +,Martin Fowler, +,Robert Martin, +,Jim Coplien, +,Douglas Schmidt, +,Linda Rising, +, +, +, +, +, +,Communities, +, +, +, +,The Hillside Group, +,The Portland Pattern Repository, +, +, +, +, +, +, +, +, +, +,Authority control, +, +, +, +,GND,: ,4546895-3, +, +, +, +, +, +, + + +, +, +, +, +",Software design pattern +" 15 January 2018, at 13:48.","Software Engineering, is the application of ,engineering, to the ,development, of ,software, in a systematic method.,[1],[2],[3], +, +, +, +,Contents, +, +, +,1, ,Definitions, +,2, ,History, +,3, ,Subdisciplines, +,4, ,Education, +,5, ,Profession, +, +,5.1, ,Employment, +,5.2, ,Certification, +,5.3, ,Impact of globalization, +, +, +,6, ,Related fields, +, +,6.1, ,Computer Science, +, +, +,7, ,Controversy, +, +,7.1, ,Criticism, +, +, +,8, ,See also, +,9, ,Notes, +,10, ,References, +,11, ,Further reading, +,12, ,External links, +, +, +, +,Definitions,[,edit,], +,Notable definitions of software engineering include:, +, +,""the systematic application of scientific and technological knowledge, methods, and experience to the design, implementation, testing, and documentation of software""—The Bureau of Labor Statistics—,IEEE, ,Systems and software engineering - Vocabulary,[4], +,""The application of a systematic, disciplined, quantifiable approach to the development, operation, and maintenance of ,software,""—,IEEE, ,Standard Glossary of Software Engineering Terminology,[5], +,""an engineering discipline that is concerned with all aspects of software production""—,Ian Sommerville,[6], +,""the establishment and use of sound engineering principles in order to economically obtain software that is reliable and works efficiently on real machines""—,Fritz Bauer,[7], +, +,The term has also been used less formally:, +, +,as the informal contemporary term for the broad range of activities that were formerly called ,computer programming, and ,systems analysis,;,[8], +,as the broad term for all aspects of the ,practice, of computer programming, as opposed to the ,theory, of computer programming, which is called ,computer science,;,[9], +,as the term embodying the ,advocacy, of a specific approach to computer programming, one that urges that it be treated as an ,engineering, discipline rather than an art or a craft, and advocates the codification of recommended practices.,[10], +, +, +,History,[,edit,], +,Main article: ,History of software engineering, +,When the first digital ,computers, appeared in the early 1940s,,[11], the instructions to make them operate were wired into the machine. Practitioners quickly realized that this design was not flexible and came up with the ""stored program architecture"" or ,von Neumann architecture,. Thus the division between ""hardware"" and ""software"" began with ,abstraction, being used to deal with the complexity of computing., +,Programming languages, started to appear in the early 1950s,[12], and this was also another major step in abstraction. Major languages such as ,Fortran,, ,ALGOL,, and ,COBOL, were released in the late 1950s to deal with scientific, algorithmic, and business problems respectively. ,David Parnas, introduced the key concept of ,modularity, and ,information hiding, in 1972,[13], to help programmers deal with the ever-increasing complexity of ,software systems,., +,The origins of the term ""software engineering"" have been attributed to different sources. The term ""software engineering"" was used in the August 1966 issue of Communications of the ACM (Volume 9, number 8) “letter to the ACM membership” by the ACM President Anthony A. Oettinger;,[14], it is also commonly associated with the title of a seminal NATO conference in 1968 by Professor F.L. Bauer, the first conference on software engineering.,[15], At the time there was perceived to be a "",software crisis,"".,[16],[17],[18], +,In 1984, the ,Software Engineering Institute, (SEI) was established as a federally funded research and development center headquartered on the campus of Carnegie Mellon University in Pittsburgh, Pennsylvania, United States. ,Watts Humphrey, founded the SEI Software Process Program, aimed at understanding and managing the software engineering process. The Process Maturity Levels introduced would become the Capability Maturity Model Integration for Development(CMMi-DEV), which has defined how the US Government evaluates the abilities of a software development team., +,Modern, generally accepted best-practices for software engineering have been collected by the ,ISO/IEC JTC 1/SC 7, subcommittee and published as the ,Software Engineering Body of Knowledge, (SWEBOK).,[19], +,Subdisciplines,[,edit,], +,Software engineering can be divided into sub-disciplines.,[20], Some of them are:, +, +,Software requirements,[1],[20], (or ,Requirements engineering,): The elicitation, analysis, specification, and validation of ,requirements, for ,software,., +,Software design,:,[1],[20], The process of defining the architecture, components, interfaces, and other characteristics of a system or component. It is also defined as the result of that process., +,Software construction,:,[1],[20], The detailed creation of working, meaningful software through a combination of ,programming, (aka coding), verification, ,unit testing,, ,integration testing,, and ,debugging,., +,Software testing,:,[1],[20], An empirical, technical investigation conducted to provide stakeholders with information about the quality of the product or service under test., +,Software maintenance,:,[1],[20], The totality of activities required to provide cost-effective support to software., +,Software configuration management,:,[1],[20], The identification of the configuration of a system at distinct points in time for the purpose of systematically controlling changes to the configuration, and maintaining the integrity and traceability of the configuration throughout the system life cycle. Modern processes use ,software versioning,., +,Software engineering management,:,[1],[20], The application of management activities—planning, coordinating, measuring, monitoring, controlling, and reporting—to ensure that the development and maintenance of software is systematic, disciplined, and quantified., +,Software development process,:,[1],[20], The definition, implementation, assessment, measurement, management, change, and improvement of the software life cycle process itself., +,Software engineering models and methods,[20], impose structure on software engineering with the goal of making that activity systematic, repeatable, and ultimately more success-oriented, +,Software quality,[20], +,Software engineering professional practice,[20], is concerned with the knowledge, skills, and attitudes that software engineers must possess to practice software engineering in a professional, responsible, and ethical manner, +,Software engineering economics,[20], is about making decisions related to software engineering in a business context, +,Computing foundations,[20], +,Mathematical foundations,[20], +,Engineering foundations,[20], +, +,Education,[,edit,], +,Knowledge of ,computer programming, is a prerequisite for becoming a software engineer. In 2004 the ,IEEE Computer Society, produced the ,SWEBOK,, which has been published as ISO/IEC Technical Report 1979:2004, describing the body of knowledge that they recommend to be mastered by a graduate software engineer with four years of experience.,[21], Many software engineers enter the profession by obtaining a university degree or training at a vocational school. One standard international curriculum for undergraduate software engineering degrees was defined by the ,CCSE,, and updated in 2004.,[22], A number of universities have Software Engineering degree programs; as of 2010,[update],, there were 244 Campus ,Bachelor of Software Engineering, programs, 70 Online programs, 230 Masters-level programs, 41 Doctorate-level programs, and 69 Certificate-level programs in the United States.,[23], +,In addition to university education, many companies sponsor internships for students wishing to pursue careers in information technology. These internships can introduce the student to interesting real-world tasks that typical software engineers encounter every day. Similar experience can be gained through ,military service, in software engineering., +,Profession,[,edit,], +,Main articles: ,Software engineer, and ,Software engineering professionalism, +,Legal requirements for the licensing or certification of professional software engineers vary around the world. In the UK, there is no licensing or legal requirement to assume or use the job title Software Engineer. In some areas of Canada, such as Alberta, British Columbia, Ontario,,[24], and Quebec, software engineers can hold the Professional Engineer (P.Eng) designation and/or the Information Systems Professional (I.S.P.) designation. In Canada, there is a legal requirement to have P.Eng when one wants to use the title ""engineer"" or practice ""software engineering"". In Europe, Software Engineers can obtain the ,European Engineer, (EUR ING) professional title., +,The United States, since 2013, has offered an ,NCEES, ,Professional Engineer, exam for Software Engineering, thereby allowing Software Engineers to be licensed and recognized.,[25], Mandatory licensing is currently still largely debated, and perceived as controversial. In some parts of the US such as Texas, the use of the term ,Engineer, is regulated by law and reserved only for use by individuals who have a ,Professional Engineer, license., +,The ,IEEE Computer Society, and the ,ACM,, the two main US-based professional organizations of software engineering, publish guides to the profession of software engineering. The IEEE's ,Guide to the Software Engineering Body of Knowledge - 2004 Version,, or ,SWEBOK,, defines the field and describes the knowledge the IEEE expects a practicing software engineer to have. The most current SWEBOK v3 is an updated version and was released in 2014.,[26], The IEEE also promulgates a ""Software Engineering Code of Ethics"".,[27], +,Employment,[,edit,], +,In November 2004, the ,U. S. Bureau of Labor Statistics, counted 760,840 software engineers holding jobs in the ,U.S.,; in the same time period there were some 1.4 million practitioners employed in the U.S. in all other engineering disciplines combined.,[28], Due to its relative newness as a field of study, formal education in software engineering is often taught as part of a computer science curriculum, and many software engineers hold computer science degrees and have no engineering background whatsoever.,[29], +,Many software engineers work as employees or contractors. Software engineers work with businesses, government agencies (civilian or military), and non-profit organizations. Some software engineers work for themselves as ,freelancers,. Some organizations have specialists to perform each of the tasks in the ,software development process,. Other organizations require software engineers to do many or all of them. In large projects, people may specialize in only one role. In small projects, people may fill several or all roles at the same time. Specializations include: in industry (,analysts,, ,architects,, ,developers,, ,testers,, ,technical support,, ,middleware analysts,, ,managers,) and in academia (,educators,, ,researchers,)., +,Most software engineers and programmers work 40 hours a week, but about 15 percent of software engineers and 11 percent of programmers worked more than 50 hours a week in 2008. Injuries in these occupations are rare. However, like other workers who spend long periods in front of a computer terminal typing at a keyboard, engineers and programmers are susceptible to eyestrain, back discomfort, and hand and wrist problems such as ,carpal tunnel syndrome,.,[30], +,The field's future looks bright according to ,Money Magazine, and ,Salary.com,, which rated Software Engineer as the best job in the United States in 2006.,[31], In 2012, software engineering was again ranked as the best job in the United States, this time by CareerCast.com.,[32], +,Certification,[,edit,], +,The ,Software Engineering Institute, offers certifications on specific topics like ,security,, process improvement and ,software architecture,.,[33], ,Apple,, ,IBM,, ,Microsoft, and other companies also sponsor their own certification examinations. Many ,IT, ,certification, programs are oriented toward specific technologies, and managed by the vendors of these technologies.,[34], These certification programs are tailored to the institutions that would employ people who use these technologies., +,Broader certification of general software engineering skills is available through various professional societies. As of 2006,[update],, the ,IEEE, had certified over 575 software professionals as a ,Certified Software Development Professional, (CSDP).,[35], In 2008 they added an entry-level certification known as the Certified Software Development Associate (CSDA).,[36], The ,ACM, had a professional certification program in the early 1980s,,[,citation needed,], which was discontinued due to lack of interest. The ACM examined the possibility of professional certification of software engineers in the late 1990s, but eventually decided that such certification was inappropriate for the professional industrial practice of software engineering.,[37], +,In the U.K. the ,British Computer Society, has developed a legally recognized professional certification called ,Chartered IT Professional (CITP),, available to fully qualified members (,MBCS,). Software engineers may be eligible for membership of the ,Institution of Engineering and Technology, and so qualify for Chartered Engineer status. In Canada the ,Canadian Information Processing Society, has developed a legally recognized professional certification called ,Information Systems Professional (ISP),.,[38], In Ontario, Canada, Software Engineers who graduate from a ,Canadian Engineering Accreditation Board (CEAB), accredited program, successfully complete PEO's (,Professional Engineers Ontario,) Professional Practice Examination (PPE) and have at least 48 months of acceptable engineering experience are eligible to be licensed through the ,Professional Engineers Ontario, and can become Professional Engineers P.Eng.,[39], The PEO does not recognize any online or distance education however; and does not consider Computer Science programs to be equivalent to software engineering programs despite the tremendous overlap between the two. This has sparked controversy and a certification war. It has also held the number of P.Eng holders for the profession exceptionally low. The vast majority of working professionals in the field hold a degree in CS, not SE. Given the difficult certification path for holders of non-SE degrees, most never bother to pursue the license., +,Impact of globalization,[,edit,], +,The initial impact of outsourcing, and the relatively lower cost of international human resources in developing third world countries led to a massive migration of software development activities from corporations in North America and Europe to India and later: China, Russia, and other developing countries. This approach had some flaws, mainly the distance / timezone difference that prevented human interaction between clients and developers and the massive job transfer. This had a negative impact on many aspects of the software engineering profession. For example, some students in the ,developed world, avoid education related to software engineering because of the fear of ,offshore outsourcing, (importing software products or services from other countries) and of being displaced by ,foreign visa workers,.,[40], Although statistics do not currently show a threat to software engineering itself; a related career, ,computer programming, does appear to have been affected.,[41],[42], Nevertheless, the ability to smartly leverage offshore and near-shore resources via the ,follow-the-sun, workflow has improved the overall operational capability of many organizations.,[43], When North Americans are leaving work, Asians are just arriving to work. When Asians are leaving work, Europeans are arriving to work. This provides a continuous ability to have human oversight on business-critical processes 24 hours per day, without paying overtime compensation or disrupting a key human resource, sleep patterns., +,While global outsourcing has several advantages, global - and generally distributed - development can run into serious difficulties resulting from the distance between developers. This is due to the key elements of this type of distance that have been identified as geographical, temporal, cultural and communication (that includes the use of different languages and dialects of English in different locations).,[44], Research has been carried out in the area of global software development over the last 15 years and an extensive body of relevant work published that highlights the benefits and problems associated with the complex activity. As with other aspects of software engineering research is ongoing in this and related areas., +,Related fields,[,edit,], +,Software engineering is a direct sub-field of ,engineering, and has an overlap with ,computer science, and ,management science,[,citation needed,],. It is also considered a part of overall ,systems engineering,., +,Computer Science,[,edit,], +, +, +, +, +,This section needs expansion,. ,You can help by ,adding to it,., ,(July 2017), +, +, +, +,In general, software engineering focuses more on techniques for the application of software development in industry,,[45],[46], while computer science focuses more on algorithms and theory.,[47], +,Controversy,[,edit,], +,Criticism,[,edit,], +,Software engineering sees its practitioners as individuals who follow well-defined engineering approaches to problem-solving. These approaches are specified in various software engineering books and research papers, always with the connotations of predictability, precision, mitigated risk and professionalism. This perspective has led to calls for licensing, certification and codified bodies of knowledge as mechanisms for spreading the engineering knowledge and maturing the field., +,Software craftsmanship, has been proposed by a body of software developers as an alternative that emphasizes the coding skills and accountability of the software developers themselves without professionalism or any prescribed curriculum leading to ad-hoc problem-solving (craftmanship) without engineering (lack of predictability, precision, missing risk mitigation, methods are informal and poorly defined). ,The Software Craftsmanship Manifesto, extends the Agile Software Manifesto,[48], and draws a metaphor between modern software development and the apprenticeship model of medieval Europe., +,Software engineering extends engineering and draws on the engineering model, i.e. engineering process, engineering project management, engineering requirements, engineering design, engineering construction, and engineering validation. The concept is so new that it is rarely understood, and it is widely misinterpreted, including in software engineering textbooks, papers, and among the communities of programmers and crafters., +,One of the core issues in software engineering is that its approaches are not empirical enough because a real-world validation of approaches is usually absent, or very limited and hence software engineering is often misinterpreted as feasible only in a ""theoretical environment."", +,Dijkstra, who developed computer languages in the 20th century refuted the concepts of ""software engineering"" that was prevalent in the 1980s, arguing that those terms were poor analogies for what he called the ""radical novelty"" of ,computer science,:, +, +,A number of these phenomena have been bundled under the name ""Software Engineering"". As economics is known as ""The Miserable Science"", software engineering should be known as ""The Doomed Discipline"", doomed because it cannot even approach its goal since its goal is self-contradictory. Software engineering, of course, presents itself as another worthy cause, but that is eyewash: if you carefully read its literature and analyse what its devotees actually do, you will discover that software engineering has accepted as its charter ""How to program if you cannot."",[49], +, +,See also,[,edit,], +, +, +,Software portal, +,Software Testing portal, +, +, +,Main article: ,Outline of software engineering, +, +,Bachelor of Science in Information Technology, +,Bachelor of Software Engineering, +,List of software engineering conferences, +,List of software engineering publications, +,Software craftsmanship, +,Software Engineering Institute, +, +,Notes,[,edit,], +, +, +,^ ,a, ,b, ,c, ,d, ,e, ,f, ,g, ,h, ,i, ,Abran et al. 2004,, pp. 1–1, +,^, ,ACM (2007). ,""Computing Degrees & Careers"",. ACM,. Retrieved ,2010-11-23,., , +,^, ,Laplante, Phillip (2007). ,What Every Engineer Should Know about Software Engineering,. Boca Raton: CRC. ,ISBN, ,978-0-8493-7228-5,. Retrieved ,2011-01-21,., , +,^, ,Systems and software engineering - Vocabulary,, ,ISO,/,IEC,/,IEEE, std 24765:2010(E), 2010., +,^, ,IEEE Standard Glossary of Software Engineering Terminology,, ,IEEE, std 610.12-1990, 1990., +,^, ,Sommerville, Ian, (2007) [1982]. ""1.1.2 What is software engineering?"". ,Software Engineering, (8th ed.). Harlow, England: Pearson Education. p. 7. ,ISBN, ,0-321-31379-8,. ,Software engineering is an engineering discipline that is concerned with all aspects of software production from the early stages of system specification to maintaining the system after it has gone into use. In this definition, there are two key phrases:, +1. ,Engineering discipline, Engineers make things work. They apply theories, methods and tools where these are appropriate [. . .] Engineers also recognize that they must work to organizational and financial constraints. [. . .], +2. ,All aspects of software production, Software engineering is not just concerned with the technical processes of software development but also with activities such as software project management and with the development of tools, methods and theories to support software production., , +,^, ,""Software Engineering"". ,Information Processing,. North-Holland Publishing Co.year = 1972. ,71,: 530–538., , +,^, ,Akram I. Salah (2002-04-05). ,""Engineering an Academic Program in Software Engineering"", ,(PDF),. 35th Annual Midwest Instruction and Computing Symposium,. Retrieved ,2006-09-13,., ,: ""For some, software engineering is just a glorified name for programming. If you are a programmer, you might put 'software engineer' on your business card—never 'programmer' though."", +,^, ,Mills, Harlan D., J. R. Newman, and C. B. Engle, Jr., ""An Undergraduate Curriculum in Software Engineering,"" in ,Deimel, Lionel E. (1990). ,Software Engineering Education: SEI Conference 1990, Pittsburgh, Pennsylvania, USA, April 2–3,.,. Springer. ,ISBN, ,0-387-97274-9,., ,,,p. 26,: ""As a practical matter, we regard software engineering as the necessary preparation for the practicing, software development and maintenance professional. The Computer Scientist is preparing for further theoretical studies..."", +,^, ,David Budgen; Pearl Brereton; Barbara Kitchenham; Stephen Linkman (2004-12-14). ,""Realizing Evidence-based Software Engineering"",. Retrieved ,2006-10-18,., ,: ""We believe that software engineering can only advance as an engineering discipline by moving away from its current dependence upon advocacy and analysis,...."", +,^, ,Leondes (2002). ,intelligent systems: technology and applications,. CRC Press. p. I-6. ,ISBN, ,978-0-8493-1121-5,. ,1.4 Computers and a First Glimpse at Al (1940s), , +,^, ,Campbell-Kelly, Martin (April 1982). ""The Development of Computer Programming in Britain (1945 to 1955)"". ,IEEE Annals of the History of Computing,. ,4, (2): 121–139. ,doi,:,10.1109/MAHC.1982.10016,., , +,^, ,Parnas, David, (December 1972). ,""On the Criteria To Be Used in Decomposing Systems into Modules"",. ,Communications of the ACM,. ,15, (12): 1053–1058. ,doi,:,10.1145/361598.361623,. Retrieved ,2008-12-26,., , +,^, ,""The origin of ""software engineering,"","",. Retrieved ,17 Nov, 2017,., , +,^, ,Randall, Brian. ,""The 1968/69 NATO Software Engineering Reports"",. Retrieved ,17 Nov, 2017,., , +,^, ,Sommerville 2008,, p. 26, +,^, ,Peter, Naur; ,Randell, Brian, (7–11 October 1968). ,Software Engineering: Report of a conference sponsored by the NATO Science Committee, ,(PDF),. Garmisch, Germany: Scientific Affairs Division, NATO,. Retrieved ,2008-12-26,., , +,^, ,Randell, Brian, (10 August 2001). ,""The 1968/69 NATO Software Engineering Reports"",. ,Brian Randell's University Homepage,. The School of the Computer Sciences, Newcastle University,. Retrieved ,2008-10-11,. ,The idea for the first NATO Software Engineering Conference, and in particular that of adopting the then practically unknown term ""software engineering"" as its (deliberately provocative) title, I believe came originally from Professor ,Fritz Bauer,., , +,^, ,""ISO/IEC TR 19759:2005"",. Retrieved ,2012-04-01,., , +,^ ,a, ,b, ,c, ,d, ,e, ,f, ,g, ,h, ,i, ,j, ,k, ,l, ,m, ,n, ,o, ,p, ,""Software Engineering Body of Knowledge (SWEBOK Version 3), 2014"", ,(pdf),. ,www.swebok.org,. IEEE Computer Society,. Retrieved ,24 May, 2016,., , +,^, ,Abran, Alain, ed. (2005) [2004]. ,""Chapter 1: Introduction to the Guide"",. ,Guide to the Software Engineering Body of Knowledge,. Los Alamitos: IEEE Computer Society. ,ISBN, ,0-7695-2330-7,. Retrieved ,2010-09-13,. ,The total volume of cited literature is intended to be suitable for mastery through the completion of an undergraduate education plus four years of experience., , +,^, ,""SE2004 Software Engineering Curriculum"",. Sites.computer.org. 2003-09-30,. Retrieved ,2012-03-25,., , +,^, ,[1], Degree programs in Software Engineering, +,^, ,Williams, N.S.W. (19–21 February 2001). ""Professional Engineers Ontario's approach to licensing software engineering practitioners"". ,Software Engineering Education and Training, 2001 Proceedings. 14th Conference on,. Charlotte, NC: ,IEEE,. pp. 77–78., , +,^, ,""NCEES Software Engineering Exam Specifications"", ,(PDF),. Retrieved ,2012-04-01,., , +,^, ,"",',SWEBOK Guide Version 3,',"",. Retrieved ,2015-03-09,., , +,^, ,"",','Software Engineering Code of Ethics''"", ,(PDF),. Retrieved ,2012-03-25,., , +,^, ,Bureau of Labor Statistics, U.S. Department of Labor, ,USDL 05-2145: Occupational Employment and Wages, November 2004,, Table 1., +,^, ,""Software Engineering"",. Retrieved ,2008-02-01,., , +,^, ,""Computer Software Engineers and Computer Programmers"",. Retrieved ,2009-12-17,., , +,^, ,Kalwarski, Tara; Daphne Mosher; Janet Paskin; Donna Rosato (2006). ,""Best Jobs in America"",. ,MONEY Magazine,. CNN,. Retrieved ,2006-04-20,., , +,^, ,""Best and Worst Jobs of 2012"",. online.wsj.com,. Retrieved ,2017-11-03,., , +,^, ,""SEI certification page"",. Sei.cmu.edu,. Retrieved ,2012-03-25,., , +,^, ,Wyrostek, Warren (March 14, 2008). ,""The Top 10 Problems with IT Certification in 2008"",. ,InformIT,. Retrieved ,2009-03-03,., , +,^, ,IEEE Computer Society. ,""2006 IEEE computer society report to the IFIP General Assembly"", ,(PDF),. Retrieved ,2007-04-10,., , +,^, ,IEEE. ,""CSDA"",. Retrieved ,2010-04-20,., , +,^, ,ACM (July 17, 2000). ,""A Summary of the ACM Position on Software Engineering as a Licensed Engineering Profession"", ,(PDF),. Association for Computing Machinery (ACM). Archived from ,the original, ,(PDF), on May 17, 2008,. Retrieved ,2009-03-03,. ,At its meeting in May 2000, the Council further concluded that the framework of a licensed professional engineer, originally developed for civil engineers, does not match the professional industrial practice of software engineering. Such licensing practices would give false assurances of competence even if the body of knowledge were mature; and would preclude many of the most qualified software engineers from becoming licensed., , +,^, ,Canadian Information Processing Society. ,""I.S.P. Designation"",. Retrieved ,2007-03-15,., , +,^, ,""Professional Engineers Ontario: Welcome to PEO's website"",. Peo.on.ca,. Retrieved ,2012-03-25,., , +,^, ,Thibodaux, Patrick (2006-05-05). ,""As outsourcing gathers steam, computer science interest wanes"",. Computerworld.com,. Retrieved ,2016-12-06,., , +,^, ,""Computer Programmers"",. Bls.gov,. Retrieved ,2012-03-25,., , +,^, ,Mullins, Robert (2007-03-13). ,""Software developer growth slows in North America"",. InfoWorld,. Retrieved ,2012-03-25,., , +,^, ,""Gartner Magic Quadrant"", ,(PDF),. Cognizant.com,. Retrieved ,2012-03-25,., , +,^, ,Casey, Valentine (2010-08-20). ,""Virtual software team project management"",. Springer,. Retrieved ,2013-12-06,., , +,^, ,http://www.stevemcconnell.com/psd/04-senotcs.htm, +,^, ,https://engiegirlsatuwaterloo.wordpress.com/2013/08/29/computer-engineering-software-engineering-or-computer-science/, +,^, ,https://www.upwork.com/hiring/development/computer-science-vs-computer-engineering/, +,^, ,Beck, Kent,; et al. (2001). ,""Manifesto for Agile Software Development"",. Agile Alliance,. Retrieved ,14 June, 2010,., , +,^, ,Dijkstra, E. W., (1988). ,""On the cruelty of really teaching computing science"",. Retrieved ,2014-01-10,., , +, +, +,References,[,edit,], +, +,Abran, Alain; Moore, James W.; Bourque, Pierre; Dupuis, Robert; Tripp, Leonard L. (2004). ,Guide to the Software Engineering Body of Knowledge,. IEEE. ,ISBN, ,0-7695-2330-7,., , +,Sommerville, Ian (2008). ,Software Engineering, (7 ed.). Pearson Education. ,ISBN, ,978-81-7758-530-8,. Retrieved ,10 January, 2013,., , +, +,Further reading,[,edit,], +, +,Pressman, Roger S, (2009). ,Software Engineering: A Practitioner's Approach, (7th ed.). Boston, Mass: McGraw-Hill. ,ISBN, ,978-0073375977,., , +,Sommerville, Ian, (2010) [2010]. ,Software Engineering, (9th ed.). Harlow, England: Pearson Education. ,ISBN, ,978-0137035151,., , +,Jalote, Pankaj, (2005) [1991]. ,An Integrated Approach to Software Engineering, (3rd ed.). Springer. ,ISBN, ,0-387-20881-X,., , +,Bruegge, Bernd,; Dutoit, Allen (2009). ,Object-oriented software engineering : using UML, patterns, and Java, (3rd ed.). Prentice Hall. ,ISBN, ,978-0136061250,., , +, +,External links,[,edit,], +, +, +, +,Wikimedia Commons has media related to ,Software engineering,., +, +, +, +, +, +,Wikibooks has a book on the topic of: ,Introduction to Software Engineering, +, +, +, +, +, +,Wikiversity has learning resources about ,Software engineering, +, +, +, +,Guide to the Software Engineering Body of Knowledge, +,The Open Systems Engineering and Software Development Life Cycle Framework, OpenSDLC.org the integrated Creative Commons SDLC, +,Software Engineering Institute, Carnegie Mellon, +,Learn Software Engineering, Software Engineering Society, +, +, +, +, +, +, +, +,v, +,t, +,e, +, +, +,Software engineering, +, +, +, +,Fields, +, +, +, +,Computer programming, +,Requirements engineering, +,Software deployment, +,Software design, +,Software maintenance, +,Software testing, +,Systems analysis, +,Formal methods, +, +, +, +, +, +,Concepts, +, +, +, +,Data modeling, +,Enterprise architecture, +,Functional specification, +,Modeling language, +,Orthogonality, +,Programming paradigm, +,Software, +,Software archaeology, +,Software architecture, +,Software configuration management, +,Software development methodology, +,Software development process, +,Software quality, +,Software quality assurance, +,Software verification and validation, +,Structured analysis, +, +, +, +, +, +,Orientations, +, +, +, +,Agile, +,Aspect-oriented, +,Object orientation, +,Ontology, +,Service orientation, +,SDLC, +, +, +, +, +, +,Models, +, +, +, +, +,Developmental, +, +, +, +,Agile, +,EUP, +,Executable UML, +,Incremental model, +,Iterative model, +,Prototype model, +,RAD, +,UP, +,Scrum, +,Spiral model, +,V-Model, +,Waterfall model, +,XP, +, +, +, +, +, +,Other, +, +, +, +,SPICE, +,CMMI, +,Data model, +,ER model, +,Function model, +,Information model, +,Metamodeling, +,Object model, +,Systems model, +,View model, +, +, +, +, +, +,Languages, +, +, +, +,IDEF, +,UML, +,USL, +,SysML, +, +, +, +, +, +, +, +, +, +,Software, +engineers, +, +, +, +, +,Victor Basili, +,Kent Beck, +,Grady Booch, +,Fred Brooks, +,Barry Boehm, +,Peter Chen, +,Danese Cooper, +,Ward Cunningham, +,Tom DeMarco, +,Edsger W. Dijkstra, +,Delores M. Etter, +,Martin Fowler, +,Adele Goldstine, +,Margaret Hamilton, +,C. A. R. Hoare, +,Lois Haibt, +,Mary Jean Harrold, +,Grace Hopper, +,Watts Humphrey, +,Michael A. Jackson, +,Ivar Jacobson, +,Alan Kay, +,Nancy Leveson, +,Stephen J. Mellor, +,Bertrand Meyer, +,David Parnas, +,Trygve Reenskaug, +,Winston W. Royce, +,James Rumbaugh, +,Mary Shaw, +,Peri Tarr, +,Elaine Weyuker, +,Niklaus Wirth, +,Edward Yourdon, +, +, +, +, +, +,Related fields, +, +, +, +,Computer science, +,Computer engineering, +,Project management, +,Risk management, +,Systems engineering, +, +, +, +, +, +, +, +, +, ,Category, +, ,Commons, +, +, +, +, +, +, +, +, +, +, +, +, +,v, +,t, +,e, +, +, +,Systems engineering, +, +, +, +,Subfields, +, +, +, +,Aerospace engineering, +,Biological systems engineering, +,Configuration management, +,Earth systems engineering and management, +,Electrical engineering, +,Enterprise systems engineering, +,Performance engineering, +,Reliability engineering, +,Safety engineering, +, +, +, +, +, +,Processes, +, +, +, +,Requirements engineering, +,Functional specification, +,System integration, +,Verification and validation, +,Design review, +, +, +, +, +, +,Concepts, +, +, +, +,Business process, +,System, +,System lifecycle, +,V-Model, +,Systems development life cycle, +, +, +, +, +, +,Tools, +, +, +, +,Decision-making, +,Function modelling, +,IDEF, +,Optimization, +,Quality function deployment, +,System dynamics, +,Systems Modeling Language, +,Systems analysis, +,Systems modeling, +,Work breakdown structure, +, +, +, +, +, +,People, +, +, +, +,James S. Albus, +,Ruzena Bajcsy, +,Benjamin S. Blanchard, +,Wernher von Braun, +,Kathleen Carley, +,Harold Chestnut, +,Wolt Fabrycky, +,Barbara Grosz, +,Arthur David Hall III, +,Derek Hitchins, +,Robert E. Machol, +,Radhika Nagpal, +,Simon Ramo, +,Joseph Francis Shea, +,Katia Sycara, +,Manuela M. Veloso, +,John N. Warfield, +, +, +, +, +, +,Related fields, +, +, +, +,Control engineering, +,Computer engineering, +,Industrial engineering, +,Operations research, +,Project management, +,Quality management, +,Risk management, +,Software engineering, +, +, +, +, +, +, +, +, +,Category, +, +, +, +, +, +, +, +, +, +, +, +, +,v, +,t, +,e, +, +, +,Engineering, +, +, +, +,Civil, +, +, +, +,Architectural, +,Construction, +,Environmental, +,Earthquake, +,Geotechnical, +,Hydraulic, +,Mining, +,Structural, +,Transportation, +, +, +, +, +, +,Mechanical, +, +, +, +,Acoustical, +,Aerospace, +,Automotive, +,Marine, +,Mechatronics, +,Railway, +, +, +, +, +, +,Electrical, +, +, +, +,Computer, +,Control, +,Electromechanics, +,Electronics, +,Microwaves, +,Power, +,Radio Frequency, +,Telecommunications, +, +, +, +, +, +,Chemical, +, +, +, +,Biochemical, +,Biological, +,Molecular, +,Petroleum, +,Process, +,Reaction, +,Thermodynamics, +,Transport phenomena, +, +, +, +, +, +,Interdisciplinarity, +, +, +, +,Audio, +,Biomedical, +,Ceramics, +,Engineering mathematics, +,Engineering mechanics, +,Engineering science, +,Fire, +,Industrial, +,Materials science, +,Metallurgy, +,Military, +,Nanotechnology, +,Nuclear, +,Optical, +,Photonics, +,Privacy, +,Robotics, +,Security, +,Systems, +, +, +, +, +, +,Glossaries, +, +, +, +,Engineering, +,Aerospace engineering, +,Civil engineering, +,Electrical and electronics engineering, +,Mechanical engineering, +,Structural engineering, +, +, +, +, +, +, +, +, +,List of engineering branches, +, ,Category:Engineering, +, , ,Engineering portal, +, +, +, +, +, +, +, +, +, +, +, +, +,v, +,t, +,e, +, +, +,Major fields of ,computer science, +, +, +, +, +,Note: This template roughly follows the 2012 ,ACM Computing Classification System,., +, +, +, +,Hardware, +, +, +, +,Printed circuit board, +,Peripheral, +,Integrated circuit, +,Very-large-scale integration, +,Energy consumption, +,Electronic design automation, +, +, +, +, +, +,Computer systems, +organization, +, +, +, +,Computer architecture, +,Embedded system, +,Real-time computing, +,Dependability, +, +, +, +, +, +,Networks, +, +, +, +,Network architecture, +,Network protocol, +,Network components, +,Network scheduler, +,Network performance evaluation, +,Network service, +, +, +, +, +, +,Software organization, +, +, +, +,Interpreter, +,Middleware, +,Virtual machine, +,Operating system, +,Software quality, +, +, +, +, +, +,Software notations, +and ,tools, +, +, +, +,Programming paradigm, +,Programming language, +,Compiler, +,Domain-specific language, +,Modeling language, +,Software framework, +,Integrated development environment, +,Software configuration management, +,Software library, +,Software repository, +, +, +, +, +, +,Software development, +, +, +, +,Software development process, +,Requirements analysis, +,Software design, +,Software construction, +,Software deployment, +,Software maintenance, +,Programming team, +,Open-source model, +, +, +, +, +, +,Theory of computation, +, +, +, +,Model of computation, +,Formal language, +,Automata theory, +,Computational complexity theory, +,Logic, +,Semantics, +, +, +, +, +, +,Algorithms, +, +, +, +,Algorithm design, +,Analysis of algorithms, +,Randomized algorithm, +,Computational geometry, +, +, +, +, +, +,Mathematics, +of computing, +, +, +, +,Discrete mathematics, +,Probability, +,Statistics, +,Mathematical software, +,Information theory, +,Mathematical analysis, +,Numerical analysis, +, +, +, +, +, +,Information, +systems, +, +, +, +,Database management system, +,Information storage systems, +,Enterprise information system, +,Social information systems, +,Geographic information system, +,Decision support system, +,Process control system, +,Multimedia information system, +,Data mining, +,Digital library, +,Computing platform, +,Digital marketing, +,World Wide Web, +,Information retrieval, +, +, +, +, +, +,Security, +, +, +, +,Cryptography, +,Formal methods, +,Security services, +,Intrusion detection system, +,Hardware security, +,Network security, +,Information security, +,Application security, +, +, +, +, +, +,Human–computer, +interaction, +, +, +, +,Interaction design, +,Social computing, +,Ubiquitous computing, +,Visualization, +,Accessibility, +, +, +, +, +, +,Concurrency, +, +, +, +,Concurrent computing, +,Parallel computing, +,Distributed computing, +,Multithreading, +,Multiprocessing, +, +, +, +, +, +,Artificial, +intelligence, +, +, +, +,Natural language processing, +,Knowledge representation and reasoning, +,Computer vision, +,Automated planning and scheduling, +,Search methodology, +,Control method, +,Philosophy of artificial intelligence, +,Distributed artificial intelligence, +, +, +, +, +, +,Machine learning, +, +, +, +,Supervised learning, +,Unsupervised learning, +,Reinforcement learning, +,Multi-task learning, +,Cross-validation, +, +, +, +, +, +,Graphics, +, +, +, +,Animation, +,Rendering, +,Image manipulation, +,Graphics processing unit, +,Mixed reality, +,Virtual reality, +,Image compression, +,Solid modeling, +, +, +, +, +, +,Applied, +computing, +, +, +, +,E-commerce, +,Enterprise software, +,Computational mathematics, +,Computational physics, +,Computational chemistry, +,Computational biology, +,Computational social science, +,Computational engineering, +,Computational healthcare, +,Digital art, +,Electronic publishing, +,Cyberwarfare, +,Electronic voting, +,Video game, +,Word processing, +,Operations research, +,Educational technology, +,Document management, +, +, +, +, +, +, +, +, +, ,Book, +, ,Category, +, ,Portal, +,WikiProject, +, ,Commons, +, +, +, +, +, +, +, +, +, +,Authority control, +, +, +, +,LCCN,: ,sh87007398, +,GND,: ,4116521-4, +,BNF,: ,cb11966616k, ,(data), +,NDL,: ,01014113, +,BNE,: ,XX541523, +, +, +, +, +, +, + + +, +, +, +, +",Software engineering +" 19 January 2018, at 03:57.","Not to be confused with ,SaaS,., +, +,Sass, +, +, +, +, +,Designed by, +,Hampton Catlin, +, +, +,Developer, +,Natalie Weizenbaum,, ,Chris Eppstein, +, +, +,First appeared, +,November 28, 2006,; 11 years ago, (,2006-11-28,), +, +, +, +, +, +,Stable release, +, +,3.5.1 / July 13, 2017,; 6 months ago, (,2017-07-13,),[1], +, +, +, +, +, +, +,Typing discipline, +,dynamic, +, +, +,OS, +,Cross-platform, +, +, +,License, +,MIT License, +, +, +,Filename extensions, +,.sass, .scss, +, +, +,Website, +,sass-lang,.com, +, +, +,Major ,implementations, +, +, +,Dart,, ,Ruby, +, +, +,Influenced by, +, +, +,CSS,, ,YAML,, ,Haml, +, +, +,Influenced, +, +, +,Less,, ,Stylus,, ,Tritium, +, +, +,Sass, (Syntactically awesome style sheets) is a ,style sheet language, initially designed by ,Hampton Catlin, and developed by ,Natalie Weizenbaum,.,[2],[3], After its initial versions, Weizenbaum and ,Chris Eppstein, continued to extend Sass with SassScript, a simple scripting language used in Sass files., +,Sass is a ,scripting language, that is ,interpreted, or ,compiled, into ,Cascading Style Sheets, (CSS). SassScript is the scripting language itself. Sass consists of two ,syntaxes,. The original syntax, called ""the indented syntax"", uses a syntax similar to ,Haml,.,[4], It uses ,indentation, to separate ,code blocks, and ,newline, characters to separate rules. The newer syntax, ""SCSS"", uses block formatting like that of CSS. It uses braces to denote code blocks and semicolons to separate lines within a block. The indented syntax and SCSS files are traditionally given the ,extensions, .sass and .scss, respectively., +,CSS3, consists of a series of selectors and pseudo-selectors that group rules that apply to them. Sass,[5], (in the larger context of both syntaxes) extends CSS by providing several mechanisms available in more traditional ,programming languages,, particularly ,object-oriented languages,, but that are not available to CSS3 itself. When SassScript is interpreted, it creates blocks of CSS rules for various selectors as defined by the Sass file. The Sass interpreter translates SassScript into CSS. Alternatively, Sass can monitor the .sass or .scss file and translate it to an output .css file whenever the .sass or .scss file is saved.,[6], Sass is simply ,syntactic sugar, for CSS., +,The official implementation of Sass is ,open-source, and coded in ,Ruby,; however, other implementations exist, including ,Dart,, ,PHP,, and a high-performance implementation in ,C, called libSass.,[7],[8], There's also a ,Java, implementation called JSass.,[9], Additionally, ,Vaadin, has a Java implementation of Sass.,[10], The indented syntax is a metalanguage. SCSS is a ,nested metalanguage,, as valid CSS is valid SCSS with the same ,semantics,. Sass supports integration with the ,Firefox, ,extension, ,Firebug,.,[11], +,SassScript provides the following mechanisms: ,variables,, ,nesting,, ,mixins,, and selector ,inheritance,.,[4], +, +, +, +,Contents, +, +, +,1, ,Variables, +,2, ,Nesting, +, +,2.1, ,Loops, +,2.2, ,Arguments, +,2.3, ,In combination, +, +, +,3, ,Selector inheritance, +,4, ,libSass, +,5, ,IDE integration, +,6, ,See also, +,7, ,References, +,8, ,External links, +, +, +, +,Variables,[,edit,], +,Sass allows variables to be defined. Variables begin with a ,dollar sign, (,$,). Variable ,assignment, is done with a ,colon, (,:,).,[11], +,SassScript supports four data types:,[11], +, +,Numbers, (including units), +,Strings, (with quotes or without), +,Colors (name, or names), +,Booleans, +, +,Variables can be ,arguments, to or results from one of several available ,functions,.,[12], During translation, the values of the variables are inserted into the output CSS document.,[4], +,In SCSS style, +, +, +,$primary-color,:, ,#3bbfce,;, +,$margin,:, ,16,px,;, + +,.content-navigation, ,{, + ,border-color,:, ,$,primary-color,;, + ,color,:, ,darken,(,$,primary-color,,, ,10,%,);, +,}, + +,.border, ,{, + ,padding,:, ,$,margin, ,/, ,2,;, + ,margin,:, ,$,margin, ,/, ,2,;, + ,border-color,:, ,$,primary-color,;, +,}, +, +,Or Sass style, +, +, +,$primary-color,:, ,#3bbfce, +,$margin,:, ,16,px, + +,.content-navigation, + ,border-color,:, ,$primary-color, + ,color,:, ,darken,(,$primary-color,,, ,10,%,), + +,.border, + ,padding,:, ,$margin,/,2, + ,margin,:, ,$margin,/,2, + ,border-color,:, ,$primary-color, +, +,Would compile to:, +, +, +,.,content-navigation, ,{, + ,border-color,:, ,#3bbfce,;, + ,color,:, ,#2b9eab,;, +,}, + +,.,border, ,{, + ,padding,:, ,8,px,;, + ,margin,:, ,8,px,;, + ,border-color,:, ,#3bbfce,;, +,}, +, +,Nesting,[,edit,], +,CSS does support logical nesting, but the code blocks themselves are not nested. Sass allows the nested code to be inserted within each other.,[4], +,In Sass style, +, +, +,table,.hl, + ,margin,:, ,2,em, ,0, + ,td,.ln, + ,text-align,:, ,right, + +,li, + ,font,:, + ,family,:, ,serif, + ,weight,:, ,bold, + ,size,:, ,1,.3,em, +, +,or SCSS style, +, +, +,table,.hl, ,{, + ,margin,:, ,2em, ,0,;, + ,td,.ln, ,{, + ,text-align,:, ,right,;, + ,}, +,}, + +,li, ,{, + ,font,:, ,{, + ,family,:, ,serif,;, + ,weight,:, ,bold,;, + ,size,:, ,1,.3em,;, + ,}, +,}, +, +,Would compile to:, +, +, +,table,.,hl, ,{, + ,margin,:, ,2,em, ,0,;, +,}, +,table,.,hl, ,td,.,ln, ,{, + ,text-align,:, ,right,;, +,}, + +,li, ,{, + ,font-family,:, ,serif,;, + ,font-weight,:, ,bold,;, + ,font-size,:, ,1.3,em,;, +,}, +, +,More complicated types of nesting including ,namespace, nesting and parent references are discussed in the Sass documentation.,[11], +, +, +,@mixin, table-base, ,{, + ,th, ,{, + ,text-align,:, ,center,;, + ,font-weight,:, ,bold,;, + ,}, + ,td,,, ,th, ,{, + ,padding,:, ,2px,;, + ,}, +,}, + +,#data, ,{, + ,@include, table-base,;, +,}, +, +,Or Sass style, +, +, +,=table-base, + ,th, + ,text-align,:, ,center, + ,font-weight,:, ,bold, + ,td,,, ,th, + ,padding,:, ,2,px, + +,#data, + ,+table-base, +, +,Would compile to:, +, +, +,#,data, ,th, ,{, + ,text-align,:, ,center,;, + ,font-weight,:, ,bold,;, +,}, +,#,data, ,td,,, ,#,data, ,th, ,{, + ,padding,:, ,2,px,;, +,}, +, +,Loops,[,edit,], +,Sass allows for iterating over variables using ,@for,, ,@each, and ,@while,, which can be used to apply different styles to elements with similar classes or ids., +, +, +,$squareCount,:, ,3, +,@for, ,$i, ,from, ,1, ,through, ,$squareCount, + ,#square-,#{,$i,}, + ,background-color,:, ,red, + ,width,:, ,50,px, ,*, ,$i, + ,height,:, ,120,px, ,/, ,$i, +, +,The above example would compile to:, +, +, +,#,square-1, ,{, + ,background-color,:, ,red,;, + ,width,:, ,50,px,;, + ,height,:, ,120,px,;, +,}, + +,#,square-2, ,{, + ,background-color,:, ,red,;, + ,width,:, ,100,px,;, + ,height,:, ,60,px,;, +,}, + +,#,square-3, ,{, + ,background-color,:, ,red,;, + ,width,:, ,150,px,;, + ,height,:, ,40,px,;, +,}, +, +,Arguments,[,edit,], +,Mixins also support arguments.,[4], +, +, +,=left,(,$dist,), + ,float,:, ,left, + ,margin-left,:, ,$dist, + +,#data, + ,+left,(,10,px,), +, +,Would compile to:, +, +, +,#,data, ,{, + ,float,:, ,left,;, + ,margin-left,:, ,10,px,;, +,}, +, +,In combination,[,edit,], +, +, +,=table-base, + ,th, + ,text-align,:, ,center, + ,font-weight,:, ,bold, + ,td,,, ,th, + ,padding,:, ,2,px, + +,=left,(,$dist,), + ,float,:, ,left, + ,margin-left,:, ,$dist, + +,#data, + ,+left,(,10,px,), + ,+table-base, +, +,Would compile to:, +, +, +,#,data, ,{, + ,float,:, ,left,;, + ,margin-left,:, ,10,px,;, +,}, +,#,data, ,th, ,{, + ,text-align,:, ,center,;, + ,font-weight,:, ,bold,;, +,}, +,#,data, ,td,,, ,#,data, ,th, ,{, + ,padding,:, ,2,px,;, +,}, +, +,Selector inheritance,[,edit,], +,While CSS3 supports the ,Document Object Model, (DOM) hierarchy, it does not allow selector inheritance. In Sass, inheritance is achieved by inserting a line inside of a code block that uses the @extend keyword and references another selector. The extended selector's attributes are applied to the calling selector.,[4], +, +, +,.error, + ,border,:, ,1,px, ,#f00, + ,background,:, ,#fdd, + +,.error.intrusion, + ,font-size,:, ,1,.3,em, + ,font-weight,:, ,bold, + +,.badError, + ,@extend, ,.error, + ,border-width,:, ,3,px, +, +,Would compile to:, +, +, +,.,error,,, ,.,badError, ,{, + ,border,:, ,1,px, ,#f00,;, + ,background,:, ,#fdd,;, +,}, + +,.,error,.,intrusion,,, +,.,badError,.,intrusion, ,{, + ,font-size,:, ,1.3,em,;, + ,font-weight,:, ,bold,;, +,}, + +,.,badError, ,{, + ,border-width,:, ,3,px,;, +,}, +, +,Sass supports ,multiple inheritance,.,[11], +,libSass,[,edit,], +,At the 2012 HTML5 Developer Conference, Hampton Catlin, the creator of Sass, announced version 1.0 of libSass, an open source C++ implementation of Sass developed by Catlin, Aaron Leung, and the engineering team at ,Moovweb,.,[8],[13], Current Sass maintainer, Chris Eppstein, has expressed intent to contribute as well.,[14], +,According to Catlin, libSass can be ""drop[ped] into anything and it will have Sass in it...You could drop it right into Firefox today and build Firefox and it will compile in there. We wrote our own parser from scratch to make sure that would be possible."",[15], +,The design goals of libSass are:, +, +,Performance – Developers have reported 10x speed up increases over the Ruby implementation of Sass.,[16], +,Easier integration – libSass makes it easier to integrate Sass into more software. Before libSass, tightly integrating Sass into a language or software product required bundling the entire Ruby interpreter. By contrast, libSass is a statically linkable library with zero external dependencies and C-like interface, making it easy to wrap Sass directly into other programming languages and tools. For example, open source libSass bindings now exist for ,Node,, ,Go,, and ,Ruby,.,[13], +,Compatibility – libSass's goal is full compatibility with the official Ruby implementation of Sass; however, this goal has not yet been fully met.,[8], +, +,IDE integration,[,edit,], +, +, +,IDE, +,Software, +,website, +, +, +,Adobe Dreamweaver, CC 2017, +, +,https://blogs.adobe.com/creativecloud/getting-started-with-css-preprocessors-less-and-sass/, +, +, +,Eclipse, +, +, +, +, +,Emacs, +,SCSS Mode, +,https://github.com/antonj/scss-mode/, +, +, +,JetBrains IntelliJ IDEA (Ultimate Edition), +, +,https://www.jetbrains.com/idea/, +, +, +,JetBrains PhpStorm, +, +,http://www.jetbrains.com/phpstorm/, +, +, +,JetBrains RubyMine, +, +,http://www.jetbrains.com/ruby/, +, +, +,Microsoft Visual Studio, +,Mindscape, +,http://www.mindscapehq.com/products/web-workbench, +, +, +,Microsoft Visual Studio, +,SassyStudio, +,http://visualstudiogallery.msdn.microsoft.com/85fa99a6-e4c6-4a1c-9f00-e6a8129b6f4d, +, +, +,Microsoft WebMatrix, +, +,http://www.microsoft.com/web/, +, +, +,NetBeans, +, +,http://plugins.netbeans.org/plugin/34929/scss-support, +, +, +,Vim, +,haml.zip, +,http://www.vim.org/scripts/script.php?script_id=1433, +, +, +,Atom, +, +,https://github.com/atom/language-sass, +, +, +,Visual Studio Code, +, +,https://code.visualstudio.com/Docs/languages/css, +, +, +,See also,[,edit,], +, +,Less (stylesheet language), +,Stylus (stylesheet language), +, +,References,[,edit,], +, +, +,^, ,Latest releases, +,^, ,""Sass: Syntactically Awesome Style Sheets"",. ,sass-lang.com,., , +,^, ,""Natalie Weizenbaum's blog"",., , +,^ ,a, ,b, ,c, ,d, ,e, ,f, ,Media Mark (3.2.12). ,""Sass - Syntactically Awesome Stylesheets"",. Sass-lang.com,. Retrieved ,2014-02-23,., , +,^, ,Kataria, Saransh. ,""Getting started with sass development"",. ,wisdomgeek,. saranshkataria., , +,^, ,Sass - Syntactically Awesome Stylesheets, Tutorial, +,^, ,""Sass / Scss"",. Drupal.org,. Retrieved ,2014-02-23,., , +,^ ,a, ,b, ,c, ,H. Catlin (2012-10-15). ,""Hampton's 6 Rules of Mobile Design"",. HTML5 Developer Conference,. Retrieved ,2013-07-11,., , +,^, ,""jsass - A Java implementation of the Sass compiler (and some other goodies). - Google Project Hosting"",. Code.google.com,. Retrieved ,2014-02-23,., , +,^, ,""SassCompiler (Vaadin 7.0.7 API)"",. Vaadin.com. 2013-06-06,. Retrieved ,2014-02-23,., , +,^ ,a, ,b, ,c, ,d, ,e, ,Sass (Syntactically Awesome StyleSheets), SASS_REFERENCE, +,^, ,Module: Sass::Script::Functions, Sass Functions, +,^ ,a, ,b, ,M. Catlin (2012-04-30). ,""libsass"",. Moovweb Blog,. Retrieved ,2013-07-11,., , +,^, ,C. Eppstein (2012-04-15). ,""Tweet"",. Retrieved ,2013-07-11,., , +,^, ,A. Stacoviak & A. Thorp (2013-06-26). ,""Sass, libsass, Haml and more with Hampton Catlin"",. Retrieved ,2013-07-30,., , +,^, ,D. Le Nouaille (2013-06-07). ,""Sassc and Bourbon"",. Retrieved ,2013-07-11,., , +, +, +,External links,[,edit,], +, +,Official website, +,Haml/Sass Google Group, +,pyScss, a Python Scss library and client, +,Sai the mixins extension and CSS authoring framework for Less & Sass/Scss (Git), +,Sass tools and resources, +, +, +, +, +, +, +, +,v, +,t, +,e, +, +, +,Style sheet languages, +, +, +, +,Modes, +, +, +, +,Desktop publishing, +,Web development, +,User interfaces, +, +, +, +, +, +,Standard, +, +, +, +,Cascading (CSS), +,DSSSL, +,Extensible (XSL), +, +, +, +, +, +,Non-standard, +, +, +, +,JavaScript (JSSS), +,FOSI, +,Qt, +,Sass, +,Less, +,Stylus, +,SMIL Timesheets, +,PostCSS, +, +, +, +, +, +, +, +, +,List, +,Comparison, +, +, +, +, +, +, + + +, +, +, +, +",Sass (stylesheet language) +" 14 January 2018, at 14:04."," +,CoffeeScript, +, +, +, +, +,Paradigm, +,Multi-paradigm,: ,prototype-based,, ,functional,, ,imperative,, ,scripting, +, +, +,Designed by, +,Jeremy Ashkenas, +, +, +,Developer, +,Jeremy Ashkenas, Colin Runciman, et al., +, +, +,First appeared, +,December 13, 2009,; 8 years ago, (,2009-12-13,), +, +, +, +, +, +,Stable release, +, +,2.0.0 / September 18, 2017,; 4 months ago, (,2017-09-18,), +, +, +, +, +, +, +,OS, +,Cross-platform, +, +, +,License, +,MIT License, +, +, +,Filename extensions, +,.coffee, .litcoffee, +, +, +,Website, +,coffeescript,.org, +, +, +,Influenced by, +, +, +,Haskell,, ,JavaScript,, ,Perl,,,[,citation needed,], ,Python,,,[1], ,Ruby,, ,YAML,[2], +, +, +,Influenced, +, +, +,MoonScript, ,LiveScript,, JavaScript, +, +, +,CoffeeScript, is a programming language that ,transcompiles, to ,JavaScript,. It adds ,syntactic sugar, inspired by ,Ruby,, ,Python, and ,Haskell, in an effort to enhance JavaScript's brevity and readability.,[3], Specific additional features include ,list comprehension, and ,pattern matching,., +,CoffeeScript support is included in ,Ruby on Rails, version 3.1,[4], and ,Play Framework,.,[5], In 2011, ,Brendan Eich, referenced CoffeeScript as an influence on his thoughts about the future of JavaScript.,[6],[7], +, +, +, +,Contents, +, +, +,1, ,History, +,2, ,Syntax, +,3, ,Examples, +, +,3.1, ,Interval test, +,3.2, ,Loops and comprehensions, +,3.3, ,Functions and jQuery, +,3.4, ,String interpolation, +, +, +,4, ,Compiling, +,5, ,Latest additions, +,6, ,Adoption, +,7, ,See also, +, +,7.1, ,Other languages that compile to JavaScript, +, +, +,8, ,References, +,9, ,Further reading, +,10, ,External links, +, +, +, +,History,[,edit,], +,On December 13, 2009, ,Jeremy Ashkenas, made the first ,Git, commit of CoffeeScript with the comment: ""initial commit of the mystery language."",[8], The compiler was written in Ruby. On December 24, he made the first tagged and documented release, 0.1.0. On February 21, 2010, he committed version 0.5, which replaced the Ruby compiler with a ,self-hosting, version in pure CoffeeScript. By that time the project had attracted several other contributors on ,GitHub,, and was receiving over 300 page hits per day., +,On December 24, 2010, Ashkenas announced the release of stable 1.0.0 to ,Hacker News,, the site where the project was announced for the first time.,[9],[10], +,Syntax,[,edit,], +,Almost everything is an expression in CoffeeScript, for example ,if,, ,switch, and ,for, expressions (which have no return value in JavaScript) return a value. As in ,Perl,, these control statements also have postfix versions; for example, ,if, can also be written after the conditional statement., +,Many unnecessary parentheses and braces can be omitted; for example, blocks of code can be denoted by indentation instead of braces, function calls are implicit, and object literals are often detected automatically., +,Examples,[,edit,], +,Interval test,[,edit,], +,To compute the ,body mass index,, one may do (here in ,JavaScript,):, +, +, +,var, ,mass, ,=, ,72,;, +,var, ,height, ,=, ,1.78,;, +,var, ,BMI, ,=, ,mass, ,/, ,Math,.,pow,(,height,,, ,2,);, +,if, ,(,18.5, ,<, ,BMI, ,&&, ,BMI, ,<, ,25,), ,alert,(,'You are healthy!',);, +, +,With CoffeeScript the interval is directly described:, +, +, +,mass = ,72, +,height = ,1.78, +,BMI = ,mass, ,/, ,height,**,2, +,alert, ,'You are healthy!', ,if, ,18.5, ,<, ,BMI, ,<, ,25, +, +,Loops and comprehensions,[,edit,], +,To compute the ,greatest common divisor, of two integers with the ,euclidean algorithm,, in JavaScript one usually needs a ,while, loop:, +, +, +,gcd, ,=, ,(,x,,, ,y,), ,=>, ,{, + ,do, ,{, + ,z, ,=, ,x, ,%, ,y, + ,x, ,=, ,y, + ,y, ,=, ,z, + ,}, ,while, ,(,y, ,!==, ,0,), + ,return, ,x, +,}, +, +,Whereas in CoffeeScript one can use ,until, and pattern-matching instead:, +, +, +,gcd = ,(x, y) ->, + ,[,x,,, ,y,], ,=, ,[,y,,, ,x,%,y,], ,until, ,y, ,is, ,0, + ,x, +, +,Any ,for, loop can be replaced by a ,list comprehension,; so that to compute the squares of the positive odd numbers smaller than ten (i.e. numbers which remainder modulo 2 is 1), one can do:, +, +, +,alert, ,n,*,n, ,for, ,n, ,in, ,[,1,..,10,], ,when, ,n,%,2, ,is, ,1, +, +,Alternatively, there is:, +, +, +,alert, ,n,*,n, ,for, ,n, ,in, ,[,1,..,10,], ,by, ,2, +, +,A ,linear search, can be implemented with a one-liner using the when keyword:, +, +, +,names = ,[,""Ivan"",,, ,""Joanna"",,, ,""Nikolay"",,, ,""Mihaela"",], +,linearSearch = ,(searchName) ->, ,alert,(,name,), ,for, ,name, ,in, ,names, ,when, ,name, ,is, ,searchName, +, +,The ,for ... in, syntax allows looping over arrays while the ,for ... of, syntax allows looping over objects., +,The ,?, keyword quickly checks if a variable is ,null, or ,undefined, :, +, +, +,personCheck = ,->, + ,if, ,not, ,person,?, ,then, ,alert,(,""No person"",), ,else, ,alert,(,""Have person"",), +,person = ,null, +,personCheck,(), +,person = ,""Ivan"", +,personCheck,(), +, +,This would alert ""No person"" if the variable is ,null, or ,undefined, and ""Have person"" if there is something there., +,Functions and jQuery,[,edit,], +,A common JavaScript snippet using the ,jQuery, library is:, +, +, +,$,(,document,).,ready,(,function,(), ,{, + ,// Initialization code goes here, +,}), +, +,Or even just:, +, +, +,$,(,function,(), ,{, + ,// Initialization code goes here, +,}), +, +,In CoffeeScript, the ,function, keyword is replaced by the ,->, symbol, and indentation is used instead of curly braces, as in other ,off-side rule, languages such as Python and Haskell. Also, parentheses can usually be omitted, using indentation level instead to denote a function or block. Thus, the CoffeeScript equivalent of the snippet above is:, +, +, +,$,(,document,).,ready, ,->, + ,# Initialization code goes here, +, +,Or just:, +, +, +,$, ,->, + ,# Initialization code goes here, +, +,String interpolation,[,edit,], +,Ruby-style string interpolation is included in CoffeeScript. Double-quoted strings allow for interpolated values, using #{ ... }, and single-quoted strings are literal.,[11], +, +, +,author = ,""Wittgenstein"", +,quote = ,""A picture is a fact. -- ,#{, ,author, ,},"", + +,sentence = ,"",#{, ,22, ,/, ,7, ,}, is a decent approximation of π"", +, +,Compiling,[,edit,], +,The CoffeeScript compiler has been ,written in CoffeeScript, since version 0.5 and is available as a ,Node.js, utility; however, the core compiler does not rely on Node.js and can be run in any ,JavaScript, environment.,[12], One alternative to the ,Node.js, utility is the ,Coffee Maven Plugin,, a plugin for the popular ,Apache Maven, build system. The plugin uses the ,Rhino, JavaScript engine written in ,Java,., +,The official site at CoffeeScript.org has a ""Try CoffeeScript"" button in the menu bar; clicking it opens a modal window in which users can enter CoffeeScript, see the JavaScript output, and run it directly in the browser. The js2coffee,[13], site provides bi-directional translation., +,Latest additions,[,edit,], +, +,Source maps allow users to de-bug their CoffeeScript code directly, supporting CoffeeScript tracebacks on run time errors., +,CoffeeScript supports a form of ,Literate Programming,, using the ,.coffee.md, or ,.litcoffee, file extension. This allows CoffeeScript source code to be written in ,Markdown,. The compiler will treat any indented blocks (Markdown's way of indicating source code) as code, and ignore the rest as comments., +, +,Adoption,[,edit,], +,On September 13, 2012, ,Dropbox, announced that their browser-side code base has been rewritten from ,JavaScript, to CoffeeScript.,[14], +,GitHub,'s internal style guide once said ""write new JS in CoffeeScript"", and while it no longer does, all the advice in the style guide references how to write good CoffeeScript,,[15], and their ,Atom text editor, is also written in the language.,[16], +,See also,[,edit,], +, +,Source-to-source compiler, +, +,Other languages that compile to JavaScript,[,edit,], +, +, +,Free software portal, +, +, +,(In chronological order, with ones listed in the ,TIOBE index, highlighted in bold.), +, +,Haxe, (2006): a language that can be transpiled to C++, Java, C#, Python, Lua, PHP, and ActionScript; as well as JavaScript., +, +, +,Nim, (2008): a statically-typed programming language with syntactical similarities to ,Python,. The same Nim code can be compiled to C/C++ (optimized ,systems programming,, server-side, etc) or to JavaScript (interpreted scripting, client-side)., +, +, +,LiveScript, (2011): an indirect descendant of CoffeeScript focusing on functional programming., +, +, +,Amber Smalltalk, (2011): an implementation of the Smalltalk-80 language that runs on the JavaScript runtime., +, +, +,Dart, (2011): a ,Google,-led general-purpose ,OOP, language with with optional typing., +, +, +,Opa, (2011): an integrated stack for developing scalable client-server Web applications., +, +, +,TypeScript, (2012): a ,Microsoft,-led strict superset of JavaScript with optional typing., +, +, +,Elm, (2012): a statically-typed purely-functional language that compiles to JavaScript., +, +,References,[,edit,], +, +, +,^, ,http://coffeescript.org/, ""CoffeeScript borrows chained comparisons from Python"", +,^, ,Heller, Martin (18 October 2011). ,""Turn up your nose at Dart and smell the CoffeeScript"",. ,JavaWorld,. InfoWorld,. Retrieved ,2012-02-09,., , +,^, ,Alex MacCaw (January 2012). ,The Little Book on CoffeScript,. ,O'Reilly Media,. ,ISBN, ,978-1-4493-2105-5,., , +,^, ,Josh Peek (April 13, 2011). ,""Tweet by Rails Core Team Member"",., , +,^, ,""AssetsCoffeeScript - 2.5.x"",. ,www.playframework.com,. Retrieved ,2016-10-31,., , +,^, ,Eich, Brendan. "",Harmony of My Dreams,"", +,^, ,Eich, Brendan. "",My JSConf.US Presentation,"", +,^, ,Github. ,'initial commit of the mystery language', +,^, ,Hacker News. ,CoffeeScript 1.0.0 announcement, posted by Jeremy Ashkenas on Dec 24, 2010, +,^, ,Hacker News. ,Original CoffeeScript announcement, posted by Jeremy Ashkenas on Dec 24, 2009, +,^, ,""Official CoffeeScript Page"",. Retrieved ,20 November, 2013,., , +,^, ,CoffeeScript, ,Archived, 2012-04-27 at the ,Wayback Machine,.. Jashkenas.github.com. Retrieved on 2013-07-21., +,^, ,Sta Cruz, Rico. ,""js2coffee"",. Retrieved ,11 May, 2014,., , +,^, ,Wheeler, Dan; Mahkovec, Ziga; Varenhorst, Chris (13 September 2012). ,""Dropbox dives into CoffeeScript"",. Retrieved ,11 May, 2013,., , +,^, ,""JavaScript · Styleguide · GitHub"",. Github.com. ,Archived, from the original on 2013-08-15,. Retrieved ,2015-11-30,., , +,^, ,Atom source code,. github.com. Retrieved on 2015-07-22., +, +, +,Further reading,[,edit,], +, +,Lee, Patrick (May 14, 2014). ""CoffeeScript in Action"" (First ed.). ,Manning Publications,: 432. ,ISBN, ,978-1617290626,., , +,Grosenbach, Geoffrey (May 12, 2011). ""Meet CoffeeScript"" (First ed.). ,PeepCode,., , +,Bates, Mark (May 31, 2012). ""Programming in CoffeeScript"" (First ed.). ,Addison-Wesley,: 350. ,ISBN, ,0-321-82010-X,., , +,MacCaw, Alex (January 31, 2012). ""The Little Book on CoffeeScript"" (First ed.). ,O'Reilly Media,: 62. ,ISBN, ,978-1449321055,., , +,Burnham, Trevor (August 3, 2011). ""CoffeeScript: Accelerated JavaScript Development"" (First ed.). ,Pragmatic Bookshelf,: 138. ,ISBN, ,978-1934356784,., , +, +,External links,[,edit,], +, +,Official website, +, +, +, +, +, +, +, +,v, +,t, +,e, +, +, +,Programming languages, +, +, +, +, +, +, +,Comparison, +,Timeline, +,History, +, +, +, +, +, +, +, +, +,Assembly, +,BASIC, +,C, +,C++, +,C#, +,COBOL, +,Fortran, +,Go, +,Groovy, +,Haskell, +,Java, +,JavaScript, (JS), +,Kotlin, +,Lisp, +,Lua, +,Objective-C, +,Pascal, +,Perl, +,PHP, +,Python, +,Rexx, +,Ruby, +,Shell, +,Smalltalk, +,Swift, +,Visual Basic .NET, (VB.NET), +,VBScript, +,more..., +, +, +, +, +, +, +, +, +, ,Category, +, ,Lists, +, +,Alphabetical, +,Categorical, +,Generational, +,Non-English-based, +, +, +, +, +, +, +, +, +, +, +, +, +, +, +,v, +,t, +,e, +, +, +,JavaScript, +, +, +, +,Code analysis, +, +, +, +,JSHint, +,JSLint, +, +, +, +, +, +,Transcompilers, +, +, +, +,CoffeeScript, +,Dart, +,Emscripten, +,Google Closure Compiler, +,Google Web Toolkit, +,Morfik, +,TypeScript, +,AtScript, +,Opa, +,Haxe, +,ClojureScript, +, +, +, +, +, +,Concepts, +, +, +, +,Ajax, +,Client-side, +,Dynamic HTML, +,JavaScript library, +,JavaScript syntax, +,Unobtrusive JavaScript, +, +, +, +, +, +,Debuggers, +, +, +, +,Firebug, +,Komodo IDE, +,Microsoft Script Debugger, +,Microsoft Script Editor, +,Opera Dragonfly, +,Venkman, +,Web Inspector, +, +, +, +, +, +,Doc generators, +, +, +, +,JSDoc, +, +, +, +, +, +,Editors (,comparison,), +, +, +, +,Ace, +, +,Cloud9 IDE, +, +, +,Atom, +,CodeMirror, +, +,Light Table, +,Brackets, +, +, +,Koding, +,Orion, +,Visual Studio, +, +,Visual Studio Express, +, +, +,Visual Studio Code, +,Visual Studio Team Services, +, +, +, +, +, +,Engines, +, +, +, +,Comparison of layout engines, +,List of ECMAScript engines, +,List of JavaScript engines, +, +, +, +, +, +,Frameworks, +, +, +, +,Comparison of JavaScript frameworks, +,List of JavaScript libraries, +, +, +, +, +, +,Related ,technologies, +, +, +, +,Cascading Style Sheets, +,Document Object Model, +,HTML, +,JSON, +,WebAssembly, +, +, +, +, +, +,Package managers, +, +, +, +,npm, +,NuGet, +, +, +, +, +, +,Server-side, +, +, +, +,Active Server Pages, +,CommonJS, +,JSGI, +,Node.js, +,Wakanda, +, +, +, +, +, +,Unit testing, +, +, +, +,Jasmine, +,Mocha, +,QUnit, +,List of JavaScript unit testing frameworks, +, +, +, +, +, +,People, +, +, +, +,Douglas Crockford, +,Brendan Eich, +,John Resig, +, +, +, +, +, +, +, +, +, +, +, +, +,v, +,t, +,e, +, +, +,Node.js, +, +, +, +,Platform, +, +, +, +,Node.js, +,NPM, +,V8, +,CommonJS, +, +, +, +, +, +, +, +, +,Frameworks, +, +, +, +,MEAN, +, +,MongoDB, +,Express.js, +,AngularJS,/,Angular, +, +, +,MEEN (substituted with ,Ember.js,), +,Backbone.js, +,Meteor, +, +, +, +, +, +,Libraries, +, +, +, +,Lodash, +,Underscore.js, +,React.js, +, +, +, +, +, +,Languages, +, +, +, +,JavaScript, +,CoffeeScript, +,TypeScript, +, +, +, +, +, +,Hosts, +, +, +, +,Joyent, +,Nodejitsu, +,OpenShift, +,Linode, +,DigitalOcean, +, +, +, +, +, +, + + +, +, +, +, +",CoffeeScript +" 25 November 2017, at 19:53."," +,IBM i, +, +, +, +, +,Developer, +,IBM, +, +, +,Working state, +,Current, +, +, +,Source model, +,Closed source, +, +, +,Initial release, +,1988, +, +, +,Latest release, +,7.3 / April 15, 2016,; 20 months ago, (,2016-04-15,), +, +, +,Marketing target, +,Minicomputer and enterprise server, +, +, +,Available in, +,English, +, +, +,Kernel, type, +,shares many ,Microkernel, (SLIC) and ,Virtual machine, (TIMI) design philosophies, +, +, +,License, +,Proprietary, +, +, +,Official website, +,IBM i, +, +, +, +, +, +, +The logo for i5/OS, +, +, +,IBM i, is an ,operating system, that runs on ,IBM Power Systems, and on IBM ,PureSystems,. It was named ,OS/400, when it was introduced with the ,AS/400, line of computer systems in 1988, was later renamed to ,i5/OS,, and was renamed to IBM i in 2008 when the IBM Power Systems were introduced., +,It is one of the operating systems supported on IBM Power Systems alongside ,AIX, and ,Linux, as well as on IBM PureSystems alongside AIX, Linux and ,Windows,., +, +, +, +,Contents, +, +, +,1, ,History, +,2, ,Features, +, +,2.1, ,PASE, +, +, +,3, ,Version, +,4, ,See also, +,5, ,User groups, +,6, ,References, +,7, ,External links, +, +, +, +,History,[,edit,], +,The early ,IBM System/36, and ,IBM System/38, series customers were a key target of the AS/400, so OS/400 (and its descendants i5/OS and IBM i), have built-in subsystems that provide backward compatibility with these earlier IBM general business systems. IBM i programs, like System/38 programs before them, contain both processor-independent ""virtual"" binary code and processor-dependent executable binary code. Compilers for IBM i produce the processor-independent code as their output; the operating system automatically translates the processor-independent code into the processor-dependent code as needed, without the need for source code or attention by IT personnel. Notably, when migrating from a legacy processor, the only effect that most organizations notice is that the program runs somewhat longer when it runs for the first time on the new computer. Migration consists of taking a backup from the old computer, and restoring it on the new.,[1], +,Features,[,edit,], +,IBM designed IBM i as a "",turnkey,"" operating system, requiring little or no on-site attention from IT staff during normal operation. For example, IBM i has a built-in ,DB2, database which does not require separate installation. Disks are multiply redundant, and can be replaced on line without interrupting work. Hardware and software maintenance tasks are integrated. System administration has been ,wizard,-driven for years, even before that term was defined. This automatic self-care policy goes so far as to automatically schedule all common system maintenance, detect many failures and even order spare parts and service automatically. Organizations using i sometimes have ,sticker shock, when confronting the cost of system maintenance on other systems.,[1], +,Another peculiar feature is that this system was one of the earliest to be ,object-based,. Unlike traditional OSes like UNIX and Windows NT there are no files, only objects of different types. It implemented one of the earliest-known systems for persistent objects. Further, the objects persist in very large, flat virtual memory, called a ,single-level store,.,[1], +,The IBM i Access licensed product includes ,iSeries Navigator,, a client-based and web-based graphical tool for administration of the system, database, ,Apache web server,, and ,WebSphere Application Server,. IBM Systems Director Navigator for i now can be used to manage target servers running IBM i 5.4, 6.1 or 7.1 from a single browser environment with the IBM i 7.1., +,In 1999, IBM introduced ,logical partitioning (LPARs), with i5/OS to support multiple virtual systems on a single hardware footprint., +,In 2007, IBM and ,MySQL AB, ,announced a joint technology and reseller agreement, to bring support for the ,MySQL, open source database and ,DB2 for i as a certified MySQL storage engine, to the IBM i platform, which was ,later in 2011 dropped, by ,MySQL AB,., +,In 2011, IBM and ,Zend Technologies, announced ,Zend DBi, as replacement for the ,MySQL on IBM i support, with a first ,General availability release, in 2012., +,In 2013, IBM and ,PowerRuby Inc., announced ,PowerRuby, as a commercially supported port of the ,Ruby programming language, and the ,Ruby on Rails, ,Web application framework, for IBM i. ,PowerRuby, will be offered as a free download to be installed on customer machines., +,In 2014, IBM ported ,Node.js, to IBM i.,[2], +,PASE,[,edit,], +,IBM i also provides an environment for ,AIX, applications to run natively on the OS without the need for an AIX LPAR.,[3], +,AIX programs are binary compatible with IBM i when using its PASE (Portable Applications System Environment). PASE is essentially ""an operating system within an operating system"", supporting the most recent stable version of AIX. Most AIX 5L compatible binaries may be executed without modification or recompilation in the PASE environment. Exceptions to this are programs that contain direct calls to AIX kernel based APIs as there is no AIX kernel in PASE. If necessary an AIX program may be built directly in PASE using a standard AIX XL C/C++ compiler, for example if native APIs are to be used. In that case APIs are provided to translate between the AIX style pointers and the native 16 byte pointers. Support is provided for running both 32-bit and 64-bit AIX executables., +,Version,[,edit,], +,When IBM announced the new Power Systems line of servers on April 2, 2008, they renamed the operating system from i5/OS to IBM i,[4], and changed the version identifier format from VxRxMx (Version, Release, Modification, e.g. V6R1M0) to the more standard format (e.g. 6.1)., +,The latest version of IBM i is 7.3, announced on April 12, 2016 and released on April 15, 2016 (,Version Support Schedule,)., +,With 7.1, IBM started delivering new updates to the operating system via Technology Refreshes, where number 10 was released in May 2015., +,Version 7.2 was released in May 2014.,[5], +,Version 7.3 was released in April 2016.,[6], +,See also,[,edit,], +, +,Auxiliary storage pool, +,Multics, for a considerably earlier system which provided persistent objects, +, +,User groups,[,edit,], +,User groups have played a major part in the evolution of the IBM i. The largest such group is ,COMMON,.,[7], The Large User Group (LUG),,[8], whose membership consists of major corporations, is a major influence for current and future development of IBM i. The ,Young i Professionals, (YIPS),[9], is another group that has been significant in influencing the direction of the IBM i., +,References,[,edit,], +, +, +,^ ,a, ,b, ,c, ,Soltis, Frank, ""Inside the AS/400""; Frank Soltis was the AS/400 system architect., +,^, ,""Node.js"",. ,IBM i Technology Updates - Open Source Technologies,., , +,^, ,""IBM PASE for i"",. ,IBM,., , +,^, ,IBM Introduces the First in a New Generation of Power Systems, +,^, ,""Planned Availability Date"",. ,IBM i 7.2 TR3 and IBM i 7.1 TR11 offer performance, usability, and integration enhancements,., , +,^, ,""IBM i 7.3"",. ,IBM i 7.3 can deliver significant client value for database and security, and support for industry-leading workloads like analytics and mobile computing,., , +,^, ,""COMMON"",. COMMON,. Retrieved ,2013-11-13,., , +,^, ,""LUG"",. LUG,. Retrieved ,2017-02-09,., , +,^, ,""Young i Professionals (YIPS)"",. YIPS,. Retrieved ,2013-11-13,., , +, +, +,External links,[,edit,], +, +,IBM i, at ,ibm.com, +,IBM Systems IBM i Magazine, +,IBM developerWorks: Articles, tutorials, and technical resources for IBM i users, +,IBM i Wiki: A collaborative environment for the sharing of technical information related to IBM i, +,IBM developerWorks Article: New to IBM i, +,OS/400 commands, +,OS/400 CL (Control Language), +, +, +, +, +, +, +, +,v, +,t, +,e, +, +, +,Operating systems, by ,IBM, +, +, +, +,Desktop / Workstation, +, +, +, +,OS/2, +,PC DOS, +,AOS, +,AIX, +, +, +, +, +, +,Server / Mainframe, +, +, +, +,IBSYS, +,BOS/360, +,TOS/360, +,TSS/360, +,DOS/360 and successors, +, +,VSE, +, +, +,OS/360 and successors, +, +,OS/VS1, +,SVS, +,MVS, +,OS/390, +,z/OS, +, +, +,VM line, +,ACP, +,TPF, +,CPF, +,IBM i, +,AIX, +,zLinux, +,DPCX, +,DPPX, +,SSP, +,SRTOS, +, +, +, +, +, +,Point of Sale, +, +, +, +,4680 OS, +,4690 OS, +, +, +, +, +, +,Projects, +, +, +, +,Taligent, +,Workplace OS, +,Project Monterey, +,Project Trillian, +,K42, +, +, +, +, +, +, + + +, +, +, +, +",IBM i +" 16 July 2017, at 19:28."," +, +, +, +, +, +,The topic of this article ,may not meet Wikipedia's ,notability guidelines for products and services,. ,Please help to establish notability by citing ,reliable secondary sources, that are ,independent, of the topic and provide significant coverage of it beyond its mere trivial mention. If notability cannot be established, the article is likely to be ,merged,, ,redirected,, or ,deleted,., +,Find sources:, ,""Mod ruby"", – ,news, ,·, ,newspapers, ,·, ,books, ,·, ,scholar, ,·, ,JSTOR, ,(August 2014), ,(,Learn how and when to remove this template message,), +, +, +, +, +, +, +, +, +, +,This article ,may rely excessively on sources too closely associated with the subject,, potentially preventing the article from being ,verifiable, and ,neutral,. ,Please help ,improve it, by replacing them with more appropriate ,citations, to ,reliable, independent, third-party sources,., ,(August 2014), ,(,Learn how and when to remove this template message,), +, +, +, +, +,mod_ruby, +, +, +, +, +,Stable release, +, +,1.3.0 / November 8, 2008,; 9 years ago, (,2008-11-08,), +, +, +, +, +, +, +,Repository, +, +, +, +,https://github.com/shugo/mod_ruby, +, +, +, +, +, +,Website, +,www,.modruby,.net, +, +, +,mod_ruby, is a module that ,embeds, the ,Ruby, ,interpreter, into the ,Apache web server, to allow Ruby code to execute natively, faster than other ,CGI, methods. Its drawback is that the characteristic sharing of classes among Apache processes is not safe for multiple applications,[1], (e.g., multiple ,Ruby on Rails, applications running simultaneously)., +,There is also the similar ,mod_mruby, for ,mruby,, a lightweight Ruby implementation., +,As of at least 2015, the project seems to no longer be under active development., +,See also,[,edit,], +, +,Phusion Passenger (mod_rails/mod_rack), +,mod_perl, +,mod_php, +,mod_python, +,mod_wsgi, +, +,Notes,[,edit,], +, +, +, +,^, ,[,dead link,],mod_ruby Wiki,, explaining the security problem of mod_ruby., +, +, +, +,External links,[,edit,], +, +,mod_ruby project, +,No True “mod_ruby” Is Damaging Ruby’s Viability On The Web, +, +, +, +, +, +, +, +,v, +,t, +,e, +, +, +,Web interfaces, +, +, +, +,Server-side, +, +, +, +, +,Protocols, +, +, +, +,HTTP, +,CGI, +,SCGI, +,FCGI, +,AJP, +,WSRP, +,WebSocket, +, +, +, +, +, +,Server APIs, +, +, +, +,C NSAPI, +,C ASAPI, +,C ISAPI, +,COM ASP, +,Java servlet, +, +,container, +, +, +,CLI OWIN, +,ASP.NET Handler, +,Python WSGI, +,Ruby Rack, +,JavaScript JSGI, +,Perl PSGI, +,Lua WSAPI, +,Portlet, +, +,container, +, +, +, +, +, +, +, +,Apache modules, +, +, +, +,mod_jk, +,mod_lisp, +,mod_mono, +,mod_parrot, +,mod_perl, +,mod_php, +,mod_proxy, +,mod_python, +,mod_wsgi, +,mod_ruby, +,Phusion Passenger, +, +, +, +, +, +,Topics, +, +, +, +,Web resource, vs. ,Web service, +,Open API, +,Webhook, +,Application server, +, +,comparison, +, +, +,Scripting, +, +, +, +, +, +, +, +, +,Client-side, +, +, +, +, +,Browser APIs, +, +, +, +,C NPAPI, +, +,LiveConnect, +,XPConnect, +, +, +,C NPRuntime, +,C PPAPI, +, +,NaCl, +, +, +,ActiveX, +,BHO, +,XBAP, +,WebAssembly, +, +, +, +, +, +,Web APIs, +, +, +, +, +,W3C, +, +, +, +,Audio, +,Canvas, +,CORS, +,DOM, +,DOM events, +,EME, +,File, +,Geolocation, +,IndexedDB, +,MSE, +,SSE, +,SVG, +,Video, +,WebRTC, +,WebSocket, +,Web messaging, +,Web storage, +,Web worker, +,XMLHttpRequest, +, +, +, +, +, +,Khronos, +, +, +, +,WebCL, +,WebGL, +, +, +, +, +, +,Others, +, +, +, +,Gears, +,Web SQL Database, (formerly W3C), +, +, +, +, +, +, +, +, +,Topics, +, +, +, +,Ajax, vs. ,DHTML, +,Mashup, +,Web IDL, +,Scripting, +, +, +, +, +, +, +, +, +,Topics, +, +, +, +,Dynamic web page, +,Open Web Platform, +,Rich Internet application, +,Web application, +, +, +, +, +, +, +, +, +, +, +, +, +,v, +,t, +,e, +, +, +,Ruby programming language, +, +, +, +,Implementations, +, +, +, +, +,Active, +, +, +, +,Ruby MRI, / ,YARV, +,mruby, +,JRuby, +,Rubinius, +,MagLev, +,RubyMotion, +, +, +, +, +, +,Discontinued, +, +, +, +,MacRuby, +,IronRuby, +,XRuby, +,RubyJS, +,HotRuby, +, +, +, +, +, +, +, +, +, +, +, +,IDE, +, +, +, +,Komodo, +,NetBeans, +,RadRails, +,RubyMine, +, +, +, +, +, +,Applications, +, +, +, +,Capistrano, +,Chef, +,Hackety Hack, +,Homebrew, +,Interactive Ruby Shell, +,Pry, +,Puppet, +,Rake, +,Redmine, +,RSpec, +,RubyGems, +,RVM, +, +, +, +, +, +,Libraries and frameworks, +, +, +, +,Adhearsion, +,Camping, +,eRuby, (RHTML), +,Merb, +,Padrino, +,RubyCocoa, +,Ruby on Rails, +,Shoes, +,Sinatra, +,QtRuby, +, +, +, +, +, +,Server software, +, +, +, +,mod_ruby, +,Mongrel, +,Phusion Passenger, (mod_rails/mod_rack), +,Rack, +,WEBrick, +, +, +, +, +, +,People, +, +, +, +,Yukihiro Matsumoto, +,David Heinemeier Hansson, +,why the lucky stiff, +, +, +, +, +, +,Other, +, +, +, +,Document format, +,why's (poignant) Guide to Ruby, +,Ruby Central, +,RubyKaigi, +,RubyForge, +,Ruby License, +, +, +, +, +, +, +, +, +, ,Category, +, ,Commons, +, +, +, +, +, +, +, +, +, +,This ,programming-language,-related article is a ,stub,. You can help Wikipedia by ,expanding it,., +, +, +,v, +,t, +,e, +, +, +, +, +, + + +, +, +, +, +",mod_ruby +" 15 December 2017, at 10:41.","""FCGI"" redirects here. FCGI may also refer to a fellow of the ,City and Guilds of London Institute,., +, +, +, +, +, +, +,This article includes a ,list of references,, but ,its sources remain unclear, because it has ,insufficient ,inline citations,. ,Please help to ,improve, this article by ,introducing, more precise citations., ,(June 2010), ,(,Learn how and when to remove this template message,), +, +, +, +,FastCGI, is a ,binary protocol, for interfacing interactive programs with a ,web server,. FastCGI is a variation on the earlier ,Common Gateway Interface, (CGI); FastCGI's main aim is to reduce the overhead associated with interfacing the web server and ,CGI, programs, allowing a server to handle more web page requests at once., +, +, +, +,Contents, +, +, +,1, ,History, +,2, ,Implementation details, +,3, ,Web Servers that implement FastCGI, +,4, ,Language bindings for the FastCGI API, +,5, ,References, +,6, ,External links, +, +, +, +,History,[,edit,], +,CGI is a protocol for interfacing external applications to web servers. CGI applications run in separate ,processes,, which are created at the start of each request and torn down at the end. This ""one new process per request"" model makes CGI programs very simple to implement, but limits efficiency and scalability. At high loads, the operating system process creation and destruction overhead becomes significant. In addition, the CGI process model limits resource reuse techniques (such as reusing database connections, in-memory caching, etc.)., +,To address the scalability shortcomings of CGI, ,Open Market, developed FastCGI and first introduced it in their webserver product in the mid-1990s. Open Market originally developed FastCGI in part as a competitive response to ,Netscape's, proprietary, in-process API (,NSAPI,) for developing Web applications., +,Although initially developed by ,Open Market,, FastCGI was implemented by a number of other webserver makers. The FastCGI approach, however, competed against other techniques which also aimed to speed and simplify server-subprogram communications. ,Apache, modules such as ,mod_perl, and ,mod_php, appeared around the same time, and they also quickly gained popularity. Today, all of these various approaches (including CGI) remain in common use., +,Implementation details,[,edit,], +,Instead of creating a new process for each request, FastCGI uses persistent processes to handle a series of requests. These processes are owned by the FastCGI server, not the web server. ,[1], +,To service an incoming request, the web server sends ,environment information, and the page request itself to a FastCGI process over either a ,Unix domain socket,, a ,named pipe, or a ,TCP connection,. Responses are returned from the process to the web server over the same connection, and the web server subsequently delivers that response to the end-user. The connection may be closed at the end of a response, but both the web server and the FastCGI service processes persist.,[2], +,Each individual FastCGI process can handle many requests over its lifetime, thereby avoiding the overhead of per-request process creation and termination. Processing of multiple requests simultaneously can be achieved in several ways: by using a single connection with internal multiplexing (i.e. multiple requests over a single connection); by using multiple connections; or by a combination of these techniques. Multiple FastCGI servers can be configured, increasing stability and scalability., +,Web site administrators and programmers can find that the separation of web applications from the web server in FastCGI has many advantages over embedded interpreters (,mod_perl,, ,mod_php,, etc.). This separation allows server and application processes to be restarted independently – an important consideration for busy web sites. It also enables the implementation of per-application / hosting service security policies, which is an important requirement for ISPs and web hosting companies.,[3], Different types of incoming requests can be distributed to specific FastCGI servers which have been equipped to handle those particular types of requests efficiently., +,Web Servers that implement FastCGI,[,edit,], +,See also: ,Comparison of web server software § Features, +, +,Note: unless stated, completeness of FastCGI implementation is unknown, +, +, +,Apache HTTP Server, ,(partial), +, +,Implemented by ,mod_fcgid,. This module used to be third-party, but was granted to the ,ASF, as an Apache HTTP Server subproject in 2009, shepherded by Chris Darroch.,[4], It only supports ,UNIX sockets,, no TCP sockets.,[5], +,A third-party module ,mod_fastcgi, is also being used. For a while, this module no longer compiled properly under Apache 2.4.x,,[6], although that problem has been solved with a fork of the original project.,[7], +,Multiplexing of requests through a single connection is prohibited by Apache 1.x design,,[8], so this isn't supported, +,In Apache 2.4, ,mod_proxy_fcgi, was added, supporting TCP FastCGI servers., +, +, +,Caddy ,[9], +,Cherokee,[10], +,Hiawatha,[11], +, +,Loadbalancing FastCGI support, +,Supports chrooted FastCGI servers, +, +, +,Jetty,[12], +,Kerio WebSTAR, +,Lighttpd,[13], +,LiteSpeed Web Server, +,Microsoft IIS,[14], +,Nginx, +,NaviServer, +,Oracle iPlanet Web Server, +,OpenBSD,'s ,httpd(8),[15], +,Open Market Web Server, +,Resin Application Server, +,Roxen Web Server, +,ShimmerCat web server,.,[16], +,Zeus Web Server, +, +,Language bindings for the FastCGI API,[,edit,], +,FastCGI can be implemented in any language that supports ,network sockets,. (Since ""FastCGI is a protocol, not an implementation,"" it is not tightly bound to any language at all.) ,APIs, exist,[17], for:, +, +,Ada,[18], +,Borland Delphi,/,Lazarus, ,FreePascal,[19], +,C, / ,C++, +,Chicken Scheme, +,Common Lisp,[20], +,D programming language, +,Eiffel,[21], +,Erlang (programming language), +,Go, +,Guile Scheme, +,Haskell, +,HP BASIC for OpenVMS, +,Java,[22],[12], +,Lua, +,node.js,[23], +,OCaml, +,Perl,[24], +,PHP, (via php-fpm, or ,HipHop for PHP,[25],), +,Python, +,REALbasic (REAL Studio),[26], +,Ruby, +,Rust,[27], +,SmallEiffel, +,Smalltalk,: ,FasTalk, and ,Dolphin Smalltalk, +,Tcl, +,WebDNA, +,Vala, (via C bindings), +, +,Recent frameworks such as ,Ruby on Rails,, ,Catalyst,, ,Django,, ,Kepler, and ,Plack, allow use with either the embedded interpreters (,mod_ruby,, ,mod_perl,, ,mod_python, or ,mod_lua,, for example), or FastCGI., +,References,[,edit,], +, +, +,^, ,""FastCGI Specification"",. Open Market, Inc. 1996. Archived from ,the original, on 19 January 2016., , +,^, ,""FastCGI:A High-Performance Web Server Interface"",. Open Market, Inc. 1996. Archived from ,the original, on 1 October 2010., , +,^, ,Paul Heinlein (1 November 1998). ,""FastCGI: Persistent Applications for Your Web Server"",. Linux Journal,. Retrieved ,4 October, 2010,., , +,^, ,FastCGI apache module mod_fcgid, +,^, ,Debian bug #450748: Please add support for TCP/IP FastCGI servers, +,^, ,Issues with Apache 2.4 and PHP-FPM, +,^, ,libapache-mod-fastcgi on Github, +,^, ,FastCGI – The Forgotten Treasure/ Section 2.3., +,^, ,Caddy User Guide – FastCGI, +,^, ,FastCGI for Cherokee, +,^, ,FastCGI HOWTO for Hiawatha, +,^ ,a, ,b, ,FastCGI Support in Jetty, +,^, ,FastCGI for Lighttpd, +,^, ,""FastCGI Extension for IIS6.0 - RTM"",. ,FastCGI for IIS,. Microsoft. 2008-02-28,. Retrieved ,2008-02-29,., , +,^, ,OpenBSD's httpd(8) initial commit, +,^, ,[1], +,^, ,Application Libraries / Development Kits, +,^, ,Matreshka, +,^, ,ExtPascal, +,^, ,How to use FastCGI from Common Lisp, +,^, ,Goanna Eiffel, +,^, ,jFastCGI, a Java Servlet implementing FastCGI protocol, +,^, ,node-fastcgi npm package, +,^, ,There are a number of FastCGI modules for Perl: ,FCGI, (a compiled module written in C), ,FCGI::Async, (for asynchronous FastCGI applications), ,AnyEvent::FCGI, (for ,AnyEvent,-based applications), ,FCGI::EV, (for ,EV,-based applications), ,CGI::Fast, (Perl ,CGI,-like interface for FastCGI), ,FCGI::Client, (a FastCGI client library), and ,Net::FastCGI, (constants and functions to build and parse FastCGI messages)., +,^, ,FasterCGI with HHVM, +,^, ,REAL Studio Web Edition, builds web apps called via FastCGI, ,Archived, 2011-02-08 at the ,Wayback Machine,., +,^, ,[2], +, +, +,External links,[,edit,], +, +,FastCGI specification, (site backup) +, +,Secondary backup, +, +, +,FastCGI Web Site fork, +,mod_fastcgi – FastCGI module fork for Apache 1.x and 2.x supporting external applications, +,mod_fcgid - a FastCGI module for Apache 2.x, +,Microsoft FastCGI, +,Apache v2.x mod_proxy FastCGI Module, +, +, +, +, +, +, +, +,v, +,t, +,e, +, +, +,Web interfaces, +, +, +, +,Server-side, +, +, +, +, +,Protocols, +, +, +, +,HTTP, +,CGI, +,SCGI, +,FCGI, +,AJP, +,WSRP, +,WebSocket, +, +, +, +, +, +,Server APIs, +, +, +, +,C NSAPI, +,C ASAPI, +,C ISAPI, +,COM ASP, +,Java servlet, +, +,container, +, +, +,CLI OWIN, +,ASP.NET Handler, +,Python WSGI, +,Ruby Rack, +,JavaScript JSGI, +,Perl PSGI, +,Lua WSAPI, +,Portlet, +, +,container, +, +, +, +, +, +, +, +,Apache modules, +, +, +, +,mod_jk, +,mod_lisp, +,mod_mono, +,mod_parrot, +,mod_perl, +,mod_php, +,mod_proxy, +,mod_python, +,mod_wsgi, +,mod_ruby, +,Phusion Passenger, +, +, +, +, +, +,Topics, +, +, +, +,Web resource, vs. ,Web service, +,Open API, +,Webhook, +,Application server, +, +,comparison, +, +, +,Scripting, +, +, +, +, +, +, +, +, +,Client-side, +, +, +, +, +,Browser APIs, +, +, +, +,C NPAPI, +, +,LiveConnect, +,XPConnect, +, +, +,C NPRuntime, +,C PPAPI, +, +,NaCl, +, +, +,ActiveX, +,BHO, +,XBAP, +,WebAssembly, +, +, +, +, +, +,Web APIs, +, +, +, +, +,W3C, +, +, +, +,Audio, +,Canvas, +,CORS, +,DOM, +,DOM events, +,EME, +,File, +,Geolocation, +,IndexedDB, +,MSE, +,SSE, +,SVG, +,Video, +,WebRTC, +,WebSocket, +,Web messaging, +,Web storage, +,Web worker, +,XMLHttpRequest, +, +, +, +, +, +,Khronos, +, +, +, +,WebCL, +,WebGL, +, +, +, +, +, +,Others, +, +, +, +,Gears, +,Web SQL Database, (formerly W3C), +, +, +, +, +, +, +, +, +,Topics, +, +, +, +,Ajax, vs. ,DHTML, +,Mashup, +,Web IDL, +,Scripting, +, +, +, +, +, +, +, +, +,Topics, +, +, +, +,Dynamic web page, +,Open Web Platform, +,Rich Internet application, +,Web application, +, +, +, +, +, +, + + +, +, +, +, +",FastCGI +" 11 January 2018, at 15:30.","This article is about the software interface between a web server and programs. For other uses, see ,CGI (disambiguation),., +,In ,computing,, ,Common Gateway Interface, (,CGI,) offers a standard ,protocol, for ,web servers, to execute programs that execute like ,Console applications, (also called ,Command-line interface programs,) running on a ,server, that ,generates web pages dynamically,. Such programs are known as ,CGI scripts, or simply as ,CGIs,. The specifics of how the script is executed by the server are determined by the server. In the common case, a CGI script executes at the time a request is made and generates HTML.,[1], In brief, the CGI program receives HTTP forms data via Unix/Linux standard input, and most other data (such as URL paths, URL arguments, and HTTP header data) via well-known Unix/Linux process environment variables., +, +, +, +,Contents, +, +, +,1, ,History, +,2, ,Purpose of the CGI standard, +,3, ,Using CGI scripts, +,4, ,Example, +,5, ,Deployment, +,6, ,Uses, +,7, ,Alternatives, +,8, ,See also, +,9, ,References, +,10, ,External links, +, +, +, +,History,[,edit,], +, +, +, +, +The official CGI logo from the spec announcement, +, +, +,In 1993 the ,National Center for Supercomputing Applications, (NCSA) team wrote the specification for calling command line executables on the www-talk mailing list.,[2],[3],[4], The other Web server developers adopted it, and it has been a standard for Web servers ever since. A work group chaired by ,Ken Coar, started in November 1997 to get the NCSA definition of CGI more formally defined.,[5], This work resulted in ,RFC 3875,, which specified CGI Version 1.1. Specifically mentioned in the RFC are the following contributors:,[6], +, +,Rob McCool, (author of the ,NCSA HTTPd, ,Web Server,), +,John Franks (author of the GN Web Server), +,Ari Luotonen, (the developer of the ,CERN httpd, Web Server), +,Tony Sanders (author of the Plexus Web Server), +,George Phillips (Web server maintainer at the ,University of British Columbia,), +, +,Historically CGI scripts were often written using the C language. ,RFC 3875, ""The Common Gateway Interface (CGI)"" partially defines CGI using C,,[7], as in saying that environment variables ""are accessed by the C library routine getenv() or variable environ""., +,Purpose of the CGI standard,[,edit,], +,Each ,web server, runs ,HTTP, server software, which responds to requests from ,web browsers,. Generally, the HTTP server has a ,directory (folder),, which is designated as a document collection — files that can be sent to Web browsers connected to this server.,[8], For example, if the Web server has the domain name ,example.com,, and its document collection is stored at ,/usr/local/apache/htdocs, in the local file system, then the Web server will respond to a request for ,http://example.com/index.html, by sending to the browser the (pre-written) file ,/usr/local/apache/htdocs/index.html,., +,For pages constructed on the fly, the server software may defer requests to separate programs and relay the results to the requesting client (usually, a web browser that displays the page to the end user). In the early days of the web, such programs were usually small and written in a scripting language; hence, they were known as ,scripts,., +,Such programs usually require some additional information to be specified with the request. For instance, if Wikipedia were implemented as a script, one thing the script would need to know is whether the user is logged in and, if logged in, under which name. The content at the top of a Wikipedia page depends on this information., +,HTTP provides ways for browsers to pass such information to the web server, e.g. as part of the URL. The server software must then pass this information through to the script somehow., +,Conversely, upon returning, the script must provide all the information required by HTTP for a response to the request: the HTTP status of the request, the document content (if available), the document type (e.g. HTML, PDF, or plain text), etcetera., +,Initially, different server software would use different ways to exchange this information with scripts. As a result, it wasn't possible to write scripts that would work unmodified for different server software, even though the information being exchanged was the same. Therefore, it was decided to establish a standard way for exchanging this information: CGI (the ,Common Gateway Interface,, as it defines a common way for server software to interface with scripts). Webpage generating programs invoked by server software that operate according to the CGI standard are known as ,CGI scripts,., +,This standard was quickly adopted and is still supported by all well-known server software, such as ,Apache,, ,IIS,, and (with an extension) ,node.js,-based servers., +,An early use of CGI scripts was to process forms. In the beginning of HTML, HTML forms typically had an ""action"" attribute and a button designated as the ""submit"" button. When the submit button is pushed the URI specified in the ""action"" attribute would be sent to the server with the data from the form sent as a query string. If the ""action"" specifies a CGI script then the CGI script would be executed and it then produces a HTML page., +,Using CGI scripts,[,edit,], +,A web server allows its owner to configure which URLs shall be handled by which CGI scripts., +,This is usually done by marking a directory within the document collection as containing CGI scripts — its name is often ,cgi-bin,. For example, ,/usr/local/apache/htdocs/cgi-bin, could be designated as a CGI directory on the web server. When a Web browser requests a URL that points to a file within the CGI directory (e.g., ,http://example.com/cgi-bin/printenv.pl/with/additional/path?and=a&query=string,), then, instead of simply sending that file (,/usr/local/apache/htdocs/cgi-bin/printenv.pl,) to the Web browser, the HTTP server runs the specified script and passes the output of the script to the Web browser. That is, anything that the script sends to ,standard output, is passed to the Web client instead of being shown on-screen in a terminal window., +,As remarked above, the CGI standard defines how additional information passed with the request is passed to the script. For instance, if a slash and additional directory name(s) are appended to the URL immediately after the name of the script (in this example, ,/with/additional/path,), then that path is stored in the ,PATH_INFO, ,environment variable, before the script is called. If parameters are sent to the script via an ,HTTP GET, request (a question mark appended to the URL, followed by param=value pairs; in the example, ,?and=a&query=string,), then those parameters are stored in the ,QUERY_STRING, environment variable before the script is called. If parameters are sent to the script via an ,HTTP POST, request, they are passed to the script's ,standard input,. The script can then read these environment variables or data from standard input and adapt to the Web browser's request.,[9], +,Example,[,edit,], +,The following ,Perl, program shows all the environment variables passed by the Web server:, +, +, +,#!/usr/bin/perl, + +,=head1 DESCRIPTION, + +,printenv — a CGI program that just prints its environment, + +,=cut, +,print, ,""Content-type: text/plain\n\n"",;, + +,for, ,my, ,$var, ,(, ,sort, ,keys, ,%ENV, ,), ,{, + ,printf, ,""%s = \""%s\""\n"",,, ,$var,,, ,$ENV,{,$var,};, +,}, +, +,If a Web browser issues a request for the environment variables at ,http://example.com/cgi-bin/printenv.pl/foo/bar?var1=value1&var2=with%20percent%20encoding,, a 64-bit ,Microsoft Windows, web server running ,cygwin, returns the following information:, +, +COMSPEC=""C:\Windows\system32\cmd.exe"" +DOCUMENT_ROOT=""C:/Program Files (x86)/Apache Software Foundation/Apache2.2/htdocs"" +GATEWAY_INTERFACE=""CGI/1.1"" +HOME=""/home/SYSTEM"" +HTTP_ACCEPT=""text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8"" +HTTP_ACCEPT_CHARSET=""ISO-8859-1,utf-8;q=0.7,*;q=0.7"" +HTTP_ACCEPT_ENCODING=""gzip, deflate"" +HTTP_ACCEPT_LANGUAGE=""en-us,en;q=0.5"" +HTTP_CONNECTION=""keep-alive"" +HTTP_HOST=""example.com"" +HTTP_USER_AGENT=""Mozilla/5.0 (Windows NT 6.1; WOW64; rv:5.0) Gecko/20100101 Firefox/5.0"" +PATH=""/home/SYSTEM/bin:/bin:/cygdrive/c/progra~2/php:/cygdrive/c/windows/system32:..."" +PATHEXT="".COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC"" +PATH_INFO=""/foo/bar"" +PATH_TRANSLATED=""C:\Program Files (x86)\Apache Software Foundation\Apache2.2\htdocs\foo\bar"" +QUERY_STRING=""var1=value1&var2=with%20percent%20encoding"" +REMOTE_ADDR=""127.0.0.1"" +REMOTE_PORT=""63555"" +REQUEST_METHOD=""GET"" +REQUEST_URI=""/cgi-bin/printenv.pl/foo/bar?var1=value1&var2=with%20percent%20encoding"" +SCRIPT_FILENAME=""C:/Program Files (x86)/Apache Software Foundation/Apache2.2/cgi-bin/printenv.pl"" +SCRIPT_NAME=""/cgi-bin/printenv.pl"" +SERVER_ADDR=""127.0.0.1"" +SERVER_ADMIN=""(server admin's email address)"" +SERVER_NAME=""127.0.0.1"" +SERVER_PORT=""80"" +SERVER_PROTOCOL=""HTTP/1.1"" +SERVER_SIGNATURE="""" +SERVER_SOFTWARE=""Apache/2.2.19 (Win32) PHP/5.2.17"" +SYSTEMROOT=""C:\Windows"" +TERM=""cygwin"" +WINDIR=""C:\Windows"" +, +,Some, but not all, of these variables are defined by the CGI standard. Some, such as ,PATH_INFO,, ,QUERY_STRING,, and the ones starting with ,HTTP_,, pass information along from the HTTP request., +,From the environment, it can be seen that the Web browser is ,Firefox, running on a ,Windows 7, PC, the Web server is ,Apache, running on a system that emulates ,Unix,, and the CGI script is named ,cgi-bin/printenv.pl,., +,The program could then generate any content, write that to ,standard output,, and the Web server will transmit it to the browser., +,The following are ,environment variables, passed to CGI programs:, +, +,Server specific variables:, +, +,SERVER_SOFTWARE,: ,name,/,version, of ,HTTP server,., +,SERVER_NAME,: ,host name, of the server, may be ,dot-decimal, IP address., +,GATEWAY_INTERFACE,: CGI/,version,., +, +, +,Request specific variables:, +, +,SERVER_PROTOCOL,: HTTP/,version,., +,SERVER_PORT,: ,TCP port, (decimal)., +,REQUEST_METHOD,: name of HTTP method (see above)., +,PATH_INFO,: path suffix, if appended to URL after program name and a slash., +,PATH_TRANSLATED,: corresponding ,full path, as supposed by server, if ,PATH_INFO, is present., +,SCRIPT_NAME,: relative path to the program, like ,/cgi-bin/script.cgi,., +,QUERY_STRING,: the part of URL after ,?, character. The ,query string, may be composed of *,name,=,value, pairs separated with ,ampersands, (such as ,var1,=,val1,&,var2,=,val2,...) when used to submit ,form, data transferred via GET method as defined by HTML ,application/x-www-form-urlencoded,., +,REMOTE_HOST,: host name of the client, unset if server did not perform such lookup., +,REMOTE_ADDR,: ,IP address, of the client (dot-decimal)., +,AUTH_TYPE,: identification type, if applicable., +,REMOTE_USER, used for certain ,AUTH_TYPE,s., +,REMOTE_IDENT,: see ,ident,, only if server performed such lookup., +,CONTENT_TYPE,: ,Internet media type, of input data if PUT or POST method are used, as provided via HTTP header., +,CONTENT_LENGTH,: similarly, size of input data (decimal, in ,octets,) if provided via HTTP header., +,Variables passed by user agent (,HTTP_ACCEPT,, ,HTTP_ACCEPT_LANGUAGE,, ,HTTP_USER_AGENT,, ,HTTP_COOKIE, and possibly others) contain values of corresponding ,HTTP headers, and therefore have the same sense., +, +, +, +,The program returns the result to the Web server in the form of standard output, beginning with a header and a ,blank line,., +,The header is encoded in the same way as an ,HTTP header, and must include the ,MIME type, of the document returned.,[10], The headers, supplemented by the Web server, are generally forwarded with the response back to the user., +,Here is a simple CGI program written in Python 2 along with the HTML that handles a simple addition problem.,[11], +, +, +,, +,<,html,>, + ,<,body,>, + ,<,form, ,action,=,""add.cgi"", ,method,=,""POST"",>, + Enter two numbers to add:,<,br, ,/>, + First Number: ,<,input, ,type,=,""text"", ,name,=,""num1"", ,/><,br, ,/>, + Second Number: ,<,input, ,type,=,""text"", ,name,=,""num2"", ,/><,br, ,/>, + ,<,input, ,type,=,""submit"", ,value,=,""Add"", ,/>, + ,, + ,, +,, +, +, +, +,#!/usr/bin/env python2, + +,import, ,cgi, +,import, ,cgitb, +,cgitb,.,enable,(), + +,input_data, ,=, ,cgi,.,FieldStorage,(), + +,print, ,'Content-Type:text/html', ,# HTML is following, +,print, ,# Leave a blank line, +,print, ,'

Addition Results

', +,try,:, + ,num1, ,=, ,int,(,input_data,[,""num1"",],.,value,), + ,num2, ,=, ,int,(,input_data,[,""num2"",],.,value,), +,except,:, + ,print, ,'

Sorry, we cannot turn your inputs into numbers (integers).

', + ,return, ,1, +,print, ,'

{0} + {1} = {2}

',.,format,(,num1,,, ,num2,,, ,num1, ,+, ,num2,), +, +,This Python 2 CGI gets the inputs from the HTML and adds the two numbers together., +,Deployment,[,edit,], +,A Web server that supports CGI can be configured to interpret a ,URL, that it serves as a reference to a CGI script. A common convention is to have a ,cgi-bin/, ,directory, at the base of the directory tree and treat all executable files within this directory (and no other, for security) as CGI scripts. Another popular convention is to use ,filename extensions,; for instance, if CGI scripts are consistently given the extension ,.cgi,, the web server can be configured to interpret all such files as CGI scripts. While convenient, and required by many prepackaged scripts, it opens the server to attack if a remote user can upload executable code with the proper extension.,[,citation needed,], +,In the case of ,HTTP PUT or POSTs,, the user-submitted data are provided to the program via the ,standard input,. The Web server creates a subset of the ,environment variables, passed to it and adds details pertinent to the HTTP environment., +,Uses,[,edit,], +,CGI is often used to process inputs information from the user and produce the appropriate output. An example of a CGI program is one implementing a ,Wiki,. The user agent requests the name of an entry; the Web server executes the CGI; the CGI program retrieves the source of that entry's page (if one exists), transforms it into ,HTML,, and prints the result. The web server receives the input from the CGI and transmits it to the user agent. If the ""Edit this page"" link is clicked, the CGI populates an HTML ,textarea, or other editing control with the page's contents, and saves it back to the server when the user submits the form in it., +,Alternatives,[,edit,], +,Calling a command generally means the invocation of a newly created ,process, on the server. Starting the process can consume much more time and memory than the actual work of generating the output, especially when the program still needs to be ,interpreted, or ,compiled,. If the command is called often, the resulting workload can quickly overwhelm the server., +,The ,overhead, involved in process creation can be reduced by techniques such as ,FastCGI, that ""prefork"" interpreter processes, or by running the application code entirely within the web server, using extension modules such as ,mod_perl, or ,mod_php,. Another way to reduce the overhead is to use precompiled CGI programs, e.g. by writing them in languages such as ,C, or ,C++,, rather than interpreted or compiled-on-the-fly languages such as ,Perl, or ,PHP,, or by implementing the page generating software as a custom webserver module., +,Alternative approaches include:, +, +,Extensions such as ,Apache modules,, ,NSAPI, plugins, and ,ISAPI, plugins allow third-party software to run on the web server., +,FastCGI, reduces overhead by allowing a single, long-running process to handle more than one user request. Unlike converting an application to a web server plug-in, FastCGI applications remain independent of the web server., +,Simple Common Gateway Interface, or SCGI is designed to be easier to implement, yet it reduces latency in some operations compared to CGI., +,Replacement of the architecture for dynamic websites can also be used. This is the approach taken by ,Java EE,, which runs Java code in a Java servlet container in order to serve dynamic content and optionally static content. This approach replaces the overhead of generating and destroying processes with the much lower overhead of generating and destroying ,threads,, and also exposes the programmer to the library that comes with ,Java Platform, Standard Edition, on which the version of Java EE in use is based., +, +,The optimal configuration for any Web application depends on application-specific details, amount of traffic, and complexity of the transaction; these tradeoffs need to be analyzed to determine the best implementation for a given task and time budget., +,See also,[,edit,], +, +,CGI.pm, +,FastCGI, +,Perl Web Server Gateway Interface, +,Rack (web server interface), +,Web Server Gateway Interface, +, +,References,[,edit,], +, +, +, +,^, ,RFC3875: The Common Gateway Interface (CGI) Version 1.1, +,^, ,Server Scripts,, by Rob McCool, ,www-talk, mailing list, Sun, 14 Nov 1993 19:24:47 -0600, +,^, ,The Common Gateway Interface,, archived from ,the original, on 2010-01-27, , +,^, ,CGI: Common Gateway Interface, at w3.org, +,^, ,""Common Gateway Interface RFC Project Page"",. Archived from ,the original, on 2013-08-25., , +,^, ,RFC3875: The Common Gateway Interface (CGI) Version 1.1, +,^, ,RFC3875: The Common Gateway Interface (CGI) Version 1.1, +,^, ,Mapping URLs to Filesystem Locations Apache HTTP Server Version 2.2, +,^, ,Nelson, Anne Fulcher, and Nelson, William Harris Morehead. (2001). Building Electronic Commerce with Web Database Constructions. Boston, MA: Addison Wesley., +,^, ,CGI Primer (Mirror at citycat.ru), +,^, ,""Abacles HTML Forms"",. ,www.abacles.com,. Retrieved ,2016-04-06,., , +, +, +, +,External links,[,edit,], +, +,GNU cgicc,, a C++ class library for writing CGI applications, +,CGI,, a standard Perl module for CGI request parsing and HTML response generation, +,CGI Programming 101: Learn CGI Today!,, a CGI tutorial, +, +, +, +, +, +, +, +,v, +,t, +,e, +, +, +,Web interfaces, +, +, +, +,Server-side, +, +, +, +, +,Protocols, +, +, +, +,HTTP, +,CGI, +,SCGI, +,FCGI, +,AJP, +,WSRP, +,WebSocket, +, +, +, +, +, +,Server APIs, +, +, +, +,C NSAPI, +,C ASAPI, +,C ISAPI, +,COM ASP, +,Java servlet, +, +,container, +, +, +,CLI OWIN, +,ASP.NET Handler, +,Python WSGI, +,Ruby Rack, +,JavaScript JSGI, +,Perl PSGI, +,Lua WSAPI, +,Portlet, +, +,container, +, +, +, +, +, +, +, +,Apache modules, +, +, +, +,mod_jk, +,mod_lisp, +,mod_mono, +,mod_parrot, +,mod_perl, +,mod_php, +,mod_proxy, +,mod_python, +,mod_wsgi, +,mod_ruby, +,Phusion Passenger, +, +, +, +, +, +,Topics, +, +, +, +,Web resource, vs. ,Web service, +,Open API, +,Webhook, +,Application server, +, +,comparison, +, +, +,Scripting, +, +, +, +, +, +, +, +, +,Client-side, +, +, +, +, +,Browser APIs, +, +, +, +,C NPAPI, +, +,LiveConnect, +,XPConnect, +, +, +,C NPRuntime, +,C PPAPI, +, +,NaCl, +, +, +,ActiveX, +,BHO, +,XBAP, +,WebAssembly, +, +, +, +, +, +,Web APIs, +, +, +, +, +,W3C, +, +, +, +,Audio, +,Canvas, +,CORS, +,DOM, +,DOM events, +,EME, +,File, +,Geolocation, +,IndexedDB, +,MSE, +,SSE, +,SVG, +,Video, +,WebRTC, +,WebSocket, +,Web messaging, +,Web storage, +,Web worker, +,XMLHttpRequest, +, +, +, +, +, +,Khronos, +, +, +, +,WebCL, +,WebGL, +, +, +, +, +, +,Others, +, +, +, +,Gears, +,Web SQL Database, (formerly W3C), +, +, +, +, +, +, +, +, +,Topics, +, +, +, +,Ajax, vs. ,DHTML, +,Mashup, +,Web IDL, +,Scripting, +, +, +, +, +, +, +, +, +,Topics, +, +, +, +,Dynamic web page, +,Open Web Platform, +,Rich Internet application, +,Web application, +, +, +, +, +, +, + + +, +, +, +, +",Common Gateway Interface +" 8 January 2018, at 10:46."," +,Phusion Passenger, +, +,Developer(s), +,Phusion, +, +, +, +, +, +,Stable release, +, +,5.1.12,[1], / 23 November 2017,; 55 days ago, (,2017-11-23,), +, +, +, +, +, +, +,Repository, +, +, +, +,https://github.com/phusion/passenger/, +, +, +, +, +, +,Development status, +,Actively developed, +, +, +,Written in, +,C++, and ,Ruby,[2], +, +, +,License, +,MIT License, +, +, +,Website, +,phusionpassenger.com, +, +, +,Phusion Passenger, (informally also known as ,mod_rails, and ,mod_rack, among the Ruby community) is a ,free, web server and application server with support for ,Ruby,, ,Python, and ,Node.js,. It is designed to integrate into the ,Apache HTTP Server, or the ,nginx, web server, but also has a mode for running standalone without an external web server.,[3], Phusion Passenger supports ,Unix-like, operating systems, and is available as a ,gem package,, as a tarball, or as native Linux packages., +,Originally designed for web applications built on the ,Ruby on Rails, framework, it was later extended to support arbitrary Ruby web frameworks through ,the Rack interface,. Later versions also added support for Python through ,the WSGI interface,, as well as support for Node.js.,[4], In 2012, Phusion announced ,Phusion Passenger Enterprise,, a paid, commercial variant of Phusion Passenger with ""a wide array of premium features"".,[5], Phusion has stated that the open source variant will continue to be developed and maintained along with the Enterprise variant., +,Phusion Passenger is the ""preferred deployment setup"" for Ruby on Rails applications,,[6], and has been recommended by the Ruby on Rails authors.,[7],[8], In combination with Ruby 2.0, or with the now-discontinued ,Ruby Enterprise Edition,, Phusion Passenger claims that it is capable of reducing Rails's memory consumption by 33% as well as increasing its performance.,[9], +,See also,[,edit,], +, +,mod_ruby, +, +,References,[,edit,], +, +, +, +,^, ,Knoppel, Daniel (2017-11-23). ,""Passenger 5.1.12: Ubuntu 17.10, Nginx 1.12.2, new queue limit feature, fixes"",. Retrieved ,2018-01-08,., , +,^, ,""Passenger Library, In-depth: Lightweight Ruby dependency"",. Phusion,. Retrieved ,2016-07-14,., , +,^, ,""Phusion Passenger goes fourth"",. The H,. Retrieved ,26 February, 2015,., , +,^, ,""Phusion Passenger Node.js quickstart"",. Phusion,. Retrieved ,2013-07-15,., , +,^, ,""Phusion Passenger Enterprise released"",. Phusion. 2012-08-01,. Retrieved ,2013-07-15,., , +,^, ,""Deploy"",. Ruby on Rails,. Retrieved ,2009-07-03,., , +,^, ,""Myth #1: Rails is hard to deploy"",. Loudthinking.com. 2008-11-13,. Retrieved ,2009-07-03,., , +,^, ,""Koz Speaks — Random Musings on Technology"",. Koziarski.net,. Retrieved ,2009-07-03,., , +,^, ,""Performance and memory usage comparisons — Ruby Enterprise Edition"",. Rubyenterpriseedition.com,. Retrieved ,2013-07-15,., , +, +, +, +,External links,[,edit,], +, +,Phusion Passenger website, +,Phusion Passenger Enterprise, +,GitHub repository, +,Rack, +,Ruby Enterprise Edition, +, +, +, +, +, +, +, +,v, +,t, +,e, +, +, +,Web interfaces, +, +, +, +,Server-side, +, +, +, +, +,Protocols, +, +, +, +,HTTP, +,CGI, +,SCGI, +,FCGI, +,AJP, +,WSRP, +,WebSocket, +, +, +, +, +, +,Server APIs, +, +, +, +,C NSAPI, +,C ASAPI, +,C ISAPI, +,COM ASP, +,Java servlet, +, +,container, +, +, +,CLI OWIN, +,ASP.NET Handler, +,Python WSGI, +,Ruby Rack, +,JavaScript JSGI, +,Perl PSGI, +,Lua WSAPI, +,Portlet, +, +,container, +, +, +, +, +, +, +, +,Apache modules, +, +, +, +,mod_jk, +,mod_lisp, +,mod_mono, +,mod_parrot, +,mod_perl, +,mod_php, +,mod_proxy, +,mod_python, +,mod_wsgi, +,mod_ruby, +,Phusion Passenger, +, +, +, +, +, +,Topics, +, +, +, +,Web resource, vs. ,Web service, +,Open API, +,Webhook, +,Application server, +, +,comparison, +, +, +,Scripting, +, +, +, +, +, +, +, +, +,Client-side, +, +, +, +, +,Browser APIs, +, +, +, +,C NPAPI, +, +,LiveConnect, +,XPConnect, +, +, +,C NPRuntime, +,C PPAPI, +, +,NaCl, +, +, +,ActiveX, +,BHO, +,XBAP, +,WebAssembly, +, +, +, +, +, +,Web APIs, +, +, +, +, +,W3C, +, +, +, +,Audio, +,Canvas, +,CORS, +,DOM, +,DOM events, +,EME, +,File, +,Geolocation, +,IndexedDB, +,MSE, +,SSE, +,SVG, +,Video, +,WebRTC, +,WebSocket, +,Web messaging, +,Web storage, +,Web worker, +,XMLHttpRequest, +, +, +, +, +, +,Khronos, +, +, +, +,WebCL, +,WebGL, +, +, +, +, +, +,Others, +, +, +, +,Gears, +,Web SQL Database, (formerly W3C), +, +, +, +, +, +, +, +, +,Topics, +, +, +, +,Ajax, vs. ,DHTML, +,Mashup, +,Web IDL, +,Scripting, +, +, +, +, +, +, +, +, +,Topics, +, +, +, +,Dynamic web page, +,Open Web Platform, +,Rich Internet application, +,Web application, +, +, +, +, +, +, +, +, +, +, +, +, +,v, +,t, +,e, +, +, +,Ruby programming language, +, +, +, +,Implementations, +, +, +, +, +,Active, +, +, +, +,Ruby MRI, / ,YARV, +,mruby, +,JRuby, +,Rubinius, +,MagLev, +,RubyMotion, +, +, +, +, +, +,Discontinued, +, +, +, +,MacRuby, +,IronRuby, +,XRuby, +,RubyJS, +,HotRuby, +, +, +, +, +, +, +, +, +, +, +, +,IDE, +, +, +, +,Komodo, +,NetBeans, +,RadRails, +,RubyMine, +, +, +, +, +, +,Applications, +, +, +, +,Capistrano, +,Chef, +,Hackety Hack, +,Homebrew, +,Interactive Ruby Shell, +,Pry, +,Puppet, +,Rake, +,Redmine, +,RSpec, +,RubyGems, +,RVM, +, +, +, +, +, +,Libraries and frameworks, +, +, +, +,Adhearsion, +,Camping, +,eRuby, (RHTML), +,Merb, +,Padrino, +,RubyCocoa, +,Ruby on Rails, +,Shoes, +,Sinatra, +,QtRuby, +, +, +, +, +, +,Server software, +, +, +, +,mod_ruby, +,Mongrel, +,Phusion Passenger, (mod_rails/mod_rack), +,Rack, +,WEBrick, +, +, +, +, +, +,People, +, +, +, +,Yukihiro Matsumoto, +,David Heinemeier Hansson, +,why the lucky stiff, +, +, +, +, +, +,Other, +, +, +, +,Document format, +,why's (poignant) Guide to Ruby, +,Ruby Central, +,RubyKaigi, +,RubyForge, +,Ruby License, +, +, +, +, +, +, +, +, +, ,Category, +, ,Commons, +, +, +, +, +, +, + + +, +, +, +, +",Phusion Passenger + Эта страница последний раз была отредактирована 25 сентября 2017 в 09:42.,"«,Великодушный пожизненный диктатор,» (,англ., ,Benevolent Dictator For Life,, сокр. ,BDFL,) — в контексте разработки ,свободного ПО,, полуюмористический термин, обозначающий главу или основателя проекта, который сохраняет за собой право принимать окончательные решения. Впервые термин использовался по отношению к ,Гвидо ван Россуму,, создателю языка ,Python,[1],[2],., +,В своем эссе «,Заселяя ноосферу,[en],» ,Эрик Рэймонд,, в частности, обсуждает феномен «великодушной диктатуры» в сообществе свободного ПО. Согласно Рэймонду, «диктатор» свободного проекта обязан быть ,великодушным,, поскольку, если набирается достаточно разработчиков, не согласных с решениями «диктатора», они в любой момент могут уйти из проекта или создать ,форк,., +,Примеры «великодушных пожизненных диктаторов»,[,править, | ,править код,], +, +,Андерс Хейлсберг, — ,C#,, ,Delphi,, ,Turbo Pascal, +,Гвидо ван Россум, — ,Python, +,Джимми Уэйлс, — ,Wikipedia,[3], +,Дрис Бёйтарт, — ,Drupal,[4],[5], +,Ларри Уолл, — ,Perl,[6],., +,Линус Торвальдс, — ,ядро Linux,, в интервью согласился с тем, что он великодушный диктатор проекта, но при этом не упомянул слово «пожизненный»,[7],., +,Марк Шаттлворт, — ,Ubuntu Linux,[8], +,Патрик Фолькердинг, — ,Slackware,[9], +,Расмус Лердорф, — ,PHP,[10], +,Тэо де Раадт, — ,OpenBSD, +,Уолтер Брайт, — ,D, +, +,Примечания,[,править, | ,править код,], +, +, +,↑, ,Guido van Rossum., ,Origin of BDFL, (31 июля 2008). ,Проверено 3 августа 2008., ,Архивировано, 16 марта 2012 года., +,↑, ,Python Creator Scripts Inside Google,. www.eweek.com. ,Проверено 3 августа 2008., ,Архивировано, 22 августа 2011 года., +,↑, ,Wikipedia. Rôle of Jimmy Wales, +,↑, ,Dries set to be married!,. ,Архивировано, 20 ноября 2012 года., +,↑, ,Urban Dictionary: BDFL,. ,Архивировано, 20 ноября 2012 года., +,↑, ,Policies and commitments related to the Perl core,. ,Проверено 11 сентября 2012., ,Архивировано, 20 ноября 2012 года., +,↑, ,Linus Torvalds' Benevolent Dictatorship,. ,Проверено 3 августа 2008., ,Архивировано, 16 марта 2012 года., +,↑, ,Ubuntu founder defuses rumors of impending Microsoft deal,. arstechnica.com. ,Проверено 3 августа 2008., ,Архивировано, 16 марта 2012 года., +,↑, ,The Slackware Linux Project: About This Site:,. slackware.com. ,Проверено 3 августа 2008., ,Архивировано, 16 марта 2012 года., +,↑, ,Marneweck, Jacques, ,Jacques Marneweck's Blog: Rasmus's no-framework PHP MVC framework,. Powertrip.co.za (28 февраля 2006). ,Проверено 1 июня 2011., ,Архивировано, 20 ноября 2012 года., +, +, +, +, +, +, +,Это ,заготовка статьи, о компьютерах. ,Вы можете помочь проекту, дополнив её., +,Это примечание по возможности следует заменить ,более точным,., +, +, + + +, +, +, +, +",Великодушный пожизненный диктатор +" 26 November 2017, at 13:50."," +, +, +, +, +, +,This article ,relies too much on ,references, to ,primary sources,. ,Please improve this by adding ,secondary or tertiary sources,., ,(June 2015), ,(,Learn how and when to remove this template message,), +, +, +, +, +,Nginx, +, +, +, +, +,Original author(s), +,Igor Sysoev, +, +, +,Developer(s), +,Nginx, Inc., +, +, +,Initial release, +,4 October 2004,; 13 years ago, (,2004-10-04,),[1], +, +, +, +, +, +,Stable release, +,1.12.2 ,(17 October 2017,; 2 months ago, (,2017-10-17,),), ,[±],[2], +, +, +,Preview release, +,1.13.7 ,(21 November 2017,; 57 days ago, (,2017-11-21,),), ,[±],[3], +, +, +, +, +, +,Repository, +, +, +, +,http://hg.nginx.org/nginx/, +,https://github.com/nginx/nginx, +, +, +, +, +, +,Written in, +,C,[4], +, +, +,Operating system, +,BSD variants,, ,HP-UX,, ,IBM AIX,, ,Linux,, ,macOS,, ,Solaris,, ,Windows,,,[5], and other ,*nix, flavors,[6], +, +, +,Type, +,Web server,, ,reverse/mail proxy server, +, +, +,License, +,2-clause BSD,[7], +, +, +,Website, +,nginx,.org, +, +, +,Nginx, ( ,/,ˌ,ɛ,n,dʒ,ɪ,n,ˈ,ɛ,k,s,/, ,EN,-jin-,EKS,) (stylized as ,NGINX,, ,NGiИX, or ,nginx,) is a ,web server, which can also be used as a ,reverse proxy,, ,load balancer, and ,HTTP cache,. The software was created by ,Igor Sysoev, and first publicly released in 2004.,[8], A company of the same name was founded in 2011 to provide support.,[9], +,Nginx is ,free and open source software,, released under the terms of a ,BSD,-like license. A large fraction of web servers use NGINX,,[10], often as a ,load balancer,.,[11], +, +, +, +,Contents, +, +, +,1, ,Features, +, +,1.1, ,HTTP proxy and Web server features, +,1.2, ,Mail proxy features, +, +, +,2, ,Performance vs Apache, +,3, ,History, +,4, ,See also, +,5, ,References, +,6, ,External links, +, +, +, +,Features,[,edit,], +,Nginx can be deployed to serve dynamic ,HTTP, content on the network using ,FastCGI,, ,SCGI, handlers for ,scripts,, ,WSGI, application servers or ,Phusion Passenger, modules, and it can serve as a software ,load balancer,.,[12], +,Nginx uses an ,asynchronous, ,event-driven, approach to handling requests. Nginx's modular event-driven architecture,[13], can provide more predictable performance under high loads.,[14], +,According to ,Netcraft,'s November 2016 Web Server Survey,,[15], Nginx was found to be the second most widely used web server across all ""active"" sites (18.22% of surveyed sites) and for the top million busiest sites (27.83% of surveyed sites). According to W3Techs, it was used by 37.7% of the top 1 million websites, 49.7% of the top 100,000 websites, and by 57.0% of the top 10,000 websites.,[16], According to BuiltWith, it is used on 38.2% of the top 10,000 websites, and its growth within the top 10k, 100k and 1 million segments increased.,[17], Wikipedia uses Nginx as its ,SSL termination proxy,.,[18], As of ,OpenBSD, release 5.2 (1 November 2012), Nginx became part of the OpenBSD base system, providing an alternative to the system's fork of Apache 1.3, which it was intended to replace,,[19], but it was later replaced by OpenBSD's own httpd(8).,[20], +,HTTP proxy and Web server features,[,edit,], +, +,Ability to handle ,more than 10,000 simultaneous connections, with a low memory footprint (~2.5 MB per 10k inactive ,HTTP keep-alive connections,), +,Handling of static files, index files and auto-indexing, +,Reverse proxy, with caching, +,Load balancing, with in-band health checks,[21], +,TLS/SSL, with ,SNI, and ,OCSP stapling, support, via ,OpenSSL,., +,FastCGI,, ,SCGI,, ,uWSGI, support with caching, +,Name- and IP address-based virtual servers, +,IPv6,-compatible, +,WebSockets, and ,HTTP/1.1 Upgrade (101 Switching Protocols),[22], +, +,Mail proxy features,[,edit,], +, +,TLS/SSL, support, +,STARTTLS, support, +,SMTP,, ,POP3,, and ,IMAP, ,proxy, +,Authentication using an external HTTP server,[23], +, +,Other features include upgrading executable and configuration without client connections loss,,[24], and a module-based architecture with both core,[25], and third-party module support.,[26], +,The paid Plus product includes additional features such as advanced load balancing and access to an expanded suite of metrics for performance monitoring.,[27],[28], +,Performance vs Apache,[,edit,], +,Nginx was written with an explicit goal of outperforming the ,Apache, web server.,[29], Out of the box, serving static files, Nginx uses dramatically less memory than Apache, and can handle roughly four times more requests per second.,[30], This performance boost comes at a cost of decreased flexibility, such as the ability to override systemwide access settings on a per-file basis (Apache accomplishes this with an ,.htaccess, file, while Nginx has no such feature built in).,[31], Formerly, adding third party modules to nginx required ,recompiling, the application from source with the modules ,statically linked,. This was partially overcome in version 1.9.11 with the addition of ,dynamic module loading,. However, the modules still must be compiled at the same time as nginx, and not all modules are compatible with this system—some require the older static linking process.,[32], +,History,[,edit,], +, +,Nginx, Inc., +, +, +,Type, +, +,Private, +, +, +,Industry, +,Technology, +, +, +,Founded, +,2011, +, +, +,Headquarters, +,Russia, +, +, +, +,Key people, +, +,Gus Robertson (CEO), ,Igor Sysoev, (,CTO,), +, +, +,Products, +,Web servers, +, +, +,Website, +,nginx,.com, +, +, +,Igor Sysoev began development of Nginx in 2002.,[8], Originally, Nginx was developed to solve the ,C10K Problem,, and to fill the needs of ,websites, including ,Rambler,, for which it was serving 500 million requests per day by September 2008.,[33],[34], +,A company of the same name was founded in July 2011 by Sysoev to provide commercial products and support for the software.,[35], +,The company's principal place of business is ,San Francisco,, ,California,, while legally incorporated in ,British Virgin Islands,.,[9], +,In October 2011, Nginx raised $3 million from ,BV Capital,, ,Runa Capital, and ,MSD Capital,, ,Michael Dell,‘s venture fund.,[36], +,The company announced commercial support options for companies using Nginx in production. Nginx offered commercial support in February 2012,,[37],[38], and paid Nginx Plus subscription in August 2013.,[39], +,Support packages focus on installation, configuration, performance improvement, etc.,[40], Support includes proactive notifications about major changes, security patches, updates and patches., +,WordPress, developer ,Automattic, and content delivery network provider ,MaxCDN, became funding partners for an update to ,Google,'s ,SPDY, version 3.1, slated for early 2014.,[41], +,Nginx also offers consulting services to assist customers in custom configuration or adding additional features.,[42], +,In October 2013, Nginx raised a $10 million series B investment round led by ,New Enterprise Associates,.,[43], That round included previous investors, as well as ,Aaron Levie,, CEO and founder of ,Box.com,.,[44],[45], In December 2014, Nginx raised a $20 million series B1 round led by New Enterprise Associates, with participation from e.ventures (formerly ,BV Capital,), Runa Capital, ,Index Ventures, and Nginx’s own CEO Gus Robertson.,[46],[47], +,See also,[,edit,], +, +, +,Free software portal, +, +, +, +,Comparison of web server software, +,Web accelerator, +,URL redirection § nginx rewrite, +,List of Nginx–MySQL–PHP packages, +, +,References,[,edit,], +, +, +,^, ,""CHANGES"",. Retrieved ,16 May, 2017,., , +,^, ,Dounin, Maxim (17 October 2017). ,""nginx-1.12.2"",. ,nginx-announce, (Mailing list),. Retrieved ,14 November, 2017,., , +,^, ,Dounin, Maxim (21 November 2017). ,""nginx-1.13.7"",. ,nginx-announce, (Mailing list),. Retrieved ,10 December, 2017,., , +,^, ,""The NGINX Open Source Project on Ohloh"",. ,ohloh.net,. Retrieved ,7 March, 2013,., , +,^, ,""nginx for Windows"",. Retrieved ,28 May, 2014,., , +,^, ,""Tested OS and platforms"",. Retrieved ,15 October, 2011,., , +,^, ,""Licensing"",. Retrieved ,18 January, 2013,., , +,^ ,a, ,b, ,Tony Mobily (5 January 2012). ,""Interview with Igor Sysoev, author of Apache's competitor NGINX"",. ,Free Software Magazine,. Retrieved ,18 October, 2013,., , +,^ ,a, ,b, ,""Notice of Exempt Offering of Securities"",. ,Form D,. US Securities and Exchange Commission 17 October 2013,. Retrieved ,15 September, 2016,., , +,^, ,https://news.netcraft.com/archives/2017/01/12/january-2017-web-server-survey.html, +,^, ,https://www.linode.com/docs/uptime/loadbalancing/use-nginx-as-a-front-end-proxy-and-software-load-balancer, +,^, ,Use nginx for Proxy Services and Software Load Balancing, 11 May 2010, by Sam Kleinman, Linode Library, +,^, ,""The Architecture of Open Source Applications (Volume 2): nginx"",. ,aosabook.org,. Retrieved ,10 June, 2015,., , +,^, ,Basic nginx Configuration, by Sam Kleinman; 21 August 2010, +,^, ,""November 2016 Web Server Survey"",. 22 November 2016,. Retrieved ,19 December, 2016,., , +,^, ,""Usage of web servers broken down by ranking"",. 19 December 2016,. Retrieved ,19 December, 2016,., , +,^, ,""Builtwith: nginx Usage Statistics"",. 19 December 2016,. Retrieved ,19 December, 2016,., , +,^, ,""Wikitech: HTTPS"",. Wikitech.wikimedia.org. 3 October 2011,. Retrieved ,3 December, 2011,., , +,^, ,OpenBSD Upgrade Guide: 5.1 to 5.2,, 2012/11/06 15:00:27 sthen, +,^, ,""Heads Up: Nginx Removed From Base"",., , +,^, ,""Module ngx_http_upstream_module"",. nginx.org,. Retrieved ,14 August, 2012,., , +,^, ,""Proxy: support for connection upgrade (101 Switching Protocols)"",. trac.nginx.org. 19 February 2013,. Retrieved ,21 February, 2013,., , +,^, ,""Module ngx_mail_auth_http_module"",. nginx.org,. Retrieved ,13 September, 2012,., , +,^, ,""Official documentation: Controlling nginx"",. nginx.org,. Retrieved ,3 December, 2011,., , +,^, ,""nginx documentation"",. ,nginx.org,. Retrieved ,9 June, 2015,., , +,^, ,""3rdPartyModules — Nginx Community"",. ,wiki.nginx.org,. Retrieved ,9 June, 2015,., , +,^, ,""How to monitor NGINX"",. ,Datadog,. 9 July 2015,. Retrieved ,9 July, 2015,., , +,^, ,""Application Load Balancing with NGINX Plus"",. ,NGINX,. Retrieved ,9 July, 2015,., , +,^, ,""NGINX vs. Apache: Our View of a Decade-Old Question"",. ,NGINX,. 9 October 2015,. Retrieved ,28 December, 2016,., , +,^, ,""Web server performance comparison"",. ,DreamHost,. Retrieved ,28 December, 2016,., , +,^, ,""NGINX vs. Apache (Pro/Con Review, Uses, & Hosting for Each) - HostingAdvice.com"",. ,HostingAdvice.com,. 5 April 2016,. Retrieved ,28 December, 2016,., , +,^, ,""Introducing Dynamic Modules in NGINX 1.9.11 - NGINX"",. ,NGINX,. 2016-02-09,. Retrieved ,2017-01-13,., , +,^, ,""Choosing Your Web Server: Apache Vs. Nginx"",. Eyerys. 7 December 2016,. Retrieved ,7 December, 2016,., , +,^, ,""Nginx: the High-Performance Web Server and Reverse Proxy"",. ,Linux Journal,. 1 September 2008,. Retrieved ,16 August, 2009,., , +,^, ,""Company"",. nginx.com. 3 January 2012,. Retrieved ,24 February, 2012,., , +,^, ,Natasha Starkell (11 October 2011). ,""Russian Nginx Raises $3 Million From International Investors"",. ,Techcrunch,. Retrieved ,20 November, 2014,., , +,^, ,Darryl K. Taft (8 February 2012). ,""NGINX Launches Commercial Support for Open-Source Web Server"",. ,e Week,. Retrieved ,18 October, 2013,., , +,^, ,Steven J. Vaughan-Nichols (8 February 2012). ,""Commercial Support now available for the open-source NGINX Web server"",. ,ZDNet Open Source blog,. Retrieved ,18 October, 2013,., , +,^, ,""Nginx Inc. Launches NGINX Plus"",. 22 August 2013., , +,^, ,Taft, Darryl K. (8 February 2012). ,""NGINX Launches Commercial Support for Open-Source Web Server"",. eweek.com,. Retrieved ,24 February, 2012,., , +,^, ,Shankland, Stephen (20 December 2013). ,""Nginx upgrade funded by fans of Google's SPDY Web protocol"",. ,CNET,. Retrieved ,6 January, 2014,., , +,^, ,""Commercial Support now available for the open-source NGINX Web server"",. ZDNet. 8 February 2012,. Retrieved ,28 February, 2012,., , +,^, ,Sean Michael Kerner (16 October 2013). ,""Nginx Raises $10 Million in New Funding for Server Development"",. ,e Week,. Retrieved ,18 October, 2013,., , +,^, ,Frederic Lardinois (15 October 2013). ,""Nginx Raises $10M Series B Round Led By NEA"",. ,Techcrunch,. Retrieved ,20 November, 2014,., , +,^, ,Jolie O'Dell (15 October 2013). ,""Nginx ties up a sweet $10M funding deal and hundreds of millions of users"",. ,Venture Beat,. Retrieved ,18 October, 2013,., , +,^, ,Frederic Lardinois (9 December 2014). ,""Nginx Raises $20M Series B1 Round To Drive International Expansion"",. ,Techcrunch,. Retrieved ,9 December, 2014,., , +,^, ,Jordan Novet (9 December 2014). ,""Nginx gets $20M, because an open-source web server is just the beginning"",. ,VentureBeat,. Retrieved ,9 December, 2014,., , +, +, +,External links,[,edit,], +, +,Official website, +, +, +, +, +, +, +, +,v, +,t, +,e, +, +, +,Web server software, +, +, +, +, +,Comparisons, +, +, +, +,Most popular, +, +, +, +,Apache, +,Nginx, +,IIS, +, +,IIS Express, +, +, +,LiteSpeed Web Server, +, +, +, +, +, +,Other, +, +, +, +,Cherokee, +,Hiawatha, +,iPlanet, +,Lighttpd, +,Mongoose, +,Mongrel2, +,Monkey, +,POCO, +,Traffic Server, +,Jexus, +,Yaws, +,Caddy, +,GlassFish, +,Jetty, +,JOnAS, +,NetWeaver, +,Resin, +,thttpd, +,Tomcat, +,WebLogic, +,WebSphere, +,WildFly, +,Caudium, +,Roxen, +,Gunicorn, +,Paste, +,Tornado, +,Twisted, +,PyGopherd, +,Zope, +,WEBrick, +,Passenger, +,AOLserver, +,NaviServer, +,JEUS, +, +, +, +, +, +,Retired, +, +, +, +,Boa, +,CERN httpd, +,NCSA HTTPd, +,Xitami, +,Zeus, +,Mongrel, +, +, +, +, +, +, + + +, +, +, +, +",Nginx +" 12 October 2017, at 18:58."," +, +, +, +, +, +,This article ,needs additional citations for ,verification,. ,Please help ,improve this article, by ,adding citations to reliable sources,. Unsourced material may be challenged and removed., ,(August 2013), ,(,Learn how and when to remove this template message,), +, +, +, +, +, +, +, +Anything between the ,kernel, and user applications is considered middleware., +, +, +,Middleware, is computer ,software, that provides services to ,software applications, beyond those available from the ,operating system,. It can be described as ""software glue"".,[1], +,Middleware makes it easier for ,software developers, to implement communication and ,input/output,, so they can focus on the specific purpose of their application., +, +, +, +,Contents, +, +, +,1, ,In distributed applications, +,2, ,Other examples, +,3, ,Boundaries, +,4, ,Origins, +,5, ,See also, +,6, ,References, +, +, +, +,In distributed applications,[,edit,], +,Main article: ,Middleware (distributed applications), +, +, +, +, +Software architecture: Middleware, +, +, +,The term is most commonly used for software that enables communication and management of data in ,distributed applications,. An ,IETF, workshop in 2000 defined middleware as ""those services found above the ,transport, (i.e. over TCP/IP) layer set of services but below the application environment"" (i.e. below application-level ,APIs,).,[2], In this more specific sense ,middleware, can be described as the dash (""-"") in ,client-server,, or the ,-to-, in ,peer-to-peer,.,[,citation needed,], Middleware includes ,web servers,, ,application servers,, ,content management systems,, and similar tools that support application development and delivery., +,ObjectWeb defines middleware as: ""The software layer that lies between the ,operating system, and applications on each side of a distributed computing system in a network."",[3], Services that can be regarded as middleware include ,enterprise application integration,, ,data integration,, ,message oriented middleware, (MOM), ,object request brokers, (ORBs), and the ,enterprise service bus, (ESB)., +,Database, access services are often characterised as middleware. Some of them are language specific implementations and support heterogeneous features and other related communication features. Examples of database-oriented middleware include ,ODBC,, ,JDBC, and ,transaction processing, monitors., +,Distributed computing system middleware can loosely be divided into two categories—those that provide human-time services (such as web request servicing) and those that perform in machine-time. This latter middleware is somewhat standardized through the ,Service Availability Forum, and is commonly used in complex, ,embedded systems, within telecom, defense and ,aerospace, industries., +,Other examples,[,edit,], +,The term ,middleware, is used in other contexts as well. ,Middleware, is sometimes used in a similar sense to a ,software driver,, an abstraction layer that hides detail about hardware devices or other software from an application., +, +,The ,mer, software distribution is a middleware: it lacks the ,Linux kernel, and it also lacks a UI. Mer is targeted at hardware vendors' mobile-oriented operating systems., +,The ,Android, operating system uses the ,Linux, kernel at its core, and also provides an ,application framework, that developers incorporate into their applications. In addition, ,Android, provides a middleware layer including ,libraries, that provide services such as data storage, screen display, ,multimedia,, and web browsing. Because the middleware libraries are ,compiled, to ,machine language,, services execute quickly. Middleware libraries also implement device-specific functions, so applications and the application framework need not concern themselves with variations between various Android devices. Android's middleware layer also contains the ,Dalvik, ,virtual machine, and its core ,Java, application libraries.,[4], +,Game engine, software such as ,Gamebryo, and ,Renderware, are sometimes described as middleware, because they provide many services to simplify game development., +,In simulation technology, ,middleware, is generally used in the context of the ,high level architecture, (HLA) that applies to many distributed simulations. It is a layer of software that lies between the ,application code, and the ,run-time infrastructure,. Middleware generally consists of a library of functions, and enables a number of applications—simulations or federates in HLA terminology—to ,page, these functions from the common library rather than re-create them for each application., +,Wireless networking developers can use middleware to meet the challenges associated with a ,wireless sensor network, (WSN). Implementing a middleware application allows WSN ,developers, to integrate operating systems and hardware with the wide variety of various applications that are currently available.,[5], +,The ,QNX, operating system offers middleware for providing multimedia services for use in ,automobiles,, ,aircraft, and other environments., +,Multimedia Home Platform, (DVB-MHP) is an open middleware system standard designed by the ,Digital Video Broadcasting, (DVB) project for interactive digital television. The MHP enables the reception and execution of interactive, Java-based applications on a television set., +,Universal Home API,, or UHAPI, is an application programming interface (API) for consumer electronics appliances, created by the UHAPI Forum. The objective of UHAPI is to enable standard middleware to run on audio/video streaming platforms via a hardware-independent industry standard API., +,The ,Miles Sound System, provided a middleware ,software driver, allowing developers to build software that worked with a range of different sound cards, without concerning themselves with the details of each card., +,Radio-frequency identification, software toolkits provide middleware to filter noisy and redundant raw data., +,Television,, ,media, and ,set-top-box, software often refers to middleware. For instance, ,OpenTV 5, middleware (sometimes called Connectware) is a ,Linux, and ,HTML5, distribution for set-top-box including a default TV navigation guide and provides open APIs to tailored TV user experience that can leverage the home cloud, broadcast video and web services for Pay-TV operators., +, +,Boundaries,[,edit,], +,The distinction between operating system and middleware functionality is, to some extent, arbitrary. While core kernel functionality can only be provided by the operating system itself, some functionality previously provided by separately sold middleware is now integrated in operating systems. A typical example is the ,TCP/IP stack, for telecommunications, nowadays included in virtually every operating system. At the other end of the scale, the boundary between middleware and application has also moved. ,Digital TV middleware, for example usually provides enough functionality so that no ""application"" is needed for end-users to be able to use the TV services., +,Origins,[,edit,], +,Middleware gained popularity in the 1980s as a solution to the problem of how to link newer applications to older legacy systems, although the term had been in use since 1968.,[6], It also facilitated ,distributed processing,, the connection of multiple applications to create a larger application, usually over a network., +,See also,[,edit,], +, +, +, +,Look up ,middleware, in Wiktionary, the free dictionary., +, +, +, +,Cross-language, +,Third party software component, +, +,References,[,edit,], +, +, +,^, ,""What is Middleware?"",. ,Middleware.org,. Defining Technology. 2008. Archived from the original on June 29, 2012,. Retrieved ,2013-08-11,., ,CS1 maint: Unfit url (,link,), +,^, ,http://www.ietf.org/rfc/rfc2768.txt, +,^, ,Krakowiak, Sacha. ,""What's middleware?"",. ObjectWeb.org,. Retrieved ,2005-05-06,., , +,^, ,Charlie Collins, Michael Galpin and Matthias Kaeppler, Android in Practice, Manning Publications, 2011, +,^, ,Hadim, S. and Mohamed, N. (2006). Middleware challenges and approaches for wireless sensor networks. IEEE Distributed Systems Online vol 7. Issue 3. Retrieved March 4, 2009 from ,iEEE Distributed Systems Online, +,^, ,Gall, Nick (July 30, 2005). ,""Origin of the term ,middleware,"",., , +, +, +, +, +, +, +, +, +,v, +,t, +,e, +, +, +,Major fields of ,computer science, +, +, +, +, +,Note: This template roughly follows the 2012 ,ACM Computing Classification System,., +, +, +, +,Hardware, +, +, +, +,Printed circuit board, +,Peripheral, +,Integrated circuit, +,Very-large-scale integration, +,Energy consumption, +,Electronic design automation, +, +, +, +, +, +,Computer systems, +organization, +, +, +, +,Computer architecture, +,Embedded system, +,Real-time computing, +,Dependability, +, +, +, +, +, +,Networks, +, +, +, +,Network architecture, +,Network protocol, +,Network components, +,Network scheduler, +,Network performance evaluation, +,Network service, +, +, +, +, +, +,Software organization, +, +, +, +,Interpreter, +,Middleware, +,Virtual machine, +,Operating system, +,Software quality, +, +, +, +, +, +,Software notations, +and ,tools, +, +, +, +,Programming paradigm, +,Programming language, +,Compiler, +,Domain-specific language, +,Modeling language, +,Software framework, +,Integrated development environment, +,Software configuration management, +,Software library, +,Software repository, +, +, +, +, +, +,Software development, +, +, +, +,Software development process, +,Requirements analysis, +,Software design, +,Software construction, +,Software deployment, +,Software maintenance, +,Programming team, +,Open-source model, +, +, +, +, +, +,Theory of computation, +, +, +, +,Model of computation, +,Formal language, +,Automata theory, +,Computational complexity theory, +,Logic, +,Semantics, +, +, +, +, +, +,Algorithms, +, +, +, +,Algorithm design, +,Analysis of algorithms, +,Randomized algorithm, +,Computational geometry, +, +, +, +, +, +,Mathematics, +of computing, +, +, +, +,Discrete mathematics, +,Probability, +,Statistics, +,Mathematical software, +,Information theory, +,Mathematical analysis, +,Numerical analysis, +, +, +, +, +, +,Information, +systems, +, +, +, +,Database management system, +,Information storage systems, +,Enterprise information system, +,Social information systems, +,Geographic information system, +,Decision support system, +,Process control system, +,Multimedia information system, +,Data mining, +,Digital library, +,Computing platform, +,Digital marketing, +,World Wide Web, +,Information retrieval, +, +, +, +, +, +,Security, +, +, +, +,Cryptography, +,Formal methods, +,Security services, +,Intrusion detection system, +,Hardware security, +,Network security, +,Information security, +,Application security, +, +, +, +, +, +,Human–computer, +interaction, +, +, +, +,Interaction design, +,Social computing, +,Ubiquitous computing, +,Visualization, +,Accessibility, +, +, +, +, +, +,Concurrency, +, +, +, +,Concurrent computing, +,Parallel computing, +,Distributed computing, +,Multithreading, +,Multiprocessing, +, +, +, +, +, +,Artificial, +intelligence, +, +, +, +,Natural language processing, +,Knowledge representation and reasoning, +,Computer vision, +,Automated planning and scheduling, +,Search methodology, +,Control method, +,Philosophy of artificial intelligence, +,Distributed artificial intelligence, +, +, +, +, +, +,Machine learning, +, +, +, +,Supervised learning, +,Unsupervised learning, +,Reinforcement learning, +,Multi-task learning, +,Cross-validation, +, +, +, +, +, +,Graphics, +, +, +, +,Animation, +,Rendering, +,Image manipulation, +,Graphics processing unit, +,Mixed reality, +,Virtual reality, +,Image compression, +,Solid modeling, +, +, +, +, +, +,Applied, +computing, +, +, +, +,E-commerce, +,Enterprise software, +,Computational mathematics, +,Computational physics, +,Computational chemistry, +,Computational biology, +,Computational social science, +,Computational engineering, +,Computational healthcare, +,Digital art, +,Electronic publishing, +,Cyberwarfare, +,Electronic voting, +,Video game, +,Word processing, +,Operations research, +,Educational technology, +,Document management, +, +, +, +, +, +, +, +, +, ,Book, +, ,Category, +, ,Portal, +,WikiProject, +, ,Commons, +, +, +, +, +, +, +, +, +, +,Authority control, +, +, +, +,GND,: ,4426067-2, +, +, +, +, +, +, + + +, +, +, +, +",Middleware +" 10 January 2018, at 16:27.","""JRE"" redirects here. For the podcast, see ,Joe Rogan Experience,., +, +,Java virtual machine, +, +,Designer, +,Sun Microsystems, +, +, +,Bits, +,32-bit, +, +, +,Introduced, +,1994, +, +, +,Type, +,Stack, and ,register–register, +, +, +,Endianness, +,Big, +, +, +,Registers, +, +, +,General purpose, +,Per-method operand stack (up to 65535 operands) plus per-method local variables (up to 65535), +, +, +, +, +, +, +Overview of a Java virtual machine (JVM) architecture based on The Java Virtual Machine Specification Java SE 7 Edition, +, +, +,A ,Java virtual machine, (,JVM,) is ,an abstract computing machine, that enables a computer to run a ,Java, program. There are three notions of the JVM: specification, implementation, and instance. The specification is a document that formally describes what is required of a JVM implementation. Having a single specification ensures all implementations are ,interoperable,. A JVM implementation is a computer program that meets the requirements of the JVM specification. An instance of a JVM is an implementation running in a ,process, that executes a computer program compiled into ,Java bytecode,., +,Java Runtime Environment, (,JRE,) is a software package that contains what is required to run a Java program. It includes a Java Virtual Machine implementation together with an implementation of the ,Java Class Library,. The ,Oracle Corporation,, which owns the Java trademark, distributes a Java Runtime environment with their Java Virtual Machine called ,HotSpot,., +,Java Development Kit, (,JDK,) is a superset of a JRE and contains tools for Java programmers, e.g. a ,javac, compiler. The Java Development Kit is provided free of charge either by Oracle Corporation directly, or by the ,OpenJDK, open source project, which is governed by Oracle., +, +, +, +,Contents, +, +, +,1, ,JVM specification, +, +,1.1, ,Class loader, +,1.2, ,Virtual machine architecture, +,1.3, ,Bytecode instructions, +,1.4, ,JVM languages, +,1.5, ,Bytecode verifier, +, +,1.5.1, ,Secure execution of remote code, +, +, +,1.6, ,Bytecode interpreter and just-in-time compiler, +, +, +,2, ,JVM in the web browser, +, +,2.1, ,Java applets, +,2.2, ,JavaScript JVMs and interpreters, +,2.3, ,Compilation to JavaScript, +, +, +,3, ,Java Runtime Environment, +, +,3.1, ,Performance, +,3.2, ,Generational heap, +,3.3, ,Security, +, +, +,4, ,See also, +,5, ,Notes, +,6, ,References, +,7, ,External links, +, +, +, +,JVM specification,[,edit,], +,The Java virtual machine is an abstract (virtual) computer defined by a specification. This specification omits implementation details that are not essential to ensure interoperability: the memory layout of run-time data areas, the garbage-collection algorithm used, and any internal optimization of the Java virtual machine instructions (their translation into machine code). The main reason for this omission is to not unnecessarily constrain implementers. Any Java application can be run only inside some concrete implementation of the abstract specification of the Java virtual machine.,[1], +,Starting with ,Java Platform, Standard Edition, (J2SE) 5.0, changes to the JVM specification have been developed under the ,Java Community Process, as JSR 924.,[2], As of 2006,[update],, changes to specification to support changes proposed to the ,class file format, (JSR 202),[3], are being done as a maintenance release of JSR 924. The specification for the JVM was published as the ,blue book,,,[4], The preface states:, +, +,We intend that this specification should sufficiently document the Java Virtual Machine to make possible compatible clean-room implementations. Oracle provides tests that verify the proper operation of implementations of the Java Virtual Machine., +, +,One of Oracle's JVMs is named ,HotSpot,, the other, inherited from ,BEA Systems, is ,JRockit,. ,Clean-room, Java implementations include ,Kaffe, and ,IBM J9,. Oracle owns the Java trademark and may allow its use to certify implementation suites as fully compatible with Oracle's specification., +,Class loader,[,edit,], +,Main article: ,Java Class loader, +,One of the organizational units of JVM byte code is a class. A class loader implementation must be able to recognize and load anything that conforms to the Java class file format. Any implementation is free to recognize other binary forms besides ,class, files, but it must recognize ,class, files., +,The class loader performs three basic activities in this strict order:, +, +,Loading: finds and imports the binary data for a type, +,Linking: performs verification, preparation, and (optionally) resolution +, +,Verification: ensures the correctness of the imported type, +,Preparation: allocates memory for class variables and initializing the memory to default values, +,Resolution: transforms symbolic references from the type into direct references., +, +, +,Initialization: invokes Java code that initializes class variables to their proper starting values., +, +,In general, there are two types of class loader: bootstrap class loader and user defined class loader., +,Every Java virtual machine implementation must have a bootstrap class loader, capable of loading trusted classes. The Java virtual machine specification doesn't specify how a class loader should locate classes., +,Virtual machine architecture,[,edit,], +,The JVM operates on primitive values (integers and floating-point numbers) and ,references,. The JVM is fundamentally a 32-bit machine. ,long, and ,double, types, which are 64-bits, are supported natively, but consume two units of storage in a frame's local variables or operand stack, since each unit is 32 bits. ,boolean,, ,byte,, ,short,, and ,char, types are all sign-extended (except ,char, which is zero-extended) and operated on as 32-bit integers, the same as ,int, types. The smaller types only have a few type-specific instructions for loading, storing, and type conversion. ,boolean, is not known at all to the JVM; booleans are operated on as 8-bit ,byte, values, with 0 representing ,false, and 1 representing ,true,., +,The JVM has a garbage-collected heap for storing objects and arrays. Code, constants, and other class data are stored in the ""method area"". The method area is logically part of the heap, but implementations may treat the method area separately from the heap, and for example might not garbage collect it. Each JVM thread also has its own ,call stack, (called a ""Java Virtual Machine stack"" for clarity), which stores ,frames,. A new frame is created each time a method is called, and the frame is destroyed when that method exits., +,Each frame provides an ""operand stack"" and an array of ""local variables"". The operand stack is used for operands to computations and for receiving the return value of a called method, while local variables serve the same purpose as ,registers, and are also used to pass method arguments. Thus, the JVM is both a ,stack machine, and a ,register machine,., +,Bytecode instructions,[,edit,], +,Main article: ,Java bytecode, +,The JVM has ,instructions, for the following groups of tasks:, +, +, +,Load and store, +,Arithmetic, +,Type conversion, +,Object creation and manipulation, +,Operand stack management (push / pop), +,Control transfer (branching), +,Method invocation and return, +,Throwing exceptions, +,Monitor-based concurrency, +, +, +,The aim is binary compatibility. Each particular host ,operating system, needs its own implementation of the JVM and runtime. These JVMs interpret the bytecode semantically the same way, but the actual implementation may be different. More complex than just emulating bytecode is compatibly and efficiently implementing the ,Java core API, that must be mapped to each host operating system., +,These instructions operate on a set of common ,abstracted ,data types, rather the ,native data types, of any specific ,instruction set architecture,., +,JVM languages,[,edit,], +,Main article: ,List of JVM languages, +,A JVM language is any language with functionality that can be expressed in terms of a valid class file which can be hosted by the Java Virtual Machine. A class file contains Java Virtual Machine instructions (,Java byte code,) and a symbol table, as well as other ancillary information. The class file format is the hardware- and operating system-independent binary format used to represent compiled classes and interfaces.,[5], +,There are several JVM languages, both old languages ported to JVM and completely new languages. ,JRuby, and ,Jython, are perhaps the most well-known ports of existing languages, i.e. ,Ruby, and ,Python, respectively. Of the new languages that have been created from scratch to compile to Java bytecode, ,Clojure,, ,Apache Groovy,, ,Scala, and ,Kotlin, may be the most popular ones. A notable feature with the JVM languages is that they are ,compatible with each other,, so that, for example, Scala libraries can be used with Java programs and vice versa.,[6], +,Java 7 JVM implements ,JSR 292: Supporting Dynamically Typed Languages,[7], on the Java Platform, a new feature which supports dynamically typed languages in the JVM. This feature is developed within the ,Da Vinci Machine, project whose mission is to extend the JVM so that it supports languages other than Java.,[8],[9], +,Bytecode verifier,[,edit,], +,A basic philosophy of Java is that it is inherently safe from the standpoint that no user program can crash the host machine or otherwise interfere inappropriately with other operations on the host machine, and that it is possible to protect certain methods and data structures belonging to trusted code from access or corruption by untrusted code executing within the same JVM. Furthermore, common programmer errors that often led to data corruption or unpredictable behavior such as accessing off the end of an array or using an uninitialized pointer are not allowed to occur. Several features of Java combine to provide this safety, including the class model, the garbage-collected ,heap,, and the verifier., +,The JVM verifies all bytecode before it is executed. This verification consists primarily of three types of checks:, +, +,Branches are always to valid locations, +,Data is always initialized and references are always type-safe, +,Access to private or package private data and methods is rigidly controlled, +, +,The first two of these checks take place primarily during the verification step that occurs when a class is loaded and made eligible for use. The third is primarily performed dynamically, when data items or methods of a class are first accessed by another class., +,The verifier permits only some bytecode sequences in valid programs, e.g. a ,jump (branch) instruction, can only target an instruction within the same ,method,. Furthermore, the verifier ensures that any given instruction operates on a fixed stack location,,[10], allowing the JIT compiler to transform stack accesses into fixed register accesses. Because of this, that the JVM is a stack architecture does not imply a speed penalty for emulation on ,register-based architectures, when using a JIT compiler. In the face of the code-verified JVM architecture, it makes no difference to a JIT compiler whether it gets named imaginary registers or imaginary stack positions that must be allocated to the target architecture's registers. In fact, code verification makes the JVM different from a classic stack architecture, of which efficient emulation with a JIT compiler is more complicated and typically carried out by a slower interpreter., +,The original specification for the bytecode verifier used natural language that was incomplete or incorrect in some respects. A number of attempts have been made to specify the JVM as a formal system. By doing this, the security of current JVM implementations can more thoroughly be analyzed, and potential security exploits prevented. It will also be possible to optimize the JVM by skipping unnecessary safety checks, if the application being run is proven to be safe.,[11], +,Secure execution of remote code,[,edit,], +,A virtual machine architecture allows very fine-grained control over the actions that code within the machine is permitted to take. It assumes the code is ""semantically"" correct, that is, it successfully passed the (formal) bytecode verifier process, materialized by a tool, possibly off-board the virtual machine. This is designed to allow safe execution of untrusted code from remote sources, a model used by ,Java applets,, and other secure code downloads. Once bytecode-verified, the downloaded code runs in a restricted "",sandbox,"", which is designed to protect the user from misbehaving or malicious code. As an addition to the bytecode verification process, publishers can purchase a certificate with which to ,digitally sign, applets as safe, giving them permission to ask the user to break out of the sandbox and access the local file system, ,clipboard,, execute external pieces of software, or network., +,Formal proof of bytecode verifiers have been done by the Javacard industry (Formal Development of an Embedded Verifier for Java Card Byte Code,[12],), +,Bytecode interpreter and just-in-time compiler,[,edit,], +,For each ,hardware architecture, a different Java bytecode ,interpreter, is needed. When a computer has a Java bytecode interpreter, it can run any Java bytecode program, and the same program can be run on any computer that has such an interpreter., +,When Java bytecode is executed by an interpreter, the execution will always be slower than the execution of the same program compiled into native machine language. This problem is mitigated by ,just-in-time (JIT) compilers, for executing Java bytecode. A JIT compiler may translate Java bytecode into native machine language while executing the program. The translated parts of the program can then be executed much more quickly than they could be interpreted. This technique gets applied to those parts of a program frequently executed. This way a JIT compiler can significantly speed up the overall execution time., +,There is no necessary connection between the Java programming language and Java bytecode. A program written in Java can be compiled directly into the machine language of a real computer and programs written in other languages than Java can be compiled into Java bytecode., +,Java bytecode is intended to be platform-independent and secure.,[13], Some JVM implementations do not include an interpreter, but consist only of a just-in-time compiler.,[14], +,JVM in the web browser,[,edit,], +,Since the very early stages of the design process, Java (and JVM) has been marketed as a web technology for creating ,Rich Internet Applications,., +,Java applets,[,edit,], +,Main article: ,Java applet, +,On the client side, web browsers may be extended with a ,NPAPI, Java plugin which executes so called ,Java applets, embedded into HTML pages. The applet is allowed to draw into a rectangular region on the page assigned to it and use a restricted set of APIs that allow for example access to user's microphone or 3D acceleration. Java applets were superior to ,JavaScript, both in performance and features until approximately 2011, when JavaScript engines in browsers were made significantly faster and the ,HTML 5, suite of web technologies started enhancing JavaScript with new APIs. Java applets are not able to modify the page outside its rectangular region which is not true about JavaScript. ,Adobe Flash Player,, the main competing technology, works in the same way in this respect. Java applets are not restricted to Java and in general can be created in any JVM language., +,As of April 2014, ,Google Chrome, does not allow the use of any NPAPI plugins.,[15], ,Mozilla Firefox, will also ban NPAPI plugins by the end of 2016. This means that Java applets can no longer be used in either browser.,[16], Oracle ultimately announced in January 2016 that it will discontinue the Java web browser plugin effective Java 9.,[17], +,As of June 2015,[update], according to W3Techs, Java applet use had fallen to 0.1% of all web sites. Flash had fallen to 10.8% and Silverlight to 0.1% of web sites.,[18], +,JavaScript JVMs and interpreters,[,edit,], +,As of May 2016, ,JavaPoly, allows users to import unmodified Java libraries, and invoke them directly from JavaScript. JavaPoly allows websites to use run unmodified Java libraries, even if the user does not have Java installed on their computer.,[19], +,Compilation to JavaScript,[,edit,], +,With the continuing improvements in JavaScript execution speed, combined with the increased use of mobile devices whose web browsers do not implement support for plugins, there are efforts to target those users through compilation to JavaScript. It is possible to either compile the source code or JVM bytecode to JavaScript., +,Compiling the JVM bytecode, which is universal across JVM languages, allows building upon the language's existing compiler to bytecode. The main JVM bytecode to JavaScript compilers are TeaVM,,[20], the compiler contained in Dragome Web SDK,,[21], Bck2Brwsr,,[22], and j2js-compiler.,[23], +,Leading compilers from JVM languages to JavaScript include the Java-to-JavaScript compiler contained in ,Google Web Toolkit,, Clojurescript (,Clojure,), GrooScript (,Apache Groovy,), ,Scala.js, (Scala) and others.,[24], +,Java Runtime Environment,[,edit,], +,Main article: ,HotSpot, +,The Java Runtime Environment (JRE) released by Oracle is a software distribution containing a stand-alone Java VM (,HotSpot,), a browser plugin (discontinued since ,Java 9,), the Java ,standard library, (,Java Class Library,) and a configuration tool. It is the most common Java environment installed on Windows computers. It is freely available for download at the website java.com., +,Performance,[,edit,], +,Main article: ,Java performance, +,The JVM specification gives a lot of leeway to implementors regarding the implementation details. Since Java 1.3, JRE from Oracle contains a JVM called HotSpot. It has been designed to be a high-performance JVM., +,To speed-up code execution, HotSpot relies on just-in-time compilation. To speed-up object allocation and garbage collection, HotSpot uses generational heap., +,Generational heap,[,edit,], +,The ,Java virtual machine heap, is the area of memory used by the JVM for ,dynamic memory allocation,.,[25], +,In HotSpot the heap is divided into ,generations,:, +, +,The ,young generation, stores short-lived ,objects, that are created and immediately ,garbage collected,., +,Objects that persist longer are moved to the ,old generation, (also called the ,tenured generation,). This memory is subdivided into (two) Survivors spaces where the objects that survived the first and next garbage collections are stored., +, +,The ,permanent generation, (or ,permgen,) was used for ,class, definitions and associated metadata prior to Java 8. Permanent generation was not part of the heap.,[26],[27], The ,permanent generation, was removed from Java 8.,[28], +,Originally there was no permanent generation, and objects and classes were stored together in the same area. But as class unloading occurs much more rarely than objects are collected, moving class structures to a specific area allowed significant performance improvements.,[26], +,Security,[,edit,], +,Oracle's JRE is installed on a large number of computers. Since any web page the user visits may run Java applets, Java provides an easily accessible ,attack surface, to malicious web sites that the user visits. Kaspersky Labs reports that the Java web browser plugin is the method of choice for computer criminals. Java exploits are included in many exploit packs that hackers deploy onto hacked web sites.,[29], +,In the past, end users were often using an out-of-date version of JRE which was vulnerable to many known attacks. This led to the widely shared belief between users that Java is inherently insecure.,[30], Since Java 1.7, Oracle's JRE for Windows includes automatic update functionality., +,See also,[,edit,], +, +, +,Java portal, +, +, +, +,List of Java virtual machines, +,Comparison of Java virtual machines, +,Comparison of application virtual machines, +,Automated exception handling, +,Java performance, +,List of JVM languages, +,Java processor, +,Common Language Runtime, +, +,Notes,[,edit,], +, +, +,^, ,Bill Venners, ,Inside the Java Virtual Machine, Chapter 5, +,^, ,""The Java Community Process(SM) Program - JSRs: Java Specification Requests - detail JSR# 924"",. Jcp.org,. Retrieved ,2015-06-26,., , +,^, ,""The Java Community Process(SM) Program - JSRs: Java Specification Requests - detail JSR# 202"",. Jcp.org,. Retrieved ,2015-06-26,., , +,^, ,The Java Virtual Machine Specification, (the ,first, and ,second, editions are also available online)., +,^, ,""The Java Virtual Machine Specification : Java SE 7 Edition"", ,(PDF),. Docs.oracle.com,. Retrieved ,2015-06-26,., , +,^, ,""Frequently Asked Questions - Java Interoperability"",. ,scala-lang.org,. Retrieved ,2015-11-18,., , +,^, ,""The Java Community Process(SM) Program - JSRs: Java Specification Requests - detail JSR# 292"",. Jcp.org,. Retrieved ,2015-06-26,., , +,^, ,""Da Vinci Machine project"",. Openjdk.java.net,. Retrieved ,2015-06-26,., , +,^, ,""New JDK 7 Feature: Support for Dynamically Typed Languages in the Java Virtual Machine"",. Oracle.com,. Retrieved ,2015-06-26,., , +,^, ,""The Verification process"",. ,The Java Virtual Machine Specification,. Sun Microsystems. 1999,. Retrieved ,2009-05-31,., , +,^, ,Stephen N. Freund and John C. Mitchell. 1999. A formal framework for the Java bytecode language and verifier. In ,Proceedings of the 14th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications (OOPSLA '99),, A. Michael Berman (Ed.) ,Association for Computing Machinery,, New York, pp.147–166. ,doi,:,10.1145/320384.320397, +,^, ,http://www-sop.inria.fr/everest/Lilian.Burdy/CBR02dsn.pdf, +,^, ,David J. Eck, ,Introduction to Programming Using Java,, Seventh Edition, Version 7.0, August 2014 at Section 1.3 ""The Java Virtual Machine"", +,^, ,Oracle JRockit Introduction, Release R28 at 2. ""Understanding Just-In-Time Compilation and Optimization"", +,^, ,""Chrome starts pushing Java off the Web by disabling plugins"",. ,Ars Technica,. Retrieved ,9 December, 2015,., , +,^, ,""Firefox will stop supporting plugins by end of 2016, following Chrome's lead"",. ,PC World,. Retrieved ,9 December, 2015,., , +,^, ,""Oracle deprecates the Java browser plugin, prepares for its demise"",. ,Ars Technica,. Retrieved ,15 April, 2016,., , +,^, ,""Historical yearly trends in the usage of client-side programming languages, June 2015"",. W3techs.com,. Retrieved ,2015-06-26,., , +,^, ,Krill, Paul (13 May 2016). ,""JavaPoly.js imports existing Java code and invokes it directly from JavaScript"",. InfoWorld,. Retrieved ,18 July, 2016,., , +,^, ,""TeaVM project home page"",. Teavm.org,. Retrieved ,2015-06-26,., , +,^, ,""Dragome Web SDK"",. Dragome.com,. Retrieved ,2015-06-26,., , +,^, ,""Bck2Brwsr - APIDesign"",. Wiki.apidesign.org,. Retrieved ,2015-06-26,., , +,^, ,Wolfgang Kuehn (decatur). ,j2js-compiler, GitHub, +,^, ,""List of languages that compile to JS · jashkenas/coffeescript Wiki · GitHub"",. Github.com. 2015-06-19,. Retrieved ,2015-06-26,., , +,^, ,""Frequently Asked Questions about Garbage Collection in the Hotspot Java Virtual Machine"",. ,Sun Microsystems,. 6 February 2003,. Retrieved ,7 February, 2009,., , +,^ ,a, ,b, ,Masamitsu, Jon (28 November 2006). ,""Presenting the Permanent Generation"",. Retrieved ,7 February, 2009,., , +,^, ,Nutter, Charles (11 September 2008). ,""A First Taste of InvokeDynamic"",. Retrieved ,7 February, 2009,., , +,^, ,""JEP 122: Remove the Permanent Generation"",. ,Oracle Corporation,. 2012-12-04,. Retrieved ,2014-03-23,., , +,^, ,""Is there any protection against Java exploits? | Kaspersky Lab"",. Kaspersky.com. 2013-09-09,. Retrieved ,2015-06-26,., , +,^, ,""What Is Java, Is It Insecure, and Should I Use It?"",. Lifehacker.com. 2013-01-14,. Retrieved ,2015-06-26,., , +, +, +,References,[,edit,], +, +, +,Clarifications and Amendments to the Java Virtual Machine Specification, Second Edition, includes list of changes to be made to support J2SE 5.0 and JSR 45, +,JSR 45,, specifies changes to the class file format to support source-level debugging of languages such as ,JavaServer Pages, (JSP) and ,SQLJ, that are translated to Java, +, +, +,External links,[,edit,], +, +,What is Java virtual machine (JVM)?, +,The Java Virtual Machine Specification, +,Java implementations, at Curlie (based on ,DMOZ,), +,How to download and install prebuilt OpenJDK packages, +,How to Install Java?, (JRE from Oracle), +, +, +, +, +, +, +, +,v, +,t, +,e, +, +, +,Java virtual machines, (,comparison,), +, +, +, +,Sun/Oracle, +, +, +, +,HotSpot, +,KVM, +,OpenJDK, +,Maxine VM, +, +, +, +, +, +,Major implementations, +, +, +, +,Excelsior JET, +,JamVM, +,Jikes RVM, +,IBM J9, +, +, +, +, +, +,Embedded, +, +, +, +,Excelsior JET Embedded, +,JamaicaVM, +,Mika VM, +,Mysaifu, +,Squawk (Sun), +, +, +, +, +, +,Others, +, +, +, +,CACAO, +,IcedTea, +,JX, +,more…, +, +, +, +, +, +,Discontinued, +, +, +, +,Apache Harmony, +,Dalvik, +,GCJ, +,IKVM.NET, +,JRockit, +,Kaffe, +,Microsoft JVM, +,SableVM, +,Jupiter, +,more…, +, +, +, +, +, +, +, +, +, +, +, +, +,v, +,t, +,e, +, +, +,Java, +, +, +, +,Platforms, +, +, +, +,Java language, +,JVM, +,Micro Edition, +,Standard Edition, +,Enterprise Edition, +,Java Card, +,Android SDK, +, +, +, +, +, +, +, +, +,Oracle technologies, +, +, +, +,Squawk, +,Java Development Kit, +,OpenJDK, +,Java virtual machine, +,JavaFX, +,Maxine VM, +, +, +, +, +, +,Platform technologies, +, +, +, +,Applets, +,Servlets, +,MIDlets, +,JSP, +,Web Start (JNLP), +, +, +, +, +, +,Major third-party technologies, +, +, +, +,Blackdown, +,Eclipse, +,GNU Classpath, +,GWT, +,Harmony, +,Hibernate, +,IcedTea, +,Jazelle, +,Spring, +,Struts, +,TopLink, +,WildFly, +, +, +, +, +, +,History, +, +, +, +,Java version history, +,Java Community Process, +,Sun Microsystems, +,Free Java implementations, +, +, +, +, +, +,Major JVM languages, +, +, +, +,BeanShell, +,Clojure, +,Groovy, +,Oxygene, +,JRuby, +,Jython, +,Kotlin, +,Processing, +,Rhino, +,Scala, +,Tcl/Java, +, +, +, +, +, +,Conferences, +, +, +, +,JavaOne, +,Devoxx, +, +, +, +, +, +, +, +, +, +, +, +, +,v, +,t, +,e, +, +, +,Sun Microsystems, ,(,acquired, by ,Oracle Corp,, 2010), +, +, +, +,People, +, +, +, +,Bill Joy, +,Andy Bechtolsheim, +,Scott McNealy, +,Vinod Khosla, +,List of notable employees, +, +, +, +, +, +,Hardware, +, +, +, +,Sun-1, +,Sun-2, +,Sun-3, +,Sun386i, +,Sun-4, +,SPARCstation, +,Netra, +,Ultra, +,Enterprise, +,Sun Blade, +,Sun Fire, +,SPARC Enterprise, +,SPARC, +,JavaStation, +,Sun Ray, +,Sun Modular Datacenter, +,more..., +, +, +, +, +, +,Software, +, +, +, +,SunOS, +,Solaris, +,NIS, (,+,), +,NFS, +,ZFS, +,SunView, +,NeWS, +,OpenWindows, +,Java Desktop System, +,Sun Studio, +,Java, +,StarOffice, +,iPlanet,/,Sun ONE,/,Java Enterprise System, +,Sun Secure Global Desktop, +,MySQL, +,Sun xVM, +,GlassFish, +,more..., +, +, +, +, +, +,Storage, +, +, +, +,StorageTek, +,Sun Open Storage, +,QFS, +,ZFS, +, +, +, +, +, +,High-performance computing, +, +, +, +,Sun Cloud, +,Sun Constellation System, +,Sun Visualization System, +,Sun Grid Engine, +,Lustre, +, +, +, +, +, +,Research, +, +, +, +,Sun Labs, +,picoJava, +,Fortress, +,Project Looking Glass, +, +, +, +, +, +,Education, +, +, +, +,SCPs, +,BlueJ, +, +, +, +, +, +,Community, +, +, +, +,Common Development and Distribution License, +,Java Community Process, +,NetBeans, +,OpenOffice.org, +,OpenSolaris, +,OpenSPARC, +,OpenJDK, +,OSUM, +, +, +, +, +, +, + + +, +, +, +, +",Java virtual machine +" 17 January 2018, at 17:44.","Not to be confused with ,Content management, or ,Information management,., +,Knowledge management, (,KM,) is the process of creating, sharing, using and managing the ,knowledge, and information of an organisation.,[1], It refers to a multidisciplinary approach to achieving organisational objectives by making the best use of knowledge.,[2], +,An established ,discipline, since 1991, KM includes courses taught in the fields of ,business administration,, ,information systems,, management, library, and ,information sciences,.,[3],[4], Other fields may contribute to KM research, including information and media, ,computer science,, ,public health, and ,public policy,.,[5], Several universities offer dedicated ,master's degrees, in knowledge management., +,Many large companies, public institutions and non-profit organisations have resources dedicated to internal KM efforts, often as a part of their ,business strategy,, ,IT,, or ,human resource management, departments.,[6], Several consulting companies provide advice regarding KM to these organisations.,[6], +,Knowledge management efforts typically focus on organisational objectives such as improved performance, ,competitive advantage,, ,innovation,, the sharing of lessons learned, integration and ,continuous improvement, of the organisation.,[7], These efforts overlap with ,organisational learning, and may be distinguished from that by a greater focus on the management of knowledge as a strategic asset and on encouraging the ,sharing of knowledge,.,[2],[8], KM is an enabler of organisational learning.,[9],[10], +, +, +, +,Contents, +, +, +,1, ,History, +,2, ,Research, +, +,2.1, ,Dimensions, +,2.2, ,Strategies, +,2.3, ,Motivations, +, +, +,3, ,KM technologies, +,4, ,Legal knowledge management, +,5, ,See also, +,6, ,References, +,7, ,External links, +, +, +, +,History,[,edit,], +,Knowledge management efforts have a long history, including on-the-job discussions, formal ,apprenticeship,, ,discussion forums,, corporate libraries, professional training, and mentoring programs.,[2],[10], With increased use of computers in the second half of the 20th century, specific ,adaptations, of technologies such as ,knowledge bases,, ,expert systems,, ,information repositories,, group ,decision support systems,, ,intranets,, and ,computer-supported cooperative work, have been introduced to further enhance such efforts.,[2], +,In 1999, the term ,personal knowledge management, was introduced; it refers to the management of knowledge at the individual level.,[11], +,In the enterprise, early collections of case studies recognised the importance of knowledge management dimensions of strategy, ,process, and ,measurement,.,[12],[13], Key lessons learned include people and the cultural norms which influence their behaviors are the most critical resources for successful knowledge creation, dissemination and application; cognitive, social and organisational learning processes are essential to the success of a knowledge management strategy; and measurement, ,benchmarking, and incentives are essential to accelerate the learning process and to drive cultural change.,[13], In short, knowledge management programs can yield impressive benefits to individuals and organisations if they are purposeful, concrete and action-orientated., +,Research,[,edit,], +,KM emerged as a scientific discipline in the early 1990s.,[14], It was initially supported by individual practitioners, when ,Skandia, hired Leif Edvinsson of Sweden as the world's first ,Chief Knowledge Officer, (CKO).,[15], Hubert Saint-Onge (formerly of ,CIBC,, Canada), started investigating KM long before that.,[2], The objective of CKOs is to manage and maximise the intangible assets of their organisations.,[2], Gradually, CKOs became interested in practical and theoretical aspects of KM, and the new research field was formed.,[16], The KM idea has been taken up by academics, such as ,Ikujiro Nonaka, (,Hitotsubashi University,), Hirotaka Takeuchi (Hitotsubashi University), ,Thomas H. Davenport, (,Babson College,) and Baruch Lev (,New York University,).,[3],[17], In 2001, ,Thomas A. Stewart,, former editor at ,Fortune, magazine and subsequently the editor of ,Harvard Business Review,, published a cover story highlighting the importance of intellectual capital in organisations.,[18], The KM discipline has been gradually moving towards academic maturity.,[2], First, is a trend toward higher cooperation among academics; single-author publications are less common. Second, the role of practitioners has changed.,[16], Their contribution to academic research declined from 30% of overall contributions up to 2002, to only 10% by 2009.,[19], Third, the number of academic knowledge management journals has been steadily growing, currently reaching 27 outlets.,[20], +,Multiple KM disciplines exist; approaches vary by author and school.,[16],[21], As the discipline matured, academic debates increased regarding ,theory, and practice, including:, +, +,Techno-centric, with a focus on technology, ideally those that enhance ,knowledge sharing, and creation.,[22],[23], +,Organisational, with a focus on how an organisation can be designed to facilitate knowledge processes best.,[6], +,Ecological, with a focus on the interaction of people, ,identity,, knowledge, and environmental factors as a ,complex adaptive system, akin to a natural ,ecosystem,.,[24],[25], +, +,Regardless of the ,school of thought,, core components of KM roughly include people/culture, processes/structure and technology. The details depend on the ,perspective,.,[26], KM perspectives include:, +, +,community of practice,[27], +,social network analysis,[28], +,intellectual capital,[29], +,information theory,[14],[15], +,complexity science,[30], +,constructivism,[31],[32], +, +,The practical relevance of academic research in KM has been questioned,[33], with ,action research, suggested as having more relevance,[34], and the need to translate the findings presented in academic journals to a practice.,[12], +,Dimensions,[,edit,], +,Different ,frameworks, for distinguishing between different 'types of' knowledge exist.,[10], One proposed framework for categorizing the ,dimensions, of knowledge distinguishes ,tacit knowledge, and ,explicit knowledge,.,[30], Tacit knowledge represents internalised knowledge that an individual may not be consciously aware of, such as to accomplish particular tasks. At the opposite end of the spectrum, explicit knowledge represents knowledge that the individual holds consciously in mental focus, in a form that can easily be communicated to others.,[16],[35], +, +, +, +, +The Knowledge Spiral as described by Nonaka & Takeuchi., +, +, +,Ikujiro Nonaka proposed a model (,SECI,, for Socialization, Externalization, Combination, Internalization) which considers a spiraling interaction between ,explicit knowledge, and tacit knowledge.,[36], In this model, knowledge follows a cycle in which implicit knowledge is 'extracted' to become explicit knowledge, and explicit knowledge is 're-internalised' into implicit knowledge.,[36], +,Hayes and Walsham (2003) describe knowledge and knowledge management as two different perspectives.,[37], The content perspective suggests that knowledge is easily stored; because it may be codified, while the relational perspective recognises the contextual and relational aspects of knowledge which can make knowledge difficult to share outside the specific context in which it is developed.,[37], +,Early research suggested that KM needs to convert internalised tacit knowledge into explicit knowledge to share it, and the same effort must permit individuals to internalise and make personally meaningful any codified knowledge retrieved from the KM effort.,[6],[38], +,Subsequent research suggested that a distinction between tacit knowledge and explicit knowledge represented an oversimplification and that the notion of explicit knowledge is self-contradictory.,[11], Specifically, for knowledge to be made explicit, it must be translated into information (i.e., ,symbols, outside our heads).,[11],[39], More recently, together with ,Georg von Krogh, and ,Sven Voelpel,, Nonaka returned to his earlier work in an attempt to move the debate about knowledge conversion forward.,[4],[40], +,A second proposed framework for categorizing knowledge dimensions distinguishes embedded knowledge of a ,system, outside a human individual (e.g., an information system may have knowledge embedded into its design) from ,embodied knowledge, representing a learned capability of a human body's ,nervous, and ,endocrine systems,.,[41], +,A third proposed framework distinguishes between the exploratory creation of ""new knowledge"" (i.e., innovation) vs. the ,transfer, or exploitation of ""established knowledge"" within a group, organisation, or community.,[37],[42], Collaborative environments such as communities of practice or the use of ,social computing, tools can be used for both knowledge creation and transfer.,[42], +,Strategies,[,edit,], +,Knowledge may be accessed at three stages: before, during, or after KM-related activities.,[29], Organisations have tried knowledge capture ,incentives,, including making content submission mandatory and incorporating rewards into ,performance measurement, plans.,[43], Considerable controversy exists over whether such incentives work and no consensus has emerged.,[7], +,One strategy to KM involves actively managing knowledge (push strategy).,[7],[44], In such an instance, individuals strive to explicitly encode their knowledge into a shared knowledge repository, such as a ,database,, as well as retrieving knowledge they need that other individuals have provided (codification).,[44], +,Another strategy involves individuals making knowledge requests of experts associated with a particular subject on an ad hoc basis (pull strategy).,[7],[44], In such an instance, expert individual(s) provide ,insights, to requestor (personalisation).,[30], +,Hansen et al. defined the two strategies.,[45], Codification focuses on collecting and storing codified knowledge in electronic databases to make it accessible.,[46], Codification can therefore refer to both tacit and explicit knowledge.,[47], In contrast, personalization encourages individuals to share their knowledge directly.,[46], Information technology plays a less important role, as it is only facilitates communication and knowledge sharing., +,Other knowledge management strategies and instruments for companies include:,[7],[24],[30], +, +,Knowledge sharing (fostering a culture that encourages the sharing of information, based on the concept that knowledge is not irrevocable and should be shared and updated to remain relevant), +,Storytelling, (as a means of transferring tacit knowledge), +,Cross-project learning, +,Make knowledge-sharing as a key roles in employees' job description, +,After-action reviews, +,Knowledge mapping (a map of knowledge repositories within a company accessible by all), +,Communities of practice, +,Expert directories (to enable knowledge seeker to reach to the experts), +,Expert systems, (knowledge seeker responds to one or more specific questions to reach knowledge in a repository), +,Best practice transfer, +,Knowledge fairs, +,Competence management (systematic evaluation and planning of competences of individual organisation members), +,Proximity & architecture (the physical situation of employees can be either conducive or obstructive to knowledge sharing), +,Master–apprentice relationship, Mentor-mentee relationship, Job-shadowing, +,Collaborative software, technologies (wikis, shared bookmarking, blogs, ,social software,, etc.), +,Knowledge repositories (databases, ,bookmarking engines,, etc.), +,Measuring and reporting intellectual capital (a way of making explicit knowledge for companies), +,Knowledge brokers, (some organisational members take on responsibility for a specific ""field"" and act as first reference on a specific subject), +,Inter-project knowledge transfer, +,Intra-organizational knowledge sharing, +,Inter-organizational knowledge sharing, +, +,Motivations,[,edit,], +,Multiple ,motivation,s lead organisations to undertake KM.,[35], Typical considerations include:,[30], +, +,Making available increased knowledge content in the ,development, and provision of ,products, and ,services, +,Achieving shorter development cycles, +,Facilitating and managing innovation and organisational learning, +,Leveraging ,expertise,s across the organisation, +,Increasing ,network, ,connectivity, between internal and external individuals, +,Managing business environments and allowing employees to obtain relevant insights and ,ideas, appropriate to their work, +,Solving intractable or ,wicked problems, +,Managing intellectual capital and assets in the workforce (such as the expertise and ,know-how, possessed by key individuals or stored in repositories), +, +,KM technologies,[,edit,], +,Knowledge management (KM) technology can be categorised:, +, +,Groupware,—Software that facilitates collaboration and sharing of organisational information. One of the earliest successful products in this category was ,Lotus Notes,: it provided tools for ,threaded discussions,, ,document sharing,, organisation-wide uniform email, etc., +,Workflow systems,—Systems that allow the representation of processes associated with the creation, use and maintenance of organisational knowledge. For example, the process to create and utilise forms and documents., +,Content management, and ,document management, systems—Software systems that automate the process of creating web content and/or documents. Roles such as editors, graphic designers, writers and producers can be explicitly modeled along with the tasks in the process and validation criteria. Commercial vendors started either to support documents (e.g. ,Documentum,) or to support web content (e.g. ,Interwoven,) but as the Internet grew these functions merged and vendors now perform both functions., +,Enterprise portals,—Software that aggregates information across the entire organisation or for groups such as project teams (e.g. ,Microsoft SharePoint,)., +,eLearning,—Software that enables organisations to create customised training and education. This can include lesson plans, monitoring progress and online classes., +,Planning and ,scheduling software,—Software that automates schedule creation and maintenance (e.g. ,Microsoft Outlook,). The planning aspect can integrate with ,project management software, such as ,Microsoft Project,.,[22], +,Telepresence,—Software that enables individuals to have virtual ""face-to-face"" meetings without assembling at one location. Videoconferencing is the most obvious example., +, +,These categories overlap. Workflow, for example, is a significant aspect of a content or document management systems, most of which have tools for developing enterprise portals.,[7],[48], +,Proprietary KM technology products such as Lotus Notes defined proprietary formats for email, documents, forms, etc. The Internet drove most vendors to adopt Internet formats. ,Open-source, and ,freeware, tools for the creation of ,blogs, and ,wikis, now enable capabilities that used to require expensive commercial tools.,[34],[49], +,KM is driving the adoption of tools that enable organisations to work at the semantic level,,[50], as part of the ,Semantic Web,:,[51], for example, the ,Stanford, ,Protégé Ontology Editor,. Some commentators have argued that after many years the Semantic Web has failed to see widespread adoption,,[52],[53],[54], while other commentators have argued that it has been a success.,[55], +,Legal knowledge management,[,edit,], +,Knowledge management in law firms has evolved through three phases.,[56],  Phase one focused primarily on the development of taxonomies to systematize attorney work product and related research.  The second phase focused on enterprise search to mine the growing volume of information managed by law firms.  Legal industry specific search engines were deployed by many AmLaw 100 law firms during this phase. Phase 3 was driven by changes in the legal market place and growing competition that led to price pressure and increased demands for efficiency from clients. A major focus of law firm KM today is in using historical billing information to generate alternative fee arrangements and more generally in the area of legal project management to more efficiently deliver legal services to clients., +,See also,[,edit,], +, +, +,Customer knowledge, +,Electronic Journal of Knowledge Management, +,Ignorance management, +,Information management, +,Information governance, +,Journal of Knowledge Management, +,Journal of Knowledge Management Practice, +,Knowledge cafe, +,Knowledge community, +,Knowledge ecosystem, +,Knowledge engineering, +,Knowledge management software, +,Knowledge modeling, +,Knowledge transfer, +,Knowledge translation, +,Legal case management, +, +, +,References,[,edit,], +, +, +,^, ,Girard, John P.; Girard, JoAnn L. (2015). ,""Defining knowledge management: Toward an applied compendium"", ,(PDF),. ,Online Journal of Applied Knowledge Management,. ,3, (1): 14., , +,^ ,a, ,b, ,c, ,d, ,e, ,f, ,g, ,""Introduction to Knowledge Management"",. ,www.unc.edu,. University of North Carolina at Chapel Hill. Archived from the original on March 19, 2007,. Retrieved ,11 September, 2014,., ,CS1 maint: Unfit url (,link,), +,^ ,a, ,b, ,Nonaka, Ikujiro (1991). ""The knowledge creating company"". ,Harvard Business Review,. ,69, (6): 96–104., , +,^ ,a, ,b, ,Nonaka, Ikujiro; von Krogh, Georg (2009). ""Tacit Knowledge and Knowledge Conversion: Controversy and Advancement in Organizational Knowledge Creation Theory"". ,Organization Science,. ,20, (3): 635–652. ,doi,:,10.1287/orsc.1080.0412,., , +,^, ,Bellinger, Gene,. ,""Mental Model Musings"",. ,Systems Thinking Blog,. Retrieved ,18 April, 2013,., , +,^ ,a, ,b, ,c, ,d, ,Addicot, Rachael; McGivern, Gerry; Ferlie, Ewan (2006). ""Networks, Organizational Learning and Knowledge Management: NHS Cancer Networks"". ,Public Money & Management,. ,26, (2): 87–94. ,doi,:,10.1111/j.1467-9302.2006.00506.x,., , +,^ ,a, ,b, ,c, ,d, ,e, ,f, ,Gupta, Jatinder; Sharma, Sushil (2004). ,Creating Knowledge Based Organizations,. Boston: Idea Group Publishing. ,ISBN, ,1-59140-163-1,., , +,^, ,Maier, R. (2007). ,Knowledge Management Systems: Information And Communication Technologies for Knowledge Management (3rd edition),. Berlin: Springer., , +,^, ,Sanchez, R (1996) Strategic Learning and Knowledge Management, Wiley, Chichester, +,^ ,a, ,b, ,c, ,Sanchez, R. (1996). ,Strategic Learning and Knowledge Management,. Chichester: Wiley., , +,^ ,a, ,b, ,c, ,Wright, Kirby (2005). ""Personal knowledge management: supporting individual knowledge worker performance"". ,Knowledge Management Research and Practice,. ,3, (3): 156–165. ,doi,:,10.1057/palgrave.kmrp.8500061,., , +,^ ,a, ,b, ,Booker, Lorne; Bontis, Nick; Serenko, Alexander (2008). ""The relevance of knowledge management and intellectual capital research"". ,Knowledge and Process Management,. ,15, (4): 235–246. ,doi,:,10.1002/kpm.314,., , +,^ ,a, ,b, ,Morey, Daryl; Maybury, Mark; Thuraisingham, Bhavani (2002). ,Knowledge Management: Classic and Contemporary Works,. MIT Press. p. 451. ,ISBN, ,0-262-13384-9,., , +,^ ,a, ,b, ,McInerney, Claire (2002). ""Knowledge Management and the Dynamic Nature of Knowledge"". ,Journal of the American Society for Information Science and Technology,. ,53, (12): 1009–1018. ,doi,:,10.1002/asi.10109,., , +,^ ,a, ,b, ,""Information Architecture and Knowledge Management"",. Kent State University. Archived from ,the original, on June 29, 2008,. Retrieved ,18 April, 2013,., , +,^ ,a, ,b, ,c, ,d, ,Bray, David. ""SSRN-Literature Review – Knowledge Management Research at the Organizational Level"". ,Papers.ssrn.com,. ,SSRN, ,991169, ,., , ,Missing or empty ,|url=, (,help,);, ,|access-date=, requires ,|url=, (,help,), +,^, ,Davenport, Tom. ,""Enterprise 2.0: The New, New Knowledge Management?"",. ,Harvard Business Review,. Retrieved ,18 April, 2013,., , +,^, ,Stewart, Thomas A. (1998). ,Intellectual Capital: The New Wealth of Organizations,. Crown Business Publishers. ,ISBN, ,0385483813,., , +,^, ,Serenko, Alexander; Bontis, Nick; Booker, Lorne; Sadeddin, Khaled; Hardie, Timothy (2010). ""A scientometric analysis of knowledge management and intellectual capital academic literature (1994–2008)"". ,Journal of Knowledge Management,. ,14, (1): 13–23. ,doi,:,10.1108/13673271011015534,., , +,^, ,Serenko, Alexander; Bontis, Nick (2017). ,""Global Ranking of Knowledge Management and Intellectual Capital Academic Journals: 2017 Update"", ,(PDF),. ,Journal of Knowledge Management,. ,21, (3): 675–692. ,doi,:,10.1108/JKM-11-2016-0490,., , +,^, ,Langton Robbins, N. S. (2006). ,Organizational Behaviour (Fourth Canadian Edition),. Toronto, Ontario: Pearson Prentice Hall., , +,^ ,a, ,b, ,Alavi, Maryam; Leidner, Dorothy E. (1999). ,""Knowledge management systems: issues, challenges, and benefits"",. ,Communications of the AIS,. ,1, (2)., , +,^, ,Rosner, D.; Grote, B.; Hartman, K.; Hofling, B.; Guericke, O. (1998). ""From natural language documents to sharable product knowledge: a knowledge engineering approach"". In Borghoff, Uwe M.; Pareschi, Remo. ,Information technology for knowledge management,. Springer Verlag. pp. 35–51., , +,^ ,a, ,b, ,Bray, David. ""SSRN-Knowledge Ecosystems: A Theoretical Lens for Organizations Confronting Hyperturbulent Environments"". ,Papers.ssrn.com,. ,SSRN, ,984600, ,., , ,Missing or empty ,|url=, (,help,), +,^, ,Carlson Marcu Okurowsk, Lynn; Marcu, Daniel; Okurowsk, Mary Ellen. ,""Building a Discourse-Tagged Corpus in the Framework of Rhetorical Structure Theory"", ,(PDF),. University of Pennsylvania. Archived from ,the original, ,(PDF), on 25 March 2012,. Retrieved ,19 April, 2013,., , +,^, ,Spender, J.-C.; Scherer, A. G. (2007). ""The Philosophical Foundations of Knowledge Management: Editors' Introduction"". ,Organization,. ,14, (1): 5–28. ,doi,:,10.1177/1350508407071858,. ,SSRN, ,958768, ,., , +,^, ,""TeacherBridge: Knowledge Management in Communities of Practice"", ,(PDF),. Virginia Tech. Archived from ,the original, ,(PDF), on 17 December 2008,. Retrieved ,18 April, 2013,., , +,^, ,Groth, Kristina. ,""Using social networks for knowledge management"", ,(PDF),. Royal Institute of Technology, Stockholm, Sweden,. Retrieved ,18 April, 2013,., , +,^ ,a, ,b, ,Bontis, Nick; Choo, Chun Wei (2002). ,The Strategic Management of Intellectual Capital and Organizational Knowledge,. New York: Oxford University Press. ,ISBN, ,0-19-513866-X,., , +,^ ,a, ,b, ,c, ,d, ,e, ,Snowden, Dave (2002). ""Complex Acts of Knowing – Paradox and Descriptive Self Awareness"". ,Journal of Knowledge Management, Special Issue,. ,6, (2): 100–111. ,doi,:,10.1108/13673270210424639,., , +,^, ,Nanjappa, Aloka; Grant, Michael M. (2003). ,""Constructing on constructivism: The role of technology"", ,(PDF),. ,Electronic Journal for the Integration of Technology in Education,. ,2, (1). Archived from ,the original, ,(PDF), on 2008-12-17., , +,^, ,Wyssusek, Boris. ,""Knowledge Management - A Sociopragmatic Approach (2001)"",. ,CiteSeerX,. Retrieved ,18 April, 2013,., , +,^, ,Ferguson, J. (2005). ""Bridging the gap between research and practice"". ,Knowledge Management for Development Journal,. ,1, (3): 46–54., , +,^ ,a, ,b, ,Andriessen, Daniel (2004). ""Reconciling the rigor-relevance dilemma in intellectual capital research"". ,The Learning Organization,. ,11, (4/5): 393–401. ,doi,:,10.1108/09696470410538288,., , +,^ ,a, ,b, ,Alavi, Maryam; Leidner, Dorothy E. (2001). ""Review: Knowledge Management and Knowledge Management Systems: Conceptual Foundations and Research Issues"". ,MIS Quarterly,. ,25, (1): 107–136. ,doi,:,10.2307/3250961,. ,JSTOR, ,3250961,., , +,^ ,a, ,b, ,Nonaka, Ikujiro; Takeuchi, Hirotaka (1995). ,The knowledge creating company: how Japanese companies create the dynamics of innovation,. New York: Oxford University Press. p. 284. ,ISBN, ,978-0-19-509269-1,., , +,^ ,a, ,b, ,c, ,Hayes, M.; Walsham, G. (2003). ""Knowledge sharing and ICTs: A relational perspective"". In Easterby-Smith, M.; Lyles, M.A. ,The Blackwell Handbook of Organizational Learning and Knowledge Management,. Malden, MA: Blackwell. pp. 54–77. ,ISBN, ,978-0-631-22672-7,., , +,^, ,""Rhetorical Structure Theory Website"",. ,RST,. Retrieved ,19 April, 2013,., , +,^, ,Serenko, Alexander; Bontis, Nick (2004). ,""Meta-review of knowledge management and intellectual capital literature: citation impact and research productivity rankings"", ,(PDF),. ,Knowledge and Process Management,. ,11, (3): 185–198. ,doi,:,10.1002/kpm.203,. Archived from ,the original, ,(PDF), on 2007-09-26., , +,^, ,Nonaka, I.; von Krogh, G. & Voelpel S. (2006). ""Organizational knowledge creation theory: Evolutionary paths and future advances"". ,Organization Studies,. ,27, (8): 1179–1208. ,doi,:,10.1177/0170840606066312,., , +,^, ,Sensky, Tom (2002). ""Knowledge Management"". ,Advances in Psychiatric Treatment,. ,8, (5): 387–395. ,doi,:,10.1192/apt.8.5.387,., , +,^ ,a, ,b, ,""SSRN-Exploration, Exploitation, and Knowledge Management Strategies in Multi-Tier Hierarchical Organizations Experiencing Environmental Turbulence by David Bray"". Papers.ssrn.com. ,SSRN, ,961043, ,., , ,Missing or empty ,|url=, (,help,);, ,|access-date=, requires ,|url=, (,help,), +,^, ,Benbasat, Izak; Zmud, Robert (1999). ""Empirical research in information systems: The practice of relevance"". ,MIS Quarterly,. ,23, (1): 3–16. ,doi,:,10.2307/249403,. ,JSTOR, ,249403,., , +,^ ,a, ,b, ,c, ,""Knowledge Management for Data Interoperability"", ,(PDF),. Retrieved ,18 April, 2013,., , +,^, ,Hansen et al., 1999, +,^ ,a, ,b, ,Smith (2004), p. 7, +,^, ,Hall (2006), pp. 119f, +,^, ,Rao, Madanmohan (2005). ,Knowledge Management Tools and Techniques,. Elsevier. pp. 3–42. ,ISBN, ,0-7506-7818-6,., , +,^, ,Calvin, D. Andrus (2005). ""The Wiki and the Blog: Toward a Complex Adaptive Intelligence Community"". ,Studies in Intelligence,. ,49, (3). ,SSRN, ,755904, ,., , +,^, ,Capozzi, Marla M. (2007). ""Knowledge Management Architectures Beyond Technology"". ,First Monday,. ,12, (6). ,doi,:,10.5210/fm.v12i6.1871,., , +,^, ,Berners-Lee, Tim; Hendler, James; Lassila, Ora (May 17, 2001). ,""The Semantic Web A new form of Web content that is meaningful to computers will unleash a revolution of new possibilities"",. ,Scientific American,. ,284,: 34–43. ,doi,:,10.1038/scientificamerican0501-34,. Archived from ,the original, on April 24, 2013., , +,^, ,Bakke, Sturla; ygstad, Bendik (May 2009). ,""Two emerging technologies: a comparative analysis of Web 2.0 and the Semantic Web"",. ,CONF-IRM 2009 Proceedings, (28). ,Our research question is: how do we explain the surprising success of Web 2.0 and the equally surprising non-fulfillment of the Semantic Web. Building on a case study approach we conducted a in depth comparative analysis of the two emerging technologies. We propose two conclusions. First, traditional top-down management of an emerging global technology has proved not to be effective in the case of the Semantic Web and Web 2.0, and second, the success for such global technologies is mainly associated with bootstrapping an already installed base., , +,^, ,Grimes, Seth (7 January 2014). ,""Semantic Web business: going nowhere slowly"",. ,InformationWeek,. Retrieved ,5 September, 2017,. ,SemWeb is a narrowly purposed replica of a subset of the World Wide Web. It's useful for information enrichment in certain domains, via a circumscribed set of tools. However, the SemWeb offers a vanishingly small benefit to the vast majority of businesses. The vision persists but is unachievable; the business reality of SemWeb is going pretty much nowhere., , +,^, ,Cagle, Kurt (3 July 2016). ,""Why the Semantic Web has failed"",. ,LinkedIn,. Retrieved ,5 September, 2017,. ,This may sound like heresy, but my personal belief is that the semantic web has failed. Not in ""just give it a few more years and it'll catch on"" or ""it's just a matter of tooling and editors"". No, I'd argue that, as admirable as the whole goal of the semantic web is, it's just not working in reality., , +,^, ,Zaino, Jennifer (23 September 2014). ,""The Semantic Web's rocking, and there ain't no stopping it now"",. ,dataversity.net,. Retrieved ,5 September, 2017,. ,Make no mistake about it: The semantic web has been a success and that's not about to stop now. That was essentially the message delivered by W3C Data Activity Lead Phil Archer, during his keynote address celebrating the semantic web's ten years of achievement at last month's Semantic Technology & Business Conference in San Jose., , +,^, ,Winston, A. M. (2014). Law firm knowledge management: selected annotated bibliography. ,Law Library Journal, 106(2), 175-198., +, +, +,External links,[,edit,], +, +, +, +,Wikiquote has quotations related to: ,Knowledge management, +, +, +, +,Knowledge management, at Curlie (based on ,DMOZ,), +, +, +, +, +, +, +, +,v, +,t, +,e, +, +, +,Knowledge management, +, +, +, +,Main articles, +, +, +, +,Personal knowledge management, +,Knowledge worker, +,Intellectual capital, +,Chief knowledge officer, +,Collective intelligence, +, +, +, +, +, +,Related to electronic systems, +, +, +, +,Enterprise content management, +,Knowledge management software, +, +, +, +, +, +,Related, +, +, +, +,Community of practice, +,Design rationale, +,Knowledge, +, +, +, +, +, +,Journals, +, +, +, +,Knowledge Management Research and Practice, +, +, +, +, +, +, +, +, +, +,Authority control, +, +, +, +,GND,: ,4561842-2, +,NDL,: ,00947301, +, +, +, +, +, +, + + +, +, +, +, +",Knowledge management +" 15 December 2017, at 17:26.","""Blogger"" redirects here. For the Google service with same name, see ,Blogger (service),. For other uses, see ,Blog (disambiguation),., +,Not to be confused with ,.blog,., +, +, +,Journalism, +, +, +, +, +, +, +, +,News, +,Writing style, +,Ethics, +,Objectivity, +,News values, +,Attribution, +,Defamation, +,Editorial independence, +,Journalism school, +,Index of journalism articles, +, +, +, +, +,Areas, +, +, +, +, +,Arts, +,Business, +,Data, +,Entertainment, +,Environment, +,Fashion, +,Medicine, +,Politics, +,Science, +,Sports, +,Technology, +,Trade, +,Traffic, +,Weather, +,World, +, +, +, +, +,Genres, +, +, +, +, +,Advocacy, +,Analytic, +,Blogging, +,Broadcast, +,Citizen, +,Civic, +,Collaborative, +,Comics-based, +,Community, +,Data, +,Database, +,Gonzo, +,Immersion, +,Investigative, +,Literary, +,Muckraking, +,Narrative, +,"",New Journalism,"", +,Non-profit, +,Online, +,Opinion, +,Peace, +,Photojournalism, +,Scientific, +,Sensor, +,Underground, +,Visual, +,Watchdog, +, +, +, +, +,Social impact, +, +, +, +, +,Fake news, +,Fourth Estate, +,Fifth Estate, +,Freedom of the press, +,Infotainment, +,Media bias, +,Public relations, +,Press service, +,Propaganda model, +,Yellow journalism, +, +, +, +, +,News media, +, +, +, +, +,Newspapers, +,Magazines, +,TV and radio, +,Internet, +,News agencies, +,Alternative media, +, +, +, +, +,Roles, +, +, +, +, +,Journalists ,(reporters), +,Columnist, +,Blogger, +,Editor, +,Copy editor, +,Meteorologist, +,News presenter, +,Photographer, +,Pundit / commentator, +, +, +, +, +, +, +, ,Journalism portal, +,Category: Journalism, +, +, +, +, +, +, +, +,v, +,t, +,e, +, +, +, +, +, +,A ,blog, (a ,truncation, of the expression "",weblog,""),[1], is a discussion or informational ,website, published on the ,World Wide Web, consisting of discrete, often informal ,diary,-style text entries (""posts""). Posts are typically displayed in reverse chronological order, so that the most recent post appears first, at the top of the web page. Until 2009, blogs were usually the work of a single individual,,[,citation needed,], occasionally of a small group, and often covered a single subject or topic. In the 2010s, ""multi-author blogs"" (MABs) have developed, with posts written by large numbers of authors and sometimes professionally edited. MABs from ,newspapers,, other media outlets, ,universities,, ,think tanks,, ,advocacy groups,, and similar institutions account for an increasing quantity of blog traffic. The rise of ,Twitter, and other "",microblogging,"" systems helps integrate MABs and single-author blogs into the news media. ,Blog, can also be used as a verb, meaning ,to maintain or add content to a blog,., +,The emergence and growth of blogs in the late 1990s coincided with the advent of web publishing tools that facilitated the posting of content by non-technical users who did not have much experience with ,HTML, or ,computer programming,. Previously, a knowledge of such technologies as ,HTML, and ,File Transfer Protocol, had been required to publish content on the Web, and as such, early Web users tended to be ,hackers, and computer enthusiasts. In the 2010s, the majority are interactive ,Web 2.0, websites, allowing visitors to leave online comments, and it is this interactivity that distinguishes them from other static websites.,[2], In that sense, blogging can be seen as a form of ,social networking service,. Indeed, bloggers do not only produce content to post on their blogs, but also often build social relations with their readers and other bloggers.,[3], However, there are high-readership blogs which do not allow comments., +,Many blogs provide commentary on a particular subject or topic, ranging from politics to sports. Others function as more personal ,online diaries,, and others function more as ,online brand advertising, of a particular individual or company. A typical blog combines text, digital images, and links to other blogs, ,web pages,, and other media related to its topic. The ability of readers to leave publicly viewable comments, and interact with other commenters, is an important contribution to the popularity of many blogs. However, blog owners or authors often moderate and filter online comments to remove ,hate speech, or other offensive content. Most blogs are primarily textual, although some focus on art (,art blogs,), photographs (,photoblogs,), videos (,video blogs, or ""vlogs""), music (,MP3 blogs,), and audio (,podcasts,). In education, blogs can be used as instructional resources. These blogs are referred to as ,edublogs,. ,Microblogging, is another type of blogging, featuring very short posts., +,On 16 February 2011,[update],, there were over 156 million public blogs in existence. On 20 February 2014, there were around 172 million ,Tumblr,[4], and 75.8 million ,WordPress,[5], blogs in existence worldwide. According to critics and other bloggers, ,Blogger, is the most popular blogging service used today. However, Blogger does not offer public statistics.,[6],[7], ,Technorati, lists 1.3 million blogs as of February 22, 2014.,[8], +, +, +, +,Contents, +, +, +,1, ,History, +, +,1.1, ,Origins, +,1.2, ,Rise in popularity, +,1.3, ,Political impact, +,1.4, ,Mainstream popularity, +, +, +,2, ,Types, +,3, ,Community and cataloging, +,4, ,Popularity, +,5, ,Blurring with the mass media, +,6, ,Consumer-generated advertising, +,7, ,Legal and social consequences, +, +,7.1, ,Defamation or liability, +,7.2, ,Employment, +, +,7.2.1, ,Business owners, +, +, +,7.3, ,Political dangers, +,7.4, ,Personal safety, +,7.5, ,Behavior, +, +, +,8, ,See also, +,9, ,References, +,10, ,Further reading, +,11, ,External links, +, +, +, +,History, +, +, +, +, +Early example of a ""diary"" style blog consisting of text and images transmitted wirelessly in ,real time, from a ,wearable computer, with ,head-up display,, 22 February 1995, +, +, +,Main articles: ,History of blogging, and ,online diary, +,The term ""weblog"" was coined by ,Jorn Barger,[9], on 17 December 1997. The short form, ""blog"", was coined by Peter Merholz, who jokingly broke the word ,weblog, into the phrase ,we blog, in the sidebar of his blog Peterme.com in April or May 1999.,[10],[11],[12], Shortly thereafter, ,Evan Williams, at ,Pyra Labs, used ""blog"" as both a noun and verb (""to blog"", meaning ""to edit one's weblog or to post to one's weblog"") and devised the term ""blogger"" in connection with Pyra Labs' ,Blogger, product, leading to the popularization of the terms.,[13], +,Origins, +,Before blogging became popular, digital communities took many forms, including ,Usenet,, commercial online services such as ,GEnie,, ,Byte Information Exchange, (BIX) and the early ,CompuServe,, ,e-mail lists,,,[14], and ,Bulletin Board Systems, (BBS). In the 1990s, ,Internet forum, software, created running conversations with ""threads"". Threads are topical connections between messages on a virtual "",corkboard,"". From 14 June 1993, Mosaic Communications Corporation maintained their ""What’s New"",[15], list of new websites, updated daily and archived monthly. The page was accessible by a special ""What's New"" button in the Mosaic web browser., +,The modern blog evolved from the ,online diary,, where people would keep a running account of the events in their personal lives. Most such writers called themselves diarists, ,journalists,, or journalers. ,Justin Hall,, who began personal blogging in 1994 while a student at ,Swarthmore College,, is generally recognized as one of the earlier bloggers,,[16], as is ,Jerry Pournelle,.,[17], ,Dave Winer,'s Scripting News is also credited with being one of the older and longer running weblogs.,[18],[19], The Australian Netguide magazine maintained the Daily Net News,[20], on their web site from 1996. Daily Net News ran links and daily reviews of new websites, mostly in Australia., +,Another early blog was Wearable Wireless Webcam, an online shared diary of a person's personal life combining text, digital video, and digital pictures transmitted live from a wearable computer and ,EyeTap, device to a web site in 1994. This practice of semi-automated blogging with live video together with text was referred to as ,sousveillance,, and such journals were also used as evidence in legal matters. Early blogs were simply manually updated components of common ,Websites,. However, the evolution of electronic and software tools to facilitate the production and maintenance of Web articles posted in reverse chronological order made the publishing process feasible to a much larger, less technical, population. Ultimately, this resulted in the distinct class of online publishing that produces blogs we recognize today. For instance, the use of some sort of browser-based software is now a typical aspect of ""blogging"". Blogs can be hosted by dedicated ,blog hosting services,, or they can be run using blog software, or on regular ,web hosting services,. Some early bloggers, such as ,The Misanthropic Bitch,, who began in 1997, actually referred to their online presence as a ,zine,, before the term blog entered common usage., +,Rise in popularity, +,After a slow start, blogging rapidly gained in popularity. Blog usage spread during 1999 and the years following, being further popularized by the near-simultaneous arrival of the first hosted blog tools:, +, +,Bruce Ableson, launched ,Open Diary, in October 1998, which soon grew to thousands of online diaries. Open Diary innovated the reader comment, becoming the first blog community where readers could add comments to other writers' blog entries., +,Brad Fitzpatrick, started ,LiveJournal, in March 1999., +,Andrew Smales created Pitas.com in July 1999 as an easier alternative to maintaining a ""news page"" on a Web site, followed by DiaryLand in September 1999, focusing more on a personal diary community.,[21], +,Evan Williams, and ,Meg Hourihan, (,Pyra Labs,) launched ,Blogger.com, in August 1999 (purchased by ,Google, in February 2003), +, +,Political impact, +, +, +, +, +On 6 December 2002, Josh Marshall's talkingpointsmemo.com blog called attention to U.S. Senator ,Lott's, comments regarding Senator Thurmond. Senator Lott was eventually to resign his Senate leadership position over the matter., +, +, +,An early milestone in the rise in importance of blogs came in 2002, when many bloggers focused on comments by ,U.S. Senate Majority Leader, ,Trent Lott,.,[22], Senator Lott, at a party honoring ,U.S. Senator, ,Strom Thurmond,, praised Senator Thurmond by suggesting that the United States would have been better off had Thurmond been elected president. Lott's critics saw these comments as a tacit approval of ,racial segregation,, a policy advocated by Thurmond's ,1948 presidential campaign,. This view was reinforced by documents and recorded interviews dug up by bloggers. (See ,Josh Marshall,'s ,Talking Points Memo,.) Though Lott's comments were made at a public event attended by the media, no major media organizations reported on his controversial comments until after blogs broke the story. Blogging helped to create a political crisis that forced Lott to step down as majority leader., +,Similarly, blogs were among the driving forces behind the "",Rathergate,"" scandal. To wit: (television journalist) ,Dan Rather, presented documents (on the CBS show ,60 Minutes,) that conflicted with accepted accounts of President Bush's military service record. Bloggers declared the documents to be ,forgeries, and presented evidence and arguments in support of that view. Consequently, CBS apologized for what it said were inadequate reporting techniques (see ,Little Green Footballs,). Many bloggers view this scandal as the advent of blogs' acceptance by the mass media, both as a news source and opinion and as means of applying political pressure.,[,original research?,], The impact of these stories gave greater credibility to blogs as a medium of news dissemination. Though often seen as partisan gossips,,[,citation needed,], bloggers sometimes lead the way in bringing key information to public light, with mainstream media having to follow their lead. More often, however, news blogs tend to react to material already published by the mainstream media. Meanwhile, an increasing number of experts blogged, making blogs a source of in-depth analysis.,[,original research?,], +,In ,Russia,, some political bloggers have started to challenge the dominance of official, overwhelmingly pro-government media. Bloggers such as ,Rustem Adagamov, and ,Alexei Navalny, have many followers and the latter's nickname for the ruling ,United Russia, party as the ""party of crooks and thieves"" has been adopted by anti-regime protesters.,[23], This led to the ,Wall Street Journal, calling Navalny ""the man ,Vladimir Putin, fears most"" in March 2012.,[24], +,Mainstream popularity, +,By 2004, the role of blogs became increasingly mainstream, as ,political consultants,, news services, and candidates began using them as tools for outreach and opinion forming. Blogging was established by politicians and political candidates to express opinions on war and other issues and cemented blogs' role as a news source. (See ,Howard Dean, and ,Wesley Clark,.) Even politicians not actively campaigning, such as the ,UK's Labour Party's, ,MP, ,Tom Watson,, began to blog to bond with constituents. In January 2005, ,Fortune, magazine listed eight bloggers whom business people ""could not ignore"": ,Peter Rojas,, ,Xeni Jardin,, ,Ben Trott,, ,Mena Trott,, ,Jonathan Schwartz,, Jason Goldman, ,Robert Scoble,, and ,Jason Calacanis,.,[25], +,Israel, was among the first national governments to set up an official blog.,[26], Under ,David Saranga,, the ,Israeli Ministry of Foreign Affairs, became active in adopting ,Web 2.0, initiatives, including an official ,video blog,[26], and a ,political blog,.,[27], The Foreign Ministry also held a ,microblogging, press conference via ,Twitter, about its ,war with Hamas,, with Saranga answering questions from the public in common text-messaging abbreviations during a live worldwide ,press conference,.,[28], The questions and answers were later posted on ,IsraelPolitik,, the country's official political blog.,[29], +,The impact of blogging upon the mainstream media has also been acknowledged by governments. In 2009, the presence of the American journalism industry had declined to the point that several newspaper corporations were filing for bankruptcy, resulting in less direct competition between newspapers within the same circulation area. Discussion emerged as to whether the newspaper industry would benefit from a stimulus package by the federal government. U.S. President ,Barack Obama, acknowledged the emerging influence of blogging upon society by saying ""if the direction of the news is all blogosphere, all opinions, with no serious fact-checking, no serious attempts to put stories in context, then what you will end up getting is people shouting at each other across the void but not a lot of mutual understanding”.,[30], Between 2009 and 2012, an ,Orwell Prize, for blogging was awarded., +,Types, +, +, +, +, +A screenshot from the BlogActive website., +, +, +,There are many different types of blogs, differing not only in the type of content, but also in the way that content is delivered or written., +, +,Personal blogs, +,The personal blog is an ongoing online diary or commentary written by an individual, rather than a corporation or organization. While the vast majority of personal blogs attract very few readers, other than the blogger's immediate family and friends, a small number of personal blogs have become popular, to the point that they have attracted lucrative advertising sponsorship. A tiny number of personal bloggers have become famous, both in the online community and in the real world., +, +, +,Collaborative blogs or group blogs, +,A type of weblog in which posts are written and published by more than one author. The majority of high-profile collaborative blogs are based around a single uniting theme, such as politics, technology or advocacy. In recent years, the ,blogosphere, has seen the emergence and growing popularity of more collaborative efforts, often set up by already established bloggers wishing to pool time and resources, both to reduce the pressure of maintaining a popular website and to attract a larger readership., +, +, +,Microblogging, +,Microblogging is the practice of posting small pieces of digital content—which could be text, pictures, links, short videos, or other media—on the Internet. Microblogging offers a portable communication mode that feels organic and spontaneous to many users. It has captured the public imagination, in part because the short posts are easy to read on the go or when waiting. Friends use it to keep in touch, business associates use it to coordinate meetings or share useful resources, and celebrities and politicians (or their publicists) microblog about concert dates, lectures, book releases, or tour schedules. A wide and growing range of add-on tools enables sophisticated updates and interaction with other applications. The resulting profusion of functionality is helping to define new possibilities for this type of communication.,[31], Examples of these include ,Twitter,, ,Facebook,, ,Tumblr, and, by far the largest, ,WeiBo,., +, +, +,Corporate and organizational blogs, +,A blog can be private, as in most cases, or it can be for ,business, or ,not-for-profit organization, or ,government, purposes. Blogs used internally, and only available to employees via an ,Intranet, are called ,corporate blogs,. Companies use internal corporate blogs enhance the communication, culture and ,employee engagement, in a ,corporation,. Internal corporate blogs can be used to communicate news about company policies or procedures, build employee ,esprit de corps, and improve ,morale,. Companies and other organizations also use external, publicly accessible blogs for ,marketing,, ,branding,, or ,public relations, purposes. Some organizations have a blog authored by their executive; in practice, many of these executive blog posts are penned by a ,ghostwriter,, who makes posts in the style of the credited author. Similar blogs for clubs and societies are called club blogs, group blogs, or by similar names; typical use is to inform members and other interested parties of club and member activities., +, +, +,Aggregated blogs, +,Individuals or organization may aggregate selected feeds on specific topic, product or service and provide combined view for its readers. This allows readers to concentrate on reading instead of searching for quality on-topic content and managing subscriptions. Many such aggregation called planets from name of ,Planet (software), that perform such aggregation, hosting sites usually have ,planet., ,subdomain, in ,domain name, (like ,http://planet.gnome.org/,)., +, +, +,By ,genre, +,Some blogs focus on a particular subject, such as ,political blogs,, journalism blogs, ,health blogs,, ,travel blogs, (also known as ,travelogs,), gardening blogs, house blogs, ,book blogs,,,[32],[33], ,fashion blogs,, beauty blogs, lifestyle blogs, party blogs, wedding blogs, photography blogs, ,project blogs,, psychology blogs, sociology blogs, ,education blogs,, ,niche blogs,, ,classical music blogs,, quizzing blogs, ,legal blogs, (often referred to as a blawgs), or ,dreamlogs,. ,How-to,/,Tutorial, blogs are becoming increasing popular.,[34], Two common types of genre blogs are ,art blogs, and ,music blogs,. A blog featuring discussions especially about ,home, and ,family, is not uncommonly called a ,mom blog, and one made popular is by ,Erica Diamond, who created Womenonthefence.com which is syndicated to over two million readers monthly.,[35],[36],[37],[38],[39],[40], While not a legitimate type of blog, one used for the sole purpose of spamming is known as a ,splog,., +, +, +,By media type, +,A blog comprising videos is called a ,vlog,, one comprising links is called a ,linklog,, a site containing a portfolio of sketches is called a ,sketchblog, or one comprising photos is called a ,photoblog,. Blogs with shorter posts and mixed media types are called ,tumblelogs,. Blogs that are written on typewriters and then scanned are called ,typecast, or typecast blogs. A rare type of blog hosted on the ,Gopher Protocol, is known as a ,phlog,., +, +, +,By device, +,A blog can also be defined by which type of device is used to compose it. A blog written by a ,mobile device, like a ,mobile phone, or ,PDA, could be called a ,moblog,.,[41], One early blog was Wearable Wireless Webcam, an online shared diary of a person's personal life combining text, video, and pictures transmitted live from a wearable computer and ,EyeTap, device to a web site. This practice of semi-automated blogging with live video together with text was referred to as ,sousveillance,. Such journals have been used as evidence in legal matters.,[,citation needed,], +, +, +,Reverse blog, +,A reverse blog is composed by its users rather than a single blogger. This system has the characteristics of a blog, and the writing of several authors. These can be written by several contributing authors on a topic, or opened up for anyone to write. There is typically some limit to the number of entries to keep it from operating like a ,web forum,.,[,citation needed,], +, +,Community and cataloging, +, +, +, +, +An artist's depiction of the interconnections between blogs and blog authors in the "",blogosphere,"" in 2007., +, +, +, +,Blogosphere, +,The collective community of all blogs and blog authors, particularly notable and widely read blogs, is known as the ,blogosphere,. Since all blogs are on the internet by definition, they may be seen as interconnected and socially networked, through blogrolls, comments, ,linkbacks, (refbacks, trackbacks or pingbacks), and backlinks. Discussions ""in the blogosphere"" are occasionally used by the media as a gauge of public opinion on various issues. Because new, untapped communities of bloggers and their readers can emerge in the space of a few years, ,Internet marketers, pay close attention to ""trends in the blogosphere"".,[42], +, +, +,Blog search engines, +,Several blog search engines have been used to search blog contents, such as ,Bloglines,, ,BlogScope,, and ,Technorati,. Technorati was one of the more popular blog search engines, but the website stopped indexing blogs and assigning authority scores in May 2014. The research community is working on going beyond simple keyword search, by inventing new ways to navigate through huge amounts of information present in the ,blogosphere,, as demonstrated by projects like ,BlogScope,, which was shut down in 2012.,[,citation needed,], +, +, +,Blogging communities and directories, +,Several ,online communities, exist that connect people to blogs and bloggers to other bloggers. Some of these communities include Indiblogger, Blogadda, Blog Chatter, BlogCatalog and ,MyBlogLog,.,[43], Interest-specific blogging platforms are also available. For instance, Blogster has a sizable community of political bloggers among its members. ,Global Voices, aggregates international bloggers, ""with emphasis on voices that are not ordinarily heard in international mainstream media."",[44], +, +, +,Blogging and ,advertising, +,It is common for blogs to feature ,banner advertisements, or promotional content, either to financially benefit the blogger, support website hosting costs, or to promote the blogger's favorite causes or products. The popularity of blogs has also given rise to ,""fake blogs"", in which a company will create a fictional blog as a marketing tool to promote a product.,[45], +, +,As the popularity of blogging continues to rise, the commercialisation of blogging is rapidly increasing. Many corporations and companies collaborate with bloggers to increase advertising and engage online communities towards their products. In the book ,Fans, Bloggers, and Gamers,, Henry Jenkins stated that ""Bloggers take knowledge in their own hands, enabling successful navigation within and between these emerging knowledge cultures. One can see such behaviour as co-optation into commodity culture insofar as it sometimes collaborates with corporate interests, but one can also see it as increasing the diversity of media culture, providing opportunities for greater inclusiveness, and making more responsive to consumers."",[46], +,Popularity, +, +, +, +, +, +, +,This section needs to be ,updated,. ,Please update this article to reflect recent events or newly available information., ,(April 2016), +, +, +, +,As of 2008, blogging had become such a mania that a new blog was created every second of every minute of every hour of every day.,[47], Researchers have actively analyzed the dynamics of how blogs become popular. There are essentially two measures of this: popularity through citations, as well as popularity through affiliation (i.e., blogroll). The basic conclusion from studies of the structure of blogs is that while it takes time for a blog to become popular through blogrolls, ,permalinks, can boost popularity more quickly, and are perhaps more indicative of popularity and authority than blogrolls, since they denote that people are actually reading the blog's content and deem it valuable or noteworthy in specific cases.,[48], +,The ,blogdex, project was launched by researchers in the ,MIT Media Lab, to crawl the Web and gather data from thousands of blogs in order to investigate their social properties. Information was gathered by the tool for over four years, during which it autonomously tracked the most contagious information spreading in the blog community, ranking it by recency and popularity. It can, therefore,,[,original research?,], be considered the first instantiation of a ,memetracker,. The project was replaced by ,tailrank.com, which in turn has been replaced by spinn3r.com., +,Blogs are given rankings by ,Alexa Internet, (web hits of Alexa Toolbar users), and formerly by blog search engine ,Technorati, based on the number of incoming links (Technorati stopped doing this in 2014). In August 2006, Technorati found that the most linked-to blog on the internet was that of Chinese actress ,Xu Jinglei,.,[49], Chinese media ,Xinhua, reported that this blog received more than 50 million page views, claiming it to be the most popular blog in the world.,[50], Technorati rated ,Boing Boing, to be the most-read group-written blog.,[49], +,Blurring with the mass media, +,Many bloggers, particularly those engaged in ,participatory journalism,, are amateur journalists, and thus they differentiate themselves from the professional reporters and editors who work in ,mainstream media, organizations. Other bloggers are media professionals who are publishing online, rather than via a TV station or newspaper, either as an add-on to a traditional media presence (e.g., hosting a radio show or writing a column in a paper newspaper), or as their sole journalistic output. Some institutions and organizations see blogging as a means of ""getting around the filter"" of media "",gatekeepers,"" and pushing their ,messages, directly to the public. Many mainstream journalists, meanwhile, write their own blogs—well over 300, according to CyberJournalist.net's J-blog list.,[,citation needed,], The first known use of a blog on a news site was in August 1998, when ,Jonathan Dube, of The ,Charlotte Observer, published one chronicling ,Hurricane Bonnie,.,[51], +,Some bloggers have moved over to other media. The following bloggers (and others) have appeared on radio and television: ,Duncan Black, (known widely by his pseudonym, Atrios), ,Glenn Reynolds, (,Instapundit,), ,Markos Moulitsas Zúniga, (,Daily Kos,), ,Alex Steffen, (,Worldchanging,), ,Ana Marie Cox, (,Wonkette,), ,Nate Silver, (,FiveThirtyEight.com,), and ,Ezra Klein, (Ezra Klein blog in ,The American Prospect,,, now in the ,Washington Post,). In counterpoint, ,Hugh Hewitt, exemplifies a mass media personality who has moved in the other direction, adding to his reach in ""old media"" by being an influential blogger. Similarly, it was ,Emergency Preparedness and Safety Tips On Air and Online, blog articles that captured ,Surgeon General of the United States, ,Richard Carmona,'s attention and earned his kudos for the associated broadcasts by talk show host ,Lisa Tolliver, and Westchester Emergency Volunteer Reserves-,Medical Reserve Corps, Director Marianne Partridge.,[52],[53],[54],[55], +,Blogs have also had an influence on ,minority languages,, bringing together scattered speakers and learners; this is particularly so with blogs in ,Gaelic languages,. Minority language publishing (which may lack economic feasibility) can find its audience through inexpensive blogging. There are examples of bloggers who have published books based on their blogs, e.g., ,Salam Pax,, ,Ellen Simonetti,, ,Jessica Cutler,, ,ScrappleFace,. Blog-based books have been given the name ,blook,. A prize for the best blog-based book was initiated in 2005,,[56], the ,Lulu Blooker Prize,.,[57], However, success has been elusive offline, with many of these books not selling as well as their blogs. The book based on ,Julie Powell,'s blog ""The Julie/Julia Project"" was made into the film ,Julie & Julia,, apparently the first to do so., +,Consumer-generated advertising, +,Consumer-generated advertising, is a relatively new and controversial development, and it has created a new model of marketing communication from businesses to consumers. Among the various forms of advertising on blog, the most controversial are the ,sponsored posts,.,[58], These are blog entries or posts and may be in the form of feedback, reviews, opinion, videos, etc. and usually contain a link back to the desired site using a keyword or several keywords. Blogs have led to some ,disintermediation, and a breakdown of the traditional advertising model, where companies can skip over the advertising agencies (previously the only interface with the customer) and contact the customers directly via social media websites. On the other hand, new companies specialised in blog advertising have been established, to take advantage of this new development as well. However, there are many people who look negatively on this new development. Some believe that any form of commercial activity on blogs will destroy the blogosphere’s credibility.,[59], +,Legal and social consequences, +, Blogging can result in a range of legal liabilities and other unforeseen consequences.,[60], +,Defamation or liability, +,Several cases have been brought before the national courts against bloggers concerning issues of ,defamation or liability,. U.S. payouts related to blogging totaled $17.4 million by 2009; in some cases these have been covered by ,umbrella insurance,.,[61], The courts have returned with mixed verdicts. ,Internet Service Providers, (ISPs), in general, are immune from liability for information that originates with third parties (U.S. ,Communications Decency Act, and the EU Directive 2000/31/EC). In ,Doe v. Cahill,, the ,Delaware Supreme Court, held that stringent standards had to be met to unmask the ,anonymous bloggers,, and also took the unusual step of dismissing the libel case itself (as unfounded under American libel law) rather than referring it back to the ,trial court, for reconsideration.,[62], In a bizarre twist, the Cahills were able to obtain the identity of John Doe, who turned out to be the person they suspected: the town's mayor, Councilman Cahill's political rival. The Cahills amended their original complaint, and the mayor settled the case rather than going to trial., +,In January 2007, two prominent ,Malaysian, political bloggers, ,Jeff Ooi, and ,Ahirudin Attan,, were sued by a pro-government newspaper, The New Straits Times Press (Malaysia) Berhad, Kalimullah bin Masheerul Hassan, Hishamuddin bin Aun and Brenden John a/l John Pereira over an alleged defamation. The plaintiff was supported by the Malaysian government.,[63], Following the suit, the Malaysian government proposed to ""register"" all bloggers in Malaysia in order to better control parties against their interest.,[64], This is the first such legal case against bloggers in the country. In the United States, blogger Aaron Wall was sued by Traffic Power for ,defamation, and publication of ,trade secrets, in 2005.,[65], According to ,Wired, magazine, Traffic Power had been ""banned from Google for allegedly rigging search engine results."",[66], Wall and other "",white hat,"" ,search engine optimization, consultants had exposed Traffic Power in what they claim was an effort to protect the public. The case was dismissed for lack of personal jurisdiction, and Traffic Power failed to appeal within the allowed time.,[67], +,In 2009, ,NDTV, issued a legal notice to Indian blogger Kunte for a blog post criticizing their coverage of the ,Mumbai attacks,.,[68], The blogger unconditionally withdrew his post, which resulted in several Indian bloggers criticizing NDTV for trying to silence critics.,[69], +,Employment, +,Employees who blog about elements of their place of employment can begin to affect the reputation of their employer, either in a positive way, if the employee is praising the employer and its workplaces, or in a negative way, if the blogger is making negative comments about the company or its practices., +,In general, attempts by employee bloggers to protect themselves by maintaining anonymity have proved ineffective.,[70], In 2009, a controversial and landmark decision by ,The Hon. Mr Justice Eady, refused to grant an order to protect the anonymity of ,Richard Horton,. Horton was a police officer in the United Kingdom who blogged about his job under the name ""NightJack"".,[71], +,Delta Air Lines, fired ,flight attendant, ,Ellen Simonetti, because she posted photographs of herself in uniform on an airplane and because of comments posted on her blog ""Queen of Sky: Diary of a Flight Attendant"" which the employer deemed inappropriate.,[72],[73], This case highlighted the issue of personal blogging and freedom of expression versus employer rights and responsibilities, and so it received wide media attention. Simonetti took legal action against the airline for ""wrongful termination, defamation of character and lost future wages"".,[74], The suit was postponed while Delta was in bankruptcy proceedings.,[75], +,In early 2006, Erik Ringmar, a senior lecturer at the ,London School of Economics,, was ordered by the convenor of his department to ""take down and destroy"" his blog in which he discussed the quality of education at the school.,[76], +,Mark Jen was terminated in 2005 after 10 days of employment as an assistant product manager at ,Google, for discussing corporate secrets on his personal blog, then called 99zeros and hosted on the Google-owned ,Blogger, service.,[77], He blogged about unreleased products and company finances a week before the company's earnings announcement. He was fired two days after he complied with his employer's request to remove the sensitive material from his blog.,[78], +,In India, blogger Gaurav Sabnis resigned from ,IBM, after his posts questioned the claims made by a management school.,[79], ,Jessica Cutler,, aka ""The Washingtonienne"",,[80], blogged about her sex life while employed as a congressional assistant. After the blog was discovered and she was fired,,[81], she wrote a novel based on her experiences and blog: ,The Washingtonienne: A Novel,. As of 2006,[update],, Cutler is being sued by one of her former lovers in a case that could establish the extent to which bloggers are obligated to protect the privacy of their real life associates.,[82], +,Catherine Sanderson, a.k.a. ,Petite Anglaise,, lost her job in Paris at a British accountancy firm because of blogging.,[83], Although given in the blog in a fairly anonymous manner, some of the descriptions of the firm and some of its people were less than flattering. Sanderson later won a compensation claim case against the British firm, however.,[84], +,On the other hand, ,Penelope Trunk, wrote an upbeat article in the ,Boston Globe, in 2006, entitled ""Blogs 'essential' to a good career"".,[85], She was one of the first journalists to point out that a large portion of bloggers are professionals and that a well-written blog can help attract employers., +,Business owners, +,Business owners who blog about their business can also run into legal consequences. ,Mark Cuban,, owner of the ,Dallas Mavericks,, was fined during the 2006 ,NBA, playoffs for criticizing NBA officials on the court and in his blog.,[86], +,Political dangers, +,See also: ,Political repression of cyber-dissidents, +,Blogging can sometimes have unforeseen consequences in politically sensitive areas. In some countries, ,Internet police, or ,secret police, may monitor blogs and arrest blog authors of commentators. Blogs can be much harder to control than broadcast or print media, because a person can create a blog whose authorship is hard to trace, by using anonymity technology such as ,Tor,. As a result, ,totalitarian, and ,authoritarian, regimes often seek to suppress blogs and/or to punish those who maintain them., +,In ,Singapore,, two ethnic Chinese individuals were ,imprisoned, under the country’s ,anti-sedition law, for posting ,anti-Muslim, remarks in their blogs.,[87], ,Egyptian, blogger ,Kareem Amer, was charged with insulting the Egyptian president ,Hosni Mubarak, and an ,Islamic, ,institution, through his blog. It is the first time in the history of Egypt that a blogger was prosecuted. After a brief trial session that took place in ,Alexandria,, the blogger was found guilty and sentenced to prison terms of three years for insulting ,Islam, and inciting sedition, and one year for insulting Mubarak.,[88], Egyptian blogger Abdel Monem Mahmoud was arrested in April 2007 for anti-government writings in his blog.,[89], Monem is a member of the then banned ,Muslim Brotherhood,. After the ,2011 Egyptian revolution,, the Egyptian blogger ,Maikel Nabil Sanad, was charged with insulting the military for an article he wrote on his personal blog and sentenced to 3 years.,[90], +,After expressing opinions in his personal blog about the state of the Sudanese armed forces, ,Jan Pronk,, ,United Nations, Special Representative for the ,Sudan,, was given three days notice to leave Sudan. The Sudanese army had demanded his deportation.,[91],[92], In ,Myanmar,, Nay Phone Latt, a blogger, was sentenced to 20 years in jail for posting a cartoon critical of head of state ,Than Shwe,.,[93], +,Personal safety, +,See also: ,Cyberstalking, and ,Internet homicide, +,One consequence of blogging is the possibility of online or in-person attacks or threats against the blogger, sometimes without apparent reason. In some cases, bloggers have faced ,cyberbullying,. ,Kathy Sierra,, author of the blog ""Creating Passionate Users"",,[94], was the target of threats and ,misogynistic, insults to the point that she canceled her keynote speech at a technology conference in San Diego, fearing for her safety.,[95], While a blogger's anonymity is often tenuous, ,Internet trolls, who would attack a blogger with threats or insults can be emboldened by the anonymity of the online environment, where some users are known only by a ,pseudonymous, ""username"" (e.g., ""Hacker1984""). Sierra and supporters initiated an online discussion aimed at countering abusive online behavior,[96], and developed a ,Blogger's Code of Conduct,, which set out a ,rules for behaviour, in the online space., +,Behavior, +,The ,Blogger's Code of Conduct, is a proposal by ,Tim O'Reilly, for bloggers to enforce civility on their blogs by being civil themselves and moderating comments on their blog. The code was proposed in 2007 due to threats made to blogger ,Kathy Sierra,.,[97], The idea of the code was first reported by ,BBC News,, who quoted O'Reilly saying, ""I do think we need some code of conduct around what is acceptable behaviour, I would hope that it doesn't come through any kind of regulation it would come through self-regulation."",[98], +,O'Reilly and others came up with a list of seven proposed ideas:,[99],[100],[101],[102], +, +,Take responsibility not just for your own words, but for the comments you allow on your blog., +,Label your tolerance level for abusive comments., +,Consider eliminating anonymous comments., +,Ignore the ,trolls,., +,Take the conversation offline, and talk directly, or find an intermediary who can do so., +,If you know someone who is behaving badly, tell them so., +,Don't say anything online that you wouldn't say in person., +, +,These ideas were predictably intensely discussed on the Web and in the media. While the internet has continued to grow, with online activity and discourse only picking up both in positive and negative ways in terms of blog interaction, the proposed Code has drawn more widespread attention to the necessity of monitoring blogging activity and social norms being as important online as offline., +,See also, +, +, +,Internet portal, +,Journalism portal, +, +, +, +, +,Bitter Lawyer, +,Blog award, +,BROG, +,Chat room, +,Citizen journalism, +,Collaborative blog, +,Comparison of free blog hosting services, +,Customer engagement, +,Glossary of blogging, +,Interactive journalism, +,Internet think tank, +,Israblog, +,Bernando LaPallo, +,List of blogs, +,List of family-and-homemaking blogs, +,Mass collaboration, +,Prison blogs, +,Sideblog, +,Social blogging, +,Webmaster, +,Web template system, +,Web traffic, +, +, +,References, +, +, +,^, ,Blood, Rebecca (September 7, 2000). ,""Weblogs: A History And Perspective"",., , +,^, ,Mutum, Dilip; Wang, Qing (2010). ""Consumer Generated Advertising in Blogs"". In Neal M. Burns; Terry Daugherty; Matthew S. Eastin. ,Handbook of Research on Digital Media and Advertising: User Generated Content Consumption,. ,1,. IGI Global. pp. 248–261., , +,^, ,Gaudeul, Alexia & Peroni, Chiara (2010). ,""Reciprocal attention and norm of reciprocity in blogging networks"",. ,Economics Bulletin,. ,30, (3): 2230–2248., , +,^, ,""About Tumblr.com. Accessed February 20, 2014"",. Tumblr.com,. Retrieved ,2014-02-20,., , +,^, ,""Stats. Accessed February 20, 2014"",. Wordpress.com,. Retrieved ,2014-02-20,., , +,^, ,""The Most Reliable and Unreliable Blogging Services"",. Royal.pigdim.com., , +,^, ,""Five Best Blogging Platforms"",. LifeHacker.com., , +,^, ,""Technorati.com"",. Archived from ,the original, on 2014-02-22., , +,^, ,""After 10 Years of Blogs, the Future's Brighter Than Ever"",. ,Wired,. 2007-12-17,. Retrieved ,2008-06-05,., , +,^, ,""It's the links, stupid"",. The Economist. 2006-04-20,. Retrieved ,2008-06-05,., , +,^, ,Merholz, Peter (1999). ,""Peterme.com"",. ,Internet Archive,. Archived from ,the original, on 1999-10-13,. Retrieved ,2008-06-05,., , +,^, ,Kottke, Jason, (2003-08-26). ,""kottke.org"",. Retrieved ,2008-06-05,., , +,^, ,Origins of ""Blog"" and ""Blogger"",, American Dialect Society Mailing List (Apr. 20, 2008)., +,^, ,The term ""e-log"" has been used to describe journal entries sent out via e-mail since as early as March 1996.,Norman, David (2005-07-13). ,""Users confused by blogs"",. Archived from ,the original, ,( – ,Scholar search,), on 2007-06-07,. Retrieved ,2008-06-05,., , ,""Research staff and students welcome 'E-Log,',"",. University College London. December 2003. Archived from ,the original, on 2007-08-12,. Retrieved ,2008-06-05,., , +,^, ,What's New!,. Home.mcom.com. Retrieved on 2013-06-15., +,^, ,Harmanci, Reyhan (2005-02-20). ,""Time to get a life — pioneer blogger Justin Hall bows out at 31"",. San Francisco Chronicle,. Retrieved ,2008-06-05,., , +,^, ,Pournelle, Jerry. ,""Chaos Manor in Perspective"",. ,Jerry Pournelle's blog,. ,""I can make some claim to this being The Original Blog and Daybook. I certainly started keeping a day book well before most, and long before the term ""blog"" or Web Log was invented. BIX, the Byte information exchange, preceded the Web by a lot, and I also had a daily journal on GE Genie. All that was long before the World Wide Web."" -- Jerry Pournelle, , +,^, ,Paul Festa (2003-02-25). ,""Newsmaker: Blogging comes to Harvard"",. ,CNET,. Retrieved ,2007-01-25,., , +,^, ,""...Dave Winer... whose Scripting News (scripting.com) is one of the oldest blogs."",David F. Gallagher (2002-06-10). ,""Technology; A rift among bloggers"",. ,The New York Times,., , +,^, ,Australian Net Guide,. Web.archive.org (1996-11-12). Retrieved on 2013-06-15., +,^, ,""Archived copy"",. Archived from ,the original, on 2008-04-11,. Retrieved ,2008-03-29,., , +,^, ,Massing, Michael, (2009-08-13). ,""The News About the Internet"",. ,New York Review of Books,. ,The New York Review of Books,. ,56, (13): 29–32,. Retrieved ,2009-10-10,., , +,^, ,Daniel Sandford,, ,BBC News,: ""Russians tire of corruption spectacle"", ,http://www.bbc.co.uk/news/world-europe-15972326, +,^, ,Matthew Kaminski (March 3, 2012). ,""The Man Vladimir Putin Fears Most (the weekend interview)"",. ,The Wall Street Journal,., , +,^, ,Kirkpatrick, David; Roth, Daniel. ,""Why There's No Escaping the Blog"",. Fortune. Archived from ,the original, on 1 January 2005,. Retrieved ,30 January, 2014,., , +,^ ,a, ,b, ,Israel Video Blog aims to show the world 'the beautiful face of real Israel',, Ynet, February 24, 2008., +,^, ,Latest PR venture of Israel's diplomatic mission in New York attracts large Arab audience,, Ynet, June 21, 2007., +,^, ,Haviv Rettig Gur (December 30, 2008). ,""Battlefront Twitter"",. ,The Jerusalem Post,. Archived from ,the original, on 2011-11-10., , +,^, ,The Toughest Q’s Answered in the Briefest Tweets,, Noam Cohen, ,The New York Times,, January 3, 2009. Retrieved January 5, 2009., +,^, ,Journalists deserve subsidies too, ,Archived, 2014-03-24 at the ,Wayback Machine,., ,Robert W. McChesney, and ,John Nichols,, ,Delaware Online,, November 3, 2009. Retrieved November 10, 2009., +,^, ,""7 Things You Should Know About Microblogging"",. Educause.Edu. 2009-07-07,. Retrieved ,2012-10-25,., , +,^, ,Stephan Metcalf, ""Fixing a Hole"", ,The New York Times,, March 2006, +,^, ,Jennifer Saranow, ""Blogwatch: This Old House"", ,Wall Street Journal,, September 2007, +,^, ,""52 Types of Blog Posts that Are Proven to Work"",. ,Problogger.net,. Retrieved ,2017-07-18,., , +,^, ,Casserly, Meghan and Goudreau, Jenna. ,Top 100 Websites For Women 2011,, ,Forbes,, June 23, 2011, +,^, ,Paul, Pamela (2004-04-12). ,""The New Family Album"",. ,TIME,. Retrieved ,2010-03-31,., , +,^, ,Carpenter, MacKenzie (2007-10-31). ,""More women are entering the blogosphere — satirizing, sharing and reaching a key demographic"",. Post-gazette.com,. Retrieved ,2010-03-31,., , +,^, ,Brown, Jonathan (2005-02-05). ,""The drooling minutiae of childhood revealed for all to see as 'Mommy blogs' come of age"",. ,The Independent,. London,. Retrieved ,2010-03-30,., , +,^, ,""Living"",. ,Omaha.com,. Retrieved ,2010-03-31,., , +,^, ,Jesella, Kara (2008-07-27). ,""Blogging's Glass Ceiling"",. ,The New York Times,. Retrieved ,2010-03-26,., , +,^, ,""Blogging goes mobile"",. BBC News. 2003-02-23,. Retrieved ,2008-06-05,., , +,^, ,See for instance:, +, +,Mesure, Susie (2009-08-23). ,""Is it a diary? Is it an ad? It's a mummy blog"",. ,The Independent,. London. p. 11,. Retrieved ,2009-10-10,., , +, +, +,^, ,""About MyBlogLog"",. MyBlogLog. Archived from ,the original, on 2007-06-29,. Retrieved ,2007-06-29,., , +,^, ,""Global Voices: About"",. GlobalVoices.org,. Retrieved ,2011-04-02,., , +,^, ,Gogoi, Pallavi (2006-10-09). ,""Wal-Mart's Jim and Laura: The Real Story"",. ,BusinessWeek,. Archived from ,the original, on 2008-09-26,. Retrieved ,2008-08-06,., , +,^, ,Jenkins, Henry (2006). ,Fans, Bloggers, and Gamers,. New York: New York University Press. p. 151. ,ISBN, ,978-0814742853,., , +,^, ,Keen, Andrew (2008). ,The Cult of the Amateur: How Today’s Internet Is Killing Our Culture,. New York: Nicholas Brealey Publishing. p. 3. ,ISBN, ,978-1857885200,., , +,^, ,Marlow, C. ,Audience, structure and authority in the weblog community,. Presented at the ,International Communication Association, Conference, May, 2004, New Orleans, LA., +,^ ,a, ,b, ,Fickling, David, ,Internet killed the TV star,, ,The Guardian, NewsBlog, 15 August 2006, +,^, ,""Xu Jinglei most popular blogger in world"",. China Daily. 2006-08-24,. Retrieved ,2008-06-05,., , +,^, ,""Blogging Bonnie"",. ,Poynter.org,. 2003-09-18., , +,^, ,""National Safety Month"",. Nsc.org,. Retrieved ,2010-04-09,., , +,^, ,""Flavor Flav Celebrates National Safety Month"",. ,Blogcritics,. Archived from ,the original, on 2009-02-13., , +,^, ,""Lisa Tolliver show notes"",. ,Emergency Preparedness and Safety Tips On Air and Online,., , +,^, ,""Lisa Tolliver's Show Notes"",. ,Lisa Tolliver On Air and Online,., , +,^, ,""Blooker rewards books from blogs"",. BBC News. 2005-10-11,. Retrieved ,2008-06-05,., , +,^, ,""Blooker prize honours best blogs"",. BBC News. 2007-03-17,. Retrieved ,2008-06-05,., , +,^, ,Mutum, Dilip and Wang, Qing (2010). “Consumer Generated Advertising in Blogs”. In Neal M. Burns, Terry Daugherty, Matthew S. Eastin (Eds) Handbook of Research on Digital Media and Advertising: User Generated Content Consumption (Vol 1), IGI Global, 248-261., +,^, ,""PayPerPost.com offers to sell your soul"",. ,TechCrunch,. 2006-06-30,. Retrieved ,2017-07-18,., , +,^, ,""Article Window"",. Epaper.timesofindia.com,. Retrieved ,2012-10-25,., , +,^, ,McQueen MP. (2009). ,Bloggers, Beware: What You Write Can Get You Sued,. WSJ., +,^, ,Doe v. Cahill,, 884 A.2d 451 (Del. 2005)., +,^, ,""New Straits Times staffers sue two bloggers"",. ,Reporters Without Borders,. 2007-01-19. Archived from ,the original, on 2008-06-08,. Retrieved ,2008-06-05,., , +,^, ,""Government plans to force bloggers to register"",. ,Reporters Without Borders,. 2007-04-06. Archived from ,the original, on 2008-06-11,. Retrieved ,2008-06-05,., , +,^, ,Kesmodel, David (2005-08-31). ,""Blogger Faces Lawsuit Over Comments Posted by Readers"",. Wall Street Journal Online,. Retrieved ,2008-06-05,., , +,^, ,Wired Magazine,, ,Legal Showdown in Search Fracas,, Sept 8, 2005, +,^, ,Sullivan, Danny (2006-04-13). ,""SearchEngineWatch"",. Blog.searchenginewatch.com. Archived from ,the original, on 2009-02-04,. Retrieved ,2010-07-31,., , +,^, ,""Barkha versus blogger"",. The Hoot,. Retrieved ,2009-02-02,., , +,^, ,¬ (2009-02-08). ,""Indian bloggers criticizing NDTV"",. Abhishekarora.com,. Retrieved ,2013-04-21,., , +,^, ,Sanderson, Cathrine (2007-04-02). ,""Blogger beware!"",. London: Guardian Unlimited,. Retrieved ,2007-04-02,., , +,^, ,""Ruling on NightJack author Richard Horton kills blogger anonymity"",. Archived from ,the original, on 2011-08-29., , +,^, ,Twist, Jo (2004-11-03). ,""US Blogger Fired by her Airline"",. ,BBC News,. Retrieved ,2008-06-05,., , +,^, ,""Delta employee fired for blogging sues airline"",. ,USA Today,. 2005-09-08,. Retrieved ,2008-06-05,., , +,^, ,""Queen of the Sky gets marching orders"",. The Register. 2004-11-03,. Retrieved ,2008-06-05,., , +,^, ,""Twelfth Omnibus Claims Objection"", ,(PDF),. Retrieved ,8 July, 2014,., , +,^, ,MacLeod, Donald (2006-05-03). ,""Lecturer's Blog Sparks Free Speech Row"",. London: The Guardian. Archived from ,the original, on 2008-06-12,. Retrieved ,2008-06-05,., , See also ,""Forget the Footnotes"",. Archived from ,the original, on 2006-04-13., , +,^, ,Hansen, Evan (2005-02-08). ,""Google blogger has left the building"",. CNET News,. Retrieved ,2007-04-04,., , +,^, ,""Archived copy"",. Archived from ,the original, on 2008-07-25,. Retrieved ,2008-09-10,., , +,^, ,""Bloggers join hands against B-school"",. Cities.expressindia.com. Archived from ,the original, on 2005-12-14,. Retrieved ,2011-01-30,., , +,^, ,""Washingtoniennearchive.blogspot.com"",. Washingtoniennearchive.blogspot.com. 2005-02-11,. Retrieved ,2013-04-21,., , +,^, ,""The Hill's Sex Diarist Reveals All (Well, Some)"",. ,The Washington Post,. 2004-05-23,. Retrieved ,2008-06-05,., , +,^, ,""Steamy D.C. Sex Blog Scandal Heads to Court"",. ,Associated Press,, ,MSNBC,. 2006-12-27,. Retrieved ,2008-06-05,., , +,^, ,""Bridget Jones Blogger Fire Fury"",. ,CNN,. 2006-07-19,. Retrieved ,2008-06-05,., , +,^, ,""Sacked 'petite anglaise' blogger wins compensation claim"",. ,The Sydney Morning Herald,. 2007-03-31,. Retrieved ,2015-02-06,., , +,^, ,Trunk, Penelope (2006-04-16). ,""Boston.com"",. Boston.com,. Retrieved ,2013-04-21,., , +,^, ,""NBA fines Cuban $200K for antics on, off court"",. ESPN. 2006-05-11,. Retrieved ,2008-06-05,., , +,^, ,Kierkegaard, Sylvia, (2006). ""Blogs, lies and the doocing: The next hotbed of litigation?"". ,Computer Law & Security Report,. ,22, (2): 127. ,doi,:,10.1016/j.clsr.2006.01.002,., , +,^, ,""Egypt blogger jailed for insult"",. ,BBC News,. 2007-02-22,. Retrieved ,2008-06-05,., , +,^, ,عبدالمنعم محمود (2004-02-27). ,""Ana-ikhwan.blogspot.com"",. Ana-ikhwan.blogspot.com,. Retrieved ,2013-04-21,., , +,^, ,Knafo, Saki (2011-09-15). ,""Maikel Nabil Sanad, On Hunger Strike in Egypt, Is Dying"",. Huffingtonpost.com,. Retrieved ,2011-12-29,., , +,^, ,""Sudan expels U.N. envoy for blog"",. ,CNN,. 2006-10-22,. Retrieved ,2007-03-14,., , +,^, ,""UN envoy leaves after Sudan row"",. ,BBC NEWS,. BBC. 23 October 2006,. Retrieved ,2006-10-24,., , +,^, ,""Burma blogger jailed for 20 years"",. ,BBC News,. 2008-11-11,. Retrieved ,2010-03-26,., , +,^, ,""Headrush.typepad.com"",. Headrush.typepad.com,. Retrieved ,2013-04-21,., , +,^, ,Pham, Alex (2007-03-31). ,""Abuse, threats quiet bloggers' keyboards"", ,(PDF),. Los Angeles Times. Archived from ,the original, on 2008-06-25,. Retrieved ,2008-06-05,., , +,^, ,""Blog death threats spark debate"",. BBC News. 2007-03-27,. Retrieved ,2008-06-05,., , +,^, ,Tim O'Reilly, (2007-03-03). ,""Call for a Blogger's Code of Conduct"",. O'Reilly Radar,. Retrieved ,2013-04-26,., , +,^, ,""Call for blogging code of conduct"",. BBC News. 2007-03-28,. Retrieved ,2007-04-14,., , +,^, ,""Draft Blogger's Code of Conduct"",. Radar.oreilly.com,. Retrieved ,2013-04-26,., , +,^, ,""MilBlogs Rules of Engagement"",. ,yankeesailor.blogspot.ca,. 2005-05-20,. Retrieved ,2013-04-26,., , +,^, ,""Code of Conduct: Lessons Learned So Far - O'Reilly Radar"",. ,Radar.oreilly.com,. 2007-04-11,. Retrieved ,2017-07-18,., , +,^, ,""Blogger Content Policy"",. Blogger.com,. Retrieved ,2011-01-30,., , +, +, +,Further reading, +, +,Alavi, Nasrin. ,We Are Iran: The Persian Blogs,, Soft Skull Press, New York, 2005. ,ISBN, ,1-933368-05-5,., +,Bruns, Axel, and Joanne Jacobs, eds. ,Uses of Blogs,, Peter Lang, New York, 2006. ,ISBN, ,0-8204-8124-6,., +,Blood, Rebecca. ,""Weblogs: A History and Perspective"",. ""Rebecca's Pocket""., +,Kline, David; Burstein, Dan. ,Blog!: How the Newest Media Revolution is Changing Politics, Business, and Culture,, Squibnocket Partners, L.L.C., 2005. ,ISBN, ,1-59315-141-1,., +,Gorman, Michael,. ,""Revenge of the Blog People!"",. ,Library Journal,., +,Ringmar, Erik. ,A Blogger's Manifesto: Free Speech and Censorship in the Age of the Internet, (London: Anthem Press, 2007)., +,Rosenberg, Scott,, ,Say Everything: how blogging Began, what it's becoming, and why it matters,, New York : Crown Publishers, 2009. ,ISBN, ,978-0-307-45136-1, +,Weinberger, David, (August 31, 2015), ,""Why blogging still matters"",, ,Boston Globe, , +, +,External links, +, +, +, +,Look up ,blog, in Wiktionary, the free dictionary., +, +, +, +, +, +,Wikiquote has quotations related to: ,Blogging, +, +, +, +, +, +,Wikimedia Commons has media related to ,Blogs,., +, +, +, +,Computer Law and Security Report Volume 22 Issue 2, Pages 127-136, blogs, Lies and the Doocing by ,Sylvia Kierkegaard, (2006), +,Legal Guide for bloggers, by the ,Electronic Frontier Foundation, +,Law Library Legal Blawgs Web Archive, from the U.S. ,Library of Congress, +, +, +, +, +, +, +, +,v, +,t, +,e, +, +, +,Web syndication, +, +, +, +, +, +, +,History, +,Blogging, +,Podcasting, +,Video blogging, +,Web syndication technology, +, +, +, +, +, +,Types, +, +, +, +, +, +, +, +,Art, +,Bloggernacle, +,Classical music, +,Corporate, +,Dream diary, +,Edublog, +,Electronic journal, +,Fake, +,Family, +,Fashion, +,Food, +,Health, +,Law, +,Lifelog, +,Litblog, +,MP3, +,News, +,Photoblog, +,Police, +,Political, +,Prayer, +,Project, +,Reverse, +,Travel, +,Warblog, +, +, +, +, +, +, +, +, +,Technology, +, +, +, +, +,General, +, +, +, +,BitTorrent, +,Feed URI scheme, +, +, +, +, +, +,Features, +, +, +, +,Linkback, +,Permalink, +,Ping, +,Pingback, +,Reblogging, +,Refback, +,Rollback, +,Trackback, +, +, +, +, +, +,Mechanism, +, +, +, +,Conversation threading, +,Geotagging, +,RSS enclosure, +,Synchronization, +, +, +, +, +, +,Memetics, +, +, +, +,Atom feed, +,Data feed, +,Photofeed, +,Product feed, +,RDF feed, +,Web feed, +, +, +, +, +, +,RSS, +, +, +, +,GeoRSS, +,MRSS, +,RSS TV, +, +, +, +, +, +,Social, +, +, +, +,Livemark, +,Mashup, +,., pooling, +,Referencing, +,RSS editor, +,RSS tracking, +,Streaming media, +, +, +, +, +, +,Standard, +, +, +, +,OML, +,OPML, +,RSS Advisory Board,—,Usenet,: ,.net, +,World Wide Web, + (,-let,), +,XBEL, +,XOXO, +, +, +, +, +, +, +, +, +,Form, +, +, +, +, +, +, +, +,Audio podcast, +,Enhanced podcast, +,Mobilecast, +,Narrowcasting, +,Peercasting, +,Screencast, +,Slidecasting, +,Videocast, +,Webcomic, +,Web series, +, +, +, +, +, +, +, +, +,Anonymous blogging, +,Collaborative blog, +,Columnist, +,Instant messaging, +,Liveblogging, +,Microblog, +,Mobile blogging, +,Roblog, +,Spam blog, +,Video blogging, +,Motovlogging, +, +, +, +, +, +, +, +, +,Media, +, +, +, +, +,Alternative media, +, +, +, +,Carnivals, +,Fiction, +,Journalism, +, +,Citizen, +,Database, +, +, +,Online diary, +,Search engines, +,Sideblog, +,Software, +,Web directory, +, +, +, +, +, +,Micromedia, +, +, +, +,Aggregation, +, +,News, +,Poll, +,Review, +,Search, +,Video, +, +, +,Atom, +,AtomPub, +,Broadcatching, +,Hashtag, +,NewsML, +, +,1, +,G2, +, +, +,Social communication, +,Social software, +,Web Slice, +, +, +, +, +, +,Related, +, +, +, +,Blogosphere, +,Escribitionist, +,Glossary of blogging, +,Pay per click, +,Posting style, +,Slashdot effect, +,Spam in blogs, +,Uses of podcasting, +, +, +, +, +, +, +, +, +, +, +, +, +, +, +, +,v, +,t, +,e, +, +, +,Computer-mediated communication, +, +, +, +, +, +, +,Online chat, +,Online discussion, +,Communication software, +,Collaborative software, +,Social network service, +,Virtual learning environment, +, +, +, +, +, +,Asynchronous conferencing, +, +, +, +,Email, +,Electronic mailing list, +,FidoNet, +,Usenet, +,Internet forum, +, +,Textboard, +,Imageboard, +, +, +,Shoutbox, +,Bulletin board system, +,Online guestbook, +, +, +, +, +, +,Synchronous conferencing, +, +, +, +,Data conferencing, +,Instant messaging, +,Internet Relay Chat, +,LAN messenger, +,Talker, +,Videoconferencing, +,Voice over IP, +, +,Voice chat in online gaming, +, +, +,Web chat, +,Web conferencing, +, +, +, +, +, +,Publishing, +, +, +, +,Blog, +,Microblogging, +,Wiki, +, +, +, +, +, +, +, +, +, +, +, +, +,v, +,t, +,e, +, +, +,Internet slang, +, +, +, +,Abuse, +, +, +, +,cyberbullying, +,cyberstalking, +,doxing, +,flaming, +,griefer, +,hacker, +,keylogger, +,malware, +, +,spyware, +, +, +,phishing, +,script kiddie, +,Stealth banning, +,spamming, +,troll, +, +, +, +, +, +, +, +, +,Chatspeak, +, +, +, +,emoticon, +,emoji, +,leet, +, +,owned, +,Pr0n, +,pwn, +,teh, +,w00t, +, +, +,fap, +,LOL, +,nsfw, +,padonkaffsky jargon, +,sexting, +, +, +, +, +, +,Imageboard, +, +, +, +,4chan, +,anonymous, +,-chan, +,CP, +,goatse.cx, +,lolcat, +,lulz, +,lurk, +,newbie, +,OP, +,pedobear, +,rickrolling, +,Rule 34, +,tripcode, +,weeaboo, +, +, +, +, +, +,Memes, +, +, +, +,advertising and products, +,animation and comics, +,challenges, +,email, +,film, +,gaming, +,images, +,music, +,politics, +,videos, +,miscellaneous, +, +, +, +, +, +,Usenet, +, +, +, +,eternal September, +,PKB, +,plonk, +, +, +, +, +, +, +, +, +, ,Category, +, ,Portal, +, ,Wiktionary, +, +, +, +, +, +, +, +, +, +,Authority control, +, +, +, +,LCCN,: ,sh2003004628, +,NDL,: ,00959882, +, +, +, +, +, +, + + +, +, +, +, +",Blog diff --git a/v2/Chapter05_Scrapy/wikiSpider/wikiSpider/articles.json b/v2/Chapter05_Scrapy/wikiSpider/wikiSpider/articles.json new file mode 100644 index 0000000..58292dc --- /dev/null +++ b/v2/Chapter05_Scrapy/wikiSpider/wikiSpider/articles.json @@ -0,0 +1,33 @@ +[ +{"title": "Benevolent dictator for life", "text": ["For the political term, see ", "Benevolent dictatorship", ".", "\n", "Benevolent Dictator For Life", " (", "BDFL", ") is a title given to a small number of ", "open-source software development", " leaders, typically project founders who retain the final say in disputes or arguments within the community. The phrase originated in 1995 with reference to ", "Guido van Rossum", ", creator of the ", "Python programming language", ".", "[1]", "[2]", " Shortly after van Rossum joined the ", "Corporation for National Research Initiatives", ", the term appeared in a follow-up mail by ", "Ken Manheimer", " to a meeting trying to create a semi-formal group that would oversee Python development and workshops; this initial use included the additional joke of naming van Rossum the \"", "First Interim", " BDFL\".", "[1]", "\n", "BDFL should not be confused with the more common term for open-source leaders, \"", "benevolent dictator", "\", which was popularized by ", "Eric S. Raymond", "'s essay \"", "Homesteading the Noosphere", "\" (1999).", "[3]", " Among other topics related to ", "hacker culture", ", Raymond elaborates on how the nature of open source forces the \"dictatorship\" to keep itself ", "benevolent", ", since a strong disagreement can lead to the ", "forking", " of the project under the rule of new leaders.", "\n", "Persons sometimes referred to as \"Benevolent dictators for life\"", "[", "edit", "]", "\n", "\n", "\n", "Name", "\n", "Project", "\n", "Type", "\n", "Reference", "\n", "\n", "\n", "Vitalik Buterin", "\n", "Ethereum", "\n", "blockchain-based cryptocurrency", "\n", "[4]", "\n", "\n", "\n", "Dries Buytaert", "\n", "Drupal", "\n", "content management framework", "\n", "[5]", "\n", "\n", "\n", "Shaun Walker", "\n", "DotNetNuke", "\n", "web application framework", "\n", "[6]", "\n", "\n", "\n", "David Heinemeier Hansson", "\n", "Ruby on Rails", "\n", "web framework", "\n", "[7]", "\n", "\n", "\n", "Adrian Holovaty", " and Jacob Kaplan-Moss", "\n", "Django", "\n", "web framework", "\n", "[8]", "\n", "\n", "\n", "Taylor Otwell", "\n", "Laravel", "\n", "web framework", "\n", "[9]", "[10]", "\n", "\n", "\n", "Theo de Raadt", "\n", "OpenBSD", "\n", "Unix", "-like operating system", "\n", "[11]", "\n", "\n", "\n", "Daniel Robbins", "\n", "Funtoo Linux", "\n", "Linux distribution", "\n", "[12]", "\n", "\n", "\n", "S\u00e9bastien Ros", "\n", "Orchard Project", "\n", "content management system", "\n", "[13]", "\n", "\n", "\n", "Guido van Rossum", "\n", "Python", "\n", "programming language", "\n", "[7]", "[14]", "\n", "\n", "\n", "Linus Torvalds", "\n", "Linux", "\n", "operating system kernel", "\n", "[7]", "[15]", "\n", "\n", "\n", "Patrick Volkerding", "\n", "Slackware", "\n", "Linux distribution", "\n", "[16]", "\n", "\n", "\n", "Mark Shuttleworth", "\n", "Ubuntu Linux", "\n", "Linux distribution", "\n", "[17]", "\n", "\n", "\n", "Larry Wall", "\n", "Perl", "\n", "programming language", "\n", "[18]", "\n", "\n", "\n", "Matt Mullenweg", "\n", "WordPress", "\n", "content management framework", "\n", "[19]", "\n", "\n", "\n", "Nathan Voxland", "\n", "Liquibase", "\n", "database schema management", "\n", "[20]", "\n", "\n", "\n", "Xavier Leroy", "\n", "OCaml", "\n", "programming language", "\n", "[21]", "[22]", "\n", "\n", "\n", "Ton Roosendaal", "\n", "Blender", "\n", "3D computer graphics software", "\n", "[23]", "\n", "\n", "\n", "Bram Moolenaar", "\n", "Vim", "\n", "text editor", "\n", "[24]", "\n", "\n", "\n", "Don Syme", "\n", "F#", "\n", "programming language", "\n", "[25]", "\n", "\n", "\n", "Rich Hickey", "\n", "Clojure", "\n", "programming language", "\n", "[26]", "\n", "\n", "\n", "Wes McKinney", "\n", "Pandas", "\n", "Python data analysis library", "\n", "[27]", "\n", "\n", "\n", "Martin Odersky", "\n", "Scala", "\n", "programming language", "\n", "[28]", "\n", "\n", "\n", "Yukihiro Matsumoto (Matz)", "\n", "Ruby", "\n", "programming language", "\n", "[29]", "\n", "\n", "\n", "Evan Czaplicki", "\n", "Elm", "\n", "front-end web framework", "\n", "[30]", "[31]", "\n", "\n", "\n", "Juan Benet", "\n", "InterPlanetary File System", "\n", "decentralized internet", "\n", "[32]", "\n", "\n", "\n", "Sylvain Benner", "\n", "Spacemacs", "\n", "community-driven ", "Emacs", " distribution", "\n", "[33]", "\n", "\n", "\n", "Pauli Virtanen", "\n", "SciPy", "\n", "Python", " library used for scientific and technical computing", "\n", "[34]", "[35]", "\n", "\n", "\n", "Jos\u00e9 Valim", "\n", "elixir", "\n", "programming language", "\n", "[36]", "\n", "\n", "\n", "References", "[", "edit", "]", "\n", "\n", "\n", "^ ", "a", " ", "b", " ", "Guido van Rossum (July 31, 2008). ", "\"Origin of BDFL\"", ". Retrieved ", "August 1,", " 2008", ".", "\u00a0", "\n", "^", " ", "\"Python Creator Scripts Inside Google\"", ". www.eweek.com", ". Retrieved ", "May 13,", " 2008", ".", "\u00a0", "\n", "^", " ", "Eric S. Raymond. ", "\"Homesteading the Noosphere\"", ". Retrieved ", "August 1,", " 2008", ".", "\u00a0", "\n", "^", " ", "\"", "Ethereum's Boy King Is Thinking About Giving Up the Mantle", "\"", "\n", "^", " ", "Randy Fay, \"", "How Do Open Source Communities Govern Themselves?", "\"", "\n", "^", " ", "Book: Building Websites with DotNetNuke 5, Michael Washington and Ian Lackey, Packt Publishing. Page 14 \"The core team comprises individuals invited to join the team by Shaun Walker, whom they affectionately call the \"Benevolent Dictator\".\"", "\n", "^ ", "a", " ", "b", " ", "c", " ", "Constine, Josh (December 7, 2012). ", "\"Dropbox Hires Away Google's Guido Van Rossum, The Father Of Python\"", ". TechCrunch", ". Retrieved ", "June 1,", " 2015", ".", "\u00a0", "\n", "^", " ", "\"Adrian and Jacob retiring as Django BDFLs\"", ". Adrian Holovaty. January 12, 2014", ". Retrieved ", "June 14,", " 2015", ".", "\u00a0", "\n", "^", " ", "\"Taylor Otwell, Twitter\"", ". Taylor Otwell. October 9, 2014", ". Retrieved ", "October 9,", " 2014", ".", "\u00a0", "\n", "^", " ", "\"Taylor Otwell, Creator of the Laravel PHP Framework\"", ". August 5, 2014", ". Retrieved ", "August 5,", " 2014", ".", "\u00a0", "\n", "^", " ", "Hildebrand, Matthew (July 5, 2005). ", "\"Interview: Theo de Raadt on Industry and Free Software\"", ". ", "The Epoch Times", ". The Epoch Times. Archived from ", "the original", " on June 21, 2015", ". Retrieved ", "June 20,", " 2015", ".", "\u00a0", "\n", "^", " ", "\"Welcome to Funtoo Linux\"", ".", "\u00a0", "\n", "^", " ", "\"Orchard Project Steering Committee\"", ". Archived from ", "the original", " on August 12, 2015.", "\u00a0", "\n", "^", " ", "\"The Four Hundred\u2014Next Up on the System i: Python\"", ". www.itjungle.com", ". Retrieved ", "May 13,", " 2008", ".", "\u00a0", "\n", "^", " ", "Dee-Ann LeBlanc (31 July 2006). ", "Linux For Dummies", " (7th ed.). John Wiley & Sons. p.\u00a015. ", "ISBN", "\u00a0", "978-0-470-04793-4", ".", "\u00a0", "\n", "^", " ", "\"Stories of Linux: A Look at Slackware Linux\"", ". ", "linux.com", ".", "\u00a0", "\n", "^", " ", "\"Ubuntu carves niche in Linux landscape\"", ". ", "CNET", ". Archived from ", "the original", " on 6 November 2015.", "\u00a0", "\n", "^", " ", "\"The Art of Ballistic Programming\"", ". Archived from ", "the original", " on June 17, 2013.", "\u00a0", "\n", "^", " ", "\"Thesis, Automattic, and WordPress | Post Status\"", ". Retrieved ", "2015-07-24", ".", "\u00a0", "\n", "^", " ", "\"User and Developer Community | Post Status\"", ". Retrieved ", "2015-08-13", ".", "\u00a0", "\n", "^", " ", "\"A History of OCaml | OCaml.org\"", ". Retrieved ", "2015-09-18", ".", "\u00a0", "\n", "^", " ", "\"OCaml Infrastructure mailing list\"", ". Retrieved ", "2015-09-18", ".", "\u00a0", "\n", "^", " ", "\"New Developer Info\"", ". Retrieved ", "21 September", " 2015", ".", "\u00a0", "\n", "^", " ", "\"Why Neovim is Better than Vim\"", ". Retrieved ", "30 September", " 2015", ".", "\u00a0", "\n", "^", " ", "\"Contributing to the F# Language and Compiler\"", ". Retrieved ", "29 September", " 2015", ".", "\u00a0", "\n", "^", " ", "\"Clojure JIRA Workflow\"", ". Retrieved ", "3 October", " 2015", ".", "\u00a0", "\n", "^", " ", "\"pandas 0.20.3 documentation: Tutorials\"", ". Retrieved ", "2017-07-24", ".", "\u00a0", " \"Wes McKinney\u2019s (pandas BDFL) blog\"", "\n", "^", " ", "\"Programming in Scala Leaps onto the World Stage!\"", ". Retrieved ", "2015-11-25", ".", "\u00a0", "\n", "^", " ", "\"A Ruby Design Process\"", ". Retrieved ", "2016-04-17", ".", "\u00a0", "\n", "^", " ", "\"56: Ember vs. Elm: The Showdown with Philip Poots | The Frontside Podcast\"", ". ", "The Frontside Podcast", ". Retrieved ", "2017-08-14", ".", "\u00a0", "\n", "^", " ", "elm-conf (2016-09-19), ", "\"Code is the Easy Part\" by Evan Czaplicki", ", retrieved ", "2017-08-14", "\u00a0", "\n", "^", " ", "\"Understanding the IPFS White Paper part 2\"", ". Retrieved ", "2017-08-21", ".", "\u00a0", "\n", "^", " ", "\"Spacemacs COMMUNITY.org\"", ". Retrieved ", "2017-08-24", ".", "\u00a0", "\n", "^", " ", "\"SciPy 1.0.0\"", ". Retrieved ", "2017-10-27", ".", "\u00a0", "\n", "^", " ", "\"SciPy project governance\"", ". Retrieved ", "2017-10-27", ".", "\u00a0", "\n", "^", " ", "\"Elixir Companies\"", ". Retrieved ", "2017-11-01", ".", "\u00a0", "\n", "\n", "\n\n\n", "\n", "\n", "\n", "\n"], "lastUpdated": " 13 December 2017, at 09:26."}, +{"title": "DotNetNuke", "text": ["\n", "DotNetNuke", "\n", "\n", "\n", "\n", "\n", "Developer(s)", "\n", "DNN Corporation", " ", "[1]", "\n", "\n", "\n", "\n", "\n", "\n", "Stable release", "\n", "\n", "9.1.1", "[2]", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "Development status", "\n", "Active", "\n", "\n", "\n", "Operating system", "\n", "Microsoft Windows", " or ", "Cloud", "\n", "\n", "\n", "Platform", "\n", "ASP.NET", " or ", "Cloud", "[3]", "\n", "\n", "\n", "Type", "\n", "Web framework", "\n", "\n", "\n", "License", "\n", "MIT", "[4]", "\n", "\n", "\n", "Website", "\n", "www", ".dnnsoftware", ".com", "\n", "\n", "\n", "DNN", " (formerly ", "DotNetNuke", ") is a ", "web content management system", " based on ", "Microsoft .NET", ". The DNN Platform Edition is ", "open source", ".", "\n", "DNN is written in ", "C#", ", though it existed for many years as a ", "VB.NET", " project.", "[5]", "[6]", " It is distributed under both a Community Edition ", "MIT", " license ", "[4]", " and commercial proprietary licenses as DNN Evoq Content and DNN Evoq Engage editions.", "\n", "\n", "\n", "\n", "Contents", "\n", "\n", "\n", "1", " ", "Editions", "\n", "2", " ", "Architecture", "\n", "\n", "2.1", " ", "Modules", "\n", "2.2", " ", "Skins", "\n", "\n", "\n", "3", " ", "Hosting", "\n", "4", " ", "Developer ecosystem community", "\n", "5", " ", "Project history", "\n", "6", " ", "See also", "\n", "7", " ", "References", "\n", "8", " ", "External links", "\n", "\n", "\n", "\n", "Editions", "[", "edit", "]", "\n", "DNN Platform (formerly \"DotNetNuke Community Edition\" ", "content management system", ") is open source software that is intended to allow management of websites without much technical knowledge, and to be extensible through a large number of third-party apps to provide functionality not included in the ", "DNN core modules", ". ", "Skins", " can be used to change the look of a website using DNN.", "\n", "There are two commercial editions of the software with increased functionality compared to DNN Platform, and technical support. The DotNetNuke ", "Professional Edition", " was introduced in February 2009 with version 4.9. In July 2013, DotNetNuke Professional Edition was renamed Evoq Content.", "[7]", " In addition, DotNetNuke Enterprise Edition was renamed Evoq Content: Enterprise.", "[8]", " Evoq version 9.0 was released in December 2016.", "[9]", "\n", "Architecture", "[", "edit", "]", "\n", "\n", "\n", "\n", "\nDNN uses a three-tier architecture model.", "\n", "\n", "\n", "DotNetNuke uses a three-tier architecture model with a core framework providing support to the extensible modular structure.", "\n", "While traditionally DNN focused on providing server side functionality, recent projects strive to enhance client side experiences - along with the rest of the industry.", "[10]", " In recent years DNN migrated from using exclusively ", "Web Forms", " to also allowing ", "Model View Controller", " and ", "Single-page application", " architectures.", "[11]", " In the future, DNN faces the challenge of moving from ", "ASP.NET", " 4.6 to the cross-platform free and open source ", ".NET Core", ".", "\n", "DNN can be extended using 3rd-party modules and providers that add functionality at the server or client side. The appearance of individual pages and sites can be customized using skins.", "[12]", "\n", "Modules", "[", "edit", "]", "\n", "\n", "\n", "\n", "\nDotNetNuke modules.", "\n", "\n", "\n", "The default functionality of DNN can be expanded by adding third-party modules, either from an existing module store,", "[13]", " from 3rd party authors,", "[14]", " or through ", "in-house development", " of custom functionality.", "[15]", " The DNN framework provides basic functionality such as ", "security", ", user administration, and ", "content management", ", while modules are used to tailor the web site for specific deployment needs.", "[16]", "\n", "A set of primary modules are included with the core DNN distribution. These modules provide the functionality required to create an e-commerce system, an intranet, a public web site or a custom web application. They are maintained by a volunteer team community. In 2015 and 2016 most projects were moved from the DotNetNuke Community Forge", "[17]", " to GitHub.", "[18]", "\n", "Web pages have skins which define regions of a page (plus their appearance) where page editors can place modules (or extensions) made available by site administrators. Pages and modules can inherit or set custom access permissions that define which groups of users can view or edit each item.", "\n", "Module can be created in various ways: compiled modules use the Web Application Project model and are written in C# or VB.NET,", "[19]", " dynamic modules use the Web Site Project model, and ", "Razor", " modules which use a C# or VB.NET scripting language.", "[20]", "\n", "Skins", "[", "edit", "]", "\n", "A skinning architecture provides a ", "separation of presentation and content", ", enabling a web designer to develop skins without requiring any specialist knowledge of development in ASP.NET: only knowledge of ", "HTML", " and an understanding of how to prepare and package the skins themselves is required. Skins consist of basic HTML files with placeholders (", "tokens", ") for content, menus and other functionality, along with support files such as images, ", "style sheets", " and ", "JavaScript", ", packaged in a ", "ZIP file", ".", "[21]", "\n", "Upon Microsoft's release of the ", ".NET Framework version 2", ", Microsoft had included functionality known as master pages. The principal idea behind master pages was to encourage ", "code recycling", " and consistent design and aesthetics throughout a site by creating a master page with placeholders, which at ", "runtime", " would be ", "compiled", " and replaced by content.", "\n", "Like modules, skins, can be uploaded and automatically installed through the administration pages. If the compiled skin does not contain an ASP.NET user control file, then the DNN skinning engine builds one based on various tokens included in the HTML file which refer to various sections, placeholders and/or modules of a DNN-produced page. Modern skins incorporate CSS3 and HTML5", "[22]", " with many authors' skins supporting ", "Responsive web design", ", various ", "JavaScript libraries", ". With no credentialing, a skin's quality may vary, but often trial periods are available to evaluate functionality.", "\n", "Hosting", "[", "edit", "]", "\n", "DNN 7.0 and above has a minimum requirement of Windows Vista, ", "SQL Server", " 2008, and ", ".NET", " 4.0 and ", "IIS", " 7+. These product's latest versions are supported.", "[23]", " As of version 6.0, DNN can also be installed in an ", "Azure", " ", "cloud computing", " environment.", "[24]", " Numerous web hosting companies offer DNN as an offering, and a 1 step installation process is available through Microsoft.", "[25]", " However DNN's requirement for an IIS medium trust environment has prevented broader adoption", "[26]", " among some mainstream hosting companies.", "\n", "Developer ecosystem community", "[", "edit", "]", "\n", "DNNSoftware.com has over 1 million registered members as of November 2013 and is used on some 750,000 websites globally.", "[27]", " Support for the Community Edition of DotNetNuke is provided by community members and developers can participate in the open-source project on GitHub.", "[28]", "\n", "API", " reference documents for modules", "[29]", " and skins", "[30]", " are available, although as of 2013, some documentation was still available only in task-oriented form.", "[31]", " A Wiki has been created to address this weakness, with 400 wiki pages as of May 2014.", "[32]", "\n", "Project history", "[", "edit", "]", "\n", "The DotNetNuke application originally evolved out of another project, the IBuySpy Workshop.", "[33]", " The IBuySpy Workshop application had been created by Shaun Walker ", "[34]", " as an enhancement to the IBuySpy Portal that started as a sample application for the ", ".NET Framework", ". Early versions of DotNetNuke were released by Walker's company, Perpetual Motion Inc, while later development was expanded by the open source community.", "[", "citation needed", "]", "\n", "The name DotNetNuke was coined by Walker by combining the term ", ".NET", " with the word \"nuke\", which had been popular with pre-existing frameworks such as ", "PHP-Nuke", " and PostNuke.", "[35]", " The term DotNetNuke and DNN are registered trademarks in the US (Search USPTO", "[36]", ") and Canada.", "[37]", "[38]", "\n", "In September 2006, four members of the project's board of directors formed a corporation to oversee the development of the project. The new DotNetNuke Corporation was co-founded by Walker,", "[39]", " Joe Brinkman,", "[40]", " Nik Kalyani,", "[41]", " and Scott Willhite", "[42]", " and replaced Perpetual Motion Interactive Systems Inc. as the corporate entity behind the project.", "[43]", "\n", "On November 25, 2008, DotNetNuke announced ", "Series A", " financing from Sierra Ventures and ", "August Capital", ", and in February 2009, after hiring Navin Nagiah as CEO, a Professional Edition version of DotNetNuke has been released for business and enterprise customers. In February 2010 DotNetNuke announced a Series B financing from Sierra Ventures, ", "August Capital", ", and Pelion Venture Partners.", "[44]", "\n", "In August 2009 a partner program was launched by DotNetNuke Corporation, aimed at providing support to the web design and development companies that build web sites using DotNetNuke. DotNetNuke Corporation also announced the acquisition of Snowcovered, an online market for DotNetNuke modules, skins, services and related products.", "[45]", "\n", "In October 2009, the 2009 Open Source CMS Market Share Report concluded that DotNetNuke was the leading .NET-based open source web content management system.", "[46]", "\n", "In 2013, the company was renamed to ", "DNN Corporation", ".", "[47]", "\n", "See also", "[", "edit", "]", "\n", "\n", "List of content management systems", " (CMS)", "\n", "\n", "References", "[", "edit", "]", "\n", "\n", "\n", "^", " ", "\"Web CMS - Online Community Software - DNN (DotNetNuke)\"", ". ", "dnnsoftware.com", ".", "\u00a0", "\n", "^", " ", "\"Releases \u00b7 dnnsoftware_Dnn.Platform\"", ". ", "GitHub", ". GitHub", ". Retrieved ", "27 September", " 2017", ".", "\u00a0", "\n", "^", " ", "Pranav Singh (2013-06-04). ", "\"Deploying DotNetNuke on Windows Azure\"", ". CodeProject", ". Retrieved ", "2017-04-05", ".", "\u00a0", "\n", "^ ", "a", " ", "b", " ", "\"DNN CMS Platform - License\"", ". ", "Dotnetnuke.codeplex.com", ". Retrieved ", "2017-04-05", ".", "\u00a0", "\n", "^", " ", "\"DotNetNuke Switches to C#\u00a0!! >\"", ". DNN Software. 2011-02-28", ". Retrieved ", "2017-04-05", ".", "\u00a0", "\n", "^", " ", "a (2007-05-11). ", "\"A conversion of the popular DotNetNuke web application to C#\"", ". CodeProject", ". Retrieved ", "2017-04-05", ".", "\u00a0", "\n", "^", " ", "\"DNN Expands Product Suite, Services and SaaS Offering With DNN Evoq\"", ". DNN Corp", ". Retrieved ", "14 Aug", " 2013", ".", "\u00a0", "\n", "^", " ", "Mosher, Barb (2013-07-09). ", "\"DotNetNuke Rebrands to DNN Evoq, Focuses on Business Solutions + Platform\"", ". ", "Cmswire.com", ". Retrieved ", "2017-04-05", ".", "\u00a0", "\n", "^", " ", "\"New CMS Features in Evoq 9\"", ". ", "DNNSoftware", ". DNN Corp", ". Retrieved ", "6 March", " 2017", ".", "\u00a0", "\n", "^", " ", "\"Client Resource Management API\"", ". ", "Dnnsoftware.com", ". Retrieved ", "2017-04-05", ".", "\u00a0", "\n", "^", " ", "\"DNN Loves MVC: 1 - Introduction\"", ". ", "Charlesnurse.com", ". 2015-03-28", ". Retrieved ", "2017-04-05", ".", "\u00a0", "\n", "^", " ", "\"DotNetNuke - the easy way to an ASP.NET website - .NET tutorial\"", ". Developer Fusion. 2010-06-28", ". Retrieved ", "2017-04-05", ".", "\u00a0", "\n", "^", " ", "\"The Official DNN Store - Modules, Skins and Extensions\"", ". ", "Store.dnnsoftware.com", ". 2017-02-11", ". Retrieved ", "2017-04-05", ".", "\u00a0", "\n", "^", " ", "\"DNN Community\"", ". ", "Github.com", ". Retrieved ", "2017-04-05", ".", "\u00a0", "\n", "^", " ", "\"DotNetNuke 4 - Module Developers Guide - Chapter 1\"", ". ", "Adefwebserver.com", ". Retrieved ", "2017-04-05", ".", "\u00a0", "\n", "^", " ", "\"Amazon.com: dnn and dotnetnuke\"", ". ", "Smile.amazon.com", ". Retrieved ", "2017-04-05", ".", "\u00a0", "\n", "^", " ", "\"NET Forge CMS, Extensible CMS - DNN Software Forge\"", ". ", "Dotnetnuke.com", ". 2017-01-28", ". Retrieved ", "2017-04-05", ".", "\u00a0", "\n", "^", " ", "\"Why DNN Community Extensions have Moved to GitHub\"", ". ", "Github.com", ". 2015-02-20", ". Retrieved ", "2017-04-05", ".", "\u00a0", "\n", "^", " ", "\"DotNetNuke Development | DNN Developer | DNN Experts, DNN Module Development, DNN Skins India\"", ". ", "Swayamsoft.com", ". Retrieved ", "2017-04-05", ".", "\u00a0", "\n", "^", " ", "\"Build CMS, Building a Product Roadmap, CMS Development Tools\"", ". ", "Dnnsoftware.com", ". 2017-01-28", ". Retrieved ", "2017-04-05", ".", "\u00a0", "\n", "^", " ", "\"Top 5 DotNetNuke Manifest file Module Packaging Tips\"", ". iFinity", ". Retrieved ", "2017-04-05", ".", "\u00a0", "\n", "^", " ", "\"How to Create a Responsive HTML5 Skin for DotNetNuke\"", ". ", "Dnncreative.com", ". Retrieved ", "2017-04-05", ".", "\u00a0", "\n", "^", " ", "\"DNN Cloud Demo - Install DNN Software | DNN DotNetNuke\"", ". ", "Dnnsoftware.com", ". 2017-01-28", ". Retrieved ", "2017-04-05", ".", "\u00a0", "\n", "^", " ", "\"DotNetNuke in Azure Cloud\"", ". Elinext. 2012-04-14", ". Retrieved ", "2017-04-05", ".", "\u00a0", "\n", "^", " ", "\"Microsoft Web Platform\"", ". ", "Microsoft.com", ". Retrieved ", "2017-04-05", ".", "\u00a0", "\n", "^", " ", "\"Installing DotNetNuke 4.9.0 on Medium Trust Webservers\"", ". ", "Programmersanonymous.net", ". Retrieved ", "2017-04-05", ".", "\u00a0", "\n", "^", " ", "\"DNN CMS Platform - Home\"", ". ", "Dotnetnuke.codeplex.com", ". Retrieved ", "2017-04-05", ".", "\u00a0", "\n", "^", " ", "\"dnnsoftware/Dnn.Platform: DNN Corp Platform Repository\"", ". GitHub", ". Retrieved ", "2017-04-05", ".", "\u00a0", "\n", "^", " ", "\"DNN API Endpoint Documentation\"", ". ", "Endpoint.dnnapi.dnnsharp.com", ". Retrieved ", "2017-04-05", ".", "\u00a0", "\n", "^", " ", "\"DNN Skinning Reference | DNN Skinning Tool | Dot Net Nuke Skinning\"", ". ", "10poundgorilla.com", ". Retrieved ", "2017-04-05", ".", "\u00a0", "\n", "^", " ", "\"About DNN - DNN Company Overview | DNN\"", ". DotNetNuke", ". Retrieved ", "2017-04-05", ".", "\u00a0", "\n", "^", " ", "\"CMS Wiki, Content Management Wiki\"", ". DNN Software. 2017-01-28", ". Retrieved ", "2017-04-05", ".", "\u00a0", "\n", "^", " ", "\"Open Source CMS Project History - DNN CMS & Online Community Software\"", ". ", "dotnetnuke.com", ".", "\u00a0", "\n", "^", " ", "Book: Building Websites with DotNetNuke 5, Michael Washington and Ian Lackey, Packt Publishing. Page 14 \"The core team comprises individuals invited to join the team by Shaun Walker, whom they affectionately call the \"Benevolent Dictator\".\"", "\n", "^", " ", "\"About DNN - DNN Company Overview - DNN (DotNetNuke)\"", ". ", "dotnetnuke.com", ".", "\u00a0", "\n", "^", " ", "\"Trademark Electronic Search System (TESS)\"", ". ", "uspto.gov", ".", "\u00a0", "\n", "^", " ", "\"Basic search: 1192080 - Canadian trade-marks database - Intellectual property and copyright - Canadian Intellectual Property Office - Industry Canada\"", ". ", "ic.gc.ca", ".", "\u00a0", "\n", "^", " ", "\"Basic search: 1256752 - Canadian trade-marks database - Intellectual property and copyright - Canadian Intellectual Property Office - Industry Canada\"", ". ", "ic.gc.ca", ".", "\u00a0", "\n", "^", " ", "[1]", "[", "permanent dead link", "]", "\n", "^", " ", "[2]", "[", "permanent dead link", "]", "\n", "^", " ", "[3]", "[", "permanent dead link", "]", "\n", "^", " ", "[4]", "[", "permanent dead link", "]", "\n", "^", " ", "\"About DNN - DNN Company Overview - DNN (DotNetNuke)\"", ". ", "dotnetnuke.com", ".", "\u00a0", "\n", "^", " ", "\"DotNetNuke Raises $8 Million\"", ". PE Hub. 2010-02-09", ". Retrieved ", "2017-04-05", ".", "\u00a0", "\n", "^", " ", "\"DotNetNuke Buys Snowcovered\"", ". ", "Silicontap.com", ". 2009-08-27", ". Retrieved ", "2017-04-05", ".", "\u00a0", "\n", "^", " ", "\"Archived copy\"", ". Archived from ", "the original", " on 2010-06-18", ". Retrieved ", "2010-06-15", ".", "\u00a0", "\n", "^", " ", "Shaun Walker. ", "\"DNN: The Metamorphosis Continues..\"", " ", "DNN Software", ".", "\u00a0", "\n", "\n", "\n", "External links", "[", "edit", "]", "\n", "\n", "DNN Corp.", " - The official DNN Corp Site", "\n", "Comparison of Evoq with other CMS systems", "\n", "DNN Plus.", " - DNN Persian Site", "\n", "DotNetNuke Development", " - Content Management System", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "v", "\n", "t", "\n", "e", "\n", "\n", "\n", "Web frameworks", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "Comparison", "\n", "\n", "\n", "\n", "\n", "\n", "C++", "\n", "\n", "\n", "\n", "CppCMS", "\n", "Wt", "\n", "\n", "\n", "\n", "\n", "\n", "CLI", "\n", "\n", "\n", "\n", "ASP.NET", "\n", "\n", "Core", "\n", "AJAX", "\n", "Dynamic Data", "\n", "MVC", "\n", "Razor", "\n", "Web Forms", "\n", "\n", "\n", "DNN", "\n", "BFC", "\n", "MonoRail", "\n", "OpenRasta", "\n", "Umbraco", "\n", "\n", "\n", "\n", "\n", "\n", "ColdFusion", "\n", "\n", "\n", "\n", "CFWheels", "\n", "ColdBox Platform", "\n", "ColdSpring", "\n", "Fusebox", "\n", "Mach-II", "\n", "Model-Glue", "\n", "\n", "\n", "\n", "\n", "\n", "Common Lisp", "\n", "\n", "\n", "\n", "Caveman2", "\n", "CL-HTTP", "\n", "UnCommon Web", "\n", "Weblocks", "\n", "\n", "\n", "\n", "\n", "\n", "Haskell", "\n", "\n", "\n", "\n", "Happstack", "\n", "Yesod", "\n", "Snap", "\n", "\n", "\n", "\n", "\n", "\n", "Java", "\n", "\n", "\n", "\n", "AppFuse", "\n", "Flexive", "\n", "Grails", "\n", "GWT", "\n", "ICEfaces", "\n", "ItsNat", "\n", "JavaServer Faces", "\n", "JHipster", "\n", "Jspx", "\n", "JWt", "\n", "OpenXava", "\n", "Play", "\n", "Reasonable Server Faces", "\n", "Remote Application Platform", "\n", "RIFE", "\n", "Seam", "\n", "Sling", "\n", "Spring", "\n", "Stripes", "\n", "Struts", "\n", "Tapestry", "\n", "Vaadin", "\n", "Vert.x", "\n", "WebWork", "\n", "Wicket", "\n", "WaveMaker", "\n", "ZK", "\n", "\n", "\n", "\n", "\n", "\n", "JavaScript", "\n", "\n", "\n", "\n", "Ample SDK", "\n", "Angular", "/", "AngularJS", "\n", "Backbone.js", "\n", "Chaplin.js", "\n", "Closure", "\n", "Dojo Toolkit", "\n", "Ember.js", "\n", "Ext JS", "\n", "jQuery", "\n", "Meteor", "\n", "MooTools", "\n", "Node.js", "\n", "OpenUI5", "\n", "Prototype", "\n", "React", "\n", "Rico", "\n", "script.aculo.us", "\n", "Sencha Touch", "\n", "SproutCore", "\n", "Wakanda", "\n", "\n", "\n", "\n", "\n", "\n", "Perl", "\n", "\n", "\n", "\n", "Catalyst", "\n", "Dancer", "\n", "Mason", "\n", "Maypole", "\n", "Mojolicious", "\n", "WebGUI", "\n", "\n", "\n", "\n", "\n", "\n", "PHP", "\n", "\n", "\n", "\n", "CakePHP", "\n", "CodeIgniter", "\n", "Drupal", "\n", "Fat-Free", "\n", "FuelPHP", "\n", "Flow", "\n", "Gyroscope", "\n", "Horde", "\n", "Kohana", "\n", "Laravel", "\n", "Lithium", "\n", "Midgard", "\n", "MODX", "\n", "Nette", "\n", "Phalcon", "\n", "Pop PHP", "\n", "PRADO", "\n", "ProcessWire", "\n", "Qcodo", "\n", "Silex", "\n", "SilverStripe", "\n", "Symfony", "\n", "TYPO3", "\n", "Xaraya", "\n", "XOOPS", "\n", "Yii", "\n", "Zend Framework", "\n", "\n", "\n", "\n", "\n", "\n", "Python", "\n", "\n", "\n", "\n", "BlueBream", "\n", "CherryPy", "\n", "Django", "\n", "Flask", "\n", "Grok", "\n", "Nevow", "\n", "Pyjs", "\n", "Pylons", "\n", "Pyramid", "\n", "Quixote", "\n", "TACTIC", "\n", "Tornado", "\n", "TurboGears", "\n", "web2py", "\n", "Webware", "\n", "Zope 2", "\n", "\n", "\n", "\n", "\n", "\n", "Ruby", "\n", "\n", "\n", "\n", "Camping", "\n", "Merb", "\n", "Padrino", "\n", "Ruby on Rails", "\n", "Sinatra", "\n", "\n", "\n", "\n", "\n", "\n", "Scala", "\n", "\n", "\n", "\n", "Lift", "\n", "Play", "\n", "Scalatra", "\n", "\n", "\n", "\n", "\n", "\n", "Smalltalk", "\n", "\n", "\n", "\n", "AIDA/Web", "\n", "Seaside", "\n", "\n", "\n", "\n", "\n", "\n", "Other languages", "\n", "\n", "\n", "\n", "Vibe.d", " (", "D", ")", "\n", "Application Express", " (", "PL/SQL", ")", "\n", "Grails", " (", "Groovy", ")", "\n", "Kepler", " (", "Lua", ")", "\n", "Rocket", " (", "Rust", ")", "\n", "OpenACS", " (", "Tcl", ")", "\n", "Phoenix", " (", "Elixir", ")", "\n", "SproutCore", " (", "JavaScript", "-", "Ruby", ")", "\n", "Yaws", " (", "Erlang", ")", "\n", "\n", "\n", "\n", "\n", "\n", "\n\n\n", "\n", "\n", "\n", "\n"], "lastUpdated": " 17 January 2018, at 04:00."}, +{"title": "Drupal", "text": ["\n", "Drupal", "\n", "\n", "\n", "\n", "\n", "\n", "Drupal 8 in action. Showing in-context editing and previews (", "WYSIWYG", ").", "\n", "\n", "\n", "\n", "Original author(s)", "\n", "Dries Buytaert", "\n", "\n", "\n", "Initial release", "\n", "May\u00a018, 2000", "; 17 years ago", "\u00a0(", "2000-05-18", ")", "[1]", "\n", "\n", "\n", "\n", "\n", "\n", "Stable release", "\n", "\n", "8.4.2", "[2]", " / 3\u00a0November 2017", "; 2 months ago", "\u00a0(", "2017-11-03", ")", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "Repository", "\n", "\n", "\n", "\n", "http://cgit.drupalcode.org/drupal", "\n", "\n", "\n", "\n", "\n", "\n", "Development status", "\n", "Active", "\n", "\n", "\n", "Written in", "\n", "PHP", ", using ", "Symfony", "\n", "\n", "\n", "Operating system", "\n", "Unix-like", ", ", "Windows", "\n", "\n", "\n", "Platform", "\n", "Cross-platform", "\n", "\n", "\n", "Size", "\n", "80\u00a0MB (uncompressed Drupal 8 core)", "[2]", "\n", "\n", "\n", "Available in", "\n", "Multilingual", "\n", "\n", "\n", "Type", "\n", "Content management framework", ", ", "Content management system", ", ", "Community", " and ", "Blog software", "\n", "\n", "\n", "License", "\n", "GPLv2", " or later", "[3]", "\n", "\n", "\n", "Website", "\n", "www", ".drupal", ".org", "\n", "\n", "\n", "Drupal", " ", "/", "\u02c8", "d", "r", "u\u02d0", "p", "\u0259l", "/", " is ", "[4]", " a ", "free", " and ", "open source", " ", "content-management framework", " written in ", "PHP", " and distributed under the ", "GNU General Public License", ".", "[3]", "[5]", "[6]", " Drupal provides a ", "back-end", " framework for at least 2.3% of all ", "web sites", " worldwide", "[7]", "[8]", " \u2013 ranging from personal ", "blogs", " to corporate, political, and government sites.", "[9]", " Systems also use Drupal for ", "knowledge management", " and for business collaboration.", "[10]", "\n", "As of November 2017", "[update]", ", the Drupal community is composed of more than 1.3 million members,", "[11]", "[12]", " including 109,000 users actively contributing,", "[13]", " resulting in more than 39,000 free modules that extend and customize Drupal functionality,", "[14]", " over 2,500 free themes that change the look and feel of Drupal,", "[15]", " and at least 1,180 free distributions that allow users to quickly and easily set up a complex, use-specific Drupal in fewer steps.", "[16]", "\n", "The standard release of Drupal, known as ", "Drupal core", ", contains basic features common to ", "content-management systems", ". These include user account registration and maintenance, menu management, ", "RSS", " feeds, taxonomy, page layout customization, and system administration. The Drupal core installation can serve as a simple Web site, a single- or multi-user blog, an ", "Internet forum", ", or a community Web site providing for ", "user-generated content", ".", "\n", "Drupal also describes itself as a ", "Web application framework", ".", "[17]", " When compared with notable frameworks Drupal meets most of the generally accepted ", "feature requirements", " for such web frameworks.", "[18]", "[19]", "[20]", "\n", "Although Drupal offers a sophisticated ", "API", " for developers, basic Web-site installation and administration of the framework require no programming skills.", "[21]", "\n", "Drupal runs on any ", "computing platform", " that supports both a ", "Web server", " capable of running PHP and a ", "database", " to store content and configuration.", "\n", "\n", "\n", "\n", "Contents", "\n", "\n", "\n", "1", " ", "History", "\n", "2", " ", "Core", "\n", "\n", "2.1", " ", "Core modules", "\n", "2.2", " ", "Core themes", "\n", "2.3", " ", "Localization", "\n", "2.4", " ", "Auto-update notification", "\n", "2.5", " ", "Database abstraction", "\n", "2.6", " ", "Windows development", "\n", "2.7", " ", "Accessibility", "\n", "\n", "\n", "3", " ", "Extending the core", "\n", "\n", "3.1", " ", "Modules", "\n", "3.2", " ", "Themes", "\n", "3.3", " ", "Distributions", "\n", "\n", "\n", "4", " ", "Architecture", "\n", "5", " ", "Community", "\n", "6", " ", "Security", "\n", "7", " ", "Criticism", "\n", "8", " ", "See also", "\n", "9", " ", "References", "\n", "10", " ", "Further reading", "\n", "11", " ", "External links", "\n", "\n", "\n", "\n", "History", "[", "edit", "]", "\n", "\n", "Latest major releases", "\n", "\n", "Version", "\n", "Release date", "\n", "\n", "\n", "8.4.2", "\n", "November 3, 2017", "[2]", "\n", "\n", "\n", "8.2.8", "\n", "April 19, 2017", "[2]", "\n", "\n", "\n", "7.56", "\n", "June 21, 2017", "[22]", "\n", "\n", "\n", "6.38", "\n", "February 24, 2016", "[23]", "\n", "\n", "\n", "5.23", "\n", "August 11, 2010", "[24]", "\n", "\n", "\n", "\n", "\n", "\n", "\nDrupal version 1-6 release history timeline", "\n", "\n", "\n", "Originally written by ", "Dries Buytaert", " as a ", "message board", ", Drupal became an ", "open source", " project in 2001.", "[25]", " The name ", "Drupal", " represents an English rendering of the ", "Dutch", " word ", "druppel", ", which means \"drop\" (as in a water droplet).", "[26]", " The name came from the now-defunct Drop.org Web site, whose code slowly evolved into Drupal. Buytaert wanted to call the site \"dorp\" (Dutch for \"village\") for its community aspects, but mistyped it when checking the domain name and thought the error sounded better.", "[25]", "\n", "Interest in Drupal got a significant boost in 2003 when it helped build \"DeanSpace\" for ", "Howard Dean", ", one of the candidates in the ", "U.S. Democratic Party", "'s primary campaign for the ", "2004 U.S. presidential election", ". DeanSpace used open-source sharing of Drupal to support a decentralized network of approximately 50 disparate, unofficial pro-Dean websites that allowed users to communicate directly with one another as well as with the campaign.", "[27]", " After Dean ended his campaign, members of his Web team continued to pursue their interest in developing a Web platform that could aid political activism by launching CivicSpace Labs in July 2004, \"...the first company with full-time employees that was developing and distributing Drupal technology.\"", "[28]", " Other companies began to also specialize in Drupal development.", "[29]", "[30]", " By 2013 the Drupal Web site listed hundreds of vendors that offered Drupal-related services.", "[31]", "\n", "As of 2014", "[update]", " Drupal is developed by a community,", "[32]", " and its popularity is growing rapidly.", "[", "citation needed", "]", " From July 2007 to June 2008 the Drupal.org site provided more than 1.4 million downloads of Drupal software, an increase of approximately 125% from the previous year.", "[33]", "[34]", "\n", "As of January 2017", "[update]", " more than 1,180,000 sites use Drupal.", "[35]", " These include hundreds of well-known organizations,", "[36]", " including corporations, media and publishing companies, governments, non-profits,", "[37]", " schools, and individuals. Drupal has won several ", "Packt", " Open Source CMS Awards", "[38]", " and won the ", "Webware 100", " ", "[", "clarification needed", "]", " three times in a row.", "[39]", "[40]", "\n", "On March 5, 2009 Buytaert announced a ", "code freeze", " for Drupal 7 for September 1, 2009.", "[41]", " Drupal 7 was released on January 5, 2011, with release parties in several countries.", "[42]", " After that, maintenance on Drupal 5 stopped, with only Drupal 7 and Drupal 6 maintained.", "[43]", " Drupal 7 series maintenance updates are released regularly.", "[44]", "\n", "On December 1, 2012, Drupal 8 started its feature completion.", "[45]", " About three years later, on October 7, 2015 Drupal 8 first release candidate (rc1) was announced.", "[46]", " Drupal 8 includes new features and improvements for both users and developers, including: a revamped user interface; WYSIWYG and in-place editing; improved mobile support; added and improved key contributed modules including Views, Date, and Entity Reference; introduced a new object-oriented backend leveraging Symfony components; revamped configuration management; and improved multilingual support. Drupal 8 rc1 is the collective work of over 3,200 core contributors.", "[47]", "\n", "Drupal 8.0.0 was released on November 19, 2015.", "[48]", " A subsequent upgrade to it is also available in the form of Drupal 8.1.0", "[49]", " that brings numerous improvements, including CKEditor WYSIWYG enhancements, added APIs, an improved help page, and two new experimental modules. Experimental modules are meant for testing purposes, but are not yet fully supported.", "\n", "Core", "[", "edit", "]", "\n", "In the Drupal community, \"core\" refers to the collaboratively built codebase that can be extended through contributory modules and for versions prior to Drupal 8 is kept outside of the \"sites\" folder of a Drupal installation.", "[50]", " (Starting with version 8, core is kept in its own 'core' sub-directory.) Drupal core is the stock element of Drupal. Bootstrap and Common libraries are defined as Drupal core and all other functionality is defined as Drupal modules including the system module itself.", "\n", "In a Drupal website's default configuration, authors can contribute content as either registered or anonymous users (at the discretion of the administrator). This content is accessible to web visitors through a variety of selectable criteria. As of Drupal 8, Drupal has adopted some ", "Symfony", " libraries into Drupal core.", "\n", "Core modules also includes a hierarchical ", "taxonomy", " system, which lets developers categorize content or ", "tagged", " with key words for easier access.", "[21]", "\n", "Drupal maintains a detailed ", "changelog", " of core feature updates by version.", "[51]", "\n", "Core modules", "[", "edit", "]", "\n", "Drupal core includes optional modules that can be enabled by the administrator to extend the functionality of the core website.", "[52]", "\n", "The core Drupal distribution provides a number of features, including:", "[52]", "\n", "\n", "\n", "Access statistics and logging", "\n", "Advanced search", "\n", "Blogs, books, comments, forums, and polls", "\n", "Caching and feature throttling for improved performance", "\n", "Descriptive URLs", "\n", "Multi-level menu system", "\n", "Multi-site support", "[53]", "\n", "Multi-user content creation and editing", "\n", "OpenID", " support", "\n", "RSS feed and feed aggregator", "\n", "Security and new release update notification", "\n", "User profiles", "\n", "Various access control restrictions (user roles, IP addresses, email)", "\n", "Workflow tools (triggers and actions)", "\n", "\n", "\n", "Core themes", "[", "edit", "]", "\n", "Drupal includes core themes, which customize the \"look and feel\" of Drupal sites,", "[54]", " for example, Garland and Bartik.", "\n", "The Color Module, introduced in Drupal core 5.0, allows administrators to change the color scheme of certain themes via a browser interface.", "[55]", "\n", "Localization", "[", "edit", "]", "\n", "As of January 2017", "[update]", ", Drupal had been made available in 100 languages and ", "English", " (the default).", "[56]", " Support is included for right-to-left languages such as ", "Arabic", ", ", "Persian", ", and ", "Hebrew", ".", "[57]", "\n", "Drupal localization is built on top of ", "gettext", ", the GNU ", "internationalization and localization", " (i18n) library.", "\n", "Auto-update notification", "[", "edit", "]", "\n", "Drupal can automatically notify the administrator about new versions of modules, themes, or the Drupal core.", "[57]", " It's important to update quickly after security updates are released.", "\n", "Before updating it is highly recommended to take backup of core, modules, theme, files and database. If there is any error shown after update or new updates is not compatible with a module, then it can be quickly replace by backup. There are several backup modules available in Drupal.", "\n", "On October 15, 2014, a sql injection vulnerability was announced and update released.", "[58]", " Two weeks later the Drupal security team released an advisory explaining that everyone should act under the assumption that any site not updated within 7 hours of the announcement are infected.", "[59]", " Thus, it can be extremely important to apply these updates quickly and usage of a tool to make this process easier like drush is highly recommended.", "\n", "Database abstraction", "[", "edit", "]", "\n", "Prior to version 7, Drupal had functions that performed tasks related to databases, such as SQL query cleansing, multi-site table name prefixing, and generating proper SQL queries. In particular, Drupal 6 introduced an abstraction layer that allowed programmers to create SQL queries without writing SQL.", "\n", "Drupal 7 extends the data abstraction layer so that a programmer no longer needs to write SQL queries as text strings. It uses ", "PHP Data Objects", " to abstract the database. ", "Microsoft", " has written a database driver for their ", "SQL Server", ".", "[60]", " Drupal 7 supports the file-based SQLite database engine, which is part of the standard PHP distribution.", "\n", "Windows development", "[", "edit", "]", "\n", "With Drupal 7's new database abstraction layer, and ability to run on the Windows web server ", "IIS", ", it is now easier for Windows developers to participate in the Drupal community.", "\n", "A group on Drupal.org is dedicated to Windows issues.", "[61]", "\n", "Accessibility", "[", "edit", "]", "\n", "With the release of Drupal 7, ", "Web accessibility", " has been greatly improved by the Drupal community.", "[62]", " Drupal is a good framework for building sites accessible to people with disabilities, because many of the best practices have been incorporated into the program code Core. The accessibility team is carrying on the work of identifying and resolving accessibility barriers and raising awareness within the community.", "\n", "Drupal 7 started the adoption of ", "WAI-ARIA", " support for ", "Rich Internet Applications", " and this has been carried further in Drupal 8. There have been many improvements to both the visitor and administrator sides of Drupal, especially:", "\n", "\n", "Drag and drop functionality", "\n", "Improved color contrast and intensity", "\n", "Adding skip navigation to core themes", "\n", "Adding labels by default for input forms", "\n", "Fixing CSS display:none with consistent methods for hiding and exposing text on focus.", "\n", "\n", "The community also added an accessibility gate for core issues in Drupal 8.", "[63]", "\n", "Extending the core", "[", "edit", "]", "\n", "Drupal core is ", "modular", ", defining a system of ", "hooks", " and ", "callbacks", ", which are accessed internally via an ", "API", ".", "[64]", " This design allows third-party contributed ", "modules", " and ", "themes", " to extend or override Drupal's default behaviors without changing Drupal core's code.", "\n", "Drupal isolates core files from contributed modules and themes. This increases flexibility and security and allows administrators to cleanly upgrade to new releases without overwriting their site's customizations.", "[65]", " The Drupal community has the saying, \"Never hack core,\" a strong recommendation that site developers do not change core files.", "[50]", "\n", "Modules", "[", "edit", "]", "\n", "Contributed modules offer such additional or alternate features as image galleries, custom content types and content listings, ", "WYSIWYG", " editors, private messaging, third-party integration tools,", "[66]", " integrating with BPM portals,", "[67]", " and more. As of January 2017", "[update]", " the Drupal website lists more than 36,500 free ", "modules", ".", "[14]", "\n", "Some of the most commonly used contributed modules include:", "[68]", "\n", "\n", "Content Construction Kit (CCK): allows site administrators to dynamically create content types by extending the database schema. \"Content type\" describes the kind of information. Content types include, but are not limited to, events, invitations, reviews, articles, and products. The CCK Fields API is in Drupal core in Drupal 7.", "[69]", "[70]", "\n", "Views: facilitates the retrieval and presentation, through a database abstraction system, of content to site visitors. Basic views functionality has been added to core in Drupal 8.", "[71]", "\n", "Panels: drag and drop layout manager that allows site administrators to visually design their site.", "\n", "Rules: conditionally executed actions based on recurring events.", "\n", "Features: enables the capture and management of features (entities, views, fields, configuration, etc.) into custom modules.", "\n", "Context: allows definition of sections of site where Drupal features can be conditionally activated", "\n", "Media: makes photo uploading and media management easier", "\n", "Services: provides an API for Drupal.", "\n", "Organic Groups Mailing List", "\n", "\n", "Themes", "[", "edit", "]", "\n", "As of January 2017", "[update]", ", there are more than 2,400", "[15]", " free community-contributed ", "themes", ". Themes adapt or replace a Drupal site's default look and feel.", "\n", "Drupal themes use standardized formats that may be generated by common third-party theme design engines. Many are written in the ", "PHPTemplate", " engine", "[72]", " or, to a lesser extent, the ", "XTemplate", " engine.", "[73]", " Some templates use hard-coded ", "PHP", ". Drupal 8 will integrate the ", "Twig", " templating engine.", "\n", "The inclusion of the PHPTemplate and XTemplate engines in Drupal addressed user concerns about flexibility and complexity.", "[74]", " The Drupal theming system utilizes a ", "template engine", " to further separate ", "HTML", "/", "CSS", " from PHP. A popular Drupal contributed module called 'Devel' provides GUI information to developers and themers about the page build.", "\n", "Community-contributed themes", "[75]", " at the Drupal website are released under a free ", "GPL", " license,", "[76]", " and the most installed Drupal themes are ", "listed on this page", ".", "[77]", "\n", "Distributions", "[", "edit", "]", "\n", "In the past, those wanting a fully customized installation of Drupal had to download a pre-tailored version separately from the official Drupal core. Today, however, a distribution defines a packaged version of Drupal that upon installation, provides a website or application built for a specific purpose.", "\n", "The distributions offer the benefit of a new Drupal site without having to manually seek out and install third-party contributed modules or adjust configuration settings.", "[78]", " They are collections of modules, themes, and associated configuration settings that prepare Drupal for custom operation. For example, a distribution could configure Drupal as a \"brochure\" site rather than a news site or ", "online store", ".", "\n", "Architecture", "[", "edit", "]", "\n", "Drupal is based on the ", "Presentation Abstraction Control", " architecture, or PAC.", "\n", "The ", "menu system", " acts as the Controller. It accepts input via a single source (", "HTTP GET", " and ", "POST", "), routes requests to the appropriate helper functions, pulls data out of the Abstraction (nodes and, from Drupal 5 onwards, forms), and then pushes it through a filter to get a Presentation of it (the theme system).", "\n", "It even has multiple, parallel PAC agents in the form of blocks that push data out to a common canvas (page.tpl.php).", "[79]", "\n", "Community", "[", "edit", "]", "\n", "Drupal.org has a large community of users and developers who provide active ", "community", " support by coming up with new updates to help improve the functionality of Drupal,", "[80]", " As of January 2017", "[update]", " more than 105,400 users are actively contributing.", "[13]", " The semiannual DrupalCon conference alternates between North America, Europe and Asia.", "[81]", " Attendance at DrupalCon grew from 500 at ", "Szeged", " in August 2008, to over 3,700 people at Austin, Texas in June, 2014.", "\n", "Smaller events, known as \"Drupal Camps\" or DrupalCamp,", "[82]", " occur throughout the year all over the world. The annual Florida DrupalCamp brings users together for ", "Coding for a Cause", " that benefits a local nonprofit organization, as does the annual GLADCamp (", "Greater Los Angeles Drupal", " Camp) event, ", "Coders with a Cause", ".", "\n", "The Drupal community also organizes professional and semi-professional gatherings called ", "meetups", " at a large number of venues around the world. In July, 2013, ", "Droplabs", ", a co-working space in Los Angeles, California, was recognized as the world's \"Top Drupal Location", "[83]", "\" (with 62 recorded events) when compared with other event venues over a 12-month period.", "\n", "There are a number of active Drupal forums,", "[84]", " mailing lists", "[85]", " and discussion groups.", "[86]", " Drupal also maintains several ", "IRC", " channels", "[87]", " on the ", "Freenode", " network.", "\n", "There are over 30 national communities", "[88]", " around drupal.org offering language-specific support.", "\n", "Notable Drupal users include ", "NBC", ", ", "Taboola", ", and ", "Patch", ".", "[89]", "\n", "Security", "[", "edit", "]", "\n", "Drupal's policy is to announce the nature of each security vulnerability once the fix is released.", "[90]", "[91]", "\n", "Administrators of Drupal sites are automatically notified of these new releases via the Update Status module (Drupal 6) or via the Update Manager (Drupal 7).", "[92]", "\n", "Drupal maintains a security announcement mailing list, a history of all security advisories,", "[93]", " a security team home page,", "[94]", " and an RSS feed", "[95]", " with the most recent security advisories.", "\n", "In mid-October 2014,", "[96]", " Drupal issued a \"highly critical\" security advisory regarding an ", "SQL injection", " bug in Drupal 7, also known as Drupalgeddon.", "[97]", "[98]", "\n", "Downloading and installing an upgrade to Drupal 7.32 fixes the vulnerability, but does not remove any ", "backdoor", " installed by hackers if the site has already been ", "compromised", ".", "[99]", " Attacks began soon after the vulnerability was announced. According to the Drupal security team, where a site was not patched within hours of the announcement, it should be considered compromised and taken offline by being replaced with a static HTML page while the administrator of its server must be told that other sites on the same server may also have been compromised.", "\n", "To solve the problem, the site must be restored using backups from before October 15, be patched and manually updated, and anything merged from the site must be audited.", "[100]", "\n", "Criticism", "[", "edit", "]", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "This section needs to be ", "updated", ". ", "Please update this article to reflect recent events or newly available information.", " ", "(December 2014)", "\n", "\n", "\n", "\n", "In an article", "[101]", " about the adoption of Drupal by the Whitehouse.gov site, ", "Slate", " associate editor Chris Wilson", "[102]", " lists some common criticisms of Drupal. Other criticisms have included:", "\n", "\n", "Usability:", " Aspects of the Drupal 6 administration interface were confusing and intimidating to some, particularly for new administrators.", "[103]", "[104]", "[105]", " According to Dries Buytaert, Drupal 7 addressed 90% of the problems identified by usability tests conducted at the Universities of Minnesota and Baltimore.", "[106]", "[107]", " To achieve this, ", "Acquia", " (the company founded by the project lead of Drupal) hired ", "user experience", " designer Mark Boulton to work with the Drupal community to design an improved user interface for Drupal's administration interface.", "[108]", " The majority of his team's design work has been implemented by the community in Drupal 7. The 2011 usability test results from the University of Minnesota Office of Information Technology show that all of the major usability problems identified in Drupal 6 are either vastly improved or non-existent in Drupal 7. However, some new usability problems were identified.", "[109]", "[110]", " Since the release of Drupal 7 there are now various distributions and applications to enhance the Back-end Usability of Drupal such as Drupal Gardens,", "[111]", " Open Enterprise", "[112]", " and Mitkom Builder.", "[113]", "\n", "Learning curve:", " Some users describe Drupal as being difficult to master.", "[114]", "[115]", " Drupal's many contributed modules can have overlapping functionality and have been reported as overwhelming to new users.", "[116]", "\n", "Backward compatibility (for software development):", " Prior to 7, Drupal did not commit to backward compatibility across major revisions.", "[117]", " This means that module and theme developers may have to rework their code to make it compatible. However, Drupal's policy is to not change how it uses data. This means that data from previous versions is still usable without alteration in the new release.", "[118]", "[119]", " Drupal documents any incompatibilities, allowing the user to make informed decisions about when and whether to upgrade. Upgrades from 8 to 9 and beyond will require substantially less effort.\" ", "[120]", "\n", "Performance/scalability:", " In 2008, ", "performance", " tests between Drupal 6.1 and ", "Joomla", " 1.5 demonstrated that Drupal's pages were delivered \"significantly faster\" than those of Joomla.", "[121]", " Despite this, arguments over speed persist.", "[122]", " Drupal is likely to be slower than a special-purpose application for a given task. For example, ", "WordPress", " typically outperforms Drupal as a single-user blogging tool. Drupal positions itself for broader applications requirements that are outside the scope of more narrowly focused applications.", "[123]", " Drupal offers ", "caching", " to store various page elements, the use of which resulted in a 508% improvement in one benchmark.", "[124]", " When using Drupal's default Page Cache mechanism, the cached pages are delivered only to anonymous users, so contributed modules must be installed to allow caching content for logged in users.", "[125]", "[126]", " Like performance, ", "scalability", " (the ability to add servers to handle growing numbers of visitors with consistent response) can become a concern on large, interactive sites. ", "MySQL", "'s query caching can help reduce the load on the database server caused by Drupal's high ", "query rate", ".", "[127]", "[128]", " Drupal caches database schema ", "metadata", " as well as elements such as blocks, forms and menus.", "[129]", " Drupal 7 increases performance in database queries and reduces PHP code usage.", "[130]", "\n", "Integrability with hosting structures:", " Because of Drupal's demanding query requirements, Drupal-based websites can quickly become very taxing to hosts whose databases reside on a machine separate from their ", "HTTP server", ". While the issue can normally be addressed by implementing aggressive ", "caching", " as described above, such methods may be unimplementable in cases where the host does not offer access to ", "PHP accelerators", " like ", "XCache", " or ", "APC", ". Drupal has plugins that facilitate similar caching without requiring special PHP extensions.", "[131]", "[132]", "\n", "The Drupal core search is ineffective at searching content:", "[", "citation needed", "]", " There are contributed modules that will greatly improve the search functionality on a Drupal website, but they are not easily accessible due to a high learning curve and the difficulty users have in general of finding the right module.", "[", "citation needed", "]", " One of the faceted search options is ", "Apache Solr", " Search Integration module, however, the module requires a dedicated server or ", "virtual private server", " (VPS) to operate because Solr must run on a ", "servlet", " container, e.g. ", "Tomcat", ", ", "Jetty", " or ", "Resin", ". These requirements make it harder for a Drupal website to have a functional search feature. In response some companies have created Apache Solr ", "SaaS", " products.", "\n", "Many published, yet incomplete or outdated modules", "[133]", " While Drupal's site boasts over 30,000 downloadable modules, searching the Drupal module directory finds many that are incomplete abandoned projects and do not work at all, only work for an outdated version due to lack of backward compatibility, or are unusable due to serious bugs. This is due to the open source nature of Drupal, and the fact that anyone is free to start a module and publish it on drupal.org. Modules with an active maintenance team are often highly polished, secure, and nearly bug free. Recent changes to the drupal.org website now let users search for modules, themes, and distributions, while filtering results by stability. ", "[134]", "\n", "\n", "\n", "Difficult to unit test:", "[135]", " Drupal 7 doesn't follow MVC framework and stores all of its configurations in database and as a result, unit testing the code without touching the database becomes extremely difficult. As a result, developers have resorted to using integration testing frameworks such as Red Test or behavior-driven development framework such as Behat and Codeception. Drupal 8 has taken a great stride in making it easier for developers to write unit-testable code.", "\n", "\n", "See also", "[", "edit", "]", "\n", "\n", "\n", "Free software portal", "\n", "\n", "\n", "\n", "Comparison of web frameworks", "\n", "List of applications with iCalendar support", "\n", "List of content management systems", "\n", "\n", "References", "[", "edit", "]", "\n", "\n", "\n", "^", " ", "Earliest tagged releases", "\n", "^ ", "a", " ", "b", " ", "c", " ", "d", " ", "Drupal 8 release history; drupal.org", "\n", "^ ", "a", " ", "b", " ", "\"Licensing FAQ\"", ". ", "drupal.org", ". Retrieved ", "2009-04-08", ".", "\u00a0", "\n", "^", " ", "A query on ", "Drupal", "'", "s official website on March 2009: ", "How does one pronounce \"Drupal\"?", " (accessed 19 June 2013)", "\n", "^", " ", "\"The Drupal Overview\"", ". ", "drupal.org", ". Retrieved ", "2009-04-08", ".", "\u00a0", "\n", "^", " ", "\"System Requirements\"", ". ", "drupal.org", ". Retrieved ", "2009-04-08", ".", "\u00a0", "\n", "^", " ", "W3Techs (2011-07-15). ", "\"Usage of content management systems for websites\"", ". Retrieved ", "2011-07-15", ".", "\u00a0", "\n", "^", " ", "BuiltWith (2011-03-28). ", "\"Drupal Usage Statistics\"", ". Retrieved ", "2011-03-28", ".", "\u00a0", "\n", "^", " ", "\"The State of Drupal 2010 speech\"", ". Archive.org. 2001-03-10", ". Retrieved ", "2011-08-31", ".", "\u00a0", "\n", "^", " ", "\"Knowledge management with Drupal\"", ".", "\u00a0", "\n", "^", " ", "\"Getting Involved | Drupal.org\"", ". ", "www.drupal.org", ". 2017-04-10", ". Retrieved ", "2017-04-11", ". ", "Drupal.org Activity", "\u00a0", "\n", "^", " ", "\"1 Million Users on Drupal.org!\"", ". ", "www.drupal.org", ". 2013-10-11.", "\u00a0", "\n", "^ ", "a", " ", "b", " ", "\"Drupal Homepage\"", ". ", "www.drupal.org", ". 2017-04-09", ". Retrieved ", "2017-04-09", ".", "\u00a0", "\n", "^ ", "a", " ", "b", " ", "\"Module project\"", ". ", "www.drupal.org", ". 2017-04-09", ". Retrieved ", "2017-04-09", ".", "\u00a0", "\n", "^ ", "a", " ", "b", " ", "\"Download & Extend: Themes\"", ". ", "www.drupal.org", ". 2017-04-09", ". Retrieved ", "2017-04-09", ".", "\u00a0", "\n", "^", " ", "\"Download & Extend: Distributions\"", ". ", "www.drupal.org", ". 2017-04-09", ". Retrieved ", "2017-04-09", ".", "\u00a0", "\n", "^", " ", "\"Drupal 7 as an enterprise web application framework\"", ". ", "drupal.org", ".", "\u00a0", "\n", "^", " ", "\"Comparison of web frameworks\"", ". ", "Wikipedia", ". 2017-04-07. ", "Comparison of features", "\u00a0", "\n", "^", " ", "O'Connor, William (2014-08-19). ", "\"The Drupal API turns a CMS into a true enterprise application - O'Reilly Radar\"", ". ", "O'Reilly Media", ". Retrieved ", "2017-04-11", ".", "\u00a0", "\n", "^", " ", "Diana, Dupuis (2013-05-15). ", "\"Drupal Is a Framework: Why Everyone Needs to Understand This\"", ". ", "Linux Journal", ".", "\u00a0", "\n", "^ ", "a", " ", "b", " ", "\"Features\"", ". ", "drupal.org", ". Retrieved ", "2009-04-08", ".", "\u00a0", "\n", "^", " ", "Drupal 7 release history; drupal.org", "\n", "^", " ", "Drupal 6 release history; drupal.org", "\n", "^", " ", "Drupal 5 release history; drupal.org", "\n", "^ ", "a", " ", "b", " ", "\"History\"", ". ", "drupal.org", ". Retrieved ", "2009-04-08", ".", "\u00a0", "\n", "^", " ", "\"Druppel: Dutch to English Translation\"", ". ", "Babylon Translation", ". Retrieved ", "2009-04-08", ".", "\u00a0", "\n", "^", " ", "Benjamin Melan\u00e7on; et al. (2011). ", "The Definitive Guide to Drupal 7", " (2nd ed.). Apress. p.\u00a0823. ", "ISBN", "\u00a0", "9781430231356", ". Retrieved ", "2012-05-27", ".", "\u00a0", "\n", "^", " ", "Critchley, Spencer (2006-05-03). ", "\"Digital Politics: An Interview With CivicSpace Founder Zack Rosen\"", ". ", "O'Reilly Media", ". Retrieved ", "2012-05-27", ".", "\u00a0", "\n", "^", " ", "Kreiss, Daniel (2012-03-05). ", "\"Dean, Romney, and Drupal: Values and Technological Adoption\"", ". ", "Culture Digitally", ". Retrieved ", "2012-05-27", ".", "\u00a0", "\n", "^", " ", "Samantha M. Shapiro, ", "\"The Dean Connection\"", ", ", "The New York Times", " December 7, 2003, accessed May 27, 2012.", "\n", "^", " ", "\"Marketplace\"", ". ", "drupal.org", ". Retrieved ", "2013-04-18", ".", "\u00a0", "\n", "^", " ", "Koenig, Josh. ", "\"Growth Graphs\"", ". ", "Groups.Drupal", ". Retrieved ", "2009-04-08", ".", "\u00a0", "\n", "^", " ", "Buytaert, Dries (2008). ", "\"Drupal Download Statistics\"", ". Retrieved ", "2009-04-08", ".", "\u00a0", "\n", "^", " ", "Buytaert, Dries (2007). ", "\"Drupal Download Statistics\"", ". Retrieved ", "2009-04-08", ".", "\u00a0", "\n", "^", " ", "\"Usage statistics for Drupal core\"", ".", "\u00a0", "\n", "^", " ", "\"Drupal Sites\"", ". ", "Dries Buytaert", ". Retrieved ", "2010-07-20", ".", "\u00a0", "\n", "^", " ", "\"List of Nonprofit, NPO, NGO Websites Using Drupal\"", ". ", "ENGINE Industries", ". Archived from ", "the original", " on 2009-12-24", ". Retrieved ", "2010-07-20", ".", "\u00a0", "\n", "^", " ", "\"OSS CMS Award Previous Winners\"", ". ", "Packt Publishing", ". Retrieved ", "2009-04-08", ".", "\u00a0", "\n", "^", " ", "\"Drupal is a Webware 100 winner for the third year in a row\"", ". Drupal.org", ". Retrieved ", "2011-08-31", ".", "\u00a0", "\n", "^", " ", "\"Cnet.com\"", ". News.cnet.com. 2009-05-19", ". Retrieved ", "2011-08-31", ".", "\u00a0", "\n", "^", " ", "\"Buytaert.net\"", ". Buytaert.net", ". Retrieved ", "2011-08-31", ".", "\u00a0", "\n", "^", " ", "\"Drupal 7 to be released on January 5 (with one ginormous party)\"", ". Buytaert.net", ". Retrieved ", "2011-08-31", ".", "\u00a0", "\n", "^", " ", "\"Xplain Hosting Drupal 7 Quickstart training seminar\"", ". ", "Scoop", ". 2010-12-16.", "\u00a0", "\n", "^", " ", "\"drupal 7.24\"", ". ", "drupal.org", ". Retrieved ", "2013-11-20", ".", "\u00a0", "\n", "^", " ", "\"Drupal 8 In Marking The Biggest Change In Its Content Management History\"", ". ", "eyerys.com", ". Retrieved ", "19 November", " 2015", ".", "\u00a0", "\n", "^", " ", "\"Drupal 8.0.0-rc1 announcement\"", ". ", "drupal.org", ".", "\u00a0", "\n", "^", " ", "\"Drupal 8.0.0-rc1 announcement\"", ". ", "drupal.org", ".", "\u00a0", "\n", "^", " ", "\"Drupal 8.0.0 released\"", ". ", "drupal.org", ". Retrieved ", "19 November", " 2015", ".", "\u00a0", "\n", "^", " ", "https://www.drupal.org/blog/drupal-8-1-0", "\n", "^ ", "a", " ", "b", " ", "\"Never hack core\"", ". ", "drupal.org", ".", "\u00a0", "\n", "^", " ", "\"Drupal 7.39 released\"", ". ", "drupal.org", ". Retrieved ", "2015-09-19", ".", "\u00a0", "\n", "^ ", "a", " ", "b", " ", "\"Handbook: Core Modules\"", ". ", "drupal.org", ". Archived from ", "the original", " on 2008-07-28", ". Retrieved ", "2009-04-08", ".", "\u00a0", "\n", "^", " ", "\"Drupal Multi-site installation recipes\"", ".", "\u00a0", "\n", "^", " ", "Buytaert, Dries. ", "\"Garland, the new default core theme\"", ". ", "drupal.org", ". Retrieved ", "2009-04-08", ".", "\u00a0", "\n", "^", " ", "\"Color: Allows the user to change the color scheme of certain themes\"", ". ", "drupal.org", ". Retrieved ", "2009-04-08", ".", "\u00a0", "\n", "^", " ", "\"Drupal core translation downloads\"", ". ", "drupal.org", ". Retrieved ", "2017-01-30", ".", "\u00a0", "\n", "^ ", "a", " ", "b", " ", "\"Drupal 6.0 released\"", ". ", "drupal.org", ". Retrieved ", "2009-04-08", ".", "\u00a0", "\n", "^", " ", "\"SA-CORE-2014-005 - Drupal core - SQL injection\"", ". ", "Https:", ". Retrieved ", "December 3,", " 2014", ".", "\u00a0", "\n", "^", " ", "\"Drupal Core - Highly Critical - Public Service announcement - PSA-2014-003\"", ". ", "Https:", ". Retrieved ", "December 3,", " 2014", ".", "\u00a0", "\n", "^", " ", "\"Install Drupal for Windows\"", ". ", "microsoft.com", ". Retrieved ", "2011-02-14", ".", "\u00a0", "\n", "^", " ", "\"Drupal on Windows Group\"", ". ", "drupal.org", ". Retrieved ", "2011-02-14", ".", "\u00a0", "\n", "^", " ", "Killesreiter, Gerhard (2013-02-25). ", "\"Accessibility statement\"", ". ", "drupal.org", ". Retrieved ", "2013-04-16", ".", "\u00a0", "\n", "^", " ", "Scholten, Roy (2012-12-10). ", "\"Drupal core gates\"", ". ", "drupal.org", ". Retrieved ", "2013-04-16", ".", "\u00a0", "\n", "^", " ", "\"API Reference\"", ". ", "drupal.org", ". Retrieved ", "2009-04-08", ".", "\u00a0", "\n", "^", " ", "\"File and directory management\"", ". ", "drupal.org", ".", "\u00a0", "\n", "^", " ", "14 hours 40 min ago. (2009-05-20). ", "\"Integrating Drupal with External Systems\"", ". Appnovation.com. Archived from ", "the original", " on 2011-08-24", ". Retrieved ", "2011-08-31", ".", "\u00a0", "\n", "^", " ", "\"Drupal Camunda BPM Integration\"", ". ", "Srijan Technologies", ". Srijan Technologies.", "\u00a0", "\n", "^", " ", "\"Project usage overview\"", ". ", "Drupal.org", ". Retrieved ", "2011-08-18", ".", "\u00a0", "\n", "^", " ", "\"DRUPAL 5 TO DRUPAL 7\"", ".", "\u00a0", "\n", "^", " ", "\"Field API\"", ". 2009", ". Retrieved ", "2009-05-08", ".", "\u00a0", "\n", "^", " ", "\"Views in Drupal Core initiative: Status report and roadmap\"", ". Retrieved ", "2014-11-04", ".", "\u00a0", "\n", "^", " ", "\"PHPTemplate theme engine\"", ". ", "drupal.org", ". Archived from ", "the original", " on 2009-03-08", ". Retrieved ", "2009-04-08", ".", "\u00a0", "\n", "^", " ", "\"XTemplate theme engine\"", ". ", "drupal.org", ". Archived from ", "the original", " on 2009-03-16", ". Retrieved ", "2009-04-08", ".", "\u00a0", "\n", "^", " ", "\"How does Drupal compare to Mambo? discussion thread\"", ". ", "drupal.org", ". 2005-01-17", ". Retrieved ", "2009-04-08", ".", "\u00a0", "\n", "^", " ", "\"Drupal themes\"", ". Drupal.org", ". Retrieved ", "2011-08-31", ".", "\u00a0", "\n", "^", " ", "\"Adding your theme to Drupal.org\"", ". Drupal.org.", "\u00a0", "\n", "^", " ", "\"10 Best Drupal Themes\"", ". MAAN Softwares", ". Retrieved ", "2017-11-08", ".", "\u00a0", "\n", "^", " ", "\"Top Drupal Distributions\"", ". AGLOBALWAY Consulting Services Inc. Archived from ", "the original", " on 2014-04-13.", "\u00a0", "\n", "^", " ", "\"MVC vs. PAC\"", ".", "\u00a0", "\n", "^", " ", "Drupal - CMS Grew Overnight", " By MAAN Softwares, Retrieved, June 8th, 2017", "\n", "^", " ", "\"drupal.org discussion on DrupalCon event management\"", ". Groups.drupal.org", ". Retrieved ", "2011-08-31", ".", "\u00a0", "\n", "^", " ", "\"Drupal Camps and Cons\"", ". Retrieved ", "25 January", " 2013", ".", "\u00a0", "\n", "^", " ", "\"1 Year of Drupal Events Visualized\"", ". Retrieved ", "13 July", " 2013", ".", "\u00a0", "\n", "^", " ", "\"forums\"", ". Drupal.org", ". Retrieved ", "2011-08-31", ".", "\u00a0", "\n", "^", " ", "\"mailing lists\"", ". Drupal.org", ". Retrieved ", "2011-08-31", ".", "\u00a0", "\n", "^", " ", "\"Drupal Groups\"", ". Groups.drupal.org", ". Retrieved ", "2011-08-31", ".", "\u00a0", "\n", "^", " ", "\"Drupal IRC channels on FreeNode\"", ". Drupal.org", ". Retrieved ", "2011-08-31", ".", "\u00a0", "\n", "^", " ", "\"Language specific communities\"", ". Drupal.org. 2011-08-26", ". Retrieved ", "2011-08-31", ".", "\u00a0", "\n", "^", " ", "Keller, Katherine (7 April 2017). ", "\"CMS Battle for Beginners: WordPress vs Joomla vs Drupal (Infographic)\"", ". ", "Entrepreneur", ". Retrieved ", "17 May", " 2017", ".", "\u00a0", "\n", "^", " ", "Drupal. ", "\"Security announcement and release process\"", ".", "\u00a0", "\n", "^", " ", "Drupal. ", "\"How to report a security issue\"", ".", "\u00a0", "\n", "^", " ", "\"Update manager (and Update status)\"", ". ", "drupal.org", ". Retrieved ", "2011-07-01", ".", "\u00a0", "\n", "^", " ", "\"Security advisories\"", ". ", "drupal.org", ". Retrieved ", "2009-04-28", ".", "\u00a0", "\n", "^", " ", "\"Drupal security team\"", ". Drupal.org", ". Retrieved ", "2011-08-31", ".", "\u00a0", "\n", "^", " ", "\"Drupal Security RSS feed\"", ". Drupal.org", ". Retrieved ", "2011-08-31", ".", "\u00a0", "\n", "^", " ", "\"Drupalgeddon megaflaw raises questions over CMS bods' crisis mgmt\"", ".", "\u00a0", "\n", "^", " ", "\"SA-CORE-2014-005 - Drupal core - SQL injection\"", ". ", "Security advisories", ". Drupal security team.", "\u00a0", "\n", "^", " ", "\"Drupalgeddon strikes back: outdated Drupal allegedly linked to \"Panama Papers", "\"", "\"", ". ", "Blog", ". Drop Guard.", "\u00a0", "\n", "^", " ", "\"Drupal Core\u2014Highly Critical\u2014Public Service Announcement\u2014PSA-2014-003\"", ". ", "Security advisories", ". Drupal security team. October 29, 2014 \u2013 via Drupal.org. ", "\n", "You should proceed under the assumption that every Drupal 7 website was compromised unless updated or patched before Oct 15th, 11pm UTC, that is 7 hours after the announcement.", "\n", "Simply updating to Drupal 7.32 will not remove backdoors", "....updating to version 7.32 or applying the patch fixes the vulnerability but does not fix an already compromised website. If you find that your site is already patched but you didn\u2019t do it, that can be a symptom that the site was compromised - some attacks have applied the patch as a way to guarantee they are the only attacker in control of the site.", "\n", "\u00a0", "\n", "^", " ", "Robinson, Brian (2014-11-07). ", "\"Attacks on open source call for better software design -\"", ". ", "GCN", ". Retrieved ", "2016-07-29", ".", "\u00a0", "\n", "^", " ", "Why running the White House Web site on Drupal is a political disaster waiting to happen.", "\n", "^", " ", "Message Error, Why running the White House Web site on Drupal is a political disaster waiting to happen", " Chris Wilson. ", "Slate (magazine)", " October 27, 2009", "\n", "^", " ", "Scollan, Becca; Abby Byrnes; Malia Nagle; Paul Coyle; Cynthia York; Maleka Ingram (2008-05-01). ", "\"Drupal Usability Research Report\"", " ", "(PDF)", ". Retrieved ", "2009-04-08", ".", "\u00a0", "\n", "^", " ", "Lal, Kieran (2008-06-26). ", "\"Drupal usability tests from the University of Baltimore with community solutions\"", ". ", "drupal.org", ". Retrieved ", "2009-04-08", ".", "\u00a0", "\n", "^", " ", "Buytaert, Dries (2008-07-03). ", "\"Usability, usability, and usability\"", ". Retrieved ", "2009-04-08", ".", "\u00a0", "\n", "^", " ", "Buytaert, Dries (2008-03-10). ", "\"First results from usability testing\"", ". Retrieved ", "2009-04-08", ".", "\u00a0", "\n", "^", " ", "\"Report from Formal Drupal\"", " ", "(PDF)", ". 2008-03-03", ". Retrieved ", "2009-04-08", ".", "\u00a0", "\n", "^", " ", "Buytaert, Dries (2009-02-04). ", "\"Mark Boulton to help with Drupal 7\"", ". Archived from ", "the original", " on 2010-04-13.", "\u00a0", "\n", "^", " ", "University of Minnesota Office of Information Technology (2011-05-23). ", "\"Usability test at University of Minnesota, may 2011\"", ". ", "drupal.org", ".", "\u00a0", "\n", "^", " ", "University of Minnesota Office of Information Technology (2011-06-01). ", "\"Report from the University of Minnesota Drupal Usability Testing\"", ". ", "drupal.org", ".", "\u00a0", "\n", "^", " ", "\"Drupal Gardens\"", ".", "\u00a0", "\n", "^", " ", "\"Open Enterprise\"", ".", "\u00a0", "\n", "^", " ", "\"Mitkom\"", ".", "\u00a0", "\n", "^", " ", "Howard, Brian C. (2007-01-25). ", "\"Harnessing Drupal for Citizen Journalism\"", ". ", "NewAssignment.Net", ". Retrieved ", "2009-04-08", ".", "\u00a0", "\n", "^", " ", "\"Drupal Review\"", ". Archived from ", "the original", " on 2010-02-05.", "\u00a0", "\n", "^", " ", "James, Heather (2010-11-09). ", "\"203 people tell What I wish I knew when I started Drupal\"", ". ", "Acquia.com", ". Retrieved ", "2010-11-11", ".", "\u00a0", "\n", "^", " ", "Buytaert, Dries (2006-05-26). ", "\"Backward Compatibility\"", ". Retrieved ", "2009-04-08", ".", "\u00a0", "\n", "^", " ", "Buytaert, Dries (2006-07-27). ", "\"The pain before the pay-off\"", ". Retrieved ", "2009-04-08", ".", "\u00a0", "\n", "^", " ", "\"Drupal's Upgrade Instructions (end-user)\"", ". Drupal.org", ". Retrieved ", "2011-08-31", ".", "\u00a0", "\n", "^", " ", "http://buytaert.net/making-drupal-upgrades-easy-forever", "\n", "^", " ", "\"Joomla 1.5 & Drupal 6.1 Performance Comparison\"", ". Archived from ", "the original", " on 2012-07-22.", "\u00a0", "\n", "^", " ", "\"Is Drupal Slow & Bloated?\"", ". Archived from ", "the original", " on 2012-09-09.", "\u00a0", "\n", "^", " ", "\"Is Drupal the right tool for the job?\"", ".", "\u00a0", "\n", "^", " ", "\"Drupal vs Joomla: performance | Dries Buytaert\"", ". Buytaert.net", ". Retrieved ", "2012-05-05", ".", "\u00a0", "\n", "^", " ", "\"Authenticated User Page Caching (Authcache)\"", ". ", "drupal.org", ". Retrieved ", "2009-09-23", ".", "\u00a0", "\n", "^", " ", "Buytaert, Dries (2006-08-11). ", "\"Drupal vs Joomla! performance\"", ". Retrieved ", "2009-05-20", ".", "\u00a0", "\n", "^", " ", "\"Speed up a Drupal web site by enabling MySQL query caching\"", ". ", "nadeausoftware.com", ". 2007-03-07", ". Retrieved ", "2009-06-21", ".", "\u00a0", "\n", "^", " ", "\"Book on Drupal Performance & Scalability\"", ". Books.tag1consulting.com. 2008-07-16. Archived from ", "the original", " on 2011-09-06", ". Retrieved ", "2011-08-31", ".", "\u00a0", "\n", "^", " ", "\"Caching in Drupal 6\"", ". ", "drupal.org", ". 2008-07-28", ". Retrieved ", "2009-06-21", ".", "\u00a0", "\n", "^", " ", "\"Drupal 6 vs Drupal 7 performance and comments vs nodes\"", ". ", "CivicActions.com", ". 2009-05-19", ". Retrieved ", "2009-06-21", ".", "\u00a0", "\n", "^", " ", "\"Boost\"", ". drupal.org. 2006-10-15", ". Retrieved ", "2012-05-05", ".", "\u00a0", "\n", "^", " ", "\"Memcache API and Integration\"", ". drupal.org", ". Retrieved ", "2012-05-05", ".", "\u00a0", "\n", "^", " ", "\"Dealing with unsupported (abandoned) projects\"", ". ", "While experienced Drupal users know to check the queue and the git commits to determine the health of a project, having broken and unmaintained/unsupported projects available can be confusing and off-putting for new users.", "\u00a0", "\n", "^", " ", "https://www.drupal.org/project/project_module", "\n", "^", " ", "\"Drupal Testing Methodologies Are Broken - Here's Why | Red Crackle\"", ". ", "redcrackle.com", ". Retrieved ", "2015-12-05", ".", "\u00a0", "\n", "\n", "\n", "Further reading", "[", "edit", "]", "\n", "\n", "Abbott/Jones (2016), Learning Drupal 8, England, Packt Publishing. ", "ISBN", "\u00a0", "978-1-78216-875-1", "\n", "Pol, Kristen (2012). ", "Drupal 7 Multilingual Sites", ". Birmingham, England: Packt Publishing. ", "ISBN", "\u00a0", "978-1-84951-818-5", ".", "\u00a0", "\n", "Mercer, David (2010). ", "Drupal 7", ". Birmingham, England: Packt Publishing. ", "ISBN", "\u00a0", "1-84951-286-8", ".", "\u00a0", "\n", "Travis, Brian (2011). ", "Pro Drupal 7 for Windows Developers", ". Berkeley: APress. ", "ISBN", "\u00a0", "978-1-4302-3153-0", ".", "\u00a0", "\n", "Butcher, Matt; Larry Garfield; John Wilkins; Matt Farina; Ken Rickard; Greg Dunlap (2010). ", "Drupal 7 Module Development", ". Birmingham, England: Packt Publishing. ", "ISBN", "\u00a0", "978-1-84951-116-2", ".", "\u00a0", "\n", "Bhavin, Patel (Aug 2010). ", "Drupal 6 Panel Cookbook", ". Canada: Packt Publishing. ", "ISBN", "\u00a0", "1-84951-118-7", ".", "\u00a0", "\n", "Beighley, Lynn (2009). ", "Drupal for Dummies", ". New York: For Dummies. ", "ISBN", "\u00a0", "978-0-470-55611-5", ".", "\u00a0", "\n", "Herremans, D. (2009). ", "Drupal 6: Ultimate Community Site Guide", ". Switzerland. ", "ISBN", "\u00a0", "978-2-8399-0490-2", ".", "\u00a0", "\n", "Peacock, Michael (2008). ", "Selling Online with Drupal e-Commerce", ". Birmingham, England: Packt Publishing. ", "ISBN", "\u00a0", "978-1-84719-406-0", ".", "\u00a0", "\n", "VanDyk, John K. (2008). ", "Pro Drupal Development, Second Edition", ". New York: Springer Verlag/Apress. ", "ISBN", "\u00a0", "1-4302-0989-5", ".", "\u00a0", "\n", "Kafer, Konstantin; Emma Hogbin (Apr 2009). ", "Front End Drupal: Designing, Theming, Scripting", ". Jersey, USA: Prentice Hall. ", "ISBN", "\u00a0", "0-13-713669-2", ".", "\u00a0", "\n", "\n", "External links", "[", "edit", "]", "\n", "\n", "\n", "\n", "Wikimedia Commons has media related to ", "Drupal", ".", "\n", "\n", "\n", "\n", "Official website", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "v", "\n", "t", "\n", "e", "\n", "\n", "\n", "Web frameworks", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "Comparison", "\n", "\n", "\n", "\n", "\n", "\n", "C++", "\n", "\n", "\n", "\n", "CppCMS", "\n", "Wt", "\n", "\n", "\n", "\n", "\n", "\n", "CLI", "\n", "\n", "\n", "\n", "ASP.NET", "\n", "\n", "Core", "\n", "AJAX", "\n", "Dynamic Data", "\n", "MVC", "\n", "Razor", "\n", "Web Forms", "\n", "\n", "\n", "DNN", "\n", "BFC", "\n", "MonoRail", "\n", "OpenRasta", "\n", "Umbraco", "\n", "\n", "\n", "\n", "\n", "\n", "ColdFusion", "\n", "\n", "\n", "\n", "CFWheels", "\n", "ColdBox Platform", "\n", "ColdSpring", "\n", "Fusebox", "\n", "Mach-II", "\n", "Model-Glue", "\n", "\n", "\n", "\n", "\n", "\n", "Common Lisp", "\n", "\n", "\n", "\n", "Caveman2", "\n", "CL-HTTP", "\n", "UnCommon Web", "\n", "Weblocks", "\n", "\n", "\n", "\n", "\n", "\n", "Haskell", "\n", "\n", "\n", "\n", "Happstack", "\n", "Yesod", "\n", "Snap", "\n", "\n", "\n", "\n", "\n", "\n", "Java", "\n", "\n", "\n", "\n", "AppFuse", "\n", "Flexive", "\n", "Grails", "\n", "GWT", "\n", "ICEfaces", "\n", "ItsNat", "\n", "JavaServer Faces", "\n", "JHipster", "\n", "Jspx", "\n", "JWt", "\n", "OpenXava", "\n", "Play", "\n", "Reasonable Server Faces", "\n", "Remote Application Platform", "\n", "RIFE", "\n", "Seam", "\n", "Sling", "\n", "Spring", "\n", "Stripes", "\n", "Struts", "\n", "Tapestry", "\n", "Vaadin", "\n", "Vert.x", "\n", "WebWork", "\n", "Wicket", "\n", "WaveMaker", "\n", "ZK", "\n", "\n", "\n", "\n", "\n", "\n", "JavaScript", "\n", "\n", "\n", "\n", "Ample SDK", "\n", "Angular", "/", "AngularJS", "\n", "Backbone.js", "\n", "Chaplin.js", "\n", "Closure", "\n", "Dojo Toolkit", "\n", "Ember.js", "\n", "Ext JS", "\n", "jQuery", "\n", "Meteor", "\n", "MooTools", "\n", "Node.js", "\n", "OpenUI5", "\n", "Prototype", "\n", "React", "\n", "Rico", "\n", "script.aculo.us", "\n", "Sencha Touch", "\n", "SproutCore", "\n", "Wakanda", "\n", "\n", "\n", "\n", "\n", "\n", "Perl", "\n", "\n", "\n", "\n", "Catalyst", "\n", "Dancer", "\n", "Mason", "\n", "Maypole", "\n", "Mojolicious", "\n", "WebGUI", "\n", "\n", "\n", "\n", "\n", "\n", "PHP", "\n", "\n", "\n", "\n", "CakePHP", "\n", "CodeIgniter", "\n", "Drupal", "\n", "Fat-Free", "\n", "FuelPHP", "\n", "Flow", "\n", "Gyroscope", "\n", "Horde", "\n", "Kohana", "\n", "Laravel", "\n", "Lithium", "\n", "Midgard", "\n", "MODX", "\n", "Nette", "\n", "Phalcon", "\n", "Pop PHP", "\n", "PRADO", "\n", "ProcessWire", "\n", "Qcodo", "\n", "Silex", "\n", "SilverStripe", "\n", "Symfony", "\n", "TYPO3", "\n", "Xaraya", "\n", "XOOPS", "\n", "Yii", "\n", "Zend Framework", "\n", "\n", "\n", "\n", "\n", "\n", "Python", "\n", "\n", "\n", "\n", "BlueBream", "\n", "CherryPy", "\n", "Django", "\n", "Flask", "\n", "Grok", "\n", "Nevow", "\n", "Pyjs", "\n", "Pylons", "\n", "Pyramid", "\n", "Quixote", "\n", "TACTIC", "\n", "Tornado", "\n", "TurboGears", "\n", "web2py", "\n", "Webware", "\n", "Zope 2", "\n", "\n", "\n", "\n", "\n", "\n", "Ruby", "\n", "\n", "\n", "\n", "Camping", "\n", "Merb", "\n", "Padrino", "\n", "Ruby on Rails", "\n", "Sinatra", "\n", "\n", "\n", "\n", "\n", "\n", "Scala", "\n", "\n", "\n", "\n", "Lift", "\n", "Play", "\n", "Scalatra", "\n", "\n", "\n", "\n", "\n", "\n", "Smalltalk", "\n", "\n", "\n", "\n", "AIDA/Web", "\n", "Seaside", "\n", "\n", "\n", "\n", "\n", "\n", "Other languages", "\n", "\n", "\n", "\n", "Vibe.d", " (", "D", ")", "\n", "Application Express", " (", "PL/SQL", ")", "\n", "Grails", " (", "Groovy", ")", "\n", "Kepler", " (", "Lua", ")", "\n", "Rocket", " (", "Rust", ")", "\n", "OpenACS", " (", "Tcl", ")", "\n", "Phoenix", " (", "Elixir", ")", "\n", "SproutCore", " (", "JavaScript", "-", "Ruby", ")", "\n", "Yaws", " (", "Erlang", ")", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "v", "\n", "t", "\n", "e", "\n", "\n", "\n", "Software in the Public Interest", "\n", "\n", "\n", "\n", "People", "\n", "\n", "\n", "\n", "Bdale Garbee", " (President)", "\n", "\n", "\n", "\n", "\n", "\n", "Projects", "\n", "\n", "\n", "\n", "0 A.D.", "\n", "Arch Linux", "\n", "Debian", "\n", "Drizzle", "\n", "Drupal", "\n", "FFmpeg", "\n", "Fluxbox", "\n", "freedesktop.org", "\n", "FreedomBox", "\n", "Gallery Project", "\n", "GNU TeXmacs", "\n", "GNUstep", "\n", "Jenkins", "\n", "LibreOffice", "\n", "MinGW", "\n", "Open and Free Technology Community", "\n", "Open Bioinformatics Foundation", "\n", "Open64", "\n", "OpenEmbedded", "\n", "OpenVAS", "\n", "OpenWrt", "\n", "PostgreSQL", "\n", "Privoxy", "\n", "SproutCore", "\n", "X.Org Foundation", "\n", "YafaRay", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "Authority control", "\n", "\n", "\n", "\n", "WorldCat Identities", "\n", "VIAF", ": ", "180810498", "\n", "LCCN", ": ", "n2009053036", "\n", "GND", ": ", "7522644-3", "\n", "\n", "\n", "\n", "\n", "\n", "\n\n\n", "\n", "\n", "\n", "\n"], "lastUpdated": " 15 January 2018, at 11:32."}, +{"title": "OpenBSD", "text": ["\n", "OpenBSD", "\n", "\n", "\n", "\"Free, Functional, and Secure\"", "\n", "\n", "\n", "\n", "\n", "OpenBSD 5.9 desktop", "\n", "\n", "\n", "\n", "Developer", "\n", "The OpenBSD Project", "\n", "\n", "\n", "Written in", "\n", "Primarily ", "C", ", ", "assembly", ", ", "Perl", ", ", "Makefile", ", and ", "KornShell", "\n", "\n", "\n", "OS family", "\n", "Unix-like", " (", "BSD", ")", "\n", "\n", "\n", "Working state", "\n", "Current", "\n", "\n", "\n", "Source model", "\n", "Open source", "\n", "\n", "\n", "Initial release", "\n", "1\u00a0October 1996", "; 21 years ago", "\u00a0(", "1996-10-01", ")", "\n", "\n", "\n", "Latest release", "\n", "6.2 ", "(9\u00a0October 2017", "; 3 months ago", "\u00a0(", "2017-10-09", ")", ")", " ", "[\u00b1]", "\n", "\n", "\n", "Package manager", "\n", "OpenBSD package tools", "[1]", "\n", "\n", "\n", "Platforms", "\n", "Alpha", ", ", "x86-64", ", ", "ARMv7", ", ", "PA-RISC", ", ", "IA-32", ", ", "LANDISK", ", ", "Omron LUNA-88K", ", ", "MIPS64", ", ", "PowerPC", ", and ", "SPARC 64", "[2]", "\n", "\n", "\n", "Kernel", " type", "\n", "Monolithic", "\n", "\n", "\n", "Userland", "\n", "BSD", "\n", "\n", "\n", "Default ", "user interface", "\n", "Modified ", "pdksh", ", ", "FVWM", " ", "X11", "\n", "\n", "\n", "License", "\n", "BSD", ", ", "ISC", ", ATU,", "[3]", " and other custom licenses", "[4]", "\n", "\n", "\n", "Official website", "\n", "openbsd", ".org", "\n", "\n", "\n", "OpenBSD", " is a ", "free and open-source", " ", "Unix-like", " computer ", "operating system", " descended from ", "Berkeley Software Distribution", " (BSD), a ", "Research Unix", " derivative developed at the ", "University of California, Berkeley", ". In late 1995, ", "Theo de Raadt", " ", "forked", " it from ", "NetBSD", ". Besides the operating system as a whole, the project maintains portable versions of many subsystems, most notably ", "OpenSSH", ", which are available as packages in other operating systems.", "\n", "The project is known for its developers' insistence on ", "open-source", " code, good documentation, code correctness, and security. It has strict policies on ", "licensing", ", preferring the ", "ISC license", " and other variants of the ", "Simplified BSD License", ". Many of its ", "security features", " are optional or absent in other operating systems. Its developers frequently ", "audit", " the ", "source tree", " for software bugs and security holes.", "\n", "De Raadt coordinates the project from his home in ", "Calgary", ", Alberta, Canada. Its logo and mascot is a ", "pufferfish", " named Puffy.", "\n", "\n", "\n", "\n", "Contents", "\n", "\n", "\n", "1", " ", "History and popularity", "\n", "2", " ", "Uses", "\n", "\n", "2.1", " ", "Security", "\n", "2.2", " ", "Desktop", "\n", "2.3", " ", "Server", "\n", "\n", "\n", "3", " ", "Component projects", "\n", "4", " ", "Third-party components in the base system", "\n", "5", " ", "Development and release process", "\n", "6", " ", "Open-source and open documentation", "\n", "7", " ", "Licensing", "\n", "8", " ", "Funding", "\n", "9", " ", "Security and code auditing", "\n", "\n", "9.1", " ", "Alleged FBI backdoor investigated", "\n", "9.2", " ", "Slogan", "\n", "\n", "\n", "10", " ", "Distribution and marketing", "\n", "11", " ", "See also", "\n", "12", " ", "Notes", "\n", "13", " ", "References", "\n", "14", " ", "External links", "\n", "\n", "\n", "\n", "History and popularity", "[", "edit", "]", "\n", "See also: ", "Timeline of OpenBSD", "\n", "\n", "\n", "\n", "\n", "Bar chart", " showing the proportion of users of each ", "BSD", " variant from a 2005 BSD usage survey.", "[5]", "[n 1]", "\n", "\n", "\n", "In December 1994, NetBSD co-founder ", "Theo de Raadt", " was asked to resign from his position as a senior developer and member of the NetBSD core team.", "[6]", " The reason for this is not wholly clear, although there are claims that it was due to personality clashes within the NetBSD project and on its mailing lists.", "[6]", "\n", "In October 1995, de Raadt founded OpenBSD, a new project forked from NetBSD 1.0. The initial release, OpenBSD 1.2, was made in July 1996, followed by OpenBSD 2.0 in October of the same year.", "[7]", " Since then, the project has followed a schedule of a release every six months, each of which is supported for one year.", "\n", "On 25 July 2007, OpenBSD developer Bob Beck announced the formation of the ", "OpenBSD Foundation", ", a Canadian non-profit organization formed to \"act as a single point of contact for persons and organizations requiring a legal entity to deal with when they wish to support OpenBSD.\"", "[8]", "\n", "Just how widely OpenBSD is used is hard to determine as its developers do not publish or collect usage statistics. In September 2005, the BSD Certification Group performed a usage survey which revealed that 32.8% of BSD users (1420 of 4330 respondents) were using OpenBSD,", "[5]", " placing it second out of the four major BSD variants, behind ", "FreeBSD", " with 77% and ahead of NetBSD with 16.3%.", "[n 1]", "\n", "Uses", "[", "edit", "]", "\n", "\n", "\n", "\n", "\nOpenBSD startup in console mode", "\n", "\n", "\n", "\n", "\n", "\n", "\nOpenBSD console login and welcome message", "\n", "\n", "\n", "\n", "\n", "\n", "\nInteraction with ", "pdksh", " in OpenBSD", "\n", "\n", "\n", "Security", "[", "edit", "]", "\n", "OpenBSD's security enhancements", ", built-in cryptography, and the pf ", "packet filter", " suit it for use in the security industry, such as on firewalls,", "[9]", " ", "intrusion-detection systems", ", and ", "VPN", " ", "gateways", ".", "\n", "Proprietary", " systems from several manufacturers are based on OpenBSD, including devices from ", "Armorlogic", " (Profense web application firewall), Calyptix Security,", "[10]", " GeNUA,", "[11]", " RTMX,", "[12]", " and .vantronix.", "[13]", " Later versions of ", "Microsoft", "'s ", "Services for UNIX", ", an extension to the ", "Windows", " operating system providing ", "Unix", "-like functionality, use large amounts of OpenBSD code.", "[14]", "\n", "Desktop", "[", "edit", "]", "\n", "OpenBSD ships with the ", "X Window System", "[15]", " and is suitable for use on the desktop.", "[16]", "[17]", ":", "xl", " There are a huge number of packages totalling 7814", "[18]", " in number. Packages are available for popular applications, including desktop environments such as ", "GNOME", ", ", "KDE", ", and ", "Xfce", ", and web browsers such as ", "Firefox", " and ", "Chromium", ".", "[19]", " The project also includes three window managers in the main distribution: ", "cwm", ", ", "FVWM", ", and ", "twm", ".", "[20]", "\n", "Server", "[", "edit", "]", "\n", "OpenBSD features a full server suite and can be easily configured as a ", "mail server", ", ", "web server", ", ", "FTP server", ", ", "DNS server", ", ", "router", ", ", "firewall", ", ", "NFS", " ", "file server", ", or any combination of these.", "\n", "Component projects", "[", "edit", "]", "\n", "Despite the small team size and relatively low usage of OpenBSD, the project maintains portable versions of many parts of the base system, including:", "\n", "\n", "LibreSSL", ", a free implementation of the ", "Secure Sockets Layer", " (SSL) and ", "Transport Layer Security", " (TLS) protocols, forked from the ", "OpenSSL", " 1.0.1g branch", "\n", "OpenBGPD", ", a free implementation of the ", "Border Gateway Protocol", " 4 (BGP-4)", "\n", "OpenOSPFD", ", a free implementation of the ", "Open Shortest Path First", " (OSPF) routing protocol", "\n", "OpenNTPD", ", a simple alternative to ntp.org's ", "Network Time Protocol", " (NTP) daemon", "\n", "OpenSMTPD", ", a free ", "Simple Mail Transfer Protocol", " (SMTP) daemon with ", "IPv4", "/", "IPv6", ", ", "PAM", ", ", "Maildir", " and virtual domains support", "\n", "httpd, an ", "HTTP", " server first included in the 5.6 release", "\n", "OpenSSH", ", a free implementation of the ", "Secure Shell", " (SSH) protocol", "\n", "OpenIKED", ", a free implementation of the ", "Internet Key Exchange", " (IKEv2) protocol", "\n", "Common Address Redundancy Protocol", " (CARP), a free alternative to ", "Cisco", "'s patented ", "HSRP", "/", "VRRP", " server redundancy protocols", "\n", "PF", ", an ", "IPv4", "/", "IPv6", " stateful firewall with ", "NAT", ", ", "PAT", ", ", "QoS", " and traffic normalization support", "\n", "pfsync", ", a firewall states synchronization protocol for ", "PF firewall", " with ", "High Availability", " support using ", "CARP", "\n", "spamd", ", a spam filter with ", "greylisting", " support designed to inter-operate with the ", "PF firewall", "\n", "sndio", ", a compact audio and MIDI framework", "\n", "Xenocara", ", a customized ", "X.Org", " build infrastructure", "\n", "cwm", ", a stacking window manager", "\n", "tmux", " virtual console multiplexer", "\n", "\n", "Some subsystems have been integrated into the base system of several other BSD projects,", "[21]", "[22]", "[23]", " while many are available as packages for use in other Unix-like systems.", "[24]", "[25]", "[26]", "\n", "Third-party components in the base system", "[", "edit", "]", "\n", "OpenBSD includes a number of ", "third-party software components", ", many with OpenBSD-specific patches;", "[19]", " examples include the ", "X.Org Server", ", ", "GNU Compiler Collection", "[27]", " (which acts as the default ", "compiler", "),", "[n 2]", " ", "Perl", ", ", "NSD", ", ", "Unbound", ", ", "Ncurses", ", ", "GNU Binutils", ", ", "GNU Debugger", " and ", "Awk", ".", "\n", "OpenBSD used to include a fork of ", "Apache 1.3", ", which was later replaced by ", "Nginx", ". In the 5.6 release, Nginx was replaced with ", "httpd", ", an ", "HTTP server", " with ", "FastCGI", " and ", "Transport Layer Security", " support.", "[28]", " As of May 2016", "[update]", ", Apache and Nginx are still available as ports.", "[29]", "[30]", "\n", "Development and release process", "[", "edit", "]", "\n", "\n", "\n", "\n", "\nOpenBSD developers at c2k1 ", "hackathon", " at ", "MIT", "\n", "\n", "\n", "Development is continuous, and team management is open and tiered. Anyone with appropriate skills may contribute, with commit rights being awarded on merit and de Raadt acting as coordinator.", "[17]", ":", "xxxv", " Two official releases are made per year, with the version number incremented by 0.1,", "[31]", " and these are each supported for twelve months (two release cycles).", "[32]", " Snapshot releases are also available at frequent intervals.", "\n", "Maintenance patches for supported releases may be applied manually or by updating the system against the patch branch of the ", "CVS", " repository for that release.", "[33]", " Alternatively, a system administrator may opt to upgrade using a snapshot release and then regularly update the system against the ", "-current", " branch of the CVS repository, in order to gain pre-release access to recently added features.", "\n", "The standard OpenBSD kernel, as maintained by the project, is strongly recommended for end users; this is as opposed to kernels customized by the user.", "[34]", "\n", "Packages outside the base system are maintained by CVS through a ", "ports tree", " and are the responsibility of the individual maintainers, known as porters. As well as keeping the current branch up to date, porters are expected to apply appropriate bug-fixes and maintenance fixes to branches of their package for OpenBSD's supported releases. Ports are generally not subject to the same continuous auditing as the base system due to lack of manpower.", "\n", "Binary packages are built centrally from the ports tree for each architecture. This process is applied for the current version, for each supported release, and for each snapshot. Administrators are recommended to use the package mechanism rather than build the package from the ports tree, unless they need to perform their own source changes.", "\n", "OpenBSD's developers regularly meet at special events called ", "hackathons", ",", "[35]", " where they \"sit down and code\", emphasizing productivity.", "[36]", "\n", "Every new release includes a song.", "[37]", "\n", "The ", "OpenBSD Foundation", " was accepted as a mentoring organization for the 2014 Google Summer of Code.", "[38]", "[39]", "\n", "Open-source and open documentation", "[", "edit", "]", "\n", "The OpenBSD Project is noted for its high-quality user documentation, considered top among the BSD family operating systems, all of which have excellent documentation.", "[40]", "[41]", " When OpenBSD was created, de Raadt decided that the source should be easily available for anyone to read at any time, so, with the assistance of Chuck Cranor,", "[42]", " he set up the first public, anonymous ", "CVS", " server. At the time, the tradition was for only a small team of developers to have access to a project's source repository.", "[43]", " Cranor and de Raadt concluded that this practice \"runs counter to the open source philosophy\" and is inconvenient to contributors. De Raadt's decision allowed \"users to take a more active role\", and signaled the project's belief in open and public access to source code.", "[43]", "\n", "OpenBSD does not include ", "closed source", " binary drivers in the source tree, nor do they include code requiring the signing of ", "non-disclosure agreements", ".", "[44]", "\n", "Since OpenBSD is based in Canada, no United States export restrictions on cryptography apply, allowing the distribution to make full use of modern algorithms for encryption. For example, the swap space is divided into small sections and each section is encrypted with its own key, ensuring that sensitive data does not leak into an insecure part of the system.", "[9]", "\n", "OpenBSD randomizes various behaviors of applications, making them less predictable and thus more difficult to attack. For example, PIDs are created and associated randomly to processes; the ", "bind", " ", "system call", " uses random ", "port numbers", "; files are created with random ", "inode", " numbers; and IP datagrams have random identifiers.", "[45]", " This approach also helps expose bugs in the kernel and in user space programs.", "\n", "The OpenBSD policy on openness extends to hardware documentation: in the slides for a December 2006 presentation, de Raadt explained that without it \"developers often make mistakes writing drivers\", and pointed out that \"the [oh my god, I got it to work] rush is harder to achieve, and some developers just give up.\"", "[46]", " He went on to say that vendor-supplied binary drivers are unacceptable for inclusion in OpenBSD, that they have \"no trust of vendor binaries running in our kernel\" and that there is \"no way to fix [them] ... when they break.\"", "[46]", "\n", "Licensing", "[", "edit", "]", "\n", "See also: ", "BSD and GPL licensing", "\n", "A goal of the OpenBSD Project is to \"maintain the spirit of the original Berkeley Unix ", "copyrights", "\", which permitted a \"relatively un-encumbered Unix source distribution.\"", "[47]", " To this end, the ", "Internet Systems Consortium (ISC) license", " is preferred for new code, but the ", "MIT", " and BSD licenses are also accepted. The widely used ", "GNU General Public License", " is considered overly restrictive compared to these.", "[48]", "\n", "In June 2001, triggered by concerns over Darren Reed's modification of IPFilter's license wording, a systematic license audit of the OpenBSD ports and source trees was undertaken.", "[49]", " Code in more than a hundred files throughout the system was found to be unlicensed, ambiguously licensed or in use against the terms of the license. To ensure that all licenses were properly adhered to, an attempt was made to contact all the relevant copyright holders: some pieces of code were removed, many were replaced, and others, such as the ", "multicast", " ", "routing", " tools ", "mrinfo", " and ", "map-mbone", ", were ", "relicensed", " so that OpenBSD could continue to use them.", "[50]", "[51]", " Also removed during this audit was all software produced by ", "Daniel J. Bernstein", ". At the time, Bernstein requested that all modified versions of his code be approved by him prior to redistribution, a requirement to which OpenBSD developers were unwilling to devote time or effort.", "[52]", "[53]", "[54]", "\n", "Because of licensing concerns, the OpenBSD team has re-implemented software from scratch or adopted suitable existing software. Of particular note is the development, after license restrictions were imposed on ", "IPFilter", ", of the ", "pf", " ", "packet filter", ", which first appeared in OpenBSD 3.0", "[55]", " and is now available in other major BSDs.", "[56]", " OpenBSD developers have also replaced GPL licensed tools (such as ", "diff", ", ", "grep", " and ", "pkg-config", ") with BSD licensed equivalents.", "[", "citation needed", "]", "\n", "Funding", "[", "edit", "]", "\n", "Although the operating system and its portable components are used in commercial products, de Raadt says that little of the funding for the project comes from the industry: \"traditionally all our funding has come from user donations and users buying our CDs (our other products don't really make us much money). Obviously, that has not been a lot of money.\"", "[31]", "\n", "For a two-year period in the early 2000s, the project received ", "DARPA", " funding, which \"paid the salaries of 5 people to work completely full-time, bought about $30k in hardware, and paid for 3 hackathons\", from the ", "POSSE project", ".", "[31]", "\n", "In 2006, de Raadt expressed concern about the asymmetry of funding: \"I think that contributions should have come first from the vendors, secondly from the corporate users, and thirdly from individual users. But the response has been almost entirely the opposite, with almost a 15 to 1 dollar ratio in favor of the little people. Thanks a lot, little people!\"", "[31]", " However, since 2014 several large contributions to the ", "OpenBSD Foundation", " have come from corporations such as Microsoft,", "[57]", " Facebook, and Google as well as the ", "Core Infrastructure Initiative", ".", "[58]", "\n", "In 2006, the OpenBSD Project experienced financial danger.", "[59]", " The ", "Mozilla Foundation", "[60]", " and ", "GoDaddy", "[61]", " are among the organizations that helped the OpenBSD Project to overcome its financial troubles.", "\n", "On 14 January 2014, Bob Beck issued a request for funding to cover electrical costs. If sustainable funding was not found, Beck suggested the OpenBSD Project would shut down.", "[62]", " The project soon received a US$20,000 donation from Mircea Popescu, the Romanian creator of the MPEx bitcoin stock exchange, paid in ", "bitcoins", ".", "[63]", " The project raised US$150,000", "[64]", " in response to the appeal, enabling it to pay its bills and securing its short-term future.", "[63]", "\n", "Security and code auditing", "[", "edit", "]", "\n", "For more details on this topic, see ", "OpenBSD security features", ".", "\n", "Shortly after OpenBSD's creation, de Raadt was contacted by a local security software company named Secure Networks (SNI).", "[65]", "[66]", " They were developing a \"network security auditing tool\" called Ballista,", "[n 3]", " which was intended to find and attempt to ", "exploit", " possible software security flaws. This coincided with de Raadt's own interest in security, so for a time the two cooperated, a relationship that was of particular usefulness leading up to the release of OpenBSD 2.3", "[67]", " and helped to define security as the focal point of the project.", "[68]", "\n", "OpenBSD includes features designed to improve security, such as:", "\n", "\n", "secure alternatives to ", "POSIX", " functions in the C standard library, such as ", "strlcat", " for ", "strcat", " and ", "strlcpy", " for ", "strcpy", "[69]", "\n", "toolchain alterations, including a ", "static bounds checker", "[27]", "\n", "memory protection techniques to guard against invalid accesses, such as ", "ProPolice", " and the ", "W^X", " ", "page", " protection feature", "\n", "strong ", "cryptography", " and ", "randomization", "[70]", "\n", "\n", "To reduce the risk of a vulnerability or misconfiguration allowing ", "privilege escalation", ", many programs have been written or adapted to make use of ", "privilege separation", ", ", "privilege revocation", " and ", "chrooting", ". Privilege separation is a technique, pioneered on OpenBSD and inspired by the ", "principle of least privilege", ", where a program is split into two or more parts, one of which performs privileged operations and the other\u2014almost always the bulk of the code\u2014runs without privilege.", "[71]", " Privilege revocation is similar and involves a program performing any necessary operations with the privileges it starts with then dropping them. Chrooting involves restricting an application to one section of the ", "file system", ", prohibiting it from accessing areas that contain private or system files. Developers have applied these features to OpenBSD versions of many common applications, such as ", "tcpdump", ", ", "file", ", ", "tmux", ", ", "smtpd", ", and ", "syslogd", ".", "[72]", "\n", "OpenBSD developers were instrumental in the creation and development of ", "OpenSSH", ", which is developed in the OpenBSD CVS repositories. OpenSSH is based on the original ", "SSH", ".", "[73]", " It first appeared in OpenBSD 2.6 and is now by far the most popular SSH client and server, available on many operating systems.", "[74]", "\n", "The project has a policy of continually auditing source code for problems, work that developer Marc Espie has described as \"never finished ... more a question of process than of a specific bug being hunted.\" He went on to list several typical steps once a bug is found, including examining the entire source tree for the same and similar issues, \"try[ing] to find out whether the documentation ought to be amended\", and investigating whether \"it's possible to augment the ", "compiler", " to warn against this specific problem.\"", "[75]", "\n", "The default install is quite minimal, which the project states is to ensure novice users \"do not need to become security experts overnight\",", "[76]", " which fits with open-source and code auditing practices argued to be important elements of a security system.", "[77]", "\n", "Alleged FBI backdoor investigated", "[", "edit", "]", "\n", "On 11 December 2010, Gregory Perry, a former technical consultant for the ", "Federal Bureau of Investigation", " (FBI), emailed de Raadt alleging that the FBI had paid some OpenBSD ex-developers 10 years previously to insert backdoors into the ", "OpenBSD Cryptographic Framework", ". De Raadt made the email public on 14 December by forwarding it to the openbsd-tech mailing list and suggested an audit of the ", "IPsec", " codebase.", "[78]", "[79]", " De Raadt's response was skeptical of the report and he invited all developers to independently review the relevant code. In the weeks that followed, bugs were fixed but no evidence of backdoors were found.", "[80]", " De Raadt stated \"I believe that NetSec was probably contracted to write backdoors as alleged. If those were written, I don't believe they made it into our tree. They might have been deployed as their own product.\"", "[81]", "\n", "Slogan", "[", "edit", "]", "\n", "The OpenBSD website features a prominent reference to the security record of the default installation. Until June 2002, the wording read \"Five years without a remote hole in the default install!\"", "[82]", " An ", "OpenSSH", " bug was then discovered that made it possible for a remote attacker to gain ", "root privileges", " in OpenBSD and in any of the other systems running OpenSSH at the time. It was quickly fixed, as is normal with known security holes.", "[83]", "[84]", " The slogan was changed to \"One remote hole in the default install, in nearly 6 years!\" In 2007, a network-related remote vulnerability was found, which was also quickly fixed.", "[85]", " The quote was subsequently altered to \"Only two remote holes in the default install, in a heck of a long time!\" As of May 2017", "[update]", ", the wording remains.", "\n", "Distribution and marketing", "[", "edit", "]", "\n", "The name OpenBSD refers to the fact that OpenBSD's source code is freely available on the Internet. It also refers to the wide range of hardware platforms the operating system supports.", "[86]", "\n", "OpenBSD is freely available in various ways: the source can be retrieved by anonymous ", "CVS", ",", "[87]", " and binary releases and development snapshots can be downloaded by FTP, HTTP, and rsync.", "[88]", " Prepackaged CD-ROM sets through version 6.0 can be ordered online for a small fee, complete with an assortment of stickers and a copy of the release's theme song. These, with their artwork and other bonuses, have been one of the project's few sources of income, funding hardware, Internet service, and other expenses.", "[89]", " Beginning with version 6.1, CD-ROM sets are no longer released.", "\n", "In common with other operating systems, OpenBSD provides a ", "package management system", " for easy installation and management of programs which are not part of the base operating system.", "[90]", " Packages are binary files which are extracted, managed and removed using the package tools. On OpenBSD, the source of packages is the ports system, a collection of ", "Makefiles", " and other infrastructure required to create packages. In OpenBSD, the ports and base operating system are developed and released together for each version: this means that the ports or packages released with, for example, 4.6 are not suitable for use with 4.5 and vice versa.", "[90]", "\n", "\n", "\n", "\n", "\nAnimated OpenBSD mascot ", "Puffy", ", 3D-rendered with ", "Blender3D", "\n", "\n", "\n", "OpenBSD at first used the ", "BSD daemon", " mascot. A specialized version of the daemon, the haloed daemon was drawn by Erick Green. Green was asked by de Raadt to create the logo for the 2.3 and 2.4 versions of OpenBSD. At first, it was planned to create a full daemon, including head and body, but Green was only able to complete the head part for OpenBSD 2.3. The body as well as pitchfork and tail was completed for OpenBSD 2.4.", "[91]", " Subsequent releases saw variations, such as Cop daemon by Ty Semaka,", "[92]", " but eventually settling on Puffy,", "[93]", " described as a ", "pufferfish", ".", "[n 4]", " Since then Puffy has appeared on OpenBSD promotional material and featured in release songs and artwork. The promotional material of early OpenBSD releases did not have a cohesive theme or design, but later the CD-ROMs, release songs, posters and tee-shirts for each release have been produced with a single style and theme, sometimes contributed to by Ty Semaka of the ", "Plaid Tongued Devils", ".", "[37]", " These have become a part of OpenBSD ", "advocacy", ", with each release expounding a moral or political point important to the project, often through parody.", "[94]", " Past themes have included: in OpenBSD 3.8, the ", "Hackers of the Lost RAID", ", a parody of ", "Indiana Jones", " linked to the new RAID tools featured as part of the release; ", "The Wizard of OS", ", making its debut in OpenBSD 3.7, based on the work of ", "Pink Floyd", " and a parody of ", "The Wizard of Oz", " related to the project's recent work on wireless card drivers; and OpenBSD 3.3's ", "Puff the Barbarian", ", including an 80s rock-style song and parody of ", "Conan the Barbarian", ", alluding to open documentation.", "[37]", "\n", "See also", "[", "edit", "]", "\n", "\n", "\n", "Free software portal", "\n", "Cryptography portal", "\n", "Computer science portal", "\n", "\n", "\n", "\n", "\n", "Category:Computing mascots", "\n", "Comparison of BSD operating systems", "\n", "Comparison of open-source operating systems", "\n", "KAME project", "\u00a0\u2013 responsible for OpenBSD's IPv6 support", "\n", "List of computing mascots", "\n", "OpenBSD Journal", "\u00a0\u2013 online newspaper dedicated to OpenBSD news", "\n", "OpenBSD version history", "\n", "Security-focused operating system", "\n", "\n", "\n", "Notes", "[", "edit", "]", "\n", "\n", "\n", "\n", "^ ", "a", " ", "b", " ", "Multiple selections were permitted as a user may use multiple BSD variants side by side.", "\n", "^", " ", "As of OpenBSD 6.0", "[update]", ", either 4.2.1 or 3.3.6 is shipped, depending on the platform.", "[27]", "\n", "^", " ", "Later renamed to Cybercop Scanner after SNI was purchased by ", "Network Associates", ".", "\n", "^", " ", "Pufferfish do not, in fact, possess spikes; images of Puffy are closer to a similar species, the ", "porcupinefish", ".", "\n", "\n", "\n", "\n", "References", "[", "edit", "]", "\n", "\n", "\n", "^", " ", "\"Package Management\"", ". ", "OpenBSD Frequently Asked Questions", ". Retrieved ", "1 June", " 2016", ".", "\u00a0", "\n", "^", " ", "\"Platforms\"", ". ", "OpenBSD", ". Retrieved ", "3 September", " 2016", ".", "\u00a0", "\n", "^", " ", "\"src/sys/dev/microcode/atmel/atu-license \u2013 view \u2013 1.3\"", ". ", "cvsweb.openbsd.org", ". Retrieved ", "20 May", " 2016", ". ", "Redistribution [...] is permitted provided that the following conditions are met: [...] Firmware is redistributed in object code only.", "\u00a0", "\n", "^", " ", "\"src/sys/dev/microcode/tigon/tigon-license \u2013 view \u2013 1.5\"", ". ", "cvsweb.openbsd.org", ". Retrieved ", "20 May", " 2016", ".", "\u00a0", "\n", "^ ", "a", " ", "b", " ", "BSD Usage Survey", " ", "(PDF)", " (Report). The BSD Certification Group. 31 October 2005. p.\u00a09", ". Retrieved ", "16 September", " 2012", ".", "\u00a0", "\n", "^ ", "a", " ", "b", " ", "Glass, Adam (23 December 1994). ", "\"Theo De Raadt\"", ". ", "netbsd-users", " (Mailing list).", "\u00a0", "\n", "^", " ", "de Raadt, Theo", " (18 October 1996). ", "\"The OpenBSD 2.0 release\"", ". ", "openbsd-announce", " (Mailing list).", "\u00a0", "\n", "^", " ", "\"Announcing \u2013 The OpenBSD Foundation\"", ". ", "OpenBSD Journal", ". 26 July 2007.", "\u00a0", "\n", "^ ", "a", " ", "b", " ", "McIntire, Tim (8 August 2006). ", "\"Take a closer look at OpenBSD\"", ". ", "Developerworks", ". ", "IBM", ". Retrieved ", "13 December", " 2011", ".", "\u00a0", "\n", "^", " ", "\"AccessEnforcer Model AE800\"", ". ", "Calyptix Security", ". Retrieved ", "28 May", " 2016", ".", "\u00a0", "\n", "^", " ", "\"High Resistance Firewall genugate\"", ". ", "GeNUA", ". Retrieved ", "29 May", " 2016", ".", "\u00a0", "\n", "^", " ", "\"RTMX O/S IEEE Real Time POSIX Operating Systems\"", ". ", "RTMX", ". Retrieved ", "13 December", " 2011", ". ", "RTMX O/S is a product extension to OpenBSD Unix-like operating system with emphasis on embedded, dedicated applications.", "\u00a0", "\n", "^", " ", "\".vantronix secure system\"", ". ", "Compumatica secure networks", ". Retrieved ", "13 December", " 2011", ". ", "The Next Generation Firewall is not a standalone device, it is a Router for operation in security critical environments with high requirements for availability, comprehensive support as well as reliable and trusted systems powered by OpenBSD.", "\u00a0", "\n", "^", " ", "Dohnert, Roberto J. (21 January 2004). ", "\"Review of Windows Services for UNIX 3.5\"", ". ", "OSNews", ". David Adams.", "\u00a0", "\n", "^", " ", "\"About Xenocara\"", ". ", "Xenocara", ". Retrieved ", "13 December", " 2011", ".", "\u00a0", "\n", "^", " ", "Tzanidakis, Manolis (21 April 2006). ", "\"Using OpenBSD on the desktop\"", ". ", "Linux.com", ". Retrieved ", "9 March", " 2012", ".", "\u00a0", "\n", "^ ", "a", " ", "b", " ", "Lucas, Michael W. (April 2013). ", "Absolute OpenBSD: Unix for the Practical Paranoid", " (2nd ed.). San Francisco, California: ", "No Starch Press", ". ", "ISBN", "\u00a0", "978-1-59327-476-4", ".", "\u00a0", "\n", "^", " ", "http://openports.se/statistics.php", ".", "\u00a0", " ", "Missing or empty ", "|title=", " (", "help", ");", " ", "External link in ", "|website=", " (", "help", ");", " ", "Missing or empty ", "|url=", " (", "help", ")", "\n", "^ ", "a", " ", "b", " ", "\"OpenBSD 6.0\"", ". ", "OpenBSD", ". Retrieved ", "1 November", " 2016", ".", "\u00a0", "\n", "^", " ", "\"The X Windows System\"", ". ", "OpenBSD Frequently Asked Questions", ". Retrieved ", "22 May", " 2016", ". ", "OpenBSD ships with the cwm(1), fvwm(1) and twm(1) window managers, [...]", "\u00a0", "\n", "^", " ", "\"Contents of /stable/10/crypto/openssh/README\"", ". ", "svnweb.freebsd.org", ". Retrieved ", "19 May", " 2016", ". ", "This is the port of OpenBSD's excellent OpenSSH to Linux and other Unices.", "\u00a0", "\n", "^", " ", "\"src/crypto/external/bsd/openssh/dist/README \u2013 view \u2013 1.4\"", ". ", "NetBSD CVS Repositories", ". Retrieved ", "19 May", " 2016", ".", "\u00a0", "\n", "^", " ", "\"dragonfly.git/blob \u2013 crypto/openssh/README\"", ". ", "gitweb.dragonflybsd.org", ". Retrieved ", "19 May", " 2016", ". ", "This is the port of OpenBSD's excellent OpenSSH to Linux and other Unices.", "\u00a0", "\n", "^", " ", "\"Arch Linux \u2013 openssh 7.2p2-1 (x86_64)\"", ". ", "Arch Linux", ". Retrieved ", "17 May", " 2016", ".", "\u00a0", "\n", "^", " ", "\"openssh\"", ". ", "OpenSUSE", ". Retrieved ", "17 May", " 2016", ".", "\u00a0", "\n", "^", " ", "\"Debian \u2013 Details of package openssh-client in jessie\"", ". ", "Debian", ". Retrieved ", "17 May", " 2016", ".", "\u00a0", "\n", "^ ", "a", " ", "b", " ", "c", " ", "\"gcc-local \u2013 local modifications to gcc\"", ". ", "OpenBSD manual pages", ". Retrieved ", "1 November", " 2016", ".", "\u00a0", "\n", "^", " ", "\"httpd \u2013 HTTP daemon\"", ". ", "OpenBSD manual pages", ". Retrieved ", "1 November", " 2016", ".", "\u00a0", "\n", "^", " ", "\"OpenBSD ports \u2234 www/apache-httpd,-main\"", ". ", "ports.su", ". Retrieved ", "18 May", " 2016", ".", "\u00a0", "\n", "^", " ", "\"OpenBSD ports \u2234 www/nginx\"", ". ", "ports.su", ". Retrieved ", "18 May", " 2016", ".", "\u00a0", "\n", "^ ", "a", " ", "b", " ", "c", " ", "d", " ", "Andrews, Jeremy (2 May 2006). ", "\"Interview: Theo de Raadt\"", ". ", "KernelTrap", ". Archived from ", "the original", " on 24 April 2013.", "\u00a0", "\n", "^", " ", "\"OpenBSD's flavors\"", ". ", "OpenBSD Frequently Asked Questions", ". Retrieved ", "22 May", " 2016", ".", "\u00a0", "\n", "^", " ", "\"Applying patches in OpenBSD\"", ". ", "OpenBSD Frequently Asked Questions", ". Retrieved ", "15 May", " 2016", ".", "\u00a0", "\n", "^", " ", "\"Migrating to OpenBSD\"", ". ", "OpenBSD Frequently Asked Questions", ". Retrieved ", "4 January", " 2017", ".", "\u00a0", "\n", "^", " ", "\"Hackathons\"", ". ", "OpenBSD", ". Retrieved ", "18 May", " 2016", ".", "\u00a0", "\n", "^", " ", "\"Interview: Theo de Raadt of OpenBSD\"", ". ", "NewsForge", ". 28 March 2006", ". Retrieved ", "31 March", " 2016", ".", "\u00a0", "\n", "^ ", "a", " ", "b", " ", "c", " ", "\"Release Songs\"", ". ", "OpenBSD", ". Retrieved ", "22 May", " 2016", ".", "\u00a0", "\n", "^", " ", "Beck, Bob (25 February 2014). ", "\"Google Summer of Code 2014\"", ". ", "openbsd-misc", " (Mailing list)", ". Retrieved ", "4 March", " 2014", ".", "\u00a0", "\n", "^", " ", "\"GSOC 2014 with the OpenBSD Foundation\"", ". ", "Google Summer of Code 2014", ". Retrieved ", "4 March", " 2014", ".", "\u00a0", "\n", "^", " ", "Chisnall, David (20 January 2006). ", "\"BSD: The Other Free UNIX Family\"", ". ", "InformIT", ". ", "Archived", " from the original on 14 March 2014.", "\u00a0", "\n", "^", " ", "Smith, Jesse (18 November 2013). ", "\"OpenBSD 5.4: Puffy on the Desktop\"", ". ", "Archived", " from the original on 30 April 2014.", "\u00a0", "\n", "^", " ", "Cranor, Chuck D. ", "\"Chuck Cranor's Home Page\"", ". Retrieved ", "13 December", " 2011", ". ", "I also hosted and helped create the first Anonymous CVS server on the Internet (the original ", "anoncvs", ".openbsd", ".org", " [...]", "\u00a0", "\n", "^ ", "a", " ", "b", " ", "Cranor, Chuck D.; ", "de Raadt, Theo", " (6 June 1999). ", "Opening the Source Repository with Anonymous CVS", ". ", "USENIX", " Annual Technical Conference. Monterey, California", ". Retrieved ", "13 December", " 2011", ".", "\u00a0", "\n", "^", " ", "\"Project Goals\"", ". ", "OpenBSD", ". Retrieved ", "18 May", " 2016", ". ", "Integrate good code from any source with acceptable licenses. [...], NDAs are never acceptable.", "\u00a0", "\n", "^", " ", "de Raadt, Theo", "; Hallqvist, Niklas; Grabowski, Artur; Keromytis, Angelos D.; ", "Provos, Niels", " (6 June 1999). ", "\"Randomness Used Inside the Kernel\"", ". ", "Cryptography in OpenBSD: An Overview", ". ", "USENIX", " Annual Technical Conference. Monterey, California", ". Retrieved ", "1 February", " 2014", ".", "\u00a0", "\n", "^ ", "a", " ", "b", " ", "de Raadt, Theo", " (5 December 2006). ", "\"Presentation at OpenCON\"", ". ", "OpenBSD", ". Retrieved ", "13 December", " 2011", ".", "\u00a0", "\n", "^", " ", "\"Copyright Policy\"", ". ", "OpenBSD", ". Retrieved ", "13 December", " 2011", ".", "\u00a0", "\n", "^", " ", "Matzan, Jem (15 June 2005). ", "\"BSD cognoscenti on Linux\"", ". ", "NewsForge", ". ", "Linux.com", ". Retrieved ", "28 May", " 2016", ".", "\u00a0", "\n", "^", " ", "Gasperson, Tina (6 June 2001). ", "\"OpenBSD and ipfilter still fighting over license disagreement\"", ". ", "Linux.com", ". Archived from ", "the original", " on 26 June 2008.", "\u00a0", "\n", "^", " ", "\"src/usr.sbin/mrinfo/mrinfo.c \u2013 view \u2013 1.7\"", ". ", "cvsweb.openbsd.org", ". 31 July 2001", ". Retrieved ", "24 May", " 2016", ". ", "New license from Xerox! This code is now FREE! Took a while and a lot of mails, but it is worth it.", "\u00a0", "\n", "^", " ", "\"src/usr.sbin/map-mbone/mapper.c \u2013 view \u2013 1.5\"", ". ", "cvsweb.openbsd.org", ". 31 July 2001", ". Retrieved ", "24 May", " 2016", ". ", "New license from Xerox! This code is now FREE! Took a while and a lot of mails, but it is worth it.", "\u00a0", "\n", "^", " ", "de Raadt, Theo", " (24 August 2001). ", "\"Re: Why were all DJB's ports removed? No more qmail?\"", ". ", "openbsd-misc", " (Mailing list). Archived from ", "the original", " on 19 April 2016.", "\u00a0", "\n", "^", " ", "Bernstein, Daniel J.", " (27 August 2001). ", "\"Re: Why were all DJB's ports removed? No more qmail?\"", ". ", "openbsd-misc", " (Mailing list). Archived from ", "the original", " on 4 February 2012.", "\u00a0", "\n", "^", " ", "Espie, Marc (28 August 2001). ", "\"Re: Why were all DJB's ports removed? No more qmail?\"", ". ", "openbsd-misc", " (Mailing list). Archived from ", "the original", " on 19 April 2016.", "\u00a0", "\n", "^", " ", "Hartmeier, Daniel (10 June 2002). ", "Design and Performance of the OpenBSD Stateful Packet Filter (pf)", ". ", "USENIX", " Annual Technical Conference. Monterey, California", ". Retrieved ", "13 December", " 2011", ".", "\u00a0", "\n", "^", " ", "The OpenBSD PF Packet Filter Book: PF for NetBSD, FreeBSD, DragonFly and OpenBSD", ". Reed Media Services. ", "ISBN", "\u00a0", "0-9790342-0-5", ". Retrieved ", "19 May", " 2016", ".", "\u00a0", "\n", "^", " ", "McAllister, Neil (8 July 2015). ", "\"Microsoft rains cash on OpenBSD Foundation, becomes top 2015 donor\"", ". ", "The Register", ". Retrieved ", "27 May", " 2016", ".", "\u00a0", "\n", "^", " ", "\"Contributors\"", ". ", "OpenBSD Foundation", ". Retrieved ", "27 May", " 2016", ".", "\u00a0", "\n", "^", " ", "\"OpenBSD Project in Financial Danger\"", ". ", "Slashdot", ". 21 March 2006", ". Retrieved ", "12 December", " 2014", ".", "\u00a0", "\n", "^", " ", "\"Mozilla Foundation Donates $10K to OpenSSH\"", ". ", "Slashdot", ". 4 April 2006", ". Retrieved ", "12 December", " 2014", ".", "\u00a0", "\n", "^", " ", "\"GoDaddy.com Donates $10K to Open Source Development Project\"", ". ", "The Hosting News", ". 19 April 2006. Archived from ", "the original", " on 11 November 2006.", "\u00a0", "\n", "^", " ", "Beck, Bob (14 January 2014). ", "\"Request for Funding our Electricity\"", ". ", "openbsd-misc", " (Mailing list)", ". Retrieved ", "17 May", " 2016", ".", "\u00a0", "\n", "^ ", "a", " ", "b", " ", "Bright, Peter (20 January 2014). ", "\"OpenBSD rescued from unpowered oblivion by $20K bitcoin donation\"", ". ", "Ars Technica", ". Retrieved ", "20 January", " 2014", ".", "\u00a0", "\n", "^", " ", "\"The OpenBSD Foundation 2014 Fundraising Campaign\"", ". ", "OpenBSD Foundation", ". Retrieved ", "24 May", " 2014", ".", "\u00a0", "\n", "^", " ", "Varghese, Sam (8 October 2004). ", "\"Staying on the cutting edge\"", ". ", "The Age", ". Retrieved ", "13 December", " 2011", ".", "\u00a0", "\n", "^", " ", "Laird, Cameron; Staplin, George Peter (17 July 2003). ", "\"The Essence of OpenBSD\"", ". ", "ONLamp", ". Retrieved ", "13 December", " 2011", ".", "\u00a0", "\n", "^", " ", "de Raadt, Theo", " (19 December 2005). ", "\"2.3 release announcement\"", ". ", "openbsd-misc", " (Mailing list). ", "Without [SNI's] support at the right time, this release probably would not have happened.", "\u00a0", "\n", "^", " ", "Wayner, Peter (13 July 2000). ", "\"18.3 Flames, Fights, and the Birth of OpenBSD\"", ". ", "Free For All: How Linux and the Free Software Movement Undercut the High Tech Titans", " (1st ed.). ", "HarperBusiness", ". ", "ISBN", "\u00a0", "978-0-06-662050-3", ". Retrieved ", "13 December", " 2011", ".", "\u00a0", "\n", "^", " ", "Miller, Todd C.; ", "de Raadt, Theo", " (6 June 1999). ", "strlcpy and strlcat\u00a0- Consistent, Safe, String Copy and Concatenation", ". ", "USENIX", " Annual Technical Conference. Monterey, California", ". Retrieved ", "13 December", " 2011", ".", "\u00a0", "\n", "^", " ", "de Raadt, Theo", "; Hallqvist, Niklas; Grabowski, Artur; Keromytis, Angelos D.; ", "Provos, Niels", " (6 June 1999). ", "Cryptography in OpenBSD: An Overview", ". ", "USENIX", " Annual Technical Conference. Monterey, California", ". Retrieved ", "27 May", " 2016", ".", "\u00a0", "\n", "^", " ", "Provos, Niels", " (9 August 2003). ", "\"Privilege Separated OpenSSH\"", ". Retrieved ", "13 December", " 2011", ".", "\u00a0", "\n", "^", " ", "\"Innovations\"", ". ", "OpenBSD", ". Retrieved ", "18 May", " 2016", ". ", "Privilege separation: [...] The concept is now used in many OpenBSD programs, for example [...] etc.", "\u00a0", "\n", "^", " ", "\"Project History and Credits\"", ". ", "OpenSSH", ". Retrieved ", "13 December", " 2011", ".", "\u00a0", "\n", "^", " ", "\"SSH usage profiling\"", ". ", "OpenSSH", ". Retrieved ", "13 December", " 2011", ".", "\u00a0", "\n", "^", " ", "Biancuzzi, Federico (18 March 2004). ", "\"An Interview with OpenBSD's Marc Espie\"", ". ", "ONLamp", ". Retrieved ", "13 December", " 2011", ".", "\u00a0", "\n", "^", " ", "\"Security\"", ". ", "OpenBSD", ". Retrieved ", "13 December", " 2011", ". ", "Secure by Default.", "\u00a0", "\n", "^", " ", "Wheeler, David A.", " (3 March 2003). ", "\"2.4. Is Open Source Good for Security?\"", ". ", "Secure Programming for Linux and Unix HOWTO", ". Retrieved ", "13 December", " 2011", ".", "\u00a0", "\n", "^", " ", "de Raadt, Theo", " (14 December 2010). ", "\"Allegations regarding OpenBSD IPSEC\"", ". ", "openbsd-tech", " (Mailing list)", ". Retrieved ", "28 May", " 2016", ".", "\u00a0", "\n", "^", " ", "Holwerda, Thom (14 December 2010). ", "\"FBI Added Secret Backdoors to OpenBSD IPSEC\"", ". ", "OSNews", ". Retrieved ", "13 December", " 2011", ".", "\u00a0", "\n", "^", " ", "Ryan, Paul (23 December 2010). ", "\"OpenBSD code audit uncovers bugs, but no evidence of backdoor\"", ". ", "Ars Technica", ". Retrieved ", "9 January", " 2011", ".", "\u00a0", "\n", "^", " ", "Mathew J. Schwartz (22 December 2010). ", "\"OpenBSD Founder Believes FBI Built IPsec Backdoor\"", ". ", "InformationWeek: DARKreading", ".", "\u00a0", "\n", "^", " ", "\"OpenBSD\"", ". ", "OpenBSD", ". Archived from ", "the original", " on 28 May 2002.", "\u00a0", "\n", "^", " ", "\"OpenSSH Remote Challenge Vulnerability\"", ". ", "Internet Security Systems", ". 26 June 2002", ". Retrieved ", "13 December", " 2011", ".", "\u00a0", "\n", "^", " ", "\"OpenSSH 'Challenge-Response' authentication buffer overflow\"", ". ", "Internet Security Systems", ". Retrieved ", "13 December", " 2011", ".", "\u00a0", "\n", "^", " ", "\"OpenBSD's IPv6 mbufs remote kernel buffer overflow\"", ". ", "Core Security Technologies", ". 13 March 2007", ". Retrieved ", "13 December", " 2011", ".", "\u00a0", "\n", "^", " ", "Grimes, Roger A. (29 December 2006). ", "\"New year's resolution No. 1: Get OpenBSD\"", ". ", "InfoWorld", ".", "\u00a0", "\n", "^", " ", "\"Anonymous CVS\"", ". ", "OpenBSD", ". Retrieved ", "13 December", " 2011", ".", "\u00a0", "\n", "^", " ", "\"Mirrors\"", ". ", "OpenBSD", ". Retrieved ", "22 May", " 2016", ".", "\u00a0", "\n", "^", " ", "\"Orders\"", ". ", "OpenBSD", ". Retrieved ", "20 May", " 2016", ".", "\u00a0", "\n", "^ ", "a", " ", "b", " ", "\"Packages and Ports\"", ". ", "OpenBSD Frequently Asked Questions", ". Retrieved ", "22 May", " 2016", ".", "\u00a0", "\n", "^", " ", "\"OpenBSD\"", ". ", "mckusick.com", ". Retrieved ", "12 December", " 2014", ".", "\u00a0", "\n", "^", " ", "de Raadt, Theo", " (19 May 1999). ", "\"OpenBSD 2.5 Release Announcement\"", ". ", "openbsd-announce", " (Mailing list). Archived from ", "the original", " on 14 March 2014. ", "OpenBSD 2.5 introduces the new Cop daemon image done by cartoonist Ty Semeka.", "\u00a0", "\n", "^", " ", "\"OpenBSD 2.7\"", ". ", "OpenBSD", ". Retrieved ", "22 May", " 2016", ".", "\u00a0", "\n", "^", " ", "Matzan, Jem (1 December 2006). ", "\"OpenBSD 4.0 review\"", ". ", "Software in Review", ". Retrieved ", "13 December", " 2011", ". ", "Each OpenBSD release has a graphical theme and a song that goes with it. The theme reflects a major concern that the OpenBSD programmers are addressing or bringing to light.", "\u00a0", "\n", "\n", "\n", "External links", "[", "edit", "]", "\n", "\n", "Listen to this article", " (", "info/dl", ")\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "This audio file was created from a revision of the article \"", "OpenBSD", "\" dated 2011-10-23, and does not reflect subsequent edits to the article. (", "Audio help", ")", "\n", "More spoken articles", "\n", "\n", "\n", "\n", "\n", "Wikimedia Commons has media related to ", "OpenBSD", ".", "\n", "\n", "\n", "\n", "\n", "\n", "The Wikibook ", "Guide to Unix", " has a page on the topic of: ", "OpenBSD", "\n", "\n", "\n", "\n", "Official website", "\n", "OpenBSD", " at ", "DistroWatch", "\n", "OpenBSD ports & packages", " ", "latest package info", "\n", "OpenBSD source code search", "\n", "old list of OpenBSD commands", "\n", "Video \u2013 An OpenBSD talk by Michael Lucas", " on ", "YouTube", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "v", "\n", "t", "\n", "e", "\n", "\n", "\n", "The ", "OpenBSD", " Project", "\n", "\n", "\n", "\n", "Operating system", "\n", "\n", "\n", "\n", "OpenBSD", "\n", "\n", "version history", "\n", "security", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "Related projects", "\n", "\n", "\n", "\n", "CARP", "\n", "LibreSSL", "\n", "mandoc", "\n", "OpenSSH", "\n", "OpenBGPD", "\n", "OpenIKED", "\n", "OpenOSPFD", "\n", "OpenNTPD", "\n", "OpenSMTPD", "\n", "PF", "\n", "sndio", "\n", "spamd", "\n", "Systrace", "\n", "tmux", "\n", "Xenocara", "\n", "\n", "cwm", "\n", "\n", "\n", "W^X", "\n", "\n", "\n", "\n", "\n", "\n", "People", "\n", "\n", "\n", "\n", "Theo de Raadt", "\n", "Niels Provos", "\n", "OpenBSD Foundation", "\n", "Plaid Tongued Devils", "\n", "\n", "\n", "\n", "\n", "\n", "Resources", "\n", "\n", "\n", "\n", "OpenBSD Journal", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "v", "\n", "t", "\n", "e", "\n", "\n", "\n", "Berkeley Software Distribution", "\n", "\n", "\n", "\n", "People", "\n", "\n", "\n", "\n", "Bob Fabry", "\n", "Keith Bostic", "\n", "Marshall Kirk McKusick", "\n", "Michael J. Karels", "\n", "Bill Joy", "\n", "Samuel Leffler", "\n", "Jordan Hubbard", "\n", "Theo de Raadt", "\n", "Poul-Henning Kamp", "\n", "Lynne", " and ", "William Jolitz", "\n", "\n", "\n", "\n", "\n", "\n", "Derivatives", "\n", "\n", "\n", "\n", "\n", "Active", "\n", "\n", "\n", "\n", "FreeBSD", "\n", "OpenBSD", "\n", "NetBSD", "\n", "DragonFly BSD", "\n", "TrueOS", "\n", "Junos OS", "\n", "Darwin", "\n", "PS3", "/", "PS4", "/", "PSP", "/", "PS Vita operating system", "\n", "Nintendo Switch operating system", "\n", "Full list", "\n", "\n", "\n", "\n", "\n", "\n", "Discontinued", "\n", "\n", "\n", "\n", "386BSD", "\n", "BSD/OS", "\n", "SunOS", "\n", "Ultrix", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "Companies", "\n", "\n", "\n", "\n", "Sleepycat Software", "\n", "Walnut Creek CDROM", "\n", "Berkeley Software Design", "\n", "iXsystems", "\n", "\n", "\n", "\n", "\n", "\n", "Other topics", "\n", "\n", "\n", "\n", "Comparison", "\n", "History", "\n", "Licensing", "\n", "BSD Daemon", "\n", "Computer Systems Research Group", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "v", "\n", "t", "\n", "e", "\n", "\n", "\n", "Unix", " and ", "Unix-like", " ", "operating systems", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "BSD", "\n", "\n", "386BSD", "\n", "\n", "FreeBSD", "\n", "NetBSD", "\n", "OpenBSD", "\n", "DragonFly BSD", "\n", "\n", "\n", "NeXTSTEP", "\n", "Darwin", "\n", "\n", "macOS", "\n", "iOS", "\n", "\n", "\n", "SunOS", "\n", "Ultrix", "\n", "\n", "\n", "Coherent", "\n", "GNU", "\n", "Linux", "\n", "\n", "Android", "\n", "Chrome OS", "\n", "\n", "\n", "LynxOS", "\n", "MINIX", "\n", "QNX", "\n", "\n", "BlackBerry 10", "\n", "\n", "\n", "Research Unix", "\n", "System V", "\n", "\n", "A/UX", "\n", "AIX", "\n", "HP-UX", "\n", "illumos", "\n", "IRIX", "\n", "OpenServer", "\n", "Solaris", "\n", "Tru64 UNIX", "\n", "UnixWare", "\n", "\n", "\n", "Xenix", "\n", "more...", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", " ", "Category", "\n", " ", "Commons", "\n", " ", "Book", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "Authority control", "\n", "\n", "\n", "\n", "MusicBrainz", ": ", "1ffebdcd-b78e-463d-9ce9-f2536be58db5", "\n", "\n", "\n", "\n", "\n", "\n", "\n\n\n", "\n", "\n", "\n", "\n"], "lastUpdated": " 19 January 2018, at 07:22."}, +{"title": "David Heinemeier Hansson", "text": ["Not to be confused with ", "David Hanson (computer scientist)", ".", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "This article has multiple issues.", " Please help ", "improve it", " or discuss these issues on the ", "talk page", ". ", "(", "Learn how and when to remove these template messages", ")", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "This article ", "is written like a\u00a0personal reflection or opinion essay", " that states a Wikipedia editor's personal feelings about a topic. ", "Please ", "help improve it", " by rewriting it in an ", "encyclopedic style", ".", " ", "(July 2017)", " ", "(", "Learn how and when to remove this template message", ")", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "This article ", "reads like ", "a press release", " or ", "a news article", " or ", "is entirely based on ", "routine coverage", ". ", "Please ", "expand this article", " with ", "properly sourced content", " to meet Wikipedia's ", "quality standards", ", ", "event notability guideline", ", or ", "encyclopedic content policy", ".", " ", "(July 2017)", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "The topic of this article ", "may not meet Wikipedia's ", "notability guideline for biographies", ". ", "Please help to establish notability by citing ", "reliable secondary sources", " that are ", "independent", " of the topic and provide significant coverage of it beyond its mere trivial mention. If notability cannot be established, the article is likely to be ", "merged", ", ", "redirected", ", or ", "deleted", ".", "\n", "Find sources:", "\u00a0", "\"David Heinemeier Hansson\"", "\u00a0\u2013\u00a0", "news", "\u00a0", "\u00b7", " ", "newspapers", "\u00a0", "\u00b7", " ", "books", "\u00a0", "\u00b7", " ", "scholar", "\u00a0", "\u00b7", " ", "JSTOR", " ", "(July 2017)", " ", "(", "Learn how and when to remove this template message", ")", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "Some of this article's ", "listed sources", " ", "may not be ", "reliable", ". ", "Please help this article by looking for better, more reliable sources. Unreliable citations may be challenged or deleted.", " ", "(July 2017)", " ", "(", "Learn how and when to remove this template message", ")", "\n", "\n", "\n", "\n", "\n", "\n", "(", "Learn how and when to remove this template message", ")", "\n", "\n", "\n", "\n", "\n", "\n", "David Heinemeier Hansson", "\n", "\n", "\n", "\n", "Hansson at the 2006 O'Reilly Emerging Technology Conference", "\n", "\n", "\n", "\n", "Born", "\n", "(", "1979-10-15", ")", " 15 October 1979 ", "(age\u00a038)", "[1]", "\n", "Copenhagen", ", ", "Denmark", "\n", "\n", "\n", "Residence", "\n", "Benahav\u00eds", ", ", "Spain", "\n", "\n", "\n", "Other\u00a0names", "\n", "DHH", "\n", "\n", "\n", "Occupation", "\n", "Programmer", "[2]", "\n", "\n", "\n", "Employer", "\n", "Basecamp", "\n", "\n", "\n", "Known\u00a0for", "\n", "Ruby on Rails", "\n", "\n", "\n", "Website", "\n", "david", ".heinemeierhansson", ".com", "\n", "\n", "\n", "David Heinemeier Hansson", " (born 15 October 1979; known to the ", "Ruby", " and car racing communities as ", "DHH", ") is a ", "Danish", " ", "programmer", " and the creator of the popular ", "Ruby on Rails", " ", "web development", " ", "framework", " and the ", "Instiki wiki", ".", "[3]", " He is also a partner at the web-based software development firm ", "Basecamp", " (formerly ", "37signals", ").", "\n", "Hansson co-wrote ", "Agile Web Development with Rails", " with ", "Dave Thomas", " in 2005 as part of ", "The Facets of Ruby Series", ". He also co-wrote ", "Getting Real", ", ", "Rework", ", and ", "Remote", " with ", "Jason Fried", ".", "\n", "\n", "\n", "\n", "Contents", "\n", "\n", "\n", "1", " ", "Programming", "\n", "2", " ", "Personal life", "\n", "\n", "2.1", " ", "24 Hours of Le Mans results", "\n", "2.2", " ", "Complete FIA World Endurance Championship results", "\n", "\n", "\n", "3", " ", "Recognition", "\n", "4", " ", "See also", "\n", "5", " ", "References", "\n", "6", " ", "External links", "\n", "\n", "\n", "\n", "Programming", "[", "edit", "]", "\n", "In 1999, Hansson founded and built a Danish online gaming news website and community called Daily Rush, which he ran until 2001.", "[4]", "\n", "After attracting the attention of ", "Jason Fried", " by offering him help with PHP coding, Hansson was hired by Fried to build a web-based ", "project management", " tool, which ultimately became 37signals' ", "Basecamp", " ", "software as a service", " product.", "\n", "To aid the development process, Hansson used the then-obscure Ruby programming language to develop a custom ", "web framework", ". He released the framework separately from the project management tool in 2004 as the ", "open source", " project ", "Ruby on Rails", ". In 2005, Hansson was recognized by ", "Google", " and ", "O'Reilly", " with the \"Hacker of the Year\" award for his creation of Ruby on Rails.", "[5]", "\n", "After graduating from the ", "Copenhagen Business School", " and receiving his ", "bachelor's degree", " in Computer Science and Business Administration, Hansson moved from ", "Denmark", " to ", "Chicago", ", Illinois, ", "U.S.", " in November 2005.", "[6]", "\n", "Personal life", "[", "edit", "]", "\n", "\n", "\n", "24 Hours of Le Mans", " career", "\n", "\n", "\n", "Years", "\n", "2012 -", "\n", "\n", "\n", "Teams", "\n", "OAK Racing", ", ", "Aston Martin Racing", ", ", "Extreme Speed Motorsports", ", ", "Proton Competition", ", ", "Rebellion Racing", "\n", "\n", "\n", "Best finish", "\n", "8th ", "(", "2013", ")", "\n", "\n", "\n", "Class wins", "\n", "1", "\n", "\n", "\n", "David Heinemeier Hansson lists photography and race car driving amongst his hobbies.", "[7]", " He took part in the ", "2012 24 Hours of Le Mans", " driving for ", "OAK Racing", ".", "[8]", " He also drove a Morgan-Nissan P2 car for ", "Conquest Racing", " in the ", "American Le Mans Series", " (ALMS), winning two races in the season. Heinemeier Hansson joined OAK Racing full-time in 2013, taking five 2nd-place finishes to finish 2nd in the Trophy for LMP2 Drivers.", "\n", "In July 2010 it was revealed that Heinemeier Hansson was the person that had commissioned the one-off ", "Pagani Zonda HH", " supercar.", "[9]", " He also owns the one-off ", "Koenigsegg Agera", " HH car.", "[10]", "\n", "24 Hours of Le Mans results", "[", "edit", "]", "\n", "\n", "\n", "Year", "\n", "Team", "\n", "Co-Drivers", "\n", "Car", "\n", "Class", "\n", "Laps", "\n", "Pos.", "\n", "Class", "\nPos.", "\n", "\n", "\n", "2012", "\n", " ", "OAK Racing", "\n", " ", "Bas Leinders", "\n", " ", "Maxime Martin", "\n", "Morgan LMP2", "-", "Nissan", "\n", "LMP2", "\n", "341", "\n", "14th", "\n", "7th", "\n", "\n", "\n", "2013", "\n", " ", "OAK Racing", "\n", " ", "Olivier Pla", "\n", " ", "Alex Brundle", "\n", "Morgan LMP2", "-", "Nissan", "\n", "LMP2", "\n", "328", "\n", "8th", "\n", "2nd", "\n", "\n", "\n", "2014", "\n", " ", "Aston Martin Racing", "\n", " ", "Kristian Poulsen", "\n", " ", "Nicki Thiim", "\n", "Aston Martin Vantage GTE", "\n", "GTE", "\nAm", "\n", "334", "\n", "17th", "\n", "1st", "\n", "\n", "\n", "2015", "\n", " ", "Extreme Speed Motorsports", "\n", " ", "Scott Sharp", "\n", " ", "Ryan Dalziel", "\n", "Ligier JS P2", "-", "Honda", "\n", "LMP2", "\n", "329", "\n", "28th", "\n", "10th", "\n", "\n", "\n", "2016", "\n", " ", "Abu Dhabi-Proton Racing", "\n", " Khaled Al Qubaisi", "\n", " ", "Patrick Long", "\n", "Porsche 911 RSR", "\n", "GTE", "\nAm", "\n", "330", "\n", "28th", "\n", "3rd", "\n", "\n", "\n", "2017", "\n", " ", "Vaillante Rebellion", "\n", " ", "Nelson Piquet Jr.", "\n", " ", "Mathias Beche", "\n", "Oreca 07", "-", "Gibson", "\n", "LMP2", "\n", "364", "\n", "DSQ", "\n", "DSQ", "\n", "\n", "\n", "Complete FIA World Endurance Championship results", "[", "edit", "]", "\n", "\n", "\n", "Year", "\n", "Entrant", "\n", "Class", "\n", "Car", "\n", "Engine", "\n", "Tyres", "\n", "1", "\n", "2", "\n", "3", "\n", "4", "\n", "5", "\n", "6", "\n", "7", "\n", "8", "\n", "9", "\n", "Rank", "\n", "Points", "\n", "\n", "\n", "2013", "\n", "OAK Racing", "\n", "LMP2", "\n", "Morgan LMP2", "\n", "Nissan", " VK45DE 4.5 L V8", "\n", "D", "\n", "SIL", "\n", "2", "\n", "SPA", "\n", "2", "\n", "LMS", "\n", "2", "\n", "S\u00c3O", "\n", "6", "\n", "COA", "\n", "6", "\n", "FUJ", "\n", "3", "\n", "SHA", "\n", "2", "\n", "BHR", "\n", "2", "\n", "\n", "2nd", "\n", "132.5", "\n", "\n", "\n", "2014", "\n", "Aston Martin Racing", "\n", "LMGTE", "\nAm", "\n", "Aston Martin Vantage V8 GTE", "\n", "Aston Martin", " 4.5 L V8", "\n", "M", "\n", "SIL", "\n", "1", "\n", "SPA", "\n", "2", "\n", "LMS", "\n", "1", "\n", "COA", "\n", "2", "\n", "FUJ", "\n", "1", "\n", "SHA", "\n", "2", "\n", "BHR", "\n", "1", "\n", "S\u00c3O", "\n", "2", "\n", "\n", "1st", "\n", "198", "\n", "\n", "\n", "2015", "\n", "Extreme Speed Motorsports", "\n", "LMP2", "\n", "HPD ARX-03b", "\n", "Ligier JS P2", "\n", "Honda", " HR28TT 2.8 L Turbo V6", "\n", "D", "\n", "SIL", "\n", "EX", "\n", "SPA", "\n", "8", "\n", "LMS", "\n", "5", "\n", "N\u00dcR", "\n", "6", "\n", "COA", "\n", "4", "\n", "FUJ", "\n", "4", "\n", "SHA", "\n", "Ret", "\n", "BHR", "\n", "7", "\n", "\n", "7th", "\n", "62", "\n", "\n", "\n", "2016", "\n", "Abu Dhabi-Proton Racing", "\n", "LMGTE", "\nAm", "\n", "Porsche 911 RSR", "\n", "Porsche", " 4.0\u00a0L Flat-6", "\n", "M", "\n", "SIL", "\n", "5", "\n", "SPA", "\n", "6", "\n", "LMS", "\n", "2", "\n", "N\u00dcR", "\n", "4", "\n", "MEX", "\n", "1", "\n", "COA", "\n", "5", "\n", "FUJ", "\n", "5", "\n", "SHA", "\n", "4", "\n", "BHR", "\n", "1", "\n", "2nd", "\n", "151", "\n", "\n", "\n", "2017", "\n", "Vaillante Rebellion", "\n", "LMP2", "\n", "Oreca 07", "\n", "Gibson", " GK-428 4.2 litre ", "V8", "\n", "D", "\n", "SIL", "\n", "9", "\n", "SPA", "\n4", "\n", "LMS", "\n", "DSQ", "\n", "N\u00dcR", "\n", "4", "\n", "MEX", "\n", "5", "\n", "COA", "\n", "2", "\n", "FUJ", "\n", "DSQ", "\n", "SHA", "\n", "3", "\n", "BHR", "\n", "3", "\n", "8th", "\n", "85", "\n", "\n", "\n", "Recognition", "[", "edit", "]", "\n", "\n", "2005: Won Best Hacker of the Year 2005 at ", "OSCON", " from ", "Google", " and ", "O'Reilly", " for the work on Rails.", "[11]", "\n", "2006: Accepted the ", "Jolt Award", " of product excellence for Rails 1.0.", "[11]", "\n", "2012: Named ", "ALMS", " Rookie of the year.", "[12]", "\n", "\n", "See also", "[", "edit", "]", "\n", "\n", "Basecamp", "\n", "\n", "References", "[", "edit", "]", "\n", "\n", "\n", "^", " ", "David Heinemeier Hansson, ed. (October 2001). ", "\"Turning Another Year (Loud Thinking)\"", ". Archived from ", "the original", " on 1 November 2007", ". Retrieved ", "2 October", " 2007", ".", "\u00a0", "\n", "^", " ", "The home screens of 37signals", "\n", "^", " ", "DHH", " interviewed on the TV show Triangulation on the ", "TWiT.tv", " network", "\n", "^", " ", "Daily Rush", "\n", "^", " ", "\"Google-O'Reilly Open Source Awards - Hall of Fame\"", ". Google Code", ". Retrieved ", "2010-09-03", ". ", "Best Hacker: David Heinemeier Hansson (Ruby on Rails and 37Signals)", "\u00a0", "\n", "^", " ", "Staff writer (March 9, 2014). ", "\"David Heinemeier Hansson: Basecamp, Remote and the next big thing\"", ". eTalks", ". Retrieved ", "April 30,", " 2015", ".", "\u00a0", "[", "permanent dead link", "]", "\n", "^", " ", "\"DHH weblog\"", ". Retrieved ", "2012-07-02", ".", "\u00a0", "\n", "^", " ", "Mercier, Laurent (2012-04-18). ", "\"L'\u00e9quipage de la Morgan 2012 LMP2 #35 affiche complet\"", " [The crew of the #35 LMP2 2012 Morgan sold out]. ", "Endurance-Info", " (in French). Infomaniak Network SA", ". Retrieved ", "2012-04-18", ".", "\u00a0", "\n", "^", " ", "\"Pagani Zonda HH\"", ". secretentourage.com. August 2010", ". Retrieved ", "2011-01-02", ".", "\u00a0", "\n", "^", " ", "Gary Bonanni (Oct 7, 2014). ", "\"One-of-a-Kind Koenigsegg Agera HH Spotted\"", ". ", "carbuzz.com", ". Retrieved ", "7 October", " 2014", ".", "\u00a0", "\n", "^ ", "a", " ", "b", " ", "About David Heinemeier Hansson", " ", "Archived", " 2011-06-02 at the ", "Wayback Machine", ".. Loudthinking.com. Retrieved on 2014-05-30.", "\n", "^", " ", "\"Archived copy\"", ". Archived from ", "the original", " on 2013-06-02", ". Retrieved ", "2013-06-23", ".", "\u00a0", "\n", "\n", "\n", "External links", "[", "edit", "]", "\n", "\n", "Loud Thinking", " - Hansson's weblog", "\n", "37signals", "\n", "Ruby on Rails", "\n", "Video of David Heinemeier Hansson presentation at Startup School", "\n", "David Heinemeier Hansson - The Pareto Principle and Stoic Philosophy", " on Developer on Fire", "\n", "David Heinemeier Hansson interview", " on the Inside the Net Podcast", "\n", "Martin Fowler and David Heinemeier Hansson interview", " on Hanselminutes Podcast", "\n", "David Heinemeier Hansson interview in Danish", " on Builder.dk Podcast", "\n", "Podcast interview with David Heinemeier Hansson", " on the Web 2.0 Show", "\n", "Ruby on Rails video", "[", "permanent dead link", "]", " David Heinemeier Hansson explains Ruby on Rails at the university of Roskilde, in 2004", "\n", "Keynote 2007 - RailsConf Europe 2007 - Berlin", "\n", "RailsConf Keynote", " on REST. July 9, 2006", "\n", "The Great Surplus - Keynote at RailsConf 2008 - Portland", "[", "permanent dead link", "]", "\n", "Living with legacy software - Keynote at RailsConf Europe 2008 - Berlin", "\n", "FLOSS Weekly podcast 79", " and its ", "transcription", "\n", "Podcast interview with David Heinemeier Hansson", " on This Developer's Life", "\n", "\n", "\n", "\n", "Sporting positions", "\n", "\n", "\n", "Preceded\u00a0by", "\n", "Jamie Campbell-Walter", "\n", "Stuart Hall", "\n", "FIA Endurance Trophy for LMGTE Am Drivers", "\n", "2014", " ", "with:", "\n", "Kristian Poulsen", "\n", "Succeeded\u00a0by", "\n", "Aleksey Basov", "\n", "Andrea Bertolini", "\nViktor Shaitar", "\n", "\n", "\n", "\n", "\n", "\n", "Authority control", "\n", "\n", "\n", "\n", "WorldCat Identities", "\n", "VIAF", ": ", "24888522", "\n", "LCCN", ": ", "no2006071728", "\n", "ISNI", ": ", "0000 0001 1609 5882", "\n", "GND", ": ", "173789617", "\n", "SELIBR", ": ", "264350", "\n", "SUDOC", ": ", "097530417", "\n", "BNF", ": ", "cb150608725", " ", "(data)", "\n", "BIBSYS", ": ", "5081149", "\n", "NDL", ": ", "01034410", "\n", "NKC", ": ", "stk2007383215", "\n", "BNE", ": ", "XX4895045", "\n", "CiNii", ": ", "DA1757643X", "\n", "\n", "\n", "\n", "\n", "\n", "\n\n\n", "\n", "\n", "\n", "\n"], "lastUpdated": " 7 January 2018, at 05:36."}, +{"title": "Dries Buytaert", "text": ["\n", "\n", "\n", "\nDries Buytaert at ", "FOSDEM", " 2008.", "\n", "\n", "\n", "Dries Buytaert", " (born 19 November 1978 in ", "Wilrijk", ", ", "Antwerp", ", ", "Belgium", ")", "[1]", " is an ", "open-source software", " ", "programmer", " notable as founder and lead developer of the ", "Drupal", " ", "CMS", ".", "[2]", "[3]", "[4]", "\n", "\n", "\n", "\n", "Contents", "\n", "\n", "\n", "1", " ", "Career", "\n", "2", " ", "References", "\n", "3", " ", "External links", "\n", "\n", "3.1", " ", "Interviews", "\n", "3.2", " ", "Talks", "\n", "\n", "\n", "\n", "\n", "\n", "Career", "[", "edit", "]", "\n", "Buytaert defended his PhD dissertation in ", "Computer Science", " on 27 January 2008", "[5]", " at ", "Ghent University", " in Belgium.", "[6]", "\n", "From 1999-2000 he was the maintainer of the ", "Linux", "-", "WLAN", " FAQ", ".", "[7]", "\n", "It was during this time that he founded the concept of Drupal. At first, Dries maintained a small news site and a web board, but it developed to attract more audience.", "[8]", "\n", "On 1 December 2007, Dries", "[9]", " announced, together with co-founder ", "Jay Batson", " the launch of a start-up called ", "Acquia", ".", "[10]", " Acquia is a commercial open-source software company providing products, services, and technical support for ", "Drupal", ". Acquia wants to be to Drupal what ", "Red Hat", " has been to ", "Linux", ".", "[11]", " In 2009, Acquia helped re-launch Whitehouse.gov on Drupal.", "[12]", "\n", "On 31 March 2008, Dries launched ", "Mollom", ", a service dedicated to stopping website spam: \"Mollom's purpose is to dramatically reduce the effort of keeping your site clean and the quality of your content high. Currently, Mollom is a spam-killing one-two punch combination of a state-of-the-art spam filter and CAPTCHA server.\" Over 59,000 websites are protected by the Mollom service,", "[13]", " including all of ", "Netlog", "'s messages.", "[14]", "\n", "In 2008, Buytaert was elected \"Young Entrepreneurs of Tech\" by ", "BusinessWeek", ".", "[15]", " He was also named to the ", "MIT", " ", "Technology Review", " ", "TR35", " as one of the top 35 innovators in the world under the age of 35.", "[16]", "[17]", "\n", "References", "[", "edit", "]", "\n", "\n", "\n", "^", " ", "Curriculum Vitae", " ", "Archived", " 21 August 2010 at the ", "Wayback Machine", ".", "\n", "^", " ", "\"History\"", ". Drupal.org", ". Retrieved ", "23 April", " 2012", ".", "\u00a0", "\n", "^", " ", "\"The Drupal core\"", ". Drupal.org. Archived from ", "the original", " on 3 May 2012", ". Retrieved ", "23 April", " 2012", ".", "\u00a0", "\n", "^", " ", "\"Revamp of MAINTAINERS.txt\"", ". Groups.drupal.org", ". Retrieved ", "23 April", " 2012", ".", "\u00a0", "\n", "^", " ", "\"Dr. Dre, Dries Buytaert\"", ". Buytaert.net", ". Retrieved ", "23 April", " 2012", ".", "\u00a0", "\n", "^", " ", "\"conferences.oreilly.com\"", ". Conferences.oreillynet.com", ". Retrieved ", "23 April", " 2012", ".", "\u00a0", "\n", "^", " ", "\"Linux-Wlan Faq (Old)\"", ". Linux-wlan.org. 6 March 2000", ". Retrieved ", "23 April", " 2012", ".", "\u00a0", "\n", "^", " ", "\"The Drop By Dries Buytaert\"", ". Eyerys. 30 December 2016.", "\u00a0", "\n", "^", " ", "\"Acquia, my Drupal startup, Dries Buytaert\"", ". Buytaert.net", ". Retrieved ", "23 April", " 2012", ".", "\u00a0", "\n", "^", " ", "\"Acquia\"", ". Acquia", ". Retrieved ", "23 April", " 2012", ".", "\u00a0", "\n", "^", " ", "\"With $30M in funding, Acquia edges closer to an IPO\"", ". Venturebeat.com. 29 November 2012", ". Retrieved ", "20 January", " 2013", ".", "\u00a0", "\n", "^", " ", "\"Whitehouse goes Drupal\"", ". Techpresident.com. 24 October 2009", ". Retrieved ", "23 April", " 2012", ".", "\u00a0", "\n", "^", " ", "\"Mollom Scorecard\"", ". Retrieved ", "27 January", " 2013", ".", "\u00a0", "\n", "^", " ", "\"Mollom filtering millions of messages for Netlog\"", ". Buytaert.net. 20 May 2009", ". Retrieved ", "23 April", " 2012", ".", "\u00a0", "\n", "^", " ", "Kharif, Olga (17 April 2008). ", "\"Young Entrepreneurs of Tech 2008\"", ". Businessweek.com", ". Retrieved ", "23 April", " 2012", ".", "\u00a0", "\n", "^", " ", "\"2008 Young Innovators Under 35\"", ". ", "Technology Review", ". 2008", ". Retrieved ", "15 August", " 2011", ".", "\u00a0", "\n", "^", " ", "Christopher Chang, 33 University of California, Berkeley. ", "\"TR35 2008 Young Innovator\"", ". Technologyreview.com", ". Retrieved ", "23 April", " 2012", ".", "\u00a0", "CS1 maint: Multiple names: authors list (", "link", ")", "\n", "\n", "\n", "External links", "[", "edit", "]", "\n", "\n", "\n", "\n", "Wikimedia Commons has media related to ", "Dries Buytaert", ".", "\n", "\n", "\n", "\n", "\n", "\n", "Wikinews", " has\u00a0:", "\n", "\n", "\n", "\n", "\n", "an ", "interview with Dries Buytaert", ".", "\n", "\n", "\n", "\n", "\n", "\n", "Personal website", "\n", "Acquia", "\n", "Mollom", "\n", "\n", "Interviews", "[", "edit", "]", "\n", "\n", "An In-Depth Interview With Dries", " Drupal Watchdog interview (February 2011)", "\n", "Drupal founder, Dries Buytaert Interview", " CMS Critic interview (January 2009)", "\n", "Video interview", " with Dries Buytaert by Noel Hidalgo in Antwerp, Belgium (26 July 2007)", "\n", "\n", "Talks", "[", "edit", "]", "\n", "\n", "DrupalCon Los Angeles 2015: Driesnote Keynote", " - Dries' talk at DrupalCon 2015 in Los Angeles, United States (May 2015)", "\n", "The State of Drupal", " - Dries' talk at ", "FOSDEM", " 2007 in Brussels, Belgium (February 2007)", "\n", "Video of talk", " delivered by Dries Buytaert titled the ", "State of Drupal", " from OSCMS conference on Yahoo campus in Sunnyvale, California (late March 2007)", "\n", "The State of Drupal", " - Dries' State of Drupal talk at Drupalcon 2007 in Barcelona, Spain (September 2007)", "\n", "\n\n\n", "\n", "\n", "\n", "\n"], "lastUpdated": " 6 January 2018, at 06:23."}, +{"title": "Ruby on Rails", "text": ["Not to be confused with ", "Ruby (programming language)", ".", "\n", "\n", "Ruby on Rails", "\n", "\n", "\n", "\n", "\n", "Original author(s)", "\n", "David Heinemeier Hansson", "\n", "\n", "\n", "Initial release", "\n", "13\u00a0December 2005", "; 12 years ago", "\u00a0(", "2005-12-13", ")", "[1]", "\n", "\n", "\n", "\n", "\n", "\n", "Stable release", "\n", "5.1.4 ", "(September\u00a07, 2017", "; 4 months ago", "\u00a0(", "2017-09-07", ")", "[2]", ")", " ", "[\u00b1]", "\n", "\n", "\n", "\n", "\n", "\n", "Repository", "\n", "\n", "\n", "\n", "https://github.com/rails/rails", "\n", "\n", "\n", "\n", "\n", "\n", "Development status", "\n", "Active", "\n", "\n", "\n", "Written in", "\n", "Ruby", "\n", "\n", "\n", "Operating system", "\n", "Cross-platform", "\n", "\n", "\n", "Size", "\n", "18.2 ", "MB", "[3]", "\n", "\n", "\n", "Type", "\n", "Web application framework", "\n", "\n", "\n", "License", "\n", "MIT License", "\n", "\n", "\n", "Website", "\n", "rubyonrails", ".org", "\n", "\n", "\n", "Ruby on Rails", ", or ", "Rails", ", is a server-side ", "web application framework", " written in ", "Ruby", " under the ", "MIT License", ". Rails is a ", "model\u2013view\u2013controller", " (MVC) framework, providing default structures for a ", "database", ", a ", "web service", ", and ", "web pages", ". It encourages and facilitates the use of ", "web standards", " such as ", "JSON", " or ", "XML", " for data transfer, and ", "HTML", ", ", "CSS", " and ", "JavaScript", " for display and user interfacing. In addition to MVC, Rails emphasizes the use of other well-known ", "software engineering", " ", "patterns", " and paradigms, including ", "convention over configuration", " (CoC), ", "don't repeat yourself", " (DRY), and the ", "active record pattern", ".", "[4]", "\n", "Ruby on Rails' emergence in the 2000s greatly influenced web app development, through innovative features such as seamless database table creations, migrations, and scaffolding of views to enable rapid application development. Ruby on Rails' influence on other web frameworks remains apparent today, with many frameworks in other languages borrowing its ideas, including ", "Django", " in ", "Python", ", ", "Laravel", " in ", "PHP", ", Phoenix in ", "Elixir", ", and ", "Sails.js", " in ", "Node.js", ".", "\n", "\n", "\n", "\n", "Contents", "\n", "\n", "\n", "1", " ", "History", "\n", "2", " ", "Technical overview", "\n", "\n", "2.1", " ", "Framework structure", "\n", "2.2", " ", "Deployment", "\n", "\n", "\n", "3", " ", "Philosophy and design", "\n", "4", " ", "Trademarks", "\n", "5", " ", "Reception", "\n", "\n", "5.1", " ", "Scalability", "\n", "5.2", " ", "Security", "\n", "\n", "\n", "6", " ", "References", "\n", "7", " ", "Bibliography", "\n", "8", " ", "External links", "\n", "\n", "\n", "\n", "History", "[", "edit", "]", "\n", "David Heinemeier Hansson", " extracted Ruby on Rails from his work on the project management tool ", "Basecamp", " at the ", "web application", " company also called ", "Basecamp", ".", "[5]", " Hansson first released Rails as open source in July 2004, but did not share ", "commit", " rights to the project until February 2005.", "[", "citation needed", "]", " In August 2006, the framework reached a milestone when ", "Apple", " announced that it would ship Ruby on Rails with ", "Mac OS X v10.5 \"Leopard\"", ",", "[6]", " which was released in October 2007.", "\n", "Rails version 2.3 was released on March 15, 2009 with major new developments in templates, engines, ", "Rack", " and nested model forms. Templates enable the developer to generate a skeleton application with custom ", "gems", " and configurations. Engines give developers the ability to reuse application pieces complete with routes, view paths and models. The Rack web server interface and Metal allow one to write optimized pieces of code that route around Action Controller.", "[7]", "\n", "On December 23, 2008, ", "Merb", ", another web application framework, was launched, and Ruby on Rails announced it would work with the Merb project to bring \"the best ideas of Merb\" into Rails 3, ending the \"unnecessary duplication\" across both communities.", "[8]", " Merb was merged with Rails as part of the Rails 3.0 release.", "[9]", "[10]", "\n", "Rails 3.1 was released on August 31, 2011, featuring Reversible Database Migrations, Asset Pipeline, Streaming, ", "jQuery", " as default ", "JavaScript", " library and newly introduced ", "CoffeeScript", " and ", "Sass", " into the stack.", "[11]", "\n", "Rails 3.2 was released on January 20, 2012 with a faster development mode and routing engine (also known as Journey engine), Automatic Query Explain and Tagged Logging.", "[12]", " Rails 3.2.x is the last version that supports Ruby 1.8.7.", "[13]", " Rails 3.2.12 supports Ruby 2.0.", "[14]", "\n", "Rails 4.0 was released on June 25, 2013, introducing Russian Doll Caching, Turbolinks, Live Streaming as well as making Active Resource, Active Record Observer and other components optional by splitting them as gems.", "[15]", "\n", "Rails 4.1 was released on April 8, 2014, introducing Spring, Variants, Enums, Mailer previews, and secrets.yml.", "[16]", "\n", "Rails 4.2 was released on December 19, 2014, introducing Active Job, asynchronous emails, Adequate Record, Web Console, and ", "foreign keys", ".", "[17]", "\n", "Rails 5.0 was released on June 30, 2016, introducing Action Cable, API mode, and Turbolinks 5.", "[18]", "\n", "Rails 5.0.0.1 was released on August 10, 2016 with Exclusive use of rails CLI over Rake and supports Ruby 2.2.2+ versions", "\n", "Rails 5.1 was released on April 27, 2017, introducing ", "JavaScript", " integration changes (management of JavaScript dependencies from NPM via Yarn, optional compilation of JavaScript using ", "Webpack", ", and a rewrite of Rails UJS to use vanilla JavaScript instead of depending on jQuery), system tests using ", "Capybara", ", encrypted secrets, parameterized mailers, direct & resolved routes, and a unified form_with helper replacing the form_tag/form_for helpers.", "[19]", "\n", "\n", "Version history", "\n", "\n", "Version", "\n", "Date", "\n", "Notes", "\n", "\n", "\n", "Old version, no longer supported:", " 1.0", "[20]", "\n", "000000002005-12-13-0000", "December 13, 2005", "\n", "\n", "\n", "\n", "Old version, no longer supported:", " 1.2", "[21]", "\n", "000000002007-01-19-0000", "January 19, 2007", "\n", "\n", "\n", "\n", "Old version, no longer supported:", " 2.0", "[22]", "\n", "000000002007-12-07-0000", "December 7, 2007", "\n", "\n", "\n", "\n", "Old version, no longer supported:", " 2.1", "[23]", "\n", "000000002008-06-01-0000", "June 1, 2008", "\n", "\n", "\n", "\n", "Old version, no longer supported:", " 2.2", "[24]", "\n", "000000002008-11-21-0000", "November 21, 2008", "\n", "\n", "\n", "\n", "Old version, no longer supported:", " 2.3", "[25]", "\n", "000000002009-03-16-0000", "March 16, 2009", "\n", "\n", "\n", "\n", "Old version, no longer supported:", " 3.0", "[26]", "\n", "000000002010-08-29-0000", "August 29, 2010", "\n", "\n", "\n", "\n", "Old version, no longer supported:", " 3.1", "[27]", "\n", "000000002011-08-31-0000", "August 31, 2011", "\n", "\n", "\n", "\n", "Old version, no longer supported:", " 3.2", "[28]", "\n", "000000002012-01-20-0000", "January 20, 2012", "\n", "\n", "\n", "\n", "Old version, no longer supported:", " 4.0", "[29]", "\n", "000000002013-06-25-0000", "June 25, 2013", "\n", "\n", "\n", "\n", "Old version, no longer supported:", " 4.1", "[16]", "\n", "000000002014-04-08-0000", "April 8, 2014", "\n", "\n", "\n", "\n", "Old version, no longer supported:", " 4.2", "[17]", "\n", "000000002014-12-19-0000", "December 19, 2014", "\n", "\n", "\n", "\n", "Older version, yet still supported:", " 5.0", "[18]", "\n", "000000002016-06-30-0000", "June 30, 2016", "\n", "\n", "\n", "\n", "Current stable version:", " ", "5.1", "[19]", "\n", "000000002017-05-10-0000", "May 10, 2017", "\n", "\n", "\n", "\n", "Latest preview version of a future release:", " 5.2", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "Legend:", "\n", "Old version", "\n", "Older version, still supported", "\n", "Latest version", "\n", "Latest preview version", "\n", "Future release", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "Technical overview", "[", "edit", "]", "\n", "Like many web frameworks, Ruby on Rails uses the ", "model\u2013view\u2013controller", " (MVC) pattern to organize application programming.", "\n", "In a default configuration, a ", "model", " in the Ruby on Rails framework maps to a table in a database and to a Ruby file. For example, a model class ", "User", " will usually be defined in the file 'user.rb' in the app/models directory, and linked to the table 'users' in the database. While developers are free to ignore this convention and choose differing names for their models, files, and database table, this is not common practice and is usually discouraged in accordance with the \"convention-over-configuration\" philosophy.", "\n", "A ", "controller", " is a server-side component of Rails that responds to external requests from the web server to the application, by determining which view file to render. The controller may also have to query one or more models for information and pass these on to the view. For example, in an airline reservation system, a controller implementing a flight-search function would need to query a model representing individual flights to find flights matching the search, and might also need to query models representing airports and airlines to find related secondary data. The controller might then pass some subset of the flight data to the corresponding view, which would contain a mixture of static HTML and logic that use the flight data to create an HTML document containing a table with one row per flight. A controller may provide one or more actions. In Ruby on Rails, an action is typically a basic unit that describes how to respond to a specific external web-browser request. Also, note that the controller/action will be accessible for external web requests only if a corresponding route is mapped to it. Rails encourages developers to use ", "RESTful", " routes, which include actions such as create, new, edit, update, destroy, show, and index. These mappings of incoming requests/routes to controller actions can be easily set up in the routes.rb configuration file.", "\n", "A ", "view", " in the default configuration of Rails is an ", "erb", " file, which is evaluated and converted to ", "HTML", " at run-time. Alternatively, many other templating systems can be used for views.", "\n", "Ruby on Rails includes tools that make common development tasks easier \"out-of-the-box\", such as ", "scaffolding", " that can automatically construct some of the models and views needed for a basic ", "website", ".", "[30]", " Also included are ", "WEBrick", ", a simple Ruby web server that is distributed with Ruby, and ", "Rake", ", a build system, distributed as a ", "gem", ". Together with Ruby on Rails, these tools provide a basic development environment.", "\n", "Ruby on Rails is most commonly not connected to the Internet directly, but through some front-end ", "web server", ". ", "Mongrel", " was generally preferred", "[", "by whom?", "]", " over WEBrick in the early days,", "[", "citation needed", "]", " but it can also run on ", "Lighttpd", ", ", "Apache", ", ", "Cherokee", ", ", "Hiawatha", ", ", "Nginx", " (either as a module \u2013 ", "Phusion Passenger", " for example \u2013 or via ", "CGI", ", ", "FastCGI", " or ", "mod_ruby", "), and many others. From 2008 onward, Passenger replaced Mongrel as the most-used web server for Ruby on Rails.", "[31]", " Ruby is also supported natively on the ", "IBM i", ".", "[32]", "\n", "Ruby on Rails is also noteworthy for its extensive use of the ", "JavaScript", " libraries, ", "Prototype", " and ", "Script.aculo.us", ", for scripting ", "Ajax", " actions.", "[33]", " Ruby on Rails initially utilized lightweight ", "SOAP", " for web services; this was later replaced by RESTful ", "web services", ". Ruby on Rails 3.0 uses a technique called ", "Unobtrusive JavaScript", " to separate the functionality (or logic) from the structure of the web page. jQuery is fully supported as a replacement for Prototype and is the default JavaScript library in Rails 3.1, reflecting an industry-wide move towards jQuery. Additionally, ", "CoffeeScript", " was introduced in Rails 3.1 as the default JavaScript language.", "\n", "Since version 2.0, Ruby on Rails offers both HTML and XML as standard output formats. The latter is the facility for RESTful web services.", "\n", "Rails 3.1 introduced ", "Sass", " as standard ", "CSS", " templating.", "\n", "By default, the server uses ", "Embedded Ruby", " in the HTML views, with files having an html.erb extension. Rails supports swapping-in alternative templating languages, such as ", "HAML", " and ", "Mustache", ".", "\n", "Ruby on Rails 3.0 has been designed to work with Ruby 1.8.7, Ruby 1.9.2, and ", "JRuby", " 1.5.2+; earlier versions are not supported.", "[34]", "\n", "Ruby on Rails 3.2 is the last series of releases that support Ruby 1.8.7.", "\n", "Framework structure", "[", "edit", "]", "\n", "Ruby on Rails is separated into various packages, namely ", "ActiveRecord", " (an ", "object-relational mapping", " system for database access), Active Resource (provides web services), Action Pack, Active Support and Action Mailer. Prior to version 2.0, Ruby on Rails also included the Action Web Service package that is now replaced by Active Resource. Apart from standard packages, developers can make ", "plugins", " to extend existing packages. Earlier Rails supported plugins within their own custom framework; version 3.2 deprecates these in favor of standard Ruby \"gems\".", "[35]", "\n", "Deployment", "[", "edit", "]", "\n", "Ruby on Rails is often installed using ", "RubyGems", ", a package manager", "[36]", " which is included with current versions of Ruby. Many free ", "Unix-like systems", " also support installation of Ruby on Rails and its dependencies through their native ", "package management system", ".", "\n", "Ruby on Rails is typically deployed with a database server such as ", "MySQL", " or ", "PostgreSQL", ", and a web server such as ", "Apache", " running the ", "Phusion Passenger", " module.", "\n", "Philosophy and design", "[", "edit", "]", "\n", "Ruby on Rails is intended to emphasize ", "Convention over Configuration", " (CoC), and the ", "Don't Repeat Yourself", " (DRY) principle.", "\n", "\"Convention over Configuration\" means a developer only needs to specify unconventional aspects of the application. For example, if there is a class ", "Sales", " in the model, the corresponding table in the database is called ", "sales", " by default. It is only if one deviates from this convention, such as calling the table \"products sold\", that the developer needs to write code regarding these names. Generally, Ruby on Rails conventions lead to less code and less repetition.", "[37]", "\n", "\"Don't repeat yourself\" means that information is located in a single, unambiguous place. For example, using the ", "ActiveRecord", " module of Rails, the developer does not need to specify database column names in class definitions. Instead, Ruby on Rails can retrieve this information from the database based on the class name.", "\n", "\"Fat models, skinny controllers\" means that most of the application logic should be placed within the model while leaving the controller as light as possible.", "\n", "Trademarks", "[", "edit", "]", "\n", "In March 2007, ", "David Heinemeier Hansson", " filed three Ruby on Rails-related ", "trademark", " applications to the ", "USPTO", ". These applications regard the phrase \"RUBY ON RAILS\",", "[38]", " the word \"RAILS\",", "[39]", " and the official Rails logo.", "[40]", " As a consequence, in the summer of 2007, Hansson denied permission to ", "Apress", " to use the Ruby on Rails logo on the cover of a new Ruby on Rails book written by some authoritative community members. The episode gave rise to a polite protest in the Ruby on Rails community.", "[41]", "[42]", " In response to this criticism, Hansson replied:", "\n", "\n", "I only grant promotional use [of the Rails logo] for products I'm directly involved with. Such as books that I've been part of the development process for or conferences where I have a say in the execution. I would most definitely seek to enforce all the trademarks of Rails.", "[41]", "\n", "\n", "Reception", "[", "edit", "]", "\n", "Scalability", "[", "edit", "]", "\n", "Rails running on ", "Matz's Ruby Interpreter", " (the ", "de facto", " reference interpreter for Ruby) had been criticized for issues with scalability.", "[43]", " These critics often mentioned various ", "Twitter", " outages in 2007 and 2008, which spurred Twitter's partial transition to ", "Scala", " (which runs on the ", "Java Virtual Machine", ") for their ", "queueing system", " and other ", "middleware", ".", "[44]", "[45]", " The user interface aspects of the site continued to run Ruby on Rails", "[46]", " until 2011 when it was replaced due to concerns over performance", "[47]", "\n", "In 2011, ", "Gartner Research", " noted that despite criticisms and comparisons to Java, many high-profile consumer web firms are using Ruby on Rails to build scalable web applications. Some of the largest sites running Ruby on Rails include ", "Airbnb", ", ", "GitHub", ", ", "Scribd", ", ", "Shopify", ", ", "Hulu", ", and ", "Basecamp", ".", "[48]", " As of January 2016, it is estimated that more than 1.2 million web sites are running Ruby on Rails.", "[49]", "[50]", "\n", "Security", "[", "edit", "]", "\n", "In March 2012, security researcher Egor Homakov discovered a \"mass assignment\" vulnerability that allowed certain Rails applications to be remotely exploited, and demonstrated it by non-maliciously hacking ", "GitHub", " after his earlier attempts at responsible disclosure were dismissed.", "[51]", "\n", "On September 24, 2013, a session cookie persistence security flaw was reported in Ruby on Rails. In a default configuration, the entire session hash is stored within a session cookie known as ", "CookieStore", ", allowing any authenticated session possessing the session cookie to log in as the target user at any time in the future. As a workaround, administrators are advised to configure cookies to be stored on the server using mechanisms such as ", "ActiveRecordStore", ".", "[52]", "\n", "Researchers Daniel Jackson and Joseph Near developed a data debugger they called \"Space\" that can analyze the data access of a Rails program and determine if the program properly adheres to rules regarding access restrictions. On April 15, 2016, Near reported that an analysis of 50 popular Web applications using Space uncovered 23 previously unknown security flaws.", "[53]", "\n", "References", "[", "edit", "]", "\n", "\n", "\n", "^", " ", "David. ", "\"Rails 1.0: Party like it's one oh oh!\"", ". ", "Ruby on Rails", ". Retrieved ", "2017-03-01", ".", "\u00a0", "\n", "^", " ", "matthewd. ", "\"Rails 5.1.4 and 5.0.6 released\"", ". ", "Ruby on Rails", ". Retrieved ", "2017-09-09", ".", "\u00a0", "\n", "^", " ", "\"Release v5.1.1 \u00b7 rails/rails \u00b7 GitHub\"", ". Retrieved ", "25 June", " 2017", ".", "\u00a0", "\n", "^", " ", "\"Getting Started with Rails: What Is Rails?\"", ". ", "Ruby on Rails Guides", ". Retrieved ", "10 August", " 2014", ".", "\u00a0", "\n", "^", " ", "Grimmer, Lenz\u2212\u2212 (February 2006). ", "\"Interview with David Heinemeier Hansson from Ruby on Rails\"", ". ", "MySQL AB", ". Archived from ", "the original", " on February 25, 2013", ". Retrieved ", "2008-06-08", ".", "\u00a0", "\n", "^", " ", "Hansson, David (August 7, 2006). ", "\"Ruby on Rails will ship with OS X 10.5 (Leopard)\"", ". Retrieved ", "2008-06-08", ".", "\u00a0", "\n", "^", " ", "Hansson, David (March 16, 2009). ", "\"Rails 2.3: Templates, Engines, Rack, Metal, much more!\"", ".", "\u00a0", "\n", "^", " ", "\"The day Merb joined Rails\"", ". 2008-12-27. Archived from ", "the original", " on 2013-02-09.", "\u00a0", "\n", "^", " ", "\"Ruby on Rails 3.0 Release Notes \u2014 Ruby on Rails Guides\"", ". ", "Edgeguides.rubyonrails.org", ". Retrieved ", "2017-05-24", ".", "\u00a0", "\n", "^", " ", "\"Ruby on Rails 3.0 goes modular\"", ". sdtimes.com. 2010-02-10", ". Retrieved ", "2010-08-06", ".", "\u00a0", "\n", "^", " ", "\"Ruby on Rails 3.1 Release Notes\"", ". 2012-09-01.", "\u00a0", "\n", "^", " ", "\"Ruby on Rails 3.2 Release Notes\"", ". 2012-09-01.", "\u00a0", "\n", "^", " ", "\"Rails/master is now 4.0.0.beta\"", ". 2012-09-01.", "\u00a0", "\n", "^", " ", "Rails 3.2.x is now compatible with Ruby 2.0.0 by sikachu \u00b7 Pull Request #9406 \u00b7 rails/rails \u00b7 GitHub", ". Github.com. Retrieved on 2014-05-30.", "\n", "^", " ", "\"Rails 4.0: Final version released! | Riding Rails\"", ". ", "Weblog.rubyonrails.org", ". 2013-06-25", ". Retrieved ", "2017-05-24", ".", "\u00a0", "\n", "^ ", "a", " ", "b", " ", "\"Rails 4.1.0: Spring, Variants, Enums, Mailer previews, secrets.yml\"", ". ", "weblog.rubyonrails.org", ".", "\u00a0", "\n", "^ ", "a", " ", "b", " ", "\"Rails 4.2: Active Job, Asynchronous Mails, Adequate Record, Web Console, Foreign Keys\"", ". ", "Ruby on Rails", ". Retrieved ", "5 Dec", " 2015", ".", "\u00a0", "\n", "^ ", "a", " ", "b", " ", "\"Rails 5.0: Action Cable, API mode, and so much more\"", ". ", "Ruby on Rails", ". Retrieved ", "19 Nov", " 2016", ".", "\u00a0", "\n", "^ ", "a", " ", "b", " ", "\"Rails 5.1: Loving JavaScript, System Tests, Encrypted Secrets, and more\"", ". ", "Ruby on Rails", ". Retrieved ", "10 May", " 2017", ".", "\u00a0", "\n", "^", " ", "\"Rails 1.0: Party like it's one oh oh!\"", ". Riding Rails. Retrieved June 9, 2010.", "\n", "^", " ", "\"Rails 1.2: REST admiration, HTTP lovefest, and UTF-8 celebrations\"", ". Riding Rails. Retrieved June 9, 2010.", "\n", "^", " ", "\"Rails 2.0: It's done!\"", ". Riding Rails. Retrieved June 9, 2010.", "\n", "^", " ", "Rails 2.1: Time zones, dirty, caching, gem dependencies, caching, etc", ". Riding Rails. Retrieved June 9, 2010.", "\n", "^", " ", "\"Rails 2.2: i18n, HTTP validators, thread safety, JRuby/1.9 compatibility, docs\"", ". Riding Rails. Retrieved June 9, 2010.", "\n", "^", " ", "\"Rails 2.3: Templates, Engines, Rack, Metal, much more!\"", ". Riding Rails. Retrieved June 9, 2010.", "\n", "^", " ", "\"Rails 3.0: It's ready!\"", ". Riding Rails. Retrieved August 30, 2010.", "\n", "^", " ", "\"bumping to 3.1.0\"", ". ", "Github.com", ".", "\u00a0", "\n", "^", " ", "\"Preparing for 3.2.0 release\"", ". ", "Github.com", ".", "\u00a0", "\n", "^", " ", "\"Rails 4 in 30", "'", "\"", ". ", "blog.wyeworks.com", ".", "\u00a0", "\n", "^", " ", "Sean Lynch (2007-12-15). ", "\"fairleads: Rails 2.0 and Scaffolding Step by Step\"", ". ", "Fairleads.blogspot.com", ". Retrieved ", "2017-05-24", ".", "\u00a0", "\n", "^", " ", "\"Archived copy\"", ". Archived from ", "the original", " on 2009-07-07", ". Retrieved ", "2012-12-03", ".", "\u00a0", "\n", "^", " ", "Maxcer, Chris. ", "\"PowerRuby Brings Enterprise Ruby on Rails Support to IBM i\"", ". iPro Developer. Archived from ", "the original", " on 9 October 2013", ". Retrieved ", "9 May", " 2014", ".", "\u00a0", "\n", "^", " ", "Js_Escape_Map. ", "\"ActionView::Helpers::JavaScriptHelper\"", ". ", "Api.rubyonrails.org", ". Retrieved ", "2017-05-24", ".", "\u00a0", "\n", "^", " ", "\"Rails 3.0: It's ready!\"", ". rubyonrails.org", ". Retrieved ", "2010-08-30", ". ", "Rails 3.0 has been designed to work with Ruby 1.8.7, Ruby 1.9.2, and JRuby 1.5.2+.", "\u00a0", "\n", "^", " ", "\"Rails 3.2.0.rc2 has been released!\"", ". ", "Weblog.rubyonrails.org", ". 2012-09-01.", "\u00a0", "\n", "^", " ", "\"Ruby on Rails: Download\"", ". RubyonRails.org. Archived from ", "the original", " on 2009-12-12.", "\u00a0", "\n", "^", " ", "\"Getting Started with Rails\"", ". Rubyonrails.org", ". Retrieved ", "2014-03-10", ".", "\u00a0", "\n", "^", " ", "\"", "\"", "Ruby on Rails\" Trademark Status\"", ". ", "USPTO", ". Retrieved ", "2007-08-01", ".", "\u00a0", "\n", "^", " ", "\"", "\"", "Rails\" Trademark Status\"", ". ", "USPTO", ". Retrieved ", "2007-08-01", ".", "\u00a0", "\n", "^", " ", "\"Rails Logo Trademark Status\"", ". ", "USPTO", ". Retrieved ", "2007-08-01", ".", "\u00a0", "\n", "^ ", "a", " ", "b", " ", "Forde, Pete (2007-07-23). ", "\"Beginning Rails: From Novice to Professional\"", ". Archived from ", "the original", " on August 5, 2007", ". Retrieved ", "2007-08-01", ".", "\u00a0", "\n", "^", " ", "Cooper, Peter (2007-07-24). ", "\"David Heinemeier Hansson says No to Use of Rails Logo\"", ". Retrieved ", "2007-08-01", ".", "\u00a0", "\n", "^", " ", "\"5 Question Interview with Twitter Developer Alex Payne\"", ". radicalbehavior.com. 2007-03-29. Archived from ", "the original", " on April 23, 2009", ". Retrieved ", "2014-11-04", ". ", "By various metrics Twitter is the biggest Rails site on the net right now. Running on Rails has forced us to deal with scaling issues - issues that any growing site eventually contends with \u2013 far sooner than I think we would on another framework.", "\u00a0", "\n", "^", " ", "Steve Jenson; Alex Payne & Robey Pointer interview (2009-04-03). ", "\"Twitter on Scala\"", ". artima.com", ". Retrieved ", "2009-07-18", ". ", "We had a Ruby-based queuing system that we used for communicating between the Rails front ends and the daemons, and we ended up replacing that with one written in Scala. The Ruby one actually worked pretty decently in a normal steady state, but the startup time and the crash behavior were undesirable.", "\u00a0", "\n", "^", " ", "\"Twitter jilts Ruby for Scala\"", ". theregister.co.uk. 2009-04-01", ". Retrieved ", "2009-07-18", ". ", "By the end of this year, Payne said, Twitter hopes to have its entire middleware infrastructure and its APIs ported to the new language. Ruby will remain, but only on the front end. \"We're still happy with Rails for building user facing features... performance-wise, it's fine for people clicking around web pages. It's the heavy lifting, asynchronous processing type of stuff that we've moved away from.\"", "\u00a0", "\n", "^", " ", "ryan king (2009-09-25). ", "\"Twitter on Ruby\"", ". evan weaver", ". Retrieved ", "2009-09-29", ". ", "We use Scala for a few things at Twitter, but the majority of the site is Ruby.", "\u00a0", "\n", "^", " ", "\"Twitter Search is Now 3x Faster\"", ". Twitter", ". Retrieved ", "June 6,", " 2014", ".", "\u00a0", "\n", "^", " ", "\"Here's Why Ruby On Rails Is Hot\"", ". Business Insider. Archived from ", "the original", " on December 21, 2011", ". Retrieved ", "February 10,", " 2012", ".", "\u00a0", "\n", "^", " ", "\"Ruby on Rails Usage Statistics\"", ". ", "trends.builtwith.com", ". Retrieved ", "2016-01-04", ".", "\u00a0", "\n", "^", " ", "\"Ruby on Rails Token Usage Statistics\"", ". ", "trends.builtwith.com", ". Retrieved ", "2016-01-04", ".", "\u00a0", "\n", "^", " ", "Protalinski, Emil. ", "\"How GitHub handled getting hacked\"", ". ", "Zdnet.com", ". Retrieved ", "2017-05-24", ".", "\u00a0", "\n", "^", " ", "Brook, Chris (2013-09-25). ", "\"Security Issue in Ruby on Rails Could Expose Cookies\"", ". ", "Threat Post", ". The Kaspersky Lab Security News Service", ". Retrieved ", "2014-06-04", ".", "\u00a0", "\n", "^", " ", "\"Patching up Web applications\"", ". ", "MIT News", ". Retrieved ", "2016-04-21", ".", "\u00a0", "\n", "\n", "\n", "Bibliography", "[", "edit", "]", "\n", "\n", "\n", "Ruby, Sam; Thomas, Dave; Hansson, David (March 28, 2009). ", "\"Agile Web Development with Rails\"", " (Third ed.). ", "Pragmatic Bookshelf", ": 850. ", "ISBN", "\u00a0", "1-934356-16-6", ".", "\u00a0", "\n", "Laurent, Simon St.; Dumbill, Edd (November 28, 2008). ", "\"Learning Rails\"", " (First ed.). ", "O'Reilly Media", ": 442. ", "ISBN", "\u00a0", "0-596-51877-3", ".", "\u00a0", "\n", "Lenz, Patrick (May 1, 2008). ", "\"Simply Rails 2\"", " (Second ed.). ", "SitePoint", ": 450. ", "ISBN", "\u00a0", "0-9804552-0-0", ".", "\u00a0", "\n", "Tate, Bruce; Hibbs, Curt (August 22, 2006). ", "\"Ruby on Rails: Up and Running\"", " (First ed.). ", "O'Reilly Media", ": 182. ", "ISBN", "\u00a0", "0-596-10132-5", ".", "\u00a0", "\n", "Holzner Ph.D., Steve (November 29, 2006). ", "\"Beginning Ruby on Rails\"", " (First ed.). ", "Wrox", ": 380. ", "ISBN", "\u00a0", "0-470-06915-5", ".", "\u00a0", "\n", "Allan Hardy, Jeffrey; Carneiro Jr, Cloves; Catlin, Hampton (July 20, 2007). ", "\"Beginning Ruby on Rails E-Commerce: From Novice to Professional\"", " (First ed.). ", "Wrox", ": 361. ", "ISBN", "\u00a0", "1-59059-686-2", ".", "\u00a0", "\n", "Clark, Mike (May 15, 2008). ", "\"Advanced Rails Recipes\"", " (First ed.). Pragmatic Bookshelf: 464. ", "ISBN", "\u00a0", "0-9787392-2-1", ".", "\u00a0", "\n", "\n", "\n", "External links", "[", "edit", "]", "\n", "\n", "\n", "\n", "Wikibooks has more on the topic of: ", "Ruby on Rails", "\n", "\n", "\n", "\n", "Official website", "\n", "The Rails Tutorial", " \u2013 The Ruby on Rails Tutorial book and screencast series teach you how to develop and deploy Ruby on Rails apps", "\n", "Rails source code", "\n", "Rails guides", "\n", "Rails API", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "v", "\n", "t", "\n", "e", "\n", "\n", "\n", "Ruby programming language", "\n", "\n", "\n", "\n", "Implementations", "\n", "\n", "\n", "\n", "\n", "Active", "\n", "\n", "\n", "\n", "Ruby MRI", " / ", "YARV", "\n", "mruby", "\n", "JRuby", "\n", "Rubinius", "\n", "MagLev", "\n", "RubyMotion", "\n", "\n", "\n", "\n", "\n", "\n", "Discontinued", "\n", "\n", "\n", "\n", "MacRuby", "\n", "IronRuby", "\n", "XRuby", "\n", "RubyJS", "\n", "HotRuby", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "IDE", "\n", "\n", "\n", "\n", "Komodo", "\n", "NetBeans", "\n", "RadRails", "\n", "RubyMine", "\n", "\n", "\n", "\n", "\n", "\n", "Applications", "\n", "\n", "\n", "\n", "Capistrano", "\n", "Chef", "\n", "Hackety Hack", "\n", "Homebrew", "\n", "Interactive Ruby Shell", "\n", "Pry", "\n", "Puppet", "\n", "Rake", "\n", "Redmine", "\n", "RSpec", "\n", "RubyGems", "\n", "RVM", "\n", "\n", "\n", "\n", "\n", "\n", "Libraries and frameworks", "\n", "\n", "\n", "\n", "Adhearsion", "\n", "Camping", "\n", "eRuby", " (RHTML)", "\n", "Merb", "\n", "Padrino", "\n", "RubyCocoa", "\n", "Ruby on Rails", "\n", "Shoes", "\n", "Sinatra", "\n", "QtRuby", "\n", "\n", "\n", "\n", "\n", "\n", "Server software", "\n", "\n", "\n", "\n", "mod_ruby", "\n", "Mongrel", "\n", "Phusion Passenger", " (mod_rails/mod_rack)", "\n", "Rack", "\n", "WEBrick", "\n", "\n", "\n", "\n", "\n", "\n", "People", "\n", "\n", "\n", "\n", "Yukihiro Matsumoto", "\n", "David Heinemeier Hansson", "\n", "why the lucky stiff", "\n", "\n", "\n", "\n", "\n", "\n", "Other", "\n", "\n", "\n", "\n", "Document format", "\n", "why's (poignant) Guide to Ruby", "\n", "Ruby Central", "\n", "RubyKaigi", "\n", "RubyForge", "\n", "Ruby License", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", " ", "Category", "\n", " ", "Commons", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "v", "\n", "t", "\n", "e", "\n", "\n", "\n", "Web frameworks", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "Comparison", "\n", "\n", "\n", "\n", "\n", "\n", "C++", "\n", "\n", "\n", "\n", "CppCMS", "\n", "Wt", "\n", "\n", "\n", "\n", "\n", "\n", "CLI", "\n", "\n", "\n", "\n", "ASP.NET", "\n", "\n", "Core", "\n", "AJAX", "\n", "Dynamic Data", "\n", "MVC", "\n", "Razor", "\n", "Web Forms", "\n", "\n", "\n", "DNN", "\n", "BFC", "\n", "MonoRail", "\n", "OpenRasta", "\n", "Umbraco", "\n", "\n", "\n", "\n", "\n", "\n", "ColdFusion", "\n", "\n", "\n", "\n", "CFWheels", "\n", "ColdBox Platform", "\n", "ColdSpring", "\n", "Fusebox", "\n", "Mach-II", "\n", "Model-Glue", "\n", "\n", "\n", "\n", "\n", "\n", "Common Lisp", "\n", "\n", "\n", "\n", "Caveman2", "\n", "CL-HTTP", "\n", "UnCommon Web", "\n", "Weblocks", "\n", "\n", "\n", "\n", "\n", "\n", "Haskell", "\n", "\n", "\n", "\n", "Happstack", "\n", "Yesod", "\n", "Snap", "\n", "\n", "\n", "\n", "\n", "\n", "Java", "\n", "\n", "\n", "\n", "AppFuse", "\n", "Flexive", "\n", "Grails", "\n", "GWT", "\n", "ICEfaces", "\n", "ItsNat", "\n", "JavaServer Faces", "\n", "JHipster", "\n", "Jspx", "\n", "JWt", "\n", "OpenXava", "\n", "Play", "\n", "Reasonable Server Faces", "\n", "Remote Application Platform", "\n", "RIFE", "\n", "Seam", "\n", "Sling", "\n", "Spring", "\n", "Stripes", "\n", "Struts", "\n", "Tapestry", "\n", "Vaadin", "\n", "Vert.x", "\n", "WebWork", "\n", "Wicket", "\n", "WaveMaker", "\n", "ZK", "\n", "\n", "\n", "\n", "\n", "\n", "JavaScript", "\n", "\n", "\n", "\n", "Ample SDK", "\n", "Angular", "/", "AngularJS", "\n", "Backbone.js", "\n", "Chaplin.js", "\n", "Closure", "\n", "Dojo Toolkit", "\n", "Ember.js", "\n", "Ext JS", "\n", "jQuery", "\n", "Meteor", "\n", "MooTools", "\n", "Node.js", "\n", "OpenUI5", "\n", "Prototype", "\n", "React", "\n", "Rico", "\n", "script.aculo.us", "\n", "Sencha Touch", "\n", "SproutCore", "\n", "Wakanda", "\n", "\n", "\n", "\n", "\n", "\n", "Perl", "\n", "\n", "\n", "\n", "Catalyst", "\n", "Dancer", "\n", "Mason", "\n", "Maypole", "\n", "Mojolicious", "\n", "WebGUI", "\n", "\n", "\n", "\n", "\n", "\n", "PHP", "\n", "\n", "\n", "\n", "CakePHP", "\n", "CodeIgniter", "\n", "Drupal", "\n", "Fat-Free", "\n", "FuelPHP", "\n", "Flow", "\n", "Gyroscope", "\n", "Horde", "\n", "Kohana", "\n", "Laravel", "\n", "Lithium", "\n", "Midgard", "\n", "MODX", "\n", "Nette", "\n", "Phalcon", "\n", "Pop PHP", "\n", "PRADO", "\n", "ProcessWire", "\n", "Qcodo", "\n", "Silex", "\n", "SilverStripe", "\n", "Symfony", "\n", "TYPO3", "\n", "Xaraya", "\n", "XOOPS", "\n", "Yii", "\n", "Zend Framework", "\n", "\n", "\n", "\n", "\n", "\n", "Python", "\n", "\n", "\n", "\n", "BlueBream", "\n", "CherryPy", "\n", "Django", "\n", "Flask", "\n", "Grok", "\n", "Nevow", "\n", "Pyjs", "\n", "Pylons", "\n", "Pyramid", "\n", "Quixote", "\n", "TACTIC", "\n", "Tornado", "\n", "TurboGears", "\n", "web2py", "\n", "Webware", "\n", "Zope 2", "\n", "\n", "\n", "\n", "\n", "\n", "Ruby", "\n", "\n", "\n", "\n", "Camping", "\n", "Merb", "\n", "Padrino", "\n", "Ruby on Rails", "\n", "Sinatra", "\n", "\n", "\n", "\n", "\n", "\n", "Scala", "\n", "\n", "\n", "\n", "Lift", "\n", "Play", "\n", "Scalatra", "\n", "\n", "\n", "\n", "\n", "\n", "Smalltalk", "\n", "\n", "\n", "\n", "AIDA/Web", "\n", "Seaside", "\n", "\n", "\n", "\n", "\n", "\n", "Other languages", "\n", "\n", "\n", "\n", "Vibe.d", " (", "D", ")", "\n", "Application Express", " (", "PL/SQL", ")", "\n", "Grails", " (", "Groovy", ")", "\n", "Kepler", " (", "Lua", ")", "\n", "Rocket", " (", "Rust", ")", "\n", "OpenACS", " (", "Tcl", ")", "\n", "Phoenix", " (", "Elixir", ")", "\n", "SproutCore", " (", "JavaScript", "-", "Ruby", ")", "\n", "Yaws", " (", "Erlang", ")", "\n", "\n", "\n", "\n", "\n", "\n", "\n\n\n", "\n", "\n", "\n", "\n"], "lastUpdated": " 29 December 2017, at 03:58."}, +{"title": "Ethereum", "text": ["\n", "\n", "Ethereum", "\n", "\n", "\n", "\n", "The Ethereum Project's logo", "\n", "\n", "\n", "\n", "Denominations", "\n", "\n", "\n", "Symbol", "\n", "\u039e", "\n", "\n", "\n", "Ticker symbol", "\n", "ETH", "\n", "\n", "\n", "\u2002", "\n", "Ether", "\n", "\n", "\n", "Development", "\n", "\n", "\n", "Original author(s)", "\n", "Vitalik Buterin, ", "Ethereum Foundation", "\n", "\n", "\n", "White paper", "\n", "[2]", "\n", "\n", "\n", "Implementation(s)", "\n", "GEth, Parity", "\n", "\n", "\n", "Initial release", "\n", "30\u00a0July 2015 ", "(2 years ago)", "\u00a0(", "2015-07-30", ")", "\n", "\n", "\n", "Written in", "\n", "C++", ", ", "Go", ", ", "Rust", "\n", "\n", "\n", "Operating System", "\n", "Clients available for ", "Linux", ", ", "Windows", ", ", "macOS", ", ", "POSIX", ", ", "Raspbian", "\n", "\n", "\n", "License", "\n", "GPLv3", ", ", "LGPLv", "3, ", "MIT", "[1]", "[2]", "\n", "\n", "\n", "Website", "\n", "ethereum", ".org", "\n", "\n", "\n", "Ledger", "\n", "\n", "\n", "Timestamping scheme", "\n", "Proof-of-work", "\n", "\n", "\n", "Hash function", "\n", "Ethash", "\n", "\n", "\n", "Block explorer", "\n", "ethstats", ".net", "\n", "\n", "\n", "Circulating supply", "\n", "\u039e96,939,025 (as of 12 January 2018", "[update]", ")", "\n", "\n", "\n", "Valuation", "\n", "\n", "\n", "Exchange rate", "\n", " ", "US$", "1,263.35\u00a0thousand", " (as of 12 January 2018", "[update]", ")", "\n", "\n", "\n", "Market cap", "\n", " ", "US$122,4\u00a0billion", " (as of 12 January 2018", "[update]", ")", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "Ethereum", " is an ", "open-source", ", public, ", "blockchain", "-based ", "distributed computing", " platform featuring ", "smart contract", " (scripting) functionality.", "[3]", " It provides a decentralized ", "Turing-complete", " ", "virtual machine", ", the Ethereum Virtual Machine (EVM), which can execute scripts using an international network of public nodes. Ethereum also provides a ", "cryptocurrency", " token called \"ether\", which can be transferred between accounts and used to compensate participant nodes for computations performed.", "[4]", " \"Gas\", an internal transaction pricing mechanism, is used to mitigate ", "spam", " and allocate resources on the network.", "[3]", "[5]", " Colloquially, ", "Ethereum", " also refers to a ", "cryptocurrency", " associated with the Ethereum platform, although the technically correct term for the currency is ", "Ether", ".", "\n", "Ethereum was proposed in late 2013 by ", "Vitalik Buterin", ", a ", "cryptocurrency", " researcher and programmer. Development was funded by an online ", "crowdsale", " that took place between July and August 2014. ", "[6]", " The system went live on 30 July 2015, with 11.9\u00a0million coins \"premined\" for the crowdsale.", "[7]", " This accounts for approximately 13 percent of the total circulating supply.", "\n", "In 2016, as a result of the collapse of ", "The DAO", " project, Ethereum was split into two separate blockchains \u2013 the new separate version became Ethereum (ETH), and the original continued as ", "Ethereum Classic", " (ETC).", "[8]", "[9]", "[10]", " The value of the Ethereum currency grew over 13,000 percent in 2017.", "[11]", "\n", "\n", "\n", "\n", "Contents", "\n", "\n", "\n", "1", " ", "Etymology", "\n", "2", " ", "History", "\n", "\n", "2.1", " ", "Milestones", "\n", "2.2", " ", "The DAO event", "\n", "2.3", " ", "Hard Forks", "\n", "\n", "\n", "3", " ", "Architecture", "\n", "\n", "3.1", " ", "Ether", "\n", "3.2", " ", "Ethereum Virtual Machine", "\n", "3.3", " ", "Smart contracts", "\n", "3.4", " ", "Performance", "\n", "3.5", " ", "Proposed uses", "\n", "\n", "\n", "4", " ", "Ecosystem", "\n", "\n", "4.1", " ", "Clients and wallets", "\n", "4.2", " ", "Decentralized applications", "\n", "4.3", " ", "Enterprise software", "\n", "\n", "4.3.1", " ", "Enterprise Ethereum Alliance (EEA)", "\n", "4.3.2", " ", "Permissioned ledgers", "\n", "\n", "\n", "\n", "\n", "5", " ", "Criticisms", "\n", "6", " ", "References", "\n", "7", " ", "External links", "\n", "\n", "\n", "\n", "Etymology", "[", "edit", "]", "\n", "Vitalik Buterin picked the name Ethereum after browsing Wikipedia articles about elements and science fiction, when he found the name, noting, \"I immediately realized that I liked it better than all of the other alternatives that I had seen; I suppose it was the fact that sounded nice and it had the word \"ether\", referring to the hypothetical invisible medium that permeates the universe and allows light to travel.\"", "[12]", "\n", "History", "[", "edit", "]", "\n", "Ethereum was initially described in a white paper by ", "Vitalik Buterin", ",", "[13]", " a programmer involved with ", "Bitcoin Magazine", ", in late 2013 with a goal of building decentralized applications.", "[14]", "[15]", " Buterin had argued that Bitcoin needed a ", "scripting language", " for application development. Failing to gain agreement, he proposed development of a new platform with a more general scripting language.", "[16]", ":", "88", "\n", "At the time of public announcement in January 2014, the core Ethereum team was Vitalik Buterin, Mihai Alisie, Anthony Di Iorio, and Charles Hoskinson.", "[17]", " Formal development of the Ethereum software project began in early 2014 through a ", "Swiss", " company, ", "Ethereum Switzerland GmbH", " (", "EthSuisse", ").", "[18]", "[19]", " Subsequently, a Swiss non-profit foundation, the Ethereum Foundation (", "Stiftung Ethereum", "), was created as well. Development was funded by an online public ", "crowdsale", " during July\u2013August 2014, with the participants buying the Ethereum value token (ether) with another digital currency, ", "bitcoin", ".", "[6]", " While there was early praise for the technical innovations of Ethereum, questions were also raised about its security and scalability.", "[14]", "\n", "Milestones", "[", "edit", "]", "\n", "Several codenamed prototypes of the Ethereum platform were developed by the Foundation, as part of their Proof-of-Concept series, prior to the official launch of the Frontier network. \"Olympic\" was the last of these prototypes, and public beta pre-release.", "[20]", "[21]", " The Olympic network provided users with a ", "bug bounty", " of 25,000 ether for stress testing the limits of the Ethereum blockchain. \"Frontier\" marked the tentative experimental release of the Ethereum platform in July 2015.", "[22]", "[23]", "\n", "\"Homestead\" was the first to be considered ", "stable", ".", "[24]", "[25]", " It includes improvements to transaction processing, gas pricing, and security.", "[26]", "[24]", "[27]", " Since the initial launch, Ethereum has undergone several planned protocol upgrades, which are important changes affecting the underlying functionality and/or ", "incentive structures", " of the platform.", "[28]", "[29]", "\n", "There are at least two other protocol upgrades planned in the future: \"Metropolis\" is intended to reduce the complexity of the EVM and provide more flexibility for smart contract developers.", "[29]", " Metropolis also adds supports for zkSnarks (from ", "Zcash", "); with the first zksnarks transaction occurring on testnet on September 19, 2017.", "[30]", " \"Serenity\" should include a fundamental change to Ethereum's consensus algorithm to enable a basic transition from hardware mining (", "proof-of-work", ") to virtual mining (", "proof-of-stake", ").", "[29]", "[31]", " Improvements to ", "scalability", ", specifically ", "sharding", ", are also said to be a key objective on the development roadmap.", "[32]", "[33]", "\n", "\n", "\n", "Version", "\n", "Code name", "\n", "Release date", "\n", "\n", "\n", "Old version, no longer supported:", " 0", "\n", "Olympic", "\n", "May, 2015", "\n", "\n", "\n", "Old version, no longer supported:", " 1", "\n", "Frontier", "\n", "30 July 2015", "\n", "\n", "\n", "Old version, no longer supported:", " 2", "\n", "Homestead", "\n", "14 March 2016", "\n", "\n", "\n", "Current stable version:", " ", "3", "\n", "Metropolis (vByzantium)", "\n", "16 October 2017", "\n", "\n", "\n", "Future release:", " 3.5", "\n", "Metropolis (vConstantinople)", "\n", "TBA", "[30]", "\n", "\n", "\n", "Future release:", " 4", "\n", "Serenity", "\n", "TBA", "\n", "\n", "\n", "\n", "\n", "Legend:", "\n", "Old version", "\n", "Older version, still supported", "\n", "Latest version", "\n", "Latest preview version", "\n", "Future release", "\n", "\n", "\n", "\n", "\n", "\n", "The DAO event", "[", "edit", "]", "\n", "In 2016 a ", "decentralized autonomous organization", " called ", "The DAO", ", a set of ", "smart contracts", " developed on the platform, raised a record ", "US$150 million", " in a ", "crowdsale", " to fund the project.", "[34]", " The DAO was exploited in June when ", "US$50 million", " in ether were claimed by an anonymous entity.", "[35]", "[36]", " The event sparked a debate in the crypto-community about whether Ethereum should perform a contentious \"hard fork\" to reappropriate the affected funds.", "[37]", " As a result of the dispute, the network split in two. Ethereum (the subject of this article) continued on the forked blockchain, while ", "Ethereum Classic", " continued on the original blockchain.", "[38]", " The hard fork created a rivalry between the two networks.", "[39]", "\n", "Hard Forks", "[", "edit", "]", "\n", "After the hard fork related to The DAO, Ethereum subsequently forked twice in the fourth quarter of 2016 to deal with other attacks.", "[40]", " By the end of November 2016, Ethereum had increased its ", "DDoS", " protection, de-bloated the blockchain, and thwarted further spam attacks by hackers.", "[27]", "\n", "Architecture", "[", "edit", "]", "\n", "Ether", "[", "edit", "]", "\n", "\n", "\n", "Ether", "\n", "\n", "\n", "Denominations", "\n", "\n", "\n", "Symbol", "\n", "\u039e or ETH", "\n", "\n", "\n", "Demographics", "\n", "\n", "\n", "User(s)", "\n", "Worldwide", "\n", "\n", "\n", "Issuance", "\n", "\n", "\n", "Currency type", "\n", "Cryptocurrency", "\n", "\n", "\n", "The value token of the Ethereum blockchain is called ether. It is listed under the code ETH and traded on ", "cryptocurrency", " exchanges, and the ", "Greek", " ", "uppercase Xi", " character (\u039e) is generally used for its ", "currency symbol", ". It is also used to pay for transaction fees and computational services on the Ethereum network.", "[41]", "\n", "The supply of Ether was projected to increase by 14.75% in 2017, with an algorithm in place to gradually decline to 1.59% by 2065.", "[42]", "[", "unreliable source?", "]", " However, a new implementation of Ethereum named \"Casper\" based on ", "proof of stake", " rather than ", "proof of work", " is expected to reduce the inflation rate to between 0.5% to 2%.", "[43]", "[44]", "\n", "Ethereum Virtual Machine", "[", "edit", "]", "\n", "The Ethereum Virtual Machine (EVM)", "[45]", "[46]", " is the runtime environment for smart contracts in Ethereum. The formal definition of the EVM is specified in the Ethereum Yellow Paper, original version by ", "Gavin Wood", ".", "[47]", "[", "better\u00a0source\u00a0needed", "]", "[48]", " It is sandboxed and also completely isolated from the network, filesystem or other processes of the host computer system. Every Ethereum node in the network runs an EVM implementation and executes the same instructions. Ethereum Virtual Machines have been implemented in ", "C++", ", ", "Go", ", ", "Haskell", ", ", "Java", ", ", "JavaScript", ", ", "Python", ", ", "Ruby", ", ", "Rust", ", and ", "WebAssembly", " (currently under development).", "[49]", "[50]", "\n", "Smart contracts", "[", "edit", "]", "\n", "Ethereum's ", "smart contracts", " are based on computer language, which developers use to program their own functionalities.", "[51]", " Smart contracts are ", "high-level", " programming ", "abstractions", " that are compiled down to EVM ", "bytecode", " and deployed to the Ethereum blockchain for execution. They can be written in ", "Solidity", " (a language library with similarities to ", "C", " and ", "JavaScript", "), Serpent (similar to ", "Python", "), LLL (a ", "low-level", " ", "Lisp", "-like language), and Mutan (", "Go", "-based, but deprecated). There is also a research-oriented language under development called Viper (a ", "strongly-typed", " ", "Python", "-derived ", "decidable language", ").", "[52]", "\n", "Smart contracts can be public, which opens up the possibility to prove functionality, e.g. self-contained ", "provably fair", " casinos.", "[53]", "\n", "One issue related to using smart contracts on a public blockchain is that bugs, including security holes, are visible to all but cannot be fixed quickly.", "[54]", " One example of this is the 17 June 2016 attack on The DAO, which could not be quickly stopped or reversed.", "[35]", "\n", "There is ongoing research on how to use formal verification to express and prove non-trivial properties. A ", "Microsoft Research", " report noted that writing solid smart contracts can be extremely difficult in practice, using The DAO hack to illustrate this problem. The report discussed tools that Microsoft had developed for verifying contracts, and noted that a large-scale analysis of published contracts is likely to uncover widespread vulnerabilities. The report also stated that it is possible to verify the equivalence of a Solidity program and the EVM code.", "[55]", "\n", "Performance", "[", "edit", "]", "\n", "In Ethereum all smart contracts are stored publicly on every node of the blockchain, which has trade-offs.", "[56]", " Being a ", "blockchain", " means it is\u00a0", "secure by design", "\u00a0and is an example of a distributed computing system with high\u00a0", "Byzantine fault tolerance", ". The downside is that performance issues arise in that every node is calculating all the smart contracts in real time, resulting in lower speeds.", "[56]", " As of January 2016, the Ethereum protocol could process 25 transactions per second.", "[56]", " On 19 December 2016, Ethereum exceeded one million transactions in a single day for the first time.", "[57]", "\n", "\n", "Micro Raiden was launched November 2017.", "[58]", "\n", "Buterin and Joseph Poon (a co-author of ", "Bitcoin", "'s lightning network whitepaper) announced in 2017 their plan to launch a scaling solution called Plasma which creates \"child\" blockchains to the \"main\" parent blockchain.", "[59]", " The plasma project is not without skeptics, specifically Vlad Zamfir (Ethereum's lead researcher on proof of stake) has publicly questioned the plasma project's viability.", "[59]", "\n", "Ethereum engineers have been working on ", "sharding", " the calculations, and the next step (called Ethereum 2) was presented at Devcon 3.", "[60]", "\n", "\n", "Ethereum's blockchain uses ", "Merkle Patricia trees", ", for security reasons, to improve scalability, and to optimize transaction hashing.", "[61]", "\n", "Proposed uses", "[", "edit", "]", "\n", "Many uses have been proposed for Ethereum platform, including ones that are impossible or unfeasible.", "[62]", "[63]", "[41]", " Use case proposals have included finance, the ", "internet-of-things", ", ", "farm-to-table", " produce, ", "electricity sourcing and pricing", ", and ", "sports betting", ".", "[41]", "[64]", " Ethereum is (as of 2017) the leading ", "blockchain", " platform for ", "initial coin offering", " projects, with over 50% market share.", "[65]", "\n", "Ecosystem", "[", "edit", "]", "\n", "The projects listed in this section are not exhaustive and may be outdated.", "\n", "Clients and wallets", "[", "edit", "]", "\n", "These ", "cryptocurrency wallets", " support Ethereum:", "\n", "\n", "Jaxx: Desktop wallet", "[66]", "\n", "KeepKey: Hardware wallet", "[67]", "\n", "Ledger Nano S: Hardware wallet", "[68]", "\n", "Mist: Desktop wallet", "[69]", "\n", "Blockchain Online and iOS/Android Wallet", "[70]", "\n", "Trust Wallet", "[71]", "\n", "TREZOR: Hardware wallet", "[72]", "\n", "\n", "Decentralized applications", "[", "edit", "]", "\n", "\n", "Digital signatures", " that ensure authenticity and proof of existence of documents: the ", "Luxembourg Stock Exchange", " has developed such a system", "[73]", "\n", "Slock.It", " is developing ", "smart locks", "[74]", "\n", "Digital tokens ", "pegged", " to ", "fiat currencies", ": Dai, stablecoin pegged to US dollar.", "[75]", " ", "Decentralized Capital.", "[76]", " Spanish bank ", "Santander", " is also involved in such a project", "[77]", ".", "\n", "Digital tokens ", "pegged", " to ", "gold", ": ", "Digix", "[6]", "[78]", "\n", "Improved ", "digital rights management", " for music: ", "Imogen Heap", " used the technology", "[79]", "\n", "Platforms for ", "prediction markets", ": ", "Augur", ", Gnosis", "[80]", "[81]", " Stox", "[82]", "[83]", "\n", "Platforms for ", "crowdfunding", ": ", "the DAO", "[84]", "[85]", "[34]", "\n", "Social media platforms with economic incentives: ", "Backfeed,", "[86]", " ", "Akasha", "[87]", "\n", "Decentralized marketplaces: ", "FreeMyVunk,", "[88]", " ", "Etheropt,", "[89]", " ", "TransActive Grid", "[90]", "\n", "Remittance: ", "Everex", "[91]", "\n", "Online ", "gambling", ": ", "Etheroll", "[92]", "\n", "Electric car charging management: RWE", "[93]", "\n", "Secure ", "identity systems", " for the Internet: ", "uPort", "[94]", "[95]", "\n", "Labour economics", ": ", "Blocklancer", ",", "[96]", " ", "Ethlance", "[97]", "\n", "Video Games", ": ", "Cryptokitties", " popularity in December 2017 caused the Ethereum network to slow down.", "[98]", "\n", "\n", "Enterprise software", "[", "edit", "]", "\n", "Ethereum-based customized software and networks, independent from the public Ethereum chain, are being tested by ", "enterprise software", " companies.", "[99]", " Interested parties include ", "Microsoft", ", ", "IBM", ", ", "JPMorgan Chase", ",", "[41]", "[100]", " ", "Deloitte", ",", "[101]", " ", "R3", ",", "[102]", " ", "Innovate UK", " (cross-border payments prototype).", "[103]", "[104]", " Barclays, UBS and Credit Suisse are experimenting with Ethereum blockchain to automate Markets in Financial Instruments Directive (MiFID) II requirements.", "[105]", "\n", "Enterprise Ethereum Alliance (EEA)", "[", "edit", "]", "\n", "In March 2017, various blockchain start-ups, research groups, and Fortune 500 companies announced the creation of the Enterprise Ethereum Alliance (EEA) with 30 founding members.", "[106]", " By May, the nonprofit organization had 116 enterprise members\u2014including ", "ConsenSys", ", ", "CME Group", ", ", "Cornell University's research group", ", ", "Toyota Research Institute", ", ", "Samsung SDS", ", ", "Microsoft", ", ", "Intel", ", ", "J.P. Morgan", ", ", "Cooley LLP", ", ", "Merck KGaA", ", ", "DTCC", ", ", "Deloitte", ", ", "Accenture", ", ", "Banco Santander", ", ", "BNY Mellon", ", ", "ING", ", and ", "National Bank of Canada", ".", "[107]", "[108]", "[109]", "\n", "The purpose of the EEA is to coordinate the engineering of an open-source reference standard and private \"permissioned\" version of the Ethereum blockchain that can address the common interests of enterprises in banking, management, consulting, automotive, pharmaceutical, health, technology, mobile, entertainment, and other industries, while working with developers from the Ethereum ecosystem. Certain members of the alliance have also indicated a desire to investigate and collaborate on hybrid architectures to potentially anchor private blockchains to the public Ethereum blockchain in the future, although concerns remain over the security, compliance, and regulations involved in bridging such permissioned and \"permissionless\" blockchains.", "[106]", "\n", "By July 2017, there were over 150 members in the alliance, including recent additions ", "MasterCard", ", ", "Cisco Systems", ", and ", "Scotiabank", ".", "[110]", "\n", "Permissioned ledgers", "[", "edit", "]", "\n", "Ethereum-based ", "permissioned blockchain", " variants are used and being investigated for various projects.", "\n", "\n", "J.P. Morgan Chase", " is developing a permissioned-variant of Ethereum blockchain dubbed \"Quorum.\"", "[111]", " It's designed to toe the line between private and public in the realm of shuffling derivatives and payments. The idea is to satisfy regulators who need seamless access to financial goings-on, while protecting the privacy of parties that don't wish to reveal their identities nor the details of their transactions to the general public.", "[112]", "\n", "Royal Bank of Scotland", " has announced that it has built a Clearing and Settlement Mechanism (CSM) based on the Ethereum distributed ledger and smart contract platform.", "[113]", "[114]", "\n", "\n", "Criticisms", "[", "edit", "]", "\n", "A finance blogger on ", "FT Alphaville", " has pointed out that criminals are using Ethereum to run ", "Ponzi schemes", " and other forms of investment fraud.", "[115]", " The article was based on a paper from the ", "University of Cagliari", ", which placed the number of Ethereum smart contracts which facilitate Ponzi schemes at nearly 10% of 1384 smart contracts examined. However, it also estimated that only 0.05% of the transactions on the network were related to such contracts.", "[116]", "\n", "References", "[", "edit", "]", "\n", "\n", "\n", "^", " ", "\"ethereum\"", ". ", "GitHub", ". Retrieved ", "11 January", " 2018", ".", "\u00a0", "\n", "^", " ", "\"Go Ethereum GitHub repository\"", ". ", "Archived", " from the original on 3 October 2016.", "\u00a0", "\n", "^ ", "a", " ", "b", " ", "Understanding Ethereum (Report). CoinDesk. 24 June 2016.", "\u00a0", "\n", "^", " ", "Cryptocurrencies: A Brief Thematic Review", " ", "Archived", " 25 December 2017 at the ", "Wayback Machine", ".. Social Science Research Network. Date accessed 28 august 2017.", "\n", "^", " ", "ConsenSys (23 June 2016). ", "\"Ethereum, Gas, Fuel, & Fees\"", ". ", "ConsenSys Media", ". ", "Archived", " from the original on 23 May 2017", ". Retrieved ", "15 January", " 2017", ".", "\u00a0", "\n", "^ ", "a", " ", "b", " ", "c", " ", "Aitken, Roger (23 April 2016). ", "\"Digital Gold 'Done Right' With DigixDAO Crypto-Trading on OpenLedger\"", ". ", "Forbes", ". ", "Archived", " from the original on 28 April 2016", ". Retrieved ", "28 April", " 2016", ".", "\u00a0", "\n", "^", " ", "etherchain.org. ", "\"Accounts - etherchain.org - The ethereum blockchain explorer\"", ". ", "www.etherchain.org", ". ", "Archived", " from the original on 7 August 2017", ". Retrieved ", "30 May", " 2017", ".", "\u00a0", "\n", "^", " ", "De Jesus, Cecille (19 July 2016). ", "\"The DAO Heist Undone: 97% of ETH Holders Vote for the Hard Fork\"", ". Futurism, LLC. ", "Archived", " from the original on 7 August 2017", ". Retrieved ", "16 May", " 2017", ".", "\u00a0", "\n", "^", " ", "Quentson, Andrew (17 July 2016). ", "\"Miners Vote Overwhelmingly in Support of Ethereum's Hardfork\"", ". Cryptocoinnews. ", "Archived", " from the original on 26 June 2017", ". Retrieved ", "14 May", " 2017", ".", "\u00a0", "\n", "^", " ", "Bradley, Miles (17 November 2016). ", "\"CoinDesk Research: Ethereum Hard Fork Had Little Impact on Sentiment\"", ". Coindesk. ", "Archived", " from the original on 8 July 2017", ". Retrieved ", "14 May", " 2017", ".", "\u00a0", "\n", "^", " ", "\"Ethereum hits a fresh record high and is up over 13,000% in a year\"", ". ", "CNBC", ". January 8, 2017.", "\u00a0", "\n", "^", " ", "Vitalik Buterin (2014). ", "\"So where did the name Ethereum come from?\"", ".", "\u00a0", "\n", "^", " ", "\"White Paper\u00b7 ethereum/wiki Wiki \u00b7 GitHub\"", ". ", "Archived", " from the original on 28 March 2015.", "\u00a0", "\n", "^ ", "a", " ", "b", " ", "Finley, Klint (27 January 2014). ", "\"Out in the Open: Teenage Hacker Transforms Web Into One Giant Bitcoin Network\"", ". ", "Wired", ". ", "Archived", " from the original on 18 March 2016", ". Retrieved ", "21 March", " 2016", ".", "\u00a0", "\n", "^", " ", "Schneider, Nathan (7 April 2014). ", "\"Code your own utopia: Meet Ethereum, bitcoin's most ambitious successor\"", ". Al Jazeera. ", "Archived", " from the original on 23 February 2016", ". Retrieved ", "21 February", " 2016", ".", "\u00a0", "\n", "^", " ", "Tapscott, Don; Tapscott, Alex (2016-05-07). ", "The Blockchain Revolution: How the Technology Behind Bitcoin is Changing Money, Business, and the World", ". Portfolio. ", "ISBN", "\u00a0", "978-0670069972", ".", "\u00a0", "\n", "^", " ", "Vitalik Buterin (23 January 2014). ", "\"Ethereum: Now Going Public\"", ". Archived from ", "the original", " on 2 March 2014.", "\u00a0", "\n", "^", " ", "Schmid, Valentin (10 May 2014). ", "\"The Entrepreneur: Joe Lubin, COO of Ethereum\"", ". ", "Epoch Times", ". ", "Archived", " from the original on 25 April 2016", ". Retrieved ", "31 March", " 2016", ".", "\u00a0", "\n", "^", " ", "\"Company Overview of Ethereum Switzerland GmbH\"", ". Bloomberg. 20 August 2016. ", "Archived", " from the original on 20 August 2016", ". Retrieved ", "20 August", " 2016", ". ", "The company was founded in 2014 and is based in Baar, Switzerland.", "\u00a0", "\n", "^", " ", "Buterin, Vitalik (9 May 2015). ", "\"Olympic: Frontier Pre-Release\"", ". Ethereum Foundation. ", "Archived", " from the original on 2 June 2017", ". Retrieved ", "5 June", " 2017", ".", "\u00a0", "\n", "^", " ", "Lombardo, Hans (17 May 2015). ", "\"Ethereum Debuts \"e\u03c0\" Ethereum-on-Raspberry Pi as Olympic Whirs before Frontier Release\"", ". Allcoinsnews. ", "Archived", " from the original on 20 August 2017", ". Retrieved ", "5 June", " 2017", ".", "\u00a0", "\n", "^", " ", "Gupta, Vinay (12 March 2015). ", "\"Getting to the Frontier\"", ". Ethereum Foundation. ", "Archived", " from the original on 8 May 2015", ". Retrieved ", "5 June", " 2015", ".", "\u00a0", "\n", "^", " ", "Vigna, Paul (31 July 2015). ", "\"BitBeat: Ethereum Opens Its 'Frontier' for Business\"", ". The Wall Street Journal. ", "Archived", " from the original on 6 September 2017", ". Retrieved ", "5 June", " 2017", ".", "\u00a0", "\n", "^ ", "a", " ", "b", " ", "\"Ethereum Homestead Documentation: The Homestead Release\"", ". Ethereum Foundation. n.d. ", "Archived", " from the original on 6 June 2017", ". Retrieved ", "5 June", " 2017", ".", "\u00a0", "\n", "^", " ", "Donnelly, Jacob (14 March 2016). ", "\"Ethereum Blockchain Project Launches First Production Release\"", ". CoindDesk. ", "Archived", " from the original on 6 June 2017", ". Retrieved ", "5 June", " 2017", ".", "\u00a0", "\n", "^", " ", "Wilcke, Jeffrey (29 February 2016). ", "\"Homestead Release\"", ". Ethereum Foundation. ", "Archived", " from the original on 3 June 2017", ". Retrieved ", "5 June", " 2017", ".", "\u00a0", "\n", "^ ", "a", " ", "b", " ", "Hertig, Alyssa (22 November 2016). ", "\"Ethereum's Fourth Blockchain Fork: So Far, So Good\"", ". CoinDesk. ", "Archived", " from the original on 27 May 2017", ". Retrieved ", "5 June", " 2017", ".", "\u00a0", "\n", "^", " ", "Gupta, Vinay (3 March 2015). ", "\"The Ethereum Launch Process\"", ". Ethereum Foundation. ", "Archived", " from the original on 6 June 2017", ". Retrieved ", "5 June", " 2017", ".", "\u00a0", "\n", "^ ", "a", " ", "b", " ", "c", " ", "Silva, Los (25 February 2017). ", "\"Ethereum's Road Map for 2017\"", ". ETHNews. ", "Archived", " from the original on 2 June 2017", ". Retrieved ", "5 June", " 2017", ".", "\u00a0", "\n", "^ ", "a", " ", "b", " ", "O'Leary, Rachel Rose (19 September 2017). ", "\"Ethereum's Byzantium Testnet Just Verified A Private Transaction\"", ". CoinDesk. ", "Archived", " from the original on 23 September 2017", ". Retrieved ", "24 September", " 2017", ".", "\u00a0", "\n", "^", " ", "Hertig, Alyssa (18 January 2017). ", "\"Where's Casper? Inside Ethereum's Race to Reinvent its Blockchain\"", ". CoinDesk. ", "Archived", " from the original on 30 May 2017", ". Retrieved ", "5 June", " 2017", ".", "\u00a0", "\n", "^", " ", "Hertig, Alyssa (n.d.). ", "\"How Will Ethereum Scale?\"", ". CoinDesk. ", "Archived", " from the original on 10 June 2017", ". Retrieved ", "5 June", " 2017", ".", "\u00a0", "\n", "^", " ", "Rizzo, Pete (19 September 2016). ", "\"Ethereum's Creator Proves Blockchain Scaling Vision is No Joke\"", ". CoinDesk. ", "Archived", " from the original on 6 June 2017", ". Retrieved ", "5 June", " 2017", ".", "\u00a0", "\n", "^ ", "a", " ", "b", " ", "Vigna, Paul (16 May 2016). ", "\"Chiefless Company Rakes in More than $100 Million\"", ". ", "Wall Street Journal", ". ", "Archived", " from the original on 25 June 2017", ". Retrieved ", "14 May", " 2017", ".", "\u00a0", "\n", "^ ", "a", " ", "b", " ", "Popper, Nathaniel (18 June 2016). ", "\"Hacker May Have Taken $50 Million From Cybercurrency Project\"", ". ", "The New York Times", ". ", "Archived", " from the original on 20 June 2017", ". Retrieved ", "14 May", " 2017", ".", "\u00a0", "\n", "^", " ", "Price, Rob (17 June 2016). ", "\"Digital Currency Ethereum is Cratering Amid Claims of a $50 Million Hack\"", ". ", "Business Insider", ". Business Insider. ", "Archived", " from the original on 11 June 2017", ". Retrieved ", "14 May", " 2017", ".", "\u00a0", "\n", "^", " ", "Peck, Morgan (19 July 2016). ", "\"", "\"", "Hard Fork\" Coming to Restore Ethereum Funds to Investors of Hacked DAO\"", ". ", "IEEE Spectrum: Technology, Engineering, and Science News", ". IEEE. ", "Archived", " from the original on 3 March 2017", ". Retrieved ", "14 May", " 2017", ".", "\u00a0", "\n", "^", " ", "\"What is Ethereum? | The Ultimate Beginners' Guide \u2013 CoinCentral\"", ". ", "coincentral.com", ". ", "Archived", " from the original on 11 September 2017", ". Retrieved ", "11 September", " 2017", ".", "\u00a0", "\n", "^", " ", "Hertig, Alyssa (28 July 2016). ", "\"Ethereum's Two Ethereums Explained\"", ". CoinDesk. ", "Archived", " from the original on 24 May 2017", ". Retrieved ", "15 May", " 2017", ".", "\u00a0", "\n", "^", " ", "Redman, Jamie (14 October 2016). ", "\"Ethereum to Hard Fork Two More Times Following Recent Attacks\"", ". ", "Bitcoin.com", ". Bitcoin.com. ", "Archived", " from the original on 2 November 2016", ". Retrieved ", "22 November", " 2016", ".", "\u00a0", "\n", "^ ", "a", " ", "b", " ", "c", " ", "d", " ", "Popper, Nathaniel (27 March 2016). ", "\"Ethereum, a Virtual Currency, Enables Transactions That Rival Bitcoin's\"", ". ", "New York Times", ". ", "Archived", " from the original on 24 July 2016", ". Retrieved ", "2 September", " 2016", ".", "\u00a0", "\n", "^", " ", "\"Spreadsheet of Ether inflation rate\"", ". ", "Presale", ". ", "Google Docs", ". Retrieved ", "2017-07-04", ".", "\u00a0", "\n", "^", " ", "Hertig, Alyssa (18 January 2017). ", "\"Where's Casper? Inside Ethereum's Race to Reinvent its Blockchain\"", ". CoinDesk. ", "Archived", " from the original on 27 June 2017", ". Retrieved ", "4 July", " 2017", ".", "\u00a0", "\n", "^", " ", "Buterin, Vitalik (27 June 2017). ", "\"Once Casper comes out, ~0.5-2% annual seems feasible. Once we add partial tx fee burning and if fees go up, may go to 0 or lower\"", ". ", "Twitter", ". ", "Archived", " from the original on 5 September 2017", ". Retrieved ", "4 July", " 2017", ".", "\u00a0", "\n", "^", " ", "\"What Is Ethereum?\u2014Ethereum Homestead 0.1 documentation\"", ". ", "ethdocs.org", ". ", "Archived", " from the original on 27 April 2017.", "\u00a0", "\n", "^", " ", "Dannen, Chris (2017). \"The EVM\". ", "Introducing Ethereum and Solidity: Foundations of Cryptocurrency and Blockchain Programming for Beginners", ". Apress. pp.\u00a047\u201367. ", "ISBN", "\u00a0", "9781484225356", ".", "\u00a0", "\n", "^", " ", "Ethereum Yellow Paper", " ", "Archived", " 18 February 2015 at the ", "Wayback Machine", ". by Gavin Wood", "\n", "^", " ", "Triantafyllidis, Nikolaos Petros (19 February 2016). \"The Ethereum Project: Ethereum History\". Developing an Ethereum Blockchain Application (Report). University of Amsterdam. p.\u00a020.", "\u00a0", "\n", "^", " ", "Dannen, Chris (27 March 2017). ", "\"Ethereum Devs Publish Roadmap for EVM Upgrade\"", ". CryptoNews. ", "Archived", " from the original on 25 December 2017.", "\u00a0", "\n", "^", " ", "\"Ethereum Client Implementations - EntEthAlliance - Confluence\"", ". ", "entethalliance.atlassian.net", ".", "\u00a0", "\n", "^", " ", "\"How Do Ethereum Smart Contracts Work?\"", ". ", "CoinDesk", ".", "\u00a0", "\n", "^", " ", "Rivlin, Brianne (14 November 2016). ", "\"Geth, Viper, and Wafr: New Ethereum Developments\"", ". ETHNews. ", "Archived", " from the original on 4 September 2017.", "\u00a0", "\n", "^", " ", "Piasecki, Piotr J. (2016). ", "\"Gaming Self-Contained Provably Fair Smart Contract Casinos\"", ". ", "Ledger", ". ", "1", ": 99\u2013110. ", "doi", ":", "10.5195/ledger.2016.29", ". ", "Archived", " from the original on 24 December 2016.", "\u00a0", "\n", "^", " ", "Peck, M. (28 May 2016). ", "\"Ethereum's $150-Million Blockchain-Powered Fund Opens Just as Researchers Call For a Halt\"", ". ", "IEEE Spectrum", ". ", "Institute of Electrical and Electronics Engineers", ". ", "Archived", " from the original on 30 May 2016.", "\u00a0", "\n", "^", " ", "\"Short Paper: Formal Verification of Smart Contracts\"", " ", "(PDF)", ". ", "microsoft.com/", ". Microsoft. Archived from ", "the original", " ", "(PDF)", " on 27 August 2016", ". Retrieved ", "25 August", " 2016", ".", "\u00a0", "\n", "^ ", "a", " ", "b", " ", "c", " ", "Allison, Ian (25 January 2016). ", "\"How are banks actually going to use blockchains and smart contracts?\"", ". ", "International Business Times", ". ", "Archived", " from the original on 8 May 2016", ". Retrieved ", "4 May", " 2016", ".", "\u00a0", "\n", "^", " ", "Filiba, Jack. ", "\"Ethereum Breaks One Million Transactions in a Single Day\"", ". ", "Archived", " from the original on 22 December 2017.", "\u00a0", "\n", "^", " ", "Higgins, Stan. ", "\"", "'", "Microraiden' Payment Channels Go Live on Ethereum Network\"", ". ", "Archived", " from the original on 22 December 2017.", "\u00a0", "\n", "^ ", "a", " ", "b", " ", "Hertig, Alyssa (12 August 2017). ", "\"Ethereum + Lightning? Buterin and Poon Unveil 'Plasma' Scaling Plan\"", ". CoinDesk. ", "Archived", " from the original on 24 August 2017", ". Retrieved ", "23 August", " 2017", ".", "\u00a0", "\n", "^", " ", "Galeon, Dom. ", "\"Ethereum's Co-Founder Just Unveiled His Plan for the Future of Cryptocurrency\"", ". ", "Archived", " from the original on 9 November 2017.", "\u00a0", "\n", "^", " ", "Vitalik Buterin. ", "\"Merkling in Ethereum\"", ". ", "Ethereum.org", ".", "\u00a0", "\n", "^", " ", "Greenspan, Gideon (17 April 2016). ", "\"Why Many Smart Contract Use Cases Are Simply Impossible - CoinDesk\"", ". ", "CoinDesk", ". ", "Archived", " from the original on 7 August 2017.", "\u00a0", "\n", "^", " ", "\"This Is Your Company on Blockchain\"", ". ", "Bloomberg Businessweek", ". ", "Archived", " from the original on 14 September 2016", ". Retrieved ", "14 September", " 2016", ".", "\u00a0", "\n", "^", " ", "Bordet, Juli\u00e1n (21 March 2016). ", "\"Decentralized Autonomous Organizations: Ethereum Sparks Up Googles of Tomorrow\"", ". ", "The Cointelegraph", ". ", "Archived", " from the original on 27 June 2016", ". Retrieved ", "21 July", " 2016", ".", "\u00a0", "\n", "^", " ", "\"ICO Market Research: The Leading Blockchain Platforms Of 2017 - ICO Watch List Blog\"", ". ", "ICO Watch List Blog", ". 17 August 2017. ", "Archived", " from the original on 17 August 2017", ". Retrieved ", "20 August", " 2017", ".", "\u00a0", "\n", "^", " ", "Redman, Jamie (13 February 2016). ", "\"Jaxx: The New Fleet of Bitcoin & Ethereum Wallets\"", ". Saint Bitts LLC. ", "Archived", " from the original on 5 August 2017.", "\u00a0", "\n", "^", " ", "Silva, Los (23 November 2016). ", "\"KeepKey Hard Wallet Supports Ethereum\"", ". ETHNews. ", "Archived", " from the original on 19 February 2017.", "\u00a0", "\n", "^", " ", "Faife, Corin (26 November 2016). ", "\"Ledger Launches Hardware Wallet for the Smart Contract Era\"", ". CoinDesk. ", "Archived", " from the original on 30 June 2017.", "\u00a0", "\n", "^", " ", "\"A Review of The Best Ethereum Wallets\"", ". ", "Archived", " from the original on 26 March 2017.", "\u00a0", "\n", "^", " ", "\"Blockchain Digital Wallet\"", ".", "\u00a0", "\n", "^", " ", "\"Trust Wallet\"", ".", "\u00a0", "\n", "^", " ", "\"TREZOR integration with MyEtherWallet\"", ". 3 February 2017.", "\u00a0", "\n", "^", " ", "\"Luxembourg Stock Exchange introduces blockchain into reporting service\"", ". 2016-10-18", ". Retrieved ", "2016-11-04", ".", "\u00a0", "\n", "^", " ", "Allison, Ian. ", "\"Ethereum-based Slock.it reveals first ever lock opened with money\"", ". ", "International Business Times UK", ". ", "Archived", " from the original on 2 April 2016.", "\u00a0", "\n", "^", " ", "Prince, Eliot. ", "\"MakerDAO Launches New Dai Stablecoin on the Ethereum Blockchain\"", ". ", "Cryptoslate", ".", "\u00a0", "\n", "^", " ", "Allison, Ian (12 September 2016). ", "\"Decentralized Capital issuing fiat-backed digital assets on the Ethereum blockchain\"", ". ", "International Business Times", ". ", "Archived", " from the original on 18 September 2016.", "\u00a0", "\n", "^", " ", "\"Santander Confirms Fiat-backed Token Project on Ethereum Blockchain\"", ". ", "CoinTelegraph", ". ", "Archived", " from the original on 17 December 2016", ". Retrieved ", "15 January", " 2017", ".", "\u00a0", "\n", "^", " ", "Buntinx, JP (28 April 2016). ", "\"DigixDAO DGD Assets To Be Listed on OpenLedger\"", ". The Merkle. ", "Archived", " from the original on 2 June 2016", ". Retrieved ", "29 May", " 2016", ".", "\u00a0", "\n", "^", " ", "Allison, Ian (4 October 2015). ", "\"Imogen Heap shows how smart music contracts work using Ethereum\"", ". ", "International Business Times", ". ", "Archived", " from the original on 21 March 2016", ". Retrieved ", "24 March", " 2016", ".", "\u00a0", "\n", "^", " ", "\"Ethereum Prediction Market Service Takes First Steps With Beta Launch - CoinDesk\"", ". ", "CoinDesk", ". 17 August 2016. ", "Archived", " from the original on 7 February 2017", ". Retrieved ", "6 February", " 2017", ".", "\u00a0", "\n", "^", " ", "\"ICO Roundup 2017 by Cointelegraph: Cashing In On Blockchain Apps' Mainstream Year\"", ". ", "CoinTelegraph", ". ", "Archived", " from the original on 7 February 2017", ". Retrieved ", "6 February", " 2017", ".", "\u00a0", "\n", "^", " ", "\"Stox Prediction Platform Closes ICO after One Day; Raises over $30 Million\"", ". CryptoCoinsNews. 2 August 2017. ", "Archived", " from the original on 29 September 2017", ". Retrieved ", "17 November", " 2017", ".", "\u00a0", "\n", "^", " ", "[1]", "[", "dead link", "]", "\n", "^", " ", "Rennie, Ellie (12 May 2016). ", "\"The radical DAO experiment\"", ". ", "Swinburne News", ". Swinburne University of Technology. ", "Archived", " from the original on 16 May 2016", ". Retrieved ", "12 May", " 2016", ". ", "When it reaches the end of the funding phase on 28 May, it will begin contracting blockchain-based start-ups to create innovative technologies. The extraordinary thing about The DAO is that no single entity owns it, and it has no conventional management structure or board of directors.", "\u00a0", "\n", "^", " ", "Allison, Ian (30 April 2016). ", "\"Ethereum reinvents companies with launch of The DAO\"", ". ", "International Business Times", ". ", "Archived", " from the original on 1 May 2016", ". Retrieved ", "1 May", " 2016", ".", "\u00a0", "\n", "^", " ", "Weinglass, Simona (19 August 2015). ", "\"Backfeed wants to decentralize the Internet and help you earn what you deserve\"", ". Geektime.com. ", "Archived", " from the original on 14 March 2016", ". Retrieved ", "24 March", " 2016", ".", "\u00a0", "\n", "^", " ", "CFA, Adam Hayes, (3 February 2017). ", "\"This New Social Network is Powered by Ethereum Technology\"", ". ", "Investopedia", ". ", "Archived", " from the original on 6 February 2017", ". Retrieved ", "6 February", " 2017", ".", "\u00a0", "\n", "^", " ", "Allison, Ian (22 December 2015). ", "\"Game-changers FreeMyVunk and Digix allow video gamers to trade virtual assets for physical gold\"", ". ", "International Business Times", ". ", "Archived", " from the original on 17 March 2016", ". Retrieved ", "24 March", " 2016", ".", "\u00a0", "\n", "^", " ", "\"Decentralized Options Exchange Etheropt Uses Automated Ethereum Smart Contract\"", ". ", "Archived", " from the original on 8 January 2017.", "\u00a0", "\n", "^", " ", "Rutkin, Aviva (2 March 2016). ", "\"Blockchain-based microgrid gives power to consumers in New York\"", ". ", "New Scientist", ". ", "Archived", " from the original on 22 March 2016", ". Retrieved ", "24 March", " 2016", ".", "\u00a0", "\n", "^", " ", "Mizrahi, Avi (1 December 2016). ", "\"Everex Helps Migrant Workers Send Remittance Back to Myanmar via Ethereum\"", ". ", "Finance Magnates", ". ", "Archived", " from the original on 20 December 2016", ". Retrieved ", "14 December", " 2016", ".", "\u00a0", "\n", "^", " ", "Bitcoinist. ", "\"Ethereum Dice Game Etheroll Announces Crowdfund Opening Feb. 13\"", ". ", "bitcoinist.com", ". ", "Archived", " from the original on 19 August 2017", ". Retrieved ", "18 August", " 2017", ".", "\u00a0", "\n", "^", " ", "Higgins, Stan. ", "\"Why a German Power Company is Using Ethereum to Test Blockchain Car Charging\"", ". ", "CoinDesk", ". ", "Archived", " from the original on 2 July 2017", ". Retrieved ", "2 May", " 2017", ".", "\u00a0", "\n", "^", " ", "EconoTimes. ", "\"ConsenSys uPort wins International Blockchain Summit - EconoTimes\"", ". ", "EconoTimes", ". ", "Archived", " from the original on 8 February 2017", ". Retrieved ", "6 February", " 2017", ".", "\u00a0", "\n", "^", " ", "Allison, Ian (23 September 2016). ", "\"ConsenSys uPort scoops first prize in International Blockchain Summit Demo Day\"", ". ", "International Business Times UK", ". ", "Archived", " from the original on 8 February 2017", ". Retrieved ", "6 February", " 2017", ".", "\u00a0", "\n", "^", " ", "Tkatchuk, Ralph (20 November 2017). ", "\"Can Blockchain Supercharge the Gig Economy?\"", ". ", "Dataconomy", ". ", "Archived", " from the original on 20 November 2017.", "\u00a0", "\n", "^", " ", "Gebron, Hunter (12 February 2017). ", "\"Ethlance and the Rise of the On-Demand Economy\"", ". ", "Archived", " from the original on 1 December 2017.", "\u00a0", "\n", "^", " ", "\"CryptoKitties craze slows down transactions on Ethereum\"", ". 12 May 2017.", "\u00a0", "\n", "^", " ", "\"Big Business Giants From Microsoft to J.P. Morgan Are Getting Behind Ethereum\"", ". ", "Fortune", ". ", "Archived", " from the original on 29 September 2017", ". Retrieved ", "8 November", " 2017", ".", "\u00a0", "\n", "^", " ", "\"Hyperledger blockchain code almost comes together for IoT\"", ". Rethink Research. ", "Archived", " from the original on 16 August 2016", ". Retrieved ", "23 April", " 2016", ".", "\u00a0", "\n", "^", " ", "Allison, Ian (3 May 2016). ", "\"Deloitte to build Ethereum-based 'digital bank' with New York City's ConsenSys\"", ". ", "International Business Times", ". ", "Archived", " from the original on 6 May 2016.", "\u00a0", "\n", "^", " ", "Allison, Ian (20 January 2016). ", "\"R3 connects 11 banks to distributed ledger using Ethereum and Microsoft Azure\"", ". ", "International Business Times", ". ", "Archived", " from the original on 23 February 2016", ". Retrieved ", "23 February", " 2016", ".", "\u00a0", "\n", "^", " ", "\"UK Government Awards \u00a3248k for Ethereum Prototype\"", ". ", "CoinDesk", ". ", "Archived", " from the original on 5 June 2016.", "\u00a0", "\n", "^", " ", "\"Settlement using blockchain to Automate Foreign Exchange in a Regulated environment (SAFER)\"", ". ", "Innovate UK", ". ", "Archived", " from the original on 4 May 2016.", "\u00a0", "\n", "^", " ", "\"Barclays, UBS, Credit Suisse Seek Ethereum Blockchain Solution For MiFID II Regulations\"", ". ", "ETHNews.com", ". Retrieved ", "2017-12-29", ".", "\u00a0", "\n", "^ ", "a", " ", "b", " ", "Popper, Nathaniel (27 February 2017). ", "\"Business Giants to Announce Creation of a Computing System Based on Ethereum\"", ". ", "New York Times", ". ", "Archived", " from the original on 20 June 2017", ". Retrieved ", "5 June", " 2017", ".", "\u00a0", "\n", "^", " ", "Peck, Morgan (2 March 2017). ", "\"Corporate Titans Unite to Build an Enterprise Version of the Ethereum Blockchain\"", ". Institute of Electrical and Electronics Engineers (IEEE). ", "Archived", " from the original on 17 June 2017", ". Retrieved ", "5 June", " 2017", ".", "\u00a0", "\n", "^", " ", "\"Enterprise Ethereum Alliance expands dramatically announcing 86 new members\"", " ", "(PDF)", " (Press release). Enterprise Ethereum Alliance (EEA). 19 May 2017. ", "Archived", " ", "(PDF)", " from the original on 7 June 2017", ". Retrieved ", "5 June", " 2017", ".", "\u00a0", "\n", "^", " ", "Shin, Laura (22 May 2017). ", "\"Ethereum Enterprise Alliance Adds 86 New Members Including DTCC, State Street And Infosys\"", ". Forbes. ", "Archived", " from the original on 22 May 2017", ". Retrieved ", "22 May", " 2017", ".", "\u00a0", "\n", "^", " ", "https://www.inc.com/brian-d-evans/the-enterprise-ethereum-alliance-just-got-a-whole-.html", "\n", "^", " ", "\"JP Morgan's Quorum blockchain powers new correspondent banking network \" Banking Technology\"", ". ", "www.bankingtech.com", ". ", "Archived", " from the original on 9 November 2017", ". Retrieved ", "8 November", " 2017", ".", "\u00a0", "\n", "^", " ", "Hacket, Robert. ", "\"Why J.P. Morgan Chase Is Building a Blockchain on Ethereum\"", ". ", "Fortune", ". ", "Archived", " from the original on 2 February 2017.", "\u00a0", "\n", "^", " ", "\"Proving Ethereum for the Clearing Use Case\"", " ", "(PDF)", ". ", "Archived", " ", "(PDF)", " from the original on 10 October 2016.", "\u00a0", "\n", "^", " ", "Allison, Ian (7 December 2016). ", "\"Blockchain: RBS builds Ethereum-based distributed clearing house\"", ". ", "IB Times", ". ", "Archived", " from the original on 13 April 2017", ". Retrieved ", "8 May", " 2017", ".", "\u00a0", "\n", "^", " ", "Kaminska, Izabella (1 June 2017). ", "\"It's not a ponzi, it's a smart ponzi\"", ". ", "FT Alphaville", ". ", "Archived", " from the original on 23 July 2017.", "\u00a0", "\n", "^", " ", "Bartoletti, Carta; et al. ", "\"Dissecting Ponzi schemes on Ethereum: identification, analysis, and impact\"", " ", "(PDF)", ". Universita di Cagliari. ", "Archived", " ", "(PDF)", " from the original on 17 August 2017", ". Retrieved ", "30 July", " 2017", ".", "\u00a0", "CS1 maint: Explicit use of et al. (", "link", ")", "\n", "\n", "\n", "External links", "[", "edit", "]", "\n", "\n", "\n", "\n", "Wikimedia Commons has media related to ", "Ethereum", ".", "\n", "\n", "\n", "\n", "Official website", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "v", "\n", "t", "\n", "e", "\n", "\n", "\n", "Cryptocurrencies", "\n", "\n", "\n", "\n", "SHA-256", "-based", "\n", "\n", "\n", "\n", "Bitcoin", "\n", "Bitcoin Cash", "\n", "Factom", "\n", "Namecoin", "\n", "NuBits", "\n", "Peercoin", "\n", "Titcoin", "\n", "\n", "\n", "\n", "\n", "\n", "Scrypt", "-based", "\n", "\n", "\n", "\n", "Auroracoin", "\n", "Dogecoin", "\n", "Litecoin", "\n", "PotCoin", "\n", "\n", "\n", "\n", "\n", "\n", "Zerocoin", "-based", "\n", "\n", "\n", "\n", "Zcash", "\n", "Zcoin", "\n", "Zclassic", "\n", "ZeroVert", "\n", "Bitcoin Gold", "\n", "\n", "\n", "\n", "\n", "\n", "CryptoNote", "-based", "\n", "\n", "\n", "\n", "Boolberry", "\n", "Bytecoin", "\n", "Monero", "\n", "\n", "\n", "\n", "\n", "\n", "Ethash", "-based", "\n", "\n", "\n", "\n", "Ethereum", "\n", "Ethereum Classic", "\n", "KodakCoin", "\n", "Ubiq", "\n", "\n", "\n", "\n", "\n", "\n", "Other ", "proof-of-work", "\n", "\n", "\n", "\n", "Dash", "\n", "Decred", "\n", "DigiByte", "\n", "IOTA", "\n", "Myriadcoin", "\n", "Primecoin", "\n", "Sia", "\n", "Zerocash", "\n", "\n", "\n", "\n", "\n", "\n", "Non ", "proof-of-work", "\n", "\n", "\n", "\n", "Ardor", "\n", "BitShares", "\n", "BlackCoin", "\n", "Burstcoin", "\n", "Cardano", "\n", "Counterparty", "\n", "Enigma", "\n", "FunFair", "\n", "Gridcoin", "\n", "Lisk", "\n", "Melonport", "\n", "NEM", "\n", "NEO", "\n", "Nxt", "\n", "OmiseGO", "\n", "Polkadot", "\n", "Qtum", "\n", "RChain", "\n", "Ripple", "\n", "Shadow", "\n", "Simple Token", "\n", "Stellar", "\n", "Steem", "\n", "Waves Platform", "\n", "\n", "\n", "\n", "\n", "\n", "Consensus", " mechanisms", "\n", "\n", "\n", "\n", "Proof-of-authority", "\n", "Proof-of-space", "\n", "Proof-of-stake", "\n", "Proof-of-work system", "\n", "\n", "\n", "\n", "\n", "\n", "Technology", "\n", "\n", "\n", "\n", "Blockchain", "\n", "Fork", "\n", "Cryptocurrency tumbler", "\n", "Zerocoin", "\n", "Lightning Network", "\n", "Atomic swap", "\n", "\n", "\n", "\n", "\n", "\n", "Related topics", "\n", "\n", "\n", "\n", "Anonymous Internet banking", "\n", "Bitcoin network", "\n", "Complementary currency", "\n", "Crypto-anarchism", "\n", "Cryptocurrency exchange", "\n", "Digital currency", "\n", "Double-spending", "\n", "Electronic money", "\n", "Initial coin offering", "\n", "Airdrop", "\n", "Virtual currency", "\n", "Crypto Valley", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", " ", "Category", "\n", " ", "Commons", "\n", " ", "List", "\n", "\n", "\n", "\n", "\n", "\n", "\n\n\n", "\n", "\n", "\n", "\n"], "lastUpdated": " 20 January 2018, at 06:38."}, +{"title": "Laravel", "text": ["\n", "\n", "\n", "\n", "\n", "\n", "\n", "This article has multiple issues.", " Please help ", "improve it", " or discuss these issues on the ", "talk page", ". ", "(", "Learn how and when to remove these template messages", ")", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "This article ", "relies too much on ", "references", " to ", "primary sources", ". ", "Please improve this by adding ", "secondary or tertiary sources", ".", " ", "(September 2015)", " ", "(", "Learn how and when to remove this template message", ")", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "Some of this article's ", "listed sources", " ", "may not be ", "reliable", ". ", "Please help this article by looking for better, more reliable sources. Unreliable citations may be challenged or deleted.", " ", "(September 2015)", " ", "(", "Learn how and when to remove this template message", ")", "\n", "\n", "\n", "\n", "\n", "\n", "(", "Learn how and when to remove this template message", ")", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "This article ", "has an unclear citation style", ". ", "The references used may be made clearer with a different or consistent style of ", "citation", ", ", "footnoting", ", or ", "external linking", ". ", "Violates Wikipedia:External links: \"Wikipedia articles may include links to web pages outside Wikipedia (external links), but they should not normally be used in the body of an article.\".", " ", "(November 2017)", " ", "(", "Learn how and when to remove this template message", ")", "\n", "\n", "\n", "\n", "\n", "Laravel", "\n", "\n", "\n", "\n", "\n", "Developer(s)", "\n", "Taylor Otwell", "\n", "\n", "\n", "Initial release", "\n", "June\u00a02011", "; 6\u00a0years ago", "\u00a0(", "2011-06", ")", "[1]", "\n", "\n", "\n", "\n", "\n", "\n", "Stable release", "\n", "\n", "5.5.0", "[2]", " / August\u00a030, 2017", "; 4 months ago", "\u00a0(", "2017-08-30", ")", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "Repository", "\n", "\n", "\n", "\n", "https://github.com/laravel/framework", "\n", "\n", "\n", "\n", "\n", "\n", "Development status", "\n", "Active", "\n", "\n", "\n", "Written in", "\n", "PHP", "\u00a07", "[a]", "\n", "\n", "\n", "Operating system", "\n", "Cross-platform", "\n", "\n", "\n", "Type", "\n", "Web framework", "\n", "\n", "\n", "License", "\n", "MIT License", "\n", "\n", "\n", "Website", "\n", "laravel", ".com", "\n", "\n", "\n", "Laravel", " is a ", "free", ", open-source", "[4]", " PHP ", "web framework", ", created by Taylor Otwell and intended for the development of web applications following the ", "model\u2013view\u2013controller", " (MVC) ", "architectural pattern", ". Some of the features of Laravel are a modular ", "packaging system", " with a dedicated dependency manager, different ways for accessing ", "relational databases", ", utilities that aid in ", "application deployment", " and maintenance, and its orientation toward ", "syntactic sugar", ".", "[5]", "[6]", ":", "2,5\u20139", "[7]", "[8]", "\n", "As of March 2015", "[update]", ", Laravel is regarded as one of the most popular ", "PHP", " frameworks, together with ", "Symfony", ", Zend, ", "CodeIgniter", ", ", "Yii2", " and others.", "[6]", ":", "1", "[9]", "\n", "The ", "source code", " of Laravel is hosted on ", "GitHub", " and licensed under the terms of ", "MIT License", ".", "[10]", "\n", "\n", "\n", "\n", "Contents", "\n", "\n", "\n", "1", " ", "History", "\n", "\n", "1.1", " ", "Release history", "\n", "\n", "\n", "2", " ", "Features", "\n", "\n", "2.1", " ", "Featured packages", "\n", "2.2", " ", "Artisan CLI", "\n", "\n", "\n", "3", " ", "Conferences", "\n", "4", " ", "Laravel Partners", "\n", "5", " ", "See also", "\n", "6", " ", "Notes", "\n", "7", " ", "References", "\n", "8", " ", "Further reading", "\n", "9", " ", "External links", "\n", "\n", "\n", "\n", "History", "[", "edit", "]", "\n", "Taylor Otwell created Laravel as an attempt to provide a more advanced alternative to the CodeIgniter framework, which did not provide certain features such as built-in support for user ", "authentication", " and ", "authorization", ". Laravel's first ", "beta release", " was made available on June 9, 2011, followed by the Laravel\u00a01 release later in the same month. Laravel\u00a01 included built-in support for authentication, ", "localisation", ", ", "models", ", ", "views", ", ", "sessions", ", routing and other mechanisms, but lacked support for ", "controllers", " that prevented it from being a true ", "MVC", " framework.", "[1]", "\n", "Laravel\u00a02 was released in September 2011, bringing various improvements from the author and community. Major new features included the support for controllers, which made Laravel\u00a02 a fully MVC-compliant framework, built-in support for the ", "inversion of control", " (IoC) principle, and a ", "templating system", " called ", "Blade", ". As a downside, support for third-party ", "packages", " was removed in Laravel\u00a02.", "[1]", "\n", "Laravel\u00a03 was released in February 2012 with a set of new features including the ", "command-line interface", " (CLI) named ", "Artisan", ", built-in support for more ", "database management systems", ", database migrations as a form of ", "version control", " for database layouts, support for handling ", "events", ", and a packaging system called ", "Bundles", ". An increase of Laravel's userbase and popularity lined up with the release of Laravel\u00a03.", "[1]", "\n", "Laravel\u00a04, codenamed ", "Illuminate", ", was released in May 2013. It was made as a complete rewrite of the Laravel framework, migrating its layout into a set of separate packages distributed through ", "Composer", ", which serves as an ", "application-level package manager", ". Such a layout improved the extensibility of Laravel\u00a04, which was paired with its official regular release schedule spanning six months between minor ", "point releases", ". Other new features in the Laravel\u00a04 release include ", "database seeding", " for the initial population of databases, support for ", "message queues", ", built-in support for sending different types of email, and support for delayed deletion of database records called ", "soft deletion", ".", "[1]", "[11]", ":", "18\u201319", "\n", "Laravel\u00a05 was released in February 2015 as a result of internal changes that ended up in renumbering the then-future Laravel\u00a04.3 release. New features in the Laravel\u00a05 release include support for scheduling periodically executed tasks through a package called ", "Scheduler", ", an abstraction layer called ", "Flysystem", " that allows remote storage to be used in the same way as local ", "file systems", ", improved handling of package assets through ", "Elixir", ", and simplified externally handled authentication through the optional ", "Socialite", " package. Laravel\u00a05 also introduced a new internal ", "directory tree", " structure for developed applications.", "[6]", ":", "13\u201314", "[12]", "\n", "Laravel\u00a05.1, released in June 2015, is the first release of Laravel to receive ", "long-term support", " (LTS), with planned availability of ", "bug fixes", " for two years and ", "security patches", " for three years. LTS releases of Laravel are planned to be released every two years.", "[13]", "\n", "Laravel\u00a05.3, released in August 23, 2016, The new features in 5.3 are focused on improving developer speed by adding additional out of the box improvements for common tasks.", "[14]", " ", "[15]", "\n", "Laravel 5.4, released in January 24, 2017, This release has many new features, like Laravel Dusk, Laravel Mix, Blade Components and Slots, Markdown Emails, Automatic Facades, Route Improvements, Higher Order Messaging for Collections, and many others.", "[16]", "\n", "Laravel 5.5, released in August 30, 2017", "\n", "Release history", "[", "edit", "]", "\n", "For LTS releases, such as Laravel 5.1, bug fixes are provided for 2 years and security fixes are provided for 3 years. These releases provide the longest window of support and maintenance. For general releases, bug fixes are provided for 6 months and security fixes are provided for 1 year.", "[17]", "\n", "\n", "\n", "\n", "Version", "\n", "Release date", "\n", "Notes", "\n", "\n", "\n", "Old version, no longer supported:", " 1.0", "\n", "June 2011", "\n", "NA", "\n", "\n", "\n", "Old version, no longer supported:", " 2.0", "\n", "September 2011", "\n", "NA", "\n", "\n", "\n", "Old version, no longer supported:", " 3.0", "\n", "February 22, 2012", "\n", "NA", "\n", "\n", "\n", "Old version, no longer supported:", " 3.1", "\n", "March 27, 2012", "\n", "NA", "\n", "\n", "\n", "Old version, no longer supported:", " 3.2", "\n", "May 22, 2012", "\n", "NA", "\n", "\n", "\n", "Old version, no longer supported:", " 4.0", "\n", "May 28, 2013", "\n", "NA", "\n", "\n", "\n", "Old version, no longer supported:", " 4.1", "\n", "December 11, 2013", "\n", "NA", "\n", "\n", "\n", "Old version, no longer supported:", " 4.2", "\n", "June 1, 2014", "\n", "NA", "\n", "\n", "\n", "Old version, no longer supported:", " 5.0", "\n", "February 4, 2015", "\n", "NA", "\n", "\n", "\n", "Older version, yet still supported:", " 5.1 LTS", "\n", "June 9, 2015", "\n", "NA", "\n", "\n", "\n", "Old version, no longer supported:", " 5.2", "\n", "December 21, 2015", "\n", "NA", "\n", "\n", "\n", "Old version, no longer supported:", " 5.3", "\n", "August 23, 2016", "\n", "NA", "\n", "\n", "\n", "Older version, yet still supported:", " 5.4", "\n", "January 24, 2017", "\n", "NA", "\n", "\n", "\n", "Current stable version:", " ", "5.5 LTS", "\n", "August 30, 2017", "\n", "NA", "\n", "\n", "\n", "Future release:", " 5.6", "\n", "February, 2018", "\n", "NA", "\n", "\n", "\n", "\n", "\n", "Legend:", "\n", "Old version", "\n", "Older version, still supported", "\n", "Current stable version", "\n", "Latest preview version", "\n", "Future release", "\n", "\n", "\n", "Source: GitHub", "[18]", "\n", "Features", "[", "edit", "]", "\n", "The following features serve as Laravel's key design points (where not specifically noted, descriptions refer to the features of Laravel\u00a03):", "[5]", "[6]", ":", "5\u20139", "[7]", "[8]", "[19]", "\n", "\n", "Bundles", " provide a modular ", "packaging system", " since the release of Laravel\u00a03, with bundled features already available for easy addition to applications. Furthermore, Laravel\u00a04 uses Composer as a dependency manager to add framework-agnostic and Laravel-specific PHP packages available from the ", "Packagist", " repository.", "[20]", "\n", "Eloquent ORM", " (", "object-relational mapping", ") is an advanced PHP implementation of the ", "active record pattern", ", providing at the same time internal methods for enforcing constraints on the relationships between ", "database", " objects. Following the active record pattern, Eloquent ORM presents ", "database tables", " as ", "classes", ", with their ", "object instances", " tied to single ", "table rows", ".", "[21]", "[22]", "\n", "Query builder", ", available since Laravel\u00a03, provides a more direct database access alternative to the Eloquent ORM. Instead of requiring ", "SQL queries", " to be written directly, Laravel's query builder provides a set of classes and ", "methods", " capable of building queries programmatically. It also allows selectable ", "caching", " of the results of executed queries.", "[23]", "\n", "Application logic", " is an integral part of developed applications, implemented either by using ", "controllers", " or as part of the route declarations. The ", "syntax", " used to define application logic is similar to the one used by ", "Sinatra", " framework.", "\n", "Reverse routing", " defines a relationship between the links and routes, making it possible for later changes to routes to be automatically propagated into relevant links. When the links are created by using names of existing routes, the appropriate ", "uniform resource identifiers", " (URIs) are automatically created by Laravel.", "\n", "Restful controllers", " provide an optional way for separating the logic behind serving ", "HTTP GET", " and ", "POST", " requests.", "\n", "Class auto loading", " provides automated loading of PHP classes without the need for manual maintenance of inclusion paths. On-demand loading prevents inclusion of unnecessary components, so only the actually used components are loaded.", "\n", "View", " composers", " serve as customizable logical code units that can be executed when a view is loaded.", "\n", "Blade", " ", "templating engine", " combines one or more templates with a ", "data model", " to produce resulting views, doing that by ", "transpiling", " the templates into cached PHP code for improved performance. Blade also provides a set of its own ", "control structures", " such as ", "conditional statements", " and ", "loops", ", which are internally mapped to their PHP counterparts. Furthermore, Laravel services may be called from Blade templates, and the templating engine itself can be extended with custom directives.", "[24]", "[25]", "\n", "IoC containers", " make it possible for new objects to be generated by following the ", "inversion of control", " (IoC) principle, in which the framework calls into the application- or task-specific code, with optional instantiating and referencing of new objects as ", "singletons", ".", "\n", "Migrations", " provide a ", "version control", " system for ", "database schemas", ", making it possible to associate changes in the application's ", "codebase", " and required changes in the database layout. As a result, this feature simplifies the ", "deployment", " and updating of Laravel-based applications.", "[26]", "\n", "Database seeding", " provides a way to populate database tables with selected default data that can be used for application ", "testing", " or be performed as part of the initial application setup.", "[26]", "\n", "Unit testing", " is provided as an integral part of Laravel,", "[11]", ":", "61\u201362", " which itself contains unit tests that detect and prevent ", "regressions", " in the framework. Unit tests can be run through the provided ", "artisan", " ", "command-line utility", ".", "\n", "Automatic pagination", " simplifies the task of implementing pagination, replacing the usual manual implementation approaches with automated methods integrated into Laravel.", "\n", "Form request", " is a feature of Laravel\u00a05 that serves as the base for ", "form", " input validation by internally binding ", "event", " listeners, resulting in automated invoking of the form validation methods and generation of the actual form.", "[27]", "\n", "Homestead", " - a ", "Vagrant", " ", "virtual machine", " that provides Laravel developers with all the tools necessary to develop Laravel straight out of the box, including, ", "Ubuntu", ", ", "Gulp", " , Bower and other development tools that are useful in developing full scale web applications.", "[28]", "\n", "\n", "Featured packages", "[", "edit", "]", "\n", "Ready-to-use bundles provided by Laravel through Composer and Packagist include the following:", "[3]", "\n", "\n", "Cashier", ", introduced in Laravel\u00a04.2, provides an interface for managing subscription billing services provided by ", "Stripe", ", such as handling ", "coupons", " and generating ", "invoices", ".", "\n", "SSH", ", introduced in Laravel\u00a04.1, allows programmatic execution of ", "CLI", " commands on remote servers using the ", "Secure Shell", " (SSH) as an encrypted ", "network protocol", ".", "\n", "Scheduler", ", introduced in Laravel\u00a05.0, is an addition to the Artisan that allows programmatic scheduling of periodically executed tasks. Internally, Scheduler relies on the ", "cron", " daemon to run a single Artisan job that, in turn, executes the configured tasks.", "\n", "Flysystem", ", introduced in Laravel\u00a05.0, is a ", "file system", " abstraction layer that allows local file systems and ", "cloud", "-based storage services provided by ", "Amazon\u00a0S3", " and ", "Rackspace Cloud", " to be used transparently and in the same way.", "\n", "Socialite", ", introduced in Laravel\u00a05.0 as an optional package, provides simplified mechanisms for authentication with different ", "OAuth", " providers, including ", "Facebook", ", ", "Twitter", ", ", "Google", ", ", "GitHub", " and ", "Bitbucket", ".", "[6]", ":", "13", "\n", "\n", "Artisan CLI", "[", "edit", "]", "\n", "Laravel's ", "command-line interface", " (CLI), called ", "Artisan", ", was initially introduced in Laravel\u00a03 with a limited set of capabilities. Laravel's later migration to a Composer-based architecture allowed Artisan to incorporate different components from the ", "Symfony", " framework, resulting in the availability of additional Artisan features in Laravel\u00a04.", "[11]", ":", "73\u201383", "[29]", "\n", "The features of Artisan are mapped to different subcommands of the ", "artisan", " command-line utility, providing functionality that aids in managing and building Laravel-based applications. Common uses of Artisan include managing database migrations and seeding, publishing package assets, and generating ", "boilerplate code", " for new controllers and migrations; the latter frees the developer from creating proper code ", "skeletons", ". The functionality and capabilities of Artisan can also be expanded by implementing new custom commands, which, for example, may be used to automate application-specific recurring tasks.", "[11]", ":", "73\u201383", "[29]", "\n", "Server requirements", "\n", "The Laravel framework has a few system requirements. Of course, all of these requirements are satisfied by the Laravel Homestead virtual machine, so it is highly recommended that you use Homestead as your local Laravel development environment.", "\n", "However, if you are not using Homestead, you will need to make sure your server meets the following requirements:", "\n", "\n ", "\u2022 PHP >= 7.0.0", "\n \u2022 OpenSSL PHP Extension\n \u2022 PDO PHP Extension\n \u2022 Mbstring PHP Extension\n \u2022 Tokenizer PHP Extension\n \u2022 XML PHP Extension\n", "\n", "Conferences", "[", "edit", "]", "\n", "Laracon", " is the official Laravel conference centered around the Laravel framework, covering its development, uses, and related general ", "software development", " topics. Laracon has taken place in the ", "United States", ", ", "Europe", " and online in the past.", "[30]", "[31]", " Typically, the conference happens in the ", "United States", " and ", "Europe", " every year. 2017 was the first year a Laracon was held as an online event only. As of March 2017, there are plans for more Laracons to be held online in the future.", "[32]", " Each year the conference has a different variety of sponsors and organizers, but Laravel, Laravel News and UserScape are usually the primary organizers. As of March 2017", "[update]", ", the following Laracons have been held or are announced:", "\n", "\n", "\n", "\n", "\nTaylor Otwell at the 2013 US Laracon", "\n", "\n", "\n", "\n", "\n", "Date", "\n", "Location", "\n", "\n", "\n", "February 22\u201323, 2013", "\n", "Washington, D.C.", "\n", "\n", "\n", "August 30\u201331, 2013", "[33]", "\n", "Amsterdam", "\n", "\n", "\n", "May 15\u201316, 2014", "\n", "New York City", "\n", "\n", "\n", "August 28\u201330, 2014", "[34]", "\n", "Amsterdam", "\n", "\n", "\n", "August 11\u201312, 2015", "[35]", "\n", "Louisville, Kentucky", "\n", "\n", "\n", "August 25\u201326, 2015", "[36]", "\n", "Amsterdam", "\n", "\n", "\n", "July 27\u201329, 2016", "[37]", "\n", "Louisville, Kentucky", "\n", "\n", "\n", "August 23\u201324, 2016", "[38]", "\n", "Amsterdam", "\n", "\n", "\n", "March 8, 2017", "[39]", "\n", "Online", "\n", "\n", "\n", "July 25\u201326, 2017", "[40]", "\n", "New York City", "\n", "\n", "\n", "August 28\u201330, 2017", "[41]", "[42]", "\n", "Amsterdam", "\n", "\n", "\n", "Laravel Partners", "[", "edit", "]", "\n", "On April 7, 2017, Taylor Otwell announced the Partners section of the Laravel website. The intention was to provide the Laravel community a recommended list of trusted companies who provide best-in-class Laravel development and guidance.", "[43]", " As of September, 2017, the current list of Laravel Partners includes", "\n", "\n", "Vehikl", "\n", "Tighten Co.", "\n", "Kirschbaum Development Group", "\n", "\n", "See also", "[", "edit", "]", "\n", "\n", "\n", "Computer programming portal", "\n", "Free software portal", "\n", "\n", "\n", "\n", "Comparison of web frameworks", "\n", "Comparison of web template engines", "\n", "\n", "Notes", "[", "edit", "]", "\n", "\n", "\n", "\n", "^", " ", "PHP version 5.3.7 or newer is required for Laravel versions 4.1 and older, Laravel\u00a04.2 and 5.0 require at least PHP\u00a05.4, while Laravel\u00a05.1 requires PHP\u00a05.5.9 or newer. Laravel\u00a05.5 requires PHP\u00a07.0.0 or newer.", "[3]", "\n", "\n", "\n", "\n", "References", "[", "edit", "]", "\n", "\n", "\n", "^ ", "a", " ", "b", " ", "c", " ", "d", " ", "e", " ", "Maks Surguy (July 27, 2013). ", "\"History of Laravel PHP framework, Eloquence emerging\"", ". ", "maxoffsky.com", ". Retrieved ", "May 10,", " 2015", ".", "\u00a0", "\n", "^", " ", "\"laravel/framework: Release v5.5.0\"", ". ", "github.com", ". August 30, 2017", ". Retrieved ", "August 30,", " 2017", ".", "\u00a0", "\n", "^ ", "a", " ", "b", " ", "\"Laravel documentation (version 5.3): Release notes\"", ". ", "laravel.com", ". Retrieved ", "August 29,", " 2015", ".", "\u00a0", "\n", "^", " ", "\"The real-time community site Voten goes open-source\"", ".", "\u00a0", "\n", "^ ", "a", " ", "b", " ", "Daniel Gafitescu (June 6, 2013). ", "\"Goodbye CodeIgniter, Hello Laravel\"", ". ", "sitepoint.com", ". Retrieved ", "December 21,", " 2013", ".", "\u00a0", "\n", "^ ", "a", " ", "b", " ", "c", " ", "d", " ", "e", " ", "Martin Bean (April 2015). ", "Laravel\u00a05 Essentials", ". ", "books.google.com", ". ", "Packt", ". ", "ISBN", "\u00a0", "978-1785283017", ". Retrieved ", "September 2,", " 2015", ".", "\u00a0", "\n", "^ ", "a", " ", "b", " ", "\"Laravel Documentation (versions 3.0\u20133.2.14)\"", ". ", "three.laravel.com", ". Retrieved ", "August 30,", " 2014", ".", "\u00a0", "\n", "^ ", "a", " ", "b", " ", "\"Laravel Documentation (version 4.2)\"", ". ", "laravel.com", ". Retrieved ", "August 30,", " 2014", ".", "\u00a0", "\n", "^", " ", "Bruno Skvorc (March 28, 2015). ", "\"Best PHP Framework for 2015 \u2013 SitePoint Survey Results\"", ". ", "sitepoint.com", ". Retrieved ", "June 14,", " 2015", ".", "\u00a0", "\n", "^", " ", "\"laravel/laravel: laravel/readme.md at master\"", ". ", "github.com", ". April 22, 2015", ". Retrieved ", "May 10,", " 2015", ".", "\u00a0", "\n", "^ ", "a", " ", "b", " ", "c", " ", "d", " ", "Rapha\u00ebl Saunier (January 2014). ", "Getting Started with Laravel\u00a04", ". ", "worldcat.org", ". ", "Packt", ". ", "ISBN", "\u00a0", "978-1783287031", ". Retrieved ", "September 2,", " 2015", ".", "\u00a0", "\n", "^", " ", "Eric Barnes (January 30, 2015). ", "\"Laravel\u00a05\"", ". ", "laravel-news.com", ". Retrieved ", "May 10,", " 2015", ".", "\u00a0", "\n", "^", " ", "Eric L. Barnes (June 9, 2015). ", "\"Laravel\u00a05.1 is released\"", ". ", "laravel-news.com", ". Retrieved ", "June 14,", " 2015", ".", "\u00a0", "\n", "^", " ", "Eric L. Barnes (August 23, 2016). ", "\"Laravel\u00a0 5.3 is now released\"", ". ", "laravel-news.com", ". Retrieved ", "August 23,", " 2016", ".", "\u00a0", "\n", "^", " ", "David oscar (August 23, 2016). ", "\"What's new in laravel\u00a0 5.3\"", ". ", "digitalsoft.in", ". Retrieved ", "August 23,", " 2016", ".", "\u00a0", "\n", "^", " ", "\"Laravel 5.4 Is Now Released\"", ". ", "Laravel News", ". 2017-01-24", ". Retrieved ", "2017-02-21", ".", "\u00a0", "\n", "^", " ", "\"Laravel Documentation: Releases\"", ". Laravel", ". Retrieved ", "February 26,", " 2017", ".", "\u00a0", "\n", "^", " ", "\"Github: Laravel\"", ". Laravel", ". Retrieved ", "February 26,", " 2017", ".", "\u00a0", "\n", "^", " ", "Jeffrey Way (November 28, 2012). ", "\"Why Laravel is Taking the PHP Community by Storm\"", ". ", "code.tutsplus.com", ". Retrieved ", "May 9,", " 2015", ".", "\u00a0", "\n", "^", " ", "\"Laravel documentation (version 4.2): Package development\"", ". ", "laravel.com", ". Retrieved ", "August 30,", " 2014", ".", "\u00a0", "\n", "^", " ", "\"Eloquent ORM in Laravel: What and Why!\"", ". ", "enukesoftware.com", ". Retrieved ", "December 19,", " 2014", ".", "\u00a0", "\n", "^", " ", "\"Develop Faster with the Laravel PHP Framework\"", ". ", "developer.com", ". Retrieved ", "April 17,", " 2015", ".", "\u00a0", "\n", "^", " ", "\"Laravel documentation (version 4.0): Query builder\"", ". ", "laravel.com", ". Retrieved ", "April 27,", " 2015", ".", "\u00a0", "\n", "^", " ", "\"Laravel documentation (version 5.1): Blade Templates\"", ". ", "laravel.com", ". Retrieved ", "June 10,", " 2015", ".", "\u00a0", "\n", "^", " ", "Dayle Rees (2014). ", "\"Laravel Blade engine\"", ". ", "daylerees.com", ". Retrieved ", "June 10,", " 2015", ".", "\u00a0", "\n", "^ ", "a", " ", "b", " ", "\"Laravel documentation (version 5.0): Migrations and seeding\"", ". ", "laravel.com", ". Retrieved ", "April 27,", " 2015", ".", "\u00a0", "\n", "^", " ", "Manmeet Anand. ", "\"Creating a Contact Form in Laravel\u00a05 Using the Form Request Feature!\"", ". ", "tisindia.com", ". Retrieved ", "March 2,", " 2015", ".", "\u00a0", "\n", "^", " ", "\"Laravel Homestead - Laravel the PHP Framework for Web artisans\"", ". Retrieved ", "30 October", " 2016", ".", "\u00a0", "\n", "^ ", "a", " ", "b", " ", "Jason Lewis (February 28, 2013). ", "\"Your One-Stop Guide to Laravel Commands\"", ". ", "code.tutsplus.com", ". Retrieved ", "May 9,", " 2015", ".", "\u00a0", "\n", "^", " ", "\"Laracon Online | The official worldwide Laravel online conference\"", ". ", "laracon.net", ". Retrieved ", "2017-03-24", ".", "\u00a0", "\n", "^", " ", "\"Search Results\"", ". ", "laravel-news.com", ". Retrieved ", "2017-03-24", ".", "\u00a0", "\n", "^", " ", "\"Supporting Laravel\"", ". ", "Medium", ". 2017-03-13", ". Retrieved ", "2017-03-24", ".", "\u00a0", "\n", "^", " ", "\"Laracon EU 2013\"", ". ", "laracon.eu", ". Retrieved ", "January 2,", " 2014", ".", "\u00a0", "\n", "^", " ", "\"Laracon EU 2014\"", ". ", "laracon.eu", ". Retrieved ", "August 30,", " 2014", ".", "\u00a0", "\n", "^", " ", "Eric L. Barnes (January 15, 2015). ", "\"Laracon 2015 will be in Louisville KY\"", ". ", "laravel-news.com", ". Retrieved ", "July 9,", " 2015", ".", "\u00a0", "\n", "^", " ", "\"Laracon EU 2015\"", ". ", "laracon.eu", ". Retrieved ", "July 9,", " 2015", ".", "\u00a0", "\n", "^", " ", "Eric L. Barnes (January 6, 2016). ", "\"Laracon tickets are now on sale\"", ". ", "laravel-news.com", ". Retrieved ", "January 7,", " 2016", ".", "\u00a0", "\n", "^", " ", "Eric L. Barnes (January 7, 2016). ", "\"Laracon EU tickets on sale\"", ". ", "laravel-news.com", ". Retrieved ", "April 7,", " 2016", ".", "\u00a0", "\n", "^", " ", "\"Announcing Laracon Online\"", ". ", "Laravel News", ". 2017-02-06", ". Retrieved ", "2017-03-24", ".", "\u00a0", "\n", "^", " ", "\"Laracon 2017 \u2013 Location and dates have been announced\"", ". ", "Laravel News", ". 2016-11-09", ". Retrieved ", "2017-03-24", ".", "\u00a0", "\n", "^", " ", "WebEngineers. ", "\"Announcing Laracon EU 2017 the official European Laravel conference\"", ". ", "Laracon EU 2017", ". Retrieved ", "2017-03-24", ".", "\u00a0", "\n", "^", " ", "\"Laracon EU 2017 is Announced\"", ". ", "Laravel News", ". 2017-01-16", ". Retrieved ", "2017-03-24", ".", "\u00a0", "\n", "^", " ", "Otwell, Taylor (2017-04-07). ", "\"Laravel Partners\"", ". ", "Taylor Otwell", ". Retrieved ", "2017-09-04", ".", "\u00a0", "\n", "\n", "\n", "[1]", "\n", "Further reading", "[", "edit", "]", "\n", "\n", "Laravel Design Patterns and Best Practices, Packt, ", "ISBN", "\u00a0", "978-1783287987", ", July 2014, by Arda K\u0131l\u0131\u00e7da\u011f\u0131 and H. \u0130brahim Yilmaz", "\n", "\n", "External links", "[", "edit", "]", "\n", "\n", "\n", "\n", "Wikimedia Commons has media related to ", "Laravel", ".", "\n", "\n", "\n", "\n", "Official website", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "v", "\n", "t", "\n", "e", "\n", "\n", "\n", "PHP", "\n", "\n", "\n", "\n", "People", "\n", "\n", "\n", "\n", "Andi Gutmans", "\n", "Rasmus Lerdorf", "\n", "Zeev Suraski", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "Resources", "\n", "\n", "\n", "\n", "Accelerator", " (", "List", ")", "\n", "Composer", "\n", "Editors", "\n", "Libraries", "\n", "PEAR", "\n", "\n", "\n", "\n", "\n", "\n", "Implementations", "\n", "\n", "\n", "\n", "HHVM", "\n", "HPHPc", "\n", "Parrot", "\n", "Phalanger", "\n", "Project Zero", "\n", "Quercus", "\n", "Zend Engine", "\n", "\n", "\n", "\n", "\n", "\n", "Web frameworks", "\n", "\n", "\n", "\n", "CakePHP", "\n", "CodeIgniter", "\n", "Drupal", "\n", "eZ Publish", "\n", "Fat-Free", "\n", "FuelPHP", "\n", "Horde", "\n", "Joomla!", "\n", "Laravel", "\n", "Lithium", "\n", "Midgard", "\n", "MODx", "\n", "Nette Framework", "\n", "Phalcon", "\n", "Pop PHP", "\n", "PRADO", "\n", "Qcodo", "\n", "Silex", "\n", "SilverStripe", "\n", "Symfony", "\n", "TYPO3", "\n", "WordPress", "\n", "Xaraya", "\n", "XOOPS", "\n", "Yii", "\n", "Zend Framework", "\n", "Zeta Components", "\n", "\n", "\n", "\n", "\n", "\n", "Testing", "\n", "\n", "\n", "\n", "Behat", "\n", "PHPUnit", "\n", "PHP Unit Testing Framework", "\n", "Lime", " (", "Symfony", ")", "\n", "\n", "\n", "\n", "\n", "\n", "ORMs", "\n", "\n", "\n", "\n", "Doctrine", "\n", "Propel", "\n", "\n", "\n", "\n", "\n", "\n", "IDEs", "\n", "\n", "\n", "\n", "Aptana", "\n", "Codelobster", "\n", "Eclipse PDT", "\n", "NetBeans", "\n", "PHPEdit", "\n", "PhpStorm", "\n", "RadPHP", "\n", "Zend Studio", "\n", "\n", "\n", "\n", "\n", "\n", "Widget toolkit", "\n", "\n", "\n", "\n", "PHP-GTK", "\n", "PHP-Qt", "\n", "wxPHP", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", " ", "Category", "\n", " ", "Commons", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "v", "\n", "t", "\n", "e", "\n", "\n", "\n", "Web frameworks", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "Comparison", "\n", "\n", "\n", "\n", "\n", "\n", "C++", "\n", "\n", "\n", "\n", "CppCMS", "\n", "Wt", "\n", "\n", "\n", "\n", "\n", "\n", "CLI", "\n", "\n", "\n", "\n", "ASP.NET", "\n", "\n", "Core", "\n", "AJAX", "\n", "Dynamic Data", "\n", "MVC", "\n", "Razor", "\n", "Web Forms", "\n", "\n", "\n", "DNN", "\n", "BFC", "\n", "MonoRail", "\n", "OpenRasta", "\n", "Umbraco", "\n", "\n", "\n", "\n", "\n", "\n", "ColdFusion", "\n", "\n", "\n", "\n", "CFWheels", "\n", "ColdBox Platform", "\n", "ColdSpring", "\n", "Fusebox", "\n", "Mach-II", "\n", "Model-Glue", "\n", "\n", "\n", "\n", "\n", "\n", "Common Lisp", "\n", "\n", "\n", "\n", "Caveman2", "\n", "CL-HTTP", "\n", "UnCommon Web", "\n", "Weblocks", "\n", "\n", "\n", "\n", "\n", "\n", "Haskell", "\n", "\n", "\n", "\n", "Happstack", "\n", "Yesod", "\n", "Snap", "\n", "\n", "\n", "\n", "\n", "\n", "Java", "\n", "\n", "\n", "\n", "AppFuse", "\n", "Flexive", "\n", "Grails", "\n", "GWT", "\n", "ICEfaces", "\n", "ItsNat", "\n", "JavaServer Faces", "\n", "JHipster", "\n", "Jspx", "\n", "JWt", "\n", "OpenXava", "\n", "Play", "\n", "Reasonable Server Faces", "\n", "Remote Application Platform", "\n", "RIFE", "\n", "Seam", "\n", "Sling", "\n", "Spring", "\n", "Stripes", "\n", "Struts", "\n", "Tapestry", "\n", "Vaadin", "\n", "Vert.x", "\n", "WebWork", "\n", "Wicket", "\n", "WaveMaker", "\n", "ZK", "\n", "\n", "\n", "\n", "\n", "\n", "JavaScript", "\n", "\n", "\n", "\n", "Ample SDK", "\n", "Angular", "/", "AngularJS", "\n", "Backbone.js", "\n", "Chaplin.js", "\n", "Closure", "\n", "Dojo Toolkit", "\n", "Ember.js", "\n", "Ext JS", "\n", "jQuery", "\n", "Meteor", "\n", "MooTools", "\n", "Node.js", "\n", "OpenUI5", "\n", "Prototype", "\n", "React", "\n", "Rico", "\n", "script.aculo.us", "\n", "Sencha Touch", "\n", "SproutCore", "\n", "Wakanda", "\n", "\n", "\n", "\n", "\n", "\n", "Perl", "\n", "\n", "\n", "\n", "Catalyst", "\n", "Dancer", "\n", "Mason", "\n", "Maypole", "\n", "Mojolicious", "\n", "WebGUI", "\n", "\n", "\n", "\n", "\n", "\n", "PHP", "\n", "\n", "\n", "\n", "CakePHP", "\n", "CodeIgniter", "\n", "Drupal", "\n", "Fat-Free", "\n", "FuelPHP", "\n", "Flow", "\n", "Gyroscope", "\n", "Horde", "\n", "Kohana", "\n", "Laravel", "\n", "Lithium", "\n", "Midgard", "\n", "MODX", "\n", "Nette", "\n", "Phalcon", "\n", "Pop PHP", "\n", "PRADO", "\n", "ProcessWire", "\n", "Qcodo", "\n", "Silex", "\n", "SilverStripe", "\n", "Symfony", "\n", "TYPO3", "\n", "Xaraya", "\n", "XOOPS", "\n", "Yii", "\n", "Zend Framework", "\n", "\n", "\n", "\n", "\n", "\n", "Python", "\n", "\n", "\n", "\n", "BlueBream", "\n", "CherryPy", "\n", "Django", "\n", "Flask", "\n", "Grok", "\n", "Nevow", "\n", "Pyjs", "\n", "Pylons", "\n", "Pyramid", "\n", "Quixote", "\n", "TACTIC", "\n", "Tornado", "\n", "TurboGears", "\n", "web2py", "\n", "Webware", "\n", "Zope 2", "\n", "\n", "\n", "\n", "\n", "\n", "Ruby", "\n", "\n", "\n", "\n", "Camping", "\n", "Merb", "\n", "Padrino", "\n", "Ruby on Rails", "\n", "Sinatra", "\n", "\n", "\n", "\n", "\n", "\n", "Scala", "\n", "\n", "\n", "\n", "Lift", "\n", "Play", "\n", "Scalatra", "\n", "\n", "\n", "\n", "\n", "\n", "Smalltalk", "\n", "\n", "\n", "\n", "AIDA/Web", "\n", "Seaside", "\n", "\n", "\n", "\n", "\n", "\n", "Other languages", "\n", "\n", "\n", "\n", "Vibe.d", " (", "D", ")", "\n", "Application Express", " (", "PL/SQL", ")", "\n", "Grails", " (", "Groovy", ")", "\n", "Kepler", " (", "Lua", ")", "\n", "Rocket", " (", "Rust", ")", "\n", "OpenACS", " (", "Tcl", ")", "\n", "Phoenix", " (", "Elixir", ")", "\n", "SproutCore", " (", "JavaScript", "-", "Ruby", ")", "\n", "Yaws", " (", "Erlang", ")", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "^", " ", "http://www.mindinventory.com/blog/laravel-the-best-php-framework-for-web-development/", "\n", "\n", "\n\n\n", "\n", "\n", "\n", "\n"], "lastUpdated": " 9 January 2018, at 10:32."}, +{"title": "Django (web framework)", "text": ["For other uses, see ", "Django", ".", "\n", "\n", "Django", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "Original author(s)", "\n", "Lawrence Journal-World", "\n", "\n", "\n", "Developer(s)", "\n", "Django Software Foundation", "\n", "\n", "\n", "Initial release", "\n", "21\u00a0July 2005", "; 12 years ago", "\u00a0(", "2005-07-21", ")", "[1]", "\n", "\n", "\n", "\n", "\n", "\n", "Stable release", "\n", "2.0.1", "[2]", " ", "(1\u00a0January 2018", "; 17 days ago", "\u00a0(", "2018-01-01", ")", ")", " ", "[\u00b1]", "\n", "\n", "\n", "Preview release", "\n", "2.0 release candidate 1", "[3]", " ", "[\u00b1]", "\n", "\n", "\n", "\n", "\n", "\n", "Repository", "\n", "\n", "\n", "\n", "https://github.com/django/django", "\n", "\n", "\n", "\n", "\n", "\n", "Development status", "\n", "Active", "\n", "\n", "\n", "Written in", "\n", "Python", "\n", "\n", "\n", "Size", "\n", "7.6 ", "MB", "[4]", "\n", "\n", "\n", "Type", "\n", "Web framework", "\n", "\n", "\n", "License", "\n", "3-clause BSD", "\n", "\n", "\n", "Website", "\n", "www", ".djangoproject", ".com", "\n", "\n", "\n", "Django", " (", "/", "\u02c8", "d\u0292", "\u00e6", "\u014b", "\u0261", "o\u028a", "/", " ", "JANG", "-goh", ")", "[5]", " is a ", "free and open-source", " ", "web framework", ", written in ", "Python", ", which follows the model-view-template (MVT) ", "architectural pattern", ".", "[6]", "[7]", " It is maintained by the ", "Django Software Foundation", " (DSF), an independent organization established as a ", "501(c)(3)", " non-profit.", "\n", "Django's primary goal is to ease the creation of complex, database-driven websites. Django emphasizes ", "reusability", " and \"pluggability\" of components, rapid development, and the principle of ", "don't repeat yourself", ". Python is used throughout, even for settings files and data models. Django also provides an optional administrative ", "create, read, update and delete", " interface that is generated dynamically through ", "introspection", " and configured via admin models.", "\n", "Some well-known sites that use Django include the ", "Public Broadcasting Service", ",", "[8]", " ", "Instagram", ",", "[9]", " ", "Mozilla", ",", "[10]", " ", "The Washington Times", ",", "[11]", " ", "Disqus", ",", "[12]", " ", "Bitbucket", ",", "[13]", " and ", "Nextdoor", ".", "[14]", " It was used on ", "Pinterest", ",", "[15]", " but later the site moved to a framework built over ", "Flask", ".", "[16]", "\n", "\n", "\n", "\n", "Contents", "\n", "\n", "\n", "1", " ", "History", "\n", "2", " ", "Features", "\n", "\n", "2.1", " ", "Components", "\n", "2.2", " ", "Bundled applications", "\n", "2.3", " ", "Extensibility", "\n", "2.4", " ", "Server arrangements", "\n", "\n", "\n", "3", " ", "Version history", "\n", "4", " ", "Development tools with Django support", "\n", "5", " ", "Community", "\n", "6", " ", "Ports to other languages", "\n", "7", " ", "Bibliography", "\n", "8", " ", "See also", "\n", "9", " ", "References", "\n", "10", " ", "External links", "\n", "\n", "\n", "\n", "History", "[", "edit", "]", "\n", "Django was created in the fall of 2003, when the ", "web programmers", " at the ", "Lawrence Journal-World", " newspaper, ", "Adrian Holovaty", " and ", "Simon Willison", ", began using Python to build applications.", "[17]", " It was released publicly under a ", "BSD license", " in July 2005. The framework was named after guitarist ", "Django Reinhardt", ".", "[17]", "\n", "In June 2008, it was announced that a newly formed ", "Django Software Foundation", " (DSF) would maintain Django in the future.", "[18]", "\n", "Features", "[", "edit", "]", "\n", "Components", "[", "edit", "]", "\n", "\n", "\n", "\n", "\nScreenshot of the Django admin interface for modifying a user account.", "\n", "\n", "\n", "Despite having its own nomenclature, such as naming the callable objects generating the ", "HTTP", " responses \"views\",", "[6]", " the core Django framework can be seen as an ", "MVC", " architecture.", "[7]", " It consists of an ", "object-relational mapper", " (ORM) that mediates between ", "data models", " (defined as Python classes) and a ", "relational database", " (\"", "M", "odel\"), a system for processing HTTP requests with a ", "web templating system", " (\"", "V", "iew\"), and a ", "regular-expression", "-based ", "URL", " dispatcher (\"", "C", "ontroller\").", "\n", "Also included in the core framework are:", "\n", "\n", "a lightweight and standalone web server for development and testing", "\n", "a form serialization and validation system that can translate between ", "HTML", " forms and values suitable for storage in the database", "\n", "a template system that utilizes the concept of ", "inheritance", " borrowed from object-oriented programming", "\n", "a ", "caching", " framework that can use any of several cache methods", "\n", "support for ", "middleware", " classes that can intervene at various stages of request processing and carry out custom functions", "\n", "an internal dispatcher system that allows components of an application to communicate events to each other via pre-defined signals", "\n", "an ", "internationalization", " system, including translations of Django's own components into a variety of languages", "\n", "a ", "serialization", " system that can produce and read ", "XML", " and/or ", "JSON", " representations of Django model instances", "\n", "a system for extending the capabilities of the template engine", "\n", "an interface to Python's built-in ", "unit test", " framework", "\n", "\n", "Bundled applications", "[", "edit", "]", "\n", "The main Django distribution also bundles a number of applications in its \"contrib\" package, including:", "\n", "\n", "an extensible authentication system", "\n", "the dynamic administrative interface", "\n", "tools for generating ", "RSS", " and ", "Atom", " syndication feeds", "\n", "a site's framework that allows one Django installation to run multiple websites, each with their own content and applications", "\n", "tools for generating ", "Google Sitemaps", "\n", "built-in mitigation for ", "cross-site request forgery", ", ", "cross-site scripting", ", ", "SQL injection", ", ", "password cracking", " and other typical web attacks, most of them turned on by default", "[19]", "[20]", "\n", "a framework for creating ", "GIS", " applications", "\n", "\n", "Extensibility", "[", "edit", "]", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "This section ", "relies too much on ", "references", " to ", "primary sources", ". ", "Please improve this section by adding ", "secondary or tertiary sources", ".", " ", "(January 2015)", " ", "(", "Learn how and when to remove this template message", ")", "\n", "\n", "\n", "\n", "Django's configuration system allows third party code to be plugged into a regular project, provided that it follows the reusable app", "[21]", " conventions. More than 2500 packages", "[22]", " are available to extend the framework's original behavior, providing solutions to issues the original tool didn't tackle: registration, search, ", "API", " provision and consumption, ", "CMS", ", etc.", "\n", "This extensibility is, however, mitigated by internal components dependencies. While the Django philosophy implies loose coupling,", "[23]", " the template filters and tags assume one engine implementation, and both the auth and admin bundled applications require the use of the internal ", "ORM", ". None of these filters or bundled apps are mandatory to run a Django project, but reusable apps tend to depend on them, encouraging developers to keep using the official stack in order to benefit fully from the apps ecosystem.", "\n", "Server arrangements", "[", "edit", "]", "\n", "Django can be run in conjunction with ", "Apache", ", ", "Nginx", " using ", "WSGI", ", ", "Gunicorn", ", or ", "Cherokee", " using flup (a Python module).", "[24]", "[25]", " Django also includes the ability to launch a ", "FastCGI", " server, enabling use behind any web server which supports FastCGI, such as ", "Lighttpd", " or ", "Hiawatha", ". It is also possible to use other ", "WSGI", "-compliant web servers.", "[26]", " Django officially supports four database backends: ", "PostgreSQL", ", ", "MySQL", ", ", "SQLite", ", and ", "Oracle", ". ", "Microsoft SQL Server", " can be used with django-mssql on ", "Microsoft", " ", "operating systems", ",", "[27]", " while similarly external backends exist for ", "IBM Db2", ",", "[28]", " ", "SQL Anywhere", "[29]", " and ", "Firebird", ".", "[30]", " There is a ", "fork", " named django-nonrel, which supports ", "NoSQL", " databases, such as ", "MongoDB", " and ", "Google App Engine", "'s Datastore.", "[31]", "\n", "Django may also be run in conjunction with ", "Jython", " on any ", "Java EE", " application server such as ", "GlassFish", " or ", "JBoss", ". In this case django-jython must be installed in order to provide ", "JDBC", " drivers for database connectivity, which also can provide functionality to compile Django in to a .war suitable for deployment.", "[32]", "\n", "Google App Engine", " includes support for Django version 1.x.x", "[33]", " as one of the bundled frameworks.", "\n", "Version history", "[", "edit", "]", "\n", "The Django team will occasionally designate certain releases to be \u201cLong-term support\u201d (LTS) releases.", "[34]", " LTS releases will get security and data loss fixes applied for a guaranteed period of time, typically 3+ years, regardless of the pace of releases afterwards.", "\n", "\n", "\n", "Version", "\n", "Date", "[35]", "\n", "Notes", "[36]", "\n", "\n", "\n", "Old version, no longer supported:", " 0.90", "[37]", "\n", "000000002005-11-16-0000", "16 Nov 2005", "\n", "\n", "\n", "\n", "Old version, no longer supported:", " 0.91", "[38]", "\n", "000000002006-01-11-0000", "11 Jan 2006", "\n", "\"new-admin\"", "\n", "\n", "\n", "Old version, no longer supported:", " 0.95", "[39]", "\n", "000000002006-07-29-0000", "29 Jul 2006", "\n", "\"magic removal\"", "\n", "\n", "\n", "Old version, no longer supported:", " 0.96", "[40]", "\n", "000000002007-03-23-0000", "23 Mar 2007", "\n", "\"newforms\", testing tools", "\n", "\n", "\n", "Old version, no longer supported:", " 1.0", "[41]", "\n", "000000002008-09-03-0000", "3 Sep 2008", "\n", "API stability, decoupled admin, unicode", "\n", "\n", "\n", "Old version, no longer supported:", " 1.1", "[42]", "\n", "000000002009-07-29-0000", "29 Jul 2009", "\n", "Aggregates, transaction based tests", "\n", "\n", "\n", "Old version, no longer supported:", " 1.2", "[43]", "\n", "000000002010-05-17-0000", "17 May 2010", "\n", "Multiple db connections, ", "CSRF", ", model validation", "\n", "\n", "\n", "Old version, no longer supported:", " 1.3", "[44]", "\n", "000000002011-03-23-0000", "23 Mar 2011", "\n", "Class based views, staticfiles", "\n", "\n", "\n", "Old version, no longer supported:", " 1.4 LTS", "[45]", "\n", "000000002012-03-23-0000", "23 Mar 2012", "\n", "Timezones, in browser testing, app templates.", "\n", "\n", "\n", "Old version, no longer supported:", " 1.5", "[46]", "\n", "000000002013-02-26-0000", "26 Feb 2013", "\n", "Python 3 Support, configurable user model", "\n", "\n", "\n", "Old version, no longer supported:", " 1.6", "[47]", "\n", "000000002013-11-06-0000", "6 Nov 2013", "\n", "Dedicated to Malcolm Tredinnick, db transaction management, connection pooling.", "\n", "\n", "\n", "Old version, no longer supported:", " 1.7", "[48]", "\n", "000000002014-09-02-0000", "2 Sep 2014", "\n", "Migrations, application loading and configuration.", "\n", "\n", "\n", "Older version, yet still supported:", " 1.8 LTS", "[49]", "\n", "000000002015-04-01-0000", "1 Apr 2015", "\n", "Native support for multiple template engines. ", "Supported until at least April 2018", "\n", "\n", "\n", "Old version, no longer supported:", " 1.9", "[50]", "\n", "000000002015-12-01-0000", "1 Dec 2015", "\n", "Automatic password validation. New styling for admin interface.", "\n", "\n", "\n", "Old version, no longer supported:", " 1.10", "[51]", "\n", "000000002016-08-01-0000", "1 Aug 2016", "\n", "Full text search for PostgreSQL. New-style middleware.", "\n", "\n", "\n", "Older version, yet still supported:", " 1.11 LTS", "[52]", "\n", "000000002017-04-04-0000", "4 Apr 2017", "\n", "Last version to support Python 2.7. ", "Supported until at least April 2020", "\n", "\n", "\n", "Current stable version:", " ", "2.0", "[53]", "\n", "000000002017-12-01-0000", "Dec 2017", "\n", "First Python 3-only release, Simplified URL routing syntax, Mobile friendly admin.", "\n", "\n", "\n", "Future release:", " 2.1", "[53]", "\n", "000000002018-08-01-0000", "Aug 2018", "\n", "\n", "\n", "\n", "Future release:", " 2.2 LTS", "[53]", "\n", "000000002019-04-01-0000", "Apr 2019", "\n", "Supported until at least April 2022", "\n", "\n", "\n", "Future release:", " 3.0", "[53]", "\n", "000000002019-12-01-0000", "Dec 2019", "\n", "\n", "\n", "\n", "Future release:", " 3.1", "[53]", "\n", "000000002020-08-01-0000", "Aug 2020", "\n", "\n", "\n", "\n", "Future release:", " 3.2 LTS", "[53]", "\n", "000000002021-04-01-0000", "Apr 2021", "\n", "Supported until at least April 2024", "\n", "\n", "\n", "\n", "\n", "Legend:", "\n", "Old version", "\n", "Older version, still supported", "\n", "Latest version", "\n", "Latest preview version", "\n", "Future release", "\n", "\n", "\n", "\n", "\n", "\n", "Development tools with Django support", "[", "edit", "]", "\n", "For developing a Django project, no special tools are necessary, since the source code can be edited with any conventional ", "text editor", ". Nevertheless, editors specialized on ", "computer programming", " can help increase the productivity of development, e.g. with features such as ", "syntax highlighting", ". Since Django is written in Python, text editors which are aware of Python syntax are beneficial in this regard.", "\n", "Integrated development environments", " (IDE) add further functionality, such as debugging, refactoring, unit testing, etc. As with plain editors, IDEs with support for Python can be beneficial. Some IDEs that are specialized on Python additionally have integrated support for Django projects, so that using such an IDE when developing a Django project can help further increase productivity. For comparison of such Python IDEs, see the main article:", "\n", "Main article: ", "Comparison of integrated development environments \u00a7\u00a0Python", "\n", "Community", "[", "edit", "]", "\n", "There is a semiannual conference for Django developers and users, named \"DjangoCon\", that has been held since September 2008. DjangoCon is held annually in Europe, in May or June;", "[54]", " while another is held in the United States in August or September, in various cities.", "[55]", " The 2012 DjangoCon took place in Washington D.C. from 3 to 8 September. 2013 DjangoCon was held in Chicago at the Hyatt Regency Hotel and the post-conference ", "Sprints", " were hosted at Digital Bootcamp, computer training center.", "[56]", " The 2014 DjangoCon US returned to Portland, OR from 30 August to 6 September. The 2015 DjangoCon US was held in Austin, TX from 6 to 11 September at the AT&T Executive Center. The 2016 DjangoCon US was held in Philadelphia, PA at The ", "Wharton School of the University of Pennsylvania", " from 17 to 22 July.", "[57]", "\n", "Django mini-conferences were held in ", "Hobart", ", Australia in July 2013, in ", "Brisbane", ", Australia in August 2014 and 2015, and in ", "Melbourne", ", Australia in 2016.", "[58]", "\n", "Ports to other languages", "[", "edit", "]", "\n", "Programmers have ported Django's template design from Python to other languages, providing decent cross-platform support. Some of these options are more direct ports; others, though inspired by Django and retaining its concepts, take the liberty to deviate from Django's design:", "\n", "\n", "Liquid for ", "Ruby", "[59]", "\n", "Template::Swig for ", "Perl", "[60]", "\n", "Twig for ", "PHP", "[61]", "\n", "Jinja for ", "Python", "[62]", "\n", "ErlyDTL for ", "Erlang", "[63]", "\n", "\n", "Bibliography", "[", "edit", "]", "\n", "\n", "\n", "Roy Greenfeld, Daniel; Roy Greenfeld, Audrey (2015), ", "Two Scoops of Django: Best Practices for Django 1.8", " (3rd ed.), Two Scoops Press, p.\u00a0531, ", "ISBN", "\u00a0", "0981467342", "\u00a0", "\n", "Jaiswal, Sanjeev; Kumar, Ratan (22 June 2015), ", "Learning Django Web Development", " (1st ed.), Packt, p.\u00a0405, ", "ISBN", "\u00a0", "1783984406", "\u00a0", "\n", "Ravindrun, Arun (31 March 2015), ", "Django Design Patterns and Best Practices", " (1st ed.), Packt, p.\u00a0180, ", "ISBN", "\u00a0", "1783986646", "\u00a0", "\n", "Osborn, Tracy (May 2015), ", "Hello Web App", " (1st ed.), Tracy Osborn, p.\u00a0142, ", "ISBN", "\u00a0", "0986365912", "\u00a0", "\n", "Bendoraitis, Aidas (October 2014), ", "Web Development with Django Cookbook", " (1st ed.), Packt, p.\u00a0294, ", "ISBN", "\u00a0", "178328689X", "\u00a0", "\n", "Baumgartner, Peter; Malet, Yann (2015), ", "High Performance Django", " (1st ed.), Lincoln Loop, p.\u00a0184, ", "ISBN", "\u00a0", "1508748128", "\u00a0", "\n", "Elman, Julia; Lavin, Mark (2014), ", "Lightweight Django", " (1st ed.), O'Reilly Media, p.\u00a0246, ", "ISBN", "\u00a0", "149194594X", "\u00a0", "\n", "Percival, Harry (2014), ", "Test-Driven Development with Python", " (1st ed.), O'Reilly Media, p.\u00a0480, ", "ISBN", "\u00a0", "1449364829", "\u00a0", "\n", "\n", "\n", "This list is an extraction from ", "Current Django Books", "\n", "See also", "[", "edit", "]", "\n", "\n", "\n", "Free software portal", "\n", "\n", "\n", "\n", "Flask (web framework)", "\n", "Pylons project", "\n", "Comparison of web frameworks", "\n", "Web2py", "\n", "\n", "\n", "References", "[", "edit", "]", "\n", "\n", "\n", "^", " ", "\"Django FAQ\"", ". Retrieved ", "2 September", " 2014", ".", "\u00a0", "\n", "^", " ", "Graham, Tim (1 January 2018). ", "\"Django bugfix releases: 2.0.1 and 1.11.9\"", ". ", "Django Weblog", ". Retrieved ", "2 January", " 2018", ".", "\u00a0", "\n", "^", " ", "Graham, Tim (15 November 2017). ", "\"Django 2.0 release candidate 1 released\"", ". ", "Django Weblog", ". Retrieved ", "16 November", " 2017", ".", "\u00a0", "\n", "^", " ", "\"Django Download\"", ". Retrieved ", "2 January", " 2018", ".", "\u00a0", "\n", "^", " ", "\"FAQ: General - Django documentation - Django\"", ". Retrieved ", "30 April", " 2016", ".", "\u00a0", "\n", "^ ", "a", " ", "b", " ", "\"FAQ: General - Django documentation - Django\"", ". Retrieved ", "30 April", " 2016", ".", "\u00a0", "\n", "^ ", "a", " ", "b", " ", "Adrian Holovaty, Jacob Kaplan-Moss; et al. ", "The Django Book", ". ", "Django follows this MVC pattern closely enough that it can be called an MVC framework", "\u00a0", "\n", "^", " ", "\"20 Creative Websites Running Django\"", ".", "\u00a0", "\n", "^", " ", "\"What Powers Instagram: Hundreds of Instances, Dozens of Technologies\"", ".", "\u00a0", "\n", "^", " ", "\"Python\"", ". ", "Mozilla Developer Network", ". Retrieved ", "30 April", " 2016", ".", "\u00a0", "\n", "^", " ", "Opensource.washingtontimes.com", ". Retrieved on 2014-05-30.", "\n", "^", " ", "\"Scaling Django to 8 Billion Page Views\"", ".", "\u00a0", "\n", "^", " ", "\"DjangoSuccessStoryBitbucket \u2013 Django\"", ". Retrieved ", "30 April", " 2016", ".", "\u00a0", "\n", "^", " ", "\"The anti-Facebook: one in four American neighborhoods are now using this private social network\"", ". ", "The Verge", ". Retrieved ", "16 June", " 2016", ".", "\u00a0", "\n", "^", " ", "\"What is the technology stack behind Pinterest?\"", ". Retrieved ", "30 April", " 2016", ".", "\u00a0", "\n", "^", " ", "\"Sai Deep Chand G's answer to What is the technology stack behind Pinterest? - Quora\"", ". ", "www.quora.com", ". Retrieved ", "2017-05-20", ".", "\u00a0", "\n", "^ ", "a", " ", "b", " ", "\"Django's History\"", ". The Django Book", ". Retrieved ", "6 June", " 2013", ".", "\u00a0", "\n", "^", " ", "\"Announcing the Django Software Foundation - Weblog - Django\"", ". Retrieved ", "30 April", " 2016", ".", "\u00a0", "\n", "^", " ", "\"Security in Django\"", ". Django Project", ". Retrieved ", "25 March", " 2013", ".", "\u00a0", "\n", "^", " ", "Socol, James (2012). ", "\"Best Basic Security Practices (Especially with Django)\"", ". Retrieved ", "25 March", " 2013", ".", "\u00a0", "\n", "^", " ", "\"What is a reusable app? \u2014 django-reusable-app-docs 0.1.0 documentation\"", ". Retrieved ", "30 April", " 2016", ".", "\u00a0", "\n", "^", " ", "\"Django Packages\"", ". Retrieved ", "30 April", " 2016", ".", "\u00a0", "\n", "^", " ", "\"Design philosophies - Django documentation - Django\"", ". Retrieved ", "30 April", " 2016", ".", "\u00a0", "\n", "^", " ", "Django documentation of deployment", " ", "Archived", " 11 January 2012 at the ", "Wayback Machine", ".", "\n", "^", " ", "\"Cherokee Web Server - Cookbook Setting up Django - Cherokee Documentation\"", ". Retrieved ", "30 April", " 2016", ".", "\u00a0", "\n", "^", " ", "How to use Django with Apache and mod_wsgi", " ", "Archived", " 8 March 2013 at the ", "Wayback Machine", ".. Official Django documentation.", "\n", "^", " ", "\"Manfre / django-mssql / source / \u2014 Bitbucket\"", ". Retrieved ", "30 April", " 2016", ".", "\u00a0", "\n", "^", " ", "ibmdb. ", "\"GitHub - ibmdb/python-ibmdb: Automatically exported from code.google.com/p/ibm-db\"", ". ", "GitHub", ". Retrieved ", "30 April", " 2016", ".", "\u00a0", "\n", "^", " ", "\"Google Code Archive - Long-term storage for Google Code Project Hosting\"", ". Retrieved ", "30 April", " 2016", ".", "\u00a0", "\n", "^", " ", "maxirobaina. ", "\"GitHub - maxirobaina/django-firebird: Firebird SQL backend for django\"", ". ", "GitHub", ". Retrieved ", "30 April", " 2016", ".", "\u00a0", "\n", "^", " ", "\"Django non-rel\"", ". Retrieved ", "30 April", " 2016", ".", "\u00a0", "\n", "^", " ", "beachmachine. ", "\"GitHub - beachmachine/django-jython: Database backends and extensions for Django development on top of Jython\"", ". ", "GitHub", ". Retrieved ", "30 April", " 2016", ".", "\u00a0", "\n", "^", " ", "Running Pure Django Projects on Google App Engine", ". Code.google.com (2010-11-01). Retrieved on 5 December 2011.", "\n", "^", " ", "\"Django's release process - Django documentation - Django\"", ". Retrieved ", "30 April", " 2016", ".", "\u00a0", "\n", "^", " ", "Supported Versions", "\n", "^", " ", "What Python version can I use with Django?", "\n", "^", " ", "\"Introducing Django 0.90\"", ". Django weblog. Retrieved 2 February 2013.", "\n", "^", " ", "\"Django 0.91 released\"", ". Django weblog. Retrieved 2 February 2013.", "\n", "^", " ", "\"Introducing Django 0.95\"", ". Django weblog. Retrieved 2 February 2013.", "\n", "^", " ", "\"Announcing Django 0.96!\"", ". Django weblog. Retrieved 2 February 2013.", "\n", "^", " ", "\"Django 1.0 released!\"", ". Django weblog. Retrieved 2 February 2013.", "\n", "^", " ", "\"Django 1.1 released\"", ". Django weblog. Retrieved 2 February 2013.", "\n", "^", " ", "\"Django 1.2 released\"", ". Django weblog. Retrieved 2 February 2013.", "\n", "^", " ", "\"Django 1.3 released\"", ". Django weblog. Retrieved 2 February 2013.", "\n", "^", " ", "\"Django 1.4 released\"", ". Django weblog. Retrieved 2 February 2013.", "\n", "^", " ", "\"Django 1.5 released\"", " Django weblog. Retrieved 27 February 2013.", "\n", "^", " ", "\"Django 1.6 released\"", " Django weblog. Retrieved 6 November 2013.", "\n", "^", " ", "\"Django 1.7 released\"", " Django weblog. Retrieved 4 September 2014.", "\n", "^", " ", "\"Django 1.8 released\"", " Django weblog. Retrieved 2 April 2015.", "\n", "^", " ", "\"Django 1.9 released\"", " Django weblog. Retrieved 1 December 2015.", "\n", "^", " ", "\"Django 1.10 released\"", " Django weblog. Retrieved 1 August 2016.", "\n", "^", " ", "\"Django 1.11 released\"", " Django weblog. Retrieved 4 April 2017.", "\n", "^ ", "a", " ", "b", " ", "c", " ", "d", " ", "e", " ", "f", " ", "\"Django 2.0 released\"", " Django weblog. Retrieved 3 December 2017.", "\n", "^", " ", "DjangoCon EU series", ", Lanyrd.com", "\n", "^", " ", "DjangoCon US series", ", Lanyrd.com", "\n", "^", " ", "\"DjangoCon\"", ". DjangoCon. Archived from ", "the original", " on 5 August 2012", ". Retrieved ", "29 July", " 2012", ".", "\u00a0", "\n", "^", " ", "\"DjangoCon\"", ". DjangoCon", ". Retrieved ", "1 December", " 2016", ".", "\u00a0", "\n", "^", " ", "DjangoCon AU", ". Djangocon.com.au. Retrieved on 2016-09-23.", "\n", "^", " ", "http://liquidmarkup.org", "\n", "^", " ", "https://metacpan.org/pod/Template::Swig", "\n", "^", " ", "http://twig.sensiolabs.org", "\n", "^", " ", "http://jinja.pocoo.org", "\n", "^", " ", "https://github.com/erlydtl/erlydtl/wiki", "\n", "\n", "\n", "External links", "[", "edit", "]", "\n", "\n", "\n", "\n", "Wikimedia Commons has media related to ", "Django (web framework)", ".", "\n", "\n", "\n", "\n", "Official website", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "v", "\n", "t", "\n", "e", "\n", "\n", "\n", "Python", " ", "web frameworks", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "BlueBream", "\n", "Bottle", "\n", "CherryPy", "\n", "Django", "\n", "Flask", "\n", "Grok", "\n", "Nagare", "\n", "Nevow", "\n", "Pyjs", "\n", "Pylons", "\n", "Pyramid", "\n", "Quixote", "\n", "Spyce", "\n", "TACTIC", "\n", "Tornado", "\n", "TurboGears", "\n", "TwistedWeb", "\n", "Webware", "\n", "web2py", "\n", "Zope 2", "\n", "more", "...", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "v", "\n", "t", "\n", "e", "\n", "\n", "\n", "Web frameworks", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "Comparison", "\n", "\n", "\n", "\n", "\n", "\n", "C++", "\n", "\n", "\n", "\n", "CppCMS", "\n", "Wt", "\n", "\n", "\n", "\n", "\n", "\n", "CLI", "\n", "\n", "\n", "\n", "ASP.NET", "\n", "\n", "Core", "\n", "AJAX", "\n", "Dynamic Data", "\n", "MVC", "\n", "Razor", "\n", "Web Forms", "\n", "\n", "\n", "DNN", "\n", "BFC", "\n", "MonoRail", "\n", "OpenRasta", "\n", "Umbraco", "\n", "\n", "\n", "\n", "\n", "\n", "ColdFusion", "\n", "\n", "\n", "\n", "CFWheels", "\n", "ColdBox Platform", "\n", "ColdSpring", "\n", "Fusebox", "\n", "Mach-II", "\n", "Model-Glue", "\n", "\n", "\n", "\n", "\n", "\n", "Common Lisp", "\n", "\n", "\n", "\n", "Caveman2", "\n", "CL-HTTP", "\n", "UnCommon Web", "\n", "Weblocks", "\n", "\n", "\n", "\n", "\n", "\n", "Haskell", "\n", "\n", "\n", "\n", "Happstack", "\n", "Yesod", "\n", "Snap", "\n", "\n", "\n", "\n", "\n", "\n", "Java", "\n", "\n", "\n", "\n", "AppFuse", "\n", "Flexive", "\n", "Grails", "\n", "GWT", "\n", "ICEfaces", "\n", "ItsNat", "\n", "JavaServer Faces", "\n", "JHipster", "\n", "Jspx", "\n", "JWt", "\n", "OpenXava", "\n", "Play", "\n", "Reasonable Server Faces", "\n", "Remote Application Platform", "\n", "RIFE", "\n", "Seam", "\n", "Sling", "\n", "Spring", "\n", "Stripes", "\n", "Struts", "\n", "Tapestry", "\n", "Vaadin", "\n", "Vert.x", "\n", "WebWork", "\n", "Wicket", "\n", "WaveMaker", "\n", "ZK", "\n", "\n", "\n", "\n", "\n", "\n", "JavaScript", "\n", "\n", "\n", "\n", "Ample SDK", "\n", "Angular", "/", "AngularJS", "\n", "Backbone.js", "\n", "Chaplin.js", "\n", "Closure", "\n", "Dojo Toolkit", "\n", "Ember.js", "\n", "Ext JS", "\n", "jQuery", "\n", "Meteor", "\n", "MooTools", "\n", "Node.js", "\n", "OpenUI5", "\n", "Prototype", "\n", "React", "\n", "Rico", "\n", "script.aculo.us", "\n", "Sencha Touch", "\n", "SproutCore", "\n", "Wakanda", "\n", "\n", "\n", "\n", "\n", "\n", "Perl", "\n", "\n", "\n", "\n", "Catalyst", "\n", "Dancer", "\n", "Mason", "\n", "Maypole", "\n", "Mojolicious", "\n", "WebGUI", "\n", "\n", "\n", "\n", "\n", "\n", "PHP", "\n", "\n", "\n", "\n", "CakePHP", "\n", "CodeIgniter", "\n", "Drupal", "\n", "Fat-Free", "\n", "FuelPHP", "\n", "Flow", "\n", "Gyroscope", "\n", "Horde", "\n", "Kohana", "\n", "Laravel", "\n", "Lithium", "\n", "Midgard", "\n", "MODX", "\n", "Nette", "\n", "Phalcon", "\n", "Pop PHP", "\n", "PRADO", "\n", "ProcessWire", "\n", "Qcodo", "\n", "Silex", "\n", "SilverStripe", "\n", "Symfony", "\n", "TYPO3", "\n", "Xaraya", "\n", "XOOPS", "\n", "Yii", "\n", "Zend Framework", "\n", "\n", "\n", "\n", "\n", "\n", "Python", "\n", "\n", "\n", "\n", "BlueBream", "\n", "CherryPy", "\n", "Django", "\n", "Flask", "\n", "Grok", "\n", "Nevow", "\n", "Pyjs", "\n", "Pylons", "\n", "Pyramid", "\n", "Quixote", "\n", "TACTIC", "\n", "Tornado", "\n", "TurboGears", "\n", "web2py", "\n", "Webware", "\n", "Zope 2", "\n", "\n", "\n", "\n", "\n", "\n", "Ruby", "\n", "\n", "\n", "\n", "Camping", "\n", "Merb", "\n", "Padrino", "\n", "Ruby on Rails", "\n", "Sinatra", "\n", "\n", "\n", "\n", "\n", "\n", "Scala", "\n", "\n", "\n", "\n", "Lift", "\n", "Play", "\n", "Scalatra", "\n", "\n", "\n", "\n", "\n", "\n", "Smalltalk", "\n", "\n", "\n", "\n", "AIDA/Web", "\n", "Seaside", "\n", "\n", "\n", "\n", "\n", "\n", "Other languages", "\n", "\n", "\n", "\n", "Vibe.d", " (", "D", ")", "\n", "Application Express", " (", "PL/SQL", ")", "\n", "Grails", " (", "Groovy", ")", "\n", "Kepler", " (", "Lua", ")", "\n", "Rocket", " (", "Rust", ")", "\n", "OpenACS", " (", "Tcl", ")", "\n", "Phoenix", " (", "Elixir", ")", "\n", "SproutCore", " (", "JavaScript", "-", "Ruby", ")", "\n", "Yaws", " (", "Erlang", ")", "\n", "\n", "\n", "\n", "\n", "\n", "\n\n\n", "\n", "\n", "\n", "\n"], "lastUpdated": " 2 January 2018, at 02:25."}, +{"title": "Vitalik Buterin", "text": ["\n", "\n", "Vitalik Buterin", "\n", "\n", "\n", "\n", "Vitalik Buterin, 2016", "\n", "\n", "\n", "\n", "Native\u00a0name", "\n", "\u0412\u0438\u0442\u0430\u043b\u0438\u0439 \u0414\u043c\u0438\u0442\u0440\u0438\u0435\u0432\u0438\u0447 \u0411\u0443\u0442\u0435\u0440\u0438\u043d", "\n", "\n", "\n", "Born", "\n", "(", "1994-01-31", ")", " January 31, 1994 ", "(age\u00a023)", "\n", "Kolomna", ", ", "Russia", "\n", "\n", "\n", "Nationality", "\n", "Russian-Canadian", "\n", "\n", "\n", "Alma\u00a0mater", "\n", "University of Waterloo", "\n(Dropped Out)", "\n", "\n", "\n", "Known\u00a0for", "\n", "Ethereum", ", ", "Bitcoin Magazine", "\n", "\n", "\n", "Awards", "\n", "Thiel Fellowship", "\n", "\n", "\n", "Website", "\n", "http://vitalik.ca", "\n", "\n", "\n", "Scientific career", "\n", "\n", "\n", "Fields", "\n", "Digital contracts", ", ", "Digital currencies", ", ", "Game Theory", "\n", "\n", "\n", "\n", "\n", "\n", "Vitalik Buterin", " (Born January 31, 1994. ", "Russian", ": ", "\u0412\u0438\u0442\u0430\u043b\u0438\u0439 \u0414\u043c\u0438\u0442\u0440\u0438\u0435\u0432\u0438\u0447 \u0411\u0443\u0442\u0435\u0440\u0438\u043d", ") is a ", "Russian", "-", "Canadian", " ", "programmer", " and writer primarily known as a co-founder of ", "Ethereum", " and as a co-founder of ", "Bitcoin Magazine", ".", "[1]", "[2]", "[3]", "\n", "\n", "\n", "\n", "Contents", "\n", "\n", "\n", "1", " ", "Personal life", "\n", "2", " ", "Endeavors", "\n", "\n", "2.1", " ", "Beginnings at ", "Bitcoin Magazine", "\n", "2.2", " ", "Ethereum", "\n", "2.3", " ", "Open source software", "\n", "\n", "\n", "3", " ", "Awards and recognition", "\n", "4", " ", "See also", "\n", "5", " ", "References", "\n", "6", " ", "External links", "\n", "\n", "\n", "\n", "Personal life", "[", "edit", "]", "\n", "Buterin was born in ", "Kolomna", ", ", "Moscow Oblast", ", ", "Russia", " to Dmitry Buterin, a computer scientist, and Natalia Ameline (n\u00e9e Chistyakova).", "[", "citation needed", "]", " He lived in the area until the age of six when his parents emigrated to ", "Canada", " in search of better employment opportunities. While in grade three of elementary school in Canada, Buterin was placed into a class for gifted children and started to understand that he was drawn to math, programming, and economics. He also had the ability to add three-digit numbers in his head at twice the speed of his peers.", "[4]", " Buterin attended the ", "Abelard School", ", a private high school in Toronto, for four years,", "[5]", " which he said, \"proved to be among the most interesting and productive years of my life; the closer connection between students and teachers [&] the level of depth at which the material was taught, made me want to learn, and to focus on learning as my primary goal\".", "[5]", " Buterin has written that although he was \"never particularly inspired by the traditional education system\",", "[5]", " when subjects were presented with \"dedication and focus on intellectual inquiry\", he said he:", "\n", "\n", "\"noticed my attitude and my results almost immediately and drastically change. Education is ultimately much more than simply memorizing individual facts, or even learning individual concepts. [What] matters most: learning how to think, learning how to reason and learning how to learn.\"", "[5]", "\n", "\n", "Buterin learned about Bitcoin, from his father, at age 17.", "[4]", " In 2012, he obtained a Bronze Medal in the International Olympiad in Informatics.", "[6]", " In 2013 he visited developers in other countries who shared his enthusiasm for code. He returned to Toronto later that year and published a white paper proposing Ethereum.", "[7]", " He attended the ", "University of Waterloo", " but dropped out in 2014, when he received the ", "Thiel Fellowship", " in the amount of $100,000,", "[8]", " and went to work on Ethereum full-time.", "[8]", "\n", "On June 25, 2017, Buterin was the subject of a ", "death hoax", " originating from ", "4chan", ".", "[9]", "\n", "Endeavors", "[", "edit", "]", "\n", "\n", "Pybitcointools", " (2013\u2013)", "\n", "Bitcoin Magazine", " (2011\u20132014)", "\n", "Ethereum", " (2013\u2013)", "\n", "\n", "Beginnings at ", "Bitcoin Magazine", "[", "edit", "]", "\n", "Main article: ", "Bitcoin Magazine", "\n", "Buterin met a person on a bitcoin chat forum trying to start a bitcoin blog. The owner offered five bitcoin (about $3.50) to anyone who would write an article for him. Buterin wrote for the site until its website shut down soon thereafter due to Bitcoin's lack of mainstream attention.", "[10]", "\n", "In September 2011, another person reached out to Buterin about a new publication called ", "Bitcoin Magazine", ", a position which Buterin would accept as the first co-founder, and contribute as a leading writer.", "\n", "In addition Buterin wrote about bitcoin-related topics for other publications, including ", "Bitcoin Weekly", ".", "[1]", "[11]", " ", "Bitcoin Magazine", " in 2012 later began publishing a print edition and has been referred to as the first serious publication dedicated to cryptocurrencies.", "[12]", " ", "Bitcoin Magazine", " was then purchased by ", "BTC Media", ", where Buterin continued to write until mid-2014.", "\n", "In addition, he held a position on the editorial board of ", "Ledger", ", a peer-reviewed scholarly journal that publishes full-length original research articles on the subjects of cryptocurrency and blockchain technology.", "[13]", "\n", "Ethereum", "[", "edit", "]", "\n", "Main article: ", "Ethereum", "\n", "He is a co-creator and inventor of Ethereum, described as a \u201cdecentralised mining network and software development platform rolled into one\u201d that facilitates the creation of new cryptocurrencies and programs that share a single ", "blockchain", " (a cryptographic transaction ledger).", "[14]", "[15]", "[16]", "\n", "Ethereum was first described in Buterin's white paper, in late 2013. Buterin argued that bitcoin needed a scripting language for application development. But when he failed to gain agreement, he proposed development of a new platform with a more general scripting language.", "[17]", " About the Ethereum Project, Buterin has said: \"I am truly grateful to have the opportunity to work in such an interesting and interdisciplinary area of industry, where I have the chance to interact with cryptographers, mathematicians and economists prominent in their fields, to help build software and tools that already affect tens of thousands of people around the world, and to work on advanced problems in computer science, economics and philosophy every week.\"", "[5]", "\n", "Open source software", "[", "edit", "]", "\n", "Vitalik has contributed as a developer to other open source software projects.", "[1]", " Some early examples are: Kryptokit, pybitcointools, multisig.info, and btckeysplit.", "[18]", " He also contributed to DarkWallet", "[19]", " by ", "Cody Wilson", ", ", "Bitcoin", " ", "Python", " libraries,", "[20]", " and the ", "cryptocurrency", " marketplace site Egora.", "[2]", "\n", "Awards and recognition", "[", "edit", "]", "\n", "\n", "Thiel Fellowship", " Award, 2014 ", "[21]", "\n", "World Technology Award in the IT Software category, 2014 ", "[22]", "\n", "Fortune", " 40 under 40 list, 2016.", "[23]", "\n", "Forbes", " 30 under 30 list, 2018.", "[24]", "\n", "\n", "See also", "[", "edit", "]", "\n", "\n", "Joseph Lubin", " \u2013 Ethereum co-founder", "\n", "\n", "References", "[", "edit", "]", "\n", "\n", "\n", "^ ", "a", " ", "b", " ", "c", " ", "Finley, Klint (27 January 2014). ", "\"Out in the open: Teenage hacker transforms web into one giant Bitcoin network\"", ". ", "Wired", ". Retrieved ", "7 February", " 2014", ".", "\u00a0", "\n", "^ ", "a", " ", "b", " ", "Melendez, Steven (10 February 2014). ", "\"Could this 20-Year-Old kid make Bitcoin obsolete?\"", ". ", "Fast Company", ". Retrieved ", "22 February", " 2014", ".", "\u00a0", "\n", "^", " ", "del Castillo, Michael (24 September 2014). ", "\"Dark wallet: A radical way to Bitcoin\"", ". ", "The New Yorker", ". Retrieved ", "24 January", " 2014", ".", "\u00a0", "\n", "^ ", "a", " ", "b", " ", "Peck, Morgen (2016-06-13). ", "\"The Uncanny Mind That Built Ethereum\"", ". ", "Backchannel", ". Retrieved ", "2016-06-15", ".", "\u00a0", "\n", "^ ", "a", " ", "b", " ", "c", " ", "d", " ", "e", " ", "\"Students\"", ". ", "Abelard School", ". Retrieved ", "7 October", " 2017", ".", "\u00a0", "\n", "^", " ", "\"Results | IOI 2012\"", ". ", "www.ioi2012.org", ". Retrieved ", "2016-07-21", ".", "\u00a0", "\n", "^", " ", "Braga, Matthew (13 Oct 2016). ", "\"Change Agents 2016: Vitalik Buterin, Ethereum\"", ". Canadian Business", ". Retrieved ", "6 June", " 2017", ".", "\u00a0", "\n", "^ ", "a", " ", "b", " ", "Elliot, Josh (July 2, 2014). ", "\"Why a 20-year-old Toronto drop-out accepted $100,000 to stay out of school\"", ". ", "CTV", ". Retrieved ", "25 April", " 2016", ".", "\u00a0", "\n", "^", " ", "\"4chan's Vitalik Buterin Death Hoax Crashes Ethereum Price\"", ". ", "Bitsonline", ". 2017-06-25", ". Retrieved ", "2017-06-25", ".", "\u00a0", "\n", "^", " ", "\"Interview with Vitalik Buterin\"", ". Bitcorati, Inc. January 10, 2014", ". Retrieved ", "June 3,", " 2017", ".", "\u00a0", "\n", "^", " ", "\"About us \u2013 Bitcoin Magazine\"", ". ", "Bitcoin Magazine", ". Coin Publishing Ltd", ". Retrieved ", "23 February", " 2014", ".", "\u00a0", "\n", "^", " ", "Vigna, Paul; Casey, Michael J. (2015). \"Community\". ", "The Age of Cryptocurrency: How Bitcoin and the Blockchain Are Challenging ..", " ", "Macmillan Publishers", ". p.\u00a088. ", "ISBN", "\u00a0", "9781250065636", ".", "\u00a0", "\n", "^", " ", "\"Ledger\"", ". Retrieved ", "4 February", " 2016", ".", "\u00a0", "\n", "^", " ", "Aron, Jacob (6 February 2014). ", "\"Bitcoin: How its core technology will change the world\"", ". ", "New Scientist", " (2955)", ". Retrieved ", "22 February", " 2014", ".", "\u00a0", "\n", "^", " ", "Hajdarbegovic, Nermin (23 February 2014). ", "\"Ethereum launches 'Cryptocurrency 2.0' network\"", ". ", "CoinDesk", ". Retrieved ", "22 February", " 2014", ".", "\u00a0", "\n", "^", " ", "\"Vitalik Buterin on Ethereum and The Decentralized Future\"", ". ", "Future Thinkers Podcast", ". 2015-04-21", ". Retrieved ", "2016-05-13", ".", "\u00a0", "\n", "^", " ", "\"Facilitating Online Contractual Agreements With Vitalik Buterin\"", ". ", "Eyerys.com", ". 2017-06-29", ". Retrieved ", "2017-06-30", ".", "\u00a0", "\n", "^", " ", "Southurst, Jon (7 January 2014). ", "\"Roger Ver and Erik Voorhees Back Bitcoin Wallet KryptoKit\"", ". ", "CoinDesk", ". Retrieved ", "25 April", " 2016", ".", "\u00a0", "\n", "^", " ", "Kelly, Brian (2015). \"Smart Money, set it and forget it\". ", "The Bitcoin Big Bang: How Alternative Currencies Are About to Change the World", ". ", "Wiley Publishing", ". p.\u00a0156. ", "ISBN", "\u00a0", "978-1118963661", ".", "\u00a0", "\n", "^", " ", "Antonopoulos, Andreas M. (December 20, 2014). \"#4. Keys, Addresses, and Wallets\". ", "Mastering Bitcoin: Unlocking Digital Cryptocurrencies", ". ", "O'Reilly Media", ". p.\u00a082. ", "ISBN", "\u00a0", "978-1449374044", ".", "\u00a0", "\n", "^", " ", "Finley, Klint (5 June 2014). ", "\"$100k Peter Thiel Fellowship Awarded to Ethereum's Vitalik Buterin\"", ". ", "CoinDesk", ". Retrieved ", "11 August", " 2014", ".", "\u00a0", "\n", "^", " ", "The 2014 World Technology Award Winner", "\n", "^", " ", "40 under 40: Vitalik Buterin, 22", ", ", "Fortune", ", September 2016.", "\n", "^", " ", "Forbes 30 under 30", ", ", "Forbes", ", November 2017.", "\n", "\n", "\n", "External links", "[", "edit", "]", "\n", "\n", "Decentralizing Everything with Ethereum's Vitalik Buterin | Disrupt SF 2017", " (YouTube)", "\n", "\n\n\n", "\n", "\n", "\n", "\n"], "lastUpdated": " 11 January 2018, at 13:32."}, +{"title": "Fork (software development)", "text": ["\n", "\n", "\n", "\nA timeline chart of how ", "Linux distributions", " forked.", "\n", "\n", "\n", "In ", "software engineering", ", a ", "project fork", " happens when developers take a copy of ", "source code", " from one ", "software package", " and start independent development on it, creating a distinct and separate piece of software. The term often implies not merely a ", "development branch", ", but also a split in the developer community, a form of ", "schism", ".", "[1]", "\n", "Free and open-source software", " is that which, by definition, may be forked from the original development team without prior permission, without violating ", "copyright", " law. However, licensed forks of proprietary software (", "e.g.", " ", "Unix", ") also happen.", "\n", "\n", "\n", "\n", "Contents", "\n", "\n", "\n", "1", " ", "Etymology", "\n", "2", " ", "Forking of free and open source software", "\n", "3", " ", "Forking proprietary software", "\n", "4", " ", "See also", "\n", "5", " ", "References", "\n", "6", " ", "External links", "\n", "\n", "\n", "\n", "Etymology", "[", "edit", "]", "\n", "The word fork stems from the Latin word furca, meaning a \"fork or similarly shaped instrument.\"", "[2]", " \"Fork\" in the meaning of \"to divide in branches, go separate ways\" has been used as early as the 14th century.", "[3]", " In the software environment, the word evokes the ", "fork", " system call, which causes a running process to split itself into two (almost) identical copies that (typically) diverge to perform different tasks.", "[4]", "\n", "In the context of software development, \"fork\" was used in the sense of creating a revision control \"", "branch", "\" by ", "Eric Allman", " as early as 1980, in the context of ", "SCCS", ":", "[5]", "\n", "\n", "Creating a branch \"forks off\" a version of the program.", "\n", "\n", "The term was in use on ", "Usenet", " by 1983 for the process of creating a subgroup to move topics of discussion to.", "[6]", "\n", "\"Fork\" is not known to have been used in the sense of a community schism during the origins of Lucid Emacs (now ", "XEmacs", ") (1991) or the ", "BSDs", " (1993\u20131994); ", "Russ Nelson", " used the term \"shattering\" for this sort of fork in 1993, attributing it to ", "John Gilmore", ".", "[7]", " However, \"fork\" was in use in the present sense by 1995 to describe the XEmacs split,", "[8]", " and was an understood usage in the ", "GNU", " Project by 1996.", "[9]", "\n", "Forking of free and open source software", "[", "edit", "]", "\n", "Free and open source software may be legally forked without prior approval of those currently developing, managing, or distributing the software per both ", "The Free Software Definition", " and ", "The Open Source Definition", ":", "[10]", "\n", "\n", "The freedom to distribute copies of your modified versions to others (freedom 3). By doing this, you can give the whole community a chance to benefit from your changes. Access to the source code is a precondition for this.", "\n", "\u2014\u2009", "The Free Software Definition", "[11]", "\n", "\n", "\n", "3. Derived Works: The license must allow modifications and derived works, and must allow them to be distributed under the same terms as the license of the original software.", "\n", "\u2014\u2009", "The Open Source Definition", "[12]", "\n", "\n", "In free software, forks often result from a schism over different goals or personality clashes. In a fork, both parties assume nearly identical code bases, but typically only the larger group, or whoever controls the Web site, will retain the full original name and the associated user community. Thus, there is a reputation penalty associated with forking.", "[10]", " The relationship between the different teams can be cordial or very bitter.", "\n", "Eric S. Raymond", ", in his essay ", "Homesteading the Noosphere", ",", "[13]", " stated that \"The most important characteristic of a fork is that it spawns competing projects that cannot later exchange code, splitting the potential developer community\". He notes in the ", "Jargon File", ":", "[14]", "\n", "\n", "Forking is considered a Bad Thing\u2014not merely because it implies a lot of wasted effort in the future, but because forks tend to be accompanied by a great deal of strife and acrimony between the successor groups over issues of legitimacy, succession, and design direction. There is serious social pressure against forking. As a result, major forks (such as the ", "Gnu-Emacs", "/", "XEmacs", " split, the fissioning of the ", "386BSD", " group into three daughter projects, and the short-lived GCC/EGCS split) are rare enough that they are remembered individually in hacker folklore.", "\n", "\n", "David A. Wheeler", " notes", "[10]", " four possible outcomes of a fork, with examples:", "\n", "\n", "The death of the fork. This is by far the most common case. It is easy to declare a fork, but considerable effort to continue independent development and support.", "\n", "A re-merging of the fork (", "e.g.", ", ", "egcs", " becoming \"blessed\" as the new version of ", "gcc", ".)", "\n", "The death of the original (", "e.g.", " the ", "X.Org Server", " succeeding and ", "XFree86", " dying.)", "\n", "Successful branching, typically with differentiation (", "e.g.", ", ", "OpenBSD", " and ", "NetBSD", ".)", "\n", "\n", "Distributed revision control", " (DVCS) tools have popularised a less emotive use of the term \"fork\", blurring the distinction with \"branch\".", "[15]", " With a DVCS such as ", "Mercurial", " or ", "Git", ", the normal way to contribute to a project, is to first create a personal branch of the repository, independent of the main repository, and later seek to have your changes integrated with it. Sites such as ", "GitHub", ", ", "Bitbucket", " and ", "Launchpad", " provide free DVCS hosting expressly supporting independent branches, such that the technical, social and financial barriers to forking a source code repository are massively reduced, and GitHub uses \"fork\" as its term for this method of contribution to a project.", "\n", "Forks often restart version numbering from 0.1 or 1.0 even if the original software was at version 3.0, 4.0, or 5.0. An exception is when the forked software is designed to be a drop-in replacement for the original project, ", "e.g.", " ", "MariaDB", " for ", "MySQL", "[16]", " or ", "LibreOffice", " for ", "OpenOffice.org", ".", "\n", "Forking proprietary software", "[", "edit", "]", "\n", "In ", "proprietary software", ", the copyright is usually held by the employing entity, not by the individual software developers. Proprietary code is thus more commonly forked when the owner needs to develop two or more versions, such as a ", "windowed", " version and a ", "command line", " version, or versions for differing operating systems, such as a ", "word processor", " for ", "IBM PC", " compatible machines and ", "Macintosh", " computers. Generally, such internal forks will concentrate on having the same look, feel, data format, and behavior between platforms so that a user familiar with one can also be productive or share documents generated on the other. This is almost always an economic decision to generate a greater ", "market share", " and thus pay back the associated extra development costs created by the fork.", "\n", "A notable proprietary fork not of this kind is the many varieties of proprietary ", "Unix", "\u2014almost all derived from AT&T Unix under license and all called \"Unix\", but increasingly mutually incompatible.", "[17]", " ", "See", " ", "UNIX wars", ".", "\n", "The ", "BSD licenses", " permit forks to become proprietary software, and some say", "[", "who?", "]", " that commercial incentives thus make proprietisation almost inevitable. Examples include ", "macOS", " (based on the proprietary ", "NeXTSTEP", " and the open source ", "FreeBSD", "), ", "Cedega", " and ", "CrossOver", " (proprietary forks of ", "Wine", ", though CrossOver tracks Wine and contributes considerably), EnterpriseDB (a fork of ", "PostgreSQL", ", adding Oracle compatibility features", "[18]", "), Supported PostgreSQL with their proprietary ESM storage system,", "[19]", " and Netezza's", "[20]", " proprietary highly scalable derivative of PostgreSQL. Some of these vendors contribute back changes to the community project, while some keep their changes as their own competitive advantages.", "\n", "See also", "[", "edit", "]", "\n", "\n", "List of software forks", "\n", "Source port", "\n", "Downstream (software development)", "\n", "Group decision-making", "\n", "Modular programming", "\n", "\n", "Modding", "\n", "\n", "\n", "Custom software", "\n", "Personalization", "\n", "Team effectiveness", "\n", "\n", "Duplicate code", "\n", "\n", "\n", "ROM Hacking", "\n", "\n", "References", "[", "edit", "]", "\n", "\n", "\n", "^", " ", "\"Schism\", with its connotations, is a common usage, ", "e.g.", " ", "\"the Lemacs/FSFmacs schism\"", " (", "Jamie Zawinski", ", 2000), ", "\"Behind the KOffice split\"", " (Joe Brockmeier, ", "Linux Weekly News", ", 2010-12-14), ", "\"Copyright assignment - once bitten, twice shy\"", " (Richard Hillesley, ", "H-Online", ", 2010-08-06), ", "\"Forking is a feature\"", " (", "Anil Dash", ", 2010-09-10), ", "\"The Great Software Schism\"", " (", "Glyn Moody", ", ", "Linux Journal", ", 2006-09-28), ", "\"To Fork Or Not To Fork: Lessons From Ubuntu and Debian\"", " (", "Benjamin Mako Hill", ", 2005).", "\n", "^", " ", "See, e.g., ", "\"furca\" from Etymological Dictionary of Latin by Michiel de Vaan (Ph.D. 2002)", "\n", "^", " ", "Entry 'fork' in Online Etymology Dictionary", "\n", "^", " ", "\"The term fork is derived from the POSIX standard for operating systems: the system call used so that a process generates a copy of itself is called fork().\" ", "Robles, Gregorio; Gonz\u00e1lez-Barahona, Jes\u00fas M. (2012). ", "A Comprehensive Study of Software Forks: Dates, Reasons and Outcomes", " ", "(PDF)", ". OSS 2012 The Eighth International Conference on Open Source Systems", ". Retrieved ", "20 Oct", " 2012", ".", "\u00a0", "\n", "^", " ", "Allman, Eric. ", "\"An Introduction to the Source Code Control System.\"", " Project Ingres, University of California at Berkeley, 1980.", "\n", "^", " ", "Can somebody fork off a \"net.philosophy\"?", " (", "John Gilmore", ", net.misc, 18 January 1983)", "\n", "^", " ", "Shattering\u00a0\u2014 good or bad?", " (Russell Nelson, gnu.misc.discuss, 1 October 1993)", "\n", "^", " ", "Re: Hey Franz: 32K Windows SUCK!!!!!", " (Bill Dubuque, cu.cs.macl.info, 21 September 1995)", "\n", "^", " ", "Lignux?", " (Marcus G. Daniels, gnu.misc.discuss, 7 June 1996)", "\n", "^ ", "a", " ", "b", " ", "c", " ", "Why Open Source Software / Free Software (OSS/FS, FLOSS, or FOSS)? Look at the Numbers!: Forking", " (", "David A. Wheeler", ")", "\n", "^", " ", "Stallman, Richard. ", "\"The Free Software Definition\"", ". Free Software Foundation", ". Retrieved ", "2013-10-15", ".", "\u00a0", "\n", "^", " ", "\"The Open Source Definition\"", ". The Open Source Initiative", ". Retrieved ", "15 October", " 2013", ".", "\u00a0", "\n", "^", " ", "Raymond, Eric S.", " (15 August 2002). ", "\"Promiscuous Theory, Puritan Practice\"", ".", "\u00a0", "\n", "^", " ", "Forked", " (", "Jargon File", "), first added to ", "v4.2.2", ", 20 Aug 2000)", "\n", "^", " ", "e.g.", " ", "Willis, Nathan (15 January 2015). ", "\"An \"open governance\" fork of Node.js\"", ". ", "LWN.net", ". Retrieved ", "15 January", " 2015", ". ", "Forks are a natural part of the open development model\u2014so much so that GitHub famously plasters a \"fork your own copy\" button on almost every page.", "\u00a0", " See also ", "Nyman, Linus (2015). ", "\"Understanding Code Forking in Open Source Software\"", " (Ph.D.). Hanken School of Economics. p.\u00a057. ", "Where practitioners have previously had rather narrow definitions of a fork, [...] the term now appears to be used much more broadly. Actions that would traditionally have been called a branch, a new distribution, code fragmentation, a pseudo-fork, etc. may all now be called forks by some developers. This appears to be in no insignificant part due to the broad definition and use of the term fork by GitHub.", "\u00a0", "\n", "^", " ", "Forked a project, where do my version numbers start?", "\n", "^", " ", "Fear of forking", " - An essay about forking in ", "free software", " projects, by Rick Moen", "\n", "^", " ", "EnterpriseDB", "\n", "^", " ", "Fujitsu Supported PostgreSQL", " ", "Archived", " 20 August 2006 at the ", "Wayback Machine", ".", "\n", "^", " ", "Netezza", "\n", "\n", "\n", "External links", "[", "edit", "]", "\n", "\n", "Right to Fork", " at ", "Meatball Wiki", "\n", "A PhD examining forking: ", "(Nyman, 2015)", " \"Understanding Code Forking in Open Source Software - An examination of code forking, its effect on open source software, and how it is viewed and practiced by developers\"", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "v", "\n", "t", "\n", "e", "\n", "\n", "\n", "Free and open-source software", "\n", "\n", "\n", "\n", "General", "\n", "\n", "\n", "\n", "Alternative terms for free software", "\n", "Comparison of open-source and closed-source software", "\n", "Comparison of source code hosting facilities", "\n", "Free software", "\n", "Free software project directories", "\n", "Gratis versus libre", "\n", "Long-term support", "\n", "Open-source software", "\n", "Open-source software development", "\n", "Outline", "\n", "\n", "\n", "\n", "\n", "\n", "Software", "\npackages", "\n", "\n", "\n", "\n", "Audio", "\n", "Bioinformatics", "\n", "Codecs", "\n", "Collaboration", "\n", "Configuration management", "\n", "Device drivers", "\n", "\n", "Graphics", "\n", "Wireless", "\n", "\n", "\n", "Geophysics", "\n", "Health", "\n", "Mathematics", "\n", "Operating systems", "\n", "Programming languages", "\n", "Routing", "\n", "Statistics", "\n", "Television", "\n", "Video games", "\n", "Web applications", "\n", "\n", "Content management systems", "\n", "E-commerce", "\n", "\n", "\n", "Word processors", "\n", "Android apps", "\n", "iOS apps", "\n", "Commercial", "\n", "Trademarked", "\n", "Formerly proprietary", "\n", "\n", "\n", "\n", "\n", "\n", "Community", "\n", "\n", "\n", "\n", "Free software movement", "\n", "History", "\n", "Open-source software movement", "\n", "Organizations", "\n", "Events", "\n", "\n", "\n", "\n", "\n", "\n", "Licenses", "\n", "\n", "\n", "\n", "AFL", "\n", "Apache", "\n", "APSL", "\n", "Artistic", "\n", "Beerware", "\n", "Boost", "\n", "BSD", "\n", "CC0", "\n", "CDDL", "\n", "EPL", "\n", "GNU GPL", "\n", "GNU LGPL", "\n", "ISC", "\n", "MIT", "\n", "MPL", "\n", "Ms-PL/RL", "\n", "Python", "\n", "Python Software Foundation", "\n", "Sleepycat", "\n", "Unlicense", "\n", "WTFPL", "\n", "zlib", "\n", "\n", "\n", "\n", "\n", "\n", "License types", "\nand standards", "\n", "\n", "\n", "\n", "Comparison of free and open-source software licenses", "\n", "Contributor License Agreement", "\n", "Copyfree", "\n", "Copyleft", "\n", "Debian Free Software Guidelines", "\n", "Definition of Free Cultural Works", "\n", "Free license", "\n", "The Free Software Definition", "\n", "The Open Source Definition", "\n", "Open-source license", "\n", "Permissive software licence", "\n", "Public domain", "\n", "Viral license", "\n", "\n", "\n", "\n", "\n", "\n", "Challenges", "\n", "\n", "\n", "\n", "Binary blob", "\n", "Digital rights management", "\n", "Hardware restrictions", "\n", "License proliferation", "\n", "Mozilla software rebranding", "\n", "Proprietary software", "\n", "SCO/Linux controversies", "\n", "Secure boot", "\n", "Software patents", "\n", "Software security", "\n", "Trusted Computing", "\n", "\n", "\n", "\n", "\n", "\n", "Related topics", "\n", "\n", "\n", "\n", "The Cathedral and the Bazaar", "\n", "Forking", "\n", "Microsoft Open Specification Promise", "\n", "Revolution OS", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", " ", "Book", "\n", " ", "Category", "\n", " ", "Commons", "\n", " ", "Portal", "\n", "\n", "\n", "\n", "\n", "\n", "\n\n\n", "\n", "\n", "\n", "\n"], "lastUpdated": " 20 November 2017, at 16:38."}, +{"title": "Theo de Raadt", "text": ["\n", "\n", "Theo de Raadt", "\n", "\n", "\n", "\n", "Theo de Raadt in 2013", "\n", "\n", "\n", "\n", "Born", "\n", "(", "1968-05-19", ")", " May 19, 1968 ", "(age\u00a049)", "\n", "Pretoria", ", ", "South Africa", "\n", "\n", "\n", "Residence", "\n", "Calgary", ", ", "Alberta", ", ", "Canada", "\n", "\n", "\n", "Nationality", "\n", "Canadian", "\n", "\n", "\n", "Alma\u00a0mater", "\n", "University of Calgary", "\n", "\n", "\n", "Known\u00a0for", "\n", "NetBSD", ", ", "OpenBSD", ", ", "OpenSSH", ", advocacy", "\n", "\n", "\n", "Awards", "\n", "Award for the Advancement of Free Software", "\n", "\n", "\n", "Scientific career", "\n", "\n", "\n", "Fields", "\n", "computer science, free software development", "\n", "\n", "\n", "Institutions", "\n", "FSA Corporation", "\n", "\n", "\n", "\n", "\n", "\n", "Theo de Raadt", " (", "/", "\u02c8", "\u03b8", "i\u02d0", ".", "o\u028a", " ", "d", "\u025b", "\u02c8", "r", "\u0254\u02d0", "t", "/", "; ", "Dutch:\u00a0", "[\u02c8te\u02d0.jo\u02d0 d\u0259\u02c8ra\u02d0t]", "; born May 19, 1968) is a ", "software engineer", " who lives in ", "Calgary", ", ", "Alberta", ", ", "Canada", ". He is the founder and leader of the ", "OpenBSD", " and ", "OpenSSH", " projects, and was also a founding member of the ", "NetBSD", " project.", "\n", "\n", "\n", "\n", "Contents", "\n", "\n", "\n", "1", " ", "Childhood", "\n", "2", " ", "NetBSD", "\n", "3", " ", "OpenBSD", "\n", "4", " ", "Outspokenness", "\n", "\n", "4.1", " ", "DARPA funding cancellation", "\n", "4.2", " ", "Free driver advocacy", "\n", "4.3", " ", "Clash with Linux developers", "\n", "\n", "\n", "5", " ", "References", "\n", "6", " ", "External links", "\n", "\n", "\n", "\n", "Childhood", "[", "edit", "]", "\n", "Theo de Raadt is the eldest of four children to a ", "Dutch", " father and a ", "South African", " mother, with two sisters and a brother. Concern over the mandatory two-year armed forces ", "conscription", " in South Africa led the family to emigrate to Calgary, Alberta, Canada in November 1977. In 1983, the ", "largest recession in Canada", " since the ", "Great Depression", " sent the family to the ", "Yukon", ". Prior to the move, De Raadt got his first computer, a ", "Commodore VIC-20", ", which was soon followed by an ", "Amiga", ". It is with these computers that he first began to develop software.", "[1]", "\n", "In 1992, he obtained a ", "BSc", " in ", "Computer Science", " from the ", "University of Calgary", ".", "\n", "NetBSD", "[", "edit", "]", "\n", "The ", "NetBSD", " project was founded in 1993 by Chris Demetriou, Adam Glass, Charles Hannum, and De Raadt, who collectively felt frustration at the speed and quality of ", "Jolix", ", the standard Berkeley software distribution then, and believed that a more open development model would be of greater benefit to development of an operating system. Jolix, also known as ", "386BSD", ", was derived from the original University of California Berkeley's 4.3BSD release, while the new NetBSD project would merge relevant code from the Networking/2 and 386BSD releases. The new project would centre its focus on clean, portable, correct code with the goal being to produce a unified, multi-platform, production-quality, BSD-based operating system.", "\n", "Because of the importance of networks such as the Internet in the distributed, collaborative nature of its development, De Raadt suggested the name \"NetBSD\", which the three other founders agreed upon.", "[", "citation needed", "]", "\n", "The first NetBSD source code repository was established on March 21, 1993 and the initial release, NetBSD 0.8, was made in April 1993. This was derived from 386BSD 0.1 plus the version 0.2.2 unofficial patchkit, with several programs from the Net/2 release missing from 386BSD re-integrated, and various other improvements. In August 1993, NetBSD 0.9 was released, which contained many enhancements and bug fixes. This was still a ", "PC", "-platform-only release, although by this time work was underway to add support for other architectures.", "\n", "NetBSD 1.0 was released in October, 1994. This was the first multi-platform release, supporting the ", "IBM PC compatible", ", ", "HP 9000", " Series 300, ", "Amiga", ", ", "68k", " ", "Macintosh", ", ", "Sun-4c", " series and ", "PC532", ". Also in this release, the legally encumbered Net/2-derived source code was replaced with equivalent code from 4.4BSD-lite, in accordance with the ", "USL v BSDi", " lawsuit settlement. De Raadt played a vital role in the creation of the ", "SPARC", " port, as together with Chuck Cranor,", "[2]", " he implemented much of the initial code.", "\n", "OpenBSD", "[", "edit", "]", "\n", "In December 1994, De Raadt was asked to resign his position as a senior developer and member of the NetBSD core team, and his access to the source code repository was revoked. The reason for this is not wholly clear, although there are claims that it was due to personality clashes within the NetBSD project and on its ", "mailing lists", ".", "[3]", " De Raadt has been criticized for having a somewhat abrasive personality: in his book, ", "Free for All", ", Peter Wayner claims that De Raadt \"began to rub some people the wrong way\" before the split from NetBSD;", "[4]", " while ", "Linus Torvalds", " has described him as \"difficult\".", "[5]", " Many have different feelings: the same interviewer describes De Raadt's \"transformation\" on founding OpenBSD and his \"desire to take care of his team,\" some find his straightforwardness refreshing, and few deny he is a talented ", "hacker", "[6]", " and security \"guru\".", "[7]", "\n", "In October 1995, De Raadt founded OpenBSD, a new project ", "forked", " from NetBSD 1.0. The initial ", "release", ", OpenBSD 1.2, was made in July 1996, followed in October of the same year by OpenBSD 2.0.", "[8]", " Since then, the project has followed a schedule of a release every six months, each of which is maintained and supported for one year.", "\n", "Outspokenness", "[", "edit", "]", "\n", "\n", "\n", "\n", "\n", "Jon \"maddog\" Hall", " presents De Raadt with ", "daemon", " horns at ", "FISL8", "\n", "\n", "\n", "De Raadt has been a vocal advocate of free software since the inception of OpenBSD, but he is also a strong proponent of free speech, having on occasion had rather public disputes with various groups, from Linux advocates to governments. This outspoken attitude, while sometimes the cause of conflict, has also led him to acclaim; De Raadt has given presentations at open source, free software and security conferences around the world\u2014including ", "FOSDEM", " in ", "Brussels", ", ", "Belgium", ", ", "Usenix", " in ", "San Antonio, Texas", ", ", "U.S.", ", ", "AUUG", " Conference in ", "Melbourne", ", ", "Australia", " and ", "FISL", " in ", "Porto Alegre", ", RS, ", "Brazil", ".", "\n", "DARPA funding cancellation", "[", "edit", "]", "\n", "After De Raadt stated his disapproval of the U.S.-led ", "occupation of Iraq", " in an April, 2003 ", "interview", "[9]", " with ", "Toronto", "'s ", "Globe and Mail", ", a multi-million-dollar ", "US Department of Defense", " grant to the ", "University of Pennsylvania", "'s ", "POSSE project", " was cancelled, effectively ending the project. Funding from the grant had been used in the development of OpenSSH and OpenBSD, as well as many other projects and was to be used to pay for the ", "hackathon", " planned for May 8, 2003. Despite money from the grant already having been used to secure accommodations for sixty developers for a week, the money was reclaimed by the government at a loss and the hotel was told not to allow the developers to pay the reclaimed money to resecure the rooms.", "[10]", " This resulted in criticism among some that the US military held an anti-", "free speech", " attitude. The grant termination was, however, not as bad a blow as some portrayed it. The project's supporters rallied to help and the hackathon went on almost as planned. The funding was cut mere months before the end of the grant, further fueling the speculations regarding the situation surrounding the grant's termination.", "\n", "Free driver advocacy", "[", "edit", "]", "\n", "De Raadt is also well known for his advocacy of ", "free software", " ", "drivers", ". He has long been critical of developers of ", "Linux", " and other free platforms for their tolerance of non-free drivers and acceptance of ", "non-disclosure agreements", ".", "\n", "In particular, De Raadt has worked to convince ", "wireless", " hardware vendors to allow the ", "firmware", " images of their products to be freely redistributed. These efforts have been largely successful, particularly in negotiations with ", "Taiwanese", " companies, leading to many new wireless drivers. De Raadt has commented that \"most Taiwanese vendors give us documentation almost immediately\", allowing open source drivers to reliably support devices, as opposed to the lack of willingness from US companies like ", "Intel", " and ", "Broadcom", " to release firmware images free from ", "licensing", " restrictions.", "[11]", "\n", "For this De Raadt was awarded the ", "Free Software Foundation", "'s 2004 ", "Award for the Advancement of Free Software", ".", "[12]", "\n", "Clash with Linux developers", "[", "edit", "]", "\n", "In April 2007, De Raadt was involved in a controversy involving the use of ", "GPL", " code from the Linux ", "bcm43xx", " driver in the BSD ", "bcw", " driver.", "[13]", "[14]", " Linux developers accused the BSD community of infringing GPL code, but De Raadt denied infringement, arguing that the BSD driver was not \"released\". He also maintained that the conflict was not about GPL, but the way Linux developer ", "Michael Buesch", " handled the situation. To Buesch's email, he responded:", "[15]", "\n", "\n", "It will be resolved in our tree, but it is up to him which way he does it. But when you approach issues like this with comments like \"We'd like you to start contacting us to resolve the issue now\" and your first mail is cc'd to a couple hundred people.... in the future, please think more carefully, ok?", "\n", "Because right now, in that mail, you've pretty much done Broadcom's job for them. You've told the entire BSD community who may want to use a driver for this chip later, that because of a few GPL issues you are willing to use very strong words\u2014published very widely\u2014to disrupt the efforts of one guy who is trying to do things for them. And, you are going to do this using the GPL, even. You did not privately mail that developer. No, you basically went public with it.", "\n", "That is how about half the user and developer community will see it. They will see your widely posted mail as an overly strong position.", "\n", "\n", "Another clash occurred in August 2007, when a group of Linux developers attempted to modify the license of dual-licensed ath5k driver. De Raadt summarized the issue as follows:", "[16]", "\n", "\n", "GPL fans said the great problem we would face is that companies would take our BSD code, modify it, and not give back. Nope\u2014the great problem we face is that people would wrap the GPL around our code, and lock us out in the same way that these supposed companies would lock us out. Just like the Linux community, we have many companies giving us code back, all the time. But once the code is GPL'd, we cannot get it back.", "\n", "\n", "References", "[", "edit", "]", "\n", "\n", "\n", "^", " ", "The Age article: ", "\"Staying on the cutting edge\"", ". October 8, 2004. Accessed April 5, 2006.", "\n", "^", " ", "\"Chuck Cranor's Home Page\"", ".", "\u00a0", "\n", "^", " ", "Glass, Adam. Message to netbsd-users: ", "Theo De Raadt(sic)", ",", " December 23, 1994. Visited January 8, 2006.", "\n", "^", " ", "Wayner, Peter. ", "Free For All: How Linux and the Free Software Movement Undercut the High Tech Titans,", " ", "18.3 Flames, Fights, and the Birth of OpenBSD", ", 2000. Visited January 6, 2006.", "\n", "^", " ", "Forbes. ", "Is Linux For Losers?", " June 16, 2005. Visited January 8, 2006.", "\n", "^", " ", "In ", "this message", " the NetBSD core team acknowledge De Raadt's \"positive contributions\" to the project despite their problems with him.", "\n", "^", " ", "Tux Journal. ", "A good morning with: Theo de Raadt", ",", " June 2, 2005. Visited April 21, 2006 (original is ", "404", "; please see a ", "cached copy on archive.org", ")", "\n", "^", " ", "Raadt, Theo de. Mail to openbsd-announce: ", "The OpenBSD 2.0 release", ",", " October 18, 1996. Visited December 10, 2005.", "\n", "^", " ", "Globe and Mail article: ", "\"U.S. military helps fund Calgary hacker\"", ". April 6, 2003. Accessed October 30, 2006.", "\n", "^", " ", "LWN.net article: ", "\"DARPA Cancels OpenBSD Funding\"", ". April 24, 2003. Accessed April 5, 2006.", "\n", "^", " ", "Andrews, Jeremy (May 2, 2006). ", "\"Interview: Theo de Raadt\"", ". Archived from ", "the original", " on April 24, 2013.", "\u00a0", "\n", "^", " ", "Lee, Matt (February 26, 2005). ", "\"Theo de Raadt presented with the 2004 Free Software Award\"", ". Free Software Foundation.", "\u00a0", "\n", "^", " ", "LXer article: ", "Broadcom Driver Dispute Uglier Than Necessary", ". April 7, 2007. Accessed April 8, 2007.", "\n", "^", " ", "Thread on gmane.linux.kernel.wireless.general: ", "OpenBSD bcw: Possible GPL license violation issues", " Various dates beginning April 4, 2007. Accessed April 8, 2007.", "\n", "^", " ", "Theo de Raadt (4 April 2007). ", "\"OpenBSD bcw: Possible GPL license violation issues\"", ". Retrieved ", "28 May", " 2017", " \u2013 via ", "marc.info", ".", "\u00a0", "\n", "^", " ", "de Raadt, Theo (August 31, 2007). ", "\"That whole \"Linux stealing our code\" thing\"", ". LKML.org.", "\u00a0", "\n", "\n", "\n", "External links", "[", "edit", "]", "\n", "\n", "\n", "Free software portal", "\n", "\n", "\n", "\n", "\n", "\n", "Wikiquote has quotations related to: ", "Theo de Raadt", "\n", "\n", "\n", "\n", "\n", "\n", "Wikimedia Commons has media related to ", "Theo de Raadt", ".", "\n", "\n", "\n", "\n", "Theo de Raadt's Web site", "\n", "Interview (2006): Theo de Raadt", ", at ", "KernelTrap.org", " (copy at Internet Archive).", "\n", "Theo de Raadt Responds", ", interview at ", "Slashdot", ".", "\n", "Interview (2001): Theo de Raadt", ", at ", "KernelTrap.org", " (copy at Internet Archive).", "\n", "Is Linux For Losers?", ", interview at ", "Forbes.com", ".", "\n", "Theo de Raadt presented with the 2004 Free Software Award", "\n", "NNDB: Theo de Raadt", "\n", "Staying on the cutting edge", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "v", "\n", "t", "\n", "e", "\n", "\n", "\n", "The ", "OpenBSD", " Project", "\n", "\n", "\n", "\n", "Operating system", "\n", "\n", "\n", "\n", "OpenBSD", "\n", "\n", "version history", "\n", "security", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "Related projects", "\n", "\n", "\n", "\n", "CARP", "\n", "LibreSSL", "\n", "mandoc", "\n", "OpenSSH", "\n", "OpenBGPD", "\n", "OpenIKED", "\n", "OpenOSPFD", "\n", "OpenNTPD", "\n", "OpenSMTPD", "\n", "PF", "\n", "sndio", "\n", "spamd", "\n", "Systrace", "\n", "tmux", "\n", "Xenocara", "\n", "\n", "cwm", "\n", "\n", "\n", "W^X", "\n", "\n", "\n", "\n", "\n", "\n", "People", "\n", "\n", "\n", "\n", "Theo de Raadt", "\n", "Niels Provos", "\n", "OpenBSD Foundation", "\n", "Plaid Tongued Devils", "\n", "\n", "\n", "\n", "\n", "\n", "Resources", "\n", "\n", "\n", "\n", "OpenBSD Journal", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "Authority control", "\n", "\n", "\n", "\n", "WorldCat Identities", "\n", "VIAF", ": ", "106072661", "\n", "MusicBrainz", ": ", "11ff06a3-6127-4b6d-9b43-bafcd8c650da", "\n", "DBLP", ": ", "54/954", "\n", "\n", "\n", "\n", "\n", "\n", "\n\n\n", "\n", "\n", "\n", "\n"], "lastUpdated": " 18 January 2018, at 07:07."}, +{"title": "Altruism", "text": ["For the concept in behavioral ecology, see ", "Altruism (biology)", ".", "\n", "\n", "\n", "\n", "\nGiving ", "alms", " to the poor is often considered an altruistic action.", "\n", "\n", "\n", "Altruism", " or ", "selflessness", " is the principle or practice of concern for the ", "welfare", " of others. It is a traditional ", "virtue", " in many cultures and a core aspect of various religious traditions and secular worldviews, though the concept of \"others\" toward whom concern should be directed can vary among cultures and religions. Altruism or selflessness is the opposite of ", "selfishness", ". The word was coined by the French philosopher ", "Auguste Comte", " in French, as ", "altruisme", ", for an ", "antonym", " of ", "egoism", ".", "[1]", "[2]", " He derived it from the Italian ", "altrui", ", which in turn was derived from Latin ", "alteri", ", meaning \"", "other people", "\" or \"somebody else\".", "[3]", "\n", "Altruism in biological observations in field populations of the day organisms can be defined as an individual performing an action which is at a cost to themselves (e.g., pleasure and quality of life, time, probability of survival or reproduction), but benefits, either directly or indirectly, another third-party individual, without the expectation of reciprocity or compensation for that action. Steinberg suggests a definition for altruism in the clinical setting, that is \"intentional and voluntary actions that aim to enhance the welfare of another person in the absence of any quid pro quo external rewards\".", "[4]", "\n", "Altruism can be distinguished from feelings of ", "loyalty", ", in that whilst the latter is predicated upon social relationships, altruism does not consider relationships. Much debate exists as to whether ", "\"true\"", " altruism is possible in human psychology. The theory of ", "psychological egoism", " suggests that no act of sharing, helping or sacrificing can be described as truly altruistic, as the actor may receive an intrinsic reward in the form of personal ", "gratification", ". The validity of this argument depends on whether ", "intrinsic rewards", " qualify as \"benefits\". The actor also may not be expecting a reward.", "\n", "The term ", "altruism", " may also refer to an ethical doctrine that claims that individuals are morally obliged to benefit others. Used in this sense, it is usually contrasted with ", "egoism", ", which is defined as acting to the benefit of one's self.", "\n", "\n", "\n", "\n", "Contents", "\n", "\n", "\n", "1", " ", "The notion of altruism", "\n", "2", " ", "Scientific viewpoints", "\n", "\n", "2.1", " ", "Anthropology", "\n", "2.2", " ", "Evolutionary explanations", "\n", "2.3", " ", "Neurobiology", "\n", "2.4", " ", "Psychology", "\n", "2.5", " ", "Sociology", "\n", "2.6", " ", "Pathological altruism", "\n", "\n", "\n", "3", " ", "Religious viewpoints", "\n", "\n", "3.1", " ", "Buddhism", "\n", "3.2", " ", "Jainism", "\n", "3.3", " ", "Christianity", "\n", "3.4", " ", "Islam", "\n", "3.5", " ", "Judaism", "\n", "3.6", " ", "Sikhism", "\n", "3.7", " ", "Hinduism", "\n", "\n", "\n", "4", " ", "Philosophy", "\n", "5", " ", "Genetics", "\n", "6", " ", "See also", "\n", "7", " ", "Notes", "\n", "8", " ", "References", "\n", "9", " ", "External links", "\n", "\n", "\n", "\n", "The notion of altruism", "[", "edit", "]", "\n", "The concept has a long history in ", "philosophical", " and ", "ethical", " thought. The term was originally coined in the 19th century by the founding ", "sociologist", " and ", "philosopher of science", ", ", "Auguste Comte", ", and has become a major topic for ", "psychologists", " (especially ", "evolutionary psychology", " researchers), ", "evolutionary biologists", ", and ", "ethologists", ". Whilst ideas about altruism from one field can affect the other fields, the different methods and focuses of these fields always lead to different perspectives on altruism. In simple terms, altruism is caring about the welfare of other people and acting to help them.", "\n", "Scientific viewpoints", "[", "edit", "]", "\n", "Anthropology", "[", "edit", "]", "\n", "Marcel Mauss", "'s book ", "The Gift", " contains a passage called \"Note on alms\". This note describes the evolution of the notion of alms (and by extension of altruism) from the notion of sacrifice. In it, he writes:", "\n", "\n", "Alms are the fruits of a moral notion of the gift and of fortune on the one hand, and of a notion of sacrifice, on the other. Generosity is an obligation, because Nemesis avenges the poor and the gods for the superabundance of happiness and wealth of certain people who should rid themselves of it. This is the ancient morality of the gift, which has become a principle of justice. The gods and the spirits accept that the share of wealth and happiness that has been offered to them and had been hitherto destroyed in useless sacrifices should serve the poor and children.", "\n", "\n", "\n", "Compare ", "Altruism (ethics) \u2013 perception of altruism as self-sacrifice", ".", "\n", "Compare ", "explanation of alms in various scriptures", ".", "\n", "\n", "Evolutionary explanations", "[", "edit", "]", "\n", "Main articles: ", "Altruism in animals", ", ", "Evolution of morality", ", and ", "Evolutionary ethics", "\n", "\n", "\n", "\n", "\nGiving alms to beggar children", "\n", "\n", "\n", "In the science of ", "ethology", " (the study of animal behaviour), and more generally in the study of ", "social evolution", ", altruism refers to behaviour by an individual that increases the ", "fitness", " of another individual while decreasing the fitness of the actor.", "[5]", " In ", "evolutionary psychology", " this may be applied to a wide range of human behaviors such as charity, emergency aid, help to coalition partners, ", "tipping", ", courtship gifts, production of ", "public goods", ", and ", "environmentalism", ".", "[6]", "\n", "Theories of apparently altruistic behavior were accelerated by the need to produce theories compatible with evolutionary origins. Two related strands of research on altruism have emerged from traditional evolutionary analyses and from ", "evolutionary game theory", " a mathematical model and analysis of behavioural strategies.", "\n", "Some of the proposed mechanisms are:", "\n", "\n", "Kin selection", ".", "[7]", " That animals and humans are more altruistic towards close kin than to distant kin and non-kin has been confirmed in numerous studies across many different cultures. Even subtle cues indicating kinship may unconsciously increase altruistic behavior. One kinship cue is facial resemblance. One study found that slightly altering photographs so that they more closely resembled the faces of study participants increased the trust the participants expressed regarding depicted persons. Another cue is having the same family name, especially if rare, and this has been found to increase helpful behavior. Another study found more cooperative behavior the greater the number of perceived kin in a group. Using kinship terms in political speeches increased audience agreement with the speaker in one study. This effect was especially strong for firstborns, who are typically close to their families.", "[6]", "\n", "Vested interests. People are likely to suffer if their friends, allies, and similar social ", "ingroups", " suffer or even disappear. Helping such group members may therefore eventually benefit the altruist. Making ingroup membership more noticeable increases cooperativeness. Extreme self-sacrifice towards the ingroup may be adaptive if a hostile ", "outgroup", " threatens to kill the entire ingroup.", "[6]", "\n", "Reciprocal altruism", ".", "[8]", " See also ", "Reciprocity (evolution)", ".\n", "\n", "Direct ", "reciprocity", ".", "[9]", " Research shows that it can be beneficial to help others if there is a chance that they can and will reciprocate the help. The effective ", "tit for tat", " strategy is one ", "game theoretic", " example. Many people seem to be following a similar strategy by cooperating if and only if others cooperate in return.", "[6]", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "One consequence is that people are more cooperative if it is more likely that individuals will interact again in the future. People tend to be less cooperative if they perceive that the frequency of helpers in the population is lower. They tend to help less if they see non-cooperativeness by others and this effect tend to be stronger than the opposite effect of seeing cooperative behaviors. Simply changing the cooperative framing of a proposal may increase cooperativeness such as calling it a \"Community Game\" instead of a \"Wall Street Game.\"", "[6]", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "A tendency towards reciprocity implies that people will feel obligated to respond if someone helps them. This has been used by charities that give small gifts to potential donors hoping thereby to induce reciprocity. Another method is to announce publicly that someone has given a large donation. The tendency to reciprocate can even generalize so people become more helpful toward others in general after being helped. On the other hand, people will avoid or even retaliate against those perceived not to be cooperating. People sometimes mistakenly fail to help when they intended to, or their helping may not be noticed, which may cause unintended conflicts. As such, it may be an optimal strategy to be slightly forgiving of and have a slightly generous interpretation of non-cooperation.", "[6]", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "People are more likely to cooperate on a task if they can communicate with one another first. This may be due to better assessments of cooperativeness or due to exchange of promises. They are more cooperative if they can gradually build trust, instead of being asked to give extensive help immediately. Direct reciprocity and cooperation in a group can be increased by changing the focus and incentives from intra-group competition to larger scale competitions such as between groups or against the general population. Thus, giving grades and promotions based only on an individual's performance relative to a small local group, as is common, may reduce cooperative behaviors in the group.", "[6]", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "Indirect reciprocity.", "[10]", " The avoidance of poor reciprocators and cheaters causes a person's ", "reputation", " to become very important. A person with a good reputation for reciprocity have a higher chance of receiving help even from persons they have had no direct interactions with previously.", "[6]", "\n", "Strong reciprocity", ".", "[11]", " A form of reciprocity where some individuals seem to spend more resources on cooperating and punishing than would be most beneficial as predicted by several established theories of altruism. A number of theories have been proposed as explanations as well as criticisms regarding its existence.", "\n", "Pseudo-reciprocity.", "[12]", " An organism behaves altruistically and the recipient does not reciprocate but has an increased chance of acting in a way that is selfish but also as a byproduct benefits the altruist.", "\n", "\n", "\n", "Costly signaling", " and the ", "handicap principle", ".", "[13]", " Since altruism takes away resources from the altruist it can be an \"honest signal\" of resource availability and the abilities needed to gather resources. This may signal to others that the altruist is a valuable potential partner. It may also be a signal of interactive and cooperative intentions since those not interacting further in the future gain nothing from the costly signaling. It is unclear if costly signaling can indicate a long-term cooperative personality but people have increased trust for those who help. Costly signaling is pointless if everyone has the same traits, resources, and cooperative intentions but become a potentially more important signal if the population increasingly varies on these characteristics.", "[6]", "\n", "\n", "\n", "Hunters widely sharing the meat has been seen as a costly signal of ability and research has found that good hunters have higher reproductive success and more adulterous relations even if they themselves receive no more of the hunted meat than anyone else. Similarly, holding large feasts and giving large donations has been seen as ways of demonstrating one's resources. Heroic risk-taking has also been interpreted as a costly signal of ability.", "[6]", "\n", "\n", "\n", "\n", "\n", "\nVolunteers assist Hurricane victims at the ", "Houston Astrodome", ", following Hurricane Katrina.", "\n", "\n", "\n", "\n", "Both indirect reciprocity and costly signaling depend on the value of reputation and tend to make similar predictions. One is that people will be more helping when they know that their helping behavior will be communicated to people they will interact with later, is publicly announced, is discussed, or is simply being observed by someone else. This have been documented in many studies. The effect is sensitive to subtle cues such as people being more helpful when there were stylized eyespots instead of a logo on a computer screen. Weak reputational cues such as eyespots may become unimportant if there are stronger cues present and may lose their effect with continued exposure unless reinforced with real reputational effects.", "[6]", " Public displays such as public weeping for dead celebrities and participation in demonstrations may be influenced by a desire to be seen as altruistic. People who know that they are publicly monitored sometimes even wastefully donate money they know are not needed by recipient which may be because of reputational concerns.", "[14]", "\n", "\n", "\n", "Women have been found to find altruistic men to be attractive partners. When looking for a long-term partner, altruism may be a preferred trait as it may indicate that he is also willing to share resources with her and her children. It has been shown that men perform altruistic acts in the early stages of a romantic relationship or simply when in the presence of an attractive woman. While both sexes state that kindness is the most preferable trait in a partner there is some evidence that men place less value on this than women and that women may not be more altruistic in presence of an attractive man. Men may even avoid altruistic women in short-term relationships which may be because they expect less success.", "[6]", "[14]", "\n", "\n", "\n", "People may compete over getting the benefits of a high reputation which may cause ", "competitive altruism", ". On the other hand, in some experiments a proportion of people do not seem to care about reputation and they do not help more even if this is conspicuous. This may possibly be due to reasons such as ", "psychopathy", " or that they are so attractive that they need not be seen to be altruistic. The reputational benefits of altruism occur in the future as compared to the immediate costs of altruism in the present. While humans and other organisms generally place less value on future costs/benefits as compared to those in the present, some have shorter time horizons than others and these people tend to be less cooperative.", "[6]", "\n", "\n", "\n", "Explicit ", "extrinsic", " rewards and punishments have been found to sometimes actually have the opposite effect on behaviors compared to intrinsic rewards. This may be because such extrinsic, top-down incentives may replace (partially or in whole) intrinsic and reputational incentives, motivating the person to focus on obtaining the extrinsic rewards, which overall may make the behaviors less desirable. Another effect is that people would like altruism to be due to a personality characteristic rather than due to overt reputational concerns and simply pointing out that there are reputational benefits of an action may actually reduce them. This may possibly be used as derogatory tactic against altruists, especially by those who are non-cooperators. A counterargument is that doing good due to reputational concerns is better than doing no good at all.", "[6]", "\n", "\n", "\n", "Group selection", ". It has controversially been argued by some evolutionary scientists such as ", "David Sloan Wilson", " that natural selection can act at the level of non-kin groups to produce adaptations that benefit a non-kin group even if these adaptions are detrimental at the individual level. Thus, while altruistic persons may under some circumstances be outcompeted by less altruistic persons at the individual level, according to group selection theory the opposite may occur at the group level where groups consisting of the more altruistic persons may outcompete groups consisting of the less altruistic persons. Such altruism may only extend to ingroup members while there may instead prejudice and antagonism against outgroup members (See also ", "in-group favoritism", "). Group selection theory has been criticized by many other evolutionary scientists.", "[15]", "[16]", "\n", "\n", "\n", "\n", "\n", "\nHelping the ", "homeless", " in New York City", "\n", "\n", "\n", "Such explanations do not imply that humans are always consciously calculating how to increase their ", "inclusive fitness", " when they are doing altruistic acts. Instead, evolution has shaped psychological mechanisms, such as emotions, that promote altruistic behaviors.", "[6]", "\n", "Every single instance of altruistic behavior need not always increase inclusive fitness; altruistic behaviors would have been selected for if such behaviors on average increased inclusive fitness in the ancestral environment. This need not imply that on average 50% or more of altruistic acts were beneficial for the altruist in the ancestral environment; if the benefits from helping the right person were very high it would be beneficial to err on the side of caution and usually be altruistic even if in most cases there were no benefits.", "[6]", "\n", "The benefits for the altruist may be increased and the costs reduced by being more altruistic towards certain groups. Research has found that people are more altruistic to kin than to no-kin, to friends than to strangers, to those attractive than to those unattractive, to non-competitors than to competitors, and to members ingroups than to members of outgroup.", "[6]", "\n", "The study of altruism was the initial impetus behind ", "George R. Price", "'s development of the ", "Price equation", ", which is a mathematical equation used to study genetic evolution. An interesting example of altruism is found in the cellular ", "slime moulds", ", such as ", "Dictyostelium", " mucoroides.", " These protists live as individual ", "amoebae", " until starved, at which point they aggregate and form a multicellular fruiting body in which some cells sacrifice themselves to promote the survival of other cells in the fruiting body.", "\n", "Selective investment theory proposes that close social bonds, and associated emotional, cognitive, and neurohormonal mechanisms, evolved in order to facilitate long-term, high-cost altruism between those closely depending on one another for survival and reproductive success.", "[17]", "[18]", "\n", "Such cooperative behaviors have sometimes been seen as arguments for left-wing politics such by the Russian zoologist and anarchist ", "Peter Kropotkin", " in his 1902 book ", "Mutual Aid: A Factor of Evolution", " and ", "Peter Singer", " in his book ", "A Darwinian Left", ".", "\n", "Neurobiology", "[", "edit", "]", "\n", "Jorge Moll and Jordan Grafman, neuroscientists at the ", "National Institutes of Health", " and LABS-D'Or Hospital Network (J.M.) provided the first evidence for the neural bases of altruistic giving in normal healthy volunteers, using ", "functional magnetic resonance imaging", ". In their research, published in the ", "Proceedings of the National Academy of Sciences", " USA in October 2006,", "[19]", " they showed that both pure monetary rewards and charitable donations activated the ", "mesolimbic", " reward pathway, a primitive part of the brain that usually responds to food and sex. However, when volunteers generously placed the interests of others before their own by making charitable donations, another brain circuit was selectively activated: the subgenual cortex/", "septal region", ". These structures are intimately related to social attachment and bonding in other species. Altruism, the experiment suggested, was not a superior moral faculty that suppresses basic selfish urges but rather was basic to the brain, hard-wired and pleasurable.", "[20]", " One brain region, the subgenual ", "anterior cingulate", " cortex/", "basal forebrain", ", contributes to learning altruistic behavior, especially in those with trait empathy.", "[21]", " The same study has shown a connection between giving to charity and the promotion of social bonding.", "[22]", "\n", "In fact, in an experiment published in March 2007 at the ", "University of Southern California", " neuroscientist ", "Antonio R. Damasio", " and his colleagues showed that subjects with damage to the ", "ventromedial prefrontal cortex", " lack the ability to empathically feel their way to moral answers, and that When confronted with moral dilemmas, these brain-damaged patients coldly came up with \"end-justifies-the-means\" answers, leading Damasio to conclude that the point was not that they reached immoral conclusions, but that when they were confronted by a difficult issue - in this case as whether to shoot down a passenger plane hijacked by terrorists before it hits a major city - these patients appear to reach decisions without the anguish that afflicts those with normally functioning brains. According to ", "Adrian Raine", ", a clinical neuroscientist also at the University of Southern California, one of this study's implications is that society may have to rethink how it judges immoral people: \"Psychopaths often feel no empathy or remorse. Without that awareness, people relying exclusively on reasoning seem to find it harder to sort their way through moral thickets. Does that mean they should be held to different standards of accountability?\"", "[20]", "\n", "In another study, in the 1990s, Dr. Bill Harbaugh, a ", "University of Oregon", " economist, concluded people are motivated to give for reasons of personal prestige and in a similar fMRI scanner test in 2007 with his psychologist colleague Dr. Ulrich Mayr, reached the same conclusions of Jorge Moll and Jordan Grafman about giving to charity, although they were able to divide the study group into two groups: \"egoists\" and \"altruists\". One of their discoveries was that, though rarely, even some of the considered \"egoists\" sometimes gave more than expected because that would help others, leading to the conclusion that there are other factors in cause in charity, such as a person's environment and values.", "[22]", "\n", "Psychology", "[", "edit", "]", "\n", "The International Encyclopedia of the Social Sciences defines ", "psychological altruism", " as \"a motivational state with the goal of increasing another\u2019s welfare.\" Psychological altruism is contrasted with ", "psychological egoism,", " which refers to the motivation to increase one\u2019s own welfare.", "[23]", "\n", "There has been some debate on whether or not humans are truly capable of psychological altruism.", "[24]", " Some definitions specify a self-sacrificial nature to altruism and a lack of external rewards for altruistic behaviors.", "[25]", " However, because altruism ultimately benefits the self in many cases, the selflessness of altruistic acts is brought to question. The ", "social exchange theory", " postulates that altruism only exists when benefits to the self outweigh costs to the self.", "[26]", " ", "Daniel Batson", " is a psychologist who examined this question and argues against the social exchange theory. He identified four major motives for altruism: altruism to ultimately benefit the self (egoism), to ultimately benefit the other person (altruism), to benefit a group (collectivism), or to uphold a moral principle (", "principlism", "). Altruism that ultimately serves selfish gains is thus differentiated from selfless altruism, but the general conclusion has been that empathy-induced altruism can be genuinely selfless.", "[27]", " The ", "empathy-altruism", " hypothesis", " basically states that psychological altruism does exist and is evoked by the empathic desire to help someone who is suffering. Feelings of empathic concern are contrasted with feelings of personal distress, which compel people to reduce their own unpleasant emotions. People with empathic concern help others in distress even when exposure to the situation could be easily avoided, whereas those lacking in empathic concern avoid helping unless it is difficult or impossible to avoid exposure to another's suffering.", "[23]", " Helping behavior is seen in humans at about two years old, when a toddler is capable of understanding subtle emotional cues.", "[28]", "\n", "\n", "\n", "\n", "\n", "Peace Corps", " trainees swearing in as volunteers in ", "Cambodia", ", 4 April 2007", "\n", "\n", "\n", "In psychological research on altruism, studies often observe altruism as demonstrated through prosocial behaviors such as helping, comforting, sharing, cooperation, philanthropy, and community service.", "[25]", " Research has found that people are most likely to help if they recognize that a person is in need and feel personal responsibility for reducing the person's distress. Research also suggests that the number of bystanders witnessing distress or suffering affects the likelihood of helping (the ", "Bystander effect", "). Greater numbers of bystanders decrease individual feelings of responsibility.", "[23]", "[29]", " However, a witness with a high level of empathic concern is likely to assume personal responsibility entirely regardless of the number of bystanders.", "[23]", " A feeling of personal responsibility or - moral norm - has also strongly been associated with other pro-social behaviors such as charitable giving.", "[30]", "\n", "Many studies have observed the effects of ", "volunteerism", " (as a form of altruism) on happiness and health and have consistently found a strong connection between volunteerism and current and future health and well-being.", "[31]", "[32]", " In a study of older adults, those who volunteered were higher on life satisfaction and will to live, and lower in ", "depression", ", ", "anxiety", ", and ", "somatization", ".", "[33]", " Volunteerism and helping behavior have not only been shown to improve mental health, but physical health and longevity as well, attributable to the activity and social integration it encourages.", "[31]", "[34]", "[35]", "[36]", " One study examined the physical health of mothers who volunteered over a 30-year period and found that 52% of those who did not belong to a volunteer organization experienced a major illness while only 36% of those who did volunteer experienced one.", "[37]", " A study on adults ages 55+ found that during the four-year study period, people who volunteered for two or more organizations had a 63% lower likelihood of dying. After controlling for prior health status, it was determined that volunteerism accounted for a 44% reduction in mortality.", "[38]", " Merely being aware of kindness in oneself and others is also associated with greater well-being. A study that asked participants to count each act of kindness they performed for one week significantly enhanced their subjective happiness.", "[39]", " It is important to note that, while research supports the idea that altruistic acts bring about happiness, it has also been found to work in the opposite direction\u2014that happier people are also kinder. The relationship between altruistic behavior and happiness is bidirectional. Studies have found that generosity increases linearly from sad to happy affective states.", "[40]", "\n", "Studies have also been careful to note that feeling over-taxed by the needs of others has conversely negative effects on health and happiness.", "[36]", " For example, one study on volunteerism found that feeling overwhelmed by others' demands had an even stronger negative effect on mental health than helping had a positive one (although positive effects were still significant).", "[41]", " Additionally, while generous acts make people feel good about themselves, it is also important for people to appreciate the kindness they receive from others. Studies suggest that gratitude goes hand-in-hand with kindness and is also very important for our well-being. A study on the relationship happiness to various character strengths showed that \"a conscious focus on gratitude led to reductions in negative affect and increases in optimistic appraisals, positive affect, offering emotional support, sleep quality, and well-being.\".", "[42]", " Psychologists generally refer to this virtuous cycle of helping others, doing good and subsequently feeling good as \"the helper's high\".", "[43]", "[44]", "\n", "Sociology", "[", "edit", "]", "\n", "\"Sociologists have long been concerned with how to build the good society\" (\"Altruism, Morality, and Social Solidarity\". American Sociological Association.", "[45]", "). The structure of our societies and how individuals come to exhibit charitable, philanthropic, and other pro-social, altruistic actions for the common good is a largely researched topic within the field. The American Sociology Association (ASA) acknowledges ", "Public sociology", " saying, \"The intrinsic scientific, policy, and public relevance of this field of investigation in helping to construct 'good societies' is unquestionable\" (\"Altruism, Morality, and Social Solidarity\" ASA). This type of sociology seeks contributions that aid grassroots and theoretical understandings of what motivates altruism and how it is organized, and promotes an altruistic focus in order to benefit the world and people it studies. How altruism is framed, organized, carried out, and what motivates it at the group level is an area of focus that sociologists seek to investigate in order to contribute back to the groups it studies and \"build the good society\".", "\n", "See also: ", "Public sociology", "\n", "Pathological altruism", "[", "edit", "]", "\n", "Pathological", " altruism is when altruism is taken to an unhealthy extreme, and either harms the altruistic person, or well-intentioned actions cause more harm than good.", "\n", "The term \"pathological altruism\" was popularised by the book ", "Pathological Altruism", ".", "\n", "Examples include depression and burnout seen in healthcare professionals, an unhealthy focus on others to the detriment of one's own needs, hoarding of animals, and ineffective philanthropic and social programs that ultimately worsen the situations they are meant to aid.", "[46]", "\n", "Religious viewpoints", "[", "edit", "]", "\n", "See also: ", "Evolutionary origin of religions", "\n", "Most, if not all, of the world's religions promote altruism as a very important moral value. ", "Buddhism", ", ", "Christianity", ", ", "Hinduism", ", ", "Islam", ", ", "Jainism", ", ", "Judaism", ", and ", "Sikhism", ", etc., place particular emphasis on altruistic morality.", "\n", "Buddhism", "[", "edit", "]", "\n", "\n", "\n", "\n", "\nMonks collecting alms", "\n", "\n", "\n", "Altruism figures prominently in Buddhism. Love and compassion are components of all forms of Buddhism, and are focused on all beings equally: love is the wish that all beings be happy, and compassion is the wish that all beings be free from suffering. \"Many illnesses can be cured by the one medicine of love and compassion. These qualities are the ultimate source of human happiness, and the need for them lies at the very core of our being\" (Dalai Lama).", "[47]", "\n", "Since \"all beings\" includes the individual, love and compassion in Buddhism are outside the opposition between self and other. It is even said that the distinction between self and other is part of the root cause of our suffering. In practical terms, however, since many people are spontaneously self-centered, Buddhism encourages people to focus love and compassion on others, and thus can be characterized as \"altruistic.\"", "[", "citation needed", "]", "\n", "Still, the notion of altruism is modified in such a world-view, since the belief is that such a practice promotes our own happiness: \"The more we care for the happiness of others, the greater our own sense of well-being becomes\" (Dalai Lama", "[47]", ").", "\n", "In the context of larger ethical discussions on moral action and judgment, Buddhism is characterized by the belief that negative (unhappy) consequences of our actions derive not from punishment or correction based on moral judgment, but from the law of karma, which functions like a natural law of cause and effect. A simple illustration of such cause and effect is the case of experiencing the effects of what one causes: if one causes suffering, then as a natural consequence one would experience suffering; if one causes happiness, then as a natural consequence one would experience happiness.", "\n", "Main article: ", "Karma in Buddhism", "\n", "In Buddhism, ", "karma", " (P\u0101li ", "kamma", ") is strictly distinguished from ", "vip\u0101ka", ", meaning \"fruit\" or \"result\". Karma is categorized within the group or groups of cause (P\u0101li ", "hetu", ") in the ", "chain", " of ", "cause and effect", ", where it comprises the elements of \"volitional activities\" (Pali ", "sankhara", ") and \"action\" (Pali ", "bhava", "). Any action is understood to create \"seeds\" in the mind that sprout into the appropriate results (P\u0101li ", "vipaka", ") when they meet the right conditions. Most types of karmas, with good or bad results, will keep one in the wheel of ", "sams\u0101ra", "; others will liberate one to ", "nirv\u0101na", ".", "\n", "Buddhism relates karma directly to motives behind an action. Motivation usually makes the difference between \"good\" and \"bad\", but motivation also includes the aspect of ignorance; so a well-intended action from an ignorant mind can easily be \"bad\" in that it creates unpleasant results for the \"actor.\"", "\n", "In Buddhism, karma is not the only cause of all that happens. As taught in the early texts, the commentarial tradition classified causal mechanisms governing the universe in five categories, known as Niyama Dhammas:", "[48]", "[49]", "\n", "\n", "Kamma Niyama \u2014 Consequences of one's actions", "\n", "Utu Niyama \u2014 Seasonal changes and climate", "\n", "Biija Niyama \u2014 Laws of heredity", "\n", "Citta Niyama \u2014 Will of mind", "\n", "Dhamma Niyama \u2014 Nature's tendency to produce a perfect type", "\n", "\n", "Jainism", "[", "edit", "]", "\n", "See also: ", "Ahimsa in Jainism", "\n", "\n", "\n", "\n", "\nSculpture depicting the Jain concept of ", "ahimsa", " (non-injury)", "\n", "\n", "\n", "The fundamental principles of ", "Jainism", " revolve around the concept of altruism, not only for humans but for all sentient beings. Jainism preaches the view of ", "Ahimsa", " \u2013 to live and let live, thereby not harming sentient beings, i.e. uncompromising reverence for all life. It also considers all living things to be equal. The first ", "Tirthankara", ", ", "Rishabhdev", ", introduced the concept of altruism for all living beings, from extending knowledge and experience to others to donation, giving oneself up for others, non-violence and compassion for all living things.", "\n", "Jainism prescribes a path of non-violence to progress the soul to this ultimate goal. A major characteristic of Jain belief is the emphasis on the consequences of not only physical but also mental behaviors. One's unconquered mind with anger, pride (ego), deceit, greed and uncontrolled sense organs are the powerful enemies of humans. Anger spoils good relations, pride destroys humility, deceit destroys peace and greed destroys everything. Jainism recommends conquering anger by forgiveness, pride by humility, deceit by straightforwardness and greed by contentment.", "\n", "Jains believe that to attain enlightenment and ultimately liberation, one must practice the following ethical principles (major vows) in thought, speech and action. The degree to which these principles are practiced is different for householders and monks. They are:", "\n", "\n", "Non-violence (Ahimsa);", "\n", "Truthfulness (Satya);", "\n", "Non-stealing (Asteya);", "\n", "Celibacy (Brahmacharya);", "\n", "Non-possession", " or non-materialism (Aparigraha);", "\n", "\n", "The \"great vows\" (", "Mahavrata", ") are prescribed for monks and \"limited vows\" (", "Anuvrata", ") are prescribed for householders. The house-holders are encouraged to practice the above-mentioned five vows. The monks have to observe them very strictly. With consistent practice, it will be possible to overcome the limitations gradually, accelerating the spiritual progress.", "\n", "The principle of non-violence seeks to minimize karmas which limit the capabilities of the soul. Jainism views every ", "soul", " as worthy of respect because it has the potential to become ", "Siddha", " (", "God in Jainism", "). Because all living beings possess a soul, great care and awareness is essential in one's actions. Jainism emphasizes the equality of all life, advocating harmlessness towards all, whether the creatures are great or small. This policy extends even to microscopic organisms. Jainism acknowledges that every person has different capabilities and capacities to practice and therefore accepts different levels of compliance for ascetics and householders.", "\n", "Christianity", "[", "edit", "]", "\n", "\n", "\n", "\n", "\nStatue of ", "Mother Teresa", " in India", "\n", "\n", "\n", "Altruism is central to the teachings of Jesus found in the ", "Gospel", ", especially in the ", "Sermon on the Mount", " and the ", "Sermon on the Plain", ". From biblical to medieval ", "Christian traditions", ", tensions between self-affirmation and other-regard were sometimes discussed under the heading of \"disinterested love\", as in the ", "Pauline", " phrase \"love seeks not its own interests.\" In his book ", "Indoctrination and Self-deception,", " Roderick Hindery tries to shed light on these tensions by contrasting them with impostors of authentic self-affirmation and altruism, by analysis of other-regard within creative individuation of the self, and by contrasting love for the few with love for the many. Love confirms others in their freedom, shuns propaganda and masks, assures others of its presence, and is ultimately confirmed not by mere declarations from others, but by each person's experience and practice from within. As in practical arts, the presence and meaning of love becomes validated and grasped not by words and reflections alone, but in the making of the connection.", "\n", "St Thomas Aquinas", " interprets 'You should love your neighbour as yourself'", "[50]", " as meaning that love for ourselves is the exemplar of love for others.", "[51]", " Considering that \"the love with which a man loves himself is the form and root of friendship\" and quotes Aristotle that \"the origin of friendly relations with others lies in our relations to ourselves,\"", "[52]", " he concluded that though we are not bound to love others more than ourselves, we naturally seek the common good, the good of the whole, more than any private good, the good of a part. However, he thinks we should love God more than ourselves and our neighbours, and more than our bodily life\u2014since the ultimate purpose of loving our neighbour is to share in eternal beatitude: a more desirable thing than bodily well being. In coining the word Altruism, as stated above, ", "Comte", " was probably opposing this Thomistic doctrine, which is present in some theological schools within Catholicism.", "\n", "Many biblical authors draw a strong connection between love of others and love of God. 1 John 4 states that for one to love God one must love his fellowman, and that hatred of one's fellowman is the same as hatred of God. ", "Thomas Jay Oord", " has argued in several books that altruism is but one possible form of love. An altruistic action is not always a loving action. Oord defines altruism as acting for the other's good, and he agrees with feminists who note that sometimes love requires acting for one's own good when the other's demands undermine overall well-being.", "\n", "German philosopher ", "Max Scheler", " distinguishes two ways in which the strong can help the weak. One way is a sincere expression of Christian love, \"motivated by a powerful feeling of security, strength, and inner salvation, of the invincible fullness of one\u2019s own life and existence\".", "[53]", " Another way is merely \"one of the many modern substitutes for love, ... nothing but the urge to turn away from oneself and to lose oneself in other people\u2019s business.\"", "[54]", " At its worst, Scheler says, \"love for the small, the poor, the weak, and the oppressed is really disguised hatred, repressed envy, an impulse to detract, etc., directed against the opposite phenomena: wealth, strength, power, largesse.\"", "[55]", "\n", "Islam", "[", "edit", "]", "\n", "In ", "Islam", ", the concept 'eysaar' (\u0625\u064a\u062b\u0627\u0631) (altruism) is the notion of 'preferring others to oneself'. For Sufis, this means devotion to others through complete forgetfulness of one's own concerns, where concern for others is rooted to be a demand made by ALLAH on the human body, considered to be property of ALLAH alone. The importance lies in sacrifice for the sake of the greater good; ", "Islam", " considers those practicing Eyaar as abiding by the highest degree of nobility.", "[56]", " This is similar to the notion of chivalry, but unlike that European concept, in i'thar attention is focused on everything in existence. A constant concern for ", "ALLAH", " (i.e. God) results in a careful attitude towards people, animals, and other things in this world.", "[57]", " This concept was emphasized by Sufis of Islam like ", "Rabia al-Adawiyya", " who paid attention to the difference between dedication to ", "ALLAH", " (i.e. God) and dedication to people. Thirteenth-century Turkish Sufi poet ", "Yunus Emre", " explained this philosophy as \"Yarat\u0131lan\u0131 severiz, Yaratandan \u00f6t\u00fcr\u00fc\" or ", "We love the creature, because of The Creator.", " For many Muslims, i'thar must be practiced as a religious obligation during specific Islamic holidays. However, i'thar is also still an Islamic ideal to which all Muslims should strive to adhere at all times.", "\n", "Judaism", "[", "edit", "]", "\n", "Judaism defines altruism as the desired goal of creation. The famous Rabbi ", "Abraham Isaac Kook", " stated that love is the most important attribute in humanity.", "[58]", " This is defined as ", "bestowal", ", or giving, which is the intention of altruism. This can be altruism towards humanity that leads to altruism towards the creator or God. ", "Kabbalah", " defines God as the force of giving in ", "existence", ". Rabbi ", "Moshe Chaim Luzzatto", " in particular focused on the 'purpose of creation' and how the will of God was to bring creation into perfection and adhesion with this upper force.", "[59]", "\n", "Modern Kabbalah developed by Rabbi ", "Yehuda Ashlag", ", in his writings about the future generation, focuses on how society could achieve an altruistic social framework.", "[60]", " Ashlag proposed that such a framework is the purpose of creation, and everything that happens is to raise humanity to the level of altruism, love for one another. Ashlag focused on society and its relation to ", "divinity", ".", "[61]", "\n", "Sikhism", "[", "edit", "]", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "This section ", "needs additional citations for ", "verification", ". ", "Please help ", "improve this article", " by ", "adding citations to reliable sources", ". Unsourced material may be challenged and removed.", " ", "(September 2017)", " ", "(", "Learn how and when to remove this template message", ")", "\n", "\n", "\n", "\n", "Altruism is essential to the Sikh religion. The central faith in Sikhism is that the greatest deed any one can do is to imbibe and live the godly qualities like love, affection, sacrifice, patience, harmony, truthfulness. The fifth Nanak, Guru Arjun Dev sacrificed his life to uphold 22 carats of pure truth, the greatest gift to humanity, the Guru Granth. The ninth Guru , Guru Tegh Bahadur, sacrificed his head to protect weak and defenseless people against atrocity. In the late seventeenth century, ", "Guru Gobind Singh", " Ji (the tenth ", "guru", " in Sikhism), was in war with the ", "Mughal", " rulers to protect the people of different faiths when a fellow Sikh, ", "Bhai Kanhaiya", ", attended the troops of the enemy. He gave water to both friends and foes who were wounded on the battlefield. Some of the enemy began to fight again and some Sikh warriors were annoyed by Bhai Kanhaiya as he was helping their enemy. Sikh soldiers brought Bhai Kanhaiya before Guru Gobind Singh Ji, and complained of his action that they considered counter-productive to their struggle on the battlefield.\"What were you doing, and why?\" asked the Guru. \"I was giving water to the wounded because I saw your face in all of them,\" replied Bhai Kanhaiya. The Guru responded, \"Then you should also give them ointment to heal their wounds. You were practicing what you were coached in the house of the Guru.\"", "\n", "It was under the tutelage of the Guru that Bhai Kanhaiya subsequently founded a volunteer corps for altruism. This volunteer corps still to date is engaged in doing good to others and trains new volunteering recruits for doing the same.", "[62]", "\n", "Hinduism", "[", "edit", "]", "\n", "Swami Sivananda", ", an ", "Advaita", " scholar, reiterates the same views in his commentary synthesising Vedanta views on the ", "Brahma Sutras", ", a Vedantic text. In his commentary on Chapter 3 of the Brahma Sutras, Sivananda notes that karma is insentient and short-lived, and ceases to exist as soon as a deed is executed. Hence, karma cannot bestow the fruits of actions at a future date according to one's merit. Furthermore, one cannot argue that karma generates ", "apurva", " or ", "punya", ", which gives fruit. Since apurva is non-sentient, it cannot act unless moved by an intelligent being such as a god. It cannot independently bestow reward or punishment.", "\n", "However the very well known and popular text, the Bhagavad Gita supports the doctrine of karma yoga (selfless action) or action without desire for personal gain which can be said to encompass altruism. Altruistic acts are generally celebrated and very well received in Hindu literature and is central to Hindu morality.", "[63]", "\n", "Philosophy", "[", "edit", "]", "\n", "Main article: ", "Altruism (ethics)", "\n", "There exists a wide range of philosophical views on humans' obligations or motivations to act altruistically. Proponents of ", "ethical altruism", " maintain that individuals are morally obligated to act altruistically. The opposing view is ", "ethical egoism", ", which maintains that moral agents should always act in their own self-interest. Both ethical altruism and ethical egoism contrast with ", "utilitarianism", ", which maintains that each agent should act in order to maximise the efficacy of their function and the benefit to both themselves and their co-inhabitants.", "\n", "A related concept in ", "descriptive ethics", " is ", "psychological egoism", ", the thesis that humans always act in their own self-interest and that true altruism is impossible. ", "Rational egoism", " is the view that ", "rationality", " consists in acting in one's self-interest (without specifying how this affects one's moral obligations).", "\n", "Genetics", "[", "edit", "]", "\n", "The genes ", "OXTR", ", ", "CD38", ", ", "COMT", ", ", "DRD4", ", ", "DRD5", ", ", "IGF2", ", ", "GABRB2", " have been found to be candidate genes for altruism.", "[64]", "\n", "See also", "[", "edit", "]", "\n", "\n", "\n", "Altruria", "\n", "Charity (practice)", "\n", "Charitable organization", "\n", "Comedy of the commons", "\n", "Consideration", "\n", "Earning to give", "\n", "Effective altruism", "\n", "Egotism", "\n", "Empathy", "\n", "Empathy-altruism", "\n", "Family economics", "\n", "Gene-centered view of evolution", "\n", "Giving Pledge", ", pledge by Gates, Buffett and others to donate to charity at least half of their wealth", "\n", "Inclusive fitness", "\n", "Group selection", "\n", "Humanity (virtue)", "\n", "Kin selection", "\n", "Misanthropy", "\n", "Mutual aid", "\n", "Philanthropy", "\n", "Prisoner's dilemma", "\n", "Prosocial behavior", "\n", "Random act of kindness", "\n", "Reciprocal altruism", "\n", "Selfishness", "\n", "Social psychology", "\n", "Solidarity (sociology)", "\n", "Tit for tat", "\n", "\n", "\n", "Notes", "[", "edit", "]", "\n", "\n", "\n", "\n", "^", " ", "\"altruism (n .)\"", ". ", "Online Etymology Dictionary", ". Douglas Harper", ". Retrieved ", "19 September", " 2014", ".", "\u00a0", "\n", "^", " ", "Teske, Nathan (2009). ", "Political Activists in America: The Identity Construction Model of Political Participation", ". University Park, Pa.: Pennsylvania State University Press. p.\u00a0101. ", "ISBN", "\u00a0", "9780271035468", ".", "\u00a0", "\n", "^", " ", "Ciciloni, Ferdinando (1825). ", "A Grammar of the Italian Language", ". London: John Murray. p.\u00a064.", "\u00a0", "\n", "^", " ", "Steinberg, David (2010). \"Altruism in medicine: its definition, nature, and dilemmas\". ", "Cambridge Quarterly of Healthcare Ethics", ". ", "19", " (2): 249\u201357. ", "doi", ":", "10.1017/s0963180109990521", ".", "\u00a0", "\n", "^", " ", "Bell, Graham (2008). ", "Selection: the mechanism of evolution", ". Oxford: Oxford University Press. pp.\u00a0367\u2013368. ", "ISBN", "\u00a0", "0-19-856972-6", ".", "\u00a0", "\n", "^ ", "a", " ", "b", " ", "c", " ", "d", " ", "e", " ", "f", " ", "g", " ", "h", " ", "i", " ", "j", " ", "k", " ", "l", " ", "m", " ", "n", " ", "o", " ", "p", " ", "q", " ", "Pat Barcaly. The evolution of charitable behaviour and the power of reputation. In ", "Roberts, S. C. (2011). Roberts, S. Craig, ed. \"Applied Evolutionary Psychology\". Oxford University Press. ", "doi", ":", "10.1093/acprof:oso/9780199586073.001.0001", ". ", "ISBN", "\u00a0", "9780199586073", ".", "\u00a0", "\n", "^", " ", "Okasha, Samir. ", "\"Biological Altruism\"", ". ", "Stanford Encyclopedia of Philosophy", ". Retrieved ", "13 May", " 2011", ".", "\u00a0", "\n", "^", " ", "Trivers, R.L. (1971). ", "\"The evolution of reciprocal altruism\"", ". ", "Quarterly Review of Biology", ". ", "46", ": 35\u201357. ", "doi", ":", "10.1086/406755", ".", "\u00a0", "\n", "^", " ", "R Axelrod and WD Hamilton (27 March 1981). \"The evolution of cooperation\". ", "Science", ". ", "211", " (4489): 1390\u20131396. ", "Bibcode", ":", "1981Sci...211.1390A", ". ", "CiteSeerX", "\u00a0", "10.1.1.147.9644", "\u202f", ". ", "doi", ":", "10.1126/science.7466396", ". ", "PMID", "\u00a0", "7466396", ".", "\u00a0", "\n", "^", " ", "Martin Nowak & Karl Sigmund (October 2005). ", "\"Evolution of indirect reciprocity\"", ". ", "Nature", ". ", "437", " (27): 1291\u20131298. ", "Bibcode", ":", "2005Natur.437.1291N", ". ", "doi", ":", "10.1038/nature04131", ". ", "PMID", "\u00a0", "16251955", ".", "\u00a0", "\n", "^", " ", "Gintis, Herbert", " (September 2000). \"Strong Reciprocity and Human Sociality\". ", "Journal of Theoretical Biology", ". ", "206", " (2): 169\u2013179. ", "doi", ":", "10.1006/jtbi.2000.2111", ". ", "hdl", ":", "10419/105717", "\u202f", ". ", "PMID", "\u00a0", "10966755", ".", "\u00a0", "\n", "^", " ", "\"Genetic and Cultural Evolution of Cooperation, Chapter 11\". Berlin: Dahlem Workshop Reports. 2003. ", "ISBN", "\u00a0", "0-262-08326-4", ".", "\u00a0", "\n", "^", " ", "Zahavi, A. (1995). ", "\"Altruism as a handicap \u2013 The limitations of kin selection and reciprocity\"", ". ", "Avian Biol", ". ", "26", " (1): 1\u20133. ", "doi", ":", "10.2307/3677205", ". ", "JSTOR", "\u00a0", "3677205", ".", "\u00a0", "\n", "^ ", "a", " ", "b", " ", "Wendy Iredal and Mark van Vugt. Altruism as showing off: a signaling perspective on promoting green behaviour and acts of kindness. In ", "Roberts, S. C. (2011). Roberts, S. Craig, ed. \"Applied Evolutionary Psychology\". Oxford University Press. ", "doi", ":", "10.1093/acprof:oso/9780199586073.001.0001", ". ", "ISBN", "\u00a0", "9780199586073", ".", "\u00a0", "\n", "^", " ", "Leon Neyfakh Where does good come from?, 17 April 2011, ", "http://www.boston.com/bostonglobe/ideas/articles/2011/04/17/where_does_good_come_from/", "\n", "^", " ", "E. O. Wilson. Biologist E.O. Wilson on Why Humans, Like Ants, Need a Tribe. 2 April 2012. The Daily Beast. ", "http://www.thedailybeast.com/newsweek/2012/04/01/biologist-e-o-wilson-on-why-humans-like-ants-need-a-tribe.html", "\n", "^", " ", "Brown, S.L.; Brown, R.M. (2006). ", "\"Selective investment theory: Recasting the functional significance of close relationships\"", " ", "(PDF)", ". ", "Psychological Inquiry", ". ", "17", ": 1\u201329. ", "doi", ":", "10.1207/s15327965pli1701_01", ". Archived from ", "the original", " ", "(PDF)", " on 2014-07-14.", "\u00a0", "\n", "^", " ", "http://www.icts.res.in/media/uploads/Talk/Document/StLouis2011TelmoFIN.pdf", "[", "permanent dead link", "]", "\n", "^", " ", "Human fronto\u2013mesolimbic networks guide decisions about charitable donation, PNAS 2006:103(42);15623\u201315628", "\n", "^ ", "a", " ", "b", " ", "Vedantam, Shankar (May 2007). ", "\"If It Feels Good to Be Good, It Might Be Only Natural\"", ". Washington Post", ". Retrieved ", "23 April", " 2010", ".", "\u00a0", "\n", "^", " ", "Lockwood, Patricia L; Apps, Matthew A J; Valton, Vincent; Viding, Essi; Roiser, Jonathan P (2016). \"Neurocomputational mechanisms of prosocial learning and links to empathy\". ", "Proceedings of the National Academy of Sciences of the United States of America", ". ", "113", ": 9763\u20138. ", "doi", ":", "10.1073/pnas.1603198113", ". ", "PMID", "\u00a0", "27528669", ". ", "Lay summary", ". ", ". fMRI revealed that activity in a posterior portion of the subgenual anterior cingulate cortex/basal forebrain (sgACC) drives learning only when we are acting in a prosocial context", "\u00a0", "\n", "^ ", "a", " ", "b", " ", "Svoboda, Elizabeth (September 5, 2013). ", "\"Scientists Are Finding That We Are Hard-Wired for Giving\"", ". University of Notre Dame", ". Retrieved ", "7 August", " 2017", ".", "\u00a0", "\n", "^ ", "a", " ", "b", " ", "c", " ", "d", " ", "[\"Altruism.\" International Encyclopedia of the Social Sciences. Ed. William A. Darity, Jr. 2nd ed. Vol. 1. Detroit: Macmillan Reference USA, 2008. 87-88. Gale Virtual Reference Library. Web. 10 April 2012.]", "\n", "^", " ", "[Batson, C. (2011). Altruism in humans. New York, NY US: Oxford University Press.]", "\n", "^ ", "a", " ", "b", " ", "[Batson, C. (2012). A history of prosocial behavior research. In A. W. Kruglanski, ", "W. Stroebe", ", A. W. Kruglanski, (Eds.), Handbook of the history of social psychology (pp. 243\u2013264). New York, NY US: Psychology Press.]", "\n", "^", " ", "Maner, J. K.; Luce, C. L.; Neuberg, S. L.; Cialdini, R. B.; Brown, S.; Sagarin, B. J. (2002). ", "\"The effects of perspective taking on motivations for helping: Still no evidence for altruism\"", ". ", "Personality and Social Psychology Bulletin", ". ", "28", " (11): 1601\u20131610. ", "doi", ":", "10.1177/014616702237586", ".", "\u00a0", "\n", "^", " ", "[Batson, C., Ahmad, N., & Stocks, E. L. (2011). Four forms of prosocial motivation: Egoism, altruism, collectivism, and principlism. In D. Dunning, D. Dunning (Eds.), Social motivation (pp. 103\u2013126). New York, NY US: Psychology Press.]", "\n", "^", " ", "Svetlova, M.; Nichols, S. R.; Brownell, C. A. (2010). ", "\"Toddlers prosocial behavior: From instrumental to empathic to altruistic helping\"", ". ", "Child Development", ". ", "81", " (6): 1814\u20131827. ", "doi", ":", "10.1111/j.1467-8624.2010.01512.x", ". ", "PMC", "\u00a0", "3088085", "\u202f", ". ", "PMID", "\u00a0", "21077866", ".", "\u00a0", "\n", "^", " ", "Hudson, James M.; Bruckman, Amy S. (2004). \"The Bystander Effect: A Lens for Understanding Patterns of Participation\". ", "Journal of the Learning Sciences", ". ", "13", " (2): 165\u2013195. ", "CiteSeerX", "\u00a0", "10.1.1.72.4881", "\u202f", ". ", "doi", ":", "10.1207/s15327809jls1302_2", ".", "\u00a0", "\n", "^", " ", "van der Linden, S. (2011). ", "\"Charitable Intent: A Moral or Social Construct? A Revised Theory of Planned Behavior Model\"", ". ", "Current Psychology", ". ", "30", " (4): 355\u2013374. ", "doi", ":", "10.1007/s12144-011-9122-1", ".", "\u00a0", "\n", "^ ", "a", " ", "b", " ", "Musick, M. A.; Wilson, J. (2003). \"Volunteering and depression: The role of psychological and social resources in different age groups\". ", "Social Science & Medicine", ". ", "56", " (2): 259\u2013269. ", "doi", ":", "10.1016/S0277-9536(02)00025-4", ".", "\u00a0", "\n", "^", " ", "Koenig, L. B.; McGue, M.; Krueger, R. F.; Bouchard (2007). \"Religiousness, antisocial behavior, and altruism: Genetic and environmental mediation\". ", "Journal of Personality", ". ", "75", " (2): 265\u2013290. ", "doi", ":", "10.1111/j.1467-6494.2007.00439.x", ".", "\u00a0", "\n", "^", " ", "Hunter, K. I.; Hunter, M. W. (1980). \"Psychosocial differences between elderly volunteers and non-volunteers\". ", "The International Journal of Aging & Human Development", ". ", "12", " (3): 205\u2013213. ", "doi", ":", "10.2190/0H6V-QPPP-7JK4-LR38", ".", "\u00a0", "\n", "^", " ", "Kayloe, J. C.; Krause, M. (1985). \"RARE FIND: or The value of volunteerism\". ", "Psychosocial Rehabilitation Journal", ". ", "8", " (4): 49\u201356. ", "doi", ":", "10.1037/h0099659", ".", "\u00a0", "\n", "^", " ", "Brown, S. L.; Brown, R.; House, J. S.; Smith, D. M. (2008). \"Coping with spousal loss: Potential buffering effects of self-reported helping behavior\". ", "Personality and Social Psychology Bulletin", ". ", "34", " (6): 849\u2013861. ", "doi", ":", "10.1177/0146167208314972", ". ", "PMID", "\u00a0", "18344495", ".", "\u00a0", "\n", "^ ", "a", " ", "b", " ", "Post, S. G. (2005). \"Altruism, Happiness, and Health: It's Good to Be Good\". ", "International Journal of Behavioral Medicine", ". ", "12", " (2): 66\u201377. ", "CiteSeerX", "\u00a0", "10.1.1.485.8406", "\u202f", ". ", "doi", ":", "10.1207/s15327558ijbm1202_4", ". ", "PMID", "\u00a0", "15901215", ".", "\u00a0", "\n", "^", " ", "Moen, P.; Dempster-Mcclain, D.; Williams, R. M. (1992). \"Successful aging: A life-course perspective on women's multiple roles and health\". ", "American Journal of Sociology", ". ", "97", " (6): 1612\u20131638. ", "doi", ":", "10.1086/229941", ".", "\u00a0", "\n", "^", " ", "Oman, D.; Thoresen, C. E.; McMahon, K. (1999). \"Volunteerism and mortality among the community-dwelling elderly\". ", "Journal of Health Psychology", ". ", "4", " (3): 301\u2013316. ", "doi", ":", "10.1177/135910539900400301", "\u202f", ". ", "PMID", "\u00a0", "22021599", ".", "\u00a0", "\n", "^", " ", "Otake, K.; Shimai, S.; Tanaka-Matsumi, J.; Otsui, K.; Fredrickson, B. L. (2006). ", "\"Happy people become happier through kindness: A counting kindnesses intervention\"", ". ", "Journal of Happiness Studies", ". ", "7", " (3): 361\u2013375. ", "doi", ":", "10.1007/s10902-005-3650-z", ". ", "PMC", "\u00a0", "1820947", "\u202f", ". ", "PMID", "\u00a0", "17356687", ".", "\u00a0", "\n", "^", " ", "Underwood, B.; Froming, W. J.; Moore, B. S. (1977). \"Mood, attention, and altruism: A search for mediating variables\". ", "Developmental Psychology", ". ", "13", " (5): 541\u2013542. ", "doi", ":", "10.1037/0012-1649.13.5.541", ".", "\u00a0", "\n", "^", " ", "Schwartz, C.; Meisenhelder, J.; Ma, Y.; Reed, G. (2003). \"Altruistic Social Interest Behaviors Are Associated With Better Mental Health\". ", "Psychosomatic Medicine", ". ", "65", " (5): 778\u2013785. ", "CiteSeerX", "\u00a0", "10.1.1.529.7780", "\u202f", ". ", "doi", ":", "10.1097/01.PSY.0000079378.39062.D4", ". ", "PMID", "\u00a0", "14508020", ".", "\u00a0", "\n", "^", " ", "Shimai, S.; Otake, K.; Park, N.; Peterson, C.; Seligman, M. P. (2006). ", "\"Convergence of character strengths in American and Japanese young adults\"", ". ", "Journal of Happiness Studies", ". ", "7", " (3): 311\u2013322. ", "doi", ":", "10.1007/s10902-005-3647-7", ".", "\u00a0", "\n", "^", " ", "Van der Linden, Sander (December 2011). ", "\"The helper's high: Why it feels so good to give\"", ". Ode Magazine", ". Retrieved ", "14 November", " 2013", ".", "\u00a0", "\n", "^", " ", "van der Linden, S (2018). \"Warm glow is associated with low but not high cost sustainable behavior\". ", "Nature Sustainability", ". ", "1", ": 28\u201330. ", "doi", ":", "10.1038/s41893-017-0001-0", ".", "\u00a0", "\n", "^", " ", "American Sociological Association: Altruism, Morality and Social Solidarity", " ", "Archived", " 3 May 2012 at the ", "Wayback Machine", ".", "\n", "^", " ", "http://ukcatalogue.oup.com/product/9780199738571.do", "\n", "^ ", "a", " ", "b", " ", "Speech by the Dalai Lama", "\nThe phrase \"core of our being\" is ", "Freudian", "; see ", "Bettina Bock von W\u00fclfingen (2013). ", "\"Freud's 'Core of our Being' Between Cytology and Psychoanalysis\"", ". ", "Berichte zur Wissenschaftsgeschichte", ". ", "36", " (3): 226\u2013244. ", "doi", ":", "10.1002/bewi.201301604", ".", "\u00a0", "\n", "^", " ", "Davids, Rhys (2007). ", "Buddhism", ". Lightning Source Incorporated. p.\u00a0119. ", "ISBN", "\u00a0", "978-1-4067-5628-9", ".", "\u00a0", "\n", "^", " ", "Padmasiri de Silva (1998). ", "Environmental Philosophy and Ethics in Buddhism", ". Palgrave Macmillan. p.\u00a041. ", "ISBN", "\u00a0", "978-0-312-21316-9", ".", "\u00a0", "\n", "^", " ", "Leviticus", " 19 and Matthew 22", "\n", "^", " ", "Summa Theologica", ", II:II Quaestio 25, Article 4", "\n", "^", " ", "Nicomachean Ethics", " IX.4 1166a1", "\n", "^", " ", "Scheler, Max (1961). ", "Ressentiment", ". pp.\u00a088\u201389.", "\u00a0", "\n", "^", " ", "Scheler, Max (1961). ", "Ressentiment", ". pp.\u00a095\u201396.", "\u00a0", "\n", "^", " ", "Scheler, Max (1961). ", "Ressentiment", ". pp.\u00a096\u201397.", "\u00a0", "\n", "^", " ", "M (2004). ", "Key Concepts in the Practice of Sufism: Emerald Hills of the Heart", ". Rutherford, N.J.: Fountain. pp.\u00a010\u201311. ", "ISBN", "\u00a0", "1-932099-75-1", ".", "\u00a0", "\n", "^", " ", "Neusner, Jacob Eds (2005). ", "Altruism in World Religions", ". Washington, D.C.: Georgetown Univ. Press. pp.\u00a079\u201380. ", "ISBN", "\u00a0", "1-58901-065-5", ".", "\u00a0", "\n", "^", " ", "Kook, Abraham Isaac; Ben Zion Bokser (1978). ", "Abraham Isaac Kook: The lights of penitence, The moral principles, Lights of holiness, essays, letters, and poems", ". Paulist Press. pp.\u00a0135\u2013136. ", "ISBN", "\u00a0", "978-0-8091-2159-5", ".", "\u00a0", "\n", "^", " ", "Luzzatto, Moshe \u1e24ayyim (1997). ", "The way of God", ". Feldheim Publishers. pp.\u00a037\u201338. ", "ISBN", "\u00a0", "978-0-87306-769-0", ".", "\u00a0", "\n", "^", " ", "Ashlag, Yehuda (2006). ", "Building the Future Society", ". Thornhill, Canada: Laitman Kabbalah Publishers. pp.\u00a0120\u2013130. ", "ISBN", "\u00a0", "965-7065-34-8", ".", "\u00a0", "\n", "^", " ", "Ashlag, Yehuda (2006). ", "Building the Future Society", ". Thornhill, Canada: Laitman Kabbalah Publishers. pp.\u00a0175\u2013180. ", "ISBN", "\u00a0", "965-7065-34-8", ".", "\u00a0", "\n", "^", " ", "O. P. Ralhan (1997). ", "The great gurus of the Sikhs", ". New Delhi: Anmol Publications Pvt Ltd. p.\u00a0253. ", "ISBN", "\u00a0", "81-7488-479-3", ".", "\u00a0", "\n", "^", " ", "Sivananda, Swami. ", "Phaladhikaranam, Topic 8", ", Sutras 38\u201341.", "\n", "^", " ", "Thompson, GJ; Hurd, PL; Crespi, BJ (2013). ", "\"Genes underlying altruism\"", ". ", "Biol Lett", ". ", "9", ": 20130395. ", "doi", ":", "10.1098/rsbl.2013.0395", ". ", "PMC", "\u00a0", "3871336", "\u202f", ". ", "PMID", "\u00a0", "24132092", ".", "\u00a0", "\n", "\n", "\n", "\n", "References", "[", "edit", "]", "\n", "\n", "\n", "Oord, Thomas (2007). ", "The Altruism Reader", ". Philadelphia: Templeton Foundation Press. ", "ISBN", "\u00a0", "978-1-59947-127-3", ".", "\u00a0", "\n", "Oord, Thomas (2010). ", "Defining Love", ". Grand Rapids: Brazos Press. ", "ISBN", "\u00a0", "1-58743-257-9", ".", "\u00a0", "\n", "Batson, Charles (1991). ", "The Altruism Question", ". Mahwah: L. Erlbaum, Associates. ", "ISBN", "\u00a0", "978-0-8058-0245-0", ".", "\u00a0", "\n", "Nowak, M. A. (2006). ", "\"Five Rules for the Evolution of Cooperation\"", ". ", "Science", ". ", "314", " (5805): 1560\u20131563. ", "Bibcode", ":", "2006Sci...314.1560N", ". ", "doi", ":", "10.1126/science.1133755", ". ", "PMC", "\u00a0", "3279745", "\u202f", ". ", "PMID", "\u00a0", "17158317", ".", "\u00a0", "\n", "Fehr, E.; Fischbacher, U. (2003). ", "\"The nature of human altruism\"", ". ", "Nature", ". ", "425", " (6960): 785\u2013791. ", "Bibcode", ":", "2003Natur.425..785F", ". ", "doi", ":", "10.1038/nature02043", ". ", "PMID", "\u00a0", "14574401", ".", "\u00a0", "\n", "Comte, Auguste", ", ", "Catechisme positiviste", " (1852) or ", "Catechism of Positivism", ", tr. R. Congreve, (London: Kegan Paul, 1891)", "\n", "Knox, T. (1999). \"The volunteer's folly and socio-economic man: some thoughts on altruism, rationality, and community\". ", "Journal of Socio-Economics", ". ", "28", " (4): 475\u2013967. ", "doi", ":", "10.1016/S1053-5357(99)00045-1", ".", "\u00a0", "\n", "Kropotkin, Peter", ", ", "Mutual Aid: A Factor of Evolution", " (1902)", "\n", "Oord, Thomas (2004). ", "Science of Love", ". Philadelphia: Templeton Foundation Press. ", "ISBN", "\u00a0", "978-1-932031-70-6", ".", "\u00a0", "\n", "Nietzsche, Friedrich", ", ", "Beyond Good and Evil", "\n", "Pierre-Joseph Proudhon", ", ", "The Philosophy of Poverty", " (1847)", "\n", "Lysander Spooner", ", ", "Natural Law", "\n", "Matt Ridley", ", ", "The Origins of Virtue", "\n", "Oliner, Samuel P. and Pearl M. Towards a Caring Society: Ideas into Action. West Port, CT: Praeger, 1995.", "\n", "Axelrod, Robert (1984). ", "The Evolution of Cooperation", ". New York: Basic Books. ", "ISBN", "\u00a0", "0-465-02121-2", ".", "\u00a0", "\n", "Dawkins, Richard (1989). ", "The Selfish Gene", ". Oxford Oxfordshire: Oxford University Press. ", "ISBN", "\u00a0", "0-19-286092-5", ".", "\u00a0", "\n", "Wright, Robert (1995). ", "The Moral Animal", ". New York: Vintage Books. ", "ISBN", "\u00a0", "0-679-76399-6", ".", "\u00a0", "\n", "Madsen, E. A.; Tunney, R. J.; Fieldman, G.; Plotkin, H. C.; Dunbar, R. I. M.; Richardson, J. M.; McFarland, D. (2007). ", "\"Kinship and altruism: A cross-cultural experimental study\"", ". ", "British Journal of Psychology", ". ", "98", " (Pt 2): 339\u2013359. ", "doi", ":", "10.1348/000712606X129213", ". ", "PMID", "\u00a0", "17456276", ".", "\u00a0", "\n", "Wedekind, C.; Milinski, M. (1996). \"Human Cooperation in the simultaneous and the alternating Prisoner's Dilemma: Pavlov versus Generous Tit-for-tat\". ", "Evolution", ". ", "93", ": 2686\u20132689. ", "Bibcode", ":", "1996PNAS...93.2686W", ". ", "doi", ":", "10.1073/pnas.93.7.2686", "\u202f", ".", "\u00a0", "\n", "Monk-Turner, E.; Blake, V.; Chniel, F.; Forbes, S.; Lensey, L.; Madzuma, J. (2002). ", "\"Helping hands: A study of altruistic behavior\"", ". ", "Gender Issues", ". ", "20", " (4): 65\u201370. ", "doi", ":", "10.1007/s12147-002-0024-2", ".", "\u00a0", "\n", "\n", "\n", "External links", "[", "edit", "]", "\n", "\n", "\n", "Library resources", " about", "\n", "Altruism", "\n", "\n", "\n", "\n", "\n", "\n", "Resources in your library", "\n", "Resources in other libraries", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "Look up ", "altruism", " in Wiktionary, the free dictionary.", "\n", "\n", "\n", "\n", "Zalta, Edward N.", " (ed.). ", "\"Biological Altruism\"", ". ", "Stanford Encyclopedia of Philosophy", ".", "\u00a0", "\n", "\n", "\n", "Altruism", " on ", "In Our Time", " at the ", "BBC", ".", "\n", "\"The Good Show\"", ". ", "Radiolab", ". Season 9. Episode 1. New York. 14 December 2011. WNYC.", "\u00a0", "\n", "\n", "\n", "\n", "\n", "\n", "Articles and topics related to Altruism", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "v", "\n", "t", "\n", "e", "\n", "\n", "\n", "Defence mechanisms", "\n", "\n", "\n", "\n", "Level 1: Pathological", "\n", "\n", "\n", "\n", "Delusional projection", "\n", "Denial", "\n", "Distortion", "\n", "Extreme projection", "\n", "Splitting", "\n", "\n", "\n", "\n", "\n", "\n", "Level 2: Immature", "\n", "\n", "\n", "\n", "Acting out", "\n", "Fantasy", "\n", "Idealization", "\n", "Passive-aggression", "\n", "Projection", "\n", "Projective identification", "\n", "Somatization", "\n", "\n", "\n", "\n", "\n", "\n", "Level 3: Neurotic", "\n", "\n", "\n", "\n", "Displacement", "\n", "Dissociation", "\n", "Hypochondriasis", "\n", "Isolation", "\n", "Rationalization", "\n", "Reaction formation", "\n", "Regression", "\n", "Repression", "\n", "Undoing", "\n", "\n", "\n", "\n", "\n", "\n", "Level 4: Mature", "\n", "\n", "\n", "\n", "Altruism", "\n", "Anticipation", "\n", "Humour", "\n", "Identification", "\n", "Intellectualization", "\n", "Introjection", "\n", "Sublimation", "\n", "Suppression", "\n", "\n", "\n", "\n", "\n", "\n", "Other mechanisms", "\n", "\n", "\n", "\n", "Compartmentalization", "\n", "Exaggeration", "\n", "Minimisation", "\n", "Postponement of affect", "\n", "\n", "\n", "\n", "\n", "\n", "See also", "\n", "\n", "\n", "\n", "Narcissistic defences", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "v", "\n", "t", "\n", "e", "\n", "\n", "\n", "Philosophy", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "Branches", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "Traditional", "\n", "\n", "\n", "\n", "Metaphysics", "\n", "\n", "Ontology", "\n", "\n", "\n", "Epistemology", "\n", "Logic", "\n", "Ethics", "\n", "Aesthetics", "\n", "\n", "\n", "\n", "\n", "\n", "Philosophy of", "\n", "\n", "\n", "\n", "Action", "\n", "Art", "\n", "\n", "Culture", "\n", "Design", "\n", "Music", "\n", "Film", "\n", "\n", "\n", "Business", "\n", "Color", "\n", "Cosmos", "\n", "Dialogue", "\n", "Education", "\n", "Environment", "\n", "Futility", "\n", "Happiness", "\n", "Healthcare", "\n", "History", "\n", "Human nature", "\n", "Humor", "\n", "Feminism", "\n", "Language", "\n", "Life", "\n", "Literature", "\n", "Mathematics", "\n", "Mind", "\n", "\n", "Pain", "\n", "Psychology", "\n", "\n", "\n", "Philosophy of psychiatry", "\n", "Philosophy of perception", "\n", "Philosophy", "\n", "Religion", "\n", "Science", "\n", "\n", "Physics", "\n", "Chemistry", "\n", "Biology", "\n", "Geography", "\n", "\n", "\n", "Sexuality", "\n", "Social science", "\n", "\n", "Culture", "\n", "Economics", "\n", "Justice", "\n", "Law", "\n", "Politics", "\n", "Society", "\n", "\n", "\n", "Space and time", "\n", "Sport", "\n", "Technology", "\n", "\n", "Artificial intelligence", "\n", "Computer science", "\n", "Engineering", "\n", "Information", "\n", "\n", "\n", "War", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "Schools of thought", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "By era", "\n", "\n", "\n", "\n", "Ancient", "\n", "Western", "\n", "\n", "Medieval", "\n", "Renaissance", "\n", "Early modern", "\n", "Modern", "\n", "Contemporary", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "Ancient", "\n", "\n", "\n", "\n", "\n", "Chinese", "\n", "\n", "\n", "\n", "Agriculturalism", "\n", "Confucianism", "\n", "Legalism", "\n", "Logicians", "\n", "Mohism", "\n", "Chinese naturalism", "\n", "Neotaoism", "\n", "Taoism", "\n", "Yangism", "\n", "Zen", "\n", "\n", "\n", "\n", "\n", "\n", "Greco-", "Roman", "\n", "\n", "\n", "\n", "Aristotelianism", "\n", "Atomism", "\n", "Cynicism", "\n", "Cyrenaics", "\n", "Eleatics", "\n", "Eretrian school", "\n", "Epicureanism", "\n", "Hermeneutics", "\n", "Ionian", "\n", "\n", "Ephesian", "\n", "Milesian", "\n", "\n", "\n", "Megarian school", "\n", "Neoplatonism", "\n", "Peripatetic", "\n", "Platonism", "\n", "Pluralism", "\n", "Presocratic", "\n", "Pyrrhonism", "\n", "Pythagoreanism", "\n", "Neopythagoreanism", "\n", "Sophistic", "\n", "Stoicism", "\n", "\n", "\n", "\n", "\n", "\n", "Indian", "\n", "\n", "\n", "\n", "Samkhya", "\n", "Nyaya", "\n", "Vaisheshika", "\n", "Yoga", "\n", "M\u012bm\u0101\u1e43s\u0101", "\n", "\u0100j\u012bvika", "\n", "Aj\u00f1ana", "\n", "C\u0101rv\u0101ka", "\n", "Jain", "\n", "\n", "Anekantavada", "\n", "Sy\u0101dv\u0101da", "\n", "\n", "\n", "Buddhist", "\n", "\n", "\u015a\u016bnyat\u0101", "\n", "Madhyamaka", "\n", "Yogacara", "\n", "Sautr\u0101ntika", "\n", "Svatantrika", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "Persian", "\n", "\n", "\n", "\n", "Mazdakism", "\n", "Zoroastrianism", "\n", "Zurvanism", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "Medieval", "\n", "\n", "\n", "\n", "\n", "European", "\n", "\n", "\n", "\n", "Christian philosophy", "\n", "Scholasticism", "\n", "Thomism", "\n", "Renaissance humanism", "\n", "\n", "\n", "\n", "\n", "\n", "East Asian", "\n", "\n", "\n", "\n", "Korean Confucianism", "\n", "Edo Neo-Confucianism", "\n", "Neo-Confucianism", "\n", "\n", "\n", "\n", "\n", "\n", "Indian", "\n", "\n", "\n", "\n", "Vedanta", "\n", "\n", "Acintya bheda abheda", "\n", "Advaita", "\n", "Bhedabheda", "\n", "Dvaita", "\n", "Dvaitadvaita", "\n", "Shuddhadvaita", "\n", "Vishishtadvaita", "\n", "\n", "\n", "Navya-Ny\u0101ya", "\n", "\n", "\n", "\n", "\n", "\n", "Islamic", "\n", "\n", "\n", "\n", "Averroism", "\n", "Avicennism", "\n", "Illuminationism", "\n", "\u02bfIlm al-Kal\u0101m", "\n", "Sufi", "\n", "\n", "\n", "\n", "\n", "\n", "Jewish", "\n", "\n", "\n", "\n", "Judeo-Islamic", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "Modern", "\n", "\n", "\n", "\n", "\n", "People", "\n", "\n", "\n", "\n", "Cartesianism", "\n", "Kantianism", "\n", "Neo-Kantianism", "\n", "Hegelianism", "\n", "Marxism", "\n", "Spinozism", "\n", "\n", "\n", "\n", "\n", "\n", "0", "\n", "\n", "\n", "\n", "Anarchism", "\n", "Classical Realism", "\n", "Liberalism", "\n", "Collectivism", "\n", "Conservatism", "\n", "Determinism", "\n", "Dualism", "\n", "Empiricism", "\n", "Existentialism", "\n", "Foundationalism", "\n", "Historicism", "\n", "Holism", "\n", "Humanism", "\n", "Idealism", "\n", "\n", "Absolute", "\n", "British", "\n", "German", "\n", "Objective", "\n", "Subjective", "\n", "Transcendental", "\n", "\n", "\n", "Individualism", "\n", "Kokugaku", "\n", "Materialism", "\n", "Modernism", "\n", "Monism", "\n", "Naturalism", "\n", "Natural law", "\n", "Nihilism", "\n", "New Confucianism", "\n", "Neo-Scholasticism", "\n", "Pragmatism", "\n", "Phenomenology", "\n", "Positivism", "\n", "Reductionism", "\n", "Rationalism", "\n", "Social contract", "\n", "Socialism", "\n", "Transcendentalism", "\n", "Utilitarianism", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "Contemporary", "\n", "\n", "\n", "\n", "\n", "Analytic", "\n", "\n", "\n", "\n", "Applied ethics", "\n", "Analytic feminism", "\n", "Analytical Marxism", "\n", "Communitarianism", "\n", "Consequentialism", "\n", "Critical rationalism", "\n", "Experimental philosophy", "\n", "Falsificationism", "\n", "Foundationalism", "\u00a0/ ", "Coherentism", "\n", "Generative linguistics", "\n", "Internalism and Externalism", "\n", "Logical positivism", "\n", "Legal positivism", "\n", "Normative ethics", "\n", "Meta-ethics", "\n", "Moral realism", "\n", "Neo-Aristotelian", "\n", "Quinean naturalism", "\n", "Ordinary language philosophy", "\n", "Postanalytic philosophy", "\n", "Quietism", "\n", "Rawlsian", "\n", "Reformed epistemology", "\n", "Systemics", "\n", "Scientism", "\n", "Scientific realism", "\n", "Scientific skepticism", "\n", "Contemporary utilitarianism", "\n", "Vienna Circle", "\n", "Wittgensteinian", "\n", "\n", "\n", "\n", "\n", "\n", "Continental", "\n", "\n", "\n", "\n", "Critical theory", "\n", "Deconstruction", "\n", "Existentialism", "\n", "Feminist", "\n", "Frankfurt School", "\n", "New Historicism", "\n", "Hermeneutics", "\n", "Neo-Marxism", "\n", "Phenomenology", "\n", "Postmodernism", "\n", "Post-structuralism", "\n", "Social constructionism", "\n", "Structuralism", "\n", "Western Marxism", "\n", "\n", "\n", "\n", "\n", "\n", "Other", "\n", "\n", "\n", "\n", "Kyoto School", "\n", "Objectivism", "\n", "Russian cosmism", "\n", "more...", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "Positions", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "Aesthetics", "\n", "\n", "\n", "\n", "Formalism", "\n", "Institutionalism", "\n", "Aesthetic response", "\n", "\n", "\n", "\n", "\n", "\n", "Ethics", "\n", "\n", "\n", "\n", "Consequentialism", "\n", "Deontology", "\n", "Virtue", "\n", "\n", "\n", "\n", "\n", "\n", "Free will", "\n", "\n", "\n", "\n", "Compatibilism", "\n", "Determinism", "\n", "Libertarianism", "\n", "\n", "\n", "\n", "\n", "\n", "Metaphysics", "\n", "\n", "\n", "\n", "Atomism", "\n", "Dualism", "\n", "Monism", "\n", "Naturalism", "\n", "\n", "\n", "\n", "\n", "\n", "Epistemology", "\n", "\n", "\n", "\n", "Constructivism", "\n", "Empiricism", "\n", "Idealism", "\n", "Particularism", "\n", "Fideism", "\n", "Rationalism", "\u00a0/ ", "Reasonism", "\n", "Skepticism", "\n", "Solipsism", "\n", "\n", "\n", "\n", "\n", "\n", "Mind", "\n", "\n", "\n", "\n", "Behaviorism", "\n", "Emergentism", "\n", "Eliminativism", "\n", "Epiphenomenalism", "\n", "Functionalism", "\n", "Objectivism", "\n", "Subjectivism", "\n", "\n", "\n", "\n", "\n", "\n", "Normativity", "\n", "\n", "\n", "\n", "Absolutism", "\n", "Particularism", "\n", "Relativism", "\n", "Nihilism", "\n", "Skepticism", "\n", "Universalism", "\n", "\n", "\n", "\n", "\n", "\n", "Ontology", "\n", "\n", "\n", "\n", "Action", "\n", "Event", "\n", "Process", "\n", "\n", "\n", "\n", "\n", "\n", "Reality", "\n", "\n", "\n", "\n", "Anti-realism", "\n", "Conceptualism", "\n", "Idealism", "\n", "Materialism", "\n", "Naturalism", "\n", "Nominalism", "\n", "Physicalism", "\n", "Realism", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "Philosophy by region", "\n", "Philosophy-related lists", "\n", "Miscellaneous", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "By region", "\n", "\n", "\n", "\n", "African", "\n", "Ethiopian", "\n", "Aztec", "\n", "Native America", "\n", "Eastern", "\n", "Chinese", "\n", "Egyptian", "\n", "Czech", "\n", "Indian", "\n", "Indonesian", "\n", "Iranian", "\n", "Japanese", "\n", "Korean", "\n", "Vietnam", "\n", "Pakistani", "\n", "Western", "\n", "American", "\n", "Australian", "\n", "British", "\n", "Danish", "\n", "French", "\n", "German", "\n", "Greek", "\n", "Italian", "\n", "Polish", "\n", "Romanian", "\n", "Russian", "\n", "Slovene", "\n", "Spanish", "\n", "Turkish", "\n", "\n", "\n", "\n", "\n", "\n", "Lists", "\n", "\n", "\n", "\n", "Outline", "\n", "Index", "\n", "Years", "\n", "Problems", "\n", "Schools", "\n", "Glossary", "\n", "Philosophers", "\n", "Movements", "\n", "Publications", "\n", "\n", "\n", "\n", "\n", "\n", "Miscellaneous", "\n", "\n", "\n", "\n", "Women in philosophy", "\n", "Sage (philosophy)", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", " ", "Portal", "\n", " ", "Category", "\n", " ", "Book", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "v", "\n", "t", "\n", "e", "\n", "\n", "\n", "Charitable giving", "\n", "\n", "\n", "\n", "Main topics", "\n", "\n", "\n", "\n", "Alms", "\n", "Altruism", "\n", "Donation", "\n", "Fundraising", "\n", "Philanthropy", "\n", "Volunteering", "\n", "\n", "\n", "\n", "\n", "\n", "Types of ", "charitable", "\norganizations", "\n", "\n", "\n", "\n", "Charitable trust / Registered charity", "\n", "Foundation", "\n", "\n", "Private", "\n", "\n", "\n", "Mutual-benefit nonprofit corporation", "\n", "Non-governmental organization", "\n", "Nonprofit organization", "\n", "Public-benefit nonprofit corporation", "\n", "Religious corporation", "\n", "Voluntary association", "\n", "\n", "\n", "\n", "\n", "\n", "Charity and religion", "\n", "\n", "\n", "\n", "D\u0101na", "\n", "Tithe", "\n", "Tzedakah", "\n", "Sadaqah", "\n", "Zakat", "\n", "\n", "\n", "\n", "\n", "\n", "Charity evaluators", "\n", "\n", "\n", "\n", "Charity Navigator", "\n", "CharityWatch", "\n", "GiveWell", "\n", "Giving What We Can", "\n", "GuideStar", "\n", "Open Philanthropy Project", "\n", "\n", "\n", "\n", "\n", "\n", "Further topics", "\n", "\n", "\n", "\n", "Alternative giving", "\n", "Benefit concert", "\n", "Charity / thrift / op shop", "\n", "Click-to-donate site", "\n", "Drive", "\n", "Donor intent", "\n", "Earning to give", "\n", "Effective altruism", "\n", "List of charitable foundations", "\n", "\n", "wealthiest", "\n", "\n", "\n", "Master of Nonprofit Organizations", "\n", "Matching funds", "\n", "Telethon", "\n", "Volunteer grant", "\n", "Wall of Kindness", "\n", "Warm-glow giving", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "v", "\n", "t", "\n", "e", "\n", "\n", "\n", "Ethics", "\n", "\n", "\n", "\n", "Theories", "\n", "\n", "\n", "\n", "Casuistry", "\n", "Consequentialism", "\n", "Deontology", "\n", "\n", "Kantian ethics", "\n", "\n", "\n", "Ethics of care", "\n", "Existentialist ethics", "\n", "Meta-ethics", "\n", "Particularism", "\n", "Pragmatic ethics", "\n", "Role ethics", "\n", "Virtue ethics", "\n", "\n", "\n", "\n", "\n", "\n", "Concepts", "\n", "\n", "\n", "\n", "Autonomy", "\n", "Axiology", "\n", "Belief", "\n", "Conscience", "\n", "Consent", "\n", "Equality", "\n", "Care", "\n", "Free will", "\n", "Good and evil", "\n", "Happiness", "\n", "Ideal", "\n", "Justice", "\n", "Morality", "\n", "Norm", "\n", "Freedom", "\n", "Principles", "\n", "Suffering or Pain", "\n", "Stewardship", "\n", "Sympathy", "\n", "Trust", "\n", "Value", "\n", "Virtue", "\n", "Wrong", "\n", "full index...", "\n", "\n", "\n", "\n", "\n", "\n", "Philosophers", "\n", "\n", "\n", "\n", "Laozi", "\n", "Plato", "\n", "Aristotle", "\n", "Diogenes", "\n", "Valluvar", "\n", "Cicero", "\n", "Confucius", "\n", "Augustine of Hippo", "\n", "Mencius", "\n", "Mozi", "\n", "Xunzi", "\n", "Thomas Aquinas", "\n", "Baruch Spinoza", "\n", "David Hume", "\n", "Immanuel Kant", "\n", "Georg W. F. Hegel", "\n", "Arthur Schopenhauer", "\n", "Jeremy Bentham", "\n", "John Stuart Mill", "\n", "S\u00f8ren Kierkegaard", "\n", "Henry Sidgwick", "\n", "Friedrich Nietzsche", "\n", "G. E. Moore", "\n", "Karl Barth", "\n", "Paul Tillich", "\n", "Dietrich Bonhoeffer", "\n", "Philippa Foot", "\n", "John Rawls", "\n", "John Dewey", "\n", "Bernard Williams", "\n", "J. L. Mackie", "\n", "G. E. M. Anscombe", "\n", "William Frankena", "\n", "Alasdair MacIntyre", "\n", "R. M. Hare", "\n", "Peter Singer", "\n", "Derek Parfit", "\n", "Thomas Nagel", "\n", "Robert Merrihew Adams", "\n", "Charles Taylor", "\n", "Joxe Azurmendi", "\n", "Christine Korsgaard", "\n", "Martha Nussbaum", "\n", "more...", "\n", "\n", "\n", "\n", "\n", "\n", "Applied ethics", "\n", "\n", "\n", "\n", "Bioethics", "\n", "Business ethics", "\n", "Discourse ethics", "\n", "Environmental ethics", "\n", "Legal ethics", "\n", "Media ethics", "\n", "Medical ethics", "\n", "Nursing ethics", "\n", "Professional ethics", "\n", "Sexual ethics", "\n", "Ethics of eating meat", "\n", "Ethics of technology", "\n", "\n", "\n", "\n", "\n", "\n", "Related articles", "\n", "\n", "\n", "\n", "Christian ethics", "\n", "Descriptive ethics", "\n", "Ethics in religion", "\n", "Evolutionary ethics", "\n", "Feminist ethics", "\n", "History of ethics", "\n", "Ideology", "\n", "Islamic ethics", "\n", "Jewish ethics", "\n", "Normative ethics", "\n", "Philosophy of law", "\n", "Political philosophy", "\n", "Social philosophy", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "Portal", "\n", "Category", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "Authority control", "\n", "\n", "\n", "\n", "GND", ": ", "4129281-9", "\n", "NDL", ": ", "00569562", "\n", "\n", "\n", "\n", "\n", "\n", "\n\n\n", "\n", "\n", "\n", "\n"], "lastUpdated": " 16 January 2018, at 01:34."}, +{"title": "Adrian Holovaty", "text": ["\n", "\n", "Adrian Holovaty", "\n", "\n", "\n", "\n", "Adrian Holovaty in 2009", "\n", "\n", "\n", "\n", "Born", "\n", "1981 (age\u00a036\u201337)", "\n", "Naperville, Illinois", "\n", "\n", "\n", "Nationality", "\n", "USA", "\n", "\n", "\n", "Alma\u00a0mater", "\n", "Missouri School of Journalism", " (B.A., 2001)", "\n", "\n", "\n", "Occupation", "\n", "web developer, journalist, entrepreneur", "\n", "\n", "\n", "Known\u00a0for", "\n", "Django Web framework", "\n", "\n", "\n", "Adrian Holovaty", " (born 1981) is an American web developer, journalist and entrepreneur from ", "Chicago, Illinois", ", living in ", "Amsterdam, the Netherlands", ". He is co-creator of the ", "Django web framework", " and an advocate of \"journalism via computer programming\".", "\n", "\n", "\n", "\n", "Contents", "\n", "\n", "\n", "1", " ", "Life and career", "\n", "\n", "1.1", " ", "Crime mapping innovations", "\n", "\n", "\n", "2", " ", "References", "\n", "3", " ", "External links", "\n", "\n", "\n", "\n", "Life and career", "[", "edit", "]", "\n", "Holovaty, a ", "Ukrainian American", ", grew up in ", "Naperville, Illinois", ". He graduated from the ", "Missouri School of Journalism", " in 2001 and worked as a web developer/journalist for ", "The Atlanta Journal-Constitution", ", ", "Lawrence Journal-World", " and ", "The Washington Post", " before starting ", "EveryBlock", ", a web startup that provided \"microlocal\" news, in 2007.", "[1]", "\n", "While working at the ", "Lawrence Journal-World", " from 2002 to 2005, he and other web developers (", "Simon Willison", ", Jacob Kaplan-Moss and Wilson Miner", "[2]", ") created ", "Django", ", an ", "open source", " ", "web application framework", " for ", "Python", ". He and Kaplan-Moss served as the framework's ", "Benevolent Dictators for Life", " until January 2014.", "[3]", " The pair wrote ", "The Django Book", ", first published in 2007.", "\n", "Holovaty is also a guitarist. In 1999, he recorded an album of his own guitar compositions,", "[4]", " and since 2007 he has posted videos of his acoustic guitar arrangements on ", "YouTube", ", building an audience of more than 20,000 subscribers.", "[5]", " In 2012 he and PJ Macklin founded ", "SoundSlice", ", a ", "collaboratively edited", " website which shows YouTube music videos alongside simultaneous animated ", "tablature", ", intended to help guitarists learn new musical pieces.", "[6]", "\n", "Crime mapping innovations", "[", "edit", "]", "\n", "In 2005, Holovaty launched ", "chicagocrime.org", ", a ", "Google Maps", " ", "mashup", " of ", "Chicago Police Department", " crime data.", "[7]", " The site won the 2005 Batten Award for Innovations in Journalism", "[8]", " and was named by ", "The New York Times", " as one of 2005's best ideas.", "[9]", "\n", "As one of the first Google Maps mashups, it helped influence Google to create its official Google Maps API.", "[10]", " Newspaper sites such as the ", "Chicago Tribune", " and the ", "Chicago Sun-Times", " have incorporated a map from EveryBlock, the successor to chicagocrime.org, into their web sites.", "[11]", "\n", "In 2007, Holovaty was awarded a $1.1 million ", "Knight Foundation", " grant and left his job as editor of editorial innovations at ", "washingtonpost.com", " to start EveryBlock, the successor to chicagocrime.org.", "[12]", " On August 17, 2009 EveryBlock was officially acquired by ", "msnbc.com", ".", "[13]", " The terms of the deal were not disclosed.", "[14]", " In February 2013, NBC News announced that it was shutting down EveryBlock.", "[15]", "\n", "References", "[", "edit", "]", "\n", "\n", "\n", "\n", "^", " ", "Goodbye hyperlocal, hello microlocal | Holovaty.com", "\n", "^", " ", "Django committers", "\n", "^", " ", "Adrian and Jacob retiring as Django BDFLs | Holovaty.com", "\n", "^", " ", "Music | Holovaty.com", "\n", "^", " ", "YouTube - adrianholovaty's Channel", "\n", "^", " ", "\"About Soundslice\"", ". SoundSlice LLC. November 2012.", "\u00a0", "\n", "^", " ", "Announcing chicagocrime.org | Holovaty.com", "\n", "^", " ", "Batten award", "\n", "^", " ", "Do-It-Yourself Cartography", "\n", "^", " ", "Official Google Blog: The world is your JavaScript-enabled oyster", "\n", "^", " ", "Street Wise: ", "http://www.chicagomag.com/Chicago-Magazine/June-2009/Street-Wise/", "\n", "^", " ", "Knight Foundation grant | Holovaty.com", "\n", "^", " ", "Nieman Journalism Lab. ", "\"EveryBlock\"", ". ", "Encyclo: an encyclopedia of the future of news", ". Retrieved ", "1 April", " 2012", ".", "\u00a0", "\n", "^", " ", "http://www.msnbc.msn.com/id/32443365/ns/business-us_business/", "\n", "^", " ", "\"NBC News shuts down hyperlocal site EveryBlock\"", ". CNN. February 7, 2013", ". Retrieved ", "February 7,", " 2013", ".", "\u00a0", "\n", "\n", "\n", "\n", "External links", "[", "edit", "]", "\n", "\n", "Holovaty.com -- personal site", "\n", "EveryBlock", "\n", "YouTube videos", "\n", "\n\n\n", "\n", "\n", "\n", "\n"], "lastUpdated": " 3 September 2017, at 09:03."}, +{"title": "Hacker culture", "text": ["Not to be confused with ", "Security hacker", ".", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "This article has multiple issues.", " Please help ", "improve it", " or discuss these issues on the ", "talk page", ". ", "(", "Learn how and when to remove these template messages", ")", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "This article's ", "tone or style may not reflect the ", "encyclopedic tone", " used on Wikipedia", ". ", "See Wikipedia's ", "guide to writing better articles", " for suggestions.", " ", "(June 2011)", " ", "(", "Learn how and when to remove this template message", ")", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "This article ", "needs additional citations for ", "verification", ". ", "Please help ", "improve this article", " by ", "adding citations to reliable sources", ". Unsourced material may be challenged and removed.", " ", "(April 2011)", " ", "(", "Learn how and when to remove this template message", ")", "\n", "\n", "\n", "\n", "\n", "\n", "(", "Learn how and when to remove this template message", ")", "\n", "\n", "\n", "\n", "The ", "hacker culture", " is a ", "subculture", " of individuals who enjoy the intellectual challenge of creatively overcoming limitations of software systems to achieve novel and clever outcomes.", "[1]", " The act of engaging in activities (such as programming or other media", "[2]", ") in a spirit of playfulness and exploration is termed \"hacking\". However, the defining characteristic of a ", "hacker", " is not the activities performed themselves (e.g. ", "programming", "), but the manner in which it is done", "[3]", " and whether it is something exciting and meaningful.", "[2]", " Activities of playful cleverness can be said to have \"hack value\" and therefore the term \"hacks\" came about,", "[3]", " with early examples including ", "pranks at MIT", " done by students to demonstrate their technical aptitude and cleverness. Therefore, the hacker culture originally emerged in academia in the 1960s around the ", "Massachusetts Institute of Technology", " (MIT)'s ", "Tech Model Railroad Club", " (TMRC)", "[4]", " and ", "MIT Artificial Intelligence Laboratory", ".", "[5]", "\n", "Richard Stallman", " explains about hackers who program:", "\n", "\n", "What they had in common was mainly love of excellence and programming. They wanted to make their programs that they used be as good as they could. They also wanted to make them do neat things. They wanted to be able to do something in a more exciting way than anyone believed possible and show \"Look how wonderful this is. I bet you didn't believe this could be done.\"", "[6]", "\n", "\n", "Hackers from this subculture tend to emphatically differentiate themselves from what they pejoratively call \"", "crackers", "\"; those who are generally referred to by media and members of the general public using the term \"hacker\", and whose primary focus\u200d\u2014\u200cbe it to malign or for malevolent purposes\u200d\u2014\u200clies in ", "exploiting", " weaknesses in computer security.", "[7]", "\n", "\n", "\n", "\n", "Contents", "\n", "\n", "\n", "1", " ", "Definition", "\n", "2", " ", "History", "\n", "3", " ", "Ethics and principles", "\n", "4", " ", "Uses", "\n", "\n", "4.1", " ", "Programming", "\n", "4.2", " ", "Home computing enthusiasts", "\n", "4.3", " ", "Hacker artists", "\n", "\n", "4.3.1", " ", "Art", "\n", "4.3.2", " ", "Hacker art mentions", "\n", "\n", "\n", "\n", "\n", "5", " ", "See also", "\n", "6", " ", "References", "\n", "7", " ", "Further reading", "\n", "8", " ", "External links", "\n", "\n", "\n", "\n", "Definition", "\n", "The ", "Jargon File", ", an influential but not universally accepted compendium of hacker slang, defines hacker as \"A person who enjoys exploring the details of programmable systems and stretching their capabilities, as opposed to most users, who prefer to learn only the minimum necessary.\"", "[8]", " The ", "Request for Comments", " (RFC) 1392, the Internet Users' Glossary, amplifies this meaning as \"A person who delights in having an intimate understanding of the internal workings of a system, computers and computer networks in particular.\"", "[9]", "\n", "As documented in the Jargon File, these hackers are disappointed by the mass media and general public's usage of the word ", "hacker", " to refer to ", "security breakers", ", calling them \"crackers\" instead. This includes both \"good\" crackers (\"", "white hat hackers", "\") who use their computer security related skills and knowledge to learn more about how systems and networks work and to help to discover and fix security holes, as well as those more \"evil\" crackers (\"", "black hat hackers", "\") who use the same skills to author harmful software (like viruses, trojans, etc.) and illegally infiltrate secure systems with the intention of doing harm to the system.", "[10]", " The programmer subculture of hackers, in contrast to the cracker community, generally sees computer security related activities as contrary to the ideals of the original and true meaning of the hacker term that instead related to playful cleverness.", "[10]", "\n", "History", "\n", "The word \"hacker\" derives from the seventeenth-century word of a \"lusty laborer\" who harvested fields by dogged and rough swings of his hoe. Although the idea of \"hacking\" has existed long before the term \"hacker\"\u200d\u2014\u200cwith the most notable example of Lightning Ellsworth, it was not a word that the first programmers used to describe themselves. In fact, many of the first programmers were from engineering or physics backgrounds.", "\n", "\n", "\n", "\u201c", "\n", "\"But from about 1945 onward (and especially during the creation of the first ENIAC computer) some programmers realized that their expertise in computer software and technology had evolved not just into a profession, but into a passion\" (46).", "[1]", "\n", "\u201d", "\n", "\n", "\n", "\n", "\n", "\n", "There was a growing awareness of a style of programming different from the cut and dried methods employed at first,", "[11]", "[12]", " but it was not until the 1960s that the term hackers began to be used to describe proficient computer programmers. Therefore, the fundamental characteristic that links all who identify themselves as hackers are ones who enjoy \"\u2026the intellectual challenge of creatively overcoming and circumventing limitations of programming systems and who tries to extend their capabilities\" (47).", "[1]", " With this definition in mind, it can be clear where the negative implications of the word \"hacker\" and the subculture of \"hackers\" came from.", "\n", "Some common nicknames among this culture include \"crackers\" who are unskilled thieves who mainly rely on luck. Others include \"phreak\"\u200d\u2014\u200cwhich refers to a type of skilled ", "crackers", " and \"warez d00dz\"\u200d\u2014\u200cwhich is a kind of cracker that acquires reproductions of copyrighted software. Within all hackers are tiers of hackers such as the \"samurai\" who are hackers that hire themselves out for legal electronic locksmith work. Furthermore, there are other hackers who are hired to test security, they are called \"sneakers\" or \"tiger teams\".", "\n", "Before communications between computers and computer users were as ", "networked", " as they are now, there were multiple independent and parallel hacker subcultures, often unaware or only partially aware of each other's existence. All of these had certain important traits in common:", "\n", "\n", "Creating software and sharing it with each other", "\n", "Placing a high value on freedom of inquiry", "\n", "Hostility to secrecy", "\n", "Information-sharing as both an ideal and a practical strategy", "\n", "Upholding the right to ", "fork", "\n", "Emphasis on rationality", "\n", "Distaste for authority", "\n", "Playful cleverness, taking the serious humorously and humor seriously", "\n", "\n", "\n", "\n", "\n", "\nThe ", "Glider", ", proposed as an ", "emblem of the \"hacker community\"", " by ", "Eric S. Raymond", ".", "[13]", "\n", "\n", "\n", "These sorts of subcultures were commonly found at ", "academic", " settings such as ", "college", " ", "campuses", ". The ", "MIT Artificial Intelligence Laboratory", ", the ", "University of California, Berkeley", " and ", "Carnegie Mellon University", " were particularly well-known hotbeds of early hacker culture. They evolved in parallel, and largely unconsciously, until the ", "Internet", ", where a legendary ", "PDP-10", " machine at MIT, called AI, that was running ", "ITS", ", provided an early meeting point of the hacker community. This and other developments such as the rise of the ", "free software movement", " and ", "community", " drew together a critically large population and encouraged the spread of a conscious, common, and systematic ethos. Symptomatic of this evolution were an increasing adoption of ", "common slang", " and a shared view of history, similar to the way in which other occupational groups have professionalized themselves but without the formal credentialing process characteristic of most professional groups.", "[", "citation needed", "]", "\n", "Over time, the academic hacker subculture has tended to become more conscious, more cohesive, and better organized. The most important consciousness-raising moments have included the composition of the first ", "Jargon File", " in 1973, the promulgation of the ", "GNU Manifesto", " in 1985, and the publication of ", "Eric Raymond", "'s ", "The Cathedral and the Bazaar", " in 1997. Correlated with this has been the gradual recognition of a set of shared culture heroes, including: ", "Bill Joy", ", ", "Donald Knuth", ", ", "Dennis Ritchie", ", ", "Alan Kay", ", ", "Ken Thompson", ", ", "Richard M. Stallman", ", ", "Linus Torvalds", ", ", "Larry Wall", ", and ", "Guido Van Rossum", ".", "\n", "The concentration of academic hacker subculture has paralleled and partly been driven by the commoditization of computer and networking technology, and has, in turn, accelerated that process. In 1975, hackerdom was scattered across several different families of ", "operating systems", " and disparate networks; today it is largely a ", "Unix", " and ", "TCP/IP", " phenomenon, and is concentrated around various ", "operating systems", " based on ", "free software", " and ", "open-source software", " development.", "\n", "Ethics and principles", "\n", "Main article: ", "Hacker ethic", "\n", "Many of the values and tenets of the free and open source software movement stem from the ", "hacker ethics", " that originated at ", "MIT", "[14]", " and at the ", "Homebrew Computer Club", ". The hacker ethics were chronicled by Steven Levy in ", "Hackers: Heroes of the Computer Revolution", "[15]", " and in other texts in which Levy formulates and summarizes general hacker attitudes:", "\n", "\n", "Access to computers-and anything that might teach you something about the way the world works-should be unlimited and total.", "\n", "All information should be free.", "\n", "Hackers should be judged by their hacking, not bogus criteria such as degrees, age, race, or position.", "\n", "You can create art and beauty on a computer.", "\n", "Computers can change your life for the better.", "\n", "\n", "Hacker ethics are concerned primarily with sharing, openness, collaboration, and engaging in the hands-on imperative.", "[15]", "\n", "Linus Torvalds", ", one of the leaders of the open source movement (known primarily for developing the ", "Linux kernel", "), has noted in the book ", "The Hacker Ethic", "[16]", " that these principles have evolved from the known Protestant ethics and incorporates the spirits of capitalism, as introduced in the early 20th century by ", "Max Weber", ".", "\n", "Hack value is the notion used by hackers to express that something is worth doing or is interesting.", "[17]", " This is something that hackers often feel intuitively about a problem or solution.", "\n", "An aspect of hack value is performing feats for the sake of showing that they can be done, even if others think it is difficult. Using things in a unique way outside their intended purpose is often perceived as having hack value. Examples are using a ", "dot matrix impact printer", " to produce musical notes, using a ", "flatbed scanner", " to take ultra-high-resolution photographs or using an ", "optical mouse", " as ", "barcode reader", ".", "\n", "A solution or feat has \"hack value\" if it is done in a way that has finesse, cleverness or brilliance, which makes ", "creativity", " an essential part of the meaning. For example, ", "picking a difficult lock", " has hack value; smashing it does not. As another example, proving ", "Fermat's last theorem", " by linking together most of modern mathematics has hack value; solving a combinatorial problem by ", "exhaustively trying all possibilities", " does not. Hacking is not using process of elimination to find a solution; it's the process of finding a clever solution to a problem.", "\n", "Uses", "\n", "While using ", "hacker", " to refer to someone who enjoys playful cleverness is most often applied to computer programmers, it is sometimes used for people who apply the same attitude to other fields.", "[7]", " For example, ", "Richard Stallman", " describes the silent composition ", "4\u203233\u2033", " by John Cage and the 14th-century ", "palindromic", " three-part piece \"Ma Fin Est Mon Commencement\" by ", "Guillaume de Machaut", " as hacks.", "[3]", " According to the Jargon File,", "[8]", " the word ", "hacker", " was used in a similar sense among radio amateurs in the 1950s, predating the software hacking community.", "\n", "Programming", "\n", "The Boston Globe", " in 1984 defined \"hackers\" as \"computer nuts\".", "[18]", " In their programmer subculture, a hacker is a person who follows a spirit of playful cleverness and loves programming. It is found in an originally academic movement unrelated to computer security and most visibly associated with ", "free software", ", ", "open source", " and ", "demoscene", ". It also has a ", "hacker ethic", ", based on the idea that writing software and sharing the result on a voluntary basis is a good idea, and that information should be free, but that it's not up to the hacker to make it free by breaking into private computer systems. This hacker ethic was publicized and perhaps originated in ", "Steven Levy", "'s ", "Hackers: Heroes of the Computer Revolution", " (1984). It contains a codification of its principles.", "\n", "The programmer subculture of hackers disassociates from the mass media's pejorative use of the word 'hacker' referring to computer security, and usually prefer the term 'cracker' for that meaning. Complaints about supposed mainstream misuse started as early as 1983, when media used \"hacker\" to refer to the computer criminals involved in ", "The 414s", " case.", "[19]", "\n", "In the programmer subculture of hackers, a computer hacker is a person who enjoys designing software and building programs with a sense for aesthetics and playful cleverness. The term hack in this sense can be traced back to \"describe the elaborate college pranks that...students would regularly devise\" (Levy, 1984 p.\u00a010). To be considered a 'hack' was an honor among like-minded peers as \"to qualify as a hack, the feat must be imbued with innovation, style and technical virtuosity\" (Levy, 1984 p.\u00a010) The ", "MIT", " ", "Tech Model Railroad Club", " Dictionary defined hack in 1959 (not yet in a computer context) as \"1) an article or project without constructive end; 2) a project undertaken on bad self-advice; 3) an entropy booster; 4) to produce, or attempt to produce, a hack(3)\", and \"hacker\" was defined as \"one who hacks, or makes them\". Much of TMRC's jargon was later imported into early computing culture, because the club started using a ", "DEC", " ", "PDP-1", " and applied its local model railroad slang in this computing context. Initially incomprehensible to outsiders, the slang also became popular in MIT's computing environments beyond the club. Other examples of jargon imported from the club are 'losing' (\"when a piece of equipment is not working\")", "[15]", " and 'munged' (\"when a piece of equipment is ruined\").", "[15]", "\n", "Others did not always view hackers with approval. ", "MIT living groups", " in 1989 avoided advertising their sophisticated ", "Project Athena", " workstations to prospective members because they wanted residents who were interested in people, not computers, with one fraternity member stating that \"We were worried about the hacker subculture\".", "[20]", "\n", "According to ", "Eric S. Raymond", ",", "[21]", " the Open Source and Free Software hacker subculture developed in the 1960s among 'academic hackers'", "[22]", " working on early ", "minicomputers", " in ", "computer science", " environments in the United States.", "\n", "Hackers were influenced by and absorbed many ideas of key technological developments and the people associated with them. Most notable is the technical culture of the pioneers of the ", "Arpanet", ", starting in 1969. The ", "PDP-10", " AI machine at MIT, running the ", "ITS", " operating system and connected to the Arpanet, provided an early hacker meeting point. After 1980 the subculture coalesced with the culture of ", "Unix", ". Since the mid-1990s, it has been largely coincident with what is now called the ", "free software", " and ", "open source movement", ".", "\n", "Many programmers have been labeled \"great hackers\",", "[23]", " but the specifics of who that label applies to is a matter of opinion. Certainly major contributors to ", "computer science", " such as ", "Edsger Dijkstra", " and ", "Donald Knuth", ", as well as the inventors of popular software such as ", "Linus Torvalds", " (", "Linux", "), and ", "Ken Thompson", " and ", "Dennis Ritchie", " (", "Unix", " and ", "C programming language", ") are likely to be included in any such list; see also ", "List of programmers", ". People primarily known for their contributions to the consciousness of the programmer subculture of hackers include ", "Richard Stallman", ", the founder of the free software movement and the ", "GNU project", ", president of the ", "Free Software Foundation", " and author of the famous ", "Emacs", " text editor as well as the ", "GNU Compiler Collection (GCC)", ", and ", "Eric S. Raymond", ", one of the founders of the ", "Open Source Initiative", " and writer of the famous text ", "The Cathedral and the Bazaar", " and many other essays, maintainer of the ", "Jargon File", " (which was previously maintained by ", "Guy L. Steele, Jr.", ").", "\n", "Within the computer programmer subculture of hackers, the term hacker is also used for a programmer who reaches a goal by employing a series of modifications to extend existing ", "code", " or resources. In this sense, it can have a negative connotation of using inelegant ", "kludges", " to accomplish programming tasks that are quick, but ugly, inelegant, difficult to extend, hard to maintain and inefficient. This derogatory form of the noun \"", "hack", "\" derives from the everyday English sense \"to cut or shape by or as if by crude or ruthless strokes\" [Merriam-Webster] and is even used among users of the positive sense of \"hacker\" who produces \"cool\" or \"neat\" hacks. In other words, to \"hack\" at an original creation, as if with an axe, is to force-fit it into being usable for a task not intended by the original creator, and a \"hacker\" would be someone who does this habitually. (The original creator and the hacker may be the same person.) This usage is common in both programming, engineering and building. In programming, hacking in this sense appears to be tolerated and seen as a necessary compromise in many situations. Some argue that it should not be, due to this negative meaning; others argue that some kludges can, for all their ugliness and imperfection, still have \"hack value\".", "\n", "In non-software engineering, the culture is less tolerant of unmaintainable solutions, even when intended to be temporary, and describing someone as a \"hacker\" might imply that they lack professionalism. In this sense, the term has no real positive connotations, except for the idea that the hacker is capable of doing modifications that allow a system to work in the short term, and so has some sort of marketable skills. However, there is always the understanding that a more skillful or technical logician could have produced successful modifications that would not be considered a \"hack-job\". The definition is similar to other, non-computer based uses of the term \"hack-job\". For instance, a professional modification of a production sports car into a racing machine would not be considered a hack-job, but a cobbled together backyard mechanic's result could be. Even though the outcome of a race of the two machines could not be assumed, a quick inspection would instantly reveal the difference in the level of professionalism of the designers. The adjective associated with hacker is \"hackish\" (see the ", "Jargon file", ").", "\n", "In a very universal sense, hacker also means someone who makes things work beyond perceived limits in a clever way in general, without necessarily referring to computers, especially at MIT.", "[24]", " That is, people who apply the creative attitude of software hackers in fields other than computing. This includes even activities that predate computer hacking, for example ", "reality hackers", " or ", "urban spelunkers", " (exploring undocumented or unauthorized areas in buildings). One specific example is clever pranks", "[25]", " traditionally perpetrated by MIT students, with the perpetrator being called hacker. For example, when MIT students surreptitiously put a fake police car atop the dome on MIT's Building 10,", "[26]", " that was a hack in this sense, and the students involved were therefore hackers. Another type of hacker is now called a ", "reality hacker", ". More recent examples of usage for almost any type of playful cleverness are ", "wetware", " hackers (\"hack your brain\"), ", "media hackers", " and \"hack your reputation\". In a similar vein, a \"hack\" may refer to a ", "math", " hack, that is, a clever solution to a mathematical problem. The ", "GNU General Public License", " has been described as", "[", "by whom?", "]", " a ", "copyright", " hack because it cleverly uses the copyright laws for a purpose the lawmakers did not foresee. All of these uses now also have spread beyond MIT as well.", "\n", "Home computing enthusiasts", "\n", "Main article: ", "Hacking of consumer electronics", "\n", "In yet another context, a hacker is a computer hobbyist who pushes the limits of software or hardware. The home computer hacking subculture relates to the hobbyist home computing of the late 1970s, beginning with the availability of ", "MITS Altair", ". An influential organization was the ", "Homebrew Computer Club", ". However, its roots go back further to ", "amateur radio", " enthusiasts. The amateur radio slang referred to creatively tinkering to improve performance as \"hacking\" already in the 1950s.", "[27]", "\n", "A large overlaps between hobbyist hackers and the programmer subculture hackers existed during the Homebrew Club's days, but the interests and values of both communities somewhat diverged. Today, the hobbyists focus on commercial ", "computer and video games", ", ", "software cracking", " and exceptional computer programming (", "demo scene", "). Also of interest to some members of this group is the modification of computer hardware and other electronic devices, see ", "modding", ".", "\n", "\n", "\n", "\n", "\nA ", "DIY", " musician probes the circuit board of a synthesizer for ", "\"bends\"", " using a jeweler's screwdriver and alligator clips", "\n", "\n", "\n", "Electronics hobbyists working on machines other than computers also fall into this category. This includes people who do simple modifications to ", "graphing calculators", ", ", "video game consoles", ", electronic ", "musical keyboards", " or other device (see ", "CueCat", " for a notorious example) to expose or add functionality to a device that was unintended for use by end users by the company who created it. A number of ", "techno", " musicians have modified 1980s-era ", "Casio SK-1", " sampling keyboards to create unusual sounds by doing ", "circuit bending", ": connecting wires to different leads of the integrated circuit chips. The results of these DIY experiments range from opening up previously inaccessible features that were part of the chip design to producing the strange, dis-harmonic digital tones that became part of the techno music style. Companies take different attitudes towards such practices, ranging from open acceptance (such as ", "Texas Instruments", " for its graphing calculators and ", "Lego", " for its ", "Lego Mindstorms", " robotics gear) to outright hostility (such as ", "Microsoft", "'s attempts to lock out ", "Xbox", " hackers or the ", "DRM", " routines on ", "Blu-ray Disc", " players designed to sabotage compromised players.", "[", "citation needed", "]", ")", "\n", "In this context, a \"hack\" refers to a ", "program", " that (sometimes illegally) modifies another program, often a video game, giving the user access to features otherwise inaccessible to them. As an example of this use, for ", "Palm OS", " users (until the 4th iteration of this ", "operating system", "), a \"hack\" refers to an extension of the operating system which provides additional functionality. Term also refers to those people who cheat on video games using special software. This can also refer to the ", "jailbreaking", " of ", "iPhones", ".", "\n", "Hacker artists", "\n", "See also: ", "Fractal art", ", ", "algorithmic art", ", and ", "interactive art", "\n", "Hacker artists create ", "art", " by hacking on ", "technology", " as an ", "artistic medium", ". This has extended the definition of the term and what it means to be a hacker. Such ", "artists", " may work with ", "graphics", ", ", "computer hardware", ", ", "sculpture", ", ", "music", " and other ", "audio", ", ", "animation", ", ", "video", ", ", "software", ", ", "simulations", ", ", "mathematics", ", reactive ", "sensory", " systems, text, ", "poetry", ", ", "literature", ", or any combination thereof.", "\n", "Dartmouth College", " musician Larry Polansky states:", "\n", "\n", "Technology and art are inextricably related. Many musicians, video artists, graphic artists, and even poets who work with technology\u2014whether designing it or using it\u2014consider themselves to be part of the 'hacker community.' Computer artists, like non-art hackers, often find themselves on society\u2019s fringes, developing strange, innovative uses of existing technology. There is an empathetic relationship between those, for example, who design experimental music software and hackers who write communications ", "freeware", ".", "[28]", "\n", "\n", "Another description is offered by Jenny Marketou:", "\n", "\n", "Hacker artists operate as ", "culture", " hackers who manipulate existing techno-", "semiotic", " structures towards a different end, to get inside cultural systems on the net and make them do things they were never intended to do.", "[29]", "\n", "\n", "A successful software and hardware hacker artist is ", "Mark Lottor", " (mkl), who has created the 3-D light art projects entitled the ", "Cubatron", ", and the ", "Big Round Cubatron", ". This art is made using custom computer technology, with specially designed ", "circuit boards", " and programming for ", "microprocessor", " chips to manipulate the ", "LED", " lights.", "\n", "Don Hopkins", " is a software hacker artist well known for his artistic cellular automata. This art, created by a ", "cellular automata", " computer program, generates objects which randomly bump into each other and in turn create more objects and designs, similar to a lava lamp, except that the parts change color and form through interaction. Hopkins Says:", "\n", "\n", "Cellular automata are simple rules that are applied to a grid of cells, or the pixel values of an image. The same rule is applied to every cell, to determine its next state, based on the previous state of that cell and its neighboring cells. There are many interesting cellular automata rules, and they all look very different, with amazing animated dynamic effects. '", "Life", "' is a widely known cellular automata rule, but many other lesser known rules are much more interesting.", "\n", "\n", "Some hacker artists create art by writing computer code, and others, by developing hardware. Some create with existing software tools such as ", "Adobe Photoshop", " or ", "GIMP", ".", "\n", "The creative process of hacker artists can be more abstract than artists using non-technological media. For example, ", "mathematicians", " have produced visually stunning graphic presentations of ", "fractals", ", which hackers have further enhanced, often producing detailed and intricate graphics and animations from simple mathematical formulas.", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "Bubbles", " was created using watercolors, then scanned into a computer. Colors were then manipulated using a software imaging tool", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "Sunrise", " was created using pen and ink, then scanned into a computer and colored with a software imaging tool", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "Rolling Golden Hills of California", " was created using pencil, scanned, and then painted with a software imaging tool", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "Barnsley's fern", ", a fractal fern computed using an ", "iterated function system", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "A fractal that models the surface of a mountain", "\n", "\n", "\n", "\n", "\n", "Art", "\n", "\n", "\n", "Art.Net", "\n", "Burning Man Festival", "\n", "Computer art", "\n", "Computer music", "\n", "Digital art", "\n", "Demoscene", "\n", "Electronic art", "\n", "Electronic art music", "\n", "Electronica", "\n", "Experiments in Art and Technology", "\n", "Generative art", "\n", "Internet art", "\n", "Robotic art", "\n", "Software art", "\n", "\n", "\n", "Hacker art mentions", "\n", "\n", "Ars Electronica", " Festival Archive \"Vector in Open Space\" by Gerfried Stocker 1996.", "\n", "Switch|Journal", " Jun 14 1998.", "\n", "Eye Weekly", " \"Tag \u2013 who's it?\" by Ingrid Hein, July 16, 1998.", "\n", "Linux Today", " \"Playing the Open Source Game\" by Shawn Hargreaves, Jul 5, 1999.", "\n", "Canterbury Christ Church University Library", " Resources by Subject \u2013 Art & Design, 2001.", "\n", "SuperCollider Workshop / Seminar", " Joel Ryan describes collaboration with hacker artists of Silicon Valley. 21 March 2002", "\n", "Anthony Barker's Weblog on Linux, Technology and the Economy", " \"Why Geeks Love Linux\", Sept 2003.", "\n", "Live Art Research", " Gesture and Response in Field-Based Performance by ", "Sha Xin Wei", " & Satinder Gill, 2005.", "\n", "Hackers, Who Are They", " \"The Hackers Identity, October 2014.", "\n", "\n", "See also", "\n", "\n", "\n", "Free software portal", "\n", "\n", "\n", "\n", "Cowboy coding", ": software development without the use of strict ", "software development methodologies", "\n", "Demoscene", "\n", "History of free software", "\n", "Maker culture", "\n", "Unix philosophy", "\n", "\n", "References", "\n", "\n", "\n", "^ ", "a", " ", "b", " ", "c", " ", "Gehring, Verna (2004). ", "The Internet In Public Life", ". Maryland: Rowman & Littlefield Publishers. pp.\u00a043\u201356. ", "ISBN", "\u00a0", "0742542335", ".", "\u00a0", "\n", "^ ", "a", " ", "b", " ", "The Hacker Community and Ethics: An Interview with Richard M. Stallman, 2002", " (gnu.org)", "\n", "^ ", "a", " ", "b", " ", "c", " ", "Stallman, Richard", " (2002). ", "\"On Hacking\"", ". Retrieved ", "2008-03-16", ".", "\u00a0", "\n", "^", " ", "TMRC - Hackers", "\n", "^", " ", "Words to Avoid (or Use with Care) Because They Are Loaded or Confusing", " (gnu.org)", "\n", "^", " ", "Richard Stallman: interview as shown in ", "Hackers \u2014 Wizards of the Electronic Age", "\n", "^ ", "a", " ", "b", " ", "Raymond, Eric", " (2008-01-08). ", "\"How To Become A Hacker\"", ". Thyrsus Enterprises", ". Retrieved ", "2008-03-16", ".", "\u00a0", "\n", "^ ", "a", " ", "b", " ", "Raymond, Eric", ", ed. (2003-12-29). ", "\"hacker\"", ". ", "Jargon File", " (version 4.4.7 ed.)", ". Retrieved ", "2008-03-02", ".", "\u00a0", "\n", "^", " ", "Internet Users' Glossary", " (Request for Comments 1392), January 1993", "\n", "^ ", "a", " ", "b", " ", "[1]", " Definition of \"Cracker\" in the ", "Jargon File", "\n", "^", " ", "\"Introduction to Functional Programming Systems Using Haskell\"", ".", "\u00a0", "\n", "^", " ", "\"A History of Modern Computing\"", ". ", "During the time one of these machines read a card, it could execute a sequence of up to forty-eight steps. More complex sequences-within-sequences were also possible. One computer scientist later noted that this method of programming demanded ", "the kind of detailed design of parallel subsequencing that one sees nowadays at the microprogramming level of some computers.", "\u00a0", "\n", "^", " ", "\"Glider Emblem FAQ\"", ". 22 May 2014", ". Retrieved ", "20 September", " 2016", ".", "\u00a0", "\n", "^", " ", "\"The Hacker's Ethics\"", ". Retrieved ", "31 August", " 2011", ".", "\u00a0", "\n", "^ ", "a", " ", "b", " ", "c", " ", "d", " ", "Levy, S: \"Hackers: Heroes of the Computer Revolution\", Anchor Press/Doubleday, 1984. ", "ISBN", "\u00a0", "0-385-19195-2", "\n", "^", " ", "Himanen, Pekka; Linus Torvalds, and Manuel Castells (2001). The Hacker Ethic. Secker & Warburg. ", "ISBN", "\u00a0", "0-436-20550-5", ".", "\n", "^", " ", "Definition of 'hack value'", " in the ", "Jargon File", "\n", "^", " ", "Dyer, Richard (1984-05-06). ", "\"Masters of the Game\"", ". ", "The Boston Globe", ". Archived from ", "the original", " on 1997-06-07.", "\u00a0", "\n", "^", " ", "jnw@uvacs.UUCP (19 September 1983). ", "\"for hack ( er ) s who want to complain to CBS\"", ". ", "Newsgroup", ":\u00a0", "net.followup net.misc, net.followup", " ", "Check ", "|newsgroup=", " value (", "help", ")", ".", "\u00a0", "\n", "^", " ", "Garfinkel, Simson L.", " (Feb\u2013Mar 1989). ", "\"Students Log On to ATHENA\"", " ", "(PDF)", ". ", "Technology Review", ". pp.\u00a07\u201310", ". Retrieved ", "25 January", " 2016", ".", "\u00a0", "\n", "^", " ", "Eric S.Raymond: ", "A Brief History of Hackerdom", " (2000)", "\n", "^", " ", "Raymond, Eric Steven", " (19 September 2003). ", "\"Reasons to Believe\"", ". ", "The Art of Unix Programming", ". Addison-Wesley.", "\u00a0", "\n", "^", " ", "Graham, Paul", " (2004). ", "\"Great Hackers\"", ".", "\u00a0", "\n", "^", " ", "Eric Steven Raymond (2001). ", "\"What Is a Hacker?\"", ". ", "How To Become A Hacker", ". Thyrsus Enterprises", ". Retrieved ", "2008-10-18", ".", "\u00a0", "\n", "^", " ", "\"MIT Gallery of Hacks\"", ". Hacks.mit.edu", ". Retrieved ", "2013-11-30", ".", "\u00a0", "\n", "^", " ", "\"IHTFP Hack Gallery: CP Car on the Great Dome\"", ". Hacks.mit.edu. 1994-05-09", ". Retrieved ", "2013-11-30", ".", "\u00a0", "\n", "^", " ", "hacker", ". ", "The Jargon Lexicon", ". Retrieved ", "2008-10-18", ".", "\u00a0", "\n", "^", " ", "Singing Together, Hacking Together, Plundering Together: Sonic Intellectual Property in Cybertimes", " by Larry Polansky", "\n", "^", " ", "\"Cornelia Sollfrank\"", ". Thing.net. 2000-07-25", ". Retrieved ", "2011-07-01", ".", "\u00a0", "\n", "\n", "\n", "Further reading", "\n", "The ", "Jargon File", " has had a role in acculturating hackers since its origins in 1975.", "[", "citation needed", "]", " These academic and literary works helped shape the academic hacker subculture:", "[", "citation needed", "]", "\n", "\n", "Abelson, Hal", "; ", "Sussman, Gerald Jay", ". ", "Structure and Interpretation of Computer Programs", ". London: ", "MIT Press", ". ", "ISBN", "\u00a0", "9780070004849", ".", "\u00a0", "\n", "Aho", "; ", "Sethi", "; ", "Ullman", ". ", "Compilers: Principles, Techniques, and Tools", ". Reading, MA: ", "Addison-Wesley", ". ", "ISBN", "\u00a0", "9780201100884", ".", "\u00a0", "\n", "Bourne, Stephen R.", " ", "The Unix System", ". Reading, MA: Addison-Wesley. ", "ISBN", "\u00a0", "9780201137910", ".", "\u00a0", "\n", "Brooks, Fred", ". ", "The Mythical Man-Month", ". Reading, MA: Addison-Wesley. ", "ISBN", "\u00a0", "9780201006506", ".", "\u00a0", "\n", "Graham, Paul", ". ", "Hackers & Painters", ". Sebastopol, CA: ", "O'Reilly Media", ". ", "ISBN", "\u00a0", "9780596006624", ".", "\u00a0", "\n", "Hoftstadter, Douglas", ". ", "G\u00f6del, Escher, Bach", ". New York, NY: ", "Basic Books", ". ", "ISBN", "\u00a0", "9780465026852", ".", "\u00a0", "\n", "James, Geoffrey", ". ", "The Tao of Programming", ". Santa Monica, CA: InfoBooks. ", "ISBN", "\u00a0", "9780931137075", ".", "\u00a0", "\n", "Kernighan, Brian W.", "; ", "Ritchie, Dennis", ". ", "The C Programming Language", ". Englewood Cliffs, NJ: ", "Prentice Hall", ". ", "ISBN", "\u00a0", "9780131103702", ".", "\u00a0", "\n", "Kidder, Tracy", ". ", "The Soul of a New Machine", ". Boston, MA: ", "Little, Brown and Company", ". ", "ISBN", "\u00a0", "9780316491709", ".", "\u00a0", "\n", "Knuth, Donald", ". ", "The Art of Computer Programming", ". Reading, MA: Addison-Wesley. ", "ISBN", "\u00a0", "9780201038019", ".", "\u00a0", "\n", "Levy, Steven", ". ", "Hackers: Heroes of the Computer Revolution", ". Garden City, NY: Anchor Press / ", "Doubleday", ". ", "ISBN", "\u00a0", "9780385191951", ".", "\u00a0", "\n", "Raymond, Eric S.", " ", "The Cathedral and the Bazaar", ". Cambridge, MA: O'Reilly Media. ", "ISBN", "\u00a0", "9781565927247", ".", "\u00a0", "\n", "Stoll, Cliff", ". ", "The Cuckoo's Egg", ". New York, NY: Doubleday. ", "ISBN", "\u00a0", "9780385249461", ".", "\u00a0", "\n", "Olson, Parmy. (05-14-2013). ", "We Are Anonymous: Inside the Hacker World of LulzSec, Anonymous, and the Global Cyber Insurgency.", " ", "ISBN", "\u00a0", "0316213527", ".", "\n", "Coleman, Gabriella. (2014-11-4). ", "Hacker, Hoaxer, Whistleblower, Spy: The Many Faces of Anonymous", ". Verso Books. ", "ISBN", "\u00a0", "1781685835", ".", "\n", "Shantz, Jeff; Tomblin, Jordon (2014-11-28). ", "Cyber Disobedience: Re://Presenting Online Anarchy", ". John Hunt Publishing. ", "ISBN", "\u00a0", "9781782795551", ".", "\n", "\n", "External links", "\n", "\n", "\n", "\n", "Wikimedia Commons has media related to ", "Hackers", ".", "\n", "\n", "\n", "\n", "A Brief History of Hackerdom", "\n", "Hack, Hackers, and Hacking", " (see ", "Appendix A", ")", "\n", "Gabriella Coleman", ": ", "The Anthropology of Hackers", ". The Atlantic, 2010.", "\n", "\n\n\n", "\n", "\n", "\n", "\n"], "lastUpdated": " 7 December 2017, at 06:12."}, +{"title": "Wes McKinney", "text": ["Wes McKinney", " is an American statistician, ", "data scientist", " and businessman. He was the CEO and ", "founder", " of technology ", "startup", " Datapad. He is the ", "BDFL", " of the open-source ", "Pandas", " package for data analysis in the ", "Python", " programming language, and has also authored two versions of the reference book ", "Python for Data Analysis", ".", "[1]", "[2]", " He worked as a ", "software engineer", " for ", "Cloudera", " following their acquisition of Datapad in 2014. He is now a software engineer at ", "Two Sigma Investments", ".", "\n", "\n", "\n", "\n", "Contents", "\n", "\n", "\n", "1", " ", "Early life and education", "\n", "2", " ", "Career", "\n", "\n", "2.1", " ", "Media coverage", "\n", "\n", "\n", "3", " ", "References", "\n", "4", " ", "External links", "\n", "\n", "\n", "\n", "Early life and education", "[", "edit", "]", "\n", "McKinney graduated from ", "MIT", " with an S.B. in Mathematics in 2007.", "[1]", " He is on leave from the ", "Duke University", " Ph.D program in Statistics.", "\n", "Career", "[", "edit", "]", "\n", "From 2007 to 2010, he researched global macro and credit trading strategies at ", "AQR Capital Management", ". From 2010 to 2012, he served as a Python consultant to hedge funds and banks while developing ", "Pandas", ". In 2012 he co-founded Lambda Foundry Inc.", "[3]", "\n", "McKinney co-founded Datapad in January 2013. He was funded by Accel Partners and others.", "[4]", " Datapad was acquired by Cloudera in September 2014.", "[5]", "[6]", " He is currently working on an open-source project called Ibis, incubated within Cloudera Labs, aiming at using Python for ", "big data", " problems.", "[7]", "\n", "Media coverage", "[", "edit", "]", "\n", "McKinney has been interviewed by ", "VentureBeat", " and others.", "[8]", "[9]", "[10]", " He frequently gives talks to the Python community.", "[11]", "[12]", "\n", "References", "[", "edit", "]", "\n", "\n", "\n", "^ ", "a", " ", "b", " ", "McKinney, Wes (2013). ", "Python for data analysis", " (1 Aufl. ed.). Sebastopol, Calif.: O'Reilly. ", "ISBN", "\u00a0", "1449319793", ". Retrieved ", "10 January", " 2016", ".", "\u00a0", "\n", "^", " ", "McKinney, William. ", "Python for Data Analysis", ".", "\u00a0", "\n", "^", " ", "\"Wes McKinney - Founder and CEO @ DataPad | CrunchBase\"", ". ", "www.crunchbase.com", ". Retrieved ", "2016-01-10", ".", "\u00a0", "\n", "^", " ", "\"DataPad | CrunchBase\"", ". ", "www.crunchbase.com", ". Retrieved ", "2016-01-10", ".", "\u00a0", "\n", "^", " ", "\"Data startup DataPad gets acquired, says it will shut down on Friday\"", ". ", "VentureBeat", ". Retrieved ", "2016-01-10", ".", "\u00a0", "\n", "^", " ", "\"Cloudera Bought Datapad\"", ". ", "GigaOm", ". Retrieved ", "10 January", " 2016", ".", "\u00a0", "\n", "^", " ", "\"Ibis on Impala: Python at Scale for Data Science - Cloudera Engineering Blog\"", ". ", "Cloudera Engineering Blog", ". Retrieved ", "2016-01-10", ". ", "[W]e are excited to announce a new open source project, called Ibis, that will deliver the great Python experience and ecosystem, only at any data and node scale.", "\u00a0", "\n", "^", " ", "\"DataPad emerges to let everyone at your company create and play with charts\"", ". ", "VentureBeat", ". Retrieved ", "2016-01-10", ".", "\u00a0", "\n", "^", " ", "\"Meet Quantopian's Newest Advisor: Wes McKinney\"", ". ", "Quantopian Blog", ". Retrieved ", "2016-01-10", ".", "\u00a0", "\n", "^", " ", "\"Big data's 4 big Vs: It's our Data Summit highlights - Web Summit Blog\"", ". ", "Web Summit Blog", ". Retrieved ", "2016-01-10", ".", "\u00a0", "\n", "^", " ", "\"LFPUG: Python in the enterprise + Pandas | Enthought Blog\"", ". ", "blog.enthought.com", ". Retrieved ", "2016-01-10", ".", "\u00a0", "\n", "^", " ", "\"Big Data Conference - Wes McKinney\"", ". ", "O'Reilly Media", ". Retrieved ", "10 January", " 2016", ".", "\u00a0", "\n", "\n", "\n", "External links", "[", "edit", "]", "\n", "\n", "Personal website", "\n", "Book discussion on YCombinator", "\n", "Ibis project blog", "\n", "\n\n\n", "\n", "\n", "\n", "\n"], "lastUpdated": " 14 January 2018, at 19:57."}, +{"title": "Wikipedia:General disclaimer", "text": ["\n", "\n", "\n", "\n", "\n", "\n", "General disclaimer", "\n", "Content disclaimer", "\n", "Legal disclaimer", "\n", "Medical disclaimer", "\n", "Risk disclaimer", "\n", "Survey disclaimer", "\n", "\n", "\n", "\n", "\n", "\n", "WIKIPEDIA MAKES NO GUARANTEE OF VALIDITY", "\n", "Wikipedia is an online open-content collaborative encyclopedia; that is, a voluntary association of individuals and groups working to develop a common resource of human knowledge. The structure of the project allows anyone with an Internet connection to alter its content. Please be advised that nothing found here has necessarily been reviewed by people with the expertise required to provide you with complete, accurate or reliable information.", "\n", "That is not to say that you will not find valuable and accurate information in Wikipedia; much of the time you will. However, ", "Wikipedia cannot guarantee the validity of the information found here.", " The content of any given article may recently have been changed, vandalized or altered by someone whose opinion does not correspond with the state of knowledge in the relevant fields. Note that most other encyclopedias and reference works ", "also have disclaimers", ".", "\n", "No formal peer review", "\n", "Our active community of editors uses tools such as the ", "Special:Recentchanges", " and ", "Special:Newpages", " feeds to monitor new and changing content. However, Wikipedia is not uniformly peer reviewed; while readers may correct errors or engage in casual ", "peer review", ", they have no legal duty to do so and thus all information read here is without any implied warranty of fitness for any purpose or use whatsoever. Even articles that have been vetted by informal peer review or ", "featured article", " processes may later have been edited inappropriately, just before you view them.", "\n", "None of the contributors, sponsors, administrators or anyone else connected with Wikipedia in any way whatsoever can be responsible for the appearance of any inaccurate or libelous information or for your use of the information contained in or linked from these web pages.", "\n", "No contract; limited license", "\n", "Please make sure that you understand that the information provided here is being provided freely, and that no kind of agreement or contract is created between you and the owners or users of this site, the owners of the servers upon which it is housed, the individual Wikipedia contributors, any project administrators, sysops or anyone else who is in ", "any way connected", " with this project or sister projects subject to your claims against them directly. You are being granted a limited license to copy anything from this site; it does not create or imply any contractual or extracontractual liability on the part of Wikipedia or any of its agents, members, organizers or other users.", "\n", "There is ", "no agreement or understanding between you and Wikipedia", " regarding your use or modification of this information beyond the ", "Creative Commons Attribution-Sharealike 3.0 Unported License", " (CC-BY-SA) and the ", "GNU Free Documentation License", " (GFDL); neither is anyone at Wikipedia responsible should someone change, edit, modify or remove any information that you may post on Wikipedia or any of its associated projects.", "\n", "Trademarks", "\n", "Any of the trademarks, service marks, collective marks, design rights or similar rights that are mentioned, used or cited in the articles of the Wikipedia encyclopedia are the property of their respective owners. Their use here does not imply that you may use them for any purpose other than for the same or a similar informational use as contemplated by the original authors of these Wikipedia articles under the CC-BY-SA and GFDL licensing schemes. Unless otherwise stated Wikipedia and Wikimedia sites are neither endorsed by nor affiliated with any of the holders of any such rights and as such Wikipedia cannot grant any rights to use any otherwise protected materials. Your use of any such or similar incorporeal property is at your own risk.", "\n", "Personality rights", "\n", "Wikipedia contains material which may portray an identifiable person who is alive or deceased recently. The use of images of living or recently deceased individuals is, in some jurisdictions, restricted by laws pertaining to ", "personality rights", ", independent from their copyright status. Before using these types of content, please ensure that you have the right to use it under the laws which apply in the circumstances of your intended use. ", "You are solely responsible for ensuring that you do not infringe someone else's personality rights.", "\n", "Jurisdiction and legality of content", "\n", "Publication of information found in Wikipedia may be in violation of the laws of the country or jurisdiction from where you are viewing this information. The Wikipedia database is stored on servers in the United States of America, and is maintained in reference to the protections afforded under local and federal law. Laws in your country or jurisdiction may not protect or allow the same kinds of speech or distribution. Wikipedia does not encourage the violation of any laws, and cannot be responsible for any violations of such laws, should you link to this domain or use, reproduce or republish the information contained herein.", "\n", "Not professional advice", "\n", "If you need specific advice (for example, medical, legal, financial or risk management), please seek a professional who is licensed or knowledgeable in that area.", "\n\n\n", "\n", "\n", "\n", "\n"], "lastUpdated": " 17 December 2015, at 12:48."}, +{"title": "Wikipedia:Text of Creative Commons Attribution-ShareAlike 3.0 Unported License", "text": ["\n", "\n", "Shortcut", "\n", "\n", "WP:CC BY-SA", "\n", "\n", "\n", "\n", "\n", "\n", "Wikipedia copyright", "\n", "\n", "\n", "Policy", "\n", "\n", "\n", "\n", "\n", "Copyright policy", "\n", "Copyright violation policy", "\n", "Reusing Wikipedia content", "\n", "Text of CC BY-SA 3.0 Unported License", "\n", "Text of CC BY-SA 4.0 International License", "\n", "Text of the GFDL", "\n", "\n", "\n", "\n", "\n", "Guidelines", "\n", "\n", "\n", "\n", "\n", "Public domain content", "\n", "Non-free content", "\n", "Non-U.S. copyrights", "\n", "Copying within Wikipedia", "\n", "Copyright information index", "\n", "\n", "\n", "\n", "\n", "Processes", "\n", "\n", "\n", "\n", "\n", "Copyright problems", "\n", "Files for discussion", "\n", "Contributor copyright investigations", "\n", "\n", "\n", "\n", "\n", "Resources", "\n", "\n", "\n", "\n", "\n", "Frequently asked questions", "\n", "General help", "\n", "Copyright assistance", "\n", "Media copyright questions", "\n", "Requesting copyright permission", "\n", "File copyright tags", "\n", "Donating copyrighted material", "\n", "Declaration of consent", "\n", "Guidance for text-related copyright problems", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "v", "\n", "t", "\n", "e", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "Creative Commons Deed", "\nThis is a human-readable summary of the full license below.", "\n", "You are free:", "\n", "\n", "to Share", "\u2014to copy, distribute and transmit the work, and", "\n", "to Remix", "\u2014to ", "adapt", " the work", "\n", "\n", "for any purpose, even commercially.", "\n", "Under the following conditions:", "\n", "\n", "Attribution", "\u2014You must ", "attribute", " the work in the manner specified by the author or ", "licensor", " (but not in any way that suggests that they endorse you or your use of the work.)", "\n", "Share Alike", "\u2014If you alter, transform, or build upon this work, you may distribute the resulting work only under the same, similar or a compatible license.", "\n", "\n", "With the understanding that:", "\n", "\n", "Waiver", "\u2014Any of the above conditions can be ", "waived", " if you get permission from the copyright holder.", "\n", "Other Rights", "\u2014In no way are any of the following rights affected by the license:\n", "\n", "your ", "fair dealing", " or ", "fair use", " rights;", "\n", "the author's ", "moral rights", "; and", "\n", "rights other persons may have either in the work itself or in how the work is used, such as ", "publicity", " or ", "privacy", " rights.", "\n", "\n", "\n", "Notice", "\u2014For any reuse or distribution, you must make clear to others the license terms of this work. The best way to do that is with a link to ", "https://creativecommons.org/licenses/by-sa/3.0/", "\n", "\n", "\n", "\n", "\n", "License", "\n", "\n", "\n", "\n", "CREATIVE COMMONS CORPORATION IS NOT A LAW FIRM AND DOES NOT PROVIDE LEGAL SERVICES. DISTRIBUTION OF THIS LICENSE DOES NOT CREATE AN ATTORNEY-CLIENT RELATIONSHIP. CREATIVE COMMONS PROVIDES THIS INFORMATION ON AN \"AS-IS\" BASIS. CREATIVE COMMONS MAKES NO WARRANTIES REGARDING THE INFORMATION PROVIDED, AND DISCLAIMS LIABILITY FOR DAMAGES RESULTING FROM ITS USE.", "\n", "\n", "\n", "THE WORK (AS DEFINED BELOW) IS PROVIDED UNDER THE TERMS OF THIS CREATIVE COMMONS PUBLIC LICENSE (\"CCPL\" OR \"LICENSE\"). THE WORK IS PROTECTED BY COPYRIGHT AND/OR OTHER APPLICABLE LAW. ANY USE OF THE WORK OTHER THAN AS AUTHORIZED UNDER THIS LICENSE OR COPYRIGHT LAW IS PROHIBITED.", "\n", "BY EXERCISING ANY RIGHTS TO THE WORK PROVIDED HERE, YOU ACCEPT AND AGREE TO BE BOUND BY THE TERMS OF THIS LICENSE. TO THE EXTENT THIS LICENSE MAY BE CONSIDERED TO BE A CONTRACT, THE LICENSOR GRANTS YOU THE RIGHTS CONTAINED HERE IN CONSIDERATION OF YOUR ACCEPTANCE OF SUCH TERMS AND CONDITIONS.", "\n", "1. Definitions", "\n", "\n", "\"", "Adaptation", "\" means a work based upon the Work, or upon the Work and other pre-existing works, such as a translation, adaptation, derivative work, arrangement of music or other alterations of a literary or artistic work, or phonogram or performance and includes cinematographic adaptations or any other form in which the Work may be recast, transformed, or adapted including in any form recognizably derived from the original, except that a work that constitutes a Collection will not be considered an Adaptation for the purpose of this License. For the avoidance of doubt, where the Work is a musical work, performance or phonogram, the synchronization of the Work in timed-relation with a moving image (\"synching\") will be considered an Adaptation for the purpose of this License.", "\n", "\"", "Collection", "\" means a collection of literary or artistic works, such as encyclopedias and anthologies, or performances, phonograms or broadcasts, or other works or subject matter other than works listed in Section 1(f) below, which, by reason of the selection and arrangement of their contents, constitute intellectual creations, in which the Work is included in its entirety in unmodified form along with one or more other contributions, each constituting separate and independent works in themselves, which together are assembled into a collective whole. A work that constitutes a Collection will not be considered an Adaptation (as defined below) for the purposes of this License.", "\n", "\"", "Creative Commons Compatible License", "\" means a license that is listed at ", "http://creativecommons.org/compatiblelicenses", " that has been approved by Creative Commons as being essentially equivalent to this License, including, at a minimum, because that license: (i) contains terms that have the same purpose, meaning and effect as the License Elements of this License; and, (ii) explicitly permits the relicensing of adaptations of works made available under that license under this License or a Creative Commons jurisdiction license with the same License Elements as this License.", "\n", "\"", "Distribute", "\" means to make available to the public the original and copies of the Work or Adaptation, as appropriate, through sale or other transfer of ownership.", "\n", "\"", "License Elements", "\" means the following high-level license attributes as selected by Licensor and indicated in the title of this License: Attribution, ShareAlike.", "\n", "\"", "Licensor", "\" means the individual, individuals, entity or entities that offer(s) the Work under the terms of this License.", "\n", "\"", "Original Author", "\" means, in the case of a literary or artistic work, the individual, individuals, entity or entities who created the Work or if no individual or entity can be identified, the publisher; and in addition (i) in the case of a performance the actors, singers, musicians, dancers, and other persons who act, sing, deliver, declaim, play in, interpret or otherwise perform literary or artistic works or expressions of folklore; (ii) in the case of a phonogram the producer being the person or legal entity who first fixes the sounds of a performance or other sounds; and, (iii) in the case of broadcasts, the organization that transmits the broadcast.", "\n", "\"", "Work", "\" means the literary and/or artistic work offered under the terms of this License including without limitation any production in the literary, scientific and artistic domain, whatever may be the mode or form of its expression including digital form, such as a book, pamphlet and other writing; a lecture, address, sermon or other work of the same nature; a dramatic or dramatico-musical work; a choreographic work or entertainment in dumb show; a musical composition with or without words; a cinematographic work to which are assimilated works expressed by a process analogous to cinematography; a work of drawing, painting, architecture, sculpture, engraving or lithography; a photographic work to which are assimilated works expressed by a process analogous to photography; a work of applied art; an illustration, map, plan, sketch or three-dimensional work relative to geography, topography, architecture or science; a performance; a broadcast; a phonogram; a compilation of data to the extent it is protected as a copyrightable work; or a work performed by a variety or circus performer to the extent it is not otherwise considered a literary or artistic work.", "\n", "\"", "You", "\" means an individual or entity exercising rights under this License who has not previously violated the terms of this License with respect to the Work, or who has received express permission from the Licensor to exercise rights under this License despite a previous violation.", "\n", "\"", "Publicly Perform", "\" means to perform public recitations of the Work and to communicate to the public those public recitations, by any means or process, including by wire or wireless means or public digital performances; to make available to the public Works in such a way that members of the public may access these Works from a place and at a place individually chosen by them; to perform the Work to the public by any means or process and the communication to the public of the performances of the Work, including by public digital performance; to broadcast and rebroadcast the Work by any means including signs, sounds or images.", "\n", "\"", "Reproduce", "\" means to make copies of the Work by any means including without limitation by sound or visual recordings and the right of fixation and reproducing fixations of the Work, including storage of a protected performance or phonogram in digital form or other electronic medium.", "\n", "\n", "2. Fair Dealing Rights", "\n", "Nothing in this License is intended to reduce, limit, or restrict any uses free from copyright or rights arising from limitations or exceptions that are provided for in connection with the copyright protection under copyright law or other applicable laws.", "\n", "3. License Grant", "\n", "Subject to the terms and conditions of this License, Licensor hereby grants You a worldwide, royalty-free, non-exclusive, perpetual (for the duration of the applicable copyright) license to exercise the rights in the Work as stated below:", "\n", "\n", "to Reproduce the Work, to incorporate the Work into one or more Collections, and to Reproduce the Work as incorporated in the Collections;", "\n", "to create and Reproduce Adaptations provided that any such Adaptation, including any translation in any medium, takes reasonable steps to clearly label, demarcate or otherwise identify that changes were made to the original Work. For example, a translation could be marked \"The original work was translated from English to Spanish,\" or a modification could indicate \"The original work has been modified.\";", "\n", "to Distribute and Publicly Perform the Work including as incorporated in Collections; and,", "\n", "to Distribute and Publicly Perform Adaptations.", "\n", "For the avoidance of doubt:\n", "\n", "Non-waivable Compulsory License Schemes.", " In those jurisdictions in which the right to collect royalties through any statutory or compulsory licensing scheme cannot be waived, the Licensor reserves the exclusive right to collect such royalties for any exercise by You of the rights granted under this License;", "\n", "Waivable Compulsory License Schemes.", " In those jurisdictions in which the right to collect royalties through any statutory or compulsory licensing scheme can be waived, the Licensor waives the exclusive right to collect such royalties for any exercise by You of the rights granted under this License; and,", "\n", "Voluntary License Schemes.", " The Licensor waives the right to collect royalties, whether individually or, in the event that the Licensor is a member of a collecting society that administers voluntary licensing schemes, via that society, from any exercise by You of the rights granted under this License.", "\n", "\n", "\n", "\n", "The above rights may be exercised in all media and formats whether now known or hereafter devised. The above rights include the right to make such modifications as are technically necessary to exercise the rights in other media and formats. Subject to Section 8(f), all rights not expressly granted by Licensor are hereby reserved.", "\n", "4. Restrictions", "\n", "The license granted in Section 3 above is expressly made subject to and limited by the following restrictions:", "\n", "\n", "You may Distribute or Publicly Perform the Work only under the terms of this License. You must include a copy of, or the Uniform Resource Identifier (URI) for, this License with every copy of the Work You Distribute or Publicly Perform. You may not offer or impose any terms on the Work that restrict the terms of this License or the ability of the recipient of the Work to exercise the rights granted to that recipient under the terms of the License. You may not sublicense the Work. You must keep intact all notices that refer to this License and to the disclaimer of warranties with every copy of the Work You Distribute or Publicly Perform. When You Distribute or Publicly Perform the Work, You may not impose any effective technological measures on the Work that restrict the ability of a recipient of the Work from You to exercise the rights granted to that recipient under the terms of the License. This Section 4(a) applies to the Work as incorporated in a Collection, but this does not require the Collection apart from the Work itself to be made subject to the terms of this License. If You create a Collection, upon notice from any Licensor You must, to the extent practicable, remove from the Collection any credit as required by Section 4(c), as requested. If You create an Adaptation, upon notice from any Licensor You must, to the extent practicable, remove from the Adaptation any credit as required by Section 4(c), as requested.", "\n", "You may Distribute or Publicly Perform an Adaptation only under the terms of: (i) this License; (ii) a later version of this License with the same License Elements as this License; (iii) a Creative Commons jurisdiction license (either this or a later license version) that contains the same License Elements as this License (e.g., Attribution-ShareAlike 3.0 US)); (iv) a Creative Commons Compatible License. If you license the Adaptation under one of the licenses mentioned in (iv), you must comply with the terms of that license. If you license the Adaptation under the terms of any of the licenses mentioned in (i), (ii) or (iii) (the \"Applicable License\"), you must comply with the terms of the Applicable License generally and the following provisions: (I) You must include a copy of, or the URI for, the Applicable License with every copy of each Adaptation You Distribute or Publicly Perform; (II) You may not offer or impose any terms on the Adaptation that restrict the terms of the Applicable License or the ability of the recipient of the Adaptation to exercise the rights granted to that recipient under the terms of the Applicable License; (III) You must keep intact all notices that refer to the Applicable License and to the disclaimer of warranties with every copy of the Work as included in the Adaptation You Distribute or Publicly Perform; (IV) when You Distribute or Publicly Perform the Adaptation, You may not impose any effective technological measures on the Adaptation that restrict the ability of a recipient of the Adaptation from You to exercise the rights granted to that recipient under the terms of the Applicable License. This Section 4(b) applies to the Adaptation as incorporated in a Collection, but this does not require the Collection apart from the Adaptation itself to be made subject to the terms of the Applicable License.", "\n", "If You Distribute, or Publicly Perform the Work or any Adaptations or Collections, You must, unless a request has been made pursuant to Section 4(a), keep intact all copyright notices for the Work and provide, reasonable to the medium or means You are utilizing: (i) the name of the Original Author (or pseudonym, if applicable) if supplied, and/or if the Original Author and/or Licensor designate another party or parties (e.g., a sponsor institute, publishing entity, journal) for attribution (\"Attribution Parties\") in Licensor's copyright notice, terms of service or by other reasonable means, the name of such party or parties; (ii) the title of the Work if supplied; (iii) to the extent reasonably practicable, the URI, if any, that Licensor specifies to be associated with the Work, unless such URI does not refer to the copyright notice or licensing information for the Work; and (iv) , consistent with Section 3(b), in the case of an Adaptation, a credit identifying the use of the Work in the Adaptation (e.g., \"French translation of the Work by Original Author,\" or \"Screenplay based on original Work by Original Author\"). The credit required by this Section 4(c) may be implemented in any reasonable manner; provided, however, that in the case of a Adaptation or Collection, at a minimum such credit will appear, if a credit for all contributing authors of the Adaptation or Collection appears, then as part of these credits and in a manner at least as prominent as the credits for the other contributing authors. For the avoidance of doubt, You may only use the credit required by this Section for the purpose of attribution in the manner set out above and, by exercising Your rights under this License, You may not implicitly or explicitly assert or imply any connection with, sponsorship or endorsement by the Original Author, Licensor and/or Attribution Parties, as appropriate, of You or Your use of the Work, without the separate, express prior written permission of the Original Author, Licensor and/or Attribution Parties.", "\n", "Except as otherwise agreed in writing by the Licensor or as may be otherwise permitted by applicable law, if You Reproduce, Distribute or Publicly Perform the Work either by itself or as part of any Adaptations or Collections, You must not distort, mutilate, modify or take other derogatory action in relation to the Work which would be prejudicial to the Original Author's honor or reputation. Licensor agrees that in those jurisdictions (e.g. Japan), in which any exercise of the right granted in Section 3(b) of this License (the right to make Adaptations) would be deemed to be a distortion, mutilation, modification or other derogatory action prejudicial to the Original Author's honor and reputation, the Licensor will waive or not assert, as appropriate, this Section, to the fullest extent permitted by the applicable national law, to enable You to reasonably exercise Your right under Section 3(b) of this License (right to make Adaptations) but not otherwise.", "\n", "\n", "5. Representations, Warranties and Disclaimer", "\n", "UNLESS OTHERWISE MUTUALLY AGREED TO BY THE PARTIES IN WRITING, LICENSOR OFFERS THE WORK AS-IS AND MAKES NO REPRESENTATIONS OR WARRANTIES OF ANY KIND CONCERNING THE WORK, EXPRESS, IMPLIED, STATUTORY OR OTHERWISE, INCLUDING, WITHOUT LIMITATION, WARRANTIES OF TITLE, MERCHANTIBILITY, FITNESS FOR A PARTICULAR PURPOSE, NONINFRINGEMENT, OR THE ABSENCE OF LATENT OR OTHER DEFECTS, ACCURACY, OR THE PRESENCE OF ABSENCE OF ERRORS, WHETHER OR NOT DISCOVERABLE. SOME JURISDICTIONS DO NOT ALLOW THE EXCLUSION OF IMPLIED WARRANTIES, SO SUCH EXCLUSION MAY NOT APPLY TO YOU.", "\n", "6. Limitation on Liability", "\n", "EXCEPT TO THE EXTENT REQUIRED BY APPLICABLE LAW, IN NO EVENT WILL LICENSOR BE LIABLE TO YOU ON ANY LEGAL THEORY FOR ANY SPECIAL, INCIDENTAL, CONSEQUENTIAL, PUNITIVE OR EXEMPLARY DAMAGES ARISING OUT OF THIS LICENSE OR THE USE OF THE WORK, EVEN IF LICENSOR HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.", "\n", "7. Termination", "\n", "\n", "This License and the rights granted hereunder will terminate automatically upon any breach by You of the terms of this License. Individuals or entities who have received Adaptations or Collections from You under this License, however, will not have their licenses terminated provided such individuals or entities remain in full compliance with those licenses. Sections 1, 2, 5, 6, 7, and 8 will survive any termination of this License.", "\n", "Subject to the above terms and conditions, the license granted here is perpetual (for the duration of the applicable copyright in the Work). Notwithstanding the above, Licensor reserves the right to release the Work under different license terms or to stop distributing the Work at any time; provided, however that any such election will not serve to withdraw this License (or any other license that has been, or is required to be, granted under the terms of this License), and this License will continue in full force and effect unless terminated as stated above.", "\n", "\n", "8. Miscellaneous", "\n", "\n", "Each time You Distribute or Publicly Perform the Work or a Collection, the Licensor offers to the recipient a license to the Work on the same terms and conditions as the license granted to You under this License.", "\n", "Each time You Distribute or Publicly Perform an Adaptation, Licensor offers to the recipient a license to the original Work on the same terms and conditions as the license granted to You under this License.", "\n", "If any provision of this License is invalid or unenforceable under applicable law, it shall not affect the validity or enforceability of the remainder of the terms of this License, and without further action by the parties to this agreement, such provision shall be reformed to the minimum extent necessary to make such provision valid and enforceable.", "\n", "No term or provision of this License shall be deemed waived and no breach consented to unless such waiver or consent shall be in writing and signed by the party to be charged with such waiver or consent.", "\n", "This License constitutes the entire agreement between the parties with respect to the Work licensed here. There are no understandings, agreements or representations with respect to the Work not specified here. Licensor shall not be bound by any additional provisions that may appear in any communication from You. This License may not be modified without the mutual written agreement of the Licensor and You.", "\n", "The rights granted under, and the subject matter referenced, in this License were drafted utilizing the terminology of the Berne Convention for the Protection of Literary and Artistic Works (as amended on September 28, 1979), the Rome Convention of 1961, the WIPO Copyright Treaty of 1996, the WIPO Performances and Phonograms Treaty of 1996 and the Universal Copyright Convention (as revised on July 24, 1971). These rights and subject matter take effect in the relevant jurisdiction in which the License terms are sought to be enforced according to the corresponding provisions of the implementation of those treaty provisions in the applicable national law. If the standard suite of rights granted under applicable copyright law includes additional rights not granted under this License, such additional rights are deemed to be included in the License; this License is not intended to restrict the license of any rights under applicable law.", "\n", "\n", "\n", "\n", "\n", "\n", "Creative Commons Notice", "\n", "Creative Commons is not a party to this License, and makes no warranty whatsoever in connection with the Work. Creative Commons will not be liable to You or any party on any legal theory for any damages whatsoever, including without limitation any general, special, incidental or consequential damages arising in connection to this license. Notwithstanding the foregoing two (2) sentences, if Creative Commons has expressly identified itself as the Licensor hereunder, it shall have all rights and obligations of Licensor.", "\n", "Except for the limited purpose of indicating to the public that the Work is licensed under the CCPL, Creative Commons does not authorize the use by either party of the trademark \"Creative Commons\" or any related trademark or logo of Creative Commons without the prior written consent of Creative Commons. Any permitted use will be in compliance with Creative Commons' then-current trademark usage guidelines, as may be published on its website or otherwise made available upon request from time to time. For the avoidance of doubt, this trademark restriction does not form part of the License.", "\nCreative Commons may be contacted at ", "http://creativecommons.org/", ".", "\n", "\n", "\n\n\n", "\n", "\n", "\n", "\n"], "lastUpdated": " 11 March 2017, at 18:16."}, +{"title": "Visual Basic .NET", "text": ["\n", "Visual Basic .NET", "\n", "\n", "\n", "\n", "\n", "Paradigm", "\n", "Structured", ", ", "imperative", ", ", "object-oriented", ", ", "declarative", ", ", "generic", ", ", "reflective", " and ", "event-driven", "\n", "\n", "\n", "Designed\u00a0by", "\n", "Microsoft", "\n", "\n", "\n", "Developer", "\n", "Microsoft", "\n", "\n", "\n", "First\u00a0appeared", "\n", "2001", "; 17\u00a0years ago", "\u00a0(", "2001", ")", "\n", "\n", "\n", "\n", "\n", "\n", "Stable release", "\n", "\n", "2017 (15.0) / 7\u00a0March 2017", "; 10 months ago", "\u00a0(", "2017-03-07", ")", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "Typing discipline", "\n", "Static", ", ", "both strong and weak", ",", "[1]", " ", "both safe and unsafe", ",", "[1]", " ", "nominative", "\n", "\n", "\n", "Platform", "\n", ".NET Framework", ", ", "Mono", "\n", "\n", "\n", "OS", "\n", "Chiefly ", "Windows", "\nAlso on ", "Android", ", ", "BSD", ", ", "iOS", ", ", "Linux", ", ", "Mac OS X", ", ", "Solaris", " and ", "Unix", "\n", "\n", "\n", "Filename extensions", "\n", ".vb", "\n", "\n", "\n", "Website", "\n", "docs", ".microsoft", ".com", "/dotnet", "/visual-basic", "/", "\n", "\n", "\n", "Major ", "implementations", "\n", "\n", "\n", "Microsoft Visual Studio", ", ", "Microsoft Visual Studio Express", ", ", "SharpDevelop", ", ", "MonoDevelop", ", ", ".NET Framework SDK", " and ", "Mono", "\n", "\n", "\n", "Dialects", "\n", "\n", "\n", "Microsoft Visual Basic", "\n", "\n", "\n", "Influenced", "\n", "\n", "\n", "Small Basic", "\n", "\n", "\n", "Visual Basic .NET", " (", "VB.NET", ") is a ", "multi-paradigm", ", ", "object-oriented", " ", "programming language", ", implemented on the ", ".NET Framework", ". Microsoft launched VB.NET in 2002 as the successor to its original ", "Visual Basic", " language. Although the \".NET\" portion of the name was dropped in 2005, this article uses \"Visual Basic [.NET]\" to refer to all Visual Basic languages releases since 2002, in order to distinguish between them and the ", "classic Visual Basic", ". Along with ", "Visual C#", ", it is one of the two main languages targeting the .NET framework.", "\n", "Microsoft's ", "integrated development environment", " (IDE) for developing in Visual Basic .NET language is ", "Visual Studio", ". Most Visual Studio editions are ", "commercial", "; the only exceptions are ", "Visual Studio Express", " and ", "Visual Studio Community", ", which are ", "freeware", ". In addition, the ", ".NET Framework SDK", " includes a freeware ", "command-line", " ", "compiler", " called vbc.exe. ", "Mono", " also includes a command-line VB.NET compiler.", "\n", "\n", "\n", "\n", "Contents", "\n", "\n", "\n", "1", " ", "Syntax", "\n", "\n", "1.1", " ", "Simple example", "\n", "1.2", " ", "Complex example", "\n", "1.3", " ", "Comparison with the classic Visual Basic", "\n", "\n", "1.3.1", " ", "Comparative examples", "\n", "\n", "\n", "1.4", " ", "Comparison with C#", "\n", "\n", "\n", "2", " ", "Examples", "\n", "\n", "2.1", " ", "Hello World!", "\n", "\n", "2.1.1", " ", "Windows Form Application", "\n", "2.1.2", " ", "Console Application", "\n", "\n", "\n", "2.2", " ", "Speaking", "\n", "\n", "2.2.1", " ", "Windows Form Application", "\n", "2.2.2", " ", "Console Application", "\n", "\n", "\n", "\n", "\n", "3", " ", "Version history", "\n", "\n", "3.1", " ", "2002 (VB 7.0)", "\n", "3.2", " ", "2003 (VB 7.1)", "\n", "3.3", " ", "2005 (VB 8.0)", "\n", "3.4", " ", "2008 (VB 9.0)", "\n", "3.5", " ", "2010 (VB 10.0)", "\n", "3.6", " ", "2012 (VB 11.0)", "\n", "3.7", " ", "2015 (VB 14.0)", "\n", "3.8", " ", "2017 (VB 15.0)", "\n", "\n", "\n", "4", " ", "Cross-platform and open-source development", "\n", "5", " ", "See also", "\n", "6", " ", "References", "\n", "7", " ", "Further reading", "\n", "8", " ", "External links", "\n", "\n", "\n", "\n", "Syntax", "[", "edit", "]", "\n", "\n", "\n", "\n", "\n", "This section needs expansion", ". ", "You can help by ", "adding to it", ".", " ", "(April 2014)", "\n", "\n", "\n", "\n", "VB.NET uses ", "statements", " to specify actions. The most common statement is an expression statement, consisting of an ", "expression", " to be evaluated, on a single line. As part of that evaluation, ", "functions or subroutines", " may be ", "called", " and ", "variables", " may be ", "assigned", " new values. To modify the normal sequential execution of statements, VB.NET provides several control-flow statements identified by reserved keywords. ", "Structured programming", " is supported by several constructs including two conditional execution constructs (", "If", " \u2026 ", "Then", " \u2026 ", "Else", " \u2026 ", "End If", " and ", "Select Case", " ... ", "Case", " ... ", "End Select", " ) and three iterative execution (loop) constructs (", "Do", " \u2026 ", "Loop", ", ", "For", " \u2026 ", "To", ", and ", "For Each", ") . The ", "For", " \u2026 ", "To", " statement has separate initialisation and testing sections, both of which must be present. (See examples below.) The ", "For Each", " statement steps through each value in a list.", "\n", "In addition, in Visual Basic .NET:", "\n", "\n", "There is no unified way of defining blocks of statements. Instead, certain keywords, such as \"If \u2026 Then\" or \"Sub\" are interpreted as starters of sub-blocks of code and have matching termination keywords such as \"End If\" or \"End Sub\".", "\n", "Statements are terminated either with a ", "colon", " (\":\") or with the ", "end of line", ". Multiple line statements in Visual Basic .NET are enabled with \" _\" at the end of each such line. The need for the underscore continuation character was largely removed in version 10 and later versions.", "[2]", "\n", "The ", "equals sign", " (\"=\") is used in both assigning values to variables and in comparison.", "\n", "Round brackets", " (parentheses) are used with ", "arrays", ", both to declare them and to get a value at a given index in one of them. Visual Basic .NET uses round brackets to define the parameters of subroutines or functions.", "\n", "A ", "single quotation mark", " ('), placed at the beginning of a line or after any number of ", "space", " or ", "tab", " characters at the beginning of a line, or after other code on a line, indicates that the (remainder of the) line is a ", "comment", ".", "\n", "\n", "Simple example", "[", "edit", "]", "\n", "The following is a very simple VB.NET program, a version of the classic \"", "Hello world", "\" example created as a console application:", "\n", "\n", "\n", "Module", " ", "Module1", "\n\n ", "Sub", " ", "Main", "()", "\n ", "' The classic \"Hello World\" demonstration program", "\n ", "Console", ".", "WriteLine", "(", "\"Hello World!\"", ")", "\n ", "End", " ", "Sub", "\n\n", "End", " ", "Module", "\n", "\n", "It prints \"", "Hello world!", "\" on a ", "command-line window", ". Each line serves a specific purpose, as follows:", "\n", "\n", "\n", "Module", " ", "Module1", "\n", "\n", "This is a module definition. Modules are a division of code, which can contain any kind of object, like constants or variables, functions or methods, or classes, but can't be instantiated as objects like classes and cannot inherit from other modules. Modules serve as containers of code that can be referenced from other parts of a program.", "[3]", "\nIt is common practice for a module and the code file, which contains it, to have the same name; however, this is not required, as a single code file may contain more than one module and/or class definition.", "\n", "\n", "\n", "Sub", " ", "Main", "()", "\n", "\n", "It defines a subroutine called \"Main\". \"Main\" is the entry point, where the program begins execution.", "[4]", "\n", "\n", "\n", "Console", ".", "WriteLine", "(", "\"Hello world!\"", ")", "\n", "\n", "This line performs the actual task of writing the output. ", "Console", " is a system object, representing a command-line interface (also known as \"console\") and granting programmatic access to the operating system's ", "standard streams", ". The program calls the ", "Console", " method ", "WriteLine,", " which causes the string passed to it to be displayed on the console.", "\n", "Instead of Console.WriteLine, one could use MsgBox, which prints the message in a dialog box instead of a command-line window.", "[5]", "\n", "Complex example", "[", "edit", "]", "\n", "This piece of code outputs ", "Floyd's Triangle", " to the console:", "\n", "\n", "\n", "Imports", " ", "System.Console", "\n\n", "Module", " ", "Program", "\n\n ", "Sub", " ", "Main", "()", "\n ", "Dim", " ", "rows", " ", "As", " ", "Integer", "\n\n ", "' Input validation.", "\n ", "Do", " ", "Until", " ", "Integer", ".", "TryParse", "(", "ReadLine", "(", "\"Enter a value for how many rows to be displayed: \"", "),", " ", "rows", ")", " ", "AndAlso", " ", "rows", " ", ">=", " ", "1", "\n ", "WriteLine", "(", "\"Allowed range is 1 and {0}\"", ",", " ", "Integer", ".", "MaxValue", ")", "\n ", "Loop", "\n \n ", "' Output of Floyd's Triangle", "\n ", "Dim", " ", "current", " ", "=", " ", "1", "\n\n ", "For", " ", "row", " ", "=", " ", "1", " ", "To", " ", "rows", "\n ", "For", " ", "column", " ", "=", " ", "1", " ", "To", " ", "row", "\n ", "Write", "(", "\"{0,-2} \"", ",", " ", "current", ")", "\n ", "current", " ", "+=", " ", "1", "\n ", "Next", "\n\n ", "WriteLine", "()", "\n ", "Next", "\n ", "End", " ", "Sub", "\n\n ", "''' ", "\n ", "''' Shadows Console.ReadLine with a version which takes a prompt string.", "\n ", "''' ", "\n ", "Function", " ", "ReadLine", "(", "Optional", " ", "prompt", " ", "As", " ", "String", " ", "=", " ", "Nothing", ")", " ", "As", " ", "String", "\n ", "If", " ", "prompt", " ", "IsNot", " ", "Nothing", " ", "Then", "\n ", "Write", "(", "prompt", ")", "\n ", "End", " ", "If", "\n\n ", "Return", " ", "Console", ".", "ReadLine", "()", "\n ", "End", " ", "Function", "\n\n", "End", " ", "Module", "\n", "\n", "Comparison with the classic Visual Basic", "[", "edit", "]", "\n", "Main article: ", "Comparison of Visual Basic and Visual Basic .NET", "\n", "Whether Visual Basic .NET should be considered as just another version of Visual Basic or a completely different language is a topic of debate. There are new additions to support new features, such as ", "structured exception handling", " and short-circuited expressions. Also, two important data-type changes occurred with the move to VB.NET: compared to Visual Basic 6, the ", "Integer", " ", "data type", " has been doubled in length from 16 bits to 32 bits, and the ", "Long", " ", "data type", " has been doubled in length from 32 bits to 64 bits. This is true for all versions of VB.NET. A 16-bit integer in all versions of VB.NET is now known as a ", "Short", ". Similarly, the ", "Windows Forms", " editor is very similar in style and function to the Visual Basic form editor.", "\n", "The things that ", "have", " changed significantly are the semantics\u2014from those of an object-based programming language running on a ", "deterministic", ", ", "reference-counted", " engine based on ", "COM", " to a fully ", "object-oriented", " language backed by the ", ".NET Framework", ", which consists of a combination of the ", "Common Language Runtime", " (a ", "virtual machine", " using ", "generational garbage collection", " and a ", "just-in-time compilation", " engine) and a far larger ", "class library", ". The increased breadth of the latter is also a problem that VB developers have to deal with when coming to the language, although this is somewhat addressed by the ", "My", " feature in Visual Studio 2005.", "\n", "The changes have altered many underlying assumptions about the \"right\" thing to do with respect to performance and maintainability. Some functions and libraries no longer exist; others are available, but not as efficient as the \"native\" .NET alternatives. Even if they compile, most converted Visual Basic 6 applications will require some level of ", "refactoring", " to take full advantage of the new language. Documentation is available to cover changes in the syntax, debugging applications, deployment and terminology.", "[6]", "\n", "Comparative examples", "[", "edit", "]", "\n", "The following simple examples compare VB and VB.NET syntax. They assume that the developer has created a form, placed a button on it and has associated the subroutines demonstrated in each example with the click event handler of the mentioned button. Each example creates a \"Hello, World\" message box after the button on the form is clicked.", "\n", "Visual Basic 6:", "\n", "\n", "\n", "Private", " ", "Sub", " ", "Command1_Click", "()", "\n ", "MsgBox", " ", "\"Hello, World\"", "\n", "End", " ", "Sub", "\n", "\n", "VB.NET (MsgBox or MessageBox class can be used):", "\n", "\n", "\n", "Private", " ", "Sub", " ", "Button1_Click", "(", "sender", " ", "As", " ", "object", ",", " ", "e", " ", "As", " ", "EventArgs", ")", " ", "Handles", " ", "Button1", ".", "Click", "\n ", "MsgBox", "(", "\"Hello, World\"", ")", "\n", "End", " ", "Sub", "\n", "\n", "\n", "Both Visual Basic 6 and Visual Basic .NET automatically generate the ", "Sub", " and ", "End Sub", " statements when the corresponding button is double-clicked in design view. Visual Basic .NET will also generate the necessary ", "Class", " and ", "End Class", " statements. The developer need only add the statement to display the \"Hello, World\" message box.", "\n", "All procedure calls must be made with parentheses in VB.NET, whereas in Visual Basic 6 there were different conventions for functions (parentheses required) and subs (no parentheses allowed, unless called using the keyword ", "Call", ").", "\n", "The names ", "Command1", " and ", "Button1", " are not obligatory. However, these are default names for a command button in Visual Basic 6 and VB.NET respectively.", "\n", "In VB.NET, the ", "Handles", " keyword is used to make the sub ", "Button1_Click", " a handler for the ", "Click", " event of the object ", "Button1", ". In Visual Basic 6, event handler subs must have a specific name consisting of the object's name (\"Command1\"), an underscore (\"_\"), and the event's name (\"Click\", hence \"Command1_Click\").", "\n", "There is a function called ", "MessageBox.Show", " in the ", "Microsoft.VisualBasic", " namespace which can be used (instead of ", "MsgBox", ") similarly to the corresponding function in Visual Basic 6. There is a controversy", "[7]", " about which function to use as a best practice (not only restricted to showing message boxes but also regarding other features of the ", "Microsoft.VisualBasic", " namespace). Some programmers prefer to do things \"the .NET way\", since the Framework classes have more features and are less language-specific. Others argue that using language-specific features makes code more readable (for example, using ", "int", " (C#) or ", "Integer", " (VB.NET) instead of ", "System.Int32", ").", "\n", "In Visual Basic 2008, the inclusion of ", "ByVal sender as Object, ByVal e as EventArgs", " has become optional.", "\n", "\n", "The following example demonstrates a difference between Visual Basic 6 and VB.NET. Both examples close the ", "active window", ".", "\n", "Visual Basic 6:", "\n", "\n", "\n", "Sub", " ", "cmdClose_Click", "()", "\n ", "Unload", " ", "Me", "\n", "End", " ", "Sub", "\n", "\n", "VB.NET:", "\n", "\n", "\n", "Sub", " ", "btnClose_Click", "(", "sender", " ", "As", " ", "Object", ",", " ", "e", " ", "As", " ", "EventArgs", ")", " ", "Handles", " ", "btnClose", ".", "Click", "\n ", "Close", "()", "\n", "End", " ", "Sub", "\n", "\n", "The 'cmd' prefix is replaced by the 'btn' prefix, conforming to the new convention previously mentioned.", "[", "which?", "]", "\n", "Visual Basic 6 did not provide common operator shortcuts. The following are equivalent:", "\n", "Visual Basic 6:", "\n", "\n", "\n", "Sub", " ", "Timer1_Timer", "()", "\n ", "'Reduces Form Height by one pixel per tick", "\n ", "Me", ".", "Height", " ", "=", " ", "Me", ".", "Height", " ", "-", " ", "1", "\n", "End", " ", "Sub", "\n", "\n", "VB.NET:", "\n", "\n", "\n", "Sub", " ", "Timer1_Tick", "(", "sender", " ", "As", " ", "Object", ",", " ", "e", " ", "As", " ", "EventArgs", ")", " ", "Handles", " ", "Timer1", ".", "Tick", "\n ", "Me", ".", "Height", " ", "-=", " ", "1", "\n", "End", " ", "Sub", "\n", "\n", "Comparison with C#", "[", "edit", "]", "\n", "Main article: ", "Comparison of C Sharp and Visual Basic .NET", "\n", "C# and Visual Basic .NET are Microsoft's first languages made to program on the .NET Framework (later adding ", "F#", " and more and others have also added languages). Though C# and VB.NET are syntactically different, that is where the differences mostly end. Microsoft developed both of these languages to be part of the same .NET Framework development platform. They are both developed, managed, and supported by the same language development team at Microsoft.", "[8]", " They compile to the same intermediate language (IL), which runs against the same .NET Framework runtime libraries.", "[9]", " Although there are some differences in the programming constructs, their differences are primarily syntactic and, assuming one avoids the Visual Basic \"Compatibility\" libraries provided by Microsoft to aid conversion from Visual Basic 6, almost every command in VB has an equivalent command in C# and vice versa. Lastly, both languages reference the same Base Classes of the .NET Framework to extend their functionality. As a result, with few exceptions, a program written in either language can be run through a simple syntax converter to translate to the other. There are many open source and commercially available products for this task.", "\n", "Examples", "[", "edit", "]", "\n", "Hello World!", "[", "edit", "]", "\n", "Windows Form Application", "[", "edit", "]", "\n", "\n", "\n", "Public", " ", "Class", " ", "Form1", "\n\n ", "Private", " ", "Sub", " ", "Button1_Click", "(", "sender", " ", "As", " ", "Object", ",", " ", "e", " ", "As", " ", "EventArgs", ")", " ", "Handles", " ", "Button1", ".", "Click", "\n ", "MsgBox", "(", "\"Hello world\"", ",", " ", "MsgBoxStyle", ".", "Information", ",", " ", "\"Hello world!\"", ")", " ", "' Show a message that says \"Hello world!\".", "\n ", "End", " ", "Sub", "\n", "End", " ", "Class", "\n", "\n", "\n", "\n", "\n", "\nHello world! window", "\n", "\n", "\n", "Console Application", "[", "edit", "]", "\n", "\n", "\n", "Module", " ", "Module1", "\n\n ", "Sub", " ", "Main", "()", "\n ", "Console", ".", "WriteLine", "(", "\"Hello world!\"", ")", " ", "' Write in the console \"Hello world!\" and start a new line.", "\n ", "Console", ".", "ReadKey", "()", " ", "' The user must press any key before the application ends.", "\n ", "End", " ", "Sub", "\n", "End", " ", "Module", "\n", "\n", "Speaking", "[", "edit", "]", "\n", "Windows Form Application", "[", "edit", "]", "\n", "\n", "\n", "Public", " ", "Class", " ", "Form1", "\n \n ", "Private", " ", "Sub", " ", "Button1_Click", "(", "sender", " ", "As", " ", "Object", ",", " ", "e", " ", "As", " ", "EventArgs", ")", " ", "Handles", " ", "Button1", ".", "Click", "\n ", "CreateObject", "(", "\"Sapi.Spvoice\"", ").", "Speak", "(", "TextBox1", ".", "Text", ")", "\n ", "End", " ", "Sub", "\n", "End", " ", "Class", "\n", "\n", "Console Application", "[", "edit", "]", "\n", "\n", "\n", "Module", " ", "Module1", "\n ", "Private", " ", "Voice", " ", "=", " ", "CreateObject", "(", "\"Sapi.Spvoice\"", ")", "\n ", "Private", " ", "Text", " ", "As", " ", "String", "\n\n ", "Sub", " ", "Main", "()", "\n ", "Console", ".", "Write", "(", "\"Enter the text to speak: \"", ")", " ", "' Say \"Enter the text to speak: \"", "\n ", "Text", " ", "=", " ", "Console", ".", "ReadLine", "()", " ", "' The user must enter the text to speak.", "\n ", "Voice", ".", "Speak", "(", "Text", ")", " ", "' Speak the text the user has entered.", "\n ", "End", " ", "Sub", "\n", "End", " ", "Module", "\n", "\n", "Version history", "[", "edit", "]", "\n", "Succeeding ", "the classic Visual Basic", " version 6.0, the first version of Visual Basic .NET debuted in 2002. As of 2017", "[update]", ", eight versions of Visual Basic .NET are released.", "\n", "2002 (VB 7.0)", "[", "edit", "]", "\n", "The first version, Visual Basic .NET, relies on ", ".NET Framework 1.0", ". The most important feature is ", "managed code", ", which contrasts with the classic Visual Basic.", "\n", "2003 (VB 7.1)", "[", "edit", "]", "\n", "Visual Basic .NET 2003 was released with ", ".NET Framework 1.1", ". New features included support for the ", ".NET Compact Framework", " and a better VB upgrade ", "wizard", ". Improvements were also made to the performance and reliability of .NET IDE (particularly the ", "background compiler", ") and runtime. In addition, Visual Basic .NET 2003 was available in the Visual Studio.NET Academic Edition, distributed to a certain number of scholars", "[", "weasel\u00a0words", "]", " from each country without cost.", "\n", "2005 (VB 8.0)", "[", "edit", "]", "\n", "After Visual Basic .NET 2003, Microsoft dropped \".NET\" from the name of the product, calling the next version Visual Basic 2005.", "\n", "For this release, Microsoft added many features intended to reinforce Visual Basic .NET's focus as a ", "rapid application development", " platform and further differentiate it from ", "C#", "., including:", "\n", "\n", "Edit and Continue", " feature", "[", "further explanation needed", "]", "\n", "Design-time expression evaluation", "[", "further explanation needed", "]", "\n", "A pseudo-", "namespace", " called \"My\", which provides:", "[10]", "[11]", "\n", "\n", "Easy access to certain areas of the .NET Framework that otherwise require significant code to access like using", "\n", "\n", "\n", "\n", "\n", "\n", "My", ".", "Form2", ".", "Text", " ", "=", " ", "\" MainForm \"", "\n", "\n", "rather than", "\n", "\n", "\n", "System", ".", "WindowsApplication1", ".", "Forms", ".", "Form2", ".", "text", " ", "=", " ", "\" MainForm \"", "\n", "\n", "\n", "\n", "\n", "Dynamically generated classes (e.g. ", "My.Forms", ")", "\n", "\n", "\n", "Improved VB-to-VB.NET converter", "[12]", "\n", "A \"using\" keyword, simplifying the use of objects that require the Dispose ", "pattern", " to free resources", "\n", "Just My Code", " feature, which hides (steps over) ", "boilerplate code", " written by the Visual Studio .NET IDE and system library code during debugging", "\n", "Data Source binding, easing ", "database", " client/server development", "\n", "\n", "To bridge the gaps between itself and other .NET languages, this version added:", "\n", "\n", "Generics", "[13]", "\n", "Partial classes", ", a method of defining some parts of a class in one file and then adding more definitions later; particularly useful for integrating user code with auto-generated code", "\n", "Operator overloading", " and ", "nullable types", "[14]", "\n", "Support for ", "unsigned integer", " data types commonly used in other languages", "\n", "\n", "Visual Basic 2005 introduced the ", "IsNot", " operator that makes ", "'If X IsNot Y'", " equivalent to ", "'If Not X Is Y'", ". It gained notoriety", "[15]", " when it was found to be the subject of a Microsoft patent application.", "[16]", "[17]", "\n", "2008 (VB 9.0)", "[", "edit", "]", "\n", "Visual Basic 9.0 was released along with ", ".NET Framework 3.5", " on 19 November 2007.", "\n", "For this release, Microsoft added many features, including:", "\n", "\n", "A true ", "conditional operator", ", \"If(condition as boolean, truepart, falsepart)\", to replace the \"IIf\" function.", "\n", "Anonymous types", "\n", "Support for ", "LINQ", "\n", "Lambda expressions", "\n", "XML Literals", "\n", "Type Inference", "\n", "Extension methods", "\n", "\n", "2010 (VB 10.0)", "[", "edit", "]", "\n", "In April 2010, Microsoft released Visual Basic 2010. Microsoft had planned to use ", "Dynamic Language Runtime", " (DLR) for that release", "[18]", " but shifted to a co-evolution strategy between Visual Basic and sister language C# to bring both languages into closer parity with one another. Visual Basic's innate ability to interact dynamically with CLR and COM objects has been enhanced to work with dynamic languages built on the DLR such as ", "IronPython", " and ", "IronRuby", ".", "[19]", " The Visual Basic compiler was improved to infer line continuation in a set of common contexts, in many cases removing the need for the \"_\" line continuation character. Also, existing support of inline Functions was complemented with support for inline Subs as well as multi-line versions of both Sub and Function lambdas.", "[20]", "\n", "2012 (VB 11.0)", "[", "edit", "]", "\n", "Visual Basic 2012 was released along ", ".NET Framework 4.5", ". Major features introduced in this version include:", "[", "further explanation needed", "]", "\n", "\n", "Asynchronous programming", " with \"async\" and \"await\" statements", "\n", "Iterators", "\n", "Call hierarchy", "\n", "Caller information", "\n", "\"Global\" keyword in \"namespace\" statements", "\n", "\n", "2015 (VB 14.0)", "[", "edit", "]", "\n", "Visual Basic 2015 (code named VB \"14.0\") has been released with Visual Studio 2015. Language features include a new \"?.\" operator to perform inline null checks, and a new string interpolation feature is included to format strings inline.", "[21]", "\n", "2017 (VB 15.0)", "[", "edit", "]", "\n", "Visual Basic 2017 (code named VB \"15.0\") has been released with Visual Studio 2017. Extends support for new Visual Basic 15 language features, and introduces new refactorings that allow you to organize source code with one action.", "[22]", "\n", "Cross-platform and open-source development", "[", "edit", "]", "\n", "The creation of open-source tools for VB.NET development has been slow compared to ", "C#", ", although the ", "Mono", " development platform provides an implementation of VB.NET-specific libraries and a VB.NET 8.0 compatible ", "compiler", " written in VB.NET,", "[23]", " as well as standard framework libraries such as ", "Windows Forms", " GUI library.", "\n", "SharpDevelop", " and ", "MonoDevelop", " are ", "open-source", " alternative ", "IDEs", ".", "\n", "See also", "[", "edit", "]", "\n", "\n", "Microsoft Visual Studio Express", "\n", "List of .NET libraries and frameworks", "\n", "Comparison of C# and Visual Basic .NET", "\n", "Visual Basic for Applications", "\n", "Microsoft Small Basic", "\n", "Comparison of programming languages", "\n", "\n", "References", "[", "edit", "]", "\n", "\n", "\n", "^ ", "a", " ", "b", " ", "\"Option Explicit and Option Strict in Visual Basic .NET and in Visual Basic\"", ". ", "Support", ". ", "Microsoft", ". 19 March 2008", ". Retrieved ", "22 August", " 2013", ".", "\u00a0", "\n", "^", " ", "\"New Features in Visual Basic 10\"", ".", "\u00a0", "\n", "^", " ", "\"Module Statement\"", ". MSDN \u2013 Developer Center", ". Retrieved ", "20 January", " 2010", ".", "\u00a0", "\n", "^", " ", "\"Main Procedure in Visual Basic\"", ". MSDN \u2013 Developer Center", ". Retrieved ", "20 January", " 2010", ".", "\u00a0", "\n", "^", " ", "\"Visual Basic Version of Hello, World\"", ". MSDN \u2013 Developer Center", ". Retrieved ", "20 January", " 2010", ".", "\u00a0", "\n", "^", " ", "\"Microsoft Visual Basic 6.0 Migration Resource Center\"", ". ", "MSDN", ". ", "Microsoft", ". Retrieved ", "9 November", " 2014", ".", "\u00a0", "\n", "^", " ", "https://msdn.microsoft.com/en-us/library/aa903378(v=vs.71).aspx", "\n", "^", " ", "Krill, Paul (2009-02-27). ", "\"Microsoft converging programming languages | Developer World\"", ". InfoWorld", ". Retrieved ", "2013-08-18", ".", "\u00a0", "\n", "^", " ", "\"Microsoft Intermediate Language\"", ". Dotnet-guide.com", ". Retrieved ", "2013-08-18", ".", "\u00a0", "\n", "^", " ", "Mackenzie, Duncan (2006). ", "\"Navigate The .NET Framework And Your Projects With The My Namespace\"", ". ", "MSDN Magazine Visual Studio 2005 Guided Tour 2006", ". ", "Microsoft", ".", "\u00a0", "\n", "^", " ", "Whitney, Tyler (November 2005). ", "\"My.Internals: Examining the Visual Basic My Feature\"", ". ", "MSDN", ". ", "Microsoft", ".", "\u00a0", "\n", "^", " ", "What's New with the Visual Basic Upgrade Wizard in Visual Basic 2005", "\n", "^", " ", "Defining and Using Generics in Visual Basic 2005", "\n", "^", " ", "Operator Overloading in Visual Basic 2005", "\n", "^", " ", "Sherriff, Lucy (22 February 2005). ", "\"Real Software slams MS IsNot patent application\"", ". The Register", ". Retrieved ", "6 April", " 2009", ".", "\u00a0", "\n", "^", " ", "Taft, Darryl K. (21 February 2005). ", "\"Real Software Slams Microsofts Patent Effort\"", ". eWeek", ". Retrieved ", "6 April", " 2009", ".", "\u00a0", "\n", "^", " ", "Vick, Paul A. Jr.; Barsan, Costica Corneliu; Silver, Amanda K. (14 May 2003). ", "\"United States Patent Application: 20040230959\"", ". ", "Patent Application Full Text and Image Database", ". US Patent & Trademark Office", ". Retrieved ", "6 April", " 2009", ".", "\u00a0", "\n", "^", " ", "\"What the heck is \"VBx\"?\"", ". 1 May 2007", ". Retrieved ", "12 August", " 2009", ". ", "With the new DLR, we have support for IronPython, IronRuby, Javascript, and the new dynamic VBx compile", "\u00a0", "\n", "^", " ", "\"What is New in Visual Basic 2010\"", ". ", "Microsoft", ". 2009", ". Retrieved ", "12 August", " 2009", ". ", "Visual Basic binds to objects from dynamic languages such as IronPython and IronRuby", "\u00a0", "\n", "^", " ", "\"What's New in Visual Basic 2010\"", ". Microsoft. 2010", ". Retrieved ", "1 August", " 2010", ".", "\u00a0", "\n", "^", " ", "http://blogs.msdn.com/b/vbteam/archive/2014/12/09/new-language-features-in-visual-basic-14.aspx", "\n", "^", " ", "https://www.visualstudio.com/en-us/news/releasenotes/vs2017-relnotes", "\n", "^", " ", "Mono Project: VisualBasic.NET support", "\n", "\n", "\n", "Further reading", "[", "edit", "]", "\n", "\n", "\n", "\"Visual Basic Language Specification 8.0\"", ". Microsoft Corporation. 15 November 2005", ". Retrieved ", "10 December", " 2010", ".", "\u00a0", "\n", "\"Visual Basic Language Specification 9.0\"", ". Microsoft Corporation. 19 December 2007", ". Retrieved ", "28 September", " 2011", ".", "\u00a0", "\n", "\"Visual Basic Language Specification 11.0\"", ". Microsoft Corporation. 7 June 2013", ". Retrieved ", "22 September", " 2013", ".", "\u00a0", "\n", "\n", "\n", "External links", "[", "edit", "]", "\n", "\n", "\n", "\n", "Wikibooks has a book on the topic of: ", "Visual Basic .NET", "\n", "\n", "\n", "\n", "\n", "\n", "Wikiversity has learning resources about ", "VB.NET", "\n", "\n", "\n", "\n", "Official website", "\n", "The Visual Basic Team Blog", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "v", "\n", "t", "\n", "e", "\n", "\n", "\n", "Dialects of the ", "BASIC", " programming language (", "list", ")", "\n", "\n", "\n", "\n", "Classic", "\n", "\n", "\n", "\n", "Altair BASIC", "\n", "Applesoft BASIC", "\n", "Atari BASIC", "\n", "Atari Microsoft BASIC", "\n", "Atari ST BASIC", "\n", "BASICA", "\n", "BASIC A+", "\n", "BASIC Programming", "\n", "BASIC XE", "\n", "BASIC XL", "\n", "Casio BASIC", "\n", "Chipmunk Basic", "\n", "Color BASIC", "\n", "Commodore BASIC", "\n", "Extended Color BASIC", "\n", "Dartmouth BASIC", "\n", "Disk Extended Color BASIC", "\n", "Family BASIC", "\n", "GFA BASIC", "\n", "GW-BASIC", "\n", "HP BASIC for OpenVMS", "\n", "HP Time-Shared BASIC", "\n", "IBM BASIC", "\n", "Integer BASIC", "\n", "Locomotive BASIC", "\n", "Mallard BASIC", "\n", "Microsoft BASIC", "\n", "MSX BASIC", "\n", "Pure Basic", "\n", "Rocky Mountain BASIC", "\n", "S'-BASIC", " (Tandy, Casio, Sharp Pocket Computers)", "\n", "ScriptBasic", "\n", "Sinclair BASIC", "\n", "Southampton BASIC System", "\n", "STOS BASIC", "\n", "TI BASIC (TI 99/4A)", "\n", "TI-BASIC (calculators)", "\n", "TI Extended BASIC", " (aka XBasic)", "\n", "Tiny BASIC", "\n", "Turbo-Basic XL", "\n", "Tymshare SUPER BASIC", "\n", "UBASIC", "\n", "Vilnius BASIC", "\n", "XBasic", "\n", "\n", "\n", "\n", "\n", "\n", "Procedure-oriented", "\n", "\n", "\n", "\n", "AmigaBASIC", "\n", "AMOS BASIC", "\n", "ASIC", "\n", "BBC BASIC", "\n", "Beta BASIC", "\n", "DarkBASIC", "\n", "FreeBASIC", "\n", "FutureBASIC", "\n", "GFA BASIC", "\n", "GLBasic", "\n", "Liberty BASIC", "\n", "Microsoft Small Basic", "\n", "PowerBASIC", "\n", "PureBasic", "\n", "QBasic", "\n", "QB64", "\n", "QuickBASIC", "\n", "SmallBASIC", "\n", "SuperBASIC", "\n", "ThinBasic", "\n", "True BASIC", "\n", "Turbo Basic", "\n", "XBasic", "\n", "Xblite", "\n", "Basic4ppc", "\n", "Visual Test", "\n", "B4J", "\n", "\n", "\n", "\n", "\n", "\n", "With object extensions", "\n", "\n", "\n", "\n", "AutoIt", "\n", "Basic For Qt", " (KBasic)", "\n", "BlitzMax", "\n", "Chipmunk Basic", "\n", "FreeBASIC", "\n", "Gambas", "\n", "GLBasic", "\n", "Monkey X", "\n", "OpenOffice Basic", "\n", "PowerBASIC", "\n", "ProvideX", "\n", "RapidQ", "\n", "REALbasic", "\n", "Run BASIC", "\n", "Visual Basic", "\n", "Visual Basic .NET", "\n", "Xojo", "\n", "\n", "\n", "\n", "\n", "\n", "For mobile devices", "\n", "\n", "\n", "\n", "B4X", "\n", "Basic4android", " ", "(B4A)", "\n", "Basic4ppc", "\n", "GLBasic", "\n", "NS Basic", "\n", "Basic4ios", " ", "(B4i)", "\n", "\n", "\n", "\n", "\n", "\n", "Microsoft", "\n", "\n", "\n", "\n", "Microsoft BASIC", "\n", "\n", "MBASIC", "\n", "IBM BASIC", "/BASICA", "\n", "GW-BASIC", "\n", "QuickBASIC", "\n", "QBasic", "\n", "\n", "\n", "VBScript", "\n", "Visual Basic", "\n", "VBA", "\n", "Visual Basic .NET", "\n", "Embedded Visual Basic", "\n", "VB 5 for ", "Microsoft Excel", " 5.0\n", "\n", "VSTO", "\n", "VSTA", "\n", "\n", "\n", "WordBASIC", "\n", "TRS-80 Basics (Level I, Level II, Level III)", "\n", "Microsoft Small Basic", "\n", "\n", "\n", "\n", "\n", "\n", "Third-party VB-like", "\n", "\n", "\n", "\n", "B4X", "\n", "Basic For Qt", "\n", "Gambas", "\n", "Hummingbird Basic", "\n", "LotusScript", "\n", "WinWrapBasic", "\n", "Xojo", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "v", "\n", "t", "\n", "e", "\n", "\n", "\n", ".NET Framework", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "Version history", "\n", ".NET strategy", "\n", "\n", "\n", "\n", "\n", "\n", "Architecture", "\n", "\n", "\n", "\n", "Common Language Runtime", " (CLR)", "\n", "COM Interop", "\n", "Framework Class Library", " (FCL)", "\n", "\n", "\n", "\n", "\n", "\n", "Components", "\n", "\n", "\n", "\n", "ADO.NET", "\n", "\n", "Entity Framework", "\n", "\n", "\n", "ASP.NET", "\n", "\n", "AJAX", "\n", "Core", "\n", "Dynamic Data", "\n", "MVC", "\n", "Razor", "\n", "\n", "\n", "ClickOnce", "\n", "Dynamic Language Runtime", "\n", "Extensible Application Markup Language", " (XAML)", "\n", "Language Integrated Query", " (LINQ)", "\n", "Managed Extensibility Framework", "\n", "Microsoft Silverlight", "\n", "Microsoft XNA", "\n", "Parallel Extensions", "\n", "Windows Communication Foundation", " (WCF)\n", "\n", "WCF Data Services", "\n", "\n", "\n", "Windows Forms", " (WinForms)", "\n", "Windows Identity Foundation", " (WIF)", "\n", "Windows Presentation Foundation", " (WPF)", "\n", "Windows Workflow Foundation", " (WF)", "\n", ".NET Remoting", "\n", "\n", "\n", "\n", "\n", "\n", "Tools", "\n", "\n", "\n", "\n", "\n", "Decompilers", "\n", "\n", "\n", "\n", ".NET Reflector", "\n", "dotPeek", "\n", "\n", "\n", "\n", "\n", "\n", "Obfuscators", "\n", "\n", "\n", "\n", "Dotfuscator", "\n", "SmartAssembly", "\n", "CodeArmor", "\n", "Xenocode", "\n", "\n", "\n", "\n", "\n", "\n", "Misc", "\n", "\n", "\n", "\n", "CLR Profiler", "\n", "ILAsm", "\n", ".NET Compiler Platform", "\n", "Native Image Generator", " (NGen)", "\n", "XAMLPad", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "IDEs", "\n", "\n", "\n", "\n", "Visual Studio", "\n", "\n", "Blend", "\n", "Express", "\n", "\n", "\n", "MonoDevelop", "\n", "SharpDevelop", "\n", "Xamarin Studio", "\n", "\n", "\n", "\n", "\n", "\n", "Organizations", "\n", "\n", "\n", "\n", ".NET Foundation", "\n", "Microsoft", "\n", "Xamarin", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", " ", "Category", "\n", " ", "List", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "v", "\n", "t", "\n", "e", "\n", "\n", "\n", "Common Language Infrastructure", "\n", "\n", "\n", "\n", "Architecture", "\n", "\n", "\n", "\n", "Application domain", "\n", "Code Access Security", "\n", "Common Intermediate Language", " (CIL)\n", "\n", "CIL instructions", "\n", "\n", "\n", "Common Type System", " (CTS)", "\n", "Platform Invocation Services", " (P/Invoke)", "\n", "Virtual Execution System", " (VES)", "\n", "\n", "\n", "\n", "\n", "\n", "Components", "\n", "\n", "\n", "\n", "Assembly", "\n", "Delegate", "\n", "Global Assembly Cache", " (GAC)", "\n", "Manifest", "\n", "Metadata", "\n", "\n", "\n", "\n", "\n", "\n", "Standard", "\nLibraries", "\n", "\n", "\n", "\n", "\n", "Kernel Profile", "\n", "\n", "\n", "\n", "Base Class Library", " (BCL)", "\n", "Runtime Infrastructure Library", "\n", "\n", "\n", "\n", "\n", "\n", "Compact Profile", "\n", "\n", "\n", "\n", "Network Library", "\n", "Reflection Library", "\n", "XML Library", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "Extended Array Library", "\n", "Extended Numerics Library", "\n", "Parallel Library", "\n", "Vararg Library", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "Implementations", "\n", "\n", "\n", "\n", "\n", "Microsoft", "\n", "\n", "\n", "\n", ".NET Framework", "\n", ".NET Compact Framework", "\n", ".NET Micro Framework", "\n", "Shared Source Common Language Infrastructure", "\n", "\n", "\n", "\n", "\n", "\n", "Other", "\n", "\n", "\n", "\n", ".NET Core", "\n", "Mono", "\n", "Portable.NET", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "Languages", "\n", "\n", "\n", "\n", "\n", "Microsoft", "\n", "\n", "\n", "\n", "C#", "\n", "Visual Basic .NET", "\n", "C++/CLI", "\n", "\n", "Managed", "\n", "\n", "\n", "F#", "\n", "Q#", "\n", "J#", "\n", "JScript .NET", "\n", "PowerShell", "\n", "\n", "\n", "\n", "\n", "\n", "Other", "\n", "\n", "\n", "\n", "Axum", "\n", "A#", "\n", "Boo", "\n", "Cobra", "\n", "IronScheme", "\n", "\n", "IronLisp", "\n", "\n", "\n", "IronPython", "\n", "IronRuby", "\n", "Nemerle", "\n", "Oxygene", "\n", "Phalanger", "\n", "P#", "\n", "Scala", "\n", "\n", "\n", "\n", "\n", "\n", "Comparison", "\n", "\n", "\n", "\n", "C# and Java", "\n", "C# and Visual Basic .NET", "\n", "Java and .NET platforms", "\n", "Visual Basic and Visual Basic .NET", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "Organizations", "\n", "\n", "\n", "\n", ".NET Foundation", "\n", "DotGNU", "\n", "Microsoft", "\n", "Xamarin", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "v", "\n", "t", "\n", "e", "\n", "\n", "\n", "Microsoft development tools", "\n", "\n", "\n", "\n", "Development", "\nenvironments", "\n", "\n", "\n", "\n", "\n", "Visual Studio", "\n", "\n", "\n", "\n", "Code", "\n", "Express", "\n", "Lab Management", "\n", "Team System Profiler", "\n", "Test Professional", "\n", "Tools for Applications", "\n", "Tools for Office", "\n", "\n", "\n", "\n", "\n", "\n", "Others", "\n", "\n", "\n", "\n", ".NET Compiler Platform", "\n", "App Studio", "\n", "Blend", "\n", "Expression Web", "\n", "GW-BASIC", "\n", "Microsoft Pascal", "\n", "MSBuild", "\n", "Robotics Developer Studio", "\n", "SharePoint Designer", "\n", "\n", "FrontPage", "\n", "\n", "\n", "PowerShell ISE", "\n", "QuickBASIC", "\n", "\n", "QBasic", "\n", "\n", "\n", "QuickC", "\n", "Small Basic", "\n", "WebMatrix", "\n", "Windows SDK", "\n", "\n", "CLR Profiler", "\n", "ILAsm", "\n", "Native Image Generator", "\n", "XAMLPad", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "Languages", "\n", "\n", "\n", "\n", "Microsoft Basic", "\n", "Visual Basic", "\n", "Visual Basic .NET", "\n", "Visual C++", "\n", "\n", "C++/CX", "\n", "C++/CLI", "\n", "Managed C++", "\n", "\n", "\n", "C#", "\n", "F#", "\n", "J#", "\n", "Visual FoxPro", "\n", "IronPython", "\n", "IronRuby", "\n", "JScript", "\n", "PowerShell", "\n", "TypeScript", "\n", "VBScript", "\n", "XAML", "\n", "\n", "\n", "\n", "\n", "\n", "Major ", "APIs", " and", "\nframeworks", "\n(", "See all", ")", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "Windows API", "\n", "Silverlight", "\n", "XNA", "\n", "DirectX", "\n", "\n", "Managed DirectX", "\n", "\n", "\n", "Xbox Development Kit", "\n", "Windows Installer", "\n", "\n", "\n", "\n", "\n", "\n", ".NET Framework", "\n", "\n", "\n", "\n", "ASP.NET", "\n", "\n", "ASP.NET Core", "\n", "ASP.NET AJAX", "\n", "ASP.NET Dynamic Data", "\n", "ASP.NET MVC", "\n", "ASP.NET Razor", "\n", "\n", "\n", "ADO.NET", "\n", "\n", "Entity Framework", "\n", "\n", "\n", "CardSpace", "\n", "Communication Foundation", "\n", "Identity Foundation", "\n", "LINQ", "\n", "Presentation Foundation", "\n", "Workflow Foundation", "\n", "\n", "\n", "\n", "\n", "\n", "Device drivers", "\n", "\n", "\n", "\n", "WDK", "\n", "WDF", "\n", "\n", "KMDF", "\n", "UMDF", "\n", "\n", "\n", "Windows Hardware Certification Kit", "\n", "WDM", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "Database", "\n", "\n", "\n", "\n", "\n", "SQL Server", "\n", "\n", "\n", "\n", "Express", "\n", "Compact", "\n", "Management Studio", "\n", "Business Intelligence Development Studio", "\n", "MSDE", "\n", "\n", "\n", "\n", "\n", "\n", "SQL services", "\n", "\n", "\n", "\n", "Analysis", "\n", "Reporting", "\n", "Integration", "\n", "Notification", "\n", "\n", "\n", "\n", "\n", "\n", "Other", "\n", "\n", "\n", "\n", "Visual FoxPro", "\n", "Microsoft Access", "\n", "Jet Engine", "\n", "Extensible Storage Engine", "\n", "Azure DocumentDB", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "Source control", "\n", "\n", "\n", "\n", "Team Foundation Server", "\n", "Visual SourceSafe", "\n", "\n", "\n", "\n", "\n", "\n", "Delivery", "\n", "\n", "\n", "\n", "Active Setup", "\n", "ClickOnce", "\n", "NuGet", "\n", "Web Platform", "\n", "Windows Installer", "\n", "\n", "WiX", "\n", "\n", "\n", "Windows Store", "\n", "\n", "\n", "\n", "\n", "\n", "\n\n\n", "\n", "\n", "\n", "\n"], "lastUpdated": " 13 January 2018, at 10:28."}, +{"title": "Just-in-time compilation", "text": ["\"Dynamic translation\" redirects here. For the translation of natural languages, see ", "Dynamic and formal equivalence", ".", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "This article ", "has an unclear citation style", ". ", "The references used may be made clearer with a different or consistent style of ", "citation", ", ", "footnoting", ", or ", "external linking", ".", " ", "(December 2013)", " ", "(", "Learn how and when to remove this template message", ")", "\n", "\n", "\n", "\n", "\n", "\n", "Program execution", "\n", "\n", "\n", "General concepts", "\n", "\n", "\n", "\n", "\n", "Code", "\n", "Translation", "\n", "\n", "Compiler", "\n", "Optimizing compiler", "\n", "\n", "\n", "Intermediate representation", " (IR)", "\n", "Execution", "\n", "\n", "Runtime system", "\n", "Executable", "\n", "Interpreter", "\n", "Virtual machine", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "Types of code", "\n", "\n", "\n", "\n", "\n", "Source code", "\n", "Object code", "\n", "Bytecode", "\n", "Machine code", "\n", "Microcode", "\n", "\n", "\n", "\n", "\n", "Compilation strategies", "\n", "\n", "\n", "\n", "\n", "Just-in-time", " (JIT)\n", "\n", "Tracing just-in-time", "\n", "\n", "\n", "Ahead-of-time", " (AOT)", "\n", "Transcompilation", "\n", "Recompilation", "\n", "\n", "\n", "\n", "\n", "Notable runtimes", "\n", "\n", "\n", "\n", "\n", "Android Runtime", " (ART)", "\n", "Common Language Runtime", " (CLR)", "\n", "crt0", "\n", "Java virtual machine", " (JVM)", "\n", "Node.js", "\n", "Zend Engine", "\n", "\n", "\n", "\n", "\n", "Notable compilers & toolchains", "\n", "\n", "\n", "\n", "\n", "GNU Compiler Collection", " (GCC)", "\n", "LLVM", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "v", "\n", "t", "\n", "e", "\n", "\n", "\n", "\n", "\n", "\n", "In ", "computing", ", ", "just-in-time", " (", "JIT", ") ", "compilation", ", also known as ", "dynamic translation", ", is a way of executing ", "computer code", " that involves ", "compilation", " during execution of a program \u2013 at ", "run time", " \u2013 rather than prior to execution.", "[1]", " Most often this consists of ", "source code", " or more commonly ", "bytecode", " translation to ", "machine code", ", which is then executed directly. A system implementing a JIT compiler typically continuously analyses the code being executed and identifies parts of the code where the speedup gained from compilation or recompilation would outweigh the overhead of compiling that code.", "\n", "JIT compilation is a combination of the two traditional approaches to translation to machine code \u2013 ", "ahead-of-time compilation", " (AOT), and ", "interpretation", " \u2013 and combines some advantages and drawbacks of both.", "[1]", " Roughly, JIT compilation combines the speed of compiled code with the flexibility of interpretation, with the overhead of an interpreter and the additional overhead of compiling (not just interpreting). JIT compilation is a form of ", "dynamic compilation", ", and allows ", "adaptive optimization", " such as ", "dynamic recompilation", " \u2013 thus in theory JIT compilation can yield faster execution than static compilation. Interpretation and JIT compilation are particularly suited for ", "dynamic programming languages", ", as the runtime system can handle ", "late-bound", " data types and enforce security guarantees.", "\n", "\n", "\n", "\n", "Contents", "\n", "\n", "\n", "1", " ", "Applications", "\n", "2", " ", "Overview", "\n", "3", " ", "Startup delay and optimizations", "\n", "4", " ", "History", "\n", "5", " ", "Security", "\n", "6", " ", "See also", "\n", "7", " ", "References", "\n", "8", " ", "External links", "\n", "\n", "\n", "\n", "Applications", "[", "edit", "]", "\n", "JIT compilation can be applied to some programs, or can be used for certain capacities, particularly dynamic capacities such as ", "regular expressions", ". For example, a text editor may compile a regular expression provided at runtime to machine code to allow faster matching \u2013 this cannot be done ahead of time, as the pattern is only provided at runtime. Several modern ", "runtime environments", " rely on JIT compilation for high-speed code execution, including most implementations of ", "Java", ", together with ", "Microsoft", "'s ", ".NET Framework", ". Similarly, many regular expression libraries feature JIT compilation of regular expressions, either to bytecode or to machine code. JIT compilation is also used in some emulators, in order to translate machine code from one CPU architecture to another.", "\n", "A common implementation of JIT compilation is to first have AOT compilation to bytecode (", "virtual machine", " code), known as ", "bytecode compilation", ", and then have JIT compilation to machine code (dynamic compilation), rather than interpretation of the bytecode. This improves the runtime performance compared to interpretation, at the cost of lag due to compilation. JIT compilers translate continuously, as with interpreters, but caching of compiled code minimizes lag on future execution of the same code during a given run. Since only part of the program is compiled, there is significantly less lag than if the entire program were compiled prior to execution.", "\n", "Overview", "[", "edit", "]", "\n", "In a bytecode-compiled system, ", "source code", " is translated to an intermediate representation known as ", "bytecode", ". Bytecode is not the machine code for any particular computer, and may be portable among computer architectures. The bytecode may then be interpreted by, or run on a ", "virtual machine", ". The JIT compiler reads the bytecodes in many sections (or in full, rarely) and compiles them dynamically into machine code so the program can run faster. This can be done per-file, per-function or even on any arbitrary code fragment; the code can be compiled when it is about to be executed (hence the name \"just-in-time\"), and then cached and reused later without needing to be recompiled.", "\n", "In contrast, a traditional ", "interpreted virtual machine", " will simply interpret the bytecode, generally with much lower performance. Some ", "interpreter", "s even interpret source code, without the step of first compiling to bytecode, with even worse performance. ", "Statically compiled code", " or ", "native code", " is compiled prior to deployment. A ", "dynamic compilation environment", " is one in which the compiler can be used during execution. A common goal of using JIT techniques is to reach or surpass the performance of static compilation, while maintaining the advantages of bytecode interpretation: Much of the \"heavy lifting\" of parsing the original source code and performing basic optimization is often handled at compile time, prior to deployment: compilation from bytecode to machine code is much faster than compiling from source. The deployed bytecode is portable, unlike native code. Since the runtime has control over the compilation, like interpreted bytecode, it can run in a secure sandbox. Compilers from bytecode to machine code are easier to write, because the portable bytecode compiler has already done much of the work.", "\n", "JIT code generally offers far better performance than interpreters. In addition, it can in some cases offer better performance than static compilation, as many optimizations are only feasible at run-time:", "[2]", "[3]", "\n", "\n", "The compilation can be optimized to the targeted CPU and the operating system model where the application runs. For example, JIT can choose ", "SSE2", " vector CPU instructions when it detects that the CPU supports them. However, there is currently no mainstream JIT that implements this. To obtain this level of optimization specificity with a static compiler, one must either compile a binary for each intended platform/architecture, or else include multiple versions of portions of the code within a single binary.", "\n", "The system is able to collect statistics about how the program is actually running in the environment it is in, and it can rearrange and recompile for optimum performance. However, some static compilers can also take profile information as input.", "\n", "The system can do global code optimizations (e.g. ", "inlining", " of library functions) without losing the advantages of dynamic linking and without the overheads inherent to static compilers and linkers. Specifically, when doing global inline substitutions, a static compilation process may need run-time checks and ensure that a virtual call would occur if the actual class of the object overrides the inlined method, and boundary condition checks on array accesses may need to be processed within loops. With just-in-time compilation in many cases this processing can be moved out of loops, often giving large increases of speed.", "\n", "Although this is possible with statically compiled garbage collected languages, a bytecode system can more easily rearrange executed code for better cache utilization.", "\n", "\n", "Startup delay and optimizations", "[", "edit", "]", "\n", "JIT causes a slight delay to a noticeable delay in initial execution of an application, due to the time taken to load and compile the bytecode. Sometimes this delay is called \"startup time delay\". In general, the more optimization JIT performs, the better the code it will generate, but the initial delay will also increase. A JIT compiler therefore has to make a trade-off between the compilation time and the quality of the code it hopes to generate. However, it seems that much of the startup time is sometimes due to IO-bound operations rather than JIT compilation (for example, the ", "rt.jar", " class data file for the ", "Java Virtual Machine", " (JVM) is 40 MB and the JVM must seek a lot of data in this contextually huge file).", "[4]", "\n", "One possible optimization, used by Sun's ", "HotSpot", " Java Virtual Machine, is to combine interpretation and JIT compilation. The application code is initially interpreted, but the JVM monitors which sequences of ", "bytecode", " are frequently executed and translates them to machine code for direct execution on the hardware. For bytecode which is executed only a few times, this saves the compilation time and reduces the initial latency; for frequently executed bytecode, JIT compilation is used to run at high speed, after an initial phase of slow interpretation. Additionally, since a program spends most time executing a minority of its code, the reduced compilation time is significant. Finally, during the initial code interpretation, execution statistics can be collected before compilation, which helps to perform better optimization.", "[5]", "\n", "The correct tradeoff can vary due to circumstances. For example, Sun's Java Virtual Machine has two major modes\u2014client and server. In client mode, minimal compilation and optimization is performed, to reduce startup time. In server mode, extensive compilation and optimization is performed, to maximize performance once the application is running by sacrificing startup time. Other Java just-in-time compilers have used a runtime measurement of the number of times a method has executed combined with the bytecode size of a method as a heuristic to decide when to compile.", "[6]", " Still another uses the number of times executed combined with the detection of loops.", "[7]", " In general, it is much harder to accurately predict which methods to optimize in short-running applications than in long-running ones.", "[8]", "\n", "Native Image Generator", " (Ngen) by ", "Microsoft", " is another approach at reducing the initial delay.", "[9]", " Ngen pre-compiles (or \"pre-JITs\") bytecode in a ", "Common Intermediate Language", " image into machine native code. As a result, no runtime compilation is needed. ", ".NET framework", " 2.0 shipped with ", "Visual Studio 2005", " runs Ngen on all of the Microsoft library DLLs right after the installation. Pre-jitting provides a way to improve the startup time. However, the quality of code it generates might not be as good as the one that is JITed, for the same reasons why code compiled statically, without ", "profile-guided optimization", ", cannot be as good as JIT compiled code in the extreme case: the lack of profiling data to drive, for instance, inline caching.", "[10]", "\n", "There also exist Java implementations that combine an ", "AOT (ahead-of-time) compiler", " with either a JIT compiler (", "Excelsior JET", ") or interpreter (", "GNU Compiler for Java", ").", "\n", "History", "[", "edit", "]", "\n", "The earliest published JIT compiler is generally attributed to work on ", "LISP", " by ", "John McCarthy", " in 1960.", "[11]", " In his seminal paper ", "Recursive functions of symbolic expressions and their computation by machine, Part I", ", he mentions functions that are translated during runtime, thereby sparing the need to save the compiler output to ", "punch cards", "[12]", " (although this would be more accurately known as a \"", "Compile and go system", "\"). Another early example was by ", "Ken Thompson", ", who in 1968 gave one of the first applications of ", "regular expressions", ", here for ", "pattern matching", " in the text editor ", "QED", ".", "[13]", " For speed, Thompson implemented regular expression matching by JITing to ", "IBM 7094", " code on the ", "Compatible Time-Sharing System", ".", "[11]", " An influential technique for deriving compiled code from interpretation was pioneered by Mitchell in 1970, which he implemented for the experimental language ", "LC\u00b2", ".", "[14]", "[15]", "\n", "Smalltalk", " (c. 1983) pioneered new aspects of JIT compilations. For example, translation to machine code was done on demand, and the result was cached for later use. When memory became scarce, the system would delete some of this code and regenerate it when it was needed again.", "[1]", "[16]", " Sun's ", "Self", " language improved these techniques extensively and was at one point the fastest Smalltalk system in the world; achieving up to half the speed of optimized C", "[17]", " but with a fully object-oriented language.", "\n", "Self was abandoned by Sun, but the research went into the Java language. The term \"Just-in-time compilation\" was borrowed from the manufacturing term \"", "Just in time", "\" and popularized by Java, with James Gosling using the term from 1993.", "[18]", " Currently JITing is used by most implementations of the ", "Java Virtual Machine", ", as ", "HotSpot", " builds on, and extensively uses, this research base.", "\n", "The HP project Dynamo", "[19]", " was an experimental JIT compiler where the 'bytecode' format and the machine code format were the same; the system turned PA-6000 machine code into ", "PA-8000", " machine code. Counterintuitively, this resulted in speed ups, in some cases of 30% since doing this permitted optimizations at the machine code level, for example, inlining code for better cache usage and optimizations of calls to dynamic libraries and many other run-time optimizations which conventional compilers are not able to attempt.", "[20]", "[21]", "\n", "Security", "[", "edit", "]", "\n", "JIT compilation fundamentally uses executable data, and thus poses security challenges and possible exploits.", "\n", "Implementation of JIT compilation consists of compiling source code or byte code to machine code and executing it. This is generally done directly in memory \u2013 the JIT compiler outputs the machine code directly into memory and immediately executes it, rather than outputting it to disk and then invoking the code as a separate program, as in usual ahead of time compilation. In modern architectures this runs into a problem due to ", "executable space protection", " \u2013 arbitrary memory cannot be executed, as otherwise there is a potential security hole. Thus memory must be marked as executable; for security reasons this should be done ", "after", " the code has been written to memory, and marked read-only, as writable/executable memory is a security hole (see ", "W^X", ").", "[22]", " For instance Firefox's JIT compiler for Javascript introduced this protection in a release version with Firefox 46", "[23]", "\n", "JIT spraying", " is a class of ", "computer security exploits", " that use JIT compilation for ", "heap spraying", " \u2013 the resulting memory is then executable, which allows an exploit if execution can be moved into the heap.", "\n", "See also", "[", "edit", "]", "\n", "\n", "\n", "Java portal", "\n", "\n", "\n", "\n", "Binary translation", "\n", "HotSpot", "\n", "Common Language Runtime", "\n", "Crusoe", ", a microprocessor that essentially performs just-in-time compilation from x86 code to microcode within the microprocessor", "\n", "GNU lightning", " \u2014 A library that generates assembly language code at run-time", "\n", "LLVM", "\n", "Self-modifying code", "\n", "Tracing just-in-time compilation", "\n", "Dynamic compilation", "\n", "\n", "References", "[", "edit", "]", "\n", "\n", "\n", "^ ", "a", " ", "b", " ", "c", " ", "Aycock 2003", ".", "\n", "^", " ", "Croce, Louis. ", "\"Just in Time Compilation\"", " ", "(PDF)", ". ", "Columbia University", ".", "\u00a0", "\n", "^", " ", "\"What are the advantages of JIT vs. AOT compilation\"", ". ", "Stack Overflow", ". Jan 21, 2010.", "\u00a0", "\n", "^", " ", "Haase, Chet (May 2007). ", "\"Consumer JRE: Leaner, Meaner Java Technology\"", ". Sun Microsystems", ". Retrieved ", "2007-07-27", ". ", "At the OS level, all of these megabytes have to be read from disk, which is a very slow operation. Actually, it's the seek time of the disk that's the killer; reading large files sequentially is relatively fast, but seeking the bits that we actually need is not. So even though we only need a small fraction of the data in these large files for any particular application, the fact that we're seeking all over within the files means that there is plenty of disk activity.", " ", "\u00a0", "\n", "^", " ", "\"The Java HotSpot Performance Engine Architecture\"", ". Oracle.com", ". Retrieved ", "2013-07-05", ".", "\u00a0", "\n", "^", " ", "Schilling, Jonathan L. (February 2003). ", "\"The simplest heuristics may be the best in Java JIT compilers\"", " ", "(PDF)", ". ", "SIGPLAN Notices", ". ", "38", " (2): 36\u201346. ", "doi", ":", "10.1145/772970.772975", ". Archived from ", "the original", " ", "(PDF)", " on 2015-09-24.", "\u00a0", "\n", "^", " ", "Toshio Suganuma, Toshiaki Yasue, Motohiro Kawahito, Hideaki Komatsu, Toshio Nakatani, \"A dynamic optimization framework for a Java just-in-time compiler\", ", "Proceedings of the 16th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications", " (OOPSLA '01), pp. 180\u2013195, October 14\u201318, 2001.", "\n", "^", " ", "Matthew Arnold, Michael Hind, Barbara G. Ryder, \"An Empirical Study of Selective Optimization\", ", "Proceedings of the 13th International Workshop on Languages and Compilers for Parallel Computing-Revised Papers", ", pp. 49\u201367, August 10\u201312, 2000.", "\n", "^", " ", "\"Native Image Generator (Ngen.exe)\"", ". Msdn2.microsoft.com", ". Retrieved ", "2013-07-05", ".", "\u00a0", "\n", "^", " ", "Matthew R. Arnold, Stephen Fink, David P. Grove, Michael Hind, and Peter F. Sweeney, \"", "A Survey of Adaptive Optimization in Virtual Machines", "\", ", "Proceedings of the IEEE", ", 92(2), February 2005, pp. 449\u2013466.", "\n", "^ ", "a", " ", "b", " ", "Aycock 2003", ", 2. JIT Compilation Techniques, 2.1 Genesis, p. 98.", "\n", "^", " ", "McCarthy, J.", " (April 1960). \"Recursive functions of symbolic expressions and their computation by machine, Part I\". ", "Communications of the ACM", ". ", "3", " (4): 184\u2013195. ", "CiteSeerX", "\u00a0", "10.1.1.111.8833", "\u202f", ". ", "doi", ":", "10.1145/367177.367199", ".", "\u00a0", "\n", "^", " ", "Thompson 1968", ".", "\n", "^", " ", "Aycock 2003", ", 2. JIT Compilation Techniques, 2.2 LC\u00b2, p. 98\u201399.", "\n", "^", " ", "Mitchell, J.G. (1970). \"The design and construction of flexible and efficient interactive programming systems\".", "\u00a0", "\n", "^", " ", "Deutsch, L.P.; Schiffman, A.M. (1984). ", "\"Efficient implementation of the Smalltalk-80 system\"", " ", "(PDF)", ". ", "POPL '84: Proceedings of the 11th ACM SIGACT-SIGPLAN ", "Symposium on Principles of Programming Languages", ": 297\u2013302. ", "doi", ":", "10.1145/800017.800542", ". ", "ISBN", "\u00a0", "0-89791-125-3", ". Archived from ", "the original", " ", "(PDF)", " on 2004-06-18.", "\u00a0", "\n", "^", " ", "[1]", " ", "Archived", " November 24, 2006, at the ", "Wayback Machine", ".", "\n", "^", " ", "Aycock, 2003 & 2.14 Java, p. 107, footnote 13", ".", "\n", "^", " ", "\"Dynamo: A Transparent Dynamic Optimization System\"", " Vasanth Bala, Evelyn Duesterwald, Sanjeev Banerjia - PLDI '00 Proceedings of the ACM SIGPLAN 2000 conference on Programming language design and implementation - pages 1 to 12 - ", "doi", ":", "10.1145/349299.349303", ". Retrieved March 28, 2012", "\n", "^", " ", "John Jannotti. ", "\"HP's Dynamo - Page 1 - (3/2000)\"", ". Ars Technica", ". Retrieved ", "2013-07-05", ".", "\u00a0", "\n", "^", " ", "\"The HP Dynamo Project\"", ". Archived from the original on October 19, 2002", ". Retrieved ", "2016-04-12", ".", "\u00a0", "CS1 maint: Unfit url (", "link", ")", "\n", "^", " ", "\"", "How to JIT \u2013 an introduction", "\", Eli Bendersky, November 5th, 2013 at 5:59 am", "\n", "^", " ", "De Mooij, Jan. ", "\"W^X JIT-code enabled in Firefox\"", ". ", "Jan De Mooij", ". Retrieved ", "11 May", " 2016", ".", "\u00a0", "\n", "\n", "\n", "\n", "\n", "Aycock, J. (June 2003). \"A brief history of just-in-time\". ", "ACM Computing Surveys", ". ", "35", " (2): 97\u2013113. ", "CiteSeerX", "\u00a0", "10.1.1.97.3985", "\u202f", ". ", "doi", ":", "10.1145/857076.857077", ".", "\u00a0", "\n", "Thompson, K.", " (1968). \"Programming Techniques: Regular expression search algorithm\". ", "Communications of the ACM", ". ", "11", " (6): 419\u2013422. ", "doi", ":", "10.1145/363347.363387", ".", "\u00a0", "\n", "\n", "\n", "External links", "[", "edit", "]", "\n", "\n", "What is Microsoft Just In Time Compiler", "\n", "Free Online Dictionary of Computing entry", "\n", "libJIT", " \u2014 A library by Rhys Weatherley, Klaus Treichel, Aleksey Demakov, and Kirill Kononenko for development of Just-In-Time compilers in Virtual Machine implementations, Dynamic programming languages and Scripting languages.", "\n", "MyJIT", ", a small, simple (300KB source, 360kB object file) for i386, AMD64, and SPARC.", "\n", "Mozilla Nanojit", " \u2014 A small, cross-platform C++ library that emits machine code. It is used as the JIT for the Mozilla ", "Tamarin", " and ", "SpiderMonkey", " Javascript engines.", "\n", "SoftWire", " \u2014 A library by Nicolas Capens that generates assembly language code at run-time (", "thesis", ")", "\n", "CCG", " by Ian Piumarta", "\n", "Dyninst", "\n", "JatoVM", ", a Java JIT-only VM", "\n", "OVPsim", ", an embedded core JIT tools that converts ARM, MIPS, and other ISA instructions to x86 for execution/simulation", "\n", "AsmJit", " \u2014 Complete x86/x64 jit assembler library for C++ language by Petr Kobal\u00ed\u010dek", "\n", "Xbyak", " \u2014 A x86/x64 JIT assembler for C++ language by Herumi", "\n", "sljit", " \u2014 A platform independent assembly language written in C by Zoltan Herczeg. Sljit can generate code for x86, AMD64, ARM, PowerPC, MIPS, and SPARC.", "\n", "Profiling Runtime Generated and Interpreted Code using the VTune Performance Analyzer", "\n", "\n\n\n", "\n", "\n", "\n", "\n"], "lastUpdated": " 26 December 2017, at 07:46."}, +{"title": "Run time (program lifecycle phase)", "text": ["This article is about execution phase in a programming language. For the infrastructure required to run programs, see ", "Runtime system", ".", "\n", "\n", "\n", "Program execution", "\n", "\n", "\n", "General concepts", "\n", "\n", "\n", "\n", "\n", "Code", "\n", "Translation", "\n", "\n", "Compiler", "\n", "Optimizing compiler", "\n", "\n", "\n", "Intermediate representation", " (IR)", "\n", "Execution", "\n", "\n", "Runtime system", "\n", "Executable", "\n", "Interpreter", "\n", "Virtual machine", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "Types of code", "\n", "\n", "\n", "\n", "\n", "Source code", "\n", "Object code", "\n", "Bytecode", "\n", "Machine code", "\n", "Microcode", "\n", "\n", "\n", "\n", "\n", "Compilation strategies", "\n", "\n", "\n", "\n", "\n", "Just-in-time", " (JIT)\n", "\n", "Tracing just-in-time", "\n", "\n", "\n", "Ahead-of-time", " (AOT)", "\n", "Transcompilation", "\n", "Recompilation", "\n", "\n", "\n", "\n", "\n", "Notable runtimes", "\n", "\n", "\n", "\n", "\n", "Android Runtime", " (ART)", "\n", "Common Language Runtime", " (CLR)", "\n", "crt0", "\n", "Java virtual machine", " (JVM)", "\n", "Node.js", "\n", "Zend Engine", "\n", "\n", "\n", "\n", "\n", "Notable compilers & toolchains", "\n", "\n", "\n", "\n", "\n", "GNU Compiler Collection", " (GCC)", "\n", "LLVM", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "v", "\n", "t", "\n", "e", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "This article ", "does not ", "cite", " any ", "sources", ". ", "Please help ", "improve this article", " by ", "adding citations to reliable sources", ". Unsourced material may be challenged and ", "removed", ".", " ", "(May 2012)", " ", "(", "Learn how and when to remove this template message", ")", "\n", "\n", "\n", "\n", "In ", "computer science", ", ", "run time", ", ", "runtime", " or ", "execution time", " is the time during which a program is running (", "executing", "), in contrast to other ", "program lifecycle phases", " such as ", "compile time", ", ", "link time", " and ", "load time", ".", "\n", "A run-time error is detected after or during the execution (running state) of a program, whereas a compile-time error is detected by the ", "compiler", " before the program is ever executed. ", "Type checking", ", ", "register allocation", ", ", "code generation", ", and code optimization are typically done at compile time, but may be done at run time depending on the particular language and compiler.", "\n", "Implementation details", "[", "edit", "]", "\n", "When a program is to be executed, a ", "loader", " first performs the necessary ", "memory", " setup and links the program with any ", "dynamically linked", " ", "libraries", " it needs, and then the execution begins starting from the program's ", "entry point", ". In some cases, a language or implementation will have these tasks done by the language runtime instead, though this is unusual in mainstream languages on common consumer operating systems.", "\n", "Some program debugging can only be performed (or is more efficient or accurate when performed) at runtime. ", "Logic errors", " and ", "array", " bounds checking are examples. For this reason, some programming ", "bugs", " are not discovered until the program is tested in a ", "production environment", " with real data, despite sophisticated compile-time checking and pre-release testing. In this case, the end user may encounter a ", "runtime error", " message.", "\n", "Application errors (exceptions)", "[", "edit", "]", "\n", "Exception handling", " is one language feature designed to handle runtime errors, providing a structured way to catch completely unexpected situations as well as predictable errors or unusual results without the amount of inline error checking required of languages without it. More recent advancements in runtime engines enable ", "automated exception handling", " which provides 'root-cause' debug information for every exception of interest and is implemented independent of the source code, by attaching a special software product to the runtime engine.", "\n", "See also", "[", "edit", "]", "\n", "\n", "\n", "\n", "Look up ", "run time", ", ", "run-time", ", or ", "runtime", " in Wiktionary, the free dictionary.", "\n", "\n", "\n", "\n", "Name binding", "\n", "Compile time", " and ", "compiling", "\n", "Interpreter (computing)", "\n", "Runtime Type Information", "\n", "Run-time system", "\n", "Runtime library", "\n", "\n\n\n", "\n", "\n", "\n", "\n"], "lastUpdated": " 28 April 2017, at 01:48."}, +{"title": "Code reuse", "text": ["Code reuse", ", also called ", "software reuse", ", is the use of existing ", "software", ", or software knowledge, to build new software,", "[1]", " following the ", "reusability principles", ".", "\n", "\n", "\n", "\n", "Contents", "\n", "\n", "\n", "1", " ", "Overview", "\n", "2", " ", "Types of reuse", "\n", "3", " ", "Systematic", "\n", "4", " ", "Examples", "\n", "\n", "4.1", " ", "Software libraries", "\n", "4.2", " ", "Design patterns", "\n", "4.3", " ", "Frameworks", "\n", "4.4", " ", "Higher-order function", "\n", "4.5", " ", "Retrocomputing", "\n", "4.6", " ", "Computer security", "\n", "4.7", " ", "Components", "\n", "4.8", " ", "Outside computers", "\n", "\n", "\n", "5", " ", "Criticism", "\n", "6", " ", "See also", "\n", "7", " ", "References", "\n", "8", " ", "External links", "\n", "\n", "\n", "\n", "Overview", "[", "edit", "]", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "This section ", "needs additional citations for ", "verification", ". ", "Please help ", "improve this article", " by ", "adding citations to reliable sources", ". Unsourced material may be challenged and removed.", " ", "(April 2015)", " ", "(", "Learn how and when to remove this template message", ")", "\n", "\n", "\n", "\n", "Ad hoc", " code reuse has been practiced from the earliest days of ", "programming", ". Programmers have always reused sections of code, templates, functions, and procedures. Software reuse as a recognized area of study in software engineering, however, dates only from 1968 when ", "Douglas McIlroy", " of ", "Bell Laboratories", " proposed basing the software industry on reusable components.", "\n", "Code reuse aims to save time and resources and reduce redundancy by taking advantage of assets that have already been created in some form within the software product development process.", "[2]", " The key idea in reuse is that parts of a ", "computer program", " written at one time can be or should be used in the construction of other programs written at a later time.", "\n", "Code reuse may imply the creation of a separately maintained version of the reusable assets. While code is the most common resource selected for reuse, other assets generated during the development cycle may offer opportunities for reuse: software components, test suites, designs, documentation, and so on.", "[3]", "\n", "The ", "software library", " is a good example of code reuse. Programmers may decide to create internal abstractions so that certain parts of their program can be reused, or may create custom libraries for their own use. Some characteristics that make software more easily reusable are ", "modularity", ", ", "loose coupling", ", high ", "cohesion", ", ", "information hiding", " and ", "separation of concerns", ".", "\n", "For newly written code to use a piece of existing code, some kind of interface, or means of communication, must be defined. These commonly include a \"call\" or use of a ", "subroutine", ", ", "object", ", ", "class", ", or ", "prototype", ". In organizations, such practices are formalized and standardized by ", "domain engineering", ", also known as ", "software product line", " engineering.", "\n", "The general practice of using a prior version of an extant program as a starting point for the next version, is also a form of code reuse.", "\n", "Some so-called code \"reuse\" involves simply copying some or all of the code from an existing program into a new one. While organizations can realize ", "time to market", " benefits for a new product with this approach, they can subsequently be saddled with many of the same ", "code duplication", " problems caused by ", "cut and paste programming", ".", "\n", "Many researchers have worked to make reuse faster, easier, more systematic, and an integral part of the normal process of programming. These are some of the main goals behind the invention of ", "object-oriented programming", ", which became one of the most common forms of formalized reuse. A somewhat later invention is ", "generic programming", ".", "\n", "Another, newer means is to use software \"", "generators", "\", programs which can create new programs of a certain type, based on a set of parameters that users choose. Fields of study about such systems are ", "generative programming", " and ", "metaprogramming", ".", "\n", "Types of reuse", "[", "edit", "]", "\n", "Concerning motivation and driving factors, reuse can be:", "\n", "\n", "Opportunistic \u2013 While getting ready to begin a project, the team realizes that there are existing components that they can reuse.", "\n", "Planned \u2013 A team strategically designs components so that they'll be reusable in future projects.", "\n", "\n", "Reuse can be categorized further:", "\n", "\n", "Internal reuse \u2013 A team reuses its own components. This may be a business decision, since the team may want to control a component critical to the project.", "\n", "External reuse \u2013 A team may choose to license a third-party component. Licensing a third-party component typically costs the team 1 to 20 percent of what it would cost to develop internally.", "[4]", " The team must also consider the time it takes to find, learn and integrate the component.", "\n", "\n", "Concerning form or structure of reuse, code can be:", "[5]", "\n", "\n", "Referenced \u2013 The client code contains a reference to reused code, and thus they have distinct life cycles and can have distinct versions.", "\n", "Forked \u2013 The client code contains a local or private copy of the reused code, and thus they share a single life cycle and a single version.", "\n", "\n", "Fork-reuse is often discouraged because it's a form of code duplication, which requires that every bug is corrected in each copy, and enhancements made to reused code need to be manually merged in every copy or they become out-of-date. However, fork-reuse can have benefits such as isolation, flexibility to change the reused code, easier packaging, deployment and version management.", "[5]", "\n", "Systematic", "[", "edit", "]", "\n", "\n", "\n", "\n", "\n", "This section needs expansion", ". ", "You can help by ", "adding to it", ".", " ", "(April 2015)", "\n", "\n", "\n", "\n", "Systematic software reuse is a strategy for increasing productivity and improving quality of the software industry. Although it is simple in concept, successful software reuse implementation is difficult in practice. A reason put forward for this is the dependence of software reuse on the context in which it is implemented. Some problematic issues that needs to be addressed related to systematic software reuse are:", "[6]", "\n", "\n", "a clear and well-defined product vision is an essential foundation to an ", "SPL", ".", "\n", "an evolutionary implementation strategy would be a more pragmatic strategy for the company.", "\n", "there exist a need for continuous management support and leadership to ensure success.", "\n", "an appropriate organisational structure is needed to support SPL engineering.", "\n", "the change of mindset from a project-centric company to a product-oriented company is essential.", "\n", "\n", "Examples", "[", "edit", "]", "\n", "Software libraries", "[", "edit", "]", "\n", "A very common example of code reuse is the technique of using a ", "software library", ". Many common operations, such as converting information among different well-known formats, accessing external storage, interfacing with external programs, or manipulating information (numbers, words, names, locations, dates, etc.) in common ways, are needed by many different programs. Authors of new programs can use the code in a software library to perform these tasks, instead of \"re-inventing the wheel\", by writing fully new code directly in a program to perform an operation. Library implementations often have the benefit of being well-tested, and covering unusual or arcane cases. Disadvantages include the inability to tweak details which may affect performance or the desired output, and the time and cost of acquiring, learning, and configuring the library.", "[7]", "\n", "Design patterns", "[", "edit", "]", "\n", "Main article: ", "Design pattern (computer science)", "\n", "A design pattern is a general solution to a recurring problem. Design patterns are more conceptual than tangible and can be modified to fit the exact need. However, abstract classes and interfaces can be reused to implement certain patterns.", "\n", "Frameworks", "[", "edit", "]", "\n", "Main article: ", "Software framework", "\n", "Developers generally reuse large pieces of software via third-party applications and frameworks. Though frameworks are usually domain-specific and applicable only to families of applications", "[", "citation needed", "]", ".", "\n", "Higher-order function", "[", "edit", "]", "\n", "Main article: ", "Higher-order function", "\n", "In ", "functional programming", " higher-order functions can be used in many cases where design patterns or frameworks were formerly used.", "\n", "Retrocomputing", "[", "edit", "]", "\n", "Retrocomputing", " encompasses reuse of code, simply because retro programs are being run on older computers, or ", "emulators", " for them.", "\n", "Computer security", "[", "edit", "]", "\n", "In ", "computer security", " code-reuse is employed as a software exploit method.", "[8]", " When an attacker is not able to directly input code to modify the control flow of a program, for example in presence of code injection defenses such as ", "W\u2295X", ", he or she can redirect the control flow to code sequences existing in memory.", "\n", "Examples of code-reuse attacks are ", "return-to-libc attack", ", ", "return-oriented programming", ", and jump-oriented programming.", "[8]", "[9]", "\n", "Components", "[", "edit", "]", "\n", "Main article: ", "Software component", "\n", "A component, in an object-oriented extent, represents a set of collaborative classes (or only one class) and its interfaces. The interfaces are responsible for enabling the replacement of components. Reusable components can also be isolated and synchronized between SCM repositories using component source code management technologies (", "CSCM", ").", "\n", "Outside computers", "[", "edit", "]", "\n", "The whole concept of \"code reuse\" can also encompass engineering applications outside software. For instance, ", "parametric modeling", " in ", "computer-aided design", " allows for creating reusable designs. ", "Standardization", " results in creation of interoperable parts that can be then reused in many contexts.", "[", "citation needed", "]", "\n", "Criticism", "[", "edit", "]", "\n", "Code reuse results in ", "dependency", " on the component being reused. Rob Pike opined that \"A little copying is better than a little dependency\". When he joined Google, the company was putting heavy emphasis on code reuse. He believes that Google's ", "codebase", " still suffers from results of that former policy in terms of compilation speed and maintainability.", "[10]", "\n", "See also", "[", "edit", "]", "\n", "\n", "Don't repeat yourself", "\n", "ICSR", "\n", "Inheritance", "\n", "Language binding", "\n", "Not invented here", " (", "antonym", ")", "\n", "Polymorphism", "\n", "Procedural programming", "\n", "Reinventing the wheel", " (", "antonym", ")", "\n", "Reusability", "\n", "Reuse metrics", "\n", "Single source of truth", "\n", "Software framework", "\n", "Virtual inheritance", "\n", "\n", "References", "[", "edit", "]", "\n", "\n", "\n", "^", " ", "Frakes, W.B.; Kyo Kang (July 2005). ", "\"Software Reuse Research: Status and Future\"", " ", "(PDF)", ". ", "IEEE Transactions on Software Engineering", ". ", "31", " (7): 529\u2013536. ", "doi", ":", "10.1109/TSE.2005.85", ".", "\u00a0", "\n", "^", " ", "Lombard Hill Group. ", "\"What Is Software Reuse?\"", ". ", "lombardhill.com", ". Lombard Hill Group", ". Retrieved ", "22 October", " 2014", ".", "\u00a0", "\n", "^", " ", "Lombard Hill Group. ", "\"What Is Software Reuse?\"", ". Retrieved ", "22 October", " 2014", ".", "\u00a0", "\n", "^", " ", "McConnell, Steve (1996). ", "Rapid Development: Taming Wild Software Schedules", ". ", "ISBN", "\u00a0", "978-1-55615-900-8", ".", "\u00a0", "\n", "^ ", "a", " ", "b", " ", "Colombo, F. (2011). ", "\"It's not just reuse\"", ". ", "SharedNow.blogspot", ".", "\u00a0", "\n", "^", " ", "Champman, M.; Van der Merwe, Alta (2008). ", "\"Contemplating Systematic Software Reuse in a Small Project-centric Company\"", ". ", "Proceeding SAICSIT '08 Proceedings of the 2008 annual research conference of the South African Institute of Computer Scientists and Information Technologists on IT research in developing countries: riding the wave of technology", ". ", "doi", ":", "10.1145/1456659.1456662", ". ", "ISBN", "\u00a0", "978-1-60558-286-3", ".", "\u00a0", "\n", "^", " ", "\"Code reuse\"", ". ", "DocForge", ". Archived from ", "the original", " on 2011-07-10", ". Retrieved ", "19 January", " 2018", ".", "\u00a0", "\n", "^ ", "a", " ", "b", " ", "Bletsch, Tyler (2011). ", "\"Code-reuse Attacks: New Frontiers and Defenses\"", ". North Carolina State University. ", "ISBN", "\u00a0", "978-1-124-75297-6", ".", "\u00a0", "\n", "^", " ", "Bletsch, Tyler; Jiang, Xuxian; Freeh, Vince W; Liang, Zhenkai (2011). ", "\"Jump-oriented programming: a new class of code-reuse attack\"", " ", "(PDF)", ". ", "Proceedings of the 6th ACM Symposium on Information, Computer and Communications Security", ". ACM. pp.\u00a030\u201340. ", "doi", ":", "10.1145/1966913.1966919", ". ", "ISBN", "\u00a0", "978-1-4503-0564-8", ".", "\u00a0", "\n", "^", " ", "The Go Programming Language (2015-12-01), ", "Go Proverbs \u2013 Rob Pike \u2013 Gopherfest \u2013 November 18, 2015", ", retrieved ", "26 February", " 2016", "\u00a0", "\n", "\n", "\n", "External links", "[", "edit", "]", "\n", "\n", "ReNews \u2013 an information site about software reuse and domain engineering", "\n", "Software Reuse Tips Article", "\n", "\n\n\n", "\n", "\n", "\n", "\n"], "lastUpdated": " 7 December 2017, at 10:15."}, +{"title": "Zip (file format)", "text": ["For other uses, see ", "Zip", ".", "\n", "\n", "ZIP file format", "\n", "\n", "Filename extensions", "\n", ".zip", ", ", ".zipx", "\u00a0(newer compression algorithms)", "\n", "\n", "\n", "Internet media\u00a0type", "\n", "application/zip", "[1]", "\n", "\n", "\n", "Uniform Type Identifier\u00a0(UTI)", "\n", "com.pkware.zip-archive", "\n", "\n", "\n", "Magic number", "\n", "\n", "\n", "\n", "none", "\n", "PK\\x03\\x04", "\n", "PK\\x05\\x06", " (empty)", "\n", "PK\\x07\\x08", " (spanned)", "\n", "\n", "\n", "\n", "\n", "\n", "Developed\u00a0by", "\n", "Phil Katz", ", ", "PKWARE, Inc.", "\n", "\n", "\n", "Initial release", "\n", "1989", "\n", "\n", "\n", "Latest release", "\n", "\n", "6.3.4", "\n", "(1\u00a0October 2014", "; 3 years ago", "\u00a0(", "2014-10-01", ")", ")", "\n", "\n", "\n", "\n", "Type of format", "\n", "Data compression", "\n", "\n", "\n", "Extended\u00a0to", "\n", "JAR", " ", "(", "EAR", ", ", "RAR (Java)", ", ", "WAR", ")", "\n", "Office Open XML", " (Microsoft)", "\n", "Open Packaging Conventions", "\n", "OpenDocument", " (ODF)", "\n", "XPI", " (Mozilla extensions)", "\n", "\n", "\n", "Standard", "\n", "\n", "APPNOTE", " from PKWARE", "\n", "ISO/IEC 21320-1:2015 (a subset of ZIP file format 6.3.3)", "\n", "\n", "\n", "Open format", "?", "\n", "Yes", "\n", "\n", "\n", "ZIP", " is an ", "archive file format", " that supports ", "lossless data compression", ". A .ZIP file may contain one or more files or directories that may have been compressed. The .ZIP file format permits a number of compression ", "algorithms", ", though ", "DEFLATE", " is the most common. This format was originally created in 1989 by ", "Phil Katz", ", and was first implemented in ", "PKWARE, Inc.", "'s ", "PKZIP", " utility,", "[2]", " as a replacement for the previous ", "ARC", " compression format by Thom Henderson. The .ZIP format is now supported by many software utilities other than PKZIP. Microsoft has included built-in .ZIP support (under the name \"compressed folders\") in versions of ", "Microsoft Windows", " since 1998. Apple has included built-in .ZIP support in ", "Mac\u00a0OS\u00a0X", " 10.3 (via BOMArchiveHelper, now ", "Archive Utility", ") and later. Most ", "free operating systems", " have built in support for .ZIP in similar manners to Windows and Mac OS X.", "\n", ".ZIP files generally use the ", "file extensions", " \".zip\" or \".ZIP\" and the ", "MIME", " media type ", "application/zip", ".", "[1]", " ZIP is used as a base file format by many programs, usually under a different name. When navigating a file system via a user interface, graphical ", "icons", " representing .ZIP files often appear as a document or other object prominently featuring a ", "zipper", ".", "\n", "\n", "\n", "\n", "Contents", "\n", "\n", "\n", "1", " ", "History", "\n", "\n", "1.1", " ", "Version history", "\n", "1.2", " ", "Standardization", "\n", "\n", "\n", "2", " ", "Design", "\n", "\n", "2.1", " ", "Structure", "\n", "2.2", " ", "File headers", "\n", "2.3", " ", "Compression methods", "\n", "2.4", " ", "Encryption", "\n", "2.5", " ", "ZIP64", "\n", "2.6", " ", "Combination with other file formats", "\n", "2.7", " ", "Limits", "\n", "2.8", " ", "Proprietary extensions", "\n", "\n", "2.8.1", " ", "Extra field", "\n", "2.8.2", " ", "Strong encryption controversy", "\n", "\n", "\n", "\n", "\n", "3", " ", "Implementation", "\n", "4", " ", "Legacy", "\n", "5", " ", "See also", "\n", "6", " ", "References", "\n", "7", " ", "External links", "\n", "\n", "\n", "\n", "History", "[", "edit", "]", "\n", "The .ZIP file format was created by ", "Phil Katz", " of ", "PKWARE", "[3]", " and Gary Conway of IDC (Infinity Design Concepts, Inc). They created the format after PKWARE had a ", "lawsuit", " filed against them by Systems Enhancement Associates (SEA) claiming that his archiving products were derivatives of SEA's ", "ARC", " archiving system. SEA also threatened to sue Gary Conway and IDC for the same reasons, but then they found that SEA's work was actually a derivative of IDC's work and several others and opted not to proceed with the lawsuit. The name \"zip\" (meaning \"move at high speed\") was suggested by Katz's friend, Robert Mahoney. They wanted to imply that their product would be faster than ", "ARC", " and other compression formats of the time. The earliest known version of ", ".ZIP File Format Specification", " was first published as part of ", "PKZIP", " 0.9 package under the file APPNOTE.TXT in 1989.", "\n", "The .ZIP file format was released into the ", "public domain", " in 1989.", "[4]", "[5]", "[6]", "[7]", "[8]", "\n", "Version history", "[", "edit", "]", "\n", "The .ZIP File Format Specification has its own version number, which does not necessarily correspond to the version numbers for the PKZIP tool, especially with PKZIP 6 or later. At various times, PKWARE has added preliminary features that allow PKZIP products to extract archives using advanced features, but PKZIP products that create such archives are not made available until the next major release. Other companies or organizations support the PKWARE specifications at their own pace.", "\n", "The .ZIP file format specification is formally named \"APPNOTE - .ZIP File Format Specification\" and it is published on the PKWARE.com website since the late 1990s.", "[9]", " Several versions of the specification were not published. Specifications of some features such as ", "BZIP2", " compression, strong encryption specification and others were published by PKWARE a few years after their creation. The URL of the online specification was changed several times on the PKWARE website.", "\n", "A summary of key advances in various versions of the PKWARE specification:", "\n", "\n", "2.0: (1993)", "[1]", " File entries can be compressed with ", "DEFLATE", " and use traditional PKWARE encryption.", "\n", "2.1: (1996) Deflate64 compression", "\n", "4.5: (2001)", "[10]", " Documented 64-bit zip format.", "\n", "4.6: (2001) BZIP2 compression (not published online until the publication of APPNOTE 5.2)", "\n", "5.0: (2002) ", "DES", ", ", "Triple DES", ", ", "RC2", ", ", "RC4", " supported for encryption (not published online until the publication of APPNOTE 5.2)", "\n", "5.2: (2003)", "[11]", "[12]", " AES encryption support (defined in APPNOTE 5.1 that was not published online), corrected version of RC2-64 supported for encryption.", "\n", "6.1: (2004)", "[13]", " Documented certificate storage.", "\n", "6.2.0: (2004)", "[14]", " Documented Central Directory Encryption.", "\n", "6.3.0: (2006)", "[15]", " Documented Unicode (", "UTF-8", ") filename storage. Expanded list of supported hash, compression (", "LZMA", ", ", "PPMd+", "), encryption algorithms.", "\n", "6.3.1: (2007)", "[16]", " Corrected standard hash values for SHA-256/384/512.", "\n", "6.3.2: (2007)", "[17]", " Documented compression method 97 (", "WavPack", ").", "\n", "6.3.3: (2012)", "[18]", " Document formatting changes to facilitate referencing the PKWARE Application Note from other standards using methods such as the JTC 1 Referencing Explanatory Report (RER) as directed by JTC 1/SC 34 N 1621.", "\n", "6.3.4: (2014)", "[19]", " Updates the PKWARE, Inc. office address.", "\n", "\n", "WinZip", ", starting with version 12.1, uses the extension ", ".zipx", " for .ZIP files that use compression methods newer than DEFLATE; specifically, methods BZip, LZMA, PPMd, Jpeg and Wavpack. The last 2 are applied to appropriate file types when \"Best method\" compression is selected.", "[20]", "[21]", "\n", "Standardization", "[", "edit", "]", "\n", "In April 2010, ", "ISO/IEC JTC 1", " initiated a ballot to determine whether a project should be initiated to create an ISO/IEC International Standard format compatible with .ZIP.", "[22]", " The proposed project, entitled ", "Document Packaging", ", envisaged a .ZIP-compatible 'minimal compressed archive format' suitable for use with a number of existing standards including ", "OpenDocument", ", ", "Office Open XML", " and ", "EPUB", ".", "\n", "In 2015, ISO/IEC 21320-1 \"Document Container File \u2014 Part 1: Core\" was published which states that that \"Document container files are conforming Zip files\".", "[23]", "\n", "ISO/IEC 21320-1:2015 requires the following main restrictions of the ZIP file format:", "\n", "\n", "Files in ZIP archives may only be stored uncompressed, or using the \"deflate\" compression (i.e. compression method may contain the value \"0\" - stored or \"8\" - deflated).", "\n", "The encryption features are prohibited.", "\n", "The digital signature features are prohibited.", "\n", "The \"patched data\" features are prohibited.", "\n", "Archives may not span multiple volumes or be segmented.", "\n", "\n", "Design", "[", "edit", "]", "\n", ".ZIP files are archives that store multiple files. .ZIP allows contained files to be compressed using many different methods, as well as simply storing a file without compressing it. Each file is stored separately, allowing different files in the same archive to be compressed using different methods. Because the files in a .ZIP archive are compressed individually it is possible to extract them, or add new ones, without applying compression or decompression to the entire archive. This contrasts with the format of compressed ", "tar", " files, for which such random-access processing is not easily possible.", "\n", "A directory is placed at the end of a .ZIP file. This identifies what files are in the .ZIP and identifies where in the .ZIP that file is located. This allows .ZIP readers to load the list of files without reading the entire .ZIP archive. .ZIP archives can also include extra data that is not related to the .ZIP archive. This allows for a .ZIP archive to be made into a self-extracting archive (application that decompresses its contained data), by prepending the program code to a .ZIP archive and marking the file as executable. Storing the catalog at the end also makes possible hiding a zipped file by appending it to an innocuous file, such as a GIF image file.", "\n", "The .ZIP format uses a 32-bit CRC algorithm and includes two copies of the directory structure of the archive to provide greater protection against data loss.", "\n", "Structure", "[", "edit", "]", "\n", "\n", "\n", "\n", "\nZIP-64 Internal Layout", "\n", "\n", "\n", "A .ZIP file is correctly identified by the presence of an ", "end of central directory record", " which is located at the end of the archive structure in order to allow the easy appending of new files. If the end of central directory record indicates a non-empty archive, the name of each file or directory within the archive should be specified in a ", "central directory", " entry, along with other metadata about the entry, and an offset into the .ZIP file, pointing to the actual entry data. This allows a file listing of the archive to be performed relatively quickly, as the entire archive does not have to be read to see the list of files. The entries within the .ZIP file also include this information, for redundancy, in a ", "local file header", ". Because zip files may be appended to, only files specified in the central directory at the end of the file are valid. Scanning a ZIP file for local file headers is invalid (except in the case of corrupted archives), as the central directory may declare that some files have been deleted and other files have been updated.", "\n", "For example, we may start with a .ZIP file that contains files A, B and C. File B is then deleted and C updated. This may be achieved by just appending a new file C to the end of the original ZIP file and adding a new central directory that only lists file A and the new file C. When ZIP was first designed, transferring files by floppy disk was common, yet writing to disks was very time consuming. If you had a large zip file, possibly spanning multiple disks, and only needed to update a few files, rather than reading and re-writing all the files, it would be substantially faster to just read the old central directory, append the new files then append an updated central directory.", "\n", "The order of the file entries in the central directory need not coincide with the order of file entries in the archive.", "\n", "Each entry stored in a ZIP archive is introduced by a ", "local file header", " with information about the file such as the comment, file size and file name, followed by optional \"extra\" data fields, and then the possibly compressed, possibly encrypted file data. The \"Extra\" data fields are the key to the extensibility of the .ZIP format. \"Extra\" fields are exploited to support the ZIP64 format, WinZip-compatible AES encryption, file attributes, and higher-resolution NTFS or Unix file timestamps. Other extensions are possible via the \"Extra\" field. .ZIP tools are required by the specification to ignore Extra fields they do not recognize.", "\n", "The .ZIP format uses specific 4-byte \"signatures\" to denote the various structures in the file. Each file entry is marked by a specific signature. The end of central directory record is indicated with its specific signature, and each entry in the central directory starts with the 4-byte ", "central file header signature", ".", "\n", "There is no BOF or EOF marker in the .ZIP specification. Conventionally the first thing in a .ZIP file is a .ZIP entry, which can be identified easily by its ", "local file header signature", ". However, this is not necessarily the case, as this not required by the .ZIP specification - most notably, a self-extracting archive will begin with an executable file header.", "\n", "Tools that correctly read .ZIP archives must scan for the end of central directory record signature, and then, as appropriate, the other, indicated, central directory records. They must not scan for entries from the top of the ZIP file, because only the central directory specifies where a file chunk starts. Scanning could lead to false positives, as the format does not forbid other data to be between chunks, nor file data streams from containing such signatures. However, tools that attempt to recover data from damaged .ZIP archives will most likely scan the archive for local file header signatures; this is made more difficult by the fact that the compressed size of a file chunk may be stored after the file chunk, making sequential processing difficult.", "\n", "Most of the signatures end with the short integer 0x4b50, which is stored in little-endian ordering. Viewed as an ASCII string this reads \"PK\", the initials of the inventor Phil Katz. Thus, when a .ZIP file is viewed in a text editor the first two bytes of the file are usually \"PK\". (DOS, OS/2 and Windows self-extracting ZIPs have an ", "EXE", " before the ZIP so start with \"MZ\"; self-extracting ZIPs for other operating systems may similarly be preceded by executable code for extracting the archive's content on that platform.)", "\n", "The .ZIP specification also supports spreading archives across multiple filesystem files. Originally intended for storage of large .ZIP files across multiple ", "floppy disks", ", this feature is now used for sending .ZIP archives in parts over email, or over other transports or removable media.", "\n", "The ", "FAT filesystem", " of DOS has a timestamp resolution of only two seconds; .ZIP file records mimic this. As a result, the built-in timestamp resolution of files in a .ZIP archive is only two seconds, though extra fields can be used to store more precise timestamps. The .ZIP format has no notion of ", "time zone", ", so timestamps are only meaningful if it is known what time zone they were created in.", "\n", "In September 2007, PKWARE released a revision of the .ZIP specification providing for the storage of file names using ", "UTF-8", ", finally adding Unicode compatibility to .ZIP.", "[24]", "\n", "File headers", "[", "edit", "]", "\n", "All multi-byte values in the header are stored in ", "little-endian", " byte order. All length fields count the length in bytes.", "\n", "\n", "Local file header", "\n", "\n", "Offset", "\n", "Bytes", "\n", "Description", "[24]", "\n", "\n", "\n", "0", "\n", "4", "\n", "Local file header signature = 0x04034b50 (read as a little-endian number)", "\n", "\n", "\n", "4", "\n", "2", "\n", "Version needed to extract (minimum)", "\n", "\n", "\n", "6", "\n", "2", "\n", "General purpose bit flag", "\n", "\n", "\n", "8", "\n", "2", "\n", "Compression method", "\n", "\n", "\n", "10", "\n", "2", "\n", "File last modification time", "\n", "\n", "\n", "12", "\n", "2", "\n", "File last modification date", "\n", "\n", "\n", "14", "\n", "4", "\n", "CRC-32", "\n", "\n", "\n", "18", "\n", "4", "\n", "Compressed size", "\n", "\n", "\n", "22", "\n", "4", "\n", "Uncompressed size", "\n", "\n", "\n", "26", "\n", "2", "\n", "File name length (", "n", ")", "\n", "\n", "\n", "28", "\n", "2", "\n", "Extra field length (", "m", ")", "\n", "\n", "\n", "30", "\n", "n", "\n", "File name", "\n", "\n", "\n", "30+", "n", "\n", "m", "\n", "Extra field", "\n", "\n", "\n", "The extra field contains a variety of optional data such as OS-specific attributes. It is divided into chunks, each with a 16-bit ID code and a 16-bit length.", "\n", "This is immediately followed by the compressed data.", "\n", "If the bit at offset 3 (0x08) of the general-purpose flags field is set, then the CRC-32 and file sizes are not known when the header is written. The fields in the local header are filled with zero, and the CRC-32 and size are appended in a 12-byte structure (optionally preceded by a 4-byte signature) immediately after the compressed data:", "\n", "\n", "Data descriptor", "\n", "\n", "Offset", "\n", "Bytes", "\n", "Description", "[24]", "\n", "\n", "\n", "0", "\n", "0/4", "\n", "Optional", " data descriptor signature = 0x08074b50", "\n", "\n", "\n", "0/4", "\n", "4", "\n", "CRC-32", "\n", "\n", "\n", "4/8", "\n", "4", "\n", "Compressed size", "\n", "\n", "\n", "8/12", "\n", "4", "\n", "Uncompressed size", "\n", "\n", "\n", "The central directory entry is an expanded form of the local header:", "\n", "\n", "Central directory file header", "\n", "\n", "Offset", "\n", "Bytes", "\n", "Description", "[24]", "\n", "\n", "\n", "0", "\n", "4", "\n", "Central directory file header signature = 0x02014b50", "\n", "\n", "\n", "4", "\n", "2", "\n", "Version made by", "\n", "\n", "\n", "6", "\n", "2", "\n", "Version needed to extract (minimum)", "\n", "\n", "\n", "8", "\n", "2", "\n", "General purpose bit flag", "\n", "\n", "\n", "10", "\n", "2", "\n", "Compression method", "\n", "\n", "\n", "12", "\n", "2", "\n", "File last modification time", "\n", "\n", "\n", "14", "\n", "2", "\n", "File last modification date", "\n", "\n", "\n", "16", "\n", "4", "\n", "CRC-32", "\n", "\n", "\n", "20", "\n", "4", "\n", "Compressed size", "\n", "\n", "\n", "24", "\n", "4", "\n", "Uncompressed size", "\n", "\n", "\n", "28", "\n", "2", "\n", "File name length (", "n", ")", "\n", "\n", "\n", "30", "\n", "2", "\n", "Extra field length (", "m", ")", "\n", "\n", "\n", "32", "\n", "2", "\n", "File comment length (", "k", ")", "\n", "\n", "\n", "34", "\n", "2", "\n", "Disk number where file starts", "\n", "\n", "\n", "36", "\n", "2", "\n", "Internal file attributes", "\n", "\n", "\n", "38", "\n", "4", "\n", "External file attributes", "\n", "\n", "\n", "42", "\n", "4", "\n", "Relative offset of local file header. This is the number of bytes between the start of the first disk on which the file occurs, and the start of the local file header. This allows software reading the central directory to locate the position of the file inside the .ZIP file.", "\n", "\n", "\n", "46", "\n", "n", "\n", "File name", "\n", "\n", "\n", "46+", "n", "\n", "m", "\n", "Extra field", "\n", "\n", "\n", "46+", "n", "+", "m", "\n", "k", "\n", "File comment", "\n", "\n", "\n", "After all the central directory entries comes the end of central directory (EOCD) record, which marks the end of the .ZIP file:", "\n", "\n", "End of central directory record (EOCD)", "\n", "\n", "Offset", "\n", "Bytes", "\n", "Description", "[24]", "\n", "\n", "\n", "0", "\n", "4", "\n", "End of central directory signature = 0x06054b50", "\n", "\n", "\n", "4", "\n", "2", "\n", "Number of this disk", "\n", "\n", "\n", "6", "\n", "2", "\n", "Disk where central directory starts", "\n", "\n", "\n", "8", "\n", "2", "\n", "Number of central directory records on this disk", "\n", "\n", "\n", "10", "\n", "2", "\n", "Total number of central directory records", "\n", "\n", "\n", "12", "\n", "4", "\n", "Size of central directory (bytes)", "\n", "\n", "\n", "16", "\n", "4", "\n", "Offset of start of central directory, relative to start of archive", "\n", "\n", "\n", "20", "\n", "2", "\n", "Comment length (", "n", ")", "\n", "\n", "\n", "22", "\n", "n", "\n", "Comment", "\n", "\n", "\n", "This ordering allows a .ZIP file to be created in one pass, but it is usually decompressed by first reading the central directory at the end.", "\n", "Compression methods", "[", "edit", "]", "\n", "The .ZIP File Format Specification documents the following compression methods: Store (no compression), Shrink, Reduce (levels 1-4), Implode, Deflate, Deflate64, ", "bzip2", ", ", "LZMA", " (EFS), ", "WavPack", ", and ", "PPMd", ". The most commonly used compression method is ", "DEFLATE", ", which is described in IETF ", "RFC 1951", ".", "\n", "Compression methods mentioned, but not documented in detail in the specification include: PKWARE Data Compression Library (DCL) Implode, IBM TERSE, and IBM LZ77 z Architecture (PFS). A \"Tokenize\" method was reserved for a third party, but support was never added.", "[", "citation needed", "]", "\n", "Encryption", "[", "edit", "]", "\n", ".ZIP supports a simple ", "password", "-based ", "symmetric encryption", " system, which is documented in the .ZIP specification, and known to be seriously flawed. In particular, it is vulnerable to ", "known-plaintext attacks", ", which are in some cases made worse by poor implementations of ", "random-number generators", ".", "[25]", "\n", "New features including new ", "compression", " and ", "encryption", " (e.g. ", "AES", ") methods have been documented in the .ZIP File Format Specification since version 5.2. A ", "WinZip", "-developed AES-based standard is used also by ", "7-Zip", " and ", "Xceed", ", but some vendors use other formats.", "[26]", " PKWARE SecureZIP also supports RC2, RC4, DES, Triple DES encryption methods, Digital Certificate-based encryption and authentication (", "X.509", "), and archive header encryption.", "[27]", "\n", "File name", " ", "encryption", " is introduced in .ZIP File Format Specification 6.2, which encrypts metadata stored in Central Directory portion of an archive, but Local Header sections remain unencrypted. A compliant archiver can falsify the Local Header data when using Central Directory Encryption. As of version 6.2 of the specification, the Compression Method and Compressed Size fields within Local Header are not yet masked.", "\n", "ZIP64", "[", "edit", "]", "\n", "The original .ZIP format had a 4\u00a0GiB limit on various things (uncompressed size of a file, compressed size of a file and total size of the archive), as well as a limit of 65535 entries in a .ZIP archive. In version 4.5 of the specification (which is not the same as v4.5 of any particular tool), PKWARE introduced the \"ZIP64\" format extensions to get around these limitations, increasing the limitation to 16\u00a0", "EiB", " (2", "64", " bytes). In essence, it uses a \"normal\" central directory entry for a file, followed by an optional \"zip64\" directory entry, which has the larger fields.", "[28]", "\n", "The File Explorer in Windows XP does not support ZIP64, but the Explorer in Windows Vista does.", "[", "citation needed", "]", " Likewise, some extension libraries support ZIP64, such as DotNetZip, QuaZIP", "[29]", " and IO::Compress::Zip in Perl. ", "Python", "'s built-in zipfile supports it since 2.5 and defaults to it since 3.4.", "[30]", " OpenJDK's built-in java.util.zip supports ZIP64 from version ", "Java 7", ".", "[31]", " ", "Android", " Java API support ZIP64 since Android 6.0.", "[32]", " OS X Yosemite does support the creation of ZIP64 archives, but does not support unzipping these archives using the graphical Archive Utility.", "[", "citation needed", "]", "\n", "Combination with other file formats", "[", "edit", "]", "\n", "The .ZIP file format allows for a comment containing up to 65,535 bytes of data to occur at the end of the file after the central directory.", "[24]", " Also, because the central directory specifies the offset of each file in the archive with respect to the start, it is possible for the first file entry to start at an offset other than zero, although some tools, for example gzip, will not process archive files that don't start with a file entry at offset zero.", "\n", "This allows arbitrary data to occur in the file both before and after the .ZIP archive data, and for the archive to still be read by a .ZIP application. A side-effect of this is that it is possible to author a file that is both a working .ZIP archive and another format, provided that the other format tolerates arbitrary data at its end, beginning, or middle. ", "Self-extracting archives", " (SFX), of the form supported by WinZip, take advantage of this\u2014they are .exe files that conform to the PKZIP AppNote.txt specification and can be read by compliant zip tools or libraries.", "\n", "This property of the .ZIP format, and of the JAR format which is a variant of .ZIP, can be exploited to hide harmful Java classes inside a seemingly harmless file, such as a GIF image uploaded to the web. This so-called ", "GIFAR", " exploit has been demonstrated as an effective attack against web applications such as Facebook.", "[33]", "\n", "Limits", "[", "edit", "]", "\n", "The minimum size of a .ZIP file is 22 bytes. Such ", "empty zip file", " contains only an End of Central Directory Record (EOCD):", "\n", "[0x50,0x4B,0x05,0x06,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00]", "\n", "The maximum size for both the archive file and the individual files inside it is 4,294,967,295 bytes (2", "32", "\u22121 bytes, or 4 GiB minus 1 byte) for standard .ZIP, and 18,446,744,073,709,551,615 bytes (2", "64", "\u22121 bytes, or 16 EiB minus 1 byte) for ZIP64.", "[34]", "\n", "Proprietary extensions", "[", "edit", "]", "\n", "Extra field", "[", "edit", "]", "\n", ".ZIP file format includes the extra field facility within file headers, which can be used to store extra data not defined by existing .ZIP specifications, and allow compliant archivers not recognizing the fields to safely skip the fields. Header IDs 0\u201331 are reserved for use by PKWARE. The remaining IDs can be used by third party vendors for proprietary usage.", "\n", "Strong encryption controversy", "[", "edit", "]", "\n", "When ", "WinZip", " 9.0 public beta was released in 2003, WinZip introduced its own ", "AES-256", " encryption, using a different file format, along with the documentation for the new specification.", "[35]", " The encryption standards themselves were not ", "proprietary", ", but PKWARE had not updated APPNOTE.TXT to include Strong Encryption Specification (SES) since 2001, which had been used by PKZIP versions 5.0 and 6.0. WinZip technical consultant Kevin Kearney and ", "StuffIt", " product manager Mathew Covington accused PKWARE of withholding SES, but PKZIP chief technology officer Jim Peterson claimed that certificate-based encryption was still incomplete.", "\n", "In another controversial move, PKWare applied for a patent on 16 July 2003 describing a method for combining .ZIP and strong encryption to create a secure file.", "[36]", "\n", "In the end, PKWARE and WinZip agreed to support each other's products. On 21 January 2004, PKWARE announced the support of WinZip-based AES compression format.", "[37]", " In a later version of WinZip beta, it was able to support SES-based .ZIP files.", "[38]", " PKWARE eventually released version 5.2 of the .ZIP File Format Specification to the public, which documented SES. The ", "Free Software", " project ", "7-Zip", " also supports AES in .ZIP files (as does its ", "POSIX", " ", "port", " ", "p7zip", ").", "\n", "When using AES encryption under WinZip, the compression method is always set to 99, with the actual compression method stored in AES extra data field.", "[39]", " In contrast, Strong Encryption Specification stores the compression method in the basic file header segment of Local Header and Central Directory, unless Central Directory Encryption is used to mask/encrypt metadata.", "\n", "Implementation", "[", "edit", "]", "\n", "There are numerous .ZIP tools available, and numerous .ZIP libraries for various programming environments; licenses used include ", "proprietary", " and ", "free software", ". For instance, ", "WinZip", " is one well-known .ZIP tool running on Windows, and ", "WinRAR", ", ", "Info-ZIP", ", ", "7-Zip", ", ", "PeaZip", " and ", "B1 Free Archiver", " are other tools, available on various platforms. Some of those tools have library or programmatic interfaces.", "\n", "Some development libraries licensed under open source agreement are ", "libzip", " and ", "Info-ZIP", ". For Java: ", "Java Platform, Standard Edition", " contains the package \"java.util.zip\" to handle standard .ZIP files; the Zip64File library specifically supports large files (larger than 4\u00a0GB) and treats .ZIP files using random access; and the ", "Apache Ant", " tool contains a more complete implementation released under the ", "Apache Software License", ".", "\n", "The ", "Info-ZIP", " implementations of the .ZIP format adds support for Unix filesystem features, such as user and group IDs, file permissions, and support for symbolic links. The ", "Apache Ant", " implementation is aware of these to the extent that it can create files with predefined Unix permissions. The Info-ZIP implementations also know how to use the error correction capabilities built into the .ZIP compression format. Some programs do not, and will fail on a file that has errors.", "\n", "The Info-ZIP Windows tools also support ", "NTFS", " ", "filesystem", " permissions, and will make an attempt to translate from NTFS permissions to Unix permissions or vice versa when extracting files. This can result in potentially unintended combinations, e.g. ", ".exe", " files being created on NTFS volumes with executable permission denied.", "\n", "Versions of Microsoft Windows have included support for .ZIP compression in Explorer since the ", "Microsoft Plus!", " pack was released for Windows 98. Microsoft calls this feature \"Compressed Folders\".", "[", "citation needed", "]", " Not all .ZIP features are supported by the Windows Compressed Folders capability. For example, AES Encryption, split or spanned archives, and Unicode entry encoding are not known to be readable or writable by the Compressed Folders feature in Windows versions earlier than Windows 8.", "\n", "Microsoft Office started using the zip archive format in 2006 for their ", "Office Open XML", " .docx, .xlsx, .pptx, etc. files, which became the default file format with ", "Microsoft Office 2007", ".", "\n", "Legacy", "[", "edit", "]", "\n", "There are numerous other standards and formats using \"zip\" as part of their name. For example, zip is distinct from ", "gzip", ", and the latter is defined in an ", "IETF", " ", "RFC", " (", "RFC 1952", "). Both zip and gzip primarily use the ", "DEFLATE", " algorithm for compression. Likewise, the ", "ZLIB", " format (IETF ", "RFC 1950", ") also uses the DEFLATE compression algorithm, but specifies different headers for error and consistency checking. Other common, similarly named formats and programs with different native formats include ", "7-Zip", ", ", "bzip2", ", and ", "rzip", ".", "\n", "See also", "[", "edit", "]", "\n", "\n", "Comparison of file archivers", "\n", "Comparison of archive formats", "\n", "List of archive formats", "\n", "LZW", "\n", "\n", "References", "[", "edit", "]", "\n", "\n", "\n", "\n", "^ ", "a", " ", "b", " ", "c", " ", "Registration of a new MIME Content-Type/Subtype - application/zip", ", ", "IANA", ", 20 July 1993", ", retrieved ", "5 January", " 2012", "\u00a0", "\n", "^", " ", "\"Phillip Katz, Computer Software Pioneer, 37\"", ". ", "The New York Times", ". 1 May 2000", ". Retrieved ", "14 June", " 2009", ".", "\u00a0", "\n", "^", " ", "\"The Rise and Fall of a Software Star; Phil Katz Loved Code - and Liquor\"", ". wsj. 1997-08-15.", "\u00a0", "\n", "^", " ", "Brian Livingston (8 September 2003), ", "PKZip Must Open Up", ", retrieved ", "5 January", " 2012", ", ", "The ZIP file format is given freely into the public domain and can be claimed neither legally nor morally by any individual, entity or company", "\u00a0", "\n", "^", " ", "Where Did Zip Files Come From Anyway?", ", Infinity Design Concepts, Inc.", ", retrieved ", "2012-01-05", "\u00a0", "\n", "^", " ", "Press Release", ", 1989", ", retrieved ", "5 January", " 2012", "\u00a0", "\n", "^", " ", "Our Founder - Phil Katz", ", ", "PKWARE", ", archived from ", "the original", " on 2010-10-01", ", retrieved ", "5 January", " 2012", "\u00a0", "\n", "^", " ", "Gareth Horton; Rob Weir; Alex Brown (2 November 2010), ", "sc34-wg1", ", retrieved ", "5 January", " 2012", "\u00a0", "\n", "^", " ", ".ZIP Application Note", ", retrieved ", "2012-07-20", "\u00a0", "\n", "^", " ", "File: APPNOTE.TXT - .ZIP File Format Specification Version: 4.5 Revised: 11/01/2001", ", 3 December 2001, archived from ", "the original", " on 3 December 2001", ", retrieved ", "21 April", " 2012", "\u00a0", "\n", "^", " ", "APPNOTE.TXT - .ZIP File Format Specification, Version: 5.2 - Notification of Change", ", 16 July 2003", ", retrieved ", "5 January", " 2012", "\u00a0", "\n", "^", " ", "File: APPNOTE.TXT - .ZIP File Format Specification Version: 5.2 - Notification of Change \u2013 Revised: 06/02/2003", ", 2 July 2003, archived from ", "the original", " on 2 July 2003", ", retrieved ", "21 April", " 2012", "\u00a0", "\n", "^", " ", "File: APPNOTE - .ZIP File Format Specification Version: 6.1.0 - Notification of Change \u2013 Revised: 01/20/2004", ", 19 August 2004, archived from ", "the original", " on 19 August 2004", ", retrieved ", "21 April", " 2012", "\u00a0", "\n", "^", " ", "APPNOTE.TXT - .ZIP File Format Specification, Version: 6.2.0 - Notification of Change", ", 26 April 2004", ", retrieved ", "5 January", " 2012", "\u00a0", "\n", "^", " ", "APPNOTE.TXT - .ZIP File Format Specification, Version: 6.3.0", ", 29 September 2006", ", retrieved ", "5 January", " 2012", "\u00a0", "\n", "^", " ", "File: APPNOTE.TXT - .ZIP File Format Specification Version: 6.3.1 Revised: April 11, 2007", ", 14 May 2007, archived from ", "the original", " on 14 May 2007", ", retrieved ", "21 April", " 2012", "\u00a0", "\n", "^", " ", "File: APPNOTE.TXT - .ZIP File Format Specification Version: 6.3.2 Revised: September 28, 2007", ", 28 September 2007, archived from ", "the original", " on 28 September 2007", ", retrieved ", "21 April", " 2012", "\u00a0", "\n", "^", " ", "File: APPNOTE.TXT - .ZIP File Format Specification Version: 6.3.3 Revised: September 01, 2012", ", September 2012", "\u00a0", "\n", "^", " ", "File: APPNOTE.TXT - .ZIP File Format Specification Version: 6.3.4 Revised: October 1, 2014", ", 1 October 2014", "\u00a0", "\n", "^", " ", "\"Additional Compression Methods Specification\"", ". ", "WinZip", ". ", "Mansfield, CT", ": ", "WinZip", " Computing, S.L. 19 May 2009", ". Retrieved ", "2009-05-24", ".", "\u00a0", "\n", "^", " ", "\"What is a Zipx File?\"", ". ", "Winzip: Knowledgebase", ". ", "Mansfield, CT", ": ", "WinZip", " Computing, S.L", ". 13 August 2010", ". Retrieved ", "17 August", " 2010", ".", "\u00a0", "\n", "^", " ", "[1]", "[", "dead link", "]", "\n", "^", " ", "\"ISO/IEC 21320-1:2015 Document Container File \u2014 Part 1: Core\"", ". ITTF. 2015.", "\u00a0", "\n", "^ ", "a", " ", "b", " ", "c", " ", "d", " ", "e", " ", "f", " ", "\"File\u00a0: APPNOTE.TXT - .ZIP File Format Specification\u00a0: Version: 6.3.4\"", " ", "(TXT)", ". ", "Pkware.com", ". Retrieved ", "2017-09-09", ".", "\u00a0", "\n", "^", " ", "Stay, Michael. ", "\"", "\"", "ZIP Attacks with Reduced Known Plaintext", "\"", "\"", " ", "(PDF)", ". ", "Math.ucr.edu", ". Retrieved ", "2017-09-09", ".", "\u00a0", "\n", "^", " ", "\"AES Encryption Information: Encryption Specification AE-1 and AE-2\"", ". ", "Winzip.com", ". Retrieved ", "2017-09-09", ".", "\u00a0", "\n", "^", " ", "\"APPNOTE - PKZIP/SecureZIP - PKWARE Support Site\"", ". ", "Pkware.com", ". Retrieved ", "9 September", " 2017", ".", "\u00a0", "\n", "^", " ", "\"File\u00a0: APPNOTE.TXT - .ZIP File Format Specification\u00a0: Version: 6.3.4\"", " ", "(TXT)", ". ", "Pkware.cachefly.net", ". Retrieved ", "2017-09-09", ".", "\u00a0", "\n", "^", " ", "\"QuaZIP changes\"", ". 22 January 2014", ". Retrieved ", "2014-01-25", ".", "\u00a0", "\n", "^", " ", "\"Python enhancement: Use allowZip64=True by default (3.4)\"", ". Retrieved ", "2014-05-06", ".", "\u00a0", "\n", "^", " ", "Shen, Xueming (17 April 2009). ", "\"ZIP64, The Format for > 4G Zipfile, Is Now Supported\"", ". ", "Xueming Shen's Blog", ". ", "Sun Microsystems", ". Retrieved ", "27 Sep", " 2010", ".", "\u00a0", "\n", "^", " ", "\"Sign in - Google Accounts\"", ". ", "code.google.com", ". Retrieved ", "9 September", " 2017", ".", "\u00a0", "\n", "^", " ", "McMillan, Robert. ", "\"A photo that can steal your online credentials\"", ". ", "Infoworld.com", ". Retrieved ", "9 September", " 2017", ".", "\u00a0", "\n", "^", " ", "\"ZipArchive: Zip64 Format: Crossing the Limits of File Sizes and Number of Files and Segments\"", ". ", "Artpol-software.com", ". Retrieved ", "9 September", " 2017", ".", "\u00a0", "\n", "^", " ", "\"WinZip \u2013 AES Encryption Information\"", ". ", "Winzip.com", ". Retrieved ", "2017-09-09", ".", "\u00a0", "\n", "^", " ", "[2]", "[", "dead link", "]", "\n", "^", " ", "\"Software makers patch Zip tiff\"", ". ", "News.com", ". Retrieved ", "9 September", " 2017", ".", "\u00a0", "\n", "^", " ", "John Leyden. ", "\"Zip file encryption compromise thrashed out\"", ". ", "Theregister.co.uk", ". Retrieved ", "9 September", " 2017", ".", "\u00a0", "\n", "^", " ", "\"AES Encryption Information: Encryption Specification AE-1 and AE-2\"", ". ", "Winzip.com", ". Retrieved ", "2017-09-09", ".", "\u00a0", "\n", "\n", "\n", "\n", "External links", "[", "edit", "]", "\n", "\n", ".ZIP Application Note", " - landing page for PKWARE's current and historical .ZIP File", "\n", "Inside Microsoft C article citing Gary Conway as co-inventor of zip files", "\n", "Microsoft article citing Gary Conway as co-inventor of zip files", "\n", "\n", "Format Specifications.", "\n", "\n", "Structure of PKZip file", " - graphical tables", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "v", "\n", "t", "\n", "e", "\n", "\n", "\n", "Archive formats", "\n", "\n", "\n", "\n", "Archiving only", "\n", "\n", "\n", "\n", "ar", "\n", "cpio", "\n", "shar", "\n", "tar", "\n", "LBR", "\n", "BagIt", "\n", "WAD", "\n", "\n", "\n", "\n", "\n", "\n", "Compression only", "\n", "\n", "\n", "\n", "bzip2", "\n", "gzip", "\n", "lzip", "\n", "LZMA", "\n", "lzop", "\n", "xz", "\n", "SQ", "\n", "compress", "\n", "\n", "\n", "\n", "\n", "\n", "Archiving and compression", "\n", "\n", "\n", "\n", "7z", "\n", "ACE", "\n", "ARC", "\n", "ARJ", "\n", "B1", "\n", "Cabinet", "\n", "cfs", "\n", "cpt", "\n", "dar", "\n", "DGCA", "\n", ".dmg", "\n", ".egg", "\n", "kgb", "\n", "LHA", "\n", "LZX", "\n", "MPQ", "\n", "PEA", "\n", "RAR", "\n", "rzip", "\n", "sit", "\n", "SQX", "\n", "UDA", "\n", "Xar", "\n", "zoo", "\n", "ZIP", "\n", "ZPAQ", "\n", "\n", "\n", "\n", "\n", "\n", "Software packaging and distribution", "\n", "\n", "\n", "\n", "APK", "\n", "deb", "\n", "Package (macOS)", "\n", "RPM", "\n", "MSI", "\n", "JAR", "\n", "\n", "WAR", "\n", "Java RAR", "\n", "EAR", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "Document packaging and distribution", "\n", "\n", "\n", "\n", "OEB Package Format", "\n", "OEBPS Container Format", "\n", "Open Packaging Conventions", "\n", "PAQ", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "Comparison", "\n", "List", "\n", " ", "Category", "\n", "\n", "\n", "\n", "\n", "\n", "\n\n\n", "\n", "\n", "\n", "\n"], "lastUpdated": " 7 January 2018, at 23:29."}, +{"title": "Style sheet (web development)", "text": ["\n", "\n", "\n", "\n", "\n", "\n", "This article ", "needs additional citations for ", "verification", ". ", "Please help ", "improve this article", " by ", "adding citations to reliable sources", ". Unsourced material may be challenged and removed.", " ", "(March 2014)", " ", "(", "Learn how and when to remove this template message", ")", "\n", "\n", "\n", "\n", "See also: ", "Cascading Style Sheets", "\n", "\n", "\n", "Cascading Style Sheets", "\n", "\n", "\n", "\n", "\n", "Style sheet", "\n", "CSS Zen Garden", "\n", "The Zen of CSS Design", "\n", "CSS box model", "\n", "Internet Explorer box model bug", "\n", "CSSTidy", "\n", "Dynamic CSS", "\n", "\n", "\n", "\n", "\n", "Comparisons", "\n", "\n", "\n", "\n", "\n", "Layout engines", "\n", "Stylesheet languages", "\n", "\n", "\n", "\n", "\n", "Web design", "\n", "\n", "\n", "\n", "\n", "Tableless", "\n", "\"Holy grail\"", "\n", "Responsive", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\u00a0", "Cascading Style Sheets", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "v", "\n", "t", "\n", "e", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "HTML", "\n", "\n", "\n", "\n", "\n", "HTML", "\n", "Dynamic HTML", "\n", "HTML5", "\n", "\n", "audio", "\n", "canvas", "\n", "video", "\n", "\n", "\n", "XHTML", "\n", "\n", "Basic", "\n", "Mobile Profile", "\n", "C-HTML", "\n", "\n", "\n", "HTML element", "\n", "\n", "span and div", "\n", "\n", "\n", "HTML attribute", "\n", "HTML frame", "\n", "HTML editor", "\n", "Character encodings", "\n", "\n", "Unicode", "\n", "\n", "\n", "Language code", "\n", "Document Object Model", "\n", "Browser Object Model", "\n", "Style sheets", "\n", "\n", "CSS", "\n", "\n", "\n", "Font family", "\n", "Web colors", "\n", "HTML scripting", "\n", "JavaScript", "\n", "\n", "WebGL", "\n", "WebCL", "\n", "\n", "\n", "W3C", "\n", "\n", "Validator", "\n", "\n", "\n", "WHATWG", "\n", "Quirks mode", "\n", "Web storage", "\n", "Web browser (layout) engine", "\n", "\n", "\n", "\n", "\n", "Comparisons", "\n", "\n", "\n", "\n", "\n", "Document markup languages", "\n", "Web browsers", "\n", "HTML", "\n", "Non-standard HTML", "\n", "HTML5", "\n", "\n", "canvas", "\n", "media", "\n", "\n", "\n", "XHTML", "\n", "\n", "1.1", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "v", "\n", "t", "\n", "e", "\n", "\n", "\n", "\n", "\n", "\n", "A web ", "style sheet", " is a form of ", "separation of presentation and content", " for ", "web design", " in which the ", "markup", " (i.e., ", "HTML", " or ", "XHTML", ") of a ", "webpage", " contains the page's semantic content and structure, but does not define its visual layout (style). Instead, the style is defined in an external style sheet file using a ", "style sheet language", " such as ", "CSS", " or ", "XSLT", ". This design approach is identified as a \"separation\" because it largely supersedes the antecedent methodology in which a page's markup defined both style and structure.", "\n", "The philosophy underlying this methodology is a specific case of ", "separation of concerns", ".", "\n", "\n", "\n", "\n", "Contents", "\n", "\n", "\n", "1", " ", "Benefits", "\n", "\n", "1.1", " ", "Speed", "\n", "1.2", " ", "Maintainability", "\n", "1.3", " ", "Accessibility", "\n", "1.4", " ", "Customization", "\n", "1.5", " ", "Consistency", "\n", "1.6", " ", "Portability", "\n", "\n", "\n", "2", " ", "Practical disadvantages today", "\n", "\n", "2.1", " ", "Narrow adoption without the parsing and generation tools", "\n", "\n", "\n", "3", " ", "See also", "\n", "4", " ", "References", "\n", "5", " ", "External links", "\n", "\n", "\n", "\n", "Benefits", "[", "edit", "]", "\n", "Separation of style and content has advantages,", "[1]", "[2]", " but has only become practical after improvements in popular ", "web browsers", "' CSS implementations.", "\n", "Speed", "[", "edit", "]", "\n", "Overall, users experience of a site utilising style sheets will generally be quicker than sites that don\u2019t use the technology. \u2018Overall\u2019 as the first page will probably load more slowly \u2013 because the style sheet AND the content will need to be transferred. Subsequent pages will load faster because no style information will need to be downloaded \u2013 the CSS file will already be in the browser\u2019s cache.", "\n", "Maintainability", "[", "edit", "]", "\n", "Holding all the presentation styles in one file can reduce the maintenance time and reduces the chance of error, thereby improving presentation consistency. For example, the font color associated with a type of text element may be specified \u2014 and therefore easily modified \u2014 throughout an entire website simply by changing one short string of characters in a single file. The alternate approach, using styles embedded in each individual page, would require a cumbersome, time consuming, and error-prone edit of every file.", "\n", "Accessibility", "[", "edit", "]", "\n", "Sites that use CSS with either XHTML or HTML are easier to tweak so that they appear similar in different browsers (", "Internet Explorer", ", ", "Mozilla Firefox", ", ", "Opera", ", ", "Safari", ", etc.).", "\n", "Sites using CSS \"", "degrade gracefully", "\" in browsers unable to display graphical content, such as ", "Lynx", ", or those so very old that they cannot use CSS. Browsers ignore CSS that they do not understand, such as CSS 3 statements. This enables a wide variety of ", "user agents", " to be able to access the content of a site even if they cannot render the style sheet or are not designed with graphical capability in mind. For example, a browser using a ", "refreshable braille display", " for output could disregard layout information entirely, and the user would still have access to all page content.", "\n", "Customization", "[", "edit", "]", "\n", "If a page's layout information is stored externally, a user can decide to disable the layout information entirely, leaving the site's bare content still in a readable form. Site authors may also offer multiple style sheets, which can be used to completely change the appearance of the site without altering any of its content.", "\n", "Most modern web browsers also allow the user to define their own style sheet, which can include rules that override the author's layout rules. This allows users, for example, to bold every hyperlink on every page they visit.", "\n", "Consistency", "[", "edit", "]", "\n", "Because the semantic file contains only the meanings an author intends to convey, the styling of the various elements of the document's content is very consistent. For example, headings, emphasized text, lists and mathematical expressions all receive consistently applied style properties from the external style sheet. Authors need not concern themselves with the style properties at the time of composition. These presentational details can be deferred until the moment of presentation.", "\n", "Portability", "[", "edit", "]", "\n", "The deferment of presentational details until the time of presentation means that a document can be easily re-purposed for an entirely different presentation medium with merely the application of a new style sheet already prepared for the new medium and consistent with elemental or structural vocabulary of the semantic document. A carefully authored document for a web page can easily be printed to a hard-bound volume complete with headers and footers, page numbers and a generated table of contents simply by applying a new style sheet.", "\n", "Practical disadvantages today", "[", "edit", "]", "\n", "Currently specifications (for example, XHTML, XSL, CSS) and software tools implementing these specification are only reaching the early stages of maturity. So there are some practical issues facing authors who seek to embrace this method of separating content and style.", "\n", "Narrow adoption without the parsing and generation tools", "[", "edit", "]", "\n", "While the style specifications are quite mature and still maturing, the software tools have been slow to adapt. Most of the major web development tools still embrace a mixed presentation-content model. So authors and designers looking for GUI based tools for their work find it difficult to follow the semantic web method. In addition to GUI tools, shared repositories for generalized style sheets would probably aid adoption of these methods.", "\n", "See also", "[", "edit", "]", "\n", "\n", "Separation of concerns", "\n", "\n", "References", "[", "edit", "]", "\n", "\n", "\n", "\n", "^", " ", "Why use CSS? - Web developer guide | MDN", "\n", "^", " ", "Why Use CSS in Website Design", "\n", "\n", "\n", "\n", "External links", "[", "edit", "]", "\n", "\n", "CSS Zen Garden", ": A site which challenges designers to create new page layouts without touching the XHTML source. Includes dozens of layouts. CSS source can be viewed for every layout.", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "v", "\n", "t", "\n", "e", "\n", "\n", "\n", "Style sheet languages", "\n", "\n", "\n", "\n", "Modes", "\n", "\n", "\n", "\n", "Desktop publishing", "\n", "Web development", "\n", "User interfaces", "\n", "\n", "\n", "\n", "\n", "\n", "Standard", "\n", "\n", "\n", "\n", "Cascading (CSS)", "\n", "DSSSL", "\n", "Extensible (XSL)", "\n", "\n", "\n", "\n", "\n", "\n", "Non-standard", "\n", "\n", "\n", "\n", "JavaScript (JSSS)", "\n", "FOSI", "\n", "Qt", "\n", "Sass", "\n", "Less", "\n", "Stylus", "\n", "SMIL Timesheets", "\n", "PostCSS", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "List", "\n", "Comparison", "\n", "\n", "\n", "\n", "\n", "\n", "\n\n\n", "\n", "\n", "\n", "\n"], "lastUpdated": " 14 December 2017, at 23:37."}, +{"title": "Lexical analysis", "text": ["\"Lexer\" redirects here. For people with this name, see ", "Lexer (surname)", ".", "\n", "In ", "computer science", ", ", "lexical analysis", ", ", "lexing", " or ", "tokenization", " is the process of converting a sequence of characters (such as in a computer program or web page) into a sequence of tokens (", "strings", " with an assigned and thus identified meaning). A program that performs lexical analysis may be termed a ", "lexer", ", ", "tokenizer", ",", "[1]", " or ", "scanner", ", though ", "scanner", " is also a term for the first stage of a lexer. A lexer is generally combined with a ", "parser", ", which together analyze the ", "syntax of programming languages", ", web pages, and so forth.", "\n", "\n", "\n", "\n", "Contents", "\n", "\n", "\n", "1", " ", "Applications", "\n", "2", " ", "Lexeme", "\n", "3", " ", "Token", "\n", "4", " ", "Lexical grammar", "\n", "5", " ", "Tokenization", "\n", "\n", "5.1", " ", "Scanner", "\n", "5.2", " ", "Evaluator", "\n", "5.3", " ", "Obstacles", "\n", "5.4", " ", "Software", "\n", "\n", "\n", "6", " ", "Lexer generator", "\n", "\n", "6.1", " ", "List of lexer generators", "\n", "\n", "\n", "7", " ", "Phrase structure", "\n", "\n", "7.1", " ", "Line continuation", "\n", "7.2", " ", "Semicolon insertion", "\n", "7.3", " ", "Off-side rule", "\n", "\n", "\n", "8", " ", "Context-sensitive lexing", "\n", "9", " ", "Notes", "\n", "10", " ", "References", "\n", "11", " ", "External links", "\n", "\n", "\n", "\n", "Applications", "[", "edit", "]", "\n", "A lexer forms the first phase of a ", "compiler frontend", " in modern processing. Analysis generally occurs in one pass.", "\n", "In older languages such as ", "ALGOL", ", the initial stage was instead ", "line reconstruction", ", which performed ", "unstropping", " and removed whitespace and ", "comments", " (and had scannerless parsers, with no separate lexer). These steps are now done as part of the lexer.", "\n", "Lexers and parsers are most often used for compilers, but can be used for other computer language tools, such as ", "prettyprinters", " or ", "linters", ". Lexing can be divided into two stages: the ", "scanning", ", which segments the input string into syntactic units called ", "lexemes", " and categorizes these into token classes; and the ", "evaluating", ", which converts lexemes into processed values.", "\n", "Lexers are generally quite simple, with most of the complexity deferred to the parser or ", "semantic analysis", " phases, and can often be generated by a ", "lexer generator", ", notably ", "lex", " or derivatives. However, lexers can sometimes include some complexity, such as ", "phrase structure", " processing to make input easier and simplify the parser, and may be written partly or fully by hand, either to support more features or for performance.", "\n", "Lexeme", "[", "edit", "]", "\n", "A ", "lexeme", " is a sequence of characters in the source program that matches the pattern for a token and is identified by the lexical analyzer as an instance of that token.", "[2]", "\n", "Some authors term this a \"token\", using \"token\" interchangeably to represent the string being tokenized, and the token data structure resulting from putting this string through the ", "tokenization", " process.", "[3]", "[4]", "\n", "The word lexeme in computer science is defined differently than ", "lexeme", " in linguistics. A lexeme in computer science roughly corresponds to what might be termed a ", "word", " in linguistics (the term ", "word", " in computer science has a different meaning than ", "word", " in linguistics), although in some cases it may be more similar to a ", "morpheme", ".", "\n", "Token", "[", "edit", "]", "\n", "A ", "lexical token", " or simply ", "token", " is a pair consisting of a ", "token name", " and an optional ", "token value", ". The token name is a category of lexical unit.", "[5]", " Common token names are", "\n", "\n", "identifiers: names the programmer chooses;", "\n", "keywords: names already in the programming language;", "\n", "separators (also known as punctuators): punctuation characters and paired-delimiters;", "\n", "operators: symbols that operate on arguments and produce results;", "\n", "literals: numeric, logical, textual, reference literals;", "\n", "comments: line, block.", "\n", "\n", "\n", "Examples of token values", "\n", "\n", "Token name", "\n", "Sample token values", "\n", "\n", "\n", "identifier", "\n", "x, color, UP", "\n", "\n", "\n", "keyword", "\n", "if", ",", " ", "while", ",", " ", "return", "\n", "\n", "\n", "separator", "\n", "}, (,\u00a0;", "\n", "\n", "\n", "operator", "\n", "+", ",", " ", "<", ",", " ", "=", "\n", "\n", "\n", "literal", "\n", "true", ",", " ", "6.02e23", ",", " ", "\"music\"", "\n", "\n", "\n", "comment", "\n", "// must be negative, /* Retrieves user data */", "\n", "\n", "\n", "Consider this expression in the ", "C", " programming language:", "\n", "\n", "x", " ", "=", " ", "a", " ", "+", " ", "b", " ", "*", " ", "2", ";", "\n", "\n", "The lexical analysis of this expression yields the following sequence of tokens:", "\n", "\n", "[(identifier, x), (operator, =), (identifier, a), (operator, +), (identifier, b), (operator, *), (literal, 2), (separator,\u00a0;)]", "\n", "\n", "A token name is what might be termed a ", "part of speech", " in linguistics.", "\n", "Lexical grammar", "[", "edit", "]", "\n", "Further information: ", "Lexical grammar", "\n", "The specification of a ", "programming language", " often includes a set of rules, the ", "lexical grammar", ", which defines the lexical syntax. The lexical syntax is usually a ", "regular language", ", with the grammar rules consisting of ", "regular expressions", "; they define the set of possible character sequences (lexemes) of a token. A lexer recognizes strings, and for each kind of string found the lexical program takes an action, most simply producing a token.", "\n", "Two important common lexical categories are ", "white space", " and ", "comments", ". These are also defined in the grammar and processed by the lexer, but may be discarded (not producing any tokens) and considered ", "non-significant", ", at most separating two tokens (as in ", "if\u00a0x", " instead of ", "ifx", "). There are two important exceptions to this. First, in ", "off-side rule", " languages that delimit ", "blocks", " with indenting, initial whitespace is significant, as it determines block structure, and is generally handled at the lexer level; see ", "phrase structure", ", below. Secondly, in some uses of lexers, comments and whitespace must be preserved \u2013 for examples, a ", "prettyprinter", " also needs to output the comments and some debugging tools may provide messages to the programmer showing the original source code. In the 1960s, notably for ", "ALGOL", ", whitespace and comments were eliminated as part of the ", "line reconstruction", " phase (the initial phase of the ", "compiler frontend", "), but this separate phase has been eliminated and these are now handled by the lexer.", "\n", "Tokenization", "[", "edit", "]", "\n", "Tokenization", " is the process of demarcating and possibly classifying sections of a string of input characters. The resulting tokens are then passed on to some other form of processing. The process can be considered a sub-task of ", "parsing", " input.", "\n", "(Note: ", "Tokenization", " in the field of computer security has a different meaning.)", "\n", "For example, in the text ", "string", ":", "\n", "\n", "The quick brown fox jumps over the lazy dog", "\n", "\n", "the string isn't implicitly segmented on spaces, as a ", "natural language", " speaker would do. The raw input, the 43 characters, must be explicitly split into the 9 tokens with a given space delimiter (i.e., matching the string ", "\" \"", " or regular expression ", "/\\s{1}/", ").", "\n", "The tokens could be represented in ", "XML", ",", "\n", "\n", "\n", "", "\n ", "", "The", "", "\n ", "", "quick", "", "\n ", "", "brown", "", "\n ", "", "fox", "", "\n ", "", "jumps", "", "\n ", "", "over", "", "\n ", "", "the", "", "\n ", "", "lazy", "", "\n ", "", "dog", "", "\n", "", "\n", "\n", "Or as an ", "s-expression", ",", "\n", "\n", "\n ", "(", "sentence", "\n ", "(", "word", " ", "The", ")", "\n ", "(", "word", " ", "quick", ")", "\n ", "(", "word", " ", "brown", ")", " \n ", "(", "word", " ", "fox", ")", "\n ", "(", "word", " ", "jumps", ")", "\n ", "(", "word", " ", "over", ")", " \n ", "(", "word", " ", "the", ")", "\n ", "(", "word", " ", "lazy", ")", "\n ", "(", "word", " ", "dog", "))", "\n", "\n", "When a token class represents more than one possible lexeme, the lexer often saves enough information to reproduce the original lexeme, so that it can be used in ", "semantic analysis", ". The parser typically retrieves this information from the lexer and stores it in the ", "abstract syntax tree", ". This is necessary in order to avoid information loss in the case of numbers and identifiers.", "\n", "Tokens are identified based on the specific rules of the lexer. Some methods used to identify tokens include: ", "regular expressions", ", specific sequences of characters termed a ", "flag", ", specific separating characters called ", "delimiters", ", and explicit definition by a dictionary. Special characters, including punctuation characters, are commonly used by lexers to identify tokens because of their natural use in written and programming languages.", "\n", "Tokens are often categorized by character content or by context within the data stream. Categories are defined by the rules of the lexer. Categories often involve grammar elements of the language used in the data stream. Programming languages often categorize tokens as identifiers, operators, grouping symbols, or by ", "data type", ". Written languages commonly categorize tokens as nouns, verbs, adjectives, or punctuation. Categories are used for post-processing of the tokens either by the parser or by other functions in the program.", "\n", "A lexical analyzer generally does nothing with combinations of tokens, a task left for a ", "parser", ". For example, a typical lexical analyzer recognizes parentheses as tokens, but does nothing to ensure that each \"(\" is matched with a \")\".", "\n", "When a lexer feeds tokens to the parser, the representation used is typically an enumerated list of number representations. For example, \"Identifier\" is represented with 0, \"Assignment operator\" with 1, \"Addition operator\" with 2, etc.", "\n", "Tokens are defined often by ", "regular expressions", ", which are understood by a lexical analyzer generator such as ", "lex", ". The lexical analyzer (generated automatically by a tool like lex, or hand-crafted) reads in a stream of characters, identifies the ", "lexemes", " in the stream, and categorizes them into tokens. This is termed ", "tokenizing", ". If the lexer finds an invalid token, it will report an error.", "\n", "Following tokenizing is ", "parsing", ". From there, the interpreted data may be loaded into data structures for general use, interpretation, or ", "compiling", ".", "\n", "Scanner", "[", "edit", "]", "\n", "The first stage, the ", "scanner", ", is usually based on a ", "finite-state machine", " (FSM). It has encoded within it information on the possible sequences of characters that can be contained within any of the tokens it handles (individual instances of these character sequences are termed ", "lexemes", "). For example, an ", "integer", " token may contain any sequence of ", "numerical digit", " characters. In many cases, the first non-whitespace character can be used to deduce the kind of token that follows and subsequent input characters are then processed one at a time until reaching a character that is not in the set of characters acceptable for that token (this is termed the ", "maximal munch", ", or ", "longest match", ", rule). In some languages, the lexeme creation rules are more complex and may involve ", "backtracking", " over previously read characters. For example, in C, one 'L' character is not enough to distinguish between an identifier that begins with 'L' and a wide-character string literal.", "\n", "Evaluator", "[", "edit", "]", "\n", "A ", "lexeme", ", however, is only a string of characters known to be of a certain kind (e.g., a string literal, a sequence of letters). In order to construct a token, the lexical analyzer needs a second stage, the ", "evaluator", ", which goes over the characters of the lexeme to produce a ", "value", ". The lexeme's type combined with its value is what properly constitutes a token, which can be given to a parser. Some tokens such as parentheses do not really have values, and so the evaluator function for these can return nothing: only the type is needed. Similarly, sometimes evaluators can suppress a lexeme entirely, concealing it from the parser, which is useful for whitespace and comments. The evaluators for identifiers are usually simple (literally representing the identifier), but may include some ", "unstropping", ". The evaluators for ", "integer literals", " may pass the string on (deferring evaluation to the semantic analysis phase), or may perform evaluation themselves, which can be involved for different bases or floating point numbers. For a simple quoted string literal, the evaluator needs to remove only the quotes, but the evaluator for an ", "escaped string literal", " incorporates a lexer, which unescapes the escape sequences.", "\n", "For example, in the source code of a computer program, the string", "\n", "\n", "net_worth_future", " ", "=", " ", "(", "assets", " ", "-", " ", "liabilities", ");", "\n", "\n", "might be converted into the following lexical token stream; whitespace is suppressed and special characters have no value:", "\n", "\nIDENTIFIER net_worth_future\nEQUALS\nOPEN_PARENTHESIS\nIDENTIFIER assets\nMINUS\nIDENTIFIER liabilities\nCLOSE_PARENTHESIS\nSEMICOLON\n", "\n", "Though it is possible and sometimes necessary, due to licensing restrictions of existing parsers or if the list of tokens is small, to write a lexer by hand, lexers are often generated by automated tools. These tools generally accept regular expressions that describe the tokens allowed in the input stream. Each regular expression is associated with a ", "production rule", " in the lexical grammar of the programming language that evaluates the lexemes matching the regular expression. These tools may generate source code that can be compiled and executed or construct a ", "state transition table", " for a ", "finite-state machine", " (which is plugged into template code for compiling and executing).", "\n", "Regular expressions compactly represent patterns that the characters in lexemes might follow. For example, for an ", "English", "-based language, an IDENTIFIER token might be any English alphabetic character or an underscore, followed by any number of instances of ASCII alphanumeric characters and/or underscores. This could be represented compactly by the string ", "[a-zA-Z_][a-zA-Z_0-9]*", ". This means \"any character a-z, A-Z or _, followed by 0 or more of a-z, A-Z, _ or 0-9\".", "\n", "Regular expressions and the finite-state machines they generate are not powerful enough to handle recursive patterns, such as \"", "n", " opening parentheses, followed by a statement, followed by ", "n", " closing parentheses.\" They are unable to keep count, and verify that ", "n", " is the same on both sides, unless a finite set of permissible values exists for ", "n", ". It takes a full parser to recognize such patterns in their full generality. A parser can push parentheses on a stack and then try to pop them off and see if the stack is empty at the end (see example", "[6]", " in the ", "Structure and Interpretation of Computer Programs", " book).", "\n", "Obstacles", "[", "edit", "]", "\n", "Typically, tokenization occurs at the word level. However, it is sometimes difficult to define what is meant by a \"word\". Often a tokenizer relies on simple heuristics, for example:", "\n", "\n", "Punctuation and whitespace may or may not be included in the resulting list of tokens.", "\n", "All contiguous strings of alphabetic characters are part of one token; likewise with numbers.", "\n", "Tokens are separated by ", "whitespace", " characters, such as a space or line break, or by punctuation characters.", "\n", "\n", "In languages that use inter-word spaces (such as most that use the Latin alphabet, and most programming languages), this approach is fairly straightforward. However, even here there are many edge cases such as ", "contractions", ", ", "hyphenated words", ", ", "emoticons", ", and larger constructs such as ", "URIs", " (which for some purposes may count as single tokens). A classic example is \"New York-based\", which a naive tokenizer may break at the space even though the better break is (arguably) at the hyphen.", "\n", "Tokenization is particularly difficult for languages written in ", "scriptio continua", " which exhibit no word boundaries such as ", "Ancient Greek", ", ", "Chinese", ",", "[7]", " or ", "Thai", ". ", "Agglutinative languages", ", such as Korean, also make tokenization tasks complicated.", "\n", "Some ways to address the more difficult problems include developing more complex heuristics, querying a table of common special-cases, or fitting the tokens to a ", "language model", " that identifies collocations in a later processing step.", "\n", "Software", "[", "edit", "]", "\n", "\n", "Apache OpenNLP", " includes rule based and statistical tokenizers which support many languages", "\n", "U-Tokenizer", " is an API over HTTP that can cut Mandarin and Japanese sentences at word boundary. English is supported as well.", "\n", "HPE Haven OnDemand Text Tokenization API", " (Commercial product, with freemium access) uses Advanced Probabilistic Concept Modelling to determine the weight that the term holds in the specified text indexes", "\n", "The ", "Lex", " tool and its compiler is designed to generate code for fast lexical analysers based on a formal description of the lexical syntax. It is generally considered insufficient for applications with a complex set of lexical rules and severe performance requirements. For example, the ", "GNU Compiler Collection", " (GCC) uses hand-written lexers.", "\n", "\n", "Lexer generator", "[", "edit", "]", "\n", "See also: ", "Parser generator", "\n", "Lexers are often generated by a ", "lexer generator", ", analogous to ", "parser generators", ", and such tools often come together. The most established is ", "lex", ", paired with the ", "yacc", " parser generator, and the free equivalents ", "flex", "/bison. These generators are a form of ", "domain-specific language", ", taking in a lexical specification \u2013 generally regular expressions with some markup \u2013 and emitting a lexer.", "\n", "These tools yield very fast development, which is very important in early development, both to get a working lexer and because a language specification may change often. Further, they often provide advanced features, such as pre- and post-conditions which are hard to program by hand. However, an automatically generated lexer may lack flexibility, and thus may require some manual modification, or an all-manually written lexer.", "\n", "Lexer performance is a concern, and optimizing is worthwhile, more so in stable languages where the lexer is run very often (such as C or HTML). lex/flex-generated lexers are reasonably fast, but improvements of two to three times are possible using more tuned generators. Hand-written lexers are sometimes used, but modern lexer generators produce faster lexers than most hand-coded ones. The lex/flex family of generators uses a table-driven approach which is much less efficient than the directly coded approach.", "[", "dubious", " ", "\u2013 ", "discuss", "]", " With the latter approach the generator produces an engine that directly jumps to follow-up states via goto statements. Tools like re2c", "[8]", " have proven to produce engines that are between two and three times faster than flex produced engines.", "[", "citation needed", "]", " It is in general difficult to hand-write analyzers that perform better than engines generated by these latter tools.", "\n", "List of lexer generators", "[", "edit", "]", "\n", "See also: ", "List of parser generators", "\n", "\n", "ANTLR", " \u2013 can generate lexical analyzers and parsers", "\n", "DFASTAR \u2013 generates DFA matrix table-driven lexers in C++", "\n", "Flex", " \u2013 variant of the classic ", "lex", " for C/C++", "\n", "Ragel", " \u2013 state machine and lexer generator with output in C, C++, ", "C#", ", ", "Objective-C", ", ", "D", ", ", "Java", ", ", "Go", ", and ", "Ruby", "\n", "re2c", " \u2013 lexer generator for ", "C", " and ", "C++", "\n", "\n", "The following lexical analysers can handle ", "Unicode", ":", "\n", "\n", "JavaCC", " \u2013 generates lexical analyzers written in Java", "\n", "JFLex \u2013 lexical analyzer generator for Java", "\n", "AnnoFlex - annotation-based code generator for lexical scanners for Java", "\n", "RE/flex", " - a fast variant of lex/flex for C++ generates scanners with tables or direct code", "\n", "Quex", " \u2013 fast universal lexical analyzer generator for C and C++ written in Python", "\n", "FsLex \u2013 lexer generator for byte and Unicode character input for F#", "\n", "re2c", " \u2013 lexer generator for ", "C", " and ", "C++", "[9]", "\n", "PLY", " - the Python module ply.lex enables the lexical analysis part", "\n", "\n", "Phrase structure", "[", "edit", "]", "\n", "Lexical analysis mainly segments the input stream of characters into tokens, simply grouping the characters into pieces and categorizing them. However, the lexing may be significantly more complex; most simply, lexers may omit tokens or insert added tokens. Omitting tokens, notably whitespace and comments, is very common, when these are not needed by the compiler. Less commonly, added tokens may be inserted. This is done mainly to group tokens into ", "statements", ", or statements into blocks, to simplify the parser.", "\n", "Line continuation", "[", "edit", "]", "\n", "Line continuation", " is a feature of some languages where a newline is normally a statement terminator. Most often, ending a line with a backslash (immediately followed by a ", "newline", ") results in the line being ", "continued", " \u2013 the following line is ", "joined", " to the prior line. This is generally done in the lexer: the backslash and newline are discarded, rather than the newline being tokenized. Examples include ", "bash", ",", "[10]", " other shell scripts and Python.", "[11]", "\n", "Semicolon insertion", "[", "edit", "]", "\n", "Many languages use the semicolon as a statement terminator. Most often this is mandatory, but in some languages the semicolon is optional in many contexts. This is mainly done at the lexer level, where the lexer outputs a semicolon into the token stream, despite one not being present in the input character stream, and is termed ", "semicolon insertion", " or ", "automatic semicolon insertion", ". In these cases, semicolons are part of the formal phrase grammar of the language, but may not be found in input text, as they can be inserted by the lexer. Optional semicolons or other terminators or separators are also sometimes handled at the parser level, notably in the case of ", "trailing commas", " or semicolons.", "\n", "Semicolon insertion is a feature of ", "BCPL", " and its distant descendent ", "Go", ",", "[12]", " though it is absent in B or C.", "[13]", " Semicolon insertion is present in ", "JavaScript", ", though the rules are somewhat complex and much-criticized; to avoid bugs, some recommend always using semicolons, while others use initial semicolons, termed ", "defensive semicolons", ", at the start of potentially ambiguous statements.", "\n", "Semicolon insertion (in languages with semicolon-terminated statements) and line continuation (in languages with newline-terminated statements) can be seen as complementary: semicolon insertion adds a token, even though newlines generally do ", "not", " generate tokens, while line continuation prevents a token from being generated, even though newlines generally ", "do", " generate tokens.", "\n", "Off-side rule", "[", "edit", "]", "\n", "Further information: ", "Off-side rule", "\n", "The ", "off-side rule", " (blocks determined by indenting) can be implemented in the lexer, as in ", "Python", ", where increasing the indenting results in the lexer emitting an INDENT token, and decreasing the indenting results in the lexer emitting a DEDENT token.", "[14]", " These tokens correspond to the opening brace ", "{", " and closing brace ", "}", " in languages that use braces for blocks, and means that the phrase grammar does not depend on whether braces or indenting are used. This requires that the lexer hold state, namely the current indent level, and thus can detect changes in indenting when this changes, and thus the lexical grammar is not ", "context-free", ": INDENT\u2013DEDENT depend on the contextual information of prior indent level.", "\n", "Context-sensitive lexing", "[", "edit", "]", "\n", "Generally lexical grammars are context-free, or almost so, and thus require no looking back or ahead, or backtracking, which allows a simple, clean, and efficient implementation. This also allows simple one-way communication from lexer to parser, without needing any information flowing back to the lexer.", "\n", "There are exceptions, however. Simple examples include: semicolon insertion in Go, which requires looking back one token; concatenation of consecutive string literals in Python,", "[15]", " which requires holding one token in a buffer before emitting it (to see if the next token is another string literal); and the off-side rule in Python, which requires maintaining a count of indent level (indeed, a stack of each indent level). These examples all only require lexical context, and while they complicate a lexer somewhat, they are invisible to the parser and later phases.", "\n", "A more complex example is ", "the lexer hack", " in C, where the token class of a sequence of characters cannot be determined until the semantic analysis phase, since typedef names and variable names are lexically identical but constitute different token classes. Thus in the hack, the lexer calls the semantic analyzer (say, symbol table) and checks if the sequence requires a typedef name. In this case, information must flow back not from the parser only, but from the semantic analyzer back to the lexer, which complicates design.", "\n", "Notes", "[", "edit", "]", "\n", "\n", "References", "[", "edit", "]", "\n", "\n", "\n", "\n", "^", " ", "www.cs.man.ac.uk", "\n", "^", " ", "page 111, \"Compilers Principles, Techniques, & Tools, 2nd Ed.\" (WorldCat) by Aho, Lam, Sethi and Ullman, as quoted in ", "https://stackoverflow.com/questions/14954721/what-is-the-difference-between-token-and-lexeme", "\n", "^", " ", "Perl 5 Porters. ", "\"perlinterp: Perl 5 version 24.0 documentation\"", ". ", "perldoc.perl.org - Official documentation for the Perl programming language", ". perldoc.perl.org", ". Retrieved ", "26 January", " 2017", ".", "\u00a0", "\n", "^", " ", "Guy Coder (19 February 2013). ", "\"What is the difference between token and lexeme?\"", ". ", "Stack Overflow", ". Stack Exchange Inc", ". Retrieved ", "26 January", " 2017", ".", "\u00a0", "\n", "^", " ", "page 111, \"Compilers Principles, Techniques, & Tools, 2nd Ed.\" (WorldCat) by Aho, Lam, Sethi and Ullman, as quoted in ", "https://stackoverflow.com/questions/14954721/what-is-the-difference-between-token-and-lexeme", "\n", "^", " ", "mitpress.mit.edu", "\n", "^", " ", "Huang, C., Simon, P., Hsieh, S., & Prevot, L. (2007) ", "Rethinking Chinese Word Segmentation: Tokenization, Character Classification, or Word break Identification", "\n", "^", " ", "Bumbulis, P.; Cowan, D. D. (Mar\u2013Dec 1993). \"RE2C: A more versatile scanner generator\". ", "ACM Letters on Programming Languages and Systems", ". ", "2", " (1\u20134): 70\u201384. ", "doi", ":", "10.1145/176454.176487", ".", "\u00a0", "\n", "^", " ", "[1]", ", re2c manual", "\n", "^", " ", "Bash Reference Manual", ", ", "3.1.2.1 Escape Character", "\n", "^", " ", "Python Documentation", ", ", "2. Lexical analysis", ": ", "2.1.5. Explicit line joining", "\n", "^", " ", "Effective Go", ", \"", "Semicolons", "\"", "\n", "^", " ", "\"", "Semicolons in Go", "\", golang-nuts, Rob 'Commander' Pike, 12/10/09", "\n", "^", " ", "Python Documentation", ", ", "2. Lexical analysis", ": ", "2.1.8. Indentation", "\n", "^", " ", "Python Documentation", ", ", "2. Lexical analysis", ": ", "2.4.2. String literal concatenation", "\n", "\n", "\n", "\n", "\n", "\n", "Compiling with C# and Java", ", Pat Terry, 2005, ", "ISBN", "\u00a0", "032126360X", "\n", "Algorithms + Data Structures = Programs", ", Niklaus Wirth, 1975, ", "ISBN", "\u00a0", "0-13-022418-9", "\n", "Compiler Construction", ", Niklaus Wirth, 1996, ", "ISBN", "\u00a0", "0-201-40353-6", "\n", "Sebesta, R. W. (2006). Concepts of programming languages (Seventh edition) pp.\u00a0177. Boston: Pearson/Addison-Wesley.", "\n", "\n", "\n", "External links", "[", "edit", "]", "\n", "\n", "Yang, W.; Tsay, Chey-Woei; Chan, Jien-Tsai (2002). ", "\"On the applicability of the longest-match rule in lexical analysis\"", ". ", "Computer Languages, Systems and Structures", ". Elsevier Science. ", "28", " (3): 273\u2013288. ", "doi", ":", "10.1016/S0096-0551(02)00014-0", ". NSC 86-2213-E-009-021 and NSC 86-2213-E-009-079.", "\u00a0", "\n", "Trim, Craig (Jan 23, 2013). ", "\"The Art of Tokenization\"", ". ", "Developer Works", ". IBM.", "\u00a0", "\n", "Word Mention Segmentation Task", ", an analysis", "\n", "\n\n\n", "\n", "\n", "\n", "\n"], "lastUpdated": " 19 January 2018, at 20:15."}, +{"title": "August Capital", "text": ["\n", "August Capital", "\n", "\n", "\n", "Type", "\n", "\n", "Venture fund", "\n", "\n", "\n", "Industry", "\n", "finance", "\n", "\n", "\n", "Founded", "\n", "1995 ", "[1]", "\n", "\n", "\n", "Founder", "\n", "\n", "\n", "\n", "David Marquardt", "\n", "John Johnston", "\n", "\n", "\n", "\n", "\n", "\n", "Website", "\n", "augustcap", ".com", "\n", "\n", "\n", "August Capital", " is a ", "venture capital", " firm founded by ", "David Marquardt", " and John Johnston in 1995. It is focused on information technology and is based in ", "Menlo Park, California", ".", "\n", "Company", "[", "edit", "]", "\n", "August Capital specialized in growth capital and startup investments. The firm has invested in all stages with a focus on early and late stage, management buyouts, and private investments in public equity. The firm has invested in the information technology spectrum including IT infrastructure, data center technologies, systems management, security, storage, and cloud computing systems and software.", "[2]", "\n", "Partner ", "David Hornik", " was on the ", "Midas List", " in 2012.", "[3]", "\n", "Investments include ", "Rocket Lawyer", ", ", "Be Incorporated", ", ", "Seagate", ", ", "Postini", ", ", "Six Apart", ", and ", "StumbleUpon", ".", "[", "citation needed", "]", "\n", "References", "[", "edit", "]", "\n", "\n", "\n", "\n", "^", " ", "\"August Capital Raises $450 Million For Its Seventh Fund, August VII\"", ".", "\u00a0", "\n", "^", " ", "\"August Capital: Private Company Information - Businessweek\"", ". ", "www.bloomberg.com", ". Retrieved ", "2016-07-19", ".", "\u00a0", "\n", "^", " ", "https://www.forbes.com/lists/midas/2012/midas-list-top-tech-investors_list.html", "\n", "\n", "\n", "\n", "\n", "\n", "\n", " ", "\n", "This article about a private equity or venture capital firm based in the United States is a ", "stub", ". You can help Wikipedia by ", "expanding it", ".", "\n", "\n", "\n", "v", "\n", "t", "\n", "e", "\n", "\n", "\n", "\n", "\n", "\n\n\n", "\n", "\n", "\n", "\n"], "lastUpdated": " 24 August 2017, at 12:45."}, +{"title": "List of content management systems", "text": ["\n", "\n", "\n", "\n", "\n", "\n", "The ", "factual accuracy", " of parts of this article (those related to article) ", "may be compromised due to out-of-date information", ". ", "Please update this article to reflect recent events or newly available information.", " ", "(May 2012)", "\n", "\n", "\n", "\n", "This is a ", "list of notable ", "content management systems", " that are used to organize and facilitate collaborative content creation. Many of them are built on top of separate ", "content management frameworks", ".", "\n", "\n", "\n", "\n", "Contents", "\n", "\n", "\n", "1", " ", "Open source software", "\n", "\n", "1.1", " ", "Java", "\n", "\n", "1.1.1", " ", "Java packages/bundle", "\n", "\n", "\n", "1.2", " ", "Microsoft ASP.NET", "\n", "1.3", " ", "Perl", "\n", "1.4", " ", "PHP", "\n", "1.5", " ", "Python", "\n", "1.6", " ", "Ruby on Rails", "\n", "1.7", " ", "ColdFusion Markup Language (CFML)", "\n", "1.8", " ", "JavaScript", "\n", "1.9", " ", "Others", "\n", "\n", "\n", "2", " ", "Software as a service (SaaS)", "\n", "3", " ", "Proprietary software", "\n", "4", " ", "Other content management frameworks", "\n", "5", " ", "See also", "\n", "6", " ", "References", "\n", "7", " ", "External links", "\n", "\n", "\n", "\n", "Open source software", "[", "edit", "]", "\n", "\n", "This section lists free and ", "open-source software", " that can be installed and managed on a web server.", "\n", "\n", "Systems listed on a light purple background are no longer in active development.", "\n", "Java", "[", "edit", "]", "\n", "\n", "\n", "Name", "\n", "Platform", "\n", "Supported databases", "\n", "Latest stable release", "\n", "Licenses", "\n", "Latest release date", "\n", "\n", "\n", "Apache Roller", "\n", "Java", "\n", "HSQL", ", ", "MySQL", ", ", "Oracle", ", ", "SQL Server", ", ", "DB2", ", ", "PostgreSQL", ", ", "Apache Derby", "\n", "5.1.2", "\n", "Apache 2.0 License", "\n", "2015-03-01", "[1]", "[2]", "\n", "\n", "\n", "Ametys CMS", "\n", "Java", "\n", "MySQL", ", ", "Oracle", ", ", "SQL Server", ", ", "JCR", ", ", "Apache Derby", "\n", "3.7.1", "\n", "Apache 2.0 License", "\n", "2015-04-27", "\n", "\n", "\n", "Crafter CMS", "\n", "Java", "\n", "Git", ", ", "Solr", ", ", "CMIS", "\n", "3.0.0", "\n", "GNU", " ", "GPL", " v3", "\n", "2017-08-01", "\n", "\n", "\n", "dotCMS", "\n", "Java", "\n", "MySQL", ", ", "Oracle", ", ", "MSSQL", ", ", "PostgreSQL", "\n", "4.2.0", "\n", "GNU", " ", "GPL", " v3", "\n", "2017-10-17", "\n", "\n", "\n", "Liferay", "\n", "Java", "\n", "HSQLDB", ", ", "MySQL", ", ", "Oracle", ", ", "SQL Server", ", ", "DB2", ", ", "Apache Derby", ", ", "Informix", ", ", "InterBase", ", JDataStore, ", "PostgreSQL", ", ", "SAP", ", ", "Sybase", "\n", "7.0.1", "\n", "LGPL", "\n", "2016-06-10", "\n", "\n", "\n", "eXo Platform", " Community Edition", "\n", "Java", "\n", "HSQLDB", ", ", "MySQL", ", ", "Oracle", ", ", "SQL Server", ", ", "DB2", ", ", "Apache Derby", ", ", "PostgreSQL", ", ", "Sybase", "\n", "4.3", "\n", "LGPL", "\n", "2016-01-21", "\n", "\n", "\n", "DSpace", "\n", "Java", "\n", "Oracle", ", ", "PostgreSQL", "\n", "5.0", "\n", "BSD License", "\n", "2015-01-16", "\n", "\n", "\n", "Fedora Commons", "\n", "Java", "\n", "MySQL", ", ", "Oracle", ", ", "PostgreSQL", ", ", "Mulgara", " (MPTSTore RDF Semantic Triplestore)", "\n", "4.1.0", "\n", "Apache License", "\n", "2015-02-04", "\n", "\n", "\n", "LogicalDOC", " Community Edition", "\n", "Java", "\n", "MySQL", ", ", "Oracle", ", ", "SQL Server", ", ", "PostgreSQL", "\n", "7.4.2", "[3]", "\n", "LGPL", "\n", "2016-03-24", "\n", "\n", "\n", "Nuxeo EP", "\n", "Java", "\n", "MySQL", ", ", "Oracle", ", ", "SQL Server", ", ", "Ingres", ", ", "PostgreSQL", ", ", "MongoDB", "\n", "7.3", "\n", "LGPL", "\n", "2014-11-12", "\n", "\n", "\n", "OpenCms", "\n", "Java", "\n", "HSQL", ", ", "MySQL", ", ", "Oracle", ", ", "SQL Server", ", ", "DB2", ", ", "PostgreSQL", "\n", "10.5.1", "\n", "LGPL", "\n", "2017-02-15", "\n", "\n", "\n", "Alfresco", " Community Edition", "\n", "Java", "\n", "MySQL", ", ", "Oracle", ", ", "SQL Server", ", ", "PostgreSQL", ", ", "DB2", ",", "\n", "201707", "\n", "LGPL", "\n", "2016-05-17", "\n", "\n", "\n", "Hippo CMS", "\n", "Java", "\n", "MySQL", ", ", "Oracle", ", ", "SQL Server", ", ", "Ingres", ", ", "PostgreSQL", ", ", "JCR", "\n", "12.0.2", "[4]", "\n", "Apache 2.0 License", "\n", "2017-10-10", "\n", "\n", "\n", "OpenWGA", "\n", "Java", "\n", "MySQL", ", ", "PostgreSQL", ", ", "IBM DB2", ", ", "HSQLDB", ", ", "Oracle", ", ", "SQL Server", ", ", "IBM Lotus Domino", ", ", "CMIS", "\n", "7.1", "\n", "GPL", " & proprietary", "\n", "2015-02-25", "\n", "\n", "\n", "Jahia", " Community Distribution", "\n", "Java", "\n", "Apache Derby", ", ", "JCR", ", ", "MySQL", ", ", "PostgreSQL", "\n", "7.0.0", "\n", "GPL", "\n", "2014-04-01", "\n", "\n", "\n", "Magnolia", "\n", "Java", "\n", "H2", ", ", "Derby", ", ", "MySQL", ", ", "PostgreSQL", ", ", "Oracle", ", ", "MSSQL", "\n", "5.6", "\n", "GPL", " & proprietary", "\n", "2017-11-15", "\n", "\n", "\n", "OpenKM", "\n", "Java", "\n", "MySQL", ", ", "PostgreSQL", ", ", "Oracle", ", ", "SQL Server", ", ", "HSQLDB", "\n", "6.3.2", "\n", "GPL", "\n", "2016-10-24", "\n", "\n", "\n", "Thingamablog", "\n", "Java", "\n", "\n", "1.5.1", "\n", "GPL", "\n", "2009-11-23", "\n", "\n", "\n", "XWiki", "\n", "Java", "\n", "MySQL", ", ", "PostgreSQL", ", ", "Oracle", ", ", "SQL Server", ", ", "HSQLDB", "\n", "8.4.1", "\n", "LGPL", "\n", "2016-11-22", "\n", "\n", "\n", "Java packages/bundle", "[", "edit", "]", "\n", "\n", "\n", "Name", "\n", "Platform", "\n", "Supported databases", "\n", "Latest stable release", "\n", "Licenses", "\n", "Latest release date", "\n", "\n", "\n", "Apache Lenya", "\n", "Java", ", ", "XML", ", ", "Apache Cocoon", "\n", "\n", "2.0.4", "[5]", "\n", "Apache License", "\n", "2011-03-14", "\n", "\n", "\n", "Daisy", "\n", "Java", ", ", "XML", ", ", "Apache Cocoon", "\n", "MySQL", "\n", "2.4.2", "\n", "Apache License", "\n", "2011-02-21", "\n", "\n", "\n", "Microsoft ASP.NET", "[", "edit", "]", "\n", "\n", "\n", "Name", "\n", "Platform", "\n", "Supported databases", "\n", "Latest stable release", "\n", "Licenses", "\n", "Latest release date", "\n", "\n", "\n", "C1 CMS", "\n", "ASP.NET", " (Web Forms, MVC)", "\n", "XML", ", ", "SQL Server", "\n", "6.1", "\n", "Mozilla Public License", "\n", "2017-04-27", "[6]", "\n", "\n", "\n", "DNN", "\n", "ASP.NET", " (Web Forms, MVC)", "\n", "SQL Server", ", ", "SQL Server Express", ", ", "SQL Azure", "\n", "9.1.1", "\n", "MIT License", "\n", "2017-07-05", "[7]", "\n", "\n", "\n", "Kentico CMS", "\n", "ASP.NET", "\n", "SQL Server", "\n", "10.0", "\n", "Proprietary, ", "Free", "\n", "2016-11-30", "[8]", "\n", "\n", "\n", "mojoPortal", "\n", "ASP.NET", "\n", "SQL Server", ", ", "MySQL", ", ", "PostgreSQL", ", ", "SQLite", ", ", "Firebird", ", ", "SQL CE", "\n", "2.4.1.0", "\n", "CPL", "\n", "2016-04-10", "[9]", "\n", "\n", "\n", "Orchard Project", "\n", "ASP.NET", " (Web Forms, MVC)", "\n", "SQL Server", ", ", "MySQL", ", ", "PostgreSQL", ", ", "SQLite", "\n", "1.10.1", "\n", "New BSD License", "\n", "2016-05-11", "[10]", "\n", "\n", "\n", "Umbraco", "\n", "ASP.NET", " (Web Forms, MVC)", "\n", "SQL Server", ", ", "SQL CE", ", ", "SQL Azure", ", ", "MySQL", "\n", "7.6.5", "\n", "MIT License", "\n", "2017-08-08", "[11]", "\n", "\n", "\n", "BetterCMS", "\n", "ASP.NET", " (Web Forms, MVC)", "\n", "SQL Server", ", ", "SQL Azure", "[12]", "\n", "2.0.6", "\n", "LGPL", "\n", "2016-06-14", "[13]", "\n", "\n", "\n", "Perl", "[", "edit", "]", "\n", "\n", "\n", "Name", "\n", "Platform", "\n", "Supported databases", "\n", "Latest stable release", "\n", "Licenses", "\n", "Latest release date", "\n", "\n", "\n", "blosxom", "\n", "Perl", "\n", "Flat-file database", "\n", "2.1.2", "\n", "MIT", "\n", "2008-10-02", "\n", "\n", "\n", "Bricolage", "\n", "Perl", " on ", "mod perl", "\n", "MySQL", ", ", "PostgreSQL", ", ", "Oracle", "\n", "2.0.1", "\n", "BSD", "\n", "2011-02-09", "\n", "\n", "\n", "EPrints", "\n", "Perl", " on ", "mod perl", "\n", "MySQL", ", ", "PostgreSQL", "\n", "3.3.15", "\n", "GPL", "\n", "2015-12-22", "[14]", "\n", "\n", "\n", "Foswiki", "\n", "Perl", "\n", "Flat-file database", "\n", "2.1.4", "\n", "GPL", "\n", "2017-06-01", "[15]", "\n", "\n", "\n", "Ikiwiki", "\n", "Perl", "\n", "Git (software)", ", ", "Apache Subversion", ", ", "Mercurial", "\n", "3.20170111", "\n", "GPL", "\n", "2017-01-11", "[16]", "\n", "\n", "\n", "Movable Type", " Open Source", "\n", "Perl", ", ", "mod perl", ", ", "FastCGI", ", w/", "PHP", "\n", "MySQL", "\n", "5.2.13", "\n", "GPL", "\n", "2015-04-14", "[17]", "\n", "\n", "\n", "TWiki", "\n", "Perl", "\n", "Plain files (under version control)", "\n", "6.0.2", "\n", "GPL", "\n", "2015-11-29", "[18]", "\n", "\n", "\n", "Sellerdeck", " eCommerce", "\n", "Perl", "\n", "Flat-file database", ", ", "Flat-file database", "\n", "16.0.3", "\n", "GPL", "\n", "2017-02-20", "\n", "\n", "\n", "SPINE", "\n", "Perl", ", ", "mod perl", "\n", "MySQL", ", ", "PostgreSQL", "\n", "1.2.2", "\n", "GPL", "\n", "2006-12-27", "\n", "\n", "\n", "WebGUI", "\n", "Perl", " on ", "mod perl", "\n", "MySQL", "\n", "7.10.30", "\n", "GPL", "\n", "2016-01-06", "[19]", "\n", "\n", "\n", "PHP", "[", "edit", "]", "\n", "\n", "\n", "Name", "\n", "Platform", "\n", "Supported databases", "\n", "Latest stable release", "\n", "Licenses", "\n", "Latest release date", "\n", "\n", "\n", "ATutor", "\n", "PHP", "\n", "MySQL", "\n", "2.2.2", "\n", "GPL", "\n", "2016-07-01", "[20]", "\n", "\n", "\n", "Backdrop CMS", "\n", "PHP", "\n", "MySQL", "\n", "1.8.0", "\n", "GPLv2+", "\n", "2017-09-16", "[21]", "\n", "\n", "\n", "b2evolution", "\n", "PHP", "\n", "MySQL", ", ", "MariaDB", "[22]", "\n", "6.9.3", "\n", "GPLv2", "\n", "2017-08-25", "[23]", "\n", "\n", "\n", "CMSimple", "\n", "PHP", "\n", "Flat-file database", "\n", "4.7.2", "\n", "GPLv3", "\n", "2017-05-07", "[24]", "\n", "\n", "\n", "CMS Made Simple", "\n", "PHP", "\n", "MySQL", "\n", "2.2.2", "\n", "GPL", "\n", "2017-07-08", "[25]", "\n", "\n", "\n", "Coderity", "\n", "PHP", "\n", "MySQL", "\n", "3.3.13", "\n", "MIT", "\n", "2015-02-27", "[26]", "\n", "\n", "\n", "Composr CMS", "\n", "PHP", "\n", "MySQL", "\n", "9.0.30", "\n", "CPAL", "\n", "2016-09-18", "[27]", "\n", "\n", "\n", "concrete5", "\n", "PHP", "\n", "MySQL", "\n", "8.3.1", "\n", "MIT", "\n", "2017-12-21", "[28]", "\n", "\n", "\n", "Contao", "\n", "PHP", "\n", "MySQL", "\n", "4.4.0", "\n", "LGPL", "\n", "2017-06-16", "[29]", "\n", "\n", "\n", "DokuWiki", "\n", "PHP", "\n", "Flat-file database", "\n", "2017-02-19a", "\n", "GPL", "\n", "2017-02-19", "[30]", "\n", "\n", "\n", "Dotclear", "\n", "PHP", "\n", "MySQL", ", ", "PostgreSQL", ", ", "SQLite", "\n", "2.12", "\n", "GPL", "\n", "2017-07-27", "[31]", "\n", "\n", "\n", "Drupal", "\n", "PHP", "\n", "MariaDB", ", ", "Microsoft SQL Server", ", ", "MySQL", ", ", "Oracle", ", ", "Percona Server", ", ", "PostgreSQL", ", ", "SQLite", "[32]", "\n", "8.4.3", "\n", "GPLv2+", "\n", "2017-12-06", "[33]", "\n", "\n", "\n", "Exponent CMS", "\n", "PHP", "\n", "MySQL", "\n", "2.4.1", "[34]", "\n", "GPL", "\n", "2017-08-18", "[\u00b1]", "\n", "\n", "\n", "eZ Publish", "\n", "PHP", "\n", "MySQL", ", ", "PostgreSQL", ", ", "Oracle", ", ", "Microsoft SQL Server", "\n", "5.4", "\n", "GPL", "\n", "2014-12-02", "[35]", "\n", "\n", "\n", "eZ Platform", "\n", "PHP", "\n", "MySQL", ", ", "MariaDB", ", ", "PostgreSQL", "\n", "1.7.0", "[36]", "\n", "GPL", "\n", "2016-12-15", "\n", "\n", "\n", "Geeklog", "\n", "PHP", "\n", "MySQL", ", ", "PostgreSQL", ", ", "Microsoft SQL Server", "\n", "2.1.3", "\n", "GPL", "\n", "2017-06-22", "[37]", "\n", "\n", "\n", "GetSimple CMS", "\n", "PHP", "\n", "Flat-file database", "\n", "3.3.13", "\n", "GPL", "\n", "2016-10-11", "[38]", "\n", "\n", "\n", "Habari", "\n", "PHP", "\n", "MySQL", ", ", "PostgreSQL", ",", "[39]", " ", "SQLite", "\n", "0.9.2", "\n", "Apache License", "\n", "2014-09-16", "[40]", "\n", "\n", "\n", "ImpressCMS", "\n", "PHP", "\n", "MySQL", "\n", "1.3.10", "\n", "GPL", "\n", "2016-12-28", "[41]", "\n", "\n", "\n", "ImpressPages", "\n", "PHP", "\n", "MySQL", "\n", "4.8.0", "\n", "GPL", " ", "MIT", "\n", "2016-10-30", "[42]", "\n", "\n", "\n", "Jamroom", "\n", "PHP", "\n", "MySQL", ", ", "MariaDB", ", ", "Percona", "\n", "6.1.0", "\n", "MPL", "\n", "2017-08-30", "[43]", "\n", "\n", "\n", "Joomla!", "\n", "PHP", "\n", "MySQL", ", ", "PostgreSQL", ", ", "MSSQL", ", ", "SQLite", "\n", "3.8.1", "\n", "GPL", "\n", "2017-10-04", "[44]", "\n", "\n", "\n", "Kajona", "\n", "PHP", "\n", "MySQL", ", ", "PostgreSQL", ", ", "SQLite", ", ", "MariaDB", ", ", "Oracle", "\n", "6.2", "\n", "LGPL", "\n", "2017-06-08", "[45]", "\n", "\n", "\n", "Known", "\n", "PHP", "\n", "MySQL", ", ", "MongoDB", "\n", "0.9.2", "\n", "Apache License", "\n", "2016-04-24", "[46]", "\n", "\n", "\n", "Magento", "\n", "PHP", "\n", "MySQL", "\n", "2.1.8", "\n", "OSL Ver. 3", " / ", "AFL Ver. 3", "\n", "2017-08-09", "[47]", "\n", "\n", "\n", "Mambo", "\n", "PHP", "\n", "MySQL", "\n", "4.6.5", "\n", "GPL", "\n", "2008-06-01", "\n", "\n", "\n", "MediaWiki", "\n", "PHP", "\n", "MySQL", ", ", "MariaDB", ", ", "PostgreSQL", ", ", "SQLite", ", ", "MSSQL", "[48]", "\n", "1.30.0", "\n", "GPL", "\n", "2017-12-12", "[49]", "\n", "\n", "\n", "MiaCMS", "\n", "PHP", "\n", "MySQL", "\n", "4.9", "\n", "GPL", "\n", "2009-07-29", "[50]", "\n", "\n", "\n", "Midgard CMS", "\n", "PHP", " (Midgard framework)", "\n", "MySQL", "\n", "12.0.9.2", "\n", "LGPL", "\n", "2012-09-26", "[51]", "\n", "\n", "\n", "MODX", "\n", "PHP", "\n", "MySQL", "\n", "2.5.8", "\n", "GPL", "\n", "2017-09-13", "[52]", "\n", "\n", "\n", "Novius OS", "\n", "PHP", "\n", "MySQL", "\n", "5.0.1 (Elche)", "\n", "AGPLv3", "\n", "2014-07-08", "[53]", "\n", "\n", "\n", "Nucleus CMS", "\n", "PHP", "\n", "MySQL", "\n", "3.64", "\n", "GPL", "\n", "2011-03-14", "[54]", "\n", "\n", "\n", "OctoberCMS", "\n", "PHP", "\n", "MySQL", ", ", "PostgreSQL", ", ", "SQLite", "\n", "431", "\n", "MIT", "\n", "2017-12-19", "[55]", "\n", "\n", "\n", "Omeka", "\n", "PHP", "\n", "MySQL", "\n", "2.5", "\n", "GPL", "\n", "2017-01-31", "[56]", "\n", "\n", "\n", "papaya CMS", "\n", "PHP", "\n", "MySQL", ", ", "PostgreSQL", ", ", "SQLite", "\n", "5.5.2", "\n", "GPL v2", "\n", "2013-02-12", "[57]", "\n", "\n", "\n", "pH7CMS", "\n", "PHP", "\n", "MySQL", ", ", "MariaDB", "\n", "8.0.6", "\n", "GPL 3.0", "\n", "2017-08-27", "[58]", "\n", "\n", "\n", "Phire CMS", "\n", "PHP", "\n", "MySQL", "\n", "2.1.0", "\n", "New BSD License", "\n", "2016-07-07", "[59]", "\n", "\n", "\n", "PHP-Nuke", "\n", "PHP", "\n", "MySQL", "\n", "8.3.2", "\n", "GPL", "\n", "2014-01-30", "[60]", "\n", "\n", "\n", "phpWebLog", "\n", "PHP", "\n", "MySQL", "\n", "0.5.3", "\n", "GPL", "\n", "2001-10-31", "\n", "\n", "\n", "phpWiki", "\n", "PHP", "\n", "MySQL", "\n", "1.5.5", "\n", "GPL", "\n", "2015-12-11", "[61]", "\n", "\n", "\n", "Pimcore", "\n", "PHP", "\n", "MySQL", "\n", "5.1", "\n", "GPL", "\n", "2018-01-02", "[62]", "\n", "\n", "\n", "PivotX", "\n", "PHP", "\n", "MySQL", ", ", "Flat-file database", "\n", "2.3.11", "\n", "GPL", "\n", "2015-06-21", "[63]", "\n", "\n", "\n", "Pixie (CMS)", "\n", "PHP", "\n", "MySQL", "\n", "1.0.4", "\n", "GPL", "\n", "2010-03-21", "\n", "\n", "\n", "Pluck", "\n", "PHP", "\n", "Flat-file database", "\n", "4.7.3", "\n", "GPL3", "\n", "2014-12-08", "[64]", "\n", "\n", "\n", "PmWiki", "\n", "PHP", "\n", "Flat-file database", "[65]", " ", "SQLite", "[66]", "\n", "2.2.106", "[67]", "\n", "GPL", "\n", "2017-12-01", "\n", "\n", "\n", "Prestashop", "\n", "PHP", "\n", "MySQL", "\n", "1.6.1.8", "\n", "Open Software License 3.0", "\n", "2016-10-26", "[68]", "\n", "\n", "\n", "ProcessWire", "\n", "PHP", "\n", "MySQL", "\n", "3.0.62", "\n", "Mozilla Public License 2.0", "\n", "2017-05-12", "[69]", "\n", "\n", "\n", "SMW+", "\n", "PHP", " - ", "MediaWiki", "\n", "MySQL", "\n", "1.7.0", "\n", "GPL", "\n", "2012-04-24", "[70]", "\n", "\n", "\n", "Serendipity", "\n", "PHP", " + ", "Smarty", "\n", "MySQL", ", ", "PostgreSQL", ", ", "MySQLi", ", ", "SQLite", "\n", "2.0.4", "\n", "BSD", "\n", "2016-09-26", "[71]", "\n", "\n", "\n", "SilverStripe", "\n", "PHP", "\n", "MySQL", ", ", "Microsoft SQL Server", ", ", "PostgreSQL", ", ", "SQLite", ", ", "Oracle", "\n", "3.5.3", "\n", "BSD", "\n", "2017-02-21", "[72]", "\n", "\n", "\n", "SPIP", "\n", "PHP", "\n", "MySQL", ", ", "PostgreSQL", ", ", "SQLite", "\n", "3.1.6", "\n", "LGPL", "\n", "2017-06-12", "[73]", "\n", "\n", "\n", "Textpattern", "\n", "PHP", "\n", "MySQL", "\n", "4.6.2", "\n", "GPL", "\n", "2016-10-21", "[74]", "\n", "\n", "\n", "Tiki Wiki CMS Groupware", "\n", "PHP", "\n", "MySQL", "\n", "15.2", "\n", "LGPL", "\n", "2016-07-06", "[75]", "\n", "\n", "\n", "TYPO3", "\n", "PHP", "\n", "MySQL", ", ", "Oracle", ", ", "PostgreSQL", "\n", "8.7.8", "[76]", "\n", "GPL", "\n", "2017-04-04", "[\u00b1]", "\n", "\n", "\n", "Wolf CMS", "\n", "PHP", "\n", "MySQL", ", ", "PostgreSQL", ", ", "SQLite", "\n", "0.8.3.1", "\n", "GPL v3", "\n", "2015-08-10", "[77]", "\n", "\n", "\n", "WordPress", "\n", "PHP", "\n", "MySQL", ", ", "MariaDB", "\n", "4.9.2", "[78]", "\n", "GPL", "\n", "2018-01-16", "[\u00b1]", "\n", "\n", "\n", "Xaraya", "\n", "PHP", "\n", "MySQL", ", ", "PostgreSQL", "\n", "2.4.0", "\n", "GPL", "\n", "2013-02-23", "[79]", "\n", "\n", "\n", "XOOPS", "\n", "PHP", "\n", "MySQL", "\n", "2.5.8", "\n", "GPL", "\n", "2016-05-27", "[80]", "\n", "\n", "\n", "Python", "[", "edit", "]", "\n", "\n", "\n", "Name", "\n", "Platform", "\n", "Supported databases", "\n", "Latest stable release", "\n", "Licenses", "\n", "Latest release date", "\n", "\n", "\n", "django CMS", "\n", "Python", "/", "Django", "\n", "PostgreSQL", ", ", "MySQL", ", ", "SQLite", " 3 and ", "Oracle", "\n", "3.3.0", "\n", "BSD", "\n", "2016-05-27", "\n", "\n", "\n", "Mezzanine", "\n", "Python", "/", "Django", "\n", "PostgreSQL", ", ", "MySQL", ", ", "SQLite", " 3 and ", "Oracle", "\n", "4.2.2", "\n", "BSD", "\n", "2016-11-25", "[81]", "\n", "\n", "\n", "MoinMoin", "\n", "Python", "\n", "Flat-file database", "\n", "1.9.9", "\n", "GPL", "\n", "2016-10-31", "[82]", "\n", "\n", "\n", "Plone", "\n", "Python", "/", "Zope", "\n", "MySQL", ", ", "PostgreSQL", ", ", "SQLite", ", ", "Oracle", ", ", "ZODB", ", via ", "Zope", "\n", "5.0.7", "\n", "GPL", "\n", "2017-03-15", "[83]", "\n", "\n", "\n", "Wagtail", "\n", "Python", "/", "Django", "\n", "PostgreSQL", ", ", "MySQL", ", ", "SQLite", " 3 and ", "Oracle", "\n", "1.12.2", "\n", "BSD", "\n", "2017-09-18", "[84]", "\n", "\n", "\n", "Ruby on Rails", "[", "edit", "]", "\n", "\n", "\n", "Name", "\n", "Platform", "\n", "Supported databases", "\n", "Latest stable release", "\n", "Licenses", "\n", "Latest release date", "\n", "\n", "\n", "Alchemy CMS", "\n", "Ruby on Rails", "\n", "PostgreSQL", ", ", "MySQL", ", ", "SQLite", "\n", "3.5", "\n", "BSD", "\n", "2016-12-22", "\n", "\n", "\n", "BrowserCMS", "\n", "Ruby on Rails", "\n", "MySQL", ", ", "SQLite", "\n", "3.5.7", "\n", "LGPL", "\n", "2013-07-05", "\n", "\n", "\n", "Radiant", "\n", "Ruby on Rails", "\n", "MySQL", ", ", "PostgreSQL", ", ", "SQLite", ", ", "DB2", "[85]", "\n", "1.1.4", "[86]", "\n", "MIT", "\n", "2013-09-24", "\n", "\n", "\n", "Refinery CMS", "\n", "Ruby on Rails", "\n", "MySQL", ", ", "PostgreSQL", ", ", "SQLite", "\n", "3.0.5", "[87]", "\n", "MIT", "\n", "2016-11-23", "\n", "\n", "\n", "Typo", "\n", "Ruby on Rails", "\n", "MySQL", ", ", "PostgreSQL", ", ", "SQLite", "\n", "8.3.3", "[88]", "\n", "MIT", "\n", "2016-11-03", "\n", "\n", "\n", "ColdFusion Markup Language (CFML)", "[", "edit", "]", "\n", "\n", "\n", "Name", "\n", "Platform", "\n", "Supported databases", "\n", "Latest stable release", "\n", "Licenses", "\n", "Latest release date", "\n", "\n", "\n", "ContentBox Modular CMS", "\n", "Lucee", " / ", "Railo", " / ", "Adobe ColdFusion", "\n", "MySQL", "/", "Microsoft SQL Server", "/", "PostgreSQL", "/", "HSQLDB", "/", "Apache Derby", "\n", "2.1.0", "\n", "Apache License", " or proprietary", "\n", "2015-05-05", "[89]", "\n", "\n", "\n", "Mura CMS", "\n", "Lucee", " / ", "Railo", " / ", "OpenBD", " / ", "Adobe ColdFusion", "\n", "MySQL", "/", "Microsoft SQL Server", "/", "Oracle", "\n", "7.06858", "\n", "GPL", " or proprietary", "\n", "2017-01-03", "[90]", "\n", "\n", "\n", "FarCry CMS", "\n", "Lucee", " / ", "Railo", " / ", "OpenBD", " / ", "Adobe ColdFusion", "\n", "MySQL", "/", "Microsoft SQL Server", "/", "Oracle", "/", "Postgres", "\n", "7.0.7", "\n", "GPL", " or proprietary", "\n", "2015-01-14", "[91]", "\n", "\n", "\n", "JavaScript", "[", "edit", "]", "\n", "\n", "\n", "Name", "\n", "Platform", "\n", "Supported databases", "\n", "Latest stable release", "\n", "Licenses", "\n", "Latest release date", "\n", "\n", "\n", "Ghost", "\n", "NodeJS", " (", "JavaScript", ")", "\n", "SQLite", ", ", "MySQL", "\n", "0.11.9", "[92]", "\n", "MIT", "\n", "2017-05-16", "\n", "\n", "\n", "TiddlyWiki", "\n", "JavaScript", "\n", "Flat-file database", "\n", "5.1.14", "[93]", "\n", "BSD license", "\n", "2017-04-27", "\n", "\n", "\n", "Others", "[", "edit", "]", "\n", "\n", "\n", "Name", "\n", "Platform", "\n", "Supported databases", "\n", "Latest stable release", "\n", "Licenses", "\n", "Latest release date", "\n", "\n", "\n", "OpenACS", "\n", "Tcl", " ", "AOLserver", "\n", "PostgreSQL", "/", "Oracle", "\n", "5.9.0", "\n", "GPL", "\n", "2015-12-01", "[94]", "\n", "\n", "\n", "Software as a service (SaaS)", "[", "edit", "]", "\n", "\n", "This section lists ", "proprietary software", " that includes software, hosting, and support with a single vendor. This section includes free services.", "\n", "\n", "\n", "\n", "Name", "\n", "Licensed version available", "\n", "Last stable version", "\n", "Web content management", "\n", "Group content management", "\n", "Enterprise content management", "\n", "\n", "\n", "Accrisoft Freedom", "\n", "Yes", "\n", "10.2", "\n", "Yes", "\n", "Yes", "\n", "Yes", "\n", "\n", "\n", "Adobe Business Catalyst", "\n", "\n", "V4", "\n", "Yes", "\n", "Yes", "\n", "Yes", "\n", "\n", "\n", "Alfresco", " Cloud", "\n", "Yes (Alfresco Community & Enterprise)", "\n", "2012.05", "\n", "No", "\n", "Yes", "\n", "Yes", "\n", "\n", "\n", "Crafter CMS", " Cloud", "\n", "Yes (Crafter CMS Enterprise)", "\n", "2017.08", "\n", "Yes", "\n", "Yes", "\n", "No", "\n", "\n", "\n", "censhare", "\n", "Yes", "\n", "2017.02", "\n", "Yes", "\n", "Yes", "\n", "Yes", "\n", "\n", "\n", "Clickability", " (", "Limelight Networks", ")", "\n", "No", "\n", "\n", "Yes", "\n", "No", "\n", "No", "\n", "\n", "\n", "Content SORT", "\n", "Yes", "\n", "2013.11", "\n", "Yes", "\n", "Yes", "\n", "Yes", "\n", "\n", "\n", "dotCMS", " Cloud", "[95]", "\n", "Yes", "\n", "4.2.0", "\n", "Yes", "\n", "Yes", "\n", "Yes", "\n", "\n", "\n", "Evoq based on ", "DNN", "/DotNetNuke", "\n", "Yes", "\n", "9.1", "\n", "Yes", "\n", "Yes", "\n", "Yes", "\n", "\n", "\n", "eXo", " Cloud", "\n", "Yes", "\n", "2014.01", "\n", "Yes", "\n", "Yes", "\n", "Yes", "\n", "\n", "\n", "Frontis Archive Publishing System", "\n", "Yes", "\n", "V3.12.01.11", "\n", "Yes", "\n", "Yes", "\n", "Yes", "\n", "\n", "\n", "Huddle", "\n", "Yes", "\n", "2012", "\n", "Yes", "\n", "Yes", "\n", "Yes", "\n", "\n", "\n", "Microsoft Office 365", "\n", "Yes (MS SharePoint, MS Lync, MS Exchange, MS Office)", "\n", "2013", "\n", "Yes", "\n", "Yes", "\n", "Yes", "\n", "\n", "\n", "nuBuilder", "\n", "Yes", "\n", "2014", "\n", "Yes", "\n", "Yes", "\n", "Yes", "\n", "\n", "\n", "O3Spaces", "\n", "Yes", "\n", "3.2.1", "\n", "Yes", "\n", "Yes", "\n", "No", "\n", "\n", "\n", "OU Campus", "\n", "Yes", "\n", "10.2.4", "\n", "Yes", "\n", "Yes", "\n", "\n", "\n", "\n", "Polopoly Web CMS", "\n", "\n", "10.2", "\n", "Yes", "\n", "Yes", "\n", "No", "\n", "\n", "\n", "Quintype", "\n", "Yes", "\n", "\n", "Yes", "\n", "Yes", "\n", "Yes", "\n", "\n", "\n", "uCoz", "\n", "\n", "\n", "Yes", "\n", "Yes", "\n", "No", "\n", "\n", "\n", "Windows Live", "\n", "No", "\n", "2011", "\n", "No", "\n", "Yes", "\n", "No", "\n", "\n", "\n", "Xait", "Porter", "\n", "Yes", "\n", "4.9.6", "\n", "No", "\n", "No", "\n", "Yes", "\n", "\n", "\n", "Zesty.io", "\n", "Yes (Multi-Tenant SaaS)", "\n", "Versionless", "\n", "Yes", "\n", "Yes", "\n", "Yes", "\n", "\n", "\n", "Proprietary software", "[", "edit", "]", "\n", "\n", "This section lists ", "proprietary software", " to be installed and managed on a user's own server. This section includes ", "freeware", " proprietary software.", "\n", "\n", "\nSystems listed on a light purple background are no longer in active development.", "\n", "\n", "\n", "Name", "\n", "Platform", "\n", "Supported databases", "\n", "Latest stable release", "\n", "Licenses", "\n", "Latest release date", "\n", "Web content management", "\n", "Group web content management", "\n", "Enterprise content management", "\n", "\n", "\n", "Alfresco", " (Enterprise & Community Edition)", "\n", "Java", "\n", "Oracle", ", ", "SQL Server", ", ", "MySQL", ", ", "PostgreSQL", ", ", "DB2", "\n", "4.0.2 Enterprise, 4.2.c Community", "\n", "Open Source", "\n", "2015-03", "[96]", "\n", "No", "\n", "Yes", "\n", "Yes", "\n", "\n", "\n", "Altitude3.Net", "\n", "ASP.NET", "\n", "SQL Server", "\n", "2015.07.14", "\n", "Proprietary software", "\n", "2015-7-14", "\n", "Yes", "\n", "Yes", "\n", "Yes", "\n", "\n", "\n", "censhare", "\n", "Java", "\n", "Oracle", "\n", "2017.2", "\n", "Proprietary software", "\n", "2017-05-12", "\n", "Yes", "\n", "Yes", "\n", "Yes", "\n", "\n", "\n", "Contentverse", "\n", "Java", "\n", "Oracle", ", ", "SQL Server", "\n", "8.1", "\n", "Proprietary software", "\n", "2014", "\n", "Yes", "\n", "Yes", "\n", "Yes", "\n", "\n", "\n", "Contegro", "\n", "ASP.NET", "\n", "SQL Server", "\n", "4.0.0", "\n", "Proprietary software", "\n", "2010-17-11", "\n", "Yes", "\n", "Yes", "\n", "No", "\n", "\n", "\n", "CoreMedia WCM", "\n", "Java", "\n", "JDBC-compliant databases", "\n", "8", "\n", "\n", "2015-03-19", "\n", "Yes", "\n", "No", "\n", "Yes", "\n", "\n", "\n", "DocLogix", "\n", "ASP.NET", "\n", "SQL Server", "\n", "10.0.0", "\n", "Proprietary software", "\n", "2015-12-15", "\n", "No", "\n", "No", "\n", "Yes", "\n", "\n", "\n", "dotCMS", "\n", "Java", "\n", "Oracle", ", ", "SQL Server", ", ", "MySQL", ", ", "PostgreSQL", "\n", "4.2.0", "\n", "Proprietary software", "\n", "2017-10-17", "\n", "Yes", "\n", "Yes", "\n", "Yes", "\n", "\n", "\n", "Evoq based on ", "DotNetNuke", " platform", "\n", "ASP.NET", "\n", "SQL Server", "\n", "9.1", "\n", "Proprietary software based on open source project", "\n", "2017-09-05", "\n", "Yes", "\n", "Yes", "\n", "Yes", "\n", "\n", "\n", "Ektron CMS", "\n", "ASP.NET", "\n", "SQL Server", "\n", "9.20", "\n", "Proprietary software", "\n", "2016-12-09", "\n", "Yes", "\n", "Yes", "\n", "Yes", "\n", "\n", "\n", "Elcom CMS", "\n", "ASP.NET", "\n", "SQL Server", "\n", "9.0", "\n", "Proprietary software", "\n", "2011-02-15", "\n", "Yes", "\n", "Yes", "\n", "Yes", "\n", "\n", "\n", "OpenText ", "Documentum", "\n", "Java", "\n", "Oracle", ", ", "SQL Server", ", ", "DB2", "\n", "7.3", "\n", "Proprietary software", "\n", "2016-11-10", "\n", "No", "\n", "No", "\n", "Yes", "\n", "\n", "\n", "Episerver CMS", "\n", "ASP.NET", "\n", "SQL Server", "\n", "10", "\n", "Proprietary software", "\n", "2017-01-16", "\n", "Yes", "\n", "Yes", "\n", "Yes", "\n", "\n", "\n", "ExpressionEngine", "\n", "PHP", "\n", "MySQL", "\n", "3.4.5", "\n", "Proprietary software", "\n", "2016-12-06", "\n", "Yes", "\n", "No", "\n", "Yes", "\n", "\n", "\n", "Hyland", " OnBase ECM", "\n", ".NET", "\n", "SQL Server", ", Oracle", "\n", "\n", "\n", "\n", "Yes", "\n", "Yes", "\n", "Yes", "\n", "\n", "\n", "IBM Enterprise Content Management", "\n", "Java", "\n", "Oracle", ", ", "DB2", "\n", "8.5", "\n", "Proprietary software", "\n", "2013", "\n", "Yes", "\n", "Yes", "\n", "Yes", "\n", "\n", "\n", "OpenText ", "Teamsite", "\n", "Java, .Net, XML, XSLT", "\n", "Oracle", ", ", "SQL Server", ", ", "DB2", ", ", "MySQL", "\n", "16.2", "\n", "Proprietary software", "\n", "2017-04", "\n", "Yes", "\n", "Yes", "\n", "Yes", "\n", "\n", "\n", "Jadu", "\n", "PHP", "\n", "MySQL", ", ", "SQL Server", "\n", "Continuously Released", "\n", "Proprietary software", "\n", "\n", "Yes", "\n", "Yes", "\n", "No", "\n", "\n", "\n", "Jahia", " Enterprise Distribution", "\n", "Java", "\n", "MySQL", ", ", "Oracle", ", ", "PostgreSQL", ", ", "Microsoft SQL Server", "\n", "6.6.2.3", "\n", "Proprietary software", "\n", "2013-12-20", "\n", "Yes", "\n", "Yes", "\n", "Yes", "\n", "\n", "\n", "Kentico CMS", "\n", "ASP.NET", "\n", "SQL Server", "\n", "8.1", "\n", "Proprietary software", "\n", "2016-10-30", "\n", "Yes", "\n", "Yes", "\n", "Yes", "\n", "\n", "\n", "Movable Type", "\n", "Perl", "\n", "MySQL", ", ", "Oracle", ", ", "SQL Server", "\n", "6.3.2", "\n", "Proprietary", "\n", "2016-09-27", "[97]", "\n", "Yes", "\n", "Yes", "\n", "Yes", "\n", "\n", "\n", "nuBuilder", "\n", "PHP", ", ", "JavaScript", ", ", "SQL", ", ", "AJAX", ", ", "jQuery", " and ", "JSON", "\n", "MySQL", "\n", "pro (3, previously the version system was numeric)", "\n", "Open source", "\n", "2014-2", "\n", "Yes", "\n", "Yes", "\n", "Yes", "\n", "\n", "\n", "Xait", "Porter (local license)", "\n", "PHP", "\n", "Oracle", "\n", "4.9.6", "\n", "Proprietary software", "\n", "2013-04", "\n", "No", "\n", "No", "\n", "Yes", "\n", "\n", "\n", "Oracle WebCenter Content", "\n(formerly Universal Content Management)", "\n", "Java", "\n", "Oracle", "\n", "11g", "\n", "\n", "\n", "Yes", "\n", "Yes", "\n", "Yes", "\n", "\n", "\n", "OU Campus", "\n", "Java", "\n", "MySQL", ", ", "Microsoft SQL Server", ", SAP Sybase ASE", "\n", "10.2.4", "\n", "Proprietary software", "\n", "2015-06-24", "\n", "Yes", "\n", "Yes", "\n", "Yes", "\n", "\n", "\n", "Pulse CMS", "\n", "PHP", "\n", "Flat-file database", "\n", "4.6.2", "\n", "\n", "2016-12-20", "[98]", "\n", "Yes", "\n", "No", "\n", "No", "\n", "\n", "\n", "Microsoft ", "SharePoint", "\n", "ASP.NET", "\n", "SQL Server", " (2005, 2008 or 2012), SQL Express", "\n", "6.0", "\n", "Proprietary, Open API", "\n", "2016-05-04", "\n", "Yes", "\n", "Yes", "\n", "Yes", "\n", "\n", "\n", "Sitecore", "\n", "ASP.NET", " (Webforms or MVC)", "\n", "SQL Server", " (2005, 2008, 2012), Oracle", "\n", "8.2.5", "\n", "Proprietary software", "\n", "2017-08-01", "\n", "Yes", "\n", "Yes", "\n", "Yes", "\n", "\n", "\n", "Sitekit CMS", "\n", "ASP.NET", "\n", "SQL Server", "\n", "9.5", "\n", "Proprietary software", "\n", "2012-02-01", "\n", "Yes", "\n", "Yes", "\n", "No", "\n", "\n", "\n", "Telligent Community", "\n", "ASP.NET", "\n", "SQL Server", "\n", "5.0", "\n", "\n", "2009-06-26", "\n", "Yes", "\n", "Yes", "\n", "No", "\n", "\n", "\n", "TerminalFour", " (SiteManager)", "\n", "Java", "\n", "MySQL", ", ", "Oracle", ", ", "SQL Server", "\n", "8.1.9.9", "\n", "Proprietary", "\n", "2017-06-24", "\n", "Yes", "\n", "Yes", "\n", "Yes", "\n", "\n", "\n", "Webnodes CMS", "\n", "ASP.NET", "\n", "SQL Server 2005+", ", ", "SQLCE", ", ", "MySQL", "\n", "3.6", "\n", "Proprietary", "\n", "2011-06-30", "\n", "Yes", "\n", "Yes", "\n", "Yes", "\n", "\n", "\n", "Other content management frameworks", "[", "edit", "]", "\n", "A ", "content management framework", " (", "CMF", ") is a system that facilitates the use of reusable components or customized software for managing Web content. It shares aspects of a ", "Web application framework", " and a ", "content management system", " (CMS).", "\n", "Below is a list of notable systems that claim to be CMFs.", "\n", "\n", "\n", "Name", "\n", "Technologies", "\n", "\n", "\n", "Apache Jackrabbit", "\n", "Java", "\n", "\n", "\n", "AxKit", "\n", "Perl", "\n", "\n", "\n", "Grand Central", "\n", "MySQL", " and PHP\u00a05", "\n", "\n", "\n", "Jakarta Slide", "\n", "Java", "\n", "\n", "\n", "Open Semantic Framework", "\n", "Drupal", ", ", "OWL", ", ", "PHP", ", and ", "RDF", "\n", "\n", "\n", "RadPHP", "\n", "MySQL, PHP 5.6+, PostgreSQL, and etc.", "\n", "\n", "\n", "See also", "[", "edit", "]", "\n", "\n", "\n", "Software portal", "\n", "\n", "\n", "\n", "Comparison of web frameworks", "\n", "Comparison of wiki software", "\n", "List of content management frameworks", "\n", "\n", "References", "[", "edit", "]", "\n", "\n", "\n", "^", " ", "\"Apache Download Mirrors\"", ". apache.org", ". Retrieved ", "2015-11-07", ".", "\u00a0", "\n", "^", " ", "\"Index of /roller/roller-5.1/v5.1.2\"", ". is.co.za", ". Retrieved ", "2015-11-07", ".", "\u00a0", "\n", "^", " ", "\"OpenSource Document Management 7.4.2 LogicalDOC DMS\"", ". ", "sourceforge.net", ".", "\u00a0", "\n", "^", " ", "\"Hippo CMS Release Notes Overview - Enterprise Java Content management system - Hippo CMS\"", ". ", "onehippo.org", ".", "\u00a0", "\n", "^", " ", "[Announce] Apache Lenya 2.0.4 released", ". Mail-archives.apache.org (2011-03-14). Retrieved on 2013-08-11.", "\n", "^", " ", "Composite C1 - Release History", ". Docs.composite.net. Retrieved on 2013-08-11.", "\n", "^", " ", "\"Releases \u00b7 dnnsoftware_Dnn.Platform\"", ". ", "GitHub", ". GitHub", ". Retrieved ", "27 September", " 2017", ".", "\u00a0", "\n", "^", " ", "Kentico Version History", "\n", "^", " ", "[1]", ". mojoPortal. Retrieved on 2016-04-10.", "\n", "^", " ", "http://docs.orchardproject.net/Documentation/Orchard-1-10-1.Release-Notes", "\n", "^", " ", "Umbraco releases", "\n", "^", " ", "\"Better CMS for Developers\"", ". devbridge.com. Archived from ", "the original", " on 2016-04-16", ". Retrieved ", "2016-05-13", ".", "\u00a0", "\n", "^", " ", "\"Sensenet ECM Release Notes\"", ". Sense/Net Inc.", "\u00a0", "\n", "^", " ", "\"EPrints 3.3.15 available to download\"", ". eprints.org", ". Retrieved ", "20 July", " 2016", ".", "\u00a0", "\n", "^", " ", "https://blog.foswiki.org/Blog/Foswiki214IsReleased", "\n", "^", " ", "http://ikiwiki.info/news/version_3.20170111//", "\n", "^", " ", "\"Movable Type 6.0.8 and 5.2.13 released to close security vulnerability\"", ". moveabletype.org", ". Retrieved ", "10 January", " 2017", ".", "\u00a0", "\n", "^", " ", "http://www.twiki.org/cgi-bin/view/Blog/BlogEntry201511x1", "\n", "^", " ", "http://blog.webgui.org/post/136751315064/webgui-71030-stable-release", "\n", "^", " ", "\"ATutor 2.2.2 Released\"", ". atutor.ca", ". Retrieved ", "23 July", " 2016", ".", "\u00a0", "\n", "^", " ", "\"Roadmap\"", ". ", "Backdrop CMS", ". Retrieved ", "2017-09-18", ".", "\u00a0", "\n", "^", " ", "\"System requirements\"", ". ", "b2evolution.net", ".", "\u00a0", "\n", "^", " ", "http://b2evolution.net/downloads/", "\n", "^", " ", "Gert Ebersbach. ", "\"CMSimple\"", ". ", "cmsimple.org", ".", "\u00a0", "\n", "^", " ", "http://www.cmsmadesimple.org/downloads/", "\n", "^", " ", "https://github.com/coderity/app", "\n", "^", " ", "\"Composr 10 RC18 released!\"", ". ", "Composr CMS", ". Retrieved ", "2016-09-25", ".", "\u00a0", "\n", "^", " ", "Version History", ". concrete5. Retrieved on 2017-12-21.", "\n", "^", " ", "Contao 4.4.0 is available", ". Contao.org.", "\n", "^", " ", "DokuWiki Changelog", ". dokuwiki.org. Retrieved 2017-02-24", "\n", "^", " ", "https://dotclear.org/", "\n", "^", " ", "\"System requirements\"", ". Drupal.org", ". Retrieved ", "2017-07-02", ".", "\u00a0", "\n", "^", " ", "\"Releases for Drupal core\"", ". ", "drupal.org", ". Retrieved ", "2017-12-22", ".", "\u00a0", "\n", "^", " ", "\"Version 2.4.1 Released\"", ". exponentcms.org", ". Retrieved ", "2017-08-19", ".", "\u00a0", "\n", "^", " ", "\"Introducing eZ Publish Platform 5.4\"", ". eZ Systems", ". Retrieved ", "2014-12-12", ".", "\u00a0", "\n", "^", " ", "\"Release notes\"", ". eZ Systems.", "\u00a0", "\n", "^", " ", "\"2.1.3\"", ". Geeklog", ". Retrieved ", "2017-07-26", ".", "\u00a0", "\n", "^", " ", "\"Version Change Log | GetSimple CMS\"", ". ", "get-simple.info", ".", "\u00a0", "\n", "^", " ", "\"FAQ\"", ". ", "habariproject.org", ".", "\u00a0", "\n", "^", " ", "\"Habari Project\"", ". habariproject.org", ". Retrieved ", "2016-05-13", ".", "\u00a0", "\n", "^", " ", "https://sourceforge.net/projects/impresscms/files/", "\n", "^", " ", "\"ImpressPages 4.8.0\"", ". ", "impresspages.org", ".", "\u00a0", "\n", "^", " ", "\"Jamroom 6.1 Has Been Released\"", ". Jamroom", ". Retrieved ", "2017-08-30", ".", "\u00a0", "\n", "^", " ", "\"Joomla! 3.8.1 Released\"", ". ", "Joomla.org", ". 2017-10-04", ". Retrieved ", "2017-11-02", ".", "\u00a0", "\n", "^", " ", "\"Releases\"", ". github.com", ". Retrieved ", "10 June", " 2017", ".", "\u00a0", "\n", "^", " ", "https://github.com/idno/Known/releases", "\n", "^", " ", "\"Open Source Ecommerce Software & Solutions - Magento\"", ". ", "magentocommerce.com", ".", "\u00a0", "\n", "^", " ", "https://www.mediawiki.org/wiki/Manual:Installation_requirements#Database_server", "\n", "^", " ", "\"Welcome to MediaWiki.org\"", ". News section", ". Retrieved ", "12 December", " 2017", ".", "\u00a0", "\n", "^", " ", "\"Home - MiaCMS Official Website\"", ". Miacms.org", ". Retrieved ", "2014-02-23", ".", "\u00a0", "\n", "^", " ", "\"Midgard2 12.09.1 \"Gjallarhorn\" released\"", " (Press release). The Midgard Project. Archived from ", "the original", " on 2012-10-15.", "\u00a0", "\n", "^", " ", "MODX Systems, LLC. ", "\"Downloads\"", ". MODX.", "\u00a0", "\n", "^", " ", "novius-os. ", "\"novius-os/CHANGELOG.md at elche \u00b7 novius-os/novius-os \u00b7 GitHub\"", ". Github.com", ". Retrieved ", "2014-02-23", ".", "\u00a0", "\n", "^", " ", "\"Nucleus CMS: Pure Publishing\"", ". ", "nucleuscms.org", ".", "\u00a0", "\n", "^", " ", "\"OctoberCMS Changelog\"", ".", "\u00a0", "\n", "^", " ", "\"Meet Omeka Classic 2.5 \u2013 Omeka\"", ". ", "omeka.org", ". Retrieved ", "2017-02-06", ".", "\u00a0", "\n", "^", " ", "\"papaya CMS / Open Source Content Management System (GPL) - Download\"", ". Papaya-cms.com", ". Retrieved ", "2014-02-23", ".", "\u00a0", "\n", "^", " ", "https://ph7cms.com/ph7cms-8-0-6-released/", "\n", "^", " ", "https://github.com/phirecms/phirecms/releases", "\n", "^", " ", "\"PHP-Nuke 8.3.2\"", ". ", "installatron.com", ".", "\u00a0", "\n", "^", " ", "carstenklapp. ", "\"PhpWiki\"", ". ", "SourceForge", ".", "\u00a0", "\n", "^", " ", "\"Get on board and download Pimcore! \u00b7 pimcore/pimcore\"", ". pimcore.org", ". Retrieved ", "2018-01-02", ".", "\u00a0", "\n", "^", " ", "\"PivotX 2.3.11 released - PivotX Blog\"", ". ", "pivotx.net", ".", "\u00a0", "\n", "^", " ", "\"home \u00b7 news \u00b7 Security Release 4.7.3\"", ". ", "pluck-cms.org", ".", "\u00a0", "\n", "^", " ", "\"PmWiki - PmWiki / FlatFileAdvantages\"", ". ", "pmwiki.org", ".", "\u00a0", "\n", "^", " ", "\"PmWiki - Cookbook / SQLite PageStore class\"", ". ", "pmwiki.org", ".", "\u00a0", "\n", "^", " ", "\"Release Notes\"", ". pmwiki.org", ". Retrieved ", "2018-01-05", ".", "\u00a0", "\n", "^", " ", "\"Download Older and Latest PrestaShop Versions. PrestaShop Developers\"", ". ", "prestashop.com", ".", "\u00a0", "\n", "^", " ", "\"ProcessWire 3.0.62\"", ". ", "processwire.com", ".", "\u00a0", "\n", "^", " ", "\"smwplus.com\"", ". smwplus.com", ". Retrieved ", "2014-02-23", ".", "\u00a0", "\n", "^", " ", "\"Serendipity 2.0.4 and 2.1-beta2 released\"", ". s9y.org. 2016-09-26", ". Retrieved ", "2016-11-18", ".", "\u00a0", "\n", "^", " ", "\"Download\"", ". ", "silverstripe.org", ".", "\u00a0", "\n", "^", " ", "http://www.spip.net/en_download", "\n", "^", " ", "\"Textpattern CMS 4.6.2 released: version string theory\"", ". Textpattern.com. 2016-10-21", ". Retrieved ", "2017-08-15", ".", "\u00a0", "\n", "^", " ", "\"Tiki 15.2, Tiki 14.4 and Tiki 12.9 released\"", ". Info.tiki.org. 2015-05-23", ". Retrieved ", "2016-07-07", ".", "\u00a0", "\n", "^", " ", "\"Download TYPO3\"", ". typo3.org", ". Retrieved ", "2017-10-24", ".", "\u00a0", "\n", "^", " ", "\"Releasing Wolf CMS 0.8.3.1\"", ". Retrieved ", "2015-08-15", ".", "\u00a0", "\n", "^", " ", "\"WordPress Versions\"", ". wordpress.org", ". Retrieved ", "2018-01-17", ".", "\u00a0", "\n", "^", " ", "http://www.xaraya.com/index.php/news/946", "\n", "^", " ", "http://xoops.org/modules/core/", "\n", "^", " ", "\"Mezzanine\"", ".", "\u00a0", "\n", "^", " ", "\"MoinMoinDownload - MoinMoin\"", ". ", "moinmo.in", ".", "\u00a0", "\n", "^", " ", "https://plone.org/products/plone/releases/5.0.4", "\n", "^", " ", "\"wagtail CHANGELOG\"", ". Retrieved ", "2017-09-29", ".", "\u00a0", "\n", "^", " ", "\"Download\"", ". ", "radiantcms.org", ".", "\u00a0", "\n", "^", " ", "\"radiant - RubyGems.org - your community gem host\"", ". ", "rubygems.org", ".", "\u00a0", "\n", "^", " ", "\"Refinery CMS 3.0.5 Released\"", ".", "\u00a0", "\n", "^", " ", "https://github.com/publify/publify/releases", "\n", "^", " ", "\"ContentBox\"", ". ortussolutions.com", ". Retrieved ", "2016-05-13", ".", "\u00a0", "\n", "^", " ", "http://www.getmura.com/blog/critical-security-update-for-mura-cms-all-versions-prior-to-7-0-6852/", "\n", "^", " ", "\"FarCry 7 (codename: Shiny) released\"", ". ", "FarCry Core Blog", ".", "\u00a0", "\n", "^", " ", "Ghost", " ", "https://github.com/TryGhost/Ghost/releases/tag/0.11.9", ".", "\u00a0", " ", "Missing or empty ", "|title=", " (", "help", ")", "\n", "^", " ", "\"TiddlyWiki \u2014 a non-linear personal web notebook\"", ". tiddlywiki.com", ". Retrieved ", "2017-06-16", ".", "\u00a0", "\n", "^", " ", "\"OpenACS 5.9.0 final released\"", ". ", "openacs.org", ".", "\u00a0", "\n", "^", " ", "dotCMS Cloud Content Management System", "\n", "^", " ", "\"alfrescowiki\"", ". ", "wiki.alfresco.com", ". Retrieved ", "2016-01-27", ".", "\u00a0", "\n", "^", " ", "Movable Type 6.3.2 released", ". MovableType.org (2016-09-27). Retrieved on 2017-01-10.", "\n", "^", " ", "\"Pulse 4.6.2 is here with deeper blog migration and more fixes\"", ". pulsecms.com", ". Retrieved ", "2016-12-20", ".", "\u00a0", "\n", "\n", "\n", "External links", "[", "edit", "]", "\n", "\n", " Media related to ", "Content management systems", " at Wikimedia Commons", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "v", "\n", "t", "\n", "e", "\n", "\n", "\n", "Content management systems", " (", "list", ")", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "Enterprise content management (ECM)", "\n", "Web content management system (WCMS)", "\n", "Component content management system (CCMS)", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "v", "\n", "t", "\n", "e", "\n", "\n", "\n", "Website management", "\n", "\n", "\n", "\n", "Concepts", "\n", "\n", "\n", "\n", "Overselling", "\n", "Web document", "\n", "Web content", "\n", "Web content lifecycle", "\n", "Web hosting service", "\n", "Web server", "\n", "Webmaster", "\n", "Website governance", "\n", "\n", "\n", "\n", "\n", "\n", "Web hosting control panels", " (", "comparison", ")", "\n", "\n", "\n", "\n", "AlternC", "\n", "cPanel", "\n", "DirectAdmin", "\n", "Domain Technologie Control", "\n", "GNUPanel", "\n", "H-Sphere", "\n", "i-MSCP", "\n", "InterWorx", "\n", "ISPConfig", "\n", "Kloxo", "\n", "Kloxo-MR", "\n", "Plesk", "\n", "Usermin", "\n", "Webmin", "\n", "\n", "\n", "\n", "\n", "\n", "Top-level domain", " registries", "\n", "\n", "\n", "\n", "Afilias", "\n", "CentralNic", "\n", "CIRA", "\n", "Donuts", "\n", "Neustar", "\n", "OVH", "\n", "Public Interest Registry", "\n", "Uniregistry", "\n", "Verisign", "\n", "\n", "\n", "\n", "\n", "\n", "Domain name", " managers and ", "registrars", "\n", "\n", "\n", "\n", "AusRegistry", "\n", "CZ.NIC", "\n", "CNNIC", "\n", "DENIC", "\n", "DNPric.es", "\n", "DNS Belgium", "\n", "Domainz", "\n", "Dynadot", "\n", "Enom", "\n", "Freenom", "\n", "Gandi", "\n", "GoDaddy", "\n", "Hover", "\n", "Infomaniak", "\n", "Japan Registry Services", "\n", "Jimdo", "\n", "Melbourne IT", "\n", "Museum Domain Management Association", "\n", "Name.com", "\n", "Namecheap", "\n", "Network Solutions", "\n", "Net4", "\n", "NIC M\u00e9xico", "\n", "Register.com", "\n", "Tucows", "\n", "Uniregistry", "\n", "UK2", "\n", "Web.com", "\n", "Wix.com", "\n", "\n", "\n", "\n", "\n", "\n", "Web content management system", "\n", "\n", "\n", "\n", "Document management system", "\n", "Wiki software", "\n", "Blog software", "\n", "\n", "\n", "\n", "\n", "\n", "\n\n\n", "\n", "\n", "\n", "\n"], "lastUpdated": " 17 January 2018, at 16:48."}, +{"title": "Node.js", "text": ["\n", "\n", "\n", "\n", "\n", "\n", "This article ", "relies too much on ", "references", " to ", "primary sources", ". ", "Please improve this by adding ", "secondary or tertiary sources", ".", " ", "(September 2015)", " ", "(", "Learn how and when to remove this template message", ")", "\n", "\n", "\n", "\n", "\n", "Node.js", "\n", "\n", "\n", "\n", "\n", "Original author(s)", "\n", "Ryan Dahl", "\n", "\n", "\n", "Developer(s)", "\n", "Node.js Developers", ", ", "Joyent", ", ", "contributors", "\n", "\n", "\n", "Initial release", "\n", "May\u00a027, 2009", "; 8 years ago", "\u00a0(", "2009-05-27", ")", "[1]", "\n", "\n", "\n", "\n", "\n", "\n", "Stable release", "\n", "\n", "9.4.0 & 8.9.4\u00a0(LTS) / January\u00a010, 2018", "; 8 days ago", "\u00a0(", "2018-01-10", ")", "[2]", " & January\u00a02, 2018", "; 16 days ago", "\u00a0(", "2018-01-02", ")", "[3]", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "Repository", "\n", "\n", "\n", "\n", "https://github.com/nodejs/node", "\n", "\n", "\n", "\n", "\n", "\n", "Development status", "\n", "Active (", "complete release list", ")", "\n", "\n", "\n", "Written in", "\n", "C", ", ", "C++", ", ", "JavaScript", "\n", "\n", "\n", "Operating system", "\n", "Linux", ", ", "macOS", ", ", "Solaris", ", ", "FreeBSD", ", ", "OpenBSD", ", ", "Microsoft Windows", " (older versions require ", "Cygwin", "), ", "webOS", ", ", "NonStop OS", "\n", "\n", "\n", "Type", "\n", "Event-driven", " ", "networking", "\n", "\n", "\n", "License", "\n", "MIT", "[4]", "\n", "\n", "\n", "Website", "\n", "nodejs", ".org", "\n", "\n", "\n", "Node.js", " is an ", "open-source", ", ", "cross-platform", " ", "JavaScript", " ", "run-time environment", " for executing JavaScript code ", "server-side", ". Historically, JavaScript was used primarily for ", "client-side scripting", ", in which scripts written in JavaScript are embedded in a webpage's HTML, to be run client-side by a JavaScript engine in the user's web browser. Node.js enables JavaScript to be used for ", "server-side scripting", ", and runs scripts server-side to produce ", "dynamic web page", " content ", "before", " the page is sent to the user's web browser. Consequently, Node.js has become one of the foundational elements of the \"JavaScript everywhere\" paradigm,", "[5]", " allowing ", "web application", " development to unify around a single programming language, rather than rely on a different language for writing server side scripts.", "\n", "Though ", ".js", " is the conventional ", "filename extension", " for JavaScript code, the name \"Node.js\" does not refer to a particular file in this context and is merely the name of the product. Node.js has an ", "event-driven architecture", " capable of ", "asynchronous I/O", ". These design choices aim to optimize ", "throughput", " and ", "scalability", " in ", "Web applications", " with many input/output operations, as well as for ", "real-time Web", " applications (e.g., ", "real-time communication", " programs and ", "browser games", ").", "[6]", "\n", "The Node.js ", "distributed development", " project, governed by the Node.js Foundation,", "[7]", " is facilitated by the ", "Linux Foundation", "'s Collaborative Projects program.", "[8]", "\n", "Corporate users of Node.js software include ", "GoDaddy", ",", "[9]", " ", "Groupon", ",", "[10]", " ", "IBM", ",", "[11]", " ", "LinkedIn", ",", "[12]", "[13]", " ", "Microsoft", ",", "[14]", "[15]", " ", "Netflix", ",", "[16]", " ", "PayPal", ",", "[17]", "[18]", " ", "Rakuten", ", ", "SAP", ", ", "Tuenti", ",", "[19]", " ", "Voxer", ",", "[20]", " ", "Walmart", ",", "[21]", " ", "Yahoo!", ",", "[22]", "\n", "\n", "\n", "\n", "Contents", "\n", "\n", "\n", "1", " ", "History", "\n", "2", " ", "Overview", "\n", "\n", "2.1", " ", "Platform architecture", "\n", "2.2", " ", "Industry support", "\n", "\n", "\n", "3", " ", "Releases", "\n", "4", " ", "Technical details", "\n", "\n", "4.1", " ", "Threading", "\n", "4.2", " ", "V8", "\n", "4.3", " ", "Package management", "\n", "4.4", " ", "Unified API", "\n", "4.5", " ", "Event loop", "\n", "\n", "\n", "5", " ", "Project governance", "\n", "6", " ", "Alternatives", "\n", "7", " ", "See also", "\n", "8", " ", "References", "\n", "9", " ", "Further reading", "\n", "10", " ", "External links", "\n", "\n", "\n", "\n", "History", "[", "edit", "]", "\n", "\n", "\n", "\n", "\nRyan Dahl, creator of Node.js, in 2010", "\n", "\n", "\n", "Node.js was originally written by ", "Ryan Dahl", " in 2009,", "[23]", " about thirteen years after the introduction of the first server-side JavaScript environment, Netscape's LiveWire Pro Web.", "[24]", " The initial release supported only Linux and Mac OS X. Its development and maintenance was led by Dahl and later sponsored by ", "Joyent", ".", "[25]", "\n", "Dahl was inspired to create Node.js after seeing a file upload ", "progress bar", " on ", "Flickr", ". The browser did not know how much of the file had been uploaded and had to query the Web server. Dahl desired an easier way.", "[6]", "[26]", "\n", "Dahl criticized the limited possibilities of the most popular web server in 2009, ", "Apache HTTP Server", ", to handle a lot of concurrent connections (up to 10,000 and more) and the most common way of creating code (sequential programming), when code either blocked the entire process or implied multiple execution stacks in the case of simultaneous connections.", "[27]", "\n", "Dahl demonstrated the project at the inaugural European JSConf on November 8, 2009.", "[28]", "[29]", "[30]", " Node.js combined ", "Google", "'s V8 JavaScript engine, an ", "event loop", ", and a low-level ", "I/O", " ", "API", ".", "[31]", "\n", "In January 2010, a ", "package manager", " was introduced for the Node.js environment called ", "npm", ".", "[32]", " The package manager makes it easier for programmers to publish and share source code of Node.js libraries and is designed to simplify installation, updating, and uninstallation of libraries.", "[31]", "\n", "In June 2011, Microsoft and Joyent implemented a native ", "Windows", " version of Node.js.", "[33]", " The first Node.js build supporting Windows was released in July 2011.", "\n", "In January 2012, Dahl stepped aside, promoting coworker and ", "npm", " creator Isaac Schlueter to manage the project.", "[34]", " In January 2014, Schlueter announced that Timothy J. Fontaine would lead the project.", "[35]", "\n", "In December 2014, Fedor Indutny started io.js, a ", "fork", " of Node.js. Due to the internal conflict over Joyent's governance, io.js was created as an ", "open governance", " alternative with a separate technical committee.", "[36]", "[37]", " Unlike Node.js,", "[38]", " the authors planned to keep io.js up-to-date with the latest releases of the ", "Google V8", " JavaScript engine.", "[39]", "\n", "In February 2015, the intent to form a neutral Node.js Foundation was announced. By June 2015, the Node.js and io.js communities voted to work together under the Node.js Foundation.", "[40]", "\n", "In September 2015, Node.js v0.12 and io.js v3.3 were merged back together into Node v4.0.", "[41]", " This brought V8 ", "ES6", " features into Node.js, and a long-term support release cycle.", "[42]", " As of 2016, the io.js website recommends that developers switch back to Node.js and that no further releases of io.js are planned due to the merger.", "[43]", "\n", "Overview", "[", "edit", "]", "\n", "Node.js allows the creation of ", "Web servers", " and networking tools using ", "JavaScript", " and a collection of \"modules\" that handle various core functionality.", "[28]", "[31]", "[44]", "[45]", "[46]", " Modules are provided for ", "file system", " I/O, networking (", "DNS", ", ", "HTTP", ", ", "TCP", ", ", "TLS/SSL", ", or ", "UDP", "), ", "binary", " data (buffers), ", "cryptography", " functions, ", "data streams", ", and other core functions.", "[31]", "[45]", "[47]", " Node.js's modules use an API designed to reduce the complexity of writing server applications.", "[31]", "[45]", "\n", "Node.js applications can run on ", "Linux", ", ", "macOS", ", ", "Microsoft Windows", ", ", "NonStop", ",", "[48]", " and ", "Unix", " servers. Alternatively, they can be written with ", "CoffeeScript", "[49]", " (a JavaScript alternative), ", "Dart", " or ", "TypeScript", " (", "strongly typed", " forms of JavaScript), or any other language that ", "can compile to JavaScript", ".", "[49]", "[50]", "\n", "Node.js is primarily used to build network programs such as Web servers.", "[44]", " The biggest difference between Node.js and ", "PHP", " is that most functions in PHP ", "block", " until completion (commands execute only after previous commands have completed), while functions in Node.js are designed to be ", "non-blocking", " (commands execute ", "concurrently", " or even in ", "parallel", ",", "[51]", "[52]", " and use ", "callbacks", " to signal completion or failure).", "[44]", "\n", "Platform architecture", "[", "edit", "]", "\n", "Node.js brings ", "event-driven programming", " to ", "web servers", ", enabling development of fast web servers in JavaScript.", "[31]", " Developers can create highly scalable servers without using ", "threading", ", by using a simplified model of ", "event-driven programming", " that uses callbacks to signal the completion of a task.", "[31]", " Node.js connects the ease of a scripting language (JavaScript) with the power of Unix network programming.", "[31]", "\n", "Node.js was built on the ", "Google", " ", "V8 JavaScript engine", " since it was open-sourced under the ", "BSD license", ", extremely fast, and proficient with internet fundamentals such as ", "HTTP", ", ", "DNS", ", ", "TCP", ".", "[28]", " Also, ", "JavaScript", " was a well-known language, making Node.js immediately accessible to the entire ", "web development community", ".", "[28]", "\n", "Industry support", "[", "edit", "]", "\n", "There are thousands of open-source libraries for Node.js, most of them hosted on the ", "npm", " website. The Node.js developer community has two main mailing lists and the ", "IRC", " channel #node.js on ", "freenode", ". There are multiple developer conferences and events that support the Node.js community including ", "NodeConf", ", ", "Node Interactive", " and ", "Node Summit", " as well as a number of regional events.", "\n", "The open-source community has developed ", "web frameworks", " to accelerate the development of applications. Such frameworks include Connect, ", "Express.js", ", ", "Socket.IO", ", Koa.js, Hapi.js, ", "Sails.js", ", ", "Meteor", ", Derby, and many others.", "[31]", "[53]", "\n", "Modern desktop ", "IDEs", " provide editing and debugging features specifically for Node.js applications. Such IDEs include ", "Atom", ", ", "Brackets", ", ", "JetBrains", " ", "WebStorm", ",", "[54]", "[55]", " ", "Microsoft Visual Studio", " (with Node.js Tools for Visual Studio,", "[56]", " or ", "TypeScript", " with Node definitions,", "[57]", "[58]", "[59]", "[60]", ") ", "NetBeans", ",", "[61]", " ", "Nodeclipse", " Enide Studio ", "[62]", " (", "Eclipse", "-based), and ", "Visual Studio Code", ".", "[63]", "[64]", " Certain online web-based IDEs also support Node.js, such as ", "Codeanywhere", ", ", "Codenvy", ", ", "Cloud9 IDE", ", ", "Koding", ", and the visual flow editor in ", "Node-RED", ".", "\n", "Releases", "[", "edit", "]", "\n", "\n", "\n", "Release", "\n", "Code name", "\n", "Release date", "\n", "LTS status", "\n", "Active LTS start", "\n", "Maintenance start", "\n", "Maintenance end", "\n", "\n", "\n", "v0.10.x", "\n", "\n", "2013-03-11", "\n", "Old version, no longer supported:", " End-of-life", "\n", "-", "\n", "2015-10-01", "\n", "2016-10-31", "\n", "\n", "\n", "v0.12.x", "\n", "\n", "2015-02-06", "\n", "Old version, no longer supported:", " End-of-life", "\n", "-", "\n", "2016-04-01", "\n", "2016-12-31", "\n", "\n", "\n", "4.x", "\n", "Argon", "\n", "2015-09-08", "\n", "Older version, yet still supported:", " Maintenance", "\n", "2015-10-01", "\n", "2017-04-01", "\n", "April 2018", "\n", "\n", "\n", "5.x", "\n", "\n", "2015-10-29", "\n", "No LTS", "\n", "N/A", "\n", "\n", "\n", "6.x", "\n", "Boron", "\n", "2016-04-26", "\n", "Current stable version:", " ", "Active", "\n", "2016-10-18", "\n", "April 2018", "\n", "April 2019", "\n", "\n", "\n", "7.x", "\n", "\n", "2016-10-25", "\n", "No LTS", "\n", "N/A", "\n", "\n", "\n", "8.x", "\n", "Carbon", "[65]", "\n", "2017-05-30", "\n", "Current stable version:", " ", "Active", "\n", "2017-10-31", "\n", "April 2019", "\n", "December 2019", "\n", "\n", "\n", "9.x", "\n", "\n", "2017-10-31", "\n", "No LTS", "\n", "N/A", "\n", "\n", "\n", "10.x", "\n", "\n", "\n", "Future release:", " Pending", "\n", "October 2018", "\n", "April 2020", "\n", "April 2021", "\n", "\n", "\n", "New major releases of Node.js are cut from the ", "GitHub", " master branch every six months. Even-numbered versions are cut in April and odd-numbered versions are cut in October. When a new odd version is released, the previous even version undergoes transition to Long Term Support (LTS), which gives that version 18 months of active support from the date it is designated LTS. After these 18 months expire, an LTS release will receive an additional 12 months of maintenance support. An active version will receive non-breaking backports of changes a few weeks after they land in the current release. A maintenance release will only receive critical fixes and documentation updates.", "[66]", "\n", "The strategy and policy of LTS releases are managed by the LTS Working Group in collaboration with the Technical Steering Committee of the Node.js Foundation.", "\n", "Technical details", "[", "edit", "]", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "This section ", "may be too technical for most readers to understand", ". Please ", "help improve it", " to ", "make it understandable to non-experts", ", without removing the technical details. ", "(August 2015)", " ", "(", "Learn how and when to remove this template message", ")", "\n", "\n", "\n", "\n", "Node.js is a Javascript runtime environment that processes incoming requests in a loop, called the ", "event loop", ".", "\n", "Threading", "[", "edit", "]", "\n", "Node.js operates on a ", "single thread", ", using ", "non-blocking I/O", " calls, allowing it to support tens of thousands of concurrent connections without incurring the cost of thread ", "context switching", ".", "[67]", " The design of sharing a single thread among all the requests that use the ", "observer pattern", " is intended for building highly concurrent applications, where any function performing I/O must use a ", "callback", ". In order to accommodate the single-threaded event loop, Node.js utilizes the ", "libuv", " library that, in turn, uses a fixed-sized thread pool that is responsible for some of the non-blocking asynchronous I/O operations.", "[6]", "\n", "A downside of this single-threaded approach is that Node.js doesn't allow ", "vertical scaling", " by increasing the number of ", "CPU cores", " of the machine it is running on without using an additional module, such as cluster,", "[51]", " StrongLoop Process Manager,", "[68]", " or pm2.", "[69]", " However, developers can increase the default number of threads in the libuv thread pool; these threads are likely to be distributed across multiple cores by the server operating system.", "[70]", "\n", "Execution of parallel tasks in Node.js is handled by a thread pool. The main thread call functions post tasks to the shared task queue that threads in the thread pool pull and execute. Inherently non-blocking system functions such as networking translates to kernel-side non-blocking sockets, while inherently blocking system functions such as file I/O run in a blocking way on its own thread. When a thread in the thread pool completes a task, it informs the main thread of this, which in turn, wakes up and execute the registered callback. Since callbacks are handled in serial on the main thread, long lasting computations and other CPU-bound tasks will freeze the entire event-loop until completion.", "[", "citation needed", "]", "\n", "V8", "[", "edit", "]", "\n", "V8", " is the JavaScript execution engine built for ", "Google Chrome", " and open-sourced by Google in 2008. Written in ", "C++", ", V8 compiles JavaScript source code to native ", "machine code", " instead of interpreting it in real time.", "[6]", "\n", "Node.js uses ", "libuv", " to handle asynchronous events. Libuv is an abstraction layer for network and file system functionality on both Windows and ", "POSIX", "-based systems such as Linux, macOS, OSS on NonStop, and Unix.", "\n", "The core functionality of Node.js resides in a JavaScript library. The Node.js bindings, written in C++, connect these technologies to each other and to the operating system.", "\n", "Package management", "[", "edit", "]", "\n", "npm", " is the pre-installed package manager for the Node.js server platform. It is used to install Node.js programs from the npm registry, organizing the installation and management of third-party Node.js programs. npm is not to be confused with the ", "CommonJS", " ", "require()", " statement. It is not used to load code; instead, it is used to install code and manage code dependencies from the command line. The packages found in the npm registry can range from simple helper libraries such as ", "Lodash", " to task runners such as ", "Grunt", ".", "\n", "Unified API", "[", "edit", "]", "\n", "Node.js can be combined with a browser, a database supporting JSON data (such as ", "Postgres", ",", "[71]", " ", "MongoDB", ", or ", "CouchDB", ") and ", "JSON", " for a unified JavaScript development stack. With the adaptation of what were essentially server-side development patterns such as ", "MVC", ", ", "MVP", ", ", "MVVM", ", etc., Node.js allows the ", "reuse", " of the same model and service interface between client-side and server-side.", "\n", "Event loop", "[", "edit", "]", "\n", "Node.js registers itself with the operating system in order to be notified when a connection is made, and the operating system will issue a callback. Within the Node.js runtime, each connection is a small ", "heap allocation", ". Traditionally, relatively heavyweight ", "OS", " processes or threads handled each connection. Node.js uses an event loop for scalability, instead of processes or threads.", "[72]", " In contrast to other event-driven servers, Node.js's event loop does not need to be called explicitly. Instead callbacks are defined, and the server automatically enters the event loop at the end of the callback definition. Node.js exits the event loop when there are no further callbacks to be performed.", "\n", "Project governance", "[", "edit", "]", "\n", "In 2015, various branches of the greater Node.js community began working under the vendor-neutral Node.js Foundation. The stated purpose of the organization \"is to enable widespread adoption and help accelerate development of Node.js and other related modules through an open governance model that encourages participation, technical contribution, and a framework for long-term stewardship by an ecosystem invested in Node.js' success.\"", "[73]", "\n", "The Node.js Foundation Technical Steering Committee (TSC) is the technical governing body of the Node.js Foundation. The TSC is responsible for the core Node.js repo as well as dependent and adjacent projects. Generally the TSC delegates administration of these projects to working groups or committees.", "[74]", " The LTS group that manages long term supported releases is one such group. Other current groups include: Website, Streams, Build, Diagnostics, i18n, Evangelism, Docker, Addon API, Benchmarking, Post-mortem, Intl, Documentation, and Testing.", "[75]", "\n", "In August, 2017, a governance breakdown precipitated efforts to repair the resulting damage and to create a path to future stability of governance.", "[76]", "\n", "Alternatives", "[", "edit", "]", "\n", "Similar open source event-driven server frameworks for other platforms include:", "\n", "\n", "EventMachine", " for ", "Ruby", "\n", "libuv", " for ", "C", "\n", "Perl Object Environment", " for ", "Perl", "\n", "ReactPHP (libev or libevent) or Amp (libev, libevent, or libuv) for ", "PHP", "\n", "Twisted", " for ", "Python", "\n", "Vert.x", " for ", "Java", ", ", "JavaScript", ", ", "Apache Groovy", ", ", "Ruby", ", ", "Python", ", ", "Scala", ", ", "Clojure", ", and ", "Ceylon", "\n", "\n", "Node.js may utilize code written in other programming languages using:", "\n", "\n", "Edge.js allows ", "Microsoft .NET", " applications to run Node.js scripts in-process, and allows Node.js servers to utilize .NET compiled code via async callbacks.", "[77]", "[78]", "[79]", "\n", "Luvit implements the Node.js APIs for the language ", "Lua", "[80]", "\n", "Node-julia allows using ", "Julia", " with Node.js/io.js", "\n", "The COBOL bridge for Node.js allows using ", "COBOL", " with Node.js", "[81]", "\n", "FreePascal", " 3.0.4 contains an Object Pascal to JavaScript transpiler, pas2js ", "[82]", " that can be configured to target Node.js and can utilize the ", "Lazarus (IDE)", " ide, including code completion and debugging.", "\n", "\n", "See also", "[", "edit", "]", "\n", "\n", "\n", "Free software portal", "\n", "\n", "\n", "\n", "List of JavaScript libraries", "\n", "MEAN (software bundle)", "\n", "Online JavaScript IDE", "\n", "Rhino (JavaScript engine)", "\n", "Node-RED", "\n", "Application server", "\n", "\n", "References", "[", "edit", "]", "\n", "\n", "\n", "^", " ", "\"node-v0.x-archive on GitHub\"", ". Retrieved ", "2 August", " 2014", ".", "\u00a0", "\n", "^", " ", "\"Node.js 9 ChangeLog\"", ". Retrieved ", "15 Nov", " 2017", ".", "\u00a0", "\n", "^", " ", "\"Node.js 8 ChangeLog\"", ". Retrieved ", "6 Dec", " 2017", ".", "\u00a0", "\n", "^", " ", "\"node/LICENSE at master\"", ". ", "GitHub", ". Node.js Foundation. 12 July 2017", ". Retrieved ", "12 July", " 2017", ".", "\u00a0", "\n", "^", " ", "https://www.ibm.com/developerworks/community/blogs/gcuomo/entry/javascript_everywhere_and_the_three_amigos?lang=en", "\n", "^ ", "a", " ", "b", " ", "c", " ", "d", " ", "Laurent Orsini", " (2013-11-07). ", "\"What You Need To Know About Node.js\"", ". readwrite. Archived from ", "the original", " on 2013-11-07", ". Retrieved ", "2016-01-22", ".", "\u00a0", "\n", "^", " ", "\"Node.js Foundation - Node.js\"", ". Retrieved ", "4 July", " 2015", ".", "\u00a0", "\n", "^", " ", "\"Linux Foundation Collaborative Projects\"", ". Retrieved ", "4 July", " 2015", ".", "\u00a0", "\n", "^", " ", "Why GoDaddy's Nodejitsu deal is great for Node.js", ", ", "VentureBeat", ", February 10, 2015", "\n", "^", " ", "Geitgey, Adam (30 October 2013). ", "\"I-Tier: Dismantling the Monoliths\"", ". Groupon", ". Retrieved ", "30 April", " 2014", ".", "\u00a0", "\n", "^", " ", "\"IBM Bluemix\"", ". Retrieved ", "4 July", " 2015", ".", "\u00a0", "\n", "^", " ", "\"You'll never believe how LinkedIn built its new iPad app\"", ". VentureBeat. May 2, 2012", ". Retrieved ", "May 10,", " 2012", ".", "\u00a0", "\n", "^", " ", "\"Blazing fast node.js: 10 performance tips from LinkedIn Mobile\"", ". Retrieved ", "7 April", " 2015", ".", "\u00a0", "\n", "^", " ", "Baxter-Reynolds, Matthew (November 9, 2011). ", "\"Here's why you should be happy that Microsoft is embracing Node.js\"", ". London: The Guardian", ". Retrieved ", "May 10,", " 2012", ".", "\u00a0", "\n", "^", " ", "\"WebMatrix - Front End Web Developers take note (ASP.NET, PHP, node.js and more)\"", ". Retrieved ", "2 August", " 2014", ".", "\u00a0", "\n", "^", " ", "Node.js in Flames", " November 19, 2014", "\n", "^", " ", "\"Clash of the Titans: Releasing the Kraken, NodeJS @paypal\"", ". fluentconf.com. May 28, 2013", ". Retrieved ", "September 11,", " 2013", ".", "\u00a0", "\n", "^", " ", "\"All such companies and their products in which Node.js is used\"", ". Retrieved ", "2 August", " 2014", ".", "\u00a0", "\n", "^", " ", "\"SAP AppBuilder\"", ". SAP. March 10, 2014", ". Retrieved ", "March 10,", " 2014", ".", "\u00a0", "\n", "^", " ", "The Node Ahead: JavaScript leaps from browser into future", ", ", "The Register", ", March 1, 2011", "\n", "^", " ", "\"Why Walmart is using Node.js\"", ". VentureBeat. January 24, 2012", ". Retrieved ", "May 10,", " 2012", ".", "\u00a0", "\n", "^", " ", "\"Why You Really Need (A) node.js development services\"", ". codebrahma. January 10, 2018", ". Retrieved ", "January 10,", " 2018", ".", "\u00a0", "\n", "^", " ", "\"About Node.js, and why you should add Node.js to your skill set?\"", ". ", "Training.com", ". Training.com", ". Retrieved ", "23 October", " 2016", ".", "\u00a0", "\n", "^", " ", "\"Netscape opens intranet attack\"", ". ", "CNET", ". Retrieved ", "2017-04-20", ".", "\u00a0", "\n", "^", " ", "Ryan Dahl (2010-11-09). ", "\"Joyent and Node\"", ". Google Groups", ". Retrieved ", "2015-02-05", ".", "\u00a0", "\n", "^", " ", "Harris, Amber (April 1, 2012). ", "\"The Birth of Node: Where Did it Come From? Creator Ryan Dahl Shares the History\"", ". Devops Angle", ". Retrieved ", "26 October", " 2013", ".", "\u00a0", "\n", "^", " ", "\"PHP 7 vs Node.js? They Can Be Partners, Not Competitors For a Developer!\"", ". Retrieved ", "21 December", " 2016", ".", "\u00a0", "\n", "^ ", "a", " ", "b", " ", "c", " ", "d", " ", "Sams Teach Yourself Node.js in 24 Hours", ", Sams Publishing, 05-Sep-2012", "\n", "^", " ", "\"Ryan Dahl at JSConf EU 2009\"", ".", "\u00a0", "\n", "^", " ", "\"Ryan Dahl at JSConf EU 2009 Video\"", ".", "\u00a0", "\n", "^ ", "a", " ", "b", " ", "c", " ", "d", " ", "e", " ", "f", " ", "g", " ", "h", " ", "i", " ", "Professional Node.js: Building JavaScript Based Scalable Software", ", John Wiley & Sons, 01-Oct-2012", "\n", "^", " ", "\"Earliest releases of npm\"", ". ", "GitHub", ". Retrieved ", "27 July", " 2016", ".", "\u00a0", "\n", "^", " ", "\"Porting Node to Windows With Microsoft's Help\"", ". Retrieved ", "17 April", " 2016", ".", "\u00a0", "\n", "^", " ", "Dahl, Ryan. ", "\"New gatekeeper\"", ". Retrieved ", "26 October", " 2013", ".", "\u00a0", "\n", "^", " ", "Schlueter, Isaac (January 15, 2014). ", "\"The Next Phase of Node.js\"", ". Retrieved ", "21 January", " 2014", ".", "\u00a0", "\n", "^", " ", "Krill, Paul (Dec 4, 2014). ", "\"Why io.js Decided to Fork Node.js\"", ". JavaWorld", ". Retrieved ", "Dec 15,", " 2014", ".", "\u00a0", "\n", "^", " ", "Q&A: Why io.js decided to fork Node.js", ", ", "Infoworld", " Tech Watch", "\n", "^", " ", "Ben Noordhuis (Nov 12, 2014). ", "\"Issue 3692: function suddenly becomes undefined\"", ". V8 JavaScript Engine Issues", ". Retrieved ", "2 February", " 2015", ".", "\u00a0", "\n", "^", " ", "Mikeal, Rogers (January 28, 2015). ", "\"State of io.js\"", ". Retrieved ", "2 February", " 2015", ".", "\u00a0", "\n", "^", " ", "\"Node.js Foundation Advances Community Collaboration, Announces New Members and Ratified Technical Governance\"", ". Retrieved ", "4 July", " 2015", ".", "\u00a0", "\n", "^", " ", "\"Node.js Foundation Combines Node.js and io.js Into Single Codebase in New Release\"", ". Retrieved ", "28 Jan", " 2016", ".", "\u00a0", "\n", "^", " ", "\"io.js and Node.js merge\"", ". Retrieved ", "27 June", " 2015", ".", "\u00a0", "\n", "^", " ", "Io.js, JavaScript I/O", ", ", "\"io.js has merged with the Node.js project again. There won't be any further io.js releases. All of the features in io.js are available in Node.js v4 and above.\"", "\n", "^ ", "a", " ", "b", " ", "c", " ", "Node.js for PHP Developers", ", O'Reilly Media, Inc., 2013", "\n", "^ ", "a", " ", "b", " ", "c", " ", "Node.js Essentials", ", Packt Publishing, 09-Sep-2014", "\n", "^", " ", "Smashing Node.js: JavaScript Everywhere", ", John Wiley & Sons, 14-Aug-2012", "\n", "^", " ", "Modules", ", Nodejs Website", "\n", "^", " ", "\"bomBora - Node.js for NonStop\"", ". Infrasoft", ". Retrieved ", "14 August", " 2015", ".", "\u00a0", "\n", "^ ", "a", " ", "b", " ", "\"CoffeeScript on Node.js\"", ". O'Reilly Media, Inc. April 15, 2013", ". Retrieved ", "May 17,", " 2015", ".", "\u00a0", "\n", "^", " ", "\"List of languages that compile to JS\"", ". Retrieved ", "October 19,", " 2017", ".", "\u00a0", "\n", "^ ", "a", " ", "b", " ", "\"Node.js's cluster module\"", ". Retrieved ", "October 19,", " 2017", ".", "\u00a0", "\n", "^", " ", "\"Node.js's child_process module\"", ". Retrieved ", "October 19,", " 2017", ".", "\u00a0", "\n", "^", " ", "Express.js Guide: The Comprehensive Book on Express.js", ", Azat Mardan, 28-May-2014", "\n", "^", " ", "Node.js", ", WebStorm supports integration with the Node.js runtime environment, WebStorm Help", "\n", "^", " ", "Running and Debugging Node.js", ", WebStorm Help", "\n", "^", " ", "\"Node.js Tools for Visual Studio\"", ". Retrieved ", "1 Feb", " 2016", ".", "\u00a0", "\n", "^", " ", "soywiz/typescript-node-definitions TypeScript's typings for some popular node.js modules", ", GitHub", "\n", "^", " ", "DefinitelyTyped", ", GitHub", "\n", "^", " ", "The repository for high quality TypeScript type definitions", " ", "Archived", " February 3, 2016, at the ", "Wayback Machine", ".", "\n", "^", " ", "ImageBoard, A Node.js + Express + MongoDB application built using TypeScript on the server", ", TypeScript Samples", "\n", "^", " ", "Krill, Paul (2015-11-10). ", "\"Node.js takes center stage in NetBeans 8.1\"", ". ", "InfoWorld", ".", "\u00a0", "\n", "^", " ", "Nodeclipse, Enide -- Node.JS development in Eclipse", ", Nodeclipse Website", "\n", "^", " ", "Hello Visual Studio Code (with NodeJS)", ", Channel 9, Microsoft", "\n", "^", " ", "Node.js Applications with VS Code", ", Visual Studio Code", "\n", "^", " ", "https://github.com/nodejs/LTS/issues/163", "\n", "^", " ", "\"nodejs/Release\"", ". ", "GitHub", ". Retrieved ", "2017-11-15", ".", "\u00a0", "\n", "^", " ", "\"Node.js w/1M concurrent connections!\"", ". ", "caustik's blog", ".", "\u00a0", "\n", "^", " ", "\"StrongLoop Process Manager\"", ".", "\u00a0", "\n", "^", " ", "\"GitHub - Unitech/pm2: Production process manager for Node.js applications with a built-in load balancer\"", ". ", "GitHub", ".", "\u00a0", "\n", "^", " ", "Aleksander Kasiuk (22 April 2015). ", "\"On problems with threads in node.js - Future Processing\"", ".", "\u00a0", "\n", "^", " ", "\"PostgreSQL: Documentation: 9.4: JSON Types\"", ". ", "www.postgresql.org", ". Retrieved ", "2016-10-20", ".", "\u00a0", "\n", "^", " ", "About Node.js", ", Node.js Website", "\n", "^", " ", "Foundation, Node.js. ", "\"Node.js Foundation | Node.js\"", ". ", "nodejs.org", ". Retrieved ", "2017-03-08", ".", "\u00a0", "\n", "^", " ", "\"nodejs/TSC\"", ". ", "GitHub", ". Retrieved ", "2017-03-08", ".", "\u00a0", "\n", "^", " ", "Foundation, Node.js. ", "\"Working Groups | Node.js\"", ". ", "nodejs.org", ". Retrieved ", "2017-03-08", ".", "\u00a0", "\n", "^", " ", "Whittaker, Zack, ", "After governance breakdown, Node.js leaders fight for its survival", ", ZDNet, August 25, 2017", "\n", "^", " ", "Tomasz Janczuk. ", "\"Edge.js\"", ".", "\u00a0", "\n", "^", " ", "Using Edge.js to combine Node.js and .NET", ", .NET Curry", "\n", "^", " ", "Edge.js bridges the gap between Node.js and .NET", ", TechRepublic, Tony Patton, July 1, 2014", "\n", "^", " ", "\"Luvit.io\"", ".", "\u00a0", "\n", "^", " ", "\"cobol\"", ".", "\u00a0", "\n", "^", " ", "\"pas2js\"", ".", "\u00a0", "\n", "\n", "\n", "Further reading", "[", "edit", "]", "\n", "\n", "\n", "Hughes-Croucher, Tom; Wilson, Mike (April 2012), ", "Up and Running with Node.js", " (First ed.), ", "O'Reilly Media", ", p.\u00a0204, ", "ISBN", "\u00a0", "978-1-4493-9858-3", "\u00a0", "\n", "Ornbo, George (September 2012), ", "Sams Teach Yourself Node.js in 24 Hours", " (First ed.), ", "SAMS Publishing", ", p.\u00a0440, ", "ISBN", "\u00a0", "978-0-672-33595-2", "\u00a0", "\n", "Teixeira, Pedro (October 2012), ", "Professional Node.js", " (First ed.), ", "John Wiley & Sons", ", p.\u00a0408, ", "ISBN", "\u00a0", "978-1-118-22754-1", "\u00a0", "\n", "Randal L. Schwartz", " and Aaron Newcomb (9 January 2013). ", "\"Episode 237: Node.js\"", ". ", "twit.tv/show/floss-weekly", " (Podcast). ", "TWiT.tv", ". Event occurs at 1:08:13", ". Retrieved ", "9 January", " 2013", ".", "\u00a0", "\n", "Kurniawan, Agus (July 2012), ", "Nodejs Programming By Example", " (First ed.), ", "PE Press", ", p.\u00a067", "\u00a0", "\n", "Gackenheimer, Cory (October 2013), ", "Node.js Recipes: A Problem-Solution Approach", " (First ed.), ", "Apress", ", p.\u00a0376, ", "ISBN", "\u00a0", "978-1-4302-6058-5", "\u00a0", "\n", "Ribeiro Pereira, Caio (February 2016), ", "Building APIs with Node.js", " (First ed.), ", "Leanpub", ", p.\u00a0152", "\u00a0", "\n", "\n", "\n", "External links", "[", "edit", "]", "\n", "\n", "\n", "\n", "Wikimedia Commons has media related to ", "Node.js", ".", "\n", "\n", "\n", "\n", "Official website", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "v", "\n", "t", "\n", "e", "\n", "\n", "\n", "Node.js", "\n", "\n", "\n", "\n", "Platform", "\n", "\n", "\n", "\n", "Node.js", "\n", "NPM", "\n", "V8", "\n", "CommonJS", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "Frameworks", "\n", "\n", "\n", "\n", "MEAN", "\n", "\n", "MongoDB", "\n", "Express.js", "\n", "AngularJS", "/", "Angular", "\n", "\n", "\n", "MEEN (substituted with ", "Ember.js", ")", "\n", "Backbone.js", "\n", "Meteor", "\n", "\n", "\n", "\n", "\n", "\n", "Libraries", "\n", "\n", "\n", "\n", "Lodash", "\n", "Underscore.js", "\n", "React.js", "\n", "\n", "\n", "\n", "\n", "\n", "Languages", "\n", "\n", "\n", "\n", "JavaScript", "\n", "CoffeeScript", "\n", "TypeScript", "\n", "\n", "\n", "\n", "\n", "\n", "Hosts", "\n", "\n", "\n", "\n", "Joyent", "\n", "Nodejitsu", "\n", "OpenShift", "\n", "Linode", "\n", "DigitalOcean", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "v", "\n", "t", "\n", "e", "\n", "\n", "\n", "JavaScript", "\n", "\n", "\n", "\n", "Code analysis", "\n", "\n", "\n", "\n", "JSHint", "\n", "JSLint", "\n", "\n", "\n", "\n", "\n", "\n", "Transcompilers", "\n", "\n", "\n", "\n", "CoffeeScript", "\n", "Dart", "\n", "Emscripten", "\n", "Google Closure Compiler", "\n", "Google Web Toolkit", "\n", "Morfik", "\n", "TypeScript", "\n", "AtScript", "\n", "Opa", "\n", "Haxe", "\n", "ClojureScript", "\n", "\n", "\n", "\n", "\n", "\n", "Concepts", "\n", "\n", "\n", "\n", "Ajax", "\n", "Client-side", "\n", "Dynamic HTML", "\n", "JavaScript library", "\n", "JavaScript syntax", "\n", "Unobtrusive JavaScript", "\n", "\n", "\n", "\n", "\n", "\n", "Debuggers", "\n", "\n", "\n", "\n", "Firebug", "\n", "Komodo IDE", "\n", "Microsoft Script Debugger", "\n", "Microsoft Script Editor", "\n", "Opera Dragonfly", "\n", "Venkman", "\n", "Web Inspector", "\n", "\n", "\n", "\n", "\n", "\n", "Doc generators", "\n", "\n", "\n", "\n", "JSDoc", "\n", "\n", "\n", "\n", "\n", "\n", "Editors (", "comparison", ")", "\n", "\n", "\n", "\n", "Ace", "\n", "\n", "Cloud9 IDE", "\n", "\n", "\n", "Atom", "\n", "CodeMirror", "\n", "\n", "Light Table", "\n", "Brackets", "\n", "\n", "\n", "Koding", "\n", "Orion", "\n", "Visual Studio", "\n", "\n", "Visual Studio Express", "\n", "\n", "\n", "Visual Studio Code", "\n", "Visual Studio Team Services", "\n", "\n", "\n", "\n", "\n", "\n", "Engines", "\n", "\n", "\n", "\n", "Comparison of layout engines", "\n", "List of ECMAScript engines", "\n", "List of JavaScript engines", "\n", "\n", "\n", "\n", "\n", "\n", "Frameworks", "\n", "\n", "\n", "\n", "Comparison of JavaScript frameworks", "\n", "List of JavaScript libraries", "\n", "\n", "\n", "\n", "\n", "\n", "Related ", "technologies", "\n", "\n", "\n", "\n", "Cascading Style Sheets", "\n", "Document Object Model", "\n", "HTML", "\n", "JSON", "\n", "WebAssembly", "\n", "\n", "\n", "\n", "\n", "\n", "Package managers", "\n", "\n", "\n", "\n", "npm", "\n", "NuGet", "\n", "\n", "\n", "\n", "\n", "\n", "Server-side", "\n", "\n", "\n", "\n", "Active Server Pages", "\n", "CommonJS", "\n", "JSGI", "\n", "Node.js", "\n", "Wakanda", "\n", "\n", "\n", "\n", "\n", "\n", "Unit testing", "\n", "\n", "\n", "\n", "Jasmine", "\n", "Mocha", "\n", "QUnit", "\n", "List of JavaScript unit testing frameworks", "\n", "\n", "\n", "\n", "\n", "\n", "People", "\n", "\n", "\n", "\n", "Douglas Crockford", "\n", "Brendan Eich", "\n", "John Resig", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "Authority control", "\n", "\n", "\n", "\n", "GND", ": ", "1027030742", "\n", "\n", "\n", "\n", "\n", "\n", "\n\n\n", "\n", "\n", "\n", "\n"], "lastUpdated": " 12 January 2018, at 21:22."}, +{"title": "Sails.js", "text": ["\n", "Sails.js", "\n", "\n", "\n", "Sails.js brand logo", "\n", "\n", "\n", "\n", "Developer(s)", "\n", "Mike McNeil", " and others", "\n", "\n", "\n", "Initial release", "\n", "2012", "; 6\u00a0years ago", "\u00a0(", "2012", ")", "\n", "\n", "\n", "Development status", "\n", "Active", "\n", "\n", "\n", "Written in", "\n", "JavaScript", "\n", "\n", "\n", "Operating system", "\n", "Cross-platform", "\n", "\n", "\n", "Platform", "\n", "Node.js", "\n", "\n", "\n", "Type", "\n", "Web framework", "\n", "\n", "\n", "License", "\n", "MIT License", "\n", "\n", "\n", "Website", "\n", "sailsjs", ".com", "\n", "\n", "\n", "Sails.js", " (or ", "Sails", ")", "[1]", " is a ", "Model-View-Controller", " (MVC) ", "web application framework", " developed atop the ", "Node.js", " environment,", "[2]", ":", "1, 19", " released as ", "free and open-source software", " under the ", "MIT License", ".", "[3]", "[4]", " It is designed to make it easy to build custom, enterprise-grade Node.js ", "web applications", " and ", "APIs", ".", "[3]", "[5]", " Emulating the MVC architecture of other frameworks, like ", "Ruby on Rails", ",", "[2]", ":", "19", " it offers similar pattern and familiarity, reducing the cognitive burden when switching between other frameworks/languages.", "\n", "\n", "\n", "\n", "Contents", "\n", "\n", "\n", "1", " ", "Features", "\n", "2", " ", "Community Acclaim", "\n", "3", " ", "References", "\n", "4", " ", "External links", "\n", "\n", "\n", "\n", "Features", "[", "edit", "]", "\n", "Sails.js offers a host of features and attributes. Because it is built on Node.js and ", "Express.js", ",", "[6]", " it enables applications to be built with 100% JavaScript. This not only includes models, views, and controllers; but also configuration files and adapters (e.g., database).", "\n", "Like Ruby on Rails,", "[1]", " Sails.js provides an ", "Object-relational mapping", " interface, using ", "Waterline.js", ", which abstracts the database interaction.", "[6]", " This enables a uniform API regardless of the underlying database being used.", "[7]", "\n", "A number of other packages are included to enable fast auto-generated ", "REST API", "S, ", "WebSockets", " by default using ", "Socket.io", ";", "[1]", " and compatibility features making it front-end agnostic so that many tools and frameworks (", "AngularJS", ", ", "React.js", ", ", "Android", ", ", "iOS", ", etc.) are supported.", "\n", "Community Acclaim", "[", "edit", "]", "\n", "As compared to other libraries/frameworks, like ", "FeathersJS", ", Sails offers a host of features out of the box and leads as the generally accepted Node.js framework for both full-stack development and REST APIs.", "[8]", "\n", "References", "[", "edit", "]", "\n", "\n", "\n", "\n", "^ ", "a", " ", "b", " ", "c", " ", "Krol, Jason (2014). ", "Web Development with MongoDB and Node.js", ". Packt. pp.\u00a0PT455. ", "ISBN", "\u00a0", "9781783987313", " \u2013 via Google Books (Preview).", "\u00a0", "\n", "^ ", "a", " ", "b", " ", "Shahid, Shaikh (2016). ", "Sails.js Essentials", ". Birmingham, UK: Packt. ", "ISBN", "\u00a0", "9781783554546", ". ", "OCLC", "\u00a0", "944986529", " \u2013 via Google Books (Preview).", "\u00a0", "\n", "^ ", "a", " ", "b", " ", "\"Sails.js | Realtime MVC Framework for Node.js\"", ". The Sails Company", ". Retrieved ", "21 July", " 2017", ".", "\u00a0", "\n", "^", " ", "\"sails\"", ". npm, inc", ". Retrieved ", "21 July", " 2017", ".", "\u00a0", "\n", "^", " ", "Rajput, Mehul (12 December 2016). ", "\"Top Reasons Why Sails.js Is The Best Node.js Web Framework\"", ". ", "mindinvenory", ". Mindinventory", ". Retrieved ", "22 July", " 2017", ".", "\u00a0", "\n", "^ ", "a", " ", "b", " ", "Yang, Chuoxian. ", "\"Comparison Of Four Popular Node.js Frameworks | Toptal\"", ". ", "toptal", ". Toptal, LLC", ". Retrieved ", "22 July", " 2017", ".", "\u00a0", "\n", "^", " ", "\"Waterline.js home page\"", ".", "\u00a0", "\n", "^", " ", "\"Slant.co's Sails.js Review\"", ".", "\u00a0", "\n", "\n", "\n", "\n", "External links", "[", "edit", "]", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "v", "\n", "t", "\n", "e", "\n", "\n", "\n", "Node.js", "\n", "\n", "\n", "\n", "Platform", "\n", "\n", "\n", "\n", "Node.js", "\n", "NPM", "\n", "V8", "\n", "CommonJS", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "Frameworks", "\n", "\n", "\n", "\n", "MEAN", "\n", "\n", "MongoDB", "\n", "Express.js", "\n", "AngularJS", "/", "Angular", "\n", "\n", "\n", "MEEN (substituted with ", "Ember.js", ")", "\n", "Backbone.js", "\n", "Meteor", "\n", "\n", "\n", "\n", "\n", "\n", "Libraries", "\n", "\n", "\n", "\n", "Lodash", "\n", "Underscore.js", "\n", "React.js", "\n", "\n", "\n", "\n", "\n", "\n", "Languages", "\n", "\n", "\n", "\n", "JavaScript", "\n", "CoffeeScript", "\n", "TypeScript", "\n", "\n", "\n", "\n", "\n", "\n", "Hosts", "\n", "\n", "\n", "\n", "Joyent", "\n", "Nodejitsu", "\n", "OpenShift", "\n", "Linode", "\n", "DigitalOcean", "\n", "\n", "\n", "\n", "\n", "\n", "\n\n\n", "\n", "\n", "\n", "\n"], "lastUpdated": " 25 November 2017, at 16:44."}, +{"title": "JavaScript", "text": ["Not to be confused with ", "Java (programming language)", ", ", "Java (software platform)", ", or ", "Javanese script", ".", "\n", "\n", "JavaScript", "\n", "\n", "Paradigm", "\n", "Multi-paradigm", ": ", "object-oriented", " (", "prototype-based", "), ", "imperative", ", ", "functional", ", ", "event-driven", "[1]", "\n", "\n", "\n", "Designed\u00a0by", "\n", "Brendan Eich", "\n", "\n", "\n", "Developer", "\n", "Netscape Communications Corporation", ", ", "Mozilla Foundation", ", ", "Ecma International", "\n", "\n", "\n", "First\u00a0appeared", "\n", "December\u00a04, 1995", "; 22 years ago", "\u00a0(", "1995-12-04", ")", "[2]", "\n", "\n", "\n", "\n", "\n", "\n", "Stable release", "\n", "\n", "ECMAScript 2017", "[3]", " / June\u00a02017", "; 7\u00a0months ago", "\u00a0(", "2017-06", ")", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "Typing discipline", "\n", "dynamic", ", ", "duck", "\n", "\n", "\n", "Filename extensions", "\n", ".js", "\n", "\n", "\n", "Website", "\n", "Mozilla", "\n", "\n", "\n", "Major ", "implementations", "\n", "\n", "\n", "V8", ", ", "JavaScriptCore", ", ", "SpiderMonkey", ", ", "Chakra", "\n", "\n", "\n", "Influenced by", "\n", "\n", "\n", "Lua", ", ", "Scheme", ", ", "Perl", ", ", "Self", ", ", "Java", ", ", "C", ", ", "Python", ", ", "AWK", ", ", "HyperTalk", "\n", "\n", "\n", "Influenced", "\n", "\n", "\n", "ActionScript", ", ", "AtScript", ", ", "CoffeeScript", ", ", "Dart", ", ", "JScript .NET", ", ", "LiveScript", ", ", "Objective-J", ", ", "Opa", ", ", "Perl 6", ", ", "QML", ", ", "TypeScript", "\n", "\n", "\n", "\n", "\n", " ", "JavaScript", " at Wikibooks", "\n", "\n", "\n", "\n", "\n", "\n", "JavaScript", "\n", "\n", "Filename extension", "\n", ".js", "\n", "\n", "\n", "Internet media\u00a0type", "\n", "\n", "\n", "\n", "application/javascript", "\n", "text/javascript", "\u00a0(obsolete)", "[4]", "\n", "\n", "\n", "\n", "\n", "\n", "Uniform Type Identifier\u00a0(UTI)", "\n", "\n", "com.netscape.javascript-source", "\n", "[5]", "\n", "\n", "\n", "Type of format", "\n", "Scripting language", "\n", "\n", "\n", "\n", "\n", "Part of a ", "series", " on", "\n", "\n", "\n", "JavaScript", "\n", "\n", "\n", "\n", "\n", "JavaScript syntax", "\n", "JavaScript library", "\n", "Unobtrusive JavaScript", "\n", "JavaScript engine", "\n", "\n", "\n", "\n", "\n", "Lists of Frameworks and Libraries", "\n", "\n", "\n", "\n", "\n", "Ajax frameworks", "\n", "JavaScript web frameworks", "\n", "Comparison of JavaScript frameworks", "\n", "List of JavaScript libraries", "\n", "JavaScript unit testing frameworks", "\n", "\n", "\n", "\n", "\n", "JavaScript Object Notation", "\n", "\n", "\n", "\n", "See also", "\n", "\n", "ECMAScript", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "v", "\n", "t", "\n", "e", "\n", "\n", "\n", "\n", "\n", "\n", "JavaScript", " (", "/", "\u02c8", "d\u0292", "\u0251\u02d0", "v", "\u0259", "\u02cc", "s", "k", "r", "\u026a", "p", "t", "/", "[6]", "), often abbreviated as ", "JS", ", is a ", "high-level", ", ", "dynamic", ", ", "weakly typed", ", ", "prototype-based", ", ", "multi-paradigm", ", and ", "interpreted", " ", "programming language", ". Alongside ", "HTML", " and ", "CSS", ", JavaScript is one of the three core technologies of ", "World Wide Web", " ", "content production", ". It is used to make webpages interactive and provide online programs, including video games. The majority of ", "websites", " employ it, and all modern ", "web browsers", " support it without the need for ", "plug-ins", " by means of a built-in ", "JavaScript engine", ". Each of the many JavaScript engines represent a different implementation of JavaScript, all based on the ", "ECMAScript", " specification, with some engines not supporting the spec fully, and with many engines supporting additional features beyond ECMA.", "\n", "As a multi-paradigm language, JavaScript supports ", "event-driven", ", ", "functional", ", and ", "imperative", " (including ", "object-oriented", " and ", "prototype-based", ") ", "programming styles", ". It has an ", "API", " for working with text, ", "arrays", ", dates, ", "regular expressions", ", and basic manipulation of the ", "DOM", ", but the language itself does not include any ", "I/O", ", such as networking, storage, or graphics facilities, relying for these upon the host environment in which it is embedded.", "\n", "Initially only implemented ", "client-side", " in web browsers, JavaScript engines are now embedded in many other types of host software, including ", "server-side", " in web servers and databases, and in non-web programs such as word processors and ", "PDF", " software, and in runtime environments that make JavaScript available for writing mobile and desktop applications, including desktop widgets.", "\n", "Although there are strong outward similarities between JavaScript and Java, including language name, ", "syntax", ", and respective ", "standard libraries", ", the two languages are distinct and differ greatly in design; JavaScript was influenced by programming languages such as ", "Self", " and ", "Scheme", ".", "[7]", "\n", "\n", "\n", "\n", "Contents", "\n", "\n", "\n", "1", " ", "History", "\n", "\n", "1.1", " ", "Beginnings at Netscape", "\n", "1.2", " ", "Server-side JavaScript", "\n", "1.3", " ", "Adoption by Microsoft", "\n", "1.4", " ", "Standardization", "\n", "1.5", " ", "Later developments", "\n", "\n", "\n", "2", " ", "Trademark", "\n", "3", " ", "Vanilla JavaScript", "\n", "4", " ", "Features", "\n", "\n", "4.1", " ", "Universal support", "\n", "4.2", " ", "Imperative and structured", "\n", "4.3", " ", "Dynamic", "\n", "4.4", " ", "Prototype-based (object-oriented)", "\n", "4.5", " ", "Functional", "\n", "4.6", " ", "Delegative", "\n", "4.7", " ", "Miscellaneous", "\n", "4.8", " ", "Vendor-specific extensions", "\n", "\n", "\n", "5", " ", "Syntax", "\n", "\n", "5.1", " ", "Simple examples", "\n", "5.2", " ", "More advanced example", "\n", "\n", "\n", "6", " ", "Use in Web pages", "\n", "\n", "6.1", " ", "Example script", "\n", "6.2", " ", "Compatibility considerations", "\n", "\n", "\n", "7", " ", "Security", "\n", "\n", "7.1", " ", "Cross-site vulnerabilities", "\n", "7.2", " ", "Misplaced trust in the client", "\n", "7.3", " ", "Misplaced trust in developers", "\n", "7.4", " ", "Browser and plugin coding errors", "\n", "7.5", " ", "Sandbox implementation errors", "\n", "7.6", " ", "Hardware vulnerabilities", "\n", "\n", "\n", "8", " ", "Uses outside Web pages", "\n", "\n", "8.1", " ", "Embedded scripting language", "\n", "8.2", " ", "Scripting engine", "\n", "8.3", " ", "Application platform", "\n", "\n", "\n", "9", " ", "Development tools", "\n", "10", " ", "Benchmark tools for developers", "\n", "11", " ", "Version history", "\n", "12", " ", "Related languages and features", "\n", "\n", "12.1", " ", "Use as an intermediate language", "\n", "12.2", " ", "JavaScript and Java", "\n", "\n", "\n", "13", " ", "See also", "\n", "14", " ", "References", "\n", "15", " ", "Further reading", "\n", "16", " ", "External links", "\n", "\n", "\n", "\n", "History", "[", "edit", "]", "\n", "Beginnings at Netscape", "[", "edit", "]", "\n", "In 1993, the ", "National Center for Supercomputing Applications", " (NCSA), a unit of the ", "University of Illinois at Urbana-Champaign", ", released ", "NCSA Mosaic", ", the first popular graphical ", "Web browser", ", which played an important part in expanding the growth of the nascent ", "World Wide Web", ". In 1994, a company called ", "Mosaic Communications", " was founded in ", "Mountain View, California", " and employed many of the original NCSA Mosaic authors to create ", "Mosaic Netscape", ". However, it intentionally shared no code with NCSA Mosaic. The internal codename for the company's browser was Mozilla, which stood for \"Mosaic killer\", as the company's goal was to displace NCSA Mosaic as the world's number one web browser. The first version of the Web browser, Mosaic Netscape 0.9, was released in late 1994. Within four months it had already taken three-quarters of the browser market and became the main browser for the Internet in the 1990s. To avoid trademark ownership problems with the NCSA, the browser was subsequently renamed Netscape Navigator in the same year, and the company took the name Netscape Communications. Netscape Communications realized that the Web needed to become more dynamic. ", "Marc Andreessen", ", the founder of the company believed that ", "HTML", " needed a \"glue language\" that was easy to use by Web designers and part-time programmers to assemble components such as images and plugins, where the code could be written directly in the Web page markup.", "\n", "In 1995, Netscape Communications recruited ", "Brendan Eich", " with the goal of embedding the ", "Scheme", " programming language into its Netscape Navigator.", "[8]", " Before he could get started, Netscape Communications collaborated with ", "Sun Microsystems", " to include in Netscape Navigator Sun's more static programming language ", "Java", ", in order to compete with ", "Microsoft", " for user adoption of Web technologies and platforms.", "[9]", " Netscape Communications then decided that the scripting language they wanted to create would complement Java and should have a similar syntax, which excluded adopting other languages such as ", "Perl", ", ", "Python", ", ", "TCL", ", or Scheme. To defend the idea of JavaScript against competing proposals, the company needed a prototype. Eich wrote one in 10 days, in May 1995.", "\n", "Although it was developed under the name ", "Mocha", ", the language was officially called ", "LiveScript", " when it first shipped in beta releases of Netscape Navigator 2.0 in September 1995, but it was renamed ", "JavaScript", "[2]", " when it was deployed in the Netscape Navigator 2.0 beta 3 in December.", "[10]", " The final choice of name caused confusion, giving the impression that the language was a spin-off of the Java programming language, and the choice has been characterized", "[", "by whom?", "]", " as a marketing ploy by Netscape to give JavaScript the cachet of what was then the hot new Web programming language.", "\n", "There is a common misconception that JavaScript was influenced by an earlier Web page scripting language developed by ", "Nombas", " named Cmm (not to be confused with the later ", "C--", " created in 1997).", "[11]", "[12]", " Brendan Eich, however, had never heard of Cmm before he created LiveScript.", "[13]", " Nombas did pitch their embedded Web page scripting to Netscape, though Web page scripting was not a new concept, as shown by the ", "ViolaWWW", " Web browser.", "[14]", " Nombas later switched to offering JavaScript instead of Cmm in their ScriptEase product and was part of the TC39 group that standardized ECMAScript.", "[15]", "\n", "Server-side JavaScript", "[", "edit", "]", "\n", "In December 1995, soon after releasing JavaScript for browsers, Netscape introduced an implementation of the language for ", "server-side scripting", " with ", "Netscape Enterprise Server", ".", "[16]", "\n", "Since the mid-2000s, additional ", "server-side JavaScript implementations", " have been introduced, such as ", "Node.js", " in 2009.", "[17]", "\n", "Adoption by Microsoft", "[", "edit", "]", "\n", "Microsoft script technologies including ", "VBScript", " and ", "JScript", " were released in 1996. JScript, a reverse-engineered implementation of Netscape's JavaScript, was part of ", "Internet Explorer 3", ". JScript was also available for server-side scripting in ", "Internet Information Server", ". Internet Explorer 3 also included Microsoft's first support for CSS and various extensions to HTML, but in each case the implementation was noticeably different to that found in Netscape Navigator at the time.", "[18]", "[19]", " These differences made it difficult for designers and programmers to make a single website work well in both browsers, leading to the use of \"best viewed in Netscape\" and \"best viewed in Internet Explorer\" logos that characterized these early years of the ", "browser wars", ".", "[20]", " JavaScript began to acquire a reputation for being one of the roadblocks to a cross-platform and standards-driven Web. Some developers took on the difficult task of trying to make their sites work in both major browsers, but many could not afford the time.", "[18]", " With the release of ", "Internet Explorer 4", ", Microsoft introduced the concept of ", "Dynamic HTML", ", but the differences in language implementations and the different and proprietary ", "Document Object Models", " remained and were obstacles to widespread take-up of JavaScript on the Web.", "[18]", "\n", "Standardization", "[", "edit", "]", "\n", "In November 1996, Netscape submitted JavaScript to ", "Ecma International", " to carve out a standard specification, which other browser vendors could then implement based on the work done at Netscape. This led to the official release of the language specification ", "ECMAScript", " published in the first edition of the ECMA-262 standard in June 1997, with JavaScript being the most well known of the implementations. ", "ActionScript", " and ", "JScript", " are other well-known implementations of ECMAScript.", "\n", "The standards process continued in cycles, with the release of ECMAScript 2 in June 1998, which brings some modifications to conform to the ISO/IEC 16262 international standard. The release of ECMAScript 3 followed in December 1999, which is the baseline for modern day JavaScript. The original ECMAScript 4 work led by Waldemar Horwat (then at Netscape, now at ", "Google", ") started in 2000 and at first, ", "Microsoft", " seemed to participate and even implemented some of the proposals in their ", "JScript .NET", " language.", "\n", "Over time it was clear though that Microsoft had no intention of cooperating or implementing proper JavaScript in Internet Explorer, even though they had no competing proposal and they had a partial (and diverged at this point) implementation on the ", ".NET", " server side. So by 2003, the original ECMAScript 4 work was mothballed.", "\n", "The next major event was in 2005, with two major happenings in JavaScript's history. First, Brendan Eich and Mozilla rejoined Ecma International as a not-for-profit member and work started on ", "ECMAScript for XML", " (E4X), the ECMA-357 standard, which came from ex-Microsoft employees at ", "BEA Systems", " (originally acquired as Crossgain). This led to working jointly with ", "Macromedia", " (later acquired by ", "Adobe Systems", "), who were implementing E4X in ActionScript 3 (ActionScript 3 was a fork of original ECMAScript 4).", "\n", "So, along with Macromedia, work restarted on ECMAScript 4 with the goal of standardizing what was in ActionScript 3. To this end, Adobe Systems released the ActionScript Virtual Machine 2, code named ", "Tamarin", ", as an ", "open source", " project. But Tamarin and ActionScript 3 were too different from web JavaScript to converge, as was realized by the parties in 2007 and 2008.", "\n", "Alas, there was still turmoil between the various players; ", "Douglas Crockford", "\u2014then at ", "Yahoo!", "\u2014joined forces with Microsoft in 2007 to oppose ECMAScript 4, which led to the ECMAScript 3.1 effort. The development of ECMAScript 4 was never completed, but that work influenced subsequent versions.", "[21]", "\n", "While all of this was happening, the open source and developer communities set to work to revolutionize what could be done with JavaScript. This community effort was sparked in 2005 when ", "Jesse James Garrett", " released a white paper in which he coined the term ", "Ajax", ", and described a set of technologies, of which JavaScript was the backbone, used to create web applications where data can be loaded in the background, avoiding the need for full page reloads and leading to more dynamic applications. This resulted in a renaissance period of JavaScript usage spearheaded by open source libraries and the communities that formed around them, with libraries such as ", "Prototype", ", ", "jQuery", ", ", "Dojo Toolkit", ", ", "MooTools", ", and others being released.", "\n", "In July 2008, the disparate parties on either side came together in Oslo. This led to the eventual agreement in early 2009 to rename ECMAScript 3.1 to ECMAScript 5 and drive the language forward using an agenda that is known as Harmony. ECMAScript 5 was finally released in December 2009.", "\n", "In June 2011, ECMAScript 5.1 was released to fully align with the third edition of the ISO/IEC 16262 international standard. ECMAScript 2015 was released in June 2015. ECMAScript 2016 was released in June 2016. The current version is ECMAScript 2017, released in June 2017.", "[3]", "\n", "Later developments", "[", "edit", "]", "\n", "JavaScript has become one of the most popular programming languages on the Web. Initially, however, many professional programmers denigrated the language because, among other reasons, its target audience consisted of Web authors and other such \"amateurs\".", "[22]", " The advent of ", "Ajax", " returned JavaScript to the spotlight and brought more professional programming attention. The result was a proliferation of comprehensive ", "frameworks and libraries", ", improved JavaScript programming practices, and increased usage of JavaScript outside Web browsers, as seen by the proliferation of ", "server-side JavaScript", " platforms.", "\n", "In January 2009, the ", "CommonJS", " project was founded with the goal of specifying a common standard library mainly for JavaScript development outside the browser.", "[23]", "\n", "With the rise of ", "single-page applications", " and JavaScript-heavy sites, it is increasingly being used as a compile target for ", "source-to-source compilers", " from both ", "dynamic languages", " and ", "static languages", ".", "\n", "Trademark", "[", "edit", "]", "\n", "\"JavaScript\" is a ", "trademark", " of ", "Oracle Corporation", " in the United States.", "[24]", " It is used under license for technology invented and implemented by Netscape Communications and current entities such as the ", "Mozilla Foundation", ".", "[25]", "\n", "Vanilla JavaScript", "[", "edit", "]", "\n", "The terms ", "Vanilla JavaScript", " and ", "Vanilla JS", " refer to JavaScript not extended by any frameworks or additional libraries. Scripts written in Vanilla JS are plain JavaScript code.", "[26]", "[27]", "\n", "Features", "[", "edit", "]", "\n", "The following features are common to all conforming ECMAScript implementations, unless explicitly specified otherwise.", "\n", "Universal support", "[", "edit", "]", "\n", "All modern Web browsers support JavaScript with built-in interpreters.", "\n", "Imperative and structured", "[", "edit", "]", "\n", "JavaScript supports much of the ", "structured programming", " syntax from ", "C", " (e.g., ", "if", " statements, ", "while", " loops, ", "switch", " statements, ", "do while", " loops, etc.). One partial exception is ", "scoping", ": JavaScript originally had only ", "function scoping", " with ", "var", ". ECMAScript 2015 added keywords ", "let", " and ", "const", " for block scoping, meaning JavaScript now has both function and block scoping. Like C, JavaScript makes a distinction between ", "expressions", " and ", "statements", ". One syntactic difference from C is ", "automatic semicolon insertion", ", which allows the semicolons that would normally terminate statements to be omitted.", "[28]", "\n", "Dynamic", "[", "edit", "]", "\n", "\n", "Typing", "\n", "As with most ", "scripting languages", ", JavaScript is ", "dynamically typed", "; a ", "type", " is associated with each ", "value", ", rather than just with each expression. For example, a ", "variable", " that is at one time bound to a number may later be re-bound to a ", "string", ".", "[29]", " JavaScript supports various ways to test the type of an object, including ", "duck typing", ".", "[30]", "\n", "Run-time evaluation", "\n", "JavaScript includes an ", "eval", " function that can execute statements provided as strings at run-time.", "\n", "\n", "Prototype-based (object-oriented)", "[", "edit", "]", "\n", "JavaScript is almost entirely ", "object-based", ". In JavaScript, an ", "object", " is an ", "associative array", ", augmented with a prototype (see below); each string key provides the name for an object property, and there are two syntactical ways to specify such a name: dot notation (", "obj.x\u00a0=\u00a010", ") and bracket notation (", "obj['x']\u00a0=\u00a010", "). A property may be added, rebound, or deleted at run-time. Most properties of an object (and any property that belongs to an object's prototype inheritance chain) can be enumerated using a ", "for...in", " loop.", "\n", "JavaScript has a small number of built-in objects, including ", "Function", " and ", "Date", ".", "\n", "\n", "Prototypes", "\n", "JavaScript uses ", "prototypes", " where many other object-oriented languages use ", "classes", " for ", "inheritance", ".", "[31]", " It is possible to simulate many class-based features with prototypes in JavaScript.", "[32]", "\n", "Functions as object constructors", "\n", "Functions double as object constructors, along with their typical role. Prefixing a function call with ", "new", " will create an instance of a prototype, inheriting properties and methods from the constructor (including properties from the ", "Object", " prototype).", "[33]", " ECMAScript 5 offers the ", "Object.create", " method, allowing explicit creation of an instance without automatically inheriting from the ", "Object", " prototype (older environments can assign the prototype to ", "null", ").", "[34]", " The constructor's ", "prototype", " property determines the object used for the new object's internal prototype. New methods can be added by modifying the prototype of the function used as a constructor. JavaScript's built-in constructors, such as ", "Array", " or ", "Object", ", also have prototypes that can be modified. While it is possible to modify the ", "Object", " prototype, it is generally considered bad practice because most objects in JavaScript will inherit methods and properties from the ", "Object", " prototype, and they may not expect the prototype to be modified.", "[35]", "\n", "Functions as methods", "\n", "Unlike many object-oriented languages, there is no distinction between a function definition and a ", "method", " definition. Rather, the distinction occurs during function calling; when a function is called as a method of an object, the function's local ", "this", " keyword is bound to that object for that invocation.", "\n", "\n", "Functional", "[", "edit", "]", "\n", "A ", "function", " is ", "first-class", "; a function is considered to be an object. As such, a function may have properties and methods, such as ", ".call()", " and ", ".bind()", ".", "[36]", " A ", "nested", " function is a function defined within another function. It is created each time the outer function is invoked. In addition, each nested function forms a ", "lexical closure", ": The ", "lexical scope", " of the outer function (including any constant, local variable, or argument value) becomes part of the internal state of each inner function object, even after execution of the outer function concludes.", "[37]", " JavaScript also supports ", "anonymous functions", ".", "\n", "Delegative", "[", "edit", "]", "\n", "JavaScript supports implicit and explicit ", "delegation", ".", "\n", "\n", "Functions as roles (Traits and Mixins)", "\n", "JavaScript natively supports various function-based implementations of ", "Role", "[38]", " patterns like ", "Traits", "[39]", "[40]", " and ", "Mixins", ".", "[41]", " Such a function defines additional behavior by at least one method bound to the ", "this", " keyword within its ", "function", " body. A Role then has to be delegated explicitly via ", "call", " or ", "apply", " to objects that need to feature additional behavior that is not shared via the prototype chain.", "\n", "Object composition and inheritance", "\n", "Whereas explicit function-based delegation does cover ", "composition", " in JavaScript, implicit delegation already happens every time the prototype chain is walked in order to, e.g., find a method that might be related to but is not directly owned by an object. Once the method is found it gets called within this object's context. Thus ", "inheritance", " in JavaScript is covered by a delegation automatism that is bound to the prototype property of constructor functions.", "\n", "\n", "Miscellaneous", "[", "edit", "]", "\n", "\n", "Run-time environment", "\n", "JavaScript typically relies on a run-time environment (e.g., a ", "Web browser", ") to provide objects and methods by which scripts can interact with the environment (e.g., a webpage DOM). It also relies on the run-time environment to provide the ability to include/import scripts (e.g., ", "HTML", " ", "\n", - " \n", - "\n", - " \n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\t
\n", - "\t\t\n", - "\t
\n", - "\n", - "\t
\n", - "
\n", - " \t\t
\n", - " \t\t\t

Your Email Subscription

\n", - "\n", - " \n", - "\n", - " \t\t\t

We want to stay in touch, but only in ways that you find helpful. Select your preferences by using the form below and saving your changes.

\n", - "\n", - "

You’re Almost Finished

\n", - "\n", - "

One more click and you’ll be all set. To confirm your subscription, please add to your profile below, or simply confirm by clicking this button:

\n", - "\n", - " \n", - "
\n", - " \n", - "
\n", - "\n", - "

Complete Your Profile

\n", - "
\n", - "
\n", - "\t\n", - "\tryan.e.mitchell@gmail.com   (Not ryan.e.mitchell@gmail.com?)\n", - "\t
\n", - "
\n", - "
\n", - " \n", - "\n", - "
\n", - "\n", - "
\n", - " \n", - "\n", - "
\n", - "
\n", - " \t\t
\n", - "\n", - " \t\t
\n", - "

Choose Your Email Preferences

\n", - "\n", - "
\n", - " \t\t\t

Training

\n", - " \n", - "\n", - " \t\t\t

Webcasts

\n", - " \n", - "\n", - " \t\t\t

Product and Promotion Alerts

\n", - "
\n", - " Business & Leadership\n", - " Data\n", - " Design\n", - " Digital Photography\n", - " DIY\n", - " Game Design & Development\n", - " IoT\n", - " Linux & Unix\n", - " Math and Science\n", - " Mobile Design & Development\n", - "
\n", - "\n", - " \n", - "
\n", - "\n", - "
\n", - " \t\t\t

Newsletters

\n", - "
\n", - " Artifical Intelligence\n", - " Data\n", - " Design\n", - " FinTech\n", - " Four short links\n", - " Next:Economy\n", - " Programming\n", - " Security\n", - " Systems Engineering and Operations\n", - " Web\n", - " \t
\n", - "\n", - "\n", - "

Conference Bulletins

\n", - " \n", - "\n", - "
\n", - "\n", - " \n", - "\n", - " \n", - "\n", - " \n", - "\n", - " \n", - "\n", - " \n", - "\n", - " \n", - "\n", - " \n", - "\n", - " \n", - "\n", - " \n", - "\n", - " \n", - "\n", - " \n", - "\n", - " \n", - "\n", - " \n", - "\n", - " \n", - "\n", - " \n", - "\n", - " \n", - "\n", - " \n", - "\n", - " \n", - "\n", - " \n", - "\n", - " \n", - "\n", - " \n", - "\n", - " \n", - "\n", - " \n", - "\n", - " \n", - "\n", - " \n", - "\n", - " \n", - "\n", - " \n", - "\n", - " \n", - "\n", - " \n", - "\n", - " \n", - "\n", - "\n", - " \n", - "\n", - " \n", - "\n", - " \n", - "\n", - " \n", - "\n", - " \n", - "\n", - " \n", - "\n", - " \n", - "\n", - " \n", - "\n", - " \n", - "\n", - " \n", - "\n", - " \n", - "\n", - " \n", - "\n", - " \n", - "\n", - " \n", - "\n", - "
\n", - "
\n", - "

Scroll to manage all subscription options.

\n", - "
\n", - "
\n", - "
\n", - " \n", - "
\n", - "\n", - "

We take your privacy seriously and will not sell or distribute your email.

\n", - " \n", - "\t\t
\n", - " \n", - "
\n", - "\t
\n", - "\n", - "\t\n", - "\n", - " \n", - "\n", - " \n", - "\n", - "\n", - "\n", - "\n", - "\n" - ] - } - ], - "source": [ - "import requests\n", - "params = {'email_addr': 'ryan.e.mitchell@gmail.com'}\n", - "r = requests.post(\"http://post.oreilly.com/client/o/oreilly/forms/quicksignup.cgi\",\n", - " data=params)\n", - "print(r.text)" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "metadata": {}, - "outputs": [ - { - "ename": "FileNotFoundError", - "evalue": "[Errno 2] No such file or directory: 'files/Python-logo.png'", - "output_type": "error", - "traceback": [ - "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", - "\u001b[0;31mFileNotFoundError\u001b[0m Traceback (most recent call last)", - "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[1;32m 1\u001b[0m \u001b[0;32mimport\u001b[0m \u001b[0mrequests\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 2\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 3\u001b[0;31m \u001b[0mfiles\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m{\u001b[0m\u001b[0;34m'uploadFile'\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0mopen\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'files/Python-logo.png'\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m'rb'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m}\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 4\u001b[0m \u001b[0mr\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mrequests\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mpost\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'http://pythonscraping.com/pages/processing2.php'\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mfiles\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mfiles\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 5\u001b[0m \u001b[0mprint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mr\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mtext\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;31mFileNotFoundError\u001b[0m: [Errno 2] No such file or directory: 'files/Python-logo.png'" - ] - } - ], - "source": [ - "import requests\n", - "\n", - "files = {'uploadFile': open('files/Python-logo.png', 'rb')}\n", - "r = requests.post('http://pythonscraping.com/pages/processing2.php', files=files)\n", - "print(r.text)" - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Cookie is set to:\n", - "{'loggedin': '1', 'username': 'Ryan'}\n", - "-----------\n", - "Going to profile page...\n", - "Hey Ryan! Looks like you're still logged into the site!\n" - ] - } - ], - "source": [ - "import requests\n", - "\n", - "params = {'username': 'Ryan', 'password': 'password'}\n", - "r = requests.post('http://pythonscraping.com/pages/cookies/welcome.php', params)\n", - "print('Cookie is set to:')\n", - "print(r.cookies.get_dict())\n", - "print('Going to profile page...')\n", - "r = requests.get('http://pythonscraping.com/pages/cookies/profile.php', \n", - " cookies=r.cookies)\n", - "print(r.text)" - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Cookie is set to:\n", - "{'loggedin': '1', 'username': 'username'}\n", - "Going to profile page...\n", - "Hey username! Looks like you're still logged into the site!\n" - ] - } - ], - "source": [ - "import requests\n", - "\n", - "session = requests.Session()\n", - "\n", - "params = {'username': 'username', 'password': 'password'}\n", - "s = session.post('http://pythonscraping.com/pages/cookies/welcome.php', params)\n", - "print(\"Cookie is set to:\")\n", - "print(s.cookies.get_dict())\n", - "print('Going to profile page...')\n", - "s = session.get('http://pythonscraping.com/pages/cookies/profile.php')\n", - "print(s.text)" - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "

Hello ryan.

You entered password as your password.

\n" - ] - } - ], - "source": [ - "import requests\n", - "from requests.auth import AuthBase\n", - "from requests.auth import HTTPBasicAuth\n", - "\n", - "auth = HTTPBasicAuth('ryan', 'password')\n", - "r = requests.post(\n", - " url='http://pythonscraping.com/pages/auth/login.php', auth=auth)\n", - "print(r.text)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.6.1" - } - }, - "nbformat": 4, - "nbformat_minor": 2 -} diff --git a/v2/Chapter11-JavaScript.ipynb b/v2/Chapter11-JavaScript.ipynb deleted file mode 100644 index 57a13ef..0000000 --- a/v2/Chapter11-JavaScript.ipynb +++ /dev/null @@ -1,109 +0,0 @@ -{ - "cells": [ - { - "cell_type": "code", - "execution_count": 1, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Timing out after 10 seconds and returning\n", - "\n", - "The Destination Page!\n", - "\n", - "\n", - "\n", - "This is the page you are looking for!\n", - "\n", - "\n" - ] - } - ], - "source": [ - "from selenium import webdriver\n", - "import time\n", - "from selenium.webdriver.remote.webelement import WebElement\n", - "from selenium.common.exceptions import StaleElementReferenceException\n", - "\n", - "def waitForLoad(driver):\n", - " elem = driver.find_element_by_tag_name(\"html\")\n", - " count = 0\n", - " while True:\n", - " count += 1\n", - " if count > 20:\n", - " print(\"Timing out after 10 seconds and returning\")\n", - " return\n", - " time.sleep(.5)\n", - " try:\n", - " elem == driver.find_element_by_tag_name(\"html\")\n", - " except StaleElementReferenceException:\n", - " return\n", - "\n", - "driver = webdriver.PhantomJS(executable_path='drivers/phantomjs/phantomjs-2.1.1-macosx/bin/phantomjs')\n", - "driver.get(\"http://pythonscraping.com/pages/javascript/redirectDemo1.html\")\n", - "waitForLoad(driver)\n", - "print(driver.page_source)" - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "This is the page you are looking for!\n" - ] - } - ], - "source": [ - "from selenium.webdriver.common.by import By\n", - "from selenium.webdriver.support.ui import WebDriverWait\n", - "from selenium.webdriver.support import expected_conditions as EC\n", - "from selenium.common.exceptions import TimeoutException\n", - "\n", - "driver = webdriver.PhantomJS(\n", - " executable_path='drivers/phantomjs/phantomjs-2.1.1-macosx/bin/phantomjs')\n", - "driver.get('http://pythonscraping.com/pages/javascript/redirectDemo1.html')\n", - "try:\n", - " bodyElement = WebDriverWait(driver, 15).until(EC.presence_of_element_located(\n", - " (By.XPATH, '//body[contains(text(), \"This is the page you are looking for!\")]')))\n", - " print(bodyElement.text)\n", - "except TimeoutException:\n", - " print('Did not find the element')" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.6.1" - } - }, - "nbformat": 4, - "nbformat_minor": 2 -} diff --git a/v2/Chapter12-API-Scraping.ipynb b/v2/Chapter12-API-Scraping.ipynb deleted file mode 100644 index dd5b496..0000000 --- a/v2/Chapter12-API-Scraping.ipynb +++ /dev/null @@ -1,588 +0,0 @@ -{ - "cells": [ - { - "cell_type": "code", - "execution_count": 8, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "--------------------\n", - "history url is: http://en.wikipedia.org/w/index.php?title=Programming_paradigm&action=history\n", - "223.104.186.241\n", - "213.207.90.158\n", - "92.115.222.143\n", - "213.108.115.55\n", - "2605:a601:e0c:6300:996d:68c0:fb03:af2c\n", - "192.117.105.47\n", - "31.203.136.191\n", - "168.216.130.133\n", - "2a02:c7d:a492:f200:e126:2b36:53ca:513a\n", - "37.238.238.36\n", - "197.255.127.246\n", - "110.55.67.15\n", - "193.80.242.220\n", - "42.111.56.168\n", - "223.230.96.108\n", - "113.162.8.249\n", - "39.36.182.41\n", - "--------------------\n", - "history url is: http://en.wikipedia.org/w/index.php?title=Object-oriented_programming&action=history\n", - "113.199.249.237\n", - "205.251.185.250\n", - "1.22.150.73\n", - "121.58.212.157\n", - "217.225.8.24\n", - "162.204.116.16\n", - "112.200.199.62\n", - "117.239.185.50\n", - "103.252.25.104\n", - "103.74.23.139\n", - "103.241.244.36\n", - "2605:a601:474:600:2088:fbde:7512:53b2\n", - "122.181.5.162\n", - "24.93.131.140\n", - "119.152.87.84\n", - "93.136.125.208\n", - "27.251.109.234\n", - "223.230.215.145\n", - "103.16.68.215\n", - "170.142.177.246\n", - "--------------------\n", - "history url is: http://en.wikipedia.org/w/index.php?title=Imperative_programming&action=history\n", - "178.208.206.244\n", - "107.107.62.0\n", - "188.146.23.38\n", - "2604:2000:b064:3300:6dd3:b07e:494d:c5cd\n", - "5.199.208.23\n", - "83.244.156.56\n", - "152.231.35.89\n", - "94.118.222.35\n", - "197.239.7.126\n", - "194.181.240.192\n", - "176.60.44.112\n", - "111.92.130.14\n", - "15.203.233.84\n", - "79.186.27.201\n", - "140.177.205.223\n", - "114.79.32.242\n", - "117.136.79.80\n", - "85.133.27.110\n", - "2600:1004:b151:6515:1c2a:675b:bb28:2986\n", - "--------------------\n", - "history url is: http://en.wikipedia.org/w/index.php?title=Functional_programming&action=history\n", - "31.221.90.4\n", - "132.205.229.26\n", - "178.197.232.225\n", - "202.47.116.116\n", - "80.2.210.229\n", - "66.161.229.34\n", - "203.99.198.64\n", - "216.16.225.202\n", - "2600:1700:10e0:b970:d0be:a8fd:b1c3:dbe4\n", - "2601:983:4502:4cda:5945:9962:1911:c385\n", - "82.41.7.208\n", - "2602:306:cdd1:2d00::3e8\n", - "94.223.128.131\n", - "--------------------\n", - "history url is: http://en.wikipedia.org/w/index.php?title=Procedural_programming&action=history\n", - "201.27.72.206\n", - "194.81.178.163\n", - "63.153.143.196\n", - "51.6.173.174\n", - "193.60.223.165\n", - "82.10.105.143\n", - "72.239.0.15\n", - "37.211.33.26\n", - "73.19.237.89\n", - "175.157.174.60\n", - "185.18.60.135\n", - "2405:204:958d:ab4b:fd9f:4ae3:97ba:dbd6\n", - "107.1.229.152\n", - "63.199.46.9\n", - "91.213.250.8\n", - "63.193.94.14\n", - "86.152.129.204\n", - "41.189.169.218\n", - "2600:8802:2202:700:50a5:62ba:22b:307\n", - "63.199.46.148\n", - "--------------------\n", - "history url is: http://en.wikipedia.org/w/index.php?title=Reflective_programming&action=history\n", - "212.96.25.37\n", - "--------------------\n", - "history url is: http://en.wikipedia.org/w/index.php?title=Software_design&action=history\n", - "116.202.248.202\n", - "117.18.231.54\n", - "144.136.67.206\n", - "121.6.122.250\n", - "49.191.33.124\n", - "97.107.121.1\n", - "103.51.95.185\n", - "103.204.119.6\n", - "2405:204:6109:8ace::bac:e8a4\n", - "98.26.67.24\n", - "41.220.18.230\n", - "2602:30a:c005:6140:811c:1f14:3cd6:33d6\n", - "49.248.91.74\n", - "39.47.55.196\n", - "91.180.76.245\n", - "106.70.251.236\n", - "2607:fb90:47:304:66f7:3c96:489d:dcc6\n", - "2601:641:1:60c:796b:a24b:47fe:c226\n", - "188.70.8.163\n", - "213.106.31.246\n", - "2405:204:d281:564a::13f2:10b0\n", - "--------------------\n", - "history url is: http://en.wikipedia.org/w/index.php?title=Guido_van_Rossum&action=history\n", - "192.244.101.20\n", - "189.106.118.125\n", - "2.97.124.83\n", - "50.53.21.2\n", - "85.75.27.197\n", - "2a02:c7d:dc55:ef00:25f5:c1b4:9f4:84c3\n", - "136.24.120.181\n", - "2601:647:ca01:5728:38f3:777c:759e:9c96\n", - "2601:197:4500:2ecd:148e:dc78:ad4b:f78b\n", - "86.87.183.2\n", - "196.21.153.197\n", - "184.153.183.139\n", - "51.7.201.233\n", - "195.148.173.220\n", - "212.238.182.54\n", - "66.228.70.98\n", - "203.99.198.73\n", - "78.24.111.93\n", - "--------------------\n", - "history url is: http://en.wikipedia.org/w/index.php?title=Software_developer&action=history\n", - "2602:306:ce6a:a6f0:f092:875a:e3d:8408\n", - "162.244.177.177\n", - "66.204.4.247\n", - "97.70.79.67\n", - "164.100.132.7\n", - "202.136.88.218\n", - "2600:100f:b10b:c5f8:589b:be6f:1a94:cb3f\n", - "203.122.32.92\n", - "2601:186:80:2c0d:197c:ef45:fee7:50e6\n", - "86.27.153.255\n", - "122.170.173.53\n", - "93.93.221.66\n", - "81.101.33.91\n", - "50.232.240.142\n", - "194.135.166.62\n", - "168.8.213.107\n", - "73.152.123.80\n", - "--------------------\n", - "history url is: http://en.wikipedia.org/w/index.php?title=Python_Software_Foundation&action=history\n", - "119.15.154.71\n", - "70.198.33.152\n", - "194.83.198.199\n", - "70.198.36.48\n", - "50.56.228.68\n", - "--------------------\n", - "history url is: http://en.wikipedia.org/w/index.php?title=Software_release_life_cycle&action=history\n", - "105.227.18.229\n", - "50.242.157.61\n", - "99.25.123.67\n", - "24.237.5.51\n", - "107.77.205.107\n", - "103.87.165.166\n", - "77.165.37.34\n", - "108.85.43.5\n", - "2600:1:c24c:7ba7:4d0:5dec:90a1:2e5\n", - "131.204.254.100\n", - "116.58.204.209\n", - "2600:1008:b02a:e2e8:f1d3:c3ed:629c:32b3\n", - "77.203.16.224\n", - "98.255.157.224\n", - "103.255.6.93\n", - "130.190.48.3\n", - "49.207.111.128\n", - "--------------------\n", - "history url is: http://en.wikipedia.org/w/index.php?title=Software_release_life_cycle&action=history\n", - "105.227.18.229\n", - "50.242.157.61\n", - "99.25.123.67\n", - "24.237.5.51\n", - "107.77.205.107\n", - "103.87.165.166\n", - "77.165.37.34\n", - "108.85.43.5\n", - "2600:1:c24c:7ba7:4d0:5dec:90a1:2e5\n", - "131.204.254.100\n", - "116.58.204.209\n", - "2600:1008:b02a:e2e8:f1d3:c3ed:629c:32b3\n", - "77.203.16.224\n", - "98.255.157.224\n", - "103.255.6.93\n", - "130.190.48.3\n", - "49.207.111.128\n", - "--------------------\n", - "history url is: http://en.wikipedia.org/w/index.php?title=Type_system&action=history\n", - "80.77.249.225\n", - "2601:2c6:4500:340:84b2:b14f:e9ec:9437\n", - "2405:204:530d:af4b:196c:1ac2:adfd:a081\n", - "192.55.2.36\n", - "208.104.238.70\n", - "145.132.78.225\n", - "2606:a000:a552:a900:3965:ccb9:5bc3:e766\n", - "61.68.220.194\n", - "2602:306:cc7a:cef0:f5d4:aca1:6eb5:8515\n", - "178.149.46.15\n", - "41.68.85.105\n", - "84.173.153.20\n", - "1.127.104.117\n", - "2600:387:8:5::87\n", - "2600:1010:b11f:4f1d:d84d:1837:3d2:d83e\n", - "103.242.23.184\n", - "39.41.217.12\n", - "193.49.107.105\n", - "--------------------\n", - "history url is: http://en.wikipedia.org/w/index.php?title=Duck_typing&action=history\n", - "149.126.4.73\n", - "178.255.11.40\n", - "119.30.38.106\n", - "112.202.239.97\n", - "134.36.36.187\n", - "83.31.45.80\n", - "73.216.44.168\n", - "193.49.118.7\n", - "193.140.54.250\n", - "141.168.250.205\n", - "92.62.8.1\n", - "50.81.61.167\n", - "2a00:79e0:d:107:28ba:af0b:b5fc:1064\n", - "72.95.147.233\n", - "--------------------\n", - "history url is: http://en.wikipedia.org/w/index.php?title=Dynamic_typing&action=history\n", - "172.194.101.14\n", - "195.149.37.65\n", - "131.111.8.99\n", - "24.217.36.41\n", - "128.250.6.134\n", - "62.23.212.160\n", - "192.102.214.6\n", - "--------------------\n", - "history url is: http://en.wikipedia.org/w/index.php?title=Strong_typing&action=history\n", - "82.69.159.205\n", - "68.2.187.224\n", - "98.155.76.148\n", - "79.67.253.90\n", - "98.234.249.218\n", - "75.152.190.38\n", - "219.64.72.209\n", - "71.61.178.1\n", - "46.14.245.69\n", - "83.254.128.245\n", - "75.35.50.37\n", - "88.175.108.247\n", - "123.201.228.97\n", - "59.167.127.158\n", - "137.52.233.174\n", - "219.64.70.220\n", - "--------------------\n", - "history url is: http://en.wikipedia.org/w/index.php?title=Software_license&action=history\n", - "2600:1:c403:d2cb:b27f:e90b:a6f4:41fa\n", - "2405:204:e406:5b43:1f64:f3ab:9404:719c\n", - "196.15.205.99\n", - "115.164.48.136\n", - "142.197.168.198\n", - "198.49.31.129\n", - "198.49.31.131\n", - "92.40.248.35\n", - "2601:188:180:11f0:65f5:930c:b0b2:cd63\n", - "--------------------\n", - "history url is: http://en.wikipedia.org/w/index.php?title=Python_Software_Foundation_License&action=history\n", - "71.110.212.116\n", - "74.56.110.127\n", - "129.10.9.77\n", - "83.254.138.122\n", - "221.134.160.242\n", - "99.240.76.83\n", - "71.89.160.105\n", - "150.101.214.82\n", - "90.215.243.133\n", - "2001:2003:54fa:d2::1\n", - "--------------------\n", - "history url is: http://en.wikipedia.org/w/index.php?title=Filename_extension&action=history\n", - "96.19.236.197\n", - "2a02:c7d:3ca1:1600:e8ac:1e44:49d2:7c89\n", - "96.4.231.55\n", - "67.78.240.242\n", - "116.100.37.195\n", - "223.230.140.207\n", - "2602:306:cfa9:4410:3463:a8c2:64b3:fcef\n", - "41.114.184.188\n", - "119.30.32.104\n", - "84.10.82.156\n", - "14.194.225.183\n", - "80.249.56.76\n", - "103.66.96.89\n", - "157.48.11.63\n", - "2600:1004:b11d:8dd2:7183:176a:9f6d:b5e6\n", - "69.68.245.129\n", - "175.157.213.170\n", - "--------------------\n", - "history url is: http://en.wikipedia.org/w/index.php?title=Programming_language_implementation&action=history\n", - "93.169.177.175\n", - "105.109.72.234\n", - "2602:306:33e1:6a20:dd1b:bfab:c9bb:50a3\n", - "70.247.162.60\n", - "27.3.0.228\n", - "188.158.140.90\n", - "220.227.8.230\n", - "--------------------\n", - "history url is: http://en.wikipedia.org/w/index.php?title=CPython&action=history\n", - "86.57.255.92\n", - "24.246.78.253\n", - "109.242.192.230\n", - "--------------------\n", - "history url is: http://en.wikipedia.org/w/index.php?title=IronPython&action=history\n", - "83.251.248.170\n", - "128.206.40.209\n", - "190.161.145.117\n", - "70.198.25.249\n", - "137.205.115.241\n", - "70.197.193.51\n", - "70.198.7.85\n", - "2600:1700:edb0:a060:14d0:1d18:969:4211\n", - "130.235.32.53\n", - "193.173.35.5\n", - "--------------------\n", - "history url is: http://en.wikipedia.org/w/index.php?title=Jython&action=history\n", - "71.237.143.157\n", - "95.210.220.183\n", - "128.71.143.243\n", - "157.127.124.151\n", - "94.25.176.56\n", - "84.241.43.4\n", - "50.126.125.240\n", - "137.48.251.105\n", - "217.140.96.140\n", - "103.254.102.17\n", - "104.55.212.99\n", - "192.35.35.36\n", - "--------------------\n", - "history url is: http://en.wikipedia.org/w/index.php?title=MicroPython&action=history\n", - "73.86.31.72\n", - "64.238.129.36\n", - "203.62.211.92\n", - "70.184.214.35\n", - "2601:648:8100:d81:998d:6329:407e:e5d6\n", - "50.53.1.21\n", - "--------------------\n", - "history url is: http://en.wikipedia.org/w/index.php?title=Numba&action=history\n" - ] - }, - { - "ename": "KeyboardInterrupt", - "evalue": "", - "output_type": "error", - "traceback": [ - "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", - "\u001b[0;31mKeyboardInterrupt\u001b[0m Traceback (most recent call last)", - "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[1;32m 34\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0mlink\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mlinks\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 35\u001b[0m \u001b[0mprint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'-'\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0;36m20\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 36\u001b[0;31m \u001b[0mhistoryIPs\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mgetHistoryIPs\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mlink\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mattrs\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m'href'\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 37\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0mhistoryIP\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mhistoryIPs\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 38\u001b[0m \u001b[0mprint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mhistoryIP\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m\u001b[0m in \u001b[0;36mgetHistoryIPs\u001b[0;34m(pageUrl)\u001b[0m\n\u001b[1;32m 19\u001b[0m \u001b[0mhistoryUrl\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m'http://en.wikipedia.org/w/index.php?title={}&action=history'\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mformat\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mpageUrl\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 20\u001b[0m \u001b[0mprint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'history url is: {}'\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mformat\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mhistoryUrl\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 21\u001b[0;31m \u001b[0mhtml\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0murlopen\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mhistoryUrl\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 22\u001b[0m \u001b[0mbs\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mBeautifulSoup\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mhtml\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m'html.parser'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 23\u001b[0m \u001b[0;31m#finds only the links with class \"mw-anonuserlink\" which has IP addresses\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/urllib/request.py\u001b[0m in \u001b[0;36murlopen\u001b[0;34m(url, data, timeout, cafile, capath, cadefault, context)\u001b[0m\n\u001b[1;32m 221\u001b[0m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 222\u001b[0m \u001b[0mopener\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0m_opener\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 223\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mopener\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mopen\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0murl\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mdata\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mtimeout\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 224\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 225\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0minstall_opener\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mopener\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/urllib/request.py\u001b[0m in \u001b[0;36mopen\u001b[0;34m(self, fullurl, data, timeout)\u001b[0m\n\u001b[1;32m 530\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0mprocessor\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mprocess_response\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mget\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mprotocol\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m[\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 531\u001b[0m \u001b[0mmeth\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mgetattr\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mprocessor\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mmeth_name\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 532\u001b[0;31m \u001b[0mresponse\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mmeth\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mreq\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mresponse\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 533\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 534\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mresponse\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/urllib/request.py\u001b[0m in \u001b[0;36mhttp_response\u001b[0;34m(self, request, response)\u001b[0m\n\u001b[1;32m 640\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0;34m(\u001b[0m\u001b[0;36m200\u001b[0m \u001b[0;34m<=\u001b[0m \u001b[0mcode\u001b[0m \u001b[0;34m<\u001b[0m \u001b[0;36m300\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 641\u001b[0m response = self.parent.error(\n\u001b[0;32m--> 642\u001b[0;31m 'http', request, response, code, msg, hdrs)\n\u001b[0m\u001b[1;32m 643\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 644\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mresponse\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/urllib/request.py\u001b[0m in \u001b[0;36merror\u001b[0;34m(self, proto, *args)\u001b[0m\n\u001b[1;32m 562\u001b[0m \u001b[0mhttp_err\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;36m0\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 563\u001b[0m \u001b[0margs\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m(\u001b[0m\u001b[0mdict\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mproto\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mmeth_name\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;34m+\u001b[0m \u001b[0margs\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 564\u001b[0;31m \u001b[0mresult\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_call_chain\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 565\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mresult\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 566\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mresult\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/urllib/request.py\u001b[0m in \u001b[0;36m_call_chain\u001b[0;34m(self, chain, kind, meth_name, *args)\u001b[0m\n\u001b[1;32m 502\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0mhandler\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mhandlers\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 503\u001b[0m \u001b[0mfunc\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mgetattr\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mhandler\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mmeth_name\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 504\u001b[0;31m \u001b[0mresult\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mfunc\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 505\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mresult\u001b[0m \u001b[0;32mis\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0;32mNone\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 506\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mresult\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/urllib/request.py\u001b[0m in \u001b[0;36mhttp_error_302\u001b[0;34m(self, req, fp, code, msg, headers)\u001b[0m\n\u001b[1;32m 754\u001b[0m \u001b[0mfp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mclose\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 755\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 756\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mparent\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mopen\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mnew\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mtimeout\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mreq\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mtimeout\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 757\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 758\u001b[0m \u001b[0mhttp_error_301\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mhttp_error_303\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mhttp_error_307\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mhttp_error_302\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/urllib/request.py\u001b[0m in \u001b[0;36mopen\u001b[0;34m(self, fullurl, data, timeout)\u001b[0m\n\u001b[1;32m 524\u001b[0m \u001b[0mreq\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mmeth\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mreq\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 525\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 526\u001b[0;31m \u001b[0mresponse\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_open\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mreq\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mdata\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 527\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 528\u001b[0m \u001b[0;31m# post-process response\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/urllib/request.py\u001b[0m in \u001b[0;36m_open\u001b[0;34m(self, req, data)\u001b[0m\n\u001b[1;32m 542\u001b[0m \u001b[0mprotocol\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mreq\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mtype\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 543\u001b[0m result = self._call_chain(self.handle_open, protocol, protocol +\n\u001b[0;32m--> 544\u001b[0;31m '_open', req)\n\u001b[0m\u001b[1;32m 545\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mresult\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 546\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mresult\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/urllib/request.py\u001b[0m in \u001b[0;36m_call_chain\u001b[0;34m(self, chain, kind, meth_name, *args)\u001b[0m\n\u001b[1;32m 502\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0mhandler\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mhandlers\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 503\u001b[0m \u001b[0mfunc\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mgetattr\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mhandler\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mmeth_name\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 504\u001b[0;31m \u001b[0mresult\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mfunc\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 505\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mresult\u001b[0m \u001b[0;32mis\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0;32mNone\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 506\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mresult\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/urllib/request.py\u001b[0m in \u001b[0;36mhttps_open\u001b[0;34m(self, req)\u001b[0m\n\u001b[1;32m 1359\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0mhttps_open\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mreq\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1360\u001b[0m return self.do_open(http.client.HTTPSConnection, req,\n\u001b[0;32m-> 1361\u001b[0;31m context=self._context, check_hostname=self._check_hostname)\n\u001b[0m\u001b[1;32m 1362\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1363\u001b[0m \u001b[0mhttps_request\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mAbstractHTTPHandler\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mdo_request_\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/urllib/request.py\u001b[0m in \u001b[0;36mdo_open\u001b[0;34m(self, http_class, req, **http_conn_args)\u001b[0m\n\u001b[1;32m 1319\u001b[0m \u001b[0;32mexcept\u001b[0m \u001b[0mOSError\u001b[0m \u001b[0;32mas\u001b[0m \u001b[0merr\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0;31m# timeout error\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1320\u001b[0m \u001b[0;32mraise\u001b[0m \u001b[0mURLError\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0merr\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 1321\u001b[0;31m \u001b[0mr\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mh\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mgetresponse\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 1322\u001b[0m \u001b[0;32mexcept\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1323\u001b[0m \u001b[0mh\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mclose\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/http/client.py\u001b[0m in \u001b[0;36mgetresponse\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 1329\u001b[0m \u001b[0;32mtry\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1330\u001b[0m \u001b[0;32mtry\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 1331\u001b[0;31m \u001b[0mresponse\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mbegin\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 1332\u001b[0m \u001b[0;32mexcept\u001b[0m \u001b[0mConnectionError\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1333\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mclose\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/http/client.py\u001b[0m in \u001b[0;36mbegin\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 295\u001b[0m \u001b[0;31m# read until we get a non-100 response\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 296\u001b[0m \u001b[0;32mwhile\u001b[0m \u001b[0;32mTrue\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 297\u001b[0;31m \u001b[0mversion\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mstatus\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mreason\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_read_status\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 298\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mstatus\u001b[0m \u001b[0;34m!=\u001b[0m \u001b[0mCONTINUE\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 299\u001b[0m \u001b[0;32mbreak\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/http/client.py\u001b[0m in \u001b[0;36m_read_status\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 256\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 257\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0m_read_status\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 258\u001b[0;31m \u001b[0mline\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mstr\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mfp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mreadline\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0m_MAXLINE\u001b[0m \u001b[0;34m+\u001b[0m \u001b[0;36m1\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m\"iso-8859-1\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 259\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mlen\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mline\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;34m>\u001b[0m \u001b[0m_MAXLINE\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 260\u001b[0m \u001b[0;32mraise\u001b[0m \u001b[0mLineTooLong\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"status line\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/socket.py\u001b[0m in \u001b[0;36mreadinto\u001b[0;34m(self, b)\u001b[0m\n\u001b[1;32m 584\u001b[0m \u001b[0;32mwhile\u001b[0m \u001b[0;32mTrue\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 585\u001b[0m \u001b[0;32mtry\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 586\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_sock\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mrecv_into\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mb\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 587\u001b[0m \u001b[0;32mexcept\u001b[0m \u001b[0mtimeout\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 588\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_timeout_occurred\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;32mTrue\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/ssl.py\u001b[0m in \u001b[0;36mrecv_into\u001b[0;34m(self, buffer, nbytes, flags)\u001b[0m\n\u001b[1;32m 1000\u001b[0m \u001b[0;34m\"non-zero flags not allowed in calls to recv_into() on %s\"\u001b[0m \u001b[0;34m%\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1001\u001b[0m self.__class__)\n\u001b[0;32m-> 1002\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mread\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mnbytes\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mbuffer\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 1003\u001b[0m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1004\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0msocket\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mrecv_into\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mbuffer\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mnbytes\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mflags\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/ssl.py\u001b[0m in \u001b[0;36mread\u001b[0;34m(self, len, buffer)\u001b[0m\n\u001b[1;32m 863\u001b[0m \u001b[0;32mraise\u001b[0m \u001b[0mValueError\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"Read on closed or unwrapped SSL socket.\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 864\u001b[0m \u001b[0;32mtry\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 865\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_sslobj\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mread\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mlen\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mbuffer\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 866\u001b[0m \u001b[0;32mexcept\u001b[0m \u001b[0mSSLError\u001b[0m \u001b[0;32mas\u001b[0m \u001b[0mx\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 867\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mx\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m0\u001b[0m\u001b[0;34m]\u001b[0m \u001b[0;34m==\u001b[0m \u001b[0mSSL_ERROR_EOF\u001b[0m \u001b[0;32mand\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msuppress_ragged_eofs\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/ssl.py\u001b[0m in \u001b[0;36mread\u001b[0;34m(self, len, buffer)\u001b[0m\n\u001b[1;32m 623\u001b[0m \"\"\"\n\u001b[1;32m 624\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mbuffer\u001b[0m \u001b[0;32mis\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0;32mNone\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 625\u001b[0;31m \u001b[0mv\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_sslobj\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mread\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mlen\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mbuffer\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 626\u001b[0m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 627\u001b[0m \u001b[0mv\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_sslobj\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mread\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mlen\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;31mKeyboardInterrupt\u001b[0m: " - ] - } - ], - "source": [ - "from urllib.request import urlopen\n", - "from bs4 import BeautifulSoup\n", - "import json\n", - "import datetime\n", - "import random\n", - "import re\n", - "\n", - "random.seed(datetime.datetime.now())\n", - "def getLinks(articleUrl):\n", - " html = urlopen('http://en.wikipedia.org{}'.format(articleUrl))\n", - " bs = BeautifulSoup(html, 'html.parser')\n", - " return bs.find('div', {'id':'bodyContent'}).findAll('a', \n", - " href=re.compile('^(/wiki/)((?!:).)*$'))\n", - "\n", - "def getHistoryIPs(pageUrl):\n", - " #Format of revision history pages is: \n", - " #http://en.wikipedia.org/w/index.php?title=Title_in_URL&action=history\n", - " pageUrl = pageUrl.replace('/wiki/', '')\n", - " historyUrl = 'http://en.wikipedia.org/w/index.php?title={}&action=history'.format(pageUrl)\n", - " print('history url is: {}'.format(historyUrl))\n", - " html = urlopen(historyUrl)\n", - " bs = BeautifulSoup(html, 'html.parser')\n", - " #finds only the links with class \"mw-anonuserlink\" which has IP addresses \n", - " #instead of usernames\n", - " ipAddresses = bs.findAll('a', {'class':'mw-anonuserlink'})\n", - " addressList = set()\n", - " for ipAddress in ipAddresses:\n", - " addressList.add(ipAddress.get_text())\n", - " return addressList\n", - "\n", - "links = getLinks('/wiki/Python_(programming_language)')\n", - "\n", - "while(len(links) > 0):\n", - " for link in links:\n", - " print('-'*20) \n", - " historyIPs = getHistoryIPs(link.attrs['href'])\n", - " for historyIP in historyIPs:\n", - " print(historyIP)\n", - "\n", - " newLink = links[random.randint(0, len(links)-1)].attrs['href']\n", - " links = getLinks(newLink)" - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "--------------------\n", - "history url is: http://en.wikipedia.org/w/index.php?title=Programming_paradigm&action=history\n", - "223.104.186.241 is from CN\n", - "213.207.90.158 is from NL\n", - "92.115.222.143 is from MD\n", - "213.108.115.55 is from PL\n", - "2605:a601:e0c:6300:996d:68c0:fb03:af2c is from US\n", - "192.117.105.47 is from IL\n", - "31.203.136.191 is from KW\n", - "168.216.130.133 is from US\n", - "2a02:c7d:a492:f200:e126:2b36:53ca:513a is from GB\n", - "37.238.238.36 is from IQ\n", - "197.255.127.246 is from GH\n", - "110.55.67.15 is from PH\n", - "193.80.242.220 is from AT\n", - "42.111.56.168 is from IN\n", - "223.230.96.108 is from IN\n", - "113.162.8.249 is from VN\n", - "39.36.182.41 is from PK\n", - "--------------------\n", - "history url is: http://en.wikipedia.org/w/index.php?title=Object-oriented_programming&action=history\n", - "113.199.249.237 is from NP\n", - "205.251.185.250 is from US\n", - "1.22.150.73 is from IN\n", - "121.58.212.157 is from PH\n", - "217.225.8.24 is from DE\n", - "162.204.116.16 is from US\n", - "112.200.199.62 is from PH\n", - "117.239.185.50 is from IN\n", - "103.252.25.104 is from IN\n", - "103.74.23.139 is from PK\n", - "103.241.244.36 is from IN\n", - "2605:a601:474:600:2088:fbde:7512:53b2 is from US\n", - "122.181.5.162 is from IN\n", - "24.93.131.140 is from US\n", - "119.152.87.84 is from PK\n", - "93.136.125.208 is from HR\n", - "27.251.109.234 is from IN\n", - "223.230.215.145 is from IN\n", - "103.16.68.215 is from IN\n", - "170.142.177.246 is from US\n", - "--------------------\n", - "history url is: http://en.wikipedia.org/w/index.php?title=Imperative_programming&action=history\n" - ] - }, - { - "ename": "NameError", - "evalue": "name 'HTTPError' is not defined", - "output_type": "error", - "traceback": [ - "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", - "\u001b[0;31mKeyboardInterrupt\u001b[0m Traceback (most recent call last)", - "\u001b[0;32m\u001b[0m in \u001b[0;36mgetCountry\u001b[0;34m(ipAddress)\u001b[0m\n\u001b[1;32m 3\u001b[0m response = urlopen(\n\u001b[0;32m----> 4\u001b[0;31m 'http://freegeoip.net/json/{}'.format(ipAddress)).read().decode('utf-8')\n\u001b[0m\u001b[1;32m 5\u001b[0m \u001b[0;32mexcept\u001b[0m \u001b[0mHTTPError\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/urllib/request.py\u001b[0m in \u001b[0;36murlopen\u001b[0;34m(url, data, timeout, cafile, capath, cadefault, context)\u001b[0m\n\u001b[1;32m 222\u001b[0m \u001b[0mopener\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0m_opener\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 223\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mopener\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mopen\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0murl\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mdata\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mtimeout\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 224\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/urllib/request.py\u001b[0m in \u001b[0;36mopen\u001b[0;34m(self, fullurl, data, timeout)\u001b[0m\n\u001b[1;32m 525\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 526\u001b[0;31m \u001b[0mresponse\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_open\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mreq\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mdata\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 527\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/urllib/request.py\u001b[0m in \u001b[0;36m_open\u001b[0;34m(self, req, data)\u001b[0m\n\u001b[1;32m 543\u001b[0m result = self._call_chain(self.handle_open, protocol, protocol +\n\u001b[0;32m--> 544\u001b[0;31m '_open', req)\n\u001b[0m\u001b[1;32m 545\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mresult\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/urllib/request.py\u001b[0m in \u001b[0;36m_call_chain\u001b[0;34m(self, chain, kind, meth_name, *args)\u001b[0m\n\u001b[1;32m 503\u001b[0m \u001b[0mfunc\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mgetattr\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mhandler\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mmeth_name\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 504\u001b[0;31m \u001b[0mresult\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mfunc\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 505\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mresult\u001b[0m \u001b[0;32mis\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0;32mNone\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/urllib/request.py\u001b[0m in \u001b[0;36mhttp_open\u001b[0;34m(self, req)\u001b[0m\n\u001b[1;32m 1345\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0mhttp_open\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mreq\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 1346\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mdo_open\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mhttp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mclient\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mHTTPConnection\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mreq\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 1347\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/urllib/request.py\u001b[0m in \u001b[0;36mdo_open\u001b[0;34m(self, http_class, req, **http_conn_args)\u001b[0m\n\u001b[1;32m 1320\u001b[0m \u001b[0;32mraise\u001b[0m \u001b[0mURLError\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0merr\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 1321\u001b[0;31m \u001b[0mr\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mh\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mgetresponse\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 1322\u001b[0m \u001b[0;32mexcept\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/http/client.py\u001b[0m in \u001b[0;36mgetresponse\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 1330\u001b[0m \u001b[0;32mtry\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 1331\u001b[0;31m \u001b[0mresponse\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mbegin\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 1332\u001b[0m \u001b[0;32mexcept\u001b[0m \u001b[0mConnectionError\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/http/client.py\u001b[0m in \u001b[0;36mbegin\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 296\u001b[0m \u001b[0;32mwhile\u001b[0m \u001b[0;32mTrue\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 297\u001b[0;31m \u001b[0mversion\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mstatus\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mreason\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_read_status\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 298\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mstatus\u001b[0m \u001b[0;34m!=\u001b[0m \u001b[0mCONTINUE\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/http/client.py\u001b[0m in \u001b[0;36m_read_status\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 257\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0m_read_status\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 258\u001b[0;31m \u001b[0mline\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mstr\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mfp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mreadline\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0m_MAXLINE\u001b[0m \u001b[0;34m+\u001b[0m \u001b[0;36m1\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m\"iso-8859-1\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 259\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mlen\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mline\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;34m>\u001b[0m \u001b[0m_MAXLINE\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/socket.py\u001b[0m in \u001b[0;36mreadinto\u001b[0;34m(self, b)\u001b[0m\n\u001b[1;32m 585\u001b[0m \u001b[0;32mtry\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 586\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_sock\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mrecv_into\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mb\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 587\u001b[0m \u001b[0;32mexcept\u001b[0m \u001b[0mtimeout\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;31mKeyboardInterrupt\u001b[0m: ", - "\nDuring handling of the above exception, another exception occurred:\n", - "\u001b[0;31mNameError\u001b[0m Traceback (most recent call last)", - "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[1;32m 15\u001b[0m \u001b[0mhistoryIPs\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mgetHistoryIPs\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mlink\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mattrs\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m\"href\"\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 16\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0mhistoryIP\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mhistoryIPs\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 17\u001b[0;31m \u001b[0mcountry\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mgetCountry\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mhistoryIP\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 18\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mcountry\u001b[0m \u001b[0;32mis\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0;32mNone\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 19\u001b[0m \u001b[0mprint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'{} is from {}'\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mformat\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mhistoryIP\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mcountry\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m\u001b[0m in \u001b[0;36mgetCountry\u001b[0;34m(ipAddress)\u001b[0m\n\u001b[1;32m 3\u001b[0m response = urlopen(\n\u001b[1;32m 4\u001b[0m 'http://freegeoip.net/json/{}'.format(ipAddress)).read().decode('utf-8')\n\u001b[0;32m----> 5\u001b[0;31m \u001b[0;32mexcept\u001b[0m \u001b[0mHTTPError\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 6\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0;32mNone\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 7\u001b[0m \u001b[0mresponseJson\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mjson\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mloads\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mresponse\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;31mNameError\u001b[0m: name 'HTTPError' is not defined" - ] - } - ], - "source": [ - "def getCountry(ipAddress):\n", - " try:\n", - " response = urlopen(\n", - " 'http://freegeoip.net/json/{}'.format(ipAddress)).read().decode('utf-8')\n", - " except HTTPError:\n", - " return None\n", - " responseJson = json.loads(response)\n", - " return responseJson.get('country_code')\n", - " \n", - "links = getLinks('/wiki/Python_(programming_language)')\n", - "\n", - "while(len(links) > 0):\n", - " for link in links:\n", - " print('-'*20) \n", - " historyIPs = getHistoryIPs(link.attrs[\"href\"])\n", - " for historyIP in historyIPs:\n", - " country = getCountry(historyIP)\n", - " if country is not None:\n", - " print('{} is from {}'.format(historyIP, country))\n", - "\n", - " newLink = links[random.randint(0, len(links)-1)].attrs['href']\n", - " links = getLinks(newLink)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.6.1" - } - }, - "nbformat": 4, - "nbformat_minor": 2 -} diff --git a/v2/Chapter13-ImageProcessing.ipynb b/v2/Chapter13-ImageProcessing.ipynb deleted file mode 100644 index 2c0498f..0000000 --- a/v2/Chapter13-ImageProcessing.ipynb +++ /dev/null @@ -1,444 +0,0 @@ -{ - "cells": [ - { - "cell_type": "code", - "execution_count": 2, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "{'level': [1, 2, 3, 4, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 4, 5, 5, 5, 5, 5, 5], 'page_num': [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], 'block_num': [0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], 'par_num': [0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], 'line_num': [0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2], 'word_num': [0, 0, 0, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 0, 1, 2, 3, 4, 5, 6], 'left': [0, 23, 23, 23, 23, 76, 99, 164, 215, 295, 317, 378, 425, 467, 500, 555, 23, 23, 140, 198, 239, 304, 407], 'top': [0, 26, 26, 26, 26, 26, 30, 26, 26, 26, 26, 26, 26, 26, 26, 26, 54, 55, 55, 59, 59, 55, 54], 'width': [600, 555, 555, 555, 44, 15, 57, 42, 70, 15, 52, 40, 32, 24, 45, 23, 513, 107, 49, 32, 57, 92, 129], 'height': [103, 51, 51, 22, 17, 17, 13, 21, 17, 17, 21, 17, 17, 17, 17, 22, 23, 17, 17, 13, 13, 22, 23], 'conf': [-1, -1, -1, -1, 86, 86, 86, 73, 82, 95, 73, 80, 95, 85, 87, 85, -1, 82, 91, 86, 86, 86, 65], 'text': ['', '', '', '', 'This', 'is', 'some', 'text,', 'written', 'in', 'Arial,', 'that', 'will', 'be', 'read', 'by', '', 'Tesseract.', 'Here', 'are', 'some', 'symbols:', '!@#$%\"&‘()']}\n", - "b'This is some text, written in Arial, that will be read by\\nTesseract. Here are some symbols: !@#$%\"&\\xe2\\x80\\x98()\\n\\n'\n" - ] - } - ], - "source": [ - "from PIL import Image\n", - "import pytesseract\n", - "from pytesseract import Output\n", - "\n", - "print(pytesseract.image_to_data(Image.open('files/'\n", - " 'textOriginal.png'),\n", - " output_type=Output.DICT))\n", - "print(pytesseract.image_to_string(Image.open('files/textOriginal.png'), output_type=Output.BYTES))\n" - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2.2803508502\n", - "100.0\n" - ] - } - ], - "source": [ - "import numpy as np\n", - "\n", - "numbers = [100, 102, 98, 97, 103]\n", - "print(np.std(numbers))\n", - "print(np.mean(numbers))" - ] - }, - { - "cell_type": "code", - "execution_count": 16, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "ThIS IS some (ext written In Anal, that will be read by\n", - "Tesseract Here are some symbols: l@#$%\"&'()\n" - ] - } - ], - "source": [ - "from PIL import Image\n", - "import pytesseract\n", - "\n", - "def cleanFile(filePath, newFilePath):\n", - " image = Image.open(filePath)\n", - "\n", - " #Set a threshold value for the image, and save\n", - " image = image.point(lambda x: 0 if x<143 else 255)\n", - " image.save(newFilePath)\n", - " return image\n", - "\n", - "image = cleanFile(\"files/textBad.png\", \"files/textCleaned.png\")\n", - "\n", - "#call tesseract to do OCR on the newly created image\n", - "print(pytesseract.image_to_string(image))" - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "This is some text, written in Arial, that will be read by\n", - "Tesseract. Here are some symbols: !@#$%\"&‘()\n", - "\n", - "\n" - ] - } - ], - "source": [ - "from PIL import Image\n", - "import subprocess\n", - "\n", - "def cleanFile(filePath, newFilePath):\n", - " image = Image.open(filePath)\n", - "\n", - " #Set a threshold value for the image, and save\n", - " image = image.point(lambda x: 0 if x<135 else 255)\n", - " image.save(newFilePath)\n", - "\n", - " #call tesseract to do OCR on the newly created image\n", - " subprocess.call([\"tesseract\", newFilePath, \"output\"])\n", - " \n", - " #Open and read the resulting data file\n", - " outputFile = open(\"output.txt\", 'r')\n", - " print(outputFile.read())\n", - " outputFile.close()\n", - "\n", - "cleanFile(\"files/textOriginal.png\", \"files/text_2.png\")" - ] - }, - { - "cell_type": "code", - "execution_count": 26, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "threshold: 80, confidence: 61.8333333333 numChars 18\n", - "threshold: 85, confidence: 64.9130434783 numChars 23\n", - "threshold: 90, confidence: 62.2564102564 numChars 39\n", - "threshold: 95, confidence: 64.5135135135 numChars 37\n", - "threshold: 100, confidence: 60.7878787879 numChars 66\n", - "threshold: 105, confidence: 61.9078947368 numChars 76\n", - "threshold: 110, confidence: 64.6329113924 numChars 79\n", - "threshold: 115, confidence: 69.7397260274 numChars 73\n", - "threshold: 120, confidence: 72.9078947368 numChars 76\n", - "threshold: 125, confidence: 73.582278481 numChars 79\n", - "threshold: 130, confidence: 75.6708860759 numChars 79\n", - "threshold: 135, confidence: 76.8292682927 numChars 82\n", - "threshold: 140, confidence: 72.1686746988 numChars 83\n", - "threshold: 145, confidence: 75.5662650602 numChars 83\n", - "threshold: 150, confidence: 77.5443037975 numChars 79\n", - "threshold: 155, confidence: 79.1066666667 numChars 75\n", - "threshold: 160, confidence: 78.4666666667 numChars 75\n", - "threshold: 165, confidence: 80.1428571429 numChars 70\n", - "threshold: 170, confidence: 78.4285714286 numChars 70\n", - "threshold: 175, confidence: 76.3731343284 numChars 67\n", - "threshold: 180, confidence: 76.7575757576 numChars 66\n", - "threshold: 185, confidence: 79.4920634921 numChars 63\n", - "threshold: 190, confidence: 76.0793650794 numChars 63\n", - "threshold: 195, confidence: 70.6153846154 numChars 65\n" - ] - } - ], - "source": [ - "import pytesseract\n", - "from pytesseract import Output\n", - "from PIL import Image\n", - "import numpy as np\n", - "\n", - "def cleanFile(filePath, threshold):\n", - " image = Image.open(filePath)\n", - " #Set a threshold value for the image, and save\n", - " image = image.point(lambda x: 0 if x -1:\n", - " confidences.append(data['conf'][i])\n", - " numChars.append(len(text[i]))\n", - " \n", - " return np.average(confidences, weights=numChars), sum(numChars)\n", - " \n", - "filePath = \"files/textBad.png\"\n", - "\n", - "start = 80\n", - "step = 5\n", - "end = 200\n", - "\n", - "for threshold in range(start, end, step):\n", - " image = cleanFile(filePath, threshold)\n", - " scores = getConfidence(image)\n", - " print(\"threshold: \"+str(threshold)+\", confidence: \"+str(scores[0])+\" numChars \"+str(scores[1]))\n" - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Found image: https://d1b14unh5d6w7g.cloudfront.net/1427027277.01.S003.LXXXXXXX.jpg?Expires=1517813908&Signature=Esov1bmGrixpRerzigTNris1X5NxXhYh0M0h2Vkzho4KQmOMUetNtvC4Q2NcPHEJarhgoTEGgQk33rK/NlL6g7bGd7kEuqDtTVeDnfVFv6N45Fh5zjinOfWRfbaWlbKi0y51WDRPROG/ITUSztyovyxhtTtiAiviUocae/fO4Ic=&Key-Pair-Id=APKAIUO27P366FGALUMQ\n", - "rammed Mam 3‘\n", - "\n", - "Copyright © 2007\n", - "\n", - "The text in this book has been formatted\n", - "and typeset to make reading easier and\n", - "more enjoyable. Spelling and punctuation\n", - "have been modernized and standardized,\n", - "and hyphens have been avoided when\n", - "possible. Obvious typographical errors\n", - "have been corrected. In addition, the text\n", - "has been formatted to the specifications\n", - "indicated on the titIe page. The original\n", - "text is out of copyright. The edited text in\n", - "this edition and the formatting are the\n", - "copyright of Objective Systems Pty Ltd\n", - "ACN 085119 953.\n", - "» 1m\n", - "\n", - "LaDY'M‘Hed mew\n", - "Found image: https://d1b14unh5d6w7g.cloudfront.net/1427027277.01.S006.LXXXXXXX.jpg?Expires=1517813908&Signature=hHkVlIbhqEXCF0eEwjT+XFQHLowD/B0emBi4Xe7ThHptbtNnPqZqeM1KztJlHBD7Xf1V16GWe4APyf9yYWHSS6QQ3isvEakHB5Me/NBS8fcXj718gDbFEl4v9VgoLpxjsRy8g3c/Xay87LlMhYlgqK634w4cG5hrd9Gcbi1lDuE=&Key-Pair-Id=APKAIUO27P366FGALUMQ\n", - "CuDYnlNed Manna:\n", - "\n", - "TABLE OF CONTENTS\n", - "\n", - "Chapter} 1\n", - "Chapter 11 17\n", - "Chapter 111 31\n", - "Chapter IV 43\n", - "Chapter v 55\n", - "Chapter VI 53\n", - "Chapter V11 59\n", - "Chapter vm 77\n", - "chapter IX 91\n", - "Chapter X 97\n", - "Chapter X] 101\n", - "Chapter xu 107\n", - "\n", - "Canyrmhted mum\n", - "Found image: https://d1b14unh5d6w7g.cloudfront.net/1427027277.01.S003.LXXXXXXX.jpg?Expires=1517813908&Signature=Esov1bmGrixpRerzigTNris1X5NxXhYh0M0h2Vkzho4KQmOMUetNtvC4Q2NcPHEJarhgoTEGgQk33rK/NlL6g7bGd7kEuqDtTVeDnfVFv6N45Fh5zjinOfWRfbaWlbKi0y51WDRPROG/ITUSztyovyxhtTtiAiviUocae/fO4Ic=&Key-Pair-Id=APKAIUO27P366FGALUMQ\n", - "Found image: https://d1b14unh5d6w7g.cloudfront.net/1427027277.01.S006.LXXXXXXX.jpg?Expires=1517813908&Signature=hHkVlIbhqEXCF0eEwjT+XFQHLowD/B0emBi4Xe7ThHptbtNnPqZqeM1KztJlHBD7Xf1V16GWe4APyf9yYWHSS6QQ3isvEakHB5Me/NBS8fcXj718gDbFEl4v9VgoLpxjsRy8g3c/Xay87LlMhYlgqK634w4cG5hrd9Gcbi1lDuE=&Key-Pair-Id=APKAIUO27P366FGALUMQ\n", - "Found image: https://d1b14unh5d6w7g.cloudfront.net/1427027277.01.S007.LXXXXXXX.jpg?Expires=1517813916&Signature=cC2WHvp6Zb3YMWwf0XmPG2xhhna9IDpIWTZog3643bMtqb5krx+PPwGBIS5Z2+VD/0BoxQYW7TuUrQ2QA1ouuzFHBrMMl13iFKOPdeOcNuTFvqsNx2zZGrUXLvmrafaiEHiF097ruUQpJT2dvhQk3kAPuYWkPxhNKLRyuFjJ8H8=&Key-Pair-Id=APKAIUO27P366FGALUMQ\n", - "Conyflihud Mmml\n", - "\n", - "Copyflghud anhl\n", - "Found image: https://d1b14unh5d6w7g.cloudfront.net/1427027277.01.S008.LXXXXXXX.jpg?Expires=1517813908&Signature=HuGS9+TRIYXlx5jvFLtR/LGK1ThQSTiurvNJjd2sfHMPRdkhCb22LJM+baLu5nYZtDQguGgY9kdgAROBKYs+tqas89iVjs1bVNG6m4kMctJHokK5yfTVe6szwhf11+yY7JnhFn8qcOMmL7IbyBvV3s/gQIRxWb+j4lILGIoBj/M=&Key-Pair-Id=APKAIUO27P366FGALUMQ\n", - "canyngmed Malena»\n", - "\n", - "Chapter I\n", - "\n", - "During an Interval In the Melvmskl trial In the large\n", - "building of the Law Courts the members and public\n", - "prosecutor met in [van Egorowch Shebek‘s private\n", - "room, where the conversation turned on the celebrated\n", - "Krasovski case. Fedor Vasillevich warmly maintained\n", - "that it was not subject to their jurisdiction, Ivan\n", - "Egorovich maintained the contrary, while Peter\n", - "ivanowch, not havmg entered into the discussmn at\n", - "the start, took no part in it but looked through the\n", - "Gazette which had Just been handed in.\n", - "\n", - "“Gentlemen,” he said, “Ivan Ilych has died!\"\n", - "“You don't say 50!”\n", - "\n", - "“Here, read it yourself,\" repiied Peter Ivanovich,\n", - "handing Fedor VaSIllevich the paper still damp from\n", - "the press, Surrounded by a black border were the\n", - "words: “Praskovya Fedorovna Golovina, with profound\n", - "sorrow, informs relatives and friends of the demise\n", - "of her beloved husband Ivan Ilych Goiovin, Member\n", - "of the Court of Justice, which occurred on February\n", - "the 4th of this year 1882. The funeral will take place\n", - "on Friday at one o'clock in the afternoon.“\n", - "\n", - "Ivan Iiych had been a colleague of the gentlemen\n", - "present and was liked by them ali. He had been ill for\n", - "\n", - "annnhted Malenai\n", - "Found image: https://d1b14unh5d6w7g.cloudfront.net/1427027277.01.S006.LXXXXXXX.jpg?Expires=1517813908&Signature=hHkVlIbhqEXCF0eEwjT+XFQHLowD/B0emBi4Xe7ThHptbtNnPqZqeM1KztJlHBD7Xf1V16GWe4APyf9yYWHSS6QQ3isvEakHB5Me/NBS8fcXj718gDbFEl4v9VgoLpxjsRy8g3c/Xay87LlMhYlgqK634w4cG5hrd9Gcbi1lDuE=&Key-Pair-Id=APKAIUO27P366FGALUMQ\n", - "Found image: https://d1b14unh5d6w7g.cloudfront.net/1427027277.01.S007.LXXXXXXX.jpg?Expires=1517813916&Signature=cC2WHvp6Zb3YMWwf0XmPG2xhhna9IDpIWTZog3643bMtqb5krx+PPwGBIS5Z2+VD/0BoxQYW7TuUrQ2QA1ouuzFHBrMMl13iFKOPdeOcNuTFvqsNx2zZGrUXLvmrafaiEHiF097ruUQpJT2dvhQk3kAPuYWkPxhNKLRyuFjJ8H8=&Key-Pair-Id=APKAIUO27P366FGALUMQ\n", - "Found image: https://d1b14unh5d6w7g.cloudfront.net/1427027277.01.S008.LXXXXXXX.jpg?Expires=1517813908&Signature=HuGS9+TRIYXlx5jvFLtR/LGK1ThQSTiurvNJjd2sfHMPRdkhCb22LJM+baLu5nYZtDQguGgY9kdgAROBKYs+tqas89iVjs1bVNG6m4kMctJHokK5yfTVe6szwhf11+yY7JnhFn8qcOMmL7IbyBvV3s/gQIRxWb+j4lILGIoBj/M=&Key-Pair-Id=APKAIUO27P366FGALUMQ\n", - "Found image: https://d1b14unh5d6w7g.cloudfront.net/1427027277.01.S009.LXXXXXXX.jpg?Expires=1517813916&Signature=Z9uc1Ch9ZhdwrfxfYHfEuPMRBNuTpNZeCC5M6PX5zf9IN75gBvITca59UVgXzCx0vgszKfu5Td7jp4lWobt6b66UBpmbOP/VPHfTtjlkxAHCF8RXA3ilXK+t8Ss8J8GD7fTD/KjdIin+APbwocIH19VlczSLvpL2ynq1Wd7mW/U=&Key-Pair-Id=APKAIUO27P366FGALUMQ\n", - "canyngmed Material\n", - "\n", - "some weeks with an illness said to be incurable.\n", - "His past had been kept open for him, but there\n", - "had been conjectures that in case of his death\n", - "Alexeev might receive his appointment, and that\n", - "either Vinnikov or Shtabel would succeed Alexeev.\n", - "So on receiving the news of Ivan llych's death the\n", - "first thought of each of the gentlemen in that prie\n", - "vate room was of the changes and promotions it\n", - "might occasion among themselves or theiracquaine\n", - "tances.\n", - "\n", - "“I shall be sure to get Shtabel's place or Vin‘\n", - "nikov's,\" thought FedorVasilievich. “I was promised\n", - "that long ago, and the promotion means an extra\n", - "eight hundred rubles a year for me besides the\n", - "allowance.”\n", - "\n", - "“Now I must apply for my brother-in-Iaw’s transfer\n", - "from Kaluga,\" thought Peter Ivanovich. “My Wife\n", - "will be very glad, and then she won't be able to\n", - "say that I never do anything for her relatiuns.”\n", - "“I thought he would never leave his bed again,\"\n", - "said Peter Ivanovich aloud. “It‘s very sad.”\n", - "\n", - "“But what really was the matter with him?\"\n", - "\n", - "“The doctors couldn't say - at least they could,\n", - "but each of them said something different. When\n", - "last I saw him I though he was getting better.\"\n", - "\n", - "CnDYnnhled Material\n", - "Found image: https://d1b14unh5d6w7g.cloudfront.net/1427027277.01.S007.LXXXXXXX.jpg?Expires=1517813916&Signature=cC2WHvp6Zb3YMWwf0XmPG2xhhna9IDpIWTZog3643bMtqb5krx+PPwGBIS5Z2+VD/0BoxQYW7TuUrQ2QA1ouuzFHBrMMl13iFKOPdeOcNuTFvqsNx2zZGrUXLvmrafaiEHiF097ruUQpJT2dvhQk3kAPuYWkPxhNKLRyuFjJ8H8=&Key-Pair-Id=APKAIUO27P366FGALUMQ\n", - "Found image: https://d1b14unh5d6w7g.cloudfront.net/1427027277.01.S008.LXXXXXXX.jpg?Expires=1517813908&Signature=HuGS9+TRIYXlx5jvFLtR/LGK1ThQSTiurvNJjd2sfHMPRdkhCb22LJM+baLu5nYZtDQguGgY9kdgAROBKYs+tqas89iVjs1bVNG6m4kMctJHokK5yfTVe6szwhf11+yY7JnhFn8qcOMmL7IbyBvV3s/gQIRxWb+j4lILGIoBj/M=&Key-Pair-Id=APKAIUO27P366FGALUMQ\n", - "Found image: https://d1b14unh5d6w7g.cloudfront.net/1427027277.01.S009.LXXXXXXX.jpg?Expires=1517813916&Signature=Z9uc1Ch9ZhdwrfxfYHfEuPMRBNuTpNZeCC5M6PX5zf9IN75gBvITca59UVgXzCx0vgszKfu5Td7jp4lWobt6b66UBpmbOP/VPHfTtjlkxAHCF8RXA3ilXK+t8Ss8J8GD7fTD/KjdIin+APbwocIH19VlczSLvpL2ynq1Wd7mW/U=&Key-Pair-Id=APKAIUO27P366FGALUMQ\n", - "Found image: https://d1b14unh5d6w7g.cloudfront.net/1427027277.01.S00A.LXXXXXXX.jpg?Expires=1517813916&Signature=X0hJbtaKDIHCfhjTcLIt80MY0p6DxRyq+vPbVRcvxuvu8pRrOZdysPayP0gZQlKmh1R+vPCs46euKSsN8dRmfBUSWZbox303sPZQH48shcFHPAgxhoG9Z+C47sCPx++fjA+dkBkBwKoYKAo2QnBEIzkyRZusli0wT7Iz3sedt0E=&Key-Pair-Id=APKAIUO27P366FGALUMQ\n", - "canymmeu Malena»\n", - "\n", - "3\n", - "\n", - "“And I haven't been to see him since the holidays.\n", - "I always meant to go.\"\n", - "\n", - "“Had he any property?”\n", - "\n", - "“I think his wife had a little — but something quiet\n", - "trifling.\"\n", - "\n", - "“We shall have to go to see her, but they live so\n", - "terribly far away.\"\n", - "\n", - "“Far away from you, you mean. Everything's far\n", - "away from your place.\"\n", - "\n", - "“You see, he never can forgive my living on the\n", - "other side of the river,\" said Peter Ivanovich,\n", - "smiling at Shebek. Then, still talking of the dis\n", - "tances between different parts of the city, they\n", - "returned to the Court.\n", - "\n", - "Besides considerations as to the possible transfers\n", - "and promotions likely to result from Ivan Ilych’s\n", - "death, the mere fact of the death of a near acquain-\n", - "tance aroused, as usual, in all who heard of it the\n", - "complacent feefing that, “it is he who is dead and\n", - "not 1.\"\n", - "\n", - "Each one thought or felt, “Well, he's dead but I’m\n", - "alive!” But the more intimate of Ivan Ilych's ac-\n", - "quaintances, his so-called friends, could not help\n", - "\n", - "annnmea Mum\n" - ] - }, - { - "ename": "KeyboardInterrupt", - "evalue": "", - "output_type": "error", - "traceback": [ - "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", - "\u001b[0;31mKeyboardInterrupt\u001b[0m Traceback (most recent call last)", - "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[1;32m 23\u001b[0m \u001b[0;31m# While the right arrow is available for clicking, turn through pages\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 24\u001b[0m \u001b[0mdriver\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mfind_element_by_id\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'sitbReaderRightPageTurner'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mclick\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 25\u001b[0;31m \u001b[0mtime\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msleep\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;36m2\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 26\u001b[0m \u001b[0;31m# Get any new pages that have loaded (multiple pages can load at once,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 27\u001b[0m \u001b[0;31m# but duplicates will not be added to a set)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;31mKeyboardInterrupt\u001b[0m: " - ] - } - ], - "source": [ - "import time\n", - "from urllib.request import urlretrieve\n", - "from PIL import Image\n", - "import pytesseract\n", - "from selenium import webdriver\n", - "from PIL import Image\n", - "\n", - "# Create new Selenium driver\n", - "driver = webdriver.Chrome(executable_path='drivers/chromedriver/chromedriver')\n", - "\n", - "driver.get(\n", - " 'https://www.amazon.com/Death-Ivan-Ilyich-Nikolayevich-Tolstoy/dp/1427027277')\n", - "time.sleep(2)\n", - "\n", - "# Click on the book preview button\n", - "driver.find_element_by_id('imgBlkFront').click()\n", - "imageList = []\n", - "\n", - "# Wait for the page to load\n", - "time.sleep(5)\n", - "\n", - "while 'pointer' in driver.find_element_by_id('sitbReaderRightPageTurner').get_attribute('style'):\n", - " # While the right arrow is available for clicking, turn through pages\n", - " driver.find_element_by_id('sitbReaderRightPageTurner').click()\n", - " time.sleep(2)\n", - " # Get any new pages that have loaded (multiple pages can load at once,\n", - " # but duplicates will not be added to a set)\n", - " pages = driver.find_elements_by_xpath(\n", - " '//div[@class=\\'pageImage\\']/div/img')\n", - " if not len(pages):\n", - " print(\"No pages found\")\n", - " for page in pages:\n", - " image = page.get_attribute('src')\n", - " print('Found image: {}'.format(image))\n", - " if image not in imageList:\n", - " urlretrieve(image, 'page.jpg')\n", - " imageList.append(image)\n", - " print(pytesseract.image_to_string(Image.open('page.jpg')))\n", - "\n", - "driver.quit()" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.6.1" - } - }, - "nbformat": 4, - "nbformat_minor": 2 -} diff --git a/v2/Chapter14-ScrapingTraps.ipynb b/v2/Chapter14-ScrapingTraps.ipynb deleted file mode 100644 index aececb2..0000000 --- a/v2/Chapter14-ScrapingTraps.ipynb +++ /dev/null @@ -1,174 +0,0 @@ -{ - "cells": [ - { - "cell_type": "code", - "execution_count": 6, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "\n", - "\n", - "ACCEPT\n", - "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8\n", - "\n", - "\n", - "ACCEPT_ENCODING\n", - "gzip, deflate\n", - "\n", - "\n", - "CONNECTION\n", - "keep-alive\n", - "\n", - "\n", - "HOST\n", - "www.whatismybrowser.com\n", - "\n", - "\n", - "USER_AGENT\n", - "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_5)AppleWebKit 537.36 (KHTML, like Gecko) Chrome\n", - "\n", - ">\n" - ] - } - ], - "source": [ - "import requests\n", - "from bs4 import BeautifulSoup\n", - "\n", - "session = requests.Session()\n", - "headers = {'User-Agent':'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_5)'\\\n", - " 'AppleWebKit 537.36 (KHTML, like Gecko) Chrome',\n", - " 'Accept':'text/html,application/xhtml+xml,application/xml;'\\\n", - " 'q=0.9,image/webp,*/*;q=0.8'}\n", - "url = 'https://www.whatismybrowser.com/'\\\n", - "'developers/what-http-headers-is-my-browser-sending'\n", - "req = session.get(url, headers=headers)\n", - "\n", - "bs = BeautifulSoup(req.text, 'html.parser')\n", - "print(bs.find('table',{'class':'table-striped'}).get_text)" - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "[{'domain': '.pythonscraping.com', 'expires': 'Sat, 27 Jan 2018 21:46:48 GMT', 'expiry': 1517089608, 'httponly': False, 'name': '_gat', 'path': '/', 'secure': False, 'value': '1'}, {'domain': '.pythonscraping.com', 'expires': 'Sun, 28 Jan 2018 21:45:48 GMT', 'expiry': 1517175948, 'httponly': False, 'name': '_gid', 'path': '/', 'secure': False, 'value': 'GA1.2.1903552212.1517089549'}, {'domain': '.pythonscraping.com', 'expires': 'Mon, 27 Jan 2020 21:45:48 GMT', 'expiry': 1580161548, 'httponly': False, 'name': '_ga', 'path': '/', 'secure': False, 'value': 'GA1.2.1362930272.1517089549'}, {'domain': 'pythonscraping.com', 'httponly': False, 'name': 'has_js', 'path': '/', 'secure': False, 'value': '1'}]\n" - ] - } - ], - "source": [ - "from selenium import webdriver\n", - "driver = webdriver.PhantomJS(executable_path='drivers/phantomjs/phantomjs-2.1.1-macosx/bin/phantomjs')\n", - "driver.get('http://pythonscraping.com')\n", - "driver.implicitly_wait(1)\n", - "print(driver.get_cookies())" - ] - }, - { - "cell_type": "code", - "execution_count": 12, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "[{'domain': '.pythonscraping.com', 'expires': 'Sun, 28 Jan 2018 21:51:09 GMT', 'expiry': 1517176269, 'httponly': False, 'name': '_gid', 'path': '/', 'secure': False, 'value': 'GA1.2.2130634883.1517089865'}, {'domain': '.pythonscraping.com', 'expires': 'Mon, 27 Jan 2020 21:51:09 GMT', 'expiry': 1580161869, 'httponly': False, 'name': '_ga', 'path': '/', 'secure': False, 'value': 'GA1.2.1559626153.1517089865'}, {'domain': 'pythonscraping.com', 'httponly': False, 'name': 'has_js', 'path': '/', 'secure': False, 'value': '1'}, {'domain': '.pythonscraping.com', 'httponly': False, 'name': 'has_js', 'path': '/', 'secure': False, 'value': '1'}, {'domain': '.pythonscraping.com', 'expires': 'Sat, 27 Jan 2018 21:52:05 GMT', 'expiry': 1517107925, 'httponly': False, 'name': '_gat', 'path': '/', 'secure': False, 'value': '1'}]\n" - ] - } - ], - "source": [ - "from selenium import webdriver\n", - "\n", - "phantomPath = 'drivers/phantomjs/phantomjs-2.1.1-macosx/bin/phantomjs'\n", - "driver = webdriver.PhantomJS(executable_path=phantomPath)\n", - "driver.get('http://pythonscraping.com')\n", - "driver.implicitly_wait(1)\n", - "\n", - "savedCookies = driver.get_cookies()\n", - "print(savedCookies)\n", - "\n", - "driver2 = webdriver.PhantomJS(executable_path=phantomPath)\n", - "driver2.get('http://pythonscraping.com')\n", - "driver2.delete_all_cookies()\n", - "for cookie in savedCookies:\n", - " if not cookie['domain'].startswith('.'):\n", - " cookie['domain'] = '.{}'.format(cookie['domain'])\n", - " driver2.add_cookie(cookie)\n", - "\n", - "driver2.get('http://pythonscraping.com')\n", - "driver.implicitly_wait(1)\n", - "print(driver2.get_cookies())" - ] - }, - { - "cell_type": "code", - "execution_count": 13, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "The link http://pythonscraping.com/dontgohere is a trap\n", - "Do not change value of phone\n", - "Do not change value of email\n" - ] - } - ], - "source": [ - "from selenium import webdriver\n", - "from selenium.webdriver.remote.webelement import WebElement\n", - "\n", - "driver = webdriver.PhantomJS(\n", - " executable_path='drivers/phantomjs/phantomjs-2.1.1-macosx/bin/phantomjs')\n", - "driver.get('http://pythonscraping.com/pages/itsatrap.html')\n", - "links = driver.find_elements_by_tag_name('a')\n", - "for link in links:\n", - " if not link.is_displayed():\n", - " print('The link {} is a trap'.format(link.get_attribute('href')))\n", - "\n", - "fields = driver.find_elements_by_tag_name('input')\n", - "for field in fields:\n", - " if not field.is_displayed():\n", - " print('Do not change value of {}'.format(field.get_attribute('name')))" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.6.1" - } - }, - "nbformat": 4, - "nbformat_minor": 2 -} diff --git a/v2/Chapter15_Testing.ipynb b/v2/Chapter15_Testing.ipynb deleted file mode 100644 index 39b981c..0000000 --- a/v2/Chapter15_Testing.ipynb +++ /dev/null @@ -1,341 +0,0 @@ -{ - "cells": [ - { - "cell_type": "code", - "execution_count": 18, - "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "." - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Setting up the test\n", - "Tearing down the test\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\n", - "----------------------------------------------------------------------\n", - "Ran 1 test in 0.001s\n", - "\n", - "OK\n" - ] - } - ], - "source": [ - "import unittest\n", - "\n", - "class TestAddition(unittest.TestCase):\n", - " def setUp(self):\n", - " print('Setting up the test')\n", - "\n", - " def tearDown(self):\n", - " print('Tearing down the test')\n", - "\n", - " def test_twoPlusTwo(self):\n", - " total = 2+2\n", - " self.assertEqual(4, total);\n", - "\n", - "if __name__ == '__main__':\n", - " unittest.main(argv=[''], exit=False)" - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "..\n", - "----------------------------------------------------------------------\n", - "Ran 2 tests in 0.493s\n", - "\n", - "OK\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Once deleted, variables cannot be recovered. Proceed (y/[n])? y\n" - ] - } - ], - "source": [ - "from urllib.request import urlopen\n", - "from bs4 import BeautifulSoup\n", - "import unittest\n", - "\n", - "class TestWikipedia(unittest.TestCase):\n", - " bs = None\n", - " def setUpClass():\n", - " url = 'http://en.wikipedia.org/wiki/Monty_Python'\n", - " TestWikipedia.bs = BeautifulSoup(urlopen(url), 'html.parser')\n", - "\n", - " def test_titleText(self):\n", - " pageTitle = TestWikipedia.bs.find('h1').get_text()\n", - " self.assertEqual('Monty Python', pageTitle);\n", - "\n", - " def test_contentExists(self):\n", - " content = TestWikipedia.bs.find('div',{'id':'mw-content-text'})\n", - " self.assertIsNotNone(content)\n", - "\n", - "\n", - "if __name__ == '__main__':\n", - " unittest.main(argv=[''], exit=False)\n", - " %reset\n" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/ipykernel_launcher.py:16: DeprecationWarning: Please use assertEqual instead.\n", - " app.launch_new_instance()\n", - "." - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Done!\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\n", - "----------------------------------------------------------------------\n", - "Ran 1 test in 11.476s\n", - "\n", - "OK\n" - ] - }, - { - "data": { - "text/plain": [ - "" - ] - }, - "execution_count": 3, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "from urllib.request import urlopen\n", - "from bs4 import BeautifulSoup\n", - "import unittest\n", - "import re\n", - "import random\n", - "from urllib.parse import unquote\n", - "\n", - "class TestWikipedia(unittest.TestCase):\n", - "\n", - " def test_PageProperties(self):\n", - " self.url = 'http://en.wikipedia.org/wiki/Monty_Python'\n", - " #Test the first 10 pages we encounter\n", - " for i in range(1, 10):\n", - " self.bs = BeautifulSoup(urlopen(self.url), 'html.parser')\n", - " titles = self.titleMatchesURL()\n", - " self.assertEquals(titles[0], titles[1])\n", - " self.assertTrue(self.contentExists())\n", - " self.url = self.getNextLink()\n", - " print('Done!')\n", - "\n", - " def titleMatchesURL(self):\n", - " pageTitle = self.bs.find('h1').get_text()\n", - " urlTitle = self.url[(self.url.index('/wiki/')+6):]\n", - " urlTitle = urlTitle.replace('_', ' ')\n", - " urlTitle = unquote(urlTitle)\n", - " return [pageTitle.lower(), urlTitle.lower()]\n", - "\n", - " def contentExists(self):\n", - " content = self.bs.find('div',{'id':'mw-content-text'})\n", - " if content is not None:\n", - " return True\n", - " return False\n", - "\n", - " def getNextLink(self):\n", - " #Returns random link on page, using technique from Chapter 3\n", - " links = self.bs.find('div', {'id':'bodyContent'}).find_all('a', href=re.compile('^(/wiki/)((?!:).)*$'))\n", - " randomLink = random.SystemRandom().choice(links)\n", - " return 'https://wikipedia.org{}'.format(randomLink.attrs['href'])\n", - " \n", - "\n", - "if __name__ == '__main__':\n", - " unittest.main(argv=[''], exit=False)\n", - " %reset" - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "metadata": {}, - "outputs": [ - { - "ename": "IndentationError", - "evalue": "unexpected indent (, line 22)", - "output_type": "error", - "traceback": [ - "\u001b[0;36m File \u001b[0;32m\"\"\u001b[0;36m, line \u001b[0;32m22\u001b[0m\n\u001b[0;31m .click(firstnameField)\u001b[0m\n\u001b[0m ^\u001b[0m\n\u001b[0;31mIndentationError\u001b[0m\u001b[0;31m:\u001b[0m unexpected indent\n" - ] - } - ], - "source": [ - "from selenium import webdriver\n", - "from selenium.webdriver.remote.webelement import WebElement\n", - "from selenium.webdriver.common.keys import Keys\n", - "from selenium.webdriver import ActionChains\n", - "\n", - "\n", - "driver = webdriver.PhantomJS(executable_path='drivers/phantomjs/phantomjs')\n", - "driver.get('http://pythonscraping.com/pages/files/form.html')\n", - "\n", - "firstnameField = driver.find_element_by_name('firstname')\n", - "lastnameField = driver.find_element_by_name('lastname')\n", - "submitButton = driver.find_element_by_id('submit')\n", - "\n", - "### METHOD 1 ###\n", - "#firstnameField.send_keys('Ryan')\n", - "lastnameField.send_keys('Mitchell')\n", - "submitButton.click()\n", - "################\n", - "\n", - "### METHOD 2 ###\n", - "actions = ActionChains(driver).click(firstnameField).send_keys('Ryan').click(lastnameField).send_keys('Mitchell').send_keys(Keys.RETURN)\n", - "actions.perform()\n", - "################\n", - "\n", - "print(driver.find_element_by_tag_name('body').text)\n", - "\n", - "driver.close()" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "metadata": { - "scrolled": true - }, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "F" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Tearing down the test\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\n", - "======================================================================\n", - "FAIL: test_drag (__main__.TestAddition)\n", - "----------------------------------------------------------------------\n", - "Traceback (most recent call last):\n", - " File \"\", line 21, in test_drag\n", - " self.assertEqual(\"You are definitely not a bot!\", self.driver.find_element_by_id(\"message\").text)\n", - "AssertionError: 'You are definitely not a bot!' != 'Prove you are not a bot, by dragging the [38 chars]rea!'\n", - "- You are definitely not a bot!\n", - "+ Prove you are not a bot, by dragging the square from the blue area to the red area!\n", - "\n", - "\n", - "----------------------------------------------------------------------\n", - "Ran 1 test in 4.681s\n", - "\n", - "FAILED (failures=1)\n" - ] - } - ], - "source": [ - "from selenium import webdriver\n", - "from selenium.webdriver.remote.webelement import WebElement\n", - "from selenium.webdriver import ActionChains\n", - "import unittest\n", - "\n", - "\n", - "class TestAddition(unittest.TestCase):\n", - " driver = None\n", - "\n", - " def setUp(self):\n", - " self.driver = webdriver.PhantomJS(\n", - " executable_path='drivers/phantomjs/phantomjs')\n", - " url = 'http://pythonscraping.com/pages/javascript/draggableDemo.html'\n", - " self.driver.get(url)\n", - "\n", - " def tearDown(self):\n", - " print(\"Tearing down the test\")\n", - "\n", - " def test_drag(self):\n", - " element = self.driver.find_element_by_id(\"draggable\")\n", - " target = self.driver.find_element_by_id(\"div2\")\n", - " actions = ActionChains(self.driver)\n", - " actions.drag_and_drop(element, target).perform()\n", - " self.assertEqual(\"You are definitely not a bot!\",\n", - " self.driver.find_element_by_id(\"message\").text)\n", - "\n", - "\n", - "if __name__ == '__main__':\n", - " unittest.main(argv=[''], exit=False)\n", - " %reset" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.6.1" - } - }, - "nbformat": 4, - "nbformat_minor": 2 -} diff --git a/v2/chapter16/multiprocess.py b/v2/chapter16/multiprocess.py deleted file mode 100644 index 83be186..0000000 --- a/v2/chapter16/multiprocess.py +++ /dev/null @@ -1,36 +0,0 @@ -from urllib.request import urlopen -from bs4 import BeautifulSoup -import re -import random - -from multiprocessing import Process, Queue -import os -import time -import Thread - -def getLinks(bsObj, queue): - print('Getting links in {}'.format(os.getpid())) - links = bsObj.find('div', {'id':'bodyContent'}).find_all('a', href=re.compile('^(/wiki/)((?!:).)*$')) - return [link for link in links if link not in queue.get()] - -def scrape_article(path, queue): - queue.get().append() - print("Process {} list is now: {}".format(os.getpid(), visited)) - html = urlopen('http://en.wikipedia.org{}'.format(path)) - time.sleep(5) - bsObj = BeautifulSoup(html, 'html.parser') - title = bsObj.find('h1').get_text() - print('Scraping {} in process {}'.format(title, os.getpid())) - links = getLinks(bsObj) - if len(links) > 0: - newArticle = links[random.randint(0, len(links)-1)].attrs['href'] - print(newArticle) - scrape_article(newArticle) - -processes = [] -queue = Queue() -processes.append(Process(target=scrape_article, args=('/wiki/Kevin_Bacon', queue,))) -processes.append(Process(target=scrape_article, args=('/wiki/Monty_Python', queue,))) - -for p in processes: - p.start() diff --git a/v2/chapter16/multiprocess_example.py b/v2/chapter16/multiprocess_example.py deleted file mode 100644 index 9d019b6..0000000 --- a/v2/chapter16/multiprocess_example.py +++ /dev/null @@ -1,23 +0,0 @@ -from multiprocessing import Process -import time - -def print_time(threadName, delay, iterations): - start = int(time.time()) - for i in range(0,iterations): - time.sleep(delay) - seconds_elapsed = str(int(time.time()) - start) - print (threadName if threadName else seconds_elapsed) - - -processes = [] -processes.append(Process(target=print_time, args=(None, 1, 100))) -processes.append(Process(target=print_time, args=("Fizz", 3, 33))) -processes.append(Process(target=print_time, args=("Buzz", 5, 20))) - -for p in processes: - p.start() - -for p in processes: - p.join() - -print("Program complete") \ No newline at end of file diff --git a/v2/chapter16/multiprocess_queue.py b/v2/chapter16/multiprocess_queue.py deleted file mode 100644 index caea096..0000000 --- a/v2/chapter16/multiprocess_queue.py +++ /dev/null @@ -1,54 +0,0 @@ - -from urllib.request import urlopen -from bs4 import BeautifulSoup -import re -import random -from multiprocessing import Process, Queue -import os -import time - - -def task_delegator(taskQueue, foundUrlsQueue): - #Initialize with a task for each process - visited = ['/wiki/Kevin_Bacon', '/wiki/Monty_Python'] - taskQueue.put('/wiki/Kevin_Bacon') - taskQueue.put('/wiki/Monty_Python') - - while 1: - #Check to see if there are new links in the foundUrlsQueue for processing - if not foundUrlsQueue.empty(): - links = [link for link in foundUrlsQueue.get() if link not in visited] - for link in links: - #Add new link to the taskQueue - taskQueue.put(link) - -def get_links(bsObj): - links = bsObj.find('div', {'id':'bodyContent'}).find_all('a', href=re.compile('^(/wiki/)((?!:).)*$')) - return [link.attrs['href'] for link in links] - -def scrape_article(taskQueue, foundUrlsQueue): - while 1: - while taskQueue.empty(): - #Sleep 100 ms while waiting for the task queue - #This should be rare - time.sleep(.1) - path = taskQueue.get() - html = urlopen('http://en.wikipedia.org{}'.format(path)) - time.sleep(5) - bsObj = BeautifulSoup(html, 'html.parser') - title = bsObj.find('h1').get_text() - print('Scraping {} in process {}'.format(title, os.getpid())) - links = get_links(bsObj) - #Send these to the delegator for processing - foundUrlsQueue.put(links) - - -processes = [] -taskQueue = Queue() -foundUrlsQueue = Queue() -processes.append(Process(target=task_delegator, args=(taskQueue, foundUrlsQueue,))) -processes.append(Process(target=scrape_article, args=(taskQueue, foundUrlsQueue,))) -processes.append(Process(target=scrape_article, args=(taskQueue, foundUrlsQueue,))) - -for p in processes: - p.start() \ No newline at end of file diff --git a/v2/chapter16/multithreaded.py b/v2/chapter16/multithreaded.py deleted file mode 100644 index 709e4e4..0000000 --- a/v2/chapter16/multithreaded.py +++ /dev/null @@ -1,36 +0,0 @@ -from urllib.request import urlopen -from bs4 import BeautifulSoup -import re -import random - -import _thread -import time - -visited = [] -def getLinks(thread_name, bsObj): - print('Getting links in {}'.format(thread_name)) - links = bsObj.find('div', {'id':'bodyContent'}).find_all('a', href=re.compile('^(/wiki/)((?!:).)*$')) - return [link for link in links if link not in visited] - -def scrape_article(thread_name, path): - visited.append(path) - html = urlopen('http://en.wikipedia.org{}'.format(path)) - time.sleep(5) - bsObj = BeautifulSoup(html, 'html.parser') - title = bsObj.find('h1').get_text() - print('Scraping {} in thread {}'.format(title, thread_name)) - links = getLinks(thread_name, bsObj) - if len(links) > 0: - newArticle = links[random.randint(0, len(links)-1)].attrs['href'] - print(newArticle) - scrape_article(thread_name, newArticle) - - -try: - _thread.start_new_thread(scrape_article, ('Thread 1', '/wiki/Kevin_Bacon',)) - _thread.start_new_thread(scrape_article, ('Thread 2', '/wiki/Monty_Python',)) -except: - print ('Error: unable to start threads') - -while 1: - pass \ No newline at end of file diff --git a/v2/chapter16/multithreaded_class.py b/v2/chapter16/multithreaded_class.py deleted file mode 100644 index 8f4b47d..0000000 --- a/v2/chapter16/multithreaded_class.py +++ /dev/null @@ -1,38 +0,0 @@ -from urllib.request import urlopen -from bs4 import BeautifulSoup -import re -import random - -import _thread -import time - -visited = [] -def getLinks(thread_name, bsObj): - print('Getting links in {}'.format(thread_name)) - links = bsObj.find('div', {'id':'bodyContent'}).find_all('a', href=re.compile('^(/wiki/)((?!:).)*$')) - return [link for link in links if link not in visited] - -# Define a function for the thread -def scrape_article(thread_name, path): - visited.append(path) - html = urlopen('http://en.wikipedia.org{}'.format(path)) - time.sleep(5) - bsObj = BeautifulSoup(html, 'html.parser') - title = bsObj.find('h1').get_text() - print('Scraping {} in thread {}'.format(title, thread_name)) - links = getLinks(thread_name, bsObj) - if len(links) > 0: - newArticle = links[random.randint(0, len(links)-1)].attrs['href'] - print(newArticle) - scrape_article(thread_name, newArticle) - - -# Create two threads as follows -try: - _thread.start_new_thread(scrape_article, ('Thread 1', '/wiki/Kevin_Bacon',)) - _thread.start_new_thread(scrape_article, ('Thread 2', '/wiki/Monty_Python',)) -except: - print ('Error: unable to start threads') - -while 1: - pass \ No newline at end of file diff --git a/v2/chapter16/multithreaded_example.py b/v2/chapter16/multithreaded_example.py deleted file mode 100644 index 0ee93de..0000000 --- a/v2/chapter16/multithreaded_example.py +++ /dev/null @@ -1,19 +0,0 @@ -import _thread -import time - -def print_time(threadName, delay, iterations): - start = int(time.time()) - for i in range(0,iterations): - time.sleep(delay) - seconds_elapsed = str(int(time.time()) - start) - print (threadName if threadName else seconds_elapsed) - -try: - _thread.start_new_thread(print_time, (None, 1, 100)) - _thread.start_new_thread(print_time, ("Fizz", 3, 33)) - _thread.start_new_thread(print_time, ("Buzz", 5, 20)) -except: - print ("Error: unable to start thread") - -while 1: - pass \ No newline at end of file diff --git a/v2/chapter16/multithreaded_queue.py b/v2/chapter16/multithreaded_queue.py deleted file mode 100644 index 25fc315..0000000 --- a/v2/chapter16/multithreaded_queue.py +++ /dev/null @@ -1,54 +0,0 @@ -from urllib.request import urlopen -from bs4 import BeautifulSoup -import re -import random -import _thread -from queue import Queue -import time -import pymysql - - -def storage(queue): - conn = pymysql.connect(host='127.0.0.1', unix_socket='/tmp/mysql.sock', user='root', passwd='', db='mysql', charset='utf8') - cur = conn.cursor() - cur.execute('USE wiki_threads') - while 1: - if not queue.empty(): - article = queue.get() - cur.execute('SELECT * FROM pages WHERE path = %s', (article["path"])) - if cur.rowcount == 0: - print("Storing article {}".format(article["title"])) - cur.execute('INSERT INTO pages (title, path) VALUES (%s, %s)', (article["title"], article["path"])) - conn.commit() - else: - print("Article already exists: {}".format(article['title'])) - -visited = [] -def getLinks(thread_name, bsObj): - print('Getting links in {}'.format(thread_name)) - links = bsObj.find('div', {'id':'bodyContent'}).find_all('a', href=re.compile('^(/wiki/)((?!:).)*$')) - return [link for link in links if link not in visited] - -def scrape_article(thread_name, path, queue): - visited.append(path) - html = urlopen('http://en.wikipedia.org{}'.format(path)) - time.sleep(5) - bsObj = BeautifulSoup(html, 'html.parser') - title = bsObj.find('h1').get_text() - print('Added {} for storage in thread {}'.format(title, thread_name)) - queue.put({"title":title, "path":path}) - links = getLinks(thread_name, bsObj) - if len(links) > 0: - newArticle = links[random.randint(0, len(links)-1)].attrs['href'] - scrape_article(thread_name, newArticle, queue) - -queue = Queue() -try: - _thread.start_new_thread(scrape_article, ('Thread 1', '/wiki/Kevin_Bacon', queue,)) - _thread.start_new_thread(scrape_article, ('Thread 2', '/wiki/Monty_Python', queue,)) - _thread.start_new_thread(storage, (queue,)) -except: - print ('Error: unable to start threads') - -while 1: - pass \ No newline at end of file diff --git a/v2/chapter16/threading_crawler.py b/v2/chapter16/threading_crawler.py deleted file mode 100644 index 36478c2..0000000 --- a/v2/chapter16/threading_crawler.py +++ /dev/null @@ -1,28 +0,0 @@ -import threading -import time - -class Crawler(threading.Thread): - def __init__(self): - threading.Thread.__init__(self) - self.done = False - - def isDone(self): - return self.done - - def run(self): - time.sleep(5) - self.done = True - raise Exception('Something bad happened!') - -t = Crawler() -t.start() - -while True: - time.sleep(1) - if t.isDone(): - print('Done') - break - if not t.isAlive(): - t = Crawler() - t.start() - diff --git a/v2/chapter16/threading_example.py b/v2/chapter16/threading_example.py deleted file mode 100644 index d0a8847..0000000 --- a/v2/chapter16/threading_example.py +++ /dev/null @@ -1,14 +0,0 @@ -import threading -import time - -def print_time(threadName, delay, iterations): - start = int(time.time()) - for i in range(0,iterations): - time.sleep(delay) - seconds_elapsed = str(int(time.time()) - start) - print ('{} {}'.format(seconds_elapsed, threadName)) - -t = threading.Thread(target=print_time, args=('Fizz', 3, 33)).start() -t = threading.Thread(target=print_time, args=('Buzz', 5, 20)).start() -t = threading.Thread(target=print_time, args=('Counter', 1, 100)).start() - diff --git a/v2/files/new.png b/v2/files/new.png deleted file mode 100644 index d4a9336585fa2589a0f8c9bc665a330871fe3e20..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 28501 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%0AD`1ht;e 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 diff --git a/v2/files/out.txt b/v2/files/out.txt deleted file mode 100644 index 799dbe2..0000000 --- a/v2/files/out.txt +++ /dev/null @@ -1,3 +0,0 @@ -This is some text, written in Arial, that will be read by -Tesseract. Here are some symbols: !@#$%A&‘() - diff --git a/v2/files/out6.box b/v2/files/out6.box deleted file mode 100644 index 88cd478..0000000 --- a/v2/files/out6.box +++ /dev/null @@ -1,85 +0,0 @@ -T 23 60 36 77 0 -h 39 60 49 77 0 -i 52 60 54 77 0 -s 56 60 67 73 0 -i 76 60 78 77 0 -s 80 60 91 73 0 -s 99 60 109 73 0 -o 111 60 122 73 0 -m 125 60 142 73 0 -e 144 60 156 73 0 -t 164 60 170 77 0 -e 171 60 182 73 0 -x 184 60 195 73 0 -t 196 60 202 77 0 -, 204 56 206 62 0 -w 215 60 233 73 0 -r 235 60 241 73 0 -i 243 60 245 77 0 -t 246 60 252 77 0 -t 253 60 259 77 0 -e 260 60 272 73 0 -n 275 60 285 73 0 -i 295 60 297 77 0 -n 300 60 310 73 0 -A 317 60 333 77 0 -r 335 60 341 73 0 -i 343 60 345 77 0 -a 347 60 358 73 0 -l 361 60 363 77 0 -, 367 56 369 62 0 -t 378 60 384 77 0 -h 387 60 397 77 0 -a 399 60 410 73 0 -t 412 60 418 77 0 -w 425 60 442 73 0 -i 444 60 446 77 0 -l 449 60 451 77 0 -l 455 60 457 77 0 -b 467 60 477 77 0 -e 479 60 491 73 0 -r 500 60 506 73 0 -e 507 60 519 73 0 -a 520 60 532 73 0 -d 534 60 545 77 0 -b 555 60 565 77 0 -y 567 55 578 73 0 -T 23 31 36 48 0 -e 35 31 46 44 0 -s 48 31 59 44 0 -s 60 31 71 44 0 -e 72 31 84 44 0 -r 87 31 93 44 0 -a 94 31 105 44 0 -c 107 31 118 44 0 -t 118 31 124 48 0 -. 127 31 130 33 0 -H 140 31 153 48 0 -e 156 31 168 44 0 -r 171 31 177 44 0 -e 178 31 189 44 0 -a 198 31 209 44 0 -r 212 31 218 44 0 -e 219 31 230 44 0 -s 239 31 249 44 0 -o 251 31 262 44 0 -m 265 31 282 44 0 -e 284 31 296 44 0 -s 304 31 315 44 0 -y 316 26 327 44 0 -m 329 31 346 44 0 -b 349 31 360 48 0 -o 362 31 373 44 0 -l 376 31 378 48 0 -s 380 31 391 44 0 -: 394 31 396 44 0 -! 407 31 410 48 0 -@ 413 26 435 48 0 -# 436 31 449 48 0 -$ 450 29 462 49 0 -% 464 31 482 48 0 -A 485 39 494 48 0 -& 496 31 510 48 0 -‘ 512 41 519 48 0 -( 522 26 527 48 0 -) 530 26 536 48 0 diff --git a/v2/files/outbox.box b/v2/files/outbox.box deleted file mode 100644 index 88cd478..0000000 --- a/v2/files/outbox.box +++ /dev/null @@ -1,85 +0,0 @@ -T 23 60 36 77 0 -h 39 60 49 77 0 -i 52 60 54 77 0 -s 56 60 67 73 0 -i 76 60 78 77 0 -s 80 60 91 73 0 -s 99 60 109 73 0 -o 111 60 122 73 0 -m 125 60 142 73 0 -e 144 60 156 73 0 -t 164 60 170 77 0 -e 171 60 182 73 0 -x 184 60 195 73 0 -t 196 60 202 77 0 -, 204 56 206 62 0 -w 215 60 233 73 0 -r 235 60 241 73 0 -i 243 60 245 77 0 -t 246 60 252 77 0 -t 253 60 259 77 0 -e 260 60 272 73 0 -n 275 60 285 73 0 -i 295 60 297 77 0 -n 300 60 310 73 0 -A 317 60 333 77 0 -r 335 60 341 73 0 -i 343 60 345 77 0 -a 347 60 358 73 0 -l 361 60 363 77 0 -, 367 56 369 62 0 -t 378 60 384 77 0 -h 387 60 397 77 0 -a 399 60 410 73 0 -t 412 60 418 77 0 -w 425 60 442 73 0 -i 444 60 446 77 0 -l 449 60 451 77 0 -l 455 60 457 77 0 -b 467 60 477 77 0 -e 479 60 491 73 0 -r 500 60 506 73 0 -e 507 60 519 73 0 -a 520 60 532 73 0 -d 534 60 545 77 0 -b 555 60 565 77 0 -y 567 55 578 73 0 -T 23 31 36 48 0 -e 35 31 46 44 0 -s 48 31 59 44 0 -s 60 31 71 44 0 -e 72 31 84 44 0 -r 87 31 93 44 0 -a 94 31 105 44 0 -c 107 31 118 44 0 -t 118 31 124 48 0 -. 127 31 130 33 0 -H 140 31 153 48 0 -e 156 31 168 44 0 -r 171 31 177 44 0 -e 178 31 189 44 0 -a 198 31 209 44 0 -r 212 31 218 44 0 -e 219 31 230 44 0 -s 239 31 249 44 0 -o 251 31 262 44 0 -m 265 31 282 44 0 -e 284 31 296 44 0 -s 304 31 315 44 0 -y 316 26 327 44 0 -m 329 31 346 44 0 -b 349 31 360 48 0 -o 362 31 373 44 0 -l 376 31 378 48 0 -s 380 31 391 44 0 -: 394 31 396 44 0 -! 407 31 410 48 0 -@ 413 26 435 48 0 -# 436 31 449 48 0 -$ 450 29 462 49 0 -% 464 31 482 48 0 -A 485 39 494 48 0 -& 496 31 510 48 0 -‘ 512 41 519 48 0 -( 522 26 527 48 0 -) 530 26 536 48 0 diff --git a/v2/files/output.tsv b/v2/files/output.tsv deleted file mode 100644 index fd5ecfd..0000000 --- a/v2/files/output.tsv +++ /dev/null @@ -1,24 +0,0 @@ -level page_num block_num par_num line_num word_num left top width height conf text -1 1 0 0 0 0 0 0 600 103 -1 -2 1 1 0 0 0 23 25 556 53 -1 -3 1 1 1 0 0 23 25 556 53 -1 -4 1 1 1 1 0 23 25 556 24 -1 -5 1 1 1 1 1 23 26 43 17 79 ThIS -5 1 1 1 1 2 76 30 14 13 88 IS -5 1 1 1 1 3 99 30 57 13 83 some -5 1 1 1 1 4 164 27 42 17 55 (ext -5 1 1 1 1 5 216 27 69 16 71 written -5 1 1 1 1 6 294 30 16 12 77 In -5 1 1 1 1 7 318 26 51 20 75 Anal, -5 1 1 1 1 8 379 26 39 17 82 that -5 1 1 1 1 9 425 26 32 17 89 will -5 1 1 1 1 10 466 26 25 18 81 be -5 1 1 1 1 11 499 25 47 19 77 read -5 1 1 1 1 12 553 25 26 24 83 by -4 1 1 1 2 0 24 54 513 24 -1 -5 1 1 1 2 1 24 55 100 17 81 Tesseract -5 1 1 1 2 2 140 56 49 16 88 Here -5 1 1 1 2 3 198 59 32 13 88 are -5 1 1 1 2 4 239 59 57 13 82 some -5 1 1 1 2 5 305 55 91 22 86 symbols: -5 1 1 1 2 6 407 54 130 24 64 l@#$%"&'() diff --git a/v2/files/python.png b/v2/files/python.png deleted file mode 100644 index b3b5b2220a609b23acf42fcbba221cafea22f043..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7821 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 HyTtqtVVYXp diff --git a/v2/files/textCleaned.png b/v2/files/textCleaned.png deleted file mode 100755 index cc6229e4748614183d00fe9e1ee9a4d20940e8b7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9449 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 O1IS7$NmPj$2L2!0LUgPE diff --git a/v2/files/textCleaned_100.png b/v2/files/textCleaned_100.png deleted file mode 100644 index 7534eb4162f77d0eb1ba3e1a315b9dec505c7578..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8899 zcmc(kWm6jru(ng6&|-mN0g5}NP~2UEyK8YT9^9e0Q{1J+-617VT#6NU3GQxrpYsFW zujkC{T(h$?`}LZ8XQNb=WwFpn&;bAd7FbS79RNVm{jaxvhx8vcS}T_T01%_Cq@*fX zQj${D)!E9{!4d#~uZ!P2K@o`V$)~QDhhw)Muao9^WBc0XNDo#(4$4mmr)Uazu2bNxhAtfL^&sq2lD0waU273PD9KN>95EAyi zUcByy7YY+fZ!17-CJ{E21TYoA?J!leSRl-k`GQBRhSO_ru;5H;e$Y}kk4?C==TgTh zRYwAVASKD&A_on;E4-3UdB)-AT9YG{{OKje2qTFxB}*2?Ep*|c7E-68dTKrQMTzl# ziTMac(9ayzDpF6Kv8~lxc5cKWQNu!_&|dRrE&_ifZu}HAKc`9CP~mA@ZXnKVT`71W zG{^|r$WpCc{rApF?3+T+9S?%=^eTbF?Ri{OIr@v#9%dcoeJAhK5K^xp;CHH;c>E)@ z{#{bnD$!;n783P1S%5jiWkBcp<>v3d8>{Jpt{ad*iYrmRRR-9?D=@)1D2hJ>*QD3d znRyx<)bZs4)R z`^4|d=Jiy%Ow;SV4&`hk)60WH5NpHK7?q#f&i<;eW=W`?(1&eUNb9z5Ox`J;Lx(hx z*f$rcrkDI4qa-=ilZAL6a=8`D#$wJx4c(HsK4<^*V7f0TGC@EosyU2fv|!2t=NdEY zhvu2DNZ*4npM!vjuSyRyecqjP_})vQeCNdCB9vRsqM;|+6gY8z=Mm~&dDFkWI=Ov1 zWpVCO|4VcdOLrhgEJ;u1~RGR(v%&p4Ii3ewl4$cG@}-(7t|eX-^;!FUkp=Uv|Uo*=19sOiBNVECk zN&8GZ?qtwPDW&|Ig1r66mDAN8!7gyoin`+%7%G>)FjOsV+9rAo;Qu`-nyf;x818>R zCJE+H_d|ER9053-90(c=6s_JGW7S_HB(IXu#2m>M8+;Ij;gnDIS{wi&;A>%2D$VFF z4q)C5thTdHM&ff6EUt{MZ(&)7OiuZ(A150>2>maL&u`E%(!bwt+CsXAs-8k|q>ey1 z!1xgSMAV7k7)sKeP-<0FW^pnbz~=%o_u#<|CJ3rARXzJ#t6m{pq)Hr=O-j4(xL+e7 zRAzD?)PrUz$%a4;VaJp@LwJ{=5`~P6o-;Zl9};g%yA6a;zZFby-t?} zLmR&`x=KmMf%2B}7M}-b5Z4_^_FMUD;KnyT&m3B1QtLRHEov90w$V1yw$3*36?`XR zm2mi4zZKSl6WJX!#)d+>vzVpu=}sgj!g0k`?bOOi)lmPA}Jw!W0 zJKvMd@uMUCiPBQQ62Abt0IqZOs8cLb+*1rzv{g(~^jEwZ!yJthDkSXn{=( zI*pO{2jq1Jzi^{vNrv>L(?o2e4fq|I%>$jt zoit9roQ|&CwZkF0kZTB%HwR=1Vg(`g_JANmI3Z`30bAyKGjNQ((XFGMY&d+2cROJV zIa;BjK=#Ne-+Ho&A811Hx*#3Fi~kK z=^W|!7_RS%F%3~!F#}P?L}Ylygfj#fM4#|U2?wJqqtK$@QKD%d3#h_Z5w6#D7yz6 z0(&Jp3>&=WTDyd!^8?5s{(kJy<P^@I+IN=&#B~%FvX~GR?+V#wN16zrcAIGJj-G zo~f^<)m6@fn3_2!IbKYt!;&2q9o`z8G<2A9w-`XY_D@mmO&y*5dmo$Qek!$%lNnT1 z$2rEIpb2_+LOPv%WuE+R32qgzQL(MbjQOMaW%xb$rUcpr(*$4Kd0dsf$i0$0z~8)& zM>a_|mi8mu++07oJk<|ECjSU)oQ|9_olXi%34ay#xph6pT3hZ&@T72AS5k>BZ?q1F zlT2ml$~|vdo~9jft8ma7QIGo^d0Rs!?`@t+p8T%oZk6tGZ)a{hH+Z*ekMa*hiA+I> zWOX<;gc%g~oI?UXxokKW_}c_fD7J{F@kek-@R!>2tpkr=gTD;drPf`1i#w0myt2S> z1*70^;!c5v!wmC$i~Eb>rInC=!^Oh_dw6(VuJ1{WEA_1U_kg_rDEobJ#Jrwl44 z7^xJ3smi zb!u-nKcc`VKP~@HK~iCG^ms&IRBLqfQycSyab&HmQGWYoz_x9vnx%P~``nye`e74^ zDxTKWuYZlV-nr67gG$ZWTCHKuyK7cmx%$94il6z;=guH!cgK%5OLMbRRf~R4@ngBu zgsM)6Wq)S>o0p20IF-449-s|Y6V@Si3y>Jg11lRS z8qo5z_}gs|PQ$ih5}N=?P)tBgVC{+xXn#B$0$H)#aIYSX@ftd#uSY|x$#saGbH8Nm z`&%PU=V)zRZ~gn9nt$y8XDK*DF9TTewKJSD*)zQ#Z70irE!Hj0wWm&A=et3_`?ud{ zo!OstjXuvJd7E7=|B}A_Gkqq%E*P-z3~9t~XnN%I$nBY#9%i3g*{!A-`^BIW`Xf2?j?rlO6~MOn7h`na`McQdHrxWR70$ST*-ZHZ@?bwXsC zYK0xfH1Lo(`hFg>6(*c^szpxVt8h!;ZA`c4OOROOL-dsTr2WMGunyb@`r$R~s(E|4DJ5qu;g$0PII5R+I*3iZAie=iv+Lbk>ypE8t5o6O>-$S=L!Ht{|* zrR-OW?T$u!x$gu^KAz}VUcjS-!GIzCDBU>A-Dv$H+%?+u=!)FPI~V$mz-UOFR=X-- zysN)-ww9$rsD5kgCWmyM*}n2r`))pVo^`E%ZL90Ej`PaK5@_1Jg#Tq?E`6pt$+5<( z`Rt-4^wx{)?(BzqnJ}f7xBHpT&#Ar{&ZnRE^=@n}t&dTCDZ4$#0jsaS%85{8(f*;H zVbWn6h;IAe?s^}^%;FBJtxX;LNUMbn;t%#fYkcu;wKq>5A?s4Fops>uyX&)crMUpU z$0@5Uug9ygTonduvb_bkjHt=u)~(k0QSCzl21d-*`Xnoub*5&aX57)q>B$7ABKY&B zwSq|}E$R6#pe}Us z>+>JA+qKtTrCy|;8*M@`4BiBgWP9ZI`?xKu3;N7;#{> ztN3Rpbt8tATvnN$*3uK7TvJD$B2tBz+ekC}p%&-T0&cLa%gk*bVO7R3y_jm4JiI;i zJ4)f1YM~Vr^hHK{D@(;dXx(*HF={>E>V)houu7U}GqnC=GgDq@i$Dqe2K(my4b}z5 zEfD=3<~8v0J$=M6mdEnhM=J^^rIzS#ao5r{WAE9S>aDRY`i(>~Nb`Rr2L9am)|(Vk zEFEM%GgGd6G~K1nT}R&&JS?ggY#!yg&b56v2b>=4p`-NYv#=PwTt?4z^%#u z5XAcpBgIvgg)2+H{)w!yOw~*mVevJ2Q{%S&x5~YSS|`7vU3*#m?t1UYfU`A_ODt|y z>3AIGwWB|4fVJeg+T0FbIQ>@-?~yEjK(1yzaGHp0i@Xw^q~I2wIEV|}S}R|ioPs`I zKm4xl#gI(uW1YOtQ-E%enUPxh4`0cDRXl2bA+2q7+AhPBKf7nJrRQA>%*?t!-!lL2 zHp3bBkY80BEKm!$nd((QG}2WB*u^80A4d`M*wp;iDs4@(UF(t6$|SI7uf)IAP`wD$*qxtW?~ zgWOv%)wC5om20#`^u;C3Bvl4)$k_{e+_+B@=QmoxOC~w< zOjHo=W-R9CTPb6MKOP$+*b*!fcDu&?^LhPu?O&(0ROPh#jadSeD*Ibzp~rIG+S21U zr=;6y&=omT4IufcWZJSk$venFGK|yR0ehYHN-2E0?3XG30ovik~}Fv1hY(B(Lv(J6UL6W-LY!DQl>TL zYhN?#2^XY}$!G_Y2gA22zL_K$G7|@V>Qu!(!Wa&qqlp1C`3EM zAHKuGkm#_7Da`3F63QisQB1IHK+nOM&YvwEQ5rgz=@I`qDL1z}y)WK8yfI@m!alb% zc`)=xdTS_KmPvA;A*IH*Rvhi0T72qK`W7-xhAg^<;(l61vK$7?noGJ7I#x=zX@-^0 zOmBhGZ|RszZFkAj?B*PrQw}dkEXHxF0VjZ5F(VVAi+AwkLvRtx@hw zkL$;wfp(>tlNV$pkQiVrh++uI$P~j*Oh`_)YyHi@Z;pOUCUI<4uGF{9VrQo4y5wuf z<-J}TlZ+y%c!&6hZ%8DL3V}t=h43%bAZmKx)rZjtj{z$)ldU!v<2Kh7BxAflBt(ux zDs}wVAob)++FhYJ@(S`0flbtAfCnoUsS@F5G{-l&pj9Ow|3|Y3F_{eZ1aPix7=L+7CRf9_E6@Kwqkj|n~$9TEN8sCQd}2Q~&Xr=}~iVE1=H zy#RiwPX19sU2eWFze~TnjPFW-m->BVk6FGV#BS_RlLVwBhhftvz-MG99J?0% z+SQx7`KefZn>+=3M!V7KYR{;e5Xgd7Mem8Iqgp^;vRx9SZq0C0=AP(d{p1wlTeS-G zoju9D#iu;I8lmexFT88M7Cc?Yt&4{U@|3W<(<$;kqj>YFGcwb6h-x2*or*gM@tbYc zttQn-os6txT}cByYb%~j9s`f!$pl4+d<#J4;+@a?oNobe<2+((m(SG%%g{& zmYjut`51HR-yQ$!d(0Y`8PEHiTz%zLx%6_DEwV5}wwCgEzm(GXQjCnzmjNH6L1HT% zNL~AxPzl`*NXXQ`=M$OXU4G_A*dK>nP(OG3f#KHkY~5*>+!Y?v1LKZ}J^(Nyh_d1K zb1<76(!&NTDDv-6#X6R>1pi-u8*HoKo6UD^AM?aqif;=pRq<@p+(D1ns0l6usb)NN zH4F3~fv2>mL?R#rw%)pAs&=ZdrnY7uiV95UP>RGe%b@ADNx|Lw+UmLzvpKd`FQ2dtg>S(wDCcfCYHwP06oFw zuDYvc6BnT~maXZ1t1fs_LK7IQ4=UR)RU^gF z-$2n8_(e#3<8LF)Af8qVeL^Yu522~t4z`o!gZ@SbxZTWWwlPB?7cf_);4&{!icUtY z!Fj`%hKxOZ+g|~T+0kL7LTPsu-S$j}c24}O#?FjR4K}a;T-%k-P6uxr@7e`9J8U{t z?*58&ER0^2RGDnrE*C8R-QX;T)6ggvztqMKICXCZ`a1ZX<}U9H&GrCiW(qlH8a>_S z^5M|Sar@7p01dqzgXib&2Q=>}^IzKx7x2j4joomQB&c!CesyYAXZ2JKe=R|k zQtfChh3=WI$->6km-X*Uj0^j#x@-7LO^ZTpdL8^tyNGut(%~oD$kZS}kauHyJ0lW+ zl`QDyDm%L}JUjbHTCRZ|^>_D1F2b#4l4K`#*l0x};oj|aJ1`A_R9O74`+Vfd4gf&c z21|)+LUK-4mtC)_u!GFJ#sd+p#~z6fporXX98lFAznuo@7y9pU+0UzY{%-&qbBHz8 z|6UHx)Hp~0Lz@46Gy=l{lg^{PSph-0V4qi|qP`+xGuP&9L!ooJi~Xy%WLWEWtv;ARJ@0iRWb%7h z4i##Y?~7<-mJXULSkuoh7h`^sp5V$mRn&OsYZaZWAVyeaKZw@@H!XHa zjcwEaoIisaDNKG)6!0}D)T4bL|331EYg>BhT;6y&uHBRaM~z5@y-f#B&_(#Jb6~Hx zlghDobxup6pp$iT3w&9=Wa7BqbQK}nT_(d5Pc|wEu@1?Dra#)r|~+j#W@+?t@Hr-H8-oM)ZHiADiZsR2I@5 zdnF8qLg-?y-?!P@b4d$M#@M-}COExA*yX2*;z8J88l0fl6p z=99d?oer{9ok^mzrWvm>RzDbQpJ7IGG(y^|BUBqAx9DLKaoz470y=?wnmIN@c9QkD z=OhMf3_Zg1!oHWn-j!>I@kA8YkXpV^3nIm|$IZ$5CyvM|ONtzC>Rc@-F{|vPa+O_+ zgmTlehohE+d@YFye+n<$+8`8Sxa9>o6j?+P8zj4!jHhB7hLIzdaA!uIaY1HUlbtl2 zggZPwcAA3~tX8clyqkUoROhG*` za=<*yKs(vFE(e#n=K=GBCcQFmGnObS|1j@W+>bAahUuld71kr>a1+aqb{iFe#4}7L zf)$+h3Fn*y7M44trNJ}Zb5zf3UU&Yy=&H~09?~){>QIWM2W&eO{^i|uwzpkbdcoiN zlmjEF4@S;?KCKiU`sC{F%`hGM^#a%ttT$WpE3FJF!+KZIpTRs*W%`-(4iMqj8%j36 zr!b2rD)P`KhGQLgD;00LY?uk~MK{Bf*z-#FxNeBEEmLi*)L*vdKhyCZt^KK4N&@fV z&o>8%3OUWW8^N}>tzZhIEYPkw(a!5&~dMjwS5s;E)E_ADzACPufZFFM9 z+v@40r2b)ZXm4I^06w6jqbN1sXt=mrDT@p?gK5&YSHmvnw=!!S5}ZF7Tuz173}+gK z6#1rx4R|(ma9}iwz~U8(vvq2|>6^c%V>jm9&)Y9CE1Ad1{V34Nu{qM$Q_p$&x4}EC zV;s8`1)B-4);G!oQ#(udT2yH~-Mp4VEFimV>SLAZJwo3JJ1K{wy0MLR)pZ|%H+%k- zX7PgS$3pjDnr>*;C#=+Lia``c55g7}ZynE*%3yKv}oHEeBNvj>$ zpeSM}PcNX;L^#`)n{0lWN}+;l3>!MIdkEqR=!VD}&Mt{Hv*)N_V?z(^3XWL7f=uXG zeI=kc7FyaH69q(?Dl-*Jn#E^jT`F`Mn$_o(nh%GtWHY)jTSJc3CVA18Wsv?!c%)?r z^wE6W+eFo%)RqE|f{-x$b!}laH`m;EoSDM2$lii`1qPw7_4_;Pn%3s64 zZ8_;x@BY*S?Z}=}UZKsUtT6_ws>v4M3`9ej!+i2C2w!98f>q}+Od7_YpELYkHCZH` zf8qC4CI!fQ6@6nb*RAtwE7*U$@})W!-%?Z1DFX`>(uRUPEOq=WpRvh_;2)BC&u#`R z_ZnNfG#@5^v>6R&cb7CJM3<^3Fum~YNw(6RfQgDoc)*U!S`As%J|{~Ha;|k+W%Tcz z7EqUvSt?6t;iofehKqGdhb&lO7$o)_n20g|!{*Iqpi?(Xoq;zkjAuDZ?r*2TKaZ_h z1sopeK(hKrrxcUgN1K}q*fQGw;ZA@0bIlw@JrBnxbqDc;9Yz&ZK7;1Z0}gD25Za@+ zWKNFujcx8$yJPj2kw3zB_U&Ie#7z(NzA&m6qr+=)6Z>=qm z3479F0z@wrQ*nIs@7}l{ek4dN{ z_Xg|hnAwHuFR$Erv-~NcJ$a=1FHVWnbg!vC&A7yS+u;LzE*6FgAl}b?@4^5gNAV)h zS0@cQ73}b*0r&H-w)lMW+KAfrc49G{a4t|Is9gZx{eD|KHaC30{HI Y3*x1Sw@UW^B}D*OT3M<_!ZhUn0q^%&)c^nh diff --git a/v2/files/textCleaned_105.png b/v2/files/textCleaned_105.png deleted file mode 100644 index 2693225eebab3c9d4a5b3b3d2a99394f6bdf8fcc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9010 zcmcJVWltPz(5SaSaV_pvv=myTxJ$9c-KDs@E-uC0-CNupmM#=1?(Vj*xGfIv^ZtO7 zoDb(DcP2BLnXgx_N$w~WrSDkiWat0@0836*N(}%&(D^U7LPhv5s<&0G001P+Hjyt?GyOzt!MJ7`{m)pt=H?cWzop4t|iig9gvG;rla#k5k*Ya z`s4D%T+rm-`8b?AA~66K^E=`#rer$Eje|YgpEm;*^jpSSK#fww;#wt@t z*v|&>`V2257NkFI0I}Ib$Z!(CL;$bTMDfQGQNGL{PUPlCt@Vr8L@Ng_ z^;}Z*WB_l3Bw09O&>(8jwRFleEKqrswUD-MAU5)y^-S}=PVn31^kOVs>=K5a|+ThnSIX;#}> z;R}&|X3$o)O5OSbs->8-LeSl}H=?ua1Wvc-aZ#n{FH#4X^)&Zgywk%7e+&S9sjA}f zkKhK>r0#X%?MN&Hx^cTfwe+ZuO z9}AaP>exd$YbD3a#Z}8`R-o@S^sVlI}1WI)uAKmy~n}^ZQ zu`E#`Ydk4Ci{^KFfEjCsfe)Z&cC#E#i5G3Gl2;gf(%|*UTVL<3N*H{^ z{egP~+;Z`FOxh1Ncw_&2VSF%5?xX)K$OJ=zF;g90I z{g|X2r(vOr{`5#tf3SERZiLlv^Co$nj3VYhx!macRuoS2WT(jq5W;yaib|y) z-Nywiy2+{T9a56{9tVpnq3ivys7IutK^?%&AqYaBLh|h+IYC(Hd)FS)GhF=?iYs+Y zf{PO$LXe0&5gbE9z86ZTg3KyTX$|;XNa-Ftw8i3$Y((4e^}XdEAsvJ&T%>Ip+n;!5 zk>0eXvLDof=4dE~NgBgWXtam%uR7SLG{ITI!H(SB`f-n$`<@uWyXD(X8GtDoI<&2OkAhzK zONEU&AeCDl%i?FFOh=Kw>W?{E4OUis&7YMLJoLR(5^*I5D&Q#{Zu)GT&v644q$_wp ziO3S1BITl{X^TT&cP3v{;o$u5PA0#;8j#4vA`epRhFta!n5ccp%KR|qFoyW!RM9lO zUWW}si=ZmH8mMhg1E+x#e8bU?>xrc7Q!)$Oa^~~Q{isB46-U2A=fcuH+D_iy)h@n9 z;7F<*4*mOS3wYspui{T9f^Qt`)Q__xx}(i<$Q;JP&0NjW&4R6xTgF^&U4B@RS*%l5 zT0u}YSMFYjSt=x-C9Ny{5ab%`niL%^A0(eQlFk|gL)9eG#G03^M5{DLLJmRtleney zlP;Gw^}`vS3|h?G+#KDU@0{aY(wx<=(ckCl;3A`P)6%4(uN9Z&{E8`(>dIWQ*Wu|Q zTA5k}o*WJo4veS3m4Fp~0dxU80Z9S6b=ppfPR34RchN)Aqy3|rBgsSMY3-@IDP^uL z5-E~c(r(gZ(rA)1E=A5_lJ}%oq;j!xv43N6NGdYx6^j)Q6oVCQ6w?$ziq~V9WAbB4 zV+~{cV>M&DY|KP>L~iLO=}l}NY?HcLIvu*Vx*#3pMy&?y#@8RaKW5FZO%*JvEd2&s zArnK6V^jkH`8~leJSf?cA^qv}5xeL^i1GYNj7mVI4_2&Jlu!lsOofoq_+uJvJZ+9e z97ifg^|LQ$qic5^P;VXY8*c<3PVW_OOK(yi4{t zyPL2B9@!iMv(m6`F()#se7?|2R8s*?X@8NdmvlDzsXZ*uY;@Q;rC^F~%3~V1tpHhv zh)PRI=Ss)NaQ{?{X^hH_8H_R_ro=BHnkB>_{zO1dG!$JGg%Smg5={$YNM(3taQ*nm zU@AxW5AaXu-#eDr)J~0G8bxy$HX+Tu?#(wIM`)x(qzYM5S;$!&jS`KHjZlj&3*Nod z{gD0WeWQO|!{^D$sZQx{Wr>L*DaH`kkOQ#SLe~b4JS*hBbamoo&ML#gR9R;4t?1>iB~PhR5a+8qDW7?GQ9ayofUgE_(YbHW6g+ zyt-9U6k!^&Eli)9^jo!3wcu-LLy1f4B{}{(e9@F+#_RHtauncsmgyMV*hEgx7w9*p ztc;w=bG7xf`l{Iw6H})ohsy~yNV5I1{d@h>#!eHSR()@;!!u+%69-4opU0NCU%>Wp zO8x4ZIEVOC6hWUZ?=D9_nI{mO5UzlYjBQ0}#2?Ks!|%yAEzlvDCivq1%~i>Z$}7o3 z&e`W=WSeYjU+vyn5Fvq@noVKZT0xa$el#%gDRC$-BaP&u}u z$toO5Hl3{_`@C&&mUhge%=yufZru0S$I5&1-ukKZ$^T{^4!p~Q&%(R5cz5fL3ywsI zO-K?c>v64#GO6#mh6R3cTXQY(w+kRq?~u+AjNpC z8QXK043&%IXe+w;YJG&>kRGM_qIy%JnK%m8WN(!~sf-!vS*@PY?yzZ_hgsbU-pTv? zBf%ipHHWHEbSHPdMb^Bx z?%`F(sNM4G@}w)KYo%LTbR@ShGlo29?m@VuL7qFClV)j2MX(z`MK%pW&fx6 zvAh|g*YsSigM}uCREK{KIbOSGukFO1PPOZGphk1!p{ghLyGTI?!6zymA@3!N84s{N z_~}gYH1e}BnJ_S6j*3S}%g11|YR&H{>MCUw#0t87seFl3o-g=@V~y2}1;cK|A;t2* z%E1v0Xnk7la~p!vbF3N1CU_?(CLkxUcgF^FJi>-aEZJ^(){n<{4V=(7qro*)+N4f- zU$PHDR&QtXA8lOWpn<2B-+MT7)SRMM0c-_YnT}asvwR+HCM$j~*Dud^q)y%xxPgCy zI&L-3?asSLpXU&KOs`jeOT+)poXc+t1}r^$HxV>8KXQ3wfjUkyR_e|Op=k+KU+vmk zsy!}m53pk58padH$G^~JwSx%7XbIuB@3-_>0CTl~FCy=Qk}a8_kA^D4`-n0dN{N`< z7)&JuDzk?On0Wlh2QG2<>I4D*F-s9iz!sTIK#x&?-8TSPP6mtdlO;#G&H{$L=1C95 zY_4egg3m>_y+7pH6+s|mK_VZ5N5>>}JpdahkTom)Ipfgi?~1Y?Nyw0DmMW;xU>gBT zB9qSU(KGg7_BguDyj{jz!s3tBiOW*7240ruSZHS`^P>Z zGDExe6~Z$3kT{CAh}i}aPCL`2BJ@*$6Z#l29QY9?*7_1Zr9Npr@jPte9OC%nH{*t2 z?JseVmg70fc*ZV~AK?>HP*UMj`fZ6xtR;o|T#lnjMv72w@X4nPXMId&b5rD(-ff>i z3r#8i-D(z38*%}J>qP#oLa4#38@$zv$_x&~9Kg;#>>%PH_qqXfZsy}7F_atEb^>+m^axBUM z@;N30w!Y{t2)^%g95aVEq`EPEl#x~k86p_!1=srF!?m_gAH6rFUc2h$dhTw{H-Ym3 ze2>$X*ZMyZNpr9Wj%KPuMOhi`Q*OjAIi*1gGegf;{iPpoL8QWR%LOX;&^jqv(v|Fr8 z3^)!tD&`H&6&hp236{s|IfW&)Bd|5vIqpWfb`0$+OM?~mj{!rGO!9(^#K2!$&VQ0Z zN~EK1={P{hT4I}SHU{?11#g6%Z zw^3HUvT&2~L4-))Bl>s~yDW%H@8&uGro_|6Q}Yta8bA=u8jODk*|H(e2!Z82DXD9gPAK;y0bz(l2U?#PE?dMbr>Juh>fJFAAjiYf zJQw8Nim9rl=&4kzC88%TX)4)Z$fCQf@xJa#mIpX4pC{3yKrg4R>;|k-6;%7K1Wh^P z5mp9aznF${MI1zs%kah_0=$9UgQ>+DryL@#8%8ocL{?R$U3nHec*qJxbW#Dc!l; z5#Hq8b{$bun^4FS^ATy_Q4pIEvf@74y_x9Pc$4TRbrVbzWZ_zn0Dn?NvBbrRZc$YD zCUQ{`zA>2IOuh7{eP^c>&L&CSORWx6WDI}eySynbKnzMA1&$e z+cWarG;k%UU8&vp@v~$38f(W(eL!teuUs4d{)EaW<(%{N5x*G9?7IXHY1>>2z)BRD5F)lMqblAI{6lVDBUS_D7b9wV7^5v3Oz7h* zfB4=vrbPP#OkpmNNGP`?MhW4rJ|ibrI)9FIL|N#3mPh>Oq`bVI^!|AB@TSbs2)n$l zcA~a}0Qd%{_;O z%(UyJ6ZZqE+Sh+CXgg%vN1pTws0hjnE(;8`6STuSYdRJDyidnB?qY`zEtE&D0!}|| zL7~Q^^(3Wuxdby^1)s-wyJlSw?7A_QCcC+MjPrrh~Xe*M@{bhSZ0LR$P+)Vy0U zKQU5(({sT$D`dwB-6OmVS)qHiLyy0=k?WZrR^cLjRMCwPM(By2~o8Q z9r(F+zdaS6U*r(`$rvX*bU%D^IeOVhnBkgr!!uqvpayl_7`}dAo;he7<9H%m)g0x? z^0;{%9_#?lp1vR=kca`sf~bcP3{5cn#e`(PcW=HM?Bg83WD&f^r9JXIxCh`=^-3&4XNiyTPw8O7mU9?3e;7xZWvAtsagH9;=VCX7El zJhUurJ_c)2tN&~;c)R_d+>Y6S??B#g$-nEAyKlw>VDz`>KEpq|65k+W5OX?);vZi@ zF36WSA8L{_O6f{Ze-K#cS}g7}?ynNK65^-+964Z>uMDvrgK3bF0A(?(`vv$6ZG~eu zqF=lJq;7vI5#Oas!JgG>vb;VptRcc-L#bx;e5qzWO++K*^ zbfBb5bHDvA}ah7}Fw1B%izNIaMbVA7gE-J8& z!al7y3H|mp;?lc2S?GVv9-JM||D0TN?Nzn%a-JiyG)uXW@_4_J()Ch;h|!-39ivC! zC>u=O_?1uv-VI2|(!1vqndM!5=6|z03Av>tHs zMdQq4-DI89<$+~WcpJrfu7`p2T80n%m6605EiZ0eJnA_5+lR6byZG8^^%RdEK$aX*qYgzY65fx zSG()4TZ~ESo2c&AH zmXL+l8!*jhjv$I89vrV3E z^94}w)wtbfk^ptxJ^knBo(B}4DD&UDOqbBe{jL3Q<0Pm=D;>_5XbiG+K%*WJLhH-w^+g`SI%CtCmj z{jZ#qxQ2J`>H2bVH8XCIsh!!zTUs7Q304Gy9L@6HTkWI9ryN;?m5P8nkTC#|3oBTD z4*-}jBG3Z1tdS%DebcC6fS?jQ)OUdI^tcFsco`Zb07aY_Du9nH7#HBo{r`NhIS_01 z@g-n`=?(;@-netfBnFsRfHye=Pwe7J3(up!V8&fR0hKQS;3O|C1<&oMr+73|L2Fo} z6Da0nh9LbDgtuOlP@i@JvF>oqEeXx0%ZpnVEMtz`d;7iUwob$8Q&`{k48rYgZ7-J| z!Obm?D79u;jP&at5gDPM1lNr+`dp=d-U|0LZECn*Zk%iRmoTKt=y2d49J2zOK5@-c zwEq38skQf_YfS&ZW|3`_kX)yiclgAx;Z*XVcROhld~sS>M%-R2sZ&;Rg1>yzb4&~> zV}8m{(o{dhH}KJ6`JD5_sLjoDH*CK!Lf=%`weNSK&S5$?RZ0yyxX&72AHL-KNA+M_COTMY+|B`Q(&F0szxLEFsf%q zR$rFVtD0XSU*v5+q$)2`sIca&teRyjR67k8@Bdu0DS?(Vc0*2SnDgEZ??+K-X;AUs z*&ikkApw`UJ5afMCMr|>S`@JEvT=BH4c-!{Hw=V2E$G4~=aL9%<(Ddxpw)~-kAe~} z-Cc*()&jd3JlT+A`a>!Dn8mKUx@zAHiTiqnJC=1$Jxq`sH-1;P*>Y4oV8p`AZ((DO zRT;Z?IW(~Vuhaey-{@~pXagf=Xm-e+BD+m%ZEirX*Uonue( zE%1=A5Z%+lA6$)%vh_CI;|g3e_wP3*72Gb*E{mtlmkhrINSeKJLFi1`s_kgn>WCdg zgu3R{8G$|c3629CoZo5+jn$hg)@;I7zCLHj3)31Eoh@^^uW-&2n{-=wZ1BBCe!~b$ z=p;t3p7|%TM%51wHp^W3N9&x#^rK1YdzSRzz@HM5r@|T>fVEM4&u6?9!KpN#v%=y2LYJ@ zHb&FC#~T3jyLexFgG^l8&)k2_7aj}08rOM_AeGpa)EDXbdULl}tAUrO=f3m6`!$r6 zfTlfw!ruzb-uW8z%n1Y|y4hV6iLiJLB1ygm$IOux4&36Zs5)d5o}Pk4o(VG!!!J5u zQM<}ndcY5_(3sX3{oeVOY&PGvm`d(!?dpj!8-=MVuC(?^t9 z#Gn3aQ2D+<(Yo0X0eqzYTmGMUmi^!2@te6fAhY=H4jcYDdrmhRKsaX0_7zx;u1wK$}<}@1Mr3cV2s@j9Qv6d9ho!n%=4HoSBnOAy&kQw$Qg#kp4A7Ix{y-m|QAHF{q>-fDH z+XSZ#9fB`fLFgaK3o#qImPBwxDA(b`R2AT;xja5Ee!iY{*cD}gjfMio(gK|#Q1{!* zXD!vz4Q--`I6jw~5o5P-=nGCob5X zfnJJ9<=3>y4~`J@!~s_aml0;9>V;?IpNBGBcA;GXS&UO(^TwU z`Jc4a&m}6bs}#ERVE-1<+S#{j%MS|7jhdK8ZfbrCHA*XwWpFZ2qU5hAqJ}wD*+f`+ zVWOiH7Gop|^La#mw@O_OW?2!{lV}NG8u<7OnWz} zVaok^>ca!X9dnfW)bjTXs}-&5PFy2?okkq1@6l@O6#=+;EPHn~r?$44QJ2Fkr)F9= z1snLKDb9!1%k>WX#~BVpH!h2eQNN+Is!&Kfu%~;n=U#OLHUN8&ns#UPb%fU!?{rjT za-j4FrcXqytE~q@j60ydZ56q_Pf@+Aqg`4f>f9pu(8dU4h>~P$VxGv*XRW)(h!64h zbzR%HtRs3^b^bbw^G!LUTN_5HjhaHWj<7#_%sLII>aVOTSZac}BgxDa2g~j^tt8~+ zaT{cWGLg>gFMJ`J5vWZtxE9(I)q2ocy^&+P zJQrQA<&xg(bUs?MJ71K2z_mWZ(5?>{k5BTdvTUmkpX<(7ci){m%DyMrMKHB35j$kK zsww6l9DlsKbJQ8Nz_4q8H1i4)PEk_;I~c;PNm-dW3`p)H*NcDW8%+CpT{KGGR7c~v zWu72@ybGct9%cRgCDB^IZ5@f**MBz+>uKh89ZjpnC0Hfi=eK%3br@QsSFB~#pHgkK zg6iE`P~pB|b>}cNU$e8^9_+j!%e_BQ=NNciUB`~wZ~avycQmJG1H%5CW@(vz3Xf}sAv+_m#n(UARx6CMAqQO7y+6RTQfh@rA_ z+Ei<#b#bAoCs|jl3H>P^YTbmBu%?ix{#uAzU&sFR-bTCCnS*fLZ>Pn-W^nPoMoC+p zFZ=tl!WA;U}O|X`ZVoY#xVP$eA{lN4UDI(u6Yh*2K{!z123BzJ|_z;=E6iydj5}kWAsj4?DGYv#A1rsNr;Vk(nvWAn_ zUE;aid<}3vN(60fa=O(SRqJSiZ*HtDVr*5{mAk9evurENIh-qdH%x^q3t-w1=yK@# zMDFR5sZD=qzoMV0*M)0!ex-~;{;6tqsyZ1psqK!z?YhRzYFzbg`7%mu;7VPC zE5NcFO0(iQn#wurq5joFkr_n8H=T1|;}8q6)Bz9>nE#Z!@nSWa4|W##Ps%P_Ad353 zsuwGV7Nh`Xo-Nb8HW2-U#eWXxzwk7ed(cBDQNEFp9!jiV($@Iz F{13i0xibI& diff --git a/v2/files/textCleaned_110.png b/v2/files/textCleaned_110.png deleted file mode 100644 index e87e2e1a91abca521e8b865c6eaa659c04971a72..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9105 zcmchdV|N`4u(o%TG-hM7QDfV-ZQC~5*mjzRjcpq{ww)d9SPl1i&inoSdS=bK*8K~v zHM3@-Rg|Pr5D5?g004@tjD#8h0HyO^wuXoLkLqnz8vpR9T`uNrdf%MG2b$`5o-Fv++TUL$i>slf`nE-h(W;!}73UDGaHdN~~OChr(%kgN> zI3fTP+Ap|!G$|B=4~`BD0}ul;Kt_SH;1|4odJ!=wJrg z03wS?gX75n6F!Vi69tPkoB}BpOng=J0ek&5XF~I{*7{XcoQ)ILdUlC=0)P)xvdj~7 z$S8c#y=3Y;IxokL454_1w+QVZL97XJiZDizD+h&u8aeq}+l@a=tnWuGQ6GeQ@uE(F zV*Z+Wr@^voFCL0wFf1DGvvBb?I5TOlLfHI)qCO5OGf zyp@QHe8@8w1n25LkCz$kJm}i@2aP1Q<(K#fVHw?pgz|!>-b%x(>Fn<1v zQWu6o_})wunSbnVAl%_QiZ^7RTzcK{Ebbpp!PEELwac5|@Z=c5U@?TGs7><*avi#b z-2sPk=E;T4v2h=3gS1%XibLl>l~2=TSg*d9!@;n&L;u)LuEEHF|bXcFYhNMN{7vfs|Nrl>D1i)K(!A;|9` zXi1-nFN;IIUEi^MH^O;t@I{5l4xELLjpr_=2D@UK7EYG+^fAI5_f&JGjP@YJQUMMZJtI^z-(aw8w?41%jPe7 zg!82H#M5CXfCZcH!`}j%napz8#6Gl9ia*bvW(_{yeDw7oRf2tI9N#!5`&w>ZFYt%@ z3?NJ+H^wL9gueRk{50n<=hT&i%L(VAEx!o>q~}bP7|XGC+k?TB`yXCZ@A%VB`fX$q zO8ulH9T#rwZuSsXzS}m~Bgf!ynZmX48cCCOVK9KVe^xj}nRNYE;6I?aESp*YqTAgh zz~SO z@Vf{VRYKIWu&jqBA%h=A&&3KsoP+V}#{)yH^nYm&>lv?p3rCl@z(Yq%2*XN(oe7O4 zBRmSHP=TcvCAI-D{wDSa9owVxfi)s;VEt+}AfN+Pg$}b%W*3EF7U@H7D)UV(WQmM; z9Ix>wm`r;d^DbPhh?bT_E^Ohq2Q6VIV!C*X3g!~(qX_gIEytH>k=@_ecwaG1sIv%h zLM=@>bx2!7h)vMe&`=`}_bmP)=Y7Q;9Df5tQ7p0;tw_13Y2NbG z&x6JfUNE#k+S#On)c{X64tA92Fzj|{*hGybJL?ufu?(g;f<(t*Grl z_C)rC#f7FH-xEpPuVfay=fdNaN2Nq)9Zz{c;Y!y&)lS&n)h@b)<%F;N3pDa$Pw~d- zpGp9Q5T4%%wEZaP$zyi(dSo3hjLtUo%XCFNM9OJyFvkxK;R zvL$sTUqamC+>&ErmhuKe|CIUb0&VOJg+_XJg3aQhbMs-hu@8#f**r- z#je2i2k$FB3chTdY}`m38eVx;y}}=b6NOL(TZMFmK!tlCGEfev1Z)8E0&9SW474~H zIPMuH8BGkH470jgIvu)?x`8^%jam(;jh_~W7K`Thrt+3mR{o={gEM1JK$790f}YS1 zPPiQLu%Qgfh(p9N=mcIRY9&RbZ`SnI#2|U5EcvjhgbOll3~lCBG$#@#^(&UEsjcS@ zkdKbfgAbH1o6m-il@GqJrw_CbyU+Dq(1H2MA_(bZ>fqui7X&)sK1@95o7^4iqbH-^ zqfMe!VZ6~xQd3c!(`FH`7k4p=(jJ$iH9GB_lQ%^)-BLMADNUJW zbx!TaUj(T+@f&n4k>_}x(2qmsjOTqE8XOdy=N!Fua`v#cS~g1d(RMF3*!GHcNH&-) zb#{ptH)lTQSf_CpcNgD0kvwZ9`+}5d z$$wQVRSQ|e8;V_9ZwWEKU<#*RP~VqLmcc1rXPW{UfHS#0EFdnL?9ANRYqjn4`l`h+ z6I178$J-gT!4!vehp+mVjh!Z(t@=LRr&qA{CXP;l1FtRd6^iZC#QN1W@s0_XaQwbq zK3z`!Qg4Az*iZ7Pu&CC=M!Ye+QoLR~^L!or>HHraTy9Fh$$f&ojnfEs zcefv|Zw+HUvm=7)SCdzCSF?f=f@Xq#Pi|n8oz2cfFH+ZCMdi5iChK1yg83XBnfHCm ztMm&_Wi~29ifO+KUu&P)e>QI=ZvhX>Pm0g^Pm51od)$Y07lmiSxF&c>#P#SlI9a6s z*vI)QIBeM0c-#44NDuHAuqM$7ur@jht%Jdzp)3>iY4x`*@i(#i_ZCQQvM^Zt81r}& zKMe}}i--RtNGeKPNPr}m$9P7z;z|=y;x7fsT=$Mb6J4oYS5g0d>h8Y&mbl9zY$ z)cOiQU|uEqqkB_hXqXGPWFD0Q)2K5uvRl1kJkIBBUlw)Cxo7_sobgw=Jx%h0JLcSH zXD}o~f%h|n-G97G=?nRV8G}p7ew!Rso-MzMB@Y5A98^8#BhAVWuI%krC*^tM z7UWjs#pTDQz>|Danp0Ch+UaMEBI~3L3p@6M4sA7g7E_n9o_q|<-Uq&(t5(p|L zE|G8wX!#oKR&DveMc<`v2GR#UepG(MD=!yvq1m7`qnx9*qT!=>qU53p2erPf_q&gQ zD4Dm6;}U%m6%t_+nY!bGI$qDm@vImgIkzu>+y>5wyD@z=B-;4S`7Al7f!2_#Whz^@ zr@-O2mcK`6OQdYVcR>t=T3Jrntl7S=wzK7b*X!4pJJMz!3f=pn0y`cxukEk9r{0&K zd`<5+|4KfMEL_X&@&~QG`!r!SHovlaW(RhFGdJq4utDjGRjl^yE!Cd4k0&Ux@eR{S z)6*;z+3kVYBIMXlk6-un=>SW$02ZOIAt_cgpjShc@ndMI9i=2>4kVglES1GmC}a%Y zixb!Qf9hC4|2azmhR+U`fKQK_kI63xR#pmy`iB*BhRzC-gC@9#XfaQ?eZ}{t+aX}^ z-3^K_Y(=bK5QBn7;(qvixKPHdBx=F2F~AM(I1>ANnpqmZMuT0%c`|`yPLH0kC#~n% zW7gw3@)`UcI)3WK`>ujFC-3_^Hn+22;%BlV7Q z{~3ltOyTQ-pjR>dQ3L9!@6!y=Qw{4Nw-~pJdlEz6{5}_K!*Mk#t?HoZ?%~pI**{vp4a@woLAdKH2;v>WKkBxEH8ByNPdd=sRj$}cJc^*C zlvQPRpVV-WgBhlv-3M9nUs)BZs!|k&!4UWE>gMXTdDZ@ z{h{H$N|V#zSa;u7PFb(EIYImLZ4)NhjPGXdXUhp3U@Ia%qCO%#qTC`qp&`N}KcL+q zP)C4KJU6e2tVo>{TVq_}A0%sm2&{As)~FW4hC*3{g_%jg6?-lN$zjEk(T}o$6N_|N zhfp#CNouJJF-k3kLGC9Y-kkfevr1eB_HL$8tAZYlyybunVShG|HOUBeLcj!6d{x;m zCCSf`$Xd%ZjSL|Mf8#H;?z?l<9<>zOg_Rvzn`+MwCl~tcZNVHO@k@%}=|S%!y(N8= z4X^E%4$#`wN&~1@y!-{ahUv^{CbB*9UT~I_Q*h=iKKNj#e0_Gl@BQJWzh(eQJb8#| z_Mt$&Z;#lN&@yo1Ud~M6qUD3IuFdJN3{&p;h%MCgqa| zq2O1<=_V$bKz6-{_kxFFFIz9&3+(~=O}&wb<5tLbQ5uUc@njftzu2S&#r^;EnXA>m zufgUCI$;>g?Tb#xyri8Y4dNklRjT}I(n_GzD^5Y>K-3S@aQ29k z2tq0DcxXi*#R!GOT-%&LuGw8n`!Bjnx_-Lz`hsiuCN-uXizgY3_#MIlEp=}2o@rk1 zV2v}P1Bzp|OTE*R&PdzYkT+hmw;r(n?q$`TfK2nv!QHEv-LulO>ofL4{$tk}DX9sO z3@#6j1_lwX88$uot3AX-$JPf=H@O>Y9xEH&5>GLTB$_ThUU-kF+%Jip1RL_*^kME} zC|#O~STF}K?I^7}Sb_T28_(lyJSGy2a7nL>J-_Fp#{zy~lNG3Bmc77O8RB8eV19Fu z3LMLPZHiz{v`9Seo(?SJ4m`I1T+mdJ(Hu5n2vV#XZe8jF%lK+ZPCs4|9;WwI;@g+l zPhY${m2J^?eAEZkCilv=@gC2p{7}xl-k$W2CC+(H^hEVQ@Ej8kcpTqzy~K>}eJ?-# za$xdSKiG7Fd!)KhW$(O2Gg%&C6&)L<|GE3})T&ue4=^|qWz*mTfSI9O2zbdP`k?yd z5JFHm0jTGIol+E&G9Cc_{kx#BSFaKqfQf2TL)6XI8XZ0%1X%_3Diot0fI-Ge#Z4s| zt%9+H5cu=23GW)d($A{>Raz)HLhJ~7srWx@5vZSF#pw*H5Fl>-<2{Jo|(}W&YWYM z5^O-G?$U;?RiVkFCZT5`)oj3^V;~x!`A3>fpI&1_Cqmmw@hRP)>YeT@n&j8-^rg1P zB#K)#5fvEYxu@6f2?CjY*4kgw(%a0;4xjSHA**GncH2UWFi z|6S2`%yEbW_wuRm%ki)CjkRO7KXul0%KQ6VPVYR&jh|X7Pu>Mx{@4S7jPdL7N-*-U z7P<-wMFFG1W|`%2fBQ~dvBIjC=K%* z>--CW*hLZAALk+v3k4npHQN2RsR++eD^ufxc2}czw=F0m%wQ-;o>&@1f?0@K${p3Q zz%ofCNf_TgYzx4X358G*hY`;4OFrJVqF>;vX@rPW7HgtxzU@!mj9=lU>C3Swvsyz} zqoMol6S4EEzSg zq*J8vP!^JN=Y2c_-n!F+gbiss@LXhH*estsoFM5dVV#47BdhZCQ|CW6oCW^+8L{g< zgI9)Lb4C}Z3m8*s?!BuvKCW|x))t9(QeXdVq;`E2Ln94kfq;}y%%!7gI~9pleTPAb z*?RwYgci9s-+3YS;ILbY_nrV*ko78aPx>8arRT!vv?F8)fR+_P*7(F2$}9u*vd4rM zIX7Opiy|q;I~Qn!Y8Cpp58qByAmUp5^!rW)(?-<;?-dm`(RDPDj}?GRHty*?8;vy*I_ik)tZ%(=+L$W

zazyp9d&3;1xvW(y?nyEKtDyJ?QFx)0(kMz9*a~iXjG>vKsU}F5f3v&(zQx#8;F{rJ z;nb=dlpJ}s!=&931MC9+s$;pc!r?Z4YJ<5Z#+= zq8!82Or=gNCCL<+&+lZu+&mj@asb&aGBN`V1YBh~s`xj#aZ|Ok>hy0KSsJrW^lbkI zt>?!4Bos)0uI#a=JGXP<-8OQjb!xQvTyg7AyuKQHYI^SAXYaJ>QhuHj>Rg+;FR3=( zx83}`KDWnS4x*$~D*mX88+Gd05B7HmxXRx=8ei%~TU;z+Uu^PnUoHgo-A&sw;svSe z9_hco_q@RQMw|aVq`3t}9`7ChGEVL@sy(eqt5&O%s`jdxujQ@7u2!s@sw368)-hh& z+hN&_+Mr!K-PYN`+Gt)EXxHuJZ9ay;8%zGWJcOpe1BCcCb#%}|0howG9`AE=tA6F? zUP#I`vcmTF?Bzq;TW1N5;wB8Y#1j9xe;x*>L!gR^S9)$H-|PSYBq~`6Q4OEG%k9m^ zLt12!c?-KwNG3bl-$OGI_%DNdHg)A!!?1Cz2M1T(!iBR)fRKvMb;JKo4qg=KPyjK? z|9iZx{wR8Wt0BF43Fy9q0uWt&1aWtLIPa~I5N}!iG}K;*%K`ZH>|XO1R_}v{F$*_o z(lX6EGC)Rk^UqL^Qv&7R1Tv+BgB$zGNX@#Idpd>( zt#uovW!Cr&fI3k;Hle2ntz7(evNY%`A+UeZ?0I$ZCc#T*batZq`6f=6z&8RANP%%5iA7nwxP$iRhZ zE2ZlEQr)I4?o9;kLbAfRv&24ly?7$;fN!r`hhtTCMNkU1y)m* zbQG<`f7}Ah`E(Hsuc|G_|2!j@t>?&kV$^xe^N@A%-TI9Tb;fAK>aRPL@OEQL%d{-{ z(f!iB{2eU4)}mrAY;VZtHI1J2`PfglYPlT+=H}Vys@04+X|@%57SFNdovbFdQgD$c zREo4YZkt{n-|<%^JTDz#c~Z?Vhw$M#|4TzH_RFOmGfu=v@Vz2I4}ttl4yTnat&Xx>Uz6*KX1%ArjMgachKqgH1E* z!Ug*Q+Y*%)fzii@Tuo{UWUp_sr&rN(~;+ zXdTH@!?XO`y)i+N!MH7!LmuUmKbYlLuIPZ(#UyL6jR+yD>M!*o|2QFH0}6cWVUM*; zcW~53WAtr5#Fi6p8KW7m7&g0n!fjPw6=M;9)A)}QGuP0ri84P@uzB0r1zvwYq;E=ax0&DXDfKKf(+rb@(+M7!-O(9*Gd@2B0oH>=fPR?1yICE!h- z^*%A&70ZA2*xA_-4e6&@Aj(#yr$4fpsa6~Zu`wRu)rWH~)=Zs>XTJXiP-KZ=;f8Ol zUsvAp*F5ChGAPLQMJvFwbUl*6&s8db_jiV~?#9C(SUI0d4o6%6swa5s9n*PC-Ff&l z@aPOZrJ`?!V8yDE^9jYP4D(3fIb=XFwS9TN(R=e<<;8%?$n#QM5O=Hsd{^IIbvZf> z`k~bo6ySGIRgTGWa?ty2&VcBfxv8%i9}~X+PL~_*qf&Jwig)h4QZR1q=y7O(XD=I{ z?+T@lCRlKymT8oHWXH^tvhc5d;9VNA*C%naL4r0GSgy%S#1X7-HP2wpSkH;uALwkq z1tJ36FvLRb4?V$u0kAU0gfT;r1NH*sjsKAUr@#cRcltt%P;>w~0rM09AZ9KF4}gys z`Tt=0ew8LI_+?gj0pJpb4e|G6bbWqk>h26O@K$9Ff@T*3@IDv*(tm}R>&m@-n!g(; znC<~s#~8dDWHP$bh8pW0ICc@_?MB6fqCjzTAKp_z6F}xcote_XP=XJH&ag?Kvd5XJ z)O)`EuO2GD21el~g9sqQfH9&EXH`%ZE}->-AcS6YL@7yAXxYNY3=UTr)edVyQagya2A1 zvCS5+v}UAl6~yvP_XPsgR>B>!Ffxjxn2&Do9!KRBx^R3)o0v> z#prc`xNAOf1!tUJo2k|~jj^Wgp-tVy$vA|_UsHFN`PZa%%uI(dEVWH*%eYp|ddq)+ z=r4U5W2|y~ns(9{A_|$NqUAJN9okByxt@dK9-Zk5O2u-xxf%N`4=X!Rw0_i-ju1Sr zMMR%HJFR-oM=oW!uYOIp+N{Nv<+VSvcu;C%ieIst=5fI1vHBFk=XW|ZHLo2oJX_YS zGEeDe*{?;&T8*v?YBAxyG+82*tZGS7;+}TTH#JVIr}Cpss(=1?h+ue z5HU}g*jAsDW;HWnms7Ktrum-ro>b0N^6+EFqEb(+WaEZ@6=qj#pY)c_?{HpNZ90;qo?O^yQ!ZAC zz1y|x_bGXF>zJ!C={leNo(ggVe_Lq%VDsLcJ%5W^UCTXrw0_>G&#Vt1Vf=Fa0g0Er zogHnoZ1MB#J~Qs3-(myvTd;6|)9_7eic0K5j_JgM(vEpP%KTaBo?wZ#PNkLRY7(kK1a`$XP- z42zugouAbTpOc$gTd=2YC|(P3)Qbk9x)t~pKb0>Y^UAKz&K7xi)$mD%V(e9(vnDv~ zoijq;9am4&RbLcp+STvnk<9om%9_~i+#}fiYuvZEDLu}xa7v9Sg)+=3r{5eIvPyUC zwqhOojODGV*v~k$M+$eQ*J+fY%U65t5^9L)xKBU*y&W=J=IP{%70nx5Bq=c$1?p+| zYGnMU*t-q+PG(sDb;jjPd7z!EF}9RAoTSU=uhYB^9+IoS)Ghi&U~Un>Tl+=28HxqS zO?l1}UUjY|IA5_1gRN=6R zR<4y`^W)wAA-Xk?4IF8t;YuZu^^CANM?BTKjO6kTtL6c9`&L zb&+|%DDIlH6LFEK1ocO(VTMaJFe8B3pMUMe?9>|)ZPFbM zru6a!PO$;zM%qIgX)oT`4U2rq`&>(5#P$Zl9QKjBT3HycYgDqmgqvtzN6_w}lponI zoaN7)Crcu?HUC6L-%KK-eY??s88iZQC&U)tkbU`2sEPmU*8eBi|9fl%qm{gv$CUi{ QiQPn`qb&Fj#5(iiH1yo3;+Poq@~1F000=R|FQ)l%zs<8wQ>ajz@xJg6H}5F6C+b{ zb}+ZHH3I-Vf2V3A@vCpPZXT{-F7i*_{?9}}OhBhurEP=auqxAZ(&31iqgt7wNm5a$ zIK>q7e<-N&H%0DW!BA-Tp8*;8e#ZUPl1% zgh`TmfDIf(EVz|OdBfmg-;g2{EAtSh>m!IUB2E^ zX=YDraRXe-qjp|IW>u?Y~o7>uG$>Tb===w?f?Ow0%n-zyycDD4t+U!(KC|5A+E> z@4mR{PYRuwav@t2kz_tGn|=tpZ)hISZStSXcE_<#xVaD1*-PhF`H1A00cWB}iIJ-& z_2gRgGn>7(rOcx#k2s?gf@@hs0N5ML*GdTY6~2fd*^Yxy$hih7M%>gQRK+8A=C4O5hj-^sjHkdY z40Z$^gzBgk@my~yb>Yf_dFb74;X50{0-jAMM}L;lKj?{wXcM|513ugvkR4_3JVdLt zSoVmN@FOYWIS~JES3iG$tche0mM8f8KG$MTp!f~gY679^FE_>bUaOlyBqURa-x5>Y z#;oa+4&gNEH1T-w0bs_Gdf*he^GUS5I9XXr%!7nEea;D7g9R z!}3JtNZ`#<~d+Euf<#kqMs3ccmljKu#5FR>GP?zZZs`qGSIwF1(qKgZCNB zh$e#&H^|JGLyNQ}kk|;g1VoS6-7+58?isCP{`1>_7ehfewh*@oj-_O z2F)z8L9)HTSJ`xqT#bPNOFgnel!LN|L^Q7OKnXmh#ZH+8{2n(@iob#>FB(w@EKn?H zoHjf1cBS=36bQ=w>0ng$Lk~|n7JiUuH~6}Lz(|E9Gvf=y4gza>E@zxpr^Se(fn6D0 zC9i2q_CWT4%?Z?v>y9A)tMDse%aPmtH?$@4*kF#p&d>7Bf3y}cDgG1E_!sO-^Fw#mL*4}8Gp2ji%PMJ=Sp1j zQH%IxG9|Pno&%j@os*)YWddb#M$;GqPY~5{)zRj~Dv&A+;oyVedK0%4A}M~8gT7o~ zN+QL~&COBFdC%F;CCyosjg?=jf(r~vjEj;Aew1F9@W`czsVcHb-G-$FYh-BTxii}l z+0mTKulTR<@FMeK@`~|Ntdn;TbSV_CCGbDzPMzKJ1w2+4qd zZgIKWi z*xF>af0Utd*6TZ{RGUe#!kU;!ro&oV*_ucVX0sfW&Lc4VBQ?a^~i7T>mqOtTmbziJP~N?xVlwZ5N;g2 zEkFrMDp#&h&ifHkU+C0wO^EdgODN@(=C)+C1VR2X(-^`CnaJ*DIpn0xOwXRYR9R20 ztDFrsGImI^yPi<#OSWCM{j7W5&|$>UqU-5#bOCQ;WM}W!`_dd&Cf_zrtXowbXBU5t zz~|NJ*=g@1`Rez8^B{{3k8VM1z!S|Q$>YvF&D+kG%J=Td>8#*E;*sPg?dWwjx=paP zaun|3;{46&wSLHR@}Gd}#pnh7#iW3^z%K#s2j?@ijn$3>cT%TKdBxb$MvJgRg6S+R zskd#ji_}vNMOG?(igE8#FALAfC(GBOSKqt&2l>aGhuMeDEw0_#)4XG$uSR%@#B~^! zxEZ8RY{R@|?3QdxJZ-#iq&xUC*rON(*emUM76E4;K`bM6pt@_vxT~1$TT>KgX*ld{ z%xS!lP`zBA!ht{W67u4w;)mkQL)`z?Vv7^d;?4!goVNCY5}at97SaCzlhNG=Zih(Y z@}#B|+q@BZ_uR^M>$bM{`c;3*C4h*F`3YR_r2pvs^4@u*IxIRcz1X81Ng0w$&{r&w zCNJ&cuJPiB!o7(9jp|8>re)4sle$;%1JR_XWwy9SyPiy2JFa!o$v9`jW?KaBF6 zwNJTBPM+p6%a$r8$mVq!xfKY8FjI2uzW($3>cg7KddsYA5Z%F^YnD0hseN?QK4!E0 zu{`OF>RjQ{?yPw50lA$Z?E2$T%#g}-^GOnq$ZTN}fKK}79O{k-;V|6QwMWiyjh*ZFztw38+RB`o#Z z@`c6+uN(>eA^GNP_0~{_{SEW3939|1X<44bl>?rGs~wT$%KY4P)w1tvJS1lZ_ap7M z#=%0P9msCPF56@G;-l@WyF<--tzUzQ;ZWr((_;jm9p5X77Qg3`*^C=l7yNo5b{_Fv zfIvV#VUC1@U&BjpvvSSnHR>j1)sMmN{=MQoPH{eu6KILngm!}70>npiL(2vV`M10- z|8*HUq-0(*j7{)NkV}A1VCstXZ+|%%#xrNU=U6|5aOpW9Z$^WwNi^{ta#*sC{4Ags z^Hf&O4}Jr$&Ec;!02aZ|fyw5yhcEg{!~3w38w!c2>?pK_*h;fU zFsPV3rw2}PPpa7d|1nDrj@KHVfLDixm&w~7URn~3=9@Wln$`k}t@>Fv(d=)bwgs=N zE?eKeH)j~$;04j#K1>Q)@!Nrufjp^SMUgXh4Zh9@`w=+QpkE+9wR-FDlOzI(tZp4c zH#)cD`;7Z#)Fm{YSgp8BIZOHLl5F$MaSM;`X1s>82J0n#^Bg;u70wZ+3BeiiwI6-- zgU^X$NQLfTmvJW_32Gj>WIEgjhUtdA58m}DBo4_NWFIE#qFxvhSGkyuC zy`+2W65%lx4iPa47O~Hku;^M+h}ZQvl30Ww@dmd{%5WxCGNX$ekHl`<1X4&!NqLLa zo@#rk&je#0me6Ic|BI;ZpdQT_^*H0>SpD*$bF}m6Es4HY4%iV#e^`Y|qso80YoK_p zma&4reg|^@n{biArt(7LaWQt0X=7kxr|Y|>!`jvg-i&Jz&-=uD+H7@_U5!Wc<#kKQ zg9q{BWx8vL0GWrE>!o+ubpI^dYuQu13v)~BOH_Z#e$Scz`bT-`SNK?j1^7!;YII$p zUB8EYuhW=0%pv8C>Era&+P)#|p&oFJ57vXm_W6tFruau^opkr(-Q}kIyg&ELw0V}t z%Pk~Fk=BCvVChg&$na(7LH+8q_BjCsC1z)Hl1Z9rwq~hj+|J(q)exg1==-*p8qEsa zJFIH-eIL?x$+bFm66i&(56-&}`JQq7+e)b`@Msl}0FN+JCqq|zMcZcyeyNj3hv&52 zy1n)mbe(pkzYQjHRH&0G(|wAei^<6KtP^k96Dz02$JF*|7rVhhhK-gTwPmobSg;nq z7e-4isZ2|4>4{ISsUt}dtb)#Or5dLz$2qk~H(1qW=CqG8DWDi#Pd7}SJY4vmrf^QT zQ1S8kz#@G9NluGv(REufX0h0659`CbPMBypyqUh8DZ{^mBaeKKevfpIc8&4?L`Fot z1KuFfgrA|gtzHtDliJI-L_5aaNz_1)e$dxjpqmcp3uX}Jr6&fIZ8`QP1s6(0-Ant8 z%+hDUc%yBr+yWZecISA1n;>tY%-&+S(GJ@4BtGI?>`0eibZ*?z< zSW-XJ@f{xwnavyou=V%?MFNLT{u_AILkQGK-#uzCo?7E*W zT8=j^AA8bbp@7kjH->_XAjc8HrF~M zx`Eu^&eV>Hb}05)&vlLtIwGtl17CT7uia-po9C4`{8CLEh7 zjqj%3`%`~15esDDf%ZUE0dh29uiW?7aabs{LPb4NHhgaPt~2;~jpm0%lWe($icnW$ zMw6?Z6v$BeOJg{5f@#8j*SKFEm*2k4$Bep?l=^@HqrZIRK+7EXOv+0`V*LJsa5oiP zfp1e}Gk*GJU$Vx~{$A%_lhh;K%CkSA^i47Qa(&b%hB)gn!42IN$!$o;_kMWG=^QJn z=dJYU(~i+=U0>tD*FEK#N*jkY+R@T*^Qf3$-H*-ZhZglZ27un42&)<|;EWl@k${Ix z91QbU1}PAY1Au-4*eFIbD&Yp;-@XY5x%Vir0+^^))kK`FEHDt`15uUGFM=@Z0GMPy zsJN&^qLeV_ko-c+jd+&u6+$bw7wKSR2ywz0B;)=ZCla00b$srQRqhoxsxjI4m06Fw zBz{IrHIzIQwo~C~n54&m8;}qzye+9LQXgb0J+Bt4hEPU>m=;Q7jda3KHOmvW$4Q%L zdw?py<|i1!E{0Nwv#U$P%9h5HEfHQEGN0)d|2-)ur#r1b-XyFsV=UYzr!#pdBt5M) zggMJFIY5t0)v*;rqfDJ!MO?>JvPq9oOHagC{m)NUT?Vxkt#D0q`G-`!$~XGYK#9-P z48>OaB&pW(w#_Lg*94~H7}bDtK#s7!p};pkYFKnJqo+^pm(BQ z{VUtn%NI25vTP&HdU%!iWcZeOhuW~)9y+Q!WPLo($2T5hhmXt@M{oSkzik~J8sgXC z6=D9yp6Sf{4&mw|4`xlqbE6ICYvGxoB*~j{#B{ zanJJGupaK=TnDdEeApn!oQ`d-8&xz^@ThWm>$Z@0<6B38W9%o-LOc0MTKErqoV%c} z`IlGOUwtGE6P~-CIh~H*Hxg#pW?e81R}M)1I`8y9elE`(G(ebNaaPsGI5OStUWNzT z%e;;XSi_WHsz7i5F3mPjsC0OyDQ4s2kA4Rp#Ed}!_Nu+8u+C; zIlYLY=-d?BOxtX6pJsm*+ZhK76ghgpAX5=+4LMOGz>}9kvFzvN*0&aj-H86^>IH3o zD-_u!NkO00Xf(e)(67b?G9pybxI^p6mylPiR`@7dGh7rnCih*=8e zd5Z}zVrsZz6HP*tXUfkK-8|@i8?lWjSJU+-b3VI;KlZ(zP6d2fMXUtd4?=YV*PIPE|KX0?`dnMm0*Vh!yj9T5R29}15 z10Ab!|K;rHP(uFH$BJ$n`V(t=o^=BUI{OC8j|Jy;`OAx;hsMWtKDG|aPQ}M5!H%V| z+oCGNZL8J%<*6;U(nCs0g~IpR*g^a5?EoKJ-;12pz2UhY;OuMx+iat|%Y5D;_-5SZ zJD$I)_MYzBTlX`9SCmQlF75SU#QxTPm|+swpysF=RHafYS>;|mUBgq0Qzc(JR!gdN zsb#pdwZXC(xk9&ew63**z0$PI-=^Kc)3gsoG?WNC--V^X0|a_Cwzt#40GNma?{BlS zE5ow0PbH)pe!&0j-pYZxv`iB0#g6E&i6%U`eC!6KLSYID7rL)TU#$TE6fJ3S5jD@> z=j*EtMP*+Cjn{u%LPwjKHDY@mrIM+5=%60+`qhDfRQdXDP=7EAAW-$)!R-?OpcN&I z2;e3N!T>n3!;k~EEa5}}f2R>c0fB{>h@SvIDKTIG@seb40HV16=f!i<+R%&FG~m;_ zzk%1MzYLFlKMS>AkZJ-#g7w(4OlY(kDXJvp0o50;xn35Tjbpjo?N{*)i+^}dix(@4 zszQ;dryX@M!^z*xWk%LcIa+ zM!JQxzh33;981Ckl-MquLe2*5B)C%+ZO4AcJ2$j%S6x9cGW5ScGZhf6uGE2$6sH}e zt$43)EjBAV2MA_u>FLK>PDth~D!_>gceA;P>#ZrX5ckr%;R!-RRkZ@ocljooR+-4m@E4leYJmO3= zlj{A1FLOZa<=w`~?gMted)#jVDY6bk@&?Xh=8cYPu5r;74&0j;`ZB7^#*%UY91c`G z2c7;Bc86S^P+h1ndR$a;G^*(0u+Bs*4ZuQ(e zwI2E_i|re~tACG`3*bYfABGJr$a@5ps&$>5CyulG0Mi;UoRiFIo801R_zhgTkB#NE zO%;JclM3L_e$ml>P?%Z``9s4A+(Eg>tM#a@I1ct8cZ?pN~{4Ym$<-&HM24O_I|*OirYJ>B(C>7hYo&fjm59 zmPjAtmW~efHQFDPu4yd9P6vh!4UNyZXOEkuE6dNJChp1$SSm-_zt3mS3#X0*-+CA^ z44N&*ux6q-t1JYk$8k;i=Qbvs$T`&9ezSrb$bH)urW)3JR~5H2Sjz70s&}On+*5EB zS|tCgMM{@`6$oT)_sb=&1#G%c=IK`D_+%)dwmaX}OKz z23g;)MJ~ON6w!#y3?oJkxOe_#)@fJ%Xmgdr)6OfE2>-GXwBYh;_a0lfLLS;*VSB7L z$#9PUu%@tFuC!v3wei@VlHOxmuK&H3k-@jc16(|8!bs4Co6?pID zcRI&xBLM;{M1ro&CjY~o1;OJ};(wf5%JG+73;dt3a-=DZ^dAiu@vaR}n8yHs_`&G^ zm6Zq2r&!?*N}mI*Pz_PnGkf0lrv$+!hA6&akj&SIvW#2z=&8SiebB^#k%<& zEZ)H~hc9xfb&fQD7g9|Mo|MiO`$dRC&C z#4hvx811f*Vw=*V49f&A0hNiP=YDjT;=6EW;(RN_TYY_k$9Zbfi{dkrHnia zABHurjFpl6QdPL-|aX<8K4 zoM09EhP}*b-a`hRAv%JRxgOs_f}GVY#zYHUM6E~!#`)m1cX?IZd6wEAF$TM4w3kzz z9x_U$rVTj`HRKIO{EW7_9c=E(8OOD-+=EpjDoF|*8SHfpj%*i zl^tx8Qp%_thYgI`j|#un%erYoze2b0nW?6cGQD{#W*NS4BJqCS>EF61Zqp}?*iKI8 zx0|#xgYobKwzs7r2l?wcDvbLBZ*QeiqSB4>Ell$V@8_10hYgLGMhGKKWz z-}xlJn*!anIabW6dhRoE#kTnVIT1}&@!%y_Ms*Wpr z9uen$yE||_V@fq$!L7Mj*=M&aMY%VZEjS#wTT=l!Z>FA?L#O{W;)pGeH~f6aD^7n9 zHWurn)(+--)Lb!*%f|=KBq6>JcTs2OkMnR3b>Dvt>TsA{f8_QJ!Y+LNaUb8l>n3G$S zo5biuHhtn(#kdM`LbG(DO|L3sdl6ni9~Not3z4%tV!YCyt>U3ixw!?{{? zV742gt2pEJqz~eF&BE;<&6V4ryIfEqXR5Y}_tr}$!Rr3E1%OfF-Fe0t_z#t?gkc4j s#{Vejb?pDj+W${p`hQKg2@318r`?&%!J75odk#QaLP5Mn)F}A>0KO{*>i_@% diff --git a/v2/files/textCleaned_120.png b/v2/files/textCleaned_120.png deleted file mode 100644 index d4bd593a56218d0f7b64548e1933d44199010fb5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9173 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 Z6IJ2OLiAqS^grtiP>@lTu8}kk{XgI?*>L~> diff --git a/v2/files/textCleaned_125.png b/v2/files/textCleaned_125.png deleted file mode 100644 index c3d61a3a0a8b0cb630c4608dc1e9f77cdf9c9267..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9305 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 diff --git a/v2/files/textCleaned_135.png b/v2/files/textCleaned_135.png deleted file mode 100644 index 7fd2100379b5cebd0c0792e57f739597e85e2253..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9422 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 diff --git a/v2/files/textCleaned_140.png b/v2/files/textCleaned_140.png deleted file mode 100644 index 4cb6fe63a723a67c7b7eb57c2b425153fb9abe33..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9447 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 diff --git a/v2/files/textCleaned_160.png b/v2/files/textCleaned_160.png deleted file mode 100644 index df5a3aa98a0ff1ee382c57894c80de083c937ff4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9538 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 diff --git a/v2/files/textCleaned_165.png b/v2/files/textCleaned_165.png deleted file mode 100644 index 5ffdd1e59cf76a9faaf163b92657cea829695cd6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9421 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 f`)y07Vf6Yhs!xR$9ejrTwE?6hJ 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 DB#b*q diff --git a/v2/files/textCleaned_175.png b/v2/files/textCleaned_175.png deleted file mode 100644 index 1c80fd5ad4f9da94be33086d8e71ba2d4dcc49a3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9311 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 z�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 EABw#0d;kCd diff --git a/v2/files/textCleaned_190.png b/v2/files/textCleaned_190.png deleted file mode 100644 index 0cc4a819ec7c69920cdc7c77c28341328e3e4f12..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9000 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 diff --git a/v2/files/textCleaned_195.png b/v2/files/textCleaned_195.png deleted file mode 100644 index 69aa963c87db152a9480fe9d663e8bf6d4a700a3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8962 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 diff --git a/v2/files/textCleaned_90.png b/v2/files/textCleaned_90.png deleted file mode 100644 index 56464b0bb7c9d8a0723862ca94c9254b71a5e6ee..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8375 zcmcJURZtra@aKaRDDGO^DK5o}Q(THW6f5rTR*E}C3KXZfyF+m)ZUusd5E3M~<$nKr zzk9ly*;$#{*Ux@;XXCUqKH*?eVgdjF9Azc>&j0|j;eWY32J(Mir=w;Q03c^`kdxC= zmXo8?@^rIvaJB^i{C{Q{y_L}0?brqVBUqD|hyRbo&RAzc@+v#W_Rt5B=Yo~^qYZ;7q^(5E!N2B z?@cm|Km1VHQHMGJ(o3ns6KMcTF@kPOHJf$PLPcI83T^x$CzEwIDr<0i;~FmM=CMbk zfP5n*z#lnH=@un?45JvXknxN!D!8LWC0FGq%{EM#U`d@WMNsS^$RP2Vp8l!hA_z4h z;3eVR0D@%+(xAq$aL%*SWZMHwLS`6_j6;7dTDlDTkqWGmvc6!<0&0F}*=nZ9?fCcW zh14V`9GIuou)T_5C+)5pe)j=E3WKNcdp*xeX~gr&A7eMt-S-GDOdt=L0tPd+Ws)BU znlRFOx5@TmagZ5isY9(p4Ht0YJ!#=BbN)K?;ui)zLD-q> z+tlw{)=l(=?2EfY&XqhjnY5cmQsOJ9mBGu5x0=+2xeYX#c(`%`W37*^a#3NZuM5U z4{b|dkiUmxKZoO`zN$YgjRf>C69;TYiCj>~e5BiVlZt}s)8Z%nT|<2KD_k7(>k$g< z`GkKT4#XEkH%70EYnLw!RML~KDPBQbAC$fbaIBI$MGKAOS^hzs%E-3jDsoVuKH~{u z9YUiFJIYm0XsKS)VjsdO275;&MiQ+RBZ&M5xQ>L^`ora~1{~(lYX?ObW)C}j%)ig% zN=bYrkax0eMKY#Zpk1JzjXVY{eq|md3~A;5lFu*uVt`ZndU`u=`ugN=VvMMf8~_Uv z3Qi5QT|7c4Mg~j~+=;Sp9X=%D3o&ugu2tKjP4zxp;uqdUX^@%zK%TB2?fau`7RJtbZMoh^4 zjGQw6=U`0Ft0{mp6fABsR&d9!r+NUUdc?dZ^ zUUDRHD%xB`0v*+16oVEThYa;s0M{>S?}%|AyFZ#aeG}gsyCDff8+FqKZh^VQBROJN1xFdOb}f~$riJ*(Wpc&{_c-5HYttfH#=Vh7`O7AVG%LOP zi-i0QktItG6={U6m5?EAdpNZv-Z~y`>;cf`9{cATvSDFhU?+7bwp7&kp3yxz=C3L( zPPWiYK@}X^@6C!`#lhM(%k;V&97KBGt7U~4`)Op8N{_V${u&B0=HYQAjaE`@5~$0@ zmf{s_7Plc@#RjTomECB_ ziKS0m6JM)t;7oT*cT4;M&m^fYmU>X*OBm2y#P=tY297ZO2J9zn(d>e3wd}p@xLQBU*($zPoK)tN7?zh+ z5|=Mmc>lsKlTgW3Fj9C3_e}Imi;q_cS1Fjv<_JH<&?D8uS&^%LTWx`g7Ku8P3e@<{ z@RL515JsT*Heq>rnPE9_*>yQ>*}iJ}_qonMv3Z46Sz0k)CeQ;a}NPK;rjzWZG_OE;Of)CmRn2wVr2JJDP)_(rMoK{Hm2H{b!s){~Z=`S7WprZ{VyM}y--O%zYI9(-WDU1cwXLxW8fzb( z8+V0XI@T}pv z(zxotcwy83?z%w!hW^+7$N~KRoBnqG6ahZ|DED@-dPtFS%Q;q755 z1$l*^3dsqA-_;VD^jYiAqVANU+G>6H}3n$JfN6$ARLcvcj1&nV*?GnI4&~ zlu0H5lM<6i?1`D(x>dTx%UBMPt^MAu*FNC46r>cYx$?PaxjfCX&92QL+a6ot!_1?| zqxd89Nr8#;bj?h+Y(xcJvGnH&ZF2oGeL-!B+V!f=UrfIbOT85wZx?YB}+e+SS@cd{IrM9_^P@L`XzZ84wnD#Z(2l`gyL^4Cl;TejhLB18eS& z{Q2|G+gXh@OOcjVZfP!;bDxLPoj07{m_VDmErr@m{QXW~XiklRa`V&dunshcu_@BUy%i|F7Yh!7w-?A8h$i>X+FyC z0cTTtl)%lCZ(d%W?>(NH#{K92Nb10*VC=AYNqNaHl7Y9LXE-}s-6_7b9=qzAiIpw( zF(Ar?JVT}DJzH27L`ajL$&6t(5E5YTKY#!Asq88EdgWIAuHbg*wg)JD&;Tg{OOaWU zr&2fKe7I0vum`un z@>E78-XmBbpNuvw3@RNhNmfvohscBEdB#Ql{7WoP!AXKj(s=+6BT_tAJl1ea@X~R8 zN8#hNNkvM3H9G?_#14I`4jO@bha)cvUA&gbiXVQtHCRevT4IJ49?o#3$b4+ z_hC+sYg4KsDvK(ss&cC1(`Qp+(|Xg>?>jl>%wroqnH6>Ig&sJRYuj39d9SQEW}miF zY7yzdf3LRO1{5fmjjOli>vcrC9qril78v8L&{h?>UAU3EdAq#(y1BBvP`eTQlsr?g zNcx)nQ~!9i#U;~a(k0*T0QTBR=Id6!-4N1jZ82W+#C;bl?jrs~V<_RjZoB9+U^4Io zlY_=`Nm5Fxr!3P5N$3Zd?$-PZdWyTs*b3nYxp}F6Nzz;?`hfQprxoWEw;hiH#|I}L zPb#$iX=Bi99K^`;&mu9!KSeDCErq)`F|_OPbb{QD^G0YJG9zs2hPfL*P)B1x;a0$# zcM@WcfUPh&c;1GLKDGTm#9OB2m%0k&EYi<$&E?AtcyySr{Jqh*vC@?}e_iA?@I9pK zM(^C|ym$I}89BfTzV%z-_Rr$E%C30m`m=uvadYdVfKP5n*V&KF1{et_E2W0dsk5!t z=kn$lCn2e6Hg$HEmm#+^ghZO2wCBK zQ>t?{;G)+#c=*{9SuAo@ws4q$fmI$pdOBL9^rh_kqDynIC;Cw=33KL`OmW>N$8V=; zlnQx$#uh$oKH!_2n+@!B9MMF>q+GSH>X#MycDu9oetm7^&1cPy>t=QZE?%1-Cb{Q6 zF4F(w8)hGSNS%JWhTSnNnFZ6MAqi5wB?&NRJ`N&Dtq&x7%6!s)5_;IhJHZPkYQ>Ml zIa=qTs334v^i5o+0uzzEqoyIE4gyNc{!5DrxSV|}7yFTVM?@uKB9|$h(@RZM;h=Nw zZB$0Z?{_;7(#T@tH}# zHgvXkw0yaNvs$8Qf9B>V)f$IW4NU)TEpd%|XLM)3m&?HIA8?a=(Ys9aWo{*VsV>c> z-mmTavOVh7kNWQXhj)b}onL_Wd0^GT$dbTQ)qRr}PkYB>+(^bz|5@nv>+ec3v_$k( zv~z4`Tob8-klUjGNWwC~xc1Hh_(xX5@Hp{!|3G~Z(XIX-^wED;{S^dyX@@Q9Xc4*8k=$hizz_PqtXr4d4 zg#|-0J}k5|iHirJpuhP<&q`|F3$LEGU+Zv12@>0;O8q*q`(rOxMPi>s9rFhF=Iss6 zCDtt-CI2TKvt4S{hYBFuhCW%>U9hf&4WjRtI0S8db!8!3j1__t^{{U1@VLI zY5tHT2Tvj=)l|f2D7^lOt+&n8&Hl(4WPw!gwfnc$yPm+{|9F~mfmBTP^_ zX<7YjcG&OGc-aJJ(|5bA3$zYfZ36YnRX(89af4mwVmo8ulJm4el5^msu>GCNjroOv z=j(^Tx*;sNv=Q$4>q6B5Ahi{hZO9~C<%=4m?S-nL!}XwoNag&V)qzELCoDJb{$k(y zzuPFcP*bu+^Z47xut&_<7H*{w0psiE!s}9B2VWzI!4Sum@ti2%v4Tjjw7^xDPKgVM)7uBbSf3IDXSTtMfrD)hAIoO zw=Rc!w_|JTtNCiw>wh$sk+YI(GGjN|(0$Wzr6i<2t5P7_r^=|Tqv@qyqb>gVlLjaQ zCM2mDg8O0>CGhR|8#(MTXOa9G;!=nNm9Uf zm4T@OG$aUStLwinBUzugsU`EsGY>Os!_-(}oR0mlD)f7%;PP33_*NT4}T`!HH^=bXe9im5bTJJUU&$p+75~%a;Qhac|-};P8 z1>Z~nJ)lH!{m+#rNc)ygjl(U+WQW>|HBN5-Sf?t#*~KM9n!N5l+_vjAasW&ZW%zZ) z0B1bN?v$c*@&m|&DsRJagaEjwfSqz2%L)+y1^ii3%C}#GAHdDDr7Pp^A*08N3G=gBy*(|6!c|}BwNR{$;4MzPhD)6i5VSg+(0zX^x#rr|dOJN4Tv z)0$`YH+Twfm^sQFj%czRSDf22PA@5KX7TF)P(XpSnT6#05M~ryIm>&bF8Z~6Qz1!f z-wBB?28{}-N1-*H+rL*0T=JY_&-%r*#8t#M#Kt>`J8!$|x>bYxp|d-8i4!Nbnp0Py z(Dy(P$bzDgyo}%{@nTOA*Nkv4eI$Q6xex0%@pjQUMw+6(-XdpJHv4Lx4wzunwaMbv zgUXe;sUp0-3y~!WCw|Z&$z|jw!>bdz3S@eB+p@a3T2x0k(4?KdkHRr-Ai;J1EV@U6 zrd{GV$g>ym^y~a0pDakxBITj?;e!YGWhZ4(V9ATXV)K|br03e~_0z`Uaq|q%6Umm| zv{0_k_2a}?m--U)1qGR08ZZ-1JArIwi4`m@q4cSD7inyee-xWt23Jck^G%!dxh19{ z%??WCkRNcK?PDgG==YoG1(# z@l!UFA^A)A=kzP4BZ(E7YMMx~J+wA}4>t~#Iw=>r3sM33wt8U5qt!QQ#T>pA9^RykIm{x@i@_IS$q+V^y`?L4x8c(9XVbaLUSYB?_DE< zYPa!%mZ1f=#B?zD6m#E2@m<@sIBb`oG1*`ILm8hpvzqWTYJkXRHV&3h>Xwva2m4(?a8`Es8Baeaw;C*$#cGo$CF6a{M}2Qsb`xbQXEZ@Z1-y46C3tjs`gnNn{`2q0Pu3c z>6&l3B6yULAAsECv41D3cX1SCMgN9;#kGsL*~933S19dKdi(22i|DJiH~AwjT8hV5 zrqzeW`gN9fcrYdy*++5&uF0o+&SvM_pK{Dx$VSxf|BIpG13L001r>>u59 z+e`xN<8*Gt?&cnbxe9-@Z+bVaaat?d^%HN^3*Jb|y}XMmQq&m3sW`JkpB?9HXZKmxE&&6kG4329GAFwW=thKlm%K2eur-4$4661WZhNwIkBHQx{7X_yRo@8e|=r`>{366jo-H1b%_gf zf9=t{`}?tbeHva?Yq96B^=soVP@odT$f!~J(vUdj+P4=LKGlGJU{n6pa;ZR|2|;71jQZ!k76v+2F&YE>N0CTHz?Nn)-BYF zHjvb+H%vFs8lD?ktOIv=cfW74t)FZg?htRbZb)<*b&IwhAuucyVxR{o4CH|DfR?T< zHe>)db@&ZDKffj>KOdr?)XaxA*as{?c(u<{9wttj{gX|(_j)}D%R(R*m#+3*Og%XQ z02nID@-n*qKcU-O>17=FidNfv=ZL8`oRQ;ew2~ej9m&I$adBwE2jDk;S2=Ir~-=7WKtLuHlW`0}HJ< zOU+uOd9Va7zt%rKTMs|>w_rs{l-7Hi2#%Bkk$C|T>)i(8klt>JPb=&6&z9W<^Sk;T zs8GTl<$jCS3=%lXpyDs{4Xcnylm^-k+NiiXb zJFI{AA=tzWwSp?+YoP`ywrDtEpXdsb3rBZLO7h5T$(e0Eot-uSCNgb z<3i_K6t}-*Z9{z4^nB|+u5tgETp+#ynT4sE8AUA$sv5(7Dj!!CV_zD&$7%`m-Lh;h ze^pg2dJ?;hQHk$4<(WH)v6*fDgcp&NESbhy5-NJYsS;FXEZFr0;VX+XE;?3C5#3E| zB``4l_L~?!8AGVKsvGV1hJf%z&&Bsh)8VE1b41`#i-*q_zE1+!o*O`lNC< z7xcyYIP}C9%CFp?yh-M_PF{zBN;0|Y++^YJ*t#+!hb9rU%K=WNlk;RS{{5_wb=rz? zj?OZ9Fx|s96dk-@z}04G@)4u0+qt^bg}&x)YX(|W?Gm2^hL8G#Gr`z>+pKnkwvOcn z4x$V5x2Ekmfw-s%dA_b(kHHx*ct_CvBVyV(gyG!k!MbnZW!--Eb$i0OZysloyFuPd z!BAm;=-fFsPGTugtLr){9^nBj`XX5b1@NK-_;R32a~s4*RyM_?cmHox6gKrO|~-tjN@(ksNY_^7R z^u+Qsr&m8j;BO*qy9ht9U>3%0lS@87BSyfpPHY`okHF}t%?%TMPCRwSA47ha z2{mP(gju0%ZW)Ow=`FAGvj=)hWc54pQH}@A-SwOGQK}&~&`hqPJ=;=Dwq@BwJ_T_9 z*1VsosE@gtHe9l+N;Pk+n~VVa3re3QwFG|7%V^x^{27gE7xP)g>d(0~dTm zabt1vrPg*`OYLx`ix2uCj=ELz9-P?VBaLb^Xe%QjB$;{@gQ!h6b2Xqbn>FO3_XJLo zWlWr8oMXCuEVKT7x=L&zG#_+WYv}qfF1VDqD4Q^}am#b;W!`yYXDRWD73n>>oMLZ?-PPuoa4*{+C^_aZ2Tv1G4h)(MA5bX;TrFf5s5B?VHva~vBWoOu=ziwPANb_ z$%fvV?mw{mFUH64>HbGk6KkHS3L0SN(#CMv4Xi05BC5WHkW*1ik;VEh@r){MuTz0ss&*+snwPE6T`F ztGm0}*gIJR0KPvm^goDdZ?>Y9HM(Qp2^40bG#wt@-M0CAW zU6v0L3)0_KfaGj)-*5`ROc=MrOvP%6ut1(0k3<9KucP6TE1Bg{OWh(C;mW>S9gl1s zDZm#YMd1!HWDvC&CYSbtBgDI*Kqgb+Bgx!H8fQk4DuG+<#!D-zNkjA8dKrKe=l2>% z4u&(%p46()PG4|s)LVB#6A)A8BjI;#?=OroYu9XS3<+= z5NNJ??fL?$jpR4wkb8bO;W;env&YN0gla6e>^?>v^+Tt?^f1C-BS3GuhE(DcxE?j7 zYn^B-3KM~LoFd4Q={l%$^Lndy3c8*t;turr~D)I}zY39;a5Z;|fxLGfzSG20!lfg|+Sk#1)+5Id#YpNq%#a zZF(*2F-}oXKU+%lr&L(8ZY<$B{;KyYq2Cph8Op$oBp-q;OEZstiV{j)ywB3Fx|k(z$9I!PZ_mDl2Jk8|@DcAv-cfM# z<{CkN{5f*yiwS{#LS3ig2$es}6U?+y* zCnHaU#!-{)hSRDevr19e0XT{%JVS?|EWXGlH1(g}+x!*PL#V<*+M;%d#6d zs2MUxO)*T|5OGSaJB)W7E?vybOsNz$Q{>4^)`6BG)2xm+hjlB7IK|BSZd`J+h=BM# zo*82{8DXfkIiDU?O9+J-_7XN$)DG0@0prJeqCNqre;Y**hD7+#mi_|@T2X~MJ9AJv zuM(zpbc1|*aiE6P9E}z$E1q_Ar8FO152bWM$-X*xN{^Q=7n>ttpqyj{7bqQ7f?cdu z+&FE0=P*Evvrdm4T?fA^ zwi>AGM14nnhtH2~n9v*DHiEn>S+x_mw7 zJ|A1VZ$I$W^S$v!@cZn$;%nne;^*ay=*#1KaUHa6xj%b=zCX5ovYU5sur08Yv<)8J z90IdavqG7ZnbkQi4U#q0fm6ENGIcWFOrmv%m6%NqJEoM)(aibGgSV9X*83#nWaWOy zCC2eatHd?Lh#i9K=XugfOHtyfC=aKQWjq5{v*w zL`UAS#HV*?RcIB@q1%Tw^>{YjcpZHpAtX`GkaA`QO?z9%zP2UUKi`_FB z;TgV2RZDlxgqKklOKJ{l5bONX;nfhWUaDv-qW`^H;wfh@o1?L;^w{Peb=?tLiKbtw zWG%0)F#nZL_x3w!T5iG$OLNpQu@~ZP|1rlgm{*IJmhYIi$3e*v*0o z=zwmA*Iet6baHv*dyIb=e{y~D(F@&c^XS8|-$}+HXpU$Rdk$O-|0g*S;`D75T3#G! z9=0V$m!9%lqf(>rQ+R!eTgw$0-a9;rv=c^H*=QLG@FK??!Va0p>*hY-XUfUSo4n9m z�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 BFM$96 diff --git a/v2/files/textOriginal_out.tsv b/v2/files/textOriginal_out.tsv deleted file mode 100644 index 89c4f25..0000000 --- a/v2/files/textOriginal_out.tsv +++ /dev/null @@ -1,24 +0,0 @@ -level page_num block_num par_num line_num word_num left top width height conf text -1 1 0 0 0 0 0 0 600 103 -1 -2 1 1 0 0 0 23 26 555 51 -1 -3 1 1 1 0 0 23 26 555 51 -1 -4 1 1 1 1 0 23 26 555 22 -1 -5 1 1 1 1 1 23 26 44 17 86 This -5 1 1 1 1 2 76 26 15 17 86 is -5 1 1 1 1 3 99 30 57 13 86 some -5 1 1 1 1 4 164 26 42 21 73 text, -5 1 1 1 1 5 215 26 70 17 82 written -5 1 1 1 1 6 295 26 15 17 95 in -5 1 1 1 1 7 317 26 52 21 73 Arial, -5 1 1 1 1 8 378 26 40 17 80 that -5 1 1 1 1 9 425 26 32 17 95 will -5 1 1 1 1 10 467 26 24 17 85 be -5 1 1 1 1 11 500 26 45 17 87 read -5 1 1 1 1 12 555 26 23 22 85 by -4 1 1 1 2 0 23 54 513 23 -1 -5 1 1 1 2 1 23 55 107 17 82 Tesseract. -5 1 1 1 2 2 140 55 49 17 91 Here -5 1 1 1 2 3 198 59 32 13 86 are -5 1 1 1 2 4 239 59 57 13 86 some -5 1 1 1 2 5 304 55 92 22 86 symbols: -5 1 1 1 2 6 407 54 129 23 65 !@#$%"&‘() diff --git a/v2/files/textOriginal_out2.tsv b/v2/files/textOriginal_out2.tsv deleted file mode 100644 index 89c4f25..0000000 --- a/v2/files/textOriginal_out2.tsv +++ /dev/null @@ -1,24 +0,0 @@ -level page_num block_num par_num line_num word_num left top width height conf text -1 1 0 0 0 0 0 0 600 103 -1 -2 1 1 0 0 0 23 26 555 51 -1 -3 1 1 1 0 0 23 26 555 51 -1 -4 1 1 1 1 0 23 26 555 22 -1 -5 1 1 1 1 1 23 26 44 17 86 This -5 1 1 1 1 2 76 26 15 17 86 is -5 1 1 1 1 3 99 30 57 13 86 some -5 1 1 1 1 4 164 26 42 21 73 text, -5 1 1 1 1 5 215 26 70 17 82 written -5 1 1 1 1 6 295 26 15 17 95 in -5 1 1 1 1 7 317 26 52 21 73 Arial, -5 1 1 1 1 8 378 26 40 17 80 that -5 1 1 1 1 9 425 26 32 17 95 will -5 1 1 1 1 10 467 26 24 17 85 be -5 1 1 1 1 11 500 26 45 17 87 read -5 1 1 1 1 12 555 26 23 22 85 by -4 1 1 1 2 0 23 54 513 23 -1 -5 1 1 1 2 1 23 55 107 17 82 Tesseract. -5 1 1 1 2 2 140 55 49 17 91 Here -5 1 1 1 2 3 198 59 32 13 86 are -5 1 1 1 2 4 239 59 57 13 86 some -5 1 1 1 2 5 304 55 92 22 86 symbols: -5 1 1 1 2 6 407 54 129 23 65 !@#$%"&‘() diff --git a/v2/files/textOriginal_out4.txt b/v2/files/textOriginal_out4.txt deleted file mode 100644 index aa6b34d..0000000 --- a/v2/files/textOriginal_out4.txt +++ /dev/null @@ -1,3 +0,0 @@ -This is some text, written in Arial, that will be read by -Tesseract. Here are some symbols: !@#$%"&‘() - diff --git a/v2/files/text_2.png b/v2/files/text_2.png deleted file mode 100644 index 93b7f192be6e2d3be8a2dc0769ea9c4fca6417fd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9678 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 Date: Fri, 23 Mar 2018 22:13:40 -0400 Subject: [PATCH 31/47] Moving v2 to root directory --- Chapter01_BeginningToScrape.ipynb | 143 + Chapter02-AdvancedHTMLParsing.ipynb | 597 + Chapter03-web-crawlers.ipynb | 1827 + Chapter04_CrawlingModels.ipynb | 1326 + Chapter05_Scrapy/wikiSpider/scrapy.cfg | 11 + .../wikiSpider/wikiSpider/__init__.py | 0 .../wikiSpider/wikiSpider/article.py | 18 + .../wikiSpider/wikiSpider/articleItems.py | 20 + .../wikiSpider/wikiSpider/articlePipelines.py | 19 + .../wikiSpider/wikiSpider/articles.csv | 16615 +++++++ .../wikiSpider/wikiSpider/articles.json | 33 + .../wikiSpider/wikiSpider/articles.py | 19 + .../wikiSpider/wikiSpider/articles.xml | 7608 ++++ .../wikiSpider/articlesMoreRules.py | 26 + .../wikiSpider/wikiSpider/items.py | 15 + .../wikiSpider/wikiSpider/middlewares.py | 56 + .../wikiSpider/wikiSpider/pipelines.py | 12 + .../wikiSpider/wikiSpider/settings.py | 90 + .../wikiSpider/wikiSpider/spiders/__init__.py | 4 + Chapter06_StoringData.ipynb | 37054 ++++++++++++++++ Chapter07_ReadingDocuments.ipynb | 1683 + Chapter08-CleaningYourDirtyData.ipynb | 206 + Chapter09_NaturalLanguages.ipynb | 312 + Chapter10-CrawlingThroughFormsAndLogins.ipynb | 554 + Chapter11-JavaScript.ipynb | 109 + Chapter12-API-Scraping.ipynb | 588 + Chapter13-ImageProcessing.ipynb | 509 + Chapter14-ScrapingTraps.ipynb | 174 + Chapter15_Testing.ipynb | 341 + 29 files changed, 69969 insertions(+) create mode 100644 Chapter01_BeginningToScrape.ipynb create mode 100644 Chapter02-AdvancedHTMLParsing.ipynb create mode 100644 Chapter03-web-crawlers.ipynb create mode 100644 Chapter04_CrawlingModels.ipynb create mode 100644 Chapter05_Scrapy/wikiSpider/scrapy.cfg create mode 100644 Chapter05_Scrapy/wikiSpider/wikiSpider/__init__.py create mode 100644 Chapter05_Scrapy/wikiSpider/wikiSpider/article.py create mode 100644 Chapter05_Scrapy/wikiSpider/wikiSpider/articleItems.py create mode 100644 Chapter05_Scrapy/wikiSpider/wikiSpider/articlePipelines.py create mode 100644 Chapter05_Scrapy/wikiSpider/wikiSpider/articles.csv create mode 100644 Chapter05_Scrapy/wikiSpider/wikiSpider/articles.json create mode 100644 Chapter05_Scrapy/wikiSpider/wikiSpider/articles.py create mode 100644 Chapter05_Scrapy/wikiSpider/wikiSpider/articles.xml create mode 100644 Chapter05_Scrapy/wikiSpider/wikiSpider/articlesMoreRules.py create mode 100644 Chapter05_Scrapy/wikiSpider/wikiSpider/items.py create mode 100644 Chapter05_Scrapy/wikiSpider/wikiSpider/middlewares.py create mode 100644 Chapter05_Scrapy/wikiSpider/wikiSpider/pipelines.py create mode 100644 Chapter05_Scrapy/wikiSpider/wikiSpider/settings.py create mode 100644 Chapter05_Scrapy/wikiSpider/wikiSpider/spiders/__init__.py create mode 100644 Chapter06_StoringData.ipynb create mode 100644 Chapter07_ReadingDocuments.ipynb create mode 100644 Chapter08-CleaningYourDirtyData.ipynb create mode 100644 Chapter09_NaturalLanguages.ipynb create mode 100644 Chapter10-CrawlingThroughFormsAndLogins.ipynb create mode 100644 Chapter11-JavaScript.ipynb create mode 100644 Chapter12-API-Scraping.ipynb create mode 100644 Chapter13-ImageProcessing.ipynb create mode 100644 Chapter14-ScrapingTraps.ipynb create mode 100644 Chapter15_Testing.ipynb diff --git a/Chapter01_BeginningToScrape.ipynb b/Chapter01_BeginningToScrape.ipynb new file mode 100644 index 0000000..8d7a74b --- /dev/null +++ b/Chapter01_BeginningToScrape.ipynb @@ -0,0 +1,143 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "b'\\n\\nA Useful Page\\n\\n\\n

An Interesting Title

\\n
\\nLorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.\\n
\\n\\n\\n'\n" + ] + } + ], + "source": [ + "from urllib.request import urlopen\n", + "\n", + "html = urlopen('http://pythonscraping.com/pages/page1.html')\n", + "print(html.read())" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "

An Interesting Title

\n" + ] + } + ], + "source": [ + "from urllib.request import urlopen\n", + "from bs4 import BeautifulSoup\n", + "\n", + "html = urlopen('http://www.pythonscraping.com/pages/page1.html')\n", + "bs = BeautifulSoup(html.read(), 'html.parser')\n", + "print(bs.h1)" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "The server could not be found!\n" + ] + } + ], + "source": [ + "from urllib.request import urlopen\n", + "from urllib.error import HTTPError\n", + "from urllib.error import URLError\n", + "\n", + "try:\n", + " html = urlopen(\"https://pythonscrapingthisurldoesnotexist.com\")\n", + "except HTTPError as e:\n", + " print(\"The server returned an HTTP error\")\n", + "except URLError as e:\n", + " print(\"The server could not be found!\")\n", + "else:\n", + " print(html.read())" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "

An Interesting Title

\n" + ] + } + ], + "source": [ + "from urllib.request import urlopen\n", + "from urllib.error import HTTPError\n", + "from bs4 import BeautifulSoup\n", + "\n", + "\n", + "def getTitle(url):\n", + " try:\n", + " html = urlopen(url)\n", + " except HTTPError as e:\n", + " return None\n", + " try:\n", + " bsObj = BeautifulSoup(html.read(), \"lxml\")\n", + " title = bsObj.body.h1\n", + " except AttributeError as e:\n", + " return None\n", + " return title\n", + "\n", + "\n", + "title = getTitle(\"http://www.pythonscraping.com/pages/page1.html\")\n", + "if title == None:\n", + " print(\"Title could not be found\")\n", + "else:\n", + " print(title)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.6.1" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/Chapter02-AdvancedHTMLParsing.ipynb b/Chapter02-AdvancedHTMLParsing.ipynb new file mode 100644 index 0000000..6779c08 --- /dev/null +++ b/Chapter02-AdvancedHTMLParsing.ipynb @@ -0,0 +1,597 @@ +{ + "cells": [ + { + "cell_type": "raw", + "metadata": {}, + "source": [ + "from urllib.request import urlopen\n", + "from bs4 import BeautifulSoup\n", + "html = urlopen('http://www.pythonscraping.com/pages/warandpeace.html')\n", + "bs = BeautifulSoup(html, 'html.parser')\n", + "print(bs)" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "from urllib.request import urlopen\n", + "from bs4 import BeautifulSoup\n", + "html = urlopen('http://www.pythonscraping.com/pages/warandpeace.html')\n", + "bs = BeautifulSoup(html, \"html.parser\")" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Anna\n", + "Pavlovna Scherer\n", + "Empress Marya\n", + "Fedorovna\n", + "Prince Vasili Kuragin\n", + "Anna Pavlovna\n", + "St. Petersburg\n", + "the prince\n", + "Anna Pavlovna\n", + "Anna Pavlovna\n", + "the prince\n", + "the prince\n", + "the prince\n", + "Prince Vasili\n", + "Anna Pavlovna\n", + "Anna Pavlovna\n", + "the prince\n", + "Wintzingerode\n", + "King of Prussia\n", + "le Vicomte de Mortemart\n", + "Montmorencys\n", + "Rohans\n", + "Abbe Morio\n", + "the Emperor\n", + "the prince\n", + "Prince Vasili\n", + "Dowager Empress Marya Fedorovna\n", + "the baron\n", + "Anna Pavlovna\n", + "the Empress\n", + "the Empress\n", + "Anna Pavlovna's\n", + "Her Majesty\n", + "Baron\n", + "Funke\n", + "The prince\n", + "Anna\n", + "Pavlovna\n", + "the Empress\n", + "The prince\n", + "Anatole\n", + "the prince\n", + "The prince\n", + "Anna\n", + "Pavlovna\n", + "Anna Pavlovna\n" + ] + } + ], + "source": [ + "nameList = bs.findAll('span', {'class': 'green'})\n", + "for name in nameList:\n", + " print(name.get_text())" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[

War and Peace

,

Chapter 1

]\n" + ] + } + ], + "source": [ + "titles = bs.find_all(['h1', 'h2','h3','h4','h5','h6'])\n", + "print([title for title in titles])\n" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[Well, Prince, so Genoa and Lucca are now just family estates of the\n", + "Buonapartes. But I warn you, if you don't tell me that this means war,\n", + "if you still try to defend the infamies and horrors perpetrated by\n", + "that Antichrist- I really believe he is Antichrist- I will have\n", + "nothing more to do with you and you are no longer my friend, no longer\n", + "my 'faithful slave,' as you call yourself! But how do you do? I see\n", + "I have frightened you- sit down and tell me all the news., Anna\n", + "Pavlovna Scherer, Empress Marya\n", + "Fedorovna, Prince Vasili Kuragin, Anna Pavlovna, St. Petersburg, If you have nothing better to do, Count [or Prince], and if the\n", + "prospect of spending an evening with a poor invalid is not too\n", + "terrible, I shall be very charmed to see you tonight between 7 and 10-\n", + "Annette Scherer., Heavens! what a virulent attack!, the prince, Anna Pavlovna, First of all, dear friend, tell me how you are. Set your friend's\n", + "mind at rest,, Can one be well while suffering morally? Can one be calm in times\n", + "like these if one has any feeling?, Anna Pavlovna, You are\n", + "staying the whole evening, I hope?, And the fete at the English ambassador's? Today is Wednesday. I\n", + "must put in an appearance there,, the prince, My daughter is\n", + "coming for me to take me there., I thought today's fete had been canceled. I confess all these\n", + "festivities and fireworks are becoming wearisome., If they had known that you wished it, the entertainment would\n", + "have been put off,, the prince, Don't tease! Well, and what has been decided about Novosiltsev's\n", + "dispatch? You know everything., What can one say about it?, the prince, What has been decided? They have decided that\n", + "Buonaparte has burnt his boats, and I believe that we are ready to\n", + "burn ours., Prince Vasili, Anna Pavlovna, Anna Pavlovna, Oh, don't speak to me of Austria. Perhaps I don't understand\n", + "things, but Austria never has wished, and does not wish, for war.\n", + "She is betraying us! Russia alone must save Europe. Our gracious\n", + "sovereign recognizes his high vocation and will be true to it. That is\n", + "the one thing I have faith in! Our good and wonderful sovereign has to\n", + "perform the noblest role on earth, and he is so virtuous and noble\n", + "that God will not forsake him. He will fulfill his vocation and\n", + "crush the hydra of revolution, which has become more terrible than\n", + "ever in the person of this murderer and villain! We alone must\n", + "avenge the blood of the just one.... Whom, I ask you, can we rely\n", + "on?... England with her commercial spirit will not and cannot\n", + "understand the Emperor Alexander's loftiness of soul. She has\n", + "refused to evacuate Malta. She wanted to find, and still seeks, some\n", + "secret motive in our actions. What answer did Novosiltsev get? None.\n", + "The English have not understood and cannot understand the\n", + "self-abnegation of our Emperor who wants nothing for himself, but only\n", + "desires the good of mankind. And what have they promised? Nothing! And\n", + "what little they have promised they will not perform! Prussia has\n", + "always declared that Buonaparte is invincible, and that all Europe\n", + "is powerless before him.... And I don't believe a word that Hardenburg\n", + "says, or Haugwitz either. This famous Prussian neutrality is just a\n", + "trap. I have faith only in God and the lofty destiny of our adored\n", + "monarch. He will save Europe!, I think,, the prince, that if you had been\n", + "sent instead of our dear Wintzingerode you would have captured the\n", + "King of Prussia's consent by assault. You are so eloquent. Will you\n", + "give me a cup of tea?, Wintzingerode, King of Prussia, In a moment. A propos,, I am\n", + "expecting two very interesting men tonight, le Vicomte de Mortemart,\n", + "who is connected with the Montmorencys through the Rohans, one of\n", + "the best French families. He is one of the genuine emigres, the good\n", + "ones. And also the Abbe Morio. Do you know that profound thinker? He\n", + "has been received by the Emperor. Had you heard?, le Vicomte de Mortemart, Montmorencys, Rohans, Abbe Morio, the Emperor, I shall be delighted to meet them,, the prince, But tell me,, is it true that the Dowager Empress wants Baron Funke\n", + "to be appointed first secretary at Vienna? The baron by all accounts\n", + "is a poor creature., Prince Vasili, Dowager Empress Marya Fedorovna, the baron, Anna Pavlovna, the Empress, Baron Funke has been recommended to the Dowager Empress by her\n", + "sister,, the Empress, Anna Pavlovna's, Her Majesty, Baron\n", + "Funke, The prince, Anna\n", + "Pavlovna, the Empress, Now about your family. Do you know that since your daughter came\n", + "out everyone has been enraptured by her? They say she is amazingly\n", + "beautiful., The prince, I often think,, I often think how unfairly sometimes the\n", + "joys of life are distributed. Why has fate given you two such splendid\n", + "children? I don't speak of Anatole, your youngest. I don't like\n", + "him,, Anatole, Two such charming children. And really you appreciate\n", + "them less than anyone, and so you don't deserve to have them., I can't help it,, the prince, Lavater would have said I\n", + "lack the bump of paternity., Don't joke; I mean to have a serious talk with you. Do you know I\n", + "am dissatisfied with your younger son? Between ourselves, he was mentioned at Her\n", + "Majesty's and you were pitied...., The prince, What would you have me do?, You know I did all\n", + "a father could for their education, and they have both turned out\n", + "fools. Hippolyte is at least a quiet fool, but Anatole is an active\n", + "one. That is the only difference between them., And why are children born to such men as you? If you were not a\n", + "father there would be nothing I could reproach you with,, Anna\n", + "Pavlovna, I am your faithful slave and to you alone I can confess that my\n", + "children are the bane of my life. It is the cross I have to bear. That\n", + "is how I explain it to myself. It can't be helped!, Anna Pavlovna]\n" + ] + } + ], + "source": [ + "allText = bs.find_all('span', {'class':{'green', 'red'}})\n", + "print([text for text in allText])" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "7\n" + ] + } + ], + "source": [ + "nameList = bs.find_all(text='the prince')\n", + "print(len(nameList))" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[]\n" + ] + } + ], + "source": [ + "title = bs.find_all(id='title', class_='text')\n", + "print([text for text in allText])" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "\n", + "\n", + "Item Title\n", + "\n", + "Description\n", + "\n", + "Cost\n", + "\n", + "Image\n", + "\n", + "\n", + "\n", + "\n", + "Vegetable Basket\n", + "\n", + "This vegetable basket is the perfect gift for your health conscious (or overweight) friends!\n", + "Now with super-colorful bell peppers!\n", + "\n", + "$15.00\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "Russian Nesting Dolls\n", + "\n", + "Hand-painted by trained monkeys, these exquisite dolls are priceless! And by \"priceless,\" we mean \"extremely expensive\"! 8 entire dolls per set! Octuple the presents!\n", + "\n", + "$10,000.52\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "Fish Painting\n", + "\n", + "If something seems fishy about this painting, it's because it's a fish! Also hand-painted by trained monkeys!\n", + "\n", + "$10,005.00\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "Dead Parrot\n", + "\n", + "This is an ex-parrot! Or maybe he's only resting?\n", + "\n", + "$0.50\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "Mystery Box\n", + "\n", + "If you love suprises, this mystery box is for you! Do not place on light-colored surfaces. May cause oil staining. Keep your friends guessing!\n", + "\n", + "$1.50\n", + "\n", + "\n", + "\n", + "\n", + "\n" + ] + } + ], + "source": [ + "from urllib.request import urlopen\n", + "from bs4 import BeautifulSoup\n", + "\n", + "html = urlopen('http://www.pythonscraping.com/pages/page3.html')\n", + "bs = BeautifulSoup(html, 'html.parser')\n", + "\n", + "for child in bs.find('table',{'id':'giftList'}).children:\n", + " print(child)" + ] + }, + { + "cell_type": "code", + "execution_count": 26, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "\n", + "\n", + "Vegetable Basket\n", + "\n", + "This vegetable basket is the perfect gift for your health conscious (or overweight) friends!\n", + "Now with super-colorful bell peppers!\n", + "\n", + "$15.00\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "Russian Nesting Dolls\n", + "\n", + "Hand-painted by trained monkeys, these exquisite dolls are priceless! And by \"priceless,\" we mean \"extremely expensive\"! 8 entire dolls per set! Octuple the presents!\n", + "\n", + "$10,000.52\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "Fish Painting\n", + "\n", + "If something seems fishy about this painting, it's because it's a fish! Also hand-painted by trained monkeys!\n", + "\n", + "$10,005.00\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "Dead Parrot\n", + "\n", + "This is an ex-parrot! Or maybe he's only resting?\n", + "\n", + "$0.50\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "Mystery Box\n", + "\n", + "If you love suprises, this mystery box is for you! Do not place on light-colored surfaces. May cause oil staining. Keep your friends guessing!\n", + "\n", + "$1.50\n", + "\n", + "\n", + "\n", + "\n", + "\n" + ] + } + ], + "source": [ + "from urllib.request import urlopen\n", + "from bs4 import BeautifulSoup\n", + "\n", + "html = urlopen('http://www.pythonscraping.com/pages/page3.html')\n", + "bs = BeautifulSoup(html, 'html.parser')\n", + "\n", + "for sibling in bs.find('table', {'id':'giftList'}).tr.next_siblings:\n", + " print(sibling) " + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "$15.00\n", + "\n" + ] + } + ], + "source": [ + "from urllib.request import urlopen\n", + "from bs4 import BeautifulSoup\n", + "\n", + "html = urlopen('http://www.pythonscraping.com/pages/page3.html')\n", + "bs = BeautifulSoup(html, 'html.parser')\n", + "print(bs.find('img',\n", + " {'src':'../img/gifts/img1.jpg'})\n", + " .parent.previous_sibling.get_text())" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "../img/gifts/img1.jpg\n", + "../img/gifts/img2.jpg\n", + "../img/gifts/img3.jpg\n", + "../img/gifts/img4.jpg\n", + "../img/gifts/img6.jpg\n" + ] + } + ], + "source": [ + "from urllib.request import urlopen\n", + "from bs4 import BeautifulSoup\n", + "import re\n", + "\n", + "html = urlopen('http://www.pythonscraping.com/pages/page3.html')\n", + "bs = BeautifulSoup(html, 'html.parser')\n", + "images = bs.find_all('img', {'src':re.compile('\\.\\.\\/img\\/gifts/img.*\\.jpg')})\n", + "for image in images: \n", + " print(image['src'])" + ] + }, + { + "cell_type": "code", + "execution_count": 30, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[,\n", + " \n", + " Vegetable Basket\n", + " \n", + " This vegetable basket is the perfect gift for your health conscious (or overweight) friends!\n", + " Now with super-colorful bell peppers!\n", + " \n", + " $15.00\n", + " \n", + " \n", + " ,\n", + " \n", + " Russian Nesting Dolls\n", + " \n", + " Hand-painted by trained monkeys, these exquisite dolls are priceless! And by \"priceless,\" we mean \"extremely expensive\"! 8 entire dolls per set! Octuple the presents!\n", + " \n", + " $10,000.52\n", + " \n", + " \n", + " ,\n", + " \n", + " Fish Painting\n", + " \n", + " If something seems fishy about this painting, it's because it's a fish! Also hand-painted by trained monkeys!\n", + " \n", + " $10,005.00\n", + " \n", + " \n", + " ,\n", + " \n", + " Dead Parrot\n", + " \n", + " This is an ex-parrot! Or maybe he's only resting?\n", + " \n", + " $0.50\n", + " \n", + " \n", + " ,\n", + " \n", + " Mystery Box\n", + " \n", + " If you love suprises, this mystery box is for you! Do not place on light-colored surfaces. May cause oil staining. Keep your friends guessing!\n", + " \n", + " $1.50\n", + " \n", + " \n", + " ]" + ] + }, + "execution_count": 30, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "bs.find_all(lambda tag: len(tag.attrs) == 2)" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[Or maybe he's only resting?]" + ] + }, + "execution_count": 9, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "bs.find_all(lambda tag: tag.get_text() == 'Or maybe he\\'s only resting?')" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[\"Or maybe he's only resting?\"]" + ] + }, + "execution_count": 10, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "bs.find_all('', text='Or maybe he\\'s only resting?')" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.6.1" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/Chapter03-web-crawlers.ipynb b/Chapter03-web-crawlers.ipynb new file mode 100644 index 0000000..aae002a --- /dev/null +++ b/Chapter03-web-crawlers.ipynb @@ -0,0 +1,1827 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "/wiki/Wikipedia:Protection_policy#semi\n", + "#mw-head\n", + "#p-search\n", + "/wiki/Kevin_Bacon_(disambiguation)\n", + "/wiki/File:Kevin_Bacon_SDCC_2014.jpg\n", + "/wiki/San_Diego_Comic-Con\n", + "/wiki/Philadelphia\n", + "/wiki/Pennsylvania\n", + "/wiki/Kyra_Sedgwick\n", + "/wiki/Sosie_Bacon\n", + "/wiki/Edmund_Bacon_(architect)\n", + "/wiki/Michael_Bacon_(musician)\n", + "http://baconbros.com/\n", + "#cite_note-1\n", + "#cite_note-actor-2\n", + "/wiki/Footloose_(1984_film)\n", + "/wiki/JFK_(film)\n", + "/wiki/A_Few_Good_Men\n", + "/wiki/Apollo_13_(film)\n", + "/wiki/Mystic_River_(film)\n", + "/wiki/Sleepers\n", + "/wiki/The_Woodsman_(2004_film)\n", + "/wiki/Fox_Broadcasting_Company\n", + "/wiki/The_Following\n", + "/wiki/HBO\n", + "/wiki/Taking_Chance\n", + "/wiki/Golden_Globe_Award\n", + "/wiki/Screen_Actors_Guild_Award\n", + "/wiki/Primetime_Emmy_Award\n", + "/wiki/The_Guardian\n", + "/wiki/Academy_Award\n", + "#cite_note-3\n", + "/wiki/Hollywood_Walk_of_Fame\n", + "#cite_note-4\n", + "/wiki/Social_networks\n", + "/wiki/Six_Degrees_of_Kevin_Bacon\n", + "/wiki/SixDegrees.org\n", + "#cite_note-walk-5\n", + "#Early_life_and_education\n", + "#Acting_career\n", + "#Early_work\n", + "#1980s\n", + "#1990s\n", + "#2000s\n", + "#2010s\n", + "#Advertising_work\n", + "#Personal_life\n", + "#Six_Degrees_of_Kevin_Bacon\n", + "#Music\n", + "#Awards_and_nominations\n", + "#Filmography\n", + "#See_also\n", + "#References\n", + "#External_links\n", + "/wiki/Philadelphia\n", + "#cite_note-actor-2\n", + "#cite_note-actor-2\n", + "/wiki/Edmund_Bacon_(architect)\n", + "#cite_note-bacon-6\n", + "/wiki/Pennsylvania_Governor%27s_School_for_the_Arts\n", + "/wiki/Bucknell_University\n", + "#cite_note-7\n", + "/wiki/Glory_Van_Scott\n", + "#cite_note-walk-5\n", + "#cite_note-bacon-6\n", + "/wiki/Circle_in_the_Square\n", + "/wiki/Nancy_Mills\n", + "/wiki/Cosmopolitan_(magazine)\n", + "#cite_note-cosmo91-8\n", + "/wiki/Fraternities_and_sororities\n", + "/wiki/Animal_House\n", + "#cite_note-bacon-6\n", + "/wiki/Search_for_Tomorrow\n", + "/wiki/Guiding_Light\n", + "/wiki/Friday_the_13th_(1980_film)\n", + "#cite_note-9\n", + "/wiki/Phoenix_Theater\n", + "/wiki/Flux\n", + "/wiki/Second_Stage_Theatre\n", + "#cite_note-bio-10\n", + "/wiki/Obie_Award\n", + "/wiki/Forty_Deuce\n", + "#cite_note-kevin-11\n", + "/wiki/Slab_Boys\n", + "/wiki/Sean_Penn\n", + "/wiki/Val_Kilmer\n", + "/wiki/Barry_Levinson\n", + "/wiki/Diner_(film)\n", + "/wiki/Steve_Guttenberg\n", + "/wiki/Daniel_Stern_(actor)\n", + "/wiki/Mickey_Rourke\n", + "/wiki/Tim_Daly\n", + "/wiki/Ellen_Barkin\n", + "#cite_note-12\n", + "/wiki/Footloose_(1984_film)\n", + "#cite_note-bio-10\n", + "/wiki/James_Dean\n", + "/wiki/Rebel_Without_a_Cause\n", + "/wiki/Mickey_Rooney\n", + "/wiki/Judy_Garland\n", + "#cite_note-time84-13\n", + "#cite_note-bacon-6\n", + "#cite_note-14\n", + "#cite_note-15\n", + "/wiki/People_(American_magazine)\n", + "/wiki/Typecasting_(acting)\n", + "/wiki/John_Hughes_(filmmaker)\n", + "/wiki/She%27s_Having_a_Baby\n", + "#cite_note-bio-10\n", + "/wiki/The_Big_Picture_(1989_film)\n", + "#cite_note-16\n", + "/wiki/Tremors_(film)\n", + "#cite_note-17\n", + "/wiki/Joel_Schumacher\n", + "/wiki/Flatliners\n", + "#cite_note-bio-10\n", + "/wiki/Elizabeth_Perkins\n", + "/wiki/He_Said,_She_Said\n", + "#cite_note-bio-10\n", + "/wiki/The_New_York_Times\n", + "#cite_note-nyt94-18\n", + "/wiki/Oliver_Stone\n", + "/wiki/JFK_(film)\n", + "#cite_note-19\n", + "/wiki/A_Few_Good_Men_(film)\n", + "#cite_note-20\n", + "/wiki/Michael_Greif\n", + "#cite_note-bio-10\n", + "/wiki/Golden_Globe_Award\n", + "/wiki/The_River_Wild\n", + "#cite_note-bio-10\n", + "/wiki/Meryl_Streep\n", + "/wiki/Murder_in_the_First_(film)\n", + "#cite_note-bio-10\n", + "/wiki/Blockbuster_(entertainment)\n", + "/wiki/Apollo_13_(film)\n", + "#cite_note-21\n", + "/wiki/Sleepers_(film)\n", + "#cite_note-22\n", + "/wiki/Picture_Perfect_(1997_film)\n", + "#cite_note-bio-10\n", + "/wiki/Losing_Chase\n", + "#cite_note-austin-23\n", + "/wiki/Digging_to_China\n", + "#cite_note-bio-10\n", + "/wiki/Payola\n", + "/wiki/Telling_Lies_in_America_(film)\n", + "#cite_note-bio-10\n", + "/wiki/Wild_Things_(film)\n", + "/wiki/Stir_of_Echoes\n", + "/wiki/David_Koepp\n", + "#cite_note-24\n", + "/wiki/File:KevinBaconTakingChanceFeb09.jpg\n", + "/wiki/File:KevinBaconTakingChanceFeb09.jpg\n", + "/wiki/Taking_Chance\n", + "/wiki/Paul_Verhoeven\n", + "/wiki/Hollow_Man\n", + "#cite_note-25\n", + "/wiki/Colin_Firth\n", + "/wiki/Rachel_Blanchard\n", + "/wiki/M%C3%A9nage_%C3%A0_trois\n", + "/wiki/Where_the_Truth_Lies\n", + "#cite_note-26\n", + "/wiki/Atom_Egoyan\n", + "/wiki/MPAA\n", + "/wiki/MPAA_film_rating_system\n", + "#cite_note-27\n", + "/wiki/Pedophile\n", + "/wiki/The_Woodsman_(2004_film)\n", + "#cite_note-28\n", + "/wiki/HBO_Films\n", + "/wiki/Taking_Chance\n", + "/wiki/Michael_Strobl\n", + "/wiki/Desert_Storm\n", + "#cite_note-29\n", + "/wiki/Screen_Actors_Guild_Award_for_Outstanding_Performance_by_a_Male_Actor_in_a_Miniseries_or_Television_Movie\n", + "/wiki/Matthew_Vaughn\n", + "/wiki/X-Men:_First_Class\n", + "#cite_note-30\n", + "/wiki/Sebastian_Shaw_(comics)\n", + "#cite_note-31\n", + "/wiki/Dustin_Lance_Black\n", + "/wiki/8_(play)\n", + "/wiki/Perry_v._Brown\n", + "/wiki/Proposition_8\n", + "/wiki/Charles_J._Cooper\n", + "#cite_note-8_the_play-32\n", + "/wiki/Wilshire_Ebell_Theatre\n", + "/wiki/American_Foundation_for_Equal_Rights\n", + "#cite_note-8_play_video-33\n", + "#cite_note-34\n", + "/wiki/The_Following\n", + "#cite_note-35\n", + "/wiki/Saturn_Award_for_Best_Actor_on_Television\n", + "#cite_note-36\n", + "/wiki/Huffington_Post\n", + "/wiki/Wikipedia:Citation_needed\n", + "/wiki/Tremors_(film)\n", + "/wiki/Wikipedia:Citation_needed\n", + "/wiki/Tremors_5:_Bloodline\n", + "/wiki/EE_(telecommunications_company)\n", + "/wiki/United_Kingdom\n", + "#cite_note-37\n", + "#cite_note-38\n", + "/wiki/Egg_as_food\n", + "#cite_note-39\n", + "/wiki/Kyra_Sedgwick\n", + "/wiki/PBS\n", + "/wiki/Lanford_Wilson\n", + "/wiki/Lemon_Sky\n", + "#cite_note-cosmo91-8\n", + "/wiki/Pyrates\n", + "/wiki/Murder_in_the_First_(film)\n", + "/wiki/The_Woodsman_(2004_film)\n", + "/wiki/Loverboy_(2005_film)\n", + "/wiki/Sosie_Bacon\n", + "/wiki/Upper_West_Side\n", + "/wiki/Manhattan\n", + "#cite_note-40\n", + "/wiki/Tracy_Pollan\n", + "#cite_note-41\n", + "#cite_note-42\n", + "#cite_note-43\n", + "/wiki/The_Times\n", + "#cite_note-44\n", + "#cite_note-45\n", + "/wiki/Will.i.am\n", + "/wiki/It%27s_a_New_Day_(Will.i.am_song)\n", + "/wiki/Barack_Obama\n", + "/wiki/Ponzi_scheme\n", + "/wiki/Bernard_Madoff\n", + "#cite_note-financialpost-46\n", + "#cite_note-47\n", + "/wiki/Finding_Your_Roots\n", + "/wiki/Henry_Louis_Gates\n", + "#cite_note-48\n", + "#cite_note-49\n", + "#cite_note-50\n", + "/wiki/Six_Degrees_of_Kevin_Bacon\n", + "/wiki/Trivia\n", + "/wiki/Big_screen\n", + "/wiki/Six_degrees_of_separation\n", + "/wiki/Internet_meme\n", + "/wiki/SixDegrees.org\n", + "#cite_note-51\n", + "/wiki/Bacon_number\n", + "/wiki/Internet_Movie_Database\n", + "#cite_note-52\n", + "/wiki/Paul_Erd%C5%91s\n", + "/wiki/Erd%C5%91s_number\n", + "/wiki/Paul_Erd%C5%91s\n", + "/wiki/Bacon_number\n", + "/wiki/Erd%C5%91s_number\n", + "/wiki/Erd%C5%91s%E2%80%93Bacon_number\n", + "#cite_note-53\n", + "/wiki/The_Bacon_Brothers\n", + "/wiki/Michael_Bacon_(musician)\n", + "/wiki/Music_album\n", + "#cite_note-54\n", + "/wiki/File:Question_book-new.svg\n", + "/wiki/Wikipedia:Citing_sources\n", + "/wiki/Wikipedia:Verifiability\n", + "//en.wikipedia.org/w/index.php?title=Kevin_Bacon&action=edit\n", + "/wiki/Help:Introduction_to_referencing_with_Wiki_Markup/1\n", + "/wiki/Wikipedia:Verifiability#Burden_of_evidence\n", + "/wiki/Help:Maintenance_template_removal\n", + "/wiki/Golden_Globe_Awards\n", + "/wiki/Golden_Globe_Award_for_Best_Supporting_Actor_%E2%80%93_Motion_Picture\n", + "/wiki/The_River_Wild\n", + "/wiki/Broadcast_Film_Critics_Association_Awards\n", + "/wiki/Broadcast_Film_Critics_Association_Award_for_Best_Actor\n", + "/wiki/Murder_in_the_First_(film)\n", + "/wiki/Screen_Actors_Guild_Awards\n", + "/wiki/Screen_Actors_Guild_Award_for_Outstanding_Performance_by_a_Cast_in_a_Motion_Picture\n", + "/wiki/Apollo_13_(film)\n", + "/wiki/Screen_Actors_Guild_Awards\n", + "/wiki/Screen_Actors_Guild_Award_for_Outstanding_Performance_by_a_Male_Actor_in_a_Supporting_Role\n", + "/wiki/Murder_in_the_First_(film)\n", + "/wiki/MTV_Movie_Awards\n", + "/wiki/MTV_Movie_Award_for_Best_Villain\n", + "/wiki/Hollow_Man\n", + "/wiki/Boston_Society_of_Film_Critics_Awards\n", + "/wiki/Boston_Society_of_Film_Critics_Award_for_Best_Cast\n", + "/wiki/Mystic_River_(film)\n", + "/wiki/Screen_Actors_Guild_Awards\n", + "/wiki/Screen_Actors_Guild_Award_for_Outstanding_Performance_by_a_Cast_in_a_Motion_Picture\n", + "/wiki/Mystic_River_(film)\n", + "/wiki/Satellite_Awards\n", + "/wiki/Satellite_Award_for_Best_Actor_%E2%80%93_Motion_Picture_Drama\n", + "/wiki/The_Woodsman_(2004_film)\n", + "/wiki/Teen_Choice_Awards\n", + "/wiki/Teen_Choice_Awards\n", + "/wiki/Beauty_Shop\n", + "/wiki/Primetime_Emmy_Awards\n", + "/wiki/Primetime_Emmy_Award_for_Outstanding_Lead_Actor_in_a_Miniseries_or_a_Movie\n", + "/wiki/Taking_Chance\n", + "/wiki/Satellite_Awards\n", + "/wiki/Satellite_Award_for_Best_Actor_%E2%80%93_Miniseries_or_Television_Film\n", + "/wiki/Taking_Chance\n", + "/wiki/Screen_Actors_Guild_Awards\n", + "/wiki/Screen_Actors_Guild_Award_for_Outstanding_Performance_by_a_Cast_in_a_Motion_Picture\n", + "/wiki/Frost/Nixon_(film)\n", + "/wiki/Golden_Globe_Awards\n", + "/wiki/Golden_Globe_Award_for_Best_Actor_%E2%80%93_Miniseries_or_Television_Film\n", + "/wiki/Taking_Chance\n", + "/wiki/Screen_Actors_Guild_Awards\n", + "/wiki/Screen_Actors_Guild_Award_for_Outstanding_Performance_by_a_Male_Actor_in_a_Miniseries_or_Television_Movie\n", + "/wiki/Taking_Chance\n", + "/wiki/Teen_Choice_Awards\n", + "/wiki/Teen_Choice_Awards\n", + "/wiki/X-Men:_First_Class\n", + "/wiki/Saturn_Awards\n", + "/wiki/Saturn_Award_for_Best_Actor_on_Television\n", + "/wiki/The_Following\n", + "/wiki/People%27s_Choice_Awards\n", + "/wiki/People%27s_Choice_Awards\n", + "/wiki/The_Following\n", + "/wiki/Saturn_Awards\n", + "/wiki/Saturn_Award_for_Best_Actor_on_Television\n", + "/wiki/The_Following\n", + "/wiki/Golden_Globe_Awards\n", + "/wiki/Golden_Globe_Award_for_Best_Actor_%E2%80%93_Television_Series_Musical_or_Comedy\n", + "/wiki/I_Love_Dick_(TV_series)\n", + "#cite_note-55\n", + "#cite_note-56\n", + "#cite_note-57\n", + "#cite_note-58\n", + "/wiki/Kevin_Bacon_filmography\n", + "/wiki/List_of_actors_with_Hollywood_Walk_of_Fame_motion_picture_stars\n", + "#cite_ref-1\n", + "https://web.archive.org/web/20090113222205/http://www.newenglandancestors.org/research/services/articles_gbr78.asp\n", + "http://www.newenglandancestors.org/research/services/articles_gbr78.asp\n", + "#cite_ref-actor_2-0\n", + "#cite_ref-actor_2-1\n", + "#cite_ref-actor_2-2\n", + "http://www.biography.com/people/kevin-bacon-9542173\n", + "#cite_ref-3\n", + "https://www.theguardian.com/film/filmblog/2009/feb/19/best-actors-never-nominated-for-oscars\n", + "#cite_ref-4\n", + "http://www.walkoffame.com/kevin-bacon\n", + "#cite_ref-walk_5-0\n", + "#cite_ref-walk_5-1\n", + "https://web.archive.org/web/20141016202657/http://www.thebiographychannel.co.uk/biographies/kevin-bacon.html\n", + "http://www.thebiographychannel.co.uk/biographies/kevin-bacon.html\n", + "#cite_ref-bacon_6-0\n", + "#cite_ref-bacon_6-1\n", + "#cite_ref-bacon_6-2\n", + "#cite_ref-bacon_6-3\n", + "http://www.biography.com/news/kevin-bacon-biography-facts\n", + "#cite_ref-7\n", + "https://movies.yahoo.com/person/kevin-bacon/biography.html\n", + "#cite_ref-cosmo91_8-0\n", + "#cite_ref-cosmo91_8-1\n", + "#cite_ref-9\n", + "http://www.nydailynews.com/entertainment/happy-halloween-superstars-start-horror-flick-gallery-1.98345\n", + "#cite_ref-bio_10-0\n", + "#cite_ref-bio_10-1\n", + "#cite_ref-bio_10-2\n", + "#cite_ref-bio_10-3\n", + "#cite_ref-bio_10-4\n", + "#cite_ref-bio_10-5\n", + "#cite_ref-bio_10-6\n", + "#cite_ref-bio_10-7\n", + "#cite_ref-bio_10-8\n", + "#cite_ref-bio_10-9\n", + "#cite_ref-bio_10-10\n", + "https://www.pbs.org/wnet/finding-your-roots/profiles/kevin-bacon%C2%A0/\n", + "#cite_ref-kevin_11-0\n", + "http://www.tvguide.com/celebrities/kevin-bacon/bio/160550\n", + "#cite_ref-12\n", + "http://news.moviefone.com/2012/03/02/diner-30th-anniversary/\n", + "#cite_ref-time84_13-0\n", + "http://www.time.com/time/magazine/article/0,9171,950019,00.html\n", + "#cite_ref-14\n", + "http://www.huffingtonpost.com/2014/08/25/kevin-bacon-footloose_n_5710413.html\n", + "#cite_ref-15\n", + "https://web.archive.org/web/20090109152125/http://www.thebiographychannel.co.uk/biography_story/522%3A492/1/Kevin_Bacon.htm\n", + "http://www.thebiographychannel.co.uk/biography_story/522:492/1/Kevin_Bacon.htm\n", + "#cite_ref-16\n", + "https://www.nytimes.com/1994/09/25/movies/a-second-wind-is-blowing-for-kevin-bacon.html\n", + "#cite_ref-17\n", + "https://www.nytimes.com/movie/review?res=9C0CE2DE1631F93AA25752C0A966958260\n", + "#cite_ref-nyt94_18-0\n", + "https://query.nytimes.com/gst/fullpage.html?res=9C07E6D91F3BF936A1575AC0A962958260&sec=&spon=&pagewanted=all\n", + "#cite_ref-19\n", + "http://www.jfk-online.com/jfkbacon.html\n", + "#cite_ref-20\n", + "http://www.tcm.com/this-month/article/143158%7C0/A-Few-Good-Men.html\n", + "#cite_ref-21\n", + "http://collider.com/kevin-bacon-commercials-footloose/\n", + "#cite_ref-22\n", + "http://www.rogerebert.com/reviews/sleepers-1996\n", + "#cite_ref-austin_23-0\n", + "http://www.austinchronicle.com/calendar/film/1997-02-07/283342/\n", + "/wiki/The_Austin_Chronicle\n", + "#cite_ref-24\n", + "http://www.criminalelement.com/blogs/2013/09/under-the-raderhorror-movies-you-may-have-missed-stir-of-echoes\n", + "#cite_ref-25\n", + "http://www.rogerebert.com/reviews/hollow-man-2000\n", + "#cite_ref-26\n", + "http://movies.about.com/od/wherethetruthlies/a/truthkb101305.htm\n", + "#cite_ref-27\n", + "http://jam.canoe.ca/Movies/2005/09/14/1216527.html\n", + "#cite_ref-28\n", + "http://www.latimes.com/entertainment/la-et-kevin-bacon-photo6-photo.html\n", + "#cite_ref-29\n", + "http://www.nydailynews.com/entertainment/tv-movies/kevin-bacon-chance-body-fallen-marine-home-article-1.392226\n", + "#cite_ref-30\n", + "https://web.archive.org/web/20100722010545/http://heatvision.hollywoodreporter.com/2010/07/winters-bone-star-cast-as-mystique-in-xmen-first-class.html\n", + "http://heatvision.hollywoodreporter.com/2010/07/winters-bone-star-cast-as-mystique-in-xmen-first-class.html\n", + "#cite_ref-31\n", + "https://web.archive.org/web/20100720060214/http://www.forcesofgeek.com/2010/07/kevin-bacon-playing-sebastian-shaw-in-x.html\n", + "http://www.forcesofgeek.com/2010/07/kevin-bacon-playing-sebastian-shaw-in-x.html\n", + "#cite_ref-8_the_play_32-0\n", + "http://www.accesshollywood.com/jesse-tyler-ferguson/glee-stars-touched-by-brad-pitt-and-george-clooneys-support-of-8_article_61543\n", + "/wiki/Access_Hollywood\n", + "#cite_ref-8_play_video_33-0\n", + "https://www.youtube.com/watch?v=qlUG8F9uVgM\n", + "#cite_ref-34\n", + "http://www.pinknews.co.uk/2012/03/01/youtube-to-broadcast-proposition-8-play-live/\n", + "#cite_ref-35\n", + "http://www.fox.com/the-following/\n", + "#cite_ref-36\n", + "https://news.yahoo.com/blogs/trending-now/kevin-bacon-gives-millennials-a-history-lesson-about-the--80s-162525915.html\n", + "#cite_ref-37\n", + "http://www.campaignlive.co.uk/news/1294856/\n", + "#cite_ref-38\n", + "http://parade.condenast.com/269380/ashleighschmitz/kevin-bacon-reprises-his-most-iconic-film-roles-in-british-commercial/\n", + "#cite_ref-39\n", + "http://money.cnn.com/2015/03/13/media/kevin-bacon-eggs/index.html?iid=HP_LN\n", + "#cite_ref-40\n", + "http://www.nydailynews.com/entertainment/tv-movies/kevin-bacon-loyalty-nyc-philly-origins-peace-bustling-city-article-1.147197\n", + "#cite_ref-41\n", + "http://www.people.com/people/archive/article/0,,20093025,00.html\n", + "#cite_ref-42\n", + "http://www.au.org/media/church-and-state/archives/2008/05/two-thumbs-up.html\n", + "#cite_ref-43\n", + "https://www.washingtonpost.com/wp-dyn/content/article/2008/03/25/AR2008032503852.html\n", + "#cite_ref-44\n", + "#cite_ref-45\n", + "http://www.foxnews.com/story/0,2933,343589,00.html\n", + "#cite_ref-financialpost_46-0\n", + "https://web.archive.org/web/20140314085857/http://economiccrisis.us/2009/06/may-god-spare-mercy-victim-tells-madoff/\n", + "http://economiccrisis.us/2009/06/may-god-spare-mercy-victim-tells-madoff/\n", + "#cite_ref-47\n", + "#cite_ref-48\n", + "http://www.huffingtonpost.com/megan-smolenyak-smolenyak/6-degrees-of-separation-k_b_900707.html\n", + "#cite_ref-49\n", + "https://web.archive.org/web/20130405182304/http://www.drawtheline.org/watch-stuff/\n", + "http://www.drawtheline.org/watch-stuff\n", + "#cite_ref-50\n", + "http://www.drawtheline.org/sign-now/\n", + "#cite_ref-51\n", + "http://www.sixdegrees.org/\n", + "#cite_ref-52\n", + "http://www.webmonkey.com/2012/09/easter-egg-google-connects-the-dots-for-bacon-number-search/\n", + "#cite_ref-53\n", + "http://www.telegraph.co.uk/science/science-news/4768389/And-the-winner-tonight-is.html\n", + "#cite_ref-54\n", + "http://baconbros.com/\n", + "#cite_ref-55\n", + "/wiki/Reuters\n", + "https://www.cbsnews.com/pictures/golden-globes-2018-highlights/50/\n", + "/wiki/CBS_News\n", + "#cite_ref-56\n", + "https://www.theverge.com/2018/1/7/16861812/golden-globes-2018-aziz-ansari-master-of-none-best-actor-tv\n", + "/wiki/The_Verge\n", + "#cite_ref-57\n", + "https://www.hollywoodreporter.com/news/aziz-ansari-wins-best-performance-by-an-actor-a-tv-series-comedy-musical-golden-globes-2018-1072154\n", + "/wiki/The_Hollywood_Reporter\n", + "#cite_ref-58\n", + "http://www.indiewire.com/2018/01/aziz-ansari-wins-golden-globe-best-actor-tv-comedy-1201914235/\n", + "/wiki/Indie_Wire\n", + "https://commons.wikimedia.org/wiki/Category:Kevin_Bacon\n", + "http://www.imdb.com/name/nm0000102/\n", + "/wiki/IMDb\n", + "https://www.ibdb.com/Person/View/90569\n", + "/wiki/Internet_Broadway_Database\n", + "https://www.wikidata.org/wiki/Q3454165#P1220\n", + "http://www.lortel.org/Archives/CreditableEntity/5597\n", + "/wiki/Lortel_Archives\n", + "https://www.allmovie.com/artist/p3164\n", + "/wiki/AllMovie\n", + "http://oracleofbacon.org\n", + "/wiki/Template:Critics%27_Choice_Movie_Award_for_Best_Actor\n", + "/wiki/Template_talk:Critics%27_Choice_Movie_Award_for_Best_Actor\n", + "//en.wikipedia.org/w/index.php?title=Template:Critics%27_Choice_Movie_Award_for_Best_Actor&action=edit\n", + "/wiki/Critics%27_Choice_Movie_Award_for_Best_Actor\n", + "/wiki/Geoffrey_Rush\n", + "/wiki/Jack_Nicholson\n", + "/wiki/Ian_McKellen\n", + "/wiki/Russell_Crowe\n", + "/wiki/Russell_Crowe\n", + "/wiki/Russell_Crowe\n", + "/wiki/Daniel_Day-Lewis\n", + "/wiki/Jack_Nicholson\n", + "/wiki/Sean_Penn\n", + "/wiki/Jamie_Foxx\n", + "/wiki/Philip_Seymour_Hoffman\n", + "/wiki/Forest_Whitaker\n", + "/wiki/Daniel_Day-Lewis\n", + "/wiki/Sean_Penn\n", + "/wiki/Jeff_Bridges\n", + "/wiki/Colin_Firth\n", + "/wiki/George_Clooney\n", + "/wiki/Daniel_Day-Lewis\n", + "/wiki/Matthew_McConaughey\n", + "/wiki/Michael_Keaton\n", + "/wiki/Leonardo_DiCaprio\n", + "/wiki/Casey_Affleck\n", + "/wiki/Gary_Oldman\n", + "/wiki/Template:GoldenGlobeBestActorTVMiniseriesFilm\n", + "/wiki/Template_talk:GoldenGlobeBestActorTVMiniseriesFilm\n", + "//en.wikipedia.org/w/index.php?title=Template:GoldenGlobeBestActorTVMiniseriesFilm&action=edit\n", + "/wiki/Golden_Globe_Award_for_Best_Actor_%E2%80%93_Miniseries_or_Television_Film\n", + "/wiki/Mickey_Rooney\n", + "/wiki/Anthony_Andrews\n", + "/wiki/Richard_Chamberlain\n", + "/wiki/Ted_Danson\n", + "/wiki/Dustin_Hoffman\n", + "/wiki/James_Woods\n", + "/wiki/Randy_Quaid\n", + "/wiki/Michael_Caine\n", + "/wiki/Stacy_Keach\n", + "/wiki/Robert_Duvall\n", + "/wiki/James_Garner\n", + "/wiki/Beau_Bridges\n", + "/wiki/Robert_Duvall\n", + "/wiki/James_Garner\n", + "/wiki/Ra%C3%BAl_Juli%C3%A1\n", + "/wiki/Gary_Sinise\n", + "/wiki/Alan_Rickman\n", + "/wiki/Ving_Rhames\n", + "/wiki/Stanley_Tucci\n", + "/wiki/Jack_Lemmon\n", + "/wiki/Brian_Dennehy\n", + "/wiki/James_Franco\n", + "/wiki/Albert_Finney\n", + "/wiki/Al_Pacino\n", + "/wiki/Geoffrey_Rush\n", + "/wiki/Jonathan_Rhys_Meyers\n", + "/wiki/Bill_Nighy\n", + "/wiki/Jim_Broadbent\n", + "/wiki/Paul_Giamatti\n", + "/wiki/Al_Pacino\n", + "/wiki/Idris_Elba\n", + "/wiki/Kevin_Costner\n", + "/wiki/Michael_Douglas\n", + "/wiki/Billy_Bob_Thornton\n", + "/wiki/Oscar_Isaac\n", + "/wiki/Tom_Hiddleston\n", + "/wiki/Ewan_McGregor\n", + "/wiki/Template:Saturn_Award_for_Best_Actor_on_Television\n", + "/wiki/Template_talk:Saturn_Award_for_Best_Actor_on_Television\n", + "//en.wikipedia.org/w/index.php?title=Template:Saturn_Award_for_Best_Actor_on_Television&action=edit\n", + "/wiki/Saturn_Award_for_Best_Actor_on_Television\n", + "/wiki/Kyle_Chandler\n", + "/wiki/Steven_Weber_(actor)\n", + "/wiki/Richard_Dean_Anderson\n", + "/wiki/David_Boreanaz\n", + "/wiki/Robert_Patrick\n", + "/wiki/Ben_Browder\n", + "/wiki/David_Boreanaz\n", + "/wiki/David_Boreanaz\n", + "/wiki/Ben_Browder\n", + "/wiki/Matthew_Fox\n", + "/wiki/Michael_C._Hall\n", + "/wiki/Matthew_Fox\n", + "/wiki/Edward_James_Olmos\n", + "/wiki/Josh_Holloway\n", + "/wiki/Stephen_Moyer\n", + "/wiki/Bryan_Cranston\n", + "/wiki/Bryan_Cranston\n", + "/wiki/Mads_Mikkelsen\n", + "/wiki/Hugh_Dancy\n", + "/wiki/Andrew_Lincoln\n", + "/wiki/Bruce_Campbell\n", + "/wiki/Andrew_Lincoln\n", + "/wiki/Template:ScreenActorsGuildAward_MaleTVMiniseriesMovie\n", + "/wiki/Template_talk:ScreenActorsGuildAward_MaleTVMiniseriesMovie\n", + "//en.wikipedia.org/w/index.php?title=Template:ScreenActorsGuildAward_MaleTVMiniseriesMovie&action=edit\n", + "/wiki/Screen_Actors_Guild_Award_for_Outstanding_Performance_by_a_Male_Actor_in_a_Miniseries_or_Television_Movie\n", + "/wiki/Ra%C3%BAl_Juli%C3%A1\n", + "/wiki/Gary_Sinise\n", + "/wiki/Alan_Rickman\n", + "/wiki/Gary_Sinise\n", + "/wiki/Christopher_Reeve\n", + "/wiki/Jack_Lemmon\n", + "/wiki/Brian_Dennehy\n", + "/wiki/Ben_Kingsley\n", + "/wiki/William_H._Macy\n", + "/wiki/Al_Pacino\n", + "/wiki/Geoffrey_Rush\n", + "/wiki/Paul_Newman\n", + "/wiki/Jeremy_Irons\n", + "/wiki/Kevin_Kline\n", + "/wiki/Paul_Giamatti\n", + "/wiki/Al_Pacino\n", + "/wiki/Paul_Giamatti\n", + "/wiki/Kevin_Costner\n", + "/wiki/Michael_Douglas\n", + "/wiki/Mark_Ruffalo\n", + "/wiki/Idris_Elba\n", + "/wiki/Bryan_Cranston\n", + "/wiki/Alexander_Skarsg%C3%A5rd\n", + "/wiki/Template:ScreenActorsGuildAward_CastMotionPicture_1995%E2%80%932000\n", + "/wiki/Template_talk:ScreenActorsGuildAward_CastMotionPicture_1995%E2%80%932000\n", + "//en.wikipedia.org/w/index.php?title=Template:ScreenActorsGuildAward_CastMotionPicture_1995%E2%80%932000&action=edit\n", + "/wiki/Screen_Actors_Guild_Award_for_Outstanding_Performance_by_a_Cast_in_a_Motion_Picture\n", + "/wiki/Apollo_13_(film)\n", + "/wiki/Tom_Hanks\n", + "/wiki/Ed_Harris\n", + "/wiki/Bill_Paxton\n", + "/wiki/Kathleen_Quinlan\n", + "/wiki/Gary_Sinise\n", + "/wiki/The_Birdcage\n", + "/wiki/Hank_Azaria\n", + "/wiki/Christine_Baranski\n", + "/wiki/Dan_Futterman\n", + "/wiki/Gene_Hackman\n", + "/wiki/Nathan_Lane\n", + "/wiki/Dianne_Wiest\n", + "/wiki/Robin_Williams\n", + "/wiki/The_Full_Monty\n", + "/wiki/Mark_Addy\n", + "/wiki/Paul_Barber_(actor)\n", + "/wiki/Robert_Carlyle\n", + "/w/index.php?title=Deirdre_Costello_(actress)&action=edit&redlink=1\n", + "/wiki/Steve_Huison\n", + "/wiki/Bruce_Jones_(actor)\n", + "/wiki/Lesley_Sharp\n", + "/wiki/William_Snape\n", + "/wiki/Hugo_Speer\n", + "/wiki/Tom_Wilkinson\n", + "/wiki/Emily_Woof\n", + "/wiki/Shakespeare_in_Love\n", + "/wiki/Ben_Affleck\n", + "/wiki/Simon_Callow\n", + "/wiki/Jim_Carter_(actor)\n", + "/wiki/Martin_Clunes\n", + "/wiki/Judi_Dench\n", + "/wiki/Joseph_Fiennes\n", + "/wiki/Colin_Firth\n", + "/wiki/Gwyneth_Paltrow\n", + "/wiki/Geoffrey_Rush\n", + "/wiki/Antony_Sher\n", + "/wiki/Imelda_Staunton\n", + "/wiki/American_Beauty_(1999_film)\n", + "/wiki/Annette_Bening\n", + "/wiki/Wes_Bentley\n", + "/wiki/Thora_Birch\n", + "/wiki/Chris_Cooper\n", + "/wiki/Peter_Gallagher\n", + "/wiki/Allison_Janney\n", + "/wiki/Kevin_Spacey\n", + "/wiki/Mena_Suvari\n", + "/wiki/Traffic_(2000_film)\n", + "/wiki/Steven_Bauer\n", + "/wiki/Benjamin_Bratt\n", + "/wiki/James_Brolin\n", + "/wiki/Don_Cheadle\n", + "/wiki/Erika_Christensen\n", + "/wiki/Clifton_Collins_Jr.\n", + "/wiki/Benicio_del_Toro\n", + "/wiki/Michael_Douglas\n", + "/wiki/Miguel_Ferrer\n", + "/wiki/Albert_Finney\n", + "/wiki/Topher_Grace\n", + "/wiki/Luis_Guzm%C3%A1n\n", + "/wiki/Amy_Irving\n", + "/wiki/Tomas_Milian\n", + "/wiki/D._W._Moffett\n", + "/wiki/Dennis_Quaid\n", + "/wiki/Peter_Riegert\n", + "/wiki/Jacob_Vargas\n", + "/wiki/Catherine_Zeta-Jones\n", + "/wiki/Screen_Actors_Guild_Award_for_Outstanding_Performance_by_a_Cast_in_a_Motion_Picture\n", + "/wiki/Template:ScreenActorsGuildAward_CastMotionPicture_1995%E2%80%932000\n", + "/wiki/Template:ScreenActorsGuildAward_CastMotionPicture_2001%E2%80%932010\n", + "/wiki/Template:ScreenActorsGuildAward_CastMotionPicture_2011%E2%80%932020\n", + "/wiki/Help:Authority_control\n", + "https://www.worldcat.org/identities/containsVIAFID/39570812\n", + "/wiki/Virtual_International_Authority_File\n", + "https://viaf.org/viaf/39570812\n", + "/wiki/Library_of_Congress_Control_Number\n", + "http://id.loc.gov/authorities/names/n88034930\n", + "/wiki/International_Standard_Name_Identifier\n", + "http://isni.org/isni/0000000121291300\n", + "/wiki/Integrated_Authority_File\n", + "https://d-nb.info/gnd/124109659\n", + "/wiki/Syst%C3%A8me_universitaire_de_documentation\n", + "https://www.idref.fr/084292652\n", + "/wiki/Biblioth%C3%A8que_nationale_de_France\n", + "http://catalogue.bnf.fr/ark:/12148/cb139817766\n", + "http://data.bnf.fr/ark:/12148/cb139817766\n", + "/wiki/MusicBrainz\n", + "https://musicbrainz.org/artist/cc0dbdfc-9b2c-4e31-8448-808412388406\n", + "/wiki/SNAC\n", + "http://socialarchive.iath.virginia.edu/ark:/99166/w6w67gw2\n", + "https://en.wikipedia.org/w/index.php?title=Kevin_Bacon&oldid=821876006\n", + "/wiki/Help:Category\n", + "/wiki/Category:1958_births\n", + "/wiki/Category:20th-century_American_male_actors\n", + "/wiki/Category:21st-century_American_male_actors\n", + "/wiki/Category:American_atheists\n", + "/wiki/Category:American_male_film_actors\n", + "/wiki/Category:American_male_soap_opera_actors\n", + "/wiki/Category:American_male_television_actors\n", + "/wiki/Category:American_male_voice_actors\n", + "/wiki/Category:The_Bacon_Brothers_members\n", + "/wiki/Category:Best_Miniseries_or_Television_Movie_Actor_Golden_Globe_winners\n", + "/wiki/Category:Circle_in_the_Square_Theatre_School_alumni\n", + "/wiki/Category:Living_people\n", + "/wiki/Category:Male_actors_from_Philadelphia\n", + "/wiki/Category:Obie_Award_recipients\n", + "/wiki/Category:Outstanding_Performance_by_a_Cast_in_a_Motion_Picture_Screen_Actors_Guild_Award_winners\n", + "/wiki/Category:Sedgwick_family\n", + "/wiki/Category:Wikipedia_indefinitely_semi-protected_biographies_of_living_people\n", + "/wiki/Category:Use_mdy_dates_from_October_2016\n", + "/wiki/Category:Articles_with_hCards\n", + "/wiki/Category:All_articles_with_unsourced_statements\n", + "/wiki/Category:Articles_with_unsourced_statements_from_January_2016\n", + "/wiki/Category:Articles_needing_additional_references_from_October_2017\n", + "/wiki/Category:All_articles_needing_additional_references\n", + "/wiki/Category:Articles_with_IBDb_links\n", + "/wiki/Category:Wikipedia_articles_with_VIAF_identifiers\n", + "/wiki/Category:Wikipedia_articles_with_LCCN_identifiers\n", + "/wiki/Category:Wikipedia_articles_with_ISNI_identifiers\n", + "/wiki/Category:Wikipedia_articles_with_GND_identifiers\n", + "/wiki/Category:Wikipedia_articles_with_BNF_identifiers\n", + "/wiki/Category:Wikipedia_articles_with_MusicBrainz_identifiers\n", + "/wiki/Category:Wikipedia_articles_with_SNAC-ID_identifiers\n", + "/wiki/Special:MyTalk\n", + "/wiki/Special:MyContributions\n", + "/w/index.php?title=Special:CreateAccount&returnto=Kevin+Bacon\n", + "/w/index.php?title=Special:UserLogin&returnto=Kevin+Bacon\n", + "/wiki/Kevin_Bacon\n", + "/wiki/Talk:Kevin_Bacon\n", + "/wiki/Kevin_Bacon\n", + "/w/index.php?title=Kevin_Bacon&action=edit\n", + "/w/index.php?title=Kevin_Bacon&action=history\n", + "/wiki/Main_Page\n", + "/wiki/Main_Page\n", + "/wiki/Portal:Contents\n", + "/wiki/Portal:Featured_content\n", + "/wiki/Portal:Current_events\n", + "/wiki/Special:Random\n", + "https://donate.wikimedia.org/wiki/Special:FundraiserRedirector?utm_source=donate&utm_medium=sidebar&utm_campaign=C13_en.wikipedia.org&uselang=en\n", + "//shop.wikimedia.org\n", + "/wiki/Help:Contents\n", + "/wiki/Wikipedia:About\n", + "/wiki/Wikipedia:Community_portal\n", + "/wiki/Special:RecentChanges\n", + "//en.wikipedia.org/wiki/Wikipedia:Contact_us\n", + "/wiki/Special:WhatLinksHere/Kevin_Bacon\n", + "/wiki/Special:RecentChangesLinked/Kevin_Bacon\n", + "/wiki/Wikipedia:File_Upload_Wizard\n", + "/wiki/Special:SpecialPages\n", + "/w/index.php?title=Kevin_Bacon&oldid=821876006\n", + "/w/index.php?title=Kevin_Bacon&action=info\n", + "https://www.wikidata.org/wiki/Special:EntityPage/Q3454165\n", + "/w/index.php?title=Special:CiteThisPage&page=Kevin_Bacon&id=821876006\n", + "/w/index.php?title=Special:Book&bookcmd=book_creator&referer=Kevin+Bacon\n", + "/w/index.php?title=Special:ElectronPdf&page=Kevin+Bacon&action=show-download-screen\n", + "/w/index.php?title=Kevin_Bacon&printable=yes\n", + "https://commons.wikimedia.org/wiki/Category:Kevin_Bacon\n", + "https://af.wikipedia.org/wiki/Kevin_Bacon\n", + "https://ar.wikipedia.org/wiki/%D9%83%D9%8A%D9%81%D9%8A%D9%86_%D8%A8%D9%8A%D9%83%D9%86\n", + "https://an.wikipedia.org/wiki/Kevin_Bacon\n", + "https://ast.wikipedia.org/wiki/Kevin_Bacon\n", + "https://azb.wikipedia.org/wiki/%DA%A9%D9%88%DB%8C%D9%86_%D8%A8%DB%8C%DA%A9%D9%86\n", + "https://zh-min-nan.wikipedia.org/wiki/Kevin_Bacon\n", + "https://bi.wikipedia.org/wiki/Kevin_Bacon\n", + "https://bg.wikipedia.org/wiki/%D0%9A%D0%B5%D0%B2%D0%B8%D0%BD_%D0%91%D0%B5%D0%B9%D0%BA%D1%8A%D0%BD\n", + "https://bs.wikipedia.org/wiki/Kevin_Bacon\n", + "https://ca.wikipedia.org/wiki/Kevin_Bacon\n", + "https://cs.wikipedia.org/wiki/Kevin_Bacon\n", + "https://da.wikipedia.org/wiki/Kevin_Bacon\n", + "https://de.wikipedia.org/wiki/Kevin_Bacon\n", + "https://el.wikipedia.org/wiki/%CE%9A%CE%AD%CE%B2%CE%B9%CE%BD_%CE%9C%CF%80%CE%AD%CE%B9%CE%BA%CE%BF%CE%BD\n", + "https://eml.wikipedia.org/wiki/Kevin_Bacon\n", + "https://es.wikipedia.org/wiki/Kevin_Bacon\n", + "https://eu.wikipedia.org/wiki/Kevin_Bacon\n", + "https://fa.wikipedia.org/wiki/%DA%A9%D9%88%DB%8C%D9%86_%D8%A8%DB%8C%DA%A9%D9%86\n", + "https://fr.wikipedia.org/wiki/Kevin_Bacon\n", + "https://gl.wikipedia.org/wiki/Kevin_Bacon\n", + "https://ko.wikipedia.org/wiki/%EC%BC%80%EB%B9%88_%EB%B2%A0%EC%9D%B4%EC%BB%A8\n", + "https://hy.wikipedia.org/wiki/%D5%94%D6%87%D5%AB%D5%B6_%D4%B2%D5%A5%D5%B5%D6%84%D5%B8%D5%B6\n", + "https://hr.wikipedia.org/wiki/Kevin_Bacon\n", + "https://io.wikipedia.org/wiki/Kevin_Bacon\n", + "https://id.wikipedia.org/wiki/Kevin_Bacon\n", + "https://it.wikipedia.org/wiki/Kevin_Bacon\n", + "https://he.wikipedia.org/wiki/%D7%A7%D7%95%D7%95%D7%99%D7%9F_%D7%91%D7%99%D7%99%D7%A7%D7%95%D7%9F\n", + "https://ka.wikipedia.org/wiki/%E1%83%99%E1%83%94%E1%83%95%E1%83%98%E1%83%9C_%E1%83%91%E1%83%94%E1%83%98%E1%83%99%E1%83%9D%E1%83%9C%E1%83%98\n", + "https://kk.wikipedia.org/wiki/%D0%9A%D0%B5%D0%B2%D0%B8%D0%BD_%D0%91%D1%8D%D0%B9%D0%BA%D0%BE%D0%BD\n", + "https://lv.wikipedia.org/wiki/Kevins_B%C4%93kons\n", + "https://hu.wikipedia.org/wiki/Kevin_Bacon\n", + "https://xmf.wikipedia.org/wiki/%E1%83%99%E1%83%94%E1%83%95%E1%83%98%E1%83%9C_%E1%83%91%E1%83%94%E1%83%98%E1%83%99%E1%83%9D%E1%83%9C%E1%83%98\n", + "https://mn.wikipedia.org/wiki/%D0%9A%D0%B5%D0%B2%D0%B8%D0%BD_%D0%91%D1%8D%D0%B9%D0%BA%D0%BE%D0%BD\n", + "https://nl.wikipedia.org/wiki/Kevin_Bacon\n", + "https://ja.wikipedia.org/wiki/%E3%82%B1%E3%83%B4%E3%82%A3%E3%83%B3%E3%83%BB%E3%83%99%E3%83%BC%E3%82%B3%E3%83%B3\n", + "https://no.wikipedia.org/wiki/Kevin_Bacon\n", + "https://oc.wikipedia.org/wiki/Kevin_Bacon\n", + "https://pl.wikipedia.org/wiki/Kevin_Bacon\n", + "https://pt.wikipedia.org/wiki/Kevin_Bacon\n", + "https://ro.wikipedia.org/wiki/Kevin_Bacon\n", + "https://ru.wikipedia.org/wiki/%D0%91%D0%B5%D0%B9%D0%BA%D0%BE%D0%BD,_%D0%9A%D0%B5%D0%B2%D0%B8%D0%BD\n", + "https://sco.wikipedia.org/wiki/Kevin_Bacon\n", + "https://simple.wikipedia.org/wiki/Kevin_Bacon\n", + "https://sk.wikipedia.org/wiki/Kevin_Bacon\n", + "https://ckb.wikipedia.org/wiki/%DA%A9%DB%8E%DA%A4%D9%86_%D8%A8%DB%95%DB%8C%DA%A9%D9%86\n", + "https://sr.wikipedia.org/wiki/%D0%9A%D0%B5%D0%B2%D0%B8%D0%BD_%D0%91%D0%B5%D1%98%D0%BA%D0%BE%D0%BD\n", + "https://sh.wikipedia.org/wiki/Kevin_Bacon\n", + "https://fi.wikipedia.org/wiki/Kevin_Bacon\n", + "https://sv.wikipedia.org/wiki/Kevin_Bacon\n", + "https://th.wikipedia.org/wiki/%E0%B9%80%E0%B8%84%E0%B8%A7%E0%B8%B4%E0%B8%99_%E0%B9%80%E0%B8%9A%E0%B8%84%E0%B8%AD%E0%B8%99\n", + "https://tr.wikipedia.org/wiki/Kevin_Bacon\n", + "https://uk.wikipedia.org/wiki/%D0%9A%D0%B5%D0%B2%D1%96%D0%BD_%D0%91%D0%B5%D0%B9%D0%BA%D0%BE%D0%BD\n", + "https://vi.wikipedia.org/wiki/Kevin_Bacon\n", + "https://zh.wikipedia.org/wiki/%E5%87%AF%E6%96%87%C2%B7%E8%B4%9D%E8%82%AF\n", + "https://www.wikidata.org/wiki/Special:EntityPage/Q3454165#sitelinks-wikipedia\n", + "//en.wikipedia.org/wiki/Wikipedia:Text_of_Creative_Commons_Attribution-ShareAlike_3.0_Unported_License\n", + "//creativecommons.org/licenses/by-sa/3.0/\n", + "//wikimediafoundation.org/wiki/Terms_of_Use\n", + "//wikimediafoundation.org/wiki/Privacy_policy\n", + "//www.wikimediafoundation.org/\n", + "https://wikimediafoundation.org/wiki/Privacy_policy\n", + "/wiki/Wikipedia:About\n", + "/wiki/Wikipedia:General_disclaimer\n", + "//en.wikipedia.org/wiki/Wikipedia:Contact_us\n", + "https://www.mediawiki.org/wiki/Special:MyLanguage/How_to_contribute\n", + "https://wikimediafoundation.org/wiki/Cookie_statement\n", + "//en.m.wikipedia.org/w/index.php?title=Kevin_Bacon&mobileaction=toggle_view_mobile\n", + "https://wikimediafoundation.org/\n", + "//www.mediawiki.org/\n" + ] + } + ], + "source": [ + "from urllib.request import urlopen\n", + "from bs4 import BeautifulSoup \n", + "\n", + "html = urlopen('http://en.wikipedia.org/wiki/Kevin_Bacon')\n", + "bs = BeautifulSoup(html, 'html.parser')\n", + "for link in bs.find_all('a'):\n", + " if 'href' in link.attrs:\n", + " print(link.attrs['href'])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# # Retrieving Articles Only" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "/wiki/Kevin_Bacon_(disambiguation)\n", + "/wiki/San_Diego_Comic-Con\n", + "/wiki/Philadelphia\n", + "/wiki/Pennsylvania\n", + "/wiki/Kyra_Sedgwick\n", + "/wiki/Sosie_Bacon\n", + "/wiki/Edmund_Bacon_(architect)\n", + "/wiki/Michael_Bacon_(musician)\n", + "/wiki/Footloose_(1984_film)\n", + "/wiki/JFK_(film)\n", + "/wiki/A_Few_Good_Men\n", + "/wiki/Apollo_13_(film)\n", + "/wiki/Mystic_River_(film)\n", + "/wiki/Sleepers\n", + "/wiki/The_Woodsman_(2004_film)\n", + "/wiki/Fox_Broadcasting_Company\n", + "/wiki/The_Following\n", + "/wiki/HBO\n", + "/wiki/Taking_Chance\n", + "/wiki/Golden_Globe_Award\n", + "/wiki/Screen_Actors_Guild_Award\n", + "/wiki/Primetime_Emmy_Award\n", + "/wiki/The_Guardian\n", + "/wiki/Academy_Award\n", + "/wiki/Hollywood_Walk_of_Fame\n", + "/wiki/Social_networks\n", + "/wiki/Six_Degrees_of_Kevin_Bacon\n", + "/wiki/SixDegrees.org\n", + "/wiki/Philadelphia\n", + "/wiki/Edmund_Bacon_(architect)\n", + "/wiki/Pennsylvania_Governor%27s_School_for_the_Arts\n", + "/wiki/Bucknell_University\n", + "/wiki/Glory_Van_Scott\n", + "/wiki/Circle_in_the_Square\n", + "/wiki/Nancy_Mills\n", + "/wiki/Cosmopolitan_(magazine)\n", + "/wiki/Fraternities_and_sororities\n", + "/wiki/Animal_House\n", + "/wiki/Search_for_Tomorrow\n", + "/wiki/Guiding_Light\n", + "/wiki/Friday_the_13th_(1980_film)\n", + "/wiki/Phoenix_Theater\n", + "/wiki/Flux\n", + "/wiki/Second_Stage_Theatre\n", + "/wiki/Obie_Award\n", + "/wiki/Forty_Deuce\n", + "/wiki/Slab_Boys\n", + "/wiki/Sean_Penn\n", + "/wiki/Val_Kilmer\n", + "/wiki/Barry_Levinson\n", + "/wiki/Diner_(film)\n", + "/wiki/Steve_Guttenberg\n", + "/wiki/Daniel_Stern_(actor)\n", + "/wiki/Mickey_Rourke\n", + "/wiki/Tim_Daly\n", + "/wiki/Ellen_Barkin\n", + "/wiki/Footloose_(1984_film)\n", + "/wiki/James_Dean\n", + "/wiki/Rebel_Without_a_Cause\n", + "/wiki/Mickey_Rooney\n", + "/wiki/Judy_Garland\n", + "/wiki/People_(American_magazine)\n", + "/wiki/Typecasting_(acting)\n", + "/wiki/John_Hughes_(filmmaker)\n", + "/wiki/She%27s_Having_a_Baby\n", + "/wiki/The_Big_Picture_(1989_film)\n", + "/wiki/Tremors_(film)\n", + "/wiki/Joel_Schumacher\n", + "/wiki/Flatliners\n", + "/wiki/Elizabeth_Perkins\n", + "/wiki/He_Said,_She_Said\n", + "/wiki/The_New_York_Times\n", + "/wiki/Oliver_Stone\n", + "/wiki/JFK_(film)\n", + "/wiki/A_Few_Good_Men_(film)\n", + "/wiki/Michael_Greif\n", + "/wiki/Golden_Globe_Award\n", + "/wiki/The_River_Wild\n", + "/wiki/Meryl_Streep\n", + "/wiki/Murder_in_the_First_(film)\n", + "/wiki/Blockbuster_(entertainment)\n", + "/wiki/Apollo_13_(film)\n", + "/wiki/Sleepers_(film)\n", + "/wiki/Picture_Perfect_(1997_film)\n", + "/wiki/Losing_Chase\n", + "/wiki/Digging_to_China\n", + "/wiki/Payola\n", + "/wiki/Telling_Lies_in_America_(film)\n", + "/wiki/Wild_Things_(film)\n", + "/wiki/Stir_of_Echoes\n", + "/wiki/David_Koepp\n", + "/wiki/Taking_Chance\n", + "/wiki/Paul_Verhoeven\n", + "/wiki/Hollow_Man\n", + "/wiki/Colin_Firth\n", + "/wiki/Rachel_Blanchard\n", + "/wiki/M%C3%A9nage_%C3%A0_trois\n", + "/wiki/Where_the_Truth_Lies\n", + "/wiki/Atom_Egoyan\n", + "/wiki/MPAA\n", + "/wiki/MPAA_film_rating_system\n", + "/wiki/Pedophile\n", + "/wiki/The_Woodsman_(2004_film)\n", + "/wiki/HBO_Films\n", + "/wiki/Taking_Chance\n", + "/wiki/Michael_Strobl\n", + "/wiki/Desert_Storm\n", + "/wiki/Screen_Actors_Guild_Award_for_Outstanding_Performance_by_a_Male_Actor_in_a_Miniseries_or_Television_Movie\n", + "/wiki/Matthew_Vaughn\n", + "/wiki/Sebastian_Shaw_(comics)\n", + "/wiki/Dustin_Lance_Black\n", + "/wiki/8_(play)\n", + "/wiki/Perry_v._Brown\n", + "/wiki/Proposition_8\n", + "/wiki/Charles_J._Cooper\n", + "/wiki/Wilshire_Ebell_Theatre\n", + "/wiki/American_Foundation_for_Equal_Rights\n", + "/wiki/The_Following\n", + "/wiki/Saturn_Award_for_Best_Actor_on_Television\n", + "/wiki/Huffington_Post\n", + "/wiki/Tremors_(film)\n", + "/wiki/EE_(telecommunications_company)\n", + "/wiki/United_Kingdom\n", + "/wiki/Egg_as_food\n", + "/wiki/Kyra_Sedgwick\n", + "/wiki/PBS\n", + "/wiki/Lanford_Wilson\n", + "/wiki/Lemon_Sky\n", + "/wiki/Pyrates\n", + "/wiki/Murder_in_the_First_(film)\n", + "/wiki/The_Woodsman_(2004_film)\n", + "/wiki/Loverboy_(2005_film)\n", + "/wiki/Sosie_Bacon\n", + "/wiki/Upper_West_Side\n", + "/wiki/Manhattan\n", + "/wiki/Tracy_Pollan\n", + "/wiki/The_Times\n", + "/wiki/Will.i.am\n", + "/wiki/It%27s_a_New_Day_(Will.i.am_song)\n", + "/wiki/Barack_Obama\n", + "/wiki/Ponzi_scheme\n", + "/wiki/Bernard_Madoff\n", + "/wiki/Finding_Your_Roots\n", + "/wiki/Henry_Louis_Gates\n", + "/wiki/Six_Degrees_of_Kevin_Bacon\n", + "/wiki/Trivia\n", + "/wiki/Big_screen\n", + "/wiki/Six_degrees_of_separation\n", + "/wiki/Internet_meme\n", + "/wiki/SixDegrees.org\n", + "/wiki/Bacon_number\n", + "/wiki/Internet_Movie_Database\n", + "/wiki/Paul_Erd%C5%91s\n", + "/wiki/Erd%C5%91s_number\n", + "/wiki/Paul_Erd%C5%91s\n", + "/wiki/Bacon_number\n", + "/wiki/Erd%C5%91s_number\n", + "/wiki/Erd%C5%91s%E2%80%93Bacon_number\n", + "/wiki/The_Bacon_Brothers\n", + "/wiki/Michael_Bacon_(musician)\n", + "/wiki/Music_album\n", + "/wiki/Golden_Globe_Awards\n", + "/wiki/Golden_Globe_Award_for_Best_Supporting_Actor_%E2%80%93_Motion_Picture\n", + "/wiki/The_River_Wild\n", + "/wiki/Broadcast_Film_Critics_Association_Awards\n", + "/wiki/Broadcast_Film_Critics_Association_Award_for_Best_Actor\n", + "/wiki/Murder_in_the_First_(film)\n", + "/wiki/Screen_Actors_Guild_Awards\n", + "/wiki/Screen_Actors_Guild_Award_for_Outstanding_Performance_by_a_Cast_in_a_Motion_Picture\n", + "/wiki/Apollo_13_(film)\n", + "/wiki/Screen_Actors_Guild_Awards\n", + "/wiki/Screen_Actors_Guild_Award_for_Outstanding_Performance_by_a_Male_Actor_in_a_Supporting_Role\n", + "/wiki/Murder_in_the_First_(film)\n", + "/wiki/MTV_Movie_Awards\n", + "/wiki/MTV_Movie_Award_for_Best_Villain\n", + "/wiki/Hollow_Man\n", + "/wiki/Boston_Society_of_Film_Critics_Awards\n", + "/wiki/Boston_Society_of_Film_Critics_Award_for_Best_Cast\n", + "/wiki/Mystic_River_(film)\n", + "/wiki/Screen_Actors_Guild_Awards\n", + "/wiki/Screen_Actors_Guild_Award_for_Outstanding_Performance_by_a_Cast_in_a_Motion_Picture\n", + "/wiki/Mystic_River_(film)\n", + "/wiki/Satellite_Awards\n", + "/wiki/Satellite_Award_for_Best_Actor_%E2%80%93_Motion_Picture_Drama\n", + "/wiki/The_Woodsman_(2004_film)\n", + "/wiki/Teen_Choice_Awards\n", + "/wiki/Teen_Choice_Awards\n", + "/wiki/Beauty_Shop\n", + "/wiki/Primetime_Emmy_Awards\n", + "/wiki/Primetime_Emmy_Award_for_Outstanding_Lead_Actor_in_a_Miniseries_or_a_Movie\n", + "/wiki/Taking_Chance\n", + "/wiki/Satellite_Awards\n", + "/wiki/Satellite_Award_for_Best_Actor_%E2%80%93_Miniseries_or_Television_Film\n", + "/wiki/Taking_Chance\n", + "/wiki/Screen_Actors_Guild_Awards\n", + "/wiki/Screen_Actors_Guild_Award_for_Outstanding_Performance_by_a_Cast_in_a_Motion_Picture\n", + "/wiki/Frost/Nixon_(film)\n", + "/wiki/Golden_Globe_Awards\n", + "/wiki/Golden_Globe_Award_for_Best_Actor_%E2%80%93_Miniseries_or_Television_Film\n", + "/wiki/Taking_Chance\n", + "/wiki/Screen_Actors_Guild_Awards\n", + "/wiki/Screen_Actors_Guild_Award_for_Outstanding_Performance_by_a_Male_Actor_in_a_Miniseries_or_Television_Movie\n", + "/wiki/Taking_Chance\n", + "/wiki/Teen_Choice_Awards\n", + "/wiki/Teen_Choice_Awards\n", + "/wiki/Saturn_Awards\n", + "/wiki/Saturn_Award_for_Best_Actor_on_Television\n", + "/wiki/The_Following\n", + "/wiki/People%27s_Choice_Awards\n", + "/wiki/People%27s_Choice_Awards\n", + "/wiki/The_Following\n", + "/wiki/Saturn_Awards\n", + "/wiki/Saturn_Award_for_Best_Actor_on_Television\n", + "/wiki/The_Following\n", + "/wiki/Golden_Globe_Awards\n", + "/wiki/Golden_Globe_Award_for_Best_Actor_%E2%80%93_Television_Series_Musical_or_Comedy\n", + "/wiki/I_Love_Dick_(TV_series)\n", + "/wiki/Kevin_Bacon_filmography\n", + "/wiki/List_of_actors_with_Hollywood_Walk_of_Fame_motion_picture_stars\n", + "/wiki/The_Austin_Chronicle\n", + "/wiki/Access_Hollywood\n", + "/wiki/Reuters\n", + "/wiki/CBS_News\n", + "/wiki/The_Verge\n", + "/wiki/The_Hollywood_Reporter\n", + "/wiki/Indie_Wire\n", + "/wiki/IMDb\n", + "/wiki/Internet_Broadway_Database\n", + "/wiki/Lortel_Archives\n", + "/wiki/AllMovie\n", + "/wiki/Critics%27_Choice_Movie_Award_for_Best_Actor\n", + "/wiki/Geoffrey_Rush\n", + "/wiki/Jack_Nicholson\n", + "/wiki/Ian_McKellen\n", + "/wiki/Russell_Crowe\n", + "/wiki/Russell_Crowe\n", + "/wiki/Russell_Crowe\n", + "/wiki/Daniel_Day-Lewis\n", + "/wiki/Jack_Nicholson\n", + "/wiki/Sean_Penn\n", + "/wiki/Jamie_Foxx\n", + "/wiki/Philip_Seymour_Hoffman\n", + "/wiki/Forest_Whitaker\n", + "/wiki/Daniel_Day-Lewis\n", + "/wiki/Sean_Penn\n", + "/wiki/Jeff_Bridges\n", + "/wiki/Colin_Firth\n", + "/wiki/George_Clooney\n", + "/wiki/Daniel_Day-Lewis\n", + "/wiki/Matthew_McConaughey\n", + "/wiki/Michael_Keaton\n", + "/wiki/Leonardo_DiCaprio\n", + "/wiki/Casey_Affleck\n", + "/wiki/Gary_Oldman\n", + "/wiki/Golden_Globe_Award_for_Best_Actor_%E2%80%93_Miniseries_or_Television_Film\n", + "/wiki/Mickey_Rooney\n", + "/wiki/Anthony_Andrews\n", + "/wiki/Richard_Chamberlain\n", + "/wiki/Ted_Danson\n", + "/wiki/Dustin_Hoffman\n", + "/wiki/James_Woods\n", + "/wiki/Randy_Quaid\n", + "/wiki/Michael_Caine\n", + "/wiki/Stacy_Keach\n", + "/wiki/Robert_Duvall\n", + "/wiki/James_Garner\n", + "/wiki/Beau_Bridges\n", + "/wiki/Robert_Duvall\n", + "/wiki/James_Garner\n", + "/wiki/Ra%C3%BAl_Juli%C3%A1\n", + "/wiki/Gary_Sinise\n", + "/wiki/Alan_Rickman\n", + "/wiki/Ving_Rhames\n", + "/wiki/Stanley_Tucci\n", + "/wiki/Jack_Lemmon\n", + "/wiki/Brian_Dennehy\n", + "/wiki/James_Franco\n", + "/wiki/Albert_Finney\n", + "/wiki/Al_Pacino\n", + "/wiki/Geoffrey_Rush\n", + "/wiki/Jonathan_Rhys_Meyers\n", + "/wiki/Bill_Nighy\n", + "/wiki/Jim_Broadbent\n", + "/wiki/Paul_Giamatti\n", + "/wiki/Al_Pacino\n", + "/wiki/Idris_Elba\n", + "/wiki/Kevin_Costner\n", + "/wiki/Michael_Douglas\n", + "/wiki/Billy_Bob_Thornton\n", + "/wiki/Oscar_Isaac\n", + "/wiki/Tom_Hiddleston\n", + "/wiki/Ewan_McGregor\n", + "/wiki/Saturn_Award_for_Best_Actor_on_Television\n", + "/wiki/Kyle_Chandler\n", + "/wiki/Steven_Weber_(actor)\n", + "/wiki/Richard_Dean_Anderson\n", + "/wiki/David_Boreanaz\n", + "/wiki/Robert_Patrick\n", + "/wiki/Ben_Browder\n", + "/wiki/David_Boreanaz\n", + "/wiki/David_Boreanaz\n", + "/wiki/Ben_Browder\n", + "/wiki/Matthew_Fox\n", + "/wiki/Michael_C._Hall\n", + "/wiki/Matthew_Fox\n", + "/wiki/Edward_James_Olmos\n", + "/wiki/Josh_Holloway\n", + "/wiki/Stephen_Moyer\n", + "/wiki/Bryan_Cranston\n", + "/wiki/Bryan_Cranston\n", + "/wiki/Mads_Mikkelsen\n", + "/wiki/Hugh_Dancy\n", + "/wiki/Andrew_Lincoln\n", + "/wiki/Bruce_Campbell\n", + "/wiki/Andrew_Lincoln\n", + "/wiki/Screen_Actors_Guild_Award_for_Outstanding_Performance_by_a_Male_Actor_in_a_Miniseries_or_Television_Movie\n", + "/wiki/Ra%C3%BAl_Juli%C3%A1\n", + "/wiki/Gary_Sinise\n", + "/wiki/Alan_Rickman\n", + "/wiki/Gary_Sinise\n", + "/wiki/Christopher_Reeve\n", + "/wiki/Jack_Lemmon\n", + "/wiki/Brian_Dennehy\n", + "/wiki/Ben_Kingsley\n", + "/wiki/William_H._Macy\n", + "/wiki/Al_Pacino\n", + "/wiki/Geoffrey_Rush\n", + "/wiki/Paul_Newman\n", + "/wiki/Jeremy_Irons\n", + "/wiki/Kevin_Kline\n", + "/wiki/Paul_Giamatti\n", + "/wiki/Al_Pacino\n", + "/wiki/Paul_Giamatti\n", + "/wiki/Kevin_Costner\n", + "/wiki/Michael_Douglas\n", + "/wiki/Mark_Ruffalo\n", + "/wiki/Idris_Elba\n", + "/wiki/Bryan_Cranston\n", + "/wiki/Alexander_Skarsg%C3%A5rd\n", + "/wiki/Screen_Actors_Guild_Award_for_Outstanding_Performance_by_a_Cast_in_a_Motion_Picture\n", + "/wiki/Apollo_13_(film)\n", + "/wiki/Tom_Hanks\n", + "/wiki/Ed_Harris\n", + "/wiki/Bill_Paxton\n", + "/wiki/Kathleen_Quinlan\n", + "/wiki/Gary_Sinise\n", + "/wiki/The_Birdcage\n", + "/wiki/Hank_Azaria\n", + "/wiki/Christine_Baranski\n", + "/wiki/Dan_Futterman\n", + "/wiki/Gene_Hackman\n", + "/wiki/Nathan_Lane\n", + "/wiki/Dianne_Wiest\n", + "/wiki/Robin_Williams\n", + "/wiki/The_Full_Monty\n", + "/wiki/Mark_Addy\n", + "/wiki/Paul_Barber_(actor)\n", + "/wiki/Robert_Carlyle\n", + "/wiki/Steve_Huison\n", + "/wiki/Bruce_Jones_(actor)\n", + "/wiki/Lesley_Sharp\n", + "/wiki/William_Snape\n", + "/wiki/Hugo_Speer\n", + "/wiki/Tom_Wilkinson\n", + "/wiki/Emily_Woof\n", + "/wiki/Shakespeare_in_Love\n", + "/wiki/Ben_Affleck\n", + "/wiki/Simon_Callow\n", + "/wiki/Jim_Carter_(actor)\n", + "/wiki/Martin_Clunes\n", + "/wiki/Judi_Dench\n", + "/wiki/Joseph_Fiennes\n", + "/wiki/Colin_Firth\n", + "/wiki/Gwyneth_Paltrow\n", + "/wiki/Geoffrey_Rush\n", + "/wiki/Antony_Sher\n", + "/wiki/Imelda_Staunton\n", + "/wiki/American_Beauty_(1999_film)\n", + "/wiki/Annette_Bening\n", + "/wiki/Wes_Bentley\n", + "/wiki/Thora_Birch\n", + "/wiki/Chris_Cooper\n", + "/wiki/Peter_Gallagher\n", + "/wiki/Allison_Janney\n", + "/wiki/Kevin_Spacey\n", + "/wiki/Mena_Suvari\n", + "/wiki/Traffic_(2000_film)\n", + "/wiki/Steven_Bauer\n", + "/wiki/Benjamin_Bratt\n", + "/wiki/James_Brolin\n", + "/wiki/Don_Cheadle\n", + "/wiki/Erika_Christensen\n", + "/wiki/Clifton_Collins_Jr.\n", + "/wiki/Benicio_del_Toro\n", + "/wiki/Michael_Douglas\n", + "/wiki/Miguel_Ferrer\n", + "/wiki/Albert_Finney\n", + "/wiki/Topher_Grace\n", + "/wiki/Luis_Guzm%C3%A1n\n", + "/wiki/Amy_Irving\n", + "/wiki/Tomas_Milian\n", + "/wiki/D._W._Moffett\n", + "/wiki/Dennis_Quaid\n", + "/wiki/Peter_Riegert\n", + "/wiki/Jacob_Vargas\n", + "/wiki/Catherine_Zeta-Jones\n", + "/wiki/Screen_Actors_Guild_Award_for_Outstanding_Performance_by_a_Cast_in_a_Motion_Picture\n", + "/wiki/Virtual_International_Authority_File\n", + "/wiki/Library_of_Congress_Control_Number\n", + "/wiki/International_Standard_Name_Identifier\n", + "/wiki/Integrated_Authority_File\n", + "/wiki/Syst%C3%A8me_universitaire_de_documentation\n", + "/wiki/Biblioth%C3%A8que_nationale_de_France\n", + "/wiki/MusicBrainz\n", + "/wiki/SNAC\n" + ] + } + ], + "source": [ + "from urllib.request import urlopen \n", + "from bs4 import BeautifulSoup \n", + "import re\n", + "\n", + "html = urlopen('http://en.wikipedia.org/wiki/Kevin_Bacon')\n", + "bs = BeautifulSoup(html, 'html.parser')\n", + "for link in bs.find('div', {'id':'bodyContent'}).find_all(\n", + " 'a', href=re.compile('^(/wiki/)((?!:).)*$')):\n", + " if 'href' in link.attrs:\n", + " print(link.attrs['href'])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# # Random Walk" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "/wiki/Screen_Actors_Guild_Award_for_Outstanding_Performance_by_a_Cast_in_a_Motion_Picture\n", + "/wiki/Paul_Barber_(actor)\n", + "/wiki/Christine_Baranski\n", + "/wiki/Brendan_Fraser\n", + "/wiki/Derek_Jacobi\n", + "/wiki/Shea_Whigham\n" + ] + }, + { + "ename": "KeyboardInterrupt", + "evalue": "", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mKeyboardInterrupt\u001b[0m Traceback (most recent call last)", + "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[1;32m 15\u001b[0m \u001b[0mnewArticle\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mlinks\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mrandom\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mrandint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;36m0\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mlen\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mlinks\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m-\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mattrs\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m'href'\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 16\u001b[0m \u001b[0mprint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mnewArticle\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 17\u001b[0;31m \u001b[0mlinks\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mgetLinks\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mnewArticle\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m", + "\u001b[0;32m\u001b[0m in \u001b[0;36mgetLinks\u001b[0;34m(articleUrl)\u001b[0m\n\u001b[1;32m 8\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0mgetLinks\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0marticleUrl\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 9\u001b[0m \u001b[0mhtml\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0murlopen\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'http://en.wikipedia.org{}'\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mformat\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0marticleUrl\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 10\u001b[0;31m \u001b[0mbs\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mBeautifulSoup\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mhtml\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m'html.parser'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 11\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mbs\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mfind\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'div'\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m{\u001b[0m\u001b[0;34m'id'\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m'bodyContent'\u001b[0m\u001b[0;34m}\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mfind_all\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'a'\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mhref\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mre\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mcompile\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'^(/wiki/)((?!:).)*$'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 12\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/bs4/__init__.py\u001b[0m in \u001b[0;36m__init__\u001b[0;34m(self, markup, features, builder, parse_only, from_encoding, exclude_encodings, **kwargs)\u001b[0m\n\u001b[1;32m 189\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 190\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mhasattr\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mmarkup\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m'read'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0;31m# It's a file-type object.\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 191\u001b[0;31m \u001b[0mmarkup\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mmarkup\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mread\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 192\u001b[0m elif len(markup) <= 256 and (\n\u001b[1;32m 193\u001b[0m \u001b[0;34m(\u001b[0m\u001b[0misinstance\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mmarkup\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mbytes\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;32mand\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0;34mb'<'\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mmarkup\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/http/client.py\u001b[0m in \u001b[0;36mread\u001b[0;34m(self, amt)\u001b[0m\n\u001b[1;32m 460\u001b[0m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 461\u001b[0m \u001b[0;32mtry\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 462\u001b[0;31m \u001b[0ms\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_safe_read\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mlength\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 463\u001b[0m \u001b[0;32mexcept\u001b[0m \u001b[0mIncompleteRead\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 464\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_close_conn\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/http/client.py\u001b[0m in \u001b[0;36m_safe_read\u001b[0;34m(self, amt)\u001b[0m\n\u001b[1;32m 610\u001b[0m \u001b[0ms\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m[\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 611\u001b[0m \u001b[0;32mwhile\u001b[0m \u001b[0mamt\u001b[0m \u001b[0;34m>\u001b[0m \u001b[0;36m0\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 612\u001b[0;31m \u001b[0mchunk\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mfp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mread\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mmin\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mamt\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mMAXAMOUNT\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 613\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0mchunk\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 614\u001b[0m \u001b[0;32mraise\u001b[0m \u001b[0mIncompleteRead\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34mb''\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mjoin\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0ms\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mamt\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/socket.py\u001b[0m in \u001b[0;36mreadinto\u001b[0;34m(self, b)\u001b[0m\n\u001b[1;32m 584\u001b[0m \u001b[0;32mwhile\u001b[0m \u001b[0;32mTrue\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 585\u001b[0m \u001b[0;32mtry\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 586\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_sock\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mrecv_into\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mb\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 587\u001b[0m \u001b[0;32mexcept\u001b[0m \u001b[0mtimeout\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 588\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_timeout_occurred\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;32mTrue\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/ssl.py\u001b[0m in \u001b[0;36mrecv_into\u001b[0;34m(self, buffer, nbytes, flags)\u001b[0m\n\u001b[1;32m 1000\u001b[0m \u001b[0;34m\"non-zero flags not allowed in calls to recv_into() on %s\"\u001b[0m \u001b[0;34m%\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1001\u001b[0m self.__class__)\n\u001b[0;32m-> 1002\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mread\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mnbytes\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mbuffer\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 1003\u001b[0m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1004\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0msocket\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mrecv_into\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mbuffer\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mnbytes\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mflags\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/ssl.py\u001b[0m in \u001b[0;36mread\u001b[0;34m(self, len, buffer)\u001b[0m\n\u001b[1;32m 863\u001b[0m \u001b[0;32mraise\u001b[0m \u001b[0mValueError\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"Read on closed or unwrapped SSL socket.\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 864\u001b[0m \u001b[0;32mtry\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 865\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_sslobj\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mread\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mlen\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mbuffer\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 866\u001b[0m \u001b[0;32mexcept\u001b[0m \u001b[0mSSLError\u001b[0m \u001b[0;32mas\u001b[0m \u001b[0mx\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 867\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mx\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m0\u001b[0m\u001b[0;34m]\u001b[0m \u001b[0;34m==\u001b[0m \u001b[0mSSL_ERROR_EOF\u001b[0m \u001b[0;32mand\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msuppress_ragged_eofs\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/ssl.py\u001b[0m in \u001b[0;36mread\u001b[0;34m(self, len, buffer)\u001b[0m\n\u001b[1;32m 623\u001b[0m \"\"\"\n\u001b[1;32m 624\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mbuffer\u001b[0m \u001b[0;32mis\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0;32mNone\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 625\u001b[0;31m \u001b[0mv\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_sslobj\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mread\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mlen\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mbuffer\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 626\u001b[0m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 627\u001b[0m \u001b[0mv\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_sslobj\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mread\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mlen\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;31mKeyboardInterrupt\u001b[0m: " + ] + } + ], + "source": [ + "from urllib.request import urlopen\n", + "from bs4 import BeautifulSoup\n", + "import datetime\n", + "import random\n", + "import re\n", + "\n", + "random.seed(datetime.datetime.now())\n", + "def getLinks(articleUrl):\n", + " html = urlopen('http://en.wikipedia.org{}'.format(articleUrl))\n", + " bs = BeautifulSoup(html, 'html.parser')\n", + " return bs.find('div', {'id':'bodyContent'}).find_all('a', href=re.compile('^(/wiki/)((?!:).)*$'))\n", + "\n", + "links = getLinks('/wiki/Kevin_Bacon')\n", + "while len(links) > 0:\n", + " newArticle = links[random.randint(0, len(links)-1)].attrs['href']\n", + " print(newArticle)\n", + " links = getLinks(newArticle)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# # Recursively crawling an entire site" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "/wiki/Wikipedia\n", + "/wiki/Wikipedia:Protection_policy#semi\n", + "/wiki/Wikipedia:Requests_for_page_protection\n", + "/wiki/Wikipedia:Requests_for_permissions\n" + ] + }, + { + "ename": "KeyboardInterrupt", + "evalue": "", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mKeyboardInterrupt\u001b[0m Traceback (most recent call last)", + "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[1;32m 16\u001b[0m \u001b[0mpages\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0madd\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mnewPage\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 17\u001b[0m \u001b[0mgetLinks\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mnewPage\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 18\u001b[0;31m \u001b[0mgetLinks\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m''\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m", + "\u001b[0;32m\u001b[0m in \u001b[0;36mgetLinks\u001b[0;34m(pageUrl)\u001b[0m\n\u001b[1;32m 15\u001b[0m \u001b[0mprint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mnewPage\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 16\u001b[0m \u001b[0mpages\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0madd\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mnewPage\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 17\u001b[0;31m \u001b[0mgetLinks\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mnewPage\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 18\u001b[0m \u001b[0mgetLinks\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m''\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m\u001b[0m in \u001b[0;36mgetLinks\u001b[0;34m(pageUrl)\u001b[0m\n\u001b[1;32m 15\u001b[0m \u001b[0mprint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mnewPage\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 16\u001b[0m \u001b[0mpages\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0madd\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mnewPage\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 17\u001b[0;31m \u001b[0mgetLinks\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mnewPage\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 18\u001b[0m \u001b[0mgetLinks\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m''\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m\u001b[0m in \u001b[0;36mgetLinks\u001b[0;34m(pageUrl)\u001b[0m\n\u001b[1;32m 15\u001b[0m \u001b[0mprint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mnewPage\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 16\u001b[0m \u001b[0mpages\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0madd\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mnewPage\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 17\u001b[0;31m \u001b[0mgetLinks\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mnewPage\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 18\u001b[0m \u001b[0mgetLinks\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m''\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m\u001b[0m in \u001b[0;36mgetLinks\u001b[0;34m(pageUrl)\u001b[0m\n\u001b[1;32m 15\u001b[0m \u001b[0mprint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mnewPage\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 16\u001b[0m \u001b[0mpages\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0madd\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mnewPage\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 17\u001b[0;31m \u001b[0mgetLinks\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mnewPage\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 18\u001b[0m \u001b[0mgetLinks\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m''\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m\u001b[0m in \u001b[0;36mgetLinks\u001b[0;34m(pageUrl)\u001b[0m\n\u001b[1;32m 6\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0mgetLinks\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mpageUrl\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 7\u001b[0m \u001b[0;32mglobal\u001b[0m \u001b[0mpages\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 8\u001b[0;31m \u001b[0mhtml\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0murlopen\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'http://en.wikipedia.org{}'\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mformat\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mpageUrl\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 9\u001b[0m \u001b[0mbs\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mBeautifulSoup\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mhtml\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m'html.parser'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 10\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0mlink\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mbs\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mfind_all\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'a'\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mhref\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mre\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mcompile\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'^(/wiki/)'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/urllib/request.py\u001b[0m in \u001b[0;36murlopen\u001b[0;34m(url, data, timeout, cafile, capath, cadefault, context)\u001b[0m\n\u001b[1;32m 221\u001b[0m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 222\u001b[0m \u001b[0mopener\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0m_opener\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 223\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mopener\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mopen\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0murl\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mdata\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mtimeout\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 224\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 225\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0minstall_opener\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mopener\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/urllib/request.py\u001b[0m in \u001b[0;36mopen\u001b[0;34m(self, fullurl, data, timeout)\u001b[0m\n\u001b[1;32m 530\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0mprocessor\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mprocess_response\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mget\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mprotocol\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m[\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 531\u001b[0m \u001b[0mmeth\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mgetattr\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mprocessor\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mmeth_name\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 532\u001b[0;31m \u001b[0mresponse\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mmeth\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mreq\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mresponse\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 533\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 534\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mresponse\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/urllib/request.py\u001b[0m in \u001b[0;36mhttp_response\u001b[0;34m(self, request, response)\u001b[0m\n\u001b[1;32m 640\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0;34m(\u001b[0m\u001b[0;36m200\u001b[0m \u001b[0;34m<=\u001b[0m \u001b[0mcode\u001b[0m \u001b[0;34m<\u001b[0m \u001b[0;36m300\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 641\u001b[0m response = self.parent.error(\n\u001b[0;32m--> 642\u001b[0;31m 'http', request, response, code, msg, hdrs)\n\u001b[0m\u001b[1;32m 643\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 644\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mresponse\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/urllib/request.py\u001b[0m in \u001b[0;36merror\u001b[0;34m(self, proto, *args)\u001b[0m\n\u001b[1;32m 562\u001b[0m \u001b[0mhttp_err\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;36m0\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 563\u001b[0m \u001b[0margs\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m(\u001b[0m\u001b[0mdict\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mproto\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mmeth_name\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;34m+\u001b[0m \u001b[0margs\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 564\u001b[0;31m \u001b[0mresult\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_call_chain\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 565\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mresult\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 566\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mresult\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/urllib/request.py\u001b[0m in \u001b[0;36m_call_chain\u001b[0;34m(self, chain, kind, meth_name, *args)\u001b[0m\n\u001b[1;32m 502\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0mhandler\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mhandlers\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 503\u001b[0m \u001b[0mfunc\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mgetattr\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mhandler\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mmeth_name\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 504\u001b[0;31m \u001b[0mresult\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mfunc\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 505\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mresult\u001b[0m \u001b[0;32mis\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0;32mNone\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 506\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mresult\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/urllib/request.py\u001b[0m in \u001b[0;36mhttp_error_302\u001b[0;34m(self, req, fp, code, msg, headers)\u001b[0m\n\u001b[1;32m 754\u001b[0m \u001b[0mfp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mclose\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 755\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 756\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mparent\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mopen\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mnew\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mtimeout\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mreq\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mtimeout\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 757\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 758\u001b[0m \u001b[0mhttp_error_301\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mhttp_error_303\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mhttp_error_307\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mhttp_error_302\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/urllib/request.py\u001b[0m in \u001b[0;36mopen\u001b[0;34m(self, fullurl, data, timeout)\u001b[0m\n\u001b[1;32m 524\u001b[0m \u001b[0mreq\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mmeth\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mreq\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 525\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 526\u001b[0;31m \u001b[0mresponse\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_open\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mreq\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mdata\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 527\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 528\u001b[0m \u001b[0;31m# post-process response\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/urllib/request.py\u001b[0m in \u001b[0;36m_open\u001b[0;34m(self, req, data)\u001b[0m\n\u001b[1;32m 542\u001b[0m \u001b[0mprotocol\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mreq\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mtype\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 543\u001b[0m result = self._call_chain(self.handle_open, protocol, protocol +\n\u001b[0;32m--> 544\u001b[0;31m '_open', req)\n\u001b[0m\u001b[1;32m 545\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mresult\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 546\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mresult\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/urllib/request.py\u001b[0m in \u001b[0;36m_call_chain\u001b[0;34m(self, chain, kind, meth_name, *args)\u001b[0m\n\u001b[1;32m 502\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0mhandler\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mhandlers\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 503\u001b[0m \u001b[0mfunc\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mgetattr\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mhandler\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mmeth_name\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 504\u001b[0;31m \u001b[0mresult\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mfunc\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 505\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mresult\u001b[0m \u001b[0;32mis\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0;32mNone\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 506\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mresult\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/urllib/request.py\u001b[0m in \u001b[0;36mhttps_open\u001b[0;34m(self, req)\u001b[0m\n\u001b[1;32m 1359\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0mhttps_open\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mreq\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1360\u001b[0m return self.do_open(http.client.HTTPSConnection, req,\n\u001b[0;32m-> 1361\u001b[0;31m context=self._context, check_hostname=self._check_hostname)\n\u001b[0m\u001b[1;32m 1362\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1363\u001b[0m \u001b[0mhttps_request\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mAbstractHTTPHandler\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mdo_request_\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/urllib/request.py\u001b[0m in \u001b[0;36mdo_open\u001b[0;34m(self, http_class, req, **http_conn_args)\u001b[0m\n\u001b[1;32m 1319\u001b[0m \u001b[0;32mexcept\u001b[0m \u001b[0mOSError\u001b[0m \u001b[0;32mas\u001b[0m \u001b[0merr\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0;31m# timeout error\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1320\u001b[0m \u001b[0;32mraise\u001b[0m \u001b[0mURLError\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0merr\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 1321\u001b[0;31m \u001b[0mr\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mh\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mgetresponse\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 1322\u001b[0m \u001b[0;32mexcept\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1323\u001b[0m \u001b[0mh\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mclose\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/http/client.py\u001b[0m in \u001b[0;36mgetresponse\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 1329\u001b[0m \u001b[0;32mtry\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1330\u001b[0m \u001b[0;32mtry\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 1331\u001b[0;31m \u001b[0mresponse\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mbegin\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 1332\u001b[0m \u001b[0;32mexcept\u001b[0m \u001b[0mConnectionError\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1333\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mclose\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/http/client.py\u001b[0m in \u001b[0;36mbegin\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 295\u001b[0m \u001b[0;31m# read until we get a non-100 response\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 296\u001b[0m \u001b[0;32mwhile\u001b[0m \u001b[0;32mTrue\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 297\u001b[0;31m \u001b[0mversion\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mstatus\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mreason\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_read_status\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 298\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mstatus\u001b[0m \u001b[0;34m!=\u001b[0m \u001b[0mCONTINUE\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 299\u001b[0m \u001b[0;32mbreak\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/http/client.py\u001b[0m in \u001b[0;36m_read_status\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 256\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 257\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0m_read_status\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 258\u001b[0;31m \u001b[0mline\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mstr\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mfp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mreadline\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0m_MAXLINE\u001b[0m \u001b[0;34m+\u001b[0m \u001b[0;36m1\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m\"iso-8859-1\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 259\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mlen\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mline\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;34m>\u001b[0m \u001b[0m_MAXLINE\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 260\u001b[0m \u001b[0;32mraise\u001b[0m \u001b[0mLineTooLong\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"status line\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/socket.py\u001b[0m in \u001b[0;36mreadinto\u001b[0;34m(self, b)\u001b[0m\n\u001b[1;32m 584\u001b[0m \u001b[0;32mwhile\u001b[0m \u001b[0;32mTrue\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 585\u001b[0m \u001b[0;32mtry\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 586\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_sock\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mrecv_into\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mb\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 587\u001b[0m \u001b[0;32mexcept\u001b[0m \u001b[0mtimeout\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 588\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_timeout_occurred\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;32mTrue\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/ssl.py\u001b[0m in \u001b[0;36mrecv_into\u001b[0;34m(self, buffer, nbytes, flags)\u001b[0m\n\u001b[1;32m 1000\u001b[0m \u001b[0;34m\"non-zero flags not allowed in calls to recv_into() on %s\"\u001b[0m \u001b[0;34m%\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1001\u001b[0m self.__class__)\n\u001b[0;32m-> 1002\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mread\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mnbytes\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mbuffer\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 1003\u001b[0m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1004\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0msocket\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mrecv_into\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mbuffer\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mnbytes\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mflags\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/ssl.py\u001b[0m in \u001b[0;36mread\u001b[0;34m(self, len, buffer)\u001b[0m\n\u001b[1;32m 863\u001b[0m \u001b[0;32mraise\u001b[0m \u001b[0mValueError\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"Read on closed or unwrapped SSL socket.\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 864\u001b[0m \u001b[0;32mtry\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 865\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_sslobj\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mread\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mlen\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mbuffer\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 866\u001b[0m \u001b[0;32mexcept\u001b[0m \u001b[0mSSLError\u001b[0m \u001b[0;32mas\u001b[0m \u001b[0mx\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 867\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mx\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m0\u001b[0m\u001b[0;34m]\u001b[0m \u001b[0;34m==\u001b[0m \u001b[0mSSL_ERROR_EOF\u001b[0m \u001b[0;32mand\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msuppress_ragged_eofs\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/ssl.py\u001b[0m in \u001b[0;36mread\u001b[0;34m(self, len, buffer)\u001b[0m\n\u001b[1;32m 623\u001b[0m \"\"\"\n\u001b[1;32m 624\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mbuffer\u001b[0m \u001b[0;32mis\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0;32mNone\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 625\u001b[0;31m \u001b[0mv\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_sslobj\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mread\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mlen\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mbuffer\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 626\u001b[0m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 627\u001b[0m \u001b[0mv\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_sslobj\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mread\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mlen\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;31mKeyboardInterrupt\u001b[0m: " + ] + } + ], + "source": [ + "from urllib.request import urlopen\n", + "from bs4 import BeautifulSoup\n", + "import re\n", + "\n", + "pages = set()\n", + "def getLinks(pageUrl):\n", + " global pages\n", + " html = urlopen('http://en.wikipedia.org{}'.format(pageUrl))\n", + " bs = BeautifulSoup(html, 'html.parser')\n", + " for link in bs.find_all('a', href=re.compile('^(/wiki/)')):\n", + " if 'href' in link.attrs:\n", + " if link.attrs['href'] not in pages:\n", + " #We have encountered a new page\n", + " newPage = link.attrs['href']\n", + " print(newPage)\n", + " pages.add(newPage)\n", + " getLinks(newPage)\n", + "getLinks('')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# # Collecting Data Across an Entire Site" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Main Page\n", + "\n", + "This page is missing something! No worries, we will continue!\n", + "--------------------\n", + "/wiki/Wikipedia\n", + "Wikipedia\n", + "

Wikipedia (/ˌwɪkɪˈpdiə/ (\"About listen) WIK-i-PEE-dee-ə or /ˌwɪkiˈpdiə/ (\"About listen) WIK-ee-PEE-dee-ə) is a free online encyclopedia with the mission of allowing anyone to edit articles.[3][not in citation given] Wikipedia is the largest and most popular general reference work on the Internet,[4][5][6] and is ranked the fifth-most popular website.[7] Wikipedia is owned by the nonprofit Wikimedia Foundation.[8][9][10]

\n", + "This page is missing something! No worries, we will continue!\n", + "--------------------\n", + "/wiki/Wikipedia:Protection_policy#semi\n", + "Wikipedia:Protection policy\n", + "

Wikipedia is built around the principle that anyone can edit it, and it therefore aims to have as many of its pages as possible open for public editing so that anyone can add material and correct errors. However, in some particular circumstances, because of a specifically identified likelihood of damage resulting if editing is left open, some individual pages may need to be subject to technical restrictions (often only temporary but sometimes indefinitely) on who is permitted to modify them. The placing of such restrictions on pages is called protection.

\n", + "This page is missing something! No worries, we will continue!\n", + "--------------------\n", + "/wiki/Wikipedia:Requests_for_page_protection\n", + "Wikipedia:Requests for page protection\n", + "

This page is for requesting that a page, file or template be fully protected, create protected (salted), extended confirmed protected, semi-protected, added to pending changes, move-protected, template protected (template-specific), upload protected (file-specific), or unprotected. Please read up on the protection policy. Full protection is used to stop edit warring between multiple users or to prevent vandalism to high-risk templates; semi-protection and pending changes are usually used only to prevent IP and new user vandalism (see the rough guide to semi-protection); and move protection is used to stop pagemove revert wars. Extended confirmed protection is used where semi-protection has proved insufficient (see the rough guide to extended confirmed protection)

\n", + "/w/index.php?title=Wikipedia:Requests_for_page_protection&action=edit\n", + "--------------------\n", + "/wiki/Wikipedia:Requests_for_permissions\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Wikipedia:Requests for permissions\n", + "

Administrator instructions

\n", + "This page is missing something! No worries, we will continue!\n", + "--------------------\n", + "/wiki/Wikipedia:Requesting_copyright_permission\n" + ] + }, + { + "ename": "KeyboardInterrupt", + "evalue": "", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mKeyboardInterrupt\u001b[0m Traceback (most recent call last)", + "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[1;32m 24\u001b[0m \u001b[0mpages\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0madd\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mnewPage\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 25\u001b[0m \u001b[0mgetLinks\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mnewPage\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 26\u001b[0;31m \u001b[0mgetLinks\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m''\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m", + "\u001b[0;32m\u001b[0m in \u001b[0;36mgetLinks\u001b[0;34m(pageUrl)\u001b[0m\n\u001b[1;32m 23\u001b[0m \u001b[0mprint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mnewPage\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 24\u001b[0m \u001b[0mpages\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0madd\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mnewPage\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 25\u001b[0;31m \u001b[0mgetLinks\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mnewPage\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 26\u001b[0m \u001b[0mgetLinks\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m''\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m\u001b[0m in \u001b[0;36mgetLinks\u001b[0;34m(pageUrl)\u001b[0m\n\u001b[1;32m 23\u001b[0m \u001b[0mprint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mnewPage\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 24\u001b[0m \u001b[0mpages\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0madd\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mnewPage\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 25\u001b[0;31m \u001b[0mgetLinks\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mnewPage\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 26\u001b[0m \u001b[0mgetLinks\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m''\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m\u001b[0m in \u001b[0;36mgetLinks\u001b[0;34m(pageUrl)\u001b[0m\n\u001b[1;32m 23\u001b[0m \u001b[0mprint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mnewPage\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 24\u001b[0m \u001b[0mpages\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0madd\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mnewPage\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 25\u001b[0;31m \u001b[0mgetLinks\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mnewPage\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 26\u001b[0m \u001b[0mgetLinks\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m''\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m\u001b[0m in \u001b[0;36mgetLinks\u001b[0;34m(pageUrl)\u001b[0m\n\u001b[1;32m 23\u001b[0m \u001b[0mprint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mnewPage\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 24\u001b[0m \u001b[0mpages\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0madd\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mnewPage\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 25\u001b[0;31m \u001b[0mgetLinks\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mnewPage\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 26\u001b[0m \u001b[0mgetLinks\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m''\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m\u001b[0m in \u001b[0;36mgetLinks\u001b[0;34m(pageUrl)\u001b[0m\n\u001b[1;32m 23\u001b[0m \u001b[0mprint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mnewPage\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 24\u001b[0m \u001b[0mpages\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0madd\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mnewPage\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 25\u001b[0;31m \u001b[0mgetLinks\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mnewPage\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 26\u001b[0m \u001b[0mgetLinks\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m''\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m\u001b[0m in \u001b[0;36mgetLinks\u001b[0;34m(pageUrl)\u001b[0m\n\u001b[1;32m 6\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0mgetLinks\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mpageUrl\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 7\u001b[0m \u001b[0;32mglobal\u001b[0m \u001b[0mpages\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 8\u001b[0;31m \u001b[0mhtml\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0murlopen\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'http://en.wikipedia.org{}'\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mformat\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mpageUrl\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 9\u001b[0m \u001b[0mbsObj\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mBeautifulSoup\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mhtml\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m'html.parser'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 10\u001b[0m \u001b[0;32mtry\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/urllib/request.py\u001b[0m in \u001b[0;36murlopen\u001b[0;34m(url, data, timeout, cafile, capath, cadefault, context)\u001b[0m\n\u001b[1;32m 221\u001b[0m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 222\u001b[0m \u001b[0mopener\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0m_opener\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 223\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mopener\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mopen\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0murl\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mdata\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mtimeout\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 224\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 225\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0minstall_opener\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mopener\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/urllib/request.py\u001b[0m in \u001b[0;36mopen\u001b[0;34m(self, fullurl, data, timeout)\u001b[0m\n\u001b[1;32m 530\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0mprocessor\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mprocess_response\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mget\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mprotocol\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m[\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 531\u001b[0m \u001b[0mmeth\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mgetattr\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mprocessor\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mmeth_name\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 532\u001b[0;31m \u001b[0mresponse\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mmeth\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mreq\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mresponse\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 533\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 534\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mresponse\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/urllib/request.py\u001b[0m in \u001b[0;36mhttp_response\u001b[0;34m(self, request, response)\u001b[0m\n\u001b[1;32m 640\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0;34m(\u001b[0m\u001b[0;36m200\u001b[0m \u001b[0;34m<=\u001b[0m \u001b[0mcode\u001b[0m \u001b[0;34m<\u001b[0m \u001b[0;36m300\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 641\u001b[0m response = self.parent.error(\n\u001b[0;32m--> 642\u001b[0;31m 'http', request, response, code, msg, hdrs)\n\u001b[0m\u001b[1;32m 643\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 644\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mresponse\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/urllib/request.py\u001b[0m in \u001b[0;36merror\u001b[0;34m(self, proto, *args)\u001b[0m\n\u001b[1;32m 562\u001b[0m \u001b[0mhttp_err\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;36m0\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 563\u001b[0m \u001b[0margs\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m(\u001b[0m\u001b[0mdict\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mproto\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mmeth_name\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;34m+\u001b[0m \u001b[0margs\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 564\u001b[0;31m \u001b[0mresult\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_call_chain\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 565\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mresult\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 566\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mresult\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/urllib/request.py\u001b[0m in \u001b[0;36m_call_chain\u001b[0;34m(self, chain, kind, meth_name, *args)\u001b[0m\n\u001b[1;32m 502\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0mhandler\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mhandlers\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 503\u001b[0m \u001b[0mfunc\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mgetattr\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mhandler\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mmeth_name\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 504\u001b[0;31m \u001b[0mresult\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mfunc\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 505\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mresult\u001b[0m \u001b[0;32mis\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0;32mNone\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 506\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mresult\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/urllib/request.py\u001b[0m in \u001b[0;36mhttp_error_302\u001b[0;34m(self, req, fp, code, msg, headers)\u001b[0m\n\u001b[1;32m 754\u001b[0m \u001b[0mfp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mclose\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 755\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 756\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mparent\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mopen\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mnew\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mtimeout\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mreq\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mtimeout\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 757\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 758\u001b[0m \u001b[0mhttp_error_301\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mhttp_error_303\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mhttp_error_307\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mhttp_error_302\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/urllib/request.py\u001b[0m in \u001b[0;36mopen\u001b[0;34m(self, fullurl, data, timeout)\u001b[0m\n\u001b[1;32m 524\u001b[0m \u001b[0mreq\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mmeth\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mreq\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 525\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 526\u001b[0;31m \u001b[0mresponse\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_open\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mreq\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mdata\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 527\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 528\u001b[0m \u001b[0;31m# post-process response\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/urllib/request.py\u001b[0m in \u001b[0;36m_open\u001b[0;34m(self, req, data)\u001b[0m\n\u001b[1;32m 542\u001b[0m \u001b[0mprotocol\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mreq\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mtype\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 543\u001b[0m result = self._call_chain(self.handle_open, protocol, protocol +\n\u001b[0;32m--> 544\u001b[0;31m '_open', req)\n\u001b[0m\u001b[1;32m 545\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mresult\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 546\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mresult\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/urllib/request.py\u001b[0m in \u001b[0;36m_call_chain\u001b[0;34m(self, chain, kind, meth_name, *args)\u001b[0m\n\u001b[1;32m 502\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0mhandler\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mhandlers\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 503\u001b[0m \u001b[0mfunc\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mgetattr\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mhandler\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mmeth_name\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 504\u001b[0;31m \u001b[0mresult\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mfunc\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 505\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mresult\u001b[0m \u001b[0;32mis\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0;32mNone\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 506\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mresult\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/urllib/request.py\u001b[0m in \u001b[0;36mhttps_open\u001b[0;34m(self, req)\u001b[0m\n\u001b[1;32m 1359\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0mhttps_open\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mreq\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1360\u001b[0m return self.do_open(http.client.HTTPSConnection, req,\n\u001b[0;32m-> 1361\u001b[0;31m context=self._context, check_hostname=self._check_hostname)\n\u001b[0m\u001b[1;32m 1362\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1363\u001b[0m \u001b[0mhttps_request\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mAbstractHTTPHandler\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mdo_request_\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/urllib/request.py\u001b[0m in \u001b[0;36mdo_open\u001b[0;34m(self, http_class, req, **http_conn_args)\u001b[0m\n\u001b[1;32m 1316\u001b[0m \u001b[0;32mtry\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1317\u001b[0m h.request(req.get_method(), req.selector, req.data, headers,\n\u001b[0;32m-> 1318\u001b[0;31m encode_chunked=req.has_header('Transfer-encoding'))\n\u001b[0m\u001b[1;32m 1319\u001b[0m \u001b[0;32mexcept\u001b[0m \u001b[0mOSError\u001b[0m \u001b[0;32mas\u001b[0m \u001b[0merr\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0;31m# timeout error\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1320\u001b[0m \u001b[0;32mraise\u001b[0m \u001b[0mURLError\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0merr\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/http/client.py\u001b[0m in \u001b[0;36mrequest\u001b[0;34m(self, method, url, body, headers, encode_chunked)\u001b[0m\n\u001b[1;32m 1237\u001b[0m encode_chunked=False):\n\u001b[1;32m 1238\u001b[0m \u001b[0;34m\"\"\"Send a complete request to the server.\"\"\"\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 1239\u001b[0;31m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_send_request\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mmethod\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0murl\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mbody\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mheaders\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mencode_chunked\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 1240\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1241\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0m_send_request\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mmethod\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0murl\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mbody\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mheaders\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mencode_chunked\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/http/client.py\u001b[0m in \u001b[0;36m_send_request\u001b[0;34m(self, method, url, body, headers, encode_chunked)\u001b[0m\n\u001b[1;32m 1283\u001b[0m \u001b[0;31m# default charset of iso-8859-1.\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1284\u001b[0m \u001b[0mbody\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0m_encode\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mbody\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m'body'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 1285\u001b[0;31m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mendheaders\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mbody\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mencode_chunked\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mencode_chunked\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 1286\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1287\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0mgetresponse\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/http/client.py\u001b[0m in \u001b[0;36mendheaders\u001b[0;34m(self, message_body, encode_chunked)\u001b[0m\n\u001b[1;32m 1232\u001b[0m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1233\u001b[0m \u001b[0;32mraise\u001b[0m \u001b[0mCannotSendHeader\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 1234\u001b[0;31m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_send_output\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mmessage_body\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mencode_chunked\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mencode_chunked\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 1235\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1236\u001b[0m def request(self, method, url, body=None, headers={}, *,\n", + "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/http/client.py\u001b[0m in \u001b[0;36m_send_output\u001b[0;34m(self, message_body, encode_chunked)\u001b[0m\n\u001b[1;32m 1024\u001b[0m \u001b[0mmsg\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34mb\"\\r\\n\"\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mjoin\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_buffer\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1025\u001b[0m \u001b[0;32mdel\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_buffer\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 1026\u001b[0;31m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msend\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mmsg\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 1027\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1028\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mmessage_body\u001b[0m \u001b[0;32mis\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0;32mNone\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/http/client.py\u001b[0m in \u001b[0;36msend\u001b[0;34m(self, data)\u001b[0m\n\u001b[1;32m 962\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msock\u001b[0m \u001b[0;32mis\u001b[0m \u001b[0;32mNone\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 963\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mauto_open\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 964\u001b[0;31m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mconnect\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 965\u001b[0m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 966\u001b[0m \u001b[0;32mraise\u001b[0m \u001b[0mNotConnected\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/http/client.py\u001b[0m in \u001b[0;36mconnect\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 1390\u001b[0m \u001b[0;34m\"Connect to a host on a given (SSL) port.\"\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1391\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 1392\u001b[0;31m \u001b[0msuper\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mconnect\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 1393\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1394\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_tunnel_host\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/http/client.py\u001b[0m in \u001b[0;36mconnect\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 934\u001b[0m \u001b[0;34m\"\"\"Connect to the host and port specified in __init__.\"\"\"\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 935\u001b[0m self.sock = self._create_connection(\n\u001b[0;32m--> 936\u001b[0;31m (self.host,self.port), self.timeout, self.source_address)\n\u001b[0m\u001b[1;32m 937\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msock\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msetsockopt\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0msocket\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mIPPROTO_TCP\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0msocket\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mTCP_NODELAY\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;36m1\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 938\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/socket.py\u001b[0m in \u001b[0;36mcreate_connection\u001b[0;34m(address, timeout, source_address)\u001b[0m\n\u001b[1;32m 711\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0msource_address\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 712\u001b[0m \u001b[0msock\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mbind\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0msource_address\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 713\u001b[0;31m \u001b[0msock\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mconnect\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0msa\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 714\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0msock\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 715\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;31mKeyboardInterrupt\u001b[0m: " + ] + } + ], + "source": [ + "from urllib.request import urlopen\n", + "from bs4 import BeautifulSoup\n", + "import re\n", + "\n", + "pages = set()\n", + "def getLinks(pageUrl):\n", + " global pages\n", + " html = urlopen('http://en.wikipedia.org{}'.format(pageUrl))\n", + " bs = BeautifulSoup(html, 'html.parser')\n", + " try:\n", + " print(bs.h1.get_text())\n", + " print(bs.find(id ='mw-content-text').find_all('p')[0])\n", + " print(bs.find(id='ca-edit').find('span').find('a').attrs['href'])\n", + " except AttributeError:\n", + " print('This page is missing something! Continuing.')\n", + " \n", + " for link in bs.find_all('a', href=re.compile('^(/wiki/)')):\n", + " if 'href' in link.attrs:\n", + " if link.attrs['href'] not in pages:\n", + " #We have encountered a new page\n", + " newPage = link.attrs['href']\n", + " print('-'*20)\n", + " print(newPage)\n", + " pages.add(newPage)\n", + " getLinks(newPage)\n", + "getLinks('') " + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [], + "source": [ + "# # Crawling across the Internet" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Random external link is: http://twitter.com/oreillymedia\n" + ] + }, + { + "ename": "KeyboardInterrupt", + "evalue": "", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mKeyboardInterrupt\u001b[0m Traceback (most recent call last)", + "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[1;32m 52\u001b[0m \u001b[0mfollowExternalOnly\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mexternalLink\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 53\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 54\u001b[0;31m \u001b[0mfollowExternalOnly\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'http://oreilly.com'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m", + "\u001b[0;32m\u001b[0m in \u001b[0;36mfollowExternalOnly\u001b[0;34m(startingSite)\u001b[0m\n\u001b[1;32m 50\u001b[0m \u001b[0mexternalLink\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mgetRandomExternalLink\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mstartingSite\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 51\u001b[0m \u001b[0mprint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'Random external link is: {}'\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mformat\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mexternalLink\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 52\u001b[0;31m \u001b[0mfollowExternalOnly\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mexternalLink\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 53\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 54\u001b[0m \u001b[0mfollowExternalOnly\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'http://oreilly.com'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m\u001b[0m in \u001b[0;36mfollowExternalOnly\u001b[0;34m(startingSite)\u001b[0m\n\u001b[1;32m 48\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 49\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0mfollowExternalOnly\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mstartingSite\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 50\u001b[0;31m \u001b[0mexternalLink\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mgetRandomExternalLink\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mstartingSite\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 51\u001b[0m \u001b[0mprint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'Random external link is: {}'\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mformat\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mexternalLink\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 52\u001b[0m \u001b[0mfollowExternalOnly\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mexternalLink\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m\u001b[0m in \u001b[0;36mgetRandomExternalLink\u001b[0;34m(startingPage)\u001b[0m\n\u001b[1;32m 36\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0mgetRandomExternalLink\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mstartingPage\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 37\u001b[0m \u001b[0mhtml\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0murlopen\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mstartingPage\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 38\u001b[0;31m \u001b[0mbs\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mBeautifulSoup\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mhtml\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m'html.parser'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 39\u001b[0m \u001b[0mexternalLinks\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mgetExternalLinks\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mbs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0murlparse\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mstartingPage\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mnetloc\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 40\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mlen\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mexternalLinks\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;34m==\u001b[0m \u001b[0;36m0\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/bs4/__init__.py\u001b[0m in \u001b[0;36m__init__\u001b[0;34m(self, markup, features, builder, parse_only, from_encoding, exclude_encodings, **kwargs)\u001b[0m\n\u001b[1;32m 226\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mreset\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 227\u001b[0m \u001b[0;32mtry\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 228\u001b[0;31m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_feed\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 229\u001b[0m \u001b[0;32mbreak\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 230\u001b[0m \u001b[0;32mexcept\u001b[0m \u001b[0mParserRejectedMarkup\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/bs4/__init__.py\u001b[0m in \u001b[0;36m_feed\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 287\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mbuilder\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mreset\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 288\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 289\u001b[0;31m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mbuilder\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mfeed\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mmarkup\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 290\u001b[0m \u001b[0;31m# Close out any unfinished strings and close all the open tags.\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 291\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mendData\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/bs4/builder/_htmlparser.py\u001b[0m in \u001b[0;36mfeed\u001b[0;34m(self, markup)\u001b[0m\n\u001b[1;32m 213\u001b[0m \u001b[0mparser\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msoup\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msoup\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 214\u001b[0m \u001b[0;32mtry\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 215\u001b[0;31m \u001b[0mparser\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mfeed\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mmarkup\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 216\u001b[0m \u001b[0;32mexcept\u001b[0m \u001b[0mHTMLParseError\u001b[0m \u001b[0;32mas\u001b[0m \u001b[0me\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 217\u001b[0m warnings.warn(RuntimeWarning(\n", + "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/html/parser.py\u001b[0m in \u001b[0;36mfeed\u001b[0;34m(self, data)\u001b[0m\n\u001b[1;32m 109\u001b[0m \"\"\"\n\u001b[1;32m 110\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mrawdata\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mrawdata\u001b[0m \u001b[0;34m+\u001b[0m \u001b[0mdata\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 111\u001b[0;31m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mgoahead\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;36m0\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 112\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 113\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0mclose\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/html/parser.py\u001b[0m in \u001b[0;36mgoahead\u001b[0;34m(self, end)\u001b[0m\n\u001b[1;32m 169\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mstartswith\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'<'\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mi\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 170\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mstarttagopen\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mmatch\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mrawdata\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mi\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0;31m# < + letter\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 171\u001b[0;31m \u001b[0mk\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mparse_starttag\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mi\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 172\u001b[0m \u001b[0;32melif\u001b[0m \u001b[0mstartswith\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\" 303\u001b[0;31m \u001b[0mendpos\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mcheck_for_whole_start_tag\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mi\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 304\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mendpos\u001b[0m \u001b[0;34m<\u001b[0m \u001b[0;36m0\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 305\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mendpos\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/html/parser.py\u001b[0m in \u001b[0;36mcheck_for_whole_start_tag\u001b[0;34m(self, i)\u001b[0m\n\u001b[1;32m 355\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mm\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 356\u001b[0m \u001b[0mj\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mm\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mend\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 357\u001b[0;31m \u001b[0mnext\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mrawdata\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mj\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0mj\u001b[0m\u001b[0;34m+\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 358\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mnext\u001b[0m \u001b[0;34m==\u001b[0m \u001b[0;34m\">\"\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 359\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mj\u001b[0m \u001b[0;34m+\u001b[0m \u001b[0;36m1\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;31mKeyboardInterrupt\u001b[0m: " + ] + } + ], + "source": [ + "from urllib.request import urlopen\n", + "from urllib.parse import urlparse\n", + "from bs4 import BeautifulSoup\n", + "import re\n", + "import datetime\n", + "import random\n", + "\n", + "pages = set()\n", + "random.seed(datetime.datetime.now())\n", + "\n", + "#Retrieves a list of all Internal links found on a page\n", + "def getInternalLinks(bs, includeUrl):\n", + " includeUrl = '{}://{}'.format(urlparse(includeUrl).scheme, urlparse(includeUrl).netloc)\n", + " internalLinks = []\n", + " #Finds all links that begin with a \"/\"\n", + " for link in bs.find_all('a', href=re.compile('^(/|.*'+includeUrl+')')):\n", + " if link.attrs['href'] is not None:\n", + " if link.attrs['href'] not in internalLinks:\n", + " if(link.attrs['href'].startswith('/')):\n", + " internalLinks.append(includeUrl+link.attrs['href'])\n", + " else:\n", + " internalLinks.append(link.attrs['href'])\n", + " return internalLinks\n", + " \n", + "#Retrieves a list of all external links found on a page\n", + "def getExternalLinks(bs, excludeUrl):\n", + " externalLinks = []\n", + " #Finds all links that start with \"http\" that do\n", + " #not contain the current URL\n", + " for link in bs.find_all('a', href=re.compile('^(http|www)((?!'+excludeUrl+').)*$')):\n", + " if link.attrs['href'] is not None:\n", + " if link.attrs['href'] not in externalLinks:\n", + " externalLinks.append(link.attrs['href'])\n", + " return externalLinks\n", + "\n", + "def getRandomExternalLink(startingPage):\n", + " html = urlopen(startingPage)\n", + " bs = BeautifulSoup(html, 'html.parser')\n", + " externalLinks = getExternalLinks(bs, urlparse(startingPage).netloc)\n", + " if len(externalLinks) == 0:\n", + " print('No external links, looking around the site for one')\n", + " domain = '{}://{}'.format(urlparse(startingPage).scheme, urlparse(startingPage).netloc)\n", + " internalLinks = getInternalLinks(bs, domain)\n", + " return getRandomExternalLink(internalLinks[random.randint(0,\n", + " len(internalLinks)-1)])\n", + " else:\n", + " return externalLinks[random.randint(0, len(externalLinks)-1)]\n", + " \n", + "def followExternalOnly(startingSite):\n", + " externalLink = getRandomExternalLink(startingSite)\n", + " print('Random external link is: {}'.format(externalLink))\n", + " followExternalOnly(externalLink)\n", + " \n", + "followExternalOnly('http://oreilly.com')" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [], + "source": [ + "## Collect all External Links from a Site" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "https://www.oreilly.com\n", + "http://www.oreilly.com/ideas\n", + "https://www.safaribooksonline.com/?utm_medium=content&utm_source=oreilly.com&utm_campaign=lgen&utm_content=20170601+nav\n", + "http://www.oreilly.com/conferences/\n", + "http://shop.oreilly.com/\n", + "http://members.oreilly.com\n", + "https://www.oreilly.com/topics\n", + "https://www.safaribooksonline.com/?utm_medium=content&utm_source=oreilly.com&utm_campaign=lgen&utm_content=20170505+homepage+get+started+now\n", + "https://www.safaribooksonline.com/accounts/login/?utm_medium=content&utm_source=oreilly.com&utm_campaign=lgen&utm_content=20170203+homepage+sign+in\n", + "https://www.safaribooksonline.com/live-training/?utm_medium=content&utm_source=oreilly.com&utm_campaign=lgen&utm_content=20170201+homepage+take+a+live+online+course\n", + "https://www.safaribooksonline.com/learning-paths/?utm_medium=content&utm_source=oreilly.com&utm_campaign=lgen&utm_content=20170201+homepage+follow+a+path\n", + "https://www.safaribooksonline.com/?utm_medium=content&utm_source=oreilly.com&utm_campaign=lgen&utm_content=20170505+homepage+unlimited+access\n", + "http://www.oreilly.com/live-training/?view=grid\n", + "https://www.safaribooksonline.com/your-experience/?utm_medium=content&utm_source=oreilly.com&utm_campaign=lgen&utm_content=20170201+homepage+safari+platform\n", + "https://cdn.oreillystatic.com/pdf/oreilly_high_performance_organizations_whitepaper.pdf\n", + "https://www.oreilly.com/ideas/8-data-trends-on-our-radar-for-2017?utm_medium=referral&utm_source=oreilly.com&utm_campaign=lgen&utm_content=link+2017+trends\n", + "https://www.oreilly.com/ideas?utm_medium=referral&utm_source=oreilly.com&utm_campaign=lgen&utm_content=link+read+latest+articles\n", + "http://www.oreilly.com/about/\n", + "http://www.oreilly.com/work-with-us.html\n", + "http://www.oreilly.com/careers/\n", + "http://shop.oreilly.com/category/customer-service.do\n", + "http://www.oreilly.com/about/contact.html\n", + "http://twitter.com/oreillymedia\n", + "http://fb.co/OReilly\n", + "https://www.linkedin.com/company/oreilly-media\n", + "https://www.youtube.com/user/OreillyMedia\n", + "http://www.oreilly.com/emails/newsletters/\n", + "http://www.oreilly.com/terms/\n", + "http://www.oreilly.com/privacy.html\n", + "http://www.oreilly.com/about/editorial_independence.html\n", + "https://www.safaribooksonline.com/home/?utm_medium=content&utm_source=oreilly.com&utm_campaign=lgen&utm_content=20170601+nav\n", + "http://www.oreilly.com/emails/newsletters/?display=preview#ai\n", + "https://www.oreilly.com/privacy.html\n", + "http://www.oreilly.com/ai/building-bots-with-natural-language-processing.csp?utm_source=oreilly&utm_medium=newsite&utm_campaign=ai-topic-cta\n", + "https://www.flickr.com/photos/ebmorse/7536436622/in/dateposted/\n", + "http://oreilly.com/about/\n", + "http://oreilly.com/work-with-us.html\n", + "http://oreilly.com/careers/\n", + "https://plus.google.com/+oreillymedia\n", + "http://oreilly.com/terms/\n", + "http://oreilly.com/privacy.html\n", + "https://www.safaribooksonline.com/home/?utm_source=newsite&utm_medium=content&utm_campaign=lgen&utm_content=business-topic-cta\n", + "https://www.flickr.com/photos/pagedooley/4253159181/\n" + ] + }, + { + "ename": "KeyboardInterrupt", + "evalue": "", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mKeyboardInterrupt\u001b[0m Traceback (most recent call last)", + "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[1;32m 19\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 20\u001b[0m \u001b[0mallIntLinks\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0madd\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'http://oreilly.com'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 21\u001b[0;31m \u001b[0mgetAllExternalLinks\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'http://oreilly.com'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m", + "\u001b[0;32m\u001b[0m in \u001b[0;36mgetAllExternalLinks\u001b[0;34m(siteUrl)\u001b[0m\n\u001b[1;32m 16\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mlink\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mallIntLinks\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 17\u001b[0m \u001b[0mallIntLinks\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0madd\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mlink\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 18\u001b[0;31m \u001b[0mgetAllExternalLinks\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mlink\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 19\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 20\u001b[0m \u001b[0mallIntLinks\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0madd\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'http://oreilly.com'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m\u001b[0m in \u001b[0;36mgetAllExternalLinks\u001b[0;34m(siteUrl)\u001b[0m\n\u001b[1;32m 16\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mlink\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mallIntLinks\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 17\u001b[0m \u001b[0mallIntLinks\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0madd\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mlink\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 18\u001b[0;31m \u001b[0mgetAllExternalLinks\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mlink\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 19\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 20\u001b[0m \u001b[0mallIntLinks\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0madd\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'http://oreilly.com'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m\u001b[0m in \u001b[0;36mgetAllExternalLinks\u001b[0;34m(siteUrl)\u001b[0m\n\u001b[1;32m 16\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mlink\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mallIntLinks\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 17\u001b[0m \u001b[0mallIntLinks\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0madd\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mlink\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 18\u001b[0;31m \u001b[0mgetAllExternalLinks\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mlink\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 19\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 20\u001b[0m \u001b[0mallIntLinks\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0madd\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'http://oreilly.com'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m\u001b[0m in \u001b[0;36mgetAllExternalLinks\u001b[0;34m(siteUrl)\u001b[0m\n\u001b[1;32m 16\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mlink\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mallIntLinks\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 17\u001b[0m \u001b[0mallIntLinks\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0madd\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mlink\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 18\u001b[0;31m \u001b[0mgetAllExternalLinks\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mlink\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 19\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 20\u001b[0m \u001b[0mallIntLinks\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0madd\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'http://oreilly.com'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m\u001b[0m in \u001b[0;36mgetAllExternalLinks\u001b[0;34m(siteUrl)\u001b[0m\n\u001b[1;32m 3\u001b[0m \u001b[0mallIntLinks\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mset\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 4\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0mgetAllExternalLinks\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0msiteUrl\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 5\u001b[0;31m \u001b[0mhtml\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0murlopen\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0msiteUrl\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 6\u001b[0m \u001b[0mdomain\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m'{}://{}'\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mformat\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0murlparse\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0msiteUrl\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mscheme\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0murlparse\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0msiteUrl\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mnetloc\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 7\u001b[0m \u001b[0mbs\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mBeautifulSoup\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mhtml\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m'html.parser'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/urllib/request.py\u001b[0m in \u001b[0;36murlopen\u001b[0;34m(url, data, timeout, cafile, capath, cadefault, context)\u001b[0m\n\u001b[1;32m 221\u001b[0m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 222\u001b[0m \u001b[0mopener\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0m_opener\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 223\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mopener\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mopen\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0murl\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mdata\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mtimeout\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 224\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 225\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0minstall_opener\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mopener\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/urllib/request.py\u001b[0m in \u001b[0;36mopen\u001b[0;34m(self, fullurl, data, timeout)\u001b[0m\n\u001b[1;32m 530\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0mprocessor\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mprocess_response\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mget\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mprotocol\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m[\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 531\u001b[0m \u001b[0mmeth\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mgetattr\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mprocessor\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mmeth_name\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 532\u001b[0;31m \u001b[0mresponse\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mmeth\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mreq\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mresponse\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 533\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 534\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mresponse\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/urllib/request.py\u001b[0m in \u001b[0;36mhttp_response\u001b[0;34m(self, request, response)\u001b[0m\n\u001b[1;32m 640\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0;34m(\u001b[0m\u001b[0;36m200\u001b[0m \u001b[0;34m<=\u001b[0m \u001b[0mcode\u001b[0m \u001b[0;34m<\u001b[0m \u001b[0;36m300\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 641\u001b[0m response = self.parent.error(\n\u001b[0;32m--> 642\u001b[0;31m 'http', request, response, code, msg, hdrs)\n\u001b[0m\u001b[1;32m 643\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 644\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mresponse\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/urllib/request.py\u001b[0m in \u001b[0;36merror\u001b[0;34m(self, proto, *args)\u001b[0m\n\u001b[1;32m 562\u001b[0m \u001b[0mhttp_err\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;36m0\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 563\u001b[0m \u001b[0margs\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m(\u001b[0m\u001b[0mdict\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mproto\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mmeth_name\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;34m+\u001b[0m \u001b[0margs\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 564\u001b[0;31m \u001b[0mresult\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_call_chain\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 565\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mresult\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 566\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mresult\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/urllib/request.py\u001b[0m in \u001b[0;36m_call_chain\u001b[0;34m(self, chain, kind, meth_name, *args)\u001b[0m\n\u001b[1;32m 502\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0mhandler\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mhandlers\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 503\u001b[0m \u001b[0mfunc\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mgetattr\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mhandler\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mmeth_name\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 504\u001b[0;31m \u001b[0mresult\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mfunc\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 505\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mresult\u001b[0m \u001b[0;32mis\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0;32mNone\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 506\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mresult\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/urllib/request.py\u001b[0m in \u001b[0;36mhttp_error_302\u001b[0;34m(self, req, fp, code, msg, headers)\u001b[0m\n\u001b[1;32m 754\u001b[0m \u001b[0mfp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mclose\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 755\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 756\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mparent\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mopen\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mnew\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mtimeout\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mreq\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mtimeout\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 757\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 758\u001b[0m \u001b[0mhttp_error_301\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mhttp_error_303\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mhttp_error_307\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mhttp_error_302\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/urllib/request.py\u001b[0m in \u001b[0;36mopen\u001b[0;34m(self, fullurl, data, timeout)\u001b[0m\n\u001b[1;32m 530\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0mprocessor\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mprocess_response\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mget\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mprotocol\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m[\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 531\u001b[0m \u001b[0mmeth\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mgetattr\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mprocessor\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mmeth_name\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 532\u001b[0;31m \u001b[0mresponse\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mmeth\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mreq\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mresponse\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 533\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 534\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mresponse\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/urllib/request.py\u001b[0m in \u001b[0;36mhttp_response\u001b[0;34m(self, request, response)\u001b[0m\n\u001b[1;32m 640\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0;34m(\u001b[0m\u001b[0;36m200\u001b[0m \u001b[0;34m<=\u001b[0m \u001b[0mcode\u001b[0m \u001b[0;34m<\u001b[0m \u001b[0;36m300\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 641\u001b[0m response = self.parent.error(\n\u001b[0;32m--> 642\u001b[0;31m 'http', request, response, code, msg, hdrs)\n\u001b[0m\u001b[1;32m 643\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 644\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mresponse\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/urllib/request.py\u001b[0m in \u001b[0;36merror\u001b[0;34m(self, proto, *args)\u001b[0m\n\u001b[1;32m 562\u001b[0m \u001b[0mhttp_err\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;36m0\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 563\u001b[0m \u001b[0margs\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m(\u001b[0m\u001b[0mdict\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mproto\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mmeth_name\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;34m+\u001b[0m \u001b[0margs\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 564\u001b[0;31m \u001b[0mresult\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_call_chain\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 565\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mresult\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 566\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mresult\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/urllib/request.py\u001b[0m in \u001b[0;36m_call_chain\u001b[0;34m(self, chain, kind, meth_name, *args)\u001b[0m\n\u001b[1;32m 502\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0mhandler\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mhandlers\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 503\u001b[0m \u001b[0mfunc\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mgetattr\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mhandler\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mmeth_name\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 504\u001b[0;31m \u001b[0mresult\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mfunc\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 505\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mresult\u001b[0m \u001b[0;32mis\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0;32mNone\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 506\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mresult\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/urllib/request.py\u001b[0m in \u001b[0;36mhttp_error_302\u001b[0;34m(self, req, fp, code, msg, headers)\u001b[0m\n\u001b[1;32m 754\u001b[0m \u001b[0mfp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mclose\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 755\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 756\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mparent\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mopen\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mnew\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mtimeout\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mreq\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mtimeout\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 757\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 758\u001b[0m \u001b[0mhttp_error_301\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mhttp_error_303\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mhttp_error_307\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mhttp_error_302\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/urllib/request.py\u001b[0m in \u001b[0;36mopen\u001b[0;34m(self, fullurl, data, timeout)\u001b[0m\n\u001b[1;32m 524\u001b[0m \u001b[0mreq\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mmeth\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mreq\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 525\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 526\u001b[0;31m \u001b[0mresponse\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_open\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mreq\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mdata\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 527\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 528\u001b[0m \u001b[0;31m# post-process response\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/urllib/request.py\u001b[0m in \u001b[0;36m_open\u001b[0;34m(self, req, data)\u001b[0m\n\u001b[1;32m 542\u001b[0m \u001b[0mprotocol\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mreq\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mtype\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 543\u001b[0m result = self._call_chain(self.handle_open, protocol, protocol +\n\u001b[0;32m--> 544\u001b[0;31m '_open', req)\n\u001b[0m\u001b[1;32m 545\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mresult\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 546\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mresult\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/urllib/request.py\u001b[0m in \u001b[0;36m_call_chain\u001b[0;34m(self, chain, kind, meth_name, *args)\u001b[0m\n\u001b[1;32m 502\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0mhandler\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mhandlers\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 503\u001b[0m \u001b[0mfunc\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mgetattr\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mhandler\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mmeth_name\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 504\u001b[0;31m \u001b[0mresult\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mfunc\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 505\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mresult\u001b[0m \u001b[0;32mis\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0;32mNone\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 506\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mresult\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/urllib/request.py\u001b[0m in \u001b[0;36mhttps_open\u001b[0;34m(self, req)\u001b[0m\n\u001b[1;32m 1359\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0mhttps_open\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mreq\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1360\u001b[0m return self.do_open(http.client.HTTPSConnection, req,\n\u001b[0;32m-> 1361\u001b[0;31m context=self._context, check_hostname=self._check_hostname)\n\u001b[0m\u001b[1;32m 1362\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1363\u001b[0m \u001b[0mhttps_request\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mAbstractHTTPHandler\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mdo_request_\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/urllib/request.py\u001b[0m in \u001b[0;36mdo_open\u001b[0;34m(self, http_class, req, **http_conn_args)\u001b[0m\n\u001b[1;32m 1319\u001b[0m \u001b[0;32mexcept\u001b[0m \u001b[0mOSError\u001b[0m \u001b[0;32mas\u001b[0m \u001b[0merr\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0;31m# timeout error\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1320\u001b[0m \u001b[0;32mraise\u001b[0m \u001b[0mURLError\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0merr\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 1321\u001b[0;31m \u001b[0mr\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mh\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mgetresponse\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 1322\u001b[0m \u001b[0;32mexcept\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1323\u001b[0m \u001b[0mh\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mclose\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/http/client.py\u001b[0m in \u001b[0;36mgetresponse\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 1329\u001b[0m \u001b[0;32mtry\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1330\u001b[0m \u001b[0;32mtry\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 1331\u001b[0;31m \u001b[0mresponse\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mbegin\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 1332\u001b[0m \u001b[0;32mexcept\u001b[0m \u001b[0mConnectionError\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1333\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mclose\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/http/client.py\u001b[0m in \u001b[0;36mbegin\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 295\u001b[0m \u001b[0;31m# read until we get a non-100 response\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 296\u001b[0m \u001b[0;32mwhile\u001b[0m \u001b[0;32mTrue\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 297\u001b[0;31m \u001b[0mversion\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mstatus\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mreason\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_read_status\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 298\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mstatus\u001b[0m \u001b[0;34m!=\u001b[0m \u001b[0mCONTINUE\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 299\u001b[0m \u001b[0;32mbreak\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/http/client.py\u001b[0m in \u001b[0;36m_read_status\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 256\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 257\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0m_read_status\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 258\u001b[0;31m \u001b[0mline\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mstr\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mfp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mreadline\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0m_MAXLINE\u001b[0m \u001b[0;34m+\u001b[0m \u001b[0;36m1\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m\"iso-8859-1\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 259\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mlen\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mline\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;34m>\u001b[0m \u001b[0m_MAXLINE\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 260\u001b[0m \u001b[0;32mraise\u001b[0m \u001b[0mLineTooLong\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"status line\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/socket.py\u001b[0m in \u001b[0;36mreadinto\u001b[0;34m(self, b)\u001b[0m\n\u001b[1;32m 584\u001b[0m \u001b[0;32mwhile\u001b[0m \u001b[0;32mTrue\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 585\u001b[0m \u001b[0;32mtry\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 586\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_sock\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mrecv_into\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mb\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 587\u001b[0m \u001b[0;32mexcept\u001b[0m \u001b[0mtimeout\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 588\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_timeout_occurred\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;32mTrue\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/ssl.py\u001b[0m in \u001b[0;36mrecv_into\u001b[0;34m(self, buffer, nbytes, flags)\u001b[0m\n\u001b[1;32m 1000\u001b[0m \u001b[0;34m\"non-zero flags not allowed in calls to recv_into() on %s\"\u001b[0m \u001b[0;34m%\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1001\u001b[0m self.__class__)\n\u001b[0;32m-> 1002\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mread\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mnbytes\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mbuffer\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 1003\u001b[0m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1004\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0msocket\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mrecv_into\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mbuffer\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mnbytes\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mflags\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/ssl.py\u001b[0m in \u001b[0;36mread\u001b[0;34m(self, len, buffer)\u001b[0m\n\u001b[1;32m 863\u001b[0m \u001b[0;32mraise\u001b[0m \u001b[0mValueError\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"Read on closed or unwrapped SSL socket.\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 864\u001b[0m \u001b[0;32mtry\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 865\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_sslobj\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mread\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mlen\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mbuffer\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 866\u001b[0m \u001b[0;32mexcept\u001b[0m \u001b[0mSSLError\u001b[0m \u001b[0;32mas\u001b[0m \u001b[0mx\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 867\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mx\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m0\u001b[0m\u001b[0;34m]\u001b[0m \u001b[0;34m==\u001b[0m \u001b[0mSSL_ERROR_EOF\u001b[0m \u001b[0;32mand\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msuppress_ragged_eofs\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/ssl.py\u001b[0m in \u001b[0;36mread\u001b[0;34m(self, len, buffer)\u001b[0m\n\u001b[1;32m 623\u001b[0m \"\"\"\n\u001b[1;32m 624\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mbuffer\u001b[0m \u001b[0;32mis\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0;32mNone\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 625\u001b[0;31m \u001b[0mv\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_sslobj\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mread\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mlen\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mbuffer\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 626\u001b[0m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 627\u001b[0m \u001b[0mv\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_sslobj\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mread\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mlen\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;31mKeyboardInterrupt\u001b[0m: " + ] + } + ], + "source": [ + "# Collects a list of all external URLs found on the site\n", + "allExtLinks = set()\n", + "allIntLinks = set()\n", + "\n", + "\n", + "def getAllExternalLinks(siteUrl):\n", + " html = urlopen(siteUrl)\n", + " domain = '{}://{}'.format(urlparse(siteUrl).scheme,\n", + " urlparse(siteUrl).netloc)\n", + " bs = BeautifulSoup(html, 'html.parser')\n", + " internalLinks = getInternalLinks(bs, domain)\n", + " externalLinks = getExternalLinks(bs, domain)\n", + "\n", + " for link in externalLinks:\n", + " if link not in allExtLinks:\n", + " allExtLinks.add(link)\n", + " print(link)\n", + " for link in internalLinks:\n", + " if link not in allIntLinks:\n", + " allIntLinks.add(link)\n", + " getAllExternalLinks(link)\n", + "\n", + "\n", + "allIntLinks.add('http://oreilly.com')\n", + "getAllExternalLinks('http://oreilly.com')" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.6.1" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/Chapter04_CrawlingModels.ipynb b/Chapter04_CrawlingModels.ipynb new file mode 100644 index 0000000..1f0692f --- /dev/null +++ b/Chapter04_CrawlingModels.ipynb @@ -0,0 +1,1326 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [], + "source": [ + "import requests\n", + "from bs4 import BeautifulSoup" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "def getPage(url):\n", + " \"\"\"\n", + " Utilty function used to get a Beautiful Soup object from a given URL\n", + " \"\"\"\n", + "\n", + " session = requests.Session()\n", + " headers = {\"User-Agent\": \"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.95 Safari/537.36\",\n", + " \"Accept\": \"text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8\"}\n", + " try:\n", + " req = session.get(url, headers=headers)\n", + " except requests.exceptions.RequestException:\n", + " return None\n", + " bs = BeautifulSoup(req.text, \"html.parser\")\n", + " return bs" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Dealing with different website layouts" + ] + }, + { + "cell_type": "code", + "execution_count": 37, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Title: Delivering inclusive urban access: 3 uncomfortable truths\n", + "URL: https://www.brookings.edu/blog/future-development/2018/01/26/delivering-inclusive-urban-access-3-uncomfortable-truths/\n", + "\n", + "\n", + "The past few decades have been filled with a deep optimism about the role of cities and suburbs across the world. These engines of economic growth host a majority of world population, are major drivers of economic innovation, and have created pathways to opportunities for untold amounts of people.\t\n", + "Authors\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "Jeffrey Gutman\n", + "Senior Fellow - Global Economy and Development\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "Adie Tomer\n", + "Fellow - Metropolitan Policy Program\n", + "\n", + " Twitter\n", + "AdieTomer\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "But all is not well within our so-called Urban Century. Rapid urbanization, rising gentrification, concentrated poverty, and shortages of basic infrastructure have combined to create spatial inequity in cities and suburbs across the globe. The challenges of housing, moving, and employing so many people have led to longer travel times, rising housing costs, and unsustainable public spending. Moreover, policymakers are questioning traditional policies and approaches.\n", + "The past couple years, we’ve led a project at Brookings—Moving to Access—that responds to these spatial challenges by promoting the idea of connecting people to opportunities as a new foundational principle for 21st century urban development. This principle of accessibility is meant to be a corollary to the natural questions we ask ourselves everyday about the communities where we live: Is this the best location to access employment? Are there nearby schools and health services? Is there a market in the neighborhood? How can I get from here to there? Such choices are valid for those with sufficient income. But what about those with more limited resources and thus choices in terms of affordable housing and affordable transport?\n", + "While economists, planners, and engineers have promoted accessibility for decades, the concept is more often found in textbooks than formal urban policies. In the first stage of this project, we worked with a team of experts to determine what has stalled practical implementation of appropriate policies and practices? “Delivering Inclusive Access,” a report of this initial work, offers a synthesis of what we found and where we believe researchers, policymakers, and practitioners can take this work next. The paper found three central challenges.\n", + "The fallacy of the single indicator\n", + "The current transport regime’s approach to measurement is one of outward elegance: The dominant pursuit is speed, and the primary way to measure it is congestion (or what slows us down). Many have come to label this approach a pursuit of “mobility.” It is seen through different, but often singular, measures of how congestion affects a specific roadway. Such singular measures are easily interpreted by policymakers and civil society and can be translated directly into economic analysis of related investments through timesavings. They also conveniently serve such purposes as the internationally agreed-upon Sustainable Development Goals. Yet they actually don’t answer the fundamental question of who can reach where, in how much time, and at what cost.\n", + "\n", + "\n", + "Related Content\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " \n", + "\n", + "\n", + "\n", + "Cities & Regions\n", + "Delivering inclusive access\n", + "\n", + "Jeffrey Gutman, Adie Tomer, Joseph Kane, Nirav Patel, and Ranjitha Shivaram\n", + "August 2017\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " \n", + "\n", + "\n", + "\n", + "Cities & Regions\n", + "Measuring performance: Accessibility metrics in metropolitan regions around the world\n", + "\n", + "Geneviève Boisjoly and Ahmed El-Geneidy\n", + "August 2017\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " \n", + "\n", + "\n", + "\n", + "Cities & Regions\n", + "Is better access key to inclusive cities?\n", + "\n", + "Jeffrey Gutman and Nirav Patel\n", + "Wednesday, October 5, 2016\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "Accessibility measures can answer those questions, but not through any one measure. First, the variable social, economic, and political contexts related to access mean searching for a single magical indicator is counterintuitive. For example, a wealthy, automobile-centric region like Dallas, Texas, may have very different measurable goals than a denser, poorer region like Dar es Salaam, Tanzania. Second, academic literature is now rife with such complex measures that it could be difficult to communicate their methodology and results with practitioners. The development of a suite of indicators could offer a menu for policymakers and practitioners to judge accessibility based on local objectives, local conditions, and local capacity.\n", + "The danger of excessive localization\n", + "Decentralization and empowering local communities is fast becoming a mantra of governance experts across the world, from development practitioners at institutions like the World Bank to city-focused theorists. And for good reason: delegating policy design and fiscal authority directly to the local level helps ensure policies and practices respond to local needs and desires. Yet as urban areas spillover into contiguous and often numerous municipalities, local independence can introduce certain challenges, especially relating to social and environmental externalities. When it comes to transportation and land development, interests of one municipality are often different from its neighbors. And these divergent development goals can exacerbate accessibility challenges within growing regions, spreading people, housing jobs, and other activities further from one another.\n", + "Addressing spatial inequities in land use and real estate markets require a broader approach to horizontal governance. While there are examples of metropolitan transport authorities, there is less willingness to consider metropolitan or horizontal governance of land use and fiscal policies. For example, should housing be coordinated across an entire region?\n", + "Countries with a more centralized top down approach to governance, such as France and Germany, have greater ability to formulate metropolitan governance than more decentralized countries such as the U.S. This is not to say there is a one-size-fits-all approach, but there is an opportunity to test different solutions within different governance contexts, comparing how effective each model is to promote spatial inclusivity.\n", + "The finance community is missing in action\n", + "Financing is a central topic in infrastructure circles. As maintenance bills from the automobile era come due, populations continue to grow, and fiscal budgets are tight, how can urban areas afford to build enough infrastructure to support future economic growth? In response, new approaches are evolving in fiscal instruments, such as value capture and private-public partnerships. Missing in these discussions, however, are the implications for inclusive access.\n", + "We conducted a multi-decade review of past academic literature on access and found that there is no clear substantive discussion of accessibility from a fiscal perspective. While urban transport and land use professionals clearly recognize their interrelationship in achieving inclusive accessibility, at least in theory, the fiscal and finance professionals generally ignore the implications of their instruments with regard to inclusivity. The multilateral development banks and their economic evaluations have ignored the distributive impacts until very recently. And the efforts of some countries to incorporate measures through multi-criteria analysis have had limited impact.\n", + "This gap must be resolved in any effort toward inclusive urban development. There is little doubt that fiscal approaches must carefully assess who ultimately pays and that alternative finance instruments should be adapted to foster access for all.\n", + "Going forward\n", + "Our research confirms that there are enormous opportunities to advance accessibility theory into practice. At this point, what is desperately needed is to launch a range of case studies that deal with these issues and challenges under different geographic, governance, and economic contexts. The good news is that many initiatives are already underway, and more robust communication channels and technology can support such efforts. In Chicago, researchers created an online platform to visually explore accessibility by location. In Bogota, researchers evaluated how affordability is a key principle of access. And in Cairo and Kigali, researchers used open tools to achieve new insights for accessibility. Sharing the results of these case studies could lead to a new level of cross-disciplinary approaches to improve accessibility and lessen the effects of spatial inequity.\n", + "\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Title: The Men Who Want to Live Forever\n", + "URL: https://www.nytimes.com/2018/01/25/opinion/sunday/silicon-valley-immortality.html\n", + "\n", + "Would you like to live forever? Some billionaires, already invincible in every other way, have decided that they also deserve not to die. Today several biotech companies, fueled by Silicon Valley fortunes, are devoted to “life extension” — or as some put it, to solving “the problem of death.”\n", + "It’s a cause championed by the tech billionaire Peter Thiel, the TED Talk darling Aubrey de Gray, Google’s billion-dollar Calico longevity lab and investment by Amazon’s Jeff Bezos. The National Academy of Medicine, an independent group, recently dedicated funding to “end aging forever.”\n", + "As the longevity entrepreneur Arram Sabeti told The New Yorker: “The proposition that we can live forever is obvious. It doesn’t violate the laws of physics, so we can achieve it.” Of all the slightly creepy aspects to this trend, the strangest is the least noticed: The people publicly championing life extension are mainly men.\n", + "Not all of them, of course. In 2009, Elizabeth Blackburn received the Nobel Prize for her work on telomeres, protein caps on chromosomes that may be a key to understanding aging. Cynthia Kenyon, the vice president for aging research at Calico, studied life extension long before it was cool; her former protégée, Laura Deming, now runs a venture capital fund for the cause. But these women are focused on curbing age-related pathology, a concept about as controversial as cancer research. They do not appear thirsty for the Fountain of Youth.\n", + "Professor Blackburn’s new book on telomeres couldn’t be clearer. “Does our research show that by maintaining your telomeres you will live into your hundreds?” it says. “No. Everyone’s cells become old and eventually we die.” Ms. Kenyon once described her research’s goal as “to just have a healthy life and then turn out the lights.” Even Ms. Deming, a 23-year-old prodigy who worked in Ms. Kenyon’s lab at age 12, points out that “aging is innately important to us.”\n", + "Few of these experts come close to matching the gaudy statements of the longevity investor and “biohacker” Dave Asprey, who has told journalists, “I decided that I was just not going to die.” Or those of Brian Hanley, a microbiologist who has tested an anti-aging gene therapy he developed on himself, who claimed: “There’s a bunch of things that will need to be done to achieve life spans into at least hundreds of years. But we’ll get there.” Or of the 74-year-old fashion mogul Peter Nygard, who during a promotional clip receives injections of his own stem cells to reverse his aging while declaring: “Ponce de León had the right idea. He was just too early. That was then. This is now.”\n", + "I came across Mr. Nygard’s ode to human endurance three years ago while beginning research on a novel about a woman who can’t die, and watching that video allowed me to experience something close to life extension. As Mr. Nygard compared himself to Leonardo da Vinci and Benjamin Franklin while dancing with a bevy of models — or as a voice-over explained, “living a life most can only dream of” — nine minutes of YouTube expanded into a vapid eternity, where time melted into a vortex of solipsism.\n", + "At that time I was immersed in caring for my four young children, and this paean to everlasting youth seemed especially stupid. I recall thinking that if this was eternal life, death didn’t seem that bad.\n", + "But now, as powerful men have begun falling like dominoes under accusations of sexual assault, that video with its young women clustered around an elderly multimillionaire has haunted me anew. As I recall my discomfort with the proclamations of longevity-driven men who hope to achieve “escape velocity,” I think of the astonishing hubris of the Harvey Weinsteins of the world, those who saw young women’s bodies as theirs for the taking.\n", + "Much has been said about why we allowed such behavior to go unchecked. What has remained unsaid, because it is so obvious, is what would make someone so shameless in the first place: These people believed they were invincible. They saw their own bodies as entirely theirs and other people’s bodies as at their disposal; apparently nothing in their lives led them to believe otherwise.\n", + "Historically, this is a mistake that few women would make, because until very recently, the physical experience of being a woman entailed exactly the opposite — and not only because women have to hold their keys in self-defense while walking through parking lots at night. It’s only very recently that women have widely participated in public life, but it’s even more recently that men have been welcome, or even expected, to provide physical care for vulnerable people.\n", + "Only for a nanosecond of human history have men even slightly shared what was once exclusively a woman’s burden: the relentless daily labor of caring for another person’s body, the life-preserving work of cleaning feces and vomit, the constant cycle of cooking and feeding and blanketing and bathing, whether for the young, the ill or the old. For nearly as long as there have been humans, being a female human has meant a daily nonoptional immersion in the fragility of human life and the endless effort required to sustain it.\n", + "Obviously not everyone who provides care for others is a saint. But engaging in that daily devotion, or even living with its expectation, has enormous potential to change a person. It forces one to constantly imagine the world from someone else’s point of view: Is he hungry? Maybe she’s tired. Is his back hurting him? What is she trying to say?\n", + "The most obvious cure for today’s gender inequities is to put more women in power. But if we really hope to create an equal society, we will also need more men to care for the powerless — more women in the boardroom, but also more men at the nurses’ station and the changing table, immersed in daily physical empathy. If that sounds like an evolutionary impossibility, well, it doesn’t violate the laws of physics, so we can achieve it. It is surely worth at least as much investment as defeating death.\n", + "Perhaps it takes the promise of immortality to inspire the self-absorbed to invest in unsexy work like Alzheimer’s research. If so, we may all one day bless the inane death-defiance as a means to a worthy end.\n", + "But men who hope to live forever might pause on their eternal journey to consider the frightening void at invincibility’s core. Death is the ultimate vulnerability. It is the moment when all of us must confront exactly what so many women have known all too well: You are a body, only a body, and nothing more.\n" + ] + } + ], + "source": [ + "import requests\n", + "\n", + "\n", + "class Content:\n", + " def __init__(self, url, title, body):\n", + " self.url = url\n", + " self.title = title\n", + " self.body = body\n", + "\n", + "\n", + "def getPage(url):\n", + " req = requests.get(url)\n", + " return BeautifulSoup(req.text, 'html.parser')\n", + "\n", + "\n", + "def scrapeNYTimes(url):\n", + " bs = getPage(url)\n", + " title = bs.find(\"h1\").text\n", + " lines = bs.find_all(\"p\", {\"class\": \"story-content\"})\n", + " body = '\\n'.join([line.text for line in lines])\n", + " return Content(url, title, body)\n", + "\n", + "\n", + "def scrapeBrookings(url):\n", + " bs = getPage(url)\n", + " title = bs.find(\"h1\").text\n", + " body = bs.find(\"div\", {\"class\", \"post-body\"}).text\n", + " return Content(url, title, body)\n", + "\n", + "\n", + "url = 'https://www.brookings.edu/blog/future-development/2018/01/26/delivering-inclusive-urban-access-3-uncomfortable-truths/'\n", + "content = scrapeBrookings(url)\n", + "print('Title: {}'.format(content.title))\n", + "print('URL: {}\\n'.format(content.url))\n", + "print(content.body)\n", + "\n", + "url = 'https://www.nytimes.com/2018/01/25/opinion/sunday/silicon-valley-immortality.html'\n", + "content = scrapeNYTimes(url)\n", + "print('Title: {}'.format(content.title))\n", + "print('URL: {}\\n'.format(content.url))\n", + "print(content.body)" + ] + }, + { + "cell_type": "code", + "execution_count": 40, + "metadata": {}, + "outputs": [], + "source": [ + "class Content:\n", + " \"\"\"\n", + " Common base class for all articles/pages\n", + " \"\"\"\n", + "\n", + " def __init__(self, url, title, body):\n", + " self.url = url\n", + " self.title = title\n", + " self.body = body\n", + "\n", + " def print(self):\n", + " \"\"\"\n", + " Flexible printing function controls output\n", + " \"\"\"\n", + " print(\"URL: {}\".format(self.url))\n", + " print(\"TITLE: {}\".format(self.title))\n", + " print(\"BODY:\\n{}\".format(self.body))\n", + "\n", + "\n", + "class Website:\n", + " \"\"\" \n", + " Contains information about website structure\n", + " \"\"\"\n", + "\n", + " def __init__(self, name, url, titleTag, bodyTag):\n", + " self.name = name\n", + " self.url = url\n", + " self.titleTag = titleTag\n", + " self.bodyTag = bodyTag" + ] + }, + { + "cell_type": "code", + "execution_count": 41, + "metadata": {}, + "outputs": [], + "source": [ + "import requests\n", + "from bs4 import BeautifulSoup\n", + "\n", + "\n", + "class Crawler:\n", + "\n", + " def getPage(self, url):\n", + " try:\n", + " req = requests.get(url)\n", + " except requests.exceptions.RequestException:\n", + " return None\n", + " return BeautifulSoup(req.text, 'html.parser')\n", + "\n", + " def safeGet(self, pageObj, selector):\n", + " \"\"\"\n", + " Utilty function used to get a content string from a Beautiful Soup\n", + " object and a selector. Returns an empty string if no object\n", + " is found for the given selector\n", + " \"\"\"\n", + " selectedElems = pageObj.select(selector)\n", + " if selectedElems is not None and len(selectedElems) > 0:\n", + " return '\\n'.join([elem.get_text() for elem in selectedElems])\n", + " return ''\n", + "\n", + " def parse(self, site, url):\n", + " \"\"\"\n", + " Extract content from a given page URL\n", + " \"\"\"\n", + " bs = self.getPage(url)\n", + " if bs is not None:\n", + " title = self.safeGet(bs, site.titleTag)\n", + " body = self.safeGet(bs, site.bodyTag)\n", + " if title != '' and body != '':\n", + " content = Content(url, title, body)\n", + " content.print()" + ] + }, + { + "cell_type": "code", + "execution_count": 42, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "title is:\n", + "Learning Python, 5th Edition \n", + "Body is:\n", + "\n", + "Get a comprehensive, in-depth introduction to the core Python language with this hands-on book. Based on author Mark Lutz’s popular training course, this updated fifth edition will help you quickly write efficient, high-quality code with Python. It’s an ideal way to begin, whether you’re new to programming or a professional developer versed in other languages. \n", + "\n", + "Complete with quizzes, exercises, and helpful illustrations, this easy-to-follow, self-paced tutorial gets you started with both Python 2.7 and 3.3— the latest releases in the 3.X and 2.X lines—plus all other releases in common use today. You’ll also learn some advanced language features that recently have become more common in Python code.\n", + "\n", + "Explore Python’s major built-in object types such as numbers, lists, and dictionaries \n", + "Create and process objects with Python statements, and learn Python’s general syntax model\n", + "Use functions to avoid code redundancy and package code for reuse\n", + "Organize statements, functions, and other tools into larger components with modules \n", + "Dive into classes: Python’s object-oriented programming tool for structuring code\n", + "Write large programs with Python’s exception-handling model and development tools\n", + "Learn advanced Python tools, including decorators, descriptors, metaclasses, and Unicode processing\n", + "\n", + "\n", + "URL: http://shop.oreilly.com/product/0636920028154.do\n", + "TITLE: Learning Python, 5th Edition \n", + "BODY:\n", + "\n", + "Get a comprehensive, in-depth introduction to the core Python language with this hands-on book. Based on author Mark Lutz’s popular training course, this updated fifth edition will help you quickly write efficient, high-quality code with Python. It’s an ideal way to begin, whether you’re new to programming or a professional developer versed in other languages. \n", + "\n", + "Complete with quizzes, exercises, and helpful illustrations, this easy-to-follow, self-paced tutorial gets you started with both Python 2.7 and 3.3— the latest releases in the 3.X and 2.X lines—plus all other releases in common use today. You’ll also learn some advanced language features that recently have become more common in Python code.\n", + "\n", + "Explore Python’s major built-in object types such as numbers, lists, and dictionaries \n", + "Create and process objects with Python statements, and learn Python’s general syntax model\n", + "Use functions to avoid code redundancy and package code for reuse\n", + "Organize statements, functions, and other tools into larger components with modules \n", + "Dive into classes: Python’s object-oriented programming tool for structuring code\n", + "Write large programs with Python’s exception-handling model and development tools\n", + "Learn advanced Python tools, including decorators, descriptors, metaclasses, and Unicode processing\n", + "\n", + "\n", + "title is:\n", + "EPA chief wants scientists to debate climate on TV\n", + "Body is:\n", + "WASHINGTON (Reuters) - The U.S. Environmental Protection Agency is in the early stages of launching a debate about climate change that could air on television – challenging scientists to prove the widespread view that global warming is a serious threat, the head of the agency said. The move comes as the administration of President Donald Trump seeks to roll back a slew of Obama-era regulations limiting carbon dioxide emissions from fossil fuels, and begins a withdrawal from the Paris Climate Agreement - a global pact to stem planetary warming through emissions cuts. “There are lots of questions that have not been asked and answered (about climate change),” EPA Administrator Scott Pruitt told Reuters in an interview late on Monday. “Who better to do that than a group of scientists... getting together and having a robust discussion for all the world to see,” he added without explaining how the scientists would be chosen. Asked if he thought the debate should be televised, Pruitt said: “I think so. I think so. I mean, I don’t know yet, but you want this to be open to the world. You want this to be on full display. I think the American people would be very interested in consuming that. I think they deserve it.” Pruitt, one of the most controversial figures in the Trump administration, has repeatedly expressed doubts about climate change – one of the main points of contention in his narrow confirmation by the Senate. While acknowledging the planet is warming, Pruitt says he questions the gravity of the problem and the need for regulations that require companies to take costly measures to reduce their carbon footprint. “It is a question about how much we contribute to it. How do we measure that with precision? And by the way, are we on an unsustainable path? And is it causing an existential threat?” he said in the interview. Since taking up his role at EPA, he has emerged as one of the more prolific Trump cabinet appointees, taking steps to undo more than two dozen regulations, and influencing Trump’s decision to pull the United States from the Paris climate change deal, agreed by nearly 200 countries in 2015. Pruitt rejected global criticism of the United States for pulling out of the climate deal, which Trump has said would have cost America trillions of dollars without benefit. Environmental Protection Agency Administrator Scott Pruitt waves after an interview for Reuters at his office in Washington, U.S., July 10, 2017. REUTERS/Yuri Gripas“We have nothing to be apologetic about,” Pruitt said. “It was absolutely a decision of courage and fortitude and truly represented an America First strategy with respect to how we are leading on this issue.” Pruitt said the United States had already cut its carbon output to the lowest levels in nearly 25 years without mandates, thanks mainly to increased use of natural gas - which burns cleaner than coal. “RED TEAM, BLUE TEAM” TACTICS Slideshow (4 Images)Pruitt said his desire for the agency to host an ongoing climate change debate was inspired by two articles published in April – one in the Wall Street Journal by theoretical physicist Steve Koonin, who served as undersecretary of energy under Obama – and one by conservative columnist Brett Stephens in the New York Times. Koonin’s article made the case that climate science should use the “red team-blue team” methodology used by the national security community to test assumptions. Stephens’ article criticized claims of complete certainty in climate science, saying that it “traduces the spirit of science.” Pruitt said scientists should not scoff at the idea of participating in these debates. Related CoverageTranscript of Reuters interview with EPA Administrator Scott Pruitt“If you’re going to win and if you’re so certain about it, come and do your deal. They shouldn’t be scared of the debate and discussion,” he said. Pruitt said debate is not necessarily aimed at undermining the 2009 “endangerment finding,” the scientific determination that carbon dioxide harms human health that formed the basis for the Democratic Obama administration’s regulation of greenhouse gases. He said there may be a legal basis to challenge the finding but would prefer Congress weigh in on the matter. In the interview, Pruitt added that he intended to deal “very aggressively” with automakers that use devices to cheat emissions tests, and would also seek to boost accountability for companies to clean up polluted sites under the Superfund program. He said EPA was also not ready to decide yet on a change proposed by Trump’s special adviser Carl Icahn to the U.S. biofuels program, that would shift the burden of blending biofuels like ethanol into gasoline away from refiners to companies further down the supply chain. Editing by Richard Valdmanis and Marguerita ChoyOur Standards:The Thomson Reuters Trust Principles.\n", + "URL: http://www.reuters.com/article/us-usa-epa-pruitt-idUSKBN19W2D0\n", + "TITLE: EPA chief wants scientists to debate climate on TV\n", + "BODY:\n", + "WASHINGTON (Reuters) - The U.S. Environmental Protection Agency is in the early stages of launching a debate about climate change that could air on television – challenging scientists to prove the widespread view that global warming is a serious threat, the head of the agency said. The move comes as the administration of President Donald Trump seeks to roll back a slew of Obama-era regulations limiting carbon dioxide emissions from fossil fuels, and begins a withdrawal from the Paris Climate Agreement - a global pact to stem planetary warming through emissions cuts. “There are lots of questions that have not been asked and answered (about climate change),” EPA Administrator Scott Pruitt told Reuters in an interview late on Monday. “Who better to do that than a group of scientists... getting together and having a robust discussion for all the world to see,” he added without explaining how the scientists would be chosen. Asked if he thought the debate should be televised, Pruitt said: “I think so. I think so. I mean, I don’t know yet, but you want this to be open to the world. You want this to be on full display. I think the American people would be very interested in consuming that. I think they deserve it.” Pruitt, one of the most controversial figures in the Trump administration, has repeatedly expressed doubts about climate change – one of the main points of contention in his narrow confirmation by the Senate. While acknowledging the planet is warming, Pruitt says he questions the gravity of the problem and the need for regulations that require companies to take costly measures to reduce their carbon footprint. “It is a question about how much we contribute to it. How do we measure that with precision? And by the way, are we on an unsustainable path? And is it causing an existential threat?” he said in the interview. Since taking up his role at EPA, he has emerged as one of the more prolific Trump cabinet appointees, taking steps to undo more than two dozen regulations, and influencing Trump’s decision to pull the United States from the Paris climate change deal, agreed by nearly 200 countries in 2015. Pruitt rejected global criticism of the United States for pulling out of the climate deal, which Trump has said would have cost America trillions of dollars without benefit. Environmental Protection Agency Administrator Scott Pruitt waves after an interview for Reuters at his office in Washington, U.S., July 10, 2017. REUTERS/Yuri Gripas“We have nothing to be apologetic about,” Pruitt said. “It was absolutely a decision of courage and fortitude and truly represented an America First strategy with respect to how we are leading on this issue.” Pruitt said the United States had already cut its carbon output to the lowest levels in nearly 25 years without mandates, thanks mainly to increased use of natural gas - which burns cleaner than coal. “RED TEAM, BLUE TEAM” TACTICS Slideshow (4 Images)Pruitt said his desire for the agency to host an ongoing climate change debate was inspired by two articles published in April – one in the Wall Street Journal by theoretical physicist Steve Koonin, who served as undersecretary of energy under Obama – and one by conservative columnist Brett Stephens in the New York Times. Koonin’s article made the case that climate science should use the “red team-blue team” methodology used by the national security community to test assumptions. Stephens’ article criticized claims of complete certainty in climate science, saying that it “traduces the spirit of science.” Pruitt said scientists should not scoff at the idea of participating in these debates. Related CoverageTranscript of Reuters interview with EPA Administrator Scott Pruitt“If you’re going to win and if you’re so certain about it, come and do your deal. They shouldn’t be scared of the debate and discussion,” he said. Pruitt said debate is not necessarily aimed at undermining the 2009 “endangerment finding,” the scientific determination that carbon dioxide harms human health that formed the basis for the Democratic Obama administration’s regulation of greenhouse gases. He said there may be a legal basis to challenge the finding but would prefer Congress weigh in on the matter. In the interview, Pruitt added that he intended to deal “very aggressively” with automakers that use devices to cheat emissions tests, and would also seek to boost accountability for companies to clean up polluted sites under the Superfund program. He said EPA was also not ready to decide yet on a change proposed by Trump’s special adviser Carl Icahn to the U.S. biofuels program, that would shift the burden of blending biofuels like ethanol into gasoline away from refiners to companies further down the supply chain. Editing by Richard Valdmanis and Marguerita ChoyOur Standards:The Thomson Reuters Trust Principles.\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "title is:\n", + "Idea to Retire: Old methods of policy education\n", + "Idea to Retire: Old methods of policy education\n", + "Body is:\n", + "\n", + "Public policy and public affairs schools aim to train competent creators and implementers of government policy. While drawing on the principles that gird our economic and political systems to provide a well-rounded education, like law schools and business schools, policy schools provide professional training. They are quite distinct from graduate programs in political science or economics which aim to train the next generation of academics. As professional training programs, they add value by imparting both the skills which are relevant to current employers, and skills which we know will be relevant as organizations and societies evolve. \n", + "The relevance of the skills that policy programs impart to address problems of today and tomorrow bears further discussion. We are living through an era in which societies are increasingly interconnected. The wide-scale adoption of devices such as the smartphone is having a profound impact on our culture, communities, and economy. The use of social and digital media and associated means of communication enabled by mobile devices is changing the tone, content, and geographic scope of our conversations, modifying how information is generated and consumed, and changing the very nature of citizen engagement. \n", + "Information technology-based platforms provisioned by private providers such as Facebook, Google, Uber, and Lyft maintain information about millions of citizens and enable services such as transportation that were mediated in the past solely by the public sector. Surveillance for purposes of public safety via large-scale deployment of sensors also raises fundamental questions about information privacy. From technology-enabled global delivery of work to displacement and replacement of categories of work, some studies estimate that up to 47 percent of U.S. employment might be at risk of computerization with an attendant rise in income inequality. These technology-induced changes will affect every policy domain. How should policy programs best prepare students to address societal challenges in this world that is being transformed by technology? We believe the answer lies in educating students to be “men and women of intelligent action.” \n", + "A model of policy education\n", + "We begin with a skills-based model of policy education. These four essential skills address the general problems policy practitioners frequently face:\n", + "\n", + "Design skills to craft policy ideas \n", + "Analytical skills to make smart ex ante decisions \n", + "Interpersonal experience to manage policy implementation  \n", + "Evaluative skills to assess outcomes ex post and correct course if necessary\n", + "\n", + "These skills make up the policy analysis toolkit required to be data driven practitioner of “intelligent action” in any policy domain. This toolkit needs to be supplemented by an understanding of how technology is transforming societal challenges, enabling new solutions, or disrupting existing regulatory regimes. This understanding is essential to policy formulation and implementation. \n", + "Pillar 1: Design skills\n", + "As with engineering, where design precedes analysis, this first pillar seeks to educate students in thinking creatively about problems in order to devise and develop policy ideas. Using ideas derived from design, divergent and convergent thinking principles are employed to generate, explore, and arrive at a candidate set of solutions. Using Uber as an example, an approach to identify and explore the key policy issues such as convenience, costs, driver working hours, and insurance would involve interviewing and observing both incumbent taxi drivers and Uber drivers. This in turn would lead to a set of alternatives that deserve further and careful consideration.  Using these skills, candidate designs and choices that are generated can be evaluated using the policy analytic toolkit. \n", + "Pillar 2: Analytical skills\n", + "\n", + "\n", + "Related\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " \n", + "\n", + "\n", + "\n", + "TechTank\n", + "The Blockchain: What It Is and Why It Matters\n", + "\n", + "Mohit Kaushal and Sheel Tyle\n", + "Tuesday, January 13, 2015\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " \n", + "\n", + "\n", + "\n", + "TechTank\n", + "How technology is changing manufacturing\n", + "\n", + "Darrell M. West\n", + "Thursday, June 2, 2016\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " \n", + "\n", + "\n", + "\n", + "TechTank\n", + "Rural and urban America divided by broadband access\n", + "\n", + "Darrell M. West and Jack Karsten\n", + "Monday, July 18, 2016\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "At Carnegie Mellon, we are often cited in media and interrogated by peers on our approach to analytical and technology skills education. Curiosity about which skills are the “right” skills to teach policy practitioners are common, but we believe this is the wrong approach. We instead begin from the premise that policy or management decisions should be grounded in evidence.  We then determine the skills required to assemble the types of evidence that will likely be available to policy makers in the future.  In increasingly instrumented environments where citizens and infrastructure produce continuous streams of data, making sense of it all will require a somewhat different set of skills. We believe that a grounding in micro-economics, operations research, statistics, and program evaluation (aka causal inference) to be an essential core to policy programs. \n", + "New coursework will teach students to work with multi-variable data and machine learning with an emphasis on prediction. This material ought to be part of the required coursework in statistics given the importance of prediction in many policy implementation settings. Along the same lines, the ability to work with unstructured data (especially text) and data visualization will become increasingly relevant to all students, not just those students who want to specialize in data analytics. Finally, knowledge of data manipulation and analysis languages such as Python and R for analytic work will be important because data often has to be massaged and cleansed prior to analysis. An important task for programs will be to determine the competencies expected of graduates. \n", + "Pillar 3: Interpersonal experiences\n", + "The third pillar of the skills-based model is interpersonal experience, where the practiced habits of good communication and steady negotiation developed with a sound understanding of organizations, their design and their behaviors. We label these purposely as experiences rather than skills because we believe they are best practiced either in the real-world or in simulated real-world settings. It is also in this pillar where practitioners learn the knowledge necessary to become credible experts in their domain. We believe that in addition to core coursework in the area, a supplementary curriculum which provides students with opportunities to gain these experiences is an essential component of our educational model.\n", + "Pillar 4: Evaluative skills\n", + "\n", + "\n", + "Related Books\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "Constitution 3.0\n", + "\n", + "\n", + "\t\t\t\t\t\tEdited by Jeffrey Rosen and Benjamin Wittes \n", + "2013\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "The Need for Speed\n", + "\n", + "\n", + "\t\t\t\t\t\tBy Robert E. Litan and Hal J. Singer \n", + "2013\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "After the Breakup\n", + "\n", + "\n", + "\t\t\t\t\t\tBy Robert W. Crandall \n", + "2010\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "The ability to carefully diagnose the effectiveness of policy or management interventions is the fourth pillar of our model. It is insufficient to create and execute policy without measurement, and this is where both careful thought to the fundamental issues of measurement and evaluation become important. The ability to make objective judgments on the benefits, liabilities, and unintended consequences of prior policies is the goal of this set of skills. Here, sound statistical and econometric training with an understanding of the principles of causal inference is essential. In addition, program evaluation skills such as cost-benefit and financial analysis help practitioners round out their evaluation skills by considering both non-monetary and economic impacts.\n", + "What should be retired?\n", + "A skills-based approach might replace certain aspects of existing policy training.  This depends on a number of factors specific to each institution, but three generally applicable observations are clear. First, real-world experiences are a powerful way to encode domain learning as well as project management skills. Through project-based work, students can learn about institutional contexts in specific policy domains and political processes such as budgeting. Second, team-based projects allow students to learn and apply principles of management and organizational behavior. At Carnegie Mellon, we refer to these as “systems synthesis” projects, since they require students to adopt a systemic point of view and to synthesize a number of skills in their policy analysis toolkit. Third, interpersonal skills training can be practiced through activities such as weekend negotiation exercises, hackathons, and speaker series. These activities can be highly intentional and fashioned to reinforce skills rather than as a recess from the “real work” of classroom training. Since students complete graduate programs in such a short time, counseling them to focus on outcomes from day one will allow them to choose a reinforcing set of coursework and real-world experiences. \n", + "In summary, we argue for a model of policy education that views practitioners as future problem solvers. Good policy education must consider the ways in which problems will present themselves, and the ways in which answers will obscure themselves. Rigorous training grounded in the analysis of available evidence and buoyed by real-world interpersonal experiences is a sound approach to relevant, durable policy training.\n", + " \n", + "Authors\n", + "\n", + "\n", + "\n", + "\n", + "R\n", + "\n", + "\n", + "\n", + "Ramayya Krishnan\n", + "Ramayya Krishnan is the dean of H. John Heinz III College of Information Systems and Public Policy at Carnegie Mellon University where he is the W.W. Cooper and Ruth F. Cooper Professor of Management Science and Information Systems.\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "J\n", + "\n", + "\n", + "\n", + "Jon Nehlsen\n", + "Jon Nehlsen is senior director of external relations at H. John Heinz III College of Information Systems and Public Policy at Carnegie Mellon University.\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "Read other essays in the Ideas to Retire blog series here.\n", + "\n", + "URL: https://www.brookings.edu/blog/techtank/2016/03/01/idea-to-retire-old-methods-of-policy-education/\n", + "TITLE: Idea to Retire: Old methods of policy education\n", + "Idea to Retire: Old methods of policy education\n", + "BODY:\n", + "\n", + "Public policy and public affairs schools aim to train competent creators and implementers of government policy. While drawing on the principles that gird our economic and political systems to provide a well-rounded education, like law schools and business schools, policy schools provide professional training. They are quite distinct from graduate programs in political science or economics which aim to train the next generation of academics. As professional training programs, they add value by imparting both the skills which are relevant to current employers, and skills which we know will be relevant as organizations and societies evolve. \n", + "The relevance of the skills that policy programs impart to address problems of today and tomorrow bears further discussion. We are living through an era in which societies are increasingly interconnected. The wide-scale adoption of devices such as the smartphone is having a profound impact on our culture, communities, and economy. The use of social and digital media and associated means of communication enabled by mobile devices is changing the tone, content, and geographic scope of our conversations, modifying how information is generated and consumed, and changing the very nature of citizen engagement. \n", + "Information technology-based platforms provisioned by private providers such as Facebook, Google, Uber, and Lyft maintain information about millions of citizens and enable services such as transportation that were mediated in the past solely by the public sector. Surveillance for purposes of public safety via large-scale deployment of sensors also raises fundamental questions about information privacy. From technology-enabled global delivery of work to displacement and replacement of categories of work, some studies estimate that up to 47 percent of U.S. employment might be at risk of computerization with an attendant rise in income inequality. These technology-induced changes will affect every policy domain. How should policy programs best prepare students to address societal challenges in this world that is being transformed by technology? We believe the answer lies in educating students to be “men and women of intelligent action.” \n", + "A model of policy education\n", + "We begin with a skills-based model of policy education. These four essential skills address the general problems policy practitioners frequently face:\n", + "\n", + "Design skills to craft policy ideas \n", + "Analytical skills to make smart ex ante decisions \n", + "Interpersonal experience to manage policy implementation  \n", + "Evaluative skills to assess outcomes ex post and correct course if necessary\n", + "\n", + "These skills make up the policy analysis toolkit required to be data driven practitioner of “intelligent action” in any policy domain. This toolkit needs to be supplemented by an understanding of how technology is transforming societal challenges, enabling new solutions, or disrupting existing regulatory regimes. This understanding is essential to policy formulation and implementation. \n", + "Pillar 1: Design skills\n", + "As with engineering, where design precedes analysis, this first pillar seeks to educate students in thinking creatively about problems in order to devise and develop policy ideas. Using ideas derived from design, divergent and convergent thinking principles are employed to generate, explore, and arrive at a candidate set of solutions. Using Uber as an example, an approach to identify and explore the key policy issues such as convenience, costs, driver working hours, and insurance would involve interviewing and observing both incumbent taxi drivers and Uber drivers. This in turn would lead to a set of alternatives that deserve further and careful consideration.  Using these skills, candidate designs and choices that are generated can be evaluated using the policy analytic toolkit. \n", + "Pillar 2: Analytical skills\n", + "\n", + "\n", + "Related\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " \n", + "\n", + "\n", + "\n", + "TechTank\n", + "The Blockchain: What It Is and Why It Matters\n", + "\n", + "Mohit Kaushal and Sheel Tyle\n", + "Tuesday, January 13, 2015\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " \n", + "\n", + "\n", + "\n", + "TechTank\n", + "How technology is changing manufacturing\n", + "\n", + "Darrell M. West\n", + "Thursday, June 2, 2016\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " \n", + "\n", + "\n", + "\n", + "TechTank\n", + "Rural and urban America divided by broadband access\n", + "\n", + "Darrell M. West and Jack Karsten\n", + "Monday, July 18, 2016\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "At Carnegie Mellon, we are often cited in media and interrogated by peers on our approach to analytical and technology skills education. Curiosity about which skills are the “right” skills to teach policy practitioners are common, but we believe this is the wrong approach. We instead begin from the premise that policy or management decisions should be grounded in evidence.  We then determine the skills required to assemble the types of evidence that will likely be available to policy makers in the future.  In increasingly instrumented environments where citizens and infrastructure produce continuous streams of data, making sense of it all will require a somewhat different set of skills. We believe that a grounding in micro-economics, operations research, statistics, and program evaluation (aka causal inference) to be an essential core to policy programs. \n", + "New coursework will teach students to work with multi-variable data and machine learning with an emphasis on prediction. This material ought to be part of the required coursework in statistics given the importance of prediction in many policy implementation settings. Along the same lines, the ability to work with unstructured data (especially text) and data visualization will become increasingly relevant to all students, not just those students who want to specialize in data analytics. Finally, knowledge of data manipulation and analysis languages such as Python and R for analytic work will be important because data often has to be massaged and cleansed prior to analysis. An important task for programs will be to determine the competencies expected of graduates. \n", + "Pillar 3: Interpersonal experiences\n", + "The third pillar of the skills-based model is interpersonal experience, where the practiced habits of good communication and steady negotiation developed with a sound understanding of organizations, their design and their behaviors. We label these purposely as experiences rather than skills because we believe they are best practiced either in the real-world or in simulated real-world settings. It is also in this pillar where practitioners learn the knowledge necessary to become credible experts in their domain. We believe that in addition to core coursework in the area, a supplementary curriculum which provides students with opportunities to gain these experiences is an essential component of our educational model.\n", + "Pillar 4: Evaluative skills\n", + "\n", + "\n", + "Related Books\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "Constitution 3.0\n", + "\n", + "\n", + "\t\t\t\t\t\tEdited by Jeffrey Rosen and Benjamin Wittes \n", + "2013\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "The Need for Speed\n", + "\n", + "\n", + "\t\t\t\t\t\tBy Robert E. Litan and Hal J. Singer \n", + "2013\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "After the Breakup\n", + "\n", + "\n", + "\t\t\t\t\t\tBy Robert W. Crandall \n", + "2010\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "The ability to carefully diagnose the effectiveness of policy or management interventions is the fourth pillar of our model. It is insufficient to create and execute policy without measurement, and this is where both careful thought to the fundamental issues of measurement and evaluation become important. The ability to make objective judgments on the benefits, liabilities, and unintended consequences of prior policies is the goal of this set of skills. Here, sound statistical and econometric training with an understanding of the principles of causal inference is essential. In addition, program evaluation skills such as cost-benefit and financial analysis help practitioners round out their evaluation skills by considering both non-monetary and economic impacts.\n", + "What should be retired?\n", + "A skills-based approach might replace certain aspects of existing policy training.  This depends on a number of factors specific to each institution, but three generally applicable observations are clear. First, real-world experiences are a powerful way to encode domain learning as well as project management skills. Through project-based work, students can learn about institutional contexts in specific policy domains and political processes such as budgeting. Second, team-based projects allow students to learn and apply principles of management and organizational behavior. At Carnegie Mellon, we refer to these as “systems synthesis” projects, since they require students to adopt a systemic point of view and to synthesize a number of skills in their policy analysis toolkit. Third, interpersonal skills training can be practiced through activities such as weekend negotiation exercises, hackathons, and speaker series. These activities can be highly intentional and fashioned to reinforce skills rather than as a recess from the “real work” of classroom training. Since students complete graduate programs in such a short time, counseling them to focus on outcomes from day one will allow them to choose a reinforcing set of coursework and real-world experiences. \n", + "In summary, we argue for a model of policy education that views practitioners as future problem solvers. Good policy education must consider the ways in which problems will present themselves, and the ways in which answers will obscure themselves. Rigorous training grounded in the analysis of available evidence and buoyed by real-world interpersonal experiences is a sound approach to relevant, durable policy training.\n", + " \n", + "Authors\n", + "\n", + "\n", + "\n", + "\n", + "R\n", + "\n", + "\n", + "\n", + "Ramayya Krishnan\n", + "Ramayya Krishnan is the dean of H. John Heinz III College of Information Systems and Public Policy at Carnegie Mellon University where he is the W.W. Cooper and Ruth F. Cooper Professor of Management Science and Information Systems.\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "J\n", + "\n", + "\n", + "\n", + "Jon Nehlsen\n", + "Jon Nehlsen is senior director of external relations at H. John Heinz III College of Information Systems and Public Policy at Carnegie Mellon University.\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "Read other essays in the Ideas to Retire blog series here.\n", + "\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "title is:\n", + "Oil Boom Gives the U.S. a New Edge in Energy and Diplomacy\n", + "Body is:\n", + "HOUSTON — A substantial rise in oil prices in recent months has led to a resurgence in American oil production, enabling the country to challenge the dominance of Saudi Arabia and dampen price pressures at the pump.\n", + "The success has come in the face of efforts by Saudi Arabia and its oil allies to undercut the shale drilling spree in the United States. Those strategies backfired and ultimately ended up benefiting the oil industry.\n", + "Overcoming three years of slumping prices proved the resiliency of the shale boom. Energy companies and their financial backers were able to weather market turmoil — and the maneuvers of the global oil cartel — by adjusting exploration and extraction techniques.\n", + "After a painful shakeout in the industry that included scores of bankruptcies and a significant loss of jobs, a steadier shale-drilling industry is arising, anchored by better-financed companies.\n", + "With the price of West Texas intermediate crude above $65 a barrel, a level not seen in almost three years, the United States is becoming a dominant producer. It is able to outflank competitors in supplying growing global markets, particularly China and India, while slashing imports from the Middle East and North Africa.\n", + "This year, the United States is expected to surpass Saudi Arabia and to rival Russia as the world’s leader, with record output of over 10 million barrels a day, according to the International Energy Agency.\n", + "“This is a 180-degree turn for the United States and the impacts are being felt around the world,” said Daniel Yergin, the economic historian and author of “The Prize: The Epic Quest for Oil, Money and Power.” “This not only contributes to U.S. energy security but also contributes to world energy security by bringing new supplies to the world.”\n", + "At the same time, the United States is becoming a major exporter of natural gas, another outgrowth of the shale revolution, undercutting Russian energy dominance over Eastern Europe.\n", + "The improving energy picture comes as the Trump administration is attempting to increase offshore drilling and loosen other regulations on fossil fuel development. But just as the surge in oil and gas production in shale fields during the Barack Obama administration had little to do with Washington, the current rise is the result of private companies responding to global markets.\n", + "Shale fields can be developed relatively quickly and at modest costs relative to the giant projects, whether on land or offshore, that were once favored by big oil companies. That makes it easier to turn investment spigots on or off to adjust to market fluctuations. Companies like Exxon Mobil and Chevron are putting increasing amounts of capital in shale fields, particularly in West Texas and New Mexico.\n", + "The results go far beyond the economic, offering Washington strategic weapons once unthinkable. The United States and its allies now have a supply cushion at a time when political turmoil in Venezuela, Libya and Nigeria is threatening to interrupt flows to markets.\n", + "Only a few years ago, such threats — along with a recent pipeline failure in the North Sea and storms in the Gulf of Mexico — would have sent the price of crude soaring. Instead, the rise has been muted, and gasoline at the pump remains below $2.60 a gallon across most of the United States.\n", + "The new energy power also relieves pressure on Washington to act militarily if tensions between Iran and Saudi Arabia break out into war. And it gives Washington the leeway to apply sanctions on other producers — as it has in Russia, and may in Iran or Venezuela — with far less risk to the global economy.\n", + "It is a striking contrast to the 1970s, when Arab oil boycotts forced motorists to line up for blocks to fill their tanks and the economy went into a tailspin. Even more recently, during the presidency of George W. Bush, domestic oil output was declining so rapidly that the country set a course to replace oil with biofuels like ethanol.\n", + "Many environmentalists argue that by increasing oil and gas supplies and lowering prices for consumers, shale drilling is extending the life of fossil fuels to the detriment of the environment and the development of cleaner energy.\n", + "The shale drilling revolution has remade the global energy market, with imports from members of the Organization of the Petroleum Exporting Countries plunging by 20 percent from late 2016 to late 2017. At the same time, exports rose by hundreds of thousands of barrels a day.\n", + "Nothing like the current situation was foreseen in late 2014, when rising domestic production began weighing on global oil prices.\n", + "In response, Saudi Arabia led OPEC in a new direction. Instead of throttling back to support prices as the cartel had done so often, it left the market alone and even increased production for a time.\n", + "Prices fell below $40 a barrel, as the Saudis and their allies hoped to drive American operations out of business by making shale drilling uneconomical. American exploration quickly dropped, but the price squeeze made companies more innovative in the use of drilling technologies, robotics and sensors to maximize output and reduce costs.\n", + "While scores of smaller companies went out of business, the survivors lengthened horizontal wells to yield more oil, and used clever hedging and drilling strategies to maximize profits even when prices slumped.\n", + "The response surprised the global oil community. OPEC, Russia and allied producing countries changed course and began cutting back again in 2016.\n", + "“OPEC missed the point,” said René Ortiz, a former OPEC secretary general and former Ecuadorean energy minister. “They thought they could recover the U.S. market by bringing the prices down. Now the U.S. has gained the leading position in the world oil market regardless of what OPEC does.”\n", + "“This displacement of Saudi oil, Nigerian oil, Libyan oil and Venezuelan oil,” Mr. Ortiz concluded, “was never anticipated.”\n", + "A week ago, OPEC leaders met in Oman to discuss a probable extension of production cuts into 2019 to support prices. Their biggest obstacle is the United States.\n", + "Technological advances unlocking oil from tight rocks like shale has led to a drilling frenzy enabling a doubling of output in a decade, transforming unlikely places like North Dakota and New Mexico into world class petroleum hubs. Pipelines are being built across Texas to serve ports where oil can be pumped onto tankers headed for China, India and other markets.\n", + "Domestic production last year averaged 9.3 million barrels a day, and the Energy Department projects that the figure will climb to 10.3 million barrels a day this year, surpassing the record set in 1970. In the meantime, since a 40-year export ban was lifted in 2015, exports of American oil have risen to roughly two million barrels a day — more than many OPEC members.\n", + "The department projects an additional increase in domestic production of 500,000 barrels a day in 2019.\n", + "Concerns over climate change as well as the growing popularity of electric cars and the eventual aging of the best shale fields will probably curb production and demand over the next few decades. But in the short term, the boom has changed the landscape.\n", + "The Energy Department projects that the recent surge will hold the price of Brent crude, the global benchmark, to $60 a barrel in 2018 and $61 a barrel in 2019 — a modest increase from $54 last year. (The Brent price rose above $70 a barrel this month, but few analysts see a return to $100-a-barrel oil.)\n", + "The emerging order in the energy realm is a stable balance of power. Saudi Arabia, which essentially runs OPEC, has put a floor under the oil price — probably around $50 a barrel — with its limits on output and exports over the last four years. But now the United States, by the sheer force of its production, the supremacy of its technology, and an unmatched pipeline, refinery and storage structure, has put a ceiling to the price.\n", + "Experts note that when oil climbs to $60 a barrel and higher, as it has lately, a drilling rush commences — the national rig count has climbed by over a third in the last year — promising to refill domestic and even global energy inventories. Only a major war or other disruption is likely to send prices soaring.\n", + "“We have all suffered these depressed prices over the last two years and we are excited to see the new prices and we will respond accordingly,” said Harald Jordan, vice president for engineering at Peak Energy, a Colorado-based producer. “You will see rig activity continue to increase.”\n", + "URL: https://www.nytimes.com/2018/01/28/business/energy-environment/oil-boom.html\n", + "TITLE: Oil Boom Gives the U.S. a New Edge in Energy and Diplomacy\n", + "BODY:\n", + "HOUSTON — A substantial rise in oil prices in recent months has led to a resurgence in American oil production, enabling the country to challenge the dominance of Saudi Arabia and dampen price pressures at the pump.\n", + "The success has come in the face of efforts by Saudi Arabia and its oil allies to undercut the shale drilling spree in the United States. Those strategies backfired and ultimately ended up benefiting the oil industry.\n", + "Overcoming three years of slumping prices proved the resiliency of the shale boom. Energy companies and their financial backers were able to weather market turmoil — and the maneuvers of the global oil cartel — by adjusting exploration and extraction techniques.\n", + "After a painful shakeout in the industry that included scores of bankruptcies and a significant loss of jobs, a steadier shale-drilling industry is arising, anchored by better-financed companies.\n", + "With the price of West Texas intermediate crude above $65 a barrel, a level not seen in almost three years, the United States is becoming a dominant producer. It is able to outflank competitors in supplying growing global markets, particularly China and India, while slashing imports from the Middle East and North Africa.\n", + "This year, the United States is expected to surpass Saudi Arabia and to rival Russia as the world’s leader, with record output of over 10 million barrels a day, according to the International Energy Agency.\n", + "“This is a 180-degree turn for the United States and the impacts are being felt around the world,” said Daniel Yergin, the economic historian and author of “The Prize: The Epic Quest for Oil, Money and Power.” “This not only contributes to U.S. energy security but also contributes to world energy security by bringing new supplies to the world.”\n", + "At the same time, the United States is becoming a major exporter of natural gas, another outgrowth of the shale revolution, undercutting Russian energy dominance over Eastern Europe.\n", + "The improving energy picture comes as the Trump administration is attempting to increase offshore drilling and loosen other regulations on fossil fuel development. But just as the surge in oil and gas production in shale fields during the Barack Obama administration had little to do with Washington, the current rise is the result of private companies responding to global markets.\n", + "Shale fields can be developed relatively quickly and at modest costs relative to the giant projects, whether on land or offshore, that were once favored by big oil companies. That makes it easier to turn investment spigots on or off to adjust to market fluctuations. Companies like Exxon Mobil and Chevron are putting increasing amounts of capital in shale fields, particularly in West Texas and New Mexico.\n", + "The results go far beyond the economic, offering Washington strategic weapons once unthinkable. The United States and its allies now have a supply cushion at a time when political turmoil in Venezuela, Libya and Nigeria is threatening to interrupt flows to markets.\n", + "Only a few years ago, such threats — along with a recent pipeline failure in the North Sea and storms in the Gulf of Mexico — would have sent the price of crude soaring. Instead, the rise has been muted, and gasoline at the pump remains below $2.60 a gallon across most of the United States.\n", + "The new energy power also relieves pressure on Washington to act militarily if tensions between Iran and Saudi Arabia break out into war. And it gives Washington the leeway to apply sanctions on other producers — as it has in Russia, and may in Iran or Venezuela — with far less risk to the global economy.\n", + "It is a striking contrast to the 1970s, when Arab oil boycotts forced motorists to line up for blocks to fill their tanks and the economy went into a tailspin. Even more recently, during the presidency of George W. Bush, domestic oil output was declining so rapidly that the country set a course to replace oil with biofuels like ethanol.\n", + "Many environmentalists argue that by increasing oil and gas supplies and lowering prices for consumers, shale drilling is extending the life of fossil fuels to the detriment of the environment and the development of cleaner energy.\n", + "The shale drilling revolution has remade the global energy market, with imports from members of the Organization of the Petroleum Exporting Countries plunging by 20 percent from late 2016 to late 2017. At the same time, exports rose by hundreds of thousands of barrels a day.\n", + "Nothing like the current situation was foreseen in late 2014, when rising domestic production began weighing on global oil prices.\n", + "In response, Saudi Arabia led OPEC in a new direction. Instead of throttling back to support prices as the cartel had done so often, it left the market alone and even increased production for a time.\n", + "Prices fell below $40 a barrel, as the Saudis and their allies hoped to drive American operations out of business by making shale drilling uneconomical. American exploration quickly dropped, but the price squeeze made companies more innovative in the use of drilling technologies, robotics and sensors to maximize output and reduce costs.\n", + "While scores of smaller companies went out of business, the survivors lengthened horizontal wells to yield more oil, and used clever hedging and drilling strategies to maximize profits even when prices slumped.\n", + "The response surprised the global oil community. OPEC, Russia and allied producing countries changed course and began cutting back again in 2016.\n", + "“OPEC missed the point,” said René Ortiz, a former OPEC secretary general and former Ecuadorean energy minister. “They thought they could recover the U.S. market by bringing the prices down. Now the U.S. has gained the leading position in the world oil market regardless of what OPEC does.”\n", + "“This displacement of Saudi oil, Nigerian oil, Libyan oil and Venezuelan oil,” Mr. Ortiz concluded, “was never anticipated.”\n", + "A week ago, OPEC leaders met in Oman to discuss a probable extension of production cuts into 2019 to support prices. Their biggest obstacle is the United States.\n", + "Technological advances unlocking oil from tight rocks like shale has led to a drilling frenzy enabling a doubling of output in a decade, transforming unlikely places like North Dakota and New Mexico into world class petroleum hubs. Pipelines are being built across Texas to serve ports where oil can be pumped onto tankers headed for China, India and other markets.\n", + "Domestic production last year averaged 9.3 million barrels a day, and the Energy Department projects that the figure will climb to 10.3 million barrels a day this year, surpassing the record set in 1970. In the meantime, since a 40-year export ban was lifted in 2015, exports of American oil have risen to roughly two million barrels a day — more than many OPEC members.\n", + "The department projects an additional increase in domestic production of 500,000 barrels a day in 2019.\n", + "Concerns over climate change as well as the growing popularity of electric cars and the eventual aging of the best shale fields will probably curb production and demand over the next few decades. But in the short term, the boom has changed the landscape.\n", + "The Energy Department projects that the recent surge will hold the price of Brent crude, the global benchmark, to $60 a barrel in 2018 and $61 a barrel in 2019 — a modest increase from $54 last year. (The Brent price rose above $70 a barrel this month, but few analysts see a return to $100-a-barrel oil.)\n", + "The emerging order in the energy realm is a stable balance of power. Saudi Arabia, which essentially runs OPEC, has put a floor under the oil price — probably around $50 a barrel — with its limits on output and exports over the last four years. But now the United States, by the sheer force of its production, the supremacy of its technology, and an unmatched pipeline, refinery and storage structure, has put a ceiling to the price.\n", + "Experts note that when oil climbs to $60 a barrel and higher, as it has lately, a drilling rush commences — the national rig count has climbed by over a third in the last year — promising to refill domestic and even global energy inventories. Only a major war or other disruption is likely to send prices soaring.\n", + "“We have all suffered these depressed prices over the last two years and we are excited to see the new prices and we will respond accordingly,” said Harald Jordan, vice president for engineering at Peak Energy, a Colorado-based producer. “You will see rig activity continue to increase.”\n" + ] + } + ], + "source": [ + "crawler = Crawler()\n", + "\n", + "siteData = [\n", + " ['O\\'Reilly Media', 'http://oreilly.com', 'h1', 'section#product-description'],\n", + " ['Reuters', 'http://reuters.com', 'h1', 'div.StandardArticleBody_body_1gnLA'],\n", + " ['Brookings', 'http://www.brookings.edu', 'h1', 'div.post-body'],\n", + " ['New York Times', 'http://nytimes.com', 'h1', 'p.story-content']\n", + "]\n", + "websites = []\n", + "for row in siteData:\n", + " websites.append(Website(row[0], row[1], row[2], row[3]))\n", + "\n", + "crawler.parse(websites[0], 'http://shop.oreilly.com/product/0636920028154.do')\n", + "crawler.parse(\n", + " websites[1], 'http://www.reuters.com/article/us-usa-epa-pruitt-idUSKBN19W2D0')\n", + "crawler.parse(\n", + " websites[2],\n", + " 'https://www.brookings.edu/blog/techtank/2016/03/01/idea-to-retire-old-methods-of-policy-education/')\n", + "crawler.parse(\n", + " websites[3], \n", + " 'https://www.nytimes.com/2018/01/28/business/energy-environment/oil-boom.html')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Crawling through sites with search" + ] + }, + { + "cell_type": "code", + "execution_count": 43, + "metadata": {}, + "outputs": [], + "source": [ + "class Content:\n", + " \"\"\"Common base class for all articles/pages\"\"\"\n", + "\n", + " def __init__(self, topic, url, title, body):\n", + " self.topic = topic\n", + " self.title = title\n", + " self.body = body\n", + " self.url = url\n", + "\n", + " def print(self):\n", + " \"\"\"\n", + " Flexible printing function controls output\n", + " \"\"\"\n", + " print(\"New article found for topic: {}\".format(self.topic))\n", + " print(\"URL: {}\".format(self.url))\n", + " print(\"TITLE: {}\".format(self.title))\n", + " print(\"BODY:\\n{}\".format(self.body))" + ] + }, + { + "cell_type": "code", + "execution_count": 44, + "metadata": {}, + "outputs": [], + "source": [ + "class Website:\n", + " \"\"\"Contains information about website structure\"\"\"\n", + "\n", + " def __init__(self, name, url, searchUrl, resultListing, resultUrl, absoluteUrl, titleTag, bodyTag):\n", + " self.name = name\n", + " self.url = url\n", + " self.searchUrl = searchUrl\n", + " self.resultListing = resultListing\n", + " self.resultUrl = resultUrl\n", + " self.absoluteUrl = absoluteUrl\n", + " self.titleTag = titleTag\n", + " self.bodyTag = bodyTag" + ] + }, + { + "cell_type": "code", + "execution_count": 48, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "GETTING INFO ABOUT: python\n", + "New article found for topic: python\n", + "TITLE: JAKARTA (Reuters) - An Indonesian farmer has been found dead inside a 7-meter (23-foot) python after being reported missing on his failure to return home from work on a palm plantation. Village officials cut open the swollen body of the snake in a graphic video taken by a resident of Mamuju, on the eastern island of Sulawesi, the site of the incident. The victim’s legs, encased in rubber boots, emerge as the snake is pulled apart. Family members and neighbors of the 26-year-old victim, Akbar, had launched a search when he failed to come home for more than 24 hours, a resident of the area told Reuters. A 7-metre (23-foot) python is being cut open to reveal a young Indonesian man in the village of Salobiru, in a remote part of the West Sulawesi province, Indonesia in this still image taken from video on March 26, 2017. Courtesy of Andi Fathir/via REUTERS TV “We saw a python that couldn’t move properly and it’s belly was swollen,” said Asdin Rudi Fathir, 43. “Residents and officials decided to kill the python and were shocked to find a human body inside.” Relatives identified the victim, who went by only one name, as do many Indonesians. While large snakes and other animals are common in that part of Sulawesi, attacks on humans are rare, Fathir added. Reporting by Kanupriya Kapoor; Editing by Clarence FernandezOur Standards:The Thomson Reuters Trust Principles.\n", + "BODY:\n", + "/article/us-indonesia-python/indonesian-found-dead-after-being-swallowed-by-python-idUSKBN1711E3\n", + "URL: Indonesian found dead after being swallowed by python\n", + "New article found for topic: python\n", + "TITLE: GANYIEL, South Sudan (Thomson Reuters Foundation) - Martha’s fear grows each morning as her toes touch the cold and muddy water of the swamp in a remote part of South Sudan. Yet she steps confidently into the chest-deep marsh, her clothes drenched and her feet sinking into the slippery mud as she holds her schoolbag above her head to keep it dry. “I know there could be crocodiles, pythons and Guinea worm in here and I‘m scared every day,” said 18-year-old, who is one of thousands who have found safety in Ganyiel, a rebel-held town in the center of the war-torn country. “Some of the children in my village have died in the swamps,” she told the Thomson Reuters Foundation, sitting on a plastic chair outside her classroom in a spare dry dress that she carried with her. Martha has made up her mind that receiving an education is her priority even though the journey takes four hours a day, a quarter of which is spent wading through the treacherous swamp. With 72 percent of children out of school, South Sudan ranks worst in education among all African nations, according to the United Nations children’s agency (UNICEF). One of the most common reasons for non-attendance is the long distance students have to walk to school, it says. The world’s youngest nation gained independence in 2011, but civil war erupted in late 2013 between soldiers of President Salva Kiir, an ethnic Dinka, and his former vice president, Riek Machar, a Nuer. Tens of thousands have been killed and one-third of the country’s 12 million-strong population has fled their homes, creating Africa’s largest refugee crisis. School enrollment, which was 42 percent at the start of the war, has plummeted. Only 700,000 school-aged children out of a total of 2.5 million attend classes, UNICEF says. “With so many children out of school and with a large portion of those currently enrolled unlikely to go beyond primary school, the country will face a serious shortage of qualified people,” its education expert, Vinobajee Gautam, said. CAUGHT IN THE CROSSFIRE Martha only returned to school last month. She and her siblings had been living in one of the U.N.’s tightly-packed camps for displaced people in the capital, Juba. “My mother took me and my seven siblings to Juba many years ago, because she wanted us to have access to education,” the teenager explained in perfect English. “When the war broke out, soldiers abducted and killed her. I had to take care of my brothers and sisters and wasn’t able to go to school anymore.” Martha decided to journey northwards for several days by boat to opposition-held Ganyiel in Southern Liech State, so that her father and other relatives who still lived there could help care for her siblings, freeing up her time to study. “I heard that a new school was built in Ganyiel, so I decided that going back home would help our family receive a better education,” she said. Wild animals and waterborne diseases are not the only risks students face on their exhausting journeys to school. “Children from rural areas outside Ganyiel have to live with the fear of being caught in the crossfire of inter-clan fights, revenge killings or even cattle raids,” said Raphael Ndiku of Welthungerhilfe, the German charity that built Martha’s school. With the construction of a new building last year, about 500 new students arrived from remote villages, boosting enrolment by more than half to almost 1,500 children, he said. News of the latest school openings spreads fast. At least one in three schools has been attacked by armed forces since the start of the conflict, according to UNICEF. Many are closed, destroyed or occupied by soldiers or displaced people. “We have nine classrooms and 37 teachers and use the buildings for primary school students in the mornings and secondary education in the afternoons,” said Ganyiel Mixed School’s headmaster, William Puol. South Sudanese families often make huge personal sacrifices so that their children can learn. “My father made me move to my aunt’s house because he wanted me to get an education,” said 14-year-old James Koang, whose family home was four hours from the nearest school. “I now walk for less than an hour but I‘m always afraid that wild animals might attack me because I walk alone,” said Koang, the only one of six siblings in education. He has set his mind on attending university. “If all children could go to school, there would be less fighting in my country,” he said, pointing out that many deadly cattle raids are carried out by youths who did not have the chance to get an education. Being in school gives children some protection from being recruited as child soldiers or forced into other dangerous means of survival, such as selling sex. “I am sometimes scared of being abducted on my way to school,” Martha said quietly. “But I want South Sudan to be a strong and peaceful country. Children need to be educated because we are the future. That’s what I think about when I walk to school and it helps me overcome my fear.” Reporting by Stefanie Glinski. Editing by Katy Migiro. Please credit the Thomson Reuters Foundation, the charitable arm of Thomson Reuters, that covers humanitarian news, women’s rights, trafficking, property rights and climate change. Visit news.trust.org to see more stories.Our Standards:The Thomson Reuters Trust Principles.\n", + "BODY:\n", + "/article/us-southsudan-education-children/crocodiles-pythons-and-militias-south-sudans-children-risk-death-for-school-idUSKBN1DR0UP\n", + "URL: Crocodiles, pythons and militias: South Sudan's children risk death for school\n", + "New article found for topic: python\n", + "TITLE: A 20 feet rock python was caught on camera in Junagadh district of India’s western Gujarat state with a swollen stomach after it consumed an antelope on Tuesday (September 20). Residents informed authorities at Girnar Wildlife Sanctuary after they spotted the reptile lying in discomfort in a field. In view of the massive swelling of the python’s stomach, the forest authorities suspect that it gobbled up a full-grown ‘nilgai’ or blue bull. The python - unable to move now - was rescued by the forest personnel and has been put under observation. “We will keep it (python) under observation. We will release it back in the wild once it digests the antelope and the swelling subsides,” said Assistant Conservator of Forest, S.D. Tilala. A blue bull is far larger than an ideal prey for pythons and digesting the mammal could prove to be a great struggle for the reptile. When unable to digest an unusually large prey, pythons are known to regurgitate them.Our Standards:The Thomson Reuters Trust Principles.\n", + "BODY:\n", + "/article/us-india-python/python-in-india-demonstrates-huge-appetite-idUSKCN11S04G\n", + "URL: Python in India demonstrates huge appetite\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "New article found for topic: python\n", + "TITLE: Forest department officials on Saturday (September 24) promised strict action after a python attacked a man when a group was trying to click a photo with it. The incident took place on Friday (September 23) after forest department officials removed the python from the premises of a school in northwestern Rajasthan state. They were posing for pictures with it after successfully capturing it. Deputy Conservator of Forests, K.G.Shrivastav, said the incident was unexpected as all officers were highly trained. “I wanted the snake to be released in my presence, but the officials released it before I could reach the spot. I had no clue that civilians were also present at the spot and something could go wrong as all the officials are highly trained. Clicking selfies with the snake and releasing the photos publicly is an offense under the Wildlife Act and we will issue notice to all involved in this incident,” Shrivastav said. The victim, Ashok Bishnoi, accepted the incident happened due to carelessness on his part. “The moment I received the news I reached the location. I did not realize how close I was to the python and it attacked me. This is entirely my fault,” said the victim, Ashok Bishnoi. Vishnoi added that the mishap happened in a short span of time in spite of the fact that the rescue officials had a strong grip on the reptile. The snake was later released in a forest.Our Standards:The Thomson Reuters Trust Principles.\n", + "BODY:\n", + "/article/us-india-python-attack/indian-man-bitten-by-python-whilst-posing-for-selfie-idUSKCN11W1LT\n", + "URL: Indian man bitten by python whilst posing for selfie\n", + "New article found for topic: python\n", + "TITLE: JOHANNESBURG (Reuters) - A Zimbabwean man has been jailed for nine years for eating python, a protected species, a Zimbabwean daily reported on Friday. Archwell Maramba said he had been eating the snake meat for its medicinal value. “I wanted to eat the python to cure my spine and since I ate my first python I have seen remarkable improvement,” NewsDay quoted Maramba as saying during his court case. Acting on a tipoff, police found the 58-year-old drying snakeskin and python meat stashed in his house. Reporting by Helen Nyambura-Mwaura; Editing by Andrew RocheOur Standards:The Thomson Reuters Trust Principles.\n", + "BODY:\n", + "/article/us-zimbabwe-python/zimbabwean-jailed-for-nine-years-for-eating-python-meat-idUSKBN0L31PS20150130\n", + "URL: Zimbabwean jailed for nine years for eating python meat\n", + "New article found for topic: python\n", + "TITLE: LONDON (Reuters) - The surviving members of the British comedy troupe Monty Python lost a High Court battle on Friday over tens of thousands of pounds in royalties from their hit Broadway musical “Spamalot”. Mark Forstater, who helped produce the 1975 film “Monty Python and the Holy Grail” on which the stage show was based, said he had not received his fair share of the profits from the spin-off. Despite hearing evidence from three Pythons - Eric Idle, Michael Palin and Terry Jones - the judge, Justice Alastair Norris, sided with the producer. “I have always been adamant I was correct. I have been proved right - justice has prevailed,” Forstater said. Inspired by the film, the musical opened on Broadway in 2005 and has also enjoyed a successful run in Britain. Idle wrote the lyrics and collaborated on most of the music. Forstater, an American based in Britain, argued that he was entitled to one-seventh of the profits from the “Holy Grail” film and any merchandise or spin-offs. His lawyer told the court that for the purposes of profit-sharing, it had been agreed in 1974 that Forstater was “the seventh Python”. However Palin, along with Jones and Idle, who formed Monty Python with John Cleese, Terry Gilliam and Graham Chapman, dismissed this suggestion. “The idea of a seventh Python just doesn’t happen ... I don’t think there was ever any suggestion this man was going to be a ‘seventh Python’,” said Palin, giving evidence in December. In his judgment, Norris said Palin had been a “balanced and trustworthy” witness but had admitted his recollection was “hazy”, while evidence from Jones had been “suffused with a sense that Mr Forstater had done very well out of his brief connection with the Pythons”. “Eric Idle was frank enough to acknowledge that he now disliked Mr Forstater, but he expressed the hope that, in his evidence, he was being honest and that his dislike did not affect his honesty,” Norris said. “He undoubtedly regarded Mr Forstater as ungrateful.” “SOFT LOT” His ruling also made reference to the Pythons’ lack of business acumen, highlighting a diary entry from Palin in 1975. “As we are a soft lot and not at all businesslike, I think it would be in the finest traditions of Python irrationality if we gave Mark an extra 1,000 pounds and a silver tray with some cut-glass sherry glasses and told him to stop writing to us for more money,” Palin wrote. “Beyond that even I am not prepared to go. Oh, all right, some cheese straws to go with the sherry glasses.” The judge added: “As I assess the evidence, the Pythons continued at that point to be ‘a soft lot and not at all businesslike’.” No members of the Python group were present in court to hear the ruling. Final figures will be worked out at later hearings but Forstater told reporters he was entitled to more than 200,000 pounds ($300,000) including interest, the Press Association reported. “There is a sadness, though, about having to face people who were my friends in court,” he said. “The friendship has gone.” Forstater said he did not think the litigation would damage the Pythons’ reputation. “They’re an institution,” he said. “I still think they are very funny.” Editing by Michael Holden and Janet LawrenceOur Standards:The Thomson Reuters Trust Principles.\n", + "BODY:\n", + "/article/entertainment-us-britain-python-court/monty-python-lose-spamalot-court-battle-idUSBRE9640KE20130705\n", + "URL: Monty Python lose 'Spamalot' court battle\n", + "New article found for topic: python\n", + "TITLE: ORLANDO, Florida (Reuters) - A python hunting competition starting on Saturday is drawing hundreds of amateurs armed with clubs, machetes and guns to the Florida Everglades, where captured Burmese pythons have exceeded the length of minivans and weighed as much as grown men. Python Challenge 2013, a month-long event sponsored by the Florida Fish and Wildlife Conservation Commission, is open to hunters and non-hunters alike. But the idea of luring weapon-wielding amateurs into the harsh environment of the Everglades has raised some alarms. “I just thought it was as exciting as could be. It’s a once- in-a-lifetime opportunity,” said contestant Ron Polster, a retired salesman from Ohio whose closest encounter with the swamp has been from the highway heading south for the winter. Participants pay a $25 entry fee and take an online training course, which consists mostly of looking at photographs of both the targeted pythons and protected native snakes to learn the difference. The state wildlife agency is offering prizes of $1,500 for the most pythons captured and $1,000 for the longest python. A Burmese python found in Florida last year set records as the largest ever captured in the state at 17-feet, 7-inches. The snake weighed nearly 165 pounds (75 kg). FWC spokeswoman Carli Segelson said the number of registered contestants reached about 500 this week and was growing, with people coming from 32 states. A handout photo released on October 6, 2005 by Everglades National Park shows a dead Burmese python which had swallowed an American alligator. REUTERS/Everglades National Park/HandoutThe stated goal of the competition is to raise awareness of the threat Burmese pythons pose to the Everglades ecosystem. The snakes are native to Southeast Asia and have no known predators in Florida. The contest also serves as a pilot program to determine whether regular hunting competitions can cull the growing population of the invasive species, said Frank Mazzotti, a wildlife expert from the University of Florida who helped create the competition. Python Challenge rules require contestants to kill specimens on the spot in a humane fashion, recommending shooting the snakes precisely through the brain. “I was hoping there would be a lot of machetes and not a lot of guns,” said Polster, the retired salesman. He said he worries “these idiots will be firing all over the place.” Shawn Heflick, star of the National Geographic “Wild” television show “Python Hunters,” told Reuters that despite the formidable size of the snakes, he expects the swamp itself, with its alligators, crocodiles and venomous snakes, to pose a greater threat to the contestants. “You get these people going down there, they’ll get lost, they’ll get dehydrated, they’ll get sucked dry by mosquitoes,” Heflick said. Segelson said the wildlife agency will provide training on the use of GPS devices and on identifying venomous snakes at the kick-off event. In the meantime, she said, contestants should be familiarizing themselves with the Everglades environment, just as they should before entering any other strange territory. Heflick said most of the contestants likely were drawn to the Python Challenge by the romantic mystique of bagging a giant predator. He expects few will last long in the hunt. “The vast majority of them will never see a python. The vast majority of them will probably curtail their hunting very quickly when they figure out there’s a lot of mosquitoes, it’s hot, it’s rather boring sometimes - most of the time really, and I think a lot of them will go home,” Heflick said. Editing by Tom Brown and Dan GreblerOur Standards:The Thomson Reuters Trust Principles.\n", + "BODY:\n", + "/article/us-usa-python-hunt/florida-python-hunting-contest-draws-hundreds-idUSBRE9081CL20130110\n", + "URL: Florida python hunting contest draws hundreds\n", + "New article found for topic: python\n", + "TITLE: ORLANDO, Florida (Reuters) - A python hunting competition starting on Saturday is drawing hundreds of amateurs armed with clubs, machetes and guns to the Florida Everglades, where captured Burmese pythons have exceeded the length of minivans and weighed as much as grown men. Python Challenge 2013, a month-long event sponsored by the Florida Fish and Wildlife Conservation Commission, is open to hunters and non-hunters alike. But the idea of luring weapon-wielding amateurs into the harsh environment of the Everglades has raised some alarms. “I just thought it was as exciting as could be. It’s a once- in-a-lifetime opportunity,” said contestant Ron Polster, a retired salesman from Ohio whose closest encounter with the swamp has been from the highway heading south for the winter. Participants pay a $25 entry fee and take an online training course, which consists mostly of looking at photographs of both the targeted pythons and protected native snakes to learn the difference. The state wildlife agency is offering prizes of $1,500 for the most pythons captured and $1,000 for the longest python. A Burmese python found in Florida last year set records as the largest ever captured in the state at 17-feet, 7-inches. The snake weighed nearly 165 pounds (75 kg). FWC spokeswoman Carli Segelson said the number of registered contestants reached about 500 this week and was growing, with people coming from 32 states. The stated goal of the competition is to raise awareness of the threat Burmese pythons pose to the Everglades ecosystem. The snakes are native to Southeast Asia and have no known predators in Florida. The contest also serves as a pilot program to determine whether regular hunting competitions can cull the growing population of the invasive species, said Frank Mazzotti, a wildlife expert from the University of Florida who helped create the competition. Python Challenge rules require contestants to kill specimens on the spot in a humane fashion, recommending shooting the snakes precisely through the brain. “I was hoping there would be a lot of machetes and not a lot of guns,” said Polster, the retired salesman. He said he worries “these idiots will be firing all over the place.” Shawn Heflick, star of the National Geographic “Wild” television show “Python Hunters,” told Reuters that despite the formidable size of the snakes, he expects the swamp itself, with its alligators, crocodiles and venomous snakes, to pose a greater threat to the contestants. “You get these people going down there, they’ll get lost, they’ll get dehydrated, they’ll get sucked dry by mosquitoes,” Heflick said. Segelson said the wildlife agency will provide training on the use of GPS devices and on identifying venomous snakes at the kick-off event. In the meantime, she said, contestants should be familiarizing themselves with the Everglades environment, just as they should before entering any other strange territory. Heflick said most of the contestants likely were drawn to the Python Challenge by the romantic mystique of bagging a giant predator. He expects few will last long in the hunt. “The vast majority of them will never see a python. The vast majority of them will probably curtail their hunting very quickly when they figure out there’s a lot of mosquitoes, it’s hot, it’s rather boring sometimes - most of the time really, and I think a lot of them will go home,” Heflick said. Editing by Tom Brown and Dan GreblerOur Standards:The Thomson Reuters Trust Principles.\n", + "BODY:\n", + "/article/us-usa-python-hunt/florida-python-hunting-contest-draws-hundreds-idUSBRE9081CL20130109\n", + "URL: Florida python hunting contest draws hundreds\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "New article found for topic: python\n", + "TITLE: MIAMI (Reuters) - Engineers in the Everglades stumbled upon a near-record-breaking Burmese python measuring more than 18 feet long during a routine inspection of levees on Tuesday, a water management district spokesman said. The snake, measuring at 18 feet 2 inches, fell short of the state record by 6 inches, according to the Florida Fish and Wildlife Conservation Commission. Last year, a snake collector in the state discovered the largest python on record there, measuring 18 feet 8 inches, commission spokeswoman Katie Johnson said. The pythons, which can grow to more than 20 feet in their native habitat in Southeast Asia, are one of the most problematic invaders of Florida’s sprawling Everglades wetlands. A near record-breaking Burmese Python measuring more than 18-feet long (5.5 meters) is shown in this January 4, 2014 handout photo provided by South Florida Water Management District January 5, 2014 in Everglades National Park near Miami, Florida. REUTERS/South Florida Water Management District/Handout via ReutersThey eat indigenous species and their food sources, fueling concerns that the predator snakes will fundamentally change the ecosystem. The python found on Tuesday was killed, and its corpse was taken to the University of Florida, where it will be measured and studied by scientists trying to combat the species, according to South Florida Water Management District spokesman Gabe Margasak. Officials have said the python population is believed to have grown to as many as 150,000 in the Everglades. The cold-blooded reptiles are often found atop levees, where they lie for hours at a time to warm up under the Florida sun. The snakes, one of the largest species in the world, found a home to their liking in the Everglades when pet owners started using the wetlands as a convenient dumping ground. Reporting by Zachary Fagenson; Editing by Colleen Jenkins and Lisa Von AhnOur Standards:The Thomson Reuters Trust Principles.\n", + "BODY:\n", + "/article/us-usa-florida-python/18-foot-burmese-python-found-in-florida-everglades-idUSBREA141OP20140205\n", + "URL: 18-foot Burmese python found in Florida Everglades\n", + "New article found for topic: python\n", + "TITLE: LONDON, Nov 20 (Reuters) - The comic team Monty Python, whose BBC TV series from the 1970s and feature films took their subversive humour and “Dead Parrot” routine around the world, are to reunite for a stage show, British media reported on Wednesday. A news release issued on behalf of the five surviving Pythons, Eric Idle, John Cleese, Terry Gilliam, Michael Palin and Terry Jones, all in their 70s, said that an official announcement would be made on Thursday. But several British newspapers and media outlets reported that the five would be appearing on stage for the first time together since the 1980s. The group was famed for its skits about a man trying to return a dead parrot to a shopkeeper who claimed the bird was “resting” and for poking fun at the establishment, the military and religion. “We’re getting together and putting on a show - it’s real,” Jones told the BBC. “I‘m quite excited about it. I hope it makes us a lot of money. I hope to be able to pay off my mortgage!” On his Twitter account, Palin wrote: “The Python rides again...?” while Idle on Tuesday tweeted: “Only three days to go till the Python Press Conference. Make sure Python fans are alerted to the big forthcoming news event.” The BBC programme “Monty Python’s Flying Circus” was made for television between 1969 and 1974. The Pythons went on to make films including “Monty Python And The Holy Grail” (1975) and “Monty Python’s Life of Brian” (1979). They last performed live together in Monty Python Live At The Hollywood Bowl in 1982. The sixth Python, Graham Chapman, died of cancer at age 48 in 1989. (Writing by Michael Roddy; Editing by Doina Chiacu)Our Standards:The Thomson Reuters Trust Principles.\n", + "BODY:\n", + "/article/britain-python/monty-python-not-dead-after-all-stage-show-planned-idUSL5N0J50QB20131120\n", + "URL: Monty Python not dead after all - stage show planned\n", + "GETTING INFO ABOUT: data science\n", + "New article found for topic: data science\n", + "TITLE: Dec 20 (Reuters) - Veritone Inc: * VERITONE ACQUIRES ADVANCED DATA SCIENCE AND MACHINE LEARNING FIRM * VERITONE INC - ACQUIRED ADVANCED DATA ANALYTICS SOFTWARE AND RELATED IP ASSETS OF ATIGEO CORP Source text for Eikon: Further company coverage:Our Standards:The Thomson Reuters Trust Principles.\n", + "BODY:\n", + "/article/brief-veritone-acquires-advanced-data-sc/brief-veritone-acquires-advanced-data-science-and-machine-learning-firm-idUSASB0BYPZ\n", + "URL: BRIEF-Veritone Acquires Advanced Data Science And Machine Learning Firm\n" + ] + }, + { + "ename": "KeyboardInterrupt", + "evalue": "", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mTypeError\u001b[0m Traceback (most recent call last)", + "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/requests/packages/urllib3/connectionpool.py\u001b[0m in \u001b[0;36m_make_request\u001b[0;34m(self, conn, method, url, timeout, **httplib_request_kw)\u001b[0m\n\u001b[1;32m 375\u001b[0m \u001b[0;32mtry\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0;31m# Python 2.7, use buffering of HTTP responses\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 376\u001b[0;31m \u001b[0mhttplib_response\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mconn\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mgetresponse\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mbuffering\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;32mTrue\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 377\u001b[0m \u001b[0;32mexcept\u001b[0m \u001b[0mTypeError\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0;31m# Python 2.6 and older\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;31mTypeError\u001b[0m: getresponse() got an unexpected keyword argument 'buffering'", + "\nDuring handling of the above exception, another exception occurred:\n", + "\u001b[0;31mKeyboardInterrupt\u001b[0m Traceback (most recent call last)", + "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[1;32m 55\u001b[0m \u001b[0mprint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"GETTING INFO ABOUT: \"\u001b[0m\u001b[0;34m+\u001b[0m\u001b[0mtopic\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 56\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0mtargetSite\u001b[0m \u001b[0;32min\u001b[0m \u001b[0msites\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 57\u001b[0;31m \u001b[0mcrawler\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msearch\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mtopic\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mtargetSite\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m", + "\u001b[0;32m\u001b[0m in \u001b[0;36msearch\u001b[0;34m(self, topic, site)\u001b[0m\n\u001b[1;32m 29\u001b[0m \u001b[0mbs\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mgetPage\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0murl\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 30\u001b[0m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 31\u001b[0;31m \u001b[0mbs\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mgetPage\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0msite\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0murl\u001b[0m\u001b[0;34m+\u001b[0m\u001b[0murl\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 32\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mbs\u001b[0m \u001b[0;32mis\u001b[0m \u001b[0;32mNone\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 33\u001b[0m \u001b[0mprint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"Something was wrong with that page or URL. Skipping!\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m\u001b[0m in \u001b[0;36mgetPage\u001b[0;34m(self, url)\u001b[0m\n\u001b[1;32m 6\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0mgetPage\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0murl\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 7\u001b[0m \u001b[0;32mtry\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 8\u001b[0;31m \u001b[0mreq\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mrequests\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mget\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0murl\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 9\u001b[0m \u001b[0;32mexcept\u001b[0m \u001b[0mrequests\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mexceptions\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mRequestException\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 10\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0;32mNone\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/requests/api.py\u001b[0m in \u001b[0;36mget\u001b[0;34m(url, params, **kwargs)\u001b[0m\n\u001b[1;32m 65\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 66\u001b[0m \u001b[0mkwargs\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msetdefault\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'allow_redirects'\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;32mTrue\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 67\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mrequest\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'get'\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0murl\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mparams\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mparams\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 68\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 69\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/requests/api.py\u001b[0m in \u001b[0;36mrequest\u001b[0;34m(method, url, **kwargs)\u001b[0m\n\u001b[1;32m 51\u001b[0m \u001b[0;31m# cases, and look like a memory leak in others.\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 52\u001b[0m \u001b[0;32mwith\u001b[0m \u001b[0msessions\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mSession\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;32mas\u001b[0m \u001b[0msession\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 53\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0msession\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mrequest\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mmethod\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mmethod\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0murl\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0murl\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 54\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 55\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/requests/sessions.py\u001b[0m in \u001b[0;36mrequest\u001b[0;34m(self, method, url, params, data, headers, cookies, files, auth, timeout, allow_redirects, proxies, hooks, stream, verify, cert, json)\u001b[0m\n\u001b[1;32m 466\u001b[0m }\n\u001b[1;32m 467\u001b[0m \u001b[0msend_kwargs\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mupdate\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0msettings\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 468\u001b[0;31m \u001b[0mresp\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msend\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mprep\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0msend_kwargs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 469\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 470\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mresp\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/requests/sessions.py\u001b[0m in \u001b[0;36msend\u001b[0;34m(self, request, **kwargs)\u001b[0m\n\u001b[1;32m 595\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 596\u001b[0m \u001b[0;31m# Resolve redirects if allowed.\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 597\u001b[0;31m \u001b[0mhistory\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m[\u001b[0m\u001b[0mresp\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0mresp\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mgen\u001b[0m\u001b[0;34m]\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mallow_redirects\u001b[0m \u001b[0;32melse\u001b[0m \u001b[0;34m[\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 598\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 599\u001b[0m \u001b[0;31m# Shuffle things around if there's history.\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/requests/sessions.py\u001b[0m in \u001b[0;36m\u001b[0;34m(.0)\u001b[0m\n\u001b[1;32m 595\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 596\u001b[0m \u001b[0;31m# Resolve redirects if allowed.\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 597\u001b[0;31m \u001b[0mhistory\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m[\u001b[0m\u001b[0mresp\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0mresp\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mgen\u001b[0m\u001b[0;34m]\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mallow_redirects\u001b[0m \u001b[0;32melse\u001b[0m \u001b[0;34m[\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 598\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 599\u001b[0m \u001b[0;31m# Shuffle things around if there's history.\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/requests/sessions.py\u001b[0m in \u001b[0;36mresolve_redirects\u001b[0;34m(self, resp, req, stream, timeout, verify, cert, proxies, **adapter_kwargs)\u001b[0m\n\u001b[1;32m 193\u001b[0m \u001b[0mproxies\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mproxies\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 194\u001b[0m \u001b[0mallow_redirects\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;32mFalse\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 195\u001b[0;31m \u001b[0;34m**\u001b[0m\u001b[0madapter_kwargs\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 196\u001b[0m )\n\u001b[1;32m 197\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/requests/sessions.py\u001b[0m in \u001b[0;36msend\u001b[0;34m(self, request, **kwargs)\u001b[0m\n\u001b[1;32m 574\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 575\u001b[0m \u001b[0;31m# Send the request\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 576\u001b[0;31m \u001b[0mr\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0madapter\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msend\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mrequest\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 577\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 578\u001b[0m \u001b[0;31m# Total elapsed time of the request (approximately)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/requests/adapters.py\u001b[0m in \u001b[0;36msend\u001b[0;34m(self, request, stream, timeout, verify, cert, proxies)\u001b[0m\n\u001b[1;32m 374\u001b[0m \u001b[0mdecode_content\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;32mFalse\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 375\u001b[0m \u001b[0mretries\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mmax_retries\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 376\u001b[0;31m \u001b[0mtimeout\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mtimeout\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 377\u001b[0m )\n\u001b[1;32m 378\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/requests/packages/urllib3/connectionpool.py\u001b[0m in \u001b[0;36murlopen\u001b[0;34m(self, method, url, body, headers, retries, redirect, assert_same_host, timeout, pool_timeout, release_conn, **response_kw)\u001b[0m\n\u001b[1;32m 557\u001b[0m httplib_response = self._make_request(conn, method, url,\n\u001b[1;32m 558\u001b[0m \u001b[0mtimeout\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mtimeout_obj\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 559\u001b[0;31m body=body, headers=headers)\n\u001b[0m\u001b[1;32m 560\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 561\u001b[0m \u001b[0;31m# If we're going to release the connection in ``finally:``, then\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/requests/packages/urllib3/connectionpool.py\u001b[0m in \u001b[0;36m_make_request\u001b[0;34m(self, conn, method, url, timeout, **httplib_request_kw)\u001b[0m\n\u001b[1;32m 376\u001b[0m \u001b[0mhttplib_response\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mconn\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mgetresponse\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mbuffering\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;32mTrue\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 377\u001b[0m \u001b[0;32mexcept\u001b[0m \u001b[0mTypeError\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0;31m# Python 2.6 and older\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 378\u001b[0;31m \u001b[0mhttplib_response\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mconn\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mgetresponse\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 379\u001b[0m \u001b[0;32mexcept\u001b[0m \u001b[0;34m(\u001b[0m\u001b[0mSocketTimeout\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mBaseSSLError\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mSocketError\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;32mas\u001b[0m \u001b[0me\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 380\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_raise_timeout\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0merr\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0me\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0murl\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0murl\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mtimeout_value\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mread_timeout\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/http/client.py\u001b[0m in \u001b[0;36mgetresponse\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 1329\u001b[0m \u001b[0;32mtry\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1330\u001b[0m \u001b[0;32mtry\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 1331\u001b[0;31m \u001b[0mresponse\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mbegin\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 1332\u001b[0m \u001b[0;32mexcept\u001b[0m \u001b[0mConnectionError\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1333\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mclose\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/http/client.py\u001b[0m in \u001b[0;36mbegin\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 295\u001b[0m \u001b[0;31m# read until we get a non-100 response\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 296\u001b[0m \u001b[0;32mwhile\u001b[0m \u001b[0;32mTrue\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 297\u001b[0;31m \u001b[0mversion\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mstatus\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mreason\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_read_status\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 298\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mstatus\u001b[0m \u001b[0;34m!=\u001b[0m \u001b[0mCONTINUE\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 299\u001b[0m \u001b[0;32mbreak\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/http/client.py\u001b[0m in \u001b[0;36m_read_status\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 256\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 257\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0m_read_status\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 258\u001b[0;31m \u001b[0mline\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mstr\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mfp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mreadline\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0m_MAXLINE\u001b[0m \u001b[0;34m+\u001b[0m \u001b[0;36m1\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m\"iso-8859-1\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 259\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mlen\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mline\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;34m>\u001b[0m \u001b[0m_MAXLINE\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 260\u001b[0m \u001b[0;32mraise\u001b[0m \u001b[0mLineTooLong\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"status line\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/socket.py\u001b[0m in \u001b[0;36mreadinto\u001b[0;34m(self, b)\u001b[0m\n\u001b[1;32m 584\u001b[0m \u001b[0;32mwhile\u001b[0m \u001b[0;32mTrue\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 585\u001b[0m \u001b[0;32mtry\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 586\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_sock\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mrecv_into\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mb\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 587\u001b[0m \u001b[0;32mexcept\u001b[0m \u001b[0mtimeout\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 588\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_timeout_occurred\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;32mTrue\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/ssl.py\u001b[0m in \u001b[0;36mrecv_into\u001b[0;34m(self, buffer, nbytes, flags)\u001b[0m\n\u001b[1;32m 1000\u001b[0m \u001b[0;34m\"non-zero flags not allowed in calls to recv_into() on %s\"\u001b[0m \u001b[0;34m%\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1001\u001b[0m self.__class__)\n\u001b[0;32m-> 1002\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mread\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mnbytes\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mbuffer\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 1003\u001b[0m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1004\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0msocket\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mrecv_into\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mbuffer\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mnbytes\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mflags\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/ssl.py\u001b[0m in \u001b[0;36mread\u001b[0;34m(self, len, buffer)\u001b[0m\n\u001b[1;32m 863\u001b[0m \u001b[0;32mraise\u001b[0m \u001b[0mValueError\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"Read on closed or unwrapped SSL socket.\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 864\u001b[0m \u001b[0;32mtry\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 865\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_sslobj\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mread\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mlen\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mbuffer\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 866\u001b[0m \u001b[0;32mexcept\u001b[0m \u001b[0mSSLError\u001b[0m \u001b[0;32mas\u001b[0m \u001b[0mx\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 867\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mx\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m0\u001b[0m\u001b[0;34m]\u001b[0m \u001b[0;34m==\u001b[0m \u001b[0mSSL_ERROR_EOF\u001b[0m \u001b[0;32mand\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msuppress_ragged_eofs\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/ssl.py\u001b[0m in \u001b[0;36mread\u001b[0;34m(self, len, buffer)\u001b[0m\n\u001b[1;32m 623\u001b[0m \"\"\"\n\u001b[1;32m 624\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mbuffer\u001b[0m \u001b[0;32mis\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0;32mNone\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 625\u001b[0;31m \u001b[0mv\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_sslobj\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mread\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mlen\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mbuffer\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 626\u001b[0m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 627\u001b[0m \u001b[0mv\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_sslobj\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mread\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mlen\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;31mKeyboardInterrupt\u001b[0m: " + ] + } + ], + "source": [ + "import requests\n", + "from bs4 import BeautifulSoup\n", + "\n", + "\n", + "class Crawler:\n", + "\n", + " def getPage(self, url):\n", + " try:\n", + " req = requests.get(url)\n", + " except requests.exceptions.RequestException:\n", + " return None\n", + " return BeautifulSoup(req.text, 'html.parser')\n", + "\n", + " def safeGet(self, pageObj, selector):\n", + " childObj = pageObj.select(selector)\n", + " if childObj is not None and len(childObj) > 0:\n", + " return childObj[0].get_text()\n", + " return \"\"\n", + "\n", + " def search(self, topic, site):\n", + " \"\"\"\n", + " Searches a given website for a given topic and records all pages found\n", + " \"\"\"\n", + " bs = self.getPage(site.searchUrl + topic)\n", + " searchResults = bs.select(site.resultListing)\n", + " for result in searchResults:\n", + " url = result.select(site.resultUrl)[0].attrs[\"href\"]\n", + " # Check to see whether it's a relative or an absolute URL\n", + " if(site.absoluteUrl):\n", + " bs = self.getPage(url)\n", + " else:\n", + " bs = self.getPage(site.url + url)\n", + " if bs is None:\n", + " print(\"Something was wrong with that page or URL. Skipping!\")\n", + " return\n", + " title = self.safeGet(bs, site.titleTag)\n", + " body = self.safeGet(bs, site.bodyTag)\n", + " if title != '' and body != '':\n", + " content = Content(topic, title, body, url)\n", + " content.print()\n", + "\n", + "\n", + "crawler = Crawler()\n", + "\n", + "siteData = [\n", + " ['O\\'Reilly Media', 'http://oreilly.com', 'https://ssearch.oreilly.com/?q=',\n", + " 'article.product-result', 'p.title a', True, 'h1', 'section#product-description'],\n", + " ['Reuters', 'http://reuters.com', 'http://www.reuters.com/search/news?blob=', 'div.search-result-content',\n", + " 'h3.search-result-title a', False, 'h1', 'div.StandardArticleBody_body_1gnLA'],\n", + " ['Brookings', 'http://www.brookings.edu', 'https://www.brookings.edu/search/?s=',\n", + " 'div.list-content article', 'h4.title a', True, 'h1', 'div.post-body']\n", + "]\n", + "sites = []\n", + "for row in siteData:\n", + " sites.append(Website(row[0], row[1], row[2],\n", + " row[3], row[4], row[5], row[6], row[7]))\n", + "\n", + "topics = ['python', 'data science']\n", + "for topic in topics:\n", + " print(\"GETTING INFO ABOUT: \" + topic)\n", + " for targetSite in sites:\n", + " crawler.search(topic, targetSite)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Crawling Sites through Links" + ] + }, + { + "cell_type": "code", + "execution_count": 68, + "metadata": {}, + "outputs": [], + "source": [ + "class Website:\n", + "\n", + " def __init__(self, name, url, targetPattern, absoluteUrl, titleTag, bodyTag):\n", + " self.name = name\n", + " self.url = url\n", + " self.targetPattern = targetPattern\n", + " self.absoluteUrl = absoluteUrl\n", + " self.titleTag = titleTag\n", + " self.bodyTag = bodyTag\n", + "\n", + "\n", + "class Content:\n", + "\n", + " def __init__(self, url, title, body):\n", + " self.url = url\n", + " self.title = title\n", + " self.body = body\n", + "\n", + " def print(self):\n", + " print(\"URL: {}\".format(self.url))\n", + " print(\"TITLE: {}\".format(self.title))\n", + " print(\"BODY:\\n{}\".format(self.body))" + ] + }, + { + "cell_type": "code", + "execution_count": 69, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "GETTING https://www.reuters.com\n", + "GETTING https://www.reuters.com/article/us-usa-trump-5g/trump-national-security-team-sees-building-5g-network-as-option-idUSKBN1FH103\n", + "URL: https://www.reuters.com/article/us-usa-trump-5g/trump-national-security-team-sees-building-5g-network-as-option-idUSKBN1FH103\n", + "TITLE: Trump security team sees building U.S. 5G network as option\n", + "BODY:\n", + "WASHINGTON (Reuters) - President Donald Trump’s national security team is looking at options to counter the threat of China spying on U.S. phone calls that include the government building a super-fast 5G wireless network, a senior administration official said on Sunday. The official, confirming the gist of a report from Axios.com, said the option was being debated at a low level in the administration and was six to eight months away from being considered by the president himself. The 5G network concept is aimed at addressing what officials see as China’s threat to U.S. cyber security and economic security. The Trump administration has taken a harder line on policies initiated by predecessor Barack Obama on issues ranging from Beijing’s role in restraining North Korea to Chinese efforts to acquire U.S. strategic industries. Earlier this month, AT&T; was forced to scrap a plan to offer its customers handsets built by China’s Huawei after some members of Congress lobbied against the idea with federal regulators, sources told Reuters. In 2012, Huawei and ZTE Corp were the subject of a U.S. investigation into whether their equipment provided an opportunity for foreign espionage and threatened critical U.S. infrastructure. Some members of the House intelligence committee remain troubled by security threats posed by Huawei and ZTE, according to a congressional aide. Issues raised in a 2012 committee report about the Chinese firms have “never subsided,” the aide said, adding that there was newer classified intelligence that recently resurfaced those concerns. “We want to build a network so the Chinese can’t listen to your calls,” the senior official told Reuters. “We have to have a secure network that doesn’t allow bad actors to get in. We also have to ensure the Chinese don’t take over the market and put every non-5G network out of business.” Major wireless carriers have spent billions of dollars buying spectrum to launch 5G networks, and it is unclear if the U.S. government would have enough spectrum to build its own 5G network. Furthermore, Accenture has estimated that wireless operators will invest as much as $275 billion in the United States over seven years as they build out 5G. Last year, T-Mobile US Inc spent $8 billion and Dish Network Corp $6.2 billion to win the bulk of broadcast airwaves spectrum for sale in a government auction. An AT&T; spokesman said they could not comment on something they have not seen, and added: “Thanks to multi-billion dollar investments made by American companies, the work to launch 5G service in the United States is already well down the road.” Later this year, AT&T; is set to be the first to launch mobile 5G service in 12 U.S. locations, the spokesman said. A Verizon spokesman declined to comment. Representatives for Sprint and T-Mobile did not immediately respond to requests for comment. Another option includes having a 5G network built by a consortium of wireless carriers, the U.S. official said. “We want to build a secure 5G network and we have to work with industry to figure out the best way to do it,” the official said, speaking on condition of anonymity. Axios published documents it said were from a presentation from a National Security Council official. If the government built the network, it would rent access to carriers, Axios said. A looming concern laid out in the presentation was China’s growing presence in the manufacture and operation of wireless networks. A concerted government push could help the U.S. compete on that front, according to the presentation. A 5G network is expected to offer significantly faster speeds, more capacity and shorter response times, which could be utilized for new technologies ranging from self-driving cars to remote surgeries. Telecom companies and their suppliers consider it to be a multibillion-dollar revenue opportunity. Reporting by Steve Holland and Pete Schroeder; Additional reporting by Duston Volz, Suzanne Barlyn and David Shepardson; Editing by Chris Sanders, Peter Cooney and Cynthia OstermanOur Standards:The Thomson Reuters Trust Principles.\n", + "GETTING https://www.reuters.com/article/us-trump-effect-nafta-farmers/u-s-farmers-have-much-to-lose-if-nafta-deal-collapses-idUSKBN1FH0O0\n", + "URL: https://www.reuters.com/article/us-trump-effect-nafta-farmers/u-s-farmers-have-much-to-lose-if-nafta-deal-collapses-idUSKBN1FH0O0\n", + "TITLE: U.S. farmers have much to lose if NAFTA deal collapses\n", + "BODY:\n", + "CHICAGO/MONTREAL (Reuters) - A collapse of the North American Free Trade Agreement (NAFTA), which U.S. President Donald Trump has threatened to scrap, could create the most profound disruption for U.S. farmers who produce grains, meats and dairy products sold to Canada and Mexico. Blake Erwin, a third-generation American who raises cattle, corn and soybeans in Dixon, Nebraska, said on Saturday that he is not closely monitoring the negotiations, but that he hopes the outcome will support U.S. farmers who are struggling to make a living due to low commodities prices, rising healthcare costs and high property taxes. “A trade agreement has to be fair for the United States, but we also want to keep those exports going for the farmer,” said Erwin, 34. “We don’t want to mess up any good things we got going.” Erwin spoke to Reuters over the weekend as U.S., Canadian and Mexican negotiators met in Montreal for the sixth of seven planned rounds of talks to revamp the 1994 pact. U.S. farmers and exporters are fighting to preserve their exports at a time when Canada is finding customers in new markets. They also face strained relations between the United States and Mexico, a major buyer of U.S. corn, wheat, beef, pork and dairy products. “The U.S. is behaving so badly it’s going to create opportunities for Canadian agriculture,” Iowa State University economist Dermot Hayes said last week during a visit to Winnipeg. Trade flows have already begun to shift. The United States remains the dominant grain supplier to Mexico. Yet Mexico imported 583,000 metric tonnes of corn from Brazil in 2017, a 980 percent jump from the previous year, according to Mexican government trade data. Mexican imports of U.S. soybean meal, used to feed chickens and livestock, fell 29 percent in the first 11 months of 2017, compared with the same period the previous year, according to the U.S. Department of Agriculture. ‘MORE IMPORTANT THAN PRICE’ Slideshow (17 Images)Trump’s animosity toward Mexico and complaints over trade imbalances have pushed longtime buyers to work with new suppliers and expand existing relationships in South America, the European Union and other regions, trade experts said. “You get partners who build a bond and get real comfortable working together. We’re starting to see that bond becoming more important than price for where countries are buying grains,” said Karl Setzer, risk management team leader for MaxYield Cooperative. Case in point: A rare 30,000-tonne shipment of Brazilian corn steamed its way in November to grain terminals in the state of Veracruz, Mexico, operated by agribusiness heavyweights Cargill Inc [CARG.UL] and Archer Daniels Midland Co (ADM.N). Despite a steep decline in U.S. corn prices, with stocks sitting at a historic high, the buyer paid a premium for the Brazilian grain - as much as $2 more per tonne, according to trade sources. A Cargill spokeswoman said the company had no immediate comment. ADM did not respond to requests for comment. Canada last week agreed to join the new version of the Trans-Pacific Partnership, part of a broad effort to court new trade partners. “The tough NAFTA negotiations have convinced Canada that we have to have a number of trading partners, not just one,” said Ron Bonnett, a beef farmer and president of the Canadian Federation of Agriculture. The revised TPP, known as the Comprehensive and Progressive Agreement for Trans-Pacific Partnership, will reduce tariffs on Canadian pork, beef and wheat to Japan and other markets, in some cases eliminating duties altogether. Darci Vetter, former U.S. chief agriculture negotiator, said if the talks dragged on past March they might not end until next year, making it more challenging to sell American farm products. “Other trade agreements will be implemented, buyers of U.S. products in Mexico and Canada won’t be sure that we are a good long-term bet, and so we’re likely to see our clients react accordingly,” she told a panel on NAFTA in Montreal on Friday. Reporting by P.J. Huffstutter in Chicago and David Ljunggren in Montreal; Writing and additional reporting by Rod Nickel in Winnipeg, Manitoba; Additional reporting by Lucas Jackson in Dixon, Nebraska; Editing by Jim Finkle and Daniel WallisOur Standards:The Thomson Reuters Trust Principles.\n", + "GETTING https://www.reuters.com/article/us-afghanistan-blast/militants-attack-afghan-army-post-near-military-academy-in-capital-idUSKBN1FI07M\n", + "URL: https://www.reuters.com/article/us-afghanistan-blast/militants-attack-afghan-army-post-near-military-academy-in-capital-idUSKBN1FI07M\n", + "TITLE: Militants attack Afghan army post near military academy in capital\n", + "BODY:\n", + "KABUL (Reuters) - At least four militants attacked an army outpost near one of Afghanistan’s main military academies on Monday and at least one soldier was killed and three wounded, a defense ministry official said. The attack in the western outskirts of the capital, Kabul, came two days after an ambulance bomb in the center of the city killed more than 100 people and just over a week after another attack on the Hotel Intercontinental killed more than 20. Both of those attacks were claimed by the Taliban. Ministry of Defence officials said the militants attacked the outpost near the well-defended Marshal Fahim military academy just before dawn. One of the attackers blew himself up, one had been killed and two were still fighting. One soldier had been killed and three were wounded, said one official, who declined to be identified. Ministry spokesman Dawlat Waziri said three soldiers had been wounded and the clash was still going on. Earlier, resident Mohammad Ehsan said he heard a series of explosions coming from the area beginning at around 5 a.m. and lasting for at least an hour. Smaller blasts could still be heard at less frequent intervals. In October, a suicide attacker rammed a car full of explosives into a bus carrying cadets from the defense university, which is home to one of Afghanistan’s main officer training schools, killing 15 of them. Reporting by Omar Sobhani; Writing by James Mackenzie; Editing by Robert Birsel and Paul TaitOur Standards:The Thomson Reuters Trust Principles.\n", + "GETTING https://www.reuters.com/article/us-usa-immigration-manchin/democratic-senator-criticizes-pelosis-immigration-comment-idUSKBN1FH0RC\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "URL: https://www.reuters.com/article/us-usa-immigration-manchin/democratic-senator-criticizes-pelosis-immigration-comment-idUSKBN1FH0RC\n", + "TITLE: Democratic senator criticizes Pelosi's immigration comment\n", + "BODY:\n", + "WASHINGTON (Reuters) - U.S. Senator Joe Manchin, a moderate Democrat, said on Sunday he thought a new White House immigration plan was a good starting point, and he criticized House Democratic leader Nancy Pelosi for dismissing it as a way to “make America white again.” “We don’t need that type of rhetoric on either side, from Nancy, (Republican House Speaker) Paul Ryan or anybody else,” said Manchin, a West Virginian and a leader of a bipartisan Senate group working on immigration. He spoke on CNN’s “State of the Union” program. Manchin’s comments highlighted differences among Democrats ahead of a Feb. 8 deadline for the U.S. Congress to pass another spending bill and try to reach an immigration agreement that would also protect up to 1.8 million illegal immigrants brought to the United States as children, a group known as “Dreamers,” from deportation. Senior White House officials outlined an immigration plan on Thursday that would offer Dreamers a path to citizenship. The proposal also would curb some legal immigration programs and build a border wall with Mexico. The White House described the language on Dreamers as a major concession to Democrats, but leading Democrats quickly dismissed the plan as a non-starter. FILE PHOTO - House Minority Leader Nancy Pelosi (D-CA) speaks during a news conference after President Donald Trump and the U.S. Congress failed to reach a deal on funding for federal agencies on Capitol Hill in Washington, U.S., January 20, 2018. REUTERS/Joshua Roberts Pelosi said it held Dreamers “hostage to a hateful anti-immigrant scheme” and accused the administration of Republican President Donald Trump of a campaign “to make America white again.” In a separate interview on Sunday on NBC’s “Meet the Press” program, Manchin said he thought the White House plan was “a good starting point.” Manchin said the bipartisan group that he and moderate Republican Senator Susan Collins lead would meet on Monday evening to examine the White House immigration outline. “I think we can find a pathway forward; I really do,” Manchin told NBC. Collins, speaking to CBS’s “Face the Nation” on Sunday, said the group hoped to influence a proposal that the Senate’s two whips, Republican John Cornyn and Democrat Dick Durbin, are trying to assemble. “If (Cornyn and Durbin) agree, I have a feeling that that will be a bill that can go all the way to the president’s desk, and that’s our goal,” Collins said. The group of more than 20 senators from both parties, which has been dubbed the “Common Sense Coalition,” helped to end a three-day U.S. government shutdown last week. Reporting by Susan Cornwell; Editing by Jeffrey Benkoe and Lisa Von AhnOur Standards:The Thomson Reuters Trust Principles.\n", + "GETTING https://www.reuters.com/article/us-usa-trump-russia/republican-senators-urge-congress-to-revisit-bill-to-protect-mueller-idUSKBN1FH0SG\n", + "URL: https://www.reuters.com/article/us-usa-trump-russia/republican-senators-urge-congress-to-revisit-bill-to-protect-mueller-idUSKBN1FH0SG\n", + "TITLE: Republican senators urge Congress to revisit bill to protect Mueller\n", + "BODY:\n", + "WASHINGTON (Reuters) - The U.S. Congress should revisit proposed legislation to protect special counsel Robert Mueller after President Donald Trump tried to fire him last year while he investigated the Trump campaign’s ties with Russia, two Republican senators said on Sunday. In separate television interviews, Senators Susan Collins and Lindsey Graham expressed dismay at reports the Republican president had told the top White House lawyer to order U.S. Justice Department officials to fire Mueller. “I’ve got legislation protecting Mr. Mueller, and I’d be glad to pass it tomorrow,” Graham told the ABC News “This Week” program. On CNN’s “State of the Union,” Collins said: “It certainly wouldn’t hurt to put that extra safeguard in place, given the latest stories.” Tensions over Mueller’s probe are hovering over Trump’s year-old presidency as he prepares to give his first State of the Union Address on Tuesday. The New York Times reported on Thursday that Trump ordered White House counsel Donald McGahn to fire Mueller in June but backed down after McGahn threatened to resign rather than carry out the order. McGahn was “fed up” after Trump’s order, a person familiar with the matter told Reuters. He did not issue an ultimatum directly to the president but told then-White House chief of staff Reince Priebus and then-chief strategist Steve Bannon that he wanted to quit, the source said. FILE PHOTO: Special Counsel Robert Mueller (R) departs after briefing members of the U.S. Senate on his investigation into potential collusion between Russia and the Trump campaign on Capitol Hill in Washington, U.S., June 21, 2017. REUTERS/Joshua Roberts/File PhotoGraham and three Democratic senators introduced legislation last August that would protect special counsels, including Mueller, by requiring that a panel of federal judges review any action to remove them. The likelihood that such a bill would become law have seemed remote. Republicans in the U.S. House of Representatives have shown little enthusiasm for the idea. “I don’t think there’s a need for legislation right now to protect Mueller,” House Republican leader Kevin McCarthy said on NBC’s “Meet the Press” program. “The president and his team have fully cooperated” with the special counsel, he said. U.S. President Donald Trump looks on during the World Economic Forum (WEF) annual meeting in Davos, Switzerland January 26, 2018. REUTERS/Carlos Barria Republicans hold the majority in both the House and Senate. Mueller is investigating whether Trump associates and the Kremlin colluded during the 2016 presidential election. Russia denies such collusion, and Trump frequently denounces the probe as a “witch hunt.” Both Collins and Graham said they saw no sign that Trump is currently trying to fire Mueller. “I think what happened here is the president had a bad idea,” Collins said. “He talked with his counsel, who explained to an angry and frustrated president why it was a bad idea.” Graham said: “It’s pretty clear to me everyone in the White House knows it’d be the end of President Trump’s presidency if he tried to fire Mr. Mueller.” Reporting by Yasmeen Abutaled and Caren Bohan Writing by Warren Strobel Editing by Lisa Von AhnOur Standards:The Thomson Reuters Trust Principles.\n", + "GETTING https://www.reuters.com/article/us-china-economy-growth/china-eyes-black-swans-gray-rhinos-as-2018-growth-seen-slowing-to-6-5-6-8-percent-media-idUSKBN1FI0AY?il=0\n", + "URL: https://www.reuters.com/article/us-china-economy-growth/china-eyes-black-swans-gray-rhinos-as-2018-growth-seen-slowing-to-6-5-6-8-percent-media-idUSKBN1FI0AY?il=0\n", + "TITLE: China eyes black swans, gray rhinos as 2018 growth seen slowing to 6.5-6.8 percent - media\n", + "BODY:\n", + "BEIJING (Reuters) - China’s economic growth will likely slow to 6.5-6.8 percent this year, a senior official at the country’s top economic planner wrote in the Beijing Daily on Monday, while warning about the risks of “Black Swan” and “Gray Rhino” events. Black swans, or unforeseen occurrences, and gray rhinos, or highly possible yet ignored threats, are likely to occur this year with adverse consequences, Fan Hengshan, vice secretary general of the National Development and Reform Commission (NDRC), wrote in a commentary in the state-controlled newspaper. China’s economy grew 6.9 percent in 2017, the first annual acceleration since 2010. That pace easily beat the government’s 2017 target of around 6.5 percent, welcome news for policymakers looking to curb financial risks and cut corporate debt. “My personal opinion is that economic growth this year is very likely to exceed 6.5 percent, roughly between 6.5 and 6.8 percent,” Fan said. Analysts polled by Reuters earlier this month also predicted a slowdown to 6.5 percent this year as government-led crackdowns on debt risks and factory pollution drag on overall activity. China will focus on fending off risks this year, particularly risks that will impact regions and cause systemic fluctuations, Fan said. “To this end, we must remain highly vigilant and enhance our sense of urgency,” Fan said. Earlier this month, China’s banking regulator chief told the official People’s Daily in an interview that a black swan event could threaten the country’s financial stability, adding that risks, while still manageable, are “complex and serious.” Reporting by Stella Qiu and Ryan Woo; Editing by Kim CoghillOur Standards:The Thomson Reuters Trust Principles.\n", + "GETTING https://www.reuters.com/article/us-australia-defence/australia-to-spend-3-1-billion-to-increase-stake-in-global-arms-exports-idUSKBN1FI08I?il=0\n", + "URL: https://www.reuters.com/article/us-australia-defence/australia-to-spend-3-1-billion-to-increase-stake-in-global-arms-exports-idUSKBN1FI08I?il=0\n", + "TITLE: Australia to spend $3.1 billion to increase stake in global arms exports\n", + "BODY:\n", + "SYDNEY (Reuters) - Prime Minister Malcolm Turnbull said on Monday Australian military equipment manufacturers will be offered government-backed loans as part of a A$3.8 billion ($3.1 billion) package to become one of the world’s top 10 defense exporters. Australia said in 2016 it would boost defense spending by A$30 billion by 2021, purchasing frigates, armored personnel carriers, strike fighter jets, drones and a fleet of new submarines - many of which would be built at home. The defense industry has struggled to obtain finance from traditional lenders that have been unwilling to fund the arms industry, so Australia has created a A$3.8 billion loan scheme for companies seeking finance to export military equipment. “Australia is around the 20th largest exporter. Given the size of our defense budget we should be higher up the scale than that,” Turnbull told reporters in Sydney. “The goal is to get into the top 10,” he said. Christopher Pyne, the minister for the defense industry, said Australia would target sales to the United States, Canada, Britain and New Zealand. Australia’s annual defense budget was worth A$34.6 billion this year. The scheme is also meant to arrest a slide in Australia’s manufacturing sector and provide some support for its economy, which has been hampered by record-low wage growth. Australia saw a record number of jobs created in 2017 but its manufacturing sector has shrunk significantly following the end of domestic car manufacturing. Employment in manufacturing peaked in mid-1989 at roughly 1.17 million, or 15 percent of the entire workforce. That shrank to 877,000, or 7 percent, late last year. Australia has seen a wave of new jobs but companies are not keen on paying employees more, leaving wage growth near record lows in an unwelcome drag on consumer spending and inflation. Australia’s expansion plans come amid increased global demand for military hardware, led by China and Middle East nations, prompting criticism of Canberra from aid agencies who argue Australia could make human rights violations worse if weapons were sold to the wrong buyers. Analysts said Australia would need to significantly expand sales beyond its traditional partners to have any chance of fulfilling its ambition. “There are possibilities, but I doubt U.S. interest especially will go beyond niche capabilities,” said Euan Graham, director of the international security program at Australian think tank the Lowy Institute. Reporting by Colin PackhamOur Standards:The Thomson Reuters Trust Principles.\n", + "GETTING https://www.reuters.com/article/us-afghanistan-blast/militants-attack-afghan-army-post-near-military-academy-in-capital-idUSKBN1FI07M?il=0\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "URL: https://www.reuters.com/article/us-afghanistan-blast/militants-attack-afghan-army-post-near-military-academy-in-capital-idUSKBN1FI07M?il=0\n", + "TITLE: Militants attack Afghan army post near military academy in capital\n", + "BODY:\n", + "KABUL (Reuters) - At least four militants attacked an army outpost near one of Afghanistan’s main military academies on Monday and at least one soldier was killed and three wounded, a defense ministry official said. The attack in the western outskirts of the capital, Kabul, came two days after an ambulance bomb in the center of the city killed more than 100 people and just over a week after another attack on the Hotel Intercontinental killed more than 20. Both of those attacks were claimed by the Taliban. Ministry of Defence officials said the militants attacked the outpost near the well-defended Marshal Fahim military academy just before dawn. One of the attackers blew himself up, one had been killed and two were still fighting. One soldier had been killed and three were wounded, said one official, who declined to be identified. Ministry spokesman Dawlat Waziri said three soldiers had been wounded and the clash was still going on. Earlier, resident Mohammad Ehsan said he heard a series of explosions coming from the area beginning at around 5 a.m. and lasting for at least an hour. Smaller blasts could still be heard at less frequent intervals. In October, a suicide attacker rammed a car full of explosives into a bus carrying cadets from the defense university, which is home to one of Afghanistan’s main officer training schools, killing 15 of them. Reporting by Omar Sobhani; Writing by James Mackenzie; Editing by Robert Birsel and Paul TaitOur Standards:The Thomson Reuters Trust Principles.\n", + "GETTING https://www.reuters.com/article/us-usa-election-kochs/fearing-democratic-wave-koch-network-to-spend-big-on-u-s-midterm-elections-idUSKBN1FI07H?il=0\n", + "URL: https://www.reuters.com/article/us-usa-election-kochs/fearing-democratic-wave-koch-network-to-spend-big-on-u-s-midterm-elections-idUSKBN1FI07H?il=0\n", + "TITLE: Fearing Democratic wave, Koch network to spend big on U.S. midterm elections\n", + "BODY:\n", + "INDIAN WELLS, Calif. (Reuters) - The conservative Koch network spent its annual donor conference celebrating policy victories under President Donald Trump such as the tax overhaul, but the elation was tinged with anxiety over November’s congressional elections that could pose a risk to its agenda. To that end, the network plans to spend what would be unprecedented sums for the Kochs to maintain Republican majorities in the U.S. Senate and House of Representatives, while trying to sell voters on the benefits of the newly passed tax package, according to network officials who briefed reporters on their strategy during the conference this weekend in Indian Wells, California. Historically, the party in power loses seats in congressional elections after a new president’s election. This year, Republican angst is compounded by Trump, whose tumultuous presidency helped galvanize Democratic and independent voters to go to the polls in special and state elections last year. “It’s going to be a very challenging environment,” said Tim Phillips, president of Americans for Prosperity, a grassroots political group that is part of the Koch network. “The left is energized. There’s no question about that.” The network is prepared to spend up to $400 million on the congressional races - a 60 percent increase from its investment in the 2016 election, officials said. Energy magnates Charles and David Koch have long been outsized players in Republican politics, but they never warmed to Trump during the 2016 campaign. With Trump in the White House, however, they have seen several policy goals realized, including the tax legislation and cutting federal regulations. But the Koch network still diverges from the Republican president on issues such as immigration and trade. The Kochs strongly support legislation that would protect “Dreamers” - people brought illegally to the United States as children - from deportation. Two Koch operatives, Daniel Garza and Jorge Lima, were at the White House on Friday to try to help broker a deal with Congress over the Dreamers. The network issued a statement on Friday disagreeing with a proposal in Trump’s immigration blueprint that would set new limits on legal immigration. On trade, Phillips and other Koch operatives are deeply concerned about the administration’s moves to impose tariffs on some imports and ardently support the North American Free Trade Agreement with Canada and Mexico, which is being renegotiated and that Trump has threatened to abandon. ‘GET OUT AND DEFINE YOURSELF’ Senator John Cornyn, the No. 2 Republican in the Senate, was an attendee at the Koch event, a measure of the network’s deep ties to conservatives in Congress and an example of the leverage it would lose should Democrats take control next year. Of the $400 million the network is looking to spend, $20 million will go toward promoting the tax law, which passed Congress in December and included big cuts in corporate tax rates along with tax reductions for many individuals. Polls at the time of passage showed Americans divided about the bill’s merits, but Phillips said he believed that would change as voters see increased paychecks. Democrats condemned the tax measure as favoring corporations and the rich. Americans for Prosperity is positioned to be a ground-level force in the congressional elections. Its largest presence is in Florida, where Democratic Senator Bill Nelson may face a fight from Republican Governor Rick Scott. The group also has offices in Arizona, Nevada, and Wisconsin, among other states, all of which are expected to see highly competitive Senate races. Phillips said his group would likely stay out of Republican primaries. One variable hanging over the Kochs’ effort is Trump. Republican losses in a special U.S. Senate election in Alabama last month and a governor’s race in Virginia in November were attributed in part to discontent with the president. In 2010, Republicans seized on voter worries about Democratic President Barack Obama’s signature healthcare law, known as Obamacare, to capture the House and thwart Obama’s policy goals. For the Koch network, the challenge will be to avoid having every local race become a referendum on the president, which could propel a Democratic wave. James Davis, vice president of Freedom Partners, another Koch-backed policy group, said strong candidates should be able to differentiate themselves from Trump. “Get out there and define yourself and where you stand on the issues,” Davis said. During one event, a donor from Nebraska, Gail Werner-Robertson, stood up and addressed Charles Koch directly, urging attendees to contribute more to the midterm effort. “We can’t lose the progress you all have fought so hard for,” she said.  Reporting by James Oliphant; Editing by Caren Bohan and Peter CooneyOur Standards:The Thomson Reuters Trust Principles.\n", + "GETTING https://www.reuters.com/article/uk-global-markets/asia-shares-extend-bull-run-dollar-crawls-off-lows-idUSKBN1FI01D?il=0\n", + "URL: https://www.reuters.com/article/uk-global-markets/asia-shares-extend-bull-run-dollar-crawls-off-lows-idUSKBN1FI01D?il=0\n", + "TITLE: Asia shares extend bull run, dollar crawls off lows\n", + "BODY:\n", + "SYDNEY (Reuters) - Asian shares extended their bull run on Monday amid upbeat corporate earnings and strong global economic growth, while the dollar tried to bounce even as the White House continued to complain of “unfair” trade practices by competitors. MSCI’s broadest index of Asia-Pacific shares outside Japan added 0.4 percent, aiming for a 12th straight session of gains. It is up 8 percent for the year so far. Japan’s Nikkei rose 0.5 percent as the yen eased a little, while South Korea notched a record. Hong Kong’s Hang Seng also rose 0.5 percent. It has been the best performer for the year with a rise of more than 11 percent, followed by Shanghai blue chips with gains of nearly 9 percent, though the latter dipped on Monday. Wall Street has likewise been on a tear. Just last week, the Dow rose 2.08 percent, the S&P; 500 2.22 percent and the Nasdaq 2.31 percent. Quarterly earnings growth for the S&P; 500 is estimated at 13.2 percent, according to Thomson Reuters data, up from 12 percent at the start of the year. Of the 133 companies in the index that have reported, almost 80 percent beat forecasts. Another 36 percent of the S&P; 500 is due to report this week including heavy hitters Apple, Alphabet, Facebook, Microsoft and Amazon. The rush to equities combined with the risk of faster global inflation, has been a major negative for sovereign bonds with yields rising across much of the developed world. Yields on U.S. two-year Treasuries have risen steadily to their highest since 2008 and are fully priced for a rate hike by the Federal Reserve in March. Ten-year yields broke above the range of the last week or so to reach 2.69 percent on Monday, levels last visited in mid-2014. The Fed holds its next meeting on Wednesday, the last for Chair Janet Yellen, and analysts suspect the statement will only cement expectations for a March move. WORDS MATTER The inexorable increase in Treasury yields has not, however, been enough to rescue the U.S. dollar which sank to three-year lows last week as U.S. officials welcomed a weaker currency. President Donald Trump did try and walk some of that back late in the week but by then the damage had been done. Indeed, in an interview shown on Sunday, Trump threatened to confront the European Union over what he calls “very unfair” trade policy toward the U.S.. “‘Words’ in the world of FX do matter,” said Deutsche Bank strategist George Saravelos. “The U.S. is reengaging with a weak dollar policy similarly to the 1994-95 period.” This was happening while the sum of trade and investment flows into the United States was shrinking. The opposite was happening in the euro zone, where the German export engine was powering an ever-expanding current account surplus. “We continue to target $1.30 in EUR/USD for this year,” Saravelos concluded. The euro did run into a little profit-taking in Asia on Monday which nudged it to back to $1.2393 and away from a three-year peak of $1.2538 last week. The dollar was a fraction firmer on the yen at 108.89, but not far from a four-month trough of 108.28. Against a basket of major currencies, it edged up 0.2 percent to 89.281 having been at the lowest since late 2014. The dollar faces a bevy of U.S. economic reports this week including releases on inflation, manufacturing and payrolls. The currency’s decline has been a boon for many commodities, with gold making a 17-month top last week and last trading at $1,348.10 an ounce. Oil prices had reached their highest in three years and Brent crude futures were holding atop $70 at $70.40 a barrel. U.S. crude futures were up 18 cents at $66.32. Editing by Shri Navaratnam and Kim CoghillOur Standards:The Thomson Reuters Trust Principles.\n", + "GETTING https://www.reuters.com/article/us-japan-cryptocurrency/japan-to-punish-hacked-cryptocurrency-exchange-coincheck-on-monday-idUSKBN1FI06S?il=0\n" + ] + }, + { + "ename": "KeyboardInterrupt", + "evalue": "", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mKeyboardInterrupt\u001b[0m Traceback (most recent call last)", + "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[1;32m 52\u001b[0m \u001b[0mreuters\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mWebsite\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'Reuters'\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m'https://www.reuters.com'\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m'^(/article/)'\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;32mFalse\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m'h1'\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m'div.StandardArticleBody_body_1gnLA'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 53\u001b[0m \u001b[0mcrawler\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mCrawler\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mreuters\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 54\u001b[0;31m \u001b[0mcrawler\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mcrawl\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m", + "\u001b[0;32m\u001b[0m in \u001b[0;36mcrawl\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 47\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msite\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mabsoluteUrl\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 48\u001b[0m \u001b[0mtargetPage\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m'{}{}'\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mformat\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msite\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0murl\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mtargetPage\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 49\u001b[0;31m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mparse\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mtargetPage\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 50\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 51\u001b[0m \u001b[0;31m# self, name, url, targetPattern, absoluteUrl, titleTag, bodyTag\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m\u001b[0m in \u001b[0;36mparse\u001b[0;34m(self, url)\u001b[0m\n\u001b[1;32m 27\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 28\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0mparse\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0murl\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 29\u001b[0;31m \u001b[0mbs\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mgetPage\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0murl\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 30\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mbs\u001b[0m \u001b[0;32mis\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0;32mNone\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 31\u001b[0m \u001b[0mtitle\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msafeGet\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mbs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msite\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mtitleTag\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m\u001b[0m in \u001b[0;36mgetPage\u001b[0;34m(self, url)\u001b[0m\n\u001b[1;32m 9\u001b[0m \u001b[0mprint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"GETTING \"\u001b[0m\u001b[0;34m+\u001b[0m\u001b[0murl\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 10\u001b[0m \u001b[0;32mtry\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 11\u001b[0;31m \u001b[0mreq\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mrequests\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mget\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0murl\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 12\u001b[0m \u001b[0;32mexcept\u001b[0m \u001b[0mrequests\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mexceptions\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mRequestException\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 13\u001b[0m \u001b[0mprint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"Did not get page\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/requests/api.py\u001b[0m in \u001b[0;36mget\u001b[0;34m(url, params, **kwargs)\u001b[0m\n\u001b[1;32m 65\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 66\u001b[0m \u001b[0mkwargs\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msetdefault\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'allow_redirects'\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;32mTrue\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 67\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mrequest\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'get'\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0murl\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mparams\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mparams\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 68\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 69\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/requests/api.py\u001b[0m in \u001b[0;36mrequest\u001b[0;34m(method, url, **kwargs)\u001b[0m\n\u001b[1;32m 51\u001b[0m \u001b[0;31m# cases, and look like a memory leak in others.\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 52\u001b[0m \u001b[0;32mwith\u001b[0m \u001b[0msessions\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mSession\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;32mas\u001b[0m \u001b[0msession\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 53\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0msession\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mrequest\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mmethod\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mmethod\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0murl\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0murl\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 54\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 55\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/requests/sessions.py\u001b[0m in \u001b[0;36m__exit__\u001b[0;34m(self, *args)\u001b[0m\n\u001b[1;32m 348\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 349\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0m__exit__\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 350\u001b[0;31m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mclose\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 351\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 352\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0mprepare_request\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mrequest\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/requests/sessions.py\u001b[0m in \u001b[0;36mclose\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 647\u001b[0m \u001b[0;34m\"\"\"Closes all adapters and as such the session\"\"\"\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 648\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0mv\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0madapters\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mvalues\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 649\u001b[0;31m \u001b[0mv\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mclose\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 650\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 651\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0mmount\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mprefix\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0madapter\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/requests/adapters.py\u001b[0m in \u001b[0;36mclose\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 268\u001b[0m \u001b[0mconnections\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 269\u001b[0m \"\"\"\n\u001b[0;32m--> 270\u001b[0;31m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mpoolmanager\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mclear\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 271\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 272\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0mrequest_url\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mrequest\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mproxies\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/requests/packages/urllib3/poolmanager.py\u001b[0m in \u001b[0;36mclear\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 98\u001b[0m \u001b[0mre\u001b[0m\u001b[0;34m-\u001b[0m\u001b[0mused\u001b[0m \u001b[0mafter\u001b[0m \u001b[0mcompletion\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 99\u001b[0m \"\"\"\n\u001b[0;32m--> 100\u001b[0;31m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mpools\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mclear\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 101\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 102\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0mconnection_from_host\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mhost\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mport\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;32mNone\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mscheme\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;34m'http'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/requests/packages/urllib3/_collections.py\u001b[0m in \u001b[0;36mclear\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 92\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mdispose_func\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 93\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0mvalue\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mvalues\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 94\u001b[0;31m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mdispose_func\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mvalue\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 95\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 96\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0mkeys\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/requests/packages/urllib3/poolmanager.py\u001b[0m in \u001b[0;36m\u001b[0;34m(p)\u001b[0m\n\u001b[1;32m 64\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mconnection_pool_kw\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mconnection_pool_kw\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 65\u001b[0m self.pools = RecentlyUsedContainer(num_pools,\n\u001b[0;32m---> 66\u001b[0;31m dispose_func=lambda p: p.close())\n\u001b[0m\u001b[1;32m 67\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 68\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0m__enter__\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/requests/packages/urllib3/connectionpool.py\u001b[0m in \u001b[0;36mclose\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 410\u001b[0m \u001b[0mconn\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mold_pool\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mget\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mblock\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;32mFalse\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 411\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mconn\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 412\u001b[0;31m \u001b[0mconn\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mclose\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 413\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 414\u001b[0m \u001b[0;32mexcept\u001b[0m \u001b[0mEmpty\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;31mKeyboardInterrupt\u001b[0m: " + ] + } + ], + "source": [ + "import re\n", + "\n", + "\n", + "class Crawler:\n", + " def __init__(self, site):\n", + " self.site = site\n", + " self.visited = []\n", + "\n", + " def getPage(self, url):\n", + " try:\n", + " req = requests.get(url)\n", + " except requests.exceptions.RequestException:\n", + " return None\n", + " return BeautifulSoup(req.text, 'html.parser')\n", + "\n", + " def safeGet(self, pageObj, selector):\n", + " selectedElems = pageObj.select(selector)\n", + " if selectedElems is not None and len(selectedElems) > 0:\n", + " return '\\n'.join([elem.get_text() for elem in selectedElems])\n", + " return ''\n", + "\n", + " def parse(self, url):\n", + " bs = self.getPage(url)\n", + " if bs is not None:\n", + " title = self.safeGet(bs, self.site.titleTag)\n", + " body = self.safeGet(bs, self.site.bodyTag)\n", + " if title != '' and body != '':\n", + " content = Content(url, title, body)\n", + " content.print()\n", + "\n", + " def crawl(self):\n", + " \"\"\"\n", + " Get pages from website home page\n", + " \"\"\"\n", + " bs = self.getPage(self.site.url)\n", + " targetPages = bs.findAll('a', href=re.compile(self.site.targetPattern))\n", + " for targetPage in targetPages:\n", + " targetPage = targetPage.attrs['href']\n", + " if targetPage not in self.visited:\n", + " self.visited.append(targetPage)\n", + " if not self.site.absoluteUrl:\n", + " targetPage = '{}{}'.format(self.site.url, targetPage)\n", + " self.parse(targetPage)\n", + "\n", + "\n", + "reuters = Website('Reuters', 'https://www.reuters.com', '^(/article/)',\n", + " False, 'h1', 'div.StandardArticleBody_body_1gnLA')\n", + "crawler = Crawler(reuters)\n", + "crawler.crawl()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Crawling multiple page types" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "class Website:\n", + " \"\"\"Common base class for all articles/pages\"\"\"\n", + "\n", + " def __init__(self, name, url, titleTag, bodyTag):\n", + " self.name = name\n", + " self.url = url\n", + " self.titleTag = titleTag\n", + " self.bodyTag = bodyTag\n", + " " + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "class Product(Website):\n", + " \"\"\"Contains information for scraping a product page\"\"\"\n", + "\n", + " def __init__(self, name, url, titleTag, productNumber, price):\n", + " Website.__init__(self, name, url, TitleTag)\n", + " self.productNumberTag = productNumberTag\n", + " self.priceTag = priceTag\n", + "\n", + "\n", + "class Article(Website):\n", + " \"\"\"Contains information for scraping an article page\"\"\"\n", + "\n", + " def __init__(self, name, url, titleTag, bodyTag, dateTag):\n", + " Website.__init__(self, name, url, titleTag)\n", + " self.bodyTag = bodyTag\n", + " self.dateTag = dateTag" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "\n", + "\n", + "def parsePage(url):\n", + " \n", + " if '/ideas/' in url:\n", + " \n", + "\n", + "oreilly = Website('O\\'Reilly', 'https://oreilly.com', 'h1' '') " + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.6.1" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/Chapter05_Scrapy/wikiSpider/scrapy.cfg b/Chapter05_Scrapy/wikiSpider/scrapy.cfg new file mode 100644 index 0000000..75d6f89 --- /dev/null +++ b/Chapter05_Scrapy/wikiSpider/scrapy.cfg @@ -0,0 +1,11 @@ +# Automatically created by: scrapy startproject +# +# For more information about the [deploy] section see: +# https://scrapyd.readthedocs.org/en/latest/deploy.html + +[settings] +default = wikiSpider.settings + +[deploy] +#url = http://localhost:6800/ +project = wikiSpider diff --git a/Chapter05_Scrapy/wikiSpider/wikiSpider/__init__.py b/Chapter05_Scrapy/wikiSpider/wikiSpider/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/Chapter05_Scrapy/wikiSpider/wikiSpider/article.py b/Chapter05_Scrapy/wikiSpider/wikiSpider/article.py new file mode 100644 index 0000000..7c0ebdb --- /dev/null +++ b/Chapter05_Scrapy/wikiSpider/wikiSpider/article.py @@ -0,0 +1,18 @@ +import scrapy + +class ArticleSpider(scrapy.Spider): + name='article' + + def start_requests(self): + urls = [ + "http://en.wikipedia.org/wiki/Python_%28programming_language%29", + "https://en.wikipedia.org/wiki/Functional_programming", + "https://en.wikipedia.org/wiki/Monty_Python"] + return [scrapy.Request(url=url, callback=self.parse) for url in urls] + + def parse(self, response): + url = response.url + title = response.css('h1::text').extract_first() + print('URL is: {}'.format(url)) + print('Title is: {}'.format(title)) + diff --git a/Chapter05_Scrapy/wikiSpider/wikiSpider/articleItems.py b/Chapter05_Scrapy/wikiSpider/wikiSpider/articleItems.py new file mode 100644 index 0000000..0ccd9c0 --- /dev/null +++ b/Chapter05_Scrapy/wikiSpider/wikiSpider/articleItems.py @@ -0,0 +1,20 @@ +from scrapy.contrib.linkextractors import LinkExtractor +from scrapy.contrib.spiders import CrawlSpider, Rule +from wikiSpider.items import Article + +class ArticleSpider(CrawlSpider): + name = 'articleItems' + allowed_domains = ['wikipedia.org'] + start_urls = ['https://en.wikipedia.org/wiki/Benevolent_dictator_for_life'] + rules = [ + Rule(LinkExtractor(allow='(/wiki/)((?!:).)*$'), callback='parse_items', follow=True), + ] + + def parse_items(self, response): + article = Article() + article['url'] = response.url + article['title'] = response.css('h1::text').extract_first() + article['text'] = response.xpath('//div[@id="mw-content-text"]//text()').extract() + lastUpdated = response.css('li#footer-info-lastmod::text').extract_first() + article['lastUpdated'] = lastUpdated.replace('This page was last edited on ', '') + return article \ No newline at end of file diff --git a/Chapter05_Scrapy/wikiSpider/wikiSpider/articlePipelines.py b/Chapter05_Scrapy/wikiSpider/wikiSpider/articlePipelines.py new file mode 100644 index 0000000..d6d2b18 --- /dev/null +++ b/Chapter05_Scrapy/wikiSpider/wikiSpider/articlePipelines.py @@ -0,0 +1,19 @@ +from scrapy.contrib.linkextractors import LinkExtractor +from scrapy.contrib.spiders import CrawlSpider, Rule +from wikiSpider.items import Article + +class ArticleSpider(CrawlSpider): + name = 'articlePipelines' + allowed_domains = ['wikipedia.org'] + start_urls = ['https://en.wikipedia.org/wiki/Benevolent_dictator_for_life'] + rules = [ + Rule(LinkExtractor(allow='(/wiki/)((?!:).)*$'), callback='parse_items', follow=True), + ] + + def parse_items(self, response): + article = Article() + article['url'] = response.url + article['title'] = response.css('h1::text').extract_first() + article['text'] = response.xpath('//div[@id="mw-content-text"]//text()').extract() + article['lastUpdated'] = response.css('li#footer-info-lastmod::text').extract_first() + return article \ No newline at end of file diff --git a/Chapter05_Scrapy/wikiSpider/wikiSpider/articles.csv b/Chapter05_Scrapy/wikiSpider/wikiSpider/articles.csv new file mode 100644 index 0000000..2a91e82 --- /dev/null +++ b/Chapter05_Scrapy/wikiSpider/wikiSpider/articles.csv @@ -0,0 +1,16615 @@ +lastUpdated,text,title +" 13 December 2017, at 09:26.","For the political term, see ,Benevolent dictatorship,., +,Benevolent Dictator For Life, (,BDFL,) is a title given to a small number of ,open-source software development, leaders, typically project founders who retain the final say in disputes or arguments within the community. The phrase originated in 1995 with reference to ,Guido van Rossum,, creator of the ,Python programming language,.,[1],[2], Shortly after van Rossum joined the ,Corporation for National Research Initiatives,, the term appeared in a follow-up mail by ,Ken Manheimer, to a meeting trying to create a semi-formal group that would oversee Python development and workshops; this initial use included the additional joke of naming van Rossum the "",First Interim, BDFL"".,[1], +,BDFL should not be confused with the more common term for open-source leaders, "",benevolent dictator,"", which was popularized by ,Eric S. Raymond,'s essay "",Homesteading the Noosphere,"" (1999).,[3], Among other topics related to ,hacker culture,, Raymond elaborates on how the nature of open source forces the ""dictatorship"" to keep itself ,benevolent,, since a strong disagreement can lead to the ,forking, of the project under the rule of new leaders., +,Persons sometimes referred to as ""Benevolent dictators for life"",[,edit,], +, +, +,Name, +,Project, +,Type, +,Reference, +, +, +,Vitalik Buterin, +,Ethereum, +,blockchain-based cryptocurrency, +,[4], +, +, +,Dries Buytaert, +,Drupal, +,content management framework, +,[5], +, +, +,Shaun Walker, +,DotNetNuke, +,web application framework, +,[6], +, +, +,David Heinemeier Hansson, +,Ruby on Rails, +,web framework, +,[7], +, +, +,Adrian Holovaty, and Jacob Kaplan-Moss, +,Django, +,web framework, +,[8], +, +, +,Taylor Otwell, +,Laravel, +,web framework, +,[9],[10], +, +, +,Theo de Raadt, +,OpenBSD, +,Unix,-like operating system, +,[11], +, +, +,Daniel Robbins, +,Funtoo Linux, +,Linux distribution, +,[12], +, +, +,Sébastien Ros, +,Orchard Project, +,content management system, +,[13], +, +, +,Guido van Rossum, +,Python, +,programming language, +,[7],[14], +, +, +,Linus Torvalds, +,Linux, +,operating system kernel, +,[7],[15], +, +, +,Patrick Volkerding, +,Slackware, +,Linux distribution, +,[16], +, +, +,Mark Shuttleworth, +,Ubuntu Linux, +,Linux distribution, +,[17], +, +, +,Larry Wall, +,Perl, +,programming language, +,[18], +, +, +,Matt Mullenweg, +,WordPress, +,content management framework, +,[19], +, +, +,Nathan Voxland, +,Liquibase, +,database schema management, +,[20], +, +, +,Xavier Leroy, +,OCaml, +,programming language, +,[21],[22], +, +, +,Ton Roosendaal, +,Blender, +,3D computer graphics software, +,[23], +, +, +,Bram Moolenaar, +,Vim, +,text editor, +,[24], +, +, +,Don Syme, +,F#, +,programming language, +,[25], +, +, +,Rich Hickey, +,Clojure, +,programming language, +,[26], +, +, +,Wes McKinney, +,Pandas, +,Python data analysis library, +,[27], +, +, +,Martin Odersky, +,Scala, +,programming language, +,[28], +, +, +,Yukihiro Matsumoto (Matz), +,Ruby, +,programming language, +,[29], +, +, +,Evan Czaplicki, +,Elm, +,front-end web framework, +,[30],[31], +, +, +,Juan Benet, +,InterPlanetary File System, +,decentralized internet, +,[32], +, +, +,Sylvain Benner, +,Spacemacs, +,community-driven ,Emacs, distribution, +,[33], +, +, +,Pauli Virtanen, +,SciPy, +,Python, library used for scientific and technical computing, +,[34],[35], +, +, +,José Valim, +,elixir, +,programming language, +,[36], +, +, +,References,[,edit,], +, +, +,^ ,a, ,b, ,Guido van Rossum (July 31, 2008). ,""Origin of BDFL"",. Retrieved ,August 1,, 2008,., , +,^, ,""Python Creator Scripts Inside Google"",. www.eweek.com,. Retrieved ,May 13,, 2008,., , +,^, ,Eric S. Raymond. ,""Homesteading the Noosphere"",. Retrieved ,August 1,, 2008,., , +,^, ,"",Ethereum's Boy King Is Thinking About Giving Up the Mantle,"", +,^, ,Randy Fay, "",How Do Open Source Communities Govern Themselves?,"", +,^, ,Book: Building Websites with DotNetNuke 5, Michael Washington and Ian Lackey, Packt Publishing. Page 14 ""The core team comprises individuals invited to join the team by Shaun Walker, whom they affectionately call the ""Benevolent Dictator""."", +,^ ,a, ,b, ,c, ,Constine, Josh (December 7, 2012). ,""Dropbox Hires Away Google's Guido Van Rossum, The Father Of Python"",. TechCrunch,. Retrieved ,June 1,, 2015,., , +,^, ,""Adrian and Jacob retiring as Django BDFLs"",. Adrian Holovaty. January 12, 2014,. Retrieved ,June 14,, 2015,., , +,^, ,""Taylor Otwell, Twitter"",. Taylor Otwell. October 9, 2014,. Retrieved ,October 9,, 2014,., , +,^, ,""Taylor Otwell, Creator of the Laravel PHP Framework"",. August 5, 2014,. Retrieved ,August 5,, 2014,., , +,^, ,Hildebrand, Matthew (July 5, 2005). ,""Interview: Theo de Raadt on Industry and Free Software"",. ,The Epoch Times,. The Epoch Times. Archived from ,the original, on June 21, 2015,. Retrieved ,June 20,, 2015,., , +,^, ,""Welcome to Funtoo Linux"",., , +,^, ,""Orchard Project Steering Committee"",. Archived from ,the original, on August 12, 2015., , +,^, ,""The Four Hundred—Next Up on the System i: Python"",. www.itjungle.com,. Retrieved ,May 13,, 2008,., , +,^, ,Dee-Ann LeBlanc (31 July 2006). ,Linux For Dummies, (7th ed.). John Wiley & Sons. p. 15. ,ISBN, ,978-0-470-04793-4,., , +,^, ,""Stories of Linux: A Look at Slackware Linux"",. ,linux.com,., , +,^, ,""Ubuntu carves niche in Linux landscape"",. ,CNET,. Archived from ,the original, on 6 November 2015., , +,^, ,""The Art of Ballistic Programming"",. Archived from ,the original, on June 17, 2013., , +,^, ,""Thesis, Automattic, and WordPress | Post Status"",. Retrieved ,2015-07-24,., , +,^, ,""User and Developer Community | Post Status"",. Retrieved ,2015-08-13,., , +,^, ,""A History of OCaml | OCaml.org"",. Retrieved ,2015-09-18,., , +,^, ,""OCaml Infrastructure mailing list"",. Retrieved ,2015-09-18,., , +,^, ,""New Developer Info"",. Retrieved ,21 September, 2015,., , +,^, ,""Why Neovim is Better than Vim"",. Retrieved ,30 September, 2015,., , +,^, ,""Contributing to the F# Language and Compiler"",. Retrieved ,29 September, 2015,., , +,^, ,""Clojure JIRA Workflow"",. Retrieved ,3 October, 2015,., , +,^, ,""pandas 0.20.3 documentation: Tutorials"",. Retrieved ,2017-07-24,., , ""Wes McKinney’s (pandas BDFL) blog"", +,^, ,""Programming in Scala Leaps onto the World Stage!"",. Retrieved ,2015-11-25,., , +,^, ,""A Ruby Design Process"",. Retrieved ,2016-04-17,., , +,^, ,""56: Ember vs. Elm: The Showdown with Philip Poots | The Frontside Podcast"",. ,The Frontside Podcast,. Retrieved ,2017-08-14,., , +,^, ,elm-conf (2016-09-19), ,""Code is the Easy Part"" by Evan Czaplicki,, retrieved ,2017-08-14, , +,^, ,""Understanding the IPFS White Paper part 2"",. Retrieved ,2017-08-21,., , +,^, ,""Spacemacs COMMUNITY.org"",. Retrieved ,2017-08-24,., , +,^, ,""SciPy 1.0.0"",. Retrieved ,2017-10-27,., , +,^, ,""SciPy project governance"",. Retrieved ,2017-10-27,., , +,^, ,""Elixir Companies"",. Retrieved ,2017-11-01,., , +, +, + + +, +, +, +, +",Benevolent dictator for life +" 29 December 2017, at 03:58.","Not to be confused with ,Ruby (programming language),., +, +,Ruby on Rails, +, +, +, +, +,Original author(s), +,David Heinemeier Hansson, +, +, +,Initial release, +,13 December 2005,; 12 years ago, (,2005-12-13,),[1], +, +, +, +, +, +,Stable release, +,5.1.4 ,(September 7, 2017,; 4 months ago, (,2017-09-07,),[2],), ,[±], +, +, +, +, +, +,Repository, +, +, +, +,https://github.com/rails/rails, +, +, +, +, +, +,Development status, +,Active, +, +, +,Written in, +,Ruby, +, +, +,Operating system, +,Cross-platform, +, +, +,Size, +,18.2 ,MB,[3], +, +, +,Type, +,Web application framework, +, +, +,License, +,MIT License, +, +, +,Website, +,rubyonrails,.org, +, +, +,Ruby on Rails,, or ,Rails,, is a server-side ,web application framework, written in ,Ruby, under the ,MIT License,. Rails is a ,model–view–controller, (MVC) framework, providing default structures for a ,database,, a ,web service,, and ,web pages,. It encourages and facilitates the use of ,web standards, such as ,JSON, or ,XML, for data transfer, and ,HTML,, ,CSS, and ,JavaScript, for display and user interfacing. In addition to MVC, Rails emphasizes the use of other well-known ,software engineering, ,patterns, and paradigms, including ,convention over configuration, (CoC), ,don't repeat yourself, (DRY), and the ,active record pattern,.,[4], +,Ruby on Rails' emergence in the 2000s greatly influenced web app development, through innovative features such as seamless database table creations, migrations, and scaffolding of views to enable rapid application development. Ruby on Rails' influence on other web frameworks remains apparent today, with many frameworks in other languages borrowing its ideas, including ,Django, in ,Python,, ,Laravel, in ,PHP,, Phoenix in ,Elixir,, and ,Sails.js, in ,Node.js,., +, +, +, +,Contents, +, +, +,1, ,History, +,2, ,Technical overview, +, +,2.1, ,Framework structure, +,2.2, ,Deployment, +, +, +,3, ,Philosophy and design, +,4, ,Trademarks, +,5, ,Reception, +, +,5.1, ,Scalability, +,5.2, ,Security, +, +, +,6, ,References, +,7, ,Bibliography, +,8, ,External links, +, +, +, +,History,[,edit,], +,David Heinemeier Hansson, extracted Ruby on Rails from his work on the project management tool ,Basecamp, at the ,web application, company also called ,Basecamp,.,[5], Hansson first released Rails as open source in July 2004, but did not share ,commit, rights to the project until February 2005.,[,citation needed,], In August 2006, the framework reached a milestone when ,Apple, announced that it would ship Ruby on Rails with ,Mac OS X v10.5 ""Leopard"",,,[6], which was released in October 2007., +,Rails version 2.3 was released on March 15, 2009 with major new developments in templates, engines, ,Rack, and nested model forms. Templates enable the developer to generate a skeleton application with custom ,gems, and configurations. Engines give developers the ability to reuse application pieces complete with routes, view paths and models. The Rack web server interface and Metal allow one to write optimized pieces of code that route around Action Controller.,[7], +,On December 23, 2008, ,Merb,, another web application framework, was launched, and Ruby on Rails announced it would work with the Merb project to bring ""the best ideas of Merb"" into Rails 3, ending the ""unnecessary duplication"" across both communities.,[8], Merb was merged with Rails as part of the Rails 3.0 release.,[9],[10], +,Rails 3.1 was released on August 31, 2011, featuring Reversible Database Migrations, Asset Pipeline, Streaming, ,jQuery, as default ,JavaScript, library and newly introduced ,CoffeeScript, and ,Sass, into the stack.,[11], +,Rails 3.2 was released on January 20, 2012 with a faster development mode and routing engine (also known as Journey engine), Automatic Query Explain and Tagged Logging.,[12], Rails 3.2.x is the last version that supports Ruby 1.8.7.,[13], Rails 3.2.12 supports Ruby 2.0.,[14], +,Rails 4.0 was released on June 25, 2013, introducing Russian Doll Caching, Turbolinks, Live Streaming as well as making Active Resource, Active Record Observer and other components optional by splitting them as gems.,[15], +,Rails 4.1 was released on April 8, 2014, introducing Spring, Variants, Enums, Mailer previews, and secrets.yml.,[16], +,Rails 4.2 was released on December 19, 2014, introducing Active Job, asynchronous emails, Adequate Record, Web Console, and ,foreign keys,.,[17], +,Rails 5.0 was released on June 30, 2016, introducing Action Cable, API mode, and Turbolinks 5.,[18], +,Rails 5.0.0.1 was released on August 10, 2016 with Exclusive use of rails CLI over Rake and supports Ruby 2.2.2+ versions, +,Rails 5.1 was released on April 27, 2017, introducing ,JavaScript, integration changes (management of JavaScript dependencies from NPM via Yarn, optional compilation of JavaScript using ,Webpack,, and a rewrite of Rails UJS to use vanilla JavaScript instead of depending on jQuery), system tests using ,Capybara,, encrypted secrets, parameterized mailers, direct & resolved routes, and a unified form_with helper replacing the form_tag/form_for helpers.,[19], +, +,Version history, +, +,Version, +,Date, +,Notes, +, +, +,Old version, no longer supported:, 1.0,[20], +,000000002005-12-13-0000,December 13, 2005, +, +, +, +,Old version, no longer supported:, 1.2,[21], +,000000002007-01-19-0000,January 19, 2007, +, +, +, +,Old version, no longer supported:, 2.0,[22], +,000000002007-12-07-0000,December 7, 2007, +, +, +, +,Old version, no longer supported:, 2.1,[23], +,000000002008-06-01-0000,June 1, 2008, +, +, +, +,Old version, no longer supported:, 2.2,[24], +,000000002008-11-21-0000,November 21, 2008, +, +, +, +,Old version, no longer supported:, 2.3,[25], +,000000002009-03-16-0000,March 16, 2009, +, +, +, +,Old version, no longer supported:, 3.0,[26], +,000000002010-08-29-0000,August 29, 2010, +, +, +, +,Old version, no longer supported:, 3.1,[27], +,000000002011-08-31-0000,August 31, 2011, +, +, +, +,Old version, no longer supported:, 3.2,[28], +,000000002012-01-20-0000,January 20, 2012, +, +, +, +,Old version, no longer supported:, 4.0,[29], +,000000002013-06-25-0000,June 25, 2013, +, +, +, +,Old version, no longer supported:, 4.1,[16], +,000000002014-04-08-0000,April 8, 2014, +, +, +, +,Old version, no longer supported:, 4.2,[17], +,000000002014-12-19-0000,December 19, 2014, +, +, +, +,Older version, yet still supported:, 5.0,[18], +,000000002016-06-30-0000,June 30, 2016, +, +, +, +,Current stable version:, ,5.1,[19], +,000000002017-05-10-0000,May 10, 2017, +, +, +, +,Latest preview version of a future release:, 5.2, +, +, +, +, +, +, +,Legend:, +,Old version, +,Older version, still supported, +,Latest version, +,Latest preview version, +,Future release, +, +, +, +, +, +, +,Technical overview,[,edit,], +,Like many web frameworks, Ruby on Rails uses the ,model–view–controller, (MVC) pattern to organize application programming., +,In a default configuration, a ,model, in the Ruby on Rails framework maps to a table in a database and to a Ruby file. For example, a model class ,User, will usually be defined in the file 'user.rb' in the app/models directory, and linked to the table 'users' in the database. While developers are free to ignore this convention and choose differing names for their models, files, and database table, this is not common practice and is usually discouraged in accordance with the ""convention-over-configuration"" philosophy., +,A ,controller, is a server-side component of Rails that responds to external requests from the web server to the application, by determining which view file to render. The controller may also have to query one or more models for information and pass these on to the view. For example, in an airline reservation system, a controller implementing a flight-search function would need to query a model representing individual flights to find flights matching the search, and might also need to query models representing airports and airlines to find related secondary data. The controller might then pass some subset of the flight data to the corresponding view, which would contain a mixture of static HTML and logic that use the flight data to create an HTML document containing a table with one row per flight. A controller may provide one or more actions. In Ruby on Rails, an action is typically a basic unit that describes how to respond to a specific external web-browser request. Also, note that the controller/action will be accessible for external web requests only if a corresponding route is mapped to it. Rails encourages developers to use ,RESTful, routes, which include actions such as create, new, edit, update, destroy, show, and index. These mappings of incoming requests/routes to controller actions can be easily set up in the routes.rb configuration file., +,A ,view, in the default configuration of Rails is an ,erb, file, which is evaluated and converted to ,HTML, at run-time. Alternatively, many other templating systems can be used for views., +,Ruby on Rails includes tools that make common development tasks easier ""out-of-the-box"", such as ,scaffolding, that can automatically construct some of the models and views needed for a basic ,website,.,[30], Also included are ,WEBrick,, a simple Ruby web server that is distributed with Ruby, and ,Rake,, a build system, distributed as a ,gem,. Together with Ruby on Rails, these tools provide a basic development environment., +,Ruby on Rails is most commonly not connected to the Internet directly, but through some front-end ,web server,. ,Mongrel, was generally preferred,[,by whom?,], over WEBrick in the early days,,[,citation needed,], but it can also run on ,Lighttpd,, ,Apache,, ,Cherokee,, ,Hiawatha,, ,Nginx, (either as a module – ,Phusion Passenger, for example – or via ,CGI,, ,FastCGI, or ,mod_ruby,), and many others. From 2008 onward, Passenger replaced Mongrel as the most-used web server for Ruby on Rails.,[31], Ruby is also supported natively on the ,IBM i,.,[32], +,Ruby on Rails is also noteworthy for its extensive use of the ,JavaScript, libraries, ,Prototype, and ,Script.aculo.us,, for scripting ,Ajax, actions.,[33], Ruby on Rails initially utilized lightweight ,SOAP, for web services; this was later replaced by RESTful ,web services,. Ruby on Rails 3.0 uses a technique called ,Unobtrusive JavaScript, to separate the functionality (or logic) from the structure of the web page. jQuery is fully supported as a replacement for Prototype and is the default JavaScript library in Rails 3.1, reflecting an industry-wide move towards jQuery. Additionally, ,CoffeeScript, was introduced in Rails 3.1 as the default JavaScript language., +,Since version 2.0, Ruby on Rails offers both HTML and XML as standard output formats. The latter is the facility for RESTful web services., +,Rails 3.1 introduced ,Sass, as standard ,CSS, templating., +,By default, the server uses ,Embedded Ruby, in the HTML views, with files having an html.erb extension. Rails supports swapping-in alternative templating languages, such as ,HAML, and ,Mustache,., +,Ruby on Rails 3.0 has been designed to work with Ruby 1.8.7, Ruby 1.9.2, and ,JRuby, 1.5.2+; earlier versions are not supported.,[34], +,Ruby on Rails 3.2 is the last series of releases that support Ruby 1.8.7., +,Framework structure,[,edit,], +,Ruby on Rails is separated into various packages, namely ,ActiveRecord, (an ,object-relational mapping, system for database access), Active Resource (provides web services), Action Pack, Active Support and Action Mailer. Prior to version 2.0, Ruby on Rails also included the Action Web Service package that is now replaced by Active Resource. Apart from standard packages, developers can make ,plugins, to extend existing packages. Earlier Rails supported plugins within their own custom framework; version 3.2 deprecates these in favor of standard Ruby ""gems"".,[35], +,Deployment,[,edit,], +,Ruby on Rails is often installed using ,RubyGems,, a package manager,[36], which is included with current versions of Ruby. Many free ,Unix-like systems, also support installation of Ruby on Rails and its dependencies through their native ,package management system,., +,Ruby on Rails is typically deployed with a database server such as ,MySQL, or ,PostgreSQL,, and a web server such as ,Apache, running the ,Phusion Passenger, module., +,Philosophy and design,[,edit,], +,Ruby on Rails is intended to emphasize ,Convention over Configuration, (CoC), and the ,Don't Repeat Yourself, (DRY) principle., +,""Convention over Configuration"" means a developer only needs to specify unconventional aspects of the application. For example, if there is a class ,Sales, in the model, the corresponding table in the database is called ,sales, by default. It is only if one deviates from this convention, such as calling the table ""products sold"", that the developer needs to write code regarding these names. Generally, Ruby on Rails conventions lead to less code and less repetition.,[37], +,""Don't repeat yourself"" means that information is located in a single, unambiguous place. For example, using the ,ActiveRecord, module of Rails, the developer does not need to specify database column names in class definitions. Instead, Ruby on Rails can retrieve this information from the database based on the class name., +,""Fat models, skinny controllers"" means that most of the application logic should be placed within the model while leaving the controller as light as possible., +,Trademarks,[,edit,], +,In March 2007, ,David Heinemeier Hansson, filed three Ruby on Rails-related ,trademark, applications to the ,USPTO,. These applications regard the phrase ""RUBY ON RAILS"",,[38], the word ""RAILS"",,[39], and the official Rails logo.,[40], As a consequence, in the summer of 2007, Hansson denied permission to ,Apress, to use the Ruby on Rails logo on the cover of a new Ruby on Rails book written by some authoritative community members. The episode gave rise to a polite protest in the Ruby on Rails community.,[41],[42], In response to this criticism, Hansson replied:, +, +,I only grant promotional use [of the Rails logo] for products I'm directly involved with. Such as books that I've been part of the development process for or conferences where I have a say in the execution. I would most definitely seek to enforce all the trademarks of Rails.,[41], +, +,Reception,[,edit,], +,Scalability,[,edit,], +,Rails running on ,Matz's Ruby Interpreter, (the ,de facto, reference interpreter for Ruby) had been criticized for issues with scalability.,[43], These critics often mentioned various ,Twitter, outages in 2007 and 2008, which spurred Twitter's partial transition to ,Scala, (which runs on the ,Java Virtual Machine,) for their ,queueing system, and other ,middleware,.,[44],[45], The user interface aspects of the site continued to run Ruby on Rails,[46], until 2011 when it was replaced due to concerns over performance,[47], +,In 2011, ,Gartner Research, noted that despite criticisms and comparisons to Java, many high-profile consumer web firms are using Ruby on Rails to build scalable web applications. Some of the largest sites running Ruby on Rails include ,Airbnb,, ,GitHub,, ,Scribd,, ,Shopify,, ,Hulu,, and ,Basecamp,.,[48], As of January 2016, it is estimated that more than 1.2 million web sites are running Ruby on Rails.,[49],[50], +,Security,[,edit,], +,In March 2012, security researcher Egor Homakov discovered a ""mass assignment"" vulnerability that allowed certain Rails applications to be remotely exploited, and demonstrated it by non-maliciously hacking ,GitHub, after his earlier attempts at responsible disclosure were dismissed.,[51], +,On September 24, 2013, a session cookie persistence security flaw was reported in Ruby on Rails. In a default configuration, the entire session hash is stored within a session cookie known as ,CookieStore,, allowing any authenticated session possessing the session cookie to log in as the target user at any time in the future. As a workaround, administrators are advised to configure cookies to be stored on the server using mechanisms such as ,ActiveRecordStore,.,[52], +,Researchers Daniel Jackson and Joseph Near developed a data debugger they called ""Space"" that can analyze the data access of a Rails program and determine if the program properly adheres to rules regarding access restrictions. On April 15, 2016, Near reported that an analysis of 50 popular Web applications using Space uncovered 23 previously unknown security flaws.,[53], +,References,[,edit,], +, +, +,^, ,David. ,""Rails 1.0: Party like it's one oh oh!"",. ,Ruby on Rails,. Retrieved ,2017-03-01,., , +,^, ,matthewd. ,""Rails 5.1.4 and 5.0.6 released"",. ,Ruby on Rails,. Retrieved ,2017-09-09,., , +,^, ,""Release v5.1.1 · rails/rails · GitHub"",. Retrieved ,25 June, 2017,., , +,^, ,""Getting Started with Rails: What Is Rails?"",. ,Ruby on Rails Guides,. Retrieved ,10 August, 2014,., , +,^, ,Grimmer, Lenz−− (February 2006). ,""Interview with David Heinemeier Hansson from Ruby on Rails"",. ,MySQL AB,. Archived from ,the original, on February 25, 2013,. Retrieved ,2008-06-08,., , +,^, ,Hansson, David (August 7, 2006). ,""Ruby on Rails will ship with OS X 10.5 (Leopard)"",. Retrieved ,2008-06-08,., , +,^, ,Hansson, David (March 16, 2009). ,""Rails 2.3: Templates, Engines, Rack, Metal, much more!"",., , +,^, ,""The day Merb joined Rails"",. 2008-12-27. Archived from ,the original, on 2013-02-09., , +,^, ,""Ruby on Rails 3.0 Release Notes — Ruby on Rails Guides"",. ,Edgeguides.rubyonrails.org,. Retrieved ,2017-05-24,., , +,^, ,""Ruby on Rails 3.0 goes modular"",. sdtimes.com. 2010-02-10,. Retrieved ,2010-08-06,., , +,^, ,""Ruby on Rails 3.1 Release Notes"",. 2012-09-01., , +,^, ,""Ruby on Rails 3.2 Release Notes"",. 2012-09-01., , +,^, ,""Rails/master is now 4.0.0.beta"",. 2012-09-01., , +,^, ,Rails 3.2.x is now compatible with Ruby 2.0.0 by sikachu · Pull Request #9406 · rails/rails · GitHub,. Github.com. Retrieved on 2014-05-30., +,^, ,""Rails 4.0: Final version released! | Riding Rails"",. ,Weblog.rubyonrails.org,. 2013-06-25,. Retrieved ,2017-05-24,., , +,^ ,a, ,b, ,""Rails 4.1.0: Spring, Variants, Enums, Mailer previews, secrets.yml"",. ,weblog.rubyonrails.org,., , +,^ ,a, ,b, ,""Rails 4.2: Active Job, Asynchronous Mails, Adequate Record, Web Console, Foreign Keys"",. ,Ruby on Rails,. Retrieved ,5 Dec, 2015,., , +,^ ,a, ,b, ,""Rails 5.0: Action Cable, API mode, and so much more"",. ,Ruby on Rails,. Retrieved ,19 Nov, 2016,., , +,^ ,a, ,b, ,""Rails 5.1: Loving JavaScript, System Tests, Encrypted Secrets, and more"",. ,Ruby on Rails,. Retrieved ,10 May, 2017,., , +,^, ,""Rails 1.0: Party like it's one oh oh!"",. Riding Rails. Retrieved June 9, 2010., +,^, ,""Rails 1.2: REST admiration, HTTP lovefest, and UTF-8 celebrations"",. Riding Rails. Retrieved June 9, 2010., +,^, ,""Rails 2.0: It's done!"",. Riding Rails. Retrieved June 9, 2010., +,^, ,Rails 2.1: Time zones, dirty, caching, gem dependencies, caching, etc,. Riding Rails. Retrieved June 9, 2010., +,^, ,""Rails 2.2: i18n, HTTP validators, thread safety, JRuby/1.9 compatibility, docs"",. Riding Rails. Retrieved June 9, 2010., +,^, ,""Rails 2.3: Templates, Engines, Rack, Metal, much more!"",. Riding Rails. Retrieved June 9, 2010., +,^, ,""Rails 3.0: It's ready!"",. Riding Rails. Retrieved August 30, 2010., +,^, ,""bumping to 3.1.0"",. ,Github.com,., , +,^, ,""Preparing for 3.2.0 release"",. ,Github.com,., , +,^, ,""Rails 4 in 30,',"",. ,blog.wyeworks.com,., , +,^, ,Sean Lynch (2007-12-15). ,""fairleads: Rails 2.0 and Scaffolding Step by Step"",. ,Fairleads.blogspot.com,. Retrieved ,2017-05-24,., , +,^, ,""Archived copy"",. Archived from ,the original, on 2009-07-07,. Retrieved ,2012-12-03,., , +,^, ,Maxcer, Chris. ,""PowerRuby Brings Enterprise Ruby on Rails Support to IBM i"",. iPro Developer. Archived from ,the original, on 9 October 2013,. Retrieved ,9 May, 2014,., , +,^, ,Js_Escape_Map. ,""ActionView::Helpers::JavaScriptHelper"",. ,Api.rubyonrails.org,. Retrieved ,2017-05-24,., , +,^, ,""Rails 3.0: It's ready!"",. rubyonrails.org,. Retrieved ,2010-08-30,. ,Rails 3.0 has been designed to work with Ruby 1.8.7, Ruby 1.9.2, and JRuby 1.5.2+., , +,^, ,""Rails 3.2.0.rc2 has been released!"",. ,Weblog.rubyonrails.org,. 2012-09-01., , +,^, ,""Ruby on Rails: Download"",. RubyonRails.org. Archived from ,the original, on 2009-12-12., , +,^, ,""Getting Started with Rails"",. Rubyonrails.org,. Retrieved ,2014-03-10,., , +,^, ,"","",Ruby on Rails"" Trademark Status"",. ,USPTO,. Retrieved ,2007-08-01,., , +,^, ,"","",Rails"" Trademark Status"",. ,USPTO,. Retrieved ,2007-08-01,., , +,^, ,""Rails Logo Trademark Status"",. ,USPTO,. Retrieved ,2007-08-01,., , +,^ ,a, ,b, ,Forde, Pete (2007-07-23). ,""Beginning Rails: From Novice to Professional"",. Archived from ,the original, on August 5, 2007,. Retrieved ,2007-08-01,., , +,^, ,Cooper, Peter (2007-07-24). ,""David Heinemeier Hansson says No to Use of Rails Logo"",. Retrieved ,2007-08-01,., , +,^, ,""5 Question Interview with Twitter Developer Alex Payne"",. radicalbehavior.com. 2007-03-29. Archived from ,the original, on April 23, 2009,. Retrieved ,2014-11-04,. ,By various metrics Twitter is the biggest Rails site on the net right now. Running on Rails has forced us to deal with scaling issues - issues that any growing site eventually contends with – far sooner than I think we would on another framework., , +,^, ,Steve Jenson; Alex Payne & Robey Pointer interview (2009-04-03). ,""Twitter on Scala"",. artima.com,. Retrieved ,2009-07-18,. ,We had a Ruby-based queuing system that we used for communicating between the Rails front ends and the daemons, and we ended up replacing that with one written in Scala. The Ruby one actually worked pretty decently in a normal steady state, but the startup time and the crash behavior were undesirable., , +,^, ,""Twitter jilts Ruby for Scala"",. theregister.co.uk. 2009-04-01,. Retrieved ,2009-07-18,. ,By the end of this year, Payne said, Twitter hopes to have its entire middleware infrastructure and its APIs ported to the new language. Ruby will remain, but only on the front end. ""We're still happy with Rails for building user facing features... performance-wise, it's fine for people clicking around web pages. It's the heavy lifting, asynchronous processing type of stuff that we've moved away from."", , +,^, ,ryan king (2009-09-25). ,""Twitter on Ruby"",. evan weaver,. Retrieved ,2009-09-29,. ,We use Scala for a few things at Twitter, but the majority of the site is Ruby., , +,^, ,""Twitter Search is Now 3x Faster"",. Twitter,. Retrieved ,June 6,, 2014,., , +,^, ,""Here's Why Ruby On Rails Is Hot"",. Business Insider. Archived from ,the original, on December 21, 2011,. Retrieved ,February 10,, 2012,., , +,^, ,""Ruby on Rails Usage Statistics"",. ,trends.builtwith.com,. Retrieved ,2016-01-04,., , +,^, ,""Ruby on Rails Token Usage Statistics"",. ,trends.builtwith.com,. Retrieved ,2016-01-04,., , +,^, ,Protalinski, Emil. ,""How GitHub handled getting hacked"",. ,Zdnet.com,. Retrieved ,2017-05-24,., , +,^, ,Brook, Chris (2013-09-25). ,""Security Issue in Ruby on Rails Could Expose Cookies"",. ,Threat Post,. The Kaspersky Lab Security News Service,. Retrieved ,2014-06-04,., , +,^, ,""Patching up Web applications"",. ,MIT News,. Retrieved ,2016-04-21,., , +, +, +,Bibliography,[,edit,], +, +, +,Ruby, Sam; Thomas, Dave; Hansson, David (March 28, 2009). ,""Agile Web Development with Rails"", (Third ed.). ,Pragmatic Bookshelf,: 850. ,ISBN, ,1-934356-16-6,., , +,Laurent, Simon St.; Dumbill, Edd (November 28, 2008). ,""Learning Rails"", (First ed.). ,O'Reilly Media,: 442. ,ISBN, ,0-596-51877-3,., , +,Lenz, Patrick (May 1, 2008). ,""Simply Rails 2"", (Second ed.). ,SitePoint,: 450. ,ISBN, ,0-9804552-0-0,., , +,Tate, Bruce; Hibbs, Curt (August 22, 2006). ,""Ruby on Rails: Up and Running"", (First ed.). ,O'Reilly Media,: 182. ,ISBN, ,0-596-10132-5,., , +,Holzner Ph.D., Steve (November 29, 2006). ,""Beginning Ruby on Rails"", (First ed.). ,Wrox,: 380. ,ISBN, ,0-470-06915-5,., , +,Allan Hardy, Jeffrey; Carneiro Jr, Cloves; Catlin, Hampton (July 20, 2007). ,""Beginning Ruby on Rails E-Commerce: From Novice to Professional"", (First ed.). ,Wrox,: 361. ,ISBN, ,1-59059-686-2,., , +,Clark, Mike (May 15, 2008). ,""Advanced Rails Recipes"", (First ed.). Pragmatic Bookshelf: 464. ,ISBN, ,0-9787392-2-1,., , +, +, +,External links,[,edit,], +, +, +, +,Wikibooks has more on the topic of: ,Ruby on Rails, +, +, +, +,Official website, +,The Rails Tutorial, – The Ruby on Rails Tutorial book and screencast series teach you how to develop and deploy Ruby on Rails apps, +,Rails source code, +,Rails guides, +,Rails API, +, +, +, +, +, +, +, +,v, +,t, +,e, +, +, +,Ruby programming language, +, +, +, +,Implementations, +, +, +, +, +,Active, +, +, +, +,Ruby MRI, / ,YARV, +,mruby, +,JRuby, +,Rubinius, +,MagLev, +,RubyMotion, +, +, +, +, +, +,Discontinued, +, +, +, +,MacRuby, +,IronRuby, +,XRuby, +,RubyJS, +,HotRuby, +, +, +, +, +, +, +, +, +, +, +, +,IDE, +, +, +, +,Komodo, +,NetBeans, +,RadRails, +,RubyMine, +, +, +, +, +, +,Applications, +, +, +, +,Capistrano, +,Chef, +,Hackety Hack, +,Homebrew, +,Interactive Ruby Shell, +,Pry, +,Puppet, +,Rake, +,Redmine, +,RSpec, +,RubyGems, +,RVM, +, +, +, +, +, +,Libraries and frameworks, +, +, +, +,Adhearsion, +,Camping, +,eRuby, (RHTML), +,Merb, +,Padrino, +,RubyCocoa, +,Ruby on Rails, +,Shoes, +,Sinatra, +,QtRuby, +, +, +, +, +, +,Server software, +, +, +, +,mod_ruby, +,Mongrel, +,Phusion Passenger, (mod_rails/mod_rack), +,Rack, +,WEBrick, +, +, +, +, +, +,People, +, +, +, +,Yukihiro Matsumoto, +,David Heinemeier Hansson, +,why the lucky stiff, +, +, +, +, +, +,Other, +, +, +, +,Document format, +,why's (poignant) Guide to Ruby, +,Ruby Central, +,RubyKaigi, +,RubyForge, +,Ruby License, +, +, +, +, +, +, +, +, +, ,Category, +, ,Commons, +, +, +, +, +, +, +, +, +, +, +, +, +,v, +,t, +,e, +, +, +,Web frameworks, +, +, +, +, +, +, +,Comparison, +, +, +, +, +, +,C++, +, +, +, +,CppCMS, +,Wt, +, +, +, +, +, +,CLI, +, +, +, +,ASP.NET, +, +,Core, +,AJAX, +,Dynamic Data, +,MVC, +,Razor, +,Web Forms, +, +, +,DNN, +,BFC, +,MonoRail, +,OpenRasta, +,Umbraco, +, +, +, +, +, +,ColdFusion, +, +, +, +,CFWheels, +,ColdBox Platform, +,ColdSpring, +,Fusebox, +,Mach-II, +,Model-Glue, +, +, +, +, +, +,Common Lisp, +, +, +, +,Caveman2, +,CL-HTTP, +,UnCommon Web, +,Weblocks, +, +, +, +, +, +,Haskell, +, +, +, +,Happstack, +,Yesod, +,Snap, +, +, +, +, +, +,Java, +, +, +, +,AppFuse, +,Flexive, +,Grails, +,GWT, +,ICEfaces, +,ItsNat, +,JavaServer Faces, +,JHipster, +,Jspx, +,JWt, +,OpenXava, +,Play, +,Reasonable Server Faces, +,Remote Application Platform, +,RIFE, +,Seam, +,Sling, +,Spring, +,Stripes, +,Struts, +,Tapestry, +,Vaadin, +,Vert.x, +,WebWork, +,Wicket, +,WaveMaker, +,ZK, +, +, +, +, +, +,JavaScript, +, +, +, +,Ample SDK, +,Angular,/,AngularJS, +,Backbone.js, +,Chaplin.js, +,Closure, +,Dojo Toolkit, +,Ember.js, +,Ext JS, +,jQuery, +,Meteor, +,MooTools, +,Node.js, +,OpenUI5, +,Prototype, +,React, +,Rico, +,script.aculo.us, +,Sencha Touch, +,SproutCore, +,Wakanda, +, +, +, +, +, +,Perl, +, +, +, +,Catalyst, +,Dancer, +,Mason, +,Maypole, +,Mojolicious, +,WebGUI, +, +, +, +, +, +,PHP, +, +, +, +,CakePHP, +,CodeIgniter, +,Drupal, +,Fat-Free, +,FuelPHP, +,Flow, +,Gyroscope, +,Horde, +,Kohana, +,Laravel, +,Lithium, +,Midgard, +,MODX, +,Nette, +,Phalcon, +,Pop PHP, +,PRADO, +,ProcessWire, +,Qcodo, +,Silex, +,SilverStripe, +,Symfony, +,TYPO3, +,Xaraya, +,XOOPS, +,Yii, +,Zend Framework, +, +, +, +, +, +,Python, +, +, +, +,BlueBream, +,CherryPy, +,Django, +,Flask, +,Grok, +,Nevow, +,Pyjs, +,Pylons, +,Pyramid, +,Quixote, +,TACTIC, +,Tornado, +,TurboGears, +,web2py, +,Webware, +,Zope 2, +, +, +, +, +, +,Ruby, +, +, +, +,Camping, +,Merb, +,Padrino, +,Ruby on Rails, +,Sinatra, +, +, +, +, +, +,Scala, +, +, +, +,Lift, +,Play, +,Scalatra, +, +, +, +, +, +,Smalltalk, +, +, +, +,AIDA/Web, +,Seaside, +, +, +, +, +, +,Other languages, +, +, +, +,Vibe.d, (,D,), +,Application Express, (,PL/SQL,), +,Grails, (,Groovy,), +,Kepler, (,Lua,), +,Rocket, (,Rust,), +,OpenACS, (,Tcl,), +,Phoenix, (,Elixir,), +,SproutCore, (,JavaScript,-,Ruby,), +,Yaws, (,Erlang,), +, +, +, +, +, +, + + +, +, +, +, +",Ruby on Rails +" 7 January 2018, at 05:36.","Not to be confused with ,David Hanson (computer scientist),., +, +, +, +, +, +, +, +,This article has multiple issues., Please help ,improve it, or discuss these issues on the ,talk page,. ,(,Learn how and when to remove these template messages,), +, +, +, +, +, +, +, +,This article ,is written like a personal reflection or opinion essay, that states a Wikipedia editor's personal feelings about a topic. ,Please ,help improve it, by rewriting it in an ,encyclopedic style,., ,(July 2017), ,(,Learn how and when to remove this template message,), +, +, +, +, +, +, +, +, +, +,This article ,reads like ,a press release, or ,a news article, or ,is entirely based on ,routine coverage,. ,Please ,expand this article, with ,properly sourced content, to meet Wikipedia's ,quality standards,, ,event notability guideline,, or ,encyclopedic content policy,., ,(July 2017), +, +, +, +, +, +, +, +, +, +,The topic of this article ,may not meet Wikipedia's ,notability guideline for biographies,. ,Please help to establish notability by citing ,reliable secondary sources, that are ,independent, of the topic and provide significant coverage of it beyond its mere trivial mention. If notability cannot be established, the article is likely to be ,merged,, ,redirected,, or ,deleted,., +,Find sources:, ,""David Heinemeier Hansson"", – ,news, ,·, ,newspapers, ,·, ,books, ,·, ,scholar, ,·, ,JSTOR, ,(July 2017), ,(,Learn how and when to remove this template message,), +, +, +, +, +, +, +, +, +, +,Some of this article's ,listed sources, ,may not be ,reliable,. ,Please help this article by looking for better, more reliable sources. Unreliable citations may be challenged or deleted., ,(July 2017), ,(,Learn how and when to remove this template message,), +, +, +, +, +, +,(,Learn how and when to remove this template message,), +, +, +, +, +, +,David Heinemeier Hansson, +, +, +, +,Hansson at the 2006 O'Reilly Emerging Technology Conference, +, +, +, +,Born, +,(,1979-10-15,), 15 October 1979 ,(age 38),[1], +,Copenhagen,, ,Denmark, +, +, +,Residence, +,Benahavís,, ,Spain, +, +, +,Other names, +,DHH, +, +, +,Occupation, +,Programmer,[2], +, +, +,Employer, +,Basecamp, +, +, +,Known for, +,Ruby on Rails, +, +, +,Website, +,david,.heinemeierhansson,.com, +, +, +,David Heinemeier Hansson, (born 15 October 1979; known to the ,Ruby, and car racing communities as ,DHH,) is a ,Danish, ,programmer, and the creator of the popular ,Ruby on Rails, ,web development, ,framework, and the ,Instiki wiki,.,[3], He is also a partner at the web-based software development firm ,Basecamp, (formerly ,37signals,)., +,Hansson co-wrote ,Agile Web Development with Rails, with ,Dave Thomas, in 2005 as part of ,The Facets of Ruby Series,. He also co-wrote ,Getting Real,, ,Rework,, and ,Remote, with ,Jason Fried,., +, +, +, +,Contents, +, +, +,1, ,Programming, +,2, ,Personal life, +, +,2.1, ,24 Hours of Le Mans results, +,2.2, ,Complete FIA World Endurance Championship results, +, +, +,3, ,Recognition, +,4, ,See also, +,5, ,References, +,6, ,External links, +, +, +, +,Programming,[,edit,], +,In 1999, Hansson founded and built a Danish online gaming news website and community called Daily Rush, which he ran until 2001.,[4], +,After attracting the attention of ,Jason Fried, by offering him help with PHP coding, Hansson was hired by Fried to build a web-based ,project management, tool, which ultimately became 37signals' ,Basecamp, ,software as a service, product., +,To aid the development process, Hansson used the then-obscure Ruby programming language to develop a custom ,web framework,. He released the framework separately from the project management tool in 2004 as the ,open source, project ,Ruby on Rails,. In 2005, Hansson was recognized by ,Google, and ,O'Reilly, with the ""Hacker of the Year"" award for his creation of Ruby on Rails.,[5], +,After graduating from the ,Copenhagen Business School, and receiving his ,bachelor's degree, in Computer Science and Business Administration, Hansson moved from ,Denmark, to ,Chicago,, Illinois, ,U.S., in November 2005.,[6], +,Personal life,[,edit,], +, +, +,24 Hours of Le Mans, career, +, +, +,Years, +,2012 -, +, +, +,Teams, +,OAK Racing,, ,Aston Martin Racing,, ,Extreme Speed Motorsports,, ,Proton Competition,, ,Rebellion Racing, +, +, +,Best finish, +,8th ,(,2013,), +, +, +,Class wins, +,1, +, +, +,David Heinemeier Hansson lists photography and race car driving amongst his hobbies.,[7], He took part in the ,2012 24 Hours of Le Mans, driving for ,OAK Racing,.,[8], He also drove a Morgan-Nissan P2 car for ,Conquest Racing, in the ,American Le Mans Series, (ALMS), winning two races in the season. Heinemeier Hansson joined OAK Racing full-time in 2013, taking five 2nd-place finishes to finish 2nd in the Trophy for LMP2 Drivers., +,In July 2010 it was revealed that Heinemeier Hansson was the person that had commissioned the one-off ,Pagani Zonda HH, supercar.,[9], He also owns the one-off ,Koenigsegg Agera, HH car.,[10], +,24 Hours of Le Mans results,[,edit,], +, +, +,Year, +,Team, +,Co-Drivers, +,Car, +,Class, +,Laps, +,Pos., +,Class, +Pos., +, +, +,2012, +, ,OAK Racing, +, ,Bas Leinders, +, ,Maxime Martin, +,Morgan LMP2,-,Nissan, +,LMP2, +,341, +,14th, +,7th, +, +, +,2013, +, ,OAK Racing, +, ,Olivier Pla, +, ,Alex Brundle, +,Morgan LMP2,-,Nissan, +,LMP2, +,328, +,8th, +,2nd, +, +, +,2014, +, ,Aston Martin Racing, +, ,Kristian Poulsen, +, ,Nicki Thiim, +,Aston Martin Vantage GTE, +,GTE, +Am, +,334, +,17th, +,1st, +, +, +,2015, +, ,Extreme Speed Motorsports, +, ,Scott Sharp, +, ,Ryan Dalziel, +,Ligier JS P2,-,Honda, +,LMP2, +,329, +,28th, +,10th, +, +, +,2016, +, ,Abu Dhabi-Proton Racing, +, Khaled Al Qubaisi, +, ,Patrick Long, +,Porsche 911 RSR, +,GTE, +Am, +,330, +,28th, +,3rd, +, +, +,2017, +, ,Vaillante Rebellion, +, ,Nelson Piquet Jr., +, ,Mathias Beche, +,Oreca 07,-,Gibson, +,LMP2, +,364, +,DSQ, +,DSQ, +, +, +,Complete FIA World Endurance Championship results,[,edit,], +, +, +,Year, +,Entrant, +,Class, +,Car, +,Engine, +,Tyres, +,1, +,2, +,3, +,4, +,5, +,6, +,7, +,8, +,9, +,Rank, +,Points, +, +, +,2013, +,OAK Racing, +,LMP2, +,Morgan LMP2, +,Nissan, VK45DE 4.5 L V8, +,D, +,SIL, +,2, +,SPA, +,2, +,LMS, +,2, +,SÃO, +,6, +,COA, +,6, +,FUJ, +,3, +,SHA, +,2, +,BHR, +,2, +, +,2nd, +,132.5, +, +, +,2014, +,Aston Martin Racing, +,LMGTE, +Am, +,Aston Martin Vantage V8 GTE, +,Aston Martin, 4.5 L V8, +,M, +,SIL, +,1, +,SPA, +,2, +,LMS, +,1, +,COA, +,2, +,FUJ, +,1, +,SHA, +,2, +,BHR, +,1, +,SÃO, +,2, +, +,1st, +,198, +, +, +,2015, +,Extreme Speed Motorsports, +,LMP2, +,HPD ARX-03b, +,Ligier JS P2, +,Honda, HR28TT 2.8 L Turbo V6, +,D, +,SIL, +,EX, +,SPA, +,8, +,LMS, +,5, +,NÜR, +,6, +,COA, +,4, +,FUJ, +,4, +,SHA, +,Ret, +,BHR, +,7, +, +,7th, +,62, +, +, +,2016, +,Abu Dhabi-Proton Racing, +,LMGTE, +Am, +,Porsche 911 RSR, +,Porsche, 4.0 L Flat-6, +,M, +,SIL, +,5, +,SPA, +,6, +,LMS, +,2, +,NÜR, +,4, +,MEX, +,1, +,COA, +,5, +,FUJ, +,5, +,SHA, +,4, +,BHR, +,1, +,2nd, +,151, +, +, +,2017, +,Vaillante Rebellion, +,LMP2, +,Oreca 07, +,Gibson, GK-428 4.2 litre ,V8, +,D, +,SIL, +,9, +,SPA, +4, +,LMS, +,DSQ, +,NÜR, +,4, +,MEX, +,5, +,COA, +,2, +,FUJ, +,DSQ, +,SHA, +,3, +,BHR, +,3, +,8th, +,85, +, +, +,Recognition,[,edit,], +, +,2005: Won Best Hacker of the Year 2005 at ,OSCON, from ,Google, and ,O'Reilly, for the work on Rails.,[11], +,2006: Accepted the ,Jolt Award, of product excellence for Rails 1.0.,[11], +,2012: Named ,ALMS, Rookie of the year.,[12], +, +,See also,[,edit,], +, +,Basecamp, +, +,References,[,edit,], +, +, +,^, ,David Heinemeier Hansson, ed. (October 2001). ,""Turning Another Year (Loud Thinking)"",. Archived from ,the original, on 1 November 2007,. Retrieved ,2 October, 2007,., , +,^, ,The home screens of 37signals, +,^, ,DHH, interviewed on the TV show Triangulation on the ,TWiT.tv, network, +,^, ,Daily Rush, +,^, ,""Google-O'Reilly Open Source Awards - Hall of Fame"",. Google Code,. Retrieved ,2010-09-03,. ,Best Hacker: David Heinemeier Hansson (Ruby on Rails and 37Signals), , +,^, ,Staff writer (March 9, 2014). ,""David Heinemeier Hansson: Basecamp, Remote and the next big thing"",. eTalks,. Retrieved ,April 30,, 2015,., ,[,permanent dead link,], +,^, ,""DHH weblog"",. Retrieved ,2012-07-02,., , +,^, ,Mercier, Laurent (2012-04-18). ,""L'équipage de la Morgan 2012 LMP2 #35 affiche complet"", [The crew of the #35 LMP2 2012 Morgan sold out]. ,Endurance-Info, (in French). Infomaniak Network SA,. Retrieved ,2012-04-18,., , +,^, ,""Pagani Zonda HH"",. secretentourage.com. August 2010,. Retrieved ,2011-01-02,., , +,^, ,Gary Bonanni (Oct 7, 2014). ,""One-of-a-Kind Koenigsegg Agera HH Spotted"",. ,carbuzz.com,. Retrieved ,7 October, 2014,., , +,^ ,a, ,b, ,About David Heinemeier Hansson, ,Archived, 2011-06-02 at the ,Wayback Machine,.. Loudthinking.com. Retrieved on 2014-05-30., +,^, ,""Archived copy"",. Archived from ,the original, on 2013-06-02,. Retrieved ,2013-06-23,., , +, +, +,External links,[,edit,], +, +,Loud Thinking, - Hansson's weblog, +,37signals, +,Ruby on Rails, +,Video of David Heinemeier Hansson presentation at Startup School, +,David Heinemeier Hansson - The Pareto Principle and Stoic Philosophy, on Developer on Fire, +,David Heinemeier Hansson interview, on the Inside the Net Podcast, +,Martin Fowler and David Heinemeier Hansson interview, on Hanselminutes Podcast, +,David Heinemeier Hansson interview in Danish, on Builder.dk Podcast, +,Podcast interview with David Heinemeier Hansson, on the Web 2.0 Show, +,Ruby on Rails video,[,permanent dead link,], David Heinemeier Hansson explains Ruby on Rails at the university of Roskilde, in 2004, +,Keynote 2007 - RailsConf Europe 2007 - Berlin, +,RailsConf Keynote, on REST. July 9, 2006, +,The Great Surplus - Keynote at RailsConf 2008 - Portland,[,permanent dead link,], +,Living with legacy software - Keynote at RailsConf Europe 2008 - Berlin, +,FLOSS Weekly podcast 79, and its ,transcription, +,Podcast interview with David Heinemeier Hansson, on This Developer's Life, +, +, +, +,Sporting positions, +, +, +,Preceded by, +,Jamie Campbell-Walter, +,Stuart Hall, +,FIA Endurance Trophy for LMGTE Am Drivers, +,2014, ,with:, +,Kristian Poulsen, +,Succeeded by, +,Aleksey Basov, +,Andrea Bertolini, +Viktor Shaitar, +, +, +, +, +, +,Authority control, +, +, +, +,WorldCat Identities, +,VIAF,: ,24888522, +,LCCN,: ,no2006071728, +,ISNI,: ,0000 0001 1609 5882, +,GND,: ,173789617, +,SELIBR,: ,264350, +,SUDOC,: ,097530417, +,BNF,: ,cb150608725, ,(data), +,BIBSYS,: ,5081149, +,NDL,: ,01034410, +,NKC,: ,stk2007383215, +,BNE,: ,XX4895045, +,CiNii,: ,DA1757643X, +, +, +, +, +, +, + + +, +, +, +, +",David Heinemeier Hansson +" 9 January 2018, at 10:32."," +, +, +, +, +, +, +,This article has multiple issues., Please help ,improve it, or discuss these issues on the ,talk page,. ,(,Learn how and when to remove these template messages,), +, +, +, +, +, +, +, +,This article ,relies too much on ,references, to ,primary sources,. ,Please improve this by adding ,secondary or tertiary sources,., ,(September 2015), ,(,Learn how and when to remove this template message,), +, +, +, +, +, +, +, +, +, +,Some of this article's ,listed sources, ,may not be ,reliable,. ,Please help this article by looking for better, more reliable sources. Unreliable citations may be challenged or deleted., ,(September 2015), ,(,Learn how and when to remove this template message,), +, +, +, +, +, +,(,Learn how and when to remove this template message,), +, +, +, +, +, +, +, +, +, +,This article ,has an unclear citation style,. ,The references used may be made clearer with a different or consistent style of ,citation,, ,footnoting,, or ,external linking,. ,Violates Wikipedia:External links: ""Wikipedia articles may include links to web pages outside Wikipedia (external links), but they should not normally be used in the body of an article.""., ,(November 2017), ,(,Learn how and when to remove this template message,), +, +, +, +, +,Laravel, +, +, +, +, +,Developer(s), +,Taylor Otwell, +, +, +,Initial release, +,June 2011,; 6 years ago, (,2011-06,),[1], +, +, +, +, +, +,Stable release, +, +,5.5.0,[2], / August 30, 2017,; 4 months ago, (,2017-08-30,), +, +, +, +, +, +, +,Repository, +, +, +, +,https://github.com/laravel/framework, +, +, +, +, +, +,Development status, +,Active, +, +, +,Written in, +,PHP, 7,[a], +, +, +,Operating system, +,Cross-platform, +, +, +,Type, +,Web framework, +, +, +,License, +,MIT License, +, +, +,Website, +,laravel,.com, +, +, +,Laravel, is a ,free,, open-source,[4], PHP ,web framework,, created by Taylor Otwell and intended for the development of web applications following the ,model–view–controller, (MVC) ,architectural pattern,. Some of the features of Laravel are a modular ,packaging system, with a dedicated dependency manager, different ways for accessing ,relational databases,, utilities that aid in ,application deployment, and maintenance, and its orientation toward ,syntactic sugar,.,[5],[6],:,2,5–9,[7],[8], +,As of March 2015,[update],, Laravel is regarded as one of the most popular ,PHP, frameworks, together with ,Symfony,, Zend, ,CodeIgniter,, ,Yii2, and others.,[6],:,1,[9], +,The ,source code, of Laravel is hosted on ,GitHub, and licensed under the terms of ,MIT License,.,[10], +, +, +, +,Contents, +, +, +,1, ,History, +, +,1.1, ,Release history, +, +, +,2, ,Features, +, +,2.1, ,Featured packages, +,2.2, ,Artisan CLI, +, +, +,3, ,Conferences, +,4, ,Laravel Partners, +,5, ,See also, +,6, ,Notes, +,7, ,References, +,8, ,Further reading, +,9, ,External links, +, +, +, +,History,[,edit,], +,Taylor Otwell created Laravel as an attempt to provide a more advanced alternative to the CodeIgniter framework, which did not provide certain features such as built-in support for user ,authentication, and ,authorization,. Laravel's first ,beta release, was made available on June 9, 2011, followed by the Laravel 1 release later in the same month. Laravel 1 included built-in support for authentication, ,localisation,, ,models,, ,views,, ,sessions,, routing and other mechanisms, but lacked support for ,controllers, that prevented it from being a true ,MVC, framework.,[1], +,Laravel 2 was released in September 2011, bringing various improvements from the author and community. Major new features included the support for controllers, which made Laravel 2 a fully MVC-compliant framework, built-in support for the ,inversion of control, (IoC) principle, and a ,templating system, called ,Blade,. As a downside, support for third-party ,packages, was removed in Laravel 2.,[1], +,Laravel 3 was released in February 2012 with a set of new features including the ,command-line interface, (CLI) named ,Artisan,, built-in support for more ,database management systems,, database migrations as a form of ,version control, for database layouts, support for handling ,events,, and a packaging system called ,Bundles,. An increase of Laravel's userbase and popularity lined up with the release of Laravel 3.,[1], +,Laravel 4, codenamed ,Illuminate,, was released in May 2013. It was made as a complete rewrite of the Laravel framework, migrating its layout into a set of separate packages distributed through ,Composer,, which serves as an ,application-level package manager,. Such a layout improved the extensibility of Laravel 4, which was paired with its official regular release schedule spanning six months between minor ,point releases,. Other new features in the Laravel 4 release include ,database seeding, for the initial population of databases, support for ,message queues,, built-in support for sending different types of email, and support for delayed deletion of database records called ,soft deletion,.,[1],[11],:,18–19, +,Laravel 5 was released in February 2015 as a result of internal changes that ended up in renumbering the then-future Laravel 4.3 release. New features in the Laravel 5 release include support for scheduling periodically executed tasks through a package called ,Scheduler,, an abstraction layer called ,Flysystem, that allows remote storage to be used in the same way as local ,file systems,, improved handling of package assets through ,Elixir,, and simplified externally handled authentication through the optional ,Socialite, package. Laravel 5 also introduced a new internal ,directory tree, structure for developed applications.,[6],:,13–14,[12], +,Laravel 5.1, released in June 2015, is the first release of Laravel to receive ,long-term support, (LTS), with planned availability of ,bug fixes, for two years and ,security patches, for three years. LTS releases of Laravel are planned to be released every two years.,[13], +,Laravel 5.3, released in August 23, 2016, The new features in 5.3 are focused on improving developer speed by adding additional out of the box improvements for common tasks.,[14], ,[15], +,Laravel 5.4, released in January 24, 2017, This release has many new features, like Laravel Dusk, Laravel Mix, Blade Components and Slots, Markdown Emails, Automatic Facades, Route Improvements, Higher Order Messaging for Collections, and many others.,[16], +,Laravel 5.5, released in August 30, 2017, +,Release history,[,edit,], +,For LTS releases, such as Laravel 5.1, bug fixes are provided for 2 years and security fixes are provided for 3 years. These releases provide the longest window of support and maintenance. For general releases, bug fixes are provided for 6 months and security fixes are provided for 1 year.,[17], +, +, +, +,Version, +,Release date, +,Notes, +, +, +,Old version, no longer supported:, 1.0, +,June 2011, +,NA, +, +, +,Old version, no longer supported:, 2.0, +,September 2011, +,NA, +, +, +,Old version, no longer supported:, 3.0, +,February 22, 2012, +,NA, +, +, +,Old version, no longer supported:, 3.1, +,March 27, 2012, +,NA, +, +, +,Old version, no longer supported:, 3.2, +,May 22, 2012, +,NA, +, +, +,Old version, no longer supported:, 4.0, +,May 28, 2013, +,NA, +, +, +,Old version, no longer supported:, 4.1, +,December 11, 2013, +,NA, +, +, +,Old version, no longer supported:, 4.2, +,June 1, 2014, +,NA, +, +, +,Old version, no longer supported:, 5.0, +,February 4, 2015, +,NA, +, +, +,Older version, yet still supported:, 5.1 LTS, +,June 9, 2015, +,NA, +, +, +,Old version, no longer supported:, 5.2, +,December 21, 2015, +,NA, +, +, +,Old version, no longer supported:, 5.3, +,August 23, 2016, +,NA, +, +, +,Older version, yet still supported:, 5.4, +,January 24, 2017, +,NA, +, +, +,Current stable version:, ,5.5 LTS, +,August 30, 2017, +,NA, +, +, +,Future release:, 5.6, +,February, 2018, +,NA, +, +, +, +, +,Legend:, +,Old version, +,Older version, still supported, +,Current stable version, +,Latest preview version, +,Future release, +, +, +,Source: GitHub,[18], +,Features,[,edit,], +,The following features serve as Laravel's key design points (where not specifically noted, descriptions refer to the features of Laravel 3):,[5],[6],:,5–9,[7],[8],[19], +, +,Bundles, provide a modular ,packaging system, since the release of Laravel 3, with bundled features already available for easy addition to applications. Furthermore, Laravel 4 uses Composer as a dependency manager to add framework-agnostic and Laravel-specific PHP packages available from the ,Packagist, repository.,[20], +,Eloquent ORM, (,object-relational mapping,) is an advanced PHP implementation of the ,active record pattern,, providing at the same time internal methods for enforcing constraints on the relationships between ,database, objects. Following the active record pattern, Eloquent ORM presents ,database tables, as ,classes,, with their ,object instances, tied to single ,table rows,.,[21],[22], +,Query builder,, available since Laravel 3, provides a more direct database access alternative to the Eloquent ORM. Instead of requiring ,SQL queries, to be written directly, Laravel's query builder provides a set of classes and ,methods, capable of building queries programmatically. It also allows selectable ,caching, of the results of executed queries.,[23], +,Application logic, is an integral part of developed applications, implemented either by using ,controllers, or as part of the route declarations. The ,syntax, used to define application logic is similar to the one used by ,Sinatra, framework., +,Reverse routing, defines a relationship between the links and routes, making it possible for later changes to routes to be automatically propagated into relevant links. When the links are created by using names of existing routes, the appropriate ,uniform resource identifiers, (URIs) are automatically created by Laravel., +,Restful controllers, provide an optional way for separating the logic behind serving ,HTTP GET, and ,POST, requests., +,Class auto loading, provides automated loading of PHP classes without the need for manual maintenance of inclusion paths. On-demand loading prevents inclusion of unnecessary components, so only the actually used components are loaded., +,View, composers, serve as customizable logical code units that can be executed when a view is loaded., +,Blade, ,templating engine, combines one or more templates with a ,data model, to produce resulting views, doing that by ,transpiling, the templates into cached PHP code for improved performance. Blade also provides a set of its own ,control structures, such as ,conditional statements, and ,loops,, which are internally mapped to their PHP counterparts. Furthermore, Laravel services may be called from Blade templates, and the templating engine itself can be extended with custom directives.,[24],[25], +,IoC containers, make it possible for new objects to be generated by following the ,inversion of control, (IoC) principle, in which the framework calls into the application- or task-specific code, with optional instantiating and referencing of new objects as ,singletons,., +,Migrations, provide a ,version control, system for ,database schemas,, making it possible to associate changes in the application's ,codebase, and required changes in the database layout. As a result, this feature simplifies the ,deployment, and updating of Laravel-based applications.,[26], +,Database seeding, provides a way to populate database tables with selected default data that can be used for application ,testing, or be performed as part of the initial application setup.,[26], +,Unit testing, is provided as an integral part of Laravel,,[11],:,61–62, which itself contains unit tests that detect and prevent ,regressions, in the framework. Unit tests can be run through the provided ,artisan, ,command-line utility,., +,Automatic pagination, simplifies the task of implementing pagination, replacing the usual manual implementation approaches with automated methods integrated into Laravel., +,Form request, is a feature of Laravel 5 that serves as the base for ,form, input validation by internally binding ,event, listeners, resulting in automated invoking of the form validation methods and generation of the actual form.,[27], +,Homestead, - a ,Vagrant, ,virtual machine, that provides Laravel developers with all the tools necessary to develop Laravel straight out of the box, including, ,Ubuntu,, ,Gulp, , Bower and other development tools that are useful in developing full scale web applications.,[28], +, +,Featured packages,[,edit,], +,Ready-to-use bundles provided by Laravel through Composer and Packagist include the following:,[3], +, +,Cashier,, introduced in Laravel 4.2, provides an interface for managing subscription billing services provided by ,Stripe,, such as handling ,coupons, and generating ,invoices,., +,SSH,, introduced in Laravel 4.1, allows programmatic execution of ,CLI, commands on remote servers using the ,Secure Shell, (SSH) as an encrypted ,network protocol,., +,Scheduler,, introduced in Laravel 5.0, is an addition to the Artisan that allows programmatic scheduling of periodically executed tasks. Internally, Scheduler relies on the ,cron, daemon to run a single Artisan job that, in turn, executes the configured tasks., +,Flysystem,, introduced in Laravel 5.0, is a ,file system, abstraction layer that allows local file systems and ,cloud,-based storage services provided by ,Amazon S3, and ,Rackspace Cloud, to be used transparently and in the same way., +,Socialite,, introduced in Laravel 5.0 as an optional package, provides simplified mechanisms for authentication with different ,OAuth, providers, including ,Facebook,, ,Twitter,, ,Google,, ,GitHub, and ,Bitbucket,.,[6],:,13, +, +,Artisan CLI,[,edit,], +,Laravel's ,command-line interface, (CLI), called ,Artisan,, was initially introduced in Laravel 3 with a limited set of capabilities. Laravel's later migration to a Composer-based architecture allowed Artisan to incorporate different components from the ,Symfony, framework, resulting in the availability of additional Artisan features in Laravel 4.,[11],:,73–83,[29], +,The features of Artisan are mapped to different subcommands of the ,artisan, command-line utility, providing functionality that aids in managing and building Laravel-based applications. Common uses of Artisan include managing database migrations and seeding, publishing package assets, and generating ,boilerplate code, for new controllers and migrations; the latter frees the developer from creating proper code ,skeletons,. The functionality and capabilities of Artisan can also be expanded by implementing new custom commands, which, for example, may be used to automate application-specific recurring tasks.,[11],:,73–83,[29], +,Server requirements, +,The Laravel framework has a few system requirements. Of course, all of these requirements are satisfied by the Laravel Homestead virtual machine, so it is highly recommended that you use Homestead as your local Laravel development environment., +,However, if you are not using Homestead, you will need to make sure your server meets the following requirements:, +, + ,• PHP >= 7.0.0, + • OpenSSL PHP Extension + • PDO PHP Extension + • Mbstring PHP Extension + • Tokenizer PHP Extension + • XML PHP Extension +, +,Conferences,[,edit,], +,Laracon, is the official Laravel conference centered around the Laravel framework, covering its development, uses, and related general ,software development, topics. Laracon has taken place in the ,United States,, ,Europe, and online in the past.,[30],[31], Typically, the conference happens in the ,United States, and ,Europe, every year. 2017 was the first year a Laracon was held as an online event only. As of March 2017, there are plans for more Laracons to be held online in the future.,[32], Each year the conference has a different variety of sponsors and organizers, but Laravel, Laravel News and UserScape are usually the primary organizers. As of March 2017,[update],, the following Laracons have been held or are announced:, +, +, +, +, +Taylor Otwell at the 2013 US Laracon, +, +, +, +, +,Date, +,Location, +, +, +,February 22–23, 2013, +,Washington, D.C., +, +, +,August 30–31, 2013,[33], +,Amsterdam, +, +, +,May 15–16, 2014, +,New York City, +, +, +,August 28–30, 2014,[34], +,Amsterdam, +, +, +,August 11–12, 2015,[35], +,Louisville, Kentucky, +, +, +,August 25–26, 2015,[36], +,Amsterdam, +, +, +,July 27–29, 2016,[37], +,Louisville, Kentucky, +, +, +,August 23–24, 2016,[38], +,Amsterdam, +, +, +,March 8, 2017,[39], +,Online, +, +, +,July 25–26, 2017,[40], +,New York City, +, +, +,August 28–30, 2017,[41],[42], +,Amsterdam, +, +, +,Laravel Partners,[,edit,], +,On April 7, 2017, Taylor Otwell announced the Partners section of the Laravel website. The intention was to provide the Laravel community a recommended list of trusted companies who provide best-in-class Laravel development and guidance.,[43], As of September, 2017, the current list of Laravel Partners includes, +, +,Vehikl, +,Tighten Co., +,Kirschbaum Development Group, +, +,See also,[,edit,], +, +, +,Computer programming portal, +,Free software portal, +, +, +, +,Comparison of web frameworks, +,Comparison of web template engines, +, +,Notes,[,edit,], +, +, +, +,^, ,PHP version 5.3.7 or newer is required for Laravel versions 4.1 and older, Laravel 4.2 and 5.0 require at least PHP 5.4, while Laravel 5.1 requires PHP 5.5.9 or newer. Laravel 5.5 requires PHP 7.0.0 or newer.,[3], +, +, +, +,References,[,edit,], +, +, +,^ ,a, ,b, ,c, ,d, ,e, ,Maks Surguy (July 27, 2013). ,""History of Laravel PHP framework, Eloquence emerging"",. ,maxoffsky.com,. Retrieved ,May 10,, 2015,., , +,^, ,""laravel/framework: Release v5.5.0"",. ,github.com,. August 30, 2017,. Retrieved ,August 30,, 2017,., , +,^ ,a, ,b, ,""Laravel documentation (version 5.3): Release notes"",. ,laravel.com,. Retrieved ,August 29,, 2015,., , +,^, ,""The real-time community site Voten goes open-source"",., , +,^ ,a, ,b, ,Daniel Gafitescu (June 6, 2013). ,""Goodbye CodeIgniter, Hello Laravel"",. ,sitepoint.com,. Retrieved ,December 21,, 2013,., , +,^ ,a, ,b, ,c, ,d, ,e, ,Martin Bean (April 2015). ,Laravel 5 Essentials,. ,books.google.com,. ,Packt,. ,ISBN, ,978-1785283017,. Retrieved ,September 2,, 2015,., , +,^ ,a, ,b, ,""Laravel Documentation (versions 3.0–3.2.14)"",. ,three.laravel.com,. Retrieved ,August 30,, 2014,., , +,^ ,a, ,b, ,""Laravel Documentation (version 4.2)"",. ,laravel.com,. Retrieved ,August 30,, 2014,., , +,^, ,Bruno Skvorc (March 28, 2015). ,""Best PHP Framework for 2015 – SitePoint Survey Results"",. ,sitepoint.com,. Retrieved ,June 14,, 2015,., , +,^, ,""laravel/laravel: laravel/readme.md at master"",. ,github.com,. April 22, 2015,. Retrieved ,May 10,, 2015,., , +,^ ,a, ,b, ,c, ,d, ,Raphaël Saunier (January 2014). ,Getting Started with Laravel 4,. ,worldcat.org,. ,Packt,. ,ISBN, ,978-1783287031,. Retrieved ,September 2,, 2015,., , +,^, ,Eric Barnes (January 30, 2015). ,""Laravel 5"",. ,laravel-news.com,. Retrieved ,May 10,, 2015,., , +,^, ,Eric L. Barnes (June 9, 2015). ,""Laravel 5.1 is released"",. ,laravel-news.com,. Retrieved ,June 14,, 2015,., , +,^, ,Eric L. Barnes (August 23, 2016). ,""Laravel  5.3 is now released"",. ,laravel-news.com,. Retrieved ,August 23,, 2016,., , +,^, ,David oscar (August 23, 2016). ,""What's new in laravel  5.3"",. ,digitalsoft.in,. Retrieved ,August 23,, 2016,., , +,^, ,""Laravel 5.4 Is Now Released"",. ,Laravel News,. 2017-01-24,. Retrieved ,2017-02-21,., , +,^, ,""Laravel Documentation: Releases"",. Laravel,. Retrieved ,February 26,, 2017,., , +,^, ,""Github: Laravel"",. Laravel,. Retrieved ,February 26,, 2017,., , +,^, ,Jeffrey Way (November 28, 2012). ,""Why Laravel is Taking the PHP Community by Storm"",. ,code.tutsplus.com,. Retrieved ,May 9,, 2015,., , +,^, ,""Laravel documentation (version 4.2): Package development"",. ,laravel.com,. Retrieved ,August 30,, 2014,., , +,^, ,""Eloquent ORM in Laravel: What and Why!"",. ,enukesoftware.com,. Retrieved ,December 19,, 2014,., , +,^, ,""Develop Faster with the Laravel PHP Framework"",. ,developer.com,. Retrieved ,April 17,, 2015,., , +,^, ,""Laravel documentation (version 4.0): Query builder"",. ,laravel.com,. Retrieved ,April 27,, 2015,., , +,^, ,""Laravel documentation (version 5.1): Blade Templates"",. ,laravel.com,. Retrieved ,June 10,, 2015,., , +,^, ,Dayle Rees (2014). ,""Laravel Blade engine"",. ,daylerees.com,. Retrieved ,June 10,, 2015,., , +,^ ,a, ,b, ,""Laravel documentation (version 5.0): Migrations and seeding"",. ,laravel.com,. Retrieved ,April 27,, 2015,., , +,^, ,Manmeet Anand. ,""Creating a Contact Form in Laravel 5 Using the Form Request Feature!"",. ,tisindia.com,. Retrieved ,March 2,, 2015,., , +,^, ,""Laravel Homestead - Laravel the PHP Framework for Web artisans"",. Retrieved ,30 October, 2016,., , +,^ ,a, ,b, ,Jason Lewis (February 28, 2013). ,""Your One-Stop Guide to Laravel Commands"",. ,code.tutsplus.com,. Retrieved ,May 9,, 2015,., , +,^, ,""Laracon Online | The official worldwide Laravel online conference"",. ,laracon.net,. Retrieved ,2017-03-24,., , +,^, ,""Search Results"",. ,laravel-news.com,. Retrieved ,2017-03-24,., , +,^, ,""Supporting Laravel"",. ,Medium,. 2017-03-13,. Retrieved ,2017-03-24,., , +,^, ,""Laracon EU 2013"",. ,laracon.eu,. Retrieved ,January 2,, 2014,., , +,^, ,""Laracon EU 2014"",. ,laracon.eu,. Retrieved ,August 30,, 2014,., , +,^, ,Eric L. Barnes (January 15, 2015). ,""Laracon 2015 will be in Louisville KY"",. ,laravel-news.com,. Retrieved ,July 9,, 2015,., , +,^, ,""Laracon EU 2015"",. ,laracon.eu,. Retrieved ,July 9,, 2015,., , +,^, ,Eric L. Barnes (January 6, 2016). ,""Laracon tickets are now on sale"",. ,laravel-news.com,. Retrieved ,January 7,, 2016,., , +,^, ,Eric L. Barnes (January 7, 2016). ,""Laracon EU tickets on sale"",. ,laravel-news.com,. Retrieved ,April 7,, 2016,., , +,^, ,""Announcing Laracon Online"",. ,Laravel News,. 2017-02-06,. Retrieved ,2017-03-24,., , +,^, ,""Laracon 2017 – Location and dates have been announced"",. ,Laravel News,. 2016-11-09,. Retrieved ,2017-03-24,., , +,^, ,WebEngineers. ,""Announcing Laracon EU 2017 the official European Laravel conference"",. ,Laracon EU 2017,. Retrieved ,2017-03-24,., , +,^, ,""Laracon EU 2017 is Announced"",. ,Laravel News,. 2017-01-16,. Retrieved ,2017-03-24,., , +,^, ,Otwell, Taylor (2017-04-07). ,""Laravel Partners"",. ,Taylor Otwell,. Retrieved ,2017-09-04,., , +, +, +,[1], +,Further reading,[,edit,], +, +,Laravel Design Patterns and Best Practices, Packt, ,ISBN, ,978-1783287987,, July 2014, by Arda Kılıçdağı and H. İbrahim Yilmaz, +, +,External links,[,edit,], +, +, +, +,Wikimedia Commons has media related to ,Laravel,., +, +, +, +,Official website, +, +, +, +, +, +, +, +, +,v, +,t, +,e, +, +, +,PHP, +, +, +, +,People, +, +, +, +,Andi Gutmans, +,Rasmus Lerdorf, +,Zeev Suraski, +, +, +, +, +, +, +, +, +,Resources, +, +, +, +,Accelerator, (,List,), +,Composer, +,Editors, +,Libraries, +,PEAR, +, +, +, +, +, +,Implementations, +, +, +, +,HHVM, +,HPHPc, +,Parrot, +,Phalanger, +,Project Zero, +,Quercus, +,Zend Engine, +, +, +, +, +, +,Web frameworks, +, +, +, +,CakePHP, +,CodeIgniter, +,Drupal, +,eZ Publish, +,Fat-Free, +,FuelPHP, +,Horde, +,Joomla!, +,Laravel, +,Lithium, +,Midgard, +,MODx, +,Nette Framework, +,Phalcon, +,Pop PHP, +,PRADO, +,Qcodo, +,Silex, +,SilverStripe, +,Symfony, +,TYPO3, +,WordPress, +,Xaraya, +,XOOPS, +,Yii, +,Zend Framework, +,Zeta Components, +, +, +, +, +, +,Testing, +, +, +, +,Behat, +,PHPUnit, +,PHP Unit Testing Framework, +,Lime, (,Symfony,), +, +, +, +, +, +,ORMs, +, +, +, +,Doctrine, +,Propel, +, +, +, +, +, +,IDEs, +, +, +, +,Aptana, +,Codelobster, +,Eclipse PDT, +,NetBeans, +,PHPEdit, +,PhpStorm, +,RadPHP, +,Zend Studio, +, +, +, +, +, +,Widget toolkit, +, +, +, +,PHP-GTK, +,PHP-Qt, +,wxPHP, +, +, +, +, +, +, +, +, +, ,Category, +, ,Commons, +, +, +, +, +, +, +, +, +, +, +, +, +,v, +,t, +,e, +, +, +,Web frameworks, +, +, +, +, +, +, +,Comparison, +, +, +, +, +, +,C++, +, +, +, +,CppCMS, +,Wt, +, +, +, +, +, +,CLI, +, +, +, +,ASP.NET, +, +,Core, +,AJAX, +,Dynamic Data, +,MVC, +,Razor, +,Web Forms, +, +, +,DNN, +,BFC, +,MonoRail, +,OpenRasta, +,Umbraco, +, +, +, +, +, +,ColdFusion, +, +, +, +,CFWheels, +,ColdBox Platform, +,ColdSpring, +,Fusebox, +,Mach-II, +,Model-Glue, +, +, +, +, +, +,Common Lisp, +, +, +, +,Caveman2, +,CL-HTTP, +,UnCommon Web, +,Weblocks, +, +, +, +, +, +,Haskell, +, +, +, +,Happstack, +,Yesod, +,Snap, +, +, +, +, +, +,Java, +, +, +, +,AppFuse, +,Flexive, +,Grails, +,GWT, +,ICEfaces, +,ItsNat, +,JavaServer Faces, +,JHipster, +,Jspx, +,JWt, +,OpenXava, +,Play, +,Reasonable Server Faces, +,Remote Application Platform, +,RIFE, +,Seam, +,Sling, +,Spring, +,Stripes, +,Struts, +,Tapestry, +,Vaadin, +,Vert.x, +,WebWork, +,Wicket, +,WaveMaker, +,ZK, +, +, +, +, +, +,JavaScript, +, +, +, +,Ample SDK, +,Angular,/,AngularJS, +,Backbone.js, +,Chaplin.js, +,Closure, +,Dojo Toolkit, +,Ember.js, +,Ext JS, +,jQuery, +,Meteor, +,MooTools, +,Node.js, +,OpenUI5, +,Prototype, +,React, +,Rico, +,script.aculo.us, +,Sencha Touch, +,SproutCore, +,Wakanda, +, +, +, +, +, +,Perl, +, +, +, +,Catalyst, +,Dancer, +,Mason, +,Maypole, +,Mojolicious, +,WebGUI, +, +, +, +, +, +,PHP, +, +, +, +,CakePHP, +,CodeIgniter, +,Drupal, +,Fat-Free, +,FuelPHP, +,Flow, +,Gyroscope, +,Horde, +,Kohana, +,Laravel, +,Lithium, +,Midgard, +,MODX, +,Nette, +,Phalcon, +,Pop PHP, +,PRADO, +,ProcessWire, +,Qcodo, +,Silex, +,SilverStripe, +,Symfony, +,TYPO3, +,Xaraya, +,XOOPS, +,Yii, +,Zend Framework, +, +, +, +, +, +,Python, +, +, +, +,BlueBream, +,CherryPy, +,Django, +,Flask, +,Grok, +,Nevow, +,Pyjs, +,Pylons, +,Pyramid, +,Quixote, +,TACTIC, +,Tornado, +,TurboGears, +,web2py, +,Webware, +,Zope 2, +, +, +, +, +, +,Ruby, +, +, +, +,Camping, +,Merb, +,Padrino, +,Ruby on Rails, +,Sinatra, +, +, +, +, +, +,Scala, +, +, +, +,Lift, +,Play, +,Scalatra, +, +, +, +, +, +,Smalltalk, +, +, +, +,AIDA/Web, +,Seaside, +, +, +, +, +, +,Other languages, +, +, +, +,Vibe.d, (,D,), +,Application Express, (,PL/SQL,), +,Grails, (,Groovy,), +,Kepler, (,Lua,), +,Rocket, (,Rust,), +,OpenACS, (,Tcl,), +,Phoenix, (,Elixir,), +,SproutCore, (,JavaScript,-,Ruby,), +,Yaws, (,Erlang,), +, +, +, +, +, +, +, +, +,^, ,http://www.mindinventory.com/blog/laravel-the-best-php-framework-for-web-development/, +, +, + + +, +, +, +, +",Laravel +" 17 January 2018, at 04:00."," +,DotNetNuke, +, +, +, +, +,Developer(s), +,DNN Corporation, ,[1], +, +, +, +, +, +,Stable release, +, +,9.1.1,[2], +, +, +, +, +, +, +,Development status, +,Active, +, +, +,Operating system, +,Microsoft Windows, or ,Cloud, +, +, +,Platform, +,ASP.NET, or ,Cloud,[3], +, +, +,Type, +,Web framework, +, +, +,License, +,MIT,[4], +, +, +,Website, +,www,.dnnsoftware,.com, +, +, +,DNN, (formerly ,DotNetNuke,) is a ,web content management system, based on ,Microsoft .NET,. The DNN Platform Edition is ,open source,., +,DNN is written in ,C#,, though it existed for many years as a ,VB.NET, project.,[5],[6], It is distributed under both a Community Edition ,MIT, license ,[4], and commercial proprietary licenses as DNN Evoq Content and DNN Evoq Engage editions., +, +, +, +,Contents, +, +, +,1, ,Editions, +,2, ,Architecture, +, +,2.1, ,Modules, +,2.2, ,Skins, +, +, +,3, ,Hosting, +,4, ,Developer ecosystem community, +,5, ,Project history, +,6, ,See also, +,7, ,References, +,8, ,External links, +, +, +, +,Editions,[,edit,], +,DNN Platform (formerly ""DotNetNuke Community Edition"" ,content management system,) is open source software that is intended to allow management of websites without much technical knowledge, and to be extensible through a large number of third-party apps to provide functionality not included in the ,DNN core modules,. ,Skins, can be used to change the look of a website using DNN., +,There are two commercial editions of the software with increased functionality compared to DNN Platform, and technical support. The DotNetNuke ,Professional Edition, was introduced in February 2009 with version 4.9. In July 2013, DotNetNuke Professional Edition was renamed Evoq Content.,[7], In addition, DotNetNuke Enterprise Edition was renamed Evoq Content: Enterprise.,[8], Evoq version 9.0 was released in December 2016.,[9], +,Architecture,[,edit,], +, +, +, +, +DNN uses a three-tier architecture model., +, +, +,DotNetNuke uses a three-tier architecture model with a core framework providing support to the extensible modular structure., +,While traditionally DNN focused on providing server side functionality, recent projects strive to enhance client side experiences - along with the rest of the industry.,[10], In recent years DNN migrated from using exclusively ,Web Forms, to also allowing ,Model View Controller, and ,Single-page application, architectures.,[11], In the future, DNN faces the challenge of moving from ,ASP.NET, 4.6 to the cross-platform free and open source ,.NET Core,., +,DNN can be extended using 3rd-party modules and providers that add functionality at the server or client side. The appearance of individual pages and sites can be customized using skins.,[12], +,Modules,[,edit,], +, +, +, +, +DotNetNuke modules., +, +, +,The default functionality of DNN can be expanded by adding third-party modules, either from an existing module store,,[13], from 3rd party authors,,[14], or through ,in-house development, of custom functionality.,[15], The DNN framework provides basic functionality such as ,security,, user administration, and ,content management,, while modules are used to tailor the web site for specific deployment needs.,[16], +,A set of primary modules are included with the core DNN distribution. These modules provide the functionality required to create an e-commerce system, an intranet, a public web site or a custom web application. They are maintained by a volunteer team community. In 2015 and 2016 most projects were moved from the DotNetNuke Community Forge,[17], to GitHub.,[18], +,Web pages have skins which define regions of a page (plus their appearance) where page editors can place modules (or extensions) made available by site administrators. Pages and modules can inherit or set custom access permissions that define which groups of users can view or edit each item., +,Module can be created in various ways: compiled modules use the Web Application Project model and are written in C# or VB.NET,,[19], dynamic modules use the Web Site Project model, and ,Razor, modules which use a C# or VB.NET scripting language.,[20], +,Skins,[,edit,], +,A skinning architecture provides a ,separation of presentation and content,, enabling a web designer to develop skins without requiring any specialist knowledge of development in ASP.NET: only knowledge of ,HTML, and an understanding of how to prepare and package the skins themselves is required. Skins consist of basic HTML files with placeholders (,tokens,) for content, menus and other functionality, along with support files such as images, ,style sheets, and ,JavaScript,, packaged in a ,ZIP file,.,[21], +,Upon Microsoft's release of the ,.NET Framework version 2,, Microsoft had included functionality known as master pages. The principal idea behind master pages was to encourage ,code recycling, and consistent design and aesthetics throughout a site by creating a master page with placeholders, which at ,runtime, would be ,compiled, and replaced by content., +,Like modules, skins, can be uploaded and automatically installed through the administration pages. If the compiled skin does not contain an ASP.NET user control file, then the DNN skinning engine builds one based on various tokens included in the HTML file which refer to various sections, placeholders and/or modules of a DNN-produced page. Modern skins incorporate CSS3 and HTML5,[22], with many authors' skins supporting ,Responsive web design,, various ,JavaScript libraries,. With no credentialing, a skin's quality may vary, but often trial periods are available to evaluate functionality., +,Hosting,[,edit,], +,DNN 7.0 and above has a minimum requirement of Windows Vista, ,SQL Server, 2008, and ,.NET, 4.0 and ,IIS, 7+. These product's latest versions are supported.,[23], As of version 6.0, DNN can also be installed in an ,Azure, ,cloud computing, environment.,[24], Numerous web hosting companies offer DNN as an offering, and a 1 step installation process is available through Microsoft.,[25], However DNN's requirement for an IIS medium trust environment has prevented broader adoption,[26], among some mainstream hosting companies., +,Developer ecosystem community,[,edit,], +,DNNSoftware.com has over 1 million registered members as of November 2013 and is used on some 750,000 websites globally.,[27], Support for the Community Edition of DotNetNuke is provided by community members and developers can participate in the open-source project on GitHub.,[28], +,API, reference documents for modules,[29], and skins,[30], are available, although as of 2013, some documentation was still available only in task-oriented form.,[31], A Wiki has been created to address this weakness, with 400 wiki pages as of May 2014.,[32], +,Project history,[,edit,], +,The DotNetNuke application originally evolved out of another project, the IBuySpy Workshop.,[33], The IBuySpy Workshop application had been created by Shaun Walker ,[34], as an enhancement to the IBuySpy Portal that started as a sample application for the ,.NET Framework,. Early versions of DotNetNuke were released by Walker's company, Perpetual Motion Inc, while later development was expanded by the open source community.,[,citation needed,], +,The name DotNetNuke was coined by Walker by combining the term ,.NET, with the word ""nuke"", which had been popular with pre-existing frameworks such as ,PHP-Nuke, and PostNuke.,[35], The term DotNetNuke and DNN are registered trademarks in the US (Search USPTO,[36],) and Canada.,[37],[38], +,In September 2006, four members of the project's board of directors formed a corporation to oversee the development of the project. The new DotNetNuke Corporation was co-founded by Walker,,[39], Joe Brinkman,,[40], Nik Kalyani,,[41], and Scott Willhite,[42], and replaced Perpetual Motion Interactive Systems Inc. as the corporate entity behind the project.,[43], +,On November 25, 2008, DotNetNuke announced ,Series A, financing from Sierra Ventures and ,August Capital,, and in February 2009, after hiring Navin Nagiah as CEO, a Professional Edition version of DotNetNuke has been released for business and enterprise customers. In February 2010 DotNetNuke announced a Series B financing from Sierra Ventures, ,August Capital,, and Pelion Venture Partners.,[44], +,In August 2009 a partner program was launched by DotNetNuke Corporation, aimed at providing support to the web design and development companies that build web sites using DotNetNuke. DotNetNuke Corporation also announced the acquisition of Snowcovered, an online market for DotNetNuke modules, skins, services and related products.,[45], +,In October 2009, the 2009 Open Source CMS Market Share Report concluded that DotNetNuke was the leading .NET-based open source web content management system.,[46], +,In 2013, the company was renamed to ,DNN Corporation,.,[47], +,See also,[,edit,], +, +,List of content management systems, (CMS), +, +,References,[,edit,], +, +, +,^, ,""Web CMS - Online Community Software - DNN (DotNetNuke)"",. ,dnnsoftware.com,., , +,^, ,""Releases · dnnsoftware_Dnn.Platform"",. ,GitHub,. GitHub,. Retrieved ,27 September, 2017,., , +,^, ,Pranav Singh (2013-06-04). ,""Deploying DotNetNuke on Windows Azure"",. CodeProject,. Retrieved ,2017-04-05,., , +,^ ,a, ,b, ,""DNN CMS Platform - License"",. ,Dotnetnuke.codeplex.com,. Retrieved ,2017-04-05,., , +,^, ,""DotNetNuke Switches to C# !! >"",. DNN Software. 2011-02-28,. Retrieved ,2017-04-05,., , +,^, ,a (2007-05-11). ,""A conversion of the popular DotNetNuke web application to C#"",. CodeProject,. Retrieved ,2017-04-05,., , +,^, ,""DNN Expands Product Suite, Services and SaaS Offering With DNN Evoq"",. DNN Corp,. Retrieved ,14 Aug, 2013,., , +,^, ,Mosher, Barb (2013-07-09). ,""DotNetNuke Rebrands to DNN Evoq, Focuses on Business Solutions + Platform"",. ,Cmswire.com,. Retrieved ,2017-04-05,., , +,^, ,""New CMS Features in Evoq 9"",. ,DNNSoftware,. DNN Corp,. Retrieved ,6 March, 2017,., , +,^, ,""Client Resource Management API"",. ,Dnnsoftware.com,. Retrieved ,2017-04-05,., , +,^, ,""DNN Loves MVC: 1 - Introduction"",. ,Charlesnurse.com,. 2015-03-28,. Retrieved ,2017-04-05,., , +,^, ,""DotNetNuke - the easy way to an ASP.NET website - .NET tutorial"",. Developer Fusion. 2010-06-28,. Retrieved ,2017-04-05,., , +,^, ,""The Official DNN Store - Modules, Skins and Extensions"",. ,Store.dnnsoftware.com,. 2017-02-11,. Retrieved ,2017-04-05,., , +,^, ,""DNN Community"",. ,Github.com,. Retrieved ,2017-04-05,., , +,^, ,""DotNetNuke 4 - Module Developers Guide - Chapter 1"",. ,Adefwebserver.com,. Retrieved ,2017-04-05,., , +,^, ,""Amazon.com: dnn and dotnetnuke"",. ,Smile.amazon.com,. Retrieved ,2017-04-05,., , +,^, ,""NET Forge CMS, Extensible CMS - DNN Software Forge"",. ,Dotnetnuke.com,. 2017-01-28,. Retrieved ,2017-04-05,., , +,^, ,""Why DNN Community Extensions have Moved to GitHub"",. ,Github.com,. 2015-02-20,. Retrieved ,2017-04-05,., , +,^, ,""DotNetNuke Development | DNN Developer | DNN Experts, DNN Module Development, DNN Skins India"",. ,Swayamsoft.com,. Retrieved ,2017-04-05,., , +,^, ,""Build CMS, Building a Product Roadmap, CMS Development Tools"",. ,Dnnsoftware.com,. 2017-01-28,. Retrieved ,2017-04-05,., , +,^, ,""Top 5 DotNetNuke Manifest file Module Packaging Tips"",. iFinity,. Retrieved ,2017-04-05,., , +,^, ,""How to Create a Responsive HTML5 Skin for DotNetNuke"",. ,Dnncreative.com,. Retrieved ,2017-04-05,., , +,^, ,""DNN Cloud Demo - Install DNN Software | DNN DotNetNuke"",. ,Dnnsoftware.com,. 2017-01-28,. Retrieved ,2017-04-05,., , +,^, ,""DotNetNuke in Azure Cloud"",. Elinext. 2012-04-14,. Retrieved ,2017-04-05,., , +,^, ,""Microsoft Web Platform"",. ,Microsoft.com,. Retrieved ,2017-04-05,., , +,^, ,""Installing DotNetNuke 4.9.0 on Medium Trust Webservers"",. ,Programmersanonymous.net,. Retrieved ,2017-04-05,., , +,^, ,""DNN CMS Platform - Home"",. ,Dotnetnuke.codeplex.com,. Retrieved ,2017-04-05,., , +,^, ,""dnnsoftware/Dnn.Platform: DNN Corp Platform Repository"",. GitHub,. Retrieved ,2017-04-05,., , +,^, ,""DNN API Endpoint Documentation"",. ,Endpoint.dnnapi.dnnsharp.com,. Retrieved ,2017-04-05,., , +,^, ,""DNN Skinning Reference | DNN Skinning Tool | Dot Net Nuke Skinning"",. ,10poundgorilla.com,. Retrieved ,2017-04-05,., , +,^, ,""About DNN - DNN Company Overview | DNN"",. DotNetNuke,. Retrieved ,2017-04-05,., , +,^, ,""CMS Wiki, Content Management Wiki"",. DNN Software. 2017-01-28,. Retrieved ,2017-04-05,., , +,^, ,""Open Source CMS Project History - DNN CMS & Online Community Software"",. ,dotnetnuke.com,., , +,^, ,Book: Building Websites with DotNetNuke 5, Michael Washington and Ian Lackey, Packt Publishing. Page 14 ""The core team comprises individuals invited to join the team by Shaun Walker, whom they affectionately call the ""Benevolent Dictator""."", +,^, ,""About DNN - DNN Company Overview - DNN (DotNetNuke)"",. ,dotnetnuke.com,., , +,^, ,""Trademark Electronic Search System (TESS)"",. ,uspto.gov,., , +,^, ,""Basic search: 1192080 - Canadian trade-marks database - Intellectual property and copyright - Canadian Intellectual Property Office - Industry Canada"",. ,ic.gc.ca,., , +,^, ,""Basic search: 1256752 - Canadian trade-marks database - Intellectual property and copyright - Canadian Intellectual Property Office - Industry Canada"",. ,ic.gc.ca,., , +,^, ,[1],[,permanent dead link,], +,^, ,[2],[,permanent dead link,], +,^, ,[3],[,permanent dead link,], +,^, ,[4],[,permanent dead link,], +,^, ,""About DNN - DNN Company Overview - DNN (DotNetNuke)"",. ,dotnetnuke.com,., , +,^, ,""DotNetNuke Raises $8 Million"",. PE Hub. 2010-02-09,. Retrieved ,2017-04-05,., , +,^, ,""DotNetNuke Buys Snowcovered"",. ,Silicontap.com,. 2009-08-27,. Retrieved ,2017-04-05,., , +,^, ,""Archived copy"",. Archived from ,the original, on 2010-06-18,. Retrieved ,2010-06-15,., , +,^, ,Shaun Walker. ,""DNN: The Metamorphosis Continues.."", ,DNN Software,., , +, +, +,External links,[,edit,], +, +,DNN Corp., - The official DNN Corp Site, +,Comparison of Evoq with other CMS systems, +,DNN Plus., - DNN Persian Site, +,DotNetNuke Development, - Content Management System, +, +, +, +, +, +, +, +,v, +,t, +,e, +, +, +,Web frameworks, +, +, +, +, +, +, +,Comparison, +, +, +, +, +, +,C++, +, +, +, +,CppCMS, +,Wt, +, +, +, +, +, +,CLI, +, +, +, +,ASP.NET, +, +,Core, +,AJAX, +,Dynamic Data, +,MVC, +,Razor, +,Web Forms, +, +, +,DNN, +,BFC, +,MonoRail, +,OpenRasta, +,Umbraco, +, +, +, +, +, +,ColdFusion, +, +, +, +,CFWheels, +,ColdBox Platform, +,ColdSpring, +,Fusebox, +,Mach-II, +,Model-Glue, +, +, +, +, +, +,Common Lisp, +, +, +, +,Caveman2, +,CL-HTTP, +,UnCommon Web, +,Weblocks, +, +, +, +, +, +,Haskell, +, +, +, +,Happstack, +,Yesod, +,Snap, +, +, +, +, +, +,Java, +, +, +, +,AppFuse, +,Flexive, +,Grails, +,GWT, +,ICEfaces, +,ItsNat, +,JavaServer Faces, +,JHipster, +,Jspx, +,JWt, +,OpenXava, +,Play, +,Reasonable Server Faces, +,Remote Application Platform, +,RIFE, +,Seam, +,Sling, +,Spring, +,Stripes, +,Struts, +,Tapestry, +,Vaadin, +,Vert.x, +,WebWork, +,Wicket, +,WaveMaker, +,ZK, +, +, +, +, +, +,JavaScript, +, +, +, +,Ample SDK, +,Angular,/,AngularJS, +,Backbone.js, +,Chaplin.js, +,Closure, +,Dojo Toolkit, +,Ember.js, +,Ext JS, +,jQuery, +,Meteor, +,MooTools, +,Node.js, +,OpenUI5, +,Prototype, +,React, +,Rico, +,script.aculo.us, +,Sencha Touch, +,SproutCore, +,Wakanda, +, +, +, +, +, +,Perl, +, +, +, +,Catalyst, +,Dancer, +,Mason, +,Maypole, +,Mojolicious, +,WebGUI, +, +, +, +, +, +,PHP, +, +, +, +,CakePHP, +,CodeIgniter, +,Drupal, +,Fat-Free, +,FuelPHP, +,Flow, +,Gyroscope, +,Horde, +,Kohana, +,Laravel, +,Lithium, +,Midgard, +,MODX, +,Nette, +,Phalcon, +,Pop PHP, +,PRADO, +,ProcessWire, +,Qcodo, +,Silex, +,SilverStripe, +,Symfony, +,TYPO3, +,Xaraya, +,XOOPS, +,Yii, +,Zend Framework, +, +, +, +, +, +,Python, +, +, +, +,BlueBream, +,CherryPy, +,Django, +,Flask, +,Grok, +,Nevow, +,Pyjs, +,Pylons, +,Pyramid, +,Quixote, +,TACTIC, +,Tornado, +,TurboGears, +,web2py, +,Webware, +,Zope 2, +, +, +, +, +, +,Ruby, +, +, +, +,Camping, +,Merb, +,Padrino, +,Ruby on Rails, +,Sinatra, +, +, +, +, +, +,Scala, +, +, +, +,Lift, +,Play, +,Scalatra, +, +, +, +, +, +,Smalltalk, +, +, +, +,AIDA/Web, +,Seaside, +, +, +, +, +, +,Other languages, +, +, +, +,Vibe.d, (,D,), +,Application Express, (,PL/SQL,), +,Grails, (,Groovy,), +,Kepler, (,Lua,), +,Rocket, (,Rust,), +,OpenACS, (,Tcl,), +,Phoenix, (,Elixir,), +,SproutCore, (,JavaScript,-,Ruby,), +,Yaws, (,Erlang,), +, +, +, +, +, +, + + +, +, +, +, +",DotNetNuke +" 2 January 2018, at 02:25.","For other uses, see ,Django,., +, +,Django, +, +, +, +, +, +, +, +,Original author(s), +,Lawrence Journal-World, +, +, +,Developer(s), +,Django Software Foundation, +, +, +,Initial release, +,21 July 2005,; 12 years ago, (,2005-07-21,),[1], +, +, +, +, +, +,Stable release, +,2.0.1,[2], ,(1 January 2018,; 21 days ago, (,2018-01-01,),), ,[±], +, +, +,Preview release, +,2.0 release candidate 1,[3], ,[±], +, +, +, +, +, +,Repository, +, +, +, +,https://github.com/django/django, +, +, +, +, +, +,Development status, +,Active, +, +, +,Written in, +,Python, +, +, +,Size, +,7.6 ,MB,[4], +, +, +,Type, +,Web framework, +, +, +,License, +,3-clause BSD, +, +, +,Website, +,www,.djangoproject,.com, +, +, +,Django, (,/,ˈ,dʒ,æ,ŋ,ɡ,oʊ,/, ,JANG,-goh,),[5], is a ,free and open-source, ,web framework,, written in ,Python,, which follows the model-view-template (MVT) ,architectural pattern,.,[6],[7], It is maintained by the ,Django Software Foundation, (DSF), an independent organization established as a ,501(c)(3), non-profit., +,Django's primary goal is to ease the creation of complex, database-driven websites. Django emphasizes ,reusability, and ""pluggability"" of components, rapid development, and the principle of ,don't repeat yourself,. Python is used throughout, even for settings files and data models. Django also provides an optional administrative ,create, read, update and delete, interface that is generated dynamically through ,introspection, and configured via admin models., +,Some well-known sites that use Django include the ,Public Broadcasting Service,,,[8], ,Instagram,,,[9], ,Mozilla,,,[10], ,The Washington Times,,,[11], ,Disqus,,,[12], ,Bitbucket,,,[13], and ,Nextdoor,.,[14], It was used on ,Pinterest,,,[15], but later the site moved to a framework built over ,Flask,.,[16], +, +, +, +,Contents, +, +, +,1, ,History, +,2, ,Features, +, +,2.1, ,Components, +,2.2, ,Bundled applications, +,2.3, ,Extensibility, +,2.4, ,Server arrangements, +, +, +,3, ,Version history, +,4, ,Development tools with Django support, +,5, ,Community, +,6, ,Ports to other languages, +,7, ,Bibliography, +,8, ,See also, +,9, ,References, +,10, ,External links, +, +, +, +,History,[,edit,], +,Django was created in the fall of 2003, when the ,web programmers, at the ,Lawrence Journal-World, newspaper, ,Adrian Holovaty, and ,Simon Willison,, began using Python to build applications.,[17], It was released publicly under a ,BSD license, in July 2005. The framework was named after guitarist ,Django Reinhardt,.,[17], +,In June 2008, it was announced that a newly formed ,Django Software Foundation, (DSF) would maintain Django in the future.,[18], +,Features,[,edit,], +,Components,[,edit,], +, +, +, +, +Screenshot of the Django admin interface for modifying a user account., +, +, +,Despite having its own nomenclature, such as naming the callable objects generating the ,HTTP, responses ""views"",,[6], the core Django framework can be seen as an ,MVC, architecture.,[7], It consists of an ,object-relational mapper, (ORM) that mediates between ,data models, (defined as Python classes) and a ,relational database, ("",M,odel""), a system for processing HTTP requests with a ,web templating system, ("",V,iew""), and a ,regular-expression,-based ,URL, dispatcher ("",C,ontroller"")., +,Also included in the core framework are:, +, +,a lightweight and standalone web server for development and testing, +,a form serialization and validation system that can translate between ,HTML, forms and values suitable for storage in the database, +,a template system that utilizes the concept of ,inheritance, borrowed from object-oriented programming, +,a ,caching, framework that can use any of several cache methods, +,support for ,middleware, classes that can intervene at various stages of request processing and carry out custom functions, +,an internal dispatcher system that allows components of an application to communicate events to each other via pre-defined signals, +,an ,internationalization, system, including translations of Django's own components into a variety of languages, +,a ,serialization, system that can produce and read ,XML, and/or ,JSON, representations of Django model instances, +,a system for extending the capabilities of the template engine, +,an interface to Python's built-in ,unit test, framework, +, +,Bundled applications,[,edit,], +,The main Django distribution also bundles a number of applications in its ""contrib"" package, including:, +, +,an extensible authentication system, +,the dynamic administrative interface, +,tools for generating ,RSS, and ,Atom, syndication feeds, +,a site's framework that allows one Django installation to run multiple websites, each with their own content and applications, +,tools for generating ,Google Sitemaps, +,built-in mitigation for ,cross-site request forgery,, ,cross-site scripting,, ,SQL injection,, ,password cracking, and other typical web attacks, most of them turned on by default,[19],[20], +,a framework for creating ,GIS, applications, +, +,Extensibility,[,edit,], +, +, +, +, +, +, +,This section ,relies too much on ,references, to ,primary sources,. ,Please improve this section by adding ,secondary or tertiary sources,., ,(January 2015), ,(,Learn how and when to remove this template message,), +, +, +, +,Django's configuration system allows third party code to be plugged into a regular project, provided that it follows the reusable app,[21], conventions. More than 2500 packages,[22], are available to extend the framework's original behavior, providing solutions to issues the original tool didn't tackle: registration, search, ,API, provision and consumption, ,CMS,, etc., +,This extensibility is, however, mitigated by internal components dependencies. While the Django philosophy implies loose coupling,,[23], the template filters and tags assume one engine implementation, and both the auth and admin bundled applications require the use of the internal ,ORM,. None of these filters or bundled apps are mandatory to run a Django project, but reusable apps tend to depend on them, encouraging developers to keep using the official stack in order to benefit fully from the apps ecosystem., +,Server arrangements,[,edit,], +,Django can be run in conjunction with ,Apache,, ,Nginx, using ,WSGI,, ,Gunicorn,, or ,Cherokee, using flup (a Python module).,[24],[25], Django also includes the ability to launch a ,FastCGI, server, enabling use behind any web server which supports FastCGI, such as ,Lighttpd, or ,Hiawatha,. It is also possible to use other ,WSGI,-compliant web servers.,[26], Django officially supports four database backends: ,PostgreSQL,, ,MySQL,, ,SQLite,, and ,Oracle,. ,Microsoft SQL Server, can be used with django-mssql on ,Microsoft, ,operating systems,,,[27], while similarly external backends exist for ,IBM Db2,,,[28], ,SQL Anywhere,[29], and ,Firebird,.,[30], There is a ,fork, named django-nonrel, which supports ,NoSQL, databases, such as ,MongoDB, and ,Google App Engine,'s Datastore.,[31], +,Django may also be run in conjunction with ,Jython, on any ,Java EE, application server such as ,GlassFish, or ,JBoss,. In this case django-jython must be installed in order to provide ,JDBC, drivers for database connectivity, which also can provide functionality to compile Django in to a .war suitable for deployment.,[32], +,Google App Engine, includes support for Django version 1.x.x,[33], as one of the bundled frameworks., +,Version history,[,edit,], +,The Django team will occasionally designate certain releases to be “Long-term support” (LTS) releases.,[34], LTS releases will get security and data loss fixes applied for a guaranteed period of time, typically 3+ years, regardless of the pace of releases afterwards., +, +, +,Version, +,Date,[35], +,Notes,[36], +, +, +,Old version, no longer supported:, 0.90,[37], +,000000002005-11-16-0000,16 Nov 2005, +, +, +, +,Old version, no longer supported:, 0.91,[38], +,000000002006-01-11-0000,11 Jan 2006, +,""new-admin"", +, +, +,Old version, no longer supported:, 0.95,[39], +,000000002006-07-29-0000,29 Jul 2006, +,""magic removal"", +, +, +,Old version, no longer supported:, 0.96,[40], +,000000002007-03-23-0000,23 Mar 2007, +,""newforms"", testing tools, +, +, +,Old version, no longer supported:, 1.0,[41], +,000000002008-09-03-0000,3 Sep 2008, +,API stability, decoupled admin, unicode, +, +, +,Old version, no longer supported:, 1.1,[42], +,000000002009-07-29-0000,29 Jul 2009, +,Aggregates, transaction based tests, +, +, +,Old version, no longer supported:, 1.2,[43], +,000000002010-05-17-0000,17 May 2010, +,Multiple db connections, ,CSRF,, model validation, +, +, +,Old version, no longer supported:, 1.3,[44], +,000000002011-03-23-0000,23 Mar 2011, +,Class based views, staticfiles, +, +, +,Old version, no longer supported:, 1.4 LTS,[45], +,000000002012-03-23-0000,23 Mar 2012, +,Timezones, in browser testing, app templates., +, +, +,Old version, no longer supported:, 1.5,[46], +,000000002013-02-26-0000,26 Feb 2013, +,Python 3 Support, configurable user model, +, +, +,Old version, no longer supported:, 1.6,[47], +,000000002013-11-06-0000,6 Nov 2013, +,Dedicated to Malcolm Tredinnick, db transaction management, connection pooling., +, +, +,Old version, no longer supported:, 1.7,[48], +,000000002014-09-02-0000,2 Sep 2014, +,Migrations, application loading and configuration., +, +, +,Older version, yet still supported:, 1.8 LTS,[49], +,000000002015-04-01-0000,1 Apr 2015, +,Native support for multiple template engines. ,Supported until at least April 2018, +, +, +,Old version, no longer supported:, 1.9,[50], +,000000002015-12-01-0000,1 Dec 2015, +,Automatic password validation. New styling for admin interface., +, +, +,Old version, no longer supported:, 1.10,[51], +,000000002016-08-01-0000,1 Aug 2016, +,Full text search for PostgreSQL. New-style middleware., +, +, +,Older version, yet still supported:, 1.11 LTS,[52], +,000000002017-04-04-0000,4 Apr 2017, +,Last version to support Python 2.7. ,Supported until at least April 2020, +, +, +,Current stable version:, ,2.0,[53], +,000000002017-12-01-0000,Dec 2017, +,First Python 3-only release, Simplified URL routing syntax, Mobile friendly admin., +, +, +,Future release:, 2.1,[53], +,000000002018-08-01-0000,Aug 2018, +, +, +, +,Future release:, 2.2 LTS,[53], +,000000002019-04-01-0000,Apr 2019, +,Supported until at least April 2022, +, +, +,Future release:, 3.0,[53], +,000000002019-12-01-0000,Dec 2019, +, +, +, +,Future release:, 3.1,[53], +,000000002020-08-01-0000,Aug 2020, +, +, +, +,Future release:, 3.2 LTS,[53], +,000000002021-04-01-0000,Apr 2021, +,Supported until at least April 2024, +, +, +, +, +,Legend:, +,Old version, +,Older version, still supported, +,Latest version, +,Latest preview version, +,Future release, +, +, +, +, +, +,Development tools with Django support,[,edit,], +,For developing a Django project, no special tools are necessary, since the source code can be edited with any conventional ,text editor,. Nevertheless, editors specialized on ,computer programming, can help increase the productivity of development, e.g. with features such as ,syntax highlighting,. Since Django is written in Python, text editors which are aware of Python syntax are beneficial in this regard., +,Integrated development environments, (IDE) add further functionality, such as debugging, refactoring, unit testing, etc. As with plain editors, IDEs with support for Python can be beneficial. Some IDEs that are specialized on Python additionally have integrated support for Django projects, so that using such an IDE when developing a Django project can help further increase productivity. For comparison of such Python IDEs, see the main article:, +,Main article: ,Comparison of integrated development environments § Python, +,Community,[,edit,], +,There is a semiannual conference for Django developers and users, named ""DjangoCon"", that has been held since September 2008. DjangoCon is held annually in Europe, in May or June;,[54], while another is held in the United States in August or September, in various cities.,[55], The 2012 DjangoCon took place in Washington D.C. from 3 to 8 September. 2013 DjangoCon was held in Chicago at the Hyatt Regency Hotel and the post-conference ,Sprints, were hosted at Digital Bootcamp, computer training center.,[56], The 2014 DjangoCon US returned to Portland, OR from 30 August to 6 September. The 2015 DjangoCon US was held in Austin, TX from 6 to 11 September at the AT&T Executive Center. The 2016 DjangoCon US was held in Philadelphia, PA at The ,Wharton School of the University of Pennsylvania, from 17 to 22 July.,[57], +,Django mini-conferences were held in ,Hobart,, Australia in July 2013, in ,Brisbane,, Australia in August 2014 and 2015, and in ,Melbourne,, Australia in 2016.,[58], +,Ports to other languages,[,edit,], +,Programmers have ported Django's template design from Python to other languages, providing decent cross-platform support. Some of these options are more direct ports; others, though inspired by Django and retaining its concepts, take the liberty to deviate from Django's design:, +, +,Liquid for ,Ruby,[59], +,Template::Swig for ,Perl,[60], +,Twig for ,PHP,[61], +,Jinja for ,Python,[62], +,ErlyDTL for ,Erlang,[63], +, +,Bibliography,[,edit,], +, +, +,Roy Greenfeld, Daniel; Roy Greenfeld, Audrey (2015), ,Two Scoops of Django: Best Practices for Django 1.8, (3rd ed.), Two Scoops Press, p. 531, ,ISBN, ,0981467342, , +,Jaiswal, Sanjeev; Kumar, Ratan (22 June 2015), ,Learning Django Web Development, (1st ed.), Packt, p. 405, ,ISBN, ,1783984406, , +,Ravindrun, Arun (31 March 2015), ,Django Design Patterns and Best Practices, (1st ed.), Packt, p. 180, ,ISBN, ,1783986646, , +,Osborn, Tracy (May 2015), ,Hello Web App, (1st ed.), Tracy Osborn, p. 142, ,ISBN, ,0986365912, , +,Bendoraitis, Aidas (October 2014), ,Web Development with Django Cookbook, (1st ed.), Packt, p. 294, ,ISBN, ,178328689X, , +,Baumgartner, Peter; Malet, Yann (2015), ,High Performance Django, (1st ed.), Lincoln Loop, p. 184, ,ISBN, ,1508748128, , +,Elman, Julia; Lavin, Mark (2014), ,Lightweight Django, (1st ed.), O'Reilly Media, p. 246, ,ISBN, ,149194594X, , +,Percival, Harry (2014), ,Test-Driven Development with Python, (1st ed.), O'Reilly Media, p. 480, ,ISBN, ,1449364829, , +, +, +,This list is an extraction from ,Current Django Books, +,See also,[,edit,], +, +, +,Free software portal, +, +, +, +,Flask (web framework), +,Pylons project, +,Comparison of web frameworks, +,Web2py, +, +, +,References,[,edit,], +, +, +,^, ,""Django FAQ"",. Retrieved ,2 September, 2014,., , +,^, ,Graham, Tim (1 January 2018). ,""Django bugfix releases: 2.0.1 and 1.11.9"",. ,Django Weblog,. Retrieved ,2 January, 2018,., , +,^, ,Graham, Tim (15 November 2017). ,""Django 2.0 release candidate 1 released"",. ,Django Weblog,. Retrieved ,16 November, 2017,., , +,^, ,""Django Download"",. Retrieved ,2 January, 2018,., , +,^, ,""FAQ: General - Django documentation - Django"",. Retrieved ,30 April, 2016,., , +,^ ,a, ,b, ,""FAQ: General - Django documentation - Django"",. Retrieved ,30 April, 2016,., , +,^ ,a, ,b, ,Adrian Holovaty, Jacob Kaplan-Moss; et al. ,The Django Book,. ,Django follows this MVC pattern closely enough that it can be called an MVC framework, , +,^, ,""20 Creative Websites Running Django"",., , +,^, ,""What Powers Instagram: Hundreds of Instances, Dozens of Technologies"",., , +,^, ,""Python"",. ,Mozilla Developer Network,. Retrieved ,30 April, 2016,., , +,^, ,Opensource.washingtontimes.com,. Retrieved on 2014-05-30., +,^, ,""Scaling Django to 8 Billion Page Views"",., , +,^, ,""DjangoSuccessStoryBitbucket – Django"",. Retrieved ,30 April, 2016,., , +,^, ,""The anti-Facebook: one in four American neighborhoods are now using this private social network"",. ,The Verge,. Retrieved ,16 June, 2016,., , +,^, ,""What is the technology stack behind Pinterest?"",. Retrieved ,30 April, 2016,., , +,^, ,""Sai Deep Chand G's answer to What is the technology stack behind Pinterest? - Quora"",. ,www.quora.com,. Retrieved ,2017-05-20,., , +,^ ,a, ,b, ,""Django's History"",. The Django Book,. Retrieved ,6 June, 2013,., , +,^, ,""Announcing the Django Software Foundation - Weblog - Django"",. Retrieved ,30 April, 2016,., , +,^, ,""Security in Django"",. Django Project,. Retrieved ,25 March, 2013,., , +,^, ,Socol, James (2012). ,""Best Basic Security Practices (Especially with Django)"",. Retrieved ,25 March, 2013,., , +,^, ,""What is a reusable app? — django-reusable-app-docs 0.1.0 documentation"",. Retrieved ,30 April, 2016,., , +,^, ,""Django Packages"",. Retrieved ,30 April, 2016,., , +,^, ,""Design philosophies - Django documentation - Django"",. Retrieved ,30 April, 2016,., , +,^, ,Django documentation of deployment, ,Archived, 11 January 2012 at the ,Wayback Machine,., +,^, ,""Cherokee Web Server - Cookbook Setting up Django - Cherokee Documentation"",. Retrieved ,30 April, 2016,., , +,^, ,How to use Django with Apache and mod_wsgi, ,Archived, 8 March 2013 at the ,Wayback Machine,.. Official Django documentation., +,^, ,""Manfre / django-mssql / source / — Bitbucket"",. Retrieved ,30 April, 2016,., , +,^, ,ibmdb. ,""GitHub - ibmdb/python-ibmdb: Automatically exported from code.google.com/p/ibm-db"",. ,GitHub,. Retrieved ,30 April, 2016,., , +,^, ,""Google Code Archive - Long-term storage for Google Code Project Hosting"",. Retrieved ,30 April, 2016,., , +,^, ,maxirobaina. ,""GitHub - maxirobaina/django-firebird: Firebird SQL backend for django"",. ,GitHub,. Retrieved ,30 April, 2016,., , +,^, ,""Django non-rel"",. Retrieved ,30 April, 2016,., , +,^, ,beachmachine. ,""GitHub - beachmachine/django-jython: Database backends and extensions for Django development on top of Jython"",. ,GitHub,. Retrieved ,30 April, 2016,., , +,^, ,Running Pure Django Projects on Google App Engine,. Code.google.com (2010-11-01). Retrieved on 5 December 2011., +,^, ,""Django's release process - Django documentation - Django"",. Retrieved ,30 April, 2016,., , +,^, ,Supported Versions, +,^, ,What Python version can I use with Django?, +,^, ,""Introducing Django 0.90"",. Django weblog. Retrieved 2 February 2013., +,^, ,""Django 0.91 released"",. Django weblog. Retrieved 2 February 2013., +,^, ,""Introducing Django 0.95"",. Django weblog. Retrieved 2 February 2013., +,^, ,""Announcing Django 0.96!"",. Django weblog. Retrieved 2 February 2013., +,^, ,""Django 1.0 released!"",. Django weblog. Retrieved 2 February 2013., +,^, ,""Django 1.1 released"",. Django weblog. Retrieved 2 February 2013., +,^, ,""Django 1.2 released"",. Django weblog. Retrieved 2 February 2013., +,^, ,""Django 1.3 released"",. Django weblog. Retrieved 2 February 2013., +,^, ,""Django 1.4 released"",. Django weblog. Retrieved 2 February 2013., +,^, ,""Django 1.5 released"", Django weblog. Retrieved 27 February 2013., +,^, ,""Django 1.6 released"", Django weblog. Retrieved 6 November 2013., +,^, ,""Django 1.7 released"", Django weblog. Retrieved 4 September 2014., +,^, ,""Django 1.8 released"", Django weblog. Retrieved 2 April 2015., +,^, ,""Django 1.9 released"", Django weblog. Retrieved 1 December 2015., +,^, ,""Django 1.10 released"", Django weblog. Retrieved 1 August 2016., +,^, ,""Django 1.11 released"", Django weblog. Retrieved 4 April 2017., +,^ ,a, ,b, ,c, ,d, ,e, ,f, ,""Django 2.0 released"", Django weblog. Retrieved 3 December 2017., +,^, ,DjangoCon EU series,, Lanyrd.com, +,^, ,DjangoCon US series,, Lanyrd.com, +,^, ,""DjangoCon"",. DjangoCon. Archived from ,the original, on 5 August 2012,. Retrieved ,29 July, 2012,., , +,^, ,""DjangoCon"",. DjangoCon,. Retrieved ,1 December, 2016,., , +,^, ,DjangoCon AU,. Djangocon.com.au. Retrieved on 2016-09-23., +,^, ,http://liquidmarkup.org, +,^, ,https://metacpan.org/pod/Template::Swig, +,^, ,http://twig.sensiolabs.org, +,^, ,http://jinja.pocoo.org, +,^, ,https://github.com/erlydtl/erlydtl/wiki, +, +, +,External links,[,edit,], +, +, +, +,Wikimedia Commons has media related to ,Django (web framework),., +, +, +, +,Official website, +, +, +, +, +, +, +, +, +,v, +,t, +,e, +, +, +,Python, ,web frameworks, +, +, +, +, +, +, +,BlueBream, +,Bottle, +,CherryPy, +,Django, +,Flask, +,Grok, +,Nagare, +,Nevow, +,Pyjs, +,Pylons, +,Pyramid, +,Quixote, +,Spyce, +,TACTIC, +,Tornado, +,TurboGears, +,TwistedWeb, +,Webware, +,web2py, +,Zope 2, +,more,..., +, +, +, +, +, +, +, +, +, +, +, +, +,v, +,t, +,e, +, +, +,Web frameworks, +, +, +, +, +, +, +,Comparison, +, +, +, +, +, +,C++, +, +, +, +,CppCMS, +,Wt, +, +, +, +, +, +,CLI, +, +, +, +,ASP.NET, +, +,Core, +,AJAX, +,Dynamic Data, +,MVC, +,Razor, +,Web Forms, +, +, +,DNN, +,BFC, +,MonoRail, +,OpenRasta, +,Umbraco, +, +, +, +, +, +,ColdFusion, +, +, +, +,CFWheels, +,ColdBox Platform, +,ColdSpring, +,Fusebox, +,Mach-II, +,Model-Glue, +, +, +, +, +, +,Common Lisp, +, +, +, +,Caveman2, +,CL-HTTP, +,UnCommon Web, +,Weblocks, +, +, +, +, +, +,Haskell, +, +, +, +,Happstack, +,Yesod, +,Snap, +, +, +, +, +, +,Java, +, +, +, +,AppFuse, +,Flexive, +,Grails, +,GWT, +,ICEfaces, +,ItsNat, +,JavaServer Faces, +,JHipster, +,Jspx, +,JWt, +,OpenXava, +,Play, +,Reasonable Server Faces, +,Remote Application Platform, +,RIFE, +,Seam, +,Sling, +,Spring, +,Stripes, +,Struts, +,Tapestry, +,Vaadin, +,Vert.x, +,WebWork, +,Wicket, +,WaveMaker, +,ZK, +, +, +, +, +, +,JavaScript, +, +, +, +,Ample SDK, +,Angular,/,AngularJS, +,Backbone.js, +,Chaplin.js, +,Closure, +,Dojo Toolkit, +,Ember.js, +,Ext JS, +,jQuery, +,Meteor, +,MooTools, +,Node.js, +,OpenUI5, +,Prototype, +,React, +,Rico, +,script.aculo.us, +,Sencha Touch, +,SproutCore, +,Wakanda, +, +, +, +, +, +,Perl, +, +, +, +,Catalyst, +,Dancer, +,Mason, +,Maypole, +,Mojolicious, +,WebGUI, +, +, +, +, +, +,PHP, +, +, +, +,CakePHP, +,CodeIgniter, +,Drupal, +,Fat-Free, +,FuelPHP, +,Flow, +,Gyroscope, +,Horde, +,Kohana, +,Laravel, +,Lithium, +,Midgard, +,MODX, +,Nette, +,Phalcon, +,Pop PHP, +,PRADO, +,ProcessWire, +,Qcodo, +,Silex, +,SilverStripe, +,Symfony, +,TYPO3, +,Xaraya, +,XOOPS, +,Yii, +,Zend Framework, +, +, +, +, +, +,Python, +, +, +, +,BlueBream, +,CherryPy, +,Django, +,Flask, +,Grok, +,Nevow, +,Pyjs, +,Pylons, +,Pyramid, +,Quixote, +,TACTIC, +,Tornado, +,TurboGears, +,web2py, +,Webware, +,Zope 2, +, +, +, +, +, +,Ruby, +, +, +, +,Camping, +,Merb, +,Padrino, +,Ruby on Rails, +,Sinatra, +, +, +, +, +, +,Scala, +, +, +, +,Lift, +,Play, +,Scalatra, +, +, +, +, +, +,Smalltalk, +, +, +, +,AIDA/Web, +,Seaside, +, +, +, +, +, +,Other languages, +, +, +, +,Vibe.d, (,D,), +,Application Express, (,PL/SQL,), +,Grails, (,Groovy,), +,Kepler, (,Lua,), +,Rocket, (,Rust,), +,OpenACS, (,Tcl,), +,Phoenix, (,Elixir,), +,SproutCore, (,JavaScript,-,Ruby,), +,Yaws, (,Erlang,), +, +, +, +, +, +, + + +, +, +, +, +",Django (web framework) +" 9 November 2017, at 14:46.","For the art historian, see ,Daniel Robbins (art historian),., +, +, +,Daniel Robbins, +, +, +,Born, +,Montreal,, ,Quebec,, Canada, +, +, +,Residence, +,Albuquerque, New Mexico,, US, +, +, +,Nationality, +,United States, +, +, +,Education, +,Worcester Polytechnic Institute, +, +, +,Organization, +,Funtoo Technologies, +, +, +,Known for, +,Free Software,, ,Hacker,, ,Gentoo,, ,Funtoo, +, +, +,Website, +,www,.funtoo,.org, +, +, +,Daniel Robbins, is a ,computer programmer, and consultant best known as the founder and former chief architect of the ,Gentoo Linux, project. In 2008, he launched the ,Funtoo project,, a ,free, ,Linux distribution, based on Gentoo, and is the project's lead hacker and organizer. He also currently works at the same time in ,Albuquerque, New Mexico,, as 'Open Source/Community Strategy Lead' at Zenoss, and as president for ,Funtoo Technologies,., +, +, +, +,Contents, +, +, +,1, ,Biography, +, +,1.1, ,Formation of Gentoo Linux distribution, +, +,1.1.1, ,Funtoo Linux, +,1.1.2, ,Microsoft, +,1.1.3, ,RTLinux, +, +, +,1.2, ,Funtoo Technologies, +, +, +,2, ,See also, +,3, ,References, +,4, ,External links, +, +, +, +,Biography,[,edit,], +,Formation of Gentoo Linux distribution,[,edit,], +,During his time as a system administrator at the ,University of New Mexico, in ,Albuquerque, Robbins formed his own distribution ,Enoch Linux,, which was later renamed ,Gentoo, in 2002., +,However, like many other ,free software, projects, Gentoo struggled to create a ,business model, which would support its key developers.,[1], Robbins resigned as Chief Architect on 26 April 2004,,[2], citing considerable ,personal debt,,,[3], and a desire to spend more time with his family, formed the ,Gentoo Foundation, and transferred all Gentoo ,intellectual property, to it, so that Gentoo is now run as a full community-based model. He did rejoin the project for a short time from August 2006,,[4],[5], becoming a developer again in February 2007 and joining the amd64 team,[6], but resigned in early March 2007.,[7], +,There have been several high-profile criticisms,[8],[9], of the way Gentoo has run since Robbins left, such as: ""...since the resignation of Gentoo's founder and benevolent dictator from the project in 2004, the newly established Gentoo Foundation has been battling with lack of clear directions and frequent developer conflicts..."",,[10], but in mid-July 2007 it emerged that Robbins was still technically the legal president of the Gentoo Foundation:,[11],[12], +, +,...I would like to see more fun in Gentoo, and a lot less politics, and in my apparent role as President of the Gentoo Foundation, I may have an opportunity to change things for the better. I will need to look into this more...,[11], +, +,Funtoo Linux,[,edit,], +,In 2008, Robbins began to work on ,Funtoo,, a project created to allow him to work on extending the technologies originally created for Gentoo.,[13], +,Microsoft,[,edit,], +,Robbins' move to ,Microsoft,, in May 2005, attracted attention,[14],[15], within the Linux community, which has historically had a combative relationship with Microsoft. He described his role working for ,Bill Hilf, as ""...helping Microsoft to understand Open Source and community-based projects..."",[16], +,However, Robbins resigned less than a year later on 16 January 2006 due to frustrations that he was unable to fully utilize his technical skills in this position., +,RTLinux,[,edit,], +,Later in 2006, he joined ,FSMLabs, in Socorro, New Mexico, to work on ,RTLinux,., +,Funtoo Technologies,[,edit,], +,Daniel Robbins is also president of ,Funtoo Technologies,, a consulting firm founded in 2006 and located in ,Albuquerque, New Mexico,., +,See also,[,edit,], +, +, +,Free software portal, +, +, +, +,References,[,edit,], +, +, +,^, ,Loli-Queru, Eugenia, (14 May 2002). ,""Interview with Gentoo's Daniel Robbins"",. ,OSNews,. Retrieved ,17 April, 2009,. ,I very much want to find a way to turn the Gentoo Linux project into a profitable enterprise. My main motivation in wanting to do this is so I can stop living from paycheck to paycheck and focus my professional efforts exclusively on Gentoo Linux development. Many of our developers would like to do the same thing., , +,^, ,Lord, timothy (26 April 2004). ,""Interview with Gentoo's Daniel Robbins"",. ,Slashdot,. Retrieved ,17 April, 2009,., , +,^, ,""Mail To News And Back Again"",. Gmane. 26 April 2004,. Retrieved ,4 August, 2009,., , +,^, ,""Funtoo by Daniel Robbins"",. Funtoo.org. Archived from ,the original, on 12 October 2006,. Retrieved ,4 August, 2009,., , +,^, ,""Gentoo Bug 145649 - Retire (once more): Daniel Robbins (drobbins)"",. Bugs.gentoo.org,. Retrieved ,4 August, 2009,., , +,^, ,""Gentoo Bug 145649 - Retire (once more): Daniel Robbins (drobbins)"",. Bugs.gentoo.org,. Retrieved ,4 August, 2009,., , +,^, ,[1], ,Archived, 30 September 2007 at the ,Wayback Machine,., +,^, ,""Put the fun back into computing. Use Linux, BSD"",. DistroWatch.com,. Retrieved ,4 August, 2009,., , +,^, ,""Slashdot | Is Gentoo in crisis?"",. Linux.slashdot.org,. Retrieved ,4 August, 2009,., , +,^, ,""Put the fun back into computing. Use Linux, BSD"",. DistroWatch.com,. Retrieved ,4 August, 2009,., , +,^ ,a, ,b, ,""Funtoo by Daniel Robbins: I am still President of the Gentoo Foundation?"",. Blog.funtoo.org. 18 July 2007. Archived from ,the original, on 7 February 2009,. Retrieved ,4 August, 2009,., , +,^, ,[2], +,^, ,[3], ,Archived, 21 April 2010 at the ,Wayback Machine,., +,^, ,""Slashdot | Gentoo Founder on his way to Redmond"",. Linux.slashdot.org,. Retrieved ,4 August, 2009,., , +,^, ,Marson, Ingrid (16 June 2005). ,""Gentoo Linux founder to 'educate' Microsoft | CNET News.com"",. News.com.com,. Retrieved ,4 August, 2009,., , +,^, ,""Gentoo Founder Joins Microsoft"",. Osnews.com,. Retrieved ,4 August, 2009,., , +, +, +,External links,[,edit,], +, +,Robbins' blog, +,Common threads: OpenSSH key management, Part 1, +,linuxcrazy mp3 and ogg interview, +, +, +, +, +, +, +, +,v, +,t, +,e, +, +, +,Linux, +, +, +, +,Linux kernel, +, +, +, +,History, +,Kernel, +,Linus's Law, +,Linux-libre, +,Linux startup process, +,Linux kernel oops, +,Tux, +,more…, +, +, +, +, +, +,Controversies, +, +, +, +,Criticism of Linux, +,Criticism of desktop Linux, +,GNU/Linux naming controversy, +,Tanenbaum–Torvalds debate, +,SCO and Linux, +, +, +, +, +, +,Distributions, +, +, +, +,General comparison, +,Distributions list, +,Netbook-specific comparison, +,Distributions that run from RAM, +,Lightweight, +,Security-focused operating system, +,Proprietary software for Linux, +,Package manager, +, +,Package format, +,List of software package managers, +, +, +, +, +, +, +, +,Organizations, +, +, +, +,Linux Foundation, +,Linux Mark Institute, +,Linux User Group (LUG), +,Linux Documentation Project, +,LinuxChix, +,Linux Counter, +, +, +, +, +, +,Adoption, +, +, +, +,Desktop, +,Embedded, +,Mobile, +,Gaming, +,Linux range of use, +,List of Linux adopters, +, +, +, +, +, +,Media, +, +, +, +,DistroWatch, +,Free Software Magazine, +,Full Circle, +,Linux.com, +,Linux Format, +,Linux Gazette, +,Linux Journal, +,Linux Magazine, +,LinuxUser, +, +,Ubuntu User, +, +, +,Linux Outlaws, +,Linux Voice, +,LugRadio, +,LWN.net, +,OMG! Ubuntu!, +,Open Source For You, +,Phoronix, +,Revolution OS, +,The Code, +, +, +, +, +, +, +, +, +, ,Linux, +, ,Linux kernel features, +, ,Portal:Linux, +, ,WikiProject Linux, +, +, +, +, +, +, +, +, +, +, +, +, +,v, +,t, +,e, +, +, +,Notable contributors to the ,Linux operating system, +, +, +, +,Kernel, +, +, +, +,H. Peter Anvin, +,Jens Axboe, +,Andries Brouwer, +,Rémy Card, +,Arnaldo Carvalho de Melo, +,Alan Cox, +,Kristoffer Ericson, +,Matthew Garrett, +,Michael Kerrisk, +,Con Kolivas, +,Greg Kroah-Hartman, +,Robert Love, +,David S. Miller, +,Ingo Molnár, +,Andrew Morton, +,Keith Packard, +,Hans Reiser, +,Rusty Russell, +,Sage Sharp, +,Linus Torvalds, +,Theodore Ts'o, +,Sage Weil, +,Harald Welte, +,Chris Wright, +, +, +, +, +, +,GNU, +, +, +, +,Loïc Dachary, +,Alexandre Oliva, +,Richard Stallman, +,Michael Tiemann, +, +, +, +, +, +,Distributions, +, +, +, +,Benjamin Mako Hill, +,Daniel Robbins, +,Gaël Duval, +,Ian Murdock, +,Mark Shuttleworth, +,Jane Silber, +,Patrick Volkerding, +,Peter MacDonald, +, +, +, +, +, +,Other developers, +, +, +, +,Timothee Besset, +,Matthias Ettrich, +,Olivier Fourdan, +,Mark Galassi, +,Jim Gettys, +,Ryan C. Gordon, +,Harald Hoyer, +,Miguel de Icaza, +,Havoc Pennington, +,Lennart Poettering, +,Michael Simms, +,Kay Sievers, +,Dave Taylor, +,Jeff Waugh, +, +, +, +, +, +,Advocates, +, +, +, +,Bradley M. Kuhn, +,Bruce Perens, +,Donna Benjamin, +,Eric S. Raymond, +,Federico Heinz, +,Jon Hall, +,Ken Coar, +,Mary Gardiner, +,Valerie Aurora, +, +, +, +, +, +,Others, +, +, +, +,Allison Randal, +,Dave Sifry, +,Jono Bacon, +,Karen Sandler, +,Keith Bergelt, +,Luis Villa, +,Pamela Jones, +,Pia Waugh, +, +, +, +, +, +, + + +, +, +, +, +",Daniel Robbins (computer programmer) +" 19 January 2018, at 07:22."," +,OpenBSD, +, +, +,""Free, Functional, and Secure"", +, +, +, +, +,OpenBSD 5.9 desktop, +, +, +, +,Developer, +,The OpenBSD Project, +, +, +,Written in, +,Primarily ,C,, ,assembly,, ,Perl,, ,Makefile,, and ,KornShell, +, +, +,OS family, +,Unix-like, (,BSD,), +, +, +,Working state, +,Current, +, +, +,Source model, +,Open source, +, +, +,Initial release, +,1 October 1996,; 21 years ago, (,1996-10-01,), +, +, +,Latest release, +,6.2 ,(9 October 2017,; 3 months ago, (,2017-10-09,),), ,[±], +, +, +,Package manager, +,OpenBSD package tools,[1], +, +, +,Platforms, +,Alpha,, ,x86-64,, ,ARMv7,, ,PA-RISC,, ,IA-32,, ,LANDISK,, ,Omron LUNA-88K,, ,MIPS64,, ,PowerPC,, and ,SPARC 64,[2], +, +, +,Kernel, type, +,Monolithic, +, +, +,Userland, +,BSD, +, +, +,Default ,user interface, +,Modified ,pdksh,, ,FVWM, ,X11, +, +, +,License, +,BSD,, ,ISC,, ATU,,[3], and other custom licenses,[4], +, +, +,Official website, +,openbsd,.org, +, +, +,OpenBSD, is a ,free and open-source, ,Unix-like, computer ,operating system, descended from ,Berkeley Software Distribution, (BSD), a ,Research Unix, derivative developed at the ,University of California, Berkeley,. In late 1995, ,Theo de Raadt, ,forked, it from ,NetBSD,. Besides the operating system as a whole, the project maintains portable versions of many subsystems, most notably ,OpenSSH,, which are available as packages in other operating systems., +,The project is known for its developers' insistence on ,open-source, code, good documentation, code correctness, and security. It has strict policies on ,licensing,, preferring the ,ISC license, and other variants of the ,Simplified BSD License,. Many of its ,security features, are optional or absent in other operating systems. Its developers frequently ,audit, the ,source tree, for software bugs and security holes., +,De Raadt coordinates the project from his home in ,Calgary,, Alberta, Canada. Its logo and mascot is a ,pufferfish, named Puffy., +, +, +, +,Contents, +, +, +,1, ,History and popularity, +,2, ,Uses, +, +,2.1, ,Security, +,2.2, ,Desktop, +,2.3, ,Server, +, +, +,3, ,Component projects, +,4, ,Third-party components in the base system, +,5, ,Development and release process, +,6, ,Open-source and open documentation, +,7, ,Licensing, +,8, ,Funding, +,9, ,Security and code auditing, +, +,9.1, ,Alleged FBI backdoor investigated, +,9.2, ,Slogan, +, +, +,10, ,Distribution and marketing, +,11, ,See also, +,12, ,Notes, +,13, ,References, +,14, ,External links, +, +, +, +,History and popularity,[,edit,], +,See also: ,Timeline of OpenBSD, +, +, +, +, +,Bar chart, showing the proportion of users of each ,BSD, variant from a 2005 BSD usage survey.,[5],[n 1], +, +, +,In December 1994, NetBSD co-founder ,Theo de Raadt, was asked to resign from his position as a senior developer and member of the NetBSD core team.,[6], The reason for this is not wholly clear, although there are claims that it was due to personality clashes within the NetBSD project and on its mailing lists.,[6], +,In October 1995, de Raadt founded OpenBSD, a new project forked from NetBSD 1.0. The initial release, OpenBSD 1.2, was made in July 1996, followed by OpenBSD 2.0 in October of the same year.,[7], Since then, the project has followed a schedule of a release every six months, each of which is supported for one year., +,On 25 July 2007, OpenBSD developer Bob Beck announced the formation of the ,OpenBSD Foundation,, a Canadian non-profit organization formed to ""act as a single point of contact for persons and organizations requiring a legal entity to deal with when they wish to support OpenBSD."",[8], +,Just how widely OpenBSD is used is hard to determine as its developers do not publish or collect usage statistics. In September 2005, the BSD Certification Group performed a usage survey which revealed that 32.8% of BSD users (1420 of 4330 respondents) were using OpenBSD,,[5], placing it second out of the four major BSD variants, behind ,FreeBSD, with 77% and ahead of NetBSD with 16.3%.,[n 1], +,Uses,[,edit,], +, +, +, +, +OpenBSD startup in console mode, +, +, +, +, +, +, +OpenBSD console login and welcome message, +, +, +, +, +, +, +Interaction with ,pdksh, in OpenBSD, +, +, +,Security,[,edit,], +,OpenBSD's security enhancements,, built-in cryptography, and the pf ,packet filter, suit it for use in the security industry, such as on firewalls,,[9], ,intrusion-detection systems,, and ,VPN, ,gateways,., +,Proprietary, systems from several manufacturers are based on OpenBSD, including devices from ,Armorlogic, (Profense web application firewall), Calyptix Security,,[10], GeNUA,,[11], RTMX,,[12], and .vantronix.,[13], Later versions of ,Microsoft,'s ,Services for UNIX,, an extension to the ,Windows, operating system providing ,Unix,-like functionality, use large amounts of OpenBSD code.,[14], +,Desktop,[,edit,], +,OpenBSD ships with the ,X Window System,[15], and is suitable for use on the desktop.,[16],[17],:,xl, There are a huge number of packages totalling 7814,[18], in number. Packages are available for popular applications, including desktop environments such as ,GNOME,, ,KDE,, and ,Xfce,, and web browsers such as ,Firefox, and ,Chromium,.,[19], The project also includes three window managers in the main distribution: ,cwm,, ,FVWM,, and ,twm,.,[20], +,Server,[,edit,], +,OpenBSD features a full server suite and can be easily configured as a ,mail server,, ,web server,, ,FTP server,, ,DNS server,, ,router,, ,firewall,, ,NFS, ,file server,, or any combination of these., +,Component projects,[,edit,], +,Despite the small team size and relatively low usage of OpenBSD, the project maintains portable versions of many parts of the base system, including:, +, +,LibreSSL,, a free implementation of the ,Secure Sockets Layer, (SSL) and ,Transport Layer Security, (TLS) protocols, forked from the ,OpenSSL, 1.0.1g branch, +,OpenBGPD,, a free implementation of the ,Border Gateway Protocol, 4 (BGP-4), +,OpenOSPFD,, a free implementation of the ,Open Shortest Path First, (OSPF) routing protocol, +,OpenNTPD,, a simple alternative to ntp.org's ,Network Time Protocol, (NTP) daemon, +,OpenSMTPD,, a free ,Simple Mail Transfer Protocol, (SMTP) daemon with ,IPv4,/,IPv6,, ,PAM,, ,Maildir, and virtual domains support, +,httpd, an ,HTTP, server first included in the 5.6 release, +,OpenSSH,, a free implementation of the ,Secure Shell, (SSH) protocol, +,OpenIKED,, a free implementation of the ,Internet Key Exchange, (IKEv2) protocol, +,Common Address Redundancy Protocol, (CARP), a free alternative to ,Cisco,'s patented ,HSRP,/,VRRP, server redundancy protocols, +,PF,, an ,IPv4,/,IPv6, stateful firewall with ,NAT,, ,PAT,, ,QoS, and traffic normalization support, +,pfsync,, a firewall states synchronization protocol for ,PF firewall, with ,High Availability, support using ,CARP, +,spamd,, a spam filter with ,greylisting, support designed to inter-operate with the ,PF firewall, +,sndio,, a compact audio and MIDI framework, +,Xenocara,, a customized ,X.Org, build infrastructure, +,cwm,, a stacking window manager, +,tmux, virtual console multiplexer, +, +,Some subsystems have been integrated into the base system of several other BSD projects,,[21],[22],[23], while many are available as packages for use in other Unix-like systems.,[24],[25],[26], +,Third-party components in the base system,[,edit,], +,OpenBSD includes a number of ,third-party software components,, many with OpenBSD-specific patches;,[19], examples include the ,X.Org Server,, ,GNU Compiler Collection,[27], (which acts as the default ,compiler,),,[n 2], ,Perl,, ,NSD,, ,Unbound,, ,Ncurses,, ,GNU Binutils,, ,GNU Debugger, and ,Awk,., +,OpenBSD used to include a fork of ,Apache 1.3,, which was later replaced by ,Nginx,. In the 5.6 release, Nginx was replaced with ,httpd,, an ,HTTP server, with ,FastCGI, and ,Transport Layer Security, support.,[28], As of May 2016,[update],, Apache and Nginx are still available as ports.,[29],[30], +,Development and release process,[,edit,], +, +, +, +, +OpenBSD developers at c2k1 ,hackathon, at ,MIT, +, +, +,Development is continuous, and team management is open and tiered. Anyone with appropriate skills may contribute, with commit rights being awarded on merit and de Raadt acting as coordinator.,[17],:,xxxv, Two official releases are made per year, with the version number incremented by 0.1,,[31], and these are each supported for twelve months (two release cycles).,[32], Snapshot releases are also available at frequent intervals., +,Maintenance patches for supported releases may be applied manually or by updating the system against the patch branch of the ,CVS, repository for that release.,[33], Alternatively, a system administrator may opt to upgrade using a snapshot release and then regularly update the system against the ,-current, branch of the CVS repository, in order to gain pre-release access to recently added features., +,The standard OpenBSD kernel, as maintained by the project, is strongly recommended for end users; this is as opposed to kernels customized by the user.,[34], +,Packages outside the base system are maintained by CVS through a ,ports tree, and are the responsibility of the individual maintainers, known as porters. As well as keeping the current branch up to date, porters are expected to apply appropriate bug-fixes and maintenance fixes to branches of their package for OpenBSD's supported releases. Ports are generally not subject to the same continuous auditing as the base system due to lack of manpower., +,Binary packages are built centrally from the ports tree for each architecture. This process is applied for the current version, for each supported release, and for each snapshot. Administrators are recommended to use the package mechanism rather than build the package from the ports tree, unless they need to perform their own source changes., +,OpenBSD's developers regularly meet at special events called ,hackathons,,,[35], where they ""sit down and code"", emphasizing productivity.,[36], +,Every new release includes a song.,[37], +,The ,OpenBSD Foundation, was accepted as a mentoring organization for the 2014 Google Summer of Code.,[38],[39], +,Open-source and open documentation,[,edit,], +,The OpenBSD Project is noted for its high-quality user documentation, considered top among the BSD family operating systems, all of which have excellent documentation.,[40],[41], When OpenBSD was created, de Raadt decided that the source should be easily available for anyone to read at any time, so, with the assistance of Chuck Cranor,,[42], he set up the first public, anonymous ,CVS, server. At the time, the tradition was for only a small team of developers to have access to a project's source repository.,[43], Cranor and de Raadt concluded that this practice ""runs counter to the open source philosophy"" and is inconvenient to contributors. De Raadt's decision allowed ""users to take a more active role"", and signaled the project's belief in open and public access to source code.,[43], +,OpenBSD does not include ,closed source, binary drivers in the source tree, nor do they include code requiring the signing of ,non-disclosure agreements,.,[44], +,Since OpenBSD is based in Canada, no United States export restrictions on cryptography apply, allowing the distribution to make full use of modern algorithms for encryption. For example, the swap space is divided into small sections and each section is encrypted with its own key, ensuring that sensitive data does not leak into an insecure part of the system.,[9], +,OpenBSD randomizes various behaviors of applications, making them less predictable and thus more difficult to attack. For example, PIDs are created and associated randomly to processes; the ,bind, ,system call, uses random ,port numbers,; files are created with random ,inode, numbers; and IP datagrams have random identifiers.,[45], This approach also helps expose bugs in the kernel and in user space programs., +,The OpenBSD policy on openness extends to hardware documentation: in the slides for a December 2006 presentation, de Raadt explained that without it ""developers often make mistakes writing drivers"", and pointed out that ""the [oh my god, I got it to work] rush is harder to achieve, and some developers just give up."",[46], He went on to say that vendor-supplied binary drivers are unacceptable for inclusion in OpenBSD, that they have ""no trust of vendor binaries running in our kernel"" and that there is ""no way to fix [them] ... when they break."",[46], +,Licensing,[,edit,], +,See also: ,BSD and GPL licensing, +,A goal of the OpenBSD Project is to ""maintain the spirit of the original Berkeley Unix ,copyrights,"", which permitted a ""relatively un-encumbered Unix source distribution."",[47], To this end, the ,Internet Systems Consortium (ISC) license, is preferred for new code, but the ,MIT, and BSD licenses are also accepted. The widely used ,GNU General Public License, is considered overly restrictive compared to these.,[48], +,In June 2001, triggered by concerns over Darren Reed's modification of IPFilter's license wording, a systematic license audit of the OpenBSD ports and source trees was undertaken.,[49], Code in more than a hundred files throughout the system was found to be unlicensed, ambiguously licensed or in use against the terms of the license. To ensure that all licenses were properly adhered to, an attempt was made to contact all the relevant copyright holders: some pieces of code were removed, many were replaced, and others, such as the ,multicast, ,routing, tools ,mrinfo, and ,map-mbone,, were ,relicensed, so that OpenBSD could continue to use them.,[50],[51], Also removed during this audit was all software produced by ,Daniel J. Bernstein,. At the time, Bernstein requested that all modified versions of his code be approved by him prior to redistribution, a requirement to which OpenBSD developers were unwilling to devote time or effort.,[52],[53],[54], +,Because of licensing concerns, the OpenBSD team has re-implemented software from scratch or adopted suitable existing software. Of particular note is the development, after license restrictions were imposed on ,IPFilter,, of the ,pf, ,packet filter,, which first appeared in OpenBSD 3.0,[55], and is now available in other major BSDs.,[56], OpenBSD developers have also replaced GPL licensed tools (such as ,diff,, ,grep, and ,pkg-config,) with BSD licensed equivalents.,[,citation needed,], +,Funding,[,edit,], +,Although the operating system and its portable components are used in commercial products, de Raadt says that little of the funding for the project comes from the industry: ""traditionally all our funding has come from user donations and users buying our CDs (our other products don't really make us much money). Obviously, that has not been a lot of money."",[31], +,For a two-year period in the early 2000s, the project received ,DARPA, funding, which ""paid the salaries of 5 people to work completely full-time, bought about $30k in hardware, and paid for 3 hackathons"", from the ,POSSE project,.,[31], +,In 2006, de Raadt expressed concern about the asymmetry of funding: ""I think that contributions should have come first from the vendors, secondly from the corporate users, and thirdly from individual users. But the response has been almost entirely the opposite, with almost a 15 to 1 dollar ratio in favor of the little people. Thanks a lot, little people!"",[31], However, since 2014 several large contributions to the ,OpenBSD Foundation, have come from corporations such as Microsoft,,[57], Facebook, and Google as well as the ,Core Infrastructure Initiative,.,[58], +,In 2006, the OpenBSD Project experienced financial danger.,[59], The ,Mozilla Foundation,[60], and ,GoDaddy,[61], are among the organizations that helped the OpenBSD Project to overcome its financial troubles., +,On 14 January 2014, Bob Beck issued a request for funding to cover electrical costs. If sustainable funding was not found, Beck suggested the OpenBSD Project would shut down.,[62], The project soon received a US$20,000 donation from Mircea Popescu, the Romanian creator of the MPEx bitcoin stock exchange, paid in ,bitcoins,.,[63], The project raised US$150,000,[64], in response to the appeal, enabling it to pay its bills and securing its short-term future.,[63], +,Security and code auditing,[,edit,], +,For more details on this topic, see ,OpenBSD security features,., +,Shortly after OpenBSD's creation, de Raadt was contacted by a local security software company named Secure Networks (SNI).,[65],[66], They were developing a ""network security auditing tool"" called Ballista,,[n 3], which was intended to find and attempt to ,exploit, possible software security flaws. This coincided with de Raadt's own interest in security, so for a time the two cooperated, a relationship that was of particular usefulness leading up to the release of OpenBSD 2.3,[67], and helped to define security as the focal point of the project.,[68], +,OpenBSD includes features designed to improve security, such as:, +, +,secure alternatives to ,POSIX, functions in the C standard library, such as ,strlcat, for ,strcat, and ,strlcpy, for ,strcpy,[69], +,toolchain alterations, including a ,static bounds checker,[27], +,memory protection techniques to guard against invalid accesses, such as ,ProPolice, and the ,W^X, ,page, protection feature, +,strong ,cryptography, and ,randomization,[70], +, +,To reduce the risk of a vulnerability or misconfiguration allowing ,privilege escalation,, many programs have been written or adapted to make use of ,privilege separation,, ,privilege revocation, and ,chrooting,. Privilege separation is a technique, pioneered on OpenBSD and inspired by the ,principle of least privilege,, where a program is split into two or more parts, one of which performs privileged operations and the other—almost always the bulk of the code—runs without privilege.,[71], Privilege revocation is similar and involves a program performing any necessary operations with the privileges it starts with then dropping them. Chrooting involves restricting an application to one section of the ,file system,, prohibiting it from accessing areas that contain private or system files. Developers have applied these features to OpenBSD versions of many common applications, such as ,tcpdump,, ,file,, ,tmux,, ,smtpd,, and ,syslogd,.,[72], +,OpenBSD developers were instrumental in the creation and development of ,OpenSSH,, which is developed in the OpenBSD CVS repositories. OpenSSH is based on the original ,SSH,.,[73], It first appeared in OpenBSD 2.6 and is now by far the most popular SSH client and server, available on many operating systems.,[74], +,The project has a policy of continually auditing source code for problems, work that developer Marc Espie has described as ""never finished ... more a question of process than of a specific bug being hunted."" He went on to list several typical steps once a bug is found, including examining the entire source tree for the same and similar issues, ""try[ing] to find out whether the documentation ought to be amended"", and investigating whether ""it's possible to augment the ,compiler, to warn against this specific problem."",[75], +,The default install is quite minimal, which the project states is to ensure novice users ""do not need to become security experts overnight"",,[76], which fits with open-source and code auditing practices argued to be important elements of a security system.,[77], +,Alleged FBI backdoor investigated,[,edit,], +,On 11 December 2010, Gregory Perry, a former technical consultant for the ,Federal Bureau of Investigation, (FBI), emailed de Raadt alleging that the FBI had paid some OpenBSD ex-developers 10 years previously to insert backdoors into the ,OpenBSD Cryptographic Framework,. De Raadt made the email public on 14 December by forwarding it to the openbsd-tech mailing list and suggested an audit of the ,IPsec, codebase.,[78],[79], De Raadt's response was skeptical of the report and he invited all developers to independently review the relevant code. In the weeks that followed, bugs were fixed but no evidence of backdoors were found.,[80], De Raadt stated ""I believe that NetSec was probably contracted to write backdoors as alleged. If those were written, I don't believe they made it into our tree. They might have been deployed as their own product."",[81], +,Slogan,[,edit,], +,The OpenBSD website features a prominent reference to the security record of the default installation. Until June 2002, the wording read ""Five years without a remote hole in the default install!"",[82], An ,OpenSSH, bug was then discovered that made it possible for a remote attacker to gain ,root privileges, in OpenBSD and in any of the other systems running OpenSSH at the time. It was quickly fixed, as is normal with known security holes.,[83],[84], The slogan was changed to ""One remote hole in the default install, in nearly 6 years!"" In 2007, a network-related remote vulnerability was found, which was also quickly fixed.,[85], The quote was subsequently altered to ""Only two remote holes in the default install, in a heck of a long time!"" As of May 2017,[update],, the wording remains., +,Distribution and marketing,[,edit,], +,The name OpenBSD refers to the fact that OpenBSD's source code is freely available on the Internet. It also refers to the wide range of hardware platforms the operating system supports.,[86], +,OpenBSD is freely available in various ways: the source can be retrieved by anonymous ,CVS,,,[87], and binary releases and development snapshots can be downloaded by FTP, HTTP, and rsync.,[88], Prepackaged CD-ROM sets through version 6.0 can be ordered online for a small fee, complete with an assortment of stickers and a copy of the release's theme song. These, with their artwork and other bonuses, have been one of the project's few sources of income, funding hardware, Internet service, and other expenses.,[89], Beginning with version 6.1, CD-ROM sets are no longer released., +,In common with other operating systems, OpenBSD provides a ,package management system, for easy installation and management of programs which are not part of the base operating system.,[90], Packages are binary files which are extracted, managed and removed using the package tools. On OpenBSD, the source of packages is the ports system, a collection of ,Makefiles, and other infrastructure required to create packages. In OpenBSD, the ports and base operating system are developed and released together for each version: this means that the ports or packages released with, for example, 4.6 are not suitable for use with 4.5 and vice versa.,[90], +, +, +, +, +Animated OpenBSD mascot ,Puffy,, 3D-rendered with ,Blender3D, +, +, +,OpenBSD at first used the ,BSD daemon, mascot. A specialized version of the daemon, the haloed daemon was drawn by Erick Green. Green was asked by de Raadt to create the logo for the 2.3 and 2.4 versions of OpenBSD. At first, it was planned to create a full daemon, including head and body, but Green was only able to complete the head part for OpenBSD 2.3. The body as well as pitchfork and tail was completed for OpenBSD 2.4.,[91], Subsequent releases saw variations, such as Cop daemon by Ty Semaka,,[92], but eventually settling on Puffy,,[93], described as a ,pufferfish,.,[n 4], Since then Puffy has appeared on OpenBSD promotional material and featured in release songs and artwork. The promotional material of early OpenBSD releases did not have a cohesive theme or design, but later the CD-ROMs, release songs, posters and tee-shirts for each release have been produced with a single style and theme, sometimes contributed to by Ty Semaka of the ,Plaid Tongued Devils,.,[37], These have become a part of OpenBSD ,advocacy,, with each release expounding a moral or political point important to the project, often through parody.,[94], Past themes have included: in OpenBSD 3.8, the ,Hackers of the Lost RAID,, a parody of ,Indiana Jones, linked to the new RAID tools featured as part of the release; ,The Wizard of OS,, making its debut in OpenBSD 3.7, based on the work of ,Pink Floyd, and a parody of ,The Wizard of Oz, related to the project's recent work on wireless card drivers; and OpenBSD 3.3's ,Puff the Barbarian,, including an 80s rock-style song and parody of ,Conan the Barbarian,, alluding to open documentation.,[37], +,See also,[,edit,], +, +, +,Free software portal, +,Cryptography portal, +,Computer science portal, +, +, +, +, +,Category:Computing mascots, +,Comparison of BSD operating systems, +,Comparison of open-source operating systems, +,KAME project, – responsible for OpenBSD's IPv6 support, +,List of computing mascots, +,OpenBSD Journal, – online newspaper dedicated to OpenBSD news, +,OpenBSD version history, +,Security-focused operating system, +, +, +,Notes,[,edit,], +, +, +, +,^ ,a, ,b, ,Multiple selections were permitted as a user may use multiple BSD variants side by side., +,^, ,As of OpenBSD 6.0,[update],, either 4.2.1 or 3.3.6 is shipped, depending on the platform.,[27], +,^, ,Later renamed to Cybercop Scanner after SNI was purchased by ,Network Associates,., +,^, ,Pufferfish do not, in fact, possess spikes; images of Puffy are closer to a similar species, the ,porcupinefish,., +, +, +, +,References,[,edit,], +, +, +,^, ,""Package Management"",. ,OpenBSD Frequently Asked Questions,. Retrieved ,1 June, 2016,., , +,^, ,""Platforms"",. ,OpenBSD,. Retrieved ,3 September, 2016,., , +,^, ,""src/sys/dev/microcode/atmel/atu-license – view – 1.3"",. ,cvsweb.openbsd.org,. Retrieved ,20 May, 2016,. ,Redistribution [...] is permitted provided that the following conditions are met: [...] Firmware is redistributed in object code only., , +,^, ,""src/sys/dev/microcode/tigon/tigon-license – view – 1.5"",. ,cvsweb.openbsd.org,. Retrieved ,20 May, 2016,., , +,^ ,a, ,b, ,BSD Usage Survey, ,(PDF), (Report). The BSD Certification Group. 31 October 2005. p. 9,. Retrieved ,16 September, 2012,., , +,^ ,a, ,b, ,Glass, Adam (23 December 1994). ,""Theo De Raadt"",. ,netbsd-users, (Mailing list)., , +,^, ,de Raadt, Theo, (18 October 1996). ,""The OpenBSD 2.0 release"",. ,openbsd-announce, (Mailing list)., , +,^, ,""Announcing – The OpenBSD Foundation"",. ,OpenBSD Journal,. 26 July 2007., , +,^ ,a, ,b, ,McIntire, Tim (8 August 2006). ,""Take a closer look at OpenBSD"",. ,Developerworks,. ,IBM,. Retrieved ,13 December, 2011,., , +,^, ,""AccessEnforcer Model AE800"",. ,Calyptix Security,. Retrieved ,28 May, 2016,., , +,^, ,""High Resistance Firewall genugate"",. ,GeNUA,. Retrieved ,29 May, 2016,., , +,^, ,""RTMX O/S IEEE Real Time POSIX Operating Systems"",. ,RTMX,. Retrieved ,13 December, 2011,. ,RTMX O/S is a product extension to OpenBSD Unix-like operating system with emphasis on embedded, dedicated applications., , +,^, ,"".vantronix secure system"",. ,Compumatica secure networks,. Retrieved ,13 December, 2011,. ,The Next Generation Firewall is not a standalone device, it is a Router for operation in security critical environments with high requirements for availability, comprehensive support as well as reliable and trusted systems powered by OpenBSD., , +,^, ,Dohnert, Roberto J. (21 January 2004). ,""Review of Windows Services for UNIX 3.5"",. ,OSNews,. David Adams., , +,^, ,""About Xenocara"",. ,Xenocara,. Retrieved ,13 December, 2011,., , +,^, ,Tzanidakis, Manolis (21 April 2006). ,""Using OpenBSD on the desktop"",. ,Linux.com,. Retrieved ,9 March, 2012,., , +,^ ,a, ,b, ,Lucas, Michael W. (April 2013). ,Absolute OpenBSD: Unix for the Practical Paranoid, (2nd ed.). San Francisco, California: ,No Starch Press,. ,ISBN, ,978-1-59327-476-4,., , +,^, ,http://openports.se/statistics.php,., , ,Missing or empty ,|title=, (,help,);, ,External link in ,|website=, (,help,);, ,Missing or empty ,|url=, (,help,), +,^ ,a, ,b, ,""OpenBSD 6.0"",. ,OpenBSD,. Retrieved ,1 November, 2016,., , +,^, ,""The X Windows System"",. ,OpenBSD Frequently Asked Questions,. Retrieved ,22 May, 2016,. ,OpenBSD ships with the cwm(1), fvwm(1) and twm(1) window managers, [...], , +,^, ,""Contents of /stable/10/crypto/openssh/README"",. ,svnweb.freebsd.org,. Retrieved ,19 May, 2016,. ,This is the port of OpenBSD's excellent OpenSSH to Linux and other Unices., , +,^, ,""src/crypto/external/bsd/openssh/dist/README – view – 1.4"",. ,NetBSD CVS Repositories,. Retrieved ,19 May, 2016,., , +,^, ,""dragonfly.git/blob – crypto/openssh/README"",. ,gitweb.dragonflybsd.org,. Retrieved ,19 May, 2016,. ,This is the port of OpenBSD's excellent OpenSSH to Linux and other Unices., , +,^, ,""Arch Linux – openssh 7.2p2-1 (x86_64)"",. ,Arch Linux,. Retrieved ,17 May, 2016,., , +,^, ,""openssh"",. ,OpenSUSE,. Retrieved ,17 May, 2016,., , +,^, ,""Debian – Details of package openssh-client in jessie"",. ,Debian,. Retrieved ,17 May, 2016,., , +,^ ,a, ,b, ,c, ,""gcc-local – local modifications to gcc"",. ,OpenBSD manual pages,. Retrieved ,1 November, 2016,., , +,^, ,""httpd – HTTP daemon"",. ,OpenBSD manual pages,. Retrieved ,1 November, 2016,., , +,^, ,""OpenBSD ports ∴ www/apache-httpd,-main"",. ,ports.su,. Retrieved ,18 May, 2016,., , +,^, ,""OpenBSD ports ∴ www/nginx"",. ,ports.su,. Retrieved ,18 May, 2016,., , +,^ ,a, ,b, ,c, ,d, ,Andrews, Jeremy (2 May 2006). ,""Interview: Theo de Raadt"",. ,KernelTrap,. Archived from ,the original, on 24 April 2013., , +,^, ,""OpenBSD's flavors"",. ,OpenBSD Frequently Asked Questions,. Retrieved ,22 May, 2016,., , +,^, ,""Applying patches in OpenBSD"",. ,OpenBSD Frequently Asked Questions,. Retrieved ,15 May, 2016,., , +,^, ,""Migrating to OpenBSD"",. ,OpenBSD Frequently Asked Questions,. Retrieved ,4 January, 2017,., , +,^, ,""Hackathons"",. ,OpenBSD,. Retrieved ,18 May, 2016,., , +,^, ,""Interview: Theo de Raadt of OpenBSD"",. ,NewsForge,. 28 March 2006,. Retrieved ,31 March, 2016,., , +,^ ,a, ,b, ,c, ,""Release Songs"",. ,OpenBSD,. Retrieved ,22 May, 2016,., , +,^, ,Beck, Bob (25 February 2014). ,""Google Summer of Code 2014"",. ,openbsd-misc, (Mailing list),. Retrieved ,4 March, 2014,., , +,^, ,""GSOC 2014 with the OpenBSD Foundation"",. ,Google Summer of Code 2014,. Retrieved ,4 March, 2014,., , +,^, ,Chisnall, David (20 January 2006). ,""BSD: The Other Free UNIX Family"",. ,InformIT,. ,Archived, from the original on 14 March 2014., , +,^, ,Smith, Jesse (18 November 2013). ,""OpenBSD 5.4: Puffy on the Desktop"",. ,Archived, from the original on 30 April 2014., , +,^, ,Cranor, Chuck D. ,""Chuck Cranor's Home Page"",. Retrieved ,13 December, 2011,. ,I also hosted and helped create the first Anonymous CVS server on the Internet (the original ,anoncvs,.openbsd,.org, [...], , +,^ ,a, ,b, ,Cranor, Chuck D.; ,de Raadt, Theo, (6 June 1999). ,Opening the Source Repository with Anonymous CVS,. ,USENIX, Annual Technical Conference. Monterey, California,. Retrieved ,13 December, 2011,., , +,^, ,""Project Goals"",. ,OpenBSD,. Retrieved ,18 May, 2016,. ,Integrate good code from any source with acceptable licenses. [...], NDAs are never acceptable., , +,^, ,de Raadt, Theo,; Hallqvist, Niklas; Grabowski, Artur; Keromytis, Angelos D.; ,Provos, Niels, (6 June 1999). ,""Randomness Used Inside the Kernel"",. ,Cryptography in OpenBSD: An Overview,. ,USENIX, Annual Technical Conference. Monterey, California,. Retrieved ,1 February, 2014,., , +,^ ,a, ,b, ,de Raadt, Theo, (5 December 2006). ,""Presentation at OpenCON"",. ,OpenBSD,. Retrieved ,13 December, 2011,., , +,^, ,""Copyright Policy"",. ,OpenBSD,. Retrieved ,13 December, 2011,., , +,^, ,Matzan, Jem (15 June 2005). ,""BSD cognoscenti on Linux"",. ,NewsForge,. ,Linux.com,. Retrieved ,28 May, 2016,., , +,^, ,Gasperson, Tina (6 June 2001). ,""OpenBSD and ipfilter still fighting over license disagreement"",. ,Linux.com,. Archived from ,the original, on 26 June 2008., , +,^, ,""src/usr.sbin/mrinfo/mrinfo.c – view – 1.7"",. ,cvsweb.openbsd.org,. 31 July 2001,. Retrieved ,24 May, 2016,. ,New license from Xerox! This code is now FREE! Took a while and a lot of mails, but it is worth it., , +,^, ,""src/usr.sbin/map-mbone/mapper.c – view – 1.5"",. ,cvsweb.openbsd.org,. 31 July 2001,. Retrieved ,24 May, 2016,. ,New license from Xerox! This code is now FREE! Took a while and a lot of mails, but it is worth it., , +,^, ,de Raadt, Theo, (24 August 2001). ,""Re: Why were all DJB's ports removed? No more qmail?"",. ,openbsd-misc, (Mailing list). Archived from ,the original, on 19 April 2016., , +,^, ,Bernstein, Daniel J., (27 August 2001). ,""Re: Why were all DJB's ports removed? No more qmail?"",. ,openbsd-misc, (Mailing list). Archived from ,the original, on 4 February 2012., , +,^, ,Espie, Marc (28 August 2001). ,""Re: Why were all DJB's ports removed? No more qmail?"",. ,openbsd-misc, (Mailing list). Archived from ,the original, on 19 April 2016., , +,^, ,Hartmeier, Daniel (10 June 2002). ,Design and Performance of the OpenBSD Stateful Packet Filter (pf),. ,USENIX, Annual Technical Conference. Monterey, California,. Retrieved ,13 December, 2011,., , +,^, ,The OpenBSD PF Packet Filter Book: PF for NetBSD, FreeBSD, DragonFly and OpenBSD,. Reed Media Services. ,ISBN, ,0-9790342-0-5,. Retrieved ,19 May, 2016,., , +,^, ,McAllister, Neil (8 July 2015). ,""Microsoft rains cash on OpenBSD Foundation, becomes top 2015 donor"",. ,The Register,. Retrieved ,27 May, 2016,., , +,^, ,""Contributors"",. ,OpenBSD Foundation,. Retrieved ,27 May, 2016,., , +,^, ,""OpenBSD Project in Financial Danger"",. ,Slashdot,. 21 March 2006,. Retrieved ,12 December, 2014,., , +,^, ,""Mozilla Foundation Donates $10K to OpenSSH"",. ,Slashdot,. 4 April 2006,. Retrieved ,12 December, 2014,., , +,^, ,""GoDaddy.com Donates $10K to Open Source Development Project"",. ,The Hosting News,. 19 April 2006. Archived from ,the original, on 11 November 2006., , +,^, ,Beck, Bob (14 January 2014). ,""Request for Funding our Electricity"",. ,openbsd-misc, (Mailing list),. Retrieved ,17 May, 2016,., , +,^ ,a, ,b, ,Bright, Peter (20 January 2014). ,""OpenBSD rescued from unpowered oblivion by $20K bitcoin donation"",. ,Ars Technica,. Retrieved ,20 January, 2014,., , +,^, ,""The OpenBSD Foundation 2014 Fundraising Campaign"",. ,OpenBSD Foundation,. Retrieved ,24 May, 2014,., , +,^, ,Varghese, Sam (8 October 2004). ,""Staying on the cutting edge"",. ,The Age,. Retrieved ,13 December, 2011,., , +,^, ,Laird, Cameron; Staplin, George Peter (17 July 2003). ,""The Essence of OpenBSD"",. ,ONLamp,. Retrieved ,13 December, 2011,., , +,^, ,de Raadt, Theo, (19 December 2005). ,""2.3 release announcement"",. ,openbsd-misc, (Mailing list). ,Without [SNI's] support at the right time, this release probably would not have happened., , +,^, ,Wayner, Peter (13 July 2000). ,""18.3 Flames, Fights, and the Birth of OpenBSD"",. ,Free For All: How Linux and the Free Software Movement Undercut the High Tech Titans, (1st ed.). ,HarperBusiness,. ,ISBN, ,978-0-06-662050-3,. Retrieved ,13 December, 2011,., , +,^, ,Miller, Todd C.; ,de Raadt, Theo, (6 June 1999). ,strlcpy and strlcat - Consistent, Safe, String Copy and Concatenation,. ,USENIX, Annual Technical Conference. Monterey, California,. Retrieved ,13 December, 2011,., , +,^, ,de Raadt, Theo,; Hallqvist, Niklas; Grabowski, Artur; Keromytis, Angelos D.; ,Provos, Niels, (6 June 1999). ,Cryptography in OpenBSD: An Overview,. ,USENIX, Annual Technical Conference. Monterey, California,. Retrieved ,27 May, 2016,., , +,^, ,Provos, Niels, (9 August 2003). ,""Privilege Separated OpenSSH"",. Retrieved ,13 December, 2011,., , +,^, ,""Innovations"",. ,OpenBSD,. Retrieved ,18 May, 2016,. ,Privilege separation: [...] The concept is now used in many OpenBSD programs, for example [...] etc., , +,^, ,""Project History and Credits"",. ,OpenSSH,. Retrieved ,13 December, 2011,., , +,^, ,""SSH usage profiling"",. ,OpenSSH,. Retrieved ,13 December, 2011,., , +,^, ,Biancuzzi, Federico (18 March 2004). ,""An Interview with OpenBSD's Marc Espie"",. ,ONLamp,. Retrieved ,13 December, 2011,., , +,^, ,""Security"",. ,OpenBSD,. Retrieved ,13 December, 2011,. ,Secure by Default., , +,^, ,Wheeler, David A., (3 March 2003). ,""2.4. Is Open Source Good for Security?"",. ,Secure Programming for Linux and Unix HOWTO,. Retrieved ,13 December, 2011,., , +,^, ,de Raadt, Theo, (14 December 2010). ,""Allegations regarding OpenBSD IPSEC"",. ,openbsd-tech, (Mailing list),. Retrieved ,28 May, 2016,., , +,^, ,Holwerda, Thom (14 December 2010). ,""FBI Added Secret Backdoors to OpenBSD IPSEC"",. ,OSNews,. Retrieved ,13 December, 2011,., , +,^, ,Ryan, Paul (23 December 2010). ,""OpenBSD code audit uncovers bugs, but no evidence of backdoor"",. ,Ars Technica,. Retrieved ,9 January, 2011,., , +,^, ,Mathew J. Schwartz (22 December 2010). ,""OpenBSD Founder Believes FBI Built IPsec Backdoor"",. ,InformationWeek: DARKreading,., , +,^, ,""OpenBSD"",. ,OpenBSD,. Archived from ,the original, on 28 May 2002., , +,^, ,""OpenSSH Remote Challenge Vulnerability"",. ,Internet Security Systems,. 26 June 2002,. Retrieved ,13 December, 2011,., , +,^, ,""OpenSSH 'Challenge-Response' authentication buffer overflow"",. ,Internet Security Systems,. Retrieved ,13 December, 2011,., , +,^, ,""OpenBSD's IPv6 mbufs remote kernel buffer overflow"",. ,Core Security Technologies,. 13 March 2007,. Retrieved ,13 December, 2011,., , +,^, ,Grimes, Roger A. (29 December 2006). ,""New year's resolution No. 1: Get OpenBSD"",. ,InfoWorld,., , +,^, ,""Anonymous CVS"",. ,OpenBSD,. Retrieved ,13 December, 2011,., , +,^, ,""Mirrors"",. ,OpenBSD,. Retrieved ,22 May, 2016,., , +,^, ,""Orders"",. ,OpenBSD,. Retrieved ,20 May, 2016,., , +,^ ,a, ,b, ,""Packages and Ports"",. ,OpenBSD Frequently Asked Questions,. Retrieved ,22 May, 2016,., , +,^, ,""OpenBSD"",. ,mckusick.com,. Retrieved ,12 December, 2014,., , +,^, ,de Raadt, Theo, (19 May 1999). ,""OpenBSD 2.5 Release Announcement"",. ,openbsd-announce, (Mailing list). Archived from ,the original, on 14 March 2014. ,OpenBSD 2.5 introduces the new Cop daemon image done by cartoonist Ty Semeka., , +,^, ,""OpenBSD 2.7"",. ,OpenBSD,. Retrieved ,22 May, 2016,., , +,^, ,Matzan, Jem (1 December 2006). ,""OpenBSD 4.0 review"",. ,Software in Review,. Retrieved ,13 December, 2011,. ,Each OpenBSD release has a graphical theme and a song that goes with it. The theme reflects a major concern that the OpenBSD programmers are addressing or bringing to light., , +, +, +,External links,[,edit,], +, +,Listen to this article, (,info/dl,) +, +, +, +, +, +, +, +, +, +, +, +, +,This audio file was created from a revision of the article "",OpenBSD,"" dated 2011-10-23, and does not reflect subsequent edits to the article. (,Audio help,), +,More spoken articles, +, +, +, +, +,Wikimedia Commons has media related to ,OpenBSD,., +, +, +, +, +, +,The Wikibook ,Guide to Unix, has a page on the topic of: ,OpenBSD, +, +, +, +,Official website, +,OpenBSD, at ,DistroWatch, +,OpenBSD ports & packages, ,latest package info, +,OpenBSD source code search, +,old list of OpenBSD commands, +,Video – An OpenBSD talk by Michael Lucas, on ,YouTube, +, +, +, +, +, +, +, +,v, +,t, +,e, +, +, +,The ,OpenBSD, Project, +, +, +, +,Operating system, +, +, +, +,OpenBSD, +, +,version history, +,security, +, +, +, +, +, +, +, +,Related projects, +, +, +, +,CARP, +,LibreSSL, +,mandoc, +,OpenSSH, +,OpenBGPD, +,OpenIKED, +,OpenOSPFD, +,OpenNTPD, +,OpenSMTPD, +,PF, +,sndio, +,spamd, +,Systrace, +,tmux, +,Xenocara, +, +,cwm, +, +, +,W^X, +, +, +, +, +, +,People, +, +, +, +,Theo de Raadt, +,Niels Provos, +,OpenBSD Foundation, +,Plaid Tongued Devils, +, +, +, +, +, +,Resources, +, +, +, +,OpenBSD Journal, +, +, +, +, +, +, +, +, +, +, +, +, +,v, +,t, +,e, +, +, +,Berkeley Software Distribution, +, +, +, +,People, +, +, +, +,Bob Fabry, +,Keith Bostic, +,Marshall Kirk McKusick, +,Michael J. Karels, +,Bill Joy, +,Samuel Leffler, +,Jordan Hubbard, +,Theo de Raadt, +,Poul-Henning Kamp, +,Lynne, and ,William Jolitz, +, +, +, +, +, +,Derivatives, +, +, +, +, +,Active, +, +, +, +,FreeBSD, +,OpenBSD, +,NetBSD, +,DragonFly BSD, +,TrueOS, +,Junos OS, +,Darwin, +,PS3,/,PS4,/,PSP,/,PS Vita operating system, +,Nintendo Switch operating system, +,Full list, +, +, +, +, +, +,Discontinued, +, +, +, +,386BSD, +,BSD/OS, +,SunOS, +,Ultrix, +, +, +, +, +, +, +, +, +,Companies, +, +, +, +,Sleepycat Software, +,Walnut Creek CDROM, +,Berkeley Software Design, +,iXsystems, +, +, +, +, +, +,Other topics, +, +, +, +,Comparison, +,History, +,Licensing, +,BSD Daemon, +,Computer Systems Research Group, +, +, +, +, +, +, +, +, +, +, +, +, +,v, +,t, +,e, +, +, +,Unix, and ,Unix-like, ,operating systems, +, +, +, +, +, +, +,BSD, +, +,386BSD, +, +,FreeBSD, +,NetBSD, +,OpenBSD, +,DragonFly BSD, +, +, +,NeXTSTEP, +,Darwin, +, +,macOS, +,iOS, +, +, +,SunOS, +,Ultrix, +, +, +,Coherent, +,GNU, +,Linux, +, +,Android, +,Chrome OS, +, +, +,LynxOS, +,MINIX, +,QNX, +, +,BlackBerry 10, +, +, +,Research Unix, +,System V, +, +,A/UX, +,AIX, +,HP-UX, +,illumos, +,IRIX, +,OpenServer, +,Solaris, +,Tru64 UNIX, +,UnixWare, +, +, +,Xenix, +,more..., +, +, +, +, +, +, +, +, +, ,Category, +, ,Commons, +, ,Book, +, +, +, +, +, +, +, +, +, +,Authority control, +, +, +, +,MusicBrainz,: ,1ffebdcd-b78e-463d-9ce9-f2536be58db5, +, +, +, +, +, +, + + +, +, +, +, +",OpenBSD +" 3 September 2017, at 09:03."," +, +,Adrian Holovaty, +, +, +, +,Adrian Holovaty in 2009, +, +, +, +,Born, +,1981 (age 36–37), +,Naperville, Illinois, +, +, +,Nationality, +,USA, +, +, +,Alma mater, +,Missouri School of Journalism, (B.A., 2001), +, +, +,Occupation, +,web developer, journalist, entrepreneur, +, +, +,Known for, +,Django Web framework, +, +, +,Adrian Holovaty, (born 1981) is an American web developer, journalist and entrepreneur from ,Chicago, Illinois,, living in ,Amsterdam, the Netherlands,. He is co-creator of the ,Django web framework, and an advocate of ""journalism via computer programming""., +, +, +, +,Contents, +, +, +,1, ,Life and career, +, +,1.1, ,Crime mapping innovations, +, +, +,2, ,References, +,3, ,External links, +, +, +, +,Life and career,[,edit,], +,Holovaty, a ,Ukrainian American,, grew up in ,Naperville, Illinois,. He graduated from the ,Missouri School of Journalism, in 2001 and worked as a web developer/journalist for ,The Atlanta Journal-Constitution,, ,Lawrence Journal-World, and ,The Washington Post, before starting ,EveryBlock,, a web startup that provided ""microlocal"" news, in 2007.,[1], +,While working at the ,Lawrence Journal-World, from 2002 to 2005, he and other web developers (,Simon Willison,, Jacob Kaplan-Moss and Wilson Miner,[2],) created ,Django,, an ,open source, ,web application framework, for ,Python,. He and Kaplan-Moss served as the framework's ,Benevolent Dictators for Life, until January 2014.,[3], The pair wrote ,The Django Book,, first published in 2007., +,Holovaty is also a guitarist. In 1999, he recorded an album of his own guitar compositions,,[4], and since 2007 he has posted videos of his acoustic guitar arrangements on ,YouTube,, building an audience of more than 20,000 subscribers.,[5], In 2012 he and PJ Macklin founded ,SoundSlice,, a ,collaboratively edited, website which shows YouTube music videos alongside simultaneous animated ,tablature,, intended to help guitarists learn new musical pieces.,[6], +,Crime mapping innovations,[,edit,], +,In 2005, Holovaty launched ,chicagocrime.org,, a ,Google Maps, ,mashup, of ,Chicago Police Department, crime data.,[7], The site won the 2005 Batten Award for Innovations in Journalism,[8], and was named by ,The New York Times, as one of 2005's best ideas.,[9], +,As one of the first Google Maps mashups, it helped influence Google to create its official Google Maps API.,[10], Newspaper sites such as the ,Chicago Tribune, and the ,Chicago Sun-Times, have incorporated a map from EveryBlock, the successor to chicagocrime.org, into their web sites.,[11], +,In 2007, Holovaty was awarded a $1.1 million ,Knight Foundation, grant and left his job as editor of editorial innovations at ,washingtonpost.com, to start EveryBlock, the successor to chicagocrime.org.,[12], On August 17, 2009 EveryBlock was officially acquired by ,msnbc.com,.,[13], The terms of the deal were not disclosed.,[14], In February 2013, NBC News announced that it was shutting down EveryBlock.,[15], +,References,[,edit,], +, +, +, +,^, ,Goodbye hyperlocal, hello microlocal | Holovaty.com, +,^, ,Django committers, +,^, ,Adrian and Jacob retiring as Django BDFLs | Holovaty.com, +,^, ,Music | Holovaty.com, +,^, ,YouTube - adrianholovaty's Channel, +,^, ,""About Soundslice"",. SoundSlice LLC. November 2012., , +,^, ,Announcing chicagocrime.org | Holovaty.com, +,^, ,Batten award, +,^, ,Do-It-Yourself Cartography, +,^, ,Official Google Blog: The world is your JavaScript-enabled oyster, +,^, ,Street Wise: ,http://www.chicagomag.com/Chicago-Magazine/June-2009/Street-Wise/, +,^, ,Knight Foundation grant | Holovaty.com, +,^, ,Nieman Journalism Lab. ,""EveryBlock"",. ,Encyclo: an encyclopedia of the future of news,. Retrieved ,1 April, 2012,., , +,^, ,http://www.msnbc.msn.com/id/32443365/ns/business-us_business/, +,^, ,""NBC News shuts down hyperlocal site EveryBlock"",. CNN. February 7, 2013,. Retrieved ,February 7,, 2013,., , +, +, +, +,External links,[,edit,], +, +,Holovaty.com -- personal site, +,EveryBlock, +,YouTube videos, +, + + +, +, +, +, +",Adrian Holovaty +" 15 January 2018, at 11:32."," +,Drupal, +, +, +, +, +, +,Drupal 8 in action. Showing in-context editing and previews (,WYSIWYG,)., +, +, +, +,Original author(s), +,Dries Buytaert, +, +, +,Initial release, +,May 18, 2000,; 17 years ago, (,2000-05-18,),[1], +, +, +, +, +, +,Stable release, +, +,8.4.2,[2], / 3 November 2017,; 2 months ago, (,2017-11-03,), +, +, +, +, +, +, +,Repository, +, +, +, +,http://cgit.drupalcode.org/drupal, +, +, +, +, +, +,Development status, +,Active, +, +, +,Written in, +,PHP,, using ,Symfony, +, +, +,Operating system, +,Unix-like,, ,Windows, +, +, +,Platform, +,Cross-platform, +, +, +,Size, +,80 MB (uncompressed Drupal 8 core),[2], +, +, +,Available in, +,Multilingual, +, +, +,Type, +,Content management framework,, ,Content management system,, ,Community, and ,Blog software, +, +, +,License, +,GPLv2, or later,[3], +, +, +,Website, +,www,.drupal,.org, +, +, +,Drupal, ,/,ˈ,d,r,uː,p,əl,/, is ,[4], a ,free, and ,open source, ,content-management framework, written in ,PHP, and distributed under the ,GNU General Public License,.,[3],[5],[6], Drupal provides a ,back-end, framework for at least 2.3% of all ,web sites, worldwide,[7],[8], – ranging from personal ,blogs, to corporate, political, and government sites.,[9], Systems also use Drupal for ,knowledge management, and for business collaboration.,[10], +,As of November 2017,[update],, the Drupal community is composed of more than 1.3 million members,,[11],[12], including 109,000 users actively contributing,,[13], resulting in more than 39,000 free modules that extend and customize Drupal functionality,,[14], over 2,500 free themes that change the look and feel of Drupal,,[15], and at least 1,180 free distributions that allow users to quickly and easily set up a complex, use-specific Drupal in fewer steps.,[16], +,The standard release of Drupal, known as ,Drupal core,, contains basic features common to ,content-management systems,. These include user account registration and maintenance, menu management, ,RSS, feeds, taxonomy, page layout customization, and system administration. The Drupal core installation can serve as a simple Web site, a single- or multi-user blog, an ,Internet forum,, or a community Web site providing for ,user-generated content,., +,Drupal also describes itself as a ,Web application framework,.,[17], When compared with notable frameworks Drupal meets most of the generally accepted ,feature requirements, for such web frameworks.,[18],[19],[20], +,Although Drupal offers a sophisticated ,API, for developers, basic Web-site installation and administration of the framework require no programming skills.,[21], +,Drupal runs on any ,computing platform, that supports both a ,Web server, capable of running PHP and a ,database, to store content and configuration., +, +, +, +,Contents, +, +, +,1, ,History, +,2, ,Core, +, +,2.1, ,Core modules, +,2.2, ,Core themes, +,2.3, ,Localization, +,2.4, ,Auto-update notification, +,2.5, ,Database abstraction, +,2.6, ,Windows development, +,2.7, ,Accessibility, +, +, +,3, ,Extending the core, +, +,3.1, ,Modules, +,3.2, ,Themes, +,3.3, ,Distributions, +, +, +,4, ,Architecture, +,5, ,Community, +,6, ,Security, +,7, ,Criticism, +,8, ,See also, +,9, ,References, +,10, ,Further reading, +,11, ,External links, +, +, +, +,History,[,edit,], +, +,Latest major releases, +, +,Version, +,Release date, +, +, +,8.4.2, +,November 3, 2017,[2], +, +, +,8.2.8, +,April 19, 2017,[2], +, +, +,7.56, +,June 21, 2017,[22], +, +, +,6.38, +,February 24, 2016,[23], +, +, +,5.23, +,August 11, 2010,[24], +, +, +, +, +, +, +Drupal version 1-6 release history timeline, +, +, +,Originally written by ,Dries Buytaert, as a ,message board,, Drupal became an ,open source, project in 2001.,[25], The name ,Drupal, represents an English rendering of the ,Dutch, word ,druppel,, which means ""drop"" (as in a water droplet).,[26], The name came from the now-defunct Drop.org Web site, whose code slowly evolved into Drupal. Buytaert wanted to call the site ""dorp"" (Dutch for ""village"") for its community aspects, but mistyped it when checking the domain name and thought the error sounded better.,[25], +,Interest in Drupal got a significant boost in 2003 when it helped build ""DeanSpace"" for ,Howard Dean,, one of the candidates in the ,U.S. Democratic Party,'s primary campaign for the ,2004 U.S. presidential election,. DeanSpace used open-source sharing of Drupal to support a decentralized network of approximately 50 disparate, unofficial pro-Dean websites that allowed users to communicate directly with one another as well as with the campaign.,[27], After Dean ended his campaign, members of his Web team continued to pursue their interest in developing a Web platform that could aid political activism by launching CivicSpace Labs in July 2004, ""...the first company with full-time employees that was developing and distributing Drupal technology."",[28], Other companies began to also specialize in Drupal development.,[29],[30], By 2013 the Drupal Web site listed hundreds of vendors that offered Drupal-related services.,[31], +,As of 2014,[update], Drupal is developed by a community,,[32], and its popularity is growing rapidly.,[,citation needed,], From July 2007 to June 2008 the Drupal.org site provided more than 1.4 million downloads of Drupal software, an increase of approximately 125% from the previous year.,[33],[34], +,As of January 2017,[update], more than 1,180,000 sites use Drupal.,[35], These include hundreds of well-known organizations,,[36], including corporations, media and publishing companies, governments, non-profits,,[37], schools, and individuals. Drupal has won several ,Packt, Open Source CMS Awards,[38], and won the ,Webware 100, ,[,clarification needed,], three times in a row.,[39],[40], +,On March 5, 2009 Buytaert announced a ,code freeze, for Drupal 7 for September 1, 2009.,[41], Drupal 7 was released on January 5, 2011, with release parties in several countries.,[42], After that, maintenance on Drupal 5 stopped, with only Drupal 7 and Drupal 6 maintained.,[43], Drupal 7 series maintenance updates are released regularly.,[44], +,On December 1, 2012, Drupal 8 started its feature completion.,[45], About three years later, on October 7, 2015 Drupal 8 first release candidate (rc1) was announced.,[46], Drupal 8 includes new features and improvements for both users and developers, including: a revamped user interface; WYSIWYG and in-place editing; improved mobile support; added and improved key contributed modules including Views, Date, and Entity Reference; introduced a new object-oriented backend leveraging Symfony components; revamped configuration management; and improved multilingual support. Drupal 8 rc1 is the collective work of over 3,200 core contributors.,[47], +,Drupal 8.0.0 was released on November 19, 2015.,[48], A subsequent upgrade to it is also available in the form of Drupal 8.1.0,[49], that brings numerous improvements, including CKEditor WYSIWYG enhancements, added APIs, an improved help page, and two new experimental modules. Experimental modules are meant for testing purposes, but are not yet fully supported., +,Core,[,edit,], +,In the Drupal community, ""core"" refers to the collaboratively built codebase that can be extended through contributory modules and for versions prior to Drupal 8 is kept outside of the ""sites"" folder of a Drupal installation.,[50], (Starting with version 8, core is kept in its own 'core' sub-directory.) Drupal core is the stock element of Drupal. Bootstrap and Common libraries are defined as Drupal core and all other functionality is defined as Drupal modules including the system module itself., +,In a Drupal website's default configuration, authors can contribute content as either registered or anonymous users (at the discretion of the administrator). This content is accessible to web visitors through a variety of selectable criteria. As of Drupal 8, Drupal has adopted some ,Symfony, libraries into Drupal core., +,Core modules also includes a hierarchical ,taxonomy, system, which lets developers categorize content or ,tagged, with key words for easier access.,[21], +,Drupal maintains a detailed ,changelog, of core feature updates by version.,[51], +,Core modules,[,edit,], +,Drupal core includes optional modules that can be enabled by the administrator to extend the functionality of the core website.,[52], +,The core Drupal distribution provides a number of features, including:,[52], +, +, +,Access statistics and logging, +,Advanced search, +,Blogs, books, comments, forums, and polls, +,Caching and feature throttling for improved performance, +,Descriptive URLs, +,Multi-level menu system, +,Multi-site support,[53], +,Multi-user content creation and editing, +,OpenID, support, +,RSS feed and feed aggregator, +,Security and new release update notification, +,User profiles, +,Various access control restrictions (user roles, IP addresses, email), +,Workflow tools (triggers and actions), +, +, +,Core themes,[,edit,], +,Drupal includes core themes, which customize the ""look and feel"" of Drupal sites,,[54], for example, Garland and Bartik., +,The Color Module, introduced in Drupal core 5.0, allows administrators to change the color scheme of certain themes via a browser interface.,[55], +,Localization,[,edit,], +,As of January 2017,[update],, Drupal had been made available in 100 languages and ,English, (the default).,[56], Support is included for right-to-left languages such as ,Arabic,, ,Persian,, and ,Hebrew,.,[57], +,Drupal localization is built on top of ,gettext,, the GNU ,internationalization and localization, (i18n) library., +,Auto-update notification,[,edit,], +,Drupal can automatically notify the administrator about new versions of modules, themes, or the Drupal core.,[57], It's important to update quickly after security updates are released., +,Before updating it is highly recommended to take backup of core, modules, theme, files and database. If there is any error shown after update or new updates is not compatible with a module, then it can be quickly replace by backup. There are several backup modules available in Drupal., +,On October 15, 2014, a sql injection vulnerability was announced and update released.,[58], Two weeks later the Drupal security team released an advisory explaining that everyone should act under the assumption that any site not updated within 7 hours of the announcement are infected.,[59], Thus, it can be extremely important to apply these updates quickly and usage of a tool to make this process easier like drush is highly recommended., +,Database abstraction,[,edit,], +,Prior to version 7, Drupal had functions that performed tasks related to databases, such as SQL query cleansing, multi-site table name prefixing, and generating proper SQL queries. In particular, Drupal 6 introduced an abstraction layer that allowed programmers to create SQL queries without writing SQL., +,Drupal 7 extends the data abstraction layer so that a programmer no longer needs to write SQL queries as text strings. It uses ,PHP Data Objects, to abstract the database. ,Microsoft, has written a database driver for their ,SQL Server,.,[60], Drupal 7 supports the file-based SQLite database engine, which is part of the standard PHP distribution., +,Windows development,[,edit,], +,With Drupal 7's new database abstraction layer, and ability to run on the Windows web server ,IIS,, it is now easier for Windows developers to participate in the Drupal community., +,A group on Drupal.org is dedicated to Windows issues.,[61], +,Accessibility,[,edit,], +,With the release of Drupal 7, ,Web accessibility, has been greatly improved by the Drupal community.,[62], Drupal is a good framework for building sites accessible to people with disabilities, because many of the best practices have been incorporated into the program code Core. The accessibility team is carrying on the work of identifying and resolving accessibility barriers and raising awareness within the community., +,Drupal 7 started the adoption of ,WAI-ARIA, support for ,Rich Internet Applications, and this has been carried further in Drupal 8. There have been many improvements to both the visitor and administrator sides of Drupal, especially:, +, +,Drag and drop functionality, +,Improved color contrast and intensity, +,Adding skip navigation to core themes, +,Adding labels by default for input forms, +,Fixing CSS display:none with consistent methods for hiding and exposing text on focus., +, +,The community also added an accessibility gate for core issues in Drupal 8.,[63], +,Extending the core,[,edit,], +,Drupal core is ,modular,, defining a system of ,hooks, and ,callbacks,, which are accessed internally via an ,API,.,[64], This design allows third-party contributed ,modules, and ,themes, to extend or override Drupal's default behaviors without changing Drupal core's code., +,Drupal isolates core files from contributed modules and themes. This increases flexibility and security and allows administrators to cleanly upgrade to new releases without overwriting their site's customizations.,[65], The Drupal community has the saying, ""Never hack core,"" a strong recommendation that site developers do not change core files.,[50], +,Modules,[,edit,], +,Contributed modules offer such additional or alternate features as image galleries, custom content types and content listings, ,WYSIWYG, editors, private messaging, third-party integration tools,,[66], integrating with BPM portals,,[67], and more. As of January 2017,[update], the Drupal website lists more than 36,500 free ,modules,.,[14], +,Some of the most commonly used contributed modules include:,[68], +, +,Content Construction Kit (CCK): allows site administrators to dynamically create content types by extending the database schema. ""Content type"" describes the kind of information. Content types include, but are not limited to, events, invitations, reviews, articles, and products. The CCK Fields API is in Drupal core in Drupal 7.,[69],[70], +,Views: facilitates the retrieval and presentation, through a database abstraction system, of content to site visitors. Basic views functionality has been added to core in Drupal 8.,[71], +,Panels: drag and drop layout manager that allows site administrators to visually design their site., +,Rules: conditionally executed actions based on recurring events., +,Features: enables the capture and management of features (entities, views, fields, configuration, etc.) into custom modules., +,Context: allows definition of sections of site where Drupal features can be conditionally activated, +,Media: makes photo uploading and media management easier, +,Services: provides an API for Drupal., +,Organic Groups Mailing List, +, +,Themes,[,edit,], +,As of January 2017,[update],, there are more than 2,400,[15], free community-contributed ,themes,. Themes adapt or replace a Drupal site's default look and feel., +,Drupal themes use standardized formats that may be generated by common third-party theme design engines. Many are written in the ,PHPTemplate, engine,[72], or, to a lesser extent, the ,XTemplate, engine.,[73], Some templates use hard-coded ,PHP,. Drupal 8 will integrate the ,Twig, templating engine., +,The inclusion of the PHPTemplate and XTemplate engines in Drupal addressed user concerns about flexibility and complexity.,[74], The Drupal theming system utilizes a ,template engine, to further separate ,HTML,/,CSS, from PHP. A popular Drupal contributed module called 'Devel' provides GUI information to developers and themers about the page build., +,Community-contributed themes,[75], at the Drupal website are released under a free ,GPL, license,,[76], and the most installed Drupal themes are ,listed on this page,.,[77], +,Distributions,[,edit,], +,In the past, those wanting a fully customized installation of Drupal had to download a pre-tailored version separately from the official Drupal core. Today, however, a distribution defines a packaged version of Drupal that upon installation, provides a website or application built for a specific purpose., +,The distributions offer the benefit of a new Drupal site without having to manually seek out and install third-party contributed modules or adjust configuration settings.,[78], They are collections of modules, themes, and associated configuration settings that prepare Drupal for custom operation. For example, a distribution could configure Drupal as a ""brochure"" site rather than a news site or ,online store,., +,Architecture,[,edit,], +,Drupal is based on the ,Presentation Abstraction Control, architecture, or PAC., +,The ,menu system, acts as the Controller. It accepts input via a single source (,HTTP GET, and ,POST,), routes requests to the appropriate helper functions, pulls data out of the Abstraction (nodes and, from Drupal 5 onwards, forms), and then pushes it through a filter to get a Presentation of it (the theme system)., +,It even has multiple, parallel PAC agents in the form of blocks that push data out to a common canvas (page.tpl.php).,[79], +,Community,[,edit,], +,Drupal.org has a large community of users and developers who provide active ,community, support by coming up with new updates to help improve the functionality of Drupal,,[80], As of January 2017,[update], more than 105,400 users are actively contributing.,[13], The semiannual DrupalCon conference alternates between North America, Europe and Asia.,[81], Attendance at DrupalCon grew from 500 at ,Szeged, in August 2008, to over 3,700 people at Austin, Texas in June, 2014., +,Smaller events, known as ""Drupal Camps"" or DrupalCamp,,[82], occur throughout the year all over the world. The annual Florida DrupalCamp brings users together for ,Coding for a Cause, that benefits a local nonprofit organization, as does the annual GLADCamp (,Greater Los Angeles Drupal, Camp) event, ,Coders with a Cause,., +,The Drupal community also organizes professional and semi-professional gatherings called ,meetups, at a large number of venues around the world. In July, 2013, ,Droplabs,, a co-working space in Los Angeles, California, was recognized as the world's ""Top Drupal Location,[83],"" (with 62 recorded events) when compared with other event venues over a 12-month period., +,There are a number of active Drupal forums,,[84], mailing lists,[85], and discussion groups.,[86], Drupal also maintains several ,IRC, channels,[87], on the ,Freenode, network., +,There are over 30 national communities,[88], around drupal.org offering language-specific support., +,Notable Drupal users include ,NBC,, ,Taboola,, and ,Patch,.,[89], +,Security,[,edit,], +,Drupal's policy is to announce the nature of each security vulnerability once the fix is released.,[90],[91], +,Administrators of Drupal sites are automatically notified of these new releases via the Update Status module (Drupal 6) or via the Update Manager (Drupal 7).,[92], +,Drupal maintains a security announcement mailing list, a history of all security advisories,,[93], a security team home page,,[94], and an RSS feed,[95], with the most recent security advisories., +,In mid-October 2014,,[96], Drupal issued a ""highly critical"" security advisory regarding an ,SQL injection, bug in Drupal 7, also known as Drupalgeddon.,[97],[98], +,Downloading and installing an upgrade to Drupal 7.32 fixes the vulnerability, but does not remove any ,backdoor, installed by hackers if the site has already been ,compromised,.,[99], Attacks began soon after the vulnerability was announced. According to the Drupal security team, where a site was not patched within hours of the announcement, it should be considered compromised and taken offline by being replaced with a static HTML page while the administrator of its server must be told that other sites on the same server may also have been compromised., +,To solve the problem, the site must be restored using backups from before October 15, be patched and manually updated, and anything merged from the site must be audited.,[100], +,Criticism,[,edit,], +, +, +, +, +, +, +,This section needs to be ,updated,. ,Please update this article to reflect recent events or newly available information., ,(December 2014), +, +, +, +,In an article,[101], about the adoption of Drupal by the Whitehouse.gov site, ,Slate, associate editor Chris Wilson,[102], lists some common criticisms of Drupal. Other criticisms have included:, +, +,Usability:, Aspects of the Drupal 6 administration interface were confusing and intimidating to some, particularly for new administrators.,[103],[104],[105], According to Dries Buytaert, Drupal 7 addressed 90% of the problems identified by usability tests conducted at the Universities of Minnesota and Baltimore.,[106],[107], To achieve this, ,Acquia, (the company founded by the project lead of Drupal) hired ,user experience, designer Mark Boulton to work with the Drupal community to design an improved user interface for Drupal's administration interface.,[108], The majority of his team's design work has been implemented by the community in Drupal 7. The 2011 usability test results from the University of Minnesota Office of Information Technology show that all of the major usability problems identified in Drupal 6 are either vastly improved or non-existent in Drupal 7. However, some new usability problems were identified.,[109],[110], Since the release of Drupal 7 there are now various distributions and applications to enhance the Back-end Usability of Drupal such as Drupal Gardens,,[111], Open Enterprise,[112], and Mitkom Builder.,[113], +,Learning curve:, Some users describe Drupal as being difficult to master.,[114],[115], Drupal's many contributed modules can have overlapping functionality and have been reported as overwhelming to new users.,[116], +,Backward compatibility (for software development):, Prior to 7, Drupal did not commit to backward compatibility across major revisions.,[117], This means that module and theme developers may have to rework their code to make it compatible. However, Drupal's policy is to not change how it uses data. This means that data from previous versions is still usable without alteration in the new release.,[118],[119], Drupal documents any incompatibilities, allowing the user to make informed decisions about when and whether to upgrade. Upgrades from 8 to 9 and beyond will require substantially less effort."" ,[120], +,Performance/scalability:, In 2008, ,performance, tests between Drupal 6.1 and ,Joomla, 1.5 demonstrated that Drupal's pages were delivered ""significantly faster"" than those of Joomla.,[121], Despite this, arguments over speed persist.,[122], Drupal is likely to be slower than a special-purpose application for a given task. For example, ,WordPress, typically outperforms Drupal as a single-user blogging tool. Drupal positions itself for broader applications requirements that are outside the scope of more narrowly focused applications.,[123], Drupal offers ,caching, to store various page elements, the use of which resulted in a 508% improvement in one benchmark.,[124], When using Drupal's default Page Cache mechanism, the cached pages are delivered only to anonymous users, so contributed modules must be installed to allow caching content for logged in users.,[125],[126], Like performance, ,scalability, (the ability to add servers to handle growing numbers of visitors with consistent response) can become a concern on large, interactive sites. ,MySQL,'s query caching can help reduce the load on the database server caused by Drupal's high ,query rate,.,[127],[128], Drupal caches database schema ,metadata, as well as elements such as blocks, forms and menus.,[129], Drupal 7 increases performance in database queries and reduces PHP code usage.,[130], +,Integrability with hosting structures:, Because of Drupal's demanding query requirements, Drupal-based websites can quickly become very taxing to hosts whose databases reside on a machine separate from their ,HTTP server,. While the issue can normally be addressed by implementing aggressive ,caching, as described above, such methods may be unimplementable in cases where the host does not offer access to ,PHP accelerators, like ,XCache, or ,APC,. Drupal has plugins that facilitate similar caching without requiring special PHP extensions.,[131],[132], +,The Drupal core search is ineffective at searching content:,[,citation needed,], There are contributed modules that will greatly improve the search functionality on a Drupal website, but they are not easily accessible due to a high learning curve and the difficulty users have in general of finding the right module.,[,citation needed,], One of the faceted search options is ,Apache Solr, Search Integration module, however, the module requires a dedicated server or ,virtual private server, (VPS) to operate because Solr must run on a ,servlet, container, e.g. ,Tomcat,, ,Jetty, or ,Resin,. These requirements make it harder for a Drupal website to have a functional search feature. In response some companies have created Apache Solr ,SaaS, products., +,Many published, yet incomplete or outdated modules,[133], While Drupal's site boasts over 30,000 downloadable modules, searching the Drupal module directory finds many that are incomplete abandoned projects and do not work at all, only work for an outdated version due to lack of backward compatibility, or are unusable due to serious bugs. This is due to the open source nature of Drupal, and the fact that anyone is free to start a module and publish it on drupal.org. Modules with an active maintenance team are often highly polished, secure, and nearly bug free. Recent changes to the drupal.org website now let users search for modules, themes, and distributions, while filtering results by stability. ,[134], +, +, +,Difficult to unit test:,[135], Drupal 7 doesn't follow MVC framework and stores all of its configurations in database and as a result, unit testing the code without touching the database becomes extremely difficult. As a result, developers have resorted to using integration testing frameworks such as Red Test or behavior-driven development framework such as Behat and Codeception. Drupal 8 has taken a great stride in making it easier for developers to write unit-testable code., +, +,See also,[,edit,], +, +, +,Free software portal, +, +, +, +,Comparison of web frameworks, +,List of applications with iCalendar support, +,List of content management systems, +, +,References,[,edit,], +, +, +,^, ,Earliest tagged releases, +,^ ,a, ,b, ,c, ,d, ,Drupal 8 release history; drupal.org, +,^ ,a, ,b, ,""Licensing FAQ"",. ,drupal.org,. Retrieved ,2009-04-08,., , +,^, ,A query on ,Drupal,',s official website on March 2009: ,How does one pronounce ""Drupal""?, (accessed 19 June 2013), +,^, ,""The Drupal Overview"",. ,drupal.org,. Retrieved ,2009-04-08,., , +,^, ,""System Requirements"",. ,drupal.org,. Retrieved ,2009-04-08,., , +,^, ,W3Techs (2011-07-15). ,""Usage of content management systems for websites"",. Retrieved ,2011-07-15,., , +,^, ,BuiltWith (2011-03-28). ,""Drupal Usage Statistics"",. Retrieved ,2011-03-28,., , +,^, ,""The State of Drupal 2010 speech"",. Archive.org. 2001-03-10,. Retrieved ,2011-08-31,., , +,^, ,""Knowledge management with Drupal"",., , +,^, ,""Getting Involved | Drupal.org"",. ,www.drupal.org,. 2017-04-10,. Retrieved ,2017-04-11,. ,Drupal.org Activity, , +,^, ,""1 Million Users on Drupal.org!"",. ,www.drupal.org,. 2013-10-11., , +,^ ,a, ,b, ,""Drupal Homepage"",. ,www.drupal.org,. 2017-04-09,. Retrieved ,2017-04-09,., , +,^ ,a, ,b, ,""Module project"",. ,www.drupal.org,. 2017-04-09,. Retrieved ,2017-04-09,., , +,^ ,a, ,b, ,""Download & Extend: Themes"",. ,www.drupal.org,. 2017-04-09,. Retrieved ,2017-04-09,., , +,^, ,""Download & Extend: Distributions"",. ,www.drupal.org,. 2017-04-09,. Retrieved ,2017-04-09,., , +,^, ,""Drupal 7 as an enterprise web application framework"",. ,drupal.org,., , +,^, ,""Comparison of web frameworks"",. ,Wikipedia,. 2017-04-07. ,Comparison of features, , +,^, ,O'Connor, William (2014-08-19). ,""The Drupal API turns a CMS into a true enterprise application - O'Reilly Radar"",. ,O'Reilly Media,. Retrieved ,2017-04-11,., , +,^, ,Diana, Dupuis (2013-05-15). ,""Drupal Is a Framework: Why Everyone Needs to Understand This"",. ,Linux Journal,., , +,^ ,a, ,b, ,""Features"",. ,drupal.org,. Retrieved ,2009-04-08,., , +,^, ,Drupal 7 release history; drupal.org, +,^, ,Drupal 6 release history; drupal.org, +,^, ,Drupal 5 release history; drupal.org, +,^ ,a, ,b, ,""History"",. ,drupal.org,. Retrieved ,2009-04-08,., , +,^, ,""Druppel: Dutch to English Translation"",. ,Babylon Translation,. Retrieved ,2009-04-08,., , +,^, ,Benjamin Melançon; et al. (2011). ,The Definitive Guide to Drupal 7, (2nd ed.). Apress. p. 823. ,ISBN, ,9781430231356,. Retrieved ,2012-05-27,., , +,^, ,Critchley, Spencer (2006-05-03). ,""Digital Politics: An Interview With CivicSpace Founder Zack Rosen"",. ,O'Reilly Media,. Retrieved ,2012-05-27,., , +,^, ,Kreiss, Daniel (2012-03-05). ,""Dean, Romney, and Drupal: Values and Technological Adoption"",. ,Culture Digitally,. Retrieved ,2012-05-27,., , +,^, ,Samantha M. Shapiro, ,""The Dean Connection"",, ,The New York Times, December 7, 2003, accessed May 27, 2012., +,^, ,""Marketplace"",. ,drupal.org,. Retrieved ,2013-04-18,., , +,^, ,Koenig, Josh. ,""Growth Graphs"",. ,Groups.Drupal,. Retrieved ,2009-04-08,., , +,^, ,Buytaert, Dries (2008). ,""Drupal Download Statistics"",. Retrieved ,2009-04-08,., , +,^, ,Buytaert, Dries (2007). ,""Drupal Download Statistics"",. Retrieved ,2009-04-08,., , +,^, ,""Usage statistics for Drupal core"",., , +,^, ,""Drupal Sites"",. ,Dries Buytaert,. Retrieved ,2010-07-20,., , +,^, ,""List of Nonprofit, NPO, NGO Websites Using Drupal"",. ,ENGINE Industries,. Archived from ,the original, on 2009-12-24,. Retrieved ,2010-07-20,., , +,^, ,""OSS CMS Award Previous Winners"",. ,Packt Publishing,. Retrieved ,2009-04-08,., , +,^, ,""Drupal is a Webware 100 winner for the third year in a row"",. Drupal.org,. Retrieved ,2011-08-31,., , +,^, ,""Cnet.com"",. News.cnet.com. 2009-05-19,. Retrieved ,2011-08-31,., , +,^, ,""Buytaert.net"",. Buytaert.net,. Retrieved ,2011-08-31,., , +,^, ,""Drupal 7 to be released on January 5 (with one ginormous party)"",. Buytaert.net,. Retrieved ,2011-08-31,., , +,^, ,""Xplain Hosting Drupal 7 Quickstart training seminar"",. ,Scoop,. 2010-12-16., , +,^, ,""drupal 7.24"",. ,drupal.org,. Retrieved ,2013-11-20,., , +,^, ,""Drupal 8 In Marking The Biggest Change In Its Content Management History"",. ,eyerys.com,. Retrieved ,19 November, 2015,., , +,^, ,""Drupal 8.0.0-rc1 announcement"",. ,drupal.org,., , +,^, ,""Drupal 8.0.0-rc1 announcement"",. ,drupal.org,., , +,^, ,""Drupal 8.0.0 released"",. ,drupal.org,. Retrieved ,19 November, 2015,., , +,^, ,https://www.drupal.org/blog/drupal-8-1-0, +,^ ,a, ,b, ,""Never hack core"",. ,drupal.org,., , +,^, ,""Drupal 7.39 released"",. ,drupal.org,. Retrieved ,2015-09-19,., , +,^ ,a, ,b, ,""Handbook: Core Modules"",. ,drupal.org,. Archived from ,the original, on 2008-07-28,. Retrieved ,2009-04-08,., , +,^, ,""Drupal Multi-site installation recipes"",., , +,^, ,Buytaert, Dries. ,""Garland, the new default core theme"",. ,drupal.org,. Retrieved ,2009-04-08,., , +,^, ,""Color: Allows the user to change the color scheme of certain themes"",. ,drupal.org,. Retrieved ,2009-04-08,., , +,^, ,""Drupal core translation downloads"",. ,drupal.org,. Retrieved ,2017-01-30,., , +,^ ,a, ,b, ,""Drupal 6.0 released"",. ,drupal.org,. Retrieved ,2009-04-08,., , +,^, ,""SA-CORE-2014-005 - Drupal core - SQL injection"",. ,Https:,. Retrieved ,December 3,, 2014,., , +,^, ,""Drupal Core - Highly Critical - Public Service announcement - PSA-2014-003"",. ,Https:,. Retrieved ,December 3,, 2014,., , +,^, ,""Install Drupal for Windows"",. ,microsoft.com,. Retrieved ,2011-02-14,., , +,^, ,""Drupal on Windows Group"",. ,drupal.org,. Retrieved ,2011-02-14,., , +,^, ,Killesreiter, Gerhard (2013-02-25). ,""Accessibility statement"",. ,drupal.org,. Retrieved ,2013-04-16,., , +,^, ,Scholten, Roy (2012-12-10). ,""Drupal core gates"",. ,drupal.org,. Retrieved ,2013-04-16,., , +,^, ,""API Reference"",. ,drupal.org,. Retrieved ,2009-04-08,., , +,^, ,""File and directory management"",. ,drupal.org,., , +,^, ,14 hours 40 min ago. (2009-05-20). ,""Integrating Drupal with External Systems"",. Appnovation.com. Archived from ,the original, on 2011-08-24,. Retrieved ,2011-08-31,., , +,^, ,""Drupal Camunda BPM Integration"",. ,Srijan Technologies,. Srijan Technologies., , +,^, ,""Project usage overview"",. ,Drupal.org,. Retrieved ,2011-08-18,., , +,^, ,""DRUPAL 5 TO DRUPAL 7"",., , +,^, ,""Field API"",. 2009,. Retrieved ,2009-05-08,., , +,^, ,""Views in Drupal Core initiative: Status report and roadmap"",. Retrieved ,2014-11-04,., , +,^, ,""PHPTemplate theme engine"",. ,drupal.org,. Archived from ,the original, on 2009-03-08,. Retrieved ,2009-04-08,., , +,^, ,""XTemplate theme engine"",. ,drupal.org,. Archived from ,the original, on 2009-03-16,. Retrieved ,2009-04-08,., , +,^, ,""How does Drupal compare to Mambo? discussion thread"",. ,drupal.org,. 2005-01-17,. Retrieved ,2009-04-08,., , +,^, ,""Drupal themes"",. Drupal.org,. Retrieved ,2011-08-31,., , +,^, ,""Adding your theme to Drupal.org"",. Drupal.org., , +,^, ,""10 Best Drupal Themes"",. MAAN Softwares,. Retrieved ,2017-11-08,., , +,^, ,""Top Drupal Distributions"",. AGLOBALWAY Consulting Services Inc. Archived from ,the original, on 2014-04-13., , +,^, ,""MVC vs. PAC"",., , +,^, ,Drupal - CMS Grew Overnight, By MAAN Softwares, Retrieved, June 8th, 2017, +,^, ,""drupal.org discussion on DrupalCon event management"",. Groups.drupal.org,. Retrieved ,2011-08-31,., , +,^, ,""Drupal Camps and Cons"",. Retrieved ,25 January, 2013,., , +,^, ,""1 Year of Drupal Events Visualized"",. Retrieved ,13 July, 2013,., , +,^, ,""forums"",. Drupal.org,. Retrieved ,2011-08-31,., , +,^, ,""mailing lists"",. Drupal.org,. Retrieved ,2011-08-31,., , +,^, ,""Drupal Groups"",. Groups.drupal.org,. Retrieved ,2011-08-31,., , +,^, ,""Drupal IRC channels on FreeNode"",. Drupal.org,. Retrieved ,2011-08-31,., , +,^, ,""Language specific communities"",. Drupal.org. 2011-08-26,. Retrieved ,2011-08-31,., , +,^, ,Keller, Katherine (7 April 2017). ,""CMS Battle for Beginners: WordPress vs Joomla vs Drupal (Infographic)"",. ,Entrepreneur,. Retrieved ,17 May, 2017,., , +,^, ,Drupal. ,""Security announcement and release process"",., , +,^, ,Drupal. ,""How to report a security issue"",., , +,^, ,""Update manager (and Update status)"",. ,drupal.org,. Retrieved ,2011-07-01,., , +,^, ,""Security advisories"",. ,drupal.org,. Retrieved ,2009-04-28,., , +,^, ,""Drupal security team"",. Drupal.org,. Retrieved ,2011-08-31,., , +,^, ,""Drupal Security RSS feed"",. Drupal.org,. Retrieved ,2011-08-31,., , +,^, ,""Drupalgeddon megaflaw raises questions over CMS bods' crisis mgmt"",., , +,^, ,""SA-CORE-2014-005 - Drupal core - SQL injection"",. ,Security advisories,. Drupal security team., , +,^, ,""Drupalgeddon strikes back: outdated Drupal allegedly linked to ""Panama Papers,"","",. ,Blog,. Drop Guard., , +,^, ,""Drupal Core—Highly Critical—Public Service Announcement—PSA-2014-003"",. ,Security advisories,. Drupal security team. October 29, 2014 – via Drupal.org. , +,You should proceed under the assumption that every Drupal 7 website was compromised unless updated or patched before Oct 15th, 11pm UTC, that is 7 hours after the announcement., +,Simply updating to Drupal 7.32 will not remove backdoors,....updating to version 7.32 or applying the patch fixes the vulnerability but does not fix an already compromised website. If you find that your site is already patched but you didn’t do it, that can be a symptom that the site was compromised - some attacks have applied the patch as a way to guarantee they are the only attacker in control of the site., +, , +,^, ,Robinson, Brian (2014-11-07). ,""Attacks on open source call for better software design -"",. ,GCN,. Retrieved ,2016-07-29,., , +,^, ,Why running the White House Web site on Drupal is a political disaster waiting to happen., +,^, ,Message Error, Why running the White House Web site on Drupal is a political disaster waiting to happen, Chris Wilson. ,Slate (magazine), October 27, 2009, +,^, ,Scollan, Becca; Abby Byrnes; Malia Nagle; Paul Coyle; Cynthia York; Maleka Ingram (2008-05-01). ,""Drupal Usability Research Report"", ,(PDF),. Retrieved ,2009-04-08,., , +,^, ,Lal, Kieran (2008-06-26). ,""Drupal usability tests from the University of Baltimore with community solutions"",. ,drupal.org,. Retrieved ,2009-04-08,., , +,^, ,Buytaert, Dries (2008-07-03). ,""Usability, usability, and usability"",. Retrieved ,2009-04-08,., , +,^, ,Buytaert, Dries (2008-03-10). ,""First results from usability testing"",. Retrieved ,2009-04-08,., , +,^, ,""Report from Formal Drupal"", ,(PDF),. 2008-03-03,. Retrieved ,2009-04-08,., , +,^, ,Buytaert, Dries (2009-02-04). ,""Mark Boulton to help with Drupal 7"",. Archived from ,the original, on 2010-04-13., , +,^, ,University of Minnesota Office of Information Technology (2011-05-23). ,""Usability test at University of Minnesota, may 2011"",. ,drupal.org,., , +,^, ,University of Minnesota Office of Information Technology (2011-06-01). ,""Report from the University of Minnesota Drupal Usability Testing"",. ,drupal.org,., , +,^, ,""Drupal Gardens"",., , +,^, ,""Open Enterprise"",., , +,^, ,""Mitkom"",., , +,^, ,Howard, Brian C. (2007-01-25). ,""Harnessing Drupal for Citizen Journalism"",. ,NewAssignment.Net,. Retrieved ,2009-04-08,., , +,^, ,""Drupal Review"",. Archived from ,the original, on 2010-02-05., , +,^, ,James, Heather (2010-11-09). ,""203 people tell What I wish I knew when I started Drupal"",. ,Acquia.com,. Retrieved ,2010-11-11,., , +,^, ,Buytaert, Dries (2006-05-26). ,""Backward Compatibility"",. Retrieved ,2009-04-08,., , +,^, ,Buytaert, Dries (2006-07-27). ,""The pain before the pay-off"",. Retrieved ,2009-04-08,., , +,^, ,""Drupal's Upgrade Instructions (end-user)"",. Drupal.org,. Retrieved ,2011-08-31,., , +,^, ,http://buytaert.net/making-drupal-upgrades-easy-forever, +,^, ,""Joomla 1.5 & Drupal 6.1 Performance Comparison"",. Archived from ,the original, on 2012-07-22., , +,^, ,""Is Drupal Slow & Bloated?"",. Archived from ,the original, on 2012-09-09., , +,^, ,""Is Drupal the right tool for the job?"",., , +,^, ,""Drupal vs Joomla: performance | Dries Buytaert"",. Buytaert.net,. Retrieved ,2012-05-05,., , +,^, ,""Authenticated User Page Caching (Authcache)"",. ,drupal.org,. Retrieved ,2009-09-23,., , +,^, ,Buytaert, Dries (2006-08-11). ,""Drupal vs Joomla! performance"",. Retrieved ,2009-05-20,., , +,^, ,""Speed up a Drupal web site by enabling MySQL query caching"",. ,nadeausoftware.com,. 2007-03-07,. Retrieved ,2009-06-21,., , +,^, ,""Book on Drupal Performance & Scalability"",. Books.tag1consulting.com. 2008-07-16. Archived from ,the original, on 2011-09-06,. Retrieved ,2011-08-31,., , +,^, ,""Caching in Drupal 6"",. ,drupal.org,. 2008-07-28,. Retrieved ,2009-06-21,., , +,^, ,""Drupal 6 vs Drupal 7 performance and comments vs nodes"",. ,CivicActions.com,. 2009-05-19,. Retrieved ,2009-06-21,., , +,^, ,""Boost"",. drupal.org. 2006-10-15,. Retrieved ,2012-05-05,., , +,^, ,""Memcache API and Integration"",. drupal.org,. Retrieved ,2012-05-05,., , +,^, ,""Dealing with unsupported (abandoned) projects"",. ,While experienced Drupal users know to check the queue and the git commits to determine the health of a project, having broken and unmaintained/unsupported projects available can be confusing and off-putting for new users., , +,^, ,https://www.drupal.org/project/project_module, +,^, ,""Drupal Testing Methodologies Are Broken - Here's Why | Red Crackle"",. ,redcrackle.com,. Retrieved ,2015-12-05,., , +, +, +,Further reading,[,edit,], +, +,Abbott/Jones (2016), Learning Drupal 8, England, Packt Publishing. ,ISBN, ,978-1-78216-875-1, +,Pol, Kristen (2012). ,Drupal 7 Multilingual Sites,. Birmingham, England: Packt Publishing. ,ISBN, ,978-1-84951-818-5,., , +,Mercer, David (2010). ,Drupal 7,. Birmingham, England: Packt Publishing. ,ISBN, ,1-84951-286-8,., , +,Travis, Brian (2011). ,Pro Drupal 7 for Windows Developers,. Berkeley: APress. ,ISBN, ,978-1-4302-3153-0,., , +,Butcher, Matt; Larry Garfield; John Wilkins; Matt Farina; Ken Rickard; Greg Dunlap (2010). ,Drupal 7 Module Development,. Birmingham, England: Packt Publishing. ,ISBN, ,978-1-84951-116-2,., , +,Bhavin, Patel (Aug 2010). ,Drupal 6 Panel Cookbook,. Canada: Packt Publishing. ,ISBN, ,1-84951-118-7,., , +,Beighley, Lynn (2009). ,Drupal for Dummies,. New York: For Dummies. ,ISBN, ,978-0-470-55611-5,., , +,Herremans, D. (2009). ,Drupal 6: Ultimate Community Site Guide,. Switzerland. ,ISBN, ,978-2-8399-0490-2,., , +,Peacock, Michael (2008). ,Selling Online with Drupal e-Commerce,. Birmingham, England: Packt Publishing. ,ISBN, ,978-1-84719-406-0,., , +,VanDyk, John K. (2008). ,Pro Drupal Development, Second Edition,. New York: Springer Verlag/Apress. ,ISBN, ,1-4302-0989-5,., , +,Kafer, Konstantin; Emma Hogbin (Apr 2009). ,Front End Drupal: Designing, Theming, Scripting,. Jersey, USA: Prentice Hall. ,ISBN, ,0-13-713669-2,., , +, +,External links,[,edit,], +, +, +, +,Wikimedia Commons has media related to ,Drupal,., +, +, +, +,Official website, +, +, +, +, +, +, +, +, +,v, +,t, +,e, +, +, +,Web frameworks, +, +, +, +, +, +, +,Comparison, +, +, +, +, +, +,C++, +, +, +, +,CppCMS, +,Wt, +, +, +, +, +, +,CLI, +, +, +, +,ASP.NET, +, +,Core, +,AJAX, +,Dynamic Data, +,MVC, +,Razor, +,Web Forms, +, +, +,DNN, +,BFC, +,MonoRail, +,OpenRasta, +,Umbraco, +, +, +, +, +, +,ColdFusion, +, +, +, +,CFWheels, +,ColdBox Platform, +,ColdSpring, +,Fusebox, +,Mach-II, +,Model-Glue, +, +, +, +, +, +,Common Lisp, +, +, +, +,Caveman2, +,CL-HTTP, +,UnCommon Web, +,Weblocks, +, +, +, +, +, +,Haskell, +, +, +, +,Happstack, +,Yesod, +,Snap, +, +, +, +, +, +,Java, +, +, +, +,AppFuse, +,Flexive, +,Grails, +,GWT, +,ICEfaces, +,ItsNat, +,JavaServer Faces, +,JHipster, +,Jspx, +,JWt, +,OpenXava, +,Play, +,Reasonable Server Faces, +,Remote Application Platform, +,RIFE, +,Seam, +,Sling, +,Spring, +,Stripes, +,Struts, +,Tapestry, +,Vaadin, +,Vert.x, +,WebWork, +,Wicket, +,WaveMaker, +,ZK, +, +, +, +, +, +,JavaScript, +, +, +, +,Ample SDK, +,Angular,/,AngularJS, +,Backbone.js, +,Chaplin.js, +,Closure, +,Dojo Toolkit, +,Ember.js, +,Ext JS, +,jQuery, +,Meteor, +,MooTools, +,Node.js, +,OpenUI5, +,Prototype, +,React, +,Rico, +,script.aculo.us, +,Sencha Touch, +,SproutCore, +,Wakanda, +, +, +, +, +, +,Perl, +, +, +, +,Catalyst, +,Dancer, +,Mason, +,Maypole, +,Mojolicious, +,WebGUI, +, +, +, +, +, +,PHP, +, +, +, +,CakePHP, +,CodeIgniter, +,Drupal, +,Fat-Free, +,FuelPHP, +,Flow, +,Gyroscope, +,Horde, +,Kohana, +,Laravel, +,Lithium, +,Midgard, +,MODX, +,Nette, +,Phalcon, +,Pop PHP, +,PRADO, +,ProcessWire, +,Qcodo, +,Silex, +,SilverStripe, +,Symfony, +,TYPO3, +,Xaraya, +,XOOPS, +,Yii, +,Zend Framework, +, +, +, +, +, +,Python, +, +, +, +,BlueBream, +,CherryPy, +,Django, +,Flask, +,Grok, +,Nevow, +,Pyjs, +,Pylons, +,Pyramid, +,Quixote, +,TACTIC, +,Tornado, +,TurboGears, +,web2py, +,Webware, +,Zope 2, +, +, +, +, +, +,Ruby, +, +, +, +,Camping, +,Merb, +,Padrino, +,Ruby on Rails, +,Sinatra, +, +, +, +, +, +,Scala, +, +, +, +,Lift, +,Play, +,Scalatra, +, +, +, +, +, +,Smalltalk, +, +, +, +,AIDA/Web, +,Seaside, +, +, +, +, +, +,Other languages, +, +, +, +,Vibe.d, (,D,), +,Application Express, (,PL/SQL,), +,Grails, (,Groovy,), +,Kepler, (,Lua,), +,Rocket, (,Rust,), +,OpenACS, (,Tcl,), +,Phoenix, (,Elixir,), +,SproutCore, (,JavaScript,-,Ruby,), +,Yaws, (,Erlang,), +, +, +, +, +, +, +, +, +, +, +, +, +,v, +,t, +,e, +, +, +,Software in the Public Interest, +, +, +, +,People, +, +, +, +,Bdale Garbee, (President), +, +, +, +, +, +,Projects, +, +, +, +,0 A.D., +,Arch Linux, +,Debian, +,Drizzle, +,Drupal, +,FFmpeg, +,Fluxbox, +,freedesktop.org, +,FreedomBox, +,Gallery Project, +,GNU TeXmacs, +,GNUstep, +,Jenkins, +,LibreOffice, +,MinGW, +,Open and Free Technology Community, +,Open Bioinformatics Foundation, +,Open64, +,OpenEmbedded, +,OpenVAS, +,OpenWrt, +,PostgreSQL, +,Privoxy, +,SproutCore, +,X.Org Foundation, +,YafaRay, +, +, +, +, +, +, +, +, +, +,Authority control, +, +, +, +,WorldCat Identities, +,VIAF,: ,180810498, +,LCCN,: ,n2009053036, +,GND,: ,7522644-3, +, +, +, +, +, +, + + +, +, +, +, +",Drupal +" 22 January 2018, at 01:37."," +,Unix, +, +, +,Evolution of Unix and Unix-like systems, +, +, +, +,Developer, +,Ken Thompson,, ,Dennis Ritchie,, ,Brian Kernighan,, ,Douglas McIlroy,, and ,Joe Ossanna, at ,Bell Labs, +, +, +,Written in, +,C, and ,assembly language, +, +, +,OS family, +,Unix, +, +, +,Working state, +,Current, +, +, +,Source model, +,Historically ,closed-source,, while some Unix projects (including ,BSD, family and ,Illumos,) are ,open-source, +, +, +,Initial release, +,Development started in 1969,; 49 years ago, (,1969,), +First manual published ,internally, in November 1971, (,1971-11,),[1], +Announced outside Bell Labs in October 1973, (,1973-10,),[2], +, +, +,Available in, +,English, +, +, +,Kernel, type, +,Varies; ,monolithic,, ,microkernel,, ,hybrid, +, +, +,Default ,user interface, +,Command-line interface, and ,Graphical, (,X Window System,), +, +, +,License, +,Varies; some versions are ,proprietary,, others are ,free,/,open-source software, +, +, +,Official website, +,opengroup,.org,/unix, +, +, +,Unix, (,/,ˈ,j,uː,n,ɪ,k,s,/,; trademarked as ,UNIX,) is a family of ,multitasking,, ,multiuser, computer ,operating systems, that derive from the original ,AT&T, Unix, development starting in the 1970s at the ,Bell Labs, research center by ,Ken Thompson,, ,Dennis Ritchie,, and others.,[3], +,Initially intended for use inside the ,Bell System,, AT&T licensed Unix to outside parties in the late 1970s, leading to a variety of both academic and commercial Unix variants from vendors like the ,University of California, Berkeley, (,BSD,), ,Microsoft, (,Xenix,), ,IBM, (,AIX,), and ,Sun Microsystems, (,Solaris,). In the early 1990s, AT&T sold its rights in Unix to ,Novell,, which then sold its Unix business to the ,Santa Cruz Operation, (SCO) in 1995.,[4], The UNIX trademark passed to ,The Open Group,, a neutral industry consortium, which allows the use of the mark for certified operating systems that comply with the ,Single UNIX Specification, (SUS). As of 2014, the Unix version with the largest installed base is ,Apple,'s ,macOS,.,[5], +,From the perspective of a power user or programmer, Unix systems are characterized by a ,modular design, that is sometimes called the "",Unix philosophy,""—that is to say, the operating system provides a set of simple tools that each perform a limited, well-defined function,,[6], with a unified ,filesystem, as the main means of communication,[3], and a ,shell, scripting and command language to combine the tools to perform complex workflows. Additionally, Unix also distinguishes itself from its predecessors as the first ,portable, operating system: almost the entire operating system is written in the ,C programming language, that allowed Unix to reach numerous platforms.,[7], +,Over the years, many ,Unix-like, operating systems have been developed, but ,Linux, is the most popular. In fact, Linux has displaced ,SUS,-certified Unix on many server platforms since its inception in the early 1990s. The world's most-used mobile operating system, ,Android,, is based on Linux., +, +, +, +,Contents, +, +, +,1, ,Overview, +,2, ,History, +,3, ,Standards, +,4, ,Components, +,5, ,Impact, +, +,5.1, ,Free Unix and Unix-like variants, +,5.2, ,ARPANET, +, +, +,6, ,Branding, +,7, ,See also, +,8, ,References, +,9, ,Further reading, +,10, ,External links, +, +, +, +,Overview,[,edit,], +, +, +, +, +,Version 7 Unix,, the ,Research Unix, ancestor of all modern Unix systems, +, +, +,Unix was originally meant to be a convenient platform for programmers developing software to be run on it and on other systems, rather than for non-programmers.,[8],[9], The system grew larger as the operating system started spreading in academic circles, as users added their own tools to the system and shared them with colleagues.,[10], +,Unix was designed to be ,portable,, ,multi-tasking, and ,multi-user, in a ,time-sharing, configuration. Unix systems are characterized by various concepts: the use of ,plain text, for storing data; a hierarchical ,file system,; treating devices and certain types of ,inter-process communication, (IPC) as files; and the use of a large number of ,software tools,, small programs that can be strung together through a ,command-line interpreter, using ,pipes,, as opposed to using a single monolithic program that includes all of the same functionality. These concepts are collectively known as the "",Unix philosophy,"". ,Brian Kernighan, and ,Rob Pike, summarize this in ,The Unix Programming Environment, as ""the idea that the power of a system comes more from the relationships among programs than from the programs themselves"".,[11], +,By the early 1980s, users began seeing Unix as a potential universal operating system, suitable for computers of all sizes.,[12],[13], The Unix environment and the ,client–server, program model were essential elements in the development of the ,Internet, and the reshaping of computing as centered in ,networks, rather than in individual computers., +,Both Unix and the ,C programming language, were developed by AT&T and distributed to government and academic institutions, which led to both being ported to a wider variety of machine families than any other operating system., +,Under Unix, the operating system consists of many utilities along with the master control program, the ,kernel,. The kernel provides services to start and stop programs, handles the ,file system, and other common ""low-level"" tasks that most programs share, and schedules access to avoid conflicts when programs try to access the same resource or device simultaneously. To mediate such access, the kernel has special rights, reflected in the division between ,user space and kernel space,., +,The ,microkernel, concept was introduced in an effort to reverse the trend towards larger kernels and return to a system in which most tasks were completed by smaller utilities. In an era when a standard computer consisted of a hard disk for storage and a ,data terminal, for ,input and output, (I/O), the Unix file model worked quite well, as I/O was generally linear. However, modern systems include networking and other new devices. As graphical user interfaces developed, the file model proved inadequate to the task of handling asynchronous events such as those generated by a ,mouse,. In the 1980s, ,non-blocking I/O, and the set of ,inter-process communication, mechanisms were augmented with ,Unix domain sockets,, ,shared memory,, ,message queues,, and ,semaphores,. In microkernel implementations, functions such as network protocols could be moved out of the kernel, while conventional (,monolithic,) Unix implementations have network protocol stacks as part of the kernel., +,History,[,edit,], +,Main article: ,History of Unix, +, +, +, +, +,Ken Thompson, (sitting) and ,Dennis Ritchie, working together at a ,PDP-11, +, +, +,The pre-history of Unix dates back to the mid-1960s when the ,Massachusetts Institute of Technology,, ,Bell Labs,, and ,General Electric, were developing an innovative ,time-sharing, operating system called ,Multics, for the ,GE-645, mainframe.,[14], Multics introduced ,many innovations,, but had many problems. Frustrated by the size and complexity of Multics but not by the aims, Bell Labs slowly pulled out of the project. Their last researchers to leave Multics, ,Ken Thompson,, ,Dennis Ritchie,, ,M. D. McIlroy,, and ,J. F. Ossanna,,,[15], decided to redo the work on a much smaller scale., +,The new operating system was initially without organizational backing, and also without a name. At this stage, the new operating system was a singletasking operating system, not a multitasking one such as Multics.,[15], The name ,Unics, (Uniplexed Information and Computing Service, pronounced as "",eunuchs,""), a ,pun, on ,Multics, (Multiplexed Information and Computer Services), was initially suggested for the project in 1970. ,Brian Kernighan, claims the coining for himself, and adds that ""no one can remember"" who came up with the final spelling Unix.,[16], Dennis Ritchie,,[15], Doug McIlroy,,[1], and ,Peter G. Neumann,[17], also credit Kernighan., +,In 1972, Unix was rewritten in the ,C programming language,.,[18], The migration from assembly to the ,higher-level language, C resulted in much more ,portable, software, requiring only a relatively small amount of machine-dependent code to be replaced when porting Unix to other ,computing platforms,.,[19], Bell Labs produced several versions of Unix that are collectively referred to as "",Research Unix,"". In 1975, the first source license for UNIX was sold to ,Donald B. Gillies, at the ,University of Illinois, Department of Computer Science.,[20], UIUC graduate student ,Greg Chesson, (who had worked on the UNIX kernel at Bell Labs) was instrumental in negotiating the terms of the license.,[21], +,During the late 1970s and early 1980s, the influence of Unix in academic circles led to large-scale adoption of Unix (,BSD, and ,System V,) by commercial startups, including ,Sequent,, ,HP-UX,, ,Solaris,, ,AIX,, and ,Xenix,. In the late 1980s, AT&T ,Unix System Laboratories, and ,Sun Microsystems, developed System V Release 4 (,SVR4,), which was subsequently adopted by many commercial Unix vendors., +,In the 1990s, Unix-like systems grew in popularity as ,Linux, and BSD distributions were developed through collaboration by a worldwide network of programmers. In 2000, Apple released ,Darwin,, also a Unix-like system, which became the core of the Mac OS X operating system, later renamed ,macOS,.,[22], +,Unix operating systems are widely used in modern ,servers,, ,workstations,, and ,mobile devices,.,[23], +,Standards,[,edit,], +, +, +, +, +The ,Common Desktop Environment, (CDE), part of the ,COSE initiative, +, +, +,In the late 1980s, an open operating system standardization effort now known as ,POSIX, provided a common baseline for all operating systems; ,IEEE, based POSIX around the common structure of the major competing variants of the Unix system, publishing the first POSIX standard in 1988. In the early 1990s, a separate but very similar effort was started by an industry consortium, the ,Common Open Software Environment, (COSE) initiative, which eventually became the ,Single UNIX Specification, (SUS) administered by ,The Open Group,. Starting in 1998, the Open Group and IEEE started the ,Austin Group,, to provide a common definition of POSIX and the Single UNIX Specification, which, by 2008, had become the Open Group Base Specification., +,In 1999, in an effort towards compatibility, several Unix system vendors agreed on SVR4's ,Executable and Linkable Format, (ELF) as the standard for binary and object code files. The common format allows substantial binary compatibility among Unix systems operating on the same CPU architecture., +,The ,Filesystem Hierarchy Standard, was created to provide a reference directory layout for Unix-like operating systems, and has mainly been used in Linux., +,Components,[,edit,], +,See also: ,List of Unix commands, +, +, +, +, +, +, +,This section ,does not ,cite, any ,sources,. ,Please help ,improve this section, by ,adding citations to reliable sources,. Unsourced material may be challenged and ,removed,., ,(January 2017), ,(,Learn how and when to remove this template message,), +, +, +, +,The Unix system is composed of several components that were originally packaged together. By including the development environment, libraries, documents and the portable, modifiable source code for all of these components, in addition to the ,kernel, of an operating system, Unix was a self-contained software system. This was one of the key reasons it emerged as an important teaching and learning tool and has had such a broad influence.,[,according to whom?,], +,The inclusion of these components did not make the system large – the original V7 UNIX distribution, consisting of copies of all of the compiled binaries plus all of the source code and documentation occupied less than 10 MB and arrived on a single nine-track ,magnetic tape,. The printed documentation, typeset from the online sources, was contained in two volumes., +,The names and filesystem locations of the Unix components have changed substantially across the history of the system. Nonetheless, the V7 implementation is considered by many,[,who?,], to have the canonical early structure:, +, +,Kernel, – source code in /usr/sys, composed of several sub-components: +, +,conf, – configuration and machine-dependent parts, including boot code, +,dev, – device drivers for control of hardware (and some pseudo-hardware), +,sys, – operating system ""kernel"", handling memory management, process scheduling, system calls, etc., +,h, – header files, defining key structures within the system and important system-specific invariables, +, +, +,Development environment, – early versions of Unix contained a development environment sufficient to recreate the entire system from source code: +, +,cc, – ,C language, compiler (first appeared in V3 Unix), +,as, – machine-language assembler for the machine, +,ld, – linker, for combining object files, +,lib, – object-code libraries (installed in /lib or /usr/lib). ,libc,, the system library with C run-time support, was the primary library, but there have always been additional libraries for such things as mathematical functions (,libm,) or database access. V7 Unix introduced the first version of the modern ""Standard I/O"" library ,stdio, as part of the system library. Later implementations increased the number of libraries significantly., +,make, – build manager (introduced in ,PWB/UNIX,), for effectively automating the build process, +,include, – header files for software development, defining standard interfaces and system invariants, +,Other languages, – V7 Unix contained a Fortran-77 compiler, a programmable arbitrary-precision calculator (,bc,, ,dc,), and the ,awk, scripting language; later versions and implementations contain many other language compilers and toolsets. Early BSD releases included ,Pascal, tools, and many modern Unix systems also include the ,GNU Compiler Collection, as well as or instead of a proprietary compiler system., +,Other tools, – including an object-code archive manager (,ar,), symbol-table lister (,nm,), compiler-development tools (e.g. ,lex, & ,yacc,), and debugging tools., +, +, +,Commands, – Unix makes little distinction between commands (user-level programs) for system operation and maintenance (e.g. ,cron,), commands of general utility (e.g. ,grep,), and more general-purpose applications such as the text formatting and typesetting package. Nonetheless, some major categories are: +, +,sh, – the ""shell"" programmable ,command-line interpreter,, the primary user interface on Unix before window systems appeared, and even afterward (within a ""command window"")., +,Utilities, – the core toolkit of the Unix command set, including ,cp,, ,ls,, ,grep,, ,find, and many others. Subcategories include: +, +,System utilities, – administrative tools such as ,mkfs,, ,fsck,, and many others., +,User utilities, – environment management tools such as ,passwd,, ,kill,, and others., +, +, +,Document formatting, – Unix systems were used from the outset for document preparation and typesetting systems, and included many related programs such as ,nroff,, ,troff,, ,tbl,, ,eqn,, ,refer,, and ,pic,. Some modern Unix systems also include packages such as ,TeX, and ,Ghostscript,., +,Graphics, – the ,plot, subsystem provided facilities for producing simple vector plots in a device-independent format, with device-specific interpreters to display such files. Modern Unix systems also generally include ,X11, as a standard windowing system and ,GUI,, and many support ,OpenGL,., +,Communications, – early Unix systems contained no inter-system communication, but did include the inter-user communication programs ,mail, and ,write,. V7 introduced the early inter-system communication system ,UUCP,, and systems beginning with BSD release 4.1c included ,TCP/IP, utilities., +, +, +,Documentation, – Unix was the first,[,citation needed,], operating system to include all of its documentation online in machine-readable form. The documentation included: +, +,man, – manual pages for each command, library component, ,system call,, header file, etc., +,doc, – longer documents detailing major subsystems, such as the C language and troff, +, +, +, +,Impact,[,edit,], +,See also: ,Unix-like, +, +, +, +, +, +, +,This section ,needs additional citations for ,verification,. ,Please help ,improve this article, by ,adding citations to reliable sources,. Unsourced material may be challenged and removed., ,(January 2017), ,(,Learn how and when to remove this template message,), +, +, +, +, +, +, +, +,Ken Thompson, and ,Dennis Ritchie,, principal developers of ,Research Unix, +, +, +, +, +, +, +Photo from ,USENIX, 1984, including ,Dennis Ritchie, (center), +, +, +, +, +, +, +,Plan 9 from Bell Labs, extends Unix design principles, and was developed as a successor to Unix, +, +, +,The Unix system had significant impact on other operating systems. It achieved its reputation by its interactivity, by providing the software at a nominal fee for educational use, by running on inexpensive hardware, and by being easy to adapt and move to different machines. Unix was originally written in ,assembly language, (which had been thought necessary for system implementations on early computers), but was soon rewritten in ,C,, a ,high-level programming language,.,[24], Although this followed the lead of ,Multics, and ,Burroughs,, it was Unix that popularized the idea., +,Unix had a drastically simplified file model compared to many contemporary operating systems: treating all kinds of files as simple byte arrays. The file system hierarchy contained machine services and devices (such as ,printers,, ,terminals,, or ,disk drives,), providing a uniform interface, but at the expense of occasionally requiring additional mechanisms such as ,ioctl, and mode flags to access features of the hardware that did not fit the simple ""stream of bytes"" model. The ,Plan 9, operating system pushed this model even further and eliminated the need for additional mechanisms., +,Unix also popularized the hierarchical file system with arbitrarily nested subdirectories, originally introduced by Multics. Other common operating systems of the era had ways to divide a storage device into multiple directories or sections, but they had a fixed number of levels, often only one level. Several major proprietary operating systems eventually added recursive subdirectory capabilities also patterned after Multics. DEC's ,RSX-11,M's ""group, user"" hierarchy evolved into ,VMS, directories, ,CP/M,'s volumes evolved into ,MS-DOS, 2.0+ subdirectories, and HP's ,MPE, group.account hierarchy and IBM's ,SSP, and ,OS/400, library systems were folded into broader POSIX file systems., +,Making the command interpreter an ordinary user-level program, with additional commands provided as separate programs, was another Multics innovation popularized by Unix. The ,Unix shell, used the same language for interactive commands as for scripting (,shell scripts, – there was no separate job control language like IBM's ,JCL,). Since the shell and OS commands were ""just another program"", the user could choose (or even write) his own shell. New commands could be added without changing the shell itself. Unix's innovative command-line syntax for creating modular chains of producer-consumer processes (,pipelines,) made a powerful programming paradigm (,coroutines,) widely available. Many later command-line interpreters have been inspired by the Unix shell., +,A fundamental simplifying assumption of Unix was its focus on ,newline,-,delimited, text for nearly all file formats. There were no ""binary"" editors in the original version of Unix – the entire system was configured using textual shell command scripts. The common denominator in the I/O system was the byte – unlike ,""record-based"" file systems,. The focus on text for representing nearly everything made Unix pipes especially useful, and encouraged the development of simple, general tools that could be easily combined to perform more complicated ,ad hoc, tasks. The focus on text and bytes made the system far more scalable and portable than other systems. Over time, text-based applications have also proven popular in application areas, such as printing languages (,PostScript,, ,ODF,), and at the application layer of the ,Internet protocols,, e.g., ,FTP,, ,SMTP,, ,HTTP,, ,SOAP,, and ,SIP,., +,Unix popularized a syntax for ,regular expressions, that found widespread use. The Unix programming interface became the basis for a widely implemented operating system interface standard (POSIX, see above). The ,C programming language, soon spread beyond Unix, and is now ubiquitous in systems and applications programming., +,Early Unix developers were important in bringing the concepts of ,modularity, and ,reusability, into ,software engineering, practice, spawning a ""software tools"" movement. Over time, the leading developers of Unix (and programs that ran on it) established a set of cultural norms for developing software, norms which became as important and influential as the technology of Unix itself; this has been termed the ,Unix philosophy,., +,The ,TCP/IP networking protocols, were quickly implemented on the Unix versions widely used on relatively inexpensive computers, which contributed to the ,Internet, explosion of worldwide real-time connectivity, and which formed the basis for implementations on many other platforms., +,The Unix policy of extensive on-line documentation and (for many years) ready access to all system source code raised programmer expectations, and contributed to the 1983 launch of the ,free software movement,., +,Free Unix and Unix-like variants,[,edit,], +,See also: ,Operating system § Unix and Unix-like operating systems, +, +, +, +, +, +, +, +, +,Console screenshots of ,Debian, (top, a popular ,Linux distribution,) and ,FreeBSD, (bottom, a popular ,Unix-like, operating system), +, +, +,In 1983, ,Richard Stallman, announced the ,GNU, (short for ""GNU's Not Unix"") project, an ambitious effort to create a ,free software, ,Unix-like, system; ""free"" in the sense that everyone who received a copy would be free to use, study, modify, and redistribute it. The GNU project's own kernel development project, ,GNU Hurd,, had not produced a working kernel, but in 1991 ,Linus Torvalds, released the ,Linux kernel, as free software under the ,GNU General Public License,. In addition to their use in the ,Linux, operating system, many GNU packages – such as the ,GNU Compiler Collection, (and the rest of the ,GNU toolchain,), the ,GNU C library, and the ,GNU core utilities, – have gone on to play central roles in other free Unix systems as well., +,Linux distributions,, consisting of the Linux kernel and large collections of compatible software have become popular both with individual users and in business. Popular distributions include ,Red Hat Enterprise Linux,, ,Fedora,, ,SUSE Linux Enterprise,, ,openSUSE,, ,Debian GNU/Linux,, ,Ubuntu,, ,Linux Mint,, ,Mandriva Linux,, ,Slackware Linux,, and ,Gentoo,., +,A free derivative of ,BSD, Unix, ,386BSD,, was released in 1992 and led to the ,NetBSD, and ,FreeBSD, projects. With the 1994 settlement of a lawsuit brought against the University of California and Berkeley Software Design Inc. (,USL v. BSDi,) by ,UNIX Systems Laboratories,, it was clarified that Berkeley had the right to distribute BSD Unix for free, if it so desired. Since then, BSD Unix has been developed in several different product branches, including ,OpenBSD, and ,DragonFly BSD,., +,Linux and BSD are increasingly filling the market needs traditionally served by proprietary Unix operating systems, as well as expanding into new markets such as the consumer desktop and mobile and embedded devices. Because of the modular design of the Unix model, sharing components is relatively common; consequently, most or all Unix and Unix-like systems include at least some BSD code, and some systems also include GNU utilities in their distributions., +,In a 1999 interview, Dennis Ritchie voiced his opinion that Linux and BSD operating systems are a continuation of the basis of the Unix design, and are derivatives of Unix:,[25], +, +,""I think the Linux phenomenon is quite delightful, because it draws so strongly on the basis that Unix provided. Linux seems to be the among the healthiest of the direct Unix derivatives, though there are also the various BSD systems as well as the more official offerings from the workstation and mainframe manufacturers."", +, +,In the same interview, he states that he views both Unix and Linux as ""the continuation of ideas that were started by Ken and me and many others, many years ago."",[25], +,OpenSolaris, was the open-source counterpart to ,Solaris, developed by ,Sun Microsystems,, which included a ,CDDL,-licensed kernel and a primarily ,GNU, userland. However, ,Oracle, discontinued the project upon their acquisition of Sun, which prompted a group of former Sun employees and members of the OpenSolaris community to fork OpenSolaris into the ,illumos, kernel. As of 2014, illumos remains the only active open-source System V derivative., +,ARPANET,[,edit,], +,In May 1975, ,RFC 681, described the development of ,Network Unix, by the Center for Advanced Computation at the ,University of Illinois,. The system was said to ""present several interesting capabilities as an ,ARPANET, mini-host"". At the time Unix required a license from ,Bell Laboratories, that at $20,000(US) was very expensive for non-,university, users, while an educational license cost just $150. It was noted that Bell was ""open to suggestions"" for an ARPANET-wide license., +,Specific features found beneficial were the local processing facilities, ,compilers,, ,editors,, a ,document preparation system,, efficient file system and access control, ,mountable, and unmountable volumes, unified treatment of peripherals as ,special files,, integration of the ,network control program, (NCP) within the Unix file system, treatment of ,network connections, as special files that can be accessed through standard Unix ,I/O calls,, closing of all files on program exit, and the decision to be ""desirable to minimize the amount of code added to the basic Unix kernel""., +,Branding,[,edit,], +,See also: ,List of Unix systems, +, +, +, +, +Promotional ,license plate, by ,Digital Equipment Corporation, +, +, +, +, +, +, +,HP9000, ,workstation, running ,HP-UX,, a certified Unix operating system, +, +, +,In October 1993, ,Novell,, the company that owned the rights to the Unix System V source at the time, transferred the ,trademarks, of Unix to the X/Open Company (now ,The Open Group,),,[26], and in 1995 sold the related business operations to ,Santa Cruz Operation, (SCO).,[27], Whether Novell also sold the ,copyrights, to the actual software was the subject of a 2006 federal lawsuit, ,SCO v. Novell,, which Novell won. The case was appealed, but on August 30, 2011, the United States Court of Appeals for the Tenth Circuit affirmed the trial decisions, closing the case.,[28], Unix vendor ,SCO Group Inc., accused Novell of ,slander of title,., +,The present owner of the trademark ,UNIX, is The Open Group, an industry standards consortium. Only systems fully compliant with and certified to the ,Single UNIX Specification, qualify as ""UNIX"" (others are called "",Unix-like,"")., +,By decree of The Open Group, the term ""UNIX"" refers more to a class of operating systems than to a specific implementation of an operating system; those operating systems which meet The Open Group's Single UNIX Specification should be able to bear the ,UNIX 98, or ,UNIX 03, trademarks today, after the operating system's vendor pays a substantial certification fee and annual trademark royalties to The Open Group.,[29], Systems licensed to use the UNIX trademark include ,AIX,,,[30], ,HP-UX,,,[31], ,Inspur K-UX,,,[32], ,IRIX,,,[33], ,Solaris,,,[34], ,Tru64 UNIX, (formerly ""Digital UNIX"", or ,OSF/1,),,[35], ,macOS,,,[36], and a part of ,z/OS,.,[37], Notably, Inspur K-UX is a Linux distribution certified as UNIX 03 compliant.,[38],[39], +,Sometimes a representation like ,Un*x,, ,*NIX,, or ,*N?X, is used to indicate all operating systems similar to Unix. This comes from the use of the asterisk (,*,) and the question mark characters as wildcard indicators in many utilities. This notation is also used to describe other Unix-like systems that have not met the requirements for UNIX branding from the Open Group., +,The Open Group requests that ,UNIX, is always used as an adjective followed by a generic term such as ,system, to help avoid the creation of a ,genericized trademark,., +,Unix, was the original formatting, but the usage of ,UNIX, remains widespread because it was once typeset in ,small caps, (,Unix,). According to ,Dennis Ritchie,, when presenting the original Unix paper to the third Operating Systems Symposium of the American ,Association for Computing Machinery, (ACM), ""we had a new typesetter and ,troff, had just been invented and we were intoxicated by being able to produce small caps."",[40], Many of the operating system's predecessors and contemporaries used all-uppercase lettering, so many people wrote the name in upper case due to force of habit. It is not an acronym.,[41], +,Trademark names can be registered by different entities in different countries and trademark laws in some countries allow the same trademark name to be controlled by two different entities if each entity uses the trademark in easily distinguishable categories. The result is that Unix has been used as a brand name for various products including book shelves, ink pens, bottled glue, diapers, hair driers and food containers.,[42], +,Several plural forms of Unix are used casually to refer to multiple brands of Unix and Unix-like systems. Most common is the conventional ,Unixes,, but ,Unices,, treating Unix as a ,Latin, noun of the ,third declension,, is also popular. The pseudo-,Anglo-Saxon, plural form ,Unixen, is not common, although occasionally seen. ,Sun Microsystems,, developer of the Solaris variant, has asserted that the term ,Unix, is itself plural, referencing its many implementations.,[43], +,See also,[,edit,], +, +, +, +, +, +,Book: Unix, +, +, +, +, +, +,Comparison of operating systems, and ,open-source and closed-source software, +,List of operating systems,, ,Unix systems,, and ,Unix utilities, +,Market share of operating systems, +,Operating systems timeline, +,Plan 9 from Bell Labs, +,Unix time, +,Year 2038 problem, +, +,References,[,edit,], +, +, +,^ ,a, ,b, ,McIlroy, M. D., (1987). ,A Research Unix reader: annotated excerpts from the Programmer's Manual, 1971–1986, ,(PDF), (Technical report). CSTR. Bell Labs. 139. ,Archived, ,(PDF), from the original on 11 November 2017., , +,^, ,Ritchie, D. M.; Thompson, K. (1974). ,""The UNIX Time-Sharing System"", ,(PDF),. ,CACM,. ,17, (7): 365–375. ,Archived, ,(PDF), from the original on 11 June 2015., , +,^ ,a, ,b, ,Ritchie, D.M.; Thompson, K. (July 1978). ,""The UNIX Time-Sharing System"",. ,Bell System Tech. J,. USA: American Tel. & Tel. ,57, (6): 1905–1929. ,doi,:,10.1002/j.1538-7305.1978.tb02136.x,. Retrieved ,December 9,, 2012,., , +,^, ,""Novell Completes Sale of UnixWare Business to The Santa Cruz Operation | Micro Focus"",. ,www.novell.com,. ,Archived, from the original on 20 December 2015,. Retrieved ,20 December, 2015,., , +,^, ,Apple Inc. - UNIX 03, ,Archived, 4 November 2013 at the ,Wayback Machine,. Register of Certified Products, The Open Group, +,^, ,Raymond, Eric, (19 September 2003). ,The Art of Unix Programming,. Addison-Wesley. ,ISBN, ,0-13-142901-9,. ,Archived, from the original on 12 February 2009,. Retrieved ,9 February, 2009,., , +,^, ,Ritchie, Dennis M., (January 1993). ,""The Development of the C Language"", ,(PDF),. ,Archived, ,(PDF), from the original on 11 June 2015,. Retrieved ,20 December, 2015,., , +,^, ,""The Elements of Operating-System Style"",. ,Archived, from the original on 12 November 2008., , +,^, ,""Tandy/Radio Shack Book: Whole Earth Software Catalog"",. 1984. ,UNIX was created by software developers for software developers, to give themselves an environment they could completely manipulate., , +,^, ,Powers, Shelley; Peek, Jerry; O'Reilly, Tim; Loukides, Mike (2002). ,Unix Power Tools,. ,ISBN, ,0-596-00330-7,., , +,^, ,Kernighan, Brian W. Pike, Rob. ,The UNIX Programming Environment., 1984. viii, +,^, ,Fiedler, Ryan (October 1983). ,""The Unix Tutorial / Part 3: Unix in the Microcomputer Marketplace"",. ,BYTE,. p. 132,. Retrieved ,30 January, 2015,., , +,^, ,""Tandy/Radio Shack Book: Whole Earth Software Catalog"",. 1984. ,The best thing about UNIX is its portability. UNIX ports across a full range of hardware—from the single-user $5000 IBM PC to the $5 million Cray. For the first time, the point of stability becomes the software environment, not the hardware architecture; UNIX transcends changes in hardware technology, so programs written for the UNIX environment can move into the next generation of hardware., , +,^, ,Stuart, Brian L. (2009). ,Principles of operating systems: design & applications,. Boston, Massachusetts: Thompson Learning. p. 23. ,ISBN, ,1-4188-3769-5,., , +,^ ,a, ,b, ,c, ,Ritchie, Dennis M. ,""The Evolution of the Unix Time-sharing System"", ,(PDF),. ,Archived, ,(PDF), from the original on 3 April 2017,. Retrieved ,9 January, 2017,., , +,^, ,Dolya, Aleksey (29 July 2003). ,""Interview with Brian Kernighan"",. ,Linux Journal,. ,Archived, from the original on 18 October 2017., , +,^, ,Rik Farrow. ,""An Interview with Peter G. Neumann"", ,(PDF),. ,;login:,. ,42, (4): 38. ,That then led to Unics (the castrated one-user Multics, so- called due to Brian Kernighan) later becoming UNIX (probably as a result of AT&T lawyers)., , +,^, ,Stallings, William. ,Operating Systems: Internals and Design Principles, 5th ed, page 91. Pearson Education, Inc. 2005., +,^, ,""The History of Unix"",. ,BYTE,. August 1983. p. 188,. Retrieved ,31 January, 2015,., , +,^, ,Thompson, Ken (16 September 2014). ,""personal communication, Ken Thompson to Donald W. Gillies"",. ,UBC ECE Website,. ,Archived, from the original on 22 March 2016., , +,^, ,Chesson, Greg, (12 November 2014). ,""Personal Communication, Greg Chesson to Donald W. Gillies"",. ,UBC ECE Website,. ,Archived, from the original on 22 March 2016., , +,^, ,""Loading"",. Developer.apple.com. ,Archived, from the original on 5 June 2012,. Retrieved ,22 August, 2012,., , +,^, ,""Unix's Revenge"",. asymco. 29 September 2010. ,Archived, from the original on 9 November 2010,. Retrieved ,9 November, 2010,., , +,^, ,Ritchie, Dennis (1979). ,""The Evolution of the Unix Time-sharing System"",. Bell Labs. ,Archived, from the original on 11 June 2015,. Retrieved ,30 April, 2016,. ,Perhaps the most important watershed occurred during 1973, when the operating system kernel was rewritten in C., , +,^ ,a, ,b, ,Benet, Manuel (1999). ,""Interview With Dennis M. Ritchie"",. LinuxFocus.org. ,Archived, from the original on 17 January 2018., , +,^, ,Chuck Karish   View profile    More options. ,""The name UNIX is now the property of X/Open – comp.std.unix | Google Groups"",. Groups.google.com,. Retrieved ,2010-11-09,., ,CS1 maint: Multiple names: authors list (,link,), +,^, ,""HP, Novell and SCO To Deliver High-Volume UNIX OS With Advanced Network And Enterprise Services"",. Novell.com. 20 September 1995. ,Archived, from the original on 23 January 2007,. Retrieved ,9 November, 2010,., , +,^, ,Jones, Pamela. ,""SCO Files Docketing Statement and We Find Out What Its Appeal Will Be About"",. ,Groklaw,. Groklaw.net,. Retrieved ,12 April, 2011,., , +,^, ,The Open Group. ,""The Open Brand Fee Schedule"",. ,Archived, from the original on 31 December 2011,. Retrieved ,26 December, 2011,. ,The right to use the UNIX Trademark requires the Licensee to pay to The Open Group an additional annual fee, calculated in accordance with the fee table set out below., , +,^, ,The Open Group. ,""AIX 6 Operating System V6.1.2 with SP1 or later certification"",. ,Archived, from the original on 8 April 2016., , +,^, ,The Open Group. ,""HP-UX 11i V3 Release B.11.31 or later certification"",. ,Archived, from the original on 8 April 2016., , +,^, ,The Open Group. ,""Inspur K-UX 2.0 certification"",. ,Archived, from the original on 9 July 2014., , +,^, ,The Open Group. ,""IRIX 6.5.28 with patches (4605 and 7029) certification"",. ,Archived, from the original on 4 March 2016., , +,^, ,The Open Group. ,""Oracle Solaris 11 FCS and later certification"",. ,Archived, from the original on 24 September 2015., , +,^, ,Bonnie Talerico. ,""Hewlett-Packard Company Conformance Statement"",. The Open Group. ,Archived, from the original on 10 December 2015,. Retrieved ,8 December, 2015,., , +,^, ,""macOS version 10.12 Sierra on Intel-based Mac computers"",. The Open Group. ,Archived, from the original on 2 October 2016., , +,^, ,Vivian W. Morabito. ,""IBM Corporation Conformance Statement"",. The Open Group,. Retrieved ,2018-01-21,., , +,^, ,Xie Ruohong. ,""Inspur Conformance Statement"",. The Open Group. ,Archived, from the original on 10 December 2015,. Retrieved ,8 December, 2015,., , +,^, ,Xie Ruohong. ,""Inspur Conformance Statement: Commands and Utilities V4"",. The Open Group. ,Archived, from the original on 16 April 2016,. Retrieved ,8 December, 2015,., , +,^, ,""Unix"",. Catb.org. ,Archived, from the original on 4 June 2011,. Retrieved ,9 November, 2010,., , +,^, ,Troy, Douglas (1990). ,UNIX Systems,. Computing Fundamentals. Benjamin/Cumming Publishing Company. p. 4. ,ISBN, ,0-201-19827-4,., , +,^, ,""Autres Unix, autres moeurs (OtherUnix)"",. ,Bell Laboratories,. 1 April 2000. ,Archived, from the original on 3 April 2017,. Retrieved ,3 January, 2018,., , +,^, ,""History of Solaris"", ,(PDF),. ,Archived, ,(PDF), from the original on 18 March 2017. ,UNIX is plural. It is not one operating system but, many implementations of an idea that originated in 1965., , +, +, +,Further reading,[,edit,], +, +,General, +, +, +,Ritchie, D.M.,; ,Thompson, K., (July–August 1978). ,""The UNIX Time-Sharing System"",. ,Bell System Technical Journal,. ,57, (6). Archived from ,the original, on November 3, 2010., , +,""UNIX History"",. ,www.levenez.com,. Retrieved ,17 March, 2005,., , +,""AIX, FreeBSD, HP-UX, Linux, Solaris, Tru64"",. ,UNIXguide.net,. Retrieved ,17 March, 2005,., , +,""Linux Weekly News, February 21, 2002"",. ,lwn.net,. Retrieved ,7 April, 2006,., , +,Lions, John,: ,Lions' ,""Commentary on the Sixth Edition UNIX Operating System"",., , with Source Code,, Peer-to-Peer Communications, 1996; ,ISBN, ,1-57398-013-7, +, +, +,Books, +, +, +,Salus, Peter H.,: ,A Quarter Century of UNIX,, Addison Wesley, 1 June 1994; ,ISBN, ,0-201-54777-5, +, +, +,Television, +, +, +,Computer Chronicles, (1985). "",UNIX,""., +,Computer Chronicles, (1989). "",Unix,""., +, +,External links,[,edit,], +, +, +, +,Look up ,Unix, in Wiktionary, the free dictionary., +, +, +, +, +, +,Wikimedia Commons has media related to ,Unix,., +, +, +, +, +, +,The Wikibook ,Guide to Unix, has a page on the topic of: ,Commands, +, +, +, +,The UNIX System,, at ,The Open Group,., +,The Evolution of the Unix Time-sharing System, at the ,Wayback Machine, (archived 8 April 2015), +,The Creation of the UNIX Operating System, at the ,Wayback Machine, (archived 2 April 2014), +,The Unix Tree: files from historic releases, +,Unix, at Curlie (based on ,DMOZ,), +,The Unix 1st Edition Manuals,., +,1982 film about Unix featuring Dennis Ritchie, Ken Thompson, Brian Kernighan, Alfred Aho, and more, +,A History of UNIX before Berkeley: UNIX Evolution: 1975-1984, +,BYTE Magazine, September 1986: UNIX and the MC68000, – a software perspective on the MC68000 CPU architecture and UNIX compatibility, +, +, +, +, +, +, +, +,v, +,t, +,e, +, +, +,Unix, ,command-line interface, programs and ,shell builtins, +, +, +, +,File system, +, +, +, +,cat, +,chmod, +,chown, +,chgrp, +,cksum, +,cmp, +,cp, +,dd, +,du, +,df, +,file, +,fuser, +,ln, +,ls, +,mkdir, +,mv, +,pax, +,pwd, +,rm, +,rmdir, +,split, +,tee, +,touch, +,type, +,umask, +, +, +, +, +, +,Processes, +, +, +, +,at, +,bg, +,crontab, +,fg, +,kill, +,nice, +,ps, +,time, +, +, +, +, +, +,User environment, +, +, +, +,env, +,exit, +,logname, +,mesg, +,talk, +,tput, +,uname, +,who, +,write, +, +, +, +, +, +,Text processing, +, +, +, +,awk, +,basename, +,comm, +,csplit, +,cut, +,diff, +,dirname, +,ed, +,ex, +,fold, +,head, +,iconv, +,join, +,m4, +,more, +,nl, +,paste, +,printf, +,sed, +,sort, +,strings, +,tail, +,tr, +,uniq, +,vi, +,wc, +,xargs, +, +, +, +, +, +,Shell builtins, +, +, +, +,alias, +,cd, +,echo, +,test, +,unset, +,wait, +, +, +, +, +, +,Searching, +, +, +, +,find, +,grep, +, +, +, +, +, +,Documentation, +, +, +, +,man, +, +, +, +, +, +,Software development, +, +, +, +,ar, +,ctags, +,lex, +,make, +,nm, +,strip, +,yacc, +, +, +, +, +, +,Miscellaneous, +, +, +, +,bc, +,cal, +,expr, +,lp, +,od, +,sleep, +,true and false, +, +, +, +, +, +, +, +, +, ,Categories, +, +,Standard Unix programs, +,Unix SUS2008 utilities, +, +, +, ,List, +, +, +, +, +, +, +, +, +, +, +, +, +,v, +,t, +,e, +, +, +,Unix, and ,Unix-like, ,operating systems, +, +, +, +, +, +, +,BSD, +, +,386BSD, +, +,FreeBSD, +,NetBSD, +,OpenBSD, +,DragonFly BSD, +, +, +,NeXTSTEP, +,Darwin, +, +,macOS, +,iOS, +, +, +,SunOS, +,Ultrix, +, +, +,Coherent, +,GNU, +,Linux, +, +,Android, +,Chrome OS, +, +, +,LynxOS, +,MINIX, +,QNX, +, +,BlackBerry 10, +, +, +,Research Unix, +,System V, +, +,A/UX, +,AIX, +,HP-UX, +,illumos, +,IRIX, +,OpenServer, +,Solaris, +,Tru64 UNIX, +,UnixWare, +, +, +,Xenix, +,more..., +, +, +, +, +, +, +, +, +, ,Category, +, ,Commons, +, ,Book, +, +, +, +, +, +, +, +, +, +, +, +, +,v, +,t, +,e, +, +, +,Operating systems, +, +, +, +,General, +, +, +, +,Advocacy, +,Comparison, +,Forensic engineering, +,History, +,Hobbyist development, +,List, +,Timeline, +,Usage share, +, +, +, +, +, +,Kernel, +, +, +, +, +,Architectures, +, +, +, +,Exokernel, +,Hybrid, +,Microkernel, +,Monolithic, +,Rump kernel, +,Unikernel, +, +, +, +, +, +,Components, +, +, +, +,Device driver, +,Loadable kernel module, +,Microkernel, +,User space, +, +, +, +, +, +, +, +, +,Process management, +, +, +, +, +,Concepts, +, +, +, +,Context switch, +,Interrupt, +,IPC, +,Process, +,Process control block, +,Real-time, +,Thread, +,Time-sharing, +, +, +, +, +, +,Scheduling, +algorithms, +, +, +, +,Computer multitasking, +,Fixed-priority preemptive, +,Multilevel feedback queue, +,Preemptive, +,Round-robin, +,Shortest job next, +, +, +, +, +, +, +, +, +,Memory management, and, +,resource, protection, +, +, +, +,Bus error, +,General protection fault, +,Memory protection, +,Paging, +,Protection ring, +,Segmentation fault, +,Virtual memory, +, +, +, +, +, +,Storage, access and, +,file systems, +, +, +, +,Boot loader, +,Defragmentation, +,Device file, +,File attribute, +,Inode, +,Journal, +,Partition, +,Virtual file system, +,Virtual tape library, +, +, +, +, +, +,List, +, +, +, +,AmigaOS, +,Android, +,BeOS, +,BSD, +,Chrome OS, +,CP/M, +,DOS, +,GNU, +,Haiku, +,illumos, +,IncludeOS, +,iOS, +,Linux, +,Macintosh, +, +,Classic Mac OS, +,macOS, +, +, +,MINIX, +,MorphOS, +,MUSIC/SP, +,Nemesis, +,NOS, +,OpenVMS, +,ORVYL, +,OS/2, +,OSv, +,Pick, +,QNX, +,ReactOS, +,RISC OS, +,RSTS/E, +,RSX-11, +,RT-11, +,Solaris, +,TOPS-10,/,TOPS-20, +,TPF, +,Unix, +,Visi On, +,VM/CMS, +,VS/9, +,Windows, +,Xinu, +,z/OS, +, +, +, +, +, +,Miscellaneous concepts, +, +, +, +,API, +,Computer network, +,HAL, +,Live CD, +,Live USB, +,OS shell, +, +,CLI, +,GUI, +,TUI, +,VUI, +, +, +,PXE, +, +, +, +, +, +, +, +, +, +,Authority control, +, +, +, +,GND,: ,4061835-3, +,BNF,: ,cb11968227m, ,(data), +, +, +, +, +, +, + + +, +, +, +, +",Unix +" 6 January 2018, at 06:23."," +, +, +, +Dries Buytaert at ,FOSDEM, 2008., +, +, +,Dries Buytaert, (born 19 November 1978 in ,Wilrijk,, ,Antwerp,, ,Belgium,),[1], is an ,open-source software, ,programmer, notable as founder and lead developer of the ,Drupal, ,CMS,.,[2],[3],[4], +, +, +, +,Contents, +, +, +,1, ,Career, +,2, ,References, +,3, ,External links, +, +,3.1, ,Interviews, +,3.2, ,Talks, +, +, +, +, +, +,Career,[,edit,], +,Buytaert defended his PhD dissertation in ,Computer Science, on 27 January 2008,[5], at ,Ghent University, in Belgium.,[6], +,From 1999-2000 he was the maintainer of the ,Linux,-,WLAN, FAQ,.,[7], +,It was during this time that he founded the concept of Drupal. At first, Dries maintained a small news site and a web board, but it developed to attract more audience.,[8], +,On 1 December 2007, Dries,[9], announced, together with co-founder ,Jay Batson, the launch of a start-up called ,Acquia,.,[10], Acquia is a commercial open-source software company providing products, services, and technical support for ,Drupal,. Acquia wants to be to Drupal what ,Red Hat, has been to ,Linux,.,[11], In 2009, Acquia helped re-launch Whitehouse.gov on Drupal.,[12], +,On 31 March 2008, Dries launched ,Mollom,, a service dedicated to stopping website spam: ""Mollom's purpose is to dramatically reduce the effort of keeping your site clean and the quality of your content high. Currently, Mollom is a spam-killing one-two punch combination of a state-of-the-art spam filter and CAPTCHA server."" Over 59,000 websites are protected by the Mollom service,,[13], including all of ,Netlog,'s messages.,[14], +,In 2008, Buytaert was elected ""Young Entrepreneurs of Tech"" by ,BusinessWeek,.,[15], He was also named to the ,MIT, ,Technology Review, ,TR35, as one of the top 35 innovators in the world under the age of 35.,[16],[17], +,References,[,edit,], +, +, +,^, ,Curriculum Vitae, ,Archived, 21 August 2010 at the ,Wayback Machine,., +,^, ,""History"",. Drupal.org,. Retrieved ,23 April, 2012,., , +,^, ,""The Drupal core"",. Drupal.org. Archived from ,the original, on 3 May 2012,. Retrieved ,23 April, 2012,., , +,^, ,""Revamp of MAINTAINERS.txt"",. Groups.drupal.org,. Retrieved ,23 April, 2012,., , +,^, ,""Dr. Dre, Dries Buytaert"",. Buytaert.net,. Retrieved ,23 April, 2012,., , +,^, ,""conferences.oreilly.com"",. Conferences.oreillynet.com,. Retrieved ,23 April, 2012,., , +,^, ,""Linux-Wlan Faq (Old)"",. Linux-wlan.org. 6 March 2000,. Retrieved ,23 April, 2012,., , +,^, ,""The Drop By Dries Buytaert"",. Eyerys. 30 December 2016., , +,^, ,""Acquia, my Drupal startup, Dries Buytaert"",. Buytaert.net,. Retrieved ,23 April, 2012,., , +,^, ,""Acquia"",. Acquia,. Retrieved ,23 April, 2012,., , +,^, ,""With $30M in funding, Acquia edges closer to an IPO"",. Venturebeat.com. 29 November 2012,. Retrieved ,20 January, 2013,., , +,^, ,""Whitehouse goes Drupal"",. Techpresident.com. 24 October 2009,. Retrieved ,23 April, 2012,., , +,^, ,""Mollom Scorecard"",. Retrieved ,27 January, 2013,., , +,^, ,""Mollom filtering millions of messages for Netlog"",. Buytaert.net. 20 May 2009,. Retrieved ,23 April, 2012,., , +,^, ,Kharif, Olga (17 April 2008). ,""Young Entrepreneurs of Tech 2008"",. Businessweek.com,. Retrieved ,23 April, 2012,., , +,^, ,""2008 Young Innovators Under 35"",. ,Technology Review,. 2008,. Retrieved ,15 August, 2011,., , +,^, ,Christopher Chang, 33 University of California, Berkeley. ,""TR35 2008 Young Innovator"",. Technologyreview.com,. Retrieved ,23 April, 2012,., ,CS1 maint: Multiple names: authors list (,link,), +, +, +,External links,[,edit,], +, +, +, +,Wikimedia Commons has media related to ,Dries Buytaert,., +, +, +, +, +, +,Wikinews, has :, +, +, +, +, +,an ,interview with Dries Buytaert,., +, +, +, +, +, +,Personal website, +,Acquia, +,Mollom, +, +,Interviews,[,edit,], +, +,An In-Depth Interview With Dries, Drupal Watchdog interview (February 2011), +,Drupal founder, Dries Buytaert Interview, CMS Critic interview (January 2009), +,Video interview, with Dries Buytaert by Noel Hidalgo in Antwerp, Belgium (26 July 2007), +, +,Talks,[,edit,], +, +,DrupalCon Los Angeles 2015: Driesnote Keynote, - Dries' talk at DrupalCon 2015 in Los Angeles, United States (May 2015), +,The State of Drupal, - Dries' talk at ,FOSDEM, 2007 in Brussels, Belgium (February 2007), +,Video of talk, delivered by Dries Buytaert titled the ,State of Drupal, from OSCMS conference on Yahoo campus in Sunnyvale, California (late March 2007), +,The State of Drupal, - Dries' State of Drupal talk at Drupalcon 2007 in Barcelona, Spain (September 2007), +, + + +, +, +, +, +",Dries Buytaert +" 18 January 2018, at 07:07."," +, +,Theo de Raadt, +, +, +, +,Theo de Raadt in 2013, +, +, +, +,Born, +,(,1968-05-19,), May 19, 1968 ,(age 49), +,Pretoria,, ,South Africa, +, +, +,Residence, +,Calgary,, ,Alberta,, ,Canada, +, +, +,Nationality, +,Canadian, +, +, +,Alma mater, +,University of Calgary, +, +, +,Known for, +,NetBSD,, ,OpenBSD,, ,OpenSSH,, advocacy, +, +, +,Awards, +,Award for the Advancement of Free Software, +, +, +,Scientific career, +, +, +,Fields, +,computer science, free software development, +, +, +,Institutions, +,FSA Corporation, +, +, +, +, +, +,Theo de Raadt, (,/,ˈ,θ,iː,.,oʊ, ,d,ɛ,ˈ,r,ɔː,t,/,; ,Dutch: ,[ˈteː.joː dəˈraːt],; born May 19, 1968) is a ,software engineer, who lives in ,Calgary,, ,Alberta,, ,Canada,. He is the founder and leader of the ,OpenBSD, and ,OpenSSH, projects, and was also a founding member of the ,NetBSD, project., +, +, +, +,Contents, +, +, +,1, ,Childhood, +,2, ,NetBSD, +,3, ,OpenBSD, +,4, ,Outspokenness, +, +,4.1, ,DARPA funding cancellation, +,4.2, ,Free driver advocacy, +,4.3, ,Clash with Linux developers, +, +, +,5, ,References, +,6, ,External links, +, +, +, +,Childhood,[,edit,], +,Theo de Raadt is the eldest of four children to a ,Dutch, father and a ,South African, mother, with two sisters and a brother. Concern over the mandatory two-year armed forces ,conscription, in South Africa led the family to emigrate to Calgary, Alberta, Canada in November 1977. In 1983, the ,largest recession in Canada, since the ,Great Depression, sent the family to the ,Yukon,. Prior to the move, De Raadt got his first computer, a ,Commodore VIC-20,, which was soon followed by an ,Amiga,. It is with these computers that he first began to develop software.,[1], +,In 1992, he obtained a ,BSc, in ,Computer Science, from the ,University of Calgary,., +,NetBSD,[,edit,], +,The ,NetBSD, project was founded in 1993 by Chris Demetriou, Adam Glass, Charles Hannum, and De Raadt, who collectively felt frustration at the speed and quality of ,Jolix,, the standard Berkeley software distribution then, and believed that a more open development model would be of greater benefit to development of an operating system. Jolix, also known as ,386BSD,, was derived from the original University of California Berkeley's 4.3BSD release, while the new NetBSD project would merge relevant code from the Networking/2 and 386BSD releases. The new project would centre its focus on clean, portable, correct code with the goal being to produce a unified, multi-platform, production-quality, BSD-based operating system., +,Because of the importance of networks such as the Internet in the distributed, collaborative nature of its development, De Raadt suggested the name ""NetBSD"", which the three other founders agreed upon.,[,citation needed,], +,The first NetBSD source code repository was established on March 21, 1993 and the initial release, NetBSD 0.8, was made in April 1993. This was derived from 386BSD 0.1 plus the version 0.2.2 unofficial patchkit, with several programs from the Net/2 release missing from 386BSD re-integrated, and various other improvements. In August 1993, NetBSD 0.9 was released, which contained many enhancements and bug fixes. This was still a ,PC,-platform-only release, although by this time work was underway to add support for other architectures., +,NetBSD 1.0 was released in October, 1994. This was the first multi-platform release, supporting the ,IBM PC compatible,, ,HP 9000, Series 300, ,Amiga,, ,68k, ,Macintosh,, ,Sun-4c, series and ,PC532,. Also in this release, the legally encumbered Net/2-derived source code was replaced with equivalent code from 4.4BSD-lite, in accordance with the ,USL v BSDi, lawsuit settlement. De Raadt played a vital role in the creation of the ,SPARC, port, as together with Chuck Cranor,,[2], he implemented much of the initial code., +,OpenBSD,[,edit,], +,In December 1994, De Raadt was asked to resign his position as a senior developer and member of the NetBSD core team, and his access to the source code repository was revoked. The reason for this is not wholly clear, although there are claims that it was due to personality clashes within the NetBSD project and on its ,mailing lists,.,[3], De Raadt has been criticized for having a somewhat abrasive personality: in his book, ,Free for All,, Peter Wayner claims that De Raadt ""began to rub some people the wrong way"" before the split from NetBSD;,[4], while ,Linus Torvalds, has described him as ""difficult"".,[5], Many have different feelings: the same interviewer describes De Raadt's ""transformation"" on founding OpenBSD and his ""desire to take care of his team,"" some find his straightforwardness refreshing, and few deny he is a talented ,hacker,[6], and security ""guru"".,[7], +,In October 1995, De Raadt founded OpenBSD, a new project ,forked, from NetBSD 1.0. The initial ,release,, OpenBSD 1.2, was made in July 1996, followed in October of the same year by OpenBSD 2.0.,[8], Since then, the project has followed a schedule of a release every six months, each of which is maintained and supported for one year., +,Outspokenness,[,edit,], +, +, +, +, +,Jon ""maddog"" Hall, presents De Raadt with ,daemon, horns at ,FISL8, +, +, +,De Raadt has been a vocal advocate of free software since the inception of OpenBSD, but he is also a strong proponent of free speech, having on occasion had rather public disputes with various groups, from Linux advocates to governments. This outspoken attitude, while sometimes the cause of conflict, has also led him to acclaim; De Raadt has given presentations at open source, free software and security conferences around the world—including ,FOSDEM, in ,Brussels,, ,Belgium,, ,Usenix, in ,San Antonio, Texas,, ,U.S.,, ,AUUG, Conference in ,Melbourne,, ,Australia, and ,FISL, in ,Porto Alegre,, RS, ,Brazil,., +,DARPA funding cancellation,[,edit,], +,After De Raadt stated his disapproval of the U.S.-led ,occupation of Iraq, in an April, 2003 ,interview,[9], with ,Toronto,'s ,Globe and Mail,, a multi-million-dollar ,US Department of Defense, grant to the ,University of Pennsylvania,'s ,POSSE project, was cancelled, effectively ending the project. Funding from the grant had been used in the development of OpenSSH and OpenBSD, as well as many other projects and was to be used to pay for the ,hackathon, planned for May 8, 2003. Despite money from the grant already having been used to secure accommodations for sixty developers for a week, the money was reclaimed by the government at a loss and the hotel was told not to allow the developers to pay the reclaimed money to resecure the rooms.,[10], This resulted in criticism among some that the US military held an anti-,free speech, attitude. The grant termination was, however, not as bad a blow as some portrayed it. The project's supporters rallied to help and the hackathon went on almost as planned. The funding was cut mere months before the end of the grant, further fueling the speculations regarding the situation surrounding the grant's termination., +,Free driver advocacy,[,edit,], +,De Raadt is also well known for his advocacy of ,free software, ,drivers,. He has long been critical of developers of ,Linux, and other free platforms for their tolerance of non-free drivers and acceptance of ,non-disclosure agreements,., +,In particular, De Raadt has worked to convince ,wireless, hardware vendors to allow the ,firmware, images of their products to be freely redistributed. These efforts have been largely successful, particularly in negotiations with ,Taiwanese, companies, leading to many new wireless drivers. De Raadt has commented that ""most Taiwanese vendors give us documentation almost immediately"", allowing open source drivers to reliably support devices, as opposed to the lack of willingness from US companies like ,Intel, and ,Broadcom, to release firmware images free from ,licensing, restrictions.,[11], +,For this De Raadt was awarded the ,Free Software Foundation,'s 2004 ,Award for the Advancement of Free Software,.,[12], +,Clash with Linux developers,[,edit,], +,In April 2007, De Raadt was involved in a controversy involving the use of ,GPL, code from the Linux ,bcm43xx, driver in the BSD ,bcw, driver.,[13],[14], Linux developers accused the BSD community of infringing GPL code, but De Raadt denied infringement, arguing that the BSD driver was not ""released"". He also maintained that the conflict was not about GPL, but the way Linux developer ,Michael Buesch, handled the situation. To Buesch's email, he responded:,[15], +, +,It will be resolved in our tree, but it is up to him which way he does it. But when you approach issues like this with comments like ""We'd like you to start contacting us to resolve the issue now"" and your first mail is cc'd to a couple hundred people.... in the future, please think more carefully, ok?, +,Because right now, in that mail, you've pretty much done Broadcom's job for them. You've told the entire BSD community who may want to use a driver for this chip later, that because of a few GPL issues you are willing to use very strong words—published very widely—to disrupt the efforts of one guy who is trying to do things for them. And, you are going to do this using the GPL, even. You did not privately mail that developer. No, you basically went public with it., +,That is how about half the user and developer community will see it. They will see your widely posted mail as an overly strong position., +, +,Another clash occurred in August 2007, when a group of Linux developers attempted to modify the license of dual-licensed ath5k driver. De Raadt summarized the issue as follows:,[16], +, +,GPL fans said the great problem we would face is that companies would take our BSD code, modify it, and not give back. Nope—the great problem we face is that people would wrap the GPL around our code, and lock us out in the same way that these supposed companies would lock us out. Just like the Linux community, we have many companies giving us code back, all the time. But once the code is GPL'd, we cannot get it back., +, +,References,[,edit,], +, +, +,^, ,The Age article: ,""Staying on the cutting edge"",. October 8, 2004. Accessed April 5, 2006., +,^, ,""Chuck Cranor's Home Page"",., , +,^, ,Glass, Adam. Message to netbsd-users: ,Theo De Raadt(sic),,, December 23, 1994. Visited January 8, 2006., +,^, ,Wayner, Peter. ,Free For All: How Linux and the Free Software Movement Undercut the High Tech Titans,, ,18.3 Flames, Fights, and the Birth of OpenBSD,, 2000. Visited January 6, 2006., +,^, ,Forbes. ,Is Linux For Losers?, June 16, 2005. Visited January 8, 2006., +,^, ,In ,this message, the NetBSD core team acknowledge De Raadt's ""positive contributions"" to the project despite their problems with him., +,^, ,Tux Journal. ,A good morning with: Theo de Raadt,,, June 2, 2005. Visited April 21, 2006 (original is ,404,; please see a ,cached copy on archive.org,), +,^, ,Raadt, Theo de. Mail to openbsd-announce: ,The OpenBSD 2.0 release,,, October 18, 1996. Visited December 10, 2005., +,^, ,Globe and Mail article: ,""U.S. military helps fund Calgary hacker"",. April 6, 2003. Accessed October 30, 2006., +,^, ,LWN.net article: ,""DARPA Cancels OpenBSD Funding"",. April 24, 2003. Accessed April 5, 2006., +,^, ,Andrews, Jeremy (May 2, 2006). ,""Interview: Theo de Raadt"",. Archived from ,the original, on April 24, 2013., , +,^, ,Lee, Matt (February 26, 2005). ,""Theo de Raadt presented with the 2004 Free Software Award"",. Free Software Foundation., , +,^, ,LXer article: ,Broadcom Driver Dispute Uglier Than Necessary,. April 7, 2007. Accessed April 8, 2007., +,^, ,Thread on gmane.linux.kernel.wireless.general: ,OpenBSD bcw: Possible GPL license violation issues, Various dates beginning April 4, 2007. Accessed April 8, 2007., +,^, ,Theo de Raadt (4 April 2007). ,""OpenBSD bcw: Possible GPL license violation issues"",. Retrieved ,28 May, 2017, – via ,marc.info,., , +,^, ,de Raadt, Theo (August 31, 2007). ,""That whole ""Linux stealing our code"" thing"",. LKML.org., , +, +, +,External links,[,edit,], +, +, +,Free software portal, +, +, +, +, +, +,Wikiquote has quotations related to: ,Theo de Raadt, +, +, +, +, +, +,Wikimedia Commons has media related to ,Theo de Raadt,., +, +, +, +,Theo de Raadt's Web site, +,Interview (2006): Theo de Raadt,, at ,KernelTrap.org, (copy at Internet Archive)., +,Theo de Raadt Responds,, interview at ,Slashdot,., +,Interview (2001): Theo de Raadt,, at ,KernelTrap.org, (copy at Internet Archive)., +,Is Linux For Losers?,, interview at ,Forbes.com,., +,Theo de Raadt presented with the 2004 Free Software Award, +,NNDB: Theo de Raadt, +,Staying on the cutting edge, +, +, +, +, +, +, +, +,v, +,t, +,e, +, +, +,The ,OpenBSD, Project, +, +, +, +,Operating system, +, +, +, +,OpenBSD, +, +,version history, +,security, +, +, +, +, +, +, +, +,Related projects, +, +, +, +,CARP, +,LibreSSL, +,mandoc, +,OpenSSH, +,OpenBGPD, +,OpenIKED, +,OpenOSPFD, +,OpenNTPD, +,OpenSMTPD, +,PF, +,sndio, +,spamd, +,Systrace, +,tmux, +,Xenocara, +, +,cwm, +, +, +,W^X, +, +, +, +, +, +,People, +, +, +, +,Theo de Raadt, +,Niels Provos, +,OpenBSD Foundation, +,Plaid Tongued Devils, +, +, +, +, +, +,Resources, +, +, +, +,OpenBSD Journal, +, +, +, +, +, +, +, +, +, +,Authority control, +, +, +, +,WorldCat Identities, +,VIAF,: ,106072661, +,MusicBrainz,: ,11ff06a3-6127-4b6d-9b43-bafcd8c650da, +,DBLP,: ,54/954, +, +, +, +, +, +, + + +, +, +, +, +",Theo de Raadt +" 22 January 2018, at 01:35.","This article is about the computing platform. For the currency, see ,Ether (currency),., +, +, +,Ethereum, +Currency: ,Ether, +, +, +, +,Ethereum Project's logo, +, +, +, +,Denominations, +, +, +,Plural, +,Ethers/Ethereums, +, +, +,Symbol, +,Ξ, +, +, +,Ticker symbol, +,ETH, +, +, +,Superunits, +, +, +, +, 10,12, +,Tether, +, +, +, 10,9, +,Gether, +, +, +, 10,6, +,Mether, +, +, +, 10,3, +,Kether, +, +, +,Subunits, +, +, +, +, 10,-3, +,Finney, milliether (mETH), +, +, +, 10,-6, +,Szabo, μETH, +, +, +, 10,-9, +,Shannon, nETH, Gwei, +, +, +, 10,-12, +,Babbage, pETH, Mwei, +, +, +, 10,-18, +,Wei, +, +, +,Coins, +,Balances from accounts to be debited/credited, in Wei, non-UTXO scheme, +, +, +,Development, +, +, +,White paper, +,https://github.com/ethereum/wiki/wiki/White-Paper, +, +, +,Implementation(s), +,Various, Go reference implementation, +, +, +,Code repository, +,https://github.com/ethereum/, +, +, +,Operating System, +,Non-specific, +, +, +,Source model, +,Open Source, +, +, +,License, +,GPL-3.0 & LGPL-3.0, +, +, +,Website, +,ethereum.org, +, +, +,Ledger, +, +, +,Timestamping scheme, +,Memory-hard Proof of Work (Ethash), +, +, +,Hash function, +,Keccak, +, +, +,Issuance, +,Block and Ommer reward, +, +, +,Block reward, +,3 ETH (non-deterministic), +, +, +,Block time, +,17-20 seconds, +, +, +,Block explorer, +,etherscan.io, +, +, +,Ethereum, is an ,open-source,, public, ,blockchain,-based ,distributed computing, platform featuring ,smart contract, (scripting) functionality.,[1], More specifically, it is a distributed ledger for state transitions. It is the bockchain network for ,Ether,, a ,cryptocurrency,. Ether can be transferred between accounts and used to compensate participant nodes for computations performed.,[2], Etherium provides a decentralized ,Turing-complete, ,virtual machine,, the Ethereum Virtual Machine (EVM), which can execute scripts using an international network of public nodes. ""Gas"", an internal transaction pricing mechanism, is used to mitigate ,spam, and allocate resources on the network.,[1],[3], +,Ethereum was proposed in late 2013 by ,Vitalik Buterin,, a ,cryptocurrency, researcher and programmer. Development was funded by an online ,crowdsale, that took place between July and August 2014. ,[4], The system went live on 30 July 2015, with 11.9 million coins ""premined"" for the crowdsale.,[5], This accounts for approximately 13 percent of the total circulating supply., +,In 2016, as a result of the collapse of ,The DAO, project, Ethereum was split into two separate blockchains – the new separate version became Ethereum (ETH), and the original continued as ,Ethereum Classic, (ETC).,[6],[7],[8], The value of the Ethereum currency grew over 13,000 percent in 2017.,[9], +, +, +, +,Contents, +, +, +,1, ,Etymology, +,2, ,History, +, +,2.1, ,Milestones, +,2.2, ,Public Testnets, +,2.3, ,The DAO event, +,2.4, ,Hard Forks, +, +, +,3, ,Architecture, +, +,3.1, ,Ether, +,3.2, ,Ethereum Virtual Machine, +,3.3, ,Smart contracts, +,3.4, ,Performance, +,3.5, ,Proposed uses, +, +, +,4, ,Decentralized applications, +, +,4.1, ,Enterprise software, +, +,4.1.1, ,Enterprise Ethereum Alliance (EEA), +,4.1.2, ,Permissioned ledgers, +, +, +, +, +,5, ,Ethereums, +,6, ,Criticisms, +,7, ,References, +,8, ,External links, +, +, +, +,Etymology,[,edit,], +,Vitalik Buterin picked the name Ethereum after browsing Wikipedia articles about elements and science fiction, when he found the name, noting, ""I immediately realized that I liked it better than all of the other alternatives that I had seen; I suppose it was the fact that sounded nice and it had the word ""ether"", referring to the hypothetical invisible medium that permeates the universe and allows light to travel."",[10], +,History,[,edit,], +,Ethereum was initially described in a white paper by ,Vitalik Buterin,,,[11], a programmer involved with ,Bitcoin Magazine,, in late 2013 with a goal of building decentralized applications.,[12],[13], Buterin had argued that Bitcoin needed a ,scripting language, for application development. Failing to gain agreement, he proposed development of a new platform with a more general scripting language.,[14],:,88, +,At the time of public announcement in January 2014, the core Ethereum team was Vitalik Buterin, Mihai Alisie, Anthony Di Iorio, and Charles Hoskinson.,[15], Formal development of the Ethereum software project began in early 2014 through a ,Swiss, company, ,Ethereum Switzerland GmbH, (,EthSuisse,).,[16],[17], Subsequently, a Swiss non-profit foundation, the Ethereum Foundation (,Stiftung Ethereum,), was created as well. Development was funded by an online public ,crowdsale, during July–August 2014, with the participants buying the Ethereum value token (ether) with another digital currency, ,bitcoin,.,[4], While there was early praise for the technical innovations of Ethereum, questions were also raised about its security and scalability.,[12], +,Milestones,[,edit,], +,Several codenamed prototypes of the Ethereum platform were developed by the Foundation, as part of their Proof-of-Concept series, prior to the official launch of the Frontier network. ""Olympic"" was the last of these prototypes, and public beta pre-release.,[18],[19], The Olympic network provided users with a ,bug bounty, of 25,000 ether for stress testing the limits of the Ethereum blockchain. ""Frontier"" marked the tentative experimental release of the Ethereum platform in July 2015.,[20],[21], +,""Homestead"" was the first to be considered ,stable,.,[22],[23], It includes improvements to transaction processing, gas pricing, and security.,[24],[22],[25], Since the initial launch, Ethereum has undergone several planned protocol upgrades, which are important changes affecting the underlying functionality and/or ,incentive structures, of the platform.,[26],[27], +,There are at least two other protocol upgrades planned in the future: ""Metropolis"" is intended to reduce the complexity of the EVM and provide more flexibility for smart contract developers.,[27], Metropolis also adds supports for zkSnarks (from ,Zcash,); with the first zksnarks transaction occurring on testnet on September 19, 2017.,[28], ""Serenity"" should include a fundamental change to Ethereum's consensus algorithm to enable a basic transition from hardware mining (,proof-of-work,) to virtual mining (,proof-of-stake,).,[27],[29], Improvements to ,scalability,, specifically ,sharding,, are also said to be a key objective on the development roadmap.,[30],[31], +, +, +,Version, +,Code name, +,Release date, +, +, +,Old version, no longer supported:, 0, +,Olympic, +,May, 2015, +, +, +,Old version, no longer supported:, 1, +,Frontier, +,30 July 2015, +, +, +,Old version, no longer supported:, 2, +,Homestead, +,14 March 2016, +, +, +,Current stable version:, ,3, +,Metropolis (vByzantium), +,16 October 2017, +, +, +,Future release:, 3.5, +,Metropolis (vConstantinople), +,TBA,[28], +, +, +,Future release:, 4, +,Serenity, +,TBA, +, +, +, +, +,Legend:, +,Old version, +,Older version, still supported, +,Latest version, +,Latest preview version, +,Future release, +, +, +, +, +, +,Public Testnets,[,edit,], +,Ethereum has three active public testnets: Ropsten (Proof of Work secured), Kovan (Parity based Proof of Authority secured), and Rinkeby (Clique Proof of Authority scheme). There is no Proof of Stake secured testnet. Each testnet has its own distinct genesis block, and are fully functional testing grounds for decentralized applications. Testnet Ether is not supposed to have market value., +,The DAO event,[,edit,], +,In 2016 a ,decentralized autonomous organization, called ,The DAO,, a set of ,smart contracts, developed on the platform, raised a record ,US$150 million, in a ,crowdsale, to fund the project.,[32], The DAO was exploited in June when ,US$50 million, in ether were claimed by an anonymous entity.,[33],[34], The event sparked a debate in the crypto-community about whether Ethereum should perform a contentious ""hard fork"" to reappropriate the affected funds.,[35], As a result of the dispute, the network split in two. Ethereum (the subject of this article) continued on the forked blockchain, while ,Ethereum Classic, continued on the original blockchain.,[36], The hard fork created a rivalry between the two networks.,[37], +,Hard Forks,[,edit,], +,After the hard fork related to The DAO, Ethereum subsequently forked twice in the fourth quarter of 2016 to deal with other attacks.,[38], By the end of November 2016, Ethereum had increased its ,DDoS, protection, de-bloated the blockchain, and thwarted further spam attacks by hackers.,[25], +,Architecture,[,edit,], +,Ether,[,edit,], +,Main article: ,Ether (currency), +,The value token of the Ethereum blockchain is called ether. It is listed under the code ETH and traded on ,cryptocurrency, exchanges, and the ,Greek, ,uppercase Xi, character (Ξ) is generally used for its ,currency symbol,. It is also used to pay for transaction fees and computational services on the Ethereum network.,[39], +,Ethereum Virtual Machine,[,edit,], +,The Ethereum Virtual Machine (EVM),[40],[41], is the runtime environment for smart contracts in Ethereum. The formal definition of the EVM is specified in the Ethereum Yellow Paper, original version by ,Gavin Wood,.,[42],[,better source needed,],[43], It is sandboxed and also completely isolated from the network, filesystem or other processes of the host computer system. Every Ethereum node in the network runs an EVM implementation and executes the same instructions. Ethereum Virtual Machines have been implemented in ,C++,, ,Go,, ,Haskell,, ,Java,, ,JavaScript,, ,Python,, ,Ruby,, ,Rust,, and ,WebAssembly, (currently under development).,[44],[45], +,Smart contracts,[,edit,], +,Ethereum's ,smart contracts, are based on computer language, which developers use to program their own functionalities.,[46], Smart contracts are ,high-level, programming ,abstractions, that are compiled down to EVM ,bytecode, and deployed to the Ethereum blockchain for execution. They can be written in ,Solidity, (a language library with similarities to ,C, and ,JavaScript,), Serpent (similar to ,Python,), LLL (a ,low-level, ,Lisp,-like language), and Mutan (,Go,-based, but deprecated). There is also a research-oriented language under development called Viper (a ,strongly-typed, ,Python,-derived ,decidable language,).,[47], +,Smart contracts can be public, which opens up the possibility to prove functionality, e.g. self-contained ,provably fair, casinos.,[48], +,One issue related to using smart contracts on a public blockchain is that bugs, including security holes, are visible to all but cannot be fixed quickly.,[49], One example of this is the 17 June 2016 attack on The DAO, which could not be quickly stopped or reversed.,[33], +,There is ongoing research on how to use formal verification to express and prove non-trivial properties. A ,Microsoft Research, report noted that writing solid smart contracts can be extremely difficult in practice, using The DAO hack to illustrate this problem. The report discussed tools that Microsoft had developed for verifying contracts, and noted that a large-scale analysis of published contracts is likely to uncover widespread vulnerabilities. The report also stated that it is possible to verify the equivalence of a Solidity program and the EVM code.,[50], +,Performance,[,edit,], +,In Ethereum all smart contracts are stored publicly on every node of the blockchain, which has trade-offs.,[51], Being a ,blockchain, means it is ,secure by design, and is an example of a distributed computing system with high ,Byzantine fault tolerance,. The downside is that performance issues arise in that every node is calculating all the smart contracts in real time, resulting in lower speeds.,[51], As of January 2016, the Ethereum protocol could process 25 transactions per second.,[51], On 19 December 2016, Ethereum exceeded one million transactions in a single day for the first time.,[52], +, +,Micro Raiden was launched November 2017.,[53], +,Buterin and Joseph Poon (a co-author of ,Bitcoin,'s lightning network whitepaper) announced in 2017 their plan to launch a scaling solution called Plasma which creates ""child"" blockchains to the ""main"" parent blockchain.,[54], The plasma project is not without skeptics, specifically Vlad Zamfir (Ethereum's lead researcher on proof of stake) has publicly questioned the plasma project's viability.,[54], +,Ethereum engineers have been working on ,sharding, the calculations, and the next step (called Ethereum 2) was presented at Devcon 3.,[55], +, +,Ethereum's blockchain uses ,Merkle Patricia trees,, for security reasons, to improve scalability, and to optimize transaction hashing.,[56], +,Proposed uses,[,edit,], +,Many uses have been proposed for Ethereum platform, including ones that are impossible or unfeasible.,[57],[58],[39], Use case proposals have included finance, the ,internet-of-things,, ,farm-to-table, produce, ,electricity sourcing and pricing,, and ,sports betting,.,[39],[59], Ethereum is (as of 2017) the leading ,blockchain, platform for ,initial coin offering, projects, with over 50% market share.,[60], +,Decentralized applications,[,edit,], +,The projects listed in this section are not exhaustive and may be outdated., +, +,Digital signatures, that ensure authenticity and proof of existence of documents: the ,Luxembourg Stock Exchange, has developed such a system,[61], +,Slock.It, is developing ,smart locks,[62], +,Digital tokens ,pegged, to ,fiat currencies,: Dai, stablecoin pegged to US dollar.,[63], ,Decentralized Capital.,[64], Spanish bank ,Santander, is also involved in such a project,[65],., +,Digital tokens ,pegged, to ,gold,: ,Digix,[4],[66], +,Improved ,digital rights management, for music: ,Imogen Heap, used the technology,[67], +,Platforms for ,prediction markets,: ,Augur,, Gnosis,[68],[69], Stox,[70],[71], +,Platforms for ,crowdfunding,: ,the DAO,[72],[73],[32], +,Social media platforms with economic incentives: ,Backfeed,,[74], ,Akasha,[75], +,Decentralized marketplaces: ,FreeMyVunk,,[76], ,Etheropt,,[77], ,TransActive Grid,[78], +,Remittance: ,Everex,[79], +,Online ,gambling,: ,Etheroll,[80], +,Electric car charging management: RWE,[81], +,Secure ,identity systems, for the Internet: ,uPort,[82],[83], +,Labour economics,: ,Blocklancer,,,[84], ,Ethlance,[85], +,Video Games,: ,Cryptokitties, popularity in December 2017 caused the Ethereum network to slow down.,[86], +, +,Enterprise software,[,edit,], +,Ethereum-based customized software and networks, independent from the public Ethereum chain, are being tested by ,enterprise software, companies.,[87], Interested parties include ,Microsoft,, ,IBM,, ,JPMorgan Chase,,,[39],[88], ,Deloitte,,,[89], ,R3,,,[90], ,Innovate UK, (cross-border payments prototype).,[91],[92], Barclays, UBS and Credit Suisse are experimenting with Ethereum blockchain to automate Markets in Financial Instruments Directive (MiFID) II requirements.,[93], +,Enterprise Ethereum Alliance (EEA),[,edit,], +,In March 2017, various blockchain start-ups, research groups, and Fortune 500 companies announced the creation of the Enterprise Ethereum Alliance (EEA) with 30 founding members.,[94], By May, the nonprofit organization had 116 enterprise members—including ,ConsenSys,, ,CME Group,, ,Cornell University's research group,, ,Toyota Research Institute,, ,Samsung SDS,, ,Microsoft,, ,Intel,, ,J.P. Morgan,, ,Cooley LLP,, ,Merck KGaA,, ,DTCC,, ,Deloitte,, ,Accenture,, ,Banco Santander,, ,BNY Mellon,, ,ING,, and ,National Bank of Canada,.,[95],[96],[97], +,The purpose of the EEA is to coordinate the engineering of an open-source reference standard and private ""permissioned"" version of the Ethereum blockchain that can address the common interests of enterprises in banking, management, consulting, automotive, pharmaceutical, health, technology, mobile, entertainment, and other industries, while working with developers from the Ethereum ecosystem. Certain members of the alliance have also indicated a desire to investigate and collaborate on hybrid architectures to potentially anchor private blockchains to the public Ethereum blockchain in the future, although concerns remain over the security, compliance, and regulations involved in bridging such permissioned and ""permissionless"" blockchains.,[94], +,By July 2017, there were over 150 members in the alliance, including recent additions ,MasterCard,, ,Cisco Systems,, and ,Scotiabank,.,[98], +,Permissioned ledgers,[,edit,], +,Ethereum-based ,permissioned blockchain, variants are used and being investigated for various projects., +, +,J.P. Morgan Chase, is developing a permissioned-variant of Ethereum blockchain dubbed ""Quorum."",[99], It's designed to toe the line between private and public in the realm of shuffling derivatives and payments. The idea is to satisfy regulators who need seamless access to financial goings-on, while protecting the privacy of parties that don't wish to reveal their identities nor the details of their transactions to the general public.,[100], +,Royal Bank of Scotland, has announced that it has built a Clearing and Settlement Mechanism (CSM) based on the Ethereum distributed ledger and smart contract platform.,[101],[102], +, +,Ethereums,[,edit,], +,Ethereums refer to the broad category that consists of all cryptocurrencies which emerged from the original ,Ethereum, blockchain:, +, +,Ethereum Classic, +,Expanse.,[103], +,Ethereum Fog,[104], +,EtherZero,[105], +,Ethereum Vega,[106], +,Etherite,[107], +,Ethereum Dark,[108], +, +,Ethereums can also refer for all ,tokens, developed and run on the Ethereum blockchain,[109], +,Criticisms,[,edit,], +,A finance blogger on ,FT Alphaville, has pointed out that criminals are using Ethereum to run ,Ponzi schemes, and other forms of investment fraud.,[110], The article was based on a paper from the ,University of Cagliari,, which placed the number of Ethereum smart contracts which facilitate Ponzi schemes at nearly 10% of 1384 smart contracts examined. However, it also estimated that only 0.05% of the transactions on the network were related to such contracts.,[111], +,References,[,edit,], +, +, +,^ ,a, ,b, ,Understanding Ethereum (Report). CoinDesk. 24 June 2016., , +,^, ,Cryptocurrencies: A Brief Thematic Review, ,Archived, 25 December 2017 at the ,Wayback Machine,.. Social Science Research Network. Date accessed 28 august 2017., +,^, ,ConsenSys (23 June 2016). ,""Ethereum, Gas, Fuel, & Fees"",. ,ConsenSys Media,. ,Archived, from the original on 23 May 2017,. Retrieved ,15 January, 2017,., , +,^ ,a, ,b, ,c, ,Aitken, Roger (23 April 2016). ,""Digital Gold 'Done Right' With DigixDAO Crypto-Trading on OpenLedger"",. ,Forbes,. ,Archived, from the original on 28 April 2016,. Retrieved ,28 April, 2016,., , +,^, ,etherchain.org. ,""Accounts - etherchain.org - The ethereum blockchain explorer"",. ,www.etherchain.org,. ,Archived, from the original on 7 August 2017,. Retrieved ,30 May, 2017,., , +,^, ,De Jesus, Cecille (19 July 2016). ,""The DAO Heist Undone: 97% of ETH Holders Vote for the Hard Fork"",. Futurism, LLC. ,Archived, from the original on 7 August 2017,. Retrieved ,16 May, 2017,., , +,^, ,Quentson, Andrew (17 July 2016). ,""Miners Vote Overwhelmingly in Support of Ethereum's Hardfork"",. Cryptocoinnews. ,Archived, from the original on 26 June 2017,. Retrieved ,14 May, 2017,., , +,^, ,Bradley, Miles (17 November 2016). ,""CoinDesk Research: Ethereum Hard Fork Had Little Impact on Sentiment"",. Coindesk. ,Archived, from the original on 8 July 2017,. Retrieved ,14 May, 2017,., , +,^, ,""Ethereum hits a fresh record high and is up over 13,000% in a year"",. ,CNBC,. January 8, 2017., , +,^, ,Vitalik Buterin (2014). ,""So where did the name Ethereum come from?"",., , +,^, ,""White Paper· ethereum/wiki Wiki · GitHub"",. ,Archived, from the original on 28 March 2015., , +,^ ,a, ,b, ,Finley, Klint (27 January 2014). ,""Out in the Open: Teenage Hacker Transforms Web Into One Giant Bitcoin Network"",. ,Wired,. ,Archived, from the original on 18 March 2016,. Retrieved ,21 March, 2016,., , +,^, ,Schneider, Nathan (7 April 2014). ,""Code your own utopia: Meet Ethereum, bitcoin's most ambitious successor"",. Al Jazeera. ,Archived, from the original on 23 February 2016,. Retrieved ,21 February, 2016,., , +,^, ,Tapscott, Don; Tapscott, Alex (2016-05-07). ,The Blockchain Revolution: How the Technology Behind Bitcoin is Changing Money, Business, and the World,. Portfolio. ,ISBN, ,978-0670069972,., , +,^, ,Vitalik Buterin (23 January 2014). ,""Ethereum: Now Going Public"",. Archived from ,the original, on 2 March 2014., , +,^, ,Schmid, Valentin (10 May 2014). ,""The Entrepreneur: Joe Lubin, COO of Ethereum"",. ,Epoch Times,. ,Archived, from the original on 25 April 2016,. Retrieved ,31 March, 2016,., , +,^, ,""Company Overview of Ethereum Switzerland GmbH"",. Bloomberg. 20 August 2016. ,Archived, from the original on 20 August 2016,. Retrieved ,20 August, 2016,. ,The company was founded in 2014 and is based in Baar, Switzerland., , +,^, ,Buterin, Vitalik (9 May 2015). ,""Olympic: Frontier Pre-Release"",. Ethereum Foundation. ,Archived, from the original on 2 June 2017,. Retrieved ,5 June, 2017,., , +,^, ,Lombardo, Hans (17 May 2015). ,""Ethereum Debuts ""eπ"" Ethereum-on-Raspberry Pi as Olympic Whirs before Frontier Release"",. Allcoinsnews. ,Archived, from the original on 20 August 2017,. Retrieved ,5 June, 2017,., , +,^, ,Gupta, Vinay (12 March 2015). ,""Getting to the Frontier"",. Ethereum Foundation. ,Archived, from the original on 8 May 2015,. Retrieved ,5 June, 2015,., , +,^, ,Vigna, Paul (31 July 2015). ,""BitBeat: Ethereum Opens Its 'Frontier' for Business"",. The Wall Street Journal. ,Archived, from the original on 6 September 2017,. Retrieved ,5 June, 2017,., , +,^ ,a, ,b, ,""Ethereum Homestead Documentation: The Homestead Release"",. Ethereum Foundation. n.d. ,Archived, from the original on 6 June 2017,. Retrieved ,5 June, 2017,., , +,^, ,Donnelly, Jacob (14 March 2016). ,""Ethereum Blockchain Project Launches First Production Release"",. CoindDesk. ,Archived, from the original on 6 June 2017,. Retrieved ,5 June, 2017,., , +,^, ,Wilcke, Jeffrey (29 February 2016). ,""Homestead Release"",. Ethereum Foundation. ,Archived, from the original on 3 June 2017,. Retrieved ,5 June, 2017,., , +,^ ,a, ,b, ,Hertig, Alyssa (22 November 2016). ,""Ethereum's Fourth Blockchain Fork: So Far, So Good"",. CoinDesk. ,Archived, from the original on 27 May 2017,. Retrieved ,5 June, 2017,., , +,^, ,Gupta, Vinay (3 March 2015). ,""The Ethereum Launch Process"",. Ethereum Foundation. ,Archived, from the original on 6 June 2017,. Retrieved ,5 June, 2017,., , +,^ ,a, ,b, ,c, ,Silva, Los (25 February 2017). ,""Ethereum's Road Map for 2017"",. ETHNews. ,Archived, from the original on 2 June 2017,. Retrieved ,5 June, 2017,., , +,^ ,a, ,b, ,O'Leary, Rachel Rose (19 September 2017). ,""Ethereum's Byzantium Testnet Just Verified A Private Transaction"",. CoinDesk. ,Archived, from the original on 23 September 2017,. Retrieved ,24 September, 2017,., , +,^, ,Hertig, Alyssa (18 January 2017). ,""Where's Casper? Inside Ethereum's Race to Reinvent its Blockchain"",. CoinDesk. ,Archived, from the original on 30 May 2017,. Retrieved ,5 June, 2017,., , +,^, ,Hertig, Alyssa (n.d.). ,""How Will Ethereum Scale?"",. CoinDesk. ,Archived, from the original on 10 June 2017,. Retrieved ,5 June, 2017,., , +,^, ,Rizzo, Pete (19 September 2016). ,""Ethereum's Creator Proves Blockchain Scaling Vision is No Joke"",. CoinDesk. ,Archived, from the original on 6 June 2017,. Retrieved ,5 June, 2017,., , +,^ ,a, ,b, ,Vigna, Paul (16 May 2016). ,""Chiefless Company Rakes in More than $100 Million"",. ,Wall Street Journal,. ,Archived, from the original on 25 June 2017,. Retrieved ,14 May, 2017,., , +,^ ,a, ,b, ,Popper, Nathaniel (18 June 2016). ,""Hacker May Have Taken $50 Million From Cybercurrency Project"",. ,The New York Times,. ,Archived, from the original on 20 June 2017,. Retrieved ,14 May, 2017,., , +,^, ,Price, Rob (17 June 2016). ,""Digital Currency Ethereum is Cratering Amid Claims of a $50 Million Hack"",. ,Business Insider,. Business Insider. ,Archived, from the original on 11 June 2017,. Retrieved ,14 May, 2017,., , +,^, ,Peck, Morgan (19 July 2016). ,"","",Hard Fork"" Coming to Restore Ethereum Funds to Investors of Hacked DAO"",. ,IEEE Spectrum: Technology, Engineering, and Science News,. IEEE. ,Archived, from the original on 3 March 2017,. Retrieved ,14 May, 2017,., , +,^, ,""What is Ethereum? | The Ultimate Beginners' Guide – CoinCentral"",. ,coincentral.com,. ,Archived, from the original on 11 September 2017,. Retrieved ,11 September, 2017,., , +,^, ,Hertig, Alyssa (28 July 2016). ,""Ethereum's Two Ethereums Explained"",. CoinDesk. ,Archived, from the original on 24 May 2017,. Retrieved ,15 May, 2017,., , +,^, ,Redman, Jamie (14 October 2016). ,""Ethereum to Hard Fork Two More Times Following Recent Attacks"",. ,Bitcoin.com,. Bitcoin.com. ,Archived, from the original on 2 November 2016,. Retrieved ,22 November, 2016,., , +,^ ,a, ,b, ,c, ,d, ,Popper, Nathaniel (27 March 2016). ,""Ethereum, a Virtual Currency, Enables Transactions That Rival Bitcoin's"",. ,New York Times,. ,Archived, from the original on 24 July 2016,. Retrieved ,2 September, 2016,., , +,^, ,""What Is Ethereum?—Ethereum Homestead 0.1 documentation"",. ,ethdocs.org,. ,Archived, from the original on 27 April 2017., , +,^, ,Dannen, Chris (2017). ""The EVM"". ,Introducing Ethereum and Solidity: Foundations of Cryptocurrency and Blockchain Programming for Beginners,. Apress. pp. 47–67. ,ISBN, ,9781484225356,., , +,^, ,Ethereum Yellow Paper, ,Archived, 18 February 2015 at the ,Wayback Machine,. by Gavin Wood, +,^, ,Triantafyllidis, Nikolaos Petros (19 February 2016). ""The Ethereum Project: Ethereum History"". Developing an Ethereum Blockchain Application (Report). University of Amsterdam. p. 20., , +,^, ,Dannen, Chris (27 March 2017). ,""Ethereum Devs Publish Roadmap for EVM Upgrade"",. CryptoNews. ,Archived, from the original on 25 December 2017., , +,^, ,""Ethereum Client Implementations - EntEthAlliance - Confluence"",. ,entethalliance.atlassian.net,., , +,^, ,""How Do Ethereum Smart Contracts Work?"",. ,CoinDesk,., , +,^, ,Rivlin, Brianne (14 November 2016). ,""Geth, Viper, and Wafr: New Ethereum Developments"",. ETHNews. ,Archived, from the original on 4 September 2017., , +,^, ,Piasecki, Piotr J. (2016). ,""Gaming Self-Contained Provably Fair Smart Contract Casinos"",. ,Ledger,. ,1,: 99–110. ,doi,:,10.5195/ledger.2016.29,. ,Archived, from the original on 24 December 2016., , +,^, ,Peck, M. (28 May 2016). ,""Ethereum's $150-Million Blockchain-Powered Fund Opens Just as Researchers Call For a Halt"",. ,IEEE Spectrum,. ,Institute of Electrical and Electronics Engineers,. ,Archived, from the original on 30 May 2016., , +,^, ,""Short Paper: Formal Verification of Smart Contracts"", ,(PDF),. ,microsoft.com/,. Microsoft. Archived from ,the original, ,(PDF), on 27 August 2016,. Retrieved ,25 August, 2016,., , +,^ ,a, ,b, ,c, ,Allison, Ian (25 January 2016). ,""How are banks actually going to use blockchains and smart contracts?"",. ,International Business Times,. ,Archived, from the original on 8 May 2016,. Retrieved ,4 May, 2016,., , +,^, ,Filiba, Jack. ,""Ethereum Breaks One Million Transactions in a Single Day"",. ,Archived, from the original on 22 December 2017., , +,^, ,Higgins, Stan. ,"",',Microraiden' Payment Channels Go Live on Ethereum Network"",. ,Archived, from the original on 22 December 2017., , +,^ ,a, ,b, ,Hertig, Alyssa (12 August 2017). ,""Ethereum + Lightning? Buterin and Poon Unveil 'Plasma' Scaling Plan"",. CoinDesk. ,Archived, from the original on 24 August 2017,. Retrieved ,23 August, 2017,., , +,^, ,Galeon, Dom. ,""Ethereum's Co-Founder Just Unveiled His Plan for the Future of Cryptocurrency"",. ,Archived, from the original on 9 November 2017., , +,^, ,Vitalik Buterin. ,""Merkling in Ethereum"",. ,Ethereum.org,., , +,^, ,Greenspan, Gideon (17 April 2016). ,""Why Many Smart Contract Use Cases Are Simply Impossible - CoinDesk"",. ,CoinDesk,. ,Archived, from the original on 7 August 2017., , +,^, ,""This Is Your Company on Blockchain"",. ,Bloomberg Businessweek,. ,Archived, from the original on 14 September 2016,. Retrieved ,14 September, 2016,., , +,^, ,Bordet, Julián (21 March 2016). ,""Decentralized Autonomous Organizations: Ethereum Sparks Up Googles of Tomorrow"",. ,The Cointelegraph,. ,Archived, from the original on 27 June 2016,. Retrieved ,21 July, 2016,., , +,^, ,""ICO Market Research: The Leading Blockchain Platforms Of 2017 - ICO Watch List Blog"",. ,ICO Watch List Blog,. 17 August 2017. ,Archived, from the original on 17 August 2017,. Retrieved ,20 August, 2017,., , +,^, ,""Luxembourg Stock Exchange introduces blockchain into reporting service"",. 2016-10-18,. Retrieved ,2016-11-04,., , +,^, ,Allison, Ian. ,""Ethereum-based Slock.it reveals first ever lock opened with money"",. ,International Business Times UK,. ,Archived, from the original on 2 April 2016., , +,^, ,Prince, Eliot. ,""MakerDAO Launches New Dai Stablecoin on the Ethereum Blockchain"",. ,Cryptoslate,., , +,^, ,Allison, Ian (12 September 2016). ,""Decentralized Capital issuing fiat-backed digital assets on the Ethereum blockchain"",. ,International Business Times,. ,Archived, from the original on 18 September 2016., , +,^, ,""Santander Confirms Fiat-backed Token Project on Ethereum Blockchain"",. ,CoinTelegraph,. ,Archived, from the original on 17 December 2016,. Retrieved ,15 January, 2017,., , +,^, ,Buntinx, JP (28 April 2016). ,""DigixDAO DGD Assets To Be Listed on OpenLedger"",. The Merkle. ,Archived, from the original on 2 June 2016,. Retrieved ,29 May, 2016,., , +,^, ,Allison, Ian (4 October 2015). ,""Imogen Heap shows how smart music contracts work using Ethereum"",. ,International Business Times,. ,Archived, from the original on 21 March 2016,. Retrieved ,24 March, 2016,., , +,^, ,""Ethereum Prediction Market Service Takes First Steps With Beta Launch - CoinDesk"",. ,CoinDesk,. 17 August 2016. ,Archived, from the original on 7 February 2017,. Retrieved ,6 February, 2017,., , +,^, ,""ICO Roundup 2017 by Cointelegraph: Cashing In On Blockchain Apps' Mainstream Year"",. ,CoinTelegraph,. ,Archived, from the original on 7 February 2017,. Retrieved ,6 February, 2017,., , +,^, ,""Stox Prediction Platform Closes ICO after One Day; Raises over $30 Million"",. CryptoCoinsNews. 2 August 2017. ,Archived, from the original on 29 September 2017,. Retrieved ,17 November, 2017,., , +,^, ,[1],[,dead link,], +,^, ,Rennie, Ellie (12 May 2016). ,""The radical DAO experiment"",. ,Swinburne News,. Swinburne University of Technology. ,Archived, from the original on 16 May 2016,. Retrieved ,12 May, 2016,. ,When it reaches the end of the funding phase on 28 May, it will begin contracting blockchain-based start-ups to create innovative technologies. The extraordinary thing about The DAO is that no single entity owns it, and it has no conventional management structure or board of directors., , +,^, ,Allison, Ian (30 April 2016). ,""Ethereum reinvents companies with launch of The DAO"",. ,International Business Times,. ,Archived, from the original on 1 May 2016,. Retrieved ,1 May, 2016,., , +,^, ,Weinglass, Simona (19 August 2015). ,""Backfeed wants to decentralize the Internet and help you earn what you deserve"",. Geektime.com. ,Archived, from the original on 14 March 2016,. Retrieved ,24 March, 2016,., , +,^, ,CFA, Adam Hayes, (3 February 2017). ,""This New Social Network is Powered by Ethereum Technology"",. ,Investopedia,. ,Archived, from the original on 6 February 2017,. Retrieved ,6 February, 2017,., , +,^, ,Allison, Ian (22 December 2015). ,""Game-changers FreeMyVunk and Digix allow video gamers to trade virtual assets for physical gold"",. ,International Business Times,. ,Archived, from the original on 17 March 2016,. Retrieved ,24 March, 2016,., , +,^, ,""Decentralized Options Exchange Etheropt Uses Automated Ethereum Smart Contract"",. ,Archived, from the original on 8 January 2017., , +,^, ,Rutkin, Aviva (2 March 2016). ,""Blockchain-based microgrid gives power to consumers in New York"",. ,New Scientist,. ,Archived, from the original on 22 March 2016,. Retrieved ,24 March, 2016,., , +,^, ,Mizrahi, Avi (1 December 2016). ,""Everex Helps Migrant Workers Send Remittance Back to Myanmar via Ethereum"",. ,Finance Magnates,. ,Archived, from the original on 20 December 2016,. Retrieved ,14 December, 2016,., , +,^, ,Bitcoinist. ,""Ethereum Dice Game Etheroll Announces Crowdfund Opening Feb. 13"",. ,bitcoinist.com,. ,Archived, from the original on 19 August 2017,. Retrieved ,18 August, 2017,., , +,^, ,Higgins, Stan. ,""Why a German Power Company is Using Ethereum to Test Blockchain Car Charging"",. ,CoinDesk,. ,Archived, from the original on 2 July 2017,. Retrieved ,2 May, 2017,., , +,^, ,EconoTimes. ,""ConsenSys uPort wins International Blockchain Summit - EconoTimes"",. ,EconoTimes,. ,Archived, from the original on 8 February 2017,. Retrieved ,6 February, 2017,., , +,^, ,Allison, Ian (23 September 2016). ,""ConsenSys uPort scoops first prize in International Blockchain Summit Demo Day"",. ,International Business Times UK,. ,Archived, from the original on 8 February 2017,. Retrieved ,6 February, 2017,., , +,^, ,Tkatchuk, Ralph (20 November 2017). ,""Can Blockchain Supercharge the Gig Economy?"",. ,Dataconomy,. ,Archived, from the original on 20 November 2017., , +,^, ,Gebron, Hunter (12 February 2017). ,""Ethlance and the Rise of the On-Demand Economy"",. ,Archived, from the original on 1 December 2017., , +,^, ,""CryptoKitties craze slows down transactions on Ethereum"",. 12 May 2017., , +,^, ,""Big Business Giants From Microsoft to J.P. Morgan Are Getting Behind Ethereum"",. ,Fortune,. ,Archived, from the original on 29 September 2017,. Retrieved ,8 November, 2017,., , +,^, ,""Hyperledger blockchain code almost comes together for IoT"",. Rethink Research. ,Archived, from the original on 16 August 2016,. Retrieved ,23 April, 2016,., , +,^, ,Allison, Ian (3 May 2016). ,""Deloitte to build Ethereum-based 'digital bank' with New York City's ConsenSys"",. ,International Business Times,. ,Archived, from the original on 6 May 2016., , +,^, ,Allison, Ian (20 January 2016). ,""R3 connects 11 banks to distributed ledger using Ethereum and Microsoft Azure"",. ,International Business Times,. ,Archived, from the original on 23 February 2016,. Retrieved ,23 February, 2016,., , +,^, ,""UK Government Awards £248k for Ethereum Prototype"",. ,CoinDesk,. ,Archived, from the original on 5 June 2016., , +,^, ,""Settlement using blockchain to Automate Foreign Exchange in a Regulated environment (SAFER)"",. ,Innovate UK,. ,Archived, from the original on 4 May 2016., , +,^, ,""Barclays, UBS, Credit Suisse Seek Ethereum Blockchain Solution For MiFID II Regulations"",. ,ETHNews.com,. Retrieved ,2017-12-29,., , +,^ ,a, ,b, ,Popper, Nathaniel (27 February 2017). ,""Business Giants to Announce Creation of a Computing System Based on Ethereum"",. ,New York Times,. ,Archived, from the original on 20 June 2017,. Retrieved ,5 June, 2017,., , +,^, ,Peck, Morgan (2 March 2017). ,""Corporate Titans Unite to Build an Enterprise Version of the Ethereum Blockchain"",. Institute of Electrical and Electronics Engineers (IEEE). ,Archived, from the original on 17 June 2017,. Retrieved ,5 June, 2017,., , +,^, ,""Enterprise Ethereum Alliance expands dramatically announcing 86 new members"", ,(PDF), (Press release). Enterprise Ethereum Alliance (EEA). 19 May 2017. ,Archived, ,(PDF), from the original on 7 June 2017,. Retrieved ,5 June, 2017,., , +,^, ,Shin, Laura (22 May 2017). ,""Ethereum Enterprise Alliance Adds 86 New Members Including DTCC, State Street And Infosys"",. Forbes. ,Archived, from the original on 22 May 2017,. Retrieved ,22 May, 2017,., , +,^, ,https://www.inc.com/brian-d-evans/the-enterprise-ethereum-alliance-just-got-a-whole-.html, +,^, ,""JP Morgan's Quorum blockchain powers new correspondent banking network "" Banking Technology"",. ,www.bankingtech.com,. ,Archived, from the original on 9 November 2017,. Retrieved ,8 November, 2017,., , +,^, ,Hacket, Robert. ,""Why J.P. Morgan Chase Is Building a Blockchain on Ethereum"",. ,Fortune,. ,Archived, from the original on 2 February 2017., , +,^, ,""Proving Ethereum for the Clearing Use Case"", ,(PDF),. ,Archived, ,(PDF), from the original on 10 October 2016., , +,^, ,Allison, Ian (7 December 2016). ,""Blockchain: RBS builds Ethereum-based distributed clearing house"",. ,IB Times,. ,Archived, from the original on 13 April 2017,. Retrieved ,8 May, 2017,., , +,^, ,""Expanse DAO Seeks to Develop Decentralised Ethereum"",., , +,^, ,""What Is Ethereum Fog?"",., , +,^, ,""EtherZero — a Revolutionary Ethereum Hard Fork"",., , +,^, ,""The New Classic? Protesters Are Already Plotting Alternative Ethereums"",., , +,^, ,""What is Etherite and how to help out"",., , +,^, ,""Ethereum Dark Official"",., , +,^, ,""Create your own CRYPTO-CURRENCY with Ethereum"",., , +,^, ,Kaminska, Izabella (1 June 2017). ,""It's not a ponzi, it's a smart ponzi"",. ,FT Alphaville,. ,Archived, from the original on 23 July 2017., , +,^, ,Bartoletti, Carta; et al. ,""Dissecting Ponzi schemes on Ethereum: identification, analysis, and impact"", ,(PDF),. Universita di Cagliari. ,Archived, ,(PDF), from the original on 17 August 2017,. Retrieved ,30 July, 2017,., ,CS1 maint: Explicit use of et al. (,link,), +, +, +,External links,[,edit,], +, +, +, +,Wikimedia Commons has media related to ,Ethereum,., +, +, +, +,Official website, +, +, +, +, +, +, +, +,v, +,t, +,e, +, +, +,Cryptocurrencies, +, +, +, +,SHA-256,-based, +, +, +, +,Bitcoin, +,Bitcoin Cash, +,Factom, +,Namecoin, +,NuBits, +,Peercoin, +,Titcoin, +, +, +, +, +, +,Scrypt,-based, +, +, +, +,Auroracoin, +,Dogecoin, +,Litecoin, +,PotCoin, +, +, +, +, +, +,Zerocoin,-based, +, +, +, +,Zcash, +,Zcoin, +,Zclassic, +,ZeroVert, +,Bitcoin Gold, +, +, +, +, +, +,CryptoNote,-based, +, +, +, +,Boolberry, +,Bytecoin, +,Monero, +, +, +, +, +, +,Ethash,-based, +, +, +, +,Ethereum, +,Ethereum Classic, +,KodakCoin, +,Ubiq, +, +, +, +, +, +,Other ,proof-of-work, +, +, +, +,Dash, +,Decred, +,DigiByte, +,IOTA, +,Myriadcoin, +,Primecoin, +,Sia, +,Zerocash, +, +, +, +, +, +,Non ,proof-of-work, +, +, +, +,Ardor, +,BitShares, +,BlackCoin, +,Burstcoin, +,Cardano, +,Counterparty, +,Enigma, +,EOS, +,FunFair, +,Gridcoin, +,Lisk, +,Melonport, +,NEM, +,NEO, +,Nxt, +,OmiseGO, +,Polkadot, +,Qtum, +,RChain, +,Ripple, +,Shadow, +,Simple Token, +,Stellar, +,Steem, +,Waves Platform, +, +, +, +, +, +,Consensus, mechanisms, +, +, +, +,Proof-of-authority, +,Proof-of-space, +,Proof-of-stake, +,Proof-of-work system, +, +, +, +, +, +,Technology, +, +, +, +,Blockchain, +,Fork, +,Cryptocurrency tumbler, +,Zerocoin, +,Lightning Network, +,Atomic swap, +, +, +, +, +, +,Related topics, +, +, +, +,Anonymous Internet banking, +,Bitcoin network, +,Complementary currency, +,Crypto-anarchism, +,Cryptocurrency exchange, +,Digital currency, +,Double-spending, +,Electronic money, +,Initial coin offering, +,Airdrop, +,Virtual currency, +,Crypto Valley, +, +, +, +, +, +, +, +, +, ,Category, +, ,Commons, +, ,List, +, +, +, +, +, +, + + +, +, +, +, +",Ethereum +" 11 January 2018, at 13:32."," +, +,Vitalik Buterin, +, +, +, +,Vitalik Buterin, 2016, +, +, +, +,Native name, +,Виталий Дмитриевич Бутерин, +, +, +,Born, +,(,1994-01-31,), January 31, 1994 ,(age 23), +,Kolomna,, ,Russia, +, +, +,Nationality, +,Russian-Canadian, +, +, +,Alma mater, +,University of Waterloo, +(Dropped Out), +, +, +,Known for, +,Ethereum,, ,Bitcoin Magazine, +, +, +,Awards, +,Thiel Fellowship, +, +, +,Website, +,http://vitalik.ca, +, +, +,Scientific career, +, +, +,Fields, +,Digital contracts,, ,Digital currencies,, ,Game Theory, +, +, +, +, +, +,Vitalik Buterin, (Born January 31, 1994. ,Russian,: ,Виталий Дмитриевич Бутерин,) is a ,Russian,-,Canadian, ,programmer, and writer primarily known as a co-founder of ,Ethereum, and as a co-founder of ,Bitcoin Magazine,.,[1],[2],[3], +, +, +, +,Contents, +, +, +,1, ,Personal life, +,2, ,Endeavors, +, +,2.1, ,Beginnings at ,Bitcoin Magazine, +,2.2, ,Ethereum, +,2.3, ,Open source software, +, +, +,3, ,Awards and recognition, +,4, ,See also, +,5, ,References, +,6, ,External links, +, +, +, +,Personal life,[,edit,], +,Buterin was born in ,Kolomna,, ,Moscow Oblast,, ,Russia, to Dmitry Buterin, a computer scientist, and Natalia Ameline (née Chistyakova).,[,citation needed,], He lived in the area until the age of six when his parents emigrated to ,Canada, in search of better employment opportunities. While in grade three of elementary school in Canada, Buterin was placed into a class for gifted children and started to understand that he was drawn to math, programming, and economics. He also had the ability to add three-digit numbers in his head at twice the speed of his peers.,[4], Buterin attended the ,Abelard School,, a private high school in Toronto, for four years,,[5], which he said, ""proved to be among the most interesting and productive years of my life; the closer connection between students and teachers [&] the level of depth at which the material was taught, made me want to learn, and to focus on learning as my primary goal"".,[5], Buterin has written that although he was ""never particularly inspired by the traditional education system"",,[5], when subjects were presented with ""dedication and focus on intellectual inquiry"", he said he:, +, +,""noticed my attitude and my results almost immediately and drastically change. Education is ultimately much more than simply memorizing individual facts, or even learning individual concepts. [What] matters most: learning how to think, learning how to reason and learning how to learn."",[5], +, +,Buterin learned about Bitcoin, from his father, at age 17.,[4], In 2012, he obtained a Bronze Medal in the International Olympiad in Informatics.,[6], In 2013 he visited developers in other countries who shared his enthusiasm for code. He returned to Toronto later that year and published a white paper proposing Ethereum.,[7], He attended the ,University of Waterloo, but dropped out in 2014, when he received the ,Thiel Fellowship, in the amount of $100,000,,[8], and went to work on Ethereum full-time.,[8], +,On June 25, 2017, Buterin was the subject of a ,death hoax, originating from ,4chan,.,[9], +,Endeavors,[,edit,], +, +,Pybitcointools, (2013–), +,Bitcoin Magazine, (2011–2014), +,Ethereum, (2013–), +, +,Beginnings at ,Bitcoin Magazine,[,edit,], +,Main article: ,Bitcoin Magazine, +,Buterin met a person on a bitcoin chat forum trying to start a bitcoin blog. The owner offered five bitcoin (about $3.50) to anyone who would write an article for him. Buterin wrote for the site until its website shut down soon thereafter due to Bitcoin's lack of mainstream attention.,[10], +,In September 2011, another person reached out to Buterin about a new publication called ,Bitcoin Magazine,, a position which Buterin would accept as the first co-founder, and contribute as a leading writer., +,In addition Buterin wrote about bitcoin-related topics for other publications, including ,Bitcoin Weekly,.,[1],[11], ,Bitcoin Magazine, in 2012 later began publishing a print edition and has been referred to as the first serious publication dedicated to cryptocurrencies.,[12], ,Bitcoin Magazine, was then purchased by ,BTC Media,, where Buterin continued to write until mid-2014., +,In addition, he held a position on the editorial board of ,Ledger,, a peer-reviewed scholarly journal that publishes full-length original research articles on the subjects of cryptocurrency and blockchain technology.,[13], +,Ethereum,[,edit,], +,Main article: ,Ethereum, +,He is a co-creator and inventor of Ethereum, described as a “decentralised mining network and software development platform rolled into one” that facilitates the creation of new cryptocurrencies and programs that share a single ,blockchain, (a cryptographic transaction ledger).,[14],[15],[16], +,Ethereum was first described in Buterin's white paper, in late 2013. Buterin argued that bitcoin needed a scripting language for application development. But when he failed to gain agreement, he proposed development of a new platform with a more general scripting language.,[17], About the Ethereum Project, Buterin has said: ""I am truly grateful to have the opportunity to work in such an interesting and interdisciplinary area of industry, where I have the chance to interact with cryptographers, mathematicians and economists prominent in their fields, to help build software and tools that already affect tens of thousands of people around the world, and to work on advanced problems in computer science, economics and philosophy every week."",[5], +,Open source software,[,edit,], +,Vitalik has contributed as a developer to other open source software projects.,[1], Some early examples are: Kryptokit, pybitcointools, multisig.info, and btckeysplit.,[18], He also contributed to DarkWallet,[19], by ,Cody Wilson,, ,Bitcoin, ,Python, libraries,,[20], and the ,cryptocurrency, marketplace site Egora.,[2], +,Awards and recognition,[,edit,], +, +,Thiel Fellowship, Award, 2014 ,[21], +,World Technology Award in the IT Software category, 2014 ,[22], +,Fortune, 40 under 40 list, 2016.,[23], +,Forbes, 30 under 30 list, 2018.,[24], +, +,See also,[,edit,], +, +,Joseph Lubin, – Ethereum co-founder, +, +,References,[,edit,], +, +, +,^ ,a, ,b, ,c, ,Finley, Klint (27 January 2014). ,""Out in the open: Teenage hacker transforms web into one giant Bitcoin network"",. ,Wired,. Retrieved ,7 February, 2014,., , +,^ ,a, ,b, ,Melendez, Steven (10 February 2014). ,""Could this 20-Year-Old kid make Bitcoin obsolete?"",. ,Fast Company,. Retrieved ,22 February, 2014,., , +,^, ,del Castillo, Michael (24 September 2014). ,""Dark wallet: A radical way to Bitcoin"",. ,The New Yorker,. Retrieved ,24 January, 2014,., , +,^ ,a, ,b, ,Peck, Morgen (2016-06-13). ,""The Uncanny Mind That Built Ethereum"",. ,Backchannel,. Retrieved ,2016-06-15,., , +,^ ,a, ,b, ,c, ,d, ,e, ,""Students"",. ,Abelard School,. Retrieved ,7 October, 2017,., , +,^, ,""Results | IOI 2012"",. ,www.ioi2012.org,. Retrieved ,2016-07-21,., , +,^, ,Braga, Matthew (13 Oct 2016). ,""Change Agents 2016: Vitalik Buterin, Ethereum"",. Canadian Business,. Retrieved ,6 June, 2017,., , +,^ ,a, ,b, ,Elliot, Josh (July 2, 2014). ,""Why a 20-year-old Toronto drop-out accepted $100,000 to stay out of school"",. ,CTV,. Retrieved ,25 April, 2016,., , +,^, ,""4chan's Vitalik Buterin Death Hoax Crashes Ethereum Price"",. ,Bitsonline,. 2017-06-25,. Retrieved ,2017-06-25,., , +,^, ,""Interview with Vitalik Buterin"",. Bitcorati, Inc. January 10, 2014,. Retrieved ,June 3,, 2017,., , +,^, ,""About us – Bitcoin Magazine"",. ,Bitcoin Magazine,. Coin Publishing Ltd,. Retrieved ,23 February, 2014,., , +,^, ,Vigna, Paul; Casey, Michael J. (2015). ""Community"". ,The Age of Cryptocurrency: How Bitcoin and the Blockchain Are Challenging .., ,Macmillan Publishers,. p. 88. ,ISBN, ,9781250065636,., , +,^, ,""Ledger"",. Retrieved ,4 February, 2016,., , +,^, ,Aron, Jacob (6 February 2014). ,""Bitcoin: How its core technology will change the world"",. ,New Scientist, (2955),. Retrieved ,22 February, 2014,., , +,^, ,Hajdarbegovic, Nermin (23 February 2014). ,""Ethereum launches 'Cryptocurrency 2.0' network"",. ,CoinDesk,. Retrieved ,22 February, 2014,., , +,^, ,""Vitalik Buterin on Ethereum and The Decentralized Future"",. ,Future Thinkers Podcast,. 2015-04-21,. Retrieved ,2016-05-13,., , +,^, ,""Facilitating Online Contractual Agreements With Vitalik Buterin"",. ,Eyerys.com,. 2017-06-29,. Retrieved ,2017-06-30,., , +,^, ,Southurst, Jon (7 January 2014). ,""Roger Ver and Erik Voorhees Back Bitcoin Wallet KryptoKit"",. ,CoinDesk,. Retrieved ,25 April, 2016,., , +,^, ,Kelly, Brian (2015). ""Smart Money, set it and forget it"". ,The Bitcoin Big Bang: How Alternative Currencies Are About to Change the World,. ,Wiley Publishing,. p. 156. ,ISBN, ,978-1118963661,., , +,^, ,Antonopoulos, Andreas M. (December 20, 2014). ""#4. Keys, Addresses, and Wallets"". ,Mastering Bitcoin: Unlocking Digital Cryptocurrencies,. ,O'Reilly Media,. p. 82. ,ISBN, ,978-1449374044,., , +,^, ,Finley, Klint (5 June 2014). ,""$100k Peter Thiel Fellowship Awarded to Ethereum's Vitalik Buterin"",. ,CoinDesk,. Retrieved ,11 August, 2014,., , +,^, ,The 2014 World Technology Award Winner, +,^, ,40 under 40: Vitalik Buterin, 22,, ,Fortune,, September 2016., +,^, ,Forbes 30 under 30,, ,Forbes,, November 2017., +, +, +,External links,[,edit,], +, +,Decentralizing Everything with Ethereum's Vitalik Buterin | Disrupt SF 2017, (YouTube), +, + + +, +, +, +, +",Vitalik Buterin +" 20 November 2017, at 16:38."," +, +, +, +A timeline chart of how ,Linux distributions, forked., +, +, +,In ,software engineering,, a ,project fork, happens when developers take a copy of ,source code, from one ,software package, and start independent development on it, creating a distinct and separate piece of software. The term often implies not merely a ,development branch,, but also a split in the developer community, a form of ,schism,.,[1], +,Free and open-source software, is that which, by definition, may be forked from the original development team without prior permission, without violating ,copyright, law. However, licensed forks of proprietary software (,e.g., ,Unix,) also happen., +, +, +, +,Contents, +, +, +,1, ,Etymology, +,2, ,Forking of free and open source software, +,3, ,Forking proprietary software, +,4, ,See also, +,5, ,References, +,6, ,External links, +, +, +, +,Etymology,[,edit,], +,The word fork stems from the Latin word furca, meaning a ""fork or similarly shaped instrument."",[2], ""Fork"" in the meaning of ""to divide in branches, go separate ways"" has been used as early as the 14th century.,[3], In the software environment, the word evokes the ,fork, system call, which causes a running process to split itself into two (almost) identical copies that (typically) diverge to perform different tasks.,[4], +,In the context of software development, ""fork"" was used in the sense of creating a revision control "",branch,"" by ,Eric Allman, as early as 1980, in the context of ,SCCS,:,[5], +, +,Creating a branch ""forks off"" a version of the program., +, +,The term was in use on ,Usenet, by 1983 for the process of creating a subgroup to move topics of discussion to.,[6], +,""Fork"" is not known to have been used in the sense of a community schism during the origins of Lucid Emacs (now ,XEmacs,) (1991) or the ,BSDs, (1993–1994); ,Russ Nelson, used the term ""shattering"" for this sort of fork in 1993, attributing it to ,John Gilmore,.,[7], However, ""fork"" was in use in the present sense by 1995 to describe the XEmacs split,,[8], and was an understood usage in the ,GNU, Project by 1996.,[9], +,Forking of free and open source software,[,edit,], +,Free and open source software may be legally forked without prior approval of those currently developing, managing, or distributing the software per both ,The Free Software Definition, and ,The Open Source Definition,:,[10], +, +,The freedom to distribute copies of your modified versions to others (freedom 3). By doing this, you can give the whole community a chance to benefit from your changes. Access to the source code is a precondition for this., +,— ,The Free Software Definition,[11], +, +, +,3. Derived Works: The license must allow modifications and derived works, and must allow them to be distributed under the same terms as the license of the original software., +,— ,The Open Source Definition,[12], +, +,In free software, forks often result from a schism over different goals or personality clashes. In a fork, both parties assume nearly identical code bases, but typically only the larger group, or whoever controls the Web site, will retain the full original name and the associated user community. Thus, there is a reputation penalty associated with forking.,[10], The relationship between the different teams can be cordial or very bitter., +,Eric S. Raymond,, in his essay ,Homesteading the Noosphere,,,[13], stated that ""The most important characteristic of a fork is that it spawns competing projects that cannot later exchange code, splitting the potential developer community"". He notes in the ,Jargon File,:,[14], +, +,Forking is considered a Bad Thing—not merely because it implies a lot of wasted effort in the future, but because forks tend to be accompanied by a great deal of strife and acrimony between the successor groups over issues of legitimacy, succession, and design direction. There is serious social pressure against forking. As a result, major forks (such as the ,Gnu-Emacs,/,XEmacs, split, the fissioning of the ,386BSD, group into three daughter projects, and the short-lived GCC/EGCS split) are rare enough that they are remembered individually in hacker folklore., +, +,David A. Wheeler, notes,[10], four possible outcomes of a fork, with examples:, +, +,The death of the fork. This is by far the most common case. It is easy to declare a fork, but considerable effort to continue independent development and support., +,A re-merging of the fork (,e.g.,, ,egcs, becoming ""blessed"" as the new version of ,gcc,.), +,The death of the original (,e.g., the ,X.Org Server, succeeding and ,XFree86, dying.), +,Successful branching, typically with differentiation (,e.g.,, ,OpenBSD, and ,NetBSD,.), +, +,Distributed revision control, (DVCS) tools have popularised a less emotive use of the term ""fork"", blurring the distinction with ""branch"".,[15], With a DVCS such as ,Mercurial, or ,Git,, the normal way to contribute to a project, is to first create a personal branch of the repository, independent of the main repository, and later seek to have your changes integrated with it. Sites such as ,GitHub,, ,Bitbucket, and ,Launchpad, provide free DVCS hosting expressly supporting independent branches, such that the technical, social and financial barriers to forking a source code repository are massively reduced, and GitHub uses ""fork"" as its term for this method of contribution to a project., +,Forks often restart version numbering from 0.1 or 1.0 even if the original software was at version 3.0, 4.0, or 5.0. An exception is when the forked software is designed to be a drop-in replacement for the original project, ,e.g., ,MariaDB, for ,MySQL,[16], or ,LibreOffice, for ,OpenOffice.org,., +,Forking proprietary software,[,edit,], +,In ,proprietary software,, the copyright is usually held by the employing entity, not by the individual software developers. Proprietary code is thus more commonly forked when the owner needs to develop two or more versions, such as a ,windowed, version and a ,command line, version, or versions for differing operating systems, such as a ,word processor, for ,IBM PC, compatible machines and ,Macintosh, computers. Generally, such internal forks will concentrate on having the same look, feel, data format, and behavior between platforms so that a user familiar with one can also be productive or share documents generated on the other. This is almost always an economic decision to generate a greater ,market share, and thus pay back the associated extra development costs created by the fork., +,A notable proprietary fork not of this kind is the many varieties of proprietary ,Unix,—almost all derived from AT&T Unix under license and all called ""Unix"", but increasingly mutually incompatible.,[17], ,See, ,UNIX wars,., +,The ,BSD licenses, permit forks to become proprietary software, and some say,[,who?,], that commercial incentives thus make proprietisation almost inevitable. Examples include ,macOS, (based on the proprietary ,NeXTSTEP, and the open source ,FreeBSD,), ,Cedega, and ,CrossOver, (proprietary forks of ,Wine,, though CrossOver tracks Wine and contributes considerably), EnterpriseDB (a fork of ,PostgreSQL,, adding Oracle compatibility features,[18],), Supported PostgreSQL with their proprietary ESM storage system,,[19], and Netezza's,[20], proprietary highly scalable derivative of PostgreSQL. Some of these vendors contribute back changes to the community project, while some keep their changes as their own competitive advantages., +,See also,[,edit,], +, +,List of software forks, +,Source port, +,Downstream (software development), +,Group decision-making, +,Modular programming, +, +,Modding, +, +, +,Custom software, +,Personalization, +,Team effectiveness, +, +,Duplicate code, +, +, +,ROM Hacking, +, +,References,[,edit,], +, +, +,^, ,""Schism"", with its connotations, is a common usage, ,e.g., ,""the Lemacs/FSFmacs schism"", (,Jamie Zawinski,, 2000), ,""Behind the KOffice split"", (Joe Brockmeier, ,Linux Weekly News,, 2010-12-14), ,""Copyright assignment - once bitten, twice shy"", (Richard Hillesley, ,H-Online,, 2010-08-06), ,""Forking is a feature"", (,Anil Dash,, 2010-09-10), ,""The Great Software Schism"", (,Glyn Moody,, ,Linux Journal,, 2006-09-28), ,""To Fork Or Not To Fork: Lessons From Ubuntu and Debian"", (,Benjamin Mako Hill,, 2005)., +,^, ,See, e.g., ,""furca"" from Etymological Dictionary of Latin by Michiel de Vaan (Ph.D. 2002), +,^, ,Entry 'fork' in Online Etymology Dictionary, +,^, ,""The term fork is derived from the POSIX standard for operating systems: the system call used so that a process generates a copy of itself is called fork()."" ,Robles, Gregorio; González-Barahona, Jesús M. (2012). ,A Comprehensive Study of Software Forks: Dates, Reasons and Outcomes, ,(PDF),. OSS 2012 The Eighth International Conference on Open Source Systems,. Retrieved ,20 Oct, 2012,., , +,^, ,Allman, Eric. ,""An Introduction to the Source Code Control System."", Project Ingres, University of California at Berkeley, 1980., +,^, ,Can somebody fork off a ""net.philosophy""?, (,John Gilmore,, net.misc, 18 January 1983), +,^, ,Shattering — good or bad?, (Russell Nelson, gnu.misc.discuss, 1 October 1993), +,^, ,Re: Hey Franz: 32K Windows SUCK!!!!!, (Bill Dubuque, cu.cs.macl.info, 21 September 1995), +,^, ,Lignux?, (Marcus G. Daniels, gnu.misc.discuss, 7 June 1996), +,^ ,a, ,b, ,c, ,Why Open Source Software / Free Software (OSS/FS, FLOSS, or FOSS)? Look at the Numbers!: Forking, (,David A. Wheeler,), +,^, ,Stallman, Richard. ,""The Free Software Definition"",. Free Software Foundation,. Retrieved ,2013-10-15,., , +,^, ,""The Open Source Definition"",. The Open Source Initiative,. Retrieved ,15 October, 2013,., , +,^, ,Raymond, Eric S., (15 August 2002). ,""Promiscuous Theory, Puritan Practice"",., , +,^, ,Forked, (,Jargon File,), first added to ,v4.2.2,, 20 Aug 2000), +,^, ,e.g., ,Willis, Nathan (15 January 2015). ,""An ""open governance"" fork of Node.js"",. ,LWN.net,. Retrieved ,15 January, 2015,. ,Forks are a natural part of the open development model—so much so that GitHub famously plasters a ""fork your own copy"" button on almost every page., , See also ,Nyman, Linus (2015). ,""Understanding Code Forking in Open Source Software"", (Ph.D.). Hanken School of Economics. p. 57. ,Where practitioners have previously had rather narrow definitions of a fork, [...] the term now appears to be used much more broadly. Actions that would traditionally have been called a branch, a new distribution, code fragmentation, a pseudo-fork, etc. may all now be called forks by some developers. This appears to be in no insignificant part due to the broad definition and use of the term fork by GitHub., , +,^, ,Forked a project, where do my version numbers start?, +,^, ,Fear of forking, - An essay about forking in ,free software, projects, by Rick Moen, +,^, ,EnterpriseDB, +,^, ,Fujitsu Supported PostgreSQL, ,Archived, 20 August 2006 at the ,Wayback Machine,., +,^, ,Netezza, +, +, +,External links,[,edit,], +, +,Right to Fork, at ,Meatball Wiki, +,A PhD examining forking: ,(Nyman, 2015), ""Understanding Code Forking in Open Source Software - An examination of code forking, its effect on open source software, and how it is viewed and practiced by developers"", +, +, +, +, +, +, +, +,v, +,t, +,e, +, +, +,Free and open-source software, +, +, +, +,General, +, +, +, +,Alternative terms for free software, +,Comparison of open-source and closed-source software, +,Comparison of source code hosting facilities, +,Free software, +,Free software project directories, +,Gratis versus libre, +,Long-term support, +,Open-source software, +,Open-source software development, +,Outline, +, +, +, +, +, +,Software, +packages, +, +, +, +,Audio, +,Bioinformatics, +,Codecs, +,Collaboration, +,Configuration management, +,Device drivers, +, +,Graphics, +,Wireless, +, +, +,Geophysics, +,Health, +,Mathematics, +,Operating systems, +,Programming languages, +,Routing, +,Statistics, +,Television, +,Video games, +,Web applications, +, +,Content management systems, +,E-commerce, +, +, +,Word processors, +,Android apps, +,iOS apps, +,Commercial, +,Trademarked, +,Formerly proprietary, +, +, +, +, +, +,Community, +, +, +, +,Free software movement, +,History, +,Open-source software movement, +,Organizations, +,Events, +, +, +, +, +, +,Licenses, +, +, +, +,AFL, +,Apache, +,APSL, +,Artistic, +,Beerware, +,Boost, +,BSD, +,CC0, +,CDDL, +,EPL, +,GNU GPL, +,GNU LGPL, +,ISC, +,MIT, +,MPL, +,Ms-PL/RL, +,Python, +,Python Software Foundation, +,Sleepycat, +,Unlicense, +,WTFPL, +,zlib, +, +, +, +, +, +,License types, +and standards, +, +, +, +,Comparison of free and open-source software licenses, +,Contributor License Agreement, +,Copyfree, +,Copyleft, +,Debian Free Software Guidelines, +,Definition of Free Cultural Works, +,Free license, +,The Free Software Definition, +,The Open Source Definition, +,Open-source license, +,Permissive software licence, +,Public domain, +,Viral license, +, +, +, +, +, +,Challenges, +, +, +, +,Binary blob, +,Digital rights management, +,Hardware restrictions, +,License proliferation, +,Mozilla software rebranding, +,Proprietary software, +,SCO/Linux controversies, +,Secure boot, +,Software patents, +,Software security, +,Trusted Computing, +, +, +, +, +, +,Related topics, +, +, +, +,The Cathedral and the Bazaar, +,Forking, +,Microsoft Open Specification Promise, +,Revolution OS, +, +, +, +, +, +, +, +, +, ,Book, +, ,Category, +, ,Commons, +, ,Portal, +, +, +, +, +, +, + + +, +, +, +, +",Fork (software development) +" 31 December 2017, at 19:16."," +,pandas, +, +, +, +, +,Original author(s), +,Wes McKinney, +, +, +,Developer(s), +,Community, +, +, +, +, +, +,Stable release, +, +,0.22.0,[1], / 29 December 2017,; 19 days ago, (,2017-12-29,), +, +, +, +, +, +, +,Repository, +, +, +, +,https://github.com/pandas-dev/pandas, +, +, +, +, +, +,Written in, +,Python, +, +, +,Operating system, +,Cross-platform, +, +, +,Type, +,Technical computing, +, +, +,License, +,BSD-new license, +, +, +,Website, +,pandas,.pydata,.org, +, +, +,In ,computer programming,, ,pandas, is a ,software library, written for the ,Python programming language, for data manipulation and analysis. In particular, it offers data structures and operations for manipulating numerical tables and ,time series,. It is ,free software, released under the ,three-clause BSD license,.,[2], The name is derived from the term "",panel data,"", an ,econometrics, term for multidimensional, structured data sets,[,citation needed,],., +, +, +, +,Contents, +, +, +,1, ,Library features, +,2, ,History, +,3, ,See also, +,4, ,References, +,5, ,External links, +, +, +, +,Library features,[,edit,], +, +,DataFrame object for data manipulation with integrated indexing., +,Tools for reading and writing data between in-memory data structures and different file formats., +,Data alignment and integrated handling of missing data., +,Reshaping and pivoting of data sets., +,Label-based slicing, fancy indexing, and subsetting of large data sets., +,Data structure column insertion and deletion., +,Group by engine allowing split-apply-combine operations on data sets., +,Data set merging and joining., +,Hierarchical axis indexing to work with high-dimensional data in a lower-dimensional data structure., +,Time series-functionality: Date range generation,[3], and frequency conversion, moving window statistics, moving window linear regressions, date shifting and lagging., +, +,The library is highly optimized for performance, with critical code paths written in ,Cython, or ,C,.,[4], +,History,[,edit,], +,Developer ,Wes McKinney, started working on pandas in 2008 while at ,AQR Capital Management, out of the need for a high performance, flexible tool to perform quantitative analysis on financial data. Before leaving AQR he was able to convince management to allow him to open source the library., +,Another AQR employee, Chang She, joined the effort in 2012 as the second major contributor to the library., +,See also,[,edit,], +, +,matplotlib, +,NumPy, +,SciPy, +,R (programming language), +,Scikit-learn, +,statsmodels, +,List of numerical analysis software, +, +,References,[,edit,], +, +, +, +,^, ,""Release Notes – pandas 0.22.0 documentation"",. ,pandas,. 29 December 2017,. Retrieved ,31 December, 2017,., , +,^, ,""License – Package overview – pandas 0.21.1 documentation"",. ,pandas,. 12 December 2017,. Retrieved ,13 December, 2017,., , +,^, ,""pandas.date_range – pandas 0.21.1 documentation"",. ,pandas,. 12 December 2017,. Retrieved ,13 December, 2017,., , +,^, ,""Python Data Analysis Library – pandas: Python Data Analysis Library"",. ,pandas,. Retrieved ,13 November, 2017,., , +, +, +, +,External links,[,edit,], +, +,Official website, +, +, +, +, +, +, +, +,v, +,t, +,e, +, +, +,Scientific software in ,Python, +, +, +, +, +, +, +,NumPy, +,SciPy, +,matplotlib, +,pandas, +,scikit-learn, +,scikit-image, +,statsmodels, +,MayaVi, +,more, +, +, +, +, +, +, +, +, +, +,This ,software, article is a ,stub,. You can help Wikipedia by ,expanding it,., +, +, +,v, +,t, +,e, +, +, +, +, +, + + +, +, +, +, +",pandas (software) +" 18 October 2017, at 17:23.","In ,software engineering,, the ,active record pattern, is an ,architectural pattern, found in software that stores in-memory object data in ,relational databases,. It was named by ,Martin Fowler, in his 2003 book ,Patterns of Enterprise Application Architecture,.,[1], The interface of an object conforming to this pattern would include functions such as Insert, Update, and Delete, plus properties that correspond more or less directly to the columns in the underlying database table., +,The active record pattern is an approach to accessing data in a ,database,. A ,database table, or ,view, is wrapped into a ,class,. Thus, an ,object, instance is tied to a single row in the table. After creation of an object, a new row is added to the table upon save. Any object loaded gets its information from the database. When an object is updated, the corresponding row in the table is also updated. The wrapper class implements ,accessor, ,methods, or properties for each column in the table or view., +,This pattern is commonly used by object persistence tools and in ,object-relational mapping, (ORM). Typically, ,foreign key, relationships will be exposed as an object instance of the appropriate type via a property., +, +, +, +,Contents, +, +, +,1, ,Implementations, +, +,1.1, ,ColdFusion, +,1.2, ,PHP, +,1.3, ,Ruby, +,1.4, ,Python, +,1.5, ,Java, +,1.6, ,Dart, +,1.7, ,Other languages, +, +, +,2, ,Criticism, +, +,2.1, ,Testability, +,2.2, ,Single responsibility principle and separation of concerns, +, +, +,3, ,See also, +,4, ,References, +,5, ,External links, +, +, +, +,Implementations,[,edit,], +,Implementations of the concept can be found in various ,frameworks, for many programming environments. For example, if in a database there is a table ,parts, with columns ,name, (string type) and ,price, (number type), and the Active Record pattern is implemented in the class ,Part,, the pseudo-code, +, +part = new Part() +part.name = ""Sample part"" +part.price = 123.45 +part.save() +, +,will create a new row in the ,parts, table with the given values, and is roughly equivalent to the ,SQL, command, +, +, +,INSERT, ,INTO, ,parts, ,(,name,,, ,price,), ,VALUES, ,(,'Sample part',,, ,123,.,45,);, +, +,Conversely, the class can be used to query the database:, +, +b = Part.find_first(""name"", ""gearbox"") +, +,This will find a new ,Part, object based on the first matching row from the ,parts, table whose ,name, column has the value ""gearbox"". The SQL command used might be similar to the following, depending on the SQL implementation details of the database:, +, +, +,SELECT, ,*, ,FROM, ,parts, ,WHERE, ,name, ,=, ,'gearbox', ,LIMIT, ,1,;, ,-- MySQL or PostgreSQL, +, +,ColdFusion,[,edit,], +,ColdFusion, has an open source implementation of the active record pattern., +,The ,ColdFusion on Wheels, framework has an implementation of the active record pattern. It is open source and has the added advantage of requiring no complex configuration., +,PHP,[,edit,], +,PHP ActiveRecord is one ,open-source, library designed to fulfill the active record pattern.,[2], +,Several open-source ,PHP, frameworks also bundle their own ,ORM, implementing the active record pattern. Most implementations support relationships, behaviors, ,validation,, ,serialization, and support for multiple data sources., +, +,Maghead,, a high performance database framework written in pure PHP, contains a class/query method generator to boost the performance. It mixes the active record pattern with repository pattern., +,Boiler,, an ,MVC, framework for PHP, contains a set of tools for auto-generation of active record models.,[3], The project, designed for data-centered projects, aims to automate as much of the development process as possible,,[4], using ,Apache Ant,. Although a new addition to Open Source market,,[5], the project is already in use in many live applications, both commercially and open. The framework currently only supports ,MySQL, though the developers have reported some commercial work in Postgres., +,Cygnite PHP Framework,'s default database layer implements Active Record pattern which closely resemble with ,Ruby on Rails,.,[6], +,Laravel, contains an ORM called 'Eloquent' which implements the active record pattern, closely resembling that of ,Ruby on Rails, ,[7], +,CakePHP,'s ORM implements the active record pattern,,[8], but as of version 2.x queries return arrays of data, with levels of ,related data, as required. Version 3.0 uses objects and offers a hybrid implementation of ActiveRecord and Datamapper patterns., +,Lithium,'s ORM implements active record., +,Symfony,'s default database layer and ORM "",Doctrine,"" does not implement active record but rather a ,data mapper, approach., +,CodeIgniter, has a query builder it calls ""ActiveRecord"", but which does not implement the Active Record pattern. Instead, it implements what the user guide refers to as a modified version of the pattern. The Active Record functionality in CodeIgniter can be achieved by using either CodeIgniter DataMapper library or CodeIgniter Gas ORM library., +,Yii,'s ORM also implements the active record pattern.,[9], +,Propel, also implements the active record pattern.,[10], +,Paris is A lightweight Active Record implementation for PHP5, built on top of Idiorm.,[11], +, +,Ruby,[,edit,], +,The ,Ruby, library ActiveRecord implements ORM. It creates a ,persistable, domain model from business objects and database tables, where logic and data are presented as a unified package. It largely simplifies object-record mapping by assuming homogeneous identification method (i.e. ,Surrogate key,) by virtue of ,convention over configuration,. ActiveRecord adds ,inheritance, and ,associations, to the pattern above, solving two substantial limitations of that pattern. A set of macros acts as a domain language for the latter, and the ,Single Table Inheritance, pattern is integrated for the former; thus, ActiveRecord increases the functionality of the active record pattern approach to database interaction. ActiveRecord is the default ‘model’ component of the ,model-view-controller, web-application framework ,Ruby on Rails,, and is also a stand-alone ORM package for other Ruby applications. In both forms, it was conceived of by ,David Heinemeier Hansson,, and has been improved upon by a number of contributors.,[12], +,Other ORMs have been released since ActiveRecord first appeared. For example, ,DataMapper, and ,Sequel,. These ORMs include improvements over the original ActiveRecord framework.,[,neutrality, is ,disputed,], As a response to their release and adoption by the Rails community, Ruby on Rails v3.0 became independent of an ORM system, so that Rails users can instead use DataMapper or Sequel as their ORM., +,Python,[,edit,], +,Django,, one of ,Python,'s many web frameworks, uses the Active Record pattern for its ORM.,[13], +,Java,[,edit,], +,The ,Java language, implements the Active Record pattern via the ,ActiveJDBC, library. ActiveJDBC is an implementation of Active Record design pattern inspired by ,Ruby on Rails, ActiveRecord. ActiveJDBC is lightweight, fast, small and does not require any configuration., +,ActiveJPA, and ,jOOQ (for Java Object Oriented Querying), implements the Active record pattern, combining active records with ,source code generation, and a querying DSL similar to ,SQL, allowing for retrieving active records using complex SQL statements., +,The ,Play framework, is a Java web framework which implements the Active Record pattern, using ideas from ,Ruby on Rails,., +,JActiveRecord, is yet another library providing easy ,ORM, mapping for Java, inspired by ,Ruby on Rails, ActiveRecord but more focused on Java's type-safety., +,Dart,[,edit,], +,The ,Dart, language implements the Active Record pattern via the ,Dartabase Migration, and ,Dartabase Model, packages, +,Dartabase Migration, Serverside Database Object Models for simple data manipulation currently supporting MySQL/PGSQL inspired by Ruby on Rails Migration, +,Dartabase Model, Serverside Database migration for simple version controlled database structure manipulation currently supporting MySQL/PGSQL inspired by Ruby on Rails Model now console and GUI (build in Polymer 1.0), +,Other languages,[,edit,], +,There are several open source implementations of the Active Record pattern in other languages, including ,JavaScript, (e.g., ,ActiveJS,'s Active Record,[14],), ,Perl, (,DBIx::Class,), ,ActionScript,, ,Haxe, (SPOD,[15],), ,C#,,,[16], ,Objective-C,[17], and ,Scala,.,[18], +,Criticism,[,edit,], +,Testability,[,edit,], +,Due to the coupling of database interaction and application logic when using the active record pattern, unit testing an active record object without a database becomes difficult,[,citation needed,],. The negative effects on testability in the active record pattern can be minimized by using ,mocking, or ,dependency injection, frameworks to substitute the real data tier with a simulated one,[,citation needed,],., +,Single responsibility principle and separation of concerns,[,edit,], +,Another critique of the active record pattern is that, also due to the strong coupling of database interaction and application logic, an active record object does not follow the ,single responsibility principle, and ,separation of concerns, as opposed to ,multitier architecture, which properly addresses these practices. Because of this, the active record pattern is best and most often employed in simple applications that are all forms-over-data with ,CRUD, functionality, or only as one part of an architecture. Typically that part is data access and why several ORMs implement the active record pattern., +,See also,[,edit,], +, +,Business object, +,CRUD, +,Data mapper pattern, +,Object-relational mapping, +, +,References,[,edit,], +, +, +,^, ,Fowler, Martin (2003). ,Patterns of enterprise application architecture,. Addison-Wesley. ,ISBN, ,978-0-321-12742-6,., , +,^, ,""PHP ActiveRecord"",., , +,^, ,""Boiler Documentation: Models"",., , +,^, ,""YouTube demonstration of automation tools"",., , +,^, ,""Open Source Code, hosted on Github"",., , +,^, ,""Cygnite Framework Documentation: Active Record"",., , +,^, ,""Laravel Documentation: Eloquent ORM"",., , +,^, ,""CakePHP (most popular PHP framework)"",. ,Stanford University Wiki,., , +,^, ,""The Definitive Guide to Yii: Active Record"",., , +,^, ,""Propel: Active Record Reference"",., , +,^, ,""Github: j4mie/paris"",., , +,^, ,""Ruby Active Record"",. Retrieved ,2013-04-12,., , +,^, ,https://docs.djangoproject.com/en/1.11/misc/design-philosophies/#models,. Retrieved ,2017-06-28,., , ,Missing or empty ,|title=, (,help,), +,^, ,""ActiveJS Active Record"",. Retrieved ,2011-07-28,., , +,^, ,""SPOD Macros"",. Retrieved ,2013-01-09,., , +,^, ,""Castle ActiveRecord"",. Retrieved ,14 January, 2014,., , +,^, ,""Objective Record"",. Retrieved ,14 January, 2013,., , +,^, ,""Scala Active Record"",. Retrieved ,4 December, 2013,., , +, +, +,External links,[,edit,], +, +,Ruby implementation, +,DBIx::Class Perl Implementation, +,PHP implementation, +,.NET implementation, +,AIR Active Record project home, +,troba Active record extension, +, +, +, +, +, +, +, +,v, +,t, +,e, +, +, +,Software design patterns, +, +, +, +,Gang of Four, +patterns, +, +, +, +, +,Creational, +, +, +, +,Abstract factory, +,Builder, +,Factory method, +,Prototype, +,Singleton, +, +, +, +, +, +,Structural, +, +, +, +,Adapter, +,Bridge, +,Composite, +,Decorator, +,Facade, +,Flyweight, +,Proxy, +, +, +, +, +, +,Behavioral, +, +, +, +,Chain of responsibility, +,Command, +,Interpreter, +,Iterator, +,Mediator, +,Memento, +,Observer, +,State, +,Strategy, +,Template method, +,Visitor, +, +, +, +, +, +, +, +, +,Concurrency, +patterns, +, +, +, +,Active object, +,Balking, +,Binding properties, +,Double-checked locking, +,Event-based asynchronous, +,Guarded suspension, +,Join, +,Lock, +,Monitor, +,Proactor, +,Reactor, +,Read write lock, +,Scheduler, +,Thread pool, +,Thread-local storage, +, +, +, +, +, +,Architectural, +patterns, +, +, +, +,Front controller, +,Interceptor, +,MVC, +,ADR, +,ECS, +,n,-tier, +,Specification, +,Publish–subscribe, +,Naked objects, +,Service locator, +,Active record, +,Identity map, +,Data access object, +,Data transfer object, +,Inversion of control, +,Model 2, +, +, +, +, +, +,Other, +patterns, +, +, +, +,Blackboard, +,Business delegate, +,Composite entity, +,Dependency injection, +,Intercepting filter, +,Lazy loading, +,Mock object, +,Null object, +,Object pool, +,Servant, +,Twin, +,Type tunnel, +,Method chaining, +, +, +, +, +, +,Books, +, +, +, +,Design Patterns, +,Enterprise Integration Patterns, +, +, +, +, +, +,People, +, +, +, +,Christopher Alexander, +,Erich Gamma, +,Ralph Johnson, +,John Vlissides, +,Grady Booch, +,Kent Beck, +,Ward Cunningham, +,Martin Fowler, +,Robert Martin, +,Jim Coplien, +,Douglas Schmidt, +,Linda Rising, +, +, +, +, +, +,Communities, +, +, +, +,The Hillside Group, +,The Portland Pattern Repository, +, +, +, +, +, +, + + +, +, +, +, +",Active record pattern +" 10 October 2017, at 13:13."," +, +, +, +, +, +,This article ,needs additional citations for ,verification,. ,Please help ,improve this article, by ,adding citations to reliable sources,. Unsourced material may be challenged and removed., ,(September 2016), ,(,Learn how and when to remove this template message,), +, +, +, +,In ,software engineering,, ,don't repeat yourself, (,DRY,) is a ,principle, of ,software development, aimed at reducing repetition of software patterns, replacing them with abstractions; and several copies of the same data, using ,data normalization, to avoid redundancy., +,The DRY principle is stated as ""Every piece of knowledge must have a single, unambiguous, authoritative representation within a system"". The principle has been formulated by ,Andy Hunt, and ,Dave Thomas, in their book ,The Pragmatic Programmer,. They apply it quite broadly to include "",database schemas,, ,test plans,, the ,build, system, even ,documentation,"".,[1], When the DRY principle is applied successfully, a modification of any single element of a system does not require a change in other logically unrelated elements. Additionally, elements that are logically related all change predictably and uniformly, and are thus kept in ,sync,. Besides using ,methods, and ,subroutines, in their code, Thomas and Hunt rely on ,code generators,, automatic build systems, and ,scripting languages, to observe the DRY principle across layers., +, +, +, +,Contents, +, +, +,1, ,DRY vs WET solutions, +,2, ,See also, +,3, ,References, +,4, ,External links, +, +, +, +,DRY vs WET solutions,[,edit,], +,Violations of DRY are typically referred to as WET solutions, which is commonly taken to stand for either ""write everything twice"", ""we enjoy typing"" or ""waste everyone's time"". WET solutions are common in multi-tiered architectures where a developer may be tasked with, for example, adding a comment field on a form in a web application. The text string ""comment"" might be repeated in the label, the HTML tag, in a read function name, a private variable, database DDL, queries, and so on. A DRY approach eliminates that redundancy by leveraging frameworks that reduce or eliminate all those edit tasks excepting the most important one, leaving the extensibility of adding new knowledge variables in one place.,[2],[3],[4], +,See also,[,edit,], +, +,Abstraction principle (programming), +,Code duplication, +,Code reuse, +,Database normalization, and ,Denormalization, +,Disk mirroring, +,Redundancy (engineering), +,Rule of three (computer programming), +,Separation of concerns, +,Single source of truth, (SSOT/SPOT), +,Structured programming, +, +,References,[,edit,], +, +, +, +,^, ,Dave Thomas, interviewed by Bill Venners (2003-10-10). ,""Orthogonality and the DRY Principle"",. Retrieved ,2006-12-01,., , +,^, ,Justin Lee (2006-03-08). ,""DRY is for losers"",. Retrieved ,2013-08-31,., , +,^, ,Alex Papadimoulis (2011-12-08). ,""The WET Cart"",. Retrieved ,2012-05-21,., , +,^, ,Kevin Greer (2016-02-05). ,""FOAM DRY + WET"",. Retrieved ,2016-03-09,., , +, +, +, +,External links,[,edit,], +, +,Orthogonality and the DRY Principle, +,Don't Repeat Yourself, at ,WikiWikiWeb, +,Once and Only Once, at WikiWikiWeb, +,97 Things Every Programmer Should Know (O'Reilly), +,The myth of over-normalization, (discussion of academic extremes vs. real-word database scenarios), +,Wilson G, Aruliah DA, Brown CT, Chue Hong NP, Davis M, Guy RT, et al. (2014). ,""Best Practices for Scientific Computing"",. ,PLoS Biol,. ,12, (1): e1001745. ,doi,:,10.1371/journal.pbio.1001745,. ,Don't Repeat Yourself (or Others), , +, + + +, +, +, +, +",Don't repeat yourself +" 1 November 2017, at 09:32."," +, +, +, +, +, +,This article ,needs additional citations for ,verification,. ,Please help ,improve this article, by ,adding citations to reliable sources,. Unsourced material may be challenged and removed., ,(January 2013), ,(,Learn how and when to remove this template message,), +, +, +, +,Convention over configuration, (also known as ,coding by convention,) is a software ,design paradigm, used by ,software frameworks, that attempt to decrease the number of decisions that a ,developer, using the framework is required to make without necessarily losing flexibility. The concept was introduced by ,David Heinemeier Hansson, to describe the philosophy of the ,Ruby on Rails, ,web framework,, but is related to earlier ideas like the concept of ""sensible ,defaults,"" and the ,principle of least astonishment, in ,user interface design,., +,The phrase essentially means a developer only needs to specify unconventional aspects of the application. For example, if there is a class Sales in the model, the corresponding table in the database is called ""sales"" by default. It is only if one deviates from this convention, such as the table ""product sales"", that one needs to write code regarding these names., +,When the convention implemented by the tool matches the desired behavior, it behaves as expected without having to write configuration files. Only when the desired behavior deviates from the implemented convention is explicit configuration required., +,Ruby on Rails' use of the phrase is particularly focused on its default project file and directory structure, which prevent developers from having to write ,XML, configuration files to specify which ,modules, the framework should load, which was common in many earlier frameworks., +,Disadvantages of the convention over configuration approach can occur due to conflicts with other software design principles, like the ,Zen of Python,'s ""explicit is better than implicit."" A ,software framework, based on convention over configuration often involves a ,domain-specific language, with a limited set of constructs or an ,inversion of control, in which the developer can only affect behavior using a limited set of ,hooks,, both of which can make implementing behaviors not easily expressed by the provided conventions more difficult than when using a ,software library, that does not try to decrease the number of decisions developers have to make or require inversion of control., +,Other methods of decreasing the number of decisions a developer needs to make include ,programming idioms, and configuration libraries with a ,multilayered architecture,., +, +, +, +,Contents, +, +, +,1, ,Motivation, +,2, ,Usage, +,3, ,See also, +,4, ,References, +,5, ,External links, +, +, +, +,Motivation,[,edit,], +,Some frameworks need multiple configuration files, each with many settings. These provide information specific to each project, ranging from URLs to mappings between classes and database tables. A large number of configuration files with lots of parameters is often difficult to maintain., +,For example, early versions of the Java persistence mapper ,Hibernate, mapped entities and their fields to the database by describing these relationships in XML files. Most of this information could have been revealed by conventionally mapping class names to the identically named ,database, tables and the fields to their columns, respectively. Later versions did away with the ,XML, configuration file and instead employed these very conventions, deviations from which can be indicated through the use of ,Java annotations, (see JavaBeans specification, linked below)., +,Usage,[,edit,], +, +, +, +, +The ,Maven, software tool auto-generated this directory structure for a Java project., +, +, +,Many modern frameworks use a ,convention over configuration, approach., +,The concept is older, however, dating back to the concept of a ,default,, and can be spotted more recently in the roots of ,Java, libraries. For example, the ,JavaBeans, specification relies on it heavily. To quote the ,JavaBeans, specification 1.01:,[1], +, +,""As a general rule we don't want to invent an enormous java.beans.everything class that people have to inherit from. Instead we'd like the ,JavaBeans, runtimes to provide default behaviour for 'normal' objects, but to allow objects to override a given piece of default behaviour by inheriting from some specific java.beans.something interface."", +, +,See also,[,edit,], +, +,Principle of least astonishment, +,Comparison of web frameworks, +,Frameworks that use the paradigm: +, +,ColdBox Platform, runs on ,Railo, +,Ruby on Rails, +,Lift, +,CakePHP, +,Apache Maven, +,Grails, +,Symfony, +,Appcelerator's Titanium Alloy, +,Yii, +,Laravel, +,Crosslight, +,Durandal (JavaScript SPA Framework), +,Ember.js, +,Enduro.js, +,Java Platform, Enterprise Edition, +,ASP.NET MVC, +,Spring Framework, +,Contao, +,Sails (web framework), +,Meteor, +,Roxy rest-API, +,Play Framework, +,KumbiaPHP Framework, +,Aurelia, +, +, +, +,References,[,edit,], +, +, +, +,^, ,Sun (24 July 1997). ,JavaBeans specification, ,Archived, 6 April 2012 at the ,Wayback Machine,., section 1.4., +, +, +, +, +,Bachle, M., & Kirchberg, P. (2007). ""Ruby on rails"". Software, IEEE, 24(6), 105-108. ,DOI 10.1109/BCI.2009.31,., +,Miller, J. (2009). ""Design For Convention Over Configuration"". Microsoft, Retrieved 18 April 2010., +,Chen, Nicholas (2006). ""Convention over configuration""., +, +,External links,[,edit,], +, +,Detailed information on CoC, +, + + +, +, +, +, +",Convention over configuration +" 2 January 2018, at 17:20.","In ,software engineering,, a ,software design pattern, is a general, ,reusable, solution to a commonly occurring problem within a given context in ,software design,. It is not a finished design that can be transformed directly into ,source, or ,machine code,. It is a description or template for how to solve a problem that can be used in many different situations. Design patterns are formalized ,best practices, that the programmer can use to solve common problems when designing an application or system., +,Object-oriented, design patterns typically show relationships and ,interactions, between ,classes, or ,objects,, without specifying the final application classes or objects that are involved. Patterns that imply mutable state may be unsuited for ,functional programming, languages, some patterns can be rendered unnecessary in languages that have built-in support for solving the problem they are trying to solve, and object-oriented patterns are not necessarily suitable for non-object-oriented languages., +,Design patterns may be viewed as a structured approach to ,computer programming, intermediate between the levels of a ,programming paradigm, and a concrete ,algorithm,., +, +, +, +,Contents, +, +, +,1, ,History, +,2, ,Practice, +,3, ,Structure, +, +,3.1, ,Domain-specific patterns, +, +, +,4, ,Classification and list, +, +,4.1, ,Creational patterns, +,4.2, ,Structural patterns, +,4.3, ,Behavioral patterns, +,4.4, ,Concurrency patterns, +, +, +,5, ,Documentation, +,6, ,Criticism, +,7, ,See also, +,8, ,References, +,9, ,Further reading, +, +, +, +,History,[,edit,], +,Patterns originated as an ,architectural concept, by ,Christopher Alexander, (1977/79). In 1987, ,Kent Beck, and ,Ward Cunningham, began experimenting with the idea of applying patterns to programming – specifically ,pattern languages, – and presented their results at the ,OOPSLA, conference that year.,[1],[2], In the following years, Beck, Cunningham and others followed up on this work., +,Design patterns gained popularity in ,computer science, after the book ,Design Patterns: Elements of Reusable Object-Oriented Software, was published in 1994 by the so-called ""Gang of Four"" (Gamma et al.), which is frequently abbreviated as ""GoF"". That same year, the first ,Pattern Languages of Programming, Conference was held and the following year, the ,Portland Pattern Repository, was set up for documentation of design patterns. The scope of the term remains a matter of dispute. Notable books in the design pattern genre include:, +, +,Gamma, Erich,; ,Helm, Richard,; ,Johnson, Ralph,; ,Vlissides, John, (1995). ,Design Patterns: Elements of Reusable Object-Oriented Software,. ,Addison-Wesley,. ,ISBN, ,0-201-63361-2,., , +,Brinch Hansen, Per, (1995). ,Studies in Computational Science: Parallel Programming Paradigms,. Prentice Hall. ,ISBN, ,0-13-439324-4,., , +,Buschmann, Frank,; Meunier, Regine; Rohnert, Hans; Sommerlad, Peter (1996). ,Pattern-Oriented Software Architecture, Volume 1: A System of Patterns,. John Wiley & Sons. ,ISBN, ,0-471-95869-7,., , +,Schmidt, Douglas C.,; Stal, Michael; Rohnert, Hans; Buschmann, Frank (2000). ,Pattern-Oriented Software Architecture, Volume 2: Patterns for Concurrent and Networked Objects,. John Wiley & Sons. ,ISBN, ,0-471-60695-2,., , +,Fowler, Martin, (2002). ,Patterns of Enterprise Application Architecture,. ,Addison-Wesley,. ,ISBN, ,978-0-321-12742-6,., , +,Hohpe, Gregor; Woolf, Bobby (2003). ,Enterprise Integration Patterns: Designing, Building, and Deploying Messaging Solutions,. ,Addison-Wesley,. ,ISBN, ,0-321-20068-3,., , +,Freeman, Eric T; Robson, Elisabeth; Bates, Bert; ,Sierra, Kathy, (2004). ,Head First Design Patterns,. ,O'Reilly Media,. ,ISBN, ,0-596-00712-4,., , +, +,Although design patterns have been applied practically for a long time, formalization of the concept of design patterns languished for several years.,[3], +,Practice,[,edit,], +,Design patterns can speed up the development process by providing tested, proven development paradigms.,[4], Effective software design requires considering issues that may not become visible until later in the implementation. Reusing design patterns helps to prevent subtle issues that can cause major problems,[,citation needed,],, and it also improves code readability for coders and architects who are familiar with the patterns., +,In order to achieve flexibility, design patterns usually introduce additional levels of ,indirection,, which in some cases may complicate the resulting designs and hurt application performance., +,By definition, a pattern must be programmed anew into each application that uses it. Since some authors see this as a step backward from ,software reuse, as provided by ,components,, researchers have worked to turn patterns into components. Meyer and Arnout were able to provide full or partial componentization of two-thirds of the patterns they attempted.,[5], +,Software design techniques are difficult to apply to a broader range of problems.,[,citation needed,], Design patterns provide general solutions, ,documented, in a format that does not require specifics tied to a particular problem., +,Structure,[,edit,], +,Design patterns are composed of several sections (see ,§ Documentation, below). Of particular interest are the Structure, Participants, and Collaboration sections. These sections describe a ,design motif,: a prototypical ,micro-architecture, that developers copy and adapt to their particular designs to solve the recurrent problem described by the design pattern. A micro-architecture is a set of program constituents (e.g., classes, methods...) and their relationships. Developers use the design pattern by introducing in their designs this prototypical micro-architecture, which means that micro-architectures in their designs will have structure and organization similar to the chosen design motif., +,Domain-specific patterns,[,edit,], +,Efforts have also been made to codify design patterns in particular domains, including use of existing design patterns as well as domain specific design patterns. Examples include ,user interface, design patterns,,[6], ,information visualization,,,[7], secure design,,[8], ""secure usability"",,[9], Web design ,[10], and business model design.,[11], +,The annual ,Pattern Languages of Programming, Conference proceedings ,[12], include many examples of domain-specific patterns., +,Classification and list,[,edit,], +, +, +, +, +, +, +,This section ,may have been ,copied and pasted, from a source, ,possibly, in violation of ,Wikipedia's copyright policy,. ,Please ,remedy this, by editing this article to remove any non-free copyrighted content and attributing free content correctly, or flagging the content for deletion. Please be sure that the supposed source of the copyright violation is not itself a ,Wikipedia mirror,., ,(August 2017), +, +, +, +,Design patterns were originally grouped into the categories: ,creational patterns,, ,structural patterns,, and ,behavioral patterns,, and described using the concepts of ,delegation,, ,aggregation,, and consultation. For further background on object-oriented design, see ,coupling, and ,cohesion,, ,inheritance,, ,interface,, and ,polymorphism,. Another classification has also introduced the notion of ,architectural design pattern, that may be applied at the architecture level of the software such as the ,Model–View–Controller, pattern., +,Creational patterns,[,edit,], +, +, +,Name, +,Description, +,In ,Design Patterns, +,In ,Code Complete,[13], +,Other, +, +, +,Abstract factory, +,Provide an interface for creating ,families, of related or dependent objects without specifying their concrete classes., +,Yes, +,Yes, +,N/A, +, +, +,Builder, +,Separate the construction of a complex object from its representation, allowing the same construction process to create various representations., +,Yes, +,No, +,N/A, +, +, +,Dependency Injection, +,A class accepts the objects it requires from an injector instead of creating the objects directly., +,No, +,No, +,N/A, +, +, +,Factory method, +,Define an interface for creating a ,single, object, but let subclasses decide which class to instantiate. Factory Method lets a class defer instantiation to subclasses., +,Yes, +,Yes, +,N/A, +, +, +,Lazy initialization, +,Tactic of delaying the creation of an object, the calculation of a value, or some other expensive process until the first time it is needed. This pattern appears in the GoF catalog as ""virtual proxy"", an implementation strategy for the ,Proxy, pattern., +,Yes, +,No, +,PoEAA,[14], +, +, +,Multiton, +,Ensure a class has only named instances, and provide a global point of access to them., +,No, +,No, +,N/A, +, +, +,Object pool, +,Avoid expensive acquisition and release of resources by recycling objects that are no longer in use. Can be considered a generalisation of ,connection pool, and ,thread pool, patterns., +,No, +,No, +,N/A, +, +, +,Prototype, +,Specify the kinds of objects to create using a prototypical instance, and create new objects from the 'skeleton' of an existing object, thus boosting performance and keeping memory footprints to a minimum., +,Yes, +,No, +,N/A, +, +, +,Resource acquisition is initialization, (RAII), +,Ensure that resources are properly released by tying them to the lifespan of suitable objects., +,No, +,No, +,N/A, +, +, +,Singleton, +,Ensure a class has only one instance, and provide a global point of access to it., +,Yes, +,Yes, +,N/A, +, +, +,Structural patterns,[,edit,], +, +, +,Name, +,Description, +,In ,Design Patterns, +,In ,Code Complete,[13], +,Other, +, +, +,Adapter,, Wrapper, or Translator, +,Convert the interface of a class into another interface clients expect. An adapter lets classes work together that could not otherwise because of incompatible interfaces. The enterprise integration pattern equivalent is the translator., +,Yes, +,Yes, +,N/A, +, +, +,Bridge, +,Decouple an abstraction from its implementation allowing the two to vary independently., +,Yes, +,Yes, +,N/A, +, +, +,Composite, +,Compose objects into tree structures to represent part-whole hierarchies. Composite lets clients treat individual objects and compositions of objects uniformly., +,Yes, +,Yes, +,N/A, +, +, +,Decorator, +,Attach additional responsibilities to an object dynamically keeping the same interface. Decorators provide a flexible alternative to subclassing for extending functionality., +,Yes, +,Yes, +,N/A, +, +, +,Extension object, +,Adding functionality to a hierarchy without changing the hierarchy., +,No, +,No, +,Agile Software Development, Principles, Patterns, and Practices,[15], +, +, +,Facade, +,Provide a unified interface to a set of interfaces in a subsystem. Facade defines a higher-level interface that makes the subsystem easier to use., +,Yes, +,Yes, +,N/A, +, +, +,Flyweight, +,Use sharing to support large numbers of similar objects efficiently., +,Yes, +,No, +,N/A, +, +, +,Front controller, +,The pattern relates to the design of Web applications. It provides a centralized entry point for handling requests., +,No, +,No, +, +,J2EE Patterns,[16], ,PoEAA,[17], +, +, +, +,Marker, +,Empty interface to associate metadata with a class., +,No, +,No, +,Effective Java,[18], +, +, +,Module, +,Group several related elements, such as classes, singletons, methods, globally used, into a single conceptual entity., +,No, +,No, +,N/A, +, +, +,Proxy, +,Provide a surrogate or placeholder for another object to control access to it., +,Yes, +,No, +,N/A, +, +, +,Twin, ,[19], +,Twin allows modeling of multiple inheritance in programming languages that do not support this feature., +,No, +,No, +,N/A, +, +, +,Behavioral patterns,[,edit,], +, +, +,Name, +,Description, +,In ,Design Patterns, +,In ,Code Complete,[13], +,Other, +, +, +,Blackboard, +,Artificial intelligence, pattern for combining disparate sources of data (see ,blackboard system,), +,No, +,No, +,N/A, +, +, +,Chain of responsibility, +,Avoid coupling the sender of a request to its receiver by giving more than one object a chance to handle the request. Chain the receiving objects and pass the request along the chain until an object handles it., +,Yes, +,No, +,N/A, +, +, +,Command, +,Encapsulate a request as an object, thereby allowing for the parameterization of clients with different requests, and the queuing or logging of requests. It also allows for the support of undoable operations., +,Yes, +,No, +,N/A, +, +, +,Interpreter, +,Given a language, define a representation for its grammar along with an interpreter that uses the representation to interpret sentences in the language., +,Yes, +,No, +,N/A, +, +, +,Iterator, +,Provide a way to access the elements of an ,aggregate, object sequentially without exposing its underlying representation., +,Yes, +,Yes, +,N/A, +, +, +,Mediator, +,Define an object that encapsulates how a set of objects interact. Mediator promotes ,loose coupling, by keeping objects from referring to each other explicitly, and it allows their interaction to vary independently., +,Yes, +,No, +,N/A, +, +, +,Memento, +,Without violating encapsulation, capture and externalize an object's internal state allowing the object to be restored to this state later., +,Yes, +,No, +,N/A, +, +, +,Null object, +,Avoid null references by providing a default object., +,No, +,No, +,N/A, +, +, +,Observer, or ,Publish/subscribe, +,Define a one-to-many dependency between objects where a state change in one object results in all its dependents being notified and updated automatically., +,Yes, +,Yes, +,N/A, +, +, +,Servant, +,Define common functionality for a group of classes., +,No, +,No, +,N/A, +, +, +,Specification, +,Recombinable ,business logic, in a ,Boolean, fashion., +,No, +,No, +,N/A, +, +, +,State, +,Allow an object to alter its behavior when its internal state changes. The object will appear to change its class., +,Yes, +,No, +,N/A, +, +, +,Strategy, +,Define a family of algorithms, encapsulate each one, and make them interchangeable. Strategy lets the algorithm vary independently from clients that use it., +,Yes, +,Yes, +,N/A, +, +, +,Template method, +,Define the skeleton of an algorithm in an operation, deferring some steps to subclasses. Template method lets subclasses redefine certain steps of an algorithm without changing the algorithm's structure., +,Yes, +,Yes, +,N/A, +, +, +,Visitor, +,Represent an operation to be performed on the elements of an object structure. Visitor lets a new operation be defined without changing the classes of the elements on which it operates., +,Yes, +,No, +,N/A, +, +, +,Concurrency patterns,[,edit,], +, +, +,Name, +,Description, +,In ,POSA2,[20], +,Other, +, +, +,Active Object, +,Decouples method execution from method invocation that reside in their own thread of control. The goal is to introduce concurrency, by using ,asynchronous method invocation, and a ,scheduler, for handling requests., +,Yes, +,N/A, +, +, +,Balking, +,Only execute an action on an object when the object is in a particular state., +,No, +,N/A, +, +, +,Binding properties, +,Combining multiple observers to force properties in different objects to be synchronized or coordinated in some way.,[21], +,No, +,N/A, +, +, +,Blockchain, +,Decentralized way to store data and agree on ways of processing it in a ,Merkle tree,, optionally using ,digital signature, for any individual contributions., +,No, +,N/A, +, +, +,Compute kernel, +,The same calculation many times in parallel, differing by integer parameters used with non-branching pointer math into shared arrays, such as ,GPU,-optimized ,Matrix multiplication, or ,Convolutional neural network,., +,No, +,N/A, +, +, +,Double-checked locking, +,Reduce the overhead of acquiring a lock by first testing the locking criterion (the 'lock hint') in an unsafe manner; only if that succeeds does the actual locking logic proceed. +,Can be unsafe when implemented in some language/hardware combinations. It can therefore sometimes be considered an ,anti-pattern,., +, +,Yes, +,N/A, +, +, +,Event-based asynchronous, +,Addresses problems with the asynchronous pattern that occur in multithreaded programs.,[22], +,No, +,N/A, +, +, +,Guarded suspension, +,Manages operations that require both a lock to be acquired and a precondition to be satisfied before the operation can be executed., +,No, +,N/A, +, +, +,Join, +,Join-pattern provides a way to write concurrent, parallel and distributed programs by message passing. Compared to the use of threads and locks, this is a high-level programming model., +,No, +,N/A, +, +, +,Lock, +,One thread puts a ""lock"" on a resource, preventing other threads from accessing or modifying it.,[23], +,No, +,PoEAA,[14], +, +, +,Messaging design pattern (MDP), +,Allows the interchange of information (i.e. messages) between components and applications., +,No, +,N/A, +, +, +,Monitor object, +,An object whose methods are subject to ,mutual exclusion,, thus preventing multiple objects from erroneously trying to use it at the same time., +,Yes, +,N/A, +, +, +,Reactor, +,A reactor object provides an asynchronous interface to resources that must be handled synchronously., +,Yes, +,N/A, +, +, +,Read-write lock, +,Allows concurrent read access to an object, but requires exclusive access for write operations., +,No, +,N/A, +, +, +,Scheduler, +,Explicitly control when threads may execute single-threaded code., +,No, +,N/A, +, +, +,Thread pool, +,A number of threads are created to perform a number of tasks, which are usually organized in a queue. Typically, there are many more tasks than threads. Can be considered a special case of the ,object pool, pattern., +,No, +,N/A, +, +, +,Thread-specific storage, +,Static or ""global"" memory local to a thread., +,Yes, +,N/A, +, +, +,Documentation,[,edit,], +,The documentation for a design pattern describes the context in which the pattern is used, the forces within the context that the pattern seeks to resolve, and the suggested solution.,[24], There is no single, standard format for documenting design patterns. Rather, a variety of different formats have been used by different pattern authors. However, according to ,Martin Fowler,, certain pattern forms have become more well-known than others, and consequently become common starting points for new pattern-writing efforts.,[25], One example of a commonly used documentation format is the one used by ,Erich Gamma,, ,Richard Helm,, ,Ralph Johnson, and ,John Vlissides, (collectively known as the ""Gang of Four"", or GoF for short) in their book ,Design Patterns,. It contains the following sections:, +, +,Pattern Name and Classification:, A descriptive and unique name that helps in identifying and referring to the pattern., +,Intent:, A description of the goal behind the pattern and the reason for using it., +,Also Known As:, Other names for the pattern., +,Motivation (Forces):, A scenario consisting of a problem and a context in which this pattern can be used., +,Applicability:, Situations in which this pattern is usable; the context for the pattern., +,Structure:, A graphical representation of the pattern. ,Class diagrams, and ,Interaction diagrams, may be used for this purpose., +,Participants:, A listing of the classes and objects used in the pattern and their roles in the design., +,Collaboration:, A description of how classes and objects used in the pattern interact with each other., +,Consequences:, A description of the results, side effects, and trade offs caused by using the pattern., +,Implementation:, A description of an implementation of the pattern; the solution part of the pattern., +,Sample Code:, An illustration of how the pattern can be used in a programming language., +,Known Uses:, Examples of real usages of the pattern., +,Related Patterns:, Other patterns that have some relationship with the pattern; discussion of the differences between the pattern and similar patterns., +, +,Criticism,[,edit,], +,The concept of design patterns has been criticized in several ways., +,The design patterns may just be a sign of some missing features of a given programming language (,Java, or ,C++, for instance). ,Peter Norvig, demonstrates that 16 out of the 23 patterns in the ,Design Patterns, book (which is primarily focused on C++) are simplified or eliminated (via direct language support) in ,Lisp, or ,Dylan,.,[26], Related observations were made by Hannemann and Kiczales who implemented several of the 23 design patterns using an ,aspect-oriented programming language, (AspectJ) and showed that code-level dependencies were removed from the implementations of 17 of the 23 design patterns and that aspect-oriented programming could simplify the implementations of design patterns.,[27], See also ,Paul Graham's, essay ""Revenge of the Nerds"".,[28], +,Moreover, inappropriate use of patterns may unnecessarily increase complexity.,[29], +,Another point of criticism is the lack of an update version since the ,Design Patterns, book was published in 1994., +,See also,[,edit,], +, +, +,Abstraction principle, +,Algorithmic skeleton, +,Anti-pattern, +,Architectural pattern, +,Debugging patterns, +,Design pattern, +,Distributed design patterns, +,Double-chance function, +,Enterprise Architecture framework, +,GRASP (object-oriented design), +,Helper class, +,Interaction design pattern, +,List of software development philosophies, +,List of software engineering topics, +,Pattern language, +,Pattern theory, +,Pedagogical patterns, +,Portland Pattern Repository, +,Refactoring, +,Software development methodology, +,Material Design, +, +, +,References,[,edit,], +, +, +,^, ,Smith, Reid (October 1987). ,Panel on design methodology,. ,OOPSLA, '87 Addendum to the Proceedings. ,doi,:,10.1145/62138.62151,., ,, ,""Ward cautioned against requiring too much programming at, what he termed, 'the high level of wizards.' He pointed out that a written 'pattern language' can significantly improve the selection and application of abstractions. He proposed a 'radical shift in the burden of design and implementation' basing the new methodology on an adaptation of Christopher Alexander's work in pattern languages and that programming-oriented pattern languages developed at ,Tektronix, has significantly aided their software development efforts."", +,^, ,Beck, Kent,; ,Cunningham, Ward, (September 1987). ,Using Pattern Languages for Object-Oriented Program,. ,OOPSLA, '87 workshop on ,Specification and Design for Object-Oriented Programming,. Retrieved ,2006-05-26,., , +,^, ,Baroni, Aline Lúcia; Guéhéneuc, Yann-Gaël; Albin-Amiot, Hervé (June 2003). ""Design Patterns Formalization"". ,Nantes,: École Nationale Supérieure des Techniques Industrielles et des Mines de Nantes. ,CiteSeerX, ,10.1.1.62.6466, ,., , +,^, ,Bishop, Judith. ,""C# 3.0 Design Patterns: Use the Power of C# 3.0 to Solve Real-World Problems"",. C# Books from O'Reilly Media,. Retrieved ,2012-05-15,. ,If you want to speed up the development of your .NET applications, you're ready for C# design patterns -- elegant, accepted and proven ways to tackle common programming problems., , +,^, ,Meyer, Bertrand,; Arnout, Karine (July 2006). ,""Componentization: The Visitor Example"", ,(PDF),. ,IEEE Computer,. ,IEEE,. ,39, (7): 23–30. ,doi,:,10.1109/MC.2006.227,., , +,^, ,Laakso, Sari A. (2003-09-16). ,""Collection of User Interface Design Patterns"",. University of Helsinki, Dept. of Computer Science,. Retrieved ,2008-01-31,., , +,^, ,Heer, J.; Agrawala, M. (2006). ,""Software Design Patterns for Information Visualization"",. ,IEEE Transactions on Visualization and Computer Graphics,. ,12, (5): 853–60. ,doi,:,10.1109/TVCG.2006.178,. ,PMID, ,17080809,., , +,^, ,Dougherty, Chad; Sayre, Kirk; Seacord, Robert C.; Svoboda, David; Togashi, Kazuya (2009). ,Secure Design Patterns, ,(PDF),. Software Engineering Institute., , +,^, ,Garfinkel, Simson L. (2005). ,Design Principles and Patterns for Computer Systems That Are Simultaneously Secure and Usable, (Ph.D. thesis)., , +,^, ,""Yahoo! Design Pattern Library"",. Archived from ,the original, on 2008-02-29,. Retrieved ,2008-01-31,., , +,^, ,""How to design your Business Model as a Lean Startup?"",. Retrieved ,2010-01-06,., , +,^, ,Pattern Languages of Programming, Conference proceedings (annual, 1994—) ,[1], +,^ ,a, ,b, ,c, ,McConnell, Steve, (June 2004). ""Design in Construction"". ,Code Complete, (2nd ed.). ,Microsoft Press,. p. 104. ,ISBN, ,978-0-7356-1967-8,. ,Table 5.1 Popular Design Patterns, , +,^ ,a, ,b, ,Fowler, Martin, (2002). ,Patterns of Enterprise Application Architecture,. ,Addison-Wesley,. ,ISBN, ,978-0-321-12742-6,., , +,^, ,C. Martin, Robert (2002). ""28. Extension object"". ,Agile Software Development, Principles, Patterns, and Practices,. p. 408. ,ISBN, ,978-0135974445,., , +,^, ,Alur, Deepak; Crupi, John; Malks, Dan (2003). ,Core J2EE Patterns: Best Practices and Design Strategies,. ,Prentice Hall,. p. 166. ,ISBN, ,0-13-142246-4,., , +,^, ,Fowler, Martin, (2002). ,Patterns of Enterprise Application Architecture,. ,Addison-Wesley,. p. 344. ,ISBN, ,978-0-321-12742-6,., , +,^, ,Bloch, Joshua (2008). ""Item 37: Use marker interfaces to define types"". ,Effective Java (Second edition),. Addison-Wesley. p. 179. ,ISBN, ,978-0-321-35668-0,., , +,^, ,""Twin – A Design Pattern for Modeling Multiple Inheritance"", ,(PDF),., , +,^, ,Schmidt, Douglas C.,; Stal, Michael; Rohnert, Hans; Buschmann, Frank (2000). ,Pattern-Oriented Software Architecture, Volume 2: Patterns for Concurrent and Networked Objects,. John Wiley & Sons. ,ISBN, ,0-471-60695-2,., , +,^, ,Binding Properties, +,^, ,Nagel, Christian; Evjen, Bill; Glynn, Jay; Watson, Karli; Skinner, Morgan (2008). ""Event-based Asynchronous Pattern"". ,Professional C# 2008,. Wiley. pp. 570–571. ,ISBN, ,0-470-19137-6,., , +,^, ,Lock Pattern, +,^, ,Gabriel, Dick,. ,""A Pattern Definition"",. Archived from ,the original, on 2007-02-09,. Retrieved ,2007-03-06,., , +,^, ,Fowler, Martin, (2006-08-01). ,""Writing Software Patterns"",. Retrieved ,2007-03-06,., , +,^, ,Norvig, Peter, (1998). ,Design Patterns in Dynamic Languages,., , +,^, ,Hannemann, Jan (2002). ,Design pattern implementation in Java and AspectJ,., , +,^, ,Graham, Paul, (2002). ,Revenge of the Nerds,. Retrieved ,2012-08-11,., , +,^, ,McConnell, Steve (2004). ,Code Complete: A Practical Handbook of Software Construction, 2nd Edition,. p. 105., , +, +, +,Further reading,[,edit,], +, +, +,Alexander, Christopher,; Ishikawa, Sara; Silverstein, Murray; Jacobson, Max; Fiksdahl-King, Ingrid; Angel, Shlomo (1977). ,A Pattern Language: Towns, Buildings, Construction,. New York: Oxford University Press. ,ISBN, ,978-0-19-501919-3,., , +,Alur, Deepak; Crupi, John; Malks, Dan (May 2003). ,Core J2EE Patterns: Best Practices and Design Strategies (2nd Edition),. ,Prentice Hall,. ,ISBN, ,0-13-142246-4,., , +,Beck, Kent, (October 2007). ,Implementation Patterns,. ,Addison-Wesley,. ,ISBN, ,978-0-321-41309-3,., , +,Beck, Kent,; Crocker, R.; Meszaros, G.; ,Coplien, J. O.,; Dominick, L.; Paulisch, F.; ,Vlissides, J., (March 1996). ,Proceedings of the 18th International Conference on Software Engineering,. pp. 25–30., , +,Borchers, Jan (2001). ,A Pattern Approach to Interaction Design,. ,John Wiley & Sons,. ,ISBN, ,0-471-49828-9,., , +,Coplien, James O.,; Schmidt, Douglas C. (1995). ,Pattern Languages of Program Design,. ,Addison-Wesley,. ,ISBN, ,0-201-60734-4,., , +,Coplien, James O.,; ,Vlissides, John M.,; Kerth, Norman L. (1996). ,Pattern Languages of Program Design 2,. ,Addison-Wesley,. ,ISBN, ,0-201-89527-7,., , +,Eloranta, Veli-Pekka; Koskinen, Johannes; Leppänen, Marko; Reijonen, Ville (2014). ,Designing Distributed Control Systems: A Pattern Language Approach,. Wiley. ,ISBN, ,1118694155,., , +,Fowler, Martin, (1997). ,Analysis Patterns: Reusable Object Models,. ,Addison-Wesley,. ,ISBN, ,0-201-89542-0,., , +,Fowler, Martin, (2003). ,Patterns of Enterprise Application Architecture,. ,Addison-Wesley,. ,ISBN, ,978-0-321-12742-6,., , +,Freeman, Eric; Freeman, Elisabeth; ,Sierra, Kathy,; Bates, Bert (2004). ,Head First Design Patterns,. ,O'Reilly Media,. ,ISBN, ,0-596-00712-4,., , +,Hohmann, Luke; Fowler, Martin; Kawasaki, Guy (2003). ,Beyond Software Architecture,. ,Addison-Wesley,. ,ISBN, ,0-201-77594-8,., , +,Gabriel, Richard, (1996). ,Patterns of Software: Tales From The Software Community, ,(PDF),. ,Oxford University Press,. p. 235. ,ISBN, ,0-19-512123-6,. Archived from ,the original, ,(PDF), on 2003-08-01., , +,Gamma, Erich,; ,Helm, Richard,; ,Johnson, Ralph,; ,Vlissides, John, (1995). ,Design Patterns: Elements of Reusable Object-Oriented Software,. ,Addison-Wesley,. ,ISBN, ,0-201-63361-2,., , +,Hohpe, Gregor; Woolf, Bobby (2003). ,Enterprise Integration Patterns: Designing, Building, and Deploying Messaging Solutions,. ,Addison-Wesley,. ,ISBN, ,0-321-20068-3,., , +,Holub, Allen, (2004). ,Holub on Patterns,. ,Apress,. ,ISBN, ,1-59059-388-X,., , +,Kircher, Michael; Völter, Markus; Zdun, Uwe (2005). ,Remoting Patterns: Foundations of Enterprise, Internet and Realtime Distributed Object Middleware,. ,John Wiley & Sons,. ,ISBN, ,0-470-85662-9,., , +,Larman, Craig, (2005). ,Applying UML and Patterns,. ,Prentice Hall,. ,ISBN, ,0-13-148906-2,., , +,Liskov, Barbara,; ,Guttag, John, (2000). ,Program Development in Java: Abstraction, Specification, and Object-Oriented Design,. ,Addison-Wesley,. ,ISBN, ,0-201-65768-6,., , +,Manolescu, Dragos; Voelter, Markus; Noble, James (2006). ,Pattern Languages of Program Design 5,. ,Addison-Wesley,. ,ISBN, ,0-321-32194-4,., , +,Marinescu, Floyd (2002). ,EJB Design Patterns: Advanced Patterns, Processes and Idioms,. ,John Wiley & Sons,. ,ISBN, ,0-471-20831-0,., , +,Martin, Robert Cecil,; Riehle, Dirk; Buschmann, Frank (1997). ,Pattern Languages of Program Design 3,. ,Addison-Wesley,. ,ISBN, ,0-201-31011-2,., , +,Mattson, Timothy G; Sanders, Beverly A.; Massingill, Berna L. (2005). ,Patterns for Parallel Programming,. Addison-Wesley. ,ISBN, ,0-321-22811-1,., , +,Shalloway, Alan; Trott, James R. (2001). ,Design Patterns Explained, Second Edition: A New Perspective on Object-Oriented Design,. Addison-Wesley. ,ISBN, ,0-321-24714-0,., , +,Vlissides, John M., (1998). ,Pattern Hatching: Design Patterns Applied,. ,Addison-Wesley,. ,ISBN, ,0-201-43293-5,., , +,Weir, Charles; Noble, James (2000). ,Small Memory Software: Patterns for systems with limited memory,. ,Addison-Wesley,. ,ISBN, ,0-201-59607-5,. Archived from ,the original, on 2007-06-17., , +, +, +, +, +, +, +, +, +,v, +,t, +,e, +, +, +,Software design patterns, +, +, +, +,Gang of Four, +patterns, +, +, +, +, +,Creational, +, +, +, +,Abstract factory, +,Builder, +,Factory method, +,Prototype, +,Singleton, +, +, +, +, +, +,Structural, +, +, +, +,Adapter, +,Bridge, +,Composite, +,Decorator, +,Facade, +,Flyweight, +,Proxy, +, +, +, +, +, +,Behavioral, +, +, +, +,Chain of responsibility, +,Command, +,Interpreter, +,Iterator, +,Mediator, +,Memento, +,Observer, +,State, +,Strategy, +,Template method, +,Visitor, +, +, +, +, +, +, +, +, +,Concurrency, +patterns, +, +, +, +,Active object, +,Balking, +,Binding properties, +,Double-checked locking, +,Event-based asynchronous, +,Guarded suspension, +,Join, +,Lock, +,Monitor, +,Proactor, +,Reactor, +,Read write lock, +,Scheduler, +,Thread pool, +,Thread-local storage, +, +, +, +, +, +,Architectural, +patterns, +, +, +, +,Front controller, +,Interceptor, +,MVC, +,ADR, +,ECS, +,n,-tier, +,Specification, +,Publish–subscribe, +,Naked objects, +,Service locator, +,Active record, +,Identity map, +,Data access object, +,Data transfer object, +,Inversion of control, +,Model 2, +, +, +, +, +, +,Other, +patterns, +, +, +, +,Blackboard, +,Business delegate, +,Composite entity, +,Dependency injection, +,Intercepting filter, +,Lazy loading, +,Mock object, +,Null object, +,Object pool, +,Servant, +,Twin, +,Type tunnel, +,Method chaining, +, +, +, +, +, +,Books, +, +, +, +,Design Patterns, +,Enterprise Integration Patterns, +, +, +, +, +, +,People, +, +, +, +,Christopher Alexander, +,Erich Gamma, +,Ralph Johnson, +,John Vlissides, +,Grady Booch, +,Kent Beck, +,Ward Cunningham, +,Martin Fowler, +,Robert Martin, +,Jim Coplien, +,Douglas Schmidt, +,Linda Rising, +, +, +, +, +, +,Communities, +, +, +, +,The Hillside Group, +,The Portland Pattern Repository, +, +, +, +, +, +, +, +, +, +,Authority control, +, +, +, +,GND,: ,4546895-3, +, +, +, +, +, +, + + +, +, +, +, +",Software design pattern +" 15 January 2018, at 13:48.","Software Engineering, is the application of ,engineering, to the ,development, of ,software, in a systematic method.,[1],[2],[3], +, +, +, +,Contents, +, +, +,1, ,Definitions, +,2, ,History, +,3, ,Subdisciplines, +,4, ,Education, +,5, ,Profession, +, +,5.1, ,Employment, +,5.2, ,Certification, +,5.3, ,Impact of globalization, +, +, +,6, ,Related fields, +, +,6.1, ,Computer Science, +, +, +,7, ,Controversy, +, +,7.1, ,Criticism, +, +, +,8, ,See also, +,9, ,Notes, +,10, ,References, +,11, ,Further reading, +,12, ,External links, +, +, +, +,Definitions,[,edit,], +,Notable definitions of software engineering include:, +, +,""the systematic application of scientific and technological knowledge, methods, and experience to the design, implementation, testing, and documentation of software""—The Bureau of Labor Statistics—,IEEE, ,Systems and software engineering - Vocabulary,[4], +,""The application of a systematic, disciplined, quantifiable approach to the development, operation, and maintenance of ,software,""—,IEEE, ,Standard Glossary of Software Engineering Terminology,[5], +,""an engineering discipline that is concerned with all aspects of software production""—,Ian Sommerville,[6], +,""the establishment and use of sound engineering principles in order to economically obtain software that is reliable and works efficiently on real machines""—,Fritz Bauer,[7], +, +,The term has also been used less formally:, +, +,as the informal contemporary term for the broad range of activities that were formerly called ,computer programming, and ,systems analysis,;,[8], +,as the broad term for all aspects of the ,practice, of computer programming, as opposed to the ,theory, of computer programming, which is called ,computer science,;,[9], +,as the term embodying the ,advocacy, of a specific approach to computer programming, one that urges that it be treated as an ,engineering, discipline rather than an art or a craft, and advocates the codification of recommended practices.,[10], +, +, +,History,[,edit,], +,Main article: ,History of software engineering, +,When the first digital ,computers, appeared in the early 1940s,,[11], the instructions to make them operate were wired into the machine. Practitioners quickly realized that this design was not flexible and came up with the ""stored program architecture"" or ,von Neumann architecture,. Thus the division between ""hardware"" and ""software"" began with ,abstraction, being used to deal with the complexity of computing., +,Programming languages, started to appear in the early 1950s,[12], and this was also another major step in abstraction. Major languages such as ,Fortran,, ,ALGOL,, and ,COBOL, were released in the late 1950s to deal with scientific, algorithmic, and business problems respectively. ,David Parnas, introduced the key concept of ,modularity, and ,information hiding, in 1972,[13], to help programmers deal with the ever-increasing complexity of ,software systems,., +,The origins of the term ""software engineering"" have been attributed to different sources. The term ""software engineering"" was used in the August 1966 issue of Communications of the ACM (Volume 9, number 8) “letter to the ACM membership” by the ACM President Anthony A. Oettinger;,[14], it is also commonly associated with the title of a seminal NATO conference in 1968 by Professor F.L. Bauer, the first conference on software engineering.,[15], At the time there was perceived to be a "",software crisis,"".,[16],[17],[18], +,In 1984, the ,Software Engineering Institute, (SEI) was established as a federally funded research and development center headquartered on the campus of Carnegie Mellon University in Pittsburgh, Pennsylvania, United States. ,Watts Humphrey, founded the SEI Software Process Program, aimed at understanding and managing the software engineering process. The Process Maturity Levels introduced would become the Capability Maturity Model Integration for Development(CMMi-DEV), which has defined how the US Government evaluates the abilities of a software development team., +,Modern, generally accepted best-practices for software engineering have been collected by the ,ISO/IEC JTC 1/SC 7, subcommittee and published as the ,Software Engineering Body of Knowledge, (SWEBOK).,[19], +,Subdisciplines,[,edit,], +,Software engineering can be divided into sub-disciplines.,[20], Some of them are:, +, +,Software requirements,[1],[20], (or ,Requirements engineering,): The elicitation, analysis, specification, and validation of ,requirements, for ,software,., +,Software design,:,[1],[20], The process of defining the architecture, components, interfaces, and other characteristics of a system or component. It is also defined as the result of that process., +,Software construction,:,[1],[20], The detailed creation of working, meaningful software through a combination of ,programming, (aka coding), verification, ,unit testing,, ,integration testing,, and ,debugging,., +,Software testing,:,[1],[20], An empirical, technical investigation conducted to provide stakeholders with information about the quality of the product or service under test., +,Software maintenance,:,[1],[20], The totality of activities required to provide cost-effective support to software., +,Software configuration management,:,[1],[20], The identification of the configuration of a system at distinct points in time for the purpose of systematically controlling changes to the configuration, and maintaining the integrity and traceability of the configuration throughout the system life cycle. Modern processes use ,software versioning,., +,Software engineering management,:,[1],[20], The application of management activities—planning, coordinating, measuring, monitoring, controlling, and reporting—to ensure that the development and maintenance of software is systematic, disciplined, and quantified., +,Software development process,:,[1],[20], The definition, implementation, assessment, measurement, management, change, and improvement of the software life cycle process itself., +,Software engineering models and methods,[20], impose structure on software engineering with the goal of making that activity systematic, repeatable, and ultimately more success-oriented, +,Software quality,[20], +,Software engineering professional practice,[20], is concerned with the knowledge, skills, and attitudes that software engineers must possess to practice software engineering in a professional, responsible, and ethical manner, +,Software engineering economics,[20], is about making decisions related to software engineering in a business context, +,Computing foundations,[20], +,Mathematical foundations,[20], +,Engineering foundations,[20], +, +,Education,[,edit,], +,Knowledge of ,computer programming, is a prerequisite for becoming a software engineer. In 2004 the ,IEEE Computer Society, produced the ,SWEBOK,, which has been published as ISO/IEC Technical Report 1979:2004, describing the body of knowledge that they recommend to be mastered by a graduate software engineer with four years of experience.,[21], Many software engineers enter the profession by obtaining a university degree or training at a vocational school. One standard international curriculum for undergraduate software engineering degrees was defined by the ,CCSE,, and updated in 2004.,[22], A number of universities have Software Engineering degree programs; as of 2010,[update],, there were 244 Campus ,Bachelor of Software Engineering, programs, 70 Online programs, 230 Masters-level programs, 41 Doctorate-level programs, and 69 Certificate-level programs in the United States.,[23], +,In addition to university education, many companies sponsor internships for students wishing to pursue careers in information technology. These internships can introduce the student to interesting real-world tasks that typical software engineers encounter every day. Similar experience can be gained through ,military service, in software engineering., +,Profession,[,edit,], +,Main articles: ,Software engineer, and ,Software engineering professionalism, +,Legal requirements for the licensing or certification of professional software engineers vary around the world. In the UK, there is no licensing or legal requirement to assume or use the job title Software Engineer. In some areas of Canada, such as Alberta, British Columbia, Ontario,,[24], and Quebec, software engineers can hold the Professional Engineer (P.Eng) designation and/or the Information Systems Professional (I.S.P.) designation. In Canada, there is a legal requirement to have P.Eng when one wants to use the title ""engineer"" or practice ""software engineering"". In Europe, Software Engineers can obtain the ,European Engineer, (EUR ING) professional title., +,The United States, since 2013, has offered an ,NCEES, ,Professional Engineer, exam for Software Engineering, thereby allowing Software Engineers to be licensed and recognized.,[25], Mandatory licensing is currently still largely debated, and perceived as controversial. In some parts of the US such as Texas, the use of the term ,Engineer, is regulated by law and reserved only for use by individuals who have a ,Professional Engineer, license., +,The ,IEEE Computer Society, and the ,ACM,, the two main US-based professional organizations of software engineering, publish guides to the profession of software engineering. The IEEE's ,Guide to the Software Engineering Body of Knowledge - 2004 Version,, or ,SWEBOK,, defines the field and describes the knowledge the IEEE expects a practicing software engineer to have. The most current SWEBOK v3 is an updated version and was released in 2014.,[26], The IEEE also promulgates a ""Software Engineering Code of Ethics"".,[27], +,Employment,[,edit,], +,In November 2004, the ,U. S. Bureau of Labor Statistics, counted 760,840 software engineers holding jobs in the ,U.S.,; in the same time period there were some 1.4 million practitioners employed in the U.S. in all other engineering disciplines combined.,[28], Due to its relative newness as a field of study, formal education in software engineering is often taught as part of a computer science curriculum, and many software engineers hold computer science degrees and have no engineering background whatsoever.,[29], +,Many software engineers work as employees or contractors. Software engineers work with businesses, government agencies (civilian or military), and non-profit organizations. Some software engineers work for themselves as ,freelancers,. Some organizations have specialists to perform each of the tasks in the ,software development process,. Other organizations require software engineers to do many or all of them. In large projects, people may specialize in only one role. In small projects, people may fill several or all roles at the same time. Specializations include: in industry (,analysts,, ,architects,, ,developers,, ,testers,, ,technical support,, ,middleware analysts,, ,managers,) and in academia (,educators,, ,researchers,)., +,Most software engineers and programmers work 40 hours a week, but about 15 percent of software engineers and 11 percent of programmers worked more than 50 hours a week in 2008. Injuries in these occupations are rare. However, like other workers who spend long periods in front of a computer terminal typing at a keyboard, engineers and programmers are susceptible to eyestrain, back discomfort, and hand and wrist problems such as ,carpal tunnel syndrome,.,[30], +,The field's future looks bright according to ,Money Magazine, and ,Salary.com,, which rated Software Engineer as the best job in the United States in 2006.,[31], In 2012, software engineering was again ranked as the best job in the United States, this time by CareerCast.com.,[32], +,Certification,[,edit,], +,The ,Software Engineering Institute, offers certifications on specific topics like ,security,, process improvement and ,software architecture,.,[33], ,Apple,, ,IBM,, ,Microsoft, and other companies also sponsor their own certification examinations. Many ,IT, ,certification, programs are oriented toward specific technologies, and managed by the vendors of these technologies.,[34], These certification programs are tailored to the institutions that would employ people who use these technologies., +,Broader certification of general software engineering skills is available through various professional societies. As of 2006,[update],, the ,IEEE, had certified over 575 software professionals as a ,Certified Software Development Professional, (CSDP).,[35], In 2008 they added an entry-level certification known as the Certified Software Development Associate (CSDA).,[36], The ,ACM, had a professional certification program in the early 1980s,,[,citation needed,], which was discontinued due to lack of interest. The ACM examined the possibility of professional certification of software engineers in the late 1990s, but eventually decided that such certification was inappropriate for the professional industrial practice of software engineering.,[37], +,In the U.K. the ,British Computer Society, has developed a legally recognized professional certification called ,Chartered IT Professional (CITP),, available to fully qualified members (,MBCS,). Software engineers may be eligible for membership of the ,Institution of Engineering and Technology, and so qualify for Chartered Engineer status. In Canada the ,Canadian Information Processing Society, has developed a legally recognized professional certification called ,Information Systems Professional (ISP),.,[38], In Ontario, Canada, Software Engineers who graduate from a ,Canadian Engineering Accreditation Board (CEAB), accredited program, successfully complete PEO's (,Professional Engineers Ontario,) Professional Practice Examination (PPE) and have at least 48 months of acceptable engineering experience are eligible to be licensed through the ,Professional Engineers Ontario, and can become Professional Engineers P.Eng.,[39], The PEO does not recognize any online or distance education however; and does not consider Computer Science programs to be equivalent to software engineering programs despite the tremendous overlap between the two. This has sparked controversy and a certification war. It has also held the number of P.Eng holders for the profession exceptionally low. The vast majority of working professionals in the field hold a degree in CS, not SE. Given the difficult certification path for holders of non-SE degrees, most never bother to pursue the license., +,Impact of globalization,[,edit,], +,The initial impact of outsourcing, and the relatively lower cost of international human resources in developing third world countries led to a massive migration of software development activities from corporations in North America and Europe to India and later: China, Russia, and other developing countries. This approach had some flaws, mainly the distance / timezone difference that prevented human interaction between clients and developers and the massive job transfer. This had a negative impact on many aspects of the software engineering profession. For example, some students in the ,developed world, avoid education related to software engineering because of the fear of ,offshore outsourcing, (importing software products or services from other countries) and of being displaced by ,foreign visa workers,.,[40], Although statistics do not currently show a threat to software engineering itself; a related career, ,computer programming, does appear to have been affected.,[41],[42], Nevertheless, the ability to smartly leverage offshore and near-shore resources via the ,follow-the-sun, workflow has improved the overall operational capability of many organizations.,[43], When North Americans are leaving work, Asians are just arriving to work. When Asians are leaving work, Europeans are arriving to work. This provides a continuous ability to have human oversight on business-critical processes 24 hours per day, without paying overtime compensation or disrupting a key human resource, sleep patterns., +,While global outsourcing has several advantages, global - and generally distributed - development can run into serious difficulties resulting from the distance between developers. This is due to the key elements of this type of distance that have been identified as geographical, temporal, cultural and communication (that includes the use of different languages and dialects of English in different locations).,[44], Research has been carried out in the area of global software development over the last 15 years and an extensive body of relevant work published that highlights the benefits and problems associated with the complex activity. As with other aspects of software engineering research is ongoing in this and related areas., +,Related fields,[,edit,], +,Software engineering is a direct sub-field of ,engineering, and has an overlap with ,computer science, and ,management science,[,citation needed,],. It is also considered a part of overall ,systems engineering,., +,Computer Science,[,edit,], +, +, +, +, +,This section needs expansion,. ,You can help by ,adding to it,., ,(July 2017), +, +, +, +,In general, software engineering focuses more on techniques for the application of software development in industry,,[45],[46], while computer science focuses more on algorithms and theory.,[47], +,Controversy,[,edit,], +,Criticism,[,edit,], +,Software engineering sees its practitioners as individuals who follow well-defined engineering approaches to problem-solving. These approaches are specified in various software engineering books and research papers, always with the connotations of predictability, precision, mitigated risk and professionalism. This perspective has led to calls for licensing, certification and codified bodies of knowledge as mechanisms for spreading the engineering knowledge and maturing the field., +,Software craftsmanship, has been proposed by a body of software developers as an alternative that emphasizes the coding skills and accountability of the software developers themselves without professionalism or any prescribed curriculum leading to ad-hoc problem-solving (craftmanship) without engineering (lack of predictability, precision, missing risk mitigation, methods are informal and poorly defined). ,The Software Craftsmanship Manifesto, extends the Agile Software Manifesto,[48], and draws a metaphor between modern software development and the apprenticeship model of medieval Europe., +,Software engineering extends engineering and draws on the engineering model, i.e. engineering process, engineering project management, engineering requirements, engineering design, engineering construction, and engineering validation. The concept is so new that it is rarely understood, and it is widely misinterpreted, including in software engineering textbooks, papers, and among the communities of programmers and crafters., +,One of the core issues in software engineering is that its approaches are not empirical enough because a real-world validation of approaches is usually absent, or very limited and hence software engineering is often misinterpreted as feasible only in a ""theoretical environment."", +,Dijkstra, who developed computer languages in the 20th century refuted the concepts of ""software engineering"" that was prevalent in the 1980s, arguing that those terms were poor analogies for what he called the ""radical novelty"" of ,computer science,:, +, +,A number of these phenomena have been bundled under the name ""Software Engineering"". As economics is known as ""The Miserable Science"", software engineering should be known as ""The Doomed Discipline"", doomed because it cannot even approach its goal since its goal is self-contradictory. Software engineering, of course, presents itself as another worthy cause, but that is eyewash: if you carefully read its literature and analyse what its devotees actually do, you will discover that software engineering has accepted as its charter ""How to program if you cannot."",[49], +, +,See also,[,edit,], +, +, +,Software portal, +,Software Testing portal, +, +, +,Main article: ,Outline of software engineering, +, +,Bachelor of Science in Information Technology, +,Bachelor of Software Engineering, +,List of software engineering conferences, +,List of software engineering publications, +,Software craftsmanship, +,Software Engineering Institute, +, +,Notes,[,edit,], +, +, +,^ ,a, ,b, ,c, ,d, ,e, ,f, ,g, ,h, ,i, ,Abran et al. 2004,, pp. 1–1, +,^, ,ACM (2007). ,""Computing Degrees & Careers"",. ACM,. Retrieved ,2010-11-23,., , +,^, ,Laplante, Phillip (2007). ,What Every Engineer Should Know about Software Engineering,. Boca Raton: CRC. ,ISBN, ,978-0-8493-7228-5,. Retrieved ,2011-01-21,., , +,^, ,Systems and software engineering - Vocabulary,, ,ISO,/,IEC,/,IEEE, std 24765:2010(E), 2010., +,^, ,IEEE Standard Glossary of Software Engineering Terminology,, ,IEEE, std 610.12-1990, 1990., +,^, ,Sommerville, Ian, (2007) [1982]. ""1.1.2 What is software engineering?"". ,Software Engineering, (8th ed.). Harlow, England: Pearson Education. p. 7. ,ISBN, ,0-321-31379-8,. ,Software engineering is an engineering discipline that is concerned with all aspects of software production from the early stages of system specification to maintaining the system after it has gone into use. In this definition, there are two key phrases:, +1. ,Engineering discipline, Engineers make things work. They apply theories, methods and tools where these are appropriate [. . .] Engineers also recognize that they must work to organizational and financial constraints. [. . .], +2. ,All aspects of software production, Software engineering is not just concerned with the technical processes of software development but also with activities such as software project management and with the development of tools, methods and theories to support software production., , +,^, ,""Software Engineering"". ,Information Processing,. North-Holland Publishing Co.year = 1972. ,71,: 530–538., , +,^, ,Akram I. Salah (2002-04-05). ,""Engineering an Academic Program in Software Engineering"", ,(PDF),. 35th Annual Midwest Instruction and Computing Symposium,. Retrieved ,2006-09-13,., ,: ""For some, software engineering is just a glorified name for programming. If you are a programmer, you might put 'software engineer' on your business card—never 'programmer' though."", +,^, ,Mills, Harlan D., J. R. Newman, and C. B. Engle, Jr., ""An Undergraduate Curriculum in Software Engineering,"" in ,Deimel, Lionel E. (1990). ,Software Engineering Education: SEI Conference 1990, Pittsburgh, Pennsylvania, USA, April 2–3,.,. Springer. ,ISBN, ,0-387-97274-9,., ,,,p. 26,: ""As a practical matter, we regard software engineering as the necessary preparation for the practicing, software development and maintenance professional. The Computer Scientist is preparing for further theoretical studies..."", +,^, ,David Budgen; Pearl Brereton; Barbara Kitchenham; Stephen Linkman (2004-12-14). ,""Realizing Evidence-based Software Engineering"",. Retrieved ,2006-10-18,., ,: ""We believe that software engineering can only advance as an engineering discipline by moving away from its current dependence upon advocacy and analysis,...."", +,^, ,Leondes (2002). ,intelligent systems: technology and applications,. CRC Press. p. I-6. ,ISBN, ,978-0-8493-1121-5,. ,1.4 Computers and a First Glimpse at Al (1940s), , +,^, ,Campbell-Kelly, Martin (April 1982). ""The Development of Computer Programming in Britain (1945 to 1955)"". ,IEEE Annals of the History of Computing,. ,4, (2): 121–139. ,doi,:,10.1109/MAHC.1982.10016,., , +,^, ,Parnas, David, (December 1972). ,""On the Criteria To Be Used in Decomposing Systems into Modules"",. ,Communications of the ACM,. ,15, (12): 1053–1058. ,doi,:,10.1145/361598.361623,. Retrieved ,2008-12-26,., , +,^, ,""The origin of ""software engineering,"","",. Retrieved ,17 Nov, 2017,., , +,^, ,Randall, Brian. ,""The 1968/69 NATO Software Engineering Reports"",. Retrieved ,17 Nov, 2017,., , +,^, ,Sommerville 2008,, p. 26, +,^, ,Peter, Naur; ,Randell, Brian, (7–11 October 1968). ,Software Engineering: Report of a conference sponsored by the NATO Science Committee, ,(PDF),. Garmisch, Germany: Scientific Affairs Division, NATO,. Retrieved ,2008-12-26,., , +,^, ,Randell, Brian, (10 August 2001). ,""The 1968/69 NATO Software Engineering Reports"",. ,Brian Randell's University Homepage,. The School of the Computer Sciences, Newcastle University,. Retrieved ,2008-10-11,. ,The idea for the first NATO Software Engineering Conference, and in particular that of adopting the then practically unknown term ""software engineering"" as its (deliberately provocative) title, I believe came originally from Professor ,Fritz Bauer,., , +,^, ,""ISO/IEC TR 19759:2005"",. Retrieved ,2012-04-01,., , +,^ ,a, ,b, ,c, ,d, ,e, ,f, ,g, ,h, ,i, ,j, ,k, ,l, ,m, ,n, ,o, ,p, ,""Software Engineering Body of Knowledge (SWEBOK Version 3), 2014"", ,(pdf),. ,www.swebok.org,. IEEE Computer Society,. Retrieved ,24 May, 2016,., , +,^, ,Abran, Alain, ed. (2005) [2004]. ,""Chapter 1: Introduction to the Guide"",. ,Guide to the Software Engineering Body of Knowledge,. Los Alamitos: IEEE Computer Society. ,ISBN, ,0-7695-2330-7,. Retrieved ,2010-09-13,. ,The total volume of cited literature is intended to be suitable for mastery through the completion of an undergraduate education plus four years of experience., , +,^, ,""SE2004 Software Engineering Curriculum"",. Sites.computer.org. 2003-09-30,. Retrieved ,2012-03-25,., , +,^, ,[1], Degree programs in Software Engineering, +,^, ,Williams, N.S.W. (19–21 February 2001). ""Professional Engineers Ontario's approach to licensing software engineering practitioners"". ,Software Engineering Education and Training, 2001 Proceedings. 14th Conference on,. Charlotte, NC: ,IEEE,. pp. 77–78., , +,^, ,""NCEES Software Engineering Exam Specifications"", ,(PDF),. Retrieved ,2012-04-01,., , +,^, ,"",',SWEBOK Guide Version 3,',"",. Retrieved ,2015-03-09,., , +,^, ,"",','Software Engineering Code of Ethics''"", ,(PDF),. Retrieved ,2012-03-25,., , +,^, ,Bureau of Labor Statistics, U.S. Department of Labor, ,USDL 05-2145: Occupational Employment and Wages, November 2004,, Table 1., +,^, ,""Software Engineering"",. Retrieved ,2008-02-01,., , +,^, ,""Computer Software Engineers and Computer Programmers"",. Retrieved ,2009-12-17,., , +,^, ,Kalwarski, Tara; Daphne Mosher; Janet Paskin; Donna Rosato (2006). ,""Best Jobs in America"",. ,MONEY Magazine,. CNN,. Retrieved ,2006-04-20,., , +,^, ,""Best and Worst Jobs of 2012"",. online.wsj.com,. Retrieved ,2017-11-03,., , +,^, ,""SEI certification page"",. Sei.cmu.edu,. Retrieved ,2012-03-25,., , +,^, ,Wyrostek, Warren (March 14, 2008). ,""The Top 10 Problems with IT Certification in 2008"",. ,InformIT,. Retrieved ,2009-03-03,., , +,^, ,IEEE Computer Society. ,""2006 IEEE computer society report to the IFIP General Assembly"", ,(PDF),. Retrieved ,2007-04-10,., , +,^, ,IEEE. ,""CSDA"",. Retrieved ,2010-04-20,., , +,^, ,ACM (July 17, 2000). ,""A Summary of the ACM Position on Software Engineering as a Licensed Engineering Profession"", ,(PDF),. Association for Computing Machinery (ACM). Archived from ,the original, ,(PDF), on May 17, 2008,. Retrieved ,2009-03-03,. ,At its meeting in May 2000, the Council further concluded that the framework of a licensed professional engineer, originally developed for civil engineers, does not match the professional industrial practice of software engineering. Such licensing practices would give false assurances of competence even if the body of knowledge were mature; and would preclude many of the most qualified software engineers from becoming licensed., , +,^, ,Canadian Information Processing Society. ,""I.S.P. Designation"",. Retrieved ,2007-03-15,., , +,^, ,""Professional Engineers Ontario: Welcome to PEO's website"",. Peo.on.ca,. Retrieved ,2012-03-25,., , +,^, ,Thibodaux, Patrick (2006-05-05). ,""As outsourcing gathers steam, computer science interest wanes"",. Computerworld.com,. Retrieved ,2016-12-06,., , +,^, ,""Computer Programmers"",. Bls.gov,. Retrieved ,2012-03-25,., , +,^, ,Mullins, Robert (2007-03-13). ,""Software developer growth slows in North America"",. InfoWorld,. Retrieved ,2012-03-25,., , +,^, ,""Gartner Magic Quadrant"", ,(PDF),. Cognizant.com,. Retrieved ,2012-03-25,., , +,^, ,Casey, Valentine (2010-08-20). ,""Virtual software team project management"",. Springer,. Retrieved ,2013-12-06,., , +,^, ,http://www.stevemcconnell.com/psd/04-senotcs.htm, +,^, ,https://engiegirlsatuwaterloo.wordpress.com/2013/08/29/computer-engineering-software-engineering-or-computer-science/, +,^, ,https://www.upwork.com/hiring/development/computer-science-vs-computer-engineering/, +,^, ,Beck, Kent,; et al. (2001). ,""Manifesto for Agile Software Development"",. Agile Alliance,. Retrieved ,14 June, 2010,., , +,^, ,Dijkstra, E. W., (1988). ,""On the cruelty of really teaching computing science"",. Retrieved ,2014-01-10,., , +, +, +,References,[,edit,], +, +,Abran, Alain; Moore, James W.; Bourque, Pierre; Dupuis, Robert; Tripp, Leonard L. (2004). ,Guide to the Software Engineering Body of Knowledge,. IEEE. ,ISBN, ,0-7695-2330-7,., , +,Sommerville, Ian (2008). ,Software Engineering, (7 ed.). Pearson Education. ,ISBN, ,978-81-7758-530-8,. Retrieved ,10 January, 2013,., , +, +,Further reading,[,edit,], +, +,Pressman, Roger S, (2009). ,Software Engineering: A Practitioner's Approach, (7th ed.). Boston, Mass: McGraw-Hill. ,ISBN, ,978-0073375977,., , +,Sommerville, Ian, (2010) [2010]. ,Software Engineering, (9th ed.). Harlow, England: Pearson Education. ,ISBN, ,978-0137035151,., , +,Jalote, Pankaj, (2005) [1991]. ,An Integrated Approach to Software Engineering, (3rd ed.). Springer. ,ISBN, ,0-387-20881-X,., , +,Bruegge, Bernd,; Dutoit, Allen (2009). ,Object-oriented software engineering : using UML, patterns, and Java, (3rd ed.). Prentice Hall. ,ISBN, ,978-0136061250,., , +, +,External links,[,edit,], +, +, +, +,Wikimedia Commons has media related to ,Software engineering,., +, +, +, +, +, +,Wikibooks has a book on the topic of: ,Introduction to Software Engineering, +, +, +, +, +, +,Wikiversity has learning resources about ,Software engineering, +, +, +, +,Guide to the Software Engineering Body of Knowledge, +,The Open Systems Engineering and Software Development Life Cycle Framework, OpenSDLC.org the integrated Creative Commons SDLC, +,Software Engineering Institute, Carnegie Mellon, +,Learn Software Engineering, Software Engineering Society, +, +, +, +, +, +, +, +,v, +,t, +,e, +, +, +,Software engineering, +, +, +, +,Fields, +, +, +, +,Computer programming, +,Requirements engineering, +,Software deployment, +,Software design, +,Software maintenance, +,Software testing, +,Systems analysis, +,Formal methods, +, +, +, +, +, +,Concepts, +, +, +, +,Data modeling, +,Enterprise architecture, +,Functional specification, +,Modeling language, +,Orthogonality, +,Programming paradigm, +,Software, +,Software archaeology, +,Software architecture, +,Software configuration management, +,Software development methodology, +,Software development process, +,Software quality, +,Software quality assurance, +,Software verification and validation, +,Structured analysis, +, +, +, +, +, +,Orientations, +, +, +, +,Agile, +,Aspect-oriented, +,Object orientation, +,Ontology, +,Service orientation, +,SDLC, +, +, +, +, +, +,Models, +, +, +, +, +,Developmental, +, +, +, +,Agile, +,EUP, +,Executable UML, +,Incremental model, +,Iterative model, +,Prototype model, +,RAD, +,UP, +,Scrum, +,Spiral model, +,V-Model, +,Waterfall model, +,XP, +, +, +, +, +, +,Other, +, +, +, +,SPICE, +,CMMI, +,Data model, +,ER model, +,Function model, +,Information model, +,Metamodeling, +,Object model, +,Systems model, +,View model, +, +, +, +, +, +,Languages, +, +, +, +,IDEF, +,UML, +,USL, +,SysML, +, +, +, +, +, +, +, +, +, +,Software, +engineers, +, +, +, +, +,Victor Basili, +,Kent Beck, +,Grady Booch, +,Fred Brooks, +,Barry Boehm, +,Peter Chen, +,Danese Cooper, +,Ward Cunningham, +,Tom DeMarco, +,Edsger W. Dijkstra, +,Delores M. Etter, +,Martin Fowler, +,Adele Goldstine, +,Margaret Hamilton, +,C. A. R. Hoare, +,Lois Haibt, +,Mary Jean Harrold, +,Grace Hopper, +,Watts Humphrey, +,Michael A. Jackson, +,Ivar Jacobson, +,Alan Kay, +,Nancy Leveson, +,Stephen J. Mellor, +,Bertrand Meyer, +,David Parnas, +,Trygve Reenskaug, +,Winston W. Royce, +,James Rumbaugh, +,Mary Shaw, +,Peri Tarr, +,Elaine Weyuker, +,Niklaus Wirth, +,Edward Yourdon, +, +, +, +, +, +,Related fields, +, +, +, +,Computer science, +,Computer engineering, +,Project management, +,Risk management, +,Systems engineering, +, +, +, +, +, +, +, +, +, ,Category, +, ,Commons, +, +, +, +, +, +, +, +, +, +, +, +, +,v, +,t, +,e, +, +, +,Systems engineering, +, +, +, +,Subfields, +, +, +, +,Aerospace engineering, +,Biological systems engineering, +,Configuration management, +,Earth systems engineering and management, +,Electrical engineering, +,Enterprise systems engineering, +,Performance engineering, +,Reliability engineering, +,Safety engineering, +, +, +, +, +, +,Processes, +, +, +, +,Requirements engineering, +,Functional specification, +,System integration, +,Verification and validation, +,Design review, +, +, +, +, +, +,Concepts, +, +, +, +,Business process, +,System, +,System lifecycle, +,V-Model, +,Systems development life cycle, +, +, +, +, +, +,Tools, +, +, +, +,Decision-making, +,Function modelling, +,IDEF, +,Optimization, +,Quality function deployment, +,System dynamics, +,Systems Modeling Language, +,Systems analysis, +,Systems modeling, +,Work breakdown structure, +, +, +, +, +, +,People, +, +, +, +,James S. Albus, +,Ruzena Bajcsy, +,Benjamin S. Blanchard, +,Wernher von Braun, +,Kathleen Carley, +,Harold Chestnut, +,Wolt Fabrycky, +,Barbara Grosz, +,Arthur David Hall III, +,Derek Hitchins, +,Robert E. Machol, +,Radhika Nagpal, +,Simon Ramo, +,Joseph Francis Shea, +,Katia Sycara, +,Manuela M. Veloso, +,John N. Warfield, +, +, +, +, +, +,Related fields, +, +, +, +,Control engineering, +,Computer engineering, +,Industrial engineering, +,Operations research, +,Project management, +,Quality management, +,Risk management, +,Software engineering, +, +, +, +, +, +, +, +, +,Category, +, +, +, +, +, +, +, +, +, +, +, +, +,v, +,t, +,e, +, +, +,Engineering, +, +, +, +,Civil, +, +, +, +,Architectural, +,Construction, +,Environmental, +,Earthquake, +,Geotechnical, +,Hydraulic, +,Mining, +,Structural, +,Transportation, +, +, +, +, +, +,Mechanical, +, +, +, +,Acoustical, +,Aerospace, +,Automotive, +,Marine, +,Mechatronics, +,Railway, +, +, +, +, +, +,Electrical, +, +, +, +,Computer, +,Control, +,Electromechanics, +,Electronics, +,Microwaves, +,Power, +,Radio Frequency, +,Telecommunications, +, +, +, +, +, +,Chemical, +, +, +, +,Biochemical, +,Biological, +,Molecular, +,Petroleum, +,Process, +,Reaction, +,Thermodynamics, +,Transport phenomena, +, +, +, +, +, +,Interdisciplinarity, +, +, +, +,Audio, +,Biomedical, +,Ceramics, +,Engineering mathematics, +,Engineering mechanics, +,Engineering science, +,Fire, +,Industrial, +,Materials science, +,Metallurgy, +,Military, +,Nanotechnology, +,Nuclear, +,Optical, +,Photonics, +,Privacy, +,Robotics, +,Security, +,Systems, +, +, +, +, +, +,Glossaries, +, +, +, +,Engineering, +,Aerospace engineering, +,Civil engineering, +,Electrical and electronics engineering, +,Mechanical engineering, +,Structural engineering, +, +, +, +, +, +, +, +, +,List of engineering branches, +, ,Category:Engineering, +, , ,Engineering portal, +, +, +, +, +, +, +, +, +, +, +, +, +,v, +,t, +,e, +, +, +,Major fields of ,computer science, +, +, +, +, +,Note: This template roughly follows the 2012 ,ACM Computing Classification System,., +, +, +, +,Hardware, +, +, +, +,Printed circuit board, +,Peripheral, +,Integrated circuit, +,Very-large-scale integration, +,Energy consumption, +,Electronic design automation, +, +, +, +, +, +,Computer systems, +organization, +, +, +, +,Computer architecture, +,Embedded system, +,Real-time computing, +,Dependability, +, +, +, +, +, +,Networks, +, +, +, +,Network architecture, +,Network protocol, +,Network components, +,Network scheduler, +,Network performance evaluation, +,Network service, +, +, +, +, +, +,Software organization, +, +, +, +,Interpreter, +,Middleware, +,Virtual machine, +,Operating system, +,Software quality, +, +, +, +, +, +,Software notations, +and ,tools, +, +, +, +,Programming paradigm, +,Programming language, +,Compiler, +,Domain-specific language, +,Modeling language, +,Software framework, +,Integrated development environment, +,Software configuration management, +,Software library, +,Software repository, +, +, +, +, +, +,Software development, +, +, +, +,Software development process, +,Requirements analysis, +,Software design, +,Software construction, +,Software deployment, +,Software maintenance, +,Programming team, +,Open-source model, +, +, +, +, +, +,Theory of computation, +, +, +, +,Model of computation, +,Formal language, +,Automata theory, +,Computational complexity theory, +,Logic, +,Semantics, +, +, +, +, +, +,Algorithms, +, +, +, +,Algorithm design, +,Analysis of algorithms, +,Randomized algorithm, +,Computational geometry, +, +, +, +, +, +,Mathematics, +of computing, +, +, +, +,Discrete mathematics, +,Probability, +,Statistics, +,Mathematical software, +,Information theory, +,Mathematical analysis, +,Numerical analysis, +, +, +, +, +, +,Information, +systems, +, +, +, +,Database management system, +,Information storage systems, +,Enterprise information system, +,Social information systems, +,Geographic information system, +,Decision support system, +,Process control system, +,Multimedia information system, +,Data mining, +,Digital library, +,Computing platform, +,Digital marketing, +,World Wide Web, +,Information retrieval, +, +, +, +, +, +,Security, +, +, +, +,Cryptography, +,Formal methods, +,Security services, +,Intrusion detection system, +,Hardware security, +,Network security, +,Information security, +,Application security, +, +, +, +, +, +,Human–computer, +interaction, +, +, +, +,Interaction design, +,Social computing, +,Ubiquitous computing, +,Visualization, +,Accessibility, +, +, +, +, +, +,Concurrency, +, +, +, +,Concurrent computing, +,Parallel computing, +,Distributed computing, +,Multithreading, +,Multiprocessing, +, +, +, +, +, +,Artificial, +intelligence, +, +, +, +,Natural language processing, +,Knowledge representation and reasoning, +,Computer vision, +,Automated planning and scheduling, +,Search methodology, +,Control method, +,Philosophy of artificial intelligence, +,Distributed artificial intelligence, +, +, +, +, +, +,Machine learning, +, +, +, +,Supervised learning, +,Unsupervised learning, +,Reinforcement learning, +,Multi-task learning, +,Cross-validation, +, +, +, +, +, +,Graphics, +, +, +, +,Animation, +,Rendering, +,Image manipulation, +,Graphics processing unit, +,Mixed reality, +,Virtual reality, +,Image compression, +,Solid modeling, +, +, +, +, +, +,Applied, +computing, +, +, +, +,E-commerce, +,Enterprise software, +,Computational mathematics, +,Computational physics, +,Computational chemistry, +,Computational biology, +,Computational social science, +,Computational engineering, +,Computational healthcare, +,Digital art, +,Electronic publishing, +,Cyberwarfare, +,Electronic voting, +,Video game, +,Word processing, +,Operations research, +,Educational technology, +,Document management, +, +, +, +, +, +, +, +, +, ,Book, +, ,Category, +, ,Portal, +,WikiProject, +, ,Commons, +, +, +, +, +, +, +, +, +, +,Authority control, +, +, +, +,LCCN,: ,sh87007398, +,GND,: ,4116521-4, +,BNF,: ,cb11966616k, ,(data), +,NDL,: ,01014113, +,BNE,: ,XX541523, +, +, +, +, +, +, + + +, +, +, +, +",Software engineering +" 19 January 2018, at 03:57.","Not to be confused with ,SaaS,., +, +,Sass, +, +, +, +, +,Designed by, +,Hampton Catlin, +, +, +,Developer, +,Natalie Weizenbaum,, ,Chris Eppstein, +, +, +,First appeared, +,November 28, 2006,; 11 years ago, (,2006-11-28,), +, +, +, +, +, +,Stable release, +, +,3.5.1 / July 13, 2017,; 6 months ago, (,2017-07-13,),[1], +, +, +, +, +, +, +,Typing discipline, +,dynamic, +, +, +,OS, +,Cross-platform, +, +, +,License, +,MIT License, +, +, +,Filename extensions, +,.sass, .scss, +, +, +,Website, +,sass-lang,.com, +, +, +,Major ,implementations, +, +, +,Dart,, ,Ruby, +, +, +,Influenced by, +, +, +,CSS,, ,YAML,, ,Haml, +, +, +,Influenced, +, +, +,Less,, ,Stylus,, ,Tritium, +, +, +,Sass, (Syntactically awesome style sheets) is a ,style sheet language, initially designed by ,Hampton Catlin, and developed by ,Natalie Weizenbaum,.,[2],[3], After its initial versions, Weizenbaum and ,Chris Eppstein, continued to extend Sass with SassScript, a simple scripting language used in Sass files., +,Sass is a ,scripting language, that is ,interpreted, or ,compiled, into ,Cascading Style Sheets, (CSS). SassScript is the scripting language itself. Sass consists of two ,syntaxes,. The original syntax, called ""the indented syntax"", uses a syntax similar to ,Haml,.,[4], It uses ,indentation, to separate ,code blocks, and ,newline, characters to separate rules. The newer syntax, ""SCSS"", uses block formatting like that of CSS. It uses braces to denote code blocks and semicolons to separate lines within a block. The indented syntax and SCSS files are traditionally given the ,extensions, .sass and .scss, respectively., +,CSS3, consists of a series of selectors and pseudo-selectors that group rules that apply to them. Sass,[5], (in the larger context of both syntaxes) extends CSS by providing several mechanisms available in more traditional ,programming languages,, particularly ,object-oriented languages,, but that are not available to CSS3 itself. When SassScript is interpreted, it creates blocks of CSS rules for various selectors as defined by the Sass file. The Sass interpreter translates SassScript into CSS. Alternatively, Sass can monitor the .sass or .scss file and translate it to an output .css file whenever the .sass or .scss file is saved.,[6], Sass is simply ,syntactic sugar, for CSS., +,The official implementation of Sass is ,open-source, and coded in ,Ruby,; however, other implementations exist, including ,Dart,, ,PHP,, and a high-performance implementation in ,C, called libSass.,[7],[8], There's also a ,Java, implementation called JSass.,[9], Additionally, ,Vaadin, has a Java implementation of Sass.,[10], The indented syntax is a metalanguage. SCSS is a ,nested metalanguage,, as valid CSS is valid SCSS with the same ,semantics,. Sass supports integration with the ,Firefox, ,extension, ,Firebug,.,[11], +,SassScript provides the following mechanisms: ,variables,, ,nesting,, ,mixins,, and selector ,inheritance,.,[4], +, +, +, +,Contents, +, +, +,1, ,Variables, +,2, ,Nesting, +, +,2.1, ,Loops, +,2.2, ,Arguments, +,2.3, ,In combination, +, +, +,3, ,Selector inheritance, +,4, ,libSass, +,5, ,IDE integration, +,6, ,See also, +,7, ,References, +,8, ,External links, +, +, +, +,Variables,[,edit,], +,Sass allows variables to be defined. Variables begin with a ,dollar sign, (,$,). Variable ,assignment, is done with a ,colon, (,:,).,[11], +,SassScript supports four data types:,[11], +, +,Numbers, (including units), +,Strings, (with quotes or without), +,Colors (name, or names), +,Booleans, +, +,Variables can be ,arguments, to or results from one of several available ,functions,.,[12], During translation, the values of the variables are inserted into the output CSS document.,[4], +,In SCSS style, +, +, +,$primary-color,:, ,#3bbfce,;, +,$margin,:, ,16,px,;, + +,.content-navigation, ,{, + ,border-color,:, ,$,primary-color,;, + ,color,:, ,darken,(,$,primary-color,,, ,10,%,);, +,}, + +,.border, ,{, + ,padding,:, ,$,margin, ,/, ,2,;, + ,margin,:, ,$,margin, ,/, ,2,;, + ,border-color,:, ,$,primary-color,;, +,}, +, +,Or Sass style, +, +, +,$primary-color,:, ,#3bbfce, +,$margin,:, ,16,px, + +,.content-navigation, + ,border-color,:, ,$primary-color, + ,color,:, ,darken,(,$primary-color,,, ,10,%,), + +,.border, + ,padding,:, ,$margin,/,2, + ,margin,:, ,$margin,/,2, + ,border-color,:, ,$primary-color, +, +,Would compile to:, +, +, +,.,content-navigation, ,{, + ,border-color,:, ,#3bbfce,;, + ,color,:, ,#2b9eab,;, +,}, + +,.,border, ,{, + ,padding,:, ,8,px,;, + ,margin,:, ,8,px,;, + ,border-color,:, ,#3bbfce,;, +,}, +, +,Nesting,[,edit,], +,CSS does support logical nesting, but the code blocks themselves are not nested. Sass allows the nested code to be inserted within each other.,[4], +,In Sass style, +, +, +,table,.hl, + ,margin,:, ,2,em, ,0, + ,td,.ln, + ,text-align,:, ,right, + +,li, + ,font,:, + ,family,:, ,serif, + ,weight,:, ,bold, + ,size,:, ,1,.3,em, +, +,or SCSS style, +, +, +,table,.hl, ,{, + ,margin,:, ,2em, ,0,;, + ,td,.ln, ,{, + ,text-align,:, ,right,;, + ,}, +,}, + +,li, ,{, + ,font,:, ,{, + ,family,:, ,serif,;, + ,weight,:, ,bold,;, + ,size,:, ,1,.3em,;, + ,}, +,}, +, +,Would compile to:, +, +, +,table,.,hl, ,{, + ,margin,:, ,2,em, ,0,;, +,}, +,table,.,hl, ,td,.,ln, ,{, + ,text-align,:, ,right,;, +,}, + +,li, ,{, + ,font-family,:, ,serif,;, + ,font-weight,:, ,bold,;, + ,font-size,:, ,1.3,em,;, +,}, +, +,More complicated types of nesting including ,namespace, nesting and parent references are discussed in the Sass documentation.,[11], +, +, +,@mixin, table-base, ,{, + ,th, ,{, + ,text-align,:, ,center,;, + ,font-weight,:, ,bold,;, + ,}, + ,td,,, ,th, ,{, + ,padding,:, ,2px,;, + ,}, +,}, + +,#data, ,{, + ,@include, table-base,;, +,}, +, +,Or Sass style, +, +, +,=table-base, + ,th, + ,text-align,:, ,center, + ,font-weight,:, ,bold, + ,td,,, ,th, + ,padding,:, ,2,px, + +,#data, + ,+table-base, +, +,Would compile to:, +, +, +,#,data, ,th, ,{, + ,text-align,:, ,center,;, + ,font-weight,:, ,bold,;, +,}, +,#,data, ,td,,, ,#,data, ,th, ,{, + ,padding,:, ,2,px,;, +,}, +, +,Loops,[,edit,], +,Sass allows for iterating over variables using ,@for,, ,@each, and ,@while,, which can be used to apply different styles to elements with similar classes or ids., +, +, +,$squareCount,:, ,3, +,@for, ,$i, ,from, ,1, ,through, ,$squareCount, + ,#square-,#{,$i,}, + ,background-color,:, ,red, + ,width,:, ,50,px, ,*, ,$i, + ,height,:, ,120,px, ,/, ,$i, +, +,The above example would compile to:, +, +, +,#,square-1, ,{, + ,background-color,:, ,red,;, + ,width,:, ,50,px,;, + ,height,:, ,120,px,;, +,}, + +,#,square-2, ,{, + ,background-color,:, ,red,;, + ,width,:, ,100,px,;, + ,height,:, ,60,px,;, +,}, + +,#,square-3, ,{, + ,background-color,:, ,red,;, + ,width,:, ,150,px,;, + ,height,:, ,40,px,;, +,}, +, +,Arguments,[,edit,], +,Mixins also support arguments.,[4], +, +, +,=left,(,$dist,), + ,float,:, ,left, + ,margin-left,:, ,$dist, + +,#data, + ,+left,(,10,px,), +, +,Would compile to:, +, +, +,#,data, ,{, + ,float,:, ,left,;, + ,margin-left,:, ,10,px,;, +,}, +, +,In combination,[,edit,], +, +, +,=table-base, + ,th, + ,text-align,:, ,center, + ,font-weight,:, ,bold, + ,td,,, ,th, + ,padding,:, ,2,px, + +,=left,(,$dist,), + ,float,:, ,left, + ,margin-left,:, ,$dist, + +,#data, + ,+left,(,10,px,), + ,+table-base, +, +,Would compile to:, +, +, +,#,data, ,{, + ,float,:, ,left,;, + ,margin-left,:, ,10,px,;, +,}, +,#,data, ,th, ,{, + ,text-align,:, ,center,;, + ,font-weight,:, ,bold,;, +,}, +,#,data, ,td,,, ,#,data, ,th, ,{, + ,padding,:, ,2,px,;, +,}, +, +,Selector inheritance,[,edit,], +,While CSS3 supports the ,Document Object Model, (DOM) hierarchy, it does not allow selector inheritance. In Sass, inheritance is achieved by inserting a line inside of a code block that uses the @extend keyword and references another selector. The extended selector's attributes are applied to the calling selector.,[4], +, +, +,.error, + ,border,:, ,1,px, ,#f00, + ,background,:, ,#fdd, + +,.error.intrusion, + ,font-size,:, ,1,.3,em, + ,font-weight,:, ,bold, + +,.badError, + ,@extend, ,.error, + ,border-width,:, ,3,px, +, +,Would compile to:, +, +, +,.,error,,, ,.,badError, ,{, + ,border,:, ,1,px, ,#f00,;, + ,background,:, ,#fdd,;, +,}, + +,.,error,.,intrusion,,, +,.,badError,.,intrusion, ,{, + ,font-size,:, ,1.3,em,;, + ,font-weight,:, ,bold,;, +,}, + +,.,badError, ,{, + ,border-width,:, ,3,px,;, +,}, +, +,Sass supports ,multiple inheritance,.,[11], +,libSass,[,edit,], +,At the 2012 HTML5 Developer Conference, Hampton Catlin, the creator of Sass, announced version 1.0 of libSass, an open source C++ implementation of Sass developed by Catlin, Aaron Leung, and the engineering team at ,Moovweb,.,[8],[13], Current Sass maintainer, Chris Eppstein, has expressed intent to contribute as well.,[14], +,According to Catlin, libSass can be ""drop[ped] into anything and it will have Sass in it...You could drop it right into Firefox today and build Firefox and it will compile in there. We wrote our own parser from scratch to make sure that would be possible."",[15], +,The design goals of libSass are:, +, +,Performance – Developers have reported 10x speed up increases over the Ruby implementation of Sass.,[16], +,Easier integration – libSass makes it easier to integrate Sass into more software. Before libSass, tightly integrating Sass into a language or software product required bundling the entire Ruby interpreter. By contrast, libSass is a statically linkable library with zero external dependencies and C-like interface, making it easy to wrap Sass directly into other programming languages and tools. For example, open source libSass bindings now exist for ,Node,, ,Go,, and ,Ruby,.,[13], +,Compatibility – libSass's goal is full compatibility with the official Ruby implementation of Sass; however, this goal has not yet been fully met.,[8], +, +,IDE integration,[,edit,], +, +, +,IDE, +,Software, +,website, +, +, +,Adobe Dreamweaver, CC 2017, +, +,https://blogs.adobe.com/creativecloud/getting-started-with-css-preprocessors-less-and-sass/, +, +, +,Eclipse, +, +, +, +, +,Emacs, +,SCSS Mode, +,https://github.com/antonj/scss-mode/, +, +, +,JetBrains IntelliJ IDEA (Ultimate Edition), +, +,https://www.jetbrains.com/idea/, +, +, +,JetBrains PhpStorm, +, +,http://www.jetbrains.com/phpstorm/, +, +, +,JetBrains RubyMine, +, +,http://www.jetbrains.com/ruby/, +, +, +,Microsoft Visual Studio, +,Mindscape, +,http://www.mindscapehq.com/products/web-workbench, +, +, +,Microsoft Visual Studio, +,SassyStudio, +,http://visualstudiogallery.msdn.microsoft.com/85fa99a6-e4c6-4a1c-9f00-e6a8129b6f4d, +, +, +,Microsoft WebMatrix, +, +,http://www.microsoft.com/web/, +, +, +,NetBeans, +, +,http://plugins.netbeans.org/plugin/34929/scss-support, +, +, +,Vim, +,haml.zip, +,http://www.vim.org/scripts/script.php?script_id=1433, +, +, +,Atom, +, +,https://github.com/atom/language-sass, +, +, +,Visual Studio Code, +, +,https://code.visualstudio.com/Docs/languages/css, +, +, +,See also,[,edit,], +, +,Less (stylesheet language), +,Stylus (stylesheet language), +, +,References,[,edit,], +, +, +,^, ,Latest releases, +,^, ,""Sass: Syntactically Awesome Style Sheets"",. ,sass-lang.com,., , +,^, ,""Natalie Weizenbaum's blog"",., , +,^ ,a, ,b, ,c, ,d, ,e, ,f, ,Media Mark (3.2.12). ,""Sass - Syntactically Awesome Stylesheets"",. Sass-lang.com,. Retrieved ,2014-02-23,., , +,^, ,Kataria, Saransh. ,""Getting started with sass development"",. ,wisdomgeek,. saranshkataria., , +,^, ,Sass - Syntactically Awesome Stylesheets, Tutorial, +,^, ,""Sass / Scss"",. Drupal.org,. Retrieved ,2014-02-23,., , +,^ ,a, ,b, ,c, ,H. Catlin (2012-10-15). ,""Hampton's 6 Rules of Mobile Design"",. HTML5 Developer Conference,. Retrieved ,2013-07-11,., , +,^, ,""jsass - A Java implementation of the Sass compiler (and some other goodies). - Google Project Hosting"",. Code.google.com,. Retrieved ,2014-02-23,., , +,^, ,""SassCompiler (Vaadin 7.0.7 API)"",. Vaadin.com. 2013-06-06,. Retrieved ,2014-02-23,., , +,^ ,a, ,b, ,c, ,d, ,e, ,Sass (Syntactically Awesome StyleSheets), SASS_REFERENCE, +,^, ,Module: Sass::Script::Functions, Sass Functions, +,^ ,a, ,b, ,M. Catlin (2012-04-30). ,""libsass"",. Moovweb Blog,. Retrieved ,2013-07-11,., , +,^, ,C. Eppstein (2012-04-15). ,""Tweet"",. Retrieved ,2013-07-11,., , +,^, ,A. Stacoviak & A. Thorp (2013-06-26). ,""Sass, libsass, Haml and more with Hampton Catlin"",. Retrieved ,2013-07-30,., , +,^, ,D. Le Nouaille (2013-06-07). ,""Sassc and Bourbon"",. Retrieved ,2013-07-11,., , +, +, +,External links,[,edit,], +, +,Official website, +,Haml/Sass Google Group, +,pyScss, a Python Scss library and client, +,Sai the mixins extension and CSS authoring framework for Less & Sass/Scss (Git), +,Sass tools and resources, +, +, +, +, +, +, +, +,v, +,t, +,e, +, +, +,Style sheet languages, +, +, +, +,Modes, +, +, +, +,Desktop publishing, +,Web development, +,User interfaces, +, +, +, +, +, +,Standard, +, +, +, +,Cascading (CSS), +,DSSSL, +,Extensible (XSL), +, +, +, +, +, +,Non-standard, +, +, +, +,JavaScript (JSSS), +,FOSI, +,Qt, +,Sass, +,Less, +,Stylus, +,SMIL Timesheets, +,PostCSS, +, +, +, +, +, +, +, +, +,List, +,Comparison, +, +, +, +, +, +, + + +, +, +, +, +",Sass (stylesheet language) +" 14 January 2018, at 14:04."," +,CoffeeScript, +, +, +, +, +,Paradigm, +,Multi-paradigm,: ,prototype-based,, ,functional,, ,imperative,, ,scripting, +, +, +,Designed by, +,Jeremy Ashkenas, +, +, +,Developer, +,Jeremy Ashkenas, Colin Runciman, et al., +, +, +,First appeared, +,December 13, 2009,; 8 years ago, (,2009-12-13,), +, +, +, +, +, +,Stable release, +, +,2.0.0 / September 18, 2017,; 4 months ago, (,2017-09-18,), +, +, +, +, +, +, +,OS, +,Cross-platform, +, +, +,License, +,MIT License, +, +, +,Filename extensions, +,.coffee, .litcoffee, +, +, +,Website, +,coffeescript,.org, +, +, +,Influenced by, +, +, +,Haskell,, ,JavaScript,, ,Perl,,,[,citation needed,], ,Python,,,[1], ,Ruby,, ,YAML,[2], +, +, +,Influenced, +, +, +,MoonScript, ,LiveScript,, JavaScript, +, +, +,CoffeeScript, is a programming language that ,transcompiles, to ,JavaScript,. It adds ,syntactic sugar, inspired by ,Ruby,, ,Python, and ,Haskell, in an effort to enhance JavaScript's brevity and readability.,[3], Specific additional features include ,list comprehension, and ,pattern matching,., +,CoffeeScript support is included in ,Ruby on Rails, version 3.1,[4], and ,Play Framework,.,[5], In 2011, ,Brendan Eich, referenced CoffeeScript as an influence on his thoughts about the future of JavaScript.,[6],[7], +, +, +, +,Contents, +, +, +,1, ,History, +,2, ,Syntax, +,3, ,Examples, +, +,3.1, ,Interval test, +,3.2, ,Loops and comprehensions, +,3.3, ,Functions and jQuery, +,3.4, ,String interpolation, +, +, +,4, ,Compiling, +,5, ,Latest additions, +,6, ,Adoption, +,7, ,See also, +, +,7.1, ,Other languages that compile to JavaScript, +, +, +,8, ,References, +,9, ,Further reading, +,10, ,External links, +, +, +, +,History,[,edit,], +,On December 13, 2009, ,Jeremy Ashkenas, made the first ,Git, commit of CoffeeScript with the comment: ""initial commit of the mystery language."",[8], The compiler was written in Ruby. On December 24, he made the first tagged and documented release, 0.1.0. On February 21, 2010, he committed version 0.5, which replaced the Ruby compiler with a ,self-hosting, version in pure CoffeeScript. By that time the project had attracted several other contributors on ,GitHub,, and was receiving over 300 page hits per day., +,On December 24, 2010, Ashkenas announced the release of stable 1.0.0 to ,Hacker News,, the site where the project was announced for the first time.,[9],[10], +,Syntax,[,edit,], +,Almost everything is an expression in CoffeeScript, for example ,if,, ,switch, and ,for, expressions (which have no return value in JavaScript) return a value. As in ,Perl,, these control statements also have postfix versions; for example, ,if, can also be written after the conditional statement., +,Many unnecessary parentheses and braces can be omitted; for example, blocks of code can be denoted by indentation instead of braces, function calls are implicit, and object literals are often detected automatically., +,Examples,[,edit,], +,Interval test,[,edit,], +,To compute the ,body mass index,, one may do (here in ,JavaScript,):, +, +, +,var, ,mass, ,=, ,72,;, +,var, ,height, ,=, ,1.78,;, +,var, ,BMI, ,=, ,mass, ,/, ,Math,.,pow,(,height,,, ,2,);, +,if, ,(,18.5, ,<, ,BMI, ,&&, ,BMI, ,<, ,25,), ,alert,(,'You are healthy!',);, +, +,With CoffeeScript the interval is directly described:, +, +, +,mass = ,72, +,height = ,1.78, +,BMI = ,mass, ,/, ,height,**,2, +,alert, ,'You are healthy!', ,if, ,18.5, ,<, ,BMI, ,<, ,25, +, +,Loops and comprehensions,[,edit,], +,To compute the ,greatest common divisor, of two integers with the ,euclidean algorithm,, in JavaScript one usually needs a ,while, loop:, +, +, +,gcd, ,=, ,(,x,,, ,y,), ,=>, ,{, + ,do, ,{, + ,z, ,=, ,x, ,%, ,y, + ,x, ,=, ,y, + ,y, ,=, ,z, + ,}, ,while, ,(,y, ,!==, ,0,), + ,return, ,x, +,}, +, +,Whereas in CoffeeScript one can use ,until, and pattern-matching instead:, +, +, +,gcd = ,(x, y) ->, + ,[,x,,, ,y,], ,=, ,[,y,,, ,x,%,y,], ,until, ,y, ,is, ,0, + ,x, +, +,Any ,for, loop can be replaced by a ,list comprehension,; so that to compute the squares of the positive odd numbers smaller than ten (i.e. numbers which remainder modulo 2 is 1), one can do:, +, +, +,alert, ,n,*,n, ,for, ,n, ,in, ,[,1,..,10,], ,when, ,n,%,2, ,is, ,1, +, +,Alternatively, there is:, +, +, +,alert, ,n,*,n, ,for, ,n, ,in, ,[,1,..,10,], ,by, ,2, +, +,A ,linear search, can be implemented with a one-liner using the when keyword:, +, +, +,names = ,[,""Ivan"",,, ,""Joanna"",,, ,""Nikolay"",,, ,""Mihaela"",], +,linearSearch = ,(searchName) ->, ,alert,(,name,), ,for, ,name, ,in, ,names, ,when, ,name, ,is, ,searchName, +, +,The ,for ... in, syntax allows looping over arrays while the ,for ... of, syntax allows looping over objects., +,The ,?, keyword quickly checks if a variable is ,null, or ,undefined, :, +, +, +,personCheck = ,->, + ,if, ,not, ,person,?, ,then, ,alert,(,""No person"",), ,else, ,alert,(,""Have person"",), +,person = ,null, +,personCheck,(), +,person = ,""Ivan"", +,personCheck,(), +, +,This would alert ""No person"" if the variable is ,null, or ,undefined, and ""Have person"" if there is something there., +,Functions and jQuery,[,edit,], +,A common JavaScript snippet using the ,jQuery, library is:, +, +, +,$,(,document,).,ready,(,function,(), ,{, + ,// Initialization code goes here, +,}), +, +,Or even just:, +, +, +,$,(,function,(), ,{, + ,// Initialization code goes here, +,}), +, +,In CoffeeScript, the ,function, keyword is replaced by the ,->, symbol, and indentation is used instead of curly braces, as in other ,off-side rule, languages such as Python and Haskell. Also, parentheses can usually be omitted, using indentation level instead to denote a function or block. Thus, the CoffeeScript equivalent of the snippet above is:, +, +, +,$,(,document,).,ready, ,->, + ,# Initialization code goes here, +, +,Or just:, +, +, +,$, ,->, + ,# Initialization code goes here, +, +,String interpolation,[,edit,], +,Ruby-style string interpolation is included in CoffeeScript. Double-quoted strings allow for interpolated values, using #{ ... }, and single-quoted strings are literal.,[11], +, +, +,author = ,""Wittgenstein"", +,quote = ,""A picture is a fact. -- ,#{, ,author, ,},"", + +,sentence = ,"",#{, ,22, ,/, ,7, ,}, is a decent approximation of π"", +, +,Compiling,[,edit,], +,The CoffeeScript compiler has been ,written in CoffeeScript, since version 0.5 and is available as a ,Node.js, utility; however, the core compiler does not rely on Node.js and can be run in any ,JavaScript, environment.,[12], One alternative to the ,Node.js, utility is the ,Coffee Maven Plugin,, a plugin for the popular ,Apache Maven, build system. The plugin uses the ,Rhino, JavaScript engine written in ,Java,., +,The official site at CoffeeScript.org has a ""Try CoffeeScript"" button in the menu bar; clicking it opens a modal window in which users can enter CoffeeScript, see the JavaScript output, and run it directly in the browser. The js2coffee,[13], site provides bi-directional translation., +,Latest additions,[,edit,], +, +,Source maps allow users to de-bug their CoffeeScript code directly, supporting CoffeeScript tracebacks on run time errors., +,CoffeeScript supports a form of ,Literate Programming,, using the ,.coffee.md, or ,.litcoffee, file extension. This allows CoffeeScript source code to be written in ,Markdown,. The compiler will treat any indented blocks (Markdown's way of indicating source code) as code, and ignore the rest as comments., +, +,Adoption,[,edit,], +,On September 13, 2012, ,Dropbox, announced that their browser-side code base has been rewritten from ,JavaScript, to CoffeeScript.,[14], +,GitHub,'s internal style guide once said ""write new JS in CoffeeScript"", and while it no longer does, all the advice in the style guide references how to write good CoffeeScript,,[15], and their ,Atom text editor, is also written in the language.,[16], +,See also,[,edit,], +, +,Source-to-source compiler, +, +,Other languages that compile to JavaScript,[,edit,], +, +, +,Free software portal, +, +, +,(In chronological order, with ones listed in the ,TIOBE index, highlighted in bold.), +, +,Haxe, (2006): a language that can be transpiled to C++, Java, C#, Python, Lua, PHP, and ActionScript; as well as JavaScript., +, +, +,Nim, (2008): a statically-typed programming language with syntactical similarities to ,Python,. The same Nim code can be compiled to C/C++ (optimized ,systems programming,, server-side, etc) or to JavaScript (interpreted scripting, client-side)., +, +, +,LiveScript, (2011): an indirect descendant of CoffeeScript focusing on functional programming., +, +, +,Amber Smalltalk, (2011): an implementation of the Smalltalk-80 language that runs on the JavaScript runtime., +, +, +,Dart, (2011): a ,Google,-led general-purpose ,OOP, language with with optional typing., +, +, +,Opa, (2011): an integrated stack for developing scalable client-server Web applications., +, +, +,TypeScript, (2012): a ,Microsoft,-led strict superset of JavaScript with optional typing., +, +, +,Elm, (2012): a statically-typed purely-functional language that compiles to JavaScript., +, +,References,[,edit,], +, +, +,^, ,http://coffeescript.org/, ""CoffeeScript borrows chained comparisons from Python"", +,^, ,Heller, Martin (18 October 2011). ,""Turn up your nose at Dart and smell the CoffeeScript"",. ,JavaWorld,. InfoWorld,. Retrieved ,2012-02-09,., , +,^, ,Alex MacCaw (January 2012). ,The Little Book on CoffeScript,. ,O'Reilly Media,. ,ISBN, ,978-1-4493-2105-5,., , +,^, ,Josh Peek (April 13, 2011). ,""Tweet by Rails Core Team Member"",., , +,^, ,""AssetsCoffeeScript - 2.5.x"",. ,www.playframework.com,. Retrieved ,2016-10-31,., , +,^, ,Eich, Brendan. "",Harmony of My Dreams,"", +,^, ,Eich, Brendan. "",My JSConf.US Presentation,"", +,^, ,Github. ,'initial commit of the mystery language', +,^, ,Hacker News. ,CoffeeScript 1.0.0 announcement, posted by Jeremy Ashkenas on Dec 24, 2010, +,^, ,Hacker News. ,Original CoffeeScript announcement, posted by Jeremy Ashkenas on Dec 24, 2009, +,^, ,""Official CoffeeScript Page"",. Retrieved ,20 November, 2013,., , +,^, ,CoffeeScript, ,Archived, 2012-04-27 at the ,Wayback Machine,.. Jashkenas.github.com. Retrieved on 2013-07-21., +,^, ,Sta Cruz, Rico. ,""js2coffee"",. Retrieved ,11 May, 2014,., , +,^, ,Wheeler, Dan; Mahkovec, Ziga; Varenhorst, Chris (13 September 2012). ,""Dropbox dives into CoffeeScript"",. Retrieved ,11 May, 2013,., , +,^, ,""JavaScript · Styleguide · GitHub"",. Github.com. ,Archived, from the original on 2013-08-15,. Retrieved ,2015-11-30,., , +,^, ,Atom source code,. github.com. Retrieved on 2015-07-22., +, +, +,Further reading,[,edit,], +, +,Lee, Patrick (May 14, 2014). ""CoffeeScript in Action"" (First ed.). ,Manning Publications,: 432. ,ISBN, ,978-1617290626,., , +,Grosenbach, Geoffrey (May 12, 2011). ""Meet CoffeeScript"" (First ed.). ,PeepCode,., , +,Bates, Mark (May 31, 2012). ""Programming in CoffeeScript"" (First ed.). ,Addison-Wesley,: 350. ,ISBN, ,0-321-82010-X,., , +,MacCaw, Alex (January 31, 2012). ""The Little Book on CoffeeScript"" (First ed.). ,O'Reilly Media,: 62. ,ISBN, ,978-1449321055,., , +,Burnham, Trevor (August 3, 2011). ""CoffeeScript: Accelerated JavaScript Development"" (First ed.). ,Pragmatic Bookshelf,: 138. ,ISBN, ,978-1934356784,., , +, +,External links,[,edit,], +, +,Official website, +, +, +, +, +, +, +, +,v, +,t, +,e, +, +, +,Programming languages, +, +, +, +, +, +, +,Comparison, +,Timeline, +,History, +, +, +, +, +, +, +, +, +,Assembly, +,BASIC, +,C, +,C++, +,C#, +,COBOL, +,Fortran, +,Go, +,Groovy, +,Haskell, +,Java, +,JavaScript, (JS), +,Kotlin, +,Lisp, +,Lua, +,Objective-C, +,Pascal, +,Perl, +,PHP, +,Python, +,Rexx, +,Ruby, +,Shell, +,Smalltalk, +,Swift, +,Visual Basic .NET, (VB.NET), +,VBScript, +,more..., +, +, +, +, +, +, +, +, +, ,Category, +, ,Lists, +, +,Alphabetical, +,Categorical, +,Generational, +,Non-English-based, +, +, +, +, +, +, +, +, +, +, +, +, +, +, +,v, +,t, +,e, +, +, +,JavaScript, +, +, +, +,Code analysis, +, +, +, +,JSHint, +,JSLint, +, +, +, +, +, +,Transcompilers, +, +, +, +,CoffeeScript, +,Dart, +,Emscripten, +,Google Closure Compiler, +,Google Web Toolkit, +,Morfik, +,TypeScript, +,AtScript, +,Opa, +,Haxe, +,ClojureScript, +, +, +, +, +, +,Concepts, +, +, +, +,Ajax, +,Client-side, +,Dynamic HTML, +,JavaScript library, +,JavaScript syntax, +,Unobtrusive JavaScript, +, +, +, +, +, +,Debuggers, +, +, +, +,Firebug, +,Komodo IDE, +,Microsoft Script Debugger, +,Microsoft Script Editor, +,Opera Dragonfly, +,Venkman, +,Web Inspector, +, +, +, +, +, +,Doc generators, +, +, +, +,JSDoc, +, +, +, +, +, +,Editors (,comparison,), +, +, +, +,Ace, +, +,Cloud9 IDE, +, +, +,Atom, +,CodeMirror, +, +,Light Table, +,Brackets, +, +, +,Koding, +,Orion, +,Visual Studio, +, +,Visual Studio Express, +, +, +,Visual Studio Code, +,Visual Studio Team Services, +, +, +, +, +, +,Engines, +, +, +, +,Comparison of layout engines, +,List of ECMAScript engines, +,List of JavaScript engines, +, +, +, +, +, +,Frameworks, +, +, +, +,Comparison of JavaScript frameworks, +,List of JavaScript libraries, +, +, +, +, +, +,Related ,technologies, +, +, +, +,Cascading Style Sheets, +,Document Object Model, +,HTML, +,JSON, +,WebAssembly, +, +, +, +, +, +,Package managers, +, +, +, +,npm, +,NuGet, +, +, +, +, +, +,Server-side, +, +, +, +,Active Server Pages, +,CommonJS, +,JSGI, +,Node.js, +,Wakanda, +, +, +, +, +, +,Unit testing, +, +, +, +,Jasmine, +,Mocha, +,QUnit, +,List of JavaScript unit testing frameworks, +, +, +, +, +, +,People, +, +, +, +,Douglas Crockford, +,Brendan Eich, +,John Resig, +, +, +, +, +, +, +, +, +, +, +, +, +,v, +,t, +,e, +, +, +,Node.js, +, +, +, +,Platform, +, +, +, +,Node.js, +,NPM, +,V8, +,CommonJS, +, +, +, +, +, +, +, +, +,Frameworks, +, +, +, +,MEAN, +, +,MongoDB, +,Express.js, +,AngularJS,/,Angular, +, +, +,MEEN (substituted with ,Ember.js,), +,Backbone.js, +,Meteor, +, +, +, +, +, +,Libraries, +, +, +, +,Lodash, +,Underscore.js, +,React.js, +, +, +, +, +, +,Languages, +, +, +, +,JavaScript, +,CoffeeScript, +,TypeScript, +, +, +, +, +, +,Hosts, +, +, +, +,Joyent, +,Nodejitsu, +,OpenShift, +,Linode, +,DigitalOcean, +, +, +, +, +, +, + + +, +, +, +, +",CoffeeScript +" 25 November 2017, at 19:53."," +,IBM i, +, +, +, +, +,Developer, +,IBM, +, +, +,Working state, +,Current, +, +, +,Source model, +,Closed source, +, +, +,Initial release, +,1988, +, +, +,Latest release, +,7.3 / April 15, 2016,; 20 months ago, (,2016-04-15,), +, +, +,Marketing target, +,Minicomputer and enterprise server, +, +, +,Available in, +,English, +, +, +,Kernel, type, +,shares many ,Microkernel, (SLIC) and ,Virtual machine, (TIMI) design philosophies, +, +, +,License, +,Proprietary, +, +, +,Official website, +,IBM i, +, +, +, +, +, +, +The logo for i5/OS, +, +, +,IBM i, is an ,operating system, that runs on ,IBM Power Systems, and on IBM ,PureSystems,. It was named ,OS/400, when it was introduced with the ,AS/400, line of computer systems in 1988, was later renamed to ,i5/OS,, and was renamed to IBM i in 2008 when the IBM Power Systems were introduced., +,It is one of the operating systems supported on IBM Power Systems alongside ,AIX, and ,Linux, as well as on IBM PureSystems alongside AIX, Linux and ,Windows,., +, +, +, +,Contents, +, +, +,1, ,History, +,2, ,Features, +, +,2.1, ,PASE, +, +, +,3, ,Version, +,4, ,See also, +,5, ,User groups, +,6, ,References, +,7, ,External links, +, +, +, +,History,[,edit,], +,The early ,IBM System/36, and ,IBM System/38, series customers were a key target of the AS/400, so OS/400 (and its descendants i5/OS and IBM i), have built-in subsystems that provide backward compatibility with these earlier IBM general business systems. IBM i programs, like System/38 programs before them, contain both processor-independent ""virtual"" binary code and processor-dependent executable binary code. Compilers for IBM i produce the processor-independent code as their output; the operating system automatically translates the processor-independent code into the processor-dependent code as needed, without the need for source code or attention by IT personnel. Notably, when migrating from a legacy processor, the only effect that most organizations notice is that the program runs somewhat longer when it runs for the first time on the new computer. Migration consists of taking a backup from the old computer, and restoring it on the new.,[1], +,Features,[,edit,], +,IBM designed IBM i as a "",turnkey,"" operating system, requiring little or no on-site attention from IT staff during normal operation. For example, IBM i has a built-in ,DB2, database which does not require separate installation. Disks are multiply redundant, and can be replaced on line without interrupting work. Hardware and software maintenance tasks are integrated. System administration has been ,wizard,-driven for years, even before that term was defined. This automatic self-care policy goes so far as to automatically schedule all common system maintenance, detect many failures and even order spare parts and service automatically. Organizations using i sometimes have ,sticker shock, when confronting the cost of system maintenance on other systems.,[1], +,Another peculiar feature is that this system was one of the earliest to be ,object-based,. Unlike traditional OSes like UNIX and Windows NT there are no files, only objects of different types. It implemented one of the earliest-known systems for persistent objects. Further, the objects persist in very large, flat virtual memory, called a ,single-level store,.,[1], +,The IBM i Access licensed product includes ,iSeries Navigator,, a client-based and web-based graphical tool for administration of the system, database, ,Apache web server,, and ,WebSphere Application Server,. IBM Systems Director Navigator for i now can be used to manage target servers running IBM i 5.4, 6.1 or 7.1 from a single browser environment with the IBM i 7.1., +,In 1999, IBM introduced ,logical partitioning (LPARs), with i5/OS to support multiple virtual systems on a single hardware footprint., +,In 2007, IBM and ,MySQL AB, ,announced a joint technology and reseller agreement, to bring support for the ,MySQL, open source database and ,DB2 for i as a certified MySQL storage engine, to the IBM i platform, which was ,later in 2011 dropped, by ,MySQL AB,., +,In 2011, IBM and ,Zend Technologies, announced ,Zend DBi, as replacement for the ,MySQL on IBM i support, with a first ,General availability release, in 2012., +,In 2013, IBM and ,PowerRuby Inc., announced ,PowerRuby, as a commercially supported port of the ,Ruby programming language, and the ,Ruby on Rails, ,Web application framework, for IBM i. ,PowerRuby, will be offered as a free download to be installed on customer machines., +,In 2014, IBM ported ,Node.js, to IBM i.,[2], +,PASE,[,edit,], +,IBM i also provides an environment for ,AIX, applications to run natively on the OS without the need for an AIX LPAR.,[3], +,AIX programs are binary compatible with IBM i when using its PASE (Portable Applications System Environment). PASE is essentially ""an operating system within an operating system"", supporting the most recent stable version of AIX. Most AIX 5L compatible binaries may be executed without modification or recompilation in the PASE environment. Exceptions to this are programs that contain direct calls to AIX kernel based APIs as there is no AIX kernel in PASE. If necessary an AIX program may be built directly in PASE using a standard AIX XL C/C++ compiler, for example if native APIs are to be used. In that case APIs are provided to translate between the AIX style pointers and the native 16 byte pointers. Support is provided for running both 32-bit and 64-bit AIX executables., +,Version,[,edit,], +,When IBM announced the new Power Systems line of servers on April 2, 2008, they renamed the operating system from i5/OS to IBM i,[4], and changed the version identifier format from VxRxMx (Version, Release, Modification, e.g. V6R1M0) to the more standard format (e.g. 6.1)., +,The latest version of IBM i is 7.3, announced on April 12, 2016 and released on April 15, 2016 (,Version Support Schedule,)., +,With 7.1, IBM started delivering new updates to the operating system via Technology Refreshes, where number 10 was released in May 2015., +,Version 7.2 was released in May 2014.,[5], +,Version 7.3 was released in April 2016.,[6], +,See also,[,edit,], +, +,Auxiliary storage pool, +,Multics, for a considerably earlier system which provided persistent objects, +, +,User groups,[,edit,], +,User groups have played a major part in the evolution of the IBM i. The largest such group is ,COMMON,.,[7], The Large User Group (LUG),,[8], whose membership consists of major corporations, is a major influence for current and future development of IBM i. The ,Young i Professionals, (YIPS),[9], is another group that has been significant in influencing the direction of the IBM i., +,References,[,edit,], +, +, +,^ ,a, ,b, ,c, ,Soltis, Frank, ""Inside the AS/400""; Frank Soltis was the AS/400 system architect., +,^, ,""Node.js"",. ,IBM i Technology Updates - Open Source Technologies,., , +,^, ,""IBM PASE for i"",. ,IBM,., , +,^, ,IBM Introduces the First in a New Generation of Power Systems, +,^, ,""Planned Availability Date"",. ,IBM i 7.2 TR3 and IBM i 7.1 TR11 offer performance, usability, and integration enhancements,., , +,^, ,""IBM i 7.3"",. ,IBM i 7.3 can deliver significant client value for database and security, and support for industry-leading workloads like analytics and mobile computing,., , +,^, ,""COMMON"",. COMMON,. Retrieved ,2013-11-13,., , +,^, ,""LUG"",. LUG,. Retrieved ,2017-02-09,., , +,^, ,""Young i Professionals (YIPS)"",. YIPS,. Retrieved ,2013-11-13,., , +, +, +,External links,[,edit,], +, +,IBM i, at ,ibm.com, +,IBM Systems IBM i Magazine, +,IBM developerWorks: Articles, tutorials, and technical resources for IBM i users, +,IBM i Wiki: A collaborative environment for the sharing of technical information related to IBM i, +,IBM developerWorks Article: New to IBM i, +,OS/400 commands, +,OS/400 CL (Control Language), +, +, +, +, +, +, +, +,v, +,t, +,e, +, +, +,Operating systems, by ,IBM, +, +, +, +,Desktop / Workstation, +, +, +, +,OS/2, +,PC DOS, +,AOS, +,AIX, +, +, +, +, +, +,Server / Mainframe, +, +, +, +,IBSYS, +,BOS/360, +,TOS/360, +,TSS/360, +,DOS/360 and successors, +, +,VSE, +, +, +,OS/360 and successors, +, +,OS/VS1, +,SVS, +,MVS, +,OS/390, +,z/OS, +, +, +,VM line, +,ACP, +,TPF, +,CPF, +,IBM i, +,AIX, +,zLinux, +,DPCX, +,DPPX, +,SSP, +,SRTOS, +, +, +, +, +, +,Point of Sale, +, +, +, +,4680 OS, +,4690 OS, +, +, +, +, +, +,Projects, +, +, +, +,Taligent, +,Workplace OS, +,Project Monterey, +,Project Trillian, +,K42, +, +, +, +, +, +, + + +, +, +, +, +",IBM i +" 16 July 2017, at 19:28."," +, +, +, +, +, +,The topic of this article ,may not meet Wikipedia's ,notability guidelines for products and services,. ,Please help to establish notability by citing ,reliable secondary sources, that are ,independent, of the topic and provide significant coverage of it beyond its mere trivial mention. If notability cannot be established, the article is likely to be ,merged,, ,redirected,, or ,deleted,., +,Find sources:, ,""Mod ruby"", – ,news, ,·, ,newspapers, ,·, ,books, ,·, ,scholar, ,·, ,JSTOR, ,(August 2014), ,(,Learn how and when to remove this template message,), +, +, +, +, +, +, +, +, +, +,This article ,may rely excessively on sources too closely associated with the subject,, potentially preventing the article from being ,verifiable, and ,neutral,. ,Please help ,improve it, by replacing them with more appropriate ,citations, to ,reliable, independent, third-party sources,., ,(August 2014), ,(,Learn how and when to remove this template message,), +, +, +, +, +,mod_ruby, +, +, +, +, +,Stable release, +, +,1.3.0 / November 8, 2008,; 9 years ago, (,2008-11-08,), +, +, +, +, +, +, +,Repository, +, +, +, +,https://github.com/shugo/mod_ruby, +, +, +, +, +, +,Website, +,www,.modruby,.net, +, +, +,mod_ruby, is a module that ,embeds, the ,Ruby, ,interpreter, into the ,Apache web server, to allow Ruby code to execute natively, faster than other ,CGI, methods. Its drawback is that the characteristic sharing of classes among Apache processes is not safe for multiple applications,[1], (e.g., multiple ,Ruby on Rails, applications running simultaneously)., +,There is also the similar ,mod_mruby, for ,mruby,, a lightweight Ruby implementation., +,As of at least 2015, the project seems to no longer be under active development., +,See also,[,edit,], +, +,Phusion Passenger (mod_rails/mod_rack), +,mod_perl, +,mod_php, +,mod_python, +,mod_wsgi, +, +,Notes,[,edit,], +, +, +, +,^, ,[,dead link,],mod_ruby Wiki,, explaining the security problem of mod_ruby., +, +, +, +,External links,[,edit,], +, +,mod_ruby project, +,No True “mod_ruby” Is Damaging Ruby’s Viability On The Web, +, +, +, +, +, +, +, +,v, +,t, +,e, +, +, +,Web interfaces, +, +, +, +,Server-side, +, +, +, +, +,Protocols, +, +, +, +,HTTP, +,CGI, +,SCGI, +,FCGI, +,AJP, +,WSRP, +,WebSocket, +, +, +, +, +, +,Server APIs, +, +, +, +,C NSAPI, +,C ASAPI, +,C ISAPI, +,COM ASP, +,Java servlet, +, +,container, +, +, +,CLI OWIN, +,ASP.NET Handler, +,Python WSGI, +,Ruby Rack, +,JavaScript JSGI, +,Perl PSGI, +,Lua WSAPI, +,Portlet, +, +,container, +, +, +, +, +, +, +, +,Apache modules, +, +, +, +,mod_jk, +,mod_lisp, +,mod_mono, +,mod_parrot, +,mod_perl, +,mod_php, +,mod_proxy, +,mod_python, +,mod_wsgi, +,mod_ruby, +,Phusion Passenger, +, +, +, +, +, +,Topics, +, +, +, +,Web resource, vs. ,Web service, +,Open API, +,Webhook, +,Application server, +, +,comparison, +, +, +,Scripting, +, +, +, +, +, +, +, +, +,Client-side, +, +, +, +, +,Browser APIs, +, +, +, +,C NPAPI, +, +,LiveConnect, +,XPConnect, +, +, +,C NPRuntime, +,C PPAPI, +, +,NaCl, +, +, +,ActiveX, +,BHO, +,XBAP, +,WebAssembly, +, +, +, +, +, +,Web APIs, +, +, +, +, +,W3C, +, +, +, +,Audio, +,Canvas, +,CORS, +,DOM, +,DOM events, +,EME, +,File, +,Geolocation, +,IndexedDB, +,MSE, +,SSE, +,SVG, +,Video, +,WebRTC, +,WebSocket, +,Web messaging, +,Web storage, +,Web worker, +,XMLHttpRequest, +, +, +, +, +, +,Khronos, +, +, +, +,WebCL, +,WebGL, +, +, +, +, +, +,Others, +, +, +, +,Gears, +,Web SQL Database, (formerly W3C), +, +, +, +, +, +, +, +, +,Topics, +, +, +, +,Ajax, vs. ,DHTML, +,Mashup, +,Web IDL, +,Scripting, +, +, +, +, +, +, +, +, +,Topics, +, +, +, +,Dynamic web page, +,Open Web Platform, +,Rich Internet application, +,Web application, +, +, +, +, +, +, +, +, +, +, +, +, +,v, +,t, +,e, +, +, +,Ruby programming language, +, +, +, +,Implementations, +, +, +, +, +,Active, +, +, +, +,Ruby MRI, / ,YARV, +,mruby, +,JRuby, +,Rubinius, +,MagLev, +,RubyMotion, +, +, +, +, +, +,Discontinued, +, +, +, +,MacRuby, +,IronRuby, +,XRuby, +,RubyJS, +,HotRuby, +, +, +, +, +, +, +, +, +, +, +, +,IDE, +, +, +, +,Komodo, +,NetBeans, +,RadRails, +,RubyMine, +, +, +, +, +, +,Applications, +, +, +, +,Capistrano, +,Chef, +,Hackety Hack, +,Homebrew, +,Interactive Ruby Shell, +,Pry, +,Puppet, +,Rake, +,Redmine, +,RSpec, +,RubyGems, +,RVM, +, +, +, +, +, +,Libraries and frameworks, +, +, +, +,Adhearsion, +,Camping, +,eRuby, (RHTML), +,Merb, +,Padrino, +,RubyCocoa, +,Ruby on Rails, +,Shoes, +,Sinatra, +,QtRuby, +, +, +, +, +, +,Server software, +, +, +, +,mod_ruby, +,Mongrel, +,Phusion Passenger, (mod_rails/mod_rack), +,Rack, +,WEBrick, +, +, +, +, +, +,People, +, +, +, +,Yukihiro Matsumoto, +,David Heinemeier Hansson, +,why the lucky stiff, +, +, +, +, +, +,Other, +, +, +, +,Document format, +,why's (poignant) Guide to Ruby, +,Ruby Central, +,RubyKaigi, +,RubyForge, +,Ruby License, +, +, +, +, +, +, +, +, +, ,Category, +, ,Commons, +, +, +, +, +, +, +, +, +, +,This ,programming-language,-related article is a ,stub,. You can help Wikipedia by ,expanding it,., +, +, +,v, +,t, +,e, +, +, +, +, +, + + +, +, +, +, +",mod_ruby +" 15 December 2017, at 10:41.","""FCGI"" redirects here. FCGI may also refer to a fellow of the ,City and Guilds of London Institute,., +, +, +, +, +, +, +,This article includes a ,list of references,, but ,its sources remain unclear, because it has ,insufficient ,inline citations,. ,Please help to ,improve, this article by ,introducing, more precise citations., ,(June 2010), ,(,Learn how and when to remove this template message,), +, +, +, +,FastCGI, is a ,binary protocol, for interfacing interactive programs with a ,web server,. FastCGI is a variation on the earlier ,Common Gateway Interface, (CGI); FastCGI's main aim is to reduce the overhead associated with interfacing the web server and ,CGI, programs, allowing a server to handle more web page requests at once., +, +, +, +,Contents, +, +, +,1, ,History, +,2, ,Implementation details, +,3, ,Web Servers that implement FastCGI, +,4, ,Language bindings for the FastCGI API, +,5, ,References, +,6, ,External links, +, +, +, +,History,[,edit,], +,CGI is a protocol for interfacing external applications to web servers. CGI applications run in separate ,processes,, which are created at the start of each request and torn down at the end. This ""one new process per request"" model makes CGI programs very simple to implement, but limits efficiency and scalability. At high loads, the operating system process creation and destruction overhead becomes significant. In addition, the CGI process model limits resource reuse techniques (such as reusing database connections, in-memory caching, etc.)., +,To address the scalability shortcomings of CGI, ,Open Market, developed FastCGI and first introduced it in their webserver product in the mid-1990s. Open Market originally developed FastCGI in part as a competitive response to ,Netscape's, proprietary, in-process API (,NSAPI,) for developing Web applications., +,Although initially developed by ,Open Market,, FastCGI was implemented by a number of other webserver makers. The FastCGI approach, however, competed against other techniques which also aimed to speed and simplify server-subprogram communications. ,Apache, modules such as ,mod_perl, and ,mod_php, appeared around the same time, and they also quickly gained popularity. Today, all of these various approaches (including CGI) remain in common use., +,Implementation details,[,edit,], +,Instead of creating a new process for each request, FastCGI uses persistent processes to handle a series of requests. These processes are owned by the FastCGI server, not the web server. ,[1], +,To service an incoming request, the web server sends ,environment information, and the page request itself to a FastCGI process over either a ,Unix domain socket,, a ,named pipe, or a ,TCP connection,. Responses are returned from the process to the web server over the same connection, and the web server subsequently delivers that response to the end-user. The connection may be closed at the end of a response, but both the web server and the FastCGI service processes persist.,[2], +,Each individual FastCGI process can handle many requests over its lifetime, thereby avoiding the overhead of per-request process creation and termination. Processing of multiple requests simultaneously can be achieved in several ways: by using a single connection with internal multiplexing (i.e. multiple requests over a single connection); by using multiple connections; or by a combination of these techniques. Multiple FastCGI servers can be configured, increasing stability and scalability., +,Web site administrators and programmers can find that the separation of web applications from the web server in FastCGI has many advantages over embedded interpreters (,mod_perl,, ,mod_php,, etc.). This separation allows server and application processes to be restarted independently – an important consideration for busy web sites. It also enables the implementation of per-application / hosting service security policies, which is an important requirement for ISPs and web hosting companies.,[3], Different types of incoming requests can be distributed to specific FastCGI servers which have been equipped to handle those particular types of requests efficiently., +,Web Servers that implement FastCGI,[,edit,], +,See also: ,Comparison of web server software § Features, +, +,Note: unless stated, completeness of FastCGI implementation is unknown, +, +, +,Apache HTTP Server, ,(partial), +, +,Implemented by ,mod_fcgid,. This module used to be third-party, but was granted to the ,ASF, as an Apache HTTP Server subproject in 2009, shepherded by Chris Darroch.,[4], It only supports ,UNIX sockets,, no TCP sockets.,[5], +,A third-party module ,mod_fastcgi, is also being used. For a while, this module no longer compiled properly under Apache 2.4.x,,[6], although that problem has been solved with a fork of the original project.,[7], +,Multiplexing of requests through a single connection is prohibited by Apache 1.x design,,[8], so this isn't supported, +,In Apache 2.4, ,mod_proxy_fcgi, was added, supporting TCP FastCGI servers., +, +, +,Caddy ,[9], +,Cherokee,[10], +,Hiawatha,[11], +, +,Loadbalancing FastCGI support, +,Supports chrooted FastCGI servers, +, +, +,Jetty,[12], +,Kerio WebSTAR, +,Lighttpd,[13], +,LiteSpeed Web Server, +,Microsoft IIS,[14], +,Nginx, +,NaviServer, +,Oracle iPlanet Web Server, +,OpenBSD,'s ,httpd(8),[15], +,Open Market Web Server, +,Resin Application Server, +,Roxen Web Server, +,ShimmerCat web server,.,[16], +,Zeus Web Server, +, +,Language bindings for the FastCGI API,[,edit,], +,FastCGI can be implemented in any language that supports ,network sockets,. (Since ""FastCGI is a protocol, not an implementation,"" it is not tightly bound to any language at all.) ,APIs, exist,[17], for:, +, +,Ada,[18], +,Borland Delphi,/,Lazarus, ,FreePascal,[19], +,C, / ,C++, +,Chicken Scheme, +,Common Lisp,[20], +,D programming language, +,Eiffel,[21], +,Erlang (programming language), +,Go, +,Guile Scheme, +,Haskell, +,HP BASIC for OpenVMS, +,Java,[22],[12], +,Lua, +,node.js,[23], +,OCaml, +,Perl,[24], +,PHP, (via php-fpm, or ,HipHop for PHP,[25],), +,Python, +,REALbasic (REAL Studio),[26], +,Ruby, +,Rust,[27], +,SmallEiffel, +,Smalltalk,: ,FasTalk, and ,Dolphin Smalltalk, +,Tcl, +,WebDNA, +,Vala, (via C bindings), +, +,Recent frameworks such as ,Ruby on Rails,, ,Catalyst,, ,Django,, ,Kepler, and ,Plack, allow use with either the embedded interpreters (,mod_ruby,, ,mod_perl,, ,mod_python, or ,mod_lua,, for example), or FastCGI., +,References,[,edit,], +, +, +,^, ,""FastCGI Specification"",. Open Market, Inc. 1996. Archived from ,the original, on 19 January 2016., , +,^, ,""FastCGI:A High-Performance Web Server Interface"",. Open Market, Inc. 1996. Archived from ,the original, on 1 October 2010., , +,^, ,Paul Heinlein (1 November 1998). ,""FastCGI: Persistent Applications for Your Web Server"",. Linux Journal,. Retrieved ,4 October, 2010,., , +,^, ,FastCGI apache module mod_fcgid, +,^, ,Debian bug #450748: Please add support for TCP/IP FastCGI servers, +,^, ,Issues with Apache 2.4 and PHP-FPM, +,^, ,libapache-mod-fastcgi on Github, +,^, ,FastCGI – The Forgotten Treasure/ Section 2.3., +,^, ,Caddy User Guide – FastCGI, +,^, ,FastCGI for Cherokee, +,^, ,FastCGI HOWTO for Hiawatha, +,^ ,a, ,b, ,FastCGI Support in Jetty, +,^, ,FastCGI for Lighttpd, +,^, ,""FastCGI Extension for IIS6.0 - RTM"",. ,FastCGI for IIS,. Microsoft. 2008-02-28,. Retrieved ,2008-02-29,., , +,^, ,OpenBSD's httpd(8) initial commit, +,^, ,[1], +,^, ,Application Libraries / Development Kits, +,^, ,Matreshka, +,^, ,ExtPascal, +,^, ,How to use FastCGI from Common Lisp, +,^, ,Goanna Eiffel, +,^, ,jFastCGI, a Java Servlet implementing FastCGI protocol, +,^, ,node-fastcgi npm package, +,^, ,There are a number of FastCGI modules for Perl: ,FCGI, (a compiled module written in C), ,FCGI::Async, (for asynchronous FastCGI applications), ,AnyEvent::FCGI, (for ,AnyEvent,-based applications), ,FCGI::EV, (for ,EV,-based applications), ,CGI::Fast, (Perl ,CGI,-like interface for FastCGI), ,FCGI::Client, (a FastCGI client library), and ,Net::FastCGI, (constants and functions to build and parse FastCGI messages)., +,^, ,FasterCGI with HHVM, +,^, ,REAL Studio Web Edition, builds web apps called via FastCGI, ,Archived, 2011-02-08 at the ,Wayback Machine,., +,^, ,[2], +, +, +,External links,[,edit,], +, +,FastCGI specification, (site backup) +, +,Secondary backup, +, +, +,FastCGI Web Site fork, +,mod_fastcgi – FastCGI module fork for Apache 1.x and 2.x supporting external applications, +,mod_fcgid - a FastCGI module for Apache 2.x, +,Microsoft FastCGI, +,Apache v2.x mod_proxy FastCGI Module, +, +, +, +, +, +, +, +,v, +,t, +,e, +, +, +,Web interfaces, +, +, +, +,Server-side, +, +, +, +, +,Protocols, +, +, +, +,HTTP, +,CGI, +,SCGI, +,FCGI, +,AJP, +,WSRP, +,WebSocket, +, +, +, +, +, +,Server APIs, +, +, +, +,C NSAPI, +,C ASAPI, +,C ISAPI, +,COM ASP, +,Java servlet, +, +,container, +, +, +,CLI OWIN, +,ASP.NET Handler, +,Python WSGI, +,Ruby Rack, +,JavaScript JSGI, +,Perl PSGI, +,Lua WSAPI, +,Portlet, +, +,container, +, +, +, +, +, +, +, +,Apache modules, +, +, +, +,mod_jk, +,mod_lisp, +,mod_mono, +,mod_parrot, +,mod_perl, +,mod_php, +,mod_proxy, +,mod_python, +,mod_wsgi, +,mod_ruby, +,Phusion Passenger, +, +, +, +, +, +,Topics, +, +, +, +,Web resource, vs. ,Web service, +,Open API, +,Webhook, +,Application server, +, +,comparison, +, +, +,Scripting, +, +, +, +, +, +, +, +, +,Client-side, +, +, +, +, +,Browser APIs, +, +, +, +,C NPAPI, +, +,LiveConnect, +,XPConnect, +, +, +,C NPRuntime, +,C PPAPI, +, +,NaCl, +, +, +,ActiveX, +,BHO, +,XBAP, +,WebAssembly, +, +, +, +, +, +,Web APIs, +, +, +, +, +,W3C, +, +, +, +,Audio, +,Canvas, +,CORS, +,DOM, +,DOM events, +,EME, +,File, +,Geolocation, +,IndexedDB, +,MSE, +,SSE, +,SVG, +,Video, +,WebRTC, +,WebSocket, +,Web messaging, +,Web storage, +,Web worker, +,XMLHttpRequest, +, +, +, +, +, +,Khronos, +, +, +, +,WebCL, +,WebGL, +, +, +, +, +, +,Others, +, +, +, +,Gears, +,Web SQL Database, (formerly W3C), +, +, +, +, +, +, +, +, +,Topics, +, +, +, +,Ajax, vs. ,DHTML, +,Mashup, +,Web IDL, +,Scripting, +, +, +, +, +, +, +, +, +,Topics, +, +, +, +,Dynamic web page, +,Open Web Platform, +,Rich Internet application, +,Web application, +, +, +, +, +, +, + + +, +, +, +, +",FastCGI +" 11 January 2018, at 15:30.","This article is about the software interface between a web server and programs. For other uses, see ,CGI (disambiguation),., +,In ,computing,, ,Common Gateway Interface, (,CGI,) offers a standard ,protocol, for ,web servers, to execute programs that execute like ,Console applications, (also called ,Command-line interface programs,) running on a ,server, that ,generates web pages dynamically,. Such programs are known as ,CGI scripts, or simply as ,CGIs,. The specifics of how the script is executed by the server are determined by the server. In the common case, a CGI script executes at the time a request is made and generates HTML.,[1], In brief, the CGI program receives HTTP forms data via Unix/Linux standard input, and most other data (such as URL paths, URL arguments, and HTTP header data) via well-known Unix/Linux process environment variables., +, +, +, +,Contents, +, +, +,1, ,History, +,2, ,Purpose of the CGI standard, +,3, ,Using CGI scripts, +,4, ,Example, +,5, ,Deployment, +,6, ,Uses, +,7, ,Alternatives, +,8, ,See also, +,9, ,References, +,10, ,External links, +, +, +, +,History,[,edit,], +, +, +, +, +The official CGI logo from the spec announcement, +, +, +,In 1993 the ,National Center for Supercomputing Applications, (NCSA) team wrote the specification for calling command line executables on the www-talk mailing list.,[2],[3],[4], The other Web server developers adopted it, and it has been a standard for Web servers ever since. A work group chaired by ,Ken Coar, started in November 1997 to get the NCSA definition of CGI more formally defined.,[5], This work resulted in ,RFC 3875,, which specified CGI Version 1.1. Specifically mentioned in the RFC are the following contributors:,[6], +, +,Rob McCool, (author of the ,NCSA HTTPd, ,Web Server,), +,John Franks (author of the GN Web Server), +,Ari Luotonen, (the developer of the ,CERN httpd, Web Server), +,Tony Sanders (author of the Plexus Web Server), +,George Phillips (Web server maintainer at the ,University of British Columbia,), +, +,Historically CGI scripts were often written using the C language. ,RFC 3875, ""The Common Gateway Interface (CGI)"" partially defines CGI using C,,[7], as in saying that environment variables ""are accessed by the C library routine getenv() or variable environ""., +,Purpose of the CGI standard,[,edit,], +,Each ,web server, runs ,HTTP, server software, which responds to requests from ,web browsers,. Generally, the HTTP server has a ,directory (folder),, which is designated as a document collection — files that can be sent to Web browsers connected to this server.,[8], For example, if the Web server has the domain name ,example.com,, and its document collection is stored at ,/usr/local/apache/htdocs, in the local file system, then the Web server will respond to a request for ,http://example.com/index.html, by sending to the browser the (pre-written) file ,/usr/local/apache/htdocs/index.html,., +,For pages constructed on the fly, the server software may defer requests to separate programs and relay the results to the requesting client (usually, a web browser that displays the page to the end user). In the early days of the web, such programs were usually small and written in a scripting language; hence, they were known as ,scripts,., +,Such programs usually require some additional information to be specified with the request. For instance, if Wikipedia were implemented as a script, one thing the script would need to know is whether the user is logged in and, if logged in, under which name. The content at the top of a Wikipedia page depends on this information., +,HTTP provides ways for browsers to pass such information to the web server, e.g. as part of the URL. The server software must then pass this information through to the script somehow., +,Conversely, upon returning, the script must provide all the information required by HTTP for a response to the request: the HTTP status of the request, the document content (if available), the document type (e.g. HTML, PDF, or plain text), etcetera., +,Initially, different server software would use different ways to exchange this information with scripts. As a result, it wasn't possible to write scripts that would work unmodified for different server software, even though the information being exchanged was the same. Therefore, it was decided to establish a standard way for exchanging this information: CGI (the ,Common Gateway Interface,, as it defines a common way for server software to interface with scripts). Webpage generating programs invoked by server software that operate according to the CGI standard are known as ,CGI scripts,., +,This standard was quickly adopted and is still supported by all well-known server software, such as ,Apache,, ,IIS,, and (with an extension) ,node.js,-based servers., +,An early use of CGI scripts was to process forms. In the beginning of HTML, HTML forms typically had an ""action"" attribute and a button designated as the ""submit"" button. When the submit button is pushed the URI specified in the ""action"" attribute would be sent to the server with the data from the form sent as a query string. If the ""action"" specifies a CGI script then the CGI script would be executed and it then produces a HTML page., +,Using CGI scripts,[,edit,], +,A web server allows its owner to configure which URLs shall be handled by which CGI scripts., +,This is usually done by marking a directory within the document collection as containing CGI scripts — its name is often ,cgi-bin,. For example, ,/usr/local/apache/htdocs/cgi-bin, could be designated as a CGI directory on the web server. When a Web browser requests a URL that points to a file within the CGI directory (e.g., ,http://example.com/cgi-bin/printenv.pl/with/additional/path?and=a&query=string,), then, instead of simply sending that file (,/usr/local/apache/htdocs/cgi-bin/printenv.pl,) to the Web browser, the HTTP server runs the specified script and passes the output of the script to the Web browser. That is, anything that the script sends to ,standard output, is passed to the Web client instead of being shown on-screen in a terminal window., +,As remarked above, the CGI standard defines how additional information passed with the request is passed to the script. For instance, if a slash and additional directory name(s) are appended to the URL immediately after the name of the script (in this example, ,/with/additional/path,), then that path is stored in the ,PATH_INFO, ,environment variable, before the script is called. If parameters are sent to the script via an ,HTTP GET, request (a question mark appended to the URL, followed by param=value pairs; in the example, ,?and=a&query=string,), then those parameters are stored in the ,QUERY_STRING, environment variable before the script is called. If parameters are sent to the script via an ,HTTP POST, request, they are passed to the script's ,standard input,. The script can then read these environment variables or data from standard input and adapt to the Web browser's request.,[9], +,Example,[,edit,], +,The following ,Perl, program shows all the environment variables passed by the Web server:, +, +, +,#!/usr/bin/perl, + +,=head1 DESCRIPTION, + +,printenv — a CGI program that just prints its environment, + +,=cut, +,print, ,""Content-type: text/plain\n\n"",;, + +,for, ,my, ,$var, ,(, ,sort, ,keys, ,%ENV, ,), ,{, + ,printf, ,""%s = \""%s\""\n"",,, ,$var,,, ,$ENV,{,$var,};, +,}, +, +,If a Web browser issues a request for the environment variables at ,http://example.com/cgi-bin/printenv.pl/foo/bar?var1=value1&var2=with%20percent%20encoding,, a 64-bit ,Microsoft Windows, web server running ,cygwin, returns the following information:, +, +COMSPEC=""C:\Windows\system32\cmd.exe"" +DOCUMENT_ROOT=""C:/Program Files (x86)/Apache Software Foundation/Apache2.2/htdocs"" +GATEWAY_INTERFACE=""CGI/1.1"" +HOME=""/home/SYSTEM"" +HTTP_ACCEPT=""text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8"" +HTTP_ACCEPT_CHARSET=""ISO-8859-1,utf-8;q=0.7,*;q=0.7"" +HTTP_ACCEPT_ENCODING=""gzip, deflate"" +HTTP_ACCEPT_LANGUAGE=""en-us,en;q=0.5"" +HTTP_CONNECTION=""keep-alive"" +HTTP_HOST=""example.com"" +HTTP_USER_AGENT=""Mozilla/5.0 (Windows NT 6.1; WOW64; rv:5.0) Gecko/20100101 Firefox/5.0"" +PATH=""/home/SYSTEM/bin:/bin:/cygdrive/c/progra~2/php:/cygdrive/c/windows/system32:..."" +PATHEXT="".COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC"" +PATH_INFO=""/foo/bar"" +PATH_TRANSLATED=""C:\Program Files (x86)\Apache Software Foundation\Apache2.2\htdocs\foo\bar"" +QUERY_STRING=""var1=value1&var2=with%20percent%20encoding"" +REMOTE_ADDR=""127.0.0.1"" +REMOTE_PORT=""63555"" +REQUEST_METHOD=""GET"" +REQUEST_URI=""/cgi-bin/printenv.pl/foo/bar?var1=value1&var2=with%20percent%20encoding"" +SCRIPT_FILENAME=""C:/Program Files (x86)/Apache Software Foundation/Apache2.2/cgi-bin/printenv.pl"" +SCRIPT_NAME=""/cgi-bin/printenv.pl"" +SERVER_ADDR=""127.0.0.1"" +SERVER_ADMIN=""(server admin's email address)"" +SERVER_NAME=""127.0.0.1"" +SERVER_PORT=""80"" +SERVER_PROTOCOL=""HTTP/1.1"" +SERVER_SIGNATURE="""" +SERVER_SOFTWARE=""Apache/2.2.19 (Win32) PHP/5.2.17"" +SYSTEMROOT=""C:\Windows"" +TERM=""cygwin"" +WINDIR=""C:\Windows"" +, +,Some, but not all, of these variables are defined by the CGI standard. Some, such as ,PATH_INFO,, ,QUERY_STRING,, and the ones starting with ,HTTP_,, pass information along from the HTTP request., +,From the environment, it can be seen that the Web browser is ,Firefox, running on a ,Windows 7, PC, the Web server is ,Apache, running on a system that emulates ,Unix,, and the CGI script is named ,cgi-bin/printenv.pl,., +,The program could then generate any content, write that to ,standard output,, and the Web server will transmit it to the browser., +,The following are ,environment variables, passed to CGI programs:, +, +,Server specific variables:, +, +,SERVER_SOFTWARE,: ,name,/,version, of ,HTTP server,., +,SERVER_NAME,: ,host name, of the server, may be ,dot-decimal, IP address., +,GATEWAY_INTERFACE,: CGI/,version,., +, +, +,Request specific variables:, +, +,SERVER_PROTOCOL,: HTTP/,version,., +,SERVER_PORT,: ,TCP port, (decimal)., +,REQUEST_METHOD,: name of HTTP method (see above)., +,PATH_INFO,: path suffix, if appended to URL after program name and a slash., +,PATH_TRANSLATED,: corresponding ,full path, as supposed by server, if ,PATH_INFO, is present., +,SCRIPT_NAME,: relative path to the program, like ,/cgi-bin/script.cgi,., +,QUERY_STRING,: the part of URL after ,?, character. The ,query string, may be composed of *,name,=,value, pairs separated with ,ampersands, (such as ,var1,=,val1,&,var2,=,val2,...) when used to submit ,form, data transferred via GET method as defined by HTML ,application/x-www-form-urlencoded,., +,REMOTE_HOST,: host name of the client, unset if server did not perform such lookup., +,REMOTE_ADDR,: ,IP address, of the client (dot-decimal)., +,AUTH_TYPE,: identification type, if applicable., +,REMOTE_USER, used for certain ,AUTH_TYPE,s., +,REMOTE_IDENT,: see ,ident,, only if server performed such lookup., +,CONTENT_TYPE,: ,Internet media type, of input data if PUT or POST method are used, as provided via HTTP header., +,CONTENT_LENGTH,: similarly, size of input data (decimal, in ,octets,) if provided via HTTP header., +,Variables passed by user agent (,HTTP_ACCEPT,, ,HTTP_ACCEPT_LANGUAGE,, ,HTTP_USER_AGENT,, ,HTTP_COOKIE, and possibly others) contain values of corresponding ,HTTP headers, and therefore have the same sense., +, +, +, +,The program returns the result to the Web server in the form of standard output, beginning with a header and a ,blank line,., +,The header is encoded in the same way as an ,HTTP header, and must include the ,MIME type, of the document returned.,[10], The headers, supplemented by the Web server, are generally forwarded with the response back to the user., +,Here is a simple CGI program written in Python 2 along with the HTML that handles a simple addition problem.,[11], +, +, +,, +,<,html,>, + ,<,body,>, + ,<,form, ,action,=,""add.cgi"", ,method,=,""POST"",>, + Enter two numbers to add:,<,br, ,/>, + First Number: ,<,input, ,type,=,""text"", ,name,=,""num1"", ,/><,br, ,/>, + Second Number: ,<,input, ,type,=,""text"", ,name,=,""num2"", ,/><,br, ,/>, + ,<,input, ,type,=,""submit"", ,value,=,""Add"", ,/>, + ,, + ,, +,, +, +, +, +,#!/usr/bin/env python2, + +,import, ,cgi, +,import, ,cgitb, +,cgitb,.,enable,(), + +,input_data, ,=, ,cgi,.,FieldStorage,(), + +,print, ,'Content-Type:text/html', ,# HTML is following, +,print, ,# Leave a blank line, +,print, ,'

Addition Results

', +,try,:, + ,num1, ,=, ,int,(,input_data,[,""num1"",],.,value,), + ,num2, ,=, ,int,(,input_data,[,""num2"",],.,value,), +,except,:, + ,print, ,'

Sorry, we cannot turn your inputs into numbers (integers).

', + ,return, ,1, +,print, ,'

{0} + {1} = {2}

',.,format,(,num1,,, ,num2,,, ,num1, ,+, ,num2,), +, +,This Python 2 CGI gets the inputs from the HTML and adds the two numbers together., +,Deployment,[,edit,], +,A Web server that supports CGI can be configured to interpret a ,URL, that it serves as a reference to a CGI script. A common convention is to have a ,cgi-bin/, ,directory, at the base of the directory tree and treat all executable files within this directory (and no other, for security) as CGI scripts. Another popular convention is to use ,filename extensions,; for instance, if CGI scripts are consistently given the extension ,.cgi,, the web server can be configured to interpret all such files as CGI scripts. While convenient, and required by many prepackaged scripts, it opens the server to attack if a remote user can upload executable code with the proper extension.,[,citation needed,], +,In the case of ,HTTP PUT or POSTs,, the user-submitted data are provided to the program via the ,standard input,. The Web server creates a subset of the ,environment variables, passed to it and adds details pertinent to the HTTP environment., +,Uses,[,edit,], +,CGI is often used to process inputs information from the user and produce the appropriate output. An example of a CGI program is one implementing a ,Wiki,. The user agent requests the name of an entry; the Web server executes the CGI; the CGI program retrieves the source of that entry's page (if one exists), transforms it into ,HTML,, and prints the result. The web server receives the input from the CGI and transmits it to the user agent. If the ""Edit this page"" link is clicked, the CGI populates an HTML ,textarea, or other editing control with the page's contents, and saves it back to the server when the user submits the form in it., +,Alternatives,[,edit,], +,Calling a command generally means the invocation of a newly created ,process, on the server. Starting the process can consume much more time and memory than the actual work of generating the output, especially when the program still needs to be ,interpreted, or ,compiled,. If the command is called often, the resulting workload can quickly overwhelm the server., +,The ,overhead, involved in process creation can be reduced by techniques such as ,FastCGI, that ""prefork"" interpreter processes, or by running the application code entirely within the web server, using extension modules such as ,mod_perl, or ,mod_php,. Another way to reduce the overhead is to use precompiled CGI programs, e.g. by writing them in languages such as ,C, or ,C++,, rather than interpreted or compiled-on-the-fly languages such as ,Perl, or ,PHP,, or by implementing the page generating software as a custom webserver module., +,Alternative approaches include:, +, +,Extensions such as ,Apache modules,, ,NSAPI, plugins, and ,ISAPI, plugins allow third-party software to run on the web server., +,FastCGI, reduces overhead by allowing a single, long-running process to handle more than one user request. Unlike converting an application to a web server plug-in, FastCGI applications remain independent of the web server., +,Simple Common Gateway Interface, or SCGI is designed to be easier to implement, yet it reduces latency in some operations compared to CGI., +,Replacement of the architecture for dynamic websites can also be used. This is the approach taken by ,Java EE,, which runs Java code in a Java servlet container in order to serve dynamic content and optionally static content. This approach replaces the overhead of generating and destroying processes with the much lower overhead of generating and destroying ,threads,, and also exposes the programmer to the library that comes with ,Java Platform, Standard Edition, on which the version of Java EE in use is based., +, +,The optimal configuration for any Web application depends on application-specific details, amount of traffic, and complexity of the transaction; these tradeoffs need to be analyzed to determine the best implementation for a given task and time budget., +,See also,[,edit,], +, +,CGI.pm, +,FastCGI, +,Perl Web Server Gateway Interface, +,Rack (web server interface), +,Web Server Gateway Interface, +, +,References,[,edit,], +, +, +, +,^, ,RFC3875: The Common Gateway Interface (CGI) Version 1.1, +,^, ,Server Scripts,, by Rob McCool, ,www-talk, mailing list, Sun, 14 Nov 1993 19:24:47 -0600, +,^, ,The Common Gateway Interface,, archived from ,the original, on 2010-01-27, , +,^, ,CGI: Common Gateway Interface, at w3.org, +,^, ,""Common Gateway Interface RFC Project Page"",. Archived from ,the original, on 2013-08-25., , +,^, ,RFC3875: The Common Gateway Interface (CGI) Version 1.1, +,^, ,RFC3875: The Common Gateway Interface (CGI) Version 1.1, +,^, ,Mapping URLs to Filesystem Locations Apache HTTP Server Version 2.2, +,^, ,Nelson, Anne Fulcher, and Nelson, William Harris Morehead. (2001). Building Electronic Commerce with Web Database Constructions. Boston, MA: Addison Wesley., +,^, ,CGI Primer (Mirror at citycat.ru), +,^, ,""Abacles HTML Forms"",. ,www.abacles.com,. Retrieved ,2016-04-06,., , +, +, +, +,External links,[,edit,], +, +,GNU cgicc,, a C++ class library for writing CGI applications, +,CGI,, a standard Perl module for CGI request parsing and HTML response generation, +,CGI Programming 101: Learn CGI Today!,, a CGI tutorial, +, +, +, +, +, +, +, +,v, +,t, +,e, +, +, +,Web interfaces, +, +, +, +,Server-side, +, +, +, +, +,Protocols, +, +, +, +,HTTP, +,CGI, +,SCGI, +,FCGI, +,AJP, +,WSRP, +,WebSocket, +, +, +, +, +, +,Server APIs, +, +, +, +,C NSAPI, +,C ASAPI, +,C ISAPI, +,COM ASP, +,Java servlet, +, +,container, +, +, +,CLI OWIN, +,ASP.NET Handler, +,Python WSGI, +,Ruby Rack, +,JavaScript JSGI, +,Perl PSGI, +,Lua WSAPI, +,Portlet, +, +,container, +, +, +, +, +, +, +, +,Apache modules, +, +, +, +,mod_jk, +,mod_lisp, +,mod_mono, +,mod_parrot, +,mod_perl, +,mod_php, +,mod_proxy, +,mod_python, +,mod_wsgi, +,mod_ruby, +,Phusion Passenger, +, +, +, +, +, +,Topics, +, +, +, +,Web resource, vs. ,Web service, +,Open API, +,Webhook, +,Application server, +, +,comparison, +, +, +,Scripting, +, +, +, +, +, +, +, +, +,Client-side, +, +, +, +, +,Browser APIs, +, +, +, +,C NPAPI, +, +,LiveConnect, +,XPConnect, +, +, +,C NPRuntime, +,C PPAPI, +, +,NaCl, +, +, +,ActiveX, +,BHO, +,XBAP, +,WebAssembly, +, +, +, +, +, +,Web APIs, +, +, +, +, +,W3C, +, +, +, +,Audio, +,Canvas, +,CORS, +,DOM, +,DOM events, +,EME, +,File, +,Geolocation, +,IndexedDB, +,MSE, +,SSE, +,SVG, +,Video, +,WebRTC, +,WebSocket, +,Web messaging, +,Web storage, +,Web worker, +,XMLHttpRequest, +, +, +, +, +, +,Khronos, +, +, +, +,WebCL, +,WebGL, +, +, +, +, +, +,Others, +, +, +, +,Gears, +,Web SQL Database, (formerly W3C), +, +, +, +, +, +, +, +, +,Topics, +, +, +, +,Ajax, vs. ,DHTML, +,Mashup, +,Web IDL, +,Scripting, +, +, +, +, +, +, +, +, +,Topics, +, +, +, +,Dynamic web page, +,Open Web Platform, +,Rich Internet application, +,Web application, +, +, +, +, +, +, + + +, +, +, +, +",Common Gateway Interface +" 8 January 2018, at 10:46."," +,Phusion Passenger, +, +,Developer(s), +,Phusion, +, +, +, +, +, +,Stable release, +, +,5.1.12,[1], / 23 November 2017,; 55 days ago, (,2017-11-23,), +, +, +, +, +, +, +,Repository, +, +, +, +,https://github.com/phusion/passenger/, +, +, +, +, +, +,Development status, +,Actively developed, +, +, +,Written in, +,C++, and ,Ruby,[2], +, +, +,License, +,MIT License, +, +, +,Website, +,phusionpassenger.com, +, +, +,Phusion Passenger, (informally also known as ,mod_rails, and ,mod_rack, among the Ruby community) is a ,free, web server and application server with support for ,Ruby,, ,Python, and ,Node.js,. It is designed to integrate into the ,Apache HTTP Server, or the ,nginx, web server, but also has a mode for running standalone without an external web server.,[3], Phusion Passenger supports ,Unix-like, operating systems, and is available as a ,gem package,, as a tarball, or as native Linux packages., +,Originally designed for web applications built on the ,Ruby on Rails, framework, it was later extended to support arbitrary Ruby web frameworks through ,the Rack interface,. Later versions also added support for Python through ,the WSGI interface,, as well as support for Node.js.,[4], In 2012, Phusion announced ,Phusion Passenger Enterprise,, a paid, commercial variant of Phusion Passenger with ""a wide array of premium features"".,[5], Phusion has stated that the open source variant will continue to be developed and maintained along with the Enterprise variant., +,Phusion Passenger is the ""preferred deployment setup"" for Ruby on Rails applications,,[6], and has been recommended by the Ruby on Rails authors.,[7],[8], In combination with Ruby 2.0, or with the now-discontinued ,Ruby Enterprise Edition,, Phusion Passenger claims that it is capable of reducing Rails's memory consumption by 33% as well as increasing its performance.,[9], +,See also,[,edit,], +, +,mod_ruby, +, +,References,[,edit,], +, +, +, +,^, ,Knoppel, Daniel (2017-11-23). ,""Passenger 5.1.12: Ubuntu 17.10, Nginx 1.12.2, new queue limit feature, fixes"",. Retrieved ,2018-01-08,., , +,^, ,""Passenger Library, In-depth: Lightweight Ruby dependency"",. Phusion,. Retrieved ,2016-07-14,., , +,^, ,""Phusion Passenger goes fourth"",. The H,. Retrieved ,26 February, 2015,., , +,^, ,""Phusion Passenger Node.js quickstart"",. Phusion,. Retrieved ,2013-07-15,., , +,^, ,""Phusion Passenger Enterprise released"",. Phusion. 2012-08-01,. Retrieved ,2013-07-15,., , +,^, ,""Deploy"",. Ruby on Rails,. Retrieved ,2009-07-03,., , +,^, ,""Myth #1: Rails is hard to deploy"",. Loudthinking.com. 2008-11-13,. Retrieved ,2009-07-03,., , +,^, ,""Koz Speaks — Random Musings on Technology"",. Koziarski.net,. Retrieved ,2009-07-03,., , +,^, ,""Performance and memory usage comparisons — Ruby Enterprise Edition"",. Rubyenterpriseedition.com,. Retrieved ,2013-07-15,., , +, +, +, +,External links,[,edit,], +, +,Phusion Passenger website, +,Phusion Passenger Enterprise, +,GitHub repository, +,Rack, +,Ruby Enterprise Edition, +, +, +, +, +, +, +, +,v, +,t, +,e, +, +, +,Web interfaces, +, +, +, +,Server-side, +, +, +, +, +,Protocols, +, +, +, +,HTTP, +,CGI, +,SCGI, +,FCGI, +,AJP, +,WSRP, +,WebSocket, +, +, +, +, +, +,Server APIs, +, +, +, +,C NSAPI, +,C ASAPI, +,C ISAPI, +,COM ASP, +,Java servlet, +, +,container, +, +, +,CLI OWIN, +,ASP.NET Handler, +,Python WSGI, +,Ruby Rack, +,JavaScript JSGI, +,Perl PSGI, +,Lua WSAPI, +,Portlet, +, +,container, +, +, +, +, +, +, +, +,Apache modules, +, +, +, +,mod_jk, +,mod_lisp, +,mod_mono, +,mod_parrot, +,mod_perl, +,mod_php, +,mod_proxy, +,mod_python, +,mod_wsgi, +,mod_ruby, +,Phusion Passenger, +, +, +, +, +, +,Topics, +, +, +, +,Web resource, vs. ,Web service, +,Open API, +,Webhook, +,Application server, +, +,comparison, +, +, +,Scripting, +, +, +, +, +, +, +, +, +,Client-side, +, +, +, +, +,Browser APIs, +, +, +, +,C NPAPI, +, +,LiveConnect, +,XPConnect, +, +, +,C NPRuntime, +,C PPAPI, +, +,NaCl, +, +, +,ActiveX, +,BHO, +,XBAP, +,WebAssembly, +, +, +, +, +, +,Web APIs, +, +, +, +, +,W3C, +, +, +, +,Audio, +,Canvas, +,CORS, +,DOM, +,DOM events, +,EME, +,File, +,Geolocation, +,IndexedDB, +,MSE, +,SSE, +,SVG, +,Video, +,WebRTC, +,WebSocket, +,Web messaging, +,Web storage, +,Web worker, +,XMLHttpRequest, +, +, +, +, +, +,Khronos, +, +, +, +,WebCL, +,WebGL, +, +, +, +, +, +,Others, +, +, +, +,Gears, +,Web SQL Database, (formerly W3C), +, +, +, +, +, +, +, +, +,Topics, +, +, +, +,Ajax, vs. ,DHTML, +,Mashup, +,Web IDL, +,Scripting, +, +, +, +, +, +, +, +, +,Topics, +, +, +, +,Dynamic web page, +,Open Web Platform, +,Rich Internet application, +,Web application, +, +, +, +, +, +, +, +, +, +, +, +, +,v, +,t, +,e, +, +, +,Ruby programming language, +, +, +, +,Implementations, +, +, +, +, +,Active, +, +, +, +,Ruby MRI, / ,YARV, +,mruby, +,JRuby, +,Rubinius, +,MagLev, +,RubyMotion, +, +, +, +, +, +,Discontinued, +, +, +, +,MacRuby, +,IronRuby, +,XRuby, +,RubyJS, +,HotRuby, +, +, +, +, +, +, +, +, +, +, +, +,IDE, +, +, +, +,Komodo, +,NetBeans, +,RadRails, +,RubyMine, +, +, +, +, +, +,Applications, +, +, +, +,Capistrano, +,Chef, +,Hackety Hack, +,Homebrew, +,Interactive Ruby Shell, +,Pry, +,Puppet, +,Rake, +,Redmine, +,RSpec, +,RubyGems, +,RVM, +, +, +, +, +, +,Libraries and frameworks, +, +, +, +,Adhearsion, +,Camping, +,eRuby, (RHTML), +,Merb, +,Padrino, +,RubyCocoa, +,Ruby on Rails, +,Shoes, +,Sinatra, +,QtRuby, +, +, +, +, +, +,Server software, +, +, +, +,mod_ruby, +,Mongrel, +,Phusion Passenger, (mod_rails/mod_rack), +,Rack, +,WEBrick, +, +, +, +, +, +,People, +, +, +, +,Yukihiro Matsumoto, +,David Heinemeier Hansson, +,why the lucky stiff, +, +, +, +, +, +,Other, +, +, +, +,Document format, +,why's (poignant) Guide to Ruby, +,Ruby Central, +,RubyKaigi, +,RubyForge, +,Ruby License, +, +, +, +, +, +, +, +, +, ,Category, +, ,Commons, +, +, +, +, +, +, + + +, +, +, +, +",Phusion Passenger + Эта страница последний раз была отредактирована 25 сентября 2017 в 09:42.,"«,Великодушный пожизненный диктатор,» (,англ., ,Benevolent Dictator For Life,, сокр. ,BDFL,) — в контексте разработки ,свободного ПО,, полуюмористический термин, обозначающий главу или основателя проекта, который сохраняет за собой право принимать окончательные решения. Впервые термин использовался по отношению к ,Гвидо ван Россуму,, создателю языка ,Python,[1],[2],., +,В своем эссе «,Заселяя ноосферу,[en],» ,Эрик Рэймонд,, в частности, обсуждает феномен «великодушной диктатуры» в сообществе свободного ПО. Согласно Рэймонду, «диктатор» свободного проекта обязан быть ,великодушным,, поскольку, если набирается достаточно разработчиков, не согласных с решениями «диктатора», они в любой момент могут уйти из проекта или создать ,форк,., +,Примеры «великодушных пожизненных диктаторов»,[,править, | ,править код,], +, +,Андерс Хейлсберг, — ,C#,, ,Delphi,, ,Turbo Pascal, +,Гвидо ван Россум, — ,Python, +,Джимми Уэйлс, — ,Wikipedia,[3], +,Дрис Бёйтарт, — ,Drupal,[4],[5], +,Ларри Уолл, — ,Perl,[6],., +,Линус Торвальдс, — ,ядро Linux,, в интервью согласился с тем, что он великодушный диктатор проекта, но при этом не упомянул слово «пожизненный»,[7],., +,Марк Шаттлворт, — ,Ubuntu Linux,[8], +,Патрик Фолькердинг, — ,Slackware,[9], +,Расмус Лердорф, — ,PHP,[10], +,Тэо де Раадт, — ,OpenBSD, +,Уолтер Брайт, — ,D, +, +,Примечания,[,править, | ,править код,], +, +, +,↑, ,Guido van Rossum., ,Origin of BDFL, (31 июля 2008). ,Проверено 3 августа 2008., ,Архивировано, 16 марта 2012 года., +,↑, ,Python Creator Scripts Inside Google,. www.eweek.com. ,Проверено 3 августа 2008., ,Архивировано, 22 августа 2011 года., +,↑, ,Wikipedia. Rôle of Jimmy Wales, +,↑, ,Dries set to be married!,. ,Архивировано, 20 ноября 2012 года., +,↑, ,Urban Dictionary: BDFL,. ,Архивировано, 20 ноября 2012 года., +,↑, ,Policies and commitments related to the Perl core,. ,Проверено 11 сентября 2012., ,Архивировано, 20 ноября 2012 года., +,↑, ,Linus Torvalds' Benevolent Dictatorship,. ,Проверено 3 августа 2008., ,Архивировано, 16 марта 2012 года., +,↑, ,Ubuntu founder defuses rumors of impending Microsoft deal,. arstechnica.com. ,Проверено 3 августа 2008., ,Архивировано, 16 марта 2012 года., +,↑, ,The Slackware Linux Project: About This Site:,. slackware.com. ,Проверено 3 августа 2008., ,Архивировано, 16 марта 2012 года., +,↑, ,Marneweck, Jacques, ,Jacques Marneweck's Blog: Rasmus's no-framework PHP MVC framework,. Powertrip.co.za (28 февраля 2006). ,Проверено 1 июня 2011., ,Архивировано, 20 ноября 2012 года., +, +, +, +, +, +, +,Это ,заготовка статьи, о компьютерах. ,Вы можете помочь проекту, дополнив её., +,Это примечание по возможности следует заменить ,более точным,., +, +, + + +, +, +, +, +",Великодушный пожизненный диктатор +" 26 November 2017, at 13:50."," +, +, +, +, +, +,This article ,relies too much on ,references, to ,primary sources,. ,Please improve this by adding ,secondary or tertiary sources,., ,(June 2015), ,(,Learn how and when to remove this template message,), +, +, +, +, +,Nginx, +, +, +, +, +,Original author(s), +,Igor Sysoev, +, +, +,Developer(s), +,Nginx, Inc., +, +, +,Initial release, +,4 October 2004,; 13 years ago, (,2004-10-04,),[1], +, +, +, +, +, +,Stable release, +,1.12.2 ,(17 October 2017,; 2 months ago, (,2017-10-17,),), ,[±],[2], +, +, +,Preview release, +,1.13.7 ,(21 November 2017,; 57 days ago, (,2017-11-21,),), ,[±],[3], +, +, +, +, +, +,Repository, +, +, +, +,http://hg.nginx.org/nginx/, +,https://github.com/nginx/nginx, +, +, +, +, +, +,Written in, +,C,[4], +, +, +,Operating system, +,BSD variants,, ,HP-UX,, ,IBM AIX,, ,Linux,, ,macOS,, ,Solaris,, ,Windows,,,[5], and other ,*nix, flavors,[6], +, +, +,Type, +,Web server,, ,reverse/mail proxy server, +, +, +,License, +,2-clause BSD,[7], +, +, +,Website, +,nginx,.org, +, +, +,Nginx, ( ,/,ˌ,ɛ,n,dʒ,ɪ,n,ˈ,ɛ,k,s,/, ,EN,-jin-,EKS,) (stylized as ,NGINX,, ,NGiИX, or ,nginx,) is a ,web server, which can also be used as a ,reverse proxy,, ,load balancer, and ,HTTP cache,. The software was created by ,Igor Sysoev, and first publicly released in 2004.,[8], A company of the same name was founded in 2011 to provide support.,[9], +,Nginx is ,free and open source software,, released under the terms of a ,BSD,-like license. A large fraction of web servers use NGINX,,[10], often as a ,load balancer,.,[11], +, +, +, +,Contents, +, +, +,1, ,Features, +, +,1.1, ,HTTP proxy and Web server features, +,1.2, ,Mail proxy features, +, +, +,2, ,Performance vs Apache, +,3, ,History, +,4, ,See also, +,5, ,References, +,6, ,External links, +, +, +, +,Features,[,edit,], +,Nginx can be deployed to serve dynamic ,HTTP, content on the network using ,FastCGI,, ,SCGI, handlers for ,scripts,, ,WSGI, application servers or ,Phusion Passenger, modules, and it can serve as a software ,load balancer,.,[12], +,Nginx uses an ,asynchronous, ,event-driven, approach to handling requests. Nginx's modular event-driven architecture,[13], can provide more predictable performance under high loads.,[14], +,According to ,Netcraft,'s November 2016 Web Server Survey,,[15], Nginx was found to be the second most widely used web server across all ""active"" sites (18.22% of surveyed sites) and for the top million busiest sites (27.83% of surveyed sites). According to W3Techs, it was used by 37.7% of the top 1 million websites, 49.7% of the top 100,000 websites, and by 57.0% of the top 10,000 websites.,[16], According to BuiltWith, it is used on 38.2% of the top 10,000 websites, and its growth within the top 10k, 100k and 1 million segments increased.,[17], Wikipedia uses Nginx as its ,SSL termination proxy,.,[18], As of ,OpenBSD, release 5.2 (1 November 2012), Nginx became part of the OpenBSD base system, providing an alternative to the system's fork of Apache 1.3, which it was intended to replace,,[19], but it was later replaced by OpenBSD's own httpd(8).,[20], +,HTTP proxy and Web server features,[,edit,], +, +,Ability to handle ,more than 10,000 simultaneous connections, with a low memory footprint (~2.5 MB per 10k inactive ,HTTP keep-alive connections,), +,Handling of static files, index files and auto-indexing, +,Reverse proxy, with caching, +,Load balancing, with in-band health checks,[21], +,TLS/SSL, with ,SNI, and ,OCSP stapling, support, via ,OpenSSL,., +,FastCGI,, ,SCGI,, ,uWSGI, support with caching, +,Name- and IP address-based virtual servers, +,IPv6,-compatible, +,WebSockets, and ,HTTP/1.1 Upgrade (101 Switching Protocols),[22], +, +,Mail proxy features,[,edit,], +, +,TLS/SSL, support, +,STARTTLS, support, +,SMTP,, ,POP3,, and ,IMAP, ,proxy, +,Authentication using an external HTTP server,[23], +, +,Other features include upgrading executable and configuration without client connections loss,,[24], and a module-based architecture with both core,[25], and third-party module support.,[26], +,The paid Plus product includes additional features such as advanced load balancing and access to an expanded suite of metrics for performance monitoring.,[27],[28], +,Performance vs Apache,[,edit,], +,Nginx was written with an explicit goal of outperforming the ,Apache, web server.,[29], Out of the box, serving static files, Nginx uses dramatically less memory than Apache, and can handle roughly four times more requests per second.,[30], This performance boost comes at a cost of decreased flexibility, such as the ability to override systemwide access settings on a per-file basis (Apache accomplishes this with an ,.htaccess, file, while Nginx has no such feature built in).,[31], Formerly, adding third party modules to nginx required ,recompiling, the application from source with the modules ,statically linked,. This was partially overcome in version 1.9.11 with the addition of ,dynamic module loading,. However, the modules still must be compiled at the same time as nginx, and not all modules are compatible with this system—some require the older static linking process.,[32], +,History,[,edit,], +, +,Nginx, Inc., +, +, +,Type, +, +,Private, +, +, +,Industry, +,Technology, +, +, +,Founded, +,2011, +, +, +,Headquarters, +,Russia, +, +, +, +,Key people, +, +,Gus Robertson (CEO), ,Igor Sysoev, (,CTO,), +, +, +,Products, +,Web servers, +, +, +,Website, +,nginx,.com, +, +, +,Igor Sysoev began development of Nginx in 2002.,[8], Originally, Nginx was developed to solve the ,C10K Problem,, and to fill the needs of ,websites, including ,Rambler,, for which it was serving 500 million requests per day by September 2008.,[33],[34], +,A company of the same name was founded in July 2011 by Sysoev to provide commercial products and support for the software.,[35], +,The company's principal place of business is ,San Francisco,, ,California,, while legally incorporated in ,British Virgin Islands,.,[9], +,In October 2011, Nginx raised $3 million from ,BV Capital,, ,Runa Capital, and ,MSD Capital,, ,Michael Dell,‘s venture fund.,[36], +,The company announced commercial support options for companies using Nginx in production. Nginx offered commercial support in February 2012,,[37],[38], and paid Nginx Plus subscription in August 2013.,[39], +,Support packages focus on installation, configuration, performance improvement, etc.,[40], Support includes proactive notifications about major changes, security patches, updates and patches., +,WordPress, developer ,Automattic, and content delivery network provider ,MaxCDN, became funding partners for an update to ,Google,'s ,SPDY, version 3.1, slated for early 2014.,[41], +,Nginx also offers consulting services to assist customers in custom configuration or adding additional features.,[42], +,In October 2013, Nginx raised a $10 million series B investment round led by ,New Enterprise Associates,.,[43], That round included previous investors, as well as ,Aaron Levie,, CEO and founder of ,Box.com,.,[44],[45], In December 2014, Nginx raised a $20 million series B1 round led by New Enterprise Associates, with participation from e.ventures (formerly ,BV Capital,), Runa Capital, ,Index Ventures, and Nginx’s own CEO Gus Robertson.,[46],[47], +,See also,[,edit,], +, +, +,Free software portal, +, +, +, +,Comparison of web server software, +,Web accelerator, +,URL redirection § nginx rewrite, +,List of Nginx–MySQL–PHP packages, +, +,References,[,edit,], +, +, +,^, ,""CHANGES"",. Retrieved ,16 May, 2017,., , +,^, ,Dounin, Maxim (17 October 2017). ,""nginx-1.12.2"",. ,nginx-announce, (Mailing list),. Retrieved ,14 November, 2017,., , +,^, ,Dounin, Maxim (21 November 2017). ,""nginx-1.13.7"",. ,nginx-announce, (Mailing list),. Retrieved ,10 December, 2017,., , +,^, ,""The NGINX Open Source Project on Ohloh"",. ,ohloh.net,. Retrieved ,7 March, 2013,., , +,^, ,""nginx for Windows"",. Retrieved ,28 May, 2014,., , +,^, ,""Tested OS and platforms"",. Retrieved ,15 October, 2011,., , +,^, ,""Licensing"",. Retrieved ,18 January, 2013,., , +,^ ,a, ,b, ,Tony Mobily (5 January 2012). ,""Interview with Igor Sysoev, author of Apache's competitor NGINX"",. ,Free Software Magazine,. Retrieved ,18 October, 2013,., , +,^ ,a, ,b, ,""Notice of Exempt Offering of Securities"",. ,Form D,. US Securities and Exchange Commission 17 October 2013,. Retrieved ,15 September, 2016,., , +,^, ,https://news.netcraft.com/archives/2017/01/12/january-2017-web-server-survey.html, +,^, ,https://www.linode.com/docs/uptime/loadbalancing/use-nginx-as-a-front-end-proxy-and-software-load-balancer, +,^, ,Use nginx for Proxy Services and Software Load Balancing, 11 May 2010, by Sam Kleinman, Linode Library, +,^, ,""The Architecture of Open Source Applications (Volume 2): nginx"",. ,aosabook.org,. Retrieved ,10 June, 2015,., , +,^, ,Basic nginx Configuration, by Sam Kleinman; 21 August 2010, +,^, ,""November 2016 Web Server Survey"",. 22 November 2016,. Retrieved ,19 December, 2016,., , +,^, ,""Usage of web servers broken down by ranking"",. 19 December 2016,. Retrieved ,19 December, 2016,., , +,^, ,""Builtwith: nginx Usage Statistics"",. 19 December 2016,. Retrieved ,19 December, 2016,., , +,^, ,""Wikitech: HTTPS"",. Wikitech.wikimedia.org. 3 October 2011,. Retrieved ,3 December, 2011,., , +,^, ,OpenBSD Upgrade Guide: 5.1 to 5.2,, 2012/11/06 15:00:27 sthen, +,^, ,""Heads Up: Nginx Removed From Base"",., , +,^, ,""Module ngx_http_upstream_module"",. nginx.org,. Retrieved ,14 August, 2012,., , +,^, ,""Proxy: support for connection upgrade (101 Switching Protocols)"",. trac.nginx.org. 19 February 2013,. Retrieved ,21 February, 2013,., , +,^, ,""Module ngx_mail_auth_http_module"",. nginx.org,. Retrieved ,13 September, 2012,., , +,^, ,""Official documentation: Controlling nginx"",. nginx.org,. Retrieved ,3 December, 2011,., , +,^, ,""nginx documentation"",. ,nginx.org,. Retrieved ,9 June, 2015,., , +,^, ,""3rdPartyModules — Nginx Community"",. ,wiki.nginx.org,. Retrieved ,9 June, 2015,., , +,^, ,""How to monitor NGINX"",. ,Datadog,. 9 July 2015,. Retrieved ,9 July, 2015,., , +,^, ,""Application Load Balancing with NGINX Plus"",. ,NGINX,. Retrieved ,9 July, 2015,., , +,^, ,""NGINX vs. Apache: Our View of a Decade-Old Question"",. ,NGINX,. 9 October 2015,. Retrieved ,28 December, 2016,., , +,^, ,""Web server performance comparison"",. ,DreamHost,. Retrieved ,28 December, 2016,., , +,^, ,""NGINX vs. Apache (Pro/Con Review, Uses, & Hosting for Each) - HostingAdvice.com"",. ,HostingAdvice.com,. 5 April 2016,. Retrieved ,28 December, 2016,., , +,^, ,""Introducing Dynamic Modules in NGINX 1.9.11 - NGINX"",. ,NGINX,. 2016-02-09,. Retrieved ,2017-01-13,., , +,^, ,""Choosing Your Web Server: Apache Vs. Nginx"",. Eyerys. 7 December 2016,. Retrieved ,7 December, 2016,., , +,^, ,""Nginx: the High-Performance Web Server and Reverse Proxy"",. ,Linux Journal,. 1 September 2008,. Retrieved ,16 August, 2009,., , +,^, ,""Company"",. nginx.com. 3 January 2012,. Retrieved ,24 February, 2012,., , +,^, ,Natasha Starkell (11 October 2011). ,""Russian Nginx Raises $3 Million From International Investors"",. ,Techcrunch,. Retrieved ,20 November, 2014,., , +,^, ,Darryl K. Taft (8 February 2012). ,""NGINX Launches Commercial Support for Open-Source Web Server"",. ,e Week,. Retrieved ,18 October, 2013,., , +,^, ,Steven J. Vaughan-Nichols (8 February 2012). ,""Commercial Support now available for the open-source NGINX Web server"",. ,ZDNet Open Source blog,. Retrieved ,18 October, 2013,., , +,^, ,""Nginx Inc. Launches NGINX Plus"",. 22 August 2013., , +,^, ,Taft, Darryl K. (8 February 2012). ,""NGINX Launches Commercial Support for Open-Source Web Server"",. eweek.com,. Retrieved ,24 February, 2012,., , +,^, ,Shankland, Stephen (20 December 2013). ,""Nginx upgrade funded by fans of Google's SPDY Web protocol"",. ,CNET,. Retrieved ,6 January, 2014,., , +,^, ,""Commercial Support now available for the open-source NGINX Web server"",. ZDNet. 8 February 2012,. Retrieved ,28 February, 2012,., , +,^, ,Sean Michael Kerner (16 October 2013). ,""Nginx Raises $10 Million in New Funding for Server Development"",. ,e Week,. Retrieved ,18 October, 2013,., , +,^, ,Frederic Lardinois (15 October 2013). ,""Nginx Raises $10M Series B Round Led By NEA"",. ,Techcrunch,. Retrieved ,20 November, 2014,., , +,^, ,Jolie O'Dell (15 October 2013). ,""Nginx ties up a sweet $10M funding deal and hundreds of millions of users"",. ,Venture Beat,. Retrieved ,18 October, 2013,., , +,^, ,Frederic Lardinois (9 December 2014). ,""Nginx Raises $20M Series B1 Round To Drive International Expansion"",. ,Techcrunch,. Retrieved ,9 December, 2014,., , +,^, ,Jordan Novet (9 December 2014). ,""Nginx gets $20M, because an open-source web server is just the beginning"",. ,VentureBeat,. Retrieved ,9 December, 2014,., , +, +, +,External links,[,edit,], +, +,Official website, +, +, +, +, +, +, +, +,v, +,t, +,e, +, +, +,Web server software, +, +, +, +, +,Comparisons, +, +, +, +,Most popular, +, +, +, +,Apache, +,Nginx, +,IIS, +, +,IIS Express, +, +, +,LiteSpeed Web Server, +, +, +, +, +, +,Other, +, +, +, +,Cherokee, +,Hiawatha, +,iPlanet, +,Lighttpd, +,Mongoose, +,Mongrel2, +,Monkey, +,POCO, +,Traffic Server, +,Jexus, +,Yaws, +,Caddy, +,GlassFish, +,Jetty, +,JOnAS, +,NetWeaver, +,Resin, +,thttpd, +,Tomcat, +,WebLogic, +,WebSphere, +,WildFly, +,Caudium, +,Roxen, +,Gunicorn, +,Paste, +,Tornado, +,Twisted, +,PyGopherd, +,Zope, +,WEBrick, +,Passenger, +,AOLserver, +,NaviServer, +,JEUS, +, +, +, +, +, +,Retired, +, +, +, +,Boa, +,CERN httpd, +,NCSA HTTPd, +,Xitami, +,Zeus, +,Mongrel, +, +, +, +, +, +, + + +, +, +, +, +",Nginx +" 12 October 2017, at 18:58."," +, +, +, +, +, +,This article ,needs additional citations for ,verification,. ,Please help ,improve this article, by ,adding citations to reliable sources,. Unsourced material may be challenged and removed., ,(August 2013), ,(,Learn how and when to remove this template message,), +, +, +, +, +, +, +, +Anything between the ,kernel, and user applications is considered middleware., +, +, +,Middleware, is computer ,software, that provides services to ,software applications, beyond those available from the ,operating system,. It can be described as ""software glue"".,[1], +,Middleware makes it easier for ,software developers, to implement communication and ,input/output,, so they can focus on the specific purpose of their application., +, +, +, +,Contents, +, +, +,1, ,In distributed applications, +,2, ,Other examples, +,3, ,Boundaries, +,4, ,Origins, +,5, ,See also, +,6, ,References, +, +, +, +,In distributed applications,[,edit,], +,Main article: ,Middleware (distributed applications), +, +, +, +, +Software architecture: Middleware, +, +, +,The term is most commonly used for software that enables communication and management of data in ,distributed applications,. An ,IETF, workshop in 2000 defined middleware as ""those services found above the ,transport, (i.e. over TCP/IP) layer set of services but below the application environment"" (i.e. below application-level ,APIs,).,[2], In this more specific sense ,middleware, can be described as the dash (""-"") in ,client-server,, or the ,-to-, in ,peer-to-peer,.,[,citation needed,], Middleware includes ,web servers,, ,application servers,, ,content management systems,, and similar tools that support application development and delivery., +,ObjectWeb defines middleware as: ""The software layer that lies between the ,operating system, and applications on each side of a distributed computing system in a network."",[3], Services that can be regarded as middleware include ,enterprise application integration,, ,data integration,, ,message oriented middleware, (MOM), ,object request brokers, (ORBs), and the ,enterprise service bus, (ESB)., +,Database, access services are often characterised as middleware. Some of them are language specific implementations and support heterogeneous features and other related communication features. Examples of database-oriented middleware include ,ODBC,, ,JDBC, and ,transaction processing, monitors., +,Distributed computing system middleware can loosely be divided into two categories—those that provide human-time services (such as web request servicing) and those that perform in machine-time. This latter middleware is somewhat standardized through the ,Service Availability Forum, and is commonly used in complex, ,embedded systems, within telecom, defense and ,aerospace, industries., +,Other examples,[,edit,], +,The term ,middleware, is used in other contexts as well. ,Middleware, is sometimes used in a similar sense to a ,software driver,, an abstraction layer that hides detail about hardware devices or other software from an application., +, +,The ,mer, software distribution is a middleware: it lacks the ,Linux kernel, and it also lacks a UI. Mer is targeted at hardware vendors' mobile-oriented operating systems., +,The ,Android, operating system uses the ,Linux, kernel at its core, and also provides an ,application framework, that developers incorporate into their applications. In addition, ,Android, provides a middleware layer including ,libraries, that provide services such as data storage, screen display, ,multimedia,, and web browsing. Because the middleware libraries are ,compiled, to ,machine language,, services execute quickly. Middleware libraries also implement device-specific functions, so applications and the application framework need not concern themselves with variations between various Android devices. Android's middleware layer also contains the ,Dalvik, ,virtual machine, and its core ,Java, application libraries.,[4], +,Game engine, software such as ,Gamebryo, and ,Renderware, are sometimes described as middleware, because they provide many services to simplify game development., +,In simulation technology, ,middleware, is generally used in the context of the ,high level architecture, (HLA) that applies to many distributed simulations. It is a layer of software that lies between the ,application code, and the ,run-time infrastructure,. Middleware generally consists of a library of functions, and enables a number of applications—simulations or federates in HLA terminology—to ,page, these functions from the common library rather than re-create them for each application., +,Wireless networking developers can use middleware to meet the challenges associated with a ,wireless sensor network, (WSN). Implementing a middleware application allows WSN ,developers, to integrate operating systems and hardware with the wide variety of various applications that are currently available.,[5], +,The ,QNX, operating system offers middleware for providing multimedia services for use in ,automobiles,, ,aircraft, and other environments., +,Multimedia Home Platform, (DVB-MHP) is an open middleware system standard designed by the ,Digital Video Broadcasting, (DVB) project for interactive digital television. The MHP enables the reception and execution of interactive, Java-based applications on a television set., +,Universal Home API,, or UHAPI, is an application programming interface (API) for consumer electronics appliances, created by the UHAPI Forum. The objective of UHAPI is to enable standard middleware to run on audio/video streaming platforms via a hardware-independent industry standard API., +,The ,Miles Sound System, provided a middleware ,software driver, allowing developers to build software that worked with a range of different sound cards, without concerning themselves with the details of each card., +,Radio-frequency identification, software toolkits provide middleware to filter noisy and redundant raw data., +,Television,, ,media, and ,set-top-box, software often refers to middleware. For instance, ,OpenTV 5, middleware (sometimes called Connectware) is a ,Linux, and ,HTML5, distribution for set-top-box including a default TV navigation guide and provides open APIs to tailored TV user experience that can leverage the home cloud, broadcast video and web services for Pay-TV operators., +, +,Boundaries,[,edit,], +,The distinction between operating system and middleware functionality is, to some extent, arbitrary. While core kernel functionality can only be provided by the operating system itself, some functionality previously provided by separately sold middleware is now integrated in operating systems. A typical example is the ,TCP/IP stack, for telecommunications, nowadays included in virtually every operating system. At the other end of the scale, the boundary between middleware and application has also moved. ,Digital TV middleware, for example usually provides enough functionality so that no ""application"" is needed for end-users to be able to use the TV services., +,Origins,[,edit,], +,Middleware gained popularity in the 1980s as a solution to the problem of how to link newer applications to older legacy systems, although the term had been in use since 1968.,[6], It also facilitated ,distributed processing,, the connection of multiple applications to create a larger application, usually over a network., +,See also,[,edit,], +, +, +, +,Look up ,middleware, in Wiktionary, the free dictionary., +, +, +, +,Cross-language, +,Third party software component, +, +,References,[,edit,], +, +, +,^, ,""What is Middleware?"",. ,Middleware.org,. Defining Technology. 2008. Archived from the original on June 29, 2012,. Retrieved ,2013-08-11,., ,CS1 maint: Unfit url (,link,), +,^, ,http://www.ietf.org/rfc/rfc2768.txt, +,^, ,Krakowiak, Sacha. ,""What's middleware?"",. ObjectWeb.org,. Retrieved ,2005-05-06,., , +,^, ,Charlie Collins, Michael Galpin and Matthias Kaeppler, Android in Practice, Manning Publications, 2011, +,^, ,Hadim, S. and Mohamed, N. (2006). Middleware challenges and approaches for wireless sensor networks. IEEE Distributed Systems Online vol 7. Issue 3. Retrieved March 4, 2009 from ,iEEE Distributed Systems Online, +,^, ,Gall, Nick (July 30, 2005). ,""Origin of the term ,middleware,"",., , +, +, +, +, +, +, +, +, +,v, +,t, +,e, +, +, +,Major fields of ,computer science, +, +, +, +, +,Note: This template roughly follows the 2012 ,ACM Computing Classification System,., +, +, +, +,Hardware, +, +, +, +,Printed circuit board, +,Peripheral, +,Integrated circuit, +,Very-large-scale integration, +,Energy consumption, +,Electronic design automation, +, +, +, +, +, +,Computer systems, +organization, +, +, +, +,Computer architecture, +,Embedded system, +,Real-time computing, +,Dependability, +, +, +, +, +, +,Networks, +, +, +, +,Network architecture, +,Network protocol, +,Network components, +,Network scheduler, +,Network performance evaluation, +,Network service, +, +, +, +, +, +,Software organization, +, +, +, +,Interpreter, +,Middleware, +,Virtual machine, +,Operating system, +,Software quality, +, +, +, +, +, +,Software notations, +and ,tools, +, +, +, +,Programming paradigm, +,Programming language, +,Compiler, +,Domain-specific language, +,Modeling language, +,Software framework, +,Integrated development environment, +,Software configuration management, +,Software library, +,Software repository, +, +, +, +, +, +,Software development, +, +, +, +,Software development process, +,Requirements analysis, +,Software design, +,Software construction, +,Software deployment, +,Software maintenance, +,Programming team, +,Open-source model, +, +, +, +, +, +,Theory of computation, +, +, +, +,Model of computation, +,Formal language, +,Automata theory, +,Computational complexity theory, +,Logic, +,Semantics, +, +, +, +, +, +,Algorithms, +, +, +, +,Algorithm design, +,Analysis of algorithms, +,Randomized algorithm, +,Computational geometry, +, +, +, +, +, +,Mathematics, +of computing, +, +, +, +,Discrete mathematics, +,Probability, +,Statistics, +,Mathematical software, +,Information theory, +,Mathematical analysis, +,Numerical analysis, +, +, +, +, +, +,Information, +systems, +, +, +, +,Database management system, +,Information storage systems, +,Enterprise information system, +,Social information systems, +,Geographic information system, +,Decision support system, +,Process control system, +,Multimedia information system, +,Data mining, +,Digital library, +,Computing platform, +,Digital marketing, +,World Wide Web, +,Information retrieval, +, +, +, +, +, +,Security, +, +, +, +,Cryptography, +,Formal methods, +,Security services, +,Intrusion detection system, +,Hardware security, +,Network security, +,Information security, +,Application security, +, +, +, +, +, +,Human–computer, +interaction, +, +, +, +,Interaction design, +,Social computing, +,Ubiquitous computing, +,Visualization, +,Accessibility, +, +, +, +, +, +,Concurrency, +, +, +, +,Concurrent computing, +,Parallel computing, +,Distributed computing, +,Multithreading, +,Multiprocessing, +, +, +, +, +, +,Artificial, +intelligence, +, +, +, +,Natural language processing, +,Knowledge representation and reasoning, +,Computer vision, +,Automated planning and scheduling, +,Search methodology, +,Control method, +,Philosophy of artificial intelligence, +,Distributed artificial intelligence, +, +, +, +, +, +,Machine learning, +, +, +, +,Supervised learning, +,Unsupervised learning, +,Reinforcement learning, +,Multi-task learning, +,Cross-validation, +, +, +, +, +, +,Graphics, +, +, +, +,Animation, +,Rendering, +,Image manipulation, +,Graphics processing unit, +,Mixed reality, +,Virtual reality, +,Image compression, +,Solid modeling, +, +, +, +, +, +,Applied, +computing, +, +, +, +,E-commerce, +,Enterprise software, +,Computational mathematics, +,Computational physics, +,Computational chemistry, +,Computational biology, +,Computational social science, +,Computational engineering, +,Computational healthcare, +,Digital art, +,Electronic publishing, +,Cyberwarfare, +,Electronic voting, +,Video game, +,Word processing, +,Operations research, +,Educational technology, +,Document management, +, +, +, +, +, +, +, +, +, ,Book, +, ,Category, +, ,Portal, +,WikiProject, +, ,Commons, +, +, +, +, +, +, +, +, +, +,Authority control, +, +, +, +,GND,: ,4426067-2, +, +, +, +, +, +, + + +, +, +, +, +",Middleware +" 10 January 2018, at 16:27.","""JRE"" redirects here. For the podcast, see ,Joe Rogan Experience,., +, +,Java virtual machine, +, +,Designer, +,Sun Microsystems, +, +, +,Bits, +,32-bit, +, +, +,Introduced, +,1994, +, +, +,Type, +,Stack, and ,register–register, +, +, +,Endianness, +,Big, +, +, +,Registers, +, +, +,General purpose, +,Per-method operand stack (up to 65535 operands) plus per-method local variables (up to 65535), +, +, +, +, +, +, +Overview of a Java virtual machine (JVM) architecture based on The Java Virtual Machine Specification Java SE 7 Edition, +, +, +,A ,Java virtual machine, (,JVM,) is ,an abstract computing machine, that enables a computer to run a ,Java, program. There are three notions of the JVM: specification, implementation, and instance. The specification is a document that formally describes what is required of a JVM implementation. Having a single specification ensures all implementations are ,interoperable,. A JVM implementation is a computer program that meets the requirements of the JVM specification. An instance of a JVM is an implementation running in a ,process, that executes a computer program compiled into ,Java bytecode,., +,Java Runtime Environment, (,JRE,) is a software package that contains what is required to run a Java program. It includes a Java Virtual Machine implementation together with an implementation of the ,Java Class Library,. The ,Oracle Corporation,, which owns the Java trademark, distributes a Java Runtime environment with their Java Virtual Machine called ,HotSpot,., +,Java Development Kit, (,JDK,) is a superset of a JRE and contains tools for Java programmers, e.g. a ,javac, compiler. The Java Development Kit is provided free of charge either by Oracle Corporation directly, or by the ,OpenJDK, open source project, which is governed by Oracle., +, +, +, +,Contents, +, +, +,1, ,JVM specification, +, +,1.1, ,Class loader, +,1.2, ,Virtual machine architecture, +,1.3, ,Bytecode instructions, +,1.4, ,JVM languages, +,1.5, ,Bytecode verifier, +, +,1.5.1, ,Secure execution of remote code, +, +, +,1.6, ,Bytecode interpreter and just-in-time compiler, +, +, +,2, ,JVM in the web browser, +, +,2.1, ,Java applets, +,2.2, ,JavaScript JVMs and interpreters, +,2.3, ,Compilation to JavaScript, +, +, +,3, ,Java Runtime Environment, +, +,3.1, ,Performance, +,3.2, ,Generational heap, +,3.3, ,Security, +, +, +,4, ,See also, +,5, ,Notes, +,6, ,References, +,7, ,External links, +, +, +, +,JVM specification,[,edit,], +,The Java virtual machine is an abstract (virtual) computer defined by a specification. This specification omits implementation details that are not essential to ensure interoperability: the memory layout of run-time data areas, the garbage-collection algorithm used, and any internal optimization of the Java virtual machine instructions (their translation into machine code). The main reason for this omission is to not unnecessarily constrain implementers. Any Java application can be run only inside some concrete implementation of the abstract specification of the Java virtual machine.,[1], +,Starting with ,Java Platform, Standard Edition, (J2SE) 5.0, changes to the JVM specification have been developed under the ,Java Community Process, as JSR 924.,[2], As of 2006,[update],, changes to specification to support changes proposed to the ,class file format, (JSR 202),[3], are being done as a maintenance release of JSR 924. The specification for the JVM was published as the ,blue book,,,[4], The preface states:, +, +,We intend that this specification should sufficiently document the Java Virtual Machine to make possible compatible clean-room implementations. Oracle provides tests that verify the proper operation of implementations of the Java Virtual Machine., +, +,One of Oracle's JVMs is named ,HotSpot,, the other, inherited from ,BEA Systems, is ,JRockit,. ,Clean-room, Java implementations include ,Kaffe, and ,IBM J9,. Oracle owns the Java trademark and may allow its use to certify implementation suites as fully compatible with Oracle's specification., +,Class loader,[,edit,], +,Main article: ,Java Class loader, +,One of the organizational units of JVM byte code is a class. A class loader implementation must be able to recognize and load anything that conforms to the Java class file format. Any implementation is free to recognize other binary forms besides ,class, files, but it must recognize ,class, files., +,The class loader performs three basic activities in this strict order:, +, +,Loading: finds and imports the binary data for a type, +,Linking: performs verification, preparation, and (optionally) resolution +, +,Verification: ensures the correctness of the imported type, +,Preparation: allocates memory for class variables and initializing the memory to default values, +,Resolution: transforms symbolic references from the type into direct references., +, +, +,Initialization: invokes Java code that initializes class variables to their proper starting values., +, +,In general, there are two types of class loader: bootstrap class loader and user defined class loader., +,Every Java virtual machine implementation must have a bootstrap class loader, capable of loading trusted classes. The Java virtual machine specification doesn't specify how a class loader should locate classes., +,Virtual machine architecture,[,edit,], +,The JVM operates on primitive values (integers and floating-point numbers) and ,references,. The JVM is fundamentally a 32-bit machine. ,long, and ,double, types, which are 64-bits, are supported natively, but consume two units of storage in a frame's local variables or operand stack, since each unit is 32 bits. ,boolean,, ,byte,, ,short,, and ,char, types are all sign-extended (except ,char, which is zero-extended) and operated on as 32-bit integers, the same as ,int, types. The smaller types only have a few type-specific instructions for loading, storing, and type conversion. ,boolean, is not known at all to the JVM; booleans are operated on as 8-bit ,byte, values, with 0 representing ,false, and 1 representing ,true,., +,The JVM has a garbage-collected heap for storing objects and arrays. Code, constants, and other class data are stored in the ""method area"". The method area is logically part of the heap, but implementations may treat the method area separately from the heap, and for example might not garbage collect it. Each JVM thread also has its own ,call stack, (called a ""Java Virtual Machine stack"" for clarity), which stores ,frames,. A new frame is created each time a method is called, and the frame is destroyed when that method exits., +,Each frame provides an ""operand stack"" and an array of ""local variables"". The operand stack is used for operands to computations and for receiving the return value of a called method, while local variables serve the same purpose as ,registers, and are also used to pass method arguments. Thus, the JVM is both a ,stack machine, and a ,register machine,., +,Bytecode instructions,[,edit,], +,Main article: ,Java bytecode, +,The JVM has ,instructions, for the following groups of tasks:, +, +, +,Load and store, +,Arithmetic, +,Type conversion, +,Object creation and manipulation, +,Operand stack management (push / pop), +,Control transfer (branching), +,Method invocation and return, +,Throwing exceptions, +,Monitor-based concurrency, +, +, +,The aim is binary compatibility. Each particular host ,operating system, needs its own implementation of the JVM and runtime. These JVMs interpret the bytecode semantically the same way, but the actual implementation may be different. More complex than just emulating bytecode is compatibly and efficiently implementing the ,Java core API, that must be mapped to each host operating system., +,These instructions operate on a set of common ,abstracted ,data types, rather the ,native data types, of any specific ,instruction set architecture,., +,JVM languages,[,edit,], +,Main article: ,List of JVM languages, +,A JVM language is any language with functionality that can be expressed in terms of a valid class file which can be hosted by the Java Virtual Machine. A class file contains Java Virtual Machine instructions (,Java byte code,) and a symbol table, as well as other ancillary information. The class file format is the hardware- and operating system-independent binary format used to represent compiled classes and interfaces.,[5], +,There are several JVM languages, both old languages ported to JVM and completely new languages. ,JRuby, and ,Jython, are perhaps the most well-known ports of existing languages, i.e. ,Ruby, and ,Python, respectively. Of the new languages that have been created from scratch to compile to Java bytecode, ,Clojure,, ,Apache Groovy,, ,Scala, and ,Kotlin, may be the most popular ones. A notable feature with the JVM languages is that they are ,compatible with each other,, so that, for example, Scala libraries can be used with Java programs and vice versa.,[6], +,Java 7 JVM implements ,JSR 292: Supporting Dynamically Typed Languages,[7], on the Java Platform, a new feature which supports dynamically typed languages in the JVM. This feature is developed within the ,Da Vinci Machine, project whose mission is to extend the JVM so that it supports languages other than Java.,[8],[9], +,Bytecode verifier,[,edit,], +,A basic philosophy of Java is that it is inherently safe from the standpoint that no user program can crash the host machine or otherwise interfere inappropriately with other operations on the host machine, and that it is possible to protect certain methods and data structures belonging to trusted code from access or corruption by untrusted code executing within the same JVM. Furthermore, common programmer errors that often led to data corruption or unpredictable behavior such as accessing off the end of an array or using an uninitialized pointer are not allowed to occur. Several features of Java combine to provide this safety, including the class model, the garbage-collected ,heap,, and the verifier., +,The JVM verifies all bytecode before it is executed. This verification consists primarily of three types of checks:, +, +,Branches are always to valid locations, +,Data is always initialized and references are always type-safe, +,Access to private or package private data and methods is rigidly controlled, +, +,The first two of these checks take place primarily during the verification step that occurs when a class is loaded and made eligible for use. The third is primarily performed dynamically, when data items or methods of a class are first accessed by another class., +,The verifier permits only some bytecode sequences in valid programs, e.g. a ,jump (branch) instruction, can only target an instruction within the same ,method,. Furthermore, the verifier ensures that any given instruction operates on a fixed stack location,,[10], allowing the JIT compiler to transform stack accesses into fixed register accesses. Because of this, that the JVM is a stack architecture does not imply a speed penalty for emulation on ,register-based architectures, when using a JIT compiler. In the face of the code-verified JVM architecture, it makes no difference to a JIT compiler whether it gets named imaginary registers or imaginary stack positions that must be allocated to the target architecture's registers. In fact, code verification makes the JVM different from a classic stack architecture, of which efficient emulation with a JIT compiler is more complicated and typically carried out by a slower interpreter., +,The original specification for the bytecode verifier used natural language that was incomplete or incorrect in some respects. A number of attempts have been made to specify the JVM as a formal system. By doing this, the security of current JVM implementations can more thoroughly be analyzed, and potential security exploits prevented. It will also be possible to optimize the JVM by skipping unnecessary safety checks, if the application being run is proven to be safe.,[11], +,Secure execution of remote code,[,edit,], +,A virtual machine architecture allows very fine-grained control over the actions that code within the machine is permitted to take. It assumes the code is ""semantically"" correct, that is, it successfully passed the (formal) bytecode verifier process, materialized by a tool, possibly off-board the virtual machine. This is designed to allow safe execution of untrusted code from remote sources, a model used by ,Java applets,, and other secure code downloads. Once bytecode-verified, the downloaded code runs in a restricted "",sandbox,"", which is designed to protect the user from misbehaving or malicious code. As an addition to the bytecode verification process, publishers can purchase a certificate with which to ,digitally sign, applets as safe, giving them permission to ask the user to break out of the sandbox and access the local file system, ,clipboard,, execute external pieces of software, or network., +,Formal proof of bytecode verifiers have been done by the Javacard industry (Formal Development of an Embedded Verifier for Java Card Byte Code,[12],), +,Bytecode interpreter and just-in-time compiler,[,edit,], +,For each ,hardware architecture, a different Java bytecode ,interpreter, is needed. When a computer has a Java bytecode interpreter, it can run any Java bytecode program, and the same program can be run on any computer that has such an interpreter., +,When Java bytecode is executed by an interpreter, the execution will always be slower than the execution of the same program compiled into native machine language. This problem is mitigated by ,just-in-time (JIT) compilers, for executing Java bytecode. A JIT compiler may translate Java bytecode into native machine language while executing the program. The translated parts of the program can then be executed much more quickly than they could be interpreted. This technique gets applied to those parts of a program frequently executed. This way a JIT compiler can significantly speed up the overall execution time., +,There is no necessary connection between the Java programming language and Java bytecode. A program written in Java can be compiled directly into the machine language of a real computer and programs written in other languages than Java can be compiled into Java bytecode., +,Java bytecode is intended to be platform-independent and secure.,[13], Some JVM implementations do not include an interpreter, but consist only of a just-in-time compiler.,[14], +,JVM in the web browser,[,edit,], +,Since the very early stages of the design process, Java (and JVM) has been marketed as a web technology for creating ,Rich Internet Applications,., +,Java applets,[,edit,], +,Main article: ,Java applet, +,On the client side, web browsers may be extended with a ,NPAPI, Java plugin which executes so called ,Java applets, embedded into HTML pages. The applet is allowed to draw into a rectangular region on the page assigned to it and use a restricted set of APIs that allow for example access to user's microphone or 3D acceleration. Java applets were superior to ,JavaScript, both in performance and features until approximately 2011, when JavaScript engines in browsers were made significantly faster and the ,HTML 5, suite of web technologies started enhancing JavaScript with new APIs. Java applets are not able to modify the page outside its rectangular region which is not true about JavaScript. ,Adobe Flash Player,, the main competing technology, works in the same way in this respect. Java applets are not restricted to Java and in general can be created in any JVM language., +,As of April 2014, ,Google Chrome, does not allow the use of any NPAPI plugins.,[15], ,Mozilla Firefox, will also ban NPAPI plugins by the end of 2016. This means that Java applets can no longer be used in either browser.,[16], Oracle ultimately announced in January 2016 that it will discontinue the Java web browser plugin effective Java 9.,[17], +,As of June 2015,[update], according to W3Techs, Java applet use had fallen to 0.1% of all web sites. Flash had fallen to 10.8% and Silverlight to 0.1% of web sites.,[18], +,JavaScript JVMs and interpreters,[,edit,], +,As of May 2016, ,JavaPoly, allows users to import unmodified Java libraries, and invoke them directly from JavaScript. JavaPoly allows websites to use run unmodified Java libraries, even if the user does not have Java installed on their computer.,[19], +,Compilation to JavaScript,[,edit,], +,With the continuing improvements in JavaScript execution speed, combined with the increased use of mobile devices whose web browsers do not implement support for plugins, there are efforts to target those users through compilation to JavaScript. It is possible to either compile the source code or JVM bytecode to JavaScript., +,Compiling the JVM bytecode, which is universal across JVM languages, allows building upon the language's existing compiler to bytecode. The main JVM bytecode to JavaScript compilers are TeaVM,,[20], the compiler contained in Dragome Web SDK,,[21], Bck2Brwsr,,[22], and j2js-compiler.,[23], +,Leading compilers from JVM languages to JavaScript include the Java-to-JavaScript compiler contained in ,Google Web Toolkit,, Clojurescript (,Clojure,), GrooScript (,Apache Groovy,), ,Scala.js, (Scala) and others.,[24], +,Java Runtime Environment,[,edit,], +,Main article: ,HotSpot, +,The Java Runtime Environment (JRE) released by Oracle is a software distribution containing a stand-alone Java VM (,HotSpot,), a browser plugin (discontinued since ,Java 9,), the Java ,standard library, (,Java Class Library,) and a configuration tool. It is the most common Java environment installed on Windows computers. It is freely available for download at the website java.com., +,Performance,[,edit,], +,Main article: ,Java performance, +,The JVM specification gives a lot of leeway to implementors regarding the implementation details. Since Java 1.3, JRE from Oracle contains a JVM called HotSpot. It has been designed to be a high-performance JVM., +,To speed-up code execution, HotSpot relies on just-in-time compilation. To speed-up object allocation and garbage collection, HotSpot uses generational heap., +,Generational heap,[,edit,], +,The ,Java virtual machine heap, is the area of memory used by the JVM for ,dynamic memory allocation,.,[25], +,In HotSpot the heap is divided into ,generations,:, +, +,The ,young generation, stores short-lived ,objects, that are created and immediately ,garbage collected,., +,Objects that persist longer are moved to the ,old generation, (also called the ,tenured generation,). This memory is subdivided into (two) Survivors spaces where the objects that survived the first and next garbage collections are stored., +, +,The ,permanent generation, (or ,permgen,) was used for ,class, definitions and associated metadata prior to Java 8. Permanent generation was not part of the heap.,[26],[27], The ,permanent generation, was removed from Java 8.,[28], +,Originally there was no permanent generation, and objects and classes were stored together in the same area. But as class unloading occurs much more rarely than objects are collected, moving class structures to a specific area allowed significant performance improvements.,[26], +,Security,[,edit,], +,Oracle's JRE is installed on a large number of computers. Since any web page the user visits may run Java applets, Java provides an easily accessible ,attack surface, to malicious web sites that the user visits. Kaspersky Labs reports that the Java web browser plugin is the method of choice for computer criminals. Java exploits are included in many exploit packs that hackers deploy onto hacked web sites.,[29], +,In the past, end users were often using an out-of-date version of JRE which was vulnerable to many known attacks. This led to the widely shared belief between users that Java is inherently insecure.,[30], Since Java 1.7, Oracle's JRE for Windows includes automatic update functionality., +,See also,[,edit,], +, +, +,Java portal, +, +, +, +,List of Java virtual machines, +,Comparison of Java virtual machines, +,Comparison of application virtual machines, +,Automated exception handling, +,Java performance, +,List of JVM languages, +,Java processor, +,Common Language Runtime, +, +,Notes,[,edit,], +, +, +,^, ,Bill Venners, ,Inside the Java Virtual Machine, Chapter 5, +,^, ,""The Java Community Process(SM) Program - JSRs: Java Specification Requests - detail JSR# 924"",. Jcp.org,. Retrieved ,2015-06-26,., , +,^, ,""The Java Community Process(SM) Program - JSRs: Java Specification Requests - detail JSR# 202"",. Jcp.org,. Retrieved ,2015-06-26,., , +,^, ,The Java Virtual Machine Specification, (the ,first, and ,second, editions are also available online)., +,^, ,""The Java Virtual Machine Specification : Java SE 7 Edition"", ,(PDF),. Docs.oracle.com,. Retrieved ,2015-06-26,., , +,^, ,""Frequently Asked Questions - Java Interoperability"",. ,scala-lang.org,. Retrieved ,2015-11-18,., , +,^, ,""The Java Community Process(SM) Program - JSRs: Java Specification Requests - detail JSR# 292"",. Jcp.org,. Retrieved ,2015-06-26,., , +,^, ,""Da Vinci Machine project"",. Openjdk.java.net,. Retrieved ,2015-06-26,., , +,^, ,""New JDK 7 Feature: Support for Dynamically Typed Languages in the Java Virtual Machine"",. Oracle.com,. Retrieved ,2015-06-26,., , +,^, ,""The Verification process"",. ,The Java Virtual Machine Specification,. Sun Microsystems. 1999,. Retrieved ,2009-05-31,., , +,^, ,Stephen N. Freund and John C. Mitchell. 1999. A formal framework for the Java bytecode language and verifier. In ,Proceedings of the 14th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications (OOPSLA '99),, A. Michael Berman (Ed.) ,Association for Computing Machinery,, New York, pp.147–166. ,doi,:,10.1145/320384.320397, +,^, ,http://www-sop.inria.fr/everest/Lilian.Burdy/CBR02dsn.pdf, +,^, ,David J. Eck, ,Introduction to Programming Using Java,, Seventh Edition, Version 7.0, August 2014 at Section 1.3 ""The Java Virtual Machine"", +,^, ,Oracle JRockit Introduction, Release R28 at 2. ""Understanding Just-In-Time Compilation and Optimization"", +,^, ,""Chrome starts pushing Java off the Web by disabling plugins"",. ,Ars Technica,. Retrieved ,9 December, 2015,., , +,^, ,""Firefox will stop supporting plugins by end of 2016, following Chrome's lead"",. ,PC World,. Retrieved ,9 December, 2015,., , +,^, ,""Oracle deprecates the Java browser plugin, prepares for its demise"",. ,Ars Technica,. Retrieved ,15 April, 2016,., , +,^, ,""Historical yearly trends in the usage of client-side programming languages, June 2015"",. W3techs.com,. Retrieved ,2015-06-26,., , +,^, ,Krill, Paul (13 May 2016). ,""JavaPoly.js imports existing Java code and invokes it directly from JavaScript"",. InfoWorld,. Retrieved ,18 July, 2016,., , +,^, ,""TeaVM project home page"",. Teavm.org,. Retrieved ,2015-06-26,., , +,^, ,""Dragome Web SDK"",. Dragome.com,. Retrieved ,2015-06-26,., , +,^, ,""Bck2Brwsr - APIDesign"",. Wiki.apidesign.org,. Retrieved ,2015-06-26,., , +,^, ,Wolfgang Kuehn (decatur). ,j2js-compiler, GitHub, +,^, ,""List of languages that compile to JS · jashkenas/coffeescript Wiki · GitHub"",. Github.com. 2015-06-19,. Retrieved ,2015-06-26,., , +,^, ,""Frequently Asked Questions about Garbage Collection in the Hotspot Java Virtual Machine"",. ,Sun Microsystems,. 6 February 2003,. Retrieved ,7 February, 2009,., , +,^ ,a, ,b, ,Masamitsu, Jon (28 November 2006). ,""Presenting the Permanent Generation"",. Retrieved ,7 February, 2009,., , +,^, ,Nutter, Charles (11 September 2008). ,""A First Taste of InvokeDynamic"",. Retrieved ,7 February, 2009,., , +,^, ,""JEP 122: Remove the Permanent Generation"",. ,Oracle Corporation,. 2012-12-04,. Retrieved ,2014-03-23,., , +,^, ,""Is there any protection against Java exploits? | Kaspersky Lab"",. Kaspersky.com. 2013-09-09,. Retrieved ,2015-06-26,., , +,^, ,""What Is Java, Is It Insecure, and Should I Use It?"",. Lifehacker.com. 2013-01-14,. Retrieved ,2015-06-26,., , +, +, +,References,[,edit,], +, +, +,Clarifications and Amendments to the Java Virtual Machine Specification, Second Edition, includes list of changes to be made to support J2SE 5.0 and JSR 45, +,JSR 45,, specifies changes to the class file format to support source-level debugging of languages such as ,JavaServer Pages, (JSP) and ,SQLJ, that are translated to Java, +, +, +,External links,[,edit,], +, +,What is Java virtual machine (JVM)?, +,The Java Virtual Machine Specification, +,Java implementations, at Curlie (based on ,DMOZ,), +,How to download and install prebuilt OpenJDK packages, +,How to Install Java?, (JRE from Oracle), +, +, +, +, +, +, +, +,v, +,t, +,e, +, +, +,Java virtual machines, (,comparison,), +, +, +, +,Sun/Oracle, +, +, +, +,HotSpot, +,KVM, +,OpenJDK, +,Maxine VM, +, +, +, +, +, +,Major implementations, +, +, +, +,Excelsior JET, +,JamVM, +,Jikes RVM, +,IBM J9, +, +, +, +, +, +,Embedded, +, +, +, +,Excelsior JET Embedded, +,JamaicaVM, +,Mika VM, +,Mysaifu, +,Squawk (Sun), +, +, +, +, +, +,Others, +, +, +, +,CACAO, +,IcedTea, +,JX, +,more…, +, +, +, +, +, +,Discontinued, +, +, +, +,Apache Harmony, +,Dalvik, +,GCJ, +,IKVM.NET, +,JRockit, +,Kaffe, +,Microsoft JVM, +,SableVM, +,Jupiter, +,more…, +, +, +, +, +, +, +, +, +, +, +, +, +,v, +,t, +,e, +, +, +,Java, +, +, +, +,Platforms, +, +, +, +,Java language, +,JVM, +,Micro Edition, +,Standard Edition, +,Enterprise Edition, +,Java Card, +,Android SDK, +, +, +, +, +, +, +, +, +,Oracle technologies, +, +, +, +,Squawk, +,Java Development Kit, +,OpenJDK, +,Java virtual machine, +,JavaFX, +,Maxine VM, +, +, +, +, +, +,Platform technologies, +, +, +, +,Applets, +,Servlets, +,MIDlets, +,JSP, +,Web Start (JNLP), +, +, +, +, +, +,Major third-party technologies, +, +, +, +,Blackdown, +,Eclipse, +,GNU Classpath, +,GWT, +,Harmony, +,Hibernate, +,IcedTea, +,Jazelle, +,Spring, +,Struts, +,TopLink, +,WildFly, +, +, +, +, +, +,History, +, +, +, +,Java version history, +,Java Community Process, +,Sun Microsystems, +,Free Java implementations, +, +, +, +, +, +,Major JVM languages, +, +, +, +,BeanShell, +,Clojure, +,Groovy, +,Oxygene, +,JRuby, +,Jython, +,Kotlin, +,Processing, +,Rhino, +,Scala, +,Tcl/Java, +, +, +, +, +, +,Conferences, +, +, +, +,JavaOne, +,Devoxx, +, +, +, +, +, +, +, +, +, +, +, +, +,v, +,t, +,e, +, +, +,Sun Microsystems, ,(,acquired, by ,Oracle Corp,, 2010), +, +, +, +,People, +, +, +, +,Bill Joy, +,Andy Bechtolsheim, +,Scott McNealy, +,Vinod Khosla, +,List of notable employees, +, +, +, +, +, +,Hardware, +, +, +, +,Sun-1, +,Sun-2, +,Sun-3, +,Sun386i, +,Sun-4, +,SPARCstation, +,Netra, +,Ultra, +,Enterprise, +,Sun Blade, +,Sun Fire, +,SPARC Enterprise, +,SPARC, +,JavaStation, +,Sun Ray, +,Sun Modular Datacenter, +,more..., +, +, +, +, +, +,Software, +, +, +, +,SunOS, +,Solaris, +,NIS, (,+,), +,NFS, +,ZFS, +,SunView, +,NeWS, +,OpenWindows, +,Java Desktop System, +,Sun Studio, +,Java, +,StarOffice, +,iPlanet,/,Sun ONE,/,Java Enterprise System, +,Sun Secure Global Desktop, +,MySQL, +,Sun xVM, +,GlassFish, +,more..., +, +, +, +, +, +,Storage, +, +, +, +,StorageTek, +,Sun Open Storage, +,QFS, +,ZFS, +, +, +, +, +, +,High-performance computing, +, +, +, +,Sun Cloud, +,Sun Constellation System, +,Sun Visualization System, +,Sun Grid Engine, +,Lustre, +, +, +, +, +, +,Research, +, +, +, +,Sun Labs, +,picoJava, +,Fortress, +,Project Looking Glass, +, +, +, +, +, +,Education, +, +, +, +,SCPs, +,BlueJ, +, +, +, +, +, +,Community, +, +, +, +,Common Development and Distribution License, +,Java Community Process, +,NetBeans, +,OpenOffice.org, +,OpenSolaris, +,OpenSPARC, +,OpenJDK, +,OSUM, +, +, +, +, +, +, + + +, +, +, +, +",Java virtual machine +" 17 January 2018, at 17:44.","Not to be confused with ,Content management, or ,Information management,., +,Knowledge management, (,KM,) is the process of creating, sharing, using and managing the ,knowledge, and information of an organisation.,[1], It refers to a multidisciplinary approach to achieving organisational objectives by making the best use of knowledge.,[2], +,An established ,discipline, since 1991, KM includes courses taught in the fields of ,business administration,, ,information systems,, management, library, and ,information sciences,.,[3],[4], Other fields may contribute to KM research, including information and media, ,computer science,, ,public health, and ,public policy,.,[5], Several universities offer dedicated ,master's degrees, in knowledge management., +,Many large companies, public institutions and non-profit organisations have resources dedicated to internal KM efforts, often as a part of their ,business strategy,, ,IT,, or ,human resource management, departments.,[6], Several consulting companies provide advice regarding KM to these organisations.,[6], +,Knowledge management efforts typically focus on organisational objectives such as improved performance, ,competitive advantage,, ,innovation,, the sharing of lessons learned, integration and ,continuous improvement, of the organisation.,[7], These efforts overlap with ,organisational learning, and may be distinguished from that by a greater focus on the management of knowledge as a strategic asset and on encouraging the ,sharing of knowledge,.,[2],[8], KM is an enabler of organisational learning.,[9],[10], +, +, +, +,Contents, +, +, +,1, ,History, +,2, ,Research, +, +,2.1, ,Dimensions, +,2.2, ,Strategies, +,2.3, ,Motivations, +, +, +,3, ,KM technologies, +,4, ,Legal knowledge management, +,5, ,See also, +,6, ,References, +,7, ,External links, +, +, +, +,History,[,edit,], +,Knowledge management efforts have a long history, including on-the-job discussions, formal ,apprenticeship,, ,discussion forums,, corporate libraries, professional training, and mentoring programs.,[2],[10], With increased use of computers in the second half of the 20th century, specific ,adaptations, of technologies such as ,knowledge bases,, ,expert systems,, ,information repositories,, group ,decision support systems,, ,intranets,, and ,computer-supported cooperative work, have been introduced to further enhance such efforts.,[2], +,In 1999, the term ,personal knowledge management, was introduced; it refers to the management of knowledge at the individual level.,[11], +,In the enterprise, early collections of case studies recognised the importance of knowledge management dimensions of strategy, ,process, and ,measurement,.,[12],[13], Key lessons learned include people and the cultural norms which influence their behaviors are the most critical resources for successful knowledge creation, dissemination and application; cognitive, social and organisational learning processes are essential to the success of a knowledge management strategy; and measurement, ,benchmarking, and incentives are essential to accelerate the learning process and to drive cultural change.,[13], In short, knowledge management programs can yield impressive benefits to individuals and organisations if they are purposeful, concrete and action-orientated., +,Research,[,edit,], +,KM emerged as a scientific discipline in the early 1990s.,[14], It was initially supported by individual practitioners, when ,Skandia, hired Leif Edvinsson of Sweden as the world's first ,Chief Knowledge Officer, (CKO).,[15], Hubert Saint-Onge (formerly of ,CIBC,, Canada), started investigating KM long before that.,[2], The objective of CKOs is to manage and maximise the intangible assets of their organisations.,[2], Gradually, CKOs became interested in practical and theoretical aspects of KM, and the new research field was formed.,[16], The KM idea has been taken up by academics, such as ,Ikujiro Nonaka, (,Hitotsubashi University,), Hirotaka Takeuchi (Hitotsubashi University), ,Thomas H. Davenport, (,Babson College,) and Baruch Lev (,New York University,).,[3],[17], In 2001, ,Thomas A. Stewart,, former editor at ,Fortune, magazine and subsequently the editor of ,Harvard Business Review,, published a cover story highlighting the importance of intellectual capital in organisations.,[18], The KM discipline has been gradually moving towards academic maturity.,[2], First, is a trend toward higher cooperation among academics; single-author publications are less common. Second, the role of practitioners has changed.,[16], Their contribution to academic research declined from 30% of overall contributions up to 2002, to only 10% by 2009.,[19], Third, the number of academic knowledge management journals has been steadily growing, currently reaching 27 outlets.,[20], +,Multiple KM disciplines exist; approaches vary by author and school.,[16],[21], As the discipline matured, academic debates increased regarding ,theory, and practice, including:, +, +,Techno-centric, with a focus on technology, ideally those that enhance ,knowledge sharing, and creation.,[22],[23], +,Organisational, with a focus on how an organisation can be designed to facilitate knowledge processes best.,[6], +,Ecological, with a focus on the interaction of people, ,identity,, knowledge, and environmental factors as a ,complex adaptive system, akin to a natural ,ecosystem,.,[24],[25], +, +,Regardless of the ,school of thought,, core components of KM roughly include people/culture, processes/structure and technology. The details depend on the ,perspective,.,[26], KM perspectives include:, +, +,community of practice,[27], +,social network analysis,[28], +,intellectual capital,[29], +,information theory,[14],[15], +,complexity science,[30], +,constructivism,[31],[32], +, +,The practical relevance of academic research in KM has been questioned,[33], with ,action research, suggested as having more relevance,[34], and the need to translate the findings presented in academic journals to a practice.,[12], +,Dimensions,[,edit,], +,Different ,frameworks, for distinguishing between different 'types of' knowledge exist.,[10], One proposed framework for categorizing the ,dimensions, of knowledge distinguishes ,tacit knowledge, and ,explicit knowledge,.,[30], Tacit knowledge represents internalised knowledge that an individual may not be consciously aware of, such as to accomplish particular tasks. At the opposite end of the spectrum, explicit knowledge represents knowledge that the individual holds consciously in mental focus, in a form that can easily be communicated to others.,[16],[35], +, +, +, +, +The Knowledge Spiral as described by Nonaka & Takeuchi., +, +, +,Ikujiro Nonaka proposed a model (,SECI,, for Socialization, Externalization, Combination, Internalization) which considers a spiraling interaction between ,explicit knowledge, and tacit knowledge.,[36], In this model, knowledge follows a cycle in which implicit knowledge is 'extracted' to become explicit knowledge, and explicit knowledge is 're-internalised' into implicit knowledge.,[36], +,Hayes and Walsham (2003) describe knowledge and knowledge management as two different perspectives.,[37], The content perspective suggests that knowledge is easily stored; because it may be codified, while the relational perspective recognises the contextual and relational aspects of knowledge which can make knowledge difficult to share outside the specific context in which it is developed.,[37], +,Early research suggested that KM needs to convert internalised tacit knowledge into explicit knowledge to share it, and the same effort must permit individuals to internalise and make personally meaningful any codified knowledge retrieved from the KM effort.,[6],[38], +,Subsequent research suggested that a distinction between tacit knowledge and explicit knowledge represented an oversimplification and that the notion of explicit knowledge is self-contradictory.,[11], Specifically, for knowledge to be made explicit, it must be translated into information (i.e., ,symbols, outside our heads).,[11],[39], More recently, together with ,Georg von Krogh, and ,Sven Voelpel,, Nonaka returned to his earlier work in an attempt to move the debate about knowledge conversion forward.,[4],[40], +,A second proposed framework for categorizing knowledge dimensions distinguishes embedded knowledge of a ,system, outside a human individual (e.g., an information system may have knowledge embedded into its design) from ,embodied knowledge, representing a learned capability of a human body's ,nervous, and ,endocrine systems,.,[41], +,A third proposed framework distinguishes between the exploratory creation of ""new knowledge"" (i.e., innovation) vs. the ,transfer, or exploitation of ""established knowledge"" within a group, organisation, or community.,[37],[42], Collaborative environments such as communities of practice or the use of ,social computing, tools can be used for both knowledge creation and transfer.,[42], +,Strategies,[,edit,], +,Knowledge may be accessed at three stages: before, during, or after KM-related activities.,[29], Organisations have tried knowledge capture ,incentives,, including making content submission mandatory and incorporating rewards into ,performance measurement, plans.,[43], Considerable controversy exists over whether such incentives work and no consensus has emerged.,[7], +,One strategy to KM involves actively managing knowledge (push strategy).,[7],[44], In such an instance, individuals strive to explicitly encode their knowledge into a shared knowledge repository, such as a ,database,, as well as retrieving knowledge they need that other individuals have provided (codification).,[44], +,Another strategy involves individuals making knowledge requests of experts associated with a particular subject on an ad hoc basis (pull strategy).,[7],[44], In such an instance, expert individual(s) provide ,insights, to requestor (personalisation).,[30], +,Hansen et al. defined the two strategies.,[45], Codification focuses on collecting and storing codified knowledge in electronic databases to make it accessible.,[46], Codification can therefore refer to both tacit and explicit knowledge.,[47], In contrast, personalization encourages individuals to share their knowledge directly.,[46], Information technology plays a less important role, as it is only facilitates communication and knowledge sharing., +,Other knowledge management strategies and instruments for companies include:,[7],[24],[30], +, +,Knowledge sharing (fostering a culture that encourages the sharing of information, based on the concept that knowledge is not irrevocable and should be shared and updated to remain relevant), +,Storytelling, (as a means of transferring tacit knowledge), +,Cross-project learning, +,Make knowledge-sharing as a key roles in employees' job description, +,After-action reviews, +,Knowledge mapping (a map of knowledge repositories within a company accessible by all), +,Communities of practice, +,Expert directories (to enable knowledge seeker to reach to the experts), +,Expert systems, (knowledge seeker responds to one or more specific questions to reach knowledge in a repository), +,Best practice transfer, +,Knowledge fairs, +,Competence management (systematic evaluation and planning of competences of individual organisation members), +,Proximity & architecture (the physical situation of employees can be either conducive or obstructive to knowledge sharing), +,Master–apprentice relationship, Mentor-mentee relationship, Job-shadowing, +,Collaborative software, technologies (wikis, shared bookmarking, blogs, ,social software,, etc.), +,Knowledge repositories (databases, ,bookmarking engines,, etc.), +,Measuring and reporting intellectual capital (a way of making explicit knowledge for companies), +,Knowledge brokers, (some organisational members take on responsibility for a specific ""field"" and act as first reference on a specific subject), +,Inter-project knowledge transfer, +,Intra-organizational knowledge sharing, +,Inter-organizational knowledge sharing, +, +,Motivations,[,edit,], +,Multiple ,motivation,s lead organisations to undertake KM.,[35], Typical considerations include:,[30], +, +,Making available increased knowledge content in the ,development, and provision of ,products, and ,services, +,Achieving shorter development cycles, +,Facilitating and managing innovation and organisational learning, +,Leveraging ,expertise,s across the organisation, +,Increasing ,network, ,connectivity, between internal and external individuals, +,Managing business environments and allowing employees to obtain relevant insights and ,ideas, appropriate to their work, +,Solving intractable or ,wicked problems, +,Managing intellectual capital and assets in the workforce (such as the expertise and ,know-how, possessed by key individuals or stored in repositories), +, +,KM technologies,[,edit,], +,Knowledge management (KM) technology can be categorised:, +, +,Groupware,—Software that facilitates collaboration and sharing of organisational information. One of the earliest successful products in this category was ,Lotus Notes,: it provided tools for ,threaded discussions,, ,document sharing,, organisation-wide uniform email, etc., +,Workflow systems,—Systems that allow the representation of processes associated with the creation, use and maintenance of organisational knowledge. For example, the process to create and utilise forms and documents., +,Content management, and ,document management, systems—Software systems that automate the process of creating web content and/or documents. Roles such as editors, graphic designers, writers and producers can be explicitly modeled along with the tasks in the process and validation criteria. Commercial vendors started either to support documents (e.g. ,Documentum,) or to support web content (e.g. ,Interwoven,) but as the Internet grew these functions merged and vendors now perform both functions., +,Enterprise portals,—Software that aggregates information across the entire organisation or for groups such as project teams (e.g. ,Microsoft SharePoint,)., +,eLearning,—Software that enables organisations to create customised training and education. This can include lesson plans, monitoring progress and online classes., +,Planning and ,scheduling software,—Software that automates schedule creation and maintenance (e.g. ,Microsoft Outlook,). The planning aspect can integrate with ,project management software, such as ,Microsoft Project,.,[22], +,Telepresence,—Software that enables individuals to have virtual ""face-to-face"" meetings without assembling at one location. Videoconferencing is the most obvious example., +, +,These categories overlap. Workflow, for example, is a significant aspect of a content or document management systems, most of which have tools for developing enterprise portals.,[7],[48], +,Proprietary KM technology products such as Lotus Notes defined proprietary formats for email, documents, forms, etc. The Internet drove most vendors to adopt Internet formats. ,Open-source, and ,freeware, tools for the creation of ,blogs, and ,wikis, now enable capabilities that used to require expensive commercial tools.,[34],[49], +,KM is driving the adoption of tools that enable organisations to work at the semantic level,,[50], as part of the ,Semantic Web,:,[51], for example, the ,Stanford, ,Protégé Ontology Editor,. Some commentators have argued that after many years the Semantic Web has failed to see widespread adoption,,[52],[53],[54], while other commentators have argued that it has been a success.,[55], +,Legal knowledge management,[,edit,], +,Knowledge management in law firms has evolved through three phases.,[56],  Phase one focused primarily on the development of taxonomies to systematize attorney work product and related research.  The second phase focused on enterprise search to mine the growing volume of information managed by law firms.  Legal industry specific search engines were deployed by many AmLaw 100 law firms during this phase. Phase 3 was driven by changes in the legal market place and growing competition that led to price pressure and increased demands for efficiency from clients. A major focus of law firm KM today is in using historical billing information to generate alternative fee arrangements and more generally in the area of legal project management to more efficiently deliver legal services to clients., +,See also,[,edit,], +, +, +,Customer knowledge, +,Electronic Journal of Knowledge Management, +,Ignorance management, +,Information management, +,Information governance, +,Journal of Knowledge Management, +,Journal of Knowledge Management Practice, +,Knowledge cafe, +,Knowledge community, +,Knowledge ecosystem, +,Knowledge engineering, +,Knowledge management software, +,Knowledge modeling, +,Knowledge transfer, +,Knowledge translation, +,Legal case management, +, +, +,References,[,edit,], +, +, +,^, ,Girard, John P.; Girard, JoAnn L. (2015). ,""Defining knowledge management: Toward an applied compendium"", ,(PDF),. ,Online Journal of Applied Knowledge Management,. ,3, (1): 14., , +,^ ,a, ,b, ,c, ,d, ,e, ,f, ,g, ,""Introduction to Knowledge Management"",. ,www.unc.edu,. University of North Carolina at Chapel Hill. Archived from the original on March 19, 2007,. Retrieved ,11 September, 2014,., ,CS1 maint: Unfit url (,link,), +,^ ,a, ,b, ,Nonaka, Ikujiro (1991). ""The knowledge creating company"". ,Harvard Business Review,. ,69, (6): 96–104., , +,^ ,a, ,b, ,Nonaka, Ikujiro; von Krogh, Georg (2009). ""Tacit Knowledge and Knowledge Conversion: Controversy and Advancement in Organizational Knowledge Creation Theory"". ,Organization Science,. ,20, (3): 635–652. ,doi,:,10.1287/orsc.1080.0412,., , +,^, ,Bellinger, Gene,. ,""Mental Model Musings"",. ,Systems Thinking Blog,. Retrieved ,18 April, 2013,., , +,^ ,a, ,b, ,c, ,d, ,Addicot, Rachael; McGivern, Gerry; Ferlie, Ewan (2006). ""Networks, Organizational Learning and Knowledge Management: NHS Cancer Networks"". ,Public Money & Management,. ,26, (2): 87–94. ,doi,:,10.1111/j.1467-9302.2006.00506.x,., , +,^ ,a, ,b, ,c, ,d, ,e, ,f, ,Gupta, Jatinder; Sharma, Sushil (2004). ,Creating Knowledge Based Organizations,. Boston: Idea Group Publishing. ,ISBN, ,1-59140-163-1,., , +,^, ,Maier, R. (2007). ,Knowledge Management Systems: Information And Communication Technologies for Knowledge Management (3rd edition),. Berlin: Springer., , +,^, ,Sanchez, R (1996) Strategic Learning and Knowledge Management, Wiley, Chichester, +,^ ,a, ,b, ,c, ,Sanchez, R. (1996). ,Strategic Learning and Knowledge Management,. Chichester: Wiley., , +,^ ,a, ,b, ,c, ,Wright, Kirby (2005). ""Personal knowledge management: supporting individual knowledge worker performance"". ,Knowledge Management Research and Practice,. ,3, (3): 156–165. ,doi,:,10.1057/palgrave.kmrp.8500061,., , +,^ ,a, ,b, ,Booker, Lorne; Bontis, Nick; Serenko, Alexander (2008). ""The relevance of knowledge management and intellectual capital research"". ,Knowledge and Process Management,. ,15, (4): 235–246. ,doi,:,10.1002/kpm.314,., , +,^ ,a, ,b, ,Morey, Daryl; Maybury, Mark; Thuraisingham, Bhavani (2002). ,Knowledge Management: Classic and Contemporary Works,. MIT Press. p. 451. ,ISBN, ,0-262-13384-9,., , +,^ ,a, ,b, ,McInerney, Claire (2002). ""Knowledge Management and the Dynamic Nature of Knowledge"". ,Journal of the American Society for Information Science and Technology,. ,53, (12): 1009–1018. ,doi,:,10.1002/asi.10109,., , +,^ ,a, ,b, ,""Information Architecture and Knowledge Management"",. Kent State University. Archived from ,the original, on June 29, 2008,. Retrieved ,18 April, 2013,., , +,^ ,a, ,b, ,c, ,d, ,Bray, David. ""SSRN-Literature Review – Knowledge Management Research at the Organizational Level"". ,Papers.ssrn.com,. ,SSRN, ,991169, ,., , ,Missing or empty ,|url=, (,help,);, ,|access-date=, requires ,|url=, (,help,), +,^, ,Davenport, Tom. ,""Enterprise 2.0: The New, New Knowledge Management?"",. ,Harvard Business Review,. Retrieved ,18 April, 2013,., , +,^, ,Stewart, Thomas A. (1998). ,Intellectual Capital: The New Wealth of Organizations,. Crown Business Publishers. ,ISBN, ,0385483813,., , +,^, ,Serenko, Alexander; Bontis, Nick; Booker, Lorne; Sadeddin, Khaled; Hardie, Timothy (2010). ""A scientometric analysis of knowledge management and intellectual capital academic literature (1994–2008)"". ,Journal of Knowledge Management,. ,14, (1): 13–23. ,doi,:,10.1108/13673271011015534,., , +,^, ,Serenko, Alexander; Bontis, Nick (2017). ,""Global Ranking of Knowledge Management and Intellectual Capital Academic Journals: 2017 Update"", ,(PDF),. ,Journal of Knowledge Management,. ,21, (3): 675–692. ,doi,:,10.1108/JKM-11-2016-0490,., , +,^, ,Langton Robbins, N. S. (2006). ,Organizational Behaviour (Fourth Canadian Edition),. Toronto, Ontario: Pearson Prentice Hall., , +,^ ,a, ,b, ,Alavi, Maryam; Leidner, Dorothy E. (1999). ,""Knowledge management systems: issues, challenges, and benefits"",. ,Communications of the AIS,. ,1, (2)., , +,^, ,Rosner, D.; Grote, B.; Hartman, K.; Hofling, B.; Guericke, O. (1998). ""From natural language documents to sharable product knowledge: a knowledge engineering approach"". In Borghoff, Uwe M.; Pareschi, Remo. ,Information technology for knowledge management,. Springer Verlag. pp. 35–51., , +,^ ,a, ,b, ,Bray, David. ""SSRN-Knowledge Ecosystems: A Theoretical Lens for Organizations Confronting Hyperturbulent Environments"". ,Papers.ssrn.com,. ,SSRN, ,984600, ,., , ,Missing or empty ,|url=, (,help,), +,^, ,Carlson Marcu Okurowsk, Lynn; Marcu, Daniel; Okurowsk, Mary Ellen. ,""Building a Discourse-Tagged Corpus in the Framework of Rhetorical Structure Theory"", ,(PDF),. University of Pennsylvania. Archived from ,the original, ,(PDF), on 25 March 2012,. Retrieved ,19 April, 2013,., , +,^, ,Spender, J.-C.; Scherer, A. G. (2007). ""The Philosophical Foundations of Knowledge Management: Editors' Introduction"". ,Organization,. ,14, (1): 5–28. ,doi,:,10.1177/1350508407071858,. ,SSRN, ,958768, ,., , +,^, ,""TeacherBridge: Knowledge Management in Communities of Practice"", ,(PDF),. Virginia Tech. Archived from ,the original, ,(PDF), on 17 December 2008,. Retrieved ,18 April, 2013,., , +,^, ,Groth, Kristina. ,""Using social networks for knowledge management"", ,(PDF),. Royal Institute of Technology, Stockholm, Sweden,. Retrieved ,18 April, 2013,., , +,^ ,a, ,b, ,Bontis, Nick; Choo, Chun Wei (2002). ,The Strategic Management of Intellectual Capital and Organizational Knowledge,. New York: Oxford University Press. ,ISBN, ,0-19-513866-X,., , +,^ ,a, ,b, ,c, ,d, ,e, ,Snowden, Dave (2002). ""Complex Acts of Knowing – Paradox and Descriptive Self Awareness"". ,Journal of Knowledge Management, Special Issue,. ,6, (2): 100–111. ,doi,:,10.1108/13673270210424639,., , +,^, ,Nanjappa, Aloka; Grant, Michael M. (2003). ,""Constructing on constructivism: The role of technology"", ,(PDF),. ,Electronic Journal for the Integration of Technology in Education,. ,2, (1). Archived from ,the original, ,(PDF), on 2008-12-17., , +,^, ,Wyssusek, Boris. ,""Knowledge Management - A Sociopragmatic Approach (2001)"",. ,CiteSeerX,. Retrieved ,18 April, 2013,., , +,^, ,Ferguson, J. (2005). ""Bridging the gap between research and practice"". ,Knowledge Management for Development Journal,. ,1, (3): 46–54., , +,^ ,a, ,b, ,Andriessen, Daniel (2004). ""Reconciling the rigor-relevance dilemma in intellectual capital research"". ,The Learning Organization,. ,11, (4/5): 393–401. ,doi,:,10.1108/09696470410538288,., , +,^ ,a, ,b, ,Alavi, Maryam; Leidner, Dorothy E. (2001). ""Review: Knowledge Management and Knowledge Management Systems: Conceptual Foundations and Research Issues"". ,MIS Quarterly,. ,25, (1): 107–136. ,doi,:,10.2307/3250961,. ,JSTOR, ,3250961,., , +,^ ,a, ,b, ,Nonaka, Ikujiro; Takeuchi, Hirotaka (1995). ,The knowledge creating company: how Japanese companies create the dynamics of innovation,. New York: Oxford University Press. p. 284. ,ISBN, ,978-0-19-509269-1,., , +,^ ,a, ,b, ,c, ,Hayes, M.; Walsham, G. (2003). ""Knowledge sharing and ICTs: A relational perspective"". In Easterby-Smith, M.; Lyles, M.A. ,The Blackwell Handbook of Organizational Learning and Knowledge Management,. Malden, MA: Blackwell. pp. 54–77. ,ISBN, ,978-0-631-22672-7,., , +,^, ,""Rhetorical Structure Theory Website"",. ,RST,. Retrieved ,19 April, 2013,., , +,^, ,Serenko, Alexander; Bontis, Nick (2004). ,""Meta-review of knowledge management and intellectual capital literature: citation impact and research productivity rankings"", ,(PDF),. ,Knowledge and Process Management,. ,11, (3): 185–198. ,doi,:,10.1002/kpm.203,. Archived from ,the original, ,(PDF), on 2007-09-26., , +,^, ,Nonaka, I.; von Krogh, G. & Voelpel S. (2006). ""Organizational knowledge creation theory: Evolutionary paths and future advances"". ,Organization Studies,. ,27, (8): 1179–1208. ,doi,:,10.1177/0170840606066312,., , +,^, ,Sensky, Tom (2002). ""Knowledge Management"". ,Advances in Psychiatric Treatment,. ,8, (5): 387–395. ,doi,:,10.1192/apt.8.5.387,., , +,^ ,a, ,b, ,""SSRN-Exploration, Exploitation, and Knowledge Management Strategies in Multi-Tier Hierarchical Organizations Experiencing Environmental Turbulence by David Bray"". Papers.ssrn.com. ,SSRN, ,961043, ,., , ,Missing or empty ,|url=, (,help,);, ,|access-date=, requires ,|url=, (,help,), +,^, ,Benbasat, Izak; Zmud, Robert (1999). ""Empirical research in information systems: The practice of relevance"". ,MIS Quarterly,. ,23, (1): 3–16. ,doi,:,10.2307/249403,. ,JSTOR, ,249403,., , +,^ ,a, ,b, ,c, ,""Knowledge Management for Data Interoperability"", ,(PDF),. Retrieved ,18 April, 2013,., , +,^, ,Hansen et al., 1999, +,^ ,a, ,b, ,Smith (2004), p. 7, +,^, ,Hall (2006), pp. 119f, +,^, ,Rao, Madanmohan (2005). ,Knowledge Management Tools and Techniques,. Elsevier. pp. 3–42. ,ISBN, ,0-7506-7818-6,., , +,^, ,Calvin, D. Andrus (2005). ""The Wiki and the Blog: Toward a Complex Adaptive Intelligence Community"". ,Studies in Intelligence,. ,49, (3). ,SSRN, ,755904, ,., , +,^, ,Capozzi, Marla M. (2007). ""Knowledge Management Architectures Beyond Technology"". ,First Monday,. ,12, (6). ,doi,:,10.5210/fm.v12i6.1871,., , +,^, ,Berners-Lee, Tim; Hendler, James; Lassila, Ora (May 17, 2001). ,""The Semantic Web A new form of Web content that is meaningful to computers will unleash a revolution of new possibilities"",. ,Scientific American,. ,284,: 34–43. ,doi,:,10.1038/scientificamerican0501-34,. Archived from ,the original, on April 24, 2013., , +,^, ,Bakke, Sturla; ygstad, Bendik (May 2009). ,""Two emerging technologies: a comparative analysis of Web 2.0 and the Semantic Web"",. ,CONF-IRM 2009 Proceedings, (28). ,Our research question is: how do we explain the surprising success of Web 2.0 and the equally surprising non-fulfillment of the Semantic Web. Building on a case study approach we conducted a in depth comparative analysis of the two emerging technologies. We propose two conclusions. First, traditional top-down management of an emerging global technology has proved not to be effective in the case of the Semantic Web and Web 2.0, and second, the success for such global technologies is mainly associated with bootstrapping an already installed base., , +,^, ,Grimes, Seth (7 January 2014). ,""Semantic Web business: going nowhere slowly"",. ,InformationWeek,. Retrieved ,5 September, 2017,. ,SemWeb is a narrowly purposed replica of a subset of the World Wide Web. It's useful for information enrichment in certain domains, via a circumscribed set of tools. However, the SemWeb offers a vanishingly small benefit to the vast majority of businesses. The vision persists but is unachievable; the business reality of SemWeb is going pretty much nowhere., , +,^, ,Cagle, Kurt (3 July 2016). ,""Why the Semantic Web has failed"",. ,LinkedIn,. Retrieved ,5 September, 2017,. ,This may sound like heresy, but my personal belief is that the semantic web has failed. Not in ""just give it a few more years and it'll catch on"" or ""it's just a matter of tooling and editors"". No, I'd argue that, as admirable as the whole goal of the semantic web is, it's just not working in reality., , +,^, ,Zaino, Jennifer (23 September 2014). ,""The Semantic Web's rocking, and there ain't no stopping it now"",. ,dataversity.net,. Retrieved ,5 September, 2017,. ,Make no mistake about it: The semantic web has been a success and that's not about to stop now. That was essentially the message delivered by W3C Data Activity Lead Phil Archer, during his keynote address celebrating the semantic web's ten years of achievement at last month's Semantic Technology & Business Conference in San Jose., , +,^, ,Winston, A. M. (2014). Law firm knowledge management: selected annotated bibliography. ,Law Library Journal, 106(2), 175-198., +, +, +,External links,[,edit,], +, +, +, +,Wikiquote has quotations related to: ,Knowledge management, +, +, +, +,Knowledge management, at Curlie (based on ,DMOZ,), +, +, +, +, +, +, +, +,v, +,t, +,e, +, +, +,Knowledge management, +, +, +, +,Main articles, +, +, +, +,Personal knowledge management, +,Knowledge worker, +,Intellectual capital, +,Chief knowledge officer, +,Collective intelligence, +, +, +, +, +, +,Related to electronic systems, +, +, +, +,Enterprise content management, +,Knowledge management software, +, +, +, +, +, +,Related, +, +, +, +,Community of practice, +,Design rationale, +,Knowledge, +, +, +, +, +, +,Journals, +, +, +, +,Knowledge Management Research and Practice, +, +, +, +, +, +, +, +, +, +,Authority control, +, +, +, +,GND,: ,4561842-2, +,NDL,: ,00947301, +, +, +, +, +, +, + + +, +, +, +, +",Knowledge management +" 15 December 2017, at 17:26.","""Blogger"" redirects here. For the Google service with same name, see ,Blogger (service),. For other uses, see ,Blog (disambiguation),., +,Not to be confused with ,.blog,., +, +, +,Journalism, +, +, +, +, +, +, +, +,News, +,Writing style, +,Ethics, +,Objectivity, +,News values, +,Attribution, +,Defamation, +,Editorial independence, +,Journalism school, +,Index of journalism articles, +, +, +, +, +,Areas, +, +, +, +, +,Arts, +,Business, +,Data, +,Entertainment, +,Environment, +,Fashion, +,Medicine, +,Politics, +,Science, +,Sports, +,Technology, +,Trade, +,Traffic, +,Weather, +,World, +, +, +, +, +,Genres, +, +, +, +, +,Advocacy, +,Analytic, +,Blogging, +,Broadcast, +,Citizen, +,Civic, +,Collaborative, +,Comics-based, +,Community, +,Data, +,Database, +,Gonzo, +,Immersion, +,Investigative, +,Literary, +,Muckraking, +,Narrative, +,"",New Journalism,"", +,Non-profit, +,Online, +,Opinion, +,Peace, +,Photojournalism, +,Scientific, +,Sensor, +,Underground, +,Visual, +,Watchdog, +, +, +, +, +,Social impact, +, +, +, +, +,Fake news, +,Fourth Estate, +,Fifth Estate, +,Freedom of the press, +,Infotainment, +,Media bias, +,Public relations, +,Press service, +,Propaganda model, +,Yellow journalism, +, +, +, +, +,News media, +, +, +, +, +,Newspapers, +,Magazines, +,TV and radio, +,Internet, +,News agencies, +,Alternative media, +, +, +, +, +,Roles, +, +, +, +, +,Journalists ,(reporters), +,Columnist, +,Blogger, +,Editor, +,Copy editor, +,Meteorologist, +,News presenter, +,Photographer, +,Pundit / commentator, +, +, +, +, +, +, +, ,Journalism portal, +,Category: Journalism, +, +, +, +, +, +, +, +,v, +,t, +,e, +, +, +, +, +, +,A ,blog, (a ,truncation, of the expression "",weblog,""),[1], is a discussion or informational ,website, published on the ,World Wide Web, consisting of discrete, often informal ,diary,-style text entries (""posts""). Posts are typically displayed in reverse chronological order, so that the most recent post appears first, at the top of the web page. Until 2009, blogs were usually the work of a single individual,,[,citation needed,], occasionally of a small group, and often covered a single subject or topic. In the 2010s, ""multi-author blogs"" (MABs) have developed, with posts written by large numbers of authors and sometimes professionally edited. MABs from ,newspapers,, other media outlets, ,universities,, ,think tanks,, ,advocacy groups,, and similar institutions account for an increasing quantity of blog traffic. The rise of ,Twitter, and other "",microblogging,"" systems helps integrate MABs and single-author blogs into the news media. ,Blog, can also be used as a verb, meaning ,to maintain or add content to a blog,., +,The emergence and growth of blogs in the late 1990s coincided with the advent of web publishing tools that facilitated the posting of content by non-technical users who did not have much experience with ,HTML, or ,computer programming,. Previously, a knowledge of such technologies as ,HTML, and ,File Transfer Protocol, had been required to publish content on the Web, and as such, early Web users tended to be ,hackers, and computer enthusiasts. In the 2010s, the majority are interactive ,Web 2.0, websites, allowing visitors to leave online comments, and it is this interactivity that distinguishes them from other static websites.,[2], In that sense, blogging can be seen as a form of ,social networking service,. Indeed, bloggers do not only produce content to post on their blogs, but also often build social relations with their readers and other bloggers.,[3], However, there are high-readership blogs which do not allow comments., +,Many blogs provide commentary on a particular subject or topic, ranging from politics to sports. Others function as more personal ,online diaries,, and others function more as ,online brand advertising, of a particular individual or company. A typical blog combines text, digital images, and links to other blogs, ,web pages,, and other media related to its topic. The ability of readers to leave publicly viewable comments, and interact with other commenters, is an important contribution to the popularity of many blogs. However, blog owners or authors often moderate and filter online comments to remove ,hate speech, or other offensive content. Most blogs are primarily textual, although some focus on art (,art blogs,), photographs (,photoblogs,), videos (,video blogs, or ""vlogs""), music (,MP3 blogs,), and audio (,podcasts,). In education, blogs can be used as instructional resources. These blogs are referred to as ,edublogs,. ,Microblogging, is another type of blogging, featuring very short posts., +,On 16 February 2011,[update],, there were over 156 million public blogs in existence. On 20 February 2014, there were around 172 million ,Tumblr,[4], and 75.8 million ,WordPress,[5], blogs in existence worldwide. According to critics and other bloggers, ,Blogger, is the most popular blogging service used today. However, Blogger does not offer public statistics.,[6],[7], ,Technorati, lists 1.3 million blogs as of February 22, 2014.,[8], +, +, +, +,Contents, +, +, +,1, ,History, +, +,1.1, ,Origins, +,1.2, ,Rise in popularity, +,1.3, ,Political impact, +,1.4, ,Mainstream popularity, +, +, +,2, ,Types, +,3, ,Community and cataloging, +,4, ,Popularity, +,5, ,Blurring with the mass media, +,6, ,Consumer-generated advertising, +,7, ,Legal and social consequences, +, +,7.1, ,Defamation or liability, +,7.2, ,Employment, +, +,7.2.1, ,Business owners, +, +, +,7.3, ,Political dangers, +,7.4, ,Personal safety, +,7.5, ,Behavior, +, +, +,8, ,See also, +,9, ,References, +,10, ,Further reading, +,11, ,External links, +, +, +, +,History, +, +, +, +, +Early example of a ""diary"" style blog consisting of text and images transmitted wirelessly in ,real time, from a ,wearable computer, with ,head-up display,, 22 February 1995, +, +, +,Main articles: ,History of blogging, and ,online diary, +,The term ""weblog"" was coined by ,Jorn Barger,[9], on 17 December 1997. The short form, ""blog"", was coined by Peter Merholz, who jokingly broke the word ,weblog, into the phrase ,we blog, in the sidebar of his blog Peterme.com in April or May 1999.,[10],[11],[12], Shortly thereafter, ,Evan Williams, at ,Pyra Labs, used ""blog"" as both a noun and verb (""to blog"", meaning ""to edit one's weblog or to post to one's weblog"") and devised the term ""blogger"" in connection with Pyra Labs' ,Blogger, product, leading to the popularization of the terms.,[13], +,Origins, +,Before blogging became popular, digital communities took many forms, including ,Usenet,, commercial online services such as ,GEnie,, ,Byte Information Exchange, (BIX) and the early ,CompuServe,, ,e-mail lists,,,[14], and ,Bulletin Board Systems, (BBS). In the 1990s, ,Internet forum, software, created running conversations with ""threads"". Threads are topical connections between messages on a virtual "",corkboard,"". From 14 June 1993, Mosaic Communications Corporation maintained their ""What’s New"",[15], list of new websites, updated daily and archived monthly. The page was accessible by a special ""What's New"" button in the Mosaic web browser., +,The modern blog evolved from the ,online diary,, where people would keep a running account of the events in their personal lives. Most such writers called themselves diarists, ,journalists,, or journalers. ,Justin Hall,, who began personal blogging in 1994 while a student at ,Swarthmore College,, is generally recognized as one of the earlier bloggers,,[16], as is ,Jerry Pournelle,.,[17], ,Dave Winer,'s Scripting News is also credited with being one of the older and longer running weblogs.,[18],[19], The Australian Netguide magazine maintained the Daily Net News,[20], on their web site from 1996. Daily Net News ran links and daily reviews of new websites, mostly in Australia., +,Another early blog was Wearable Wireless Webcam, an online shared diary of a person's personal life combining text, digital video, and digital pictures transmitted live from a wearable computer and ,EyeTap, device to a web site in 1994. This practice of semi-automated blogging with live video together with text was referred to as ,sousveillance,, and such journals were also used as evidence in legal matters. Early blogs were simply manually updated components of common ,Websites,. However, the evolution of electronic and software tools to facilitate the production and maintenance of Web articles posted in reverse chronological order made the publishing process feasible to a much larger, less technical, population. Ultimately, this resulted in the distinct class of online publishing that produces blogs we recognize today. For instance, the use of some sort of browser-based software is now a typical aspect of ""blogging"". Blogs can be hosted by dedicated ,blog hosting services,, or they can be run using blog software, or on regular ,web hosting services,. Some early bloggers, such as ,The Misanthropic Bitch,, who began in 1997, actually referred to their online presence as a ,zine,, before the term blog entered common usage., +,Rise in popularity, +,After a slow start, blogging rapidly gained in popularity. Blog usage spread during 1999 and the years following, being further popularized by the near-simultaneous arrival of the first hosted blog tools:, +, +,Bruce Ableson, launched ,Open Diary, in October 1998, which soon grew to thousands of online diaries. Open Diary innovated the reader comment, becoming the first blog community where readers could add comments to other writers' blog entries., +,Brad Fitzpatrick, started ,LiveJournal, in March 1999., +,Andrew Smales created Pitas.com in July 1999 as an easier alternative to maintaining a ""news page"" on a Web site, followed by DiaryLand in September 1999, focusing more on a personal diary community.,[21], +,Evan Williams, and ,Meg Hourihan, (,Pyra Labs,) launched ,Blogger.com, in August 1999 (purchased by ,Google, in February 2003), +, +,Political impact, +, +, +, +, +On 6 December 2002, Josh Marshall's talkingpointsmemo.com blog called attention to U.S. Senator ,Lott's, comments regarding Senator Thurmond. Senator Lott was eventually to resign his Senate leadership position over the matter., +, +, +,An early milestone in the rise in importance of blogs came in 2002, when many bloggers focused on comments by ,U.S. Senate Majority Leader, ,Trent Lott,.,[22], Senator Lott, at a party honoring ,U.S. Senator, ,Strom Thurmond,, praised Senator Thurmond by suggesting that the United States would have been better off had Thurmond been elected president. Lott's critics saw these comments as a tacit approval of ,racial segregation,, a policy advocated by Thurmond's ,1948 presidential campaign,. This view was reinforced by documents and recorded interviews dug up by bloggers. (See ,Josh Marshall,'s ,Talking Points Memo,.) Though Lott's comments were made at a public event attended by the media, no major media organizations reported on his controversial comments until after blogs broke the story. Blogging helped to create a political crisis that forced Lott to step down as majority leader., +,Similarly, blogs were among the driving forces behind the "",Rathergate,"" scandal. To wit: (television journalist) ,Dan Rather, presented documents (on the CBS show ,60 Minutes,) that conflicted with accepted accounts of President Bush's military service record. Bloggers declared the documents to be ,forgeries, and presented evidence and arguments in support of that view. Consequently, CBS apologized for what it said were inadequate reporting techniques (see ,Little Green Footballs,). Many bloggers view this scandal as the advent of blogs' acceptance by the mass media, both as a news source and opinion and as means of applying political pressure.,[,original research?,], The impact of these stories gave greater credibility to blogs as a medium of news dissemination. Though often seen as partisan gossips,,[,citation needed,], bloggers sometimes lead the way in bringing key information to public light, with mainstream media having to follow their lead. More often, however, news blogs tend to react to material already published by the mainstream media. Meanwhile, an increasing number of experts blogged, making blogs a source of in-depth analysis.,[,original research?,], +,In ,Russia,, some political bloggers have started to challenge the dominance of official, overwhelmingly pro-government media. Bloggers such as ,Rustem Adagamov, and ,Alexei Navalny, have many followers and the latter's nickname for the ruling ,United Russia, party as the ""party of crooks and thieves"" has been adopted by anti-regime protesters.,[23], This led to the ,Wall Street Journal, calling Navalny ""the man ,Vladimir Putin, fears most"" in March 2012.,[24], +,Mainstream popularity, +,By 2004, the role of blogs became increasingly mainstream, as ,political consultants,, news services, and candidates began using them as tools for outreach and opinion forming. Blogging was established by politicians and political candidates to express opinions on war and other issues and cemented blogs' role as a news source. (See ,Howard Dean, and ,Wesley Clark,.) Even politicians not actively campaigning, such as the ,UK's Labour Party's, ,MP, ,Tom Watson,, began to blog to bond with constituents. In January 2005, ,Fortune, magazine listed eight bloggers whom business people ""could not ignore"": ,Peter Rojas,, ,Xeni Jardin,, ,Ben Trott,, ,Mena Trott,, ,Jonathan Schwartz,, Jason Goldman, ,Robert Scoble,, and ,Jason Calacanis,.,[25], +,Israel, was among the first national governments to set up an official blog.,[26], Under ,David Saranga,, the ,Israeli Ministry of Foreign Affairs, became active in adopting ,Web 2.0, initiatives, including an official ,video blog,[26], and a ,political blog,.,[27], The Foreign Ministry also held a ,microblogging, press conference via ,Twitter, about its ,war with Hamas,, with Saranga answering questions from the public in common text-messaging abbreviations during a live worldwide ,press conference,.,[28], The questions and answers were later posted on ,IsraelPolitik,, the country's official political blog.,[29], +,The impact of blogging upon the mainstream media has also been acknowledged by governments. In 2009, the presence of the American journalism industry had declined to the point that several newspaper corporations were filing for bankruptcy, resulting in less direct competition between newspapers within the same circulation area. Discussion emerged as to whether the newspaper industry would benefit from a stimulus package by the federal government. U.S. President ,Barack Obama, acknowledged the emerging influence of blogging upon society by saying ""if the direction of the news is all blogosphere, all opinions, with no serious fact-checking, no serious attempts to put stories in context, then what you will end up getting is people shouting at each other across the void but not a lot of mutual understanding”.,[30], Between 2009 and 2012, an ,Orwell Prize, for blogging was awarded., +,Types, +, +, +, +, +A screenshot from the BlogActive website., +, +, +,There are many different types of blogs, differing not only in the type of content, but also in the way that content is delivered or written., +, +,Personal blogs, +,The personal blog is an ongoing online diary or commentary written by an individual, rather than a corporation or organization. While the vast majority of personal blogs attract very few readers, other than the blogger's immediate family and friends, a small number of personal blogs have become popular, to the point that they have attracted lucrative advertising sponsorship. A tiny number of personal bloggers have become famous, both in the online community and in the real world., +, +, +,Collaborative blogs or group blogs, +,A type of weblog in which posts are written and published by more than one author. The majority of high-profile collaborative blogs are based around a single uniting theme, such as politics, technology or advocacy. In recent years, the ,blogosphere, has seen the emergence and growing popularity of more collaborative efforts, often set up by already established bloggers wishing to pool time and resources, both to reduce the pressure of maintaining a popular website and to attract a larger readership., +, +, +,Microblogging, +,Microblogging is the practice of posting small pieces of digital content—which could be text, pictures, links, short videos, or other media—on the Internet. Microblogging offers a portable communication mode that feels organic and spontaneous to many users. It has captured the public imagination, in part because the short posts are easy to read on the go or when waiting. Friends use it to keep in touch, business associates use it to coordinate meetings or share useful resources, and celebrities and politicians (or their publicists) microblog about concert dates, lectures, book releases, or tour schedules. A wide and growing range of add-on tools enables sophisticated updates and interaction with other applications. The resulting profusion of functionality is helping to define new possibilities for this type of communication.,[31], Examples of these include ,Twitter,, ,Facebook,, ,Tumblr, and, by far the largest, ,WeiBo,., +, +, +,Corporate and organizational blogs, +,A blog can be private, as in most cases, or it can be for ,business, or ,not-for-profit organization, or ,government, purposes. Blogs used internally, and only available to employees via an ,Intranet, are called ,corporate blogs,. Companies use internal corporate blogs enhance the communication, culture and ,employee engagement, in a ,corporation,. Internal corporate blogs can be used to communicate news about company policies or procedures, build employee ,esprit de corps, and improve ,morale,. Companies and other organizations also use external, publicly accessible blogs for ,marketing,, ,branding,, or ,public relations, purposes. Some organizations have a blog authored by their executive; in practice, many of these executive blog posts are penned by a ,ghostwriter,, who makes posts in the style of the credited author. Similar blogs for clubs and societies are called club blogs, group blogs, or by similar names; typical use is to inform members and other interested parties of club and member activities., +, +, +,Aggregated blogs, +,Individuals or organization may aggregate selected feeds on specific topic, product or service and provide combined view for its readers. This allows readers to concentrate on reading instead of searching for quality on-topic content and managing subscriptions. Many such aggregation called planets from name of ,Planet (software), that perform such aggregation, hosting sites usually have ,planet., ,subdomain, in ,domain name, (like ,http://planet.gnome.org/,)., +, +, +,By ,genre, +,Some blogs focus on a particular subject, such as ,political blogs,, journalism blogs, ,health blogs,, ,travel blogs, (also known as ,travelogs,), gardening blogs, house blogs, ,book blogs,,,[32],[33], ,fashion blogs,, beauty blogs, lifestyle blogs, party blogs, wedding blogs, photography blogs, ,project blogs,, psychology blogs, sociology blogs, ,education blogs,, ,niche blogs,, ,classical music blogs,, quizzing blogs, ,legal blogs, (often referred to as a blawgs), or ,dreamlogs,. ,How-to,/,Tutorial, blogs are becoming increasing popular.,[34], Two common types of genre blogs are ,art blogs, and ,music blogs,. A blog featuring discussions especially about ,home, and ,family, is not uncommonly called a ,mom blog, and one made popular is by ,Erica Diamond, who created Womenonthefence.com which is syndicated to over two million readers monthly.,[35],[36],[37],[38],[39],[40], While not a legitimate type of blog, one used for the sole purpose of spamming is known as a ,splog,., +, +, +,By media type, +,A blog comprising videos is called a ,vlog,, one comprising links is called a ,linklog,, a site containing a portfolio of sketches is called a ,sketchblog, or one comprising photos is called a ,photoblog,. Blogs with shorter posts and mixed media types are called ,tumblelogs,. Blogs that are written on typewriters and then scanned are called ,typecast, or typecast blogs. A rare type of blog hosted on the ,Gopher Protocol, is known as a ,phlog,., +, +, +,By device, +,A blog can also be defined by which type of device is used to compose it. A blog written by a ,mobile device, like a ,mobile phone, or ,PDA, could be called a ,moblog,.,[41], One early blog was Wearable Wireless Webcam, an online shared diary of a person's personal life combining text, video, and pictures transmitted live from a wearable computer and ,EyeTap, device to a web site. This practice of semi-automated blogging with live video together with text was referred to as ,sousveillance,. Such journals have been used as evidence in legal matters.,[,citation needed,], +, +, +,Reverse blog, +,A reverse blog is composed by its users rather than a single blogger. This system has the characteristics of a blog, and the writing of several authors. These can be written by several contributing authors on a topic, or opened up for anyone to write. There is typically some limit to the number of entries to keep it from operating like a ,web forum,.,[,citation needed,], +, +,Community and cataloging, +, +, +, +, +An artist's depiction of the interconnections between blogs and blog authors in the "",blogosphere,"" in 2007., +, +, +, +,Blogosphere, +,The collective community of all blogs and blog authors, particularly notable and widely read blogs, is known as the ,blogosphere,. Since all blogs are on the internet by definition, they may be seen as interconnected and socially networked, through blogrolls, comments, ,linkbacks, (refbacks, trackbacks or pingbacks), and backlinks. Discussions ""in the blogosphere"" are occasionally used by the media as a gauge of public opinion on various issues. Because new, untapped communities of bloggers and their readers can emerge in the space of a few years, ,Internet marketers, pay close attention to ""trends in the blogosphere"".,[42], +, +, +,Blog search engines, +,Several blog search engines have been used to search blog contents, such as ,Bloglines,, ,BlogScope,, and ,Technorati,. Technorati was one of the more popular blog search engines, but the website stopped indexing blogs and assigning authority scores in May 2014. The research community is working on going beyond simple keyword search, by inventing new ways to navigate through huge amounts of information present in the ,blogosphere,, as demonstrated by projects like ,BlogScope,, which was shut down in 2012.,[,citation needed,], +, +, +,Blogging communities and directories, +,Several ,online communities, exist that connect people to blogs and bloggers to other bloggers. Some of these communities include Indiblogger, Blogadda, Blog Chatter, BlogCatalog and ,MyBlogLog,.,[43], Interest-specific blogging platforms are also available. For instance, Blogster has a sizable community of political bloggers among its members. ,Global Voices, aggregates international bloggers, ""with emphasis on voices that are not ordinarily heard in international mainstream media."",[44], +, +, +,Blogging and ,advertising, +,It is common for blogs to feature ,banner advertisements, or promotional content, either to financially benefit the blogger, support website hosting costs, or to promote the blogger's favorite causes or products. The popularity of blogs has also given rise to ,""fake blogs"", in which a company will create a fictional blog as a marketing tool to promote a product.,[45], +, +,As the popularity of blogging continues to rise, the commercialisation of blogging is rapidly increasing. Many corporations and companies collaborate with bloggers to increase advertising and engage online communities towards their products. In the book ,Fans, Bloggers, and Gamers,, Henry Jenkins stated that ""Bloggers take knowledge in their own hands, enabling successful navigation within and between these emerging knowledge cultures. One can see such behaviour as co-optation into commodity culture insofar as it sometimes collaborates with corporate interests, but one can also see it as increasing the diversity of media culture, providing opportunities for greater inclusiveness, and making more responsive to consumers."",[46], +,Popularity, +, +, +, +, +, +, +,This section needs to be ,updated,. ,Please update this article to reflect recent events or newly available information., ,(April 2016), +, +, +, +,As of 2008, blogging had become such a mania that a new blog was created every second of every minute of every hour of every day.,[47], Researchers have actively analyzed the dynamics of how blogs become popular. There are essentially two measures of this: popularity through citations, as well as popularity through affiliation (i.e., blogroll). The basic conclusion from studies of the structure of blogs is that while it takes time for a blog to become popular through blogrolls, ,permalinks, can boost popularity more quickly, and are perhaps more indicative of popularity and authority than blogrolls, since they denote that people are actually reading the blog's content and deem it valuable or noteworthy in specific cases.,[48], +,The ,blogdex, project was launched by researchers in the ,MIT Media Lab, to crawl the Web and gather data from thousands of blogs in order to investigate their social properties. Information was gathered by the tool for over four years, during which it autonomously tracked the most contagious information spreading in the blog community, ranking it by recency and popularity. It can, therefore,,[,original research?,], be considered the first instantiation of a ,memetracker,. The project was replaced by ,tailrank.com, which in turn has been replaced by spinn3r.com., +,Blogs are given rankings by ,Alexa Internet, (web hits of Alexa Toolbar users), and formerly by blog search engine ,Technorati, based on the number of incoming links (Technorati stopped doing this in 2014). In August 2006, Technorati found that the most linked-to blog on the internet was that of Chinese actress ,Xu Jinglei,.,[49], Chinese media ,Xinhua, reported that this blog received more than 50 million page views, claiming it to be the most popular blog in the world.,[50], Technorati rated ,Boing Boing, to be the most-read group-written blog.,[49], +,Blurring with the mass media, +,Many bloggers, particularly those engaged in ,participatory journalism,, are amateur journalists, and thus they differentiate themselves from the professional reporters and editors who work in ,mainstream media, organizations. Other bloggers are media professionals who are publishing online, rather than via a TV station or newspaper, either as an add-on to a traditional media presence (e.g., hosting a radio show or writing a column in a paper newspaper), or as their sole journalistic output. Some institutions and organizations see blogging as a means of ""getting around the filter"" of media "",gatekeepers,"" and pushing their ,messages, directly to the public. Many mainstream journalists, meanwhile, write their own blogs—well over 300, according to CyberJournalist.net's J-blog list.,[,citation needed,], The first known use of a blog on a news site was in August 1998, when ,Jonathan Dube, of The ,Charlotte Observer, published one chronicling ,Hurricane Bonnie,.,[51], +,Some bloggers have moved over to other media. The following bloggers (and others) have appeared on radio and television: ,Duncan Black, (known widely by his pseudonym, Atrios), ,Glenn Reynolds, (,Instapundit,), ,Markos Moulitsas Zúniga, (,Daily Kos,), ,Alex Steffen, (,Worldchanging,), ,Ana Marie Cox, (,Wonkette,), ,Nate Silver, (,FiveThirtyEight.com,), and ,Ezra Klein, (Ezra Klein blog in ,The American Prospect,,, now in the ,Washington Post,). In counterpoint, ,Hugh Hewitt, exemplifies a mass media personality who has moved in the other direction, adding to his reach in ""old media"" by being an influential blogger. Similarly, it was ,Emergency Preparedness and Safety Tips On Air and Online, blog articles that captured ,Surgeon General of the United States, ,Richard Carmona,'s attention and earned his kudos for the associated broadcasts by talk show host ,Lisa Tolliver, and Westchester Emergency Volunteer Reserves-,Medical Reserve Corps, Director Marianne Partridge.,[52],[53],[54],[55], +,Blogs have also had an influence on ,minority languages,, bringing together scattered speakers and learners; this is particularly so with blogs in ,Gaelic languages,. Minority language publishing (which may lack economic feasibility) can find its audience through inexpensive blogging. There are examples of bloggers who have published books based on their blogs, e.g., ,Salam Pax,, ,Ellen Simonetti,, ,Jessica Cutler,, ,ScrappleFace,. Blog-based books have been given the name ,blook,. A prize for the best blog-based book was initiated in 2005,,[56], the ,Lulu Blooker Prize,.,[57], However, success has been elusive offline, with many of these books not selling as well as their blogs. The book based on ,Julie Powell,'s blog ""The Julie/Julia Project"" was made into the film ,Julie & Julia,, apparently the first to do so., +,Consumer-generated advertising, +,Consumer-generated advertising, is a relatively new and controversial development, and it has created a new model of marketing communication from businesses to consumers. Among the various forms of advertising on blog, the most controversial are the ,sponsored posts,.,[58], These are blog entries or posts and may be in the form of feedback, reviews, opinion, videos, etc. and usually contain a link back to the desired site using a keyword or several keywords. Blogs have led to some ,disintermediation, and a breakdown of the traditional advertising model, where companies can skip over the advertising agencies (previously the only interface with the customer) and contact the customers directly via social media websites. On the other hand, new companies specialised in blog advertising have been established, to take advantage of this new development as well. However, there are many people who look negatively on this new development. Some believe that any form of commercial activity on blogs will destroy the blogosphere’s credibility.,[59], +,Legal and social consequences, +, Blogging can result in a range of legal liabilities and other unforeseen consequences.,[60], +,Defamation or liability, +,Several cases have been brought before the national courts against bloggers concerning issues of ,defamation or liability,. U.S. payouts related to blogging totaled $17.4 million by 2009; in some cases these have been covered by ,umbrella insurance,.,[61], The courts have returned with mixed verdicts. ,Internet Service Providers, (ISPs), in general, are immune from liability for information that originates with third parties (U.S. ,Communications Decency Act, and the EU Directive 2000/31/EC). In ,Doe v. Cahill,, the ,Delaware Supreme Court, held that stringent standards had to be met to unmask the ,anonymous bloggers,, and also took the unusual step of dismissing the libel case itself (as unfounded under American libel law) rather than referring it back to the ,trial court, for reconsideration.,[62], In a bizarre twist, the Cahills were able to obtain the identity of John Doe, who turned out to be the person they suspected: the town's mayor, Councilman Cahill's political rival. The Cahills amended their original complaint, and the mayor settled the case rather than going to trial., +,In January 2007, two prominent ,Malaysian, political bloggers, ,Jeff Ooi, and ,Ahirudin Attan,, were sued by a pro-government newspaper, The New Straits Times Press (Malaysia) Berhad, Kalimullah bin Masheerul Hassan, Hishamuddin bin Aun and Brenden John a/l John Pereira over an alleged defamation. The plaintiff was supported by the Malaysian government.,[63], Following the suit, the Malaysian government proposed to ""register"" all bloggers in Malaysia in order to better control parties against their interest.,[64], This is the first such legal case against bloggers in the country. In the United States, blogger Aaron Wall was sued by Traffic Power for ,defamation, and publication of ,trade secrets, in 2005.,[65], According to ,Wired, magazine, Traffic Power had been ""banned from Google for allegedly rigging search engine results."",[66], Wall and other "",white hat,"" ,search engine optimization, consultants had exposed Traffic Power in what they claim was an effort to protect the public. The case was dismissed for lack of personal jurisdiction, and Traffic Power failed to appeal within the allowed time.,[67], +,In 2009, ,NDTV, issued a legal notice to Indian blogger Kunte for a blog post criticizing their coverage of the ,Mumbai attacks,.,[68], The blogger unconditionally withdrew his post, which resulted in several Indian bloggers criticizing NDTV for trying to silence critics.,[69], +,Employment, +,Employees who blog about elements of their place of employment can begin to affect the reputation of their employer, either in a positive way, if the employee is praising the employer and its workplaces, or in a negative way, if the blogger is making negative comments about the company or its practices., +,In general, attempts by employee bloggers to protect themselves by maintaining anonymity have proved ineffective.,[70], In 2009, a controversial and landmark decision by ,The Hon. Mr Justice Eady, refused to grant an order to protect the anonymity of ,Richard Horton,. Horton was a police officer in the United Kingdom who blogged about his job under the name ""NightJack"".,[71], +,Delta Air Lines, fired ,flight attendant, ,Ellen Simonetti, because she posted photographs of herself in uniform on an airplane and because of comments posted on her blog ""Queen of Sky: Diary of a Flight Attendant"" which the employer deemed inappropriate.,[72],[73], This case highlighted the issue of personal blogging and freedom of expression versus employer rights and responsibilities, and so it received wide media attention. Simonetti took legal action against the airline for ""wrongful termination, defamation of character and lost future wages"".,[74], The suit was postponed while Delta was in bankruptcy proceedings.,[75], +,In early 2006, Erik Ringmar, a senior lecturer at the ,London School of Economics,, was ordered by the convenor of his department to ""take down and destroy"" his blog in which he discussed the quality of education at the school.,[76], +,Mark Jen was terminated in 2005 after 10 days of employment as an assistant product manager at ,Google, for discussing corporate secrets on his personal blog, then called 99zeros and hosted on the Google-owned ,Blogger, service.,[77], He blogged about unreleased products and company finances a week before the company's earnings announcement. He was fired two days after he complied with his employer's request to remove the sensitive material from his blog.,[78], +,In India, blogger Gaurav Sabnis resigned from ,IBM, after his posts questioned the claims made by a management school.,[79], ,Jessica Cutler,, aka ""The Washingtonienne"",,[80], blogged about her sex life while employed as a congressional assistant. After the blog was discovered and she was fired,,[81], she wrote a novel based on her experiences and blog: ,The Washingtonienne: A Novel,. As of 2006,[update],, Cutler is being sued by one of her former lovers in a case that could establish the extent to which bloggers are obligated to protect the privacy of their real life associates.,[82], +,Catherine Sanderson, a.k.a. ,Petite Anglaise,, lost her job in Paris at a British accountancy firm because of blogging.,[83], Although given in the blog in a fairly anonymous manner, some of the descriptions of the firm and some of its people were less than flattering. Sanderson later won a compensation claim case against the British firm, however.,[84], +,On the other hand, ,Penelope Trunk, wrote an upbeat article in the ,Boston Globe, in 2006, entitled ""Blogs 'essential' to a good career"".,[85], She was one of the first journalists to point out that a large portion of bloggers are professionals and that a well-written blog can help attract employers., +,Business owners, +,Business owners who blog about their business can also run into legal consequences. ,Mark Cuban,, owner of the ,Dallas Mavericks,, was fined during the 2006 ,NBA, playoffs for criticizing NBA officials on the court and in his blog.,[86], +,Political dangers, +,See also: ,Political repression of cyber-dissidents, +,Blogging can sometimes have unforeseen consequences in politically sensitive areas. In some countries, ,Internet police, or ,secret police, may monitor blogs and arrest blog authors of commentators. Blogs can be much harder to control than broadcast or print media, because a person can create a blog whose authorship is hard to trace, by using anonymity technology such as ,Tor,. As a result, ,totalitarian, and ,authoritarian, regimes often seek to suppress blogs and/or to punish those who maintain them., +,In ,Singapore,, two ethnic Chinese individuals were ,imprisoned, under the country’s ,anti-sedition law, for posting ,anti-Muslim, remarks in their blogs.,[87], ,Egyptian, blogger ,Kareem Amer, was charged with insulting the Egyptian president ,Hosni Mubarak, and an ,Islamic, ,institution, through his blog. It is the first time in the history of Egypt that a blogger was prosecuted. After a brief trial session that took place in ,Alexandria,, the blogger was found guilty and sentenced to prison terms of three years for insulting ,Islam, and inciting sedition, and one year for insulting Mubarak.,[88], Egyptian blogger Abdel Monem Mahmoud was arrested in April 2007 for anti-government writings in his blog.,[89], Monem is a member of the then banned ,Muslim Brotherhood,. After the ,2011 Egyptian revolution,, the Egyptian blogger ,Maikel Nabil Sanad, was charged with insulting the military for an article he wrote on his personal blog and sentenced to 3 years.,[90], +,After expressing opinions in his personal blog about the state of the Sudanese armed forces, ,Jan Pronk,, ,United Nations, Special Representative for the ,Sudan,, was given three days notice to leave Sudan. The Sudanese army had demanded his deportation.,[91],[92], In ,Myanmar,, Nay Phone Latt, a blogger, was sentenced to 20 years in jail for posting a cartoon critical of head of state ,Than Shwe,.,[93], +,Personal safety, +,See also: ,Cyberstalking, and ,Internet homicide, +,One consequence of blogging is the possibility of online or in-person attacks or threats against the blogger, sometimes without apparent reason. In some cases, bloggers have faced ,cyberbullying,. ,Kathy Sierra,, author of the blog ""Creating Passionate Users"",,[94], was the target of threats and ,misogynistic, insults to the point that she canceled her keynote speech at a technology conference in San Diego, fearing for her safety.,[95], While a blogger's anonymity is often tenuous, ,Internet trolls, who would attack a blogger with threats or insults can be emboldened by the anonymity of the online environment, where some users are known only by a ,pseudonymous, ""username"" (e.g., ""Hacker1984""). Sierra and supporters initiated an online discussion aimed at countering abusive online behavior,[96], and developed a ,Blogger's Code of Conduct,, which set out a ,rules for behaviour, in the online space., +,Behavior, +,The ,Blogger's Code of Conduct, is a proposal by ,Tim O'Reilly, for bloggers to enforce civility on their blogs by being civil themselves and moderating comments on their blog. The code was proposed in 2007 due to threats made to blogger ,Kathy Sierra,.,[97], The idea of the code was first reported by ,BBC News,, who quoted O'Reilly saying, ""I do think we need some code of conduct around what is acceptable behaviour, I would hope that it doesn't come through any kind of regulation it would come through self-regulation."",[98], +,O'Reilly and others came up with a list of seven proposed ideas:,[99],[100],[101],[102], +, +,Take responsibility not just for your own words, but for the comments you allow on your blog., +,Label your tolerance level for abusive comments., +,Consider eliminating anonymous comments., +,Ignore the ,trolls,., +,Take the conversation offline, and talk directly, or find an intermediary who can do so., +,If you know someone who is behaving badly, tell them so., +,Don't say anything online that you wouldn't say in person., +, +,These ideas were predictably intensely discussed on the Web and in the media. While the internet has continued to grow, with online activity and discourse only picking up both in positive and negative ways in terms of blog interaction, the proposed Code has drawn more widespread attention to the necessity of monitoring blogging activity and social norms being as important online as offline., +,See also, +, +, +,Internet portal, +,Journalism portal, +, +, +, +, +,Bitter Lawyer, +,Blog award, +,BROG, +,Chat room, +,Citizen journalism, +,Collaborative blog, +,Comparison of free blog hosting services, +,Customer engagement, +,Glossary of blogging, +,Interactive journalism, +,Internet think tank, +,Israblog, +,Bernando LaPallo, +,List of blogs, +,List of family-and-homemaking blogs, +,Mass collaboration, +,Prison blogs, +,Sideblog, +,Social blogging, +,Webmaster, +,Web template system, +,Web traffic, +, +, +,References, +, +, +,^, ,Blood, Rebecca (September 7, 2000). ,""Weblogs: A History And Perspective"",., , +,^, ,Mutum, Dilip; Wang, Qing (2010). ""Consumer Generated Advertising in Blogs"". In Neal M. Burns; Terry Daugherty; Matthew S. Eastin. ,Handbook of Research on Digital Media and Advertising: User Generated Content Consumption,. ,1,. IGI Global. pp. 248–261., , +,^, ,Gaudeul, Alexia & Peroni, Chiara (2010). ,""Reciprocal attention and norm of reciprocity in blogging networks"",. ,Economics Bulletin,. ,30, (3): 2230–2248., , +,^, ,""About Tumblr.com. Accessed February 20, 2014"",. Tumblr.com,. Retrieved ,2014-02-20,., , +,^, ,""Stats. Accessed February 20, 2014"",. Wordpress.com,. Retrieved ,2014-02-20,., , +,^, ,""The Most Reliable and Unreliable Blogging Services"",. Royal.pigdim.com., , +,^, ,""Five Best Blogging Platforms"",. LifeHacker.com., , +,^, ,""Technorati.com"",. Archived from ,the original, on 2014-02-22., , +,^, ,""After 10 Years of Blogs, the Future's Brighter Than Ever"",. ,Wired,. 2007-12-17,. Retrieved ,2008-06-05,., , +,^, ,""It's the links, stupid"",. The Economist. 2006-04-20,. Retrieved ,2008-06-05,., , +,^, ,Merholz, Peter (1999). ,""Peterme.com"",. ,Internet Archive,. Archived from ,the original, on 1999-10-13,. Retrieved ,2008-06-05,., , +,^, ,Kottke, Jason, (2003-08-26). ,""kottke.org"",. Retrieved ,2008-06-05,., , +,^, ,Origins of ""Blog"" and ""Blogger"",, American Dialect Society Mailing List (Apr. 20, 2008)., +,^, ,The term ""e-log"" has been used to describe journal entries sent out via e-mail since as early as March 1996.,Norman, David (2005-07-13). ,""Users confused by blogs"",. Archived from ,the original, ,( – ,Scholar search,), on 2007-06-07,. Retrieved ,2008-06-05,., , ,""Research staff and students welcome 'E-Log,',"",. University College London. December 2003. Archived from ,the original, on 2007-08-12,. Retrieved ,2008-06-05,., , +,^, ,What's New!,. Home.mcom.com. Retrieved on 2013-06-15., +,^, ,Harmanci, Reyhan (2005-02-20). ,""Time to get a life — pioneer blogger Justin Hall bows out at 31"",. San Francisco Chronicle,. Retrieved ,2008-06-05,., , +,^, ,Pournelle, Jerry. ,""Chaos Manor in Perspective"",. ,Jerry Pournelle's blog,. ,""I can make some claim to this being The Original Blog and Daybook. I certainly started keeping a day book well before most, and long before the term ""blog"" or Web Log was invented. BIX, the Byte information exchange, preceded the Web by a lot, and I also had a daily journal on GE Genie. All that was long before the World Wide Web."" -- Jerry Pournelle, , +,^, ,Paul Festa (2003-02-25). ,""Newsmaker: Blogging comes to Harvard"",. ,CNET,. Retrieved ,2007-01-25,., , +,^, ,""...Dave Winer... whose Scripting News (scripting.com) is one of the oldest blogs."",David F. Gallagher (2002-06-10). ,""Technology; A rift among bloggers"",. ,The New York Times,., , +,^, ,Australian Net Guide,. Web.archive.org (1996-11-12). Retrieved on 2013-06-15., +,^, ,""Archived copy"",. Archived from ,the original, on 2008-04-11,. Retrieved ,2008-03-29,., , +,^, ,Massing, Michael, (2009-08-13). ,""The News About the Internet"",. ,New York Review of Books,. ,The New York Review of Books,. ,56, (13): 29–32,. Retrieved ,2009-10-10,., , +,^, ,Daniel Sandford,, ,BBC News,: ""Russians tire of corruption spectacle"", ,http://www.bbc.co.uk/news/world-europe-15972326, +,^, ,Matthew Kaminski (March 3, 2012). ,""The Man Vladimir Putin Fears Most (the weekend interview)"",. ,The Wall Street Journal,., , +,^, ,Kirkpatrick, David; Roth, Daniel. ,""Why There's No Escaping the Blog"",. Fortune. Archived from ,the original, on 1 January 2005,. Retrieved ,30 January, 2014,., , +,^ ,a, ,b, ,Israel Video Blog aims to show the world 'the beautiful face of real Israel',, Ynet, February 24, 2008., +,^, ,Latest PR venture of Israel's diplomatic mission in New York attracts large Arab audience,, Ynet, June 21, 2007., +,^, ,Haviv Rettig Gur (December 30, 2008). ,""Battlefront Twitter"",. ,The Jerusalem Post,. Archived from ,the original, on 2011-11-10., , +,^, ,The Toughest Q’s Answered in the Briefest Tweets,, Noam Cohen, ,The New York Times,, January 3, 2009. Retrieved January 5, 2009., +,^, ,Journalists deserve subsidies too, ,Archived, 2014-03-24 at the ,Wayback Machine,., ,Robert W. McChesney, and ,John Nichols,, ,Delaware Online,, November 3, 2009. Retrieved November 10, 2009., +,^, ,""7 Things You Should Know About Microblogging"",. Educause.Edu. 2009-07-07,. Retrieved ,2012-10-25,., , +,^, ,Stephan Metcalf, ""Fixing a Hole"", ,The New York Times,, March 2006, +,^, ,Jennifer Saranow, ""Blogwatch: This Old House"", ,Wall Street Journal,, September 2007, +,^, ,""52 Types of Blog Posts that Are Proven to Work"",. ,Problogger.net,. Retrieved ,2017-07-18,., , +,^, ,Casserly, Meghan and Goudreau, Jenna. ,Top 100 Websites For Women 2011,, ,Forbes,, June 23, 2011, +,^, ,Paul, Pamela (2004-04-12). ,""The New Family Album"",. ,TIME,. Retrieved ,2010-03-31,., , +,^, ,Carpenter, MacKenzie (2007-10-31). ,""More women are entering the blogosphere — satirizing, sharing and reaching a key demographic"",. Post-gazette.com,. Retrieved ,2010-03-31,., , +,^, ,Brown, Jonathan (2005-02-05). ,""The drooling minutiae of childhood revealed for all to see as 'Mommy blogs' come of age"",. ,The Independent,. London,. Retrieved ,2010-03-30,., , +,^, ,""Living"",. ,Omaha.com,. Retrieved ,2010-03-31,., , +,^, ,Jesella, Kara (2008-07-27). ,""Blogging's Glass Ceiling"",. ,The New York Times,. Retrieved ,2010-03-26,., , +,^, ,""Blogging goes mobile"",. BBC News. 2003-02-23,. Retrieved ,2008-06-05,., , +,^, ,See for instance:, +, +,Mesure, Susie (2009-08-23). ,""Is it a diary? Is it an ad? It's a mummy blog"",. ,The Independent,. London. p. 11,. Retrieved ,2009-10-10,., , +, +, +,^, ,""About MyBlogLog"",. MyBlogLog. Archived from ,the original, on 2007-06-29,. Retrieved ,2007-06-29,., , +,^, ,""Global Voices: About"",. GlobalVoices.org,. Retrieved ,2011-04-02,., , +,^, ,Gogoi, Pallavi (2006-10-09). ,""Wal-Mart's Jim and Laura: The Real Story"",. ,BusinessWeek,. Archived from ,the original, on 2008-09-26,. Retrieved ,2008-08-06,., , +,^, ,Jenkins, Henry (2006). ,Fans, Bloggers, and Gamers,. New York: New York University Press. p. 151. ,ISBN, ,978-0814742853,., , +,^, ,Keen, Andrew (2008). ,The Cult of the Amateur: How Today’s Internet Is Killing Our Culture,. New York: Nicholas Brealey Publishing. p. 3. ,ISBN, ,978-1857885200,., , +,^, ,Marlow, C. ,Audience, structure and authority in the weblog community,. Presented at the ,International Communication Association, Conference, May, 2004, New Orleans, LA., +,^ ,a, ,b, ,Fickling, David, ,Internet killed the TV star,, ,The Guardian, NewsBlog, 15 August 2006, +,^, ,""Xu Jinglei most popular blogger in world"",. China Daily. 2006-08-24,. Retrieved ,2008-06-05,., , +,^, ,""Blogging Bonnie"",. ,Poynter.org,. 2003-09-18., , +,^, ,""National Safety Month"",. Nsc.org,. Retrieved ,2010-04-09,., , +,^, ,""Flavor Flav Celebrates National Safety Month"",. ,Blogcritics,. Archived from ,the original, on 2009-02-13., , +,^, ,""Lisa Tolliver show notes"",. ,Emergency Preparedness and Safety Tips On Air and Online,., , +,^, ,""Lisa Tolliver's Show Notes"",. ,Lisa Tolliver On Air and Online,., , +,^, ,""Blooker rewards books from blogs"",. BBC News. 2005-10-11,. Retrieved ,2008-06-05,., , +,^, ,""Blooker prize honours best blogs"",. BBC News. 2007-03-17,. Retrieved ,2008-06-05,., , +,^, ,Mutum, Dilip and Wang, Qing (2010). “Consumer Generated Advertising in Blogs”. In Neal M. Burns, Terry Daugherty, Matthew S. Eastin (Eds) Handbook of Research on Digital Media and Advertising: User Generated Content Consumption (Vol 1), IGI Global, 248-261., +,^, ,""PayPerPost.com offers to sell your soul"",. ,TechCrunch,. 2006-06-30,. Retrieved ,2017-07-18,., , +,^, ,""Article Window"",. Epaper.timesofindia.com,. Retrieved ,2012-10-25,., , +,^, ,McQueen MP. (2009). ,Bloggers, Beware: What You Write Can Get You Sued,. WSJ., +,^, ,Doe v. Cahill,, 884 A.2d 451 (Del. 2005)., +,^, ,""New Straits Times staffers sue two bloggers"",. ,Reporters Without Borders,. 2007-01-19. Archived from ,the original, on 2008-06-08,. Retrieved ,2008-06-05,., , +,^, ,""Government plans to force bloggers to register"",. ,Reporters Without Borders,. 2007-04-06. Archived from ,the original, on 2008-06-11,. Retrieved ,2008-06-05,., , +,^, ,Kesmodel, David (2005-08-31). ,""Blogger Faces Lawsuit Over Comments Posted by Readers"",. Wall Street Journal Online,. Retrieved ,2008-06-05,., , +,^, ,Wired Magazine,, ,Legal Showdown in Search Fracas,, Sept 8, 2005, +,^, ,Sullivan, Danny (2006-04-13). ,""SearchEngineWatch"",. Blog.searchenginewatch.com. Archived from ,the original, on 2009-02-04,. Retrieved ,2010-07-31,., , +,^, ,""Barkha versus blogger"",. The Hoot,. Retrieved ,2009-02-02,., , +,^, ,¬ (2009-02-08). ,""Indian bloggers criticizing NDTV"",. Abhishekarora.com,. Retrieved ,2013-04-21,., , +,^, ,Sanderson, Cathrine (2007-04-02). ,""Blogger beware!"",. London: Guardian Unlimited,. Retrieved ,2007-04-02,., , +,^, ,""Ruling on NightJack author Richard Horton kills blogger anonymity"",. Archived from ,the original, on 2011-08-29., , +,^, ,Twist, Jo (2004-11-03). ,""US Blogger Fired by her Airline"",. ,BBC News,. Retrieved ,2008-06-05,., , +,^, ,""Delta employee fired for blogging sues airline"",. ,USA Today,. 2005-09-08,. Retrieved ,2008-06-05,., , +,^, ,""Queen of the Sky gets marching orders"",. The Register. 2004-11-03,. Retrieved ,2008-06-05,., , +,^, ,""Twelfth Omnibus Claims Objection"", ,(PDF),. Retrieved ,8 July, 2014,., , +,^, ,MacLeod, Donald (2006-05-03). ,""Lecturer's Blog Sparks Free Speech Row"",. London: The Guardian. Archived from ,the original, on 2008-06-12,. Retrieved ,2008-06-05,., , See also ,""Forget the Footnotes"",. Archived from ,the original, on 2006-04-13., , +,^, ,Hansen, Evan (2005-02-08). ,""Google blogger has left the building"",. CNET News,. Retrieved ,2007-04-04,., , +,^, ,""Archived copy"",. Archived from ,the original, on 2008-07-25,. Retrieved ,2008-09-10,., , +,^, ,""Bloggers join hands against B-school"",. Cities.expressindia.com. Archived from ,the original, on 2005-12-14,. Retrieved ,2011-01-30,., , +,^, ,""Washingtoniennearchive.blogspot.com"",. Washingtoniennearchive.blogspot.com. 2005-02-11,. Retrieved ,2013-04-21,., , +,^, ,""The Hill's Sex Diarist Reveals All (Well, Some)"",. ,The Washington Post,. 2004-05-23,. Retrieved ,2008-06-05,., , +,^, ,""Steamy D.C. Sex Blog Scandal Heads to Court"",. ,Associated Press,, ,MSNBC,. 2006-12-27,. Retrieved ,2008-06-05,., , +,^, ,""Bridget Jones Blogger Fire Fury"",. ,CNN,. 2006-07-19,. Retrieved ,2008-06-05,., , +,^, ,""Sacked 'petite anglaise' blogger wins compensation claim"",. ,The Sydney Morning Herald,. 2007-03-31,. Retrieved ,2015-02-06,., , +,^, ,Trunk, Penelope (2006-04-16). ,""Boston.com"",. Boston.com,. Retrieved ,2013-04-21,., , +,^, ,""NBA fines Cuban $200K for antics on, off court"",. ESPN. 2006-05-11,. Retrieved ,2008-06-05,., , +,^, ,Kierkegaard, Sylvia, (2006). ""Blogs, lies and the doocing: The next hotbed of litigation?"". ,Computer Law & Security Report,. ,22, (2): 127. ,doi,:,10.1016/j.clsr.2006.01.002,., , +,^, ,""Egypt blogger jailed for insult"",. ,BBC News,. 2007-02-22,. Retrieved ,2008-06-05,., , +,^, ,عبدالمنعم محمود (2004-02-27). ,""Ana-ikhwan.blogspot.com"",. Ana-ikhwan.blogspot.com,. Retrieved ,2013-04-21,., , +,^, ,Knafo, Saki (2011-09-15). ,""Maikel Nabil Sanad, On Hunger Strike in Egypt, Is Dying"",. Huffingtonpost.com,. Retrieved ,2011-12-29,., , +,^, ,""Sudan expels U.N. envoy for blog"",. ,CNN,. 2006-10-22,. Retrieved ,2007-03-14,., , +,^, ,""UN envoy leaves after Sudan row"",. ,BBC NEWS,. BBC. 23 October 2006,. Retrieved ,2006-10-24,., , +,^, ,""Burma blogger jailed for 20 years"",. ,BBC News,. 2008-11-11,. Retrieved ,2010-03-26,., , +,^, ,""Headrush.typepad.com"",. Headrush.typepad.com,. Retrieved ,2013-04-21,., , +,^, ,Pham, Alex (2007-03-31). ,""Abuse, threats quiet bloggers' keyboards"", ,(PDF),. Los Angeles Times. Archived from ,the original, on 2008-06-25,. Retrieved ,2008-06-05,., , +,^, ,""Blog death threats spark debate"",. BBC News. 2007-03-27,. Retrieved ,2008-06-05,., , +,^, ,Tim O'Reilly, (2007-03-03). ,""Call for a Blogger's Code of Conduct"",. O'Reilly Radar,. Retrieved ,2013-04-26,., , +,^, ,""Call for blogging code of conduct"",. BBC News. 2007-03-28,. Retrieved ,2007-04-14,., , +,^, ,""Draft Blogger's Code of Conduct"",. Radar.oreilly.com,. Retrieved ,2013-04-26,., , +,^, ,""MilBlogs Rules of Engagement"",. ,yankeesailor.blogspot.ca,. 2005-05-20,. Retrieved ,2013-04-26,., , +,^, ,""Code of Conduct: Lessons Learned So Far - O'Reilly Radar"",. ,Radar.oreilly.com,. 2007-04-11,. Retrieved ,2017-07-18,., , +,^, ,""Blogger Content Policy"",. Blogger.com,. Retrieved ,2011-01-30,., , +, +, +,Further reading, +, +,Alavi, Nasrin. ,We Are Iran: The Persian Blogs,, Soft Skull Press, New York, 2005. ,ISBN, ,1-933368-05-5,., +,Bruns, Axel, and Joanne Jacobs, eds. ,Uses of Blogs,, Peter Lang, New York, 2006. ,ISBN, ,0-8204-8124-6,., +,Blood, Rebecca. ,""Weblogs: A History and Perspective"",. ""Rebecca's Pocket""., +,Kline, David; Burstein, Dan. ,Blog!: How the Newest Media Revolution is Changing Politics, Business, and Culture,, Squibnocket Partners, L.L.C., 2005. ,ISBN, ,1-59315-141-1,., +,Gorman, Michael,. ,""Revenge of the Blog People!"",. ,Library Journal,., +,Ringmar, Erik. ,A Blogger's Manifesto: Free Speech and Censorship in the Age of the Internet, (London: Anthem Press, 2007)., +,Rosenberg, Scott,, ,Say Everything: how blogging Began, what it's becoming, and why it matters,, New York : Crown Publishers, 2009. ,ISBN, ,978-0-307-45136-1, +,Weinberger, David, (August 31, 2015), ,""Why blogging still matters"",, ,Boston Globe, , +, +,External links, +, +, +, +,Look up ,blog, in Wiktionary, the free dictionary., +, +, +, +, +, +,Wikiquote has quotations related to: ,Blogging, +, +, +, +, +, +,Wikimedia Commons has media related to ,Blogs,., +, +, +, +,Computer Law and Security Report Volume 22 Issue 2, Pages 127-136, blogs, Lies and the Doocing by ,Sylvia Kierkegaard, (2006), +,Legal Guide for bloggers, by the ,Electronic Frontier Foundation, +,Law Library Legal Blawgs Web Archive, from the U.S. ,Library of Congress, +, +, +, +, +, +, +, +,v, +,t, +,e, +, +, +,Web syndication, +, +, +, +, +, +, +,History, +,Blogging, +,Podcasting, +,Video blogging, +,Web syndication technology, +, +, +, +, +, +,Types, +, +, +, +, +, +, +, +,Art, +,Bloggernacle, +,Classical music, +,Corporate, +,Dream diary, +,Edublog, +,Electronic journal, +,Fake, +,Family, +,Fashion, +,Food, +,Health, +,Law, +,Lifelog, +,Litblog, +,MP3, +,News, +,Photoblog, +,Police, +,Political, +,Prayer, +,Project, +,Reverse, +,Travel, +,Warblog, +, +, +, +, +, +, +, +, +,Technology, +, +, +, +, +,General, +, +, +, +,BitTorrent, +,Feed URI scheme, +, +, +, +, +, +,Features, +, +, +, +,Linkback, +,Permalink, +,Ping, +,Pingback, +,Reblogging, +,Refback, +,Rollback, +,Trackback, +, +, +, +, +, +,Mechanism, +, +, +, +,Conversation threading, +,Geotagging, +,RSS enclosure, +,Synchronization, +, +, +, +, +, +,Memetics, +, +, +, +,Atom feed, +,Data feed, +,Photofeed, +,Product feed, +,RDF feed, +,Web feed, +, +, +, +, +, +,RSS, +, +, +, +,GeoRSS, +,MRSS, +,RSS TV, +, +, +, +, +, +,Social, +, +, +, +,Livemark, +,Mashup, +,., pooling, +,Referencing, +,RSS editor, +,RSS tracking, +,Streaming media, +, +, +, +, +, +,Standard, +, +, +, +,OML, +,OPML, +,RSS Advisory Board,—,Usenet,: ,.net, +,World Wide Web, + (,-let,), +,XBEL, +,XOXO, +, +, +, +, +, +, +, +, +,Form, +, +, +, +, +, +, +, +,Audio podcast, +,Enhanced podcast, +,Mobilecast, +,Narrowcasting, +,Peercasting, +,Screencast, +,Slidecasting, +,Videocast, +,Webcomic, +,Web series, +, +, +, +, +, +, +, +, +,Anonymous blogging, +,Collaborative blog, +,Columnist, +,Instant messaging, +,Liveblogging, +,Microblog, +,Mobile blogging, +,Roblog, +,Spam blog, +,Video blogging, +,Motovlogging, +, +, +, +, +, +, +, +, +,Media, +, +, +, +, +,Alternative media, +, +, +, +,Carnivals, +,Fiction, +,Journalism, +, +,Citizen, +,Database, +, +, +,Online diary, +,Search engines, +,Sideblog, +,Software, +,Web directory, +, +, +, +, +, +,Micromedia, +, +, +, +,Aggregation, +, +,News, +,Poll, +,Review, +,Search, +,Video, +, +, +,Atom, +,AtomPub, +,Broadcatching, +,Hashtag, +,NewsML, +, +,1, +,G2, +, +, +,Social communication, +,Social software, +,Web Slice, +, +, +, +, +, +,Related, +, +, +, +,Blogosphere, +,Escribitionist, +,Glossary of blogging, +,Pay per click, +,Posting style, +,Slashdot effect, +,Spam in blogs, +,Uses of podcasting, +, +, +, +, +, +, +, +, +, +, +, +, +, +, +, +,v, +,t, +,e, +, +, +,Computer-mediated communication, +, +, +, +, +, +, +,Online chat, +,Online discussion, +,Communication software, +,Collaborative software, +,Social network service, +,Virtual learning environment, +, +, +, +, +, +,Asynchronous conferencing, +, +, +, +,Email, +,Electronic mailing list, +,FidoNet, +,Usenet, +,Internet forum, +, +,Textboard, +,Imageboard, +, +, +,Shoutbox, +,Bulletin board system, +,Online guestbook, +, +, +, +, +, +,Synchronous conferencing, +, +, +, +,Data conferencing, +,Instant messaging, +,Internet Relay Chat, +,LAN messenger, +,Talker, +,Videoconferencing, +,Voice over IP, +, +,Voice chat in online gaming, +, +, +,Web chat, +,Web conferencing, +, +, +, +, +, +,Publishing, +, +, +, +,Blog, +,Microblogging, +,Wiki, +, +, +, +, +, +, +, +, +, +, +, +, +,v, +,t, +,e, +, +, +,Internet slang, +, +, +, +,Abuse, +, +, +, +,cyberbullying, +,cyberstalking, +,doxing, +,flaming, +,griefer, +,hacker, +,keylogger, +,malware, +, +,spyware, +, +, +,phishing, +,script kiddie, +,Stealth banning, +,spamming, +,troll, +, +, +, +, +, +, +, +, +,Chatspeak, +, +, +, +,emoticon, +,emoji, +,leet, +, +,owned, +,Pr0n, +,pwn, +,teh, +,w00t, +, +, +,fap, +,LOL, +,nsfw, +,padonkaffsky jargon, +,sexting, +, +, +, +, +, +,Imageboard, +, +, +, +,4chan, +,anonymous, +,-chan, +,CP, +,goatse.cx, +,lolcat, +,lulz, +,lurk, +,newbie, +,OP, +,pedobear, +,rickrolling, +,Rule 34, +,tripcode, +,weeaboo, +, +, +, +, +, +,Memes, +, +, +, +,advertising and products, +,animation and comics, +,challenges, +,email, +,film, +,gaming, +,images, +,music, +,politics, +,videos, +,miscellaneous, +, +, +, +, +, +,Usenet, +, +, +, +,eternal September, +,PKB, +,plonk, +, +, +, +, +, +, +, +, +, ,Category, +, ,Portal, +, ,Wiktionary, +, +, +, +, +, +, +, +, +, +,Authority control, +, +, +, +,LCCN,: ,sh2003004628, +,NDL,: ,00959882, +, +, +, +, +, +, + + +, +, +, +, +",Blog diff --git a/Chapter05_Scrapy/wikiSpider/wikiSpider/articles.json b/Chapter05_Scrapy/wikiSpider/wikiSpider/articles.json new file mode 100644 index 0000000..58292dc --- /dev/null +++ b/Chapter05_Scrapy/wikiSpider/wikiSpider/articles.json @@ -0,0 +1,33 @@ +[ +{"title": "Benevolent dictator for life", "text": ["For the political term, see ", "Benevolent dictatorship", ".", "\n", "Benevolent Dictator For Life", " (", "BDFL", ") is a title given to a small number of ", "open-source software development", " leaders, typically project founders who retain the final say in disputes or arguments within the community. The phrase originated in 1995 with reference to ", "Guido van Rossum", ", creator of the ", "Python programming language", ".", "[1]", "[2]", " Shortly after van Rossum joined the ", "Corporation for National Research Initiatives", ", the term appeared in a follow-up mail by ", "Ken Manheimer", " to a meeting trying to create a semi-formal group that would oversee Python development and workshops; this initial use included the additional joke of naming van Rossum the \"", "First Interim", " BDFL\".", "[1]", "\n", "BDFL should not be confused with the more common term for open-source leaders, \"", "benevolent dictator", "\", which was popularized by ", "Eric S. Raymond", "'s essay \"", "Homesteading the Noosphere", "\" (1999).", "[3]", " Among other topics related to ", "hacker culture", ", Raymond elaborates on how the nature of open source forces the \"dictatorship\" to keep itself ", "benevolent", ", since a strong disagreement can lead to the ", "forking", " of the project under the rule of new leaders.", "\n", "Persons sometimes referred to as \"Benevolent dictators for life\"", "[", "edit", "]", "\n", "\n", "\n", "Name", "\n", "Project", "\n", "Type", "\n", "Reference", "\n", "\n", "\n", "Vitalik Buterin", "\n", "Ethereum", "\n", "blockchain-based cryptocurrency", "\n", "[4]", "\n", "\n", "\n", "Dries Buytaert", "\n", "Drupal", "\n", "content management framework", "\n", "[5]", "\n", "\n", "\n", "Shaun Walker", "\n", "DotNetNuke", "\n", "web application framework", "\n", "[6]", "\n", "\n", "\n", "David Heinemeier Hansson", "\n", "Ruby on Rails", "\n", "web framework", "\n", "[7]", "\n", "\n", "\n", "Adrian Holovaty", " and Jacob Kaplan-Moss", "\n", "Django", "\n", "web framework", "\n", "[8]", "\n", "\n", "\n", "Taylor Otwell", "\n", "Laravel", "\n", "web framework", "\n", "[9]", "[10]", "\n", "\n", "\n", "Theo de Raadt", "\n", "OpenBSD", "\n", "Unix", "-like operating system", "\n", "[11]", "\n", "\n", "\n", "Daniel Robbins", "\n", "Funtoo Linux", "\n", "Linux distribution", "\n", "[12]", "\n", "\n", "\n", "S\u00e9bastien Ros", "\n", "Orchard Project", "\n", "content management system", "\n", "[13]", "\n", "\n", "\n", "Guido van Rossum", "\n", "Python", "\n", "programming language", "\n", "[7]", "[14]", "\n", "\n", "\n", "Linus Torvalds", "\n", "Linux", "\n", "operating system kernel", "\n", "[7]", "[15]", "\n", "\n", "\n", "Patrick Volkerding", "\n", "Slackware", "\n", "Linux distribution", "\n", "[16]", "\n", "\n", "\n", "Mark Shuttleworth", "\n", "Ubuntu Linux", "\n", "Linux distribution", "\n", "[17]", "\n", "\n", "\n", "Larry Wall", "\n", "Perl", "\n", "programming language", "\n", "[18]", "\n", "\n", "\n", "Matt Mullenweg", "\n", "WordPress", "\n", "content management framework", "\n", "[19]", "\n", "\n", "\n", "Nathan Voxland", "\n", "Liquibase", "\n", "database schema management", "\n", "[20]", "\n", "\n", "\n", "Xavier Leroy", "\n", "OCaml", "\n", "programming language", "\n", "[21]", "[22]", "\n", "\n", "\n", "Ton Roosendaal", "\n", "Blender", "\n", "3D computer graphics software", "\n", "[23]", "\n", "\n", "\n", "Bram Moolenaar", "\n", "Vim", "\n", "text editor", "\n", "[24]", "\n", "\n", "\n", "Don Syme", "\n", "F#", "\n", "programming language", "\n", "[25]", "\n", "\n", "\n", "Rich Hickey", "\n", "Clojure", "\n", "programming language", "\n", "[26]", "\n", "\n", "\n", "Wes McKinney", "\n", "Pandas", "\n", "Python data analysis library", "\n", "[27]", "\n", "\n", "\n", "Martin Odersky", "\n", "Scala", "\n", "programming language", "\n", "[28]", "\n", "\n", "\n", "Yukihiro Matsumoto (Matz)", "\n", "Ruby", "\n", "programming language", "\n", "[29]", "\n", "\n", "\n", "Evan Czaplicki", "\n", "Elm", "\n", "front-end web framework", "\n", "[30]", "[31]", "\n", "\n", "\n", "Juan Benet", "\n", "InterPlanetary File System", "\n", "decentralized internet", "\n", "[32]", "\n", "\n", "\n", "Sylvain Benner", "\n", "Spacemacs", "\n", "community-driven ", "Emacs", " distribution", "\n", "[33]", "\n", "\n", "\n", "Pauli Virtanen", "\n", "SciPy", "\n", "Python", " library used for scientific and technical computing", "\n", "[34]", "[35]", "\n", "\n", "\n", "Jos\u00e9 Valim", "\n", "elixir", "\n", "programming language", "\n", "[36]", "\n", "\n", "\n", "References", "[", "edit", "]", "\n", "\n", "\n", "^ ", "a", " ", "b", " ", "Guido van Rossum (July 31, 2008). ", "\"Origin of BDFL\"", ". Retrieved ", "August 1,", " 2008", ".", "\u00a0", "\n", "^", " ", "\"Python Creator Scripts Inside Google\"", ". www.eweek.com", ". Retrieved ", "May 13,", " 2008", ".", "\u00a0", "\n", "^", " ", "Eric S. Raymond. ", "\"Homesteading the Noosphere\"", ". Retrieved ", "August 1,", " 2008", ".", "\u00a0", "\n", "^", " ", "\"", "Ethereum's Boy King Is Thinking About Giving Up the Mantle", "\"", "\n", "^", " ", "Randy Fay, \"", "How Do Open Source Communities Govern Themselves?", "\"", "\n", "^", " ", "Book: Building Websites with DotNetNuke 5, Michael Washington and Ian Lackey, Packt Publishing. Page 14 \"The core team comprises individuals invited to join the team by Shaun Walker, whom they affectionately call the \"Benevolent Dictator\".\"", "\n", "^ ", "a", " ", "b", " ", "c", " ", "Constine, Josh (December 7, 2012). ", "\"Dropbox Hires Away Google's Guido Van Rossum, The Father Of Python\"", ". TechCrunch", ". Retrieved ", "June 1,", " 2015", ".", "\u00a0", "\n", "^", " ", "\"Adrian and Jacob retiring as Django BDFLs\"", ". Adrian Holovaty. January 12, 2014", ". Retrieved ", "June 14,", " 2015", ".", "\u00a0", "\n", "^", " ", "\"Taylor Otwell, Twitter\"", ". Taylor Otwell. October 9, 2014", ". Retrieved ", "October 9,", " 2014", ".", "\u00a0", "\n", "^", " ", "\"Taylor Otwell, Creator of the Laravel PHP Framework\"", ". August 5, 2014", ". Retrieved ", "August 5,", " 2014", ".", "\u00a0", "\n", "^", " ", "Hildebrand, Matthew (July 5, 2005). ", "\"Interview: Theo de Raadt on Industry and Free Software\"", ". ", "The Epoch Times", ". The Epoch Times. Archived from ", "the original", " on June 21, 2015", ". Retrieved ", "June 20,", " 2015", ".", "\u00a0", "\n", "^", " ", "\"Welcome to Funtoo Linux\"", ".", "\u00a0", "\n", "^", " ", "\"Orchard Project Steering Committee\"", ". Archived from ", "the original", " on August 12, 2015.", "\u00a0", "\n", "^", " ", "\"The Four Hundred\u2014Next Up on the System i: Python\"", ". www.itjungle.com", ". Retrieved ", "May 13,", " 2008", ".", "\u00a0", "\n", "^", " ", "Dee-Ann LeBlanc (31 July 2006). ", "Linux For Dummies", " (7th ed.). John Wiley & Sons. p.\u00a015. ", "ISBN", "\u00a0", "978-0-470-04793-4", ".", "\u00a0", "\n", "^", " ", "\"Stories of Linux: A Look at Slackware Linux\"", ". ", "linux.com", ".", "\u00a0", "\n", "^", " ", "\"Ubuntu carves niche in Linux landscape\"", ". ", "CNET", ". Archived from ", "the original", " on 6 November 2015.", "\u00a0", "\n", "^", " ", "\"The Art of Ballistic Programming\"", ". Archived from ", "the original", " on June 17, 2013.", "\u00a0", "\n", "^", " ", "\"Thesis, Automattic, and WordPress | Post Status\"", ". Retrieved ", "2015-07-24", ".", "\u00a0", "\n", "^", " ", "\"User and Developer Community | Post Status\"", ". Retrieved ", "2015-08-13", ".", "\u00a0", "\n", "^", " ", "\"A History of OCaml | OCaml.org\"", ". Retrieved ", "2015-09-18", ".", "\u00a0", "\n", "^", " ", "\"OCaml Infrastructure mailing list\"", ". Retrieved ", "2015-09-18", ".", "\u00a0", "\n", "^", " ", "\"New Developer Info\"", ". Retrieved ", "21 September", " 2015", ".", "\u00a0", "\n", "^", " ", "\"Why Neovim is Better than Vim\"", ". Retrieved ", "30 September", " 2015", ".", "\u00a0", "\n", "^", " ", "\"Contributing to the F# Language and Compiler\"", ". Retrieved ", "29 September", " 2015", ".", "\u00a0", "\n", "^", " ", "\"Clojure JIRA Workflow\"", ". Retrieved ", "3 October", " 2015", ".", "\u00a0", "\n", "^", " ", "\"pandas 0.20.3 documentation: Tutorials\"", ". Retrieved ", "2017-07-24", ".", "\u00a0", " \"Wes McKinney\u2019s (pandas BDFL) blog\"", "\n", "^", " ", "\"Programming in Scala Leaps onto the World Stage!\"", ". Retrieved ", "2015-11-25", ".", "\u00a0", "\n", "^", " ", "\"A Ruby Design Process\"", ". Retrieved ", "2016-04-17", ".", "\u00a0", "\n", "^", " ", "\"56: Ember vs. Elm: The Showdown with Philip Poots | The Frontside Podcast\"", ". ", "The Frontside Podcast", ". Retrieved ", "2017-08-14", ".", "\u00a0", "\n", "^", " ", "elm-conf (2016-09-19), ", "\"Code is the Easy Part\" by Evan Czaplicki", ", retrieved ", "2017-08-14", "\u00a0", "\n", "^", " ", "\"Understanding the IPFS White Paper part 2\"", ". Retrieved ", "2017-08-21", ".", "\u00a0", "\n", "^", " ", "\"Spacemacs COMMUNITY.org\"", ". Retrieved ", "2017-08-24", ".", "\u00a0", "\n", "^", " ", "\"SciPy 1.0.0\"", ". Retrieved ", "2017-10-27", ".", "\u00a0", "\n", "^", " ", "\"SciPy project governance\"", ". Retrieved ", "2017-10-27", ".", "\u00a0", "\n", "^", " ", "\"Elixir Companies\"", ". Retrieved ", "2017-11-01", ".", "\u00a0", "\n", "\n", "\n\n\n", "\n", "\n", "\n", "\n"], "lastUpdated": " 13 December 2017, at 09:26."}, +{"title": "DotNetNuke", "text": ["\n", "DotNetNuke", "\n", "\n", "\n", "\n", "\n", "Developer(s)", "\n", "DNN Corporation", " ", "[1]", "\n", "\n", "\n", "\n", "\n", "\n", "Stable release", "\n", "\n", "9.1.1", "[2]", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "Development status", "\n", "Active", "\n", "\n", "\n", "Operating system", "\n", "Microsoft Windows", " or ", "Cloud", "\n", "\n", "\n", "Platform", "\n", "ASP.NET", " or ", "Cloud", "[3]", "\n", "\n", "\n", "Type", "\n", "Web framework", "\n", "\n", "\n", "License", "\n", "MIT", "[4]", "\n", "\n", "\n", "Website", "\n", "www", ".dnnsoftware", ".com", "\n", "\n", "\n", "DNN", " (formerly ", "DotNetNuke", ") is a ", "web content management system", " based on ", "Microsoft .NET", ". The DNN Platform Edition is ", "open source", ".", "\n", "DNN is written in ", "C#", ", though it existed for many years as a ", "VB.NET", " project.", "[5]", "[6]", " It is distributed under both a Community Edition ", "MIT", " license ", "[4]", " and commercial proprietary licenses as DNN Evoq Content and DNN Evoq Engage editions.", "\n", "\n", "\n", "\n", "Contents", "\n", "\n", "\n", "1", " ", "Editions", "\n", "2", " ", "Architecture", "\n", "\n", "2.1", " ", "Modules", "\n", "2.2", " ", "Skins", "\n", "\n", "\n", "3", " ", "Hosting", "\n", "4", " ", "Developer ecosystem community", "\n", "5", " ", "Project history", "\n", "6", " ", "See also", "\n", "7", " ", "References", "\n", "8", " ", "External links", "\n", "\n", "\n", "\n", "Editions", "[", "edit", "]", "\n", "DNN Platform (formerly \"DotNetNuke Community Edition\" ", "content management system", ") is open source software that is intended to allow management of websites without much technical knowledge, and to be extensible through a large number of third-party apps to provide functionality not included in the ", "DNN core modules", ". ", "Skins", " can be used to change the look of a website using DNN.", "\n", "There are two commercial editions of the software with increased functionality compared to DNN Platform, and technical support. The DotNetNuke ", "Professional Edition", " was introduced in February 2009 with version 4.9. In July 2013, DotNetNuke Professional Edition was renamed Evoq Content.", "[7]", " In addition, DotNetNuke Enterprise Edition was renamed Evoq Content: Enterprise.", "[8]", " Evoq version 9.0 was released in December 2016.", "[9]", "\n", "Architecture", "[", "edit", "]", "\n", "\n", "\n", "\n", "\nDNN uses a three-tier architecture model.", "\n", "\n", "\n", "DotNetNuke uses a three-tier architecture model with a core framework providing support to the extensible modular structure.", "\n", "While traditionally DNN focused on providing server side functionality, recent projects strive to enhance client side experiences - along with the rest of the industry.", "[10]", " In recent years DNN migrated from using exclusively ", "Web Forms", " to also allowing ", "Model View Controller", " and ", "Single-page application", " architectures.", "[11]", " In the future, DNN faces the challenge of moving from ", "ASP.NET", " 4.6 to the cross-platform free and open source ", ".NET Core", ".", "\n", "DNN can be extended using 3rd-party modules and providers that add functionality at the server or client side. The appearance of individual pages and sites can be customized using skins.", "[12]", "\n", "Modules", "[", "edit", "]", "\n", "\n", "\n", "\n", "\nDotNetNuke modules.", "\n", "\n", "\n", "The default functionality of DNN can be expanded by adding third-party modules, either from an existing module store,", "[13]", " from 3rd party authors,", "[14]", " or through ", "in-house development", " of custom functionality.", "[15]", " The DNN framework provides basic functionality such as ", "security", ", user administration, and ", "content management", ", while modules are used to tailor the web site for specific deployment needs.", "[16]", "\n", "A set of primary modules are included with the core DNN distribution. These modules provide the functionality required to create an e-commerce system, an intranet, a public web site or a custom web application. They are maintained by a volunteer team community. In 2015 and 2016 most projects were moved from the DotNetNuke Community Forge", "[17]", " to GitHub.", "[18]", "\n", "Web pages have skins which define regions of a page (plus their appearance) where page editors can place modules (or extensions) made available by site administrators. Pages and modules can inherit or set custom access permissions that define which groups of users can view or edit each item.", "\n", "Module can be created in various ways: compiled modules use the Web Application Project model and are written in C# or VB.NET,", "[19]", " dynamic modules use the Web Site Project model, and ", "Razor", " modules which use a C# or VB.NET scripting language.", "[20]", "\n", "Skins", "[", "edit", "]", "\n", "A skinning architecture provides a ", "separation of presentation and content", ", enabling a web designer to develop skins without requiring any specialist knowledge of development in ASP.NET: only knowledge of ", "HTML", " and an understanding of how to prepare and package the skins themselves is required. Skins consist of basic HTML files with placeholders (", "tokens", ") for content, menus and other functionality, along with support files such as images, ", "style sheets", " and ", "JavaScript", ", packaged in a ", "ZIP file", ".", "[21]", "\n", "Upon Microsoft's release of the ", ".NET Framework version 2", ", Microsoft had included functionality known as master pages. The principal idea behind master pages was to encourage ", "code recycling", " and consistent design and aesthetics throughout a site by creating a master page with placeholders, which at ", "runtime", " would be ", "compiled", " and replaced by content.", "\n", "Like modules, skins, can be uploaded and automatically installed through the administration pages. If the compiled skin does not contain an ASP.NET user control file, then the DNN skinning engine builds one based on various tokens included in the HTML file which refer to various sections, placeholders and/or modules of a DNN-produced page. Modern skins incorporate CSS3 and HTML5", "[22]", " with many authors' skins supporting ", "Responsive web design", ", various ", "JavaScript libraries", ". With no credentialing, a skin's quality may vary, but often trial periods are available to evaluate functionality.", "\n", "Hosting", "[", "edit", "]", "\n", "DNN 7.0 and above has a minimum requirement of Windows Vista, ", "SQL Server", " 2008, and ", ".NET", " 4.0 and ", "IIS", " 7+. These product's latest versions are supported.", "[23]", " As of version 6.0, DNN can also be installed in an ", "Azure", " ", "cloud computing", " environment.", "[24]", " Numerous web hosting companies offer DNN as an offering, and a 1 step installation process is available through Microsoft.", "[25]", " However DNN's requirement for an IIS medium trust environment has prevented broader adoption", "[26]", " among some mainstream hosting companies.", "\n", "Developer ecosystem community", "[", "edit", "]", "\n", "DNNSoftware.com has over 1 million registered members as of November 2013 and is used on some 750,000 websites globally.", "[27]", " Support for the Community Edition of DotNetNuke is provided by community members and developers can participate in the open-source project on GitHub.", "[28]", "\n", "API", " reference documents for modules", "[29]", " and skins", "[30]", " are available, although as of 2013, some documentation was still available only in task-oriented form.", "[31]", " A Wiki has been created to address this weakness, with 400 wiki pages as of May 2014.", "[32]", "\n", "Project history", "[", "edit", "]", "\n", "The DotNetNuke application originally evolved out of another project, the IBuySpy Workshop.", "[33]", " The IBuySpy Workshop application had been created by Shaun Walker ", "[34]", " as an enhancement to the IBuySpy Portal that started as a sample application for the ", ".NET Framework", ". Early versions of DotNetNuke were released by Walker's company, Perpetual Motion Inc, while later development was expanded by the open source community.", "[", "citation needed", "]", "\n", "The name DotNetNuke was coined by Walker by combining the term ", ".NET", " with the word \"nuke\", which had been popular with pre-existing frameworks such as ", "PHP-Nuke", " and PostNuke.", "[35]", " The term DotNetNuke and DNN are registered trademarks in the US (Search USPTO", "[36]", ") and Canada.", "[37]", "[38]", "\n", "In September 2006, four members of the project's board of directors formed a corporation to oversee the development of the project. The new DotNetNuke Corporation was co-founded by Walker,", "[39]", " Joe Brinkman,", "[40]", " Nik Kalyani,", "[41]", " and Scott Willhite", "[42]", " and replaced Perpetual Motion Interactive Systems Inc. as the corporate entity behind the project.", "[43]", "\n", "On November 25, 2008, DotNetNuke announced ", "Series A", " financing from Sierra Ventures and ", "August Capital", ", and in February 2009, after hiring Navin Nagiah as CEO, a Professional Edition version of DotNetNuke has been released for business and enterprise customers. In February 2010 DotNetNuke announced a Series B financing from Sierra Ventures, ", "August Capital", ", and Pelion Venture Partners.", "[44]", "\n", "In August 2009 a partner program was launched by DotNetNuke Corporation, aimed at providing support to the web design and development companies that build web sites using DotNetNuke. DotNetNuke Corporation also announced the acquisition of Snowcovered, an online market for DotNetNuke modules, skins, services and related products.", "[45]", "\n", "In October 2009, the 2009 Open Source CMS Market Share Report concluded that DotNetNuke was the leading .NET-based open source web content management system.", "[46]", "\n", "In 2013, the company was renamed to ", "DNN Corporation", ".", "[47]", "\n", "See also", "[", "edit", "]", "\n", "\n", "List of content management systems", " (CMS)", "\n", "\n", "References", "[", "edit", "]", "\n", "\n", "\n", "^", " ", "\"Web CMS - Online Community Software - DNN (DotNetNuke)\"", ". ", "dnnsoftware.com", ".", "\u00a0", "\n", "^", " ", "\"Releases \u00b7 dnnsoftware_Dnn.Platform\"", ". ", "GitHub", ". GitHub", ". Retrieved ", "27 September", " 2017", ".", "\u00a0", "\n", "^", " ", "Pranav Singh (2013-06-04). ", "\"Deploying DotNetNuke on Windows Azure\"", ". CodeProject", ". Retrieved ", "2017-04-05", ".", "\u00a0", "\n", "^ ", "a", " ", "b", " ", "\"DNN CMS Platform - License\"", ". ", "Dotnetnuke.codeplex.com", ". Retrieved ", "2017-04-05", ".", "\u00a0", "\n", "^", " ", "\"DotNetNuke Switches to C#\u00a0!! >\"", ". DNN Software. 2011-02-28", ". Retrieved ", "2017-04-05", ".", "\u00a0", "\n", "^", " ", "a (2007-05-11). ", "\"A conversion of the popular DotNetNuke web application to C#\"", ". CodeProject", ". Retrieved ", "2017-04-05", ".", "\u00a0", "\n", "^", " ", "\"DNN Expands Product Suite, Services and SaaS Offering With DNN Evoq\"", ". DNN Corp", ". Retrieved ", "14 Aug", " 2013", ".", "\u00a0", "\n", "^", " ", "Mosher, Barb (2013-07-09). ", "\"DotNetNuke Rebrands to DNN Evoq, Focuses on Business Solutions + Platform\"", ". ", "Cmswire.com", ". Retrieved ", "2017-04-05", ".", "\u00a0", "\n", "^", " ", "\"New CMS Features in Evoq 9\"", ". ", "DNNSoftware", ". DNN Corp", ". Retrieved ", "6 March", " 2017", ".", "\u00a0", "\n", "^", " ", "\"Client Resource Management API\"", ". ", "Dnnsoftware.com", ". Retrieved ", "2017-04-05", ".", "\u00a0", "\n", "^", " ", "\"DNN Loves MVC: 1 - Introduction\"", ". ", "Charlesnurse.com", ". 2015-03-28", ". Retrieved ", "2017-04-05", ".", "\u00a0", "\n", "^", " ", "\"DotNetNuke - the easy way to an ASP.NET website - .NET tutorial\"", ". Developer Fusion. 2010-06-28", ". Retrieved ", "2017-04-05", ".", "\u00a0", "\n", "^", " ", "\"The Official DNN Store - Modules, Skins and Extensions\"", ". ", "Store.dnnsoftware.com", ". 2017-02-11", ". Retrieved ", "2017-04-05", ".", "\u00a0", "\n", "^", " ", "\"DNN Community\"", ". ", "Github.com", ". Retrieved ", "2017-04-05", ".", "\u00a0", "\n", "^", " ", "\"DotNetNuke 4 - Module Developers Guide - Chapter 1\"", ". ", "Adefwebserver.com", ". Retrieved ", "2017-04-05", ".", "\u00a0", "\n", "^", " ", "\"Amazon.com: dnn and dotnetnuke\"", ". ", "Smile.amazon.com", ". Retrieved ", "2017-04-05", ".", "\u00a0", "\n", "^", " ", "\"NET Forge CMS, Extensible CMS - DNN Software Forge\"", ". ", "Dotnetnuke.com", ". 2017-01-28", ". Retrieved ", "2017-04-05", ".", "\u00a0", "\n", "^", " ", "\"Why DNN Community Extensions have Moved to GitHub\"", ". ", "Github.com", ". 2015-02-20", ". Retrieved ", "2017-04-05", ".", "\u00a0", "\n", "^", " ", "\"DotNetNuke Development | DNN Developer | DNN Experts, DNN Module Development, DNN Skins India\"", ". ", "Swayamsoft.com", ". Retrieved ", "2017-04-05", ".", "\u00a0", "\n", "^", " ", "\"Build CMS, Building a Product Roadmap, CMS Development Tools\"", ". ", "Dnnsoftware.com", ". 2017-01-28", ". Retrieved ", "2017-04-05", ".", "\u00a0", "\n", "^", " ", "\"Top 5 DotNetNuke Manifest file Module Packaging Tips\"", ". iFinity", ". Retrieved ", "2017-04-05", ".", "\u00a0", "\n", "^", " ", "\"How to Create a Responsive HTML5 Skin for DotNetNuke\"", ". ", "Dnncreative.com", ". Retrieved ", "2017-04-05", ".", "\u00a0", "\n", "^", " ", "\"DNN Cloud Demo - Install DNN Software | DNN DotNetNuke\"", ". ", "Dnnsoftware.com", ". 2017-01-28", ". Retrieved ", "2017-04-05", ".", "\u00a0", "\n", "^", " ", "\"DotNetNuke in Azure Cloud\"", ". Elinext. 2012-04-14", ". Retrieved ", "2017-04-05", ".", "\u00a0", "\n", "^", " ", "\"Microsoft Web Platform\"", ". ", "Microsoft.com", ". Retrieved ", "2017-04-05", ".", "\u00a0", "\n", "^", " ", "\"Installing DotNetNuke 4.9.0 on Medium Trust Webservers\"", ". ", "Programmersanonymous.net", ". Retrieved ", "2017-04-05", ".", "\u00a0", "\n", "^", " ", "\"DNN CMS Platform - Home\"", ". ", "Dotnetnuke.codeplex.com", ". Retrieved ", "2017-04-05", ".", "\u00a0", "\n", "^", " ", "\"dnnsoftware/Dnn.Platform: DNN Corp Platform Repository\"", ". GitHub", ". Retrieved ", "2017-04-05", ".", "\u00a0", "\n", "^", " ", "\"DNN API Endpoint Documentation\"", ". ", "Endpoint.dnnapi.dnnsharp.com", ". Retrieved ", "2017-04-05", ".", "\u00a0", "\n", "^", " ", "\"DNN Skinning Reference | DNN Skinning Tool | Dot Net Nuke Skinning\"", ". ", "10poundgorilla.com", ". Retrieved ", "2017-04-05", ".", "\u00a0", "\n", "^", " ", "\"About DNN - DNN Company Overview | DNN\"", ". DotNetNuke", ". Retrieved ", "2017-04-05", ".", "\u00a0", "\n", "^", " ", "\"CMS Wiki, Content Management Wiki\"", ". DNN Software. 2017-01-28", ". Retrieved ", "2017-04-05", ".", "\u00a0", "\n", "^", " ", "\"Open Source CMS Project History - DNN CMS & Online Community Software\"", ". ", "dotnetnuke.com", ".", "\u00a0", "\n", "^", " ", "Book: Building Websites with DotNetNuke 5, Michael Washington and Ian Lackey, Packt Publishing. Page 14 \"The core team comprises individuals invited to join the team by Shaun Walker, whom they affectionately call the \"Benevolent Dictator\".\"", "\n", "^", " ", "\"About DNN - DNN Company Overview - DNN (DotNetNuke)\"", ". ", "dotnetnuke.com", ".", "\u00a0", "\n", "^", " ", "\"Trademark Electronic Search System (TESS)\"", ". ", "uspto.gov", ".", "\u00a0", "\n", "^", " ", "\"Basic search: 1192080 - Canadian trade-marks database - Intellectual property and copyright - Canadian Intellectual Property Office - Industry Canada\"", ". ", "ic.gc.ca", ".", "\u00a0", "\n", "^", " ", "\"Basic search: 1256752 - Canadian trade-marks database - Intellectual property and copyright - Canadian Intellectual Property Office - Industry Canada\"", ". ", "ic.gc.ca", ".", "\u00a0", "\n", "^", " ", "[1]", "[", "permanent dead link", "]", "\n", "^", " ", "[2]", "[", "permanent dead link", "]", "\n", "^", " ", "[3]", "[", "permanent dead link", "]", "\n", "^", " ", "[4]", "[", "permanent dead link", "]", "\n", "^", " ", "\"About DNN - DNN Company Overview - DNN (DotNetNuke)\"", ". ", "dotnetnuke.com", ".", "\u00a0", "\n", "^", " ", "\"DotNetNuke Raises $8 Million\"", ". PE Hub. 2010-02-09", ". Retrieved ", "2017-04-05", ".", "\u00a0", "\n", "^", " ", "\"DotNetNuke Buys Snowcovered\"", ". ", "Silicontap.com", ". 2009-08-27", ". Retrieved ", "2017-04-05", ".", "\u00a0", "\n", "^", " ", "\"Archived copy\"", ". Archived from ", "the original", " on 2010-06-18", ". Retrieved ", "2010-06-15", ".", "\u00a0", "\n", "^", " ", "Shaun Walker. ", "\"DNN: The Metamorphosis Continues..\"", " ", "DNN Software", ".", "\u00a0", "\n", "\n", "\n", "External links", "[", "edit", "]", "\n", "\n", "DNN Corp.", " - The official DNN Corp Site", "\n", "Comparison of Evoq with other CMS systems", "\n", "DNN Plus.", " - DNN Persian Site", "\n", "DotNetNuke Development", " - Content Management System", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "v", "\n", "t", "\n", "e", "\n", "\n", "\n", "Web frameworks", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "Comparison", "\n", "\n", "\n", "\n", "\n", "\n", "C++", "\n", "\n", "\n", "\n", "CppCMS", "\n", "Wt", "\n", "\n", "\n", "\n", "\n", "\n", "CLI", "\n", "\n", "\n", "\n", "ASP.NET", "\n", "\n", "Core", "\n", "AJAX", "\n", "Dynamic Data", "\n", "MVC", "\n", "Razor", "\n", "Web Forms", "\n", "\n", "\n", "DNN", "\n", "BFC", "\n", "MonoRail", "\n", "OpenRasta", "\n", "Umbraco", "\n", "\n", "\n", "\n", "\n", "\n", "ColdFusion", "\n", "\n", "\n", "\n", "CFWheels", "\n", "ColdBox Platform", "\n", "ColdSpring", "\n", "Fusebox", "\n", "Mach-II", "\n", "Model-Glue", "\n", "\n", "\n", "\n", "\n", "\n", "Common Lisp", "\n", "\n", "\n", "\n", "Caveman2", "\n", "CL-HTTP", "\n", "UnCommon Web", "\n", "Weblocks", "\n", "\n", "\n", "\n", "\n", "\n", "Haskell", "\n", "\n", "\n", "\n", "Happstack", "\n", "Yesod", "\n", "Snap", "\n", "\n", "\n", "\n", "\n", "\n", "Java", "\n", "\n", "\n", "\n", "AppFuse", "\n", "Flexive", "\n", "Grails", "\n", "GWT", "\n", "ICEfaces", "\n", "ItsNat", "\n", "JavaServer Faces", "\n", "JHipster", "\n", "Jspx", "\n", "JWt", "\n", "OpenXava", "\n", "Play", "\n", "Reasonable Server Faces", "\n", "Remote Application Platform", "\n", "RIFE", "\n", "Seam", "\n", "Sling", "\n", "Spring", "\n", "Stripes", "\n", "Struts", "\n", "Tapestry", "\n", "Vaadin", "\n", "Vert.x", "\n", "WebWork", "\n", "Wicket", "\n", "WaveMaker", "\n", "ZK", "\n", "\n", "\n", "\n", "\n", "\n", "JavaScript", "\n", "\n", "\n", "\n", "Ample SDK", "\n", "Angular", "/", "AngularJS", "\n", "Backbone.js", "\n", "Chaplin.js", "\n", "Closure", "\n", "Dojo Toolkit", "\n", "Ember.js", "\n", "Ext JS", "\n", "jQuery", "\n", "Meteor", "\n", "MooTools", "\n", "Node.js", "\n", "OpenUI5", "\n", "Prototype", "\n", "React", "\n", "Rico", "\n", "script.aculo.us", "\n", "Sencha Touch", "\n", "SproutCore", "\n", "Wakanda", "\n", "\n", "\n", "\n", "\n", "\n", "Perl", "\n", "\n", "\n", "\n", "Catalyst", "\n", "Dancer", "\n", "Mason", "\n", "Maypole", "\n", "Mojolicious", "\n", "WebGUI", "\n", "\n", "\n", "\n", "\n", "\n", "PHP", "\n", "\n", "\n", "\n", "CakePHP", "\n", "CodeIgniter", "\n", "Drupal", "\n", "Fat-Free", "\n", "FuelPHP", "\n", "Flow", "\n", "Gyroscope", "\n", "Horde", "\n", "Kohana", "\n", "Laravel", "\n", "Lithium", "\n", "Midgard", "\n", "MODX", "\n", "Nette", "\n", "Phalcon", "\n", "Pop PHP", "\n", "PRADO", "\n", "ProcessWire", "\n", "Qcodo", "\n", "Silex", "\n", "SilverStripe", "\n", "Symfony", "\n", "TYPO3", "\n", "Xaraya", "\n", "XOOPS", "\n", "Yii", "\n", "Zend Framework", "\n", "\n", "\n", "\n", "\n", "\n", "Python", "\n", "\n", "\n", "\n", "BlueBream", "\n", "CherryPy", "\n", "Django", "\n", "Flask", "\n", "Grok", "\n", "Nevow", "\n", "Pyjs", "\n", "Pylons", "\n", "Pyramid", "\n", "Quixote", "\n", "TACTIC", "\n", "Tornado", "\n", "TurboGears", "\n", "web2py", "\n", "Webware", "\n", "Zope 2", "\n", "\n", "\n", "\n", "\n", "\n", "Ruby", "\n", "\n", "\n", "\n", "Camping", "\n", "Merb", "\n", "Padrino", "\n", "Ruby on Rails", "\n", "Sinatra", "\n", "\n", "\n", "\n", "\n", "\n", "Scala", "\n", "\n", "\n", "\n", "Lift", "\n", "Play", "\n", "Scalatra", "\n", "\n", "\n", "\n", "\n", "\n", "Smalltalk", "\n", "\n", "\n", "\n", "AIDA/Web", "\n", "Seaside", "\n", "\n", "\n", "\n", "\n", "\n", "Other languages", "\n", "\n", "\n", "\n", "Vibe.d", " (", "D", ")", "\n", "Application Express", " (", "PL/SQL", ")", "\n", "Grails", " (", "Groovy", ")", "\n", "Kepler", " (", "Lua", ")", "\n", "Rocket", " (", "Rust", ")", "\n", "OpenACS", " (", "Tcl", ")", "\n", "Phoenix", " (", "Elixir", ")", "\n", "SproutCore", " (", "JavaScript", "-", "Ruby", ")", "\n", "Yaws", " (", "Erlang", ")", "\n", "\n", "\n", "\n", "\n", "\n", "\n\n\n", "\n", "\n", "\n", "\n"], "lastUpdated": " 17 January 2018, at 04:00."}, +{"title": "Drupal", "text": ["\n", "Drupal", "\n", "\n", "\n", "\n", "\n", "\n", "Drupal 8 in action. Showing in-context editing and previews (", "WYSIWYG", ").", "\n", "\n", "\n", "\n", "Original author(s)", "\n", "Dries Buytaert", "\n", "\n", "\n", "Initial release", "\n", "May\u00a018, 2000", "; 17 years ago", "\u00a0(", "2000-05-18", ")", "[1]", "\n", "\n", "\n", "\n", "\n", "\n", "Stable release", "\n", "\n", "8.4.2", "[2]", " / 3\u00a0November 2017", "; 2 months ago", "\u00a0(", "2017-11-03", ")", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "Repository", "\n", "\n", "\n", "\n", "http://cgit.drupalcode.org/drupal", "\n", "\n", "\n", "\n", "\n", "\n", "Development status", "\n", "Active", "\n", "\n", "\n", "Written in", "\n", "PHP", ", using ", "Symfony", "\n", "\n", "\n", "Operating system", "\n", "Unix-like", ", ", "Windows", "\n", "\n", "\n", "Platform", "\n", "Cross-platform", "\n", "\n", "\n", "Size", "\n", "80\u00a0MB (uncompressed Drupal 8 core)", "[2]", "\n", "\n", "\n", "Available in", "\n", "Multilingual", "\n", "\n", "\n", "Type", "\n", "Content management framework", ", ", "Content management system", ", ", "Community", " and ", "Blog software", "\n", "\n", "\n", "License", "\n", "GPLv2", " or later", "[3]", "\n", "\n", "\n", "Website", "\n", "www", ".drupal", ".org", "\n", "\n", "\n", "Drupal", " ", "/", "\u02c8", "d", "r", "u\u02d0", "p", "\u0259l", "/", " is ", "[4]", " a ", "free", " and ", "open source", " ", "content-management framework", " written in ", "PHP", " and distributed under the ", "GNU General Public License", ".", "[3]", "[5]", "[6]", " Drupal provides a ", "back-end", " framework for at least 2.3% of all ", "web sites", " worldwide", "[7]", "[8]", " \u2013 ranging from personal ", "blogs", " to corporate, political, and government sites.", "[9]", " Systems also use Drupal for ", "knowledge management", " and for business collaboration.", "[10]", "\n", "As of November 2017", "[update]", ", the Drupal community is composed of more than 1.3 million members,", "[11]", "[12]", " including 109,000 users actively contributing,", "[13]", " resulting in more than 39,000 free modules that extend and customize Drupal functionality,", "[14]", " over 2,500 free themes that change the look and feel of Drupal,", "[15]", " and at least 1,180 free distributions that allow users to quickly and easily set up a complex, use-specific Drupal in fewer steps.", "[16]", "\n", "The standard release of Drupal, known as ", "Drupal core", ", contains basic features common to ", "content-management systems", ". These include user account registration and maintenance, menu management, ", "RSS", " feeds, taxonomy, page layout customization, and system administration. The Drupal core installation can serve as a simple Web site, a single- or multi-user blog, an ", "Internet forum", ", or a community Web site providing for ", "user-generated content", ".", "\n", "Drupal also describes itself as a ", "Web application framework", ".", "[17]", " When compared with notable frameworks Drupal meets most of the generally accepted ", "feature requirements", " for such web frameworks.", "[18]", "[19]", "[20]", "\n", "Although Drupal offers a sophisticated ", "API", " for developers, basic Web-site installation and administration of the framework require no programming skills.", "[21]", "\n", "Drupal runs on any ", "computing platform", " that supports both a ", "Web server", " capable of running PHP and a ", "database", " to store content and configuration.", "\n", "\n", "\n", "\n", "Contents", "\n", "\n", "\n", "1", " ", "History", "\n", "2", " ", "Core", "\n", "\n", "2.1", " ", "Core modules", "\n", "2.2", " ", "Core themes", "\n", "2.3", " ", "Localization", "\n", "2.4", " ", "Auto-update notification", "\n", "2.5", " ", "Database abstraction", "\n", "2.6", " ", "Windows development", "\n", "2.7", " ", "Accessibility", "\n", "\n", "\n", "3", " ", "Extending the core", "\n", "\n", "3.1", " ", "Modules", "\n", "3.2", " ", "Themes", "\n", "3.3", " ", "Distributions", "\n", "\n", "\n", "4", " ", "Architecture", "\n", "5", " ", "Community", "\n", "6", " ", "Security", "\n", "7", " ", "Criticism", "\n", "8", " ", "See also", "\n", "9", " ", "References", "\n", "10", " ", "Further reading", "\n", "11", " ", "External links", "\n", "\n", "\n", "\n", "History", "[", "edit", "]", "\n", "\n", "Latest major releases", "\n", "\n", "Version", "\n", "Release date", "\n", "\n", "\n", "8.4.2", "\n", "November 3, 2017", "[2]", "\n", "\n", "\n", "8.2.8", "\n", "April 19, 2017", "[2]", "\n", "\n", "\n", "7.56", "\n", "June 21, 2017", "[22]", "\n", "\n", "\n", "6.38", "\n", "February 24, 2016", "[23]", "\n", "\n", "\n", "5.23", "\n", "August 11, 2010", "[24]", "\n", "\n", "\n", "\n", "\n", "\n", "\nDrupal version 1-6 release history timeline", "\n", "\n", "\n", "Originally written by ", "Dries Buytaert", " as a ", "message board", ", Drupal became an ", "open source", " project in 2001.", "[25]", " The name ", "Drupal", " represents an English rendering of the ", "Dutch", " word ", "druppel", ", which means \"drop\" (as in a water droplet).", "[26]", " The name came from the now-defunct Drop.org Web site, whose code slowly evolved into Drupal. Buytaert wanted to call the site \"dorp\" (Dutch for \"village\") for its community aspects, but mistyped it when checking the domain name and thought the error sounded better.", "[25]", "\n", "Interest in Drupal got a significant boost in 2003 when it helped build \"DeanSpace\" for ", "Howard Dean", ", one of the candidates in the ", "U.S. Democratic Party", "'s primary campaign for the ", "2004 U.S. presidential election", ". DeanSpace used open-source sharing of Drupal to support a decentralized network of approximately 50 disparate, unofficial pro-Dean websites that allowed users to communicate directly with one another as well as with the campaign.", "[27]", " After Dean ended his campaign, members of his Web team continued to pursue their interest in developing a Web platform that could aid political activism by launching CivicSpace Labs in July 2004, \"...the first company with full-time employees that was developing and distributing Drupal technology.\"", "[28]", " Other companies began to also specialize in Drupal development.", "[29]", "[30]", " By 2013 the Drupal Web site listed hundreds of vendors that offered Drupal-related services.", "[31]", "\n", "As of 2014", "[update]", " Drupal is developed by a community,", "[32]", " and its popularity is growing rapidly.", "[", "citation needed", "]", " From July 2007 to June 2008 the Drupal.org site provided more than 1.4 million downloads of Drupal software, an increase of approximately 125% from the previous year.", "[33]", "[34]", "\n", "As of January 2017", "[update]", " more than 1,180,000 sites use Drupal.", "[35]", " These include hundreds of well-known organizations,", "[36]", " including corporations, media and publishing companies, governments, non-profits,", "[37]", " schools, and individuals. Drupal has won several ", "Packt", " Open Source CMS Awards", "[38]", " and won the ", "Webware 100", " ", "[", "clarification needed", "]", " three times in a row.", "[39]", "[40]", "\n", "On March 5, 2009 Buytaert announced a ", "code freeze", " for Drupal 7 for September 1, 2009.", "[41]", " Drupal 7 was released on January 5, 2011, with release parties in several countries.", "[42]", " After that, maintenance on Drupal 5 stopped, with only Drupal 7 and Drupal 6 maintained.", "[43]", " Drupal 7 series maintenance updates are released regularly.", "[44]", "\n", "On December 1, 2012, Drupal 8 started its feature completion.", "[45]", " About three years later, on October 7, 2015 Drupal 8 first release candidate (rc1) was announced.", "[46]", " Drupal 8 includes new features and improvements for both users and developers, including: a revamped user interface; WYSIWYG and in-place editing; improved mobile support; added and improved key contributed modules including Views, Date, and Entity Reference; introduced a new object-oriented backend leveraging Symfony components; revamped configuration management; and improved multilingual support. Drupal 8 rc1 is the collective work of over 3,200 core contributors.", "[47]", "\n", "Drupal 8.0.0 was released on November 19, 2015.", "[48]", " A subsequent upgrade to it is also available in the form of Drupal 8.1.0", "[49]", " that brings numerous improvements, including CKEditor WYSIWYG enhancements, added APIs, an improved help page, and two new experimental modules. Experimental modules are meant for testing purposes, but are not yet fully supported.", "\n", "Core", "[", "edit", "]", "\n", "In the Drupal community, \"core\" refers to the collaboratively built codebase that can be extended through contributory modules and for versions prior to Drupal 8 is kept outside of the \"sites\" folder of a Drupal installation.", "[50]", " (Starting with version 8, core is kept in its own 'core' sub-directory.) Drupal core is the stock element of Drupal. Bootstrap and Common libraries are defined as Drupal core and all other functionality is defined as Drupal modules including the system module itself.", "\n", "In a Drupal website's default configuration, authors can contribute content as either registered or anonymous users (at the discretion of the administrator). This content is accessible to web visitors through a variety of selectable criteria. As of Drupal 8, Drupal has adopted some ", "Symfony", " libraries into Drupal core.", "\n", "Core modules also includes a hierarchical ", "taxonomy", " system, which lets developers categorize content or ", "tagged", " with key words for easier access.", "[21]", "\n", "Drupal maintains a detailed ", "changelog", " of core feature updates by version.", "[51]", "\n", "Core modules", "[", "edit", "]", "\n", "Drupal core includes optional modules that can be enabled by the administrator to extend the functionality of the core website.", "[52]", "\n", "The core Drupal distribution provides a number of features, including:", "[52]", "\n", "\n", "\n", "Access statistics and logging", "\n", "Advanced search", "\n", "Blogs, books, comments, forums, and polls", "\n", "Caching and feature throttling for improved performance", "\n", "Descriptive URLs", "\n", "Multi-level menu system", "\n", "Multi-site support", "[53]", "\n", "Multi-user content creation and editing", "\n", "OpenID", " support", "\n", "RSS feed and feed aggregator", "\n", "Security and new release update notification", "\n", "User profiles", "\n", "Various access control restrictions (user roles, IP addresses, email)", "\n", "Workflow tools (triggers and actions)", "\n", "\n", "\n", "Core themes", "[", "edit", "]", "\n", "Drupal includes core themes, which customize the \"look and feel\" of Drupal sites,", "[54]", " for example, Garland and Bartik.", "\n", "The Color Module, introduced in Drupal core 5.0, allows administrators to change the color scheme of certain themes via a browser interface.", "[55]", "\n", "Localization", "[", "edit", "]", "\n", "As of January 2017", "[update]", ", Drupal had been made available in 100 languages and ", "English", " (the default).", "[56]", " Support is included for right-to-left languages such as ", "Arabic", ", ", "Persian", ", and ", "Hebrew", ".", "[57]", "\n", "Drupal localization is built on top of ", "gettext", ", the GNU ", "internationalization and localization", " (i18n) library.", "\n", "Auto-update notification", "[", "edit", "]", "\n", "Drupal can automatically notify the administrator about new versions of modules, themes, or the Drupal core.", "[57]", " It's important to update quickly after security updates are released.", "\n", "Before updating it is highly recommended to take backup of core, modules, theme, files and database. If there is any error shown after update or new updates is not compatible with a module, then it can be quickly replace by backup. There are several backup modules available in Drupal.", "\n", "On October 15, 2014, a sql injection vulnerability was announced and update released.", "[58]", " Two weeks later the Drupal security team released an advisory explaining that everyone should act under the assumption that any site not updated within 7 hours of the announcement are infected.", "[59]", " Thus, it can be extremely important to apply these updates quickly and usage of a tool to make this process easier like drush is highly recommended.", "\n", "Database abstraction", "[", "edit", "]", "\n", "Prior to version 7, Drupal had functions that performed tasks related to databases, such as SQL query cleansing, multi-site table name prefixing, and generating proper SQL queries. In particular, Drupal 6 introduced an abstraction layer that allowed programmers to create SQL queries without writing SQL.", "\n", "Drupal 7 extends the data abstraction layer so that a programmer no longer needs to write SQL queries as text strings. It uses ", "PHP Data Objects", " to abstract the database. ", "Microsoft", " has written a database driver for their ", "SQL Server", ".", "[60]", " Drupal 7 supports the file-based SQLite database engine, which is part of the standard PHP distribution.", "\n", "Windows development", "[", "edit", "]", "\n", "With Drupal 7's new database abstraction layer, and ability to run on the Windows web server ", "IIS", ", it is now easier for Windows developers to participate in the Drupal community.", "\n", "A group on Drupal.org is dedicated to Windows issues.", "[61]", "\n", "Accessibility", "[", "edit", "]", "\n", "With the release of Drupal 7, ", "Web accessibility", " has been greatly improved by the Drupal community.", "[62]", " Drupal is a good framework for building sites accessible to people with disabilities, because many of the best practices have been incorporated into the program code Core. The accessibility team is carrying on the work of identifying and resolving accessibility barriers and raising awareness within the community.", "\n", "Drupal 7 started the adoption of ", "WAI-ARIA", " support for ", "Rich Internet Applications", " and this has been carried further in Drupal 8. There have been many improvements to both the visitor and administrator sides of Drupal, especially:", "\n", "\n", "Drag and drop functionality", "\n", "Improved color contrast and intensity", "\n", "Adding skip navigation to core themes", "\n", "Adding labels by default for input forms", "\n", "Fixing CSS display:none with consistent methods for hiding and exposing text on focus.", "\n", "\n", "The community also added an accessibility gate for core issues in Drupal 8.", "[63]", "\n", "Extending the core", "[", "edit", "]", "\n", "Drupal core is ", "modular", ", defining a system of ", "hooks", " and ", "callbacks", ", which are accessed internally via an ", "API", ".", "[64]", " This design allows third-party contributed ", "modules", " and ", "themes", " to extend or override Drupal's default behaviors without changing Drupal core's code.", "\n", "Drupal isolates core files from contributed modules and themes. This increases flexibility and security and allows administrators to cleanly upgrade to new releases without overwriting their site's customizations.", "[65]", " The Drupal community has the saying, \"Never hack core,\" a strong recommendation that site developers do not change core files.", "[50]", "\n", "Modules", "[", "edit", "]", "\n", "Contributed modules offer such additional or alternate features as image galleries, custom content types and content listings, ", "WYSIWYG", " editors, private messaging, third-party integration tools,", "[66]", " integrating with BPM portals,", "[67]", " and more. As of January 2017", "[update]", " the Drupal website lists more than 36,500 free ", "modules", ".", "[14]", "\n", "Some of the most commonly used contributed modules include:", "[68]", "\n", "\n", "Content Construction Kit (CCK): allows site administrators to dynamically create content types by extending the database schema. \"Content type\" describes the kind of information. Content types include, but are not limited to, events, invitations, reviews, articles, and products. The CCK Fields API is in Drupal core in Drupal 7.", "[69]", "[70]", "\n", "Views: facilitates the retrieval and presentation, through a database abstraction system, of content to site visitors. Basic views functionality has been added to core in Drupal 8.", "[71]", "\n", "Panels: drag and drop layout manager that allows site administrators to visually design their site.", "\n", "Rules: conditionally executed actions based on recurring events.", "\n", "Features: enables the capture and management of features (entities, views, fields, configuration, etc.) into custom modules.", "\n", "Context: allows definition of sections of site where Drupal features can be conditionally activated", "\n", "Media: makes photo uploading and media management easier", "\n", "Services: provides an API for Drupal.", "\n", "Organic Groups Mailing List", "\n", "\n", "Themes", "[", "edit", "]", "\n", "As of January 2017", "[update]", ", there are more than 2,400", "[15]", " free community-contributed ", "themes", ". Themes adapt or replace a Drupal site's default look and feel.", "\n", "Drupal themes use standardized formats that may be generated by common third-party theme design engines. Many are written in the ", "PHPTemplate", " engine", "[72]", " or, to a lesser extent, the ", "XTemplate", " engine.", "[73]", " Some templates use hard-coded ", "PHP", ". Drupal 8 will integrate the ", "Twig", " templating engine.", "\n", "The inclusion of the PHPTemplate and XTemplate engines in Drupal addressed user concerns about flexibility and complexity.", "[74]", " The Drupal theming system utilizes a ", "template engine", " to further separate ", "HTML", "/", "CSS", " from PHP. A popular Drupal contributed module called 'Devel' provides GUI information to developers and themers about the page build.", "\n", "Community-contributed themes", "[75]", " at the Drupal website are released under a free ", "GPL", " license,", "[76]", " and the most installed Drupal themes are ", "listed on this page", ".", "[77]", "\n", "Distributions", "[", "edit", "]", "\n", "In the past, those wanting a fully customized installation of Drupal had to download a pre-tailored version separately from the official Drupal core. Today, however, a distribution defines a packaged version of Drupal that upon installation, provides a website or application built for a specific purpose.", "\n", "The distributions offer the benefit of a new Drupal site without having to manually seek out and install third-party contributed modules or adjust configuration settings.", "[78]", " They are collections of modules, themes, and associated configuration settings that prepare Drupal for custom operation. For example, a distribution could configure Drupal as a \"brochure\" site rather than a news site or ", "online store", ".", "\n", "Architecture", "[", "edit", "]", "\n", "Drupal is based on the ", "Presentation Abstraction Control", " architecture, or PAC.", "\n", "The ", "menu system", " acts as the Controller. It accepts input via a single source (", "HTTP GET", " and ", "POST", "), routes requests to the appropriate helper functions, pulls data out of the Abstraction (nodes and, from Drupal 5 onwards, forms), and then pushes it through a filter to get a Presentation of it (the theme system).", "\n", "It even has multiple, parallel PAC agents in the form of blocks that push data out to a common canvas (page.tpl.php).", "[79]", "\n", "Community", "[", "edit", "]", "\n", "Drupal.org has a large community of users and developers who provide active ", "community", " support by coming up with new updates to help improve the functionality of Drupal,", "[80]", " As of January 2017", "[update]", " more than 105,400 users are actively contributing.", "[13]", " The semiannual DrupalCon conference alternates between North America, Europe and Asia.", "[81]", " Attendance at DrupalCon grew from 500 at ", "Szeged", " in August 2008, to over 3,700 people at Austin, Texas in June, 2014.", "\n", "Smaller events, known as \"Drupal Camps\" or DrupalCamp,", "[82]", " occur throughout the year all over the world. The annual Florida DrupalCamp brings users together for ", "Coding for a Cause", " that benefits a local nonprofit organization, as does the annual GLADCamp (", "Greater Los Angeles Drupal", " Camp) event, ", "Coders with a Cause", ".", "\n", "The Drupal community also organizes professional and semi-professional gatherings called ", "meetups", " at a large number of venues around the world. In July, 2013, ", "Droplabs", ", a co-working space in Los Angeles, California, was recognized as the world's \"Top Drupal Location", "[83]", "\" (with 62 recorded events) when compared with other event venues over a 12-month period.", "\n", "There are a number of active Drupal forums,", "[84]", " mailing lists", "[85]", " and discussion groups.", "[86]", " Drupal also maintains several ", "IRC", " channels", "[87]", " on the ", "Freenode", " network.", "\n", "There are over 30 national communities", "[88]", " around drupal.org offering language-specific support.", "\n", "Notable Drupal users include ", "NBC", ", ", "Taboola", ", and ", "Patch", ".", "[89]", "\n", "Security", "[", "edit", "]", "\n", "Drupal's policy is to announce the nature of each security vulnerability once the fix is released.", "[90]", "[91]", "\n", "Administrators of Drupal sites are automatically notified of these new releases via the Update Status module (Drupal 6) or via the Update Manager (Drupal 7).", "[92]", "\n", "Drupal maintains a security announcement mailing list, a history of all security advisories,", "[93]", " a security team home page,", "[94]", " and an RSS feed", "[95]", " with the most recent security advisories.", "\n", "In mid-October 2014,", "[96]", " Drupal issued a \"highly critical\" security advisory regarding an ", "SQL injection", " bug in Drupal 7, also known as Drupalgeddon.", "[97]", "[98]", "\n", "Downloading and installing an upgrade to Drupal 7.32 fixes the vulnerability, but does not remove any ", "backdoor", " installed by hackers if the site has already been ", "compromised", ".", "[99]", " Attacks began soon after the vulnerability was announced. According to the Drupal security team, where a site was not patched within hours of the announcement, it should be considered compromised and taken offline by being replaced with a static HTML page while the administrator of its server must be told that other sites on the same server may also have been compromised.", "\n", "To solve the problem, the site must be restored using backups from before October 15, be patched and manually updated, and anything merged from the site must be audited.", "[100]", "\n", "Criticism", "[", "edit", "]", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "This section needs to be ", "updated", ". ", "Please update this article to reflect recent events or newly available information.", " ", "(December 2014)", "\n", "\n", "\n", "\n", "In an article", "[101]", " about the adoption of Drupal by the Whitehouse.gov site, ", "Slate", " associate editor Chris Wilson", "[102]", " lists some common criticisms of Drupal. Other criticisms have included:", "\n", "\n", "Usability:", " Aspects of the Drupal 6 administration interface were confusing and intimidating to some, particularly for new administrators.", "[103]", "[104]", "[105]", " According to Dries Buytaert, Drupal 7 addressed 90% of the problems identified by usability tests conducted at the Universities of Minnesota and Baltimore.", "[106]", "[107]", " To achieve this, ", "Acquia", " (the company founded by the project lead of Drupal) hired ", "user experience", " designer Mark Boulton to work with the Drupal community to design an improved user interface for Drupal's administration interface.", "[108]", " The majority of his team's design work has been implemented by the community in Drupal 7. The 2011 usability test results from the University of Minnesota Office of Information Technology show that all of the major usability problems identified in Drupal 6 are either vastly improved or non-existent in Drupal 7. However, some new usability problems were identified.", "[109]", "[110]", " Since the release of Drupal 7 there are now various distributions and applications to enhance the Back-end Usability of Drupal such as Drupal Gardens,", "[111]", " Open Enterprise", "[112]", " and Mitkom Builder.", "[113]", "\n", "Learning curve:", " Some users describe Drupal as being difficult to master.", "[114]", "[115]", " Drupal's many contributed modules can have overlapping functionality and have been reported as overwhelming to new users.", "[116]", "\n", "Backward compatibility (for software development):", " Prior to 7, Drupal did not commit to backward compatibility across major revisions.", "[117]", " This means that module and theme developers may have to rework their code to make it compatible. However, Drupal's policy is to not change how it uses data. This means that data from previous versions is still usable without alteration in the new release.", "[118]", "[119]", " Drupal documents any incompatibilities, allowing the user to make informed decisions about when and whether to upgrade. Upgrades from 8 to 9 and beyond will require substantially less effort.\" ", "[120]", "\n", "Performance/scalability:", " In 2008, ", "performance", " tests between Drupal 6.1 and ", "Joomla", " 1.5 demonstrated that Drupal's pages were delivered \"significantly faster\" than those of Joomla.", "[121]", " Despite this, arguments over speed persist.", "[122]", " Drupal is likely to be slower than a special-purpose application for a given task. For example, ", "WordPress", " typically outperforms Drupal as a single-user blogging tool. Drupal positions itself for broader applications requirements that are outside the scope of more narrowly focused applications.", "[123]", " Drupal offers ", "caching", " to store various page elements, the use of which resulted in a 508% improvement in one benchmark.", "[124]", " When using Drupal's default Page Cache mechanism, the cached pages are delivered only to anonymous users, so contributed modules must be installed to allow caching content for logged in users.", "[125]", "[126]", " Like performance, ", "scalability", " (the ability to add servers to handle growing numbers of visitors with consistent response) can become a concern on large, interactive sites. ", "MySQL", "'s query caching can help reduce the load on the database server caused by Drupal's high ", "query rate", ".", "[127]", "[128]", " Drupal caches database schema ", "metadata", " as well as elements such as blocks, forms and menus.", "[129]", " Drupal 7 increases performance in database queries and reduces PHP code usage.", "[130]", "\n", "Integrability with hosting structures:", " Because of Drupal's demanding query requirements, Drupal-based websites can quickly become very taxing to hosts whose databases reside on a machine separate from their ", "HTTP server", ". While the issue can normally be addressed by implementing aggressive ", "caching", " as described above, such methods may be unimplementable in cases where the host does not offer access to ", "PHP accelerators", " like ", "XCache", " or ", "APC", ". Drupal has plugins that facilitate similar caching without requiring special PHP extensions.", "[131]", "[132]", "\n", "The Drupal core search is ineffective at searching content:", "[", "citation needed", "]", " There are contributed modules that will greatly improve the search functionality on a Drupal website, but they are not easily accessible due to a high learning curve and the difficulty users have in general of finding the right module.", "[", "citation needed", "]", " One of the faceted search options is ", "Apache Solr", " Search Integration module, however, the module requires a dedicated server or ", "virtual private server", " (VPS) to operate because Solr must run on a ", "servlet", " container, e.g. ", "Tomcat", ", ", "Jetty", " or ", "Resin", ". These requirements make it harder for a Drupal website to have a functional search feature. In response some companies have created Apache Solr ", "SaaS", " products.", "\n", "Many published, yet incomplete or outdated modules", "[133]", " While Drupal's site boasts over 30,000 downloadable modules, searching the Drupal module directory finds many that are incomplete abandoned projects and do not work at all, only work for an outdated version due to lack of backward compatibility, or are unusable due to serious bugs. This is due to the open source nature of Drupal, and the fact that anyone is free to start a module and publish it on drupal.org. Modules with an active maintenance team are often highly polished, secure, and nearly bug free. Recent changes to the drupal.org website now let users search for modules, themes, and distributions, while filtering results by stability. ", "[134]", "\n", "\n", "\n", "Difficult to unit test:", "[135]", " Drupal 7 doesn't follow MVC framework and stores all of its configurations in database and as a result, unit testing the code without touching the database becomes extremely difficult. As a result, developers have resorted to using integration testing frameworks such as Red Test or behavior-driven development framework such as Behat and Codeception. Drupal 8 has taken a great stride in making it easier for developers to write unit-testable code.", "\n", "\n", "See also", "[", "edit", "]", "\n", "\n", "\n", "Free software portal", "\n", "\n", "\n", "\n", "Comparison of web frameworks", "\n", "List of applications with iCalendar support", "\n", "List of content management systems", "\n", "\n", "References", "[", "edit", "]", "\n", "\n", "\n", "^", " ", "Earliest tagged releases", "\n", "^ ", "a", " ", "b", " ", "c", " ", "d", " ", "Drupal 8 release history; drupal.org", "\n", "^ ", "a", " ", "b", " ", "\"Licensing FAQ\"", ". ", "drupal.org", ". Retrieved ", "2009-04-08", ".", "\u00a0", "\n", "^", " ", "A query on ", "Drupal", "'", "s official website on March 2009: ", "How does one pronounce \"Drupal\"?", " (accessed 19 June 2013)", "\n", "^", " ", "\"The Drupal Overview\"", ". ", "drupal.org", ". Retrieved ", "2009-04-08", ".", "\u00a0", "\n", "^", " ", "\"System Requirements\"", ". ", "drupal.org", ". Retrieved ", "2009-04-08", ".", "\u00a0", "\n", "^", " ", "W3Techs (2011-07-15). ", "\"Usage of content management systems for websites\"", ". Retrieved ", "2011-07-15", ".", "\u00a0", "\n", "^", " ", "BuiltWith (2011-03-28). ", "\"Drupal Usage Statistics\"", ". Retrieved ", "2011-03-28", ".", "\u00a0", "\n", "^", " ", "\"The State of Drupal 2010 speech\"", ". Archive.org. 2001-03-10", ". Retrieved ", "2011-08-31", ".", "\u00a0", "\n", "^", " ", "\"Knowledge management with Drupal\"", ".", "\u00a0", "\n", "^", " ", "\"Getting Involved | Drupal.org\"", ". ", "www.drupal.org", ". 2017-04-10", ". Retrieved ", "2017-04-11", ". ", "Drupal.org Activity", "\u00a0", "\n", "^", " ", "\"1 Million Users on Drupal.org!\"", ". ", "www.drupal.org", ". 2013-10-11.", "\u00a0", "\n", "^ ", "a", " ", "b", " ", "\"Drupal Homepage\"", ". ", "www.drupal.org", ". 2017-04-09", ". Retrieved ", "2017-04-09", ".", "\u00a0", "\n", "^ ", "a", " ", "b", " ", "\"Module project\"", ". ", "www.drupal.org", ". 2017-04-09", ". Retrieved ", "2017-04-09", ".", "\u00a0", "\n", "^ ", "a", " ", "b", " ", "\"Download & Extend: Themes\"", ". ", "www.drupal.org", ". 2017-04-09", ". Retrieved ", "2017-04-09", ".", "\u00a0", "\n", "^", " ", "\"Download & Extend: Distributions\"", ". ", "www.drupal.org", ". 2017-04-09", ". Retrieved ", "2017-04-09", ".", "\u00a0", "\n", "^", " ", "\"Drupal 7 as an enterprise web application framework\"", ". ", "drupal.org", ".", "\u00a0", "\n", "^", " ", "\"Comparison of web frameworks\"", ". ", "Wikipedia", ". 2017-04-07. ", "Comparison of features", "\u00a0", "\n", "^", " ", "O'Connor, William (2014-08-19). ", "\"The Drupal API turns a CMS into a true enterprise application - O'Reilly Radar\"", ". ", "O'Reilly Media", ". Retrieved ", "2017-04-11", ".", "\u00a0", "\n", "^", " ", "Diana, Dupuis (2013-05-15). ", "\"Drupal Is a Framework: Why Everyone Needs to Understand This\"", ". ", "Linux Journal", ".", "\u00a0", "\n", "^ ", "a", " ", "b", " ", "\"Features\"", ". ", "drupal.org", ". Retrieved ", "2009-04-08", ".", "\u00a0", "\n", "^", " ", "Drupal 7 release history; drupal.org", "\n", "^", " ", "Drupal 6 release history; drupal.org", "\n", "^", " ", "Drupal 5 release history; drupal.org", "\n", "^ ", "a", " ", "b", " ", "\"History\"", ". ", "drupal.org", ". Retrieved ", "2009-04-08", ".", "\u00a0", "\n", "^", " ", "\"Druppel: Dutch to English Translation\"", ". ", "Babylon Translation", ". Retrieved ", "2009-04-08", ".", "\u00a0", "\n", "^", " ", "Benjamin Melan\u00e7on; et al. (2011). ", "The Definitive Guide to Drupal 7", " (2nd ed.). Apress. p.\u00a0823. ", "ISBN", "\u00a0", "9781430231356", ". Retrieved ", "2012-05-27", ".", "\u00a0", "\n", "^", " ", "Critchley, Spencer (2006-05-03). ", "\"Digital Politics: An Interview With CivicSpace Founder Zack Rosen\"", ". ", "O'Reilly Media", ". Retrieved ", "2012-05-27", ".", "\u00a0", "\n", "^", " ", "Kreiss, Daniel (2012-03-05). ", "\"Dean, Romney, and Drupal: Values and Technological Adoption\"", ". ", "Culture Digitally", ". Retrieved ", "2012-05-27", ".", "\u00a0", "\n", "^", " ", "Samantha M. Shapiro, ", "\"The Dean Connection\"", ", ", "The New York Times", " December 7, 2003, accessed May 27, 2012.", "\n", "^", " ", "\"Marketplace\"", ". ", "drupal.org", ". Retrieved ", "2013-04-18", ".", "\u00a0", "\n", "^", " ", "Koenig, Josh. ", "\"Growth Graphs\"", ". ", "Groups.Drupal", ". Retrieved ", "2009-04-08", ".", "\u00a0", "\n", "^", " ", "Buytaert, Dries (2008). ", "\"Drupal Download Statistics\"", ". Retrieved ", "2009-04-08", ".", "\u00a0", "\n", "^", " ", "Buytaert, Dries (2007). ", "\"Drupal Download Statistics\"", ". Retrieved ", "2009-04-08", ".", "\u00a0", "\n", "^", " ", "\"Usage statistics for Drupal core\"", ".", "\u00a0", "\n", "^", " ", "\"Drupal Sites\"", ". ", "Dries Buytaert", ". Retrieved ", "2010-07-20", ".", "\u00a0", "\n", "^", " ", "\"List of Nonprofit, NPO, NGO Websites Using Drupal\"", ". ", "ENGINE Industries", ". Archived from ", "the original", " on 2009-12-24", ". Retrieved ", "2010-07-20", ".", "\u00a0", "\n", "^", " ", "\"OSS CMS Award Previous Winners\"", ". ", "Packt Publishing", ". Retrieved ", "2009-04-08", ".", "\u00a0", "\n", "^", " ", "\"Drupal is a Webware 100 winner for the third year in a row\"", ". Drupal.org", ". Retrieved ", "2011-08-31", ".", "\u00a0", "\n", "^", " ", "\"Cnet.com\"", ". News.cnet.com. 2009-05-19", ". Retrieved ", "2011-08-31", ".", "\u00a0", "\n", "^", " ", "\"Buytaert.net\"", ". Buytaert.net", ". Retrieved ", "2011-08-31", ".", "\u00a0", "\n", "^", " ", "\"Drupal 7 to be released on January 5 (with one ginormous party)\"", ". Buytaert.net", ". Retrieved ", "2011-08-31", ".", "\u00a0", "\n", "^", " ", "\"Xplain Hosting Drupal 7 Quickstart training seminar\"", ". ", "Scoop", ". 2010-12-16.", "\u00a0", "\n", "^", " ", "\"drupal 7.24\"", ". ", "drupal.org", ". Retrieved ", "2013-11-20", ".", "\u00a0", "\n", "^", " ", "\"Drupal 8 In Marking The Biggest Change In Its Content Management History\"", ". ", "eyerys.com", ". Retrieved ", "19 November", " 2015", ".", "\u00a0", "\n", "^", " ", "\"Drupal 8.0.0-rc1 announcement\"", ". ", "drupal.org", ".", "\u00a0", "\n", "^", " ", "\"Drupal 8.0.0-rc1 announcement\"", ". ", "drupal.org", ".", "\u00a0", "\n", "^", " ", "\"Drupal 8.0.0 released\"", ". ", "drupal.org", ". Retrieved ", "19 November", " 2015", ".", "\u00a0", "\n", "^", " ", "https://www.drupal.org/blog/drupal-8-1-0", "\n", "^ ", "a", " ", "b", " ", "\"Never hack core\"", ". ", "drupal.org", ".", "\u00a0", "\n", "^", " ", "\"Drupal 7.39 released\"", ". ", "drupal.org", ". Retrieved ", "2015-09-19", ".", "\u00a0", "\n", "^ ", "a", " ", "b", " ", "\"Handbook: Core Modules\"", ". ", "drupal.org", ". Archived from ", "the original", " on 2008-07-28", ". Retrieved ", "2009-04-08", ".", "\u00a0", "\n", "^", " ", "\"Drupal Multi-site installation recipes\"", ".", "\u00a0", "\n", "^", " ", "Buytaert, Dries. ", "\"Garland, the new default core theme\"", ". ", "drupal.org", ". Retrieved ", "2009-04-08", ".", "\u00a0", "\n", "^", " ", "\"Color: Allows the user to change the color scheme of certain themes\"", ". ", "drupal.org", ". Retrieved ", "2009-04-08", ".", "\u00a0", "\n", "^", " ", "\"Drupal core translation downloads\"", ". ", "drupal.org", ". Retrieved ", "2017-01-30", ".", "\u00a0", "\n", "^ ", "a", " ", "b", " ", "\"Drupal 6.0 released\"", ". ", "drupal.org", ". Retrieved ", "2009-04-08", ".", "\u00a0", "\n", "^", " ", "\"SA-CORE-2014-005 - Drupal core - SQL injection\"", ". ", "Https:", ". Retrieved ", "December 3,", " 2014", ".", "\u00a0", "\n", "^", " ", "\"Drupal Core - Highly Critical - Public Service announcement - PSA-2014-003\"", ". ", "Https:", ". Retrieved ", "December 3,", " 2014", ".", "\u00a0", "\n", "^", " ", "\"Install Drupal for Windows\"", ". ", "microsoft.com", ". Retrieved ", "2011-02-14", ".", "\u00a0", "\n", "^", " ", "\"Drupal on Windows Group\"", ". ", "drupal.org", ". Retrieved ", "2011-02-14", ".", "\u00a0", "\n", "^", " ", "Killesreiter, Gerhard (2013-02-25). ", "\"Accessibility statement\"", ". ", "drupal.org", ". Retrieved ", "2013-04-16", ".", "\u00a0", "\n", "^", " ", "Scholten, Roy (2012-12-10). ", "\"Drupal core gates\"", ". ", "drupal.org", ". Retrieved ", "2013-04-16", ".", "\u00a0", "\n", "^", " ", "\"API Reference\"", ". ", "drupal.org", ". Retrieved ", "2009-04-08", ".", "\u00a0", "\n", "^", " ", "\"File and directory management\"", ". ", "drupal.org", ".", "\u00a0", "\n", "^", " ", "14 hours 40 min ago. (2009-05-20). ", "\"Integrating Drupal with External Systems\"", ". Appnovation.com. Archived from ", "the original", " on 2011-08-24", ". Retrieved ", "2011-08-31", ".", "\u00a0", "\n", "^", " ", "\"Drupal Camunda BPM Integration\"", ". ", "Srijan Technologies", ". Srijan Technologies.", "\u00a0", "\n", "^", " ", "\"Project usage overview\"", ". ", "Drupal.org", ". Retrieved ", "2011-08-18", ".", "\u00a0", "\n", "^", " ", "\"DRUPAL 5 TO DRUPAL 7\"", ".", "\u00a0", "\n", "^", " ", "\"Field API\"", ". 2009", ". Retrieved ", "2009-05-08", ".", "\u00a0", "\n", "^", " ", "\"Views in Drupal Core initiative: Status report and roadmap\"", ". Retrieved ", "2014-11-04", ".", "\u00a0", "\n", "^", " ", "\"PHPTemplate theme engine\"", ". ", "drupal.org", ". Archived from ", "the original", " on 2009-03-08", ". Retrieved ", "2009-04-08", ".", "\u00a0", "\n", "^", " ", "\"XTemplate theme engine\"", ". ", "drupal.org", ". Archived from ", "the original", " on 2009-03-16", ". Retrieved ", "2009-04-08", ".", "\u00a0", "\n", "^", " ", "\"How does Drupal compare to Mambo? discussion thread\"", ". ", "drupal.org", ". 2005-01-17", ". Retrieved ", "2009-04-08", ".", "\u00a0", "\n", "^", " ", "\"Drupal themes\"", ". Drupal.org", ". Retrieved ", "2011-08-31", ".", "\u00a0", "\n", "^", " ", "\"Adding your theme to Drupal.org\"", ". Drupal.org.", "\u00a0", "\n", "^", " ", "\"10 Best Drupal Themes\"", ". MAAN Softwares", ". Retrieved ", "2017-11-08", ".", "\u00a0", "\n", "^", " ", "\"Top Drupal Distributions\"", ". AGLOBALWAY Consulting Services Inc. Archived from ", "the original", " on 2014-04-13.", "\u00a0", "\n", "^", " ", "\"MVC vs. PAC\"", ".", "\u00a0", "\n", "^", " ", "Drupal - CMS Grew Overnight", " By MAAN Softwares, Retrieved, June 8th, 2017", "\n", "^", " ", "\"drupal.org discussion on DrupalCon event management\"", ". Groups.drupal.org", ". Retrieved ", "2011-08-31", ".", "\u00a0", "\n", "^", " ", "\"Drupal Camps and Cons\"", ". Retrieved ", "25 January", " 2013", ".", "\u00a0", "\n", "^", " ", "\"1 Year of Drupal Events Visualized\"", ". Retrieved ", "13 July", " 2013", ".", "\u00a0", "\n", "^", " ", "\"forums\"", ". Drupal.org", ". Retrieved ", "2011-08-31", ".", "\u00a0", "\n", "^", " ", "\"mailing lists\"", ". Drupal.org", ". Retrieved ", "2011-08-31", ".", "\u00a0", "\n", "^", " ", "\"Drupal Groups\"", ". Groups.drupal.org", ". Retrieved ", "2011-08-31", ".", "\u00a0", "\n", "^", " ", "\"Drupal IRC channels on FreeNode\"", ". Drupal.org", ". Retrieved ", "2011-08-31", ".", "\u00a0", "\n", "^", " ", "\"Language specific communities\"", ". Drupal.org. 2011-08-26", ". Retrieved ", "2011-08-31", ".", "\u00a0", "\n", "^", " ", "Keller, Katherine (7 April 2017). ", "\"CMS Battle for Beginners: WordPress vs Joomla vs Drupal (Infographic)\"", ". ", "Entrepreneur", ". Retrieved ", "17 May", " 2017", ".", "\u00a0", "\n", "^", " ", "Drupal. ", "\"Security announcement and release process\"", ".", "\u00a0", "\n", "^", " ", "Drupal. ", "\"How to report a security issue\"", ".", "\u00a0", "\n", "^", " ", "\"Update manager (and Update status)\"", ". ", "drupal.org", ". Retrieved ", "2011-07-01", ".", "\u00a0", "\n", "^", " ", "\"Security advisories\"", ". ", "drupal.org", ". Retrieved ", "2009-04-28", ".", "\u00a0", "\n", "^", " ", "\"Drupal security team\"", ". Drupal.org", ". Retrieved ", "2011-08-31", ".", "\u00a0", "\n", "^", " ", "\"Drupal Security RSS feed\"", ". Drupal.org", ". Retrieved ", "2011-08-31", ".", "\u00a0", "\n", "^", " ", "\"Drupalgeddon megaflaw raises questions over CMS bods' crisis mgmt\"", ".", "\u00a0", "\n", "^", " ", "\"SA-CORE-2014-005 - Drupal core - SQL injection\"", ". ", "Security advisories", ". Drupal security team.", "\u00a0", "\n", "^", " ", "\"Drupalgeddon strikes back: outdated Drupal allegedly linked to \"Panama Papers", "\"", "\"", ". ", "Blog", ". Drop Guard.", "\u00a0", "\n", "^", " ", "\"Drupal Core\u2014Highly Critical\u2014Public Service Announcement\u2014PSA-2014-003\"", ". ", "Security advisories", ". Drupal security team. October 29, 2014 \u2013 via Drupal.org. ", "\n", "You should proceed under the assumption that every Drupal 7 website was compromised unless updated or patched before Oct 15th, 11pm UTC, that is 7 hours after the announcement.", "\n", "Simply updating to Drupal 7.32 will not remove backdoors", "....updating to version 7.32 or applying the patch fixes the vulnerability but does not fix an already compromised website. If you find that your site is already patched but you didn\u2019t do it, that can be a symptom that the site was compromised - some attacks have applied the patch as a way to guarantee they are the only attacker in control of the site.", "\n", "\u00a0", "\n", "^", " ", "Robinson, Brian (2014-11-07). ", "\"Attacks on open source call for better software design -\"", ". ", "GCN", ". Retrieved ", "2016-07-29", ".", "\u00a0", "\n", "^", " ", "Why running the White House Web site on Drupal is a political disaster waiting to happen.", "\n", "^", " ", "Message Error, Why running the White House Web site on Drupal is a political disaster waiting to happen", " Chris Wilson. ", "Slate (magazine)", " October 27, 2009", "\n", "^", " ", "Scollan, Becca; Abby Byrnes; Malia Nagle; Paul Coyle; Cynthia York; Maleka Ingram (2008-05-01). ", "\"Drupal Usability Research Report\"", " ", "(PDF)", ". Retrieved ", "2009-04-08", ".", "\u00a0", "\n", "^", " ", "Lal, Kieran (2008-06-26). ", "\"Drupal usability tests from the University of Baltimore with community solutions\"", ". ", "drupal.org", ". Retrieved ", "2009-04-08", ".", "\u00a0", "\n", "^", " ", "Buytaert, Dries (2008-07-03). ", "\"Usability, usability, and usability\"", ". Retrieved ", "2009-04-08", ".", "\u00a0", "\n", "^", " ", "Buytaert, Dries (2008-03-10). ", "\"First results from usability testing\"", ". Retrieved ", "2009-04-08", ".", "\u00a0", "\n", "^", " ", "\"Report from Formal Drupal\"", " ", "(PDF)", ". 2008-03-03", ". Retrieved ", "2009-04-08", ".", "\u00a0", "\n", "^", " ", "Buytaert, Dries (2009-02-04). ", "\"Mark Boulton to help with Drupal 7\"", ". Archived from ", "the original", " on 2010-04-13.", "\u00a0", "\n", "^", " ", "University of Minnesota Office of Information Technology (2011-05-23). ", "\"Usability test at University of Minnesota, may 2011\"", ". ", "drupal.org", ".", "\u00a0", "\n", "^", " ", "University of Minnesota Office of Information Technology (2011-06-01). ", "\"Report from the University of Minnesota Drupal Usability Testing\"", ". ", "drupal.org", ".", "\u00a0", "\n", "^", " ", "\"Drupal Gardens\"", ".", "\u00a0", "\n", "^", " ", "\"Open Enterprise\"", ".", "\u00a0", "\n", "^", " ", "\"Mitkom\"", ".", "\u00a0", "\n", "^", " ", "Howard, Brian C. (2007-01-25). ", "\"Harnessing Drupal for Citizen Journalism\"", ". ", "NewAssignment.Net", ". Retrieved ", "2009-04-08", ".", "\u00a0", "\n", "^", " ", "\"Drupal Review\"", ". Archived from ", "the original", " on 2010-02-05.", "\u00a0", "\n", "^", " ", "James, Heather (2010-11-09). ", "\"203 people tell What I wish I knew when I started Drupal\"", ". ", "Acquia.com", ". Retrieved ", "2010-11-11", ".", "\u00a0", "\n", "^", " ", "Buytaert, Dries (2006-05-26). ", "\"Backward Compatibility\"", ". Retrieved ", "2009-04-08", ".", "\u00a0", "\n", "^", " ", "Buytaert, Dries (2006-07-27). ", "\"The pain before the pay-off\"", ". Retrieved ", "2009-04-08", ".", "\u00a0", "\n", "^", " ", "\"Drupal's Upgrade Instructions (end-user)\"", ". Drupal.org", ". Retrieved ", "2011-08-31", ".", "\u00a0", "\n", "^", " ", "http://buytaert.net/making-drupal-upgrades-easy-forever", "\n", "^", " ", "\"Joomla 1.5 & Drupal 6.1 Performance Comparison\"", ". Archived from ", "the original", " on 2012-07-22.", "\u00a0", "\n", "^", " ", "\"Is Drupal Slow & Bloated?\"", ". Archived from ", "the original", " on 2012-09-09.", "\u00a0", "\n", "^", " ", "\"Is Drupal the right tool for the job?\"", ".", "\u00a0", "\n", "^", " ", "\"Drupal vs Joomla: performance | Dries Buytaert\"", ". Buytaert.net", ". Retrieved ", "2012-05-05", ".", "\u00a0", "\n", "^", " ", "\"Authenticated User Page Caching (Authcache)\"", ". ", "drupal.org", ". Retrieved ", "2009-09-23", ".", "\u00a0", "\n", "^", " ", "Buytaert, Dries (2006-08-11). ", "\"Drupal vs Joomla! performance\"", ". Retrieved ", "2009-05-20", ".", "\u00a0", "\n", "^", " ", "\"Speed up a Drupal web site by enabling MySQL query caching\"", ". ", "nadeausoftware.com", ". 2007-03-07", ". Retrieved ", "2009-06-21", ".", "\u00a0", "\n", "^", " ", "\"Book on Drupal Performance & Scalability\"", ". Books.tag1consulting.com. 2008-07-16. Archived from ", "the original", " on 2011-09-06", ". Retrieved ", "2011-08-31", ".", "\u00a0", "\n", "^", " ", "\"Caching in Drupal 6\"", ". ", "drupal.org", ". 2008-07-28", ". Retrieved ", "2009-06-21", ".", "\u00a0", "\n", "^", " ", "\"Drupal 6 vs Drupal 7 performance and comments vs nodes\"", ". ", "CivicActions.com", ". 2009-05-19", ". Retrieved ", "2009-06-21", ".", "\u00a0", "\n", "^", " ", "\"Boost\"", ". drupal.org. 2006-10-15", ". Retrieved ", "2012-05-05", ".", "\u00a0", "\n", "^", " ", "\"Memcache API and Integration\"", ". drupal.org", ". Retrieved ", "2012-05-05", ".", "\u00a0", "\n", "^", " ", "\"Dealing with unsupported (abandoned) projects\"", ". ", "While experienced Drupal users know to check the queue and the git commits to determine the health of a project, having broken and unmaintained/unsupported projects available can be confusing and off-putting for new users.", "\u00a0", "\n", "^", " ", "https://www.drupal.org/project/project_module", "\n", "^", " ", "\"Drupal Testing Methodologies Are Broken - Here's Why | Red Crackle\"", ". ", "redcrackle.com", ". Retrieved ", "2015-12-05", ".", "\u00a0", "\n", "\n", "\n", "Further reading", "[", "edit", "]", "\n", "\n", "Abbott/Jones (2016), Learning Drupal 8, England, Packt Publishing. ", "ISBN", "\u00a0", "978-1-78216-875-1", "\n", "Pol, Kristen (2012). ", "Drupal 7 Multilingual Sites", ". Birmingham, England: Packt Publishing. ", "ISBN", "\u00a0", "978-1-84951-818-5", ".", "\u00a0", "\n", "Mercer, David (2010). ", "Drupal 7", ". Birmingham, England: Packt Publishing. ", "ISBN", "\u00a0", "1-84951-286-8", ".", "\u00a0", "\n", "Travis, Brian (2011). ", "Pro Drupal 7 for Windows Developers", ". Berkeley: APress. ", "ISBN", "\u00a0", "978-1-4302-3153-0", ".", "\u00a0", "\n", "Butcher, Matt; Larry Garfield; John Wilkins; Matt Farina; Ken Rickard; Greg Dunlap (2010). ", "Drupal 7 Module Development", ". Birmingham, England: Packt Publishing. ", "ISBN", "\u00a0", "978-1-84951-116-2", ".", "\u00a0", "\n", "Bhavin, Patel (Aug 2010). ", "Drupal 6 Panel Cookbook", ". Canada: Packt Publishing. ", "ISBN", "\u00a0", "1-84951-118-7", ".", "\u00a0", "\n", "Beighley, Lynn (2009). ", "Drupal for Dummies", ". New York: For Dummies. ", "ISBN", "\u00a0", "978-0-470-55611-5", ".", "\u00a0", "\n", "Herremans, D. (2009). ", "Drupal 6: Ultimate Community Site Guide", ". Switzerland. ", "ISBN", "\u00a0", "978-2-8399-0490-2", ".", "\u00a0", "\n", "Peacock, Michael (2008). ", "Selling Online with Drupal e-Commerce", ". Birmingham, England: Packt Publishing. ", "ISBN", "\u00a0", "978-1-84719-406-0", ".", "\u00a0", "\n", "VanDyk, John K. (2008). ", "Pro Drupal Development, Second Edition", ". New York: Springer Verlag/Apress. ", "ISBN", "\u00a0", "1-4302-0989-5", ".", "\u00a0", "\n", "Kafer, Konstantin; Emma Hogbin (Apr 2009). ", "Front End Drupal: Designing, Theming, Scripting", ". Jersey, USA: Prentice Hall. ", "ISBN", "\u00a0", "0-13-713669-2", ".", "\u00a0", "\n", "\n", "External links", "[", "edit", "]", "\n", "\n", "\n", "\n", "Wikimedia Commons has media related to ", "Drupal", ".", "\n", "\n", "\n", "\n", "Official website", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "v", "\n", "t", "\n", "e", "\n", "\n", "\n", "Web frameworks", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "Comparison", "\n", "\n", "\n", "\n", "\n", "\n", "C++", "\n", "\n", "\n", "\n", "CppCMS", "\n", "Wt", "\n", "\n", "\n", "\n", "\n", "\n", "CLI", "\n", "\n", "\n", "\n", "ASP.NET", "\n", "\n", "Core", "\n", "AJAX", "\n", "Dynamic Data", "\n", "MVC", "\n", "Razor", "\n", "Web Forms", "\n", "\n", "\n", "DNN", "\n", "BFC", "\n", "MonoRail", "\n", "OpenRasta", "\n", "Umbraco", "\n", "\n", "\n", "\n", "\n", "\n", "ColdFusion", "\n", "\n", "\n", "\n", "CFWheels", "\n", "ColdBox Platform", "\n", "ColdSpring", "\n", "Fusebox", "\n", "Mach-II", "\n", "Model-Glue", "\n", "\n", "\n", "\n", "\n", "\n", "Common Lisp", "\n", "\n", "\n", "\n", "Caveman2", "\n", "CL-HTTP", "\n", "UnCommon Web", "\n", "Weblocks", "\n", "\n", "\n", "\n", "\n", "\n", "Haskell", "\n", "\n", "\n", "\n", "Happstack", "\n", "Yesod", "\n", "Snap", "\n", "\n", "\n", "\n", "\n", "\n", "Java", "\n", "\n", "\n", "\n", "AppFuse", "\n", "Flexive", "\n", "Grails", "\n", "GWT", "\n", "ICEfaces", "\n", "ItsNat", "\n", "JavaServer Faces", "\n", "JHipster", "\n", "Jspx", "\n", "JWt", "\n", "OpenXava", "\n", "Play", "\n", "Reasonable Server Faces", "\n", "Remote Application Platform", "\n", "RIFE", "\n", "Seam", "\n", "Sling", "\n", "Spring", "\n", "Stripes", "\n", "Struts", "\n", "Tapestry", "\n", "Vaadin", "\n", "Vert.x", "\n", "WebWork", "\n", "Wicket", "\n", "WaveMaker", "\n", "ZK", "\n", "\n", "\n", "\n", "\n", "\n", "JavaScript", "\n", "\n", "\n", "\n", "Ample SDK", "\n", "Angular", "/", "AngularJS", "\n", "Backbone.js", "\n", "Chaplin.js", "\n", "Closure", "\n", "Dojo Toolkit", "\n", "Ember.js", "\n", "Ext JS", "\n", "jQuery", "\n", "Meteor", "\n", "MooTools", "\n", "Node.js", "\n", "OpenUI5", "\n", "Prototype", "\n", "React", "\n", "Rico", "\n", "script.aculo.us", "\n", "Sencha Touch", "\n", "SproutCore", "\n", "Wakanda", "\n", "\n", "\n", "\n", "\n", "\n", "Perl", "\n", "\n", "\n", "\n", "Catalyst", "\n", "Dancer", "\n", "Mason", "\n", "Maypole", "\n", "Mojolicious", "\n", "WebGUI", "\n", "\n", "\n", "\n", "\n", "\n", "PHP", "\n", "\n", "\n", "\n", "CakePHP", "\n", "CodeIgniter", "\n", "Drupal", "\n", "Fat-Free", "\n", "FuelPHP", "\n", "Flow", "\n", "Gyroscope", "\n", "Horde", "\n", "Kohana", "\n", "Laravel", "\n", "Lithium", "\n", "Midgard", "\n", "MODX", "\n", "Nette", "\n", "Phalcon", "\n", "Pop PHP", "\n", "PRADO", "\n", "ProcessWire", "\n", "Qcodo", "\n", "Silex", "\n", "SilverStripe", "\n", "Symfony", "\n", "TYPO3", "\n", "Xaraya", "\n", "XOOPS", "\n", "Yii", "\n", "Zend Framework", "\n", "\n", "\n", "\n", "\n", "\n", "Python", "\n", "\n", "\n", "\n", "BlueBream", "\n", "CherryPy", "\n", "Django", "\n", "Flask", "\n", "Grok", "\n", "Nevow", "\n", "Pyjs", "\n", "Pylons", "\n", "Pyramid", "\n", "Quixote", "\n", "TACTIC", "\n", "Tornado", "\n", "TurboGears", "\n", "web2py", "\n", "Webware", "\n", "Zope 2", "\n", "\n", "\n", "\n", "\n", "\n", "Ruby", "\n", "\n", "\n", "\n", "Camping", "\n", "Merb", "\n", "Padrino", "\n", "Ruby on Rails", "\n", "Sinatra", "\n", "\n", "\n", "\n", "\n", "\n", "Scala", "\n", "\n", "\n", "\n", "Lift", "\n", "Play", "\n", "Scalatra", "\n", "\n", "\n", "\n", "\n", "\n", "Smalltalk", "\n", "\n", "\n", "\n", "AIDA/Web", "\n", "Seaside", "\n", "\n", "\n", "\n", "\n", "\n", "Other languages", "\n", "\n", "\n", "\n", "Vibe.d", " (", "D", ")", "\n", "Application Express", " (", "PL/SQL", ")", "\n", "Grails", " (", "Groovy", ")", "\n", "Kepler", " (", "Lua", ")", "\n", "Rocket", " (", "Rust", ")", "\n", "OpenACS", " (", "Tcl", ")", "\n", "Phoenix", " (", "Elixir", ")", "\n", "SproutCore", " (", "JavaScript", "-", "Ruby", ")", "\n", "Yaws", " (", "Erlang", ")", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "v", "\n", "t", "\n", "e", "\n", "\n", "\n", "Software in the Public Interest", "\n", "\n", "\n", "\n", "People", "\n", "\n", "\n", "\n", "Bdale Garbee", " (President)", "\n", "\n", "\n", "\n", "\n", "\n", "Projects", "\n", "\n", "\n", "\n", "0 A.D.", "\n", "Arch Linux", "\n", "Debian", "\n", "Drizzle", "\n", "Drupal", "\n", "FFmpeg", "\n", "Fluxbox", "\n", "freedesktop.org", "\n", "FreedomBox", "\n", "Gallery Project", "\n", "GNU TeXmacs", "\n", "GNUstep", "\n", "Jenkins", "\n", "LibreOffice", "\n", "MinGW", "\n", "Open and Free Technology Community", "\n", "Open Bioinformatics Foundation", "\n", "Open64", "\n", "OpenEmbedded", "\n", "OpenVAS", "\n", "OpenWrt", "\n", "PostgreSQL", "\n", "Privoxy", "\n", "SproutCore", "\n", "X.Org Foundation", "\n", "YafaRay", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "Authority control", "\n", "\n", "\n", "\n", "WorldCat Identities", "\n", "VIAF", ": ", "180810498", "\n", "LCCN", ": ", "n2009053036", "\n", "GND", ": ", "7522644-3", "\n", "\n", "\n", "\n", "\n", "\n", "\n\n\n", "\n", "\n", "\n", "\n"], "lastUpdated": " 15 January 2018, at 11:32."}, +{"title": "OpenBSD", "text": ["\n", "OpenBSD", "\n", "\n", "\n", "\"Free, Functional, and Secure\"", "\n", "\n", "\n", "\n", "\n", "OpenBSD 5.9 desktop", "\n", "\n", "\n", "\n", "Developer", "\n", "The OpenBSD Project", "\n", "\n", "\n", "Written in", "\n", "Primarily ", "C", ", ", "assembly", ", ", "Perl", ", ", "Makefile", ", and ", "KornShell", "\n", "\n", "\n", "OS family", "\n", "Unix-like", " (", "BSD", ")", "\n", "\n", "\n", "Working state", "\n", "Current", "\n", "\n", "\n", "Source model", "\n", "Open source", "\n", "\n", "\n", "Initial release", "\n", "1\u00a0October 1996", "; 21 years ago", "\u00a0(", "1996-10-01", ")", "\n", "\n", "\n", "Latest release", "\n", "6.2 ", "(9\u00a0October 2017", "; 3 months ago", "\u00a0(", "2017-10-09", ")", ")", " ", "[\u00b1]", "\n", "\n", "\n", "Package manager", "\n", "OpenBSD package tools", "[1]", "\n", "\n", "\n", "Platforms", "\n", "Alpha", ", ", "x86-64", ", ", "ARMv7", ", ", "PA-RISC", ", ", "IA-32", ", ", "LANDISK", ", ", "Omron LUNA-88K", ", ", "MIPS64", ", ", "PowerPC", ", and ", "SPARC 64", "[2]", "\n", "\n", "\n", "Kernel", " type", "\n", "Monolithic", "\n", "\n", "\n", "Userland", "\n", "BSD", "\n", "\n", "\n", "Default ", "user interface", "\n", "Modified ", "pdksh", ", ", "FVWM", " ", "X11", "\n", "\n", "\n", "License", "\n", "BSD", ", ", "ISC", ", ATU,", "[3]", " and other custom licenses", "[4]", "\n", "\n", "\n", "Official website", "\n", "openbsd", ".org", "\n", "\n", "\n", "OpenBSD", " is a ", "free and open-source", " ", "Unix-like", " computer ", "operating system", " descended from ", "Berkeley Software Distribution", " (BSD), a ", "Research Unix", " derivative developed at the ", "University of California, Berkeley", ". In late 1995, ", "Theo de Raadt", " ", "forked", " it from ", "NetBSD", ". Besides the operating system as a whole, the project maintains portable versions of many subsystems, most notably ", "OpenSSH", ", which are available as packages in other operating systems.", "\n", "The project is known for its developers' insistence on ", "open-source", " code, good documentation, code correctness, and security. It has strict policies on ", "licensing", ", preferring the ", "ISC license", " and other variants of the ", "Simplified BSD License", ". Many of its ", "security features", " are optional or absent in other operating systems. Its developers frequently ", "audit", " the ", "source tree", " for software bugs and security holes.", "\n", "De Raadt coordinates the project from his home in ", "Calgary", ", Alberta, Canada. Its logo and mascot is a ", "pufferfish", " named Puffy.", "\n", "\n", "\n", "\n", "Contents", "\n", "\n", "\n", "1", " ", "History and popularity", "\n", "2", " ", "Uses", "\n", "\n", "2.1", " ", "Security", "\n", "2.2", " ", "Desktop", "\n", "2.3", " ", "Server", "\n", "\n", "\n", "3", " ", "Component projects", "\n", "4", " ", "Third-party components in the base system", "\n", "5", " ", "Development and release process", "\n", "6", " ", "Open-source and open documentation", "\n", "7", " ", "Licensing", "\n", "8", " ", "Funding", "\n", "9", " ", "Security and code auditing", "\n", "\n", "9.1", " ", "Alleged FBI backdoor investigated", "\n", "9.2", " ", "Slogan", "\n", "\n", "\n", "10", " ", "Distribution and marketing", "\n", "11", " ", "See also", "\n", "12", " ", "Notes", "\n", "13", " ", "References", "\n", "14", " ", "External links", "\n", "\n", "\n", "\n", "History and popularity", "[", "edit", "]", "\n", "See also: ", "Timeline of OpenBSD", "\n", "\n", "\n", "\n", "\n", "Bar chart", " showing the proportion of users of each ", "BSD", " variant from a 2005 BSD usage survey.", "[5]", "[n 1]", "\n", "\n", "\n", "In December 1994, NetBSD co-founder ", "Theo de Raadt", " was asked to resign from his position as a senior developer and member of the NetBSD core team.", "[6]", " The reason for this is not wholly clear, although there are claims that it was due to personality clashes within the NetBSD project and on its mailing lists.", "[6]", "\n", "In October 1995, de Raadt founded OpenBSD, a new project forked from NetBSD 1.0. The initial release, OpenBSD 1.2, was made in July 1996, followed by OpenBSD 2.0 in October of the same year.", "[7]", " Since then, the project has followed a schedule of a release every six months, each of which is supported for one year.", "\n", "On 25 July 2007, OpenBSD developer Bob Beck announced the formation of the ", "OpenBSD Foundation", ", a Canadian non-profit organization formed to \"act as a single point of contact for persons and organizations requiring a legal entity to deal with when they wish to support OpenBSD.\"", "[8]", "\n", "Just how widely OpenBSD is used is hard to determine as its developers do not publish or collect usage statistics. In September 2005, the BSD Certification Group performed a usage survey which revealed that 32.8% of BSD users (1420 of 4330 respondents) were using OpenBSD,", "[5]", " placing it second out of the four major BSD variants, behind ", "FreeBSD", " with 77% and ahead of NetBSD with 16.3%.", "[n 1]", "\n", "Uses", "[", "edit", "]", "\n", "\n", "\n", "\n", "\nOpenBSD startup in console mode", "\n", "\n", "\n", "\n", "\n", "\n", "\nOpenBSD console login and welcome message", "\n", "\n", "\n", "\n", "\n", "\n", "\nInteraction with ", "pdksh", " in OpenBSD", "\n", "\n", "\n", "Security", "[", "edit", "]", "\n", "OpenBSD's security enhancements", ", built-in cryptography, and the pf ", "packet filter", " suit it for use in the security industry, such as on firewalls,", "[9]", " ", "intrusion-detection systems", ", and ", "VPN", " ", "gateways", ".", "\n", "Proprietary", " systems from several manufacturers are based on OpenBSD, including devices from ", "Armorlogic", " (Profense web application firewall), Calyptix Security,", "[10]", " GeNUA,", "[11]", " RTMX,", "[12]", " and .vantronix.", "[13]", " Later versions of ", "Microsoft", "'s ", "Services for UNIX", ", an extension to the ", "Windows", " operating system providing ", "Unix", "-like functionality, use large amounts of OpenBSD code.", "[14]", "\n", "Desktop", "[", "edit", "]", "\n", "OpenBSD ships with the ", "X Window System", "[15]", " and is suitable for use on the desktop.", "[16]", "[17]", ":", "xl", " There are a huge number of packages totalling 7814", "[18]", " in number. Packages are available for popular applications, including desktop environments such as ", "GNOME", ", ", "KDE", ", and ", "Xfce", ", and web browsers such as ", "Firefox", " and ", "Chromium", ".", "[19]", " The project also includes three window managers in the main distribution: ", "cwm", ", ", "FVWM", ", and ", "twm", ".", "[20]", "\n", "Server", "[", "edit", "]", "\n", "OpenBSD features a full server suite and can be easily configured as a ", "mail server", ", ", "web server", ", ", "FTP server", ", ", "DNS server", ", ", "router", ", ", "firewall", ", ", "NFS", " ", "file server", ", or any combination of these.", "\n", "Component projects", "[", "edit", "]", "\n", "Despite the small team size and relatively low usage of OpenBSD, the project maintains portable versions of many parts of the base system, including:", "\n", "\n", "LibreSSL", ", a free implementation of the ", "Secure Sockets Layer", " (SSL) and ", "Transport Layer Security", " (TLS) protocols, forked from the ", "OpenSSL", " 1.0.1g branch", "\n", "OpenBGPD", ", a free implementation of the ", "Border Gateway Protocol", " 4 (BGP-4)", "\n", "OpenOSPFD", ", a free implementation of the ", "Open Shortest Path First", " (OSPF) routing protocol", "\n", "OpenNTPD", ", a simple alternative to ntp.org's ", "Network Time Protocol", " (NTP) daemon", "\n", "OpenSMTPD", ", a free ", "Simple Mail Transfer Protocol", " (SMTP) daemon with ", "IPv4", "/", "IPv6", ", ", "PAM", ", ", "Maildir", " and virtual domains support", "\n", "httpd, an ", "HTTP", " server first included in the 5.6 release", "\n", "OpenSSH", ", a free implementation of the ", "Secure Shell", " (SSH) protocol", "\n", "OpenIKED", ", a free implementation of the ", "Internet Key Exchange", " (IKEv2) protocol", "\n", "Common Address Redundancy Protocol", " (CARP), a free alternative to ", "Cisco", "'s patented ", "HSRP", "/", "VRRP", " server redundancy protocols", "\n", "PF", ", an ", "IPv4", "/", "IPv6", " stateful firewall with ", "NAT", ", ", "PAT", ", ", "QoS", " and traffic normalization support", "\n", "pfsync", ", a firewall states synchronization protocol for ", "PF firewall", " with ", "High Availability", " support using ", "CARP", "\n", "spamd", ", a spam filter with ", "greylisting", " support designed to inter-operate with the ", "PF firewall", "\n", "sndio", ", a compact audio and MIDI framework", "\n", "Xenocara", ", a customized ", "X.Org", " build infrastructure", "\n", "cwm", ", a stacking window manager", "\n", "tmux", " virtual console multiplexer", "\n", "\n", "Some subsystems have been integrated into the base system of several other BSD projects,", "[21]", "[22]", "[23]", " while many are available as packages for use in other Unix-like systems.", "[24]", "[25]", "[26]", "\n", "Third-party components in the base system", "[", "edit", "]", "\n", "OpenBSD includes a number of ", "third-party software components", ", many with OpenBSD-specific patches;", "[19]", " examples include the ", "X.Org Server", ", ", "GNU Compiler Collection", "[27]", " (which acts as the default ", "compiler", "),", "[n 2]", " ", "Perl", ", ", "NSD", ", ", "Unbound", ", ", "Ncurses", ", ", "GNU Binutils", ", ", "GNU Debugger", " and ", "Awk", ".", "\n", "OpenBSD used to include a fork of ", "Apache 1.3", ", which was later replaced by ", "Nginx", ". In the 5.6 release, Nginx was replaced with ", "httpd", ", an ", "HTTP server", " with ", "FastCGI", " and ", "Transport Layer Security", " support.", "[28]", " As of May 2016", "[update]", ", Apache and Nginx are still available as ports.", "[29]", "[30]", "\n", "Development and release process", "[", "edit", "]", "\n", "\n", "\n", "\n", "\nOpenBSD developers at c2k1 ", "hackathon", " at ", "MIT", "\n", "\n", "\n", "Development is continuous, and team management is open and tiered. Anyone with appropriate skills may contribute, with commit rights being awarded on merit and de Raadt acting as coordinator.", "[17]", ":", "xxxv", " Two official releases are made per year, with the version number incremented by 0.1,", "[31]", " and these are each supported for twelve months (two release cycles).", "[32]", " Snapshot releases are also available at frequent intervals.", "\n", "Maintenance patches for supported releases may be applied manually or by updating the system against the patch branch of the ", "CVS", " repository for that release.", "[33]", " Alternatively, a system administrator may opt to upgrade using a snapshot release and then regularly update the system against the ", "-current", " branch of the CVS repository, in order to gain pre-release access to recently added features.", "\n", "The standard OpenBSD kernel, as maintained by the project, is strongly recommended for end users; this is as opposed to kernels customized by the user.", "[34]", "\n", "Packages outside the base system are maintained by CVS through a ", "ports tree", " and are the responsibility of the individual maintainers, known as porters. As well as keeping the current branch up to date, porters are expected to apply appropriate bug-fixes and maintenance fixes to branches of their package for OpenBSD's supported releases. Ports are generally not subject to the same continuous auditing as the base system due to lack of manpower.", "\n", "Binary packages are built centrally from the ports tree for each architecture. This process is applied for the current version, for each supported release, and for each snapshot. Administrators are recommended to use the package mechanism rather than build the package from the ports tree, unless they need to perform their own source changes.", "\n", "OpenBSD's developers regularly meet at special events called ", "hackathons", ",", "[35]", " where they \"sit down and code\", emphasizing productivity.", "[36]", "\n", "Every new release includes a song.", "[37]", "\n", "The ", "OpenBSD Foundation", " was accepted as a mentoring organization for the 2014 Google Summer of Code.", "[38]", "[39]", "\n", "Open-source and open documentation", "[", "edit", "]", "\n", "The OpenBSD Project is noted for its high-quality user documentation, considered top among the BSD family operating systems, all of which have excellent documentation.", "[40]", "[41]", " When OpenBSD was created, de Raadt decided that the source should be easily available for anyone to read at any time, so, with the assistance of Chuck Cranor,", "[42]", " he set up the first public, anonymous ", "CVS", " server. At the time, the tradition was for only a small team of developers to have access to a project's source repository.", "[43]", " Cranor and de Raadt concluded that this practice \"runs counter to the open source philosophy\" and is inconvenient to contributors. De Raadt's decision allowed \"users to take a more active role\", and signaled the project's belief in open and public access to source code.", "[43]", "\n", "OpenBSD does not include ", "closed source", " binary drivers in the source tree, nor do they include code requiring the signing of ", "non-disclosure agreements", ".", "[44]", "\n", "Since OpenBSD is based in Canada, no United States export restrictions on cryptography apply, allowing the distribution to make full use of modern algorithms for encryption. For example, the swap space is divided into small sections and each section is encrypted with its own key, ensuring that sensitive data does not leak into an insecure part of the system.", "[9]", "\n", "OpenBSD randomizes various behaviors of applications, making them less predictable and thus more difficult to attack. For example, PIDs are created and associated randomly to processes; the ", "bind", " ", "system call", " uses random ", "port numbers", "; files are created with random ", "inode", " numbers; and IP datagrams have random identifiers.", "[45]", " This approach also helps expose bugs in the kernel and in user space programs.", "\n", "The OpenBSD policy on openness extends to hardware documentation: in the slides for a December 2006 presentation, de Raadt explained that without it \"developers often make mistakes writing drivers\", and pointed out that \"the [oh my god, I got it to work] rush is harder to achieve, and some developers just give up.\"", "[46]", " He went on to say that vendor-supplied binary drivers are unacceptable for inclusion in OpenBSD, that they have \"no trust of vendor binaries running in our kernel\" and that there is \"no way to fix [them] ... when they break.\"", "[46]", "\n", "Licensing", "[", "edit", "]", "\n", "See also: ", "BSD and GPL licensing", "\n", "A goal of the OpenBSD Project is to \"maintain the spirit of the original Berkeley Unix ", "copyrights", "\", which permitted a \"relatively un-encumbered Unix source distribution.\"", "[47]", " To this end, the ", "Internet Systems Consortium (ISC) license", " is preferred for new code, but the ", "MIT", " and BSD licenses are also accepted. The widely used ", "GNU General Public License", " is considered overly restrictive compared to these.", "[48]", "\n", "In June 2001, triggered by concerns over Darren Reed's modification of IPFilter's license wording, a systematic license audit of the OpenBSD ports and source trees was undertaken.", "[49]", " Code in more than a hundred files throughout the system was found to be unlicensed, ambiguously licensed or in use against the terms of the license. To ensure that all licenses were properly adhered to, an attempt was made to contact all the relevant copyright holders: some pieces of code were removed, many were replaced, and others, such as the ", "multicast", " ", "routing", " tools ", "mrinfo", " and ", "map-mbone", ", were ", "relicensed", " so that OpenBSD could continue to use them.", "[50]", "[51]", " Also removed during this audit was all software produced by ", "Daniel J. Bernstein", ". At the time, Bernstein requested that all modified versions of his code be approved by him prior to redistribution, a requirement to which OpenBSD developers were unwilling to devote time or effort.", "[52]", "[53]", "[54]", "\n", "Because of licensing concerns, the OpenBSD team has re-implemented software from scratch or adopted suitable existing software. Of particular note is the development, after license restrictions were imposed on ", "IPFilter", ", of the ", "pf", " ", "packet filter", ", which first appeared in OpenBSD 3.0", "[55]", " and is now available in other major BSDs.", "[56]", " OpenBSD developers have also replaced GPL licensed tools (such as ", "diff", ", ", "grep", " and ", "pkg-config", ") with BSD licensed equivalents.", "[", "citation needed", "]", "\n", "Funding", "[", "edit", "]", "\n", "Although the operating system and its portable components are used in commercial products, de Raadt says that little of the funding for the project comes from the industry: \"traditionally all our funding has come from user donations and users buying our CDs (our other products don't really make us much money). Obviously, that has not been a lot of money.\"", "[31]", "\n", "For a two-year period in the early 2000s, the project received ", "DARPA", " funding, which \"paid the salaries of 5 people to work completely full-time, bought about $30k in hardware, and paid for 3 hackathons\", from the ", "POSSE project", ".", "[31]", "\n", "In 2006, de Raadt expressed concern about the asymmetry of funding: \"I think that contributions should have come first from the vendors, secondly from the corporate users, and thirdly from individual users. But the response has been almost entirely the opposite, with almost a 15 to 1 dollar ratio in favor of the little people. Thanks a lot, little people!\"", "[31]", " However, since 2014 several large contributions to the ", "OpenBSD Foundation", " have come from corporations such as Microsoft,", "[57]", " Facebook, and Google as well as the ", "Core Infrastructure Initiative", ".", "[58]", "\n", "In 2006, the OpenBSD Project experienced financial danger.", "[59]", " The ", "Mozilla Foundation", "[60]", " and ", "GoDaddy", "[61]", " are among the organizations that helped the OpenBSD Project to overcome its financial troubles.", "\n", "On 14 January 2014, Bob Beck issued a request for funding to cover electrical costs. If sustainable funding was not found, Beck suggested the OpenBSD Project would shut down.", "[62]", " The project soon received a US$20,000 donation from Mircea Popescu, the Romanian creator of the MPEx bitcoin stock exchange, paid in ", "bitcoins", ".", "[63]", " The project raised US$150,000", "[64]", " in response to the appeal, enabling it to pay its bills and securing its short-term future.", "[63]", "\n", "Security and code auditing", "[", "edit", "]", "\n", "For more details on this topic, see ", "OpenBSD security features", ".", "\n", "Shortly after OpenBSD's creation, de Raadt was contacted by a local security software company named Secure Networks (SNI).", "[65]", "[66]", " They were developing a \"network security auditing tool\" called Ballista,", "[n 3]", " which was intended to find and attempt to ", "exploit", " possible software security flaws. This coincided with de Raadt's own interest in security, so for a time the two cooperated, a relationship that was of particular usefulness leading up to the release of OpenBSD 2.3", "[67]", " and helped to define security as the focal point of the project.", "[68]", "\n", "OpenBSD includes features designed to improve security, such as:", "\n", "\n", "secure alternatives to ", "POSIX", " functions in the C standard library, such as ", "strlcat", " for ", "strcat", " and ", "strlcpy", " for ", "strcpy", "[69]", "\n", "toolchain alterations, including a ", "static bounds checker", "[27]", "\n", "memory protection techniques to guard against invalid accesses, such as ", "ProPolice", " and the ", "W^X", " ", "page", " protection feature", "\n", "strong ", "cryptography", " and ", "randomization", "[70]", "\n", "\n", "To reduce the risk of a vulnerability or misconfiguration allowing ", "privilege escalation", ", many programs have been written or adapted to make use of ", "privilege separation", ", ", "privilege revocation", " and ", "chrooting", ". Privilege separation is a technique, pioneered on OpenBSD and inspired by the ", "principle of least privilege", ", where a program is split into two or more parts, one of which performs privileged operations and the other\u2014almost always the bulk of the code\u2014runs without privilege.", "[71]", " Privilege revocation is similar and involves a program performing any necessary operations with the privileges it starts with then dropping them. Chrooting involves restricting an application to one section of the ", "file system", ", prohibiting it from accessing areas that contain private or system files. Developers have applied these features to OpenBSD versions of many common applications, such as ", "tcpdump", ", ", "file", ", ", "tmux", ", ", "smtpd", ", and ", "syslogd", ".", "[72]", "\n", "OpenBSD developers were instrumental in the creation and development of ", "OpenSSH", ", which is developed in the OpenBSD CVS repositories. OpenSSH is based on the original ", "SSH", ".", "[73]", " It first appeared in OpenBSD 2.6 and is now by far the most popular SSH client and server, available on many operating systems.", "[74]", "\n", "The project has a policy of continually auditing source code for problems, work that developer Marc Espie has described as \"never finished ... more a question of process than of a specific bug being hunted.\" He went on to list several typical steps once a bug is found, including examining the entire source tree for the same and similar issues, \"try[ing] to find out whether the documentation ought to be amended\", and investigating whether \"it's possible to augment the ", "compiler", " to warn against this specific problem.\"", "[75]", "\n", "The default install is quite minimal, which the project states is to ensure novice users \"do not need to become security experts overnight\",", "[76]", " which fits with open-source and code auditing practices argued to be important elements of a security system.", "[77]", "\n", "Alleged FBI backdoor investigated", "[", "edit", "]", "\n", "On 11 December 2010, Gregory Perry, a former technical consultant for the ", "Federal Bureau of Investigation", " (FBI), emailed de Raadt alleging that the FBI had paid some OpenBSD ex-developers 10 years previously to insert backdoors into the ", "OpenBSD Cryptographic Framework", ". De Raadt made the email public on 14 December by forwarding it to the openbsd-tech mailing list and suggested an audit of the ", "IPsec", " codebase.", "[78]", "[79]", " De Raadt's response was skeptical of the report and he invited all developers to independently review the relevant code. In the weeks that followed, bugs were fixed but no evidence of backdoors were found.", "[80]", " De Raadt stated \"I believe that NetSec was probably contracted to write backdoors as alleged. If those were written, I don't believe they made it into our tree. They might have been deployed as their own product.\"", "[81]", "\n", "Slogan", "[", "edit", "]", "\n", "The OpenBSD website features a prominent reference to the security record of the default installation. Until June 2002, the wording read \"Five years without a remote hole in the default install!\"", "[82]", " An ", "OpenSSH", " bug was then discovered that made it possible for a remote attacker to gain ", "root privileges", " in OpenBSD and in any of the other systems running OpenSSH at the time. It was quickly fixed, as is normal with known security holes.", "[83]", "[84]", " The slogan was changed to \"One remote hole in the default install, in nearly 6 years!\" In 2007, a network-related remote vulnerability was found, which was also quickly fixed.", "[85]", " The quote was subsequently altered to \"Only two remote holes in the default install, in a heck of a long time!\" As of May 2017", "[update]", ", the wording remains.", "\n", "Distribution and marketing", "[", "edit", "]", "\n", "The name OpenBSD refers to the fact that OpenBSD's source code is freely available on the Internet. It also refers to the wide range of hardware platforms the operating system supports.", "[86]", "\n", "OpenBSD is freely available in various ways: the source can be retrieved by anonymous ", "CVS", ",", "[87]", " and binary releases and development snapshots can be downloaded by FTP, HTTP, and rsync.", "[88]", " Prepackaged CD-ROM sets through version 6.0 can be ordered online for a small fee, complete with an assortment of stickers and a copy of the release's theme song. These, with their artwork and other bonuses, have been one of the project's few sources of income, funding hardware, Internet service, and other expenses.", "[89]", " Beginning with version 6.1, CD-ROM sets are no longer released.", "\n", "In common with other operating systems, OpenBSD provides a ", "package management system", " for easy installation and management of programs which are not part of the base operating system.", "[90]", " Packages are binary files which are extracted, managed and removed using the package tools. On OpenBSD, the source of packages is the ports system, a collection of ", "Makefiles", " and other infrastructure required to create packages. In OpenBSD, the ports and base operating system are developed and released together for each version: this means that the ports or packages released with, for example, 4.6 are not suitable for use with 4.5 and vice versa.", "[90]", "\n", "\n", "\n", "\n", "\nAnimated OpenBSD mascot ", "Puffy", ", 3D-rendered with ", "Blender3D", "\n", "\n", "\n", "OpenBSD at first used the ", "BSD daemon", " mascot. A specialized version of the daemon, the haloed daemon was drawn by Erick Green. Green was asked by de Raadt to create the logo for the 2.3 and 2.4 versions of OpenBSD. At first, it was planned to create a full daemon, including head and body, but Green was only able to complete the head part for OpenBSD 2.3. The body as well as pitchfork and tail was completed for OpenBSD 2.4.", "[91]", " Subsequent releases saw variations, such as Cop daemon by Ty Semaka,", "[92]", " but eventually settling on Puffy,", "[93]", " described as a ", "pufferfish", ".", "[n 4]", " Since then Puffy has appeared on OpenBSD promotional material and featured in release songs and artwork. The promotional material of early OpenBSD releases did not have a cohesive theme or design, but later the CD-ROMs, release songs, posters and tee-shirts for each release have been produced with a single style and theme, sometimes contributed to by Ty Semaka of the ", "Plaid Tongued Devils", ".", "[37]", " These have become a part of OpenBSD ", "advocacy", ", with each release expounding a moral or political point important to the project, often through parody.", "[94]", " Past themes have included: in OpenBSD 3.8, the ", "Hackers of the Lost RAID", ", a parody of ", "Indiana Jones", " linked to the new RAID tools featured as part of the release; ", "The Wizard of OS", ", making its debut in OpenBSD 3.7, based on the work of ", "Pink Floyd", " and a parody of ", "The Wizard of Oz", " related to the project's recent work on wireless card drivers; and OpenBSD 3.3's ", "Puff the Barbarian", ", including an 80s rock-style song and parody of ", "Conan the Barbarian", ", alluding to open documentation.", "[37]", "\n", "See also", "[", "edit", "]", "\n", "\n", "\n", "Free software portal", "\n", "Cryptography portal", "\n", "Computer science portal", "\n", "\n", "\n", "\n", "\n", "Category:Computing mascots", "\n", "Comparison of BSD operating systems", "\n", "Comparison of open-source operating systems", "\n", "KAME project", "\u00a0\u2013 responsible for OpenBSD's IPv6 support", "\n", "List of computing mascots", "\n", "OpenBSD Journal", "\u00a0\u2013 online newspaper dedicated to OpenBSD news", "\n", "OpenBSD version history", "\n", "Security-focused operating system", "\n", "\n", "\n", "Notes", "[", "edit", "]", "\n", "\n", "\n", "\n", "^ ", "a", " ", "b", " ", "Multiple selections were permitted as a user may use multiple BSD variants side by side.", "\n", "^", " ", "As of OpenBSD 6.0", "[update]", ", either 4.2.1 or 3.3.6 is shipped, depending on the platform.", "[27]", "\n", "^", " ", "Later renamed to Cybercop Scanner after SNI was purchased by ", "Network Associates", ".", "\n", "^", " ", "Pufferfish do not, in fact, possess spikes; images of Puffy are closer to a similar species, the ", "porcupinefish", ".", "\n", "\n", "\n", "\n", "References", "[", "edit", "]", "\n", "\n", "\n", "^", " ", "\"Package Management\"", ". ", "OpenBSD Frequently Asked Questions", ". Retrieved ", "1 June", " 2016", ".", "\u00a0", "\n", "^", " ", "\"Platforms\"", ". ", "OpenBSD", ". Retrieved ", "3 September", " 2016", ".", "\u00a0", "\n", "^", " ", "\"src/sys/dev/microcode/atmel/atu-license \u2013 view \u2013 1.3\"", ". ", "cvsweb.openbsd.org", ". Retrieved ", "20 May", " 2016", ". ", "Redistribution [...] is permitted provided that the following conditions are met: [...] Firmware is redistributed in object code only.", "\u00a0", "\n", "^", " ", "\"src/sys/dev/microcode/tigon/tigon-license \u2013 view \u2013 1.5\"", ". ", "cvsweb.openbsd.org", ". Retrieved ", "20 May", " 2016", ".", "\u00a0", "\n", "^ ", "a", " ", "b", " ", "BSD Usage Survey", " ", "(PDF)", " (Report). The BSD Certification Group. 31 October 2005. p.\u00a09", ". Retrieved ", "16 September", " 2012", ".", "\u00a0", "\n", "^ ", "a", " ", "b", " ", "Glass, Adam (23 December 1994). ", "\"Theo De Raadt\"", ". ", "netbsd-users", " (Mailing list).", "\u00a0", "\n", "^", " ", "de Raadt, Theo", " (18 October 1996). ", "\"The OpenBSD 2.0 release\"", ". ", "openbsd-announce", " (Mailing list).", "\u00a0", "\n", "^", " ", "\"Announcing \u2013 The OpenBSD Foundation\"", ". ", "OpenBSD Journal", ". 26 July 2007.", "\u00a0", "\n", "^ ", "a", " ", "b", " ", "McIntire, Tim (8 August 2006). ", "\"Take a closer look at OpenBSD\"", ". ", "Developerworks", ". ", "IBM", ". Retrieved ", "13 December", " 2011", ".", "\u00a0", "\n", "^", " ", "\"AccessEnforcer Model AE800\"", ". ", "Calyptix Security", ". Retrieved ", "28 May", " 2016", ".", "\u00a0", "\n", "^", " ", "\"High Resistance Firewall genugate\"", ". ", "GeNUA", ". Retrieved ", "29 May", " 2016", ".", "\u00a0", "\n", "^", " ", "\"RTMX O/S IEEE Real Time POSIX Operating Systems\"", ". ", "RTMX", ". Retrieved ", "13 December", " 2011", ". ", "RTMX O/S is a product extension to OpenBSD Unix-like operating system with emphasis on embedded, dedicated applications.", "\u00a0", "\n", "^", " ", "\".vantronix secure system\"", ". ", "Compumatica secure networks", ". Retrieved ", "13 December", " 2011", ". ", "The Next Generation Firewall is not a standalone device, it is a Router for operation in security critical environments with high requirements for availability, comprehensive support as well as reliable and trusted systems powered by OpenBSD.", "\u00a0", "\n", "^", " ", "Dohnert, Roberto J. (21 January 2004). ", "\"Review of Windows Services for UNIX 3.5\"", ". ", "OSNews", ". David Adams.", "\u00a0", "\n", "^", " ", "\"About Xenocara\"", ". ", "Xenocara", ". Retrieved ", "13 December", " 2011", ".", "\u00a0", "\n", "^", " ", "Tzanidakis, Manolis (21 April 2006). ", "\"Using OpenBSD on the desktop\"", ". ", "Linux.com", ". Retrieved ", "9 March", " 2012", ".", "\u00a0", "\n", "^ ", "a", " ", "b", " ", "Lucas, Michael W. (April 2013). ", "Absolute OpenBSD: Unix for the Practical Paranoid", " (2nd ed.). San Francisco, California: ", "No Starch Press", ". ", "ISBN", "\u00a0", "978-1-59327-476-4", ".", "\u00a0", "\n", "^", " ", "http://openports.se/statistics.php", ".", "\u00a0", " ", "Missing or empty ", "|title=", " (", "help", ");", " ", "External link in ", "|website=", " (", "help", ");", " ", "Missing or empty ", "|url=", " (", "help", ")", "\n", "^ ", "a", " ", "b", " ", "\"OpenBSD 6.0\"", ". ", "OpenBSD", ". Retrieved ", "1 November", " 2016", ".", "\u00a0", "\n", "^", " ", "\"The X Windows System\"", ". ", "OpenBSD Frequently Asked Questions", ". Retrieved ", "22 May", " 2016", ". ", "OpenBSD ships with the cwm(1), fvwm(1) and twm(1) window managers, [...]", "\u00a0", "\n", "^", " ", "\"Contents of /stable/10/crypto/openssh/README\"", ". ", "svnweb.freebsd.org", ". Retrieved ", "19 May", " 2016", ". ", "This is the port of OpenBSD's excellent OpenSSH to Linux and other Unices.", "\u00a0", "\n", "^", " ", "\"src/crypto/external/bsd/openssh/dist/README \u2013 view \u2013 1.4\"", ". ", "NetBSD CVS Repositories", ". Retrieved ", "19 May", " 2016", ".", "\u00a0", "\n", "^", " ", "\"dragonfly.git/blob \u2013 crypto/openssh/README\"", ". ", "gitweb.dragonflybsd.org", ". Retrieved ", "19 May", " 2016", ". ", "This is the port of OpenBSD's excellent OpenSSH to Linux and other Unices.", "\u00a0", "\n", "^", " ", "\"Arch Linux \u2013 openssh 7.2p2-1 (x86_64)\"", ". ", "Arch Linux", ". Retrieved ", "17 May", " 2016", ".", "\u00a0", "\n", "^", " ", "\"openssh\"", ". ", "OpenSUSE", ". Retrieved ", "17 May", " 2016", ".", "\u00a0", "\n", "^", " ", "\"Debian \u2013 Details of package openssh-client in jessie\"", ". ", "Debian", ". Retrieved ", "17 May", " 2016", ".", "\u00a0", "\n", "^ ", "a", " ", "b", " ", "c", " ", "\"gcc-local \u2013 local modifications to gcc\"", ". ", "OpenBSD manual pages", ". Retrieved ", "1 November", " 2016", ".", "\u00a0", "\n", "^", " ", "\"httpd \u2013 HTTP daemon\"", ". ", "OpenBSD manual pages", ". Retrieved ", "1 November", " 2016", ".", "\u00a0", "\n", "^", " ", "\"OpenBSD ports \u2234 www/apache-httpd,-main\"", ". ", "ports.su", ". Retrieved ", "18 May", " 2016", ".", "\u00a0", "\n", "^", " ", "\"OpenBSD ports \u2234 www/nginx\"", ". ", "ports.su", ". Retrieved ", "18 May", " 2016", ".", "\u00a0", "\n", "^ ", "a", " ", "b", " ", "c", " ", "d", " ", "Andrews, Jeremy (2 May 2006). ", "\"Interview: Theo de Raadt\"", ". ", "KernelTrap", ". Archived from ", "the original", " on 24 April 2013.", "\u00a0", "\n", "^", " ", "\"OpenBSD's flavors\"", ". ", "OpenBSD Frequently Asked Questions", ". Retrieved ", "22 May", " 2016", ".", "\u00a0", "\n", "^", " ", "\"Applying patches in OpenBSD\"", ". ", "OpenBSD Frequently Asked Questions", ". Retrieved ", "15 May", " 2016", ".", "\u00a0", "\n", "^", " ", "\"Migrating to OpenBSD\"", ". ", "OpenBSD Frequently Asked Questions", ". Retrieved ", "4 January", " 2017", ".", "\u00a0", "\n", "^", " ", "\"Hackathons\"", ". ", "OpenBSD", ". Retrieved ", "18 May", " 2016", ".", "\u00a0", "\n", "^", " ", "\"Interview: Theo de Raadt of OpenBSD\"", ". ", "NewsForge", ". 28 March 2006", ". Retrieved ", "31 March", " 2016", ".", "\u00a0", "\n", "^ ", "a", " ", "b", " ", "c", " ", "\"Release Songs\"", ". ", "OpenBSD", ". Retrieved ", "22 May", " 2016", ".", "\u00a0", "\n", "^", " ", "Beck, Bob (25 February 2014). ", "\"Google Summer of Code 2014\"", ". ", "openbsd-misc", " (Mailing list)", ". Retrieved ", "4 March", " 2014", ".", "\u00a0", "\n", "^", " ", "\"GSOC 2014 with the OpenBSD Foundation\"", ". ", "Google Summer of Code 2014", ". Retrieved ", "4 March", " 2014", ".", "\u00a0", "\n", "^", " ", "Chisnall, David (20 January 2006). ", "\"BSD: The Other Free UNIX Family\"", ". ", "InformIT", ". ", "Archived", " from the original on 14 March 2014.", "\u00a0", "\n", "^", " ", "Smith, Jesse (18 November 2013). ", "\"OpenBSD 5.4: Puffy on the Desktop\"", ". ", "Archived", " from the original on 30 April 2014.", "\u00a0", "\n", "^", " ", "Cranor, Chuck D. ", "\"Chuck Cranor's Home Page\"", ". Retrieved ", "13 December", " 2011", ". ", "I also hosted and helped create the first Anonymous CVS server on the Internet (the original ", "anoncvs", ".openbsd", ".org", " [...]", "\u00a0", "\n", "^ ", "a", " ", "b", " ", "Cranor, Chuck D.; ", "de Raadt, Theo", " (6 June 1999). ", "Opening the Source Repository with Anonymous CVS", ". ", "USENIX", " Annual Technical Conference. Monterey, California", ". Retrieved ", "13 December", " 2011", ".", "\u00a0", "\n", "^", " ", "\"Project Goals\"", ". ", "OpenBSD", ". Retrieved ", "18 May", " 2016", ". ", "Integrate good code from any source with acceptable licenses. [...], NDAs are never acceptable.", "\u00a0", "\n", "^", " ", "de Raadt, Theo", "; Hallqvist, Niklas; Grabowski, Artur; Keromytis, Angelos D.; ", "Provos, Niels", " (6 June 1999). ", "\"Randomness Used Inside the Kernel\"", ". ", "Cryptography in OpenBSD: An Overview", ". ", "USENIX", " Annual Technical Conference. Monterey, California", ". Retrieved ", "1 February", " 2014", ".", "\u00a0", "\n", "^ ", "a", " ", "b", " ", "de Raadt, Theo", " (5 December 2006). ", "\"Presentation at OpenCON\"", ". ", "OpenBSD", ". Retrieved ", "13 December", " 2011", ".", "\u00a0", "\n", "^", " ", "\"Copyright Policy\"", ". ", "OpenBSD", ". Retrieved ", "13 December", " 2011", ".", "\u00a0", "\n", "^", " ", "Matzan, Jem (15 June 2005). ", "\"BSD cognoscenti on Linux\"", ". ", "NewsForge", ". ", "Linux.com", ". Retrieved ", "28 May", " 2016", ".", "\u00a0", "\n", "^", " ", "Gasperson, Tina (6 June 2001). ", "\"OpenBSD and ipfilter still fighting over license disagreement\"", ". ", "Linux.com", ". Archived from ", "the original", " on 26 June 2008.", "\u00a0", "\n", "^", " ", "\"src/usr.sbin/mrinfo/mrinfo.c \u2013 view \u2013 1.7\"", ". ", "cvsweb.openbsd.org", ". 31 July 2001", ". Retrieved ", "24 May", " 2016", ". ", "New license from Xerox! This code is now FREE! Took a while and a lot of mails, but it is worth it.", "\u00a0", "\n", "^", " ", "\"src/usr.sbin/map-mbone/mapper.c \u2013 view \u2013 1.5\"", ". ", "cvsweb.openbsd.org", ". 31 July 2001", ". Retrieved ", "24 May", " 2016", ". ", "New license from Xerox! This code is now FREE! Took a while and a lot of mails, but it is worth it.", "\u00a0", "\n", "^", " ", "de Raadt, Theo", " (24 August 2001). ", "\"Re: Why were all DJB's ports removed? No more qmail?\"", ". ", "openbsd-misc", " (Mailing list). Archived from ", "the original", " on 19 April 2016.", "\u00a0", "\n", "^", " ", "Bernstein, Daniel J.", " (27 August 2001). ", "\"Re: Why were all DJB's ports removed? No more qmail?\"", ". ", "openbsd-misc", " (Mailing list). Archived from ", "the original", " on 4 February 2012.", "\u00a0", "\n", "^", " ", "Espie, Marc (28 August 2001). ", "\"Re: Why were all DJB's ports removed? No more qmail?\"", ". ", "openbsd-misc", " (Mailing list). Archived from ", "the original", " on 19 April 2016.", "\u00a0", "\n", "^", " ", "Hartmeier, Daniel (10 June 2002). ", "Design and Performance of the OpenBSD Stateful Packet Filter (pf)", ". ", "USENIX", " Annual Technical Conference. Monterey, California", ". Retrieved ", "13 December", " 2011", ".", "\u00a0", "\n", "^", " ", "The OpenBSD PF Packet Filter Book: PF for NetBSD, FreeBSD, DragonFly and OpenBSD", ". Reed Media Services. ", "ISBN", "\u00a0", "0-9790342-0-5", ". Retrieved ", "19 May", " 2016", ".", "\u00a0", "\n", "^", " ", "McAllister, Neil (8 July 2015). ", "\"Microsoft rains cash on OpenBSD Foundation, becomes top 2015 donor\"", ". ", "The Register", ". Retrieved ", "27 May", " 2016", ".", "\u00a0", "\n", "^", " ", "\"Contributors\"", ". ", "OpenBSD Foundation", ". Retrieved ", "27 May", " 2016", ".", "\u00a0", "\n", "^", " ", "\"OpenBSD Project in Financial Danger\"", ". ", "Slashdot", ". 21 March 2006", ". Retrieved ", "12 December", " 2014", ".", "\u00a0", "\n", "^", " ", "\"Mozilla Foundation Donates $10K to OpenSSH\"", ". ", "Slashdot", ". 4 April 2006", ". Retrieved ", "12 December", " 2014", ".", "\u00a0", "\n", "^", " ", "\"GoDaddy.com Donates $10K to Open Source Development Project\"", ". ", "The Hosting News", ". 19 April 2006. Archived from ", "the original", " on 11 November 2006.", "\u00a0", "\n", "^", " ", "Beck, Bob (14 January 2014). ", "\"Request for Funding our Electricity\"", ". ", "openbsd-misc", " (Mailing list)", ". Retrieved ", "17 May", " 2016", ".", "\u00a0", "\n", "^ ", "a", " ", "b", " ", "Bright, Peter (20 January 2014). ", "\"OpenBSD rescued from unpowered oblivion by $20K bitcoin donation\"", ". ", "Ars Technica", ". Retrieved ", "20 January", " 2014", ".", "\u00a0", "\n", "^", " ", "\"The OpenBSD Foundation 2014 Fundraising Campaign\"", ". ", "OpenBSD Foundation", ". Retrieved ", "24 May", " 2014", ".", "\u00a0", "\n", "^", " ", "Varghese, Sam (8 October 2004). ", "\"Staying on the cutting edge\"", ". ", "The Age", ". Retrieved ", "13 December", " 2011", ".", "\u00a0", "\n", "^", " ", "Laird, Cameron; Staplin, George Peter (17 July 2003). ", "\"The Essence of OpenBSD\"", ". ", "ONLamp", ". Retrieved ", "13 December", " 2011", ".", "\u00a0", "\n", "^", " ", "de Raadt, Theo", " (19 December 2005). ", "\"2.3 release announcement\"", ". ", "openbsd-misc", " (Mailing list). ", "Without [SNI's] support at the right time, this release probably would not have happened.", "\u00a0", "\n", "^", " ", "Wayner, Peter (13 July 2000). ", "\"18.3 Flames, Fights, and the Birth of OpenBSD\"", ". ", "Free For All: How Linux and the Free Software Movement Undercut the High Tech Titans", " (1st ed.). ", "HarperBusiness", ". ", "ISBN", "\u00a0", "978-0-06-662050-3", ". Retrieved ", "13 December", " 2011", ".", "\u00a0", "\n", "^", " ", "Miller, Todd C.; ", "de Raadt, Theo", " (6 June 1999). ", "strlcpy and strlcat\u00a0- Consistent, Safe, String Copy and Concatenation", ". ", "USENIX", " Annual Technical Conference. Monterey, California", ". Retrieved ", "13 December", " 2011", ".", "\u00a0", "\n", "^", " ", "de Raadt, Theo", "; Hallqvist, Niklas; Grabowski, Artur; Keromytis, Angelos D.; ", "Provos, Niels", " (6 June 1999). ", "Cryptography in OpenBSD: An Overview", ". ", "USENIX", " Annual Technical Conference. Monterey, California", ". Retrieved ", "27 May", " 2016", ".", "\u00a0", "\n", "^", " ", "Provos, Niels", " (9 August 2003). ", "\"Privilege Separated OpenSSH\"", ". Retrieved ", "13 December", " 2011", ".", "\u00a0", "\n", "^", " ", "\"Innovations\"", ". ", "OpenBSD", ". Retrieved ", "18 May", " 2016", ". ", "Privilege separation: [...] The concept is now used in many OpenBSD programs, for example [...] etc.", "\u00a0", "\n", "^", " ", "\"Project History and Credits\"", ". ", "OpenSSH", ". Retrieved ", "13 December", " 2011", ".", "\u00a0", "\n", "^", " ", "\"SSH usage profiling\"", ". ", "OpenSSH", ". Retrieved ", "13 December", " 2011", ".", "\u00a0", "\n", "^", " ", "Biancuzzi, Federico (18 March 2004). ", "\"An Interview with OpenBSD's Marc Espie\"", ". ", "ONLamp", ". Retrieved ", "13 December", " 2011", ".", "\u00a0", "\n", "^", " ", "\"Security\"", ". ", "OpenBSD", ". Retrieved ", "13 December", " 2011", ". ", "Secure by Default.", "\u00a0", "\n", "^", " ", "Wheeler, David A.", " (3 March 2003). ", "\"2.4. Is Open Source Good for Security?\"", ". ", "Secure Programming for Linux and Unix HOWTO", ". Retrieved ", "13 December", " 2011", ".", "\u00a0", "\n", "^", " ", "de Raadt, Theo", " (14 December 2010). ", "\"Allegations regarding OpenBSD IPSEC\"", ". ", "openbsd-tech", " (Mailing list)", ". Retrieved ", "28 May", " 2016", ".", "\u00a0", "\n", "^", " ", "Holwerda, Thom (14 December 2010). ", "\"FBI Added Secret Backdoors to OpenBSD IPSEC\"", ". ", "OSNews", ". Retrieved ", "13 December", " 2011", ".", "\u00a0", "\n", "^", " ", "Ryan, Paul (23 December 2010). ", "\"OpenBSD code audit uncovers bugs, but no evidence of backdoor\"", ". ", "Ars Technica", ". Retrieved ", "9 January", " 2011", ".", "\u00a0", "\n", "^", " ", "Mathew J. Schwartz (22 December 2010). ", "\"OpenBSD Founder Believes FBI Built IPsec Backdoor\"", ". ", "InformationWeek: DARKreading", ".", "\u00a0", "\n", "^", " ", "\"OpenBSD\"", ". ", "OpenBSD", ". Archived from ", "the original", " on 28 May 2002.", "\u00a0", "\n", "^", " ", "\"OpenSSH Remote Challenge Vulnerability\"", ". ", "Internet Security Systems", ". 26 June 2002", ". Retrieved ", "13 December", " 2011", ".", "\u00a0", "\n", "^", " ", "\"OpenSSH 'Challenge-Response' authentication buffer overflow\"", ". ", "Internet Security Systems", ". Retrieved ", "13 December", " 2011", ".", "\u00a0", "\n", "^", " ", "\"OpenBSD's IPv6 mbufs remote kernel buffer overflow\"", ". ", "Core Security Technologies", ". 13 March 2007", ". Retrieved ", "13 December", " 2011", ".", "\u00a0", "\n", "^", " ", "Grimes, Roger A. (29 December 2006). ", "\"New year's resolution No. 1: Get OpenBSD\"", ". ", "InfoWorld", ".", "\u00a0", "\n", "^", " ", "\"Anonymous CVS\"", ". ", "OpenBSD", ". Retrieved ", "13 December", " 2011", ".", "\u00a0", "\n", "^", " ", "\"Mirrors\"", ". ", "OpenBSD", ". Retrieved ", "22 May", " 2016", ".", "\u00a0", "\n", "^", " ", "\"Orders\"", ". ", "OpenBSD", ". Retrieved ", "20 May", " 2016", ".", "\u00a0", "\n", "^ ", "a", " ", "b", " ", "\"Packages and Ports\"", ". ", "OpenBSD Frequently Asked Questions", ". Retrieved ", "22 May", " 2016", ".", "\u00a0", "\n", "^", " ", "\"OpenBSD\"", ". ", "mckusick.com", ". Retrieved ", "12 December", " 2014", ".", "\u00a0", "\n", "^", " ", "de Raadt, Theo", " (19 May 1999). ", "\"OpenBSD 2.5 Release Announcement\"", ". ", "openbsd-announce", " (Mailing list). Archived from ", "the original", " on 14 March 2014. ", "OpenBSD 2.5 introduces the new Cop daemon image done by cartoonist Ty Semeka.", "\u00a0", "\n", "^", " ", "\"OpenBSD 2.7\"", ". ", "OpenBSD", ". Retrieved ", "22 May", " 2016", ".", "\u00a0", "\n", "^", " ", "Matzan, Jem (1 December 2006). ", "\"OpenBSD 4.0 review\"", ". ", "Software in Review", ". Retrieved ", "13 December", " 2011", ". ", "Each OpenBSD release has a graphical theme and a song that goes with it. The theme reflects a major concern that the OpenBSD programmers are addressing or bringing to light.", "\u00a0", "\n", "\n", "\n", "External links", "[", "edit", "]", "\n", "\n", "Listen to this article", " (", "info/dl", ")\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "This audio file was created from a revision of the article \"", "OpenBSD", "\" dated 2011-10-23, and does not reflect subsequent edits to the article. (", "Audio help", ")", "\n", "More spoken articles", "\n", "\n", "\n", "\n", "\n", "Wikimedia Commons has media related to ", "OpenBSD", ".", "\n", "\n", "\n", "\n", "\n", "\n", "The Wikibook ", "Guide to Unix", " has a page on the topic of: ", "OpenBSD", "\n", "\n", "\n", "\n", "Official website", "\n", "OpenBSD", " at ", "DistroWatch", "\n", "OpenBSD ports & packages", " ", "latest package info", "\n", "OpenBSD source code search", "\n", "old list of OpenBSD commands", "\n", "Video \u2013 An OpenBSD talk by Michael Lucas", " on ", "YouTube", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "v", "\n", "t", "\n", "e", "\n", "\n", "\n", "The ", "OpenBSD", " Project", "\n", "\n", "\n", "\n", "Operating system", "\n", "\n", "\n", "\n", "OpenBSD", "\n", "\n", "version history", "\n", "security", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "Related projects", "\n", "\n", "\n", "\n", "CARP", "\n", "LibreSSL", "\n", "mandoc", "\n", "OpenSSH", "\n", "OpenBGPD", "\n", "OpenIKED", "\n", "OpenOSPFD", "\n", "OpenNTPD", "\n", "OpenSMTPD", "\n", "PF", "\n", "sndio", "\n", "spamd", "\n", "Systrace", "\n", "tmux", "\n", "Xenocara", "\n", "\n", "cwm", "\n", "\n", "\n", "W^X", "\n", "\n", "\n", "\n", "\n", "\n", "People", "\n", "\n", "\n", "\n", "Theo de Raadt", "\n", "Niels Provos", "\n", "OpenBSD Foundation", "\n", "Plaid Tongued Devils", "\n", "\n", "\n", "\n", "\n", "\n", "Resources", "\n", "\n", "\n", "\n", "OpenBSD Journal", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "v", "\n", "t", "\n", "e", "\n", "\n", "\n", "Berkeley Software Distribution", "\n", "\n", "\n", "\n", "People", "\n", "\n", "\n", "\n", "Bob Fabry", "\n", "Keith Bostic", "\n", "Marshall Kirk McKusick", "\n", "Michael J. Karels", "\n", "Bill Joy", "\n", "Samuel Leffler", "\n", "Jordan Hubbard", "\n", "Theo de Raadt", "\n", "Poul-Henning Kamp", "\n", "Lynne", " and ", "William Jolitz", "\n", "\n", "\n", "\n", "\n", "\n", "Derivatives", "\n", "\n", "\n", "\n", "\n", "Active", "\n", "\n", "\n", "\n", "FreeBSD", "\n", "OpenBSD", "\n", "NetBSD", "\n", "DragonFly BSD", "\n", "TrueOS", "\n", "Junos OS", "\n", "Darwin", "\n", "PS3", "/", "PS4", "/", "PSP", "/", "PS Vita operating system", "\n", "Nintendo Switch operating system", "\n", "Full list", "\n", "\n", "\n", "\n", "\n", "\n", "Discontinued", "\n", "\n", "\n", "\n", "386BSD", "\n", "BSD/OS", "\n", "SunOS", "\n", "Ultrix", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "Companies", "\n", "\n", "\n", "\n", "Sleepycat Software", "\n", "Walnut Creek CDROM", "\n", "Berkeley Software Design", "\n", "iXsystems", "\n", "\n", "\n", "\n", "\n", "\n", "Other topics", "\n", "\n", "\n", "\n", "Comparison", "\n", "History", "\n", "Licensing", "\n", "BSD Daemon", "\n", "Computer Systems Research Group", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "v", "\n", "t", "\n", "e", "\n", "\n", "\n", "Unix", " and ", "Unix-like", " ", "operating systems", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "BSD", "\n", "\n", "386BSD", "\n", "\n", "FreeBSD", "\n", "NetBSD", "\n", "OpenBSD", "\n", "DragonFly BSD", "\n", "\n", "\n", "NeXTSTEP", "\n", "Darwin", "\n", "\n", "macOS", "\n", "iOS", "\n", "\n", "\n", "SunOS", "\n", "Ultrix", "\n", "\n", "\n", "Coherent", "\n", "GNU", "\n", "Linux", "\n", "\n", "Android", "\n", "Chrome OS", "\n", "\n", "\n", "LynxOS", "\n", "MINIX", "\n", "QNX", "\n", "\n", "BlackBerry 10", "\n", "\n", "\n", "Research Unix", "\n", "System V", "\n", "\n", "A/UX", "\n", "AIX", "\n", "HP-UX", "\n", "illumos", "\n", "IRIX", "\n", "OpenServer", "\n", "Solaris", "\n", "Tru64 UNIX", "\n", "UnixWare", "\n", "\n", "\n", "Xenix", "\n", "more...", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", " ", "Category", "\n", " ", "Commons", "\n", " ", "Book", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "Authority control", "\n", "\n", "\n", "\n", "MusicBrainz", ": ", "1ffebdcd-b78e-463d-9ce9-f2536be58db5", "\n", "\n", "\n", "\n", "\n", "\n", "\n\n\n", "\n", "\n", "\n", "\n"], "lastUpdated": " 19 January 2018, at 07:22."}, +{"title": "David Heinemeier Hansson", "text": ["Not to be confused with ", "David Hanson (computer scientist)", ".", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "This article has multiple issues.", " Please help ", "improve it", " or discuss these issues on the ", "talk page", ". ", "(", "Learn how and when to remove these template messages", ")", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "This article ", "is written like a\u00a0personal reflection or opinion essay", " that states a Wikipedia editor's personal feelings about a topic. ", "Please ", "help improve it", " by rewriting it in an ", "encyclopedic style", ".", " ", "(July 2017)", " ", "(", "Learn how and when to remove this template message", ")", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "This article ", "reads like ", "a press release", " or ", "a news article", " or ", "is entirely based on ", "routine coverage", ". ", "Please ", "expand this article", " with ", "properly sourced content", " to meet Wikipedia's ", "quality standards", ", ", "event notability guideline", ", or ", "encyclopedic content policy", ".", " ", "(July 2017)", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "The topic of this article ", "may not meet Wikipedia's ", "notability guideline for biographies", ". ", "Please help to establish notability by citing ", "reliable secondary sources", " that are ", "independent", " of the topic and provide significant coverage of it beyond its mere trivial mention. If notability cannot be established, the article is likely to be ", "merged", ", ", "redirected", ", or ", "deleted", ".", "\n", "Find sources:", "\u00a0", "\"David Heinemeier Hansson\"", "\u00a0\u2013\u00a0", "news", "\u00a0", "\u00b7", " ", "newspapers", "\u00a0", "\u00b7", " ", "books", "\u00a0", "\u00b7", " ", "scholar", "\u00a0", "\u00b7", " ", "JSTOR", " ", "(July 2017)", " ", "(", "Learn how and when to remove this template message", ")", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "Some of this article's ", "listed sources", " ", "may not be ", "reliable", ". ", "Please help this article by looking for better, more reliable sources. Unreliable citations may be challenged or deleted.", " ", "(July 2017)", " ", "(", "Learn how and when to remove this template message", ")", "\n", "\n", "\n", "\n", "\n", "\n", "(", "Learn how and when to remove this template message", ")", "\n", "\n", "\n", "\n", "\n", "\n", "David Heinemeier Hansson", "\n", "\n", "\n", "\n", "Hansson at the 2006 O'Reilly Emerging Technology Conference", "\n", "\n", "\n", "\n", "Born", "\n", "(", "1979-10-15", ")", " 15 October 1979 ", "(age\u00a038)", "[1]", "\n", "Copenhagen", ", ", "Denmark", "\n", "\n", "\n", "Residence", "\n", "Benahav\u00eds", ", ", "Spain", "\n", "\n", "\n", "Other\u00a0names", "\n", "DHH", "\n", "\n", "\n", "Occupation", "\n", "Programmer", "[2]", "\n", "\n", "\n", "Employer", "\n", "Basecamp", "\n", "\n", "\n", "Known\u00a0for", "\n", "Ruby on Rails", "\n", "\n", "\n", "Website", "\n", "david", ".heinemeierhansson", ".com", "\n", "\n", "\n", "David Heinemeier Hansson", " (born 15 October 1979; known to the ", "Ruby", " and car racing communities as ", "DHH", ") is a ", "Danish", " ", "programmer", " and the creator of the popular ", "Ruby on Rails", " ", "web development", " ", "framework", " and the ", "Instiki wiki", ".", "[3]", " He is also a partner at the web-based software development firm ", "Basecamp", " (formerly ", "37signals", ").", "\n", "Hansson co-wrote ", "Agile Web Development with Rails", " with ", "Dave Thomas", " in 2005 as part of ", "The Facets of Ruby Series", ". He also co-wrote ", "Getting Real", ", ", "Rework", ", and ", "Remote", " with ", "Jason Fried", ".", "\n", "\n", "\n", "\n", "Contents", "\n", "\n", "\n", "1", " ", "Programming", "\n", "2", " ", "Personal life", "\n", "\n", "2.1", " ", "24 Hours of Le Mans results", "\n", "2.2", " ", "Complete FIA World Endurance Championship results", "\n", "\n", "\n", "3", " ", "Recognition", "\n", "4", " ", "See also", "\n", "5", " ", "References", "\n", "6", " ", "External links", "\n", "\n", "\n", "\n", "Programming", "[", "edit", "]", "\n", "In 1999, Hansson founded and built a Danish online gaming news website and community called Daily Rush, which he ran until 2001.", "[4]", "\n", "After attracting the attention of ", "Jason Fried", " by offering him help with PHP coding, Hansson was hired by Fried to build a web-based ", "project management", " tool, which ultimately became 37signals' ", "Basecamp", " ", "software as a service", " product.", "\n", "To aid the development process, Hansson used the then-obscure Ruby programming language to develop a custom ", "web framework", ". He released the framework separately from the project management tool in 2004 as the ", "open source", " project ", "Ruby on Rails", ". In 2005, Hansson was recognized by ", "Google", " and ", "O'Reilly", " with the \"Hacker of the Year\" award for his creation of Ruby on Rails.", "[5]", "\n", "After graduating from the ", "Copenhagen Business School", " and receiving his ", "bachelor's degree", " in Computer Science and Business Administration, Hansson moved from ", "Denmark", " to ", "Chicago", ", Illinois, ", "U.S.", " in November 2005.", "[6]", "\n", "Personal life", "[", "edit", "]", "\n", "\n", "\n", "24 Hours of Le Mans", " career", "\n", "\n", "\n", "Years", "\n", "2012 -", "\n", "\n", "\n", "Teams", "\n", "OAK Racing", ", ", "Aston Martin Racing", ", ", "Extreme Speed Motorsports", ", ", "Proton Competition", ", ", "Rebellion Racing", "\n", "\n", "\n", "Best finish", "\n", "8th ", "(", "2013", ")", "\n", "\n", "\n", "Class wins", "\n", "1", "\n", "\n", "\n", "David Heinemeier Hansson lists photography and race car driving amongst his hobbies.", "[7]", " He took part in the ", "2012 24 Hours of Le Mans", " driving for ", "OAK Racing", ".", "[8]", " He also drove a Morgan-Nissan P2 car for ", "Conquest Racing", " in the ", "American Le Mans Series", " (ALMS), winning two races in the season. Heinemeier Hansson joined OAK Racing full-time in 2013, taking five 2nd-place finishes to finish 2nd in the Trophy for LMP2 Drivers.", "\n", "In July 2010 it was revealed that Heinemeier Hansson was the person that had commissioned the one-off ", "Pagani Zonda HH", " supercar.", "[9]", " He also owns the one-off ", "Koenigsegg Agera", " HH car.", "[10]", "\n", "24 Hours of Le Mans results", "[", "edit", "]", "\n", "\n", "\n", "Year", "\n", "Team", "\n", "Co-Drivers", "\n", "Car", "\n", "Class", "\n", "Laps", "\n", "Pos.", "\n", "Class", "\nPos.", "\n", "\n", "\n", "2012", "\n", " ", "OAK Racing", "\n", " ", "Bas Leinders", "\n", " ", "Maxime Martin", "\n", "Morgan LMP2", "-", "Nissan", "\n", "LMP2", "\n", "341", "\n", "14th", "\n", "7th", "\n", "\n", "\n", "2013", "\n", " ", "OAK Racing", "\n", " ", "Olivier Pla", "\n", " ", "Alex Brundle", "\n", "Morgan LMP2", "-", "Nissan", "\n", "LMP2", "\n", "328", "\n", "8th", "\n", "2nd", "\n", "\n", "\n", "2014", "\n", " ", "Aston Martin Racing", "\n", " ", "Kristian Poulsen", "\n", " ", "Nicki Thiim", "\n", "Aston Martin Vantage GTE", "\n", "GTE", "\nAm", "\n", "334", "\n", "17th", "\n", "1st", "\n", "\n", "\n", "2015", "\n", " ", "Extreme Speed Motorsports", "\n", " ", "Scott Sharp", "\n", " ", "Ryan Dalziel", "\n", "Ligier JS P2", "-", "Honda", "\n", "LMP2", "\n", "329", "\n", "28th", "\n", "10th", "\n", "\n", "\n", "2016", "\n", " ", "Abu Dhabi-Proton Racing", "\n", " Khaled Al Qubaisi", "\n", " ", "Patrick Long", "\n", "Porsche 911 RSR", "\n", "GTE", "\nAm", "\n", "330", "\n", "28th", "\n", "3rd", "\n", "\n", "\n", "2017", "\n", " ", "Vaillante Rebellion", "\n", " ", "Nelson Piquet Jr.", "\n", " ", "Mathias Beche", "\n", "Oreca 07", "-", "Gibson", "\n", "LMP2", "\n", "364", "\n", "DSQ", "\n", "DSQ", "\n", "\n", "\n", "Complete FIA World Endurance Championship results", "[", "edit", "]", "\n", "\n", "\n", "Year", "\n", "Entrant", "\n", "Class", "\n", "Car", "\n", "Engine", "\n", "Tyres", "\n", "1", "\n", "2", "\n", "3", "\n", "4", "\n", "5", "\n", "6", "\n", "7", "\n", "8", "\n", "9", "\n", "Rank", "\n", "Points", "\n", "\n", "\n", "2013", "\n", "OAK Racing", "\n", "LMP2", "\n", "Morgan LMP2", "\n", "Nissan", " VK45DE 4.5 L V8", "\n", "D", "\n", "SIL", "\n", "2", "\n", "SPA", "\n", "2", "\n", "LMS", "\n", "2", "\n", "S\u00c3O", "\n", "6", "\n", "COA", "\n", "6", "\n", "FUJ", "\n", "3", "\n", "SHA", "\n", "2", "\n", "BHR", "\n", "2", "\n", "\n", "2nd", "\n", "132.5", "\n", "\n", "\n", "2014", "\n", "Aston Martin Racing", "\n", "LMGTE", "\nAm", "\n", "Aston Martin Vantage V8 GTE", "\n", "Aston Martin", " 4.5 L V8", "\n", "M", "\n", "SIL", "\n", "1", "\n", "SPA", "\n", "2", "\n", "LMS", "\n", "1", "\n", "COA", "\n", "2", "\n", "FUJ", "\n", "1", "\n", "SHA", "\n", "2", "\n", "BHR", "\n", "1", "\n", "S\u00c3O", "\n", "2", "\n", "\n", "1st", "\n", "198", "\n", "\n", "\n", "2015", "\n", "Extreme Speed Motorsports", "\n", "LMP2", "\n", "HPD ARX-03b", "\n", "Ligier JS P2", "\n", "Honda", " HR28TT 2.8 L Turbo V6", "\n", "D", "\n", "SIL", "\n", "EX", "\n", "SPA", "\n", "8", "\n", "LMS", "\n", "5", "\n", "N\u00dcR", "\n", "6", "\n", "COA", "\n", "4", "\n", "FUJ", "\n", "4", "\n", "SHA", "\n", "Ret", "\n", "BHR", "\n", "7", "\n", "\n", "7th", "\n", "62", "\n", "\n", "\n", "2016", "\n", "Abu Dhabi-Proton Racing", "\n", "LMGTE", "\nAm", "\n", "Porsche 911 RSR", "\n", "Porsche", " 4.0\u00a0L Flat-6", "\n", "M", "\n", "SIL", "\n", "5", "\n", "SPA", "\n", "6", "\n", "LMS", "\n", "2", "\n", "N\u00dcR", "\n", "4", "\n", "MEX", "\n", "1", "\n", "COA", "\n", "5", "\n", "FUJ", "\n", "5", "\n", "SHA", "\n", "4", "\n", "BHR", "\n", "1", "\n", "2nd", "\n", "151", "\n", "\n", "\n", "2017", "\n", "Vaillante Rebellion", "\n", "LMP2", "\n", "Oreca 07", "\n", "Gibson", " GK-428 4.2 litre ", "V8", "\n", "D", "\n", "SIL", "\n", "9", "\n", "SPA", "\n4", "\n", "LMS", "\n", "DSQ", "\n", "N\u00dcR", "\n", "4", "\n", "MEX", "\n", "5", "\n", "COA", "\n", "2", "\n", "FUJ", "\n", "DSQ", "\n", "SHA", "\n", "3", "\n", "BHR", "\n", "3", "\n", "8th", "\n", "85", "\n", "\n", "\n", "Recognition", "[", "edit", "]", "\n", "\n", "2005: Won Best Hacker of the Year 2005 at ", "OSCON", " from ", "Google", " and ", "O'Reilly", " for the work on Rails.", "[11]", "\n", "2006: Accepted the ", "Jolt Award", " of product excellence for Rails 1.0.", "[11]", "\n", "2012: Named ", "ALMS", " Rookie of the year.", "[12]", "\n", "\n", "See also", "[", "edit", "]", "\n", "\n", "Basecamp", "\n", "\n", "References", "[", "edit", "]", "\n", "\n", "\n", "^", " ", "David Heinemeier Hansson, ed. (October 2001). ", "\"Turning Another Year (Loud Thinking)\"", ". Archived from ", "the original", " on 1 November 2007", ". Retrieved ", "2 October", " 2007", ".", "\u00a0", "\n", "^", " ", "The home screens of 37signals", "\n", "^", " ", "DHH", " interviewed on the TV show Triangulation on the ", "TWiT.tv", " network", "\n", "^", " ", "Daily Rush", "\n", "^", " ", "\"Google-O'Reilly Open Source Awards - Hall of Fame\"", ". Google Code", ". Retrieved ", "2010-09-03", ". ", "Best Hacker: David Heinemeier Hansson (Ruby on Rails and 37Signals)", "\u00a0", "\n", "^", " ", "Staff writer (March 9, 2014). ", "\"David Heinemeier Hansson: Basecamp, Remote and the next big thing\"", ". eTalks", ". Retrieved ", "April 30,", " 2015", ".", "\u00a0", "[", "permanent dead link", "]", "\n", "^", " ", "\"DHH weblog\"", ". Retrieved ", "2012-07-02", ".", "\u00a0", "\n", "^", " ", "Mercier, Laurent (2012-04-18). ", "\"L'\u00e9quipage de la Morgan 2012 LMP2 #35 affiche complet\"", " [The crew of the #35 LMP2 2012 Morgan sold out]. ", "Endurance-Info", " (in French). Infomaniak Network SA", ". Retrieved ", "2012-04-18", ".", "\u00a0", "\n", "^", " ", "\"Pagani Zonda HH\"", ". secretentourage.com. August 2010", ". Retrieved ", "2011-01-02", ".", "\u00a0", "\n", "^", " ", "Gary Bonanni (Oct 7, 2014). ", "\"One-of-a-Kind Koenigsegg Agera HH Spotted\"", ". ", "carbuzz.com", ". Retrieved ", "7 October", " 2014", ".", "\u00a0", "\n", "^ ", "a", " ", "b", " ", "About David Heinemeier Hansson", " ", "Archived", " 2011-06-02 at the ", "Wayback Machine", ".. Loudthinking.com. Retrieved on 2014-05-30.", "\n", "^", " ", "\"Archived copy\"", ". Archived from ", "the original", " on 2013-06-02", ". Retrieved ", "2013-06-23", ".", "\u00a0", "\n", "\n", "\n", "External links", "[", "edit", "]", "\n", "\n", "Loud Thinking", " - Hansson's weblog", "\n", "37signals", "\n", "Ruby on Rails", "\n", "Video of David Heinemeier Hansson presentation at Startup School", "\n", "David Heinemeier Hansson - The Pareto Principle and Stoic Philosophy", " on Developer on Fire", "\n", "David Heinemeier Hansson interview", " on the Inside the Net Podcast", "\n", "Martin Fowler and David Heinemeier Hansson interview", " on Hanselminutes Podcast", "\n", "David Heinemeier Hansson interview in Danish", " on Builder.dk Podcast", "\n", "Podcast interview with David Heinemeier Hansson", " on the Web 2.0 Show", "\n", "Ruby on Rails video", "[", "permanent dead link", "]", " David Heinemeier Hansson explains Ruby on Rails at the university of Roskilde, in 2004", "\n", "Keynote 2007 - RailsConf Europe 2007 - Berlin", "\n", "RailsConf Keynote", " on REST. July 9, 2006", "\n", "The Great Surplus - Keynote at RailsConf 2008 - Portland", "[", "permanent dead link", "]", "\n", "Living with legacy software - Keynote at RailsConf Europe 2008 - Berlin", "\n", "FLOSS Weekly podcast 79", " and its ", "transcription", "\n", "Podcast interview with David Heinemeier Hansson", " on This Developer's Life", "\n", "\n", "\n", "\n", "Sporting positions", "\n", "\n", "\n", "Preceded\u00a0by", "\n", "Jamie Campbell-Walter", "\n", "Stuart Hall", "\n", "FIA Endurance Trophy for LMGTE Am Drivers", "\n", "2014", " ", "with:", "\n", "Kristian Poulsen", "\n", "Succeeded\u00a0by", "\n", "Aleksey Basov", "\n", "Andrea Bertolini", "\nViktor Shaitar", "\n", "\n", "\n", "\n", "\n", "\n", "Authority control", "\n", "\n", "\n", "\n", "WorldCat Identities", "\n", "VIAF", ": ", "24888522", "\n", "LCCN", ": ", "no2006071728", "\n", "ISNI", ": ", "0000 0001 1609 5882", "\n", "GND", ": ", "173789617", "\n", "SELIBR", ": ", "264350", "\n", "SUDOC", ": ", "097530417", "\n", "BNF", ": ", "cb150608725", " ", "(data)", "\n", "BIBSYS", ": ", "5081149", "\n", "NDL", ": ", "01034410", "\n", "NKC", ": ", "stk2007383215", "\n", "BNE", ": ", "XX4895045", "\n", "CiNii", ": ", "DA1757643X", "\n", "\n", "\n", "\n", "\n", "\n", "\n\n\n", "\n", "\n", "\n", "\n"], "lastUpdated": " 7 January 2018, at 05:36."}, +{"title": "Dries Buytaert", "text": ["\n", "\n", "\n", "\nDries Buytaert at ", "FOSDEM", " 2008.", "\n", "\n", "\n", "Dries Buytaert", " (born 19 November 1978 in ", "Wilrijk", ", ", "Antwerp", ", ", "Belgium", ")", "[1]", " is an ", "open-source software", " ", "programmer", " notable as founder and lead developer of the ", "Drupal", " ", "CMS", ".", "[2]", "[3]", "[4]", "\n", "\n", "\n", "\n", "Contents", "\n", "\n", "\n", "1", " ", "Career", "\n", "2", " ", "References", "\n", "3", " ", "External links", "\n", "\n", "3.1", " ", "Interviews", "\n", "3.2", " ", "Talks", "\n", "\n", "\n", "\n", "\n", "\n", "Career", "[", "edit", "]", "\n", "Buytaert defended his PhD dissertation in ", "Computer Science", " on 27 January 2008", "[5]", " at ", "Ghent University", " in Belgium.", "[6]", "\n", "From 1999-2000 he was the maintainer of the ", "Linux", "-", "WLAN", " FAQ", ".", "[7]", "\n", "It was during this time that he founded the concept of Drupal. At first, Dries maintained a small news site and a web board, but it developed to attract more audience.", "[8]", "\n", "On 1 December 2007, Dries", "[9]", " announced, together with co-founder ", "Jay Batson", " the launch of a start-up called ", "Acquia", ".", "[10]", " Acquia is a commercial open-source software company providing products, services, and technical support for ", "Drupal", ". Acquia wants to be to Drupal what ", "Red Hat", " has been to ", "Linux", ".", "[11]", " In 2009, Acquia helped re-launch Whitehouse.gov on Drupal.", "[12]", "\n", "On 31 March 2008, Dries launched ", "Mollom", ", a service dedicated to stopping website spam: \"Mollom's purpose is to dramatically reduce the effort of keeping your site clean and the quality of your content high. Currently, Mollom is a spam-killing one-two punch combination of a state-of-the-art spam filter and CAPTCHA server.\" Over 59,000 websites are protected by the Mollom service,", "[13]", " including all of ", "Netlog", "'s messages.", "[14]", "\n", "In 2008, Buytaert was elected \"Young Entrepreneurs of Tech\" by ", "BusinessWeek", ".", "[15]", " He was also named to the ", "MIT", " ", "Technology Review", " ", "TR35", " as one of the top 35 innovators in the world under the age of 35.", "[16]", "[17]", "\n", "References", "[", "edit", "]", "\n", "\n", "\n", "^", " ", "Curriculum Vitae", " ", "Archived", " 21 August 2010 at the ", "Wayback Machine", ".", "\n", "^", " ", "\"History\"", ". Drupal.org", ". Retrieved ", "23 April", " 2012", ".", "\u00a0", "\n", "^", " ", "\"The Drupal core\"", ". Drupal.org. Archived from ", "the original", " on 3 May 2012", ". Retrieved ", "23 April", " 2012", ".", "\u00a0", "\n", "^", " ", "\"Revamp of MAINTAINERS.txt\"", ". Groups.drupal.org", ". Retrieved ", "23 April", " 2012", ".", "\u00a0", "\n", "^", " ", "\"Dr. Dre, Dries Buytaert\"", ". Buytaert.net", ". Retrieved ", "23 April", " 2012", ".", "\u00a0", "\n", "^", " ", "\"conferences.oreilly.com\"", ". Conferences.oreillynet.com", ". Retrieved ", "23 April", " 2012", ".", "\u00a0", "\n", "^", " ", "\"Linux-Wlan Faq (Old)\"", ". Linux-wlan.org. 6 March 2000", ". Retrieved ", "23 April", " 2012", ".", "\u00a0", "\n", "^", " ", "\"The Drop By Dries Buytaert\"", ". Eyerys. 30 December 2016.", "\u00a0", "\n", "^", " ", "\"Acquia, my Drupal startup, Dries Buytaert\"", ". Buytaert.net", ". Retrieved ", "23 April", " 2012", ".", "\u00a0", "\n", "^", " ", "\"Acquia\"", ". Acquia", ". Retrieved ", "23 April", " 2012", ".", "\u00a0", "\n", "^", " ", "\"With $30M in funding, Acquia edges closer to an IPO\"", ". Venturebeat.com. 29 November 2012", ". Retrieved ", "20 January", " 2013", ".", "\u00a0", "\n", "^", " ", "\"Whitehouse goes Drupal\"", ". Techpresident.com. 24 October 2009", ". Retrieved ", "23 April", " 2012", ".", "\u00a0", "\n", "^", " ", "\"Mollom Scorecard\"", ". Retrieved ", "27 January", " 2013", ".", "\u00a0", "\n", "^", " ", "\"Mollom filtering millions of messages for Netlog\"", ". Buytaert.net. 20 May 2009", ". Retrieved ", "23 April", " 2012", ".", "\u00a0", "\n", "^", " ", "Kharif, Olga (17 April 2008). ", "\"Young Entrepreneurs of Tech 2008\"", ". Businessweek.com", ". Retrieved ", "23 April", " 2012", ".", "\u00a0", "\n", "^", " ", "\"2008 Young Innovators Under 35\"", ". ", "Technology Review", ". 2008", ". Retrieved ", "15 August", " 2011", ".", "\u00a0", "\n", "^", " ", "Christopher Chang, 33 University of California, Berkeley. ", "\"TR35 2008 Young Innovator\"", ". Technologyreview.com", ". Retrieved ", "23 April", " 2012", ".", "\u00a0", "CS1 maint: Multiple names: authors list (", "link", ")", "\n", "\n", "\n", "External links", "[", "edit", "]", "\n", "\n", "\n", "\n", "Wikimedia Commons has media related to ", "Dries Buytaert", ".", "\n", "\n", "\n", "\n", "\n", "\n", "Wikinews", " has\u00a0:", "\n", "\n", "\n", "\n", "\n", "an ", "interview with Dries Buytaert", ".", "\n", "\n", "\n", "\n", "\n", "\n", "Personal website", "\n", "Acquia", "\n", "Mollom", "\n", "\n", "Interviews", "[", "edit", "]", "\n", "\n", "An In-Depth Interview With Dries", " Drupal Watchdog interview (February 2011)", "\n", "Drupal founder, Dries Buytaert Interview", " CMS Critic interview (January 2009)", "\n", "Video interview", " with Dries Buytaert by Noel Hidalgo in Antwerp, Belgium (26 July 2007)", "\n", "\n", "Talks", "[", "edit", "]", "\n", "\n", "DrupalCon Los Angeles 2015: Driesnote Keynote", " - Dries' talk at DrupalCon 2015 in Los Angeles, United States (May 2015)", "\n", "The State of Drupal", " - Dries' talk at ", "FOSDEM", " 2007 in Brussels, Belgium (February 2007)", "\n", "Video of talk", " delivered by Dries Buytaert titled the ", "State of Drupal", " from OSCMS conference on Yahoo campus in Sunnyvale, California (late March 2007)", "\n", "The State of Drupal", " - Dries' State of Drupal talk at Drupalcon 2007 in Barcelona, Spain (September 2007)", "\n", "\n\n\n", "\n", "\n", "\n", "\n"], "lastUpdated": " 6 January 2018, at 06:23."}, +{"title": "Ruby on Rails", "text": ["Not to be confused with ", "Ruby (programming language)", ".", "\n", "\n", "Ruby on Rails", "\n", "\n", "\n", "\n", "\n", "Original author(s)", "\n", "David Heinemeier Hansson", "\n", "\n", "\n", "Initial release", "\n", "13\u00a0December 2005", "; 12 years ago", "\u00a0(", "2005-12-13", ")", "[1]", "\n", "\n", "\n", "\n", "\n", "\n", "Stable release", "\n", "5.1.4 ", "(September\u00a07, 2017", "; 4 months ago", "\u00a0(", "2017-09-07", ")", "[2]", ")", " ", "[\u00b1]", "\n", "\n", "\n", "\n", "\n", "\n", "Repository", "\n", "\n", "\n", "\n", "https://github.com/rails/rails", "\n", "\n", "\n", "\n", "\n", "\n", "Development status", "\n", "Active", "\n", "\n", "\n", "Written in", "\n", "Ruby", "\n", "\n", "\n", "Operating system", "\n", "Cross-platform", "\n", "\n", "\n", "Size", "\n", "18.2 ", "MB", "[3]", "\n", "\n", "\n", "Type", "\n", "Web application framework", "\n", "\n", "\n", "License", "\n", "MIT License", "\n", "\n", "\n", "Website", "\n", "rubyonrails", ".org", "\n", "\n", "\n", "Ruby on Rails", ", or ", "Rails", ", is a server-side ", "web application framework", " written in ", "Ruby", " under the ", "MIT License", ". Rails is a ", "model\u2013view\u2013controller", " (MVC) framework, providing default structures for a ", "database", ", a ", "web service", ", and ", "web pages", ". It encourages and facilitates the use of ", "web standards", " such as ", "JSON", " or ", "XML", " for data transfer, and ", "HTML", ", ", "CSS", " and ", "JavaScript", " for display and user interfacing. In addition to MVC, Rails emphasizes the use of other well-known ", "software engineering", " ", "patterns", " and paradigms, including ", "convention over configuration", " (CoC), ", "don't repeat yourself", " (DRY), and the ", "active record pattern", ".", "[4]", "\n", "Ruby on Rails' emergence in the 2000s greatly influenced web app development, through innovative features such as seamless database table creations, migrations, and scaffolding of views to enable rapid application development. Ruby on Rails' influence on other web frameworks remains apparent today, with many frameworks in other languages borrowing its ideas, including ", "Django", " in ", "Python", ", ", "Laravel", " in ", "PHP", ", Phoenix in ", "Elixir", ", and ", "Sails.js", " in ", "Node.js", ".", "\n", "\n", "\n", "\n", "Contents", "\n", "\n", "\n", "1", " ", "History", "\n", "2", " ", "Technical overview", "\n", "\n", "2.1", " ", "Framework structure", "\n", "2.2", " ", "Deployment", "\n", "\n", "\n", "3", " ", "Philosophy and design", "\n", "4", " ", "Trademarks", "\n", "5", " ", "Reception", "\n", "\n", "5.1", " ", "Scalability", "\n", "5.2", " ", "Security", "\n", "\n", "\n", "6", " ", "References", "\n", "7", " ", "Bibliography", "\n", "8", " ", "External links", "\n", "\n", "\n", "\n", "History", "[", "edit", "]", "\n", "David Heinemeier Hansson", " extracted Ruby on Rails from his work on the project management tool ", "Basecamp", " at the ", "web application", " company also called ", "Basecamp", ".", "[5]", " Hansson first released Rails as open source in July 2004, but did not share ", "commit", " rights to the project until February 2005.", "[", "citation needed", "]", " In August 2006, the framework reached a milestone when ", "Apple", " announced that it would ship Ruby on Rails with ", "Mac OS X v10.5 \"Leopard\"", ",", "[6]", " which was released in October 2007.", "\n", "Rails version 2.3 was released on March 15, 2009 with major new developments in templates, engines, ", "Rack", " and nested model forms. Templates enable the developer to generate a skeleton application with custom ", "gems", " and configurations. Engines give developers the ability to reuse application pieces complete with routes, view paths and models. The Rack web server interface and Metal allow one to write optimized pieces of code that route around Action Controller.", "[7]", "\n", "On December 23, 2008, ", "Merb", ", another web application framework, was launched, and Ruby on Rails announced it would work with the Merb project to bring \"the best ideas of Merb\" into Rails 3, ending the \"unnecessary duplication\" across both communities.", "[8]", " Merb was merged with Rails as part of the Rails 3.0 release.", "[9]", "[10]", "\n", "Rails 3.1 was released on August 31, 2011, featuring Reversible Database Migrations, Asset Pipeline, Streaming, ", "jQuery", " as default ", "JavaScript", " library and newly introduced ", "CoffeeScript", " and ", "Sass", " into the stack.", "[11]", "\n", "Rails 3.2 was released on January 20, 2012 with a faster development mode and routing engine (also known as Journey engine), Automatic Query Explain and Tagged Logging.", "[12]", " Rails 3.2.x is the last version that supports Ruby 1.8.7.", "[13]", " Rails 3.2.12 supports Ruby 2.0.", "[14]", "\n", "Rails 4.0 was released on June 25, 2013, introducing Russian Doll Caching, Turbolinks, Live Streaming as well as making Active Resource, Active Record Observer and other components optional by splitting them as gems.", "[15]", "\n", "Rails 4.1 was released on April 8, 2014, introducing Spring, Variants, Enums, Mailer previews, and secrets.yml.", "[16]", "\n", "Rails 4.2 was released on December 19, 2014, introducing Active Job, asynchronous emails, Adequate Record, Web Console, and ", "foreign keys", ".", "[17]", "\n", "Rails 5.0 was released on June 30, 2016, introducing Action Cable, API mode, and Turbolinks 5.", "[18]", "\n", "Rails 5.0.0.1 was released on August 10, 2016 with Exclusive use of rails CLI over Rake and supports Ruby 2.2.2+ versions", "\n", "Rails 5.1 was released on April 27, 2017, introducing ", "JavaScript", " integration changes (management of JavaScript dependencies from NPM via Yarn, optional compilation of JavaScript using ", "Webpack", ", and a rewrite of Rails UJS to use vanilla JavaScript instead of depending on jQuery), system tests using ", "Capybara", ", encrypted secrets, parameterized mailers, direct & resolved routes, and a unified form_with helper replacing the form_tag/form_for helpers.", "[19]", "\n", "\n", "Version history", "\n", "\n", "Version", "\n", "Date", "\n", "Notes", "\n", "\n", "\n", "Old version, no longer supported:", " 1.0", "[20]", "\n", "000000002005-12-13-0000", "December 13, 2005", "\n", "\n", "\n", "\n", "Old version, no longer supported:", " 1.2", "[21]", "\n", "000000002007-01-19-0000", "January 19, 2007", "\n", "\n", "\n", "\n", "Old version, no longer supported:", " 2.0", "[22]", "\n", "000000002007-12-07-0000", "December 7, 2007", "\n", "\n", "\n", "\n", "Old version, no longer supported:", " 2.1", "[23]", "\n", "000000002008-06-01-0000", "June 1, 2008", "\n", "\n", "\n", "\n", "Old version, no longer supported:", " 2.2", "[24]", "\n", "000000002008-11-21-0000", "November 21, 2008", "\n", "\n", "\n", "\n", "Old version, no longer supported:", " 2.3", "[25]", "\n", "000000002009-03-16-0000", "March 16, 2009", "\n", "\n", "\n", "\n", "Old version, no longer supported:", " 3.0", "[26]", "\n", "000000002010-08-29-0000", "August 29, 2010", "\n", "\n", "\n", "\n", "Old version, no longer supported:", " 3.1", "[27]", "\n", "000000002011-08-31-0000", "August 31, 2011", "\n", "\n", "\n", "\n", "Old version, no longer supported:", " 3.2", "[28]", "\n", "000000002012-01-20-0000", "January 20, 2012", "\n", "\n", "\n", "\n", "Old version, no longer supported:", " 4.0", "[29]", "\n", "000000002013-06-25-0000", "June 25, 2013", "\n", "\n", "\n", "\n", "Old version, no longer supported:", " 4.1", "[16]", "\n", "000000002014-04-08-0000", "April 8, 2014", "\n", "\n", "\n", "\n", "Old version, no longer supported:", " 4.2", "[17]", "\n", "000000002014-12-19-0000", "December 19, 2014", "\n", "\n", "\n", "\n", "Older version, yet still supported:", " 5.0", "[18]", "\n", "000000002016-06-30-0000", "June 30, 2016", "\n", "\n", "\n", "\n", "Current stable version:", " ", "5.1", "[19]", "\n", "000000002017-05-10-0000", "May 10, 2017", "\n", "\n", "\n", "\n", "Latest preview version of a future release:", " 5.2", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "Legend:", "\n", "Old version", "\n", "Older version, still supported", "\n", "Latest version", "\n", "Latest preview version", "\n", "Future release", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "Technical overview", "[", "edit", "]", "\n", "Like many web frameworks, Ruby on Rails uses the ", "model\u2013view\u2013controller", " (MVC) pattern to organize application programming.", "\n", "In a default configuration, a ", "model", " in the Ruby on Rails framework maps to a table in a database and to a Ruby file. For example, a model class ", "User", " will usually be defined in the file 'user.rb' in the app/models directory, and linked to the table 'users' in the database. While developers are free to ignore this convention and choose differing names for their models, files, and database table, this is not common practice and is usually discouraged in accordance with the \"convention-over-configuration\" philosophy.", "\n", "A ", "controller", " is a server-side component of Rails that responds to external requests from the web server to the application, by determining which view file to render. The controller may also have to query one or more models for information and pass these on to the view. For example, in an airline reservation system, a controller implementing a flight-search function would need to query a model representing individual flights to find flights matching the search, and might also need to query models representing airports and airlines to find related secondary data. The controller might then pass some subset of the flight data to the corresponding view, which would contain a mixture of static HTML and logic that use the flight data to create an HTML document containing a table with one row per flight. A controller may provide one or more actions. In Ruby on Rails, an action is typically a basic unit that describes how to respond to a specific external web-browser request. Also, note that the controller/action will be accessible for external web requests only if a corresponding route is mapped to it. Rails encourages developers to use ", "RESTful", " routes, which include actions such as create, new, edit, update, destroy, show, and index. These mappings of incoming requests/routes to controller actions can be easily set up in the routes.rb configuration file.", "\n", "A ", "view", " in the default configuration of Rails is an ", "erb", " file, which is evaluated and converted to ", "HTML", " at run-time. Alternatively, many other templating systems can be used for views.", "\n", "Ruby on Rails includes tools that make common development tasks easier \"out-of-the-box\", such as ", "scaffolding", " that can automatically construct some of the models and views needed for a basic ", "website", ".", "[30]", " Also included are ", "WEBrick", ", a simple Ruby web server that is distributed with Ruby, and ", "Rake", ", a build system, distributed as a ", "gem", ". Together with Ruby on Rails, these tools provide a basic development environment.", "\n", "Ruby on Rails is most commonly not connected to the Internet directly, but through some front-end ", "web server", ". ", "Mongrel", " was generally preferred", "[", "by whom?", "]", " over WEBrick in the early days,", "[", "citation needed", "]", " but it can also run on ", "Lighttpd", ", ", "Apache", ", ", "Cherokee", ", ", "Hiawatha", ", ", "Nginx", " (either as a module \u2013 ", "Phusion Passenger", " for example \u2013 or via ", "CGI", ", ", "FastCGI", " or ", "mod_ruby", "), and many others. From 2008 onward, Passenger replaced Mongrel as the most-used web server for Ruby on Rails.", "[31]", " Ruby is also supported natively on the ", "IBM i", ".", "[32]", "\n", "Ruby on Rails is also noteworthy for its extensive use of the ", "JavaScript", " libraries, ", "Prototype", " and ", "Script.aculo.us", ", for scripting ", "Ajax", " actions.", "[33]", " Ruby on Rails initially utilized lightweight ", "SOAP", " for web services; this was later replaced by RESTful ", "web services", ". Ruby on Rails 3.0 uses a technique called ", "Unobtrusive JavaScript", " to separate the functionality (or logic) from the structure of the web page. jQuery is fully supported as a replacement for Prototype and is the default JavaScript library in Rails 3.1, reflecting an industry-wide move towards jQuery. Additionally, ", "CoffeeScript", " was introduced in Rails 3.1 as the default JavaScript language.", "\n", "Since version 2.0, Ruby on Rails offers both HTML and XML as standard output formats. The latter is the facility for RESTful web services.", "\n", "Rails 3.1 introduced ", "Sass", " as standard ", "CSS", " templating.", "\n", "By default, the server uses ", "Embedded Ruby", " in the HTML views, with files having an html.erb extension. Rails supports swapping-in alternative templating languages, such as ", "HAML", " and ", "Mustache", ".", "\n", "Ruby on Rails 3.0 has been designed to work with Ruby 1.8.7, Ruby 1.9.2, and ", "JRuby", " 1.5.2+; earlier versions are not supported.", "[34]", "\n", "Ruby on Rails 3.2 is the last series of releases that support Ruby 1.8.7.", "\n", "Framework structure", "[", "edit", "]", "\n", "Ruby on Rails is separated into various packages, namely ", "ActiveRecord", " (an ", "object-relational mapping", " system for database access), Active Resource (provides web services), Action Pack, Active Support and Action Mailer. Prior to version 2.0, Ruby on Rails also included the Action Web Service package that is now replaced by Active Resource. Apart from standard packages, developers can make ", "plugins", " to extend existing packages. Earlier Rails supported plugins within their own custom framework; version 3.2 deprecates these in favor of standard Ruby \"gems\".", "[35]", "\n", "Deployment", "[", "edit", "]", "\n", "Ruby on Rails is often installed using ", "RubyGems", ", a package manager", "[36]", " which is included with current versions of Ruby. Many free ", "Unix-like systems", " also support installation of Ruby on Rails and its dependencies through their native ", "package management system", ".", "\n", "Ruby on Rails is typically deployed with a database server such as ", "MySQL", " or ", "PostgreSQL", ", and a web server such as ", "Apache", " running the ", "Phusion Passenger", " module.", "\n", "Philosophy and design", "[", "edit", "]", "\n", "Ruby on Rails is intended to emphasize ", "Convention over Configuration", " (CoC), and the ", "Don't Repeat Yourself", " (DRY) principle.", "\n", "\"Convention over Configuration\" means a developer only needs to specify unconventional aspects of the application. For example, if there is a class ", "Sales", " in the model, the corresponding table in the database is called ", "sales", " by default. It is only if one deviates from this convention, such as calling the table \"products sold\", that the developer needs to write code regarding these names. Generally, Ruby on Rails conventions lead to less code and less repetition.", "[37]", "\n", "\"Don't repeat yourself\" means that information is located in a single, unambiguous place. For example, using the ", "ActiveRecord", " module of Rails, the developer does not need to specify database column names in class definitions. Instead, Ruby on Rails can retrieve this information from the database based on the class name.", "\n", "\"Fat models, skinny controllers\" means that most of the application logic should be placed within the model while leaving the controller as light as possible.", "\n", "Trademarks", "[", "edit", "]", "\n", "In March 2007, ", "David Heinemeier Hansson", " filed three Ruby on Rails-related ", "trademark", " applications to the ", "USPTO", ". These applications regard the phrase \"RUBY ON RAILS\",", "[38]", " the word \"RAILS\",", "[39]", " and the official Rails logo.", "[40]", " As a consequence, in the summer of 2007, Hansson denied permission to ", "Apress", " to use the Ruby on Rails logo on the cover of a new Ruby on Rails book written by some authoritative community members. The episode gave rise to a polite protest in the Ruby on Rails community.", "[41]", "[42]", " In response to this criticism, Hansson replied:", "\n", "\n", "I only grant promotional use [of the Rails logo] for products I'm directly involved with. Such as books that I've been part of the development process for or conferences where I have a say in the execution. I would most definitely seek to enforce all the trademarks of Rails.", "[41]", "\n", "\n", "Reception", "[", "edit", "]", "\n", "Scalability", "[", "edit", "]", "\n", "Rails running on ", "Matz's Ruby Interpreter", " (the ", "de facto", " reference interpreter for Ruby) had been criticized for issues with scalability.", "[43]", " These critics often mentioned various ", "Twitter", " outages in 2007 and 2008, which spurred Twitter's partial transition to ", "Scala", " (which runs on the ", "Java Virtual Machine", ") for their ", "queueing system", " and other ", "middleware", ".", "[44]", "[45]", " The user interface aspects of the site continued to run Ruby on Rails", "[46]", " until 2011 when it was replaced due to concerns over performance", "[47]", "\n", "In 2011, ", "Gartner Research", " noted that despite criticisms and comparisons to Java, many high-profile consumer web firms are using Ruby on Rails to build scalable web applications. Some of the largest sites running Ruby on Rails include ", "Airbnb", ", ", "GitHub", ", ", "Scribd", ", ", "Shopify", ", ", "Hulu", ", and ", "Basecamp", ".", "[48]", " As of January 2016, it is estimated that more than 1.2 million web sites are running Ruby on Rails.", "[49]", "[50]", "\n", "Security", "[", "edit", "]", "\n", "In March 2012, security researcher Egor Homakov discovered a \"mass assignment\" vulnerability that allowed certain Rails applications to be remotely exploited, and demonstrated it by non-maliciously hacking ", "GitHub", " after his earlier attempts at responsible disclosure were dismissed.", "[51]", "\n", "On September 24, 2013, a session cookie persistence security flaw was reported in Ruby on Rails. In a default configuration, the entire session hash is stored within a session cookie known as ", "CookieStore", ", allowing any authenticated session possessing the session cookie to log in as the target user at any time in the future. As a workaround, administrators are advised to configure cookies to be stored on the server using mechanisms such as ", "ActiveRecordStore", ".", "[52]", "\n", "Researchers Daniel Jackson and Joseph Near developed a data debugger they called \"Space\" that can analyze the data access of a Rails program and determine if the program properly adheres to rules regarding access restrictions. On April 15, 2016, Near reported that an analysis of 50 popular Web applications using Space uncovered 23 previously unknown security flaws.", "[53]", "\n", "References", "[", "edit", "]", "\n", "\n", "\n", "^", " ", "David. ", "\"Rails 1.0: Party like it's one oh oh!\"", ". ", "Ruby on Rails", ". Retrieved ", "2017-03-01", ".", "\u00a0", "\n", "^", " ", "matthewd. ", "\"Rails 5.1.4 and 5.0.6 released\"", ". ", "Ruby on Rails", ". Retrieved ", "2017-09-09", ".", "\u00a0", "\n", "^", " ", "\"Release v5.1.1 \u00b7 rails/rails \u00b7 GitHub\"", ". Retrieved ", "25 June", " 2017", ".", "\u00a0", "\n", "^", " ", "\"Getting Started with Rails: What Is Rails?\"", ". ", "Ruby on Rails Guides", ". Retrieved ", "10 August", " 2014", ".", "\u00a0", "\n", "^", " ", "Grimmer, Lenz\u2212\u2212 (February 2006). ", "\"Interview with David Heinemeier Hansson from Ruby on Rails\"", ". ", "MySQL AB", ". Archived from ", "the original", " on February 25, 2013", ". Retrieved ", "2008-06-08", ".", "\u00a0", "\n", "^", " ", "Hansson, David (August 7, 2006). ", "\"Ruby on Rails will ship with OS X 10.5 (Leopard)\"", ". Retrieved ", "2008-06-08", ".", "\u00a0", "\n", "^", " ", "Hansson, David (March 16, 2009). ", "\"Rails 2.3: Templates, Engines, Rack, Metal, much more!\"", ".", "\u00a0", "\n", "^", " ", "\"The day Merb joined Rails\"", ". 2008-12-27. Archived from ", "the original", " on 2013-02-09.", "\u00a0", "\n", "^", " ", "\"Ruby on Rails 3.0 Release Notes \u2014 Ruby on Rails Guides\"", ". ", "Edgeguides.rubyonrails.org", ". Retrieved ", "2017-05-24", ".", "\u00a0", "\n", "^", " ", "\"Ruby on Rails 3.0 goes modular\"", ". sdtimes.com. 2010-02-10", ". Retrieved ", "2010-08-06", ".", "\u00a0", "\n", "^", " ", "\"Ruby on Rails 3.1 Release Notes\"", ". 2012-09-01.", "\u00a0", "\n", "^", " ", "\"Ruby on Rails 3.2 Release Notes\"", ". 2012-09-01.", "\u00a0", "\n", "^", " ", "\"Rails/master is now 4.0.0.beta\"", ". 2012-09-01.", "\u00a0", "\n", "^", " ", "Rails 3.2.x is now compatible with Ruby 2.0.0 by sikachu \u00b7 Pull Request #9406 \u00b7 rails/rails \u00b7 GitHub", ". Github.com. Retrieved on 2014-05-30.", "\n", "^", " ", "\"Rails 4.0: Final version released! | Riding Rails\"", ". ", "Weblog.rubyonrails.org", ". 2013-06-25", ". Retrieved ", "2017-05-24", ".", "\u00a0", "\n", "^ ", "a", " ", "b", " ", "\"Rails 4.1.0: Spring, Variants, Enums, Mailer previews, secrets.yml\"", ". ", "weblog.rubyonrails.org", ".", "\u00a0", "\n", "^ ", "a", " ", "b", " ", "\"Rails 4.2: Active Job, Asynchronous Mails, Adequate Record, Web Console, Foreign Keys\"", ". ", "Ruby on Rails", ". Retrieved ", "5 Dec", " 2015", ".", "\u00a0", "\n", "^ ", "a", " ", "b", " ", "\"Rails 5.0: Action Cable, API mode, and so much more\"", ". ", "Ruby on Rails", ". Retrieved ", "19 Nov", " 2016", ".", "\u00a0", "\n", "^ ", "a", " ", "b", " ", "\"Rails 5.1: Loving JavaScript, System Tests, Encrypted Secrets, and more\"", ". ", "Ruby on Rails", ". Retrieved ", "10 May", " 2017", ".", "\u00a0", "\n", "^", " ", "\"Rails 1.0: Party like it's one oh oh!\"", ". Riding Rails. Retrieved June 9, 2010.", "\n", "^", " ", "\"Rails 1.2: REST admiration, HTTP lovefest, and UTF-8 celebrations\"", ". Riding Rails. Retrieved June 9, 2010.", "\n", "^", " ", "\"Rails 2.0: It's done!\"", ". Riding Rails. Retrieved June 9, 2010.", "\n", "^", " ", "Rails 2.1: Time zones, dirty, caching, gem dependencies, caching, etc", ". Riding Rails. Retrieved June 9, 2010.", "\n", "^", " ", "\"Rails 2.2: i18n, HTTP validators, thread safety, JRuby/1.9 compatibility, docs\"", ". Riding Rails. Retrieved June 9, 2010.", "\n", "^", " ", "\"Rails 2.3: Templates, Engines, Rack, Metal, much more!\"", ". Riding Rails. Retrieved June 9, 2010.", "\n", "^", " ", "\"Rails 3.0: It's ready!\"", ". Riding Rails. Retrieved August 30, 2010.", "\n", "^", " ", "\"bumping to 3.1.0\"", ". ", "Github.com", ".", "\u00a0", "\n", "^", " ", "\"Preparing for 3.2.0 release\"", ". ", "Github.com", ".", "\u00a0", "\n", "^", " ", "\"Rails 4 in 30", "'", "\"", ". ", "blog.wyeworks.com", ".", "\u00a0", "\n", "^", " ", "Sean Lynch (2007-12-15). ", "\"fairleads: Rails 2.0 and Scaffolding Step by Step\"", ". ", "Fairleads.blogspot.com", ". Retrieved ", "2017-05-24", ".", "\u00a0", "\n", "^", " ", "\"Archived copy\"", ". Archived from ", "the original", " on 2009-07-07", ". Retrieved ", "2012-12-03", ".", "\u00a0", "\n", "^", " ", "Maxcer, Chris. ", "\"PowerRuby Brings Enterprise Ruby on Rails Support to IBM i\"", ". iPro Developer. Archived from ", "the original", " on 9 October 2013", ". Retrieved ", "9 May", " 2014", ".", "\u00a0", "\n", "^", " ", "Js_Escape_Map. ", "\"ActionView::Helpers::JavaScriptHelper\"", ". ", "Api.rubyonrails.org", ". Retrieved ", "2017-05-24", ".", "\u00a0", "\n", "^", " ", "\"Rails 3.0: It's ready!\"", ". rubyonrails.org", ". Retrieved ", "2010-08-30", ". ", "Rails 3.0 has been designed to work with Ruby 1.8.7, Ruby 1.9.2, and JRuby 1.5.2+.", "\u00a0", "\n", "^", " ", "\"Rails 3.2.0.rc2 has been released!\"", ". ", "Weblog.rubyonrails.org", ". 2012-09-01.", "\u00a0", "\n", "^", " ", "\"Ruby on Rails: Download\"", ". RubyonRails.org. Archived from ", "the original", " on 2009-12-12.", "\u00a0", "\n", "^", " ", "\"Getting Started with Rails\"", ". Rubyonrails.org", ". Retrieved ", "2014-03-10", ".", "\u00a0", "\n", "^", " ", "\"", "\"", "Ruby on Rails\" Trademark Status\"", ". ", "USPTO", ". Retrieved ", "2007-08-01", ".", "\u00a0", "\n", "^", " ", "\"", "\"", "Rails\" Trademark Status\"", ". ", "USPTO", ". Retrieved ", "2007-08-01", ".", "\u00a0", "\n", "^", " ", "\"Rails Logo Trademark Status\"", ". ", "USPTO", ". Retrieved ", "2007-08-01", ".", "\u00a0", "\n", "^ ", "a", " ", "b", " ", "Forde, Pete (2007-07-23). ", "\"Beginning Rails: From Novice to Professional\"", ". Archived from ", "the original", " on August 5, 2007", ". Retrieved ", "2007-08-01", ".", "\u00a0", "\n", "^", " ", "Cooper, Peter (2007-07-24). ", "\"David Heinemeier Hansson says No to Use of Rails Logo\"", ". Retrieved ", "2007-08-01", ".", "\u00a0", "\n", "^", " ", "\"5 Question Interview with Twitter Developer Alex Payne\"", ". radicalbehavior.com. 2007-03-29. Archived from ", "the original", " on April 23, 2009", ". Retrieved ", "2014-11-04", ". ", "By various metrics Twitter is the biggest Rails site on the net right now. Running on Rails has forced us to deal with scaling issues - issues that any growing site eventually contends with \u2013 far sooner than I think we would on another framework.", "\u00a0", "\n", "^", " ", "Steve Jenson; Alex Payne & Robey Pointer interview (2009-04-03). ", "\"Twitter on Scala\"", ". artima.com", ". Retrieved ", "2009-07-18", ". ", "We had a Ruby-based queuing system that we used for communicating between the Rails front ends and the daemons, and we ended up replacing that with one written in Scala. The Ruby one actually worked pretty decently in a normal steady state, but the startup time and the crash behavior were undesirable.", "\u00a0", "\n", "^", " ", "\"Twitter jilts Ruby for Scala\"", ". theregister.co.uk. 2009-04-01", ". Retrieved ", "2009-07-18", ". ", "By the end of this year, Payne said, Twitter hopes to have its entire middleware infrastructure and its APIs ported to the new language. Ruby will remain, but only on the front end. \"We're still happy with Rails for building user facing features... performance-wise, it's fine for people clicking around web pages. It's the heavy lifting, asynchronous processing type of stuff that we've moved away from.\"", "\u00a0", "\n", "^", " ", "ryan king (2009-09-25). ", "\"Twitter on Ruby\"", ". evan weaver", ". Retrieved ", "2009-09-29", ". ", "We use Scala for a few things at Twitter, but the majority of the site is Ruby.", "\u00a0", "\n", "^", " ", "\"Twitter Search is Now 3x Faster\"", ". Twitter", ". Retrieved ", "June 6,", " 2014", ".", "\u00a0", "\n", "^", " ", "\"Here's Why Ruby On Rails Is Hot\"", ". Business Insider. Archived from ", "the original", " on December 21, 2011", ". Retrieved ", "February 10,", " 2012", ".", "\u00a0", "\n", "^", " ", "\"Ruby on Rails Usage Statistics\"", ". ", "trends.builtwith.com", ". Retrieved ", "2016-01-04", ".", "\u00a0", "\n", "^", " ", "\"Ruby on Rails Token Usage Statistics\"", ". ", "trends.builtwith.com", ". Retrieved ", "2016-01-04", ".", "\u00a0", "\n", "^", " ", "Protalinski, Emil. ", "\"How GitHub handled getting hacked\"", ". ", "Zdnet.com", ". Retrieved ", "2017-05-24", ".", "\u00a0", "\n", "^", " ", "Brook, Chris (2013-09-25). ", "\"Security Issue in Ruby on Rails Could Expose Cookies\"", ". ", "Threat Post", ". The Kaspersky Lab Security News Service", ". Retrieved ", "2014-06-04", ".", "\u00a0", "\n", "^", " ", "\"Patching up Web applications\"", ". ", "MIT News", ". Retrieved ", "2016-04-21", ".", "\u00a0", "\n", "\n", "\n", "Bibliography", "[", "edit", "]", "\n", "\n", "\n", "Ruby, Sam; Thomas, Dave; Hansson, David (March 28, 2009). ", "\"Agile Web Development with Rails\"", " (Third ed.). ", "Pragmatic Bookshelf", ": 850. ", "ISBN", "\u00a0", "1-934356-16-6", ".", "\u00a0", "\n", "Laurent, Simon St.; Dumbill, Edd (November 28, 2008). ", "\"Learning Rails\"", " (First ed.). ", "O'Reilly Media", ": 442. ", "ISBN", "\u00a0", "0-596-51877-3", ".", "\u00a0", "\n", "Lenz, Patrick (May 1, 2008). ", "\"Simply Rails 2\"", " (Second ed.). ", "SitePoint", ": 450. ", "ISBN", "\u00a0", "0-9804552-0-0", ".", "\u00a0", "\n", "Tate, Bruce; Hibbs, Curt (August 22, 2006). ", "\"Ruby on Rails: Up and Running\"", " (First ed.). ", "O'Reilly Media", ": 182. ", "ISBN", "\u00a0", "0-596-10132-5", ".", "\u00a0", "\n", "Holzner Ph.D., Steve (November 29, 2006). ", "\"Beginning Ruby on Rails\"", " (First ed.). ", "Wrox", ": 380. ", "ISBN", "\u00a0", "0-470-06915-5", ".", "\u00a0", "\n", "Allan Hardy, Jeffrey; Carneiro Jr, Cloves; Catlin, Hampton (July 20, 2007). ", "\"Beginning Ruby on Rails E-Commerce: From Novice to Professional\"", " (First ed.). ", "Wrox", ": 361. ", "ISBN", "\u00a0", "1-59059-686-2", ".", "\u00a0", "\n", "Clark, Mike (May 15, 2008). ", "\"Advanced Rails Recipes\"", " (First ed.). Pragmatic Bookshelf: 464. ", "ISBN", "\u00a0", "0-9787392-2-1", ".", "\u00a0", "\n", "\n", "\n", "External links", "[", "edit", "]", "\n", "\n", "\n", "\n", "Wikibooks has more on the topic of: ", "Ruby on Rails", "\n", "\n", "\n", "\n", "Official website", "\n", "The Rails Tutorial", " \u2013 The Ruby on Rails Tutorial book and screencast series teach you how to develop and deploy Ruby on Rails apps", "\n", "Rails source code", "\n", "Rails guides", "\n", "Rails API", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "v", "\n", "t", "\n", "e", "\n", "\n", "\n", "Ruby programming language", "\n", "\n", "\n", "\n", "Implementations", "\n", "\n", "\n", "\n", "\n", "Active", "\n", "\n", "\n", "\n", "Ruby MRI", " / ", "YARV", "\n", "mruby", "\n", "JRuby", "\n", "Rubinius", "\n", "MagLev", "\n", "RubyMotion", "\n", "\n", "\n", "\n", "\n", "\n", "Discontinued", "\n", "\n", "\n", "\n", "MacRuby", "\n", "IronRuby", "\n", "XRuby", "\n", "RubyJS", "\n", "HotRuby", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "IDE", "\n", "\n", "\n", "\n", "Komodo", "\n", "NetBeans", "\n", "RadRails", "\n", "RubyMine", "\n", "\n", "\n", "\n", "\n", "\n", "Applications", "\n", "\n", "\n", "\n", "Capistrano", "\n", "Chef", "\n", "Hackety Hack", "\n", "Homebrew", "\n", "Interactive Ruby Shell", "\n", "Pry", "\n", "Puppet", "\n", "Rake", "\n", "Redmine", "\n", "RSpec", "\n", "RubyGems", "\n", "RVM", "\n", "\n", "\n", "\n", "\n", "\n", "Libraries and frameworks", "\n", "\n", "\n", "\n", "Adhearsion", "\n", "Camping", "\n", "eRuby", " (RHTML)", "\n", "Merb", "\n", "Padrino", "\n", "RubyCocoa", "\n", "Ruby on Rails", "\n", "Shoes", "\n", "Sinatra", "\n", "QtRuby", "\n", "\n", "\n", "\n", "\n", "\n", "Server software", "\n", "\n", "\n", "\n", "mod_ruby", "\n", "Mongrel", "\n", "Phusion Passenger", " (mod_rails/mod_rack)", "\n", "Rack", "\n", "WEBrick", "\n", "\n", "\n", "\n", "\n", "\n", "People", "\n", "\n", "\n", "\n", "Yukihiro Matsumoto", "\n", "David Heinemeier Hansson", "\n", "why the lucky stiff", "\n", "\n", "\n", "\n", "\n", "\n", "Other", "\n", "\n", "\n", "\n", "Document format", "\n", "why's (poignant) Guide to Ruby", "\n", "Ruby Central", "\n", "RubyKaigi", "\n", "RubyForge", "\n", "Ruby License", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", " ", "Category", "\n", " ", "Commons", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "v", "\n", "t", "\n", "e", "\n", "\n", "\n", "Web frameworks", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "Comparison", "\n", "\n", "\n", "\n", "\n", "\n", "C++", "\n", "\n", "\n", "\n", "CppCMS", "\n", "Wt", "\n", "\n", "\n", "\n", "\n", "\n", "CLI", "\n", "\n", "\n", "\n", "ASP.NET", "\n", "\n", "Core", "\n", "AJAX", "\n", "Dynamic Data", "\n", "MVC", "\n", "Razor", "\n", "Web Forms", "\n", "\n", "\n", "DNN", "\n", "BFC", "\n", "MonoRail", "\n", "OpenRasta", "\n", "Umbraco", "\n", "\n", "\n", "\n", "\n", "\n", "ColdFusion", "\n", "\n", "\n", "\n", "CFWheels", "\n", "ColdBox Platform", "\n", "ColdSpring", "\n", "Fusebox", "\n", "Mach-II", "\n", "Model-Glue", "\n", "\n", "\n", "\n", "\n", "\n", "Common Lisp", "\n", "\n", "\n", "\n", "Caveman2", "\n", "CL-HTTP", "\n", "UnCommon Web", "\n", "Weblocks", "\n", "\n", "\n", "\n", "\n", "\n", "Haskell", "\n", "\n", "\n", "\n", "Happstack", "\n", "Yesod", "\n", "Snap", "\n", "\n", "\n", "\n", "\n", "\n", "Java", "\n", "\n", "\n", "\n", "AppFuse", "\n", "Flexive", "\n", "Grails", "\n", "GWT", "\n", "ICEfaces", "\n", "ItsNat", "\n", "JavaServer Faces", "\n", "JHipster", "\n", "Jspx", "\n", "JWt", "\n", "OpenXava", "\n", "Play", "\n", "Reasonable Server Faces", "\n", "Remote Application Platform", "\n", "RIFE", "\n", "Seam", "\n", "Sling", "\n", "Spring", "\n", "Stripes", "\n", "Struts", "\n", "Tapestry", "\n", "Vaadin", "\n", "Vert.x", "\n", "WebWork", "\n", "Wicket", "\n", "WaveMaker", "\n", "ZK", "\n", "\n", "\n", "\n", "\n", "\n", "JavaScript", "\n", "\n", "\n", "\n", "Ample SDK", "\n", "Angular", "/", "AngularJS", "\n", "Backbone.js", "\n", "Chaplin.js", "\n", "Closure", "\n", "Dojo Toolkit", "\n", "Ember.js", "\n", "Ext JS", "\n", "jQuery", "\n", "Meteor", "\n", "MooTools", "\n", "Node.js", "\n", "OpenUI5", "\n", "Prototype", "\n", "React", "\n", "Rico", "\n", "script.aculo.us", "\n", "Sencha Touch", "\n", "SproutCore", "\n", "Wakanda", "\n", "\n", "\n", "\n", "\n", "\n", "Perl", "\n", "\n", "\n", "\n", "Catalyst", "\n", "Dancer", "\n", "Mason", "\n", "Maypole", "\n", "Mojolicious", "\n", "WebGUI", "\n", "\n", "\n", "\n", "\n", "\n", "PHP", "\n", "\n", "\n", "\n", "CakePHP", "\n", "CodeIgniter", "\n", "Drupal", "\n", "Fat-Free", "\n", "FuelPHP", "\n", "Flow", "\n", "Gyroscope", "\n", "Horde", "\n", "Kohana", "\n", "Laravel", "\n", "Lithium", "\n", "Midgard", "\n", "MODX", "\n", "Nette", "\n", "Phalcon", "\n", "Pop PHP", "\n", "PRADO", "\n", "ProcessWire", "\n", "Qcodo", "\n", "Silex", "\n", "SilverStripe", "\n", "Symfony", "\n", "TYPO3", "\n", "Xaraya", "\n", "XOOPS", "\n", "Yii", "\n", "Zend Framework", "\n", "\n", "\n", "\n", "\n", "\n", "Python", "\n", "\n", "\n", "\n", "BlueBream", "\n", "CherryPy", "\n", "Django", "\n", "Flask", "\n", "Grok", "\n", "Nevow", "\n", "Pyjs", "\n", "Pylons", "\n", "Pyramid", "\n", "Quixote", "\n", "TACTIC", "\n", "Tornado", "\n", "TurboGears", "\n", "web2py", "\n", "Webware", "\n", "Zope 2", "\n", "\n", "\n", "\n", "\n", "\n", "Ruby", "\n", "\n", "\n", "\n", "Camping", "\n", "Merb", "\n", "Padrino", "\n", "Ruby on Rails", "\n", "Sinatra", "\n", "\n", "\n", "\n", "\n", "\n", "Scala", "\n", "\n", "\n", "\n", "Lift", "\n", "Play", "\n", "Scalatra", "\n", "\n", "\n", "\n", "\n", "\n", "Smalltalk", "\n", "\n", "\n", "\n", "AIDA/Web", "\n", "Seaside", "\n", "\n", "\n", "\n", "\n", "\n", "Other languages", "\n", "\n", "\n", "\n", "Vibe.d", " (", "D", ")", "\n", "Application Express", " (", "PL/SQL", ")", "\n", "Grails", " (", "Groovy", ")", "\n", "Kepler", " (", "Lua", ")", "\n", "Rocket", " (", "Rust", ")", "\n", "OpenACS", " (", "Tcl", ")", "\n", "Phoenix", " (", "Elixir", ")", "\n", "SproutCore", " (", "JavaScript", "-", "Ruby", ")", "\n", "Yaws", " (", "Erlang", ")", "\n", "\n", "\n", "\n", "\n", "\n", "\n\n\n", "\n", "\n", "\n", "\n"], "lastUpdated": " 29 December 2017, at 03:58."}, +{"title": "Ethereum", "text": ["\n", "\n", "Ethereum", "\n", "\n", "\n", "\n", "The Ethereum Project's logo", "\n", "\n", "\n", "\n", "Denominations", "\n", "\n", "\n", "Symbol", "\n", "\u039e", "\n", "\n", "\n", "Ticker symbol", "\n", "ETH", "\n", "\n", "\n", "\u2002", "\n", "Ether", "\n", "\n", "\n", "Development", "\n", "\n", "\n", "Original author(s)", "\n", "Vitalik Buterin, ", "Ethereum Foundation", "\n", "\n", "\n", "White paper", "\n", "[2]", "\n", "\n", "\n", "Implementation(s)", "\n", "GEth, Parity", "\n", "\n", "\n", "Initial release", "\n", "30\u00a0July 2015 ", "(2 years ago)", "\u00a0(", "2015-07-30", ")", "\n", "\n", "\n", "Written in", "\n", "C++", ", ", "Go", ", ", "Rust", "\n", "\n", "\n", "Operating System", "\n", "Clients available for ", "Linux", ", ", "Windows", ", ", "macOS", ", ", "POSIX", ", ", "Raspbian", "\n", "\n", "\n", "License", "\n", "GPLv3", ", ", "LGPLv", "3, ", "MIT", "[1]", "[2]", "\n", "\n", "\n", "Website", "\n", "ethereum", ".org", "\n", "\n", "\n", "Ledger", "\n", "\n", "\n", "Timestamping scheme", "\n", "Proof-of-work", "\n", "\n", "\n", "Hash function", "\n", "Ethash", "\n", "\n", "\n", "Block explorer", "\n", "ethstats", ".net", "\n", "\n", "\n", "Circulating supply", "\n", "\u039e96,939,025 (as of 12 January 2018", "[update]", ")", "\n", "\n", "\n", "Valuation", "\n", "\n", "\n", "Exchange rate", "\n", " ", "US$", "1,263.35\u00a0thousand", " (as of 12 January 2018", "[update]", ")", "\n", "\n", "\n", "Market cap", "\n", " ", "US$122,4\u00a0billion", " (as of 12 January 2018", "[update]", ")", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "Ethereum", " is an ", "open-source", ", public, ", "blockchain", "-based ", "distributed computing", " platform featuring ", "smart contract", " (scripting) functionality.", "[3]", " It provides a decentralized ", "Turing-complete", " ", "virtual machine", ", the Ethereum Virtual Machine (EVM), which can execute scripts using an international network of public nodes. Ethereum also provides a ", "cryptocurrency", " token called \"ether\", which can be transferred between accounts and used to compensate participant nodes for computations performed.", "[4]", " \"Gas\", an internal transaction pricing mechanism, is used to mitigate ", "spam", " and allocate resources on the network.", "[3]", "[5]", " Colloquially, ", "Ethereum", " also refers to a ", "cryptocurrency", " associated with the Ethereum platform, although the technically correct term for the currency is ", "Ether", ".", "\n", "Ethereum was proposed in late 2013 by ", "Vitalik Buterin", ", a ", "cryptocurrency", " researcher and programmer. Development was funded by an online ", "crowdsale", " that took place between July and August 2014. ", "[6]", " The system went live on 30 July 2015, with 11.9\u00a0million coins \"premined\" for the crowdsale.", "[7]", " This accounts for approximately 13 percent of the total circulating supply.", "\n", "In 2016, as a result of the collapse of ", "The DAO", " project, Ethereum was split into two separate blockchains \u2013 the new separate version became Ethereum (ETH), and the original continued as ", "Ethereum Classic", " (ETC).", "[8]", "[9]", "[10]", " The value of the Ethereum currency grew over 13,000 percent in 2017.", "[11]", "\n", "\n", "\n", "\n", "Contents", "\n", "\n", "\n", "1", " ", "Etymology", "\n", "2", " ", "History", "\n", "\n", "2.1", " ", "Milestones", "\n", "2.2", " ", "The DAO event", "\n", "2.3", " ", "Hard Forks", "\n", "\n", "\n", "3", " ", "Architecture", "\n", "\n", "3.1", " ", "Ether", "\n", "3.2", " ", "Ethereum Virtual Machine", "\n", "3.3", " ", "Smart contracts", "\n", "3.4", " ", "Performance", "\n", "3.5", " ", "Proposed uses", "\n", "\n", "\n", "4", " ", "Ecosystem", "\n", "\n", "4.1", " ", "Clients and wallets", "\n", "4.2", " ", "Decentralized applications", "\n", "4.3", " ", "Enterprise software", "\n", "\n", "4.3.1", " ", "Enterprise Ethereum Alliance (EEA)", "\n", "4.3.2", " ", "Permissioned ledgers", "\n", "\n", "\n", "\n", "\n", "5", " ", "Criticisms", "\n", "6", " ", "References", "\n", "7", " ", "External links", "\n", "\n", "\n", "\n", "Etymology", "[", "edit", "]", "\n", "Vitalik Buterin picked the name Ethereum after browsing Wikipedia articles about elements and science fiction, when he found the name, noting, \"I immediately realized that I liked it better than all of the other alternatives that I had seen; I suppose it was the fact that sounded nice and it had the word \"ether\", referring to the hypothetical invisible medium that permeates the universe and allows light to travel.\"", "[12]", "\n", "History", "[", "edit", "]", "\n", "Ethereum was initially described in a white paper by ", "Vitalik Buterin", ",", "[13]", " a programmer involved with ", "Bitcoin Magazine", ", in late 2013 with a goal of building decentralized applications.", "[14]", "[15]", " Buterin had argued that Bitcoin needed a ", "scripting language", " for application development. Failing to gain agreement, he proposed development of a new platform with a more general scripting language.", "[16]", ":", "88", "\n", "At the time of public announcement in January 2014, the core Ethereum team was Vitalik Buterin, Mihai Alisie, Anthony Di Iorio, and Charles Hoskinson.", "[17]", " Formal development of the Ethereum software project began in early 2014 through a ", "Swiss", " company, ", "Ethereum Switzerland GmbH", " (", "EthSuisse", ").", "[18]", "[19]", " Subsequently, a Swiss non-profit foundation, the Ethereum Foundation (", "Stiftung Ethereum", "), was created as well. Development was funded by an online public ", "crowdsale", " during July\u2013August 2014, with the participants buying the Ethereum value token (ether) with another digital currency, ", "bitcoin", ".", "[6]", " While there was early praise for the technical innovations of Ethereum, questions were also raised about its security and scalability.", "[14]", "\n", "Milestones", "[", "edit", "]", "\n", "Several codenamed prototypes of the Ethereum platform were developed by the Foundation, as part of their Proof-of-Concept series, prior to the official launch of the Frontier network. \"Olympic\" was the last of these prototypes, and public beta pre-release.", "[20]", "[21]", " The Olympic network provided users with a ", "bug bounty", " of 25,000 ether for stress testing the limits of the Ethereum blockchain. \"Frontier\" marked the tentative experimental release of the Ethereum platform in July 2015.", "[22]", "[23]", "\n", "\"Homestead\" was the first to be considered ", "stable", ".", "[24]", "[25]", " It includes improvements to transaction processing, gas pricing, and security.", "[26]", "[24]", "[27]", " Since the initial launch, Ethereum has undergone several planned protocol upgrades, which are important changes affecting the underlying functionality and/or ", "incentive structures", " of the platform.", "[28]", "[29]", "\n", "There are at least two other protocol upgrades planned in the future: \"Metropolis\" is intended to reduce the complexity of the EVM and provide more flexibility for smart contract developers.", "[29]", " Metropolis also adds supports for zkSnarks (from ", "Zcash", "); with the first zksnarks transaction occurring on testnet on September 19, 2017.", "[30]", " \"Serenity\" should include a fundamental change to Ethereum's consensus algorithm to enable a basic transition from hardware mining (", "proof-of-work", ") to virtual mining (", "proof-of-stake", ").", "[29]", "[31]", " Improvements to ", "scalability", ", specifically ", "sharding", ", are also said to be a key objective on the development roadmap.", "[32]", "[33]", "\n", "\n", "\n", "Version", "\n", "Code name", "\n", "Release date", "\n", "\n", "\n", "Old version, no longer supported:", " 0", "\n", "Olympic", "\n", "May, 2015", "\n", "\n", "\n", "Old version, no longer supported:", " 1", "\n", "Frontier", "\n", "30 July 2015", "\n", "\n", "\n", "Old version, no longer supported:", " 2", "\n", "Homestead", "\n", "14 March 2016", "\n", "\n", "\n", "Current stable version:", " ", "3", "\n", "Metropolis (vByzantium)", "\n", "16 October 2017", "\n", "\n", "\n", "Future release:", " 3.5", "\n", "Metropolis (vConstantinople)", "\n", "TBA", "[30]", "\n", "\n", "\n", "Future release:", " 4", "\n", "Serenity", "\n", "TBA", "\n", "\n", "\n", "\n", "\n", "Legend:", "\n", "Old version", "\n", "Older version, still supported", "\n", "Latest version", "\n", "Latest preview version", "\n", "Future release", "\n", "\n", "\n", "\n", "\n", "\n", "The DAO event", "[", "edit", "]", "\n", "In 2016 a ", "decentralized autonomous organization", " called ", "The DAO", ", a set of ", "smart contracts", " developed on the platform, raised a record ", "US$150 million", " in a ", "crowdsale", " to fund the project.", "[34]", " The DAO was exploited in June when ", "US$50 million", " in ether were claimed by an anonymous entity.", "[35]", "[36]", " The event sparked a debate in the crypto-community about whether Ethereum should perform a contentious \"hard fork\" to reappropriate the affected funds.", "[37]", " As a result of the dispute, the network split in two. Ethereum (the subject of this article) continued on the forked blockchain, while ", "Ethereum Classic", " continued on the original blockchain.", "[38]", " The hard fork created a rivalry between the two networks.", "[39]", "\n", "Hard Forks", "[", "edit", "]", "\n", "After the hard fork related to The DAO, Ethereum subsequently forked twice in the fourth quarter of 2016 to deal with other attacks.", "[40]", " By the end of November 2016, Ethereum had increased its ", "DDoS", " protection, de-bloated the blockchain, and thwarted further spam attacks by hackers.", "[27]", "\n", "Architecture", "[", "edit", "]", "\n", "Ether", "[", "edit", "]", "\n", "\n", "\n", "Ether", "\n", "\n", "\n", "Denominations", "\n", "\n", "\n", "Symbol", "\n", "\u039e or ETH", "\n", "\n", "\n", "Demographics", "\n", "\n", "\n", "User(s)", "\n", "Worldwide", "\n", "\n", "\n", "Issuance", "\n", "\n", "\n", "Currency type", "\n", "Cryptocurrency", "\n", "\n", "\n", "The value token of the Ethereum blockchain is called ether. It is listed under the code ETH and traded on ", "cryptocurrency", " exchanges, and the ", "Greek", " ", "uppercase Xi", " character (\u039e) is generally used for its ", "currency symbol", ". It is also used to pay for transaction fees and computational services on the Ethereum network.", "[41]", "\n", "The supply of Ether was projected to increase by 14.75% in 2017, with an algorithm in place to gradually decline to 1.59% by 2065.", "[42]", "[", "unreliable source?", "]", " However, a new implementation of Ethereum named \"Casper\" based on ", "proof of stake", " rather than ", "proof of work", " is expected to reduce the inflation rate to between 0.5% to 2%.", "[43]", "[44]", "\n", "Ethereum Virtual Machine", "[", "edit", "]", "\n", "The Ethereum Virtual Machine (EVM)", "[45]", "[46]", " is the runtime environment for smart contracts in Ethereum. The formal definition of the EVM is specified in the Ethereum Yellow Paper, original version by ", "Gavin Wood", ".", "[47]", "[", "better\u00a0source\u00a0needed", "]", "[48]", " It is sandboxed and also completely isolated from the network, filesystem or other processes of the host computer system. Every Ethereum node in the network runs an EVM implementation and executes the same instructions. Ethereum Virtual Machines have been implemented in ", "C++", ", ", "Go", ", ", "Haskell", ", ", "Java", ", ", "JavaScript", ", ", "Python", ", ", "Ruby", ", ", "Rust", ", and ", "WebAssembly", " (currently under development).", "[49]", "[50]", "\n", "Smart contracts", "[", "edit", "]", "\n", "Ethereum's ", "smart contracts", " are based on computer language, which developers use to program their own functionalities.", "[51]", " Smart contracts are ", "high-level", " programming ", "abstractions", " that are compiled down to EVM ", "bytecode", " and deployed to the Ethereum blockchain for execution. They can be written in ", "Solidity", " (a language library with similarities to ", "C", " and ", "JavaScript", "), Serpent (similar to ", "Python", "), LLL (a ", "low-level", " ", "Lisp", "-like language), and Mutan (", "Go", "-based, but deprecated). There is also a research-oriented language under development called Viper (a ", "strongly-typed", " ", "Python", "-derived ", "decidable language", ").", "[52]", "\n", "Smart contracts can be public, which opens up the possibility to prove functionality, e.g. self-contained ", "provably fair", " casinos.", "[53]", "\n", "One issue related to using smart contracts on a public blockchain is that bugs, including security holes, are visible to all but cannot be fixed quickly.", "[54]", " One example of this is the 17 June 2016 attack on The DAO, which could not be quickly stopped or reversed.", "[35]", "\n", "There is ongoing research on how to use formal verification to express and prove non-trivial properties. A ", "Microsoft Research", " report noted that writing solid smart contracts can be extremely difficult in practice, using The DAO hack to illustrate this problem. The report discussed tools that Microsoft had developed for verifying contracts, and noted that a large-scale analysis of published contracts is likely to uncover widespread vulnerabilities. The report also stated that it is possible to verify the equivalence of a Solidity program and the EVM code.", "[55]", "\n", "Performance", "[", "edit", "]", "\n", "In Ethereum all smart contracts are stored publicly on every node of the blockchain, which has trade-offs.", "[56]", " Being a ", "blockchain", " means it is\u00a0", "secure by design", "\u00a0and is an example of a distributed computing system with high\u00a0", "Byzantine fault tolerance", ". The downside is that performance issues arise in that every node is calculating all the smart contracts in real time, resulting in lower speeds.", "[56]", " As of January 2016, the Ethereum protocol could process 25 transactions per second.", "[56]", " On 19 December 2016, Ethereum exceeded one million transactions in a single day for the first time.", "[57]", "\n", "\n", "Micro Raiden was launched November 2017.", "[58]", "\n", "Buterin and Joseph Poon (a co-author of ", "Bitcoin", "'s lightning network whitepaper) announced in 2017 their plan to launch a scaling solution called Plasma which creates \"child\" blockchains to the \"main\" parent blockchain.", "[59]", " The plasma project is not without skeptics, specifically Vlad Zamfir (Ethereum's lead researcher on proof of stake) has publicly questioned the plasma project's viability.", "[59]", "\n", "Ethereum engineers have been working on ", "sharding", " the calculations, and the next step (called Ethereum 2) was presented at Devcon 3.", "[60]", "\n", "\n", "Ethereum's blockchain uses ", "Merkle Patricia trees", ", for security reasons, to improve scalability, and to optimize transaction hashing.", "[61]", "\n", "Proposed uses", "[", "edit", "]", "\n", "Many uses have been proposed for Ethereum platform, including ones that are impossible or unfeasible.", "[62]", "[63]", "[41]", " Use case proposals have included finance, the ", "internet-of-things", ", ", "farm-to-table", " produce, ", "electricity sourcing and pricing", ", and ", "sports betting", ".", "[41]", "[64]", " Ethereum is (as of 2017) the leading ", "blockchain", " platform for ", "initial coin offering", " projects, with over 50% market share.", "[65]", "\n", "Ecosystem", "[", "edit", "]", "\n", "The projects listed in this section are not exhaustive and may be outdated.", "\n", "Clients and wallets", "[", "edit", "]", "\n", "These ", "cryptocurrency wallets", " support Ethereum:", "\n", "\n", "Jaxx: Desktop wallet", "[66]", "\n", "KeepKey: Hardware wallet", "[67]", "\n", "Ledger Nano S: Hardware wallet", "[68]", "\n", "Mist: Desktop wallet", "[69]", "\n", "Blockchain Online and iOS/Android Wallet", "[70]", "\n", "Trust Wallet", "[71]", "\n", "TREZOR: Hardware wallet", "[72]", "\n", "\n", "Decentralized applications", "[", "edit", "]", "\n", "\n", "Digital signatures", " that ensure authenticity and proof of existence of documents: the ", "Luxembourg Stock Exchange", " has developed such a system", "[73]", "\n", "Slock.It", " is developing ", "smart locks", "[74]", "\n", "Digital tokens ", "pegged", " to ", "fiat currencies", ": Dai, stablecoin pegged to US dollar.", "[75]", " ", "Decentralized Capital.", "[76]", " Spanish bank ", "Santander", " is also involved in such a project", "[77]", ".", "\n", "Digital tokens ", "pegged", " to ", "gold", ": ", "Digix", "[6]", "[78]", "\n", "Improved ", "digital rights management", " for music: ", "Imogen Heap", " used the technology", "[79]", "\n", "Platforms for ", "prediction markets", ": ", "Augur", ", Gnosis", "[80]", "[81]", " Stox", "[82]", "[83]", "\n", "Platforms for ", "crowdfunding", ": ", "the DAO", "[84]", "[85]", "[34]", "\n", "Social media platforms with economic incentives: ", "Backfeed,", "[86]", " ", "Akasha", "[87]", "\n", "Decentralized marketplaces: ", "FreeMyVunk,", "[88]", " ", "Etheropt,", "[89]", " ", "TransActive Grid", "[90]", "\n", "Remittance: ", "Everex", "[91]", "\n", "Online ", "gambling", ": ", "Etheroll", "[92]", "\n", "Electric car charging management: RWE", "[93]", "\n", "Secure ", "identity systems", " for the Internet: ", "uPort", "[94]", "[95]", "\n", "Labour economics", ": ", "Blocklancer", ",", "[96]", " ", "Ethlance", "[97]", "\n", "Video Games", ": ", "Cryptokitties", " popularity in December 2017 caused the Ethereum network to slow down.", "[98]", "\n", "\n", "Enterprise software", "[", "edit", "]", "\n", "Ethereum-based customized software and networks, independent from the public Ethereum chain, are being tested by ", "enterprise software", " companies.", "[99]", " Interested parties include ", "Microsoft", ", ", "IBM", ", ", "JPMorgan Chase", ",", "[41]", "[100]", " ", "Deloitte", ",", "[101]", " ", "R3", ",", "[102]", " ", "Innovate UK", " (cross-border payments prototype).", "[103]", "[104]", " Barclays, UBS and Credit Suisse are experimenting with Ethereum blockchain to automate Markets in Financial Instruments Directive (MiFID) II requirements.", "[105]", "\n", "Enterprise Ethereum Alliance (EEA)", "[", "edit", "]", "\n", "In March 2017, various blockchain start-ups, research groups, and Fortune 500 companies announced the creation of the Enterprise Ethereum Alliance (EEA) with 30 founding members.", "[106]", " By May, the nonprofit organization had 116 enterprise members\u2014including ", "ConsenSys", ", ", "CME Group", ", ", "Cornell University's research group", ", ", "Toyota Research Institute", ", ", "Samsung SDS", ", ", "Microsoft", ", ", "Intel", ", ", "J.P. Morgan", ", ", "Cooley LLP", ", ", "Merck KGaA", ", ", "DTCC", ", ", "Deloitte", ", ", "Accenture", ", ", "Banco Santander", ", ", "BNY Mellon", ", ", "ING", ", and ", "National Bank of Canada", ".", "[107]", "[108]", "[109]", "\n", "The purpose of the EEA is to coordinate the engineering of an open-source reference standard and private \"permissioned\" version of the Ethereum blockchain that can address the common interests of enterprises in banking, management, consulting, automotive, pharmaceutical, health, technology, mobile, entertainment, and other industries, while working with developers from the Ethereum ecosystem. Certain members of the alliance have also indicated a desire to investigate and collaborate on hybrid architectures to potentially anchor private blockchains to the public Ethereum blockchain in the future, although concerns remain over the security, compliance, and regulations involved in bridging such permissioned and \"permissionless\" blockchains.", "[106]", "\n", "By July 2017, there were over 150 members in the alliance, including recent additions ", "MasterCard", ", ", "Cisco Systems", ", and ", "Scotiabank", ".", "[110]", "\n", "Permissioned ledgers", "[", "edit", "]", "\n", "Ethereum-based ", "permissioned blockchain", " variants are used and being investigated for various projects.", "\n", "\n", "J.P. Morgan Chase", " is developing a permissioned-variant of Ethereum blockchain dubbed \"Quorum.\"", "[111]", " It's designed to toe the line between private and public in the realm of shuffling derivatives and payments. The idea is to satisfy regulators who need seamless access to financial goings-on, while protecting the privacy of parties that don't wish to reveal their identities nor the details of their transactions to the general public.", "[112]", "\n", "Royal Bank of Scotland", " has announced that it has built a Clearing and Settlement Mechanism (CSM) based on the Ethereum distributed ledger and smart contract platform.", "[113]", "[114]", "\n", "\n", "Criticisms", "[", "edit", "]", "\n", "A finance blogger on ", "FT Alphaville", " has pointed out that criminals are using Ethereum to run ", "Ponzi schemes", " and other forms of investment fraud.", "[115]", " The article was based on a paper from the ", "University of Cagliari", ", which placed the number of Ethereum smart contracts which facilitate Ponzi schemes at nearly 10% of 1384 smart contracts examined. However, it also estimated that only 0.05% of the transactions on the network were related to such contracts.", "[116]", "\n", "References", "[", "edit", "]", "\n", "\n", "\n", "^", " ", "\"ethereum\"", ". ", "GitHub", ". Retrieved ", "11 January", " 2018", ".", "\u00a0", "\n", "^", " ", "\"Go Ethereum GitHub repository\"", ". ", "Archived", " from the original on 3 October 2016.", "\u00a0", "\n", "^ ", "a", " ", "b", " ", "Understanding Ethereum (Report). CoinDesk. 24 June 2016.", "\u00a0", "\n", "^", " ", "Cryptocurrencies: A Brief Thematic Review", " ", "Archived", " 25 December 2017 at the ", "Wayback Machine", ".. Social Science Research Network. Date accessed 28 august 2017.", "\n", "^", " ", "ConsenSys (23 June 2016). ", "\"Ethereum, Gas, Fuel, & Fees\"", ". ", "ConsenSys Media", ". ", "Archived", " from the original on 23 May 2017", ". Retrieved ", "15 January", " 2017", ".", "\u00a0", "\n", "^ ", "a", " ", "b", " ", "c", " ", "Aitken, Roger (23 April 2016). ", "\"Digital Gold 'Done Right' With DigixDAO Crypto-Trading on OpenLedger\"", ". ", "Forbes", ". ", "Archived", " from the original on 28 April 2016", ". Retrieved ", "28 April", " 2016", ".", "\u00a0", "\n", "^", " ", "etherchain.org. ", "\"Accounts - etherchain.org - The ethereum blockchain explorer\"", ". ", "www.etherchain.org", ". ", "Archived", " from the original on 7 August 2017", ". Retrieved ", "30 May", " 2017", ".", "\u00a0", "\n", "^", " ", "De Jesus, Cecille (19 July 2016). ", "\"The DAO Heist Undone: 97% of ETH Holders Vote for the Hard Fork\"", ". Futurism, LLC. ", "Archived", " from the original on 7 August 2017", ". Retrieved ", "16 May", " 2017", ".", "\u00a0", "\n", "^", " ", "Quentson, Andrew (17 July 2016). ", "\"Miners Vote Overwhelmingly in Support of Ethereum's Hardfork\"", ". Cryptocoinnews. ", "Archived", " from the original on 26 June 2017", ". Retrieved ", "14 May", " 2017", ".", "\u00a0", "\n", "^", " ", "Bradley, Miles (17 November 2016). ", "\"CoinDesk Research: Ethereum Hard Fork Had Little Impact on Sentiment\"", ". Coindesk. ", "Archived", " from the original on 8 July 2017", ". Retrieved ", "14 May", " 2017", ".", "\u00a0", "\n", "^", " ", "\"Ethereum hits a fresh record high and is up over 13,000% in a year\"", ". ", "CNBC", ". January 8, 2017.", "\u00a0", "\n", "^", " ", "Vitalik Buterin (2014). ", "\"So where did the name Ethereum come from?\"", ".", "\u00a0", "\n", "^", " ", "\"White Paper\u00b7 ethereum/wiki Wiki \u00b7 GitHub\"", ". ", "Archived", " from the original on 28 March 2015.", "\u00a0", "\n", "^ ", "a", " ", "b", " ", "Finley, Klint (27 January 2014). ", "\"Out in the Open: Teenage Hacker Transforms Web Into One Giant Bitcoin Network\"", ". ", "Wired", ". ", "Archived", " from the original on 18 March 2016", ". Retrieved ", "21 March", " 2016", ".", "\u00a0", "\n", "^", " ", "Schneider, Nathan (7 April 2014). ", "\"Code your own utopia: Meet Ethereum, bitcoin's most ambitious successor\"", ". Al Jazeera. ", "Archived", " from the original on 23 February 2016", ". Retrieved ", "21 February", " 2016", ".", "\u00a0", "\n", "^", " ", "Tapscott, Don; Tapscott, Alex (2016-05-07). ", "The Blockchain Revolution: How the Technology Behind Bitcoin is Changing Money, Business, and the World", ". Portfolio. ", "ISBN", "\u00a0", "978-0670069972", ".", "\u00a0", "\n", "^", " ", "Vitalik Buterin (23 January 2014). ", "\"Ethereum: Now Going Public\"", ". Archived from ", "the original", " on 2 March 2014.", "\u00a0", "\n", "^", " ", "Schmid, Valentin (10 May 2014). ", "\"The Entrepreneur: Joe Lubin, COO of Ethereum\"", ". ", "Epoch Times", ". ", "Archived", " from the original on 25 April 2016", ". Retrieved ", "31 March", " 2016", ".", "\u00a0", "\n", "^", " ", "\"Company Overview of Ethereum Switzerland GmbH\"", ". Bloomberg. 20 August 2016. ", "Archived", " from the original on 20 August 2016", ". Retrieved ", "20 August", " 2016", ". ", "The company was founded in 2014 and is based in Baar, Switzerland.", "\u00a0", "\n", "^", " ", "Buterin, Vitalik (9 May 2015). ", "\"Olympic: Frontier Pre-Release\"", ". Ethereum Foundation. ", "Archived", " from the original on 2 June 2017", ". Retrieved ", "5 June", " 2017", ".", "\u00a0", "\n", "^", " ", "Lombardo, Hans (17 May 2015). ", "\"Ethereum Debuts \"e\u03c0\" Ethereum-on-Raspberry Pi as Olympic Whirs before Frontier Release\"", ". Allcoinsnews. ", "Archived", " from the original on 20 August 2017", ". Retrieved ", "5 June", " 2017", ".", "\u00a0", "\n", "^", " ", "Gupta, Vinay (12 March 2015). ", "\"Getting to the Frontier\"", ". Ethereum Foundation. ", "Archived", " from the original on 8 May 2015", ". Retrieved ", "5 June", " 2015", ".", "\u00a0", "\n", "^", " ", "Vigna, Paul (31 July 2015). ", "\"BitBeat: Ethereum Opens Its 'Frontier' for Business\"", ". The Wall Street Journal. ", "Archived", " from the original on 6 September 2017", ". Retrieved ", "5 June", " 2017", ".", "\u00a0", "\n", "^ ", "a", " ", "b", " ", "\"Ethereum Homestead Documentation: The Homestead Release\"", ". Ethereum Foundation. n.d. ", "Archived", " from the original on 6 June 2017", ". Retrieved ", "5 June", " 2017", ".", "\u00a0", "\n", "^", " ", "Donnelly, Jacob (14 March 2016). ", "\"Ethereum Blockchain Project Launches First Production Release\"", ". CoindDesk. ", "Archived", " from the original on 6 June 2017", ". Retrieved ", "5 June", " 2017", ".", "\u00a0", "\n", "^", " ", "Wilcke, Jeffrey (29 February 2016). ", "\"Homestead Release\"", ". Ethereum Foundation. ", "Archived", " from the original on 3 June 2017", ". Retrieved ", "5 June", " 2017", ".", "\u00a0", "\n", "^ ", "a", " ", "b", " ", "Hertig, Alyssa (22 November 2016). ", "\"Ethereum's Fourth Blockchain Fork: So Far, So Good\"", ". CoinDesk. ", "Archived", " from the original on 27 May 2017", ". Retrieved ", "5 June", " 2017", ".", "\u00a0", "\n", "^", " ", "Gupta, Vinay (3 March 2015). ", "\"The Ethereum Launch Process\"", ". Ethereum Foundation. ", "Archived", " from the original on 6 June 2017", ". Retrieved ", "5 June", " 2017", ".", "\u00a0", "\n", "^ ", "a", " ", "b", " ", "c", " ", "Silva, Los (25 February 2017). ", "\"Ethereum's Road Map for 2017\"", ". ETHNews. ", "Archived", " from the original on 2 June 2017", ". Retrieved ", "5 June", " 2017", ".", "\u00a0", "\n", "^ ", "a", " ", "b", " ", "O'Leary, Rachel Rose (19 September 2017). ", "\"Ethereum's Byzantium Testnet Just Verified A Private Transaction\"", ". CoinDesk. ", "Archived", " from the original on 23 September 2017", ". Retrieved ", "24 September", " 2017", ".", "\u00a0", "\n", "^", " ", "Hertig, Alyssa (18 January 2017). ", "\"Where's Casper? Inside Ethereum's Race to Reinvent its Blockchain\"", ". CoinDesk. ", "Archived", " from the original on 30 May 2017", ". Retrieved ", "5 June", " 2017", ".", "\u00a0", "\n", "^", " ", "Hertig, Alyssa (n.d.). ", "\"How Will Ethereum Scale?\"", ". CoinDesk. ", "Archived", " from the original on 10 June 2017", ". Retrieved ", "5 June", " 2017", ".", "\u00a0", "\n", "^", " ", "Rizzo, Pete (19 September 2016). ", "\"Ethereum's Creator Proves Blockchain Scaling Vision is No Joke\"", ". CoinDesk. ", "Archived", " from the original on 6 June 2017", ". Retrieved ", "5 June", " 2017", ".", "\u00a0", "\n", "^ ", "a", " ", "b", " ", "Vigna, Paul (16 May 2016). ", "\"Chiefless Company Rakes in More than $100 Million\"", ". ", "Wall Street Journal", ". ", "Archived", " from the original on 25 June 2017", ". Retrieved ", "14 May", " 2017", ".", "\u00a0", "\n", "^ ", "a", " ", "b", " ", "Popper, Nathaniel (18 June 2016). ", "\"Hacker May Have Taken $50 Million From Cybercurrency Project\"", ". ", "The New York Times", ". ", "Archived", " from the original on 20 June 2017", ". Retrieved ", "14 May", " 2017", ".", "\u00a0", "\n", "^", " ", "Price, Rob (17 June 2016). ", "\"Digital Currency Ethereum is Cratering Amid Claims of a $50 Million Hack\"", ". ", "Business Insider", ". Business Insider. ", "Archived", " from the original on 11 June 2017", ". Retrieved ", "14 May", " 2017", ".", "\u00a0", "\n", "^", " ", "Peck, Morgan (19 July 2016). ", "\"", "\"", "Hard Fork\" Coming to Restore Ethereum Funds to Investors of Hacked DAO\"", ". ", "IEEE Spectrum: Technology, Engineering, and Science News", ". IEEE. ", "Archived", " from the original on 3 March 2017", ". Retrieved ", "14 May", " 2017", ".", "\u00a0", "\n", "^", " ", "\"What is Ethereum? | The Ultimate Beginners' Guide \u2013 CoinCentral\"", ". ", "coincentral.com", ". ", "Archived", " from the original on 11 September 2017", ". Retrieved ", "11 September", " 2017", ".", "\u00a0", "\n", "^", " ", "Hertig, Alyssa (28 July 2016). ", "\"Ethereum's Two Ethereums Explained\"", ". CoinDesk. ", "Archived", " from the original on 24 May 2017", ". Retrieved ", "15 May", " 2017", ".", "\u00a0", "\n", "^", " ", "Redman, Jamie (14 October 2016). ", "\"Ethereum to Hard Fork Two More Times Following Recent Attacks\"", ". ", "Bitcoin.com", ". Bitcoin.com. ", "Archived", " from the original on 2 November 2016", ". Retrieved ", "22 November", " 2016", ".", "\u00a0", "\n", "^ ", "a", " ", "b", " ", "c", " ", "d", " ", "Popper, Nathaniel (27 March 2016). ", "\"Ethereum, a Virtual Currency, Enables Transactions That Rival Bitcoin's\"", ". ", "New York Times", ". ", "Archived", " from the original on 24 July 2016", ". Retrieved ", "2 September", " 2016", ".", "\u00a0", "\n", "^", " ", "\"Spreadsheet of Ether inflation rate\"", ". ", "Presale", ". ", "Google Docs", ". Retrieved ", "2017-07-04", ".", "\u00a0", "\n", "^", " ", "Hertig, Alyssa (18 January 2017). ", "\"Where's Casper? Inside Ethereum's Race to Reinvent its Blockchain\"", ". CoinDesk. ", "Archived", " from the original on 27 June 2017", ". Retrieved ", "4 July", " 2017", ".", "\u00a0", "\n", "^", " ", "Buterin, Vitalik (27 June 2017). ", "\"Once Casper comes out, ~0.5-2% annual seems feasible. Once we add partial tx fee burning and if fees go up, may go to 0 or lower\"", ". ", "Twitter", ". ", "Archived", " from the original on 5 September 2017", ". Retrieved ", "4 July", " 2017", ".", "\u00a0", "\n", "^", " ", "\"What Is Ethereum?\u2014Ethereum Homestead 0.1 documentation\"", ". ", "ethdocs.org", ". ", "Archived", " from the original on 27 April 2017.", "\u00a0", "\n", "^", " ", "Dannen, Chris (2017). \"The EVM\". ", "Introducing Ethereum and Solidity: Foundations of Cryptocurrency and Blockchain Programming for Beginners", ". Apress. pp.\u00a047\u201367. ", "ISBN", "\u00a0", "9781484225356", ".", "\u00a0", "\n", "^", " ", "Ethereum Yellow Paper", " ", "Archived", " 18 February 2015 at the ", "Wayback Machine", ". by Gavin Wood", "\n", "^", " ", "Triantafyllidis, Nikolaos Petros (19 February 2016). \"The Ethereum Project: Ethereum History\". Developing an Ethereum Blockchain Application (Report). University of Amsterdam. p.\u00a020.", "\u00a0", "\n", "^", " ", "Dannen, Chris (27 March 2017). ", "\"Ethereum Devs Publish Roadmap for EVM Upgrade\"", ". CryptoNews. ", "Archived", " from the original on 25 December 2017.", "\u00a0", "\n", "^", " ", "\"Ethereum Client Implementations - EntEthAlliance - Confluence\"", ". ", "entethalliance.atlassian.net", ".", "\u00a0", "\n", "^", " ", "\"How Do Ethereum Smart Contracts Work?\"", ". ", "CoinDesk", ".", "\u00a0", "\n", "^", " ", "Rivlin, Brianne (14 November 2016). ", "\"Geth, Viper, and Wafr: New Ethereum Developments\"", ". ETHNews. ", "Archived", " from the original on 4 September 2017.", "\u00a0", "\n", "^", " ", "Piasecki, Piotr J. (2016). ", "\"Gaming Self-Contained Provably Fair Smart Contract Casinos\"", ". ", "Ledger", ". ", "1", ": 99\u2013110. ", "doi", ":", "10.5195/ledger.2016.29", ". ", "Archived", " from the original on 24 December 2016.", "\u00a0", "\n", "^", " ", "Peck, M. (28 May 2016). ", "\"Ethereum's $150-Million Blockchain-Powered Fund Opens Just as Researchers Call For a Halt\"", ". ", "IEEE Spectrum", ". ", "Institute of Electrical and Electronics Engineers", ". ", "Archived", " from the original on 30 May 2016.", "\u00a0", "\n", "^", " ", "\"Short Paper: Formal Verification of Smart Contracts\"", " ", "(PDF)", ". ", "microsoft.com/", ". Microsoft. Archived from ", "the original", " ", "(PDF)", " on 27 August 2016", ". Retrieved ", "25 August", " 2016", ".", "\u00a0", "\n", "^ ", "a", " ", "b", " ", "c", " ", "Allison, Ian (25 January 2016). ", "\"How are banks actually going to use blockchains and smart contracts?\"", ". ", "International Business Times", ". ", "Archived", " from the original on 8 May 2016", ". Retrieved ", "4 May", " 2016", ".", "\u00a0", "\n", "^", " ", "Filiba, Jack. ", "\"Ethereum Breaks One Million Transactions in a Single Day\"", ". ", "Archived", " from the original on 22 December 2017.", "\u00a0", "\n", "^", " ", "Higgins, Stan. ", "\"", "'", "Microraiden' Payment Channels Go Live on Ethereum Network\"", ". ", "Archived", " from the original on 22 December 2017.", "\u00a0", "\n", "^ ", "a", " ", "b", " ", "Hertig, Alyssa (12 August 2017). ", "\"Ethereum + Lightning? Buterin and Poon Unveil 'Plasma' Scaling Plan\"", ". CoinDesk. ", "Archived", " from the original on 24 August 2017", ". Retrieved ", "23 August", " 2017", ".", "\u00a0", "\n", "^", " ", "Galeon, Dom. ", "\"Ethereum's Co-Founder Just Unveiled His Plan for the Future of Cryptocurrency\"", ". ", "Archived", " from the original on 9 November 2017.", "\u00a0", "\n", "^", " ", "Vitalik Buterin. ", "\"Merkling in Ethereum\"", ". ", "Ethereum.org", ".", "\u00a0", "\n", "^", " ", "Greenspan, Gideon (17 April 2016). ", "\"Why Many Smart Contract Use Cases Are Simply Impossible - CoinDesk\"", ". ", "CoinDesk", ". ", "Archived", " from the original on 7 August 2017.", "\u00a0", "\n", "^", " ", "\"This Is Your Company on Blockchain\"", ". ", "Bloomberg Businessweek", ". ", "Archived", " from the original on 14 September 2016", ". Retrieved ", "14 September", " 2016", ".", "\u00a0", "\n", "^", " ", "Bordet, Juli\u00e1n (21 March 2016). ", "\"Decentralized Autonomous Organizations: Ethereum Sparks Up Googles of Tomorrow\"", ". ", "The Cointelegraph", ". ", "Archived", " from the original on 27 June 2016", ". Retrieved ", "21 July", " 2016", ".", "\u00a0", "\n", "^", " ", "\"ICO Market Research: The Leading Blockchain Platforms Of 2017 - ICO Watch List Blog\"", ". ", "ICO Watch List Blog", ". 17 August 2017. ", "Archived", " from the original on 17 August 2017", ". Retrieved ", "20 August", " 2017", ".", "\u00a0", "\n", "^", " ", "Redman, Jamie (13 February 2016). ", "\"Jaxx: The New Fleet of Bitcoin & Ethereum Wallets\"", ". Saint Bitts LLC. ", "Archived", " from the original on 5 August 2017.", "\u00a0", "\n", "^", " ", "Silva, Los (23 November 2016). ", "\"KeepKey Hard Wallet Supports Ethereum\"", ". ETHNews. ", "Archived", " from the original on 19 February 2017.", "\u00a0", "\n", "^", " ", "Faife, Corin (26 November 2016). ", "\"Ledger Launches Hardware Wallet for the Smart Contract Era\"", ". CoinDesk. ", "Archived", " from the original on 30 June 2017.", "\u00a0", "\n", "^", " ", "\"A Review of The Best Ethereum Wallets\"", ". ", "Archived", " from the original on 26 March 2017.", "\u00a0", "\n", "^", " ", "\"Blockchain Digital Wallet\"", ".", "\u00a0", "\n", "^", " ", "\"Trust Wallet\"", ".", "\u00a0", "\n", "^", " ", "\"TREZOR integration with MyEtherWallet\"", ". 3 February 2017.", "\u00a0", "\n", "^", " ", "\"Luxembourg Stock Exchange introduces blockchain into reporting service\"", ". 2016-10-18", ". Retrieved ", "2016-11-04", ".", "\u00a0", "\n", "^", " ", "Allison, Ian. ", "\"Ethereum-based Slock.it reveals first ever lock opened with money\"", ". ", "International Business Times UK", ". ", "Archived", " from the original on 2 April 2016.", "\u00a0", "\n", "^", " ", "Prince, Eliot. ", "\"MakerDAO Launches New Dai Stablecoin on the Ethereum Blockchain\"", ". ", "Cryptoslate", ".", "\u00a0", "\n", "^", " ", "Allison, Ian (12 September 2016). ", "\"Decentralized Capital issuing fiat-backed digital assets on the Ethereum blockchain\"", ". ", "International Business Times", ". ", "Archived", " from the original on 18 September 2016.", "\u00a0", "\n", "^", " ", "\"Santander Confirms Fiat-backed Token Project on Ethereum Blockchain\"", ". ", "CoinTelegraph", ". ", "Archived", " from the original on 17 December 2016", ". Retrieved ", "15 January", " 2017", ".", "\u00a0", "\n", "^", " ", "Buntinx, JP (28 April 2016). ", "\"DigixDAO DGD Assets To Be Listed on OpenLedger\"", ". The Merkle. ", "Archived", " from the original on 2 June 2016", ". Retrieved ", "29 May", " 2016", ".", "\u00a0", "\n", "^", " ", "Allison, Ian (4 October 2015). ", "\"Imogen Heap shows how smart music contracts work using Ethereum\"", ". ", "International Business Times", ". ", "Archived", " from the original on 21 March 2016", ". Retrieved ", "24 March", " 2016", ".", "\u00a0", "\n", "^", " ", "\"Ethereum Prediction Market Service Takes First Steps With Beta Launch - CoinDesk\"", ". ", "CoinDesk", ". 17 August 2016. ", "Archived", " from the original on 7 February 2017", ". Retrieved ", "6 February", " 2017", ".", "\u00a0", "\n", "^", " ", "\"ICO Roundup 2017 by Cointelegraph: Cashing In On Blockchain Apps' Mainstream Year\"", ". ", "CoinTelegraph", ". ", "Archived", " from the original on 7 February 2017", ". Retrieved ", "6 February", " 2017", ".", "\u00a0", "\n", "^", " ", "\"Stox Prediction Platform Closes ICO after One Day; Raises over $30 Million\"", ". CryptoCoinsNews. 2 August 2017. ", "Archived", " from the original on 29 September 2017", ". Retrieved ", "17 November", " 2017", ".", "\u00a0", "\n", "^", " ", "[1]", "[", "dead link", "]", "\n", "^", " ", "Rennie, Ellie (12 May 2016). ", "\"The radical DAO experiment\"", ". ", "Swinburne News", ". Swinburne University of Technology. ", "Archived", " from the original on 16 May 2016", ". Retrieved ", "12 May", " 2016", ". ", "When it reaches the end of the funding phase on 28 May, it will begin contracting blockchain-based start-ups to create innovative technologies. The extraordinary thing about The DAO is that no single entity owns it, and it has no conventional management structure or board of directors.", "\u00a0", "\n", "^", " ", "Allison, Ian (30 April 2016). ", "\"Ethereum reinvents companies with launch of The DAO\"", ". ", "International Business Times", ". ", "Archived", " from the original on 1 May 2016", ". Retrieved ", "1 May", " 2016", ".", "\u00a0", "\n", "^", " ", "Weinglass, Simona (19 August 2015). ", "\"Backfeed wants to decentralize the Internet and help you earn what you deserve\"", ". Geektime.com. ", "Archived", " from the original on 14 March 2016", ". Retrieved ", "24 March", " 2016", ".", "\u00a0", "\n", "^", " ", "CFA, Adam Hayes, (3 February 2017). ", "\"This New Social Network is Powered by Ethereum Technology\"", ". ", "Investopedia", ". ", "Archived", " from the original on 6 February 2017", ". Retrieved ", "6 February", " 2017", ".", "\u00a0", "\n", "^", " ", "Allison, Ian (22 December 2015). ", "\"Game-changers FreeMyVunk and Digix allow video gamers to trade virtual assets for physical gold\"", ". ", "International Business Times", ". ", "Archived", " from the original on 17 March 2016", ". Retrieved ", "24 March", " 2016", ".", "\u00a0", "\n", "^", " ", "\"Decentralized Options Exchange Etheropt Uses Automated Ethereum Smart Contract\"", ". ", "Archived", " from the original on 8 January 2017.", "\u00a0", "\n", "^", " ", "Rutkin, Aviva (2 March 2016). ", "\"Blockchain-based microgrid gives power to consumers in New York\"", ". ", "New Scientist", ". ", "Archived", " from the original on 22 March 2016", ". Retrieved ", "24 March", " 2016", ".", "\u00a0", "\n", "^", " ", "Mizrahi, Avi (1 December 2016). ", "\"Everex Helps Migrant Workers Send Remittance Back to Myanmar via Ethereum\"", ". ", "Finance Magnates", ". ", "Archived", " from the original on 20 December 2016", ". Retrieved ", "14 December", " 2016", ".", "\u00a0", "\n", "^", " ", "Bitcoinist. ", "\"Ethereum Dice Game Etheroll Announces Crowdfund Opening Feb. 13\"", ". ", "bitcoinist.com", ". ", "Archived", " from the original on 19 August 2017", ". Retrieved ", "18 August", " 2017", ".", "\u00a0", "\n", "^", " ", "Higgins, Stan. ", "\"Why a German Power Company is Using Ethereum to Test Blockchain Car Charging\"", ". ", "CoinDesk", ". ", "Archived", " from the original on 2 July 2017", ". Retrieved ", "2 May", " 2017", ".", "\u00a0", "\n", "^", " ", "EconoTimes. ", "\"ConsenSys uPort wins International Blockchain Summit - EconoTimes\"", ". ", "EconoTimes", ". ", "Archived", " from the original on 8 February 2017", ". Retrieved ", "6 February", " 2017", ".", "\u00a0", "\n", "^", " ", "Allison, Ian (23 September 2016). ", "\"ConsenSys uPort scoops first prize in International Blockchain Summit Demo Day\"", ". ", "International Business Times UK", ". ", "Archived", " from the original on 8 February 2017", ". Retrieved ", "6 February", " 2017", ".", "\u00a0", "\n", "^", " ", "Tkatchuk, Ralph (20 November 2017). ", "\"Can Blockchain Supercharge the Gig Economy?\"", ". ", "Dataconomy", ". ", "Archived", " from the original on 20 November 2017.", "\u00a0", "\n", "^", " ", "Gebron, Hunter (12 February 2017). ", "\"Ethlance and the Rise of the On-Demand Economy\"", ". ", "Archived", " from the original on 1 December 2017.", "\u00a0", "\n", "^", " ", "\"CryptoKitties craze slows down transactions on Ethereum\"", ". 12 May 2017.", "\u00a0", "\n", "^", " ", "\"Big Business Giants From Microsoft to J.P. Morgan Are Getting Behind Ethereum\"", ". ", "Fortune", ". ", "Archived", " from the original on 29 September 2017", ". Retrieved ", "8 November", " 2017", ".", "\u00a0", "\n", "^", " ", "\"Hyperledger blockchain code almost comes together for IoT\"", ". Rethink Research. ", "Archived", " from the original on 16 August 2016", ". Retrieved ", "23 April", " 2016", ".", "\u00a0", "\n", "^", " ", "Allison, Ian (3 May 2016). ", "\"Deloitte to build Ethereum-based 'digital bank' with New York City's ConsenSys\"", ". ", "International Business Times", ". ", "Archived", " from the original on 6 May 2016.", "\u00a0", "\n", "^", " ", "Allison, Ian (20 January 2016). ", "\"R3 connects 11 banks to distributed ledger using Ethereum and Microsoft Azure\"", ". ", "International Business Times", ". ", "Archived", " from the original on 23 February 2016", ". Retrieved ", "23 February", " 2016", ".", "\u00a0", "\n", "^", " ", "\"UK Government Awards \u00a3248k for Ethereum Prototype\"", ". ", "CoinDesk", ". ", "Archived", " from the original on 5 June 2016.", "\u00a0", "\n", "^", " ", "\"Settlement using blockchain to Automate Foreign Exchange in a Regulated environment (SAFER)\"", ". ", "Innovate UK", ". ", "Archived", " from the original on 4 May 2016.", "\u00a0", "\n", "^", " ", "\"Barclays, UBS, Credit Suisse Seek Ethereum Blockchain Solution For MiFID II Regulations\"", ". ", "ETHNews.com", ". Retrieved ", "2017-12-29", ".", "\u00a0", "\n", "^ ", "a", " ", "b", " ", "Popper, Nathaniel (27 February 2017). ", "\"Business Giants to Announce Creation of a Computing System Based on Ethereum\"", ". ", "New York Times", ". ", "Archived", " from the original on 20 June 2017", ". Retrieved ", "5 June", " 2017", ".", "\u00a0", "\n", "^", " ", "Peck, Morgan (2 March 2017). ", "\"Corporate Titans Unite to Build an Enterprise Version of the Ethereum Blockchain\"", ". Institute of Electrical and Electronics Engineers (IEEE). ", "Archived", " from the original on 17 June 2017", ". Retrieved ", "5 June", " 2017", ".", "\u00a0", "\n", "^", " ", "\"Enterprise Ethereum Alliance expands dramatically announcing 86 new members\"", " ", "(PDF)", " (Press release). Enterprise Ethereum Alliance (EEA). 19 May 2017. ", "Archived", " ", "(PDF)", " from the original on 7 June 2017", ". Retrieved ", "5 June", " 2017", ".", "\u00a0", "\n", "^", " ", "Shin, Laura (22 May 2017). ", "\"Ethereum Enterprise Alliance Adds 86 New Members Including DTCC, State Street And Infosys\"", ". Forbes. ", "Archived", " from the original on 22 May 2017", ". Retrieved ", "22 May", " 2017", ".", "\u00a0", "\n", "^", " ", "https://www.inc.com/brian-d-evans/the-enterprise-ethereum-alliance-just-got-a-whole-.html", "\n", "^", " ", "\"JP Morgan's Quorum blockchain powers new correspondent banking network \" Banking Technology\"", ". ", "www.bankingtech.com", ". ", "Archived", " from the original on 9 November 2017", ". Retrieved ", "8 November", " 2017", ".", "\u00a0", "\n", "^", " ", "Hacket, Robert. ", "\"Why J.P. Morgan Chase Is Building a Blockchain on Ethereum\"", ". ", "Fortune", ". ", "Archived", " from the original on 2 February 2017.", "\u00a0", "\n", "^", " ", "\"Proving Ethereum for the Clearing Use Case\"", " ", "(PDF)", ". ", "Archived", " ", "(PDF)", " from the original on 10 October 2016.", "\u00a0", "\n", "^", " ", "Allison, Ian (7 December 2016). ", "\"Blockchain: RBS builds Ethereum-based distributed clearing house\"", ". ", "IB Times", ". ", "Archived", " from the original on 13 April 2017", ". Retrieved ", "8 May", " 2017", ".", "\u00a0", "\n", "^", " ", "Kaminska, Izabella (1 June 2017). ", "\"It's not a ponzi, it's a smart ponzi\"", ". ", "FT Alphaville", ". ", "Archived", " from the original on 23 July 2017.", "\u00a0", "\n", "^", " ", "Bartoletti, Carta; et al. ", "\"Dissecting Ponzi schemes on Ethereum: identification, analysis, and impact\"", " ", "(PDF)", ". Universita di Cagliari. ", "Archived", " ", "(PDF)", " from the original on 17 August 2017", ". Retrieved ", "30 July", " 2017", ".", "\u00a0", "CS1 maint: Explicit use of et al. (", "link", ")", "\n", "\n", "\n", "External links", "[", "edit", "]", "\n", "\n", "\n", "\n", "Wikimedia Commons has media related to ", "Ethereum", ".", "\n", "\n", "\n", "\n", "Official website", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "v", "\n", "t", "\n", "e", "\n", "\n", "\n", "Cryptocurrencies", "\n", "\n", "\n", "\n", "SHA-256", "-based", "\n", "\n", "\n", "\n", "Bitcoin", "\n", "Bitcoin Cash", "\n", "Factom", "\n", "Namecoin", "\n", "NuBits", "\n", "Peercoin", "\n", "Titcoin", "\n", "\n", "\n", "\n", "\n", "\n", "Scrypt", "-based", "\n", "\n", "\n", "\n", "Auroracoin", "\n", "Dogecoin", "\n", "Litecoin", "\n", "PotCoin", "\n", "\n", "\n", "\n", "\n", "\n", "Zerocoin", "-based", "\n", "\n", "\n", "\n", "Zcash", "\n", "Zcoin", "\n", "Zclassic", "\n", "ZeroVert", "\n", "Bitcoin Gold", "\n", "\n", "\n", "\n", "\n", "\n", "CryptoNote", "-based", "\n", "\n", "\n", "\n", "Boolberry", "\n", "Bytecoin", "\n", "Monero", "\n", "\n", "\n", "\n", "\n", "\n", "Ethash", "-based", "\n", "\n", "\n", "\n", "Ethereum", "\n", "Ethereum Classic", "\n", "KodakCoin", "\n", "Ubiq", "\n", "\n", "\n", "\n", "\n", "\n", "Other ", "proof-of-work", "\n", "\n", "\n", "\n", "Dash", "\n", "Decred", "\n", "DigiByte", "\n", "IOTA", "\n", "Myriadcoin", "\n", "Primecoin", "\n", "Sia", "\n", "Zerocash", "\n", "\n", "\n", "\n", "\n", "\n", "Non ", "proof-of-work", "\n", "\n", "\n", "\n", "Ardor", "\n", "BitShares", "\n", "BlackCoin", "\n", "Burstcoin", "\n", "Cardano", "\n", "Counterparty", "\n", "Enigma", "\n", "FunFair", "\n", "Gridcoin", "\n", "Lisk", "\n", "Melonport", "\n", "NEM", "\n", "NEO", "\n", "Nxt", "\n", "OmiseGO", "\n", "Polkadot", "\n", "Qtum", "\n", "RChain", "\n", "Ripple", "\n", "Shadow", "\n", "Simple Token", "\n", "Stellar", "\n", "Steem", "\n", "Waves Platform", "\n", "\n", "\n", "\n", "\n", "\n", "Consensus", " mechanisms", "\n", "\n", "\n", "\n", "Proof-of-authority", "\n", "Proof-of-space", "\n", "Proof-of-stake", "\n", "Proof-of-work system", "\n", "\n", "\n", "\n", "\n", "\n", "Technology", "\n", "\n", "\n", "\n", "Blockchain", "\n", "Fork", "\n", "Cryptocurrency tumbler", "\n", "Zerocoin", "\n", "Lightning Network", "\n", "Atomic swap", "\n", "\n", "\n", "\n", "\n", "\n", "Related topics", "\n", "\n", "\n", "\n", "Anonymous Internet banking", "\n", "Bitcoin network", "\n", "Complementary currency", "\n", "Crypto-anarchism", "\n", "Cryptocurrency exchange", "\n", "Digital currency", "\n", "Double-spending", "\n", "Electronic money", "\n", "Initial coin offering", "\n", "Airdrop", "\n", "Virtual currency", "\n", "Crypto Valley", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", " ", "Category", "\n", " ", "Commons", "\n", " ", "List", "\n", "\n", "\n", "\n", "\n", "\n", "\n\n\n", "\n", "\n", "\n", "\n"], "lastUpdated": " 20 January 2018, at 06:38."}, +{"title": "Laravel", "text": ["\n", "\n", "\n", "\n", "\n", "\n", "\n", "This article has multiple issues.", " Please help ", "improve it", " or discuss these issues on the ", "talk page", ". ", "(", "Learn how and when to remove these template messages", ")", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "This article ", "relies too much on ", "references", " to ", "primary sources", ". ", "Please improve this by adding ", "secondary or tertiary sources", ".", " ", "(September 2015)", " ", "(", "Learn how and when to remove this template message", ")", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "Some of this article's ", "listed sources", " ", "may not be ", "reliable", ". ", "Please help this article by looking for better, more reliable sources. Unreliable citations may be challenged or deleted.", " ", "(September 2015)", " ", "(", "Learn how and when to remove this template message", ")", "\n", "\n", "\n", "\n", "\n", "\n", "(", "Learn how and when to remove this template message", ")", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "This article ", "has an unclear citation style", ". ", "The references used may be made clearer with a different or consistent style of ", "citation", ", ", "footnoting", ", or ", "external linking", ". ", "Violates Wikipedia:External links: \"Wikipedia articles may include links to web pages outside Wikipedia (external links), but they should not normally be used in the body of an article.\".", " ", "(November 2017)", " ", "(", "Learn how and when to remove this template message", ")", "\n", "\n", "\n", "\n", "\n", "Laravel", "\n", "\n", "\n", "\n", "\n", "Developer(s)", "\n", "Taylor Otwell", "\n", "\n", "\n", "Initial release", "\n", "June\u00a02011", "; 6\u00a0years ago", "\u00a0(", "2011-06", ")", "[1]", "\n", "\n", "\n", "\n", "\n", "\n", "Stable release", "\n", "\n", "5.5.0", "[2]", " / August\u00a030, 2017", "; 4 months ago", "\u00a0(", "2017-08-30", ")", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "Repository", "\n", "\n", "\n", "\n", "https://github.com/laravel/framework", "\n", "\n", "\n", "\n", "\n", "\n", "Development status", "\n", "Active", "\n", "\n", "\n", "Written in", "\n", "PHP", "\u00a07", "[a]", "\n", "\n", "\n", "Operating system", "\n", "Cross-platform", "\n", "\n", "\n", "Type", "\n", "Web framework", "\n", "\n", "\n", "License", "\n", "MIT License", "\n", "\n", "\n", "Website", "\n", "laravel", ".com", "\n", "\n", "\n", "Laravel", " is a ", "free", ", open-source", "[4]", " PHP ", "web framework", ", created by Taylor Otwell and intended for the development of web applications following the ", "model\u2013view\u2013controller", " (MVC) ", "architectural pattern", ". Some of the features of Laravel are a modular ", "packaging system", " with a dedicated dependency manager, different ways for accessing ", "relational databases", ", utilities that aid in ", "application deployment", " and maintenance, and its orientation toward ", "syntactic sugar", ".", "[5]", "[6]", ":", "2,5\u20139", "[7]", "[8]", "\n", "As of March 2015", "[update]", ", Laravel is regarded as one of the most popular ", "PHP", " frameworks, together with ", "Symfony", ", Zend, ", "CodeIgniter", ", ", "Yii2", " and others.", "[6]", ":", "1", "[9]", "\n", "The ", "source code", " of Laravel is hosted on ", "GitHub", " and licensed under the terms of ", "MIT License", ".", "[10]", "\n", "\n", "\n", "\n", "Contents", "\n", "\n", "\n", "1", " ", "History", "\n", "\n", "1.1", " ", "Release history", "\n", "\n", "\n", "2", " ", "Features", "\n", "\n", "2.1", " ", "Featured packages", "\n", "2.2", " ", "Artisan CLI", "\n", "\n", "\n", "3", " ", "Conferences", "\n", "4", " ", "Laravel Partners", "\n", "5", " ", "See also", "\n", "6", " ", "Notes", "\n", "7", " ", "References", "\n", "8", " ", "Further reading", "\n", "9", " ", "External links", "\n", "\n", "\n", "\n", "History", "[", "edit", "]", "\n", "Taylor Otwell created Laravel as an attempt to provide a more advanced alternative to the CodeIgniter framework, which did not provide certain features such as built-in support for user ", "authentication", " and ", "authorization", ". Laravel's first ", "beta release", " was made available on June 9, 2011, followed by the Laravel\u00a01 release later in the same month. Laravel\u00a01 included built-in support for authentication, ", "localisation", ", ", "models", ", ", "views", ", ", "sessions", ", routing and other mechanisms, but lacked support for ", "controllers", " that prevented it from being a true ", "MVC", " framework.", "[1]", "\n", "Laravel\u00a02 was released in September 2011, bringing various improvements from the author and community. Major new features included the support for controllers, which made Laravel\u00a02 a fully MVC-compliant framework, built-in support for the ", "inversion of control", " (IoC) principle, and a ", "templating system", " called ", "Blade", ". As a downside, support for third-party ", "packages", " was removed in Laravel\u00a02.", "[1]", "\n", "Laravel\u00a03 was released in February 2012 with a set of new features including the ", "command-line interface", " (CLI) named ", "Artisan", ", built-in support for more ", "database management systems", ", database migrations as a form of ", "version control", " for database layouts, support for handling ", "events", ", and a packaging system called ", "Bundles", ". An increase of Laravel's userbase and popularity lined up with the release of Laravel\u00a03.", "[1]", "\n", "Laravel\u00a04, codenamed ", "Illuminate", ", was released in May 2013. It was made as a complete rewrite of the Laravel framework, migrating its layout into a set of separate packages distributed through ", "Composer", ", which serves as an ", "application-level package manager", ". Such a layout improved the extensibility of Laravel\u00a04, which was paired with its official regular release schedule spanning six months between minor ", "point releases", ". Other new features in the Laravel\u00a04 release include ", "database seeding", " for the initial population of databases, support for ", "message queues", ", built-in support for sending different types of email, and support for delayed deletion of database records called ", "soft deletion", ".", "[1]", "[11]", ":", "18\u201319", "\n", "Laravel\u00a05 was released in February 2015 as a result of internal changes that ended up in renumbering the then-future Laravel\u00a04.3 release. New features in the Laravel\u00a05 release include support for scheduling periodically executed tasks through a package called ", "Scheduler", ", an abstraction layer called ", "Flysystem", " that allows remote storage to be used in the same way as local ", "file systems", ", improved handling of package assets through ", "Elixir", ", and simplified externally handled authentication through the optional ", "Socialite", " package. Laravel\u00a05 also introduced a new internal ", "directory tree", " structure for developed applications.", "[6]", ":", "13\u201314", "[12]", "\n", "Laravel\u00a05.1, released in June 2015, is the first release of Laravel to receive ", "long-term support", " (LTS), with planned availability of ", "bug fixes", " for two years and ", "security patches", " for three years. LTS releases of Laravel are planned to be released every two years.", "[13]", "\n", "Laravel\u00a05.3, released in August 23, 2016, The new features in 5.3 are focused on improving developer speed by adding additional out of the box improvements for common tasks.", "[14]", " ", "[15]", "\n", "Laravel 5.4, released in January 24, 2017, This release has many new features, like Laravel Dusk, Laravel Mix, Blade Components and Slots, Markdown Emails, Automatic Facades, Route Improvements, Higher Order Messaging for Collections, and many others.", "[16]", "\n", "Laravel 5.5, released in August 30, 2017", "\n", "Release history", "[", "edit", "]", "\n", "For LTS releases, such as Laravel 5.1, bug fixes are provided for 2 years and security fixes are provided for 3 years. These releases provide the longest window of support and maintenance. For general releases, bug fixes are provided for 6 months and security fixes are provided for 1 year.", "[17]", "\n", "\n", "\n", "\n", "Version", "\n", "Release date", "\n", "Notes", "\n", "\n", "\n", "Old version, no longer supported:", " 1.0", "\n", "June 2011", "\n", "NA", "\n", "\n", "\n", "Old version, no longer supported:", " 2.0", "\n", "September 2011", "\n", "NA", "\n", "\n", "\n", "Old version, no longer supported:", " 3.0", "\n", "February 22, 2012", "\n", "NA", "\n", "\n", "\n", "Old version, no longer supported:", " 3.1", "\n", "March 27, 2012", "\n", "NA", "\n", "\n", "\n", "Old version, no longer supported:", " 3.2", "\n", "May 22, 2012", "\n", "NA", "\n", "\n", "\n", "Old version, no longer supported:", " 4.0", "\n", "May 28, 2013", "\n", "NA", "\n", "\n", "\n", "Old version, no longer supported:", " 4.1", "\n", "December 11, 2013", "\n", "NA", "\n", "\n", "\n", "Old version, no longer supported:", " 4.2", "\n", "June 1, 2014", "\n", "NA", "\n", "\n", "\n", "Old version, no longer supported:", " 5.0", "\n", "February 4, 2015", "\n", "NA", "\n", "\n", "\n", "Older version, yet still supported:", " 5.1 LTS", "\n", "June 9, 2015", "\n", "NA", "\n", "\n", "\n", "Old version, no longer supported:", " 5.2", "\n", "December 21, 2015", "\n", "NA", "\n", "\n", "\n", "Old version, no longer supported:", " 5.3", "\n", "August 23, 2016", "\n", "NA", "\n", "\n", "\n", "Older version, yet still supported:", " 5.4", "\n", "January 24, 2017", "\n", "NA", "\n", "\n", "\n", "Current stable version:", " ", "5.5 LTS", "\n", "August 30, 2017", "\n", "NA", "\n", "\n", "\n", "Future release:", " 5.6", "\n", "February, 2018", "\n", "NA", "\n", "\n", "\n", "\n", "\n", "Legend:", "\n", "Old version", "\n", "Older version, still supported", "\n", "Current stable version", "\n", "Latest preview version", "\n", "Future release", "\n", "\n", "\n", "Source: GitHub", "[18]", "\n", "Features", "[", "edit", "]", "\n", "The following features serve as Laravel's key design points (where not specifically noted, descriptions refer to the features of Laravel\u00a03):", "[5]", "[6]", ":", "5\u20139", "[7]", "[8]", "[19]", "\n", "\n", "Bundles", " provide a modular ", "packaging system", " since the release of Laravel\u00a03, with bundled features already available for easy addition to applications. Furthermore, Laravel\u00a04 uses Composer as a dependency manager to add framework-agnostic and Laravel-specific PHP packages available from the ", "Packagist", " repository.", "[20]", "\n", "Eloquent ORM", " (", "object-relational mapping", ") is an advanced PHP implementation of the ", "active record pattern", ", providing at the same time internal methods for enforcing constraints on the relationships between ", "database", " objects. Following the active record pattern, Eloquent ORM presents ", "database tables", " as ", "classes", ", with their ", "object instances", " tied to single ", "table rows", ".", "[21]", "[22]", "\n", "Query builder", ", available since Laravel\u00a03, provides a more direct database access alternative to the Eloquent ORM. Instead of requiring ", "SQL queries", " to be written directly, Laravel's query builder provides a set of classes and ", "methods", " capable of building queries programmatically. It also allows selectable ", "caching", " of the results of executed queries.", "[23]", "\n", "Application logic", " is an integral part of developed applications, implemented either by using ", "controllers", " or as part of the route declarations. The ", "syntax", " used to define application logic is similar to the one used by ", "Sinatra", " framework.", "\n", "Reverse routing", " defines a relationship between the links and routes, making it possible for later changes to routes to be automatically propagated into relevant links. When the links are created by using names of existing routes, the appropriate ", "uniform resource identifiers", " (URIs) are automatically created by Laravel.", "\n", "Restful controllers", " provide an optional way for separating the logic behind serving ", "HTTP GET", " and ", "POST", " requests.", "\n", "Class auto loading", " provides automated loading of PHP classes without the need for manual maintenance of inclusion paths. On-demand loading prevents inclusion of unnecessary components, so only the actually used components are loaded.", "\n", "View", " composers", " serve as customizable logical code units that can be executed when a view is loaded.", "\n", "Blade", " ", "templating engine", " combines one or more templates with a ", "data model", " to produce resulting views, doing that by ", "transpiling", " the templates into cached PHP code for improved performance. Blade also provides a set of its own ", "control structures", " such as ", "conditional statements", " and ", "loops", ", which are internally mapped to their PHP counterparts. Furthermore, Laravel services may be called from Blade templates, and the templating engine itself can be extended with custom directives.", "[24]", "[25]", "\n", "IoC containers", " make it possible for new objects to be generated by following the ", "inversion of control", " (IoC) principle, in which the framework calls into the application- or task-specific code, with optional instantiating and referencing of new objects as ", "singletons", ".", "\n", "Migrations", " provide a ", "version control", " system for ", "database schemas", ", making it possible to associate changes in the application's ", "codebase", " and required changes in the database layout. As a result, this feature simplifies the ", "deployment", " and updating of Laravel-based applications.", "[26]", "\n", "Database seeding", " provides a way to populate database tables with selected default data that can be used for application ", "testing", " or be performed as part of the initial application setup.", "[26]", "\n", "Unit testing", " is provided as an integral part of Laravel,", "[11]", ":", "61\u201362", " which itself contains unit tests that detect and prevent ", "regressions", " in the framework. Unit tests can be run through the provided ", "artisan", " ", "command-line utility", ".", "\n", "Automatic pagination", " simplifies the task of implementing pagination, replacing the usual manual implementation approaches with automated methods integrated into Laravel.", "\n", "Form request", " is a feature of Laravel\u00a05 that serves as the base for ", "form", " input validation by internally binding ", "event", " listeners, resulting in automated invoking of the form validation methods and generation of the actual form.", "[27]", "\n", "Homestead", " - a ", "Vagrant", " ", "virtual machine", " that provides Laravel developers with all the tools necessary to develop Laravel straight out of the box, including, ", "Ubuntu", ", ", "Gulp", " , Bower and other development tools that are useful in developing full scale web applications.", "[28]", "\n", "\n", "Featured packages", "[", "edit", "]", "\n", "Ready-to-use bundles provided by Laravel through Composer and Packagist include the following:", "[3]", "\n", "\n", "Cashier", ", introduced in Laravel\u00a04.2, provides an interface for managing subscription billing services provided by ", "Stripe", ", such as handling ", "coupons", " and generating ", "invoices", ".", "\n", "SSH", ", introduced in Laravel\u00a04.1, allows programmatic execution of ", "CLI", " commands on remote servers using the ", "Secure Shell", " (SSH) as an encrypted ", "network protocol", ".", "\n", "Scheduler", ", introduced in Laravel\u00a05.0, is an addition to the Artisan that allows programmatic scheduling of periodically executed tasks. Internally, Scheduler relies on the ", "cron", " daemon to run a single Artisan job that, in turn, executes the configured tasks.", "\n", "Flysystem", ", introduced in Laravel\u00a05.0, is a ", "file system", " abstraction layer that allows local file systems and ", "cloud", "-based storage services provided by ", "Amazon\u00a0S3", " and ", "Rackspace Cloud", " to be used transparently and in the same way.", "\n", "Socialite", ", introduced in Laravel\u00a05.0 as an optional package, provides simplified mechanisms for authentication with different ", "OAuth", " providers, including ", "Facebook", ", ", "Twitter", ", ", "Google", ", ", "GitHub", " and ", "Bitbucket", ".", "[6]", ":", "13", "\n", "\n", "Artisan CLI", "[", "edit", "]", "\n", "Laravel's ", "command-line interface", " (CLI), called ", "Artisan", ", was initially introduced in Laravel\u00a03 with a limited set of capabilities. Laravel's later migration to a Composer-based architecture allowed Artisan to incorporate different components from the ", "Symfony", " framework, resulting in the availability of additional Artisan features in Laravel\u00a04.", "[11]", ":", "73\u201383", "[29]", "\n", "The features of Artisan are mapped to different subcommands of the ", "artisan", " command-line utility, providing functionality that aids in managing and building Laravel-based applications. Common uses of Artisan include managing database migrations and seeding, publishing package assets, and generating ", "boilerplate code", " for new controllers and migrations; the latter frees the developer from creating proper code ", "skeletons", ". The functionality and capabilities of Artisan can also be expanded by implementing new custom commands, which, for example, may be used to automate application-specific recurring tasks.", "[11]", ":", "73\u201383", "[29]", "\n", "Server requirements", "\n", "The Laravel framework has a few system requirements. Of course, all of these requirements are satisfied by the Laravel Homestead virtual machine, so it is highly recommended that you use Homestead as your local Laravel development environment.", "\n", "However, if you are not using Homestead, you will need to make sure your server meets the following requirements:", "\n", "\n ", "\u2022 PHP >= 7.0.0", "\n \u2022 OpenSSL PHP Extension\n \u2022 PDO PHP Extension\n \u2022 Mbstring PHP Extension\n \u2022 Tokenizer PHP Extension\n \u2022 XML PHP Extension\n", "\n", "Conferences", "[", "edit", "]", "\n", "Laracon", " is the official Laravel conference centered around the Laravel framework, covering its development, uses, and related general ", "software development", " topics. Laracon has taken place in the ", "United States", ", ", "Europe", " and online in the past.", "[30]", "[31]", " Typically, the conference happens in the ", "United States", " and ", "Europe", " every year. 2017 was the first year a Laracon was held as an online event only. As of March 2017, there are plans for more Laracons to be held online in the future.", "[32]", " Each year the conference has a different variety of sponsors and organizers, but Laravel, Laravel News and UserScape are usually the primary organizers. As of March 2017", "[update]", ", the following Laracons have been held or are announced:", "\n", "\n", "\n", "\n", "\nTaylor Otwell at the 2013 US Laracon", "\n", "\n", "\n", "\n", "\n", "Date", "\n", "Location", "\n", "\n", "\n", "February 22\u201323, 2013", "\n", "Washington, D.C.", "\n", "\n", "\n", "August 30\u201331, 2013", "[33]", "\n", "Amsterdam", "\n", "\n", "\n", "May 15\u201316, 2014", "\n", "New York City", "\n", "\n", "\n", "August 28\u201330, 2014", "[34]", "\n", "Amsterdam", "\n", "\n", "\n", "August 11\u201312, 2015", "[35]", "\n", "Louisville, Kentucky", "\n", "\n", "\n", "August 25\u201326, 2015", "[36]", "\n", "Amsterdam", "\n", "\n", "\n", "July 27\u201329, 2016", "[37]", "\n", "Louisville, Kentucky", "\n", "\n", "\n", "August 23\u201324, 2016", "[38]", "\n", "Amsterdam", "\n", "\n", "\n", "March 8, 2017", "[39]", "\n", "Online", "\n", "\n", "\n", "July 25\u201326, 2017", "[40]", "\n", "New York City", "\n", "\n", "\n", "August 28\u201330, 2017", "[41]", "[42]", "\n", "Amsterdam", "\n", "\n", "\n", "Laravel Partners", "[", "edit", "]", "\n", "On April 7, 2017, Taylor Otwell announced the Partners section of the Laravel website. The intention was to provide the Laravel community a recommended list of trusted companies who provide best-in-class Laravel development and guidance.", "[43]", " As of September, 2017, the current list of Laravel Partners includes", "\n", "\n", "Vehikl", "\n", "Tighten Co.", "\n", "Kirschbaum Development Group", "\n", "\n", "See also", "[", "edit", "]", "\n", "\n", "\n", "Computer programming portal", "\n", "Free software portal", "\n", "\n", "\n", "\n", "Comparison of web frameworks", "\n", "Comparison of web template engines", "\n", "\n", "Notes", "[", "edit", "]", "\n", "\n", "\n", "\n", "^", " ", "PHP version 5.3.7 or newer is required for Laravel versions 4.1 and older, Laravel\u00a04.2 and 5.0 require at least PHP\u00a05.4, while Laravel\u00a05.1 requires PHP\u00a05.5.9 or newer. Laravel\u00a05.5 requires PHP\u00a07.0.0 or newer.", "[3]", "\n", "\n", "\n", "\n", "References", "[", "edit", "]", "\n", "\n", "\n", "^ ", "a", " ", "b", " ", "c", " ", "d", " ", "e", " ", "Maks Surguy (July 27, 2013). ", "\"History of Laravel PHP framework, Eloquence emerging\"", ". ", "maxoffsky.com", ". Retrieved ", "May 10,", " 2015", ".", "\u00a0", "\n", "^", " ", "\"laravel/framework: Release v5.5.0\"", ". ", "github.com", ". August 30, 2017", ". Retrieved ", "August 30,", " 2017", ".", "\u00a0", "\n", "^ ", "a", " ", "b", " ", "\"Laravel documentation (version 5.3): Release notes\"", ". ", "laravel.com", ". Retrieved ", "August 29,", " 2015", ".", "\u00a0", "\n", "^", " ", "\"The real-time community site Voten goes open-source\"", ".", "\u00a0", "\n", "^ ", "a", " ", "b", " ", "Daniel Gafitescu (June 6, 2013). ", "\"Goodbye CodeIgniter, Hello Laravel\"", ". ", "sitepoint.com", ". Retrieved ", "December 21,", " 2013", ".", "\u00a0", "\n", "^ ", "a", " ", "b", " ", "c", " ", "d", " ", "e", " ", "Martin Bean (April 2015). ", "Laravel\u00a05 Essentials", ". ", "books.google.com", ". ", "Packt", ". ", "ISBN", "\u00a0", "978-1785283017", ". Retrieved ", "September 2,", " 2015", ".", "\u00a0", "\n", "^ ", "a", " ", "b", " ", "\"Laravel Documentation (versions 3.0\u20133.2.14)\"", ". ", "three.laravel.com", ". Retrieved ", "August 30,", " 2014", ".", "\u00a0", "\n", "^ ", "a", " ", "b", " ", "\"Laravel Documentation (version 4.2)\"", ". ", "laravel.com", ". Retrieved ", "August 30,", " 2014", ".", "\u00a0", "\n", "^", " ", "Bruno Skvorc (March 28, 2015). ", "\"Best PHP Framework for 2015 \u2013 SitePoint Survey Results\"", ". ", "sitepoint.com", ". Retrieved ", "June 14,", " 2015", ".", "\u00a0", "\n", "^", " ", "\"laravel/laravel: laravel/readme.md at master\"", ". ", "github.com", ". April 22, 2015", ". Retrieved ", "May 10,", " 2015", ".", "\u00a0", "\n", "^ ", "a", " ", "b", " ", "c", " ", "d", " ", "Rapha\u00ebl Saunier (January 2014). ", "Getting Started with Laravel\u00a04", ". ", "worldcat.org", ". ", "Packt", ". ", "ISBN", "\u00a0", "978-1783287031", ". Retrieved ", "September 2,", " 2015", ".", "\u00a0", "\n", "^", " ", "Eric Barnes (January 30, 2015). ", "\"Laravel\u00a05\"", ". ", "laravel-news.com", ". Retrieved ", "May 10,", " 2015", ".", "\u00a0", "\n", "^", " ", "Eric L. Barnes (June 9, 2015). ", "\"Laravel\u00a05.1 is released\"", ". ", "laravel-news.com", ". Retrieved ", "June 14,", " 2015", ".", "\u00a0", "\n", "^", " ", "Eric L. Barnes (August 23, 2016). ", "\"Laravel\u00a0 5.3 is now released\"", ". ", "laravel-news.com", ". Retrieved ", "August 23,", " 2016", ".", "\u00a0", "\n", "^", " ", "David oscar (August 23, 2016). ", "\"What's new in laravel\u00a0 5.3\"", ". ", "digitalsoft.in", ". Retrieved ", "August 23,", " 2016", ".", "\u00a0", "\n", "^", " ", "\"Laravel 5.4 Is Now Released\"", ". ", "Laravel News", ". 2017-01-24", ". Retrieved ", "2017-02-21", ".", "\u00a0", "\n", "^", " ", "\"Laravel Documentation: Releases\"", ". Laravel", ". Retrieved ", "February 26,", " 2017", ".", "\u00a0", "\n", "^", " ", "\"Github: Laravel\"", ". Laravel", ". Retrieved ", "February 26,", " 2017", ".", "\u00a0", "\n", "^", " ", "Jeffrey Way (November 28, 2012). ", "\"Why Laravel is Taking the PHP Community by Storm\"", ". ", "code.tutsplus.com", ". Retrieved ", "May 9,", " 2015", ".", "\u00a0", "\n", "^", " ", "\"Laravel documentation (version 4.2): Package development\"", ". ", "laravel.com", ". Retrieved ", "August 30,", " 2014", ".", "\u00a0", "\n", "^", " ", "\"Eloquent ORM in Laravel: What and Why!\"", ". ", "enukesoftware.com", ". Retrieved ", "December 19,", " 2014", ".", "\u00a0", "\n", "^", " ", "\"Develop Faster with the Laravel PHP Framework\"", ". ", "developer.com", ". Retrieved ", "April 17,", " 2015", ".", "\u00a0", "\n", "^", " ", "\"Laravel documentation (version 4.0): Query builder\"", ". ", "laravel.com", ". Retrieved ", "April 27,", " 2015", ".", "\u00a0", "\n", "^", " ", "\"Laravel documentation (version 5.1): Blade Templates\"", ". ", "laravel.com", ". Retrieved ", "June 10,", " 2015", ".", "\u00a0", "\n", "^", " ", "Dayle Rees (2014). ", "\"Laravel Blade engine\"", ". ", "daylerees.com", ". Retrieved ", "June 10,", " 2015", ".", "\u00a0", "\n", "^ ", "a", " ", "b", " ", "\"Laravel documentation (version 5.0): Migrations and seeding\"", ". ", "laravel.com", ". Retrieved ", "April 27,", " 2015", ".", "\u00a0", "\n", "^", " ", "Manmeet Anand. ", "\"Creating a Contact Form in Laravel\u00a05 Using the Form Request Feature!\"", ". ", "tisindia.com", ". Retrieved ", "March 2,", " 2015", ".", "\u00a0", "\n", "^", " ", "\"Laravel Homestead - Laravel the PHP Framework for Web artisans\"", ". Retrieved ", "30 October", " 2016", ".", "\u00a0", "\n", "^ ", "a", " ", "b", " ", "Jason Lewis (February 28, 2013). ", "\"Your One-Stop Guide to Laravel Commands\"", ". ", "code.tutsplus.com", ". Retrieved ", "May 9,", " 2015", ".", "\u00a0", "\n", "^", " ", "\"Laracon Online | The official worldwide Laravel online conference\"", ". ", "laracon.net", ". Retrieved ", "2017-03-24", ".", "\u00a0", "\n", "^", " ", "\"Search Results\"", ". ", "laravel-news.com", ". Retrieved ", "2017-03-24", ".", "\u00a0", "\n", "^", " ", "\"Supporting Laravel\"", ". ", "Medium", ". 2017-03-13", ". Retrieved ", "2017-03-24", ".", "\u00a0", "\n", "^", " ", "\"Laracon EU 2013\"", ". ", "laracon.eu", ". Retrieved ", "January 2,", " 2014", ".", "\u00a0", "\n", "^", " ", "\"Laracon EU 2014\"", ". ", "laracon.eu", ". Retrieved ", "August 30,", " 2014", ".", "\u00a0", "\n", "^", " ", "Eric L. Barnes (January 15, 2015). ", "\"Laracon 2015 will be in Louisville KY\"", ". ", "laravel-news.com", ". Retrieved ", "July 9,", " 2015", ".", "\u00a0", "\n", "^", " ", "\"Laracon EU 2015\"", ". ", "laracon.eu", ". Retrieved ", "July 9,", " 2015", ".", "\u00a0", "\n", "^", " ", "Eric L. Barnes (January 6, 2016). ", "\"Laracon tickets are now on sale\"", ". ", "laravel-news.com", ". Retrieved ", "January 7,", " 2016", ".", "\u00a0", "\n", "^", " ", "Eric L. Barnes (January 7, 2016). ", "\"Laracon EU tickets on sale\"", ". ", "laravel-news.com", ". Retrieved ", "April 7,", " 2016", ".", "\u00a0", "\n", "^", " ", "\"Announcing Laracon Online\"", ". ", "Laravel News", ". 2017-02-06", ". Retrieved ", "2017-03-24", ".", "\u00a0", "\n", "^", " ", "\"Laracon 2017 \u2013 Location and dates have been announced\"", ". ", "Laravel News", ". 2016-11-09", ". Retrieved ", "2017-03-24", ".", "\u00a0", "\n", "^", " ", "WebEngineers. ", "\"Announcing Laracon EU 2017 the official European Laravel conference\"", ". ", "Laracon EU 2017", ". Retrieved ", "2017-03-24", ".", "\u00a0", "\n", "^", " ", "\"Laracon EU 2017 is Announced\"", ". ", "Laravel News", ". 2017-01-16", ". Retrieved ", "2017-03-24", ".", "\u00a0", "\n", "^", " ", "Otwell, Taylor (2017-04-07). ", "\"Laravel Partners\"", ". ", "Taylor Otwell", ". Retrieved ", "2017-09-04", ".", "\u00a0", "\n", "\n", "\n", "[1]", "\n", "Further reading", "[", "edit", "]", "\n", "\n", "Laravel Design Patterns and Best Practices, Packt, ", "ISBN", "\u00a0", "978-1783287987", ", July 2014, by Arda K\u0131l\u0131\u00e7da\u011f\u0131 and H. \u0130brahim Yilmaz", "\n", "\n", "External links", "[", "edit", "]", "\n", "\n", "\n", "\n", "Wikimedia Commons has media related to ", "Laravel", ".", "\n", "\n", "\n", "\n", "Official website", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "v", "\n", "t", "\n", "e", "\n", "\n", "\n", "PHP", "\n", "\n", "\n", "\n", "People", "\n", "\n", "\n", "\n", "Andi Gutmans", "\n", "Rasmus Lerdorf", "\n", "Zeev Suraski", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "Resources", "\n", "\n", "\n", "\n", "Accelerator", " (", "List", ")", "\n", "Composer", "\n", "Editors", "\n", "Libraries", "\n", "PEAR", "\n", "\n", "\n", "\n", "\n", "\n", "Implementations", "\n", "\n", "\n", "\n", "HHVM", "\n", "HPHPc", "\n", "Parrot", "\n", "Phalanger", "\n", "Project Zero", "\n", "Quercus", "\n", "Zend Engine", "\n", "\n", "\n", "\n", "\n", "\n", "Web frameworks", "\n", "\n", "\n", "\n", "CakePHP", "\n", "CodeIgniter", "\n", "Drupal", "\n", "eZ Publish", "\n", "Fat-Free", "\n", "FuelPHP", "\n", "Horde", "\n", "Joomla!", "\n", "Laravel", "\n", "Lithium", "\n", "Midgard", "\n", "MODx", "\n", "Nette Framework", "\n", "Phalcon", "\n", "Pop PHP", "\n", "PRADO", "\n", "Qcodo", "\n", "Silex", "\n", "SilverStripe", "\n", "Symfony", "\n", "TYPO3", "\n", "WordPress", "\n", "Xaraya", "\n", "XOOPS", "\n", "Yii", "\n", "Zend Framework", "\n", "Zeta Components", "\n", "\n", "\n", "\n", "\n", "\n", "Testing", "\n", "\n", "\n", "\n", "Behat", "\n", "PHPUnit", "\n", "PHP Unit Testing Framework", "\n", "Lime", " (", "Symfony", ")", "\n", "\n", "\n", "\n", "\n", "\n", "ORMs", "\n", "\n", "\n", "\n", "Doctrine", "\n", "Propel", "\n", "\n", "\n", "\n", "\n", "\n", "IDEs", "\n", "\n", "\n", "\n", "Aptana", "\n", "Codelobster", "\n", "Eclipse PDT", "\n", "NetBeans", "\n", "PHPEdit", "\n", "PhpStorm", "\n", "RadPHP", "\n", "Zend Studio", "\n", "\n", "\n", "\n", "\n", "\n", "Widget toolkit", "\n", "\n", "\n", "\n", "PHP-GTK", "\n", "PHP-Qt", "\n", "wxPHP", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", " ", "Category", "\n", " ", "Commons", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "v", "\n", "t", "\n", "e", "\n", "\n", "\n", "Web frameworks", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "Comparison", "\n", "\n", "\n", "\n", "\n", "\n", "C++", "\n", "\n", "\n", "\n", "CppCMS", "\n", "Wt", "\n", "\n", "\n", "\n", "\n", "\n", "CLI", "\n", "\n", "\n", "\n", "ASP.NET", "\n", "\n", "Core", "\n", "AJAX", "\n", "Dynamic Data", "\n", "MVC", "\n", "Razor", "\n", "Web Forms", "\n", "\n", "\n", "DNN", "\n", "BFC", "\n", "MonoRail", "\n", "OpenRasta", "\n", "Umbraco", "\n", "\n", "\n", "\n", "\n", "\n", "ColdFusion", "\n", "\n", "\n", "\n", "CFWheels", "\n", "ColdBox Platform", "\n", "ColdSpring", "\n", "Fusebox", "\n", "Mach-II", "\n", "Model-Glue", "\n", "\n", "\n", "\n", "\n", "\n", "Common Lisp", "\n", "\n", "\n", "\n", "Caveman2", "\n", "CL-HTTP", "\n", "UnCommon Web", "\n", "Weblocks", "\n", "\n", "\n", "\n", "\n", "\n", "Haskell", "\n", "\n", "\n", "\n", "Happstack", "\n", "Yesod", "\n", "Snap", "\n", "\n", "\n", "\n", "\n", "\n", "Java", "\n", "\n", "\n", "\n", "AppFuse", "\n", "Flexive", "\n", "Grails", "\n", "GWT", "\n", "ICEfaces", "\n", "ItsNat", "\n", "JavaServer Faces", "\n", "JHipster", "\n", "Jspx", "\n", "JWt", "\n", "OpenXava", "\n", "Play", "\n", "Reasonable Server Faces", "\n", "Remote Application Platform", "\n", "RIFE", "\n", "Seam", "\n", "Sling", "\n", "Spring", "\n", "Stripes", "\n", "Struts", "\n", "Tapestry", "\n", "Vaadin", "\n", "Vert.x", "\n", "WebWork", "\n", "Wicket", "\n", "WaveMaker", "\n", "ZK", "\n", "\n", "\n", "\n", "\n", "\n", "JavaScript", "\n", "\n", "\n", "\n", "Ample SDK", "\n", "Angular", "/", "AngularJS", "\n", "Backbone.js", "\n", "Chaplin.js", "\n", "Closure", "\n", "Dojo Toolkit", "\n", "Ember.js", "\n", "Ext JS", "\n", "jQuery", "\n", "Meteor", "\n", "MooTools", "\n", "Node.js", "\n", "OpenUI5", "\n", "Prototype", "\n", "React", "\n", "Rico", "\n", "script.aculo.us", "\n", "Sencha Touch", "\n", "SproutCore", "\n", "Wakanda", "\n", "\n", "\n", "\n", "\n", "\n", "Perl", "\n", "\n", "\n", "\n", "Catalyst", "\n", "Dancer", "\n", "Mason", "\n", "Maypole", "\n", "Mojolicious", "\n", "WebGUI", "\n", "\n", "\n", "\n", "\n", "\n", "PHP", "\n", "\n", "\n", "\n", "CakePHP", "\n", "CodeIgniter", "\n", "Drupal", "\n", "Fat-Free", "\n", "FuelPHP", "\n", "Flow", "\n", "Gyroscope", "\n", "Horde", "\n", "Kohana", "\n", "Laravel", "\n", "Lithium", "\n", "Midgard", "\n", "MODX", "\n", "Nette", "\n", "Phalcon", "\n", "Pop PHP", "\n", "PRADO", "\n", "ProcessWire", "\n", "Qcodo", "\n", "Silex", "\n", "SilverStripe", "\n", "Symfony", "\n", "TYPO3", "\n", "Xaraya", "\n", "XOOPS", "\n", "Yii", "\n", "Zend Framework", "\n", "\n", "\n", "\n", "\n", "\n", "Python", "\n", "\n", "\n", "\n", "BlueBream", "\n", "CherryPy", "\n", "Django", "\n", "Flask", "\n", "Grok", "\n", "Nevow", "\n", "Pyjs", "\n", "Pylons", "\n", "Pyramid", "\n", "Quixote", "\n", "TACTIC", "\n", "Tornado", "\n", "TurboGears", "\n", "web2py", "\n", "Webware", "\n", "Zope 2", "\n", "\n", "\n", "\n", "\n", "\n", "Ruby", "\n", "\n", "\n", "\n", "Camping", "\n", "Merb", "\n", "Padrino", "\n", "Ruby on Rails", "\n", "Sinatra", "\n", "\n", "\n", "\n", "\n", "\n", "Scala", "\n", "\n", "\n", "\n", "Lift", "\n", "Play", "\n", "Scalatra", "\n", "\n", "\n", "\n", "\n", "\n", "Smalltalk", "\n", "\n", "\n", "\n", "AIDA/Web", "\n", "Seaside", "\n", "\n", "\n", "\n", "\n", "\n", "Other languages", "\n", "\n", "\n", "\n", "Vibe.d", " (", "D", ")", "\n", "Application Express", " (", "PL/SQL", ")", "\n", "Grails", " (", "Groovy", ")", "\n", "Kepler", " (", "Lua", ")", "\n", "Rocket", " (", "Rust", ")", "\n", "OpenACS", " (", "Tcl", ")", "\n", "Phoenix", " (", "Elixir", ")", "\n", "SproutCore", " (", "JavaScript", "-", "Ruby", ")", "\n", "Yaws", " (", "Erlang", ")", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "^", " ", "http://www.mindinventory.com/blog/laravel-the-best-php-framework-for-web-development/", "\n", "\n", "\n\n\n", "\n", "\n", "\n", "\n"], "lastUpdated": " 9 January 2018, at 10:32."}, +{"title": "Django (web framework)", "text": ["For other uses, see ", "Django", ".", "\n", "\n", "Django", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "Original author(s)", "\n", "Lawrence Journal-World", "\n", "\n", "\n", "Developer(s)", "\n", "Django Software Foundation", "\n", "\n", "\n", "Initial release", "\n", "21\u00a0July 2005", "; 12 years ago", "\u00a0(", "2005-07-21", ")", "[1]", "\n", "\n", "\n", "\n", "\n", "\n", "Stable release", "\n", "2.0.1", "[2]", " ", "(1\u00a0January 2018", "; 17 days ago", "\u00a0(", "2018-01-01", ")", ")", " ", "[\u00b1]", "\n", "\n", "\n", "Preview release", "\n", "2.0 release candidate 1", "[3]", " ", "[\u00b1]", "\n", "\n", "\n", "\n", "\n", "\n", "Repository", "\n", "\n", "\n", "\n", "https://github.com/django/django", "\n", "\n", "\n", "\n", "\n", "\n", "Development status", "\n", "Active", "\n", "\n", "\n", "Written in", "\n", "Python", "\n", "\n", "\n", "Size", "\n", "7.6 ", "MB", "[4]", "\n", "\n", "\n", "Type", "\n", "Web framework", "\n", "\n", "\n", "License", "\n", "3-clause BSD", "\n", "\n", "\n", "Website", "\n", "www", ".djangoproject", ".com", "\n", "\n", "\n", "Django", " (", "/", "\u02c8", "d\u0292", "\u00e6", "\u014b", "\u0261", "o\u028a", "/", " ", "JANG", "-goh", ")", "[5]", " is a ", "free and open-source", " ", "web framework", ", written in ", "Python", ", which follows the model-view-template (MVT) ", "architectural pattern", ".", "[6]", "[7]", " It is maintained by the ", "Django Software Foundation", " (DSF), an independent organization established as a ", "501(c)(3)", " non-profit.", "\n", "Django's primary goal is to ease the creation of complex, database-driven websites. Django emphasizes ", "reusability", " and \"pluggability\" of components, rapid development, and the principle of ", "don't repeat yourself", ". Python is used throughout, even for settings files and data models. Django also provides an optional administrative ", "create, read, update and delete", " interface that is generated dynamically through ", "introspection", " and configured via admin models.", "\n", "Some well-known sites that use Django include the ", "Public Broadcasting Service", ",", "[8]", " ", "Instagram", ",", "[9]", " ", "Mozilla", ",", "[10]", " ", "The Washington Times", ",", "[11]", " ", "Disqus", ",", "[12]", " ", "Bitbucket", ",", "[13]", " and ", "Nextdoor", ".", "[14]", " It was used on ", "Pinterest", ",", "[15]", " but later the site moved to a framework built over ", "Flask", ".", "[16]", "\n", "\n", "\n", "\n", "Contents", "\n", "\n", "\n", "1", " ", "History", "\n", "2", " ", "Features", "\n", "\n", "2.1", " ", "Components", "\n", "2.2", " ", "Bundled applications", "\n", "2.3", " ", "Extensibility", "\n", "2.4", " ", "Server arrangements", "\n", "\n", "\n", "3", " ", "Version history", "\n", "4", " ", "Development tools with Django support", "\n", "5", " ", "Community", "\n", "6", " ", "Ports to other languages", "\n", "7", " ", "Bibliography", "\n", "8", " ", "See also", "\n", "9", " ", "References", "\n", "10", " ", "External links", "\n", "\n", "\n", "\n", "History", "[", "edit", "]", "\n", "Django was created in the fall of 2003, when the ", "web programmers", " at the ", "Lawrence Journal-World", " newspaper, ", "Adrian Holovaty", " and ", "Simon Willison", ", began using Python to build applications.", "[17]", " It was released publicly under a ", "BSD license", " in July 2005. The framework was named after guitarist ", "Django Reinhardt", ".", "[17]", "\n", "In June 2008, it was announced that a newly formed ", "Django Software Foundation", " (DSF) would maintain Django in the future.", "[18]", "\n", "Features", "[", "edit", "]", "\n", "Components", "[", "edit", "]", "\n", "\n", "\n", "\n", "\nScreenshot of the Django admin interface for modifying a user account.", "\n", "\n", "\n", "Despite having its own nomenclature, such as naming the callable objects generating the ", "HTTP", " responses \"views\",", "[6]", " the core Django framework can be seen as an ", "MVC", " architecture.", "[7]", " It consists of an ", "object-relational mapper", " (ORM) that mediates between ", "data models", " (defined as Python classes) and a ", "relational database", " (\"", "M", "odel\"), a system for processing HTTP requests with a ", "web templating system", " (\"", "V", "iew\"), and a ", "regular-expression", "-based ", "URL", " dispatcher (\"", "C", "ontroller\").", "\n", "Also included in the core framework are:", "\n", "\n", "a lightweight and standalone web server for development and testing", "\n", "a form serialization and validation system that can translate between ", "HTML", " forms and values suitable for storage in the database", "\n", "a template system that utilizes the concept of ", "inheritance", " borrowed from object-oriented programming", "\n", "a ", "caching", " framework that can use any of several cache methods", "\n", "support for ", "middleware", " classes that can intervene at various stages of request processing and carry out custom functions", "\n", "an internal dispatcher system that allows components of an application to communicate events to each other via pre-defined signals", "\n", "an ", "internationalization", " system, including translations of Django's own components into a variety of languages", "\n", "a ", "serialization", " system that can produce and read ", "XML", " and/or ", "JSON", " representations of Django model instances", "\n", "a system for extending the capabilities of the template engine", "\n", "an interface to Python's built-in ", "unit test", " framework", "\n", "\n", "Bundled applications", "[", "edit", "]", "\n", "The main Django distribution also bundles a number of applications in its \"contrib\" package, including:", "\n", "\n", "an extensible authentication system", "\n", "the dynamic administrative interface", "\n", "tools for generating ", "RSS", " and ", "Atom", " syndication feeds", "\n", "a site's framework that allows one Django installation to run multiple websites, each with their own content and applications", "\n", "tools for generating ", "Google Sitemaps", "\n", "built-in mitigation for ", "cross-site request forgery", ", ", "cross-site scripting", ", ", "SQL injection", ", ", "password cracking", " and other typical web attacks, most of them turned on by default", "[19]", "[20]", "\n", "a framework for creating ", "GIS", " applications", "\n", "\n", "Extensibility", "[", "edit", "]", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "This section ", "relies too much on ", "references", " to ", "primary sources", ". ", "Please improve this section by adding ", "secondary or tertiary sources", ".", " ", "(January 2015)", " ", "(", "Learn how and when to remove this template message", ")", "\n", "\n", "\n", "\n", "Django's configuration system allows third party code to be plugged into a regular project, provided that it follows the reusable app", "[21]", " conventions. More than 2500 packages", "[22]", " are available to extend the framework's original behavior, providing solutions to issues the original tool didn't tackle: registration, search, ", "API", " provision and consumption, ", "CMS", ", etc.", "\n", "This extensibility is, however, mitigated by internal components dependencies. While the Django philosophy implies loose coupling,", "[23]", " the template filters and tags assume one engine implementation, and both the auth and admin bundled applications require the use of the internal ", "ORM", ". None of these filters or bundled apps are mandatory to run a Django project, but reusable apps tend to depend on them, encouraging developers to keep using the official stack in order to benefit fully from the apps ecosystem.", "\n", "Server arrangements", "[", "edit", "]", "\n", "Django can be run in conjunction with ", "Apache", ", ", "Nginx", " using ", "WSGI", ", ", "Gunicorn", ", or ", "Cherokee", " using flup (a Python module).", "[24]", "[25]", " Django also includes the ability to launch a ", "FastCGI", " server, enabling use behind any web server which supports FastCGI, such as ", "Lighttpd", " or ", "Hiawatha", ". It is also possible to use other ", "WSGI", "-compliant web servers.", "[26]", " Django officially supports four database backends: ", "PostgreSQL", ", ", "MySQL", ", ", "SQLite", ", and ", "Oracle", ". ", "Microsoft SQL Server", " can be used with django-mssql on ", "Microsoft", " ", "operating systems", ",", "[27]", " while similarly external backends exist for ", "IBM Db2", ",", "[28]", " ", "SQL Anywhere", "[29]", " and ", "Firebird", ".", "[30]", " There is a ", "fork", " named django-nonrel, which supports ", "NoSQL", " databases, such as ", "MongoDB", " and ", "Google App Engine", "'s Datastore.", "[31]", "\n", "Django may also be run in conjunction with ", "Jython", " on any ", "Java EE", " application server such as ", "GlassFish", " or ", "JBoss", ". In this case django-jython must be installed in order to provide ", "JDBC", " drivers for database connectivity, which also can provide functionality to compile Django in to a .war suitable for deployment.", "[32]", "\n", "Google App Engine", " includes support for Django version 1.x.x", "[33]", " as one of the bundled frameworks.", "\n", "Version history", "[", "edit", "]", "\n", "The Django team will occasionally designate certain releases to be \u201cLong-term support\u201d (LTS) releases.", "[34]", " LTS releases will get security and data loss fixes applied for a guaranteed period of time, typically 3+ years, regardless of the pace of releases afterwards.", "\n", "\n", "\n", "Version", "\n", "Date", "[35]", "\n", "Notes", "[36]", "\n", "\n", "\n", "Old version, no longer supported:", " 0.90", "[37]", "\n", "000000002005-11-16-0000", "16 Nov 2005", "\n", "\n", "\n", "\n", "Old version, no longer supported:", " 0.91", "[38]", "\n", "000000002006-01-11-0000", "11 Jan 2006", "\n", "\"new-admin\"", "\n", "\n", "\n", "Old version, no longer supported:", " 0.95", "[39]", "\n", "000000002006-07-29-0000", "29 Jul 2006", "\n", "\"magic removal\"", "\n", "\n", "\n", "Old version, no longer supported:", " 0.96", "[40]", "\n", "000000002007-03-23-0000", "23 Mar 2007", "\n", "\"newforms\", testing tools", "\n", "\n", "\n", "Old version, no longer supported:", " 1.0", "[41]", "\n", "000000002008-09-03-0000", "3 Sep 2008", "\n", "API stability, decoupled admin, unicode", "\n", "\n", "\n", "Old version, no longer supported:", " 1.1", "[42]", "\n", "000000002009-07-29-0000", "29 Jul 2009", "\n", "Aggregates, transaction based tests", "\n", "\n", "\n", "Old version, no longer supported:", " 1.2", "[43]", "\n", "000000002010-05-17-0000", "17 May 2010", "\n", "Multiple db connections, ", "CSRF", ", model validation", "\n", "\n", "\n", "Old version, no longer supported:", " 1.3", "[44]", "\n", "000000002011-03-23-0000", "23 Mar 2011", "\n", "Class based views, staticfiles", "\n", "\n", "\n", "Old version, no longer supported:", " 1.4 LTS", "[45]", "\n", "000000002012-03-23-0000", "23 Mar 2012", "\n", "Timezones, in browser testing, app templates.", "\n", "\n", "\n", "Old version, no longer supported:", " 1.5", "[46]", "\n", "000000002013-02-26-0000", "26 Feb 2013", "\n", "Python 3 Support, configurable user model", "\n", "\n", "\n", "Old version, no longer supported:", " 1.6", "[47]", "\n", "000000002013-11-06-0000", "6 Nov 2013", "\n", "Dedicated to Malcolm Tredinnick, db transaction management, connection pooling.", "\n", "\n", "\n", "Old version, no longer supported:", " 1.7", "[48]", "\n", "000000002014-09-02-0000", "2 Sep 2014", "\n", "Migrations, application loading and configuration.", "\n", "\n", "\n", "Older version, yet still supported:", " 1.8 LTS", "[49]", "\n", "000000002015-04-01-0000", "1 Apr 2015", "\n", "Native support for multiple template engines. ", "Supported until at least April 2018", "\n", "\n", "\n", "Old version, no longer supported:", " 1.9", "[50]", "\n", "000000002015-12-01-0000", "1 Dec 2015", "\n", "Automatic password validation. New styling for admin interface.", "\n", "\n", "\n", "Old version, no longer supported:", " 1.10", "[51]", "\n", "000000002016-08-01-0000", "1 Aug 2016", "\n", "Full text search for PostgreSQL. New-style middleware.", "\n", "\n", "\n", "Older version, yet still supported:", " 1.11 LTS", "[52]", "\n", "000000002017-04-04-0000", "4 Apr 2017", "\n", "Last version to support Python 2.7. ", "Supported until at least April 2020", "\n", "\n", "\n", "Current stable version:", " ", "2.0", "[53]", "\n", "000000002017-12-01-0000", "Dec 2017", "\n", "First Python 3-only release, Simplified URL routing syntax, Mobile friendly admin.", "\n", "\n", "\n", "Future release:", " 2.1", "[53]", "\n", "000000002018-08-01-0000", "Aug 2018", "\n", "\n", "\n", "\n", "Future release:", " 2.2 LTS", "[53]", "\n", "000000002019-04-01-0000", "Apr 2019", "\n", "Supported until at least April 2022", "\n", "\n", "\n", "Future release:", " 3.0", "[53]", "\n", "000000002019-12-01-0000", "Dec 2019", "\n", "\n", "\n", "\n", "Future release:", " 3.1", "[53]", "\n", "000000002020-08-01-0000", "Aug 2020", "\n", "\n", "\n", "\n", "Future release:", " 3.2 LTS", "[53]", "\n", "000000002021-04-01-0000", "Apr 2021", "\n", "Supported until at least April 2024", "\n", "\n", "\n", "\n", "\n", "Legend:", "\n", "Old version", "\n", "Older version, still supported", "\n", "Latest version", "\n", "Latest preview version", "\n", "Future release", "\n", "\n", "\n", "\n", "\n", "\n", "Development tools with Django support", "[", "edit", "]", "\n", "For developing a Django project, no special tools are necessary, since the source code can be edited with any conventional ", "text editor", ". Nevertheless, editors specialized on ", "computer programming", " can help increase the productivity of development, e.g. with features such as ", "syntax highlighting", ". Since Django is written in Python, text editors which are aware of Python syntax are beneficial in this regard.", "\n", "Integrated development environments", " (IDE) add further functionality, such as debugging, refactoring, unit testing, etc. As with plain editors, IDEs with support for Python can be beneficial. Some IDEs that are specialized on Python additionally have integrated support for Django projects, so that using such an IDE when developing a Django project can help further increase productivity. For comparison of such Python IDEs, see the main article:", "\n", "Main article: ", "Comparison of integrated development environments \u00a7\u00a0Python", "\n", "Community", "[", "edit", "]", "\n", "There is a semiannual conference for Django developers and users, named \"DjangoCon\", that has been held since September 2008. DjangoCon is held annually in Europe, in May or June;", "[54]", " while another is held in the United States in August or September, in various cities.", "[55]", " The 2012 DjangoCon took place in Washington D.C. from 3 to 8 September. 2013 DjangoCon was held in Chicago at the Hyatt Regency Hotel and the post-conference ", "Sprints", " were hosted at Digital Bootcamp, computer training center.", "[56]", " The 2014 DjangoCon US returned to Portland, OR from 30 August to 6 September. The 2015 DjangoCon US was held in Austin, TX from 6 to 11 September at the AT&T Executive Center. The 2016 DjangoCon US was held in Philadelphia, PA at The ", "Wharton School of the University of Pennsylvania", " from 17 to 22 July.", "[57]", "\n", "Django mini-conferences were held in ", "Hobart", ", Australia in July 2013, in ", "Brisbane", ", Australia in August 2014 and 2015, and in ", "Melbourne", ", Australia in 2016.", "[58]", "\n", "Ports to other languages", "[", "edit", "]", "\n", "Programmers have ported Django's template design from Python to other languages, providing decent cross-platform support. Some of these options are more direct ports; others, though inspired by Django and retaining its concepts, take the liberty to deviate from Django's design:", "\n", "\n", "Liquid for ", "Ruby", "[59]", "\n", "Template::Swig for ", "Perl", "[60]", "\n", "Twig for ", "PHP", "[61]", "\n", "Jinja for ", "Python", "[62]", "\n", "ErlyDTL for ", "Erlang", "[63]", "\n", "\n", "Bibliography", "[", "edit", "]", "\n", "\n", "\n", "Roy Greenfeld, Daniel; Roy Greenfeld, Audrey (2015), ", "Two Scoops of Django: Best Practices for Django 1.8", " (3rd ed.), Two Scoops Press, p.\u00a0531, ", "ISBN", "\u00a0", "0981467342", "\u00a0", "\n", "Jaiswal, Sanjeev; Kumar, Ratan (22 June 2015), ", "Learning Django Web Development", " (1st ed.), Packt, p.\u00a0405, ", "ISBN", "\u00a0", "1783984406", "\u00a0", "\n", "Ravindrun, Arun (31 March 2015), ", "Django Design Patterns and Best Practices", " (1st ed.), Packt, p.\u00a0180, ", "ISBN", "\u00a0", "1783986646", "\u00a0", "\n", "Osborn, Tracy (May 2015), ", "Hello Web App", " (1st ed.), Tracy Osborn, p.\u00a0142, ", "ISBN", "\u00a0", "0986365912", "\u00a0", "\n", "Bendoraitis, Aidas (October 2014), ", "Web Development with Django Cookbook", " (1st ed.), Packt, p.\u00a0294, ", "ISBN", "\u00a0", "178328689X", "\u00a0", "\n", "Baumgartner, Peter; Malet, Yann (2015), ", "High Performance Django", " (1st ed.), Lincoln Loop, p.\u00a0184, ", "ISBN", "\u00a0", "1508748128", "\u00a0", "\n", "Elman, Julia; Lavin, Mark (2014), ", "Lightweight Django", " (1st ed.), O'Reilly Media, p.\u00a0246, ", "ISBN", "\u00a0", "149194594X", "\u00a0", "\n", "Percival, Harry (2014), ", "Test-Driven Development with Python", " (1st ed.), O'Reilly Media, p.\u00a0480, ", "ISBN", "\u00a0", "1449364829", "\u00a0", "\n", "\n", "\n", "This list is an extraction from ", "Current Django Books", "\n", "See also", "[", "edit", "]", "\n", "\n", "\n", "Free software portal", "\n", "\n", "\n", "\n", "Flask (web framework)", "\n", "Pylons project", "\n", "Comparison of web frameworks", "\n", "Web2py", "\n", "\n", "\n", "References", "[", "edit", "]", "\n", "\n", "\n", "^", " ", "\"Django FAQ\"", ". Retrieved ", "2 September", " 2014", ".", "\u00a0", "\n", "^", " ", "Graham, Tim (1 January 2018). ", "\"Django bugfix releases: 2.0.1 and 1.11.9\"", ". ", "Django Weblog", ". Retrieved ", "2 January", " 2018", ".", "\u00a0", "\n", "^", " ", "Graham, Tim (15 November 2017). ", "\"Django 2.0 release candidate 1 released\"", ". ", "Django Weblog", ". Retrieved ", "16 November", " 2017", ".", "\u00a0", "\n", "^", " ", "\"Django Download\"", ". Retrieved ", "2 January", " 2018", ".", "\u00a0", "\n", "^", " ", "\"FAQ: General - Django documentation - Django\"", ". Retrieved ", "30 April", " 2016", ".", "\u00a0", "\n", "^ ", "a", " ", "b", " ", "\"FAQ: General - Django documentation - Django\"", ". Retrieved ", "30 April", " 2016", ".", "\u00a0", "\n", "^ ", "a", " ", "b", " ", "Adrian Holovaty, Jacob Kaplan-Moss; et al. ", "The Django Book", ". ", "Django follows this MVC pattern closely enough that it can be called an MVC framework", "\u00a0", "\n", "^", " ", "\"20 Creative Websites Running Django\"", ".", "\u00a0", "\n", "^", " ", "\"What Powers Instagram: Hundreds of Instances, Dozens of Technologies\"", ".", "\u00a0", "\n", "^", " ", "\"Python\"", ". ", "Mozilla Developer Network", ". Retrieved ", "30 April", " 2016", ".", "\u00a0", "\n", "^", " ", "Opensource.washingtontimes.com", ". Retrieved on 2014-05-30.", "\n", "^", " ", "\"Scaling Django to 8 Billion Page Views\"", ".", "\u00a0", "\n", "^", " ", "\"DjangoSuccessStoryBitbucket \u2013 Django\"", ". Retrieved ", "30 April", " 2016", ".", "\u00a0", "\n", "^", " ", "\"The anti-Facebook: one in four American neighborhoods are now using this private social network\"", ". ", "The Verge", ". Retrieved ", "16 June", " 2016", ".", "\u00a0", "\n", "^", " ", "\"What is the technology stack behind Pinterest?\"", ". Retrieved ", "30 April", " 2016", ".", "\u00a0", "\n", "^", " ", "\"Sai Deep Chand G's answer to What is the technology stack behind Pinterest? - Quora\"", ". ", "www.quora.com", ". Retrieved ", "2017-05-20", ".", "\u00a0", "\n", "^ ", "a", " ", "b", " ", "\"Django's History\"", ". The Django Book", ". Retrieved ", "6 June", " 2013", ".", "\u00a0", "\n", "^", " ", "\"Announcing the Django Software Foundation - Weblog - Django\"", ". Retrieved ", "30 April", " 2016", ".", "\u00a0", "\n", "^", " ", "\"Security in Django\"", ". Django Project", ". Retrieved ", "25 March", " 2013", ".", "\u00a0", "\n", "^", " ", "Socol, James (2012). ", "\"Best Basic Security Practices (Especially with Django)\"", ". Retrieved ", "25 March", " 2013", ".", "\u00a0", "\n", "^", " ", "\"What is a reusable app? \u2014 django-reusable-app-docs 0.1.0 documentation\"", ". Retrieved ", "30 April", " 2016", ".", "\u00a0", "\n", "^", " ", "\"Django Packages\"", ". Retrieved ", "30 April", " 2016", ".", "\u00a0", "\n", "^", " ", "\"Design philosophies - Django documentation - Django\"", ". Retrieved ", "30 April", " 2016", ".", "\u00a0", "\n", "^", " ", "Django documentation of deployment", " ", "Archived", " 11 January 2012 at the ", "Wayback Machine", ".", "\n", "^", " ", "\"Cherokee Web Server - Cookbook Setting up Django - Cherokee Documentation\"", ". Retrieved ", "30 April", " 2016", ".", "\u00a0", "\n", "^", " ", "How to use Django with Apache and mod_wsgi", " ", "Archived", " 8 March 2013 at the ", "Wayback Machine", ".. Official Django documentation.", "\n", "^", " ", "\"Manfre / django-mssql / source / \u2014 Bitbucket\"", ". Retrieved ", "30 April", " 2016", ".", "\u00a0", "\n", "^", " ", "ibmdb. ", "\"GitHub - ibmdb/python-ibmdb: Automatically exported from code.google.com/p/ibm-db\"", ". ", "GitHub", ". Retrieved ", "30 April", " 2016", ".", "\u00a0", "\n", "^", " ", "\"Google Code Archive - Long-term storage for Google Code Project Hosting\"", ". Retrieved ", "30 April", " 2016", ".", "\u00a0", "\n", "^", " ", "maxirobaina. ", "\"GitHub - maxirobaina/django-firebird: Firebird SQL backend for django\"", ". ", "GitHub", ". Retrieved ", "30 April", " 2016", ".", "\u00a0", "\n", "^", " ", "\"Django non-rel\"", ". Retrieved ", "30 April", " 2016", ".", "\u00a0", "\n", "^", " ", "beachmachine. ", "\"GitHub - beachmachine/django-jython: Database backends and extensions for Django development on top of Jython\"", ". ", "GitHub", ". Retrieved ", "30 April", " 2016", ".", "\u00a0", "\n", "^", " ", "Running Pure Django Projects on Google App Engine", ". Code.google.com (2010-11-01). Retrieved on 5 December 2011.", "\n", "^", " ", "\"Django's release process - Django documentation - Django\"", ". Retrieved ", "30 April", " 2016", ".", "\u00a0", "\n", "^", " ", "Supported Versions", "\n", "^", " ", "What Python version can I use with Django?", "\n", "^", " ", "\"Introducing Django 0.90\"", ". Django weblog. Retrieved 2 February 2013.", "\n", "^", " ", "\"Django 0.91 released\"", ". Django weblog. Retrieved 2 February 2013.", "\n", "^", " ", "\"Introducing Django 0.95\"", ". Django weblog. Retrieved 2 February 2013.", "\n", "^", " ", "\"Announcing Django 0.96!\"", ". Django weblog. Retrieved 2 February 2013.", "\n", "^", " ", "\"Django 1.0 released!\"", ". Django weblog. Retrieved 2 February 2013.", "\n", "^", " ", "\"Django 1.1 released\"", ". Django weblog. Retrieved 2 February 2013.", "\n", "^", " ", "\"Django 1.2 released\"", ". Django weblog. Retrieved 2 February 2013.", "\n", "^", " ", "\"Django 1.3 released\"", ". Django weblog. Retrieved 2 February 2013.", "\n", "^", " ", "\"Django 1.4 released\"", ". Django weblog. Retrieved 2 February 2013.", "\n", "^", " ", "\"Django 1.5 released\"", " Django weblog. Retrieved 27 February 2013.", "\n", "^", " ", "\"Django 1.6 released\"", " Django weblog. Retrieved 6 November 2013.", "\n", "^", " ", "\"Django 1.7 released\"", " Django weblog. Retrieved 4 September 2014.", "\n", "^", " ", "\"Django 1.8 released\"", " Django weblog. Retrieved 2 April 2015.", "\n", "^", " ", "\"Django 1.9 released\"", " Django weblog. Retrieved 1 December 2015.", "\n", "^", " ", "\"Django 1.10 released\"", " Django weblog. Retrieved 1 August 2016.", "\n", "^", " ", "\"Django 1.11 released\"", " Django weblog. Retrieved 4 April 2017.", "\n", "^ ", "a", " ", "b", " ", "c", " ", "d", " ", "e", " ", "f", " ", "\"Django 2.0 released\"", " Django weblog. Retrieved 3 December 2017.", "\n", "^", " ", "DjangoCon EU series", ", Lanyrd.com", "\n", "^", " ", "DjangoCon US series", ", Lanyrd.com", "\n", "^", " ", "\"DjangoCon\"", ". DjangoCon. Archived from ", "the original", " on 5 August 2012", ". Retrieved ", "29 July", " 2012", ".", "\u00a0", "\n", "^", " ", "\"DjangoCon\"", ". DjangoCon", ". Retrieved ", "1 December", " 2016", ".", "\u00a0", "\n", "^", " ", "DjangoCon AU", ". Djangocon.com.au. Retrieved on 2016-09-23.", "\n", "^", " ", "http://liquidmarkup.org", "\n", "^", " ", "https://metacpan.org/pod/Template::Swig", "\n", "^", " ", "http://twig.sensiolabs.org", "\n", "^", " ", "http://jinja.pocoo.org", "\n", "^", " ", "https://github.com/erlydtl/erlydtl/wiki", "\n", "\n", "\n", "External links", "[", "edit", "]", "\n", "\n", "\n", "\n", "Wikimedia Commons has media related to ", "Django (web framework)", ".", "\n", "\n", "\n", "\n", "Official website", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "v", "\n", "t", "\n", "e", "\n", "\n", "\n", "Python", " ", "web frameworks", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "BlueBream", "\n", "Bottle", "\n", "CherryPy", "\n", "Django", "\n", "Flask", "\n", "Grok", "\n", "Nagare", "\n", "Nevow", "\n", "Pyjs", "\n", "Pylons", "\n", "Pyramid", "\n", "Quixote", "\n", "Spyce", "\n", "TACTIC", "\n", "Tornado", "\n", "TurboGears", "\n", "TwistedWeb", "\n", "Webware", "\n", "web2py", "\n", "Zope 2", "\n", "more", "...", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "v", "\n", "t", "\n", "e", "\n", "\n", "\n", "Web frameworks", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "Comparison", "\n", "\n", "\n", "\n", "\n", "\n", "C++", "\n", "\n", "\n", "\n", "CppCMS", "\n", "Wt", "\n", "\n", "\n", "\n", "\n", "\n", "CLI", "\n", "\n", "\n", "\n", "ASP.NET", "\n", "\n", "Core", "\n", "AJAX", "\n", "Dynamic Data", "\n", "MVC", "\n", "Razor", "\n", "Web Forms", "\n", "\n", "\n", "DNN", "\n", "BFC", "\n", "MonoRail", "\n", "OpenRasta", "\n", "Umbraco", "\n", "\n", "\n", "\n", "\n", "\n", "ColdFusion", "\n", "\n", "\n", "\n", "CFWheels", "\n", "ColdBox Platform", "\n", "ColdSpring", "\n", "Fusebox", "\n", "Mach-II", "\n", "Model-Glue", "\n", "\n", "\n", "\n", "\n", "\n", "Common Lisp", "\n", "\n", "\n", "\n", "Caveman2", "\n", "CL-HTTP", "\n", "UnCommon Web", "\n", "Weblocks", "\n", "\n", "\n", "\n", "\n", "\n", "Haskell", "\n", "\n", "\n", "\n", "Happstack", "\n", "Yesod", "\n", "Snap", "\n", "\n", "\n", "\n", "\n", "\n", "Java", "\n", "\n", "\n", "\n", "AppFuse", "\n", "Flexive", "\n", "Grails", "\n", "GWT", "\n", "ICEfaces", "\n", "ItsNat", "\n", "JavaServer Faces", "\n", "JHipster", "\n", "Jspx", "\n", "JWt", "\n", "OpenXava", "\n", "Play", "\n", "Reasonable Server Faces", "\n", "Remote Application Platform", "\n", "RIFE", "\n", "Seam", "\n", "Sling", "\n", "Spring", "\n", "Stripes", "\n", "Struts", "\n", "Tapestry", "\n", "Vaadin", "\n", "Vert.x", "\n", "WebWork", "\n", "Wicket", "\n", "WaveMaker", "\n", "ZK", "\n", "\n", "\n", "\n", "\n", "\n", "JavaScript", "\n", "\n", "\n", "\n", "Ample SDK", "\n", "Angular", "/", "AngularJS", "\n", "Backbone.js", "\n", "Chaplin.js", "\n", "Closure", "\n", "Dojo Toolkit", "\n", "Ember.js", "\n", "Ext JS", "\n", "jQuery", "\n", "Meteor", "\n", "MooTools", "\n", "Node.js", "\n", "OpenUI5", "\n", "Prototype", "\n", "React", "\n", "Rico", "\n", "script.aculo.us", "\n", "Sencha Touch", "\n", "SproutCore", "\n", "Wakanda", "\n", "\n", "\n", "\n", "\n", "\n", "Perl", "\n", "\n", "\n", "\n", "Catalyst", "\n", "Dancer", "\n", "Mason", "\n", "Maypole", "\n", "Mojolicious", "\n", "WebGUI", "\n", "\n", "\n", "\n", "\n", "\n", "PHP", "\n", "\n", "\n", "\n", "CakePHP", "\n", "CodeIgniter", "\n", "Drupal", "\n", "Fat-Free", "\n", "FuelPHP", "\n", "Flow", "\n", "Gyroscope", "\n", "Horde", "\n", "Kohana", "\n", "Laravel", "\n", "Lithium", "\n", "Midgard", "\n", "MODX", "\n", "Nette", "\n", "Phalcon", "\n", "Pop PHP", "\n", "PRADO", "\n", "ProcessWire", "\n", "Qcodo", "\n", "Silex", "\n", "SilverStripe", "\n", "Symfony", "\n", "TYPO3", "\n", "Xaraya", "\n", "XOOPS", "\n", "Yii", "\n", "Zend Framework", "\n", "\n", "\n", "\n", "\n", "\n", "Python", "\n", "\n", "\n", "\n", "BlueBream", "\n", "CherryPy", "\n", "Django", "\n", "Flask", "\n", "Grok", "\n", "Nevow", "\n", "Pyjs", "\n", "Pylons", "\n", "Pyramid", "\n", "Quixote", "\n", "TACTIC", "\n", "Tornado", "\n", "TurboGears", "\n", "web2py", "\n", "Webware", "\n", "Zope 2", "\n", "\n", "\n", "\n", "\n", "\n", "Ruby", "\n", "\n", "\n", "\n", "Camping", "\n", "Merb", "\n", "Padrino", "\n", "Ruby on Rails", "\n", "Sinatra", "\n", "\n", "\n", "\n", "\n", "\n", "Scala", "\n", "\n", "\n", "\n", "Lift", "\n", "Play", "\n", "Scalatra", "\n", "\n", "\n", "\n", "\n", "\n", "Smalltalk", "\n", "\n", "\n", "\n", "AIDA/Web", "\n", "Seaside", "\n", "\n", "\n", "\n", "\n", "\n", "Other languages", "\n", "\n", "\n", "\n", "Vibe.d", " (", "D", ")", "\n", "Application Express", " (", "PL/SQL", ")", "\n", "Grails", " (", "Groovy", ")", "\n", "Kepler", " (", "Lua", ")", "\n", "Rocket", " (", "Rust", ")", "\n", "OpenACS", " (", "Tcl", ")", "\n", "Phoenix", " (", "Elixir", ")", "\n", "SproutCore", " (", "JavaScript", "-", "Ruby", ")", "\n", "Yaws", " (", "Erlang", ")", "\n", "\n", "\n", "\n", "\n", "\n", "\n\n\n", "\n", "\n", "\n", "\n"], "lastUpdated": " 2 January 2018, at 02:25."}, +{"title": "Vitalik Buterin", "text": ["\n", "\n", "Vitalik Buterin", "\n", "\n", "\n", "\n", "Vitalik Buterin, 2016", "\n", "\n", "\n", "\n", "Native\u00a0name", "\n", "\u0412\u0438\u0442\u0430\u043b\u0438\u0439 \u0414\u043c\u0438\u0442\u0440\u0438\u0435\u0432\u0438\u0447 \u0411\u0443\u0442\u0435\u0440\u0438\u043d", "\n", "\n", "\n", "Born", "\n", "(", "1994-01-31", ")", " January 31, 1994 ", "(age\u00a023)", "\n", "Kolomna", ", ", "Russia", "\n", "\n", "\n", "Nationality", "\n", "Russian-Canadian", "\n", "\n", "\n", "Alma\u00a0mater", "\n", "University of Waterloo", "\n(Dropped Out)", "\n", "\n", "\n", "Known\u00a0for", "\n", "Ethereum", ", ", "Bitcoin Magazine", "\n", "\n", "\n", "Awards", "\n", "Thiel Fellowship", "\n", "\n", "\n", "Website", "\n", "http://vitalik.ca", "\n", "\n", "\n", "Scientific career", "\n", "\n", "\n", "Fields", "\n", "Digital contracts", ", ", "Digital currencies", ", ", "Game Theory", "\n", "\n", "\n", "\n", "\n", "\n", "Vitalik Buterin", " (Born January 31, 1994. ", "Russian", ": ", "\u0412\u0438\u0442\u0430\u043b\u0438\u0439 \u0414\u043c\u0438\u0442\u0440\u0438\u0435\u0432\u0438\u0447 \u0411\u0443\u0442\u0435\u0440\u0438\u043d", ") is a ", "Russian", "-", "Canadian", " ", "programmer", " and writer primarily known as a co-founder of ", "Ethereum", " and as a co-founder of ", "Bitcoin Magazine", ".", "[1]", "[2]", "[3]", "\n", "\n", "\n", "\n", "Contents", "\n", "\n", "\n", "1", " ", "Personal life", "\n", "2", " ", "Endeavors", "\n", "\n", "2.1", " ", "Beginnings at ", "Bitcoin Magazine", "\n", "2.2", " ", "Ethereum", "\n", "2.3", " ", "Open source software", "\n", "\n", "\n", "3", " ", "Awards and recognition", "\n", "4", " ", "See also", "\n", "5", " ", "References", "\n", "6", " ", "External links", "\n", "\n", "\n", "\n", "Personal life", "[", "edit", "]", "\n", "Buterin was born in ", "Kolomna", ", ", "Moscow Oblast", ", ", "Russia", " to Dmitry Buterin, a computer scientist, and Natalia Ameline (n\u00e9e Chistyakova).", "[", "citation needed", "]", " He lived in the area until the age of six when his parents emigrated to ", "Canada", " in search of better employment opportunities. While in grade three of elementary school in Canada, Buterin was placed into a class for gifted children and started to understand that he was drawn to math, programming, and economics. He also had the ability to add three-digit numbers in his head at twice the speed of his peers.", "[4]", " Buterin attended the ", "Abelard School", ", a private high school in Toronto, for four years,", "[5]", " which he said, \"proved to be among the most interesting and productive years of my life; the closer connection between students and teachers [&] the level of depth at which the material was taught, made me want to learn, and to focus on learning as my primary goal\".", "[5]", " Buterin has written that although he was \"never particularly inspired by the traditional education system\",", "[5]", " when subjects were presented with \"dedication and focus on intellectual inquiry\", he said he:", "\n", "\n", "\"noticed my attitude and my results almost immediately and drastically change. Education is ultimately much more than simply memorizing individual facts, or even learning individual concepts. [What] matters most: learning how to think, learning how to reason and learning how to learn.\"", "[5]", "\n", "\n", "Buterin learned about Bitcoin, from his father, at age 17.", "[4]", " In 2012, he obtained a Bronze Medal in the International Olympiad in Informatics.", "[6]", " In 2013 he visited developers in other countries who shared his enthusiasm for code. He returned to Toronto later that year and published a white paper proposing Ethereum.", "[7]", " He attended the ", "University of Waterloo", " but dropped out in 2014, when he received the ", "Thiel Fellowship", " in the amount of $100,000,", "[8]", " and went to work on Ethereum full-time.", "[8]", "\n", "On June 25, 2017, Buterin was the subject of a ", "death hoax", " originating from ", "4chan", ".", "[9]", "\n", "Endeavors", "[", "edit", "]", "\n", "\n", "Pybitcointools", " (2013\u2013)", "\n", "Bitcoin Magazine", " (2011\u20132014)", "\n", "Ethereum", " (2013\u2013)", "\n", "\n", "Beginnings at ", "Bitcoin Magazine", "[", "edit", "]", "\n", "Main article: ", "Bitcoin Magazine", "\n", "Buterin met a person on a bitcoin chat forum trying to start a bitcoin blog. The owner offered five bitcoin (about $3.50) to anyone who would write an article for him. Buterin wrote for the site until its website shut down soon thereafter due to Bitcoin's lack of mainstream attention.", "[10]", "\n", "In September 2011, another person reached out to Buterin about a new publication called ", "Bitcoin Magazine", ", a position which Buterin would accept as the first co-founder, and contribute as a leading writer.", "\n", "In addition Buterin wrote about bitcoin-related topics for other publications, including ", "Bitcoin Weekly", ".", "[1]", "[11]", " ", "Bitcoin Magazine", " in 2012 later began publishing a print edition and has been referred to as the first serious publication dedicated to cryptocurrencies.", "[12]", " ", "Bitcoin Magazine", " was then purchased by ", "BTC Media", ", where Buterin continued to write until mid-2014.", "\n", "In addition, he held a position on the editorial board of ", "Ledger", ", a peer-reviewed scholarly journal that publishes full-length original research articles on the subjects of cryptocurrency and blockchain technology.", "[13]", "\n", "Ethereum", "[", "edit", "]", "\n", "Main article: ", "Ethereum", "\n", "He is a co-creator and inventor of Ethereum, described as a \u201cdecentralised mining network and software development platform rolled into one\u201d that facilitates the creation of new cryptocurrencies and programs that share a single ", "blockchain", " (a cryptographic transaction ledger).", "[14]", "[15]", "[16]", "\n", "Ethereum was first described in Buterin's white paper, in late 2013. Buterin argued that bitcoin needed a scripting language for application development. But when he failed to gain agreement, he proposed development of a new platform with a more general scripting language.", "[17]", " About the Ethereum Project, Buterin has said: \"I am truly grateful to have the opportunity to work in such an interesting and interdisciplinary area of industry, where I have the chance to interact with cryptographers, mathematicians and economists prominent in their fields, to help build software and tools that already affect tens of thousands of people around the world, and to work on advanced problems in computer science, economics and philosophy every week.\"", "[5]", "\n", "Open source software", "[", "edit", "]", "\n", "Vitalik has contributed as a developer to other open source software projects.", "[1]", " Some early examples are: Kryptokit, pybitcointools, multisig.info, and btckeysplit.", "[18]", " He also contributed to DarkWallet", "[19]", " by ", "Cody Wilson", ", ", "Bitcoin", " ", "Python", " libraries,", "[20]", " and the ", "cryptocurrency", " marketplace site Egora.", "[2]", "\n", "Awards and recognition", "[", "edit", "]", "\n", "\n", "Thiel Fellowship", " Award, 2014 ", "[21]", "\n", "World Technology Award in the IT Software category, 2014 ", "[22]", "\n", "Fortune", " 40 under 40 list, 2016.", "[23]", "\n", "Forbes", " 30 under 30 list, 2018.", "[24]", "\n", "\n", "See also", "[", "edit", "]", "\n", "\n", "Joseph Lubin", " \u2013 Ethereum co-founder", "\n", "\n", "References", "[", "edit", "]", "\n", "\n", "\n", "^ ", "a", " ", "b", " ", "c", " ", "Finley, Klint (27 January 2014). ", "\"Out in the open: Teenage hacker transforms web into one giant Bitcoin network\"", ". ", "Wired", ". Retrieved ", "7 February", " 2014", ".", "\u00a0", "\n", "^ ", "a", " ", "b", " ", "Melendez, Steven (10 February 2014). ", "\"Could this 20-Year-Old kid make Bitcoin obsolete?\"", ". ", "Fast Company", ". Retrieved ", "22 February", " 2014", ".", "\u00a0", "\n", "^", " ", "del Castillo, Michael (24 September 2014). ", "\"Dark wallet: A radical way to Bitcoin\"", ". ", "The New Yorker", ". Retrieved ", "24 January", " 2014", ".", "\u00a0", "\n", "^ ", "a", " ", "b", " ", "Peck, Morgen (2016-06-13). ", "\"The Uncanny Mind That Built Ethereum\"", ". ", "Backchannel", ". Retrieved ", "2016-06-15", ".", "\u00a0", "\n", "^ ", "a", " ", "b", " ", "c", " ", "d", " ", "e", " ", "\"Students\"", ". ", "Abelard School", ". Retrieved ", "7 October", " 2017", ".", "\u00a0", "\n", "^", " ", "\"Results | IOI 2012\"", ". ", "www.ioi2012.org", ". Retrieved ", "2016-07-21", ".", "\u00a0", "\n", "^", " ", "Braga, Matthew (13 Oct 2016). ", "\"Change Agents 2016: Vitalik Buterin, Ethereum\"", ". Canadian Business", ". Retrieved ", "6 June", " 2017", ".", "\u00a0", "\n", "^ ", "a", " ", "b", " ", "Elliot, Josh (July 2, 2014). ", "\"Why a 20-year-old Toronto drop-out accepted $100,000 to stay out of school\"", ". ", "CTV", ". Retrieved ", "25 April", " 2016", ".", "\u00a0", "\n", "^", " ", "\"4chan's Vitalik Buterin Death Hoax Crashes Ethereum Price\"", ". ", "Bitsonline", ". 2017-06-25", ". Retrieved ", "2017-06-25", ".", "\u00a0", "\n", "^", " ", "\"Interview with Vitalik Buterin\"", ". Bitcorati, Inc. January 10, 2014", ". Retrieved ", "June 3,", " 2017", ".", "\u00a0", "\n", "^", " ", "\"About us \u2013 Bitcoin Magazine\"", ". ", "Bitcoin Magazine", ". Coin Publishing Ltd", ". Retrieved ", "23 February", " 2014", ".", "\u00a0", "\n", "^", " ", "Vigna, Paul; Casey, Michael J. (2015). \"Community\". ", "The Age of Cryptocurrency: How Bitcoin and the Blockchain Are Challenging ..", " ", "Macmillan Publishers", ". p.\u00a088. ", "ISBN", "\u00a0", "9781250065636", ".", "\u00a0", "\n", "^", " ", "\"Ledger\"", ". Retrieved ", "4 February", " 2016", ".", "\u00a0", "\n", "^", " ", "Aron, Jacob (6 February 2014). ", "\"Bitcoin: How its core technology will change the world\"", ". ", "New Scientist", " (2955)", ". Retrieved ", "22 February", " 2014", ".", "\u00a0", "\n", "^", " ", "Hajdarbegovic, Nermin (23 February 2014). ", "\"Ethereum launches 'Cryptocurrency 2.0' network\"", ". ", "CoinDesk", ". Retrieved ", "22 February", " 2014", ".", "\u00a0", "\n", "^", " ", "\"Vitalik Buterin on Ethereum and The Decentralized Future\"", ". ", "Future Thinkers Podcast", ". 2015-04-21", ". Retrieved ", "2016-05-13", ".", "\u00a0", "\n", "^", " ", "\"Facilitating Online Contractual Agreements With Vitalik Buterin\"", ". ", "Eyerys.com", ". 2017-06-29", ". Retrieved ", "2017-06-30", ".", "\u00a0", "\n", "^", " ", "Southurst, Jon (7 January 2014). ", "\"Roger Ver and Erik Voorhees Back Bitcoin Wallet KryptoKit\"", ". ", "CoinDesk", ". Retrieved ", "25 April", " 2016", ".", "\u00a0", "\n", "^", " ", "Kelly, Brian (2015). \"Smart Money, set it and forget it\". ", "The Bitcoin Big Bang: How Alternative Currencies Are About to Change the World", ". ", "Wiley Publishing", ". p.\u00a0156. ", "ISBN", "\u00a0", "978-1118963661", ".", "\u00a0", "\n", "^", " ", "Antonopoulos, Andreas M. (December 20, 2014). \"#4. Keys, Addresses, and Wallets\". ", "Mastering Bitcoin: Unlocking Digital Cryptocurrencies", ". ", "O'Reilly Media", ". p.\u00a082. ", "ISBN", "\u00a0", "978-1449374044", ".", "\u00a0", "\n", "^", " ", "Finley, Klint (5 June 2014). ", "\"$100k Peter Thiel Fellowship Awarded to Ethereum's Vitalik Buterin\"", ". ", "CoinDesk", ". Retrieved ", "11 August", " 2014", ".", "\u00a0", "\n", "^", " ", "The 2014 World Technology Award Winner", "\n", "^", " ", "40 under 40: Vitalik Buterin, 22", ", ", "Fortune", ", September 2016.", "\n", "^", " ", "Forbes 30 under 30", ", ", "Forbes", ", November 2017.", "\n", "\n", "\n", "External links", "[", "edit", "]", "\n", "\n", "Decentralizing Everything with Ethereum's Vitalik Buterin | Disrupt SF 2017", " (YouTube)", "\n", "\n\n\n", "\n", "\n", "\n", "\n"], "lastUpdated": " 11 January 2018, at 13:32."}, +{"title": "Fork (software development)", "text": ["\n", "\n", "\n", "\nA timeline chart of how ", "Linux distributions", " forked.", "\n", "\n", "\n", "In ", "software engineering", ", a ", "project fork", " happens when developers take a copy of ", "source code", " from one ", "software package", " and start independent development on it, creating a distinct and separate piece of software. The term often implies not merely a ", "development branch", ", but also a split in the developer community, a form of ", "schism", ".", "[1]", "\n", "Free and open-source software", " is that which, by definition, may be forked from the original development team without prior permission, without violating ", "copyright", " law. However, licensed forks of proprietary software (", "e.g.", " ", "Unix", ") also happen.", "\n", "\n", "\n", "\n", "Contents", "\n", "\n", "\n", "1", " ", "Etymology", "\n", "2", " ", "Forking of free and open source software", "\n", "3", " ", "Forking proprietary software", "\n", "4", " ", "See also", "\n", "5", " ", "References", "\n", "6", " ", "External links", "\n", "\n", "\n", "\n", "Etymology", "[", "edit", "]", "\n", "The word fork stems from the Latin word furca, meaning a \"fork or similarly shaped instrument.\"", "[2]", " \"Fork\" in the meaning of \"to divide in branches, go separate ways\" has been used as early as the 14th century.", "[3]", " In the software environment, the word evokes the ", "fork", " system call, which causes a running process to split itself into two (almost) identical copies that (typically) diverge to perform different tasks.", "[4]", "\n", "In the context of software development, \"fork\" was used in the sense of creating a revision control \"", "branch", "\" by ", "Eric Allman", " as early as 1980, in the context of ", "SCCS", ":", "[5]", "\n", "\n", "Creating a branch \"forks off\" a version of the program.", "\n", "\n", "The term was in use on ", "Usenet", " by 1983 for the process of creating a subgroup to move topics of discussion to.", "[6]", "\n", "\"Fork\" is not known to have been used in the sense of a community schism during the origins of Lucid Emacs (now ", "XEmacs", ") (1991) or the ", "BSDs", " (1993\u20131994); ", "Russ Nelson", " used the term \"shattering\" for this sort of fork in 1993, attributing it to ", "John Gilmore", ".", "[7]", " However, \"fork\" was in use in the present sense by 1995 to describe the XEmacs split,", "[8]", " and was an understood usage in the ", "GNU", " Project by 1996.", "[9]", "\n", "Forking of free and open source software", "[", "edit", "]", "\n", "Free and open source software may be legally forked without prior approval of those currently developing, managing, or distributing the software per both ", "The Free Software Definition", " and ", "The Open Source Definition", ":", "[10]", "\n", "\n", "The freedom to distribute copies of your modified versions to others (freedom 3). By doing this, you can give the whole community a chance to benefit from your changes. Access to the source code is a precondition for this.", "\n", "\u2014\u2009", "The Free Software Definition", "[11]", "\n", "\n", "\n", "3. Derived Works: The license must allow modifications and derived works, and must allow them to be distributed under the same terms as the license of the original software.", "\n", "\u2014\u2009", "The Open Source Definition", "[12]", "\n", "\n", "In free software, forks often result from a schism over different goals or personality clashes. In a fork, both parties assume nearly identical code bases, but typically only the larger group, or whoever controls the Web site, will retain the full original name and the associated user community. Thus, there is a reputation penalty associated with forking.", "[10]", " The relationship between the different teams can be cordial or very bitter.", "\n", "Eric S. Raymond", ", in his essay ", "Homesteading the Noosphere", ",", "[13]", " stated that \"The most important characteristic of a fork is that it spawns competing projects that cannot later exchange code, splitting the potential developer community\". He notes in the ", "Jargon File", ":", "[14]", "\n", "\n", "Forking is considered a Bad Thing\u2014not merely because it implies a lot of wasted effort in the future, but because forks tend to be accompanied by a great deal of strife and acrimony between the successor groups over issues of legitimacy, succession, and design direction. There is serious social pressure against forking. As a result, major forks (such as the ", "Gnu-Emacs", "/", "XEmacs", " split, the fissioning of the ", "386BSD", " group into three daughter projects, and the short-lived GCC/EGCS split) are rare enough that they are remembered individually in hacker folklore.", "\n", "\n", "David A. Wheeler", " notes", "[10]", " four possible outcomes of a fork, with examples:", "\n", "\n", "The death of the fork. This is by far the most common case. It is easy to declare a fork, but considerable effort to continue independent development and support.", "\n", "A re-merging of the fork (", "e.g.", ", ", "egcs", " becoming \"blessed\" as the new version of ", "gcc", ".)", "\n", "The death of the original (", "e.g.", " the ", "X.Org Server", " succeeding and ", "XFree86", " dying.)", "\n", "Successful branching, typically with differentiation (", "e.g.", ", ", "OpenBSD", " and ", "NetBSD", ".)", "\n", "\n", "Distributed revision control", " (DVCS) tools have popularised a less emotive use of the term \"fork\", blurring the distinction with \"branch\".", "[15]", " With a DVCS such as ", "Mercurial", " or ", "Git", ", the normal way to contribute to a project, is to first create a personal branch of the repository, independent of the main repository, and later seek to have your changes integrated with it. Sites such as ", "GitHub", ", ", "Bitbucket", " and ", "Launchpad", " provide free DVCS hosting expressly supporting independent branches, such that the technical, social and financial barriers to forking a source code repository are massively reduced, and GitHub uses \"fork\" as its term for this method of contribution to a project.", "\n", "Forks often restart version numbering from 0.1 or 1.0 even if the original software was at version 3.0, 4.0, or 5.0. An exception is when the forked software is designed to be a drop-in replacement for the original project, ", "e.g.", " ", "MariaDB", " for ", "MySQL", "[16]", " or ", "LibreOffice", " for ", "OpenOffice.org", ".", "\n", "Forking proprietary software", "[", "edit", "]", "\n", "In ", "proprietary software", ", the copyright is usually held by the employing entity, not by the individual software developers. Proprietary code is thus more commonly forked when the owner needs to develop two or more versions, such as a ", "windowed", " version and a ", "command line", " version, or versions for differing operating systems, such as a ", "word processor", " for ", "IBM PC", " compatible machines and ", "Macintosh", " computers. Generally, such internal forks will concentrate on having the same look, feel, data format, and behavior between platforms so that a user familiar with one can also be productive or share documents generated on the other. This is almost always an economic decision to generate a greater ", "market share", " and thus pay back the associated extra development costs created by the fork.", "\n", "A notable proprietary fork not of this kind is the many varieties of proprietary ", "Unix", "\u2014almost all derived from AT&T Unix under license and all called \"Unix\", but increasingly mutually incompatible.", "[17]", " ", "See", " ", "UNIX wars", ".", "\n", "The ", "BSD licenses", " permit forks to become proprietary software, and some say", "[", "who?", "]", " that commercial incentives thus make proprietisation almost inevitable. Examples include ", "macOS", " (based on the proprietary ", "NeXTSTEP", " and the open source ", "FreeBSD", "), ", "Cedega", " and ", "CrossOver", " (proprietary forks of ", "Wine", ", though CrossOver tracks Wine and contributes considerably), EnterpriseDB (a fork of ", "PostgreSQL", ", adding Oracle compatibility features", "[18]", "), Supported PostgreSQL with their proprietary ESM storage system,", "[19]", " and Netezza's", "[20]", " proprietary highly scalable derivative of PostgreSQL. Some of these vendors contribute back changes to the community project, while some keep their changes as their own competitive advantages.", "\n", "See also", "[", "edit", "]", "\n", "\n", "List of software forks", "\n", "Source port", "\n", "Downstream (software development)", "\n", "Group decision-making", "\n", "Modular programming", "\n", "\n", "Modding", "\n", "\n", "\n", "Custom software", "\n", "Personalization", "\n", "Team effectiveness", "\n", "\n", "Duplicate code", "\n", "\n", "\n", "ROM Hacking", "\n", "\n", "References", "[", "edit", "]", "\n", "\n", "\n", "^", " ", "\"Schism\", with its connotations, is a common usage, ", "e.g.", " ", "\"the Lemacs/FSFmacs schism\"", " (", "Jamie Zawinski", ", 2000), ", "\"Behind the KOffice split\"", " (Joe Brockmeier, ", "Linux Weekly News", ", 2010-12-14), ", "\"Copyright assignment - once bitten, twice shy\"", " (Richard Hillesley, ", "H-Online", ", 2010-08-06), ", "\"Forking is a feature\"", " (", "Anil Dash", ", 2010-09-10), ", "\"The Great Software Schism\"", " (", "Glyn Moody", ", ", "Linux Journal", ", 2006-09-28), ", "\"To Fork Or Not To Fork: Lessons From Ubuntu and Debian\"", " (", "Benjamin Mako Hill", ", 2005).", "\n", "^", " ", "See, e.g., ", "\"furca\" from Etymological Dictionary of Latin by Michiel de Vaan (Ph.D. 2002)", "\n", "^", " ", "Entry 'fork' in Online Etymology Dictionary", "\n", "^", " ", "\"The term fork is derived from the POSIX standard for operating systems: the system call used so that a process generates a copy of itself is called fork().\" ", "Robles, Gregorio; Gonz\u00e1lez-Barahona, Jes\u00fas M. (2012). ", "A Comprehensive Study of Software Forks: Dates, Reasons and Outcomes", " ", "(PDF)", ". OSS 2012 The Eighth International Conference on Open Source Systems", ". Retrieved ", "20 Oct", " 2012", ".", "\u00a0", "\n", "^", " ", "Allman, Eric. ", "\"An Introduction to the Source Code Control System.\"", " Project Ingres, University of California at Berkeley, 1980.", "\n", "^", " ", "Can somebody fork off a \"net.philosophy\"?", " (", "John Gilmore", ", net.misc, 18 January 1983)", "\n", "^", " ", "Shattering\u00a0\u2014 good or bad?", " (Russell Nelson, gnu.misc.discuss, 1 October 1993)", "\n", "^", " ", "Re: Hey Franz: 32K Windows SUCK!!!!!", " (Bill Dubuque, cu.cs.macl.info, 21 September 1995)", "\n", "^", " ", "Lignux?", " (Marcus G. Daniels, gnu.misc.discuss, 7 June 1996)", "\n", "^ ", "a", " ", "b", " ", "c", " ", "Why Open Source Software / Free Software (OSS/FS, FLOSS, or FOSS)? Look at the Numbers!: Forking", " (", "David A. Wheeler", ")", "\n", "^", " ", "Stallman, Richard. ", "\"The Free Software Definition\"", ". Free Software Foundation", ". Retrieved ", "2013-10-15", ".", "\u00a0", "\n", "^", " ", "\"The Open Source Definition\"", ". The Open Source Initiative", ". Retrieved ", "15 October", " 2013", ".", "\u00a0", "\n", "^", " ", "Raymond, Eric S.", " (15 August 2002). ", "\"Promiscuous Theory, Puritan Practice\"", ".", "\u00a0", "\n", "^", " ", "Forked", " (", "Jargon File", "), first added to ", "v4.2.2", ", 20 Aug 2000)", "\n", "^", " ", "e.g.", " ", "Willis, Nathan (15 January 2015). ", "\"An \"open governance\" fork of Node.js\"", ". ", "LWN.net", ". Retrieved ", "15 January", " 2015", ". ", "Forks are a natural part of the open development model\u2014so much so that GitHub famously plasters a \"fork your own copy\" button on almost every page.", "\u00a0", " See also ", "Nyman, Linus (2015). ", "\"Understanding Code Forking in Open Source Software\"", " (Ph.D.). Hanken School of Economics. p.\u00a057. ", "Where practitioners have previously had rather narrow definitions of a fork, [...] the term now appears to be used much more broadly. Actions that would traditionally have been called a branch, a new distribution, code fragmentation, a pseudo-fork, etc. may all now be called forks by some developers. This appears to be in no insignificant part due to the broad definition and use of the term fork by GitHub.", "\u00a0", "\n", "^", " ", "Forked a project, where do my version numbers start?", "\n", "^", " ", "Fear of forking", " - An essay about forking in ", "free software", " projects, by Rick Moen", "\n", "^", " ", "EnterpriseDB", "\n", "^", " ", "Fujitsu Supported PostgreSQL", " ", "Archived", " 20 August 2006 at the ", "Wayback Machine", ".", "\n", "^", " ", "Netezza", "\n", "\n", "\n", "External links", "[", "edit", "]", "\n", "\n", "Right to Fork", " at ", "Meatball Wiki", "\n", "A PhD examining forking: ", "(Nyman, 2015)", " \"Understanding Code Forking in Open Source Software - An examination of code forking, its effect on open source software, and how it is viewed and practiced by developers\"", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "v", "\n", "t", "\n", "e", "\n", "\n", "\n", "Free and open-source software", "\n", "\n", "\n", "\n", "General", "\n", "\n", "\n", "\n", "Alternative terms for free software", "\n", "Comparison of open-source and closed-source software", "\n", "Comparison of source code hosting facilities", "\n", "Free software", "\n", "Free software project directories", "\n", "Gratis versus libre", "\n", "Long-term support", "\n", "Open-source software", "\n", "Open-source software development", "\n", "Outline", "\n", "\n", "\n", "\n", "\n", "\n", "Software", "\npackages", "\n", "\n", "\n", "\n", "Audio", "\n", "Bioinformatics", "\n", "Codecs", "\n", "Collaboration", "\n", "Configuration management", "\n", "Device drivers", "\n", "\n", "Graphics", "\n", "Wireless", "\n", "\n", "\n", "Geophysics", "\n", "Health", "\n", "Mathematics", "\n", "Operating systems", "\n", "Programming languages", "\n", "Routing", "\n", "Statistics", "\n", "Television", "\n", "Video games", "\n", "Web applications", "\n", "\n", "Content management systems", "\n", "E-commerce", "\n", "\n", "\n", "Word processors", "\n", "Android apps", "\n", "iOS apps", "\n", "Commercial", "\n", "Trademarked", "\n", "Formerly proprietary", "\n", "\n", "\n", "\n", "\n", "\n", "Community", "\n", "\n", "\n", "\n", "Free software movement", "\n", "History", "\n", "Open-source software movement", "\n", "Organizations", "\n", "Events", "\n", "\n", "\n", "\n", "\n", "\n", "Licenses", "\n", "\n", "\n", "\n", "AFL", "\n", "Apache", "\n", "APSL", "\n", "Artistic", "\n", "Beerware", "\n", "Boost", "\n", "BSD", "\n", "CC0", "\n", "CDDL", "\n", "EPL", "\n", "GNU GPL", "\n", "GNU LGPL", "\n", "ISC", "\n", "MIT", "\n", "MPL", "\n", "Ms-PL/RL", "\n", "Python", "\n", "Python Software Foundation", "\n", "Sleepycat", "\n", "Unlicense", "\n", "WTFPL", "\n", "zlib", "\n", "\n", "\n", "\n", "\n", "\n", "License types", "\nand standards", "\n", "\n", "\n", "\n", "Comparison of free and open-source software licenses", "\n", "Contributor License Agreement", "\n", "Copyfree", "\n", "Copyleft", "\n", "Debian Free Software Guidelines", "\n", "Definition of Free Cultural Works", "\n", "Free license", "\n", "The Free Software Definition", "\n", "The Open Source Definition", "\n", "Open-source license", "\n", "Permissive software licence", "\n", "Public domain", "\n", "Viral license", "\n", "\n", "\n", "\n", "\n", "\n", "Challenges", "\n", "\n", "\n", "\n", "Binary blob", "\n", "Digital rights management", "\n", "Hardware restrictions", "\n", "License proliferation", "\n", "Mozilla software rebranding", "\n", "Proprietary software", "\n", "SCO/Linux controversies", "\n", "Secure boot", "\n", "Software patents", "\n", "Software security", "\n", "Trusted Computing", "\n", "\n", "\n", "\n", "\n", "\n", "Related topics", "\n", "\n", "\n", "\n", "The Cathedral and the Bazaar", "\n", "Forking", "\n", "Microsoft Open Specification Promise", "\n", "Revolution OS", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", " ", "Book", "\n", " ", "Category", "\n", " ", "Commons", "\n", " ", "Portal", "\n", "\n", "\n", "\n", "\n", "\n", "\n\n\n", "\n", "\n", "\n", "\n"], "lastUpdated": " 20 November 2017, at 16:38."}, +{"title": "Theo de Raadt", "text": ["\n", "\n", "Theo de Raadt", "\n", "\n", "\n", "\n", "Theo de Raadt in 2013", "\n", "\n", "\n", "\n", "Born", "\n", "(", "1968-05-19", ")", " May 19, 1968 ", "(age\u00a049)", "\n", "Pretoria", ", ", "South Africa", "\n", "\n", "\n", "Residence", "\n", "Calgary", ", ", "Alberta", ", ", "Canada", "\n", "\n", "\n", "Nationality", "\n", "Canadian", "\n", "\n", "\n", "Alma\u00a0mater", "\n", "University of Calgary", "\n", "\n", "\n", "Known\u00a0for", "\n", "NetBSD", ", ", "OpenBSD", ", ", "OpenSSH", ", advocacy", "\n", "\n", "\n", "Awards", "\n", "Award for the Advancement of Free Software", "\n", "\n", "\n", "Scientific career", "\n", "\n", "\n", "Fields", "\n", "computer science, free software development", "\n", "\n", "\n", "Institutions", "\n", "FSA Corporation", "\n", "\n", "\n", "\n", "\n", "\n", "Theo de Raadt", " (", "/", "\u02c8", "\u03b8", "i\u02d0", ".", "o\u028a", " ", "d", "\u025b", "\u02c8", "r", "\u0254\u02d0", "t", "/", "; ", "Dutch:\u00a0", "[\u02c8te\u02d0.jo\u02d0 d\u0259\u02c8ra\u02d0t]", "; born May 19, 1968) is a ", "software engineer", " who lives in ", "Calgary", ", ", "Alberta", ", ", "Canada", ". He is the founder and leader of the ", "OpenBSD", " and ", "OpenSSH", " projects, and was also a founding member of the ", "NetBSD", " project.", "\n", "\n", "\n", "\n", "Contents", "\n", "\n", "\n", "1", " ", "Childhood", "\n", "2", " ", "NetBSD", "\n", "3", " ", "OpenBSD", "\n", "4", " ", "Outspokenness", "\n", "\n", "4.1", " ", "DARPA funding cancellation", "\n", "4.2", " ", "Free driver advocacy", "\n", "4.3", " ", "Clash with Linux developers", "\n", "\n", "\n", "5", " ", "References", "\n", "6", " ", "External links", "\n", "\n", "\n", "\n", "Childhood", "[", "edit", "]", "\n", "Theo de Raadt is the eldest of four children to a ", "Dutch", " father and a ", "South African", " mother, with two sisters and a brother. Concern over the mandatory two-year armed forces ", "conscription", " in South Africa led the family to emigrate to Calgary, Alberta, Canada in November 1977. In 1983, the ", "largest recession in Canada", " since the ", "Great Depression", " sent the family to the ", "Yukon", ". Prior to the move, De Raadt got his first computer, a ", "Commodore VIC-20", ", which was soon followed by an ", "Amiga", ". It is with these computers that he first began to develop software.", "[1]", "\n", "In 1992, he obtained a ", "BSc", " in ", "Computer Science", " from the ", "University of Calgary", ".", "\n", "NetBSD", "[", "edit", "]", "\n", "The ", "NetBSD", " project was founded in 1993 by Chris Demetriou, Adam Glass, Charles Hannum, and De Raadt, who collectively felt frustration at the speed and quality of ", "Jolix", ", the standard Berkeley software distribution then, and believed that a more open development model would be of greater benefit to development of an operating system. Jolix, also known as ", "386BSD", ", was derived from the original University of California Berkeley's 4.3BSD release, while the new NetBSD project would merge relevant code from the Networking/2 and 386BSD releases. The new project would centre its focus on clean, portable, correct code with the goal being to produce a unified, multi-platform, production-quality, BSD-based operating system.", "\n", "Because of the importance of networks such as the Internet in the distributed, collaborative nature of its development, De Raadt suggested the name \"NetBSD\", which the three other founders agreed upon.", "[", "citation needed", "]", "\n", "The first NetBSD source code repository was established on March 21, 1993 and the initial release, NetBSD 0.8, was made in April 1993. This was derived from 386BSD 0.1 plus the version 0.2.2 unofficial patchkit, with several programs from the Net/2 release missing from 386BSD re-integrated, and various other improvements. In August 1993, NetBSD 0.9 was released, which contained many enhancements and bug fixes. This was still a ", "PC", "-platform-only release, although by this time work was underway to add support for other architectures.", "\n", "NetBSD 1.0 was released in October, 1994. This was the first multi-platform release, supporting the ", "IBM PC compatible", ", ", "HP 9000", " Series 300, ", "Amiga", ", ", "68k", " ", "Macintosh", ", ", "Sun-4c", " series and ", "PC532", ". Also in this release, the legally encumbered Net/2-derived source code was replaced with equivalent code from 4.4BSD-lite, in accordance with the ", "USL v BSDi", " lawsuit settlement. De Raadt played a vital role in the creation of the ", "SPARC", " port, as together with Chuck Cranor,", "[2]", " he implemented much of the initial code.", "\n", "OpenBSD", "[", "edit", "]", "\n", "In December 1994, De Raadt was asked to resign his position as a senior developer and member of the NetBSD core team, and his access to the source code repository was revoked. The reason for this is not wholly clear, although there are claims that it was due to personality clashes within the NetBSD project and on its ", "mailing lists", ".", "[3]", " De Raadt has been criticized for having a somewhat abrasive personality: in his book, ", "Free for All", ", Peter Wayner claims that De Raadt \"began to rub some people the wrong way\" before the split from NetBSD;", "[4]", " while ", "Linus Torvalds", " has described him as \"difficult\".", "[5]", " Many have different feelings: the same interviewer describes De Raadt's \"transformation\" on founding OpenBSD and his \"desire to take care of his team,\" some find his straightforwardness refreshing, and few deny he is a talented ", "hacker", "[6]", " and security \"guru\".", "[7]", "\n", "In October 1995, De Raadt founded OpenBSD, a new project ", "forked", " from NetBSD 1.0. The initial ", "release", ", OpenBSD 1.2, was made in July 1996, followed in October of the same year by OpenBSD 2.0.", "[8]", " Since then, the project has followed a schedule of a release every six months, each of which is maintained and supported for one year.", "\n", "Outspokenness", "[", "edit", "]", "\n", "\n", "\n", "\n", "\n", "Jon \"maddog\" Hall", " presents De Raadt with ", "daemon", " horns at ", "FISL8", "\n", "\n", "\n", "De Raadt has been a vocal advocate of free software since the inception of OpenBSD, but he is also a strong proponent of free speech, having on occasion had rather public disputes with various groups, from Linux advocates to governments. This outspoken attitude, while sometimes the cause of conflict, has also led him to acclaim; De Raadt has given presentations at open source, free software and security conferences around the world\u2014including ", "FOSDEM", " in ", "Brussels", ", ", "Belgium", ", ", "Usenix", " in ", "San Antonio, Texas", ", ", "U.S.", ", ", "AUUG", " Conference in ", "Melbourne", ", ", "Australia", " and ", "FISL", " in ", "Porto Alegre", ", RS, ", "Brazil", ".", "\n", "DARPA funding cancellation", "[", "edit", "]", "\n", "After De Raadt stated his disapproval of the U.S.-led ", "occupation of Iraq", " in an April, 2003 ", "interview", "[9]", " with ", "Toronto", "'s ", "Globe and Mail", ", a multi-million-dollar ", "US Department of Defense", " grant to the ", "University of Pennsylvania", "'s ", "POSSE project", " was cancelled, effectively ending the project. Funding from the grant had been used in the development of OpenSSH and OpenBSD, as well as many other projects and was to be used to pay for the ", "hackathon", " planned for May 8, 2003. Despite money from the grant already having been used to secure accommodations for sixty developers for a week, the money was reclaimed by the government at a loss and the hotel was told not to allow the developers to pay the reclaimed money to resecure the rooms.", "[10]", " This resulted in criticism among some that the US military held an anti-", "free speech", " attitude. The grant termination was, however, not as bad a blow as some portrayed it. The project's supporters rallied to help and the hackathon went on almost as planned. The funding was cut mere months before the end of the grant, further fueling the speculations regarding the situation surrounding the grant's termination.", "\n", "Free driver advocacy", "[", "edit", "]", "\n", "De Raadt is also well known for his advocacy of ", "free software", " ", "drivers", ". He has long been critical of developers of ", "Linux", " and other free platforms for their tolerance of non-free drivers and acceptance of ", "non-disclosure agreements", ".", "\n", "In particular, De Raadt has worked to convince ", "wireless", " hardware vendors to allow the ", "firmware", " images of their products to be freely redistributed. These efforts have been largely successful, particularly in negotiations with ", "Taiwanese", " companies, leading to many new wireless drivers. De Raadt has commented that \"most Taiwanese vendors give us documentation almost immediately\", allowing open source drivers to reliably support devices, as opposed to the lack of willingness from US companies like ", "Intel", " and ", "Broadcom", " to release firmware images free from ", "licensing", " restrictions.", "[11]", "\n", "For this De Raadt was awarded the ", "Free Software Foundation", "'s 2004 ", "Award for the Advancement of Free Software", ".", "[12]", "\n", "Clash with Linux developers", "[", "edit", "]", "\n", "In April 2007, De Raadt was involved in a controversy involving the use of ", "GPL", " code from the Linux ", "bcm43xx", " driver in the BSD ", "bcw", " driver.", "[13]", "[14]", " Linux developers accused the BSD community of infringing GPL code, but De Raadt denied infringement, arguing that the BSD driver was not \"released\". He also maintained that the conflict was not about GPL, but the way Linux developer ", "Michael Buesch", " handled the situation. To Buesch's email, he responded:", "[15]", "\n", "\n", "It will be resolved in our tree, but it is up to him which way he does it. But when you approach issues like this with comments like \"We'd like you to start contacting us to resolve the issue now\" and your first mail is cc'd to a couple hundred people.... in the future, please think more carefully, ok?", "\n", "Because right now, in that mail, you've pretty much done Broadcom's job for them. You've told the entire BSD community who may want to use a driver for this chip later, that because of a few GPL issues you are willing to use very strong words\u2014published very widely\u2014to disrupt the efforts of one guy who is trying to do things for them. And, you are going to do this using the GPL, even. You did not privately mail that developer. No, you basically went public with it.", "\n", "That is how about half the user and developer community will see it. They will see your widely posted mail as an overly strong position.", "\n", "\n", "Another clash occurred in August 2007, when a group of Linux developers attempted to modify the license of dual-licensed ath5k driver. De Raadt summarized the issue as follows:", "[16]", "\n", "\n", "GPL fans said the great problem we would face is that companies would take our BSD code, modify it, and not give back. Nope\u2014the great problem we face is that people would wrap the GPL around our code, and lock us out in the same way that these supposed companies would lock us out. Just like the Linux community, we have many companies giving us code back, all the time. But once the code is GPL'd, we cannot get it back.", "\n", "\n", "References", "[", "edit", "]", "\n", "\n", "\n", "^", " ", "The Age article: ", "\"Staying on the cutting edge\"", ". October 8, 2004. Accessed April 5, 2006.", "\n", "^", " ", "\"Chuck Cranor's Home Page\"", ".", "\u00a0", "\n", "^", " ", "Glass, Adam. Message to netbsd-users: ", "Theo De Raadt(sic)", ",", " December 23, 1994. Visited January 8, 2006.", "\n", "^", " ", "Wayner, Peter. ", "Free For All: How Linux and the Free Software Movement Undercut the High Tech Titans,", " ", "18.3 Flames, Fights, and the Birth of OpenBSD", ", 2000. Visited January 6, 2006.", "\n", "^", " ", "Forbes. ", "Is Linux For Losers?", " June 16, 2005. Visited January 8, 2006.", "\n", "^", " ", "In ", "this message", " the NetBSD core team acknowledge De Raadt's \"positive contributions\" to the project despite their problems with him.", "\n", "^", " ", "Tux Journal. ", "A good morning with: Theo de Raadt", ",", " June 2, 2005. Visited April 21, 2006 (original is ", "404", "; please see a ", "cached copy on archive.org", ")", "\n", "^", " ", "Raadt, Theo de. Mail to openbsd-announce: ", "The OpenBSD 2.0 release", ",", " October 18, 1996. Visited December 10, 2005.", "\n", "^", " ", "Globe and Mail article: ", "\"U.S. military helps fund Calgary hacker\"", ". April 6, 2003. Accessed October 30, 2006.", "\n", "^", " ", "LWN.net article: ", "\"DARPA Cancels OpenBSD Funding\"", ". April 24, 2003. Accessed April 5, 2006.", "\n", "^", " ", "Andrews, Jeremy (May 2, 2006). ", "\"Interview: Theo de Raadt\"", ". Archived from ", "the original", " on April 24, 2013.", "\u00a0", "\n", "^", " ", "Lee, Matt (February 26, 2005). ", "\"Theo de Raadt presented with the 2004 Free Software Award\"", ". Free Software Foundation.", "\u00a0", "\n", "^", " ", "LXer article: ", "Broadcom Driver Dispute Uglier Than Necessary", ". April 7, 2007. Accessed April 8, 2007.", "\n", "^", " ", "Thread on gmane.linux.kernel.wireless.general: ", "OpenBSD bcw: Possible GPL license violation issues", " Various dates beginning April 4, 2007. Accessed April 8, 2007.", "\n", "^", " ", "Theo de Raadt (4 April 2007). ", "\"OpenBSD bcw: Possible GPL license violation issues\"", ". Retrieved ", "28 May", " 2017", " \u2013 via ", "marc.info", ".", "\u00a0", "\n", "^", " ", "de Raadt, Theo (August 31, 2007). ", "\"That whole \"Linux stealing our code\" thing\"", ". LKML.org.", "\u00a0", "\n", "\n", "\n", "External links", "[", "edit", "]", "\n", "\n", "\n", "Free software portal", "\n", "\n", "\n", "\n", "\n", "\n", "Wikiquote has quotations related to: ", "Theo de Raadt", "\n", "\n", "\n", "\n", "\n", "\n", "Wikimedia Commons has media related to ", "Theo de Raadt", ".", "\n", "\n", "\n", "\n", "Theo de Raadt's Web site", "\n", "Interview (2006): Theo de Raadt", ", at ", "KernelTrap.org", " (copy at Internet Archive).", "\n", "Theo de Raadt Responds", ", interview at ", "Slashdot", ".", "\n", "Interview (2001): Theo de Raadt", ", at ", "KernelTrap.org", " (copy at Internet Archive).", "\n", "Is Linux For Losers?", ", interview at ", "Forbes.com", ".", "\n", "Theo de Raadt presented with the 2004 Free Software Award", "\n", "NNDB: Theo de Raadt", "\n", "Staying on the cutting edge", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "v", "\n", "t", "\n", "e", "\n", "\n", "\n", "The ", "OpenBSD", " Project", "\n", "\n", "\n", "\n", "Operating system", "\n", "\n", "\n", "\n", "OpenBSD", "\n", "\n", "version history", "\n", "security", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "Related projects", "\n", "\n", "\n", "\n", "CARP", "\n", "LibreSSL", "\n", "mandoc", "\n", "OpenSSH", "\n", "OpenBGPD", "\n", "OpenIKED", "\n", "OpenOSPFD", "\n", "OpenNTPD", "\n", "OpenSMTPD", "\n", "PF", "\n", "sndio", "\n", "spamd", "\n", "Systrace", "\n", "tmux", "\n", "Xenocara", "\n", "\n", "cwm", "\n", "\n", "\n", "W^X", "\n", "\n", "\n", "\n", "\n", "\n", "People", "\n", "\n", "\n", "\n", "Theo de Raadt", "\n", "Niels Provos", "\n", "OpenBSD Foundation", "\n", "Plaid Tongued Devils", "\n", "\n", "\n", "\n", "\n", "\n", "Resources", "\n", "\n", "\n", "\n", "OpenBSD Journal", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "Authority control", "\n", "\n", "\n", "\n", "WorldCat Identities", "\n", "VIAF", ": ", "106072661", "\n", "MusicBrainz", ": ", "11ff06a3-6127-4b6d-9b43-bafcd8c650da", "\n", "DBLP", ": ", "54/954", "\n", "\n", "\n", "\n", "\n", "\n", "\n\n\n", "\n", "\n", "\n", "\n"], "lastUpdated": " 18 January 2018, at 07:07."}, +{"title": "Altruism", "text": ["For the concept in behavioral ecology, see ", "Altruism (biology)", ".", "\n", "\n", "\n", "\n", "\nGiving ", "alms", " to the poor is often considered an altruistic action.", "\n", "\n", "\n", "Altruism", " or ", "selflessness", " is the principle or practice of concern for the ", "welfare", " of others. It is a traditional ", "virtue", " in many cultures and a core aspect of various religious traditions and secular worldviews, though the concept of \"others\" toward whom concern should be directed can vary among cultures and religions. Altruism or selflessness is the opposite of ", "selfishness", ". The word was coined by the French philosopher ", "Auguste Comte", " in French, as ", "altruisme", ", for an ", "antonym", " of ", "egoism", ".", "[1]", "[2]", " He derived it from the Italian ", "altrui", ", which in turn was derived from Latin ", "alteri", ", meaning \"", "other people", "\" or \"somebody else\".", "[3]", "\n", "Altruism in biological observations in field populations of the day organisms can be defined as an individual performing an action which is at a cost to themselves (e.g., pleasure and quality of life, time, probability of survival or reproduction), but benefits, either directly or indirectly, another third-party individual, without the expectation of reciprocity or compensation for that action. Steinberg suggests a definition for altruism in the clinical setting, that is \"intentional and voluntary actions that aim to enhance the welfare of another person in the absence of any quid pro quo external rewards\".", "[4]", "\n", "Altruism can be distinguished from feelings of ", "loyalty", ", in that whilst the latter is predicated upon social relationships, altruism does not consider relationships. Much debate exists as to whether ", "\"true\"", " altruism is possible in human psychology. The theory of ", "psychological egoism", " suggests that no act of sharing, helping or sacrificing can be described as truly altruistic, as the actor may receive an intrinsic reward in the form of personal ", "gratification", ". The validity of this argument depends on whether ", "intrinsic rewards", " qualify as \"benefits\". The actor also may not be expecting a reward.", "\n", "The term ", "altruism", " may also refer to an ethical doctrine that claims that individuals are morally obliged to benefit others. Used in this sense, it is usually contrasted with ", "egoism", ", which is defined as acting to the benefit of one's self.", "\n", "\n", "\n", "\n", "Contents", "\n", "\n", "\n", "1", " ", "The notion of altruism", "\n", "2", " ", "Scientific viewpoints", "\n", "\n", "2.1", " ", "Anthropology", "\n", "2.2", " ", "Evolutionary explanations", "\n", "2.3", " ", "Neurobiology", "\n", "2.4", " ", "Psychology", "\n", "2.5", " ", "Sociology", "\n", "2.6", " ", "Pathological altruism", "\n", "\n", "\n", "3", " ", "Religious viewpoints", "\n", "\n", "3.1", " ", "Buddhism", "\n", "3.2", " ", "Jainism", "\n", "3.3", " ", "Christianity", "\n", "3.4", " ", "Islam", "\n", "3.5", " ", "Judaism", "\n", "3.6", " ", "Sikhism", "\n", "3.7", " ", "Hinduism", "\n", "\n", "\n", "4", " ", "Philosophy", "\n", "5", " ", "Genetics", "\n", "6", " ", "See also", "\n", "7", " ", "Notes", "\n", "8", " ", "References", "\n", "9", " ", "External links", "\n", "\n", "\n", "\n", "The notion of altruism", "[", "edit", "]", "\n", "The concept has a long history in ", "philosophical", " and ", "ethical", " thought. The term was originally coined in the 19th century by the founding ", "sociologist", " and ", "philosopher of science", ", ", "Auguste Comte", ", and has become a major topic for ", "psychologists", " (especially ", "evolutionary psychology", " researchers), ", "evolutionary biologists", ", and ", "ethologists", ". Whilst ideas about altruism from one field can affect the other fields, the different methods and focuses of these fields always lead to different perspectives on altruism. In simple terms, altruism is caring about the welfare of other people and acting to help them.", "\n", "Scientific viewpoints", "[", "edit", "]", "\n", "Anthropology", "[", "edit", "]", "\n", "Marcel Mauss", "'s book ", "The Gift", " contains a passage called \"Note on alms\". This note describes the evolution of the notion of alms (and by extension of altruism) from the notion of sacrifice. In it, he writes:", "\n", "\n", "Alms are the fruits of a moral notion of the gift and of fortune on the one hand, and of a notion of sacrifice, on the other. Generosity is an obligation, because Nemesis avenges the poor and the gods for the superabundance of happiness and wealth of certain people who should rid themselves of it. This is the ancient morality of the gift, which has become a principle of justice. The gods and the spirits accept that the share of wealth and happiness that has been offered to them and had been hitherto destroyed in useless sacrifices should serve the poor and children.", "\n", "\n", "\n", "Compare ", "Altruism (ethics) \u2013 perception of altruism as self-sacrifice", ".", "\n", "Compare ", "explanation of alms in various scriptures", ".", "\n", "\n", "Evolutionary explanations", "[", "edit", "]", "\n", "Main articles: ", "Altruism in animals", ", ", "Evolution of morality", ", and ", "Evolutionary ethics", "\n", "\n", "\n", "\n", "\nGiving alms to beggar children", "\n", "\n", "\n", "In the science of ", "ethology", " (the study of animal behaviour), and more generally in the study of ", "social evolution", ", altruism refers to behaviour by an individual that increases the ", "fitness", " of another individual while decreasing the fitness of the actor.", "[5]", " In ", "evolutionary psychology", " this may be applied to a wide range of human behaviors such as charity, emergency aid, help to coalition partners, ", "tipping", ", courtship gifts, production of ", "public goods", ", and ", "environmentalism", ".", "[6]", "\n", "Theories of apparently altruistic behavior were accelerated by the need to produce theories compatible with evolutionary origins. Two related strands of research on altruism have emerged from traditional evolutionary analyses and from ", "evolutionary game theory", " a mathematical model and analysis of behavioural strategies.", "\n", "Some of the proposed mechanisms are:", "\n", "\n", "Kin selection", ".", "[7]", " That animals and humans are more altruistic towards close kin than to distant kin and non-kin has been confirmed in numerous studies across many different cultures. Even subtle cues indicating kinship may unconsciously increase altruistic behavior. One kinship cue is facial resemblance. One study found that slightly altering photographs so that they more closely resembled the faces of study participants increased the trust the participants expressed regarding depicted persons. Another cue is having the same family name, especially if rare, and this has been found to increase helpful behavior. Another study found more cooperative behavior the greater the number of perceived kin in a group. Using kinship terms in political speeches increased audience agreement with the speaker in one study. This effect was especially strong for firstborns, who are typically close to their families.", "[6]", "\n", "Vested interests. People are likely to suffer if their friends, allies, and similar social ", "ingroups", " suffer or even disappear. Helping such group members may therefore eventually benefit the altruist. Making ingroup membership more noticeable increases cooperativeness. Extreme self-sacrifice towards the ingroup may be adaptive if a hostile ", "outgroup", " threatens to kill the entire ingroup.", "[6]", "\n", "Reciprocal altruism", ".", "[8]", " See also ", "Reciprocity (evolution)", ".\n", "\n", "Direct ", "reciprocity", ".", "[9]", " Research shows that it can be beneficial to help others if there is a chance that they can and will reciprocate the help. The effective ", "tit for tat", " strategy is one ", "game theoretic", " example. Many people seem to be following a similar strategy by cooperating if and only if others cooperate in return.", "[6]", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "One consequence is that people are more cooperative if it is more likely that individuals will interact again in the future. People tend to be less cooperative if they perceive that the frequency of helpers in the population is lower. They tend to help less if they see non-cooperativeness by others and this effect tend to be stronger than the opposite effect of seeing cooperative behaviors. Simply changing the cooperative framing of a proposal may increase cooperativeness such as calling it a \"Community Game\" instead of a \"Wall Street Game.\"", "[6]", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "A tendency towards reciprocity implies that people will feel obligated to respond if someone helps them. This has been used by charities that give small gifts to potential donors hoping thereby to induce reciprocity. Another method is to announce publicly that someone has given a large donation. The tendency to reciprocate can even generalize so people become more helpful toward others in general after being helped. On the other hand, people will avoid or even retaliate against those perceived not to be cooperating. People sometimes mistakenly fail to help when they intended to, or their helping may not be noticed, which may cause unintended conflicts. As such, it may be an optimal strategy to be slightly forgiving of and have a slightly generous interpretation of non-cooperation.", "[6]", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "People are more likely to cooperate on a task if they can communicate with one another first. This may be due to better assessments of cooperativeness or due to exchange of promises. They are more cooperative if they can gradually build trust, instead of being asked to give extensive help immediately. Direct reciprocity and cooperation in a group can be increased by changing the focus and incentives from intra-group competition to larger scale competitions such as between groups or against the general population. Thus, giving grades and promotions based only on an individual's performance relative to a small local group, as is common, may reduce cooperative behaviors in the group.", "[6]", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "Indirect reciprocity.", "[10]", " The avoidance of poor reciprocators and cheaters causes a person's ", "reputation", " to become very important. A person with a good reputation for reciprocity have a higher chance of receiving help even from persons they have had no direct interactions with previously.", "[6]", "\n", "Strong reciprocity", ".", "[11]", " A form of reciprocity where some individuals seem to spend more resources on cooperating and punishing than would be most beneficial as predicted by several established theories of altruism. A number of theories have been proposed as explanations as well as criticisms regarding its existence.", "\n", "Pseudo-reciprocity.", "[12]", " An organism behaves altruistically and the recipient does not reciprocate but has an increased chance of acting in a way that is selfish but also as a byproduct benefits the altruist.", "\n", "\n", "\n", "Costly signaling", " and the ", "handicap principle", ".", "[13]", " Since altruism takes away resources from the altruist it can be an \"honest signal\" of resource availability and the abilities needed to gather resources. This may signal to others that the altruist is a valuable potential partner. It may also be a signal of interactive and cooperative intentions since those not interacting further in the future gain nothing from the costly signaling. It is unclear if costly signaling can indicate a long-term cooperative personality but people have increased trust for those who help. Costly signaling is pointless if everyone has the same traits, resources, and cooperative intentions but become a potentially more important signal if the population increasingly varies on these characteristics.", "[6]", "\n", "\n", "\n", "Hunters widely sharing the meat has been seen as a costly signal of ability and research has found that good hunters have higher reproductive success and more adulterous relations even if they themselves receive no more of the hunted meat than anyone else. Similarly, holding large feasts and giving large donations has been seen as ways of demonstrating one's resources. Heroic risk-taking has also been interpreted as a costly signal of ability.", "[6]", "\n", "\n", "\n", "\n", "\n", "\nVolunteers assist Hurricane victims at the ", "Houston Astrodome", ", following Hurricane Katrina.", "\n", "\n", "\n", "\n", "Both indirect reciprocity and costly signaling depend on the value of reputation and tend to make similar predictions. One is that people will be more helping when they know that their helping behavior will be communicated to people they will interact with later, is publicly announced, is discussed, or is simply being observed by someone else. This have been documented in many studies. The effect is sensitive to subtle cues such as people being more helpful when there were stylized eyespots instead of a logo on a computer screen. Weak reputational cues such as eyespots may become unimportant if there are stronger cues present and may lose their effect with continued exposure unless reinforced with real reputational effects.", "[6]", " Public displays such as public weeping for dead celebrities and participation in demonstrations may be influenced by a desire to be seen as altruistic. People who know that they are publicly monitored sometimes even wastefully donate money they know are not needed by recipient which may be because of reputational concerns.", "[14]", "\n", "\n", "\n", "Women have been found to find altruistic men to be attractive partners. When looking for a long-term partner, altruism may be a preferred trait as it may indicate that he is also willing to share resources with her and her children. It has been shown that men perform altruistic acts in the early stages of a romantic relationship or simply when in the presence of an attractive woman. While both sexes state that kindness is the most preferable trait in a partner there is some evidence that men place less value on this than women and that women may not be more altruistic in presence of an attractive man. Men may even avoid altruistic women in short-term relationships which may be because they expect less success.", "[6]", "[14]", "\n", "\n", "\n", "People may compete over getting the benefits of a high reputation which may cause ", "competitive altruism", ". On the other hand, in some experiments a proportion of people do not seem to care about reputation and they do not help more even if this is conspicuous. This may possibly be due to reasons such as ", "psychopathy", " or that they are so attractive that they need not be seen to be altruistic. The reputational benefits of altruism occur in the future as compared to the immediate costs of altruism in the present. While humans and other organisms generally place less value on future costs/benefits as compared to those in the present, some have shorter time horizons than others and these people tend to be less cooperative.", "[6]", "\n", "\n", "\n", "Explicit ", "extrinsic", " rewards and punishments have been found to sometimes actually have the opposite effect on behaviors compared to intrinsic rewards. This may be because such extrinsic, top-down incentives may replace (partially or in whole) intrinsic and reputational incentives, motivating the person to focus on obtaining the extrinsic rewards, which overall may make the behaviors less desirable. Another effect is that people would like altruism to be due to a personality characteristic rather than due to overt reputational concerns and simply pointing out that there are reputational benefits of an action may actually reduce them. This may possibly be used as derogatory tactic against altruists, especially by those who are non-cooperators. A counterargument is that doing good due to reputational concerns is better than doing no good at all.", "[6]", "\n", "\n", "\n", "Group selection", ". It has controversially been argued by some evolutionary scientists such as ", "David Sloan Wilson", " that natural selection can act at the level of non-kin groups to produce adaptations that benefit a non-kin group even if these adaptions are detrimental at the individual level. Thus, while altruistic persons may under some circumstances be outcompeted by less altruistic persons at the individual level, according to group selection theory the opposite may occur at the group level where groups consisting of the more altruistic persons may outcompete groups consisting of the less altruistic persons. Such altruism may only extend to ingroup members while there may instead prejudice and antagonism against outgroup members (See also ", "in-group favoritism", "). Group selection theory has been criticized by many other evolutionary scientists.", "[15]", "[16]", "\n", "\n", "\n", "\n", "\n", "\nHelping the ", "homeless", " in New York City", "\n", "\n", "\n", "Such explanations do not imply that humans are always consciously calculating how to increase their ", "inclusive fitness", " when they are doing altruistic acts. Instead, evolution has shaped psychological mechanisms, such as emotions, that promote altruistic behaviors.", "[6]", "\n", "Every single instance of altruistic behavior need not always increase inclusive fitness; altruistic behaviors would have been selected for if such behaviors on average increased inclusive fitness in the ancestral environment. This need not imply that on average 50% or more of altruistic acts were beneficial for the altruist in the ancestral environment; if the benefits from helping the right person were very high it would be beneficial to err on the side of caution and usually be altruistic even if in most cases there were no benefits.", "[6]", "\n", "The benefits for the altruist may be increased and the costs reduced by being more altruistic towards certain groups. Research has found that people are more altruistic to kin than to no-kin, to friends than to strangers, to those attractive than to those unattractive, to non-competitors than to competitors, and to members ingroups than to members of outgroup.", "[6]", "\n", "The study of altruism was the initial impetus behind ", "George R. Price", "'s development of the ", "Price equation", ", which is a mathematical equation used to study genetic evolution. An interesting example of altruism is found in the cellular ", "slime moulds", ", such as ", "Dictyostelium", " mucoroides.", " These protists live as individual ", "amoebae", " until starved, at which point they aggregate and form a multicellular fruiting body in which some cells sacrifice themselves to promote the survival of other cells in the fruiting body.", "\n", "Selective investment theory proposes that close social bonds, and associated emotional, cognitive, and neurohormonal mechanisms, evolved in order to facilitate long-term, high-cost altruism between those closely depending on one another for survival and reproductive success.", "[17]", "[18]", "\n", "Such cooperative behaviors have sometimes been seen as arguments for left-wing politics such by the Russian zoologist and anarchist ", "Peter Kropotkin", " in his 1902 book ", "Mutual Aid: A Factor of Evolution", " and ", "Peter Singer", " in his book ", "A Darwinian Left", ".", "\n", "Neurobiology", "[", "edit", "]", "\n", "Jorge Moll and Jordan Grafman, neuroscientists at the ", "National Institutes of Health", " and LABS-D'Or Hospital Network (J.M.) provided the first evidence for the neural bases of altruistic giving in normal healthy volunteers, using ", "functional magnetic resonance imaging", ". In their research, published in the ", "Proceedings of the National Academy of Sciences", " USA in October 2006,", "[19]", " they showed that both pure monetary rewards and charitable donations activated the ", "mesolimbic", " reward pathway, a primitive part of the brain that usually responds to food and sex. However, when volunteers generously placed the interests of others before their own by making charitable donations, another brain circuit was selectively activated: the subgenual cortex/", "septal region", ". These structures are intimately related to social attachment and bonding in other species. Altruism, the experiment suggested, was not a superior moral faculty that suppresses basic selfish urges but rather was basic to the brain, hard-wired and pleasurable.", "[20]", " One brain region, the subgenual ", "anterior cingulate", " cortex/", "basal forebrain", ", contributes to learning altruistic behavior, especially in those with trait empathy.", "[21]", " The same study has shown a connection between giving to charity and the promotion of social bonding.", "[22]", "\n", "In fact, in an experiment published in March 2007 at the ", "University of Southern California", " neuroscientist ", "Antonio R. Damasio", " and his colleagues showed that subjects with damage to the ", "ventromedial prefrontal cortex", " lack the ability to empathically feel their way to moral answers, and that When confronted with moral dilemmas, these brain-damaged patients coldly came up with \"end-justifies-the-means\" answers, leading Damasio to conclude that the point was not that they reached immoral conclusions, but that when they were confronted by a difficult issue - in this case as whether to shoot down a passenger plane hijacked by terrorists before it hits a major city - these patients appear to reach decisions without the anguish that afflicts those with normally functioning brains. According to ", "Adrian Raine", ", a clinical neuroscientist also at the University of Southern California, one of this study's implications is that society may have to rethink how it judges immoral people: \"Psychopaths often feel no empathy or remorse. Without that awareness, people relying exclusively on reasoning seem to find it harder to sort their way through moral thickets. Does that mean they should be held to different standards of accountability?\"", "[20]", "\n", "In another study, in the 1990s, Dr. Bill Harbaugh, a ", "University of Oregon", " economist, concluded people are motivated to give for reasons of personal prestige and in a similar fMRI scanner test in 2007 with his psychologist colleague Dr. Ulrich Mayr, reached the same conclusions of Jorge Moll and Jordan Grafman about giving to charity, although they were able to divide the study group into two groups: \"egoists\" and \"altruists\". One of their discoveries was that, though rarely, even some of the considered \"egoists\" sometimes gave more than expected because that would help others, leading to the conclusion that there are other factors in cause in charity, such as a person's environment and values.", "[22]", "\n", "Psychology", "[", "edit", "]", "\n", "The International Encyclopedia of the Social Sciences defines ", "psychological altruism", " as \"a motivational state with the goal of increasing another\u2019s welfare.\" Psychological altruism is contrasted with ", "psychological egoism,", " which refers to the motivation to increase one\u2019s own welfare.", "[23]", "\n", "There has been some debate on whether or not humans are truly capable of psychological altruism.", "[24]", " Some definitions specify a self-sacrificial nature to altruism and a lack of external rewards for altruistic behaviors.", "[25]", " However, because altruism ultimately benefits the self in many cases, the selflessness of altruistic acts is brought to question. The ", "social exchange theory", " postulates that altruism only exists when benefits to the self outweigh costs to the self.", "[26]", " ", "Daniel Batson", " is a psychologist who examined this question and argues against the social exchange theory. He identified four major motives for altruism: altruism to ultimately benefit the self (egoism), to ultimately benefit the other person (altruism), to benefit a group (collectivism), or to uphold a moral principle (", "principlism", "). Altruism that ultimately serves selfish gains is thus differentiated from selfless altruism, but the general conclusion has been that empathy-induced altruism can be genuinely selfless.", "[27]", " The ", "empathy-altruism", " hypothesis", " basically states that psychological altruism does exist and is evoked by the empathic desire to help someone who is suffering. Feelings of empathic concern are contrasted with feelings of personal distress, which compel people to reduce their own unpleasant emotions. People with empathic concern help others in distress even when exposure to the situation could be easily avoided, whereas those lacking in empathic concern avoid helping unless it is difficult or impossible to avoid exposure to another's suffering.", "[23]", " Helping behavior is seen in humans at about two years old, when a toddler is capable of understanding subtle emotional cues.", "[28]", "\n", "\n", "\n", "\n", "\n", "Peace Corps", " trainees swearing in as volunteers in ", "Cambodia", ", 4 April 2007", "\n", "\n", "\n", "In psychological research on altruism, studies often observe altruism as demonstrated through prosocial behaviors such as helping, comforting, sharing, cooperation, philanthropy, and community service.", "[25]", " Research has found that people are most likely to help if they recognize that a person is in need and feel personal responsibility for reducing the person's distress. Research also suggests that the number of bystanders witnessing distress or suffering affects the likelihood of helping (the ", "Bystander effect", "). Greater numbers of bystanders decrease individual feelings of responsibility.", "[23]", "[29]", " However, a witness with a high level of empathic concern is likely to assume personal responsibility entirely regardless of the number of bystanders.", "[23]", " A feeling of personal responsibility or - moral norm - has also strongly been associated with other pro-social behaviors such as charitable giving.", "[30]", "\n", "Many studies have observed the effects of ", "volunteerism", " (as a form of altruism) on happiness and health and have consistently found a strong connection between volunteerism and current and future health and well-being.", "[31]", "[32]", " In a study of older adults, those who volunteered were higher on life satisfaction and will to live, and lower in ", "depression", ", ", "anxiety", ", and ", "somatization", ".", "[33]", " Volunteerism and helping behavior have not only been shown to improve mental health, but physical health and longevity as well, attributable to the activity and social integration it encourages.", "[31]", "[34]", "[35]", "[36]", " One study examined the physical health of mothers who volunteered over a 30-year period and found that 52% of those who did not belong to a volunteer organization experienced a major illness while only 36% of those who did volunteer experienced one.", "[37]", " A study on adults ages 55+ found that during the four-year study period, people who volunteered for two or more organizations had a 63% lower likelihood of dying. After controlling for prior health status, it was determined that volunteerism accounted for a 44% reduction in mortality.", "[38]", " Merely being aware of kindness in oneself and others is also associated with greater well-being. A study that asked participants to count each act of kindness they performed for one week significantly enhanced their subjective happiness.", "[39]", " It is important to note that, while research supports the idea that altruistic acts bring about happiness, it has also been found to work in the opposite direction\u2014that happier people are also kinder. The relationship between altruistic behavior and happiness is bidirectional. Studies have found that generosity increases linearly from sad to happy affective states.", "[40]", "\n", "Studies have also been careful to note that feeling over-taxed by the needs of others has conversely negative effects on health and happiness.", "[36]", " For example, one study on volunteerism found that feeling overwhelmed by others' demands had an even stronger negative effect on mental health than helping had a positive one (although positive effects were still significant).", "[41]", " Additionally, while generous acts make people feel good about themselves, it is also important for people to appreciate the kindness they receive from others. Studies suggest that gratitude goes hand-in-hand with kindness and is also very important for our well-being. A study on the relationship happiness to various character strengths showed that \"a conscious focus on gratitude led to reductions in negative affect and increases in optimistic appraisals, positive affect, offering emotional support, sleep quality, and well-being.\".", "[42]", " Psychologists generally refer to this virtuous cycle of helping others, doing good and subsequently feeling good as \"the helper's high\".", "[43]", "[44]", "\n", "Sociology", "[", "edit", "]", "\n", "\"Sociologists have long been concerned with how to build the good society\" (\"Altruism, Morality, and Social Solidarity\". American Sociological Association.", "[45]", "). The structure of our societies and how individuals come to exhibit charitable, philanthropic, and other pro-social, altruistic actions for the common good is a largely researched topic within the field. The American Sociology Association (ASA) acknowledges ", "Public sociology", " saying, \"The intrinsic scientific, policy, and public relevance of this field of investigation in helping to construct 'good societies' is unquestionable\" (\"Altruism, Morality, and Social Solidarity\" ASA). This type of sociology seeks contributions that aid grassroots and theoretical understandings of what motivates altruism and how it is organized, and promotes an altruistic focus in order to benefit the world and people it studies. How altruism is framed, organized, carried out, and what motivates it at the group level is an area of focus that sociologists seek to investigate in order to contribute back to the groups it studies and \"build the good society\".", "\n", "See also: ", "Public sociology", "\n", "Pathological altruism", "[", "edit", "]", "\n", "Pathological", " altruism is when altruism is taken to an unhealthy extreme, and either harms the altruistic person, or well-intentioned actions cause more harm than good.", "\n", "The term \"pathological altruism\" was popularised by the book ", "Pathological Altruism", ".", "\n", "Examples include depression and burnout seen in healthcare professionals, an unhealthy focus on others to the detriment of one's own needs, hoarding of animals, and ineffective philanthropic and social programs that ultimately worsen the situations they are meant to aid.", "[46]", "\n", "Religious viewpoints", "[", "edit", "]", "\n", "See also: ", "Evolutionary origin of religions", "\n", "Most, if not all, of the world's religions promote altruism as a very important moral value. ", "Buddhism", ", ", "Christianity", ", ", "Hinduism", ", ", "Islam", ", ", "Jainism", ", ", "Judaism", ", and ", "Sikhism", ", etc., place particular emphasis on altruistic morality.", "\n", "Buddhism", "[", "edit", "]", "\n", "\n", "\n", "\n", "\nMonks collecting alms", "\n", "\n", "\n", "Altruism figures prominently in Buddhism. Love and compassion are components of all forms of Buddhism, and are focused on all beings equally: love is the wish that all beings be happy, and compassion is the wish that all beings be free from suffering. \"Many illnesses can be cured by the one medicine of love and compassion. These qualities are the ultimate source of human happiness, and the need for them lies at the very core of our being\" (Dalai Lama).", "[47]", "\n", "Since \"all beings\" includes the individual, love and compassion in Buddhism are outside the opposition between self and other. It is even said that the distinction between self and other is part of the root cause of our suffering. In practical terms, however, since many people are spontaneously self-centered, Buddhism encourages people to focus love and compassion on others, and thus can be characterized as \"altruistic.\"", "[", "citation needed", "]", "\n", "Still, the notion of altruism is modified in such a world-view, since the belief is that such a practice promotes our own happiness: \"The more we care for the happiness of others, the greater our own sense of well-being becomes\" (Dalai Lama", "[47]", ").", "\n", "In the context of larger ethical discussions on moral action and judgment, Buddhism is characterized by the belief that negative (unhappy) consequences of our actions derive not from punishment or correction based on moral judgment, but from the law of karma, which functions like a natural law of cause and effect. A simple illustration of such cause and effect is the case of experiencing the effects of what one causes: if one causes suffering, then as a natural consequence one would experience suffering; if one causes happiness, then as a natural consequence one would experience happiness.", "\n", "Main article: ", "Karma in Buddhism", "\n", "In Buddhism, ", "karma", " (P\u0101li ", "kamma", ") is strictly distinguished from ", "vip\u0101ka", ", meaning \"fruit\" or \"result\". Karma is categorized within the group or groups of cause (P\u0101li ", "hetu", ") in the ", "chain", " of ", "cause and effect", ", where it comprises the elements of \"volitional activities\" (Pali ", "sankhara", ") and \"action\" (Pali ", "bhava", "). Any action is understood to create \"seeds\" in the mind that sprout into the appropriate results (P\u0101li ", "vipaka", ") when they meet the right conditions. Most types of karmas, with good or bad results, will keep one in the wheel of ", "sams\u0101ra", "; others will liberate one to ", "nirv\u0101na", ".", "\n", "Buddhism relates karma directly to motives behind an action. Motivation usually makes the difference between \"good\" and \"bad\", but motivation also includes the aspect of ignorance; so a well-intended action from an ignorant mind can easily be \"bad\" in that it creates unpleasant results for the \"actor.\"", "\n", "In Buddhism, karma is not the only cause of all that happens. As taught in the early texts, the commentarial tradition classified causal mechanisms governing the universe in five categories, known as Niyama Dhammas:", "[48]", "[49]", "\n", "\n", "Kamma Niyama \u2014 Consequences of one's actions", "\n", "Utu Niyama \u2014 Seasonal changes and climate", "\n", "Biija Niyama \u2014 Laws of heredity", "\n", "Citta Niyama \u2014 Will of mind", "\n", "Dhamma Niyama \u2014 Nature's tendency to produce a perfect type", "\n", "\n", "Jainism", "[", "edit", "]", "\n", "See also: ", "Ahimsa in Jainism", "\n", "\n", "\n", "\n", "\nSculpture depicting the Jain concept of ", "ahimsa", " (non-injury)", "\n", "\n", "\n", "The fundamental principles of ", "Jainism", " revolve around the concept of altruism, not only for humans but for all sentient beings. Jainism preaches the view of ", "Ahimsa", " \u2013 to live and let live, thereby not harming sentient beings, i.e. uncompromising reverence for all life. It also considers all living things to be equal. The first ", "Tirthankara", ", ", "Rishabhdev", ", introduced the concept of altruism for all living beings, from extending knowledge and experience to others to donation, giving oneself up for others, non-violence and compassion for all living things.", "\n", "Jainism prescribes a path of non-violence to progress the soul to this ultimate goal. A major characteristic of Jain belief is the emphasis on the consequences of not only physical but also mental behaviors. One's unconquered mind with anger, pride (ego), deceit, greed and uncontrolled sense organs are the powerful enemies of humans. Anger spoils good relations, pride destroys humility, deceit destroys peace and greed destroys everything. Jainism recommends conquering anger by forgiveness, pride by humility, deceit by straightforwardness and greed by contentment.", "\n", "Jains believe that to attain enlightenment and ultimately liberation, one must practice the following ethical principles (major vows) in thought, speech and action. The degree to which these principles are practiced is different for householders and monks. They are:", "\n", "\n", "Non-violence (Ahimsa);", "\n", "Truthfulness (Satya);", "\n", "Non-stealing (Asteya);", "\n", "Celibacy (Brahmacharya);", "\n", "Non-possession", " or non-materialism (Aparigraha);", "\n", "\n", "The \"great vows\" (", "Mahavrata", ") are prescribed for monks and \"limited vows\" (", "Anuvrata", ") are prescribed for householders. The house-holders are encouraged to practice the above-mentioned five vows. The monks have to observe them very strictly. With consistent practice, it will be possible to overcome the limitations gradually, accelerating the spiritual progress.", "\n", "The principle of non-violence seeks to minimize karmas which limit the capabilities of the soul. Jainism views every ", "soul", " as worthy of respect because it has the potential to become ", "Siddha", " (", "God in Jainism", "). Because all living beings possess a soul, great care and awareness is essential in one's actions. Jainism emphasizes the equality of all life, advocating harmlessness towards all, whether the creatures are great or small. This policy extends even to microscopic organisms. Jainism acknowledges that every person has different capabilities and capacities to practice and therefore accepts different levels of compliance for ascetics and householders.", "\n", "Christianity", "[", "edit", "]", "\n", "\n", "\n", "\n", "\nStatue of ", "Mother Teresa", " in India", "\n", "\n", "\n", "Altruism is central to the teachings of Jesus found in the ", "Gospel", ", especially in the ", "Sermon on the Mount", " and the ", "Sermon on the Plain", ". From biblical to medieval ", "Christian traditions", ", tensions between self-affirmation and other-regard were sometimes discussed under the heading of \"disinterested love\", as in the ", "Pauline", " phrase \"love seeks not its own interests.\" In his book ", "Indoctrination and Self-deception,", " Roderick Hindery tries to shed light on these tensions by contrasting them with impostors of authentic self-affirmation and altruism, by analysis of other-regard within creative individuation of the self, and by contrasting love for the few with love for the many. Love confirms others in their freedom, shuns propaganda and masks, assures others of its presence, and is ultimately confirmed not by mere declarations from others, but by each person's experience and practice from within. As in practical arts, the presence and meaning of love becomes validated and grasped not by words and reflections alone, but in the making of the connection.", "\n", "St Thomas Aquinas", " interprets 'You should love your neighbour as yourself'", "[50]", " as meaning that love for ourselves is the exemplar of love for others.", "[51]", " Considering that \"the love with which a man loves himself is the form and root of friendship\" and quotes Aristotle that \"the origin of friendly relations with others lies in our relations to ourselves,\"", "[52]", " he concluded that though we are not bound to love others more than ourselves, we naturally seek the common good, the good of the whole, more than any private good, the good of a part. However, he thinks we should love God more than ourselves and our neighbours, and more than our bodily life\u2014since the ultimate purpose of loving our neighbour is to share in eternal beatitude: a more desirable thing than bodily well being. In coining the word Altruism, as stated above, ", "Comte", " was probably opposing this Thomistic doctrine, which is present in some theological schools within Catholicism.", "\n", "Many biblical authors draw a strong connection between love of others and love of God. 1 John 4 states that for one to love God one must love his fellowman, and that hatred of one's fellowman is the same as hatred of God. ", "Thomas Jay Oord", " has argued in several books that altruism is but one possible form of love. An altruistic action is not always a loving action. Oord defines altruism as acting for the other's good, and he agrees with feminists who note that sometimes love requires acting for one's own good when the other's demands undermine overall well-being.", "\n", "German philosopher ", "Max Scheler", " distinguishes two ways in which the strong can help the weak. One way is a sincere expression of Christian love, \"motivated by a powerful feeling of security, strength, and inner salvation, of the invincible fullness of one\u2019s own life and existence\".", "[53]", " Another way is merely \"one of the many modern substitutes for love, ... nothing but the urge to turn away from oneself and to lose oneself in other people\u2019s business.\"", "[54]", " At its worst, Scheler says, \"love for the small, the poor, the weak, and the oppressed is really disguised hatred, repressed envy, an impulse to detract, etc., directed against the opposite phenomena: wealth, strength, power, largesse.\"", "[55]", "\n", "Islam", "[", "edit", "]", "\n", "In ", "Islam", ", the concept 'eysaar' (\u0625\u064a\u062b\u0627\u0631) (altruism) is the notion of 'preferring others to oneself'. For Sufis, this means devotion to others through complete forgetfulness of one's own concerns, where concern for others is rooted to be a demand made by ALLAH on the human body, considered to be property of ALLAH alone. The importance lies in sacrifice for the sake of the greater good; ", "Islam", " considers those practicing Eyaar as abiding by the highest degree of nobility.", "[56]", " This is similar to the notion of chivalry, but unlike that European concept, in i'thar attention is focused on everything in existence. A constant concern for ", "ALLAH", " (i.e. God) results in a careful attitude towards people, animals, and other things in this world.", "[57]", " This concept was emphasized by Sufis of Islam like ", "Rabia al-Adawiyya", " who paid attention to the difference between dedication to ", "ALLAH", " (i.e. God) and dedication to people. Thirteenth-century Turkish Sufi poet ", "Yunus Emre", " explained this philosophy as \"Yarat\u0131lan\u0131 severiz, Yaratandan \u00f6t\u00fcr\u00fc\" or ", "We love the creature, because of The Creator.", " For many Muslims, i'thar must be practiced as a religious obligation during specific Islamic holidays. However, i'thar is also still an Islamic ideal to which all Muslims should strive to adhere at all times.", "\n", "Judaism", "[", "edit", "]", "\n", "Judaism defines altruism as the desired goal of creation. The famous Rabbi ", "Abraham Isaac Kook", " stated that love is the most important attribute in humanity.", "[58]", " This is defined as ", "bestowal", ", or giving, which is the intention of altruism. This can be altruism towards humanity that leads to altruism towards the creator or God. ", "Kabbalah", " defines God as the force of giving in ", "existence", ". Rabbi ", "Moshe Chaim Luzzatto", " in particular focused on the 'purpose of creation' and how the will of God was to bring creation into perfection and adhesion with this upper force.", "[59]", "\n", "Modern Kabbalah developed by Rabbi ", "Yehuda Ashlag", ", in his writings about the future generation, focuses on how society could achieve an altruistic social framework.", "[60]", " Ashlag proposed that such a framework is the purpose of creation, and everything that happens is to raise humanity to the level of altruism, love for one another. Ashlag focused on society and its relation to ", "divinity", ".", "[61]", "\n", "Sikhism", "[", "edit", "]", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "This section ", "needs additional citations for ", "verification", ". ", "Please help ", "improve this article", " by ", "adding citations to reliable sources", ". Unsourced material may be challenged and removed.", " ", "(September 2017)", " ", "(", "Learn how and when to remove this template message", ")", "\n", "\n", "\n", "\n", "Altruism is essential to the Sikh religion. The central faith in Sikhism is that the greatest deed any one can do is to imbibe and live the godly qualities like love, affection, sacrifice, patience, harmony, truthfulness. The fifth Nanak, Guru Arjun Dev sacrificed his life to uphold 22 carats of pure truth, the greatest gift to humanity, the Guru Granth. The ninth Guru , Guru Tegh Bahadur, sacrificed his head to protect weak and defenseless people against atrocity. In the late seventeenth century, ", "Guru Gobind Singh", " Ji (the tenth ", "guru", " in Sikhism), was in war with the ", "Mughal", " rulers to protect the people of different faiths when a fellow Sikh, ", "Bhai Kanhaiya", ", attended the troops of the enemy. He gave water to both friends and foes who were wounded on the battlefield. Some of the enemy began to fight again and some Sikh warriors were annoyed by Bhai Kanhaiya as he was helping their enemy. Sikh soldiers brought Bhai Kanhaiya before Guru Gobind Singh Ji, and complained of his action that they considered counter-productive to their struggle on the battlefield.\"What were you doing, and why?\" asked the Guru. \"I was giving water to the wounded because I saw your face in all of them,\" replied Bhai Kanhaiya. The Guru responded, \"Then you should also give them ointment to heal their wounds. You were practicing what you were coached in the house of the Guru.\"", "\n", "It was under the tutelage of the Guru that Bhai Kanhaiya subsequently founded a volunteer corps for altruism. This volunteer corps still to date is engaged in doing good to others and trains new volunteering recruits for doing the same.", "[62]", "\n", "Hinduism", "[", "edit", "]", "\n", "Swami Sivananda", ", an ", "Advaita", " scholar, reiterates the same views in his commentary synthesising Vedanta views on the ", "Brahma Sutras", ", a Vedantic text. In his commentary on Chapter 3 of the Brahma Sutras, Sivananda notes that karma is insentient and short-lived, and ceases to exist as soon as a deed is executed. Hence, karma cannot bestow the fruits of actions at a future date according to one's merit. Furthermore, one cannot argue that karma generates ", "apurva", " or ", "punya", ", which gives fruit. Since apurva is non-sentient, it cannot act unless moved by an intelligent being such as a god. It cannot independently bestow reward or punishment.", "\n", "However the very well known and popular text, the Bhagavad Gita supports the doctrine of karma yoga (selfless action) or action without desire for personal gain which can be said to encompass altruism. Altruistic acts are generally celebrated and very well received in Hindu literature and is central to Hindu morality.", "[63]", "\n", "Philosophy", "[", "edit", "]", "\n", "Main article: ", "Altruism (ethics)", "\n", "There exists a wide range of philosophical views on humans' obligations or motivations to act altruistically. Proponents of ", "ethical altruism", " maintain that individuals are morally obligated to act altruistically. The opposing view is ", "ethical egoism", ", which maintains that moral agents should always act in their own self-interest. Both ethical altruism and ethical egoism contrast with ", "utilitarianism", ", which maintains that each agent should act in order to maximise the efficacy of their function and the benefit to both themselves and their co-inhabitants.", "\n", "A related concept in ", "descriptive ethics", " is ", "psychological egoism", ", the thesis that humans always act in their own self-interest and that true altruism is impossible. ", "Rational egoism", " is the view that ", "rationality", " consists in acting in one's self-interest (without specifying how this affects one's moral obligations).", "\n", "Genetics", "[", "edit", "]", "\n", "The genes ", "OXTR", ", ", "CD38", ", ", "COMT", ", ", "DRD4", ", ", "DRD5", ", ", "IGF2", ", ", "GABRB2", " have been found to be candidate genes for altruism.", "[64]", "\n", "See also", "[", "edit", "]", "\n", "\n", "\n", "Altruria", "\n", "Charity (practice)", "\n", "Charitable organization", "\n", "Comedy of the commons", "\n", "Consideration", "\n", "Earning to give", "\n", "Effective altruism", "\n", "Egotism", "\n", "Empathy", "\n", "Empathy-altruism", "\n", "Family economics", "\n", "Gene-centered view of evolution", "\n", "Giving Pledge", ", pledge by Gates, Buffett and others to donate to charity at least half of their wealth", "\n", "Inclusive fitness", "\n", "Group selection", "\n", "Humanity (virtue)", "\n", "Kin selection", "\n", "Misanthropy", "\n", "Mutual aid", "\n", "Philanthropy", "\n", "Prisoner's dilemma", "\n", "Prosocial behavior", "\n", "Random act of kindness", "\n", "Reciprocal altruism", "\n", "Selfishness", "\n", "Social psychology", "\n", "Solidarity (sociology)", "\n", "Tit for tat", "\n", "\n", "\n", "Notes", "[", "edit", "]", "\n", "\n", "\n", "\n", "^", " ", "\"altruism (n .)\"", ". ", "Online Etymology Dictionary", ". Douglas Harper", ". Retrieved ", "19 September", " 2014", ".", "\u00a0", "\n", "^", " ", "Teske, Nathan (2009). ", "Political Activists in America: The Identity Construction Model of Political Participation", ". University Park, Pa.: Pennsylvania State University Press. p.\u00a0101. ", "ISBN", "\u00a0", "9780271035468", ".", "\u00a0", "\n", "^", " ", "Ciciloni, Ferdinando (1825). ", "A Grammar of the Italian Language", ". London: John Murray. p.\u00a064.", "\u00a0", "\n", "^", " ", "Steinberg, David (2010). \"Altruism in medicine: its definition, nature, and dilemmas\". ", "Cambridge Quarterly of Healthcare Ethics", ". ", "19", " (2): 249\u201357. ", "doi", ":", "10.1017/s0963180109990521", ".", "\u00a0", "\n", "^", " ", "Bell, Graham (2008). ", "Selection: the mechanism of evolution", ". Oxford: Oxford University Press. pp.\u00a0367\u2013368. ", "ISBN", "\u00a0", "0-19-856972-6", ".", "\u00a0", "\n", "^ ", "a", " ", "b", " ", "c", " ", "d", " ", "e", " ", "f", " ", "g", " ", "h", " ", "i", " ", "j", " ", "k", " ", "l", " ", "m", " ", "n", " ", "o", " ", "p", " ", "q", " ", "Pat Barcaly. The evolution of charitable behaviour and the power of reputation. In ", "Roberts, S. C. (2011). Roberts, S. Craig, ed. \"Applied Evolutionary Psychology\". Oxford University Press. ", "doi", ":", "10.1093/acprof:oso/9780199586073.001.0001", ". ", "ISBN", "\u00a0", "9780199586073", ".", "\u00a0", "\n", "^", " ", "Okasha, Samir. ", "\"Biological Altruism\"", ". ", "Stanford Encyclopedia of Philosophy", ". Retrieved ", "13 May", " 2011", ".", "\u00a0", "\n", "^", " ", "Trivers, R.L. (1971). ", "\"The evolution of reciprocal altruism\"", ". ", "Quarterly Review of Biology", ". ", "46", ": 35\u201357. ", "doi", ":", "10.1086/406755", ".", "\u00a0", "\n", "^", " ", "R Axelrod and WD Hamilton (27 March 1981). \"The evolution of cooperation\". ", "Science", ". ", "211", " (4489): 1390\u20131396. ", "Bibcode", ":", "1981Sci...211.1390A", ". ", "CiteSeerX", "\u00a0", "10.1.1.147.9644", "\u202f", ". ", "doi", ":", "10.1126/science.7466396", ". ", "PMID", "\u00a0", "7466396", ".", "\u00a0", "\n", "^", " ", "Martin Nowak & Karl Sigmund (October 2005). ", "\"Evolution of indirect reciprocity\"", ". ", "Nature", ". ", "437", " (27): 1291\u20131298. ", "Bibcode", ":", "2005Natur.437.1291N", ". ", "doi", ":", "10.1038/nature04131", ". ", "PMID", "\u00a0", "16251955", ".", "\u00a0", "\n", "^", " ", "Gintis, Herbert", " (September 2000). \"Strong Reciprocity and Human Sociality\". ", "Journal of Theoretical Biology", ". ", "206", " (2): 169\u2013179. ", "doi", ":", "10.1006/jtbi.2000.2111", ". ", "hdl", ":", "10419/105717", "\u202f", ". ", "PMID", "\u00a0", "10966755", ".", "\u00a0", "\n", "^", " ", "\"Genetic and Cultural Evolution of Cooperation, Chapter 11\". Berlin: Dahlem Workshop Reports. 2003. ", "ISBN", "\u00a0", "0-262-08326-4", ".", "\u00a0", "\n", "^", " ", "Zahavi, A. (1995). ", "\"Altruism as a handicap \u2013 The limitations of kin selection and reciprocity\"", ". ", "Avian Biol", ". ", "26", " (1): 1\u20133. ", "doi", ":", "10.2307/3677205", ". ", "JSTOR", "\u00a0", "3677205", ".", "\u00a0", "\n", "^ ", "a", " ", "b", " ", "Wendy Iredal and Mark van Vugt. Altruism as showing off: a signaling perspective on promoting green behaviour and acts of kindness. In ", "Roberts, S. C. (2011). Roberts, S. Craig, ed. \"Applied Evolutionary Psychology\". Oxford University Press. ", "doi", ":", "10.1093/acprof:oso/9780199586073.001.0001", ". ", "ISBN", "\u00a0", "9780199586073", ".", "\u00a0", "\n", "^", " ", "Leon Neyfakh Where does good come from?, 17 April 2011, ", "http://www.boston.com/bostonglobe/ideas/articles/2011/04/17/where_does_good_come_from/", "\n", "^", " ", "E. O. Wilson. Biologist E.O. Wilson on Why Humans, Like Ants, Need a Tribe. 2 April 2012. The Daily Beast. ", "http://www.thedailybeast.com/newsweek/2012/04/01/biologist-e-o-wilson-on-why-humans-like-ants-need-a-tribe.html", "\n", "^", " ", "Brown, S.L.; Brown, R.M. (2006). ", "\"Selective investment theory: Recasting the functional significance of close relationships\"", " ", "(PDF)", ". ", "Psychological Inquiry", ". ", "17", ": 1\u201329. ", "doi", ":", "10.1207/s15327965pli1701_01", ". Archived from ", "the original", " ", "(PDF)", " on 2014-07-14.", "\u00a0", "\n", "^", " ", "http://www.icts.res.in/media/uploads/Talk/Document/StLouis2011TelmoFIN.pdf", "[", "permanent dead link", "]", "\n", "^", " ", "Human fronto\u2013mesolimbic networks guide decisions about charitable donation, PNAS 2006:103(42);15623\u201315628", "\n", "^ ", "a", " ", "b", " ", "Vedantam, Shankar (May 2007). ", "\"If It Feels Good to Be Good, It Might Be Only Natural\"", ". Washington Post", ". Retrieved ", "23 April", " 2010", ".", "\u00a0", "\n", "^", " ", "Lockwood, Patricia L; Apps, Matthew A J; Valton, Vincent; Viding, Essi; Roiser, Jonathan P (2016). \"Neurocomputational mechanisms of prosocial learning and links to empathy\". ", "Proceedings of the National Academy of Sciences of the United States of America", ". ", "113", ": 9763\u20138. ", "doi", ":", "10.1073/pnas.1603198113", ". ", "PMID", "\u00a0", "27528669", ". ", "Lay summary", ". ", ". fMRI revealed that activity in a posterior portion of the subgenual anterior cingulate cortex/basal forebrain (sgACC) drives learning only when we are acting in a prosocial context", "\u00a0", "\n", "^ ", "a", " ", "b", " ", "Svoboda, Elizabeth (September 5, 2013). ", "\"Scientists Are Finding That We Are Hard-Wired for Giving\"", ". University of Notre Dame", ". Retrieved ", "7 August", " 2017", ".", "\u00a0", "\n", "^ ", "a", " ", "b", " ", "c", " ", "d", " ", "[\"Altruism.\" International Encyclopedia of the Social Sciences. Ed. William A. Darity, Jr. 2nd ed. Vol. 1. Detroit: Macmillan Reference USA, 2008. 87-88. Gale Virtual Reference Library. Web. 10 April 2012.]", "\n", "^", " ", "[Batson, C. (2011). Altruism in humans. New York, NY US: Oxford University Press.]", "\n", "^ ", "a", " ", "b", " ", "[Batson, C. (2012). A history of prosocial behavior research. In A. W. Kruglanski, ", "W. Stroebe", ", A. W. Kruglanski, (Eds.), Handbook of the history of social psychology (pp. 243\u2013264). New York, NY US: Psychology Press.]", "\n", "^", " ", "Maner, J. K.; Luce, C. L.; Neuberg, S. L.; Cialdini, R. B.; Brown, S.; Sagarin, B. J. (2002). ", "\"The effects of perspective taking on motivations for helping: Still no evidence for altruism\"", ". ", "Personality and Social Psychology Bulletin", ". ", "28", " (11): 1601\u20131610. ", "doi", ":", "10.1177/014616702237586", ".", "\u00a0", "\n", "^", " ", "[Batson, C., Ahmad, N., & Stocks, E. L. (2011). Four forms of prosocial motivation: Egoism, altruism, collectivism, and principlism. In D. Dunning, D. Dunning (Eds.), Social motivation (pp. 103\u2013126). New York, NY US: Psychology Press.]", "\n", "^", " ", "Svetlova, M.; Nichols, S. R.; Brownell, C. A. (2010). ", "\"Toddlers prosocial behavior: From instrumental to empathic to altruistic helping\"", ". ", "Child Development", ". ", "81", " (6): 1814\u20131827. ", "doi", ":", "10.1111/j.1467-8624.2010.01512.x", ". ", "PMC", "\u00a0", "3088085", "\u202f", ". ", "PMID", "\u00a0", "21077866", ".", "\u00a0", "\n", "^", " ", "Hudson, James M.; Bruckman, Amy S. (2004). \"The Bystander Effect: A Lens for Understanding Patterns of Participation\". ", "Journal of the Learning Sciences", ". ", "13", " (2): 165\u2013195. ", "CiteSeerX", "\u00a0", "10.1.1.72.4881", "\u202f", ". ", "doi", ":", "10.1207/s15327809jls1302_2", ".", "\u00a0", "\n", "^", " ", "van der Linden, S. (2011). ", "\"Charitable Intent: A Moral or Social Construct? A Revised Theory of Planned Behavior Model\"", ". ", "Current Psychology", ". ", "30", " (4): 355\u2013374. ", "doi", ":", "10.1007/s12144-011-9122-1", ".", "\u00a0", "\n", "^ ", "a", " ", "b", " ", "Musick, M. A.; Wilson, J. (2003). \"Volunteering and depression: The role of psychological and social resources in different age groups\". ", "Social Science & Medicine", ". ", "56", " (2): 259\u2013269. ", "doi", ":", "10.1016/S0277-9536(02)00025-4", ".", "\u00a0", "\n", "^", " ", "Koenig, L. B.; McGue, M.; Krueger, R. F.; Bouchard (2007). \"Religiousness, antisocial behavior, and altruism: Genetic and environmental mediation\". ", "Journal of Personality", ". ", "75", " (2): 265\u2013290. ", "doi", ":", "10.1111/j.1467-6494.2007.00439.x", ".", "\u00a0", "\n", "^", " ", "Hunter, K. I.; Hunter, M. W. (1980). \"Psychosocial differences between elderly volunteers and non-volunteers\". ", "The International Journal of Aging & Human Development", ". ", "12", " (3): 205\u2013213. ", "doi", ":", "10.2190/0H6V-QPPP-7JK4-LR38", ".", "\u00a0", "\n", "^", " ", "Kayloe, J. C.; Krause, M. (1985). \"RARE FIND: or The value of volunteerism\". ", "Psychosocial Rehabilitation Journal", ". ", "8", " (4): 49\u201356. ", "doi", ":", "10.1037/h0099659", ".", "\u00a0", "\n", "^", " ", "Brown, S. L.; Brown, R.; House, J. S.; Smith, D. M. (2008). \"Coping with spousal loss: Potential buffering effects of self-reported helping behavior\". ", "Personality and Social Psychology Bulletin", ". ", "34", " (6): 849\u2013861. ", "doi", ":", "10.1177/0146167208314972", ". ", "PMID", "\u00a0", "18344495", ".", "\u00a0", "\n", "^ ", "a", " ", "b", " ", "Post, S. G. (2005). \"Altruism, Happiness, and Health: It's Good to Be Good\". ", "International Journal of Behavioral Medicine", ". ", "12", " (2): 66\u201377. ", "CiteSeerX", "\u00a0", "10.1.1.485.8406", "\u202f", ". ", "doi", ":", "10.1207/s15327558ijbm1202_4", ". ", "PMID", "\u00a0", "15901215", ".", "\u00a0", "\n", "^", " ", "Moen, P.; Dempster-Mcclain, D.; Williams, R. M. (1992). \"Successful aging: A life-course perspective on women's multiple roles and health\". ", "American Journal of Sociology", ". ", "97", " (6): 1612\u20131638. ", "doi", ":", "10.1086/229941", ".", "\u00a0", "\n", "^", " ", "Oman, D.; Thoresen, C. E.; McMahon, K. (1999). \"Volunteerism and mortality among the community-dwelling elderly\". ", "Journal of Health Psychology", ". ", "4", " (3): 301\u2013316. ", "doi", ":", "10.1177/135910539900400301", "\u202f", ". ", "PMID", "\u00a0", "22021599", ".", "\u00a0", "\n", "^", " ", "Otake, K.; Shimai, S.; Tanaka-Matsumi, J.; Otsui, K.; Fredrickson, B. L. (2006). ", "\"Happy people become happier through kindness: A counting kindnesses intervention\"", ". ", "Journal of Happiness Studies", ". ", "7", " (3): 361\u2013375. ", "doi", ":", "10.1007/s10902-005-3650-z", ". ", "PMC", "\u00a0", "1820947", "\u202f", ". ", "PMID", "\u00a0", "17356687", ".", "\u00a0", "\n", "^", " ", "Underwood, B.; Froming, W. J.; Moore, B. S. (1977). \"Mood, attention, and altruism: A search for mediating variables\". ", "Developmental Psychology", ". ", "13", " (5): 541\u2013542. ", "doi", ":", "10.1037/0012-1649.13.5.541", ".", "\u00a0", "\n", "^", " ", "Schwartz, C.; Meisenhelder, J.; Ma, Y.; Reed, G. (2003). \"Altruistic Social Interest Behaviors Are Associated With Better Mental Health\". ", "Psychosomatic Medicine", ". ", "65", " (5): 778\u2013785. ", "CiteSeerX", "\u00a0", "10.1.1.529.7780", "\u202f", ". ", "doi", ":", "10.1097/01.PSY.0000079378.39062.D4", ". ", "PMID", "\u00a0", "14508020", ".", "\u00a0", "\n", "^", " ", "Shimai, S.; Otake, K.; Park, N.; Peterson, C.; Seligman, M. P. (2006). ", "\"Convergence of character strengths in American and Japanese young adults\"", ". ", "Journal of Happiness Studies", ". ", "7", " (3): 311\u2013322. ", "doi", ":", "10.1007/s10902-005-3647-7", ".", "\u00a0", "\n", "^", " ", "Van der Linden, Sander (December 2011). ", "\"The helper's high: Why it feels so good to give\"", ". Ode Magazine", ". Retrieved ", "14 November", " 2013", ".", "\u00a0", "\n", "^", " ", "van der Linden, S (2018). \"Warm glow is associated with low but not high cost sustainable behavior\". ", "Nature Sustainability", ". ", "1", ": 28\u201330. ", "doi", ":", "10.1038/s41893-017-0001-0", ".", "\u00a0", "\n", "^", " ", "American Sociological Association: Altruism, Morality and Social Solidarity", " ", "Archived", " 3 May 2012 at the ", "Wayback Machine", ".", "\n", "^", " ", "http://ukcatalogue.oup.com/product/9780199738571.do", "\n", "^ ", "a", " ", "b", " ", "Speech by the Dalai Lama", "\nThe phrase \"core of our being\" is ", "Freudian", "; see ", "Bettina Bock von W\u00fclfingen (2013). ", "\"Freud's 'Core of our Being' Between Cytology and Psychoanalysis\"", ". ", "Berichte zur Wissenschaftsgeschichte", ". ", "36", " (3): 226\u2013244. ", "doi", ":", "10.1002/bewi.201301604", ".", "\u00a0", "\n", "^", " ", "Davids, Rhys (2007). ", "Buddhism", ". Lightning Source Incorporated. p.\u00a0119. ", "ISBN", "\u00a0", "978-1-4067-5628-9", ".", "\u00a0", "\n", "^", " ", "Padmasiri de Silva (1998). ", "Environmental Philosophy and Ethics in Buddhism", ". Palgrave Macmillan. p.\u00a041. ", "ISBN", "\u00a0", "978-0-312-21316-9", ".", "\u00a0", "\n", "^", " ", "Leviticus", " 19 and Matthew 22", "\n", "^", " ", "Summa Theologica", ", II:II Quaestio 25, Article 4", "\n", "^", " ", "Nicomachean Ethics", " IX.4 1166a1", "\n", "^", " ", "Scheler, Max (1961). ", "Ressentiment", ". pp.\u00a088\u201389.", "\u00a0", "\n", "^", " ", "Scheler, Max (1961). ", "Ressentiment", ". pp.\u00a095\u201396.", "\u00a0", "\n", "^", " ", "Scheler, Max (1961). ", "Ressentiment", ". pp.\u00a096\u201397.", "\u00a0", "\n", "^", " ", "M (2004). ", "Key Concepts in the Practice of Sufism: Emerald Hills of the Heart", ". Rutherford, N.J.: Fountain. pp.\u00a010\u201311. ", "ISBN", "\u00a0", "1-932099-75-1", ".", "\u00a0", "\n", "^", " ", "Neusner, Jacob Eds (2005). ", "Altruism in World Religions", ". Washington, D.C.: Georgetown Univ. Press. pp.\u00a079\u201380. ", "ISBN", "\u00a0", "1-58901-065-5", ".", "\u00a0", "\n", "^", " ", "Kook, Abraham Isaac; Ben Zion Bokser (1978). ", "Abraham Isaac Kook: The lights of penitence, The moral principles, Lights of holiness, essays, letters, and poems", ". Paulist Press. pp.\u00a0135\u2013136. ", "ISBN", "\u00a0", "978-0-8091-2159-5", ".", "\u00a0", "\n", "^", " ", "Luzzatto, Moshe \u1e24ayyim (1997). ", "The way of God", ". Feldheim Publishers. pp.\u00a037\u201338. ", "ISBN", "\u00a0", "978-0-87306-769-0", ".", "\u00a0", "\n", "^", " ", "Ashlag, Yehuda (2006). ", "Building the Future Society", ". Thornhill, Canada: Laitman Kabbalah Publishers. pp.\u00a0120\u2013130. ", "ISBN", "\u00a0", "965-7065-34-8", ".", "\u00a0", "\n", "^", " ", "Ashlag, Yehuda (2006). ", "Building the Future Society", ". Thornhill, Canada: Laitman Kabbalah Publishers. pp.\u00a0175\u2013180. ", "ISBN", "\u00a0", "965-7065-34-8", ".", "\u00a0", "\n", "^", " ", "O. P. Ralhan (1997). ", "The great gurus of the Sikhs", ". New Delhi: Anmol Publications Pvt Ltd. p.\u00a0253. ", "ISBN", "\u00a0", "81-7488-479-3", ".", "\u00a0", "\n", "^", " ", "Sivananda, Swami. ", "Phaladhikaranam, Topic 8", ", Sutras 38\u201341.", "\n", "^", " ", "Thompson, GJ; Hurd, PL; Crespi, BJ (2013). ", "\"Genes underlying altruism\"", ". ", "Biol Lett", ". ", "9", ": 20130395. ", "doi", ":", "10.1098/rsbl.2013.0395", ". ", "PMC", "\u00a0", "3871336", "\u202f", ". ", "PMID", "\u00a0", "24132092", ".", "\u00a0", "\n", "\n", "\n", "\n", "References", "[", "edit", "]", "\n", "\n", "\n", "Oord, Thomas (2007). ", "The Altruism Reader", ". Philadelphia: Templeton Foundation Press. ", "ISBN", "\u00a0", "978-1-59947-127-3", ".", "\u00a0", "\n", "Oord, Thomas (2010). ", "Defining Love", ". Grand Rapids: Brazos Press. ", "ISBN", "\u00a0", "1-58743-257-9", ".", "\u00a0", "\n", "Batson, Charles (1991). ", "The Altruism Question", ". Mahwah: L. Erlbaum, Associates. ", "ISBN", "\u00a0", "978-0-8058-0245-0", ".", "\u00a0", "\n", "Nowak, M. A. (2006). ", "\"Five Rules for the Evolution of Cooperation\"", ". ", "Science", ". ", "314", " (5805): 1560\u20131563. ", "Bibcode", ":", "2006Sci...314.1560N", ". ", "doi", ":", "10.1126/science.1133755", ". ", "PMC", "\u00a0", "3279745", "\u202f", ". ", "PMID", "\u00a0", "17158317", ".", "\u00a0", "\n", "Fehr, E.; Fischbacher, U. (2003). ", "\"The nature of human altruism\"", ". ", "Nature", ". ", "425", " (6960): 785\u2013791. ", "Bibcode", ":", "2003Natur.425..785F", ". ", "doi", ":", "10.1038/nature02043", ". ", "PMID", "\u00a0", "14574401", ".", "\u00a0", "\n", "Comte, Auguste", ", ", "Catechisme positiviste", " (1852) or ", "Catechism of Positivism", ", tr. R. Congreve, (London: Kegan Paul, 1891)", "\n", "Knox, T. (1999). \"The volunteer's folly and socio-economic man: some thoughts on altruism, rationality, and community\". ", "Journal of Socio-Economics", ". ", "28", " (4): 475\u2013967. ", "doi", ":", "10.1016/S1053-5357(99)00045-1", ".", "\u00a0", "\n", "Kropotkin, Peter", ", ", "Mutual Aid: A Factor of Evolution", " (1902)", "\n", "Oord, Thomas (2004). ", "Science of Love", ". Philadelphia: Templeton Foundation Press. ", "ISBN", "\u00a0", "978-1-932031-70-6", ".", "\u00a0", "\n", "Nietzsche, Friedrich", ", ", "Beyond Good and Evil", "\n", "Pierre-Joseph Proudhon", ", ", "The Philosophy of Poverty", " (1847)", "\n", "Lysander Spooner", ", ", "Natural Law", "\n", "Matt Ridley", ", ", "The Origins of Virtue", "\n", "Oliner, Samuel P. and Pearl M. Towards a Caring Society: Ideas into Action. West Port, CT: Praeger, 1995.", "\n", "Axelrod, Robert (1984). ", "The Evolution of Cooperation", ". New York: Basic Books. ", "ISBN", "\u00a0", "0-465-02121-2", ".", "\u00a0", "\n", "Dawkins, Richard (1989). ", "The Selfish Gene", ". Oxford Oxfordshire: Oxford University Press. ", "ISBN", "\u00a0", "0-19-286092-5", ".", "\u00a0", "\n", "Wright, Robert (1995). ", "The Moral Animal", ". New York: Vintage Books. ", "ISBN", "\u00a0", "0-679-76399-6", ".", "\u00a0", "\n", "Madsen, E. A.; Tunney, R. J.; Fieldman, G.; Plotkin, H. C.; Dunbar, R. I. M.; Richardson, J. M.; McFarland, D. (2007). ", "\"Kinship and altruism: A cross-cultural experimental study\"", ". ", "British Journal of Psychology", ". ", "98", " (Pt 2): 339\u2013359. ", "doi", ":", "10.1348/000712606X129213", ". ", "PMID", "\u00a0", "17456276", ".", "\u00a0", "\n", "Wedekind, C.; Milinski, M. (1996). \"Human Cooperation in the simultaneous and the alternating Prisoner's Dilemma: Pavlov versus Generous Tit-for-tat\". ", "Evolution", ". ", "93", ": 2686\u20132689. ", "Bibcode", ":", "1996PNAS...93.2686W", ". ", "doi", ":", "10.1073/pnas.93.7.2686", "\u202f", ".", "\u00a0", "\n", "Monk-Turner, E.; Blake, V.; Chniel, F.; Forbes, S.; Lensey, L.; Madzuma, J. (2002). ", "\"Helping hands: A study of altruistic behavior\"", ". ", "Gender Issues", ". ", "20", " (4): 65\u201370. ", "doi", ":", "10.1007/s12147-002-0024-2", ".", "\u00a0", "\n", "\n", "\n", "External links", "[", "edit", "]", "\n", "\n", "\n", "Library resources", " about", "\n", "Altruism", "\n", "\n", "\n", "\n", "\n", "\n", "Resources in your library", "\n", "Resources in other libraries", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "Look up ", "altruism", " in Wiktionary, the free dictionary.", "\n", "\n", "\n", "\n", "Zalta, Edward N.", " (ed.). ", "\"Biological Altruism\"", ". ", "Stanford Encyclopedia of Philosophy", ".", "\u00a0", "\n", "\n", "\n", "Altruism", " on ", "In Our Time", " at the ", "BBC", ".", "\n", "\"The Good Show\"", ". ", "Radiolab", ". Season 9. Episode 1. New York. 14 December 2011. WNYC.", "\u00a0", "\n", "\n", "\n", "\n", "\n", "\n", "Articles and topics related to Altruism", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "v", "\n", "t", "\n", "e", "\n", "\n", "\n", "Defence mechanisms", "\n", "\n", "\n", "\n", "Level 1: Pathological", "\n", "\n", "\n", "\n", "Delusional projection", "\n", "Denial", "\n", "Distortion", "\n", "Extreme projection", "\n", "Splitting", "\n", "\n", "\n", "\n", "\n", "\n", "Level 2: Immature", "\n", "\n", "\n", "\n", "Acting out", "\n", "Fantasy", "\n", "Idealization", "\n", "Passive-aggression", "\n", "Projection", "\n", "Projective identification", "\n", "Somatization", "\n", "\n", "\n", "\n", "\n", "\n", "Level 3: Neurotic", "\n", "\n", "\n", "\n", "Displacement", "\n", "Dissociation", "\n", "Hypochondriasis", "\n", "Isolation", "\n", "Rationalization", "\n", "Reaction formation", "\n", "Regression", "\n", "Repression", "\n", "Undoing", "\n", "\n", "\n", "\n", "\n", "\n", "Level 4: Mature", "\n", "\n", "\n", "\n", "Altruism", "\n", "Anticipation", "\n", "Humour", "\n", "Identification", "\n", "Intellectualization", "\n", "Introjection", "\n", "Sublimation", "\n", "Suppression", "\n", "\n", "\n", "\n", "\n", "\n", "Other mechanisms", "\n", "\n", "\n", "\n", "Compartmentalization", "\n", "Exaggeration", "\n", "Minimisation", "\n", "Postponement of affect", "\n", "\n", "\n", "\n", "\n", "\n", "See also", "\n", "\n", "\n", "\n", "Narcissistic defences", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "v", "\n", "t", "\n", "e", "\n", "\n", "\n", "Philosophy", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "Branches", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "Traditional", "\n", "\n", "\n", "\n", "Metaphysics", "\n", "\n", "Ontology", "\n", "\n", "\n", "Epistemology", "\n", "Logic", "\n", "Ethics", "\n", "Aesthetics", "\n", "\n", "\n", "\n", "\n", "\n", "Philosophy of", "\n", "\n", "\n", "\n", "Action", "\n", "Art", "\n", "\n", "Culture", "\n", "Design", "\n", "Music", "\n", "Film", "\n", "\n", "\n", "Business", "\n", "Color", "\n", "Cosmos", "\n", "Dialogue", "\n", "Education", "\n", "Environment", "\n", "Futility", "\n", "Happiness", "\n", "Healthcare", "\n", "History", "\n", "Human nature", "\n", "Humor", "\n", "Feminism", "\n", "Language", "\n", "Life", "\n", "Literature", "\n", "Mathematics", "\n", "Mind", "\n", "\n", "Pain", "\n", "Psychology", "\n", "\n", "\n", "Philosophy of psychiatry", "\n", "Philosophy of perception", "\n", "Philosophy", "\n", "Religion", "\n", "Science", "\n", "\n", "Physics", "\n", "Chemistry", "\n", "Biology", "\n", "Geography", "\n", "\n", "\n", "Sexuality", "\n", "Social science", "\n", "\n", "Culture", "\n", "Economics", "\n", "Justice", "\n", "Law", "\n", "Politics", "\n", "Society", "\n", "\n", "\n", "Space and time", "\n", "Sport", "\n", "Technology", "\n", "\n", "Artificial intelligence", "\n", "Computer science", "\n", "Engineering", "\n", "Information", "\n", "\n", "\n", "War", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "Schools of thought", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "By era", "\n", "\n", "\n", "\n", "Ancient", "\n", "Western", "\n", "\n", "Medieval", "\n", "Renaissance", "\n", "Early modern", "\n", "Modern", "\n", "Contemporary", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "Ancient", "\n", "\n", "\n", "\n", "\n", "Chinese", "\n", "\n", "\n", "\n", "Agriculturalism", "\n", "Confucianism", "\n", "Legalism", "\n", "Logicians", "\n", "Mohism", "\n", "Chinese naturalism", "\n", "Neotaoism", "\n", "Taoism", "\n", "Yangism", "\n", "Zen", "\n", "\n", "\n", "\n", "\n", "\n", "Greco-", "Roman", "\n", "\n", "\n", "\n", "Aristotelianism", "\n", "Atomism", "\n", "Cynicism", "\n", "Cyrenaics", "\n", "Eleatics", "\n", "Eretrian school", "\n", "Epicureanism", "\n", "Hermeneutics", "\n", "Ionian", "\n", "\n", "Ephesian", "\n", "Milesian", "\n", "\n", "\n", "Megarian school", "\n", "Neoplatonism", "\n", "Peripatetic", "\n", "Platonism", "\n", "Pluralism", "\n", "Presocratic", "\n", "Pyrrhonism", "\n", "Pythagoreanism", "\n", "Neopythagoreanism", "\n", "Sophistic", "\n", "Stoicism", "\n", "\n", "\n", "\n", "\n", "\n", "Indian", "\n", "\n", "\n", "\n", "Samkhya", "\n", "Nyaya", "\n", "Vaisheshika", "\n", "Yoga", "\n", "M\u012bm\u0101\u1e43s\u0101", "\n", "\u0100j\u012bvika", "\n", "Aj\u00f1ana", "\n", "C\u0101rv\u0101ka", "\n", "Jain", "\n", "\n", "Anekantavada", "\n", "Sy\u0101dv\u0101da", "\n", "\n", "\n", "Buddhist", "\n", "\n", "\u015a\u016bnyat\u0101", "\n", "Madhyamaka", "\n", "Yogacara", "\n", "Sautr\u0101ntika", "\n", "Svatantrika", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "Persian", "\n", "\n", "\n", "\n", "Mazdakism", "\n", "Zoroastrianism", "\n", "Zurvanism", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "Medieval", "\n", "\n", "\n", "\n", "\n", "European", "\n", "\n", "\n", "\n", "Christian philosophy", "\n", "Scholasticism", "\n", "Thomism", "\n", "Renaissance humanism", "\n", "\n", "\n", "\n", "\n", "\n", "East Asian", "\n", "\n", "\n", "\n", "Korean Confucianism", "\n", "Edo Neo-Confucianism", "\n", "Neo-Confucianism", "\n", "\n", "\n", "\n", "\n", "\n", "Indian", "\n", "\n", "\n", "\n", "Vedanta", "\n", "\n", "Acintya bheda abheda", "\n", "Advaita", "\n", "Bhedabheda", "\n", "Dvaita", "\n", "Dvaitadvaita", "\n", "Shuddhadvaita", "\n", "Vishishtadvaita", "\n", "\n", "\n", "Navya-Ny\u0101ya", "\n", "\n", "\n", "\n", "\n", "\n", "Islamic", "\n", "\n", "\n", "\n", "Averroism", "\n", "Avicennism", "\n", "Illuminationism", "\n", "\u02bfIlm al-Kal\u0101m", "\n", "Sufi", "\n", "\n", "\n", "\n", "\n", "\n", "Jewish", "\n", "\n", "\n", "\n", "Judeo-Islamic", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "Modern", "\n", "\n", "\n", "\n", "\n", "People", "\n", "\n", "\n", "\n", "Cartesianism", "\n", "Kantianism", "\n", "Neo-Kantianism", "\n", "Hegelianism", "\n", "Marxism", "\n", "Spinozism", "\n", "\n", "\n", "\n", "\n", "\n", "0", "\n", "\n", "\n", "\n", "Anarchism", "\n", "Classical Realism", "\n", "Liberalism", "\n", "Collectivism", "\n", "Conservatism", "\n", "Determinism", "\n", "Dualism", "\n", "Empiricism", "\n", "Existentialism", "\n", "Foundationalism", "\n", "Historicism", "\n", "Holism", "\n", "Humanism", "\n", "Idealism", "\n", "\n", "Absolute", "\n", "British", "\n", "German", "\n", "Objective", "\n", "Subjective", "\n", "Transcendental", "\n", "\n", "\n", "Individualism", "\n", "Kokugaku", "\n", "Materialism", "\n", "Modernism", "\n", "Monism", "\n", "Naturalism", "\n", "Natural law", "\n", "Nihilism", "\n", "New Confucianism", "\n", "Neo-Scholasticism", "\n", "Pragmatism", "\n", "Phenomenology", "\n", "Positivism", "\n", "Reductionism", "\n", "Rationalism", "\n", "Social contract", "\n", "Socialism", "\n", "Transcendentalism", "\n", "Utilitarianism", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "Contemporary", "\n", "\n", "\n", "\n", "\n", "Analytic", "\n", "\n", "\n", "\n", "Applied ethics", "\n", "Analytic feminism", "\n", "Analytical Marxism", "\n", "Communitarianism", "\n", "Consequentialism", "\n", "Critical rationalism", "\n", "Experimental philosophy", "\n", "Falsificationism", "\n", "Foundationalism", "\u00a0/ ", "Coherentism", "\n", "Generative linguistics", "\n", "Internalism and Externalism", "\n", "Logical positivism", "\n", "Legal positivism", "\n", "Normative ethics", "\n", "Meta-ethics", "\n", "Moral realism", "\n", "Neo-Aristotelian", "\n", "Quinean naturalism", "\n", "Ordinary language philosophy", "\n", "Postanalytic philosophy", "\n", "Quietism", "\n", "Rawlsian", "\n", "Reformed epistemology", "\n", "Systemics", "\n", "Scientism", "\n", "Scientific realism", "\n", "Scientific skepticism", "\n", "Contemporary utilitarianism", "\n", "Vienna Circle", "\n", "Wittgensteinian", "\n", "\n", "\n", "\n", "\n", "\n", "Continental", "\n", "\n", "\n", "\n", "Critical theory", "\n", "Deconstruction", "\n", "Existentialism", "\n", "Feminist", "\n", "Frankfurt School", "\n", "New Historicism", "\n", "Hermeneutics", "\n", "Neo-Marxism", "\n", "Phenomenology", "\n", "Postmodernism", "\n", "Post-structuralism", "\n", "Social constructionism", "\n", "Structuralism", "\n", "Western Marxism", "\n", "\n", "\n", "\n", "\n", "\n", "Other", "\n", "\n", "\n", "\n", "Kyoto School", "\n", "Objectivism", "\n", "Russian cosmism", "\n", "more...", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "Positions", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "Aesthetics", "\n", "\n", "\n", "\n", "Formalism", "\n", "Institutionalism", "\n", "Aesthetic response", "\n", "\n", "\n", "\n", "\n", "\n", "Ethics", "\n", "\n", "\n", "\n", "Consequentialism", "\n", "Deontology", "\n", "Virtue", "\n", "\n", "\n", "\n", "\n", "\n", "Free will", "\n", "\n", "\n", "\n", "Compatibilism", "\n", "Determinism", "\n", "Libertarianism", "\n", "\n", "\n", "\n", "\n", "\n", "Metaphysics", "\n", "\n", "\n", "\n", "Atomism", "\n", "Dualism", "\n", "Monism", "\n", "Naturalism", "\n", "\n", "\n", "\n", "\n", "\n", "Epistemology", "\n", "\n", "\n", "\n", "Constructivism", "\n", "Empiricism", "\n", "Idealism", "\n", "Particularism", "\n", "Fideism", "\n", "Rationalism", "\u00a0/ ", "Reasonism", "\n", "Skepticism", "\n", "Solipsism", "\n", "\n", "\n", "\n", "\n", "\n", "Mind", "\n", "\n", "\n", "\n", "Behaviorism", "\n", "Emergentism", "\n", "Eliminativism", "\n", "Epiphenomenalism", "\n", "Functionalism", "\n", "Objectivism", "\n", "Subjectivism", "\n", "\n", "\n", "\n", "\n", "\n", "Normativity", "\n", "\n", "\n", "\n", "Absolutism", "\n", "Particularism", "\n", "Relativism", "\n", "Nihilism", "\n", "Skepticism", "\n", "Universalism", "\n", "\n", "\n", "\n", "\n", "\n", "Ontology", "\n", "\n", "\n", "\n", "Action", "\n", "Event", "\n", "Process", "\n", "\n", "\n", "\n", "\n", "\n", "Reality", "\n", "\n", "\n", "\n", "Anti-realism", "\n", "Conceptualism", "\n", "Idealism", "\n", "Materialism", "\n", "Naturalism", "\n", "Nominalism", "\n", "Physicalism", "\n", "Realism", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "Philosophy by region", "\n", "Philosophy-related lists", "\n", "Miscellaneous", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "By region", "\n", "\n", "\n", "\n", "African", "\n", "Ethiopian", "\n", "Aztec", "\n", "Native America", "\n", "Eastern", "\n", "Chinese", "\n", "Egyptian", "\n", "Czech", "\n", "Indian", "\n", "Indonesian", "\n", "Iranian", "\n", "Japanese", "\n", "Korean", "\n", "Vietnam", "\n", "Pakistani", "\n", "Western", "\n", "American", "\n", "Australian", "\n", "British", "\n", "Danish", "\n", "French", "\n", "German", "\n", "Greek", "\n", "Italian", "\n", "Polish", "\n", "Romanian", "\n", "Russian", "\n", "Slovene", "\n", "Spanish", "\n", "Turkish", "\n", "\n", "\n", "\n", "\n", "\n", "Lists", "\n", "\n", "\n", "\n", "Outline", "\n", "Index", "\n", "Years", "\n", "Problems", "\n", "Schools", "\n", "Glossary", "\n", "Philosophers", "\n", "Movements", "\n", "Publications", "\n", "\n", "\n", "\n", "\n", "\n", "Miscellaneous", "\n", "\n", "\n", "\n", "Women in philosophy", "\n", "Sage (philosophy)", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", " ", "Portal", "\n", " ", "Category", "\n", " ", "Book", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "v", "\n", "t", "\n", "e", "\n", "\n", "\n", "Charitable giving", "\n", "\n", "\n", "\n", "Main topics", "\n", "\n", "\n", "\n", "Alms", "\n", "Altruism", "\n", "Donation", "\n", "Fundraising", "\n", "Philanthropy", "\n", "Volunteering", "\n", "\n", "\n", "\n", "\n", "\n", "Types of ", "charitable", "\norganizations", "\n", "\n", "\n", "\n", "Charitable trust / Registered charity", "\n", "Foundation", "\n", "\n", "Private", "\n", "\n", "\n", "Mutual-benefit nonprofit corporation", "\n", "Non-governmental organization", "\n", "Nonprofit organization", "\n", "Public-benefit nonprofit corporation", "\n", "Religious corporation", "\n", "Voluntary association", "\n", "\n", "\n", "\n", "\n", "\n", "Charity and religion", "\n", "\n", "\n", "\n", "D\u0101na", "\n", "Tithe", "\n", "Tzedakah", "\n", "Sadaqah", "\n", "Zakat", "\n", "\n", "\n", "\n", "\n", "\n", "Charity evaluators", "\n", "\n", "\n", "\n", "Charity Navigator", "\n", "CharityWatch", "\n", "GiveWell", "\n", "Giving What We Can", "\n", "GuideStar", "\n", "Open Philanthropy Project", "\n", "\n", "\n", "\n", "\n", "\n", "Further topics", "\n", "\n", "\n", "\n", "Alternative giving", "\n", "Benefit concert", "\n", "Charity / thrift / op shop", "\n", "Click-to-donate site", "\n", "Drive", "\n", "Donor intent", "\n", "Earning to give", "\n", "Effective altruism", "\n", "List of charitable foundations", "\n", "\n", "wealthiest", "\n", "\n", "\n", "Master of Nonprofit Organizations", "\n", "Matching funds", "\n", "Telethon", "\n", "Volunteer grant", "\n", "Wall of Kindness", "\n", "Warm-glow giving", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "v", "\n", "t", "\n", "e", "\n", "\n", "\n", "Ethics", "\n", "\n", "\n", "\n", "Theories", "\n", "\n", "\n", "\n", "Casuistry", "\n", "Consequentialism", "\n", "Deontology", "\n", "\n", "Kantian ethics", "\n", "\n", "\n", "Ethics of care", "\n", "Existentialist ethics", "\n", "Meta-ethics", "\n", "Particularism", "\n", "Pragmatic ethics", "\n", "Role ethics", "\n", "Virtue ethics", "\n", "\n", "\n", "\n", "\n", "\n", "Concepts", "\n", "\n", "\n", "\n", "Autonomy", "\n", "Axiology", "\n", "Belief", "\n", "Conscience", "\n", "Consent", "\n", "Equality", "\n", "Care", "\n", "Free will", "\n", "Good and evil", "\n", "Happiness", "\n", "Ideal", "\n", "Justice", "\n", "Morality", "\n", "Norm", "\n", "Freedom", "\n", "Principles", "\n", "Suffering or Pain", "\n", "Stewardship", "\n", "Sympathy", "\n", "Trust", "\n", "Value", "\n", "Virtue", "\n", "Wrong", "\n", "full index...", "\n", "\n", "\n", "\n", "\n", "\n", "Philosophers", "\n", "\n", "\n", "\n", "Laozi", "\n", "Plato", "\n", "Aristotle", "\n", "Diogenes", "\n", "Valluvar", "\n", "Cicero", "\n", "Confucius", "\n", "Augustine of Hippo", "\n", "Mencius", "\n", "Mozi", "\n", "Xunzi", "\n", "Thomas Aquinas", "\n", "Baruch Spinoza", "\n", "David Hume", "\n", "Immanuel Kant", "\n", "Georg W. F. Hegel", "\n", "Arthur Schopenhauer", "\n", "Jeremy Bentham", "\n", "John Stuart Mill", "\n", "S\u00f8ren Kierkegaard", "\n", "Henry Sidgwick", "\n", "Friedrich Nietzsche", "\n", "G. E. Moore", "\n", "Karl Barth", "\n", "Paul Tillich", "\n", "Dietrich Bonhoeffer", "\n", "Philippa Foot", "\n", "John Rawls", "\n", "John Dewey", "\n", "Bernard Williams", "\n", "J. L. Mackie", "\n", "G. E. M. Anscombe", "\n", "William Frankena", "\n", "Alasdair MacIntyre", "\n", "R. M. Hare", "\n", "Peter Singer", "\n", "Derek Parfit", "\n", "Thomas Nagel", "\n", "Robert Merrihew Adams", "\n", "Charles Taylor", "\n", "Joxe Azurmendi", "\n", "Christine Korsgaard", "\n", "Martha Nussbaum", "\n", "more...", "\n", "\n", "\n", "\n", "\n", "\n", "Applied ethics", "\n", "\n", "\n", "\n", "Bioethics", "\n", "Business ethics", "\n", "Discourse ethics", "\n", "Environmental ethics", "\n", "Legal ethics", "\n", "Media ethics", "\n", "Medical ethics", "\n", "Nursing ethics", "\n", "Professional ethics", "\n", "Sexual ethics", "\n", "Ethics of eating meat", "\n", "Ethics of technology", "\n", "\n", "\n", "\n", "\n", "\n", "Related articles", "\n", "\n", "\n", "\n", "Christian ethics", "\n", "Descriptive ethics", "\n", "Ethics in religion", "\n", "Evolutionary ethics", "\n", "Feminist ethics", "\n", "History of ethics", "\n", "Ideology", "\n", "Islamic ethics", "\n", "Jewish ethics", "\n", "Normative ethics", "\n", "Philosophy of law", "\n", "Political philosophy", "\n", "Social philosophy", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "Portal", "\n", "Category", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "Authority control", "\n", "\n", "\n", "\n", "GND", ": ", "4129281-9", "\n", "NDL", ": ", "00569562", "\n", "\n", "\n", "\n", "\n", "\n", "\n\n\n", "\n", "\n", "\n", "\n"], "lastUpdated": " 16 January 2018, at 01:34."}, +{"title": "Adrian Holovaty", "text": ["\n", "\n", "Adrian Holovaty", "\n", "\n", "\n", "\n", "Adrian Holovaty in 2009", "\n", "\n", "\n", "\n", "Born", "\n", "1981 (age\u00a036\u201337)", "\n", "Naperville, Illinois", "\n", "\n", "\n", "Nationality", "\n", "USA", "\n", "\n", "\n", "Alma\u00a0mater", "\n", "Missouri School of Journalism", " (B.A., 2001)", "\n", "\n", "\n", "Occupation", "\n", "web developer, journalist, entrepreneur", "\n", "\n", "\n", "Known\u00a0for", "\n", "Django Web framework", "\n", "\n", "\n", "Adrian Holovaty", " (born 1981) is an American web developer, journalist and entrepreneur from ", "Chicago, Illinois", ", living in ", "Amsterdam, the Netherlands", ". He is co-creator of the ", "Django web framework", " and an advocate of \"journalism via computer programming\".", "\n", "\n", "\n", "\n", "Contents", "\n", "\n", "\n", "1", " ", "Life and career", "\n", "\n", "1.1", " ", "Crime mapping innovations", "\n", "\n", "\n", "2", " ", "References", "\n", "3", " ", "External links", "\n", "\n", "\n", "\n", "Life and career", "[", "edit", "]", "\n", "Holovaty, a ", "Ukrainian American", ", grew up in ", "Naperville, Illinois", ". He graduated from the ", "Missouri School of Journalism", " in 2001 and worked as a web developer/journalist for ", "The Atlanta Journal-Constitution", ", ", "Lawrence Journal-World", " and ", "The Washington Post", " before starting ", "EveryBlock", ", a web startup that provided \"microlocal\" news, in 2007.", "[1]", "\n", "While working at the ", "Lawrence Journal-World", " from 2002 to 2005, he and other web developers (", "Simon Willison", ", Jacob Kaplan-Moss and Wilson Miner", "[2]", ") created ", "Django", ", an ", "open source", " ", "web application framework", " for ", "Python", ". He and Kaplan-Moss served as the framework's ", "Benevolent Dictators for Life", " until January 2014.", "[3]", " The pair wrote ", "The Django Book", ", first published in 2007.", "\n", "Holovaty is also a guitarist. In 1999, he recorded an album of his own guitar compositions,", "[4]", " and since 2007 he has posted videos of his acoustic guitar arrangements on ", "YouTube", ", building an audience of more than 20,000 subscribers.", "[5]", " In 2012 he and PJ Macklin founded ", "SoundSlice", ", a ", "collaboratively edited", " website which shows YouTube music videos alongside simultaneous animated ", "tablature", ", intended to help guitarists learn new musical pieces.", "[6]", "\n", "Crime mapping innovations", "[", "edit", "]", "\n", "In 2005, Holovaty launched ", "chicagocrime.org", ", a ", "Google Maps", " ", "mashup", " of ", "Chicago Police Department", " crime data.", "[7]", " The site won the 2005 Batten Award for Innovations in Journalism", "[8]", " and was named by ", "The New York Times", " as one of 2005's best ideas.", "[9]", "\n", "As one of the first Google Maps mashups, it helped influence Google to create its official Google Maps API.", "[10]", " Newspaper sites such as the ", "Chicago Tribune", " and the ", "Chicago Sun-Times", " have incorporated a map from EveryBlock, the successor to chicagocrime.org, into their web sites.", "[11]", "\n", "In 2007, Holovaty was awarded a $1.1 million ", "Knight Foundation", " grant and left his job as editor of editorial innovations at ", "washingtonpost.com", " to start EveryBlock, the successor to chicagocrime.org.", "[12]", " On August 17, 2009 EveryBlock was officially acquired by ", "msnbc.com", ".", "[13]", " The terms of the deal were not disclosed.", "[14]", " In February 2013, NBC News announced that it was shutting down EveryBlock.", "[15]", "\n", "References", "[", "edit", "]", "\n", "\n", "\n", "\n", "^", " ", "Goodbye hyperlocal, hello microlocal | Holovaty.com", "\n", "^", " ", "Django committers", "\n", "^", " ", "Adrian and Jacob retiring as Django BDFLs | Holovaty.com", "\n", "^", " ", "Music | Holovaty.com", "\n", "^", " ", "YouTube - adrianholovaty's Channel", "\n", "^", " ", "\"About Soundslice\"", ". SoundSlice LLC. November 2012.", "\u00a0", "\n", "^", " ", "Announcing chicagocrime.org | Holovaty.com", "\n", "^", " ", "Batten award", "\n", "^", " ", "Do-It-Yourself Cartography", "\n", "^", " ", "Official Google Blog: The world is your JavaScript-enabled oyster", "\n", "^", " ", "Street Wise: ", "http://www.chicagomag.com/Chicago-Magazine/June-2009/Street-Wise/", "\n", "^", " ", "Knight Foundation grant | Holovaty.com", "\n", "^", " ", "Nieman Journalism Lab. ", "\"EveryBlock\"", ". ", "Encyclo: an encyclopedia of the future of news", ". Retrieved ", "1 April", " 2012", ".", "\u00a0", "\n", "^", " ", "http://www.msnbc.msn.com/id/32443365/ns/business-us_business/", "\n", "^", " ", "\"NBC News shuts down hyperlocal site EveryBlock\"", ". CNN. February 7, 2013", ". Retrieved ", "February 7,", " 2013", ".", "\u00a0", "\n", "\n", "\n", "\n", "External links", "[", "edit", "]", "\n", "\n", "Holovaty.com -- personal site", "\n", "EveryBlock", "\n", "YouTube videos", "\n", "\n\n\n", "\n", "\n", "\n", "\n"], "lastUpdated": " 3 September 2017, at 09:03."}, +{"title": "Hacker culture", "text": ["Not to be confused with ", "Security hacker", ".", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "This article has multiple issues.", " Please help ", "improve it", " or discuss these issues on the ", "talk page", ". ", "(", "Learn how and when to remove these template messages", ")", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "This article's ", "tone or style may not reflect the ", "encyclopedic tone", " used on Wikipedia", ". ", "See Wikipedia's ", "guide to writing better articles", " for suggestions.", " ", "(June 2011)", " ", "(", "Learn how and when to remove this template message", ")", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "This article ", "needs additional citations for ", "verification", ". ", "Please help ", "improve this article", " by ", "adding citations to reliable sources", ". Unsourced material may be challenged and removed.", " ", "(April 2011)", " ", "(", "Learn how and when to remove this template message", ")", "\n", "\n", "\n", "\n", "\n", "\n", "(", "Learn how and when to remove this template message", ")", "\n", "\n", "\n", "\n", "The ", "hacker culture", " is a ", "subculture", " of individuals who enjoy the intellectual challenge of creatively overcoming limitations of software systems to achieve novel and clever outcomes.", "[1]", " The act of engaging in activities (such as programming or other media", "[2]", ") in a spirit of playfulness and exploration is termed \"hacking\". However, the defining characteristic of a ", "hacker", " is not the activities performed themselves (e.g. ", "programming", "), but the manner in which it is done", "[3]", " and whether it is something exciting and meaningful.", "[2]", " Activities of playful cleverness can be said to have \"hack value\" and therefore the term \"hacks\" came about,", "[3]", " with early examples including ", "pranks at MIT", " done by students to demonstrate their technical aptitude and cleverness. Therefore, the hacker culture originally emerged in academia in the 1960s around the ", "Massachusetts Institute of Technology", " (MIT)'s ", "Tech Model Railroad Club", " (TMRC)", "[4]", " and ", "MIT Artificial Intelligence Laboratory", ".", "[5]", "\n", "Richard Stallman", " explains about hackers who program:", "\n", "\n", "What they had in common was mainly love of excellence and programming. They wanted to make their programs that they used be as good as they could. They also wanted to make them do neat things. They wanted to be able to do something in a more exciting way than anyone believed possible and show \"Look how wonderful this is. I bet you didn't believe this could be done.\"", "[6]", "\n", "\n", "Hackers from this subculture tend to emphatically differentiate themselves from what they pejoratively call \"", "crackers", "\"; those who are generally referred to by media and members of the general public using the term \"hacker\", and whose primary focus\u200d\u2014\u200cbe it to malign or for malevolent purposes\u200d\u2014\u200clies in ", "exploiting", " weaknesses in computer security.", "[7]", "\n", "\n", "\n", "\n", "Contents", "\n", "\n", "\n", "1", " ", "Definition", "\n", "2", " ", "History", "\n", "3", " ", "Ethics and principles", "\n", "4", " ", "Uses", "\n", "\n", "4.1", " ", "Programming", "\n", "4.2", " ", "Home computing enthusiasts", "\n", "4.3", " ", "Hacker artists", "\n", "\n", "4.3.1", " ", "Art", "\n", "4.3.2", " ", "Hacker art mentions", "\n", "\n", "\n", "\n", "\n", "5", " ", "See also", "\n", "6", " ", "References", "\n", "7", " ", "Further reading", "\n", "8", " ", "External links", "\n", "\n", "\n", "\n", "Definition", "\n", "The ", "Jargon File", ", an influential but not universally accepted compendium of hacker slang, defines hacker as \"A person who enjoys exploring the details of programmable systems and stretching their capabilities, as opposed to most users, who prefer to learn only the minimum necessary.\"", "[8]", " The ", "Request for Comments", " (RFC) 1392, the Internet Users' Glossary, amplifies this meaning as \"A person who delights in having an intimate understanding of the internal workings of a system, computers and computer networks in particular.\"", "[9]", "\n", "As documented in the Jargon File, these hackers are disappointed by the mass media and general public's usage of the word ", "hacker", " to refer to ", "security breakers", ", calling them \"crackers\" instead. This includes both \"good\" crackers (\"", "white hat hackers", "\") who use their computer security related skills and knowledge to learn more about how systems and networks work and to help to discover and fix security holes, as well as those more \"evil\" crackers (\"", "black hat hackers", "\") who use the same skills to author harmful software (like viruses, trojans, etc.) and illegally infiltrate secure systems with the intention of doing harm to the system.", "[10]", " The programmer subculture of hackers, in contrast to the cracker community, generally sees computer security related activities as contrary to the ideals of the original and true meaning of the hacker term that instead related to playful cleverness.", "[10]", "\n", "History", "\n", "The word \"hacker\" derives from the seventeenth-century word of a \"lusty laborer\" who harvested fields by dogged and rough swings of his hoe. Although the idea of \"hacking\" has existed long before the term \"hacker\"\u200d\u2014\u200cwith the most notable example of Lightning Ellsworth, it was not a word that the first programmers used to describe themselves. In fact, many of the first programmers were from engineering or physics backgrounds.", "\n", "\n", "\n", "\u201c", "\n", "\"But from about 1945 onward (and especially during the creation of the first ENIAC computer) some programmers realized that their expertise in computer software and technology had evolved not just into a profession, but into a passion\" (46).", "[1]", "\n", "\u201d", "\n", "\n", "\n", "\n", "\n", "\n", "There was a growing awareness of a style of programming different from the cut and dried methods employed at first,", "[11]", "[12]", " but it was not until the 1960s that the term hackers began to be used to describe proficient computer programmers. Therefore, the fundamental characteristic that links all who identify themselves as hackers are ones who enjoy \"\u2026the intellectual challenge of creatively overcoming and circumventing limitations of programming systems and who tries to extend their capabilities\" (47).", "[1]", " With this definition in mind, it can be clear where the negative implications of the word \"hacker\" and the subculture of \"hackers\" came from.", "\n", "Some common nicknames among this culture include \"crackers\" who are unskilled thieves who mainly rely on luck. Others include \"phreak\"\u200d\u2014\u200cwhich refers to a type of skilled ", "crackers", " and \"warez d00dz\"\u200d\u2014\u200cwhich is a kind of cracker that acquires reproductions of copyrighted software. Within all hackers are tiers of hackers such as the \"samurai\" who are hackers that hire themselves out for legal electronic locksmith work. Furthermore, there are other hackers who are hired to test security, they are called \"sneakers\" or \"tiger teams\".", "\n", "Before communications between computers and computer users were as ", "networked", " as they are now, there were multiple independent and parallel hacker subcultures, often unaware or only partially aware of each other's existence. All of these had certain important traits in common:", "\n", "\n", "Creating software and sharing it with each other", "\n", "Placing a high value on freedom of inquiry", "\n", "Hostility to secrecy", "\n", "Information-sharing as both an ideal and a practical strategy", "\n", "Upholding the right to ", "fork", "\n", "Emphasis on rationality", "\n", "Distaste for authority", "\n", "Playful cleverness, taking the serious humorously and humor seriously", "\n", "\n", "\n", "\n", "\n", "\nThe ", "Glider", ", proposed as an ", "emblem of the \"hacker community\"", " by ", "Eric S. Raymond", ".", "[13]", "\n", "\n", "\n", "These sorts of subcultures were commonly found at ", "academic", " settings such as ", "college", " ", "campuses", ". The ", "MIT Artificial Intelligence Laboratory", ", the ", "University of California, Berkeley", " and ", "Carnegie Mellon University", " were particularly well-known hotbeds of early hacker culture. They evolved in parallel, and largely unconsciously, until the ", "Internet", ", where a legendary ", "PDP-10", " machine at MIT, called AI, that was running ", "ITS", ", provided an early meeting point of the hacker community. This and other developments such as the rise of the ", "free software movement", " and ", "community", " drew together a critically large population and encouraged the spread of a conscious, common, and systematic ethos. Symptomatic of this evolution were an increasing adoption of ", "common slang", " and a shared view of history, similar to the way in which other occupational groups have professionalized themselves but without the formal credentialing process characteristic of most professional groups.", "[", "citation needed", "]", "\n", "Over time, the academic hacker subculture has tended to become more conscious, more cohesive, and better organized. The most important consciousness-raising moments have included the composition of the first ", "Jargon File", " in 1973, the promulgation of the ", "GNU Manifesto", " in 1985, and the publication of ", "Eric Raymond", "'s ", "The Cathedral and the Bazaar", " in 1997. Correlated with this has been the gradual recognition of a set of shared culture heroes, including: ", "Bill Joy", ", ", "Donald Knuth", ", ", "Dennis Ritchie", ", ", "Alan Kay", ", ", "Ken Thompson", ", ", "Richard M. Stallman", ", ", "Linus Torvalds", ", ", "Larry Wall", ", and ", "Guido Van Rossum", ".", "\n", "The concentration of academic hacker subculture has paralleled and partly been driven by the commoditization of computer and networking technology, and has, in turn, accelerated that process. In 1975, hackerdom was scattered across several different families of ", "operating systems", " and disparate networks; today it is largely a ", "Unix", " and ", "TCP/IP", " phenomenon, and is concentrated around various ", "operating systems", " based on ", "free software", " and ", "open-source software", " development.", "\n", "Ethics and principles", "\n", "Main article: ", "Hacker ethic", "\n", "Many of the values and tenets of the free and open source software movement stem from the ", "hacker ethics", " that originated at ", "MIT", "[14]", " and at the ", "Homebrew Computer Club", ". The hacker ethics were chronicled by Steven Levy in ", "Hackers: Heroes of the Computer Revolution", "[15]", " and in other texts in which Levy formulates and summarizes general hacker attitudes:", "\n", "\n", "Access to computers-and anything that might teach you something about the way the world works-should be unlimited and total.", "\n", "All information should be free.", "\n", "Hackers should be judged by their hacking, not bogus criteria such as degrees, age, race, or position.", "\n", "You can create art and beauty on a computer.", "\n", "Computers can change your life for the better.", "\n", "\n", "Hacker ethics are concerned primarily with sharing, openness, collaboration, and engaging in the hands-on imperative.", "[15]", "\n", "Linus Torvalds", ", one of the leaders of the open source movement (known primarily for developing the ", "Linux kernel", "), has noted in the book ", "The Hacker Ethic", "[16]", " that these principles have evolved from the known Protestant ethics and incorporates the spirits of capitalism, as introduced in the early 20th century by ", "Max Weber", ".", "\n", "Hack value is the notion used by hackers to express that something is worth doing or is interesting.", "[17]", " This is something that hackers often feel intuitively about a problem or solution.", "\n", "An aspect of hack value is performing feats for the sake of showing that they can be done, even if others think it is difficult. Using things in a unique way outside their intended purpose is often perceived as having hack value. Examples are using a ", "dot matrix impact printer", " to produce musical notes, using a ", "flatbed scanner", " to take ultra-high-resolution photographs or using an ", "optical mouse", " as ", "barcode reader", ".", "\n", "A solution or feat has \"hack value\" if it is done in a way that has finesse, cleverness or brilliance, which makes ", "creativity", " an essential part of the meaning. For example, ", "picking a difficult lock", " has hack value; smashing it does not. As another example, proving ", "Fermat's last theorem", " by linking together most of modern mathematics has hack value; solving a combinatorial problem by ", "exhaustively trying all possibilities", " does not. Hacking is not using process of elimination to find a solution; it's the process of finding a clever solution to a problem.", "\n", "Uses", "\n", "While using ", "hacker", " to refer to someone who enjoys playful cleverness is most often applied to computer programmers, it is sometimes used for people who apply the same attitude to other fields.", "[7]", " For example, ", "Richard Stallman", " describes the silent composition ", "4\u203233\u2033", " by John Cage and the 14th-century ", "palindromic", " three-part piece \"Ma Fin Est Mon Commencement\" by ", "Guillaume de Machaut", " as hacks.", "[3]", " According to the Jargon File,", "[8]", " the word ", "hacker", " was used in a similar sense among radio amateurs in the 1950s, predating the software hacking community.", "\n", "Programming", "\n", "The Boston Globe", " in 1984 defined \"hackers\" as \"computer nuts\".", "[18]", " In their programmer subculture, a hacker is a person who follows a spirit of playful cleverness and loves programming. It is found in an originally academic movement unrelated to computer security and most visibly associated with ", "free software", ", ", "open source", " and ", "demoscene", ". It also has a ", "hacker ethic", ", based on the idea that writing software and sharing the result on a voluntary basis is a good idea, and that information should be free, but that it's not up to the hacker to make it free by breaking into private computer systems. This hacker ethic was publicized and perhaps originated in ", "Steven Levy", "'s ", "Hackers: Heroes of the Computer Revolution", " (1984). It contains a codification of its principles.", "\n", "The programmer subculture of hackers disassociates from the mass media's pejorative use of the word 'hacker' referring to computer security, and usually prefer the term 'cracker' for that meaning. Complaints about supposed mainstream misuse started as early as 1983, when media used \"hacker\" to refer to the computer criminals involved in ", "The 414s", " case.", "[19]", "\n", "In the programmer subculture of hackers, a computer hacker is a person who enjoys designing software and building programs with a sense for aesthetics and playful cleverness. The term hack in this sense can be traced back to \"describe the elaborate college pranks that...students would regularly devise\" (Levy, 1984 p.\u00a010). To be considered a 'hack' was an honor among like-minded peers as \"to qualify as a hack, the feat must be imbued with innovation, style and technical virtuosity\" (Levy, 1984 p.\u00a010) The ", "MIT", " ", "Tech Model Railroad Club", " Dictionary defined hack in 1959 (not yet in a computer context) as \"1) an article or project without constructive end; 2) a project undertaken on bad self-advice; 3) an entropy booster; 4) to produce, or attempt to produce, a hack(3)\", and \"hacker\" was defined as \"one who hacks, or makes them\". Much of TMRC's jargon was later imported into early computing culture, because the club started using a ", "DEC", " ", "PDP-1", " and applied its local model railroad slang in this computing context. Initially incomprehensible to outsiders, the slang also became popular in MIT's computing environments beyond the club. Other examples of jargon imported from the club are 'losing' (\"when a piece of equipment is not working\")", "[15]", " and 'munged' (\"when a piece of equipment is ruined\").", "[15]", "\n", "Others did not always view hackers with approval. ", "MIT living groups", " in 1989 avoided advertising their sophisticated ", "Project Athena", " workstations to prospective members because they wanted residents who were interested in people, not computers, with one fraternity member stating that \"We were worried about the hacker subculture\".", "[20]", "\n", "According to ", "Eric S. Raymond", ",", "[21]", " the Open Source and Free Software hacker subculture developed in the 1960s among 'academic hackers'", "[22]", " working on early ", "minicomputers", " in ", "computer science", " environments in the United States.", "\n", "Hackers were influenced by and absorbed many ideas of key technological developments and the people associated with them. Most notable is the technical culture of the pioneers of the ", "Arpanet", ", starting in 1969. The ", "PDP-10", " AI machine at MIT, running the ", "ITS", " operating system and connected to the Arpanet, provided an early hacker meeting point. After 1980 the subculture coalesced with the culture of ", "Unix", ". Since the mid-1990s, it has been largely coincident with what is now called the ", "free software", " and ", "open source movement", ".", "\n", "Many programmers have been labeled \"great hackers\",", "[23]", " but the specifics of who that label applies to is a matter of opinion. Certainly major contributors to ", "computer science", " such as ", "Edsger Dijkstra", " and ", "Donald Knuth", ", as well as the inventors of popular software such as ", "Linus Torvalds", " (", "Linux", "), and ", "Ken Thompson", " and ", "Dennis Ritchie", " (", "Unix", " and ", "C programming language", ") are likely to be included in any such list; see also ", "List of programmers", ". People primarily known for their contributions to the consciousness of the programmer subculture of hackers include ", "Richard Stallman", ", the founder of the free software movement and the ", "GNU project", ", president of the ", "Free Software Foundation", " and author of the famous ", "Emacs", " text editor as well as the ", "GNU Compiler Collection (GCC)", ", and ", "Eric S. Raymond", ", one of the founders of the ", "Open Source Initiative", " and writer of the famous text ", "The Cathedral and the Bazaar", " and many other essays, maintainer of the ", "Jargon File", " (which was previously maintained by ", "Guy L. Steele, Jr.", ").", "\n", "Within the computer programmer subculture of hackers, the term hacker is also used for a programmer who reaches a goal by employing a series of modifications to extend existing ", "code", " or resources. In this sense, it can have a negative connotation of using inelegant ", "kludges", " to accomplish programming tasks that are quick, but ugly, inelegant, difficult to extend, hard to maintain and inefficient. This derogatory form of the noun \"", "hack", "\" derives from the everyday English sense \"to cut or shape by or as if by crude or ruthless strokes\" [Merriam-Webster] and is even used among users of the positive sense of \"hacker\" who produces \"cool\" or \"neat\" hacks. In other words, to \"hack\" at an original creation, as if with an axe, is to force-fit it into being usable for a task not intended by the original creator, and a \"hacker\" would be someone who does this habitually. (The original creator and the hacker may be the same person.) This usage is common in both programming, engineering and building. In programming, hacking in this sense appears to be tolerated and seen as a necessary compromise in many situations. Some argue that it should not be, due to this negative meaning; others argue that some kludges can, for all their ugliness and imperfection, still have \"hack value\".", "\n", "In non-software engineering, the culture is less tolerant of unmaintainable solutions, even when intended to be temporary, and describing someone as a \"hacker\" might imply that they lack professionalism. In this sense, the term has no real positive connotations, except for the idea that the hacker is capable of doing modifications that allow a system to work in the short term, and so has some sort of marketable skills. However, there is always the understanding that a more skillful or technical logician could have produced successful modifications that would not be considered a \"hack-job\". The definition is similar to other, non-computer based uses of the term \"hack-job\". For instance, a professional modification of a production sports car into a racing machine would not be considered a hack-job, but a cobbled together backyard mechanic's result could be. Even though the outcome of a race of the two machines could not be assumed, a quick inspection would instantly reveal the difference in the level of professionalism of the designers. The adjective associated with hacker is \"hackish\" (see the ", "Jargon file", ").", "\n", "In a very universal sense, hacker also means someone who makes things work beyond perceived limits in a clever way in general, without necessarily referring to computers, especially at MIT.", "[24]", " That is, people who apply the creative attitude of software hackers in fields other than computing. This includes even activities that predate computer hacking, for example ", "reality hackers", " or ", "urban spelunkers", " (exploring undocumented or unauthorized areas in buildings). One specific example is clever pranks", "[25]", " traditionally perpetrated by MIT students, with the perpetrator being called hacker. For example, when MIT students surreptitiously put a fake police car atop the dome on MIT's Building 10,", "[26]", " that was a hack in this sense, and the students involved were therefore hackers. Another type of hacker is now called a ", "reality hacker", ". More recent examples of usage for almost any type of playful cleverness are ", "wetware", " hackers (\"hack your brain\"), ", "media hackers", " and \"hack your reputation\". In a similar vein, a \"hack\" may refer to a ", "math", " hack, that is, a clever solution to a mathematical problem. The ", "GNU General Public License", " has been described as", "[", "by whom?", "]", " a ", "copyright", " hack because it cleverly uses the copyright laws for a purpose the lawmakers did not foresee. All of these uses now also have spread beyond MIT as well.", "\n", "Home computing enthusiasts", "\n", "Main article: ", "Hacking of consumer electronics", "\n", "In yet another context, a hacker is a computer hobbyist who pushes the limits of software or hardware. The home computer hacking subculture relates to the hobbyist home computing of the late 1970s, beginning with the availability of ", "MITS Altair", ". An influential organization was the ", "Homebrew Computer Club", ". However, its roots go back further to ", "amateur radio", " enthusiasts. The amateur radio slang referred to creatively tinkering to improve performance as \"hacking\" already in the 1950s.", "[27]", "\n", "A large overlaps between hobbyist hackers and the programmer subculture hackers existed during the Homebrew Club's days, but the interests and values of both communities somewhat diverged. Today, the hobbyists focus on commercial ", "computer and video games", ", ", "software cracking", " and exceptional computer programming (", "demo scene", "). Also of interest to some members of this group is the modification of computer hardware and other electronic devices, see ", "modding", ".", "\n", "\n", "\n", "\n", "\nA ", "DIY", " musician probes the circuit board of a synthesizer for ", "\"bends\"", " using a jeweler's screwdriver and alligator clips", "\n", "\n", "\n", "Electronics hobbyists working on machines other than computers also fall into this category. This includes people who do simple modifications to ", "graphing calculators", ", ", "video game consoles", ", electronic ", "musical keyboards", " or other device (see ", "CueCat", " for a notorious example) to expose or add functionality to a device that was unintended for use by end users by the company who created it. A number of ", "techno", " musicians have modified 1980s-era ", "Casio SK-1", " sampling keyboards to create unusual sounds by doing ", "circuit bending", ": connecting wires to different leads of the integrated circuit chips. The results of these DIY experiments range from opening up previously inaccessible features that were part of the chip design to producing the strange, dis-harmonic digital tones that became part of the techno music style. Companies take different attitudes towards such practices, ranging from open acceptance (such as ", "Texas Instruments", " for its graphing calculators and ", "Lego", " for its ", "Lego Mindstorms", " robotics gear) to outright hostility (such as ", "Microsoft", "'s attempts to lock out ", "Xbox", " hackers or the ", "DRM", " routines on ", "Blu-ray Disc", " players designed to sabotage compromised players.", "[", "citation needed", "]", ")", "\n", "In this context, a \"hack\" refers to a ", "program", " that (sometimes illegally) modifies another program, often a video game, giving the user access to features otherwise inaccessible to them. As an example of this use, for ", "Palm OS", " users (until the 4th iteration of this ", "operating system", "), a \"hack\" refers to an extension of the operating system which provides additional functionality. Term also refers to those people who cheat on video games using special software. This can also refer to the ", "jailbreaking", " of ", "iPhones", ".", "\n", "Hacker artists", "\n", "See also: ", "Fractal art", ", ", "algorithmic art", ", and ", "interactive art", "\n", "Hacker artists create ", "art", " by hacking on ", "technology", " as an ", "artistic medium", ". This has extended the definition of the term and what it means to be a hacker. Such ", "artists", " may work with ", "graphics", ", ", "computer hardware", ", ", "sculpture", ", ", "music", " and other ", "audio", ", ", "animation", ", ", "video", ", ", "software", ", ", "simulations", ", ", "mathematics", ", reactive ", "sensory", " systems, text, ", "poetry", ", ", "literature", ", or any combination thereof.", "\n", "Dartmouth College", " musician Larry Polansky states:", "\n", "\n", "Technology and art are inextricably related. Many musicians, video artists, graphic artists, and even poets who work with technology\u2014whether designing it or using it\u2014consider themselves to be part of the 'hacker community.' Computer artists, like non-art hackers, often find themselves on society\u2019s fringes, developing strange, innovative uses of existing technology. There is an empathetic relationship between those, for example, who design experimental music software and hackers who write communications ", "freeware", ".", "[28]", "\n", "\n", "Another description is offered by Jenny Marketou:", "\n", "\n", "Hacker artists operate as ", "culture", " hackers who manipulate existing techno-", "semiotic", " structures towards a different end, to get inside cultural systems on the net and make them do things they were never intended to do.", "[29]", "\n", "\n", "A successful software and hardware hacker artist is ", "Mark Lottor", " (mkl), who has created the 3-D light art projects entitled the ", "Cubatron", ", and the ", "Big Round Cubatron", ". This art is made using custom computer technology, with specially designed ", "circuit boards", " and programming for ", "microprocessor", " chips to manipulate the ", "LED", " lights.", "\n", "Don Hopkins", " is a software hacker artist well known for his artistic cellular automata. This art, created by a ", "cellular automata", " computer program, generates objects which randomly bump into each other and in turn create more objects and designs, similar to a lava lamp, except that the parts change color and form through interaction. Hopkins Says:", "\n", "\n", "Cellular automata are simple rules that are applied to a grid of cells, or the pixel values of an image. The same rule is applied to every cell, to determine its next state, based on the previous state of that cell and its neighboring cells. There are many interesting cellular automata rules, and they all look very different, with amazing animated dynamic effects. '", "Life", "' is a widely known cellular automata rule, but many other lesser known rules are much more interesting.", "\n", "\n", "Some hacker artists create art by writing computer code, and others, by developing hardware. Some create with existing software tools such as ", "Adobe Photoshop", " or ", "GIMP", ".", "\n", "The creative process of hacker artists can be more abstract than artists using non-technological media. For example, ", "mathematicians", " have produced visually stunning graphic presentations of ", "fractals", ", which hackers have further enhanced, often producing detailed and intricate graphics and animations from simple mathematical formulas.", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "Bubbles", " was created using watercolors, then scanned into a computer. Colors were then manipulated using a software imaging tool", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "Sunrise", " was created using pen and ink, then scanned into a computer and colored with a software imaging tool", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "Rolling Golden Hills of California", " was created using pencil, scanned, and then painted with a software imaging tool", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "Barnsley's fern", ", a fractal fern computed using an ", "iterated function system", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "A fractal that models the surface of a mountain", "\n", "\n", "\n", "\n", "\n", "Art", "\n", "\n", "\n", "Art.Net", "\n", "Burning Man Festival", "\n", "Computer art", "\n", "Computer music", "\n", "Digital art", "\n", "Demoscene", "\n", "Electronic art", "\n", "Electronic art music", "\n", "Electronica", "\n", "Experiments in Art and Technology", "\n", "Generative art", "\n", "Internet art", "\n", "Robotic art", "\n", "Software art", "\n", "\n", "\n", "Hacker art mentions", "\n", "\n", "Ars Electronica", " Festival Archive \"Vector in Open Space\" by Gerfried Stocker 1996.", "\n", "Switch|Journal", " Jun 14 1998.", "\n", "Eye Weekly", " \"Tag \u2013 who's it?\" by Ingrid Hein, July 16, 1998.", "\n", "Linux Today", " \"Playing the Open Source Game\" by Shawn Hargreaves, Jul 5, 1999.", "\n", "Canterbury Christ Church University Library", " Resources by Subject \u2013 Art & Design, 2001.", "\n", "SuperCollider Workshop / Seminar", " Joel Ryan describes collaboration with hacker artists of Silicon Valley. 21 March 2002", "\n", "Anthony Barker's Weblog on Linux, Technology and the Economy", " \"Why Geeks Love Linux\", Sept 2003.", "\n", "Live Art Research", " Gesture and Response in Field-Based Performance by ", "Sha Xin Wei", " & Satinder Gill, 2005.", "\n", "Hackers, Who Are They", " \"The Hackers Identity, October 2014.", "\n", "\n", "See also", "\n", "\n", "\n", "Free software portal", "\n", "\n", "\n", "\n", "Cowboy coding", ": software development without the use of strict ", "software development methodologies", "\n", "Demoscene", "\n", "History of free software", "\n", "Maker culture", "\n", "Unix philosophy", "\n", "\n", "References", "\n", "\n", "\n", "^ ", "a", " ", "b", " ", "c", " ", "Gehring, Verna (2004). ", "The Internet In Public Life", ". Maryland: Rowman & Littlefield Publishers. pp.\u00a043\u201356. ", "ISBN", "\u00a0", "0742542335", ".", "\u00a0", "\n", "^ ", "a", " ", "b", " ", "The Hacker Community and Ethics: An Interview with Richard M. Stallman, 2002", " (gnu.org)", "\n", "^ ", "a", " ", "b", " ", "c", " ", "Stallman, Richard", " (2002). ", "\"On Hacking\"", ". Retrieved ", "2008-03-16", ".", "\u00a0", "\n", "^", " ", "TMRC - Hackers", "\n", "^", " ", "Words to Avoid (or Use with Care) Because They Are Loaded or Confusing", " (gnu.org)", "\n", "^", " ", "Richard Stallman: interview as shown in ", "Hackers \u2014 Wizards of the Electronic Age", "\n", "^ ", "a", " ", "b", " ", "Raymond, Eric", " (2008-01-08). ", "\"How To Become A Hacker\"", ". Thyrsus Enterprises", ". Retrieved ", "2008-03-16", ".", "\u00a0", "\n", "^ ", "a", " ", "b", " ", "Raymond, Eric", ", ed. (2003-12-29). ", "\"hacker\"", ". ", "Jargon File", " (version 4.4.7 ed.)", ". Retrieved ", "2008-03-02", ".", "\u00a0", "\n", "^", " ", "Internet Users' Glossary", " (Request for Comments 1392), January 1993", "\n", "^ ", "a", " ", "b", " ", "[1]", " Definition of \"Cracker\" in the ", "Jargon File", "\n", "^", " ", "\"Introduction to Functional Programming Systems Using Haskell\"", ".", "\u00a0", "\n", "^", " ", "\"A History of Modern Computing\"", ". ", "During the time one of these machines read a card, it could execute a sequence of up to forty-eight steps. More complex sequences-within-sequences were also possible. One computer scientist later noted that this method of programming demanded ", "the kind of detailed design of parallel subsequencing that one sees nowadays at the microprogramming level of some computers.", "\u00a0", "\n", "^", " ", "\"Glider Emblem FAQ\"", ". 22 May 2014", ". Retrieved ", "20 September", " 2016", ".", "\u00a0", "\n", "^", " ", "\"The Hacker's Ethics\"", ". Retrieved ", "31 August", " 2011", ".", "\u00a0", "\n", "^ ", "a", " ", "b", " ", "c", " ", "d", " ", "Levy, S: \"Hackers: Heroes of the Computer Revolution\", Anchor Press/Doubleday, 1984. ", "ISBN", "\u00a0", "0-385-19195-2", "\n", "^", " ", "Himanen, Pekka; Linus Torvalds, and Manuel Castells (2001). The Hacker Ethic. Secker & Warburg. ", "ISBN", "\u00a0", "0-436-20550-5", ".", "\n", "^", " ", "Definition of 'hack value'", " in the ", "Jargon File", "\n", "^", " ", "Dyer, Richard (1984-05-06). ", "\"Masters of the Game\"", ". ", "The Boston Globe", ". Archived from ", "the original", " on 1997-06-07.", "\u00a0", "\n", "^", " ", "jnw@uvacs.UUCP (19 September 1983). ", "\"for hack ( er ) s who want to complain to CBS\"", ". ", "Newsgroup", ":\u00a0", "net.followup net.misc, net.followup", " ", "Check ", "|newsgroup=", " value (", "help", ")", ".", "\u00a0", "\n", "^", " ", "Garfinkel, Simson L.", " (Feb\u2013Mar 1989). ", "\"Students Log On to ATHENA\"", " ", "(PDF)", ". ", "Technology Review", ". pp.\u00a07\u201310", ". Retrieved ", "25 January", " 2016", ".", "\u00a0", "\n", "^", " ", "Eric S.Raymond: ", "A Brief History of Hackerdom", " (2000)", "\n", "^", " ", "Raymond, Eric Steven", " (19 September 2003). ", "\"Reasons to Believe\"", ". ", "The Art of Unix Programming", ". Addison-Wesley.", "\u00a0", "\n", "^", " ", "Graham, Paul", " (2004). ", "\"Great Hackers\"", ".", "\u00a0", "\n", "^", " ", "Eric Steven Raymond (2001). ", "\"What Is a Hacker?\"", ". ", "How To Become A Hacker", ". Thyrsus Enterprises", ". Retrieved ", "2008-10-18", ".", "\u00a0", "\n", "^", " ", "\"MIT Gallery of Hacks\"", ". Hacks.mit.edu", ". Retrieved ", "2013-11-30", ".", "\u00a0", "\n", "^", " ", "\"IHTFP Hack Gallery: CP Car on the Great Dome\"", ". Hacks.mit.edu. 1994-05-09", ". Retrieved ", "2013-11-30", ".", "\u00a0", "\n", "^", " ", "hacker", ". ", "The Jargon Lexicon", ". Retrieved ", "2008-10-18", ".", "\u00a0", "\n", "^", " ", "Singing Together, Hacking Together, Plundering Together: Sonic Intellectual Property in Cybertimes", " by Larry Polansky", "\n", "^", " ", "\"Cornelia Sollfrank\"", ". Thing.net. 2000-07-25", ". Retrieved ", "2011-07-01", ".", "\u00a0", "\n", "\n", "\n", "Further reading", "\n", "The ", "Jargon File", " has had a role in acculturating hackers since its origins in 1975.", "[", "citation needed", "]", " These academic and literary works helped shape the academic hacker subculture:", "[", "citation needed", "]", "\n", "\n", "Abelson, Hal", "; ", "Sussman, Gerald Jay", ". ", "Structure and Interpretation of Computer Programs", ". London: ", "MIT Press", ". ", "ISBN", "\u00a0", "9780070004849", ".", "\u00a0", "\n", "Aho", "; ", "Sethi", "; ", "Ullman", ". ", "Compilers: Principles, Techniques, and Tools", ". Reading, MA: ", "Addison-Wesley", ". ", "ISBN", "\u00a0", "9780201100884", ".", "\u00a0", "\n", "Bourne, Stephen R.", " ", "The Unix System", ". Reading, MA: Addison-Wesley. ", "ISBN", "\u00a0", "9780201137910", ".", "\u00a0", "\n", "Brooks, Fred", ". ", "The Mythical Man-Month", ". Reading, MA: Addison-Wesley. ", "ISBN", "\u00a0", "9780201006506", ".", "\u00a0", "\n", "Graham, Paul", ". ", "Hackers & Painters", ". Sebastopol, CA: ", "O'Reilly Media", ". ", "ISBN", "\u00a0", "9780596006624", ".", "\u00a0", "\n", "Hoftstadter, Douglas", ". ", "G\u00f6del, Escher, Bach", ". New York, NY: ", "Basic Books", ". ", "ISBN", "\u00a0", "9780465026852", ".", "\u00a0", "\n", "James, Geoffrey", ". ", "The Tao of Programming", ". Santa Monica, CA: InfoBooks. ", "ISBN", "\u00a0", "9780931137075", ".", "\u00a0", "\n", "Kernighan, Brian W.", "; ", "Ritchie, Dennis", ". ", "The C Programming Language", ". Englewood Cliffs, NJ: ", "Prentice Hall", ". ", "ISBN", "\u00a0", "9780131103702", ".", "\u00a0", "\n", "Kidder, Tracy", ". ", "The Soul of a New Machine", ". Boston, MA: ", "Little, Brown and Company", ". ", "ISBN", "\u00a0", "9780316491709", ".", "\u00a0", "\n", "Knuth, Donald", ". ", "The Art of Computer Programming", ". Reading, MA: Addison-Wesley. ", "ISBN", "\u00a0", "9780201038019", ".", "\u00a0", "\n", "Levy, Steven", ". ", "Hackers: Heroes of the Computer Revolution", ". Garden City, NY: Anchor Press / ", "Doubleday", ". ", "ISBN", "\u00a0", "9780385191951", ".", "\u00a0", "\n", "Raymond, Eric S.", " ", "The Cathedral and the Bazaar", ". Cambridge, MA: O'Reilly Media. ", "ISBN", "\u00a0", "9781565927247", ".", "\u00a0", "\n", "Stoll, Cliff", ". ", "The Cuckoo's Egg", ". New York, NY: Doubleday. ", "ISBN", "\u00a0", "9780385249461", ".", "\u00a0", "\n", "Olson, Parmy. (05-14-2013). ", "We Are Anonymous: Inside the Hacker World of LulzSec, Anonymous, and the Global Cyber Insurgency.", " ", "ISBN", "\u00a0", "0316213527", ".", "\n", "Coleman, Gabriella. (2014-11-4). ", "Hacker, Hoaxer, Whistleblower, Spy: The Many Faces of Anonymous", ". Verso Books. ", "ISBN", "\u00a0", "1781685835", ".", "\n", "Shantz, Jeff; Tomblin, Jordon (2014-11-28). ", "Cyber Disobedience: Re://Presenting Online Anarchy", ". John Hunt Publishing. ", "ISBN", "\u00a0", "9781782795551", ".", "\n", "\n", "External links", "\n", "\n", "\n", "\n", "Wikimedia Commons has media related to ", "Hackers", ".", "\n", "\n", "\n", "\n", "A Brief History of Hackerdom", "\n", "Hack, Hackers, and Hacking", " (see ", "Appendix A", ")", "\n", "Gabriella Coleman", ": ", "The Anthropology of Hackers", ". The Atlantic, 2010.", "\n", "\n\n\n", "\n", "\n", "\n", "\n"], "lastUpdated": " 7 December 2017, at 06:12."}, +{"title": "Wes McKinney", "text": ["Wes McKinney", " is an American statistician, ", "data scientist", " and businessman. He was the CEO and ", "founder", " of technology ", "startup", " Datapad. He is the ", "BDFL", " of the open-source ", "Pandas", " package for data analysis in the ", "Python", " programming language, and has also authored two versions of the reference book ", "Python for Data Analysis", ".", "[1]", "[2]", " He worked as a ", "software engineer", " for ", "Cloudera", " following their acquisition of Datapad in 2014. He is now a software engineer at ", "Two Sigma Investments", ".", "\n", "\n", "\n", "\n", "Contents", "\n", "\n", "\n", "1", " ", "Early life and education", "\n", "2", " ", "Career", "\n", "\n", "2.1", " ", "Media coverage", "\n", "\n", "\n", "3", " ", "References", "\n", "4", " ", "External links", "\n", "\n", "\n", "\n", "Early life and education", "[", "edit", "]", "\n", "McKinney graduated from ", "MIT", " with an S.B. in Mathematics in 2007.", "[1]", " He is on leave from the ", "Duke University", " Ph.D program in Statistics.", "\n", "Career", "[", "edit", "]", "\n", "From 2007 to 2010, he researched global macro and credit trading strategies at ", "AQR Capital Management", ". From 2010 to 2012, he served as a Python consultant to hedge funds and banks while developing ", "Pandas", ". In 2012 he co-founded Lambda Foundry Inc.", "[3]", "\n", "McKinney co-founded Datapad in January 2013. He was funded by Accel Partners and others.", "[4]", " Datapad was acquired by Cloudera in September 2014.", "[5]", "[6]", " He is currently working on an open-source project called Ibis, incubated within Cloudera Labs, aiming at using Python for ", "big data", " problems.", "[7]", "\n", "Media coverage", "[", "edit", "]", "\n", "McKinney has been interviewed by ", "VentureBeat", " and others.", "[8]", "[9]", "[10]", " He frequently gives talks to the Python community.", "[11]", "[12]", "\n", "References", "[", "edit", "]", "\n", "\n", "\n", "^ ", "a", " ", "b", " ", "McKinney, Wes (2013). ", "Python for data analysis", " (1 Aufl. ed.). Sebastopol, Calif.: O'Reilly. ", "ISBN", "\u00a0", "1449319793", ". Retrieved ", "10 January", " 2016", ".", "\u00a0", "\n", "^", " ", "McKinney, William. ", "Python for Data Analysis", ".", "\u00a0", "\n", "^", " ", "\"Wes McKinney - Founder and CEO @ DataPad | CrunchBase\"", ". ", "www.crunchbase.com", ". Retrieved ", "2016-01-10", ".", "\u00a0", "\n", "^", " ", "\"DataPad | CrunchBase\"", ". ", "www.crunchbase.com", ". Retrieved ", "2016-01-10", ".", "\u00a0", "\n", "^", " ", "\"Data startup DataPad gets acquired, says it will shut down on Friday\"", ". ", "VentureBeat", ". Retrieved ", "2016-01-10", ".", "\u00a0", "\n", "^", " ", "\"Cloudera Bought Datapad\"", ". ", "GigaOm", ". Retrieved ", "10 January", " 2016", ".", "\u00a0", "\n", "^", " ", "\"Ibis on Impala: Python at Scale for Data Science - Cloudera Engineering Blog\"", ". ", "Cloudera Engineering Blog", ". Retrieved ", "2016-01-10", ". ", "[W]e are excited to announce a new open source project, called Ibis, that will deliver the great Python experience and ecosystem, only at any data and node scale.", "\u00a0", "\n", "^", " ", "\"DataPad emerges to let everyone at your company create and play with charts\"", ". ", "VentureBeat", ". Retrieved ", "2016-01-10", ".", "\u00a0", "\n", "^", " ", "\"Meet Quantopian's Newest Advisor: Wes McKinney\"", ". ", "Quantopian Blog", ". Retrieved ", "2016-01-10", ".", "\u00a0", "\n", "^", " ", "\"Big data's 4 big Vs: It's our Data Summit highlights - Web Summit Blog\"", ". ", "Web Summit Blog", ". Retrieved ", "2016-01-10", ".", "\u00a0", "\n", "^", " ", "\"LFPUG: Python in the enterprise + Pandas | Enthought Blog\"", ". ", "blog.enthought.com", ". Retrieved ", "2016-01-10", ".", "\u00a0", "\n", "^", " ", "\"Big Data Conference - Wes McKinney\"", ". ", "O'Reilly Media", ". Retrieved ", "10 January", " 2016", ".", "\u00a0", "\n", "\n", "\n", "External links", "[", "edit", "]", "\n", "\n", "Personal website", "\n", "Book discussion on YCombinator", "\n", "Ibis project blog", "\n", "\n\n\n", "\n", "\n", "\n", "\n"], "lastUpdated": " 14 January 2018, at 19:57."}, +{"title": "Wikipedia:General disclaimer", "text": ["\n", "\n", "\n", "\n", "\n", "\n", "General disclaimer", "\n", "Content disclaimer", "\n", "Legal disclaimer", "\n", "Medical disclaimer", "\n", "Risk disclaimer", "\n", "Survey disclaimer", "\n", "\n", "\n", "\n", "\n", "\n", "WIKIPEDIA MAKES NO GUARANTEE OF VALIDITY", "\n", "Wikipedia is an online open-content collaborative encyclopedia; that is, a voluntary association of individuals and groups working to develop a common resource of human knowledge. The structure of the project allows anyone with an Internet connection to alter its content. Please be advised that nothing found here has necessarily been reviewed by people with the expertise required to provide you with complete, accurate or reliable information.", "\n", "That is not to say that you will not find valuable and accurate information in Wikipedia; much of the time you will. However, ", "Wikipedia cannot guarantee the validity of the information found here.", " The content of any given article may recently have been changed, vandalized or altered by someone whose opinion does not correspond with the state of knowledge in the relevant fields. Note that most other encyclopedias and reference works ", "also have disclaimers", ".", "\n", "No formal peer review", "\n", "Our active community of editors uses tools such as the ", "Special:Recentchanges", " and ", "Special:Newpages", " feeds to monitor new and changing content. However, Wikipedia is not uniformly peer reviewed; while readers may correct errors or engage in casual ", "peer review", ", they have no legal duty to do so and thus all information read here is without any implied warranty of fitness for any purpose or use whatsoever. Even articles that have been vetted by informal peer review or ", "featured article", " processes may later have been edited inappropriately, just before you view them.", "\n", "None of the contributors, sponsors, administrators or anyone else connected with Wikipedia in any way whatsoever can be responsible for the appearance of any inaccurate or libelous information or for your use of the information contained in or linked from these web pages.", "\n", "No contract; limited license", "\n", "Please make sure that you understand that the information provided here is being provided freely, and that no kind of agreement or contract is created between you and the owners or users of this site, the owners of the servers upon which it is housed, the individual Wikipedia contributors, any project administrators, sysops or anyone else who is in ", "any way connected", " with this project or sister projects subject to your claims against them directly. You are being granted a limited license to copy anything from this site; it does not create or imply any contractual or extracontractual liability on the part of Wikipedia or any of its agents, members, organizers or other users.", "\n", "There is ", "no agreement or understanding between you and Wikipedia", " regarding your use or modification of this information beyond the ", "Creative Commons Attribution-Sharealike 3.0 Unported License", " (CC-BY-SA) and the ", "GNU Free Documentation License", " (GFDL); neither is anyone at Wikipedia responsible should someone change, edit, modify or remove any information that you may post on Wikipedia or any of its associated projects.", "\n", "Trademarks", "\n", "Any of the trademarks, service marks, collective marks, design rights or similar rights that are mentioned, used or cited in the articles of the Wikipedia encyclopedia are the property of their respective owners. Their use here does not imply that you may use them for any purpose other than for the same or a similar informational use as contemplated by the original authors of these Wikipedia articles under the CC-BY-SA and GFDL licensing schemes. Unless otherwise stated Wikipedia and Wikimedia sites are neither endorsed by nor affiliated with any of the holders of any such rights and as such Wikipedia cannot grant any rights to use any otherwise protected materials. Your use of any such or similar incorporeal property is at your own risk.", "\n", "Personality rights", "\n", "Wikipedia contains material which may portray an identifiable person who is alive or deceased recently. The use of images of living or recently deceased individuals is, in some jurisdictions, restricted by laws pertaining to ", "personality rights", ", independent from their copyright status. Before using these types of content, please ensure that you have the right to use it under the laws which apply in the circumstances of your intended use. ", "You are solely responsible for ensuring that you do not infringe someone else's personality rights.", "\n", "Jurisdiction and legality of content", "\n", "Publication of information found in Wikipedia may be in violation of the laws of the country or jurisdiction from where you are viewing this information. The Wikipedia database is stored on servers in the United States of America, and is maintained in reference to the protections afforded under local and federal law. Laws in your country or jurisdiction may not protect or allow the same kinds of speech or distribution. Wikipedia does not encourage the violation of any laws, and cannot be responsible for any violations of such laws, should you link to this domain or use, reproduce or republish the information contained herein.", "\n", "Not professional advice", "\n", "If you need specific advice (for example, medical, legal, financial or risk management), please seek a professional who is licensed or knowledgeable in that area.", "\n\n\n", "\n", "\n", "\n", "\n"], "lastUpdated": " 17 December 2015, at 12:48."}, +{"title": "Wikipedia:Text of Creative Commons Attribution-ShareAlike 3.0 Unported License", "text": ["\n", "\n", "Shortcut", "\n", "\n", "WP:CC BY-SA", "\n", "\n", "\n", "\n", "\n", "\n", "Wikipedia copyright", "\n", "\n", "\n", "Policy", "\n", "\n", "\n", "\n", "\n", "Copyright policy", "\n", "Copyright violation policy", "\n", "Reusing Wikipedia content", "\n", "Text of CC BY-SA 3.0 Unported License", "\n", "Text of CC BY-SA 4.0 International License", "\n", "Text of the GFDL", "\n", "\n", "\n", "\n", "\n", "Guidelines", "\n", "\n", "\n", "\n", "\n", "Public domain content", "\n", "Non-free content", "\n", "Non-U.S. copyrights", "\n", "Copying within Wikipedia", "\n", "Copyright information index", "\n", "\n", "\n", "\n", "\n", "Processes", "\n", "\n", "\n", "\n", "\n", "Copyright problems", "\n", "Files for discussion", "\n", "Contributor copyright investigations", "\n", "\n", "\n", "\n", "\n", "Resources", "\n", "\n", "\n", "\n", "\n", "Frequently asked questions", "\n", "General help", "\n", "Copyright assistance", "\n", "Media copyright questions", "\n", "Requesting copyright permission", "\n", "File copyright tags", "\n", "Donating copyrighted material", "\n", "Declaration of consent", "\n", "Guidance for text-related copyright problems", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "v", "\n", "t", "\n", "e", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "Creative Commons Deed", "\nThis is a human-readable summary of the full license below.", "\n", "You are free:", "\n", "\n", "to Share", "\u2014to copy, distribute and transmit the work, and", "\n", "to Remix", "\u2014to ", "adapt", " the work", "\n", "\n", "for any purpose, even commercially.", "\n", "Under the following conditions:", "\n", "\n", "Attribution", "\u2014You must ", "attribute", " the work in the manner specified by the author or ", "licensor", " (but not in any way that suggests that they endorse you or your use of the work.)", "\n", "Share Alike", "\u2014If you alter, transform, or build upon this work, you may distribute the resulting work only under the same, similar or a compatible license.", "\n", "\n", "With the understanding that:", "\n", "\n", "Waiver", "\u2014Any of the above conditions can be ", "waived", " if you get permission from the copyright holder.", "\n", "Other Rights", "\u2014In no way are any of the following rights affected by the license:\n", "\n", "your ", "fair dealing", " or ", "fair use", " rights;", "\n", "the author's ", "moral rights", "; and", "\n", "rights other persons may have either in the work itself or in how the work is used, such as ", "publicity", " or ", "privacy", " rights.", "\n", "\n", "\n", "Notice", "\u2014For any reuse or distribution, you must make clear to others the license terms of this work. The best way to do that is with a link to ", "https://creativecommons.org/licenses/by-sa/3.0/", "\n", "\n", "\n", "\n", "\n", "License", "\n", "\n", "\n", "\n", "CREATIVE COMMONS CORPORATION IS NOT A LAW FIRM AND DOES NOT PROVIDE LEGAL SERVICES. DISTRIBUTION OF THIS LICENSE DOES NOT CREATE AN ATTORNEY-CLIENT RELATIONSHIP. CREATIVE COMMONS PROVIDES THIS INFORMATION ON AN \"AS-IS\" BASIS. CREATIVE COMMONS MAKES NO WARRANTIES REGARDING THE INFORMATION PROVIDED, AND DISCLAIMS LIABILITY FOR DAMAGES RESULTING FROM ITS USE.", "\n", "\n", "\n", "THE WORK (AS DEFINED BELOW) IS PROVIDED UNDER THE TERMS OF THIS CREATIVE COMMONS PUBLIC LICENSE (\"CCPL\" OR \"LICENSE\"). THE WORK IS PROTECTED BY COPYRIGHT AND/OR OTHER APPLICABLE LAW. ANY USE OF THE WORK OTHER THAN AS AUTHORIZED UNDER THIS LICENSE OR COPYRIGHT LAW IS PROHIBITED.", "\n", "BY EXERCISING ANY RIGHTS TO THE WORK PROVIDED HERE, YOU ACCEPT AND AGREE TO BE BOUND BY THE TERMS OF THIS LICENSE. TO THE EXTENT THIS LICENSE MAY BE CONSIDERED TO BE A CONTRACT, THE LICENSOR GRANTS YOU THE RIGHTS CONTAINED HERE IN CONSIDERATION OF YOUR ACCEPTANCE OF SUCH TERMS AND CONDITIONS.", "\n", "1. Definitions", "\n", "\n", "\"", "Adaptation", "\" means a work based upon the Work, or upon the Work and other pre-existing works, such as a translation, adaptation, derivative work, arrangement of music or other alterations of a literary or artistic work, or phonogram or performance and includes cinematographic adaptations or any other form in which the Work may be recast, transformed, or adapted including in any form recognizably derived from the original, except that a work that constitutes a Collection will not be considered an Adaptation for the purpose of this License. For the avoidance of doubt, where the Work is a musical work, performance or phonogram, the synchronization of the Work in timed-relation with a moving image (\"synching\") will be considered an Adaptation for the purpose of this License.", "\n", "\"", "Collection", "\" means a collection of literary or artistic works, such as encyclopedias and anthologies, or performances, phonograms or broadcasts, or other works or subject matter other than works listed in Section 1(f) below, which, by reason of the selection and arrangement of their contents, constitute intellectual creations, in which the Work is included in its entirety in unmodified form along with one or more other contributions, each constituting separate and independent works in themselves, which together are assembled into a collective whole. A work that constitutes a Collection will not be considered an Adaptation (as defined below) for the purposes of this License.", "\n", "\"", "Creative Commons Compatible License", "\" means a license that is listed at ", "http://creativecommons.org/compatiblelicenses", " that has been approved by Creative Commons as being essentially equivalent to this License, including, at a minimum, because that license: (i) contains terms that have the same purpose, meaning and effect as the License Elements of this License; and, (ii) explicitly permits the relicensing of adaptations of works made available under that license under this License or a Creative Commons jurisdiction license with the same License Elements as this License.", "\n", "\"", "Distribute", "\" means to make available to the public the original and copies of the Work or Adaptation, as appropriate, through sale or other transfer of ownership.", "\n", "\"", "License Elements", "\" means the following high-level license attributes as selected by Licensor and indicated in the title of this License: Attribution, ShareAlike.", "\n", "\"", "Licensor", "\" means the individual, individuals, entity or entities that offer(s) the Work under the terms of this License.", "\n", "\"", "Original Author", "\" means, in the case of a literary or artistic work, the individual, individuals, entity or entities who created the Work or if no individual or entity can be identified, the publisher; and in addition (i) in the case of a performance the actors, singers, musicians, dancers, and other persons who act, sing, deliver, declaim, play in, interpret or otherwise perform literary or artistic works or expressions of folklore; (ii) in the case of a phonogram the producer being the person or legal entity who first fixes the sounds of a performance or other sounds; and, (iii) in the case of broadcasts, the organization that transmits the broadcast.", "\n", "\"", "Work", "\" means the literary and/or artistic work offered under the terms of this License including without limitation any production in the literary, scientific and artistic domain, whatever may be the mode or form of its expression including digital form, such as a book, pamphlet and other writing; a lecture, address, sermon or other work of the same nature; a dramatic or dramatico-musical work; a choreographic work or entertainment in dumb show; a musical composition with or without words; a cinematographic work to which are assimilated works expressed by a process analogous to cinematography; a work of drawing, painting, architecture, sculpture, engraving or lithography; a photographic work to which are assimilated works expressed by a process analogous to photography; a work of applied art; an illustration, map, plan, sketch or three-dimensional work relative to geography, topography, architecture or science; a performance; a broadcast; a phonogram; a compilation of data to the extent it is protected as a copyrightable work; or a work performed by a variety or circus performer to the extent it is not otherwise considered a literary or artistic work.", "\n", "\"", "You", "\" means an individual or entity exercising rights under this License who has not previously violated the terms of this License with respect to the Work, or who has received express permission from the Licensor to exercise rights under this License despite a previous violation.", "\n", "\"", "Publicly Perform", "\" means to perform public recitations of the Work and to communicate to the public those public recitations, by any means or process, including by wire or wireless means or public digital performances; to make available to the public Works in such a way that members of the public may access these Works from a place and at a place individually chosen by them; to perform the Work to the public by any means or process and the communication to the public of the performances of the Work, including by public digital performance; to broadcast and rebroadcast the Work by any means including signs, sounds or images.", "\n", "\"", "Reproduce", "\" means to make copies of the Work by any means including without limitation by sound or visual recordings and the right of fixation and reproducing fixations of the Work, including storage of a protected performance or phonogram in digital form or other electronic medium.", "\n", "\n", "2. Fair Dealing Rights", "\n", "Nothing in this License is intended to reduce, limit, or restrict any uses free from copyright or rights arising from limitations or exceptions that are provided for in connection with the copyright protection under copyright law or other applicable laws.", "\n", "3. License Grant", "\n", "Subject to the terms and conditions of this License, Licensor hereby grants You a worldwide, royalty-free, non-exclusive, perpetual (for the duration of the applicable copyright) license to exercise the rights in the Work as stated below:", "\n", "\n", "to Reproduce the Work, to incorporate the Work into one or more Collections, and to Reproduce the Work as incorporated in the Collections;", "\n", "to create and Reproduce Adaptations provided that any such Adaptation, including any translation in any medium, takes reasonable steps to clearly label, demarcate or otherwise identify that changes were made to the original Work. For example, a translation could be marked \"The original work was translated from English to Spanish,\" or a modification could indicate \"The original work has been modified.\";", "\n", "to Distribute and Publicly Perform the Work including as incorporated in Collections; and,", "\n", "to Distribute and Publicly Perform Adaptations.", "\n", "For the avoidance of doubt:\n", "\n", "Non-waivable Compulsory License Schemes.", " In those jurisdictions in which the right to collect royalties through any statutory or compulsory licensing scheme cannot be waived, the Licensor reserves the exclusive right to collect such royalties for any exercise by You of the rights granted under this License;", "\n", "Waivable Compulsory License Schemes.", " In those jurisdictions in which the right to collect royalties through any statutory or compulsory licensing scheme can be waived, the Licensor waives the exclusive right to collect such royalties for any exercise by You of the rights granted under this License; and,", "\n", "Voluntary License Schemes.", " The Licensor waives the right to collect royalties, whether individually or, in the event that the Licensor is a member of a collecting society that administers voluntary licensing schemes, via that society, from any exercise by You of the rights granted under this License.", "\n", "\n", "\n", "\n", "The above rights may be exercised in all media and formats whether now known or hereafter devised. The above rights include the right to make such modifications as are technically necessary to exercise the rights in other media and formats. Subject to Section 8(f), all rights not expressly granted by Licensor are hereby reserved.", "\n", "4. Restrictions", "\n", "The license granted in Section 3 above is expressly made subject to and limited by the following restrictions:", "\n", "\n", "You may Distribute or Publicly Perform the Work only under the terms of this License. You must include a copy of, or the Uniform Resource Identifier (URI) for, this License with every copy of the Work You Distribute or Publicly Perform. You may not offer or impose any terms on the Work that restrict the terms of this License or the ability of the recipient of the Work to exercise the rights granted to that recipient under the terms of the License. You may not sublicense the Work. You must keep intact all notices that refer to this License and to the disclaimer of warranties with every copy of the Work You Distribute or Publicly Perform. When You Distribute or Publicly Perform the Work, You may not impose any effective technological measures on the Work that restrict the ability of a recipient of the Work from You to exercise the rights granted to that recipient under the terms of the License. This Section 4(a) applies to the Work as incorporated in a Collection, but this does not require the Collection apart from the Work itself to be made subject to the terms of this License. If You create a Collection, upon notice from any Licensor You must, to the extent practicable, remove from the Collection any credit as required by Section 4(c), as requested. If You create an Adaptation, upon notice from any Licensor You must, to the extent practicable, remove from the Adaptation any credit as required by Section 4(c), as requested.", "\n", "You may Distribute or Publicly Perform an Adaptation only under the terms of: (i) this License; (ii) a later version of this License with the same License Elements as this License; (iii) a Creative Commons jurisdiction license (either this or a later license version) that contains the same License Elements as this License (e.g., Attribution-ShareAlike 3.0 US)); (iv) a Creative Commons Compatible License. If you license the Adaptation under one of the licenses mentioned in (iv), you must comply with the terms of that license. If you license the Adaptation under the terms of any of the licenses mentioned in (i), (ii) or (iii) (the \"Applicable License\"), you must comply with the terms of the Applicable License generally and the following provisions: (I) You must include a copy of, or the URI for, the Applicable License with every copy of each Adaptation You Distribute or Publicly Perform; (II) You may not offer or impose any terms on the Adaptation that restrict the terms of the Applicable License or the ability of the recipient of the Adaptation to exercise the rights granted to that recipient under the terms of the Applicable License; (III) You must keep intact all notices that refer to the Applicable License and to the disclaimer of warranties with every copy of the Work as included in the Adaptation You Distribute or Publicly Perform; (IV) when You Distribute or Publicly Perform the Adaptation, You may not impose any effective technological measures on the Adaptation that restrict the ability of a recipient of the Adaptation from You to exercise the rights granted to that recipient under the terms of the Applicable License. This Section 4(b) applies to the Adaptation as incorporated in a Collection, but this does not require the Collection apart from the Adaptation itself to be made subject to the terms of the Applicable License.", "\n", "If You Distribute, or Publicly Perform the Work or any Adaptations or Collections, You must, unless a request has been made pursuant to Section 4(a), keep intact all copyright notices for the Work and provide, reasonable to the medium or means You are utilizing: (i) the name of the Original Author (or pseudonym, if applicable) if supplied, and/or if the Original Author and/or Licensor designate another party or parties (e.g., a sponsor institute, publishing entity, journal) for attribution (\"Attribution Parties\") in Licensor's copyright notice, terms of service or by other reasonable means, the name of such party or parties; (ii) the title of the Work if supplied; (iii) to the extent reasonably practicable, the URI, if any, that Licensor specifies to be associated with the Work, unless such URI does not refer to the copyright notice or licensing information for the Work; and (iv) , consistent with Section 3(b), in the case of an Adaptation, a credit identifying the use of the Work in the Adaptation (e.g., \"French translation of the Work by Original Author,\" or \"Screenplay based on original Work by Original Author\"). The credit required by this Section 4(c) may be implemented in any reasonable manner; provided, however, that in the case of a Adaptation or Collection, at a minimum such credit will appear, if a credit for all contributing authors of the Adaptation or Collection appears, then as part of these credits and in a manner at least as prominent as the credits for the other contributing authors. For the avoidance of doubt, You may only use the credit required by this Section for the purpose of attribution in the manner set out above and, by exercising Your rights under this License, You may not implicitly or explicitly assert or imply any connection with, sponsorship or endorsement by the Original Author, Licensor and/or Attribution Parties, as appropriate, of You or Your use of the Work, without the separate, express prior written permission of the Original Author, Licensor and/or Attribution Parties.", "\n", "Except as otherwise agreed in writing by the Licensor or as may be otherwise permitted by applicable law, if You Reproduce, Distribute or Publicly Perform the Work either by itself or as part of any Adaptations or Collections, You must not distort, mutilate, modify or take other derogatory action in relation to the Work which would be prejudicial to the Original Author's honor or reputation. Licensor agrees that in those jurisdictions (e.g. Japan), in which any exercise of the right granted in Section 3(b) of this License (the right to make Adaptations) would be deemed to be a distortion, mutilation, modification or other derogatory action prejudicial to the Original Author's honor and reputation, the Licensor will waive or not assert, as appropriate, this Section, to the fullest extent permitted by the applicable national law, to enable You to reasonably exercise Your right under Section 3(b) of this License (right to make Adaptations) but not otherwise.", "\n", "\n", "5. Representations, Warranties and Disclaimer", "\n", "UNLESS OTHERWISE MUTUALLY AGREED TO BY THE PARTIES IN WRITING, LICENSOR OFFERS THE WORK AS-IS AND MAKES NO REPRESENTATIONS OR WARRANTIES OF ANY KIND CONCERNING THE WORK, EXPRESS, IMPLIED, STATUTORY OR OTHERWISE, INCLUDING, WITHOUT LIMITATION, WARRANTIES OF TITLE, MERCHANTIBILITY, FITNESS FOR A PARTICULAR PURPOSE, NONINFRINGEMENT, OR THE ABSENCE OF LATENT OR OTHER DEFECTS, ACCURACY, OR THE PRESENCE OF ABSENCE OF ERRORS, WHETHER OR NOT DISCOVERABLE. SOME JURISDICTIONS DO NOT ALLOW THE EXCLUSION OF IMPLIED WARRANTIES, SO SUCH EXCLUSION MAY NOT APPLY TO YOU.", "\n", "6. Limitation on Liability", "\n", "EXCEPT TO THE EXTENT REQUIRED BY APPLICABLE LAW, IN NO EVENT WILL LICENSOR BE LIABLE TO YOU ON ANY LEGAL THEORY FOR ANY SPECIAL, INCIDENTAL, CONSEQUENTIAL, PUNITIVE OR EXEMPLARY DAMAGES ARISING OUT OF THIS LICENSE OR THE USE OF THE WORK, EVEN IF LICENSOR HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.", "\n", "7. Termination", "\n", "\n", "This License and the rights granted hereunder will terminate automatically upon any breach by You of the terms of this License. Individuals or entities who have received Adaptations or Collections from You under this License, however, will not have their licenses terminated provided such individuals or entities remain in full compliance with those licenses. Sections 1, 2, 5, 6, 7, and 8 will survive any termination of this License.", "\n", "Subject to the above terms and conditions, the license granted here is perpetual (for the duration of the applicable copyright in the Work). Notwithstanding the above, Licensor reserves the right to release the Work under different license terms or to stop distributing the Work at any time; provided, however that any such election will not serve to withdraw this License (or any other license that has been, or is required to be, granted under the terms of this License), and this License will continue in full force and effect unless terminated as stated above.", "\n", "\n", "8. Miscellaneous", "\n", "\n", "Each time You Distribute or Publicly Perform the Work or a Collection, the Licensor offers to the recipient a license to the Work on the same terms and conditions as the license granted to You under this License.", "\n", "Each time You Distribute or Publicly Perform an Adaptation, Licensor offers to the recipient a license to the original Work on the same terms and conditions as the license granted to You under this License.", "\n", "If any provision of this License is invalid or unenforceable under applicable law, it shall not affect the validity or enforceability of the remainder of the terms of this License, and without further action by the parties to this agreement, such provision shall be reformed to the minimum extent necessary to make such provision valid and enforceable.", "\n", "No term or provision of this License shall be deemed waived and no breach consented to unless such waiver or consent shall be in writing and signed by the party to be charged with such waiver or consent.", "\n", "This License constitutes the entire agreement between the parties with respect to the Work licensed here. There are no understandings, agreements or representations with respect to the Work not specified here. Licensor shall not be bound by any additional provisions that may appear in any communication from You. This License may not be modified without the mutual written agreement of the Licensor and You.", "\n", "The rights granted under, and the subject matter referenced, in this License were drafted utilizing the terminology of the Berne Convention for the Protection of Literary and Artistic Works (as amended on September 28, 1979), the Rome Convention of 1961, the WIPO Copyright Treaty of 1996, the WIPO Performances and Phonograms Treaty of 1996 and the Universal Copyright Convention (as revised on July 24, 1971). These rights and subject matter take effect in the relevant jurisdiction in which the License terms are sought to be enforced according to the corresponding provisions of the implementation of those treaty provisions in the applicable national law. If the standard suite of rights granted under applicable copyright law includes additional rights not granted under this License, such additional rights are deemed to be included in the License; this License is not intended to restrict the license of any rights under applicable law.", "\n", "\n", "\n", "\n", "\n", "\n", "Creative Commons Notice", "\n", "Creative Commons is not a party to this License, and makes no warranty whatsoever in connection with the Work. Creative Commons will not be liable to You or any party on any legal theory for any damages whatsoever, including without limitation any general, special, incidental or consequential damages arising in connection to this license. Notwithstanding the foregoing two (2) sentences, if Creative Commons has expressly identified itself as the Licensor hereunder, it shall have all rights and obligations of Licensor.", "\n", "Except for the limited purpose of indicating to the public that the Work is licensed under the CCPL, Creative Commons does not authorize the use by either party of the trademark \"Creative Commons\" or any related trademark or logo of Creative Commons without the prior written consent of Creative Commons. Any permitted use will be in compliance with Creative Commons' then-current trademark usage guidelines, as may be published on its website or otherwise made available upon request from time to time. For the avoidance of doubt, this trademark restriction does not form part of the License.", "\nCreative Commons may be contacted at ", "http://creativecommons.org/", ".", "\n", "\n", "\n\n\n", "\n", "\n", "\n", "\n"], "lastUpdated": " 11 March 2017, at 18:16."}, +{"title": "Visual Basic .NET", "text": ["\n", "Visual Basic .NET", "\n", "\n", "\n", "\n", "\n", "Paradigm", "\n", "Structured", ", ", "imperative", ", ", "object-oriented", ", ", "declarative", ", ", "generic", ", ", "reflective", " and ", "event-driven", "\n", "\n", "\n", "Designed\u00a0by", "\n", "Microsoft", "\n", "\n", "\n", "Developer", "\n", "Microsoft", "\n", "\n", "\n", "First\u00a0appeared", "\n", "2001", "; 17\u00a0years ago", "\u00a0(", "2001", ")", "\n", "\n", "\n", "\n", "\n", "\n", "Stable release", "\n", "\n", "2017 (15.0) / 7\u00a0March 2017", "; 10 months ago", "\u00a0(", "2017-03-07", ")", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "Typing discipline", "\n", "Static", ", ", "both strong and weak", ",", "[1]", " ", "both safe and unsafe", ",", "[1]", " ", "nominative", "\n", "\n", "\n", "Platform", "\n", ".NET Framework", ", ", "Mono", "\n", "\n", "\n", "OS", "\n", "Chiefly ", "Windows", "\nAlso on ", "Android", ", ", "BSD", ", ", "iOS", ", ", "Linux", ", ", "Mac OS X", ", ", "Solaris", " and ", "Unix", "\n", "\n", "\n", "Filename extensions", "\n", ".vb", "\n", "\n", "\n", "Website", "\n", "docs", ".microsoft", ".com", "/dotnet", "/visual-basic", "/", "\n", "\n", "\n", "Major ", "implementations", "\n", "\n", "\n", "Microsoft Visual Studio", ", ", "Microsoft Visual Studio Express", ", ", "SharpDevelop", ", ", "MonoDevelop", ", ", ".NET Framework SDK", " and ", "Mono", "\n", "\n", "\n", "Dialects", "\n", "\n", "\n", "Microsoft Visual Basic", "\n", "\n", "\n", "Influenced", "\n", "\n", "\n", "Small Basic", "\n", "\n", "\n", "Visual Basic .NET", " (", "VB.NET", ") is a ", "multi-paradigm", ", ", "object-oriented", " ", "programming language", ", implemented on the ", ".NET Framework", ". Microsoft launched VB.NET in 2002 as the successor to its original ", "Visual Basic", " language. Although the \".NET\" portion of the name was dropped in 2005, this article uses \"Visual Basic [.NET]\" to refer to all Visual Basic languages releases since 2002, in order to distinguish between them and the ", "classic Visual Basic", ". Along with ", "Visual C#", ", it is one of the two main languages targeting the .NET framework.", "\n", "Microsoft's ", "integrated development environment", " (IDE) for developing in Visual Basic .NET language is ", "Visual Studio", ". Most Visual Studio editions are ", "commercial", "; the only exceptions are ", "Visual Studio Express", " and ", "Visual Studio Community", ", which are ", "freeware", ". In addition, the ", ".NET Framework SDK", " includes a freeware ", "command-line", " ", "compiler", " called vbc.exe. ", "Mono", " also includes a command-line VB.NET compiler.", "\n", "\n", "\n", "\n", "Contents", "\n", "\n", "\n", "1", " ", "Syntax", "\n", "\n", "1.1", " ", "Simple example", "\n", "1.2", " ", "Complex example", "\n", "1.3", " ", "Comparison with the classic Visual Basic", "\n", "\n", "1.3.1", " ", "Comparative examples", "\n", "\n", "\n", "1.4", " ", "Comparison with C#", "\n", "\n", "\n", "2", " ", "Examples", "\n", "\n", "2.1", " ", "Hello World!", "\n", "\n", "2.1.1", " ", "Windows Form Application", "\n", "2.1.2", " ", "Console Application", "\n", "\n", "\n", "2.2", " ", "Speaking", "\n", "\n", "2.2.1", " ", "Windows Form Application", "\n", "2.2.2", " ", "Console Application", "\n", "\n", "\n", "\n", "\n", "3", " ", "Version history", "\n", "\n", "3.1", " ", "2002 (VB 7.0)", "\n", "3.2", " ", "2003 (VB 7.1)", "\n", "3.3", " ", "2005 (VB 8.0)", "\n", "3.4", " ", "2008 (VB 9.0)", "\n", "3.5", " ", "2010 (VB 10.0)", "\n", "3.6", " ", "2012 (VB 11.0)", "\n", "3.7", " ", "2015 (VB 14.0)", "\n", "3.8", " ", "2017 (VB 15.0)", "\n", "\n", "\n", "4", " ", "Cross-platform and open-source development", "\n", "5", " ", "See also", "\n", "6", " ", "References", "\n", "7", " ", "Further reading", "\n", "8", " ", "External links", "\n", "\n", "\n", "\n", "Syntax", "[", "edit", "]", "\n", "\n", "\n", "\n", "\n", "This section needs expansion", ". ", "You can help by ", "adding to it", ".", " ", "(April 2014)", "\n", "\n", "\n", "\n", "VB.NET uses ", "statements", " to specify actions. The most common statement is an expression statement, consisting of an ", "expression", " to be evaluated, on a single line. As part of that evaluation, ", "functions or subroutines", " may be ", "called", " and ", "variables", " may be ", "assigned", " new values. To modify the normal sequential execution of statements, VB.NET provides several control-flow statements identified by reserved keywords. ", "Structured programming", " is supported by several constructs including two conditional execution constructs (", "If", " \u2026 ", "Then", " \u2026 ", "Else", " \u2026 ", "End If", " and ", "Select Case", " ... ", "Case", " ... ", "End Select", " ) and three iterative execution (loop) constructs (", "Do", " \u2026 ", "Loop", ", ", "For", " \u2026 ", "To", ", and ", "For Each", ") . The ", "For", " \u2026 ", "To", " statement has separate initialisation and testing sections, both of which must be present. (See examples below.) The ", "For Each", " statement steps through each value in a list.", "\n", "In addition, in Visual Basic .NET:", "\n", "\n", "There is no unified way of defining blocks of statements. Instead, certain keywords, such as \"If \u2026 Then\" or \"Sub\" are interpreted as starters of sub-blocks of code and have matching termination keywords such as \"End If\" or \"End Sub\".", "\n", "Statements are terminated either with a ", "colon", " (\":\") or with the ", "end of line", ". Multiple line statements in Visual Basic .NET are enabled with \" _\" at the end of each such line. The need for the underscore continuation character was largely removed in version 10 and later versions.", "[2]", "\n", "The ", "equals sign", " (\"=\") is used in both assigning values to variables and in comparison.", "\n", "Round brackets", " (parentheses) are used with ", "arrays", ", both to declare them and to get a value at a given index in one of them. Visual Basic .NET uses round brackets to define the parameters of subroutines or functions.", "\n", "A ", "single quotation mark", " ('), placed at the beginning of a line or after any number of ", "space", " or ", "tab", " characters at the beginning of a line, or after other code on a line, indicates that the (remainder of the) line is a ", "comment", ".", "\n", "\n", "Simple example", "[", "edit", "]", "\n", "The following is a very simple VB.NET program, a version of the classic \"", "Hello world", "\" example created as a console application:", "\n", "\n", "\n", "Module", " ", "Module1", "\n\n ", "Sub", " ", "Main", "()", "\n ", "' The classic \"Hello World\" demonstration program", "\n ", "Console", ".", "WriteLine", "(", "\"Hello World!\"", ")", "\n ", "End", " ", "Sub", "\n\n", "End", " ", "Module", "\n", "\n", "It prints \"", "Hello world!", "\" on a ", "command-line window", ". Each line serves a specific purpose, as follows:", "\n", "\n", "\n", "Module", " ", "Module1", "\n", "\n", "This is a module definition. Modules are a division of code, which can contain any kind of object, like constants or variables, functions or methods, or classes, but can't be instantiated as objects like classes and cannot inherit from other modules. Modules serve as containers of code that can be referenced from other parts of a program.", "[3]", "\nIt is common practice for a module and the code file, which contains it, to have the same name; however, this is not required, as a single code file may contain more than one module and/or class definition.", "\n", "\n", "\n", "Sub", " ", "Main", "()", "\n", "\n", "It defines a subroutine called \"Main\". \"Main\" is the entry point, where the program begins execution.", "[4]", "\n", "\n", "\n", "Console", ".", "WriteLine", "(", "\"Hello world!\"", ")", "\n", "\n", "This line performs the actual task of writing the output. ", "Console", " is a system object, representing a command-line interface (also known as \"console\") and granting programmatic access to the operating system's ", "standard streams", ". The program calls the ", "Console", " method ", "WriteLine,", " which causes the string passed to it to be displayed on the console.", "\n", "Instead of Console.WriteLine, one could use MsgBox, which prints the message in a dialog box instead of a command-line window.", "[5]", "\n", "Complex example", "[", "edit", "]", "\n", "This piece of code outputs ", "Floyd's Triangle", " to the console:", "\n", "\n", "\n", "Imports", " ", "System.Console", "\n\n", "Module", " ", "Program", "\n\n ", "Sub", " ", "Main", "()", "\n ", "Dim", " ", "rows", " ", "As", " ", "Integer", "\n\n ", "' Input validation.", "\n ", "Do", " ", "Until", " ", "Integer", ".", "TryParse", "(", "ReadLine", "(", "\"Enter a value for how many rows to be displayed: \"", "),", " ", "rows", ")", " ", "AndAlso", " ", "rows", " ", ">=", " ", "1", "\n ", "WriteLine", "(", "\"Allowed range is 1 and {0}\"", ",", " ", "Integer", ".", "MaxValue", ")", "\n ", "Loop", "\n \n ", "' Output of Floyd's Triangle", "\n ", "Dim", " ", "current", " ", "=", " ", "1", "\n\n ", "For", " ", "row", " ", "=", " ", "1", " ", "To", " ", "rows", "\n ", "For", " ", "column", " ", "=", " ", "1", " ", "To", " ", "row", "\n ", "Write", "(", "\"{0,-2} \"", ",", " ", "current", ")", "\n ", "current", " ", "+=", " ", "1", "\n ", "Next", "\n\n ", "WriteLine", "()", "\n ", "Next", "\n ", "End", " ", "Sub", "\n\n ", "''' ", "\n ", "''' Shadows Console.ReadLine with a version which takes a prompt string.", "\n ", "''' ", "\n ", "Function", " ", "ReadLine", "(", "Optional", " ", "prompt", " ", "As", " ", "String", " ", "=", " ", "Nothing", ")", " ", "As", " ", "String", "\n ", "If", " ", "prompt", " ", "IsNot", " ", "Nothing", " ", "Then", "\n ", "Write", "(", "prompt", ")", "\n ", "End", " ", "If", "\n\n ", "Return", " ", "Console", ".", "ReadLine", "()", "\n ", "End", " ", "Function", "\n\n", "End", " ", "Module", "\n", "\n", "Comparison with the classic Visual Basic", "[", "edit", "]", "\n", "Main article: ", "Comparison of Visual Basic and Visual Basic .NET", "\n", "Whether Visual Basic .NET should be considered as just another version of Visual Basic or a completely different language is a topic of debate. There are new additions to support new features, such as ", "structured exception handling", " and short-circuited expressions. Also, two important data-type changes occurred with the move to VB.NET: compared to Visual Basic 6, the ", "Integer", " ", "data type", " has been doubled in length from 16 bits to 32 bits, and the ", "Long", " ", "data type", " has been doubled in length from 32 bits to 64 bits. This is true for all versions of VB.NET. A 16-bit integer in all versions of VB.NET is now known as a ", "Short", ". Similarly, the ", "Windows Forms", " editor is very similar in style and function to the Visual Basic form editor.", "\n", "The things that ", "have", " changed significantly are the semantics\u2014from those of an object-based programming language running on a ", "deterministic", ", ", "reference-counted", " engine based on ", "COM", " to a fully ", "object-oriented", " language backed by the ", ".NET Framework", ", which consists of a combination of the ", "Common Language Runtime", " (a ", "virtual machine", " using ", "generational garbage collection", " and a ", "just-in-time compilation", " engine) and a far larger ", "class library", ". The increased breadth of the latter is also a problem that VB developers have to deal with when coming to the language, although this is somewhat addressed by the ", "My", " feature in Visual Studio 2005.", "\n", "The changes have altered many underlying assumptions about the \"right\" thing to do with respect to performance and maintainability. Some functions and libraries no longer exist; others are available, but not as efficient as the \"native\" .NET alternatives. Even if they compile, most converted Visual Basic 6 applications will require some level of ", "refactoring", " to take full advantage of the new language. Documentation is available to cover changes in the syntax, debugging applications, deployment and terminology.", "[6]", "\n", "Comparative examples", "[", "edit", "]", "\n", "The following simple examples compare VB and VB.NET syntax. They assume that the developer has created a form, placed a button on it and has associated the subroutines demonstrated in each example with the click event handler of the mentioned button. Each example creates a \"Hello, World\" message box after the button on the form is clicked.", "\n", "Visual Basic 6:", "\n", "\n", "\n", "Private", " ", "Sub", " ", "Command1_Click", "()", "\n ", "MsgBox", " ", "\"Hello, World\"", "\n", "End", " ", "Sub", "\n", "\n", "VB.NET (MsgBox or MessageBox class can be used):", "\n", "\n", "\n", "Private", " ", "Sub", " ", "Button1_Click", "(", "sender", " ", "As", " ", "object", ",", " ", "e", " ", "As", " ", "EventArgs", ")", " ", "Handles", " ", "Button1", ".", "Click", "\n ", "MsgBox", "(", "\"Hello, World\"", ")", "\n", "End", " ", "Sub", "\n", "\n", "\n", "Both Visual Basic 6 and Visual Basic .NET automatically generate the ", "Sub", " and ", "End Sub", " statements when the corresponding button is double-clicked in design view. Visual Basic .NET will also generate the necessary ", "Class", " and ", "End Class", " statements. The developer need only add the statement to display the \"Hello, World\" message box.", "\n", "All procedure calls must be made with parentheses in VB.NET, whereas in Visual Basic 6 there were different conventions for functions (parentheses required) and subs (no parentheses allowed, unless called using the keyword ", "Call", ").", "\n", "The names ", "Command1", " and ", "Button1", " are not obligatory. However, these are default names for a command button in Visual Basic 6 and VB.NET respectively.", "\n", "In VB.NET, the ", "Handles", " keyword is used to make the sub ", "Button1_Click", " a handler for the ", "Click", " event of the object ", "Button1", ". In Visual Basic 6, event handler subs must have a specific name consisting of the object's name (\"Command1\"), an underscore (\"_\"), and the event's name (\"Click\", hence \"Command1_Click\").", "\n", "There is a function called ", "MessageBox.Show", " in the ", "Microsoft.VisualBasic", " namespace which can be used (instead of ", "MsgBox", ") similarly to the corresponding function in Visual Basic 6. There is a controversy", "[7]", " about which function to use as a best practice (not only restricted to showing message boxes but also regarding other features of the ", "Microsoft.VisualBasic", " namespace). Some programmers prefer to do things \"the .NET way\", since the Framework classes have more features and are less language-specific. Others argue that using language-specific features makes code more readable (for example, using ", "int", " (C#) or ", "Integer", " (VB.NET) instead of ", "System.Int32", ").", "\n", "In Visual Basic 2008, the inclusion of ", "ByVal sender as Object, ByVal e as EventArgs", " has become optional.", "\n", "\n", "The following example demonstrates a difference between Visual Basic 6 and VB.NET. Both examples close the ", "active window", ".", "\n", "Visual Basic 6:", "\n", "\n", "\n", "Sub", " ", "cmdClose_Click", "()", "\n ", "Unload", " ", "Me", "\n", "End", " ", "Sub", "\n", "\n", "VB.NET:", "\n", "\n", "\n", "Sub", " ", "btnClose_Click", "(", "sender", " ", "As", " ", "Object", ",", " ", "e", " ", "As", " ", "EventArgs", ")", " ", "Handles", " ", "btnClose", ".", "Click", "\n ", "Close", "()", "\n", "End", " ", "Sub", "\n", "\n", "The 'cmd' prefix is replaced by the 'btn' prefix, conforming to the new convention previously mentioned.", "[", "which?", "]", "\n", "Visual Basic 6 did not provide common operator shortcuts. The following are equivalent:", "\n", "Visual Basic 6:", "\n", "\n", "\n", "Sub", " ", "Timer1_Timer", "()", "\n ", "'Reduces Form Height by one pixel per tick", "\n ", "Me", ".", "Height", " ", "=", " ", "Me", ".", "Height", " ", "-", " ", "1", "\n", "End", " ", "Sub", "\n", "\n", "VB.NET:", "\n", "\n", "\n", "Sub", " ", "Timer1_Tick", "(", "sender", " ", "As", " ", "Object", ",", " ", "e", " ", "As", " ", "EventArgs", ")", " ", "Handles", " ", "Timer1", ".", "Tick", "\n ", "Me", ".", "Height", " ", "-=", " ", "1", "\n", "End", " ", "Sub", "\n", "\n", "Comparison with C#", "[", "edit", "]", "\n", "Main article: ", "Comparison of C Sharp and Visual Basic .NET", "\n", "C# and Visual Basic .NET are Microsoft's first languages made to program on the .NET Framework (later adding ", "F#", " and more and others have also added languages). Though C# and VB.NET are syntactically different, that is where the differences mostly end. Microsoft developed both of these languages to be part of the same .NET Framework development platform. They are both developed, managed, and supported by the same language development team at Microsoft.", "[8]", " They compile to the same intermediate language (IL), which runs against the same .NET Framework runtime libraries.", "[9]", " Although there are some differences in the programming constructs, their differences are primarily syntactic and, assuming one avoids the Visual Basic \"Compatibility\" libraries provided by Microsoft to aid conversion from Visual Basic 6, almost every command in VB has an equivalent command in C# and vice versa. Lastly, both languages reference the same Base Classes of the .NET Framework to extend their functionality. As a result, with few exceptions, a program written in either language can be run through a simple syntax converter to translate to the other. There are many open source and commercially available products for this task.", "\n", "Examples", "[", "edit", "]", "\n", "Hello World!", "[", "edit", "]", "\n", "Windows Form Application", "[", "edit", "]", "\n", "\n", "\n", "Public", " ", "Class", " ", "Form1", "\n\n ", "Private", " ", "Sub", " ", "Button1_Click", "(", "sender", " ", "As", " ", "Object", ",", " ", "e", " ", "As", " ", "EventArgs", ")", " ", "Handles", " ", "Button1", ".", "Click", "\n ", "MsgBox", "(", "\"Hello world\"", ",", " ", "MsgBoxStyle", ".", "Information", ",", " ", "\"Hello world!\"", ")", " ", "' Show a message that says \"Hello world!\".", "\n ", "End", " ", "Sub", "\n", "End", " ", "Class", "\n", "\n", "\n", "\n", "\n", "\nHello world! window", "\n", "\n", "\n", "Console Application", "[", "edit", "]", "\n", "\n", "\n", "Module", " ", "Module1", "\n\n ", "Sub", " ", "Main", "()", "\n ", "Console", ".", "WriteLine", "(", "\"Hello world!\"", ")", " ", "' Write in the console \"Hello world!\" and start a new line.", "\n ", "Console", ".", "ReadKey", "()", " ", "' The user must press any key before the application ends.", "\n ", "End", " ", "Sub", "\n", "End", " ", "Module", "\n", "\n", "Speaking", "[", "edit", "]", "\n", "Windows Form Application", "[", "edit", "]", "\n", "\n", "\n", "Public", " ", "Class", " ", "Form1", "\n \n ", "Private", " ", "Sub", " ", "Button1_Click", "(", "sender", " ", "As", " ", "Object", ",", " ", "e", " ", "As", " ", "EventArgs", ")", " ", "Handles", " ", "Button1", ".", "Click", "\n ", "CreateObject", "(", "\"Sapi.Spvoice\"", ").", "Speak", "(", "TextBox1", ".", "Text", ")", "\n ", "End", " ", "Sub", "\n", "End", " ", "Class", "\n", "\n", "Console Application", "[", "edit", "]", "\n", "\n", "\n", "Module", " ", "Module1", "\n ", "Private", " ", "Voice", " ", "=", " ", "CreateObject", "(", "\"Sapi.Spvoice\"", ")", "\n ", "Private", " ", "Text", " ", "As", " ", "String", "\n\n ", "Sub", " ", "Main", "()", "\n ", "Console", ".", "Write", "(", "\"Enter the text to speak: \"", ")", " ", "' Say \"Enter the text to speak: \"", "\n ", "Text", " ", "=", " ", "Console", ".", "ReadLine", "()", " ", "' The user must enter the text to speak.", "\n ", "Voice", ".", "Speak", "(", "Text", ")", " ", "' Speak the text the user has entered.", "\n ", "End", " ", "Sub", "\n", "End", " ", "Module", "\n", "\n", "Version history", "[", "edit", "]", "\n", "Succeeding ", "the classic Visual Basic", " version 6.0, the first version of Visual Basic .NET debuted in 2002. As of 2017", "[update]", ", eight versions of Visual Basic .NET are released.", "\n", "2002 (VB 7.0)", "[", "edit", "]", "\n", "The first version, Visual Basic .NET, relies on ", ".NET Framework 1.0", ". The most important feature is ", "managed code", ", which contrasts with the classic Visual Basic.", "\n", "2003 (VB 7.1)", "[", "edit", "]", "\n", "Visual Basic .NET 2003 was released with ", ".NET Framework 1.1", ". New features included support for the ", ".NET Compact Framework", " and a better VB upgrade ", "wizard", ". Improvements were also made to the performance and reliability of .NET IDE (particularly the ", "background compiler", ") and runtime. In addition, Visual Basic .NET 2003 was available in the Visual Studio.NET Academic Edition, distributed to a certain number of scholars", "[", "weasel\u00a0words", "]", " from each country without cost.", "\n", "2005 (VB 8.0)", "[", "edit", "]", "\n", "After Visual Basic .NET 2003, Microsoft dropped \".NET\" from the name of the product, calling the next version Visual Basic 2005.", "\n", "For this release, Microsoft added many features intended to reinforce Visual Basic .NET's focus as a ", "rapid application development", " platform and further differentiate it from ", "C#", "., including:", "\n", "\n", "Edit and Continue", " feature", "[", "further explanation needed", "]", "\n", "Design-time expression evaluation", "[", "further explanation needed", "]", "\n", "A pseudo-", "namespace", " called \"My\", which provides:", "[10]", "[11]", "\n", "\n", "Easy access to certain areas of the .NET Framework that otherwise require significant code to access like using", "\n", "\n", "\n", "\n", "\n", "\n", "My", ".", "Form2", ".", "Text", " ", "=", " ", "\" MainForm \"", "\n", "\n", "rather than", "\n", "\n", "\n", "System", ".", "WindowsApplication1", ".", "Forms", ".", "Form2", ".", "text", " ", "=", " ", "\" MainForm \"", "\n", "\n", "\n", "\n", "\n", "Dynamically generated classes (e.g. ", "My.Forms", ")", "\n", "\n", "\n", "Improved VB-to-VB.NET converter", "[12]", "\n", "A \"using\" keyword, simplifying the use of objects that require the Dispose ", "pattern", " to free resources", "\n", "Just My Code", " feature, which hides (steps over) ", "boilerplate code", " written by the Visual Studio .NET IDE and system library code during debugging", "\n", "Data Source binding, easing ", "database", " client/server development", "\n", "\n", "To bridge the gaps between itself and other .NET languages, this version added:", "\n", "\n", "Generics", "[13]", "\n", "Partial classes", ", a method of defining some parts of a class in one file and then adding more definitions later; particularly useful for integrating user code with auto-generated code", "\n", "Operator overloading", " and ", "nullable types", "[14]", "\n", "Support for ", "unsigned integer", " data types commonly used in other languages", "\n", "\n", "Visual Basic 2005 introduced the ", "IsNot", " operator that makes ", "'If X IsNot Y'", " equivalent to ", "'If Not X Is Y'", ". It gained notoriety", "[15]", " when it was found to be the subject of a Microsoft patent application.", "[16]", "[17]", "\n", "2008 (VB 9.0)", "[", "edit", "]", "\n", "Visual Basic 9.0 was released along with ", ".NET Framework 3.5", " on 19 November 2007.", "\n", "For this release, Microsoft added many features, including:", "\n", "\n", "A true ", "conditional operator", ", \"If(condition as boolean, truepart, falsepart)\", to replace the \"IIf\" function.", "\n", "Anonymous types", "\n", "Support for ", "LINQ", "\n", "Lambda expressions", "\n", "XML Literals", "\n", "Type Inference", "\n", "Extension methods", "\n", "\n", "2010 (VB 10.0)", "[", "edit", "]", "\n", "In April 2010, Microsoft released Visual Basic 2010. Microsoft had planned to use ", "Dynamic Language Runtime", " (DLR) for that release", "[18]", " but shifted to a co-evolution strategy between Visual Basic and sister language C# to bring both languages into closer parity with one another. Visual Basic's innate ability to interact dynamically with CLR and COM objects has been enhanced to work with dynamic languages built on the DLR such as ", "IronPython", " and ", "IronRuby", ".", "[19]", " The Visual Basic compiler was improved to infer line continuation in a set of common contexts, in many cases removing the need for the \"_\" line continuation character. Also, existing support of inline Functions was complemented with support for inline Subs as well as multi-line versions of both Sub and Function lambdas.", "[20]", "\n", "2012 (VB 11.0)", "[", "edit", "]", "\n", "Visual Basic 2012 was released along ", ".NET Framework 4.5", ". Major features introduced in this version include:", "[", "further explanation needed", "]", "\n", "\n", "Asynchronous programming", " with \"async\" and \"await\" statements", "\n", "Iterators", "\n", "Call hierarchy", "\n", "Caller information", "\n", "\"Global\" keyword in \"namespace\" statements", "\n", "\n", "2015 (VB 14.0)", "[", "edit", "]", "\n", "Visual Basic 2015 (code named VB \"14.0\") has been released with Visual Studio 2015. Language features include a new \"?.\" operator to perform inline null checks, and a new string interpolation feature is included to format strings inline.", "[21]", "\n", "2017 (VB 15.0)", "[", "edit", "]", "\n", "Visual Basic 2017 (code named VB \"15.0\") has been released with Visual Studio 2017. Extends support for new Visual Basic 15 language features, and introduces new refactorings that allow you to organize source code with one action.", "[22]", "\n", "Cross-platform and open-source development", "[", "edit", "]", "\n", "The creation of open-source tools for VB.NET development has been slow compared to ", "C#", ", although the ", "Mono", " development platform provides an implementation of VB.NET-specific libraries and a VB.NET 8.0 compatible ", "compiler", " written in VB.NET,", "[23]", " as well as standard framework libraries such as ", "Windows Forms", " GUI library.", "\n", "SharpDevelop", " and ", "MonoDevelop", " are ", "open-source", " alternative ", "IDEs", ".", "\n", "See also", "[", "edit", "]", "\n", "\n", "Microsoft Visual Studio Express", "\n", "List of .NET libraries and frameworks", "\n", "Comparison of C# and Visual Basic .NET", "\n", "Visual Basic for Applications", "\n", "Microsoft Small Basic", "\n", "Comparison of programming languages", "\n", "\n", "References", "[", "edit", "]", "\n", "\n", "\n", "^ ", "a", " ", "b", " ", "\"Option Explicit and Option Strict in Visual Basic .NET and in Visual Basic\"", ". ", "Support", ". ", "Microsoft", ". 19 March 2008", ". Retrieved ", "22 August", " 2013", ".", "\u00a0", "\n", "^", " ", "\"New Features in Visual Basic 10\"", ".", "\u00a0", "\n", "^", " ", "\"Module Statement\"", ". MSDN \u2013 Developer Center", ". Retrieved ", "20 January", " 2010", ".", "\u00a0", "\n", "^", " ", "\"Main Procedure in Visual Basic\"", ". MSDN \u2013 Developer Center", ". Retrieved ", "20 January", " 2010", ".", "\u00a0", "\n", "^", " ", "\"Visual Basic Version of Hello, World\"", ". MSDN \u2013 Developer Center", ". Retrieved ", "20 January", " 2010", ".", "\u00a0", "\n", "^", " ", "\"Microsoft Visual Basic 6.0 Migration Resource Center\"", ". ", "MSDN", ". ", "Microsoft", ". Retrieved ", "9 November", " 2014", ".", "\u00a0", "\n", "^", " ", "https://msdn.microsoft.com/en-us/library/aa903378(v=vs.71).aspx", "\n", "^", " ", "Krill, Paul (2009-02-27). ", "\"Microsoft converging programming languages | Developer World\"", ". InfoWorld", ". Retrieved ", "2013-08-18", ".", "\u00a0", "\n", "^", " ", "\"Microsoft Intermediate Language\"", ". Dotnet-guide.com", ". Retrieved ", "2013-08-18", ".", "\u00a0", "\n", "^", " ", "Mackenzie, Duncan (2006). ", "\"Navigate The .NET Framework And Your Projects With The My Namespace\"", ". ", "MSDN Magazine Visual Studio 2005 Guided Tour 2006", ". ", "Microsoft", ".", "\u00a0", "\n", "^", " ", "Whitney, Tyler (November 2005). ", "\"My.Internals: Examining the Visual Basic My Feature\"", ". ", "MSDN", ". ", "Microsoft", ".", "\u00a0", "\n", "^", " ", "What's New with the Visual Basic Upgrade Wizard in Visual Basic 2005", "\n", "^", " ", "Defining and Using Generics in Visual Basic 2005", "\n", "^", " ", "Operator Overloading in Visual Basic 2005", "\n", "^", " ", "Sherriff, Lucy (22 February 2005). ", "\"Real Software slams MS IsNot patent application\"", ". The Register", ". Retrieved ", "6 April", " 2009", ".", "\u00a0", "\n", "^", " ", "Taft, Darryl K. (21 February 2005). ", "\"Real Software Slams Microsofts Patent Effort\"", ". eWeek", ". Retrieved ", "6 April", " 2009", ".", "\u00a0", "\n", "^", " ", "Vick, Paul A. Jr.; Barsan, Costica Corneliu; Silver, Amanda K. (14 May 2003). ", "\"United States Patent Application: 20040230959\"", ". ", "Patent Application Full Text and Image Database", ". US Patent & Trademark Office", ". Retrieved ", "6 April", " 2009", ".", "\u00a0", "\n", "^", " ", "\"What the heck is \"VBx\"?\"", ". 1 May 2007", ". Retrieved ", "12 August", " 2009", ". ", "With the new DLR, we have support for IronPython, IronRuby, Javascript, and the new dynamic VBx compile", "\u00a0", "\n", "^", " ", "\"What is New in Visual Basic 2010\"", ". ", "Microsoft", ". 2009", ". Retrieved ", "12 August", " 2009", ". ", "Visual Basic binds to objects from dynamic languages such as IronPython and IronRuby", "\u00a0", "\n", "^", " ", "\"What's New in Visual Basic 2010\"", ". Microsoft. 2010", ". Retrieved ", "1 August", " 2010", ".", "\u00a0", "\n", "^", " ", "http://blogs.msdn.com/b/vbteam/archive/2014/12/09/new-language-features-in-visual-basic-14.aspx", "\n", "^", " ", "https://www.visualstudio.com/en-us/news/releasenotes/vs2017-relnotes", "\n", "^", " ", "Mono Project: VisualBasic.NET support", "\n", "\n", "\n", "Further reading", "[", "edit", "]", "\n", "\n", "\n", "\"Visual Basic Language Specification 8.0\"", ". Microsoft Corporation. 15 November 2005", ". Retrieved ", "10 December", " 2010", ".", "\u00a0", "\n", "\"Visual Basic Language Specification 9.0\"", ". Microsoft Corporation. 19 December 2007", ". Retrieved ", "28 September", " 2011", ".", "\u00a0", "\n", "\"Visual Basic Language Specification 11.0\"", ". Microsoft Corporation. 7 June 2013", ". Retrieved ", "22 September", " 2013", ".", "\u00a0", "\n", "\n", "\n", "External links", "[", "edit", "]", "\n", "\n", "\n", "\n", "Wikibooks has a book on the topic of: ", "Visual Basic .NET", "\n", "\n", "\n", "\n", "\n", "\n", "Wikiversity has learning resources about ", "VB.NET", "\n", "\n", "\n", "\n", "Official website", "\n", "The Visual Basic Team Blog", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "v", "\n", "t", "\n", "e", "\n", "\n", "\n", "Dialects of the ", "BASIC", " programming language (", "list", ")", "\n", "\n", "\n", "\n", "Classic", "\n", "\n", "\n", "\n", "Altair BASIC", "\n", "Applesoft BASIC", "\n", "Atari BASIC", "\n", "Atari Microsoft BASIC", "\n", "Atari ST BASIC", "\n", "BASICA", "\n", "BASIC A+", "\n", "BASIC Programming", "\n", "BASIC XE", "\n", "BASIC XL", "\n", "Casio BASIC", "\n", "Chipmunk Basic", "\n", "Color BASIC", "\n", "Commodore BASIC", "\n", "Extended Color BASIC", "\n", "Dartmouth BASIC", "\n", "Disk Extended Color BASIC", "\n", "Family BASIC", "\n", "GFA BASIC", "\n", "GW-BASIC", "\n", "HP BASIC for OpenVMS", "\n", "HP Time-Shared BASIC", "\n", "IBM BASIC", "\n", "Integer BASIC", "\n", "Locomotive BASIC", "\n", "Mallard BASIC", "\n", "Microsoft BASIC", "\n", "MSX BASIC", "\n", "Pure Basic", "\n", "Rocky Mountain BASIC", "\n", "S'-BASIC", " (Tandy, Casio, Sharp Pocket Computers)", "\n", "ScriptBasic", "\n", "Sinclair BASIC", "\n", "Southampton BASIC System", "\n", "STOS BASIC", "\n", "TI BASIC (TI 99/4A)", "\n", "TI-BASIC (calculators)", "\n", "TI Extended BASIC", " (aka XBasic)", "\n", "Tiny BASIC", "\n", "Turbo-Basic XL", "\n", "Tymshare SUPER BASIC", "\n", "UBASIC", "\n", "Vilnius BASIC", "\n", "XBasic", "\n", "\n", "\n", "\n", "\n", "\n", "Procedure-oriented", "\n", "\n", "\n", "\n", "AmigaBASIC", "\n", "AMOS BASIC", "\n", "ASIC", "\n", "BBC BASIC", "\n", "Beta BASIC", "\n", "DarkBASIC", "\n", "FreeBASIC", "\n", "FutureBASIC", "\n", "GFA BASIC", "\n", "GLBasic", "\n", "Liberty BASIC", "\n", "Microsoft Small Basic", "\n", "PowerBASIC", "\n", "PureBasic", "\n", "QBasic", "\n", "QB64", "\n", "QuickBASIC", "\n", "SmallBASIC", "\n", "SuperBASIC", "\n", "ThinBasic", "\n", "True BASIC", "\n", "Turbo Basic", "\n", "XBasic", "\n", "Xblite", "\n", "Basic4ppc", "\n", "Visual Test", "\n", "B4J", "\n", "\n", "\n", "\n", "\n", "\n", "With object extensions", "\n", "\n", "\n", "\n", "AutoIt", "\n", "Basic For Qt", " (KBasic)", "\n", "BlitzMax", "\n", "Chipmunk Basic", "\n", "FreeBASIC", "\n", "Gambas", "\n", "GLBasic", "\n", "Monkey X", "\n", "OpenOffice Basic", "\n", "PowerBASIC", "\n", "ProvideX", "\n", "RapidQ", "\n", "REALbasic", "\n", "Run BASIC", "\n", "Visual Basic", "\n", "Visual Basic .NET", "\n", "Xojo", "\n", "\n", "\n", "\n", "\n", "\n", "For mobile devices", "\n", "\n", "\n", "\n", "B4X", "\n", "Basic4android", " ", "(B4A)", "\n", "Basic4ppc", "\n", "GLBasic", "\n", "NS Basic", "\n", "Basic4ios", " ", "(B4i)", "\n", "\n", "\n", "\n", "\n", "\n", "Microsoft", "\n", "\n", "\n", "\n", "Microsoft BASIC", "\n", "\n", "MBASIC", "\n", "IBM BASIC", "/BASICA", "\n", "GW-BASIC", "\n", "QuickBASIC", "\n", "QBasic", "\n", "\n", "\n", "VBScript", "\n", "Visual Basic", "\n", "VBA", "\n", "Visual Basic .NET", "\n", "Embedded Visual Basic", "\n", "VB 5 for ", "Microsoft Excel", " 5.0\n", "\n", "VSTO", "\n", "VSTA", "\n", "\n", "\n", "WordBASIC", "\n", "TRS-80 Basics (Level I, Level II, Level III)", "\n", "Microsoft Small Basic", "\n", "\n", "\n", "\n", "\n", "\n", "Third-party VB-like", "\n", "\n", "\n", "\n", "B4X", "\n", "Basic For Qt", "\n", "Gambas", "\n", "Hummingbird Basic", "\n", "LotusScript", "\n", "WinWrapBasic", "\n", "Xojo", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "v", "\n", "t", "\n", "e", "\n", "\n", "\n", ".NET Framework", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "Version history", "\n", ".NET strategy", "\n", "\n", "\n", "\n", "\n", "\n", "Architecture", "\n", "\n", "\n", "\n", "Common Language Runtime", " (CLR)", "\n", "COM Interop", "\n", "Framework Class Library", " (FCL)", "\n", "\n", "\n", "\n", "\n", "\n", "Components", "\n", "\n", "\n", "\n", "ADO.NET", "\n", "\n", "Entity Framework", "\n", "\n", "\n", "ASP.NET", "\n", "\n", "AJAX", "\n", "Core", "\n", "Dynamic Data", "\n", "MVC", "\n", "Razor", "\n", "\n", "\n", "ClickOnce", "\n", "Dynamic Language Runtime", "\n", "Extensible Application Markup Language", " (XAML)", "\n", "Language Integrated Query", " (LINQ)", "\n", "Managed Extensibility Framework", "\n", "Microsoft Silverlight", "\n", "Microsoft XNA", "\n", "Parallel Extensions", "\n", "Windows Communication Foundation", " (WCF)\n", "\n", "WCF Data Services", "\n", "\n", "\n", "Windows Forms", " (WinForms)", "\n", "Windows Identity Foundation", " (WIF)", "\n", "Windows Presentation Foundation", " (WPF)", "\n", "Windows Workflow Foundation", " (WF)", "\n", ".NET Remoting", "\n", "\n", "\n", "\n", "\n", "\n", "Tools", "\n", "\n", "\n", "\n", "\n", "Decompilers", "\n", "\n", "\n", "\n", ".NET Reflector", "\n", "dotPeek", "\n", "\n", "\n", "\n", "\n", "\n", "Obfuscators", "\n", "\n", "\n", "\n", "Dotfuscator", "\n", "SmartAssembly", "\n", "CodeArmor", "\n", "Xenocode", "\n", "\n", "\n", "\n", "\n", "\n", "Misc", "\n", "\n", "\n", "\n", "CLR Profiler", "\n", "ILAsm", "\n", ".NET Compiler Platform", "\n", "Native Image Generator", " (NGen)", "\n", "XAMLPad", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "IDEs", "\n", "\n", "\n", "\n", "Visual Studio", "\n", "\n", "Blend", "\n", "Express", "\n", "\n", "\n", "MonoDevelop", "\n", "SharpDevelop", "\n", "Xamarin Studio", "\n", "\n", "\n", "\n", "\n", "\n", "Organizations", "\n", "\n", "\n", "\n", ".NET Foundation", "\n", "Microsoft", "\n", "Xamarin", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", " ", "Category", "\n", " ", "List", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "v", "\n", "t", "\n", "e", "\n", "\n", "\n", "Common Language Infrastructure", "\n", "\n", "\n", "\n", "Architecture", "\n", "\n", "\n", "\n", "Application domain", "\n", "Code Access Security", "\n", "Common Intermediate Language", " (CIL)\n", "\n", "CIL instructions", "\n", "\n", "\n", "Common Type System", " (CTS)", "\n", "Platform Invocation Services", " (P/Invoke)", "\n", "Virtual Execution System", " (VES)", "\n", "\n", "\n", "\n", "\n", "\n", "Components", "\n", "\n", "\n", "\n", "Assembly", "\n", "Delegate", "\n", "Global Assembly Cache", " (GAC)", "\n", "Manifest", "\n", "Metadata", "\n", "\n", "\n", "\n", "\n", "\n", "Standard", "\nLibraries", "\n", "\n", "\n", "\n", "\n", "Kernel Profile", "\n", "\n", "\n", "\n", "Base Class Library", " (BCL)", "\n", "Runtime Infrastructure Library", "\n", "\n", "\n", "\n", "\n", "\n", "Compact Profile", "\n", "\n", "\n", "\n", "Network Library", "\n", "Reflection Library", "\n", "XML Library", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "Extended Array Library", "\n", "Extended Numerics Library", "\n", "Parallel Library", "\n", "Vararg Library", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "Implementations", "\n", "\n", "\n", "\n", "\n", "Microsoft", "\n", "\n", "\n", "\n", ".NET Framework", "\n", ".NET Compact Framework", "\n", ".NET Micro Framework", "\n", "Shared Source Common Language Infrastructure", "\n", "\n", "\n", "\n", "\n", "\n", "Other", "\n", "\n", "\n", "\n", ".NET Core", "\n", "Mono", "\n", "Portable.NET", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "Languages", "\n", "\n", "\n", "\n", "\n", "Microsoft", "\n", "\n", "\n", "\n", "C#", "\n", "Visual Basic .NET", "\n", "C++/CLI", "\n", "\n", "Managed", "\n", "\n", "\n", "F#", "\n", "Q#", "\n", "J#", "\n", "JScript .NET", "\n", "PowerShell", "\n", "\n", "\n", "\n", "\n", "\n", "Other", "\n", "\n", "\n", "\n", "Axum", "\n", "A#", "\n", "Boo", "\n", "Cobra", "\n", "IronScheme", "\n", "\n", "IronLisp", "\n", "\n", "\n", "IronPython", "\n", "IronRuby", "\n", "Nemerle", "\n", "Oxygene", "\n", "Phalanger", "\n", "P#", "\n", "Scala", "\n", "\n", "\n", "\n", "\n", "\n", "Comparison", "\n", "\n", "\n", "\n", "C# and Java", "\n", "C# and Visual Basic .NET", "\n", "Java and .NET platforms", "\n", "Visual Basic and Visual Basic .NET", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "Organizations", "\n", "\n", "\n", "\n", ".NET Foundation", "\n", "DotGNU", "\n", "Microsoft", "\n", "Xamarin", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "v", "\n", "t", "\n", "e", "\n", "\n", "\n", "Microsoft development tools", "\n", "\n", "\n", "\n", "Development", "\nenvironments", "\n", "\n", "\n", "\n", "\n", "Visual Studio", "\n", "\n", "\n", "\n", "Code", "\n", "Express", "\n", "Lab Management", "\n", "Team System Profiler", "\n", "Test Professional", "\n", "Tools for Applications", "\n", "Tools for Office", "\n", "\n", "\n", "\n", "\n", "\n", "Others", "\n", "\n", "\n", "\n", ".NET Compiler Platform", "\n", "App Studio", "\n", "Blend", "\n", "Expression Web", "\n", "GW-BASIC", "\n", "Microsoft Pascal", "\n", "MSBuild", "\n", "Robotics Developer Studio", "\n", "SharePoint Designer", "\n", "\n", "FrontPage", "\n", "\n", "\n", "PowerShell ISE", "\n", "QuickBASIC", "\n", "\n", "QBasic", "\n", "\n", "\n", "QuickC", "\n", "Small Basic", "\n", "WebMatrix", "\n", "Windows SDK", "\n", "\n", "CLR Profiler", "\n", "ILAsm", "\n", "Native Image Generator", "\n", "XAMLPad", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "Languages", "\n", "\n", "\n", "\n", "Microsoft Basic", "\n", "Visual Basic", "\n", "Visual Basic .NET", "\n", "Visual C++", "\n", "\n", "C++/CX", "\n", "C++/CLI", "\n", "Managed C++", "\n", "\n", "\n", "C#", "\n", "F#", "\n", "J#", "\n", "Visual FoxPro", "\n", "IronPython", "\n", "IronRuby", "\n", "JScript", "\n", "PowerShell", "\n", "TypeScript", "\n", "VBScript", "\n", "XAML", "\n", "\n", "\n", "\n", "\n", "\n", "Major ", "APIs", " and", "\nframeworks", "\n(", "See all", ")", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "Windows API", "\n", "Silverlight", "\n", "XNA", "\n", "DirectX", "\n", "\n", "Managed DirectX", "\n", "\n", "\n", "Xbox Development Kit", "\n", "Windows Installer", "\n", "\n", "\n", "\n", "\n", "\n", ".NET Framework", "\n", "\n", "\n", "\n", "ASP.NET", "\n", "\n", "ASP.NET Core", "\n", "ASP.NET AJAX", "\n", "ASP.NET Dynamic Data", "\n", "ASP.NET MVC", "\n", "ASP.NET Razor", "\n", "\n", "\n", "ADO.NET", "\n", "\n", "Entity Framework", "\n", "\n", "\n", "CardSpace", "\n", "Communication Foundation", "\n", "Identity Foundation", "\n", "LINQ", "\n", "Presentation Foundation", "\n", "Workflow Foundation", "\n", "\n", "\n", "\n", "\n", "\n", "Device drivers", "\n", "\n", "\n", "\n", "WDK", "\n", "WDF", "\n", "\n", "KMDF", "\n", "UMDF", "\n", "\n", "\n", "Windows Hardware Certification Kit", "\n", "WDM", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "Database", "\n", "\n", "\n", "\n", "\n", "SQL Server", "\n", "\n", "\n", "\n", "Express", "\n", "Compact", "\n", "Management Studio", "\n", "Business Intelligence Development Studio", "\n", "MSDE", "\n", "\n", "\n", "\n", "\n", "\n", "SQL services", "\n", "\n", "\n", "\n", "Analysis", "\n", "Reporting", "\n", "Integration", "\n", "Notification", "\n", "\n", "\n", "\n", "\n", "\n", "Other", "\n", "\n", "\n", "\n", "Visual FoxPro", "\n", "Microsoft Access", "\n", "Jet Engine", "\n", "Extensible Storage Engine", "\n", "Azure DocumentDB", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "Source control", "\n", "\n", "\n", "\n", "Team Foundation Server", "\n", "Visual SourceSafe", "\n", "\n", "\n", "\n", "\n", "\n", "Delivery", "\n", "\n", "\n", "\n", "Active Setup", "\n", "ClickOnce", "\n", "NuGet", "\n", "Web Platform", "\n", "Windows Installer", "\n", "\n", "WiX", "\n", "\n", "\n", "Windows Store", "\n", "\n", "\n", "\n", "\n", "\n", "\n\n\n", "\n", "\n", "\n", "\n"], "lastUpdated": " 13 January 2018, at 10:28."}, +{"title": "Just-in-time compilation", "text": ["\"Dynamic translation\" redirects here. For the translation of natural languages, see ", "Dynamic and formal equivalence", ".", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "This article ", "has an unclear citation style", ". ", "The references used may be made clearer with a different or consistent style of ", "citation", ", ", "footnoting", ", or ", "external linking", ".", " ", "(December 2013)", " ", "(", "Learn how and when to remove this template message", ")", "\n", "\n", "\n", "\n", "\n", "\n", "Program execution", "\n", "\n", "\n", "General concepts", "\n", "\n", "\n", "\n", "\n", "Code", "\n", "Translation", "\n", "\n", "Compiler", "\n", "Optimizing compiler", "\n", "\n", "\n", "Intermediate representation", " (IR)", "\n", "Execution", "\n", "\n", "Runtime system", "\n", "Executable", "\n", "Interpreter", "\n", "Virtual machine", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "Types of code", "\n", "\n", "\n", "\n", "\n", "Source code", "\n", "Object code", "\n", "Bytecode", "\n", "Machine code", "\n", "Microcode", "\n", "\n", "\n", "\n", "\n", "Compilation strategies", "\n", "\n", "\n", "\n", "\n", "Just-in-time", " (JIT)\n", "\n", "Tracing just-in-time", "\n", "\n", "\n", "Ahead-of-time", " (AOT)", "\n", "Transcompilation", "\n", "Recompilation", "\n", "\n", "\n", "\n", "\n", "Notable runtimes", "\n", "\n", "\n", "\n", "\n", "Android Runtime", " (ART)", "\n", "Common Language Runtime", " (CLR)", "\n", "crt0", "\n", "Java virtual machine", " (JVM)", "\n", "Node.js", "\n", "Zend Engine", "\n", "\n", "\n", "\n", "\n", "Notable compilers & toolchains", "\n", "\n", "\n", "\n", "\n", "GNU Compiler Collection", " (GCC)", "\n", "LLVM", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "v", "\n", "t", "\n", "e", "\n", "\n", "\n", "\n", "\n", "\n", "In ", "computing", ", ", "just-in-time", " (", "JIT", ") ", "compilation", ", also known as ", "dynamic translation", ", is a way of executing ", "computer code", " that involves ", "compilation", " during execution of a program \u2013 at ", "run time", " \u2013 rather than prior to execution.", "[1]", " Most often this consists of ", "source code", " or more commonly ", "bytecode", " translation to ", "machine code", ", which is then executed directly. A system implementing a JIT compiler typically continuously analyses the code being executed and identifies parts of the code where the speedup gained from compilation or recompilation would outweigh the overhead of compiling that code.", "\n", "JIT compilation is a combination of the two traditional approaches to translation to machine code \u2013 ", "ahead-of-time compilation", " (AOT), and ", "interpretation", " \u2013 and combines some advantages and drawbacks of both.", "[1]", " Roughly, JIT compilation combines the speed of compiled code with the flexibility of interpretation, with the overhead of an interpreter and the additional overhead of compiling (not just interpreting). JIT compilation is a form of ", "dynamic compilation", ", and allows ", "adaptive optimization", " such as ", "dynamic recompilation", " \u2013 thus in theory JIT compilation can yield faster execution than static compilation. Interpretation and JIT compilation are particularly suited for ", "dynamic programming languages", ", as the runtime system can handle ", "late-bound", " data types and enforce security guarantees.", "\n", "\n", "\n", "\n", "Contents", "\n", "\n", "\n", "1", " ", "Applications", "\n", "2", " ", "Overview", "\n", "3", " ", "Startup delay and optimizations", "\n", "4", " ", "History", "\n", "5", " ", "Security", "\n", "6", " ", "See also", "\n", "7", " ", "References", "\n", "8", " ", "External links", "\n", "\n", "\n", "\n", "Applications", "[", "edit", "]", "\n", "JIT compilation can be applied to some programs, or can be used for certain capacities, particularly dynamic capacities such as ", "regular expressions", ". For example, a text editor may compile a regular expression provided at runtime to machine code to allow faster matching \u2013 this cannot be done ahead of time, as the pattern is only provided at runtime. Several modern ", "runtime environments", " rely on JIT compilation for high-speed code execution, including most implementations of ", "Java", ", together with ", "Microsoft", "'s ", ".NET Framework", ". Similarly, many regular expression libraries feature JIT compilation of regular expressions, either to bytecode or to machine code. JIT compilation is also used in some emulators, in order to translate machine code from one CPU architecture to another.", "\n", "A common implementation of JIT compilation is to first have AOT compilation to bytecode (", "virtual machine", " code), known as ", "bytecode compilation", ", and then have JIT compilation to machine code (dynamic compilation), rather than interpretation of the bytecode. This improves the runtime performance compared to interpretation, at the cost of lag due to compilation. JIT compilers translate continuously, as with interpreters, but caching of compiled code minimizes lag on future execution of the same code during a given run. Since only part of the program is compiled, there is significantly less lag than if the entire program were compiled prior to execution.", "\n", "Overview", "[", "edit", "]", "\n", "In a bytecode-compiled system, ", "source code", " is translated to an intermediate representation known as ", "bytecode", ". Bytecode is not the machine code for any particular computer, and may be portable among computer architectures. The bytecode may then be interpreted by, or run on a ", "virtual machine", ". The JIT compiler reads the bytecodes in many sections (or in full, rarely) and compiles them dynamically into machine code so the program can run faster. This can be done per-file, per-function or even on any arbitrary code fragment; the code can be compiled when it is about to be executed (hence the name \"just-in-time\"), and then cached and reused later without needing to be recompiled.", "\n", "In contrast, a traditional ", "interpreted virtual machine", " will simply interpret the bytecode, generally with much lower performance. Some ", "interpreter", "s even interpret source code, without the step of first compiling to bytecode, with even worse performance. ", "Statically compiled code", " or ", "native code", " is compiled prior to deployment. A ", "dynamic compilation environment", " is one in which the compiler can be used during execution. A common goal of using JIT techniques is to reach or surpass the performance of static compilation, while maintaining the advantages of bytecode interpretation: Much of the \"heavy lifting\" of parsing the original source code and performing basic optimization is often handled at compile time, prior to deployment: compilation from bytecode to machine code is much faster than compiling from source. The deployed bytecode is portable, unlike native code. Since the runtime has control over the compilation, like interpreted bytecode, it can run in a secure sandbox. Compilers from bytecode to machine code are easier to write, because the portable bytecode compiler has already done much of the work.", "\n", "JIT code generally offers far better performance than interpreters. In addition, it can in some cases offer better performance than static compilation, as many optimizations are only feasible at run-time:", "[2]", "[3]", "\n", "\n", "The compilation can be optimized to the targeted CPU and the operating system model where the application runs. For example, JIT can choose ", "SSE2", " vector CPU instructions when it detects that the CPU supports them. However, there is currently no mainstream JIT that implements this. To obtain this level of optimization specificity with a static compiler, one must either compile a binary for each intended platform/architecture, or else include multiple versions of portions of the code within a single binary.", "\n", "The system is able to collect statistics about how the program is actually running in the environment it is in, and it can rearrange and recompile for optimum performance. However, some static compilers can also take profile information as input.", "\n", "The system can do global code optimizations (e.g. ", "inlining", " of library functions) without losing the advantages of dynamic linking and without the overheads inherent to static compilers and linkers. Specifically, when doing global inline substitutions, a static compilation process may need run-time checks and ensure that a virtual call would occur if the actual class of the object overrides the inlined method, and boundary condition checks on array accesses may need to be processed within loops. With just-in-time compilation in many cases this processing can be moved out of loops, often giving large increases of speed.", "\n", "Although this is possible with statically compiled garbage collected languages, a bytecode system can more easily rearrange executed code for better cache utilization.", "\n", "\n", "Startup delay and optimizations", "[", "edit", "]", "\n", "JIT causes a slight delay to a noticeable delay in initial execution of an application, due to the time taken to load and compile the bytecode. Sometimes this delay is called \"startup time delay\". In general, the more optimization JIT performs, the better the code it will generate, but the initial delay will also increase. A JIT compiler therefore has to make a trade-off between the compilation time and the quality of the code it hopes to generate. However, it seems that much of the startup time is sometimes due to IO-bound operations rather than JIT compilation (for example, the ", "rt.jar", " class data file for the ", "Java Virtual Machine", " (JVM) is 40 MB and the JVM must seek a lot of data in this contextually huge file).", "[4]", "\n", "One possible optimization, used by Sun's ", "HotSpot", " Java Virtual Machine, is to combine interpretation and JIT compilation. The application code is initially interpreted, but the JVM monitors which sequences of ", "bytecode", " are frequently executed and translates them to machine code for direct execution on the hardware. For bytecode which is executed only a few times, this saves the compilation time and reduces the initial latency; for frequently executed bytecode, JIT compilation is used to run at high speed, after an initial phase of slow interpretation. Additionally, since a program spends most time executing a minority of its code, the reduced compilation time is significant. Finally, during the initial code interpretation, execution statistics can be collected before compilation, which helps to perform better optimization.", "[5]", "\n", "The correct tradeoff can vary due to circumstances. For example, Sun's Java Virtual Machine has two major modes\u2014client and server. In client mode, minimal compilation and optimization is performed, to reduce startup time. In server mode, extensive compilation and optimization is performed, to maximize performance once the application is running by sacrificing startup time. Other Java just-in-time compilers have used a runtime measurement of the number of times a method has executed combined with the bytecode size of a method as a heuristic to decide when to compile.", "[6]", " Still another uses the number of times executed combined with the detection of loops.", "[7]", " In general, it is much harder to accurately predict which methods to optimize in short-running applications than in long-running ones.", "[8]", "\n", "Native Image Generator", " (Ngen) by ", "Microsoft", " is another approach at reducing the initial delay.", "[9]", " Ngen pre-compiles (or \"pre-JITs\") bytecode in a ", "Common Intermediate Language", " image into machine native code. As a result, no runtime compilation is needed. ", ".NET framework", " 2.0 shipped with ", "Visual Studio 2005", " runs Ngen on all of the Microsoft library DLLs right after the installation. Pre-jitting provides a way to improve the startup time. However, the quality of code it generates might not be as good as the one that is JITed, for the same reasons why code compiled statically, without ", "profile-guided optimization", ", cannot be as good as JIT compiled code in the extreme case: the lack of profiling data to drive, for instance, inline caching.", "[10]", "\n", "There also exist Java implementations that combine an ", "AOT (ahead-of-time) compiler", " with either a JIT compiler (", "Excelsior JET", ") or interpreter (", "GNU Compiler for Java", ").", "\n", "History", "[", "edit", "]", "\n", "The earliest published JIT compiler is generally attributed to work on ", "LISP", " by ", "John McCarthy", " in 1960.", "[11]", " In his seminal paper ", "Recursive functions of symbolic expressions and their computation by machine, Part I", ", he mentions functions that are translated during runtime, thereby sparing the need to save the compiler output to ", "punch cards", "[12]", " (although this would be more accurately known as a \"", "Compile and go system", "\"). Another early example was by ", "Ken Thompson", ", who in 1968 gave one of the first applications of ", "regular expressions", ", here for ", "pattern matching", " in the text editor ", "QED", ".", "[13]", " For speed, Thompson implemented regular expression matching by JITing to ", "IBM 7094", " code on the ", "Compatible Time-Sharing System", ".", "[11]", " An influential technique for deriving compiled code from interpretation was pioneered by Mitchell in 1970, which he implemented for the experimental language ", "LC\u00b2", ".", "[14]", "[15]", "\n", "Smalltalk", " (c. 1983) pioneered new aspects of JIT compilations. For example, translation to machine code was done on demand, and the result was cached for later use. When memory became scarce, the system would delete some of this code and regenerate it when it was needed again.", "[1]", "[16]", " Sun's ", "Self", " language improved these techniques extensively and was at one point the fastest Smalltalk system in the world; achieving up to half the speed of optimized C", "[17]", " but with a fully object-oriented language.", "\n", "Self was abandoned by Sun, but the research went into the Java language. The term \"Just-in-time compilation\" was borrowed from the manufacturing term \"", "Just in time", "\" and popularized by Java, with James Gosling using the term from 1993.", "[18]", " Currently JITing is used by most implementations of the ", "Java Virtual Machine", ", as ", "HotSpot", " builds on, and extensively uses, this research base.", "\n", "The HP project Dynamo", "[19]", " was an experimental JIT compiler where the 'bytecode' format and the machine code format were the same; the system turned PA-6000 machine code into ", "PA-8000", " machine code. Counterintuitively, this resulted in speed ups, in some cases of 30% since doing this permitted optimizations at the machine code level, for example, inlining code for better cache usage and optimizations of calls to dynamic libraries and many other run-time optimizations which conventional compilers are not able to attempt.", "[20]", "[21]", "\n", "Security", "[", "edit", "]", "\n", "JIT compilation fundamentally uses executable data, and thus poses security challenges and possible exploits.", "\n", "Implementation of JIT compilation consists of compiling source code or byte code to machine code and executing it. This is generally done directly in memory \u2013 the JIT compiler outputs the machine code directly into memory and immediately executes it, rather than outputting it to disk and then invoking the code as a separate program, as in usual ahead of time compilation. In modern architectures this runs into a problem due to ", "executable space protection", " \u2013 arbitrary memory cannot be executed, as otherwise there is a potential security hole. Thus memory must be marked as executable; for security reasons this should be done ", "after", " the code has been written to memory, and marked read-only, as writable/executable memory is a security hole (see ", "W^X", ").", "[22]", " For instance Firefox's JIT compiler for Javascript introduced this protection in a release version with Firefox 46", "[23]", "\n", "JIT spraying", " is a class of ", "computer security exploits", " that use JIT compilation for ", "heap spraying", " \u2013 the resulting memory is then executable, which allows an exploit if execution can be moved into the heap.", "\n", "See also", "[", "edit", "]", "\n", "\n", "\n", "Java portal", "\n", "\n", "\n", "\n", "Binary translation", "\n", "HotSpot", "\n", "Common Language Runtime", "\n", "Crusoe", ", a microprocessor that essentially performs just-in-time compilation from x86 code to microcode within the microprocessor", "\n", "GNU lightning", " \u2014 A library that generates assembly language code at run-time", "\n", "LLVM", "\n", "Self-modifying code", "\n", "Tracing just-in-time compilation", "\n", "Dynamic compilation", "\n", "\n", "References", "[", "edit", "]", "\n", "\n", "\n", "^ ", "a", " ", "b", " ", "c", " ", "Aycock 2003", ".", "\n", "^", " ", "Croce, Louis. ", "\"Just in Time Compilation\"", " ", "(PDF)", ". ", "Columbia University", ".", "\u00a0", "\n", "^", " ", "\"What are the advantages of JIT vs. AOT compilation\"", ". ", "Stack Overflow", ". Jan 21, 2010.", "\u00a0", "\n", "^", " ", "Haase, Chet (May 2007). ", "\"Consumer JRE: Leaner, Meaner Java Technology\"", ". Sun Microsystems", ". Retrieved ", "2007-07-27", ". ", "At the OS level, all of these megabytes have to be read from disk, which is a very slow operation. Actually, it's the seek time of the disk that's the killer; reading large files sequentially is relatively fast, but seeking the bits that we actually need is not. So even though we only need a small fraction of the data in these large files for any particular application, the fact that we're seeking all over within the files means that there is plenty of disk activity.", " ", "\u00a0", "\n", "^", " ", "\"The Java HotSpot Performance Engine Architecture\"", ". Oracle.com", ". Retrieved ", "2013-07-05", ".", "\u00a0", "\n", "^", " ", "Schilling, Jonathan L. (February 2003). ", "\"The simplest heuristics may be the best in Java JIT compilers\"", " ", "(PDF)", ". ", "SIGPLAN Notices", ". ", "38", " (2): 36\u201346. ", "doi", ":", "10.1145/772970.772975", ". Archived from ", "the original", " ", "(PDF)", " on 2015-09-24.", "\u00a0", "\n", "^", " ", "Toshio Suganuma, Toshiaki Yasue, Motohiro Kawahito, Hideaki Komatsu, Toshio Nakatani, \"A dynamic optimization framework for a Java just-in-time compiler\", ", "Proceedings of the 16th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications", " (OOPSLA '01), pp. 180\u2013195, October 14\u201318, 2001.", "\n", "^", " ", "Matthew Arnold, Michael Hind, Barbara G. Ryder, \"An Empirical Study of Selective Optimization\", ", "Proceedings of the 13th International Workshop on Languages and Compilers for Parallel Computing-Revised Papers", ", pp. 49\u201367, August 10\u201312, 2000.", "\n", "^", " ", "\"Native Image Generator (Ngen.exe)\"", ". Msdn2.microsoft.com", ". Retrieved ", "2013-07-05", ".", "\u00a0", "\n", "^", " ", "Matthew R. Arnold, Stephen Fink, David P. Grove, Michael Hind, and Peter F. Sweeney, \"", "A Survey of Adaptive Optimization in Virtual Machines", "\", ", "Proceedings of the IEEE", ", 92(2), February 2005, pp. 449\u2013466.", "\n", "^ ", "a", " ", "b", " ", "Aycock 2003", ", 2. JIT Compilation Techniques, 2.1 Genesis, p. 98.", "\n", "^", " ", "McCarthy, J.", " (April 1960). \"Recursive functions of symbolic expressions and their computation by machine, Part I\". ", "Communications of the ACM", ". ", "3", " (4): 184\u2013195. ", "CiteSeerX", "\u00a0", "10.1.1.111.8833", "\u202f", ". ", "doi", ":", "10.1145/367177.367199", ".", "\u00a0", "\n", "^", " ", "Thompson 1968", ".", "\n", "^", " ", "Aycock 2003", ", 2. JIT Compilation Techniques, 2.2 LC\u00b2, p. 98\u201399.", "\n", "^", " ", "Mitchell, J.G. (1970). \"The design and construction of flexible and efficient interactive programming systems\".", "\u00a0", "\n", "^", " ", "Deutsch, L.P.; Schiffman, A.M. (1984). ", "\"Efficient implementation of the Smalltalk-80 system\"", " ", "(PDF)", ". ", "POPL '84: Proceedings of the 11th ACM SIGACT-SIGPLAN ", "Symposium on Principles of Programming Languages", ": 297\u2013302. ", "doi", ":", "10.1145/800017.800542", ". ", "ISBN", "\u00a0", "0-89791-125-3", ". Archived from ", "the original", " ", "(PDF)", " on 2004-06-18.", "\u00a0", "\n", "^", " ", "[1]", " ", "Archived", " November 24, 2006, at the ", "Wayback Machine", ".", "\n", "^", " ", "Aycock, 2003 & 2.14 Java, p. 107, footnote 13", ".", "\n", "^", " ", "\"Dynamo: A Transparent Dynamic Optimization System\"", " Vasanth Bala, Evelyn Duesterwald, Sanjeev Banerjia - PLDI '00 Proceedings of the ACM SIGPLAN 2000 conference on Programming language design and implementation - pages 1 to 12 - ", "doi", ":", "10.1145/349299.349303", ". Retrieved March 28, 2012", "\n", "^", " ", "John Jannotti. ", "\"HP's Dynamo - Page 1 - (3/2000)\"", ". Ars Technica", ". Retrieved ", "2013-07-05", ".", "\u00a0", "\n", "^", " ", "\"The HP Dynamo Project\"", ". Archived from the original on October 19, 2002", ". Retrieved ", "2016-04-12", ".", "\u00a0", "CS1 maint: Unfit url (", "link", ")", "\n", "^", " ", "\"", "How to JIT \u2013 an introduction", "\", Eli Bendersky, November 5th, 2013 at 5:59 am", "\n", "^", " ", "De Mooij, Jan. ", "\"W^X JIT-code enabled in Firefox\"", ". ", "Jan De Mooij", ". Retrieved ", "11 May", " 2016", ".", "\u00a0", "\n", "\n", "\n", "\n", "\n", "Aycock, J. (June 2003). \"A brief history of just-in-time\". ", "ACM Computing Surveys", ". ", "35", " (2): 97\u2013113. ", "CiteSeerX", "\u00a0", "10.1.1.97.3985", "\u202f", ". ", "doi", ":", "10.1145/857076.857077", ".", "\u00a0", "\n", "Thompson, K.", " (1968). \"Programming Techniques: Regular expression search algorithm\". ", "Communications of the ACM", ". ", "11", " (6): 419\u2013422. ", "doi", ":", "10.1145/363347.363387", ".", "\u00a0", "\n", "\n", "\n", "External links", "[", "edit", "]", "\n", "\n", "What is Microsoft Just In Time Compiler", "\n", "Free Online Dictionary of Computing entry", "\n", "libJIT", " \u2014 A library by Rhys Weatherley, Klaus Treichel, Aleksey Demakov, and Kirill Kononenko for development of Just-In-Time compilers in Virtual Machine implementations, Dynamic programming languages and Scripting languages.", "\n", "MyJIT", ", a small, simple (300KB source, 360kB object file) for i386, AMD64, and SPARC.", "\n", "Mozilla Nanojit", " \u2014 A small, cross-platform C++ library that emits machine code. It is used as the JIT for the Mozilla ", "Tamarin", " and ", "SpiderMonkey", " Javascript engines.", "\n", "SoftWire", " \u2014 A library by Nicolas Capens that generates assembly language code at run-time (", "thesis", ")", "\n", "CCG", " by Ian Piumarta", "\n", "Dyninst", "\n", "JatoVM", ", a Java JIT-only VM", "\n", "OVPsim", ", an embedded core JIT tools that converts ARM, MIPS, and other ISA instructions to x86 for execution/simulation", "\n", "AsmJit", " \u2014 Complete x86/x64 jit assembler library for C++ language by Petr Kobal\u00ed\u010dek", "\n", "Xbyak", " \u2014 A x86/x64 JIT assembler for C++ language by Herumi", "\n", "sljit", " \u2014 A platform independent assembly language written in C by Zoltan Herczeg. Sljit can generate code for x86, AMD64, ARM, PowerPC, MIPS, and SPARC.", "\n", "Profiling Runtime Generated and Interpreted Code using the VTune Performance Analyzer", "\n", "\n\n\n", "\n", "\n", "\n", "\n"], "lastUpdated": " 26 December 2017, at 07:46."}, +{"title": "Run time (program lifecycle phase)", "text": ["This article is about execution phase in a programming language. For the infrastructure required to run programs, see ", "Runtime system", ".", "\n", "\n", "\n", "Program execution", "\n", "\n", "\n", "General concepts", "\n", "\n", "\n", "\n", "\n", "Code", "\n", "Translation", "\n", "\n", "Compiler", "\n", "Optimizing compiler", "\n", "\n", "\n", "Intermediate representation", " (IR)", "\n", "Execution", "\n", "\n", "Runtime system", "\n", "Executable", "\n", "Interpreter", "\n", "Virtual machine", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "Types of code", "\n", "\n", "\n", "\n", "\n", "Source code", "\n", "Object code", "\n", "Bytecode", "\n", "Machine code", "\n", "Microcode", "\n", "\n", "\n", "\n", "\n", "Compilation strategies", "\n", "\n", "\n", "\n", "\n", "Just-in-time", " (JIT)\n", "\n", "Tracing just-in-time", "\n", "\n", "\n", "Ahead-of-time", " (AOT)", "\n", "Transcompilation", "\n", "Recompilation", "\n", "\n", "\n", "\n", "\n", "Notable runtimes", "\n", "\n", "\n", "\n", "\n", "Android Runtime", " (ART)", "\n", "Common Language Runtime", " (CLR)", "\n", "crt0", "\n", "Java virtual machine", " (JVM)", "\n", "Node.js", "\n", "Zend Engine", "\n", "\n", "\n", "\n", "\n", "Notable compilers & toolchains", "\n", "\n", "\n", "\n", "\n", "GNU Compiler Collection", " (GCC)", "\n", "LLVM", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "v", "\n", "t", "\n", "e", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "This article ", "does not ", "cite", " any ", "sources", ". ", "Please help ", "improve this article", " by ", "adding citations to reliable sources", ". Unsourced material may be challenged and ", "removed", ".", " ", "(May 2012)", " ", "(", "Learn how and when to remove this template message", ")", "\n", "\n", "\n", "\n", "In ", "computer science", ", ", "run time", ", ", "runtime", " or ", "execution time", " is the time during which a program is running (", "executing", "), in contrast to other ", "program lifecycle phases", " such as ", "compile time", ", ", "link time", " and ", "load time", ".", "\n", "A run-time error is detected after or during the execution (running state) of a program, whereas a compile-time error is detected by the ", "compiler", " before the program is ever executed. ", "Type checking", ", ", "register allocation", ", ", "code generation", ", and code optimization are typically done at compile time, but may be done at run time depending on the particular language and compiler.", "\n", "Implementation details", "[", "edit", "]", "\n", "When a program is to be executed, a ", "loader", " first performs the necessary ", "memory", " setup and links the program with any ", "dynamically linked", " ", "libraries", " it needs, and then the execution begins starting from the program's ", "entry point", ". In some cases, a language or implementation will have these tasks done by the language runtime instead, though this is unusual in mainstream languages on common consumer operating systems.", "\n", "Some program debugging can only be performed (or is more efficient or accurate when performed) at runtime. ", "Logic errors", " and ", "array", " bounds checking are examples. For this reason, some programming ", "bugs", " are not discovered until the program is tested in a ", "production environment", " with real data, despite sophisticated compile-time checking and pre-release testing. In this case, the end user may encounter a ", "runtime error", " message.", "\n", "Application errors (exceptions)", "[", "edit", "]", "\n", "Exception handling", " is one language feature designed to handle runtime errors, providing a structured way to catch completely unexpected situations as well as predictable errors or unusual results without the amount of inline error checking required of languages without it. More recent advancements in runtime engines enable ", "automated exception handling", " which provides 'root-cause' debug information for every exception of interest and is implemented independent of the source code, by attaching a special software product to the runtime engine.", "\n", "See also", "[", "edit", "]", "\n", "\n", "\n", "\n", "Look up ", "run time", ", ", "run-time", ", or ", "runtime", " in Wiktionary, the free dictionary.", "\n", "\n", "\n", "\n", "Name binding", "\n", "Compile time", " and ", "compiling", "\n", "Interpreter (computing)", "\n", "Runtime Type Information", "\n", "Run-time system", "\n", "Runtime library", "\n", "\n\n\n", "\n", "\n", "\n", "\n"], "lastUpdated": " 28 April 2017, at 01:48."}, +{"title": "Code reuse", "text": ["Code reuse", ", also called ", "software reuse", ", is the use of existing ", "software", ", or software knowledge, to build new software,", "[1]", " following the ", "reusability principles", ".", "\n", "\n", "\n", "\n", "Contents", "\n", "\n", "\n", "1", " ", "Overview", "\n", "2", " ", "Types of reuse", "\n", "3", " ", "Systematic", "\n", "4", " ", "Examples", "\n", "\n", "4.1", " ", "Software libraries", "\n", "4.2", " ", "Design patterns", "\n", "4.3", " ", "Frameworks", "\n", "4.4", " ", "Higher-order function", "\n", "4.5", " ", "Retrocomputing", "\n", "4.6", " ", "Computer security", "\n", "4.7", " ", "Components", "\n", "4.8", " ", "Outside computers", "\n", "\n", "\n", "5", " ", "Criticism", "\n", "6", " ", "See also", "\n", "7", " ", "References", "\n", "8", " ", "External links", "\n", "\n", "\n", "\n", "Overview", "[", "edit", "]", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "This section ", "needs additional citations for ", "verification", ". ", "Please help ", "improve this article", " by ", "adding citations to reliable sources", ". Unsourced material may be challenged and removed.", " ", "(April 2015)", " ", "(", "Learn how and when to remove this template message", ")", "\n", "\n", "\n", "\n", "Ad hoc", " code reuse has been practiced from the earliest days of ", "programming", ". Programmers have always reused sections of code, templates, functions, and procedures. Software reuse as a recognized area of study in software engineering, however, dates only from 1968 when ", "Douglas McIlroy", " of ", "Bell Laboratories", " proposed basing the software industry on reusable components.", "\n", "Code reuse aims to save time and resources and reduce redundancy by taking advantage of assets that have already been created in some form within the software product development process.", "[2]", " The key idea in reuse is that parts of a ", "computer program", " written at one time can be or should be used in the construction of other programs written at a later time.", "\n", "Code reuse may imply the creation of a separately maintained version of the reusable assets. While code is the most common resource selected for reuse, other assets generated during the development cycle may offer opportunities for reuse: software components, test suites, designs, documentation, and so on.", "[3]", "\n", "The ", "software library", " is a good example of code reuse. Programmers may decide to create internal abstractions so that certain parts of their program can be reused, or may create custom libraries for their own use. Some characteristics that make software more easily reusable are ", "modularity", ", ", "loose coupling", ", high ", "cohesion", ", ", "information hiding", " and ", "separation of concerns", ".", "\n", "For newly written code to use a piece of existing code, some kind of interface, or means of communication, must be defined. These commonly include a \"call\" or use of a ", "subroutine", ", ", "object", ", ", "class", ", or ", "prototype", ". In organizations, such practices are formalized and standardized by ", "domain engineering", ", also known as ", "software product line", " engineering.", "\n", "The general practice of using a prior version of an extant program as a starting point for the next version, is also a form of code reuse.", "\n", "Some so-called code \"reuse\" involves simply copying some or all of the code from an existing program into a new one. While organizations can realize ", "time to market", " benefits for a new product with this approach, they can subsequently be saddled with many of the same ", "code duplication", " problems caused by ", "cut and paste programming", ".", "\n", "Many researchers have worked to make reuse faster, easier, more systematic, and an integral part of the normal process of programming. These are some of the main goals behind the invention of ", "object-oriented programming", ", which became one of the most common forms of formalized reuse. A somewhat later invention is ", "generic programming", ".", "\n", "Another, newer means is to use software \"", "generators", "\", programs which can create new programs of a certain type, based on a set of parameters that users choose. Fields of study about such systems are ", "generative programming", " and ", "metaprogramming", ".", "\n", "Types of reuse", "[", "edit", "]", "\n", "Concerning motivation and driving factors, reuse can be:", "\n", "\n", "Opportunistic \u2013 While getting ready to begin a project, the team realizes that there are existing components that they can reuse.", "\n", "Planned \u2013 A team strategically designs components so that they'll be reusable in future projects.", "\n", "\n", "Reuse can be categorized further:", "\n", "\n", "Internal reuse \u2013 A team reuses its own components. This may be a business decision, since the team may want to control a component critical to the project.", "\n", "External reuse \u2013 A team may choose to license a third-party component. Licensing a third-party component typically costs the team 1 to 20 percent of what it would cost to develop internally.", "[4]", " The team must also consider the time it takes to find, learn and integrate the component.", "\n", "\n", "Concerning form or structure of reuse, code can be:", "[5]", "\n", "\n", "Referenced \u2013 The client code contains a reference to reused code, and thus they have distinct life cycles and can have distinct versions.", "\n", "Forked \u2013 The client code contains a local or private copy of the reused code, and thus they share a single life cycle and a single version.", "\n", "\n", "Fork-reuse is often discouraged because it's a form of code duplication, which requires that every bug is corrected in each copy, and enhancements made to reused code need to be manually merged in every copy or they become out-of-date. However, fork-reuse can have benefits such as isolation, flexibility to change the reused code, easier packaging, deployment and version management.", "[5]", "\n", "Systematic", "[", "edit", "]", "\n", "\n", "\n", "\n", "\n", "This section needs expansion", ". ", "You can help by ", "adding to it", ".", " ", "(April 2015)", "\n", "\n", "\n", "\n", "Systematic software reuse is a strategy for increasing productivity and improving quality of the software industry. Although it is simple in concept, successful software reuse implementation is difficult in practice. A reason put forward for this is the dependence of software reuse on the context in which it is implemented. Some problematic issues that needs to be addressed related to systematic software reuse are:", "[6]", "\n", "\n", "a clear and well-defined product vision is an essential foundation to an ", "SPL", ".", "\n", "an evolutionary implementation strategy would be a more pragmatic strategy for the company.", "\n", "there exist a need for continuous management support and leadership to ensure success.", "\n", "an appropriate organisational structure is needed to support SPL engineering.", "\n", "the change of mindset from a project-centric company to a product-oriented company is essential.", "\n", "\n", "Examples", "[", "edit", "]", "\n", "Software libraries", "[", "edit", "]", "\n", "A very common example of code reuse is the technique of using a ", "software library", ". Many common operations, such as converting information among different well-known formats, accessing external storage, interfacing with external programs, or manipulating information (numbers, words, names, locations, dates, etc.) in common ways, are needed by many different programs. Authors of new programs can use the code in a software library to perform these tasks, instead of \"re-inventing the wheel\", by writing fully new code directly in a program to perform an operation. Library implementations often have the benefit of being well-tested, and covering unusual or arcane cases. Disadvantages include the inability to tweak details which may affect performance or the desired output, and the time and cost of acquiring, learning, and configuring the library.", "[7]", "\n", "Design patterns", "[", "edit", "]", "\n", "Main article: ", "Design pattern (computer science)", "\n", "A design pattern is a general solution to a recurring problem. Design patterns are more conceptual than tangible and can be modified to fit the exact need. However, abstract classes and interfaces can be reused to implement certain patterns.", "\n", "Frameworks", "[", "edit", "]", "\n", "Main article: ", "Software framework", "\n", "Developers generally reuse large pieces of software via third-party applications and frameworks. Though frameworks are usually domain-specific and applicable only to families of applications", "[", "citation needed", "]", ".", "\n", "Higher-order function", "[", "edit", "]", "\n", "Main article: ", "Higher-order function", "\n", "In ", "functional programming", " higher-order functions can be used in many cases where design patterns or frameworks were formerly used.", "\n", "Retrocomputing", "[", "edit", "]", "\n", "Retrocomputing", " encompasses reuse of code, simply because retro programs are being run on older computers, or ", "emulators", " for them.", "\n", "Computer security", "[", "edit", "]", "\n", "In ", "computer security", " code-reuse is employed as a software exploit method.", "[8]", " When an attacker is not able to directly input code to modify the control flow of a program, for example in presence of code injection defenses such as ", "W\u2295X", ", he or she can redirect the control flow to code sequences existing in memory.", "\n", "Examples of code-reuse attacks are ", "return-to-libc attack", ", ", "return-oriented programming", ", and jump-oriented programming.", "[8]", "[9]", "\n", "Components", "[", "edit", "]", "\n", "Main article: ", "Software component", "\n", "A component, in an object-oriented extent, represents a set of collaborative classes (or only one class) and its interfaces. The interfaces are responsible for enabling the replacement of components. Reusable components can also be isolated and synchronized between SCM repositories using component source code management technologies (", "CSCM", ").", "\n", "Outside computers", "[", "edit", "]", "\n", "The whole concept of \"code reuse\" can also encompass engineering applications outside software. For instance, ", "parametric modeling", " in ", "computer-aided design", " allows for creating reusable designs. ", "Standardization", " results in creation of interoperable parts that can be then reused in many contexts.", "[", "citation needed", "]", "\n", "Criticism", "[", "edit", "]", "\n", "Code reuse results in ", "dependency", " on the component being reused. Rob Pike opined that \"A little copying is better than a little dependency\". When he joined Google, the company was putting heavy emphasis on code reuse. He believes that Google's ", "codebase", " still suffers from results of that former policy in terms of compilation speed and maintainability.", "[10]", "\n", "See also", "[", "edit", "]", "\n", "\n", "Don't repeat yourself", "\n", "ICSR", "\n", "Inheritance", "\n", "Language binding", "\n", "Not invented here", " (", "antonym", ")", "\n", "Polymorphism", "\n", "Procedural programming", "\n", "Reinventing the wheel", " (", "antonym", ")", "\n", "Reusability", "\n", "Reuse metrics", "\n", "Single source of truth", "\n", "Software framework", "\n", "Virtual inheritance", "\n", "\n", "References", "[", "edit", "]", "\n", "\n", "\n", "^", " ", "Frakes, W.B.; Kyo Kang (July 2005). ", "\"Software Reuse Research: Status and Future\"", " ", "(PDF)", ". ", "IEEE Transactions on Software Engineering", ". ", "31", " (7): 529\u2013536. ", "doi", ":", "10.1109/TSE.2005.85", ".", "\u00a0", "\n", "^", " ", "Lombard Hill Group. ", "\"What Is Software Reuse?\"", ". ", "lombardhill.com", ". Lombard Hill Group", ". Retrieved ", "22 October", " 2014", ".", "\u00a0", "\n", "^", " ", "Lombard Hill Group. ", "\"What Is Software Reuse?\"", ". Retrieved ", "22 October", " 2014", ".", "\u00a0", "\n", "^", " ", "McConnell, Steve (1996). ", "Rapid Development: Taming Wild Software Schedules", ". ", "ISBN", "\u00a0", "978-1-55615-900-8", ".", "\u00a0", "\n", "^ ", "a", " ", "b", " ", "Colombo, F. (2011). ", "\"It's not just reuse\"", ". ", "SharedNow.blogspot", ".", "\u00a0", "\n", "^", " ", "Champman, M.; Van der Merwe, Alta (2008). ", "\"Contemplating Systematic Software Reuse in a Small Project-centric Company\"", ". ", "Proceeding SAICSIT '08 Proceedings of the 2008 annual research conference of the South African Institute of Computer Scientists and Information Technologists on IT research in developing countries: riding the wave of technology", ". ", "doi", ":", "10.1145/1456659.1456662", ". ", "ISBN", "\u00a0", "978-1-60558-286-3", ".", "\u00a0", "\n", "^", " ", "\"Code reuse\"", ". ", "DocForge", ". Archived from ", "the original", " on 2011-07-10", ". Retrieved ", "19 January", " 2018", ".", "\u00a0", "\n", "^ ", "a", " ", "b", " ", "Bletsch, Tyler (2011). ", "\"Code-reuse Attacks: New Frontiers and Defenses\"", ". North Carolina State University. ", "ISBN", "\u00a0", "978-1-124-75297-6", ".", "\u00a0", "\n", "^", " ", "Bletsch, Tyler; Jiang, Xuxian; Freeh, Vince W; Liang, Zhenkai (2011). ", "\"Jump-oriented programming: a new class of code-reuse attack\"", " ", "(PDF)", ". ", "Proceedings of the 6th ACM Symposium on Information, Computer and Communications Security", ". ACM. pp.\u00a030\u201340. ", "doi", ":", "10.1145/1966913.1966919", ". ", "ISBN", "\u00a0", "978-1-4503-0564-8", ".", "\u00a0", "\n", "^", " ", "The Go Programming Language (2015-12-01), ", "Go Proverbs \u2013 Rob Pike \u2013 Gopherfest \u2013 November 18, 2015", ", retrieved ", "26 February", " 2016", "\u00a0", "\n", "\n", "\n", "External links", "[", "edit", "]", "\n", "\n", "ReNews \u2013 an information site about software reuse and domain engineering", "\n", "Software Reuse Tips Article", "\n", "\n\n\n", "\n", "\n", "\n", "\n"], "lastUpdated": " 7 December 2017, at 10:15."}, +{"title": "Zip (file format)", "text": ["For other uses, see ", "Zip", ".", "\n", "\n", "ZIP file format", "\n", "\n", "Filename extensions", "\n", ".zip", ", ", ".zipx", "\u00a0(newer compression algorithms)", "\n", "\n", "\n", "Internet media\u00a0type", "\n", "application/zip", "[1]", "\n", "\n", "\n", "Uniform Type Identifier\u00a0(UTI)", "\n", "com.pkware.zip-archive", "\n", "\n", "\n", "Magic number", "\n", "\n", "\n", "\n", "none", "\n", "PK\\x03\\x04", "\n", "PK\\x05\\x06", " (empty)", "\n", "PK\\x07\\x08", " (spanned)", "\n", "\n", "\n", "\n", "\n", "\n", "Developed\u00a0by", "\n", "Phil Katz", ", ", "PKWARE, Inc.", "\n", "\n", "\n", "Initial release", "\n", "1989", "\n", "\n", "\n", "Latest release", "\n", "\n", "6.3.4", "\n", "(1\u00a0October 2014", "; 3 years ago", "\u00a0(", "2014-10-01", ")", ")", "\n", "\n", "\n", "\n", "Type of format", "\n", "Data compression", "\n", "\n", "\n", "Extended\u00a0to", "\n", "JAR", " ", "(", "EAR", ", ", "RAR (Java)", ", ", "WAR", ")", "\n", "Office Open XML", " (Microsoft)", "\n", "Open Packaging Conventions", "\n", "OpenDocument", " (ODF)", "\n", "XPI", " (Mozilla extensions)", "\n", "\n", "\n", "Standard", "\n", "\n", "APPNOTE", " from PKWARE", "\n", "ISO/IEC 21320-1:2015 (a subset of ZIP file format 6.3.3)", "\n", "\n", "\n", "Open format", "?", "\n", "Yes", "\n", "\n", "\n", "ZIP", " is an ", "archive file format", " that supports ", "lossless data compression", ". A .ZIP file may contain one or more files or directories that may have been compressed. The .ZIP file format permits a number of compression ", "algorithms", ", though ", "DEFLATE", " is the most common. This format was originally created in 1989 by ", "Phil Katz", ", and was first implemented in ", "PKWARE, Inc.", "'s ", "PKZIP", " utility,", "[2]", " as a replacement for the previous ", "ARC", " compression format by Thom Henderson. The .ZIP format is now supported by many software utilities other than PKZIP. Microsoft has included built-in .ZIP support (under the name \"compressed folders\") in versions of ", "Microsoft Windows", " since 1998. Apple has included built-in .ZIP support in ", "Mac\u00a0OS\u00a0X", " 10.3 (via BOMArchiveHelper, now ", "Archive Utility", ") and later. Most ", "free operating systems", " have built in support for .ZIP in similar manners to Windows and Mac OS X.", "\n", ".ZIP files generally use the ", "file extensions", " \".zip\" or \".ZIP\" and the ", "MIME", " media type ", "application/zip", ".", "[1]", " ZIP is used as a base file format by many programs, usually under a different name. When navigating a file system via a user interface, graphical ", "icons", " representing .ZIP files often appear as a document or other object prominently featuring a ", "zipper", ".", "\n", "\n", "\n", "\n", "Contents", "\n", "\n", "\n", "1", " ", "History", "\n", "\n", "1.1", " ", "Version history", "\n", "1.2", " ", "Standardization", "\n", "\n", "\n", "2", " ", "Design", "\n", "\n", "2.1", " ", "Structure", "\n", "2.2", " ", "File headers", "\n", "2.3", " ", "Compression methods", "\n", "2.4", " ", "Encryption", "\n", "2.5", " ", "ZIP64", "\n", "2.6", " ", "Combination with other file formats", "\n", "2.7", " ", "Limits", "\n", "2.8", " ", "Proprietary extensions", "\n", "\n", "2.8.1", " ", "Extra field", "\n", "2.8.2", " ", "Strong encryption controversy", "\n", "\n", "\n", "\n", "\n", "3", " ", "Implementation", "\n", "4", " ", "Legacy", "\n", "5", " ", "See also", "\n", "6", " ", "References", "\n", "7", " ", "External links", "\n", "\n", "\n", "\n", "History", "[", "edit", "]", "\n", "The .ZIP file format was created by ", "Phil Katz", " of ", "PKWARE", "[3]", " and Gary Conway of IDC (Infinity Design Concepts, Inc). They created the format after PKWARE had a ", "lawsuit", " filed against them by Systems Enhancement Associates (SEA) claiming that his archiving products were derivatives of SEA's ", "ARC", " archiving system. SEA also threatened to sue Gary Conway and IDC for the same reasons, but then they found that SEA's work was actually a derivative of IDC's work and several others and opted not to proceed with the lawsuit. The name \"zip\" (meaning \"move at high speed\") was suggested by Katz's friend, Robert Mahoney. They wanted to imply that their product would be faster than ", "ARC", " and other compression formats of the time. The earliest known version of ", ".ZIP File Format Specification", " was first published as part of ", "PKZIP", " 0.9 package under the file APPNOTE.TXT in 1989.", "\n", "The .ZIP file format was released into the ", "public domain", " in 1989.", "[4]", "[5]", "[6]", "[7]", "[8]", "\n", "Version history", "[", "edit", "]", "\n", "The .ZIP File Format Specification has its own version number, which does not necessarily correspond to the version numbers for the PKZIP tool, especially with PKZIP 6 or later. At various times, PKWARE has added preliminary features that allow PKZIP products to extract archives using advanced features, but PKZIP products that create such archives are not made available until the next major release. Other companies or organizations support the PKWARE specifications at their own pace.", "\n", "The .ZIP file format specification is formally named \"APPNOTE - .ZIP File Format Specification\" and it is published on the PKWARE.com website since the late 1990s.", "[9]", " Several versions of the specification were not published. Specifications of some features such as ", "BZIP2", " compression, strong encryption specification and others were published by PKWARE a few years after their creation. The URL of the online specification was changed several times on the PKWARE website.", "\n", "A summary of key advances in various versions of the PKWARE specification:", "\n", "\n", "2.0: (1993)", "[1]", " File entries can be compressed with ", "DEFLATE", " and use traditional PKWARE encryption.", "\n", "2.1: (1996) Deflate64 compression", "\n", "4.5: (2001)", "[10]", " Documented 64-bit zip format.", "\n", "4.6: (2001) BZIP2 compression (not published online until the publication of APPNOTE 5.2)", "\n", "5.0: (2002) ", "DES", ", ", "Triple DES", ", ", "RC2", ", ", "RC4", " supported for encryption (not published online until the publication of APPNOTE 5.2)", "\n", "5.2: (2003)", "[11]", "[12]", " AES encryption support (defined in APPNOTE 5.1 that was not published online), corrected version of RC2-64 supported for encryption.", "\n", "6.1: (2004)", "[13]", " Documented certificate storage.", "\n", "6.2.0: (2004)", "[14]", " Documented Central Directory Encryption.", "\n", "6.3.0: (2006)", "[15]", " Documented Unicode (", "UTF-8", ") filename storage. Expanded list of supported hash, compression (", "LZMA", ", ", "PPMd+", "), encryption algorithms.", "\n", "6.3.1: (2007)", "[16]", " Corrected standard hash values for SHA-256/384/512.", "\n", "6.3.2: (2007)", "[17]", " Documented compression method 97 (", "WavPack", ").", "\n", "6.3.3: (2012)", "[18]", " Document formatting changes to facilitate referencing the PKWARE Application Note from other standards using methods such as the JTC 1 Referencing Explanatory Report (RER) as directed by JTC 1/SC 34 N 1621.", "\n", "6.3.4: (2014)", "[19]", " Updates the PKWARE, Inc. office address.", "\n", "\n", "WinZip", ", starting with version 12.1, uses the extension ", ".zipx", " for .ZIP files that use compression methods newer than DEFLATE; specifically, methods BZip, LZMA, PPMd, Jpeg and Wavpack. The last 2 are applied to appropriate file types when \"Best method\" compression is selected.", "[20]", "[21]", "\n", "Standardization", "[", "edit", "]", "\n", "In April 2010, ", "ISO/IEC JTC 1", " initiated a ballot to determine whether a project should be initiated to create an ISO/IEC International Standard format compatible with .ZIP.", "[22]", " The proposed project, entitled ", "Document Packaging", ", envisaged a .ZIP-compatible 'minimal compressed archive format' suitable for use with a number of existing standards including ", "OpenDocument", ", ", "Office Open XML", " and ", "EPUB", ".", "\n", "In 2015, ISO/IEC 21320-1 \"Document Container File \u2014 Part 1: Core\" was published which states that that \"Document container files are conforming Zip files\".", "[23]", "\n", "ISO/IEC 21320-1:2015 requires the following main restrictions of the ZIP file format:", "\n", "\n", "Files in ZIP archives may only be stored uncompressed, or using the \"deflate\" compression (i.e. compression method may contain the value \"0\" - stored or \"8\" - deflated).", "\n", "The encryption features are prohibited.", "\n", "The digital signature features are prohibited.", "\n", "The \"patched data\" features are prohibited.", "\n", "Archives may not span multiple volumes or be segmented.", "\n", "\n", "Design", "[", "edit", "]", "\n", ".ZIP files are archives that store multiple files. .ZIP allows contained files to be compressed using many different methods, as well as simply storing a file without compressing it. Each file is stored separately, allowing different files in the same archive to be compressed using different methods. Because the files in a .ZIP archive are compressed individually it is possible to extract them, or add new ones, without applying compression or decompression to the entire archive. This contrasts with the format of compressed ", "tar", " files, for which such random-access processing is not easily possible.", "\n", "A directory is placed at the end of a .ZIP file. This identifies what files are in the .ZIP and identifies where in the .ZIP that file is located. This allows .ZIP readers to load the list of files without reading the entire .ZIP archive. .ZIP archives can also include extra data that is not related to the .ZIP archive. This allows for a .ZIP archive to be made into a self-extracting archive (application that decompresses its contained data), by prepending the program code to a .ZIP archive and marking the file as executable. Storing the catalog at the end also makes possible hiding a zipped file by appending it to an innocuous file, such as a GIF image file.", "\n", "The .ZIP format uses a 32-bit CRC algorithm and includes two copies of the directory structure of the archive to provide greater protection against data loss.", "\n", "Structure", "[", "edit", "]", "\n", "\n", "\n", "\n", "\nZIP-64 Internal Layout", "\n", "\n", "\n", "A .ZIP file is correctly identified by the presence of an ", "end of central directory record", " which is located at the end of the archive structure in order to allow the easy appending of new files. If the end of central directory record indicates a non-empty archive, the name of each file or directory within the archive should be specified in a ", "central directory", " entry, along with other metadata about the entry, and an offset into the .ZIP file, pointing to the actual entry data. This allows a file listing of the archive to be performed relatively quickly, as the entire archive does not have to be read to see the list of files. The entries within the .ZIP file also include this information, for redundancy, in a ", "local file header", ". Because zip files may be appended to, only files specified in the central directory at the end of the file are valid. Scanning a ZIP file for local file headers is invalid (except in the case of corrupted archives), as the central directory may declare that some files have been deleted and other files have been updated.", "\n", "For example, we may start with a .ZIP file that contains files A, B and C. File B is then deleted and C updated. This may be achieved by just appending a new file C to the end of the original ZIP file and adding a new central directory that only lists file A and the new file C. When ZIP was first designed, transferring files by floppy disk was common, yet writing to disks was very time consuming. If you had a large zip file, possibly spanning multiple disks, and only needed to update a few files, rather than reading and re-writing all the files, it would be substantially faster to just read the old central directory, append the new files then append an updated central directory.", "\n", "The order of the file entries in the central directory need not coincide with the order of file entries in the archive.", "\n", "Each entry stored in a ZIP archive is introduced by a ", "local file header", " with information about the file such as the comment, file size and file name, followed by optional \"extra\" data fields, and then the possibly compressed, possibly encrypted file data. The \"Extra\" data fields are the key to the extensibility of the .ZIP format. \"Extra\" fields are exploited to support the ZIP64 format, WinZip-compatible AES encryption, file attributes, and higher-resolution NTFS or Unix file timestamps. Other extensions are possible via the \"Extra\" field. .ZIP tools are required by the specification to ignore Extra fields they do not recognize.", "\n", "The .ZIP format uses specific 4-byte \"signatures\" to denote the various structures in the file. Each file entry is marked by a specific signature. The end of central directory record is indicated with its specific signature, and each entry in the central directory starts with the 4-byte ", "central file header signature", ".", "\n", "There is no BOF or EOF marker in the .ZIP specification. Conventionally the first thing in a .ZIP file is a .ZIP entry, which can be identified easily by its ", "local file header signature", ". However, this is not necessarily the case, as this not required by the .ZIP specification - most notably, a self-extracting archive will begin with an executable file header.", "\n", "Tools that correctly read .ZIP archives must scan for the end of central directory record signature, and then, as appropriate, the other, indicated, central directory records. They must not scan for entries from the top of the ZIP file, because only the central directory specifies where a file chunk starts. Scanning could lead to false positives, as the format does not forbid other data to be between chunks, nor file data streams from containing such signatures. However, tools that attempt to recover data from damaged .ZIP archives will most likely scan the archive for local file header signatures; this is made more difficult by the fact that the compressed size of a file chunk may be stored after the file chunk, making sequential processing difficult.", "\n", "Most of the signatures end with the short integer 0x4b50, which is stored in little-endian ordering. Viewed as an ASCII string this reads \"PK\", the initials of the inventor Phil Katz. Thus, when a .ZIP file is viewed in a text editor the first two bytes of the file are usually \"PK\". (DOS, OS/2 and Windows self-extracting ZIPs have an ", "EXE", " before the ZIP so start with \"MZ\"; self-extracting ZIPs for other operating systems may similarly be preceded by executable code for extracting the archive's content on that platform.)", "\n", "The .ZIP specification also supports spreading archives across multiple filesystem files. Originally intended for storage of large .ZIP files across multiple ", "floppy disks", ", this feature is now used for sending .ZIP archives in parts over email, or over other transports or removable media.", "\n", "The ", "FAT filesystem", " of DOS has a timestamp resolution of only two seconds; .ZIP file records mimic this. As a result, the built-in timestamp resolution of files in a .ZIP archive is only two seconds, though extra fields can be used to store more precise timestamps. The .ZIP format has no notion of ", "time zone", ", so timestamps are only meaningful if it is known what time zone they were created in.", "\n", "In September 2007, PKWARE released a revision of the .ZIP specification providing for the storage of file names using ", "UTF-8", ", finally adding Unicode compatibility to .ZIP.", "[24]", "\n", "File headers", "[", "edit", "]", "\n", "All multi-byte values in the header are stored in ", "little-endian", " byte order. All length fields count the length in bytes.", "\n", "\n", "Local file header", "\n", "\n", "Offset", "\n", "Bytes", "\n", "Description", "[24]", "\n", "\n", "\n", "0", "\n", "4", "\n", "Local file header signature = 0x04034b50 (read as a little-endian number)", "\n", "\n", "\n", "4", "\n", "2", "\n", "Version needed to extract (minimum)", "\n", "\n", "\n", "6", "\n", "2", "\n", "General purpose bit flag", "\n", "\n", "\n", "8", "\n", "2", "\n", "Compression method", "\n", "\n", "\n", "10", "\n", "2", "\n", "File last modification time", "\n", "\n", "\n", "12", "\n", "2", "\n", "File last modification date", "\n", "\n", "\n", "14", "\n", "4", "\n", "CRC-32", "\n", "\n", "\n", "18", "\n", "4", "\n", "Compressed size", "\n", "\n", "\n", "22", "\n", "4", "\n", "Uncompressed size", "\n", "\n", "\n", "26", "\n", "2", "\n", "File name length (", "n", ")", "\n", "\n", "\n", "28", "\n", "2", "\n", "Extra field length (", "m", ")", "\n", "\n", "\n", "30", "\n", "n", "\n", "File name", "\n", "\n", "\n", "30+", "n", "\n", "m", "\n", "Extra field", "\n", "\n", "\n", "The extra field contains a variety of optional data such as OS-specific attributes. It is divided into chunks, each with a 16-bit ID code and a 16-bit length.", "\n", "This is immediately followed by the compressed data.", "\n", "If the bit at offset 3 (0x08) of the general-purpose flags field is set, then the CRC-32 and file sizes are not known when the header is written. The fields in the local header are filled with zero, and the CRC-32 and size are appended in a 12-byte structure (optionally preceded by a 4-byte signature) immediately after the compressed data:", "\n", "\n", "Data descriptor", "\n", "\n", "Offset", "\n", "Bytes", "\n", "Description", "[24]", "\n", "\n", "\n", "0", "\n", "0/4", "\n", "Optional", " data descriptor signature = 0x08074b50", "\n", "\n", "\n", "0/4", "\n", "4", "\n", "CRC-32", "\n", "\n", "\n", "4/8", "\n", "4", "\n", "Compressed size", "\n", "\n", "\n", "8/12", "\n", "4", "\n", "Uncompressed size", "\n", "\n", "\n", "The central directory entry is an expanded form of the local header:", "\n", "\n", "Central directory file header", "\n", "\n", "Offset", "\n", "Bytes", "\n", "Description", "[24]", "\n", "\n", "\n", "0", "\n", "4", "\n", "Central directory file header signature = 0x02014b50", "\n", "\n", "\n", "4", "\n", "2", "\n", "Version made by", "\n", "\n", "\n", "6", "\n", "2", "\n", "Version needed to extract (minimum)", "\n", "\n", "\n", "8", "\n", "2", "\n", "General purpose bit flag", "\n", "\n", "\n", "10", "\n", "2", "\n", "Compression method", "\n", "\n", "\n", "12", "\n", "2", "\n", "File last modification time", "\n", "\n", "\n", "14", "\n", "2", "\n", "File last modification date", "\n", "\n", "\n", "16", "\n", "4", "\n", "CRC-32", "\n", "\n", "\n", "20", "\n", "4", "\n", "Compressed size", "\n", "\n", "\n", "24", "\n", "4", "\n", "Uncompressed size", "\n", "\n", "\n", "28", "\n", "2", "\n", "File name length (", "n", ")", "\n", "\n", "\n", "30", "\n", "2", "\n", "Extra field length (", "m", ")", "\n", "\n", "\n", "32", "\n", "2", "\n", "File comment length (", "k", ")", "\n", "\n", "\n", "34", "\n", "2", "\n", "Disk number where file starts", "\n", "\n", "\n", "36", "\n", "2", "\n", "Internal file attributes", "\n", "\n", "\n", "38", "\n", "4", "\n", "External file attributes", "\n", "\n", "\n", "42", "\n", "4", "\n", "Relative offset of local file header. This is the number of bytes between the start of the first disk on which the file occurs, and the start of the local file header. This allows software reading the central directory to locate the position of the file inside the .ZIP file.", "\n", "\n", "\n", "46", "\n", "n", "\n", "File name", "\n", "\n", "\n", "46+", "n", "\n", "m", "\n", "Extra field", "\n", "\n", "\n", "46+", "n", "+", "m", "\n", "k", "\n", "File comment", "\n", "\n", "\n", "After all the central directory entries comes the end of central directory (EOCD) record, which marks the end of the .ZIP file:", "\n", "\n", "End of central directory record (EOCD)", "\n", "\n", "Offset", "\n", "Bytes", "\n", "Description", "[24]", "\n", "\n", "\n", "0", "\n", "4", "\n", "End of central directory signature = 0x06054b50", "\n", "\n", "\n", "4", "\n", "2", "\n", "Number of this disk", "\n", "\n", "\n", "6", "\n", "2", "\n", "Disk where central directory starts", "\n", "\n", "\n", "8", "\n", "2", "\n", "Number of central directory records on this disk", "\n", "\n", "\n", "10", "\n", "2", "\n", "Total number of central directory records", "\n", "\n", "\n", "12", "\n", "4", "\n", "Size of central directory (bytes)", "\n", "\n", "\n", "16", "\n", "4", "\n", "Offset of start of central directory, relative to start of archive", "\n", "\n", "\n", "20", "\n", "2", "\n", "Comment length (", "n", ")", "\n", "\n", "\n", "22", "\n", "n", "\n", "Comment", "\n", "\n", "\n", "This ordering allows a .ZIP file to be created in one pass, but it is usually decompressed by first reading the central directory at the end.", "\n", "Compression methods", "[", "edit", "]", "\n", "The .ZIP File Format Specification documents the following compression methods: Store (no compression), Shrink, Reduce (levels 1-4), Implode, Deflate, Deflate64, ", "bzip2", ", ", "LZMA", " (EFS), ", "WavPack", ", and ", "PPMd", ". The most commonly used compression method is ", "DEFLATE", ", which is described in IETF ", "RFC 1951", ".", "\n", "Compression methods mentioned, but not documented in detail in the specification include: PKWARE Data Compression Library (DCL) Implode, IBM TERSE, and IBM LZ77 z Architecture (PFS). A \"Tokenize\" method was reserved for a third party, but support was never added.", "[", "citation needed", "]", "\n", "Encryption", "[", "edit", "]", "\n", ".ZIP supports a simple ", "password", "-based ", "symmetric encryption", " system, which is documented in the .ZIP specification, and known to be seriously flawed. In particular, it is vulnerable to ", "known-plaintext attacks", ", which are in some cases made worse by poor implementations of ", "random-number generators", ".", "[25]", "\n", "New features including new ", "compression", " and ", "encryption", " (e.g. ", "AES", ") methods have been documented in the .ZIP File Format Specification since version 5.2. A ", "WinZip", "-developed AES-based standard is used also by ", "7-Zip", " and ", "Xceed", ", but some vendors use other formats.", "[26]", " PKWARE SecureZIP also supports RC2, RC4, DES, Triple DES encryption methods, Digital Certificate-based encryption and authentication (", "X.509", "), and archive header encryption.", "[27]", "\n", "File name", " ", "encryption", " is introduced in .ZIP File Format Specification 6.2, which encrypts metadata stored in Central Directory portion of an archive, but Local Header sections remain unencrypted. A compliant archiver can falsify the Local Header data when using Central Directory Encryption. As of version 6.2 of the specification, the Compression Method and Compressed Size fields within Local Header are not yet masked.", "\n", "ZIP64", "[", "edit", "]", "\n", "The original .ZIP format had a 4\u00a0GiB limit on various things (uncompressed size of a file, compressed size of a file and total size of the archive), as well as a limit of 65535 entries in a .ZIP archive. In version 4.5 of the specification (which is not the same as v4.5 of any particular tool), PKWARE introduced the \"ZIP64\" format extensions to get around these limitations, increasing the limitation to 16\u00a0", "EiB", " (2", "64", " bytes). In essence, it uses a \"normal\" central directory entry for a file, followed by an optional \"zip64\" directory entry, which has the larger fields.", "[28]", "\n", "The File Explorer in Windows XP does not support ZIP64, but the Explorer in Windows Vista does.", "[", "citation needed", "]", " Likewise, some extension libraries support ZIP64, such as DotNetZip, QuaZIP", "[29]", " and IO::Compress::Zip in Perl. ", "Python", "'s built-in zipfile supports it since 2.5 and defaults to it since 3.4.", "[30]", " OpenJDK's built-in java.util.zip supports ZIP64 from version ", "Java 7", ".", "[31]", " ", "Android", " Java API support ZIP64 since Android 6.0.", "[32]", " OS X Yosemite does support the creation of ZIP64 archives, but does not support unzipping these archives using the graphical Archive Utility.", "[", "citation needed", "]", "\n", "Combination with other file formats", "[", "edit", "]", "\n", "The .ZIP file format allows for a comment containing up to 65,535 bytes of data to occur at the end of the file after the central directory.", "[24]", " Also, because the central directory specifies the offset of each file in the archive with respect to the start, it is possible for the first file entry to start at an offset other than zero, although some tools, for example gzip, will not process archive files that don't start with a file entry at offset zero.", "\n", "This allows arbitrary data to occur in the file both before and after the .ZIP archive data, and for the archive to still be read by a .ZIP application. A side-effect of this is that it is possible to author a file that is both a working .ZIP archive and another format, provided that the other format tolerates arbitrary data at its end, beginning, or middle. ", "Self-extracting archives", " (SFX), of the form supported by WinZip, take advantage of this\u2014they are .exe files that conform to the PKZIP AppNote.txt specification and can be read by compliant zip tools or libraries.", "\n", "This property of the .ZIP format, and of the JAR format which is a variant of .ZIP, can be exploited to hide harmful Java classes inside a seemingly harmless file, such as a GIF image uploaded to the web. This so-called ", "GIFAR", " exploit has been demonstrated as an effective attack against web applications such as Facebook.", "[33]", "\n", "Limits", "[", "edit", "]", "\n", "The minimum size of a .ZIP file is 22 bytes. Such ", "empty zip file", " contains only an End of Central Directory Record (EOCD):", "\n", "[0x50,0x4B,0x05,0x06,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00]", "\n", "The maximum size for both the archive file and the individual files inside it is 4,294,967,295 bytes (2", "32", "\u22121 bytes, or 4 GiB minus 1 byte) for standard .ZIP, and 18,446,744,073,709,551,615 bytes (2", "64", "\u22121 bytes, or 16 EiB minus 1 byte) for ZIP64.", "[34]", "\n", "Proprietary extensions", "[", "edit", "]", "\n", "Extra field", "[", "edit", "]", "\n", ".ZIP file format includes the extra field facility within file headers, which can be used to store extra data not defined by existing .ZIP specifications, and allow compliant archivers not recognizing the fields to safely skip the fields. Header IDs 0\u201331 are reserved for use by PKWARE. The remaining IDs can be used by third party vendors for proprietary usage.", "\n", "Strong encryption controversy", "[", "edit", "]", "\n", "When ", "WinZip", " 9.0 public beta was released in 2003, WinZip introduced its own ", "AES-256", " encryption, using a different file format, along with the documentation for the new specification.", "[35]", " The encryption standards themselves were not ", "proprietary", ", but PKWARE had not updated APPNOTE.TXT to include Strong Encryption Specification (SES) since 2001, which had been used by PKZIP versions 5.0 and 6.0. WinZip technical consultant Kevin Kearney and ", "StuffIt", " product manager Mathew Covington accused PKWARE of withholding SES, but PKZIP chief technology officer Jim Peterson claimed that certificate-based encryption was still incomplete.", "\n", "In another controversial move, PKWare applied for a patent on 16 July 2003 describing a method for combining .ZIP and strong encryption to create a secure file.", "[36]", "\n", "In the end, PKWARE and WinZip agreed to support each other's products. On 21 January 2004, PKWARE announced the support of WinZip-based AES compression format.", "[37]", " In a later version of WinZip beta, it was able to support SES-based .ZIP files.", "[38]", " PKWARE eventually released version 5.2 of the .ZIP File Format Specification to the public, which documented SES. The ", "Free Software", " project ", "7-Zip", " also supports AES in .ZIP files (as does its ", "POSIX", " ", "port", " ", "p7zip", ").", "\n", "When using AES encryption under WinZip, the compression method is always set to 99, with the actual compression method stored in AES extra data field.", "[39]", " In contrast, Strong Encryption Specification stores the compression method in the basic file header segment of Local Header and Central Directory, unless Central Directory Encryption is used to mask/encrypt metadata.", "\n", "Implementation", "[", "edit", "]", "\n", "There are numerous .ZIP tools available, and numerous .ZIP libraries for various programming environments; licenses used include ", "proprietary", " and ", "free software", ". For instance, ", "WinZip", " is one well-known .ZIP tool running on Windows, and ", "WinRAR", ", ", "Info-ZIP", ", ", "7-Zip", ", ", "PeaZip", " and ", "B1 Free Archiver", " are other tools, available on various platforms. Some of those tools have library or programmatic interfaces.", "\n", "Some development libraries licensed under open source agreement are ", "libzip", " and ", "Info-ZIP", ". For Java: ", "Java Platform, Standard Edition", " contains the package \"java.util.zip\" to handle standard .ZIP files; the Zip64File library specifically supports large files (larger than 4\u00a0GB) and treats .ZIP files using random access; and the ", "Apache Ant", " tool contains a more complete implementation released under the ", "Apache Software License", ".", "\n", "The ", "Info-ZIP", " implementations of the .ZIP format adds support for Unix filesystem features, such as user and group IDs, file permissions, and support for symbolic links. The ", "Apache Ant", " implementation is aware of these to the extent that it can create files with predefined Unix permissions. The Info-ZIP implementations also know how to use the error correction capabilities built into the .ZIP compression format. Some programs do not, and will fail on a file that has errors.", "\n", "The Info-ZIP Windows tools also support ", "NTFS", " ", "filesystem", " permissions, and will make an attempt to translate from NTFS permissions to Unix permissions or vice versa when extracting files. This can result in potentially unintended combinations, e.g. ", ".exe", " files being created on NTFS volumes with executable permission denied.", "\n", "Versions of Microsoft Windows have included support for .ZIP compression in Explorer since the ", "Microsoft Plus!", " pack was released for Windows 98. Microsoft calls this feature \"Compressed Folders\".", "[", "citation needed", "]", " Not all .ZIP features are supported by the Windows Compressed Folders capability. For example, AES Encryption, split or spanned archives, and Unicode entry encoding are not known to be readable or writable by the Compressed Folders feature in Windows versions earlier than Windows 8.", "\n", "Microsoft Office started using the zip archive format in 2006 for their ", "Office Open XML", " .docx, .xlsx, .pptx, etc. files, which became the default file format with ", "Microsoft Office 2007", ".", "\n", "Legacy", "[", "edit", "]", "\n", "There are numerous other standards and formats using \"zip\" as part of their name. For example, zip is distinct from ", "gzip", ", and the latter is defined in an ", "IETF", " ", "RFC", " (", "RFC 1952", "). Both zip and gzip primarily use the ", "DEFLATE", " algorithm for compression. Likewise, the ", "ZLIB", " format (IETF ", "RFC 1950", ") also uses the DEFLATE compression algorithm, but specifies different headers for error and consistency checking. Other common, similarly named formats and programs with different native formats include ", "7-Zip", ", ", "bzip2", ", and ", "rzip", ".", "\n", "See also", "[", "edit", "]", "\n", "\n", "Comparison of file archivers", "\n", "Comparison of archive formats", "\n", "List of archive formats", "\n", "LZW", "\n", "\n", "References", "[", "edit", "]", "\n", "\n", "\n", "\n", "^ ", "a", " ", "b", " ", "c", " ", "Registration of a new MIME Content-Type/Subtype - application/zip", ", ", "IANA", ", 20 July 1993", ", retrieved ", "5 January", " 2012", "\u00a0", "\n", "^", " ", "\"Phillip Katz, Computer Software Pioneer, 37\"", ". ", "The New York Times", ". 1 May 2000", ". Retrieved ", "14 June", " 2009", ".", "\u00a0", "\n", "^", " ", "\"The Rise and Fall of a Software Star; Phil Katz Loved Code - and Liquor\"", ". wsj. 1997-08-15.", "\u00a0", "\n", "^", " ", "Brian Livingston (8 September 2003), ", "PKZip Must Open Up", ", retrieved ", "5 January", " 2012", ", ", "The ZIP file format is given freely into the public domain and can be claimed neither legally nor morally by any individual, entity or company", "\u00a0", "\n", "^", " ", "Where Did Zip Files Come From Anyway?", ", Infinity Design Concepts, Inc.", ", retrieved ", "2012-01-05", "\u00a0", "\n", "^", " ", "Press Release", ", 1989", ", retrieved ", "5 January", " 2012", "\u00a0", "\n", "^", " ", "Our Founder - Phil Katz", ", ", "PKWARE", ", archived from ", "the original", " on 2010-10-01", ", retrieved ", "5 January", " 2012", "\u00a0", "\n", "^", " ", "Gareth Horton; Rob Weir; Alex Brown (2 November 2010), ", "sc34-wg1", ", retrieved ", "5 January", " 2012", "\u00a0", "\n", "^", " ", ".ZIP Application Note", ", retrieved ", "2012-07-20", "\u00a0", "\n", "^", " ", "File: APPNOTE.TXT - .ZIP File Format Specification Version: 4.5 Revised: 11/01/2001", ", 3 December 2001, archived from ", "the original", " on 3 December 2001", ", retrieved ", "21 April", " 2012", "\u00a0", "\n", "^", " ", "APPNOTE.TXT - .ZIP File Format Specification, Version: 5.2 - Notification of Change", ", 16 July 2003", ", retrieved ", "5 January", " 2012", "\u00a0", "\n", "^", " ", "File: APPNOTE.TXT - .ZIP File Format Specification Version: 5.2 - Notification of Change \u2013 Revised: 06/02/2003", ", 2 July 2003, archived from ", "the original", " on 2 July 2003", ", retrieved ", "21 April", " 2012", "\u00a0", "\n", "^", " ", "File: APPNOTE - .ZIP File Format Specification Version: 6.1.0 - Notification of Change \u2013 Revised: 01/20/2004", ", 19 August 2004, archived from ", "the original", " on 19 August 2004", ", retrieved ", "21 April", " 2012", "\u00a0", "\n", "^", " ", "APPNOTE.TXT - .ZIP File Format Specification, Version: 6.2.0 - Notification of Change", ", 26 April 2004", ", retrieved ", "5 January", " 2012", "\u00a0", "\n", "^", " ", "APPNOTE.TXT - .ZIP File Format Specification, Version: 6.3.0", ", 29 September 2006", ", retrieved ", "5 January", " 2012", "\u00a0", "\n", "^", " ", "File: APPNOTE.TXT - .ZIP File Format Specification Version: 6.3.1 Revised: April 11, 2007", ", 14 May 2007, archived from ", "the original", " on 14 May 2007", ", retrieved ", "21 April", " 2012", "\u00a0", "\n", "^", " ", "File: APPNOTE.TXT - .ZIP File Format Specification Version: 6.3.2 Revised: September 28, 2007", ", 28 September 2007, archived from ", "the original", " on 28 September 2007", ", retrieved ", "21 April", " 2012", "\u00a0", "\n", "^", " ", "File: APPNOTE.TXT - .ZIP File Format Specification Version: 6.3.3 Revised: September 01, 2012", ", September 2012", "\u00a0", "\n", "^", " ", "File: APPNOTE.TXT - .ZIP File Format Specification Version: 6.3.4 Revised: October 1, 2014", ", 1 October 2014", "\u00a0", "\n", "^", " ", "\"Additional Compression Methods Specification\"", ". ", "WinZip", ". ", "Mansfield, CT", ": ", "WinZip", " Computing, S.L. 19 May 2009", ". Retrieved ", "2009-05-24", ".", "\u00a0", "\n", "^", " ", "\"What is a Zipx File?\"", ". ", "Winzip: Knowledgebase", ". ", "Mansfield, CT", ": ", "WinZip", " Computing, S.L", ". 13 August 2010", ". Retrieved ", "17 August", " 2010", ".", "\u00a0", "\n", "^", " ", "[1]", "[", "dead link", "]", "\n", "^", " ", "\"ISO/IEC 21320-1:2015 Document Container File \u2014 Part 1: Core\"", ". ITTF. 2015.", "\u00a0", "\n", "^ ", "a", " ", "b", " ", "c", " ", "d", " ", "e", " ", "f", " ", "\"File\u00a0: APPNOTE.TXT - .ZIP File Format Specification\u00a0: Version: 6.3.4\"", " ", "(TXT)", ". ", "Pkware.com", ". Retrieved ", "2017-09-09", ".", "\u00a0", "\n", "^", " ", "Stay, Michael. ", "\"", "\"", "ZIP Attacks with Reduced Known Plaintext", "\"", "\"", " ", "(PDF)", ". ", "Math.ucr.edu", ". Retrieved ", "2017-09-09", ".", "\u00a0", "\n", "^", " ", "\"AES Encryption Information: Encryption Specification AE-1 and AE-2\"", ". ", "Winzip.com", ". Retrieved ", "2017-09-09", ".", "\u00a0", "\n", "^", " ", "\"APPNOTE - PKZIP/SecureZIP - PKWARE Support Site\"", ". ", "Pkware.com", ". Retrieved ", "9 September", " 2017", ".", "\u00a0", "\n", "^", " ", "\"File\u00a0: APPNOTE.TXT - .ZIP File Format Specification\u00a0: Version: 6.3.4\"", " ", "(TXT)", ". ", "Pkware.cachefly.net", ". Retrieved ", "2017-09-09", ".", "\u00a0", "\n", "^", " ", "\"QuaZIP changes\"", ". 22 January 2014", ". Retrieved ", "2014-01-25", ".", "\u00a0", "\n", "^", " ", "\"Python enhancement: Use allowZip64=True by default (3.4)\"", ". Retrieved ", "2014-05-06", ".", "\u00a0", "\n", "^", " ", "Shen, Xueming (17 April 2009). ", "\"ZIP64, The Format for > 4G Zipfile, Is Now Supported\"", ". ", "Xueming Shen's Blog", ". ", "Sun Microsystems", ". Retrieved ", "27 Sep", " 2010", ".", "\u00a0", "\n", "^", " ", "\"Sign in - Google Accounts\"", ". ", "code.google.com", ". Retrieved ", "9 September", " 2017", ".", "\u00a0", "\n", "^", " ", "McMillan, Robert. ", "\"A photo that can steal your online credentials\"", ". ", "Infoworld.com", ". Retrieved ", "9 September", " 2017", ".", "\u00a0", "\n", "^", " ", "\"ZipArchive: Zip64 Format: Crossing the Limits of File Sizes and Number of Files and Segments\"", ". ", "Artpol-software.com", ". Retrieved ", "9 September", " 2017", ".", "\u00a0", "\n", "^", " ", "\"WinZip \u2013 AES Encryption Information\"", ". ", "Winzip.com", ". Retrieved ", "2017-09-09", ".", "\u00a0", "\n", "^", " ", "[2]", "[", "dead link", "]", "\n", "^", " ", "\"Software makers patch Zip tiff\"", ". ", "News.com", ". Retrieved ", "9 September", " 2017", ".", "\u00a0", "\n", "^", " ", "John Leyden. ", "\"Zip file encryption compromise thrashed out\"", ". ", "Theregister.co.uk", ". Retrieved ", "9 September", " 2017", ".", "\u00a0", "\n", "^", " ", "\"AES Encryption Information: Encryption Specification AE-1 and AE-2\"", ". ", "Winzip.com", ". Retrieved ", "2017-09-09", ".", "\u00a0", "\n", "\n", "\n", "\n", "External links", "[", "edit", "]", "\n", "\n", ".ZIP Application Note", " - landing page for PKWARE's current and historical .ZIP File", "\n", "Inside Microsoft C article citing Gary Conway as co-inventor of zip files", "\n", "Microsoft article citing Gary Conway as co-inventor of zip files", "\n", "\n", "Format Specifications.", "\n", "\n", "Structure of PKZip file", " - graphical tables", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "v", "\n", "t", "\n", "e", "\n", "\n", "\n", "Archive formats", "\n", "\n", "\n", "\n", "Archiving only", "\n", "\n", "\n", "\n", "ar", "\n", "cpio", "\n", "shar", "\n", "tar", "\n", "LBR", "\n", "BagIt", "\n", "WAD", "\n", "\n", "\n", "\n", "\n", "\n", "Compression only", "\n", "\n", "\n", "\n", "bzip2", "\n", "gzip", "\n", "lzip", "\n", "LZMA", "\n", "lzop", "\n", "xz", "\n", "SQ", "\n", "compress", "\n", "\n", "\n", "\n", "\n", "\n", "Archiving and compression", "\n", "\n", "\n", "\n", "7z", "\n", "ACE", "\n", "ARC", "\n", "ARJ", "\n", "B1", "\n", "Cabinet", "\n", "cfs", "\n", "cpt", "\n", "dar", "\n", "DGCA", "\n", ".dmg", "\n", ".egg", "\n", "kgb", "\n", "LHA", "\n", "LZX", "\n", "MPQ", "\n", "PEA", "\n", "RAR", "\n", "rzip", "\n", "sit", "\n", "SQX", "\n", "UDA", "\n", "Xar", "\n", "zoo", "\n", "ZIP", "\n", "ZPAQ", "\n", "\n", "\n", "\n", "\n", "\n", "Software packaging and distribution", "\n", "\n", "\n", "\n", "APK", "\n", "deb", "\n", "Package (macOS)", "\n", "RPM", "\n", "MSI", "\n", "JAR", "\n", "\n", "WAR", "\n", "Java RAR", "\n", "EAR", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "Document packaging and distribution", "\n", "\n", "\n", "\n", "OEB Package Format", "\n", "OEBPS Container Format", "\n", "Open Packaging Conventions", "\n", "PAQ", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "Comparison", "\n", "List", "\n", " ", "Category", "\n", "\n", "\n", "\n", "\n", "\n", "\n\n\n", "\n", "\n", "\n", "\n"], "lastUpdated": " 7 January 2018, at 23:29."}, +{"title": "Style sheet (web development)", "text": ["\n", "\n", "\n", "\n", "\n", "\n", "This article ", "needs additional citations for ", "verification", ". ", "Please help ", "improve this article", " by ", "adding citations to reliable sources", ". Unsourced material may be challenged and removed.", " ", "(March 2014)", " ", "(", "Learn how and when to remove this template message", ")", "\n", "\n", "\n", "\n", "See also: ", "Cascading Style Sheets", "\n", "\n", "\n", "Cascading Style Sheets", "\n", "\n", "\n", "\n", "\n", "Style sheet", "\n", "CSS Zen Garden", "\n", "The Zen of CSS Design", "\n", "CSS box model", "\n", "Internet Explorer box model bug", "\n", "CSSTidy", "\n", "Dynamic CSS", "\n", "\n", "\n", "\n", "\n", "Comparisons", "\n", "\n", "\n", "\n", "\n", "Layout engines", "\n", "Stylesheet languages", "\n", "\n", "\n", "\n", "\n", "Web design", "\n", "\n", "\n", "\n", "\n", "Tableless", "\n", "\"Holy grail\"", "\n", "Responsive", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\u00a0", "Cascading Style Sheets", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "v", "\n", "t", "\n", "e", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "HTML", "\n", "\n", "\n", "\n", "\n", "HTML", "\n", "Dynamic HTML", "\n", "HTML5", "\n", "\n", "audio", "\n", "canvas", "\n", "video", "\n", "\n", "\n", "XHTML", "\n", "\n", "Basic", "\n", "Mobile Profile", "\n", "C-HTML", "\n", "\n", "\n", "HTML element", "\n", "\n", "span and div", "\n", "\n", "\n", "HTML attribute", "\n", "HTML frame", "\n", "HTML editor", "\n", "Character encodings", "\n", "\n", "Unicode", "\n", "\n", "\n", "Language code", "\n", "Document Object Model", "\n", "Browser Object Model", "\n", "Style sheets", "\n", "\n", "CSS", "\n", "\n", "\n", "Font family", "\n", "Web colors", "\n", "HTML scripting", "\n", "JavaScript", "\n", "\n", "WebGL", "\n", "WebCL", "\n", "\n", "\n", "W3C", "\n", "\n", "Validator", "\n", "\n", "\n", "WHATWG", "\n", "Quirks mode", "\n", "Web storage", "\n", "Web browser (layout) engine", "\n", "\n", "\n", "\n", "\n", "Comparisons", "\n", "\n", "\n", "\n", "\n", "Document markup languages", "\n", "Web browsers", "\n", "HTML", "\n", "Non-standard HTML", "\n", "HTML5", "\n", "\n", "canvas", "\n", "media", "\n", "\n", "\n", "XHTML", "\n", "\n", "1.1", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "v", "\n", "t", "\n", "e", "\n", "\n", "\n", "\n", "\n", "\n", "A web ", "style sheet", " is a form of ", "separation of presentation and content", " for ", "web design", " in which the ", "markup", " (i.e., ", "HTML", " or ", "XHTML", ") of a ", "webpage", " contains the page's semantic content and structure, but does not define its visual layout (style). Instead, the style is defined in an external style sheet file using a ", "style sheet language", " such as ", "CSS", " or ", "XSLT", ". This design approach is identified as a \"separation\" because it largely supersedes the antecedent methodology in which a page's markup defined both style and structure.", "\n", "The philosophy underlying this methodology is a specific case of ", "separation of concerns", ".", "\n", "\n", "\n", "\n", "Contents", "\n", "\n", "\n", "1", " ", "Benefits", "\n", "\n", "1.1", " ", "Speed", "\n", "1.2", " ", "Maintainability", "\n", "1.3", " ", "Accessibility", "\n", "1.4", " ", "Customization", "\n", "1.5", " ", "Consistency", "\n", "1.6", " ", "Portability", "\n", "\n", "\n", "2", " ", "Practical disadvantages today", "\n", "\n", "2.1", " ", "Narrow adoption without the parsing and generation tools", "\n", "\n", "\n", "3", " ", "See also", "\n", "4", " ", "References", "\n", "5", " ", "External links", "\n", "\n", "\n", "\n", "Benefits", "[", "edit", "]", "\n", "Separation of style and content has advantages,", "[1]", "[2]", " but has only become practical after improvements in popular ", "web browsers", "' CSS implementations.", "\n", "Speed", "[", "edit", "]", "\n", "Overall, users experience of a site utilising style sheets will generally be quicker than sites that don\u2019t use the technology. \u2018Overall\u2019 as the first page will probably load more slowly \u2013 because the style sheet AND the content will need to be transferred. Subsequent pages will load faster because no style information will need to be downloaded \u2013 the CSS file will already be in the browser\u2019s cache.", "\n", "Maintainability", "[", "edit", "]", "\n", "Holding all the presentation styles in one file can reduce the maintenance time and reduces the chance of error, thereby improving presentation consistency. For example, the font color associated with a type of text element may be specified \u2014 and therefore easily modified \u2014 throughout an entire website simply by changing one short string of characters in a single file. The alternate approach, using styles embedded in each individual page, would require a cumbersome, time consuming, and error-prone edit of every file.", "\n", "Accessibility", "[", "edit", "]", "\n", "Sites that use CSS with either XHTML or HTML are easier to tweak so that they appear similar in different browsers (", "Internet Explorer", ", ", "Mozilla Firefox", ", ", "Opera", ", ", "Safari", ", etc.).", "\n", "Sites using CSS \"", "degrade gracefully", "\" in browsers unable to display graphical content, such as ", "Lynx", ", or those so very old that they cannot use CSS. Browsers ignore CSS that they do not understand, such as CSS 3 statements. This enables a wide variety of ", "user agents", " to be able to access the content of a site even if they cannot render the style sheet or are not designed with graphical capability in mind. For example, a browser using a ", "refreshable braille display", " for output could disregard layout information entirely, and the user would still have access to all page content.", "\n", "Customization", "[", "edit", "]", "\n", "If a page's layout information is stored externally, a user can decide to disable the layout information entirely, leaving the site's bare content still in a readable form. Site authors may also offer multiple style sheets, which can be used to completely change the appearance of the site without altering any of its content.", "\n", "Most modern web browsers also allow the user to define their own style sheet, which can include rules that override the author's layout rules. This allows users, for example, to bold every hyperlink on every page they visit.", "\n", "Consistency", "[", "edit", "]", "\n", "Because the semantic file contains only the meanings an author intends to convey, the styling of the various elements of the document's content is very consistent. For example, headings, emphasized text, lists and mathematical expressions all receive consistently applied style properties from the external style sheet. Authors need not concern themselves with the style properties at the time of composition. These presentational details can be deferred until the moment of presentation.", "\n", "Portability", "[", "edit", "]", "\n", "The deferment of presentational details until the time of presentation means that a document can be easily re-purposed for an entirely different presentation medium with merely the application of a new style sheet already prepared for the new medium and consistent with elemental or structural vocabulary of the semantic document. A carefully authored document for a web page can easily be printed to a hard-bound volume complete with headers and footers, page numbers and a generated table of contents simply by applying a new style sheet.", "\n", "Practical disadvantages today", "[", "edit", "]", "\n", "Currently specifications (for example, XHTML, XSL, CSS) and software tools implementing these specification are only reaching the early stages of maturity. So there are some practical issues facing authors who seek to embrace this method of separating content and style.", "\n", "Narrow adoption without the parsing and generation tools", "[", "edit", "]", "\n", "While the style specifications are quite mature and still maturing, the software tools have been slow to adapt. Most of the major web development tools still embrace a mixed presentation-content model. So authors and designers looking for GUI based tools for their work find it difficult to follow the semantic web method. In addition to GUI tools, shared repositories for generalized style sheets would probably aid adoption of these methods.", "\n", "See also", "[", "edit", "]", "\n", "\n", "Separation of concerns", "\n", "\n", "References", "[", "edit", "]", "\n", "\n", "\n", "\n", "^", " ", "Why use CSS? - Web developer guide | MDN", "\n", "^", " ", "Why Use CSS in Website Design", "\n", "\n", "\n", "\n", "External links", "[", "edit", "]", "\n", "\n", "CSS Zen Garden", ": A site which challenges designers to create new page layouts without touching the XHTML source. Includes dozens of layouts. CSS source can be viewed for every layout.", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "v", "\n", "t", "\n", "e", "\n", "\n", "\n", "Style sheet languages", "\n", "\n", "\n", "\n", "Modes", "\n", "\n", "\n", "\n", "Desktop publishing", "\n", "Web development", "\n", "User interfaces", "\n", "\n", "\n", "\n", "\n", "\n", "Standard", "\n", "\n", "\n", "\n", "Cascading (CSS)", "\n", "DSSSL", "\n", "Extensible (XSL)", "\n", "\n", "\n", "\n", "\n", "\n", "Non-standard", "\n", "\n", "\n", "\n", "JavaScript (JSSS)", "\n", "FOSI", "\n", "Qt", "\n", "Sass", "\n", "Less", "\n", "Stylus", "\n", "SMIL Timesheets", "\n", "PostCSS", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "List", "\n", "Comparison", "\n", "\n", "\n", "\n", "\n", "\n", "\n\n\n", "\n", "\n", "\n", "\n"], "lastUpdated": " 14 December 2017, at 23:37."}, +{"title": "Lexical analysis", "text": ["\"Lexer\" redirects here. For people with this name, see ", "Lexer (surname)", ".", "\n", "In ", "computer science", ", ", "lexical analysis", ", ", "lexing", " or ", "tokenization", " is the process of converting a sequence of characters (such as in a computer program or web page) into a sequence of tokens (", "strings", " with an assigned and thus identified meaning). A program that performs lexical analysis may be termed a ", "lexer", ", ", "tokenizer", ",", "[1]", " or ", "scanner", ", though ", "scanner", " is also a term for the first stage of a lexer. A lexer is generally combined with a ", "parser", ", which together analyze the ", "syntax of programming languages", ", web pages, and so forth.", "\n", "\n", "\n", "\n", "Contents", "\n", "\n", "\n", "1", " ", "Applications", "\n", "2", " ", "Lexeme", "\n", "3", " ", "Token", "\n", "4", " ", "Lexical grammar", "\n", "5", " ", "Tokenization", "\n", "\n", "5.1", " ", "Scanner", "\n", "5.2", " ", "Evaluator", "\n", "5.3", " ", "Obstacles", "\n", "5.4", " ", "Software", "\n", "\n", "\n", "6", " ", "Lexer generator", "\n", "\n", "6.1", " ", "List of lexer generators", "\n", "\n", "\n", "7", " ", "Phrase structure", "\n", "\n", "7.1", " ", "Line continuation", "\n", "7.2", " ", "Semicolon insertion", "\n", "7.3", " ", "Off-side rule", "\n", "\n", "\n", "8", " ", "Context-sensitive lexing", "\n", "9", " ", "Notes", "\n", "10", " ", "References", "\n", "11", " ", "External links", "\n", "\n", "\n", "\n", "Applications", "[", "edit", "]", "\n", "A lexer forms the first phase of a ", "compiler frontend", " in modern processing. Analysis generally occurs in one pass.", "\n", "In older languages such as ", "ALGOL", ", the initial stage was instead ", "line reconstruction", ", which performed ", "unstropping", " and removed whitespace and ", "comments", " (and had scannerless parsers, with no separate lexer). These steps are now done as part of the lexer.", "\n", "Lexers and parsers are most often used for compilers, but can be used for other computer language tools, such as ", "prettyprinters", " or ", "linters", ". Lexing can be divided into two stages: the ", "scanning", ", which segments the input string into syntactic units called ", "lexemes", " and categorizes these into token classes; and the ", "evaluating", ", which converts lexemes into processed values.", "\n", "Lexers are generally quite simple, with most of the complexity deferred to the parser or ", "semantic analysis", " phases, and can often be generated by a ", "lexer generator", ", notably ", "lex", " or derivatives. However, lexers can sometimes include some complexity, such as ", "phrase structure", " processing to make input easier and simplify the parser, and may be written partly or fully by hand, either to support more features or for performance.", "\n", "Lexeme", "[", "edit", "]", "\n", "A ", "lexeme", " is a sequence of characters in the source program that matches the pattern for a token and is identified by the lexical analyzer as an instance of that token.", "[2]", "\n", "Some authors term this a \"token\", using \"token\" interchangeably to represent the string being tokenized, and the token data structure resulting from putting this string through the ", "tokenization", " process.", "[3]", "[4]", "\n", "The word lexeme in computer science is defined differently than ", "lexeme", " in linguistics. A lexeme in computer science roughly corresponds to what might be termed a ", "word", " in linguistics (the term ", "word", " in computer science has a different meaning than ", "word", " in linguistics), although in some cases it may be more similar to a ", "morpheme", ".", "\n", "Token", "[", "edit", "]", "\n", "A ", "lexical token", " or simply ", "token", " is a pair consisting of a ", "token name", " and an optional ", "token value", ". The token name is a category of lexical unit.", "[5]", " Common token names are", "\n", "\n", "identifiers: names the programmer chooses;", "\n", "keywords: names already in the programming language;", "\n", "separators (also known as punctuators): punctuation characters and paired-delimiters;", "\n", "operators: symbols that operate on arguments and produce results;", "\n", "literals: numeric, logical, textual, reference literals;", "\n", "comments: line, block.", "\n", "\n", "\n", "Examples of token values", "\n", "\n", "Token name", "\n", "Sample token values", "\n", "\n", "\n", "identifier", "\n", "x, color, UP", "\n", "\n", "\n", "keyword", "\n", "if", ",", " ", "while", ",", " ", "return", "\n", "\n", "\n", "separator", "\n", "}, (,\u00a0;", "\n", "\n", "\n", "operator", "\n", "+", ",", " ", "<", ",", " ", "=", "\n", "\n", "\n", "literal", "\n", "true", ",", " ", "6.02e23", ",", " ", "\"music\"", "\n", "\n", "\n", "comment", "\n", "// must be negative, /* Retrieves user data */", "\n", "\n", "\n", "Consider this expression in the ", "C", " programming language:", "\n", "\n", "x", " ", "=", " ", "a", " ", "+", " ", "b", " ", "*", " ", "2", ";", "\n", "\n", "The lexical analysis of this expression yields the following sequence of tokens:", "\n", "\n", "[(identifier, x), (operator, =), (identifier, a), (operator, +), (identifier, b), (operator, *), (literal, 2), (separator,\u00a0;)]", "\n", "\n", "A token name is what might be termed a ", "part of speech", " in linguistics.", "\n", "Lexical grammar", "[", "edit", "]", "\n", "Further information: ", "Lexical grammar", "\n", "The specification of a ", "programming language", " often includes a set of rules, the ", "lexical grammar", ", which defines the lexical syntax. The lexical syntax is usually a ", "regular language", ", with the grammar rules consisting of ", "regular expressions", "; they define the set of possible character sequences (lexemes) of a token. A lexer recognizes strings, and for each kind of string found the lexical program takes an action, most simply producing a token.", "\n", "Two important common lexical categories are ", "white space", " and ", "comments", ". These are also defined in the grammar and processed by the lexer, but may be discarded (not producing any tokens) and considered ", "non-significant", ", at most separating two tokens (as in ", "if\u00a0x", " instead of ", "ifx", "). There are two important exceptions to this. First, in ", "off-side rule", " languages that delimit ", "blocks", " with indenting, initial whitespace is significant, as it determines block structure, and is generally handled at the lexer level; see ", "phrase structure", ", below. Secondly, in some uses of lexers, comments and whitespace must be preserved \u2013 for examples, a ", "prettyprinter", " also needs to output the comments and some debugging tools may provide messages to the programmer showing the original source code. In the 1960s, notably for ", "ALGOL", ", whitespace and comments were eliminated as part of the ", "line reconstruction", " phase (the initial phase of the ", "compiler frontend", "), but this separate phase has been eliminated and these are now handled by the lexer.", "\n", "Tokenization", "[", "edit", "]", "\n", "Tokenization", " is the process of demarcating and possibly classifying sections of a string of input characters. The resulting tokens are then passed on to some other form of processing. The process can be considered a sub-task of ", "parsing", " input.", "\n", "(Note: ", "Tokenization", " in the field of computer security has a different meaning.)", "\n", "For example, in the text ", "string", ":", "\n", "\n", "The quick brown fox jumps over the lazy dog", "\n", "\n", "the string isn't implicitly segmented on spaces, as a ", "natural language", " speaker would do. The raw input, the 43 characters, must be explicitly split into the 9 tokens with a given space delimiter (i.e., matching the string ", "\" \"", " or regular expression ", "/\\s{1}/", ").", "\n", "The tokens could be represented in ", "XML", ",", "\n", "\n", "\n", "", "\n ", "", "The", "", "\n ", "", "quick", "", "\n ", "", "brown", "", "\n ", "", "fox", "", "\n ", "", "jumps", "", "\n ", "", "over", "", "\n ", "", "the", "", "\n ", "", "lazy", "", "\n ", "", "dog", "", "\n", "", "\n", "\n", "Or as an ", "s-expression", ",", "\n", "\n", "\n ", "(", "sentence", "\n ", "(", "word", " ", "The", ")", "\n ", "(", "word", " ", "quick", ")", "\n ", "(", "word", " ", "brown", ")", " \n ", "(", "word", " ", "fox", ")", "\n ", "(", "word", " ", "jumps", ")", "\n ", "(", "word", " ", "over", ")", " \n ", "(", "word", " ", "the", ")", "\n ", "(", "word", " ", "lazy", ")", "\n ", "(", "word", " ", "dog", "))", "\n", "\n", "When a token class represents more than one possible lexeme, the lexer often saves enough information to reproduce the original lexeme, so that it can be used in ", "semantic analysis", ". The parser typically retrieves this information from the lexer and stores it in the ", "abstract syntax tree", ". This is necessary in order to avoid information loss in the case of numbers and identifiers.", "\n", "Tokens are identified based on the specific rules of the lexer. Some methods used to identify tokens include: ", "regular expressions", ", specific sequences of characters termed a ", "flag", ", specific separating characters called ", "delimiters", ", and explicit definition by a dictionary. Special characters, including punctuation characters, are commonly used by lexers to identify tokens because of their natural use in written and programming languages.", "\n", "Tokens are often categorized by character content or by context within the data stream. Categories are defined by the rules of the lexer. Categories often involve grammar elements of the language used in the data stream. Programming languages often categorize tokens as identifiers, operators, grouping symbols, or by ", "data type", ". Written languages commonly categorize tokens as nouns, verbs, adjectives, or punctuation. Categories are used for post-processing of the tokens either by the parser or by other functions in the program.", "\n", "A lexical analyzer generally does nothing with combinations of tokens, a task left for a ", "parser", ". For example, a typical lexical analyzer recognizes parentheses as tokens, but does nothing to ensure that each \"(\" is matched with a \")\".", "\n", "When a lexer feeds tokens to the parser, the representation used is typically an enumerated list of number representations. For example, \"Identifier\" is represented with 0, \"Assignment operator\" with 1, \"Addition operator\" with 2, etc.", "\n", "Tokens are defined often by ", "regular expressions", ", which are understood by a lexical analyzer generator such as ", "lex", ". The lexical analyzer (generated automatically by a tool like lex, or hand-crafted) reads in a stream of characters, identifies the ", "lexemes", " in the stream, and categorizes them into tokens. This is termed ", "tokenizing", ". If the lexer finds an invalid token, it will report an error.", "\n", "Following tokenizing is ", "parsing", ". From there, the interpreted data may be loaded into data structures for general use, interpretation, or ", "compiling", ".", "\n", "Scanner", "[", "edit", "]", "\n", "The first stage, the ", "scanner", ", is usually based on a ", "finite-state machine", " (FSM). It has encoded within it information on the possible sequences of characters that can be contained within any of the tokens it handles (individual instances of these character sequences are termed ", "lexemes", "). For example, an ", "integer", " token may contain any sequence of ", "numerical digit", " characters. In many cases, the first non-whitespace character can be used to deduce the kind of token that follows and subsequent input characters are then processed one at a time until reaching a character that is not in the set of characters acceptable for that token (this is termed the ", "maximal munch", ", or ", "longest match", ", rule). In some languages, the lexeme creation rules are more complex and may involve ", "backtracking", " over previously read characters. For example, in C, one 'L' character is not enough to distinguish between an identifier that begins with 'L' and a wide-character string literal.", "\n", "Evaluator", "[", "edit", "]", "\n", "A ", "lexeme", ", however, is only a string of characters known to be of a certain kind (e.g., a string literal, a sequence of letters). In order to construct a token, the lexical analyzer needs a second stage, the ", "evaluator", ", which goes over the characters of the lexeme to produce a ", "value", ". The lexeme's type combined with its value is what properly constitutes a token, which can be given to a parser. Some tokens such as parentheses do not really have values, and so the evaluator function for these can return nothing: only the type is needed. Similarly, sometimes evaluators can suppress a lexeme entirely, concealing it from the parser, which is useful for whitespace and comments. The evaluators for identifiers are usually simple (literally representing the identifier), but may include some ", "unstropping", ". The evaluators for ", "integer literals", " may pass the string on (deferring evaluation to the semantic analysis phase), or may perform evaluation themselves, which can be involved for different bases or floating point numbers. For a simple quoted string literal, the evaluator needs to remove only the quotes, but the evaluator for an ", "escaped string literal", " incorporates a lexer, which unescapes the escape sequences.", "\n", "For example, in the source code of a computer program, the string", "\n", "\n", "net_worth_future", " ", "=", " ", "(", "assets", " ", "-", " ", "liabilities", ");", "\n", "\n", "might be converted into the following lexical token stream; whitespace is suppressed and special characters have no value:", "\n", "\nIDENTIFIER net_worth_future\nEQUALS\nOPEN_PARENTHESIS\nIDENTIFIER assets\nMINUS\nIDENTIFIER liabilities\nCLOSE_PARENTHESIS\nSEMICOLON\n", "\n", "Though it is possible and sometimes necessary, due to licensing restrictions of existing parsers or if the list of tokens is small, to write a lexer by hand, lexers are often generated by automated tools. These tools generally accept regular expressions that describe the tokens allowed in the input stream. Each regular expression is associated with a ", "production rule", " in the lexical grammar of the programming language that evaluates the lexemes matching the regular expression. These tools may generate source code that can be compiled and executed or construct a ", "state transition table", " for a ", "finite-state machine", " (which is plugged into template code for compiling and executing).", "\n", "Regular expressions compactly represent patterns that the characters in lexemes might follow. For example, for an ", "English", "-based language, an IDENTIFIER token might be any English alphabetic character or an underscore, followed by any number of instances of ASCII alphanumeric characters and/or underscores. This could be represented compactly by the string ", "[a-zA-Z_][a-zA-Z_0-9]*", ". This means \"any character a-z, A-Z or _, followed by 0 or more of a-z, A-Z, _ or 0-9\".", "\n", "Regular expressions and the finite-state machines they generate are not powerful enough to handle recursive patterns, such as \"", "n", " opening parentheses, followed by a statement, followed by ", "n", " closing parentheses.\" They are unable to keep count, and verify that ", "n", " is the same on both sides, unless a finite set of permissible values exists for ", "n", ". It takes a full parser to recognize such patterns in their full generality. A parser can push parentheses on a stack and then try to pop them off and see if the stack is empty at the end (see example", "[6]", " in the ", "Structure and Interpretation of Computer Programs", " book).", "\n", "Obstacles", "[", "edit", "]", "\n", "Typically, tokenization occurs at the word level. However, it is sometimes difficult to define what is meant by a \"word\". Often a tokenizer relies on simple heuristics, for example:", "\n", "\n", "Punctuation and whitespace may or may not be included in the resulting list of tokens.", "\n", "All contiguous strings of alphabetic characters are part of one token; likewise with numbers.", "\n", "Tokens are separated by ", "whitespace", " characters, such as a space or line break, or by punctuation characters.", "\n", "\n", "In languages that use inter-word spaces (such as most that use the Latin alphabet, and most programming languages), this approach is fairly straightforward. However, even here there are many edge cases such as ", "contractions", ", ", "hyphenated words", ", ", "emoticons", ", and larger constructs such as ", "URIs", " (which for some purposes may count as single tokens). A classic example is \"New York-based\", which a naive tokenizer may break at the space even though the better break is (arguably) at the hyphen.", "\n", "Tokenization is particularly difficult for languages written in ", "scriptio continua", " which exhibit no word boundaries such as ", "Ancient Greek", ", ", "Chinese", ",", "[7]", " or ", "Thai", ". ", "Agglutinative languages", ", such as Korean, also make tokenization tasks complicated.", "\n", "Some ways to address the more difficult problems include developing more complex heuristics, querying a table of common special-cases, or fitting the tokens to a ", "language model", " that identifies collocations in a later processing step.", "\n", "Software", "[", "edit", "]", "\n", "\n", "Apache OpenNLP", " includes rule based and statistical tokenizers which support many languages", "\n", "U-Tokenizer", " is an API over HTTP that can cut Mandarin and Japanese sentences at word boundary. English is supported as well.", "\n", "HPE Haven OnDemand Text Tokenization API", " (Commercial product, with freemium access) uses Advanced Probabilistic Concept Modelling to determine the weight that the term holds in the specified text indexes", "\n", "The ", "Lex", " tool and its compiler is designed to generate code for fast lexical analysers based on a formal description of the lexical syntax. It is generally considered insufficient for applications with a complex set of lexical rules and severe performance requirements. For example, the ", "GNU Compiler Collection", " (GCC) uses hand-written lexers.", "\n", "\n", "Lexer generator", "[", "edit", "]", "\n", "See also: ", "Parser generator", "\n", "Lexers are often generated by a ", "lexer generator", ", analogous to ", "parser generators", ", and such tools often come together. The most established is ", "lex", ", paired with the ", "yacc", " parser generator, and the free equivalents ", "flex", "/bison. These generators are a form of ", "domain-specific language", ", taking in a lexical specification \u2013 generally regular expressions with some markup \u2013 and emitting a lexer.", "\n", "These tools yield very fast development, which is very important in early development, both to get a working lexer and because a language specification may change often. Further, they often provide advanced features, such as pre- and post-conditions which are hard to program by hand. However, an automatically generated lexer may lack flexibility, and thus may require some manual modification, or an all-manually written lexer.", "\n", "Lexer performance is a concern, and optimizing is worthwhile, more so in stable languages where the lexer is run very often (such as C or HTML). lex/flex-generated lexers are reasonably fast, but improvements of two to three times are possible using more tuned generators. Hand-written lexers are sometimes used, but modern lexer generators produce faster lexers than most hand-coded ones. The lex/flex family of generators uses a table-driven approach which is much less efficient than the directly coded approach.", "[", "dubious", " ", "\u2013 ", "discuss", "]", " With the latter approach the generator produces an engine that directly jumps to follow-up states via goto statements. Tools like re2c", "[8]", " have proven to produce engines that are between two and three times faster than flex produced engines.", "[", "citation needed", "]", " It is in general difficult to hand-write analyzers that perform better than engines generated by these latter tools.", "\n", "List of lexer generators", "[", "edit", "]", "\n", "See also: ", "List of parser generators", "\n", "\n", "ANTLR", " \u2013 can generate lexical analyzers and parsers", "\n", "DFASTAR \u2013 generates DFA matrix table-driven lexers in C++", "\n", "Flex", " \u2013 variant of the classic ", "lex", " for C/C++", "\n", "Ragel", " \u2013 state machine and lexer generator with output in C, C++, ", "C#", ", ", "Objective-C", ", ", "D", ", ", "Java", ", ", "Go", ", and ", "Ruby", "\n", "re2c", " \u2013 lexer generator for ", "C", " and ", "C++", "\n", "\n", "The following lexical analysers can handle ", "Unicode", ":", "\n", "\n", "JavaCC", " \u2013 generates lexical analyzers written in Java", "\n", "JFLex \u2013 lexical analyzer generator for Java", "\n", "AnnoFlex - annotation-based code generator for lexical scanners for Java", "\n", "RE/flex", " - a fast variant of lex/flex for C++ generates scanners with tables or direct code", "\n", "Quex", " \u2013 fast universal lexical analyzer generator for C and C++ written in Python", "\n", "FsLex \u2013 lexer generator for byte and Unicode character input for F#", "\n", "re2c", " \u2013 lexer generator for ", "C", " and ", "C++", "[9]", "\n", "PLY", " - the Python module ply.lex enables the lexical analysis part", "\n", "\n", "Phrase structure", "[", "edit", "]", "\n", "Lexical analysis mainly segments the input stream of characters into tokens, simply grouping the characters into pieces and categorizing them. However, the lexing may be significantly more complex; most simply, lexers may omit tokens or insert added tokens. Omitting tokens, notably whitespace and comments, is very common, when these are not needed by the compiler. Less commonly, added tokens may be inserted. This is done mainly to group tokens into ", "statements", ", or statements into blocks, to simplify the parser.", "\n", "Line continuation", "[", "edit", "]", "\n", "Line continuation", " is a feature of some languages where a newline is normally a statement terminator. Most often, ending a line with a backslash (immediately followed by a ", "newline", ") results in the line being ", "continued", " \u2013 the following line is ", "joined", " to the prior line. This is generally done in the lexer: the backslash and newline are discarded, rather than the newline being tokenized. Examples include ", "bash", ",", "[10]", " other shell scripts and Python.", "[11]", "\n", "Semicolon insertion", "[", "edit", "]", "\n", "Many languages use the semicolon as a statement terminator. Most often this is mandatory, but in some languages the semicolon is optional in many contexts. This is mainly done at the lexer level, where the lexer outputs a semicolon into the token stream, despite one not being present in the input character stream, and is termed ", "semicolon insertion", " or ", "automatic semicolon insertion", ". In these cases, semicolons are part of the formal phrase grammar of the language, but may not be found in input text, as they can be inserted by the lexer. Optional semicolons or other terminators or separators are also sometimes handled at the parser level, notably in the case of ", "trailing commas", " or semicolons.", "\n", "Semicolon insertion is a feature of ", "BCPL", " and its distant descendent ", "Go", ",", "[12]", " though it is absent in B or C.", "[13]", " Semicolon insertion is present in ", "JavaScript", ", though the rules are somewhat complex and much-criticized; to avoid bugs, some recommend always using semicolons, while others use initial semicolons, termed ", "defensive semicolons", ", at the start of potentially ambiguous statements.", "\n", "Semicolon insertion (in languages with semicolon-terminated statements) and line continuation (in languages with newline-terminated statements) can be seen as complementary: semicolon insertion adds a token, even though newlines generally do ", "not", " generate tokens, while line continuation prevents a token from being generated, even though newlines generally ", "do", " generate tokens.", "\n", "Off-side rule", "[", "edit", "]", "\n", "Further information: ", "Off-side rule", "\n", "The ", "off-side rule", " (blocks determined by indenting) can be implemented in the lexer, as in ", "Python", ", where increasing the indenting results in the lexer emitting an INDENT token, and decreasing the indenting results in the lexer emitting a DEDENT token.", "[14]", " These tokens correspond to the opening brace ", "{", " and closing brace ", "}", " in languages that use braces for blocks, and means that the phrase grammar does not depend on whether braces or indenting are used. This requires that the lexer hold state, namely the current indent level, and thus can detect changes in indenting when this changes, and thus the lexical grammar is not ", "context-free", ": INDENT\u2013DEDENT depend on the contextual information of prior indent level.", "\n", "Context-sensitive lexing", "[", "edit", "]", "\n", "Generally lexical grammars are context-free, or almost so, and thus require no looking back or ahead, or backtracking, which allows a simple, clean, and efficient implementation. This also allows simple one-way communication from lexer to parser, without needing any information flowing back to the lexer.", "\n", "There are exceptions, however. Simple examples include: semicolon insertion in Go, which requires looking back one token; concatenation of consecutive string literals in Python,", "[15]", " which requires holding one token in a buffer before emitting it (to see if the next token is another string literal); and the off-side rule in Python, which requires maintaining a count of indent level (indeed, a stack of each indent level). These examples all only require lexical context, and while they complicate a lexer somewhat, they are invisible to the parser and later phases.", "\n", "A more complex example is ", "the lexer hack", " in C, where the token class of a sequence of characters cannot be determined until the semantic analysis phase, since typedef names and variable names are lexically identical but constitute different token classes. Thus in the hack, the lexer calls the semantic analyzer (say, symbol table) and checks if the sequence requires a typedef name. In this case, information must flow back not from the parser only, but from the semantic analyzer back to the lexer, which complicates design.", "\n", "Notes", "[", "edit", "]", "\n", "\n", "References", "[", "edit", "]", "\n", "\n", "\n", "\n", "^", " ", "www.cs.man.ac.uk", "\n", "^", " ", "page 111, \"Compilers Principles, Techniques, & Tools, 2nd Ed.\" (WorldCat) by Aho, Lam, Sethi and Ullman, as quoted in ", "https://stackoverflow.com/questions/14954721/what-is-the-difference-between-token-and-lexeme", "\n", "^", " ", "Perl 5 Porters. ", "\"perlinterp: Perl 5 version 24.0 documentation\"", ". ", "perldoc.perl.org - Official documentation for the Perl programming language", ". perldoc.perl.org", ". Retrieved ", "26 January", " 2017", ".", "\u00a0", "\n", "^", " ", "Guy Coder (19 February 2013). ", "\"What is the difference between token and lexeme?\"", ". ", "Stack Overflow", ". Stack Exchange Inc", ". Retrieved ", "26 January", " 2017", ".", "\u00a0", "\n", "^", " ", "page 111, \"Compilers Principles, Techniques, & Tools, 2nd Ed.\" (WorldCat) by Aho, Lam, Sethi and Ullman, as quoted in ", "https://stackoverflow.com/questions/14954721/what-is-the-difference-between-token-and-lexeme", "\n", "^", " ", "mitpress.mit.edu", "\n", "^", " ", "Huang, C., Simon, P., Hsieh, S., & Prevot, L. (2007) ", "Rethinking Chinese Word Segmentation: Tokenization, Character Classification, or Word break Identification", "\n", "^", " ", "Bumbulis, P.; Cowan, D. D. (Mar\u2013Dec 1993). \"RE2C: A more versatile scanner generator\". ", "ACM Letters on Programming Languages and Systems", ". ", "2", " (1\u20134): 70\u201384. ", "doi", ":", "10.1145/176454.176487", ".", "\u00a0", "\n", "^", " ", "[1]", ", re2c manual", "\n", "^", " ", "Bash Reference Manual", ", ", "3.1.2.1 Escape Character", "\n", "^", " ", "Python Documentation", ", ", "2. Lexical analysis", ": ", "2.1.5. Explicit line joining", "\n", "^", " ", "Effective Go", ", \"", "Semicolons", "\"", "\n", "^", " ", "\"", "Semicolons in Go", "\", golang-nuts, Rob 'Commander' Pike, 12/10/09", "\n", "^", " ", "Python Documentation", ", ", "2. Lexical analysis", ": ", "2.1.8. Indentation", "\n", "^", " ", "Python Documentation", ", ", "2. Lexical analysis", ": ", "2.4.2. String literal concatenation", "\n", "\n", "\n", "\n", "\n", "\n", "Compiling with C# and Java", ", Pat Terry, 2005, ", "ISBN", "\u00a0", "032126360X", "\n", "Algorithms + Data Structures = Programs", ", Niklaus Wirth, 1975, ", "ISBN", "\u00a0", "0-13-022418-9", "\n", "Compiler Construction", ", Niklaus Wirth, 1996, ", "ISBN", "\u00a0", "0-201-40353-6", "\n", "Sebesta, R. W. (2006). Concepts of programming languages (Seventh edition) pp.\u00a0177. Boston: Pearson/Addison-Wesley.", "\n", "\n", "\n", "External links", "[", "edit", "]", "\n", "\n", "Yang, W.; Tsay, Chey-Woei; Chan, Jien-Tsai (2002). ", "\"On the applicability of the longest-match rule in lexical analysis\"", ". ", "Computer Languages, Systems and Structures", ". Elsevier Science. ", "28", " (3): 273\u2013288. ", "doi", ":", "10.1016/S0096-0551(02)00014-0", ". NSC 86-2213-E-009-021 and NSC 86-2213-E-009-079.", "\u00a0", "\n", "Trim, Craig (Jan 23, 2013). ", "\"The Art of Tokenization\"", ". ", "Developer Works", ". IBM.", "\u00a0", "\n", "Word Mention Segmentation Task", ", an analysis", "\n", "\n\n\n", "\n", "\n", "\n", "\n"], "lastUpdated": " 19 January 2018, at 20:15."}, +{"title": "August Capital", "text": ["\n", "August Capital", "\n", "\n", "\n", "Type", "\n", "\n", "Venture fund", "\n", "\n", "\n", "Industry", "\n", "finance", "\n", "\n", "\n", "Founded", "\n", "1995 ", "[1]", "\n", "\n", "\n", "Founder", "\n", "\n", "\n", "\n", "David Marquardt", "\n", "John Johnston", "\n", "\n", "\n", "\n", "\n", "\n", "Website", "\n", "augustcap", ".com", "\n", "\n", "\n", "August Capital", " is a ", "venture capital", " firm founded by ", "David Marquardt", " and John Johnston in 1995. It is focused on information technology and is based in ", "Menlo Park, California", ".", "\n", "Company", "[", "edit", "]", "\n", "August Capital specialized in growth capital and startup investments. The firm has invested in all stages with a focus on early and late stage, management buyouts, and private investments in public equity. The firm has invested in the information technology spectrum including IT infrastructure, data center technologies, systems management, security, storage, and cloud computing systems and software.", "[2]", "\n", "Partner ", "David Hornik", " was on the ", "Midas List", " in 2012.", "[3]", "\n", "Investments include ", "Rocket Lawyer", ", ", "Be Incorporated", ", ", "Seagate", ", ", "Postini", ", ", "Six Apart", ", and ", "StumbleUpon", ".", "[", "citation needed", "]", "\n", "References", "[", "edit", "]", "\n", "\n", "\n", "\n", "^", " ", "\"August Capital Raises $450 Million For Its Seventh Fund, August VII\"", ".", "\u00a0", "\n", "^", " ", "\"August Capital: Private Company Information - Businessweek\"", ". ", "www.bloomberg.com", ". Retrieved ", "2016-07-19", ".", "\u00a0", "\n", "^", " ", "https://www.forbes.com/lists/midas/2012/midas-list-top-tech-investors_list.html", "\n", "\n", "\n", "\n", "\n", "\n", "\n", " ", "\n", "This article about a private equity or venture capital firm based in the United States is a ", "stub", ". You can help Wikipedia by ", "expanding it", ".", "\n", "\n", "\n", "v", "\n", "t", "\n", "e", "\n", "\n", "\n", "\n", "\n", "\n\n\n", "\n", "\n", "\n", "\n"], "lastUpdated": " 24 August 2017, at 12:45."}, +{"title": "List of content management systems", "text": ["\n", "\n", "\n", "\n", "\n", "\n", "The ", "factual accuracy", " of parts of this article (those related to article) ", "may be compromised due to out-of-date information", ". ", "Please update this article to reflect recent events or newly available information.", " ", "(May 2012)", "\n", "\n", "\n", "\n", "This is a ", "list of notable ", "content management systems", " that are used to organize and facilitate collaborative content creation. Many of them are built on top of separate ", "content management frameworks", ".", "\n", "\n", "\n", "\n", "Contents", "\n", "\n", "\n", "1", " ", "Open source software", "\n", "\n", "1.1", " ", "Java", "\n", "\n", "1.1.1", " ", "Java packages/bundle", "\n", "\n", "\n", "1.2", " ", "Microsoft ASP.NET", "\n", "1.3", " ", "Perl", "\n", "1.4", " ", "PHP", "\n", "1.5", " ", "Python", "\n", "1.6", " ", "Ruby on Rails", "\n", "1.7", " ", "ColdFusion Markup Language (CFML)", "\n", "1.8", " ", "JavaScript", "\n", "1.9", " ", "Others", "\n", "\n", "\n", "2", " ", "Software as a service (SaaS)", "\n", "3", " ", "Proprietary software", "\n", "4", " ", "Other content management frameworks", "\n", "5", " ", "See also", "\n", "6", " ", "References", "\n", "7", " ", "External links", "\n", "\n", "\n", "\n", "Open source software", "[", "edit", "]", "\n", "\n", "This section lists free and ", "open-source software", " that can be installed and managed on a web server.", "\n", "\n", "Systems listed on a light purple background are no longer in active development.", "\n", "Java", "[", "edit", "]", "\n", "\n", "\n", "Name", "\n", "Platform", "\n", "Supported databases", "\n", "Latest stable release", "\n", "Licenses", "\n", "Latest release date", "\n", "\n", "\n", "Apache Roller", "\n", "Java", "\n", "HSQL", ", ", "MySQL", ", ", "Oracle", ", ", "SQL Server", ", ", "DB2", ", ", "PostgreSQL", ", ", "Apache Derby", "\n", "5.1.2", "\n", "Apache 2.0 License", "\n", "2015-03-01", "[1]", "[2]", "\n", "\n", "\n", "Ametys CMS", "\n", "Java", "\n", "MySQL", ", ", "Oracle", ", ", "SQL Server", ", ", "JCR", ", ", "Apache Derby", "\n", "3.7.1", "\n", "Apache 2.0 License", "\n", "2015-04-27", "\n", "\n", "\n", "Crafter CMS", "\n", "Java", "\n", "Git", ", ", "Solr", ", ", "CMIS", "\n", "3.0.0", "\n", "GNU", " ", "GPL", " v3", "\n", "2017-08-01", "\n", "\n", "\n", "dotCMS", "\n", "Java", "\n", "MySQL", ", ", "Oracle", ", ", "MSSQL", ", ", "PostgreSQL", "\n", "4.2.0", "\n", "GNU", " ", "GPL", " v3", "\n", "2017-10-17", "\n", "\n", "\n", "Liferay", "\n", "Java", "\n", "HSQLDB", ", ", "MySQL", ", ", "Oracle", ", ", "SQL Server", ", ", "DB2", ", ", "Apache Derby", ", ", "Informix", ", ", "InterBase", ", JDataStore, ", "PostgreSQL", ", ", "SAP", ", ", "Sybase", "\n", "7.0.1", "\n", "LGPL", "\n", "2016-06-10", "\n", "\n", "\n", "eXo Platform", " Community Edition", "\n", "Java", "\n", "HSQLDB", ", ", "MySQL", ", ", "Oracle", ", ", "SQL Server", ", ", "DB2", ", ", "Apache Derby", ", ", "PostgreSQL", ", ", "Sybase", "\n", "4.3", "\n", "LGPL", "\n", "2016-01-21", "\n", "\n", "\n", "DSpace", "\n", "Java", "\n", "Oracle", ", ", "PostgreSQL", "\n", "5.0", "\n", "BSD License", "\n", "2015-01-16", "\n", "\n", "\n", "Fedora Commons", "\n", "Java", "\n", "MySQL", ", ", "Oracle", ", ", "PostgreSQL", ", ", "Mulgara", " (MPTSTore RDF Semantic Triplestore)", "\n", "4.1.0", "\n", "Apache License", "\n", "2015-02-04", "\n", "\n", "\n", "LogicalDOC", " Community Edition", "\n", "Java", "\n", "MySQL", ", ", "Oracle", ", ", "SQL Server", ", ", "PostgreSQL", "\n", "7.4.2", "[3]", "\n", "LGPL", "\n", "2016-03-24", "\n", "\n", "\n", "Nuxeo EP", "\n", "Java", "\n", "MySQL", ", ", "Oracle", ", ", "SQL Server", ", ", "Ingres", ", ", "PostgreSQL", ", ", "MongoDB", "\n", "7.3", "\n", "LGPL", "\n", "2014-11-12", "\n", "\n", "\n", "OpenCms", "\n", "Java", "\n", "HSQL", ", ", "MySQL", ", ", "Oracle", ", ", "SQL Server", ", ", "DB2", ", ", "PostgreSQL", "\n", "10.5.1", "\n", "LGPL", "\n", "2017-02-15", "\n", "\n", "\n", "Alfresco", " Community Edition", "\n", "Java", "\n", "MySQL", ", ", "Oracle", ", ", "SQL Server", ", ", "PostgreSQL", ", ", "DB2", ",", "\n", "201707", "\n", "LGPL", "\n", "2016-05-17", "\n", "\n", "\n", "Hippo CMS", "\n", "Java", "\n", "MySQL", ", ", "Oracle", ", ", "SQL Server", ", ", "Ingres", ", ", "PostgreSQL", ", ", "JCR", "\n", "12.0.2", "[4]", "\n", "Apache 2.0 License", "\n", "2017-10-10", "\n", "\n", "\n", "OpenWGA", "\n", "Java", "\n", "MySQL", ", ", "PostgreSQL", ", ", "IBM DB2", ", ", "HSQLDB", ", ", "Oracle", ", ", "SQL Server", ", ", "IBM Lotus Domino", ", ", "CMIS", "\n", "7.1", "\n", "GPL", " & proprietary", "\n", "2015-02-25", "\n", "\n", "\n", "Jahia", " Community Distribution", "\n", "Java", "\n", "Apache Derby", ", ", "JCR", ", ", "MySQL", ", ", "PostgreSQL", "\n", "7.0.0", "\n", "GPL", "\n", "2014-04-01", "\n", "\n", "\n", "Magnolia", "\n", "Java", "\n", "H2", ", ", "Derby", ", ", "MySQL", ", ", "PostgreSQL", ", ", "Oracle", ", ", "MSSQL", "\n", "5.6", "\n", "GPL", " & proprietary", "\n", "2017-11-15", "\n", "\n", "\n", "OpenKM", "\n", "Java", "\n", "MySQL", ", ", "PostgreSQL", ", ", "Oracle", ", ", "SQL Server", ", ", "HSQLDB", "\n", "6.3.2", "\n", "GPL", "\n", "2016-10-24", "\n", "\n", "\n", "Thingamablog", "\n", "Java", "\n", "\n", "1.5.1", "\n", "GPL", "\n", "2009-11-23", "\n", "\n", "\n", "XWiki", "\n", "Java", "\n", "MySQL", ", ", "PostgreSQL", ", ", "Oracle", ", ", "SQL Server", ", ", "HSQLDB", "\n", "8.4.1", "\n", "LGPL", "\n", "2016-11-22", "\n", "\n", "\n", "Java packages/bundle", "[", "edit", "]", "\n", "\n", "\n", "Name", "\n", "Platform", "\n", "Supported databases", "\n", "Latest stable release", "\n", "Licenses", "\n", "Latest release date", "\n", "\n", "\n", "Apache Lenya", "\n", "Java", ", ", "XML", ", ", "Apache Cocoon", "\n", "\n", "2.0.4", "[5]", "\n", "Apache License", "\n", "2011-03-14", "\n", "\n", "\n", "Daisy", "\n", "Java", ", ", "XML", ", ", "Apache Cocoon", "\n", "MySQL", "\n", "2.4.2", "\n", "Apache License", "\n", "2011-02-21", "\n", "\n", "\n", "Microsoft ASP.NET", "[", "edit", "]", "\n", "\n", "\n", "Name", "\n", "Platform", "\n", "Supported databases", "\n", "Latest stable release", "\n", "Licenses", "\n", "Latest release date", "\n", "\n", "\n", "C1 CMS", "\n", "ASP.NET", " (Web Forms, MVC)", "\n", "XML", ", ", "SQL Server", "\n", "6.1", "\n", "Mozilla Public License", "\n", "2017-04-27", "[6]", "\n", "\n", "\n", "DNN", "\n", "ASP.NET", " (Web Forms, MVC)", "\n", "SQL Server", ", ", "SQL Server Express", ", ", "SQL Azure", "\n", "9.1.1", "\n", "MIT License", "\n", "2017-07-05", "[7]", "\n", "\n", "\n", "Kentico CMS", "\n", "ASP.NET", "\n", "SQL Server", "\n", "10.0", "\n", "Proprietary, ", "Free", "\n", "2016-11-30", "[8]", "\n", "\n", "\n", "mojoPortal", "\n", "ASP.NET", "\n", "SQL Server", ", ", "MySQL", ", ", "PostgreSQL", ", ", "SQLite", ", ", "Firebird", ", ", "SQL CE", "\n", "2.4.1.0", "\n", "CPL", "\n", "2016-04-10", "[9]", "\n", "\n", "\n", "Orchard Project", "\n", "ASP.NET", " (Web Forms, MVC)", "\n", "SQL Server", ", ", "MySQL", ", ", "PostgreSQL", ", ", "SQLite", "\n", "1.10.1", "\n", "New BSD License", "\n", "2016-05-11", "[10]", "\n", "\n", "\n", "Umbraco", "\n", "ASP.NET", " (Web Forms, MVC)", "\n", "SQL Server", ", ", "SQL CE", ", ", "SQL Azure", ", ", "MySQL", "\n", "7.6.5", "\n", "MIT License", "\n", "2017-08-08", "[11]", "\n", "\n", "\n", "BetterCMS", "\n", "ASP.NET", " (Web Forms, MVC)", "\n", "SQL Server", ", ", "SQL Azure", "[12]", "\n", "2.0.6", "\n", "LGPL", "\n", "2016-06-14", "[13]", "\n", "\n", "\n", "Perl", "[", "edit", "]", "\n", "\n", "\n", "Name", "\n", "Platform", "\n", "Supported databases", "\n", "Latest stable release", "\n", "Licenses", "\n", "Latest release date", "\n", "\n", "\n", "blosxom", "\n", "Perl", "\n", "Flat-file database", "\n", "2.1.2", "\n", "MIT", "\n", "2008-10-02", "\n", "\n", "\n", "Bricolage", "\n", "Perl", " on ", "mod perl", "\n", "MySQL", ", ", "PostgreSQL", ", ", "Oracle", "\n", "2.0.1", "\n", "BSD", "\n", "2011-02-09", "\n", "\n", "\n", "EPrints", "\n", "Perl", " on ", "mod perl", "\n", "MySQL", ", ", "PostgreSQL", "\n", "3.3.15", "\n", "GPL", "\n", "2015-12-22", "[14]", "\n", "\n", "\n", "Foswiki", "\n", "Perl", "\n", "Flat-file database", "\n", "2.1.4", "\n", "GPL", "\n", "2017-06-01", "[15]", "\n", "\n", "\n", "Ikiwiki", "\n", "Perl", "\n", "Git (software)", ", ", "Apache Subversion", ", ", "Mercurial", "\n", "3.20170111", "\n", "GPL", "\n", "2017-01-11", "[16]", "\n", "\n", "\n", "Movable Type", " Open Source", "\n", "Perl", ", ", "mod perl", ", ", "FastCGI", ", w/", "PHP", "\n", "MySQL", "\n", "5.2.13", "\n", "GPL", "\n", "2015-04-14", "[17]", "\n", "\n", "\n", "TWiki", "\n", "Perl", "\n", "Plain files (under version control)", "\n", "6.0.2", "\n", "GPL", "\n", "2015-11-29", "[18]", "\n", "\n", "\n", "Sellerdeck", " eCommerce", "\n", "Perl", "\n", "Flat-file database", ", ", "Flat-file database", "\n", "16.0.3", "\n", "GPL", "\n", "2017-02-20", "\n", "\n", "\n", "SPINE", "\n", "Perl", ", ", "mod perl", "\n", "MySQL", ", ", "PostgreSQL", "\n", "1.2.2", "\n", "GPL", "\n", "2006-12-27", "\n", "\n", "\n", "WebGUI", "\n", "Perl", " on ", "mod perl", "\n", "MySQL", "\n", "7.10.30", "\n", "GPL", "\n", "2016-01-06", "[19]", "\n", "\n", "\n", "PHP", "[", "edit", "]", "\n", "\n", "\n", "Name", "\n", "Platform", "\n", "Supported databases", "\n", "Latest stable release", "\n", "Licenses", "\n", "Latest release date", "\n", "\n", "\n", "ATutor", "\n", "PHP", "\n", "MySQL", "\n", "2.2.2", "\n", "GPL", "\n", "2016-07-01", "[20]", "\n", "\n", "\n", "Backdrop CMS", "\n", "PHP", "\n", "MySQL", "\n", "1.8.0", "\n", "GPLv2+", "\n", "2017-09-16", "[21]", "\n", "\n", "\n", "b2evolution", "\n", "PHP", "\n", "MySQL", ", ", "MariaDB", "[22]", "\n", "6.9.3", "\n", "GPLv2", "\n", "2017-08-25", "[23]", "\n", "\n", "\n", "CMSimple", "\n", "PHP", "\n", "Flat-file database", "\n", "4.7.2", "\n", "GPLv3", "\n", "2017-05-07", "[24]", "\n", "\n", "\n", "CMS Made Simple", "\n", "PHP", "\n", "MySQL", "\n", "2.2.2", "\n", "GPL", "\n", "2017-07-08", "[25]", "\n", "\n", "\n", "Coderity", "\n", "PHP", "\n", "MySQL", "\n", "3.3.13", "\n", "MIT", "\n", "2015-02-27", "[26]", "\n", "\n", "\n", "Composr CMS", "\n", "PHP", "\n", "MySQL", "\n", "9.0.30", "\n", "CPAL", "\n", "2016-09-18", "[27]", "\n", "\n", "\n", "concrete5", "\n", "PHP", "\n", "MySQL", "\n", "8.3.1", "\n", "MIT", "\n", "2017-12-21", "[28]", "\n", "\n", "\n", "Contao", "\n", "PHP", "\n", "MySQL", "\n", "4.4.0", "\n", "LGPL", "\n", "2017-06-16", "[29]", "\n", "\n", "\n", "DokuWiki", "\n", "PHP", "\n", "Flat-file database", "\n", "2017-02-19a", "\n", "GPL", "\n", "2017-02-19", "[30]", "\n", "\n", "\n", "Dotclear", "\n", "PHP", "\n", "MySQL", ", ", "PostgreSQL", ", ", "SQLite", "\n", "2.12", "\n", "GPL", "\n", "2017-07-27", "[31]", "\n", "\n", "\n", "Drupal", "\n", "PHP", "\n", "MariaDB", ", ", "Microsoft SQL Server", ", ", "MySQL", ", ", "Oracle", ", ", "Percona Server", ", ", "PostgreSQL", ", ", "SQLite", "[32]", "\n", "8.4.3", "\n", "GPLv2+", "\n", "2017-12-06", "[33]", "\n", "\n", "\n", "Exponent CMS", "\n", "PHP", "\n", "MySQL", "\n", "2.4.1", "[34]", "\n", "GPL", "\n", "2017-08-18", "[\u00b1]", "\n", "\n", "\n", "eZ Publish", "\n", "PHP", "\n", "MySQL", ", ", "PostgreSQL", ", ", "Oracle", ", ", "Microsoft SQL Server", "\n", "5.4", "\n", "GPL", "\n", "2014-12-02", "[35]", "\n", "\n", "\n", "eZ Platform", "\n", "PHP", "\n", "MySQL", ", ", "MariaDB", ", ", "PostgreSQL", "\n", "1.7.0", "[36]", "\n", "GPL", "\n", "2016-12-15", "\n", "\n", "\n", "Geeklog", "\n", "PHP", "\n", "MySQL", ", ", "PostgreSQL", ", ", "Microsoft SQL Server", "\n", "2.1.3", "\n", "GPL", "\n", "2017-06-22", "[37]", "\n", "\n", "\n", "GetSimple CMS", "\n", "PHP", "\n", "Flat-file database", "\n", "3.3.13", "\n", "GPL", "\n", "2016-10-11", "[38]", "\n", "\n", "\n", "Habari", "\n", "PHP", "\n", "MySQL", ", ", "PostgreSQL", ",", "[39]", " ", "SQLite", "\n", "0.9.2", "\n", "Apache License", "\n", "2014-09-16", "[40]", "\n", "\n", "\n", "ImpressCMS", "\n", "PHP", "\n", "MySQL", "\n", "1.3.10", "\n", "GPL", "\n", "2016-12-28", "[41]", "\n", "\n", "\n", "ImpressPages", "\n", "PHP", "\n", "MySQL", "\n", "4.8.0", "\n", "GPL", " ", "MIT", "\n", "2016-10-30", "[42]", "\n", "\n", "\n", "Jamroom", "\n", "PHP", "\n", "MySQL", ", ", "MariaDB", ", ", "Percona", "\n", "6.1.0", "\n", "MPL", "\n", "2017-08-30", "[43]", "\n", "\n", "\n", "Joomla!", "\n", "PHP", "\n", "MySQL", ", ", "PostgreSQL", ", ", "MSSQL", ", ", "SQLite", "\n", "3.8.1", "\n", "GPL", "\n", "2017-10-04", "[44]", "\n", "\n", "\n", "Kajona", "\n", "PHP", "\n", "MySQL", ", ", "PostgreSQL", ", ", "SQLite", ", ", "MariaDB", ", ", "Oracle", "\n", "6.2", "\n", "LGPL", "\n", "2017-06-08", "[45]", "\n", "\n", "\n", "Known", "\n", "PHP", "\n", "MySQL", ", ", "MongoDB", "\n", "0.9.2", "\n", "Apache License", "\n", "2016-04-24", "[46]", "\n", "\n", "\n", "Magento", "\n", "PHP", "\n", "MySQL", "\n", "2.1.8", "\n", "OSL Ver. 3", " / ", "AFL Ver. 3", "\n", "2017-08-09", "[47]", "\n", "\n", "\n", "Mambo", "\n", "PHP", "\n", "MySQL", "\n", "4.6.5", "\n", "GPL", "\n", "2008-06-01", "\n", "\n", "\n", "MediaWiki", "\n", "PHP", "\n", "MySQL", ", ", "MariaDB", ", ", "PostgreSQL", ", ", "SQLite", ", ", "MSSQL", "[48]", "\n", "1.30.0", "\n", "GPL", "\n", "2017-12-12", "[49]", "\n", "\n", "\n", "MiaCMS", "\n", "PHP", "\n", "MySQL", "\n", "4.9", "\n", "GPL", "\n", "2009-07-29", "[50]", "\n", "\n", "\n", "Midgard CMS", "\n", "PHP", " (Midgard framework)", "\n", "MySQL", "\n", "12.0.9.2", "\n", "LGPL", "\n", "2012-09-26", "[51]", "\n", "\n", "\n", "MODX", "\n", "PHP", "\n", "MySQL", "\n", "2.5.8", "\n", "GPL", "\n", "2017-09-13", "[52]", "\n", "\n", "\n", "Novius OS", "\n", "PHP", "\n", "MySQL", "\n", "5.0.1 (Elche)", "\n", "AGPLv3", "\n", "2014-07-08", "[53]", "\n", "\n", "\n", "Nucleus CMS", "\n", "PHP", "\n", "MySQL", "\n", "3.64", "\n", "GPL", "\n", "2011-03-14", "[54]", "\n", "\n", "\n", "OctoberCMS", "\n", "PHP", "\n", "MySQL", ", ", "PostgreSQL", ", ", "SQLite", "\n", "431", "\n", "MIT", "\n", "2017-12-19", "[55]", "\n", "\n", "\n", "Omeka", "\n", "PHP", "\n", "MySQL", "\n", "2.5", "\n", "GPL", "\n", "2017-01-31", "[56]", "\n", "\n", "\n", "papaya CMS", "\n", "PHP", "\n", "MySQL", ", ", "PostgreSQL", ", ", "SQLite", "\n", "5.5.2", "\n", "GPL v2", "\n", "2013-02-12", "[57]", "\n", "\n", "\n", "pH7CMS", "\n", "PHP", "\n", "MySQL", ", ", "MariaDB", "\n", "8.0.6", "\n", "GPL 3.0", "\n", "2017-08-27", "[58]", "\n", "\n", "\n", "Phire CMS", "\n", "PHP", "\n", "MySQL", "\n", "2.1.0", "\n", "New BSD License", "\n", "2016-07-07", "[59]", "\n", "\n", "\n", "PHP-Nuke", "\n", "PHP", "\n", "MySQL", "\n", "8.3.2", "\n", "GPL", "\n", "2014-01-30", "[60]", "\n", "\n", "\n", "phpWebLog", "\n", "PHP", "\n", "MySQL", "\n", "0.5.3", "\n", "GPL", "\n", "2001-10-31", "\n", "\n", "\n", "phpWiki", "\n", "PHP", "\n", "MySQL", "\n", "1.5.5", "\n", "GPL", "\n", "2015-12-11", "[61]", "\n", "\n", "\n", "Pimcore", "\n", "PHP", "\n", "MySQL", "\n", "5.1", "\n", "GPL", "\n", "2018-01-02", "[62]", "\n", "\n", "\n", "PivotX", "\n", "PHP", "\n", "MySQL", ", ", "Flat-file database", "\n", "2.3.11", "\n", "GPL", "\n", "2015-06-21", "[63]", "\n", "\n", "\n", "Pixie (CMS)", "\n", "PHP", "\n", "MySQL", "\n", "1.0.4", "\n", "GPL", "\n", "2010-03-21", "\n", "\n", "\n", "Pluck", "\n", "PHP", "\n", "Flat-file database", "\n", "4.7.3", "\n", "GPL3", "\n", "2014-12-08", "[64]", "\n", "\n", "\n", "PmWiki", "\n", "PHP", "\n", "Flat-file database", "[65]", " ", "SQLite", "[66]", "\n", "2.2.106", "[67]", "\n", "GPL", "\n", "2017-12-01", "\n", "\n", "\n", "Prestashop", "\n", "PHP", "\n", "MySQL", "\n", "1.6.1.8", "\n", "Open Software License 3.0", "\n", "2016-10-26", "[68]", "\n", "\n", "\n", "ProcessWire", "\n", "PHP", "\n", "MySQL", "\n", "3.0.62", "\n", "Mozilla Public License 2.0", "\n", "2017-05-12", "[69]", "\n", "\n", "\n", "SMW+", "\n", "PHP", " - ", "MediaWiki", "\n", "MySQL", "\n", "1.7.0", "\n", "GPL", "\n", "2012-04-24", "[70]", "\n", "\n", "\n", "Serendipity", "\n", "PHP", " + ", "Smarty", "\n", "MySQL", ", ", "PostgreSQL", ", ", "MySQLi", ", ", "SQLite", "\n", "2.0.4", "\n", "BSD", "\n", "2016-09-26", "[71]", "\n", "\n", "\n", "SilverStripe", "\n", "PHP", "\n", "MySQL", ", ", "Microsoft SQL Server", ", ", "PostgreSQL", ", ", "SQLite", ", ", "Oracle", "\n", "3.5.3", "\n", "BSD", "\n", "2017-02-21", "[72]", "\n", "\n", "\n", "SPIP", "\n", "PHP", "\n", "MySQL", ", ", "PostgreSQL", ", ", "SQLite", "\n", "3.1.6", "\n", "LGPL", "\n", "2017-06-12", "[73]", "\n", "\n", "\n", "Textpattern", "\n", "PHP", "\n", "MySQL", "\n", "4.6.2", "\n", "GPL", "\n", "2016-10-21", "[74]", "\n", "\n", "\n", "Tiki Wiki CMS Groupware", "\n", "PHP", "\n", "MySQL", "\n", "15.2", "\n", "LGPL", "\n", "2016-07-06", "[75]", "\n", "\n", "\n", "TYPO3", "\n", "PHP", "\n", "MySQL", ", ", "Oracle", ", ", "PostgreSQL", "\n", "8.7.8", "[76]", "\n", "GPL", "\n", "2017-04-04", "[\u00b1]", "\n", "\n", "\n", "Wolf CMS", "\n", "PHP", "\n", "MySQL", ", ", "PostgreSQL", ", ", "SQLite", "\n", "0.8.3.1", "\n", "GPL v3", "\n", "2015-08-10", "[77]", "\n", "\n", "\n", "WordPress", "\n", "PHP", "\n", "MySQL", ", ", "MariaDB", "\n", "4.9.2", "[78]", "\n", "GPL", "\n", "2018-01-16", "[\u00b1]", "\n", "\n", "\n", "Xaraya", "\n", "PHP", "\n", "MySQL", ", ", "PostgreSQL", "\n", "2.4.0", "\n", "GPL", "\n", "2013-02-23", "[79]", "\n", "\n", "\n", "XOOPS", "\n", "PHP", "\n", "MySQL", "\n", "2.5.8", "\n", "GPL", "\n", "2016-05-27", "[80]", "\n", "\n", "\n", "Python", "[", "edit", "]", "\n", "\n", "\n", "Name", "\n", "Platform", "\n", "Supported databases", "\n", "Latest stable release", "\n", "Licenses", "\n", "Latest release date", "\n", "\n", "\n", "django CMS", "\n", "Python", "/", "Django", "\n", "PostgreSQL", ", ", "MySQL", ", ", "SQLite", " 3 and ", "Oracle", "\n", "3.3.0", "\n", "BSD", "\n", "2016-05-27", "\n", "\n", "\n", "Mezzanine", "\n", "Python", "/", "Django", "\n", "PostgreSQL", ", ", "MySQL", ", ", "SQLite", " 3 and ", "Oracle", "\n", "4.2.2", "\n", "BSD", "\n", "2016-11-25", "[81]", "\n", "\n", "\n", "MoinMoin", "\n", "Python", "\n", "Flat-file database", "\n", "1.9.9", "\n", "GPL", "\n", "2016-10-31", "[82]", "\n", "\n", "\n", "Plone", "\n", "Python", "/", "Zope", "\n", "MySQL", ", ", "PostgreSQL", ", ", "SQLite", ", ", "Oracle", ", ", "ZODB", ", via ", "Zope", "\n", "5.0.7", "\n", "GPL", "\n", "2017-03-15", "[83]", "\n", "\n", "\n", "Wagtail", "\n", "Python", "/", "Django", "\n", "PostgreSQL", ", ", "MySQL", ", ", "SQLite", " 3 and ", "Oracle", "\n", "1.12.2", "\n", "BSD", "\n", "2017-09-18", "[84]", "\n", "\n", "\n", "Ruby on Rails", "[", "edit", "]", "\n", "\n", "\n", "Name", "\n", "Platform", "\n", "Supported databases", "\n", "Latest stable release", "\n", "Licenses", "\n", "Latest release date", "\n", "\n", "\n", "Alchemy CMS", "\n", "Ruby on Rails", "\n", "PostgreSQL", ", ", "MySQL", ", ", "SQLite", "\n", "3.5", "\n", "BSD", "\n", "2016-12-22", "\n", "\n", "\n", "BrowserCMS", "\n", "Ruby on Rails", "\n", "MySQL", ", ", "SQLite", "\n", "3.5.7", "\n", "LGPL", "\n", "2013-07-05", "\n", "\n", "\n", "Radiant", "\n", "Ruby on Rails", "\n", "MySQL", ", ", "PostgreSQL", ", ", "SQLite", ", ", "DB2", "[85]", "\n", "1.1.4", "[86]", "\n", "MIT", "\n", "2013-09-24", "\n", "\n", "\n", "Refinery CMS", "\n", "Ruby on Rails", "\n", "MySQL", ", ", "PostgreSQL", ", ", "SQLite", "\n", "3.0.5", "[87]", "\n", "MIT", "\n", "2016-11-23", "\n", "\n", "\n", "Typo", "\n", "Ruby on Rails", "\n", "MySQL", ", ", "PostgreSQL", ", ", "SQLite", "\n", "8.3.3", "[88]", "\n", "MIT", "\n", "2016-11-03", "\n", "\n", "\n", "ColdFusion Markup Language (CFML)", "[", "edit", "]", "\n", "\n", "\n", "Name", "\n", "Platform", "\n", "Supported databases", "\n", "Latest stable release", "\n", "Licenses", "\n", "Latest release date", "\n", "\n", "\n", "ContentBox Modular CMS", "\n", "Lucee", " / ", "Railo", " / ", "Adobe ColdFusion", "\n", "MySQL", "/", "Microsoft SQL Server", "/", "PostgreSQL", "/", "HSQLDB", "/", "Apache Derby", "\n", "2.1.0", "\n", "Apache License", " or proprietary", "\n", "2015-05-05", "[89]", "\n", "\n", "\n", "Mura CMS", "\n", "Lucee", " / ", "Railo", " / ", "OpenBD", " / ", "Adobe ColdFusion", "\n", "MySQL", "/", "Microsoft SQL Server", "/", "Oracle", "\n", "7.06858", "\n", "GPL", " or proprietary", "\n", "2017-01-03", "[90]", "\n", "\n", "\n", "FarCry CMS", "\n", "Lucee", " / ", "Railo", " / ", "OpenBD", " / ", "Adobe ColdFusion", "\n", "MySQL", "/", "Microsoft SQL Server", "/", "Oracle", "/", "Postgres", "\n", "7.0.7", "\n", "GPL", " or proprietary", "\n", "2015-01-14", "[91]", "\n", "\n", "\n", "JavaScript", "[", "edit", "]", "\n", "\n", "\n", "Name", "\n", "Platform", "\n", "Supported databases", "\n", "Latest stable release", "\n", "Licenses", "\n", "Latest release date", "\n", "\n", "\n", "Ghost", "\n", "NodeJS", " (", "JavaScript", ")", "\n", "SQLite", ", ", "MySQL", "\n", "0.11.9", "[92]", "\n", "MIT", "\n", "2017-05-16", "\n", "\n", "\n", "TiddlyWiki", "\n", "JavaScript", "\n", "Flat-file database", "\n", "5.1.14", "[93]", "\n", "BSD license", "\n", "2017-04-27", "\n", "\n", "\n", "Others", "[", "edit", "]", "\n", "\n", "\n", "Name", "\n", "Platform", "\n", "Supported databases", "\n", "Latest stable release", "\n", "Licenses", "\n", "Latest release date", "\n", "\n", "\n", "OpenACS", "\n", "Tcl", " ", "AOLserver", "\n", "PostgreSQL", "/", "Oracle", "\n", "5.9.0", "\n", "GPL", "\n", "2015-12-01", "[94]", "\n", "\n", "\n", "Software as a service (SaaS)", "[", "edit", "]", "\n", "\n", "This section lists ", "proprietary software", " that includes software, hosting, and support with a single vendor. This section includes free services.", "\n", "\n", "\n", "\n", "Name", "\n", "Licensed version available", "\n", "Last stable version", "\n", "Web content management", "\n", "Group content management", "\n", "Enterprise content management", "\n", "\n", "\n", "Accrisoft Freedom", "\n", "Yes", "\n", "10.2", "\n", "Yes", "\n", "Yes", "\n", "Yes", "\n", "\n", "\n", "Adobe Business Catalyst", "\n", "\n", "V4", "\n", "Yes", "\n", "Yes", "\n", "Yes", "\n", "\n", "\n", "Alfresco", " Cloud", "\n", "Yes (Alfresco Community & Enterprise)", "\n", "2012.05", "\n", "No", "\n", "Yes", "\n", "Yes", "\n", "\n", "\n", "Crafter CMS", " Cloud", "\n", "Yes (Crafter CMS Enterprise)", "\n", "2017.08", "\n", "Yes", "\n", "Yes", "\n", "No", "\n", "\n", "\n", "censhare", "\n", "Yes", "\n", "2017.02", "\n", "Yes", "\n", "Yes", "\n", "Yes", "\n", "\n", "\n", "Clickability", " (", "Limelight Networks", ")", "\n", "No", "\n", "\n", "Yes", "\n", "No", "\n", "No", "\n", "\n", "\n", "Content SORT", "\n", "Yes", "\n", "2013.11", "\n", "Yes", "\n", "Yes", "\n", "Yes", "\n", "\n", "\n", "dotCMS", " Cloud", "[95]", "\n", "Yes", "\n", "4.2.0", "\n", "Yes", "\n", "Yes", "\n", "Yes", "\n", "\n", "\n", "Evoq based on ", "DNN", "/DotNetNuke", "\n", "Yes", "\n", "9.1", "\n", "Yes", "\n", "Yes", "\n", "Yes", "\n", "\n", "\n", "eXo", " Cloud", "\n", "Yes", "\n", "2014.01", "\n", "Yes", "\n", "Yes", "\n", "Yes", "\n", "\n", "\n", "Frontis Archive Publishing System", "\n", "Yes", "\n", "V3.12.01.11", "\n", "Yes", "\n", "Yes", "\n", "Yes", "\n", "\n", "\n", "Huddle", "\n", "Yes", "\n", "2012", "\n", "Yes", "\n", "Yes", "\n", "Yes", "\n", "\n", "\n", "Microsoft Office 365", "\n", "Yes (MS SharePoint, MS Lync, MS Exchange, MS Office)", "\n", "2013", "\n", "Yes", "\n", "Yes", "\n", "Yes", "\n", "\n", "\n", "nuBuilder", "\n", "Yes", "\n", "2014", "\n", "Yes", "\n", "Yes", "\n", "Yes", "\n", "\n", "\n", "O3Spaces", "\n", "Yes", "\n", "3.2.1", "\n", "Yes", "\n", "Yes", "\n", "No", "\n", "\n", "\n", "OU Campus", "\n", "Yes", "\n", "10.2.4", "\n", "Yes", "\n", "Yes", "\n", "\n", "\n", "\n", "Polopoly Web CMS", "\n", "\n", "10.2", "\n", "Yes", "\n", "Yes", "\n", "No", "\n", "\n", "\n", "Quintype", "\n", "Yes", "\n", "\n", "Yes", "\n", "Yes", "\n", "Yes", "\n", "\n", "\n", "uCoz", "\n", "\n", "\n", "Yes", "\n", "Yes", "\n", "No", "\n", "\n", "\n", "Windows Live", "\n", "No", "\n", "2011", "\n", "No", "\n", "Yes", "\n", "No", "\n", "\n", "\n", "Xait", "Porter", "\n", "Yes", "\n", "4.9.6", "\n", "No", "\n", "No", "\n", "Yes", "\n", "\n", "\n", "Zesty.io", "\n", "Yes (Multi-Tenant SaaS)", "\n", "Versionless", "\n", "Yes", "\n", "Yes", "\n", "Yes", "\n", "\n", "\n", "Proprietary software", "[", "edit", "]", "\n", "\n", "This section lists ", "proprietary software", " to be installed and managed on a user's own server. This section includes ", "freeware", " proprietary software.", "\n", "\n", "\nSystems listed on a light purple background are no longer in active development.", "\n", "\n", "\n", "Name", "\n", "Platform", "\n", "Supported databases", "\n", "Latest stable release", "\n", "Licenses", "\n", "Latest release date", "\n", "Web content management", "\n", "Group web content management", "\n", "Enterprise content management", "\n", "\n", "\n", "Alfresco", " (Enterprise & Community Edition)", "\n", "Java", "\n", "Oracle", ", ", "SQL Server", ", ", "MySQL", ", ", "PostgreSQL", ", ", "DB2", "\n", "4.0.2 Enterprise, 4.2.c Community", "\n", "Open Source", "\n", "2015-03", "[96]", "\n", "No", "\n", "Yes", "\n", "Yes", "\n", "\n", "\n", "Altitude3.Net", "\n", "ASP.NET", "\n", "SQL Server", "\n", "2015.07.14", "\n", "Proprietary software", "\n", "2015-7-14", "\n", "Yes", "\n", "Yes", "\n", "Yes", "\n", "\n", "\n", "censhare", "\n", "Java", "\n", "Oracle", "\n", "2017.2", "\n", "Proprietary software", "\n", "2017-05-12", "\n", "Yes", "\n", "Yes", "\n", "Yes", "\n", "\n", "\n", "Contentverse", "\n", "Java", "\n", "Oracle", ", ", "SQL Server", "\n", "8.1", "\n", "Proprietary software", "\n", "2014", "\n", "Yes", "\n", "Yes", "\n", "Yes", "\n", "\n", "\n", "Contegro", "\n", "ASP.NET", "\n", "SQL Server", "\n", "4.0.0", "\n", "Proprietary software", "\n", "2010-17-11", "\n", "Yes", "\n", "Yes", "\n", "No", "\n", "\n", "\n", "CoreMedia WCM", "\n", "Java", "\n", "JDBC-compliant databases", "\n", "8", "\n", "\n", "2015-03-19", "\n", "Yes", "\n", "No", "\n", "Yes", "\n", "\n", "\n", "DocLogix", "\n", "ASP.NET", "\n", "SQL Server", "\n", "10.0.0", "\n", "Proprietary software", "\n", "2015-12-15", "\n", "No", "\n", "No", "\n", "Yes", "\n", "\n", "\n", "dotCMS", "\n", "Java", "\n", "Oracle", ", ", "SQL Server", ", ", "MySQL", ", ", "PostgreSQL", "\n", "4.2.0", "\n", "Proprietary software", "\n", "2017-10-17", "\n", "Yes", "\n", "Yes", "\n", "Yes", "\n", "\n", "\n", "Evoq based on ", "DotNetNuke", " platform", "\n", "ASP.NET", "\n", "SQL Server", "\n", "9.1", "\n", "Proprietary software based on open source project", "\n", "2017-09-05", "\n", "Yes", "\n", "Yes", "\n", "Yes", "\n", "\n", "\n", "Ektron CMS", "\n", "ASP.NET", "\n", "SQL Server", "\n", "9.20", "\n", "Proprietary software", "\n", "2016-12-09", "\n", "Yes", "\n", "Yes", "\n", "Yes", "\n", "\n", "\n", "Elcom CMS", "\n", "ASP.NET", "\n", "SQL Server", "\n", "9.0", "\n", "Proprietary software", "\n", "2011-02-15", "\n", "Yes", "\n", "Yes", "\n", "Yes", "\n", "\n", "\n", "OpenText ", "Documentum", "\n", "Java", "\n", "Oracle", ", ", "SQL Server", ", ", "DB2", "\n", "7.3", "\n", "Proprietary software", "\n", "2016-11-10", "\n", "No", "\n", "No", "\n", "Yes", "\n", "\n", "\n", "Episerver CMS", "\n", "ASP.NET", "\n", "SQL Server", "\n", "10", "\n", "Proprietary software", "\n", "2017-01-16", "\n", "Yes", "\n", "Yes", "\n", "Yes", "\n", "\n", "\n", "ExpressionEngine", "\n", "PHP", "\n", "MySQL", "\n", "3.4.5", "\n", "Proprietary software", "\n", "2016-12-06", "\n", "Yes", "\n", "No", "\n", "Yes", "\n", "\n", "\n", "Hyland", " OnBase ECM", "\n", ".NET", "\n", "SQL Server", ", Oracle", "\n", "\n", "\n", "\n", "Yes", "\n", "Yes", "\n", "Yes", "\n", "\n", "\n", "IBM Enterprise Content Management", "\n", "Java", "\n", "Oracle", ", ", "DB2", "\n", "8.5", "\n", "Proprietary software", "\n", "2013", "\n", "Yes", "\n", "Yes", "\n", "Yes", "\n", "\n", "\n", "OpenText ", "Teamsite", "\n", "Java, .Net, XML, XSLT", "\n", "Oracle", ", ", "SQL Server", ", ", "DB2", ", ", "MySQL", "\n", "16.2", "\n", "Proprietary software", "\n", "2017-04", "\n", "Yes", "\n", "Yes", "\n", "Yes", "\n", "\n", "\n", "Jadu", "\n", "PHP", "\n", "MySQL", ", ", "SQL Server", "\n", "Continuously Released", "\n", "Proprietary software", "\n", "\n", "Yes", "\n", "Yes", "\n", "No", "\n", "\n", "\n", "Jahia", " Enterprise Distribution", "\n", "Java", "\n", "MySQL", ", ", "Oracle", ", ", "PostgreSQL", ", ", "Microsoft SQL Server", "\n", "6.6.2.3", "\n", "Proprietary software", "\n", "2013-12-20", "\n", "Yes", "\n", "Yes", "\n", "Yes", "\n", "\n", "\n", "Kentico CMS", "\n", "ASP.NET", "\n", "SQL Server", "\n", "8.1", "\n", "Proprietary software", "\n", "2016-10-30", "\n", "Yes", "\n", "Yes", "\n", "Yes", "\n", "\n", "\n", "Movable Type", "\n", "Perl", "\n", "MySQL", ", ", "Oracle", ", ", "SQL Server", "\n", "6.3.2", "\n", "Proprietary", "\n", "2016-09-27", "[97]", "\n", "Yes", "\n", "Yes", "\n", "Yes", "\n", "\n", "\n", "nuBuilder", "\n", "PHP", ", ", "JavaScript", ", ", "SQL", ", ", "AJAX", ", ", "jQuery", " and ", "JSON", "\n", "MySQL", "\n", "pro (3, previously the version system was numeric)", "\n", "Open source", "\n", "2014-2", "\n", "Yes", "\n", "Yes", "\n", "Yes", "\n", "\n", "\n", "Xait", "Porter (local license)", "\n", "PHP", "\n", "Oracle", "\n", "4.9.6", "\n", "Proprietary software", "\n", "2013-04", "\n", "No", "\n", "No", "\n", "Yes", "\n", "\n", "\n", "Oracle WebCenter Content", "\n(formerly Universal Content Management)", "\n", "Java", "\n", "Oracle", "\n", "11g", "\n", "\n", "\n", "Yes", "\n", "Yes", "\n", "Yes", "\n", "\n", "\n", "OU Campus", "\n", "Java", "\n", "MySQL", ", ", "Microsoft SQL Server", ", SAP Sybase ASE", "\n", "10.2.4", "\n", "Proprietary software", "\n", "2015-06-24", "\n", "Yes", "\n", "Yes", "\n", "Yes", "\n", "\n", "\n", "Pulse CMS", "\n", "PHP", "\n", "Flat-file database", "\n", "4.6.2", "\n", "\n", "2016-12-20", "[98]", "\n", "Yes", "\n", "No", "\n", "No", "\n", "\n", "\n", "Microsoft ", "SharePoint", "\n", "ASP.NET", "\n", "SQL Server", " (2005, 2008 or 2012), SQL Express", "\n", "6.0", "\n", "Proprietary, Open API", "\n", "2016-05-04", "\n", "Yes", "\n", "Yes", "\n", "Yes", "\n", "\n", "\n", "Sitecore", "\n", "ASP.NET", " (Webforms or MVC)", "\n", "SQL Server", " (2005, 2008, 2012), Oracle", "\n", "8.2.5", "\n", "Proprietary software", "\n", "2017-08-01", "\n", "Yes", "\n", "Yes", "\n", "Yes", "\n", "\n", "\n", "Sitekit CMS", "\n", "ASP.NET", "\n", "SQL Server", "\n", "9.5", "\n", "Proprietary software", "\n", "2012-02-01", "\n", "Yes", "\n", "Yes", "\n", "No", "\n", "\n", "\n", "Telligent Community", "\n", "ASP.NET", "\n", "SQL Server", "\n", "5.0", "\n", "\n", "2009-06-26", "\n", "Yes", "\n", "Yes", "\n", "No", "\n", "\n", "\n", "TerminalFour", " (SiteManager)", "\n", "Java", "\n", "MySQL", ", ", "Oracle", ", ", "SQL Server", "\n", "8.1.9.9", "\n", "Proprietary", "\n", "2017-06-24", "\n", "Yes", "\n", "Yes", "\n", "Yes", "\n", "\n", "\n", "Webnodes CMS", "\n", "ASP.NET", "\n", "SQL Server 2005+", ", ", "SQLCE", ", ", "MySQL", "\n", "3.6", "\n", "Proprietary", "\n", "2011-06-30", "\n", "Yes", "\n", "Yes", "\n", "Yes", "\n", "\n", "\n", "Other content management frameworks", "[", "edit", "]", "\n", "A ", "content management framework", " (", "CMF", ") is a system that facilitates the use of reusable components or customized software for managing Web content. It shares aspects of a ", "Web application framework", " and a ", "content management system", " (CMS).", "\n", "Below is a list of notable systems that claim to be CMFs.", "\n", "\n", "\n", "Name", "\n", "Technologies", "\n", "\n", "\n", "Apache Jackrabbit", "\n", "Java", "\n", "\n", "\n", "AxKit", "\n", "Perl", "\n", "\n", "\n", "Grand Central", "\n", "MySQL", " and PHP\u00a05", "\n", "\n", "\n", "Jakarta Slide", "\n", "Java", "\n", "\n", "\n", "Open Semantic Framework", "\n", "Drupal", ", ", "OWL", ", ", "PHP", ", and ", "RDF", "\n", "\n", "\n", "RadPHP", "\n", "MySQL, PHP 5.6+, PostgreSQL, and etc.", "\n", "\n", "\n", "See also", "[", "edit", "]", "\n", "\n", "\n", "Software portal", "\n", "\n", "\n", "\n", "Comparison of web frameworks", "\n", "Comparison of wiki software", "\n", "List of content management frameworks", "\n", "\n", "References", "[", "edit", "]", "\n", "\n", "\n", "^", " ", "\"Apache Download Mirrors\"", ". apache.org", ". Retrieved ", "2015-11-07", ".", "\u00a0", "\n", "^", " ", "\"Index of /roller/roller-5.1/v5.1.2\"", ". is.co.za", ". Retrieved ", "2015-11-07", ".", "\u00a0", "\n", "^", " ", "\"OpenSource Document Management 7.4.2 LogicalDOC DMS\"", ". ", "sourceforge.net", ".", "\u00a0", "\n", "^", " ", "\"Hippo CMS Release Notes Overview - Enterprise Java Content management system - Hippo CMS\"", ". ", "onehippo.org", ".", "\u00a0", "\n", "^", " ", "[Announce] Apache Lenya 2.0.4 released", ". Mail-archives.apache.org (2011-03-14). Retrieved on 2013-08-11.", "\n", "^", " ", "Composite C1 - Release History", ". Docs.composite.net. Retrieved on 2013-08-11.", "\n", "^", " ", "\"Releases \u00b7 dnnsoftware_Dnn.Platform\"", ". ", "GitHub", ". GitHub", ". Retrieved ", "27 September", " 2017", ".", "\u00a0", "\n", "^", " ", "Kentico Version History", "\n", "^", " ", "[1]", ". mojoPortal. Retrieved on 2016-04-10.", "\n", "^", " ", "http://docs.orchardproject.net/Documentation/Orchard-1-10-1.Release-Notes", "\n", "^", " ", "Umbraco releases", "\n", "^", " ", "\"Better CMS for Developers\"", ". devbridge.com. Archived from ", "the original", " on 2016-04-16", ". Retrieved ", "2016-05-13", ".", "\u00a0", "\n", "^", " ", "\"Sensenet ECM Release Notes\"", ". Sense/Net Inc.", "\u00a0", "\n", "^", " ", "\"EPrints 3.3.15 available to download\"", ". eprints.org", ". Retrieved ", "20 July", " 2016", ".", "\u00a0", "\n", "^", " ", "https://blog.foswiki.org/Blog/Foswiki214IsReleased", "\n", "^", " ", "http://ikiwiki.info/news/version_3.20170111//", "\n", "^", " ", "\"Movable Type 6.0.8 and 5.2.13 released to close security vulnerability\"", ". moveabletype.org", ". Retrieved ", "10 January", " 2017", ".", "\u00a0", "\n", "^", " ", "http://www.twiki.org/cgi-bin/view/Blog/BlogEntry201511x1", "\n", "^", " ", "http://blog.webgui.org/post/136751315064/webgui-71030-stable-release", "\n", "^", " ", "\"ATutor 2.2.2 Released\"", ". atutor.ca", ". Retrieved ", "23 July", " 2016", ".", "\u00a0", "\n", "^", " ", "\"Roadmap\"", ". ", "Backdrop CMS", ". Retrieved ", "2017-09-18", ".", "\u00a0", "\n", "^", " ", "\"System requirements\"", ". ", "b2evolution.net", ".", "\u00a0", "\n", "^", " ", "http://b2evolution.net/downloads/", "\n", "^", " ", "Gert Ebersbach. ", "\"CMSimple\"", ". ", "cmsimple.org", ".", "\u00a0", "\n", "^", " ", "http://www.cmsmadesimple.org/downloads/", "\n", "^", " ", "https://github.com/coderity/app", "\n", "^", " ", "\"Composr 10 RC18 released!\"", ". ", "Composr CMS", ". Retrieved ", "2016-09-25", ".", "\u00a0", "\n", "^", " ", "Version History", ". concrete5. Retrieved on 2017-12-21.", "\n", "^", " ", "Contao 4.4.0 is available", ". Contao.org.", "\n", "^", " ", "DokuWiki Changelog", ". dokuwiki.org. Retrieved 2017-02-24", "\n", "^", " ", "https://dotclear.org/", "\n", "^", " ", "\"System requirements\"", ". Drupal.org", ". Retrieved ", "2017-07-02", ".", "\u00a0", "\n", "^", " ", "\"Releases for Drupal core\"", ". ", "drupal.org", ". Retrieved ", "2017-12-22", ".", "\u00a0", "\n", "^", " ", "\"Version 2.4.1 Released\"", ". exponentcms.org", ". Retrieved ", "2017-08-19", ".", "\u00a0", "\n", "^", " ", "\"Introducing eZ Publish Platform 5.4\"", ". eZ Systems", ". Retrieved ", "2014-12-12", ".", "\u00a0", "\n", "^", " ", "\"Release notes\"", ". eZ Systems.", "\u00a0", "\n", "^", " ", "\"2.1.3\"", ". Geeklog", ". Retrieved ", "2017-07-26", ".", "\u00a0", "\n", "^", " ", "\"Version Change Log | GetSimple CMS\"", ". ", "get-simple.info", ".", "\u00a0", "\n", "^", " ", "\"FAQ\"", ". ", "habariproject.org", ".", "\u00a0", "\n", "^", " ", "\"Habari Project\"", ". habariproject.org", ". Retrieved ", "2016-05-13", ".", "\u00a0", "\n", "^", " ", "https://sourceforge.net/projects/impresscms/files/", "\n", "^", " ", "\"ImpressPages 4.8.0\"", ". ", "impresspages.org", ".", "\u00a0", "\n", "^", " ", "\"Jamroom 6.1 Has Been Released\"", ". Jamroom", ". Retrieved ", "2017-08-30", ".", "\u00a0", "\n", "^", " ", "\"Joomla! 3.8.1 Released\"", ". ", "Joomla.org", ". 2017-10-04", ". Retrieved ", "2017-11-02", ".", "\u00a0", "\n", "^", " ", "\"Releases\"", ". github.com", ". Retrieved ", "10 June", " 2017", ".", "\u00a0", "\n", "^", " ", "https://github.com/idno/Known/releases", "\n", "^", " ", "\"Open Source Ecommerce Software & Solutions - Magento\"", ". ", "magentocommerce.com", ".", "\u00a0", "\n", "^", " ", "https://www.mediawiki.org/wiki/Manual:Installation_requirements#Database_server", "\n", "^", " ", "\"Welcome to MediaWiki.org\"", ". News section", ". Retrieved ", "12 December", " 2017", ".", "\u00a0", "\n", "^", " ", "\"Home - MiaCMS Official Website\"", ". Miacms.org", ". Retrieved ", "2014-02-23", ".", "\u00a0", "\n", "^", " ", "\"Midgard2 12.09.1 \"Gjallarhorn\" released\"", " (Press release). The Midgard Project. Archived from ", "the original", " on 2012-10-15.", "\u00a0", "\n", "^", " ", "MODX Systems, LLC. ", "\"Downloads\"", ". MODX.", "\u00a0", "\n", "^", " ", "novius-os. ", "\"novius-os/CHANGELOG.md at elche \u00b7 novius-os/novius-os \u00b7 GitHub\"", ". Github.com", ". Retrieved ", "2014-02-23", ".", "\u00a0", "\n", "^", " ", "\"Nucleus CMS: Pure Publishing\"", ". ", "nucleuscms.org", ".", "\u00a0", "\n", "^", " ", "\"OctoberCMS Changelog\"", ".", "\u00a0", "\n", "^", " ", "\"Meet Omeka Classic 2.5 \u2013 Omeka\"", ". ", "omeka.org", ". Retrieved ", "2017-02-06", ".", "\u00a0", "\n", "^", " ", "\"papaya CMS / Open Source Content Management System (GPL) - Download\"", ". Papaya-cms.com", ". Retrieved ", "2014-02-23", ".", "\u00a0", "\n", "^", " ", "https://ph7cms.com/ph7cms-8-0-6-released/", "\n", "^", " ", "https://github.com/phirecms/phirecms/releases", "\n", "^", " ", "\"PHP-Nuke 8.3.2\"", ". ", "installatron.com", ".", "\u00a0", "\n", "^", " ", "carstenklapp. ", "\"PhpWiki\"", ". ", "SourceForge", ".", "\u00a0", "\n", "^", " ", "\"Get on board and download Pimcore! \u00b7 pimcore/pimcore\"", ". pimcore.org", ". Retrieved ", "2018-01-02", ".", "\u00a0", "\n", "^", " ", "\"PivotX 2.3.11 released - PivotX Blog\"", ". ", "pivotx.net", ".", "\u00a0", "\n", "^", " ", "\"home \u00b7 news \u00b7 Security Release 4.7.3\"", ". ", "pluck-cms.org", ".", "\u00a0", "\n", "^", " ", "\"PmWiki - PmWiki / FlatFileAdvantages\"", ". ", "pmwiki.org", ".", "\u00a0", "\n", "^", " ", "\"PmWiki - Cookbook / SQLite PageStore class\"", ". ", "pmwiki.org", ".", "\u00a0", "\n", "^", " ", "\"Release Notes\"", ". pmwiki.org", ". Retrieved ", "2018-01-05", ".", "\u00a0", "\n", "^", " ", "\"Download Older and Latest PrestaShop Versions. PrestaShop Developers\"", ". ", "prestashop.com", ".", "\u00a0", "\n", "^", " ", "\"ProcessWire 3.0.62\"", ". ", "processwire.com", ".", "\u00a0", "\n", "^", " ", "\"smwplus.com\"", ". smwplus.com", ". Retrieved ", "2014-02-23", ".", "\u00a0", "\n", "^", " ", "\"Serendipity 2.0.4 and 2.1-beta2 released\"", ". s9y.org. 2016-09-26", ". Retrieved ", "2016-11-18", ".", "\u00a0", "\n", "^", " ", "\"Download\"", ". ", "silverstripe.org", ".", "\u00a0", "\n", "^", " ", "http://www.spip.net/en_download", "\n", "^", " ", "\"Textpattern CMS 4.6.2 released: version string theory\"", ". Textpattern.com. 2016-10-21", ". Retrieved ", "2017-08-15", ".", "\u00a0", "\n", "^", " ", "\"Tiki 15.2, Tiki 14.4 and Tiki 12.9 released\"", ". Info.tiki.org. 2015-05-23", ". Retrieved ", "2016-07-07", ".", "\u00a0", "\n", "^", " ", "\"Download TYPO3\"", ". typo3.org", ". Retrieved ", "2017-10-24", ".", "\u00a0", "\n", "^", " ", "\"Releasing Wolf CMS 0.8.3.1\"", ". Retrieved ", "2015-08-15", ".", "\u00a0", "\n", "^", " ", "\"WordPress Versions\"", ". wordpress.org", ". Retrieved ", "2018-01-17", ".", "\u00a0", "\n", "^", " ", "http://www.xaraya.com/index.php/news/946", "\n", "^", " ", "http://xoops.org/modules/core/", "\n", "^", " ", "\"Mezzanine\"", ".", "\u00a0", "\n", "^", " ", "\"MoinMoinDownload - MoinMoin\"", ". ", "moinmo.in", ".", "\u00a0", "\n", "^", " ", "https://plone.org/products/plone/releases/5.0.4", "\n", "^", " ", "\"wagtail CHANGELOG\"", ". Retrieved ", "2017-09-29", ".", "\u00a0", "\n", "^", " ", "\"Download\"", ". ", "radiantcms.org", ".", "\u00a0", "\n", "^", " ", "\"radiant - RubyGems.org - your community gem host\"", ". ", "rubygems.org", ".", "\u00a0", "\n", "^", " ", "\"Refinery CMS 3.0.5 Released\"", ".", "\u00a0", "\n", "^", " ", "https://github.com/publify/publify/releases", "\n", "^", " ", "\"ContentBox\"", ". ortussolutions.com", ". Retrieved ", "2016-05-13", ".", "\u00a0", "\n", "^", " ", "http://www.getmura.com/blog/critical-security-update-for-mura-cms-all-versions-prior-to-7-0-6852/", "\n", "^", " ", "\"FarCry 7 (codename: Shiny) released\"", ". ", "FarCry Core Blog", ".", "\u00a0", "\n", "^", " ", "Ghost", " ", "https://github.com/TryGhost/Ghost/releases/tag/0.11.9", ".", "\u00a0", " ", "Missing or empty ", "|title=", " (", "help", ")", "\n", "^", " ", "\"TiddlyWiki \u2014 a non-linear personal web notebook\"", ". tiddlywiki.com", ". Retrieved ", "2017-06-16", ".", "\u00a0", "\n", "^", " ", "\"OpenACS 5.9.0 final released\"", ". ", "openacs.org", ".", "\u00a0", "\n", "^", " ", "dotCMS Cloud Content Management System", "\n", "^", " ", "\"alfrescowiki\"", ". ", "wiki.alfresco.com", ". Retrieved ", "2016-01-27", ".", "\u00a0", "\n", "^", " ", "Movable Type 6.3.2 released", ". MovableType.org (2016-09-27). Retrieved on 2017-01-10.", "\n", "^", " ", "\"Pulse 4.6.2 is here with deeper blog migration and more fixes\"", ". pulsecms.com", ". Retrieved ", "2016-12-20", ".", "\u00a0", "\n", "\n", "\n", "External links", "[", "edit", "]", "\n", "\n", " Media related to ", "Content management systems", " at Wikimedia Commons", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "v", "\n", "t", "\n", "e", "\n", "\n", "\n", "Content management systems", " (", "list", ")", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "Enterprise content management (ECM)", "\n", "Web content management system (WCMS)", "\n", "Component content management system (CCMS)", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "v", "\n", "t", "\n", "e", "\n", "\n", "\n", "Website management", "\n", "\n", "\n", "\n", "Concepts", "\n", "\n", "\n", "\n", "Overselling", "\n", "Web document", "\n", "Web content", "\n", "Web content lifecycle", "\n", "Web hosting service", "\n", "Web server", "\n", "Webmaster", "\n", "Website governance", "\n", "\n", "\n", "\n", "\n", "\n", "Web hosting control panels", " (", "comparison", ")", "\n", "\n", "\n", "\n", "AlternC", "\n", "cPanel", "\n", "DirectAdmin", "\n", "Domain Technologie Control", "\n", "GNUPanel", "\n", "H-Sphere", "\n", "i-MSCP", "\n", "InterWorx", "\n", "ISPConfig", "\n", "Kloxo", "\n", "Kloxo-MR", "\n", "Plesk", "\n", "Usermin", "\n", "Webmin", "\n", "\n", "\n", "\n", "\n", "\n", "Top-level domain", " registries", "\n", "\n", "\n", "\n", "Afilias", "\n", "CentralNic", "\n", "CIRA", "\n", "Donuts", "\n", "Neustar", "\n", "OVH", "\n", "Public Interest Registry", "\n", "Uniregistry", "\n", "Verisign", "\n", "\n", "\n", "\n", "\n", "\n", "Domain name", " managers and ", "registrars", "\n", "\n", "\n", "\n", "AusRegistry", "\n", "CZ.NIC", "\n", "CNNIC", "\n", "DENIC", "\n", "DNPric.es", "\n", "DNS Belgium", "\n", "Domainz", "\n", "Dynadot", "\n", "Enom", "\n", "Freenom", "\n", "Gandi", "\n", "GoDaddy", "\n", "Hover", "\n", "Infomaniak", "\n", "Japan Registry Services", "\n", "Jimdo", "\n", "Melbourne IT", "\n", "Museum Domain Management Association", "\n", "Name.com", "\n", "Namecheap", "\n", "Network Solutions", "\n", "Net4", "\n", "NIC M\u00e9xico", "\n", "Register.com", "\n", "Tucows", "\n", "Uniregistry", "\n", "UK2", "\n", "Web.com", "\n", "Wix.com", "\n", "\n", "\n", "\n", "\n", "\n", "Web content management system", "\n", "\n", "\n", "\n", "Document management system", "\n", "Wiki software", "\n", "Blog software", "\n", "\n", "\n", "\n", "\n", "\n", "\n\n\n", "\n", "\n", "\n", "\n"], "lastUpdated": " 17 January 2018, at 16:48."}, +{"title": "Node.js", "text": ["\n", "\n", "\n", "\n", "\n", "\n", "This article ", "relies too much on ", "references", " to ", "primary sources", ". ", "Please improve this by adding ", "secondary or tertiary sources", ".", " ", "(September 2015)", " ", "(", "Learn how and when to remove this template message", ")", "\n", "\n", "\n", "\n", "\n", "Node.js", "\n", "\n", "\n", "\n", "\n", "Original author(s)", "\n", "Ryan Dahl", "\n", "\n", "\n", "Developer(s)", "\n", "Node.js Developers", ", ", "Joyent", ", ", "contributors", "\n", "\n", "\n", "Initial release", "\n", "May\u00a027, 2009", "; 8 years ago", "\u00a0(", "2009-05-27", ")", "[1]", "\n", "\n", "\n", "\n", "\n", "\n", "Stable release", "\n", "\n", "9.4.0 & 8.9.4\u00a0(LTS) / January\u00a010, 2018", "; 8 days ago", "\u00a0(", "2018-01-10", ")", "[2]", " & January\u00a02, 2018", "; 16 days ago", "\u00a0(", "2018-01-02", ")", "[3]", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "Repository", "\n", "\n", "\n", "\n", "https://github.com/nodejs/node", "\n", "\n", "\n", "\n", "\n", "\n", "Development status", "\n", "Active (", "complete release list", ")", "\n", "\n", "\n", "Written in", "\n", "C", ", ", "C++", ", ", "JavaScript", "\n", "\n", "\n", "Operating system", "\n", "Linux", ", ", "macOS", ", ", "Solaris", ", ", "FreeBSD", ", ", "OpenBSD", ", ", "Microsoft Windows", " (older versions require ", "Cygwin", "), ", "webOS", ", ", "NonStop OS", "\n", "\n", "\n", "Type", "\n", "Event-driven", " ", "networking", "\n", "\n", "\n", "License", "\n", "MIT", "[4]", "\n", "\n", "\n", "Website", "\n", "nodejs", ".org", "\n", "\n", "\n", "Node.js", " is an ", "open-source", ", ", "cross-platform", " ", "JavaScript", " ", "run-time environment", " for executing JavaScript code ", "server-side", ". Historically, JavaScript was used primarily for ", "client-side scripting", ", in which scripts written in JavaScript are embedded in a webpage's HTML, to be run client-side by a JavaScript engine in the user's web browser. Node.js enables JavaScript to be used for ", "server-side scripting", ", and runs scripts server-side to produce ", "dynamic web page", " content ", "before", " the page is sent to the user's web browser. Consequently, Node.js has become one of the foundational elements of the \"JavaScript everywhere\" paradigm,", "[5]", " allowing ", "web application", " development to unify around a single programming language, rather than rely on a different language for writing server side scripts.", "\n", "Though ", ".js", " is the conventional ", "filename extension", " for JavaScript code, the name \"Node.js\" does not refer to a particular file in this context and is merely the name of the product. Node.js has an ", "event-driven architecture", " capable of ", "asynchronous I/O", ". These design choices aim to optimize ", "throughput", " and ", "scalability", " in ", "Web applications", " with many input/output operations, as well as for ", "real-time Web", " applications (e.g., ", "real-time communication", " programs and ", "browser games", ").", "[6]", "\n", "The Node.js ", "distributed development", " project, governed by the Node.js Foundation,", "[7]", " is facilitated by the ", "Linux Foundation", "'s Collaborative Projects program.", "[8]", "\n", "Corporate users of Node.js software include ", "GoDaddy", ",", "[9]", " ", "Groupon", ",", "[10]", " ", "IBM", ",", "[11]", " ", "LinkedIn", ",", "[12]", "[13]", " ", "Microsoft", ",", "[14]", "[15]", " ", "Netflix", ",", "[16]", " ", "PayPal", ",", "[17]", "[18]", " ", "Rakuten", ", ", "SAP", ", ", "Tuenti", ",", "[19]", " ", "Voxer", ",", "[20]", " ", "Walmart", ",", "[21]", " ", "Yahoo!", ",", "[22]", "\n", "\n", "\n", "\n", "Contents", "\n", "\n", "\n", "1", " ", "History", "\n", "2", " ", "Overview", "\n", "\n", "2.1", " ", "Platform architecture", "\n", "2.2", " ", "Industry support", "\n", "\n", "\n", "3", " ", "Releases", "\n", "4", " ", "Technical details", "\n", "\n", "4.1", " ", "Threading", "\n", "4.2", " ", "V8", "\n", "4.3", " ", "Package management", "\n", "4.4", " ", "Unified API", "\n", "4.5", " ", "Event loop", "\n", "\n", "\n", "5", " ", "Project governance", "\n", "6", " ", "Alternatives", "\n", "7", " ", "See also", "\n", "8", " ", "References", "\n", "9", " ", "Further reading", "\n", "10", " ", "External links", "\n", "\n", "\n", "\n", "History", "[", "edit", "]", "\n", "\n", "\n", "\n", "\nRyan Dahl, creator of Node.js, in 2010", "\n", "\n", "\n", "Node.js was originally written by ", "Ryan Dahl", " in 2009,", "[23]", " about thirteen years after the introduction of the first server-side JavaScript environment, Netscape's LiveWire Pro Web.", "[24]", " The initial release supported only Linux and Mac OS X. Its development and maintenance was led by Dahl and later sponsored by ", "Joyent", ".", "[25]", "\n", "Dahl was inspired to create Node.js after seeing a file upload ", "progress bar", " on ", "Flickr", ". The browser did not know how much of the file had been uploaded and had to query the Web server. Dahl desired an easier way.", "[6]", "[26]", "\n", "Dahl criticized the limited possibilities of the most popular web server in 2009, ", "Apache HTTP Server", ", to handle a lot of concurrent connections (up to 10,000 and more) and the most common way of creating code (sequential programming), when code either blocked the entire process or implied multiple execution stacks in the case of simultaneous connections.", "[27]", "\n", "Dahl demonstrated the project at the inaugural European JSConf on November 8, 2009.", "[28]", "[29]", "[30]", " Node.js combined ", "Google", "'s V8 JavaScript engine, an ", "event loop", ", and a low-level ", "I/O", " ", "API", ".", "[31]", "\n", "In January 2010, a ", "package manager", " was introduced for the Node.js environment called ", "npm", ".", "[32]", " The package manager makes it easier for programmers to publish and share source code of Node.js libraries and is designed to simplify installation, updating, and uninstallation of libraries.", "[31]", "\n", "In June 2011, Microsoft and Joyent implemented a native ", "Windows", " version of Node.js.", "[33]", " The first Node.js build supporting Windows was released in July 2011.", "\n", "In January 2012, Dahl stepped aside, promoting coworker and ", "npm", " creator Isaac Schlueter to manage the project.", "[34]", " In January 2014, Schlueter announced that Timothy J. Fontaine would lead the project.", "[35]", "\n", "In December 2014, Fedor Indutny started io.js, a ", "fork", " of Node.js. Due to the internal conflict over Joyent's governance, io.js was created as an ", "open governance", " alternative with a separate technical committee.", "[36]", "[37]", " Unlike Node.js,", "[38]", " the authors planned to keep io.js up-to-date with the latest releases of the ", "Google V8", " JavaScript engine.", "[39]", "\n", "In February 2015, the intent to form a neutral Node.js Foundation was announced. By June 2015, the Node.js and io.js communities voted to work together under the Node.js Foundation.", "[40]", "\n", "In September 2015, Node.js v0.12 and io.js v3.3 were merged back together into Node v4.0.", "[41]", " This brought V8 ", "ES6", " features into Node.js, and a long-term support release cycle.", "[42]", " As of 2016, the io.js website recommends that developers switch back to Node.js and that no further releases of io.js are planned due to the merger.", "[43]", "\n", "Overview", "[", "edit", "]", "\n", "Node.js allows the creation of ", "Web servers", " and networking tools using ", "JavaScript", " and a collection of \"modules\" that handle various core functionality.", "[28]", "[31]", "[44]", "[45]", "[46]", " Modules are provided for ", "file system", " I/O, networking (", "DNS", ", ", "HTTP", ", ", "TCP", ", ", "TLS/SSL", ", or ", "UDP", "), ", "binary", " data (buffers), ", "cryptography", " functions, ", "data streams", ", and other core functions.", "[31]", "[45]", "[47]", " Node.js's modules use an API designed to reduce the complexity of writing server applications.", "[31]", "[45]", "\n", "Node.js applications can run on ", "Linux", ", ", "macOS", ", ", "Microsoft Windows", ", ", "NonStop", ",", "[48]", " and ", "Unix", " servers. Alternatively, they can be written with ", "CoffeeScript", "[49]", " (a JavaScript alternative), ", "Dart", " or ", "TypeScript", " (", "strongly typed", " forms of JavaScript), or any other language that ", "can compile to JavaScript", ".", "[49]", "[50]", "\n", "Node.js is primarily used to build network programs such as Web servers.", "[44]", " The biggest difference between Node.js and ", "PHP", " is that most functions in PHP ", "block", " until completion (commands execute only after previous commands have completed), while functions in Node.js are designed to be ", "non-blocking", " (commands execute ", "concurrently", " or even in ", "parallel", ",", "[51]", "[52]", " and use ", "callbacks", " to signal completion or failure).", "[44]", "\n", "Platform architecture", "[", "edit", "]", "\n", "Node.js brings ", "event-driven programming", " to ", "web servers", ", enabling development of fast web servers in JavaScript.", "[31]", " Developers can create highly scalable servers without using ", "threading", ", by using a simplified model of ", "event-driven programming", " that uses callbacks to signal the completion of a task.", "[31]", " Node.js connects the ease of a scripting language (JavaScript) with the power of Unix network programming.", "[31]", "\n", "Node.js was built on the ", "Google", " ", "V8 JavaScript engine", " since it was open-sourced under the ", "BSD license", ", extremely fast, and proficient with internet fundamentals such as ", "HTTP", ", ", "DNS", ", ", "TCP", ".", "[28]", " Also, ", "JavaScript", " was a well-known language, making Node.js immediately accessible to the entire ", "web development community", ".", "[28]", "\n", "Industry support", "[", "edit", "]", "\n", "There are thousands of open-source libraries for Node.js, most of them hosted on the ", "npm", " website. The Node.js developer community has two main mailing lists and the ", "IRC", " channel #node.js on ", "freenode", ". There are multiple developer conferences and events that support the Node.js community including ", "NodeConf", ", ", "Node Interactive", " and ", "Node Summit", " as well as a number of regional events.", "\n", "The open-source community has developed ", "web frameworks", " to accelerate the development of applications. Such frameworks include Connect, ", "Express.js", ", ", "Socket.IO", ", Koa.js, Hapi.js, ", "Sails.js", ", ", "Meteor", ", Derby, and many others.", "[31]", "[53]", "\n", "Modern desktop ", "IDEs", " provide editing and debugging features specifically for Node.js applications. Such IDEs include ", "Atom", ", ", "Brackets", ", ", "JetBrains", " ", "WebStorm", ",", "[54]", "[55]", " ", "Microsoft Visual Studio", " (with Node.js Tools for Visual Studio,", "[56]", " or ", "TypeScript", " with Node definitions,", "[57]", "[58]", "[59]", "[60]", ") ", "NetBeans", ",", "[61]", " ", "Nodeclipse", " Enide Studio ", "[62]", " (", "Eclipse", "-based), and ", "Visual Studio Code", ".", "[63]", "[64]", " Certain online web-based IDEs also support Node.js, such as ", "Codeanywhere", ", ", "Codenvy", ", ", "Cloud9 IDE", ", ", "Koding", ", and the visual flow editor in ", "Node-RED", ".", "\n", "Releases", "[", "edit", "]", "\n", "\n", "\n", "Release", "\n", "Code name", "\n", "Release date", "\n", "LTS status", "\n", "Active LTS start", "\n", "Maintenance start", "\n", "Maintenance end", "\n", "\n", "\n", "v0.10.x", "\n", "\n", "2013-03-11", "\n", "Old version, no longer supported:", " End-of-life", "\n", "-", "\n", "2015-10-01", "\n", "2016-10-31", "\n", "\n", "\n", "v0.12.x", "\n", "\n", "2015-02-06", "\n", "Old version, no longer supported:", " End-of-life", "\n", "-", "\n", "2016-04-01", "\n", "2016-12-31", "\n", "\n", "\n", "4.x", "\n", "Argon", "\n", "2015-09-08", "\n", "Older version, yet still supported:", " Maintenance", "\n", "2015-10-01", "\n", "2017-04-01", "\n", "April 2018", "\n", "\n", "\n", "5.x", "\n", "\n", "2015-10-29", "\n", "No LTS", "\n", "N/A", "\n", "\n", "\n", "6.x", "\n", "Boron", "\n", "2016-04-26", "\n", "Current stable version:", " ", "Active", "\n", "2016-10-18", "\n", "April 2018", "\n", "April 2019", "\n", "\n", "\n", "7.x", "\n", "\n", "2016-10-25", "\n", "No LTS", "\n", "N/A", "\n", "\n", "\n", "8.x", "\n", "Carbon", "[65]", "\n", "2017-05-30", "\n", "Current stable version:", " ", "Active", "\n", "2017-10-31", "\n", "April 2019", "\n", "December 2019", "\n", "\n", "\n", "9.x", "\n", "\n", "2017-10-31", "\n", "No LTS", "\n", "N/A", "\n", "\n", "\n", "10.x", "\n", "\n", "\n", "Future release:", " Pending", "\n", "October 2018", "\n", "April 2020", "\n", "April 2021", "\n", "\n", "\n", "New major releases of Node.js are cut from the ", "GitHub", " master branch every six months. Even-numbered versions are cut in April and odd-numbered versions are cut in October. When a new odd version is released, the previous even version undergoes transition to Long Term Support (LTS), which gives that version 18 months of active support from the date it is designated LTS. After these 18 months expire, an LTS release will receive an additional 12 months of maintenance support. An active version will receive non-breaking backports of changes a few weeks after they land in the current release. A maintenance release will only receive critical fixes and documentation updates.", "[66]", "\n", "The strategy and policy of LTS releases are managed by the LTS Working Group in collaboration with the Technical Steering Committee of the Node.js Foundation.", "\n", "Technical details", "[", "edit", "]", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "This section ", "may be too technical for most readers to understand", ". Please ", "help improve it", " to ", "make it understandable to non-experts", ", without removing the technical details. ", "(August 2015)", " ", "(", "Learn how and when to remove this template message", ")", "\n", "\n", "\n", "\n", "Node.js is a Javascript runtime environment that processes incoming requests in a loop, called the ", "event loop", ".", "\n", "Threading", "[", "edit", "]", "\n", "Node.js operates on a ", "single thread", ", using ", "non-blocking I/O", " calls, allowing it to support tens of thousands of concurrent connections without incurring the cost of thread ", "context switching", ".", "[67]", " The design of sharing a single thread among all the requests that use the ", "observer pattern", " is intended for building highly concurrent applications, where any function performing I/O must use a ", "callback", ". In order to accommodate the single-threaded event loop, Node.js utilizes the ", "libuv", " library that, in turn, uses a fixed-sized thread pool that is responsible for some of the non-blocking asynchronous I/O operations.", "[6]", "\n", "A downside of this single-threaded approach is that Node.js doesn't allow ", "vertical scaling", " by increasing the number of ", "CPU cores", " of the machine it is running on without using an additional module, such as cluster,", "[51]", " StrongLoop Process Manager,", "[68]", " or pm2.", "[69]", " However, developers can increase the default number of threads in the libuv thread pool; these threads are likely to be distributed across multiple cores by the server operating system.", "[70]", "\n", "Execution of parallel tasks in Node.js is handled by a thread pool. The main thread call functions post tasks to the shared task queue that threads in the thread pool pull and execute. Inherently non-blocking system functions such as networking translates to kernel-side non-blocking sockets, while inherently blocking system functions such as file I/O run in a blocking way on its own thread. When a thread in the thread pool completes a task, it informs the main thread of this, which in turn, wakes up and execute the registered callback. Since callbacks are handled in serial on the main thread, long lasting computations and other CPU-bound tasks will freeze the entire event-loop until completion.", "[", "citation needed", "]", "\n", "V8", "[", "edit", "]", "\n", "V8", " is the JavaScript execution engine built for ", "Google Chrome", " and open-sourced by Google in 2008. Written in ", "C++", ", V8 compiles JavaScript source code to native ", "machine code", " instead of interpreting it in real time.", "[6]", "\n", "Node.js uses ", "libuv", " to handle asynchronous events. Libuv is an abstraction layer for network and file system functionality on both Windows and ", "POSIX", "-based systems such as Linux, macOS, OSS on NonStop, and Unix.", "\n", "The core functionality of Node.js resides in a JavaScript library. The Node.js bindings, written in C++, connect these technologies to each other and to the operating system.", "\n", "Package management", "[", "edit", "]", "\n", "npm", " is the pre-installed package manager for the Node.js server platform. It is used to install Node.js programs from the npm registry, organizing the installation and management of third-party Node.js programs. npm is not to be confused with the ", "CommonJS", " ", "require()", " statement. It is not used to load code; instead, it is used to install code and manage code dependencies from the command line. The packages found in the npm registry can range from simple helper libraries such as ", "Lodash", " to task runners such as ", "Grunt", ".", "\n", "Unified API", "[", "edit", "]", "\n", "Node.js can be combined with a browser, a database supporting JSON data (such as ", "Postgres", ",", "[71]", " ", "MongoDB", ", or ", "CouchDB", ") and ", "JSON", " for a unified JavaScript development stack. With the adaptation of what were essentially server-side development patterns such as ", "MVC", ", ", "MVP", ", ", "MVVM", ", etc., Node.js allows the ", "reuse", " of the same model and service interface between client-side and server-side.", "\n", "Event loop", "[", "edit", "]", "\n", "Node.js registers itself with the operating system in order to be notified when a connection is made, and the operating system will issue a callback. Within the Node.js runtime, each connection is a small ", "heap allocation", ". Traditionally, relatively heavyweight ", "OS", " processes or threads handled each connection. Node.js uses an event loop for scalability, instead of processes or threads.", "[72]", " In contrast to other event-driven servers, Node.js's event loop does not need to be called explicitly. Instead callbacks are defined, and the server automatically enters the event loop at the end of the callback definition. Node.js exits the event loop when there are no further callbacks to be performed.", "\n", "Project governance", "[", "edit", "]", "\n", "In 2015, various branches of the greater Node.js community began working under the vendor-neutral Node.js Foundation. The stated purpose of the organization \"is to enable widespread adoption and help accelerate development of Node.js and other related modules through an open governance model that encourages participation, technical contribution, and a framework for long-term stewardship by an ecosystem invested in Node.js' success.\"", "[73]", "\n", "The Node.js Foundation Technical Steering Committee (TSC) is the technical governing body of the Node.js Foundation. The TSC is responsible for the core Node.js repo as well as dependent and adjacent projects. Generally the TSC delegates administration of these projects to working groups or committees.", "[74]", " The LTS group that manages long term supported releases is one such group. Other current groups include: Website, Streams, Build, Diagnostics, i18n, Evangelism, Docker, Addon API, Benchmarking, Post-mortem, Intl, Documentation, and Testing.", "[75]", "\n", "In August, 2017, a governance breakdown precipitated efforts to repair the resulting damage and to create a path to future stability of governance.", "[76]", "\n", "Alternatives", "[", "edit", "]", "\n", "Similar open source event-driven server frameworks for other platforms include:", "\n", "\n", "EventMachine", " for ", "Ruby", "\n", "libuv", " for ", "C", "\n", "Perl Object Environment", " for ", "Perl", "\n", "ReactPHP (libev or libevent) or Amp (libev, libevent, or libuv) for ", "PHP", "\n", "Twisted", " for ", "Python", "\n", "Vert.x", " for ", "Java", ", ", "JavaScript", ", ", "Apache Groovy", ", ", "Ruby", ", ", "Python", ", ", "Scala", ", ", "Clojure", ", and ", "Ceylon", "\n", "\n", "Node.js may utilize code written in other programming languages using:", "\n", "\n", "Edge.js allows ", "Microsoft .NET", " applications to run Node.js scripts in-process, and allows Node.js servers to utilize .NET compiled code via async callbacks.", "[77]", "[78]", "[79]", "\n", "Luvit implements the Node.js APIs for the language ", "Lua", "[80]", "\n", "Node-julia allows using ", "Julia", " with Node.js/io.js", "\n", "The COBOL bridge for Node.js allows using ", "COBOL", " with Node.js", "[81]", "\n", "FreePascal", " 3.0.4 contains an Object Pascal to JavaScript transpiler, pas2js ", "[82]", " that can be configured to target Node.js and can utilize the ", "Lazarus (IDE)", " ide, including code completion and debugging.", "\n", "\n", "See also", "[", "edit", "]", "\n", "\n", "\n", "Free software portal", "\n", "\n", "\n", "\n", "List of JavaScript libraries", "\n", "MEAN (software bundle)", "\n", "Online JavaScript IDE", "\n", "Rhino (JavaScript engine)", "\n", "Node-RED", "\n", "Application server", "\n", "\n", "References", "[", "edit", "]", "\n", "\n", "\n", "^", " ", "\"node-v0.x-archive on GitHub\"", ". Retrieved ", "2 August", " 2014", ".", "\u00a0", "\n", "^", " ", "\"Node.js 9 ChangeLog\"", ". Retrieved ", "15 Nov", " 2017", ".", "\u00a0", "\n", "^", " ", "\"Node.js 8 ChangeLog\"", ". Retrieved ", "6 Dec", " 2017", ".", "\u00a0", "\n", "^", " ", "\"node/LICENSE at master\"", ". ", "GitHub", ". Node.js Foundation. 12 July 2017", ". Retrieved ", "12 July", " 2017", ".", "\u00a0", "\n", "^", " ", "https://www.ibm.com/developerworks/community/blogs/gcuomo/entry/javascript_everywhere_and_the_three_amigos?lang=en", "\n", "^ ", "a", " ", "b", " ", "c", " ", "d", " ", "Laurent Orsini", " (2013-11-07). ", "\"What You Need To Know About Node.js\"", ". readwrite. Archived from ", "the original", " on 2013-11-07", ". Retrieved ", "2016-01-22", ".", "\u00a0", "\n", "^", " ", "\"Node.js Foundation - Node.js\"", ". Retrieved ", "4 July", " 2015", ".", "\u00a0", "\n", "^", " ", "\"Linux Foundation Collaborative Projects\"", ". Retrieved ", "4 July", " 2015", ".", "\u00a0", "\n", "^", " ", "Why GoDaddy's Nodejitsu deal is great for Node.js", ", ", "VentureBeat", ", February 10, 2015", "\n", "^", " ", "Geitgey, Adam (30 October 2013). ", "\"I-Tier: Dismantling the Monoliths\"", ". Groupon", ". Retrieved ", "30 April", " 2014", ".", "\u00a0", "\n", "^", " ", "\"IBM Bluemix\"", ". Retrieved ", "4 July", " 2015", ".", "\u00a0", "\n", "^", " ", "\"You'll never believe how LinkedIn built its new iPad app\"", ". VentureBeat. May 2, 2012", ". Retrieved ", "May 10,", " 2012", ".", "\u00a0", "\n", "^", " ", "\"Blazing fast node.js: 10 performance tips from LinkedIn Mobile\"", ". Retrieved ", "7 April", " 2015", ".", "\u00a0", "\n", "^", " ", "Baxter-Reynolds, Matthew (November 9, 2011). ", "\"Here's why you should be happy that Microsoft is embracing Node.js\"", ". London: The Guardian", ". Retrieved ", "May 10,", " 2012", ".", "\u00a0", "\n", "^", " ", "\"WebMatrix - Front End Web Developers take note (ASP.NET, PHP, node.js and more)\"", ". Retrieved ", "2 August", " 2014", ".", "\u00a0", "\n", "^", " ", "Node.js in Flames", " November 19, 2014", "\n", "^", " ", "\"Clash of the Titans: Releasing the Kraken, NodeJS @paypal\"", ". fluentconf.com. May 28, 2013", ". Retrieved ", "September 11,", " 2013", ".", "\u00a0", "\n", "^", " ", "\"All such companies and their products in which Node.js is used\"", ". Retrieved ", "2 August", " 2014", ".", "\u00a0", "\n", "^", " ", "\"SAP AppBuilder\"", ". SAP. March 10, 2014", ". Retrieved ", "March 10,", " 2014", ".", "\u00a0", "\n", "^", " ", "The Node Ahead: JavaScript leaps from browser into future", ", ", "The Register", ", March 1, 2011", "\n", "^", " ", "\"Why Walmart is using Node.js\"", ". VentureBeat. January 24, 2012", ". Retrieved ", "May 10,", " 2012", ".", "\u00a0", "\n", "^", " ", "\"Why You Really Need (A) node.js development services\"", ". codebrahma. January 10, 2018", ". Retrieved ", "January 10,", " 2018", ".", "\u00a0", "\n", "^", " ", "\"About Node.js, and why you should add Node.js to your skill set?\"", ". ", "Training.com", ". Training.com", ". Retrieved ", "23 October", " 2016", ".", "\u00a0", "\n", "^", " ", "\"Netscape opens intranet attack\"", ". ", "CNET", ". Retrieved ", "2017-04-20", ".", "\u00a0", "\n", "^", " ", "Ryan Dahl (2010-11-09). ", "\"Joyent and Node\"", ". Google Groups", ". Retrieved ", "2015-02-05", ".", "\u00a0", "\n", "^", " ", "Harris, Amber (April 1, 2012). ", "\"The Birth of Node: Where Did it Come From? Creator Ryan Dahl Shares the History\"", ". Devops Angle", ". Retrieved ", "26 October", " 2013", ".", "\u00a0", "\n", "^", " ", "\"PHP 7 vs Node.js? They Can Be Partners, Not Competitors For a Developer!\"", ". Retrieved ", "21 December", " 2016", ".", "\u00a0", "\n", "^ ", "a", " ", "b", " ", "c", " ", "d", " ", "Sams Teach Yourself Node.js in 24 Hours", ", Sams Publishing, 05-Sep-2012", "\n", "^", " ", "\"Ryan Dahl at JSConf EU 2009\"", ".", "\u00a0", "\n", "^", " ", "\"Ryan Dahl at JSConf EU 2009 Video\"", ".", "\u00a0", "\n", "^ ", "a", " ", "b", " ", "c", " ", "d", " ", "e", " ", "f", " ", "g", " ", "h", " ", "i", " ", "Professional Node.js: Building JavaScript Based Scalable Software", ", John Wiley & Sons, 01-Oct-2012", "\n", "^", " ", "\"Earliest releases of npm\"", ". ", "GitHub", ". Retrieved ", "27 July", " 2016", ".", "\u00a0", "\n", "^", " ", "\"Porting Node to Windows With Microsoft's Help\"", ". Retrieved ", "17 April", " 2016", ".", "\u00a0", "\n", "^", " ", "Dahl, Ryan. ", "\"New gatekeeper\"", ". Retrieved ", "26 October", " 2013", ".", "\u00a0", "\n", "^", " ", "Schlueter, Isaac (January 15, 2014). ", "\"The Next Phase of Node.js\"", ". Retrieved ", "21 January", " 2014", ".", "\u00a0", "\n", "^", " ", "Krill, Paul (Dec 4, 2014). ", "\"Why io.js Decided to Fork Node.js\"", ". JavaWorld", ". Retrieved ", "Dec 15,", " 2014", ".", "\u00a0", "\n", "^", " ", "Q&A: Why io.js decided to fork Node.js", ", ", "Infoworld", " Tech Watch", "\n", "^", " ", "Ben Noordhuis (Nov 12, 2014). ", "\"Issue 3692: function suddenly becomes undefined\"", ". V8 JavaScript Engine Issues", ". Retrieved ", "2 February", " 2015", ".", "\u00a0", "\n", "^", " ", "Mikeal, Rogers (January 28, 2015). ", "\"State of io.js\"", ". Retrieved ", "2 February", " 2015", ".", "\u00a0", "\n", "^", " ", "\"Node.js Foundation Advances Community Collaboration, Announces New Members and Ratified Technical Governance\"", ". Retrieved ", "4 July", " 2015", ".", "\u00a0", "\n", "^", " ", "\"Node.js Foundation Combines Node.js and io.js Into Single Codebase in New Release\"", ". Retrieved ", "28 Jan", " 2016", ".", "\u00a0", "\n", "^", " ", "\"io.js and Node.js merge\"", ". Retrieved ", "27 June", " 2015", ".", "\u00a0", "\n", "^", " ", "Io.js, JavaScript I/O", ", ", "\"io.js has merged with the Node.js project again. There won't be any further io.js releases. All of the features in io.js are available in Node.js v4 and above.\"", "\n", "^ ", "a", " ", "b", " ", "c", " ", "Node.js for PHP Developers", ", O'Reilly Media, Inc., 2013", "\n", "^ ", "a", " ", "b", " ", "c", " ", "Node.js Essentials", ", Packt Publishing, 09-Sep-2014", "\n", "^", " ", "Smashing Node.js: JavaScript Everywhere", ", John Wiley & Sons, 14-Aug-2012", "\n", "^", " ", "Modules", ", Nodejs Website", "\n", "^", " ", "\"bomBora - Node.js for NonStop\"", ". Infrasoft", ". Retrieved ", "14 August", " 2015", ".", "\u00a0", "\n", "^ ", "a", " ", "b", " ", "\"CoffeeScript on Node.js\"", ". O'Reilly Media, Inc. April 15, 2013", ". Retrieved ", "May 17,", " 2015", ".", "\u00a0", "\n", "^", " ", "\"List of languages that compile to JS\"", ". Retrieved ", "October 19,", " 2017", ".", "\u00a0", "\n", "^ ", "a", " ", "b", " ", "\"Node.js's cluster module\"", ". Retrieved ", "October 19,", " 2017", ".", "\u00a0", "\n", "^", " ", "\"Node.js's child_process module\"", ". Retrieved ", "October 19,", " 2017", ".", "\u00a0", "\n", "^", " ", "Express.js Guide: The Comprehensive Book on Express.js", ", Azat Mardan, 28-May-2014", "\n", "^", " ", "Node.js", ", WebStorm supports integration with the Node.js runtime environment, WebStorm Help", "\n", "^", " ", "Running and Debugging Node.js", ", WebStorm Help", "\n", "^", " ", "\"Node.js Tools for Visual Studio\"", ". Retrieved ", "1 Feb", " 2016", ".", "\u00a0", "\n", "^", " ", "soywiz/typescript-node-definitions TypeScript's typings for some popular node.js modules", ", GitHub", "\n", "^", " ", "DefinitelyTyped", ", GitHub", "\n", "^", " ", "The repository for high quality TypeScript type definitions", " ", "Archived", " February 3, 2016, at the ", "Wayback Machine", ".", "\n", "^", " ", "ImageBoard, A Node.js + Express + MongoDB application built using TypeScript on the server", ", TypeScript Samples", "\n", "^", " ", "Krill, Paul (2015-11-10). ", "\"Node.js takes center stage in NetBeans 8.1\"", ". ", "InfoWorld", ".", "\u00a0", "\n", "^", " ", "Nodeclipse, Enide -- Node.JS development in Eclipse", ", Nodeclipse Website", "\n", "^", " ", "Hello Visual Studio Code (with NodeJS)", ", Channel 9, Microsoft", "\n", "^", " ", "Node.js Applications with VS Code", ", Visual Studio Code", "\n", "^", " ", "https://github.com/nodejs/LTS/issues/163", "\n", "^", " ", "\"nodejs/Release\"", ". ", "GitHub", ". Retrieved ", "2017-11-15", ".", "\u00a0", "\n", "^", " ", "\"Node.js w/1M concurrent connections!\"", ". ", "caustik's blog", ".", "\u00a0", "\n", "^", " ", "\"StrongLoop Process Manager\"", ".", "\u00a0", "\n", "^", " ", "\"GitHub - Unitech/pm2: Production process manager for Node.js applications with a built-in load balancer\"", ". ", "GitHub", ".", "\u00a0", "\n", "^", " ", "Aleksander Kasiuk (22 April 2015). ", "\"On problems with threads in node.js - Future Processing\"", ".", "\u00a0", "\n", "^", " ", "\"PostgreSQL: Documentation: 9.4: JSON Types\"", ". ", "www.postgresql.org", ". Retrieved ", "2016-10-20", ".", "\u00a0", "\n", "^", " ", "About Node.js", ", Node.js Website", "\n", "^", " ", "Foundation, Node.js. ", "\"Node.js Foundation | Node.js\"", ". ", "nodejs.org", ". Retrieved ", "2017-03-08", ".", "\u00a0", "\n", "^", " ", "\"nodejs/TSC\"", ". ", "GitHub", ". Retrieved ", "2017-03-08", ".", "\u00a0", "\n", "^", " ", "Foundation, Node.js. ", "\"Working Groups | Node.js\"", ". ", "nodejs.org", ". Retrieved ", "2017-03-08", ".", "\u00a0", "\n", "^", " ", "Whittaker, Zack, ", "After governance breakdown, Node.js leaders fight for its survival", ", ZDNet, August 25, 2017", "\n", "^", " ", "Tomasz Janczuk. ", "\"Edge.js\"", ".", "\u00a0", "\n", "^", " ", "Using Edge.js to combine Node.js and .NET", ", .NET Curry", "\n", "^", " ", "Edge.js bridges the gap between Node.js and .NET", ", TechRepublic, Tony Patton, July 1, 2014", "\n", "^", " ", "\"Luvit.io\"", ".", "\u00a0", "\n", "^", " ", "\"cobol\"", ".", "\u00a0", "\n", "^", " ", "\"pas2js\"", ".", "\u00a0", "\n", "\n", "\n", "Further reading", "[", "edit", "]", "\n", "\n", "\n", "Hughes-Croucher, Tom; Wilson, Mike (April 2012), ", "Up and Running with Node.js", " (First ed.), ", "O'Reilly Media", ", p.\u00a0204, ", "ISBN", "\u00a0", "978-1-4493-9858-3", "\u00a0", "\n", "Ornbo, George (September 2012), ", "Sams Teach Yourself Node.js in 24 Hours", " (First ed.), ", "SAMS Publishing", ", p.\u00a0440, ", "ISBN", "\u00a0", "978-0-672-33595-2", "\u00a0", "\n", "Teixeira, Pedro (October 2012), ", "Professional Node.js", " (First ed.), ", "John Wiley & Sons", ", p.\u00a0408, ", "ISBN", "\u00a0", "978-1-118-22754-1", "\u00a0", "\n", "Randal L. Schwartz", " and Aaron Newcomb (9 January 2013). ", "\"Episode 237: Node.js\"", ". ", "twit.tv/show/floss-weekly", " (Podcast). ", "TWiT.tv", ". Event occurs at 1:08:13", ". Retrieved ", "9 January", " 2013", ".", "\u00a0", "\n", "Kurniawan, Agus (July 2012), ", "Nodejs Programming By Example", " (First ed.), ", "PE Press", ", p.\u00a067", "\u00a0", "\n", "Gackenheimer, Cory (October 2013), ", "Node.js Recipes: A Problem-Solution Approach", " (First ed.), ", "Apress", ", p.\u00a0376, ", "ISBN", "\u00a0", "978-1-4302-6058-5", "\u00a0", "\n", "Ribeiro Pereira, Caio (February 2016), ", "Building APIs with Node.js", " (First ed.), ", "Leanpub", ", p.\u00a0152", "\u00a0", "\n", "\n", "\n", "External links", "[", "edit", "]", "\n", "\n", "\n", "\n", "Wikimedia Commons has media related to ", "Node.js", ".", "\n", "\n", "\n", "\n", "Official website", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "v", "\n", "t", "\n", "e", "\n", "\n", "\n", "Node.js", "\n", "\n", "\n", "\n", "Platform", "\n", "\n", "\n", "\n", "Node.js", "\n", "NPM", "\n", "V8", "\n", "CommonJS", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "Frameworks", "\n", "\n", "\n", "\n", "MEAN", "\n", "\n", "MongoDB", "\n", "Express.js", "\n", "AngularJS", "/", "Angular", "\n", "\n", "\n", "MEEN (substituted with ", "Ember.js", ")", "\n", "Backbone.js", "\n", "Meteor", "\n", "\n", "\n", "\n", "\n", "\n", "Libraries", "\n", "\n", "\n", "\n", "Lodash", "\n", "Underscore.js", "\n", "React.js", "\n", "\n", "\n", "\n", "\n", "\n", "Languages", "\n", "\n", "\n", "\n", "JavaScript", "\n", "CoffeeScript", "\n", "TypeScript", "\n", "\n", "\n", "\n", "\n", "\n", "Hosts", "\n", "\n", "\n", "\n", "Joyent", "\n", "Nodejitsu", "\n", "OpenShift", "\n", "Linode", "\n", "DigitalOcean", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "v", "\n", "t", "\n", "e", "\n", "\n", "\n", "JavaScript", "\n", "\n", "\n", "\n", "Code analysis", "\n", "\n", "\n", "\n", "JSHint", "\n", "JSLint", "\n", "\n", "\n", "\n", "\n", "\n", "Transcompilers", "\n", "\n", "\n", "\n", "CoffeeScript", "\n", "Dart", "\n", "Emscripten", "\n", "Google Closure Compiler", "\n", "Google Web Toolkit", "\n", "Morfik", "\n", "TypeScript", "\n", "AtScript", "\n", "Opa", "\n", "Haxe", "\n", "ClojureScript", "\n", "\n", "\n", "\n", "\n", "\n", "Concepts", "\n", "\n", "\n", "\n", "Ajax", "\n", "Client-side", "\n", "Dynamic HTML", "\n", "JavaScript library", "\n", "JavaScript syntax", "\n", "Unobtrusive JavaScript", "\n", "\n", "\n", "\n", "\n", "\n", "Debuggers", "\n", "\n", "\n", "\n", "Firebug", "\n", "Komodo IDE", "\n", "Microsoft Script Debugger", "\n", "Microsoft Script Editor", "\n", "Opera Dragonfly", "\n", "Venkman", "\n", "Web Inspector", "\n", "\n", "\n", "\n", "\n", "\n", "Doc generators", "\n", "\n", "\n", "\n", "JSDoc", "\n", "\n", "\n", "\n", "\n", "\n", "Editors (", "comparison", ")", "\n", "\n", "\n", "\n", "Ace", "\n", "\n", "Cloud9 IDE", "\n", "\n", "\n", "Atom", "\n", "CodeMirror", "\n", "\n", "Light Table", "\n", "Brackets", "\n", "\n", "\n", "Koding", "\n", "Orion", "\n", "Visual Studio", "\n", "\n", "Visual Studio Express", "\n", "\n", "\n", "Visual Studio Code", "\n", "Visual Studio Team Services", "\n", "\n", "\n", "\n", "\n", "\n", "Engines", "\n", "\n", "\n", "\n", "Comparison of layout engines", "\n", "List of ECMAScript engines", "\n", "List of JavaScript engines", "\n", "\n", "\n", "\n", "\n", "\n", "Frameworks", "\n", "\n", "\n", "\n", "Comparison of JavaScript frameworks", "\n", "List of JavaScript libraries", "\n", "\n", "\n", "\n", "\n", "\n", "Related ", "technologies", "\n", "\n", "\n", "\n", "Cascading Style Sheets", "\n", "Document Object Model", "\n", "HTML", "\n", "JSON", "\n", "WebAssembly", "\n", "\n", "\n", "\n", "\n", "\n", "Package managers", "\n", "\n", "\n", "\n", "npm", "\n", "NuGet", "\n", "\n", "\n", "\n", "\n", "\n", "Server-side", "\n", "\n", "\n", "\n", "Active Server Pages", "\n", "CommonJS", "\n", "JSGI", "\n", "Node.js", "\n", "Wakanda", "\n", "\n", "\n", "\n", "\n", "\n", "Unit testing", "\n", "\n", "\n", "\n", "Jasmine", "\n", "Mocha", "\n", "QUnit", "\n", "List of JavaScript unit testing frameworks", "\n", "\n", "\n", "\n", "\n", "\n", "People", "\n", "\n", "\n", "\n", "Douglas Crockford", "\n", "Brendan Eich", "\n", "John Resig", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "Authority control", "\n", "\n", "\n", "\n", "GND", ": ", "1027030742", "\n", "\n", "\n", "\n", "\n", "\n", "\n\n\n", "\n", "\n", "\n", "\n"], "lastUpdated": " 12 January 2018, at 21:22."}, +{"title": "Sails.js", "text": ["\n", "Sails.js", "\n", "\n", "\n", "Sails.js brand logo", "\n", "\n", "\n", "\n", "Developer(s)", "\n", "Mike McNeil", " and others", "\n", "\n", "\n", "Initial release", "\n", "2012", "; 6\u00a0years ago", "\u00a0(", "2012", ")", "\n", "\n", "\n", "Development status", "\n", "Active", "\n", "\n", "\n", "Written in", "\n", "JavaScript", "\n", "\n", "\n", "Operating system", "\n", "Cross-platform", "\n", "\n", "\n", "Platform", "\n", "Node.js", "\n", "\n", "\n", "Type", "\n", "Web framework", "\n", "\n", "\n", "License", "\n", "MIT License", "\n", "\n", "\n", "Website", "\n", "sailsjs", ".com", "\n", "\n", "\n", "Sails.js", " (or ", "Sails", ")", "[1]", " is a ", "Model-View-Controller", " (MVC) ", "web application framework", " developed atop the ", "Node.js", " environment,", "[2]", ":", "1, 19", " released as ", "free and open-source software", " under the ", "MIT License", ".", "[3]", "[4]", " It is designed to make it easy to build custom, enterprise-grade Node.js ", "web applications", " and ", "APIs", ".", "[3]", "[5]", " Emulating the MVC architecture of other frameworks, like ", "Ruby on Rails", ",", "[2]", ":", "19", " it offers similar pattern and familiarity, reducing the cognitive burden when switching between other frameworks/languages.", "\n", "\n", "\n", "\n", "Contents", "\n", "\n", "\n", "1", " ", "Features", "\n", "2", " ", "Community Acclaim", "\n", "3", " ", "References", "\n", "4", " ", "External links", "\n", "\n", "\n", "\n", "Features", "[", "edit", "]", "\n", "Sails.js offers a host of features and attributes. Because it is built on Node.js and ", "Express.js", ",", "[6]", " it enables applications to be built with 100% JavaScript. This not only includes models, views, and controllers; but also configuration files and adapters (e.g., database).", "\n", "Like Ruby on Rails,", "[1]", " Sails.js provides an ", "Object-relational mapping", " interface, using ", "Waterline.js", ", which abstracts the database interaction.", "[6]", " This enables a uniform API regardless of the underlying database being used.", "[7]", "\n", "A number of other packages are included to enable fast auto-generated ", "REST API", "S, ", "WebSockets", " by default using ", "Socket.io", ";", "[1]", " and compatibility features making it front-end agnostic so that many tools and frameworks (", "AngularJS", ", ", "React.js", ", ", "Android", ", ", "iOS", ", etc.) are supported.", "\n", "Community Acclaim", "[", "edit", "]", "\n", "As compared to other libraries/frameworks, like ", "FeathersJS", ", Sails offers a host of features out of the box and leads as the generally accepted Node.js framework for both full-stack development and REST APIs.", "[8]", "\n", "References", "[", "edit", "]", "\n", "\n", "\n", "\n", "^ ", "a", " ", "b", " ", "c", " ", "Krol, Jason (2014). ", "Web Development with MongoDB and Node.js", ". Packt. pp.\u00a0PT455. ", "ISBN", "\u00a0", "9781783987313", " \u2013 via Google Books (Preview).", "\u00a0", "\n", "^ ", "a", " ", "b", " ", "Shahid, Shaikh (2016). ", "Sails.js Essentials", ". Birmingham, UK: Packt. ", "ISBN", "\u00a0", "9781783554546", ". ", "OCLC", "\u00a0", "944986529", " \u2013 via Google Books (Preview).", "\u00a0", "\n", "^ ", "a", " ", "b", " ", "\"Sails.js | Realtime MVC Framework for Node.js\"", ". The Sails Company", ". Retrieved ", "21 July", " 2017", ".", "\u00a0", "\n", "^", " ", "\"sails\"", ". npm, inc", ". Retrieved ", "21 July", " 2017", ".", "\u00a0", "\n", "^", " ", "Rajput, Mehul (12 December 2016). ", "\"Top Reasons Why Sails.js Is The Best Node.js Web Framework\"", ". ", "mindinvenory", ". Mindinventory", ". Retrieved ", "22 July", " 2017", ".", "\u00a0", "\n", "^ ", "a", " ", "b", " ", "Yang, Chuoxian. ", "\"Comparison Of Four Popular Node.js Frameworks | Toptal\"", ". ", "toptal", ". Toptal, LLC", ". Retrieved ", "22 July", " 2017", ".", "\u00a0", "\n", "^", " ", "\"Waterline.js home page\"", ".", "\u00a0", "\n", "^", " ", "\"Slant.co's Sails.js Review\"", ".", "\u00a0", "\n", "\n", "\n", "\n", "External links", "[", "edit", "]", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "v", "\n", "t", "\n", "e", "\n", "\n", "\n", "Node.js", "\n", "\n", "\n", "\n", "Platform", "\n", "\n", "\n", "\n", "Node.js", "\n", "NPM", "\n", "V8", "\n", "CommonJS", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "Frameworks", "\n", "\n", "\n", "\n", "MEAN", "\n", "\n", "MongoDB", "\n", "Express.js", "\n", "AngularJS", "/", "Angular", "\n", "\n", "\n", "MEEN (substituted with ", "Ember.js", ")", "\n", "Backbone.js", "\n", "Meteor", "\n", "\n", "\n", "\n", "\n", "\n", "Libraries", "\n", "\n", "\n", "\n", "Lodash", "\n", "Underscore.js", "\n", "React.js", "\n", "\n", "\n", "\n", "\n", "\n", "Languages", "\n", "\n", "\n", "\n", "JavaScript", "\n", "CoffeeScript", "\n", "TypeScript", "\n", "\n", "\n", "\n", "\n", "\n", "Hosts", "\n", "\n", "\n", "\n", "Joyent", "\n", "Nodejitsu", "\n", "OpenShift", "\n", "Linode", "\n", "DigitalOcean", "\n", "\n", "\n", "\n", "\n", "\n", "\n\n\n", "\n", "\n", "\n", "\n"], "lastUpdated": " 25 November 2017, at 16:44."}, +{"title": "JavaScript", "text": ["Not to be confused with ", "Java (programming language)", ", ", "Java (software platform)", ", or ", "Javanese script", ".", "\n", "\n", "JavaScript", "\n", "\n", "Paradigm", "\n", "Multi-paradigm", ": ", "object-oriented", " (", "prototype-based", "), ", "imperative", ", ", "functional", ", ", "event-driven", "[1]", "\n", "\n", "\n", "Designed\u00a0by", "\n", "Brendan Eich", "\n", "\n", "\n", "Developer", "\n", "Netscape Communications Corporation", ", ", "Mozilla Foundation", ", ", "Ecma International", "\n", "\n", "\n", "First\u00a0appeared", "\n", "December\u00a04, 1995", "; 22 years ago", "\u00a0(", "1995-12-04", ")", "[2]", "\n", "\n", "\n", "\n", "\n", "\n", "Stable release", "\n", "\n", "ECMAScript 2017", "[3]", " / June\u00a02017", "; 7\u00a0months ago", "\u00a0(", "2017-06", ")", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "Typing discipline", "\n", "dynamic", ", ", "duck", "\n", "\n", "\n", "Filename extensions", "\n", ".js", "\n", "\n", "\n", "Website", "\n", "Mozilla", "\n", "\n", "\n", "Major ", "implementations", "\n", "\n", "\n", "V8", ", ", "JavaScriptCore", ", ", "SpiderMonkey", ", ", "Chakra", "\n", "\n", "\n", "Influenced by", "\n", "\n", "\n", "Lua", ", ", "Scheme", ", ", "Perl", ", ", "Self", ", ", "Java", ", ", "C", ", ", "Python", ", ", "AWK", ", ", "HyperTalk", "\n", "\n", "\n", "Influenced", "\n", "\n", "\n", "ActionScript", ", ", "AtScript", ", ", "CoffeeScript", ", ", "Dart", ", ", "JScript .NET", ", ", "LiveScript", ", ", "Objective-J", ", ", "Opa", ", ", "Perl 6", ", ", "QML", ", ", "TypeScript", "\n", "\n", "\n", "\n", "\n", " ", "JavaScript", " at Wikibooks", "\n", "\n", "\n", "\n", "\n", "\n", "JavaScript", "\n", "\n", "Filename extension", "\n", ".js", "\n", "\n", "\n", "Internet media\u00a0type", "\n", "\n", "\n", "\n", "application/javascript", "\n", "text/javascript", "\u00a0(obsolete)", "[4]", "\n", "\n", "\n", "\n", "\n", "\n", "Uniform Type Identifier\u00a0(UTI)", "\n", "\n", "com.netscape.javascript-source", "\n", "[5]", "\n", "\n", "\n", "Type of format", "\n", "Scripting language", "\n", "\n", "\n", "\n", "\n", "Part of a ", "series", " on", "\n", "\n", "\n", "JavaScript", "\n", "\n", "\n", "\n", "\n", "JavaScript syntax", "\n", "JavaScript library", "\n", "Unobtrusive JavaScript", "\n", "JavaScript engine", "\n", "\n", "\n", "\n", "\n", "Lists of Frameworks and Libraries", "\n", "\n", "\n", "\n", "\n", "Ajax frameworks", "\n", "JavaScript web frameworks", "\n", "Comparison of JavaScript frameworks", "\n", "List of JavaScript libraries", "\n", "JavaScript unit testing frameworks", "\n", "\n", "\n", "\n", "\n", "JavaScript Object Notation", "\n", "\n", "\n", "\n", "See also", "\n", "\n", "ECMAScript", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "v", "\n", "t", "\n", "e", "\n", "\n", "\n", "\n", "\n", "\n", "JavaScript", " (", "/", "\u02c8", "d\u0292", "\u0251\u02d0", "v", "\u0259", "\u02cc", "s", "k", "r", "\u026a", "p", "t", "/", "[6]", "), often abbreviated as ", "JS", ", is a ", "high-level", ", ", "dynamic", ", ", "weakly typed", ", ", "prototype-based", ", ", "multi-paradigm", ", and ", "interpreted", " ", "programming language", ". Alongside ", "HTML", " and ", "CSS", ", JavaScript is one of the three core technologies of ", "World Wide Web", " ", "content production", ". It is used to make webpages interactive and provide online programs, including video games. The majority of ", "websites", " employ it, and all modern ", "web browsers", " support it without the need for ", "plug-ins", " by means of a built-in ", "JavaScript engine", ". Each of the many JavaScript engines represent a different implementation of JavaScript, all based on the ", "ECMAScript", " specification, with some engines not supporting the spec fully, and with many engines supporting additional features beyond ECMA.", "\n", "As a multi-paradigm language, JavaScript supports ", "event-driven", ", ", "functional", ", and ", "imperative", " (including ", "object-oriented", " and ", "prototype-based", ") ", "programming styles", ". It has an ", "API", " for working with text, ", "arrays", ", dates, ", "regular expressions", ", and basic manipulation of the ", "DOM", ", but the language itself does not include any ", "I/O", ", such as networking, storage, or graphics facilities, relying for these upon the host environment in which it is embedded.", "\n", "Initially only implemented ", "client-side", " in web browsers, JavaScript engines are now embedded in many other types of host software, including ", "server-side", " in web servers and databases, and in non-web programs such as word processors and ", "PDF", " software, and in runtime environments that make JavaScript available for writing mobile and desktop applications, including desktop widgets.", "\n", "Although there are strong outward similarities between JavaScript and Java, including language name, ", "syntax", ", and respective ", "standard libraries", ", the two languages are distinct and differ greatly in design; JavaScript was influenced by programming languages such as ", "Self", " and ", "Scheme", ".", "[7]", "\n", "\n", "\n", "\n", "Contents", "\n", "\n", "\n", "1", " ", "History", "\n", "\n", "1.1", " ", "Beginnings at Netscape", "\n", "1.2", " ", "Server-side JavaScript", "\n", "1.3", " ", "Adoption by Microsoft", "\n", "1.4", " ", "Standardization", "\n", "1.5", " ", "Later developments", "\n", "\n", "\n", "2", " ", "Trademark", "\n", "3", " ", "Vanilla JavaScript", "\n", "4", " ", "Features", "\n", "\n", "4.1", " ", "Universal support", "\n", "4.2", " ", "Imperative and structured", "\n", "4.3", " ", "Dynamic", "\n", "4.4", " ", "Prototype-based (object-oriented)", "\n", "4.5", " ", "Functional", "\n", "4.6", " ", "Delegative", "\n", "4.7", " ", "Miscellaneous", "\n", "4.8", " ", "Vendor-specific extensions", "\n", "\n", "\n", "5", " ", "Syntax", "\n", "\n", "5.1", " ", "Simple examples", "\n", "5.2", " ", "More advanced example", "\n", "\n", "\n", "6", " ", "Use in Web pages", "\n", "\n", "6.1", " ", "Example script", "\n", "6.2", " ", "Compatibility considerations", "\n", "\n", "\n", "7", " ", "Security", "\n", "\n", "7.1", " ", "Cross-site vulnerabilities", "\n", "7.2", " ", "Misplaced trust in the client", "\n", "7.3", " ", "Misplaced trust in developers", "\n", "7.4", " ", "Browser and plugin coding errors", "\n", "7.5", " ", "Sandbox implementation errors", "\n", "7.6", " ", "Hardware vulnerabilities", "\n", "\n", "\n", "8", " ", "Uses outside Web pages", "\n", "\n", "8.1", " ", "Embedded scripting language", "\n", "8.2", " ", "Scripting engine", "\n", "8.3", " ", "Application platform", "\n", "\n", "\n", "9", " ", "Development tools", "\n", "10", " ", "Benchmark tools for developers", "\n", "11", " ", "Version history", "\n", "12", " ", "Related languages and features", "\n", "\n", "12.1", " ", "Use as an intermediate language", "\n", "12.2", " ", "JavaScript and Java", "\n", "\n", "\n", "13", " ", "See also", "\n", "14", " ", "References", "\n", "15", " ", "Further reading", "\n", "16", " ", "External links", "\n", "\n", "\n", "\n", "History", "[", "edit", "]", "\n", "Beginnings at Netscape", "[", "edit", "]", "\n", "In 1993, the ", "National Center for Supercomputing Applications", " (NCSA), a unit of the ", "University of Illinois at Urbana-Champaign", ", released ", "NCSA Mosaic", ", the first popular graphical ", "Web browser", ", which played an important part in expanding the growth of the nascent ", "World Wide Web", ". In 1994, a company called ", "Mosaic Communications", " was founded in ", "Mountain View, California", " and employed many of the original NCSA Mosaic authors to create ", "Mosaic Netscape", ". However, it intentionally shared no code with NCSA Mosaic. The internal codename for the company's browser was Mozilla, which stood for \"Mosaic killer\", as the company's goal was to displace NCSA Mosaic as the world's number one web browser. The first version of the Web browser, Mosaic Netscape 0.9, was released in late 1994. Within four months it had already taken three-quarters of the browser market and became the main browser for the Internet in the 1990s. To avoid trademark ownership problems with the NCSA, the browser was subsequently renamed Netscape Navigator in the same year, and the company took the name Netscape Communications. Netscape Communications realized that the Web needed to become more dynamic. ", "Marc Andreessen", ", the founder of the company believed that ", "HTML", " needed a \"glue language\" that was easy to use by Web designers and part-time programmers to assemble components such as images and plugins, where the code could be written directly in the Web page markup.", "\n", "In 1995, Netscape Communications recruited ", "Brendan Eich", " with the goal of embedding the ", "Scheme", " programming language into its Netscape Navigator.", "[8]", " Before he could get started, Netscape Communications collaborated with ", "Sun Microsystems", " to include in Netscape Navigator Sun's more static programming language ", "Java", ", in order to compete with ", "Microsoft", " for user adoption of Web technologies and platforms.", "[9]", " Netscape Communications then decided that the scripting language they wanted to create would complement Java and should have a similar syntax, which excluded adopting other languages such as ", "Perl", ", ", "Python", ", ", "TCL", ", or Scheme. To defend the idea of JavaScript against competing proposals, the company needed a prototype. Eich wrote one in 10 days, in May 1995.", "\n", "Although it was developed under the name ", "Mocha", ", the language was officially called ", "LiveScript", " when it first shipped in beta releases of Netscape Navigator 2.0 in September 1995, but it was renamed ", "JavaScript", "[2]", " when it was deployed in the Netscape Navigator 2.0 beta 3 in December.", "[10]", " The final choice of name caused confusion, giving the impression that the language was a spin-off of the Java programming language, and the choice has been characterized", "[", "by whom?", "]", " as a marketing ploy by Netscape to give JavaScript the cachet of what was then the hot new Web programming language.", "\n", "There is a common misconception that JavaScript was influenced by an earlier Web page scripting language developed by ", "Nombas", " named Cmm (not to be confused with the later ", "C--", " created in 1997).", "[11]", "[12]", " Brendan Eich, however, had never heard of Cmm before he created LiveScript.", "[13]", " Nombas did pitch their embedded Web page scripting to Netscape, though Web page scripting was not a new concept, as shown by the ", "ViolaWWW", " Web browser.", "[14]", " Nombas later switched to offering JavaScript instead of Cmm in their ScriptEase product and was part of the TC39 group that standardized ECMAScript.", "[15]", "\n", "Server-side JavaScript", "[", "edit", "]", "\n", "In December 1995, soon after releasing JavaScript for browsers, Netscape introduced an implementation of the language for ", "server-side scripting", " with ", "Netscape Enterprise Server", ".", "[16]", "\n", "Since the mid-2000s, additional ", "server-side JavaScript implementations", " have been introduced, such as ", "Node.js", " in 2009.", "[17]", "\n", "Adoption by Microsoft", "[", "edit", "]", "\n", "Microsoft script technologies including ", "VBScript", " and ", "JScript", " were released in 1996. JScript, a reverse-engineered implementation of Netscape's JavaScript, was part of ", "Internet Explorer 3", ". JScript was also available for server-side scripting in ", "Internet Information Server", ". Internet Explorer 3 also included Microsoft's first support for CSS and various extensions to HTML, but in each case the implementation was noticeably different to that found in Netscape Navigator at the time.", "[18]", "[19]", " These differences made it difficult for designers and programmers to make a single website work well in both browsers, leading to the use of \"best viewed in Netscape\" and \"best viewed in Internet Explorer\" logos that characterized these early years of the ", "browser wars", ".", "[20]", " JavaScript began to acquire a reputation for being one of the roadblocks to a cross-platform and standards-driven Web. Some developers took on the difficult task of trying to make their sites work in both major browsers, but many could not afford the time.", "[18]", " With the release of ", "Internet Explorer 4", ", Microsoft introduced the concept of ", "Dynamic HTML", ", but the differences in language implementations and the different and proprietary ", "Document Object Models", " remained and were obstacles to widespread take-up of JavaScript on the Web.", "[18]", "\n", "Standardization", "[", "edit", "]", "\n", "In November 1996, Netscape submitted JavaScript to ", "Ecma International", " to carve out a standard specification, which other browser vendors could then implement based on the work done at Netscape. This led to the official release of the language specification ", "ECMAScript", " published in the first edition of the ECMA-262 standard in June 1997, with JavaScript being the most well known of the implementations. ", "ActionScript", " and ", "JScript", " are other well-known implementations of ECMAScript.", "\n", "The standards process continued in cycles, with the release of ECMAScript 2 in June 1998, which brings some modifications to conform to the ISO/IEC 16262 international standard. The release of ECMAScript 3 followed in December 1999, which is the baseline for modern day JavaScript. The original ECMAScript 4 work led by Waldemar Horwat (then at Netscape, now at ", "Google", ") started in 2000 and at first, ", "Microsoft", " seemed to participate and even implemented some of the proposals in their ", "JScript .NET", " language.", "\n", "Over time it was clear though that Microsoft had no intention of cooperating or implementing proper JavaScript in Internet Explorer, even though they had no competing proposal and they had a partial (and diverged at this point) implementation on the ", ".NET", " server side. So by 2003, the original ECMAScript 4 work was mothballed.", "\n", "The next major event was in 2005, with two major happenings in JavaScript's history. First, Brendan Eich and Mozilla rejoined Ecma International as a not-for-profit member and work started on ", "ECMAScript for XML", " (E4X), the ECMA-357 standard, which came from ex-Microsoft employees at ", "BEA Systems", " (originally acquired as Crossgain). This led to working jointly with ", "Macromedia", " (later acquired by ", "Adobe Systems", "), who were implementing E4X in ActionScript 3 (ActionScript 3 was a fork of original ECMAScript 4).", "\n", "So, along with Macromedia, work restarted on ECMAScript 4 with the goal of standardizing what was in ActionScript 3. To this end, Adobe Systems released the ActionScript Virtual Machine 2, code named ", "Tamarin", ", as an ", "open source", " project. But Tamarin and ActionScript 3 were too different from web JavaScript to converge, as was realized by the parties in 2007 and 2008.", "\n", "Alas, there was still turmoil between the various players; ", "Douglas Crockford", "\u2014then at ", "Yahoo!", "\u2014joined forces with Microsoft in 2007 to oppose ECMAScript 4, which led to the ECMAScript 3.1 effort. The development of ECMAScript 4 was never completed, but that work influenced subsequent versions.", "[21]", "\n", "While all of this was happening, the open source and developer communities set to work to revolutionize what could be done with JavaScript. This community effort was sparked in 2005 when ", "Jesse James Garrett", " released a white paper in which he coined the term ", "Ajax", ", and described a set of technologies, of which JavaScript was the backbone, used to create web applications where data can be loaded in the background, avoiding the need for full page reloads and leading to more dynamic applications. This resulted in a renaissance period of JavaScript usage spearheaded by open source libraries and the communities that formed around them, with libraries such as ", "Prototype", ", ", "jQuery", ", ", "Dojo Toolkit", ", ", "MooTools", ", and others being released.", "\n", "In July 2008, the disparate parties on either side came together in Oslo. This led to the eventual agreement in early 2009 to rename ECMAScript 3.1 to ECMAScript 5 and drive the language forward using an agenda that is known as Harmony. ECMAScript 5 was finally released in December 2009.", "\n", "In June 2011, ECMAScript 5.1 was released to fully align with the third edition of the ISO/IEC 16262 international standard. ECMAScript 2015 was released in June 2015. ECMAScript 2016 was released in June 2016. The current version is ECMAScript 2017, released in June 2017.", "[3]", "\n", "Later developments", "[", "edit", "]", "\n", "JavaScript has become one of the most popular programming languages on the Web. Initially, however, many professional programmers denigrated the language because, among other reasons, its target audience consisted of Web authors and other such \"amateurs\".", "[22]", " The advent of ", "Ajax", " returned JavaScript to the spotlight and brought more professional programming attention. The result was a proliferation of comprehensive ", "frameworks and libraries", ", improved JavaScript programming practices, and increased usage of JavaScript outside Web browsers, as seen by the proliferation of ", "server-side JavaScript", " platforms.", "\n", "In January 2009, the ", "CommonJS", " project was founded with the goal of specifying a common standard library mainly for JavaScript development outside the browser.", "[23]", "\n", "With the rise of ", "single-page applications", " and JavaScript-heavy sites, it is increasingly being used as a compile target for ", "source-to-source compilers", " from both ", "dynamic languages", " and ", "static languages", ".", "\n", "Trademark", "[", "edit", "]", "\n", "\"JavaScript\" is a ", "trademark", " of ", "Oracle Corporation", " in the United States.", "[24]", " It is used under license for technology invented and implemented by Netscape Communications and current entities such as the ", "Mozilla Foundation", ".", "[25]", "\n", "Vanilla JavaScript", "[", "edit", "]", "\n", "The terms ", "Vanilla JavaScript", " and ", "Vanilla JS", " refer to JavaScript not extended by any frameworks or additional libraries. Scripts written in Vanilla JS are plain JavaScript code.", "[26]", "[27]", "\n", "Features", "[", "edit", "]", "\n", "The following features are common to all conforming ECMAScript implementations, unless explicitly specified otherwise.", "\n", "Universal support", "[", "edit", "]", "\n", "All modern Web browsers support JavaScript with built-in interpreters.", "\n", "Imperative and structured", "[", "edit", "]", "\n", "JavaScript supports much of the ", "structured programming", " syntax from ", "C", " (e.g., ", "if", " statements, ", "while", " loops, ", "switch", " statements, ", "do while", " loops, etc.). One partial exception is ", "scoping", ": JavaScript originally had only ", "function scoping", " with ", "var", ". ECMAScript 2015 added keywords ", "let", " and ", "const", " for block scoping, meaning JavaScript now has both function and block scoping. Like C, JavaScript makes a distinction between ", "expressions", " and ", "statements", ". One syntactic difference from C is ", "automatic semicolon insertion", ", which allows the semicolons that would normally terminate statements to be omitted.", "[28]", "\n", "Dynamic", "[", "edit", "]", "\n", "\n", "Typing", "\n", "As with most ", "scripting languages", ", JavaScript is ", "dynamically typed", "; a ", "type", " is associated with each ", "value", ", rather than just with each expression. For example, a ", "variable", " that is at one time bound to a number may later be re-bound to a ", "string", ".", "[29]", " JavaScript supports various ways to test the type of an object, including ", "duck typing", ".", "[30]", "\n", "Run-time evaluation", "\n", "JavaScript includes an ", "eval", " function that can execute statements provided as strings at run-time.", "\n", "\n", "Prototype-based (object-oriented)", "[", "edit", "]", "\n", "JavaScript is almost entirely ", "object-based", ". In JavaScript, an ", "object", " is an ", "associative array", ", augmented with a prototype (see below); each string key provides the name for an object property, and there are two syntactical ways to specify such a name: dot notation (", "obj.x\u00a0=\u00a010", ") and bracket notation (", "obj['x']\u00a0=\u00a010", "). A property may be added, rebound, or deleted at run-time. Most properties of an object (and any property that belongs to an object's prototype inheritance chain) can be enumerated using a ", "for...in", " loop.", "\n", "JavaScript has a small number of built-in objects, including ", "Function", " and ", "Date", ".", "\n", "\n", "Prototypes", "\n", "JavaScript uses ", "prototypes", " where many other object-oriented languages use ", "classes", " for ", "inheritance", ".", "[31]", " It is possible to simulate many class-based features with prototypes in JavaScript.", "[32]", "\n", "Functions as object constructors", "\n", "Functions double as object constructors, along with their typical role. Prefixing a function call with ", "new", " will create an instance of a prototype, inheriting properties and methods from the constructor (including properties from the ", "Object", " prototype).", "[33]", " ECMAScript 5 offers the ", "Object.create", " method, allowing explicit creation of an instance without automatically inheriting from the ", "Object", " prototype (older environments can assign the prototype to ", "null", ").", "[34]", " The constructor's ", "prototype", " property determines the object used for the new object's internal prototype. New methods can be added by modifying the prototype of the function used as a constructor. JavaScript's built-in constructors, such as ", "Array", " or ", "Object", ", also have prototypes that can be modified. While it is possible to modify the ", "Object", " prototype, it is generally considered bad practice because most objects in JavaScript will inherit methods and properties from the ", "Object", " prototype, and they may not expect the prototype to be modified.", "[35]", "\n", "Functions as methods", "\n", "Unlike many object-oriented languages, there is no distinction between a function definition and a ", "method", " definition. Rather, the distinction occurs during function calling; when a function is called as a method of an object, the function's local ", "this", " keyword is bound to that object for that invocation.", "\n", "\n", "Functional", "[", "edit", "]", "\n", "A ", "function", " is ", "first-class", "; a function is considered to be an object. As such, a function may have properties and methods, such as ", ".call()", " and ", ".bind()", ".", "[36]", " A ", "nested", " function is a function defined within another function. It is created each time the outer function is invoked. In addition, each nested function forms a ", "lexical closure", ": The ", "lexical scope", " of the outer function (including any constant, local variable, or argument value) becomes part of the internal state of each inner function object, even after execution of the outer function concludes.", "[37]", " JavaScript also supports ", "anonymous functions", ".", "\n", "Delegative", "[", "edit", "]", "\n", "JavaScript supports implicit and explicit ", "delegation", ".", "\n", "\n", "Functions as roles (Traits and Mixins)", "\n", "JavaScript natively supports various function-based implementations of ", "Role", "[38]", " patterns like ", "Traits", "[39]", "[40]", " and ", "Mixins", ".", "[41]", " Such a function defines additional behavior by at least one method bound to the ", "this", " keyword within its ", "function", " body. A Role then has to be delegated explicitly via ", "call", " or ", "apply", " to objects that need to feature additional behavior that is not shared via the prototype chain.", "\n", "Object composition and inheritance", "\n", "Whereas explicit function-based delegation does cover ", "composition", " in JavaScript, implicit delegation already happens every time the prototype chain is walked in order to, e.g., find a method that might be related to but is not directly owned by an object. Once the method is found it gets called within this object's context. Thus ", "inheritance", " in JavaScript is covered by a delegation automatism that is bound to the prototype property of constructor functions.", "\n", "\n", "Miscellaneous", "[", "edit", "]", "\n", "\n", "Run-time environment", "\n", "JavaScript typically relies on a run-time environment (e.g., a ", "Web browser", ") to provide objects and methods by which scripts can interact with the environment (e.g., a webpage DOM). It also relies on the run-time environment to provide the ability to include/import scripts (e.g., ", "HTML", " ", "\n", + " \n", + "\n", + " \n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\t
\n", + "\t\t\n", + "\t
\n", + "\n", + "\t
\n", + "
\n", + " \t\t
\n", + " \t\t\t

Your Email Subscription

\n", + "\n", + " \n", + "\n", + " \t\t\t

We want to stay in touch, but only in ways that you find helpful. Select your preferences by using the form below and saving your changes.

\n", + "\n", + "

You’re Almost Finished

\n", + "\n", + "

One more click and you’ll be all set. To confirm your subscription, please add to your profile below, or simply confirm by clicking this button:

\n", + "\n", + " \n", + "
\n", + " \n", + "
\n", + "\n", + "

Complete Your Profile

\n", + "
\n", + "
\n", + "\t\n", + "\tryan.e.mitchell@gmail.com   (Not ryan.e.mitchell@gmail.com?)\n", + "\t
\n", + "
\n", + "
\n", + " \n", + "\n", + "
\n", + "\n", + "
\n", + " \n", + "\n", + "
\n", + "
\n", + " \t\t
\n", + "\n", + " \t\t
\n", + "

Choose Your Email Preferences

\n", + "\n", + "
\n", + " \t\t\t

Training

\n", + " \n", + "\n", + " \t\t\t

Webcasts

\n", + " \n", + "\n", + " \t\t\t

Product and Promotion Alerts

\n", + "
\n", + " Business & Leadership\n", + " Data\n", + " Design\n", + " Digital Photography\n", + " DIY\n", + " Game Design & Development\n", + " IoT\n", + " Linux & Unix\n", + " Math and Science\n", + " Mobile Design & Development\n", + "
\n", + "\n", + " \n", + "
\n", + "\n", + "
\n", + " \t\t\t

Newsletters

\n", + "
\n", + " Artifical Intelligence\n", + " Data\n", + " Design\n", + " FinTech\n", + " Four short links\n", + " Next:Economy\n", + " Programming\n", + " Security\n", + " Systems Engineering and Operations\n", + " Web\n", + " \t
\n", + "\n", + "\n", + "

Conference Bulletins

\n", + " \n", + "\n", + "
\n", + "\n", + " \n", + "\n", + " \n", + "\n", + " \n", + "\n", + " \n", + "\n", + " \n", + "\n", + " \n", + "\n", + " \n", + "\n", + " \n", + "\n", + " \n", + "\n", + " \n", + "\n", + " \n", + "\n", + " \n", + "\n", + " \n", + "\n", + " \n", + "\n", + " \n", + "\n", + " \n", + "\n", + " \n", + "\n", + " \n", + "\n", + " \n", + "\n", + " \n", + "\n", + " \n", + "\n", + " \n", + "\n", + " \n", + "\n", + " \n", + "\n", + " \n", + "\n", + " \n", + "\n", + " \n", + "\n", + " \n", + "\n", + " \n", + "\n", + " \n", + "\n", + "\n", + " \n", + "\n", + " \n", + "\n", + " \n", + "\n", + " \n", + "\n", + " \n", + "\n", + " \n", + "\n", + " \n", + "\n", + " \n", + "\n", + " \n", + "\n", + " \n", + "\n", + " \n", + "\n", + " \n", + "\n", + " \n", + "\n", + " \n", + "\n", + "
\n", + "
\n", + "

Scroll to manage all subscription options.

\n", + "
\n", + "
\n", + "
\n", + " \n", + "
\n", + "\n", + "

We take your privacy seriously and will not sell or distribute your email.

\n", + " \n", + "\t\t
\n", + " \n", + "
\n", + "\t
\n", + "\n", + "\t\n", + "\n", + " \n", + "\n", + " \n", + "\n", + "\n", + "\n", + "\n", + "\n" + ] + } + ], + "source": [ + "import requests\n", + "params = {'email_addr': 'ryan.e.mitchell@gmail.com'}\n", + "r = requests.post(\"http://post.oreilly.com/client/o/oreilly/forms/quicksignup.cgi\",\n", + " data=params)\n", + "print(r.text)" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "ename": "FileNotFoundError", + "evalue": "[Errno 2] No such file or directory: 'files/Python-logo.png'", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mFileNotFoundError\u001b[0m Traceback (most recent call last)", + "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[1;32m 1\u001b[0m \u001b[0;32mimport\u001b[0m \u001b[0mrequests\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 2\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 3\u001b[0;31m \u001b[0mfiles\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m{\u001b[0m\u001b[0;34m'uploadFile'\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0mopen\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'files/Python-logo.png'\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m'rb'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m}\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 4\u001b[0m \u001b[0mr\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mrequests\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mpost\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'http://pythonscraping.com/pages/processing2.php'\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mfiles\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mfiles\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 5\u001b[0m \u001b[0mprint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mr\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mtext\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;31mFileNotFoundError\u001b[0m: [Errno 2] No such file or directory: 'files/Python-logo.png'" + ] + } + ], + "source": [ + "import requests\n", + "\n", + "files = {'uploadFile': open('files/Python-logo.png', 'rb')}\n", + "r = requests.post('http://pythonscraping.com/pages/processing2.php', files=files)\n", + "print(r.text)" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Cookie is set to:\n", + "{'loggedin': '1', 'username': 'Ryan'}\n", + "-----------\n", + "Going to profile page...\n", + "Hey Ryan! Looks like you're still logged into the site!\n" + ] + } + ], + "source": [ + "import requests\n", + "\n", + "params = {'username': 'Ryan', 'password': 'password'}\n", + "r = requests.post('http://pythonscraping.com/pages/cookies/welcome.php', params)\n", + "print('Cookie is set to:')\n", + "print(r.cookies.get_dict())\n", + "print('Going to profile page...')\n", + "r = requests.get('http://pythonscraping.com/pages/cookies/profile.php', \n", + " cookies=r.cookies)\n", + "print(r.text)" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Cookie is set to:\n", + "{'loggedin': '1', 'username': 'username'}\n", + "Going to profile page...\n", + "Hey username! Looks like you're still logged into the site!\n" + ] + } + ], + "source": [ + "import requests\n", + "\n", + "session = requests.Session()\n", + "\n", + "params = {'username': 'username', 'password': 'password'}\n", + "s = session.post('http://pythonscraping.com/pages/cookies/welcome.php', params)\n", + "print(\"Cookie is set to:\")\n", + "print(s.cookies.get_dict())\n", + "print('Going to profile page...')\n", + "s = session.get('http://pythonscraping.com/pages/cookies/profile.php')\n", + "print(s.text)" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "

Hello ryan.

You entered password as your password.

\n" + ] + } + ], + "source": [ + "import requests\n", + "from requests.auth import AuthBase\n", + "from requests.auth import HTTPBasicAuth\n", + "\n", + "auth = HTTPBasicAuth('ryan', 'password')\n", + "r = requests.post(\n", + " url='http://pythonscraping.com/pages/auth/login.php', auth=auth)\n", + "print(r.text)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.6.1" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/Chapter11-JavaScript.ipynb b/Chapter11-JavaScript.ipynb new file mode 100644 index 0000000..57a13ef --- /dev/null +++ b/Chapter11-JavaScript.ipynb @@ -0,0 +1,109 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Timing out after 10 seconds and returning\n", + "\n", + "The Destination Page!\n", + "\n", + "\n", + "\n", + "This is the page you are looking for!\n", + "\n", + "\n" + ] + } + ], + "source": [ + "from selenium import webdriver\n", + "import time\n", + "from selenium.webdriver.remote.webelement import WebElement\n", + "from selenium.common.exceptions import StaleElementReferenceException\n", + "\n", + "def waitForLoad(driver):\n", + " elem = driver.find_element_by_tag_name(\"html\")\n", + " count = 0\n", + " while True:\n", + " count += 1\n", + " if count > 20:\n", + " print(\"Timing out after 10 seconds and returning\")\n", + " return\n", + " time.sleep(.5)\n", + " try:\n", + " elem == driver.find_element_by_tag_name(\"html\")\n", + " except StaleElementReferenceException:\n", + " return\n", + "\n", + "driver = webdriver.PhantomJS(executable_path='drivers/phantomjs/phantomjs-2.1.1-macosx/bin/phantomjs')\n", + "driver.get(\"http://pythonscraping.com/pages/javascript/redirectDemo1.html\")\n", + "waitForLoad(driver)\n", + "print(driver.page_source)" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "This is the page you are looking for!\n" + ] + } + ], + "source": [ + "from selenium.webdriver.common.by import By\n", + "from selenium.webdriver.support.ui import WebDriverWait\n", + "from selenium.webdriver.support import expected_conditions as EC\n", + "from selenium.common.exceptions import TimeoutException\n", + "\n", + "driver = webdriver.PhantomJS(\n", + " executable_path='drivers/phantomjs/phantomjs-2.1.1-macosx/bin/phantomjs')\n", + "driver.get('http://pythonscraping.com/pages/javascript/redirectDemo1.html')\n", + "try:\n", + " bodyElement = WebDriverWait(driver, 15).until(EC.presence_of_element_located(\n", + " (By.XPATH, '//body[contains(text(), \"This is the page you are looking for!\")]')))\n", + " print(bodyElement.text)\n", + "except TimeoutException:\n", + " print('Did not find the element')" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.6.1" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/Chapter12-API-Scraping.ipynb b/Chapter12-API-Scraping.ipynb new file mode 100644 index 0000000..dd5b496 --- /dev/null +++ b/Chapter12-API-Scraping.ipynb @@ -0,0 +1,588 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--------------------\n", + "history url is: http://en.wikipedia.org/w/index.php?title=Programming_paradigm&action=history\n", + "223.104.186.241\n", + "213.207.90.158\n", + "92.115.222.143\n", + "213.108.115.55\n", + "2605:a601:e0c:6300:996d:68c0:fb03:af2c\n", + "192.117.105.47\n", + "31.203.136.191\n", + "168.216.130.133\n", + "2a02:c7d:a492:f200:e126:2b36:53ca:513a\n", + "37.238.238.36\n", + "197.255.127.246\n", + "110.55.67.15\n", + "193.80.242.220\n", + "42.111.56.168\n", + "223.230.96.108\n", + "113.162.8.249\n", + "39.36.182.41\n", + "--------------------\n", + "history url is: http://en.wikipedia.org/w/index.php?title=Object-oriented_programming&action=history\n", + "113.199.249.237\n", + "205.251.185.250\n", + "1.22.150.73\n", + "121.58.212.157\n", + "217.225.8.24\n", + "162.204.116.16\n", + "112.200.199.62\n", + "117.239.185.50\n", + "103.252.25.104\n", + "103.74.23.139\n", + "103.241.244.36\n", + "2605:a601:474:600:2088:fbde:7512:53b2\n", + "122.181.5.162\n", + "24.93.131.140\n", + "119.152.87.84\n", + "93.136.125.208\n", + "27.251.109.234\n", + "223.230.215.145\n", + "103.16.68.215\n", + "170.142.177.246\n", + "--------------------\n", + "history url is: http://en.wikipedia.org/w/index.php?title=Imperative_programming&action=history\n", + "178.208.206.244\n", + "107.107.62.0\n", + "188.146.23.38\n", + "2604:2000:b064:3300:6dd3:b07e:494d:c5cd\n", + "5.199.208.23\n", + "83.244.156.56\n", + "152.231.35.89\n", + "94.118.222.35\n", + "197.239.7.126\n", + "194.181.240.192\n", + "176.60.44.112\n", + "111.92.130.14\n", + "15.203.233.84\n", + "79.186.27.201\n", + "140.177.205.223\n", + "114.79.32.242\n", + "117.136.79.80\n", + "85.133.27.110\n", + "2600:1004:b151:6515:1c2a:675b:bb28:2986\n", + "--------------------\n", + "history url is: http://en.wikipedia.org/w/index.php?title=Functional_programming&action=history\n", + "31.221.90.4\n", + "132.205.229.26\n", + "178.197.232.225\n", + "202.47.116.116\n", + "80.2.210.229\n", + "66.161.229.34\n", + "203.99.198.64\n", + "216.16.225.202\n", + "2600:1700:10e0:b970:d0be:a8fd:b1c3:dbe4\n", + "2601:983:4502:4cda:5945:9962:1911:c385\n", + "82.41.7.208\n", + "2602:306:cdd1:2d00::3e8\n", + "94.223.128.131\n", + "--------------------\n", + "history url is: http://en.wikipedia.org/w/index.php?title=Procedural_programming&action=history\n", + "201.27.72.206\n", + "194.81.178.163\n", + "63.153.143.196\n", + "51.6.173.174\n", + "193.60.223.165\n", + "82.10.105.143\n", + "72.239.0.15\n", + "37.211.33.26\n", + "73.19.237.89\n", + "175.157.174.60\n", + "185.18.60.135\n", + "2405:204:958d:ab4b:fd9f:4ae3:97ba:dbd6\n", + "107.1.229.152\n", + "63.199.46.9\n", + "91.213.250.8\n", + "63.193.94.14\n", + "86.152.129.204\n", + "41.189.169.218\n", + "2600:8802:2202:700:50a5:62ba:22b:307\n", + "63.199.46.148\n", + "--------------------\n", + "history url is: http://en.wikipedia.org/w/index.php?title=Reflective_programming&action=history\n", + "212.96.25.37\n", + "--------------------\n", + "history url is: http://en.wikipedia.org/w/index.php?title=Software_design&action=history\n", + "116.202.248.202\n", + "117.18.231.54\n", + "144.136.67.206\n", + "121.6.122.250\n", + "49.191.33.124\n", + "97.107.121.1\n", + "103.51.95.185\n", + "103.204.119.6\n", + "2405:204:6109:8ace::bac:e8a4\n", + "98.26.67.24\n", + "41.220.18.230\n", + "2602:30a:c005:6140:811c:1f14:3cd6:33d6\n", + "49.248.91.74\n", + "39.47.55.196\n", + "91.180.76.245\n", + "106.70.251.236\n", + "2607:fb90:47:304:66f7:3c96:489d:dcc6\n", + "2601:641:1:60c:796b:a24b:47fe:c226\n", + "188.70.8.163\n", + "213.106.31.246\n", + "2405:204:d281:564a::13f2:10b0\n", + "--------------------\n", + "history url is: http://en.wikipedia.org/w/index.php?title=Guido_van_Rossum&action=history\n", + "192.244.101.20\n", + "189.106.118.125\n", + "2.97.124.83\n", + "50.53.21.2\n", + "85.75.27.197\n", + "2a02:c7d:dc55:ef00:25f5:c1b4:9f4:84c3\n", + "136.24.120.181\n", + "2601:647:ca01:5728:38f3:777c:759e:9c96\n", + "2601:197:4500:2ecd:148e:dc78:ad4b:f78b\n", + "86.87.183.2\n", + "196.21.153.197\n", + "184.153.183.139\n", + "51.7.201.233\n", + "195.148.173.220\n", + "212.238.182.54\n", + "66.228.70.98\n", + "203.99.198.73\n", + "78.24.111.93\n", + "--------------------\n", + "history url is: http://en.wikipedia.org/w/index.php?title=Software_developer&action=history\n", + "2602:306:ce6a:a6f0:f092:875a:e3d:8408\n", + "162.244.177.177\n", + "66.204.4.247\n", + "97.70.79.67\n", + "164.100.132.7\n", + "202.136.88.218\n", + "2600:100f:b10b:c5f8:589b:be6f:1a94:cb3f\n", + "203.122.32.92\n", + "2601:186:80:2c0d:197c:ef45:fee7:50e6\n", + "86.27.153.255\n", + "122.170.173.53\n", + "93.93.221.66\n", + "81.101.33.91\n", + "50.232.240.142\n", + "194.135.166.62\n", + "168.8.213.107\n", + "73.152.123.80\n", + "--------------------\n", + "history url is: http://en.wikipedia.org/w/index.php?title=Python_Software_Foundation&action=history\n", + "119.15.154.71\n", + "70.198.33.152\n", + "194.83.198.199\n", + "70.198.36.48\n", + "50.56.228.68\n", + "--------------------\n", + "history url is: http://en.wikipedia.org/w/index.php?title=Software_release_life_cycle&action=history\n", + "105.227.18.229\n", + "50.242.157.61\n", + "99.25.123.67\n", + "24.237.5.51\n", + "107.77.205.107\n", + "103.87.165.166\n", + "77.165.37.34\n", + "108.85.43.5\n", + "2600:1:c24c:7ba7:4d0:5dec:90a1:2e5\n", + "131.204.254.100\n", + "116.58.204.209\n", + "2600:1008:b02a:e2e8:f1d3:c3ed:629c:32b3\n", + "77.203.16.224\n", + "98.255.157.224\n", + "103.255.6.93\n", + "130.190.48.3\n", + "49.207.111.128\n", + "--------------------\n", + "history url is: http://en.wikipedia.org/w/index.php?title=Software_release_life_cycle&action=history\n", + "105.227.18.229\n", + "50.242.157.61\n", + "99.25.123.67\n", + "24.237.5.51\n", + "107.77.205.107\n", + "103.87.165.166\n", + "77.165.37.34\n", + "108.85.43.5\n", + "2600:1:c24c:7ba7:4d0:5dec:90a1:2e5\n", + "131.204.254.100\n", + "116.58.204.209\n", + "2600:1008:b02a:e2e8:f1d3:c3ed:629c:32b3\n", + "77.203.16.224\n", + "98.255.157.224\n", + "103.255.6.93\n", + "130.190.48.3\n", + "49.207.111.128\n", + "--------------------\n", + "history url is: http://en.wikipedia.org/w/index.php?title=Type_system&action=history\n", + "80.77.249.225\n", + "2601:2c6:4500:340:84b2:b14f:e9ec:9437\n", + "2405:204:530d:af4b:196c:1ac2:adfd:a081\n", + "192.55.2.36\n", + "208.104.238.70\n", + "145.132.78.225\n", + "2606:a000:a552:a900:3965:ccb9:5bc3:e766\n", + "61.68.220.194\n", + "2602:306:cc7a:cef0:f5d4:aca1:6eb5:8515\n", + "178.149.46.15\n", + "41.68.85.105\n", + "84.173.153.20\n", + "1.127.104.117\n", + "2600:387:8:5::87\n", + "2600:1010:b11f:4f1d:d84d:1837:3d2:d83e\n", + "103.242.23.184\n", + "39.41.217.12\n", + "193.49.107.105\n", + "--------------------\n", + "history url is: http://en.wikipedia.org/w/index.php?title=Duck_typing&action=history\n", + "149.126.4.73\n", + "178.255.11.40\n", + "119.30.38.106\n", + "112.202.239.97\n", + "134.36.36.187\n", + "83.31.45.80\n", + "73.216.44.168\n", + "193.49.118.7\n", + "193.140.54.250\n", + "141.168.250.205\n", + "92.62.8.1\n", + "50.81.61.167\n", + "2a00:79e0:d:107:28ba:af0b:b5fc:1064\n", + "72.95.147.233\n", + "--------------------\n", + "history url is: http://en.wikipedia.org/w/index.php?title=Dynamic_typing&action=history\n", + "172.194.101.14\n", + "195.149.37.65\n", + "131.111.8.99\n", + "24.217.36.41\n", + "128.250.6.134\n", + "62.23.212.160\n", + "192.102.214.6\n", + "--------------------\n", + "history url is: http://en.wikipedia.org/w/index.php?title=Strong_typing&action=history\n", + "82.69.159.205\n", + "68.2.187.224\n", + "98.155.76.148\n", + "79.67.253.90\n", + "98.234.249.218\n", + "75.152.190.38\n", + "219.64.72.209\n", + "71.61.178.1\n", + "46.14.245.69\n", + "83.254.128.245\n", + "75.35.50.37\n", + "88.175.108.247\n", + "123.201.228.97\n", + "59.167.127.158\n", + "137.52.233.174\n", + "219.64.70.220\n", + "--------------------\n", + "history url is: http://en.wikipedia.org/w/index.php?title=Software_license&action=history\n", + "2600:1:c403:d2cb:b27f:e90b:a6f4:41fa\n", + "2405:204:e406:5b43:1f64:f3ab:9404:719c\n", + "196.15.205.99\n", + "115.164.48.136\n", + "142.197.168.198\n", + "198.49.31.129\n", + "198.49.31.131\n", + "92.40.248.35\n", + "2601:188:180:11f0:65f5:930c:b0b2:cd63\n", + "--------------------\n", + "history url is: http://en.wikipedia.org/w/index.php?title=Python_Software_Foundation_License&action=history\n", + "71.110.212.116\n", + "74.56.110.127\n", + "129.10.9.77\n", + "83.254.138.122\n", + "221.134.160.242\n", + "99.240.76.83\n", + "71.89.160.105\n", + "150.101.214.82\n", + "90.215.243.133\n", + "2001:2003:54fa:d2::1\n", + "--------------------\n", + "history url is: http://en.wikipedia.org/w/index.php?title=Filename_extension&action=history\n", + "96.19.236.197\n", + "2a02:c7d:3ca1:1600:e8ac:1e44:49d2:7c89\n", + "96.4.231.55\n", + "67.78.240.242\n", + "116.100.37.195\n", + "223.230.140.207\n", + "2602:306:cfa9:4410:3463:a8c2:64b3:fcef\n", + "41.114.184.188\n", + "119.30.32.104\n", + "84.10.82.156\n", + "14.194.225.183\n", + "80.249.56.76\n", + "103.66.96.89\n", + "157.48.11.63\n", + "2600:1004:b11d:8dd2:7183:176a:9f6d:b5e6\n", + "69.68.245.129\n", + "175.157.213.170\n", + "--------------------\n", + "history url is: http://en.wikipedia.org/w/index.php?title=Programming_language_implementation&action=history\n", + "93.169.177.175\n", + "105.109.72.234\n", + "2602:306:33e1:6a20:dd1b:bfab:c9bb:50a3\n", + "70.247.162.60\n", + "27.3.0.228\n", + "188.158.140.90\n", + "220.227.8.230\n", + "--------------------\n", + "history url is: http://en.wikipedia.org/w/index.php?title=CPython&action=history\n", + "86.57.255.92\n", + "24.246.78.253\n", + "109.242.192.230\n", + "--------------------\n", + "history url is: http://en.wikipedia.org/w/index.php?title=IronPython&action=history\n", + "83.251.248.170\n", + "128.206.40.209\n", + "190.161.145.117\n", + "70.198.25.249\n", + "137.205.115.241\n", + "70.197.193.51\n", + "70.198.7.85\n", + "2600:1700:edb0:a060:14d0:1d18:969:4211\n", + "130.235.32.53\n", + "193.173.35.5\n", + "--------------------\n", + "history url is: http://en.wikipedia.org/w/index.php?title=Jython&action=history\n", + "71.237.143.157\n", + "95.210.220.183\n", + "128.71.143.243\n", + "157.127.124.151\n", + "94.25.176.56\n", + "84.241.43.4\n", + "50.126.125.240\n", + "137.48.251.105\n", + "217.140.96.140\n", + "103.254.102.17\n", + "104.55.212.99\n", + "192.35.35.36\n", + "--------------------\n", + "history url is: http://en.wikipedia.org/w/index.php?title=MicroPython&action=history\n", + "73.86.31.72\n", + "64.238.129.36\n", + "203.62.211.92\n", + "70.184.214.35\n", + "2601:648:8100:d81:998d:6329:407e:e5d6\n", + "50.53.1.21\n", + "--------------------\n", + "history url is: http://en.wikipedia.org/w/index.php?title=Numba&action=history\n" + ] + }, + { + "ename": "KeyboardInterrupt", + "evalue": "", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mKeyboardInterrupt\u001b[0m Traceback (most recent call last)", + "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[1;32m 34\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0mlink\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mlinks\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 35\u001b[0m \u001b[0mprint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'-'\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0;36m20\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 36\u001b[0;31m \u001b[0mhistoryIPs\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mgetHistoryIPs\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mlink\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mattrs\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m'href'\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 37\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0mhistoryIP\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mhistoryIPs\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 38\u001b[0m \u001b[0mprint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mhistoryIP\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m\u001b[0m in \u001b[0;36mgetHistoryIPs\u001b[0;34m(pageUrl)\u001b[0m\n\u001b[1;32m 19\u001b[0m \u001b[0mhistoryUrl\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m'http://en.wikipedia.org/w/index.php?title={}&action=history'\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mformat\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mpageUrl\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 20\u001b[0m \u001b[0mprint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'history url is: {}'\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mformat\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mhistoryUrl\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 21\u001b[0;31m \u001b[0mhtml\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0murlopen\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mhistoryUrl\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 22\u001b[0m \u001b[0mbs\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mBeautifulSoup\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mhtml\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m'html.parser'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 23\u001b[0m \u001b[0;31m#finds only the links with class \"mw-anonuserlink\" which has IP addresses\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/urllib/request.py\u001b[0m in \u001b[0;36murlopen\u001b[0;34m(url, data, timeout, cafile, capath, cadefault, context)\u001b[0m\n\u001b[1;32m 221\u001b[0m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 222\u001b[0m \u001b[0mopener\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0m_opener\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 223\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mopener\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mopen\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0murl\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mdata\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mtimeout\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 224\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 225\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0minstall_opener\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mopener\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/urllib/request.py\u001b[0m in \u001b[0;36mopen\u001b[0;34m(self, fullurl, data, timeout)\u001b[0m\n\u001b[1;32m 530\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0mprocessor\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mprocess_response\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mget\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mprotocol\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m[\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 531\u001b[0m \u001b[0mmeth\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mgetattr\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mprocessor\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mmeth_name\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 532\u001b[0;31m \u001b[0mresponse\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mmeth\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mreq\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mresponse\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 533\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 534\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mresponse\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/urllib/request.py\u001b[0m in \u001b[0;36mhttp_response\u001b[0;34m(self, request, response)\u001b[0m\n\u001b[1;32m 640\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0;34m(\u001b[0m\u001b[0;36m200\u001b[0m \u001b[0;34m<=\u001b[0m \u001b[0mcode\u001b[0m \u001b[0;34m<\u001b[0m \u001b[0;36m300\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 641\u001b[0m response = self.parent.error(\n\u001b[0;32m--> 642\u001b[0;31m 'http', request, response, code, msg, hdrs)\n\u001b[0m\u001b[1;32m 643\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 644\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mresponse\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/urllib/request.py\u001b[0m in \u001b[0;36merror\u001b[0;34m(self, proto, *args)\u001b[0m\n\u001b[1;32m 562\u001b[0m \u001b[0mhttp_err\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;36m0\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 563\u001b[0m \u001b[0margs\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m(\u001b[0m\u001b[0mdict\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mproto\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mmeth_name\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;34m+\u001b[0m \u001b[0margs\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 564\u001b[0;31m \u001b[0mresult\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_call_chain\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 565\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mresult\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 566\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mresult\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/urllib/request.py\u001b[0m in \u001b[0;36m_call_chain\u001b[0;34m(self, chain, kind, meth_name, *args)\u001b[0m\n\u001b[1;32m 502\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0mhandler\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mhandlers\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 503\u001b[0m \u001b[0mfunc\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mgetattr\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mhandler\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mmeth_name\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 504\u001b[0;31m \u001b[0mresult\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mfunc\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 505\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mresult\u001b[0m \u001b[0;32mis\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0;32mNone\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 506\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mresult\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/urllib/request.py\u001b[0m in \u001b[0;36mhttp_error_302\u001b[0;34m(self, req, fp, code, msg, headers)\u001b[0m\n\u001b[1;32m 754\u001b[0m \u001b[0mfp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mclose\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 755\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 756\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mparent\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mopen\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mnew\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mtimeout\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mreq\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mtimeout\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 757\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 758\u001b[0m \u001b[0mhttp_error_301\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mhttp_error_303\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mhttp_error_307\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mhttp_error_302\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/urllib/request.py\u001b[0m in \u001b[0;36mopen\u001b[0;34m(self, fullurl, data, timeout)\u001b[0m\n\u001b[1;32m 524\u001b[0m \u001b[0mreq\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mmeth\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mreq\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 525\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 526\u001b[0;31m \u001b[0mresponse\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_open\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mreq\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mdata\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 527\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 528\u001b[0m \u001b[0;31m# post-process response\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/urllib/request.py\u001b[0m in \u001b[0;36m_open\u001b[0;34m(self, req, data)\u001b[0m\n\u001b[1;32m 542\u001b[0m \u001b[0mprotocol\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mreq\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mtype\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 543\u001b[0m result = self._call_chain(self.handle_open, protocol, protocol +\n\u001b[0;32m--> 544\u001b[0;31m '_open', req)\n\u001b[0m\u001b[1;32m 545\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mresult\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 546\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mresult\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/urllib/request.py\u001b[0m in \u001b[0;36m_call_chain\u001b[0;34m(self, chain, kind, meth_name, *args)\u001b[0m\n\u001b[1;32m 502\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0mhandler\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mhandlers\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 503\u001b[0m \u001b[0mfunc\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mgetattr\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mhandler\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mmeth_name\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 504\u001b[0;31m \u001b[0mresult\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mfunc\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 505\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mresult\u001b[0m \u001b[0;32mis\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0;32mNone\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 506\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mresult\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/urllib/request.py\u001b[0m in \u001b[0;36mhttps_open\u001b[0;34m(self, req)\u001b[0m\n\u001b[1;32m 1359\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0mhttps_open\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mreq\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1360\u001b[0m return self.do_open(http.client.HTTPSConnection, req,\n\u001b[0;32m-> 1361\u001b[0;31m context=self._context, check_hostname=self._check_hostname)\n\u001b[0m\u001b[1;32m 1362\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1363\u001b[0m \u001b[0mhttps_request\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mAbstractHTTPHandler\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mdo_request_\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/urllib/request.py\u001b[0m in \u001b[0;36mdo_open\u001b[0;34m(self, http_class, req, **http_conn_args)\u001b[0m\n\u001b[1;32m 1319\u001b[0m \u001b[0;32mexcept\u001b[0m \u001b[0mOSError\u001b[0m \u001b[0;32mas\u001b[0m \u001b[0merr\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0;31m# timeout error\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1320\u001b[0m \u001b[0;32mraise\u001b[0m \u001b[0mURLError\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0merr\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 1321\u001b[0;31m \u001b[0mr\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mh\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mgetresponse\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 1322\u001b[0m \u001b[0;32mexcept\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1323\u001b[0m \u001b[0mh\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mclose\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/http/client.py\u001b[0m in \u001b[0;36mgetresponse\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 1329\u001b[0m \u001b[0;32mtry\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1330\u001b[0m \u001b[0;32mtry\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 1331\u001b[0;31m \u001b[0mresponse\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mbegin\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 1332\u001b[0m \u001b[0;32mexcept\u001b[0m \u001b[0mConnectionError\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1333\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mclose\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/http/client.py\u001b[0m in \u001b[0;36mbegin\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 295\u001b[0m \u001b[0;31m# read until we get a non-100 response\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 296\u001b[0m \u001b[0;32mwhile\u001b[0m \u001b[0;32mTrue\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 297\u001b[0;31m \u001b[0mversion\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mstatus\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mreason\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_read_status\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 298\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mstatus\u001b[0m \u001b[0;34m!=\u001b[0m \u001b[0mCONTINUE\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 299\u001b[0m \u001b[0;32mbreak\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/http/client.py\u001b[0m in \u001b[0;36m_read_status\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 256\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 257\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0m_read_status\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 258\u001b[0;31m \u001b[0mline\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mstr\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mfp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mreadline\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0m_MAXLINE\u001b[0m \u001b[0;34m+\u001b[0m \u001b[0;36m1\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m\"iso-8859-1\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 259\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mlen\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mline\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;34m>\u001b[0m \u001b[0m_MAXLINE\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 260\u001b[0m \u001b[0;32mraise\u001b[0m \u001b[0mLineTooLong\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"status line\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/socket.py\u001b[0m in \u001b[0;36mreadinto\u001b[0;34m(self, b)\u001b[0m\n\u001b[1;32m 584\u001b[0m \u001b[0;32mwhile\u001b[0m \u001b[0;32mTrue\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 585\u001b[0m \u001b[0;32mtry\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 586\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_sock\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mrecv_into\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mb\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 587\u001b[0m \u001b[0;32mexcept\u001b[0m \u001b[0mtimeout\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 588\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_timeout_occurred\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;32mTrue\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/ssl.py\u001b[0m in \u001b[0;36mrecv_into\u001b[0;34m(self, buffer, nbytes, flags)\u001b[0m\n\u001b[1;32m 1000\u001b[0m \u001b[0;34m\"non-zero flags not allowed in calls to recv_into() on %s\"\u001b[0m \u001b[0;34m%\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1001\u001b[0m self.__class__)\n\u001b[0;32m-> 1002\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mread\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mnbytes\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mbuffer\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 1003\u001b[0m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1004\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0msocket\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mrecv_into\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mbuffer\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mnbytes\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mflags\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/ssl.py\u001b[0m in \u001b[0;36mread\u001b[0;34m(self, len, buffer)\u001b[0m\n\u001b[1;32m 863\u001b[0m \u001b[0;32mraise\u001b[0m \u001b[0mValueError\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"Read on closed or unwrapped SSL socket.\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 864\u001b[0m \u001b[0;32mtry\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 865\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_sslobj\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mread\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mlen\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mbuffer\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 866\u001b[0m \u001b[0;32mexcept\u001b[0m \u001b[0mSSLError\u001b[0m \u001b[0;32mas\u001b[0m \u001b[0mx\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 867\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mx\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m0\u001b[0m\u001b[0;34m]\u001b[0m \u001b[0;34m==\u001b[0m \u001b[0mSSL_ERROR_EOF\u001b[0m \u001b[0;32mand\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msuppress_ragged_eofs\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/ssl.py\u001b[0m in \u001b[0;36mread\u001b[0;34m(self, len, buffer)\u001b[0m\n\u001b[1;32m 623\u001b[0m \"\"\"\n\u001b[1;32m 624\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mbuffer\u001b[0m \u001b[0;32mis\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0;32mNone\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 625\u001b[0;31m \u001b[0mv\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_sslobj\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mread\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mlen\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mbuffer\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 626\u001b[0m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 627\u001b[0m \u001b[0mv\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_sslobj\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mread\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mlen\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;31mKeyboardInterrupt\u001b[0m: " + ] + } + ], + "source": [ + "from urllib.request import urlopen\n", + "from bs4 import BeautifulSoup\n", + "import json\n", + "import datetime\n", + "import random\n", + "import re\n", + "\n", + "random.seed(datetime.datetime.now())\n", + "def getLinks(articleUrl):\n", + " html = urlopen('http://en.wikipedia.org{}'.format(articleUrl))\n", + " bs = BeautifulSoup(html, 'html.parser')\n", + " return bs.find('div', {'id':'bodyContent'}).findAll('a', \n", + " href=re.compile('^(/wiki/)((?!:).)*$'))\n", + "\n", + "def getHistoryIPs(pageUrl):\n", + " #Format of revision history pages is: \n", + " #http://en.wikipedia.org/w/index.php?title=Title_in_URL&action=history\n", + " pageUrl = pageUrl.replace('/wiki/', '')\n", + " historyUrl = 'http://en.wikipedia.org/w/index.php?title={}&action=history'.format(pageUrl)\n", + " print('history url is: {}'.format(historyUrl))\n", + " html = urlopen(historyUrl)\n", + " bs = BeautifulSoup(html, 'html.parser')\n", + " #finds only the links with class \"mw-anonuserlink\" which has IP addresses \n", + " #instead of usernames\n", + " ipAddresses = bs.findAll('a', {'class':'mw-anonuserlink'})\n", + " addressList = set()\n", + " for ipAddress in ipAddresses:\n", + " addressList.add(ipAddress.get_text())\n", + " return addressList\n", + "\n", + "links = getLinks('/wiki/Python_(programming_language)')\n", + "\n", + "while(len(links) > 0):\n", + " for link in links:\n", + " print('-'*20) \n", + " historyIPs = getHistoryIPs(link.attrs['href'])\n", + " for historyIP in historyIPs:\n", + " print(historyIP)\n", + "\n", + " newLink = links[random.randint(0, len(links)-1)].attrs['href']\n", + " links = getLinks(newLink)" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--------------------\n", + "history url is: http://en.wikipedia.org/w/index.php?title=Programming_paradigm&action=history\n", + "223.104.186.241 is from CN\n", + "213.207.90.158 is from NL\n", + "92.115.222.143 is from MD\n", + "213.108.115.55 is from PL\n", + "2605:a601:e0c:6300:996d:68c0:fb03:af2c is from US\n", + "192.117.105.47 is from IL\n", + "31.203.136.191 is from KW\n", + "168.216.130.133 is from US\n", + "2a02:c7d:a492:f200:e126:2b36:53ca:513a is from GB\n", + "37.238.238.36 is from IQ\n", + "197.255.127.246 is from GH\n", + "110.55.67.15 is from PH\n", + "193.80.242.220 is from AT\n", + "42.111.56.168 is from IN\n", + "223.230.96.108 is from IN\n", + "113.162.8.249 is from VN\n", + "39.36.182.41 is from PK\n", + "--------------------\n", + "history url is: http://en.wikipedia.org/w/index.php?title=Object-oriented_programming&action=history\n", + "113.199.249.237 is from NP\n", + "205.251.185.250 is from US\n", + "1.22.150.73 is from IN\n", + "121.58.212.157 is from PH\n", + "217.225.8.24 is from DE\n", + "162.204.116.16 is from US\n", + "112.200.199.62 is from PH\n", + "117.239.185.50 is from IN\n", + "103.252.25.104 is from IN\n", + "103.74.23.139 is from PK\n", + "103.241.244.36 is from IN\n", + "2605:a601:474:600:2088:fbde:7512:53b2 is from US\n", + "122.181.5.162 is from IN\n", + "24.93.131.140 is from US\n", + "119.152.87.84 is from PK\n", + "93.136.125.208 is from HR\n", + "27.251.109.234 is from IN\n", + "223.230.215.145 is from IN\n", + "103.16.68.215 is from IN\n", + "170.142.177.246 is from US\n", + "--------------------\n", + "history url is: http://en.wikipedia.org/w/index.php?title=Imperative_programming&action=history\n" + ] + }, + { + "ename": "NameError", + "evalue": "name 'HTTPError' is not defined", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mKeyboardInterrupt\u001b[0m Traceback (most recent call last)", + "\u001b[0;32m\u001b[0m in \u001b[0;36mgetCountry\u001b[0;34m(ipAddress)\u001b[0m\n\u001b[1;32m 3\u001b[0m response = urlopen(\n\u001b[0;32m----> 4\u001b[0;31m 'http://freegeoip.net/json/{}'.format(ipAddress)).read().decode('utf-8')\n\u001b[0m\u001b[1;32m 5\u001b[0m \u001b[0;32mexcept\u001b[0m \u001b[0mHTTPError\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/urllib/request.py\u001b[0m in \u001b[0;36murlopen\u001b[0;34m(url, data, timeout, cafile, capath, cadefault, context)\u001b[0m\n\u001b[1;32m 222\u001b[0m \u001b[0mopener\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0m_opener\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 223\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mopener\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mopen\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0murl\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mdata\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mtimeout\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 224\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/urllib/request.py\u001b[0m in \u001b[0;36mopen\u001b[0;34m(self, fullurl, data, timeout)\u001b[0m\n\u001b[1;32m 525\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 526\u001b[0;31m \u001b[0mresponse\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_open\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mreq\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mdata\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 527\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/urllib/request.py\u001b[0m in \u001b[0;36m_open\u001b[0;34m(self, req, data)\u001b[0m\n\u001b[1;32m 543\u001b[0m result = self._call_chain(self.handle_open, protocol, protocol +\n\u001b[0;32m--> 544\u001b[0;31m '_open', req)\n\u001b[0m\u001b[1;32m 545\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mresult\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/urllib/request.py\u001b[0m in \u001b[0;36m_call_chain\u001b[0;34m(self, chain, kind, meth_name, *args)\u001b[0m\n\u001b[1;32m 503\u001b[0m \u001b[0mfunc\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mgetattr\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mhandler\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mmeth_name\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 504\u001b[0;31m \u001b[0mresult\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mfunc\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 505\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mresult\u001b[0m \u001b[0;32mis\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0;32mNone\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/urllib/request.py\u001b[0m in \u001b[0;36mhttp_open\u001b[0;34m(self, req)\u001b[0m\n\u001b[1;32m 1345\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0mhttp_open\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mreq\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 1346\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mdo_open\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mhttp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mclient\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mHTTPConnection\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mreq\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 1347\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/urllib/request.py\u001b[0m in \u001b[0;36mdo_open\u001b[0;34m(self, http_class, req, **http_conn_args)\u001b[0m\n\u001b[1;32m 1320\u001b[0m \u001b[0;32mraise\u001b[0m \u001b[0mURLError\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0merr\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 1321\u001b[0;31m \u001b[0mr\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mh\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mgetresponse\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 1322\u001b[0m \u001b[0;32mexcept\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/http/client.py\u001b[0m in \u001b[0;36mgetresponse\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 1330\u001b[0m \u001b[0;32mtry\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 1331\u001b[0;31m \u001b[0mresponse\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mbegin\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 1332\u001b[0m \u001b[0;32mexcept\u001b[0m \u001b[0mConnectionError\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/http/client.py\u001b[0m in \u001b[0;36mbegin\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 296\u001b[0m \u001b[0;32mwhile\u001b[0m \u001b[0;32mTrue\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 297\u001b[0;31m \u001b[0mversion\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mstatus\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mreason\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_read_status\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 298\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mstatus\u001b[0m \u001b[0;34m!=\u001b[0m \u001b[0mCONTINUE\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/http/client.py\u001b[0m in \u001b[0;36m_read_status\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 257\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0m_read_status\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 258\u001b[0;31m \u001b[0mline\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mstr\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mfp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mreadline\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0m_MAXLINE\u001b[0m \u001b[0;34m+\u001b[0m \u001b[0;36m1\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m\"iso-8859-1\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 259\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mlen\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mline\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;34m>\u001b[0m \u001b[0m_MAXLINE\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/socket.py\u001b[0m in \u001b[0;36mreadinto\u001b[0;34m(self, b)\u001b[0m\n\u001b[1;32m 585\u001b[0m \u001b[0;32mtry\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 586\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_sock\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mrecv_into\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mb\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 587\u001b[0m \u001b[0;32mexcept\u001b[0m \u001b[0mtimeout\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;31mKeyboardInterrupt\u001b[0m: ", + "\nDuring handling of the above exception, another exception occurred:\n", + "\u001b[0;31mNameError\u001b[0m Traceback (most recent call last)", + "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[1;32m 15\u001b[0m \u001b[0mhistoryIPs\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mgetHistoryIPs\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mlink\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mattrs\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m\"href\"\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 16\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0mhistoryIP\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mhistoryIPs\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 17\u001b[0;31m \u001b[0mcountry\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mgetCountry\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mhistoryIP\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 18\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mcountry\u001b[0m \u001b[0;32mis\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0;32mNone\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 19\u001b[0m \u001b[0mprint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'{} is from {}'\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mformat\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mhistoryIP\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mcountry\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m\u001b[0m in \u001b[0;36mgetCountry\u001b[0;34m(ipAddress)\u001b[0m\n\u001b[1;32m 3\u001b[0m response = urlopen(\n\u001b[1;32m 4\u001b[0m 'http://freegeoip.net/json/{}'.format(ipAddress)).read().decode('utf-8')\n\u001b[0;32m----> 5\u001b[0;31m \u001b[0;32mexcept\u001b[0m \u001b[0mHTTPError\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 6\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0;32mNone\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 7\u001b[0m \u001b[0mresponseJson\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mjson\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mloads\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mresponse\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;31mNameError\u001b[0m: name 'HTTPError' is not defined" + ] + } + ], + "source": [ + "def getCountry(ipAddress):\n", + " try:\n", + " response = urlopen(\n", + " 'http://freegeoip.net/json/{}'.format(ipAddress)).read().decode('utf-8')\n", + " except HTTPError:\n", + " return None\n", + " responseJson = json.loads(response)\n", + " return responseJson.get('country_code')\n", + " \n", + "links = getLinks('/wiki/Python_(programming_language)')\n", + "\n", + "while(len(links) > 0):\n", + " for link in links:\n", + " print('-'*20) \n", + " historyIPs = getHistoryIPs(link.attrs[\"href\"])\n", + " for historyIP in historyIPs:\n", + " country = getCountry(historyIP)\n", + " if country is not None:\n", + " print('{} is from {}'.format(historyIP, country))\n", + "\n", + " newLink = links[random.randint(0, len(links)-1)].attrs['href']\n", + " links = getLinks(newLink)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.6.1" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/Chapter13-ImageProcessing.ipynb b/Chapter13-ImageProcessing.ipynb new file mode 100644 index 0000000..db9b049 --- /dev/null +++ b/Chapter13-ImageProcessing.ipynb @@ -0,0 +1,509 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "{'level': [1, 2, 3, 4, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 4, 5, 5, 5, 5, 5, 5], 'page_num': [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], 'block_num': [0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], 'par_num': [0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], 'line_num': [0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2], 'word_num': [0, 0, 0, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 0, 1, 2, 3, 4, 5, 6], 'left': [0, 23, 23, 23, 23, 76, 99, 164, 215, 295, 317, 378, 425, 467, 500, 555, 23, 23, 140, 198, 239, 304, 407], 'top': [0, 26, 26, 26, 26, 26, 30, 26, 26, 26, 26, 26, 26, 26, 26, 26, 54, 55, 55, 59, 59, 55, 54], 'width': [600, 555, 555, 555, 44, 15, 57, 42, 70, 15, 52, 40, 32, 24, 45, 23, 513, 107, 49, 32, 57, 92, 129], 'height': [103, 51, 51, 22, 17, 17, 13, 21, 17, 17, 21, 17, 17, 17, 17, 22, 23, 17, 17, 13, 13, 22, 23], 'conf': [-1, -1, -1, -1, 86, 86, 86, 73, 82, 95, 73, 80, 95, 85, 87, 85, -1, 82, 91, 86, 86, 86, 65], 'text': ['', '', '', '', 'This', 'is', 'some', 'text,', 'written', 'in', 'Arial,', 'that', 'will', 'be', 'read', 'by', '', 'Tesseract.', 'Here', 'are', 'some', 'symbols:', '!@#$%\"&‘()']}\n", + "b'This is some text, written in Arial, that will be read by\\nTesseract. Here are some symbols: !@#$%\"&\\xe2\\x80\\x98()\\n\\n'\n" + ] + } + ], + "source": [ + "from PIL import Image\n", + "import pytesseract\n", + "from pytesseract import Output\n", + "\n", + "print(pytesseract.image_to_data(Image.open('files/'\n", + " 'textOriginal.png'),\n", + " output_type=Output.DICT))\n", + "print(pytesseract.image_to_string(Image.open('files/textOriginal.png'), output_type=Output.BYTES))\n" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "2.2803508502\n", + "100.0\n" + ] + } + ], + "source": [ + "import numpy as np\n", + "\n", + "numbers = [100, 102, 98, 97, 103]\n", + "print(np.std(numbers))\n", + "print(np.mean(numbers))" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "ThIS IS some (ext written In Anal, that will be read by\n", + "Tesseract Here are some symbols: l@#$%\"&'()\n" + ] + } + ], + "source": [ + "from PIL import Image\n", + "import pytesseract\n", + "\n", + "def cleanFile(filePath, newFilePath):\n", + " image = Image.open(filePath)\n", + "\n", + " #Set a threshold value for the image, and save\n", + " image = image.point(lambda x: 0 if x<143 else 255)\n", + " image.save(newFilePath)\n", + " return image\n", + "\n", + "image = cleanFile(\"files/textBad.png\", \"files/textCleaned.png\")\n", + "\n", + "#call tesseract to do OCR on the newly created image\n", + "print(pytesseract.image_to_string(image))" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "This is some text, written in Arial, that will be read by\n", + "Tesseract. Here are some symbols: !@#$%\"&‘()\n", + "\n", + "\n" + ] + } + ], + "source": [ + "from PIL import Image\n", + "import subprocess\n", + "\n", + "def cleanFile(filePath, newFilePath):\n", + " image = Image.open(filePath)\n", + "\n", + " #Set a threshold value for the image, and save\n", + " image = image.point(lambda x: 0 if x<135 else 255)\n", + " image.save(newFilePath)\n", + "\n", + " #call tesseract to do OCR on the newly created image\n", + " subprocess.call([\"tesseract\", newFilePath, \"output\"])\n", + " \n", + " #Open and read the resulting data file\n", + " outputFile = open(\"output.txt\", 'r')\n", + " print(outputFile.read())\n", + " outputFile.close()\n", + "\n", + "cleanFile(\"files/textOriginal.png\", \"files/text_2.png\")" + ] + }, + { + "cell_type": "code", + "execution_count": 26, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "threshold: 80, confidence: 61.8333333333 numChars 18\n", + "threshold: 85, confidence: 64.9130434783 numChars 23\n", + "threshold: 90, confidence: 62.2564102564 numChars 39\n", + "threshold: 95, confidence: 64.5135135135 numChars 37\n", + "threshold: 100, confidence: 60.7878787879 numChars 66\n", + "threshold: 105, confidence: 61.9078947368 numChars 76\n", + "threshold: 110, confidence: 64.6329113924 numChars 79\n", + "threshold: 115, confidence: 69.7397260274 numChars 73\n", + "threshold: 120, confidence: 72.9078947368 numChars 76\n", + "threshold: 125, confidence: 73.582278481 numChars 79\n", + "threshold: 130, confidence: 75.6708860759 numChars 79\n", + "threshold: 135, confidence: 76.8292682927 numChars 82\n", + "threshold: 140, confidence: 72.1686746988 numChars 83\n", + "threshold: 145, confidence: 75.5662650602 numChars 83\n", + "threshold: 150, confidence: 77.5443037975 numChars 79\n", + "threshold: 155, confidence: 79.1066666667 numChars 75\n", + "threshold: 160, confidence: 78.4666666667 numChars 75\n", + "threshold: 165, confidence: 80.1428571429 numChars 70\n", + "threshold: 170, confidence: 78.4285714286 numChars 70\n", + "threshold: 175, confidence: 76.3731343284 numChars 67\n", + "threshold: 180, confidence: 76.7575757576 numChars 66\n", + "threshold: 185, confidence: 79.4920634921 numChars 63\n", + "threshold: 190, confidence: 76.0793650794 numChars 63\n", + "threshold: 195, confidence: 70.6153846154 numChars 65\n" + ] + } + ], + "source": [ + "import pytesseract\n", + "from pytesseract import Output\n", + "from PIL import Image\n", + "import numpy as np\n", + "\n", + "def cleanFile(filePath, threshold):\n", + " image = Image.open(filePath)\n", + " #Set a threshold value for the image, and save\n", + " image = image.point(lambda x: 0 if x -1:\n", + " confidences.append(data['conf'][i])\n", + " numChars.append(len(text[i]))\n", + " \n", + " return np.average(confidences, weights=numChars), sum(numChars)\n", + " \n", + "filePath = \"files/textBad.png\"\n", + "\n", + "start = 80\n", + "step = 5\n", + "end = 200\n", + "\n", + "for threshold in range(start, end, step):\n", + " image = cleanFile(filePath, threshold)\n", + " scores = getConfidence(image)\n", + " print(\"threshold: \"+str(threshold)+\", confidence: \"+str(scores[0])+\" numChars \"+str(scores[1]))\n" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Found image: https://d1b14unh5d6w7g.cloudfront.net/1427027277.01.S003.LXXXXXXX.jpg?Expires=1517813908&Signature=Esov1bmGrixpRerzigTNris1X5NxXhYh0M0h2Vkzho4KQmOMUetNtvC4Q2NcPHEJarhgoTEGgQk33rK/NlL6g7bGd7kEuqDtTVeDnfVFv6N45Fh5zjinOfWRfbaWlbKi0y51WDRPROG/ITUSztyovyxhtTtiAiviUocae/fO4Ic=&Key-Pair-Id=APKAIUO27P366FGALUMQ\n", + "rammed Mam 3‘\n", + "\n", + "Copyright © 2007\n", + "\n", + "The text in this book has been formatted\n", + "and typeset to make reading easier and\n", + "more enjoyable. Spelling and punctuation\n", + "have been modernized and standardized,\n", + "and hyphens have been avoided when\n", + "possible. Obvious typographical errors\n", + "have been corrected. In addition, the text\n", + "has been formatted to the specifications\n", + "indicated on the titIe page. The original\n", + "text is out of copyright. The edited text in\n", + "this edition and the formatting are the\n", + "copyright of Objective Systems Pty Ltd\n", + "ACN 085119 953.\n", + "» 1m\n", + "\n", + "LaDY'M‘Hed mew\n", + "Found image: https://d1b14unh5d6w7g.cloudfront.net/1427027277.01.S006.LXXXXXXX.jpg?Expires=1517813908&Signature=hHkVlIbhqEXCF0eEwjT+XFQHLowD/B0emBi4Xe7ThHptbtNnPqZqeM1KztJlHBD7Xf1V16GWe4APyf9yYWHSS6QQ3isvEakHB5Me/NBS8fcXj718gDbFEl4v9VgoLpxjsRy8g3c/Xay87LlMhYlgqK634w4cG5hrd9Gcbi1lDuE=&Key-Pair-Id=APKAIUO27P366FGALUMQ\n", + "CuDYnlNed Manna:\n", + "\n", + "TABLE OF CONTENTS\n", + "\n", + "Chapter} 1\n", + "Chapter 11 17\n", + "Chapter 111 31\n", + "Chapter IV 43\n", + "Chapter v 55\n", + "Chapter VI 53\n", + "Chapter V11 59\n", + "Chapter vm 77\n", + "chapter IX 91\n", + "Chapter X 97\n", + "Chapter X] 101\n", + "Chapter xu 107\n", + "\n", + "Canyrmhted mum\n", + "Found image: https://d1b14unh5d6w7g.cloudfront.net/1427027277.01.S003.LXXXXXXX.jpg?Expires=1517813908&Signature=Esov1bmGrixpRerzigTNris1X5NxXhYh0M0h2Vkzho4KQmOMUetNtvC4Q2NcPHEJarhgoTEGgQk33rK/NlL6g7bGd7kEuqDtTVeDnfVFv6N45Fh5zjinOfWRfbaWlbKi0y51WDRPROG/ITUSztyovyxhtTtiAiviUocae/fO4Ic=&Key-Pair-Id=APKAIUO27P366FGALUMQ\n", + "Found image: https://d1b14unh5d6w7g.cloudfront.net/1427027277.01.S006.LXXXXXXX.jpg?Expires=1517813908&Signature=hHkVlIbhqEXCF0eEwjT+XFQHLowD/B0emBi4Xe7ThHptbtNnPqZqeM1KztJlHBD7Xf1V16GWe4APyf9yYWHSS6QQ3isvEakHB5Me/NBS8fcXj718gDbFEl4v9VgoLpxjsRy8g3c/Xay87LlMhYlgqK634w4cG5hrd9Gcbi1lDuE=&Key-Pair-Id=APKAIUO27P366FGALUMQ\n", + "Found image: https://d1b14unh5d6w7g.cloudfront.net/1427027277.01.S007.LXXXXXXX.jpg?Expires=1517813916&Signature=cC2WHvp6Zb3YMWwf0XmPG2xhhna9IDpIWTZog3643bMtqb5krx+PPwGBIS5Z2+VD/0BoxQYW7TuUrQ2QA1ouuzFHBrMMl13iFKOPdeOcNuTFvqsNx2zZGrUXLvmrafaiEHiF097ruUQpJT2dvhQk3kAPuYWkPxhNKLRyuFjJ8H8=&Key-Pair-Id=APKAIUO27P366FGALUMQ\n", + "Conyflihud Mmml\n", + "\n", + "Copyflghud anhl\n", + "Found image: https://d1b14unh5d6w7g.cloudfront.net/1427027277.01.S008.LXXXXXXX.jpg?Expires=1517813908&Signature=HuGS9+TRIYXlx5jvFLtR/LGK1ThQSTiurvNJjd2sfHMPRdkhCb22LJM+baLu5nYZtDQguGgY9kdgAROBKYs+tqas89iVjs1bVNG6m4kMctJHokK5yfTVe6szwhf11+yY7JnhFn8qcOMmL7IbyBvV3s/gQIRxWb+j4lILGIoBj/M=&Key-Pair-Id=APKAIUO27P366FGALUMQ\n", + "canyngmed Malena»\n", + "\n", + "Chapter I\n", + "\n", + "During an Interval In the Melvmskl trial In the large\n", + "building of the Law Courts the members and public\n", + "prosecutor met in [van Egorowch Shebek‘s private\n", + "room, where the conversation turned on the celebrated\n", + "Krasovski case. Fedor Vasillevich warmly maintained\n", + "that it was not subject to their jurisdiction, Ivan\n", + "Egorovich maintained the contrary, while Peter\n", + "ivanowch, not havmg entered into the discussmn at\n", + "the start, took no part in it but looked through the\n", + "Gazette which had Just been handed in.\n", + "\n", + "“Gentlemen,” he said, “Ivan Ilych has died!\"\n", + "“You don't say 50!”\n", + "\n", + "“Here, read it yourself,\" repiied Peter Ivanovich,\n", + "handing Fedor VaSIllevich the paper still damp from\n", + "the press, Surrounded by a black border were the\n", + "words: “Praskovya Fedorovna Golovina, with profound\n", + "sorrow, informs relatives and friends of the demise\n", + "of her beloved husband Ivan Ilych Goiovin, Member\n", + "of the Court of Justice, which occurred on February\n", + "the 4th of this year 1882. The funeral will take place\n", + "on Friday at one o'clock in the afternoon.“\n", + "\n", + "Ivan Iiych had been a colleague of the gentlemen\n", + "present and was liked by them ali. He had been ill for\n", + "\n", + "annnhted Malenai\n", + "Found image: https://d1b14unh5d6w7g.cloudfront.net/1427027277.01.S006.LXXXXXXX.jpg?Expires=1517813908&Signature=hHkVlIbhqEXCF0eEwjT+XFQHLowD/B0emBi4Xe7ThHptbtNnPqZqeM1KztJlHBD7Xf1V16GWe4APyf9yYWHSS6QQ3isvEakHB5Me/NBS8fcXj718gDbFEl4v9VgoLpxjsRy8g3c/Xay87LlMhYlgqK634w4cG5hrd9Gcbi1lDuE=&Key-Pair-Id=APKAIUO27P366FGALUMQ\n", + "Found image: https://d1b14unh5d6w7g.cloudfront.net/1427027277.01.S007.LXXXXXXX.jpg?Expires=1517813916&Signature=cC2WHvp6Zb3YMWwf0XmPG2xhhna9IDpIWTZog3643bMtqb5krx+PPwGBIS5Z2+VD/0BoxQYW7TuUrQ2QA1ouuzFHBrMMl13iFKOPdeOcNuTFvqsNx2zZGrUXLvmrafaiEHiF097ruUQpJT2dvhQk3kAPuYWkPxhNKLRyuFjJ8H8=&Key-Pair-Id=APKAIUO27P366FGALUMQ\n", + "Found image: https://d1b14unh5d6w7g.cloudfront.net/1427027277.01.S008.LXXXXXXX.jpg?Expires=1517813908&Signature=HuGS9+TRIYXlx5jvFLtR/LGK1ThQSTiurvNJjd2sfHMPRdkhCb22LJM+baLu5nYZtDQguGgY9kdgAROBKYs+tqas89iVjs1bVNG6m4kMctJHokK5yfTVe6szwhf11+yY7JnhFn8qcOMmL7IbyBvV3s/gQIRxWb+j4lILGIoBj/M=&Key-Pair-Id=APKAIUO27P366FGALUMQ\n", + "Found image: https://d1b14unh5d6w7g.cloudfront.net/1427027277.01.S009.LXXXXXXX.jpg?Expires=1517813916&Signature=Z9uc1Ch9ZhdwrfxfYHfEuPMRBNuTpNZeCC5M6PX5zf9IN75gBvITca59UVgXzCx0vgszKfu5Td7jp4lWobt6b66UBpmbOP/VPHfTtjlkxAHCF8RXA3ilXK+t8Ss8J8GD7fTD/KjdIin+APbwocIH19VlczSLvpL2ynq1Wd7mW/U=&Key-Pair-Id=APKAIUO27P366FGALUMQ\n", + "canyngmed Material\n", + "\n", + "some weeks with an illness said to be incurable.\n", + "His past had been kept open for him, but there\n", + "had been conjectures that in case of his death\n", + "Alexeev might receive his appointment, and that\n", + "either Vinnikov or Shtabel would succeed Alexeev.\n", + "So on receiving the news of Ivan llych's death the\n", + "first thought of each of the gentlemen in that prie\n", + "vate room was of the changes and promotions it\n", + "might occasion among themselves or theiracquaine\n", + "tances.\n", + "\n", + "“I shall be sure to get Shtabel's place or Vin‘\n", + "nikov's,\" thought FedorVasilievich. “I was promised\n", + "that long ago, and the promotion means an extra\n", + "eight hundred rubles a year for me besides the\n", + "allowance.”\n", + "\n", + "“Now I must apply for my brother-in-Iaw’s transfer\n", + "from Kaluga,\" thought Peter Ivanovich. “My Wife\n", + "will be very glad, and then she won't be able to\n", + "say that I never do anything for her relatiuns.”\n", + "“I thought he would never leave his bed again,\"\n", + "said Peter Ivanovich aloud. “It‘s very sad.”\n", + "\n", + "“But what really was the matter with him?\"\n", + "\n", + "“The doctors couldn't say - at least they could,\n", + "but each of them said something different. When\n", + "last I saw him I though he was getting better.\"\n", + "\n", + "CnDYnnhled Material\n", + "Found image: https://d1b14unh5d6w7g.cloudfront.net/1427027277.01.S007.LXXXXXXX.jpg?Expires=1517813916&Signature=cC2WHvp6Zb3YMWwf0XmPG2xhhna9IDpIWTZog3643bMtqb5krx+PPwGBIS5Z2+VD/0BoxQYW7TuUrQ2QA1ouuzFHBrMMl13iFKOPdeOcNuTFvqsNx2zZGrUXLvmrafaiEHiF097ruUQpJT2dvhQk3kAPuYWkPxhNKLRyuFjJ8H8=&Key-Pair-Id=APKAIUO27P366FGALUMQ\n", + "Found image: https://d1b14unh5d6w7g.cloudfront.net/1427027277.01.S008.LXXXXXXX.jpg?Expires=1517813908&Signature=HuGS9+TRIYXlx5jvFLtR/LGK1ThQSTiurvNJjd2sfHMPRdkhCb22LJM+baLu5nYZtDQguGgY9kdgAROBKYs+tqas89iVjs1bVNG6m4kMctJHokK5yfTVe6szwhf11+yY7JnhFn8qcOMmL7IbyBvV3s/gQIRxWb+j4lILGIoBj/M=&Key-Pair-Id=APKAIUO27P366FGALUMQ\n", + "Found image: https://d1b14unh5d6w7g.cloudfront.net/1427027277.01.S009.LXXXXXXX.jpg?Expires=1517813916&Signature=Z9uc1Ch9ZhdwrfxfYHfEuPMRBNuTpNZeCC5M6PX5zf9IN75gBvITca59UVgXzCx0vgszKfu5Td7jp4lWobt6b66UBpmbOP/VPHfTtjlkxAHCF8RXA3ilXK+t8Ss8J8GD7fTD/KjdIin+APbwocIH19VlczSLvpL2ynq1Wd7mW/U=&Key-Pair-Id=APKAIUO27P366FGALUMQ\n", + "Found image: https://d1b14unh5d6w7g.cloudfront.net/1427027277.01.S00A.LXXXXXXX.jpg?Expires=1517813916&Signature=X0hJbtaKDIHCfhjTcLIt80MY0p6DxRyq+vPbVRcvxuvu8pRrOZdysPayP0gZQlKmh1R+vPCs46euKSsN8dRmfBUSWZbox303sPZQH48shcFHPAgxhoG9Z+C47sCPx++fjA+dkBkBwKoYKAo2QnBEIzkyRZusli0wT7Iz3sedt0E=&Key-Pair-Id=APKAIUO27P366FGALUMQ\n", + "canymmeu Malena»\n", + "\n", + "3\n", + "\n", + "“And I haven't been to see him since the holidays.\n", + "I always meant to go.\"\n", + "\n", + "“Had he any property?”\n", + "\n", + "“I think his wife had a little — but something quiet\n", + "trifling.\"\n", + "\n", + "“We shall have to go to see her, but they live so\n", + "terribly far away.\"\n", + "\n", + "“Far away from you, you mean. Everything's far\n", + "away from your place.\"\n", + "\n", + "“You see, he never can forgive my living on the\n", + "other side of the river,\" said Peter Ivanovich,\n", + "smiling at Shebek. Then, still talking of the dis\n", + "tances between different parts of the city, they\n", + "returned to the Court.\n", + "\n", + "Besides considerations as to the possible transfers\n", + "and promotions likely to result from Ivan Ilych’s\n", + "death, the mere fact of the death of a near acquain-\n", + "tance aroused, as usual, in all who heard of it the\n", + "complacent feefing that, “it is he who is dead and\n", + "not 1.\"\n", + "\n", + "Each one thought or felt, “Well, he's dead but I’m\n", + "alive!” But the more intimate of Ivan Ilych's ac-\n", + "quaintances, his so-called friends, could not help\n", + "\n", + "annnmea Mum\n" + ] + }, + { + "ename": "KeyboardInterrupt", + "evalue": "", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mKeyboardInterrupt\u001b[0m Traceback (most recent call last)", + "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[1;32m 23\u001b[0m \u001b[0;31m# While the right arrow is available for clicking, turn through pages\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 24\u001b[0m \u001b[0mdriver\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mfind_element_by_id\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'sitbReaderRightPageTurner'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mclick\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 25\u001b[0;31m \u001b[0mtime\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msleep\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;36m2\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 26\u001b[0m \u001b[0;31m# Get any new pages that have loaded (multiple pages can load at once,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 27\u001b[0m \u001b[0;31m# but duplicates will not be added to a set)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;31mKeyboardInterrupt\u001b[0m: " + ] + } + ], + "source": [ + "import time\n", + "from urllib.request import urlretrieve\n", + "from PIL import Image\n", + "import pytesseract\n", + "from selenium import webdriver\n", + "from PIL import Image\n", + "\n", + "# Create new Selenium driver\n", + "driver = webdriver.Chrome(executable_path='drivers/chromedriver/chromedriver')\n", + "\n", + "driver.get(\n", + " 'https://www.amazon.com/Death-Ivan-Ilyich-Nikolayevich-Tolstoy/dp/1427027277')\n", + "time.sleep(2)\n", + "\n", + "# Click on the book preview button\n", + "driver.find_element_by_id('imgBlkFront').click()\n", + "imageList = []\n", + "\n", + "# Wait for the page to load\n", + "time.sleep(5)\n", + "\n", + "while 'pointer' in driver.find_element_by_id('sitbReaderRightPageTurner').get_attribute('style'):\n", + " # While the right arrow is available for clicking, turn through pages\n", + " driver.find_element_by_id('sitbReaderRightPageTurner').click()\n", + " time.sleep(2)\n", + " # Get any new pages that have loaded (multiple pages can load at once,\n", + " # but duplicates will not be added to a set)\n", + " pages = driver.find_elements_by_xpath(\n", + " '//div[@class=\\'pageImage\\']/div/img')\n", + " if not len(pages):\n", + " print(\"No pages found\")\n", + " for page in pages:\n", + " image = page.get_attribute('src')\n", + " print('Found image: {}'.format(image))\n", + " if image not in imageList:\n", + " urlretrieve(image, 'page.jpg')\n", + " imageList.append(image)\n", + " print(pytesseract.image_to_string(Image.open('page.jpg')))\n", + "\n", + "driver.quit()" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Captcha solution attempt: \\,Lh8a\n", + "There was a problem reading the CAPTCHA correctly!\n" + ] + } + ], + "source": [ + "from urllib.request import urlretrieve\n", + "from urllib.request import urlopen\n", + "from bs4 import BeautifulSoup\n", + "import subprocess\n", + "import requests\n", + "from PIL import Image\n", + "from PIL import ImageOps\n", + "\n", + "def cleanImage(imagePath):\n", + " image = Image.open(imagePath)\n", + " image = image.point(lambda x: 0 if x<143 else 255)\n", + " borderImage = ImageOps.expand(image,border=20,fill='white')\n", + " borderImage.save(imagePath)\n", + "\n", + "html = urlopen('http://www.pythonscraping.com/humans-only')\n", + "bs = BeautifulSoup(html, 'html.parser')\n", + "#Gather prepopulated form values\n", + "imageLocation = bs.find('img', {'title': 'Image CAPTCHA'})['src']\n", + "formBuildId = bs.find('input', {'name':'form_build_id'})['value']\n", + "captchaSid = bs.find('input', {'name':'captcha_sid'})['value']\n", + "captchaToken = bs.find('input', {'name':'captcha_token'})['value']\n", + "\n", + "captchaUrl = 'http://pythonscraping.com'+imageLocation\n", + "urlretrieve(captchaUrl, 'captcha.jpg')\n", + "cleanImage('captcha.jpg')\n", + "p = subprocess.Popen(['tesseract', 'captcha.jpg', 'captcha'], stdout=\n", + " subprocess.PIPE,stderr=subprocess.PIPE)\n", + "p.wait()\n", + "f = open('captcha.txt', 'r')\n", + "\n", + "#Clean any whitespace characters\n", + "captchaResponse = f.read().replace(' ', '').replace('\\n', '')\n", + "print('Captcha solution attempt: '+captchaResponse)\n", + "\n", + "if len(captchaResponse) == 5:\n", + " params = {'captcha_token':captchaToken, 'captcha_sid':captchaSid, \n", + " 'form_id':'comment_node_page_form', 'form_build_id': formBuildId, \n", + " 'captcha_response':captchaResponse, 'name':'Ryan Mitchell', \n", + " 'subject': 'I come to seek the Grail', \n", + " 'comment_body[und][0][value]': \n", + " '...and I am definitely not a bot'}\n", + " r = requests.post('http://www.pythonscraping.com/comment/reply/10', \n", + " data=params)\n", + " responseObj = BeautifulSoup(r.text, 'html.parser')\n", + " if responseObj.find('div', {'class':'messages'}) is not None:\n", + " print(responseObj.find('div', {'class':'messages'}).get_text())\n", + "else:\n", + " print('There was a problem reading the CAPTCHA correctly!')" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.6.1" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/Chapter14-ScrapingTraps.ipynb b/Chapter14-ScrapingTraps.ipynb new file mode 100644 index 0000000..aececb2 --- /dev/null +++ b/Chapter14-ScrapingTraps.ipynb @@ -0,0 +1,174 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "\n", + "ACCEPT\n", + "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8\n", + "\n", + "\n", + "ACCEPT_ENCODING\n", + "gzip, deflate\n", + "\n", + "\n", + "CONNECTION\n", + "keep-alive\n", + "\n", + "\n", + "HOST\n", + "www.whatismybrowser.com\n", + "\n", + "\n", + "USER_AGENT\n", + "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_5)AppleWebKit 537.36 (KHTML, like Gecko) Chrome\n", + "\n", + ">\n" + ] + } + ], + "source": [ + "import requests\n", + "from bs4 import BeautifulSoup\n", + "\n", + "session = requests.Session()\n", + "headers = {'User-Agent':'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_5)'\\\n", + " 'AppleWebKit 537.36 (KHTML, like Gecko) Chrome',\n", + " 'Accept':'text/html,application/xhtml+xml,application/xml;'\\\n", + " 'q=0.9,image/webp,*/*;q=0.8'}\n", + "url = 'https://www.whatismybrowser.com/'\\\n", + "'developers/what-http-headers-is-my-browser-sending'\n", + "req = session.get(url, headers=headers)\n", + "\n", + "bs = BeautifulSoup(req.text, 'html.parser')\n", + "print(bs.find('table',{'class':'table-striped'}).get_text)" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[{'domain': '.pythonscraping.com', 'expires': 'Sat, 27 Jan 2018 21:46:48 GMT', 'expiry': 1517089608, 'httponly': False, 'name': '_gat', 'path': '/', 'secure': False, 'value': '1'}, {'domain': '.pythonscraping.com', 'expires': 'Sun, 28 Jan 2018 21:45:48 GMT', 'expiry': 1517175948, 'httponly': False, 'name': '_gid', 'path': '/', 'secure': False, 'value': 'GA1.2.1903552212.1517089549'}, {'domain': '.pythonscraping.com', 'expires': 'Mon, 27 Jan 2020 21:45:48 GMT', 'expiry': 1580161548, 'httponly': False, 'name': '_ga', 'path': '/', 'secure': False, 'value': 'GA1.2.1362930272.1517089549'}, {'domain': 'pythonscraping.com', 'httponly': False, 'name': 'has_js', 'path': '/', 'secure': False, 'value': '1'}]\n" + ] + } + ], + "source": [ + "from selenium import webdriver\n", + "driver = webdriver.PhantomJS(executable_path='drivers/phantomjs/phantomjs-2.1.1-macosx/bin/phantomjs')\n", + "driver.get('http://pythonscraping.com')\n", + "driver.implicitly_wait(1)\n", + "print(driver.get_cookies())" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[{'domain': '.pythonscraping.com', 'expires': 'Sun, 28 Jan 2018 21:51:09 GMT', 'expiry': 1517176269, 'httponly': False, 'name': '_gid', 'path': '/', 'secure': False, 'value': 'GA1.2.2130634883.1517089865'}, {'domain': '.pythonscraping.com', 'expires': 'Mon, 27 Jan 2020 21:51:09 GMT', 'expiry': 1580161869, 'httponly': False, 'name': '_ga', 'path': '/', 'secure': False, 'value': 'GA1.2.1559626153.1517089865'}, {'domain': 'pythonscraping.com', 'httponly': False, 'name': 'has_js', 'path': '/', 'secure': False, 'value': '1'}, {'domain': '.pythonscraping.com', 'httponly': False, 'name': 'has_js', 'path': '/', 'secure': False, 'value': '1'}, {'domain': '.pythonscraping.com', 'expires': 'Sat, 27 Jan 2018 21:52:05 GMT', 'expiry': 1517107925, 'httponly': False, 'name': '_gat', 'path': '/', 'secure': False, 'value': '1'}]\n" + ] + } + ], + "source": [ + "from selenium import webdriver\n", + "\n", + "phantomPath = 'drivers/phantomjs/phantomjs-2.1.1-macosx/bin/phantomjs'\n", + "driver = webdriver.PhantomJS(executable_path=phantomPath)\n", + "driver.get('http://pythonscraping.com')\n", + "driver.implicitly_wait(1)\n", + "\n", + "savedCookies = driver.get_cookies()\n", + "print(savedCookies)\n", + "\n", + "driver2 = webdriver.PhantomJS(executable_path=phantomPath)\n", + "driver2.get('http://pythonscraping.com')\n", + "driver2.delete_all_cookies()\n", + "for cookie in savedCookies:\n", + " if not cookie['domain'].startswith('.'):\n", + " cookie['domain'] = '.{}'.format(cookie['domain'])\n", + " driver2.add_cookie(cookie)\n", + "\n", + "driver2.get('http://pythonscraping.com')\n", + "driver.implicitly_wait(1)\n", + "print(driver2.get_cookies())" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "The link http://pythonscraping.com/dontgohere is a trap\n", + "Do not change value of phone\n", + "Do not change value of email\n" + ] + } + ], + "source": [ + "from selenium import webdriver\n", + "from selenium.webdriver.remote.webelement import WebElement\n", + "\n", + "driver = webdriver.PhantomJS(\n", + " executable_path='drivers/phantomjs/phantomjs-2.1.1-macosx/bin/phantomjs')\n", + "driver.get('http://pythonscraping.com/pages/itsatrap.html')\n", + "links = driver.find_elements_by_tag_name('a')\n", + "for link in links:\n", + " if not link.is_displayed():\n", + " print('The link {} is a trap'.format(link.get_attribute('href')))\n", + "\n", + "fields = driver.find_elements_by_tag_name('input')\n", + "for field in fields:\n", + " if not field.is_displayed():\n", + " print('Do not change value of {}'.format(field.get_attribute('name')))" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.6.1" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/Chapter15_Testing.ipynb b/Chapter15_Testing.ipynb new file mode 100644 index 0000000..39b981c --- /dev/null +++ b/Chapter15_Testing.ipynb @@ -0,0 +1,341 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 18, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "." + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Setting up the test\n", + "Tearing down the test\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "\n", + "----------------------------------------------------------------------\n", + "Ran 1 test in 0.001s\n", + "\n", + "OK\n" + ] + } + ], + "source": [ + "import unittest\n", + "\n", + "class TestAddition(unittest.TestCase):\n", + " def setUp(self):\n", + " print('Setting up the test')\n", + "\n", + " def tearDown(self):\n", + " print('Tearing down the test')\n", + "\n", + " def test_twoPlusTwo(self):\n", + " total = 2+2\n", + " self.assertEqual(4, total);\n", + "\n", + "if __name__ == '__main__':\n", + " unittest.main(argv=[''], exit=False)" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "..\n", + "----------------------------------------------------------------------\n", + "Ran 2 tests in 0.493s\n", + "\n", + "OK\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Once deleted, variables cannot be recovered. Proceed (y/[n])? y\n" + ] + } + ], + "source": [ + "from urllib.request import urlopen\n", + "from bs4 import BeautifulSoup\n", + "import unittest\n", + "\n", + "class TestWikipedia(unittest.TestCase):\n", + " bs = None\n", + " def setUpClass():\n", + " url = 'http://en.wikipedia.org/wiki/Monty_Python'\n", + " TestWikipedia.bs = BeautifulSoup(urlopen(url), 'html.parser')\n", + "\n", + " def test_titleText(self):\n", + " pageTitle = TestWikipedia.bs.find('h1').get_text()\n", + " self.assertEqual('Monty Python', pageTitle);\n", + "\n", + " def test_contentExists(self):\n", + " content = TestWikipedia.bs.find('div',{'id':'mw-content-text'})\n", + " self.assertIsNotNone(content)\n", + "\n", + "\n", + "if __name__ == '__main__':\n", + " unittest.main(argv=[''], exit=False)\n", + " %reset\n" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/ipykernel_launcher.py:16: DeprecationWarning: Please use assertEqual instead.\n", + " app.launch_new_instance()\n", + "." + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Done!\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "\n", + "----------------------------------------------------------------------\n", + "Ran 1 test in 11.476s\n", + "\n", + "OK\n" + ] + }, + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 3, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "from urllib.request import urlopen\n", + "from bs4 import BeautifulSoup\n", + "import unittest\n", + "import re\n", + "import random\n", + "from urllib.parse import unquote\n", + "\n", + "class TestWikipedia(unittest.TestCase):\n", + "\n", + " def test_PageProperties(self):\n", + " self.url = 'http://en.wikipedia.org/wiki/Monty_Python'\n", + " #Test the first 10 pages we encounter\n", + " for i in range(1, 10):\n", + " self.bs = BeautifulSoup(urlopen(self.url), 'html.parser')\n", + " titles = self.titleMatchesURL()\n", + " self.assertEquals(titles[0], titles[1])\n", + " self.assertTrue(self.contentExists())\n", + " self.url = self.getNextLink()\n", + " print('Done!')\n", + "\n", + " def titleMatchesURL(self):\n", + " pageTitle = self.bs.find('h1').get_text()\n", + " urlTitle = self.url[(self.url.index('/wiki/')+6):]\n", + " urlTitle = urlTitle.replace('_', ' ')\n", + " urlTitle = unquote(urlTitle)\n", + " return [pageTitle.lower(), urlTitle.lower()]\n", + "\n", + " def contentExists(self):\n", + " content = self.bs.find('div',{'id':'mw-content-text'})\n", + " if content is not None:\n", + " return True\n", + " return False\n", + "\n", + " def getNextLink(self):\n", + " #Returns random link on page, using technique from Chapter 3\n", + " links = self.bs.find('div', {'id':'bodyContent'}).find_all('a', href=re.compile('^(/wiki/)((?!:).)*$'))\n", + " randomLink = random.SystemRandom().choice(links)\n", + " return 'https://wikipedia.org{}'.format(randomLink.attrs['href'])\n", + " \n", + "\n", + "if __name__ == '__main__':\n", + " unittest.main(argv=[''], exit=False)\n", + " %reset" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "ename": "IndentationError", + "evalue": "unexpected indent (, line 22)", + "output_type": "error", + "traceback": [ + "\u001b[0;36m File \u001b[0;32m\"\"\u001b[0;36m, line \u001b[0;32m22\u001b[0m\n\u001b[0;31m .click(firstnameField)\u001b[0m\n\u001b[0m ^\u001b[0m\n\u001b[0;31mIndentationError\u001b[0m\u001b[0;31m:\u001b[0m unexpected indent\n" + ] + } + ], + "source": [ + "from selenium import webdriver\n", + "from selenium.webdriver.remote.webelement import WebElement\n", + "from selenium.webdriver.common.keys import Keys\n", + "from selenium.webdriver import ActionChains\n", + "\n", + "\n", + "driver = webdriver.PhantomJS(executable_path='drivers/phantomjs/phantomjs')\n", + "driver.get('http://pythonscraping.com/pages/files/form.html')\n", + "\n", + "firstnameField = driver.find_element_by_name('firstname')\n", + "lastnameField = driver.find_element_by_name('lastname')\n", + "submitButton = driver.find_element_by_id('submit')\n", + "\n", + "### METHOD 1 ###\n", + "#firstnameField.send_keys('Ryan')\n", + "lastnameField.send_keys('Mitchell')\n", + "submitButton.click()\n", + "################\n", + "\n", + "### METHOD 2 ###\n", + "actions = ActionChains(driver).click(firstnameField).send_keys('Ryan').click(lastnameField).send_keys('Mitchell').send_keys(Keys.RETURN)\n", + "actions.perform()\n", + "################\n", + "\n", + "print(driver.find_element_by_tag_name('body').text)\n", + "\n", + "driver.close()" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "F" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Tearing down the test\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "\n", + "======================================================================\n", + "FAIL: test_drag (__main__.TestAddition)\n", + "----------------------------------------------------------------------\n", + "Traceback (most recent call last):\n", + " File \"\", line 21, in test_drag\n", + " self.assertEqual(\"You are definitely not a bot!\", self.driver.find_element_by_id(\"message\").text)\n", + "AssertionError: 'You are definitely not a bot!' != 'Prove you are not a bot, by dragging the [38 chars]rea!'\n", + "- You are definitely not a bot!\n", + "+ Prove you are not a bot, by dragging the square from the blue area to the red area!\n", + "\n", + "\n", + "----------------------------------------------------------------------\n", + "Ran 1 test in 4.681s\n", + "\n", + "FAILED (failures=1)\n" + ] + } + ], + "source": [ + "from selenium import webdriver\n", + "from selenium.webdriver.remote.webelement import WebElement\n", + "from selenium.webdriver import ActionChains\n", + "import unittest\n", + "\n", + "\n", + "class TestAddition(unittest.TestCase):\n", + " driver = None\n", + "\n", + " def setUp(self):\n", + " self.driver = webdriver.PhantomJS(\n", + " executable_path='drivers/phantomjs/phantomjs')\n", + " url = 'http://pythonscraping.com/pages/javascript/draggableDemo.html'\n", + " self.driver.get(url)\n", + "\n", + " def tearDown(self):\n", + " print(\"Tearing down the test\")\n", + "\n", + " def test_drag(self):\n", + " element = self.driver.find_element_by_id(\"draggable\")\n", + " target = self.driver.find_element_by_id(\"div2\")\n", + " actions = ActionChains(self.driver)\n", + " actions.drag_and_drop(element, target).perform()\n", + " self.assertEqual(\"You are definitely not a bot!\",\n", + " self.driver.find_element_by_id(\"message\").text)\n", + "\n", + "\n", + "if __name__ == '__main__':\n", + " unittest.main(argv=[''], exit=False)\n", + " %reset" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.6.1" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} From 84529143d42a77c9722144b6e0eb045640ed9bc0 Mon Sep 17 00:00:00 2001 From: remitchell Date: Fri, 23 Mar 2018 22:14:14 -0400 Subject: [PATCH 32/47] Added chapter16 --- chapter16/multiprocess.py | 36 ++++++++++++++++++++ chapter16/multiprocess_example.py | 23 +++++++++++++ chapter16/multiprocess_queue.py | 54 ++++++++++++++++++++++++++++++ chapter16/multithreaded.py | 36 ++++++++++++++++++++ chapter16/multithreaded_class.py | 38 +++++++++++++++++++++ chapter16/multithreaded_example.py | 19 +++++++++++ chapter16/multithreaded_queue.py | 54 ++++++++++++++++++++++++++++++ chapter16/threading_crawler.py | 28 ++++++++++++++++ chapter16/threading_example.py | 14 ++++++++ 9 files changed, 302 insertions(+) create mode 100644 chapter16/multiprocess.py create mode 100644 chapter16/multiprocess_example.py create mode 100644 chapter16/multiprocess_queue.py create mode 100644 chapter16/multithreaded.py create mode 100644 chapter16/multithreaded_class.py create mode 100644 chapter16/multithreaded_example.py create mode 100644 chapter16/multithreaded_queue.py create mode 100644 chapter16/threading_crawler.py create mode 100644 chapter16/threading_example.py diff --git a/chapter16/multiprocess.py b/chapter16/multiprocess.py new file mode 100644 index 0000000..83be186 --- /dev/null +++ b/chapter16/multiprocess.py @@ -0,0 +1,36 @@ +from urllib.request import urlopen +from bs4 import BeautifulSoup +import re +import random + +from multiprocessing import Process, Queue +import os +import time +import Thread + +def getLinks(bsObj, queue): + print('Getting links in {}'.format(os.getpid())) + links = bsObj.find('div', {'id':'bodyContent'}).find_all('a', href=re.compile('^(/wiki/)((?!:).)*$')) + return [link for link in links if link not in queue.get()] + +def scrape_article(path, queue): + queue.get().append() + print("Process {} list is now: {}".format(os.getpid(), visited)) + html = urlopen('http://en.wikipedia.org{}'.format(path)) + time.sleep(5) + bsObj = BeautifulSoup(html, 'html.parser') + title = bsObj.find('h1').get_text() + print('Scraping {} in process {}'.format(title, os.getpid())) + links = getLinks(bsObj) + if len(links) > 0: + newArticle = links[random.randint(0, len(links)-1)].attrs['href'] + print(newArticle) + scrape_article(newArticle) + +processes = [] +queue = Queue() +processes.append(Process(target=scrape_article, args=('/wiki/Kevin_Bacon', queue,))) +processes.append(Process(target=scrape_article, args=('/wiki/Monty_Python', queue,))) + +for p in processes: + p.start() diff --git a/chapter16/multiprocess_example.py b/chapter16/multiprocess_example.py new file mode 100644 index 0000000..9d019b6 --- /dev/null +++ b/chapter16/multiprocess_example.py @@ -0,0 +1,23 @@ +from multiprocessing import Process +import time + +def print_time(threadName, delay, iterations): + start = int(time.time()) + for i in range(0,iterations): + time.sleep(delay) + seconds_elapsed = str(int(time.time()) - start) + print (threadName if threadName else seconds_elapsed) + + +processes = [] +processes.append(Process(target=print_time, args=(None, 1, 100))) +processes.append(Process(target=print_time, args=("Fizz", 3, 33))) +processes.append(Process(target=print_time, args=("Buzz", 5, 20))) + +for p in processes: + p.start() + +for p in processes: + p.join() + +print("Program complete") \ No newline at end of file diff --git a/chapter16/multiprocess_queue.py b/chapter16/multiprocess_queue.py new file mode 100644 index 0000000..caea096 --- /dev/null +++ b/chapter16/multiprocess_queue.py @@ -0,0 +1,54 @@ + +from urllib.request import urlopen +from bs4 import BeautifulSoup +import re +import random +from multiprocessing import Process, Queue +import os +import time + + +def task_delegator(taskQueue, foundUrlsQueue): + #Initialize with a task for each process + visited = ['/wiki/Kevin_Bacon', '/wiki/Monty_Python'] + taskQueue.put('/wiki/Kevin_Bacon') + taskQueue.put('/wiki/Monty_Python') + + while 1: + #Check to see if there are new links in the foundUrlsQueue for processing + if not foundUrlsQueue.empty(): + links = [link for link in foundUrlsQueue.get() if link not in visited] + for link in links: + #Add new link to the taskQueue + taskQueue.put(link) + +def get_links(bsObj): + links = bsObj.find('div', {'id':'bodyContent'}).find_all('a', href=re.compile('^(/wiki/)((?!:).)*$')) + return [link.attrs['href'] for link in links] + +def scrape_article(taskQueue, foundUrlsQueue): + while 1: + while taskQueue.empty(): + #Sleep 100 ms while waiting for the task queue + #This should be rare + time.sleep(.1) + path = taskQueue.get() + html = urlopen('http://en.wikipedia.org{}'.format(path)) + time.sleep(5) + bsObj = BeautifulSoup(html, 'html.parser') + title = bsObj.find('h1').get_text() + print('Scraping {} in process {}'.format(title, os.getpid())) + links = get_links(bsObj) + #Send these to the delegator for processing + foundUrlsQueue.put(links) + + +processes = [] +taskQueue = Queue() +foundUrlsQueue = Queue() +processes.append(Process(target=task_delegator, args=(taskQueue, foundUrlsQueue,))) +processes.append(Process(target=scrape_article, args=(taskQueue, foundUrlsQueue,))) +processes.append(Process(target=scrape_article, args=(taskQueue, foundUrlsQueue,))) + +for p in processes: + p.start() \ No newline at end of file diff --git a/chapter16/multithreaded.py b/chapter16/multithreaded.py new file mode 100644 index 0000000..709e4e4 --- /dev/null +++ b/chapter16/multithreaded.py @@ -0,0 +1,36 @@ +from urllib.request import urlopen +from bs4 import BeautifulSoup +import re +import random + +import _thread +import time + +visited = [] +def getLinks(thread_name, bsObj): + print('Getting links in {}'.format(thread_name)) + links = bsObj.find('div', {'id':'bodyContent'}).find_all('a', href=re.compile('^(/wiki/)((?!:).)*$')) + return [link for link in links if link not in visited] + +def scrape_article(thread_name, path): + visited.append(path) + html = urlopen('http://en.wikipedia.org{}'.format(path)) + time.sleep(5) + bsObj = BeautifulSoup(html, 'html.parser') + title = bsObj.find('h1').get_text() + print('Scraping {} in thread {}'.format(title, thread_name)) + links = getLinks(thread_name, bsObj) + if len(links) > 0: + newArticle = links[random.randint(0, len(links)-1)].attrs['href'] + print(newArticle) + scrape_article(thread_name, newArticle) + + +try: + _thread.start_new_thread(scrape_article, ('Thread 1', '/wiki/Kevin_Bacon',)) + _thread.start_new_thread(scrape_article, ('Thread 2', '/wiki/Monty_Python',)) +except: + print ('Error: unable to start threads') + +while 1: + pass \ No newline at end of file diff --git a/chapter16/multithreaded_class.py b/chapter16/multithreaded_class.py new file mode 100644 index 0000000..8f4b47d --- /dev/null +++ b/chapter16/multithreaded_class.py @@ -0,0 +1,38 @@ +from urllib.request import urlopen +from bs4 import BeautifulSoup +import re +import random + +import _thread +import time + +visited = [] +def getLinks(thread_name, bsObj): + print('Getting links in {}'.format(thread_name)) + links = bsObj.find('div', {'id':'bodyContent'}).find_all('a', href=re.compile('^(/wiki/)((?!:).)*$')) + return [link for link in links if link not in visited] + +# Define a function for the thread +def scrape_article(thread_name, path): + visited.append(path) + html = urlopen('http://en.wikipedia.org{}'.format(path)) + time.sleep(5) + bsObj = BeautifulSoup(html, 'html.parser') + title = bsObj.find('h1').get_text() + print('Scraping {} in thread {}'.format(title, thread_name)) + links = getLinks(thread_name, bsObj) + if len(links) > 0: + newArticle = links[random.randint(0, len(links)-1)].attrs['href'] + print(newArticle) + scrape_article(thread_name, newArticle) + + +# Create two threads as follows +try: + _thread.start_new_thread(scrape_article, ('Thread 1', '/wiki/Kevin_Bacon',)) + _thread.start_new_thread(scrape_article, ('Thread 2', '/wiki/Monty_Python',)) +except: + print ('Error: unable to start threads') + +while 1: + pass \ No newline at end of file diff --git a/chapter16/multithreaded_example.py b/chapter16/multithreaded_example.py new file mode 100644 index 0000000..0ee93de --- /dev/null +++ b/chapter16/multithreaded_example.py @@ -0,0 +1,19 @@ +import _thread +import time + +def print_time(threadName, delay, iterations): + start = int(time.time()) + for i in range(0,iterations): + time.sleep(delay) + seconds_elapsed = str(int(time.time()) - start) + print (threadName if threadName else seconds_elapsed) + +try: + _thread.start_new_thread(print_time, (None, 1, 100)) + _thread.start_new_thread(print_time, ("Fizz", 3, 33)) + _thread.start_new_thread(print_time, ("Buzz", 5, 20)) +except: + print ("Error: unable to start thread") + +while 1: + pass \ No newline at end of file diff --git a/chapter16/multithreaded_queue.py b/chapter16/multithreaded_queue.py new file mode 100644 index 0000000..25fc315 --- /dev/null +++ b/chapter16/multithreaded_queue.py @@ -0,0 +1,54 @@ +from urllib.request import urlopen +from bs4 import BeautifulSoup +import re +import random +import _thread +from queue import Queue +import time +import pymysql + + +def storage(queue): + conn = pymysql.connect(host='127.0.0.1', unix_socket='/tmp/mysql.sock', user='root', passwd='', db='mysql', charset='utf8') + cur = conn.cursor() + cur.execute('USE wiki_threads') + while 1: + if not queue.empty(): + article = queue.get() + cur.execute('SELECT * FROM pages WHERE path = %s', (article["path"])) + if cur.rowcount == 0: + print("Storing article {}".format(article["title"])) + cur.execute('INSERT INTO pages (title, path) VALUES (%s, %s)', (article["title"], article["path"])) + conn.commit() + else: + print("Article already exists: {}".format(article['title'])) + +visited = [] +def getLinks(thread_name, bsObj): + print('Getting links in {}'.format(thread_name)) + links = bsObj.find('div', {'id':'bodyContent'}).find_all('a', href=re.compile('^(/wiki/)((?!:).)*$')) + return [link for link in links if link not in visited] + +def scrape_article(thread_name, path, queue): + visited.append(path) + html = urlopen('http://en.wikipedia.org{}'.format(path)) + time.sleep(5) + bsObj = BeautifulSoup(html, 'html.parser') + title = bsObj.find('h1').get_text() + print('Added {} for storage in thread {}'.format(title, thread_name)) + queue.put({"title":title, "path":path}) + links = getLinks(thread_name, bsObj) + if len(links) > 0: + newArticle = links[random.randint(0, len(links)-1)].attrs['href'] + scrape_article(thread_name, newArticle, queue) + +queue = Queue() +try: + _thread.start_new_thread(scrape_article, ('Thread 1', '/wiki/Kevin_Bacon', queue,)) + _thread.start_new_thread(scrape_article, ('Thread 2', '/wiki/Monty_Python', queue,)) + _thread.start_new_thread(storage, (queue,)) +except: + print ('Error: unable to start threads') + +while 1: + pass \ No newline at end of file diff --git a/chapter16/threading_crawler.py b/chapter16/threading_crawler.py new file mode 100644 index 0000000..36478c2 --- /dev/null +++ b/chapter16/threading_crawler.py @@ -0,0 +1,28 @@ +import threading +import time + +class Crawler(threading.Thread): + def __init__(self): + threading.Thread.__init__(self) + self.done = False + + def isDone(self): + return self.done + + def run(self): + time.sleep(5) + self.done = True + raise Exception('Something bad happened!') + +t = Crawler() +t.start() + +while True: + time.sleep(1) + if t.isDone(): + print('Done') + break + if not t.isAlive(): + t = Crawler() + t.start() + diff --git a/chapter16/threading_example.py b/chapter16/threading_example.py new file mode 100644 index 0000000..d0a8847 --- /dev/null +++ b/chapter16/threading_example.py @@ -0,0 +1,14 @@ +import threading +import time + +def print_time(threadName, delay, iterations): + start = int(time.time()) + for i in range(0,iterations): + time.sleep(delay) + seconds_elapsed = str(int(time.time()) - start) + print ('{} {}'.format(seconds_elapsed, threadName)) + +t = threading.Thread(target=print_time, args=('Fizz', 3, 33)).start() +t = threading.Thread(target=print_time, args=('Buzz', 5, 20)).start() +t = threading.Thread(target=print_time, args=('Counter', 1, 100)).start() + From eda827ea6f2d6c6d1fc4a3a4807895ed9c34de73 Mon Sep 17 00:00:00 2001 From: remitchell Date: Fri, 23 Mar 2018 22:17:55 -0400 Subject: [PATCH 33/47] Adding v1 back in --- v1/chapter1/1-basicExample.py | 4 + v1/chapter1/2-beautifulSoup.py | 6 ++ v1/chapter1/3-exceptionHandling.py | 26 ++++++ v1/chapter10/1-seleniumBasic.py | 10 +++ v1/chapter10/2-waitForLoad.py | 14 +++ v1/chapter10/3-javascriptRedirect.py | 25 ++++++ v1/chapter11/1-basicImage.py | 6 ++ v1/chapter11/2-cleanImage.py | 19 ++++ v1/chapter11/3-readWebImages.py | 36 ++++++++ v1/chapter11/4-solveCaptcha.py | 48 ++++++++++ v1/chapter12/1-headers.py | 10 +++ v1/chapter12/2-seleniumCookies.py | 18 ++++ v1/chapter12/3-honeypotDetection.py | 14 +++ v1/chapter13/1-wikiUnitTest.py | 52 +++++++++++ v1/chapter13/2-wikiSeleniumTest.py | 8 ++ v1/chapter13/3-interactiveTest.py | 29 ++++++ v1/chapter13/4-dragAndDrop.py | 20 +++++ v1/chapter13/5-takeScreenshot.py | 13 +++ v1/chapter13/6-combinedTest.py | 30 +++++++ v1/chapter14/1-socks.py | 7 ++ v1/chapter14/2-seleniumSocks.py | 7 ++ v1/chapter2/1-selectByClass.py | 8 ++ v1/chapter2/2-selectByAttribute.py | 7 ++ v1/chapter2/3-findDescendants.py | 8 ++ v1/chapter2/4-findSiblings.py | 7 ++ v1/chapter2/5-findParents.py | 6 ++ v1/chapter2/6-regularExpressions.py | 9 ++ v1/chapter2/7-lambdaExpressions.py | 7 ++ v1/chapter3/1-getWikiLinks.py | 16 ++++ v1/chapter3/2-crawlWikipedia.py | 25 ++++++ v1/chapter3/3-crawlSite.py | 51 +++++++++++ v1/chapter3/4-getExternalLinks.py | 56 ++++++++++++ v1/chapter3/5-getAllExternalLinks.py | 76 ++++++++++++++++ v1/chapter3/scrapy/wikiSpider/scrapy.cfg | 11 +++ .../scrapy/wikiSpider/wikiSpider/__init__.py | 0 .../scrapy/wikiSpider/wikiSpider/items.py | 14 +++ .../wikiSpider/wikiSpider/middlewares.py | 56 ++++++++++++ .../scrapy/wikiSpider/wikiSpider/pipelines.py | 11 +++ .../scrapy/wikiSpider/wikiSpider/settings.py | 90 +++++++++++++++++++ .../wikiSpider/wikiSpider/spiders/__init__.py | 4 + .../wikiSpider/spiders/articleSpider.py | 18 ++++ v1/chapter4/1-searchTwitter.py | 6 ++ v1/chapter4/2-updateTwitter.py | 6 ++ v1/chapter4/3-getTwitterStatus.py | 6 ++ v1/chapter4/4-decodeJson.py | 9 ++ v1/chapter4/5-jsonParsing.py | 9 ++ v1/chapter4/6-wikiHistories.py | 53 +++++++++++ v1/chapter5/1-getPageMedia.py | 42 +++++++++ v1/chapter5/2-createCsv.py | 11 +++ v1/chapter5/3-scrapeCsv.py | 20 +++++ v1/chapter5/4-mysqlBasicExample.py | 8 ++ v1/chapter5/5-storeWikiLinks.py | 34 +++++++ v1/chapter5/6-6DegreesCrawlWiki.py | 54 +++++++++++ v1/chapter5/7-sendEmail.py | 12 +++ v1/chapter5/8-sendEmailWhenChristmas.py | 22 +++++ v1/chapter6/1-getText.py | 4 + v1/chapter6/2-getUtf8Text.py | 9 ++ v1/chapter6/3-readingCsv.py | 10 +++ v1/chapter6/4-readingCsvDict.py | 12 +++ v1/chapter6/5-readPdf.py | 24 +++++ v1/chapter6/6-readDocx.py | 23 +++++ v1/chapter7/1-2grams.py | 16 ++++ v1/chapter7/2-clean2grams.py | 41 +++++++++ v1/chapter8/1-count2Grams.py | 35 ++++++++ v1/chapter8/2-countUncommon2Grams.py | 56 ++++++++++++ v1/chapter8/3-markovGenerator.py | 62 +++++++++++++ v1/chapter8/4-6DegreesFinder.py | 48 ++++++++++ v1/chapter8/5-NltkTokenize.py | 5 ++ v1/chapter8/6-NltkSearch.py | 6 ++ v1/chapter8/7-NltkAnalysis.py | 10 +++ v1/chapter9/1-simpleForm.py | 5 ++ v1/chapter9/2-fileSubmission.py | 6 ++ v1/chapter9/3-cookies.py | 10 +++ v1/chapter9/4-sessionCookies.py | 12 +++ v1/chapter9/5-BasicAuth.py | 7 ++ 75 files changed, 1575 insertions(+) create mode 100644 v1/chapter1/1-basicExample.py create mode 100644 v1/chapter1/2-beautifulSoup.py create mode 100644 v1/chapter1/3-exceptionHandling.py create mode 100644 v1/chapter10/1-seleniumBasic.py create mode 100644 v1/chapter10/2-waitForLoad.py create mode 100644 v1/chapter10/3-javascriptRedirect.py create mode 100644 v1/chapter11/1-basicImage.py create mode 100644 v1/chapter11/2-cleanImage.py create mode 100644 v1/chapter11/3-readWebImages.py create mode 100644 v1/chapter11/4-solveCaptcha.py create mode 100644 v1/chapter12/1-headers.py create mode 100644 v1/chapter12/2-seleniumCookies.py create mode 100644 v1/chapter12/3-honeypotDetection.py create mode 100644 v1/chapter13/1-wikiUnitTest.py create mode 100644 v1/chapter13/2-wikiSeleniumTest.py create mode 100644 v1/chapter13/3-interactiveTest.py create mode 100644 v1/chapter13/4-dragAndDrop.py create mode 100644 v1/chapter13/5-takeScreenshot.py create mode 100644 v1/chapter13/6-combinedTest.py create mode 100644 v1/chapter14/1-socks.py create mode 100644 v1/chapter14/2-seleniumSocks.py create mode 100644 v1/chapter2/1-selectByClass.py create mode 100644 v1/chapter2/2-selectByAttribute.py create mode 100644 v1/chapter2/3-findDescendants.py create mode 100644 v1/chapter2/4-findSiblings.py create mode 100644 v1/chapter2/5-findParents.py create mode 100644 v1/chapter2/6-regularExpressions.py create mode 100644 v1/chapter2/7-lambdaExpressions.py create mode 100644 v1/chapter3/1-getWikiLinks.py create mode 100644 v1/chapter3/2-crawlWikipedia.py create mode 100644 v1/chapter3/3-crawlSite.py create mode 100644 v1/chapter3/4-getExternalLinks.py create mode 100644 v1/chapter3/5-getAllExternalLinks.py create mode 100644 v1/chapter3/scrapy/wikiSpider/scrapy.cfg create mode 100644 v1/chapter3/scrapy/wikiSpider/wikiSpider/__init__.py create mode 100644 v1/chapter3/scrapy/wikiSpider/wikiSpider/items.py create mode 100644 v1/chapter3/scrapy/wikiSpider/wikiSpider/middlewares.py create mode 100644 v1/chapter3/scrapy/wikiSpider/wikiSpider/pipelines.py create mode 100644 v1/chapter3/scrapy/wikiSpider/wikiSpider/settings.py create mode 100644 v1/chapter3/scrapy/wikiSpider/wikiSpider/spiders/__init__.py create mode 100644 v1/chapter3/scrapy/wikiSpider/wikiSpider/spiders/articleSpider.py create mode 100644 v1/chapter4/1-searchTwitter.py create mode 100644 v1/chapter4/2-updateTwitter.py create mode 100644 v1/chapter4/3-getTwitterStatus.py create mode 100644 v1/chapter4/4-decodeJson.py create mode 100644 v1/chapter4/5-jsonParsing.py create mode 100644 v1/chapter4/6-wikiHistories.py create mode 100644 v1/chapter5/1-getPageMedia.py create mode 100644 v1/chapter5/2-createCsv.py create mode 100644 v1/chapter5/3-scrapeCsv.py create mode 100644 v1/chapter5/4-mysqlBasicExample.py create mode 100644 v1/chapter5/5-storeWikiLinks.py create mode 100644 v1/chapter5/6-6DegreesCrawlWiki.py create mode 100644 v1/chapter5/7-sendEmail.py create mode 100644 v1/chapter5/8-sendEmailWhenChristmas.py create mode 100644 v1/chapter6/1-getText.py create mode 100644 v1/chapter6/2-getUtf8Text.py create mode 100644 v1/chapter6/3-readingCsv.py create mode 100644 v1/chapter6/4-readingCsvDict.py create mode 100644 v1/chapter6/5-readPdf.py create mode 100644 v1/chapter6/6-readDocx.py create mode 100644 v1/chapter7/1-2grams.py create mode 100644 v1/chapter7/2-clean2grams.py create mode 100644 v1/chapter8/1-count2Grams.py create mode 100644 v1/chapter8/2-countUncommon2Grams.py create mode 100644 v1/chapter8/3-markovGenerator.py create mode 100644 v1/chapter8/4-6DegreesFinder.py create mode 100644 v1/chapter8/5-NltkTokenize.py create mode 100644 v1/chapter8/6-NltkSearch.py create mode 100644 v1/chapter8/7-NltkAnalysis.py create mode 100644 v1/chapter9/1-simpleForm.py create mode 100644 v1/chapter9/2-fileSubmission.py create mode 100644 v1/chapter9/3-cookies.py create mode 100644 v1/chapter9/4-sessionCookies.py create mode 100644 v1/chapter9/5-BasicAuth.py diff --git a/v1/chapter1/1-basicExample.py b/v1/chapter1/1-basicExample.py new file mode 100644 index 0000000..558fb2a --- /dev/null +++ b/v1/chapter1/1-basicExample.py @@ -0,0 +1,4 @@ +from urllib.request import urlopen +#Retrieve HTML string from the URL +html = urlopen("http://www.pythonscraping.com/exercises/exercise1.html") +print(html.read()) \ No newline at end of file diff --git a/v1/chapter1/2-beautifulSoup.py b/v1/chapter1/2-beautifulSoup.py new file mode 100644 index 0000000..320e3d6 --- /dev/null +++ b/v1/chapter1/2-beautifulSoup.py @@ -0,0 +1,6 @@ +from urllib.request import urlopen +from bs4 import BeautifulSoup + +html = urlopen("http://www.pythonscraping.com/exercises/exercise1.html") +bsObj = BeautifulSoup(html, "html.parser") +print(bsObj.h1) diff --git a/v1/chapter1/3-exceptionHandling.py b/v1/chapter1/3-exceptionHandling.py new file mode 100644 index 0000000..a5cc3af --- /dev/null +++ b/v1/chapter1/3-exceptionHandling.py @@ -0,0 +1,26 @@ +from urllib.request import urlopen +from urllib.error import HTTPError +from bs4 import BeautifulSoup +import sys + + +def getTitle(url): + try: + html = urlopen(url) + except HTTPError as e: + print(e) + return None + try: + bsObj = BeautifulSoup(html, "html.parser") + title = bsObj.body.h1 + except AttributeError as e: + return None + return title + +title = getTitle("http://www.pythonscraping.com/exercises/exercise1.html") +if title == None: + print("Title could not be found") +else: + print(title) + + \ No newline at end of file diff --git a/v1/chapter10/1-seleniumBasic.py b/v1/chapter10/1-seleniumBasic.py new file mode 100644 index 0000000..9a4cc08 --- /dev/null +++ b/v1/chapter10/1-seleniumBasic.py @@ -0,0 +1,10 @@ +from selenium import webdriver +import time + +#REPLACE WITH YOUR DRIVER PATH. EXAMPLES FOR CHROME AND PHANTOMJS +driver = webdriver.PhantomJS(executable_path='../phantomjs-2.1.1-macosx/bin/phantomjs') +#driver = webdriver.Chrome(executable_path='../chromedriver/chromedriver') +driver.get("http://pythonscraping.com/pages/javascript/ajaxDemo.html") +time.sleep(5) +print(driver.find_element_by_id("content").text) +driver.close() \ No newline at end of file diff --git a/v1/chapter10/2-waitForLoad.py b/v1/chapter10/2-waitForLoad.py new file mode 100644 index 0000000..80a83c0 --- /dev/null +++ b/v1/chapter10/2-waitForLoad.py @@ -0,0 +1,14 @@ +from selenium import webdriver +from selenium.webdriver.common.by import By +from selenium.webdriver.support.ui import WebDriverWait +from selenium.webdriver.support import expected_conditions as EC + +#REPLACE WITH YOUR DRIVER PATH. EXAMPLES FOR CHROME AND PHANTOMJS +driver = webdriver.PhantomJS(executable_path='../phantomjs-2.1.1-macosx/bin/phantomjs') +#driver = webdriver.Chrome(executable_path='../chromedriver/chromedriver') +driver.get("http://pythonscraping.com/pages/javascript/ajaxDemo.html") +try: + element = WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.ID, "loadedButton"))) +finally: + print(driver.find_element_by_id("content").text) + driver.close() \ No newline at end of file diff --git a/v1/chapter10/3-javascriptRedirect.py b/v1/chapter10/3-javascriptRedirect.py new file mode 100644 index 0000000..68f2ac6 --- /dev/null +++ b/v1/chapter10/3-javascriptRedirect.py @@ -0,0 +1,25 @@ +from selenium import webdriver +import time +from selenium.webdriver.remote.webelement import WebElement +from selenium.common.exceptions import StaleElementReferenceException + +def waitForLoad(driver): + elem = driver.find_element_by_tag_name("html") + count = 0 + while True: + count += 1 + if count > 20: + print("Timing out after 10 seconds and returning") + return + time.sleep(.5) + try: + elem == driver.find_element_by_tag_name("html") + except StaleElementReferenceException: + return + +#REPLACE WITH YOUR DRIVER PATH. EXAMPLES FOR CHROME AND PHANTOMJS +driver = webdriver.PhantomJS(executable_path='../phantomjs-2.1.1-macosx/bin/phantomjs') +#driver = webdriver.Chrome(executable_path='../chromedriver/chromedriver') +driver.get("http://pythonscraping.com/pages/javascript/redirectDemo1.html") +waitForLoad(driver) +print(driver.page_source) \ No newline at end of file diff --git a/v1/chapter11/1-basicImage.py b/v1/chapter11/1-basicImage.py new file mode 100644 index 0000000..bc66c1f --- /dev/null +++ b/v1/chapter11/1-basicImage.py @@ -0,0 +1,6 @@ +from PIL import Image, ImageFilter + +kitten = Image.open("kitten.jpg") +blurryKitten = kitten.filter(ImageFilter.GaussianBlur) +blurryKitten.save("kitten_blurred.jpg") +blurryKitten.show() \ No newline at end of file diff --git a/v1/chapter11/2-cleanImage.py b/v1/chapter11/2-cleanImage.py new file mode 100644 index 0000000..34f3ac5 --- /dev/null +++ b/v1/chapter11/2-cleanImage.py @@ -0,0 +1,19 @@ +from PIL import Image +import subprocess + +def cleanFile(filePath, newFilePath): + image = Image.open(filePath) + + #Set a threshold value for the image, and save + image = image.point(lambda x: 0 if x<143 else 255) + image.save(newFilePath) + + #call tesseract to do OCR on the newly created image + subprocess.call(["tesseract", newFilePath, "output"]) + + #Open and read the resulting data file + outputFile = open("output.txt", 'r') + print(outputFile.read()) + outputFile.close() + +cleanFile("text_2.png", "text_2_clean.png") \ No newline at end of file diff --git a/v1/chapter11/3-readWebImages.py b/v1/chapter11/3-readWebImages.py new file mode 100644 index 0000000..d1616a0 --- /dev/null +++ b/v1/chapter11/3-readWebImages.py @@ -0,0 +1,36 @@ +import time +from urllib.request import urlretrieve +import subprocess +from selenium import webdriver + +#driver = webdriver.PhantomJS(executable_path='/Users/ryan/Documents/pythonscraping/code/headless/phantomjs-1.9.8-macosx/bin/phantomjs') +driver = webdriver.Firefox() +driver.get("http://www.amazon.com/War-Peace-Leo-Nikolayevich-Tolstoy/dp/1427030200") +time.sleep(2) + +driver.find_element_by_id("img-canvas").click() +#The easiest way to get exactly one of every page +imageList = set() + +#Wait for the page to load +time.sleep(10) +print(driver.find_element_by_id("sitbReaderRightPageTurner").get_attribute("style")) +while "pointer" in driver.find_element_by_id("sitbReaderRightPageTurner").get_attribute("style"): + #While we can click on the right arrow, move through the pages + driver.find_element_by_id("sitbReaderRightPageTurner").click() + time.sleep(2) + #Get any new pages that have loaded (multiple pages can load at once) + pages = driver.find_elements_by_xpath("//div[@class='pageImage']/div/img") + for page in pages: + image = page.get_attribute("src") + imageList.add(image) + +driver.quit() + +#Start processing the images we've collected URLs for with Tesseract +for image in sorted(imageList): + urlretrieve(image, "page.jpg") + p = subprocess.Popen(["tesseract", "page.jpg", "page"], stdout=subprocess.PIPE,stderr=subprocess.PIPE) + p.wait() + f = open("page.txt", "r") + print(f.read()) diff --git a/v1/chapter11/4-solveCaptcha.py b/v1/chapter11/4-solveCaptcha.py new file mode 100644 index 0000000..71c80d5 --- /dev/null +++ b/v1/chapter11/4-solveCaptcha.py @@ -0,0 +1,48 @@ +from urllib.request import urlretrieve +from urllib.request import urlopen +from bs4 import BeautifulSoup +import subprocess +import requests +from PIL import Image +from PIL import ImageOps + +def cleanImage(imagePath): + image = Image.open(imagePath) + image = image.point(lambda x: 0 if x<143 else 255) + borderImage = ImageOps.expand(image,border=20,fill='white') + borderImage.save(imagePath) + +html = urlopen("http://www.pythonscraping.com/humans-only") +bsObj = BeautifulSoup(html, "html.parser") +#Gather prepopulated form values +imageLocation = bsObj.find("img", {"title": "Image CAPTCHA"})["src"] +formBuildId = bsObj.find("input", {"name":"form_build_id"})["value"] +captchaSid = bsObj.find("input", {"name":"captcha_sid"})["value"] +captchaToken = bsObj.find("input", {"name":"captcha_token"})["value"] + +captchaUrl = "http://pythonscraping.com"+imageLocation +urlretrieve(captchaUrl, "captcha.jpg") +cleanImage("captcha.jpg") +p = subprocess.Popen(["tesseract", "captcha.jpg", "captcha"], stdout= + subprocess.PIPE,stderr=subprocess.PIPE) +p.wait() +f = open("captcha.txt", "r") + +#Clean any whitespace characters +captchaResponse = f.read().replace(" ", "").replace("\n", "") +print("Captcha solution attempt: "+captchaResponse) + +if len(captchaResponse) == 5: + params = {"captcha_token":captchaToken, "captcha_sid":captchaSid, + "form_id":"comment_node_page_form", "form_build_id": formBuildId, + "captcha_response":captchaResponse, "name":"Ryan Mitchell", + "subject": "I come to seek the Grail", + "comment_body[und][0][value]": + "...and I am definitely not a bot"} + r = requests.post("http://www.pythonscraping.com/comment/reply/10", + data=params) + responseObj = BeautifulSoup(r.text) + if responseObj.find("div", {"class":"messages"}) is not None: + print(responseObj.find("div", {"class":"messages"}).get_text()) +else: + print("There was a problem reading the CAPTCHA correctly!") \ No newline at end of file diff --git a/v1/chapter12/1-headers.py b/v1/chapter12/1-headers.py new file mode 100644 index 0000000..d03cce0 --- /dev/null +++ b/v1/chapter12/1-headers.py @@ -0,0 +1,10 @@ +import requests +from bs4 import BeautifulSoup + +session = requests.Session() +headers = {"User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_5) AppleWebKit 537.36 (KHTML, like Gecko) Chrome","Accept":"text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8"} +url = "https://www.whatismybrowser.com/detect/what-http-headers-is-my-browser-sending" +req = session.get(url, headers=headers) + +bsObj = BeautifulSoup(req.text, "lxml") +print(bsObj.find("table",{"class":"table-striped"}).get_text) \ No newline at end of file diff --git a/v1/chapter12/2-seleniumCookies.py b/v1/chapter12/2-seleniumCookies.py new file mode 100644 index 0000000..0dfc84a --- /dev/null +++ b/v1/chapter12/2-seleniumCookies.py @@ -0,0 +1,18 @@ +from selenium import webdriver + +driver = webdriver.PhantomJS(executable_path='') +driver.get("http://pythonscraping.com") +driver.implicitly_wait(1) +print(driver.get_cookies()) + +savedCookies = driver.get_cookies() + +driver2 = webdriver.PhantomJS(executable_path='') +driver2.get("http://pythonscraping.com") +driver2.delete_all_cookies() +for cookie in savedCookies: + driver2.add_cookie(cookie) + +driver2.get("http://pythonscraping.com") +driver.implicitly_wait(1) +print(driver2.get_cookies()) \ No newline at end of file diff --git a/v1/chapter12/3-honeypotDetection.py b/v1/chapter12/3-honeypotDetection.py new file mode 100644 index 0000000..9887ff8 --- /dev/null +++ b/v1/chapter12/3-honeypotDetection.py @@ -0,0 +1,14 @@ +from selenium import webdriver +from selenium.webdriver.remote.webelement import WebElement + +driver = webdriver.PhantomJS(executable_path='') +driver.get("http://pythonscraping.com/pages/itsatrap.html") +links = driver.find_elements_by_tag_name("a") +for link in links: + if not link.is_displayed(): + print("The link "+link.get_attribute("href")+" is a trap") + +fields = driver.find_elements_by_tag_name("input") +for field in fields: + if not field.is_displayed(): + print("Do not change value of "+field.get_attribute("name")) \ No newline at end of file diff --git a/v1/chapter13/1-wikiUnitTest.py b/v1/chapter13/1-wikiUnitTest.py new file mode 100644 index 0000000..3c55704 --- /dev/null +++ b/v1/chapter13/1-wikiUnitTest.py @@ -0,0 +1,52 @@ +from urllib.request import urlopen +from urllib.parse import unquote +import random +import re +from bs4 import BeautifulSoup +import unittest + +class TestWikipedia(unittest.TestCase): + + bsObj = None + url = None + + + def test_PageProperties(self): + global bsObj + global url + + url = "http://en.wikipedia.org/wiki/Monty_Python" + #Test the first 100 pages we encounter + for i in range(1, 100): + bsObj = BeautifulSoup(urlopen(url), 'html.parser') + titles = self.titleMatchesURL() + self.assertEqual(titles[0], titles[1]) + self.assertTrue(self.contentExists()) + url = self.getNextLink() + print("Done!") + + def titleMatchesURL(self): + global bsObj + global url + pageTitle = bsObj.find("h1").get_text() + urlTitle = url[(url.index("/wiki/")+6):] + urlTitle = urlTitle.replace("_", " ") + urlTitle = unquote(urlTitle) + return [pageTitle.lower(), urlTitle.lower()] + + def contentExists(self): + global bsObj + content = bsObj.find("div",{"id":"mw-content-text"}) + if content is not None: + return True + return False + + def getNextLink(self): + global bsObj + links = bsObj.find("div", {"id":"bodyContent"}).findAll("a", href=re.compile("^(/wiki/)((?!:).)*$")) + link = links[random.randint(0, len(links)-1)].attrs['href'] + print("Next link is: "+link) + return "http://en.wikipedia.org"+link + +if __name__ == '__main__': + unittest.main() diff --git a/v1/chapter13/2-wikiSeleniumTest.py b/v1/chapter13/2-wikiSeleniumTest.py new file mode 100644 index 0000000..166537a --- /dev/null +++ b/v1/chapter13/2-wikiSeleniumTest.py @@ -0,0 +1,8 @@ +from selenium import webdriver + + +driver = webdriver.PhantomJS(executable_path='/Users/ryan/Documents/pythonscraping/code/headless/phantomjs-1.9.8-macosx/bin/phantomjs') +driver.get("http://en.wikipedia.org/wiki/Monty_Python") +assert "Monty Python" in driver.title +print("Monty Python was in the title") +driver.close() \ No newline at end of file diff --git a/v1/chapter13/3-interactiveTest.py b/v1/chapter13/3-interactiveTest.py new file mode 100644 index 0000000..f571530 --- /dev/null +++ b/v1/chapter13/3-interactiveTest.py @@ -0,0 +1,29 @@ +from selenium import webdriver +from selenium.webdriver.remote.webelement import WebElement +from selenium.webdriver.common.keys import Keys +from selenium.webdriver import ActionChains + + +#REPLACE WITH YOUR DRIVER PATH. EXAMPLES FOR CHROME AND PHANTOMJS +driver = webdriver.PhantomJS(executable_path='../phantomjs-2.1.1-macosx/bin/phantomjs') +#driver = webdriver.Chrome(executable_path='../chromedriver/chromedriver') +driver.get("http://pythonscraping.com/pages/files/form.html") + +firstnameField = driver.find_element_by_name("firstname") +lastnameField = driver.find_element_by_name("lastname") +submitButton = driver.find_element_by_id("submit") + +### METHOD 1 ### +firstnameField.send_keys("Ryan") +lastnameField.send_keys("Mitchell") +submitButton.click() +################ + +### METHOD 2 ### +actions = ActionChains(driver).click(firstnameField).send_keys("Ryan").click(lastnameField).send_keys("Mitchell").send_keys(Keys.RETURN) +actions.perform() +################ + +print(driver.find_element_by_tag_name("body").text) + +driver.close() \ No newline at end of file diff --git a/v1/chapter13/4-dragAndDrop.py b/v1/chapter13/4-dragAndDrop.py new file mode 100644 index 0000000..7eebbc2 --- /dev/null +++ b/v1/chapter13/4-dragAndDrop.py @@ -0,0 +1,20 @@ +from selenium import webdriver +from selenium.webdriver.remote.webelement import WebElement +from selenium.webdriver import ActionChains + +#REPLACE WITH YOUR DRIVER PATH. EXAMPLES FOR CHROME AND PHANTOMJS +driver = webdriver.PhantomJS(executable_path='../phantomjs-2.1.1-macosx/bin/phantomjs') +#driver = webdriver.Chrome(executable_path='../chromedriver/chromedriver') + +driver.get('http://pythonscraping.com/pages/javascript/draggableDemo.html') + +print(driver.find_element_by_id("message").text) + +element = driver.find_element_by_id("draggable") +target = driver.find_element_by_id("div2") +actions = ActionChains(driver) +actions.drag_and_drop(element, target).perform() + +print(driver.find_element_by_id("message").text) + +driver.close() \ No newline at end of file diff --git a/v1/chapter13/5-takeScreenshot.py b/v1/chapter13/5-takeScreenshot.py new file mode 100644 index 0000000..1956a07 --- /dev/null +++ b/v1/chapter13/5-takeScreenshot.py @@ -0,0 +1,13 @@ +from selenium import webdriver +from selenium.webdriver.remote.webelement import WebElement +from selenium.webdriver import ActionChains + + +#REPLACE WITH YOUR DRIVER PATH. EXAMPLES FOR CHROME AND PHANTOMJS +driver = webdriver.PhantomJS(executable_path='../phantomjs-2.1.1-macosx/bin/phantomjs') +#driver = webdriver.Chrome(executable_path='../chromedriver/chromedriver') + +driver.implicitly_wait(5) +driver.get('http://www.pythonscraping.com/') +driver.get_screenshot_as_file('tmp/pythonscraping.png') +driver.close() \ No newline at end of file diff --git a/v1/chapter13/6-combinedTest.py b/v1/chapter13/6-combinedTest.py new file mode 100644 index 0000000..77a2fc9 --- /dev/null +++ b/v1/chapter13/6-combinedTest.py @@ -0,0 +1,30 @@ +from selenium import webdriver +from selenium.webdriver.remote.webelement import WebElement +from selenium.webdriver import ActionChains +import unittest + +class TestAddition(unittest.TestCase): + driver = None + def setUp(self): + global driver + #REPLACE WITH YOUR DRIVER PATH. EXAMPLES FOR CHROME AND PHANTOMJS + driver = webdriver.PhantomJS(executable_path='../phantomjs-2.1.1-macosx/bin/phantomjs') + #driver = webdriver.Chrome(executable_path='../chromedriver/chromedriver') + url = 'http://pythonscraping.com/pages/javascript/draggableDemo.html' + driver.get(url) + + def tearDown(self): + driver.close() + print("Tearing down the test") + + def test_drag(self): + global driver + element = driver.find_element_by_id("draggable") + target = driver.find_element_by_id("div2") + actions = ActionChains(driver) + actions.drag_and_drop(element, target).perform() + + self.assertEqual("You are definitely not a bot!", driver.find_element_by_id("message").text) + +if __name__ == '__main__': + unittest.main() \ No newline at end of file diff --git a/v1/chapter14/1-socks.py b/v1/chapter14/1-socks.py new file mode 100644 index 0000000..4f3acfd --- /dev/null +++ b/v1/chapter14/1-socks.py @@ -0,0 +1,7 @@ +import socks +import socket +from urllib.request import urlopen + +socks.set_default_proxy(socks.SOCKS5, "127.0.0.1", 9150) +socket.socket = socks.socksocket +print(urlopen('http://icanhazip.com').read()) \ No newline at end of file diff --git a/v1/chapter14/2-seleniumSocks.py b/v1/chapter14/2-seleniumSocks.py new file mode 100644 index 0000000..a921567 --- /dev/null +++ b/v1/chapter14/2-seleniumSocks.py @@ -0,0 +1,7 @@ +from selenium import webdriver +service_args = [ '--proxy=localhost:9150', '--proxy-type=socks5', ] +driver = webdriver.PhantomJS(executable_path='', service_args=service_args) + +driver.get("http://icanhazip.com") +print(driver.page_source) +driver.close() \ No newline at end of file diff --git a/v1/chapter2/1-selectByClass.py b/v1/chapter2/1-selectByClass.py new file mode 100644 index 0000000..f85df32 --- /dev/null +++ b/v1/chapter2/1-selectByClass.py @@ -0,0 +1,8 @@ +from urllib.request import urlopen +from bs4 import BeautifulSoup + +html = urlopen("http://www.pythonscraping.com/pages/warandpeace.html") +bsObj = BeautifulSoup(html, "html.parser") +nameList = bsObj.findAll("span", {"class":"green"}) +for name in nameList: + print(name.get_text()) \ No newline at end of file diff --git a/v1/chapter2/2-selectByAttribute.py b/v1/chapter2/2-selectByAttribute.py new file mode 100644 index 0000000..262f77c --- /dev/null +++ b/v1/chapter2/2-selectByAttribute.py @@ -0,0 +1,7 @@ +from urllib.request import urlopen +from bs4 import BeautifulSoup + +html = urlopen("http://www.pythonscraping.com/pages/warandpeace.html") +bsObj = BeautifulSoup(html, "html.parser") +allText = bsObj.findAll(id="text") +print(allText[0].get_text()) \ No newline at end of file diff --git a/v1/chapter2/3-findDescendants.py b/v1/chapter2/3-findDescendants.py new file mode 100644 index 0000000..8d7e919 --- /dev/null +++ b/v1/chapter2/3-findDescendants.py @@ -0,0 +1,8 @@ +from urllib.request import urlopen +from bs4 import BeautifulSoup + +html = urlopen("http://www.pythonscraping.com/pages/page3.html") +bsObj = BeautifulSoup(html, "html.parser") + +for child in bsObj.find("table",{"id":"giftList"}).children: + print(child) \ No newline at end of file diff --git a/v1/chapter2/4-findSiblings.py b/v1/chapter2/4-findSiblings.py new file mode 100644 index 0000000..6a57959 --- /dev/null +++ b/v1/chapter2/4-findSiblings.py @@ -0,0 +1,7 @@ +from urllib.request import urlopen +from bs4 import BeautifulSoup +html = urlopen("http://www.pythonscraping.com/pages/page3.html") +bsObj = BeautifulSoup(html, "html.parser") + +for sibling in bsObj.find("table",{"id":"giftList"}).tr.next_siblings: + print(sibling) \ No newline at end of file diff --git a/v1/chapter2/5-findParents.py b/v1/chapter2/5-findParents.py new file mode 100644 index 0000000..50ec5ee --- /dev/null +++ b/v1/chapter2/5-findParents.py @@ -0,0 +1,6 @@ +from urllib.request import urlopen +from bs4 import BeautifulSoup + +html = urlopen("http://www.pythonscraping.com/pages/page3.html") +bsObj = BeautifulSoup(html, "html.parser") +print(bsObj.find("img",{"src":"../img/gifts/img1.jpg"}).parent.previous_sibling.get_text()) diff --git a/v1/chapter2/6-regularExpressions.py b/v1/chapter2/6-regularExpressions.py new file mode 100644 index 0000000..9c34cc1 --- /dev/null +++ b/v1/chapter2/6-regularExpressions.py @@ -0,0 +1,9 @@ +from urllib.request import urlopen +from bs4 import BeautifulSoup +import re + +html = urlopen("http://www.pythonscraping.com/pages/page3.html") +bsObj = BeautifulSoup(html, "html.parser") +images = bsObj.findAll("img", {"src":re.compile("\.\.\/img\/gifts/img.*\.jpg")}) +for image in images: + print(image["src"]) diff --git a/v1/chapter2/7-lambdaExpressions.py b/v1/chapter2/7-lambdaExpressions.py new file mode 100644 index 0000000..2c04ee3 --- /dev/null +++ b/v1/chapter2/7-lambdaExpressions.py @@ -0,0 +1,7 @@ +from urllib.request import urlopen +from bs4 import BeautifulSoup +html = urlopen("http://www.pythonscraping.com/pages/page2.html") +bsObj = BeautifulSoup(html, "html.parser") +tags = bsObj.findAll(lambda tag: len(tag.attrs) == 2) +for tag in tags: + print(tag) \ No newline at end of file diff --git a/v1/chapter3/1-getWikiLinks.py b/v1/chapter3/1-getWikiLinks.py new file mode 100644 index 0000000..3f53390 --- /dev/null +++ b/v1/chapter3/1-getWikiLinks.py @@ -0,0 +1,16 @@ +from urllib.request import urlopen +from bs4 import BeautifulSoup +import datetime +import random +import re + +random.seed(datetime.datetime.now()) +def getLinks(articleUrl): + html = urlopen("http://en.wikipedia.org"+articleUrl) + bsObj = BeautifulSoup(html, "html.parser") + return bsObj.find("div", {"id":"bodyContent"}).findAll("a", href=re.compile("^(/wiki/)((?!:).)*$")) +links = getLinks("/wiki/Kevin_Bacon") +while len(links) > 0: + newArticle = links[random.randint(0, len(links)-1)].attrs["href"] + print(newArticle) + links = getLinks(newArticle) \ No newline at end of file diff --git a/v1/chapter3/2-crawlWikipedia.py b/v1/chapter3/2-crawlWikipedia.py new file mode 100644 index 0000000..ff2ee49 --- /dev/null +++ b/v1/chapter3/2-crawlWikipedia.py @@ -0,0 +1,25 @@ +from urllib.request import urlopen +from bs4 import BeautifulSoup +import re + +pages = set() +def getLinks(pageUrl): + global pages + html = urlopen("http://en.wikipedia.org"+pageUrl) + bsObj = BeautifulSoup(html, "html.parser") + try: + print(bsObj.h1.get_text()) + print(bsObj.find(id ="mw-content-text").findAll("p")[0]) + print(bsObj.find(id="ca-edit").find("span").find("a").attrs['href']) + except AttributeError: + print("This page is missing something! No worries though!") + + for link in bsObj.findAll("a", href=re.compile("^(/wiki/)")): + if 'href' in link.attrs: + if link.attrs['href'] not in pages: + #We have encountered a new page + newPage = link.attrs['href'] + print("----------------\n"+newPage) + pages.add(newPage) + getLinks(newPage) +getLinks("") \ No newline at end of file diff --git a/v1/chapter3/3-crawlSite.py b/v1/chapter3/3-crawlSite.py new file mode 100644 index 0000000..62507d7 --- /dev/null +++ b/v1/chapter3/3-crawlSite.py @@ -0,0 +1,51 @@ +from urllib.request import urlopen +from bs4 import BeautifulSoup +import re +import datetime +import random + +pages = set() +random.seed(datetime.datetime.now()) + +#Retrieves a list of all Internal links found on a page +def getInternalLinks(bsObj, includeUrl): + internalLinks = [] + #Finds all links that begin with a "/" + for link in bsObj.findAll("a", href=re.compile("^(/|.*"+includeUrl+")")): + if link.attrs['href'] is not None: + if link.attrs['href'] not in internalLinks: + internalLinks.append(link.attrs['href']) + return internalLinks + +#Retrieves a list of all external links found on a page +def getExternalLinks(bsObj, excludeUrl): + externalLinks = [] + #Finds all links that start with "http" or "www" that do + #not contain the current URL + for link in bsObj.findAll("a", href=re.compile("^(http|www)((?!"+excludeUrl+").)*$")): + if link.attrs['href'] is not None: + if link.attrs['href'] not in externalLinks: + externalLinks.append(link.attrs['href']) + return externalLinks + +def splitAddress(address): + addressParts = address.replace("http://", "").split("/") + return addressParts + +def getRandomExternalLink(startingPage): + html = urlopen(startingPage) + bsObj = BeautifulSoup(html, "html.parser") + externalLinks = getExternalLinks(bsObj, splitAddress(startingPage)[0]) + if len(externalLinks) == 0: + internalLinks = getInternalLinks(startingPage) + return getRandomExternalLink(internalLinks[random.randint(0, + len(internalLinks)-1)]) + else: + return externalLinks[random.randint(0, len(externalLinks)-1)] + +def followExternalOnly(startingSite): + externalLink = getRandomExternalLink("http://oreilly.com") + print("Random external link is: "+externalLink) + followExternalOnly(externalLink) + +followExternalOnly("http://oreilly.com") diff --git a/v1/chapter3/4-getExternalLinks.py b/v1/chapter3/4-getExternalLinks.py new file mode 100644 index 0000000..d78e9d0 --- /dev/null +++ b/v1/chapter3/4-getExternalLinks.py @@ -0,0 +1,56 @@ +from urllib.request import urlopen +from urllib.parse import urlparse +from bs4 import BeautifulSoup +import re +import datetime +import random + +pages = set() +random.seed(datetime.datetime.now()) + +#Retrieves a list of all Internal links found on a page +def getInternalLinks(bsObj, includeUrl): + includeUrl = urlparse(includeUrl).scheme+"://"+urlparse(includeUrl).netloc + internalLinks = [] + #Finds all links that begin with a "/" + for link in bsObj.findAll("a", href=re.compile("^(/|.*"+includeUrl+")")): + if link.attrs['href'] is not None: + if link.attrs['href'] not in internalLinks: + if(link.attrs['href'].startswith("/")): + internalLinks.append(includeUrl+link.attrs['href']) + else: + internalLinks.append(link.attrs['href']) + return internalLinks + +#Retrieves a list of all external links found on a page +def getExternalLinks(bsObj, excludeUrl): + externalLinks = [] + #Finds all links that start with "http" or "www" that do + #not contain the current URL + for link in bsObj.findAll("a", href=re.compile( + "^(http|www)((?!"+excludeUrl+").)*$")): + if link.attrs['href'] is not None: + if link.attrs['href'] not in externalLinks: + externalLinks.append(link.attrs['href']) + return externalLinks + +def getRandomExternalLink(startingPage): + html = urlopen(startingPage) + bsObj = BeautifulSoup(html, "html.parser") + externalLinks = getExternalLinks(bsObj, urlparse(startingPage).netloc) + if len(externalLinks) == 0: + print("No external links, looking around the site for one") + domain = urlparse(startingPage).scheme+"://"+urlparse(startingPage).netloc + internalLinks = getInternalLinks(bsObj, domain) + return getRandomExternalLink(internalLinks[random.randint(0,len(internalLinks)-1)]) + else: + return externalLinks[random.randint(0, len(externalLinks)-1)] + +def followExternalOnly(startingSite): + externalLink = getRandomExternalLink(startingSite) + print("Random external link is: "+externalLink) + followExternalOnly(externalLink) + +followExternalOnly("http://oreilly.com") + + diff --git a/v1/chapter3/5-getAllExternalLinks.py b/v1/chapter3/5-getAllExternalLinks.py new file mode 100644 index 0000000..a3785a8 --- /dev/null +++ b/v1/chapter3/5-getAllExternalLinks.py @@ -0,0 +1,76 @@ +from urllib.request import urlopen +from urllib.parse import urlparse +from bs4 import BeautifulSoup +import re +import datetime +import random + +pages = set() +random.seed(datetime.datetime.now()) + +#Retrieves a list of all Internal links found on a page +def getInternalLinks(bsObj, includeUrl): + includeUrl = urlparse(includeUrl).scheme+"://"+urlparse(includeUrl).netloc + internalLinks = [] + #Finds all links that begin with a "/" + for link in bsObj.findAll("a", href=re.compile("^(/|.*"+includeUrl+")")): + if link.attrs['href'] is not None: + if link.attrs['href'] not in internalLinks: + if(link.attrs['href'].startswith("/")): + internalLinks.append(includeUrl+link.attrs['href']) + else: + internalLinks.append(link.attrs['href']) + return internalLinks + +#Retrieves a list of all external links found on a page +def getExternalLinks(bsObj, excludeUrl): + externalLinks = [] + #Finds all links that start with "http" or "www" that do + #not contain the current URL + for link in bsObj.findAll("a", href=re.compile("^(http|www)((?!"+excludeUrl+").)*$")): + if link.attrs['href'] is not None: + if link.attrs['href'] not in externalLinks: + externalLinks.append(link.attrs['href']) + return externalLinks + + +def getRandomExternalLink(startingPage): + html = urlopen(startingPage) + bsObj = BeautifulSoup(html, "html.parser") + externalLinks = getExternalLinks(bsObj, urlparse(startingPage).netloc) + if len(externalLinks) == 0: + print("No external links, looking around the site for one") + domain = urlparse(startingPage).scheme+"://"+urlparse(startingPage).netloc + internalLinks = getInternalLinks(bsObj, domain) + return getRandomExternalLink(internalLinks[random.randint(0,len(internalLinks)-1)]) + else: + return externalLinks[random.randint(0, len(externalLinks)-1)] + +def followExternalOnly(startingSite): + externalLink = getRandomExternalLink(startingSite) + print("Random external link is: "+externalLink) + followExternalOnly(externalLink) + +#Collects a list of all external URLs found on the site +allExtLinks = set() +allIntLinks = set() +def getAllExternalLinks(siteUrl): + html = urlopen(siteUrl) + domain = urlparse(siteUrl).scheme+"://"+urlparse(siteUrl).netloc + bsObj = BeautifulSoup(html, "html.parser") + internalLinks = getInternalLinks(bsObj,domain) + externalLinks = getExternalLinks(bsObj,domain) + + for link in externalLinks: + if link not in allExtLinks: + allExtLinks.add(link) + print(link) + for link in internalLinks: + if link not in allIntLinks: + allIntLinks.add(link) + getAllExternalLinks(link) + +followExternalOnly("http://oreilly.com") + +allIntLinks.add("http://oreilly.com") +getAllExternalLinks("http://oreilly.com") diff --git a/v1/chapter3/scrapy/wikiSpider/scrapy.cfg b/v1/chapter3/scrapy/wikiSpider/scrapy.cfg new file mode 100644 index 0000000..75d6f89 --- /dev/null +++ b/v1/chapter3/scrapy/wikiSpider/scrapy.cfg @@ -0,0 +1,11 @@ +# Automatically created by: scrapy startproject +# +# For more information about the [deploy] section see: +# https://scrapyd.readthedocs.org/en/latest/deploy.html + +[settings] +default = wikiSpider.settings + +[deploy] +#url = http://localhost:6800/ +project = wikiSpider diff --git a/v1/chapter3/scrapy/wikiSpider/wikiSpider/__init__.py b/v1/chapter3/scrapy/wikiSpider/wikiSpider/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/v1/chapter3/scrapy/wikiSpider/wikiSpider/items.py b/v1/chapter3/scrapy/wikiSpider/wikiSpider/items.py new file mode 100644 index 0000000..7e724b1 --- /dev/null +++ b/v1/chapter3/scrapy/wikiSpider/wikiSpider/items.py @@ -0,0 +1,14 @@ +# -*- coding: utf-8 -*- + +# Define here the models for your scraped items +# +# See documentation in: +# http://doc.scrapy.org/en/latest/topics/items.html + +import scrapy + + +class Article(scrapy.Item): + # define the fields for your item here like: + # name = scrapy.Field() + title = scrapy.Field() diff --git a/v1/chapter3/scrapy/wikiSpider/wikiSpider/middlewares.py b/v1/chapter3/scrapy/wikiSpider/wikiSpider/middlewares.py new file mode 100644 index 0000000..7604e85 --- /dev/null +++ b/v1/chapter3/scrapy/wikiSpider/wikiSpider/middlewares.py @@ -0,0 +1,56 @@ +# -*- coding: utf-8 -*- + +# Define here the models for your spider middleware +# +# See documentation in: +# http://doc.scrapy.org/en/latest/topics/spider-middleware.html + +from scrapy import signals + + +class WikispiderSpiderMiddleware(object): + # Not all methods need to be defined. If a method is not defined, + # scrapy acts as if the spider middleware does not modify the + # passed objects. + + @classmethod + def from_crawler(cls, crawler): + # This method is used by Scrapy to create your spiders. + s = cls() + crawler.signals.connect(s.spider_opened, signal=signals.spider_opened) + return s + + def process_spider_input(self, response, spider): + # Called for each response that goes through the spider + # middleware and into the spider. + + # Should return None or raise an exception. + return None + + def process_spider_output(self, response, result, spider): + # Called with the results returned from the Spider, after + # it has processed the response. + + # Must return an iterable of Request, dict or Item objects. + for i in result: + yield i + + def process_spider_exception(self, response, exception, spider): + # Called when a spider or process_spider_input() method + # (from other spider middleware) raises an exception. + + # Should return either None or an iterable of Response, dict + # or Item objects. + pass + + def process_start_requests(self, start_requests, spider): + # Called with the start requests of the spider, and works + # similarly to the process_spider_output() method, except + # that it doesn’t have a response associated. + + # Must return only requests (not items). + for r in start_requests: + yield r + + def spider_opened(self, spider): + spider.logger.info('Spider opened: %s' % spider.name) diff --git a/v1/chapter3/scrapy/wikiSpider/wikiSpider/pipelines.py b/v1/chapter3/scrapy/wikiSpider/wikiSpider/pipelines.py new file mode 100644 index 0000000..8ec6c0e --- /dev/null +++ b/v1/chapter3/scrapy/wikiSpider/wikiSpider/pipelines.py @@ -0,0 +1,11 @@ +# -*- coding: utf-8 -*- + +# Define your item pipelines here +# +# Don't forget to add your pipeline to the ITEM_PIPELINES setting +# See: http://doc.scrapy.org/en/latest/topics/item-pipeline.html + + +class WikispiderPipeline(object): + def process_item(self, item, spider): + return item diff --git a/v1/chapter3/scrapy/wikiSpider/wikiSpider/settings.py b/v1/chapter3/scrapy/wikiSpider/wikiSpider/settings.py new file mode 100644 index 0000000..c57b4c8 --- /dev/null +++ b/v1/chapter3/scrapy/wikiSpider/wikiSpider/settings.py @@ -0,0 +1,90 @@ +# -*- coding: utf-8 -*- + +# Scrapy settings for wikiSpider project +# +# For simplicity, this file contains only settings considered important or +# commonly used. You can find more settings consulting the documentation: +# +# http://doc.scrapy.org/en/latest/topics/settings.html +# http://scrapy.readthedocs.org/en/latest/topics/downloader-middleware.html +# http://scrapy.readthedocs.org/en/latest/topics/spider-middleware.html + +BOT_NAME = 'wikiSpider' + +SPIDER_MODULES = ['wikiSpider.spiders'] +NEWSPIDER_MODULE = 'wikiSpider.spiders' + + +# Crawl responsibly by identifying yourself (and your website) on the user-agent +#USER_AGENT = 'wikiSpider (+http://www.yourdomain.com)' + +# Obey robots.txt rules +ROBOTSTXT_OBEY = True + +# Configure maximum concurrent requests performed by Scrapy (default: 16) +#CONCURRENT_REQUESTS = 32 + +# Configure a delay for requests for the same website (default: 0) +# See http://scrapy.readthedocs.org/en/latest/topics/settings.html#download-delay +# See also autothrottle settings and docs +#DOWNLOAD_DELAY = 3 +# The download delay setting will honor only one of: +#CONCURRENT_REQUESTS_PER_DOMAIN = 16 +#CONCURRENT_REQUESTS_PER_IP = 16 + +# Disable cookies (enabled by default) +#COOKIES_ENABLED = False + +# Disable Telnet Console (enabled by default) +#TELNETCONSOLE_ENABLED = False + +# Override the default request headers: +#DEFAULT_REQUEST_HEADERS = { +# 'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8', +# 'Accept-Language': 'en', +#} + +# Enable or disable spider middlewares +# See http://scrapy.readthedocs.org/en/latest/topics/spider-middleware.html +#SPIDER_MIDDLEWARES = { +# 'wikiSpider.middlewares.WikispiderSpiderMiddleware': 543, +#} + +# Enable or disable downloader middlewares +# See http://scrapy.readthedocs.org/en/latest/topics/downloader-middleware.html +#DOWNLOADER_MIDDLEWARES = { +# 'wikiSpider.middlewares.MyCustomDownloaderMiddleware': 543, +#} + +# Enable or disable extensions +# See http://scrapy.readthedocs.org/en/latest/topics/extensions.html +#EXTENSIONS = { +# 'scrapy.extensions.telnet.TelnetConsole': None, +#} + +# Configure item pipelines +# See http://scrapy.readthedocs.org/en/latest/topics/item-pipeline.html +#ITEM_PIPELINES = { +# 'wikiSpider.pipelines.WikispiderPipeline': 300, +#} + +# Enable and configure the AutoThrottle extension (disabled by default) +# See http://doc.scrapy.org/en/latest/topics/autothrottle.html +#AUTOTHROTTLE_ENABLED = True +# The initial download delay +#AUTOTHROTTLE_START_DELAY = 5 +# The maximum download delay to be set in case of high latencies +#AUTOTHROTTLE_MAX_DELAY = 60 +# The average number of requests Scrapy should be sending in parallel to +# each remote server +#AUTOTHROTTLE_TARGET_CONCURRENCY = 1.0 +# Enable showing throttling stats for every response received: +#AUTOTHROTTLE_DEBUG = False + +# Enable and configure HTTP caching (disabled by default) +# See http://scrapy.readthedocs.org/en/latest/topics/downloader-middleware.html#httpcache-middleware-settings +#HTTPCACHE_ENABLED = True +#HTTPCACHE_EXPIRATION_SECS = 0 +#HTTPCACHE_DIR = 'httpcache' +#HTTPCACHE_IGNORE_HTTP_CODES = [] +#HTTPCACHE_STORAGE = 'scrapy.extensions.httpcache.FilesystemCacheStorage' diff --git a/v1/chapter3/scrapy/wikiSpider/wikiSpider/spiders/__init__.py b/v1/chapter3/scrapy/wikiSpider/wikiSpider/spiders/__init__.py new file mode 100644 index 0000000..ebd689a --- /dev/null +++ b/v1/chapter3/scrapy/wikiSpider/wikiSpider/spiders/__init__.py @@ -0,0 +1,4 @@ +# This package will contain the spiders of your Scrapy project +# +# Please refer to the documentation for information on how to create and manage +# your spiders. diff --git a/v1/chapter3/scrapy/wikiSpider/wikiSpider/spiders/articleSpider.py b/v1/chapter3/scrapy/wikiSpider/wikiSpider/spiders/articleSpider.py new file mode 100644 index 0000000..f285b15 --- /dev/null +++ b/v1/chapter3/scrapy/wikiSpider/wikiSpider/spiders/articleSpider.py @@ -0,0 +1,18 @@ +from scrapy.spiders import CrawlSpider, Rule +from wikiSpider.items import Article +from scrapy.linkextractors import LinkExtractor + +class ArticleSpider(CrawlSpider): + name = "article" + allowed_domains = ["en.wikipedia.org"] + start_urls = ["http://en.wikipedia.org/wiki/Python_%28programming_language%29"] + rules = [ + Rule(LinkExtractor(allow=('(/wiki/)((?!:).)*$'),), callback="parse_item", follow=True) + ] + + def parse_item(self, response): + item = Article() + title = response.xpath('//h1/text()')[0].extract() + print("Title is: "+title) + item['title'] = title + return item diff --git a/v1/chapter4/1-searchTwitter.py b/v1/chapter4/1-searchTwitter.py new file mode 100644 index 0000000..8a1ca66 --- /dev/null +++ b/v1/chapter4/1-searchTwitter.py @@ -0,0 +1,6 @@ +from twitter import Twitter, OAuth + +#Make sure to add the access tokens and consumer keys for your application +t = Twitter(auth=OAuth("Access Token","Access Token Secret","Consumer Key","Consumer Secret")) +pythonTweets = t.search.tweets(q = "#python") +print(pythonTweets) \ No newline at end of file diff --git a/v1/chapter4/2-updateTwitter.py b/v1/chapter4/2-updateTwitter.py new file mode 100644 index 0000000..86cd8f1 --- /dev/null +++ b/v1/chapter4/2-updateTwitter.py @@ -0,0 +1,6 @@ +from twitter import Twitter, OAuth + +#Make sure to add the access tokens and consumer keys for your application +t = Twitter(auth=OAuth("Access Token","Access Token Secret","Consumer Key","Consumer Secret")) +statusUpdate = t.statuses.update(status='Hello, world!') +print(statusUpdate) \ No newline at end of file diff --git a/v1/chapter4/3-getTwitterStatus.py b/v1/chapter4/3-getTwitterStatus.py new file mode 100644 index 0000000..998dc2d --- /dev/null +++ b/v1/chapter4/3-getTwitterStatus.py @@ -0,0 +1,6 @@ +from twitter import Twitter, OAuth + +#Make sure to add the access tokens and consumer keys for your application +t = Twitter(auth=OAuth("Access Token","Access Token Secret","Consumer Key","Consumer Secret")) +pythonStatuses = t.statuses.user_timeline(screen_name="montypython", count=5) +print(pythonStatuses) diff --git a/v1/chapter4/4-decodeJson.py b/v1/chapter4/4-decodeJson.py new file mode 100644 index 0000000..04a8664 --- /dev/null +++ b/v1/chapter4/4-decodeJson.py @@ -0,0 +1,9 @@ +import json +from urllib.request import urlopen + +def getCountry(ipAddress): + response = urlopen("http://freegeoip.net/json/"+ipAddress).read().decode('utf-8') + responseJson = json.loads(response) + return responseJson.get("country_code") + +print(getCountry("50.78.253.58")) \ No newline at end of file diff --git a/v1/chapter4/5-jsonParsing.py b/v1/chapter4/5-jsonParsing.py new file mode 100644 index 0000000..1a279e5 --- /dev/null +++ b/v1/chapter4/5-jsonParsing.py @@ -0,0 +1,9 @@ +import json + +jsonString = '{"arrayOfNums":[{"number":0},{"number":1},{"number":2}],"arrayOfFruits":[{"fruit":"apple"},{"fruit":"banana"},{"fruit":"pear"}]}' +jsonObj = json.loads(jsonString) + +print(jsonObj.get("arrayOfNums")) +print(jsonObj.get("arrayOfNums")[1]) +print(jsonObj.get("arrayOfNums")[1].get("number")+jsonObj.get("arrayOfNums")[2].get("number")) +print(jsonObj.get("arrayOfFruits")[2].get("fruit")) \ No newline at end of file diff --git a/v1/chapter4/6-wikiHistories.py b/v1/chapter4/6-wikiHistories.py new file mode 100644 index 0000000..38b1d15 --- /dev/null +++ b/v1/chapter4/6-wikiHistories.py @@ -0,0 +1,53 @@ +from urllib.request import urlopen +from urllib.request import HTTPError +from bs4 import BeautifulSoup +import datetime +import json +import random +import re + +random.seed(datetime.datetime.now()) +def getLinks(articleUrl): + html = urlopen("http://en.wikipedia.org"+articleUrl) + bsObj = BeautifulSoup(html, "html.parser") + return bsObj.find("div", {"id":"bodyContent"}).findAll("a", href=re.compile("^(/wiki/)((?!:).)*$")) + +def getHistoryIPs(pageUrl): + #Format of revision history pages is: + #http://en.wikipedia.org/w/index.php?title=Title_in_URL&action=history + pageUrl = pageUrl.replace("/wiki/", "") + historyUrl = "http://en.wikipedia.org/w/index.php?title="+pageUrl+"&action=history" + print("history url is: "+historyUrl) + html = urlopen(historyUrl) + bsObj = BeautifulSoup(html, "html.parser") + #finds only the links with class "mw-anonuserlink" which has IP addresses + #instead of usernames + ipAddresses = bsObj.findAll("a", {"class":"mw-anonuserlink"}) + addressList = set() + for ipAddress in ipAddresses: + addressList.add(ipAddress.get_text()) + return addressList + + +def getCountry(ipAddress): + try: + response = urlopen("http://freegeoip.net/json/"+ipAddress).read().decode('utf-8') + except HTTPError: + return None + responseJson = json.loads(response) + return responseJson["region_name"] + +links = getLinks("/wiki/Python_(programming_language)") + + +while(len(links) > 0): + for link in links: + print("-------------------") + historyIPs = getHistoryIPs(link.attrs["href"]) + for historyIP in historyIPs: + country = getCountry(historyIP) + if country is not None: + print(historyIP+" is from "+country) + + newLink = links[random.randint(0, len(links)-1)].attrs["href"] + links = getLinks(newLink) diff --git a/v1/chapter5/1-getPageMedia.py b/v1/chapter5/1-getPageMedia.py new file mode 100644 index 0000000..be15153 --- /dev/null +++ b/v1/chapter5/1-getPageMedia.py @@ -0,0 +1,42 @@ +import os +from urllib.request import urlretrieve +from urllib.request import urlopen +from bs4 import BeautifulSoup + +downloadDirectory = "downloaded" +baseUrl = "http://pythonscraping.com" + +def getAbsoluteURL(baseUrl, source): + if source.startswith("http://www."): + url = "http://"+source[11:] + elif source.startswith("http://"): + url = source + elif source.startswith("www."): + url = source[4:] + url = "http://"+source + else: + url = baseUrl+"/"+source + if baseUrl not in url or ".js" in url: + return None + return url + +def getDownloadPath(baseUrl, absoluteUrl, downloadDirectory): + path = absoluteUrl.replace("www.", "") + path = path.replace(baseUrl, "") + path = downloadDirectory+path + directory = os.path.dirname(path) + + if not os.path.exists(directory): + os.makedirs(directory) + + return path + +html = urlopen("http://www.pythonscraping.com") +bsObj = BeautifulSoup(html, "html.parser") +downloadList = bsObj.findAll(src=True) + +for download in downloadList: + fileUrl = getAbsoluteURL(baseUrl, download["src"]) + if fileUrl is not None: + print(fileUrl) + urlretrieve(fileUrl, getDownloadPath(baseUrl, fileUrl, downloadDirectory)) \ No newline at end of file diff --git a/v1/chapter5/2-createCsv.py b/v1/chapter5/2-createCsv.py new file mode 100644 index 0000000..17c4419 --- /dev/null +++ b/v1/chapter5/2-createCsv.py @@ -0,0 +1,11 @@ +import csv +#from os import open + +csvFile = open("../files/test.csv", 'w+', newline='') +try: + writer = csv.writer(csvFile) + writer.writerow(('number', 'number plus 2', 'number times 2')) + for i in range(10): + writer.writerow( (i, i+2, i*2)) +finally: + csvFile.close() diff --git a/v1/chapter5/3-scrapeCsv.py b/v1/chapter5/3-scrapeCsv.py new file mode 100644 index 0000000..607dbf4 --- /dev/null +++ b/v1/chapter5/3-scrapeCsv.py @@ -0,0 +1,20 @@ +import csv +from urllib.request import urlopen +from bs4 import BeautifulSoup + +html = urlopen("http://en.wikipedia.org/wiki/Comparison_of_text_editors") +bsObj = BeautifulSoup(html, "html.parser") +#The main comparison table is currently the first table on the page +table = bsObj.findAll("table",{"class":"wikitable"})[0] +rows = table.findAll("tr") + +csvFile = open("../files/editors.csv", 'wt', newline='', encoding='utf-8') +writer = csv.writer(csvFile) +try: + for row in rows: + csvRow = [] + for cell in row.findAll(['td', 'th']): + csvRow.append(cell.get_text()) + writer.writerow(csvRow) +finally: + csvFile.close() diff --git a/v1/chapter5/4-mysqlBasicExample.py b/v1/chapter5/4-mysqlBasicExample.py new file mode 100644 index 0000000..a2d73bf --- /dev/null +++ b/v1/chapter5/4-mysqlBasicExample.py @@ -0,0 +1,8 @@ +import pymysql +conn = pymysql.connect(host='127.0.0.1', port=3306, user='root', password=None, db='mysql') +cur = conn.cursor() +cur.execute("USE scraping") +cur.execute("SELECT * FROM pages WHERE id=1") +print(cur.fetchone()) +cur.close() +conn.close() \ No newline at end of file diff --git a/v1/chapter5/5-storeWikiLinks.py b/v1/chapter5/5-storeWikiLinks.py new file mode 100644 index 0000000..e130624 --- /dev/null +++ b/v1/chapter5/5-storeWikiLinks.py @@ -0,0 +1,34 @@ +from urllib.request import urlopen +from bs4 import BeautifulSoup +import re +import datetime +import random +import pymysql + +conn = pymysql.connect(host='127.0.0.1', port=3306, user='root', password=None, db='mysql', charset='utf8') +cur = conn.cursor() +cur.execute("USE scraping") + +random.seed(datetime.datetime.now()) + +def store(title, content): + cur.execute("INSERT INTO pages (title, content) VALUES (\"%s\",\"%s\")", (title, content)) + cur.connection.commit() + +def getLinks(articleUrl): + html = urlopen("http://en.wikipedia.org"+articleUrl) + bsObj = BeautifulSoup(html, "html.parser") + title = bsObj.find("h1").get_text() + content = bsObj.find("div", {"id":"mw-content-text"}).find("p").get_text() + store(title, content) + return bsObj.find("div", {"id":"bodyContent"}).findAll("a", href=re.compile("^(/wiki/)((?!:).)*$")) + +links = getLinks("/wiki/Kevin_Bacon") +try: + while len(links) > 0: + newArticle = links[random.randint(0, len(links)-1)].attrs["href"] + print(newArticle) + links = getLinks(newArticle) +finally: + cur.close() + conn.close() diff --git a/v1/chapter5/6-6DegreesCrawlWiki.py b/v1/chapter5/6-6DegreesCrawlWiki.py new file mode 100644 index 0000000..73efcd6 --- /dev/null +++ b/v1/chapter5/6-6DegreesCrawlWiki.py @@ -0,0 +1,54 @@ +from bs4 import BeautifulSoup +import re +import pymysql +from urllib.request import urlopen + +conn = pymysql.connect(host='127.0.0.1', port=3306, user='root', password=None, db='mysql', charset='utf8') +cur = conn.cursor() +cur.execute("USE wikipedia") + +def pageScraped(url): + cur.execute("SELECT * FROM pages WHERE url = %s", (url)) + if cur.rowcount == 0: + return False + page = cur.fetchone() + + cur.execute("SELECT * FROM links WHERE fromPageId = %s", (int(page[0]))) + if cur.rowcount == 0: + return False + return True + +def insertPageIfNotExists(url): + cur.execute("SELECT * FROM pages WHERE url = %s", (url)) + if cur.rowcount == 0: + cur.execute("INSERT INTO pages (url) VALUES (%s)", (url)) + conn.commit() + return cur.lastrowid + else: + return cur.fetchone()[0] + +def insertLink(fromPageId, toPageId): + cur.execute("SELECT * FROM links WHERE fromPageId = %s AND toPageId = %s", (int(fromPageId), int(toPageId))) + if cur.rowcount == 0: + cur.execute("INSERT INTO links (fromPageId, toPageId) VALUES (%s, %s)", (int(fromPageId), int(toPageId))) + conn.commit() + +def getLinks(pageUrl, recursionLevel): + global pages + if recursionLevel > 4: + return + pageId = insertPageIfNotExists(pageUrl) + html = urlopen("http://en.wikipedia.org"+pageUrl) + bsObj = BeautifulSoup(html, "html.parser") + for link in bsObj.findAll("a", href=re.compile("^(/wiki/)((?!:).)*$")): + insertLink(pageId, insertPageIfNotExists(link.attrs['href'])) + if not pageScraped(link.attrs['href']): + #We have encountered a new page, add it and search it for links + newPage = link.attrs['href'] + print(newPage) + getLinks(newPage, recursionLevel+1) + else: + print("Skipping: "+str(link.attrs['href'])+" found on "+pageUrl) +getLinks("/wiki/Kevin_Bacon", 0) +cur.close() +conn.close() diff --git a/v1/chapter5/7-sendEmail.py b/v1/chapter5/7-sendEmail.py new file mode 100644 index 0000000..6dcace9 --- /dev/null +++ b/v1/chapter5/7-sendEmail.py @@ -0,0 +1,12 @@ +import smtplib +from email.mime.text import MIMEText + +msg = MIMEText("The body of the email is here") + +msg['Subject'] = "An Email Alert" +msg['From'] = "ryan@pythonscraping.com" +msg['To'] = "webmaster@pythonscraping.com" + +s = smtplib.SMTP('localhost') +s.send_message(msg) +s.quit() \ No newline at end of file diff --git a/v1/chapter5/8-sendEmailWhenChristmas.py b/v1/chapter5/8-sendEmailWhenChristmas.py new file mode 100644 index 0000000..3943ad0 --- /dev/null +++ b/v1/chapter5/8-sendEmailWhenChristmas.py @@ -0,0 +1,22 @@ +import smtplib +from email.mime.text import MIMEText +from bs4 import BeautifulSoup +from urllib.request import urlopen +import time + +def sendMail(subject, body): + msg = MIMEText(body) + msg['Subject'] = subject + msg['From'] = "christmas_alerts@pythonscraping.com" + msg['To'] = "ryan@pythonscraping.com" + + s = smtplib.SMTP('localhost') + s.send_message(msg) + s.quit() + +bsObj = BeautifulSoup(urlopen("https://isitchristmas.com/")) +while(bsObj.find("a", {"id":"answer"}).attrs['title'] == "NO"): + print("It is not Christmas yet.") + time.sleep(3600) + bsObj = BeautifulSoup(urlopen("https://isitchristmas.com/")) +sendMail("It's Christmas!", "According to http://itischristmas.com, it is Christmas!") diff --git a/v1/chapter6/1-getText.py b/v1/chapter6/1-getText.py new file mode 100644 index 0000000..2e41f94 --- /dev/null +++ b/v1/chapter6/1-getText.py @@ -0,0 +1,4 @@ +from urllib.request import urlopen + +textPage = urlopen("http://www.pythonscraping.com/pages/warandpeace/chapter1.txt") +print(textPage.read()) \ No newline at end of file diff --git a/v1/chapter6/2-getUtf8Text.py b/v1/chapter6/2-getUtf8Text.py new file mode 100644 index 0000000..6d42fb1 --- /dev/null +++ b/v1/chapter6/2-getUtf8Text.py @@ -0,0 +1,9 @@ +from urllib.request import urlopen +from bs4 import BeautifulSoup + +html = urlopen("http://en.wikipedia.org/wiki/Python_(programming_language)") +bsObj = BeautifulSoup(html, "html.parser") +content = bsObj.find("div", {"id":"mw-content-text"}).get_text() +content = bytes(content, "UTF-8") +content = content.decode("UTF-8") +print(content) \ No newline at end of file diff --git a/v1/chapter6/3-readingCsv.py b/v1/chapter6/3-readingCsv.py new file mode 100644 index 0000000..a44a747 --- /dev/null +++ b/v1/chapter6/3-readingCsv.py @@ -0,0 +1,10 @@ +from urllib.request import urlopen +from io import StringIO +import csv + +data = urlopen("http://pythonscraping.com/files/MontyPythonAlbums.csv").read().decode('ascii', 'ignore') +dataFile = StringIO(data) +csvReader = csv.reader(dataFile) + +for row in csvReader: + print("The album \""+row[0]+"\" was released in "+str(row[1])) \ No newline at end of file diff --git a/v1/chapter6/4-readingCsvDict.py b/v1/chapter6/4-readingCsvDict.py new file mode 100644 index 0000000..dfd8028 --- /dev/null +++ b/v1/chapter6/4-readingCsvDict.py @@ -0,0 +1,12 @@ +from urllib.request import urlopen +from io import StringIO +import csv + +data = urlopen("http://pythonscraping.com/files/MontyPythonAlbums.csv").read().decode('ascii', 'ignore') +dataFile = StringIO(data) +dictReader = csv.DictReader(dataFile) + +print(dictReader.fieldnames) + +for row in dictReader: + print(row) \ No newline at end of file diff --git a/v1/chapter6/5-readPdf.py b/v1/chapter6/5-readPdf.py new file mode 100644 index 0000000..c4ecee8 --- /dev/null +++ b/v1/chapter6/5-readPdf.py @@ -0,0 +1,24 @@ +from pdfminer.pdfinterp import PDFResourceManager, process_pdf +from pdfminer.converter import TextConverter +from pdfminer.layout import LAParams +from io import StringIO +from io import open +from urllib.request import urlopen + +def readPDF(pdfFile): + rsrcmgr = PDFResourceManager() + retstr = StringIO() + laparams = LAParams() + device = TextConverter(rsrcmgr, retstr, laparams=laparams) + + process_pdf(rsrcmgr, device, pdfFile) + device.close() + + content = retstr.getvalue() + retstr.close() + return content + +pdfFile = urlopen("http://pythonscraping.com/pages/warandpeace/chapter1.pdf") +outputString = readPDF(pdfFile) +print(outputString) +pdfFile.close() diff --git a/v1/chapter6/6-readDocx.py b/v1/chapter6/6-readDocx.py new file mode 100644 index 0000000..7c86d09 --- /dev/null +++ b/v1/chapter6/6-readDocx.py @@ -0,0 +1,23 @@ +from zipfile import ZipFile +from urllib.request import urlopen +from io import BytesIO +from bs4 import BeautifulSoup + +wordFile = urlopen("http://pythonscraping.com/pages/AWordDocument.docx").read() +wordFile = BytesIO(wordFile) +document = ZipFile(wordFile) +xml_content = document.read('word/document.xml') + +wordObj = BeautifulSoup(xml_content.decode('utf-8'), "lxml-xml") +textStrings = wordObj.findAll("w:t") +for textElem in textStrings: + closeTag = "" + try: + style = textElem.parent.previousSibling.find("w:pStyle") + if style is not None and style["w:val"] == "Title": + print("

") + closeTag = "

" + except AttributeError: #不打印标签 + pass + print(textElem.text) + print(closeTag) \ No newline at end of file diff --git a/v1/chapter7/1-2grams.py b/v1/chapter7/1-2grams.py new file mode 100644 index 0000000..b25437e --- /dev/null +++ b/v1/chapter7/1-2grams.py @@ -0,0 +1,16 @@ +from urllib.request import urlopen +from bs4 import BeautifulSoup + +def getNgrams(input, n): + input = input.split(' ') + output = [] + for i in range(len(input)-n+1): + output.append(input[i:i+n]) + return output + +html = urlopen("http://en.wikipedia.org/wiki/Python_(programming_language)") +bsObj = BeautifulSoup(html, "html.parser") +content = bsObj.find("div", {"id":"mw-content-text"}).get_text() +ngrams = getNgrams(content, 2) +print(ngrams) +print("2-grams count is: "+str(len(ngrams))) \ No newline at end of file diff --git a/v1/chapter7/2-clean2grams.py b/v1/chapter7/2-clean2grams.py new file mode 100644 index 0000000..abc38ed --- /dev/null +++ b/v1/chapter7/2-clean2grams.py @@ -0,0 +1,41 @@ +from urllib.request import urlopen +from bs4 import BeautifulSoup +import re +import string +from collections import OrderedDict + +def cleanInput(input): + input = re.sub('\n+', " ", input) + input = re.sub('\[[0-9]*\]', "", input) + input = re.sub(' +', " ", input) + input = bytes(input, "UTF-8") + input = input.decode("ascii", "ignore") + cleanInput = [] + input = input.split(' ') + for item in input: + item = item.strip(string.punctuation) + if len(item) > 1 or (item.lower() == 'a' or item.lower() == 'i'): + cleanInput.append(item) + return cleanInput + +def getNgrams(input, n): + input = cleanInput(input) + output = dict() + for i in range(len(input)-n+1): + newNGram = " ".join(input[i:i+n]) + if newNGram in output: + output[newNGram] += 1 + else: + output[newNGram] = 1 + return output + +html = urlopen("http://en.wikipedia.org/wiki/Python_(programming_language)") +bsObj = BeautifulSoup(html, "html.parser") +content = bsObj.find("div", {"id":"mw-content-text"}).get_text() +#ngrams = getNgrams(content, 2) +#print(ngrams) +#print("2-grams count is: "+str(len(ngrams))) + +ngrams = getNgrams(content, 2) +ngrams = OrderedDict(sorted(ngrams.items(), key=lambda t: t[1], reverse=True)) +print(ngrams) \ No newline at end of file diff --git a/v1/chapter8/1-count2Grams.py b/v1/chapter8/1-count2Grams.py new file mode 100644 index 0000000..403dfc3 --- /dev/null +++ b/v1/chapter8/1-count2Grams.py @@ -0,0 +1,35 @@ +from urllib.request import urlopen +from bs4 import BeautifulSoup +import re +import string +import operator + + +def cleanInput(input): + input = re.sub('\n+', " ", input).lower() + input = re.sub('\[[0-9]*\]', "", input) + input = re.sub(' +', " ", input) + input = bytes(input, "UTF-8") + input = input.decode("ascii", "ignore") + cleanInput = [] + input = input.split(' ') + for item in input: + item = item.strip(string.punctuation) + if len(item) > 1 or (item.lower() == 'a' or item.lower() == 'i'): + cleanInput.append(item) + return cleanInput + +def getNgrams(input, n): + input = cleanInput(input) + output = {} + for i in range(len(input)-n+1): + ngramTemp = " ".join(input[i:i+n]) + if ngramTemp not in output: + output[ngramTemp] = 0 + output[ngramTemp] += 1 + return output + +content = str(urlopen("http://pythonscraping.com/files/inaugurationSpeech.txt").read(),'utf-8') +ngrams = getNgrams(content, 2) +sortedNGrams = sorted(ngrams.items(), key = operator.itemgetter(1), reverse=True) +print(sortedNGrams) \ No newline at end of file diff --git a/v1/chapter8/2-countUncommon2Grams.py b/v1/chapter8/2-countUncommon2Grams.py new file mode 100644 index 0000000..4ed1781 --- /dev/null +++ b/v1/chapter8/2-countUncommon2Grams.py @@ -0,0 +1,56 @@ +from urllib.request import urlopen +from bs4 import BeautifulSoup +import re +import string +import operator + +def isCommon(ngram): + commonWords = ["the", "be", "and", "of", "a", "in", "to", "have", "it", "i", "that", "for", "you", "he", "with", "on", "do", "say", "this", "they", "is", "an", "at", "but","we", "his", "from", "that", "not", "by", "she", "or", "as", "what", "go", "their","can", "who", "get", "if", "would", "her", "all", "my", "make", "about", "know", "will","as", "up", "one", "time", "has", "been", "there", "year", "so", "think", "when", "which", "them", "some", "me", "people", "take", "out", "into", "just", "see", "him", "your", "come", "could", "now", "than", "like", "other", "how", "then", "its", "our", "two", "more", "these", "want", "way", "look", "first", "also", "new", "because", "day", "more", "use", "no", "man", "find", "here", "thing", "give", "many", "well"] + for word in ngram: + if word in commonWords: + return True + return False + +def cleanText(input): + input = re.sub('\n+', " ", input).lower() + input = re.sub('\[[0-9]*\]', "", input) + input = re.sub(' +', " ", input) + input = re.sub("u\.s\.", "us", input) + input = bytes(input, "UTF-8") + input = input.decode("ascii", "ignore") + return input + +def cleanInput(input): + input = cleanText(input) + cleanInput = [] + input = input.split(' ') + for item in input: + item = item.strip(string.punctuation) + if len(item) > 1 or (item.lower() == 'a' or item.lower() == 'i'): + cleanInput.append(item) + return cleanInput + +def getNgrams(input, n): + input = cleanInput(input) + output = {} + for i in range(len(input)-n+1): + ngramTemp = " ".join(input[i:i+n]) + if ngramTemp not in output: + output[ngramTemp] = 0 + output[ngramTemp] += 1 + return output + +def getFirstSentenceContaining(ngram, content): + #print(ngram) + sentences = content.split(".") + for sentence in sentences: + if ngram in sentence: + return sentence + return "" + +content = str(urlopen("http://pythonscraping.com/files/space.txt").read(), 'utf-8') +ngrams = getNgrams(content, 2) +sortedNGrams = sorted(ngrams.items(), key = operator.itemgetter(1), reverse = True) +print(sortedNGrams) + + diff --git a/v1/chapter8/3-markovGenerator.py b/v1/chapter8/3-markovGenerator.py new file mode 100644 index 0000000..292f252 --- /dev/null +++ b/v1/chapter8/3-markovGenerator.py @@ -0,0 +1,62 @@ +from urllib.request import urlopen +from random import randint + +def wordListSum(wordList): + sum = 0 + for word, value in wordList.items(): + sum += value + return sum + +def retrieveRandomWord(wordList): + + randIndex = randint(1, wordListSum(wordList)) + for word, value in wordList.items(): + randIndex -= value + if randIndex <= 0: + return word + +def buildWordDict(text): + #Remove newlines and quotes + text = text.replace("\n", " ") + text = text.replace("\"", "") + + #Make sure puncuation are treated as their own "word," so they will be included + #in the Markov chain + punctuation = [',','.',';',':'] + for symbol in punctuation: + text = text.replace(symbol, " "+symbol+" ") + + words = text.split(" ") + #Filter out empty words + words = [word for word in words if word != ""] + + wordDict = {} + for i in range(1, len(words)): + if words[i-1] not in wordDict: + #Create a new dictionary for this word + wordDict[words[i-1]] = {} + if words[i] not in wordDict[words[i-1]]: + wordDict[words[i-1]][words[i]] = 0 + wordDict[words[i-1]][words[i]] += 1 + + return wordDict + +text = str(urlopen("http://pythonscraping.com/files/inaugurationSpeech.txt").read(), 'utf-8') +wordDict = buildWordDict(text) + +#Generate a Markov chain of length 100 +length = 100 +chain = "" +currentWord = "I" +for i in range(0, length): + chain += currentWord+" " + #print(wordDict[currentWord]) + currentWord = retrieveRandomWord(wordDict[currentWord]) + +print(chain) + + + + + + diff --git a/v1/chapter8/4-6DegreesFinder.py b/v1/chapter8/4-6DegreesFinder.py new file mode 100644 index 0000000..63344b2 --- /dev/null +++ b/v1/chapter8/4-6DegreesFinder.py @@ -0,0 +1,48 @@ +from urllib.request import urlopen +from bs4 import BeautifulSoup +import pymysql + + +conn = pymysql.connect(host='127.0.0.1', port=3306, user='root', password=None, db='mysql', charset='utf8') +cur = conn.cursor() +cur.execute("USE wikipedia") + +def getUrl(pageId): + cur.execute("SELECT url FROM pages WHERE id = %s", (int(pageId))) + if cur.rowcount == 0: + return None + return cur.fetchone()[0] + +def getLinks(fromPageId): + cur.execute("SELECT toPageId FROM links WHERE fromPageId = %s", (int(fromPageId))) + if cur.rowcount == 0: + return None + return [x[0] for x in cur.fetchall()] + +def searchBreadth(targetPageId, currentPageId, depth, nodes): + if nodes is None or len(nodes) == 0: + return None + if depth <= 0: + for node in nodes: + if node == targetPageId: + return [node] + return None + #depth is greater than 0 -- go deeper! + for node in nodes: + found = searchBreadth(targetPageId, node, depth-1, getLinks(node)) + if found is not None: + return found.append(currentPageId) + return None + +nodes = getLinks(1) +targetPageId = 123428 +for i in range(0,4): + found = searchBreadth(targetPageId, 1, i, nodes) + if found is not None: + print(found) + for node in found: + print(getUrl(node)) + break + else: + print("No path found") + diff --git a/v1/chapter8/5-NltkTokenize.py b/v1/chapter8/5-NltkTokenize.py new file mode 100644 index 0000000..bb5e040 --- /dev/null +++ b/v1/chapter8/5-NltkTokenize.py @@ -0,0 +1,5 @@ +from nltk import word_tokenize +from nltk import Text + +tokens = word_tokenize("Here is some not very interesting text") +text = Text(tokens) \ No newline at end of file diff --git a/v1/chapter8/6-NltkSearch.py b/v1/chapter8/6-NltkSearch.py new file mode 100644 index 0000000..6697b23 --- /dev/null +++ b/v1/chapter8/6-NltkSearch.py @@ -0,0 +1,6 @@ +from nltk.book import * +from nltk import ngrams +fourgrams = ngrams(text6, 4) +for fourgram in fourgrams: + if fourgram[0] == "coconut": + print(fourgram) \ No newline at end of file diff --git a/v1/chapter8/7-NltkAnalysis.py b/v1/chapter8/7-NltkAnalysis.py new file mode 100644 index 0000000..03f86de --- /dev/null +++ b/v1/chapter8/7-NltkAnalysis.py @@ -0,0 +1,10 @@ +from nltk import word_tokenize, sent_tokenize, pos_tag +sentences = sent_tokenize("Google is one of the best companies in the world. I constantly google myself to see what I'm up to.") +nouns = ['NN', 'NNS', 'NNP', 'NNPS'] + +for sentence in sentences: + if "google" in sentence.lower(): + taggedWords = pos_tag(word_tokenize(sentence)) + for word in taggedWords: + if word[0].lower() == "google" and word[1] in nouns: + print(sentence) diff --git a/v1/chapter9/1-simpleForm.py b/v1/chapter9/1-simpleForm.py new file mode 100644 index 0000000..dc7e141 --- /dev/null +++ b/v1/chapter9/1-simpleForm.py @@ -0,0 +1,5 @@ +import requests + +params = {'firstname': 'Ryan', 'lastname': 'Mitchell'} +r = requests.post("http://pythonscraping.com/files/processing.php", data=params) +print(r.text) \ No newline at end of file diff --git a/v1/chapter9/2-fileSubmission.py b/v1/chapter9/2-fileSubmission.py new file mode 100644 index 0000000..de3b2df --- /dev/null +++ b/v1/chapter9/2-fileSubmission.py @@ -0,0 +1,6 @@ +import requests + +files = {'uploadFile': open('../files/Python-logo.png', 'rb')} +r = requests.post("http://pythonscraping.com/pages/processing2.php", + files=files) +print(r.text) \ No newline at end of file diff --git a/v1/chapter9/3-cookies.py b/v1/chapter9/3-cookies.py new file mode 100644 index 0000000..6e66f04 --- /dev/null +++ b/v1/chapter9/3-cookies.py @@ -0,0 +1,10 @@ +import requests + +params = {'username': 'Ryan', 'password': 'password'} +r = requests.post("http://pythonscraping.com/pages/cookies/welcome.php", params) +print("Cookie is set to:") +print(r.cookies.get_dict()) +print("-----------") +print("Going to profile page...") +r = requests.get("http://pythonscraping.com/pages/cookies/profile.php", cookies=r.cookies) +print(r.text) \ No newline at end of file diff --git a/v1/chapter9/4-sessionCookies.py b/v1/chapter9/4-sessionCookies.py new file mode 100644 index 0000000..caa82fa --- /dev/null +++ b/v1/chapter9/4-sessionCookies.py @@ -0,0 +1,12 @@ +import requests + +session = requests.Session() + +params = {'username': 'username', 'password': 'password'} +s = session.post("http://pythonscraping.com/pages/cookies/welcome.php", params) +print("Cookie is set to:") +print(s.cookies.get_dict()) +print("-----------") +print("Going to profile page...") +s = session.get("http://pythonscraping.com/pages/cookies/profile.php") +print(s.text) \ No newline at end of file diff --git a/v1/chapter9/5-BasicAuth.py b/v1/chapter9/5-BasicAuth.py new file mode 100644 index 0000000..4b839f4 --- /dev/null +++ b/v1/chapter9/5-BasicAuth.py @@ -0,0 +1,7 @@ +import requests +from requests.auth import AuthBase +from requests.auth import HTTPBasicAuth + +auth = HTTPBasicAuth('ryan', 'password') +r = requests.post(url="http://pythonscraping.com/pages/auth/login.php", auth=auth) +print(r.text) \ No newline at end of file From e6d947fe78509ac495ac07fba53c5458a74d0427 Mon Sep 17 00:00:00 2001 From: remitchell Date: Fri, 23 Mar 2018 22:23:13 -0400 Subject: [PATCH 34/47] Updated README --- README.md | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 5a14eab..9c34396 100644 --- a/README.md +++ b/README.md @@ -1 +1,9 @@ -# python-scraping +# Web Scraping with Python Code Samples + +These code samples are for the book Web Scraping with Python + +If you're looking for the first edition code files, they can be found in the v1 directory. + +Most code for the second edition is contained in Jupyter notebooks. Although these files can be viewed directly in your browser in Github, some formatting changes and oddities may occur. I recommend that you clone the repository, install Jupyter, and view them locally for the best experience. + +The web changes, libraries update, and I not infrequently make mistakes or typos. If you think you've spotted an error, please feel free to make a pull request against this repository. \ No newline at end of file From 26b7e5d6284326ded1f0e54c23945f822e65842a Mon Sep 17 00:00:00 2001 From: remitchell Date: Mon, 26 Mar 2018 07:08:29 -0400 Subject: [PATCH 35/47] Deleted old v2 directory --- v2/chapter4_crawlingLayouts/__init__.py | 0 v2/chapter4_crawlingLayouts/content.py | 18 ------- v2/chapter4_crawlingLayouts/crawler.py | 72 ------------------------- v2/chapter4_crawlingLayouts/crawler2.py | 67 ----------------------- v2/chapter4_crawlingLayouts/topic.py | 6 --- v2/chapter4_crawlingLayouts/website.py | 12 ----- v2/test.csv | 11 ---- 7 files changed, 186 deletions(-) delete mode 100644 v2/chapter4_crawlingLayouts/__init__.py delete mode 100644 v2/chapter4_crawlingLayouts/content.py delete mode 100644 v2/chapter4_crawlingLayouts/crawler.py delete mode 100644 v2/chapter4_crawlingLayouts/crawler2.py delete mode 100644 v2/chapter4_crawlingLayouts/topic.py delete mode 100644 v2/chapter4_crawlingLayouts/website.py delete mode 100644 v2/test.csv diff --git a/v2/chapter4_crawlingLayouts/__init__.py b/v2/chapter4_crawlingLayouts/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/v2/chapter4_crawlingLayouts/content.py b/v2/chapter4_crawlingLayouts/content.py deleted file mode 100644 index bb99925..0000000 --- a/v2/chapter4_crawlingLayouts/content.py +++ /dev/null @@ -1,18 +0,0 @@ -class Content: - """Common base class for all articles/pages""" - - def __init__(self, topic, title, body, url): - self.topic = topic - self.title = title - self.body = body - self.url = url - - def print(self): - """ - Flexible printing function controls output - """ - print("New article found for: {}".format(self.topic)) - print("TITLE: {}".format(self.title)) - print("BODY:\n{}".format(self.body)) - print("URL: {}".format(self.url)) - \ No newline at end of file diff --git a/v2/chapter4_crawlingLayouts/crawler.py b/v2/chapter4_crawlingLayouts/crawler.py deleted file mode 100644 index bee3d57..0000000 --- a/v2/chapter4_crawlingLayouts/crawler.py +++ /dev/null @@ -1,72 +0,0 @@ -from website import Website -from content import Content - -import requests -from bs4 import BeautifulSoup - -class Crawler: - - def getPage(self, url): - """ - Utilty function used to get a Beautiful Soup object from a given URL - """ - print("Retrieving URL:\n{}".format(url)) - session = requests.Session() - headers = {"User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.95 Safari/537.36", "Accept":"text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8"} - try: - req = session.get(url, headers=headers) - except requests.exceptions.RequestException: - return None - bsObj = BeautifulSoup(req.text, "lxml") - return bsObj - - def safeGet(self, pageObj, selector): - """ - Utilty function used to get a content string from a Beautiful Soup - object and a selector. Returns an empty string if no object - is found for the given selector - """ - childObj = pageObj.select(selector) - if childObj is not None and len(childObj) > 0: - return childObj[0].get_text() - return "" - - def search(self, topic, site): - """ - Searches a given website for a given topic and records all pages found - """ - bsObj = self.getPage(site.searchUrl+topic) - searchResults = bsObj.select(site.resultListing) - for result in searchResults: - url = result.select(site.resultUrl)[0].attrs["href"] - #Check to see whether it's a relative or an absolute URL - if(site.absoluteUrl): - pageObj = self.getPage(url) - else: - pageObj = self.getPage(site.url+url) - if pageObj is None: - print("Something was wrong with that page or URL. Skipping!") - return - title = self.safeGet(pageObj, site.pageTitle) - body = self.safeGet(pageObj, site.pageBody) - if title != "" and body != "": - content = Content(topic, title, body, url) - content.print() - - -crawler = Crawler() - -siteData = [ - ["O'Reilly Media","http://oreilly.com","https://ssearch.oreilly.com/?q=", "article.product-result","p.title a",True,"h1","section#product-description"], - ["Reuters","http://reuters.com","http://www.reuters.com/search/news?blob=","div.search-result-content","h3.search-result-title a",False,"h1","div.ArticleBody_body_2ECha"], - ["Brookings","http://www.brookings.edu","https://www.brookings.edu/search/?s=","div.list-content article","h4.title a",True,"h1","div.post-body"] - ] -sites = [] -for row in siteData: - sites.append(Website(row[0], row[1], row[2], row[3], row[4], row[5], row[6], row[7])) - -topics = ["python","data science"] -for topic in topics: - print("GETTING INFO ABOUT: "+topic) - for targetSite in sites: - crawler.search(topic, targetSite) diff --git a/v2/chapter4_crawlingLayouts/crawler2.py b/v2/chapter4_crawlingLayouts/crawler2.py deleted file mode 100644 index ce3b9a6..0000000 --- a/v2/chapter4_crawlingLayouts/crawler2.py +++ /dev/null @@ -1,67 +0,0 @@ -from website import Website -from content import Content - -import requests -from bs4 import BeautifulSoup - -class Crawler: - - def getInternalLinks(bsObj, includeUrl): - internalLinks = [] - #Finds all links that begin with a "/" - for link in bsObj.findAll("a", href=re.compile("^(/|.*"+includeUrl+")")): - if link.attrs['href'] is not None: - if link.attrs['href'] not in internalLinks: - internalLinks.append(link.attrs['href']) - return internalLinksdef getInternalLinks(bsObj, includeUrl): - internalLinks = [] - #Finds all links that begin with a "/" - for link in bsObj.findAll("a", href=re.compile("^(/|.*"+includeUrl+")")): - if link.attrs['href'] is not None: - if link.attrs['href'] not in internalLinks: - internalLinks.append(link.attrs['href']) - return internalLinks - - def getPage(self, url): - """ - Utilty function used to get a Beautiful Soup object from a given URL - """ - print("Retrieving URL:\n{}".format(url)) - session = requests.Session() - headers = {"User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.95 Safari/537.36", "Accept":"text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8"} - try: - req = session.get(url, headers=headers) - except requests.exceptions.RequestException: - return None - bsObj = BeautifulSoup(req.text, "lxml") - return bsObj - - def safeGet(self, pageObj, selector): - """ - Utilty function used to get a content string from a Beautiful Soup - object and a selector. Returns an empty string if no object - is found for the given selector - """ - childObj = pageObj.select(selector) - if childObj is not None and len(childObj) > 0: - return childObj[0].get_text() - return "" - - def crawl(self, topic, site): - """ - Searches a given website for a given topic and records all pages found - """ - bsObj = self.getPage(site.searchUrl+topic) - links = getInternalLinks() - -crawler = Crawler() - -siteData = [ - ["O'Reilly Media","http://oreilly.com","https://ssearch.oreilly.com/?q=", "article.product-result","p.title a",True,"h1","section#product-description"], - ["Reuters","http://reuters.com","http://www.reuters.com/search/news?blob=","div.search-result-content","h3.search-result-title a",False,"h1","div.ArticleBody_body_2ECha"], - ["Brookings","http://www.brookings.edu","https://www.brookings.edu/search/?s=","div.list-content article","h4.title a",True,"h1","div.post-body"] - ] -sites = [] -for row in siteData: - sites.append(Website(row[0], row[1], row[2], row[3], row[4], row[5], row[6], row[7])) - diff --git a/v2/chapter4_crawlingLayouts/topic.py b/v2/chapter4_crawlingLayouts/topic.py deleted file mode 100644 index 484d930..0000000 --- a/v2/chapter4_crawlingLayouts/topic.py +++ /dev/null @@ -1,6 +0,0 @@ -class Topic: - 'Common base class for all topics' - def __init__(self, name): - self.name = name - - \ No newline at end of file diff --git a/v2/chapter4_crawlingLayouts/website.py b/v2/chapter4_crawlingLayouts/website.py deleted file mode 100644 index 61120aa..0000000 --- a/v2/chapter4_crawlingLayouts/website.py +++ /dev/null @@ -1,12 +0,0 @@ -class Website: - """Common base class for all articles/pages""" - - def __init__(self, name, url, searchUrl, resultListing, resultUrl, absoluteUrl, pageTitle, pageBody): - self.name = name - self.url = url - self.searchUrl = searchUrl - self.resultListing = resultListing - self.resultUrl = resultUrl - self.absoluteUrl=absoluteUrl - self.pageTitle = pageTitle - self.pageBody = pageBody \ No newline at end of file diff --git a/v2/test.csv b/v2/test.csv deleted file mode 100644 index a0efbe1..0000000 --- a/v2/test.csv +++ /dev/null @@ -1,11 +0,0 @@ -number,number plus 2,number times 2 -0,2,0 -1,3,2 -2,4,4 -3,5,6 -4,6,8 -5,7,10 -6,8,12 -7,9,14 -8,10,16 -9,11,18 From 6bfa2fa192593ca5a925b47a6c9fa9d8c07ed79f Mon Sep 17 00:00:00 2001 From: remitchell Date: Mon, 26 Mar 2018 07:12:28 -0400 Subject: [PATCH 36/47] Added image files for chapter 13 --- files/textBad.png | Bin 0 -> 41742 bytes files/textCleaned.png | Bin 0 -> 9449 bytes files/textOriginal.png | Bin 0 -> 16057 bytes files/text_2.png | Bin 0 -> 9678 bytes 4 files changed, 0 insertions(+), 0 deletions(-) create mode 100755 files/textBad.png create mode 100755 files/textCleaned.png create mode 100755 files/textOriginal.png create mode 100644 files/text_2.png diff --git a/files/textBad.png b/files/textBad.png new file mode 100755 index 0000000000000000000000000000000000000000..3bcbc9dbf63426a508a4736ffb1974eae8558c26 GIT binary patch literal 41742 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 HyTtqtVVYXp literal 0 HcmV?d00001 diff --git a/files/textCleaned.png b/files/textCleaned.png new file mode 100755 index 0000000000000000000000000000000000000000..cc6229e4748614183d00fe9e1ee9a4d20940e8b7 GIT binary patch literal 9449 zcmch+MNk|J6RkY~0t6@6;O-VIxVuXTHaNj8xO;-TOK^908Qh)0-Q8X1zTf_@e|K+H zS65e8FV5Zou3;_;Ox^ykLdH!JPt%KA1|?wCX6R&t5z|Js(!}Cq z!ccGuDd_VksPQ*N?_a@CXy?>x$NTe{Q7kep>N_z4)l5q}T9dbj_(u}T~GC$v_y zCdCbo9-A!y!>a z0C0zilX-ykA4JT(l}vcU;N{$qArvoh6QS!Rh%h9M7skwW;G_^xBPV}tzVd>L@OY0P z0z+x$POB9tW-eJbYE9d>qF^X`1H%wLvgfY-QewACgiWp}leUz<*RR&$r!}wTyyJpW z{kPIps@E3~%|w37`#*k%;$Gawusgj?2rGqulQ=-BA$w})o*9Pe(FJrTs)|OxfNK%s zI@a;FLr`HTCWw7aXm5PmH*dDPr?=LV`5m|1{YYxSwPPv-ZB2%fc|~mcAnd-Oxx&aZM1$ua%T#JF;SyMmv0djp$yy&|$Mux#2S@kD+* zNHn}>cj?8+sGKiFdy>eknbzlXocz!#i0ZTVNe-a?1}Ei@ETL0ndOE(;Vo`{Myph+>{!@Z$%BJZ6C zX*CzhACVG%#DzTj<9B!T3G_vpNCjZIgPHfa7rXo=Zorn42o>Et6cc;RF8ZP4X~F^) zm=e~e4WD!fXGmv=Cjt)uvli6-Uws-_j5FB9-ZfG4KTaN|bU$9*K|0WKLGUr>SI$vz zj$8X&5Kr1Q(P29|^ju^%G?+aGBf&a)eM2D8xpsU@&;xZ*VkL*f*OfgT-* z9Sc7h5J5(`7et`~&mc-{0btG{b`BWYqIZYaC$DAuY}O;71yhazw@qdhifJ6;PHrUg zRm~qlMm!9x`*TL7IgE7^B$i7@Mr`3EZCX)R95badvZ{$l(UOhvJfeDqx9 z-1-^QBTr{qPej3hENOeg5;k3+Y$W_3(Qe>%U%#Q+x3tu+kTtN& z!z&auZO9(T9VD3 zACDgnyx>q^&jWtON5z+ol#LvSLYiPA<-)sA5Dc5P#qSbx;+Wj?Wa%&`ST5jew*wi~YWH(OI z@0-;b@Xm#hE*{vIOc}h3Gz1&Xt3;!usPxsG!JPO|o+VX2a4huxw z<`9^HjA4r|mQIEFN+(uLMR8j5n|O`*Z~aisVL3Yeqqb>zBP1g(Bfo9=-t}H#NeRh+ zlF<>Ip$ZXoVd)WrVfuK)SoyefILLU6*o3%4;pJfnVTWPDN&eJ{)Nj;|R4>#Lu#A5M;~1hA!uZJD1}x__+A;X%cDhX{>c(b#`@!rtPNOdx`sj`{Dcg zBOJq*@ydzz$#8IpFP zoT=1LnfV`Fn)iPR64Ikq=o>>$fG)82eJ9K(U`};T3a%5*E-N`}cuNfnCF?M&XA2x_ zMJr?rtj21qnA59c_Y>@+$kUtCuP(?go5x>HJWi92d?0v>=n!x&bU9Wnx^ZYME*_TTpGjL(?@O)+a3Cgj1T^qR}D*#mh9Kai;OfjLvU|-)YlQGNvxo z){|<==K>9l?Bi^&C)Il6ZI*35gU;*P47r*>?rujH@YaU5c0N5XjZr0vEfd6`ipnV4 z=yL>qk9PNVJ1?nMp9h==c{F%5b7Fnoa9$~1SDqQZR{kXZcjxbpN^T@>aW1mIJ_f}NZk86940huo(I1bvaGx&9q>6|sH$3)xW? z4tpDO1~~FZH_I!(KQCHRQQ}nMP=a-cXJ9R|Fa|a1T#(FRYcC+ifyQAGEe|~&&9(n_ zh%_o&W?H$$6OnJvrDV5eYkRNnhqOXWB5|Prf%Bbgp02Uy&Lh=f!NISKJ<5@UA%z${ zENO-gcFlWVy1$&BUmoOUty)Kk_mf4Sqs zDDPS8wA0koX%?$|v2u)jc88%$u22vwCD-ojfDfJ*dlLICtEzr@8)uej+Pu5=(M{`^ z_43E^lp~5`nNzEy^1;XW?IdAGo?9V9Hoq{lUm;nJ;a=JC{EJvz?>L2xs`E^Uaq-TD zwbkONJdfP0+=9Hg{Lt9hDBsx6u`$LLhDrU9YH7Xf)@|Qi%R*IClO*T)d8_1;1_BkV zpSPt8^$#AIl6pgmjTt|i|Jd(um~~|8pwE+*WZPfa1MQt{i7Zy;Au|=r-mlT)nX|Yb z$^SGC7V2#iZAWY~+;%TMTJT)$tJbT1>P!rV%3oO?L-=j^UrDqC+?PyeUBDpl>xKAv z2(uu8pkfS!giAofLwB=$&FeMnCSlcw!RP+H>^(|(KKnbm1!@E830f06KB^092D-3s z)9Z4#)6gL$>zYAijC+hi415erN2G7-%gHd%jOm_h{dAmL*B)sz99&7FiEp3zE&a&H z9C|TNW$F0f)BoC7x`z%SWf#8jWy;n_wM%15^LVkGDlT2FS)OlAoVv?)0*Csv-v7L` zzU&x#gTQzg-L95OJ`BuW%5C!dF1@+eW7jpjaJZ!Tw4SA`RA1m6CdHJqS+_J+xLn^K zphiU1PQ*@3e4|Kf@xc)x$9cH_yal2MK&k-Wgg*Pno6#P==&20v!%A%^#iDQ`)8=EV z%pJj?VDg?GI7B`D!1n!*SqgA`R`3LTIy8JNp1$z1Qm8bHW~|9t3&=J<&pL_b{t34% zcwBYZc=x_J!tezyh-LL+QqW4=_Mh};%NQ4g&f3;_J0k3d;7}(TC-SS;S_PlP5lE(Y z>KM4txg6i8-Y=spq4Gv*MWrcNC|(z3m~Bp&yLC1K>(1(|mh{XrZJk!WkFZP%&62ON z_0kVM$BunjL}~67OuG0YK?ed{xxZ~+9iJnI$_&1K;uo{&{h3`a1 ze<7rrsZ5}DXZ-#j;Ua@|`Gv;gV&o#rM*qf62eYRA+SUqi*13T9eR4i|t}@QH%B}J8 zx+&&$okqqG!0#|uqJ!ov7zqoHoe6-idc0S%+ZYs|E^1RHL zrMtb{j%O; zSV`QApvD)KCnq&^MaNgwkR%9IKZVQ}F1$|@ zzRxsK@$-AZB7Bx6r^PkzxGftqUu?F6_2OG6jI|ivOxaG86WGB~M7l@2|8kFdjr@R) zgotv7e)EMU_zcx$^^(Yp)K0M}{CCuyWYzc=Hu_p~v|s&tLaBt=DY1SfTfcka0`n!q z?qz*O=IB#*VPphi)e>gIl^U~soemCp({BTh%kY>uI#>qHvO3lO&3m^Bd$AvylMLWQ zdyl|Gl^6Y0lKdD5sWMGePZnbGGWb;Gv^ibjTt%UoUDm3xs`hwya0=pR_TvWeif|JKlemfh*%TqJpx4Y-= z${u9#xIUJtyDWL|7O@ebsn5u*oUy`b<2zw>v)yhHmfYnNttAcjhF@Cx)76g2f4@;$ zma<^I@f6O>w%_SdHwVJmj_m@^3|5HAuuS*)KDB9T{Ye|5?WsKj5?snOtTcL`J4j~6Zx!}# ztae0nNpyWXQ$Hr!q1b0X*Eu?93$dK?f8|Ag?L70^JTJcykZHKuxp@(@dQ^IJc*MEO zyl+1yB{d|H!Q;VI$0Wit#$mvCv4$FIS-JzY<2tZsu+uP1fr_CdVf0Z^!dpbep0OMx zI8bV%yXp77Bxx36!E|8aUSfrx0?pr7p8M-4EM!{Yf-V_rewTaaS^VsJv%`WZjw}OZ zsIw81$<3kpMC3(*`F#hKl}BWd=<<4n;_sb84nG~iTew} z-6U`szIB21#Oa$|(HcYRdyQ{ZT$gM!@BX9;qjJXO`lwd~ar$G73!3v6mmy*A`{6Bz zbF8qgx8kEuJBF_{z4Zrpd#bbL*7j?(qs75yVG)6#kImaZ`zgsbE6B`1~m~`d;9Hu+nhIu>l5*&aU> zl#<*W#F}mp@25-l<99QLM#)beH3^+xQVqIHTDqd%Kl7y7K@93ETEUuTiVsP;4WB->k}qcHatWHa4htA- z)=0+g`(n|LQFNwTM%dCp3H?I<`}A|1mmj^sA%7SB(P zW}|mr@yrQWvmfr^TnDaDd{`sMosMm;8VRh&D2hlK%(0LJ}Ehhg*#k-bF(WTZPbKMi)X_oL8@qN#8uer^=GG(^%O*?=wX zaod`r6H3H7!9Mv!AaBTcL4$t#bu8Fr(9FnSr^P|P#c>TrAIlF0`cEv8 zBHGwrE&hgTUtpf3j3kh68@>_X!h%Yuh|7#%`zaH+uITCWViYVQmC6<)n`!xnH~DW+ zVbXjA>Xb&`#bCg8%ZTib@quT5=5YSVZNlSs18gu7G`w4{XIJcd?|82X1$EvpHXjH0 zYxJ*`@hJrq1?Ru8O|?xI_i6T5u^n-+5<^E1805+Vt;SE(34n?+$QFHkJbG4wksIM3 z9X*NLjQOIwBnfD98uezk2YQvb=u8L|G_KGZ@+G7d%N2f#=2RyouE{GI~W?XJsKdC*J$x@oOiBLt#C-R^V^hXLi#EXFF)pLSS1j;lQFi!`KPq zioHOor#^?y6;=<*i%!%KK%8(9#_7M#9U}N<#a4J}h!y>ftyg3~S+F z;zmhKIe6DMCQavwM`(_F^^F&5eHM64@z&`rduYDM+L?62Rpv4~IAIIz1E8n+lhr*i z2e8V(Ja4f8L#BtzHc=(Tc&B|V(98nvw-H;2vP2y6A98L~uq;%afiGzAF%E-?M&E0y zmS~93FQ_i?gn&>q?M?ASjYL6p4fQ@aS)9XBVDI`e|n8|EoJzqWUueUk0nqy`i*A;M(p9j$9^V6QYR3$$pr@iy#35e+2&p6|j^00I6U^{uURFaQ=} z|NGmFjPk!38K;smb!_n6om-hur=}@_y~q*0HL;i{r;lB~Bq&U7{zB)~=&Ka~fZ{DH zA*$~F?>uw0?z99=GNI}g3jXJ-<)Yj0i47CR0Jv*ukMIWrCg4i03%q#=3jowGLUk+u z%N)9sFc3ch46PCW{I}zR69WL22w=zo02|Z*3;>`hSOgIO0Ev^q0sJe;F<=1Q3;(yy zpEu|KOGUa@pM1f7(5H9b33k`o&;4+{4Z`r!n*V8TT!(ij^_!b!tM|U0S=X%{z_g6u zEls!HIE(m7rQb)X@j9lKZ+!OWw;AXoi}Ll|*J&Ueopf|2?)9;R2ZKXL+cF$s8A`J@ zs=`LwyK}(ehn8~7%~}6w5wir_+w%%5=<==N!#8qx? zFF8*~9m9tV^owjyIh`ek%w#Xg^M2!qdz{n4qRQ=WLrojga=(np&WM?Zj-s76Xr=GI zNPe(YaUpXu&#nG#@MflR{&JQijAJ5%jZ=SUn?eusgN#!AH&f~018=n&c9fezIxI}v;jPxVgZVD?Y-=4O`cG3`7&MA+ilp7ufkKuc-c#z6N9Dp zIJ4;{h?T=}Wtw?i8KYSs7%m#&lJthd)%c2-TGs0y)#PAawSj|hJz#UCmrIj*9w^&E zLfGw8qoI|>cJLtQx!-rA!c-lS`TXQurpe^g8u24vZ#6u>d#lJ$WwLbP5xkmgZ(09v z=sm#uV=lKj$+)(ovg0zlO;l-i_Jk`l;s(cYyVZL)ciounRUNWWqwEAHd?2zY)4uC8 zoIZx%?xotNo4v6Sc0(L>K%0@j6iSLKTga@H4!&tEcH_Z*2g^3Ol2!>|zIfj?B>!#L z$j}t9dN)d}rH0(qX5-;?U4QXomtp%GFT_;F25YJ$e8J_kZ7*`wEN0T-&$psh?8G2cp9m8fjMHG{ zZo*Ek7dH}3v{%)tW$MF}jxdbbwwXU-EsUWseYZ-qBM(Lvig4`T5f;(fdNT_@f6ZGO zc{=5{ZuybJej)zLeXTJ=ew9m(z-Vy#u+i3aP!trva36 z;z>rvm?!vRNdY&R=5;e7Au+8|t(EB?MGA-m)|erG=x~8hDO$0=#t+@i%2NoSxP)v? zvwvT)r3jc$&M<%*Zm;@Q?+15cy~^Qy&y_u>l*UZO#C^ms zXSq#avOu#`9owSLdMJQcBnAvFh6XKh9f|cLw^9<|BqTRANOQ0fo3BZ~FnnxpYzqdK z(7E$+?Vmf#q(_HatzTU^cRhxms|_yXo_eri!RC4eud+v=)hZ}mqtSr*7(BHgsl=Ev zcP5f6#j{-b-t`4BrR|qyOI6FRO=xzwL>e@Kf7@4Xi19CDVczdbwtcxNbkC@gEpIx;Dic8M z_ikhK!5H~kl?q+iCz6l?jTtREacurfF4o6}olrl_3NJPA%)~A768TmWhe}HbGgcD1ZSe#d2Rra*T1_1P>IHYwt(4*JwF%dtJ zp+pBwNBA!DqW=%#Yl$ALvBm!*_Er}*bcYVtuIYcQ=fV8{1bI3Fl!P46y^i=cx#4hU zZ))v30eZ<4<$iwH66xI_xc9ka0IbDcCE1;5R)>xGTyldB=FcxzD@HEgaZ)zykBOjJ zcJG93evhvsI~X!iEWM8=vYzW)n_$4!ff%0cBw1ni&{^P2p7SFCJ(Db#nr} z2E`O}YDzpBpJ8wywnIr1Mai$CwmEs2f1x2PVEPGX`VQRH;L=jk@QXu!qkNp6yKdIr zlPl)kM`z|{BAffvmT%M}x`zRYsG&08wf*7Nt75KjvRK+r4|T|pzBj*$pM00ieZ7^&1zsU@h%Q~ zzuds<+WfjvCE>5*Y-Nb)*6skrxm@+GCGY|F+&ex&Vqrqi-u4_FyTRajQ{c6y&;BOgxSNLA)`d*JpR%nJ6jh53hgB?gBF3lY(VF77j)dSd#k}O zmMgV%<4f(4)2C2M*VFTSyN!dYQ|!Dph{adO90l>rPUfm8ReK59avp(aMTACE-Kz=q z7asa!2})wf>c1-G$@Kj?ZuiJXA4RS3visLd#^daWUM(jatOT=QD3l?LUa*@n^c;;q zJMDmDZ_!4pyeen-3{|hR8C#KxgfppfzG>|m{UjpVI3_QS3Id`xHYd}(VH)ZjwcCxZ z1qc#8523bSrTvE2TbtOROMQ*^9ot%+k5Y$LD9Wu*3%9pyNh~FK2)F7nv&LQYNVAwJ zVLK6^6Wqi?V)HdZ*Vjfj%?pg%V_%`0ZA@7zt~wA^ma0(Lx!*6n%M zs?ag{4VqLJubTj7Q7HE+$AgewGhWL|4+NCWV#N(bUO~m4KO5+PvjWG>bhzg$iB<6rYzut-?1g(PLR8%CxM`LbN?(Ilp+;W$@DOpXVmWe8$}U9 z9F~6!hVdB4^US-ARB@ic+(c7&jW`PF%`eD8`6mcB@Z|{f`zCdN4E1LK;XpzcdT7upT_^i=P#I(LfManW|) z=I6OaKr@ReEU=THCg=Bo_+SU2!kj$k31DJXY4H@AYK~f$dv?l61$VKVhJ%U0HZ40f z20>7qpL&CRy_SQ40kXYf%Gcu9Z6sqbjghn5jDdluXOKnxLS&KfO6U|xwJugIj+>-v zd7PwTnz2W1$Bc1hp7&>;a;p>v?*dM8sh*;L4r<#$B#n+Buz$*shre5XcA9ISTOL7k zarHWWw%f&rUx{KMblsF;ZD$^W+#ZKVt$W(jDf^Pb1yY|#Cis(cOGA%)dYE=1 z@V%psFk=ZmyHizb2Q9>!OR#N`*|U>v{O8$0;#U80|No&k|NnLV6X2w-FI2w>LC*h4 O1IS7$NmPj$2L2!0LUgPE literal 0 HcmV?d00001 diff --git a/files/textOriginal.png b/files/textOriginal.png new file mode 100755 index 0000000000000000000000000000000000000000..69c71e3a31918175f4c160f3ebc1c2440f5547b5 GIT binary patch literal 16057 zcmd72bx<5%^!7Or+$9hQ?k>UI-GdX{-Q8`l5F}WFySuwKtc#Xfu68s8eL&PG@yhuoHOJ4UAmbiP^8Z+Pu$LK`|e8( zrw8MnWUl77QeEtutYUPzLP0+i*6#5WR4V%Eb$HMt#N==SoPDQwx`n86-h~xt6I#fg zQp}s1sb4@YqDt#6tXJXo76K#=av}d^d(k}9{oM%j{Wc`teDbUfB!mPi9E`Yh)A`lk z3}&%C!#>%5O{UMJ;BN}&impGv5TsxnSTlv6FdX3WfDGURRnU|CJ5fBfMOpE-9B&%@ zeyesKnc_&a!*#wc>*W`SxER1NNsMlR28lC8~&eY;D3ueyxgck?AfQEb#h+O>_$}BqBi19DC zSwymN%U^V}SE}fNheF!!XaiXX@0O(wQuD>h=kw?b!e{s#C zaX%qrc9RQX&h-9brW=K1?Z5rDyUUoAL=(ylvTuE zjfk&NC0~Bs7u}!ws}(ZQ7<|IS0CA0)pnw9#LYw4Ihc4kz#%LKCL#3UKzSSj7xzxMf zLcD&0w2X}TMWZML0-+y0!6HsUFsFPXc6|%(ABUVh1;sYsp%&;s6E{F_%8`)$POl3$ z1Ok`%6OocIzKIZosxYQYH%P7<0fIf+=B1S>{tbb;#{u0wQ6P-)?zP99Fr|)9@8A&B3+Z&0CO;hFlzW zh>VDTBI&y4Hd7o3ngmwS?C>A($P7eqkZ1bjzDbV48XH_KV%sn!#i$v%F3Ojo;tfz% zdGev^Ayfu(cJpq%U2Q!^J<9nocHsL%`y+n9eV}{<3lWE-sltUqNs53-epV${{c#9V zl5J8rq-Z1Yp~8sR7DLX#or;p8atcrG+v%(Av+fJ)bMMn9w~M2f{$rwuKwd3%l&7Q2 zUYvLvdmG5s+dq-tXWFwjfHhnnaRSo7)xgw1UEr<2tpRC;*ht({O8#z)zZqiR)!r4p z{>;hQ$k+I-5!Rjjf#aO-{ASg?DXiIF1&ZeQGv4qI8B$Zh{2-_F>jakm-rn3%*a0GZLV#oo`N@yS2R~zSLHjhTO)g|eG9#u;}iXr zqxQXu2OB;5T^mCm;E&dT*nsGORH3piy+Er#g+O%SoUEFxbc3Qzly2p2ydZn9g9w5M zhX_(OQZ`Grw#Y>hR0+ad#8>gLf{a`@6)G@v$Q{@>Bt8TYtPKtmb08fiRUrLF3M`A8C|!RD=wEQf+##AyAarj9Vnt z-?#Jn7$O{{OY(}zMOkF8b9Py2RAqFBRjg`Ni&g*3x?AE}!X9xQ?M!p#4VsFX(3|F% zL=V*s{~AX4mog$TO!&K<^5r+BTy0MO~~k+JGeW@J3?gDULi8&9k9d&%PY%{X_+a- zNQQ+nTRB@i+k^#*b%aH;MZWc%wXa@96Q9FV_8!5=LH%95aotE=<_X+!*|hY6<@8fY zX~oDS!{nKMcWsYf|2!5l9pxR{?O!jdJDA&$TirYNqsEg7T%4~}$W}-a$XLk1$cV_9 zINzgIqwc@1eH*~j#WYHx9nn)KPMl+!sflhf{N`1>Z@@m>DN^84=hGUF-=dtjm!vpoD$3^i@^6}CZ z#cut2>GDZfWBmif#eqPHK!m_qhfjyKZ>f*}^V0L)Bk~i|gW^r+7h-fY+(|Skq+4Wq z)YpyyyRj+ui}~ZqF`XAKDGF-tBIoqJmcOnHCr|S;3;GBHurJUWuoKg3hZMILBnl)U zB$!Be1K$QTi%buHPkt}JWes~G8KtMEvLRoke|31Y0E>&+^?BsUoA~XTBp9oHpPjI1 zJp6eWg46kTSyS1@!G=sW7Hh1fS=dbUI&_^Ys%f+-+avxl_X^X-+|3g*4lQA_E8A(C zOE;nIC&4WgZI5}~(UfOpiL!L*dYm>^AMz9@h_7o;T0kX64GPuy>p_xh?s0l&V$E z9qVksP4fJFz1C>rivLC{Tg$z+zSgrg&-GHwe^uEY6#+xVLT;f2`-u#ds0D z@DX~{-2a;tI_w&n`CAx25tlK>x4{ukH0ss;LHdwCI})d1RcRH56#667Hmp_8yWQ_S z^vdkiwr6F@op=4FZQ_miCEH5OJZ8`(%^p*dehcL* z)w+BQ)t8R*bd1cB$AX9Qx7L@3KY~X7qpzdS6z`?ijZ+uVmYqkata#=TwVuva&hj_o zH^GS2h=`6Z90VYc11KOg1j45rv%Q*)V8Mq3WGGWk$ggZ(hn6PvG8{#! zA~ecy}6i z;%1UKH5^os)MbE@<0NvIv+Rrf%F<$X;*@f4mi~@)?1gu?f($RgF@PVhJX4XVKl%?F zGO0)1Xnvamqanvl)ms2It~Y3hv#?sNGVMjju64e$!ezvL)}+F@hA zzkAp3t~mCC`FSX{N;-Z0uRcHZJ}ZxMVf`2=LnuYI|J8)Pgn7r}#gfz&x0r=)j&U(` zFReLfNI5{>Z!agaUPr@Vy0VX1EN|(nEnt_vF`mkpoZTjBUFcWvkMU-0-W$J$uV%>` z@xk@{!&T{QayiX6OgrY+!B2eFF>P-??hgZDOT)E@Rx16^@)aFARdQ@nf`KgoI=ZXKy(8)>WY$cHBYv*GDzuDjyY*5#i??U6bjE7K+ zUup+CcIe#$aXP&J-F9ayxqB9g=O3Bl^pMqr@PZHSz^SVI?Q~to-dYs34PH|4);ZJd%G=79NIb(l%yVw8)&{(xb&DSs+*0qQ zZeP7Fn;x!vdwtXVJ|vT3*fWPv!uhd$DQ|Rq9rh3_|BzHdhT(_a>5a5+`Lcf8-?VN$ zC<@&ETE#niUF3H2Z@ZWoWEuh=?$%T`sB~|zbm%{RySLuE*v741I`;e%0u7oBNDXIY z324b`bW~`P)MUO#&XkTNo5gGoSII-DAg)1sf_U)zNrf6^9`wMtq4iD%xdP2CGBrzV z$cp~$H_ennwb2zhyty>@zf9$a{1KCBlQ#>x-N!wFAx_#;^;`8g^{>i|-wlgsi#s$* zl{c~s>yWhPOOq?b^($I@bY6lK;wmD}Uw?A66Fj59kO#MhE=g1j=nOQXn`?0V zbsVi96a10ZfYcCIb=3_>K4((H$gc7i%fZ5WCw&X;dit1c$>;c_ zSl7u@*eSg_cm-%2*nTvm?9+@t1+AD{cql366DcO1+qVpL#C`C+pE7Z2L;cq-!ygxgd!tLNKbF(s)x!7J}@AP(>cqyY=D)&}A z8(Ey-+w@SniJi=DPKybHjp5_-5`0*%&S-nz`ScVFU5T)ffy4cje>g}(y~T*dq{7=? zvzkkq-L9R)NJ+>Dhf`^q4<7vZrxA8^sC7_Jhq-@67tQC336V`Lk;4 zQB*pow>_O(-nysX!t;8_%ki2xYL(t|Z-d{Oq`cyyBJPA@rw*^qU4{KGf&8i}P}SoF zGAO_RW2*L>xrfm6;xfH6Sz zLxWz~gj4Ny#R-rG2NjXJ!F`gJl=+=H1e<_2C-FAvQitsun7cXZ;Ml~ns`87-xv#-^ zY>}xALIA=a=Hn-^oC9SZW(7tErfWF85%LwH^q&N|mT~bdgx!+;6e{m{>*kOqPDfM~ z9qK5)V?HX65RZpz$E&mbgY69_VtOU=BAP||UE159!`PH?2ay&Lb&<~z(UJL)k&*hb zmkEE9=;NLKq{ItQVUmwfttiOG&BWrxO{i&>ODWlW-=?;vjVVzr9w<6087p$P+GR4f zT(8pS_ zo#usXJ<=Yrj?yyY6XWKuG0_-i_{Nl3=J{+C`*eMBS>1RdU=bbti^|6?z3Js{ku&`w zQ4rhD^6ft5{;y;5TuSdg%swh37d<^d5k0a3n1{NZsz9g)BDA|gSarR`uOeV{{yscu zk?UBqUH0LS<1Fh*n_Jpvc*)+U?fY#zLpZYt+W|)79S>7J0)NPlU&IoZWV`4Y==l*O zeYD%;{}Sp_Z~w}M(1n!#DHC27&DhlIU6cM+khb^xfMyqKXKW{alWt#Quan$>Vv-4m z0*sKJ^;HEH94}5T_CrjxPs-?^{}aU}#vgKA%oY>HvrA^8z~mBswS z3i2|xBAtpJ^?GGYRqx9697h|ipn}5rpL;nY2Xz~Vb;sBhQZuQ3tH-7Oq#oUDG#ZTpPmFSvT#xx4=i3o0!B6XV`C zA-r+p_x3&$h+w@sZ-?B{WJj)<(IJo*dj+OJ+sEjj%i(uoTqdXFZU|&2Fh}o9U7PqW zxB7QBzO1p>ft4gNouh5edF9Nd_E%_nXmV65!~N>m{l<&qM@2A9m;fQ8;8#z%4=!&1 zys85e*{lAzT2u4k3AK5(#`Jdmo5$Cg$QZ_rV&09aN}49ET+{6z^4fjKVcOO_+q|{s z=^g&%2bLEmg74Lr0k5^D!Cp*JVZZccJNr9RUzypK`R8wo4`r|O);>R%ABR0ntaLII zmYOvm;N1Md#s-0)F_eTMkh-9Ih(G<@{E9?^lk>Aof=dd*=@YJ`xDp*3M7c6l=T)z@~QD(@A7>ihY-)!IaD-8^SxG(uK`7tB-iTo10H16u}DLnz( zf2ZxS?9@_HvRnR0yw>!lME$U@gLX}GMJ+#E`10-Y8=r~G1QaW~cJtI}+*4kDlv?1O zqPBjk7p&vpm_qP4o$j@+f9q4T;1$wM%02gP;pqmNMdQ9*Y;Vi_=H9Ic3^!ZU69XT| zwy~qdhzx_l&gVzwJ~zn`p)OjcbdQ3YXqroV>MemZ#@KKQiB3^`9ZC zgTFZGpu`Za`N~mLk_ncf`RC*fqk!zw(XkDukojX?nl3`?KxwOk=^tDG`R?vj4Py#|PGp z^)=_gL#^e=(KT*HGB|mq)~D95w!fClna4SGfBAs&ApanJAM+scpmpD$fts<2$wse8 z^H5t8Bn79P-P+`vqxor5pOIdU<`bGTXdi`vel&reel!ts69%GUkpA2mg#92Eq5=ZB z?;*TfS6&Nd=gzlV4IzsH-3DS~DP?&O$o4M?al#9Zm+32xO7=~F{hYC>50hLhwPt{=Q&a$z6=e`MoRxP$ne`- zY>1Nh6@~}}oJDvnwG6t453|cvTwiAshNVeF7S5L(_VCU7K)&PY()!=f)h1fYbu_K| zo`S1mE_~+h+^yc&;ujnJuw0|btj-hs&J(LQ7qId1@le8OP{JAN@2EdP|2+~7Cx#0m zwtz$bZ$C0g5b!LEL=1QVjSURE02dUB_TOQXXr%u=`zrE3Z~x!&rd@Ov3;dL+tJctd zt9s3H5kk_KJo*d_ez6QWQIDGJDM5?hv6&fq{K%b_vK2cP^$g`ALGlrrSA4jC$9AB_ zDNrEax z8Zdjz->Z#`dD3+F+V}2pOme+=E&7l%ai|@kUr6murQoHXHHF)6$#_3#K^s;G|H1v@F1>mB1G;vUj?Q5is^<+5?30h25 z#L0++x9Igcj-`(6MAyO`X{E*uJR#%>uS_3v`3-gz0>k{uS0OLG!*_Z#Hv<{M4Pz@y zrIXM)-c#wi$ zZMK5)*ss8`JB8!d!SKJac>7FTali%~F|Aq~1d+bO9Kuq|P{-LzeCI@U)TCZmANm~D z_=lp3m3pf*dJP5k%W)%>kc^EQlS5)+l}3V&z>Fy7Vo*Q%7dil(jLnDv>u-W|jYAED zpE3sA;nYq6kWt}!{fdMPVh>;R_+>m%2c{+K{89s~6%qC?d>z7s>6xr-vo4B@zVvd^G+O%GJdYK8xN3`h0 zxB4Cs^a|y$M2$Nfz91bXKl#-5O^8_iNV1k!Q>^sM*6E)3s%?Akb6LSBS8&0K&+C_B ztG(i?3;)xCGhIBwT7B83qtbn2_5qj6Hvb*<4UA@SWyxG3RZ#7yuTSKTv6En9J$HBd zYaxN>w25=`hw4JdDJ8gQp6dDexo>a~MvCHDAhAhmo~H z0|g^U!#1;oy#1mpPB`I6WXbk=s31>SjvzSf{8pHlZ~KZ_IX=9%XK_2blsda6FN+e# zmTxYrw7dxkoic1zUpZbqa}Ow?CS83X6wi^rZi$+{l;V?1lz9-3M)#~?Vk1(KJ-|ez z4Y_|lC&Xjz?M3zX2FKUKM?z;*5#?h9%!;G|k^aaiFBruvU7Ulyj>mRRy^4%V@C7+9 zdF*KMFE^hR1z(=!{+Ges-Moq&L=TVLgZ&;acp_wGj+JpS&fRK)m7PYZ28dwu@5h__Or(9A*I@RZZajHqO7J(q8T%ze4I(r={ zlvP%QQkz-ue7R*G!xfu>X464kC6D%(BhU-3+Oa195-eH1`vsTHLZu`rR&iyta!ka% zxu!M>>2Ltt54p$4tgyU2g`g1p1RXjZR;Of53DhbWvtG)L5A$`iQ^X&R`$G-XLfa zX1NAjzx5kGW~&Od1r%jR?MT7UP>f&HcQBV@sEZiU8s;(vOTMGm z7JjS{3LNTB>;FbzU@d`^(=oBxp^^Y8z(2pQd(qL%rd$!OJ6~~#CNiz8viOcrC;Wx!2<#Is>T0@FR4vF!6?ua{ee+=d zaRs*mH8sULtx%nleg34plFj{8AT&Y~~v-lwX0Vj_Y{Ag&GnbLP!-ooGLI0rsj zLq*m8vx^h(*!cKRopN%Tn}3*E?_Oz-fOJ&Hqd?ECgdC;?;vjn!sJ4EMKs z+A%UVaPcrPM{tx`b=U_-houjXd-RzYZM2m1n%AiTSv+{jO zQJ;|T+uMmg=BcxwAYM8pbJ#tOCo_VchxbZenpMcyzT@8n<+ATfh{h~YQ>w0>Y#WZ_rVZc#9vaR*hnVFq;xFwblD2l0l^~! zcXfS_@$FmIiNQ@)>qBh_;^CoEavGH16cC?;%FO1bCru+P$ls^FWsdnFH8mHF%+lc9 zWIt24ifvyBuhu<1KLb@rIkoVl4JL}^mi!zCW`9H^I+JI_D?{95JZr-y-M!4Qm zx|$Pkc^mA2n~}~ikm2rv!%9id(0kj4<1S0UuGTS&Be}i59v=G#Y(e9j+-J~5sKC|L znonRbqW{^6h>QZZ!1t-Q7gQl}pyK#{+!GB7l%%td{8q#JSZM@n)$g%P@Ug;5RQtgG zMjU-!$Jm%Yfl|05;Pw03$IfTu^%1J_?SRY$EZrLNCmZUfT~mQPyXl(t(6$lW>DP;kEGL*DwNjEu z2b>9i`?FSU+nsNy{(%XGh~M*vUMK|VEftW3JV|*sd>@$JMKzH(FD?#9LO$aZ_FIJ< zp^8WasK&Lk2S;ar8OEBShc(#I#=G^+CrIzq$0rFhY;m|aNf;eMzH_YphI>?ekg5n= zib3UD}%#n1-yk8(!J8U}iI_k4^7hDIKvn;Jv9_L{^niQI0lpjqS z1*l{xhL_VUW6KMVj^;#pU1ckSkMQrq=Hv=<%8S%7MUJiRqrbkC(v57c7BwyYeR&|_ zyQcRhwFS-<7)U_8XjHtLgR4!X#ei=+X>)rxU)X&)T&I0xB}OmZac3 zpZ30NZB6w0!O-9nev2r2o*~vo<%RcGgsWa)1xaIwEHnBr@+t7_eabPwqb!^^^M;(r zw@r77s<=t1xLKZ-;yycNj7k8?A~4s0oF%SL`N<+>nQJXUF(suN8q)L_9+(YOWwXd1 z;?(9e2>R(+5P>`+Zf{3hjprkQ*fP_{O{6^B{@(nb?3tJx%+u{` zu-8?x34C1F25%W`Wvz2qkbj|hJc@UlX@#c(Qm6^2z8w=;7p!99p)+BZ-mMjp{4K&R z4F{c)3uW_wMZgONlXfAba(UH=Rdg zts4LD)=TN^x2}o=zn@4XYkf)S8Zr|vf$+g;^of`KER2KBhns#5Fg;UB@4}JT!&s9h zL_AGIJwQngmX(>AZBVKRFiuQgy)^GB1vws7=;*WMTz|X?nRQCKC;EFtqw$mWw`1 zLYpAd^l z!9)Jlhn8$$aO_$?G*Cu_tyF`6yCVsOm;p@u&x-~8$ZFBb-_>Ue_{U0eS-6W|tPo3~ zfJBHaiOQ2IH7GCbYO19>rdQN1q>xndVl|RL5Y)7YlLFl$Ey&1G036*)Dnv+GTDs(Y zn)?H%=SSH*>YQXZ%`l49!H5WP!^65Dh|D1MiWmBjr%c^|@I9@mG52Y*`%P8Hh34x= zHg8S3fYkotPHyDgMR})b1dO3rVRA|S$7c9CG|SYRCbS4C z>DHTdS4~;|Z&q{gKgj0)7t(~s^jl$F4Uj?!6Dlfjuqk*>b6)4+_5i1R`xSOjP$8Y| z1DtJZsf(V;!eQpt?Gtp1zgpE|DSNKMs3*2cxROA7Ac9$4*|sbSAF9oSKWJb5Ly?26 z$2ISC;$Nu5y#$9hz!I)dfAodwq{d;RxBo;o=7HkuH>@|*DF!@<1h#Otm z%j-^MogI$I$-oZqkUw1cQ{`c+yT1?&K`@%+{}}}!$qQJ^3m;uUWh5?L<9HTY7cMAV z?FB#{*Z zX?EkWKhNjoPHZw$a1^8?OYUrW{{S)1F4J21G=I_;JTF5IJH@>(0ytVC^u!1_uZN z66Bb_*ddHr5I~~i{2%gTJu$D5fJH%_V}Ild#8odDWz){r09n%w%}f!v@03)~QWStN zn3h+RfJFQQjNJPCkY*_$F)c6$8uuXPKx)0w- zb^%S_g%y)#Fc_UV|A4!B{oSC0o}5bdzagd1goyrc4)K{nZ%C~maO@=MHMTYdIEU#w zC>a1(__ROcP+!)fXFNgjWZIa~UUhlCRtZmXJ3k84Ti?t;H05hOh_myT=jYR>%{5T5 z*oJvPBu2Lnz#-TOaa8=??)aax0lG8XYZ86&mCx^(UgvjuR`@(y{Z;u?dpC)Q)O3o+ zqY~g$HOFB6eGl&?fr75>MbO@Kb+PfDn^RU)VaDW5cAn)})OK8D<+}|O=$G?OrUJnm zUN&$=*Oktf&xwn-QWn}j4A&!hnx01Fz+iL?q_(r=By|8vfdOP}dLrPX6es0=hw}d- z7AIdV0ZUCI3DCyCvl6`2hFuZTg@Qcby(#?O>JM|+IGI=JQ9#AM3_qe`f}WuwLzRFh zVd{7^esnhK5rG5TC08RU;1TcKbicCS2V(^q+`m>R(ExrIkeED4sT~s_P8h24h(^n( z_Y3EVxUh@yw;O#Jc#_K3T?z#$U@%Q($+|}YuDCy%(O=z-_H=SG@1%!>f}mQi2$Zah zU&32;UwZ)cEz%rxrvudWY1SL=j{TsVI3UX0bier4l;$~!`ygn;hk&cU(6ci{>SqFc zYIK|~WJBI~XEMG-ZK2S7KUhB`isXCpz`*28X^c+B=)XTsqDc<5Tkxx+tzA7e5kk!o z??=Ft@e|H7-*;|#0&wim-angb;=l3}nkyj_06i+knY&8?3OV4o0bu3QBfViRH8Fbd zxzXVXk%p^e1<)-(^4>z9*&9hu`_fvmK@6skN~qOi|1*OcMa;ES^ZB{)8qjdK?&~b?~s9uh>1atl>rE?!!ugvuv7@tLdgki zlqm4C0s+&zWfL2Pa{ZXo30fP3%2nELz8tm*h zzCnsArt$O&;N!7|NtWLtA~CG!vvZh*h5;zdFEAU}{$pah5)<+sIVX>h8LN0~B4B`n zfy0v1(q1ncC0`*$;}dAVKD7()08s2Q7KYdH7^$xz*Wm#GNZpH-lM72w{*NnUX+E|9 zQETG@KD!ctPGC4HdTb9wNUo4rcajTEFT0NPyceRW{oR zt75NgSf2}N0_kTYlE2E1pQJhERXhGbQ}_~AFUNRDNJP>ikEf*Wa+`ZznAtHR4Z}_~ zju3AQ2faTg8y~9f@O4qLoa=jVS#YA9gYf*ulDnrjTiU>tf7GLT={CcJKsP-%+Yy z4MTtuZ8il6^CPobonD-^K=~uUi>`^iT8ng7uLGd=RMhkDubmBm)8Vn-AMBer>giVz zLs2GeO*k(jf@AAuKhG11AHd*ybMt{;{wJxSQ*%xU0?h<~?gm;%>O%UR<}QCX798~f z+9R9MI}@I5|1Zq6@y7jfP&*;e>n_-%Gj$mb&!;**oGBh|7uTrHS79OF^KSSg!E;5M@v?odPT-$pBGE?O|8T(b>O1Eh43A($p@^>z0p{xOjNT zxw}>VnK5D`kMWxBx$PbFx9iFZfZ_l zy0RRlW@fR869K?I9d=_%vPoOWBWQvDBQ;K4&sCF<^5p^Y-KySN!2GY)?ZZRu7tp@E z;nCzTvlP3cuq87QIPWQD*mz5NE^1~*4oYG4wTctkN*<)>$L${5Y0vl5&lR!E%&Fy; zRy!B?Mqkvw|3{y8@`L#ZaJ3cOfxdBPA=`&sA&pSPj7{R?gUXL)#R0BYN2H`T8F zXl8U|lqHuJnpZdT{-T<4vr+}%K?4b^+fBXc(|(+to$-%df64g(es%yV0QF85A4s`p zEfoOpy$Ez5dHc*{&$R9oqXkCmCAw&#{BJU{IQXeNGKpxlLK|zPwmll3J1M!8LN{1-B}X>?KTPER(6r0u;W~CY`L}{G^Gk5Y)DWJ1|Ta=H~#W2Xh``R4G-7?XbT(*u#e4fCA8X(%BaR$oI}t!=R@Kk}&BFUrEv30aq?=Jz=d8ki4^!|^EykCv|Dn12eg2Dw&B~3* z8?v_cwl3&fO{|hsPxq24o%qx+0r}Ql?9#g#=ghUv50H;hNWJ6;D8rYe^ME#dNagMM{8w^; zIeB1F(C~HmVd?hv7(nXy@dYPsK!gD(u-mcD(gmmR>ON^%RW_RDw| zJt)tB?E-cL50C(Ja?JwgJyOXxa|;lK+$)c#Q(o1AVw1pM%P%zb_%@} z${zfCP%)~?(-SMYiDxwk!c-GOFNozicTqeyL_|(Ke(Xx7Kb88umUFO5tfwouca(LH zRujCgwXxIJC%TpRPuk^`fH<+sK}CupX!wxYaN{i!?Yal?W)cknx}_B0fct!5$UOi) z=<EG2&(~LIhs>T zb#m<_2t!LrmE|qu*la!IOA@aW=G%+|BeNi=>~EF~WI4l!K?#7ZVD!k|e=WES>xbLT zxY1g=;+Mq*7=jNaaTvE(PWpaNqgMP)0*3y+SyC`k1TgL{w{f6P;_=BK z-V6ZrZVf^!(+Kg$HL)5{q3|dO;63ds+ax#DheVCwR(i)V8Q5ZEVDEZt%eisMDj@#E zOuw?-Za$HK%k=U=7Z&ID>1_IdSu8S(RrOZDL*4p+#)jEe0*+hBHN3-uBZjDmN9^xj zag~eG%&Y_zN_Jb9Z7Kk@d@FzR0x4o;)Zti-2g+Q-IXt9APxPVx;r7@a`yz0Mt@vb` z-H<0yazW=SkVCd&+=V}7>qADWS|Vr(Qt^Ga8zKecKUcDFjJ>joXCD>j8uC1{ne5VuP)Rxa zJX7{7oPiJC^>9IcB}hRl-=u_qLFQpJL^RcVq}a^v*-2<(DNi#9#{03l~MQN zP#Mx7Of`b--}#Jd18Llt0-w;?jy$eH8B?i|wiXY_vbEqLCdu)ADUzPuQ!*gvzuqLY z+CL$qoaW@_>{B^OZrL@+1jSu)*4{K?0gcSM=H$7IbM8eB1d&afo=JhNP(TuY|Gj0yOk!wYuBd9_aS}4(GR;dRn-8Eykt7sRRX{X^SiS-z%iCH)!i)BH z2N*$jq)*Jj?OY;$vXw7+#mW1!^#YD_!&s+jAKAe#BljAjEcmxoeLZ7sh)neEyOhs` z!NHI#b%jiN)77O;fE8aP_#E3aIT->h{m6w4z8X0}|1XMaGdve*HzP`QRqfxEv9D#s z>%U6e0RDi(R&EFBS_iX0#nUCQkDYF$6h%X|G&eWt@%g!m2bVbUly(TP-*>mijTh8` zWq_Y+2P(z;;~euPRZkkt@P9EVjV!(!=e|iXmn($2fPawyLZl-=$9d>5fz=+J zof|+ivbH9lV%nqS{SDO*6APCyk3h4AoK%SRsb=L~ys*l34znVh%0w)jc<2@s%-|hn zz(3ZN$D#PyMGTjO=}DDXFNctI$m-l}js_ zDtXef!p$bIg*AcY4_%^gj9%~TqQGZZ>$}aw$EcoQKKNWR+STrqCg0oepZJ9(>O(3P z{kLc+d}#F>QkCQ+|F@{$VgEHpaIIk{n?)0FV7Us%4kRb0-sb@#1FW3@;3WSR>VGSX zX4aUy)h4c)wXVj`GBhb~cBf`aKV~vNdIWFO2`RM;byzPvJ0+b2-batU*#XF^yj(}| zhtFq#=6|g^O77k?!u>yPmD2xbJ=AXX<_9Xsf+eDtHu16pSRDqE7FQ6f5HSe)zW~gE BFM$96 literal 0 HcmV?d00001 diff --git a/files/text_2.png b/files/text_2.png new file mode 100644 index 0000000000000000000000000000000000000000..93b7f192be6e2d3be8a2dc0769ea9c4fca6417fd GIT binary patch literal 9678 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 Date: Mon, 26 Mar 2018 07:14:40 -0400 Subject: [PATCH 37/47] Removed gitignore --- .gitignore | 106 ----------------------------------------------------- 1 file changed, 106 deletions(-) delete mode 100644 .gitignore diff --git a/.gitignore b/.gitignore deleted file mode 100644 index 9a14e8a..0000000 --- a/.gitignore +++ /dev/null @@ -1,106 +0,0 @@ -# Byte-compiled / optimized / DLL files -__pycache__/ -*.py[cod] -*$py.class - -# C extensions -*.so - -# Distribution / packaging -.Python -build/ -develop-eggs/ -dist/ -downloads/ -eggs/ -.eggs/ -lib/ -lib64/ -parts/ -sdist/ -var/ -wheels/ -*.egg-info/ -.installed.cfg -*.egg -MANIFEST - -# PyInstaller -# Usually these files are written by a python script from a template -# before PyInstaller builds the exe, so as to inject date/other infos into it. -*.manifest -*.spec - -# Installer logs -pip-log.txt -pip-delete-this-directory.txt - -# Unit test / coverage reports -htmlcov/ -.tox/ -.coverage -.coverage.* -.cache -nosetests.xml -coverage.xml -*.cover -.hypothesis/ - -# Translations -*.mo -*.pot - -# Django stuff: -*.log -.static_storage/ -.media/ -local_settings.py - -# Flask stuff: -instance/ -.webassets-cache - -# Scrapy stuff: -.scrapy - -# Sphinx documentation -docs/_build/ - -# PyBuilder -target/ - -# Jupyter Notebook -.ipynb_checkpoints - -# pyenv -.python-version - -# celery beat schedule file -celerybeat-schedule - -# SageMath parsed files -*.sage.py - -# Environments -.env -.venv -env/ -venv/ -ENV/ -env.bak/ -venv.bak/ - -# Spyder project settings -.spyderproject -.spyproject - -# Rope project settings -.ropeproject - -# mkdocs documentation -/site - -# mypy -.mypy_cache/ - -.DS_Store \ No newline at end of file From 4cc9b02b45eac1bf681e72593adf4aebb6eac61e Mon Sep 17 00:00:00 2001 From: MaloneGod <809829352@qq.com> Date: Tue, 27 Mar 2018 16:15:06 +0800 Subject: [PATCH 38/47] Update the visited list --- chapter16/multiprocess_queue.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/chapter16/multiprocess_queue.py b/chapter16/multiprocess_queue.py index caea096..df55f30 100644 --- a/chapter16/multiprocess_queue.py +++ b/chapter16/multiprocess_queue.py @@ -21,6 +21,8 @@ def task_delegator(taskQueue, foundUrlsQueue): for link in links: #Add new link to the taskQueue taskQueue.put(link) + #Add new link to the visited list + visited.append(link) def get_links(bsObj): links = bsObj.find('div', {'id':'bodyContent'}).find_all('a', href=re.compile('^(/wiki/)((?!:).)*$')) @@ -51,4 +53,4 @@ def scrape_article(taskQueue, foundUrlsQueue): processes.append(Process(target=scrape_article, args=(taskQueue, foundUrlsQueue,))) for p in processes: - p.start() \ No newline at end of file + p.start() From 57201f1dd4af9de353faa8f0b9cf6f627589be09 Mon Sep 17 00:00:00 2001 From: REMitchell Date: Sat, 9 Jun 2018 19:20:37 -0400 Subject: [PATCH 39/47] Added 2nd edition link, minor wording changes --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 9c34396..fc126cd 100644 --- a/README.md +++ b/README.md @@ -1,9 +1,9 @@ # Web Scraping with Python Code Samples -These code samples are for the book Web Scraping with Python +These code samples are for the book Web Scraping with Python 2nd Edition If you're looking for the first edition code files, they can be found in the v1 directory. Most code for the second edition is contained in Jupyter notebooks. Although these files can be viewed directly in your browser in Github, some formatting changes and oddities may occur. I recommend that you clone the repository, install Jupyter, and view them locally for the best experience. -The web changes, libraries update, and I not infrequently make mistakes or typos. If you think you've spotted an error, please feel free to make a pull request against this repository. \ No newline at end of file +The web changes, libraries update, and make mistakes and typos more frequently than I'd like to admit! If you think you've spotted an error, please feel free to make a pull request against this repository. From 8567533cf161aab4b86d2c927dfa9487604b203b Mon Sep 17 00:00:00 2001 From: remitchell Date: Tue, 19 Jun 2018 23:43:54 -0400 Subject: [PATCH 40/47] Title formatting --- Chapter03-web-crawlers.ipynb | 52 +++++++++++++++++------------------- 1 file changed, 25 insertions(+), 27 deletions(-) diff --git a/Chapter03-web-crawlers.ipynb b/Chapter03-web-crawlers.ipynb index aae002a..4aa9d99 100644 --- a/Chapter03-web-crawlers.ipynb +++ b/Chapter03-web-crawlers.ipynb @@ -862,7 +862,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "# # Retrieving Articles Only" + "## Retrieving Articles Only" ] }, { @@ -1309,24 +1309,27 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "# # Random Walk" + "## Random Walk" ] }, { "cell_type": "code", - "execution_count": 3, + "execution_count": 1, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "/wiki/Screen_Actors_Guild_Award_for_Outstanding_Performance_by_a_Cast_in_a_Motion_Picture\n", - "/wiki/Paul_Barber_(actor)\n", - "/wiki/Christine_Baranski\n", - "/wiki/Brendan_Fraser\n", - "/wiki/Derek_Jacobi\n", - "/wiki/Shea_Whigham\n" + "/wiki/MusicBrainz\n", + "/wiki/ICANN\n", + "/wiki/U.S._House_of_Representatives\n", + "/wiki/United_States_Copyright_Office\n", + "/wiki/U.S._representative_bibliography_(congressional_memoirs)\n", + "/wiki/United_States_Senate\n", + "/wiki/Richard_A._Baker_(historian)\n", + "/wiki/Robert_Byrd\n", + "/wiki/Washington_College_of_Law\n" ] }, { @@ -1336,15 +1339,14 @@ "traceback": [ "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", "\u001b[0;31mKeyboardInterrupt\u001b[0m Traceback (most recent call last)", - "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[1;32m 15\u001b[0m \u001b[0mnewArticle\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mlinks\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mrandom\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mrandint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;36m0\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mlen\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mlinks\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m-\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mattrs\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m'href'\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 16\u001b[0m \u001b[0mprint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mnewArticle\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 17\u001b[0;31m \u001b[0mlinks\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mgetLinks\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mnewArticle\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m", - "\u001b[0;32m\u001b[0m in \u001b[0;36mgetLinks\u001b[0;34m(articleUrl)\u001b[0m\n\u001b[1;32m 8\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0mgetLinks\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0marticleUrl\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 9\u001b[0m \u001b[0mhtml\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0murlopen\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'http://en.wikipedia.org{}'\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mformat\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0marticleUrl\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 10\u001b[0;31m \u001b[0mbs\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mBeautifulSoup\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mhtml\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m'html.parser'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 11\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mbs\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mfind\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'div'\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m{\u001b[0m\u001b[0;34m'id'\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m'bodyContent'\u001b[0m\u001b[0;34m}\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mfind_all\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'a'\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mhref\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mre\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mcompile\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'^(/wiki/)((?!:).)*$'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 12\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/bs4/__init__.py\u001b[0m in \u001b[0;36m__init__\u001b[0;34m(self, markup, features, builder, parse_only, from_encoding, exclude_encodings, **kwargs)\u001b[0m\n\u001b[1;32m 189\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 190\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mhasattr\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mmarkup\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m'read'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0;31m# It's a file-type object.\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 191\u001b[0;31m \u001b[0mmarkup\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mmarkup\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mread\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 192\u001b[0m elif len(markup) <= 256 and (\n\u001b[1;32m 193\u001b[0m \u001b[0;34m(\u001b[0m\u001b[0misinstance\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mmarkup\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mbytes\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;32mand\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0;34mb'<'\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mmarkup\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/http/client.py\u001b[0m in \u001b[0;36mread\u001b[0;34m(self, amt)\u001b[0m\n\u001b[1;32m 460\u001b[0m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 461\u001b[0m \u001b[0;32mtry\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 462\u001b[0;31m \u001b[0ms\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_safe_read\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mlength\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 463\u001b[0m \u001b[0;32mexcept\u001b[0m \u001b[0mIncompleteRead\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 464\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_close_conn\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/http/client.py\u001b[0m in \u001b[0;36m_safe_read\u001b[0;34m(self, amt)\u001b[0m\n\u001b[1;32m 610\u001b[0m \u001b[0ms\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m[\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 611\u001b[0m \u001b[0;32mwhile\u001b[0m \u001b[0mamt\u001b[0m \u001b[0;34m>\u001b[0m \u001b[0;36m0\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 612\u001b[0;31m \u001b[0mchunk\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mfp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mread\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mmin\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mamt\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mMAXAMOUNT\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 613\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0mchunk\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 614\u001b[0m \u001b[0;32mraise\u001b[0m \u001b[0mIncompleteRead\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34mb''\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mjoin\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0ms\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mamt\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/socket.py\u001b[0m in \u001b[0;36mreadinto\u001b[0;34m(self, b)\u001b[0m\n\u001b[1;32m 584\u001b[0m \u001b[0;32mwhile\u001b[0m \u001b[0;32mTrue\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 585\u001b[0m \u001b[0;32mtry\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 586\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_sock\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mrecv_into\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mb\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 587\u001b[0m \u001b[0;32mexcept\u001b[0m \u001b[0mtimeout\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 588\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_timeout_occurred\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;32mTrue\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/ssl.py\u001b[0m in \u001b[0;36mrecv_into\u001b[0;34m(self, buffer, nbytes, flags)\u001b[0m\n\u001b[1;32m 1000\u001b[0m \u001b[0;34m\"non-zero flags not allowed in calls to recv_into() on %s\"\u001b[0m \u001b[0;34m%\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1001\u001b[0m self.__class__)\n\u001b[0;32m-> 1002\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mread\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mnbytes\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mbuffer\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 1003\u001b[0m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1004\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0msocket\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mrecv_into\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mbuffer\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mnbytes\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mflags\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/ssl.py\u001b[0m in \u001b[0;36mread\u001b[0;34m(self, len, buffer)\u001b[0m\n\u001b[1;32m 863\u001b[0m \u001b[0;32mraise\u001b[0m \u001b[0mValueError\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"Read on closed or unwrapped SSL socket.\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 864\u001b[0m \u001b[0;32mtry\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 865\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_sslobj\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mread\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mlen\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mbuffer\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 866\u001b[0m \u001b[0;32mexcept\u001b[0m \u001b[0mSSLError\u001b[0m \u001b[0;32mas\u001b[0m \u001b[0mx\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 867\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mx\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m0\u001b[0m\u001b[0;34m]\u001b[0m \u001b[0;34m==\u001b[0m \u001b[0mSSL_ERROR_EOF\u001b[0m \u001b[0;32mand\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msuppress_ragged_eofs\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/ssl.py\u001b[0m in \u001b[0;36mread\u001b[0;34m(self, len, buffer)\u001b[0m\n\u001b[1;32m 623\u001b[0m \"\"\"\n\u001b[1;32m 624\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mbuffer\u001b[0m \u001b[0;32mis\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0;32mNone\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 625\u001b[0;31m \u001b[0mv\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_sslobj\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mread\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mlen\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mbuffer\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 626\u001b[0m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 627\u001b[0m \u001b[0mv\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_sslobj\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mread\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mlen\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[1;32m 15\u001b[0m \u001b[0mnewArticle\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mlinks\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mrandom\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mrandint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;36m0\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mlen\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mlinks\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m-\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mattrs\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m'href'\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 16\u001b[0m \u001b[0mprint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mnewArticle\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 17\u001b[0;31m \u001b[0mlinks\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mgetLinks\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mnewArticle\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m", + "\u001b[0;32m\u001b[0m in \u001b[0;36mgetLinks\u001b[0;34m(articleUrl)\u001b[0m\n\u001b[1;32m 8\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0mgetLinks\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0marticleUrl\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 9\u001b[0m \u001b[0mhtml\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0murlopen\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'http://en.wikipedia.org{}'\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mformat\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0marticleUrl\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 10\u001b[0;31m \u001b[0mbs\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mBeautifulSoup\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mhtml\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m'html.parser'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 11\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mbs\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mfind\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'div'\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m{\u001b[0m\u001b[0;34m'id'\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m'bodyContent'\u001b[0m\u001b[0;34m}\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mfind_all\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'a'\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mhref\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mre\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mcompile\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'^(/wiki/)((?!:).)*$'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 12\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/bs4/__init__.py\u001b[0m in \u001b[0;36m__init__\u001b[0;34m(self, markup, features, builder, parse_only, from_encoding, exclude_encodings, **kwargs)\u001b[0m\n\u001b[1;32m 213\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mreset\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 214\u001b[0m \u001b[0;32mtry\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 215\u001b[0;31m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_feed\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 216\u001b[0m \u001b[0;32mbreak\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 217\u001b[0m \u001b[0;32mexcept\u001b[0m \u001b[0mParserRejectedMarkup\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/bs4/__init__.py\u001b[0m in \u001b[0;36m_feed\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 237\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mbuilder\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mreset\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 238\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 239\u001b[0;31m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mbuilder\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mfeed\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mmarkup\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 240\u001b[0m \u001b[0;31m# Close out any unfinished strings and close all the open tags.\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 241\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mendData\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/bs4/builder/_htmlparser.py\u001b[0m in \u001b[0;36mfeed\u001b[0;34m(self, markup)\u001b[0m\n\u001b[1;32m 162\u001b[0m \u001b[0mparser\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msoup\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msoup\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 163\u001b[0m \u001b[0;32mtry\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 164\u001b[0;31m \u001b[0mparser\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mfeed\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mmarkup\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 165\u001b[0m \u001b[0;32mexcept\u001b[0m \u001b[0mHTMLParseError\u001b[0m \u001b[0;32mas\u001b[0m \u001b[0me\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 166\u001b[0m warnings.warn(RuntimeWarning(\n", + "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/html/parser.py\u001b[0m in \u001b[0;36mfeed\u001b[0;34m(self, data)\u001b[0m\n\u001b[1;32m 109\u001b[0m \"\"\"\n\u001b[1;32m 110\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mrawdata\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mrawdata\u001b[0m \u001b[0;34m+\u001b[0m \u001b[0mdata\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 111\u001b[0;31m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mgoahead\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;36m0\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 112\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 113\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0mclose\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/html/parser.py\u001b[0m in \u001b[0;36mgoahead\u001b[0;34m(self, end)\u001b[0m\n\u001b[1;32m 164\u001b[0m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 165\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mhandle_data\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mrawdata\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mi\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0mj\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 166\u001b[0;31m \u001b[0mi\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mupdatepos\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mi\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mj\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 167\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mi\u001b[0m \u001b[0;34m==\u001b[0m \u001b[0mn\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0;32mbreak\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 168\u001b[0m \u001b[0mstartswith\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mrawdata\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mstartswith\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/_markupbase.py\u001b[0m in \u001b[0;36mupdatepos\u001b[0;34m(self, i, j)\u001b[0m\n\u001b[1;32m 51\u001b[0m \u001b[0mrawdata\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mrawdata\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 52\u001b[0m \u001b[0mnlines\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mrawdata\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mcount\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"\\n\"\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mi\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mj\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 53\u001b[0;31m \u001b[0;32mif\u001b[0m \u001b[0mnlines\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 54\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mlineno\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mlineno\u001b[0m \u001b[0;34m+\u001b[0m \u001b[0mnlines\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 55\u001b[0m \u001b[0mpos\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mrawdata\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mrindex\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"\\n\"\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mi\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mj\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;31m# Should not fail\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;31mKeyboardInterrupt\u001b[0m: " ] } @@ -1373,7 +1375,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "# # Recursively crawling an entire site" + "## Recursively crawling an entire site" ] }, { @@ -1451,7 +1453,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "# # Collecting Data Across an Entire Site" + "## Collecting Data Across an Entire Site" ] }, { @@ -1563,12 +1565,10 @@ ] }, { - "cell_type": "code", - "execution_count": 7, + "cell_type": "markdown", "metadata": {}, - "outputs": [], "source": [ - "# # Crawling across the Internet" + "## Crawling across the Internet" ] }, { @@ -1663,10 +1663,8 @@ ] }, { - "cell_type": "code", - "execution_count": 7, + "cell_type": "markdown", "metadata": {}, - "outputs": [], "source": [ "## Collect all External Links from a Site" ] From ad8848eec8428c31dec044144b3e5872a9c22d4d Mon Sep 17 00:00:00 2001 From: remitchell Date: Tue, 19 Jun 2018 23:44:03 -0400 Subject: [PATCH 41/47] Indenting correction --- Chapter06_StoringData.ipynb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Chapter06_StoringData.ipynb b/Chapter06_StoringData.ipynb index 212696e..f82e8cc 100644 --- a/Chapter06_StoringData.ipynb +++ b/Chapter06_StoringData.ipynb @@ -152,7 +152,7 @@ " csvRow = []\n", " for cell in row.findAll(['td', 'th']):\n", " csvRow.append(cell.get_text())\n", - " writer.writerow(csvRow)\n", + " writer.writerow(csvRow)\n", "finally:\n", " csvFile.close()" ] From d944b0014a3fc73769c02901481f60482b3ea9df Mon Sep 17 00:00:00 2001 From: remitchell Date: Tue, 30 Oct 2018 08:36:29 -0400 Subject: [PATCH 42/47] Updated code to remove PhantomJS, add headless Chrome --- Chapter11-JavaScript.ipynb | 90 ++++++++++++-- Chapter14-ScrapingTraps.ipynb | 40 ++++-- Chapter15_Testing.ipynb | 205 ++++++++++++++++--------------- Chapter17_ScrapingRemotely.ipynb | 101 +++++++++++++++ 4 files changed, 319 insertions(+), 117 deletions(-) create mode 100644 Chapter17_ScrapingRemotely.ipynb diff --git a/Chapter11-JavaScript.ipynb b/Chapter11-JavaScript.ipynb index 57a13ef..b7f1943 100644 --- a/Chapter11-JavaScript.ipynb +++ b/Chapter11-JavaScript.ipynb @@ -4,13 +4,78 @@ "cell_type": "code", "execution_count": 1, "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Here is some important text you want to retrieve!\n", + "A button to click!\n" + ] + } + ], + "source": [ + "from selenium import webdriver\n", + "from selenium.webdriver.chrome.options import Options\n", + "import time\n", + "\n", + "chrome_options = Options()\n", + "chrome_options.add_argument(\"--headless\")\n", + "driver = webdriver.Chrome(\n", + " executable_path='drivers/chromedriver', \n", + " options=chrome_options)\n", + "driver.get('http://pythonscraping.com/pages/javascript/ajaxDemo.html')\n", + "time.sleep(3)\n", + "print(driver.find_element_by_id('content').text)\n", + "driver.close()" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Here is some important text you want to retrieve!\n", + "A button to click!\n" + ] + } + ], + "source": [ + "from selenium import webdriver\n", + "from selenium.webdriver.common.by import By\n", + "from selenium.webdriver.support.ui import WebDriverWait\n", + "from selenium.webdriver.support import expected_conditions as EC\n", + "\n", + "chrome_options = Options()\n", + "chrome_options.add_argument(\"--headless\")\n", + "driver = webdriver.Chrome(\n", + " executable_path='drivers/chromedriver',\n", + " options=chrome_options)\n", + "\n", + "driver.get('http://pythonscraping.com/pages/javascript/ajaxDemo.html')\n", + "try:\n", + " element = WebDriverWait(driver, 10).until(\n", + " EC.presence_of_element_located((By.ID, 'loadedButton')))\n", + "finally:\n", + " print(driver.find_element_by_id('content').text)\n", + " driver.close()" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Timing out after 10 seconds and returning\n", - "\n", + "\n", "The Destination Page!\n", "\n", "\n", @@ -23,9 +88,10 @@ ], "source": [ "from selenium import webdriver\n", - "import time\n", + "from selenium.webdriver.chrome.options import Options\n", "from selenium.webdriver.remote.webelement import WebElement\n", "from selenium.common.exceptions import StaleElementReferenceException\n", + "import time\n", "\n", "def waitForLoad(driver):\n", " elem = driver.find_element_by_tag_name(\"html\")\n", @@ -40,16 +106,20 @@ " elem == driver.find_element_by_tag_name(\"html\")\n", " except StaleElementReferenceException:\n", " return\n", - "\n", - "driver = webdriver.PhantomJS(executable_path='drivers/phantomjs/phantomjs-2.1.1-macosx/bin/phantomjs')\n", + "chrome_options = Options()\n", + "chrome_options.add_argument(\"--headless\")\n", + "driver = webdriver.Chrome(\n", + " executable_path='drivers/chromedriver',\n", + " options=chrome_options)\n", "driver.get(\"http://pythonscraping.com/pages/javascript/redirectDemo1.html\")\n", "waitForLoad(driver)\n", - "print(driver.page_source)" + "print(driver.page_source)\n", + "driver.close()" ] }, { "cell_type": "code", - "execution_count": 6, + "execution_count": 9, "metadata": {}, "outputs": [ { @@ -63,11 +133,15 @@ "source": [ "from selenium.webdriver.common.by import By\n", "from selenium.webdriver.support.ui import WebDriverWait\n", + "from selenium.webdriver.chrome.options import Options\n", "from selenium.webdriver.support import expected_conditions as EC\n", "from selenium.common.exceptions import TimeoutException\n", "\n", - "driver = webdriver.PhantomJS(\n", - " executable_path='drivers/phantomjs/phantomjs-2.1.1-macosx/bin/phantomjs')\n", + "chrome_options = Options()\n", + "chrome_options.add_argument(\"--headless\")\n", + "driver = webdriver.Chrome(\n", + " executable_path='drivers/chromedriver', \n", + " options=chrome_options)\n", "driver.get('http://pythonscraping.com/pages/javascript/redirectDemo1.html')\n", "try:\n", " bodyElement = WebDriverWait(driver, 15).until(EC.presence_of_element_located(\n", diff --git a/Chapter14-ScrapingTraps.ipynb b/Chapter14-ScrapingTraps.ipynb index aececb2..2756ef7 100644 --- a/Chapter14-ScrapingTraps.ipynb +++ b/Chapter14-ScrapingTraps.ipynb @@ -53,20 +53,25 @@ }, { "cell_type": "code", - "execution_count": 7, + "execution_count": 1, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "[{'domain': '.pythonscraping.com', 'expires': 'Sat, 27 Jan 2018 21:46:48 GMT', 'expiry': 1517089608, 'httponly': False, 'name': '_gat', 'path': '/', 'secure': False, 'value': '1'}, {'domain': '.pythonscraping.com', 'expires': 'Sun, 28 Jan 2018 21:45:48 GMT', 'expiry': 1517175948, 'httponly': False, 'name': '_gid', 'path': '/', 'secure': False, 'value': 'GA1.2.1903552212.1517089549'}, {'domain': '.pythonscraping.com', 'expires': 'Mon, 27 Jan 2020 21:45:48 GMT', 'expiry': 1580161548, 'httponly': False, 'name': '_ga', 'path': '/', 'secure': False, 'value': 'GA1.2.1362930272.1517089549'}, {'domain': 'pythonscraping.com', 'httponly': False, 'name': 'has_js', 'path': '/', 'secure': False, 'value': '1'}]\n" + "[{'domain': '.pythonscraping.com', 'expiry': 1540863803, 'httpOnly': False, 'name': '_gid', 'path': '/', 'secure': False, 'value': 'GA1.2.358315088.1540777403'}, {'domain': '.pythonscraping.com', 'expiry': 1603849403, 'httpOnly': False, 'name': '_ga', 'path': '/', 'secure': False, 'value': 'GA1.2.1302028449.1540777403'}, {'domain': '.pythonscraping.com', 'expiry': 1540777463, 'httpOnly': False, 'name': '_gat', 'path': '/', 'secure': False, 'value': '1'}, {'domain': 'pythonscraping.com', 'httpOnly': False, 'name': 'has_js', 'path': '/', 'secure': False, 'value': '1'}]\n" ] } ], "source": [ "from selenium import webdriver\n", - "driver = webdriver.PhantomJS(executable_path='drivers/phantomjs/phantomjs-2.1.1-macosx/bin/phantomjs')\n", + "from selenium.webdriver.chrome.options import Options\n", + "chrome_options = Options()\n", + "chrome_options.add_argument(\"--headless\")\n", + "driver = webdriver.Chrome(\n", + " executable_path='drivers/chromedriver', \n", + " chrome_options=chrome_options)\n", "driver.get('http://pythonscraping.com')\n", "driver.implicitly_wait(1)\n", "print(driver.get_cookies())" @@ -74,34 +79,41 @@ }, { "cell_type": "code", - "execution_count": 12, + "execution_count": 6, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "[{'domain': '.pythonscraping.com', 'expires': 'Sun, 28 Jan 2018 21:51:09 GMT', 'expiry': 1517176269, 'httponly': False, 'name': '_gid', 'path': '/', 'secure': False, 'value': 'GA1.2.2130634883.1517089865'}, {'domain': '.pythonscraping.com', 'expires': 'Mon, 27 Jan 2020 21:51:09 GMT', 'expiry': 1580161869, 'httponly': False, 'name': '_ga', 'path': '/', 'secure': False, 'value': 'GA1.2.1559626153.1517089865'}, {'domain': 'pythonscraping.com', 'httponly': False, 'name': 'has_js', 'path': '/', 'secure': False, 'value': '1'}, {'domain': '.pythonscraping.com', 'httponly': False, 'name': 'has_js', 'path': '/', 'secure': False, 'value': '1'}, {'domain': '.pythonscraping.com', 'expires': 'Sat, 27 Jan 2018 21:52:05 GMT', 'expiry': 1517107925, 'httponly': False, 'name': '_gat', 'path': '/', 'secure': False, 'value': '1'}]\n" + "[{'domain': '.pythonscraping.com', 'expiry': 1540864964, 'httpOnly': False, 'name': '_gid', 'path': '/', 'secure': False, 'value': 'GA1.2.819982224.1540778565'}, {'domain': '.pythonscraping.com', 'expiry': 1603850564, 'httpOnly': False, 'name': '_ga', 'path': '/', 'secure': False, 'value': 'GA1.2.864755518.1540778565'}, {'domain': '.pythonscraping.com', 'expiry': 1540778624, 'httpOnly': False, 'name': '_gat', 'path': '/', 'secure': False, 'value': '1'}, {'domain': 'pythonscraping.com', 'httpOnly': False, 'name': 'has_js', 'path': '/', 'secure': False, 'value': '1'}]\n", + "[{'domain': 'pythonscraping.com', 'httpOnly': False, 'name': 'has_js', 'path': '/', 'secure': False, 'value': '1'}, {'domain': '.pythonscraping.com', 'expiry': 1540778624, 'httpOnly': False, 'name': '_gat', 'path': '/', 'secure': False, 'value': '1'}, {'domain': '.pythonscraping.com', 'expiry': 1603850569, 'httpOnly': False, 'name': '_ga', 'path': '/', 'secure': False, 'value': 'GA1.2.864755518.1540778565'}, {'domain': '.pythonscraping.com', 'expiry': 1540864969, 'httpOnly': False, 'name': '_gid', 'path': '/', 'secure': False, 'value': 'GA1.2.819982224.1540778565'}]\n" ] } ], "source": [ "from selenium import webdriver\n", + "from selenium.webdriver.chrome.options import Options\n", + "\n", + "chrome_options = Options()\n", + "chrome_options.add_argument(\"--headless\")\n", "\n", - "phantomPath = 'drivers/phantomjs/phantomjs-2.1.1-macosx/bin/phantomjs'\n", - "driver = webdriver.PhantomJS(executable_path=phantomPath)\n", + "driver = webdriver.Chrome(\n", + " executable_path='drivers/chromedriver', \n", + " chrome_options=chrome_options)\n", "driver.get('http://pythonscraping.com')\n", "driver.implicitly_wait(1)\n", "\n", "savedCookies = driver.get_cookies()\n", "print(savedCookies)\n", "\n", - "driver2 = webdriver.PhantomJS(executable_path=phantomPath)\n", + "driver2 = webdriver.Chrome(\n", + " executable_path='drivers/chromedriver',\n", + " chrome_options=chrome_options)\n", + "\n", "driver2.get('http://pythonscraping.com')\n", "driver2.delete_all_cookies()\n", "for cookie in savedCookies:\n", - " if not cookie['domain'].startswith('.'):\n", - " cookie['domain'] = '.{}'.format(cookie['domain'])\n", " driver2.add_cookie(cookie)\n", "\n", "driver2.get('http://pythonscraping.com')\n", @@ -111,7 +123,7 @@ }, { "cell_type": "code", - "execution_count": 13, + "execution_count": 5, "metadata": {}, "outputs": [ { @@ -127,9 +139,11 @@ "source": [ "from selenium import webdriver\n", "from selenium.webdriver.remote.webelement import WebElement\n", + "from selenium.webdriver.chrome.options import Options\n", "\n", - "driver = webdriver.PhantomJS(\n", - " executable_path='drivers/phantomjs/phantomjs-2.1.1-macosx/bin/phantomjs')\n", + "driver = webdriver.Chrome(\n", + " executable_path='drivers/chromedriver',\n", + " chrome_options=chrome_options)\n", "driver.get('http://pythonscraping.com/pages/itsatrap.html')\n", "links = driver.find_elements_by_tag_name('a')\n", "for link in links:\n", diff --git a/Chapter15_Testing.ipynb b/Chapter15_Testing.ipynb index 39b981c..18b76e0 100644 --- a/Chapter15_Testing.ipynb +++ b/Chapter15_Testing.ipynb @@ -2,36 +2,9 @@ "cells": [ { "cell_type": "code", - "execution_count": 18, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "." - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Setting up the test\n", - "Tearing down the test\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\n", - "----------------------------------------------------------------------\n", - "Ran 1 test in 0.001s\n", - "\n", - "OK\n" - ] - } - ], + "outputs": [], "source": [ "import unittest\n", "\n", @@ -52,7 +25,7 @@ }, { "cell_type": "code", - "execution_count": 1, + "execution_count": 2, "metadata": {}, "outputs": [ { @@ -61,7 +34,7 @@ "text": [ "..\n", "----------------------------------------------------------------------\n", - "Ran 2 tests in 0.493s\n", + "Ran 2 tests in 0.838s\n", "\n", "OK\n" ] @@ -101,45 +74,41 @@ }, { "cell_type": "code", - "execution_count": 3, + "execution_count": 10, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ + "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/bs4/builder/_htmlparser.py:54: ResourceWarning: unclosed \n", + " attr_dict = {}\n", "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/ipykernel_launcher.py:16: DeprecationWarning: Please use assertEqual instead.\n", " app.launch_new_instance()\n", - "." + "F\n", + "======================================================================\n", + "FAIL: test_PageProperties (__main__.TestWikipedia)\n", + "----------------------------------------------------------------------\n", + "Traceback (most recent call last):\n", + " File \"\", line 16, in test_PageProperties\n", + " self.assertEquals(titles[0], titles[1])\n", + "AssertionError: \"list of monty python's flying circus episodes\" != 'the bishop (monty python)'\n", + "- list of monty python's flying circus episodes\n", + "+ the bishop (monty python)\n", + "\n", + "\n", + "----------------------------------------------------------------------\n", + "Ran 1 test in 3.099s\n", + "\n", + "FAILED (failures=1)\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ - "Done!\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\n", - "----------------------------------------------------------------------\n", - "Ran 1 test in 11.476s\n", - "\n", - "OK\n" + "Once deleted, variables cannot be recovered. Proceed (y/[n])? y\n" ] - }, - { - "data": { - "text/plain": [ - "" - ] - }, - "execution_count": 3, - "metadata": {}, - "output_type": "execute_result" } ], "source": [ @@ -177,7 +146,7 @@ " return False\n", "\n", " def getNextLink(self):\n", - " #Returns random link on page, using technique from Chapter 3\n", + " # Returns random link on page, using technique from Chapter 3\n", " links = self.bs.find('div', {'id':'bodyContent'}).find_all('a', href=re.compile('^(/wiki/)((?!:).)*$'))\n", " randomLink = random.SystemRandom().choice(links)\n", " return 'https://wikipedia.org{}'.format(randomLink.attrs['href'])\n", @@ -190,26 +159,29 @@ }, { "cell_type": "code", - "execution_count": 5, + "execution_count": 9, "metadata": {}, "outputs": [ { - "ename": "IndentationError", - "evalue": "unexpected indent (, line 22)", - "output_type": "error", - "traceback": [ - "\u001b[0;36m File \u001b[0;32m\"\"\u001b[0;36m, line \u001b[0;32m22\u001b[0m\n\u001b[0;31m .click(firstnameField)\u001b[0m\n\u001b[0m ^\u001b[0m\n\u001b[0;31mIndentationError\u001b[0m\u001b[0;31m:\u001b[0m unexpected indent\n" + "name": "stdout", + "output_type": "stream", + "text": [ + "Hello there, Ryan Mitchell!\n" ] } ], "source": [ "from selenium import webdriver\n", - "from selenium.webdriver.remote.webelement import WebElement\n", "from selenium.webdriver.common.keys import Keys\n", "from selenium.webdriver import ActionChains\n", + "from selenium.webdriver.chrome.options import Options\n", "\n", + "chrome_options = Options()\n", + "chrome_options.add_argument(\"--headless\")\n", "\n", - "driver = webdriver.PhantomJS(executable_path='drivers/phantomjs/phantomjs')\n", + "driver = webdriver.Chrome(\n", + " executable_path='drivers/chromedriver',\n", + " options=chrome_options)\n", "driver.get('http://pythonscraping.com/pages/files/form.html')\n", "\n", "firstnameField = driver.find_element_by_name('firstname')\n", @@ -217,14 +189,14 @@ "submitButton = driver.find_element_by_id('submit')\n", "\n", "### METHOD 1 ###\n", - "#firstnameField.send_keys('Ryan')\n", + "firstnameField.send_keys('Ryan')\n", "lastnameField.send_keys('Mitchell')\n", "submitButton.click()\n", "################\n", "\n", "### METHOD 2 ###\n", - "actions = ActionChains(driver).click(firstnameField).send_keys('Ryan').click(lastnameField).send_keys('Mitchell').send_keys(Keys.RETURN)\n", - "actions.perform()\n", + "#actions = ActionChains(driver).click(firstnameField).send_keys('Ryan').click(lastnameField).send_keys('Mitchell').send_keys(Keys.RETURN)\n", + "#actions.perform()\n", "################\n", "\n", "print(driver.find_element_by_tag_name('body').text)\n", @@ -234,7 +206,7 @@ }, { "cell_type": "code", - "execution_count": 2, + "execution_count": 7, "metadata": { "scrolled": true }, @@ -243,43 +215,25 @@ "name": "stderr", "output_type": "stream", "text": [ - "F" + ".\n", + "----------------------------------------------------------------------\n", + "Ran 1 test in 1.938s\n", + "\n", + "OK\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ - "Tearing down the test\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\n", - "======================================================================\n", - "FAIL: test_drag (__main__.TestAddition)\n", - "----------------------------------------------------------------------\n", - "Traceback (most recent call last):\n", - " File \"\", line 21, in test_drag\n", - " self.assertEqual(\"You are definitely not a bot!\", self.driver.find_element_by_id(\"message\").text)\n", - "AssertionError: 'You are definitely not a bot!' != 'Prove you are not a bot, by dragging the [38 chars]rea!'\n", - "- You are definitely not a bot!\n", - "+ Prove you are not a bot, by dragging the square from the blue area to the red area!\n", - "\n", - "\n", - "----------------------------------------------------------------------\n", - "Ran 1 test in 4.681s\n", - "\n", - "FAILED (failures=1)\n" + "Once deleted, variables cannot be recovered. Proceed (y/[n])? y\n" ] } ], "source": [ "from selenium import webdriver\n", - "from selenium.webdriver.remote.webelement import WebElement\n", "from selenium.webdriver import ActionChains\n", + "from selenium.webdriver.chrome.options import Options\n", "import unittest\n", "\n", "\n", @@ -287,13 +241,16 @@ " driver = None\n", "\n", " def setUp(self):\n", - " self.driver = webdriver.PhantomJS(\n", - " executable_path='drivers/phantomjs/phantomjs')\n", + " chrome_options = Options()\n", + " chrome_options.add_argument(\"--headless\")\n", + " self.driver = webdriver.Chrome(\n", + " executable_path='drivers/chromedriver',\n", + " options=chrome_options)\n", " url = 'http://pythonscraping.com/pages/javascript/draggableDemo.html'\n", " self.driver.get(url)\n", "\n", " def tearDown(self):\n", - " print(\"Tearing down the test\")\n", + " self.driver.close()\n", "\n", " def test_drag(self):\n", " element = self.driver.find_element_by_id(\"draggable\")\n", @@ -303,6 +260,62 @@ " self.assertEqual(\"You are definitely not a bot!\",\n", " self.driver.find_element_by_id(\"message\").text)\n", "\n", + "if __name__ == '__main__':\n", + " unittest.main(argv=[''], exit=False)\n", + " %reset" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + ".\n", + "----------------------------------------------------------------------\n", + "Ran 1 test in 1.940s\n", + "\n", + "OK\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Once deleted, variables cannot be recovered. Proceed (y/[n])? y\n" + ] + } + ], + "source": [ + "from selenium import webdriver\n", + "from selenium.webdriver import ActionChains\n", + "from selenium.webdriver.chrome.options import Options\n", + "import unittest\n", + "\n", + "class TestDragAndDrop(unittest.TestCase):\n", + " driver = None\n", + " def setUp(self):\n", + " chrome_options = Options()\n", + " chrome_options.add_argument(\"--headless\")\n", + " self.driver = webdriver.Chrome(\n", + " executable_path='drivers/chromedriver',\n", + " options=chrome_options)\n", + " url = 'http://pythonscraping.com/pages/javascript/draggableDemo.html'\n", + " self.driver.get(url)\n", + "\n", + " def tearDown(self):\n", + " self.driver.close()\n", + "\n", + " def test_drag(self):\n", + " element = self.driver.find_element_by_id('draggable')\n", + " target = self.driver.find_element_by_id('div2')\n", + " actions = ActionChains(self.driver)\n", + " actions.drag_and_drop(element, target).perform()\n", + " self.assertEqual('You are definitely not a bot!',\n", + " self.driver.find_element_by_id('message').text)\n", "\n", "if __name__ == '__main__':\n", " unittest.main(argv=[''], exit=False)\n", diff --git a/Chapter17_ScrapingRemotely.ipynb b/Chapter17_ScrapingRemotely.ipynb new file mode 100644 index 0000000..a33f33d --- /dev/null +++ b/Chapter17_ScrapingRemotely.ipynb @@ -0,0 +1,101 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "b'217.182.168.178\\n'\n" + ] + } + ], + "source": [ + "# Must have the TOR service running on port 9150 while running this\n", + "import socks\n", + "import socket\n", + "from urllib.request import urlopen\n", + "\n", + "socks.set_default_proxy(socks.SOCKS5, \"localhost\", 9150)\n", + "socket.socket = socks.socksocket\n", + "print(urlopen('http://icanhazip.com').read())" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "
217.182.168.178\n",
+      "
\n" + ] + } + ], + "source": [ + "from selenium import webdriver\n", + "from selenium.webdriver.chrome.options import Options\n", + "\n", + "chrome_options = Options()\n", + "chrome_options.add_argument(\"--headless\")\n", + "chrome_options.add_argument(\"--proxy-server=socks5://127.0.0.1:9150\")\n", + "driver = webdriver.Chrome(executable_path='drivers/chromedriver', options=chrome_options)\n", + "\n", + "driver.get('http://icanhazip.com')\n", + "print(driver.page_source)\n", + "driver.close()" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Once deleted, variables cannot be recovered. Proceed (y/[n])? y\n" + ] + } + ], + "source": [ + "%reset" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.6.1" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} From 7efe1d834ff081e6b8fadbe163c52c96ad9111d0 Mon Sep 17 00:00:00 2001 From: remitchell Date: Sun, 4 Nov 2018 21:17:07 -0500 Subject: [PATCH 43/47] Cleanup --- Chapter04_CrawlingModels.ipynb | 784 ++++++++++++++++++++++++++++---- Chapter13-ImageProcessing.ipynb | 7 - Chapter14-ScrapingTraps.ipynb | 7 - Chapter15_Testing.ipynb | 88 ++-- 4 files changed, 733 insertions(+), 153 deletions(-) diff --git a/Chapter04_CrawlingModels.ipynb b/Chapter04_CrawlingModels.ipynb index 1f0692f..886849c 100644 --- a/Chapter04_CrawlingModels.ipynb +++ b/Chapter04_CrawlingModels.ipynb @@ -2,7 +2,7 @@ "cells": [ { "cell_type": "code", - "execution_count": 4, + "execution_count": 2, "metadata": {}, "outputs": [], "source": [ @@ -12,7 +12,7 @@ }, { "cell_type": "code", - "execution_count": 2, + "execution_count": 3, "metadata": {}, "outputs": [], "source": [ @@ -22,13 +22,13 @@ " \"\"\"\n", "\n", " session = requests.Session()\n", - " headers = {\"User-Agent\": \"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.95 Safari/537.36\",\n", - " \"Accept\": \"text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8\"}\n", + " headers = {'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.95 Safari/537.36',\n", + " 'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8'}\n", " try:\n", " req = session.get(url, headers=headers)\n", " except requests.exceptions.RequestException:\n", " return None\n", - " bs = BeautifulSoup(req.text, \"html.parser\")\n", + " bs = BeautifulSoup(req.text, 'html.parser')\n", " return bs" ] }, @@ -41,7 +41,7 @@ }, { "cell_type": "code", - "execution_count": 37, + "execution_count": 9, "metadata": {}, "outputs": [ { @@ -98,7 +98,7 @@ "\n", "\n", "\n", - "Cities & Regions\n", + "Report\n", "Delivering inclusive access\n", "\n", "Jeffrey Gutman, Adie Tomer, Joseph Kane, Nirav Patel, and Ranjitha Shivaram\n", @@ -114,7 +114,7 @@ "\n", "\n", "\n", - "Cities & Regions\n", + "Report\n", "Measuring performance: Accessibility metrics in metropolitan regions around the world\n", "\n", "Geneviève Boisjoly and Ahmed El-Geneidy\n", @@ -130,7 +130,7 @@ "\n", "\n", "\n", - "Cities & Regions\n", + "Report\n", "Is better access key to inclusive cities?\n", "\n", "Jeffrey Gutman and Nirav Patel\n", @@ -184,7 +184,6 @@ "source": [ "import requests\n", "\n", - "\n", "class Content:\n", " def __init__(self, url, title, body):\n", " self.url = url\n", @@ -199,16 +198,15 @@ "\n", "def scrapeNYTimes(url):\n", " bs = getPage(url)\n", - " title = bs.find(\"h1\").text\n", - " lines = bs.find_all(\"p\", {\"class\": \"story-content\"})\n", + " title = bs.find('h1').text\n", + " lines = bs.select('div.StoryBodyCompanionColumn div p')\n", " body = '\\n'.join([line.text for line in lines])\n", " return Content(url, title, body)\n", "\n", - "\n", "def scrapeBrookings(url):\n", " bs = getPage(url)\n", - " title = bs.find(\"h1\").text\n", - " body = bs.find(\"div\", {\"class\", \"post-body\"}).text\n", + " title = bs.find('h1').text\n", + " body = bs.find('div', {'class', 'post-body'}).text\n", " return Content(url, title, body)\n", "\n", "\n", @@ -235,7 +233,6 @@ " \"\"\"\n", " Common base class for all articles/pages\n", " \"\"\"\n", - "\n", " def __init__(self, url, title, body):\n", " self.url = url\n", " self.title = title\n", @@ -245,10 +242,9 @@ " \"\"\"\n", " Flexible printing function controls output\n", " \"\"\"\n", - " print(\"URL: {}\".format(self.url))\n", - " print(\"TITLE: {}\".format(self.title))\n", - " print(\"BODY:\\n{}\".format(self.body))\n", - "\n", + " print('URL: {}'.format(self.url))\n", + " print('TITLE: {}'.format(self.title))\n", + " print('BODY:\\n{}'.format(self.body))\n", "\n", "class Website:\n", " \"\"\" \n", @@ -800,7 +796,7 @@ " ['O\\'Reilly Media', 'http://oreilly.com', 'h1', 'section#product-description'],\n", " ['Reuters', 'http://reuters.com', 'h1', 'div.StandardArticleBody_body_1gnLA'],\n", " ['Brookings', 'http://www.brookings.edu', 'h1', 'div.post-body'],\n", - " ['New York Times', 'http://nytimes.com', 'h1', 'p.story-content']\n", + " ['New York Times', 'http://nytimes.com', 'h1', 'div.StoryBodyCompanionColumn div p']\n", "]\n", "websites = []\n", "for row in siteData:\n", @@ -826,7 +822,7 @@ }, { "cell_type": "code", - "execution_count": 43, + "execution_count": 11, "metadata": {}, "outputs": [], "source": [ @@ -843,15 +839,15 @@ " \"\"\"\n", " Flexible printing function controls output\n", " \"\"\"\n", - " print(\"New article found for topic: {}\".format(self.topic))\n", - " print(\"URL: {}\".format(self.url))\n", - " print(\"TITLE: {}\".format(self.title))\n", - " print(\"BODY:\\n{}\".format(self.body))" + " print('New article found for topic: {}'.format(self.topic))\n", + " print('URL: {}'.format(self.url))\n", + " print('TITLE: {}'.format(self.title))\n", + " print('BODY:\\n{}'.format(self.body))" ] }, { "cell_type": "code", - "execution_count": 44, + "execution_count": 12, "metadata": {}, "outputs": [], "source": [ @@ -871,7 +867,7 @@ }, { "cell_type": "code", - "execution_count": 48, + "execution_count": 13, "metadata": {}, "outputs": [ { @@ -880,20 +876,266 @@ "text": [ "GETTING INFO ABOUT: python\n", "New article found for topic: python\n", - "TITLE: JAKARTA (Reuters) - An Indonesian farmer has been found dead inside a 7-meter (23-foot) python after being reported missing on his failure to return home from work on a palm plantation. Village officials cut open the swollen body of the snake in a graphic video taken by a resident of Mamuju, on the eastern island of Sulawesi, the site of the incident. The victim’s legs, encased in rubber boots, emerge as the snake is pulled apart. Family members and neighbors of the 26-year-old victim, Akbar, had launched a search when he failed to come home for more than 24 hours, a resident of the area told Reuters. A 7-metre (23-foot) python is being cut open to reveal a young Indonesian man in the village of Salobiru, in a remote part of the West Sulawesi province, Indonesia in this still image taken from video on March 26, 2017. Courtesy of Andi Fathir/via REUTERS TV “We saw a python that couldn’t move properly and it’s belly was swollen,” said Asdin Rudi Fathir, 43. “Residents and officials decided to kill the python and were shocked to find a human body inside.” Relatives identified the victim, who went by only one name, as do many Indonesians. While large snakes and other animals are common in that part of Sulawesi, attacks on humans are rare, Fathir added. Reporting by Kanupriya Kapoor; Editing by Clarence FernandezOur Standards:The Thomson Reuters Trust Principles.\n", + "URL: Learning Python, 5th Edition \n", + "TITLE: \n", + "Get a comprehensive, in-depth introduction to the core Python language with this hands-on book. Based on author Mark Lutz’s popular training course, this updated fifth edition will help you quickly write efficient, high-quality code with Python. It’s an ideal way to begin, whether you’re new to programming or a professional developer versed in other languages. \n", + "\n", + "Complete with quizzes, exercises, and helpful illustrations, this easy-to-follow, self-paced tutorial gets you started with both Python 2.7 and 3.3— the latest releases in the 3.X and 2.X lines—plus all other releases in common use today. You’ll also learn some advanced language features that recently have become more common in Python code.\n", + "\n", + "Explore Python’s major built-in object types such as numbers, lists, and dictionaries \n", + "Create and process objects with Python statements, and learn Python’s general syntax model\n", + "Use functions to avoid code redundancy and package code for reuse\n", + "Organize statements, functions, and other tools into larger components with modules \n", + "Dive into classes: Python’s object-oriented programming tool for structuring code\n", + "Write large programs with Python’s exception-handling model and development tools\n", + "Learn advanced Python tools, including decorators, descriptors, metaclasses, and Unicode processing\n", + "\n", + "\n", "BODY:\n", - "/article/us-indonesia-python/indonesian-found-dead-after-being-swallowed-by-python-idUSKBN1711E3\n", - "URL: Indonesian found dead after being swallowed by python\n", + "http://shop.oreilly.com/product/0636920028154.do\n", "New article found for topic: python\n", - "TITLE: GANYIEL, South Sudan (Thomson Reuters Foundation) - Martha’s fear grows each morning as her toes touch the cold and muddy water of the swamp in a remote part of South Sudan. Yet she steps confidently into the chest-deep marsh, her clothes drenched and her feet sinking into the slippery mud as she holds her schoolbag above her head to keep it dry. “I know there could be crocodiles, pythons and Guinea worm in here and I‘m scared every day,” said 18-year-old, who is one of thousands who have found safety in Ganyiel, a rebel-held town in the center of the war-torn country. “Some of the children in my village have died in the swamps,” she told the Thomson Reuters Foundation, sitting on a plastic chair outside her classroom in a spare dry dress that she carried with her. Martha has made up her mind that receiving an education is her priority even though the journey takes four hours a day, a quarter of which is spent wading through the treacherous swamp. With 72 percent of children out of school, South Sudan ranks worst in education among all African nations, according to the United Nations children’s agency (UNICEF). One of the most common reasons for non-attendance is the long distance students have to walk to school, it says. The world’s youngest nation gained independence in 2011, but civil war erupted in late 2013 between soldiers of President Salva Kiir, an ethnic Dinka, and his former vice president, Riek Machar, a Nuer. Tens of thousands have been killed and one-third of the country’s 12 million-strong population has fled their homes, creating Africa’s largest refugee crisis. School enrollment, which was 42 percent at the start of the war, has plummeted. Only 700,000 school-aged children out of a total of 2.5 million attend classes, UNICEF says. “With so many children out of school and with a large portion of those currently enrolled unlikely to go beyond primary school, the country will face a serious shortage of qualified people,” its education expert, Vinobajee Gautam, said. CAUGHT IN THE CROSSFIRE Martha only returned to school last month. She and her siblings had been living in one of the U.N.’s tightly-packed camps for displaced people in the capital, Juba. “My mother took me and my seven siblings to Juba many years ago, because she wanted us to have access to education,” the teenager explained in perfect English. “When the war broke out, soldiers abducted and killed her. I had to take care of my brothers and sisters and wasn’t able to go to school anymore.” Martha decided to journey northwards for several days by boat to opposition-held Ganyiel in Southern Liech State, so that her father and other relatives who still lived there could help care for her siblings, freeing up her time to study. “I heard that a new school was built in Ganyiel, so I decided that going back home would help our family receive a better education,” she said. Wild animals and waterborne diseases are not the only risks students face on their exhausting journeys to school. “Children from rural areas outside Ganyiel have to live with the fear of being caught in the crossfire of inter-clan fights, revenge killings or even cattle raids,” said Raphael Ndiku of Welthungerhilfe, the German charity that built Martha’s school. With the construction of a new building last year, about 500 new students arrived from remote villages, boosting enrolment by more than half to almost 1,500 children, he said. News of the latest school openings spreads fast. At least one in three schools has been attacked by armed forces since the start of the conflict, according to UNICEF. Many are closed, destroyed or occupied by soldiers or displaced people. “We have nine classrooms and 37 teachers and use the buildings for primary school students in the mornings and secondary education in the afternoons,” said Ganyiel Mixed School’s headmaster, William Puol. South Sudanese families often make huge personal sacrifices so that their children can learn. “My father made me move to my aunt’s house because he wanted me to get an education,” said 14-year-old James Koang, whose family home was four hours from the nearest school. “I now walk for less than an hour but I‘m always afraid that wild animals might attack me because I walk alone,” said Koang, the only one of six siblings in education. He has set his mind on attending university. “If all children could go to school, there would be less fighting in my country,” he said, pointing out that many deadly cattle raids are carried out by youths who did not have the chance to get an education. Being in school gives children some protection from being recruited as child soldiers or forced into other dangerous means of survival, such as selling sex. “I am sometimes scared of being abducted on my way to school,” Martha said quietly. “But I want South Sudan to be a strong and peaceful country. Children need to be educated because we are the future. That’s what I think about when I walk to school and it helps me overcome my fear.” Reporting by Stefanie Glinski. Editing by Katy Migiro. Please credit the Thomson Reuters Foundation, the charitable arm of Thomson Reuters, that covers humanitarian news, women’s rights, trafficking, property rights and climate change. Visit news.trust.org to see more stories.Our Standards:The Thomson Reuters Trust Principles.\n", + "URL: The Hutchins Center Explains: Budgeting for aging America\n", + "TITLE: \n", + "\n", + "\n", + "For decades, we have been hearing that the baby-boom generation was like a pig moving through a python–bigger than the generations before and after. \n", + "That’s true. But that’s also a very misleading metaphor for understanding the demographic forces that are driving up federal spending: They aren’t temporary. The generation born between 1946 and 1964 is the beginning of a demographic transition that will persist for decades after the baby boomers die, the consequence of lengthening lifespans and declining fertility. Putting the federal budget on a sustainable course requires long-lasting fixes, not short-lived tweaks.  \n", + "First, a few demographic facts.\n", + "As the chart below illustrates, there was a surge in births in the U.S. at the end of World War II, a subsequent decline, and then an uptick as baby boomers began having children.\n", + "\n", + "\n", + "\n", + "\n", + "Although the population has been rising, the number of births in the U.S. the past few years has been below the peak baby-boom levels, possibly because many couples chose not to have children during bad economic times. More significant, fertility rates–roughly the number of babies born per woman during her lifetime–have fallen well below pre-baby-boom levels.\n", + "\n", + "\n", + "\n", + "\n", + "Meanwhile, Americans are living longer. In 1950, a man who made it to age 65 could expect to live until 78 and a woman until 81. Social Security’s actuaries project that a man who lived to age 65 in 2010 will reach 84 and a woman age 86.\n", + "\n", + "\n", + "\n", + "\n", + "Put all this together, and it’s clear that a growing fraction of the U.S. population will be 65 or older.   \n", + "The combination of longer life spans and lower fertility rates means the ratio of elderly (over 65) to working-age population (ages 20 to 64) is rising. As the chart below illustrates, the ratio will rise steadily as more baby boomers reach retirement age–and then it levels off.  \n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "Related Books\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " \n", + "\n", + "\n", + "\n", + "Diversity Explosion\n", + "\n", + "\n", + "\t\t\t\t\t\tBy William H. Frey \n", + "2018\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " \n", + "\n", + "\n", + "\n", + "Society at a Glance 2014\n", + "\n", + "\n", + "\t\t\t\t\t\tBy Organization for Economic Cooperation and Development OECD \n", + "2014\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " \n", + "\n", + "\n", + "\n", + "Brookings-Wharton Papers on Urban Affairs: 2002\n", + "\n", + "\n", + "\t\t\t\t\t\tEdited by William G. Gale and Janet Rothenberg Pack \n", + "2010\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "Simply put, this doesn’t look like a pig in a python.  \n", + "So what do these demographic facts portend for the federal budget?  In simple dollars and cents, the federal government spends more on the old than the young. More older Americans means more federal spending on Social Security and Medicare, the health insurance program for the elderly. On top of that, health care spending per person is likely to continue to grow faster than the overall economy.\n", + "The net result: 85 percent of the increase in federal spending that the Congressional Budget Office projects for the next 10 years, based on current policies, will go toward Social Security, Medicare and other major federal health programs, and interest on the national debt.\n", + " \n", + "Authors\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "David Wessel\n", + "Director - The Hutchins Center on Fiscal and Monetary Policy Senior Fellow - Economic Studies\n", + "\n", + " Twitter\n", + "davidmwessel\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "Louise Sheiner\n", + "The Robert S. Kerr Senior Fellow - Economic Studies Policy Director - The Hutchins Center on Fiscal and Monetary Policy\n", + "\n", + "\n", + "\n", + "\n", + "Restraining future deficits and the size of the federal debt mean restraining spending on these programs or raising taxes–and probably both. One-time savings or minor tweaks won’t suffice. Nor will limiting the belt-tightening to annually appropriated spending.\n", + "The fundamental fiscal problem is not coping with the retirement of the baby boomers and then going back to budgets that resemble those of the past. The fundamental fiscal problem is that retirement of the baby boomers marks a major demographic transition for the nation, one that will require long-lived changes to benefit programs and taxes.\n", + "Editor’s Note: This post originally appeared on \n", + "The Wall Street Journal’s Washington Wire\n", + " on December 18, 2015.\n", "BODY:\n", - "/article/us-southsudan-education-children/crocodiles-pythons-and-militias-south-sudans-children-risk-death-for-school-idUSKBN1DR0UP\n", - "URL: Crocodiles, pythons and militias: South Sudan's children risk death for school\n", + "https://www.brookings.edu/blog/up-front/2015/12/21/the-hutchins-center-explains-budgeting-for-aging-america/\n", "New article found for topic: python\n", - "TITLE: A 20 feet rock python was caught on camera in Junagadh district of India’s western Gujarat state with a swollen stomach after it consumed an antelope on Tuesday (September 20). Residents informed authorities at Girnar Wildlife Sanctuary after they spotted the reptile lying in discomfort in a field. In view of the massive swelling of the python’s stomach, the forest authorities suspect that it gobbled up a full-grown ‘nilgai’ or blue bull. The python - unable to move now - was rescued by the forest personnel and has been put under observation. “We will keep it (python) under observation. We will release it back in the wild once it digests the antelope and the swelling subsides,” said Assistant Conservator of Forest, S.D. Tilala. A blue bull is far larger than an ideal prey for pythons and digesting the mammal could prove to be a great struggle for the reptile. When unable to digest an unusually large prey, pythons are known to regurgitate them.Our Standards:The Thomson Reuters Trust Principles.\n", + "URL: Inside the Pentagon’s Secret Afghan Spy Machine\n", + "TITLE: \n", + "The Pentagon’s top researchers have rushed a classified and controversial intelligence program into Afghanistan. Known as “Nexus 7,” and previously undisclosed as a war-zone surveillance effort, it ties together everything from spy radars to fruit prices in order to glean clues about Afghan instability.\n", + "\n", "BODY:\n", - "/article/us-india-python/python-in-india-demonstrates-huge-appetite-idUSKCN11S04G\n", - "URL: Python in India demonstrates huge appetite\n" + "https://www.brookings.edu/opinions/inside-the-pentagons-secret-afghan-spy-machine/\n", + "New article found for topic: python\n", + "URL: The Silicon Valley Wage Premium\n", + "TITLE: \n", + "\n", + "\n", + "Software application developers earn large salaries in the United States, $96,260 a year on average. But in metropolitan San Jose they earn $131,270, the highest in the country. There are many partial explanations for this—local cost of living, differences in education levels, experience, and industry—but none of them quite account for it. It turns out that developers living in San Jose have acquired the specific skills most valued by employers.\n", + " \n", + "As the map below shows, there is a huge amount of variation in earnings for software application developers across regional labor markets. In large metropolitan areas like New York, they earn $105,000, but in Louisville, they earn just $72,000.\n", + " \n", + "\n", + "Average Salary of Software Application Developers by Metropolitan Area, 2013\n", + "\n", + " \n", + "\n", + "\n", + " \n", + "Similar patterns could be shown for other occupations, of course; for even within the same job title, people vary by education and experience, and regions vary by company and industry mix, productivity and export orientation, which all affect salaries and regional housing prices.\n", + " \n", + "The surprising thing, when it comes to software developers and other skilled occupations too, is that none of these factors can fully account for the San Jose premium. Software developers in San Jose are typically slightly less experienced, and while their levels of education are higher—including their likelihood of having majored in engineering or computer science—the difference is not enough to explain their elevated earnings. Likewise, the cost of living in San Jose is remarkably high, but comparable to other major cities. \n", + " \n", + "\n", + "\n", + "Related Books\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " \n", + "\n", + "\n", + "\n", + "The New Localism\n", + "\n", + "\n", + "\t\t\t\t\t\tBy Bruce Katz and Jeremy Nowak \n", + "2018\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " \n", + "\n", + "\n", + "\n", + "The Public Wealth of Cities\n", + "\n", + "\n", + "\t\t\t\t\t\tBy Dag Detter and Stefan Fölster \n", + "2017\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " \n", + "\n", + "\n", + "\n", + "Challenges in the Process of China’s Urbanization\n", + "\n", + "\n", + "\t\t\t\t\t\tEdited by Karen Eggleston, Jean C. Oi, and Yiming Wang \n", + "2017\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "So what distinguishes San Jose software developers? \n", + " \n", + "To figure this out, I analyzed a database of 29 million job vacancies advertised online during 2013 as compiled by the analytics firm Burning Glass. Of these, roughly 1.4 million were for software application developers, making it the most in-demand occupation. In total, 3 million ads also contained salary information, which I could use to estimate the average value of each distinct skill advertised. \n", + " \n", + "Author\n", + "\n", + "\n", + "\n", + "\n", + "J\n", + "\n", + "\n", + "\n", + "Jonathan Rothwell\n", + "Former Brookings Expert\n", + "\n", + "\n", + "\n", + "\n", + " \n", + "In San Jose, the skills advertised for software developers are particularly valuable. The average vacancy requires higher value skills in San Jose than almost any other metropolitan area, even using national rather than local salary values.  \n", + " \n", + "For example, 8.4 percent of ads for software developers in San Jose requested Java, a widely used programming language, associated with an average salary of $98,000 across all U.S. ads mentioning both it and a salary requirement. Yet, for the United States as a whole, just 5.7 percent of software developer ads required Java. In New York City, the share was 6.7, and it was 4.7 in Louisville.\n", + " \n", + "Other high-value programming languages and skills were disproportionately advertised in San Jose, such as Linux, C++, Python and the term “software engineering.”  These skills were much less commonly required for jobs in Louisville and even New York. Only 0.2 percent of software jobs required Python in Louisville and 1.7 in New York City, compared to 2.8 percent in San Jose. It is valued at $100,345.\n", + " \n", + "These and other skills contribute to the high premium enjoyed by Silicon Valley computer workers, but they could be profitably learned by a much larger swath of people, as online educators like Treehouse, Udacity, and Code Fellows aim to demonstrate.\n", + "\n", + "BODY:\n", + "https://www.brookings.edu/blog/the-avenue/2014/08/06/the-silicon-valley-wage-premium/\n" ] }, { @@ -901,30 +1143,379 @@ "output_type": "stream", "text": [ "New article found for topic: python\n", - "TITLE: Forest department officials on Saturday (September 24) promised strict action after a python attacked a man when a group was trying to click a photo with it. The incident took place on Friday (September 23) after forest department officials removed the python from the premises of a school in northwestern Rajasthan state. They were posing for pictures with it after successfully capturing it. Deputy Conservator of Forests, K.G.Shrivastav, said the incident was unexpected as all officers were highly trained. “I wanted the snake to be released in my presence, but the officials released it before I could reach the spot. I had no clue that civilians were also present at the spot and something could go wrong as all the officials are highly trained. Clicking selfies with the snake and releasing the photos publicly is an offense under the Wildlife Act and we will issue notice to all involved in this incident,” Shrivastav said. The victim, Ashok Bishnoi, accepted the incident happened due to carelessness on his part. “The moment I received the news I reached the location. I did not realize how close I was to the python and it attacked me. This is entirely my fault,” said the victim, Ashok Bishnoi. Vishnoi added that the mishap happened in a short span of time in spite of the fact that the rescue officials had a strong grip on the reptile. The snake was later released in a forest.Our Standards:The Thomson Reuters Trust Principles.\n", - "BODY:\n", - "/article/us-india-python-attack/indian-man-bitten-by-python-whilst-posing-for-selfie-idUSKCN11W1LT\n", - "URL: Indian man bitten by python whilst posing for selfie\n", - "New article found for topic: python\n", - "TITLE: JOHANNESBURG (Reuters) - A Zimbabwean man has been jailed for nine years for eating python, a protected species, a Zimbabwean daily reported on Friday. Archwell Maramba said he had been eating the snake meat for its medicinal value. “I wanted to eat the python to cure my spine and since I ate my first python I have seen remarkable improvement,” NewsDay quoted Maramba as saying during his court case. Acting on a tipoff, police found the 58-year-old drying snakeskin and python meat stashed in his house. Reporting by Helen Nyambura-Mwaura; Editing by Andrew RocheOur Standards:The Thomson Reuters Trust Principles.\n", - "BODY:\n", - "/article/us-zimbabwe-python/zimbabwean-jailed-for-nine-years-for-eating-python-meat-idUSKBN0L31PS20150130\n", - "URL: Zimbabwean jailed for nine years for eating python meat\n", - "New article found for topic: python\n", - "TITLE: LONDON (Reuters) - The surviving members of the British comedy troupe Monty Python lost a High Court battle on Friday over tens of thousands of pounds in royalties from their hit Broadway musical “Spamalot”. Mark Forstater, who helped produce the 1975 film “Monty Python and the Holy Grail” on which the stage show was based, said he had not received his fair share of the profits from the spin-off. Despite hearing evidence from three Pythons - Eric Idle, Michael Palin and Terry Jones - the judge, Justice Alastair Norris, sided with the producer. “I have always been adamant I was correct. I have been proved right - justice has prevailed,” Forstater said. Inspired by the film, the musical opened on Broadway in 2005 and has also enjoyed a successful run in Britain. Idle wrote the lyrics and collaborated on most of the music. Forstater, an American based in Britain, argued that he was entitled to one-seventh of the profits from the “Holy Grail” film and any merchandise or spin-offs. His lawyer told the court that for the purposes of profit-sharing, it had been agreed in 1974 that Forstater was “the seventh Python”. However Palin, along with Jones and Idle, who formed Monty Python with John Cleese, Terry Gilliam and Graham Chapman, dismissed this suggestion. “The idea of a seventh Python just doesn’t happen ... I don’t think there was ever any suggestion this man was going to be a ‘seventh Python’,” said Palin, giving evidence in December. In his judgment, Norris said Palin had been a “balanced and trustworthy” witness but had admitted his recollection was “hazy”, while evidence from Jones had been “suffused with a sense that Mr Forstater had done very well out of his brief connection with the Pythons”. “Eric Idle was frank enough to acknowledge that he now disliked Mr Forstater, but he expressed the hope that, in his evidence, he was being honest and that his dislike did not affect his honesty,” Norris said. “He undoubtedly regarded Mr Forstater as ungrateful.” “SOFT LOT” His ruling also made reference to the Pythons’ lack of business acumen, highlighting a diary entry from Palin in 1975. “As we are a soft lot and not at all businesslike, I think it would be in the finest traditions of Python irrationality if we gave Mark an extra 1,000 pounds and a silver tray with some cut-glass sherry glasses and told him to stop writing to us for more money,” Palin wrote. “Beyond that even I am not prepared to go. Oh, all right, some cheese straws to go with the sherry glasses.” The judge added: “As I assess the evidence, the Pythons continued at that point to be ‘a soft lot and not at all businesslike’.” No members of the Python group were present in court to hear the ruling. Final figures will be worked out at later hearings but Forstater told reporters he was entitled to more than 200,000 pounds ($300,000) including interest, the Press Association reported. “There is a sadness, though, about having to face people who were my friends in court,” he said. “The friendship has gone.” Forstater said he did not think the litigation would damage the Pythons’ reputation. “They’re an institution,” he said. “I still think they are very funny.” Editing by Michael Holden and Janet LawrenceOur Standards:The Thomson Reuters Trust Principles.\n", + "URL: Leveraging the disruptive power of artificial intelligence for fairer opportunities\n", + "TITLE: \n", + "According to President Obama’s Council of Economic Advisers (CEA), approximately 3.1 million jobs will be rendered obsolete or permanently altered as a consequence of artificial intelligence technologies. Artificial intelligence (AI) will, for the foreseeable future, have a significant disruptive impact on jobs. That said, this disruption can create new opportunities if policymakers choose to harness them—including some with the potential to help address long-standing social inequities. Investing in quality training programs that deliver premium skills, such as computational analysis and cognitive thinking, provides a real opportunity to leverage AI’s disruptive power.\n", + "\n", + "Author\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "Makada Henry-Nickie\n", + "David M. Rubenstein Fellow - Governance Studies, Race, Prosperity, and Inclusion Initiative\n", + "\n", + " Twitter\n", + "mhnickie\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "AI’s disruption presents a clear challenge: competition to traditional skilled workers arising from the cross-relevance of data scientists and code engineers, who can adapt quickly to new contexts. Data analytics has become an indispensable feature of successful companies across all industries. This reality dictates that companies invest heavily in data analytics to remain competitive and profitable. Consequently, unlikely industries such as retail, banking, finance, and even agricultural firms are aggressively competing for talent with specific computational data science and programming skills. A recent IBM report expertly quantifies the scope and breadth of employers’ hiring demands, noting that “[d]emand for data-driven decision makers, such as data-enabled marketing managers, will comprise one-third of the data savvy professional job market, with a projected increase of 110,000 positions by 2020.” Herein lies a window of opportunity: the rapidly growing technical skills gap.\n", + "Investing in high-quality education and training programs is one way that policymakers proactively attempt to address the workforce challenges presented by artificial intelligence. It is essential that we make affirmative, inclusive choices to ensure that marginalized communities participate equitably in these opportunities.\n", + "Policymakers should prioritize understanding the demographics of those most likely to lose jobs in the short-run. As opposed to obsessively assembling case studies, we need to proactively identify policy entrepreneurs who can conceive of training policies that equip workers with technical skills of “long-game” relevance. As IBM points out, “[d]ata democratization impacts every career path, so academia must strive to make data literacy an option, if not a requirement, for every student in any field of study.”\n", + "Machines are an equal opportunity displacer, blind to color and socioeconomic status.\n", + "Machines are an equal opportunity displacer, blind to color and socioeconomic status. Effective policy responses require collaborative data collection and coordination among key stakeholders—policymakers, employers, and educational institutions—to  identify at-risk worker groups and to inform workforce development strategies. Machine substitution is purely an efficiency game in which workers overwhelmingly lose. Nevertheless, we can blunt these effects by identifying critical leverage points.\n", + "Investing in innovative education and training is an excellent place to start. Bill Gates’ recent $1.7 billion investment in U.S. public schools is a sign of the way forward, which offers two compelling messages for policymakers. First, innovate and experiment until we identify the right policies. Second, prioritize high-needs schools in poor neighborhoods; they deserve distinct attention to close their opportunity gaps and prepare them to be competitive in the future workforce.\n", + "Policymakers can choose to harness AI’s disruptive power to address workforce challenges and redesign fair access to opportunity simultaneously. We should train our collective energies on identifying practical policies that update our current agrarian-based education model, which unfairly disadvantages children from economically segregated neighborhoods. Evidence from a Harvard and New York University research study suggests attending a high-quality high school increases a student’s chances of attending a four-year college; which by extension improves their future income earning potential.\n", + "Let me ask a bold question: how much do we lose if we experiment with substituting an entry-level data science class for machine shop or a vocational carpentry program in urban high schools and community colleges? A 2010 pilot partnership between the University of California, Los Angeles and the National Science Foundation is an encouraging sign; the pilot focuses on redesigning computer science curricula in urban high schools to include newer mobile technologies and computational analysis.\n", + "\n", + "Related\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " \n", + "\n", + "\n", + "\n", + "TechTank\n", + "Will robots and AI take your job? The economic and political consequences of automation\n", + "\n", + "Darrell M. West\n", + "Wednesday, April 18, 2018\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " \n", + "\n", + "\n", + "\n", + "TechTank\n", + "The state of self-driving car laws across the U.S.\n", + "\n", + "Jack Karsten and Darrell West\n", + "Tuesday, May 1, 2018\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " \n", + "\n", + "\n", + "\n", + "TechTank\n", + "How blockchain could improve election transparency\n", + "\n", + "Kevin C. Desouza and Kiran Kabtta Somvanshi\n", + "Wednesday, May 30, 2018\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "Data science is an applied computational technology best suited to inquisitive minds, making it appropriate for young students. Google’s TensorFlow is an open source machine-learning platform; its free price tag makes the platform an accessible and scalable training resource for schools with constrained budgets. Introducing a data science program into urban schools would be a major paradigm shift for these students. An applied data science program teaching gateway coding skills such as Python, R, SQL, and computational analysis would boost employment possibilities and create meaningful pathways to economic mobility.\n", + "I am suggesting that we leverage AI’s transformative power to disrupt diminishing possibilities for marginalized groups, like young men of color, who often do not feature in innovative-themed discussions outside of the social justice arena. Open Source groups such as Code.org and StudentRND exemplify the kinds of transformational approaches that democratize access and opportunity.\n", + "Producing a diverse pipeline of tech-savvy workers for Google and Amazon, even if only at the entry level, is a more attainable dream for most cities than competing in a stacked race for Amazon’s HQ2. Broadening adoption of artificial intelligence technologies poses significant workforce challenges, but it also offers the chance to blunt these effects and create opportunities for marginalized groups if we act preemptively.\n", + "Google is a donor to the Brookings Institution. The findings, interpretations, and conclusions posted in this piece are solely those of the authors and not influenced by any donation.\n", + "\n", "BODY:\n", - "/article/entertainment-us-britain-python-court/monty-python-lose-spamalot-court-battle-idUSBRE9640KE20130705\n", - "URL: Monty Python lose 'Spamalot' court battle\n", + "https://www.brookings.edu/blog/techtank/2017/11/16/leveraging-the-disruptive-power-of-artificial-intelligence-for-fairer-opportunities/\n", "New article found for topic: python\n", - "TITLE: ORLANDO, Florida (Reuters) - A python hunting competition starting on Saturday is drawing hundreds of amateurs armed with clubs, machetes and guns to the Florida Everglades, where captured Burmese pythons have exceeded the length of minivans and weighed as much as grown men. Python Challenge 2013, a month-long event sponsored by the Florida Fish and Wildlife Conservation Commission, is open to hunters and non-hunters alike. But the idea of luring weapon-wielding amateurs into the harsh environment of the Everglades has raised some alarms. “I just thought it was as exciting as could be. It’s a once- in-a-lifetime opportunity,” said contestant Ron Polster, a retired salesman from Ohio whose closest encounter with the swamp has been from the highway heading south for the winter. Participants pay a $25 entry fee and take an online training course, which consists mostly of looking at photographs of both the targeted pythons and protected native snakes to learn the difference. The state wildlife agency is offering prizes of $1,500 for the most pythons captured and $1,000 for the longest python. A Burmese python found in Florida last year set records as the largest ever captured in the state at 17-feet, 7-inches. The snake weighed nearly 165 pounds (75 kg). FWC spokeswoman Carli Segelson said the number of registered contestants reached about 500 this week and was growing, with people coming from 32 states. A handout photo released on October 6, 2005 by Everglades National Park shows a dead Burmese python which had swallowed an American alligator. REUTERS/Everglades National Park/HandoutThe stated goal of the competition is to raise awareness of the threat Burmese pythons pose to the Everglades ecosystem. The snakes are native to Southeast Asia and have no known predators in Florida. The contest also serves as a pilot program to determine whether regular hunting competitions can cull the growing population of the invasive species, said Frank Mazzotti, a wildlife expert from the University of Florida who helped create the competition. Python Challenge rules require contestants to kill specimens on the spot in a humane fashion, recommending shooting the snakes precisely through the brain. “I was hoping there would be a lot of machetes and not a lot of guns,” said Polster, the retired salesman. He said he worries “these idiots will be firing all over the place.” Shawn Heflick, star of the National Geographic “Wild” television show “Python Hunters,” told Reuters that despite the formidable size of the snakes, he expects the swamp itself, with its alligators, crocodiles and venomous snakes, to pose a greater threat to the contestants. “You get these people going down there, they’ll get lost, they’ll get dehydrated, they’ll get sucked dry by mosquitoes,” Heflick said. Segelson said the wildlife agency will provide training on the use of GPS devices and on identifying venomous snakes at the kick-off event. In the meantime, she said, contestants should be familiarizing themselves with the Everglades environment, just as they should before entering any other strange territory. Heflick said most of the contestants likely were drawn to the Python Challenge by the romantic mystique of bagging a giant predator. He expects few will last long in the hunt. “The vast majority of them will never see a python. The vast majority of them will probably curtail their hunting very quickly when they figure out there’s a lot of mosquitoes, it’s hot, it’s rather boring sometimes - most of the time really, and I think a lot of them will go home,” Heflick said. Editing by Tom Brown and Dan GreblerOur Standards:The Thomson Reuters Trust Principles.\n", + "URL: Idea to Retire: Old methods of policy education\n", + "TITLE: \n", + "Public policy and public affairs schools aim to train competent creators and implementers of government policy. While drawing on the principles that gird our economic and political systems to provide a well-rounded education, like law schools and business schools, policy schools provide professional training. They are quite distinct from graduate programs in political science or economics which aim to train the next generation of academics. As professional training programs, they add value by imparting both the skills which are relevant to current employers, and skills which we know will be relevant as organizations and societies evolve. \n", + "The relevance of the skills that policy programs impart to address problems of today and tomorrow bears further discussion. We are living through an era in which societies are increasingly interconnected. The wide-scale adoption of devices such as the smartphone is having a profound impact on our culture, communities, and economy. The use of social and digital media and associated means of communication enabled by mobile devices is changing the tone, content, and geographic scope of our conversations, modifying how information is generated and consumed, and changing the very nature of citizen engagement. \n", + "Information technology-based platforms provisioned by private providers such as Facebook, Google, Uber, and Lyft maintain information about millions of citizens and enable services such as transportation that were mediated in the past solely by the public sector. Surveillance for purposes of public safety via large-scale deployment of sensors also raises fundamental questions about information privacy. From technology-enabled global delivery of work to displacement and replacement of categories of work, some studies estimate that up to 47 percent of U.S. employment might be at risk of computerization with an attendant rise in income inequality. These technology-induced changes will affect every policy domain. How should policy programs best prepare students to address societal challenges in this world that is being transformed by technology? We believe the answer lies in educating students to be “men and women of intelligent action.” \n", + "A model of policy education\n", + "We begin with a skills-based model of policy education. These four essential skills address the general problems policy practitioners frequently face:\n", + "\n", + "Design skills to craft policy ideas \n", + "Analytical skills to make smart ex ante decisions \n", + "Interpersonal experience to manage policy implementation  \n", + "Evaluative skills to assess outcomes ex post and correct course if necessary\n", + "\n", + "These skills make up the policy analysis toolkit required to be data driven practitioner of “intelligent action” in any policy domain. This toolkit needs to be supplemented by an understanding of how technology is transforming societal challenges, enabling new solutions, or disrupting existing regulatory regimes. This understanding is essential to policy formulation and implementation. \n", + "Pillar 1: Design skills\n", + "As with engineering, where design precedes analysis, this first pillar seeks to educate students in thinking creatively about problems in order to devise and develop policy ideas. Using ideas derived from design, divergent and convergent thinking principles are employed to generate, explore, and arrive at a candidate set of solutions. Using Uber as an example, an approach to identify and explore the key policy issues such as convenience, costs, driver working hours, and insurance would involve interviewing and observing both incumbent taxi drivers and Uber drivers. This in turn would lead to a set of alternatives that deserve further and careful consideration.  Using these skills, candidate designs and choices that are generated can be evaluated using the policy analytic toolkit. \n", + "Pillar 2: Analytical skills\n", + "At Carnegie Mellon, we are often cited in media and interrogated by peers on our approach to analytical and technology skills education. Curiosity about which skills are the “right” skills to teach policy practitioners are common, but we believe this is the wrong approach. We instead begin from the premise that policy or management decisions should be grounded in evidence.  We then determine the skills required to assemble the types of evidence that will likely be available to policy makers in the future.  In increasingly instrumented environments where citizens and infrastructure produce continuous streams of data, making sense of it all will require a somewhat different set of skills. We believe that a grounding in micro-economics, operations research, statistics, and program evaluation (aka causal inference) to be an essential core to policy programs. \n", + "New coursework will teach students to work with multi-variable data and machine learning with an emphasis on prediction. This material ought to be part of the required coursework in statistics given the importance of prediction in many policy implementation settings. Along the same lines, the ability to work with unstructured data (especially text) and data visualization will become increasingly relevant to all students, not just those students who want to specialize in data analytics. Finally, knowledge of data manipulation and analysis languages such as Python and R for analytic work will be important because data often has to be massaged and cleansed prior to analysis. An important task for programs will be to determine the competencies expected of graduates. \n", + "Pillar 3: Interpersonal experiences\n", + "The third pillar of the skills-based model is interpersonal experience, where the practiced habits of good communication and steady negotiation developed with a sound understanding of organizations, their design and their behaviors. We label these purposely as experiences rather than skills because we believe they are best practiced either in the real-world or in simulated real-world settings. It is also in this pillar where practitioners learn the knowledge necessary to become credible experts in their domain. We believe that in addition to core coursework in the area, a supplementary curriculum which provides students with opportunities to gain these experiences is an essential component of our educational model.\n", + "Pillar 4: Evaluative skills\n", + "\n", + "\n", + "Related Books\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " \n", + "\n", + "\n", + "\n", + "Constitution 3.0\n", + "\n", + "\n", + "\t\t\t\t\t\tEdited by Jeffrey Rosen and Benjamin Wittes \n", + "2013\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " \n", + "\n", + "\n", + "\n", + "The Need for Speed\n", + "\n", + "\n", + "\t\t\t\t\t\tBy Robert E. Litan and Hal J. Singer \n", + "2013\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " \n", + "\n", + "\n", + "\n", + "After the Breakup\n", + "\n", + "\n", + "\t\t\t\t\t\tBy Robert W. Crandall \n", + "2010\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "The ability to carefully diagnose the effectiveness of policy or management interventions is the fourth pillar of our model. It is insufficient to create and execute policy without measurement, and this is where both careful thought to the fundamental issues of measurement and evaluation become important. The ability to make objective judgments on the benefits, liabilities, and unintended consequences of prior policies is the goal of this set of skills. Here, sound statistical and econometric training with an understanding of the principles of causal inference is essential. In addition, program evaluation skills such as cost-benefit and financial analysis help practitioners round out their evaluation skills by considering both non-monetary and economic impacts.\n", + "What should be retired?\n", + "A skills-based approach might replace certain aspects of existing policy training.  This depends on a number of factors specific to each institution, but three generally applicable observations are clear. First, real-world experiences are a powerful way to encode domain learning as well as project management skills. Through project-based work, students can learn about institutional contexts in specific policy domains and political processes such as budgeting. Second, team-based projects allow students to learn and apply principles of management and organizational behavior. At Carnegie Mellon, we refer to these as “systems synthesis” projects, since they require students to adopt a systemic point of view and to synthesize a number of skills in their policy analysis toolkit. Third, interpersonal skills training can be practiced through activities such as weekend negotiation exercises, hackathons, and speaker series. These activities can be highly intentional and fashioned to reinforce skills rather than as a recess from the “real work” of classroom training. Since students complete graduate programs in such a short time, counseling them to focus on outcomes from day one will allow them to choose a reinforcing set of coursework and real-world experiences. \n", + "In summary, we argue for a model of policy education that views practitioners as future problem solvers. Good policy education must consider the ways in which problems will present themselves, and the ways in which answers will obscure themselves. Rigorous training grounded in the analysis of available evidence and buoyed by real-world interpersonal experiences is a sound approach to relevant, durable policy training.\n", + " \n", + "Authors\n", + "\n", + "\n", + "\n", + "\n", + "R\n", + "\n", + "\n", + "\n", + "Ramayya Krishnan\n", + "Ramayya Krishnan is the dean of H. John Heinz III College of Information Systems and Public Policy at Carnegie Mellon University where he is the W.W. Cooper and Ruth F. Cooper Professor of Management Science and Information Systems.\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "J\n", + "\n", + "\n", + "\n", + "Jon Nehlsen\n", + "Jon Nehlsen is senior director of external relations at H. John Heinz III College of Information Systems and Public Policy at Carnegie Mellon University.\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "Read other essays in the Ideas to Retire blog series here.\n", + "\n", "BODY:\n", - "/article/us-usa-python-hunt/florida-python-hunting-contest-draws-hundreds-idUSBRE9081CL20130110\n", - "URL: Florida python hunting contest draws hundreds\n", + "https://www.brookings.edu/blog/techtank/2016/03/01/idea-to-retire-old-methods-of-policy-education/\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ "New article found for topic: python\n", - "TITLE: ORLANDO, Florida (Reuters) - A python hunting competition starting on Saturday is drawing hundreds of amateurs armed with clubs, machetes and guns to the Florida Everglades, where captured Burmese pythons have exceeded the length of minivans and weighed as much as grown men. Python Challenge 2013, a month-long event sponsored by the Florida Fish and Wildlife Conservation Commission, is open to hunters and non-hunters alike. But the idea of luring weapon-wielding amateurs into the harsh environment of the Everglades has raised some alarms. “I just thought it was as exciting as could be. It’s a once- in-a-lifetime opportunity,” said contestant Ron Polster, a retired salesman from Ohio whose closest encounter with the swamp has been from the highway heading south for the winter. Participants pay a $25 entry fee and take an online training course, which consists mostly of looking at photographs of both the targeted pythons and protected native snakes to learn the difference. The state wildlife agency is offering prizes of $1,500 for the most pythons captured and $1,000 for the longest python. A Burmese python found in Florida last year set records as the largest ever captured in the state at 17-feet, 7-inches. The snake weighed nearly 165 pounds (75 kg). FWC spokeswoman Carli Segelson said the number of registered contestants reached about 500 this week and was growing, with people coming from 32 states. The stated goal of the competition is to raise awareness of the threat Burmese pythons pose to the Everglades ecosystem. The snakes are native to Southeast Asia and have no known predators in Florida. The contest also serves as a pilot program to determine whether regular hunting competitions can cull the growing population of the invasive species, said Frank Mazzotti, a wildlife expert from the University of Florida who helped create the competition. Python Challenge rules require contestants to kill specimens on the spot in a humane fashion, recommending shooting the snakes precisely through the brain. “I was hoping there would be a lot of machetes and not a lot of guns,” said Polster, the retired salesman. He said he worries “these idiots will be firing all over the place.” Shawn Heflick, star of the National Geographic “Wild” television show “Python Hunters,” told Reuters that despite the formidable size of the snakes, he expects the swamp itself, with its alligators, crocodiles and venomous snakes, to pose a greater threat to the contestants. “You get these people going down there, they’ll get lost, they’ll get dehydrated, they’ll get sucked dry by mosquitoes,” Heflick said. Segelson said the wildlife agency will provide training on the use of GPS devices and on identifying venomous snakes at the kick-off event. In the meantime, she said, contestants should be familiarizing themselves with the Everglades environment, just as they should before entering any other strange territory. Heflick said most of the contestants likely were drawn to the Python Challenge by the romantic mystique of bagging a giant predator. He expects few will last long in the hunt. “The vast majority of them will never see a python. The vast majority of them will probably curtail their hunting very quickly when they figure out there’s a lot of mosquitoes, it’s hot, it’s rather boring sometimes - most of the time really, and I think a lot of them will go home,” Heflick said. Editing by Tom Brown and Dan GreblerOur Standards:The Thomson Reuters Trust Principles.\n", + "URL: Skills, success, and why your choice of college matters\n", + "TITLE: \n", + "\n", + "\n", + "Amidst growing frustration with the cost of higher education, complaints also abound about its quality. One critique, launched in the book Academically Adrift by two sociologists, finds little evidence that college students score better on measures of critical thinking, writing, and reasoning after attending college. This is something of a paradox, since strong evidence shows that attending college tends to raise earnings power, even for students who start with mediocre preparation. \n", + "Our recent study uses a different approach to assess the value of a college education. We find that the particular skills listed by a college’s alumni on their resumes predict how well graduates from those schools perform in terms of earning a living, meeting debt obligations, and working for high-paying or innovative companies. Since jobs requiring more valuable skills typically require at least some college education, this finding suggests many students are gaining valuable skills from college. But the variation in alumni skills across schools is wide, even after considering the aptitude of the students in terms of their pre-admission test scores. This variation implies that what one studies and where have big effects on economic outcomes.\n", + "\n", + "\n", + "\n", + "\n", + "Skills versus degrees\n", + "\n", + "It is widely known that education raises individual earnings, but education—measured in years of study or level of degree—is a very rough measure of learning. Thus, it is not surprising that studies consistently find that skills are an important predictor of economic outcomes. People with higher test scores—another measure of learning—earn higher wages, even with the same level of education. Likewise, graduates with technical degrees earn more, as do workers in occupations requiring more STEM skills. At the international scale, performance on standardized exams has a much stronger statistical relationship with economic outcomes than do years of education, according to a new OECD study.\n", + "\n", + "\n", + "\n", + "\n", + "How we valued skills by college\n", + "\n", + "Using data from the company Burning Glass, we calculated the average salary listed for distinct skills based on 3 million job vacancy ads. To match these skills to colleges, we used data from LinkedIn’s college profile pages, which show the 25 most common skills (e.g., customer service, Microsoft Excel, Python) listed by alumni from each college. For the average college, we observed 1,150 profiles per skill. (A great advantage of using LinkedIn data is the large sample size.) We obtained data for 2,164 colleges representing profiles for 2.5 million U.S. residents who attended college. By comparison, Academically Adrift surveyed 2,300 college graduates.\n", + "\n", + "\n", + "\n", + "\n", + "Alumni with more valuable skills earn higher salaries\n", + "\n", + "Measured at mid-career (meaning at least 10 years of working), salaries tend to be much higher for alumni who list high-value skills on their resumes. Earnings go up by an average of $2,600 for every decile of skill. Our more detailed empirical work shows that skills predict higher earnings even after controlling for math test scores on the ACT and SAT, as well as other student characteristics like family income.\n", + "Cal Tech graduates list the highest-value skills (e.g., Matlab, Python, C++, algorithms, and machine learning) and typically earn $126,000 at mid-career. Other four-year schools with high-value skills and high salaries include Harvey Mudd, MIT, the Polytechnic Institute of New York University, and the Air Force Academy. \n", + "Earnings data from two-year colleges are not as widely available, and the correlation with alumni skills is weaker, but alumni from those schools also seem to benefit from higher skills training. Top schools include the Pittsburg Institute of Aeronautics, Spartan College of Aeronautics and Technology (Tulsa, Okla.), Coleman University (San Diego), Hondros College (Columbus, Ohio), and SUNY College of Technology at Alfred.\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "Alumni with more valuable skills have higher loan repayment rates\n", + "\n", + "\n", + "\n", + "Related Books\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " \n", + "\n", + "\n", + "\n", + "Leapfrogging Inequality\n", + "\n", + "\n", + "\t\t\t\t\t\tBy Rebecca Winthrop; With Adam Barton and Eileen McGivney \n", + "2018\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " \n", + "\n", + "\n", + "\n", + "The Transformation of Title IX\n", + "\n", + "\n", + "\t\t\t\t\t\tBy R. Shep Melnick \n", + "2018\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " \n", + "\n", + "\n", + "\n", + "Making College Work\n", + "\n", + "\n", + "\t\t\t\t\t\tBy Harry J. Holzer and Sandy Baum \n", + "2017\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "As an alternative to mid-career earnings, we also analyzed how skills predict the ability to make student loan payments immediately after graduation. Here too, more valuable skills translate into labor market success. For example, not a single Harvey Mudd attendee between 2009 and 2011 defaulted on his or her federal loans within three years of leaving. Repayment rates average 95 percent for four-year colleges in the top 10 percent for alumni skills but 87 percent for those in the bottom 10 percent. For two-year colleges, repayment rates are uniformly lower, but colleges offering higher-value skills still have significantly higher repayment rates than those that do not.\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "Alumni with more valuable skills are more likely to work for top organizations\n", + "\n", + "Another outcome measure is whether alumni work for a desirable company or organization. LinkedIn lists the 25 enterprises that employ the most alumni from each school. To quantify the value of working for a given entity, employers were coded for desirability with data from a 2014 survey of 46,000 U.S. college students in 329 universities, developed by Universum, a corporate marketing intelligence company. A total of 212 employers, including government agencies, made it onto a top 100 list for at least one group of student majors. The most desirable employers across majors were Google, Disney, Apple, Microsoft, the FBI, Nike, NASA, the Environmental Protection Agency, the Peace Corps, and Facebook. \n", + "For the top 10 percent of four-year colleges on alumni skills, half of LinkedIn alumni profiles indicate employment at one of the 212 top-rated companies, compared to just one in four for schools in the bottom 10 percent. For two-year schools, nearly two in five alumni (37 percent) of top-tier schools by skill worked for a top company, versus one in five alumni (21 percent) of bottom-tier schools.\n", + "For placement at Google specifically, Harvey Mudd has the highest rate—2 percent of all alumni—followed by Stanford, Carnegie Mellon, Caltech, and MIT. Almost all of the colleges with the highest placement rates at Google are in the top 20 percent of alumni skills, including liberal arts colleges like Swarthmore, Pomona, Claremont, McKenna, and Williams.\n", + " \n", + "Author\n", + "\n", + "\n", + "\n", + "\n", + "J\n", + "\n", + "\n", + "\n", + "Jonathan Rothwell\n", + "Former Brookings Expert\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "Alumni with more valuable skills are more likely to work for innovative organizations\n", + "\n", + "Workers who contribute to the creation and development of new, valuable products can lift the living standards of people around the world. Companies that patent are more likely to be creating these sorts of advanced industry products, and 843 entities, including universities and government agencies, own at least 40 patents granted by the U.S. Patent and Trademark Office in 2014. \n", + "Four-colleges that graduate alumni in the top 10 percent by skill are twice as likely to have graduates working at a top patenting organization than are colleges in the bottom 10 percent (3.3 versus 1.6 percent). Likewise, graduates from two-year colleges are about twice as likely to be working for a patenting entity if their school is in the top 10 percent compared to the bottom (1.9 versus 0.9 percent).\n", + "Schools with high placement rates at patenting entities include those listed above, as well as less the U.S. Naval Academy, Lawrence Technological University, the Stevens Institute of Technology, Santa Clara University, Brazosport College, Mount Mercy University, University of Texas-Dallas, the Missouri University of Science and Technology, and San Jose State University.\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "How to judge colleges\n", + "\n", + "Earnings and other economic outcomes should not be equated with social value, and there are plenty of jobs and professions—child care, teaching, social work—that pay modestly but are nevertheless highly valuable to society. Colleges that specialize in this training or instill even moderately valuable skills in the least academically prepared students may be socially important institutions even if their alumni frequently are less affluent.\n", + "Nonetheless, earnings clearly matter privately and socially, as does work that supports innovation and highly productive advanced industries. Many colleges offer programs of study in fields that appear to have almost no market value—nor even any social value since the knowledge acquired is never put to use, at least through paid employment. In this sense, how well colleges instill highly valuable skills and prepare students to contribute productively to the economy should be an important consideration when evaluating schools. Colleges that do this for the students least likely to otherwise succeed are offering an even more beneficial service, as we have discussed in our value-added college research.\n", + "\n", + "\n", + "Correction: A previous version of this post showed graphs which reversed the label on 2- and 4-year colleges. The graphs have been corrected.\n", + "\n", "BODY:\n", - "/article/us-usa-python-hunt/florida-python-hunting-contest-draws-hundreds-idUSBRE9081CL20130109\n", - "URL: Florida python hunting contest draws hundreds\n" + "https://www.brookings.edu/opinions/skills-success-and-why-your-choice-of-college-matters/\n" ] }, { @@ -932,21 +1523,26 @@ "output_type": "stream", "text": [ "New article found for topic: python\n", - "TITLE: MIAMI (Reuters) - Engineers in the Everglades stumbled upon a near-record-breaking Burmese python measuring more than 18 feet long during a routine inspection of levees on Tuesday, a water management district spokesman said. The snake, measuring at 18 feet 2 inches, fell short of the state record by 6 inches, according to the Florida Fish and Wildlife Conservation Commission. Last year, a snake collector in the state discovered the largest python on record there, measuring 18 feet 8 inches, commission spokeswoman Katie Johnson said. The pythons, which can grow to more than 20 feet in their native habitat in Southeast Asia, are one of the most problematic invaders of Florida’s sprawling Everglades wetlands. A near record-breaking Burmese Python measuring more than 18-feet long (5.5 meters) is shown in this January 4, 2014 handout photo provided by South Florida Water Management District January 5, 2014 in Everglades National Park near Miami, Florida. REUTERS/South Florida Water Management District/Handout via ReutersThey eat indigenous species and their food sources, fueling concerns that the predator snakes will fundamentally change the ecosystem. The python found on Tuesday was killed, and its corpse was taken to the University of Florida, where it will be measured and studied by scientists trying to combat the species, according to South Florida Water Management District spokesman Gabe Margasak. Officials have said the python population is believed to have grown to as many as 150,000 in the Everglades. The cold-blooded reptiles are often found atop levees, where they lie for hours at a time to warm up under the Florida sun. The snakes, one of the largest species in the world, found a home to their liking in the Everglades when pet owners started using the wetlands as a convenient dumping ground. Reporting by Zachary Fagenson; Editing by Colleen Jenkins and Lisa Von AhnOur Standards:The Thomson Reuters Trust Principles.\n", + "URL: Modeling with Data: Tools and Techniques for Scientific Computing\n", + "TITLE: \n", + "\n", + "PREFACE\n", + "\n", + "\n", "BODY:\n", - "/article/us-usa-florida-python/18-foot-burmese-python-found-in-florida-everglades-idUSBREA141OP20140205\n", - "URL: 18-foot Burmese python found in Florida Everglades\n", + "https://www.brookings.edu/articles/modeling-with-data-tools-and-techniques-for-scientific-computing/\n", "New article found for topic: python\n", - "TITLE: LONDON, Nov 20 (Reuters) - The comic team Monty Python, whose BBC TV series from the 1970s and feature films took their subversive humour and “Dead Parrot” routine around the world, are to reunite for a stage show, British media reported on Wednesday. A news release issued on behalf of the five surviving Pythons, Eric Idle, John Cleese, Terry Gilliam, Michael Palin and Terry Jones, all in their 70s, said that an official announcement would be made on Thursday. But several British newspapers and media outlets reported that the five would be appearing on stage for the first time together since the 1980s. The group was famed for its skits about a man trying to return a dead parrot to a shopkeeper who claimed the bird was “resting” and for poking fun at the establishment, the military and religion. “We’re getting together and putting on a show - it’s real,” Jones told the BBC. “I‘m quite excited about it. I hope it makes us a lot of money. I hope to be able to pay off my mortgage!” On his Twitter account, Palin wrote: “The Python rides again...?” while Idle on Tuesday tweeted: “Only three days to go till the Python Press Conference. Make sure Python fans are alerted to the big forthcoming news event.” The BBC programme “Monty Python’s Flying Circus” was made for television between 1969 and 1974. The Pythons went on to make films including “Monty Python And The Holy Grail” (1975) and “Monty Python’s Life of Brian” (1979). They last performed live together in Monty Python Live At The Hollywood Bowl in 1982. The sixth Python, Graham Chapman, died of cancer at age 48 in 1989. (Writing by Michael Roddy; Editing by Doina Chiacu)Our Standards:The Thomson Reuters Trust Principles.\n", - "BODY:\n", - "/article/britain-python/monty-python-not-dead-after-all-stage-show-planned-idUSL5N0J50QB20131120\n", - "URL: Monty Python not dead after all - stage show planned\n", - "GETTING INFO ABOUT: data science\n", - "New article found for topic: data science\n", - "TITLE: Dec 20 (Reuters) - Veritone Inc: * VERITONE ACQUIRES ADVANCED DATA SCIENCE AND MACHINE LEARNING FIRM * VERITONE INC - ACQUIRED ADVANCED DATA ANALYTICS SOFTWARE AND RELATED IP ASSETS OF ATIGEO CORP Source text for Eikon: Further company coverage:Our Standards:The Thomson Reuters Trust Principles.\n", + "URL: Forum: Debating Bush’s Wars\n", + "TITLE: \n", + "\n", + "In the \n", + "\n", + "Winter 2007–08 issue \n", + "of Survival, Philip Gordon argued that America’s strategy against terror is failing ‘because the Bush administration chose to wage the wrong war’. Survival invited former Bush speechwriter and Deputy Assistant to the President Peter Wehner and Kishore Mahbubani, Dean and Professor at the Lee Kuan Yew School of Public Policy in Singapore, to reflect on Gordon’s arguments. Their \n", + "comments are available in the above PDF and Philip Gordon’s response is below.\n", + "\n", "BODY:\n", - "/article/brief-veritone-acquires-advanced-data-sc/brief-veritone-acquires-advanced-data-science-and-machine-learning-firm-idUSASB0BYPZ\n", - "URL: BRIEF-Veritone Acquires Advanced Data Science And Machine Learning Firm\n" + "https://www.brookings.edu/articles/forum-debating-bushs-wars/\n" ] }, { @@ -955,31 +1551,22 @@ "output_type": "error", "traceback": [ "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", - "\u001b[0;31mTypeError\u001b[0m Traceback (most recent call last)", - "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/requests/packages/urllib3/connectionpool.py\u001b[0m in \u001b[0;36m_make_request\u001b[0;34m(self, conn, method, url, timeout, **httplib_request_kw)\u001b[0m\n\u001b[1;32m 375\u001b[0m \u001b[0;32mtry\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0;31m# Python 2.7, use buffering of HTTP responses\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 376\u001b[0;31m \u001b[0mhttplib_response\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mconn\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mgetresponse\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mbuffering\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;32mTrue\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 377\u001b[0m \u001b[0;32mexcept\u001b[0m \u001b[0mTypeError\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0;31m# Python 2.6 and older\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;31mTypeError\u001b[0m: getresponse() got an unexpected keyword argument 'buffering'", - "\nDuring handling of the above exception, another exception occurred:\n", "\u001b[0;31mKeyboardInterrupt\u001b[0m Traceback (most recent call last)", - "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[1;32m 55\u001b[0m \u001b[0mprint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"GETTING INFO ABOUT: \"\u001b[0m\u001b[0;34m+\u001b[0m\u001b[0mtopic\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 56\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0mtargetSite\u001b[0m \u001b[0;32min\u001b[0m \u001b[0msites\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 57\u001b[0;31m \u001b[0mcrawler\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msearch\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mtopic\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mtargetSite\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m", - "\u001b[0;32m\u001b[0m in \u001b[0;36msearch\u001b[0;34m(self, topic, site)\u001b[0m\n\u001b[1;32m 29\u001b[0m \u001b[0mbs\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mgetPage\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0murl\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 30\u001b[0m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 31\u001b[0;31m \u001b[0mbs\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mgetPage\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0msite\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0murl\u001b[0m\u001b[0;34m+\u001b[0m\u001b[0murl\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 32\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mbs\u001b[0m \u001b[0;32mis\u001b[0m \u001b[0;32mNone\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 33\u001b[0m \u001b[0mprint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"Something was wrong with that page or URL. Skipping!\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m\u001b[0m in \u001b[0;36mgetPage\u001b[0;34m(self, url)\u001b[0m\n\u001b[1;32m 6\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0mgetPage\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0murl\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 7\u001b[0m \u001b[0;32mtry\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 8\u001b[0;31m \u001b[0mreq\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mrequests\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mget\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0murl\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 9\u001b[0m \u001b[0;32mexcept\u001b[0m \u001b[0mrequests\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mexceptions\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mRequestException\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 10\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0;32mNone\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/requests/api.py\u001b[0m in \u001b[0;36mget\u001b[0;34m(url, params, **kwargs)\u001b[0m\n\u001b[1;32m 65\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 66\u001b[0m \u001b[0mkwargs\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msetdefault\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'allow_redirects'\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;32mTrue\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 67\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mrequest\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'get'\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0murl\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mparams\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mparams\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 68\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 69\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/requests/api.py\u001b[0m in \u001b[0;36mrequest\u001b[0;34m(method, url, **kwargs)\u001b[0m\n\u001b[1;32m 51\u001b[0m \u001b[0;31m# cases, and look like a memory leak in others.\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 52\u001b[0m \u001b[0;32mwith\u001b[0m \u001b[0msessions\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mSession\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;32mas\u001b[0m \u001b[0msession\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 53\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0msession\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mrequest\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mmethod\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mmethod\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0murl\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0murl\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 54\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 55\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/requests/sessions.py\u001b[0m in \u001b[0;36mrequest\u001b[0;34m(self, method, url, params, data, headers, cookies, files, auth, timeout, allow_redirects, proxies, hooks, stream, verify, cert, json)\u001b[0m\n\u001b[1;32m 466\u001b[0m }\n\u001b[1;32m 467\u001b[0m \u001b[0msend_kwargs\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mupdate\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0msettings\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 468\u001b[0;31m \u001b[0mresp\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msend\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mprep\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0msend_kwargs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 469\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 470\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mresp\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/requests/sessions.py\u001b[0m in \u001b[0;36msend\u001b[0;34m(self, request, **kwargs)\u001b[0m\n\u001b[1;32m 595\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 596\u001b[0m \u001b[0;31m# Resolve redirects if allowed.\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 597\u001b[0;31m \u001b[0mhistory\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m[\u001b[0m\u001b[0mresp\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0mresp\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mgen\u001b[0m\u001b[0;34m]\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mallow_redirects\u001b[0m \u001b[0;32melse\u001b[0m \u001b[0;34m[\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 598\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 599\u001b[0m \u001b[0;31m# Shuffle things around if there's history.\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/requests/sessions.py\u001b[0m in \u001b[0;36m\u001b[0;34m(.0)\u001b[0m\n\u001b[1;32m 595\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 596\u001b[0m \u001b[0;31m# Resolve redirects if allowed.\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 597\u001b[0;31m \u001b[0mhistory\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m[\u001b[0m\u001b[0mresp\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0mresp\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mgen\u001b[0m\u001b[0;34m]\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mallow_redirects\u001b[0m \u001b[0;32melse\u001b[0m \u001b[0;34m[\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 598\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 599\u001b[0m \u001b[0;31m# Shuffle things around if there's history.\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/requests/sessions.py\u001b[0m in \u001b[0;36mresolve_redirects\u001b[0;34m(self, resp, req, stream, timeout, verify, cert, proxies, **adapter_kwargs)\u001b[0m\n\u001b[1;32m 193\u001b[0m \u001b[0mproxies\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mproxies\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 194\u001b[0m \u001b[0mallow_redirects\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;32mFalse\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 195\u001b[0;31m \u001b[0;34m**\u001b[0m\u001b[0madapter_kwargs\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 196\u001b[0m )\n\u001b[1;32m 197\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/requests/sessions.py\u001b[0m in \u001b[0;36msend\u001b[0;34m(self, request, **kwargs)\u001b[0m\n\u001b[1;32m 574\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 575\u001b[0m \u001b[0;31m# Send the request\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 576\u001b[0;31m \u001b[0mr\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0madapter\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msend\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mrequest\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 577\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 578\u001b[0m \u001b[0;31m# Total elapsed time of the request (approximately)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/requests/adapters.py\u001b[0m in \u001b[0;36msend\u001b[0;34m(self, request, stream, timeout, verify, cert, proxies)\u001b[0m\n\u001b[1;32m 374\u001b[0m \u001b[0mdecode_content\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;32mFalse\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 375\u001b[0m \u001b[0mretries\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mmax_retries\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 376\u001b[0;31m \u001b[0mtimeout\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mtimeout\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 377\u001b[0m )\n\u001b[1;32m 378\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/requests/packages/urllib3/connectionpool.py\u001b[0m in \u001b[0;36murlopen\u001b[0;34m(self, method, url, body, headers, retries, redirect, assert_same_host, timeout, pool_timeout, release_conn, **response_kw)\u001b[0m\n\u001b[1;32m 557\u001b[0m httplib_response = self._make_request(conn, method, url,\n\u001b[1;32m 558\u001b[0m \u001b[0mtimeout\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mtimeout_obj\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 559\u001b[0;31m body=body, headers=headers)\n\u001b[0m\u001b[1;32m 560\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 561\u001b[0m \u001b[0;31m# If we're going to release the connection in ``finally:``, then\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/requests/packages/urllib3/connectionpool.py\u001b[0m in \u001b[0;36m_make_request\u001b[0;34m(self, conn, method, url, timeout, **httplib_request_kw)\u001b[0m\n\u001b[1;32m 376\u001b[0m \u001b[0mhttplib_response\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mconn\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mgetresponse\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mbuffering\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;32mTrue\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 377\u001b[0m \u001b[0;32mexcept\u001b[0m \u001b[0mTypeError\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0;31m# Python 2.6 and older\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 378\u001b[0;31m \u001b[0mhttplib_response\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mconn\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mgetresponse\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 379\u001b[0m \u001b[0;32mexcept\u001b[0m \u001b[0;34m(\u001b[0m\u001b[0mSocketTimeout\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mBaseSSLError\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mSocketError\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;32mas\u001b[0m \u001b[0me\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 380\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_raise_timeout\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0merr\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0me\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0murl\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0murl\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mtimeout_value\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mread_timeout\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/http/client.py\u001b[0m in \u001b[0;36mgetresponse\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 1329\u001b[0m \u001b[0;32mtry\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1330\u001b[0m \u001b[0;32mtry\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 1331\u001b[0;31m \u001b[0mresponse\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mbegin\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 1332\u001b[0m \u001b[0;32mexcept\u001b[0m \u001b[0mConnectionError\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1333\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mclose\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/http/client.py\u001b[0m in \u001b[0;36mbegin\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 295\u001b[0m \u001b[0;31m# read until we get a non-100 response\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 296\u001b[0m \u001b[0;32mwhile\u001b[0m \u001b[0;32mTrue\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 297\u001b[0;31m \u001b[0mversion\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mstatus\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mreason\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_read_status\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 298\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mstatus\u001b[0m \u001b[0;34m!=\u001b[0m \u001b[0mCONTINUE\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 299\u001b[0m \u001b[0;32mbreak\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/http/client.py\u001b[0m in \u001b[0;36m_read_status\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 256\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 257\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0m_read_status\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 258\u001b[0;31m \u001b[0mline\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mstr\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mfp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mreadline\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0m_MAXLINE\u001b[0m \u001b[0;34m+\u001b[0m \u001b[0;36m1\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m\"iso-8859-1\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 259\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mlen\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mline\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;34m>\u001b[0m \u001b[0m_MAXLINE\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 260\u001b[0m \u001b[0;32mraise\u001b[0m \u001b[0mLineTooLong\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"status line\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[1;32m 59\u001b[0m \u001b[0mprint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'GETTING INFO ABOUT: '\u001b[0m \u001b[0;34m+\u001b[0m \u001b[0mtopic\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 60\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0mtargetSite\u001b[0m \u001b[0;32min\u001b[0m \u001b[0msites\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 61\u001b[0;31m \u001b[0mcrawler\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msearch\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mtopic\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mtargetSite\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m", + "\u001b[0;32m\u001b[0m in \u001b[0;36msearch\u001b[0;34m(self, topic, site)\u001b[0m\n\u001b[1;32m 27\u001b[0m \u001b[0;31m# Check to see whether it's a relative or an absolute URL\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 28\u001b[0m \u001b[0;32mif\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0msite\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mabsoluteUrl\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 29\u001b[0;31m \u001b[0mbs\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mgetPage\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0murl\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 30\u001b[0m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 31\u001b[0m \u001b[0mbs\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mgetPage\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0msite\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0murl\u001b[0m \u001b[0;34m+\u001b[0m \u001b[0murl\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m\u001b[0m in \u001b[0;36mgetPage\u001b[0;34m(self, url)\u001b[0m\n\u001b[1;32m 6\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0mgetPage\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0murl\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 7\u001b[0m \u001b[0;32mtry\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 8\u001b[0;31m \u001b[0mreq\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mrequests\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mget\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0murl\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 9\u001b[0m \u001b[0;32mexcept\u001b[0m \u001b[0mrequests\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mexceptions\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mRequestException\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 10\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0;32mNone\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/requests/api.py\u001b[0m in \u001b[0;36mget\u001b[0;34m(url, params, **kwargs)\u001b[0m\n\u001b[1;32m 70\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 71\u001b[0m \u001b[0mkwargs\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msetdefault\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'allow_redirects'\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;32mTrue\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 72\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mrequest\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'get'\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0murl\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mparams\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mparams\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 73\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 74\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/requests/api.py\u001b[0m in \u001b[0;36mrequest\u001b[0;34m(method, url, **kwargs)\u001b[0m\n\u001b[1;32m 56\u001b[0m \u001b[0;31m# cases, and look like a memory leak in others.\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 57\u001b[0m \u001b[0;32mwith\u001b[0m \u001b[0msessions\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mSession\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;32mas\u001b[0m \u001b[0msession\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 58\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0msession\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mrequest\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mmethod\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mmethod\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0murl\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0murl\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 59\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 60\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/requests/sessions.py\u001b[0m in \u001b[0;36mrequest\u001b[0;34m(self, method, url, params, data, headers, cookies, files, auth, timeout, allow_redirects, proxies, hooks, stream, verify, cert, json)\u001b[0m\n\u001b[1;32m 506\u001b[0m }\n\u001b[1;32m 507\u001b[0m \u001b[0msend_kwargs\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mupdate\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0msettings\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 508\u001b[0;31m \u001b[0mresp\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msend\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mprep\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0msend_kwargs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 509\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 510\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mresp\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/requests/sessions.py\u001b[0m in \u001b[0;36msend\u001b[0;34m(self, request, **kwargs)\u001b[0m\n\u001b[1;32m 656\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 657\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0mstream\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 658\u001b[0;31m \u001b[0mr\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mcontent\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 659\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 660\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mr\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/requests/models.py\u001b[0m in \u001b[0;36mcontent\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 821\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_content\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;32mNone\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 822\u001b[0m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 823\u001b[0;31m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_content\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mbytes\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mjoin\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0miter_content\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mCONTENT_CHUNK_SIZE\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;32mor\u001b[0m \u001b[0mbytes\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 824\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 825\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_content_consumed\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;32mTrue\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/requests/models.py\u001b[0m in \u001b[0;36mgenerate\u001b[0;34m()\u001b[0m\n\u001b[1;32m 743\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mhasattr\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mraw\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m'stream'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 744\u001b[0m \u001b[0;32mtry\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 745\u001b[0;31m \u001b[0;32mfor\u001b[0m \u001b[0mchunk\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mraw\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mstream\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mchunk_size\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mdecode_content\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;32mTrue\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 746\u001b[0m \u001b[0;32myield\u001b[0m \u001b[0mchunk\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 747\u001b[0m \u001b[0;32mexcept\u001b[0m \u001b[0mProtocolError\u001b[0m \u001b[0;32mas\u001b[0m \u001b[0me\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/urllib3/response.py\u001b[0m in \u001b[0;36mstream\u001b[0;34m(self, amt, decode_content)\u001b[0m\n\u001b[1;32m 430\u001b[0m \"\"\"\n\u001b[1;32m 431\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mchunked\u001b[0m \u001b[0;32mand\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msupports_chunked_reads\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 432\u001b[0;31m \u001b[0;32mfor\u001b[0m \u001b[0mline\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mread_chunked\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mamt\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mdecode_content\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mdecode_content\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 433\u001b[0m \u001b[0;32myield\u001b[0m \u001b[0mline\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 434\u001b[0m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/urllib3/response.py\u001b[0m in \u001b[0;36mread_chunked\u001b[0;34m(self, amt, decode_content)\u001b[0m\n\u001b[1;32m 596\u001b[0m \u001b[0;32mwith\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_error_catcher\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 597\u001b[0m \u001b[0;32mwhile\u001b[0m \u001b[0;32mTrue\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 598\u001b[0;31m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_update_chunk_length\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 599\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mchunk_left\u001b[0m \u001b[0;34m==\u001b[0m \u001b[0;36m0\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 600\u001b[0m \u001b[0;32mbreak\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/urllib3/response.py\u001b[0m in \u001b[0;36m_update_chunk_length\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 538\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mchunk_left\u001b[0m \u001b[0;32mis\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0;32mNone\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 539\u001b[0m \u001b[0;32mreturn\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 540\u001b[0;31m \u001b[0mline\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_fp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mfp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mreadline\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 541\u001b[0m \u001b[0mline\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mline\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msplit\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34mb';'\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;36m1\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m0\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 542\u001b[0m \u001b[0;32mtry\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/socket.py\u001b[0m in \u001b[0;36mreadinto\u001b[0;34m(self, b)\u001b[0m\n\u001b[1;32m 584\u001b[0m \u001b[0;32mwhile\u001b[0m \u001b[0;32mTrue\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 585\u001b[0m \u001b[0;32mtry\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 586\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_sock\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mrecv_into\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mb\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 587\u001b[0m \u001b[0;32mexcept\u001b[0m \u001b[0mtimeout\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 588\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_timeout_occurred\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;32mTrue\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/ssl.py\u001b[0m in \u001b[0;36mrecv_into\u001b[0;34m(self, buffer, nbytes, flags)\u001b[0m\n\u001b[1;32m 1000\u001b[0m \u001b[0;34m\"non-zero flags not allowed in calls to recv_into() on %s\"\u001b[0m \u001b[0;34m%\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1001\u001b[0m self.__class__)\n\u001b[0;32m-> 1002\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mread\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mnbytes\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mbuffer\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 1003\u001b[0m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1004\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0msocket\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mrecv_into\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mbuffer\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mnbytes\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mflags\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/ssl.py\u001b[0m in \u001b[0;36mread\u001b[0;34m(self, len, buffer)\u001b[0m\n\u001b[1;32m 863\u001b[0m \u001b[0;32mraise\u001b[0m \u001b[0mValueError\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"Read on closed or unwrapped SSL socket.\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 864\u001b[0m \u001b[0;32mtry\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 865\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_sslobj\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mread\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mlen\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mbuffer\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 866\u001b[0m \u001b[0;32mexcept\u001b[0m \u001b[0mSSLError\u001b[0m \u001b[0;32mas\u001b[0m \u001b[0mx\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 867\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mx\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m0\u001b[0m\u001b[0;34m]\u001b[0m \u001b[0;34m==\u001b[0m \u001b[0mSSL_ERROR_EOF\u001b[0m \u001b[0;32mand\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msuppress_ragged_eofs\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/ssl.py\u001b[0m in \u001b[0;36mread\u001b[0;34m(self, len, buffer)\u001b[0m\n\u001b[1;32m 623\u001b[0m \"\"\"\n\u001b[1;32m 624\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mbuffer\u001b[0m \u001b[0;32mis\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0;32mNone\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 625\u001b[0;31m \u001b[0mv\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_sslobj\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mread\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mlen\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mbuffer\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 626\u001b[0m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 627\u001b[0m \u001b[0mv\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_sslobj\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mread\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mlen\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/urllib3/contrib/pyopenssl.py\u001b[0m in \u001b[0;36mrecv_into\u001b[0;34m(self, *args, **kwargs)\u001b[0m\n\u001b[1;32m 278\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0mrecv_into\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 279\u001b[0m \u001b[0;32mtry\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 280\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mconnection\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mrecv_into\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 281\u001b[0m \u001b[0;32mexcept\u001b[0m \u001b[0mOpenSSL\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mSSL\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mSysCallError\u001b[0m \u001b[0;32mas\u001b[0m \u001b[0me\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 282\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msuppress_ragged_eofs\u001b[0m \u001b[0;32mand\u001b[0m \u001b[0me\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0margs\u001b[0m \u001b[0;34m==\u001b[0m \u001b[0;34m(\u001b[0m\u001b[0;34m-\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m'Unexpected EOF'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/OpenSSL/SSL.py\u001b[0m in \u001b[0;36mrecv_into\u001b[0;34m(self, buffer, nbytes, flags)\u001b[0m\n\u001b[1;32m 1544\u001b[0m \u001b[0mresult\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0m_lib\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mSSL_peek\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_ssl\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mbuf\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mnbytes\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1545\u001b[0m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 1546\u001b[0;31m \u001b[0mresult\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0m_lib\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mSSL_read\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_ssl\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mbuf\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mnbytes\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 1547\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_raise_ssl_error\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_ssl\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mresult\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1548\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;31mKeyboardInterrupt\u001b[0m: " ] } @@ -988,7 +1575,6 @@ "import requests\n", "from bs4 import BeautifulSoup\n", "\n", - "\n", "class Crawler:\n", "\n", " def getPage(self, url):\n", @@ -1002,7 +1588,7 @@ " childObj = pageObj.select(selector)\n", " if childObj is not None and len(childObj) > 0:\n", " return childObj[0].get_text()\n", - " return \"\"\n", + " return ''\n", "\n", " def search(self, topic, site):\n", " \"\"\"\n", @@ -1011,14 +1597,14 @@ " bs = self.getPage(site.searchUrl + topic)\n", " searchResults = bs.select(site.resultListing)\n", " for result in searchResults:\n", - " url = result.select(site.resultUrl)[0].attrs[\"href\"]\n", + " url = result.select(site.resultUrl)[0].attrs['href']\n", " # Check to see whether it's a relative or an absolute URL\n", " if(site.absoluteUrl):\n", " bs = self.getPage(url)\n", " else:\n", " bs = self.getPage(site.url + url)\n", " if bs is None:\n", - " print(\"Something was wrong with that page or URL. Skipping!\")\n", + " print('Something was wrong with that page or URL. Skipping!')\n", " return\n", " title = self.safeGet(bs, site.titleTag)\n", " body = self.safeGet(bs, site.bodyTag)\n", @@ -1044,7 +1630,7 @@ "\n", "topics = ['python', 'data science']\n", "for topic in topics:\n", - " print(\"GETTING INFO ABOUT: \" + topic)\n", + " print('GETTING INFO ABOUT: ' + topic)\n", " for targetSite in sites:\n", " crawler.search(topic, targetSite)" ] @@ -1081,9 +1667,9 @@ " self.body = body\n", "\n", " def print(self):\n", - " print(\"URL: {}\".format(self.url))\n", - " print(\"TITLE: {}\".format(self.title))\n", - " print(\"BODY:\\n{}\".format(self.body))" + " print('URL: {}'.format(self.url))\n", + " print('TITLE: {}'.format(self.title))\n", + " print('BODY:\\n{}'.format(self.body))" ] }, { diff --git a/Chapter13-ImageProcessing.ipynb b/Chapter13-ImageProcessing.ipynb index db9b049..b9c2fb0 100644 --- a/Chapter13-ImageProcessing.ipynb +++ b/Chapter13-ImageProcessing.ipynb @@ -476,13 +476,6 @@ "else:\n", " print('There was a problem reading the CAPTCHA correctly!')" ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] } ], "metadata": { diff --git a/Chapter14-ScrapingTraps.ipynb b/Chapter14-ScrapingTraps.ipynb index 2756ef7..19317bf 100644 --- a/Chapter14-ScrapingTraps.ipynb +++ b/Chapter14-ScrapingTraps.ipynb @@ -155,13 +155,6 @@ " if not field.is_displayed():\n", " print('Do not change value of {}'.format(field.get_attribute('name')))" ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] } ], "metadata": { diff --git a/Chapter15_Testing.ipynb b/Chapter15_Testing.ipynb index 18b76e0..24e8220 100644 --- a/Chapter15_Testing.ipynb +++ b/Chapter15_Testing.ipynb @@ -2,9 +2,36 @@ "cells": [ { "cell_type": "code", - "execution_count": null, + "execution_count": 1, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "." + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Setting up the test\n", + "Tearing down the test\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "\n", + "----------------------------------------------------------------------\n", + "Ran 1 test in 0.001s\n", + "\n", + "OK\n" + ] + } + ], "source": [ "import unittest\n", "\n", @@ -28,13 +55,28 @@ "execution_count": 2, "metadata": {}, "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "." + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Setting up the test\n", + "Tearing down the test\n" + ] + }, { "name": "stderr", "output_type": "stream", "text": [ "..\n", "----------------------------------------------------------------------\n", - "Ran 2 tests in 0.838s\n", + "Ran 3 tests in 0.723s\n", "\n", "OK\n" ] @@ -74,43 +116,9 @@ }, { "cell_type": "code", - "execution_count": 10, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/bs4/builder/_htmlparser.py:54: ResourceWarning: unclosed \n", - " attr_dict = {}\n", - "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/ipykernel_launcher.py:16: DeprecationWarning: Please use assertEqual instead.\n", - " app.launch_new_instance()\n", - "F\n", - "======================================================================\n", - "FAIL: test_PageProperties (__main__.TestWikipedia)\n", - "----------------------------------------------------------------------\n", - "Traceback (most recent call last):\n", - " File \"\", line 16, in test_PageProperties\n", - " self.assertEquals(titles[0], titles[1])\n", - "AssertionError: \"list of monty python's flying circus episodes\" != 'the bishop (monty python)'\n", - "- list of monty python's flying circus episodes\n", - "+ the bishop (monty python)\n", - "\n", - "\n", - "----------------------------------------------------------------------\n", - "Ran 1 test in 3.099s\n", - "\n", - "FAILED (failures=1)\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Once deleted, variables cannot be recovered. Proceed (y/[n])? y\n" - ] - } - ], + "outputs": [], "source": [ "from urllib.request import urlopen\n", "from bs4 import BeautifulSoup\n", @@ -127,7 +135,7 @@ " for i in range(1, 10):\n", " self.bs = BeautifulSoup(urlopen(self.url), 'html.parser')\n", " titles = self.titleMatchesURL()\n", - " self.assertEquals(titles[0], titles[1])\n", + " self.assertEqual(titles[0], titles[1])\n", " self.assertTrue(self.contentExists())\n", " self.url = self.getNextLink()\n", " print('Done!')\n", From f04a5b7112481d98963abaa06934f6d4482a74f7 Mon Sep 17 00:00:00 2001 From: REMitchell Date: Mon, 5 Nov 2018 08:26:09 -0500 Subject: [PATCH 44/47] More cleanup --- Chapter04_CrawlingModels.ipynb | 2 -- Chapter06_StoringData.ipynb | 59 ++++++++++++--------------------- Chapter13-ImageProcessing.ipynb | 20 +++++------ 3 files changed, 31 insertions(+), 50 deletions(-) diff --git a/Chapter04_CrawlingModels.ipynb b/Chapter04_CrawlingModels.ipynb index 886849c..4659928 100644 --- a/Chapter04_CrawlingModels.ipynb +++ b/Chapter04_CrawlingModels.ipynb @@ -1861,7 +1861,6 @@ " self.productNumberTag = productNumberTag\n", " self.priceTag = priceTag\n", "\n", - "\n", "class Article(Website):\n", " \"\"\"Contains information for scraping an article page\"\"\"\n", "\n", @@ -1877,7 +1876,6 @@ "metadata": {}, "outputs": [], "source": [ - "\n", "\n", "def parsePage(url):\n", " \n", diff --git a/Chapter06_StoringData.ipynb b/Chapter06_StoringData.ipynb index f82e8cc..f84d907 100644 --- a/Chapter06_StoringData.ipynb +++ b/Chapter06_StoringData.ipynb @@ -2,16 +2,16 @@ "cells": [ { "cell_type": "code", - "execution_count": 1, + "execution_count": 3, "metadata": {}, "outputs": [ { "data": { "text/plain": [ - "('logo.jpg', )" + "('logo.jpg', )" ] }, - "execution_count": 1, + "execution_count": 3, "metadata": {}, "output_type": "execute_result" } @@ -27,15 +27,6 @@ "urlretrieve (imageLocation, 'logo.jpg')" ] }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "scrolled": true - }, - "outputs": [], - "source": [] - }, { "cell_type": "code", "execution_count": 2, @@ -113,7 +104,7 @@ }, { "cell_type": "code", - "execution_count": 1, + "execution_count": 4, "metadata": {}, "outputs": [], "source": [ @@ -141,7 +132,7 @@ "\n", "html = urlopen('http://en.wikipedia.org/wiki/Comparison_of_text_editors')\n", "bs = BeautifulSoup(html, 'html.parser')\n", - "#The main comparison table is currently the first table on the page\n", + "# The main comparison table is currently the first table on the page\n", "table = bs.findAll('table',{'class':'wikitable'})[0]\n", "rows = table.findAll('tr')\n", "\n", @@ -159,34 +150,26 @@ }, { "cell_type": "code", - "execution_count": null, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [] - }, - { - "cell_type": "code", - "execution_count": 7, + "execution_count": 5, "metadata": {}, "outputs": [ { - "ename": "OperationalError", - "evalue": "(2003, \"Can't connect to MySQL server on '127.0.0.1' ([Errno 2] No such file or directory)\")", + "ename": "InternalError", + "evalue": "(1049, \"Unknown database 'scraping'\")", "output_type": "error", "traceback": [ "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", - "\u001b[0;31mFileNotFoundError\u001b[0m Traceback (most recent call last)", - "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/pymysql/connections.py\u001b[0m in \u001b[0;36mconnect\u001b[0;34m(self, sock)\u001b[0m\n\u001b[1;32m 904\u001b[0m \u001b[0msock\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msettimeout\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mconnect_timeout\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 905\u001b[0;31m \u001b[0msock\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mconnect\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0munix_socket\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 906\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mhost_info\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m\"Localhost via UNIX socket\"\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;31mFileNotFoundError\u001b[0m: [Errno 2] No such file or directory", - "\nDuring handling of the above exception, another exception occurred:\n", - "\u001b[0;31mOperationalError\u001b[0m Traceback (most recent call last)", - "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[1;32m 7\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 8\u001b[0m conn = pymysql.connect(host='127.0.0.1', unix_socket='/tmp/mysql.sock',\n\u001b[0;32m----> 9\u001b[0;31m user='root', passwd=None, db='mysql', charset='utf8')\n\u001b[0m\u001b[1;32m 10\u001b[0m \u001b[0mcur\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mconn\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mcursor\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 11\u001b[0m \u001b[0mcur\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mexecute\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"USE scraping\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/pymysql/__init__.py\u001b[0m in \u001b[0;36mConnect\u001b[0;34m(*args, **kwargs)\u001b[0m\n\u001b[1;32m 88\u001b[0m \"\"\"\n\u001b[1;32m 89\u001b[0m \u001b[0;32mfrom\u001b[0m \u001b[0;34m.\u001b[0m\u001b[0mconnections\u001b[0m \u001b[0;32mimport\u001b[0m \u001b[0mConnection\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 90\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mConnection\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 91\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 92\u001b[0m \u001b[0;32mfrom\u001b[0m \u001b[0;34m.\u001b[0m \u001b[0;32mimport\u001b[0m \u001b[0mconnections\u001b[0m \u001b[0;32mas\u001b[0m \u001b[0m_orig_conn\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/pymysql/connections.py\u001b[0m in \u001b[0;36m__init__\u001b[0;34m(self, host, user, password, database, port, unix_socket, charset, sql_mode, read_default_file, conv, use_unicode, client_flag, cursorclass, init_command, connect_timeout, ssl, read_default_group, compress, named_pipe, no_delay, autocommit, db, passwd, local_infile, max_allowed_packet, defer_connect, auth_plugin_map, read_timeout, write_timeout, bind_address)\u001b[0m\n\u001b[1;32m 704\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_sock\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;32mNone\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 705\u001b[0m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 706\u001b[0;31m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mconnect\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 707\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 708\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0m_create_ssl_ctx\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0msslp\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/pymysql/connections.py\u001b[0m in \u001b[0;36mconnect\u001b[0;34m(self, sock)\u001b[0m\n\u001b[1;32m 961\u001b[0m \u001b[0mexc\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mtraceback\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mtraceback\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mformat_exc\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 962\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mDEBUG\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0mprint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mexc\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mtraceback\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 963\u001b[0;31m \u001b[0;32mraise\u001b[0m \u001b[0mexc\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 964\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 965\u001b[0m \u001b[0;31m# If e is neither DatabaseError or IOError, It's a bug.\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;31mOperationalError\u001b[0m: (2003, \"Can't connect to MySQL server on '127.0.0.1' ([Errno 2] No such file or directory)\")" + "\u001b[0;31mInternalError\u001b[0m Traceback (most recent call last)", + "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[1;32m 9\u001b[0m user='root', passwd='root', db='mysql', charset='utf8')\n\u001b[1;32m 10\u001b[0m \u001b[0mcur\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mconn\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mcursor\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 11\u001b[0;31m \u001b[0mcur\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mexecute\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"USE scraping\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 12\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 13\u001b[0m \u001b[0mrandom\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mseed\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mdatetime\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mdatetime\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mnow\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/pymysql/cursors.py\u001b[0m in \u001b[0;36mexecute\u001b[0;34m(self, query, args)\u001b[0m\n\u001b[1;32m 164\u001b[0m \u001b[0mquery\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mmogrify\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mquery\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0margs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 165\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 166\u001b[0;31m \u001b[0mresult\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_query\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mquery\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 167\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_executed\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mquery\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 168\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mresult\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/pymysql/cursors.py\u001b[0m in \u001b[0;36m_query\u001b[0;34m(self, q)\u001b[0m\n\u001b[1;32m 320\u001b[0m \u001b[0mconn\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_get_db\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 321\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_last_executed\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mq\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 322\u001b[0;31m \u001b[0mconn\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mquery\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mq\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 323\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_do_get_result\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 324\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mrowcount\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/pymysql/connections.py\u001b[0m in \u001b[0;36mquery\u001b[0;34m(self, sql, unbuffered)\u001b[0m\n\u001b[1;32m 854\u001b[0m \u001b[0msql\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0msql\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mencode\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mencoding\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m'surrogateescape'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 855\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_execute_command\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mCOMMAND\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mCOM_QUERY\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0msql\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 856\u001b[0;31m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_affected_rows\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_read_query_result\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0munbuffered\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0munbuffered\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 857\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_affected_rows\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 858\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/pymysql/connections.py\u001b[0m in \u001b[0;36m_read_query_result\u001b[0;34m(self, unbuffered)\u001b[0m\n\u001b[1;32m 1055\u001b[0m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1056\u001b[0m \u001b[0mresult\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mMySQLResult\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 1057\u001b[0;31m \u001b[0mresult\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mread\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 1058\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_result\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mresult\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1059\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mresult\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mserver_status\u001b[0m \u001b[0;32mis\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0;32mNone\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/pymysql/connections.py\u001b[0m in \u001b[0;36mread\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 1338\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0mread\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1339\u001b[0m \u001b[0;32mtry\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 1340\u001b[0;31m \u001b[0mfirst_packet\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mconnection\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_read_packet\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 1341\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1342\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mfirst_packet\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mis_ok_packet\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/pymysql/connections.py\u001b[0m in \u001b[0;36m_read_packet\u001b[0;34m(self, packet_type)\u001b[0m\n\u001b[1;32m 1012\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1013\u001b[0m \u001b[0mpacket\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mpacket_type\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mbuff\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mencoding\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 1014\u001b[0;31m \u001b[0mpacket\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mcheck_error\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 1015\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mpacket\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1016\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/pymysql/connections.py\u001b[0m in \u001b[0;36mcheck_error\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 391\u001b[0m \u001b[0merrno\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mread_uint16\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 392\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mDEBUG\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0mprint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"errno =\"\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0merrno\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 393\u001b[0;31m \u001b[0merr\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mraise_mysql_exception\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_data\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 394\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 395\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0mdump\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/pymysql/err.py\u001b[0m in \u001b[0;36mraise_mysql_exception\u001b[0;34m(data)\u001b[0m\n\u001b[1;32m 105\u001b[0m \u001b[0merrval\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mdata\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m3\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mdecode\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'utf-8'\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m'replace'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 106\u001b[0m \u001b[0merrorclass\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0merror_map\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mget\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0merrno\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mInternalError\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 107\u001b[0;31m \u001b[0;32mraise\u001b[0m \u001b[0merrorclass\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0merrno\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0merrval\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m", + "\u001b[0;31mInternalError\u001b[0m: (1049, \"Unknown database 'scraping'\")" ] } ], @@ -199,9 +182,9 @@ "import re\n", "\n", "conn = pymysql.connect(host='127.0.0.1', unix_socket='/tmp/mysql.sock',\n", - " user='root', passwd=None, db='mysql', charset='utf8')\n", + " user='root', passwd='root', db='mysql', charset='utf8')\n", "cur = conn.cursor()\n", - "cur.execute(\"USE scraping\")\n", + "cur.execute('USE scraping')\n", "\n", "random.seed(datetime.datetime.now())\n", "\n", diff --git a/Chapter13-ImageProcessing.ipynb b/Chapter13-ImageProcessing.ipynb index b9c2fb0..c8c424f 100644 --- a/Chapter13-ImageProcessing.ipynb +++ b/Chapter13-ImageProcessing.ipynb @@ -2,7 +2,7 @@ "cells": [ { "cell_type": "code", - "execution_count": 2, + "execution_count": 1, "metadata": {}, "outputs": [ { @@ -73,7 +73,7 @@ " image.save(newFilePath)\n", " return image\n", "\n", - "image = cleanFile(\"files/textBad.png\", \"files/textCleaned.png\")\n", + "image = cleanFile('files/textBad.png', 'files/textCleaned.png')\n", "\n", "#call tesseract to do OCR on the newly created image\n", "print(pytesseract.image_to_string(image))" @@ -107,14 +107,14 @@ " image.save(newFilePath)\n", "\n", " #call tesseract to do OCR on the newly created image\n", - " subprocess.call([\"tesseract\", newFilePath, \"output\"])\n", + " subprocess.call(['tesseract', newFilePath, 'output'])\n", " \n", " #Open and read the resulting data file\n", - " outputFile = open(\"output.txt\", 'r')\n", + " outputFile = open('output.txt', 'r')\n", " print(outputFile.read())\n", " outputFile.close()\n", "\n", - "cleanFile(\"files/textOriginal.png\", \"files/text_2.png\")" + "cleanFile('files/textOriginal.png', 'files/text_2.png')" ] }, { @@ -178,7 +178,7 @@ " \n", " return np.average(confidences, weights=numChars), sum(numChars)\n", " \n", - "filePath = \"files/textBad.png\"\n", + "filePath = 'files/textBad.png'\n", "\n", "start = 80\n", "step = 5\n", @@ -187,7 +187,7 @@ "for threshold in range(start, end, step):\n", " image = cleanFile(filePath, threshold)\n", " scores = getConfidence(image)\n", - " print(\"threshold: \"+str(threshold)+\", confidence: \"+str(scores[0])+\" numChars \"+str(scores[1]))\n" + " print('threshold: {}, confidence: {}, numChars '.format(str(threshold), str(scores[0], str(scores[1]))))\n" ] }, { @@ -400,7 +400,7 @@ " pages = driver.find_elements_by_xpath(\n", " '//div[@class=\\'pageImage\\']/div/img')\n", " if not len(pages):\n", - " print(\"No pages found\")\n", + " print('No pages found')\n", " for page in pages:\n", " image = page.get_attribute('src')\n", " print('Found image: {}'.format(image))\n", @@ -414,14 +414,14 @@ }, { "cell_type": "code", - "execution_count": 2, + "execution_count": 11, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "Captcha solution attempt: \\,Lh8a\n", + "Captcha solution attempt: \n", "There was a problem reading the CAPTCHA correctly!\n" ] } From 201fc77921620de229373570555f44785e168b6c Mon Sep 17 00:00:00 2001 From: tmrblr <31130803+tmrblr@users.noreply.github.com> Date: Sat, 23 Jul 2022 20:43:32 +0700 Subject: [PATCH 45/47] fix No module named 'scrapy.contrib' scrapy.contrib has been deprecated --- Chapter05_Scrapy/wikiSpider/wikiSpider/articles.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Chapter05_Scrapy/wikiSpider/wikiSpider/articles.py b/Chapter05_Scrapy/wikiSpider/wikiSpider/articles.py index 2b2d0c2..40132c8 100644 --- a/Chapter05_Scrapy/wikiSpider/wikiSpider/articles.py +++ b/Chapter05_Scrapy/wikiSpider/wikiSpider/articles.py @@ -1,5 +1,5 @@ -from scrapy.contrib.linkextractors import LinkExtractor -from scrapy.contrib.spiders import CrawlSpider, Rule +from scrapy.linkextractors import LinkExtractor +from scrapy.spiders import CrawlSpider, Rule class ArticleSpider(CrawlSpider): name = 'articles' From 217b65461f75a0c9b7c75698f20380eecf6e0ca4 Mon Sep 17 00:00:00 2001 From: Andrew Kelley Date: Mon, 6 Feb 2023 10:46:27 -0500 Subject: [PATCH 46/47] Remove `^` from Regex for Wiki links The links being scraped are now absolute (full) URLs. The rule should look for links that contain `/wiki/` rather than start with `/wiki/`. Ex: https://en.wikipedia.org/wiki/Benevolent_dictator_for_life rather than /wiki/Benevolent_dictator_for_life' --- Chapter05_Scrapy/wikiSpider/wikiSpider/articlesMoreRules.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Chapter05_Scrapy/wikiSpider/wikiSpider/articlesMoreRules.py b/Chapter05_Scrapy/wikiSpider/wikiSpider/articlesMoreRules.py index efe28b3..0668f00 100644 --- a/Chapter05_Scrapy/wikiSpider/wikiSpider/articlesMoreRules.py +++ b/Chapter05_Scrapy/wikiSpider/wikiSpider/articlesMoreRules.py @@ -6,7 +6,7 @@ class ArticleSpider(CrawlSpider): allowed_domains = ['wikipedia.org'] start_urls = ['https://en.wikipedia.org/wiki/Benevolent_dictator_for_life'] rules = [ - Rule(LinkExtractor(allow='^(/wiki/)((?!:).)*$'), callback='parse_items', follow=True, cb_kwargs={'is_article': True}), + Rule(LinkExtractor(allow='(/wiki/)((?!:).)*$'), callback='parse_items', follow=True, cb_kwargs={'is_article': True}), Rule(LinkExtractor(allow='.*'), callback='parse_items', cb_kwargs={'is_article': False}) ] From 7c6cb1a8dfce4612d1cc2a89670df51a32bf93c9 Mon Sep 17 00:00:00 2001 From: REMitchell Date: Mon, 18 Dec 2023 21:06:06 -0500 Subject: [PATCH 47/47] Adding third edition files --- Chapter02-AdvancedHTMLParsing.ipynb | 597 - Chapter03-web-crawlers.ipynb | 1825 - Chapter04_CrawlingModels.ipynb | 1910 - ...e.ipynb => Chapter04_FirstWebScraper.ipynb | 43 +- Chapter05_AdvancedHTMLParsing.ipynb | 1058 + Chapter06_StoringData.ipynb | 37037 ---------------- Chapter06_Web-Crawlers.ipynb | 2055 + Chapter07_CrawlingModels.ipynb | 3158 ++ Chapter08-CleaningYourDirtyData.ipynb | 206 - .../build/lib}/wikiSpider/__init__.py | 0 .../wikiSpider/build/lib}/wikiSpider/items.py | 0 .../build/lib}/wikiSpider/middlewares.py | 0 .../build/lib}/wikiSpider/pipelines.py | 0 .../build/lib}/wikiSpider/settings.py | 0 .../build/lib}/wikiSpider/spiders/__init__.py | 0 .../build/lib/wikiSpider/spiders}/article.py | 6 +- .../lib/wikiSpider/spiders}/articleItems.py | 4 +- .../wikiSpider/spiders}/articlePipelines.py | 4 +- .../build/lib/wikiSpider/spiders}/articles.py | 0 .../wikiSpider/spiders}/articlesMoreRules.py | 6 +- .../wikiSpider/project.egg-info/PKG-INFO | 3 + .../wikiSpider/project.egg-info/SOURCES.txt | 17 + .../project.egg-info/dependency_links.txt | 1 + .../project.egg-info/entry_points.txt | 2 + .../wikiSpider/project.egg-info/top_level.txt | 1 + Chapter08_Scrapy/wikiSpider/scrapinghub.yml | 1 + .../wikiSpider/scrapy.cfg | 0 Chapter08_Scrapy/wikiSpider/setup.py | 10 + .../wikiSpider/wikiSpider/__init__.py | 0 .../__pycache__/__init__.cpython-39.pyc | Bin 0 -> 189 bytes .../__pycache__/items.cpython-39.pyc | Bin 0 -> 449 bytes .../__pycache__/pipelines.cpython-39.pyc | Bin 0 -> 1015 bytes .../__pycache__/settings.cpython-39.pyc | Bin 0 -> 377 bytes .../wikiSpider/wikiSpider/articles.csv | 0 .../wikiSpider/wikiSpider/articles.json | 0 .../wikiSpider/wikiSpider/articles.xml | 0 .../wikiSpider/wikiSpider/items.py | 5 +- .../wikiSpider/wikiSpider/middlewares.py | 0 .../wikiSpider/wikiSpider/pipelines.py | 12 + .../wikiSpider/wikiSpider/settings.py | 6 +- .../wikiSpider/wikiSpider/spiders/__init__.py | 0 .../__pycache__/__init__.cpython-39.pyc | Bin 0 -> 197 bytes .../__pycache__/article.cpython-39.pyc | Bin 0 -> 1216 bytes .../__pycache__/articleItems.cpython-39.pyc | Bin 0 -> 1220 bytes .../articlePipelines.cpython-39.pyc | Bin 0 -> 1167 bytes .../articlesMoreRules.cpython-39.pyc | Bin 0 -> 1374 bytes .../wikiSpider/wikiSpider/spiders/article.py | 18 + .../wikiSpider/spiders/articleItems.py | 20 + .../wikiSpider/spiders/articlePipelines.py | 19 + .../wikiSpider/wikiSpider/spiders/articles.py | 19 + .../wikiSpider/spiders/articlesMoreRules.py | 26 + Chapter09_NaturalLanguages.ipynb | 312 - Chapter09_StoringData.ipynb | 11634 +++++ Chapter10-CrawlingThroughFormsAndLogins.ipynb | 554 - ....ipynb => Chapter10_ReadingDocuments.ipynb | 2149 +- Chapter11_CleaningYourDirtyData.ipynb | 457 + Chapter12-API-Scraping.ipynb | 588 - Chapter12_NaturalLanguages.ipynb | 1834 + Chapter13-ImageProcessing.ipynb | 502 - Chapter13_CrawlingThroughFormsAndLogins.ipynb | 192 + ...Script.ipynb => Chapter14_JavaScript.ipynb | 101 +- Chapter15_API-Scraping.ipynb | 385 + Chapter16_ImageProcessing.ipynb | 1058 + Chapter16_ImageProcessingFiles/.DS_Store | Bin 0 -> 6148 bytes Chapter16_ImageProcessingFiles/kitten.jpg | Bin 0 -> 384086 bytes .../kitten_blurred.jpg | Bin 0 -> 31570 bytes Chapter16_ImageProcessingFiles/test.png | Bin 0 -> 110519 bytes .../text.png | Bin .../text_2.png | Bin .../text_bad.png | Bin .../text_cleaned.png | Bin Chapter16_ImageProcessingFiles/textoutput.txt | 2 + .../multiprocess.py | 0 .../multiprocess_example.py | 0 .../multiprocess_queue.py | 0 .../multithreaded.py | 0 .../multithreaded_class.py | 0 .../multithreaded_example.py | 0 .../multithreaded_queue.py | 0 .../threading_crawler.py | 0 .../threading_example.py | 0 Chapter17_ScrapingRemotely.ipynb | 101 - ...aps.ipynb => Chapter17_ScrapingTraps.ipynb | 93 +- ...5_Testing.ipynb => Chapter18_Testing.ipynb | 197 +- Chapter19_WebScrapingInParallel.ipynb | 1410 + Chapter20_WebScrapingProxies.ipynb | 1757 + captcha.png | Bin 0 -> 706 bytes captchas/.DS_Store | Bin 0 -> 18436 bytes captchas/2F8S.png | Bin 0 -> 691 bytes captchas/2PHU.png | Bin 0 -> 658 bytes captchas/2XMT.png | Bin 0 -> 720 bytes captchas/34PQ.png | Bin 0 -> 713 bytes captchas/37QR.png | Bin 0 -> 704 bytes captchas/3A68.png | Bin 0 -> 706 bytes captchas/3BE8.png | Bin 0 -> 720 bytes captchas/3DXJ.png | Bin 0 -> 723 bytes captchas/3FDB.png | Bin 0 -> 697 bytes captchas/3FK7.png | Bin 0 -> 693 bytes captchas/3JW5.png | Bin 0 -> 730 bytes captchas/3LNK.png | Bin 0 -> 709 bytes captchas/3QZZ.png | Bin 0 -> 742 bytes captchas/3RW7.png | Bin 0 -> 725 bytes captchas/3TCH.png | Bin 0 -> 679 bytes captchas/3YL8.png | Bin 0 -> 694 bytes captchas/3ZV3.png | Bin 0 -> 704 bytes captchas/46VL.png | Bin 0 -> 639 bytes captchas/49K7.png | Bin 0 -> 678 bytes captchas/4AUM.png | Bin 0 -> 709 bytes captchas/4QXS.png | Bin 0 -> 721 bytes captchas/4VHT.png | Bin 0 -> 662 bytes captchas/4WSU.png | Bin 0 -> 747 bytes captchas/52X6.png | Bin 0 -> 732 bytes captchas/56AZ.png | Bin 0 -> 732 bytes captchas/65KQ.png | Bin 0 -> 766 bytes captchas/696R.png | Bin 0 -> 670 bytes captchas/6DM4.png | Bin 0 -> 707 bytes captchas/6MGR.png | Bin 0 -> 761 bytes captchas/6PQ8.png | Bin 0 -> 721 bytes captchas/7994.png | Bin 0 -> 670 bytes captchas/7B63.png | Bin 0 -> 699 bytes captchas/7CA2.png | Bin 0 -> 697 bytes captchas/7HSD.png | Bin 0 -> 687 bytes captchas/7MGH.png | Bin 0 -> 746 bytes captchas/7R6J.png | Bin 0 -> 681 bytes captchas/7RK3.png | Bin 0 -> 707 bytes captchas/7VUC.png | Bin 0 -> 660 bytes captchas/7X8F.png | Bin 0 -> 714 bytes captchas/7Y4S.png | Bin 0 -> 685 bytes captchas/832C.png | Bin 0 -> 672 bytes captchas/83CA.png | Bin 0 -> 711 bytes captchas/8696.png | Bin 0 -> 678 bytes captchas/88MU.png | Bin 0 -> 754 bytes captchas/8D8L.png | Bin 0 -> 683 bytes captchas/8MB6.png | Bin 0 -> 768 bytes captchas/8N2Q.png | Bin 0 -> 751 bytes captchas/8N6D.png | Bin 0 -> 692 bytes captchas/8NMS.png | Bin 0 -> 718 bytes captchas/8PRQ.png | Bin 0 -> 740 bytes captchas/8XAQ.png | Bin 0 -> 772 bytes captchas/8YEP.png | Bin 0 -> 691 bytes captchas/9D6N.png | Bin 0 -> 714 bytes captchas/9J8K.png | Bin 0 -> 709 bytes captchas/9J9F.png | Bin 0 -> 650 bytes captchas/A23U.png | Bin 0 -> 702 bytes captchas/A5HM.png | Bin 0 -> 744 bytes captchas/ACQC.png | Bin 0 -> 736 bytes captchas/ADU5.png | Bin 0 -> 710 bytes captchas/AK6F.png | Bin 0 -> 728 bytes captchas/ALX2.png | Bin 0 -> 701 bytes captchas/APAR.png | Bin 0 -> 736 bytes captchas/AQF2.png | Bin 0 -> 745 bytes captchas/ASMW.png | Bin 0 -> 786 bytes captchas/BGKH.png | Bin 0 -> 780 bytes captchas/BX48.png | Bin 0 -> 772 bytes captchas/C6TJ.png | Bin 0 -> 666 bytes captchas/CFGF.png | Bin 0 -> 687 bytes captchas/CQ34.png | Bin 0 -> 722 bytes captchas/CRET.png | Bin 0 -> 678 bytes captchas/CX5M.png | Bin 0 -> 723 bytes captchas/D675.png | Bin 0 -> 679 bytes captchas/DCSR.png | Bin 0 -> 692 bytes captchas/DJFF.png | Bin 0 -> 678 bytes captchas/DPML.png | Bin 0 -> 688 bytes captchas/DTKQ.png | Bin 0 -> 737 bytes captchas/DU9H.png | Bin 0 -> 653 bytes captchas/DZQW.png | Bin 0 -> 753 bytes captchas/E34Y.png | Bin 0 -> 686 bytes captchas/E88R.png | Bin 0 -> 730 bytes captchas/EASL.png | Bin 0 -> 688 bytes captchas/EFZZ.png | Bin 0 -> 730 bytes captchas/EJZV.png | Bin 0 -> 693 bytes captchas/EKJC.png | Bin 0 -> 709 bytes captchas/EMS3.png | Bin 0 -> 729 bytes captchas/ERU6.png | Bin 0 -> 696 bytes captchas/EW7Q.png | Bin 0 -> 773 bytes captchas/EYPK.png | Bin 0 -> 714 bytes captchas/FAAS.png | Bin 0 -> 708 bytes captchas/FFNS.png | Bin 0 -> 649 bytes captchas/FNT9.png | Bin 0 -> 675 bytes captchas/FP6Z.png | Bin 0 -> 688 bytes captchas/FPL3.png | Bin 0 -> 649 bytes captchas/FUYF.png | Bin 0 -> 681 bytes captchas/FX8M.png | Bin 0 -> 768 bytes captchas/GEV7.png | Bin 0 -> 724 bytes captchas/GQ7W.png | Bin 0 -> 782 bytes captchas/GSAZ.png | Bin 0 -> 728 bytes captchas/GVPA.png | Bin 0 -> 728 bytes captchas/GWH9.png | Bin 0 -> 786 bytes captchas/GZ45.png | Bin 0 -> 731 bytes captchas/H2U5.png | Bin 0 -> 673 bytes captchas/HCEA.png | Bin 0 -> 696 bytes captchas/HF4F.png | Bin 0 -> 698 bytes captchas/HH9N.png | Bin 0 -> 701 bytes captchas/HKUM.png | Bin 0 -> 759 bytes captchas/JTM7.png | Bin 0 -> 695 bytes captchas/K3WQ.png | Bin 0 -> 789 bytes captchas/K4U4.png | Bin 0 -> 690 bytes captchas/KE7H.png | Bin 0 -> 693 bytes captchas/KQCT.png | Bin 0 -> 734 bytes captchas/KUR6.png | Bin 0 -> 711 bytes captchas/L4V8.png | Bin 0 -> 672 bytes captchas/L95D.png | Bin 0 -> 645 bytes captchas/LADE.png | Bin 0 -> 685 bytes captchas/LDS9.png | Bin 0 -> 671 bytes captchas/LH74.png | Bin 0 -> 638 bytes captchas/MBE7.png | Bin 0 -> 744 bytes captchas/MD5K.png | Bin 0 -> 755 bytes captchas/MKTX.png | Bin 0 -> 760 bytes captchas/MMB9.png | Bin 0 -> 741 bytes captchas/N82K.png | Bin 0 -> 745 bytes captchas/NB7Y.png | Bin 0 -> 723 bytes captchas/NEQT.png | Bin 0 -> 762 bytes captchas/NNMB.png | Bin 0 -> 783 bytes captchas/NYJE.png | Bin 0 -> 673 bytes captchas/P9UC.png | Bin 0 -> 688 bytes captchas/PC5N.png | Bin 0 -> 673 bytes captchas/PCEV.png | Bin 0 -> 671 bytes captchas/PK7W.png | Bin 0 -> 737 bytes captchas/PQWA.png | Bin 0 -> 777 bytes captchas/PWF9.png | Bin 0 -> 754 bytes captchas/QDKW.png | Bin 0 -> 816 bytes captchas/QJJX.png | Bin 0 -> 739 bytes captchas/QLAX.png | Bin 0 -> 758 bytes captchas/QPP7.png | Bin 0 -> 720 bytes captchas/QR3C.png | Bin 0 -> 742 bytes captchas/QTHL.png | Bin 0 -> 712 bytes captchas/QTP6.png | Bin 0 -> 729 bytes captchas/QUEB.png | Bin 0 -> 741 bytes captchas/QX4A.png | Bin 0 -> 739 bytes captchas/QYWB.png | Bin 0 -> 764 bytes captchas/R66E.png | Bin 0 -> 698 bytes captchas/RKE5.png | Bin 0 -> 717 bytes captchas/RLZ7.png | Bin 0 -> 666 bytes captchas/RQTM.png | Bin 0 -> 770 bytes captchas/RSE8.png | Bin 0 -> 739 bytes captchas/S2UB.png | Bin 0 -> 710 bytes captchas/S5QK.png | Bin 0 -> 764 bytes captchas/S8Z8.png | Bin 0 -> 734 bytes captchas/SAAM.png | Bin 0 -> 733 bytes captchas/SZ34.png | Bin 0 -> 712 bytes captchas/T2CS.png | Bin 0 -> 678 bytes captchas/T46Y.png | Bin 0 -> 677 bytes captchas/TJ8H.png | Bin 0 -> 678 bytes captchas/TJZS.png | Bin 0 -> 694 bytes captchas/TLRX.png | Bin 0 -> 704 bytes captchas/TNBP.png | Bin 0 -> 719 bytes captchas/TUCS.png | Bin 0 -> 671 bytes captchas/TVLQ.png | Bin 0 -> 678 bytes captchas/U6GN.png | Bin 0 -> 730 bytes captchas/U7CH.png | Bin 0 -> 683 bytes captchas/U9EH.png | Bin 0 -> 654 bytes captchas/UGA6.png | Bin 0 -> 711 bytes captchas/UKXW.png | Bin 0 -> 748 bytes captchas/UNKE.png | Bin 0 -> 711 bytes captchas/UQZE.png | Bin 0 -> 746 bytes captchas/USE7.png | Bin 0 -> 702 bytes captchas/UUFN.png | Bin 0 -> 696 bytes captchas/V3YY.png | Bin 0 -> 667 bytes captchas/V9AH.png | Bin 0 -> 700 bytes captchas/VBUM.png | Bin 0 -> 739 bytes captchas/VCMC.png | Bin 0 -> 693 bytes captchas/VCUD.png | Bin 0 -> 694 bytes captchas/VDS5.png | Bin 0 -> 691 bytes captchas/VFC5.png | Bin 0 -> 699 bytes captchas/VTWE.png | Bin 0 -> 725 bytes captchas/W43T.png | Bin 0 -> 705 bytes captchas/WAP7.png | Bin 0 -> 729 bytes captchas/WH3C.png | Bin 0 -> 734 bytes captchas/WKU5.png | Bin 0 -> 756 bytes captchas/X5ZS.png | Bin 0 -> 734 bytes captchas/X7D4.png | Bin 0 -> 711 bytes captchas/XE48.png | Bin 0 -> 735 bytes captchas/XER2.png | Bin 0 -> 752 bytes captchas/XFCT.png | Bin 0 -> 713 bytes captchas/XPGT.png | Bin 0 -> 717 bytes captchas/XU8Y.png | Bin 0 -> 749 bytes captchas/Y2Z3.png | Bin 0 -> 672 bytes captchas/Y5L5.png | Bin 0 -> 657 bytes captchas/YAGV.png | Bin 0 -> 714 bytes captchas/YEZY.png | Bin 0 -> 695 bytes captchas/YGV4.png | Bin 0 -> 698 bytes captchas/YMZM.png | Bin 0 -> 767 bytes captchas/YRQ8.png | Bin 0 -> 742 bytes captchas/YSRA.png | Bin 0 -> 736 bytes captchas/ZCBP.png | Bin 0 -> 736 bytes captchas/ZNYD.png | Bin 0 -> 743 bytes captchas/ZTNL.png | Bin 0 -> 672 bytes captchas/ZXBW.png | Bin 0 -> 802 bytes .../ajax/libs/jquery/3.3.1/jquery.min.js | 2 + .../ajax/libs/jquery/3.3.1/jquery.min.js? | 2 + .../images/dei/deij-odot.svg | 79 + .../images/dei/deij-odot.svg? | 79 + .../oreilly_logo_mark_red.svg | 16 + .../oreilly_logo_mark_red.svg? | 16 + .../oreilly/images/amazon-appstore-logo.png | Bin 0 -> 2589 bytes .../oreilly/images/amazon-appstore-logo.png? | Bin 0 -> 2589 bytes .../oreilly/images/app-store-logo.png | Bin 0 -> 11047 bytes .../oreilly/images/app-store-logo.png? | Bin 0 -> 11047 bytes .../oreilly/images/cert-vendor-logos.png | Bin 0 -> 150358 bytes .../oreilly/images/cert-vendor-logos.png? | Bin 0 -> 150358 bytes .../oreilly/images/google-play-logo.png | Bin 0 -> 8933 bytes .../oreilly/images/google-play-logo.png? | Bin 0 -> 8933 bytes ...eo-testimonial-thumb1-711x400-20221020.jpg | Bin 0 -> 49557 bytes ...o-testimonial-thumb1-711x400-20221020.jpg? | Bin 0 -> 49557 bytes ...eo-testimonial-thumb2-400x225-20221019.jpg | Bin 0 -> 15909 bytes ...o-testimonial-thumb2-400x225-20221019.jpg? | Bin 0 -> 15909 bytes ...eo-testimonial-thumb3-711x400-20230201.jpg | Bin 0 -> 46565 bytes ...o-testimonial-thumb3-711x400-20230201.jpg? | Bin 0 -> 46565 bytes .../oreilly/images/home_plot3_lot_600x600.jpg | Bin 0 -> 111445 bytes .../images/home_plot3_lot_600x600.jpg? | Bin 0 -> 111445 bytes .../images/interactive_laptop_780x426.png | Bin 0 -> 88935 bytes .../images/interactive_laptop_780x426.png? | Bin 0 -> 88935 bytes .../images/laptop-flat-courses-20230228.png | Bin 0 -> 95246 bytes .../images/laptop-flat-courses-20230228.png? | Bin 0 -> 95246 bytes .../oreilly/images/roku-tv-logo.png | Bin 0 -> 2902 bytes .../oreilly/images/roku-tv-logo.png? | Bin 0 -> 2902 bytes .../uiconf_id/47268383/partner_id/1681692 | 127 + .../uiconf_id/47268383/partner_id/1681692? | 127 + .../plugins/pagelayer/js/combined.js | 1530 + .../pagelayer/js/combined.js?ver=1.5.9 | 1530 + .../themes/popularfx/js/navigation.js | 148 + .../popularfx/js/navigation.js?ver=1.2.0 | 148 + .../wp-content/uploads/2021/08/home1.jpg | Bin 0 -> 59745 bytes .../wp-content/uploads/2021/08/home1.jpg? | Bin 0 -> 59745 bytes .../uploads/2021/08/logo01-e1681353135199.png | Bin 0 -> 183997 bytes .../2021/08/logo01-e1681353135199.png? | Bin 0 -> 183997 bytes .../2023/04/python-logo-e1681354047443.png | Bin 0 -> 19330 bytes .../2023/04/python-logo-e1681354047443.png? | Bin 0 -> 19330 bytes .../js/jquery/jquery-migrate.min.js | 2 + .../js/jquery/jquery-migrate.min.js?ver=3.4.0 | 2 + .../wp-includes/js/jquery/jquery.min.js | 3 + .../js/jquery/jquery.min.js?ver=3.6.3 | 3 + downloaded/www.googletagmanager.com/ns.html | 129 + .../ns.html?id=GTM-5P4V6Z | 129 + drivers/.DS_Store | Bin 0 -> 6148 bytes .../LICENSE.chromedriver | 5257 +++ drivers/chromedriver_mac_arm64/chromedriver | Bin 0 -> 16190384 bytes editors.csv | 72 + foo.pdf | Bin 0 -> 47394 bytes logo.jpg | Bin 0 -> 19330 bytes output.txt | 2 + page.jpg | Bin 0 -> 66165 bytes pythonscraping.png | Bin 0 -> 1256667 bytes result.html | 1 + test.csv | 11 + v1/chapter1/1-basicExample.py | 4 - v1/chapter1/2-beautifulSoup.py | 6 - v1/chapter1/3-exceptionHandling.py | 26 - v1/chapter10/1-seleniumBasic.py | 10 - v1/chapter10/2-waitForLoad.py | 14 - v1/chapter10/3-javascriptRedirect.py | 25 - v1/chapter11/1-basicImage.py | 6 - v1/chapter11/2-cleanImage.py | 19 - v1/chapter11/3-readWebImages.py | 36 - v1/chapter11/4-solveCaptcha.py | 48 - v1/chapter12/1-headers.py | 10 - v1/chapter12/2-seleniumCookies.py | 18 - v1/chapter12/3-honeypotDetection.py | 14 - v1/chapter13/1-wikiUnitTest.py | 52 - v1/chapter13/2-wikiSeleniumTest.py | 8 - v1/chapter13/3-interactiveTest.py | 29 - v1/chapter13/4-dragAndDrop.py | 20 - v1/chapter13/5-takeScreenshot.py | 13 - v1/chapter13/6-combinedTest.py | 30 - v1/chapter14/1-socks.py | 7 - v1/chapter14/2-seleniumSocks.py | 7 - v1/chapter2/1-selectByClass.py | 8 - v1/chapter2/2-selectByAttribute.py | 7 - v1/chapter2/3-findDescendants.py | 8 - v1/chapter2/4-findSiblings.py | 7 - v1/chapter2/5-findParents.py | 6 - v1/chapter2/6-regularExpressions.py | 9 - v1/chapter2/7-lambdaExpressions.py | 7 - v1/chapter3/1-getWikiLinks.py | 16 - v1/chapter3/2-crawlWikipedia.py | 25 - v1/chapter3/3-crawlSite.py | 51 - v1/chapter3/4-getExternalLinks.py | 56 - v1/chapter3/5-getAllExternalLinks.py | 76 - v1/chapter3/scrapy/wikiSpider/scrapy.cfg | 11 - .../scrapy/wikiSpider/wikiSpider/pipelines.py | 11 - .../wikiSpider/spiders/articleSpider.py | 18 - v1/chapter4/1-searchTwitter.py | 6 - v1/chapter4/2-updateTwitter.py | 6 - v1/chapter4/3-getTwitterStatus.py | 6 - v1/chapter4/4-decodeJson.py | 9 - v1/chapter4/5-jsonParsing.py | 9 - v1/chapter4/6-wikiHistories.py | 53 - v1/chapter5/1-getPageMedia.py | 42 - v1/chapter5/2-createCsv.py | 11 - v1/chapter5/3-scrapeCsv.py | 20 - v1/chapter5/4-mysqlBasicExample.py | 8 - v1/chapter5/5-storeWikiLinks.py | 34 - v1/chapter5/6-6DegreesCrawlWiki.py | 54 - v1/chapter5/7-sendEmail.py | 12 - v1/chapter5/8-sendEmailWhenChristmas.py | 22 - v1/chapter6/1-getText.py | 4 - v1/chapter6/2-getUtf8Text.py | 9 - v1/chapter6/3-readingCsv.py | 10 - v1/chapter6/4-readingCsvDict.py | 12 - v1/chapter6/5-readPdf.py | 24 - v1/chapter6/6-readDocx.py | 23 - v1/chapter7/1-2grams.py | 16 - v1/chapter7/2-clean2grams.py | 41 - v1/chapter8/1-count2Grams.py | 35 - v1/chapter8/2-countUncommon2Grams.py | 56 - v1/chapter8/3-markovGenerator.py | 62 - v1/chapter8/4-6DegreesFinder.py | 48 - v1/chapter8/5-NltkTokenize.py | 5 - v1/chapter8/6-NltkSearch.py | 6 - v1/chapter8/7-NltkAnalysis.py | 10 - v1/chapter9/1-simpleForm.py | 5 - v1/chapter9/2-fileSubmission.py | 6 - v1/chapter9/3-cookies.py | 10 - v1/chapter9/4-sessionCookies.py | 12 - v1/chapter9/5-BasicAuth.py | 7 - 415 files changed, 35983 insertions(+), 46238 deletions(-) delete mode 100644 Chapter02-AdvancedHTMLParsing.ipynb delete mode 100644 Chapter03-web-crawlers.ipynb delete mode 100644 Chapter04_CrawlingModels.ipynb rename Chapter01_BeginningToScrape.ipynb => Chapter04_FirstWebScraper.ipynb (79%) create mode 100644 Chapter05_AdvancedHTMLParsing.ipynb delete mode 100644 Chapter06_StoringData.ipynb create mode 100644 Chapter06_Web-Crawlers.ipynb create mode 100644 Chapter07_CrawlingModels.ipynb delete mode 100644 Chapter08-CleaningYourDirtyData.ipynb rename {Chapter05_Scrapy/wikiSpider => Chapter08_Scrapy/wikiSpider/build/lib}/wikiSpider/__init__.py (100%) rename {Chapter05_Scrapy/wikiSpider => Chapter08_Scrapy/wikiSpider/build/lib}/wikiSpider/items.py (100%) rename {Chapter05_Scrapy/wikiSpider => Chapter08_Scrapy/wikiSpider/build/lib}/wikiSpider/middlewares.py (100%) rename {Chapter05_Scrapy/wikiSpider => Chapter08_Scrapy/wikiSpider/build/lib}/wikiSpider/pipelines.py (100%) rename {Chapter05_Scrapy/wikiSpider => Chapter08_Scrapy/wikiSpider/build/lib}/wikiSpider/settings.py (100%) rename {Chapter05_Scrapy/wikiSpider => Chapter08_Scrapy/wikiSpider/build/lib}/wikiSpider/spiders/__init__.py (100%) rename {Chapter05_Scrapy/wikiSpider/wikiSpider => Chapter08_Scrapy/wikiSpider/build/lib/wikiSpider/spiders}/article.py (77%) rename {Chapter05_Scrapy/wikiSpider/wikiSpider => Chapter08_Scrapy/wikiSpider/build/lib/wikiSpider/spiders}/articleItems.py (87%) rename {Chapter05_Scrapy/wikiSpider/wikiSpider => Chapter08_Scrapy/wikiSpider/build/lib/wikiSpider/spiders}/articlePipelines.py (86%) rename {Chapter05_Scrapy/wikiSpider/wikiSpider => Chapter08_Scrapy/wikiSpider/build/lib/wikiSpider/spiders}/articles.py (100%) rename {Chapter05_Scrapy/wikiSpider/wikiSpider => Chapter08_Scrapy/wikiSpider/build/lib/wikiSpider/spiders}/articlesMoreRules.py (80%) create mode 100644 Chapter08_Scrapy/wikiSpider/project.egg-info/PKG-INFO create mode 100644 Chapter08_Scrapy/wikiSpider/project.egg-info/SOURCES.txt create mode 100644 Chapter08_Scrapy/wikiSpider/project.egg-info/dependency_links.txt create mode 100644 Chapter08_Scrapy/wikiSpider/project.egg-info/entry_points.txt create mode 100644 Chapter08_Scrapy/wikiSpider/project.egg-info/top_level.txt create mode 100644 Chapter08_Scrapy/wikiSpider/scrapinghub.yml rename {Chapter05_Scrapy => Chapter08_Scrapy}/wikiSpider/scrapy.cfg (100%) create mode 100644 Chapter08_Scrapy/wikiSpider/setup.py rename {v1/chapter3/scrapy => Chapter08_Scrapy}/wikiSpider/wikiSpider/__init__.py (100%) create mode 100644 Chapter08_Scrapy/wikiSpider/wikiSpider/__pycache__/__init__.cpython-39.pyc create mode 100644 Chapter08_Scrapy/wikiSpider/wikiSpider/__pycache__/items.cpython-39.pyc create mode 100644 Chapter08_Scrapy/wikiSpider/wikiSpider/__pycache__/pipelines.cpython-39.pyc create mode 100644 Chapter08_Scrapy/wikiSpider/wikiSpider/__pycache__/settings.cpython-39.pyc rename {Chapter05_Scrapy => Chapter08_Scrapy}/wikiSpider/wikiSpider/articles.csv (100%) rename {Chapter05_Scrapy => Chapter08_Scrapy}/wikiSpider/wikiSpider/articles.json (100%) rename {Chapter05_Scrapy => Chapter08_Scrapy}/wikiSpider/wikiSpider/articles.xml (100%) rename {v1/chapter3/scrapy => Chapter08_Scrapy}/wikiSpider/wikiSpider/items.py (72%) rename {v1/chapter3/scrapy => Chapter08_Scrapy}/wikiSpider/wikiSpider/middlewares.py (100%) create mode 100644 Chapter08_Scrapy/wikiSpider/wikiSpider/pipelines.py rename {v1/chapter3/scrapy => Chapter08_Scrapy}/wikiSpider/wikiSpider/settings.py (97%) rename {v1/chapter3/scrapy => Chapter08_Scrapy}/wikiSpider/wikiSpider/spiders/__init__.py (100%) create mode 100644 Chapter08_Scrapy/wikiSpider/wikiSpider/spiders/__pycache__/__init__.cpython-39.pyc create mode 100644 Chapter08_Scrapy/wikiSpider/wikiSpider/spiders/__pycache__/article.cpython-39.pyc create mode 100644 Chapter08_Scrapy/wikiSpider/wikiSpider/spiders/__pycache__/articleItems.cpython-39.pyc create mode 100644 Chapter08_Scrapy/wikiSpider/wikiSpider/spiders/__pycache__/articlePipelines.cpython-39.pyc create mode 100644 Chapter08_Scrapy/wikiSpider/wikiSpider/spiders/__pycache__/articlesMoreRules.cpython-39.pyc create mode 100644 Chapter08_Scrapy/wikiSpider/wikiSpider/spiders/article.py create mode 100644 Chapter08_Scrapy/wikiSpider/wikiSpider/spiders/articleItems.py create mode 100644 Chapter08_Scrapy/wikiSpider/wikiSpider/spiders/articlePipelines.py create mode 100644 Chapter08_Scrapy/wikiSpider/wikiSpider/spiders/articles.py create mode 100644 Chapter08_Scrapy/wikiSpider/wikiSpider/spiders/articlesMoreRules.py delete mode 100644 Chapter09_NaturalLanguages.ipynb create mode 100644 Chapter09_StoringData.ipynb delete mode 100644 Chapter10-CrawlingThroughFormsAndLogins.ipynb rename Chapter07_ReadingDocuments.ipynb => Chapter10_ReadingDocuments.ipynb (59%) create mode 100644 Chapter11_CleaningYourDirtyData.ipynb delete mode 100644 Chapter12-API-Scraping.ipynb create mode 100644 Chapter12_NaturalLanguages.ipynb delete mode 100644 Chapter13-ImageProcessing.ipynb create mode 100644 Chapter13_CrawlingThroughFormsAndLogins.ipynb rename Chapter11-JavaScript.ipynb => Chapter14_JavaScript.ipynb (62%) create mode 100644 Chapter15_API-Scraping.ipynb create mode 100644 Chapter16_ImageProcessing.ipynb create mode 100644 Chapter16_ImageProcessingFiles/.DS_Store create mode 100644 Chapter16_ImageProcessingFiles/kitten.jpg create mode 100644 Chapter16_ImageProcessingFiles/kitten_blurred.jpg create mode 100644 Chapter16_ImageProcessingFiles/test.png rename files/textOriginal.png => Chapter16_ImageProcessingFiles/text.png (100%) rename {files => Chapter16_ImageProcessingFiles}/text_2.png (100%) rename files/textBad.png => Chapter16_ImageProcessingFiles/text_bad.png (100%) rename files/textCleaned.png => Chapter16_ImageProcessingFiles/text_cleaned.png (100%) create mode 100644 Chapter16_ImageProcessingFiles/textoutput.txt rename {chapter16 => Chapter16_Parallel}/multiprocess.py (100%) rename {chapter16 => Chapter16_Parallel}/multiprocess_example.py (100%) rename {chapter16 => Chapter16_Parallel}/multiprocess_queue.py (100%) rename {chapter16 => Chapter16_Parallel}/multithreaded.py (100%) rename {chapter16 => Chapter16_Parallel}/multithreaded_class.py (100%) rename {chapter16 => Chapter16_Parallel}/multithreaded_example.py (100%) rename {chapter16 => Chapter16_Parallel}/multithreaded_queue.py (100%) rename {chapter16 => Chapter16_Parallel}/threading_crawler.py (100%) rename {chapter16 => Chapter16_Parallel}/threading_example.py (100%) delete mode 100644 Chapter17_ScrapingRemotely.ipynb rename Chapter14-ScrapingTraps.ipynb => Chapter17_ScrapingTraps.ipynb (51%) rename Chapter15_Testing.ipynb => Chapter18_Testing.ipynb (74%) create mode 100644 Chapter19_WebScrapingInParallel.ipynb create mode 100644 Chapter20_WebScrapingProxies.ipynb create mode 100644 captcha.png create mode 100644 captchas/.DS_Store create mode 100644 captchas/2F8S.png create mode 100644 captchas/2PHU.png create mode 100644 captchas/2XMT.png create mode 100644 captchas/34PQ.png create mode 100644 captchas/37QR.png create mode 100644 captchas/3A68.png create mode 100644 captchas/3BE8.png create mode 100644 captchas/3DXJ.png create mode 100644 captchas/3FDB.png create mode 100644 captchas/3FK7.png create mode 100644 captchas/3JW5.png create mode 100644 captchas/3LNK.png create mode 100644 captchas/3QZZ.png create mode 100644 captchas/3RW7.png create mode 100644 captchas/3TCH.png create mode 100644 captchas/3YL8.png create mode 100644 captchas/3ZV3.png create mode 100644 captchas/46VL.png create mode 100644 captchas/49K7.png create mode 100644 captchas/4AUM.png create mode 100644 captchas/4QXS.png create mode 100644 captchas/4VHT.png create mode 100644 captchas/4WSU.png create mode 100644 captchas/52X6.png create mode 100644 captchas/56AZ.png create mode 100644 captchas/65KQ.png create mode 100644 captchas/696R.png create mode 100644 captchas/6DM4.png create mode 100644 captchas/6MGR.png create mode 100644 captchas/6PQ8.png create mode 100644 captchas/7994.png create mode 100644 captchas/7B63.png create mode 100644 captchas/7CA2.png create mode 100644 captchas/7HSD.png create mode 100644 captchas/7MGH.png create mode 100644 captchas/7R6J.png create mode 100644 captchas/7RK3.png create mode 100644 captchas/7VUC.png create mode 100644 captchas/7X8F.png create mode 100644 captchas/7Y4S.png create mode 100644 captchas/832C.png create mode 100644 captchas/83CA.png create mode 100644 captchas/8696.png create mode 100644 captchas/88MU.png create mode 100644 captchas/8D8L.png create mode 100644 captchas/8MB6.png create mode 100644 captchas/8N2Q.png create mode 100644 captchas/8N6D.png create mode 100644 captchas/8NMS.png create mode 100644 captchas/8PRQ.png create mode 100644 captchas/8XAQ.png create mode 100644 captchas/8YEP.png create mode 100644 captchas/9D6N.png create mode 100644 captchas/9J8K.png create mode 100644 captchas/9J9F.png create mode 100644 captchas/A23U.png create mode 100644 captchas/A5HM.png create mode 100644 captchas/ACQC.png create mode 100644 captchas/ADU5.png create mode 100644 captchas/AK6F.png create mode 100644 captchas/ALX2.png create mode 100644 captchas/APAR.png create mode 100644 captchas/AQF2.png create mode 100644 captchas/ASMW.png create mode 100644 captchas/BGKH.png create mode 100644 captchas/BX48.png create mode 100644 captchas/C6TJ.png create mode 100644 captchas/CFGF.png create mode 100644 captchas/CQ34.png create mode 100644 captchas/CRET.png create mode 100644 captchas/CX5M.png create mode 100644 captchas/D675.png create mode 100644 captchas/DCSR.png create mode 100644 captchas/DJFF.png create mode 100644 captchas/DPML.png create mode 100644 captchas/DTKQ.png create mode 100644 captchas/DU9H.png create mode 100644 captchas/DZQW.png create mode 100644 captchas/E34Y.png create mode 100644 captchas/E88R.png create mode 100644 captchas/EASL.png create mode 100644 captchas/EFZZ.png create mode 100644 captchas/EJZV.png create mode 100644 captchas/EKJC.png create mode 100644 captchas/EMS3.png create mode 100644 captchas/ERU6.png create mode 100644 captchas/EW7Q.png create mode 100644 captchas/EYPK.png create mode 100644 captchas/FAAS.png create mode 100644 captchas/FFNS.png create mode 100644 captchas/FNT9.png create mode 100644 captchas/FP6Z.png create mode 100644 captchas/FPL3.png create mode 100644 captchas/FUYF.png create mode 100644 captchas/FX8M.png create mode 100644 captchas/GEV7.png create mode 100644 captchas/GQ7W.png create mode 100644 captchas/GSAZ.png create mode 100644 captchas/GVPA.png create mode 100644 captchas/GWH9.png create mode 100644 captchas/GZ45.png create mode 100644 captchas/H2U5.png create mode 100644 captchas/HCEA.png create mode 100644 captchas/HF4F.png create mode 100644 captchas/HH9N.png create mode 100644 captchas/HKUM.png create mode 100644 captchas/JTM7.png create mode 100644 captchas/K3WQ.png create mode 100644 captchas/K4U4.png create mode 100644 captchas/KE7H.png create mode 100644 captchas/KQCT.png create mode 100644 captchas/KUR6.png create mode 100644 captchas/L4V8.png create mode 100644 captchas/L95D.png create mode 100644 captchas/LADE.png create mode 100644 captchas/LDS9.png create mode 100644 captchas/LH74.png create mode 100644 captchas/MBE7.png create mode 100644 captchas/MD5K.png create mode 100644 captchas/MKTX.png create mode 100644 captchas/MMB9.png create mode 100644 captchas/N82K.png create mode 100644 captchas/NB7Y.png create mode 100644 captchas/NEQT.png create mode 100644 captchas/NNMB.png create mode 100644 captchas/NYJE.png create mode 100644 captchas/P9UC.png create mode 100644 captchas/PC5N.png create mode 100644 captchas/PCEV.png create mode 100644 captchas/PK7W.png create mode 100644 captchas/PQWA.png create mode 100644 captchas/PWF9.png create mode 100644 captchas/QDKW.png create mode 100644 captchas/QJJX.png create mode 100644 captchas/QLAX.png create mode 100644 captchas/QPP7.png create mode 100644 captchas/QR3C.png create mode 100644 captchas/QTHL.png create mode 100644 captchas/QTP6.png create mode 100644 captchas/QUEB.png create mode 100644 captchas/QX4A.png create mode 100644 captchas/QYWB.png create mode 100644 captchas/R66E.png create mode 100644 captchas/RKE5.png create mode 100644 captchas/RLZ7.png create mode 100644 captchas/RQTM.png create mode 100644 captchas/RSE8.png create mode 100644 captchas/S2UB.png create mode 100644 captchas/S5QK.png create mode 100644 captchas/S8Z8.png create mode 100644 captchas/SAAM.png create mode 100644 captchas/SZ34.png create mode 100644 captchas/T2CS.png create mode 100644 captchas/T46Y.png create mode 100644 captchas/TJ8H.png create mode 100644 captchas/TJZS.png create mode 100644 captchas/TLRX.png create mode 100644 captchas/TNBP.png create mode 100644 captchas/TUCS.png create mode 100644 captchas/TVLQ.png create mode 100644 captchas/U6GN.png create mode 100644 captchas/U7CH.png create mode 100644 captchas/U9EH.png create mode 100644 captchas/UGA6.png create mode 100644 captchas/UKXW.png create mode 100644 captchas/UNKE.png create mode 100644 captchas/UQZE.png create mode 100644 captchas/USE7.png create mode 100644 captchas/UUFN.png create mode 100644 captchas/V3YY.png create mode 100644 captchas/V9AH.png create mode 100644 captchas/VBUM.png create mode 100644 captchas/VCMC.png create mode 100644 captchas/VCUD.png create mode 100644 captchas/VDS5.png create mode 100644 captchas/VFC5.png create mode 100644 captchas/VTWE.png create mode 100644 captchas/W43T.png create mode 100644 captchas/WAP7.png create mode 100644 captchas/WH3C.png create mode 100644 captchas/WKU5.png create mode 100644 captchas/X5ZS.png create mode 100644 captchas/X7D4.png create mode 100644 captchas/XE48.png create mode 100644 captchas/XER2.png create mode 100644 captchas/XFCT.png create mode 100644 captchas/XPGT.png create mode 100644 captchas/XU8Y.png create mode 100644 captchas/Y2Z3.png create mode 100644 captchas/Y5L5.png create mode 100644 captchas/YAGV.png create mode 100644 captchas/YEZY.png create mode 100644 captchas/YGV4.png create mode 100644 captchas/YMZM.png create mode 100644 captchas/YRQ8.png create mode 100644 captchas/YSRA.png create mode 100644 captchas/ZCBP.png create mode 100644 captchas/ZNYD.png create mode 100644 captchas/ZTNL.png create mode 100644 captchas/ZXBW.png create mode 100644 downloaded/cdn.oreillystatic.com/ajax/libs/jquery/3.3.1/jquery.min.js create mode 100644 downloaded/cdn.oreillystatic.com/ajax/libs/jquery/3.3.1/jquery.min.js? create mode 100644 downloaded/cdn.oreillystatic.com/images/dei/deij-odot.svg create mode 100644 downloaded/cdn.oreillystatic.com/images/dei/deij-odot.svg? create mode 100644 downloaded/cdn.oreillystatic.com/images/sitewide-headers/oreilly_logo_mark_red.svg create mode 100644 downloaded/cdn.oreillystatic.com/images/sitewide-headers/oreilly_logo_mark_red.svg? create mode 100644 downloaded/cdn.oreillystatic.com/oreilly/images/amazon-appstore-logo.png create mode 100644 downloaded/cdn.oreillystatic.com/oreilly/images/amazon-appstore-logo.png? create mode 100644 downloaded/cdn.oreillystatic.com/oreilly/images/app-store-logo.png create mode 100644 downloaded/cdn.oreillystatic.com/oreilly/images/app-store-logo.png? create mode 100644 downloaded/cdn.oreillystatic.com/oreilly/images/cert-vendor-logos.png create mode 100644 downloaded/cdn.oreillystatic.com/oreilly/images/cert-vendor-logos.png? create mode 100644 downloaded/cdn.oreillystatic.com/oreilly/images/google-play-logo.png create mode 100644 downloaded/cdn.oreillystatic.com/oreilly/images/google-play-logo.png? create mode 100644 downloaded/cdn.oreillystatic.com/oreilly/images/home-video-testimonial-thumb1-711x400-20221020.jpg create mode 100644 downloaded/cdn.oreillystatic.com/oreilly/images/home-video-testimonial-thumb1-711x400-20221020.jpg? create mode 100644 downloaded/cdn.oreillystatic.com/oreilly/images/home-video-testimonial-thumb2-400x225-20221019.jpg create mode 100644 downloaded/cdn.oreillystatic.com/oreilly/images/home-video-testimonial-thumb2-400x225-20221019.jpg? create mode 100644 downloaded/cdn.oreillystatic.com/oreilly/images/home-video-testimonial-thumb3-711x400-20230201.jpg create mode 100644 downloaded/cdn.oreillystatic.com/oreilly/images/home-video-testimonial-thumb3-711x400-20230201.jpg? create mode 100644 downloaded/cdn.oreillystatic.com/oreilly/images/home_plot3_lot_600x600.jpg create mode 100644 downloaded/cdn.oreillystatic.com/oreilly/images/home_plot3_lot_600x600.jpg? create mode 100644 downloaded/cdn.oreillystatic.com/oreilly/images/interactive_laptop_780x426.png create mode 100644 downloaded/cdn.oreillystatic.com/oreilly/images/interactive_laptop_780x426.png? create mode 100644 downloaded/cdn.oreillystatic.com/oreilly/images/laptop-flat-courses-20230228.png create mode 100644 downloaded/cdn.oreillystatic.com/oreilly/images/laptop-flat-courses-20230228.png? create mode 100644 downloaded/cdn.oreillystatic.com/oreilly/images/roku-tv-logo.png create mode 100644 downloaded/cdn.oreillystatic.com/oreilly/images/roku-tv-logo.png? create mode 100644 downloaded/cdnapisec.kaltura.com/p/1681692/sp/168169200/embedIframeJs/uiconf_id/47268383/partner_id/1681692 create mode 100644 downloaded/cdnapisec.kaltura.com/p/1681692/sp/168169200/embedIframeJs/uiconf_id/47268383/partner_id/1681692? create mode 100644 downloaded/pythonscraping.com/wp-content/plugins/pagelayer/js/combined.js create mode 100644 downloaded/pythonscraping.com/wp-content/plugins/pagelayer/js/combined.js?ver=1.5.9 create mode 100644 downloaded/pythonscraping.com/wp-content/themes/popularfx/js/navigation.js create mode 100644 downloaded/pythonscraping.com/wp-content/themes/popularfx/js/navigation.js?ver=1.2.0 create mode 100644 downloaded/pythonscraping.com/wp-content/uploads/2021/08/home1.jpg create mode 100644 downloaded/pythonscraping.com/wp-content/uploads/2021/08/home1.jpg? create mode 100644 downloaded/pythonscraping.com/wp-content/uploads/2021/08/logo01-e1681353135199.png create mode 100644 downloaded/pythonscraping.com/wp-content/uploads/2021/08/logo01-e1681353135199.png? create mode 100644 downloaded/pythonscraping.com/wp-content/uploads/2023/04/python-logo-e1681354047443.png create mode 100644 downloaded/pythonscraping.com/wp-content/uploads/2023/04/python-logo-e1681354047443.png? create mode 100644 downloaded/pythonscraping.com/wp-includes/js/jquery/jquery-migrate.min.js create mode 100644 downloaded/pythonscraping.com/wp-includes/js/jquery/jquery-migrate.min.js?ver=3.4.0 create mode 100644 downloaded/pythonscraping.com/wp-includes/js/jquery/jquery.min.js create mode 100644 downloaded/pythonscraping.com/wp-includes/js/jquery/jquery.min.js?ver=3.6.3 create mode 100644 downloaded/www.googletagmanager.com/ns.html create mode 100644 downloaded/www.googletagmanager.com/ns.html?id=GTM-5P4V6Z create mode 100644 drivers/.DS_Store create mode 100644 drivers/chromedriver_mac_arm64/LICENSE.chromedriver create mode 100755 drivers/chromedriver_mac_arm64/chromedriver create mode 100644 editors.csv create mode 100644 foo.pdf create mode 100644 logo.jpg create mode 100644 output.txt create mode 100644 page.jpg create mode 100644 pythonscraping.png create mode 100644 result.html create mode 100644 test.csv delete mode 100644 v1/chapter1/1-basicExample.py delete mode 100644 v1/chapter1/2-beautifulSoup.py delete mode 100644 v1/chapter1/3-exceptionHandling.py delete mode 100644 v1/chapter10/1-seleniumBasic.py delete mode 100644 v1/chapter10/2-waitForLoad.py delete mode 100644 v1/chapter10/3-javascriptRedirect.py delete mode 100644 v1/chapter11/1-basicImage.py delete mode 100644 v1/chapter11/2-cleanImage.py delete mode 100644 v1/chapter11/3-readWebImages.py delete mode 100644 v1/chapter11/4-solveCaptcha.py delete mode 100644 v1/chapter12/1-headers.py delete mode 100644 v1/chapter12/2-seleniumCookies.py delete mode 100644 v1/chapter12/3-honeypotDetection.py delete mode 100644 v1/chapter13/1-wikiUnitTest.py delete mode 100644 v1/chapter13/2-wikiSeleniumTest.py delete mode 100644 v1/chapter13/3-interactiveTest.py delete mode 100644 v1/chapter13/4-dragAndDrop.py delete mode 100644 v1/chapter13/5-takeScreenshot.py delete mode 100644 v1/chapter13/6-combinedTest.py delete mode 100644 v1/chapter14/1-socks.py delete mode 100644 v1/chapter14/2-seleniumSocks.py delete mode 100644 v1/chapter2/1-selectByClass.py delete mode 100644 v1/chapter2/2-selectByAttribute.py delete mode 100644 v1/chapter2/3-findDescendants.py delete mode 100644 v1/chapter2/4-findSiblings.py delete mode 100644 v1/chapter2/5-findParents.py delete mode 100644 v1/chapter2/6-regularExpressions.py delete mode 100644 v1/chapter2/7-lambdaExpressions.py delete mode 100644 v1/chapter3/1-getWikiLinks.py delete mode 100644 v1/chapter3/2-crawlWikipedia.py delete mode 100644 v1/chapter3/3-crawlSite.py delete mode 100644 v1/chapter3/4-getExternalLinks.py delete mode 100644 v1/chapter3/5-getAllExternalLinks.py delete mode 100644 v1/chapter3/scrapy/wikiSpider/scrapy.cfg delete mode 100644 v1/chapter3/scrapy/wikiSpider/wikiSpider/pipelines.py delete mode 100644 v1/chapter3/scrapy/wikiSpider/wikiSpider/spiders/articleSpider.py delete mode 100644 v1/chapter4/1-searchTwitter.py delete mode 100644 v1/chapter4/2-updateTwitter.py delete mode 100644 v1/chapter4/3-getTwitterStatus.py delete mode 100644 v1/chapter4/4-decodeJson.py delete mode 100644 v1/chapter4/5-jsonParsing.py delete mode 100644 v1/chapter4/6-wikiHistories.py delete mode 100644 v1/chapter5/1-getPageMedia.py delete mode 100644 v1/chapter5/2-createCsv.py delete mode 100644 v1/chapter5/3-scrapeCsv.py delete mode 100644 v1/chapter5/4-mysqlBasicExample.py delete mode 100644 v1/chapter5/5-storeWikiLinks.py delete mode 100644 v1/chapter5/6-6DegreesCrawlWiki.py delete mode 100644 v1/chapter5/7-sendEmail.py delete mode 100644 v1/chapter5/8-sendEmailWhenChristmas.py delete mode 100644 v1/chapter6/1-getText.py delete mode 100644 v1/chapter6/2-getUtf8Text.py delete mode 100644 v1/chapter6/3-readingCsv.py delete mode 100644 v1/chapter6/4-readingCsvDict.py delete mode 100644 v1/chapter6/5-readPdf.py delete mode 100644 v1/chapter6/6-readDocx.py delete mode 100644 v1/chapter7/1-2grams.py delete mode 100644 v1/chapter7/2-clean2grams.py delete mode 100644 v1/chapter8/1-count2Grams.py delete mode 100644 v1/chapter8/2-countUncommon2Grams.py delete mode 100644 v1/chapter8/3-markovGenerator.py delete mode 100644 v1/chapter8/4-6DegreesFinder.py delete mode 100644 v1/chapter8/5-NltkTokenize.py delete mode 100644 v1/chapter8/6-NltkSearch.py delete mode 100644 v1/chapter8/7-NltkAnalysis.py delete mode 100644 v1/chapter9/1-simpleForm.py delete mode 100644 v1/chapter9/2-fileSubmission.py delete mode 100644 v1/chapter9/3-cookies.py delete mode 100644 v1/chapter9/4-sessionCookies.py delete mode 100644 v1/chapter9/5-BasicAuth.py diff --git a/Chapter02-AdvancedHTMLParsing.ipynb b/Chapter02-AdvancedHTMLParsing.ipynb deleted file mode 100644 index 6779c08..0000000 --- a/Chapter02-AdvancedHTMLParsing.ipynb +++ /dev/null @@ -1,597 +0,0 @@ -{ - "cells": [ - { - "cell_type": "raw", - "metadata": {}, - "source": [ - "from urllib.request import urlopen\n", - "from bs4 import BeautifulSoup\n", - "html = urlopen('http://www.pythonscraping.com/pages/warandpeace.html')\n", - "bs = BeautifulSoup(html, 'html.parser')\n", - "print(bs)" - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "metadata": {}, - "outputs": [], - "source": [ - "from urllib.request import urlopen\n", - "from bs4 import BeautifulSoup\n", - "html = urlopen('http://www.pythonscraping.com/pages/warandpeace.html')\n", - "bs = BeautifulSoup(html, \"html.parser\")" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Anna\n", - "Pavlovna Scherer\n", - "Empress Marya\n", - "Fedorovna\n", - "Prince Vasili Kuragin\n", - "Anna Pavlovna\n", - "St. Petersburg\n", - "the prince\n", - "Anna Pavlovna\n", - "Anna Pavlovna\n", - "the prince\n", - "the prince\n", - "the prince\n", - "Prince Vasili\n", - "Anna Pavlovna\n", - "Anna Pavlovna\n", - "the prince\n", - "Wintzingerode\n", - "King of Prussia\n", - "le Vicomte de Mortemart\n", - "Montmorencys\n", - "Rohans\n", - "Abbe Morio\n", - "the Emperor\n", - "the prince\n", - "Prince Vasili\n", - "Dowager Empress Marya Fedorovna\n", - "the baron\n", - "Anna Pavlovna\n", - "the Empress\n", - "the Empress\n", - "Anna Pavlovna's\n", - "Her Majesty\n", - "Baron\n", - "Funke\n", - "The prince\n", - "Anna\n", - "Pavlovna\n", - "the Empress\n", - "The prince\n", - "Anatole\n", - "the prince\n", - "The prince\n", - "Anna\n", - "Pavlovna\n", - "Anna Pavlovna\n" - ] - } - ], - "source": [ - "nameList = bs.findAll('span', {'class': 'green'})\n", - "for name in nameList:\n", - " print(name.get_text())" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "[

War and Peace

,

Chapter 1

]\n" - ] - } - ], - "source": [ - "titles = bs.find_all(['h1', 'h2','h3','h4','h5','h6'])\n", - "print([title for title in titles])\n" - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "[Well, Prince, so Genoa and Lucca are now just family estates of the\n", - "Buonapartes. But I warn you, if you don't tell me that this means war,\n", - "if you still try to defend the infamies and horrors perpetrated by\n", - "that Antichrist- I really believe he is Antichrist- I will have\n", - "nothing more to do with you and you are no longer my friend, no longer\n", - "my 'faithful slave,' as you call yourself! But how do you do? I see\n", - "I have frightened you- sit down and tell me all the news., Anna\n", - "Pavlovna Scherer, Empress Marya\n", - "Fedorovna, Prince Vasili Kuragin, Anna Pavlovna, St. Petersburg, If you have nothing better to do, Count [or Prince], and if the\n", - "prospect of spending an evening with a poor invalid is not too\n", - "terrible, I shall be very charmed to see you tonight between 7 and 10-\n", - "Annette Scherer., Heavens! what a virulent attack!, the prince, Anna Pavlovna, First of all, dear friend, tell me how you are. Set your friend's\n", - "mind at rest,, Can one be well while suffering morally? Can one be calm in times\n", - "like these if one has any feeling?, Anna Pavlovna, You are\n", - "staying the whole evening, I hope?, And the fete at the English ambassador's? Today is Wednesday. I\n", - "must put in an appearance there,, the prince, My daughter is\n", - "coming for me to take me there., I thought today's fete had been canceled. I confess all these\n", - "festivities and fireworks are becoming wearisome., If they had known that you wished it, the entertainment would\n", - "have been put off,, the prince, Don't tease! Well, and what has been decided about Novosiltsev's\n", - "dispatch? You know everything., What can one say about it?, the prince, What has been decided? They have decided that\n", - "Buonaparte has burnt his boats, and I believe that we are ready to\n", - "burn ours., Prince Vasili, Anna Pavlovna, Anna Pavlovna, Oh, don't speak to me of Austria. Perhaps I don't understand\n", - "things, but Austria never has wished, and does not wish, for war.\n", - "She is betraying us! Russia alone must save Europe. Our gracious\n", - "sovereign recognizes his high vocation and will be true to it. That is\n", - "the one thing I have faith in! Our good and wonderful sovereign has to\n", - "perform the noblest role on earth, and he is so virtuous and noble\n", - "that God will not forsake him. He will fulfill his vocation and\n", - "crush the hydra of revolution, which has become more terrible than\n", - "ever in the person of this murderer and villain! We alone must\n", - "avenge the blood of the just one.... Whom, I ask you, can we rely\n", - "on?... England with her commercial spirit will not and cannot\n", - "understand the Emperor Alexander's loftiness of soul. She has\n", - "refused to evacuate Malta. She wanted to find, and still seeks, some\n", - "secret motive in our actions. What answer did Novosiltsev get? None.\n", - "The English have not understood and cannot understand the\n", - "self-abnegation of our Emperor who wants nothing for himself, but only\n", - "desires the good of mankind. And what have they promised? Nothing! And\n", - "what little they have promised they will not perform! Prussia has\n", - "always declared that Buonaparte is invincible, and that all Europe\n", - "is powerless before him.... And I don't believe a word that Hardenburg\n", - "says, or Haugwitz either. This famous Prussian neutrality is just a\n", - "trap. I have faith only in God and the lofty destiny of our adored\n", - "monarch. He will save Europe!, I think,, the prince, that if you had been\n", - "sent instead of our dear Wintzingerode you would have captured the\n", - "King of Prussia's consent by assault. You are so eloquent. Will you\n", - "give me a cup of tea?, Wintzingerode, King of Prussia, In a moment. A propos,, I am\n", - "expecting two very interesting men tonight, le Vicomte de Mortemart,\n", - "who is connected with the Montmorencys through the Rohans, one of\n", - "the best French families. He is one of the genuine emigres, the good\n", - "ones. And also the Abbe Morio. Do you know that profound thinker? He\n", - "has been received by the Emperor. Had you heard?, le Vicomte de Mortemart, Montmorencys, Rohans, Abbe Morio, the Emperor, I shall be delighted to meet them,, the prince, But tell me,, is it true that the Dowager Empress wants Baron Funke\n", - "to be appointed first secretary at Vienna? The baron by all accounts\n", - "is a poor creature., Prince Vasili, Dowager Empress Marya Fedorovna, the baron, Anna Pavlovna, the Empress, Baron Funke has been recommended to the Dowager Empress by her\n", - "sister,, the Empress, Anna Pavlovna's, Her Majesty, Baron\n", - "Funke, The prince, Anna\n", - "Pavlovna, the Empress, Now about your family. Do you know that since your daughter came\n", - "out everyone has been enraptured by her? They say she is amazingly\n", - "beautiful., The prince, I often think,, I often think how unfairly sometimes the\n", - "joys of life are distributed. Why has fate given you two such splendid\n", - "children? I don't speak of Anatole, your youngest. I don't like\n", - "him,, Anatole, Two such charming children. And really you appreciate\n", - "them less than anyone, and so you don't deserve to have them., I can't help it,, the prince, Lavater would have said I\n", - "lack the bump of paternity., Don't joke; I mean to have a serious talk with you. Do you know I\n", - "am dissatisfied with your younger son? Between ourselves, he was mentioned at Her\n", - "Majesty's and you were pitied...., The prince, What would you have me do?, You know I did all\n", - "a father could for their education, and they have both turned out\n", - "fools. Hippolyte is at least a quiet fool, but Anatole is an active\n", - "one. That is the only difference between them., And why are children born to such men as you? If you were not a\n", - "father there would be nothing I could reproach you with,, Anna\n", - "Pavlovna, I am your faithful slave and to you alone I can confess that my\n", - "children are the bane of my life. It is the cross I have to bear. That\n", - "is how I explain it to myself. It can't be helped!, Anna Pavlovna]\n" - ] - } - ], - "source": [ - "allText = bs.find_all('span', {'class':{'green', 'red'}})\n", - "print([text for text in allText])" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "7\n" - ] - } - ], - "source": [ - "nameList = bs.find_all(text='the prince')\n", - "print(len(nameList))" - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "[]\n" - ] - } - ], - "source": [ - "title = bs.find_all(id='title', class_='text')\n", - "print([text for text in allText])" - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "\n", - "\n", - "\n", - "Item Title\n", - "\n", - "Description\n", - "\n", - "Cost\n", - "\n", - "Image\n", - "\n", - "\n", - "\n", - "\n", - "Vegetable Basket\n", - "\n", - "This vegetable basket is the perfect gift for your health conscious (or overweight) friends!\n", - "Now with super-colorful bell peppers!\n", - "\n", - "$15.00\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "Russian Nesting Dolls\n", - "\n", - "Hand-painted by trained monkeys, these exquisite dolls are priceless! And by \"priceless,\" we mean \"extremely expensive\"! 8 entire dolls per set! Octuple the presents!\n", - "\n", - "$10,000.52\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "Fish Painting\n", - "\n", - "If something seems fishy about this painting, it's because it's a fish! Also hand-painted by trained monkeys!\n", - "\n", - "$10,005.00\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "Dead Parrot\n", - "\n", - "This is an ex-parrot! Or maybe he's only resting?\n", - "\n", - "$0.50\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "Mystery Box\n", - "\n", - "If you love suprises, this mystery box is for you! Do not place on light-colored surfaces. May cause oil staining. Keep your friends guessing!\n", - "\n", - "$1.50\n", - "\n", - "\n", - "\n", - "\n", - "\n" - ] - } - ], - "source": [ - "from urllib.request import urlopen\n", - "from bs4 import BeautifulSoup\n", - "\n", - "html = urlopen('http://www.pythonscraping.com/pages/page3.html')\n", - "bs = BeautifulSoup(html, 'html.parser')\n", - "\n", - "for child in bs.find('table',{'id':'giftList'}).children:\n", - " print(child)" - ] - }, - { - "cell_type": "code", - "execution_count": 26, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "\n", - "\n", - "\n", - "Vegetable Basket\n", - "\n", - "This vegetable basket is the perfect gift for your health conscious (or overweight) friends!\n", - "Now with super-colorful bell peppers!\n", - "\n", - "$15.00\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "Russian Nesting Dolls\n", - "\n", - "Hand-painted by trained monkeys, these exquisite dolls are priceless! And by \"priceless,\" we mean \"extremely expensive\"! 8 entire dolls per set! Octuple the presents!\n", - "\n", - "$10,000.52\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "Fish Painting\n", - "\n", - "If something seems fishy about this painting, it's because it's a fish! Also hand-painted by trained monkeys!\n", - "\n", - "$10,005.00\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "Dead Parrot\n", - "\n", - "This is an ex-parrot! Or maybe he's only resting?\n", - "\n", - "$0.50\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "Mystery Box\n", - "\n", - "If you love suprises, this mystery box is for you! Do not place on light-colored surfaces. May cause oil staining. Keep your friends guessing!\n", - "\n", - "$1.50\n", - "\n", - "\n", - "\n", - "\n", - "\n" - ] - } - ], - "source": [ - "from urllib.request import urlopen\n", - "from bs4 import BeautifulSoup\n", - "\n", - "html = urlopen('http://www.pythonscraping.com/pages/page3.html')\n", - "bs = BeautifulSoup(html, 'html.parser')\n", - "\n", - "for sibling in bs.find('table', {'id':'giftList'}).tr.next_siblings:\n", - " print(sibling) " - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "\n", - "$15.00\n", - "\n" - ] - } - ], - "source": [ - "from urllib.request import urlopen\n", - "from bs4 import BeautifulSoup\n", - "\n", - "html = urlopen('http://www.pythonscraping.com/pages/page3.html')\n", - "bs = BeautifulSoup(html, 'html.parser')\n", - "print(bs.find('img',\n", - " {'src':'../img/gifts/img1.jpg'})\n", - " .parent.previous_sibling.get_text())" - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "../img/gifts/img1.jpg\n", - "../img/gifts/img2.jpg\n", - "../img/gifts/img3.jpg\n", - "../img/gifts/img4.jpg\n", - "../img/gifts/img6.jpg\n" - ] - } - ], - "source": [ - "from urllib.request import urlopen\n", - "from bs4 import BeautifulSoup\n", - "import re\n", - "\n", - "html = urlopen('http://www.pythonscraping.com/pages/page3.html')\n", - "bs = BeautifulSoup(html, 'html.parser')\n", - "images = bs.find_all('img', {'src':re.compile('\\.\\.\\/img\\/gifts/img.*\\.jpg')})\n", - "for image in images: \n", - " print(image['src'])" - ] - }, - { - "cell_type": "code", - "execution_count": 30, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "[,\n", - " \n", - " Vegetable Basket\n", - " \n", - " This vegetable basket is the perfect gift for your health conscious (or overweight) friends!\n", - " Now with super-colorful bell peppers!\n", - " \n", - " $15.00\n", - " \n", - " \n", - " ,\n", - " \n", - " Russian Nesting Dolls\n", - " \n", - " Hand-painted by trained monkeys, these exquisite dolls are priceless! And by \"priceless,\" we mean \"extremely expensive\"! 8 entire dolls per set! Octuple the presents!\n", - " \n", - " $10,000.52\n", - " \n", - " \n", - " ,\n", - " \n", - " Fish Painting\n", - " \n", - " If something seems fishy about this painting, it's because it's a fish! Also hand-painted by trained monkeys!\n", - " \n", - " $10,005.00\n", - " \n", - " \n", - " ,\n", - " \n", - " Dead Parrot\n", - " \n", - " This is an ex-parrot! Or maybe he's only resting?\n", - " \n", - " $0.50\n", - " \n", - " \n", - " ,\n", - " \n", - " Mystery Box\n", - " \n", - " If you love suprises, this mystery box is for you! Do not place on light-colored surfaces. May cause oil staining. Keep your friends guessing!\n", - " \n", - " $1.50\n", - " \n", - " \n", - " ]" - ] - }, - "execution_count": 30, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "bs.find_all(lambda tag: len(tag.attrs) == 2)" - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "[Or maybe he's only resting?]" - ] - }, - "execution_count": 9, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "bs.find_all(lambda tag: tag.get_text() == 'Or maybe he\\'s only resting?')" - ] - }, - { - "cell_type": "code", - "execution_count": 10, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "[\"Or maybe he's only resting?\"]" - ] - }, - "execution_count": 10, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "bs.find_all('', text='Or maybe he\\'s only resting?')" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.6.1" - } - }, - "nbformat": 4, - "nbformat_minor": 2 -} diff --git a/Chapter03-web-crawlers.ipynb b/Chapter03-web-crawlers.ipynb deleted file mode 100644 index 4aa9d99..0000000 --- a/Chapter03-web-crawlers.ipynb +++ /dev/null @@ -1,1825 +0,0 @@ -{ - "cells": [ - { - "cell_type": "code", - "execution_count": 1, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "/wiki/Wikipedia:Protection_policy#semi\n", - "#mw-head\n", - "#p-search\n", - "/wiki/Kevin_Bacon_(disambiguation)\n", - "/wiki/File:Kevin_Bacon_SDCC_2014.jpg\n", - "/wiki/San_Diego_Comic-Con\n", - "/wiki/Philadelphia\n", - "/wiki/Pennsylvania\n", - "/wiki/Kyra_Sedgwick\n", - "/wiki/Sosie_Bacon\n", - "/wiki/Edmund_Bacon_(architect)\n", - "/wiki/Michael_Bacon_(musician)\n", - "http://baconbros.com/\n", - "#cite_note-1\n", - "#cite_note-actor-2\n", - "/wiki/Footloose_(1984_film)\n", - "/wiki/JFK_(film)\n", - "/wiki/A_Few_Good_Men\n", - "/wiki/Apollo_13_(film)\n", - "/wiki/Mystic_River_(film)\n", - "/wiki/Sleepers\n", - "/wiki/The_Woodsman_(2004_film)\n", - "/wiki/Fox_Broadcasting_Company\n", - "/wiki/The_Following\n", - "/wiki/HBO\n", - "/wiki/Taking_Chance\n", - "/wiki/Golden_Globe_Award\n", - "/wiki/Screen_Actors_Guild_Award\n", - "/wiki/Primetime_Emmy_Award\n", - "/wiki/The_Guardian\n", - "/wiki/Academy_Award\n", - "#cite_note-3\n", - "/wiki/Hollywood_Walk_of_Fame\n", - "#cite_note-4\n", - "/wiki/Social_networks\n", - "/wiki/Six_Degrees_of_Kevin_Bacon\n", - "/wiki/SixDegrees.org\n", - "#cite_note-walk-5\n", - "#Early_life_and_education\n", - "#Acting_career\n", - "#Early_work\n", - "#1980s\n", - "#1990s\n", - "#2000s\n", - "#2010s\n", - "#Advertising_work\n", - "#Personal_life\n", - "#Six_Degrees_of_Kevin_Bacon\n", - "#Music\n", - "#Awards_and_nominations\n", - "#Filmography\n", - "#See_also\n", - "#References\n", - "#External_links\n", - "/wiki/Philadelphia\n", - "#cite_note-actor-2\n", - "#cite_note-actor-2\n", - "/wiki/Edmund_Bacon_(architect)\n", - "#cite_note-bacon-6\n", - "/wiki/Pennsylvania_Governor%27s_School_for_the_Arts\n", - "/wiki/Bucknell_University\n", - "#cite_note-7\n", - "/wiki/Glory_Van_Scott\n", - "#cite_note-walk-5\n", - "#cite_note-bacon-6\n", - "/wiki/Circle_in_the_Square\n", - "/wiki/Nancy_Mills\n", - "/wiki/Cosmopolitan_(magazine)\n", - "#cite_note-cosmo91-8\n", - "/wiki/Fraternities_and_sororities\n", - "/wiki/Animal_House\n", - "#cite_note-bacon-6\n", - "/wiki/Search_for_Tomorrow\n", - "/wiki/Guiding_Light\n", - "/wiki/Friday_the_13th_(1980_film)\n", - "#cite_note-9\n", - "/wiki/Phoenix_Theater\n", - "/wiki/Flux\n", - "/wiki/Second_Stage_Theatre\n", - "#cite_note-bio-10\n", - "/wiki/Obie_Award\n", - "/wiki/Forty_Deuce\n", - "#cite_note-kevin-11\n", - "/wiki/Slab_Boys\n", - "/wiki/Sean_Penn\n", - "/wiki/Val_Kilmer\n", - "/wiki/Barry_Levinson\n", - "/wiki/Diner_(film)\n", - "/wiki/Steve_Guttenberg\n", - "/wiki/Daniel_Stern_(actor)\n", - "/wiki/Mickey_Rourke\n", - "/wiki/Tim_Daly\n", - "/wiki/Ellen_Barkin\n", - "#cite_note-12\n", - "/wiki/Footloose_(1984_film)\n", - "#cite_note-bio-10\n", - "/wiki/James_Dean\n", - "/wiki/Rebel_Without_a_Cause\n", - "/wiki/Mickey_Rooney\n", - "/wiki/Judy_Garland\n", - "#cite_note-time84-13\n", - "#cite_note-bacon-6\n", - "#cite_note-14\n", - "#cite_note-15\n", - "/wiki/People_(American_magazine)\n", - "/wiki/Typecasting_(acting)\n", - "/wiki/John_Hughes_(filmmaker)\n", - "/wiki/She%27s_Having_a_Baby\n", - "#cite_note-bio-10\n", - "/wiki/The_Big_Picture_(1989_film)\n", - "#cite_note-16\n", - "/wiki/Tremors_(film)\n", - "#cite_note-17\n", - "/wiki/Joel_Schumacher\n", - "/wiki/Flatliners\n", - "#cite_note-bio-10\n", - "/wiki/Elizabeth_Perkins\n", - "/wiki/He_Said,_She_Said\n", - "#cite_note-bio-10\n", - "/wiki/The_New_York_Times\n", - "#cite_note-nyt94-18\n", - "/wiki/Oliver_Stone\n", - "/wiki/JFK_(film)\n", - "#cite_note-19\n", - "/wiki/A_Few_Good_Men_(film)\n", - "#cite_note-20\n", - "/wiki/Michael_Greif\n", - "#cite_note-bio-10\n", - "/wiki/Golden_Globe_Award\n", - "/wiki/The_River_Wild\n", - "#cite_note-bio-10\n", - "/wiki/Meryl_Streep\n", - "/wiki/Murder_in_the_First_(film)\n", - "#cite_note-bio-10\n", - "/wiki/Blockbuster_(entertainment)\n", - "/wiki/Apollo_13_(film)\n", - "#cite_note-21\n", - "/wiki/Sleepers_(film)\n", - "#cite_note-22\n", - "/wiki/Picture_Perfect_(1997_film)\n", - "#cite_note-bio-10\n", - "/wiki/Losing_Chase\n", - "#cite_note-austin-23\n", - "/wiki/Digging_to_China\n", - "#cite_note-bio-10\n", - "/wiki/Payola\n", - "/wiki/Telling_Lies_in_America_(film)\n", - "#cite_note-bio-10\n", - "/wiki/Wild_Things_(film)\n", - "/wiki/Stir_of_Echoes\n", - "/wiki/David_Koepp\n", - "#cite_note-24\n", - "/wiki/File:KevinBaconTakingChanceFeb09.jpg\n", - "/wiki/File:KevinBaconTakingChanceFeb09.jpg\n", - "/wiki/Taking_Chance\n", - "/wiki/Paul_Verhoeven\n", - "/wiki/Hollow_Man\n", - "#cite_note-25\n", - "/wiki/Colin_Firth\n", - "/wiki/Rachel_Blanchard\n", - "/wiki/M%C3%A9nage_%C3%A0_trois\n", - "/wiki/Where_the_Truth_Lies\n", - "#cite_note-26\n", - "/wiki/Atom_Egoyan\n", - "/wiki/MPAA\n", - "/wiki/MPAA_film_rating_system\n", - "#cite_note-27\n", - "/wiki/Pedophile\n", - "/wiki/The_Woodsman_(2004_film)\n", - "#cite_note-28\n", - "/wiki/HBO_Films\n", - "/wiki/Taking_Chance\n", - "/wiki/Michael_Strobl\n", - "/wiki/Desert_Storm\n", - "#cite_note-29\n", - "/wiki/Screen_Actors_Guild_Award_for_Outstanding_Performance_by_a_Male_Actor_in_a_Miniseries_or_Television_Movie\n", - "/wiki/Matthew_Vaughn\n", - "/wiki/X-Men:_First_Class\n", - "#cite_note-30\n", - "/wiki/Sebastian_Shaw_(comics)\n", - "#cite_note-31\n", - "/wiki/Dustin_Lance_Black\n", - "/wiki/8_(play)\n", - "/wiki/Perry_v._Brown\n", - "/wiki/Proposition_8\n", - "/wiki/Charles_J._Cooper\n", - "#cite_note-8_the_play-32\n", - "/wiki/Wilshire_Ebell_Theatre\n", - "/wiki/American_Foundation_for_Equal_Rights\n", - "#cite_note-8_play_video-33\n", - "#cite_note-34\n", - "/wiki/The_Following\n", - "#cite_note-35\n", - "/wiki/Saturn_Award_for_Best_Actor_on_Television\n", - "#cite_note-36\n", - "/wiki/Huffington_Post\n", - "/wiki/Wikipedia:Citation_needed\n", - "/wiki/Tremors_(film)\n", - "/wiki/Wikipedia:Citation_needed\n", - "/wiki/Tremors_5:_Bloodline\n", - "/wiki/EE_(telecommunications_company)\n", - "/wiki/United_Kingdom\n", - "#cite_note-37\n", - "#cite_note-38\n", - "/wiki/Egg_as_food\n", - "#cite_note-39\n", - "/wiki/Kyra_Sedgwick\n", - "/wiki/PBS\n", - "/wiki/Lanford_Wilson\n", - "/wiki/Lemon_Sky\n", - "#cite_note-cosmo91-8\n", - "/wiki/Pyrates\n", - "/wiki/Murder_in_the_First_(film)\n", - "/wiki/The_Woodsman_(2004_film)\n", - "/wiki/Loverboy_(2005_film)\n", - "/wiki/Sosie_Bacon\n", - "/wiki/Upper_West_Side\n", - "/wiki/Manhattan\n", - "#cite_note-40\n", - "/wiki/Tracy_Pollan\n", - "#cite_note-41\n", - "#cite_note-42\n", - "#cite_note-43\n", - "/wiki/The_Times\n", - "#cite_note-44\n", - "#cite_note-45\n", - "/wiki/Will.i.am\n", - "/wiki/It%27s_a_New_Day_(Will.i.am_song)\n", - "/wiki/Barack_Obama\n", - "/wiki/Ponzi_scheme\n", - "/wiki/Bernard_Madoff\n", - "#cite_note-financialpost-46\n", - "#cite_note-47\n", - "/wiki/Finding_Your_Roots\n", - "/wiki/Henry_Louis_Gates\n", - "#cite_note-48\n", - "#cite_note-49\n", - "#cite_note-50\n", - "/wiki/Six_Degrees_of_Kevin_Bacon\n", - "/wiki/Trivia\n", - "/wiki/Big_screen\n", - "/wiki/Six_degrees_of_separation\n", - "/wiki/Internet_meme\n", - "/wiki/SixDegrees.org\n", - "#cite_note-51\n", - "/wiki/Bacon_number\n", - "/wiki/Internet_Movie_Database\n", - "#cite_note-52\n", - "/wiki/Paul_Erd%C5%91s\n", - "/wiki/Erd%C5%91s_number\n", - "/wiki/Paul_Erd%C5%91s\n", - "/wiki/Bacon_number\n", - "/wiki/Erd%C5%91s_number\n", - "/wiki/Erd%C5%91s%E2%80%93Bacon_number\n", - "#cite_note-53\n", - "/wiki/The_Bacon_Brothers\n", - "/wiki/Michael_Bacon_(musician)\n", - "/wiki/Music_album\n", - "#cite_note-54\n", - "/wiki/File:Question_book-new.svg\n", - "/wiki/Wikipedia:Citing_sources\n", - "/wiki/Wikipedia:Verifiability\n", - "//en.wikipedia.org/w/index.php?title=Kevin_Bacon&action=edit\n", - "/wiki/Help:Introduction_to_referencing_with_Wiki_Markup/1\n", - "/wiki/Wikipedia:Verifiability#Burden_of_evidence\n", - "/wiki/Help:Maintenance_template_removal\n", - "/wiki/Golden_Globe_Awards\n", - "/wiki/Golden_Globe_Award_for_Best_Supporting_Actor_%E2%80%93_Motion_Picture\n", - "/wiki/The_River_Wild\n", - "/wiki/Broadcast_Film_Critics_Association_Awards\n", - "/wiki/Broadcast_Film_Critics_Association_Award_for_Best_Actor\n", - "/wiki/Murder_in_the_First_(film)\n", - "/wiki/Screen_Actors_Guild_Awards\n", - "/wiki/Screen_Actors_Guild_Award_for_Outstanding_Performance_by_a_Cast_in_a_Motion_Picture\n", - "/wiki/Apollo_13_(film)\n", - "/wiki/Screen_Actors_Guild_Awards\n", - "/wiki/Screen_Actors_Guild_Award_for_Outstanding_Performance_by_a_Male_Actor_in_a_Supporting_Role\n", - "/wiki/Murder_in_the_First_(film)\n", - "/wiki/MTV_Movie_Awards\n", - "/wiki/MTV_Movie_Award_for_Best_Villain\n", - "/wiki/Hollow_Man\n", - "/wiki/Boston_Society_of_Film_Critics_Awards\n", - "/wiki/Boston_Society_of_Film_Critics_Award_for_Best_Cast\n", - "/wiki/Mystic_River_(film)\n", - "/wiki/Screen_Actors_Guild_Awards\n", - "/wiki/Screen_Actors_Guild_Award_for_Outstanding_Performance_by_a_Cast_in_a_Motion_Picture\n", - "/wiki/Mystic_River_(film)\n", - "/wiki/Satellite_Awards\n", - "/wiki/Satellite_Award_for_Best_Actor_%E2%80%93_Motion_Picture_Drama\n", - "/wiki/The_Woodsman_(2004_film)\n", - "/wiki/Teen_Choice_Awards\n", - "/wiki/Teen_Choice_Awards\n", - "/wiki/Beauty_Shop\n", - "/wiki/Primetime_Emmy_Awards\n", - "/wiki/Primetime_Emmy_Award_for_Outstanding_Lead_Actor_in_a_Miniseries_or_a_Movie\n", - "/wiki/Taking_Chance\n", - "/wiki/Satellite_Awards\n", - "/wiki/Satellite_Award_for_Best_Actor_%E2%80%93_Miniseries_or_Television_Film\n", - "/wiki/Taking_Chance\n", - "/wiki/Screen_Actors_Guild_Awards\n", - "/wiki/Screen_Actors_Guild_Award_for_Outstanding_Performance_by_a_Cast_in_a_Motion_Picture\n", - "/wiki/Frost/Nixon_(film)\n", - "/wiki/Golden_Globe_Awards\n", - "/wiki/Golden_Globe_Award_for_Best_Actor_%E2%80%93_Miniseries_or_Television_Film\n", - "/wiki/Taking_Chance\n", - "/wiki/Screen_Actors_Guild_Awards\n", - "/wiki/Screen_Actors_Guild_Award_for_Outstanding_Performance_by_a_Male_Actor_in_a_Miniseries_or_Television_Movie\n", - "/wiki/Taking_Chance\n", - "/wiki/Teen_Choice_Awards\n", - "/wiki/Teen_Choice_Awards\n", - "/wiki/X-Men:_First_Class\n", - "/wiki/Saturn_Awards\n", - "/wiki/Saturn_Award_for_Best_Actor_on_Television\n", - "/wiki/The_Following\n", - "/wiki/People%27s_Choice_Awards\n", - "/wiki/People%27s_Choice_Awards\n", - "/wiki/The_Following\n", - "/wiki/Saturn_Awards\n", - "/wiki/Saturn_Award_for_Best_Actor_on_Television\n", - "/wiki/The_Following\n", - "/wiki/Golden_Globe_Awards\n", - "/wiki/Golden_Globe_Award_for_Best_Actor_%E2%80%93_Television_Series_Musical_or_Comedy\n", - "/wiki/I_Love_Dick_(TV_series)\n", - "#cite_note-55\n", - "#cite_note-56\n", - "#cite_note-57\n", - "#cite_note-58\n", - "/wiki/Kevin_Bacon_filmography\n", - "/wiki/List_of_actors_with_Hollywood_Walk_of_Fame_motion_picture_stars\n", - "#cite_ref-1\n", - "https://web.archive.org/web/20090113222205/http://www.newenglandancestors.org/research/services/articles_gbr78.asp\n", - "http://www.newenglandancestors.org/research/services/articles_gbr78.asp\n", - "#cite_ref-actor_2-0\n", - "#cite_ref-actor_2-1\n", - "#cite_ref-actor_2-2\n", - "http://www.biography.com/people/kevin-bacon-9542173\n", - "#cite_ref-3\n", - "https://www.theguardian.com/film/filmblog/2009/feb/19/best-actors-never-nominated-for-oscars\n", - "#cite_ref-4\n", - "http://www.walkoffame.com/kevin-bacon\n", - "#cite_ref-walk_5-0\n", - "#cite_ref-walk_5-1\n", - "https://web.archive.org/web/20141016202657/http://www.thebiographychannel.co.uk/biographies/kevin-bacon.html\n", - "http://www.thebiographychannel.co.uk/biographies/kevin-bacon.html\n", - "#cite_ref-bacon_6-0\n", - "#cite_ref-bacon_6-1\n", - "#cite_ref-bacon_6-2\n", - "#cite_ref-bacon_6-3\n", - "http://www.biography.com/news/kevin-bacon-biography-facts\n", - "#cite_ref-7\n", - "https://movies.yahoo.com/person/kevin-bacon/biography.html\n", - "#cite_ref-cosmo91_8-0\n", - "#cite_ref-cosmo91_8-1\n", - "#cite_ref-9\n", - "http://www.nydailynews.com/entertainment/happy-halloween-superstars-start-horror-flick-gallery-1.98345\n", - "#cite_ref-bio_10-0\n", - "#cite_ref-bio_10-1\n", - "#cite_ref-bio_10-2\n", - "#cite_ref-bio_10-3\n", - "#cite_ref-bio_10-4\n", - "#cite_ref-bio_10-5\n", - "#cite_ref-bio_10-6\n", - "#cite_ref-bio_10-7\n", - "#cite_ref-bio_10-8\n", - "#cite_ref-bio_10-9\n", - "#cite_ref-bio_10-10\n", - "https://www.pbs.org/wnet/finding-your-roots/profiles/kevin-bacon%C2%A0/\n", - "#cite_ref-kevin_11-0\n", - "http://www.tvguide.com/celebrities/kevin-bacon/bio/160550\n", - "#cite_ref-12\n", - "http://news.moviefone.com/2012/03/02/diner-30th-anniversary/\n", - "#cite_ref-time84_13-0\n", - "http://www.time.com/time/magazine/article/0,9171,950019,00.html\n", - "#cite_ref-14\n", - "http://www.huffingtonpost.com/2014/08/25/kevin-bacon-footloose_n_5710413.html\n", - "#cite_ref-15\n", - "https://web.archive.org/web/20090109152125/http://www.thebiographychannel.co.uk/biography_story/522%3A492/1/Kevin_Bacon.htm\n", - "http://www.thebiographychannel.co.uk/biography_story/522:492/1/Kevin_Bacon.htm\n", - "#cite_ref-16\n", - "https://www.nytimes.com/1994/09/25/movies/a-second-wind-is-blowing-for-kevin-bacon.html\n", - "#cite_ref-17\n", - "https://www.nytimes.com/movie/review?res=9C0CE2DE1631F93AA25752C0A966958260\n", - "#cite_ref-nyt94_18-0\n", - "https://query.nytimes.com/gst/fullpage.html?res=9C07E6D91F3BF936A1575AC0A962958260&sec=&spon=&pagewanted=all\n", - "#cite_ref-19\n", - "http://www.jfk-online.com/jfkbacon.html\n", - "#cite_ref-20\n", - "http://www.tcm.com/this-month/article/143158%7C0/A-Few-Good-Men.html\n", - "#cite_ref-21\n", - "http://collider.com/kevin-bacon-commercials-footloose/\n", - "#cite_ref-22\n", - "http://www.rogerebert.com/reviews/sleepers-1996\n", - "#cite_ref-austin_23-0\n", - "http://www.austinchronicle.com/calendar/film/1997-02-07/283342/\n", - "/wiki/The_Austin_Chronicle\n", - "#cite_ref-24\n", - "http://www.criminalelement.com/blogs/2013/09/under-the-raderhorror-movies-you-may-have-missed-stir-of-echoes\n", - "#cite_ref-25\n", - "http://www.rogerebert.com/reviews/hollow-man-2000\n", - "#cite_ref-26\n", - "http://movies.about.com/od/wherethetruthlies/a/truthkb101305.htm\n", - "#cite_ref-27\n", - "http://jam.canoe.ca/Movies/2005/09/14/1216527.html\n", - "#cite_ref-28\n", - "http://www.latimes.com/entertainment/la-et-kevin-bacon-photo6-photo.html\n", - "#cite_ref-29\n", - "http://www.nydailynews.com/entertainment/tv-movies/kevin-bacon-chance-body-fallen-marine-home-article-1.392226\n", - "#cite_ref-30\n", - "https://web.archive.org/web/20100722010545/http://heatvision.hollywoodreporter.com/2010/07/winters-bone-star-cast-as-mystique-in-xmen-first-class.html\n", - "http://heatvision.hollywoodreporter.com/2010/07/winters-bone-star-cast-as-mystique-in-xmen-first-class.html\n", - "#cite_ref-31\n", - "https://web.archive.org/web/20100720060214/http://www.forcesofgeek.com/2010/07/kevin-bacon-playing-sebastian-shaw-in-x.html\n", - "http://www.forcesofgeek.com/2010/07/kevin-bacon-playing-sebastian-shaw-in-x.html\n", - "#cite_ref-8_the_play_32-0\n", - "http://www.accesshollywood.com/jesse-tyler-ferguson/glee-stars-touched-by-brad-pitt-and-george-clooneys-support-of-8_article_61543\n", - "/wiki/Access_Hollywood\n", - "#cite_ref-8_play_video_33-0\n", - "https://www.youtube.com/watch?v=qlUG8F9uVgM\n", - "#cite_ref-34\n", - "http://www.pinknews.co.uk/2012/03/01/youtube-to-broadcast-proposition-8-play-live/\n", - "#cite_ref-35\n", - "http://www.fox.com/the-following/\n", - "#cite_ref-36\n", - "https://news.yahoo.com/blogs/trending-now/kevin-bacon-gives-millennials-a-history-lesson-about-the--80s-162525915.html\n", - "#cite_ref-37\n", - "http://www.campaignlive.co.uk/news/1294856/\n", - "#cite_ref-38\n", - "http://parade.condenast.com/269380/ashleighschmitz/kevin-bacon-reprises-his-most-iconic-film-roles-in-british-commercial/\n", - "#cite_ref-39\n", - "http://money.cnn.com/2015/03/13/media/kevin-bacon-eggs/index.html?iid=HP_LN\n", - "#cite_ref-40\n", - "http://www.nydailynews.com/entertainment/tv-movies/kevin-bacon-loyalty-nyc-philly-origins-peace-bustling-city-article-1.147197\n", - "#cite_ref-41\n", - "http://www.people.com/people/archive/article/0,,20093025,00.html\n", - "#cite_ref-42\n", - "http://www.au.org/media/church-and-state/archives/2008/05/two-thumbs-up.html\n", - "#cite_ref-43\n", - "https://www.washingtonpost.com/wp-dyn/content/article/2008/03/25/AR2008032503852.html\n", - "#cite_ref-44\n", - "#cite_ref-45\n", - "http://www.foxnews.com/story/0,2933,343589,00.html\n", - "#cite_ref-financialpost_46-0\n", - "https://web.archive.org/web/20140314085857/http://economiccrisis.us/2009/06/may-god-spare-mercy-victim-tells-madoff/\n", - "http://economiccrisis.us/2009/06/may-god-spare-mercy-victim-tells-madoff/\n", - "#cite_ref-47\n", - "#cite_ref-48\n", - "http://www.huffingtonpost.com/megan-smolenyak-smolenyak/6-degrees-of-separation-k_b_900707.html\n", - "#cite_ref-49\n", - "https://web.archive.org/web/20130405182304/http://www.drawtheline.org/watch-stuff/\n", - "http://www.drawtheline.org/watch-stuff\n", - "#cite_ref-50\n", - "http://www.drawtheline.org/sign-now/\n", - "#cite_ref-51\n", - "http://www.sixdegrees.org/\n", - "#cite_ref-52\n", - "http://www.webmonkey.com/2012/09/easter-egg-google-connects-the-dots-for-bacon-number-search/\n", - "#cite_ref-53\n", - "http://www.telegraph.co.uk/science/science-news/4768389/And-the-winner-tonight-is.html\n", - "#cite_ref-54\n", - "http://baconbros.com/\n", - "#cite_ref-55\n", - "/wiki/Reuters\n", - "https://www.cbsnews.com/pictures/golden-globes-2018-highlights/50/\n", - "/wiki/CBS_News\n", - "#cite_ref-56\n", - "https://www.theverge.com/2018/1/7/16861812/golden-globes-2018-aziz-ansari-master-of-none-best-actor-tv\n", - "/wiki/The_Verge\n", - "#cite_ref-57\n", - "https://www.hollywoodreporter.com/news/aziz-ansari-wins-best-performance-by-an-actor-a-tv-series-comedy-musical-golden-globes-2018-1072154\n", - "/wiki/The_Hollywood_Reporter\n", - "#cite_ref-58\n", - "http://www.indiewire.com/2018/01/aziz-ansari-wins-golden-globe-best-actor-tv-comedy-1201914235/\n", - "/wiki/Indie_Wire\n", - "https://commons.wikimedia.org/wiki/Category:Kevin_Bacon\n", - "http://www.imdb.com/name/nm0000102/\n", - "/wiki/IMDb\n", - "https://www.ibdb.com/Person/View/90569\n", - "/wiki/Internet_Broadway_Database\n", - "https://www.wikidata.org/wiki/Q3454165#P1220\n", - "http://www.lortel.org/Archives/CreditableEntity/5597\n", - "/wiki/Lortel_Archives\n", - "https://www.allmovie.com/artist/p3164\n", - "/wiki/AllMovie\n", - "http://oracleofbacon.org\n", - "/wiki/Template:Critics%27_Choice_Movie_Award_for_Best_Actor\n", - "/wiki/Template_talk:Critics%27_Choice_Movie_Award_for_Best_Actor\n", - "//en.wikipedia.org/w/index.php?title=Template:Critics%27_Choice_Movie_Award_for_Best_Actor&action=edit\n", - "/wiki/Critics%27_Choice_Movie_Award_for_Best_Actor\n", - "/wiki/Geoffrey_Rush\n", - "/wiki/Jack_Nicholson\n", - "/wiki/Ian_McKellen\n", - "/wiki/Russell_Crowe\n", - "/wiki/Russell_Crowe\n", - "/wiki/Russell_Crowe\n", - "/wiki/Daniel_Day-Lewis\n", - "/wiki/Jack_Nicholson\n", - "/wiki/Sean_Penn\n", - "/wiki/Jamie_Foxx\n", - "/wiki/Philip_Seymour_Hoffman\n", - "/wiki/Forest_Whitaker\n", - "/wiki/Daniel_Day-Lewis\n", - "/wiki/Sean_Penn\n", - "/wiki/Jeff_Bridges\n", - "/wiki/Colin_Firth\n", - "/wiki/George_Clooney\n", - "/wiki/Daniel_Day-Lewis\n", - "/wiki/Matthew_McConaughey\n", - "/wiki/Michael_Keaton\n", - "/wiki/Leonardo_DiCaprio\n", - "/wiki/Casey_Affleck\n", - "/wiki/Gary_Oldman\n", - "/wiki/Template:GoldenGlobeBestActorTVMiniseriesFilm\n", - "/wiki/Template_talk:GoldenGlobeBestActorTVMiniseriesFilm\n", - "//en.wikipedia.org/w/index.php?title=Template:GoldenGlobeBestActorTVMiniseriesFilm&action=edit\n", - "/wiki/Golden_Globe_Award_for_Best_Actor_%E2%80%93_Miniseries_or_Television_Film\n", - "/wiki/Mickey_Rooney\n", - "/wiki/Anthony_Andrews\n", - "/wiki/Richard_Chamberlain\n", - "/wiki/Ted_Danson\n", - "/wiki/Dustin_Hoffman\n", - "/wiki/James_Woods\n", - "/wiki/Randy_Quaid\n", - "/wiki/Michael_Caine\n", - "/wiki/Stacy_Keach\n", - "/wiki/Robert_Duvall\n", - "/wiki/James_Garner\n", - "/wiki/Beau_Bridges\n", - "/wiki/Robert_Duvall\n", - "/wiki/James_Garner\n", - "/wiki/Ra%C3%BAl_Juli%C3%A1\n", - "/wiki/Gary_Sinise\n", - "/wiki/Alan_Rickman\n", - "/wiki/Ving_Rhames\n", - "/wiki/Stanley_Tucci\n", - "/wiki/Jack_Lemmon\n", - "/wiki/Brian_Dennehy\n", - "/wiki/James_Franco\n", - "/wiki/Albert_Finney\n", - "/wiki/Al_Pacino\n", - "/wiki/Geoffrey_Rush\n", - "/wiki/Jonathan_Rhys_Meyers\n", - "/wiki/Bill_Nighy\n", - "/wiki/Jim_Broadbent\n", - "/wiki/Paul_Giamatti\n", - "/wiki/Al_Pacino\n", - "/wiki/Idris_Elba\n", - "/wiki/Kevin_Costner\n", - "/wiki/Michael_Douglas\n", - "/wiki/Billy_Bob_Thornton\n", - "/wiki/Oscar_Isaac\n", - "/wiki/Tom_Hiddleston\n", - "/wiki/Ewan_McGregor\n", - "/wiki/Template:Saturn_Award_for_Best_Actor_on_Television\n", - "/wiki/Template_talk:Saturn_Award_for_Best_Actor_on_Television\n", - "//en.wikipedia.org/w/index.php?title=Template:Saturn_Award_for_Best_Actor_on_Television&action=edit\n", - "/wiki/Saturn_Award_for_Best_Actor_on_Television\n", - "/wiki/Kyle_Chandler\n", - "/wiki/Steven_Weber_(actor)\n", - "/wiki/Richard_Dean_Anderson\n", - "/wiki/David_Boreanaz\n", - "/wiki/Robert_Patrick\n", - "/wiki/Ben_Browder\n", - "/wiki/David_Boreanaz\n", - "/wiki/David_Boreanaz\n", - "/wiki/Ben_Browder\n", - "/wiki/Matthew_Fox\n", - "/wiki/Michael_C._Hall\n", - "/wiki/Matthew_Fox\n", - "/wiki/Edward_James_Olmos\n", - "/wiki/Josh_Holloway\n", - "/wiki/Stephen_Moyer\n", - "/wiki/Bryan_Cranston\n", - "/wiki/Bryan_Cranston\n", - "/wiki/Mads_Mikkelsen\n", - "/wiki/Hugh_Dancy\n", - "/wiki/Andrew_Lincoln\n", - "/wiki/Bruce_Campbell\n", - "/wiki/Andrew_Lincoln\n", - "/wiki/Template:ScreenActorsGuildAward_MaleTVMiniseriesMovie\n", - "/wiki/Template_talk:ScreenActorsGuildAward_MaleTVMiniseriesMovie\n", - "//en.wikipedia.org/w/index.php?title=Template:ScreenActorsGuildAward_MaleTVMiniseriesMovie&action=edit\n", - "/wiki/Screen_Actors_Guild_Award_for_Outstanding_Performance_by_a_Male_Actor_in_a_Miniseries_or_Television_Movie\n", - "/wiki/Ra%C3%BAl_Juli%C3%A1\n", - "/wiki/Gary_Sinise\n", - "/wiki/Alan_Rickman\n", - "/wiki/Gary_Sinise\n", - "/wiki/Christopher_Reeve\n", - "/wiki/Jack_Lemmon\n", - "/wiki/Brian_Dennehy\n", - "/wiki/Ben_Kingsley\n", - "/wiki/William_H._Macy\n", - "/wiki/Al_Pacino\n", - "/wiki/Geoffrey_Rush\n", - "/wiki/Paul_Newman\n", - "/wiki/Jeremy_Irons\n", - "/wiki/Kevin_Kline\n", - "/wiki/Paul_Giamatti\n", - "/wiki/Al_Pacino\n", - "/wiki/Paul_Giamatti\n", - "/wiki/Kevin_Costner\n", - "/wiki/Michael_Douglas\n", - "/wiki/Mark_Ruffalo\n", - "/wiki/Idris_Elba\n", - "/wiki/Bryan_Cranston\n", - "/wiki/Alexander_Skarsg%C3%A5rd\n", - "/wiki/Template:ScreenActorsGuildAward_CastMotionPicture_1995%E2%80%932000\n", - "/wiki/Template_talk:ScreenActorsGuildAward_CastMotionPicture_1995%E2%80%932000\n", - "//en.wikipedia.org/w/index.php?title=Template:ScreenActorsGuildAward_CastMotionPicture_1995%E2%80%932000&action=edit\n", - "/wiki/Screen_Actors_Guild_Award_for_Outstanding_Performance_by_a_Cast_in_a_Motion_Picture\n", - "/wiki/Apollo_13_(film)\n", - "/wiki/Tom_Hanks\n", - "/wiki/Ed_Harris\n", - "/wiki/Bill_Paxton\n", - "/wiki/Kathleen_Quinlan\n", - "/wiki/Gary_Sinise\n", - "/wiki/The_Birdcage\n", - "/wiki/Hank_Azaria\n", - "/wiki/Christine_Baranski\n", - "/wiki/Dan_Futterman\n", - "/wiki/Gene_Hackman\n", - "/wiki/Nathan_Lane\n", - "/wiki/Dianne_Wiest\n", - "/wiki/Robin_Williams\n", - "/wiki/The_Full_Monty\n", - "/wiki/Mark_Addy\n", - "/wiki/Paul_Barber_(actor)\n", - "/wiki/Robert_Carlyle\n", - "/w/index.php?title=Deirdre_Costello_(actress)&action=edit&redlink=1\n", - "/wiki/Steve_Huison\n", - "/wiki/Bruce_Jones_(actor)\n", - "/wiki/Lesley_Sharp\n", - "/wiki/William_Snape\n", - "/wiki/Hugo_Speer\n", - "/wiki/Tom_Wilkinson\n", - "/wiki/Emily_Woof\n", - "/wiki/Shakespeare_in_Love\n", - "/wiki/Ben_Affleck\n", - "/wiki/Simon_Callow\n", - "/wiki/Jim_Carter_(actor)\n", - "/wiki/Martin_Clunes\n", - "/wiki/Judi_Dench\n", - "/wiki/Joseph_Fiennes\n", - "/wiki/Colin_Firth\n", - "/wiki/Gwyneth_Paltrow\n", - "/wiki/Geoffrey_Rush\n", - "/wiki/Antony_Sher\n", - "/wiki/Imelda_Staunton\n", - "/wiki/American_Beauty_(1999_film)\n", - "/wiki/Annette_Bening\n", - "/wiki/Wes_Bentley\n", - "/wiki/Thora_Birch\n", - "/wiki/Chris_Cooper\n", - "/wiki/Peter_Gallagher\n", - "/wiki/Allison_Janney\n", - "/wiki/Kevin_Spacey\n", - "/wiki/Mena_Suvari\n", - "/wiki/Traffic_(2000_film)\n", - "/wiki/Steven_Bauer\n", - "/wiki/Benjamin_Bratt\n", - "/wiki/James_Brolin\n", - "/wiki/Don_Cheadle\n", - "/wiki/Erika_Christensen\n", - "/wiki/Clifton_Collins_Jr.\n", - "/wiki/Benicio_del_Toro\n", - "/wiki/Michael_Douglas\n", - "/wiki/Miguel_Ferrer\n", - "/wiki/Albert_Finney\n", - "/wiki/Topher_Grace\n", - "/wiki/Luis_Guzm%C3%A1n\n", - "/wiki/Amy_Irving\n", - "/wiki/Tomas_Milian\n", - "/wiki/D._W._Moffett\n", - "/wiki/Dennis_Quaid\n", - "/wiki/Peter_Riegert\n", - "/wiki/Jacob_Vargas\n", - "/wiki/Catherine_Zeta-Jones\n", - "/wiki/Screen_Actors_Guild_Award_for_Outstanding_Performance_by_a_Cast_in_a_Motion_Picture\n", - "/wiki/Template:ScreenActorsGuildAward_CastMotionPicture_1995%E2%80%932000\n", - "/wiki/Template:ScreenActorsGuildAward_CastMotionPicture_2001%E2%80%932010\n", - "/wiki/Template:ScreenActorsGuildAward_CastMotionPicture_2011%E2%80%932020\n", - "/wiki/Help:Authority_control\n", - "https://www.worldcat.org/identities/containsVIAFID/39570812\n", - "/wiki/Virtual_International_Authority_File\n", - "https://viaf.org/viaf/39570812\n", - "/wiki/Library_of_Congress_Control_Number\n", - "http://id.loc.gov/authorities/names/n88034930\n", - "/wiki/International_Standard_Name_Identifier\n", - "http://isni.org/isni/0000000121291300\n", - "/wiki/Integrated_Authority_File\n", - "https://d-nb.info/gnd/124109659\n", - "/wiki/Syst%C3%A8me_universitaire_de_documentation\n", - "https://www.idref.fr/084292652\n", - "/wiki/Biblioth%C3%A8que_nationale_de_France\n", - "http://catalogue.bnf.fr/ark:/12148/cb139817766\n", - "http://data.bnf.fr/ark:/12148/cb139817766\n", - "/wiki/MusicBrainz\n", - "https://musicbrainz.org/artist/cc0dbdfc-9b2c-4e31-8448-808412388406\n", - "/wiki/SNAC\n", - "http://socialarchive.iath.virginia.edu/ark:/99166/w6w67gw2\n", - "https://en.wikipedia.org/w/index.php?title=Kevin_Bacon&oldid=821876006\n", - "/wiki/Help:Category\n", - "/wiki/Category:1958_births\n", - "/wiki/Category:20th-century_American_male_actors\n", - "/wiki/Category:21st-century_American_male_actors\n", - "/wiki/Category:American_atheists\n", - "/wiki/Category:American_male_film_actors\n", - "/wiki/Category:American_male_soap_opera_actors\n", - "/wiki/Category:American_male_television_actors\n", - "/wiki/Category:American_male_voice_actors\n", - "/wiki/Category:The_Bacon_Brothers_members\n", - "/wiki/Category:Best_Miniseries_or_Television_Movie_Actor_Golden_Globe_winners\n", - "/wiki/Category:Circle_in_the_Square_Theatre_School_alumni\n", - "/wiki/Category:Living_people\n", - "/wiki/Category:Male_actors_from_Philadelphia\n", - "/wiki/Category:Obie_Award_recipients\n", - "/wiki/Category:Outstanding_Performance_by_a_Cast_in_a_Motion_Picture_Screen_Actors_Guild_Award_winners\n", - "/wiki/Category:Sedgwick_family\n", - "/wiki/Category:Wikipedia_indefinitely_semi-protected_biographies_of_living_people\n", - "/wiki/Category:Use_mdy_dates_from_October_2016\n", - "/wiki/Category:Articles_with_hCards\n", - "/wiki/Category:All_articles_with_unsourced_statements\n", - "/wiki/Category:Articles_with_unsourced_statements_from_January_2016\n", - "/wiki/Category:Articles_needing_additional_references_from_October_2017\n", - "/wiki/Category:All_articles_needing_additional_references\n", - "/wiki/Category:Articles_with_IBDb_links\n", - "/wiki/Category:Wikipedia_articles_with_VIAF_identifiers\n", - "/wiki/Category:Wikipedia_articles_with_LCCN_identifiers\n", - "/wiki/Category:Wikipedia_articles_with_ISNI_identifiers\n", - "/wiki/Category:Wikipedia_articles_with_GND_identifiers\n", - "/wiki/Category:Wikipedia_articles_with_BNF_identifiers\n", - "/wiki/Category:Wikipedia_articles_with_MusicBrainz_identifiers\n", - "/wiki/Category:Wikipedia_articles_with_SNAC-ID_identifiers\n", - "/wiki/Special:MyTalk\n", - "/wiki/Special:MyContributions\n", - "/w/index.php?title=Special:CreateAccount&returnto=Kevin+Bacon\n", - "/w/index.php?title=Special:UserLogin&returnto=Kevin+Bacon\n", - "/wiki/Kevin_Bacon\n", - "/wiki/Talk:Kevin_Bacon\n", - "/wiki/Kevin_Bacon\n", - "/w/index.php?title=Kevin_Bacon&action=edit\n", - "/w/index.php?title=Kevin_Bacon&action=history\n", - "/wiki/Main_Page\n", - "/wiki/Main_Page\n", - "/wiki/Portal:Contents\n", - "/wiki/Portal:Featured_content\n", - "/wiki/Portal:Current_events\n", - "/wiki/Special:Random\n", - "https://donate.wikimedia.org/wiki/Special:FundraiserRedirector?utm_source=donate&utm_medium=sidebar&utm_campaign=C13_en.wikipedia.org&uselang=en\n", - "//shop.wikimedia.org\n", - "/wiki/Help:Contents\n", - "/wiki/Wikipedia:About\n", - "/wiki/Wikipedia:Community_portal\n", - "/wiki/Special:RecentChanges\n", - "//en.wikipedia.org/wiki/Wikipedia:Contact_us\n", - "/wiki/Special:WhatLinksHere/Kevin_Bacon\n", - "/wiki/Special:RecentChangesLinked/Kevin_Bacon\n", - "/wiki/Wikipedia:File_Upload_Wizard\n", - "/wiki/Special:SpecialPages\n", - "/w/index.php?title=Kevin_Bacon&oldid=821876006\n", - "/w/index.php?title=Kevin_Bacon&action=info\n", - "https://www.wikidata.org/wiki/Special:EntityPage/Q3454165\n", - "/w/index.php?title=Special:CiteThisPage&page=Kevin_Bacon&id=821876006\n", - "/w/index.php?title=Special:Book&bookcmd=book_creator&referer=Kevin+Bacon\n", - "/w/index.php?title=Special:ElectronPdf&page=Kevin+Bacon&action=show-download-screen\n", - "/w/index.php?title=Kevin_Bacon&printable=yes\n", - "https://commons.wikimedia.org/wiki/Category:Kevin_Bacon\n", - "https://af.wikipedia.org/wiki/Kevin_Bacon\n", - "https://ar.wikipedia.org/wiki/%D9%83%D9%8A%D9%81%D9%8A%D9%86_%D8%A8%D9%8A%D9%83%D9%86\n", - "https://an.wikipedia.org/wiki/Kevin_Bacon\n", - "https://ast.wikipedia.org/wiki/Kevin_Bacon\n", - "https://azb.wikipedia.org/wiki/%DA%A9%D9%88%DB%8C%D9%86_%D8%A8%DB%8C%DA%A9%D9%86\n", - "https://zh-min-nan.wikipedia.org/wiki/Kevin_Bacon\n", - "https://bi.wikipedia.org/wiki/Kevin_Bacon\n", - "https://bg.wikipedia.org/wiki/%D0%9A%D0%B5%D0%B2%D0%B8%D0%BD_%D0%91%D0%B5%D0%B9%D0%BA%D1%8A%D0%BD\n", - "https://bs.wikipedia.org/wiki/Kevin_Bacon\n", - "https://ca.wikipedia.org/wiki/Kevin_Bacon\n", - "https://cs.wikipedia.org/wiki/Kevin_Bacon\n", - "https://da.wikipedia.org/wiki/Kevin_Bacon\n", - "https://de.wikipedia.org/wiki/Kevin_Bacon\n", - "https://el.wikipedia.org/wiki/%CE%9A%CE%AD%CE%B2%CE%B9%CE%BD_%CE%9C%CF%80%CE%AD%CE%B9%CE%BA%CE%BF%CE%BD\n", - "https://eml.wikipedia.org/wiki/Kevin_Bacon\n", - "https://es.wikipedia.org/wiki/Kevin_Bacon\n", - "https://eu.wikipedia.org/wiki/Kevin_Bacon\n", - "https://fa.wikipedia.org/wiki/%DA%A9%D9%88%DB%8C%D9%86_%D8%A8%DB%8C%DA%A9%D9%86\n", - "https://fr.wikipedia.org/wiki/Kevin_Bacon\n", - "https://gl.wikipedia.org/wiki/Kevin_Bacon\n", - "https://ko.wikipedia.org/wiki/%EC%BC%80%EB%B9%88_%EB%B2%A0%EC%9D%B4%EC%BB%A8\n", - "https://hy.wikipedia.org/wiki/%D5%94%D6%87%D5%AB%D5%B6_%D4%B2%D5%A5%D5%B5%D6%84%D5%B8%D5%B6\n", - "https://hr.wikipedia.org/wiki/Kevin_Bacon\n", - "https://io.wikipedia.org/wiki/Kevin_Bacon\n", - "https://id.wikipedia.org/wiki/Kevin_Bacon\n", - "https://it.wikipedia.org/wiki/Kevin_Bacon\n", - "https://he.wikipedia.org/wiki/%D7%A7%D7%95%D7%95%D7%99%D7%9F_%D7%91%D7%99%D7%99%D7%A7%D7%95%D7%9F\n", - "https://ka.wikipedia.org/wiki/%E1%83%99%E1%83%94%E1%83%95%E1%83%98%E1%83%9C_%E1%83%91%E1%83%94%E1%83%98%E1%83%99%E1%83%9D%E1%83%9C%E1%83%98\n", - "https://kk.wikipedia.org/wiki/%D0%9A%D0%B5%D0%B2%D0%B8%D0%BD_%D0%91%D1%8D%D0%B9%D0%BA%D0%BE%D0%BD\n", - "https://lv.wikipedia.org/wiki/Kevins_B%C4%93kons\n", - "https://hu.wikipedia.org/wiki/Kevin_Bacon\n", - "https://xmf.wikipedia.org/wiki/%E1%83%99%E1%83%94%E1%83%95%E1%83%98%E1%83%9C_%E1%83%91%E1%83%94%E1%83%98%E1%83%99%E1%83%9D%E1%83%9C%E1%83%98\n", - "https://mn.wikipedia.org/wiki/%D0%9A%D0%B5%D0%B2%D0%B8%D0%BD_%D0%91%D1%8D%D0%B9%D0%BA%D0%BE%D0%BD\n", - "https://nl.wikipedia.org/wiki/Kevin_Bacon\n", - "https://ja.wikipedia.org/wiki/%E3%82%B1%E3%83%B4%E3%82%A3%E3%83%B3%E3%83%BB%E3%83%99%E3%83%BC%E3%82%B3%E3%83%B3\n", - "https://no.wikipedia.org/wiki/Kevin_Bacon\n", - "https://oc.wikipedia.org/wiki/Kevin_Bacon\n", - "https://pl.wikipedia.org/wiki/Kevin_Bacon\n", - "https://pt.wikipedia.org/wiki/Kevin_Bacon\n", - "https://ro.wikipedia.org/wiki/Kevin_Bacon\n", - "https://ru.wikipedia.org/wiki/%D0%91%D0%B5%D0%B9%D0%BA%D0%BE%D0%BD,_%D0%9A%D0%B5%D0%B2%D0%B8%D0%BD\n", - "https://sco.wikipedia.org/wiki/Kevin_Bacon\n", - "https://simple.wikipedia.org/wiki/Kevin_Bacon\n", - "https://sk.wikipedia.org/wiki/Kevin_Bacon\n", - "https://ckb.wikipedia.org/wiki/%DA%A9%DB%8E%DA%A4%D9%86_%D8%A8%DB%95%DB%8C%DA%A9%D9%86\n", - "https://sr.wikipedia.org/wiki/%D0%9A%D0%B5%D0%B2%D0%B8%D0%BD_%D0%91%D0%B5%D1%98%D0%BA%D0%BE%D0%BD\n", - "https://sh.wikipedia.org/wiki/Kevin_Bacon\n", - "https://fi.wikipedia.org/wiki/Kevin_Bacon\n", - "https://sv.wikipedia.org/wiki/Kevin_Bacon\n", - "https://th.wikipedia.org/wiki/%E0%B9%80%E0%B8%84%E0%B8%A7%E0%B8%B4%E0%B8%99_%E0%B9%80%E0%B8%9A%E0%B8%84%E0%B8%AD%E0%B8%99\n", - "https://tr.wikipedia.org/wiki/Kevin_Bacon\n", - "https://uk.wikipedia.org/wiki/%D0%9A%D0%B5%D0%B2%D1%96%D0%BD_%D0%91%D0%B5%D0%B9%D0%BA%D0%BE%D0%BD\n", - "https://vi.wikipedia.org/wiki/Kevin_Bacon\n", - "https://zh.wikipedia.org/wiki/%E5%87%AF%E6%96%87%C2%B7%E8%B4%9D%E8%82%AF\n", - "https://www.wikidata.org/wiki/Special:EntityPage/Q3454165#sitelinks-wikipedia\n", - "//en.wikipedia.org/wiki/Wikipedia:Text_of_Creative_Commons_Attribution-ShareAlike_3.0_Unported_License\n", - "//creativecommons.org/licenses/by-sa/3.0/\n", - "//wikimediafoundation.org/wiki/Terms_of_Use\n", - "//wikimediafoundation.org/wiki/Privacy_policy\n", - "//www.wikimediafoundation.org/\n", - "https://wikimediafoundation.org/wiki/Privacy_policy\n", - "/wiki/Wikipedia:About\n", - "/wiki/Wikipedia:General_disclaimer\n", - "//en.wikipedia.org/wiki/Wikipedia:Contact_us\n", - "https://www.mediawiki.org/wiki/Special:MyLanguage/How_to_contribute\n", - "https://wikimediafoundation.org/wiki/Cookie_statement\n", - "//en.m.wikipedia.org/w/index.php?title=Kevin_Bacon&mobileaction=toggle_view_mobile\n", - "https://wikimediafoundation.org/\n", - "//www.mediawiki.org/\n" - ] - } - ], - "source": [ - "from urllib.request import urlopen\n", - "from bs4 import BeautifulSoup \n", - "\n", - "html = urlopen('http://en.wikipedia.org/wiki/Kevin_Bacon')\n", - "bs = BeautifulSoup(html, 'html.parser')\n", - "for link in bs.find_all('a'):\n", - " if 'href' in link.attrs:\n", - " print(link.attrs['href'])" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Retrieving Articles Only" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "/wiki/Kevin_Bacon_(disambiguation)\n", - "/wiki/San_Diego_Comic-Con\n", - "/wiki/Philadelphia\n", - "/wiki/Pennsylvania\n", - "/wiki/Kyra_Sedgwick\n", - "/wiki/Sosie_Bacon\n", - "/wiki/Edmund_Bacon_(architect)\n", - "/wiki/Michael_Bacon_(musician)\n", - "/wiki/Footloose_(1984_film)\n", - "/wiki/JFK_(film)\n", - "/wiki/A_Few_Good_Men\n", - "/wiki/Apollo_13_(film)\n", - "/wiki/Mystic_River_(film)\n", - "/wiki/Sleepers\n", - "/wiki/The_Woodsman_(2004_film)\n", - "/wiki/Fox_Broadcasting_Company\n", - "/wiki/The_Following\n", - "/wiki/HBO\n", - "/wiki/Taking_Chance\n", - "/wiki/Golden_Globe_Award\n", - "/wiki/Screen_Actors_Guild_Award\n", - "/wiki/Primetime_Emmy_Award\n", - "/wiki/The_Guardian\n", - "/wiki/Academy_Award\n", - "/wiki/Hollywood_Walk_of_Fame\n", - "/wiki/Social_networks\n", - "/wiki/Six_Degrees_of_Kevin_Bacon\n", - "/wiki/SixDegrees.org\n", - "/wiki/Philadelphia\n", - "/wiki/Edmund_Bacon_(architect)\n", - "/wiki/Pennsylvania_Governor%27s_School_for_the_Arts\n", - "/wiki/Bucknell_University\n", - "/wiki/Glory_Van_Scott\n", - "/wiki/Circle_in_the_Square\n", - "/wiki/Nancy_Mills\n", - "/wiki/Cosmopolitan_(magazine)\n", - "/wiki/Fraternities_and_sororities\n", - "/wiki/Animal_House\n", - "/wiki/Search_for_Tomorrow\n", - "/wiki/Guiding_Light\n", - "/wiki/Friday_the_13th_(1980_film)\n", - "/wiki/Phoenix_Theater\n", - "/wiki/Flux\n", - "/wiki/Second_Stage_Theatre\n", - "/wiki/Obie_Award\n", - "/wiki/Forty_Deuce\n", - "/wiki/Slab_Boys\n", - "/wiki/Sean_Penn\n", - "/wiki/Val_Kilmer\n", - "/wiki/Barry_Levinson\n", - "/wiki/Diner_(film)\n", - "/wiki/Steve_Guttenberg\n", - "/wiki/Daniel_Stern_(actor)\n", - "/wiki/Mickey_Rourke\n", - "/wiki/Tim_Daly\n", - "/wiki/Ellen_Barkin\n", - "/wiki/Footloose_(1984_film)\n", - "/wiki/James_Dean\n", - "/wiki/Rebel_Without_a_Cause\n", - "/wiki/Mickey_Rooney\n", - "/wiki/Judy_Garland\n", - "/wiki/People_(American_magazine)\n", - "/wiki/Typecasting_(acting)\n", - "/wiki/John_Hughes_(filmmaker)\n", - "/wiki/She%27s_Having_a_Baby\n", - "/wiki/The_Big_Picture_(1989_film)\n", - "/wiki/Tremors_(film)\n", - "/wiki/Joel_Schumacher\n", - "/wiki/Flatliners\n", - "/wiki/Elizabeth_Perkins\n", - "/wiki/He_Said,_She_Said\n", - "/wiki/The_New_York_Times\n", - "/wiki/Oliver_Stone\n", - "/wiki/JFK_(film)\n", - "/wiki/A_Few_Good_Men_(film)\n", - "/wiki/Michael_Greif\n", - "/wiki/Golden_Globe_Award\n", - "/wiki/The_River_Wild\n", - "/wiki/Meryl_Streep\n", - "/wiki/Murder_in_the_First_(film)\n", - "/wiki/Blockbuster_(entertainment)\n", - "/wiki/Apollo_13_(film)\n", - "/wiki/Sleepers_(film)\n", - "/wiki/Picture_Perfect_(1997_film)\n", - "/wiki/Losing_Chase\n", - "/wiki/Digging_to_China\n", - "/wiki/Payola\n", - "/wiki/Telling_Lies_in_America_(film)\n", - "/wiki/Wild_Things_(film)\n", - "/wiki/Stir_of_Echoes\n", - "/wiki/David_Koepp\n", - "/wiki/Taking_Chance\n", - "/wiki/Paul_Verhoeven\n", - "/wiki/Hollow_Man\n", - "/wiki/Colin_Firth\n", - "/wiki/Rachel_Blanchard\n", - "/wiki/M%C3%A9nage_%C3%A0_trois\n", - "/wiki/Where_the_Truth_Lies\n", - "/wiki/Atom_Egoyan\n", - "/wiki/MPAA\n", - "/wiki/MPAA_film_rating_system\n", - "/wiki/Pedophile\n", - "/wiki/The_Woodsman_(2004_film)\n", - "/wiki/HBO_Films\n", - "/wiki/Taking_Chance\n", - "/wiki/Michael_Strobl\n", - "/wiki/Desert_Storm\n", - "/wiki/Screen_Actors_Guild_Award_for_Outstanding_Performance_by_a_Male_Actor_in_a_Miniseries_or_Television_Movie\n", - "/wiki/Matthew_Vaughn\n", - "/wiki/Sebastian_Shaw_(comics)\n", - "/wiki/Dustin_Lance_Black\n", - "/wiki/8_(play)\n", - "/wiki/Perry_v._Brown\n", - "/wiki/Proposition_8\n", - "/wiki/Charles_J._Cooper\n", - "/wiki/Wilshire_Ebell_Theatre\n", - "/wiki/American_Foundation_for_Equal_Rights\n", - "/wiki/The_Following\n", - "/wiki/Saturn_Award_for_Best_Actor_on_Television\n", - "/wiki/Huffington_Post\n", - "/wiki/Tremors_(film)\n", - "/wiki/EE_(telecommunications_company)\n", - "/wiki/United_Kingdom\n", - "/wiki/Egg_as_food\n", - "/wiki/Kyra_Sedgwick\n", - "/wiki/PBS\n", - "/wiki/Lanford_Wilson\n", - "/wiki/Lemon_Sky\n", - "/wiki/Pyrates\n", - "/wiki/Murder_in_the_First_(film)\n", - "/wiki/The_Woodsman_(2004_film)\n", - "/wiki/Loverboy_(2005_film)\n", - "/wiki/Sosie_Bacon\n", - "/wiki/Upper_West_Side\n", - "/wiki/Manhattan\n", - "/wiki/Tracy_Pollan\n", - "/wiki/The_Times\n", - "/wiki/Will.i.am\n", - "/wiki/It%27s_a_New_Day_(Will.i.am_song)\n", - "/wiki/Barack_Obama\n", - "/wiki/Ponzi_scheme\n", - "/wiki/Bernard_Madoff\n", - "/wiki/Finding_Your_Roots\n", - "/wiki/Henry_Louis_Gates\n", - "/wiki/Six_Degrees_of_Kevin_Bacon\n", - "/wiki/Trivia\n", - "/wiki/Big_screen\n", - "/wiki/Six_degrees_of_separation\n", - "/wiki/Internet_meme\n", - "/wiki/SixDegrees.org\n", - "/wiki/Bacon_number\n", - "/wiki/Internet_Movie_Database\n", - "/wiki/Paul_Erd%C5%91s\n", - "/wiki/Erd%C5%91s_number\n", - "/wiki/Paul_Erd%C5%91s\n", - "/wiki/Bacon_number\n", - "/wiki/Erd%C5%91s_number\n", - "/wiki/Erd%C5%91s%E2%80%93Bacon_number\n", - "/wiki/The_Bacon_Brothers\n", - "/wiki/Michael_Bacon_(musician)\n", - "/wiki/Music_album\n", - "/wiki/Golden_Globe_Awards\n", - "/wiki/Golden_Globe_Award_for_Best_Supporting_Actor_%E2%80%93_Motion_Picture\n", - "/wiki/The_River_Wild\n", - "/wiki/Broadcast_Film_Critics_Association_Awards\n", - "/wiki/Broadcast_Film_Critics_Association_Award_for_Best_Actor\n", - "/wiki/Murder_in_the_First_(film)\n", - "/wiki/Screen_Actors_Guild_Awards\n", - "/wiki/Screen_Actors_Guild_Award_for_Outstanding_Performance_by_a_Cast_in_a_Motion_Picture\n", - "/wiki/Apollo_13_(film)\n", - "/wiki/Screen_Actors_Guild_Awards\n", - "/wiki/Screen_Actors_Guild_Award_for_Outstanding_Performance_by_a_Male_Actor_in_a_Supporting_Role\n", - "/wiki/Murder_in_the_First_(film)\n", - "/wiki/MTV_Movie_Awards\n", - "/wiki/MTV_Movie_Award_for_Best_Villain\n", - "/wiki/Hollow_Man\n", - "/wiki/Boston_Society_of_Film_Critics_Awards\n", - "/wiki/Boston_Society_of_Film_Critics_Award_for_Best_Cast\n", - "/wiki/Mystic_River_(film)\n", - "/wiki/Screen_Actors_Guild_Awards\n", - "/wiki/Screen_Actors_Guild_Award_for_Outstanding_Performance_by_a_Cast_in_a_Motion_Picture\n", - "/wiki/Mystic_River_(film)\n", - "/wiki/Satellite_Awards\n", - "/wiki/Satellite_Award_for_Best_Actor_%E2%80%93_Motion_Picture_Drama\n", - "/wiki/The_Woodsman_(2004_film)\n", - "/wiki/Teen_Choice_Awards\n", - "/wiki/Teen_Choice_Awards\n", - "/wiki/Beauty_Shop\n", - "/wiki/Primetime_Emmy_Awards\n", - "/wiki/Primetime_Emmy_Award_for_Outstanding_Lead_Actor_in_a_Miniseries_or_a_Movie\n", - "/wiki/Taking_Chance\n", - "/wiki/Satellite_Awards\n", - "/wiki/Satellite_Award_for_Best_Actor_%E2%80%93_Miniseries_or_Television_Film\n", - "/wiki/Taking_Chance\n", - "/wiki/Screen_Actors_Guild_Awards\n", - "/wiki/Screen_Actors_Guild_Award_for_Outstanding_Performance_by_a_Cast_in_a_Motion_Picture\n", - "/wiki/Frost/Nixon_(film)\n", - "/wiki/Golden_Globe_Awards\n", - "/wiki/Golden_Globe_Award_for_Best_Actor_%E2%80%93_Miniseries_or_Television_Film\n", - "/wiki/Taking_Chance\n", - "/wiki/Screen_Actors_Guild_Awards\n", - "/wiki/Screen_Actors_Guild_Award_for_Outstanding_Performance_by_a_Male_Actor_in_a_Miniseries_or_Television_Movie\n", - "/wiki/Taking_Chance\n", - "/wiki/Teen_Choice_Awards\n", - "/wiki/Teen_Choice_Awards\n", - "/wiki/Saturn_Awards\n", - "/wiki/Saturn_Award_for_Best_Actor_on_Television\n", - "/wiki/The_Following\n", - "/wiki/People%27s_Choice_Awards\n", - "/wiki/People%27s_Choice_Awards\n", - "/wiki/The_Following\n", - "/wiki/Saturn_Awards\n", - "/wiki/Saturn_Award_for_Best_Actor_on_Television\n", - "/wiki/The_Following\n", - "/wiki/Golden_Globe_Awards\n", - "/wiki/Golden_Globe_Award_for_Best_Actor_%E2%80%93_Television_Series_Musical_or_Comedy\n", - "/wiki/I_Love_Dick_(TV_series)\n", - "/wiki/Kevin_Bacon_filmography\n", - "/wiki/List_of_actors_with_Hollywood_Walk_of_Fame_motion_picture_stars\n", - "/wiki/The_Austin_Chronicle\n", - "/wiki/Access_Hollywood\n", - "/wiki/Reuters\n", - "/wiki/CBS_News\n", - "/wiki/The_Verge\n", - "/wiki/The_Hollywood_Reporter\n", - "/wiki/Indie_Wire\n", - "/wiki/IMDb\n", - "/wiki/Internet_Broadway_Database\n", - "/wiki/Lortel_Archives\n", - "/wiki/AllMovie\n", - "/wiki/Critics%27_Choice_Movie_Award_for_Best_Actor\n", - "/wiki/Geoffrey_Rush\n", - "/wiki/Jack_Nicholson\n", - "/wiki/Ian_McKellen\n", - "/wiki/Russell_Crowe\n", - "/wiki/Russell_Crowe\n", - "/wiki/Russell_Crowe\n", - "/wiki/Daniel_Day-Lewis\n", - "/wiki/Jack_Nicholson\n", - "/wiki/Sean_Penn\n", - "/wiki/Jamie_Foxx\n", - "/wiki/Philip_Seymour_Hoffman\n", - "/wiki/Forest_Whitaker\n", - "/wiki/Daniel_Day-Lewis\n", - "/wiki/Sean_Penn\n", - "/wiki/Jeff_Bridges\n", - "/wiki/Colin_Firth\n", - "/wiki/George_Clooney\n", - "/wiki/Daniel_Day-Lewis\n", - "/wiki/Matthew_McConaughey\n", - "/wiki/Michael_Keaton\n", - "/wiki/Leonardo_DiCaprio\n", - "/wiki/Casey_Affleck\n", - "/wiki/Gary_Oldman\n", - "/wiki/Golden_Globe_Award_for_Best_Actor_%E2%80%93_Miniseries_or_Television_Film\n", - "/wiki/Mickey_Rooney\n", - "/wiki/Anthony_Andrews\n", - "/wiki/Richard_Chamberlain\n", - "/wiki/Ted_Danson\n", - "/wiki/Dustin_Hoffman\n", - "/wiki/James_Woods\n", - "/wiki/Randy_Quaid\n", - "/wiki/Michael_Caine\n", - "/wiki/Stacy_Keach\n", - "/wiki/Robert_Duvall\n", - "/wiki/James_Garner\n", - "/wiki/Beau_Bridges\n", - "/wiki/Robert_Duvall\n", - "/wiki/James_Garner\n", - "/wiki/Ra%C3%BAl_Juli%C3%A1\n", - "/wiki/Gary_Sinise\n", - "/wiki/Alan_Rickman\n", - "/wiki/Ving_Rhames\n", - "/wiki/Stanley_Tucci\n", - "/wiki/Jack_Lemmon\n", - "/wiki/Brian_Dennehy\n", - "/wiki/James_Franco\n", - "/wiki/Albert_Finney\n", - "/wiki/Al_Pacino\n", - "/wiki/Geoffrey_Rush\n", - "/wiki/Jonathan_Rhys_Meyers\n", - "/wiki/Bill_Nighy\n", - "/wiki/Jim_Broadbent\n", - "/wiki/Paul_Giamatti\n", - "/wiki/Al_Pacino\n", - "/wiki/Idris_Elba\n", - "/wiki/Kevin_Costner\n", - "/wiki/Michael_Douglas\n", - "/wiki/Billy_Bob_Thornton\n", - "/wiki/Oscar_Isaac\n", - "/wiki/Tom_Hiddleston\n", - "/wiki/Ewan_McGregor\n", - "/wiki/Saturn_Award_for_Best_Actor_on_Television\n", - "/wiki/Kyle_Chandler\n", - "/wiki/Steven_Weber_(actor)\n", - "/wiki/Richard_Dean_Anderson\n", - "/wiki/David_Boreanaz\n", - "/wiki/Robert_Patrick\n", - "/wiki/Ben_Browder\n", - "/wiki/David_Boreanaz\n", - "/wiki/David_Boreanaz\n", - "/wiki/Ben_Browder\n", - "/wiki/Matthew_Fox\n", - "/wiki/Michael_C._Hall\n", - "/wiki/Matthew_Fox\n", - "/wiki/Edward_James_Olmos\n", - "/wiki/Josh_Holloway\n", - "/wiki/Stephen_Moyer\n", - "/wiki/Bryan_Cranston\n", - "/wiki/Bryan_Cranston\n", - "/wiki/Mads_Mikkelsen\n", - "/wiki/Hugh_Dancy\n", - "/wiki/Andrew_Lincoln\n", - "/wiki/Bruce_Campbell\n", - "/wiki/Andrew_Lincoln\n", - "/wiki/Screen_Actors_Guild_Award_for_Outstanding_Performance_by_a_Male_Actor_in_a_Miniseries_or_Television_Movie\n", - "/wiki/Ra%C3%BAl_Juli%C3%A1\n", - "/wiki/Gary_Sinise\n", - "/wiki/Alan_Rickman\n", - "/wiki/Gary_Sinise\n", - "/wiki/Christopher_Reeve\n", - "/wiki/Jack_Lemmon\n", - "/wiki/Brian_Dennehy\n", - "/wiki/Ben_Kingsley\n", - "/wiki/William_H._Macy\n", - "/wiki/Al_Pacino\n", - "/wiki/Geoffrey_Rush\n", - "/wiki/Paul_Newman\n", - "/wiki/Jeremy_Irons\n", - "/wiki/Kevin_Kline\n", - "/wiki/Paul_Giamatti\n", - "/wiki/Al_Pacino\n", - "/wiki/Paul_Giamatti\n", - "/wiki/Kevin_Costner\n", - "/wiki/Michael_Douglas\n", - "/wiki/Mark_Ruffalo\n", - "/wiki/Idris_Elba\n", - "/wiki/Bryan_Cranston\n", - "/wiki/Alexander_Skarsg%C3%A5rd\n", - "/wiki/Screen_Actors_Guild_Award_for_Outstanding_Performance_by_a_Cast_in_a_Motion_Picture\n", - "/wiki/Apollo_13_(film)\n", - "/wiki/Tom_Hanks\n", - "/wiki/Ed_Harris\n", - "/wiki/Bill_Paxton\n", - "/wiki/Kathleen_Quinlan\n", - "/wiki/Gary_Sinise\n", - "/wiki/The_Birdcage\n", - "/wiki/Hank_Azaria\n", - "/wiki/Christine_Baranski\n", - "/wiki/Dan_Futterman\n", - "/wiki/Gene_Hackman\n", - "/wiki/Nathan_Lane\n", - "/wiki/Dianne_Wiest\n", - "/wiki/Robin_Williams\n", - "/wiki/The_Full_Monty\n", - "/wiki/Mark_Addy\n", - "/wiki/Paul_Barber_(actor)\n", - "/wiki/Robert_Carlyle\n", - "/wiki/Steve_Huison\n", - "/wiki/Bruce_Jones_(actor)\n", - "/wiki/Lesley_Sharp\n", - "/wiki/William_Snape\n", - "/wiki/Hugo_Speer\n", - "/wiki/Tom_Wilkinson\n", - "/wiki/Emily_Woof\n", - "/wiki/Shakespeare_in_Love\n", - "/wiki/Ben_Affleck\n", - "/wiki/Simon_Callow\n", - "/wiki/Jim_Carter_(actor)\n", - "/wiki/Martin_Clunes\n", - "/wiki/Judi_Dench\n", - "/wiki/Joseph_Fiennes\n", - "/wiki/Colin_Firth\n", - "/wiki/Gwyneth_Paltrow\n", - "/wiki/Geoffrey_Rush\n", - "/wiki/Antony_Sher\n", - "/wiki/Imelda_Staunton\n", - "/wiki/American_Beauty_(1999_film)\n", - "/wiki/Annette_Bening\n", - "/wiki/Wes_Bentley\n", - "/wiki/Thora_Birch\n", - "/wiki/Chris_Cooper\n", - "/wiki/Peter_Gallagher\n", - "/wiki/Allison_Janney\n", - "/wiki/Kevin_Spacey\n", - "/wiki/Mena_Suvari\n", - "/wiki/Traffic_(2000_film)\n", - "/wiki/Steven_Bauer\n", - "/wiki/Benjamin_Bratt\n", - "/wiki/James_Brolin\n", - "/wiki/Don_Cheadle\n", - "/wiki/Erika_Christensen\n", - "/wiki/Clifton_Collins_Jr.\n", - "/wiki/Benicio_del_Toro\n", - "/wiki/Michael_Douglas\n", - "/wiki/Miguel_Ferrer\n", - "/wiki/Albert_Finney\n", - "/wiki/Topher_Grace\n", - "/wiki/Luis_Guzm%C3%A1n\n", - "/wiki/Amy_Irving\n", - "/wiki/Tomas_Milian\n", - "/wiki/D._W._Moffett\n", - "/wiki/Dennis_Quaid\n", - "/wiki/Peter_Riegert\n", - "/wiki/Jacob_Vargas\n", - "/wiki/Catherine_Zeta-Jones\n", - "/wiki/Screen_Actors_Guild_Award_for_Outstanding_Performance_by_a_Cast_in_a_Motion_Picture\n", - "/wiki/Virtual_International_Authority_File\n", - "/wiki/Library_of_Congress_Control_Number\n", - "/wiki/International_Standard_Name_Identifier\n", - "/wiki/Integrated_Authority_File\n", - "/wiki/Syst%C3%A8me_universitaire_de_documentation\n", - "/wiki/Biblioth%C3%A8que_nationale_de_France\n", - "/wiki/MusicBrainz\n", - "/wiki/SNAC\n" - ] - } - ], - "source": [ - "from urllib.request import urlopen \n", - "from bs4 import BeautifulSoup \n", - "import re\n", - "\n", - "html = urlopen('http://en.wikipedia.org/wiki/Kevin_Bacon')\n", - "bs = BeautifulSoup(html, 'html.parser')\n", - "for link in bs.find('div', {'id':'bodyContent'}).find_all(\n", - " 'a', href=re.compile('^(/wiki/)((?!:).)*$')):\n", - " if 'href' in link.attrs:\n", - " print(link.attrs['href'])" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Random Walk" - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "/wiki/MusicBrainz\n", - "/wiki/ICANN\n", - "/wiki/U.S._House_of_Representatives\n", - "/wiki/United_States_Copyright_Office\n", - "/wiki/U.S._representative_bibliography_(congressional_memoirs)\n", - "/wiki/United_States_Senate\n", - "/wiki/Richard_A._Baker_(historian)\n", - "/wiki/Robert_Byrd\n", - "/wiki/Washington_College_of_Law\n" - ] - }, - { - "ename": "KeyboardInterrupt", - "evalue": "", - "output_type": "error", - "traceback": [ - "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", - "\u001b[0;31mKeyboardInterrupt\u001b[0m Traceback (most recent call last)", - "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[1;32m 15\u001b[0m \u001b[0mnewArticle\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mlinks\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mrandom\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mrandint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;36m0\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mlen\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mlinks\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m-\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mattrs\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m'href'\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 16\u001b[0m \u001b[0mprint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mnewArticle\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 17\u001b[0;31m \u001b[0mlinks\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mgetLinks\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mnewArticle\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m", - "\u001b[0;32m\u001b[0m in \u001b[0;36mgetLinks\u001b[0;34m(articleUrl)\u001b[0m\n\u001b[1;32m 8\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0mgetLinks\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0marticleUrl\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 9\u001b[0m \u001b[0mhtml\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0murlopen\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'http://en.wikipedia.org{}'\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mformat\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0marticleUrl\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 10\u001b[0;31m \u001b[0mbs\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mBeautifulSoup\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mhtml\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m'html.parser'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 11\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mbs\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mfind\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'div'\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m{\u001b[0m\u001b[0;34m'id'\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m'bodyContent'\u001b[0m\u001b[0;34m}\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mfind_all\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'a'\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mhref\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mre\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mcompile\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'^(/wiki/)((?!:).)*$'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 12\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/bs4/__init__.py\u001b[0m in \u001b[0;36m__init__\u001b[0;34m(self, markup, features, builder, parse_only, from_encoding, exclude_encodings, **kwargs)\u001b[0m\n\u001b[1;32m 213\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mreset\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 214\u001b[0m \u001b[0;32mtry\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 215\u001b[0;31m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_feed\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 216\u001b[0m \u001b[0;32mbreak\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 217\u001b[0m \u001b[0;32mexcept\u001b[0m \u001b[0mParserRejectedMarkup\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/bs4/__init__.py\u001b[0m in \u001b[0;36m_feed\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 237\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mbuilder\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mreset\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 238\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 239\u001b[0;31m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mbuilder\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mfeed\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mmarkup\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 240\u001b[0m \u001b[0;31m# Close out any unfinished strings and close all the open tags.\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 241\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mendData\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/bs4/builder/_htmlparser.py\u001b[0m in \u001b[0;36mfeed\u001b[0;34m(self, markup)\u001b[0m\n\u001b[1;32m 162\u001b[0m \u001b[0mparser\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msoup\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msoup\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 163\u001b[0m \u001b[0;32mtry\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 164\u001b[0;31m \u001b[0mparser\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mfeed\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mmarkup\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 165\u001b[0m \u001b[0;32mexcept\u001b[0m \u001b[0mHTMLParseError\u001b[0m \u001b[0;32mas\u001b[0m \u001b[0me\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 166\u001b[0m warnings.warn(RuntimeWarning(\n", - "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/html/parser.py\u001b[0m in \u001b[0;36mfeed\u001b[0;34m(self, data)\u001b[0m\n\u001b[1;32m 109\u001b[0m \"\"\"\n\u001b[1;32m 110\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mrawdata\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mrawdata\u001b[0m \u001b[0;34m+\u001b[0m \u001b[0mdata\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 111\u001b[0;31m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mgoahead\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;36m0\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 112\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 113\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0mclose\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/html/parser.py\u001b[0m in \u001b[0;36mgoahead\u001b[0;34m(self, end)\u001b[0m\n\u001b[1;32m 164\u001b[0m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 165\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mhandle_data\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mrawdata\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mi\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0mj\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 166\u001b[0;31m \u001b[0mi\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mupdatepos\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mi\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mj\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 167\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mi\u001b[0m \u001b[0;34m==\u001b[0m \u001b[0mn\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0;32mbreak\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 168\u001b[0m \u001b[0mstartswith\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mrawdata\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mstartswith\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/_markupbase.py\u001b[0m in \u001b[0;36mupdatepos\u001b[0;34m(self, i, j)\u001b[0m\n\u001b[1;32m 51\u001b[0m \u001b[0mrawdata\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mrawdata\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 52\u001b[0m \u001b[0mnlines\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mrawdata\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mcount\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"\\n\"\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mi\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mj\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 53\u001b[0;31m \u001b[0;32mif\u001b[0m \u001b[0mnlines\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 54\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mlineno\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mlineno\u001b[0m \u001b[0;34m+\u001b[0m \u001b[0mnlines\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 55\u001b[0m \u001b[0mpos\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mrawdata\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mrindex\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"\\n\"\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mi\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mj\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;31m# Should not fail\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;31mKeyboardInterrupt\u001b[0m: " - ] - } - ], - "source": [ - "from urllib.request import urlopen\n", - "from bs4 import BeautifulSoup\n", - "import datetime\n", - "import random\n", - "import re\n", - "\n", - "random.seed(datetime.datetime.now())\n", - "def getLinks(articleUrl):\n", - " html = urlopen('http://en.wikipedia.org{}'.format(articleUrl))\n", - " bs = BeautifulSoup(html, 'html.parser')\n", - " return bs.find('div', {'id':'bodyContent'}).find_all('a', href=re.compile('^(/wiki/)((?!:).)*$'))\n", - "\n", - "links = getLinks('/wiki/Kevin_Bacon')\n", - "while len(links) > 0:\n", - " newArticle = links[random.randint(0, len(links)-1)].attrs['href']\n", - " print(newArticle)\n", - " links = getLinks(newArticle)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Recursively crawling an entire site" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "/wiki/Wikipedia\n", - "/wiki/Wikipedia:Protection_policy#semi\n", - "/wiki/Wikipedia:Requests_for_page_protection\n", - "/wiki/Wikipedia:Requests_for_permissions\n" - ] - }, - { - "ename": "KeyboardInterrupt", - "evalue": "", - "output_type": "error", - "traceback": [ - "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", - "\u001b[0;31mKeyboardInterrupt\u001b[0m Traceback (most recent call last)", - "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[1;32m 16\u001b[0m \u001b[0mpages\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0madd\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mnewPage\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 17\u001b[0m \u001b[0mgetLinks\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mnewPage\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 18\u001b[0;31m \u001b[0mgetLinks\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m''\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m", - "\u001b[0;32m\u001b[0m in \u001b[0;36mgetLinks\u001b[0;34m(pageUrl)\u001b[0m\n\u001b[1;32m 15\u001b[0m \u001b[0mprint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mnewPage\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 16\u001b[0m \u001b[0mpages\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0madd\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mnewPage\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 17\u001b[0;31m \u001b[0mgetLinks\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mnewPage\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 18\u001b[0m \u001b[0mgetLinks\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m''\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m\u001b[0m in \u001b[0;36mgetLinks\u001b[0;34m(pageUrl)\u001b[0m\n\u001b[1;32m 15\u001b[0m \u001b[0mprint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mnewPage\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 16\u001b[0m \u001b[0mpages\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0madd\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mnewPage\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 17\u001b[0;31m \u001b[0mgetLinks\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mnewPage\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 18\u001b[0m \u001b[0mgetLinks\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m''\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m\u001b[0m in \u001b[0;36mgetLinks\u001b[0;34m(pageUrl)\u001b[0m\n\u001b[1;32m 15\u001b[0m \u001b[0mprint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mnewPage\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 16\u001b[0m \u001b[0mpages\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0madd\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mnewPage\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 17\u001b[0;31m \u001b[0mgetLinks\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mnewPage\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 18\u001b[0m \u001b[0mgetLinks\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m''\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m\u001b[0m in \u001b[0;36mgetLinks\u001b[0;34m(pageUrl)\u001b[0m\n\u001b[1;32m 15\u001b[0m \u001b[0mprint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mnewPage\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 16\u001b[0m \u001b[0mpages\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0madd\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mnewPage\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 17\u001b[0;31m \u001b[0mgetLinks\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mnewPage\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 18\u001b[0m \u001b[0mgetLinks\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m''\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m\u001b[0m in \u001b[0;36mgetLinks\u001b[0;34m(pageUrl)\u001b[0m\n\u001b[1;32m 6\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0mgetLinks\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mpageUrl\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 7\u001b[0m \u001b[0;32mglobal\u001b[0m \u001b[0mpages\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 8\u001b[0;31m \u001b[0mhtml\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0murlopen\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'http://en.wikipedia.org{}'\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mformat\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mpageUrl\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 9\u001b[0m \u001b[0mbs\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mBeautifulSoup\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mhtml\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m'html.parser'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 10\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0mlink\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mbs\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mfind_all\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'a'\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mhref\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mre\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mcompile\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'^(/wiki/)'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/urllib/request.py\u001b[0m in \u001b[0;36murlopen\u001b[0;34m(url, data, timeout, cafile, capath, cadefault, context)\u001b[0m\n\u001b[1;32m 221\u001b[0m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 222\u001b[0m \u001b[0mopener\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0m_opener\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 223\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mopener\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mopen\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0murl\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mdata\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mtimeout\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 224\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 225\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0minstall_opener\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mopener\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/urllib/request.py\u001b[0m in \u001b[0;36mopen\u001b[0;34m(self, fullurl, data, timeout)\u001b[0m\n\u001b[1;32m 530\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0mprocessor\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mprocess_response\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mget\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mprotocol\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m[\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 531\u001b[0m \u001b[0mmeth\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mgetattr\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mprocessor\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mmeth_name\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 532\u001b[0;31m \u001b[0mresponse\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mmeth\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mreq\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mresponse\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 533\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 534\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mresponse\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/urllib/request.py\u001b[0m in \u001b[0;36mhttp_response\u001b[0;34m(self, request, response)\u001b[0m\n\u001b[1;32m 640\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0;34m(\u001b[0m\u001b[0;36m200\u001b[0m \u001b[0;34m<=\u001b[0m \u001b[0mcode\u001b[0m \u001b[0;34m<\u001b[0m \u001b[0;36m300\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 641\u001b[0m response = self.parent.error(\n\u001b[0;32m--> 642\u001b[0;31m 'http', request, response, code, msg, hdrs)\n\u001b[0m\u001b[1;32m 643\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 644\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mresponse\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/urllib/request.py\u001b[0m in \u001b[0;36merror\u001b[0;34m(self, proto, *args)\u001b[0m\n\u001b[1;32m 562\u001b[0m \u001b[0mhttp_err\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;36m0\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 563\u001b[0m \u001b[0margs\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m(\u001b[0m\u001b[0mdict\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mproto\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mmeth_name\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;34m+\u001b[0m \u001b[0margs\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 564\u001b[0;31m \u001b[0mresult\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_call_chain\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 565\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mresult\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 566\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mresult\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/urllib/request.py\u001b[0m in \u001b[0;36m_call_chain\u001b[0;34m(self, chain, kind, meth_name, *args)\u001b[0m\n\u001b[1;32m 502\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0mhandler\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mhandlers\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 503\u001b[0m \u001b[0mfunc\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mgetattr\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mhandler\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mmeth_name\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 504\u001b[0;31m \u001b[0mresult\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mfunc\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 505\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mresult\u001b[0m \u001b[0;32mis\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0;32mNone\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 506\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mresult\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/urllib/request.py\u001b[0m in \u001b[0;36mhttp_error_302\u001b[0;34m(self, req, fp, code, msg, headers)\u001b[0m\n\u001b[1;32m 754\u001b[0m \u001b[0mfp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mclose\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 755\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 756\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mparent\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mopen\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mnew\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mtimeout\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mreq\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mtimeout\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 757\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 758\u001b[0m \u001b[0mhttp_error_301\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mhttp_error_303\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mhttp_error_307\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mhttp_error_302\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/urllib/request.py\u001b[0m in \u001b[0;36mopen\u001b[0;34m(self, fullurl, data, timeout)\u001b[0m\n\u001b[1;32m 524\u001b[0m \u001b[0mreq\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mmeth\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mreq\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 525\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 526\u001b[0;31m \u001b[0mresponse\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_open\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mreq\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mdata\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 527\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 528\u001b[0m \u001b[0;31m# post-process response\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/urllib/request.py\u001b[0m in \u001b[0;36m_open\u001b[0;34m(self, req, data)\u001b[0m\n\u001b[1;32m 542\u001b[0m \u001b[0mprotocol\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mreq\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mtype\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 543\u001b[0m result = self._call_chain(self.handle_open, protocol, protocol +\n\u001b[0;32m--> 544\u001b[0;31m '_open', req)\n\u001b[0m\u001b[1;32m 545\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mresult\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 546\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mresult\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/urllib/request.py\u001b[0m in \u001b[0;36m_call_chain\u001b[0;34m(self, chain, kind, meth_name, *args)\u001b[0m\n\u001b[1;32m 502\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0mhandler\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mhandlers\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 503\u001b[0m \u001b[0mfunc\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mgetattr\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mhandler\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mmeth_name\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 504\u001b[0;31m \u001b[0mresult\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mfunc\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 505\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mresult\u001b[0m \u001b[0;32mis\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0;32mNone\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 506\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mresult\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/urllib/request.py\u001b[0m in \u001b[0;36mhttps_open\u001b[0;34m(self, req)\u001b[0m\n\u001b[1;32m 1359\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0mhttps_open\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mreq\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1360\u001b[0m return self.do_open(http.client.HTTPSConnection, req,\n\u001b[0;32m-> 1361\u001b[0;31m context=self._context, check_hostname=self._check_hostname)\n\u001b[0m\u001b[1;32m 1362\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1363\u001b[0m \u001b[0mhttps_request\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mAbstractHTTPHandler\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mdo_request_\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/urllib/request.py\u001b[0m in \u001b[0;36mdo_open\u001b[0;34m(self, http_class, req, **http_conn_args)\u001b[0m\n\u001b[1;32m 1319\u001b[0m \u001b[0;32mexcept\u001b[0m \u001b[0mOSError\u001b[0m \u001b[0;32mas\u001b[0m \u001b[0merr\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0;31m# timeout error\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1320\u001b[0m \u001b[0;32mraise\u001b[0m \u001b[0mURLError\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0merr\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 1321\u001b[0;31m \u001b[0mr\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mh\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mgetresponse\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 1322\u001b[0m \u001b[0;32mexcept\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1323\u001b[0m \u001b[0mh\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mclose\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/http/client.py\u001b[0m in \u001b[0;36mgetresponse\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 1329\u001b[0m \u001b[0;32mtry\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1330\u001b[0m \u001b[0;32mtry\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 1331\u001b[0;31m \u001b[0mresponse\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mbegin\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 1332\u001b[0m \u001b[0;32mexcept\u001b[0m \u001b[0mConnectionError\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1333\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mclose\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/http/client.py\u001b[0m in \u001b[0;36mbegin\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 295\u001b[0m \u001b[0;31m# read until we get a non-100 response\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 296\u001b[0m \u001b[0;32mwhile\u001b[0m \u001b[0;32mTrue\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 297\u001b[0;31m \u001b[0mversion\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mstatus\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mreason\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_read_status\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 298\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mstatus\u001b[0m \u001b[0;34m!=\u001b[0m \u001b[0mCONTINUE\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 299\u001b[0m \u001b[0;32mbreak\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/http/client.py\u001b[0m in \u001b[0;36m_read_status\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 256\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 257\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0m_read_status\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 258\u001b[0;31m \u001b[0mline\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mstr\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mfp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mreadline\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0m_MAXLINE\u001b[0m \u001b[0;34m+\u001b[0m \u001b[0;36m1\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m\"iso-8859-1\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 259\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mlen\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mline\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;34m>\u001b[0m \u001b[0m_MAXLINE\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 260\u001b[0m \u001b[0;32mraise\u001b[0m \u001b[0mLineTooLong\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"status line\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/socket.py\u001b[0m in \u001b[0;36mreadinto\u001b[0;34m(self, b)\u001b[0m\n\u001b[1;32m 584\u001b[0m \u001b[0;32mwhile\u001b[0m \u001b[0;32mTrue\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 585\u001b[0m \u001b[0;32mtry\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 586\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_sock\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mrecv_into\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mb\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 587\u001b[0m \u001b[0;32mexcept\u001b[0m \u001b[0mtimeout\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 588\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_timeout_occurred\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;32mTrue\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/ssl.py\u001b[0m in \u001b[0;36mrecv_into\u001b[0;34m(self, buffer, nbytes, flags)\u001b[0m\n\u001b[1;32m 1000\u001b[0m \u001b[0;34m\"non-zero flags not allowed in calls to recv_into() on %s\"\u001b[0m \u001b[0;34m%\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1001\u001b[0m self.__class__)\n\u001b[0;32m-> 1002\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mread\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mnbytes\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mbuffer\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 1003\u001b[0m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1004\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0msocket\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mrecv_into\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mbuffer\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mnbytes\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mflags\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/ssl.py\u001b[0m in \u001b[0;36mread\u001b[0;34m(self, len, buffer)\u001b[0m\n\u001b[1;32m 863\u001b[0m \u001b[0;32mraise\u001b[0m \u001b[0mValueError\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"Read on closed or unwrapped SSL socket.\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 864\u001b[0m \u001b[0;32mtry\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 865\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_sslobj\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mread\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mlen\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mbuffer\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 866\u001b[0m \u001b[0;32mexcept\u001b[0m \u001b[0mSSLError\u001b[0m \u001b[0;32mas\u001b[0m \u001b[0mx\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 867\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mx\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m0\u001b[0m\u001b[0;34m]\u001b[0m \u001b[0;34m==\u001b[0m \u001b[0mSSL_ERROR_EOF\u001b[0m \u001b[0;32mand\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msuppress_ragged_eofs\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/ssl.py\u001b[0m in \u001b[0;36mread\u001b[0;34m(self, len, buffer)\u001b[0m\n\u001b[1;32m 623\u001b[0m \"\"\"\n\u001b[1;32m 624\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mbuffer\u001b[0m \u001b[0;32mis\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0;32mNone\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 625\u001b[0;31m \u001b[0mv\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_sslobj\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mread\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mlen\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mbuffer\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 626\u001b[0m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 627\u001b[0m \u001b[0mv\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_sslobj\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mread\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mlen\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;31mKeyboardInterrupt\u001b[0m: " - ] - } - ], - "source": [ - "from urllib.request import urlopen\n", - "from bs4 import BeautifulSoup\n", - "import re\n", - "\n", - "pages = set()\n", - "def getLinks(pageUrl):\n", - " global pages\n", - " html = urlopen('http://en.wikipedia.org{}'.format(pageUrl))\n", - " bs = BeautifulSoup(html, 'html.parser')\n", - " for link in bs.find_all('a', href=re.compile('^(/wiki/)')):\n", - " if 'href' in link.attrs:\n", - " if link.attrs['href'] not in pages:\n", - " #We have encountered a new page\n", - " newPage = link.attrs['href']\n", - " print(newPage)\n", - " pages.add(newPage)\n", - " getLinks(newPage)\n", - "getLinks('')" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Collecting Data Across an Entire Site" - ] - }, - { - "cell_type": "code", - "execution_count": 11, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Main Page\n", - "

The Finnish Civil War (27 January – 15 May 1918) marked the transition from the Grand Duchy of Finland, part of the Russian Empire, to an independent state. Arising during World War I, it was fought between the Reds, led by the Social Democratic Party, and the Whites, led by the conservative Senate. In February 1918, the Reds carried out an unsuccessful offensive, supplied with weapons by Soviet Russia. A counteroffensive by the Whites began in March, reinforced by the German Empire's military detachments in April. The decisive engagements were the battles of Tampere and Vyborg, won by the Whites, and the battles of Helsinki and Lahti, won by German troops, leading to overall victory for the Whites and the German forces. The 39,000 casualties included political terror deaths. Although the Senate and Parliament were initially pressured into accepting the brother-in-law of German Emperor William II as the King of Finland, the country emerged within a few months as an independent, democratic republic. The war would divide the nation for decades. (Full article...)

\n", - "This page is missing something! No worries, we will continue!\n", - "--------------------\n", - "/wiki/Wikipedia\n", - "Wikipedia\n", - "

Wikipedia (/ˌwɪkɪˈpdiə/ (\"About listen) WIK-i-PEE-dee-ə or /ˌwɪkiˈpdiə/ (\"About listen) WIK-ee-PEE-dee-ə) is a free online encyclopedia with the mission of allowing anyone to edit articles.[3][not in citation given] Wikipedia is the largest and most popular general reference work on the Internet,[4][5][6] and is ranked the fifth-most popular website.[7] Wikipedia is owned by the nonprofit Wikimedia Foundation.[8][9][10]

\n", - "This page is missing something! No worries, we will continue!\n", - "--------------------\n", - "/wiki/Wikipedia:Protection_policy#semi\n", - "Wikipedia:Protection policy\n", - "

Wikipedia is built around the principle that anyone can edit it, and it therefore aims to have as many of its pages as possible open for public editing so that anyone can add material and correct errors. However, in some particular circumstances, because of a specifically identified likelihood of damage resulting if editing is left open, some individual pages may need to be subject to technical restrictions (often only temporary but sometimes indefinitely) on who is permitted to modify them. The placing of such restrictions on pages is called protection.

\n", - "This page is missing something! No worries, we will continue!\n", - "--------------------\n", - "/wiki/Wikipedia:Requests_for_page_protection\n", - "Wikipedia:Requests for page protection\n", - "

This page is for requesting that a page, file or template be fully protected, create protected (salted), extended confirmed protected, semi-protected, added to pending changes, move-protected, template protected (template-specific), upload protected (file-specific), or unprotected. Please read up on the protection policy. Full protection is used to stop edit warring between multiple users or to prevent vandalism to high-risk templates; semi-protection and pending changes are usually used only to prevent IP and new user vandalism (see the rough guide to semi-protection); and move protection is used to stop pagemove revert wars. Extended confirmed protection is used where semi-protection has proved insufficient (see the rough guide to extended confirmed protection)

\n", - "/w/index.php?title=Wikipedia:Requests_for_page_protection&action=edit\n", - "--------------------\n", - "/wiki/Wikipedia:Requests_for_permissions\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Wikipedia:Requests for permissions\n", - "

Administrator instructions

\n", - "This page is missing something! No worries, we will continue!\n", - "--------------------\n", - "/wiki/Wikipedia:Requesting_copyright_permission\n" - ] - }, - { - "ename": "KeyboardInterrupt", - "evalue": "", - "output_type": "error", - "traceback": [ - "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", - "\u001b[0;31mKeyboardInterrupt\u001b[0m Traceback (most recent call last)", - "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[1;32m 24\u001b[0m \u001b[0mpages\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0madd\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mnewPage\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 25\u001b[0m \u001b[0mgetLinks\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mnewPage\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 26\u001b[0;31m \u001b[0mgetLinks\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m''\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m", - "\u001b[0;32m\u001b[0m in \u001b[0;36mgetLinks\u001b[0;34m(pageUrl)\u001b[0m\n\u001b[1;32m 23\u001b[0m \u001b[0mprint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mnewPage\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 24\u001b[0m \u001b[0mpages\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0madd\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mnewPage\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 25\u001b[0;31m \u001b[0mgetLinks\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mnewPage\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 26\u001b[0m \u001b[0mgetLinks\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m''\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m\u001b[0m in \u001b[0;36mgetLinks\u001b[0;34m(pageUrl)\u001b[0m\n\u001b[1;32m 23\u001b[0m \u001b[0mprint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mnewPage\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 24\u001b[0m \u001b[0mpages\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0madd\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mnewPage\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 25\u001b[0;31m \u001b[0mgetLinks\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mnewPage\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 26\u001b[0m \u001b[0mgetLinks\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m''\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m\u001b[0m in \u001b[0;36mgetLinks\u001b[0;34m(pageUrl)\u001b[0m\n\u001b[1;32m 23\u001b[0m \u001b[0mprint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mnewPage\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 24\u001b[0m \u001b[0mpages\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0madd\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mnewPage\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 25\u001b[0;31m \u001b[0mgetLinks\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mnewPage\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 26\u001b[0m \u001b[0mgetLinks\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m''\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m\u001b[0m in \u001b[0;36mgetLinks\u001b[0;34m(pageUrl)\u001b[0m\n\u001b[1;32m 23\u001b[0m \u001b[0mprint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mnewPage\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 24\u001b[0m \u001b[0mpages\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0madd\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mnewPage\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 25\u001b[0;31m \u001b[0mgetLinks\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mnewPage\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 26\u001b[0m \u001b[0mgetLinks\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m''\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m\u001b[0m in \u001b[0;36mgetLinks\u001b[0;34m(pageUrl)\u001b[0m\n\u001b[1;32m 23\u001b[0m \u001b[0mprint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mnewPage\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 24\u001b[0m \u001b[0mpages\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0madd\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mnewPage\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 25\u001b[0;31m \u001b[0mgetLinks\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mnewPage\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 26\u001b[0m \u001b[0mgetLinks\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m''\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m\u001b[0m in \u001b[0;36mgetLinks\u001b[0;34m(pageUrl)\u001b[0m\n\u001b[1;32m 6\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0mgetLinks\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mpageUrl\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 7\u001b[0m \u001b[0;32mglobal\u001b[0m \u001b[0mpages\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 8\u001b[0;31m \u001b[0mhtml\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0murlopen\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'http://en.wikipedia.org{}'\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mformat\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mpageUrl\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 9\u001b[0m \u001b[0mbsObj\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mBeautifulSoup\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mhtml\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m'html.parser'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 10\u001b[0m \u001b[0;32mtry\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/urllib/request.py\u001b[0m in \u001b[0;36murlopen\u001b[0;34m(url, data, timeout, cafile, capath, cadefault, context)\u001b[0m\n\u001b[1;32m 221\u001b[0m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 222\u001b[0m \u001b[0mopener\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0m_opener\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 223\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mopener\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mopen\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0murl\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mdata\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mtimeout\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 224\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 225\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0minstall_opener\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mopener\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/urllib/request.py\u001b[0m in \u001b[0;36mopen\u001b[0;34m(self, fullurl, data, timeout)\u001b[0m\n\u001b[1;32m 530\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0mprocessor\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mprocess_response\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mget\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mprotocol\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m[\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 531\u001b[0m \u001b[0mmeth\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mgetattr\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mprocessor\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mmeth_name\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 532\u001b[0;31m \u001b[0mresponse\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mmeth\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mreq\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mresponse\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 533\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 534\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mresponse\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/urllib/request.py\u001b[0m in \u001b[0;36mhttp_response\u001b[0;34m(self, request, response)\u001b[0m\n\u001b[1;32m 640\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0;34m(\u001b[0m\u001b[0;36m200\u001b[0m \u001b[0;34m<=\u001b[0m \u001b[0mcode\u001b[0m \u001b[0;34m<\u001b[0m \u001b[0;36m300\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 641\u001b[0m response = self.parent.error(\n\u001b[0;32m--> 642\u001b[0;31m 'http', request, response, code, msg, hdrs)\n\u001b[0m\u001b[1;32m 643\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 644\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mresponse\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/urllib/request.py\u001b[0m in \u001b[0;36merror\u001b[0;34m(self, proto, *args)\u001b[0m\n\u001b[1;32m 562\u001b[0m \u001b[0mhttp_err\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;36m0\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 563\u001b[0m \u001b[0margs\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m(\u001b[0m\u001b[0mdict\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mproto\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mmeth_name\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;34m+\u001b[0m \u001b[0margs\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 564\u001b[0;31m \u001b[0mresult\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_call_chain\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 565\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mresult\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 566\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mresult\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/urllib/request.py\u001b[0m in \u001b[0;36m_call_chain\u001b[0;34m(self, chain, kind, meth_name, *args)\u001b[0m\n\u001b[1;32m 502\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0mhandler\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mhandlers\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 503\u001b[0m \u001b[0mfunc\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mgetattr\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mhandler\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mmeth_name\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 504\u001b[0;31m \u001b[0mresult\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mfunc\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 505\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mresult\u001b[0m \u001b[0;32mis\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0;32mNone\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 506\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mresult\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/urllib/request.py\u001b[0m in \u001b[0;36mhttp_error_302\u001b[0;34m(self, req, fp, code, msg, headers)\u001b[0m\n\u001b[1;32m 754\u001b[0m \u001b[0mfp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mclose\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 755\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 756\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mparent\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mopen\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mnew\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mtimeout\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mreq\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mtimeout\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 757\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 758\u001b[0m \u001b[0mhttp_error_301\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mhttp_error_303\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mhttp_error_307\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mhttp_error_302\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/urllib/request.py\u001b[0m in \u001b[0;36mopen\u001b[0;34m(self, fullurl, data, timeout)\u001b[0m\n\u001b[1;32m 524\u001b[0m \u001b[0mreq\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mmeth\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mreq\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 525\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 526\u001b[0;31m \u001b[0mresponse\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_open\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mreq\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mdata\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 527\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 528\u001b[0m \u001b[0;31m# post-process response\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/urllib/request.py\u001b[0m in \u001b[0;36m_open\u001b[0;34m(self, req, data)\u001b[0m\n\u001b[1;32m 542\u001b[0m \u001b[0mprotocol\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mreq\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mtype\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 543\u001b[0m result = self._call_chain(self.handle_open, protocol, protocol +\n\u001b[0;32m--> 544\u001b[0;31m '_open', req)\n\u001b[0m\u001b[1;32m 545\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mresult\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 546\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mresult\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/urllib/request.py\u001b[0m in \u001b[0;36m_call_chain\u001b[0;34m(self, chain, kind, meth_name, *args)\u001b[0m\n\u001b[1;32m 502\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0mhandler\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mhandlers\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 503\u001b[0m \u001b[0mfunc\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mgetattr\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mhandler\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mmeth_name\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 504\u001b[0;31m \u001b[0mresult\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mfunc\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 505\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mresult\u001b[0m \u001b[0;32mis\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0;32mNone\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 506\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mresult\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/urllib/request.py\u001b[0m in \u001b[0;36mhttps_open\u001b[0;34m(self, req)\u001b[0m\n\u001b[1;32m 1359\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0mhttps_open\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mreq\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1360\u001b[0m return self.do_open(http.client.HTTPSConnection, req,\n\u001b[0;32m-> 1361\u001b[0;31m context=self._context, check_hostname=self._check_hostname)\n\u001b[0m\u001b[1;32m 1362\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1363\u001b[0m \u001b[0mhttps_request\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mAbstractHTTPHandler\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mdo_request_\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/urllib/request.py\u001b[0m in \u001b[0;36mdo_open\u001b[0;34m(self, http_class, req, **http_conn_args)\u001b[0m\n\u001b[1;32m 1316\u001b[0m \u001b[0;32mtry\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1317\u001b[0m h.request(req.get_method(), req.selector, req.data, headers,\n\u001b[0;32m-> 1318\u001b[0;31m encode_chunked=req.has_header('Transfer-encoding'))\n\u001b[0m\u001b[1;32m 1319\u001b[0m \u001b[0;32mexcept\u001b[0m \u001b[0mOSError\u001b[0m \u001b[0;32mas\u001b[0m \u001b[0merr\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0;31m# timeout error\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1320\u001b[0m \u001b[0;32mraise\u001b[0m \u001b[0mURLError\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0merr\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/http/client.py\u001b[0m in \u001b[0;36mrequest\u001b[0;34m(self, method, url, body, headers, encode_chunked)\u001b[0m\n\u001b[1;32m 1237\u001b[0m encode_chunked=False):\n\u001b[1;32m 1238\u001b[0m \u001b[0;34m\"\"\"Send a complete request to the server.\"\"\"\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 1239\u001b[0;31m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_send_request\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mmethod\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0murl\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mbody\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mheaders\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mencode_chunked\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 1240\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1241\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0m_send_request\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mmethod\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0murl\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mbody\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mheaders\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mencode_chunked\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/http/client.py\u001b[0m in \u001b[0;36m_send_request\u001b[0;34m(self, method, url, body, headers, encode_chunked)\u001b[0m\n\u001b[1;32m 1283\u001b[0m \u001b[0;31m# default charset of iso-8859-1.\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1284\u001b[0m \u001b[0mbody\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0m_encode\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mbody\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m'body'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 1285\u001b[0;31m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mendheaders\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mbody\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mencode_chunked\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mencode_chunked\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 1286\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1287\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0mgetresponse\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/http/client.py\u001b[0m in \u001b[0;36mendheaders\u001b[0;34m(self, message_body, encode_chunked)\u001b[0m\n\u001b[1;32m 1232\u001b[0m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1233\u001b[0m \u001b[0;32mraise\u001b[0m \u001b[0mCannotSendHeader\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 1234\u001b[0;31m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_send_output\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mmessage_body\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mencode_chunked\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mencode_chunked\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 1235\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1236\u001b[0m def request(self, method, url, body=None, headers={}, *,\n", - "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/http/client.py\u001b[0m in \u001b[0;36m_send_output\u001b[0;34m(self, message_body, encode_chunked)\u001b[0m\n\u001b[1;32m 1024\u001b[0m \u001b[0mmsg\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34mb\"\\r\\n\"\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mjoin\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_buffer\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1025\u001b[0m \u001b[0;32mdel\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_buffer\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 1026\u001b[0;31m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msend\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mmsg\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 1027\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1028\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mmessage_body\u001b[0m \u001b[0;32mis\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0;32mNone\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/http/client.py\u001b[0m in \u001b[0;36msend\u001b[0;34m(self, data)\u001b[0m\n\u001b[1;32m 962\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msock\u001b[0m \u001b[0;32mis\u001b[0m \u001b[0;32mNone\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 963\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mauto_open\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 964\u001b[0;31m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mconnect\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 965\u001b[0m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 966\u001b[0m \u001b[0;32mraise\u001b[0m \u001b[0mNotConnected\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/http/client.py\u001b[0m in \u001b[0;36mconnect\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 1390\u001b[0m \u001b[0;34m\"Connect to a host on a given (SSL) port.\"\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1391\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 1392\u001b[0;31m \u001b[0msuper\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mconnect\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 1393\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1394\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_tunnel_host\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/http/client.py\u001b[0m in \u001b[0;36mconnect\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 934\u001b[0m \u001b[0;34m\"\"\"Connect to the host and port specified in __init__.\"\"\"\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 935\u001b[0m self.sock = self._create_connection(\n\u001b[0;32m--> 936\u001b[0;31m (self.host,self.port), self.timeout, self.source_address)\n\u001b[0m\u001b[1;32m 937\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msock\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msetsockopt\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0msocket\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mIPPROTO_TCP\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0msocket\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mTCP_NODELAY\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;36m1\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 938\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/socket.py\u001b[0m in \u001b[0;36mcreate_connection\u001b[0;34m(address, timeout, source_address)\u001b[0m\n\u001b[1;32m 711\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0msource_address\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 712\u001b[0m \u001b[0msock\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mbind\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0msource_address\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 713\u001b[0;31m \u001b[0msock\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mconnect\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0msa\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 714\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0msock\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 715\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;31mKeyboardInterrupt\u001b[0m: " - ] - } - ], - "source": [ - "from urllib.request import urlopen\n", - "from bs4 import BeautifulSoup\n", - "import re\n", - "\n", - "pages = set()\n", - "def getLinks(pageUrl):\n", - " global pages\n", - " html = urlopen('http://en.wikipedia.org{}'.format(pageUrl))\n", - " bs = BeautifulSoup(html, 'html.parser')\n", - " try:\n", - " print(bs.h1.get_text())\n", - " print(bs.find(id ='mw-content-text').find_all('p')[0])\n", - " print(bs.find(id='ca-edit').find('span').find('a').attrs['href'])\n", - " except AttributeError:\n", - " print('This page is missing something! Continuing.')\n", - " \n", - " for link in bs.find_all('a', href=re.compile('^(/wiki/)')):\n", - " if 'href' in link.attrs:\n", - " if link.attrs['href'] not in pages:\n", - " #We have encountered a new page\n", - " newPage = link.attrs['href']\n", - " print('-'*20)\n", - " print(newPage)\n", - " pages.add(newPage)\n", - " getLinks(newPage)\n", - "getLinks('') " - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Crawling across the Internet" - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Random external link is: http://twitter.com/oreillymedia\n" - ] - }, - { - "ename": "KeyboardInterrupt", - "evalue": "", - "output_type": "error", - "traceback": [ - "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", - "\u001b[0;31mKeyboardInterrupt\u001b[0m Traceback (most recent call last)", - "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[1;32m 52\u001b[0m \u001b[0mfollowExternalOnly\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mexternalLink\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 53\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 54\u001b[0;31m \u001b[0mfollowExternalOnly\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'http://oreilly.com'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m", - "\u001b[0;32m\u001b[0m in \u001b[0;36mfollowExternalOnly\u001b[0;34m(startingSite)\u001b[0m\n\u001b[1;32m 50\u001b[0m \u001b[0mexternalLink\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mgetRandomExternalLink\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mstartingSite\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 51\u001b[0m \u001b[0mprint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'Random external link is: {}'\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mformat\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mexternalLink\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 52\u001b[0;31m \u001b[0mfollowExternalOnly\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mexternalLink\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 53\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 54\u001b[0m \u001b[0mfollowExternalOnly\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'http://oreilly.com'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m\u001b[0m in \u001b[0;36mfollowExternalOnly\u001b[0;34m(startingSite)\u001b[0m\n\u001b[1;32m 48\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 49\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0mfollowExternalOnly\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mstartingSite\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 50\u001b[0;31m \u001b[0mexternalLink\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mgetRandomExternalLink\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mstartingSite\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 51\u001b[0m \u001b[0mprint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'Random external link is: {}'\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mformat\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mexternalLink\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 52\u001b[0m \u001b[0mfollowExternalOnly\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mexternalLink\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m\u001b[0m in \u001b[0;36mgetRandomExternalLink\u001b[0;34m(startingPage)\u001b[0m\n\u001b[1;32m 36\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0mgetRandomExternalLink\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mstartingPage\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 37\u001b[0m \u001b[0mhtml\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0murlopen\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mstartingPage\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 38\u001b[0;31m \u001b[0mbs\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mBeautifulSoup\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mhtml\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m'html.parser'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 39\u001b[0m \u001b[0mexternalLinks\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mgetExternalLinks\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mbs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0murlparse\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mstartingPage\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mnetloc\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 40\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mlen\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mexternalLinks\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;34m==\u001b[0m \u001b[0;36m0\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/bs4/__init__.py\u001b[0m in \u001b[0;36m__init__\u001b[0;34m(self, markup, features, builder, parse_only, from_encoding, exclude_encodings, **kwargs)\u001b[0m\n\u001b[1;32m 226\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mreset\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 227\u001b[0m \u001b[0;32mtry\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 228\u001b[0;31m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_feed\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 229\u001b[0m \u001b[0;32mbreak\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 230\u001b[0m \u001b[0;32mexcept\u001b[0m \u001b[0mParserRejectedMarkup\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/bs4/__init__.py\u001b[0m in \u001b[0;36m_feed\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 287\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mbuilder\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mreset\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 288\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 289\u001b[0;31m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mbuilder\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mfeed\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mmarkup\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 290\u001b[0m \u001b[0;31m# Close out any unfinished strings and close all the open tags.\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 291\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mendData\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/bs4/builder/_htmlparser.py\u001b[0m in \u001b[0;36mfeed\u001b[0;34m(self, markup)\u001b[0m\n\u001b[1;32m 213\u001b[0m \u001b[0mparser\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msoup\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msoup\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 214\u001b[0m \u001b[0;32mtry\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 215\u001b[0;31m \u001b[0mparser\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mfeed\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mmarkup\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 216\u001b[0m \u001b[0;32mexcept\u001b[0m \u001b[0mHTMLParseError\u001b[0m \u001b[0;32mas\u001b[0m \u001b[0me\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 217\u001b[0m warnings.warn(RuntimeWarning(\n", - "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/html/parser.py\u001b[0m in \u001b[0;36mfeed\u001b[0;34m(self, data)\u001b[0m\n\u001b[1;32m 109\u001b[0m \"\"\"\n\u001b[1;32m 110\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mrawdata\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mrawdata\u001b[0m \u001b[0;34m+\u001b[0m \u001b[0mdata\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 111\u001b[0;31m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mgoahead\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;36m0\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 112\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 113\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0mclose\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/html/parser.py\u001b[0m in \u001b[0;36mgoahead\u001b[0;34m(self, end)\u001b[0m\n\u001b[1;32m 169\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mstartswith\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'<'\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mi\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 170\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mstarttagopen\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mmatch\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mrawdata\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mi\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0;31m# < + letter\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 171\u001b[0;31m \u001b[0mk\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mparse_starttag\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mi\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 172\u001b[0m \u001b[0;32melif\u001b[0m \u001b[0mstartswith\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\" 303\u001b[0;31m \u001b[0mendpos\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mcheck_for_whole_start_tag\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mi\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 304\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mendpos\u001b[0m \u001b[0;34m<\u001b[0m \u001b[0;36m0\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 305\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mendpos\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/html/parser.py\u001b[0m in \u001b[0;36mcheck_for_whole_start_tag\u001b[0;34m(self, i)\u001b[0m\n\u001b[1;32m 355\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mm\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 356\u001b[0m \u001b[0mj\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mm\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mend\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 357\u001b[0;31m \u001b[0mnext\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mrawdata\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mj\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0mj\u001b[0m\u001b[0;34m+\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 358\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mnext\u001b[0m \u001b[0;34m==\u001b[0m \u001b[0;34m\">\"\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 359\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mj\u001b[0m \u001b[0;34m+\u001b[0m \u001b[0;36m1\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;31mKeyboardInterrupt\u001b[0m: " - ] - } - ], - "source": [ - "from urllib.request import urlopen\n", - "from urllib.parse import urlparse\n", - "from bs4 import BeautifulSoup\n", - "import re\n", - "import datetime\n", - "import random\n", - "\n", - "pages = set()\n", - "random.seed(datetime.datetime.now())\n", - "\n", - "#Retrieves a list of all Internal links found on a page\n", - "def getInternalLinks(bs, includeUrl):\n", - " includeUrl = '{}://{}'.format(urlparse(includeUrl).scheme, urlparse(includeUrl).netloc)\n", - " internalLinks = []\n", - " #Finds all links that begin with a \"/\"\n", - " for link in bs.find_all('a', href=re.compile('^(/|.*'+includeUrl+')')):\n", - " if link.attrs['href'] is not None:\n", - " if link.attrs['href'] not in internalLinks:\n", - " if(link.attrs['href'].startswith('/')):\n", - " internalLinks.append(includeUrl+link.attrs['href'])\n", - " else:\n", - " internalLinks.append(link.attrs['href'])\n", - " return internalLinks\n", - " \n", - "#Retrieves a list of all external links found on a page\n", - "def getExternalLinks(bs, excludeUrl):\n", - " externalLinks = []\n", - " #Finds all links that start with \"http\" that do\n", - " #not contain the current URL\n", - " for link in bs.find_all('a', href=re.compile('^(http|www)((?!'+excludeUrl+').)*$')):\n", - " if link.attrs['href'] is not None:\n", - " if link.attrs['href'] not in externalLinks:\n", - " externalLinks.append(link.attrs['href'])\n", - " return externalLinks\n", - "\n", - "def getRandomExternalLink(startingPage):\n", - " html = urlopen(startingPage)\n", - " bs = BeautifulSoup(html, 'html.parser')\n", - " externalLinks = getExternalLinks(bs, urlparse(startingPage).netloc)\n", - " if len(externalLinks) == 0:\n", - " print('No external links, looking around the site for one')\n", - " domain = '{}://{}'.format(urlparse(startingPage).scheme, urlparse(startingPage).netloc)\n", - " internalLinks = getInternalLinks(bs, domain)\n", - " return getRandomExternalLink(internalLinks[random.randint(0,\n", - " len(internalLinks)-1)])\n", - " else:\n", - " return externalLinks[random.randint(0, len(externalLinks)-1)]\n", - " \n", - "def followExternalOnly(startingSite):\n", - " externalLink = getRandomExternalLink(startingSite)\n", - " print('Random external link is: {}'.format(externalLink))\n", - " followExternalOnly(externalLink)\n", - " \n", - "followExternalOnly('http://oreilly.com')" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Collect all External Links from a Site" - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "https://www.oreilly.com\n", - "http://www.oreilly.com/ideas\n", - "https://www.safaribooksonline.com/?utm_medium=content&utm_source=oreilly.com&utm_campaign=lgen&utm_content=20170601+nav\n", - "http://www.oreilly.com/conferences/\n", - "http://shop.oreilly.com/\n", - "http://members.oreilly.com\n", - "https://www.oreilly.com/topics\n", - "https://www.safaribooksonline.com/?utm_medium=content&utm_source=oreilly.com&utm_campaign=lgen&utm_content=20170505+homepage+get+started+now\n", - "https://www.safaribooksonline.com/accounts/login/?utm_medium=content&utm_source=oreilly.com&utm_campaign=lgen&utm_content=20170203+homepage+sign+in\n", - "https://www.safaribooksonline.com/live-training/?utm_medium=content&utm_source=oreilly.com&utm_campaign=lgen&utm_content=20170201+homepage+take+a+live+online+course\n", - "https://www.safaribooksonline.com/learning-paths/?utm_medium=content&utm_source=oreilly.com&utm_campaign=lgen&utm_content=20170201+homepage+follow+a+path\n", - "https://www.safaribooksonline.com/?utm_medium=content&utm_source=oreilly.com&utm_campaign=lgen&utm_content=20170505+homepage+unlimited+access\n", - "http://www.oreilly.com/live-training/?view=grid\n", - "https://www.safaribooksonline.com/your-experience/?utm_medium=content&utm_source=oreilly.com&utm_campaign=lgen&utm_content=20170201+homepage+safari+platform\n", - "https://cdn.oreillystatic.com/pdf/oreilly_high_performance_organizations_whitepaper.pdf\n", - "https://www.oreilly.com/ideas/8-data-trends-on-our-radar-for-2017?utm_medium=referral&utm_source=oreilly.com&utm_campaign=lgen&utm_content=link+2017+trends\n", - "https://www.oreilly.com/ideas?utm_medium=referral&utm_source=oreilly.com&utm_campaign=lgen&utm_content=link+read+latest+articles\n", - "http://www.oreilly.com/about/\n", - "http://www.oreilly.com/work-with-us.html\n", - "http://www.oreilly.com/careers/\n", - "http://shop.oreilly.com/category/customer-service.do\n", - "http://www.oreilly.com/about/contact.html\n", - "http://twitter.com/oreillymedia\n", - "http://fb.co/OReilly\n", - "https://www.linkedin.com/company/oreilly-media\n", - "https://www.youtube.com/user/OreillyMedia\n", - "http://www.oreilly.com/emails/newsletters/\n", - "http://www.oreilly.com/terms/\n", - "http://www.oreilly.com/privacy.html\n", - "http://www.oreilly.com/about/editorial_independence.html\n", - "https://www.safaribooksonline.com/home/?utm_medium=content&utm_source=oreilly.com&utm_campaign=lgen&utm_content=20170601+nav\n", - "http://www.oreilly.com/emails/newsletters/?display=preview#ai\n", - "https://www.oreilly.com/privacy.html\n", - "http://www.oreilly.com/ai/building-bots-with-natural-language-processing.csp?utm_source=oreilly&utm_medium=newsite&utm_campaign=ai-topic-cta\n", - "https://www.flickr.com/photos/ebmorse/7536436622/in/dateposted/\n", - "http://oreilly.com/about/\n", - "http://oreilly.com/work-with-us.html\n", - "http://oreilly.com/careers/\n", - "https://plus.google.com/+oreillymedia\n", - "http://oreilly.com/terms/\n", - "http://oreilly.com/privacy.html\n", - "https://www.safaribooksonline.com/home/?utm_source=newsite&utm_medium=content&utm_campaign=lgen&utm_content=business-topic-cta\n", - "https://www.flickr.com/photos/pagedooley/4253159181/\n" - ] - }, - { - "ename": "KeyboardInterrupt", - "evalue": "", - "output_type": "error", - "traceback": [ - "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", - "\u001b[0;31mKeyboardInterrupt\u001b[0m Traceback (most recent call last)", - "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[1;32m 19\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 20\u001b[0m \u001b[0mallIntLinks\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0madd\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'http://oreilly.com'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 21\u001b[0;31m \u001b[0mgetAllExternalLinks\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'http://oreilly.com'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m", - "\u001b[0;32m\u001b[0m in \u001b[0;36mgetAllExternalLinks\u001b[0;34m(siteUrl)\u001b[0m\n\u001b[1;32m 16\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mlink\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mallIntLinks\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 17\u001b[0m \u001b[0mallIntLinks\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0madd\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mlink\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 18\u001b[0;31m \u001b[0mgetAllExternalLinks\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mlink\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 19\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 20\u001b[0m \u001b[0mallIntLinks\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0madd\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'http://oreilly.com'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m\u001b[0m in \u001b[0;36mgetAllExternalLinks\u001b[0;34m(siteUrl)\u001b[0m\n\u001b[1;32m 16\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mlink\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mallIntLinks\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 17\u001b[0m \u001b[0mallIntLinks\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0madd\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mlink\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 18\u001b[0;31m \u001b[0mgetAllExternalLinks\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mlink\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 19\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 20\u001b[0m \u001b[0mallIntLinks\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0madd\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'http://oreilly.com'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m\u001b[0m in \u001b[0;36mgetAllExternalLinks\u001b[0;34m(siteUrl)\u001b[0m\n\u001b[1;32m 16\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mlink\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mallIntLinks\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 17\u001b[0m \u001b[0mallIntLinks\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0madd\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mlink\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 18\u001b[0;31m \u001b[0mgetAllExternalLinks\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mlink\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 19\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 20\u001b[0m \u001b[0mallIntLinks\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0madd\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'http://oreilly.com'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m\u001b[0m in \u001b[0;36mgetAllExternalLinks\u001b[0;34m(siteUrl)\u001b[0m\n\u001b[1;32m 16\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mlink\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mallIntLinks\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 17\u001b[0m \u001b[0mallIntLinks\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0madd\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mlink\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 18\u001b[0;31m \u001b[0mgetAllExternalLinks\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mlink\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 19\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 20\u001b[0m \u001b[0mallIntLinks\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0madd\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'http://oreilly.com'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m\u001b[0m in \u001b[0;36mgetAllExternalLinks\u001b[0;34m(siteUrl)\u001b[0m\n\u001b[1;32m 3\u001b[0m \u001b[0mallIntLinks\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mset\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 4\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0mgetAllExternalLinks\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0msiteUrl\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 5\u001b[0;31m \u001b[0mhtml\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0murlopen\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0msiteUrl\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 6\u001b[0m \u001b[0mdomain\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m'{}://{}'\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mformat\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0murlparse\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0msiteUrl\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mscheme\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0murlparse\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0msiteUrl\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mnetloc\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 7\u001b[0m \u001b[0mbs\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mBeautifulSoup\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mhtml\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m'html.parser'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/urllib/request.py\u001b[0m in \u001b[0;36murlopen\u001b[0;34m(url, data, timeout, cafile, capath, cadefault, context)\u001b[0m\n\u001b[1;32m 221\u001b[0m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 222\u001b[0m \u001b[0mopener\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0m_opener\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 223\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mopener\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mopen\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0murl\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mdata\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mtimeout\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 224\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 225\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0minstall_opener\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mopener\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/urllib/request.py\u001b[0m in \u001b[0;36mopen\u001b[0;34m(self, fullurl, data, timeout)\u001b[0m\n\u001b[1;32m 530\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0mprocessor\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mprocess_response\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mget\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mprotocol\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m[\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 531\u001b[0m \u001b[0mmeth\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mgetattr\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mprocessor\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mmeth_name\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 532\u001b[0;31m \u001b[0mresponse\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mmeth\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mreq\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mresponse\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 533\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 534\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mresponse\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/urllib/request.py\u001b[0m in \u001b[0;36mhttp_response\u001b[0;34m(self, request, response)\u001b[0m\n\u001b[1;32m 640\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0;34m(\u001b[0m\u001b[0;36m200\u001b[0m \u001b[0;34m<=\u001b[0m \u001b[0mcode\u001b[0m \u001b[0;34m<\u001b[0m \u001b[0;36m300\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 641\u001b[0m response = self.parent.error(\n\u001b[0;32m--> 642\u001b[0;31m 'http', request, response, code, msg, hdrs)\n\u001b[0m\u001b[1;32m 643\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 644\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mresponse\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/urllib/request.py\u001b[0m in \u001b[0;36merror\u001b[0;34m(self, proto, *args)\u001b[0m\n\u001b[1;32m 562\u001b[0m \u001b[0mhttp_err\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;36m0\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 563\u001b[0m \u001b[0margs\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m(\u001b[0m\u001b[0mdict\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mproto\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mmeth_name\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;34m+\u001b[0m \u001b[0margs\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 564\u001b[0;31m \u001b[0mresult\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_call_chain\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 565\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mresult\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 566\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mresult\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/urllib/request.py\u001b[0m in \u001b[0;36m_call_chain\u001b[0;34m(self, chain, kind, meth_name, *args)\u001b[0m\n\u001b[1;32m 502\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0mhandler\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mhandlers\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 503\u001b[0m \u001b[0mfunc\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mgetattr\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mhandler\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mmeth_name\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 504\u001b[0;31m \u001b[0mresult\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mfunc\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 505\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mresult\u001b[0m \u001b[0;32mis\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0;32mNone\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 506\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mresult\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/urllib/request.py\u001b[0m in \u001b[0;36mhttp_error_302\u001b[0;34m(self, req, fp, code, msg, headers)\u001b[0m\n\u001b[1;32m 754\u001b[0m \u001b[0mfp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mclose\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 755\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 756\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mparent\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mopen\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mnew\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mtimeout\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mreq\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mtimeout\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 757\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 758\u001b[0m \u001b[0mhttp_error_301\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mhttp_error_303\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mhttp_error_307\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mhttp_error_302\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/urllib/request.py\u001b[0m in \u001b[0;36mopen\u001b[0;34m(self, fullurl, data, timeout)\u001b[0m\n\u001b[1;32m 530\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0mprocessor\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mprocess_response\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mget\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mprotocol\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m[\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 531\u001b[0m \u001b[0mmeth\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mgetattr\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mprocessor\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mmeth_name\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 532\u001b[0;31m \u001b[0mresponse\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mmeth\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mreq\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mresponse\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 533\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 534\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mresponse\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/urllib/request.py\u001b[0m in \u001b[0;36mhttp_response\u001b[0;34m(self, request, response)\u001b[0m\n\u001b[1;32m 640\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0;34m(\u001b[0m\u001b[0;36m200\u001b[0m \u001b[0;34m<=\u001b[0m \u001b[0mcode\u001b[0m \u001b[0;34m<\u001b[0m \u001b[0;36m300\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 641\u001b[0m response = self.parent.error(\n\u001b[0;32m--> 642\u001b[0;31m 'http', request, response, code, msg, hdrs)\n\u001b[0m\u001b[1;32m 643\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 644\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mresponse\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/urllib/request.py\u001b[0m in \u001b[0;36merror\u001b[0;34m(self, proto, *args)\u001b[0m\n\u001b[1;32m 562\u001b[0m \u001b[0mhttp_err\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;36m0\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 563\u001b[0m \u001b[0margs\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m(\u001b[0m\u001b[0mdict\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mproto\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mmeth_name\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;34m+\u001b[0m \u001b[0margs\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 564\u001b[0;31m \u001b[0mresult\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_call_chain\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 565\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mresult\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 566\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mresult\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/urllib/request.py\u001b[0m in \u001b[0;36m_call_chain\u001b[0;34m(self, chain, kind, meth_name, *args)\u001b[0m\n\u001b[1;32m 502\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0mhandler\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mhandlers\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 503\u001b[0m \u001b[0mfunc\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mgetattr\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mhandler\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mmeth_name\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 504\u001b[0;31m \u001b[0mresult\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mfunc\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 505\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mresult\u001b[0m \u001b[0;32mis\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0;32mNone\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 506\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mresult\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/urllib/request.py\u001b[0m in \u001b[0;36mhttp_error_302\u001b[0;34m(self, req, fp, code, msg, headers)\u001b[0m\n\u001b[1;32m 754\u001b[0m \u001b[0mfp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mclose\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 755\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 756\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mparent\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mopen\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mnew\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mtimeout\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mreq\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mtimeout\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 757\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 758\u001b[0m \u001b[0mhttp_error_301\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mhttp_error_303\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mhttp_error_307\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mhttp_error_302\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/urllib/request.py\u001b[0m in \u001b[0;36mopen\u001b[0;34m(self, fullurl, data, timeout)\u001b[0m\n\u001b[1;32m 524\u001b[0m \u001b[0mreq\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mmeth\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mreq\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 525\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 526\u001b[0;31m \u001b[0mresponse\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_open\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mreq\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mdata\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 527\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 528\u001b[0m \u001b[0;31m# post-process response\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/urllib/request.py\u001b[0m in \u001b[0;36m_open\u001b[0;34m(self, req, data)\u001b[0m\n\u001b[1;32m 542\u001b[0m \u001b[0mprotocol\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mreq\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mtype\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 543\u001b[0m result = self._call_chain(self.handle_open, protocol, protocol +\n\u001b[0;32m--> 544\u001b[0;31m '_open', req)\n\u001b[0m\u001b[1;32m 545\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mresult\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 546\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mresult\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/urllib/request.py\u001b[0m in \u001b[0;36m_call_chain\u001b[0;34m(self, chain, kind, meth_name, *args)\u001b[0m\n\u001b[1;32m 502\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0mhandler\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mhandlers\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 503\u001b[0m \u001b[0mfunc\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mgetattr\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mhandler\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mmeth_name\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 504\u001b[0;31m \u001b[0mresult\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mfunc\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 505\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mresult\u001b[0m \u001b[0;32mis\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0;32mNone\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 506\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mresult\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/urllib/request.py\u001b[0m in \u001b[0;36mhttps_open\u001b[0;34m(self, req)\u001b[0m\n\u001b[1;32m 1359\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0mhttps_open\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mreq\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1360\u001b[0m return self.do_open(http.client.HTTPSConnection, req,\n\u001b[0;32m-> 1361\u001b[0;31m context=self._context, check_hostname=self._check_hostname)\n\u001b[0m\u001b[1;32m 1362\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1363\u001b[0m \u001b[0mhttps_request\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mAbstractHTTPHandler\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mdo_request_\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/urllib/request.py\u001b[0m in \u001b[0;36mdo_open\u001b[0;34m(self, http_class, req, **http_conn_args)\u001b[0m\n\u001b[1;32m 1319\u001b[0m \u001b[0;32mexcept\u001b[0m \u001b[0mOSError\u001b[0m \u001b[0;32mas\u001b[0m \u001b[0merr\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0;31m# timeout error\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1320\u001b[0m \u001b[0;32mraise\u001b[0m \u001b[0mURLError\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0merr\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 1321\u001b[0;31m \u001b[0mr\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mh\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mgetresponse\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 1322\u001b[0m \u001b[0;32mexcept\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1323\u001b[0m \u001b[0mh\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mclose\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/http/client.py\u001b[0m in \u001b[0;36mgetresponse\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 1329\u001b[0m \u001b[0;32mtry\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1330\u001b[0m \u001b[0;32mtry\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 1331\u001b[0;31m \u001b[0mresponse\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mbegin\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 1332\u001b[0m \u001b[0;32mexcept\u001b[0m \u001b[0mConnectionError\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1333\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mclose\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/http/client.py\u001b[0m in \u001b[0;36mbegin\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 295\u001b[0m \u001b[0;31m# read until we get a non-100 response\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 296\u001b[0m \u001b[0;32mwhile\u001b[0m \u001b[0;32mTrue\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 297\u001b[0;31m \u001b[0mversion\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mstatus\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mreason\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_read_status\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 298\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mstatus\u001b[0m \u001b[0;34m!=\u001b[0m \u001b[0mCONTINUE\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 299\u001b[0m \u001b[0;32mbreak\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/http/client.py\u001b[0m in \u001b[0;36m_read_status\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 256\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 257\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0m_read_status\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 258\u001b[0;31m \u001b[0mline\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mstr\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mfp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mreadline\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0m_MAXLINE\u001b[0m \u001b[0;34m+\u001b[0m \u001b[0;36m1\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m\"iso-8859-1\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 259\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mlen\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mline\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;34m>\u001b[0m \u001b[0m_MAXLINE\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 260\u001b[0m \u001b[0;32mraise\u001b[0m \u001b[0mLineTooLong\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"status line\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/socket.py\u001b[0m in \u001b[0;36mreadinto\u001b[0;34m(self, b)\u001b[0m\n\u001b[1;32m 584\u001b[0m \u001b[0;32mwhile\u001b[0m \u001b[0;32mTrue\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 585\u001b[0m \u001b[0;32mtry\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 586\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_sock\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mrecv_into\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mb\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 587\u001b[0m \u001b[0;32mexcept\u001b[0m \u001b[0mtimeout\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 588\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_timeout_occurred\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;32mTrue\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/ssl.py\u001b[0m in \u001b[0;36mrecv_into\u001b[0;34m(self, buffer, nbytes, flags)\u001b[0m\n\u001b[1;32m 1000\u001b[0m \u001b[0;34m\"non-zero flags not allowed in calls to recv_into() on %s\"\u001b[0m \u001b[0;34m%\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1001\u001b[0m self.__class__)\n\u001b[0;32m-> 1002\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mread\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mnbytes\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mbuffer\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 1003\u001b[0m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1004\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0msocket\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mrecv_into\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mbuffer\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mnbytes\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mflags\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/ssl.py\u001b[0m in \u001b[0;36mread\u001b[0;34m(self, len, buffer)\u001b[0m\n\u001b[1;32m 863\u001b[0m \u001b[0;32mraise\u001b[0m \u001b[0mValueError\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"Read on closed or unwrapped SSL socket.\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 864\u001b[0m \u001b[0;32mtry\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 865\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_sslobj\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mread\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mlen\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mbuffer\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 866\u001b[0m \u001b[0;32mexcept\u001b[0m \u001b[0mSSLError\u001b[0m \u001b[0;32mas\u001b[0m \u001b[0mx\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 867\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mx\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m0\u001b[0m\u001b[0;34m]\u001b[0m \u001b[0;34m==\u001b[0m \u001b[0mSSL_ERROR_EOF\u001b[0m \u001b[0;32mand\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msuppress_ragged_eofs\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/ssl.py\u001b[0m in \u001b[0;36mread\u001b[0;34m(self, len, buffer)\u001b[0m\n\u001b[1;32m 623\u001b[0m \"\"\"\n\u001b[1;32m 624\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mbuffer\u001b[0m \u001b[0;32mis\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0;32mNone\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 625\u001b[0;31m \u001b[0mv\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_sslobj\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mread\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mlen\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mbuffer\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 626\u001b[0m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 627\u001b[0m \u001b[0mv\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_sslobj\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mread\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mlen\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;31mKeyboardInterrupt\u001b[0m: " - ] - } - ], - "source": [ - "# Collects a list of all external URLs found on the site\n", - "allExtLinks = set()\n", - "allIntLinks = set()\n", - "\n", - "\n", - "def getAllExternalLinks(siteUrl):\n", - " html = urlopen(siteUrl)\n", - " domain = '{}://{}'.format(urlparse(siteUrl).scheme,\n", - " urlparse(siteUrl).netloc)\n", - " bs = BeautifulSoup(html, 'html.parser')\n", - " internalLinks = getInternalLinks(bs, domain)\n", - " externalLinks = getExternalLinks(bs, domain)\n", - "\n", - " for link in externalLinks:\n", - " if link not in allExtLinks:\n", - " allExtLinks.add(link)\n", - " print(link)\n", - " for link in internalLinks:\n", - " if link not in allIntLinks:\n", - " allIntLinks.add(link)\n", - " getAllExternalLinks(link)\n", - "\n", - "\n", - "allIntLinks.add('http://oreilly.com')\n", - "getAllExternalLinks('http://oreilly.com')" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.6.1" - } - }, - "nbformat": 4, - "nbformat_minor": 2 -} diff --git a/Chapter04_CrawlingModels.ipynb b/Chapter04_CrawlingModels.ipynb deleted file mode 100644 index 4659928..0000000 --- a/Chapter04_CrawlingModels.ipynb +++ /dev/null @@ -1,1910 +0,0 @@ -{ - "cells": [ - { - "cell_type": "code", - "execution_count": 2, - "metadata": {}, - "outputs": [], - "source": [ - "import requests\n", - "from bs4 import BeautifulSoup" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "metadata": {}, - "outputs": [], - "source": [ - "def getPage(url):\n", - " \"\"\"\n", - " Utilty function used to get a Beautiful Soup object from a given URL\n", - " \"\"\"\n", - "\n", - " session = requests.Session()\n", - " headers = {'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.95 Safari/537.36',\n", - " 'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8'}\n", - " try:\n", - " req = session.get(url, headers=headers)\n", - " except requests.exceptions.RequestException:\n", - " return None\n", - " bs = BeautifulSoup(req.text, 'html.parser')\n", - " return bs" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Dealing with different website layouts" - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Title: Delivering inclusive urban access: 3 uncomfortable truths\n", - "URL: https://www.brookings.edu/blog/future-development/2018/01/26/delivering-inclusive-urban-access-3-uncomfortable-truths/\n", - "\n", - "\n", - "The past few decades have been filled with a deep optimism about the role of cities and suburbs across the world. These engines of economic growth host a majority of world population, are major drivers of economic innovation, and have created pathways to opportunities for untold amounts of people.\t\n", - "Authors\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "Jeffrey Gutman\n", - "Senior Fellow - Global Economy and Development\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "Adie Tomer\n", - "Fellow - Metropolitan Policy Program\n", - "\n", - " Twitter\n", - "AdieTomer\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "But all is not well within our so-called Urban Century. Rapid urbanization, rising gentrification, concentrated poverty, and shortages of basic infrastructure have combined to create spatial inequity in cities and suburbs across the globe. The challenges of housing, moving, and employing so many people have led to longer travel times, rising housing costs, and unsustainable public spending. Moreover, policymakers are questioning traditional policies and approaches.\n", - "The past couple years, we’ve led a project at Brookings—Moving to Access—that responds to these spatial challenges by promoting the idea of connecting people to opportunities as a new foundational principle for 21st century urban development. This principle of accessibility is meant to be a corollary to the natural questions we ask ourselves everyday about the communities where we live: Is this the best location to access employment? Are there nearby schools and health services? Is there a market in the neighborhood? How can I get from here to there? Such choices are valid for those with sufficient income. But what about those with more limited resources and thus choices in terms of affordable housing and affordable transport?\n", - "While economists, planners, and engineers have promoted accessibility for decades, the concept is more often found in textbooks than formal urban policies. In the first stage of this project, we worked with a team of experts to determine what has stalled practical implementation of appropriate policies and practices? “Delivering Inclusive Access,” a report of this initial work, offers a synthesis of what we found and where we believe researchers, policymakers, and practitioners can take this work next. The paper found three central challenges.\n", - "The fallacy of the single indicator\n", - "The current transport regime’s approach to measurement is one of outward elegance: The dominant pursuit is speed, and the primary way to measure it is congestion (or what slows us down). Many have come to label this approach a pursuit of “mobility.” It is seen through different, but often singular, measures of how congestion affects a specific roadway. Such singular measures are easily interpreted by policymakers and civil society and can be translated directly into economic analysis of related investments through timesavings. They also conveniently serve such purposes as the internationally agreed-upon Sustainable Development Goals. Yet they actually don’t answer the fundamental question of who can reach where, in how much time, and at what cost.\n", - "\n", - "\n", - "Related Content\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " \n", - "\n", - "\n", - "\n", - "Report\n", - "Delivering inclusive access\n", - "\n", - "Jeffrey Gutman, Adie Tomer, Joseph Kane, Nirav Patel, and Ranjitha Shivaram\n", - "August 2017\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " \n", - "\n", - "\n", - "\n", - "Report\n", - "Measuring performance: Accessibility metrics in metropolitan regions around the world\n", - "\n", - "Geneviève Boisjoly and Ahmed El-Geneidy\n", - "August 2017\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " \n", - "\n", - "\n", - "\n", - "Report\n", - "Is better access key to inclusive cities?\n", - "\n", - "Jeffrey Gutman and Nirav Patel\n", - "Wednesday, October 5, 2016\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "Accessibility measures can answer those questions, but not through any one measure. First, the variable social, economic, and political contexts related to access mean searching for a single magical indicator is counterintuitive. For example, a wealthy, automobile-centric region like Dallas, Texas, may have very different measurable goals than a denser, poorer region like Dar es Salaam, Tanzania. Second, academic literature is now rife with such complex measures that it could be difficult to communicate their methodology and results with practitioners. The development of a suite of indicators could offer a menu for policymakers and practitioners to judge accessibility based on local objectives, local conditions, and local capacity.\n", - "The danger of excessive localization\n", - "Decentralization and empowering local communities is fast becoming a mantra of governance experts across the world, from development practitioners at institutions like the World Bank to city-focused theorists. And for good reason: delegating policy design and fiscal authority directly to the local level helps ensure policies and practices respond to local needs and desires. Yet as urban areas spillover into contiguous and often numerous municipalities, local independence can introduce certain challenges, especially relating to social and environmental externalities. When it comes to transportation and land development, interests of one municipality are often different from its neighbors. And these divergent development goals can exacerbate accessibility challenges within growing regions, spreading people, housing jobs, and other activities further from one another.\n", - "Addressing spatial inequities in land use and real estate markets require a broader approach to horizontal governance. While there are examples of metropolitan transport authorities, there is less willingness to consider metropolitan or horizontal governance of land use and fiscal policies. For example, should housing be coordinated across an entire region?\n", - "Countries with a more centralized top down approach to governance, such as France and Germany, have greater ability to formulate metropolitan governance than more decentralized countries such as the U.S. This is not to say there is a one-size-fits-all approach, but there is an opportunity to test different solutions within different governance contexts, comparing how effective each model is to promote spatial inclusivity.\n", - "The finance community is missing in action\n", - "Financing is a central topic in infrastructure circles. As maintenance bills from the automobile era come due, populations continue to grow, and fiscal budgets are tight, how can urban areas afford to build enough infrastructure to support future economic growth? In response, new approaches are evolving in fiscal instruments, such as value capture and private-public partnerships. Missing in these discussions, however, are the implications for inclusive access.\n", - "We conducted a multi-decade review of past academic literature on access and found that there is no clear substantive discussion of accessibility from a fiscal perspective. While urban transport and land use professionals clearly recognize their interrelationship in achieving inclusive accessibility, at least in theory, the fiscal and finance professionals generally ignore the implications of their instruments with regard to inclusivity. The multilateral development banks and their economic evaluations have ignored the distributive impacts until very recently. And the efforts of some countries to incorporate measures through multi-criteria analysis have had limited impact.\n", - "This gap must be resolved in any effort toward inclusive urban development. There is little doubt that fiscal approaches must carefully assess who ultimately pays and that alternative finance instruments should be adapted to foster access for all.\n", - "Going forward\n", - "Our research confirms that there are enormous opportunities to advance accessibility theory into practice. At this point, what is desperately needed is to launch a range of case studies that deal with these issues and challenges under different geographic, governance, and economic contexts. The good news is that many initiatives are already underway, and more robust communication channels and technology can support such efforts. In Chicago, researchers created an online platform to visually explore accessibility by location. In Bogota, researchers evaluated how affordability is a key principle of access. And in Cairo and Kigali, researchers used open tools to achieve new insights for accessibility. Sharing the results of these case studies could lead to a new level of cross-disciplinary approaches to improve accessibility and lessen the effects of spatial inequity.\n", - "\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Title: The Men Who Want to Live Forever\n", - "URL: https://www.nytimes.com/2018/01/25/opinion/sunday/silicon-valley-immortality.html\n", - "\n", - "Would you like to live forever? Some billionaires, already invincible in every other way, have decided that they also deserve not to die. Today several biotech companies, fueled by Silicon Valley fortunes, are devoted to “life extension” — or as some put it, to solving “the problem of death.”\n", - "It’s a cause championed by the tech billionaire Peter Thiel, the TED Talk darling Aubrey de Gray, Google’s billion-dollar Calico longevity lab and investment by Amazon’s Jeff Bezos. The National Academy of Medicine, an independent group, recently dedicated funding to “end aging forever.”\n", - "As the longevity entrepreneur Arram Sabeti told The New Yorker: “The proposition that we can live forever is obvious. It doesn’t violate the laws of physics, so we can achieve it.” Of all the slightly creepy aspects to this trend, the strangest is the least noticed: The people publicly championing life extension are mainly men.\n", - "Not all of them, of course. In 2009, Elizabeth Blackburn received the Nobel Prize for her work on telomeres, protein caps on chromosomes that may be a key to understanding aging. Cynthia Kenyon, the vice president for aging research at Calico, studied life extension long before it was cool; her former protégée, Laura Deming, now runs a venture capital fund for the cause. But these women are focused on curbing age-related pathology, a concept about as controversial as cancer research. They do not appear thirsty for the Fountain of Youth.\n", - "Professor Blackburn’s new book on telomeres couldn’t be clearer. “Does our research show that by maintaining your telomeres you will live into your hundreds?” it says. “No. Everyone’s cells become old and eventually we die.” Ms. Kenyon once described her research’s goal as “to just have a healthy life and then turn out the lights.” Even Ms. Deming, a 23-year-old prodigy who worked in Ms. Kenyon’s lab at age 12, points out that “aging is innately important to us.”\n", - "Few of these experts come close to matching the gaudy statements of the longevity investor and “biohacker” Dave Asprey, who has told journalists, “I decided that I was just not going to die.” Or those of Brian Hanley, a microbiologist who has tested an anti-aging gene therapy he developed on himself, who claimed: “There’s a bunch of things that will need to be done to achieve life spans into at least hundreds of years. But we’ll get there.” Or of the 74-year-old fashion mogul Peter Nygard, who during a promotional clip receives injections of his own stem cells to reverse his aging while declaring: “Ponce de León had the right idea. He was just too early. That was then. This is now.”\n", - "I came across Mr. Nygard’s ode to human endurance three years ago while beginning research on a novel about a woman who can’t die, and watching that video allowed me to experience something close to life extension. As Mr. Nygard compared himself to Leonardo da Vinci and Benjamin Franklin while dancing with a bevy of models — or as a voice-over explained, “living a life most can only dream of” — nine minutes of YouTube expanded into a vapid eternity, where time melted into a vortex of solipsism.\n", - "At that time I was immersed in caring for my four young children, and this paean to everlasting youth seemed especially stupid. I recall thinking that if this was eternal life, death didn’t seem that bad.\n", - "But now, as powerful men have begun falling like dominoes under accusations of sexual assault, that video with its young women clustered around an elderly multimillionaire has haunted me anew. As I recall my discomfort with the proclamations of longevity-driven men who hope to achieve “escape velocity,” I think of the astonishing hubris of the Harvey Weinsteins of the world, those who saw young women’s bodies as theirs for the taking.\n", - "Much has been said about why we allowed such behavior to go unchecked. What has remained unsaid, because it is so obvious, is what would make someone so shameless in the first place: These people believed they were invincible. They saw their own bodies as entirely theirs and other people’s bodies as at their disposal; apparently nothing in their lives led them to believe otherwise.\n", - "Historically, this is a mistake that few women would make, because until very recently, the physical experience of being a woman entailed exactly the opposite — and not only because women have to hold their keys in self-defense while walking through parking lots at night. It’s only very recently that women have widely participated in public life, but it’s even more recently that men have been welcome, or even expected, to provide physical care for vulnerable people.\n", - "Only for a nanosecond of human history have men even slightly shared what was once exclusively a woman’s burden: the relentless daily labor of caring for another person’s body, the life-preserving work of cleaning feces and vomit, the constant cycle of cooking and feeding and blanketing and bathing, whether for the young, the ill or the old. For nearly as long as there have been humans, being a female human has meant a daily nonoptional immersion in the fragility of human life and the endless effort required to sustain it.\n", - "Obviously not everyone who provides care for others is a saint. But engaging in that daily devotion, or even living with its expectation, has enormous potential to change a person. It forces one to constantly imagine the world from someone else’s point of view: Is he hungry? Maybe she’s tired. Is his back hurting him? What is she trying to say?\n", - "The most obvious cure for today’s gender inequities is to put more women in power. But if we really hope to create an equal society, we will also need more men to care for the powerless — more women in the boardroom, but also more men at the nurses’ station and the changing table, immersed in daily physical empathy. If that sounds like an evolutionary impossibility, well, it doesn’t violate the laws of physics, so we can achieve it. It is surely worth at least as much investment as defeating death.\n", - "Perhaps it takes the promise of immortality to inspire the self-absorbed to invest in unsexy work like Alzheimer’s research. If so, we may all one day bless the inane death-defiance as a means to a worthy end.\n", - "But men who hope to live forever might pause on their eternal journey to consider the frightening void at invincibility’s core. Death is the ultimate vulnerability. It is the moment when all of us must confront exactly what so many women have known all too well: You are a body, only a body, and nothing more.\n" - ] - } - ], - "source": [ - "import requests\n", - "\n", - "class Content:\n", - " def __init__(self, url, title, body):\n", - " self.url = url\n", - " self.title = title\n", - " self.body = body\n", - "\n", - "\n", - "def getPage(url):\n", - " req = requests.get(url)\n", - " return BeautifulSoup(req.text, 'html.parser')\n", - "\n", - "\n", - "def scrapeNYTimes(url):\n", - " bs = getPage(url)\n", - " title = bs.find('h1').text\n", - " lines = bs.select('div.StoryBodyCompanionColumn div p')\n", - " body = '\\n'.join([line.text for line in lines])\n", - " return Content(url, title, body)\n", - "\n", - "def scrapeBrookings(url):\n", - " bs = getPage(url)\n", - " title = bs.find('h1').text\n", - " body = bs.find('div', {'class', 'post-body'}).text\n", - " return Content(url, title, body)\n", - "\n", - "\n", - "url = 'https://www.brookings.edu/blog/future-development/2018/01/26/delivering-inclusive-urban-access-3-uncomfortable-truths/'\n", - "content = scrapeBrookings(url)\n", - "print('Title: {}'.format(content.title))\n", - "print('URL: {}\\n'.format(content.url))\n", - "print(content.body)\n", - "\n", - "url = 'https://www.nytimes.com/2018/01/25/opinion/sunday/silicon-valley-immortality.html'\n", - "content = scrapeNYTimes(url)\n", - "print('Title: {}'.format(content.title))\n", - "print('URL: {}\\n'.format(content.url))\n", - "print(content.body)" - ] - }, - { - "cell_type": "code", - "execution_count": 40, - "metadata": {}, - "outputs": [], - "source": [ - "class Content:\n", - " \"\"\"\n", - " Common base class for all articles/pages\n", - " \"\"\"\n", - " def __init__(self, url, title, body):\n", - " self.url = url\n", - " self.title = title\n", - " self.body = body\n", - "\n", - " def print(self):\n", - " \"\"\"\n", - " Flexible printing function controls output\n", - " \"\"\"\n", - " print('URL: {}'.format(self.url))\n", - " print('TITLE: {}'.format(self.title))\n", - " print('BODY:\\n{}'.format(self.body))\n", - "\n", - "class Website:\n", - " \"\"\" \n", - " Contains information about website structure\n", - " \"\"\"\n", - "\n", - " def __init__(self, name, url, titleTag, bodyTag):\n", - " self.name = name\n", - " self.url = url\n", - " self.titleTag = titleTag\n", - " self.bodyTag = bodyTag" - ] - }, - { - "cell_type": "code", - "execution_count": 41, - "metadata": {}, - "outputs": [], - "source": [ - "import requests\n", - "from bs4 import BeautifulSoup\n", - "\n", - "\n", - "class Crawler:\n", - "\n", - " def getPage(self, url):\n", - " try:\n", - " req = requests.get(url)\n", - " except requests.exceptions.RequestException:\n", - " return None\n", - " return BeautifulSoup(req.text, 'html.parser')\n", - "\n", - " def safeGet(self, pageObj, selector):\n", - " \"\"\"\n", - " Utilty function used to get a content string from a Beautiful Soup\n", - " object and a selector. Returns an empty string if no object\n", - " is found for the given selector\n", - " \"\"\"\n", - " selectedElems = pageObj.select(selector)\n", - " if selectedElems is not None and len(selectedElems) > 0:\n", - " return '\\n'.join([elem.get_text() for elem in selectedElems])\n", - " return ''\n", - "\n", - " def parse(self, site, url):\n", - " \"\"\"\n", - " Extract content from a given page URL\n", - " \"\"\"\n", - " bs = self.getPage(url)\n", - " if bs is not None:\n", - " title = self.safeGet(bs, site.titleTag)\n", - " body = self.safeGet(bs, site.bodyTag)\n", - " if title != '' and body != '':\n", - " content = Content(url, title, body)\n", - " content.print()" - ] - }, - { - "cell_type": "code", - "execution_count": 42, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "title is:\n", - "Learning Python, 5th Edition \n", - "Body is:\n", - "\n", - "Get a comprehensive, in-depth introduction to the core Python language with this hands-on book. Based on author Mark Lutz’s popular training course, this updated fifth edition will help you quickly write efficient, high-quality code with Python. It’s an ideal way to begin, whether you’re new to programming or a professional developer versed in other languages. \n", - "\n", - "Complete with quizzes, exercises, and helpful illustrations, this easy-to-follow, self-paced tutorial gets you started with both Python 2.7 and 3.3— the latest releases in the 3.X and 2.X lines—plus all other releases in common use today. You’ll also learn some advanced language features that recently have become more common in Python code.\n", - "\n", - "Explore Python’s major built-in object types such as numbers, lists, and dictionaries \n", - "Create and process objects with Python statements, and learn Python’s general syntax model\n", - "Use functions to avoid code redundancy and package code for reuse\n", - "Organize statements, functions, and other tools into larger components with modules \n", - "Dive into classes: Python’s object-oriented programming tool for structuring code\n", - "Write large programs with Python’s exception-handling model and development tools\n", - "Learn advanced Python tools, including decorators, descriptors, metaclasses, and Unicode processing\n", - "\n", - "\n", - "URL: http://shop.oreilly.com/product/0636920028154.do\n", - "TITLE: Learning Python, 5th Edition \n", - "BODY:\n", - "\n", - "Get a comprehensive, in-depth introduction to the core Python language with this hands-on book. Based on author Mark Lutz’s popular training course, this updated fifth edition will help you quickly write efficient, high-quality code with Python. It’s an ideal way to begin, whether you’re new to programming or a professional developer versed in other languages. \n", - "\n", - "Complete with quizzes, exercises, and helpful illustrations, this easy-to-follow, self-paced tutorial gets you started with both Python 2.7 and 3.3— the latest releases in the 3.X and 2.X lines—plus all other releases in common use today. You’ll also learn some advanced language features that recently have become more common in Python code.\n", - "\n", - "Explore Python’s major built-in object types such as numbers, lists, and dictionaries \n", - "Create and process objects with Python statements, and learn Python’s general syntax model\n", - "Use functions to avoid code redundancy and package code for reuse\n", - "Organize statements, functions, and other tools into larger components with modules \n", - "Dive into classes: Python’s object-oriented programming tool for structuring code\n", - "Write large programs with Python’s exception-handling model and development tools\n", - "Learn advanced Python tools, including decorators, descriptors, metaclasses, and Unicode processing\n", - "\n", - "\n", - "title is:\n", - "EPA chief wants scientists to debate climate on TV\n", - "Body is:\n", - "WASHINGTON (Reuters) - The U.S. Environmental Protection Agency is in the early stages of launching a debate about climate change that could air on television – challenging scientists to prove the widespread view that global warming is a serious threat, the head of the agency said. The move comes as the administration of President Donald Trump seeks to roll back a slew of Obama-era regulations limiting carbon dioxide emissions from fossil fuels, and begins a withdrawal from the Paris Climate Agreement - a global pact to stem planetary warming through emissions cuts. “There are lots of questions that have not been asked and answered (about climate change),” EPA Administrator Scott Pruitt told Reuters in an interview late on Monday. “Who better to do that than a group of scientists... getting together and having a robust discussion for all the world to see,” he added without explaining how the scientists would be chosen. Asked if he thought the debate should be televised, Pruitt said: “I think so. I think so. I mean, I don’t know yet, but you want this to be open to the world. You want this to be on full display. I think the American people would be very interested in consuming that. I think they deserve it.” Pruitt, one of the most controversial figures in the Trump administration, has repeatedly expressed doubts about climate change – one of the main points of contention in his narrow confirmation by the Senate. While acknowledging the planet is warming, Pruitt says he questions the gravity of the problem and the need for regulations that require companies to take costly measures to reduce their carbon footprint. “It is a question about how much we contribute to it. How do we measure that with precision? And by the way, are we on an unsustainable path? And is it causing an existential threat?” he said in the interview. Since taking up his role at EPA, he has emerged as one of the more prolific Trump cabinet appointees, taking steps to undo more than two dozen regulations, and influencing Trump’s decision to pull the United States from the Paris climate change deal, agreed by nearly 200 countries in 2015. Pruitt rejected global criticism of the United States for pulling out of the climate deal, which Trump has said would have cost America trillions of dollars without benefit. Environmental Protection Agency Administrator Scott Pruitt waves after an interview for Reuters at his office in Washington, U.S., July 10, 2017. REUTERS/Yuri Gripas“We have nothing to be apologetic about,” Pruitt said. “It was absolutely a decision of courage and fortitude and truly represented an America First strategy with respect to how we are leading on this issue.” Pruitt said the United States had already cut its carbon output to the lowest levels in nearly 25 years without mandates, thanks mainly to increased use of natural gas - which burns cleaner than coal. “RED TEAM, BLUE TEAM” TACTICS Slideshow (4 Images)Pruitt said his desire for the agency to host an ongoing climate change debate was inspired by two articles published in April – one in the Wall Street Journal by theoretical physicist Steve Koonin, who served as undersecretary of energy under Obama – and one by conservative columnist Brett Stephens in the New York Times. Koonin’s article made the case that climate science should use the “red team-blue team” methodology used by the national security community to test assumptions. Stephens’ article criticized claims of complete certainty in climate science, saying that it “traduces the spirit of science.” Pruitt said scientists should not scoff at the idea of participating in these debates. Related CoverageTranscript of Reuters interview with EPA Administrator Scott Pruitt“If you’re going to win and if you’re so certain about it, come and do your deal. They shouldn’t be scared of the debate and discussion,” he said. Pruitt said debate is not necessarily aimed at undermining the 2009 “endangerment finding,” the scientific determination that carbon dioxide harms human health that formed the basis for the Democratic Obama administration’s regulation of greenhouse gases. He said there may be a legal basis to challenge the finding but would prefer Congress weigh in on the matter. In the interview, Pruitt added that he intended to deal “very aggressively” with automakers that use devices to cheat emissions tests, and would also seek to boost accountability for companies to clean up polluted sites under the Superfund program. He said EPA was also not ready to decide yet on a change proposed by Trump’s special adviser Carl Icahn to the U.S. biofuels program, that would shift the burden of blending biofuels like ethanol into gasoline away from refiners to companies further down the supply chain. Editing by Richard Valdmanis and Marguerita ChoyOur Standards:The Thomson Reuters Trust Principles.\n", - "URL: http://www.reuters.com/article/us-usa-epa-pruitt-idUSKBN19W2D0\n", - "TITLE: EPA chief wants scientists to debate climate on TV\n", - "BODY:\n", - "WASHINGTON (Reuters) - The U.S. Environmental Protection Agency is in the early stages of launching a debate about climate change that could air on television – challenging scientists to prove the widespread view that global warming is a serious threat, the head of the agency said. The move comes as the administration of President Donald Trump seeks to roll back a slew of Obama-era regulations limiting carbon dioxide emissions from fossil fuels, and begins a withdrawal from the Paris Climate Agreement - a global pact to stem planetary warming through emissions cuts. “There are lots of questions that have not been asked and answered (about climate change),” EPA Administrator Scott Pruitt told Reuters in an interview late on Monday. “Who better to do that than a group of scientists... getting together and having a robust discussion for all the world to see,” he added without explaining how the scientists would be chosen. Asked if he thought the debate should be televised, Pruitt said: “I think so. I think so. I mean, I don’t know yet, but you want this to be open to the world. You want this to be on full display. I think the American people would be very interested in consuming that. I think they deserve it.” Pruitt, one of the most controversial figures in the Trump administration, has repeatedly expressed doubts about climate change – one of the main points of contention in his narrow confirmation by the Senate. While acknowledging the planet is warming, Pruitt says he questions the gravity of the problem and the need for regulations that require companies to take costly measures to reduce their carbon footprint. “It is a question about how much we contribute to it. How do we measure that with precision? And by the way, are we on an unsustainable path? And is it causing an existential threat?” he said in the interview. Since taking up his role at EPA, he has emerged as one of the more prolific Trump cabinet appointees, taking steps to undo more than two dozen regulations, and influencing Trump’s decision to pull the United States from the Paris climate change deal, agreed by nearly 200 countries in 2015. Pruitt rejected global criticism of the United States for pulling out of the climate deal, which Trump has said would have cost America trillions of dollars without benefit. Environmental Protection Agency Administrator Scott Pruitt waves after an interview for Reuters at his office in Washington, U.S., July 10, 2017. REUTERS/Yuri Gripas“We have nothing to be apologetic about,” Pruitt said. “It was absolutely a decision of courage and fortitude and truly represented an America First strategy with respect to how we are leading on this issue.” Pruitt said the United States had already cut its carbon output to the lowest levels in nearly 25 years without mandates, thanks mainly to increased use of natural gas - which burns cleaner than coal. “RED TEAM, BLUE TEAM” TACTICS Slideshow (4 Images)Pruitt said his desire for the agency to host an ongoing climate change debate was inspired by two articles published in April – one in the Wall Street Journal by theoretical physicist Steve Koonin, who served as undersecretary of energy under Obama – and one by conservative columnist Brett Stephens in the New York Times. Koonin’s article made the case that climate science should use the “red team-blue team” methodology used by the national security community to test assumptions. Stephens’ article criticized claims of complete certainty in climate science, saying that it “traduces the spirit of science.” Pruitt said scientists should not scoff at the idea of participating in these debates. Related CoverageTranscript of Reuters interview with EPA Administrator Scott Pruitt“If you’re going to win and if you’re so certain about it, come and do your deal. They shouldn’t be scared of the debate and discussion,” he said. Pruitt said debate is not necessarily aimed at undermining the 2009 “endangerment finding,” the scientific determination that carbon dioxide harms human health that formed the basis for the Democratic Obama administration’s regulation of greenhouse gases. He said there may be a legal basis to challenge the finding but would prefer Congress weigh in on the matter. In the interview, Pruitt added that he intended to deal “very aggressively” with automakers that use devices to cheat emissions tests, and would also seek to boost accountability for companies to clean up polluted sites under the Superfund program. He said EPA was also not ready to decide yet on a change proposed by Trump’s special adviser Carl Icahn to the U.S. biofuels program, that would shift the burden of blending biofuels like ethanol into gasoline away from refiners to companies further down the supply chain. Editing by Richard Valdmanis and Marguerita ChoyOur Standards:The Thomson Reuters Trust Principles.\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "title is:\n", - "Idea to Retire: Old methods of policy education\n", - "Idea to Retire: Old methods of policy education\n", - "Body is:\n", - "\n", - "Public policy and public affairs schools aim to train competent creators and implementers of government policy. While drawing on the principles that gird our economic and political systems to provide a well-rounded education, like law schools and business schools, policy schools provide professional training. They are quite distinct from graduate programs in political science or economics which aim to train the next generation of academics. As professional training programs, they add value by imparting both the skills which are relevant to current employers, and skills which we know will be relevant as organizations and societies evolve. \n", - "The relevance of the skills that policy programs impart to address problems of today and tomorrow bears further discussion. We are living through an era in which societies are increasingly interconnected. The wide-scale adoption of devices such as the smartphone is having a profound impact on our culture, communities, and economy. The use of social and digital media and associated means of communication enabled by mobile devices is changing the tone, content, and geographic scope of our conversations, modifying how information is generated and consumed, and changing the very nature of citizen engagement. \n", - "Information technology-based platforms provisioned by private providers such as Facebook, Google, Uber, and Lyft maintain information about millions of citizens and enable services such as transportation that were mediated in the past solely by the public sector. Surveillance for purposes of public safety via large-scale deployment of sensors also raises fundamental questions about information privacy. From technology-enabled global delivery of work to displacement and replacement of categories of work, some studies estimate that up to 47 percent of U.S. employment might be at risk of computerization with an attendant rise in income inequality. These technology-induced changes will affect every policy domain. How should policy programs best prepare students to address societal challenges in this world that is being transformed by technology? We believe the answer lies in educating students to be “men and women of intelligent action.” \n", - "A model of policy education\n", - "We begin with a skills-based model of policy education. These four essential skills address the general problems policy practitioners frequently face:\n", - "\n", - "Design skills to craft policy ideas \n", - "Analytical skills to make smart ex ante decisions \n", - "Interpersonal experience to manage policy implementation  \n", - "Evaluative skills to assess outcomes ex post and correct course if necessary\n", - "\n", - "These skills make up the policy analysis toolkit required to be data driven practitioner of “intelligent action” in any policy domain. This toolkit needs to be supplemented by an understanding of how technology is transforming societal challenges, enabling new solutions, or disrupting existing regulatory regimes. This understanding is essential to policy formulation and implementation. \n", - "Pillar 1: Design skills\n", - "As with engineering, where design precedes analysis, this first pillar seeks to educate students in thinking creatively about problems in order to devise and develop policy ideas. Using ideas derived from design, divergent and convergent thinking principles are employed to generate, explore, and arrive at a candidate set of solutions. Using Uber as an example, an approach to identify and explore the key policy issues such as convenience, costs, driver working hours, and insurance would involve interviewing and observing both incumbent taxi drivers and Uber drivers. This in turn would lead to a set of alternatives that deserve further and careful consideration.  Using these skills, candidate designs and choices that are generated can be evaluated using the policy analytic toolkit. \n", - "Pillar 2: Analytical skills\n", - "\n", - "\n", - "Related\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " \n", - "\n", - "\n", - "\n", - "TechTank\n", - "The Blockchain: What It Is and Why It Matters\n", - "\n", - "Mohit Kaushal and Sheel Tyle\n", - "Tuesday, January 13, 2015\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " \n", - "\n", - "\n", - "\n", - "TechTank\n", - "How technology is changing manufacturing\n", - "\n", - "Darrell M. West\n", - "Thursday, June 2, 2016\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " \n", - "\n", - "\n", - "\n", - "TechTank\n", - "Rural and urban America divided by broadband access\n", - "\n", - "Darrell M. West and Jack Karsten\n", - "Monday, July 18, 2016\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "At Carnegie Mellon, we are often cited in media and interrogated by peers on our approach to analytical and technology skills education. Curiosity about which skills are the “right” skills to teach policy practitioners are common, but we believe this is the wrong approach. We instead begin from the premise that policy or management decisions should be grounded in evidence.  We then determine the skills required to assemble the types of evidence that will likely be available to policy makers in the future.  In increasingly instrumented environments where citizens and infrastructure produce continuous streams of data, making sense of it all will require a somewhat different set of skills. We believe that a grounding in micro-economics, operations research, statistics, and program evaluation (aka causal inference) to be an essential core to policy programs. \n", - "New coursework will teach students to work with multi-variable data and machine learning with an emphasis on prediction. This material ought to be part of the required coursework in statistics given the importance of prediction in many policy implementation settings. Along the same lines, the ability to work with unstructured data (especially text) and data visualization will become increasingly relevant to all students, not just those students who want to specialize in data analytics. Finally, knowledge of data manipulation and analysis languages such as Python and R for analytic work will be important because data often has to be massaged and cleansed prior to analysis. An important task for programs will be to determine the competencies expected of graduates. \n", - "Pillar 3: Interpersonal experiences\n", - "The third pillar of the skills-based model is interpersonal experience, where the practiced habits of good communication and steady negotiation developed with a sound understanding of organizations, their design and their behaviors. We label these purposely as experiences rather than skills because we believe they are best practiced either in the real-world or in simulated real-world settings. It is also in this pillar where practitioners learn the knowledge necessary to become credible experts in their domain. We believe that in addition to core coursework in the area, a supplementary curriculum which provides students with opportunities to gain these experiences is an essential component of our educational model.\n", - "Pillar 4: Evaluative skills\n", - "\n", - "\n", - "Related Books\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "Constitution 3.0\n", - "\n", - "\n", - "\t\t\t\t\t\tEdited by Jeffrey Rosen and Benjamin Wittes \n", - "2013\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "The Need for Speed\n", - "\n", - "\n", - "\t\t\t\t\t\tBy Robert E. Litan and Hal J. Singer \n", - "2013\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "After the Breakup\n", - "\n", - "\n", - "\t\t\t\t\t\tBy Robert W. Crandall \n", - "2010\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "The ability to carefully diagnose the effectiveness of policy or management interventions is the fourth pillar of our model. It is insufficient to create and execute policy without measurement, and this is where both careful thought to the fundamental issues of measurement and evaluation become important. The ability to make objective judgments on the benefits, liabilities, and unintended consequences of prior policies is the goal of this set of skills. Here, sound statistical and econometric training with an understanding of the principles of causal inference is essential. In addition, program evaluation skills such as cost-benefit and financial analysis help practitioners round out their evaluation skills by considering both non-monetary and economic impacts.\n", - "What should be retired?\n", - "A skills-based approach might replace certain aspects of existing policy training.  This depends on a number of factors specific to each institution, but three generally applicable observations are clear. First, real-world experiences are a powerful way to encode domain learning as well as project management skills. Through project-based work, students can learn about institutional contexts in specific policy domains and political processes such as budgeting. Second, team-based projects allow students to learn and apply principles of management and organizational behavior. At Carnegie Mellon, we refer to these as “systems synthesis” projects, since they require students to adopt a systemic point of view and to synthesize a number of skills in their policy analysis toolkit. Third, interpersonal skills training can be practiced through activities such as weekend negotiation exercises, hackathons, and speaker series. These activities can be highly intentional and fashioned to reinforce skills rather than as a recess from the “real work” of classroom training. Since students complete graduate programs in such a short time, counseling them to focus on outcomes from day one will allow them to choose a reinforcing set of coursework and real-world experiences. \n", - "In summary, we argue for a model of policy education that views practitioners as future problem solvers. Good policy education must consider the ways in which problems will present themselves, and the ways in which answers will obscure themselves. Rigorous training grounded in the analysis of available evidence and buoyed by real-world interpersonal experiences is a sound approach to relevant, durable policy training.\n", - " \n", - "Authors\n", - "\n", - "\n", - "\n", - "\n", - "R\n", - "\n", - "\n", - "\n", - "Ramayya Krishnan\n", - "Ramayya Krishnan is the dean of H. John Heinz III College of Information Systems and Public Policy at Carnegie Mellon University where he is the W.W. Cooper and Ruth F. Cooper Professor of Management Science and Information Systems.\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "J\n", - "\n", - "\n", - "\n", - "Jon Nehlsen\n", - "Jon Nehlsen is senior director of external relations at H. John Heinz III College of Information Systems and Public Policy at Carnegie Mellon University.\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "Read other essays in the Ideas to Retire blog series here.\n", - "\n", - "URL: https://www.brookings.edu/blog/techtank/2016/03/01/idea-to-retire-old-methods-of-policy-education/\n", - "TITLE: Idea to Retire: Old methods of policy education\n", - "Idea to Retire: Old methods of policy education\n", - "BODY:\n", - "\n", - "Public policy and public affairs schools aim to train competent creators and implementers of government policy. While drawing on the principles that gird our economic and political systems to provide a well-rounded education, like law schools and business schools, policy schools provide professional training. They are quite distinct from graduate programs in political science or economics which aim to train the next generation of academics. As professional training programs, they add value by imparting both the skills which are relevant to current employers, and skills which we know will be relevant as organizations and societies evolve. \n", - "The relevance of the skills that policy programs impart to address problems of today and tomorrow bears further discussion. We are living through an era in which societies are increasingly interconnected. The wide-scale adoption of devices such as the smartphone is having a profound impact on our culture, communities, and economy. The use of social and digital media and associated means of communication enabled by mobile devices is changing the tone, content, and geographic scope of our conversations, modifying how information is generated and consumed, and changing the very nature of citizen engagement. \n", - "Information technology-based platforms provisioned by private providers such as Facebook, Google, Uber, and Lyft maintain information about millions of citizens and enable services such as transportation that were mediated in the past solely by the public sector. Surveillance for purposes of public safety via large-scale deployment of sensors also raises fundamental questions about information privacy. From technology-enabled global delivery of work to displacement and replacement of categories of work, some studies estimate that up to 47 percent of U.S. employment might be at risk of computerization with an attendant rise in income inequality. These technology-induced changes will affect every policy domain. How should policy programs best prepare students to address societal challenges in this world that is being transformed by technology? We believe the answer lies in educating students to be “men and women of intelligent action.” \n", - "A model of policy education\n", - "We begin with a skills-based model of policy education. These four essential skills address the general problems policy practitioners frequently face:\n", - "\n", - "Design skills to craft policy ideas \n", - "Analytical skills to make smart ex ante decisions \n", - "Interpersonal experience to manage policy implementation  \n", - "Evaluative skills to assess outcomes ex post and correct course if necessary\n", - "\n", - "These skills make up the policy analysis toolkit required to be data driven practitioner of “intelligent action” in any policy domain. This toolkit needs to be supplemented by an understanding of how technology is transforming societal challenges, enabling new solutions, or disrupting existing regulatory regimes. This understanding is essential to policy formulation and implementation. \n", - "Pillar 1: Design skills\n", - "As with engineering, where design precedes analysis, this first pillar seeks to educate students in thinking creatively about problems in order to devise and develop policy ideas. Using ideas derived from design, divergent and convergent thinking principles are employed to generate, explore, and arrive at a candidate set of solutions. Using Uber as an example, an approach to identify and explore the key policy issues such as convenience, costs, driver working hours, and insurance would involve interviewing and observing both incumbent taxi drivers and Uber drivers. This in turn would lead to a set of alternatives that deserve further and careful consideration.  Using these skills, candidate designs and choices that are generated can be evaluated using the policy analytic toolkit. \n", - "Pillar 2: Analytical skills\n", - "\n", - "\n", - "Related\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " \n", - "\n", - "\n", - "\n", - "TechTank\n", - "The Blockchain: What It Is and Why It Matters\n", - "\n", - "Mohit Kaushal and Sheel Tyle\n", - "Tuesday, January 13, 2015\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " \n", - "\n", - "\n", - "\n", - "TechTank\n", - "How technology is changing manufacturing\n", - "\n", - "Darrell M. West\n", - "Thursday, June 2, 2016\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " \n", - "\n", - "\n", - "\n", - "TechTank\n", - "Rural and urban America divided by broadband access\n", - "\n", - "Darrell M. West and Jack Karsten\n", - "Monday, July 18, 2016\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "At Carnegie Mellon, we are often cited in media and interrogated by peers on our approach to analytical and technology skills education. Curiosity about which skills are the “right” skills to teach policy practitioners are common, but we believe this is the wrong approach. We instead begin from the premise that policy or management decisions should be grounded in evidence.  We then determine the skills required to assemble the types of evidence that will likely be available to policy makers in the future.  In increasingly instrumented environments where citizens and infrastructure produce continuous streams of data, making sense of it all will require a somewhat different set of skills. We believe that a grounding in micro-economics, operations research, statistics, and program evaluation (aka causal inference) to be an essential core to policy programs. \n", - "New coursework will teach students to work with multi-variable data and machine learning with an emphasis on prediction. This material ought to be part of the required coursework in statistics given the importance of prediction in many policy implementation settings. Along the same lines, the ability to work with unstructured data (especially text) and data visualization will become increasingly relevant to all students, not just those students who want to specialize in data analytics. Finally, knowledge of data manipulation and analysis languages such as Python and R for analytic work will be important because data often has to be massaged and cleansed prior to analysis. An important task for programs will be to determine the competencies expected of graduates. \n", - "Pillar 3: Interpersonal experiences\n", - "The third pillar of the skills-based model is interpersonal experience, where the practiced habits of good communication and steady negotiation developed with a sound understanding of organizations, their design and their behaviors. We label these purposely as experiences rather than skills because we believe they are best practiced either in the real-world or in simulated real-world settings. It is also in this pillar where practitioners learn the knowledge necessary to become credible experts in their domain. We believe that in addition to core coursework in the area, a supplementary curriculum which provides students with opportunities to gain these experiences is an essential component of our educational model.\n", - "Pillar 4: Evaluative skills\n", - "\n", - "\n", - "Related Books\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "Constitution 3.0\n", - "\n", - "\n", - "\t\t\t\t\t\tEdited by Jeffrey Rosen and Benjamin Wittes \n", - "2013\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "The Need for Speed\n", - "\n", - "\n", - "\t\t\t\t\t\tBy Robert E. Litan and Hal J. Singer \n", - "2013\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "After the Breakup\n", - "\n", - "\n", - "\t\t\t\t\t\tBy Robert W. Crandall \n", - "2010\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "The ability to carefully diagnose the effectiveness of policy or management interventions is the fourth pillar of our model. It is insufficient to create and execute policy without measurement, and this is where both careful thought to the fundamental issues of measurement and evaluation become important. The ability to make objective judgments on the benefits, liabilities, and unintended consequences of prior policies is the goal of this set of skills. Here, sound statistical and econometric training with an understanding of the principles of causal inference is essential. In addition, program evaluation skills such as cost-benefit and financial analysis help practitioners round out their evaluation skills by considering both non-monetary and economic impacts.\n", - "What should be retired?\n", - "A skills-based approach might replace certain aspects of existing policy training.  This depends on a number of factors specific to each institution, but three generally applicable observations are clear. First, real-world experiences are a powerful way to encode domain learning as well as project management skills. Through project-based work, students can learn about institutional contexts in specific policy domains and political processes such as budgeting. Second, team-based projects allow students to learn and apply principles of management and organizational behavior. At Carnegie Mellon, we refer to these as “systems synthesis” projects, since they require students to adopt a systemic point of view and to synthesize a number of skills in their policy analysis toolkit. Third, interpersonal skills training can be practiced through activities such as weekend negotiation exercises, hackathons, and speaker series. These activities can be highly intentional and fashioned to reinforce skills rather than as a recess from the “real work” of classroom training. Since students complete graduate programs in such a short time, counseling them to focus on outcomes from day one will allow them to choose a reinforcing set of coursework and real-world experiences. \n", - "In summary, we argue for a model of policy education that views practitioners as future problem solvers. Good policy education must consider the ways in which problems will present themselves, and the ways in which answers will obscure themselves. Rigorous training grounded in the analysis of available evidence and buoyed by real-world interpersonal experiences is a sound approach to relevant, durable policy training.\n", - " \n", - "Authors\n", - "\n", - "\n", - "\n", - "\n", - "R\n", - "\n", - "\n", - "\n", - "Ramayya Krishnan\n", - "Ramayya Krishnan is the dean of H. John Heinz III College of Information Systems and Public Policy at Carnegie Mellon University where he is the W.W. Cooper and Ruth F. Cooper Professor of Management Science and Information Systems.\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "J\n", - "\n", - "\n", - "\n", - "Jon Nehlsen\n", - "Jon Nehlsen is senior director of external relations at H. John Heinz III College of Information Systems and Public Policy at Carnegie Mellon University.\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "Read other essays in the Ideas to Retire blog series here.\n", - "\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "title is:\n", - "Oil Boom Gives the U.S. a New Edge in Energy and Diplomacy\n", - "Body is:\n", - "HOUSTON — A substantial rise in oil prices in recent months has led to a resurgence in American oil production, enabling the country to challenge the dominance of Saudi Arabia and dampen price pressures at the pump.\n", - "The success has come in the face of efforts by Saudi Arabia and its oil allies to undercut the shale drilling spree in the United States. Those strategies backfired and ultimately ended up benefiting the oil industry.\n", - "Overcoming three years of slumping prices proved the resiliency of the shale boom. Energy companies and their financial backers were able to weather market turmoil — and the maneuvers of the global oil cartel — by adjusting exploration and extraction techniques.\n", - "After a painful shakeout in the industry that included scores of bankruptcies and a significant loss of jobs, a steadier shale-drilling industry is arising, anchored by better-financed companies.\n", - "With the price of West Texas intermediate crude above $65 a barrel, a level not seen in almost three years, the United States is becoming a dominant producer. It is able to outflank competitors in supplying growing global markets, particularly China and India, while slashing imports from the Middle East and North Africa.\n", - "This year, the United States is expected to surpass Saudi Arabia and to rival Russia as the world’s leader, with record output of over 10 million barrels a day, according to the International Energy Agency.\n", - "“This is a 180-degree turn for the United States and the impacts are being felt around the world,” said Daniel Yergin, the economic historian and author of “The Prize: The Epic Quest for Oil, Money and Power.” “This not only contributes to U.S. energy security but also contributes to world energy security by bringing new supplies to the world.”\n", - "At the same time, the United States is becoming a major exporter of natural gas, another outgrowth of the shale revolution, undercutting Russian energy dominance over Eastern Europe.\n", - "The improving energy picture comes as the Trump administration is attempting to increase offshore drilling and loosen other regulations on fossil fuel development. But just as the surge in oil and gas production in shale fields during the Barack Obama administration had little to do with Washington, the current rise is the result of private companies responding to global markets.\n", - "Shale fields can be developed relatively quickly and at modest costs relative to the giant projects, whether on land or offshore, that were once favored by big oil companies. That makes it easier to turn investment spigots on or off to adjust to market fluctuations. Companies like Exxon Mobil and Chevron are putting increasing amounts of capital in shale fields, particularly in West Texas and New Mexico.\n", - "The results go far beyond the economic, offering Washington strategic weapons once unthinkable. The United States and its allies now have a supply cushion at a time when political turmoil in Venezuela, Libya and Nigeria is threatening to interrupt flows to markets.\n", - "Only a few years ago, such threats — along with a recent pipeline failure in the North Sea and storms in the Gulf of Mexico — would have sent the price of crude soaring. Instead, the rise has been muted, and gasoline at the pump remains below $2.60 a gallon across most of the United States.\n", - "The new energy power also relieves pressure on Washington to act militarily if tensions between Iran and Saudi Arabia break out into war. And it gives Washington the leeway to apply sanctions on other producers — as it has in Russia, and may in Iran or Venezuela — with far less risk to the global economy.\n", - "It is a striking contrast to the 1970s, when Arab oil boycotts forced motorists to line up for blocks to fill their tanks and the economy went into a tailspin. Even more recently, during the presidency of George W. Bush, domestic oil output was declining so rapidly that the country set a course to replace oil with biofuels like ethanol.\n", - "Many environmentalists argue that by increasing oil and gas supplies and lowering prices for consumers, shale drilling is extending the life of fossil fuels to the detriment of the environment and the development of cleaner energy.\n", - "The shale drilling revolution has remade the global energy market, with imports from members of the Organization of the Petroleum Exporting Countries plunging by 20 percent from late 2016 to late 2017. At the same time, exports rose by hundreds of thousands of barrels a day.\n", - "Nothing like the current situation was foreseen in late 2014, when rising domestic production began weighing on global oil prices.\n", - "In response, Saudi Arabia led OPEC in a new direction. Instead of throttling back to support prices as the cartel had done so often, it left the market alone and even increased production for a time.\n", - "Prices fell below $40 a barrel, as the Saudis and their allies hoped to drive American operations out of business by making shale drilling uneconomical. American exploration quickly dropped, but the price squeeze made companies more innovative in the use of drilling technologies, robotics and sensors to maximize output and reduce costs.\n", - "While scores of smaller companies went out of business, the survivors lengthened horizontal wells to yield more oil, and used clever hedging and drilling strategies to maximize profits even when prices slumped.\n", - "The response surprised the global oil community. OPEC, Russia and allied producing countries changed course and began cutting back again in 2016.\n", - "“OPEC missed the point,” said René Ortiz, a former OPEC secretary general and former Ecuadorean energy minister. “They thought they could recover the U.S. market by bringing the prices down. Now the U.S. has gained the leading position in the world oil market regardless of what OPEC does.”\n", - "“This displacement of Saudi oil, Nigerian oil, Libyan oil and Venezuelan oil,” Mr. Ortiz concluded, “was never anticipated.”\n", - "A week ago, OPEC leaders met in Oman to discuss a probable extension of production cuts into 2019 to support prices. Their biggest obstacle is the United States.\n", - "Technological advances unlocking oil from tight rocks like shale has led to a drilling frenzy enabling a doubling of output in a decade, transforming unlikely places like North Dakota and New Mexico into world class petroleum hubs. Pipelines are being built across Texas to serve ports where oil can be pumped onto tankers headed for China, India and other markets.\n", - "Domestic production last year averaged 9.3 million barrels a day, and the Energy Department projects that the figure will climb to 10.3 million barrels a day this year, surpassing the record set in 1970. In the meantime, since a 40-year export ban was lifted in 2015, exports of American oil have risen to roughly two million barrels a day — more than many OPEC members.\n", - "The department projects an additional increase in domestic production of 500,000 barrels a day in 2019.\n", - "Concerns over climate change as well as the growing popularity of electric cars and the eventual aging of the best shale fields will probably curb production and demand over the next few decades. But in the short term, the boom has changed the landscape.\n", - "The Energy Department projects that the recent surge will hold the price of Brent crude, the global benchmark, to $60 a barrel in 2018 and $61 a barrel in 2019 — a modest increase from $54 last year. (The Brent price rose above $70 a barrel this month, but few analysts see a return to $100-a-barrel oil.)\n", - "The emerging order in the energy realm is a stable balance of power. Saudi Arabia, which essentially runs OPEC, has put a floor under the oil price — probably around $50 a barrel — with its limits on output and exports over the last four years. But now the United States, by the sheer force of its production, the supremacy of its technology, and an unmatched pipeline, refinery and storage structure, has put a ceiling to the price.\n", - "Experts note that when oil climbs to $60 a barrel and higher, as it has lately, a drilling rush commences — the national rig count has climbed by over a third in the last year — promising to refill domestic and even global energy inventories. Only a major war or other disruption is likely to send prices soaring.\n", - "“We have all suffered these depressed prices over the last two years and we are excited to see the new prices and we will respond accordingly,” said Harald Jordan, vice president for engineering at Peak Energy, a Colorado-based producer. “You will see rig activity continue to increase.”\n", - "URL: https://www.nytimes.com/2018/01/28/business/energy-environment/oil-boom.html\n", - "TITLE: Oil Boom Gives the U.S. a New Edge in Energy and Diplomacy\n", - "BODY:\n", - "HOUSTON — A substantial rise in oil prices in recent months has led to a resurgence in American oil production, enabling the country to challenge the dominance of Saudi Arabia and dampen price pressures at the pump.\n", - "The success has come in the face of efforts by Saudi Arabia and its oil allies to undercut the shale drilling spree in the United States. Those strategies backfired and ultimately ended up benefiting the oil industry.\n", - "Overcoming three years of slumping prices proved the resiliency of the shale boom. Energy companies and their financial backers were able to weather market turmoil — and the maneuvers of the global oil cartel — by adjusting exploration and extraction techniques.\n", - "After a painful shakeout in the industry that included scores of bankruptcies and a significant loss of jobs, a steadier shale-drilling industry is arising, anchored by better-financed companies.\n", - "With the price of West Texas intermediate crude above $65 a barrel, a level not seen in almost three years, the United States is becoming a dominant producer. It is able to outflank competitors in supplying growing global markets, particularly China and India, while slashing imports from the Middle East and North Africa.\n", - "This year, the United States is expected to surpass Saudi Arabia and to rival Russia as the world’s leader, with record output of over 10 million barrels a day, according to the International Energy Agency.\n", - "“This is a 180-degree turn for the United States and the impacts are being felt around the world,” said Daniel Yergin, the economic historian and author of “The Prize: The Epic Quest for Oil, Money and Power.” “This not only contributes to U.S. energy security but also contributes to world energy security by bringing new supplies to the world.”\n", - "At the same time, the United States is becoming a major exporter of natural gas, another outgrowth of the shale revolution, undercutting Russian energy dominance over Eastern Europe.\n", - "The improving energy picture comes as the Trump administration is attempting to increase offshore drilling and loosen other regulations on fossil fuel development. But just as the surge in oil and gas production in shale fields during the Barack Obama administration had little to do with Washington, the current rise is the result of private companies responding to global markets.\n", - "Shale fields can be developed relatively quickly and at modest costs relative to the giant projects, whether on land or offshore, that were once favored by big oil companies. That makes it easier to turn investment spigots on or off to adjust to market fluctuations. Companies like Exxon Mobil and Chevron are putting increasing amounts of capital in shale fields, particularly in West Texas and New Mexico.\n", - "The results go far beyond the economic, offering Washington strategic weapons once unthinkable. The United States and its allies now have a supply cushion at a time when political turmoil in Venezuela, Libya and Nigeria is threatening to interrupt flows to markets.\n", - "Only a few years ago, such threats — along with a recent pipeline failure in the North Sea and storms in the Gulf of Mexico — would have sent the price of crude soaring. Instead, the rise has been muted, and gasoline at the pump remains below $2.60 a gallon across most of the United States.\n", - "The new energy power also relieves pressure on Washington to act militarily if tensions between Iran and Saudi Arabia break out into war. And it gives Washington the leeway to apply sanctions on other producers — as it has in Russia, and may in Iran or Venezuela — with far less risk to the global economy.\n", - "It is a striking contrast to the 1970s, when Arab oil boycotts forced motorists to line up for blocks to fill their tanks and the economy went into a tailspin. Even more recently, during the presidency of George W. Bush, domestic oil output was declining so rapidly that the country set a course to replace oil with biofuels like ethanol.\n", - "Many environmentalists argue that by increasing oil and gas supplies and lowering prices for consumers, shale drilling is extending the life of fossil fuels to the detriment of the environment and the development of cleaner energy.\n", - "The shale drilling revolution has remade the global energy market, with imports from members of the Organization of the Petroleum Exporting Countries plunging by 20 percent from late 2016 to late 2017. At the same time, exports rose by hundreds of thousands of barrels a day.\n", - "Nothing like the current situation was foreseen in late 2014, when rising domestic production began weighing on global oil prices.\n", - "In response, Saudi Arabia led OPEC in a new direction. Instead of throttling back to support prices as the cartel had done so often, it left the market alone and even increased production for a time.\n", - "Prices fell below $40 a barrel, as the Saudis and their allies hoped to drive American operations out of business by making shale drilling uneconomical. American exploration quickly dropped, but the price squeeze made companies more innovative in the use of drilling technologies, robotics and sensors to maximize output and reduce costs.\n", - "While scores of smaller companies went out of business, the survivors lengthened horizontal wells to yield more oil, and used clever hedging and drilling strategies to maximize profits even when prices slumped.\n", - "The response surprised the global oil community. OPEC, Russia and allied producing countries changed course and began cutting back again in 2016.\n", - "“OPEC missed the point,” said René Ortiz, a former OPEC secretary general and former Ecuadorean energy minister. “They thought they could recover the U.S. market by bringing the prices down. Now the U.S. has gained the leading position in the world oil market regardless of what OPEC does.”\n", - "“This displacement of Saudi oil, Nigerian oil, Libyan oil and Venezuelan oil,” Mr. Ortiz concluded, “was never anticipated.”\n", - "A week ago, OPEC leaders met in Oman to discuss a probable extension of production cuts into 2019 to support prices. Their biggest obstacle is the United States.\n", - "Technological advances unlocking oil from tight rocks like shale has led to a drilling frenzy enabling a doubling of output in a decade, transforming unlikely places like North Dakota and New Mexico into world class petroleum hubs. Pipelines are being built across Texas to serve ports where oil can be pumped onto tankers headed for China, India and other markets.\n", - "Domestic production last year averaged 9.3 million barrels a day, and the Energy Department projects that the figure will climb to 10.3 million barrels a day this year, surpassing the record set in 1970. In the meantime, since a 40-year export ban was lifted in 2015, exports of American oil have risen to roughly two million barrels a day — more than many OPEC members.\n", - "The department projects an additional increase in domestic production of 500,000 barrels a day in 2019.\n", - "Concerns over climate change as well as the growing popularity of electric cars and the eventual aging of the best shale fields will probably curb production and demand over the next few decades. But in the short term, the boom has changed the landscape.\n", - "The Energy Department projects that the recent surge will hold the price of Brent crude, the global benchmark, to $60 a barrel in 2018 and $61 a barrel in 2019 — a modest increase from $54 last year. (The Brent price rose above $70 a barrel this month, but few analysts see a return to $100-a-barrel oil.)\n", - "The emerging order in the energy realm is a stable balance of power. Saudi Arabia, which essentially runs OPEC, has put a floor under the oil price — probably around $50 a barrel — with its limits on output and exports over the last four years. But now the United States, by the sheer force of its production, the supremacy of its technology, and an unmatched pipeline, refinery and storage structure, has put a ceiling to the price.\n", - "Experts note that when oil climbs to $60 a barrel and higher, as it has lately, a drilling rush commences — the national rig count has climbed by over a third in the last year — promising to refill domestic and even global energy inventories. Only a major war or other disruption is likely to send prices soaring.\n", - "“We have all suffered these depressed prices over the last two years and we are excited to see the new prices and we will respond accordingly,” said Harald Jordan, vice president for engineering at Peak Energy, a Colorado-based producer. “You will see rig activity continue to increase.”\n" - ] - } - ], - "source": [ - "crawler = Crawler()\n", - "\n", - "siteData = [\n", - " ['O\\'Reilly Media', 'http://oreilly.com', 'h1', 'section#product-description'],\n", - " ['Reuters', 'http://reuters.com', 'h1', 'div.StandardArticleBody_body_1gnLA'],\n", - " ['Brookings', 'http://www.brookings.edu', 'h1', 'div.post-body'],\n", - " ['New York Times', 'http://nytimes.com', 'h1', 'div.StoryBodyCompanionColumn div p']\n", - "]\n", - "websites = []\n", - "for row in siteData:\n", - " websites.append(Website(row[0], row[1], row[2], row[3]))\n", - "\n", - "crawler.parse(websites[0], 'http://shop.oreilly.com/product/0636920028154.do')\n", - "crawler.parse(\n", - " websites[1], 'http://www.reuters.com/article/us-usa-epa-pruitt-idUSKBN19W2D0')\n", - "crawler.parse(\n", - " websites[2],\n", - " 'https://www.brookings.edu/blog/techtank/2016/03/01/idea-to-retire-old-methods-of-policy-education/')\n", - "crawler.parse(\n", - " websites[3], \n", - " 'https://www.nytimes.com/2018/01/28/business/energy-environment/oil-boom.html')" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Crawling through sites with search" - ] - }, - { - "cell_type": "code", - "execution_count": 11, - "metadata": {}, - "outputs": [], - "source": [ - "class Content:\n", - " \"\"\"Common base class for all articles/pages\"\"\"\n", - "\n", - " def __init__(self, topic, url, title, body):\n", - " self.topic = topic\n", - " self.title = title\n", - " self.body = body\n", - " self.url = url\n", - "\n", - " def print(self):\n", - " \"\"\"\n", - " Flexible printing function controls output\n", - " \"\"\"\n", - " print('New article found for topic: {}'.format(self.topic))\n", - " print('URL: {}'.format(self.url))\n", - " print('TITLE: {}'.format(self.title))\n", - " print('BODY:\\n{}'.format(self.body))" - ] - }, - { - "cell_type": "code", - "execution_count": 12, - "metadata": {}, - "outputs": [], - "source": [ - "class Website:\n", - " \"\"\"Contains information about website structure\"\"\"\n", - "\n", - " def __init__(self, name, url, searchUrl, resultListing, resultUrl, absoluteUrl, titleTag, bodyTag):\n", - " self.name = name\n", - " self.url = url\n", - " self.searchUrl = searchUrl\n", - " self.resultListing = resultListing\n", - " self.resultUrl = resultUrl\n", - " self.absoluteUrl = absoluteUrl\n", - " self.titleTag = titleTag\n", - " self.bodyTag = bodyTag" - ] - }, - { - "cell_type": "code", - "execution_count": 13, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "GETTING INFO ABOUT: python\n", - "New article found for topic: python\n", - "URL: Learning Python, 5th Edition \n", - "TITLE: \n", - "Get a comprehensive, in-depth introduction to the core Python language with this hands-on book. Based on author Mark Lutz’s popular training course, this updated fifth edition will help you quickly write efficient, high-quality code with Python. It’s an ideal way to begin, whether you’re new to programming or a professional developer versed in other languages. \n", - "\n", - "Complete with quizzes, exercises, and helpful illustrations, this easy-to-follow, self-paced tutorial gets you started with both Python 2.7 and 3.3— the latest releases in the 3.X and 2.X lines—plus all other releases in common use today. You’ll also learn some advanced language features that recently have become more common in Python code.\n", - "\n", - "Explore Python’s major built-in object types such as numbers, lists, and dictionaries \n", - "Create and process objects with Python statements, and learn Python’s general syntax model\n", - "Use functions to avoid code redundancy and package code for reuse\n", - "Organize statements, functions, and other tools into larger components with modules \n", - "Dive into classes: Python’s object-oriented programming tool for structuring code\n", - "Write large programs with Python’s exception-handling model and development tools\n", - "Learn advanced Python tools, including decorators, descriptors, metaclasses, and Unicode processing\n", - "\n", - "\n", - "BODY:\n", - "http://shop.oreilly.com/product/0636920028154.do\n", - "New article found for topic: python\n", - "URL: The Hutchins Center Explains: Budgeting for aging America\n", - "TITLE: \n", - "\n", - "\n", - "For decades, we have been hearing that the baby-boom generation was like a pig moving through a python–bigger than the generations before and after. \n", - "That’s true. But that’s also a very misleading metaphor for understanding the demographic forces that are driving up federal spending: They aren’t temporary. The generation born between 1946 and 1964 is the beginning of a demographic transition that will persist for decades after the baby boomers die, the consequence of lengthening lifespans and declining fertility. Putting the federal budget on a sustainable course requires long-lasting fixes, not short-lived tweaks.  \n", - "First, a few demographic facts.\n", - "As the chart below illustrates, there was a surge in births in the U.S. at the end of World War II, a subsequent decline, and then an uptick as baby boomers began having children.\n", - "\n", - "\n", - "\n", - "\n", - "Although the population has been rising, the number of births in the U.S. the past few years has been below the peak baby-boom levels, possibly because many couples chose not to have children during bad economic times. More significant, fertility rates–roughly the number of babies born per woman during her lifetime–have fallen well below pre-baby-boom levels.\n", - "\n", - "\n", - "\n", - "\n", - "Meanwhile, Americans are living longer. In 1950, a man who made it to age 65 could expect to live until 78 and a woman until 81. Social Security’s actuaries project that a man who lived to age 65 in 2010 will reach 84 and a woman age 86.\n", - "\n", - "\n", - "\n", - "\n", - "Put all this together, and it’s clear that a growing fraction of the U.S. population will be 65 or older.   \n", - "The combination of longer life spans and lower fertility rates means the ratio of elderly (over 65) to working-age population (ages 20 to 64) is rising. As the chart below illustrates, the ratio will rise steadily as more baby boomers reach retirement age–and then it levels off.  \n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "Related Books\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " \n", - "\n", - "\n", - "\n", - "Diversity Explosion\n", - "\n", - "\n", - "\t\t\t\t\t\tBy William H. Frey \n", - "2018\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " \n", - "\n", - "\n", - "\n", - "Society at a Glance 2014\n", - "\n", - "\n", - "\t\t\t\t\t\tBy Organization for Economic Cooperation and Development OECD \n", - "2014\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " \n", - "\n", - "\n", - "\n", - "Brookings-Wharton Papers on Urban Affairs: 2002\n", - "\n", - "\n", - "\t\t\t\t\t\tEdited by William G. Gale and Janet Rothenberg Pack \n", - "2010\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "Simply put, this doesn’t look like a pig in a python.  \n", - "So what do these demographic facts portend for the federal budget?  In simple dollars and cents, the federal government spends more on the old than the young. More older Americans means more federal spending on Social Security and Medicare, the health insurance program for the elderly. On top of that, health care spending per person is likely to continue to grow faster than the overall economy.\n", - "The net result: 85 percent of the increase in federal spending that the Congressional Budget Office projects for the next 10 years, based on current policies, will go toward Social Security, Medicare and other major federal health programs, and interest on the national debt.\n", - " \n", - "Authors\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "David Wessel\n", - "Director - The Hutchins Center on Fiscal and Monetary Policy Senior Fellow - Economic Studies\n", - "\n", - " Twitter\n", - "davidmwessel\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "Louise Sheiner\n", - "The Robert S. Kerr Senior Fellow - Economic Studies Policy Director - The Hutchins Center on Fiscal and Monetary Policy\n", - "\n", - "\n", - "\n", - "\n", - "Restraining future deficits and the size of the federal debt mean restraining spending on these programs or raising taxes–and probably both. One-time savings or minor tweaks won’t suffice. Nor will limiting the belt-tightening to annually appropriated spending.\n", - "The fundamental fiscal problem is not coping with the retirement of the baby boomers and then going back to budgets that resemble those of the past. The fundamental fiscal problem is that retirement of the baby boomers marks a major demographic transition for the nation, one that will require long-lived changes to benefit programs and taxes.\n", - "Editor’s Note: This post originally appeared on \n", - "The Wall Street Journal’s Washington Wire\n", - " on December 18, 2015.\n", - "BODY:\n", - "https://www.brookings.edu/blog/up-front/2015/12/21/the-hutchins-center-explains-budgeting-for-aging-america/\n", - "New article found for topic: python\n", - "URL: Inside the Pentagon’s Secret Afghan Spy Machine\n", - "TITLE: \n", - "The Pentagon’s top researchers have rushed a classified and controversial intelligence program into Afghanistan. Known as “Nexus 7,” and previously undisclosed as a war-zone surveillance effort, it ties together everything from spy radars to fruit prices in order to glean clues about Afghan instability.\n", - "\n", - "BODY:\n", - "https://www.brookings.edu/opinions/inside-the-pentagons-secret-afghan-spy-machine/\n", - "New article found for topic: python\n", - "URL: The Silicon Valley Wage Premium\n", - "TITLE: \n", - "\n", - "\n", - "Software application developers earn large salaries in the United States, $96,260 a year on average. But in metropolitan San Jose they earn $131,270, the highest in the country. There are many partial explanations for this—local cost of living, differences in education levels, experience, and industry—but none of them quite account for it. It turns out that developers living in San Jose have acquired the specific skills most valued by employers.\n", - " \n", - "As the map below shows, there is a huge amount of variation in earnings for software application developers across regional labor markets. In large metropolitan areas like New York, they earn $105,000, but in Louisville, they earn just $72,000.\n", - " \n", - "\n", - "Average Salary of Software Application Developers by Metropolitan Area, 2013\n", - "\n", - " \n", - "\n", - "\n", - " \n", - "Similar patterns could be shown for other occupations, of course; for even within the same job title, people vary by education and experience, and regions vary by company and industry mix, productivity and export orientation, which all affect salaries and regional housing prices.\n", - " \n", - "The surprising thing, when it comes to software developers and other skilled occupations too, is that none of these factors can fully account for the San Jose premium. Software developers in San Jose are typically slightly less experienced, and while their levels of education are higher—including their likelihood of having majored in engineering or computer science—the difference is not enough to explain their elevated earnings. Likewise, the cost of living in San Jose is remarkably high, but comparable to other major cities. \n", - " \n", - "\n", - "\n", - "Related Books\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " \n", - "\n", - "\n", - "\n", - "The New Localism\n", - "\n", - "\n", - "\t\t\t\t\t\tBy Bruce Katz and Jeremy Nowak \n", - "2018\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " \n", - "\n", - "\n", - "\n", - "The Public Wealth of Cities\n", - "\n", - "\n", - "\t\t\t\t\t\tBy Dag Detter and Stefan Fölster \n", - "2017\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " \n", - "\n", - "\n", - "\n", - "Challenges in the Process of China’s Urbanization\n", - "\n", - "\n", - "\t\t\t\t\t\tEdited by Karen Eggleston, Jean C. Oi, and Yiming Wang \n", - "2017\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "So what distinguishes San Jose software developers? \n", - " \n", - "To figure this out, I analyzed a database of 29 million job vacancies advertised online during 2013 as compiled by the analytics firm Burning Glass. Of these, roughly 1.4 million were for software application developers, making it the most in-demand occupation. In total, 3 million ads also contained salary information, which I could use to estimate the average value of each distinct skill advertised. \n", - " \n", - "Author\n", - "\n", - "\n", - "\n", - "\n", - "J\n", - "\n", - "\n", - "\n", - "Jonathan Rothwell\n", - "Former Brookings Expert\n", - "\n", - "\n", - "\n", - "\n", - " \n", - "In San Jose, the skills advertised for software developers are particularly valuable. The average vacancy requires higher value skills in San Jose than almost any other metropolitan area, even using national rather than local salary values.  \n", - " \n", - "For example, 8.4 percent of ads for software developers in San Jose requested Java, a widely used programming language, associated with an average salary of $98,000 across all U.S. ads mentioning both it and a salary requirement. Yet, for the United States as a whole, just 5.7 percent of software developer ads required Java. In New York City, the share was 6.7, and it was 4.7 in Louisville.\n", - " \n", - "Other high-value programming languages and skills were disproportionately advertised in San Jose, such as Linux, C++, Python and the term “software engineering.”  These skills were much less commonly required for jobs in Louisville and even New York. Only 0.2 percent of software jobs required Python in Louisville and 1.7 in New York City, compared to 2.8 percent in San Jose. It is valued at $100,345.\n", - " \n", - "These and other skills contribute to the high premium enjoyed by Silicon Valley computer workers, but they could be profitably learned by a much larger swath of people, as online educators like Treehouse, Udacity, and Code Fellows aim to demonstrate.\n", - "\n", - "BODY:\n", - "https://www.brookings.edu/blog/the-avenue/2014/08/06/the-silicon-valley-wage-premium/\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "New article found for topic: python\n", - "URL: Leveraging the disruptive power of artificial intelligence for fairer opportunities\n", - "TITLE: \n", - "According to President Obama’s Council of Economic Advisers (CEA), approximately 3.1 million jobs will be rendered obsolete or permanently altered as a consequence of artificial intelligence technologies. Artificial intelligence (AI) will, for the foreseeable future, have a significant disruptive impact on jobs. That said, this disruption can create new opportunities if policymakers choose to harness them—including some with the potential to help address long-standing social inequities. Investing in quality training programs that deliver premium skills, such as computational analysis and cognitive thinking, provides a real opportunity to leverage AI’s disruptive power.\n", - "\n", - "Author\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "Makada Henry-Nickie\n", - "David M. Rubenstein Fellow - Governance Studies, Race, Prosperity, and Inclusion Initiative\n", - "\n", - " Twitter\n", - "mhnickie\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "AI’s disruption presents a clear challenge: competition to traditional skilled workers arising from the cross-relevance of data scientists and code engineers, who can adapt quickly to new contexts. Data analytics has become an indispensable feature of successful companies across all industries. This reality dictates that companies invest heavily in data analytics to remain competitive and profitable. Consequently, unlikely industries such as retail, banking, finance, and even agricultural firms are aggressively competing for talent with specific computational data science and programming skills. A recent IBM report expertly quantifies the scope and breadth of employers’ hiring demands, noting that “[d]emand for data-driven decision makers, such as data-enabled marketing managers, will comprise one-third of the data savvy professional job market, with a projected increase of 110,000 positions by 2020.” Herein lies a window of opportunity: the rapidly growing technical skills gap.\n", - "Investing in high-quality education and training programs is one way that policymakers proactively attempt to address the workforce challenges presented by artificial intelligence. It is essential that we make affirmative, inclusive choices to ensure that marginalized communities participate equitably in these opportunities.\n", - "Policymakers should prioritize understanding the demographics of those most likely to lose jobs in the short-run. As opposed to obsessively assembling case studies, we need to proactively identify policy entrepreneurs who can conceive of training policies that equip workers with technical skills of “long-game” relevance. As IBM points out, “[d]ata democratization impacts every career path, so academia must strive to make data literacy an option, if not a requirement, for every student in any field of study.”\n", - "Machines are an equal opportunity displacer, blind to color and socioeconomic status.\n", - "Machines are an equal opportunity displacer, blind to color and socioeconomic status. Effective policy responses require collaborative data collection and coordination among key stakeholders—policymakers, employers, and educational institutions—to  identify at-risk worker groups and to inform workforce development strategies. Machine substitution is purely an efficiency game in which workers overwhelmingly lose. Nevertheless, we can blunt these effects by identifying critical leverage points.\n", - "Investing in innovative education and training is an excellent place to start. Bill Gates’ recent $1.7 billion investment in U.S. public schools is a sign of the way forward, which offers two compelling messages for policymakers. First, innovate and experiment until we identify the right policies. Second, prioritize high-needs schools in poor neighborhoods; they deserve distinct attention to close their opportunity gaps and prepare them to be competitive in the future workforce.\n", - "Policymakers can choose to harness AI’s disruptive power to address workforce challenges and redesign fair access to opportunity simultaneously. We should train our collective energies on identifying practical policies that update our current agrarian-based education model, which unfairly disadvantages children from economically segregated neighborhoods. Evidence from a Harvard and New York University research study suggests attending a high-quality high school increases a student’s chances of attending a four-year college; which by extension improves their future income earning potential.\n", - "Let me ask a bold question: how much do we lose if we experiment with substituting an entry-level data science class for machine shop or a vocational carpentry program in urban high schools and community colleges? A 2010 pilot partnership between the University of California, Los Angeles and the National Science Foundation is an encouraging sign; the pilot focuses on redesigning computer science curricula in urban high schools to include newer mobile technologies and computational analysis.\n", - "\n", - "Related\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " \n", - "\n", - "\n", - "\n", - "TechTank\n", - "Will robots and AI take your job? The economic and political consequences of automation\n", - "\n", - "Darrell M. West\n", - "Wednesday, April 18, 2018\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " \n", - "\n", - "\n", - "\n", - "TechTank\n", - "The state of self-driving car laws across the U.S.\n", - "\n", - "Jack Karsten and Darrell West\n", - "Tuesday, May 1, 2018\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " \n", - "\n", - "\n", - "\n", - "TechTank\n", - "How blockchain could improve election transparency\n", - "\n", - "Kevin C. Desouza and Kiran Kabtta Somvanshi\n", - "Wednesday, May 30, 2018\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "Data science is an applied computational technology best suited to inquisitive minds, making it appropriate for young students. Google’s TensorFlow is an open source machine-learning platform; its free price tag makes the platform an accessible and scalable training resource for schools with constrained budgets. Introducing a data science program into urban schools would be a major paradigm shift for these students. An applied data science program teaching gateway coding skills such as Python, R, SQL, and computational analysis would boost employment possibilities and create meaningful pathways to economic mobility.\n", - "I am suggesting that we leverage AI’s transformative power to disrupt diminishing possibilities for marginalized groups, like young men of color, who often do not feature in innovative-themed discussions outside of the social justice arena. Open Source groups such as Code.org and StudentRND exemplify the kinds of transformational approaches that democratize access and opportunity.\n", - "Producing a diverse pipeline of tech-savvy workers for Google and Amazon, even if only at the entry level, is a more attainable dream for most cities than competing in a stacked race for Amazon’s HQ2. Broadening adoption of artificial intelligence technologies poses significant workforce challenges, but it also offers the chance to blunt these effects and create opportunities for marginalized groups if we act preemptively.\n", - "Google is a donor to the Brookings Institution. The findings, interpretations, and conclusions posted in this piece are solely those of the authors and not influenced by any donation.\n", - "\n", - "BODY:\n", - "https://www.brookings.edu/blog/techtank/2017/11/16/leveraging-the-disruptive-power-of-artificial-intelligence-for-fairer-opportunities/\n", - "New article found for topic: python\n", - "URL: Idea to Retire: Old methods of policy education\n", - "TITLE: \n", - "Public policy and public affairs schools aim to train competent creators and implementers of government policy. While drawing on the principles that gird our economic and political systems to provide a well-rounded education, like law schools and business schools, policy schools provide professional training. They are quite distinct from graduate programs in political science or economics which aim to train the next generation of academics. As professional training programs, they add value by imparting both the skills which are relevant to current employers, and skills which we know will be relevant as organizations and societies evolve. \n", - "The relevance of the skills that policy programs impart to address problems of today and tomorrow bears further discussion. We are living through an era in which societies are increasingly interconnected. The wide-scale adoption of devices such as the smartphone is having a profound impact on our culture, communities, and economy. The use of social and digital media and associated means of communication enabled by mobile devices is changing the tone, content, and geographic scope of our conversations, modifying how information is generated and consumed, and changing the very nature of citizen engagement. \n", - "Information technology-based platforms provisioned by private providers such as Facebook, Google, Uber, and Lyft maintain information about millions of citizens and enable services such as transportation that were mediated in the past solely by the public sector. Surveillance for purposes of public safety via large-scale deployment of sensors also raises fundamental questions about information privacy. From technology-enabled global delivery of work to displacement and replacement of categories of work, some studies estimate that up to 47 percent of U.S. employment might be at risk of computerization with an attendant rise in income inequality. These technology-induced changes will affect every policy domain. How should policy programs best prepare students to address societal challenges in this world that is being transformed by technology? We believe the answer lies in educating students to be “men and women of intelligent action.” \n", - "A model of policy education\n", - "We begin with a skills-based model of policy education. These four essential skills address the general problems policy practitioners frequently face:\n", - "\n", - "Design skills to craft policy ideas \n", - "Analytical skills to make smart ex ante decisions \n", - "Interpersonal experience to manage policy implementation  \n", - "Evaluative skills to assess outcomes ex post and correct course if necessary\n", - "\n", - "These skills make up the policy analysis toolkit required to be data driven practitioner of “intelligent action” in any policy domain. This toolkit needs to be supplemented by an understanding of how technology is transforming societal challenges, enabling new solutions, or disrupting existing regulatory regimes. This understanding is essential to policy formulation and implementation. \n", - "Pillar 1: Design skills\n", - "As with engineering, where design precedes analysis, this first pillar seeks to educate students in thinking creatively about problems in order to devise and develop policy ideas. Using ideas derived from design, divergent and convergent thinking principles are employed to generate, explore, and arrive at a candidate set of solutions. Using Uber as an example, an approach to identify and explore the key policy issues such as convenience, costs, driver working hours, and insurance would involve interviewing and observing both incumbent taxi drivers and Uber drivers. This in turn would lead to a set of alternatives that deserve further and careful consideration.  Using these skills, candidate designs and choices that are generated can be evaluated using the policy analytic toolkit. \n", - "Pillar 2: Analytical skills\n", - "At Carnegie Mellon, we are often cited in media and interrogated by peers on our approach to analytical and technology skills education. Curiosity about which skills are the “right” skills to teach policy practitioners are common, but we believe this is the wrong approach. We instead begin from the premise that policy or management decisions should be grounded in evidence.  We then determine the skills required to assemble the types of evidence that will likely be available to policy makers in the future.  In increasingly instrumented environments where citizens and infrastructure produce continuous streams of data, making sense of it all will require a somewhat different set of skills. We believe that a grounding in micro-economics, operations research, statistics, and program evaluation (aka causal inference) to be an essential core to policy programs. \n", - "New coursework will teach students to work with multi-variable data and machine learning with an emphasis on prediction. This material ought to be part of the required coursework in statistics given the importance of prediction in many policy implementation settings. Along the same lines, the ability to work with unstructured data (especially text) and data visualization will become increasingly relevant to all students, not just those students who want to specialize in data analytics. Finally, knowledge of data manipulation and analysis languages such as Python and R for analytic work will be important because data often has to be massaged and cleansed prior to analysis. An important task for programs will be to determine the competencies expected of graduates. \n", - "Pillar 3: Interpersonal experiences\n", - "The third pillar of the skills-based model is interpersonal experience, where the practiced habits of good communication and steady negotiation developed with a sound understanding of organizations, their design and their behaviors. We label these purposely as experiences rather than skills because we believe they are best practiced either in the real-world or in simulated real-world settings. It is also in this pillar where practitioners learn the knowledge necessary to become credible experts in their domain. We believe that in addition to core coursework in the area, a supplementary curriculum which provides students with opportunities to gain these experiences is an essential component of our educational model.\n", - "Pillar 4: Evaluative skills\n", - "\n", - "\n", - "Related Books\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " \n", - "\n", - "\n", - "\n", - "Constitution 3.0\n", - "\n", - "\n", - "\t\t\t\t\t\tEdited by Jeffrey Rosen and Benjamin Wittes \n", - "2013\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " \n", - "\n", - "\n", - "\n", - "The Need for Speed\n", - "\n", - "\n", - "\t\t\t\t\t\tBy Robert E. Litan and Hal J. Singer \n", - "2013\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " \n", - "\n", - "\n", - "\n", - "After the Breakup\n", - "\n", - "\n", - "\t\t\t\t\t\tBy Robert W. Crandall \n", - "2010\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "The ability to carefully diagnose the effectiveness of policy or management interventions is the fourth pillar of our model. It is insufficient to create and execute policy without measurement, and this is where both careful thought to the fundamental issues of measurement and evaluation become important. The ability to make objective judgments on the benefits, liabilities, and unintended consequences of prior policies is the goal of this set of skills. Here, sound statistical and econometric training with an understanding of the principles of causal inference is essential. In addition, program evaluation skills such as cost-benefit and financial analysis help practitioners round out their evaluation skills by considering both non-monetary and economic impacts.\n", - "What should be retired?\n", - "A skills-based approach might replace certain aspects of existing policy training.  This depends on a number of factors specific to each institution, but three generally applicable observations are clear. First, real-world experiences are a powerful way to encode domain learning as well as project management skills. Through project-based work, students can learn about institutional contexts in specific policy domains and political processes such as budgeting. Second, team-based projects allow students to learn and apply principles of management and organizational behavior. At Carnegie Mellon, we refer to these as “systems synthesis” projects, since they require students to adopt a systemic point of view and to synthesize a number of skills in their policy analysis toolkit. Third, interpersonal skills training can be practiced through activities such as weekend negotiation exercises, hackathons, and speaker series. These activities can be highly intentional and fashioned to reinforce skills rather than as a recess from the “real work” of classroom training. Since students complete graduate programs in such a short time, counseling them to focus on outcomes from day one will allow them to choose a reinforcing set of coursework and real-world experiences. \n", - "In summary, we argue for a model of policy education that views practitioners as future problem solvers. Good policy education must consider the ways in which problems will present themselves, and the ways in which answers will obscure themselves. Rigorous training grounded in the analysis of available evidence and buoyed by real-world interpersonal experiences is a sound approach to relevant, durable policy training.\n", - " \n", - "Authors\n", - "\n", - "\n", - "\n", - "\n", - "R\n", - "\n", - "\n", - "\n", - "Ramayya Krishnan\n", - "Ramayya Krishnan is the dean of H. John Heinz III College of Information Systems and Public Policy at Carnegie Mellon University where he is the W.W. Cooper and Ruth F. Cooper Professor of Management Science and Information Systems.\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "J\n", - "\n", - "\n", - "\n", - "Jon Nehlsen\n", - "Jon Nehlsen is senior director of external relations at H. John Heinz III College of Information Systems and Public Policy at Carnegie Mellon University.\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "Read other essays in the Ideas to Retire blog series here.\n", - "\n", - "BODY:\n", - "https://www.brookings.edu/blog/techtank/2016/03/01/idea-to-retire-old-methods-of-policy-education/\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "New article found for topic: python\n", - "URL: Skills, success, and why your choice of college matters\n", - "TITLE: \n", - "\n", - "\n", - "Amidst growing frustration with the cost of higher education, complaints also abound about its quality. One critique, launched in the book Academically Adrift by two sociologists, finds little evidence that college students score better on measures of critical thinking, writing, and reasoning after attending college. This is something of a paradox, since strong evidence shows that attending college tends to raise earnings power, even for students who start with mediocre preparation. \n", - "Our recent study uses a different approach to assess the value of a college education. We find that the particular skills listed by a college’s alumni on their resumes predict how well graduates from those schools perform in terms of earning a living, meeting debt obligations, and working for high-paying or innovative companies. Since jobs requiring more valuable skills typically require at least some college education, this finding suggests many students are gaining valuable skills from college. But the variation in alumni skills across schools is wide, even after considering the aptitude of the students in terms of their pre-admission test scores. This variation implies that what one studies and where have big effects on economic outcomes.\n", - "\n", - "\n", - "\n", - "\n", - "Skills versus degrees\n", - "\n", - "It is widely known that education raises individual earnings, but education—measured in years of study or level of degree—is a very rough measure of learning. Thus, it is not surprising that studies consistently find that skills are an important predictor of economic outcomes. People with higher test scores—another measure of learning—earn higher wages, even with the same level of education. Likewise, graduates with technical degrees earn more, as do workers in occupations requiring more STEM skills. At the international scale, performance on standardized exams has a much stronger statistical relationship with economic outcomes than do years of education, according to a new OECD study.\n", - "\n", - "\n", - "\n", - "\n", - "How we valued skills by college\n", - "\n", - "Using data from the company Burning Glass, we calculated the average salary listed for distinct skills based on 3 million job vacancy ads. To match these skills to colleges, we used data from LinkedIn’s college profile pages, which show the 25 most common skills (e.g., customer service, Microsoft Excel, Python) listed by alumni from each college. For the average college, we observed 1,150 profiles per skill. (A great advantage of using LinkedIn data is the large sample size.) We obtained data for 2,164 colleges representing profiles for 2.5 million U.S. residents who attended college. By comparison, Academically Adrift surveyed 2,300 college graduates.\n", - "\n", - "\n", - "\n", - "\n", - "Alumni with more valuable skills earn higher salaries\n", - "\n", - "Measured at mid-career (meaning at least 10 years of working), salaries tend to be much higher for alumni who list high-value skills on their resumes. Earnings go up by an average of $2,600 for every decile of skill. Our more detailed empirical work shows that skills predict higher earnings even after controlling for math test scores on the ACT and SAT, as well as other student characteristics like family income.\n", - "Cal Tech graduates list the highest-value skills (e.g., Matlab, Python, C++, algorithms, and machine learning) and typically earn $126,000 at mid-career. Other four-year schools with high-value skills and high salaries include Harvey Mudd, MIT, the Polytechnic Institute of New York University, and the Air Force Academy. \n", - "Earnings data from two-year colleges are not as widely available, and the correlation with alumni skills is weaker, but alumni from those schools also seem to benefit from higher skills training. Top schools include the Pittsburg Institute of Aeronautics, Spartan College of Aeronautics and Technology (Tulsa, Okla.), Coleman University (San Diego), Hondros College (Columbus, Ohio), and SUNY College of Technology at Alfred.\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "Alumni with more valuable skills have higher loan repayment rates\n", - "\n", - "\n", - "\n", - "Related Books\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " \n", - "\n", - "\n", - "\n", - "Leapfrogging Inequality\n", - "\n", - "\n", - "\t\t\t\t\t\tBy Rebecca Winthrop; With Adam Barton and Eileen McGivney \n", - "2018\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " \n", - "\n", - "\n", - "\n", - "The Transformation of Title IX\n", - "\n", - "\n", - "\t\t\t\t\t\tBy R. Shep Melnick \n", - "2018\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " \n", - "\n", - "\n", - "\n", - "Making College Work\n", - "\n", - "\n", - "\t\t\t\t\t\tBy Harry J. Holzer and Sandy Baum \n", - "2017\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "As an alternative to mid-career earnings, we also analyzed how skills predict the ability to make student loan payments immediately after graduation. Here too, more valuable skills translate into labor market success. For example, not a single Harvey Mudd attendee between 2009 and 2011 defaulted on his or her federal loans within three years of leaving. Repayment rates average 95 percent for four-year colleges in the top 10 percent for alumni skills but 87 percent for those in the bottom 10 percent. For two-year colleges, repayment rates are uniformly lower, but colleges offering higher-value skills still have significantly higher repayment rates than those that do not.\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "Alumni with more valuable skills are more likely to work for top organizations\n", - "\n", - "Another outcome measure is whether alumni work for a desirable company or organization. LinkedIn lists the 25 enterprises that employ the most alumni from each school. To quantify the value of working for a given entity, employers were coded for desirability with data from a 2014 survey of 46,000 U.S. college students in 329 universities, developed by Universum, a corporate marketing intelligence company. A total of 212 employers, including government agencies, made it onto a top 100 list for at least one group of student majors. The most desirable employers across majors were Google, Disney, Apple, Microsoft, the FBI, Nike, NASA, the Environmental Protection Agency, the Peace Corps, and Facebook. \n", - "For the top 10 percent of four-year colleges on alumni skills, half of LinkedIn alumni profiles indicate employment at one of the 212 top-rated companies, compared to just one in four for schools in the bottom 10 percent. For two-year schools, nearly two in five alumni (37 percent) of top-tier schools by skill worked for a top company, versus one in five alumni (21 percent) of bottom-tier schools.\n", - "For placement at Google specifically, Harvey Mudd has the highest rate—2 percent of all alumni—followed by Stanford, Carnegie Mellon, Caltech, and MIT. Almost all of the colleges with the highest placement rates at Google are in the top 20 percent of alumni skills, including liberal arts colleges like Swarthmore, Pomona, Claremont, McKenna, and Williams.\n", - " \n", - "Author\n", - "\n", - "\n", - "\n", - "\n", - "J\n", - "\n", - "\n", - "\n", - "Jonathan Rothwell\n", - "Former Brookings Expert\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "Alumni with more valuable skills are more likely to work for innovative organizations\n", - "\n", - "Workers who contribute to the creation and development of new, valuable products can lift the living standards of people around the world. Companies that patent are more likely to be creating these sorts of advanced industry products, and 843 entities, including universities and government agencies, own at least 40 patents granted by the U.S. Patent and Trademark Office in 2014. \n", - "Four-colleges that graduate alumni in the top 10 percent by skill are twice as likely to have graduates working at a top patenting organization than are colleges in the bottom 10 percent (3.3 versus 1.6 percent). Likewise, graduates from two-year colleges are about twice as likely to be working for a patenting entity if their school is in the top 10 percent compared to the bottom (1.9 versus 0.9 percent).\n", - "Schools with high placement rates at patenting entities include those listed above, as well as less the U.S. Naval Academy, Lawrence Technological University, the Stevens Institute of Technology, Santa Clara University, Brazosport College, Mount Mercy University, University of Texas-Dallas, the Missouri University of Science and Technology, and San Jose State University.\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "How to judge colleges\n", - "\n", - "Earnings and other economic outcomes should not be equated with social value, and there are plenty of jobs and professions—child care, teaching, social work—that pay modestly but are nevertheless highly valuable to society. Colleges that specialize in this training or instill even moderately valuable skills in the least academically prepared students may be socially important institutions even if their alumni frequently are less affluent.\n", - "Nonetheless, earnings clearly matter privately and socially, as does work that supports innovation and highly productive advanced industries. Many colleges offer programs of study in fields that appear to have almost no market value—nor even any social value since the knowledge acquired is never put to use, at least through paid employment. In this sense, how well colleges instill highly valuable skills and prepare students to contribute productively to the economy should be an important consideration when evaluating schools. Colleges that do this for the students least likely to otherwise succeed are offering an even more beneficial service, as we have discussed in our value-added college research.\n", - "\n", - "\n", - "Correction: A previous version of this post showed graphs which reversed the label on 2- and 4-year colleges. The graphs have been corrected.\n", - "\n", - "BODY:\n", - "https://www.brookings.edu/opinions/skills-success-and-why-your-choice-of-college-matters/\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "New article found for topic: python\n", - "URL: Modeling with Data: Tools and Techniques for Scientific Computing\n", - "TITLE: \n", - "\n", - "PREFACE\n", - "\n", - "\n", - "BODY:\n", - "https://www.brookings.edu/articles/modeling-with-data-tools-and-techniques-for-scientific-computing/\n", - "New article found for topic: python\n", - "URL: Forum: Debating Bush’s Wars\n", - "TITLE: \n", - "\n", - "In the \n", - "\n", - "Winter 2007–08 issue \n", - "of Survival, Philip Gordon argued that America’s strategy against terror is failing ‘because the Bush administration chose to wage the wrong war’. Survival invited former Bush speechwriter and Deputy Assistant to the President Peter Wehner and Kishore Mahbubani, Dean and Professor at the Lee Kuan Yew School of Public Policy in Singapore, to reflect on Gordon’s arguments. Their \n", - "comments are available in the above PDF and Philip Gordon’s response is below.\n", - "\n", - "BODY:\n", - "https://www.brookings.edu/articles/forum-debating-bushs-wars/\n" - ] - }, - { - "ename": "KeyboardInterrupt", - "evalue": "", - "output_type": "error", - "traceback": [ - "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", - "\u001b[0;31mKeyboardInterrupt\u001b[0m Traceback (most recent call last)", - "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[1;32m 59\u001b[0m \u001b[0mprint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'GETTING INFO ABOUT: '\u001b[0m \u001b[0;34m+\u001b[0m \u001b[0mtopic\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 60\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0mtargetSite\u001b[0m \u001b[0;32min\u001b[0m \u001b[0msites\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 61\u001b[0;31m \u001b[0mcrawler\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msearch\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mtopic\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mtargetSite\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m", - "\u001b[0;32m\u001b[0m in \u001b[0;36msearch\u001b[0;34m(self, topic, site)\u001b[0m\n\u001b[1;32m 27\u001b[0m \u001b[0;31m# Check to see whether it's a relative or an absolute URL\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 28\u001b[0m \u001b[0;32mif\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0msite\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mabsoluteUrl\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 29\u001b[0;31m \u001b[0mbs\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mgetPage\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0murl\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 30\u001b[0m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 31\u001b[0m \u001b[0mbs\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mgetPage\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0msite\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0murl\u001b[0m \u001b[0;34m+\u001b[0m \u001b[0murl\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m\u001b[0m in \u001b[0;36mgetPage\u001b[0;34m(self, url)\u001b[0m\n\u001b[1;32m 6\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0mgetPage\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0murl\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 7\u001b[0m \u001b[0;32mtry\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 8\u001b[0;31m \u001b[0mreq\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mrequests\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mget\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0murl\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 9\u001b[0m \u001b[0;32mexcept\u001b[0m \u001b[0mrequests\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mexceptions\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mRequestException\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 10\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0;32mNone\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/requests/api.py\u001b[0m in \u001b[0;36mget\u001b[0;34m(url, params, **kwargs)\u001b[0m\n\u001b[1;32m 70\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 71\u001b[0m \u001b[0mkwargs\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msetdefault\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'allow_redirects'\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;32mTrue\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 72\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mrequest\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'get'\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0murl\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mparams\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mparams\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 73\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 74\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/requests/api.py\u001b[0m in \u001b[0;36mrequest\u001b[0;34m(method, url, **kwargs)\u001b[0m\n\u001b[1;32m 56\u001b[0m \u001b[0;31m# cases, and look like a memory leak in others.\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 57\u001b[0m \u001b[0;32mwith\u001b[0m \u001b[0msessions\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mSession\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;32mas\u001b[0m \u001b[0msession\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 58\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0msession\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mrequest\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mmethod\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mmethod\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0murl\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0murl\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 59\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 60\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/requests/sessions.py\u001b[0m in \u001b[0;36mrequest\u001b[0;34m(self, method, url, params, data, headers, cookies, files, auth, timeout, allow_redirects, proxies, hooks, stream, verify, cert, json)\u001b[0m\n\u001b[1;32m 506\u001b[0m }\n\u001b[1;32m 507\u001b[0m \u001b[0msend_kwargs\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mupdate\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0msettings\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 508\u001b[0;31m \u001b[0mresp\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msend\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mprep\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0msend_kwargs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 509\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 510\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mresp\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/requests/sessions.py\u001b[0m in \u001b[0;36msend\u001b[0;34m(self, request, **kwargs)\u001b[0m\n\u001b[1;32m 656\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 657\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0mstream\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 658\u001b[0;31m \u001b[0mr\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mcontent\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 659\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 660\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mr\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/requests/models.py\u001b[0m in \u001b[0;36mcontent\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 821\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_content\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;32mNone\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 822\u001b[0m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 823\u001b[0;31m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_content\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mbytes\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mjoin\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0miter_content\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mCONTENT_CHUNK_SIZE\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;32mor\u001b[0m \u001b[0mbytes\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 824\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 825\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_content_consumed\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;32mTrue\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/requests/models.py\u001b[0m in \u001b[0;36mgenerate\u001b[0;34m()\u001b[0m\n\u001b[1;32m 743\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mhasattr\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mraw\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m'stream'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 744\u001b[0m \u001b[0;32mtry\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 745\u001b[0;31m \u001b[0;32mfor\u001b[0m \u001b[0mchunk\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mraw\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mstream\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mchunk_size\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mdecode_content\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;32mTrue\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 746\u001b[0m \u001b[0;32myield\u001b[0m \u001b[0mchunk\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 747\u001b[0m \u001b[0;32mexcept\u001b[0m \u001b[0mProtocolError\u001b[0m \u001b[0;32mas\u001b[0m \u001b[0me\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/urllib3/response.py\u001b[0m in \u001b[0;36mstream\u001b[0;34m(self, amt, decode_content)\u001b[0m\n\u001b[1;32m 430\u001b[0m \"\"\"\n\u001b[1;32m 431\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mchunked\u001b[0m \u001b[0;32mand\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msupports_chunked_reads\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 432\u001b[0;31m \u001b[0;32mfor\u001b[0m \u001b[0mline\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mread_chunked\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mamt\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mdecode_content\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mdecode_content\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 433\u001b[0m \u001b[0;32myield\u001b[0m \u001b[0mline\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 434\u001b[0m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/urllib3/response.py\u001b[0m in \u001b[0;36mread_chunked\u001b[0;34m(self, amt, decode_content)\u001b[0m\n\u001b[1;32m 596\u001b[0m \u001b[0;32mwith\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_error_catcher\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 597\u001b[0m \u001b[0;32mwhile\u001b[0m \u001b[0;32mTrue\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 598\u001b[0;31m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_update_chunk_length\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 599\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mchunk_left\u001b[0m \u001b[0;34m==\u001b[0m \u001b[0;36m0\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 600\u001b[0m \u001b[0;32mbreak\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/urllib3/response.py\u001b[0m in \u001b[0;36m_update_chunk_length\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 538\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mchunk_left\u001b[0m \u001b[0;32mis\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0;32mNone\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 539\u001b[0m \u001b[0;32mreturn\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 540\u001b[0;31m \u001b[0mline\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_fp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mfp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mreadline\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 541\u001b[0m \u001b[0mline\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mline\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msplit\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34mb';'\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;36m1\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m0\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 542\u001b[0m \u001b[0;32mtry\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/socket.py\u001b[0m in \u001b[0;36mreadinto\u001b[0;34m(self, b)\u001b[0m\n\u001b[1;32m 584\u001b[0m \u001b[0;32mwhile\u001b[0m \u001b[0;32mTrue\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 585\u001b[0m \u001b[0;32mtry\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 586\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_sock\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mrecv_into\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mb\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 587\u001b[0m \u001b[0;32mexcept\u001b[0m \u001b[0mtimeout\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 588\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_timeout_occurred\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;32mTrue\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/urllib3/contrib/pyopenssl.py\u001b[0m in \u001b[0;36mrecv_into\u001b[0;34m(self, *args, **kwargs)\u001b[0m\n\u001b[1;32m 278\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0mrecv_into\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 279\u001b[0m \u001b[0;32mtry\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 280\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mconnection\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mrecv_into\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 281\u001b[0m \u001b[0;32mexcept\u001b[0m \u001b[0mOpenSSL\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mSSL\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mSysCallError\u001b[0m \u001b[0;32mas\u001b[0m \u001b[0me\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 282\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msuppress_ragged_eofs\u001b[0m \u001b[0;32mand\u001b[0m \u001b[0me\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0margs\u001b[0m \u001b[0;34m==\u001b[0m \u001b[0;34m(\u001b[0m\u001b[0;34m-\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m'Unexpected EOF'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/OpenSSL/SSL.py\u001b[0m in \u001b[0;36mrecv_into\u001b[0;34m(self, buffer, nbytes, flags)\u001b[0m\n\u001b[1;32m 1544\u001b[0m \u001b[0mresult\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0m_lib\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mSSL_peek\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_ssl\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mbuf\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mnbytes\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1545\u001b[0m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 1546\u001b[0;31m \u001b[0mresult\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0m_lib\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mSSL_read\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_ssl\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mbuf\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mnbytes\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 1547\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_raise_ssl_error\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_ssl\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mresult\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1548\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;31mKeyboardInterrupt\u001b[0m: " - ] - } - ], - "source": [ - "import requests\n", - "from bs4 import BeautifulSoup\n", - "\n", - "class Crawler:\n", - "\n", - " def getPage(self, url):\n", - " try:\n", - " req = requests.get(url)\n", - " except requests.exceptions.RequestException:\n", - " return None\n", - " return BeautifulSoup(req.text, 'html.parser')\n", - "\n", - " def safeGet(self, pageObj, selector):\n", - " childObj = pageObj.select(selector)\n", - " if childObj is not None and len(childObj) > 0:\n", - " return childObj[0].get_text()\n", - " return ''\n", - "\n", - " def search(self, topic, site):\n", - " \"\"\"\n", - " Searches a given website for a given topic and records all pages found\n", - " \"\"\"\n", - " bs = self.getPage(site.searchUrl + topic)\n", - " searchResults = bs.select(site.resultListing)\n", - " for result in searchResults:\n", - " url = result.select(site.resultUrl)[0].attrs['href']\n", - " # Check to see whether it's a relative or an absolute URL\n", - " if(site.absoluteUrl):\n", - " bs = self.getPage(url)\n", - " else:\n", - " bs = self.getPage(site.url + url)\n", - " if bs is None:\n", - " print('Something was wrong with that page or URL. Skipping!')\n", - " return\n", - " title = self.safeGet(bs, site.titleTag)\n", - " body = self.safeGet(bs, site.bodyTag)\n", - " if title != '' and body != '':\n", - " content = Content(topic, title, body, url)\n", - " content.print()\n", - "\n", - "\n", - "crawler = Crawler()\n", - "\n", - "siteData = [\n", - " ['O\\'Reilly Media', 'http://oreilly.com', 'https://ssearch.oreilly.com/?q=',\n", - " 'article.product-result', 'p.title a', True, 'h1', 'section#product-description'],\n", - " ['Reuters', 'http://reuters.com', 'http://www.reuters.com/search/news?blob=', 'div.search-result-content',\n", - " 'h3.search-result-title a', False, 'h1', 'div.StandardArticleBody_body_1gnLA'],\n", - " ['Brookings', 'http://www.brookings.edu', 'https://www.brookings.edu/search/?s=',\n", - " 'div.list-content article', 'h4.title a', True, 'h1', 'div.post-body']\n", - "]\n", - "sites = []\n", - "for row in siteData:\n", - " sites.append(Website(row[0], row[1], row[2],\n", - " row[3], row[4], row[5], row[6], row[7]))\n", - "\n", - "topics = ['python', 'data science']\n", - "for topic in topics:\n", - " print('GETTING INFO ABOUT: ' + topic)\n", - " for targetSite in sites:\n", - " crawler.search(topic, targetSite)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Crawling Sites through Links" - ] - }, - { - "cell_type": "code", - "execution_count": 68, - "metadata": {}, - "outputs": [], - "source": [ - "class Website:\n", - "\n", - " def __init__(self, name, url, targetPattern, absoluteUrl, titleTag, bodyTag):\n", - " self.name = name\n", - " self.url = url\n", - " self.targetPattern = targetPattern\n", - " self.absoluteUrl = absoluteUrl\n", - " self.titleTag = titleTag\n", - " self.bodyTag = bodyTag\n", - "\n", - "\n", - "class Content:\n", - "\n", - " def __init__(self, url, title, body):\n", - " self.url = url\n", - " self.title = title\n", - " self.body = body\n", - "\n", - " def print(self):\n", - " print('URL: {}'.format(self.url))\n", - " print('TITLE: {}'.format(self.title))\n", - " print('BODY:\\n{}'.format(self.body))" - ] - }, - { - "cell_type": "code", - "execution_count": 69, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "GETTING https://www.reuters.com\n", - "GETTING https://www.reuters.com/article/us-usa-trump-5g/trump-national-security-team-sees-building-5g-network-as-option-idUSKBN1FH103\n", - "URL: https://www.reuters.com/article/us-usa-trump-5g/trump-national-security-team-sees-building-5g-network-as-option-idUSKBN1FH103\n", - "TITLE: Trump security team sees building U.S. 5G network as option\n", - "BODY:\n", - "WASHINGTON (Reuters) - President Donald Trump’s national security team is looking at options to counter the threat of China spying on U.S. phone calls that include the government building a super-fast 5G wireless network, a senior administration official said on Sunday. The official, confirming the gist of a report from Axios.com, said the option was being debated at a low level in the administration and was six to eight months away from being considered by the president himself. The 5G network concept is aimed at addressing what officials see as China’s threat to U.S. cyber security and economic security. The Trump administration has taken a harder line on policies initiated by predecessor Barack Obama on issues ranging from Beijing’s role in restraining North Korea to Chinese efforts to acquire U.S. strategic industries. Earlier this month, AT&T; was forced to scrap a plan to offer its customers handsets built by China’s Huawei after some members of Congress lobbied against the idea with federal regulators, sources told Reuters. In 2012, Huawei and ZTE Corp were the subject of a U.S. investigation into whether their equipment provided an opportunity for foreign espionage and threatened critical U.S. infrastructure. Some members of the House intelligence committee remain troubled by security threats posed by Huawei and ZTE, according to a congressional aide. Issues raised in a 2012 committee report about the Chinese firms have “never subsided,” the aide said, adding that there was newer classified intelligence that recently resurfaced those concerns. “We want to build a network so the Chinese can’t listen to your calls,” the senior official told Reuters. “We have to have a secure network that doesn’t allow bad actors to get in. We also have to ensure the Chinese don’t take over the market and put every non-5G network out of business.” Major wireless carriers have spent billions of dollars buying spectrum to launch 5G networks, and it is unclear if the U.S. government would have enough spectrum to build its own 5G network. Furthermore, Accenture has estimated that wireless operators will invest as much as $275 billion in the United States over seven years as they build out 5G. Last year, T-Mobile US Inc spent $8 billion and Dish Network Corp $6.2 billion to win the bulk of broadcast airwaves spectrum for sale in a government auction. An AT&T; spokesman said they could not comment on something they have not seen, and added: “Thanks to multi-billion dollar investments made by American companies, the work to launch 5G service in the United States is already well down the road.” Later this year, AT&T; is set to be the first to launch mobile 5G service in 12 U.S. locations, the spokesman said. A Verizon spokesman declined to comment. Representatives for Sprint and T-Mobile did not immediately respond to requests for comment. Another option includes having a 5G network built by a consortium of wireless carriers, the U.S. official said. “We want to build a secure 5G network and we have to work with industry to figure out the best way to do it,” the official said, speaking on condition of anonymity. Axios published documents it said were from a presentation from a National Security Council official. If the government built the network, it would rent access to carriers, Axios said. A looming concern laid out in the presentation was China’s growing presence in the manufacture and operation of wireless networks. A concerted government push could help the U.S. compete on that front, according to the presentation. A 5G network is expected to offer significantly faster speeds, more capacity and shorter response times, which could be utilized for new technologies ranging from self-driving cars to remote surgeries. Telecom companies and their suppliers consider it to be a multibillion-dollar revenue opportunity. Reporting by Steve Holland and Pete Schroeder; Additional reporting by Duston Volz, Suzanne Barlyn and David Shepardson; Editing by Chris Sanders, Peter Cooney and Cynthia OstermanOur Standards:The Thomson Reuters Trust Principles.\n", - "GETTING https://www.reuters.com/article/us-trump-effect-nafta-farmers/u-s-farmers-have-much-to-lose-if-nafta-deal-collapses-idUSKBN1FH0O0\n", - "URL: https://www.reuters.com/article/us-trump-effect-nafta-farmers/u-s-farmers-have-much-to-lose-if-nafta-deal-collapses-idUSKBN1FH0O0\n", - "TITLE: U.S. farmers have much to lose if NAFTA deal collapses\n", - "BODY:\n", - "CHICAGO/MONTREAL (Reuters) - A collapse of the North American Free Trade Agreement (NAFTA), which U.S. President Donald Trump has threatened to scrap, could create the most profound disruption for U.S. farmers who produce grains, meats and dairy products sold to Canada and Mexico. Blake Erwin, a third-generation American who raises cattle, corn and soybeans in Dixon, Nebraska, said on Saturday that he is not closely monitoring the negotiations, but that he hopes the outcome will support U.S. farmers who are struggling to make a living due to low commodities prices, rising healthcare costs and high property taxes. “A trade agreement has to be fair for the United States, but we also want to keep those exports going for the farmer,” said Erwin, 34. “We don’t want to mess up any good things we got going.” Erwin spoke to Reuters over the weekend as U.S., Canadian and Mexican negotiators met in Montreal for the sixth of seven planned rounds of talks to revamp the 1994 pact. U.S. farmers and exporters are fighting to preserve their exports at a time when Canada is finding customers in new markets. They also face strained relations between the United States and Mexico, a major buyer of U.S. corn, wheat, beef, pork and dairy products. “The U.S. is behaving so badly it’s going to create opportunities for Canadian agriculture,” Iowa State University economist Dermot Hayes said last week during a visit to Winnipeg. Trade flows have already begun to shift. The United States remains the dominant grain supplier to Mexico. Yet Mexico imported 583,000 metric tonnes of corn from Brazil in 2017, a 980 percent jump from the previous year, according to Mexican government trade data. Mexican imports of U.S. soybean meal, used to feed chickens and livestock, fell 29 percent in the first 11 months of 2017, compared with the same period the previous year, according to the U.S. Department of Agriculture. ‘MORE IMPORTANT THAN PRICE’ Slideshow (17 Images)Trump’s animosity toward Mexico and complaints over trade imbalances have pushed longtime buyers to work with new suppliers and expand existing relationships in South America, the European Union and other regions, trade experts said. “You get partners who build a bond and get real comfortable working together. We’re starting to see that bond becoming more important than price for where countries are buying grains,” said Karl Setzer, risk management team leader for MaxYield Cooperative. Case in point: A rare 30,000-tonne shipment of Brazilian corn steamed its way in November to grain terminals in the state of Veracruz, Mexico, operated by agribusiness heavyweights Cargill Inc [CARG.UL] and Archer Daniels Midland Co (ADM.N). Despite a steep decline in U.S. corn prices, with stocks sitting at a historic high, the buyer paid a premium for the Brazilian grain - as much as $2 more per tonne, according to trade sources. A Cargill spokeswoman said the company had no immediate comment. ADM did not respond to requests for comment. Canada last week agreed to join the new version of the Trans-Pacific Partnership, part of a broad effort to court new trade partners. “The tough NAFTA negotiations have convinced Canada that we have to have a number of trading partners, not just one,” said Ron Bonnett, a beef farmer and president of the Canadian Federation of Agriculture. The revised TPP, known as the Comprehensive and Progressive Agreement for Trans-Pacific Partnership, will reduce tariffs on Canadian pork, beef and wheat to Japan and other markets, in some cases eliminating duties altogether. Darci Vetter, former U.S. chief agriculture negotiator, said if the talks dragged on past March they might not end until next year, making it more challenging to sell American farm products. “Other trade agreements will be implemented, buyers of U.S. products in Mexico and Canada won’t be sure that we are a good long-term bet, and so we’re likely to see our clients react accordingly,” she told a panel on NAFTA in Montreal on Friday. Reporting by P.J. Huffstutter in Chicago and David Ljunggren in Montreal; Writing and additional reporting by Rod Nickel in Winnipeg, Manitoba; Additional reporting by Lucas Jackson in Dixon, Nebraska; Editing by Jim Finkle and Daniel WallisOur Standards:The Thomson Reuters Trust Principles.\n", - "GETTING https://www.reuters.com/article/us-afghanistan-blast/militants-attack-afghan-army-post-near-military-academy-in-capital-idUSKBN1FI07M\n", - "URL: https://www.reuters.com/article/us-afghanistan-blast/militants-attack-afghan-army-post-near-military-academy-in-capital-idUSKBN1FI07M\n", - "TITLE: Militants attack Afghan army post near military academy in capital\n", - "BODY:\n", - "KABUL (Reuters) - At least four militants attacked an army outpost near one of Afghanistan’s main military academies on Monday and at least one soldier was killed and three wounded, a defense ministry official said. The attack in the western outskirts of the capital, Kabul, came two days after an ambulance bomb in the center of the city killed more than 100 people and just over a week after another attack on the Hotel Intercontinental killed more than 20. Both of those attacks were claimed by the Taliban. Ministry of Defence officials said the militants attacked the outpost near the well-defended Marshal Fahim military academy just before dawn. One of the attackers blew himself up, one had been killed and two were still fighting. One soldier had been killed and three were wounded, said one official, who declined to be identified. Ministry spokesman Dawlat Waziri said three soldiers had been wounded and the clash was still going on. Earlier, resident Mohammad Ehsan said he heard a series of explosions coming from the area beginning at around 5 a.m. and lasting for at least an hour. Smaller blasts could still be heard at less frequent intervals. In October, a suicide attacker rammed a car full of explosives into a bus carrying cadets from the defense university, which is home to one of Afghanistan’s main officer training schools, killing 15 of them. Reporting by Omar Sobhani; Writing by James Mackenzie; Editing by Robert Birsel and Paul TaitOur Standards:The Thomson Reuters Trust Principles.\n", - "GETTING https://www.reuters.com/article/us-usa-immigration-manchin/democratic-senator-criticizes-pelosis-immigration-comment-idUSKBN1FH0RC\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "URL: https://www.reuters.com/article/us-usa-immigration-manchin/democratic-senator-criticizes-pelosis-immigration-comment-idUSKBN1FH0RC\n", - "TITLE: Democratic senator criticizes Pelosi's immigration comment\n", - "BODY:\n", - "WASHINGTON (Reuters) - U.S. Senator Joe Manchin, a moderate Democrat, said on Sunday he thought a new White House immigration plan was a good starting point, and he criticized House Democratic leader Nancy Pelosi for dismissing it as a way to “make America white again.” “We don’t need that type of rhetoric on either side, from Nancy, (Republican House Speaker) Paul Ryan or anybody else,” said Manchin, a West Virginian and a leader of a bipartisan Senate group working on immigration. He spoke on CNN’s “State of the Union” program. Manchin’s comments highlighted differences among Democrats ahead of a Feb. 8 deadline for the U.S. Congress to pass another spending bill and try to reach an immigration agreement that would also protect up to 1.8 million illegal immigrants brought to the United States as children, a group known as “Dreamers,” from deportation. Senior White House officials outlined an immigration plan on Thursday that would offer Dreamers a path to citizenship. The proposal also would curb some legal immigration programs and build a border wall with Mexico. The White House described the language on Dreamers as a major concession to Democrats, but leading Democrats quickly dismissed the plan as a non-starter. FILE PHOTO - House Minority Leader Nancy Pelosi (D-CA) speaks during a news conference after President Donald Trump and the U.S. Congress failed to reach a deal on funding for federal agencies on Capitol Hill in Washington, U.S., January 20, 2018. REUTERS/Joshua Roberts Pelosi said it held Dreamers “hostage to a hateful anti-immigrant scheme” and accused the administration of Republican President Donald Trump of a campaign “to make America white again.” In a separate interview on Sunday on NBC’s “Meet the Press” program, Manchin said he thought the White House plan was “a good starting point.” Manchin said the bipartisan group that he and moderate Republican Senator Susan Collins lead would meet on Monday evening to examine the White House immigration outline. “I think we can find a pathway forward; I really do,” Manchin told NBC. Collins, speaking to CBS’s “Face the Nation” on Sunday, said the group hoped to influence a proposal that the Senate’s two whips, Republican John Cornyn and Democrat Dick Durbin, are trying to assemble. “If (Cornyn and Durbin) agree, I have a feeling that that will be a bill that can go all the way to the president’s desk, and that’s our goal,” Collins said. The group of more than 20 senators from both parties, which has been dubbed the “Common Sense Coalition,” helped to end a three-day U.S. government shutdown last week. Reporting by Susan Cornwell; Editing by Jeffrey Benkoe and Lisa Von AhnOur Standards:The Thomson Reuters Trust Principles.\n", - "GETTING https://www.reuters.com/article/us-usa-trump-russia/republican-senators-urge-congress-to-revisit-bill-to-protect-mueller-idUSKBN1FH0SG\n", - "URL: https://www.reuters.com/article/us-usa-trump-russia/republican-senators-urge-congress-to-revisit-bill-to-protect-mueller-idUSKBN1FH0SG\n", - "TITLE: Republican senators urge Congress to revisit bill to protect Mueller\n", - "BODY:\n", - "WASHINGTON (Reuters) - The U.S. Congress should revisit proposed legislation to protect special counsel Robert Mueller after President Donald Trump tried to fire him last year while he investigated the Trump campaign’s ties with Russia, two Republican senators said on Sunday. In separate television interviews, Senators Susan Collins and Lindsey Graham expressed dismay at reports the Republican president had told the top White House lawyer to order U.S. Justice Department officials to fire Mueller. “I’ve got legislation protecting Mr. Mueller, and I’d be glad to pass it tomorrow,” Graham told the ABC News “This Week” program. On CNN’s “State of the Union,” Collins said: “It certainly wouldn’t hurt to put that extra safeguard in place, given the latest stories.” Tensions over Mueller’s probe are hovering over Trump’s year-old presidency as he prepares to give his first State of the Union Address on Tuesday. The New York Times reported on Thursday that Trump ordered White House counsel Donald McGahn to fire Mueller in June but backed down after McGahn threatened to resign rather than carry out the order. McGahn was “fed up” after Trump’s order, a person familiar with the matter told Reuters. He did not issue an ultimatum directly to the president but told then-White House chief of staff Reince Priebus and then-chief strategist Steve Bannon that he wanted to quit, the source said. FILE PHOTO: Special Counsel Robert Mueller (R) departs after briefing members of the U.S. Senate on his investigation into potential collusion between Russia and the Trump campaign on Capitol Hill in Washington, U.S., June 21, 2017. REUTERS/Joshua Roberts/File PhotoGraham and three Democratic senators introduced legislation last August that would protect special counsels, including Mueller, by requiring that a panel of federal judges review any action to remove them. The likelihood that such a bill would become law have seemed remote. Republicans in the U.S. House of Representatives have shown little enthusiasm for the idea. “I don’t think there’s a need for legislation right now to protect Mueller,” House Republican leader Kevin McCarthy said on NBC’s “Meet the Press” program. “The president and his team have fully cooperated” with the special counsel, he said. U.S. President Donald Trump looks on during the World Economic Forum (WEF) annual meeting in Davos, Switzerland January 26, 2018. REUTERS/Carlos Barria Republicans hold the majority in both the House and Senate. Mueller is investigating whether Trump associates and the Kremlin colluded during the 2016 presidential election. Russia denies such collusion, and Trump frequently denounces the probe as a “witch hunt.” Both Collins and Graham said they saw no sign that Trump is currently trying to fire Mueller. “I think what happened here is the president had a bad idea,” Collins said. “He talked with his counsel, who explained to an angry and frustrated president why it was a bad idea.” Graham said: “It’s pretty clear to me everyone in the White House knows it’d be the end of President Trump’s presidency if he tried to fire Mr. Mueller.” Reporting by Yasmeen Abutaled and Caren Bohan Writing by Warren Strobel Editing by Lisa Von AhnOur Standards:The Thomson Reuters Trust Principles.\n", - "GETTING https://www.reuters.com/article/us-china-economy-growth/china-eyes-black-swans-gray-rhinos-as-2018-growth-seen-slowing-to-6-5-6-8-percent-media-idUSKBN1FI0AY?il=0\n", - "URL: https://www.reuters.com/article/us-china-economy-growth/china-eyes-black-swans-gray-rhinos-as-2018-growth-seen-slowing-to-6-5-6-8-percent-media-idUSKBN1FI0AY?il=0\n", - "TITLE: China eyes black swans, gray rhinos as 2018 growth seen slowing to 6.5-6.8 percent - media\n", - "BODY:\n", - "BEIJING (Reuters) - China’s economic growth will likely slow to 6.5-6.8 percent this year, a senior official at the country’s top economic planner wrote in the Beijing Daily on Monday, while warning about the risks of “Black Swan” and “Gray Rhino” events. Black swans, or unforeseen occurrences, and gray rhinos, or highly possible yet ignored threats, are likely to occur this year with adverse consequences, Fan Hengshan, vice secretary general of the National Development and Reform Commission (NDRC), wrote in a commentary in the state-controlled newspaper. China’s economy grew 6.9 percent in 2017, the first annual acceleration since 2010. That pace easily beat the government’s 2017 target of around 6.5 percent, welcome news for policymakers looking to curb financial risks and cut corporate debt. “My personal opinion is that economic growth this year is very likely to exceed 6.5 percent, roughly between 6.5 and 6.8 percent,” Fan said. Analysts polled by Reuters earlier this month also predicted a slowdown to 6.5 percent this year as government-led crackdowns on debt risks and factory pollution drag on overall activity. China will focus on fending off risks this year, particularly risks that will impact regions and cause systemic fluctuations, Fan said. “To this end, we must remain highly vigilant and enhance our sense of urgency,” Fan said. Earlier this month, China’s banking regulator chief told the official People’s Daily in an interview that a black swan event could threaten the country’s financial stability, adding that risks, while still manageable, are “complex and serious.” Reporting by Stella Qiu and Ryan Woo; Editing by Kim CoghillOur Standards:The Thomson Reuters Trust Principles.\n", - "GETTING https://www.reuters.com/article/us-australia-defence/australia-to-spend-3-1-billion-to-increase-stake-in-global-arms-exports-idUSKBN1FI08I?il=0\n", - "URL: https://www.reuters.com/article/us-australia-defence/australia-to-spend-3-1-billion-to-increase-stake-in-global-arms-exports-idUSKBN1FI08I?il=0\n", - "TITLE: Australia to spend $3.1 billion to increase stake in global arms exports\n", - "BODY:\n", - "SYDNEY (Reuters) - Prime Minister Malcolm Turnbull said on Monday Australian military equipment manufacturers will be offered government-backed loans as part of a A$3.8 billion ($3.1 billion) package to become one of the world’s top 10 defense exporters. Australia said in 2016 it would boost defense spending by A$30 billion by 2021, purchasing frigates, armored personnel carriers, strike fighter jets, drones and a fleet of new submarines - many of which would be built at home. The defense industry has struggled to obtain finance from traditional lenders that have been unwilling to fund the arms industry, so Australia has created a A$3.8 billion loan scheme for companies seeking finance to export military equipment. “Australia is around the 20th largest exporter. Given the size of our defense budget we should be higher up the scale than that,” Turnbull told reporters in Sydney. “The goal is to get into the top 10,” he said. Christopher Pyne, the minister for the defense industry, said Australia would target sales to the United States, Canada, Britain and New Zealand. Australia’s annual defense budget was worth A$34.6 billion this year. The scheme is also meant to arrest a slide in Australia’s manufacturing sector and provide some support for its economy, which has been hampered by record-low wage growth. Australia saw a record number of jobs created in 2017 but its manufacturing sector has shrunk significantly following the end of domestic car manufacturing. Employment in manufacturing peaked in mid-1989 at roughly 1.17 million, or 15 percent of the entire workforce. That shrank to 877,000, or 7 percent, late last year. Australia has seen a wave of new jobs but companies are not keen on paying employees more, leaving wage growth near record lows in an unwelcome drag on consumer spending and inflation. Australia’s expansion plans come amid increased global demand for military hardware, led by China and Middle East nations, prompting criticism of Canberra from aid agencies who argue Australia could make human rights violations worse if weapons were sold to the wrong buyers. Analysts said Australia would need to significantly expand sales beyond its traditional partners to have any chance of fulfilling its ambition. “There are possibilities, but I doubt U.S. interest especially will go beyond niche capabilities,” said Euan Graham, director of the international security program at Australian think tank the Lowy Institute. Reporting by Colin PackhamOur Standards:The Thomson Reuters Trust Principles.\n", - "GETTING https://www.reuters.com/article/us-afghanistan-blast/militants-attack-afghan-army-post-near-military-academy-in-capital-idUSKBN1FI07M?il=0\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "URL: https://www.reuters.com/article/us-afghanistan-blast/militants-attack-afghan-army-post-near-military-academy-in-capital-idUSKBN1FI07M?il=0\n", - "TITLE: Militants attack Afghan army post near military academy in capital\n", - "BODY:\n", - "KABUL (Reuters) - At least four militants attacked an army outpost near one of Afghanistan’s main military academies on Monday and at least one soldier was killed and three wounded, a defense ministry official said. The attack in the western outskirts of the capital, Kabul, came two days after an ambulance bomb in the center of the city killed more than 100 people and just over a week after another attack on the Hotel Intercontinental killed more than 20. Both of those attacks were claimed by the Taliban. Ministry of Defence officials said the militants attacked the outpost near the well-defended Marshal Fahim military academy just before dawn. One of the attackers blew himself up, one had been killed and two were still fighting. One soldier had been killed and three were wounded, said one official, who declined to be identified. Ministry spokesman Dawlat Waziri said three soldiers had been wounded and the clash was still going on. Earlier, resident Mohammad Ehsan said he heard a series of explosions coming from the area beginning at around 5 a.m. and lasting for at least an hour. Smaller blasts could still be heard at less frequent intervals. In October, a suicide attacker rammed a car full of explosives into a bus carrying cadets from the defense university, which is home to one of Afghanistan’s main officer training schools, killing 15 of them. Reporting by Omar Sobhani; Writing by James Mackenzie; Editing by Robert Birsel and Paul TaitOur Standards:The Thomson Reuters Trust Principles.\n", - "GETTING https://www.reuters.com/article/us-usa-election-kochs/fearing-democratic-wave-koch-network-to-spend-big-on-u-s-midterm-elections-idUSKBN1FI07H?il=0\n", - "URL: https://www.reuters.com/article/us-usa-election-kochs/fearing-democratic-wave-koch-network-to-spend-big-on-u-s-midterm-elections-idUSKBN1FI07H?il=0\n", - "TITLE: Fearing Democratic wave, Koch network to spend big on U.S. midterm elections\n", - "BODY:\n", - "INDIAN WELLS, Calif. (Reuters) - The conservative Koch network spent its annual donor conference celebrating policy victories under President Donald Trump such as the tax overhaul, but the elation was tinged with anxiety over November’s congressional elections that could pose a risk to its agenda. To that end, the network plans to spend what would be unprecedented sums for the Kochs to maintain Republican majorities in the U.S. Senate and House of Representatives, while trying to sell voters on the benefits of the newly passed tax package, according to network officials who briefed reporters on their strategy during the conference this weekend in Indian Wells, California. Historically, the party in power loses seats in congressional elections after a new president’s election. This year, Republican angst is compounded by Trump, whose tumultuous presidency helped galvanize Democratic and independent voters to go to the polls in special and state elections last year. “It’s going to be a very challenging environment,” said Tim Phillips, president of Americans for Prosperity, a grassroots political group that is part of the Koch network. “The left is energized. There’s no question about that.” The network is prepared to spend up to $400 million on the congressional races - a 60 percent increase from its investment in the 2016 election, officials said. Energy magnates Charles and David Koch have long been outsized players in Republican politics, but they never warmed to Trump during the 2016 campaign. With Trump in the White House, however, they have seen several policy goals realized, including the tax legislation and cutting federal regulations. But the Koch network still diverges from the Republican president on issues such as immigration and trade. The Kochs strongly support legislation that would protect “Dreamers” - people brought illegally to the United States as children - from deportation. Two Koch operatives, Daniel Garza and Jorge Lima, were at the White House on Friday to try to help broker a deal with Congress over the Dreamers. The network issued a statement on Friday disagreeing with a proposal in Trump’s immigration blueprint that would set new limits on legal immigration. On trade, Phillips and other Koch operatives are deeply concerned about the administration’s moves to impose tariffs on some imports and ardently support the North American Free Trade Agreement with Canada and Mexico, which is being renegotiated and that Trump has threatened to abandon. ‘GET OUT AND DEFINE YOURSELF’ Senator John Cornyn, the No. 2 Republican in the Senate, was an attendee at the Koch event, a measure of the network’s deep ties to conservatives in Congress and an example of the leverage it would lose should Democrats take control next year. Of the $400 million the network is looking to spend, $20 million will go toward promoting the tax law, which passed Congress in December and included big cuts in corporate tax rates along with tax reductions for many individuals. Polls at the time of passage showed Americans divided about the bill’s merits, but Phillips said he believed that would change as voters see increased paychecks. Democrats condemned the tax measure as favoring corporations and the rich. Americans for Prosperity is positioned to be a ground-level force in the congressional elections. Its largest presence is in Florida, where Democratic Senator Bill Nelson may face a fight from Republican Governor Rick Scott. The group also has offices in Arizona, Nevada, and Wisconsin, among other states, all of which are expected to see highly competitive Senate races. Phillips said his group would likely stay out of Republican primaries. One variable hanging over the Kochs’ effort is Trump. Republican losses in a special U.S. Senate election in Alabama last month and a governor’s race in Virginia in November were attributed in part to discontent with the president. In 2010, Republicans seized on voter worries about Democratic President Barack Obama’s signature healthcare law, known as Obamacare, to capture the House and thwart Obama’s policy goals. For the Koch network, the challenge will be to avoid having every local race become a referendum on the president, which could propel a Democratic wave. James Davis, vice president of Freedom Partners, another Koch-backed policy group, said strong candidates should be able to differentiate themselves from Trump. “Get out there and define yourself and where you stand on the issues,” Davis said. During one event, a donor from Nebraska, Gail Werner-Robertson, stood up and addressed Charles Koch directly, urging attendees to contribute more to the midterm effort. “We can’t lose the progress you all have fought so hard for,” she said.  Reporting by James Oliphant; Editing by Caren Bohan and Peter CooneyOur Standards:The Thomson Reuters Trust Principles.\n", - "GETTING https://www.reuters.com/article/uk-global-markets/asia-shares-extend-bull-run-dollar-crawls-off-lows-idUSKBN1FI01D?il=0\n", - "URL: https://www.reuters.com/article/uk-global-markets/asia-shares-extend-bull-run-dollar-crawls-off-lows-idUSKBN1FI01D?il=0\n", - "TITLE: Asia shares extend bull run, dollar crawls off lows\n", - "BODY:\n", - "SYDNEY (Reuters) - Asian shares extended their bull run on Monday amid upbeat corporate earnings and strong global economic growth, while the dollar tried to bounce even as the White House continued to complain of “unfair” trade practices by competitors. MSCI’s broadest index of Asia-Pacific shares outside Japan added 0.4 percent, aiming for a 12th straight session of gains. It is up 8 percent for the year so far. Japan’s Nikkei rose 0.5 percent as the yen eased a little, while South Korea notched a record. Hong Kong’s Hang Seng also rose 0.5 percent. It has been the best performer for the year with a rise of more than 11 percent, followed by Shanghai blue chips with gains of nearly 9 percent, though the latter dipped on Monday. Wall Street has likewise been on a tear. Just last week, the Dow rose 2.08 percent, the S&P; 500 2.22 percent and the Nasdaq 2.31 percent. Quarterly earnings growth for the S&P; 500 is estimated at 13.2 percent, according to Thomson Reuters data, up from 12 percent at the start of the year. Of the 133 companies in the index that have reported, almost 80 percent beat forecasts. Another 36 percent of the S&P; 500 is due to report this week including heavy hitters Apple, Alphabet, Facebook, Microsoft and Amazon. The rush to equities combined with the risk of faster global inflation, has been a major negative for sovereign bonds with yields rising across much of the developed world. Yields on U.S. two-year Treasuries have risen steadily to their highest since 2008 and are fully priced for a rate hike by the Federal Reserve in March. Ten-year yields broke above the range of the last week or so to reach 2.69 percent on Monday, levels last visited in mid-2014. The Fed holds its next meeting on Wednesday, the last for Chair Janet Yellen, and analysts suspect the statement will only cement expectations for a March move. WORDS MATTER The inexorable increase in Treasury yields has not, however, been enough to rescue the U.S. dollar which sank to three-year lows last week as U.S. officials welcomed a weaker currency. President Donald Trump did try and walk some of that back late in the week but by then the damage had been done. Indeed, in an interview shown on Sunday, Trump threatened to confront the European Union over what he calls “very unfair” trade policy toward the U.S.. “‘Words’ in the world of FX do matter,” said Deutsche Bank strategist George Saravelos. “The U.S. is reengaging with a weak dollar policy similarly to the 1994-95 period.” This was happening while the sum of trade and investment flows into the United States was shrinking. The opposite was happening in the euro zone, where the German export engine was powering an ever-expanding current account surplus. “We continue to target $1.30 in EUR/USD for this year,” Saravelos concluded. The euro did run into a little profit-taking in Asia on Monday which nudged it to back to $1.2393 and away from a three-year peak of $1.2538 last week. The dollar was a fraction firmer on the yen at 108.89, but not far from a four-month trough of 108.28. Against a basket of major currencies, it edged up 0.2 percent to 89.281 having been at the lowest since late 2014. The dollar faces a bevy of U.S. economic reports this week including releases on inflation, manufacturing and payrolls. The currency’s decline has been a boon for many commodities, with gold making a 17-month top last week and last trading at $1,348.10 an ounce. Oil prices had reached their highest in three years and Brent crude futures were holding atop $70 at $70.40 a barrel. U.S. crude futures were up 18 cents at $66.32. Editing by Shri Navaratnam and Kim CoghillOur Standards:The Thomson Reuters Trust Principles.\n", - "GETTING https://www.reuters.com/article/us-japan-cryptocurrency/japan-to-punish-hacked-cryptocurrency-exchange-coincheck-on-monday-idUSKBN1FI06S?il=0\n" - ] - }, - { - "ename": "KeyboardInterrupt", - "evalue": "", - "output_type": "error", - "traceback": [ - "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", - "\u001b[0;31mKeyboardInterrupt\u001b[0m Traceback (most recent call last)", - "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[1;32m 52\u001b[0m \u001b[0mreuters\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mWebsite\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'Reuters'\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m'https://www.reuters.com'\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m'^(/article/)'\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;32mFalse\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m'h1'\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m'div.StandardArticleBody_body_1gnLA'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 53\u001b[0m \u001b[0mcrawler\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mCrawler\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mreuters\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 54\u001b[0;31m \u001b[0mcrawler\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mcrawl\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m", - "\u001b[0;32m\u001b[0m in \u001b[0;36mcrawl\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 47\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msite\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mabsoluteUrl\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 48\u001b[0m \u001b[0mtargetPage\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m'{}{}'\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mformat\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msite\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0murl\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mtargetPage\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 49\u001b[0;31m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mparse\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mtargetPage\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 50\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 51\u001b[0m \u001b[0;31m# self, name, url, targetPattern, absoluteUrl, titleTag, bodyTag\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m\u001b[0m in \u001b[0;36mparse\u001b[0;34m(self, url)\u001b[0m\n\u001b[1;32m 27\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 28\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0mparse\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0murl\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 29\u001b[0;31m \u001b[0mbs\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mgetPage\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0murl\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 30\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mbs\u001b[0m \u001b[0;32mis\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0;32mNone\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 31\u001b[0m \u001b[0mtitle\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msafeGet\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mbs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msite\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mtitleTag\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m\u001b[0m in \u001b[0;36mgetPage\u001b[0;34m(self, url)\u001b[0m\n\u001b[1;32m 9\u001b[0m \u001b[0mprint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"GETTING \"\u001b[0m\u001b[0;34m+\u001b[0m\u001b[0murl\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 10\u001b[0m \u001b[0;32mtry\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 11\u001b[0;31m \u001b[0mreq\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mrequests\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mget\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0murl\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 12\u001b[0m \u001b[0;32mexcept\u001b[0m \u001b[0mrequests\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mexceptions\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mRequestException\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 13\u001b[0m \u001b[0mprint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"Did not get page\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/requests/api.py\u001b[0m in \u001b[0;36mget\u001b[0;34m(url, params, **kwargs)\u001b[0m\n\u001b[1;32m 65\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 66\u001b[0m \u001b[0mkwargs\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msetdefault\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'allow_redirects'\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;32mTrue\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 67\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mrequest\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'get'\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0murl\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mparams\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mparams\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 68\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 69\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/requests/api.py\u001b[0m in \u001b[0;36mrequest\u001b[0;34m(method, url, **kwargs)\u001b[0m\n\u001b[1;32m 51\u001b[0m \u001b[0;31m# cases, and look like a memory leak in others.\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 52\u001b[0m \u001b[0;32mwith\u001b[0m \u001b[0msessions\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mSession\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;32mas\u001b[0m \u001b[0msession\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 53\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0msession\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mrequest\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mmethod\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mmethod\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0murl\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0murl\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 54\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 55\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/requests/sessions.py\u001b[0m in \u001b[0;36m__exit__\u001b[0;34m(self, *args)\u001b[0m\n\u001b[1;32m 348\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 349\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0m__exit__\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 350\u001b[0;31m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mclose\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 351\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 352\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0mprepare_request\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mrequest\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/requests/sessions.py\u001b[0m in \u001b[0;36mclose\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 647\u001b[0m \u001b[0;34m\"\"\"Closes all adapters and as such the session\"\"\"\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 648\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0mv\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0madapters\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mvalues\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 649\u001b[0;31m \u001b[0mv\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mclose\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 650\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 651\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0mmount\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mprefix\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0madapter\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/requests/adapters.py\u001b[0m in \u001b[0;36mclose\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 268\u001b[0m \u001b[0mconnections\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 269\u001b[0m \"\"\"\n\u001b[0;32m--> 270\u001b[0;31m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mpoolmanager\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mclear\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 271\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 272\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0mrequest_url\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mrequest\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mproxies\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/requests/packages/urllib3/poolmanager.py\u001b[0m in \u001b[0;36mclear\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 98\u001b[0m \u001b[0mre\u001b[0m\u001b[0;34m-\u001b[0m\u001b[0mused\u001b[0m \u001b[0mafter\u001b[0m \u001b[0mcompletion\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 99\u001b[0m \"\"\"\n\u001b[0;32m--> 100\u001b[0;31m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mpools\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mclear\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 101\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 102\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0mconnection_from_host\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mhost\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mport\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;32mNone\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mscheme\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;34m'http'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/requests/packages/urllib3/_collections.py\u001b[0m in \u001b[0;36mclear\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 92\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mdispose_func\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 93\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0mvalue\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mvalues\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 94\u001b[0;31m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mdispose_func\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mvalue\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 95\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 96\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0mkeys\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/requests/packages/urllib3/poolmanager.py\u001b[0m in \u001b[0;36m\u001b[0;34m(p)\u001b[0m\n\u001b[1;32m 64\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mconnection_pool_kw\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mconnection_pool_kw\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 65\u001b[0m self.pools = RecentlyUsedContainer(num_pools,\n\u001b[0;32m---> 66\u001b[0;31m dispose_func=lambda p: p.close())\n\u001b[0m\u001b[1;32m 67\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 68\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0m__enter__\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/requests/packages/urllib3/connectionpool.py\u001b[0m in \u001b[0;36mclose\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 410\u001b[0m \u001b[0mconn\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mold_pool\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mget\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mblock\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;32mFalse\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 411\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mconn\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 412\u001b[0;31m \u001b[0mconn\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mclose\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 413\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 414\u001b[0m \u001b[0;32mexcept\u001b[0m \u001b[0mEmpty\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;31mKeyboardInterrupt\u001b[0m: " - ] - } - ], - "source": [ - "import re\n", - "\n", - "\n", - "class Crawler:\n", - " def __init__(self, site):\n", - " self.site = site\n", - " self.visited = []\n", - "\n", - " def getPage(self, url):\n", - " try:\n", - " req = requests.get(url)\n", - " except requests.exceptions.RequestException:\n", - " return None\n", - " return BeautifulSoup(req.text, 'html.parser')\n", - "\n", - " def safeGet(self, pageObj, selector):\n", - " selectedElems = pageObj.select(selector)\n", - " if selectedElems is not None and len(selectedElems) > 0:\n", - " return '\\n'.join([elem.get_text() for elem in selectedElems])\n", - " return ''\n", - "\n", - " def parse(self, url):\n", - " bs = self.getPage(url)\n", - " if bs is not None:\n", - " title = self.safeGet(bs, self.site.titleTag)\n", - " body = self.safeGet(bs, self.site.bodyTag)\n", - " if title != '' and body != '':\n", - " content = Content(url, title, body)\n", - " content.print()\n", - "\n", - " def crawl(self):\n", - " \"\"\"\n", - " Get pages from website home page\n", - " \"\"\"\n", - " bs = self.getPage(self.site.url)\n", - " targetPages = bs.findAll('a', href=re.compile(self.site.targetPattern))\n", - " for targetPage in targetPages:\n", - " targetPage = targetPage.attrs['href']\n", - " if targetPage not in self.visited:\n", - " self.visited.append(targetPage)\n", - " if not self.site.absoluteUrl:\n", - " targetPage = '{}{}'.format(self.site.url, targetPage)\n", - " self.parse(targetPage)\n", - "\n", - "\n", - "reuters = Website('Reuters', 'https://www.reuters.com', '^(/article/)',\n", - " False, 'h1', 'div.StandardArticleBody_body_1gnLA')\n", - "crawler = Crawler(reuters)\n", - "crawler.crawl()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Crawling multiple page types" - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "metadata": {}, - "outputs": [], - "source": [ - "class Website:\n", - " \"\"\"Common base class for all articles/pages\"\"\"\n", - "\n", - " def __init__(self, name, url, titleTag, bodyTag):\n", - " self.name = name\n", - " self.url = url\n", - " self.titleTag = titleTag\n", - " self.bodyTag = bodyTag\n", - " " - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "metadata": {}, - "outputs": [], - "source": [ - "class Product(Website):\n", - " \"\"\"Contains information for scraping a product page\"\"\"\n", - "\n", - " def __init__(self, name, url, titleTag, productNumber, price):\n", - " Website.__init__(self, name, url, TitleTag)\n", - " self.productNumberTag = productNumberTag\n", - " self.priceTag = priceTag\n", - "\n", - "class Article(Website):\n", - " \"\"\"Contains information for scraping an article page\"\"\"\n", - "\n", - " def __init__(self, name, url, titleTag, bodyTag, dateTag):\n", - " Website.__init__(self, name, url, titleTag)\n", - " self.bodyTag = bodyTag\n", - " self.dateTag = dateTag" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "\n", - "def parsePage(url):\n", - " \n", - " if '/ideas/' in url:\n", - " \n", - "\n", - "oreilly = Website('O\\'Reilly', 'https://oreilly.com', 'h1' '') " - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.6.1" - } - }, - "nbformat": 4, - "nbformat_minor": 2 -} diff --git a/Chapter01_BeginningToScrape.ipynb b/Chapter04_FirstWebScraper.ipynb similarity index 79% rename from Chapter01_BeginningToScrape.ipynb rename to Chapter04_FirstWebScraper.ipynb index 8d7a74b..58850e8 100644 --- a/Chapter01_BeginningToScrape.ipynb +++ b/Chapter04_FirstWebScraper.ipynb @@ -1,5 +1,12 @@ { "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Writing Your First Web Scraper" + ] + }, { "cell_type": "code", "execution_count": 1, @@ -44,7 +51,35 @@ }, { "cell_type": "code", - "execution_count": 10, + "execution_count": 34, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[]" + ] + }, + "execution_count": 34, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "from urllib.request import urlopen\n", + "from bs4 import BeautifulSoup\n", + "\n", + "html = urlopen('https://en.wikipedia.org/wiki/Iron_Gwazi')\n", + "bs = BeautifulSoup(html.read(), 'html.parser')\n", + "# 'class':['mw-file-description']\n", + "#bs.find_all(attrs={'class': ['mw-ui-icon-wikimedia-listBullet', 'vector-icon']})\n", + "\n", + "bs.find_all(_class='mw-ui-icon-wikimedia-listBullet')" + ] + }, + { + "cell_type": "code", + "execution_count": 2, "metadata": {}, "outputs": [ { @@ -72,7 +107,7 @@ }, { "cell_type": "code", - "execution_count": 12, + "execution_count": 5, "metadata": {}, "outputs": [ { @@ -121,7 +156,7 @@ ], "metadata": { "kernelspec": { - "display_name": "Python 3", + "display_name": "Python 3 (ipykernel)", "language": "python", "name": "python3" }, @@ -135,7 +170,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.6.1" + "version": "3.9.12" } }, "nbformat": 4, diff --git a/Chapter05_AdvancedHTMLParsing.ipynb b/Chapter05_AdvancedHTMLParsing.ipynb new file mode 100644 index 0000000..987715d --- /dev/null +++ b/Chapter05_AdvancedHTMLParsing.ipynb @@ -0,0 +1,1058 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "\n", + "\n", + "\n", + "\n", + "

War and Peace

\n", + "

Chapter 1

\n", + "
\n", + "\"Well, Prince, so Genoa and Lucca are now just family estates of the\n", + "Buonapartes. But I warn you, if you don't tell me that this means war,\n", + "if you still try to defend the infamies and horrors perpetrated by\n", + "that Antichrist- I really believe he is Antichrist- I will have\n", + "nothing more to do with you and you are no longer my friend, no longer\n", + "my 'faithful slave,' as you call yourself! But how do you do? I see\n", + "I have frightened you- sit down and tell me all the news.\"\n", + "

\n", + "It was in July, 1805, and the speaker was the well-known Anna\n", + "Pavlovna Scherer, maid of honor and favorite of the Empress Marya\n", + "Fedorovna. With these words she greeted Prince Vasili Kuragin, a man\n", + "of high rank and importance, who was the first to arrive at her\n", + "reception. Anna Pavlovna had had a cough for some days. She was, as\n", + "she said, suffering from la grippe; grippe being then a new word in\n", + "St. Petersburg, used only by the elite.\n", + "

\n", + "All her invitations without exception, written in French, and\n", + "delivered by a scarlet-liveried footman that morning, ran as follows:\n", + "

\n", + "\"If you have nothing better to do, Count [or Prince], and if the\n", + "prospect of spending an evening with a poor invalid is not too\n", + "terrible, I shall be very charmed to see you tonight between 7 and 10-\n", + "Annette Scherer.\"\n", + "

\n", + "\"Heavens! what a virulent attack!\" replied the prince, not in the\n", + "least disconcerted by this reception. He had just entered, wearing\n", + "an embroidered court uniform, knee breeches, and shoes, and had\n", + "stars on his breast and a serene expression on his flat face. He spoke\n", + "in that refined French in which our grandfathers not only spoke but\n", + "thought, and with the gentle, patronizing intonation natural to a\n", + "man of importance who had grown old in society and at court. He went\n", + "up to Anna Pavlovna, kissed her hand, presenting to her his bald,\n", + "scented, and shining head, and complacently seated himself on the\n", + "sofa.\n", + "

\n", + "\"First of all, dear friend, tell me how you are. Set your friend's\n", + "mind at rest,\" said he without altering his tone, beneath the\n", + "politeness and affected sympathy of which indifference and even\n", + "irony could be discerned.\n", + "

\n", + "\"Can one be well while suffering morally? Can one be calm in times\n", + "like these if one has any feeling?\" said Anna Pavlovna. \"You are\n", + "staying the whole evening, I hope?\"\n", + "

\n", + "\"And the fete at the English ambassador's? Today is Wednesday. I\n", + "must put in an appearance there,\" said the prince. \"My daughter is\n", + "coming for me to take me there.\"\n", + "

\n", + "\"I thought today's fete had been canceled. I confess all these\n", + "festivities and fireworks are becoming wearisome.\"\n", + "

\n", + "\"If they had known that you wished it, the entertainment would\n", + "have been put off,\" said the prince, who, like a wound-up clock, by\n", + "force of habit said things he did not even wish to be believed.\n", + "

\n", + "\"Don't tease! Well, and what has been decided about Novosiltsev's\n", + "dispatch? You know everything.\"\n", + "

\n", + "\"What can one say about it?\" replied the prince in a cold,\n", + "listless tone. \"What has been decided? They have decided that\n", + "Buonaparte has burnt his boats, and I believe that we are ready to\n", + "burn ours.\"\n", + "

\n", + "Prince Vasili always spoke languidly, like an actor repeating a\n", + "stale part. Anna Pavlovna Scherer on the contrary, despite her forty\n", + "years, overflowed with animation and impulsiveness. To be an\n", + "enthusiast had become her social vocation and, sometimes even when she\n", + "did not feel like it, she became enthusiastic in order not to\n", + "disappoint the expectations of those who knew her. The subdued smile\n", + "which, though it did not suit her faded features, always played\n", + "round her lips expressed, as in a spoiled child, a continual\n", + "consciousness of her charming defect, which she neither wished, nor\n", + "could, nor considered it necessary, to correct.\n", + "

\n", + "In the midst of a conversation on political matters Anna Pavlovna\n", + "burst out:\n", + "

\n", + "\"Oh, don't speak to me of Austria. Perhaps I don't understand\n", + "things, but Austria never has wished, and does not wish, for war.\n", + "She is betraying us! Russia alone must save Europe. Our gracious\n", + "sovereign recognizes his high vocation and will be true to it. That is\n", + "the one thing I have faith in! Our good and wonderful sovereign has to\n", + "perform the noblest role on earth, and he is so virtuous and noble\n", + "that God will not forsake him. He will fulfill his vocation and\n", + "crush the hydra of revolution, which has become more terrible than\n", + "ever in the person of this murderer and villain! We alone must\n", + "avenge the blood of the just one.... Whom, I ask you, can we rely\n", + "on?... England with her commercial spirit will not and cannot\n", + "understand the Emperor Alexander's loftiness of soul. She has\n", + "refused to evacuate Malta. She wanted to find, and still seeks, some\n", + "secret motive in our actions. What answer did Novosiltsev get? None.\n", + "The English have not understood and cannot understand the\n", + "self-abnegation of our Emperor who wants nothing for himself, but only\n", + "desires the good of mankind. And what have they promised? Nothing! And\n", + "what little they have promised they will not perform! Prussia has\n", + "always declared that Buonaparte is invincible, and that all Europe\n", + "is powerless before him.... And I don't believe a word that Hardenburg\n", + "says, or Haugwitz either. This famous Prussian neutrality is just a\n", + "trap. I have faith only in God and the lofty destiny of our adored\n", + "monarch. He will save Europe!\"\n", + "

\n", + "She suddenly paused, smiling at her own impetuosity.\n", + "

\n", + "\"I think,\" said the prince with a smile, \"that if you had been\n", + "sent instead of our dear Wintzingerode you would have captured the\n", + "King of Prussia's consent by assault. You are so eloquent. Will you\n", + "give me a cup of tea?\"\n", + "

\n", + "\"In a moment. A propos,\" she added, becoming calm again, \"I am\n", + "expecting two very interesting men tonight, le Vicomte de Mortemart,\n", + "who is connected with the Montmorencys through the Rohans, one of\n", + "the best French families. He is one of the genuine emigres, the good\n", + "ones. And also the Abbe Morio. Do you know that profound thinker? He\n", + "has been received by the Emperor. Had you heard?\"\n", + "

\n", + "\"I shall be delighted to meet them,\" said the prince. \"But tell me,\"\n", + "he added with studied carelessness as if it had only just occurred\n", + "to him, though the question he was about to ask was the chief motive\n", + "of his visit, \"is it true that the Dowager Empress wants Baron Funke\n", + "to be appointed first secretary at Vienna? The baron by all accounts\n", + "is a poor creature.\"\n", + "

\n", + "Prince Vasili wished to obtain this post for his son, but others\n", + "were trying through the Dowager Empress Marya Fedorovna to secure it\n", + "for the baron.\n", + "

\n", + "Anna Pavlovna almost closed her eyes to indicate that neither she\n", + "nor anyone else had a right to criticize what the Empress desired or\n", + "was pleased with.\n", + "

\n", + "\"Baron Funke has been recommended to the Dowager Empress by her\n", + "sister,\" was all she said, in a dry and mournful tone.\n", + "

\n", + "As she named the Empress, Anna Pavlovna's face suddenly assumed an\n", + "expression of profound and sincere devotion and respect mingled with\n", + "sadness, and this occurred every time she mentioned her illustrious\n", + "patroness. She added that Her Majesty had deigned to show Baron\n", + "Funke, and again her face clouded over with sadness.\n", + "

\n", + "The prince was silent and looked indifferent. But, with the\n", + "womanly and courtierlike quickness and tact habitual to her, Anna\n", + "Pavlovna wished both to rebuke him (for daring to speak he had done of\n", + "a man recommended to the Empress) and at the same time to console him,\n", + "so she said:\n", + "

\n", + "\"Now about your family. Do you know that since your daughter came\n", + "out everyone has been enraptured by her? They say she is amazingly\n", + "beautiful.\"\n", + "

\n", + "The prince bowed to signify his respect and gratitude.\n", + "

\n", + "\"I often think,\" she continued after a short pause, drawing nearer\n", + "to the prince and smiling amiably at him as if to show that\n", + "political and social topics were ended and the time had come for\n", + "intimate conversation- \"I often think how unfairly sometimes the\n", + "joys of life are distributed. Why has fate given you two such splendid\n", + "children? I don't speak of Anatole, your youngest. I don't like\n", + "him,\" she added in a tone admitting of no rejoinder and raising her\n", + "eyebrows. \"Two such charming children. And really you appreciate\n", + "them less than anyone, and so you don't deserve to have them.\"\n", + "

\n", + "And she smiled her ecstatic smile.\n", + "

\n", + "\"I can't help it,\" said the prince. \"Lavater would have said I\n", + "lack the bump of paternity.\"\n", + "

\n", + "\"Don't joke; I mean to have a serious talk with you. Do you know I\n", + "am dissatisfied with your younger son? Between ourselves\" (and her\n", + "face assumed its melancholy expression), \"he was mentioned at Her\n", + "Majesty's and you were pitied....\"\n", + "

\n", + "The prince answered nothing, but she looked at him significantly,\n", + "awaiting a reply. He frowned.\n", + "

\n", + "\"What would you have me do?\" he said at last. \"You know I did all\n", + "a father could for their education, and they have both turned out\n", + "fools. Hippolyte is at least a quiet fool, but Anatole is an active\n", + "one. That is the only difference between them.\" He said this smiling\n", + "in a way more natural and animated than usual, so that the wrinkles\n", + "round his mouth very clearly revealed something unexpectedly coarse\n", + "and unpleasant.\n", + "

\n", + "\"And why are children born to such men as you? If you were not a\n", + "father there would be nothing I could reproach you with,\" said Anna\n", + "Pavlovna, looking up pensively.\n", + "

\n", + "\"I am your faithful slave and to you alone I can confess that my\n", + "children are the bane of my life. It is the cross I have to bear. That\n", + "is how I explain it to myself. It can't be helped!\"\n", + "

\n", + "He said no more, but expressed his resignation to cruel fate by a\n", + "gesture. Anna Pavlovna meditated.\n", + "
\n", + "\n", + "\n", + "\n" + ] + } + ], + "source": [ + "from urllib.request import urlopen\n", + "from bs4 import BeautifulSoup\n", + "html = urlopen('http://www.pythonscraping.com/pages/warandpeace.html')\n", + "bs = BeautifulSoup(html, 'html.parser')\n", + "print(bs)" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [], + "source": [ + "from urllib.request import urlopen\n", + "from bs4 import BeautifulSoup\n", + "html = urlopen('http://www.pythonscraping.com/pages/warandpeace.html')\n", + "bs = BeautifulSoup(html, \"html.parser\")" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Well, Prince, so Genoa and Lucca are now just family estates of the\n", + "Buonapartes. But I warn you, if you don't tell me that this means war,\n", + "if you still try to defend the infamies and horrors perpetrated by\n", + "that Antichrist- I really believe he is Antichrist- I will have\n", + "nothing more to do with you and you are no longer my friend, no longer\n", + "my 'faithful slave,' as you call yourself! But how do you do? I see\n", + "I have frightened you- sit down and tell me all the news.\n", + "Anna\n", + "Pavlovna Scherer\n", + "Empress Marya\n", + "Fedorovna\n", + "Prince Vasili Kuragin\n", + "Anna Pavlovna\n", + "St. Petersburg\n", + "If you have nothing better to do, Count [or Prince], and if the\n", + "prospect of spending an evening with a poor invalid is not too\n", + "terrible, I shall be very charmed to see you tonight between 7 and 10-\n", + "Annette Scherer.\n", + "Heavens! what a virulent attack!\n", + "the prince\n", + "Anna Pavlovna\n", + "First of all, dear friend, tell me how you are. Set your friend's\n", + "mind at rest,\n", + "Can one be well while suffering morally? Can one be calm in times\n", + "like these if one has any feeling?\n", + "Anna Pavlovna\n", + "You are\n", + "staying the whole evening, I hope?\n", + "And the fete at the English ambassador's? Today is Wednesday. I\n", + "must put in an appearance there,\n", + "the prince\n", + "My daughter is\n", + "coming for me to take me there.\n", + "I thought today's fete had been canceled. I confess all these\n", + "festivities and fireworks are becoming wearisome.\n", + "If they had known that you wished it, the entertainment would\n", + "have been put off,\n", + "the prince\n", + "Don't tease! Well, and what has been decided about Novosiltsev's\n", + "dispatch? You know everything.\n", + "What can one say about it?\n", + "the prince\n", + "What has been decided? They have decided that\n", + "Buonaparte has burnt his boats, and I believe that we are ready to\n", + "burn ours.\n", + "Prince Vasili\n", + "Anna Pavlovna\n", + "Anna Pavlovna\n", + "Oh, don't speak to me of Austria. Perhaps I don't understand\n", + "things, but Austria never has wished, and does not wish, for war.\n", + "She is betraying us! Russia alone must save Europe. Our gracious\n", + "sovereign recognizes his high vocation and will be true to it. That is\n", + "the one thing I have faith in! Our good and wonderful sovereign has to\n", + "perform the noblest role on earth, and he is so virtuous and noble\n", + "that God will not forsake him. He will fulfill his vocation and\n", + "crush the hydra of revolution, which has become more terrible than\n", + "ever in the person of this murderer and villain! We alone must\n", + "avenge the blood of the just one.... Whom, I ask you, can we rely\n", + "on?... England with her commercial spirit will not and cannot\n", + "understand the Emperor Alexander's loftiness of soul. She has\n", + "refused to evacuate Malta. She wanted to find, and still seeks, some\n", + "secret motive in our actions. What answer did Novosiltsev get? None.\n", + "The English have not understood and cannot understand the\n", + "self-abnegation of our Emperor who wants nothing for himself, but only\n", + "desires the good of mankind. And what have they promised? Nothing! And\n", + "what little they have promised they will not perform! Prussia has\n", + "always declared that Buonaparte is invincible, and that all Europe\n", + "is powerless before him.... And I don't believe a word that Hardenburg\n", + "says, or Haugwitz either. This famous Prussian neutrality is just a\n", + "trap. I have faith only in God and the lofty destiny of our adored\n", + "monarch. He will save Europe!\n", + "I think,\n", + "the prince\n", + "that if you had been\n", + "sent instead of our dear Wintzingerode you would have captured the\n", + "King of Prussia's consent by assault. You are so eloquent. Will you\n", + "give me a cup of tea?\n", + "Wintzingerode\n", + "King of Prussia\n", + "In a moment. A propos,\n", + "I am\n", + "expecting two very interesting men tonight, le Vicomte de Mortemart,\n", + "who is connected with the Montmorencys through the Rohans, one of\n", + "the best French families. He is one of the genuine emigres, the good\n", + "ones. And also the Abbe Morio. Do you know that profound thinker? He\n", + "has been received by the Emperor. Had you heard?\n", + "le Vicomte de Mortemart\n", + "Montmorencys\n", + "Rohans\n", + "Abbe Morio\n", + "the Emperor\n", + "I shall be delighted to meet them,\n", + "the prince\n", + "But tell me,\n", + "is it true that the Dowager Empress wants Baron Funke\n", + "to be appointed first secretary at Vienna? The baron by all accounts\n", + "is a poor creature.\n", + "Prince Vasili\n", + "Dowager Empress Marya Fedorovna\n", + "the baron\n", + "Anna Pavlovna\n", + "the Empress\n", + "Baron Funke has been recommended to the Dowager Empress by her\n", + "sister,\n", + "the Empress\n", + "Anna Pavlovna's\n", + "Her Majesty\n", + "Baron\n", + "Funke\n", + "The prince\n", + "Anna\n", + "Pavlovna\n", + "the Empress\n", + "Now about your family. Do you know that since your daughter came\n", + "out everyone has been enraptured by her? They say she is amazingly\n", + "beautiful.\n", + "The prince\n", + "I often think,\n", + "I often think how unfairly sometimes the\n", + "joys of life are distributed. Why has fate given you two such splendid\n", + "children? I don't speak of Anatole, your youngest. I don't like\n", + "him,\n", + "Anatole\n", + "Two such charming children. And really you appreciate\n", + "them less than anyone, and so you don't deserve to have them.\n", + "I can't help it,\n", + "the prince\n", + "Lavater would have said I\n", + "lack the bump of paternity.\n", + "Don't joke; I mean to have a serious talk with you. Do you know I\n", + "am dissatisfied with your younger son? Between ourselves\n", + "he was mentioned at Her\n", + "Majesty's and you were pitied....\n", + "The prince\n", + "What would you have me do?\n", + "You know I did all\n", + "a father could for their education, and they have both turned out\n", + "fools. Hippolyte is at least a quiet fool, but Anatole is an active\n", + "one. That is the only difference between them.\n", + "And why are children born to such men as you? If you were not a\n", + "father there would be nothing I could reproach you with,\n", + "Anna\n", + "Pavlovna\n", + "I am your faithful slave and to you alone I can confess that my\n", + "children are the bane of my life. It is the cross I have to bear. That\n", + "is how I explain it to myself. It can't be helped!\n", + "Anna Pavlovna\n" + ] + } + ], + "source": [ + "#.find_all('span', {'class':{'green', 'red'}})\n", + "nameList = bs.findAll('span', {'class': ['green', 'red']})\n", + "for name in nameList:\n", + " print(name.get_text())" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Anna\n", + "Pavlovna Scherer\n", + "Empress Marya\n", + "Fedorovna\n", + "Prince Vasili Kuragin\n", + "Anna Pavlovna\n", + "St. Petersburg\n", + "the prince\n", + "Anna Pavlovna\n", + "Anna Pavlovna\n", + "the prince\n", + "the prince\n", + "the prince\n", + "Prince Vasili\n", + "Anna Pavlovna\n", + "Anna Pavlovna\n", + "the prince\n", + "Wintzingerode\n", + "King of Prussia\n", + "le Vicomte de Mortemart\n", + "Montmorencys\n", + "Rohans\n", + "Abbe Morio\n", + "the Emperor\n", + "the prince\n", + "Prince Vasili\n", + "Dowager Empress Marya Fedorovna\n", + "the baron\n", + "Anna Pavlovna\n", + "the Empress\n", + "the Empress\n", + "Anna Pavlovna's\n", + "Her Majesty\n", + "Baron\n", + "Funke\n", + "The prince\n", + "Anna\n", + "Pavlovna\n", + "the Empress\n", + "The prince\n", + "Anatole\n", + "the prince\n", + "The prince\n", + "Anna\n", + "Pavlovna\n", + "Anna Pavlovna\n" + ] + } + ], + "source": [ + "nameList = bs.findAll('span', {'class': 'green'})\n", + "for name in nameList:\n", + " print(name.get_text())" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[

War and Peace

,

Chapter 1

]\n" + ] + } + ], + "source": [ + "titles = bs.find_all(['h1', 'h2','h3','h4','h5','h6'])\n", + "print([title for title in titles])\n" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[Well, Prince, so Genoa and Lucca are now just family estates of the\n", + "Buonapartes. But I warn you, if you don't tell me that this means war,\n", + "if you still try to defend the infamies and horrors perpetrated by\n", + "that Antichrist- I really believe he is Antichrist- I will have\n", + "nothing more to do with you and you are no longer my friend, no longer\n", + "my 'faithful slave,' as you call yourself! But how do you do? I see\n", + "I have frightened you- sit down and tell me all the news., Anna\n", + "Pavlovna Scherer, Empress Marya\n", + "Fedorovna, Prince Vasili Kuragin, Anna Pavlovna, St. Petersburg, If you have nothing better to do, Count [or Prince], and if the\n", + "prospect of spending an evening with a poor invalid is not too\n", + "terrible, I shall be very charmed to see you tonight between 7 and 10-\n", + "Annette Scherer., Heavens! what a virulent attack!, the prince, Anna Pavlovna, First of all, dear friend, tell me how you are. Set your friend's\n", + "mind at rest,, Can one be well while suffering morally? Can one be calm in times\n", + "like these if one has any feeling?, Anna Pavlovna, You are\n", + "staying the whole evening, I hope?, And the fete at the English ambassador's? Today is Wednesday. I\n", + "must put in an appearance there,, the prince, My daughter is\n", + "coming for me to take me there., I thought today's fete had been canceled. I confess all these\n", + "festivities and fireworks are becoming wearisome., If they had known that you wished it, the entertainment would\n", + "have been put off,, the prince, Don't tease! Well, and what has been decided about Novosiltsev's\n", + "dispatch? You know everything., What can one say about it?, the prince, What has been decided? They have decided that\n", + "Buonaparte has burnt his boats, and I believe that we are ready to\n", + "burn ours., Prince Vasili, Anna Pavlovna, Anna Pavlovna, Oh, don't speak to me of Austria. Perhaps I don't understand\n", + "things, but Austria never has wished, and does not wish, for war.\n", + "She is betraying us! Russia alone must save Europe. Our gracious\n", + "sovereign recognizes his high vocation and will be true to it. That is\n", + "the one thing I have faith in! Our good and wonderful sovereign has to\n", + "perform the noblest role on earth, and he is so virtuous and noble\n", + "that God will not forsake him. He will fulfill his vocation and\n", + "crush the hydra of revolution, which has become more terrible than\n", + "ever in the person of this murderer and villain! We alone must\n", + "avenge the blood of the just one.... Whom, I ask you, can we rely\n", + "on?... England with her commercial spirit will not and cannot\n", + "understand the Emperor Alexander's loftiness of soul. She has\n", + "refused to evacuate Malta. She wanted to find, and still seeks, some\n", + "secret motive in our actions. What answer did Novosiltsev get? None.\n", + "The English have not understood and cannot understand the\n", + "self-abnegation of our Emperor who wants nothing for himself, but only\n", + "desires the good of mankind. And what have they promised? Nothing! And\n", + "what little they have promised they will not perform! Prussia has\n", + "always declared that Buonaparte is invincible, and that all Europe\n", + "is powerless before him.... And I don't believe a word that Hardenburg\n", + "says, or Haugwitz either. This famous Prussian neutrality is just a\n", + "trap. I have faith only in God and the lofty destiny of our adored\n", + "monarch. He will save Europe!, I think,, the prince, that if you had been\n", + "sent instead of our dear Wintzingerode you would have captured the\n", + "King of Prussia's consent by assault. You are so eloquent. Will you\n", + "give me a cup of tea?, Wintzingerode, King of Prussia, In a moment. A propos,, I am\n", + "expecting two very interesting men tonight, le Vicomte de Mortemart,\n", + "who is connected with the Montmorencys through the Rohans, one of\n", + "the best French families. He is one of the genuine emigres, the good\n", + "ones. And also the Abbe Morio. Do you know that profound thinker? He\n", + "has been received by the Emperor. Had you heard?, le Vicomte de Mortemart, Montmorencys, Rohans, Abbe Morio, the Emperor, I shall be delighted to meet them,, the prince, But tell me,, is it true that the Dowager Empress wants Baron Funke\n", + "to be appointed first secretary at Vienna? The baron by all accounts\n", + "is a poor creature., Prince Vasili, Dowager Empress Marya Fedorovna, the baron, Anna Pavlovna, the Empress, Baron Funke has been recommended to the Dowager Empress by her\n", + "sister,, the Empress, Anna Pavlovna's, Her Majesty, Baron\n", + "Funke, The prince, Anna\n", + "Pavlovna, the Empress, Now about your family. Do you know that since your daughter came\n", + "out everyone has been enraptured by her? They say she is amazingly\n", + "beautiful., The prince, I often think,, I often think how unfairly sometimes the\n", + "joys of life are distributed. Why has fate given you two such splendid\n", + "children? I don't speak of Anatole, your youngest. I don't like\n", + "him,, Anatole, Two such charming children. And really you appreciate\n", + "them less than anyone, and so you don't deserve to have them., I can't help it,, the prince, Lavater would have said I\n", + "lack the bump of paternity., Don't joke; I mean to have a serious talk with you. Do you know I\n", + "am dissatisfied with your younger son? Between ourselves, he was mentioned at Her\n", + "Majesty's and you were pitied...., The prince, What would you have me do?, You know I did all\n", + "a father could for their education, and they have both turned out\n", + "fools. Hippolyte is at least a quiet fool, but Anatole is an active\n", + "one. That is the only difference between them., And why are children born to such men as you? If you were not a\n", + "father there would be nothing I could reproach you with,, Anna\n", + "Pavlovna, I am your faithful slave and to you alone I can confess that my\n", + "children are the bane of my life. It is the cross I have to bear. That\n", + "is how I explain it to myself. It can't be helped!, Anna Pavlovna]\n" + ] + } + ], + "source": [ + "allText = bs.find_all('span', {'class':{'green', 'red'}})\n", + "print([text for text in allText])" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "7\n" + ] + } + ], + "source": [ + "nameList = bs.find_all(text='the prince')\n", + "print(len(nameList))" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[Well, Prince, so Genoa and Lucca are now just family estates of the\n", + "Buonapartes. But I warn you, if you don't tell me that this means war,\n", + "if you still try to defend the infamies and horrors perpetrated by\n", + "that Antichrist- I really believe he is Antichrist- I will have\n", + "nothing more to do with you and you are no longer my friend, no longer\n", + "my 'faithful slave,' as you call yourself! But how do you do? I see\n", + "I have frightened you- sit down and tell me all the news., Anna\n", + "Pavlovna Scherer, Empress Marya\n", + "Fedorovna, Prince Vasili Kuragin, Anna Pavlovna, St. Petersburg, If you have nothing better to do, Count [or Prince], and if the\n", + "prospect of spending an evening with a poor invalid is not too\n", + "terrible, I shall be very charmed to see you tonight between 7 and 10-\n", + "Annette Scherer., Heavens! what a virulent attack!, the prince, Anna Pavlovna, First of all, dear friend, tell me how you are. Set your friend's\n", + "mind at rest,, Can one be well while suffering morally? Can one be calm in times\n", + "like these if one has any feeling?, Anna Pavlovna, You are\n", + "staying the whole evening, I hope?, And the fete at the English ambassador's? Today is Wednesday. I\n", + "must put in an appearance there,, the prince, My daughter is\n", + "coming for me to take me there., I thought today's fete had been canceled. I confess all these\n", + "festivities and fireworks are becoming wearisome., If they had known that you wished it, the entertainment would\n", + "have been put off,, the prince, Don't tease! Well, and what has been decided about Novosiltsev's\n", + "dispatch? You know everything., What can one say about it?, the prince, What has been decided? They have decided that\n", + "Buonaparte has burnt his boats, and I believe that we are ready to\n", + "burn ours., Prince Vasili, Anna Pavlovna, Anna Pavlovna, Oh, don't speak to me of Austria. Perhaps I don't understand\n", + "things, but Austria never has wished, and does not wish, for war.\n", + "She is betraying us! Russia alone must save Europe. Our gracious\n", + "sovereign recognizes his high vocation and will be true to it. That is\n", + "the one thing I have faith in! Our good and wonderful sovereign has to\n", + "perform the noblest role on earth, and he is so virtuous and noble\n", + "that God will not forsake him. He will fulfill his vocation and\n", + "crush the hydra of revolution, which has become more terrible than\n", + "ever in the person of this murderer and villain! We alone must\n", + "avenge the blood of the just one.... Whom, I ask you, can we rely\n", + "on?... England with her commercial spirit will not and cannot\n", + "understand the Emperor Alexander's loftiness of soul. She has\n", + "refused to evacuate Malta. She wanted to find, and still seeks, some\n", + "secret motive in our actions. What answer did Novosiltsev get? None.\n", + "The English have not understood and cannot understand the\n", + "self-abnegation of our Emperor who wants nothing for himself, but only\n", + "desires the good of mankind. And what have they promised? Nothing! And\n", + "what little they have promised they will not perform! Prussia has\n", + "always declared that Buonaparte is invincible, and that all Europe\n", + "is powerless before him.... And I don't believe a word that Hardenburg\n", + "says, or Haugwitz either. This famous Prussian neutrality is just a\n", + "trap. I have faith only in God and the lofty destiny of our adored\n", + "monarch. He will save Europe!, I think,, the prince, that if you had been\n", + "sent instead of our dear Wintzingerode you would have captured the\n", + "King of Prussia's consent by assault. You are so eloquent. Will you\n", + "give me a cup of tea?, Wintzingerode, King of Prussia, In a moment. A propos,, I am\n", + "expecting two very interesting men tonight, le Vicomte de Mortemart,\n", + "who is connected with the Montmorencys through the Rohans, one of\n", + "the best French families. He is one of the genuine emigres, the good\n", + "ones. And also the Abbe Morio. Do you know that profound thinker? He\n", + "has been received by the Emperor. Had you heard?, le Vicomte de Mortemart, Montmorencys, Rohans, Abbe Morio, the Emperor, I shall be delighted to meet them,, the prince, But tell me,, is it true that the Dowager Empress wants Baron Funke\n", + "to be appointed first secretary at Vienna? The baron by all accounts\n", + "is a poor creature., Prince Vasili, Dowager Empress Marya Fedorovna, the baron, Anna Pavlovna, the Empress, Baron Funke has been recommended to the Dowager Empress by her\n", + "sister,, the Empress, Anna Pavlovna's, Her Majesty, Baron\n", + "Funke, The prince, Anna\n", + "Pavlovna, the Empress, Now about your family. Do you know that since your daughter came\n", + "out everyone has been enraptured by her? They say she is amazingly\n", + "beautiful., The prince, I often think,, I often think how unfairly sometimes the\n", + "joys of life are distributed. Why has fate given you two such splendid\n", + "children? I don't speak of Anatole, your youngest. I don't like\n", + "him,, Anatole, Two such charming children. And really you appreciate\n", + "them less than anyone, and so you don't deserve to have them., I can't help it,, the prince, Lavater would have said I\n", + "lack the bump of paternity., Don't joke; I mean to have a serious talk with you. Do you know I\n", + "am dissatisfied with your younger son? Between ourselves, he was mentioned at Her\n", + "Majesty's and you were pitied...., The prince, What would you have me do?, You know I did all\n", + "a father could for their education, and they have both turned out\n", + "fools. Hippolyte is at least a quiet fool, but Anatole is an active\n", + "one. That is the only difference between them., And why are children born to such men as you? If you were not a\n", + "father there would be nothing I could reproach you with,, Anna\n", + "Pavlovna, I am your faithful slave and to you alone I can confess that my\n", + "children are the bane of my life. It is the cross I have to bear. That\n", + "is how I explain it to myself. It can't be helped!, Anna Pavlovna]\n" + ] + } + ], + "source": [ + "title = bs.find_all(id='title', class_='text')\n", + "print([text for text in allText])" + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "\n", + "\n", + "Item Title\n", + "\n", + "Description\n", + "\n", + "Cost\n", + "\n", + "Image\n", + "\n", + "\n", + "\n", + "\n", + "Vegetable Basket\n", + "\n", + "This vegetable basket is the perfect gift for your health conscious (or overweight) friends!\n", + "Now with super-colorful bell peppers!\n", + "\n", + "$15.00\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "Russian Nesting Dolls\n", + "\n", + "Hand-painted by trained monkeys, these exquisite dolls are priceless! And by \"priceless,\" we mean \"extremely expensive\"! 8 entire dolls per set! Octuple the presents!\n", + "\n", + "$10,000.52\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "Fish Painting\n", + "\n", + "If something seems fishy about this painting, it's because it's a fish! Also hand-painted by trained monkeys!\n", + "\n", + "$10,005.00\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "Dead Parrot\n", + "\n", + "This is an ex-parrot! Or maybe he's only resting?\n", + "\n", + "$0.50\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "Mystery Box\n", + "\n", + "If you love suprises, this mystery box is for you! Do not place on light-colored surfaces. May cause oil staining. Keep your friends guessing!\n", + "\n", + "$1.50\n", + "\n", + "\n", + "\n", + "\n", + "\n" + ] + } + ], + "source": [ + "from urllib.request import urlopen\n", + "from bs4 import BeautifulSoup\n", + "\n", + "html = urlopen('http://www.pythonscraping.com/pages/page3.html')\n", + "bs = BeautifulSoup(html, 'html.parser')\n", + "\n", + "for child in bs.find('table',{'id':'giftList'}).children:\n", + " print(child)" + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "\n", + "\n", + "Vegetable Basket\n", + "\n", + "This vegetable basket is the perfect gift for your health conscious (or overweight) friends!\n", + "Now with super-colorful bell peppers!\n", + "\n", + "$15.00\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "Russian Nesting Dolls\n", + "\n", + "Hand-painted by trained monkeys, these exquisite dolls are priceless! And by \"priceless,\" we mean \"extremely expensive\"! 8 entire dolls per set! Octuple the presents!\n", + "\n", + "$10,000.52\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "Fish Painting\n", + "\n", + "If something seems fishy about this painting, it's because it's a fish! Also hand-painted by trained monkeys!\n", + "\n", + "$10,005.00\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "Dead Parrot\n", + "\n", + "This is an ex-parrot! Or maybe he's only resting?\n", + "\n", + "$0.50\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "Mystery Box\n", + "\n", + "If you love suprises, this mystery box is for you! Do not place on light-colored surfaces. May cause oil staining. Keep your friends guessing!\n", + "\n", + "$1.50\n", + "\n", + "\n", + "\n", + "\n", + "\n" + ] + } + ], + "source": [ + "from urllib.request import urlopen\n", + "from bs4 import BeautifulSoup\n", + "\n", + "html = urlopen('http://www.pythonscraping.com/pages/page3.html')\n", + "bs = BeautifulSoup(html, 'html.parser')\n", + "\n", + "for sibling in bs.find('table', {'id':'giftList'}).tr.next_siblings:\n", + " print(sibling) " + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "$15.00\n", + "\n" + ] + } + ], + "source": [ + "from urllib.request import urlopen\n", + "from bs4 import BeautifulSoup\n", + "\n", + "html = urlopen('http://www.pythonscraping.com/pages/page3.html')\n", + "bs = BeautifulSoup(html, 'html.parser')\n", + "print(bs.find('img',\n", + " {'src':'../img/gifts/img1.jpg'})\n", + " .parent.previous_sibling.get_text())" + ] + }, + { + "cell_type": "code", + "execution_count": 25, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "../img/gifts/img1.jpg\n", + "../img/gifts/img2.jpg\n", + "../img/gifts/img3.jpg\n", + "../img/gifts/img4.jpg\n", + "../img/gifts/img6.jpg\n" + ] + } + ], + "source": [ + "from urllib.request import urlopen\n", + "from bs4 import BeautifulSoup\n", + "import re\n", + "\n", + "html = urlopen('http://www.pythonscraping.com/pages/page3.html')\n", + "bs = BeautifulSoup(html, 'html.parser')\n", + "images = bs.find_all('img', {'src':re.compile('\\.\\.\\/img\\/gifts/img.*\\.jpg')})\n", + "for image in images: \n", + " print(image['src'])" + ] + }, + { + "cell_type": "code", + "execution_count": 26, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[,\n", + " \n", + " Vegetable Basket\n", + " \n", + " This vegetable basket is the perfect gift for your health conscious (or overweight) friends!\n", + " Now with super-colorful bell peppers!\n", + " \n", + " $15.00\n", + " \n", + " \n", + " ,\n", + " \n", + " Russian Nesting Dolls\n", + " \n", + " Hand-painted by trained monkeys, these exquisite dolls are priceless! And by \"priceless,\" we mean \"extremely expensive\"! 8 entire dolls per set! Octuple the presents!\n", + " \n", + " $10,000.52\n", + " \n", + " \n", + " ,\n", + " \n", + " Fish Painting\n", + " \n", + " If something seems fishy about this painting, it's because it's a fish! Also hand-painted by trained monkeys!\n", + " \n", + " $10,005.00\n", + " \n", + " \n", + " ,\n", + " \n", + " Dead Parrot\n", + " \n", + " This is an ex-parrot! Or maybe he's only resting?\n", + " \n", + " $0.50\n", + " \n", + " \n", + " ,\n", + " \n", + " Mystery Box\n", + " \n", + " If you love suprises, this mystery box is for you! Do not place on light-colored surfaces. May cause oil staining. Keep your friends guessing!\n", + " \n", + " $1.50\n", + " \n", + " \n", + " ]" + ] + }, + "execution_count": 26, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "bs.find_all(lambda tag: len(tag.attrs) == 2)" + ] + }, + { + "cell_type": "code", + "execution_count": 27, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[Or maybe he's only resting?]" + ] + }, + "execution_count": 27, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "bs.find_all(lambda tag: tag.get_text() == 'Or maybe he\\'s only resting?')" + ] + }, + { + "cell_type": "code", + "execution_count": 28, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[\"Or maybe he's only resting?\"]" + ] + }, + "execution_count": 28, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "bs.find_all('', text='Or maybe he\\'s only resting?')" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.9.12" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/Chapter06_StoringData.ipynb b/Chapter06_StoringData.ipynb deleted file mode 100644 index f84d907..0000000 --- a/Chapter06_StoringData.ipynb +++ /dev/null @@ -1,37037 +0,0 @@ -{ - "cells": [ - { - "cell_type": "code", - "execution_count": 3, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "('logo.jpg', )" - ] - }, - "execution_count": 3, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "from urllib.request import urlretrieve\n", - "from urllib.request import urlopen\n", - "from bs4 import BeautifulSoup\n", - "\n", - "html = urlopen('http://www.pythonscraping.com')\n", - "bs = BeautifulSoup(html, 'html.parser')\n", - "imageLocation = bs.find('a', {'id': 'logo'}).find('img')['src']\n", - "urlretrieve (imageLocation, 'logo.jpg')" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "http://pythonscraping.com/misc/jquery.js?v=1.4.4\n", - "http://pythonscraping.com/misc/jquery.once.js?v=1.2\n", - "http://pythonscraping.com/misc/drupal.js?os2esm\n", - "http://pythonscraping.com/sites/all/themes/skeletontheme/js/jquery.mobilemenu.js?os2esm\n", - "http://pythonscraping.com/sites/all/modules/google_analytics/googleanalytics.js?os2esm\n", - "http://pythonscraping.com/sites/default/files/lrg_0.jpg\n", - "http://pythonscraping.com/img/lrg%20(1).jpg\n" - ] - }, - { - "data": { - "text/plain": [ - "('downloaded/img/lrg%20(1).jpg', )" - ] - }, - "execution_count": 2, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "import os\n", - "from urllib.request import urlretrieve\n", - "from urllib.request import urlopen\n", - "from bs4 import BeautifulSoup\n", - "\n", - "downloadDirectory = 'downloaded'\n", - "baseUrl = 'http://pythonscraping.com'\n", - "\n", - "def getAbsoluteURL(baseUrl, source):\n", - " if source.startswith('http://www.'):\n", - " url = 'http://{}'.format(source[11:])\n", - " elif source.startswith('http://'):\n", - " url = source\n", - " elif source.startswith('www.'):\n", - " url = source[4:]\n", - " url = 'http://{}'.format(source)\n", - " else:\n", - " url = '{}/{}'.format(baseUrl, source)\n", - " if baseUrl not in url:\n", - " return None\n", - " return url\n", - "\n", - "def getDownloadPath(baseUrl, absoluteUrl, downloadDirectory):\n", - " path = absoluteUrl.replace('www.', '')\n", - " path = path.replace(baseUrl, '')\n", - " path = downloadDirectory+path\n", - " directory = os.path.dirname(path)\n", - "\n", - " if not os.path.exists(directory):\n", - " os.makedirs(directory)\n", - "\n", - " return path\n", - "\n", - "html = urlopen('http://www.pythonscraping.com')\n", - "bs = BeautifulSoup(html, 'html.parser')\n", - "downloadList = bs.findAll(src=True)\n", - "\n", - "for download in downloadList:\n", - " fileUrl = getAbsoluteURL(baseUrl, download['src'])\n", - " if fileUrl is not None:\n", - " print(fileUrl)\n", - "\n", - "urlretrieve(fileUrl, getDownloadPath(baseUrl, fileUrl, downloadDirectory))" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "metadata": {}, - "outputs": [], - "source": [ - "import csv\n", - "\n", - "csvFile = open('test.csv', 'w+')\n", - "try:\n", - " writer = csv.writer(csvFile)\n", - " writer.writerow(('number', 'number plus 2', 'number times 2'))\n", - " for i in range(10):\n", - " writer.writerow( (i, i+2, i*2))\n", - "finally:\n", - " csvFile.close()" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "metadata": {}, - "outputs": [], - "source": [ - "import csv\n", - "from urllib.request import urlopen\n", - "from bs4 import BeautifulSoup\n", - "\n", - "html = urlopen('http://en.wikipedia.org/wiki/Comparison_of_text_editors')\n", - "bs = BeautifulSoup(html, 'html.parser')\n", - "# The main comparison table is currently the first table on the page\n", - "table = bs.findAll('table',{'class':'wikitable'})[0]\n", - "rows = table.findAll('tr')\n", - "\n", - "csvFile = open('editors.csv', 'wt+')\n", - "writer = csv.writer(csvFile)\n", - "try:\n", - " for row in rows:\n", - " csvRow = []\n", - " for cell in row.findAll(['td', 'th']):\n", - " csvRow.append(cell.get_text())\n", - " writer.writerow(csvRow)\n", - "finally:\n", - " csvFile.close()" - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "metadata": {}, - "outputs": [ - { - "ename": "InternalError", - "evalue": "(1049, \"Unknown database 'scraping'\")", - "output_type": "error", - "traceback": [ - "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", - "\u001b[0;31mInternalError\u001b[0m Traceback (most recent call last)", - "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[1;32m 9\u001b[0m user='root', passwd='root', db='mysql', charset='utf8')\n\u001b[1;32m 10\u001b[0m \u001b[0mcur\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mconn\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mcursor\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 11\u001b[0;31m \u001b[0mcur\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mexecute\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"USE scraping\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 12\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 13\u001b[0m \u001b[0mrandom\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mseed\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mdatetime\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mdatetime\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mnow\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/pymysql/cursors.py\u001b[0m in \u001b[0;36mexecute\u001b[0;34m(self, query, args)\u001b[0m\n\u001b[1;32m 164\u001b[0m \u001b[0mquery\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mmogrify\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mquery\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0margs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 165\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 166\u001b[0;31m \u001b[0mresult\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_query\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mquery\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 167\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_executed\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mquery\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 168\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mresult\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/pymysql/cursors.py\u001b[0m in \u001b[0;36m_query\u001b[0;34m(self, q)\u001b[0m\n\u001b[1;32m 320\u001b[0m \u001b[0mconn\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_get_db\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 321\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_last_executed\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mq\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 322\u001b[0;31m \u001b[0mconn\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mquery\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mq\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 323\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_do_get_result\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 324\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mrowcount\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/pymysql/connections.py\u001b[0m in \u001b[0;36mquery\u001b[0;34m(self, sql, unbuffered)\u001b[0m\n\u001b[1;32m 854\u001b[0m \u001b[0msql\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0msql\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mencode\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mencoding\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m'surrogateescape'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 855\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_execute_command\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mCOMMAND\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mCOM_QUERY\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0msql\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 856\u001b[0;31m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_affected_rows\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_read_query_result\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0munbuffered\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0munbuffered\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 857\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_affected_rows\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 858\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/pymysql/connections.py\u001b[0m in \u001b[0;36m_read_query_result\u001b[0;34m(self, unbuffered)\u001b[0m\n\u001b[1;32m 1055\u001b[0m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1056\u001b[0m \u001b[0mresult\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mMySQLResult\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 1057\u001b[0;31m \u001b[0mresult\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mread\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 1058\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_result\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mresult\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1059\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mresult\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mserver_status\u001b[0m \u001b[0;32mis\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0;32mNone\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/pymysql/connections.py\u001b[0m in \u001b[0;36mread\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 1338\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0mread\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1339\u001b[0m \u001b[0;32mtry\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 1340\u001b[0;31m \u001b[0mfirst_packet\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mconnection\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_read_packet\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 1341\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1342\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mfirst_packet\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mis_ok_packet\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/pymysql/connections.py\u001b[0m in \u001b[0;36m_read_packet\u001b[0;34m(self, packet_type)\u001b[0m\n\u001b[1;32m 1012\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1013\u001b[0m \u001b[0mpacket\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mpacket_type\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mbuff\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mencoding\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 1014\u001b[0;31m \u001b[0mpacket\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mcheck_error\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 1015\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mpacket\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1016\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/pymysql/connections.py\u001b[0m in \u001b[0;36mcheck_error\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 391\u001b[0m \u001b[0merrno\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mread_uint16\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 392\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mDEBUG\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0mprint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"errno =\"\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0merrno\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 393\u001b[0;31m \u001b[0merr\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mraise_mysql_exception\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_data\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 394\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 395\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0mdump\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/pymysql/err.py\u001b[0m in \u001b[0;36mraise_mysql_exception\u001b[0;34m(data)\u001b[0m\n\u001b[1;32m 105\u001b[0m \u001b[0merrval\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mdata\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m3\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mdecode\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'utf-8'\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m'replace'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 106\u001b[0m \u001b[0merrorclass\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0merror_map\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mget\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0merrno\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mInternalError\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 107\u001b[0;31m \u001b[0;32mraise\u001b[0m \u001b[0merrorclass\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0merrno\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0merrval\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m", - "\u001b[0;31mInternalError\u001b[0m: (1049, \"Unknown database 'scraping'\")" - ] - } - ], - "source": [ - "from urllib.request import urlopen\n", - "from bs4 import BeautifulSoup\n", - "import datetime\n", - "import random\n", - "import pymysql\n", - "import re\n", - "\n", - "conn = pymysql.connect(host='127.0.0.1', unix_socket='/tmp/mysql.sock',\n", - " user='root', passwd='root', db='mysql', charset='utf8')\n", - "cur = conn.cursor()\n", - "cur.execute('USE scraping')\n", - "\n", - "random.seed(datetime.datetime.now())\n", - "\n", - "def store(title, content):\n", - " cur.execute('INSERT INTO pages (title, content) VALUES (\"%s\", \"%s\")', (title, content))\n", - " cur.connection.commit()\n", - "\n", - "def getLinks(articleUrl):\n", - " html = urlopen('http://en.wikipedia.org'+articleUrl)\n", - " bs = BeautifulSoup(html, 'html.parser')\n", - " title = bs.find('h1').get_text()\n", - " content = bs.find('div', {'id':'mw-content-text'}).find('p').get_text()\n", - " store(title, content)\n", - " return bs.find('div', {'id':'bodyContent'}).findAll('a', href=re.compile('^(/wiki/)((?!:).)*$'))\n", - "\n", - "links = getLinks('/wiki/Kevin_Bacon')\n", - "try:\n", - " while len(links) > 0:\n", - " newArticle = links[random.randint(0, len(links)-1)].attrs['href']\n", - " print(newArticle)\n", - " links = getLinks(newArticle)\n", - "finally:\n", - " cur.close()\n", - " conn.close()" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "1\n", - "462\n", - "1705\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Pennsylvania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Pennsylvania_(disambiguation)\n", - "1\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Province_of_Pennsylvania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Kingdom_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Commonwealth_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Flag_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Royal_Arms_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Royal_Banner_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Winchester\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Westminster\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/City_of_London\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Old_Norse\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Welsh_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Cornish_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Cumbric_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Anglo-Norman_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Medieval_Latin\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Christianity\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Demonym\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/English_people\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Absolute_monarchy\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Unitary_state\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Parliamentary_system\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/List_of_English_monarchs\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/%C3%86thelstan\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Anne,_Queen_of_Great_Britain\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Parliament_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/House_of_Lords_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/House_of_Commons_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/History_of_Anglo-Saxon_England#English_unification_(10th_century)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Battle_of_Hastings\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Conquest_of_Wales_by_Edward_I\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Laws_in_Wales_Acts_1535_and_1542\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Union_of_the_Crowns\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Glorious_Revolution\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Acts_of_Union_1707\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/List_of_countries_and_dependencies_by_area\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/List_of_countries_by_population\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Pound_sterling\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Wessex\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Kingdom_of_Sussex\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Kingdom_of_Essex\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Kingdom_of_Kent\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Dumnonia\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Mercia\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Kingdom_of_East_Anglia\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Kingdom_of_Northumbria\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Welsh_Marches\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Principality_of_Wales\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Kingdom_of_Great_Britain\n", - "1830\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Wales\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/History_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Timeline_of_English_history\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Prehistoric_Britain\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Roman_Britain\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Sub-Roman_Britain\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/England_in_the_Middle_Ages\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Economy_of_England_in_the_Middle_Ages\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/History_of_Anglo-Saxon_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/History_of_Anglo-Saxon_England#English_unification_.2810th_century.29\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/England_in_the_High_Middle_Ages\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Norman_conquest_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/History_of_England#Norman_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/England_in_the_Late_Middle_Ages\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Black_Death_in_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Tudor_period\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Tudor_dynasty\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Elizabethan_era\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/English_Renaissance\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Stuart_period\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/English_Civil_War\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Commonwealth_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/The_Protectorate\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Restoration_(England)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Glorious_Revolution\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Georgian_era\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Regency_era\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Victorian_era\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Edwardian_era\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/History_of_the_United_Kingdom_during_the_First_World_War\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/History_of_the_United_Kingdom#Interwar_era_1918–1939\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/History_of_the_United_Kingdom#Second_World_War_1939–1945\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Social_history_of_the_United_Kingdom_(1945%E2%80%93present)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Political_history_of_the_United_Kingdom_(1945%E2%80%93present)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Social_history_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/History_of_education_in_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Economy_of_England#History\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Politics_of_England#Political_history\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/English_overseas_possessions\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/History_of_the_English_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Kingdom_of_Great_Britain\n", - "1830\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Counties_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/History_of_Bedfordshire\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/History_of_Berkshire\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/History_of_Bristol\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/History_of_Buckinghamshire\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/History_of_Cambridgeshire\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/History_of_Cheshire\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/History_of_Cornwall\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/History_of_Cumbria\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/History_of_Derbyshire\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/History_of_Devon\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/History_of_Dorset\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/History_of_Durham\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/History_of_the_East_Riding_of_Yorkshire\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/History_of_East_Sussex\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/History_of_Essex\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/History_of_Gloucestershire\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/History_of_Greater_London\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/History_of_Greater_Manchester\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/History_of_Hampshire\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/History_of_Herefordshire\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/History_of_Hertfordshire\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/History_of_the_Isle_of_Wight\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/History_of_Kent\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/History_of_Lancashire\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/History_of_Leicestershire\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/History_of_Lincolnshire\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/History_of_London\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/History_of_Merseyside\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/History_of_Norfolk\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/History_of_Northamptonshire\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/History_of_Northumberland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/History_of_North_Yorkshire\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/History_of_Nottinghamshire\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/History_of_Oxfordshire\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/History_of_Rutland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/History_of_Shropshire\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/History_of_Somerset\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/History_of_South_Yorkshire\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/History_of_Staffordshire\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/History_of_Suffolk\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/History_of_Surrey\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/History_of_Tyne_and_Wear\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/History_of_Warwickshire\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/History_of_the_West_Midlands\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/History_of_West_Sussex\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/History_of_West_Yorkshire\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/History_of_Wiltshire\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/History_of_Worcestershire\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/City_status_in_the_United_Kingdom\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/History_of_Birmingham\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/History_of_Bournemouth\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/History_of_Brighton\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/History_of_Bristol\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/History_of_Chester\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/History_of_Christchurch,_Dorset\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/History_of_Colchester\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/History_of_Coventry\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/History_of_Dover\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/History_of_Folkestone\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/History_of_Leeds\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/History_of_Liverpool\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/History_of_London\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/History_of_Maidstone\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/History_of_Manchester\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/History_of_Milton_Keynes\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/History_of_Newcastle_upon_Tyne\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/History_of_Nottingham\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/History_of_Plymouth\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/History_of_Poole\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "0\n", - "PAGE HAS NO LINKS: /wiki/History_of_Portsmouth\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/History_of_Reading,_Berkshire\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/History_of_Rochester,_Kent\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/History_of_Sheffield\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/History_of_Shrewsbury\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/History_of_Southampton\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/History_of_St_Albans\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/History_of_Torquay\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/History_of_Wetherby\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/History_of_Worthing\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/History_of_York\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Sovereign_state\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Island\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Great_Britain\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/History_of_Anglo-Saxon_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Kingdom_of_Scotland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Kingdom_of_Great_Britain\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/%C3%86thelstan\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/North_Sea_Empire\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Cnut_the_Great\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Denmark\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Norway\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Norman_conquest_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Winchester\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Westminster\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/City_of_London\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Norman_conquest\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Norman_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Plantagenet_era\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Tudor_period\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Stuart_period\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Interregnum_(England)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Kings_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/House_of_Plantagenet\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Henry_II_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Angevin_kings_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/House_of_Lancaster\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/House_of_York\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Tudor_dynasty\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Edward_III\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/John_Beaufort,_1st_Earl_of_Somerset\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/James_VI_and_I\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/House_of_Stuart\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Henry_VII_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Margaret_Tudor\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Conquest_of_Wales_by_Edward_I\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/English_parliament\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/English_claims_to_the_French_throne\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Kingdom_of_France\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Hundred_Years%27_War\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Wars_of_the_Roses\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Pale_of_Calais\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Tudor_dynasty\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/English_Renaissance\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Principality_of_Wales\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Laws_in_Wales_Acts_1535%E2%80%931542\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Henry_VIII\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/English_Reformation\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Elizabeth_I\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Elizabethan_Religious_Settlement\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Great_power\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/British_Empire\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/English_overseas_possessions\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/James_VI_and_I\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Stuart_dynasty\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Union_of_the_Crowns\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Kingdom_of_Scotland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Kingdom_of_Ireland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/English_Civil_War\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Execution_of_Charles_I\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Glorious_Revolution\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Constitutional_monarchy\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Acts_of_Union_1707\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Political_union\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Kingdom_of_Great_Britain\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Name_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Angles\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/%C3%86thelweard_(historian)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Angeln\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Bede\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Haplology\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Middle_English\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Middle_Latin\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Old_French\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Anglo-Norman_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/%C3%86thelstan\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/John,_King_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Canute_the_Great\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Norman_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/James_VI_and_I\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Anglo-Saxon_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Anglo-Saxon_kingdoms\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Heptarchy\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Kingdom_of_East_Anglia\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Mercia\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Northumbria\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Kingdom_of_Kent\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Kingdom_of_Essex\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Kingdom_of_Sussex\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Kingdom_of_Wessex\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Viking_invasions\n", - "356\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Bretwalda\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/High_king\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/List_of_monarchs_of_Wessex\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Egbert_of_Wessex\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Dore\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Alfred_the_Great\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Anglo-Saxon_Chronicle\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Danelaw\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/City_of_London\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Wharf\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Thames\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Eadred\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Lothian\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Bernicia\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Kingdom_of_Scotland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Eamont\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Cnut_the_Great\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/%C3%86thelred_the_Unready\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Sweyn_I_of_Denmark\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Cnut_the_Great\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Edmund_Ironside\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Harthacnut\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Emma_of_Normandy\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Edward_the_Confessor\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Norman_conquest_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Harold_II_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/William_the_Conqueror\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Sussex\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/York\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Battle_of_Stamford_Bridge\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Battle_of_Hastings\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Fyrd\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Duchy_of_Normandy\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Philip_I_of_France\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Westminster_Abbey\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/England_in_the_High_Middle_Ages\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Angevin_Empire\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Norman_invasion_of_Wales\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Conquest_of_Wales_by_Edward_I\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/William_II_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Kingdom_of_Strathclyde\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Celts\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Cumbria\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Henry_I_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Lothian\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Kingdom_of_Scotland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/England-Scotland_border\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Kingdom_of_Northumbria\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Edinburgh\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Treaty_of_York\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Magna_Carta\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Runnymede\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Duchy_of_Aquitaine\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Personal_union\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Henry_II_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Eleanor,_Duchess_of_Aquitaine\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/John,_King_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Philip_II_of_France\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Duchy_of_Normandy\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Channel_Islands\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Anglo-Saxon_kingdoms\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Bretwalda\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Norman_conquest_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Marcher_Lords\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Edward_I_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Llywelyn_ap_Gruffudd\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Prince_of_Wales\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Edward_II_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Castle\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Conwy_Castle\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Harlech_Castle\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Caernarfon_Castle\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Roman_Britain\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Jutes\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Kingdom_of_Kent\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Welsh_mythology\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Welsh_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/British_language_(Celtic)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Latin\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/England_in_the_Late_Middle_Ages\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Wars_of_the_Roses\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Hundred_Years%27_War\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Battle_of_Agincourt\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Edward_III_of_England\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "0\n", - "PAGE HAS NO LINKS: /wiki/English_claims_to_the_French_throne\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Hundred_Years%27_War\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/House_of_Plantagenet\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Capetian_House_of_Valois\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Battle_of_Formigny\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Battle_of_Castillon\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Calais\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/English_identity\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Anglo-Saxon\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Joan_of_Arc\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Anglo-Normans\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Middle_English\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Wars_of_the_Roses\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/House_of_Lancaster\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/House_of_York\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Henry_VII_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Elizabeth_of_York\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Tudor_dynasty\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Tudor_period\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Elizabethan_era\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Stuart_period\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/English_Renaissance\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Edward_I\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Marcher_Lords\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Principality_of_Wales\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Henry_VIII\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Laws_in_Wales_Acts_1535%E2%80%931542\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Parliament_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Spanish_Armada\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Parliament_of_Ireland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/King_of_Ireland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Kingdom_of_Ireland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Calais\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Philip_II_of_Spain\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Mary_I_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Elizabeth_I\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Church_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Spanish_Armada\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Early_modern_Britain\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Stuart_period\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/James_I_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Union_of_the_Crowns\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/English_Civil_War\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/English_Interregnum\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/English_Commonwealth\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/English_Protectorate\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Oliver_Cromwell\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/British_Isles\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Commonwealth_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Charles_I_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/English_Civil_War\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Oliver_Cromwell\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/English_Interregnum\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Trial_and_execution_of_Charles_I\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Rump_Parliament\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Council_of_State_(England)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Oliver_Cromwell\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Cromwellian_conquest_of_Ireland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Scotland_in_the_Wars_of_the_Three_Kingdoms\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Grandee_(New_Model_Army)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/New_Model_Army\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Rump_Parliament\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Barebone%27s_Parliament\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Instrument_of_Government\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Lord_Protector_(Protectorate)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Instrument_of_Government\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Humble_Petition_and_Advice\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Richard_Cromwell\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Restoration_(England)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Glorious_Revolution\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Charles_II_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Restoration_(England)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/James_II_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Glorious_Revolution\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/William_III_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Mary_II_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Alien_Act_1705\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/William_III_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Anne,_Queen_of_Great_Britain\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Act_of_Settlement_1701\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/House_of_Hanover\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Union_of_the_Crowns\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Act_of_Security_1704\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/House_of_Stuart\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Treaty_of_Union\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Acts_of_Union_1707\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Kingdom_of_Great_Britain\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Customs_union\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Monetary_union\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Parliament_of_Great_Britain\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Palace_of_Westminster\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Government_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/England_and_Wales\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Scotland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Acts_of_Union_1800\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/United_Kingdom_of_Great_Britain_and_Ireland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Irish_Free_State\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Royal_and_Parliamentary_Titles_Act_1927\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Historic_counties_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/List_of_earldoms\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Domesday_Book\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/County_palatine\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/English_county_histories\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/English_feudal_barony\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Historic_counties_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Normans\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Shire\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Anglo-Saxons\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Administrative_counties_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Ancient_borough\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/High_Sheriff\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Lord_Lieutenant\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Justice_of_the_Peace\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Administration_of_justice\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/List_of_counties_of_England_by_area_in_1831\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Laws_in_Wales_Acts_1535-1542\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Local_Government_Act_1888\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Assize_courts\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/English_feudal_barony\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Quia_Emptores\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/English_Civil_War\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Tenures_Abolition_Act_1660\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/English_Restoration\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Knight-service\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Socage\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Peerage\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/House_of_Lords\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Statute_of_Rhuddlan\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Conquest_of_Wales_by_Edward_I\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Edward_I_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Prince_of_Wales\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Welsh_Marches\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Council_of_Wales_and_the_Marches\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Ludlow_Castle\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Edward_IV_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Laws_in_Wales_Acts_1535%E2%80%931542\n", - "559\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/England_and_Wales\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/List_of_English_monarchs\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/English_colonial_empire\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/English_Army\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Royal_Navy\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Privy_Council_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Crown_Jewels_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/England_and_Wales\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Anglo-Norman_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Middle_English_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Old_English\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Middle_English\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Modern_English\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Old_Welsh\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Middle_Welsh\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Modern_Welsh\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Old_Cornish\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Middle_Cornish\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Late_Cornish\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Constitution_of_the_United_Kingdom\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Uncodified_constitution\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Bill_of_Rights_1689\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Wayback_Machine\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Alan_Vince\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Royal_Historical_Society\n", - "494\n", - "494\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Harmondsworth\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Penguin_Books\n", - "494\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Oxford\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Shire_Books\n", - "494\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Geoffrey_Elton\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Heptarchy\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Circa\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/English_Interregnum\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/English_Interregnum\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Kingdom_of_Great_Britain\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/History_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Timeline_of_English_history\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/History_of_Anglo-Saxon_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Heptarchy\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Norman_conquest_of_England\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "0\n", - "PAGE HAS NO LINKS: /wiki/Anglo-Norman_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Angevin_Empire\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/England_in_the_Late_Middle_Ages\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Wars_of_the_Roses\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Tudor_period\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Stuart_period_(England)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/English_Renaissance\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/English_Reformation\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Elizabethan_era\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Union_of_the_Crowns\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/English_overseas_possessions\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Gunpowder_Plot\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Jacobean_era\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/English_Civil_War\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Interregnum_(England)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Commonwealth_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/The_Protectorate\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Restoration_(England)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Popish_Plot\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Glorious_Revolution\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Maritime_history_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Economy_of_England_in_the_Middle_Ages\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Acts_of_Union_1707\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Dynasty\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/House_of_Wessex\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/House_of_Kn%C3%BDtlinga\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/House_of_Normandy\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Angevin_kings_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/House_of_Plantagenet\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/House_of_Lancaster\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/House_of_York\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Tudor_dynasty\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/House_of_Stuart\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/House_of_Orange-Nassau\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Politics_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/English_law\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Witenagemot\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Curia_regis\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Parliament_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/House_of_Lords_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/House_of_Commons_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/List_of_English_monarchs\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/English_Council_of_State\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Lord_Protector\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Peerage_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Privy_Council_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/List_of_English_ministries\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Secretary_of_State_(England)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Governance_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Elizabethan_government\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Star_Chamber\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Whiggism\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Tory\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/List_of_Acts_of_the_Parliament_of_England_to_1483\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/List_of_Acts_of_the_Parliament_of_England,_1485%E2%80%931601\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/List_of_Acts_of_the_Parliament_of_England,_1603%E2%80%9341\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/List_of_Ordinances_and_Acts_of_the_Parliament_of_England,_1642%E2%80%9360\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/List_of_Acts_of_the_Parliament_of_England,_1660%E2%80%9399\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/List_of_Acts_of_the_Parliament_of_England,_1700%E2%80%9306\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Military_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Anglo-Saxon_military_organization\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Anglo-Saxon_warfare\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/English_Army\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/New_Model_Army\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Royal_Navy\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/List_of_ship_names_of_the_Royal_Navy\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/History_of_the_Royal_Navy\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Geography_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Historic_counties_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/List_of_islands_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/List_of_places_in_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/List_of_towns_in_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/List_of_castles_in_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/List_of_palaces#England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Demography_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/English_language_in_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/English_people\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/List_of_English_people\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Culture_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Religion_in_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Church_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/English_cuisine\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/English_folklore\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Morris_dance\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/English_country_dance\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Architecture_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Anglo-Saxon_architecture\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/English_Gothic_architecture\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Tudor_architecture\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Elizabethan_architecture\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Jacobean_architecture\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Queen_Anne_style_architecture\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Georgian_architecture\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/National_symbols_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Flag_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/List_of_English_flags\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/English_heraldry\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Royal_Arms_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/College_of_Arms\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Royal_Badges_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Royal_Supporters_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Royal_Standards_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Crown_Jewels_of_the_United_Kingdom\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Tudor_rose\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Oak\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Saint_George\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/St_George%27s_Day_in_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/British_Isles\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Terminology_of_the_British_Isles\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Alba\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Albion\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Prydain\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Britain_(place_name)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/%C3%89ire\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Hibernia\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/British_Isles_naming_dispute\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Politics_in_the_British_Isles\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Sovereign_state\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Republic_of_Ireland\n", - "1830\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Northern_Ireland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Scotland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Wales\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Crown_dependencies\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Guernsey\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Jersey\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Isle_of_Man\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Sark\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Ireland%E2%80%93United_Kingdom_relations\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/British%E2%80%93Irish_Council\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/British%E2%80%93Irish_Intergovernmental_Conference\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/British%E2%80%93Irish_Parliamentary_Assembly\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Common_Travel_Area\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Channel_Islands\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Islands_of_the_Clyde\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Great_Britain\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Hebrides\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Inner_Hebrides\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Outer_Hebrides\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Ireland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Isle_of_Man\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Northern_Isles\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Orkney\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Shetland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Isles_of_Scilly\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/List_of_islands_of_the_Bailiwick_of_Guernsey\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/List_of_islands_of_Ireland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/List_of_islands_of_the_Bailiwick_of_Jersey\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/List_of_islands_of_the_Isle_of_Man\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/List_of_islands_of_the_United_Kingdom\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/List_of_islands_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/List_of_islands_of_Scotland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/List_of_islands_of_Wales\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/History_of_the_British_Isles\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/History_of_Ireland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/History_of_the_Republic_of_Ireland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/History_of_the_United_Kingdom\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/History_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/History_of_Northern_Ireland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/History_of_Scotland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/History_of_Wales\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/History_of_Guernsey\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/History_of_Jersey\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/History_of_the_Isle_of_Man\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Irish_Free_State\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Principality_of_Wales\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Kingdom_of_Great_Britain\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "0\n", - "PAGE HAS NO LINKS: /wiki/Kingdom_of_Ireland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Kingdom_of_Scotland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/United_Kingdom_of_Great_Britain_and_Ireland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Germanic_languages\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/English_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Scots_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Celtic_languages\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Cornish_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Scottish_Gaelic\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Irish_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Manx_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Welsh_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Romance_languages\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Auregnais\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/French_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Guern%C3%A9siais\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/J%C3%A8rriais\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Sercquiais\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/British_Sign_Language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Irish_Sign_Language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Northern_Ireland_Sign_Language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Shelta\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/British_people\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Cornish_people\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/English_people\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Romanichal\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Irish_people\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Irish_Travellers\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Kale_(Welsh_Romanies)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Manx_people\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/People_of_Northern_Ireland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Scottish_people\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Ulster_Scots_people\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Welsh_people\n", - "547\n", - "547\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Main_Page\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Main_Page\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Kingdom_of_Great_Britain\n", - "1830\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Scots_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Welsh_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Cornish_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Scottish_Gaelic\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Flag_of_Great_Britain\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Royal_coat_of_arms_of_Great_Britain\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/London\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/English_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Scots_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Norn_Language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Welsh_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Cornish_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Scottish_Gaelic\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Angloromani_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Demonym\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/British_people\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Unitary_state\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Parliamentary_system\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Constitutional_monarchy\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/List_of_British_monarchs\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Anne,_Queen_of_Great_Britain\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/George_I_of_Great_Britain\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/George_II_of_Great_Britain\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/George_III_of_the_United_Kingdom\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Prime_Minister_of_Great_Britain\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Robert_Walpole\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Spencer_Compton,_1st_Earl_of_Wilmington\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Henry_Pelham\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Thomas_Pelham-Holles,_1st_Duke_of_Newcastle\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/William_Pitt_the_Elder\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Frederick_North,_Lord_North\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Parliament_of_Great_Britain\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/House_of_Lords\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/House_of_Commons_of_Great_Britain\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Treaty_of_Union\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Acts_of_Union_1707\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Acts_of_Union_1800\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/List_of_countries_and_dependencies_by_area\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/List_of_countries_by_population\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Pound_sterling\n", - "548\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Kingdom_of_Scotland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/United_Kingdom_of_Great_Britain_and_Ireland\n", - "1830\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/History_of_the_United_Kingdom\n", - "1830\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Timeline_of_English_history\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Georgian_era\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/United_Kingdom_in_the_Napoleonic_Wars\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Regency_era\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Victorian_era\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Edwardian_era\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/History_of_the_United_Kingdom_during_the_First_World_War\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Interwar_Britain\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/History_of_the_United_Kingdom#Second_World_War_1939-1945\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Political_history_of_the_United_Kingdom_(1945%E2%80%93present)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Brexit\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Social_history_of_the_United_Kingdom_(1945%E2%80%93present)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/History_of_women_in_the_United_Kingdom\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Military_history_of_the_United_Kingdom\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Sovereign_state\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Western_Europe\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Treaty_of_Union\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Acts_of_Union_1707\n", - "548\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Kingdom_of_Scotland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Great_Britain\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Kingdom_of_Ireland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Unitary_state\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Parliament_of_Great_Britain\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Palace_of_Westminster\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Personal_union\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/James_VI\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/King_of_Scots\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/King_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/King_of_Ireland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Queen_Elizabeth_I\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Union_of_the_Crowns\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Hanoverian_succession\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/George_I_of_Great_Britain\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Electorate_of_Hanover\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Jacobite_risings\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Battle_of_Culloden\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Seven_Years%27_War\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/British_Empire\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Acts_of_Union_1800\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/United_Kingdom_of_Great_Britain_and_Ireland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Irish_Free_State\n", - "1830\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Britain_(place_name)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Old_French\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Modern_French\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Middle_English\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Treaty_of_Union\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Acts_of_Union_1707\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Parliament_of_the_United_Kingdom\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Scottish_Parliament\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/British_Broadcasting_Corporation\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Historical_Association\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Parliament_of_Great_Britain\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Personal_union\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/James_I_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Union_of_the_Crowns\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/House_of_Stuart\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Kingdom_of_Ireland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Isle_of_Man\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Channel_Islands\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Acts_of_Union_1707\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Monarchy_of_the_United_Kingdom#After_the_1707_Acts_of_Union\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Acts_of_Union_1800\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Succession_to_the_British_throne\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Act_of_Settlement_1701\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Act_of_Security_1704\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Electress_Sophia_of_Hanover\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/House_of_Hanover\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Parliament_of_Great_Britain\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Parliament_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Parliament_of_Scotland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Parliament_of_the_United_Kingdom\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/House_of_Commons_of_Great_Britain\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/House_of_Lords\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/The_Crown\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Peerage_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Peerage_of_Scotland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Representative_peer\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Peerage_of_Great_Britain\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Poynings%27_Law\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Parliament_of_Ireland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Parliament_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Dependency_of_Ireland_on_Great_Britain_Act_1719\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Irish_House_of_Lords\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Kingdom_of_Ireland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/George_I_of_Great_Britain\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Repeal_of_Act_for_Securing_Dependence_of_Ireland_Act_1782\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Constitution_of_1782\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "0\n", - "PAGE HAS NO LINKS: /wiki/Irish_Rebellion_of_1798\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/United_Kingdom_of_Great_Britain_and_Ireland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Anne,_Queen_of_Great_Britain\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Treaty_of_Union\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Treaty_of_Union\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/House_of_Commons_of_Great_Britain\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Anne,_Queen_of_Great_Britain\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/War_of_the_Spanish_Succession\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Dutch_Republic\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Holy_Roman_Empire\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/King_Louis_XIV\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Anne,_Queen_of_Great_Britain\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/John_Churchill,_1st_Duke_of_Marlborough\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Treaty_of_Utrecht\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/English_overseas_possessions\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Newfoundland_(island)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Acadia\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Gibraltar\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Menorca\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/G._M._Trevelyan\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/History_of_the_United_Kingdom\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Georgian_era\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Colonialism\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/English_overseas_possessions\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/British_Empire\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/House_of_Hanover\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/James_Francis_Edward_Stuart\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/John_Erskine,_Earl_of_Mar_(1675%E2%80%931732)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/James_Stanhope,_1st_Earl_Stanhope\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Charles_Townshend,_2nd_Viscount_Townshend\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Charles_Spencer,_3rd_Earl_of_Sunderland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Robert_Walpole\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Septennial_Act_1715\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Jeremy_Black_(historian)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Ragnhild_Hatton\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Robert_Walpole\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/History_of_the_United_Kingdom\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Houghton_Hall\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Walpole_collection\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Henry_Pelham\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Thomas_Pelham-Holles,_1st_Duke_of_Newcastle\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/South_Sea_Bubble\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Chancellor_of_the_Exchequer\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Postmaster_General\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/James_Stanhope,_1st_Earl_Stanhope\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Charles_Spencer,_3rd_Earl_of_Sunderland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/First_Lord_of_the_Treasury\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Sinecure\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Order_of_the_Bath\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Houghton_Hall\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Country_Party_(Britain)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/William_Arnall\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Richard_Temple,_1st_Viscount_Cobham\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/William_Pitt_the_Elder\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/George_Grenville\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Cobhamite\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Samuel_Sandys,_1st_Baron_Sandys\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/International_relations,_1648%E2%80%931814\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/France%E2%80%93United_Kingdom_relations\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/War_of_the_Polish_Succession\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Charles_Townshend,_2nd_Viscount_Townshend\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Louis_XIV\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Louis_XV_of_France\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Andr%C3%A9-Hercule_de_Fleury\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/War_of_the_Austrian_Succession\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Colossus_of_Rhodes\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Whig_(British_political_party)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Glorious_Revolution\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/George_III_of_the_United_Kingdom\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Seven_Years%27_War\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Great_Britain_in_the_Seven_Years%27_War\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Company_rule_in_India\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/William_Pitt,_1st_Earl_of_Chatham\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Siege_of_Fort_St_Philip_(1756)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Planned_French_Invasion_of_Britain_(1759)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Battle_of_Ticonderoga_(1759)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Forbes_Expedition\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Quebec_City\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Battle_of_the_Plains_of_Abraham\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Invasion_of_Guadeloupe_(1759)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Siege_of_Madras\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Battle_of_Minden\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Battle_of_Lagos\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Battle_of_Quiberon_Bay\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Treaty_of_Paris_(1763)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/New_France\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Carnatic_Wars#Third_Carnatic_War_(1756–1763)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/French_India\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Church_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/John_Wesley\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Methodism\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/William_Wilberforce\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Hannah_More\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Clapham_Sect\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Historiography_of_the_British_Empire\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Mercantilism\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/New_Amsterdam\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/American_Revolution\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Thirteen_Colonies\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/American_Revolutionary_War\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/United_States_Declaration_of_Independence\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/George_Washington\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Treaty_of_Paris_(1783)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Thirteen_Colonies\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Adam_Smith\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Wealth_of_Nations\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Free_trade\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Mercantilist\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/History_of_Canada\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Canada_(New_France)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Province_of_Quebec_(1763%E2%80%9391)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Quebec_Act\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/American_Revolutionary_War\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Halifax,_Nova_Scotia\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/United_Empire_Loyalist\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Sierra_Leone\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/History_of_New_Brunswick\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/History_of_Australia_(1788%E2%80%931850)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/History_of_Australia\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/History_of_New_Zealand\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/James_Cook\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/First_voyage_of_James_Cook\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Joseph_Banks\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Botany_Bay\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/James_Matra\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Lord_Sydney\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/First_Fleet\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Convictism_in_Australia\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Lord_Clive\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Mir_Jafar\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Battle_of_Plassey\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/East_India_Company\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Mughal_Empire\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/French_East_India_Company\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Carnatic_Wars\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Battle_of_Plassey\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Battle_of_Buxar\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Robert_Clive\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Bengal_Presidency\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Presidency_armies\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Sepoys\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/French_Revolutionary_Wars\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/War_of_the_First_Coalition\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/War_of_the_Second_Coalition\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/French_Revolution\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Napoleonic_Wars\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Royal_Navy\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Kingdom_of_Ireland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Irish_Rebellion_of_1798\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/William_Pitt_the_Younger\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Act_of_Union_1800\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Patronage\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Parliament_of_Ireland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Coat_of_arms\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/House_of_Hanover\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Anne,_Queen_of_Great_Britain\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Queen_regnant\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/List_of_Scottish_monarchs\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Queen_of_Ireland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/George_I_of_Great_Britain\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/George_II_of_Great_Britain\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/George_III_of_the_United_Kingdom\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Parliament_of_Great_Britain\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Elections_in_Great_Britain\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/William_Pitt_the_Younger\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/House_of_Commons_of_Great_Britain\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "0\n", - "PAGE HAS NO LINKS: /wiki/House_of_Lords\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Lords_Spiritual\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Lords_Temporal\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/House_of_Commons_of_Great_Britain\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/England_and_Wales\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/British_Constitution\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Peerage_of_Great_Britain\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Peerage\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Peerage_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Peerage_of_Scotland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Representative_peers\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/The_Crown\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Peerage_of_Great_Britain\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Peerage_of_Ireland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Irish_House_of_Lords\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Historiography_of_the_United_Kingdom\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Historiography_of_the_British_Empire\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Great_Britain_in_the_Seven_Years%27_War\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Timeline_of_British_history_(1700%E2%80%931799)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/History_of_the_United_Kingdom\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Early_Modern_Britain\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Georgian_era\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Jacobitism\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Acts_of_Union_1800\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Wayback_Machine\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Learning_and_Teaching_Scotland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Wayback_Machine\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Historical_Association\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Bamber_Gascoigne\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/JSTOR\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/The_Oxford_History_of_the_British_Empire\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Historiography_of_the_United_Kingdom\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Historiography_of_the_British_Empire\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Scottish_Parliament\n", - "548\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Kingdom_of_Scotland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/United_Kingdom_of_Great_Britain_and_Ireland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Acts_of_Union_1707\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Great_Britain_in_the_Seven_Years%27_War\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Jacobitism\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Jacobite_risings\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/War_of_Jenkins%27_Ear\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/French_and_Indian_War\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Boston_Massacre\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/American_Revolutionary_War\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Fourth_Anglo-Dutch_War\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/French_Revolutionary_Wars\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Acts_of_Union_1800\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/House_of_Stuart\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Anne,_Queen_of_Great_Britain\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/House_of_Hanover\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/George_I_of_Great_Britain\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/George_II_of_Great_Britain\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/George_III_of_the_United_Kingdom\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Parliament_of_Great_Britain\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/House_of_Lords\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/House_of_Commons_of_Great_Britain\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/List_of_Parliaments_of_Great_Britain\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/List_of_Acts_of_the_Parliament_of_Great_Britain\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/List_of_Acts_of_the_Parliament_of_Great_Britain,_1707%E2%80%931719\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/List_of_Acts_of_the_Parliament_of_Great_Britain,_1720%E2%80%931739\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/List_of_Acts_of_the_Parliament_of_Great_Britain,_1740%E2%80%931759\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/List_of_Acts_of_the_Parliament_of_Great_Britain,_1760%E2%80%931779\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/List_of_Acts_of_the_Parliament_of_Great_Britain,_1780%E2%80%931800\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Elections_in_Great_Britain\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/British_general_election,_1708\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/British_general_election,_1710\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/British_general_election,_1713\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/British_general_election,_1715\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/British_general_election,_1722\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/British_general_election,_1727\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/British_general_election,_1734\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/British_general_election,_1741\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/British_general_election,_1747\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/British_general_election,_1754\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/British_general_election,_1761\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/British_general_election,_1768\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/British_general_election,_1774\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/British_general_election,_1780\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/British_general_election,_1784\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/British_general_election,_1790\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/British_general_election,_1796\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/List_of_British_monarchs\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Peerage_of_Great_Britain\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Privy_Council_of_Great_Britain\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Prime_Minister_of_Great_Britain\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/List_of_Prime_Ministers_of_Great_Britain\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Whigs_(British_political_party)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Tories_(British_political_party)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Whig_Junto\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Patriot_Whigs\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Kit-Cat_Club\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Great_Britain\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Queen_Anne_style_architecture\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Georgian_architecture\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/East_India_Company\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/British_Empire\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Longitude_prize\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Window_tax\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Proclamation_of_Rebellion\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/South_Sea_Company\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Speenhamland_system\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Flag_of_Great_Britain\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Royal_coat_of_arms_of_Great_Britain\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/1707_in_Great_Britain\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/1708_in_Great_Britain\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/1709_in_Great_Britain\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/1710_in_Great_Britain\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/1711_in_Great_Britain\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/1712_in_Great_Britain\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/1713_in_Great_Britain\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/1714_in_Great_Britain\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/1715_in_Great_Britain\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/1716_in_Great_Britain\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/1717_in_Great_Britain\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/1718_in_Great_Britain\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/1719_in_Great_Britain\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/1720_in_Great_Britain\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/1721_in_Great_Britain\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/1722_in_Great_Britain\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/1723_in_Great_Britain\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/1724_in_Great_Britain\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/1725_in_Great_Britain\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/1726_in_Great_Britain\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/1727_in_Great_Britain\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/1728_in_Great_Britain\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/1729_in_Great_Britain\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/1730_in_Great_Britain\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/1731_in_Great_Britain\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/1732_in_Great_Britain\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/1733_in_Great_Britain\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/1734_in_Great_Britain\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/1735_in_Great_Britain\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/1736_in_Great_Britain\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/1737_in_Great_Britain\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/1738_in_Great_Britain\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/1739_in_Great_Britain\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/1740_in_Great_Britain\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/1741_in_Great_Britain\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/1742_in_Great_Britain\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/1743_in_Great_Britain\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/1744_in_Great_Britain\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/1745_in_Great_Britain\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/1746_in_Great_Britain\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/1747_in_Great_Britain\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/1748_in_Great_Britain\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/1749_in_Great_Britain\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/1750_in_Great_Britain\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/1751_in_Great_Britain\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/1752_in_Great_Britain\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/1753_in_Great_Britain\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/1754_in_Great_Britain\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/1755_in_Great_Britain\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/1756_in_Great_Britain\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/1757_in_Great_Britain\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/1758_in_Great_Britain\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/1759_in_Great_Britain\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/1760_in_Great_Britain\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "0\n", - "PAGE HAS NO LINKS: /wiki/1761_in_Great_Britain\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/1762_in_Great_Britain\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/1763_in_Great_Britain\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/1764_in_Great_Britain\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/1765_in_Great_Britain\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/1766_in_Great_Britain\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/1767_in_Great_Britain\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/1768_in_Great_Britain\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/1769_in_Great_Britain\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/1770_in_Great_Britain\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/1771_in_Great_Britain\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/1772_in_Great_Britain\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/1773_in_Great_Britain\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/1774_in_Great_Britain\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/1775_in_Great_Britain\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/1776_in_Great_Britain\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/1777_in_Great_Britain\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/1778_in_Great_Britain\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/1779_in_Great_Britain\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/1780_in_Great_Britain\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/1781_in_Great_Britain\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/1782_in_Great_Britain\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/1783_in_Great_Britain\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/1784_in_Great_Britain\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/1785_in_Great_Britain\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/1786_in_Great_Britain\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/1787_in_Great_Britain\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/1788_in_Great_Britain\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/1789_in_Great_Britain\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/1790_in_Great_Britain\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/1791_in_Great_Britain\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/1792_in_Great_Britain\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/1793_in_Great_Britain\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/1794_in_Great_Britain\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/1795_in_Great_Britain\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/1796_in_Great_Britain\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/1797_in_Great_Britain\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/1798_in_Great_Britain\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/1799_in_Great_Britain\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/1800_in_Great_Britain\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Parliament_of_Great_Britain\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Act_of_Parliament\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/List_of_Acts_of_the_Parliament_of_Great_Britain,_1707%E2%80%9319\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/List_of_Acts_of_the_Parliament_of_Great_Britain,_1720%E2%80%9339\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/List_of_Acts_of_the_Parliament_of_Great_Britain,_1740%E2%80%9359\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/List_of_Acts_of_the_Parliament_of_Great_Britain,_1760%E2%80%9379\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/List_of_Acts_of_the_Parliament_of_Great_Britain,_1780%E2%80%931800\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/British_Isles\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Terminology_of_the_British_Isles\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Alba\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Albion\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Prydain\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Britain_(place_name)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/%C3%89ire\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Hibernia\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/British_Isles_naming_dispute\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Politics_in_the_British_Isles\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Sovereign_state\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Republic_of_Ireland\n", - "1830\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Northern_Ireland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Scotland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Wales\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Crown_dependencies\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Guernsey\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Jersey\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Isle_of_Man\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Sark\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Ireland%E2%80%93United_Kingdom_relations\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/British%E2%80%93Irish_Council\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/British%E2%80%93Irish_Intergovernmental_Conference\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/British%E2%80%93Irish_Parliamentary_Assembly\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Common_Travel_Area\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Channel_Islands\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Islands_of_the_Clyde\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Great_Britain\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Hebrides\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Inner_Hebrides\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Outer_Hebrides\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Ireland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Isle_of_Man\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Northern_Isles\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Orkney\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Shetland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Isles_of_Scilly\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/List_of_islands_of_the_Bailiwick_of_Guernsey\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/List_of_islands_of_Ireland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/List_of_islands_of_the_Bailiwick_of_Jersey\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/List_of_islands_of_the_Isle_of_Man\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/List_of_islands_of_the_United_Kingdom\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/List_of_islands_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/List_of_islands_of_Scotland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/List_of_islands_of_Wales\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/History_of_the_British_Isles\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/History_of_Ireland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/History_of_the_Republic_of_Ireland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/History_of_the_United_Kingdom\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/History_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/History_of_Northern_Ireland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/History_of_Scotland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/History_of_Wales\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/History_of_Guernsey\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/History_of_Jersey\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/History_of_the_Isle_of_Man\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Irish_Free_State\n", - "548\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Principality_of_Wales\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Kingdom_of_Ireland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Kingdom_of_Scotland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/United_Kingdom_of_Great_Britain_and_Ireland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Germanic_languages\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/English_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Scots_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Celtic_languages\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Cornish_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Scottish_Gaelic\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Irish_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Manx_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Welsh_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Romance_languages\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Auregnais\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/French_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Guern%C3%A9siais\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/J%C3%A8rriais\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Sercquiais\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/British_Sign_Language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Irish_Sign_Language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Northern_Ireland_Sign_Language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Shelta\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/British_people\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Cornish_people\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/English_people\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Romanichal\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Irish_people\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Irish_Travellers\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Kale_(Welsh_Romanies)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Manx_people\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/People_of_Northern_Ireland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Scottish_people\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Ulster_Scots_people\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Welsh_people\n", - "468\n", - "468\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Main_Page\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Main_Page\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Flag_of_Pennsylvania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Seal_of_Pennsylvania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Glossary_of_vexillology\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Civil_flag\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/State_flag\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Coat_of_Arms_of_Pennsylvania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/List_of_flag_names\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Flags_of_the_Governors_of_the_U.S._States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Governor_of_Pennsylvania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Coat_of_Arms_of_Pennsylvania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Historical_coats_of_arms_of_the_U.S._states\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Armiger\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Crest_(heraldry)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Bald_eagle\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Torse\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Supporter\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Horses\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Motto\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Seal_of_Pennsylvania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Flag\n", - "1\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Bald_eagle\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Flags_of_governors_of_the_U.S._states\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Governor_of_Pennsylvania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/North_American_Vexillological_Association\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/U.S._state\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/US_Territory\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Provinces_of_Canada\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Flags_of_the_Governors_of_the_U.S._States\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "0\n", - "PAGE HAS NO LINKS: /wiki/Governor_of_Pennsylvania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Seals_of_the_Governors_of_the_U.S._States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Secretary_of_the_Commonwealth_of_Pennsylvania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Pennsylvania_Auditor_General\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Supreme_Court_of_Pennsylvania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Superior_Court_of_Pennsylvania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Pennsylvania_Department_of_Public_Welfare\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Coat_of_Arms_of_the_U.S._States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Flags_of_the_U.S._states\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/U.S._state\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Flag_of_Alabama\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Flag_of_Alaska\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Flag_of_Arizona\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Flag_of_Arkansas\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Flag_of_California\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Flag_of_Colorado\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Flag_of_Connecticut\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Flag_of_Delaware\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Flag_of_Florida\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Flag_of_Georgia_(U.S._state)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Flag_of_Hawaii\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Flag_of_Idaho\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Flag_of_Illinois\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Flag_of_Indiana\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Flag_of_Iowa\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Flag_of_Kansas\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Flag_of_Kentucky\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Flag_of_Louisiana\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Flag_of_Maine\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Flag_of_Maryland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Flag_of_Massachusetts\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Flag_of_Michigan\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Flag_of_Minnesota\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Flag_of_Mississippi\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Flag_of_Missouri\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Flag_of_Montana\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Flag_of_Nebraska\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Flag_of_Nevada\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Flag_of_New_Hampshire\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Flag_of_New_Jersey\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Flag_of_New_Mexico\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Flag_of_New_York\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Flag_of_North_Carolina\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Flag_of_North_Dakota\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Flag_of_Ohio\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Flag_of_Oklahoma\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Flag_of_Oregon\n", - "69\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Flag_of_Rhode_Island\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Flag_of_South_Carolina\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Flag_of_South_Dakota\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Flag_of_Tennessee\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Flag_of_Texas\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Flag_of_Utah\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Flag_of_Vermont\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Flag_of_Virginia\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Flag_of_Washington\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Flag_of_West_Virginia\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Flag_of_Wisconsin\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Flag_of_Wyoming\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Federal_district\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Flag_of_Washington,_D.C.\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Insular_area\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Flag_of_American_Samoa\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Flag_of_Guam\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Flag_of_the_Northern_Mariana_Islands\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Flag_of_Puerto_Rico\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Flag_of_the_United_States_Virgin_Islands\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/US_Minor_Outlying_Islands\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/History_of_the_flags_of_the_United_States#Uninhabited_territory_flags\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/History_of_the_flags_of_the_United_States#Uninhabited_territory_flags\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Navassa_Island#Unofficial_flag\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Palmyra_Atoll#History\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Flag_of_Wake_Island\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Flags_of_the_Confederate_States_of_America\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Flag_of_Cuba\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Flag_of_the_Philippines\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Flag_of_California#History\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Panama_Canal_Zone\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Flag_of_Texas\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Flag_of_the_Trust_Territory_of_the_Pacific_Islands\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/United_States_Civil_Administration_of_the_Ryukyu_Islands\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Flag_of_the_Green_Mountain_Boys\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Bonnie_Blue_Flag\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Commonwealth_(U.S._state)\n", - "1\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Harrisburg,_Pennsylvania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Index_of_Pennsylvania-related_articles\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/United_States_congressional_delegations_from_Pennsylvania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Government_of_Pennsylvania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/History_of_Pennsylvania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Geography_of_Pennsylvania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Geology_of_Pennsylvania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Law_of_Pennsylvania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/List_of_people_from_Pennsylvania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/List_of_Pennsylvania_state_parks\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/List_of_Pennsylvania_state_symbols\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Agriculture_in_Pennsylvania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Crime_in_Pennsylvania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Pennsylvania#Demographics\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Pennsylvania#Economy\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Education_in_Pennsylvania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Gambling_in_Pennsylvania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Politics_of_Pennsylvania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Sports_in_Pennsylvania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Pennsylvania_metropolitan_areas\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Altoona,_Pennsylvania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Baltimore%E2%80%93Washington_metropolitan_area\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Erie,_Pennsylvania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Harrisburg%E2%80%93Carlisle_metropolitan_statistical_area\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Johnstown,_Pennsylvania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Lancaster,_Pennsylvania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Lebanon,_Pennsylvania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Lehigh_Valley\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/New_York_metropolitan_area\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Delaware_Valley\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Pittsburgh_metropolitan_area\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Berks_County,_Pennsylvania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Wyoming_Valley\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/State_College,_Pennsylvania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Williamsport,_Pennsylvania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/York,_Pennsylvania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Hanover,_Pennsylvania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/List_of_cities_in_Pennsylvania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Allentown,_Pennsylvania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Altoona,_Pennsylvania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Bethlehem,_Pennsylvania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Butler,_Pennsylvania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Chester,_Pennsylvania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/DuBois,_Pennsylvania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Easton,_Pennsylvania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Erie,_Pennsylvania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Greensburg,_Pennsylvania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Harrisburg,_Pennsylvania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Hazleton,_Pennsylvania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Johnstown,_Pennsylvania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Lancaster,_Pennsylvania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Lebanon,_Pennsylvania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/McKeesport,_Pennsylvania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/New_Castle,_Pennsylvania\n", - "1705\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Pittsburgh\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Pottsville,_Pennsylvania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Reading,_Pennsylvania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Scranton,_Pennsylvania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Sunbury,_Pennsylvania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Wilkes-Barre,_Pennsylvania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Williamsport,_Pennsylvania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/York,_Pennsylvania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/List_of_towns_and_boroughs_in_Pennsylvania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Abington_Township,_Montgomery_County,_Pennsylvania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Bensalem_Township,_Pennsylvania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Bethel_Park,_Pennsylvania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Bristol_Township,_Bucks_County,_Pennsylvania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Cheltenham_Township,_Montgomery_County,_Pennsylvania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Cranberry_Township,_Butler_County,_Pennsylvania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Darby,_Pennsylvania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Falls_Township,_Bucks_County,_Pennsylvania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Hampden_Township,_Cumberland_County,_Pennsylvania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Haverford_Township,_Delaware_County,_Pennsylvania\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "0\n", - "PAGE HAS NO LINKS: /wiki/Hempfield_Township,_Westmoreland_County,_Pennsylvania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Lower_Macungie_Township,_Lehigh_County,_Pennsylvania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Lower_Makefield_Township,_Bucks_County,_Pennsylvania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Lower_Merion_Township,_Pennsylvania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Lower_Paxton_Township,_Dauphin_County,_Pennsylvania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Manheim_Township,_Lancaster_County,_Pennsylvania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/McCandless,_Pennsylvania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Middletown_Township,_Bucks_County,_Pennsylvania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Millcreek_Township,_Erie_County,_Pennsylvania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Monroeville,_Pennsylvania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Mt._Lebanon_Township,_Allegheny_County,_Pennsylvania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Norristown,_Pennsylvania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Northampton_Township,_Bucks_County,_Pennsylvania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/North_Huntingdon_Township,_Westmoreland_County,_Pennsylvania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Penn_Hills_Township,_Allegheny_County,_Pennsylvania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Radnor_Township,_Delaware_County,_Pennsylvania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Ridley_Township,_Delaware_County,_Pennsylvania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Ross_Township,_Allegheny_County,_Pennsylvania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Shaler_Township,_Allegheny_County,_Pennsylvania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Spring_Township,_Berks_County,_Pennsylvania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/State_College,_Pennsylvania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Tredyffrin_Township,_Chester_County,_Pennsylvania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Upper_Darby_Township,_Delaware_County,_Pennsylvania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Upper_Merion_Township,_Pennsylvania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Warminster_Township,_Bucks_County,_Pennsylvania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/West_Chester,_Pennsylvania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Whitehall_Township,_Lehigh_County,_Pennsylvania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/York_Township,_York_County,_Pennsylvania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Pennsylvania_Regions\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Allegheny_Mountains\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Allegheny_National_Forest\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Allegheny_Plateau\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Atlantic_coastal_plain\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Bald_Eagle_Valley\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Blue_Ridge_Mountains\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/South_Central_Pennsylvania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Coal_Region\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Cumberland_Valley\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Delaware_Valley\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Pennsylvania_Dutch_Country\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Lehigh_Valley\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Endless_Mountains\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Great_Valley_(Pennsylvania)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Mahoning_Valley_(geographic)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Happy_Valley_(Pennsylvania)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Laurel_Highlands\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Lehigh_Valley\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Philadelphia_Main_Line\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Moshannon,_Pennsylvania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Nittany_Valley\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Northeastern_Pennsylvania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Northern_Tier_(Pennsylvania)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Northwestern_Pennsylvania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/North_Penn_Valley\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Pittsburgh_metropolitan_area\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Oil_Region\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Oley_Valley\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Pennsylvania_Highlands_Region\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Penns_Valley\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Philicon_Valley\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Piedmont_(United_States)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Pocono_Mountains\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Ridge-and-Valley_Appalachians\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Lower_Saucon_Township,_Northampton_County,_Pennsylvania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/South_Central_Pennsylvania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Delaware_Valley\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Harrisburg-York-Lebanon,_PA_Combined_Statistical_Area\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Western_Pennsylvania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Harrisburg%E2%80%93Carlisle_metropolitan_statistical_area\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Western_Pennsylvania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Wyoming_Valley\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/List_of_counties_in_Pennsylvania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Adams_County,_Pennsylvania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Allegheny_County,_Pennsylvania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Armstrong_County,_Pennsylvania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Beaver_County,_Pennsylvania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Bedford_County,_Pennsylvania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Berks_County,_Pennsylvania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Blair_County,_Pennsylvania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Bradford_County,_Pennsylvania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Bucks_County,_Pennsylvania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Butler_County,_Pennsylvania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Cambria_County,_Pennsylvania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Cameron_County,_Pennsylvania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Carbon_County,_Pennsylvania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Centre_County,_Pennsylvania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Chester_County,_Pennsylvania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Clarion_County,_Pennsylvania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Clearfield_County,_Pennsylvania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Clinton_County,_Pennsylvania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Columbia_County,_Pennsylvania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Crawford_County,_Pennsylvania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Cumberland_County,_Pennsylvania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Dauphin_County,_Pennsylvania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Delaware_County,_Pennsylvania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Elk_County,_Pennsylvania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Erie_County,_Pennsylvania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Fayette_County,_Pennsylvania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Forest_County,_Pennsylvania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Franklin_County,_Pennsylvania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Fulton_County,_Pennsylvania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Greene_County,_Pennsylvania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Huntingdon_County,_Pennsylvania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Indiana_County,_Pennsylvania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Jefferson_County,_Pennsylvania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Juniata_County,_Pennsylvania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Lackawanna_County,_Pennsylvania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Lancaster_County,_Pennsylvania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Lawrence_County,_Pennsylvania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Lebanon_County,_Pennsylvania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Lehigh_County,_Pennsylvania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Luzerne_County,_Pennsylvania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Lycoming_County,_Pennsylvania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/McKean_County,_Pennsylvania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Mercer_County,_Pennsylvania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Mifflin_County,_Pennsylvania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Monroe_County,_Pennsylvania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Montgomery_County,_Pennsylvania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Montour_County,_Pennsylvania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Northampton_County,_Pennsylvania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Northumberland_County,_Pennsylvania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Perry_County,_Pennsylvania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Philadelphia_County,_Pennsylvania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Pike_County,_Pennsylvania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Potter_County,_Pennsylvania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Schuylkill_County,_Pennsylvania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Snyder_County,_Pennsylvania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Somerset_County,_Pennsylvania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Sullivan_County,_Pennsylvania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Susquehanna_County,_Pennsylvania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Tioga_County,_Pennsylvania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Union_County,_Pennsylvania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Venango_County,_Pennsylvania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Warren_County,_Pennsylvania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Washington_County,_Pennsylvania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Wayne_County,_Pennsylvania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Westmoreland_County,_Pennsylvania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Wyoming_County,_Pennsylvania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/York_County,_Pennsylvania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Flag_and_coat_of_arms_of_Pennsylvania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Flag_and_coat_of_arms_of_Pennsylvania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Main_Page\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Main_Page\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "0\n", - "PAGE HAS NO LINKS: /wiki/Coat_of_arms_of_Pennsylvania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Seal_of_Pennsylvania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Glossary_of_vexillology\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Civil_flag\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/State_flag\n", - "5\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/List_of_flag_names\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Flags_of_the_Governors_of_the_U.S._States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Governor_of_Pennsylvania\n", - "8\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Historical_coats_of_arms_of_the_U.S._states\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Armiger\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Crest_(heraldry)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Bald_eagle\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Torse\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Supporter\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Horses\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Motto\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Seal_of_Pennsylvania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Flag\n", - "1\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Bald_eagle\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Flags_of_governors_of_the_U.S._states\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Governor_of_Pennsylvania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/North_American_Vexillological_Association\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/U.S._state\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/US_Territory\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Provinces_of_Canada\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Flags_of_the_Governors_of_the_U.S._States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Governor_of_Pennsylvania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Seals_of_the_Governors_of_the_U.S._States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Secretary_of_the_Commonwealth_of_Pennsylvania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Pennsylvania_Auditor_General\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Supreme_Court_of_Pennsylvania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Superior_Court_of_Pennsylvania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Pennsylvania_Department_of_Public_Welfare\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Coat_of_Arms_of_the_U.S._States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Flags_of_the_U.S._states\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/U.S._state\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Flag_of_Alabama\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Flag_of_Alaska\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Flag_of_Arizona\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Flag_of_Arkansas\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Flag_of_California\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Flag_of_Colorado\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Flag_of_Connecticut\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Flag_of_Delaware\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Flag_of_Florida\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Flag_of_Georgia_(U.S._state)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Flag_of_Hawaii\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Flag_of_Idaho\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Flag_of_Illinois\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Flag_of_Indiana\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Flag_of_Iowa\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Flag_of_Kansas\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Flag_of_Kentucky\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Flag_of_Louisiana\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Flag_of_Maine\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Flag_of_Maryland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Flag_of_Massachusetts\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Flag_of_Michigan\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Flag_of_Minnesota\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Flag_of_Mississippi\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Flag_of_Missouri\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Flag_of_Montana\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Flag_of_Nebraska\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Flag_of_Nevada\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Flag_of_New_Hampshire\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Flag_of_New_Jersey\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Flag_of_New_Mexico\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Flag_of_New_York\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Flag_of_North_Carolina\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Flag_of_North_Dakota\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Flag_of_Ohio\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Flag_of_Oklahoma\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Flag_of_Oregon\n", - "300\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Flag_of_Rhode_Island\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Flag_of_South_Carolina\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Flag_of_South_Dakota\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Flag_of_Tennessee\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Flag_of_Texas\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Flag_of_Utah\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Flag_of_Vermont\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Flag_of_Virginia\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Flag_of_Washington\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Flag_of_West_Virginia\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Flag_of_Wisconsin\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Flag_of_Wyoming\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Federal_district\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Flag_of_Washington,_D.C.\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Insular_area\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Flag_of_American_Samoa\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Flag_of_Guam\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Flag_of_the_Northern_Mariana_Islands\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Flag_of_Puerto_Rico\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Flag_of_the_United_States_Virgin_Islands\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/US_Minor_Outlying_Islands\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/History_of_the_flags_of_the_United_States#Uninhabited_territory_flags\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/History_of_the_flags_of_the_United_States#Uninhabited_territory_flags\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Navassa_Island#Unofficial_flag\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Palmyra_Atoll#History\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Flag_of_Wake_Island\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Flags_of_the_Confederate_States_of_America\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Flag_of_Cuba\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Flag_of_the_Philippines\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Flag_of_California#History\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Panama_Canal_Zone\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Flag_of_Texas\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Flag_of_the_Trust_Territory_of_the_Pacific_Islands\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/United_States_Civil_Administration_of_the_Ryukyu_Islands\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Flag_of_the_Green_Mountain_Boys\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Bonnie_Blue_Flag\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Commonwealth_(U.S._state)\n", - "1\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Harrisburg,_Pennsylvania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Index_of_Pennsylvania-related_articles\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/United_States_congressional_delegations_from_Pennsylvania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Government_of_Pennsylvania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/History_of_Pennsylvania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Geography_of_Pennsylvania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Geology_of_Pennsylvania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Law_of_Pennsylvania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/List_of_people_from_Pennsylvania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/List_of_Pennsylvania_state_parks\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/List_of_Pennsylvania_state_symbols\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Agriculture_in_Pennsylvania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Crime_in_Pennsylvania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Pennsylvania#Demographics\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Pennsylvania#Economy\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Education_in_Pennsylvania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Gambling_in_Pennsylvania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Politics_of_Pennsylvania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Sports_in_Pennsylvania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Pennsylvania_metropolitan_areas\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Altoona,_Pennsylvania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Baltimore%E2%80%93Washington_metropolitan_area\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Erie,_Pennsylvania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Harrisburg%E2%80%93Carlisle_metropolitan_statistical_area\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Johnstown,_Pennsylvania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Lancaster,_Pennsylvania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Lebanon,_Pennsylvania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Lehigh_Valley\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/New_York_metropolitan_area\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Delaware_Valley\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Pittsburgh_metropolitan_area\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Berks_County,_Pennsylvania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Wyoming_Valley\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/State_College,_Pennsylvania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Williamsport,_Pennsylvania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/York,_Pennsylvania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Hanover,_Pennsylvania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/List_of_cities_in_Pennsylvania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Allentown,_Pennsylvania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Altoona,_Pennsylvania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Bethlehem,_Pennsylvania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Butler,_Pennsylvania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Chester,_Pennsylvania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/DuBois,_Pennsylvania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Easton,_Pennsylvania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Erie,_Pennsylvania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Greensburg,_Pennsylvania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Harrisburg,_Pennsylvania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Hazleton,_Pennsylvania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Johnstown,_Pennsylvania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Lancaster,_Pennsylvania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Lebanon,_Pennsylvania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/McKeesport,_Pennsylvania\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "0\n", - "PAGE HAS NO LINKS: /wiki/New_Castle,_Pennsylvania\n", - "1705\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Pittsburgh\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Pottsville,_Pennsylvania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Reading,_Pennsylvania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Scranton,_Pennsylvania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Sunbury,_Pennsylvania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Wilkes-Barre,_Pennsylvania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Williamsport,_Pennsylvania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/York,_Pennsylvania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/List_of_towns_and_boroughs_in_Pennsylvania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Abington_Township,_Montgomery_County,_Pennsylvania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Bensalem_Township,_Pennsylvania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Bethel_Park,_Pennsylvania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Bristol_Township,_Bucks_County,_Pennsylvania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Cheltenham_Township,_Montgomery_County,_Pennsylvania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Cranberry_Township,_Butler_County,_Pennsylvania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Darby,_Pennsylvania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Falls_Township,_Bucks_County,_Pennsylvania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Hampden_Township,_Cumberland_County,_Pennsylvania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Haverford_Township,_Delaware_County,_Pennsylvania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Hempfield_Township,_Westmoreland_County,_Pennsylvania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Lower_Macungie_Township,_Lehigh_County,_Pennsylvania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Lower_Makefield_Township,_Bucks_County,_Pennsylvania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Lower_Merion_Township,_Pennsylvania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Lower_Paxton_Township,_Dauphin_County,_Pennsylvania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Manheim_Township,_Lancaster_County,_Pennsylvania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/McCandless,_Pennsylvania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Middletown_Township,_Bucks_County,_Pennsylvania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Millcreek_Township,_Erie_County,_Pennsylvania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Monroeville,_Pennsylvania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Mt._Lebanon_Township,_Allegheny_County,_Pennsylvania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Norristown,_Pennsylvania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Northampton_Township,_Bucks_County,_Pennsylvania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/North_Huntingdon_Township,_Westmoreland_County,_Pennsylvania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Penn_Hills_Township,_Allegheny_County,_Pennsylvania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Radnor_Township,_Delaware_County,_Pennsylvania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Ridley_Township,_Delaware_County,_Pennsylvania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Ross_Township,_Allegheny_County,_Pennsylvania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Shaler_Township,_Allegheny_County,_Pennsylvania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Spring_Township,_Berks_County,_Pennsylvania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/State_College,_Pennsylvania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Tredyffrin_Township,_Chester_County,_Pennsylvania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Upper_Darby_Township,_Delaware_County,_Pennsylvania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Upper_Merion_Township,_Pennsylvania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Warminster_Township,_Bucks_County,_Pennsylvania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/West_Chester,_Pennsylvania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Whitehall_Township,_Lehigh_County,_Pennsylvania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/York_Township,_York_County,_Pennsylvania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Pennsylvania_Regions\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Allegheny_Mountains\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Allegheny_National_Forest\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Allegheny_Plateau\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Atlantic_coastal_plain\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Bald_Eagle_Valley\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Blue_Ridge_Mountains\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/South_Central_Pennsylvania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Coal_Region\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Cumberland_Valley\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Delaware_Valley\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Pennsylvania_Dutch_Country\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Lehigh_Valley\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Endless_Mountains\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Great_Valley_(Pennsylvania)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Mahoning_Valley_(geographic)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Happy_Valley_(Pennsylvania)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Laurel_Highlands\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Lehigh_Valley\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Philadelphia_Main_Line\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Moshannon,_Pennsylvania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Nittany_Valley\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Northeastern_Pennsylvania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Northern_Tier_(Pennsylvania)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Northwestern_Pennsylvania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/North_Penn_Valley\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Pittsburgh_metropolitan_area\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Oil_Region\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Oley_Valley\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Pennsylvania_Highlands_Region\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Penns_Valley\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Philicon_Valley\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Piedmont_(United_States)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Pocono_Mountains\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Ridge-and-Valley_Appalachians\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Lower_Saucon_Township,_Northampton_County,_Pennsylvania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/South_Central_Pennsylvania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Delaware_Valley\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Harrisburg-York-Lebanon,_PA_Combined_Statistical_Area\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Western_Pennsylvania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Harrisburg%E2%80%93Carlisle_metropolitan_statistical_area\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Western_Pennsylvania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Wyoming_Valley\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/List_of_counties_in_Pennsylvania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Adams_County,_Pennsylvania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Allegheny_County,_Pennsylvania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Armstrong_County,_Pennsylvania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Beaver_County,_Pennsylvania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Bedford_County,_Pennsylvania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Berks_County,_Pennsylvania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Blair_County,_Pennsylvania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Bradford_County,_Pennsylvania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Bucks_County,_Pennsylvania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Butler_County,_Pennsylvania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Cambria_County,_Pennsylvania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Cameron_County,_Pennsylvania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Carbon_County,_Pennsylvania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Centre_County,_Pennsylvania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Chester_County,_Pennsylvania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Clarion_County,_Pennsylvania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Clearfield_County,_Pennsylvania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Clinton_County,_Pennsylvania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Columbia_County,_Pennsylvania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Crawford_County,_Pennsylvania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Cumberland_County,_Pennsylvania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Dauphin_County,_Pennsylvania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Delaware_County,_Pennsylvania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Elk_County,_Pennsylvania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Erie_County,_Pennsylvania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Fayette_County,_Pennsylvania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Forest_County,_Pennsylvania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Franklin_County,_Pennsylvania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Fulton_County,_Pennsylvania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Greene_County,_Pennsylvania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Huntingdon_County,_Pennsylvania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Indiana_County,_Pennsylvania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Jefferson_County,_Pennsylvania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Juniata_County,_Pennsylvania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Lackawanna_County,_Pennsylvania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Lancaster_County,_Pennsylvania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Lawrence_County,_Pennsylvania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Lebanon_County,_Pennsylvania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Lehigh_County,_Pennsylvania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Luzerne_County,_Pennsylvania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Lycoming_County,_Pennsylvania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/McKean_County,_Pennsylvania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Mercer_County,_Pennsylvania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Mifflin_County,_Pennsylvania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Monroe_County,_Pennsylvania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Montgomery_County,_Pennsylvania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Montour_County,_Pennsylvania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Northampton_County,_Pennsylvania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Northumberland_County,_Pennsylvania\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "0\n", - "PAGE HAS NO LINKS: /wiki/Perry_County,_Pennsylvania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Philadelphia_County,_Pennsylvania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Pike_County,_Pennsylvania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Potter_County,_Pennsylvania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Schuylkill_County,_Pennsylvania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Snyder_County,_Pennsylvania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Somerset_County,_Pennsylvania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Sullivan_County,_Pennsylvania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Susquehanna_County,_Pennsylvania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Tioga_County,_Pennsylvania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Union_County,_Pennsylvania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Venango_County,_Pennsylvania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Warren_County,_Pennsylvania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Washington_County,_Pennsylvania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Wayne_County,_Pennsylvania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Westmoreland_County,_Pennsylvania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Wyoming_County,_Pennsylvania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/York_County,_Pennsylvania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Flag_and_coat_of_arms_of_Pennsylvania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Flag_and_coat_of_arms_of_Pennsylvania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Main_Page\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Main_Page\n", - "1705\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/English_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/English_people\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/English-speaking_world\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Second_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Foreign_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Language_family\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Indo-European_languages\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Germanic_languages\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/West_Germanic_languages\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Anglo-Frisian_languages\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Anglic_languages\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Old_English\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Middle_English\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Early_Modern_English\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Writing_system\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Latin_script\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/English_alphabet\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/English_Braille\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Unified_English_Braille\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Manually_coded_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Manually_coded_English\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/List_of_territorial_entities_where_English_is_an_official_language#Sovereign_states\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/List_of_territorial_entities_where_English_is_an_official_language#Non-sovereign_entities\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/United_Nations\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/European_Union\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Commonwealth_of_Nations\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Council_of_Europe\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/International_Criminal_Court\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/International_Olympic_Committee\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/International_Organization_for_Standardization\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/NATO\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/WTO\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/North_American_Free_Trade_Agreement\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Organization_of_American_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Organisation_for_Economic_Co-operation_and_Development\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Organisation_of_Islamic_Cooperation\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/OPEC\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/GUAM_Organization_for_Democracy_and_Economic_Development\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Pacific_Islands_Forum\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/UKUSA_Agreement\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Association_of_Southeast_Asian_Nations\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/ASEAN_Economic_Community\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/South_Asian_Association_for_Regional_Cooperation\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Caribbean_Community\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Turkic_Council\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Economic_Cooperation_Organization\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/ISO_639-1\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/ISO_639-2\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/ISO_639-3\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Glottolog\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Linguasphere_Observatory\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/International_Phonetic_Alphabet\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/International_Phonetic_Alphabet#Fonts\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Replacement_character\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Unicode\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/West_Germanic_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Anglo-Saxon_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/List_of_languages_by_number_of_native_speakers\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Standard_Chinese\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Spanish_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Germanic_languages\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Angles\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Angeln\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Baltic_Sea\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Frisian_languages\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Low_German\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/German_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Dutch_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Afrikaans\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/French_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Romance_languages\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Old_Norse\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/North_Germanic_languages\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Latin_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Anglo-Frisian_languages\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Great_Britain\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Anglo-Saxons\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Old_English\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Middle_English\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Norman_conquest_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Early_Modern_English\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Printing_press\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/King_James_Bible\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Great_Vowel_Shift\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/British_Empire\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Jenna\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Warwick\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Superpower\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/World_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Second_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Official_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/List_of_territorial_entities_where_English_is_an_official_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Caribbean\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Official_languages_of_the_United_Nations\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Languages_of_the_European_Union\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Vocabulary\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/English_grammar\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Inflection\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Morphology_(linguistics)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Word_order\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Analytic_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Inflection\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/SVO_word_order\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Syntax\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Modern_English\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Auxiliary_verb\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Word_order\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Grammatical_tense\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Grammatical_aspect\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Grammatical_mood\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Passive_voice\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Interrogative\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Negation\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/English_accents\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/English_dialects\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Phonetics\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Phonology\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Vocabulary\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Grammar\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/English_spelling_differences\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Mutual_intelligibility\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Old_West_Norse\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Old_East_Norse\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Old_Gutnish\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Old_English\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/West_Germanic_languages\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Old_Frisian\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Old_Saxon\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Old_Dutch\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Old_High_German\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Crimean_Gothic\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/East_Germanic\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Anglo-Frisian_languages\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Scots_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/West_Frisian_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/North_Frisian_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Saterland_Frisian_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Phylogenetic_tree\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Indo-European_languages\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/West_Germanic_languages\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Germanic_languages\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Old_English\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Anglo-Saxon_settlement_of_Britain\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Anglo-Frisian_languages\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Frisian_languages\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Low_German\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Ingvaeonic_languages\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Middle_English\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "0\n", - "PAGE HAS NO LINKS: /wiki/English_languages\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Scots_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Fingallian\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Forth_and_Bargy_dialect\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Icelandic_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Faroese_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/British_Isles\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Mutual_intelligibility\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Lexis_(linguistics)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Syntax\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Phonology\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Old_Norse\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Norman_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Clades\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Mixed_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Creole_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Middle_English_creole_hypothesis\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Language_change\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Dutch_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/German_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Swedish_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Proto-Germanic\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Modal_verb\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Germanic_strong_verb\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Germanic_weak_verb\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Proto-Indo-European_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Grimm%27s_law\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Verner%27s_law\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Palatalization_(sound_change)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Phonological_history_of_Old_English#Palatalization\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Word_stem\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Russian_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Sanskrit\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/History_of_English\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Old_English\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Beowulf\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Manuscript\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Half-uncial\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Ingvaeonic_languages\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Frisia\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Lower_Saxony\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Jutland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Sweden\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Angles\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Saxons\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Jutes\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Anglo-Saxon_settlement_of_Britain\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/End_of_Roman_rule_in_Britain\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Celtic_language-death_in_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Roman_Britain\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Common_Brittonic\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Celtic_languages\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Latin\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Caesar%27s_invasions_of_Britain\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Mercian_dialect\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Northumbrian_dialect\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Kentish_dialect_(Old_English)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/West_Saxon_dialect\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Alfred_the_Great\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Wessex\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Standard_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Epic_poetry\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Beowulf\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/C%C3%A6dmon%27s_Hymn\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Scots_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Anglo-Saxon_runes\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Old_English_Latin_alphabet\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Half-uncial\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Letterform\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Wynn\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Thorn_(letter)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Eth\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/%C3%86\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/German_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Old_Frisian\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Old_English_grammar\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Inflectional_morphology\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Pragmatic_word_order\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Grammatical_case\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Grammatical_person\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Grammatical_number\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Nominative_case\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Accusative_case\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Genitive_case\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Present_tense\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Middle_English\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/John_of_Trevisa\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Language_contact\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Middle_English\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Norman_conquest_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/William_the_Conqueror\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Old_Norse\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/North_Germanic\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Danelaw\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Scots_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Northern_England_English\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/The_Midlands\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Kingdom_of_Lindsey\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Norman_conquest_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Old_Norman\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Romance_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/French_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Anglo-Norman_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Loanwords\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Possession_(linguistics)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Wycliffe_Bible\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Geoffrey_Chaucer\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/The_Canterbury_Tales\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Thomas_Malory\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Le_Morte_d%27Arthur\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Early_Modern_English\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Great_Vowel_Shift\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Great_Vowel_Shift\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Chain_shift\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Mid_vowel\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Open_vowel\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Raising_(phonology)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Close_vowel\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Vowel_breaking\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Diphthong\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Henry_V_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Court_of_Chancery\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Westminster\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Writ\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Chancery_Standard\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/East_Midlands_English\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/William_Caxton\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Printing_press\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/William_Shakespeare\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/King_James_Version\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/James_VI_and_I\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Consonant_cluster\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/British_Empire\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Indigenous_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Superpower\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/BBC\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Samuel_Johnson\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/A_Dictionary_of_the_English_Language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Noah_Webster\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Webster%27s_Dictionary\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Do-support\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/List_of_territorial_entities_where_English_is_an_official_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/List_of_countries_by_English-speaking_population\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/English-speaking_world\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/First_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Standard_Chinese\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Spanish_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Lingua_franca\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Braj_Kachru\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Three_Circles_of_English\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/United_States\n", - "1830\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Australia\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Republic_of_Ireland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Second_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/David_Crystal\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Philippines\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Jamaica\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Nigeria\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Dialect_continuum\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/English-based_creole_languages\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Netherlands\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Pluricentric_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/George_Bernard_Shaw\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Accent_(sociolinguistics)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Standard_written_English\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Koin%C3%A9_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Foreign_language_influences_in_English\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Study_of_global_communication\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Indian_English\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Lingua_franca\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/World_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Controlled_natural_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Seaspeak\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/International_auxiliary_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/French_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Treaty_of_Versailles\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/United_Nations\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/World_War_II\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/International_Olympic_Committee\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/European_Free_Trade_Association\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Association_of_Southeast_Asian_Nations\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Asia-Pacific_Economic_Cooperation\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Foreign_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Malta\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "0\n", - "PAGE HAS NO LINKS: /wiki/International_auxiliary_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Globish_(Nerriere)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Simple_English_Wikipedia\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Language_death\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Linguistic_imperialism\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Koin%C3%A9_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Constructed_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/International_auxiliary_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Esperanto\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/English_phonology\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Phonetics\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Phonology\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Phoneme\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Standard_language\n", - "1830\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Received_Pronunciation\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/General_American\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/English_language#Dialects,_accents,_and_varieties\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/International_Phonetic_Alphabet\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/English_phonology#Consonants\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Labial_consonant\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Interdental_consonant\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Alveolar_consonant\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Postalveolar_consonant\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Palatal_consonant\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Velar_consonant\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Glottal_consonant\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Nasal_consonant\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Bilabial_nasal\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Dental,_alveolar_and_postalveolar_nasals#Alveolar\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Velar_nasal\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Stop_consonant\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Voiceless_bilabial_stop\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Voiced_bilabial_stop\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Voiceless_dental_and_alveolar_stops#Alveolar\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Voiced_dental_and_alveolar_stops#Alveolar\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Voiceless_velar_stop\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Voiced_velar_stop\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Affricate_consonant\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Voiceless_palato-alveolar_affricate\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Voiced_palato-alveolar_affricate\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Fricative_consonant\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Voiceless_labiodental_fricative\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Voiced_labiodental_fricative\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Voiceless_dental_fricative\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Voiced_dental_fricative\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Voiceless_alveolar_fricative#Voiceless_alveolar_sibilant\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Voiced_alveolar_fricative#Voiced_alveolar_sibilant\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Voiceless_postalveolar_fricative\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Voiced_postalveolar_fricative\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Voiceless_glottal_fricative\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Approximant_consonant\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Alveolar_lateral_approximant\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Alveolar_approximant\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Palatal_approximant#Palatal\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Voiced_labio-velar_approximant\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Obstruent\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Fortis_and_lenis\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Voicelessness\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Voice_(phonetics)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Aspirated_consonant\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Allophone\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Velarized_alveolar_lateral_approximant\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Sonorant\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/English_phonology#Vowels\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Phoneme\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Lexical_set\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Received_Pronunciation\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/General_American\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Close_front_unrounded_vowel\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Near-close_near-front_unrounded_vowel\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Close-mid_front_unrounded_vowel\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Near-open_front_unrounded_vowel\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Received_Pronunciation\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/General_American\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Close_central_unrounded_vowel\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Mid_central_vowel#Mid_central_unrounded_vowel\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Open-mid_central_unrounded_vowel\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Open-mid_back_unrounded_vowel\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Received_Pronunciation\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/General_American\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Close_back_rounded_vowel\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Near-close_near-back_rounded_vowel\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Open-mid_back_rounded_vowel\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Open_back_rounded_vowel\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Open_back_unrounded_vowel\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Received_Pronunciation\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/General_American\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Vowel_length\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Triangular_colon\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Clipping_(phonetics)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Syllable\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Vowel_reduction\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Weak-vowel_merger\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Stress_and_vowel_reduction_in_English\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Intonation_in_English\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Stress_(linguistics)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Syllable\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Vowel_reduction\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Weak_and_strong_forms_in_English\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Phoneme\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Vowel_reduction\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Rhythm\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Stress-timed\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Vowel_quality\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Vowel_reduction\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/American_English\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Canadian_English\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Hiberno-English\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Ulster_English\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Scottish_English\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/English_language_in_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Welsh_English\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/South_African_English\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Australian_English\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/New_Zealand_English\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Father-bother_merger\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Unrounded\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Cot-caught_merger\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Full%E2%80%93fool_merger\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Flapping\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Trap-bath_split\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Rhoticity_in_English\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Fronted_(phonetics)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Cot%E2%80%93caught_merger\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Lot%E2%80%93cloth_split\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Father%E2%80%93bother_merger\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Trap%E2%80%93bath_split\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Canadian_English\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Australian_English\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Hiberno_English\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/New_Zealand_English\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/South_African_English\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Phonological_history_of_English\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Great_Vowel_Shift\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Northern_Cities_Vowel_Shift\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Canadian_Shift\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Phone_(phonetics)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Voicelessness\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Voiceless_labialized_velar_approximant\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Wine%E2%80%93whine_merger\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Cockney\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Th-stopping\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Th-fronting\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/African_American_Vernacular_English\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Estuary_English\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Yod-dropping\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Yod-coalescence\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/General_American\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Received_Pronunciation\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Syllable_coda\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Rhotic_and_non-rhotic_accents\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Phonological_history_of_English_short_A\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Phonological_history_of_English_low_back_vowels\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Lexical_set\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/English_grammar\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Nominative%E2%80%93accusative_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Morphosyntactic_alignment\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Case_system\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Analytic_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Personal_pronouns\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Word_class\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Do-support\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Wh-movement\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Subject%E2%80%93auxiliary_inversion\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Strong_inflection\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Ablaut\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "0\n", - "PAGE HAS NO LINKS: /wiki/Proper_nouns\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Count_noun\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Mass_nouns\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Suffix\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Enclitic\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Noun_phrase\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Definiteness\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Agreement_(linguistics)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Comparison_(grammar)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Periphrasis\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Subjective_case\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Nominative_case\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Objective_case\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Accusative_case\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Indirect_object\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Henry_Sweet\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Otto_Jespersen\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Thou\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Southern_American_English\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/African_American_Vernacular_English\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Deixis\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Anaphoric_reference\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Periphrasis\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Phrasal_verb\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/English-language_idioms\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Isolating_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/English_modal_verb\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Word_order\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Auxiliary_verb\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Grammatical_voice\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Grammatical_aspect\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/V2_word_order\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Subject%E2%80%93verb%E2%80%93object\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Indirect_object\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/English_clause_syntax\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Relative_clause\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Do-support\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Subject%E2%80%93auxiliary_inversion\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Subject%E2%80%93auxiliary_inversion\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Syntax\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Modern_English\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Finite_verb\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Copular_verb\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Yes%E2%80%93no_question\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Wh-question\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Subject%E2%80%93auxiliary_inversion\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Do-support\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Interrogative_word\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Wh-movement\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Grammatical_object\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Prepositional_phrases\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Who_(pronoun)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Topic_and_comment\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Cleft_sentence\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Dummy_subject\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Focus_(linguistics)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Cohesion_(linguistics)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Anaphora_(linguistics)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Discourse_marker\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Stance_(linguistics)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Synonym\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Meaning_(linguistics)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Obsolete_word\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Species_name\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Scientific_terminology\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Prefix\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Suffix\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Jargon\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Acronym\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Lexicography\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Corpus_linguistics\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Neologisms\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/International_scientific_vocabulary\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Webster%27s_Third_New_International_Dictionary\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Lists_of_English_loanwords_by_country_or_language_of_origin\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Northern_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Calques\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Register_(sociolinguistics)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Calque\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/English_alphabet\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/English_braille\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/English_orthography\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Latin_alphabet\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Anglo-Saxon_runes\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Latin_script\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/A\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/B\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/C\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/D\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/E\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/F\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/G\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/H\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/I\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/J\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/K\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/L\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/M\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/N\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/O\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/P\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Q\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/R\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/S\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/T\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/U\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/V\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/W\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/X\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Y\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Z\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Letter_case\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Orthography\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Sound_change\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/American_and_British_English_spelling_differences\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Digraph_(orthography)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Soft_c\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Hard_and_soft_G\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Vowel_length#Short_and_long_vowels_in_English\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Silent_e\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Punctuation\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/List_of_dialects_of_the_English_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/World_Englishes\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Regional_accents_of_English\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/List_of_dialects_of_the_English_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Regional_accents_of_English\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/British_English\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/North_American_English\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Australian_English\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/New_Zealand_English\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/English_language_in_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Northern_England_English\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Scots_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Scottish_English\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Welsh_English\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Estuary_English\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Ulster_English\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Hiberno-English\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Received_Pronunciation\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/South_East_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Survey_of_English_Dialects\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/H-dropping\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Essex\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Russell_Brand\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Renfrewshire\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Received_pronunciation\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Standard_English\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/English_language_in_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/West_Country_dialects\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Northern_England_English\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Geordie\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Liverpool\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Scouse\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Manchester\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Manchester_dialect\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Cockney\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Linking_and_intrusive_R\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/T-glottalization\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Scots_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/History_of_the_Scots_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Scots_Gaelic\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Scottish_English\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Ireland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Norman_invasion_of_Ireland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/County_Wexford\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Dublin\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Forth_and_Bargy_dialect\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Fingallian\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Hiberno-English\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Ulster_English\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/American_English\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/General_American\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/African_American_Vernacular_English\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Southern_American_English\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Canadian_English\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Arkansas\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Bill_Clinton\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Rhoticity_in_English\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/North_American_English\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/The_Atlas_of_North_American_English\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/African_American_Vernacular_English\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/African_Americans\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/General_American\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Midland_American_English\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Western_American_English\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Rhoticity_in_English\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Southern_American_English\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Eastern_New_England_English\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/New_York_City_English\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/African_American_Vernacular_English\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "0\n", - "PAGE HAS NO LINKS: /wiki/Canadian_English\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Atlantic_provinces\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Quebec\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Canadian_raising\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Voiceless_consonants\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Southern_American_English\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Monophthong\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Pin%E2%80%93pen_merger\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/African_Americans\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Old_South\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Pidgin\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Creole_English\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Older_Southern_American_English\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Australian_English\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/New_Zealand_English\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Oceania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Australian_English\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/General_Australian\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/New_Zealand_English\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/South_African_English\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/South_Island\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/South_African_English\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Caribbean_English\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Indian_English\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Bantu_peoples\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/South_Africa\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Afrikaans_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Khoe_languages\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Bantu_languages\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/South_African_English\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Leeward_Islands\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Windward_Islands\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Trinidad_and_Tobago\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Barbados\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Cayman_Islands\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Belize\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Jamaican_English\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Jamaican_English_Creole\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Code-switching\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Indian_English\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Breathy_voice\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Glottolog\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/The_Guardian\n", - "494\n", - "494\n", - "494\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/PBS\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Mouton_de_Gruyter\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/John_McWhorter\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Digital_object_identifier\n", - "494\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/ScienceDirect\n", - "494\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Digital_object_identifier\n", - "494\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/ScienceDirect\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Digital_object_identifier\n", - "494\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Digital_object_identifier\n", - "494\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/De_Gruyter\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Digital_object_identifier\n", - "494\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/ScienceDirect\n", - "494\n", - "494\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Digital_object_identifier\n", - "494\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/ScienceDirect\n", - "494\n", - "494\n", - "494\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Digital_object_identifier\n", - "494\n", - "494\n", - "494\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Joseph_Bosworth\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/An_Anglo-Saxon_Dictionary\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Charles_University\n", - "494\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Digital_object_identifier\n", - "494\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/ScienceDirect\n", - "494\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Alistair_Campbell_(academic)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Oxford\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Oxford_University_Press\n", - "494\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Digital_object_identifier\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/ScienceDirect\n", - "494\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/R._G._Collingwood\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Library_of_Congress_Control_Number\n", - "494\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Digital_object_identifier\n", - "494\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/ScienceDirect\n", - "494\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/De_Gruyter\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/David_Crystal\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Cambridge_University_Press\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Digital_object_identifier\n", - "494\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/David_Crystal\n", - "494\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/David_Crystal\n", - "494\n", - "494\n", - "494\n", - "494\n", - "494\n", - "494\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Digital_object_identifier\n", - "494\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/ScienceDirect\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Digital_object_identifier\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Digital_object_identifier\n", - "494\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Digital_object_identifier\n", - "494\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/ScienceDirect\n", - "494\n", - "494\n", - "494\n", - "494\n", - "494\n", - "494\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Aeon_(digital_magazine)\n", - "494\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Digital_object_identifier\n", - "494\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/ScienceDirect\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/David_Graddol\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/David_Graddol\n", - "494\n", - "494\n", - "494\n", - "494\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Digital_object_identifier\n", - "494\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Digital_object_identifier\n", - "494\n", - "494\n", - "494\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/International_Phonetic_Association\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Cambridge_University_Press\n", - "494\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Digital_object_identifier\n", - "494\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/ScienceDirect\n", - "494\n", - "494\n", - "494\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/William_Labov\n", - "494\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/De_Gruyter\n", - "494\n", - "494\n", - "494\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Digital_object_identifier\n", - "494\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/ScienceDirect\n", - "494\n", - "494\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Digital_object_identifier\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Digital_object_identifier\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/International_Standard_Serial_Number\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/De_Gruyter\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Digital_object_identifier\n", - "494\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/ScienceDirect\n", - "494\n", - "494\n", - "494\n", - "494\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Diane_McGuinness\n", - "494\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Digital_object_identifier\n", - "494\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/ScienceDirect\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Digital_object_identifier\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/International_Standard_Serial_Number\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/ScienceDirect\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Digital_object_identifier\n", - "494\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/ScienceDirect\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Digital_object_identifier\n", - "494\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/ScienceDirect\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Paul_Nation\n", - "494\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Digital_object_identifier\n", - "494\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/ScienceDirect\n", - "494\n", - "494\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Digital_object_identifier\n", - "494\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/ScienceDirect\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Digital_object_identifier\n", - "494\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/ScienceDirect\n", - "494\n", - "494\n", - "494\n", - "494\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Digital_object_identifier\n", - "494\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Digital_object_identifier\n", - "494\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/ScienceDirect\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Digital_object_identifier\n", - "494\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/ScienceDirect\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Digital_object_identifier\n", - "494\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/ScienceDirect\n", - "494\n", - "494\n", - "494\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Digital_object_identifier\n", - "494\n", - "494\n", - "494\n", - "494\n", - "494\n", - "494\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Digital_object_identifier\n", - "494\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/ScienceDirect\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/De_Gruyter\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Sarah_Thomason\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Terrence_Kaufman\n", - "494\n", - "494\n", - "494\n", - "494\n", - "494\n", - "494\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Digital_object_identifier\n", - "494\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/ScienceDirect\n", - "494\n", - "494\n", - "494\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Digital_object_identifier\n", - "494\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Digital_object_identifier\n", - "494\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/ScienceDirect\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Digital_object_identifier\n", - "494\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/ScienceDirect\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/English_grammar\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/English_phonology\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Stress_and_vowel_reduction_in_English\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/English_orthography\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/English_alphabet\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/English_Braille\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/List_of_dialects_of_the_English_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/History_of_the_English_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Phonological_history_of_English\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/History_of_English\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Proto-Indo-European_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Proto-Germanic_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/West_Germanic_languages\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Anglo-Frisian_languages\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Old_English\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Anglo-Norman_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Middle_English\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Early_Modern_English\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Modern_English\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Phonological_history_of_English\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Phonological_history_of_Old_English\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Phonological_history_of_English_vowels\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Great_Vowel_Shift\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Pronunciation_of_English_%E2%9F%A8a%E2%9F%A9\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "0\n", - "PAGE HAS NO LINKS: /wiki/Phonological_history_of_English_low_back_vowels\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Phonological_history_of_English_high_back_vowels\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Phonological_history_of_English_high_front_vowels\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Phonological_history_of_English_diphthongs\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/English-language_vowel_changes_before_historic_/l/\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/English-language_vowel_changes_before_historic_/r/\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Trisyllabic_laxing\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Northern_Cities_Vowel_Shift\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Phonological_history_of_English_consonants\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Rhoticity_in_English\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Flapping\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/T-glottalization\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/L-vocalization\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Phonological_history_of_English_consonant_clusters\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/H-dropping\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Pronunciation_of_English_%E2%9F%A8wh%E2%9F%A9\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Pronunciation_of_English_%E2%9F%A8th%E2%9F%A9\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Th-fronting\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Eth\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Thorn_(letter)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Th-stopping\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/List_of_dialects_of_the_English_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Regional_accents_of_English\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Modern_English\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/English_language_in_Europe\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/British_English\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/English_language_in_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Barrovian\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Black_Country_dialect\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Brummie\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Culture_of_Bristol#Dialect\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Cheshire_dialect\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Cockney\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Mockney\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Anglo-Cornish\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Cumbrian_dialect\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/East_Anglian_English\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/East_Midlands_English\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Essex_dialect\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Estuary_English\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Geordie\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Kentish_dialect\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Lancashire_dialect_and_accent\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Mackem\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Manchester_dialect\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Multicultural_London_English\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Norfolk_dialect\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/English_language_in_northern_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Pitmatic\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Potteries_dialect\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Received_Pronunciation\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Scouse\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/English_language_in_southern_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Suffolk_dialect\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Sussex_dialect\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/West_Country_dialects\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Mummerset\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/West_Midlands_English\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Yorkshire_dialect\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/East_Anglian_English\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Essex_dialect\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Norfolk_dialect\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Suffolk_dialect\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/East_Midlands_English\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/English_language_in_northern_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Cheshire_dialect\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Cumbrian_dialect\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Barrovian\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Lancashire_dialect_and_accent\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Manchester_dialect\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Scouse\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Mackem\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Geordie\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Yorkshire_dialect\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/English_language_in_southern_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Kentish_dialect\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Estuary_English\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Multicultural_London_English\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Sussex_dialect\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/West_Country_dialects\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Culture_of_Bristol#Dialect\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Anglo-Cornish\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Dorset_dialect\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/West_Midlands_English\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Black_Country_dialect\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Brummie\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Potteries_dialect\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Ulster_English\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Mid_Ulster_English\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Ulster_Scots_dialects\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Scottish_English\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Glasgow_patter\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Highland_English\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Welsh_English\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Cardiff_English\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Gower_dialect\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Port_Talbot_English\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Hiberno-English\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Hiberno-English#Local_Dublin_English\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Dublin_4#Accent\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Hiberno-English#West_and_South-West_Irish_English\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Cork_(city)#Accent\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Hiberno-English#Supraregional_southern_Irish_English\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Ulster_English\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Channel_Island_English\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Channel_Island_English#Alderney_English\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Channel_Island_English#Guernsey_English\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Channel_Island_English#Jersey_English\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Gibraltarian_English\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Manx_English\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Languages_of_Malta#English\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/North_American_English\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/South_American_English\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/American_English\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/African-American_English\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Appalachian_English\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Boston_accent\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Cajun_English\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/California_English\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Inland_Northern_American_English\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Chicano_English\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Mid-Atlantic_American_English\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Philadelphia_English\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Baltimore_accent\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/General_American\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/High_Tider\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Maine_accent\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Miami_accent\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Midland_American_English\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Inland_Northern_American_English\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/New_England_English\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/New_Mexican_English\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/New_York_City_English\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Older_Southern_American_English\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Pacific_Northwest_English\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Pennsylvania_Dutch_English\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Pittsburgh_English\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Eastern_New_England_English\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Southern_American_English\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Texan_English\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/North-Central_American_English\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Western_American_English\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Western_New_England_English\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Yat_dialect\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Yeshivish\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Yooper_dialect\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Mid-Atlantic_American_English\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Pennsylvania_Dutch_English\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Philadelphia_English\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Baltimore_accent\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Midland_American_English\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Inland_Northern_American_English\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/North-Central_American_English\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Yooper_dialect\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/New_England_English\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Boston_accent\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Maine_accent\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Eastern_New_England_English\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Western_New_England_English\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/New_York_City_English\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/New_York_City_English#New_York_Latino_English\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Northern_American_English\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Southern_American_English\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Cajun_English\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Appalachian_English\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/High_Tider\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Miami_accent\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/New_Orleans_English\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "0\n", - "PAGE HAS NO LINKS: /wiki/Texan_English\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Western_American_English\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/California_English\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/New_Mexican_English\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Pacific_Northwest_English\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Western_Pennsylvania_English\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Canadian_English\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Aboriginal_English_in_Canada\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Atlantic_Canadian_English\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Cape_Breton_accent\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Newfoundland_English\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Lunenburg_English\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Standard_Canadian_English\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Ottawa_Valley_English\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Pacific_Northwest_English\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Quebec_English\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Caribbean_English\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Bahamian_English\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/English_in_Barbados\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Saman%C3%A1_English\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Jamaican_English\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/English_language_in_Puerto_Rico\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Trinidadian_English\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Bermudian_English\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Falkland_Islands_English\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Languages_of_Guyana\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Australian_English\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Australian_Aboriginal_English\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Strine\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Variation_in_Australian_English#Broad,_general_and_cultivated_Australian\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/South_Australian_English\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Torres_Strait_English\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Western_Australian_English\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Culture_of_Fiji#Fiji_English\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/New_Zealand_English\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Palauan_English\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Solomon_Islands_English\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Cameroonian_English\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Ghanaian_English\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Kenyan_English\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Liberian_English\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Malawian_English\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Namlish\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Nigerian_English\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Sierra_Leonean_English\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/South_African_English\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Cape_Flats_English\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Ugandan_English\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Bangladeshi_English\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Brunei_English\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Burmese_English\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Hong_Kong_English\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Indian_English\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Malaysian_English\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Nepalese_English\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Pakistani_English\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Philippine_English\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Singlish\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Sri_Lankan_English\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/List_of_Germanic_languages\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/West_Germanic_languages\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Anglo-Frisian_languages\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Anglic_languages\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/List_of_dialects_of_the_English_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Forth_and_Bargy_dialect\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Fingallian\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Scots_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Frisian_languages\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Saterland_Frisian_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Saterland_Frisian_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Wangerooge_Frisian\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Wursten_Frisian\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/North_Frisian_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/S%C3%B6l%27ring\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Fering\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/%C3%96%C3%B6mrang\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/West_Frisian_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Clay_Frisian\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Wood_Frisian\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Low_Franconian_languages\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Standard_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Dutch_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Afrikaans\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/West_Low_Franconian\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Hollandic_dialect\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/West_Flemish\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/French_Flemish\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Zeelandic\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/East_Flemish\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Brabantian\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Surinamese_Dutch\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Jersey_Dutch\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Mohawk_Dutch\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Stadsfries\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Bildts\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/East_Low_Franconian\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Meuse-Rhenish\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Limburgish_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Southeast_Limburgish_dialect\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/South_Guelderish\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Low_Rhenish\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Low_Dietsch_dialects\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Low_German\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/East_Low_German\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Mecklenburgisch-Vorpommersch_dialect\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Brandenburgisch_dialect\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/East_Pomeranian\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Low_Prussian_dialect\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Plautdietsch\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/West_Low_German\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Dutch_Low_Saxon\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Stellingwarfs\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Tweants\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Gronings\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Dr%C3%A8ents\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Achterhooks\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Sallaans\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Urkers\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Veluws\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Northern_Low_Saxon\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/East_Frisian_Low_Saxon\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Schleswigsch\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Holsteinisch\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Hamburgisch\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Westphalian_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Eastphalian_dialect\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/High_German_languages\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/German_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Namibian_German\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Namibian_Black_German\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Brazilian_German\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Yiddish\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/History_of_the_Jews_in_Scotland#\"Scots-Yiddish\"\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Klezmer-loshn\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Sabesdiker_losn\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Lachoudisch\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Yenish_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Rotwelsch\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Lotegorisch\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Central_German\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/West_Central_German\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Central_Franconian\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Ripuarian_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Colognian_dialect\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Moselle_Franconian_dialects\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Luxembourgish_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Transylvanian_Saxon_dialect\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Riograndenser_Hunsr%C3%BCckisch_German\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Rhine_Franconian_dialects\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Lorraine_Franconian\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Palatine_German_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Volga_Germans#Language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Pennsylvania_German\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Hessian_dialects\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Amana_German\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/East_Central_German\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Thuringian_dialect\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Upper_Saxon_German\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Lausitzisch-neum%C3%A4rkisch_dialects\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Berlinerisch_dialect\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Silesian_German\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/High_Prussian_dialect\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Wymysorys_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Prague_German_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/High_Franconian_German\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/South_Franconian_German\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/East_Franconian_German\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Upper_German\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Alemannic_German\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Low_Alemannic_German\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Alsatian_dialect\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Colonia_Tovar_dialect\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/High_Alemannic_German\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Swiss_German\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Highest_Alemannic_German\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Walser_German\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Swabian_German\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Bavarian_language\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "0\n", - "PAGE HAS NO LINKS: /wiki/Northern_Bavarian\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Central_Bavarian\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Southern_Bavarian\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/South_Tyrolean_dialect\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Cimbrian_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/M%C3%B2cheno_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Hutterite_German\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Lombardic_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Standard_German\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/German_Standard_German\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Austrian_German\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Swiss_Standard_German\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/North_Germanic_languages\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Norwegian_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Bokm%C3%A5l\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Bergensk\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Kebabnorsk\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Sognam%C3%A5l_dialect\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Tr%C3%B8ndersk\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Valdris\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Vestlandsk\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Vikv%C3%A6rsk\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Nynorsk\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Elfdalian\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Faroese_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Icelandic_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Greenlandic_Norse\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Norn_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Swedish_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/%C3%85land_Swedish\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Estonian_Swedish\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Finland_Swedish\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Jamtlandic_dialects\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Kalix_dialect\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Kiruna_dialect\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Lule%C3%A5_dialects\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Norrland_dialects\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Swedish_dialects_in_Ostrobothnia\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Sm%C3%A5l%C3%A4ndska\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/South_Swedish_dialects\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Scanian_dialect\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Stockholm_dialects\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Rinkeby_Swedish\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Uppl%C3%A4ndska_dialect\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/V%C3%A4stg%C3%B6tska\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Westrobothnian\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Danish_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Bornholmsk_dialect\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/G%C3%B8tudanskt_accent\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Insular_Danish\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Jutlandic_dialect\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/South_Jutlandic\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Perkerdansk\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Dalecarlian_dialects\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/East_Germanic_languages\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Gothic_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Crimean_Gothic\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Burgundians\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Vandalic\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Language_death\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/List_of_languages_by_number_of_native_speakers\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Variety_(linguistics)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Old_English\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Middle_English\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/An_Anglo-Saxon_Dictionary\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Dictionary_of_Old_English\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Middle_English_Dictionary\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Catholicon_Anglicum\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/The_English_Schoole-Master\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/The_New_World_of_English_Words\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/A_New_English_Dictionary\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/An_Universal_Etymological_English_Dictionary\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/A_Dictionary_of_the_English_Language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Webster%27s_Dictionary\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Joseph_Emerson_Worcester\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Charles_Richardson_(lexicographer)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/The_Imperial_Dictionary_of_the_English_Language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Century_Dictionary\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/American_English\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/The_American_Heritage_Dictionary_of_the_English_Language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Dictionary_of_American_English\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Dictionary_of_American_Regional_English\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Encarta_Webster%27s_Dictionary\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/New_Oxford_American_Dictionary\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Oxford_American_Dictionary\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Random_House_Webster%27s_Unabridged_Dictionary\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Webster%27s_New_World_Dictionary\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Webster%27s_Third_New_International_Dictionary\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/World_Book_Dictionary\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/British_English\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Chambers_Dictionary\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Collins_English_Dictionary\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Oxford_English_Dictionary\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Concise_Oxford_English_Dictionary\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Compact_Oxford_English_Dictionary_of_Current_English\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Shorter_Oxford_English_Dictionary\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Historical_Thesaurus_of_the_Oxford_English_Dictionary\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Oxford_Dictionary_of_English\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Penguin_English_Dictionary\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Canadian_English\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Canadian_Oxford_Dictionary\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Dictionary_of_Canadianisms_on_Historical_Principles\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Gage_Canadian_Dictionary\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/List_of_Canadian_English_dictionaries\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Australian_English\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/The_Australian_National_Dictionary\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Australian_Oxford_Dictionary\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Macquarie_Dictionary\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/List_of_online_dictionaries\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Wiktionary\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Collaborative_International_Dictionary_of_English\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Urban_Dictionary\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Wordnik\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Monolingual_learner%27s_dictionary\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/English_as_a_foreign_or_second_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Cambridge_Advanced_Learner%27s_Dictionary\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Collins_COBUILD_Advanced_Dictionary\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Longman_Dictionary_of_Contemporary_English\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Macmillan_English_Dictionary_for_Advanced_Learners\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Merriam-Webster%27s_Advanced_Learner%27s_English_Dictionary\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Oxford_Advanced_Learner%27s_Dictionary\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/English_language#Geographic_distribution\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/English-speaking_world\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/History_of_the_English_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/British_Empire\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/English_in_the_Commonwealth_of_Nations\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Anglosphere\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/List_of_countries_by_English-speaking_population\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/List_of_countries_where_English_is_an_official_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Languages_of_Africa\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Saint_Helena,_Ascension_and_Tristan_da_Cunha\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Anglo-America\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Anguilla\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Antigua_and_Barbuda\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/The_Bahamas\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Barbados\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Belize\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Bermuda\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/British_Virgin_Islands\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Canada\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Cayman_Islands\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Dominica\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Falkland_Islands\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Grenada\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Guyana\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Jamaica\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Montserrat\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Saba\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Saint_Kitts_and_Nevis\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Saint_Lucia\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Saint_Vincent_and_the_Grenadines\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Sint_Eustatius\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Sint_Maarten\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/South_Georgia_and_the_South_Sandwich_Islands\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Trinidad_and_Tobago\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Turks_and_Caicos_Islands\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/United_States_Virgin_Islands\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/English_language_in_Europe\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Guernsey\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Republic_of_Ireland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Isle_of_Man\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Jersey\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "1830\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Languages_of_Oceania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Australia\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/New_Zealand\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Norfolk_Island\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Pitcairn_Islands\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Botswana\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Cameroon\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/The_Gambia\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Ghana\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Kenya\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Lesotho\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Liberia\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Malawi\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Mauritius\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Namibia\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Nigeria\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Rwanda\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Sierra_Leone\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Somaliland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/South_Africa\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/South_Sudan\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Sudan\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Swaziland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Tanzania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Uganda\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Zambia\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Zimbabwe\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Puerto_Rico\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Languages_of_Asia\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Christmas_Island\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Cocos_(Keeling)_Islands\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Hong_Kong_Special_Administrative_Region\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/India\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Pakistan\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Philippines\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Singapore\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Gibraltar\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Malta\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/American_Samoa\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Cook_Islands\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Fiji\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Guam\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Kiribati\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Marshall_Islands\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Federated_States_of_Micronesia\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Nauru\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Niue\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Northern_Mariana_Islands\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Palau\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Papua_New_Guinea\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Samoa\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Solomon_Islands\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Tokelau\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Tuvalu\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Vanuatu\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Dependent_territory\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Integrated_Authority_File\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Syst%C3%A8me_universitaire_de_documentation\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Biblioth%C3%A8que_nationale_de_France\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Historical_Dictionary_of_Switzerland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/National_Diet_Library\n", - "1022\n", - "1022\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Main_Page\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Main_Page\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Pennsylvania_German_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Canada\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Belize\n", - "1\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Ohio\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Indiana\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Ontario\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Pennsylvania_Dutch\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Language_family\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Indo-European_languages\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Germanic_languages\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/West_Germanic_languages\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/High_German_languages\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/West_Central_German\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Rhine_Franconian_dialects\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Palatine_German_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/ISO_639-3\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Glottolog\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Linguasphere_Observatory\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/International_Phonetic_Alphabet\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/International_Phonetic_Alphabet#Fonts\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Replacement_character\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Unicode\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Linguistics\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Variety_(linguistics)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/West_Central_German\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Old_Order_Amish\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Old_Order_Mennonites\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Palatine_German_language\n", - "1\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Pennsylvania_Dutch\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Maryland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Virginia\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/North_Carolina\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Alsace\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Lorraine_(region)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Amish\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Old_Order_Movement\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Dutch_people\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Low_German\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Plautdietsch_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Endonym\n", - "1023\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/West_Germanic_languages\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Ohio\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Indiana\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Midwestern_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Ontario\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Canada\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Hessian_dialects\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Palatine_German_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Lorraine_Franconian\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Palatinate_(region)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Electorate_of_the_Palatinate\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Duchy_of_Baden\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Swabia\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/W%C3%BCrttemberg\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Alsace\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/German_Lorraine\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Switzerland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Rhine_Franconian\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Palatine_German_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Alemannic_German\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Dialect_levelling\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Palatine_German_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Mannheim\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Ludwigshafen\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Low_German\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Plautdietsch_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/High_German\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Plautdietsch_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/German_Mexicans\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Waterloo_County,_Ontario\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Lancaster_County,_Pennsylvania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Palatinate_(region)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Rhein_Neckar_Area\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Palatine_German_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Lord%27s_Prayer\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Book_of_Common_Prayer\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Standard_German\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Book_of_Common_Prayer\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Hiwwe_wie_Driwwe\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Michael_Werner_(publisher)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Kutztown_University\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Hiwwe_wie_Driwwe\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Rhine\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Rhineland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/W%C3%BCrttemberg\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Baden\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Saarland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Switzerland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Alsace\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Alemannic_German\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Swiss_German\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Standard_German\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Standard_German\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Perfect_(grammar)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Standard_German\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/International_Phonetic_Alphabet\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/International_Phonetic_Alphabet\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/International_Phonetic_Alphabet#Fonts\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Specials_(Unicode_block)#Replacement_character\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Unicode\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Middle_High_German\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Lancaster_County,_Pennsylvania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Industrial_Revolution\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Pennsylvania_Dutch_English\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/North_America\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Ohio\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Indiana\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Wisconsin\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Iowa\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Upper_Barton_Creek\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Springfield,_Belize\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Belize\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Noah_Hoover_Mennonite\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Regional_Municipality_of_Waterloo\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Anabaptist\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Old_Order_Amish\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Old_Order_Mennonites\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Old_Beachy_Amish\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Kauffman_Amish_Mennonite\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/John_A._Hostetler\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Kutztown_University\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Amish\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Groffdale_Conference_Mennonite_Church\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Ontario_(Old_Order)_Mennonite_Conference\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Stauffer_Mennonite\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "0\n", - "PAGE HAS NO LINKS: /wiki/Kauffman_Amish_Mennonite\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Noah_Hoover_Mennonite\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/David_Martin_Mennonites\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Orthodox_Mennonites\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Reidenbach_Old_Order_Mennonites\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Old_Beachy_Amish\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Bernese_German\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Alsatian_dialect\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Virginia_Old_Order_Mennonite_Conference\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Bernese_German\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Low_Alemannic\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Alsatian_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Weaverland_Old_Order_Mennonite_Conference\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Ohio-Indiana_Mennonite_Conference\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Lutheran\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Schwenkfelder_Church\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Schwarzenau_Brethren\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Ontario_(Old_Order)_Mennonite_Conference\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/David_Martin_Mennonites\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Orthodox_Mennonites\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Markham-Waterloo_Mennonite_Conference\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/US_Census\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Mario_Pei\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/John_Schmid\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/The_Office_(U.S.)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Dwight_Schrute\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Mose_Schrute\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Orange_is_the_New_Black\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/List_of_recurring_Orange_Is_the_New_Black_characters#Leanne_Taylor\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/German-Pennsylvanian_Association\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Hiwwe_wie_Driwwe\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Dr._Michael_Werner\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Pennsylvania_Dutch_English\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Pennsylvania_Dutch_Country\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Hutterite_German\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Languages_in_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Plautdietsch\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Texas_German\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Kurrent\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Solomon_DeLong\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/H._L._Fischer\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Louis_August_Wollenweber\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Thomas_C._Zimmerman\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Assabe_and_Sabina\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/The_Forest_of_Time\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Jersey_Dutch\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Hunsrik_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Ethnologue\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Glottolog\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Global_Anabaptist_Mennonite_Encyclopedia_Online\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Donald_Kraybill\n", - "494\n", - "494\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Wikipedia\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Wikisource\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Collier%27s_Encyclopedia\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/German_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/German_language_in_Namibia\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Namibian_Black_German\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Amana_German\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Alsatian_dialect\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Bernese_German\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Hutterite_German\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Texas_German\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Wisconsin_German\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Alem%C3%A1n_Coloniero_dialect\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Argentinien-schwyzert%C3%BCtsch_dialect\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Belgranodeutsch\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Brazilian_German\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/East_Pomeranian_dialect#Brazilian_Municipalities_that_have_co-official_Pomeranian_dialect\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Paran%C3%A1-Wolga-Deutsch\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Riograndenser_Hunsr%C3%BCckisch\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Barossa_German\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Unserdeutsch_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/List_of_Germanic_languages\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/West_Germanic_languages\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Anglo-Frisian_languages\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Anglic_languages\n", - "1023\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/List_of_dialects_of_the_English_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Forth_and_Bargy_dialect\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Fingallian\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Scots_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Frisian_languages\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Saterland_Frisian_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Saterland_Frisian_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Wangerooge_Frisian\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Wursten_Frisian\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/North_Frisian_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/S%C3%B6l%27ring\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Fering\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/%C3%96%C3%B6mrang\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/West_Frisian_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Clay_Frisian\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Wood_Frisian\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Low_Franconian_languages\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Standard_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Dutch_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Afrikaans\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/West_Low_Franconian\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Hollandic_dialect\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/West_Flemish\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/French_Flemish\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Zeelandic\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/East_Flemish\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Brabantian\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Surinamese_Dutch\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Jersey_Dutch\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Mohawk_Dutch\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Stadsfries\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Bildts\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/East_Low_Franconian\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Meuse-Rhenish\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Limburgish_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Southeast_Limburgish_dialect\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/South_Guelderish\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Low_Rhenish\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Low_Dietsch_dialects\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Low_German\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/East_Low_German\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Mecklenburgisch-Vorpommersch_dialect\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Brandenburgisch_dialect\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/East_Pomeranian\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Low_Prussian_dialect\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Plautdietsch\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/West_Low_German\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Dutch_Low_Saxon\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Stellingwarfs\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Tweants\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Gronings\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Dr%C3%A8ents\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Achterhooks\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Sallaans\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Urkers\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Veluws\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Northern_Low_Saxon\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/East_Frisian_Low_Saxon\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Schleswigsch\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Holsteinisch\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Hamburgisch\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Westphalian_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Eastphalian_dialect\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/High_German_languages\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/German_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Namibian_German\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Namibian_Black_German\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Brazilian_German\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Yiddish\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/History_of_the_Jews_in_Scotland#\"Scots-Yiddish\"\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Klezmer-loshn\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Sabesdiker_losn\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Lachoudisch\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Yenish_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Rotwelsch\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Lotegorisch\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Central_German\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/West_Central_German\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Central_Franconian\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Ripuarian_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Colognian_dialect\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Moselle_Franconian_dialects\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Luxembourgish_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Transylvanian_Saxon_dialect\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Riograndenser_Hunsr%C3%BCckisch_German\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Rhine_Franconian_dialects\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Lorraine_Franconian\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Palatine_German_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Volga_Germans#Language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Pennsylvania_German\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Hessian_dialects\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Amana_German\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/East_Central_German\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Thuringian_dialect\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Upper_Saxon_German\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Lausitzisch-neum%C3%A4rkisch_dialects\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Berlinerisch_dialect\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Silesian_German\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/High_Prussian_dialect\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "0\n", - "PAGE HAS NO LINKS: /wiki/Wymysorys_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Prague_German_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/High_Franconian_German\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/South_Franconian_German\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/East_Franconian_German\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Upper_German\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Alemannic_German\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Low_Alemannic_German\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Alsatian_dialect\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Colonia_Tovar_dialect\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/High_Alemannic_German\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Swiss_German\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Highest_Alemannic_German\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Walser_German\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Swabian_German\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Bavarian_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Northern_Bavarian\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Central_Bavarian\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Southern_Bavarian\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/South_Tyrolean_dialect\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Cimbrian_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/M%C3%B2cheno_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Hutterite_German\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Lombardic_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Standard_German\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/German_Standard_German\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Austrian_German\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Swiss_Standard_German\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/North_Germanic_languages\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Norwegian_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Bokm%C3%A5l\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Bergensk\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Kebabnorsk\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Sognam%C3%A5l_dialect\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Tr%C3%B8ndersk\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Valdris\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Vestlandsk\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Vikv%C3%A6rsk\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Nynorsk\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Elfdalian\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Faroese_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Icelandic_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Greenlandic_Norse\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Norn_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Swedish_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/%C3%85land_Swedish\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Estonian_Swedish\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Finland_Swedish\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Jamtlandic_dialects\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Kalix_dialect\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Kiruna_dialect\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Lule%C3%A5_dialects\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Norrland_dialects\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Swedish_dialects_in_Ostrobothnia\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Sm%C3%A5l%C3%A4ndska\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/South_Swedish_dialects\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Scanian_dialect\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Stockholm_dialects\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Rinkeby_Swedish\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Uppl%C3%A4ndska_dialect\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/V%C3%A4stg%C3%B6tska\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Westrobothnian\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Danish_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Bornholmsk_dialect\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/G%C3%B8tudanskt_accent\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Insular_Danish\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Jutlandic_dialect\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/South_Jutlandic\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Perkerdansk\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Dalecarlian_dialects\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/East_Germanic_languages\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Gothic_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Crimean_Gothic\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Burgundians\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Vandalic\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Language_death\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/List_of_languages_by_number_of_native_speakers\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Variety_(linguistics)\n", - "1\n", - "1\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Indo-European_languages\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/American_English\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/African_American_English\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Appalachian_English\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Central_Pennsylvania_dialect\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Inland_Northern_American_English\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Northeast_Pennsylvania_English\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Pennsylvania_Dutch_English\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Philadelphia_dialect\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Pittsburgh_English\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Spanish_language_in_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Italian_language_in_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Indigenous_languages_of_the_Americas\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Delaware_languages\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Munsee_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Unami_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Erie_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Susquehannock_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/American_Sign_Language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Integrated_Authority_File\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Biblioth%C3%A8que_nationale_de_France\n", - "328\n", - "328\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Main_Page\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Main_Page\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Welsh_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Chubut_Province\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Languages_of_the_United_Kingdom\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Wales\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Chubut_Province\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Canada\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/First_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Language_family\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Indo-European_languages\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Celtic_languages\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Insular_Celtic_languages\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Brittonic_languages\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Western_Brittonic_languages\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Common_Brittonic\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Old_Welsh\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Middle_Welsh\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Writing_system\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Latin_script\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Welsh_orthography\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Welsh_Braille\n", - "1830\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/List_of_language_regulators\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Meri_Huws\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Welsh_Language_Commissioner\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Welsh_Government\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/ISO_639-1\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/ISO_639-2\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/ISO_639-3\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Glottolog\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Linguasphere_Observatory\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/International_Phonetic_Alphabet\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/International_Phonetic_Alphabet#Fonts\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Replacement_character\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Unicode\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Culture_of_Wales\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/History_of_Wales\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Welsh_people\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Languages_of_Wales\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Y_Fro_Gymraeg\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/History_of_the_Welsh_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Welsh_placenames\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Welsh_surnames\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Welsh_medium_education\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Welsh_English\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Traditional_Welsh_costume\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Welsh_law\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Commote\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Cantref\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Historic_counties_of_Wales\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Welsh_mythology\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Cuisine_of_Wales\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Bara_brith\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Laver_(seaweed)#Laverbread\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Cawl\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Leek_soup\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Crempog\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Cuisine_of_Gower\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Glamorgan_sausage\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Tatws_Pum_Munud\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Full_breakfast#Full_Welsh_breakfast\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Welsh_cake\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Welsh_rarebit\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/List_of_Welsh_dishes\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/List_of_restaurants_in_Wales\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Welsh_holidays\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Calennig\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Dydd_Santes_Dwynwen\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/G%C5%B5yl_Fair_y_Canhwyllau\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Saint_David%27s_Day\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Calan_Mai\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Gathering_Day\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Calan_Gaeaf\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/G%C5%B5yl_Mabsant\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Welsh_holidays#Gŵyl_San_Steffan\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Eisteddfod\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Religion_in_Wales\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Art_of_Wales\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Literature_of_Wales\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "0\n", - "PAGE HAS NO LINKS: /wiki/Welsh-language_literature\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Welsh_literature_in_English\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Medieval_Welsh_literature\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/List_of_Welsh_language_authors\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/List_of_Welsh_language_poets_(6th_century_to_c.1600)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Theatre_of_Wales\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Music_of_Wales\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Media_in_Wales\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Radio_in_Wales\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Television_in_Wales\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Cinema_of_Wales\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Sport_in_Wales\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Bando_(sport)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Boxing_in_Wales\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Cnapan\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Cricket_in_Wales\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Football_in_Wales\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Golf_in_Wales\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Horse_racing_in_Wales\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Welsh_handball\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Rugby_league_in_Wales\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Rugby_union_in_Wales\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/List_of_World_Heritage_Sites_in_Wales\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/National_symbols_of_Wales\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Flag_of_Wales\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Coat_of_arms_of_Wales\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Flag_of_Saint_David\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/List_of_Welsh_flags\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Welsh_Dragon\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Welsh_heraldry\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Celtic_cross\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Celtic_knot\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Brittonic_languages\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Celtic_languages\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Wales\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Y_Wladfa\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Chubut_Province\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Argentina\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/United_Kingdom_Census_2011\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Welsh_Language_Commissioner\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/History_of_the_Welsh_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Bible_translations_into_Welsh\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Llanwnda,_Pembrokeshire\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Celtic_Britons\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Thomas_Charles-Edwards\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Battle_of_Deorham\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Old_Welsh\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Middle_Welsh\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/History_of_the_Welsh_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Exonym_and_endonym\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Anglo-Saxons\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Walhaz\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Celtic_languages#Classification\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Celtic_Britons\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Insular_Celtic_languages\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Great_Britain\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Bronze_Age\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/British_Iron_Age\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Firth_of_Forth\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Early_Middle_Ages\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Kenneth_H._Jackson\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Hen_Ogledd\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Northern_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Scotland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Cynfeirdd\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Hen_Ogledd\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/8th_century\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Tywyn\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Inflection\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Old_Welsh\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Old_Welsh\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Poetry\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Scotland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Anglo-Saxon_settlement_of_Britain\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Gaels\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Aneirin\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Book_of_Taliesin\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Middle_Welsh\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Middle_Welsh\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Mabinogion\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Welsh_law\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Gerald_of_Wales\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Descriptio_Cambriae\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Henry_II_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Pencader,_Carmarthenshire\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Bible_translations_into_Welsh\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/New_Testament\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/William_Salesbury\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/William_Morgan_(Bible_translator)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/United_Kingdom_Census_2001\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/United_Kingdom_Census_2011\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Ceredigion\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Carmarthenshire\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Chubut_Province\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Y_Wladfa\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Discourse\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Code-switching\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Gwynedd\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Conwy_(county_borough)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Denbighshire\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Anglesey\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Pembrokeshire\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Glamorgan\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Powys\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Archenfield\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Elizabeth_I_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Bishop_of_Hereford\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Book_of_Common_Prayer\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/S4C\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Welsh_Language_Board\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Office_for_National_Statistics\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/United_Kingdom_Census_2011\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Liverpool\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Central_(Liverpool_ward)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Greenbank_(ward)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Regions_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Road_signs_in_Wales\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Cardiff_Airport\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Welsh_nationalism\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Plaid_Cymru\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Welsh_Language_Society\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Welsh_Language_Act_1993\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Government_of_Wales_Act_1998\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Welsh_Language_Board\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Statutory_Instrument_(UK)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/National_Assembly_for_Wales\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Alun_Ffred_Jones\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Welsh_Language_Board\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Welsh_Government\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Carwyn_Jones\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Plaid_Cymru\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/National_Assembly_for_Wales\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Hen_Wlad_Fy_Nhadau\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/European_Charter_for_Regional_or_Minority_Languages\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Wrexham_Central_railway_station\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/S4C\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Digital_television_transition\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/BBC\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/BBC_Radio_Cymru\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Y_Cymro\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Y_Byd\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Welsh_Government\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Golwg360\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Welsh_medium_education\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Chartism\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Newport,_Wales\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Rebecca_Riots\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Toll_road\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Turnpikes\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/The_Times\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Ralph_Lingen,_1st_Baron_Lingen\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Anglicanism\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Nonconformist\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Treachery_of_the_Blue_Books\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Nonconformity_in_Wales\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Kenneth_O._Morgan\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Massacre_of_Glencoe\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Jallianwala_Bagh_massacre\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Welsh_Not\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Hugh_Owen_(educator)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Aberystwyth_University\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Aberystwyth\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Ysgol_Syr_Hugh_Owen\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Owen_Morgan_Edwards\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Norah_Isaac\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Ysgol_Glan_Clwyd\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Rhyl\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/National_Curriculum_(England,_Wales_and_Northern_Ireland)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Local_education_authority\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Medium_of_instruction\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Coleg_Cymraeg_Cenedlaethol\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/List_of_Celtic-language_media\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Windows_7\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Microsoft_Windows_XP\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Windows_Vista\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Microsoft_Office\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/LibreOffice\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/OpenOffice.org\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Mozilla_Firefox\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Linux_distribution\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Blog\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Facebook\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "0\n", - "PAGE HAS NO LINKS: /wiki/Welsh_Language_Board\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/SMS\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Predictive_text\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/National_Eisteddfod_of_Wales\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Samsung\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Orange_(UK)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Android_(operating_system)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Google_Keyboard\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/IOS\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Cryptography\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Navajo_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Code_talker\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Military_of_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/World_War_II\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Royal_Welch_Fusiliers\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Bosnia_and_Herzegovina\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Patagonia\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Falklands_War\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Council_of_the_European_Union\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Alun_Ffred_Jones\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Contents_of_the_Voyager_Golden_Record#Greetings\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Voyager_Golden_Record\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Voyager_program\n", - "1023\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Welsh_phonology\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/International_Phonetic_Alphabet\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/International_Phonetic_Alphabet\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/International_Phonetic_Alphabet#Fonts\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Specials_(Unicode_block)#Replacement_character\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Unicode\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Phonology\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Linguistic_typology\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Voiceless_dental_and_alveolar_lateral_fricatives\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Voiceless_nasal\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Voiceless_alveolar_trill\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Stress_(linguistics)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Pitch_(music)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Welsh_orthography\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Latin_script\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Digraph_(orthography)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Collation\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/William_Salesbury\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Diacritic\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Circumflex\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Vowel_length\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Colloquial_Welsh_morphology\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Literary_Welsh_morphology\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Morphology_(linguistics)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Insular_Celtic_languages\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Consonant_mutation\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Inflected_preposition\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Preposition\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Personal_pronoun\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Object_(grammar)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Grammatical_gender\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Grammatical_case\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Grammatical_number\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Auxiliary_verb\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Grammatical_conjugation\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Welsh_syntax\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Verb%E2%80%93subject%E2%80%93object\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Auxiliary_verb\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Verbnoun\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Imperfect\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Periphrastic\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Future_tense\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Conditional_mood\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Preterite\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Inflected_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Welsh_numerals\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Vigesimal\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Welsh_morphology\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Grammatical_gender\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Kingdom_of_Gwynedd\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Kingdom_of_Powys\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Kingdom_of_Dyfed\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Gwenhwyseg\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Kingdom_of_Gwent\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Morgannwg\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Patagonian_Welsh\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Y_Wladfa\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Welsh_settlement_in_Argentina\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Dialect\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Vowel\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Register_(sociolinguistics)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Pro-drop_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Periphrastic\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Welsh_Bible\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Bible\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Association_of_Welsh_Translators_and_Interpreters\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/English_and_Welsh\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Honourable_Society_of_Cymmrodorion\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Languages_in_the_United_Kingdom\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/List_of_Welsh-language_media\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/List_of_Welsh_films\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/List_of_Welsh-language_authors\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/List_of_Welsh-language_poets_(6th_century_to_c._1600)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/List_of_Welsh_people\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/List_of_Welsh_principal_areas_by_percentage_Welsh_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Literature_of_Wales_(Welsh_language)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/St_Benet%27s,_Paul%27s_Wharf\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Welsh_Language_Board\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Dal_Ati\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Welsh_placenames\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Welsh_Tract\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Welsh_(surname)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Welsh_Government\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Glottolog\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Legislation.gov.uk\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/The_National_Archives_(United_Kingdom)\n", - "494\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/OCLC\n", - "494\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/OCLC\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Digital_object_identifier\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/International_Standard_Serial_Number\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Simon_Jenkins\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/University_of_Wales_Press\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Bath,_Somerset\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/BBC_News_Online\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Wayback_Machine\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/SAGE_Publications\n", - "494\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/BBC_News_Online\n", - "494\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Wayback_Machine\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Welsh_Language_Board\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Wayback_Machine\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Welsh_Wikipedia\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/The_Independent\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/NASA\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/NASA\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/J._R._R._Tolkien\n", - "494\n", - "494\n", - "494\n", - "494\n", - "494\n", - "494\n", - "494\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Wikipedia\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Newport,_Wales\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/History_of_the_Welsh_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Old_Welsh\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Middle_Welsh\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Patagonian_Welsh\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Welsh_grammar\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Welsh_phonology\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Welsh_morphology\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Welsh_syntax\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Welsh_numerals\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Welsh_orthography\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Celtic_languages\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Continental_Celtic_languages\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Celtiberian_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Cisalpine_Gaulish\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Galatian_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Gallaecian_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Gaulish_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Lepontic_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Noric_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Insular_Celtic_languages\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Brittonic_languages\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Common_Brittonic\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Old_Welsh\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Middle_Welsh\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Cumbric\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Cornish_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Breton_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Ivernic_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Goidelic_languages\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Primitive_Irish\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Old_Irish\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Middle_Irish\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Classical_Gaelic\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Irish_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Manx_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Scottish_Gaelic\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Pictish_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Mixed_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Beurla_Reagaird\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Shelta\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Gaeltacht\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/G%C3%A0idhealtachd\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Y_Fro_Gymraeg\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Lower_Brittany\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Cape_Breton_Island\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Y_Wladfa\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Gaelscoil\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Gaelic_medium_education_in_Scotland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Bunscoill_Ghaelgagh\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "0\n", - "PAGE HAS NO LINKS: /wiki/Welsh_medium_education\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Diwan_(school)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Skol_Veythrin_Karenza\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Language_death\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Languages_of_Europe\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Languages_of_Albania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Languages_of_Andorra\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Languages_of_Armenia\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Languages_of_Austria\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Languages_of_Azerbaijan\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Languages_of_Belarus\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Languages_of_Belgium\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Languages_of_Bosnia_and_Herzegovina\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Languages_of_Bulgaria\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Languages_of_Croatia\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Languages_of_Cyprus\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Languages_of_the_Czech_Republic\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Languages_of_Denmark\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Languages_of_Estonia\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Languages_of_Finland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Languages_of_France\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Languages_of_Georgia_(country)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Languages_of_Germany\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Languages_of_Greece\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Languages_of_Hungary\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Languages_of_Iceland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Languages_of_Ireland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Languages_of_Italy\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Languages_of_Kazakhstan\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Languages_of_Latvia\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Languages_of_Liechtenstein\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Languages_of_Lithuania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Languages_of_Luxembourg\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Languages_of_the_Republic_of_Macedonia\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Languages_of_Malta\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Languages_of_Moldova\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Languages_of_Monaco\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Languages_of_Montenegro\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Languages_of_the_Netherlands\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Languages_of_Norway\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Languages_of_Poland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Languages_of_Portugal\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Languages_of_Romania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Languages_of_Russia\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Languages_of_San_Marino\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Languages_of_Serbia\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Languages_of_Slovakia\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Languages_of_Slovenia\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Languages_of_Spain\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Languages_of_Sweden\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Languages_of_Switzerland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Languages_of_Turkey\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Languages_of_Ukraine\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Languages_of_the_United_Kingdom\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Languages_of_Vatican_City\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Languages_of_Abkhazia\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Languages_of_Nagorno-Karabakh\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Languages_of_Kosovo\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Languages_of_Northern_Cyprus\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Languages_of_South_Ossetia\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Languages_of_Transnistria\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Languages_of_%C3%85land\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Languages_of_the_Faroe_Islands\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Languages_of_Gibraltar\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Languages_of_the_Bailiwick_of_Guernsey\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Languages_of_the_Isle_of_Man\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Languages_of_Jersey\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Languages_of_Svalbard\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Languages_of_the_European_Union\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Library_of_Congress_Control_Number\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Integrated_Authority_File\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Biblioth%C3%A8que_nationale_de_France\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/National_Diet_Library\n", - "439\n", - "439\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Main_Page\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Main_Page\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Unami_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Delaware_River\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Hudson_River\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Oklahoma\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Extinct_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Language_family\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Algic_languages\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Algonquian_languages\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Eastern_Algonquian_languages\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Delaware_languages\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/ISO_639-3\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Glottolog\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/International_Phonetic_Alphabet\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/International_Phonetic_Alphabet#Fonts\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Replacement_character\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Unicode\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Algonquian_languages\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Lenape\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/New_Jersey\n", - "1\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Oklahoma\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Delaware_languages\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Munsee_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Delaware_Tribe_of_Indians\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Nora_Thompson_Dean\n", - "1023\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Lenapehoking\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Jamestown_Colony\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Lord_De_La_Warr\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Eastern_Algonquian_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Regularization_(linguistics)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Delaware_Tribe_of_Indians\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Delaware_Nation\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Anadarko,_Oklahoma\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/John_Heckewelder\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Geminate\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Obstruent\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Vowel_length\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Bilabial_consonant\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Dental_consonant\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Postalveolar_consonant\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Velar_consonant\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Glottal_consonant\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Stop_consonant\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Fricative_consonant\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Nasal_consonant\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Lateral_consonant\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Semivowel\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Breve\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Grave_accent\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Acute_accent\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Front_vowel\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Central_vowel\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Back_vowel\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Close_vowel\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Mid_vowel\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Open_vowel\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Front_vowel\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Central_vowel\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Back_vowel\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Close_vowel\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Mid_vowel\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Open_vowel\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Homorganic\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Stress_(phonology)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Antepenult\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Penult\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Morphophonological\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Munsee\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Continuant\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Syncope_(phonetics)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Metathesis_(linguistics)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Grammatical_person#Additional_persons\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Obviative\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Noun_class\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Agglutinative\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Polysynthetic\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Clusivity\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Desinence\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Agent_(grammar)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Object_(grammar)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Diminutives\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Pejoratives\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Algonquian_languages\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Glottolog\n", - "494\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Ives_Goddard\n", - "494\n", - "494\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/David_Zeisberger\n", - "494\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Daniel_Garrison_Brinton\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Wikipedia\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Jotham_Meeker\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Algonquian_languages\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Plains_Algonquian_languages\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Arapahoan_languages\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Arapaho_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Besawunena_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Gros_Ventre_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Nawathinehena_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Blackfoot_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Cheyenne_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Central_Algonquian_languages\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Cree_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Menominee_language\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "0\n", - "PAGE HAS NO LINKS: /wiki/Miami-Illinois_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Ojibwe_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Potawatomi_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Meskwaki_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Shawnee_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Eastern_Algonquian_languages\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Abenaki_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Malecite-Passamaquoddy_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Loup_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Massachusett_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Mohegan-Pequot_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Narragansett_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Quiripi_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Delaware_languages\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Mahican_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Munsee_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Carolina_Algonquian_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Etchemin_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Mi%27kmaq_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Nanticoke_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Powhatan_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Language_death\n", - "1\n", - "1\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Indo-European_languages\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/American_English\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/African_American_English\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Appalachian_English\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Central_Pennsylvania_dialect\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Inland_Northern_American_English\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Northeast_Pennsylvania_English\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Pennsylvania_Dutch_English\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Philadelphia_dialect\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Pittsburgh_English\n", - "329\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Spanish_language_in_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Italian_language_in_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Indigenous_languages_of_the_Americas\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Delaware_languages\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Munsee_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Erie_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Susquehannock_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/American_Sign_Language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Maryland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Maryland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Indo-European_languages\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/American_English\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Baltimore_dialect\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Tidewater_accent\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Spanish_language_in_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/French_language_in_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Italian_language_in_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/German_in_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Indigenous_languages_of_the_Americas\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Siouan_languages\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Tutelo_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Saponi#Language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Nanticoke_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Piscataway_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Susquehannock_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Powhatan_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/American_Sign_Language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Chinese_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Korean_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Oklahoma\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Oklahoma\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Alabama_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Arapaho_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Caddo_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Cayuga_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Cherokee_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Cheyenne_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Chickasaw_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Chiwere_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Choctaw_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Comanche_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Mikasuki_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Kansa_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Koasati_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Mescalero-Chiricahua_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Fox_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Muscogee_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Osage_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Ottawa_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Pawnee_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Plains_Apache_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Omaha-Ponca_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Potawatomi_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Quapaw_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Seneca_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Shawnee_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Tonkawa_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Wichita_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Wyandot_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Yuchi_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Sign_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/American_Sign_Language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Black_American_Sign_Language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Plains_Indian_Sign_Language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/American_English\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/German_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Spanish_language_in_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Vietnamese_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Tribe_(Native_American)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Accokeek_tribe\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Assateague_people\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Chaptico\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Choptank_people\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Doeg_tribe\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Lumbee\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Matapeake_tribe\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Mattawoman\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Nacotchtank\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Nanticoke_people\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Ozinie_tribe\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Patuxent_people\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Piscataway_Indian_Nation_and_Tayac_Territory\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Piscataway_tribe\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Pocomoke_people\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Potapoco\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Powhatan\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Shawnee\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Susquehannock\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Tockwogh_tribe\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Tuscarora_people\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Yaocomico\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/We-Sorts\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Indigenous_languages_of_the_Americas\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Nanticoke_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Piscataway_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Powhatan_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Susquehannock_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Indian_reservation\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Piscataway_Indian_Nation_and_Tayac_Territory\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Mary_Kittamaquund\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Turkey_Tayac\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Indian_Will\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Accokeek_Creek_Site\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/History_of_the_Native_Americans_in_Baltimore\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Caiuctucuc\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Nottingham,_Prince_George%27s_County,_Maryland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Shawnee_Old_Fields_Village_Site\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Monongahela_culture\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Aisquith_Farm_E_Archeological_Site\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Arundel_Cove_Archaeological_Site\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Barton_Village_Site\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Beck_Northeast_Site_(18AN65)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Biggs_Ford_Site\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Brinsfield_I_Site\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Buckingham_Archeological_Site\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Bumpstead_Archeological_Site\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Elkridge_Site\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Grear_Prehistoric_Village_Site\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Heath_Farm_Camp_Archeological_Site\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Heath_Farm_Jasper_Quarry_Archeological_Site\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Hoye_Site\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Iron_Hill_Cut_Jasper_Quarry_Archeological_Site\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Katcef_Archeological_Site\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Martins_Pond_Site\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/McCandless_Archeological_Site\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Meyer_Site\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Monocacy_Site\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Nolands_Ferry_I_Archeological_Site\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Paw_Paw_Cove_Site\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Sandy_Point_Site\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Shoemaker_III_Village_Site\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Walker_Prehistoric_Village_Archeological_Site\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Willin_Village_Archeological_Site\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Broad_Creek_Soapstone_Quarries\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Magothy_Quartzite_Quarry_Archeological_Site\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/National_Archives_Archeological_Site_(College_Park,_Maryland)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Old_Colony_Cove_Site\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "0\n", - "PAGE HAS NO LINKS: /wiki/Baltimore_American_Indian_Center\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/List_of_place_names_in_Maryland_of_Native_American_origin\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Nemacolin%27s_Path\n", - "234\n", - "234\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Main_Page\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Main_Page\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Susquehannock_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Northeastern_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Extinct_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Language_family\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Iroquoian_languages\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/ISO_639-3\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Linguist_List\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Glottolog\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Extinct_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Indigenous_peoples_of_the_Americas\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Susquehannock\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Iroquoian_languages\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/John_Campanius\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Iroquois\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Conestoga_River\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Juniata_River\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Swatara_Creek\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Glottolog\n", - "1\n", - "1\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Indo-European_languages\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/American_English\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/African_American_English\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Appalachian_English\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Central_Pennsylvania_dialect\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Inland_Northern_American_English\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Northeast_Pennsylvania_English\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Pennsylvania_Dutch_English\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Philadelphia_dialect\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Pittsburgh_English\n", - "329\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Spanish_language_in_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Italian_language_in_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Indigenous_languages_of_the_Americas\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Delaware_languages\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Munsee_language\n", - "235\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Erie_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/American_Sign_Language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Maryland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Maryland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Indo-European_languages\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/American_English\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Baltimore_dialect\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Tidewater_accent\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Spanish_language_in_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/French_language_in_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Italian_language_in_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/German_in_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Indigenous_languages_of_the_Americas\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Siouan_languages\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Tutelo_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Saponi#Language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Nanticoke_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Piscataway_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Powhatan_language\n", - "235\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/American_Sign_Language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Chinese_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Korean_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Tribe_(Native_American)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Accokeek_tribe\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Assateague_people\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Chaptico\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Choptank_people\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Doeg_tribe\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Lumbee\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Matapeake_tribe\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Mattawoman\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Nacotchtank\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Nanticoke_people\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Ozinie_tribe\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Patuxent_people\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Piscataway_Indian_Nation_and_Tayac_Territory\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Piscataway_tribe\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Pocomoke_people\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Potapoco\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Powhatan\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Shawnee\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Susquehannock\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Tockwogh_tribe\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Tuscarora_people\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Yaocomico\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/We-Sorts\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Indigenous_languages_of_the_Americas\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Nanticoke_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Piscataway_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Powhatan_language\n", - "235\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Indian_reservation\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Piscataway_Indian_Nation_and_Tayac_Territory\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Mary_Kittamaquund\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Turkey_Tayac\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Indian_Will\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Accokeek_Creek_Site\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/History_of_the_Native_Americans_in_Baltimore\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Caiuctucuc\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Nottingham,_Prince_George%27s_County,_Maryland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Shawnee_Old_Fields_Village_Site\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Monongahela_culture\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Aisquith_Farm_E_Archeological_Site\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Arundel_Cove_Archaeological_Site\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Barton_Village_Site\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Beck_Northeast_Site_(18AN65)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Biggs_Ford_Site\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Brinsfield_I_Site\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Buckingham_Archeological_Site\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Bumpstead_Archeological_Site\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Elkridge_Site\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Grear_Prehistoric_Village_Site\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Heath_Farm_Camp_Archeological_Site\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Heath_Farm_Jasper_Quarry_Archeological_Site\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Hoye_Site\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Iron_Hill_Cut_Jasper_Quarry_Archeological_Site\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Katcef_Archeological_Site\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Martins_Pond_Site\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/McCandless_Archeological_Site\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Meyer_Site\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Monocacy_Site\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Nolands_Ferry_I_Archeological_Site\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Paw_Paw_Cove_Site\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Sandy_Point_Site\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Shoemaker_III_Village_Site\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Walker_Prehistoric_Village_Archeological_Site\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Willin_Village_Archeological_Site\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Broad_Creek_Soapstone_Quarries\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Magothy_Quartzite_Quarry_Archeological_Site\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/National_Archives_Archeological_Site_(College_Park,_Maryland)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Old_Colony_Cove_Site\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Baltimore_American_Indian_Center\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/List_of_place_names_in_Maryland_of_Native_American_origin\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Nemacolin%27s_Path\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Indigenous_peoples_of_the_Americas\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Indigenous_languages_of_the_Americas\n", - "113\n", - "113\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Main_Page\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Main_Page\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Munsee_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Canada\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Ontario\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/New_York_(state)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/New_Jersey\n", - "1\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Munsee\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Language_family\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Algic_languages\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Algonquian_languages\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Eastern_Algonquian_languages\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Delaware_languages\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/ISO_639-3\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Glottolog\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/International_Phonetic_Alphabet\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/International_Phonetic_Alphabet#Fonts\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Replacement_character\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Unicode\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Endangered_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Eastern_Algonquian_languages\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Algonquian_languages\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Algic_languages\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Delaware_languages\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Lenape_language\n", - "235\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/New_York_City\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Long_Island\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Manhattan_Island\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Staten_Island\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Lower_Hudson_Valley\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/New_Jersey\n", - "1\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Moravian_47,_Ontario\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Ontario\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Canada\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "0\n", - "PAGE HAS NO LINKS: /wiki/Proto-Algonquian_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Mahican\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Delaware_Water_Gap\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Daniel_Garrison_Brinton\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Herbert_C._Kraft\n", - "1023\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Delaware_River\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Thomas_West,_3rd_Baron_De_La_Warr\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Christian_Munsee\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Hudson_Valley\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Six_Nations_of_the_Grand_River_First_Nation\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Munsee-Delaware_Nation_1,_Ontario\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Moravian_47,_Ontario\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Stockbridge-Munsee\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Mohican\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Ramapough_Mountain_Indians\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Delaware_Nation\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Raritan_River\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Mahican_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Mohegan-Montauk-Narragansett_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Quiripi_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Indigenous_peoples\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Hudson_River\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Raritan_River\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Metrical_phonology\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Stress_(linguistics)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Syncope_(phonetics)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Reduplication\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/International_Phonetic_Alphabet\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Extrametricality\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Munsee_grammar\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Inflection\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Derivational_morphology\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Morphology_(linguistics)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Grammatical_gender\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Grammatical_person\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Possession_(linguistics)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Negation_(linguistics)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/International_Phonetic_Alphabet\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Americanist_phonetic_notation\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Delaware_languages#Writing_systems\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Regularization_(linguistics)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Lenape\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Monsey,_New_York\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Ethnologue\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Glottolog\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Blair_A._Rudes\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/H.C._Wolfart\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/International_Standard_Serial_Number\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/H._C._Wolfart\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/International_Standard_Serial_Number\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Ives_Goddard\n", - "494\n", - "494\n", - "494\n", - "494\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/International_Standard_Serial_Number\n", - "494\n", - "494\n", - "494\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/International_Standard_Serial_Number\n", - "494\n", - "494\n", - "494\n", - "494\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/International_Standard_Serial_Number\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Truman_Michelson\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/David_Zeisberger\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/American_Philosophical_Society\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Algonquian_languages\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Plains_Algonquian_languages\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Arapahoan_languages\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Arapaho_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Besawunena_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Gros_Ventre_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Nawathinehena_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Blackfoot_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Cheyenne_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Central_Algonquian_languages\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Cree_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Menominee_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Miami-Illinois_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Ojibwe_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Potawatomi_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Meskwaki_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Shawnee_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Eastern_Algonquian_languages\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Abenaki_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Malecite-Passamaquoddy_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Loup_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Massachusett_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Mohegan-Pequot_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Narragansett_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Quiripi_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Delaware_languages\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Mahican_language\n", - "235\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Carolina_Algonquian_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Etchemin_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Mi%27kmaq_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Nanticoke_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Powhatan_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Language_death\n", - "1\n", - "1\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Indo-European_languages\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/American_English\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/African_American_English\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Appalachian_English\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Central_Pennsylvania_dialect\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Inland_Northern_American_English\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Northeast_Pennsylvania_English\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Pennsylvania_Dutch_English\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Philadelphia_dialect\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Pittsburgh_English\n", - "329\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Spanish_language_in_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Italian_language_in_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Indigenous_languages_of_the_Americas\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Delaware_languages\n", - "235\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Erie_language\n", - "114\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/American_Sign_Language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Canada\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Languages_of_Canada\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Canada\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Canadian_English\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Canadian_French\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Algonquian_languages\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Abenaki_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Algonquin_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Blackfoot_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Cree_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Innu_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Malecite-Passamaquoddy_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Mi%27kmaq_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Naskapi_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Ojibwe_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Ottawa_dialect\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Potawatomi_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Athabaskan_languages\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Babine-Witsuwit%27en_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Carrier_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Chilcotin_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Chipewyan_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Dogrib_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Gwich%E2%80%99in_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/H%C3%A4n_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Kaska_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Nicola_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Sarcee_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Sekani_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Slavey_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Tagish_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Tahltan_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Tutchone_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Inuit_languages\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Inuinnaqtun\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Inuktitut\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Inupiat_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Inuvialuktun\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Iroquoian_languages\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Cayuga_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Mohawk_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Oneida_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Onondaga_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Seneca_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Tuscarora_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Wyandot_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Salishan_languages\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Bella_Coola_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Comox_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Halkomelem\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Lillooet_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Okanagan_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Saanich_dialect\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Sechelt_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Shuswap_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Squamish_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Thompson_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Wakashan_languages\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Ditidaht_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Haisla_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Heiltsuk-Oowekyala_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Kwak%27wala\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Nuu-chah-nulth_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Beothuk_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Haida_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Kutenai_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Tlingit_language\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "0\n", - "PAGE HAS NO LINKS: /wiki/Coast_Tsimshian_dialect\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Broken_Slavey\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Bungi_Creole\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Chiac\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Chinook_Jargon\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Labrador_Inuit_Pidgin_French\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Michif_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Canadian_Gaelic\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Canadian_Irish\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Canadian_Ukrainian\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/American_Sign_Language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Quebec_Sign_Language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Inuit_Sign_Language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Plains_Indian_Sign_Language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Maritime_Sign_Language\n", - "194\n", - "194\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Main_Page\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Main_Page\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Proprietary_colony\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Cecil_Calvert,_2nd_Baron_Baltimore\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Province_of_Maryland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Crown_colony\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/North_America\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Caribbean\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/British_Empire\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Royal_charter\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Colonial_charters_in_the_Thirteen_Colonies\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Province_of_New_York\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/William_Penn\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/History_of_Pennsylvania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Crown_colony\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/County_palatine\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Marquess\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Lords_Proprietors\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Crown_Colony\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Barbados\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Colonial_charters_in_the_Thirteen_Colonies\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/British_America\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/American_Revolution\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Thirteen_colonies\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/U.S._state\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Virginia_Colony\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Province_of_Georgia\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/North_Carolina\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/South_Carolina\n", - "12\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Massachusetts\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/New_Hampshire\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Rhode_Island\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Connecticut\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Province_of_Maryland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Province_of_New_York\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Province_of_New_Jersey\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Delaware_Colony\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Nova_Scotia\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Henry_IV_of_France\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/King_of_France\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Pierre_Du_Gua_de_Monts\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Latitude\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Fur_trade\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Acadia\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/New_France\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Samuel_de_Champlain\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Glorioso_Islands\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/French_Third_Republic\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Madagascar\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/R%C3%A9union\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/French_Southern_and_Antarctic_Lands\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/English_colonial_empire\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Proprietary_governor\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Proprietary_House\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Colonial_government_in_the_Thirteen_Colonies\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Crown_colony\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Commonwealth\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Settler_colonialism\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Donatorio\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Quia_Emptores\n", - "53\n", - "53\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Main_Page\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Main_Page\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Autonomous_area\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Administrative_division\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Dependent_territory\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Country\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Self-governance\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Autonomy\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Minority_group\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Decentralization\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Federacy\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Federation\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Confederation\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Territory_(country_subdivision)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/List_of_autonomous_areas_by_country\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Azad_Kashmir\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Pakistan\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Kashmir_conflict\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Banners_of_Inner_Mongolia#Autonomous_banner\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Oroqen_Autonomous_Banner\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/China\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Evenk_Autonomous_Banner\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Morin_Dawa_Daur_Autonomous_Banner\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Autonomous_city\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Buenos_Aires\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Argentina\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Ceuta\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Spain\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Autonomous_cities_of_Spain\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Exclaves\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/North_Africa\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Morocco\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Iberian_peninsula\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Strait_of_Gibraltar\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Melilla\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Tashkent\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Uzbekistan\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Bangui\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Central_African_Republic\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Autonomous_communities_of_Spain\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Northern_Ireland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Scotland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Wales\n", - "1830\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Scotland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Wales\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Northern_Ireland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Parliament_of_the_United_Kingdom\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Unitary_state\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Constitutional_convention_(political_custom)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Autonomous_counties_of_the_People%27s_Republic_of_China\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Tobago\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Trinidad_and_Tobago\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Tobago_House_of_Assembly\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Tobago\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Autonomous_okrugs_of_Russia\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Autonomous_oblast\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Jewish_Autonomous_Oblast\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Russia\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Autonomous_prefectures_of_the_People%27s_Republic_of_China\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Aceh\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Indonesia\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Jeju_Province\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/South_Korea\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Autonomous_Province_of_Kosovo_and_Metohija\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Serbia\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Kosovo\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/International_recognition_of_Kosovo\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/United_Nations_Security_Council_Resolution_1244\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Kosovo\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Papua_(province)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Indonesia\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/South_Tyrol\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Italy\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Trentino\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Vojvodina\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Serbia\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/West_Papua_(province)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Indonesia\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Special_Region_of_Yogyakarta\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Malampa_Province\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Penama_Province\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Sanma_Province\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Shefa_Province\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Tafea_Province\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Torba_Province\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Vanuatu\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/%C3%85land_Islands\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Finland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Aosta_Valley\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Italy\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Azores\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Portugal\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Autonomous_Region_of_Bougainville\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Papua_New_Guinea\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Friuli-Venezia_Giulia\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Italy\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Guangxi\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/China\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Hong_Kong\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Macau\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/China\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Hopi_Reservation\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Cherokee_Nation\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Pine_Ridge_Indian_Reservation\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Inner_Mongolia\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/China\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Iraqi_Kurdistan\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Iraq\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Madeira\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "0\n", - "PAGE HAS NO LINKS: /wiki/Portugal\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Autonomous_Region_in_Muslim_Mindanao\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Philippines\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Mount_Athos\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Greece\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Navajo_Nation\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Ningxia\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/China\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Nisga%27a_people\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Canada\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Nunatsiavut\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Regi%C3%B3n_Aut%C3%B3noma_del_Atl%C3%A1ntico_Norte\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Nicaragua\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Regi%C3%B3n_Aut%C3%B3noma_del_Atl%C3%A1ntico_Sur\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Rodrigues\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Mauritius\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Sardinia\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Italy\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Sicily\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Tibet\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/China\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/T%C5%82%C4%B1%CC%A8ch%C7%AB\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Canada\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Xinjiang\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/China\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Zanzibar\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Tanzania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Autonomous_administrative_divisions_of_India\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/De_facto\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Nakhchivan_Autonomous_Republic\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Nakhchivan_Autonomous_Republic\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Azerbaijan\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Adjara\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Georgia_(country)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Government_of_the_Autonomous_Republic_of_Abkhazia\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Georgia_(country)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Abkhazia\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/War_in_Abkhazia_(1992%E2%80%9393)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/International_recognition_of_Abkhazia_and_South_Ossetia\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Abkhazia\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Gorno-Badakhshan_Autonomous_Province\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Tajikistan\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Crimea\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Ukraine\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Russia\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Karakalpakstan\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Uzbekistan\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Bissau\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Guinea-Bissau\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Gagauzia\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Moldova\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Transnistria_autonomous_territorial_unit_with_special_legal_status\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Moldova\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Transnistria\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Soviet_Union\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/International_recognition_of_Transnistria\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Transnistria\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Republika_Srpska\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Federation_of_Bosnia_and_Herzegovina\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Bosnia_and_Herzegovina\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/British_Overseas_Territories\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Crown_dependencies\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/British_Islands\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Jersey\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Guernsey\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Isle_of_Man\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Crown_dependencies\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Gibraltar\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/British_Overseas_Territories\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/New_Zealand\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Pacific_Islands\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Cook_Islands\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Niue\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Freely_associated_state\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Tokelau\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Chatham_Islands\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Faroe_Islands\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Greenland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Kingdom_of_Denmark\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Aruba\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Cura%C3%A7ao\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Sint_Maarten\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Kingdom_of_the_Netherlands\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Overseas_collectivities\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Corsica\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Region_of_France\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/New_Caledonia\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/French_Polynesia\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Overseas_collectivity\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/French_Guiana\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Guadaloupe\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Martinique\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Mayotte\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/R%C3%A9union\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Ethiopia\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Woreda\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Demographics_of_Ethiopia\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Regions_of_Ethiopia\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Indigenous_peoples\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Indigenous_peoples_of_the_Americas\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/First_Nations\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Native_Americans_in_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Indian_reserve\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Indian_reservation\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Canada\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Provinces_and_regions_of_Panama\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Panama\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Autonomous_Silesian_Voivodeship\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Autonomous_Republic_of_Northern_Epirus\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Principality_of_Albania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Autonomous_republics_of_the_Soviet_Union\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Subcarpathian_Ruthenia\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Slovakia\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Czechoslovakia\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Grand_Duchy_of_Finland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Russian_Empire\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Magyar_Autonomous_Region\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Socialist_Republic_of_Romania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Southern_Ireland_(1921%E2%80%9322)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/History_of_Northern_Ireland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/United_Kingdom_of_Great_Britain_and_Ireland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/List_of_autonomous_areas_by_country\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Autonomous_administrative_divisions_of_the_People%27s_Republic_of_China\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Autonomous_administrative_divisions_of_India\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Autonomous_administrative_divisions_of_Russia\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Autonomous_administrative_divisions_of_Spain\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Administrative_division\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Region_(administrative)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Devolution\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Personal_union\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/List_of_current_world_leaders_and_heads_of_government#Autonomous_regions_and_particular_administrative_divisions_-_A-L\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Wayback_Machine\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Administrative_subdivision\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Federalism\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Asymmetric_federalism\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Confederation\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Corporative_federalism\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Dual_federalism\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Ethnic_federalism\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Federacy\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Federal_monarchy\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Federal_republic\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Federated_state\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Federation\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Fiscal_federalism\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Symmetric_federalism\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Unitary_state\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Devolution\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Regional_state\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Constituent_state\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Self-governance\n", - "222\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Decentralization\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Home_rule\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Multinational_state\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Personal_union\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Subsidiarity\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Supranational_union\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Tribal_sovereignty\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Administrative_division\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/List_of_terms_for_administrative_divisions\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Area_(country_subdivision)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Insular_area\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Local_government_area\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Protected_area\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Special_Areas_Board\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Statistical_area_(United_States)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Combined_statistical_area\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Metropolitan_statistical_area\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Micropolitan_statistical_area\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Urban_area\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Canton_(country_subdivision)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Half-canton\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Borough\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/County_borough\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "0\n", - "PAGE HAS NO LINKS: /wiki/Metropolitan_borough\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Capital_city\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Federal_capital\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Capital_city#Origins\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/City\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/City_state\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Autonomous_city\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Charter_city\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Independent_city\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Incorporated_city\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Imperial_city\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Free_imperial_city\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Royal_free_city\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Community_(administrative_division)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Autonomous_communities_of_Spain\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Residential_community\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/County\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Administrative_county\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Autonomous_counties_of_the_People%27s_Republic_of_China\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Consolidated_city-county\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Metropolitan_county\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Non-metropolitan_county\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Viscountcy\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Country\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Overseas_country\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Department_(country_subdivision)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Overseas_department\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/District\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Capital_district\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/City_district\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Congressional_district\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Electoral_district\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Federal_district\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/List_of_municipalities_in_British_Columbia#Indian_government_districts\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Lands_administrative_divisions_of_Australia\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Metropolitan_district\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Non-metropolitan_district\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Military_district\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Municipal_district\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Police_district\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/List_of_regional_districts_of_British_Columbia\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Rural_district\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Sanitary_district\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Subdistrict\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Urban_district\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Special_district_(United_States)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Division_(country_subdivision)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Census_division\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Police_division\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Subdivision_(country_subdivision)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Municipality\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/County_municipality_(disambiguation)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/County_municipality_(Norway)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/County_municipality_(Nova_Scotia)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Regional_county_municipality\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Direct-controlled_municipality\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/District_municipality\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Mountain_resort_municipality\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Neutral_municipality\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Regional_municipality\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Resort_municipality\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Rural_municipality\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Specialized_municipality\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Prefecture\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Autonomous_prefecture\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Subprefecture\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Super-prefecture\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Praetorian_prefecture\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Province\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Autonomous_province\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Overseas_province\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Roman_province\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Region\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Administrative_region\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Autonomous_region\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Capital_region\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Development_region\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Mesoregion_(geography)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Microregion\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Overseas_region\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Special_administrative_region\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Subregion_(country_subdivision)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Reserve_(territorial_entity)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Biosphere_reserve\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Ecological_reserve\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Game_reserve\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Indian_reserve\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Nature_reserve\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Federated_state\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Federal_state\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Free_state_(government)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Sovereign_state\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Territory\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Capital_territory\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Federal_capital_territory\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Dependent_territory\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Federal_territory\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Organized_incorporated_territory\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Overseas_territory\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Union_territory\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Unorganized_territory\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Town\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Census_town\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Market_town\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Township\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Charter_township\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Civil_township\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Paper_township\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Survey_township\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Urban_township\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Autonomous_territorial_unit\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Local_administrative_unit\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Regional_unit\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Economic_zone\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Exclusive_economic_zone\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Free_economic_zone\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Special_economic_zone\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Free-trade_zone\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Neutral_zone_(territorial_entity)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Self-administered_zone\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Local_government_in_Victoria#Alpine_resorts\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Bailiwick\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Banner_(country_subdivision)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Banners_of_Inner_Mongolia\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Block_(district_subdivision)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Cadastre\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Circle_(country_subdivision)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Circuit_(administrative_division)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Colony\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Municipality\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Condominium_(international_law)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Constituency_(administrative_division)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Duchy\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Elderships_of_Lithuania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Emirate\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Federal_Dependencies_of_Venezuela\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Governorate\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Hamlet_(place)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Ilkhanate\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Indian_reservation\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Manor\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Royal_manor\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Muftiate\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Neighbourhood\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Parish_(administrative_division)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Periphery_(country_subdivision)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Precinct\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Principality\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Protectorate\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Quarter_(urban_subdivision)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/List_of_regencies_and_cities_of_Indonesia\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Autonomous_republic\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Riding_(country_subdivision)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Sector_(country_subdivision)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Autonomous_sector\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Shire\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Sultanate\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Suzerainty\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Townland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Village\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Administrative_village\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/List_of_summer_villages_in_Alberta\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Ward_(electoral_subdivision)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Agency_(country_subdivision)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Barony\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Burgh\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Exarchate\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Hide_(unit)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Hundred_(county_division)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Imperial_Circle\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/March_(territorial_entity)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Monthon\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Presidency_(country_subdivision)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Residency_(country_subdivision)\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "0\n", - "PAGE HAS NO LINKS: /wiki/Roman_diocese\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Seat_(territorial_administrative_unit)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Tenth_(country_subdivision)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Tithing\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Amt_(country_subdivision)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Bakhsh\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Barangay\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Bezirk\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Regierungsbezirk\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Comune\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Frazione\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Fu_(country_subdivision)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Gemeinde\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Jude%C8%9B\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Municipalities_of_Finland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Municipalities_of_Sweden\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/L%C3%A4n\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Localit%C3%A0\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Counties_of_Hungary\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Muban\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Oblast\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Autonomous_oblast\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Okrug\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Provinces_of_Iran\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Poblacion\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Purok\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Counties_of_Iran\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Sum_(country_subdivision)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/S%C3%BDsla\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Tehsil\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Vingtaine\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Commote\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Gau_(territory)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Heerlijkheid\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/K%C3%B6ping\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Maalaiskunta\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Nome_(Egypt)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Prefectures_of_Greece\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Pagus\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Pargana\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Plas%C4%83\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Satrap\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Socken\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Subah\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Syssel\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Zhou_(country_subdivision)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Arabic\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Administrative_division\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Muhafazah\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Wilayah\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Mintaqah\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Mudiriyah\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Emirate\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Baladiyah\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Shabiyah\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Mintaqah\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Kaza\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Nahiyah\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Markaz_(country_subdivision)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Mutamadiyah\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Daerah\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Da%C3%AFra\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Sanjak\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Sanjak\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Amanah_(administrative_subdivision)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Baladiyah\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Mahallah\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Village\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Sheyakhah\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/French_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Administrative_division\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Arrondissement\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Department_(country_subdivision)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Prefectures_in_France\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Subprefectures_in_France\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Greek_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Administrative_division\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Decentralized_administrations_of_Greece\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Governor-general#Greece\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Geographic_regions_of_Greece\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Administrative_regions_of_Greece\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Prefectures_of_Greece\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Regional_units_of_Greece\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Municipalities_and_communities_of_Greece\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Provinces_of_Greece\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Municipalities_and_communities_of_Greece\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Archon\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Bandon_(Byzantine_Empire)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Deme\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Despot_(court_title)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Roman_diocese\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Dux\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Droungos\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Eparchy\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Exarch\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Katepano\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Kephale_(Byzantine_Empire)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Kleisoura_(Byzantine_district)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Meridarch\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Naucrary\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Satrap\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Strategos\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Theme_(Byzantine_district)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Toparches\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Turma\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Portuguese_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Administrative_division\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Estado\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Distrito_federal\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Province\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Region\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/District\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Comarca\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Captaincy\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Munic%C3%ADpio\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Concelho\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Freguesia\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Communes_of_Angola\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Electoral_district\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Cidade\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Town\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Village\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Bairro\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Lugar_(country_subdivision)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Slavic_languages\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Administrative_division\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Dzielnica\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Gmina\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Krai\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Kraj\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Krajina\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/M%C4%9Bstys\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Obec\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Oblast\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Okr%C4%99g\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Okres\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Okrug\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Op%C5%A1tina\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Osiedle\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Powiat\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Raion\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Selsoviet\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/So%C5%82ectwo\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Voivodeship\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/%C5%BDupanija\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Darugha\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Gromada\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Guberniya\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Jurydyka\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Khutor\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Obshchina\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Okolia\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Opole_(administrative)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Pogost\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Prowincja\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Sorok\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Srez\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Starostwo\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Uyezd\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Volost\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Ziemia\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/%C5%BDupa\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Spanish_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Administrative_division\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Autonomous_communities_of_Spain\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Departamento\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Distrito_federal\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/State_(polity)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Province\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Region\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Canton_(country_subdivision)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Comarca\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Communes_of_Chile\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Corregimiento\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Boroughs_of_Mexico\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/District\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Mancomunidad\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Merindad\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Municipalidad\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Municipio\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Parroquia\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Parishes_of_Ecuador\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Parroquia_(Spain)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Hamlet_(place)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Alqueria\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Elizate\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Asentamiento\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Shanty_town\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Pueblos_j%C3%B3venes\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Barrio\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Campamento_(Chile)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Hamlet_(place)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/City\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Autonomous_city\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Colonia_(Mexico)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Lugar_(country_subdivision)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Masia\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Poblacion\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Rancher%C3%ADa\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Sitio\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Vereda\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Villa\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "0\n", - "PAGE HAS NO LINKS: /wiki/Village\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Turkish_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Administrative_division\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Provinces_of_Turkey\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Il%C3%A7e\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/City\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Town\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Belediye\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Belde\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/K%C3%B6y\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Mahalle\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Agaluk\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Bucak_(administrative_unit)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Eyalet\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Kadiluk\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Kaza\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Khedivate_of_Egypt\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Mutasarr%C4%B1f\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Nahiya\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Pashalik\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Raya_(country_subdivision)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Sanjak\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Vilayet\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Voivodeship\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Census_division\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Electoral_district\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Political_division\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/List_of_administrative_divisions_by_country\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Autonomous_administrative_division\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Autonomous_administrative_division\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Main_Page\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Main_Page\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Constitutional_monarchy\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Separatism\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Associated_state\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Dominion\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Chiefdom\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Federalism\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Federation\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Confederation\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Devolution\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Supranational_union\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Empire\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Hegemony\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Unitary_state\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Administrative_division\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/French_and_Raven%27s_bases_of_power\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Democracy\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Direct_democracy\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Representative_democracy\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Liberal_democracy\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Social_democracy\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Demarchy\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Types_of_democracy\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Oligarchy\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Aristocracy\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Plutocracy\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Kraterocracy\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Stratocracy\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Timocracy\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Meritocracy\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Technocracy\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Geniocracy\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Noocracy\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Kritarchy\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Particracy\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Ergatocracy\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Netocracy\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Autocracy\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Despotism\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Dictatorship\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Military_dictatorship\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Anocracy\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Anarchy\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Theocracy\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Monarchism\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Republicanism\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Absolute_monarchy\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Legalism_(Chinese_philosophy)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Parliamentary_republic\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Directorial_system\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Semi-presidential\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Presidential_system\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Authoritarianism\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Libertarianism\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Tribalism\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Despotism\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Feudalism\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Colonialism\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Minarchism\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Distributism\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Anarchism\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Socialism\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Communism\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Totalitarianism\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Global_governance\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Local_government\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Commune\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/City-state\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Nation_state\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Intergovernmental_organisation\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/World_government\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Monarchy\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Monarch\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Monarchism\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Divine_right_of_kings\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Mandate_of_Heaven\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Absolute_monarchy\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Composite_monarchy\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Diarchy\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Dual_monarchy\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Elective_monarchy\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Emirate\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Ethnarch\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Federal_monarchy\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Hereditary_monarchy\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Legalism_(Chinese_philosophy)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Non-sovereign_monarchy\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Popular_monarchy\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Regent\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Tetrarchy\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Universal_monarchy\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Augustus#Octavian_becomes_Augustus\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Magna_Carta\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Rise_of_the_Ottoman_Empire\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Glorious_Revolution\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/French_Revolution\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Trienio_Liberal\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/First_French_Empire\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Liberal_Wars\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Second_French_Empire\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Italian_unification\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Meiji_Restoration\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Unification_of_Germany\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/5_October_1910_Revolution\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Proclamation_of_the_Republic_(Brazil)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Xinhai_Revolution\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Russian_Revolution\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Siamese_revolution_of_1932\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Italian_institutional_referendum,_1946\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Spanish_transition_to_democracy\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Iranian_Revolution\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Modern_Cambodia\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Nepalese_Civil_War\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Aristocracy\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Autocracy\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Crowned_republic\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Conservatism\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Thomas_Hobbes\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Legitimists\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Oligarchy\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Philosopher_king\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Primogeniture\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Royalist\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Regicide\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Regnal_number\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Royal_family\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Ultra-royalist\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Monarchy\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Sovereignty\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Constitution\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Absolute_monarchy\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Morocco\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Emperor_of_Japan\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Head_of_state\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Constitution\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Uncodified_constitution\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Public_policy\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Vernon_Bogdanor\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Thomas_Macaulay\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Patriotism\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Dissolution_of_parliament\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Royal_assent\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/The_English_Constitution\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Walter_Bagehot\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Reserve_power\n", - "1830\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Commonwealth_realms\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Westminster_system\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Malaysia\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Cambodia\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Elective_monarchy\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Electoral_college\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Hittites\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Ancient_Anatolians\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Bhutan\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Politics_of_Bhutan\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Constitution_of_Bhutan\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Bhutanese_democracy\n", - "548\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Glorious_Revolution\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Bill_of_Rights_1689\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Act_of_Settlement_1701\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Magna_Carta\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Kingdom_of_Scotland\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "0\n", - "PAGE HAS NO LINKS: /wiki/Convention_of_Estates_(1689)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Claim_of_Right_Act_1689\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Anne,_Queen_of_Great_Britain\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Scottish_Militia_Bill\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/George_III_of_the_United_Kingdom\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Catholic_Emancipation_in_Britain\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/William_Pitt_the_Younger\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/William_IV_of_the_United_Kingdom\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Lord_Melbourne\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Lord_John_Russell,_1st_Earl_Russell\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Queen_Victoria\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Bedchamber_crisis\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/William_Ewart_Gladstone\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Hugh_Childers\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Sir_Henry_Campbell-Bannerman\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Parliament_of_the_United_Kingdom\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Government_of_the_United_Kingdom\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Prime_Minister_of_the_United_Kingdom\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Royal_Prerogative\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Oath_of_Allegiance_(United_Kingdom)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Constitutional_conventions_of_the_United_Kingdom\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Advice_(constitutional)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Constitution_of_May_3,_1791\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Constitution_of_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/French_Revolution\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Napoleon_Bonaparte\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Georg_Wilhelm_Friedrich_Hegel\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Elements_of_the_Philosophy_of_Right\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Protestantism\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Executive_branch\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Baron_de_Montesquieu\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Prime_minister\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/France\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/July_Monarchy\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Louis-Philippe_I,_King_of_the_French\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Unification_of_Germany\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Otto_von_Bismarck\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Constitution_of_the_German_Empire\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Kaiser\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Reichskanzler\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/First_World_War\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Kingdom_of_Italy\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/King_of_Italy\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Benito_Mussolini\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Parliamentary_democracy\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Republic\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Member_of_Parliament\n", - "1830\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Parliament\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Royal_Prerogative\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Sovereign_Immunity\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Responsible_government\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Allegiance\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Western_Europe\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Monarchy_of_the_United_Kingdom\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Monarchy_of_Spain\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Monarchy_of_the_Netherlands\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Monarchy_of_Belgium\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Monarchy_of_Norway\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Monarchy_of_Denmark\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Monarchy_of_Luxembourg\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Monarchy_of_Monaco\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Monarchy_of_Liechtenstein\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Monarchy_of_Sweden\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Monarchy_of_Japan\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Monarchy_of_Thailand\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Prime_minister\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Coalition_government\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Cabinet_(government)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Japan\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Sweden\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Elizabeth_II\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Commonwealth_realm\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/1975_Australian_constitutional_crisis\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Gough_Whitlam\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Budget\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Malcolm_Fraser\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Double_dissolution\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Republicanism_in_Australia\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Bhumibol_Adulyadej\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Bhumibol_Adulyadej#Role_in_Thai_politics\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/L%C3%A8se_majest%C3%A9_in_Thailand\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Partisan_(political)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Political_scientist\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Lapsed_power\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/List_of_current_monarchies\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Monarchy_of_Antigua_and_Barbuda\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Monarchy_of_Australia\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Monarchy_of_the_Bahamas\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Bahrain\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Monarchy_of_Barbados\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Belgium\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Monarchy_of_Belize\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Bhutan\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Cambodia\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Monarchy_of_Canada\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Denmark\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Monarchy_of_Grenada\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Monarchy_of_Jamaica\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Japan\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Jordan\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Kuwait\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Lesotho\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Liechtenstein\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Luxembourg\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Malaysia\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Monaco\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Morocco\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Kingdom_of_the_Netherlands\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Monarchy_of_New_Zealand\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Norway\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Monarchy_of_Papua_New_Guinea\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Saint_Kitts_and_Nevis\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Monarchy_of_Saint_Lucia\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Saint_Vincent_and_the_Grenadines\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Samoa\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Monarchy_of_the_Solomon_Islands\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Spain\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Sweden\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Thailand\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Tonga\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Monarchy_of_Tuvalu\n", - "1830\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Anglo-Corsican_Kingdom\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/History_of_Corsica\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Revolutionary_France\n", - "469\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/George_III\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Brazil\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Empire_of_Brazil\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Pedro_I_of_Brazil\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Pedro_II_of_Brazil\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Kingdom_of_Bulgaria\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Simeon_Saxe-Coburg-Gotha\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Commonwealth_republic\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Monarchy_of_Fiji\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Queen_of_the_Gambia\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Queen_of_Ghana\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Queen_of_Guyana\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Queen_of_Trinidad_and_Tobago\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Grand_Principality_of_Finland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Alexander_I_of_Russia\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Autocracy\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Absolute_monarchy\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/France\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Napoleon_I_of_France\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Bourbon_Restoration\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Louis_XVIII_of_France\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Charles_X_of_France\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/July_Monarchy\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Louis-Philippe\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Second_French_Empire\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Napoleon_III\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/German_Empire\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Constitution_of_the_German_Empire\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Greece\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Constantine_II_of_Greece\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Greek_military_junta_of_1967%E2%80%9374\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Greek_plebiscite,_1974\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Kingdom_of_Hawaii\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Kamehameha_III\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/1840_Constitution_of_the_Kingdom_of_Hawaii\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Overthrow_of_the_Kingdom_of_Hawaii#Coup_d.27état\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Kingdom_of_Hungary\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Austria-Hungary\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Hungary\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Iceland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Monarchy_of_Iceland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Iran\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Mohammad_Reza_Pahlavi\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Persian_Constitutional_Revolution\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Italy\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Korean_Empire\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Kingdom_of_Laos\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Savang_Vatthana\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Pathet_Lao\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Malta\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Elizabeth_II\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Mexico\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "0\n", - "PAGE HAS NO LINKS: /wiki/First_Mexican_Empire\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Agust%C3%ADn_de_Iturbide\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Napoleon_III_of_France\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Maximilian_of_Habsburg\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Second_Mexican_Empire\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Montenegro\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Serbia\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Kingdom_of_Yugoslavia\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Nepal\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Gyanendra_of_Nepal\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Ottoman_Empire\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Kingdom_of_Afghanistan\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Mohammad_Zahir_Shah\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Polish%E2%80%93Lithuanian_Commonwealth\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Union_of_Lublin\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Constitution_of_May_3,_1791\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Norman_Davies\n", - "1830\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Portugal\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Manuel_II_of_Portugal\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/United_Kingdom_of_Portugal,_Brazil_and_the_Algarves\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Kingdom_of_Romania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Michael_I_of_Romania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Kingdom_of_Serbia\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Karadjordjevic\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Kingdom_of_Yugoslavia\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Kingdom_of_Serbs,_Croats_and_Slovenes\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Kingdom_of_Yugoslavia\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Peter_II_of_Yugoslavia\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Andorra\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Coregency\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Bishop_of_Urgell\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/President_of_France\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Andorra\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Monaco\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Liechtenstein\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Prince\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Belgium\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Popular_monarchy\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Monarchy_of_Belgium\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Japan\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Emperor\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Luxembourg\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Grand_Duke\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Malaysia\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Federation\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Elective_monarchy\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Yang_di-Pertuan_Agong\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/States_and_federal_territories_of_Malaysia\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Australian_Monarchist_League\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Monarchism\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Figurehead\n", - "494\n", - "494\n", - "494\n", - "494\n", - "494\n", - "494\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/OCLC\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Vernon_Bogdanor\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Parliamentary_Affairs\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Digital_object_identifier\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Oxford_University_Press\n", - "494\n", - "494\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/G._W._F._Hegel\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Cambridge_University_Press\n", - "494\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Digital_object_identifier\n", - "494\n", - "494\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Baron_de_Montesquieu\n", - "494\n", - "494\n", - "494\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/John_Locke\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Yale_University_Press\n", - "494\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Integrated_Authority_File\n", - "356\n", - "356\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Main_Page\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Main_Page\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Charles_II_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Order_of_the_Garter#Habit_and_insignia\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/John_Michael_Wright\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/King_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/List_of_Scottish_monarchs\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/List_of_Irish_monarchs\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Style_of_the_British_sovereign#Styles_of_English_and_Scottish_sovereigns\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Coronation\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Charles_I_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/James_II_%26_VII\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/King_of_Scotland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Charles_I_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Old_Style_and_New_Style_dates\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/St_James%27s_Palace\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Old_Style_and_New_Style_dates\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Whitehall_Palace\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Westminster_Abbey\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Catherine_of_Braganza\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/James,_Duke_of_Monmouth\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Charles_FitzCharles,_1st_Earl_of_Plymouth\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Charles_FitzRoy,_2nd_Duke_of_Cleveland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Charlotte_Lee,_Countess_of_Lichfield\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Henry_FitzRoy,_1st_Duke_of_Grafton\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/George_FitzRoy,_1st_Duke_of_Northumberland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Charles_Beauclerk,_1st_Duke_of_St_Albans\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Charles_Lennox,_1st_Duke_of_Richmond\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Dynasty\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/House_of_Stuart\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Charles_I_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Henrietta_Maria_of_France\n", - "548\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Kingdom_of_Scotland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Kingdom_of_Ireland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Restoration_(1660)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Charles_I_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Charles_I_of_England#Execution\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Palace_of_Whitehall\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/English_Civil_War\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Parliament_of_Scotland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Interregnum_(England)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Commonwealth_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Oliver_Cromwell\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Battle_of_Worcester\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Escape_of_Charles_II\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Dutch_Republic\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Spanish_Netherlands\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/English_Restoration\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Cavalier_Parliament\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Clarendon_Code\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Established_Church\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Church_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Second_Anglo-Dutch_War\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Treaty_of_Dover\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Louis_XIV_of_France\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Third_Anglo-Dutch_War\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Freedom_of_religion\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Dissenter\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Royal_Declaration_of_Indulgence\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/English_Parliament\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Titus_Oates\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Popish_Plot\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Exclusion_Crisis\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/James_II_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/British_Whig_Party\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Tory\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Rye_House_Plot\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Roman_Catholic_Church\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Puritans\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Catherine_of_Braganza\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Justus_van_Egmont\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/William_Dobson\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/St_James%27s_Palace\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Charles_I_of_England\n", - "548\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Kingdom_of_Scotland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Kingdom_of_Ireland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Henrietta_Maria_of_France\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Louis_XIII_of_France\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Church_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Presbyterianism\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Catholic_Church\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Chapel_Royal\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Bishop_of_London\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/William_Laud\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Edward_Sackville,_4th_Earl_of_Dorset#Family\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Marie_de%27_Medici\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Duke_of_Cornwall\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Duke_of_Rothesay\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Prince_of_Wales\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Roundhead\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Puritan\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/English_Civil_War\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Battle_of_Edgehill\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/West_Country\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Falmouth,_Cornwall\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Pendennis_Castle\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Isles_of_Scilly\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Jersey\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Louis_XIV_of_France\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Second_English_Civil_War\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/The_Hague\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Mary,_Princess_Royal_and_Princess_of_Orange\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/William_II,_Prince_of_Orange\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Cavalier\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Engager\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/James_Hamilton,_1st_Duke_of_Hamilton\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Battle_of_Preston_(1648)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Lucy_Walter\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/James_Scott,_1st_Duke_of_Monmouth\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Duke_of_Monmouth\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "0\n", - "PAGE HAS NO LINKS: /wiki/Duke_of_Buccleuch\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Covenanter\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Parliament_of_Scotland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Mercat_Cross,_Edinburgh\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/James_Graham,_1st_Marquess_of_Montrose\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Orkney_Islands\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Treaty_of_Breda_(1650)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Breda\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Solemn_League_and_Covenant\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Presbyterian_church_governance\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Episcopy\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Philippe_de_Champaigne\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Battle_of_Dunbar_(1650)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Oliver_Cromwell\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Scone_Abbey\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Archibald_Campbell,_1st_Marquess_of_Argyll\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Battle_of_Worcester\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Royal_Oak_(tree)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Boscobel_House\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Escape_of_Charles_II\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Normandy\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Pound_sterling\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Instrument_of_Government\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Lord_Protector#Cromwellian_Commonwealth\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/British_Isles\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Stuart_family\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Dutch_Republic\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Southern_Netherlands\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Treaty_of_Brussels_(1656)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Treaty_of_Paris_(1657)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/James_II_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Battle_of_the_Dunes_(1658)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Restoration_(1660)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Richard_Cromwell\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Rump_Parliament\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/George_Monck\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/City_of_London\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Long_Parliament\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Pride%27s_Purge\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Parliament_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Convention_Parliament_(1660)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Declaration_of_Breda\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Breda\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Irish_Convention_(1660)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Lieve_Verschuier\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Scheveningen\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Dover\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Act_of_Indemnity_and_Oblivion\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/List_of_regicides_of_Charles_I\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Hanged,_drawn_and_quartered\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Oliver_Cromwell\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Henry_Ireton\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/John_Bradshaw_(Judge)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Posthumous_execution\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Royal_household\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Chimney_money\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Henry_Stuart,_Duke_of_Gloucester\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Mary,_Princess_Royal_and_Princess_of_Orange\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Smallpox\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Anne_Hyde\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Lord_Chancellor\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Edward_Hyde,_1st_Earl_of_Clarendon\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/James_II_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Earl_of_Clarendon\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Westminster_Abbey\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Coronation_of_the_British_monarch\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Cavalier_Parliament\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Non-conformist\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Church_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Corporation_Act_1661\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Act_of_Uniformity_1662\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Book_of_Common_Prayer\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Conventicle_Act_1664\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Five_Mile_Act_1665\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Puritan\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/English_Interregnum\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Oliver_Cromwell\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Restoration_comedy\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Restoration_literature\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Libertine\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/John_Wilmot,_2nd_Earl_of_Rochester\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Great_Plague_of_London\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Salisbury\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Oxford\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Great_Fire_of_London\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Pudding_Lane\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/St_Paul%27s_Cathedral\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Robert_Hubert\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Portuguese_Restoration_War\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Dynastic_union\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Treaty_of_the_Pyrenees\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Catherine_of_Braganza\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Luisa_of_Medina-Sidonia\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Dowry\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Tangier\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Seven_islands_of_Bombay\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/British_Empire\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Brazil\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/East_Indies\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Portsmouth\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Anglican\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Sale_of_Dunkirk\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Louis_XIV_of_France\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/John_Roettier\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Second_Dutch_War\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Navigation_Acts\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Dutch_Republic\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/First_Dutch_War\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/States_General_of_the_Netherlands\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Dutch_Gift\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Second_Dutch_War\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/New_Amsterdam\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Battle_of_Lowestoft\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Raid_on_the_Medway\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/River_Thames\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/HMS_Royal_Charles_(1655)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Treaty_of_Breda_(1667)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Edward_Hyde,_1st_Earl_of_Clarendon\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/High_treason\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Acronym\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Cabal\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Thomas_Clifford,_1st_Baron_Clifford\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Henry_Bennet,_1st_Earl_of_Arlington\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/George_Villiers,_2nd_Duke_of_Buckingham\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Anthony_Ashley_Cooper,_1st_Earl_of_Shaftesbury\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/John_Maitland,_1st_Duke_of_Lauderdale\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/War_of_Devolution\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Triple_Alliance_(1668)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Treaty_of_Dover\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/East_India_Company\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Criminal_jurisdiction\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Bombay\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/English_Tangier\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Hudson_Bay\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Hudson%27s_Bay_Company\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Rupert%27s_Land\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Prince_Rupert_of_the_Rhine\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Royal_Declaration_of_Indulgence\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Penal_law_(Britain)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Third_Anglo-Dutch_War\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Test_Act\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Eucharist\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Superstition\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Idolatry\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Thomas_Osborne,_1st_Duke_of_Leeds\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Pineapple\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Hendrick_Danckerts\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Miscarriage\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Stillbirth\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Heir_presumptive\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Mary_II_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/William_III_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Titus_Oates\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Society_of_Jesus\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Popish_Plot\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/High_treason\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Louis_XIV_of_France\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Lord_High_Treasurer\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/House_of_Lords\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Tower_of_London\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Anthony_Ashley_Cooper,_1st_Earl_of_Shaftesbury\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Exclusion_Bill\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Succession_to_the_British_throne\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Duke_of_Monmouth\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Tory\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/British_Whig_Party\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/John_Riley_(painter)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Rye_House_Plot\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Newmarket,_Suffolk\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Arthur_Capell,_1st_Earl_of_Essex\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Algernon_Sydney\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/William_Russell,_Lord_Russell\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Apoplexy\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Whitehall_Palace\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Uremia\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Bloodletting\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Cupping_therapy\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Louise_de_K%C3%A9rouaille,_Duchess_of_Portsmouth\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "0\n", - "PAGE HAS NO LINKS: /wiki/Nell_Gwyn\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Westminster_Abbey\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/James_II_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Parliament_Square,_Edinburgh\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Ronald_Hutton\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Hilaire_Belloc\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Barbara_Palmer,_1st_Duchess_of_Cleveland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Duke_of_Cleveland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Moll_Davis\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Nell_Gwyn\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Elizabeth_Killigrew,_Viscountess_Shannon\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Catherine_Pegge\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Lucy_Walter\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Louise_de_K%C3%A9rouaille,_Duchess_of_Portsmouth\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Duke_of_Buccleuch\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Duke_of_Richmond\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Duke_of_Grafton\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Duke_of_St_Albans\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Diana,_Princess_of_Wales\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Henry_FitzRoy,_1st_Duke_of_Grafton\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Charles_Lennox,_1st_Duke_of_Richmond\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Prince_William,_Duke_of_Cambridge\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/James_Scott,_1st_Duke_of_Monmouth\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Battle_of_Sedgemoor\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Glorious_Revolution\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Grinling_Gibbons\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Royal_Hospital_Chelsea\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Despotism\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/John_Evelyn\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/John_Wilmot,_2nd_Earl_of_Rochester\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Royal_Observatory,_Greenwich\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Royal_Society\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Robert_Hooke\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Robert_Boyle\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Isaac_Newton\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Christopher_Wren\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Great_Fire_of_London\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Royal_Hospital_Chelsea\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/English_Restoration\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Oak_Apple_Day\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Soho_Square\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Gloucester\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Lichfield_Cathedral\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Cultural_depictions_of_Charles_II_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Charleston,_South_Carolina\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/South_Kingstown,_Rhode_Island\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Style_(manner_of_address)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/List_of_monarchs_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/List_of_Monarchs_of_Scotland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/English_Kings_of_France\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Kingdom_of_Ireland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Fidei_defensor\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/English_claims_to_the_French_throne\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Edward_III_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Order_of_the_Garter\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Royal_coat_of_arms_of_the_United_Kingdom\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Label_(heraldry)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Argent\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Quartering_(heraldry)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Azure_(heraldry)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Fleurs-de-lis\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Or_(heraldry)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Gules\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Attitude_(heraldry)#Passant\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Pale_(heraldry)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Royal_Arms_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Rampant\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Tressure\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Royal_coat_of_arms_of_Scotland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Coat_of_arms_of_Ireland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Descendants_of_Charles_II_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/James_de_la_Cloche\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Lucy_Walter\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/James_Scott,_1st_Duke_of_Monmouth\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Duke_of_Monmouth\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Duke_of_Buccleuch\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Sarah,_Duchess_of_York\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Elizabeth_Killigrew,_Viscountess_Shannon\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Robert_Killigrew\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Francis_Boyle,_1st_Viscount_Shannon\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Charlotte_FitzRoy,_Countess_of_Yarmouth\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/William_Paston,_2nd_Earl_of_Yarmouth\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Catherine_Pegge\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Charles_FitzCharles,_1st_Earl_of_Plymouth\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Earl_of_Plymouth\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Catherine_FitzCharles\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Barbara_Palmer,_1st_Duchess_of_Cleveland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Roger_Palmer,_1st_Earl_of_Castlemaine\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Duke_of_Cleveland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Anne_Lennard,_Countess_of_Sussex\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Thomas_Lennard,_1st_Earl_of_Sussex\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Sarah,_Duchess_of_York\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Charles_FitzRoy,_2nd_Duke_of_Cleveland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Duke_of_Southampton\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Duke_of_Cleveland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Henry_FitzRoy,_1st_Duke_of_Grafton\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Earl_of_Euston\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Duke_of_Grafton\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Diana,_Princess_of_Wales\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Charlotte_Lee,_Countess_of_Lichfield\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Edward_Lee,_1st_Earl_of_Lichfield\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/George_FitzRoy,_1st_Duke_of_Northumberland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Earl_of_Northumberland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Duke_of_Northumberland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Lady_Barbara_FitzRoy\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/John_Churchill\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Dukes_of_Marlborough\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Nell_Gwyn\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Charles_Beauclerk,_1st_Duke_of_St_Albans\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Duke_of_St_Albans\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Louise_de_K%C3%A9rouaille,_Duchess_of_Portsmouth\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Duke_of_Portsmouth\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Charles_Lennox,_1st_Duke_of_Richmond\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Duke_of_Richmond\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Duke_of_Lennox\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Diana,_Princess_of_Wales\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Camilla,_Duchess_of_Cornwall\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Sarah,_Duchess_of_York\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Moll_Davis\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Lady_Mary_Tudor\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Edward_Radclyffe,_2nd_Earl_of_Derwentwater\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Henry_Graham_(of_Levens)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Hortense_Mancini\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Winifred_Wells\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Elizabeth,_Countess_of_Falmouth\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Charles_Berkeley,_1st_Earl_of_Falmouth\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Earl_of_Kildare\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Henry_Stuart,_Lord_Darnley\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/James_VI_and_I\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Mary,_Queen_of_Scots\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Charles_I_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Frederick_II_of_Denmark\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Anne_of_Denmark\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Sophie_of_Mecklenburg-G%C3%BCstrow\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Antoine_of_Navarre\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Henry_IV_of_France\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Jeanne_III_of_Navarre\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Henrietta_Maria_of_France\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Francesco_I_de%27_Medici,_Grand_Duke_of_Tuscany\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Marie_de%27_Medici\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Joanna_of_Austria,_Grand_Duchess_of_Tuscany\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Battle_of_Worcester\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Julian_calendar\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Old_Style_and_New_Style_dates\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Rijksmuseum_Amsterdam\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Samuel_Pepys\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Thomas_Hearne_(antiquarian)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Elias_Ashmole\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/British_Medical_Journal\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Digital_object_identifier\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/JSTOR\n", - "494\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Encyclop%C3%A6dia_Britannica_Eleventh_Edition\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/George_Cokayne\n", - "494\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Antonia_Fraser\n", - "494\n", - "494\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Hudson%27s_Bay_Company\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/David_Hume\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Ronald_Hutton\n", - "494\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Ji%C5%99%C3%AD_Louda\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Michael_Maclagan\n", - "494\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Lewis_Melville\n", - "494\n", - "494\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Hesketh_Pearson\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Dictionary_of_National_Biography#Oxford_Dictionary_of_National_Biography\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "0\n", - "PAGE HAS NO LINKS: /wiki/Digital_object_identifier\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Dictionary_of_National_Biography#Oxford_Dictionary_of_National_Biography\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Digital_object_identifier\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Alison_Weir_(historian)\n", - "494\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Dictionary_of_National_Biography#Oxford_Dictionary_of_National_Biography\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Digital_object_identifier\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/JSTOR\n", - "494\n", - "494\n", - "494\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/John_Phillipps_Kenyon\n", - "494\n", - "494\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Wikisource\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/The_National_Archives_(United_Kingdom)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/House_of_Stuart\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Charles_I_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/King_of_Scotland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/English_Interregnum\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Charles_I_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/King_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/King_of_Ireland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/James_II_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/King_of_Scotland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/List_of_British_monarchs\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Charles_I_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Duke_of_Cornwall\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Duke_of_Rothesay\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/James_Francis_Edward\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Prince_of_Wales\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/List_of_English_monarchs\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/List_of_Scottish_monarchs\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/List_of_British_monarchs\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/%C3%86thelstan\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Edmund_I\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Eadred\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Eadwig\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Edgar_the_Peaceful\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Edward_the_Martyr\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/%C3%86thelred_the_Unready\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Sweyn_Forkbeard\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Edmund_Ironside\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Cnut_the_Great\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Harold_Harefoot\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Harthacnut\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Edward_the_Confessor\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Harold_Godwinson\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Edgar_%C3%86theling\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/William_the_Conqueror\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/William_II_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Henry_I_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Stephen,_King_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Empress_Matilda\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Henry_II_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Henry_the_Young_King\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Richard_I_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/John,_King_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Henry_III_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Edward_I_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Edward_II_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Edward_III_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Richard_II_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Henry_IV_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Henry_V_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Henry_VI_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Edward_IV_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Edward_V_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Richard_III_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Henry_VII_of_England\n", - "559\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Edward_VI_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Lady_Jane_Grey\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Mary_I_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Philip_II_of_Spain\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Elizabeth_I_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Kenneth_MacAlpin\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Domnall_mac_Ailp%C3%ADn\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Causant%C3%ADn_mac_Cin%C3%A1eda\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/%C3%81ed_mac_Cin%C3%A1eda\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Giric\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Eochaid,_son_of_Rhun\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Donald_II_of_Scotland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Constantine_II_of_Scotland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Malcolm_I_of_Scotland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Indulf\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Dub,_King_of_Scotland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Cuil%C3%A9n\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Amla%C3%ADb,_King_of_Scotland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Kenneth_II_of_Scotland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Constantine_III_of_Scotland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Kenneth_III_of_Scotland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Malcolm_II_of_Scotland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Duncan_I_of_Scotland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Macbeth,_King_of_Scotland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Lulach\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Malcolm_III_of_Scotland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Donald_III_of_Scotland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Duncan_II_of_Scotland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Donald_III_of_Scotland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Edgar,_King_of_Scotland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Alexander_I_of_Scotland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/David_I_of_Scotland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Malcolm_IV_of_Scotland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/William_the_Lion\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Alexander_II_of_Scotland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Alexander_III_of_Scotland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Margaret,_Maid_of_Norway\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Guardian_of_Scotland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/John_Balliol\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Guardian_of_Scotland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Robert_the_Bruce\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/David_II_of_Scotland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Edward_Balliol\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Robert_II_of_Scotland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Robert_III_of_Scotland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/James_I_of_Scotland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/James_II_of_Scotland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/James_III_of_Scotland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/James_IV_of_Scotland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/James_V_of_Scotland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Mary,_Queen_of_Scots\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/James_VI_and_I\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Union_of_the_Crowns\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/James_VI_and_I\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Charles_I_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Commonwealth_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/James_II_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/William_III_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Mary_II_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Anne,_Queen_of_Great_Britain\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Acts_of_Union_1707\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Anne,_Queen_of_Great_Britain\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/George_I_of_Great_Britain\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/George_II_of_Great_Britain\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/George_III_of_the_United_Kingdom\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/George_IV_of_the_United_Kingdom\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/William_IV_of_the_United_Kingdom\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Queen_Victoria\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Edward_VII\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/George_V\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Edward_VIII\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/George_VI\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Elizabeth_II\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Duke_of_Cornwall\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Edward_the_Black_Prince\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Richard_II_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Henry_V_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Henry_VI_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Edward_of_Westminster,_Prince_of_Wales\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Richard_of_York,_3rd_Duke_of_York\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Edward_V_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Edward_of_Middleham,_Prince_of_Wales\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Arthur,_Prince_of_Wales\n", - "559\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Henry,_Duke_of_Cornwall\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Henry,_Duke_of_Cornwall\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Henry,_Duke_of_Cornwall\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Edward_VI_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Henry_Frederick,_Prince_of_Wales\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Charles_I_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/James_Francis_Edward_Stuart\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/George_II_of_Great_Britain\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Frederick,_Prince_of_Wales\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/George_IV_of_the_United_Kingdom\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Edward_VII\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/George_V\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Edward_VIII\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Charles,_Prince_of_Wales\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Duke_of_Rothesay\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/David_Stewart,_Duke_of_Rothesay\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/James_I_of_Scotland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Alexander_Stewart,_Duke_of_Rothesay\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/James_II_of_Scotland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/James_III_of_Scotland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/James_IV_of_Scotland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/James,_Duke_of_Rothesay_(born_1507)\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "0\n", - "PAGE HAS NO LINKS: /wiki/Arthur_Stewart,_Duke_of_Rothesay\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/James_V_of_Scotland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/James,_Duke_of_Rothesay_(born_1540)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/James_VI_and_I\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Henry_Frederick,_Prince_of_Wales\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Charles_I_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/James_Francis_Edward_Stuart\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/George_II_of_Great_Britain\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Frederick,_Prince_of_Wales\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/George_IV_of_the_United_Kingdom\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Edward_VII\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/George_V\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Edward_VIII\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Charles,_Prince_of_Wales\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Virtual_International_Authority_File\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Library_of_Congress_Control_Number\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/International_Standard_Name_Identifier\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Integrated_Authority_File\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/LIBRIS\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Syst%C3%A8me_universitaire_de_documentation\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Biblioth%C3%A8que_nationale_de_France\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/National_Library_of_Australia\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Institute_for_Advanced_Technology_in_the_Humanities\n", - "486\n", - "486\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Main_Page\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Main_Page\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/James_II_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/James_II_(disambiguation)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Peter_Lely\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/King_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/List_of_Scottish_monarchs\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/List_of_Irish_monarchs\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Style_of_the_British_sovereign#Styles_of_English_and_Scottish_sovereigns\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Coronation\n", - "487\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/William_III_%26_II\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Mary_II\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Old_Style_and_New_Style_dates\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/St._James%27s_Palace\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Old_Style_and_New_Style_dates\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Ch%C3%A2teau_de_Saint-Germain-en-Laye\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Kingdom_of_France\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Anne_Hyde\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Mary_of_Modena\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Mary_II_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Anne,_Queen_of_Great_Britain\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/James_Francis_Edward_Stuart\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Louisa_Maria_Teresa_Stuart\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Henrietta_FitzJames\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/James_FitzJames,_1st_Duke_of_Berwick\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Henry_FitzJames\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Dynasty\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/House_of_Stuart\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Charles_I_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Henrietta_Maria_of_France\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Roman_Catholicism_in_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Anglicanism\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Old_Style_and_New_Style_dates\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/List_of_English_monarchs\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/List_of_Irish_monarchs\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/List_of_Scottish_monarchs\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Glorious_Revolution\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Roman_Catholicism\n", - "548\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Kingdom_of_Scotland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Kingdom_of_Ireland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Charles_I_of_England\n", - "487\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Absolutism_(European_history)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/James_Francis_Edward\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/William_III_of_Orange\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Dutch_Republic\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Mary_II_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Jacobitism\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Williamite\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Battle_of_the_Boyne\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Kingdom_of_France\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Pretender\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/King_Louis_XIV\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Parliament_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Religious_liberty\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Anglican\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Bill_of_Rights_1689\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Charles_I_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Sir_Peter_Lely\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Charles_I_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Henrietta_Maria_of_France\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/St._James%27s_Palace\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/William_Laud\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Church_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Archbishop_of_Canterbury\n", - "487\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/George_Villiers,_1st_Duke_of_Buckingham\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/George_Villiers,_2nd_Duke_of_Buckingham\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Lord_High_Admiral_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Restoration_(England)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Duke_of_York\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Order_of_the_Garter\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/English_Parliament\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/English_Civil_War\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Battle_of_Edgehill\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Oxford\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Royalist\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Master_of_Arts\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Siege_of_Oxford\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/St._James%27s_Palace\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Joseph_Bampfield\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/The_Hague\n", - "487\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Parliament_of_Scotland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Parliament_of_Ireland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/King_of_Scotland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Scone,_Perth_and_Kinross\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Jersey\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Crown_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Henri_de_la_Tour_d%27Auvergne,_Vicomte_de_Turenne\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Fronde\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Oliver_Cromwell\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Bruges\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Henry_Stuart,_Duke_of_Gloucester\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Louis_II_de_Bourbon,_Prince_de_Cond%C3%A9\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Battle_of_the_Dunes_(1658)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Archbishop_Peter_Talbot\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Richard_Talbot,_1st_Earl_of_Tyrconnell\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Treaty_of_the_Pyrenees\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Richard_Cromwell\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Lord_Protector\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Commonwealth_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Heir_presumptive\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Duke_of_Albany\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Anne_Hyde\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Edward_Hyde,_1st_Earl_of_Clarendon\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/English_Restoration\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Commoner\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Mary_II_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Anne,_Queen_of_Great_Britain\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Samuel_Pepys\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Arabella_Churchill_(royal_mistress)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Catherine_Sedley,_Countess_of_Dorchester\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/John_Riley_(painter)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Lord_High_Admiral_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Portsmouth\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Lord_Warden_of_the_Cinque_Ports\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Royal_Navy\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Second_Anglo-Dutch_War\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Third_Anglo-Dutch_War\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Raid_on_the_Medway\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Delaware_River\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Connecticut_River\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/New_Netherland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/New_Amsterdam\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Province_of_New_York\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/City_of_New_York\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/George_Carteret\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/John_Berkeley,_1st_Baron_Berkeley_of_Stratton\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Fort_Orange\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Hudson_River\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Albany,_New_York\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Hudson%27s_Bay_Company\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Royal_African_Company\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Slave_trade\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Great_Fire_of_London\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Thomas_Bloodworth\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Mary_of_Modena\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Eucharist\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/John_Churchill,_1st_Duke_of_Marlborough\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/George_Legge,_1st_Baron_Dartmouth\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Huguenot\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Louis_de_Duras,_2nd_Earl_of_Feversham\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Test_Act\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Transubstantiation\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Church_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Mary_of_Modena\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Proxy_marriage\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "0\n", - "PAGE HAS NO LINKS: /wiki/Nathaniel_Crew,_3rd_Baron_Crew\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Bishop_of_Oxford\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Pope_Clement_X\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/William_III_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Mary,_Princess_Royal_and_Princess_of_Orange\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Catherine_of_Braganza\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Defrocked\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Titus_Oates\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Popish_Plot\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/James_Scott,_1st_Duke_of_Monmouth\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Anthony_Ashley-Cooper,_1st_Earl_of_Shaftesbury\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/James_Scott,_1st_Duke_of_Monmouth\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Exclusion_Bill\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/List_of_Parliaments_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/British_Whig_Party\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Tory\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Brussels\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Holyrood_Palace\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Thomas_Osborne,_1st_Duke_of_Leeds\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Republicanism\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Commonwealth_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Rye_House_Plot\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/British_Whig_Party\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Arthur_Capell,_1st_Earl_of_Essex\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/James_Scott,_1st_Duke_of_Monmouth\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Her_Majesty%27s_Most_Honourable_Privy_Council\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Apoplexy\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Westminster_Abbey\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/List_of_Parliaments_of_England#Parliament_of_James_II\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Loyal_Parliament\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Henry_Hyde,_2nd_Earl_of_Clarendon\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Laurence_Hyde,_1st_Earl_of_Rochester\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/George_Savile,_1st_Marquess_of_Halifax\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Tonnage_and_poundage\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Monmouth_Rebellion\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Argyll%27s_Rising\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Monmouth_Rebellion\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/James_Scott,_1st_Duke_of_Monmouth\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Archibald_Campbell,_9th_Earl_of_Argyll\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Earl_of_Argyll\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Dutch_Republic\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/William_III_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Clan_Campbell\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Inchinnan\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Lyme_Regis\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Battle_of_Sedgemoor\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Tower_of_London\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/George_Jeffreys,_1st_Baron_Jeffreys\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Penal_transportation\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Indentured_servant#Caribbean\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/West_Indies\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Bloody_Assizes\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Standing_army\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Royal_Prerogative\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Parliamentary_session\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Royal_sign-manual\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Laurence_Hyde,_1st_Earl_of_Rochester\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Repeal\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Penal_law_(British)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Papal_nuncio\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Ferdinando_d%27Adda\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Mary_I_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Society_of_Jesus\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Edward_Petre\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Secretary_of_State_(England)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Robert_Spencer,_2nd_Earl_of_Sunderland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Heneage_Finch,_1st_Earl_of_Aylesford\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Declaration_of_Indulgence\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/English_Dissenters\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Statue_of_James_II,_Trafalgar_Square\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Trafalgar_Square\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Supreme_Governor_of_the_Church_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/University_of_Oxford\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Christ_Church,_Oxford\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/University_College,_Oxford\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Magdalen_College,_Oxford\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Anthony_Farmer\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Lord_Lieutenant\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Livery_companies\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Commission_of_the_Peace\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Baptists\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Quakers\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Baptists\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Congregationalists\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Presbyterians\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Catholics\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Anglicans\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Writ_of_election\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Glorious_Revolution\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/William_III_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Seven_Bishops\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/William_Sancroft\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Seditious_libel\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/James_Francis_Edward_Stuart\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Immortal_Seven\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/John_Churchill,_1st_Duke_of_Marlborough\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/List_of_deserters_from_James_II_to_William_of_Orange\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Anne,_Queen_of_Great_Britain\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Great_Seal_of_the_Realm\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/River_Thames\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Kent\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Convention_Parliament_(1689)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Abdication\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Parliament_of_Scotland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/English_Bill_of_Rights\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Williamite_War_in_Ireland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Patriot_Parliament\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Bill_of_attainder#The_Great_Act_of_Attainder\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Battle_of_the_Boyne\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Kinsale\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Breand%C3%A1n_%C3%93_Buachalla\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/%C3%89amonn_%C3%93_Ciardha\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Ch%C3%A2teau_de_Saint-Germain-en-Laye\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Saint-Germain-en-Laye\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/John_Drummond,_1st_Earl_of_Melfort\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Louisa_Maria_Teresa_Stuart\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Jacobite_assassination_plot_1696\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Royal_elections_in_Poland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Polish-Lithuanian_Commonwealth\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Penitent\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Brain_haemorrhage\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Saint-Germain-en-Laye\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Chaillot\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Scots_College_(Paris)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Saint-Omer\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Sarcophagus\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Benedictine\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Henri-Emmanuel_de_Roquette\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/French_Revolution\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Archbishop_of_Paris\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/James_Francis_Edward_Stuart\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Anne,_Queen_of_Great_Britain\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Act_of_Settlement_1701\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Sophia_of_Hanover\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/James_I_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Elizabeth_of_Bohemia\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Charles_I_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/George_I_of_Great_Britain\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/James_Francis_Edward_Stuart\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Jacobitism\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Jacobite_rising_of_1715\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Jacobite_rising_of_1745\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Charles_Edward_Stuart\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Henry_Benedict_Stuart\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Dean_of_the_College_of_Cardinals\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Jacobite_succession\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Thomas_Babington_Macaulay,_1st_Baron_Macaulay\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Whig_history\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Hilaire_Belloc\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Apologetics\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Whig_history\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Thomas_Babington_Macaulay,_1st_Baron_Macaulay\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/G._M._Trevelyan\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/David_Ogg_(historian)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/A._W._Ward\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Dictionary_of_National_Biography\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Hilaire_Belloc\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Maurice_Ashley_(historian)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/W._A._Speck\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Oxford_Dictionary_of_National_Biography\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Timothy_J._G._Harris\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Steven_Pincus\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Scott_Sowerby\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Half_crown_(British_coin)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Jacobitism\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/List_of_monarchs_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/List_of_Monarchs_of_Scotland\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "0\n", - "PAGE HAS NO LINKS: /wiki/English_Kings_of_France\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Kingdom_of_Ireland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Fidei_defensor\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/English_claims_to_the_French_throne\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Edward_III_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/George_III_of_the_United_Kingdom\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Duke_of_Normandy\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Order_of_the_Garter\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Royal_coat_of_arms_of_the_United_Kingdom\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Label_(heraldry)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Ermine_(heraldry)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Quartering_(heraldry)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Azure_(heraldry)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Fleurs-de-lis\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Or_(heraldry)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Gules\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Attitude_(heraldry)#Passant\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Pale_(heraldry)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Coat_of_arms_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Rampant\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Tressure\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Royal_coat_of_arms_of_Scotland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Argent\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Coat_of_arms_of_Ireland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Monarchy_of_the_United_Kingdom\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/House_of_Stuart\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Mary_II_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Anne,_Queen_of_Great_Britain\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/James_Francis_Edward_Stuart\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Louisa_Maria_Teresa_Stuart\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Charles_Edward_Stuart\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Henry_Benedict_Stuart\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Charlotte_Stuart,_Duchess_of_Albany\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Anne_Hyde\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Charles_Stuart,_Duke_of_Cambridge_(1660%E2%80%931661)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Mary_II_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/William_III_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/James_Stuart,_Duke_of_Cambridge\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Anne,_Queen_of_Great_Britain\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Prince_George_of_Denmark\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Charles_Stuart,_Duke_of_Kendal\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Edgar_Stuart,_Duke_of_Cambridge\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Mary_of_Modena\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Isabel_Stuart\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Westminster_Abbey\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Charles_Stuart,_Duke_of_Cambridge_(born_1677)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/James_Francis_Edward_Stuart\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Maria_Clementina_Sobieska\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Louisa_Maria_Teresa_Stuart\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Arabella_Churchill_(royal_mistress)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Henrietta_FitzJames\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Henry_Waldegrave,_1st_Baron_Waldegrave\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Piers_Butler,_3rd_Viscount_Galmoye\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/James_FitzJames,_1st_Duke_of_Berwick\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Henry_FitzJames,_1st_Duke_of_Albemarle\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Catherine_Sedley\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/James_Annesley,_3rd_Earl_of_Anglesey\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/John_Sheffield,_1st_Duke_of_Buckingham_and_Normanby\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Henry_Stuart,_Lord_Darnley\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/James_VI_and_I\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Mary,_Queen_of_Scots\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Charles_I_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Frederick_II_of_Denmark\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Anne_of_Denmark\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Sophie_of_Mecklenburg-G%C3%BCstrow\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Antoine_of_Navarre\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Henry_IV_of_France\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Jeanne_III_of_Navarre\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Henrietta_Maria_of_France\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Francesco_I_de%27_Medici,_Grand_Duke_of_Tuscany\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Marie_de%27_Medici\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Joanna_of_Austria,_Grand_Duchess_of_Tuscany\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/New_Style\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/John_Somers,_1st_Baron_Somers\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/New_Style\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/English_Illustrated_Magazine\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/The_London_Gazette\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Convention_Parliament_(1689)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Parliament_of_Scotland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Alison_Weir\n", - "494\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/George_Edward_Cokayne\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Vicary_Gibbs_(St_Albans_MP)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/The_Complete_Peerage\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Samuel_Pepys\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Gilbert_Burnet\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/King_of_Scotland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Covenanter\n", - "494\n", - "494\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Parish_register\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Saint-Germain-en-Laye\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Dictionary_of_National_Biography\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Maurice_Ashley_(historian)\n", - "494\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Hilaire_Belloc\n", - "494\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Tom_Devine\n", - "494\n", - "494\n", - "494\n", - "494\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/John_Phillipps_Kenyon\n", - "494\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Ji%C5%99%C3%AD_Louda\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Michael_Maclagan\n", - "494\n", - "494\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Thomas_Babington_Macaulay,_1st_Baron_Macaulay\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/The_History_of_England_from_the_Accession_of_James_the_Second\n", - "494\n", - "494\n", - "494\n", - "494\n", - "494\n", - "494\n", - "494\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Digital_object_identifier\n", - "494\n", - "494\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Digital_object_identifier\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/National_Portrait_Gallery,_London\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/House_of_Stuart\n", - "487\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/List_of_English_monarchs\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/King_of_Scotland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/King_of_Ireland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/William_III_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Mary_II_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Heneage_Finch,_3rd_Earl_of_Winchilsea\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Lord_Warden_of_the_Cinque_Ports\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Francis_Cottington,_1st_Baron_Cottington\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Lord_High_Admiral_of_England\n", - "487\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Charles_Stewart,_6th_Duke_of_Lennox\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Lord_High_Admiral_of_Scotland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/William_Hamilton,_Duke_of_Hamilton\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/John_Maitland,_1st_Duke_of_Lauderdale\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Lord_High_Commissioner_to_the_Parliament_of_Scotland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/William_Douglas,_1st_Duke_of_Queensberry\n", - "487\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Admiralty\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/William_III_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Pretender\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Glorious_Revolution\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Jacobite_succession\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/James_Francis_Edward_Stuart\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/List_of_English_monarchs\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/List_of_Scottish_monarchs\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/List_of_British_monarchs\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/%C3%86thelstan\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Edmund_I\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Eadred\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Eadwig\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Edgar_the_Peaceful\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Edward_the_Martyr\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/%C3%86thelred_the_Unready\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Sweyn_Forkbeard\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Edmund_Ironside\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Cnut_the_Great\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Harold_Harefoot\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Harthacnut\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Edward_the_Confessor\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Harold_Godwinson\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Edgar_%C3%86theling\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/William_the_Conqueror\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/William_II_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Henry_I_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Stephen,_King_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Empress_Matilda\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Henry_II_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Henry_the_Young_King\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Richard_I_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/John,_King_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Henry_III_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Edward_I_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Edward_II_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Edward_III_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Richard_II_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Henry_IV_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Henry_V_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Henry_VI_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Edward_IV_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Edward_V_of_England\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "0\n", - "PAGE HAS NO LINKS: /wiki/Richard_III_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Henry_VII_of_England\n", - "559\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Edward_VI_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Lady_Jane_Grey\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Mary_I_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Philip_II_of_Spain\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Elizabeth_I_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Kenneth_MacAlpin\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Domnall_mac_Ailp%C3%ADn\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Causant%C3%ADn_mac_Cin%C3%A1eda\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/%C3%81ed_mac_Cin%C3%A1eda\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Giric\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Eochaid,_son_of_Rhun\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Donald_II_of_Scotland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Constantine_II_of_Scotland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Malcolm_I_of_Scotland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Indulf\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Dub,_King_of_Scotland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Cuil%C3%A9n\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Amla%C3%ADb,_King_of_Scotland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Kenneth_II_of_Scotland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Constantine_III_of_Scotland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Kenneth_III_of_Scotland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Malcolm_II_of_Scotland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Duncan_I_of_Scotland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Macbeth,_King_of_Scotland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Lulach\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Malcolm_III_of_Scotland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Donald_III_of_Scotland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Duncan_II_of_Scotland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Donald_III_of_Scotland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Edgar,_King_of_Scotland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Alexander_I_of_Scotland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/David_I_of_Scotland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Malcolm_IV_of_Scotland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/William_the_Lion\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Alexander_II_of_Scotland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Alexander_III_of_Scotland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Margaret,_Maid_of_Norway\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Guardian_of_Scotland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/John_Balliol\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Guardian_of_Scotland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Robert_the_Bruce\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/David_II_of_Scotland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Edward_Balliol\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Robert_II_of_Scotland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Robert_III_of_Scotland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/James_I_of_Scotland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/James_II_of_Scotland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/James_III_of_Scotland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/James_IV_of_Scotland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/James_V_of_Scotland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Mary,_Queen_of_Scots\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/James_VI_and_I\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Union_of_the_Crowns\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/James_VI_and_I\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Charles_I_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Commonwealth_of_England\n", - "487\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/William_III_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Mary_II_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Anne,_Queen_of_Great_Britain\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Acts_of_Union_1707\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Anne,_Queen_of_Great_Britain\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/George_I_of_Great_Britain\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/George_II_of_Great_Britain\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/George_III_of_the_United_Kingdom\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/George_IV_of_the_United_Kingdom\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/William_IV_of_the_United_Kingdom\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Queen_Victoria\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Edward_VII\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/George_V\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Edward_VIII\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/George_VI\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Elizabeth_II\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Duke_of_Albany\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Robert_Stewart,_Duke_of_Albany\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Murdoch_Stewart,_Duke_of_Albany\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Alexander_Stewart,_Duke_of_Albany\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/John_Stewart,_Duke_of_Albany\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Henry_Stuart,_Lord_Darnley\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/James_VI_and_I\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Charles_I_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Prince_Leopold,_Duke_of_Albany\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Charles_Edward,_Duke_of_Saxe-Coburg_and_Gotha\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Duke_of_York\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Edmund_of_Langley,_1st_Duke_of_York\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Edward_of_Norwich,_2nd_Duke_of_York\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Richard_of_York,_3rd_Duke_of_York\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Edward_IV_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Richard_of_Shrewsbury,_Duke_of_York\n", - "559\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Charles_I_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Duke_of_York_and_Albany\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/George_V\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/George_VI\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Prince_Andrew,_Duke_of_York\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Virtual_International_Authority_File\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Library_of_Congress_Control_Number\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/International_Standard_Name_Identifier\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Integrated_Authority_File\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/LIBRIS\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Syst%C3%A8me_universitaire_de_documentation\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Biblioth%C3%A8que_nationale_de_France\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Union_List_of_Artist_Names\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Institute_for_Advanced_Technology_in_the_Humanities\n", - "459\n", - "459\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Main_Page\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Main_Page\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/William_III_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/William_III_(disambiguation)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/William_of_Orange_(disambiguation)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Godfrey_Kneller\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/King_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/King_of_Scotland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/King_of_Ireland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Styles_of_English_and_Scottish_sovereigns\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Coronation\n", - "460\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Anne,_Queen_of_Great_Britain\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Mary_II_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/List_of_monarchs_of_the_Netherlands\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/William_II,_Prince_of_Orange\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/William_IV,_Prince_of_Orange\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Principality_of_Orange\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/William_II,_Prince_of_Orange\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/John_William_Friso,_Prince_of_Orange\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Old_Style_and_New_Style_dates\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Binnenhof\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/The_Hague\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Old_Style_and_New_Style_dates\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Kensington_Palace\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Westminster_Abbey\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Mary_II_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Dynasty\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/House_of_Orange-Nassau\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/William_II,_Prince_of_Orange\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Mary,_Princess_Royal_and_Princess_of_Orange\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Protestant\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Dutch_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Prince_of_Orange\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Stadtholder\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Holland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Zeeland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Utrecht_(province)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Gelderland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Overijssel\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Dutch_Republic\n", - "548\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Kingdom_of_Ireland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Kingdom_of_Scotland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Regnal_number\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Northern_Ireland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Principality_of_Orange\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/William_II,_Prince_of_Orange\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Mary,_Princess_Royal_and_Princess_of_Orange\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Charles_I_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Mary_II_of_England\n", - "460\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Protestant\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Catholic\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Louis_XIV_of_France\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Glorious_Revolution\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Brixham\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Battle_of_the_Boyne\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/The_Twelfth\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/House_of_Stuart\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/House_of_Hanover\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/William_II,_Prince_of_Orange\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Mary,_Princess_Royal_and_Princess_of_Orange\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/The_Hague\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Dutch_Republic\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Dutch_language\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "0\n", - "PAGE HAS NO LINKS: /wiki/Stadtholder\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/William_II_of_Orange\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Mary,_Princess_Royal_and_Princess_of_Orange\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Charles_I_of_England\n", - "487\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/King_James_II\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Smallpox\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Principality_of_Orange\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Princess_Royal\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Amalia_of_Solms-Braunfels\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Hoge_Raad_van_Holland_en_Zeeland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Frederick_William,_Elector_of_Brandenburg\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Louise_Henriette_of_Nassau\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Anna_Mackenzie\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Reformed_churches\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Calvinist\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Franciscus_Gomarus\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Gisbertus_Voetius\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Constantijn_Huygens\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Predestination_(Calvinism)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Divine_Providence\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/House_of_Orange-Nassau\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Jan_Davidsz_de_Heem\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Jan_Vermeer_van_Utrecht\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/House_of_Orange-Nassau\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/University_of_Leiden\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Delft\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/William_Bentinck,_1st_Earl_of_Portland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Frederick_Nassau_de_Zuylenstein\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Frederick_Henry_of_Orange\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Grand_Pensionary\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Johan_de_Witt\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Cornelis_de_Graeff\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/States_of_Holland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Smallpox\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Whitehall_Palace\n", - "487\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Orangism_(Netherlands)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Second_Anglo-Dutch_War\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Real_tennis\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Johan_de_Witt\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Gaspar_Fagel\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/First_Stadtholderless_Period\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Oliver_Cromwell\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Treaty_of_Westminster_(1654)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/First_Anglo-Dutch_War\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Act_of_Seclusion\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/English_Restoration\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/English_Commonwealth\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Orangism_(Netherlands)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Captain-General\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Dutch_States_Party\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Pensionary\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Haarlem\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Gaspar_Fagel\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Perpetual_Edict_(1667)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/States_of_Zeeland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Middelburg\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Regenten\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Council_of_State_of_the_Netherlands\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Generality_(Netherlands)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Dutch_guilder\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Calvinism\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Secret_Treaty_of_Dover\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Rump_state\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Gelderland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Dutch_States_Army\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Utrecht_(province)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Holland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/States_General_of_the_Netherlands\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Rampjaar\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Johannes_Voorhout\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Rampjaar\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Franco-Dutch_War\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Third_Anglo-Dutch_War\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Bishopric_of_M%C3%BCnster\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Electorate_of_Cologne\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Battle_of_Solebay\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Dutch_Water_Line\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Louis_XIV_of_France\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Henry_Bennet,_1st_Earl_of_Arlington\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Nieuwerbrug\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Grand_Pensionary\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Cornelis_de_Witt\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Johan_de_Witt#Year_of_Disaster\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Civil_militia\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Naarden\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Hendrik_Verhoeff\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Johan_van_Banchem\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Johan_Kievit\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Massacre_of_Glencoe\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Electorate_of_Brandenburg\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Maastricht\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Charleroi\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Lieutenant-Admiral\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Michiel_de_Ruyter\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Treaty_of_Westminster_(1674)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Overijssel\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Generality_Lands\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Zutphen\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Mary_II_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Mary_II_of_England\n", - "460\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Henry_Compton_(bishop)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Miscarriage\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Elizabeth_Hamilton,_Countess_of_Orkney\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Chambers_of_Reunion\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Edict_of_Nantes\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Huguenot\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Grand_Alliance_(League_of_Augsburg)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Holy_Roman_Empire\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Willem_Wissing\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Peter_Lely\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Exclusion_Bill\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Robert_Spencer,_2nd_Earl_of_Sunderland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Mary_of_Modena\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Open_letter\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Glorious_Revolution\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/James_Thornhill\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Guy_Fawkes_night\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Arthur_Herbert,_1st_Earl_of_Torrington\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/James_Francis_Edward_Stuart\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Seven_bishops\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Declaration_of_Indulgence\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Immortal_Seven\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Invitation_to_William\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Brixham\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Brielle\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/List_of_James_II_deserters_to_William_of_Orange\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/John_Churchill,_1st_Duke_of_Marlborough\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Great_Seal_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Thames\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Martyr\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Thomas_Murray_(artist)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Convention_Parliament_(1689)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/King_consort\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Mary_I_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Philip_II_of_Spain\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Tories_(political_faction)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/House_of_Commons_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Whig_(British_political_party)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/House_of_Lords\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Regent\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Bill_of_Rights_1689\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Heir_apparent\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Westminster_Abbey\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Bishop_of_London\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Henry_Compton_(bishop)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Archbishop_of_Canterbury\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/William_Sancroft\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Estates_of_Scotland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Toleration_Act_1689\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Religious_toleration\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Nonconformists\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Religious_liberty\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Nontrinitarianism\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Bill_of_Rights_1689\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Declaration_of_Right,_1689\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Royal_prerogative\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Right_to_petition\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Standing_army\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Right_to_bear_arms\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Excessive_bail\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Cruel_and_unusual_punishments\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Anne,_Queen_of_Great_Britain\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Divine_right_of_kings\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Jacobitism\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Nonjuring_schism\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Church_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Scottish_Episcopal_Church\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Battle_of_the_Boyne\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Jan_van_Huchtenburg\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Jacobitism\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Williamite_war_in_Ireland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Siege_of_Derry\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Siege_of_Carrickfergus\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Battle_of_the_Boyne\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Godert_de_Ginkell,_1st_Earl_of_Athlone\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Galway\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "0\n", - "PAGE HAS NO LINKS: /wiki/Limerick\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Capitulation_(surrender)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Treaty_of_Limerick\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/House_of_Commons_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Earl_of_Athlone\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Jacobite_rising\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/John_Graham,_1st_Viscount_of_Dundee\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Battle_of_Killiecrankie\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/26th_(Cameronian)_Regiment_of_Foot\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Battle_of_Dunkeld\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Scottish_clan\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Massacre_of_Glencoe\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/John_Dalberg-Acton,_1st_Baron_Acton\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/John_Dalrymple,_1st_Earl_of_Stair\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Darien_scheme\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Crown_(British_coin)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/House_of_Orange-Nassau\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/George_Savile,_1st_Marquess_of_Halifax\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/English_general_election,_1690\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Thomas_Osborne,_1st_Duke_of_Leeds\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Daniel_Finch,_2nd_Earl_of_Nottingham\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Whig_Junto\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Bank_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Bank_of_Amsterdam\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Royal_Charter\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Dutch_Republic\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Bill_of_attainder\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Sir_John_Fenwick,_3rd_Baronet\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Nine_Years%27_War\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Nine_Years%27_War\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Grand_Alliance_(League_of_Augsburg)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Battle_of_La_Hougue\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Treaty_of_Limerick\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Namur_(city)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Spanish_Netherlands\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Battle_of_Landen\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Godfried_Schalcken\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Anglicanism\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/William_Bentinck,_1st_Earl_of_Portland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Earl_of_Portland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Arnold_Joost_van_Keppel,_1st_Earl_of_Albemarle\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Earl_of_Albemarle\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Arnold_van_Keppel,_1st_Earl_of_Albemarle\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Lord_Justices\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Drenthe\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Jacobite_assassination_plot_1696\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Treaty_of_Rijswijk\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Nine_Years%27_War\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Low_Countries\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/New_World\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Charles_II_of_Spain\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Leopold_I,_Holy_Roman_Emperor\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Balance_of_power_in_international_relations\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/First_Partition_Treaty\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Joseph_Ferdinand,_Electoral_Prince_of_Bavaria\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Louis_XIV_of_France\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Treaty_of_London,_1700\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Philip_V_of_Spain\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/James_Francis_Edward_Stuart\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/War_of_the_Spanish_Succession\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Prince_William,_Duke_of_Gloucester\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Act_of_Settlement_1701\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Sophia_of_Hanover\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/James_VI_and_I\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Second_Stadtholderless_Period\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/John_Michael_Rysbrack\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Queen_Square,_Bristol\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Pneumonia\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Mole_(animal)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Winston_Churchill\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/A_History_of_the_English-Speaking_Peoples\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Westminster_Abbey\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Anne,_Queen_of_Great_Britain\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Queen_regnant\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/House_of_Orange-Nassau\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/William_the_Silent\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Agnatic\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/John_William_Friso,_Prince_of_Orange\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Countess_Albertine_Agnes_of_Nassau\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Frederick_I_of_Prussia\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Primogeniture\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Countess_Louise_Henriette_of_Nassau\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Treaty_of_Utrecht\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Frederick_William_I_of_Prussia\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Louis_XIV_of_France\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/William_IV,_Prince_of_Orange\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Cultural_depictions_of_William_III_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Orange_Order\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Louis_XIV_of_France\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/War_of_the_Spanish_Succession\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/House_of_Stuart\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/James_I_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/English_Civil_War\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Glorious_Revolution\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Bill_of_Rights_1689\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Triennial_Act_1694\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Act_of_Settlement_1701\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Ulster_loyalism\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Murals_in_Northern_Ireland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Ormeau_Road\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/College_of_William_and_Mary\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Williamsburg,_Virginia\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Nassau,_Bahamas\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Nassau_County,_New_York\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Long_Island\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Princeton_University\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Princeton,_New_Jersey\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Fort_Amsterdam\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Nassau_Street_(Manhattan)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Orange_County,_New_York\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Albany,_New_York\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Orange_Order\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Battle_of_the_Boyne\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/The_Twelfth\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Hampton_Court_Palace\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/His_Highness\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Majesty\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/By_the_Grace_of_God\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Prince_of_Orange\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Count_of_Nassau-Dillenburg\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Stadtholder\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/County_of_Holland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/County_of_Zeeland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Utrecht\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Captain-General\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Admiral-General\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/King_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/King_of_Scotland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/British_claims_to_the_French_throne\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Kingdom_of_Ireland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Fidei_defensor\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Quartering_(heraldry)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Azure_(heraldry)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Sem%C3%A9\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Rampant\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Or_(heraldry)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/House_of_Nassau\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Gules\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Katzenelnbogen\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Fess\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Argent\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Vianden\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Passant_guardant\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Inescutcheon\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Sable_(heraldry)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Moers\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Bend_(heraldry)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Ch%C3%A2lons-en-Champagne\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Principality_of_Orange\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Geneva\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Buren\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Fleurs-de-lis\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Pale_(heraldry)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Royal_Arms_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Tressure\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Royal_coat_of_arms_of_Scotland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Coat_of_arms_of_Ireland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Je_Maintiendrai\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/House_of_Orange-Nassau\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Principality_of_Orange\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Prince_of_Orange\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/William_I,_Count_of_Nassau-Dillenburg\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/William_the_Silent\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Juliana_of_Stolberg\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Frederick_Henry,_Prince_of_Orange\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Gaspard_II_de_Coligny\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Louise_de_Coligny\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Charlotte_de_Laval\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/William_II,_Prince_of_Orange\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Johan_Albrecht_I_of_Solms-Braunfels\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Elisabeth_of_Nassau-Dillenburg\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "0\n", - "PAGE HAS NO LINKS: /wiki/Amalia_of_Solms-Braunfels\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Louis_I,_Count_of_Sayn-Wittgenstein\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Agnes_of_Sayn-Wittgenstein\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Henry_Stuart,_Lord_Darnley\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/James_VI_and_I\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Mary,_Queen_of_Scots\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Charles_I_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Frederick_II_of_Denmark\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Anne_of_Denmark\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Sofie_of_Mecklenburg-Schwerin_(d._1631)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Mary,_Princess_Royal_and_Princess_of_Orange\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Antoine_of_Navarre\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Henry_IV_of_France\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Jeanne_III_of_Navarre\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Henrietta_Maria_of_France\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Francesco_I_de%27_Medici,_Grand_Duke_of_Tuscany\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Maria_de_Medici\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Joanna_of_Austria,_Grand_Duchess_of_Tuscany\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/William_the_Silent\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/James_I_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Frederick_Henry,_Prince_of_Orange\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Amalia_of_Solms-Braunfels\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Charles_I_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Elizabeth_Stuart,_Queen_of_Bohemia\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Frederick_Nassau_de_Zuylestein\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Countess_Louise_Henriette_of_Nassau\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Countess_Albertine_Agnes_of_Nassau\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/William_II,_Prince_of_Orange\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Mary,_Princess_Royal_and_Princess_of_Orange\n", - "487\n", - "460\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Sophia_of_Hanover\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Frederick_I_of_Prussia\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Henry_Casimir_II,_Prince_of_Nassau-Dietz\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Mary_II_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Anne,_Queen_of_Great_Britain\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/James_Francis_Edward\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/John_William_Friso,_Prince_of_Orange\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Anglo-Dutch_Wars\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/British_monarchs%27_family_tree\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Constantijn_Huygens,_Jr.\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/List_of_deserters_from_James_II_to_William_of_Orange\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Parliament_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Parliament_of_Scotland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Julian_calendar\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Gregorian_calendar\n", - "494\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Friesland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/William_Frederick,_Prince_of_Nassau-Dietz\n", - "494\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Robert_Fruin\n", - "494\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/William_I_of_Scotland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Gregorian_calendar\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/The_Twelfth\n", - "494\n", - "494\n", - "494\n", - "494\n", - "494\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Stephen_B._Baxter\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Winston_Churchill\n", - "494\n", - "494\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Norman_Davies\n", - "494\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Jonathan_Israel\n", - "494\n", - "494\n", - "494\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/John_Van_der_Kiste\n", - "494\n", - "494\n", - "494\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/The_National_Archives_(United_Kingdom)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/National_Portrait_Gallery,_London\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/House_of_Orange-Nassau\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/House_of_Nassau\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/William_II_of_Orange\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Prince_of_Orange\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Baron\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Breda\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/John_William_Friso\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Glorious_Revolution\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/James_II_%26_VII\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/King_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/King_of_Scotland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/King_of_Ireland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Mary_II_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Anne,_Queen_of_Great_Britain\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/First_Stadtholderless_Period\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/William_II,_Prince_of_Orange\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Stadtholder\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Holland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Zeeland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Second_Stadtholderless_Period\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/William_IV,_Prince_of_Orange\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Stadtholder\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Utrecht_(province)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Stadtholder\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Guelders\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Overijssel\n", - "460\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Admiralty\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Arthur_Herbert,_1st_Earl_of_Torrington\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Stadtholder\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Guelders\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Willem_van_Egmond\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Philip_I_of_Cro%C3%BF-Chimay\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Adolf_III_of_Nassau-Wiesbaden-Idstein\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Jan_V_of_Nassau-Vianden-Diez\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Philip_of_Burgundy,_bishop_of_Utrecht\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Floris_van_Egmont\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Ren%C3%A9_of_Ch%C3%A2lon\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Philip_de_Lalaing,_2nd_Count_of_Hoogstraten\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Philip_de_Montmorency,_Count_of_Hoorn\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Karel_van_Brimeu\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Gillis_van_Berlaymont\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/John_VI_of_Nassau-Dillenburg\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Willem_IV_van_den_Bergh\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Adolf_van_Nieuwenaar\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Maurice_of_Nassau,_Prince_of_Orange\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Frederick_Henry,_Prince_of_Orange\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/William_II,_Prince_of_Orange\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/William_IV,_Prince_of_Orange\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/William_V,_Prince_of_Orange\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Stadtholder\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Holland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Zeeland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Utrecht_(province)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Hugo_van_Lannoy\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Jean_de_Lannoy\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Louis_de_Gruuthuse\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Wolfert_VI_of_Borselen\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Joost_van_Lalaing\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Jan_III_van_Egmond\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Henry_III_of_Nassau-Breda\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Antoine_I_de_Lalaing\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Ren%C3%A9_of_Ch%C3%A2lon\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Louis_of_Praet\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Maximilian_II_of_Burgundy\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/William_the_Silent\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Maximilien_de_H%C3%A9nin-Li%C3%A9tard\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Philip_of_Noircarmes\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/William_the_Silent\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Adolf_van_Nieuwenaar\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Maurice_of_Nassau,_Prince_of_Orange\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Frederick_Henry,_Prince_of_Orange\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/William_II,_Prince_of_Orange\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/William_IV,_Prince_of_Orange\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/William_V,_Prince_of_Orange\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Stadtholder\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Overijssel\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Georg_Schenck_van_Toutenburg\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Maximiliaan_van_Egmond\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Jan_van_Ligne\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Karel_van_Brimeu\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Gillis_van_Berlaymont\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Caspar_van_Robles\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/George_van_Lalaing\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Francisco_Verdugo\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Adolf_van_Nieuwenaar\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Maurice_of_Nassau,_Prince_of_Orange\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Frederick_Henry,_Prince_of_Orange\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/William_II,_Prince_of_Orange\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/William_IV,_Prince_of_Orange\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/William_V,_Prince_of_Orange\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Stadtholder\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Drenthe\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Charles,_Duke_of_Guelders\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Georg_Schenck_van_Toutenburg\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Maximiliaan_van_Egmond\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Jan_van_Ligne\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Karel_van_Brimeu\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Gillis_van_Berlaymont\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Caspar_van_Robles\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/George_van_Lalaing\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Francisco_Verdugo\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Willem_Lodewijk_of_Nassau-Dietz\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Maurice_of_Nassau,_Prince_of_Orange\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Ernst_Casimir\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Hendrik_Casimir_I\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "0\n", - "PAGE HAS NO LINKS: /wiki/Willem_Frederik_of_Nassau-Dietz\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/William_II,_Prince_of_Orange\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/William_IV,_Prince_of_Orange\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/William_V,_Prince_of_Orange\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/List_of_English_monarchs\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/List_of_Scottish_monarchs\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/List_of_British_monarchs\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/%C3%86thelstan\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Edmund_I\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Eadred\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Eadwig\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Edgar_the_Peaceful\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Edward_the_Martyr\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/%C3%86thelred_the_Unready\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Sweyn_Forkbeard\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Edmund_Ironside\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Cnut_the_Great\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Harold_Harefoot\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Harthacnut\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Edward_the_Confessor\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Harold_Godwinson\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Edgar_%C3%86theling\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/William_the_Conqueror\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/William_II_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Henry_I_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Stephen,_King_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Empress_Matilda\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Henry_II_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Henry_the_Young_King\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Richard_I_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/John,_King_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Henry_III_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Edward_I_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Edward_II_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Edward_III_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Richard_II_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Henry_IV_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Henry_V_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Henry_VI_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Edward_IV_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Edward_V_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Richard_III_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Henry_VII_of_England\n", - "559\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Edward_VI_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Lady_Jane_Grey\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Mary_I_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Philip_II_of_Spain\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Elizabeth_I_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Kenneth_MacAlpin\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Domnall_mac_Ailp%C3%ADn\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Causant%C3%ADn_mac_Cin%C3%A1eda\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/%C3%81ed_mac_Cin%C3%A1eda\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Giric\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Eochaid,_son_of_Rhun\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Donald_II_of_Scotland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Constantine_II_of_Scotland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Malcolm_I_of_Scotland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Indulf\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Dub,_King_of_Scotland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Cuil%C3%A9n\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Amla%C3%ADb,_King_of_Scotland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Kenneth_II_of_Scotland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Constantine_III_of_Scotland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Kenneth_III_of_Scotland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Malcolm_II_of_Scotland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Duncan_I_of_Scotland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Macbeth,_King_of_Scotland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Lulach\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Malcolm_III_of_Scotland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Donald_III_of_Scotland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Duncan_II_of_Scotland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Donald_III_of_Scotland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Edgar,_King_of_Scotland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Alexander_I_of_Scotland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/David_I_of_Scotland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Malcolm_IV_of_Scotland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/William_the_Lion\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Alexander_II_of_Scotland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Alexander_III_of_Scotland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Margaret,_Maid_of_Norway\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Guardian_of_Scotland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/John_Balliol\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Guardian_of_Scotland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Robert_the_Bruce\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/David_II_of_Scotland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Edward_Balliol\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Robert_II_of_Scotland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Robert_III_of_Scotland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/James_I_of_Scotland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/James_II_of_Scotland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/James_III_of_Scotland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/James_IV_of_Scotland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/James_V_of_Scotland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Mary,_Queen_of_Scots\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/James_VI_and_I\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Union_of_the_Crowns\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/James_VI_and_I\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Charles_I_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Commonwealth_of_England\n", - "487\n", - "460\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Mary_II_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Anne,_Queen_of_Great_Britain\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Acts_of_Union_1707\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Anne,_Queen_of_Great_Britain\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/George_I_of_Great_Britain\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/George_II_of_Great_Britain\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/George_III_of_the_United_Kingdom\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/George_IV_of_the_United_Kingdom\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/William_IV_of_the_United_Kingdom\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Queen_Victoria\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Edward_VII\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/George_V\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Edward_VIII\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/George_VI\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Elizabeth_II\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Virtual_International_Authority_File\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Library_of_Congress_Control_Number\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/International_Standard_Name_Identifier\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Integrated_Authority_File\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/LIBRIS\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Syst%C3%A8me_universitaire_de_documentation\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Biblioth%C3%A8que_nationale_de_France\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Biografisch_Portaal\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Union_List_of_Artist_Names\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/National_Library_of_the_Czech_Republic\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Netherlands_Institute_for_Art_History#Online_artist_pages\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Institute_for_Advanced_Technology_in_the_Humanities\n", - "525\n", - "525\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Main_Page\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Main_Page\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Mary_II_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Mary_II_(disambiguation)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Godfrey_Kneller\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/List_of_English_monarchs\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Queen_of_Scotland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/List_of_Irish_monarchs\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Style_of_the_British_sovereign#Styles_of_English_and_Scottish_sovereigns\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Coronation_of_the_British_monarch\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/James_II_%26_VII\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/William_III_%26_II\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Old_Style_and_New_Style_dates\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/St_James%27s_Palace\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Old_Style_and_New_Style_dates\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Kensington_Palace\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Westminster_Abbey\n", - "526\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Dynasty\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/House_of_Stuart\n", - "460\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Anne_Hyde\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Anglican\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/List_of_English_monarchs\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/List_of_Scottish_monarchs\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/List_of_Irish_monarchs\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/William_III_of_Orange\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Protestants\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Queen_regnant\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Glorious_Revolution\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/English_Bill_of_Rights\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Roman_Catholic\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/James_II_and_VII\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/St_James%27s_Palace\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/King_James_II_%26_VII\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Anne_Hyde\n", - "487\n", - "548\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Kingdom_of_Scotland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Kingdom_of_Ireland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Edward_Hyde,_1st_Earl_of_Clarendon\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Anglicanism\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Chapel_Royal\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Mary,_Queen_of_Scots\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Prince_Rupert_of_the_Rhine\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Anne,_Queen_of_Great_Britain\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "0\n", - "PAGE HAS NO LINKS: /wiki/Caspar_Netscher\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Richmond_Palace\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Edward_Villiers_(1620%E2%80%931689)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Twickenham\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Mary_of_Modena\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Frances_Apsley\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Allen_Apsley_(Royalist)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Stadtholder\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Holland\n", - "526\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Mary,_Princess_Royal_and_Princess_of_Orange\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Louis,_Dauphin_of_France_(1661-1711)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Thomas_Osborne,_1st_Duke_of_Leeds\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Peter_Lely\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Henry_Compton_(bishop)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Netherlands\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Rotterdam\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Ter_Heijde\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Huis_Honselaarsdijk\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/The_Hague\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Breda\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/James_Scott,_1st_Duke_of_Monmouth\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Nicolas_de_Largilli%C3%A8re\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Heir_presumptive\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Church_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Archbishop_of_Canterbury\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/William_Sancroft\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Louis_XIV\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Principality_of_Orange\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Huguenot\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Elizabeth_Villiers\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Glorious_Revolution\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Jan_Verkolje\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Declaration_of_Indulgence\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Dissenter\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Mary_of_Modena\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/James_Francis_Edward_Stuart\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Immortal_Seven\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Dutch_Republic\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Gilbert_Burnet\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/John_Evelyn\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Sarah_Churchill,_Duchess_of_Marlborough\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Godfrey_Kneller\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Convention_Parliament_(1689)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Thomas_Osborne,_1st_Duke_of_Leeds\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Declaration_of_Right,_1689\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/James_Francis_Edward_Stuart\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Heir_apparent\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Mary_I_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Philip_II_of_Spain\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Bishop_of_London\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Henry_Compton_(bishop)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Westminster_Abbey\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Archbishop_of_Canterbury\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/William_Sancroft\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Anglican\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Estates_of_Scotland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Scotland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/John_Graham_of_Claverhouse\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Scottish_Highlands\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Battle_of_Killiecrankie\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Battle_of_Dunkeld\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Five_guineas_(British_coin)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Bill_of_Rights_1689\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Royal_prerogative\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Right_to_petition\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Right_to_bear_arms\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Jacobitism\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Henry_Hyde,_2nd_Earl_of_Clarendon\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/John_Churchill,_1st_Duke_of_Marlborough\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Sarah_Churchill,_Duchess_of_Marlborough\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Church_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Archbishop_of_Canterbury\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/John_Tillotson\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Bishop_of_Worcester\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Edward_Stillingfleet\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Bishop_of_Lincoln\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Thomas_Tenison\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Whitehall\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Kensington\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Smallpox\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Groom_of_the_stole\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Kensington_Palace\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Ten_Commandments\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/River_Thames\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Lying_in_state\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Banqueting_House,_Whitehall\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Westminster_Abbey\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Houses_of_Parliament\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Henry_Purcell\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Music_for_the_Funeral_of_Queen_Mary\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Painted_Hall\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/James_Thornhill\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/College_of_William_%26_Mary\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Williamsburg,_Virginia\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Thomas_Bray\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Society_for_Promoting_Christian_Knowledge\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Greenwich_Hospital,_London\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Battles_of_Barfleur_and_La_Hogue\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Het_Loo_Palace\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Hampton_Court_Palace\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Blue_and_white_porcelain\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Goldfish\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Nahum_Tate\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Elizabeth_I_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/William_Walsh_(poet)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Lucius_Quinctius_Cincinnatus\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Lisa_Daniely\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/The_First_Churchills\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Orlando_(film)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Rebecca_Front\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/England,_My_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Victoria_Wood\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/The_League_of_Gentlemen%27s_Apocalypse\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/List_of_monarchs_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/British_claims_to_the_French_throne\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Kingdom_of_Ireland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Fidei_defensor\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Estates_of_Scotland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/List_of_Monarchs_of_Scotland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Quartering_(heraldry)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Azure_(heraldry)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Fleurs-de-lis\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Or_(heraldry)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Gules\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Attitude_(heraldry)#Passant\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Pale_(heraldry)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Royal_Arms_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Rampant\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Tressure\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Royal_coat_of_arms_of_Scotland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Argent\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Coat_of_arms_of_Ireland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Escutcheon_(heraldry)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Variation_of_the_field#Semé\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/House_of_Orange-Nassau\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Impalement_(heraldry)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Henry_Stuart,_Lord_Darnley\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/James_I_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Mary,_Queen_of_Scots\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Charles_I_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Frederick_II_of_Denmark\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Anne_of_Denmark\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Sophie_of_Mecklenburg-G%C3%BCstrow\n", - "460\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Antoine_of_Navarre\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Henry_IV_of_France\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Jeanne_d%27Albret\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Henrietta_Maria_of_France\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Francesco_I_de%27_Medici,_Grand_Duke_of_Tuscany\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Marie_de%27_Medici\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Joanna_of_Austria,_Grand_Duchess_of_Tuscany\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Henry_Hyde_(died_1634)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Edward_Hyde,_1st_Earl_of_Clarendon\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Anne_Hyde\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Sir_Thomas_Aylesbury,_1st_Baronet\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Frances_Hyde,_Countess_of_Clarendon\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Edward_Hyde,_1st_Earl_of_Clarendon\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Charles_I_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Henry_Hyde,_2nd_Earl_of_Clarendon\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Anne_Hyde\n", - "460\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Mary,_Princess_Royal_and_Princess_of_Orange\n", - "487\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/James_Francis_Edward\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Anne,_Queen_of_Great_Britain\n", - "526\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/James_Scott,_1st_Duke_of_Monmouth\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/John_Van_der_Kiste\n", - "494\n", - "494\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Edward_Lake_(priest)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Absence_of_King_William_Act_1689\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/The_London_Gazette\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Henry_Altemus_Company\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/National_Portrait_Gallery,_London\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/New_International_Encyclopedia\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "0\n", - "PAGE HAS NO LINKS: /wiki/House_of_Stuart\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Glorious_Revolution\n", - "460\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/List_of_English_monarchs\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/List_of_Scottish_monarchs\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Queen_of_Ireland\n", - "526\n", - "526\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/List_of_English_monarchs\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/List_of_Scottish_monarchs\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/List_of_British_monarchs\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/%C3%86thelstan\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Edmund_I\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Eadred\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Eadwig\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Edgar_the_Peaceful\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Edward_the_Martyr\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/%C3%86thelred_the_Unready\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Sweyn_Forkbeard\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Edmund_Ironside\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Cnut_the_Great\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Harold_Harefoot\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Harthacnut\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Edward_the_Confessor\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Harold_Godwinson\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Edgar_%C3%86theling\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/William_the_Conqueror\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/William_II_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Henry_I_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Stephen,_King_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Empress_Matilda\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Henry_II_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Henry_the_Young_King\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Richard_I_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/John,_King_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Henry_III_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Edward_I_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Edward_II_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Edward_III_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Richard_II_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Henry_IV_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Henry_V_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Henry_VI_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Edward_IV_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Edward_V_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Richard_III_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Henry_VII_of_England\n", - "559\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Edward_VI_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Lady_Jane_Grey\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Mary_I_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Philip_II_of_Spain\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Elizabeth_I_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Kenneth_MacAlpin\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Domnall_mac_Ailp%C3%ADn\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Causant%C3%ADn_mac_Cin%C3%A1eda\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/%C3%81ed_mac_Cin%C3%A1eda\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Giric\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Eochaid,_son_of_Rhun\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Donald_II_of_Scotland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Constantine_II_of_Scotland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Malcolm_I_of_Scotland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Indulf\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Dub,_King_of_Scotland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Cuil%C3%A9n\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Amla%C3%ADb,_King_of_Scotland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Kenneth_II_of_Scotland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Constantine_III_of_Scotland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Kenneth_III_of_Scotland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Malcolm_II_of_Scotland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Duncan_I_of_Scotland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Macbeth,_King_of_Scotland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Lulach\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Malcolm_III_of_Scotland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Donald_III_of_Scotland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Duncan_II_of_Scotland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Donald_III_of_Scotland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Edgar,_King_of_Scotland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Alexander_I_of_Scotland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/David_I_of_Scotland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Malcolm_IV_of_Scotland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/William_the_Lion\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Alexander_II_of_Scotland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Alexander_III_of_Scotland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Margaret,_Maid_of_Norway\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Guardian_of_Scotland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/John_Balliol\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Guardian_of_Scotland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Robert_the_Bruce\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/David_II_of_Scotland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Edward_Balliol\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Robert_II_of_Scotland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Robert_III_of_Scotland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/James_I_of_Scotland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/James_II_of_Scotland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/James_III_of_Scotland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/James_IV_of_Scotland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/James_V_of_Scotland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Mary,_Queen_of_Scots\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/James_VI_and_I\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Union_of_the_Crowns\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/James_VI_and_I\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Charles_I_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Commonwealth_of_England\n", - "487\n", - "460\n", - "526\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Anne,_Queen_of_Great_Britain\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Acts_of_Union_1707\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Anne,_Queen_of_Great_Britain\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/George_I_of_Great_Britain\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/George_II_of_Great_Britain\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/George_III_of_the_United_Kingdom\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/George_IV_of_the_United_Kingdom\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/William_IV_of_the_United_Kingdom\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Queen_Victoria\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Edward_VII\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/George_V\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Edward_VIII\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/George_VI\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Elizabeth_II\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Princess_of_Orange_(by_marriage)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Sophie_of_W%C3%BCrttemberg\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Anna_Pavlovna_of_Russia\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Wilhelmine_of_Prussia,_Queen_of_the_Netherlands\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Wilhelmina_of_Prussia,_Princess_of_Orange\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Anne,_Princess_Royal_and_Princess_of_Orange\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Landgravine_Marie_Louise_of_Hesse-Kassel\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Mary,_Princess_Royal_and_Princess_of_Orange\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Amalia_of_Solms-Braunfels\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/%C3%89l%C3%A9onore_de_Bourbon\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Louise_de_Coligny\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Charlotte_of_Bourbon\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Anna_of_Saxony\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Anna_van_Egmont\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Anna_of_Lorraine\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Virtual_International_Authority_File\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Library_of_Congress_Control_Number\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/International_Standard_Name_Identifier\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Integrated_Authority_File\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/LIBRIS\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Syst%C3%A8me_universitaire_de_documentation\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Biblioth%C3%A8que_nationale_de_France\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Biografisch_Portaal\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/BIBSYS\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Union_List_of_Artist_Names\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Institute_for_Advanced_Technology_in_the_Humanities\n", - "307\n", - "307\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Main_Page\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Main_Page\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Anne,_Queen_of_Great_Britain\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Michael_Dahl\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/List_of_English_monarchs\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/List_of_Scottish_monarchs\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/List_of_Irish_monarchs\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Styles_of_English_and_Scottish_sovereigns\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Coronation_of_the_British_monarch\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/William_III_%26_II\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Queen_of_Great_Britain\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/List_of_Irish_monarchs\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Style_of_the_British_sovereign#Styles_of_British_sovereigns\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/George_I_of_Great_Britain\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/St_James%27s_Palace\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Westminster\n", - "548\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Kensington_Palace\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Middlesex\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/England\n", - "469\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Westminster_Abbey\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Prince_George_of_Denmark\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Prince_William,_Duke_of_Gloucester\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Dynasty\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/House_of_Stuart\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/James_II_%26_VII\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Anne_Hyde\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Anglican\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "0\n", - "PAGE HAS NO LINKS: /wiki/List_of_English_monarchs\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/List_of_Scottish_monarchs\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/List_of_Irish_monarchs\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Acts_of_Union_1707\n", - "548\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Kingdom_of_Scotland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Sovereign_state\n", - "469\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/List_of_British_monarchs\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Kingdom_of_Ireland\n", - "487\n", - "460\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Heir_presumptive\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Roman_Catholicism\n", - "308\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Church_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Glorious_Revolution\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/William_III_of_Orange\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Tories_(British_political_party)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Whigs_(British_political_party)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/War_of_the_Spanish_Succession\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Sarah_Churchill,_Duchess_of_Marlborough\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Prince_George_of_Denmark\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/House_of_Stuart\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Act_of_Settlement_1701\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/George_I_of_Great_Britain\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/House_of_Hanover\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Elizabeth_Stuart,_Queen_of_Bohemia\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/James_VI_and_I\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Peter_Lely\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Benedetto_Gennari_II\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/St_James%27s_Palace\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/James_II_and_VII\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Anne_Hyde\n", - "487\n", - "548\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Kingdom_of_Scotland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Kingdom_of_Ireland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Lord_Chancellor\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Edward_Hyde,_1st_Earl_of_Clarendon\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Anglicanism\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Chapel_Royal\n", - "308\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Anne_Scott,_1st_Duchess_of_Buccleuch\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Archbishop_of_Canterbury\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Gilbert_Sheldon\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Henrietta_Maria_of_France\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Henrietta_Anne,_Duchess_of_Orl%C3%A9ans\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Richmond,_London\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Edward_Villiers_(1620%E2%80%931689)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Henry_Compton_(bishop)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Bishop_of_London\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Preceptor\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Sarah_Jennings\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/John_Churchill,_1st_Duke_of_Marlborough\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Arabella_Churchill_(royal_mistress)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Mary_of_Modena\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Willem_Wissing\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Jan_van_der_Vaardt\n", - "526\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Smallpox\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Henrietta_Hyde,_Countess_of_Rochester\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Laurence_Hyde,_1st_Earl_of_Rochester\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Popish_Plot\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Holyrood_Palace\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Edinburgh\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/George_I_of_Great_Britain\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Sophia_Dorothea_of_Celle\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/John_Sheffield,_1st_Duke_of_Buckingham_and_Normanby\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Louis_XIV_of_France\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Prince_George_of_Denmark\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Christian_V_of_Denmark\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Secretary_of_State_for_the_Northern_Department\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Robert_Spencer,_2nd_Earl_of_Sunderland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Cockpit-in-Court\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Palace_of_Whitehall\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Lady_of_the_Bedchamber\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Spa_town\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Tunbridge_Wells\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Test_Act\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Rachel_Russell,_Lady_Russell\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Mary_of_Modena\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/James_Francis_Edward\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Bath,_Somerset\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/James_Francis_Edward\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Privy_Council_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Glorious_Revolution\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Nottingham\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Oxford\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Convention_Parliament_(1689)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Parliament_of_Scotland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Bill_of_Rights_1689\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Claim_of_Right_Act_1689\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Prince_William,_Duke_of_Gloucester\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Earldom_of_Marlborough\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Duke_of_Cumberland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Richmond_Palace\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Jacobitism\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Lord_Chamberlain\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Syon_House\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Charles_Seymour,_6th_Duke_of_Somerset\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Piccadilly\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Heir_apparent\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Prince_William,_Duke_of_Gloucester\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Godfrey_Kneller\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Gout\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Systemic_lupus_erythematosus\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Hughes_syndrome\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Pelvic_inflammatory_disease\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Listeriosis\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Diabetes\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Intrauterine_growth_retardation\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Rhesus_incompatibility\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Syphilis\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Porphyria\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Sedan_chair\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Chaise\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Jehu\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Nimrod\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Sir_John_Clerk,_1st_Baronet\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Parliament_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Act_of_Settlement_1701\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Sophia,_Electress_of_Hanover\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/James_VI_and_I\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Elizabeth_Stuart,_Queen_of_Bohemia\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Charles_I_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Charles_Jervas\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Lord_High_Admiral_of_Great_Britain\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Royal_Navy\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Captain-General\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Order_of_the_Garter\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Groom_of_the_Stole\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Mistress_of_the_Robes\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Keeper_of_the_Privy_Purse\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Coronation_of_the_British_monarch\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/St_George%27s_Day\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Westminster_Abbey\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/War_of_the_Spanish_Succession\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Charles_II_of_Spain\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/House_of_Habsburg\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Charles_VI,_Holy_Roman_Emperor\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/House_of_Bourbon\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Philip,_Duke_of_Anjou\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/George_Frideric_Handel\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Isaac_Newton\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/John_Croker_(engraver)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Acts_of_Union_1707\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Act_of_Settlement_1701\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Act_of_Security_1704\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Royal_assent\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Alien_Act_1705\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Alien_(law)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Acts_of_Union_1707\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/St_Paul%27s_Cathedral\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Sir_John_Clerk,_1st_Baronet\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/John_Closterman\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Tory\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Anglicanism\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Whiggism\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Dissenter\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/High_Tories\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Daniel_Finch,_2nd_Earl_of_Nottingham\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Laurence_Hyde,_1st_Earl_of_Rochester\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Lord_Treasurer\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Sidney_Godolphin,_1st_Earl_of_Godolphin\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/John_Churchill,_1st_Duke_of_Marlborough\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Speaker_of_the_House_of_Commons_(United_Kingdom)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Robert_Harley,_1st_Earl_of_Oxford_and_Mortimer\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Occasional_Conformity_Bill\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Test_Act\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Conformist\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Nonconformist\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Eucharist\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Lutheran\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Touch_piece#Healing_of_the_King's_or_Queen's_Evil\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Great_Storm_of_1703\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Money_bill\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Battle_of_Blenheim\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "0\n", - "PAGE HAS NO LINKS: /wiki/Secretary_of_State_for_the_Northern_Department\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Whig_Junto\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/John_Somers,_1st_Baron_Somers\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Charles_Montagu,_1st_Earl_of_Halifax\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Edward_Russell,_1st_Earl_of_Orford\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Thomas_Wharton,_1st_Marquess_of_Wharton\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Charles_Spencer,_3rd_Earl_of_Sunderland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Secretary_of_State_for_the_Southern_Department\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Abigail_Masham,_Baroness_Masham\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Woman_of_the_bedchamber\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/British_half_crown_coin\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Latin_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/By_the_Grace_of_God\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Charles_Seymour,_6th_Duke_of_Somerset\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/James_Francis_Edward_Stuart\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Scottish_Militia_Bill_1708\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/George_Byng,_1st_Viscount_Torrington\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/British_general_election,_1708\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Kensington_Palace\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Lesbian\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Battle_of_Oudenarde\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Charles_Boit\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Kensington_Palace\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Admiralty\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/George_Churchill_(Royal_Navy_officer)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/First_Lord_of_the_Admiralty\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Thomas_Herbert,_8th_Earl_of_Pembroke\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Maundy_Thursday\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Impeachment\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Henry_Sacheverell\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/High_church\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Augustus_the_Strong\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/British_general_election,_1710\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Antoine_de_Guiscard\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Emperor_Joseph_I\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Holy_Roman_Empire\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Peace_of_Utrecht\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/House_of_Commons_of_Great_Britain\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/House_of_Lords\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Occasional_Conformity_Act_1711\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Samuel_Masham,_1st_Baron_Masham\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Louis_XIV_of_France\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Henry_St_John,_1st_Viscount_Bolingbroke\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Recess_(motion)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Charles_Talbot,_1st_Duke_of_Shrewsbury\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/John_Arbuthnot\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Jonathan_Swift\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Henry_VII_Chapel\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Act_of_Settlement_1701\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/James_Francis_Edward_Stuart\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Jacobite_rising_in_1715\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/St_Paul%27s_Cathedral,_London\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/High_Tory\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/List_of_things_named_after_Queen_Anne\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Cultural_depictions_of_Anne,_Queen_of_Great_Britain\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Male_chauvinism\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Petticoat#Petticoats_in_popular_culture\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/John_Vanbrugh\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Blenheim_Palace\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Castle_Howard\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Queen_Anne_style_architecture\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Queen_Anne_style_furniture\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Daniel_Defoe\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Alexander_Pope\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Jonathan_Swift\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Henry_Wise_(gardener)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Style_(manner_of_address)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Majesty\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Fidei_defensor\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/English_claims_to_the_French_throne\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Queen_regnant\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Royal_coat_of_arms_of_the_United_Kingdom\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Quartering_(heraldry)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Azure_(heraldry)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Fleur-de-lis\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Or_(heraldry)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Gules\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Attitude_(heraldry)#Passant\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Pale_(heraldry)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Royal_Arms_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Rampant\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Tressure\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Royal_coat_of_arms_of_Scotland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Argent\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Coat_of_arms_of_Ireland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Elizabeth_I_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Impalement_(heraldry)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Westminster_Abbey\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Palace_of_Whitehall\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Windsor_Castle\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Henry_Compton_(bishop)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Nathaniel_Crew,_3rd_Baron_Crew\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Sarah_Churchill,_Duchess_of_Marlborough\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Prince_William,_Duke_of_Gloucester\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Hampton_Court_Palace\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/St_James%27s_Palace\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Syon_House\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Alison_Weir\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Narcissus_Luttrell\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Theophilus_Hastings,_7th_Earl_of_Huntingdon\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Vanishing_twin\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Fetus_papyraceus\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Resident_(title)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/St_George%27s_Chapel,_Windsor_Castle\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/James_Vernon\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Charles_Talbot,_1st_Duke_of_Shrewsbury\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Henry_Stuart,_Lord_Darnley\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/James_VI_and_I\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Mary,_Queen_of_Scots\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Charles_I_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Frederick_II_of_Denmark\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Anne_of_Denmark\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Sophie_of_Mecklenburg-G%C3%BCstrow\n", - "460\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Antoine_of_Navarre\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Henry_IV_of_France\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Jeanne_d%27Albret\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Henrietta_Maria_of_France\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Francesco_I_de%27_Medici,_Grand_Duke_of_Tuscany\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Marie_de%27_Medici\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Joanna_of_Austria,_Grand_Duchess_of_Tuscany\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Henry_Hyde_(died_1634)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Edward_Hyde,_1st_Earl_of_Clarendon\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Anne_Hyde\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Sir_Thomas_Aylesbury,_1st_Baronet\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Frances_Hyde,_Countess_of_Clarendon\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/James_VI_and_I\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Edward_Hyde,_1st_Earl_of_Clarendon\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Charles_I_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Elizabeth_Stuart,_Queen_of_Bohemia\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Laurence_Hyde,_1st_Earl_of_Rochester\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Anne_Hyde\n", - "460\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Mary_of_Modena\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Mary,_Princess_Royal_and_Princess_of_Orange\n", - "487\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Sophia_of_Hanover\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/James_Francis_Edward_Stuart\n", - "308\n", - "526\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/George_I_of_Great_Britain\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Queen_Anne%27s_Bounty\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Early-18th-century_Whig_plots\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Old_Style_and_New_Style_dates\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Julian_calendar\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Old_Style_and_New_Style_dates\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Gregorian_calendar\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Jonathan_Swift\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Jonathan_Swift\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/The_London_Gazette\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/The_London_Gazette\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/The_London_Gazette\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/The_London_Gazette\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/The_London_Gazette\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/The_London_Gazette\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/The_London_Gazette\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Dictionary_of_National_Biography#Oxford_Dictionary_of_National_Biography\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Digital_object_identifier\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Joseph_Lemuel_Chester\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Antonia_Fraser\n", - "494\n", - "494\n", - "494\n", - "494\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Ji%C5%99%C3%AD_Louda\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Michael_Maclagan\n", - "494\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Narcissus_Luttrell\n", - "494\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/John_Pinches\n", - "494\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Anne_Somerset_(historian)\n", - "494\n", - "494\n", - "494\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Adolphus_William_Ward\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "0\n", - "PAGE HAS NO LINKS: /wiki/Adolphus_William_Ward\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Leslie_Stephen\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Dictionary_of_National_Biography\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Alison_Weir\n", - "494\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Encyclop%C3%A6dia_Britannica_Eleventh_Edition\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/The_National_Archives_(United_Kingdom)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/National_Portrait_Gallery,_London\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/House_of_Stuart\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/William_III_%26_II\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/List_of_English_monarchs\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/List_of_Scottish_monarchs\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Acts_of_Union_1707\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Queen_of_Ireland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/George_I_of_Great_Britain\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Acts_of_Union_1707\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Queen_of_Great_Britain\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Prince_George_of_Denmark\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Lord_High_Admiral_of_Great_Britain\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Thomas_Herbert,_8th_Earl_of_Pembroke\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/List_of_English_monarchs\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/List_of_Scottish_monarchs\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/List_of_British_monarchs\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/%C3%86thelstan\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Edmund_I\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Eadred\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Eadwig\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Edgar_the_Peaceful\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Edward_the_Martyr\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/%C3%86thelred_the_Unready\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Sweyn_Forkbeard\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Edmund_Ironside\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Cnut_the_Great\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Harold_Harefoot\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Harthacnut\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Edward_the_Confessor\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Harold_Godwinson\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Edgar_%C3%86theling\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/William_the_Conqueror\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/William_II_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Henry_I_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Stephen,_King_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Empress_Matilda\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Henry_II_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Henry_the_Young_King\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Richard_I_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/John,_King_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Henry_III_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Edward_I_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Edward_II_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Edward_III_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Richard_II_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Henry_IV_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Henry_V_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Henry_VI_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Edward_IV_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Edward_V_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Richard_III_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Henry_VII_of_England\n", - "559\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Edward_VI_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Lady_Jane_Grey\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Mary_I_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Philip_II_of_Spain\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Elizabeth_I_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Kenneth_MacAlpin\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Domnall_mac_Ailp%C3%ADn\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Causant%C3%ADn_mac_Cin%C3%A1eda\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/%C3%81ed_mac_Cin%C3%A1eda\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Giric\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Eochaid,_son_of_Rhun\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Donald_II_of_Scotland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Constantine_II_of_Scotland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Malcolm_I_of_Scotland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Indulf\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Dub,_King_of_Scotland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Cuil%C3%A9n\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Amla%C3%ADb,_King_of_Scotland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Kenneth_II_of_Scotland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Constantine_III_of_Scotland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Kenneth_III_of_Scotland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Malcolm_II_of_Scotland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Duncan_I_of_Scotland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Macbeth,_King_of_Scotland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Lulach\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Malcolm_III_of_Scotland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Donald_III_of_Scotland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Duncan_II_of_Scotland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Donald_III_of_Scotland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Edgar,_King_of_Scotland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Alexander_I_of_Scotland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/David_I_of_Scotland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Malcolm_IV_of_Scotland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/William_the_Lion\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Alexander_II_of_Scotland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Alexander_III_of_Scotland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Margaret,_Maid_of_Norway\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Guardian_of_Scotland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/John_Balliol\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Guardian_of_Scotland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Robert_the_Bruce\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/David_II_of_Scotland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Edward_Balliol\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Robert_II_of_Scotland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Robert_III_of_Scotland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/James_I_of_Scotland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/James_II_of_Scotland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/James_III_of_Scotland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/James_IV_of_Scotland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/James_V_of_Scotland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Mary,_Queen_of_Scots\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/James_VI_and_I\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Union_of_the_Crowns\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/James_VI_and_I\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Charles_I_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Commonwealth_of_England\n", - "487\n", - "460\n", - "526\n", - "308\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Acts_of_Union_1707\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/George_I_of_Great_Britain\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/George_II_of_Great_Britain\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/George_III_of_the_United_Kingdom\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/George_IV_of_the_United_Kingdom\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/William_IV_of_the_United_Kingdom\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Queen_Victoria\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Edward_VII\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/George_V\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Edward_VIII\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/George_VI\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Elizabeth_II\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Monarchy_of_Denmark\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Frederick_III_of_Denmark\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Charlotte_Amalie_of_Hesse-Kassel\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Louise_of_Mecklenburg-G%C3%BCstrow\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Sophie_Magdalene_of_Brandenburg-Kulmbach\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Louise_of_Great_Britain\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Duchess_Sophia_Frederica_of_Mecklenburg-Schwerin\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Marie_of_Hesse-Kassel\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Duchess_Charlotte_Frederica_of_Mecklenburg-Schwerin\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Caroline_Amalie_of_Augustenburg\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Princess_Caroline_of_Denmark\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Duchess_Caroline_Mariane_of_Mecklenburg\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Princess_Vilhelmine_Marie_of_Denmark\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Louise_of_Sweden\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Olga_Constantinovna_of_Russia\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Princess_Marie_of_Orl%C3%A9ans_(1865%E2%80%931909)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Alexandrine_of_Mecklenburg-Schwerin\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Maud_of_Wales\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Princess_Helena_Adelaide_of_Schleswig-Holstein-Sonderburg-Gl%C3%BCcksburg\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Sophia_of_Prussia\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Princess_Marie_Bonaparte\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Grand_Duchess_Elena_Vladimirovna_of_Russia\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Princess_Alice_of_Battenberg\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Princess_Anastasia_of_Greece_and_Denmark\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Princess_Fran%C3%A7oise_of_Orl%C3%A9ans_(1902%E2%80%931953)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Princess_Margaretha_of_Sweden\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Ingrid_of_Sweden\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Princess_Caroline-Mathilde_of_Denmark\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Elisabeth_of_Romania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Aspasia_Manos\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Frederica_of_Hanover\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Princess_Anne_of_Denmark\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Queen_Anne-Marie_of_Greece\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Mary,_Crown_Princess_of_Denmark\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Alexandra,_Countess_of_Frederiksborg\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Princess_Marie_of_Denmark\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "0\n", - "PAGE HAS NO LINKS: /wiki/Marie-Chantal,_Crown_Princess_of_Greece\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Princess_Tatiana_of_Greece_and_Denmark\n", - "469\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Acts_of_Union_1707\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Great_Britain_in_the_Seven_Years%27_War\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Jacobitism\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Jacobite_risings\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/War_of_Jenkins%27_Ear\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/French_and_Indian_War\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Boston_Massacre\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/American_Revolutionary_War\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Fourth_Anglo-Dutch_War\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/French_Revolutionary_Wars\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Acts_of_Union_1800\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/House_of_Stuart\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/House_of_Hanover\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/George_I_of_Great_Britain\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/George_II_of_Great_Britain\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/George_III_of_the_United_Kingdom\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Parliament_of_Great_Britain\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/House_of_Lords\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/House_of_Commons_of_Great_Britain\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/List_of_Parliaments_of_Great_Britain\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/List_of_Acts_of_the_Parliament_of_Great_Britain\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/List_of_Acts_of_the_Parliament_of_Great_Britain,_1707%E2%80%931719\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/List_of_Acts_of_the_Parliament_of_Great_Britain,_1720%E2%80%931739\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/List_of_Acts_of_the_Parliament_of_Great_Britain,_1740%E2%80%931759\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/List_of_Acts_of_the_Parliament_of_Great_Britain,_1760%E2%80%931779\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/List_of_Acts_of_the_Parliament_of_Great_Britain,_1780%E2%80%931800\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Elections_in_Great_Britain\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/British_general_election,_1708\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/British_general_election,_1710\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/British_general_election,_1713\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/British_general_election,_1715\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/British_general_election,_1722\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/British_general_election,_1727\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/British_general_election,_1734\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/British_general_election,_1741\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/British_general_election,_1747\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/British_general_election,_1754\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/British_general_election,_1761\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/British_general_election,_1768\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/British_general_election,_1774\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/British_general_election,_1780\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/British_general_election,_1784\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/British_general_election,_1790\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/British_general_election,_1796\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/List_of_British_monarchs\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Peerage_of_Great_Britain\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Privy_Council_of_Great_Britain\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Prime_Minister_of_Great_Britain\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/List_of_Prime_Ministers_of_Great_Britain\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Whigs_(British_political_party)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Tories_(British_political_party)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Whig_Junto\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Patriot_Whigs\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Kit-Cat_Club\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Great_Britain\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Queen_Anne_style_architecture\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Georgian_architecture\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/East_India_Company\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/British_Empire\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Longitude_prize\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Window_tax\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Proclamation_of_Rebellion\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/South_Sea_Company\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Speenhamland_system\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Flag_of_Great_Britain\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Royal_coat_of_arms_of_Great_Britain\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Virtual_International_Authority_File\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Library_of_Congress_Control_Number\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/International_Standard_Name_Identifier\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Integrated_Authority_File\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/LIBRIS\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Syst%C3%A8me_universitaire_de_documentation\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Biblioth%C3%A8que_nationale_de_France\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/BIBSYS\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Union_List_of_Artist_Names\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Institute_for_Advanced_Technology_in_the_Humanities\n", - "490\n", - "490\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Main_Page\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Main_Page\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/George_I_of_Great_Britain\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Godfrey_Kneller\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/List_of_British_monarchs\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/List_of_Irish_monarchs\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Style_of_the_British_sovereign#Styles_of_British_sovereigns\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Coronation_of_the_British_monarch\n", - "491\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/George_II_of_Great_Britain\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Prime_Minister_of_the_United_Kingdom\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Robert_Walpole\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Electorate_of_Brunswick-L%C3%BCneburg\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Ernest_Augustus,_Elector_of_Brunswick-L%C3%BCneburg\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/George_II_of_Great_Britain\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Old_Style_and_New_Style_dates\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Hanover\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Electorate_of_Brunswick-L%C3%BCneburg\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Holy_Roman_Empire\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Old_Style_and_New_Style_dates\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Osnabr%C3%BCck\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Leineschloss\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Herrenhausen_Gardens\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Sophia_Dorothea_of_Celle\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/George_II_of_Great_Britain\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Sophia_Dorothea_of_Hanover\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Dynasty\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/House_of_Hanover\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Ernest_Augustus,_Elector_of_Brunswick-L%C3%BCneburg\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Sophia_of_Hanover\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Lutheran\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/List_of_British_monarchs\n", - "469\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Kingdom_of_Ireland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Electorate_of_Brunswick-L%C3%BCneburg\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Holy_Roman_Empire\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Hanover\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Prince-elector\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Queen_Anne_of_Great_Britain\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/British_throne\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/List_of_British_Monarchs#House_of_Hanover\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/House_of_Hanover\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Primogeniture\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Act_of_Settlement_1701\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Jacobitism\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/James_Francis_Edward_Stuart\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Cabinet_government\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Robert_Walpole\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Prime_Minister_of_the_United_Kingdom\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Hanover\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Electorate_of_Brunswick-L%C3%BCneburg\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Holy_Roman_Empire\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Ernest_Augustus,_Elector_of_Brunswick-L%C3%BCneburg\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Brunswick-L%C3%BCneburg\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Sophia_of_Hanover\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/James_VI_and_I\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Elizabeth_of_Bohemia\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Italy\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Franco-Dutch_War\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Principality_of_Calenberg\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Principality_of_G%C3%B6ttingen\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/George_William,_Duke_of_Brunswick-L%C3%BCneburg\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Sophia_Dorothea_of_Celle\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Salic_law\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Primogeniture\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Godfrey_Kneller\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Sophia_Dorothea_of_Celle\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Marriage_of_state\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Great_Turkish_War\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Battle_of_Vienna\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/George_II_of_Great_Britain\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Melusine_von_der_Schulenburg,_Duchess_of_Kendal\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Philip_Christoph_von_K%C3%B6nigsmarck\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Leine\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Thaler\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Ahlden_House\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Celle\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "0\n", - "PAGE HAS NO LINKS: /wiki/Elector_of_Hanover\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Prince-Bishopric_of_Osnabr%C3%BCck\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Brunswick-L%C3%BCneburg\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Prince-elector#High_offices\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Prince-Elector\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Holy_Roman_Empire\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Gottfried_Leibniz\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/George_Frideric_H%C3%A4ndel\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Agostino_Steffani\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Prince_William,_Duke_of_Gloucester\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Act_of_Settlement_1701\n", - "526\n", - "491\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Succession_to_the_British_throne\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/British_royal_family\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Order_of_the_Garter\n", - "460\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/History_of_the_British_constitution\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Sophia_Naturalization_Act_1705\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Principality_of_L%C3%BCneburg\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Principality_of_Grubenhagen\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Celle\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Electorate_of_Brunswick-L%C3%BCneburg\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Principality_of_Brunswick-Wolfenb%C3%BCttel\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Prince-Bishopric_of_Osnabr%C3%BCck\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Saxe-Lauenburg\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Bremen-Verden\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/War_of_the_Spanish_Succession\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Philip_V_of_Spain\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Louis_XIV_of_France\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Charles_II_of_Spain\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Will_(law)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Dutch_Republic\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/House_of_Bourbon\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Brunswick-Wolfenb%C3%BCttel\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Duchy_of_Saxe-Lauenburg\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Maximilian_II_Emanuel,_Elector_of_Bavaria\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/John_Churchill,_1st_Duke_of_Marlborough\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Joseph_I,_Holy_Roman_Emperor\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Elector_Palatine\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Treaty_of_Utrecht\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Godfrey_Kneller\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/English_Parliament\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Parliament_of_Scotland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Royal_Assent\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Act_of_Security_1704\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Acts_of_Union_1707\n", - "469\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Act_of_Settlement_1701\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/British_Whig_Party\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Tory\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Hereditary_right\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Stuarts\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Herrenhausen_Gardens\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/The_Hague\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Westminster_Abbey\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Coronation_riots\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/George_Vertue\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Godfrey_Kneller\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/British_general_election,_1715\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Jacobitism\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/James_Francis_Edward_Stuart\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Jacobite_rising_of_1715\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/John_Erskine,_Earl_of_Mar_(1675%E2%80%931732)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/National_debt\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Septennial_Act_1715\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Lord_Chamberlain\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Thomas_Pelham-Holles,_1st_Duke_of_Newcastle-upon-Tyne\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Baptism\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/St._James%27s_Palace\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Leicester_Square\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Robert_Walpole\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Caroline_of_Ansbach\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Triple_Alliance_(1717)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Dutch_Republic\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Holy_Roman_Empire\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/War_of_the_Quadruple_Alliance\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Treaty_of_Utrecht\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Eilean_Donan\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Artillery\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Battle_of_Glen_Shiel\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Scottish_Highlands\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Great_Northern_War\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Swedish_Empire\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Russian_Empire\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Baltic_Sea\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Bremen-Verden\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Guinea_(British_coin)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Absolute_monarch\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Pound_sterling\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Robert_Walpole\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Charles_Townshend,_2nd_Viscount_Townshend\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/James_Stanhope,_1st_Earl_Stanhope\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Charles_Spencer,_3rd_Earl_of_Sunderland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/House_of_Lords\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/South_Sea_Company\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Melusine_von_der_Schulenburg\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Charles_Stanhope_(1673%E2%80%931760)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Bubble_Act\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Prime_Minister_of_the_United_Kingdom\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/First_Lord_of_the_Treasury\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Chancellor_of_the_Exchequer\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Royal_Archives\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Order_of_the_Bath\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Prussia\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Treaty_of_Hanover_(1725)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Treaty_of_Vienna_(1725)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Delden\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Nordhorn\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Leineschloss\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Herrenhausen_Gardens\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Bombing_of_Hanover_in_World_War_II\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Ernest_Augustus_I_of_Hanover\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/George_II_of_Great_Britain\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Caroline_of_Ansbach\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/James_Thornhill\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Mary_Wortley_Montagu\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Ragnhild_Hatton\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/The_Enlightenment\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Voltaire\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/James_Francis_Edward_Stuart\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/William_Makepeace_Thackeray\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Saint-Germain-en-Laye\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Society_of_Jesus\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Walter_Scott\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Philip_Stanhope,_5th_Earl_Stanhope\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/John_Hervey,_2nd_Baron_Hervey\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/G._K._Chesterton\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/John_H._Plumb\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/List_of_British_monarchs\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/British_claims_to_the_French_throne\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Kingdom_of_Ireland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Fidei_defensor\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Brunswick-L%C3%BCneburg\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Prince-Elector\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Holy_Roman_Empire\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Quartering_(heraldry)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Gules\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Attitude_(heraldry)#Passant\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Pale_(heraldry)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Or_(heraldry)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Royal_Arms_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Impalement_(heraldry)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Rampant\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Tressure\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Royal_coat_of_arms_of_Scotland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Azure_(heraldry)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Fleurs-de-lis\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Argent\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Coat_of_arms_of_Ireland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Division_of_the_field\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Semy\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Attitude_(heraldry)#Courant\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Coat_of_arms_of_Lower_Saxony\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Charlemagne\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Sophia_Dorothea_of_Celle\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/George_II_of_Great_Britain\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Caroline_of_Ansbach\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Sophia_Dorothea_of_Hanover\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Frederick_William_I_of_Prussia\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Melusine_von_der_Schulenburg,_Duchess_of_Kendal\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Charles_VI,_Holy_Roman_Emperor\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Melusina_von_der_Schulenburg,_Countess_of_Walsingham\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Philip_Stanhope,_4th_Earl_of_Chesterfield\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Albrecht_Wolfgang,_Count_of_Schaumburg-Lippe\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Ernest_I,_Duke_of_Brunswick-L%C3%BCneburg\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/William_the_Younger,_Duke_of_Brunswick-L%C3%BCneburg\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/George,_Duke_of_Brunswick-L%C3%BCneburg\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Christian_III_of_Denmark\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Dorothea_of_Denmark,_Duchess_of_Brunswick-L%C3%BCneburg\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "0\n", - "PAGE HAS NO LINKS: /wiki/Dorothea_of_Saxe-Lauenburg\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Ernest_Augustus,_Elector_of_Brunswick-L%C3%BCneburg\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/George_I,_Landgrave_of_Hesse-Darmstadt\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Louis_V,_Landgrave_of_Hesse-Darmstadt\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Magdalene_of_Lippe\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Anne_Eleonore_of_Hesse-Darmstadt\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/John_George,_Elector_of_Brandenburg\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Magdalene_of_Brandenburg\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Elisabeth_of_Anhalt-Zerbst\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Louis_VI,_Elector_Palatine\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Frederick_IV,_Elector_Palatine\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Elisabeth_of_Hesse\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Frederick_V,_Elector_Palatine\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/William_the_Silent\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Louise_Juliana_of_Orange-Nassau\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Charlotte_of_Bourbon\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Sophia_of_Hanover\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Henry_Stuart,_Lord_Darnley\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/James_VI_and_I\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Mary,_Queen_of_Scots\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Elizabeth_of_Bohemia\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Frederick_II_of_Denmark\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Anne_of_Denmark\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Sophie_of_Mecklenburg-G%C3%BCstrow\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/James_VI_and_I\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Charles_I_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Elizabeth_of_Bohemia\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/George,_Duke_of_Brunswick-L%C3%BCneburg\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Mary,_Princess_Royal_and_Princess_of_Orange\n", - "487\n", - "460\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Sophia_of_Hanover\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Ernest_Augustus,_Elector_of_Brunswick-L%C3%BCneburg\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/George_William,_Duke_of_Brunswick-L%C3%BCneburg\n", - "526\n", - "308\n", - "491\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/James_Francis_Edward_Stuart\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Sophia_Dorothea_of_Celle\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Prince_William,_Duke_of_Gloucester\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/George_II_of_Great_Britain\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Sophia_Dorothea_of_Hanover\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Old_Style_and_New_Style_dates\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Julian_calendar\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Old_Style_and_New_Style_dates\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Gregorian_calendar\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Osnabr%C3%BCck\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Louis_Mor%C3%A9ri\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Electress_Sophia\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Old_Style_and_New_Style_dates\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Gregorian_calendar\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Ernest_Augustus,_Duke_of_York_and_Albany\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Old_Style_and_New_Style_dates\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Gregorian_calendar\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Thomas_Lathbury\n", - "494\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Alison_Weir_(historian)\n", - "494\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Ragnhild_Hatton\n", - "494\n", - "494\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/BBC_Worldwide_Ltd\n", - "494\n", - "494\n", - "494\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Legislation.gov.uk\n", - "494\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Digital_object_identifier\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/John_H._Plumb\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Basil_Williams_(historian)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/The_Journal_of_Modern_History\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Digital_object_identifier\n", - "494\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/The_English_Historical_Review\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Digital_object_identifier\n", - "494\n", - "494\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Gerald_Isaacs,_2nd_Marquess_of_Reading\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Jeremy_Black_(historian)\n", - "494\n", - "494\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/William_Makepeace_Thackeray\n", - "494\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/John_H._Plumb\n", - "494\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/John_Pinches\n", - "494\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Digital_object_identifier\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/John_Cannon_(historian)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Digital_object_identifier\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Jeremy_Black_(historian)\n", - "494\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/J._P._Carswell\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/A._L._Rowse\n", - "494\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Gerald_Isaacs,_2nd_Marquess_of_Reading\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Digital_object_identifier\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Ragnhild_Hatton\n", - "494\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/John_H._Plumb\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Basil_Williams_(historian)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/JSTOR\n", - "494\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Antonia_Fraser\n", - "494\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Lewis_Namier\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/The_National_Archives_(United_Kingdom)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/National_Portrait_Gallery,_London\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/House_of_Hanover\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/House_of_Welf\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Ernest_Augustus,_Elector_of_Brunswick-L%C3%BCneburg\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Principality_of_Calenberg\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Electorate_of_Brunswick-L%C3%BCneburg\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Principality_of_L%C3%BCneburg\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Principality_of_Calenberg\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/George_William,_Duke_of_Brunswick-L%C3%BCneburg\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Principality_of_L%C3%BCneburg\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Duke_of_Brunswick-L%C3%BCneburg\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Elector_of_Brunswick-L%C3%BCneburg\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/George_II_of_Great_Britain\n", - "491\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/List_of_British_monarchs\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Monarchy_of_Ireland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/List_of_English_monarchs\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/List_of_Scottish_monarchs\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/List_of_British_monarchs\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/%C3%86thelstan\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Edmund_I\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Eadred\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Eadwig\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Edgar_the_Peaceful\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Edward_the_Martyr\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/%C3%86thelred_the_Unready\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Sweyn_Forkbeard\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Edmund_Ironside\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Cnut_the_Great\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Harold_Harefoot\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Harthacnut\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Edward_the_Confessor\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Harold_Godwinson\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Edgar_%C3%86theling\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/William_the_Conqueror\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/William_II_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Henry_I_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Stephen,_King_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Empress_Matilda\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Henry_II_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Henry_the_Young_King\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Richard_I_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/John,_King_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Henry_III_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Edward_I_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Edward_II_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Edward_III_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Richard_II_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Henry_IV_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Henry_V_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Henry_VI_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Edward_IV_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Edward_V_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Richard_III_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Henry_VII_of_England\n", - "559\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Edward_VI_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Lady_Jane_Grey\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Mary_I_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Philip_II_of_Spain\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Elizabeth_I_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Kenneth_MacAlpin\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Domnall_mac_Ailp%C3%ADn\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Causant%C3%ADn_mac_Cin%C3%A1eda\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/%C3%81ed_mac_Cin%C3%A1eda\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Giric\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Eochaid,_son_of_Rhun\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Donald_II_of_Scotland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Constantine_II_of_Scotland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Malcolm_I_of_Scotland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Indulf\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Dub,_King_of_Scotland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Cuil%C3%A9n\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Amla%C3%ADb,_King_of_Scotland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Kenneth_II_of_Scotland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Constantine_III_of_Scotland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Kenneth_III_of_Scotland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Malcolm_II_of_Scotland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Duncan_I_of_Scotland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Macbeth,_King_of_Scotland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Lulach\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "0\n", - "PAGE HAS NO LINKS: /wiki/Malcolm_III_of_Scotland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Donald_III_of_Scotland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Duncan_II_of_Scotland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Donald_III_of_Scotland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Edgar,_King_of_Scotland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Alexander_I_of_Scotland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/David_I_of_Scotland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Malcolm_IV_of_Scotland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/William_the_Lion\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Alexander_II_of_Scotland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Alexander_III_of_Scotland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Margaret,_Maid_of_Norway\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Guardian_of_Scotland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/John_Balliol\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Guardian_of_Scotland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Robert_the_Bruce\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/David_II_of_Scotland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Edward_Balliol\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Robert_II_of_Scotland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Robert_III_of_Scotland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/James_I_of_Scotland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/James_II_of_Scotland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/James_III_of_Scotland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/James_IV_of_Scotland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/James_V_of_Scotland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Mary,_Queen_of_Scots\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/James_VI_and_I\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Union_of_the_Crowns\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/James_VI_and_I\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Charles_I_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Commonwealth_of_England\n", - "487\n", - "460\n", - "526\n", - "308\n", - "491\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Acts_of_Union_1707\n", - "491\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/George_II_of_Great_Britain\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/George_III_of_the_United_Kingdom\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/George_IV_of_the_United_Kingdom\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/William_IV_of_the_United_Kingdom\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Queen_Victoria\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Edward_VII\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/George_V\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Edward_VIII\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/George_VI\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Elizabeth_II\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/History_of_Hanover\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Electorate_of_Brunswick-L%C3%BCneburg\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Ernest_Augustus,_Elector_of_Brunswick-L%C3%BCneburg\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/George_II_of_Great_Britain\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/George_III_of_the_United_Kingdom\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Kingdom_of_Hanover\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/George_III_of_the_United_Kingdom\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/George_IV_of_the_United_Kingdom\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/William_IV_of_the_United_Kingdom\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Ernest_Augustus,_King_of_Hanover\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/George_V_of_Hanover\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/List_of_British_monarchs\n", - "469\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Acts_of_Union_1707\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Great_Britain_in_the_Seven_Years%27_War\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Jacobitism\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Jacobite_risings\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/War_of_Jenkins%27_Ear\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/French_and_Indian_War\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Boston_Massacre\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/American_Revolutionary_War\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Fourth_Anglo-Dutch_War\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/French_Revolutionary_Wars\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Acts_of_Union_1800\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/House_of_Stuart\n", - "491\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/House_of_Hanover\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/George_II_of_Great_Britain\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/George_III_of_the_United_Kingdom\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Parliament_of_Great_Britain\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/House_of_Lords\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/House_of_Commons_of_Great_Britain\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/List_of_Parliaments_of_Great_Britain\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/List_of_Acts_of_the_Parliament_of_Great_Britain\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/List_of_Acts_of_the_Parliament_of_Great_Britain,_1707%E2%80%931719\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/List_of_Acts_of_the_Parliament_of_Great_Britain,_1720%E2%80%931739\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/List_of_Acts_of_the_Parliament_of_Great_Britain,_1740%E2%80%931759\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/List_of_Acts_of_the_Parliament_of_Great_Britain,_1760%E2%80%931779\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/List_of_Acts_of_the_Parliament_of_Great_Britain,_1780%E2%80%931800\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Elections_in_Great_Britain\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/British_general_election,_1708\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/British_general_election,_1710\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/British_general_election,_1713\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/British_general_election,_1715\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/British_general_election,_1722\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/British_general_election,_1727\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/British_general_election,_1734\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/British_general_election,_1741\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/British_general_election,_1747\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/British_general_election,_1754\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/British_general_election,_1761\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/British_general_election,_1768\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/British_general_election,_1774\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/British_general_election,_1780\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/British_general_election,_1784\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/British_general_election,_1790\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/British_general_election,_1796\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/List_of_British_monarchs\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Peerage_of_Great_Britain\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Privy_Council_of_Great_Britain\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Prime_Minister_of_Great_Britain\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/List_of_Prime_Ministers_of_Great_Britain\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Whigs_(British_political_party)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Tories_(British_political_party)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Whig_Junto\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Patriot_Whigs\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Kit-Cat_Club\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Great_Britain\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Queen_Anne_style_architecture\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Georgian_architecture\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/East_India_Company\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/British_Empire\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Longitude_prize\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Window_tax\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Proclamation_of_Rebellion\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/South_Sea_Company\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Speenhamland_system\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Flag_of_Great_Britain\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Royal_coat_of_arms_of_Great_Britain\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Virtual_International_Authority_File\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Library_of_Congress_Control_Number\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/International_Standard_Name_Identifier\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Integrated_Authority_File\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Syst%C3%A8me_universitaire_de_documentation\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Biblioth%C3%A8que_nationale_de_France\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/BIBSYS\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/National_Diet_Library\n", - "405\n", - "405\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Main_Page\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Main_Page\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/George_II_of_Great_Britain\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Thomas_Hudson_(painter)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/King_of_Great_Britain\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/List_of_Irish_monarchs\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Elector_of_Hanover\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Style_of_the_British_sovereign#Styles_of_British_sovereigns\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Coronation_of_the_British_monarch\n", - "406\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/George_III\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Prime_Minister_of_the_United_Kingdom\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Robert_Walpole\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Spencer_Compton,_1st_Earl_of_Wilmington\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Henry_Pelham\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Thomas_Pelham-Holles,_1st_Duke_of_Newcastle\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/William_Cavendish,_4th_Duke_of_Devonshire\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Herrenhausen_Gardens\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Leineschloss\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Hanover\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Kensington_Palace\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Westminster_Abbey\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Caroline_of_Ansbach\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Frederick,_Prince_of_Wales\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Anne,_Princess_of_Orange\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Princess_Amelia_of_Great_Britain\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Princess_Caroline_of_Great_Britain\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Prince_George_William_of_Great_Britain\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "0\n", - "PAGE HAS NO LINKS: /wiki/William,_Duke_of_Cumberland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Princess_Mary_of_Great_Britain\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Louise_of_Great_Britain\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Dynasty\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/House_of_Hanover\n", - "406\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Sophia_Dorothea_of_Celle\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Protestant\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/List_of_British_monarchs\n", - "469\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Kingdom_of_Ireland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Duchy_of_Brunswick-L%C3%BCneburg\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Electorate_of_Hanover\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Prince-elector\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Holy_Roman_Empire\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Old_Style_and_New_Style_dates\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/List_of_British_monarchs\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Northern_Germany\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Sophia_of_Hanover\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Act_of_Settlement_1701\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Acts_of_Union_1707\n", - "491\n", - "406\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Parliament_of_Great_Britain\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Frederick,_Prince_of_Wales\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/War_of_the_Austrian_Succession\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Battle_of_Dettingen\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/James_Francis_Edward_Stuart\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Charles_Edward_Stuart\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Jacobite_rebellions\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/George_III_of_the_United_Kingdom\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Sophia_Dorothea_of_Celle\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Sophia_Dorothea_of_Hanover\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Hanover\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Electorate_of_Hanover\n", - "406\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Sophia_Dorothea_of_Celle\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Sophia_Dorothea_of_Hanover\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Ahlden_House\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Cousin#Cousin_chart\n", - "491\n", - "548\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Kingdom_of_Scotland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Kingdom_of_Ireland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Act_of_Settlement_1701\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Parliament_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Consanguinity\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Sophia_of_Hanover\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Sophia_Naturalization_Act_1705\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Knight_of_the_Garter\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Duke_of_Cambridge\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Peerage_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Acts_of_Union_1707\n", - "469\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Caroline_of_Ansbach\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Godfrey_Kneller\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Hedvig_Sophia_of_Sweden\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Holstein-Gottorp\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Principality_of_Ansbach\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Caroline_of_Ansbach\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Sophia_Charlotte_of_Hanover\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Edmund_Poley\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Herrenhausen_Gardens\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/War_of_the_Spanish_Succession\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Flanders\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Frederick,_Prince_of_Wales\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Smallpox\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Battle_of_Oudenarde\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/John_Churchill,_1st_Duke_of_Marlborough\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Anne,_Princess_Royal_and_Princess_of_Orange\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Princess_Amelia_of_Great_Britain\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Princess_Caroline_of_Great_Britain\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/British_Whig_Party\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Peer_of_the_realm\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/House_of_Lords\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/The_Hague\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Greenwich\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Prince_of_Wales\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Royal_progress\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Chichester\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Havant\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Portsmouth\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Guildford\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Hampton_Court_Palace\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Theatre_Royal,_Drury_Lane\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Prince_George_William_of_Great_Britain\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Lord_Chamberlain\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Thomas_Pelham-Holles,_1st_Duke_of_Newcastle-upon-Tyne\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Baptism\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/St_James%27s_Palace\n", - "406\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Leicester_Square\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Sir_Robert_Walpole\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Charles_Townshend,_2nd_Viscount_Townshend\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Prince_William,_Duke_of_Cumberland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Princess_Mary_of_Great_Britain\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Louise_of_Great_Britain\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Richmond,_London\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/South_Sea_Bubble\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/British_Whig_Party\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Tory\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Act_of_Settlement_1701\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Charles_Jervas\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Westminster_Abbey\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/George_Frideric_Handel\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Zadok_the_Priest\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Spencer_Compton,_1st_Earl_of_Wilmington\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Civil_list\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Enoch_Seeman\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Anglo-Spanish_War_(1727%E2%80%931729)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/War_of_the_Polish_Succession\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Excise\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Court_(royal)#Court_officials\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Frederick,_Prince_of_Wales\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Frederick_William_I_of_Prussia\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Wilhelmine_of_Prussia,_Margravine_of_Brandenburg-Bayreuth\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Princess_Augusta_of_Saxe-Gotha\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Poor_rate\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Haemorrhoids\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Henrietta_Howard,_Countess_of_Suffolk\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Woman_of_the_Bedchamber\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Amalie_von_Wallmoden,_Countess_of_Yarmouth\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Johann_Ludwig_von_Wallmoden\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/War_of_Jenkins%27_Ear\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/War_of_the_Austrian_Succession\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Holy_Roman_Emperor_Charles_VI\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Maria_Theresa\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/British_general_election,_1741\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Spencer_Compton,_1st_Earl_of_Wilmington\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/John_Carteret,_2nd_Earl_Granville\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Henry_Pelham\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Battle_of_Dettingen\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/John_Wootton\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Half_crown_(British_coin)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Spanish_treasure_fleet\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Lima\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/War_of_the_Austrian_Succession\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Sale_of_commissions\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Battle_of_Dettingen\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/William_Pitt,_1st_Earl_of_Chatham\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/William_Pulteney,_1st_Earl_of_Bath\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Short-lived_ministry\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Jacobite_risings\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/James_Francis_Edward_Stuart\n", - "460\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Jacobite_rising_of_1715\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Jacobite_rising_of_1719\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Charles_Edward_Stuart\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Battle_of_Prestonpans\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Prince_William,_Duke_of_Cumberland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Battle_of_Culloden\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/House_of_Stuart\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Green_Park,_London\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Music_for_the_Royal_Fireworks\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/John_Shackleton\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/British_general_election,_1747\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Leicester_Square\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/George_III_of_the_United_Kingdom\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Princess_Augusta_of_Saxe-Gotha\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Thomas_Pelham-Holles,_1st_Duke_of_Newcastle\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Colonization_of_North_America\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Frederick_the_Great\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Siege_of_Fort_St_Philip_(1756)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Seven_Years%27_War\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/William_Cavendish,_4th_Duke_of_Devonshire\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/William_Pitt,_1st_Earl_of_Chatham\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Secretary_of_State_for_the_Southern_Department\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/James_Waldegrave,_2nd_Earl_Waldegrave\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Landgraviate_of_Hesse-Kassel\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Brunswick-Wolfenb%C3%BCttel\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Saxony\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Robert_Clive\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "0\n", - "PAGE HAS NO LINKS: /wiki/Battle_of_Arcot\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Battle_of_Plassey\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Prince_William,_Duke_of_Cumberland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Convention_of_Klosterzeven\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Invasion_of_Hanover_(1757)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Convention_of_Klosterzeven\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Annus_Mirabilis_of_1759\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Battle_of_the_Plains_of_Abraham\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Invasion_of_Guadeloupe_(1759)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Planned_French_Invasion_of_Britain_(1759)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Battle_of_Lagos\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Battle_of_Quiberon_Bay\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Battle_of_Minden\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Close_stool\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Princess_Amelia_of_Great_Britain\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Aortic_aneurysm\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/George_III_of_the_United_Kingdom\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Westminster_Abbey\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Westminster_Abbey\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/John_Van_Nost\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Golden_Square\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/British_Museum\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Georg_August_University_of_G%C3%B6ttingen\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Electorate_of_Hanover\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Asteroid\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/359_Georgia\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/University_of_Dublin\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Columbia_University\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Province_of_Georgia\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/John_Hervey,_2nd_Baron_Hervey\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Horace_Walpole\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/James_Caulfeild,_1st_Earl_of_Charlemont\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/James_Waldegrave,_2nd_Earl_Waldegrave\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Elizabeth_Montagu\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/English_claim_to_the_French_throne\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Fidei_defensor\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Royal_coat_of_arms_of_the_United_Kingdom\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Inescutcheon\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Gules\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Cadency_labels_of_the_British_royal_family\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Argent\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Coronet\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/George_I_of_Great_Britain#Arms\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Frederick,_Prince_of_Wales\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Princess_Augusta_of_Saxe-Gotha\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/George_III_of_the_United_Kingdom\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Anne,_Princess_Royal_and_Princess_of_Orange\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/William_IV,_Prince_of_Orange\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Princess_Amelia_of_Great_Britain\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Princess_Caroline_of_Great_Britain\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Prince_George_William_of_Great_Britain\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Prince_William,_Duke_of_Cumberland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Princess_Mary_of_Great_Britain\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Frederick_II,_Landgrave_of_Hesse-Kassel\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Louise_of_Great_Britain\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Frederick_V_of_Denmark\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Old_Style_and_New_Style_dates\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/George,_Duke_of_Brunswick-L%C3%BCneburg\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Ernest_Augustus,_Elector_of_Brunswick-L%C3%BCneburg\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Anne_Eleonore_of_Hesse-Darmstadt\n", - "406\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Frederick_V,_Elector_Palatine\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Sophia_of_Hanover\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Elizabeth_Stuart,_Queen_of_Bohemia\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/George,_Duke_of_Brunswick-L%C3%BCneburg\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/George_William,_Duke_of_Brunswick-L%C3%BCneburg\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Anne_Eleonore_of_Hesse-Darmstadt\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Sophia_Dorothea_of_Celle\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/%C3%89l%C3%A9onore_Desmier_d%27Olbreuse\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Old_Style_and_New_Style_dates\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Julian_calendar\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Old_Style_and_New_Style_dates\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Gregorian_calendar\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/British_Museum\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Wayback_Machine\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Horace_Walpole\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Frank_Nicholls\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/The_London_Gazette\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/National_Maritime_Museum\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Mike_Ashley_(writer)\n", - "494\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Nicholas_Best\n", - "494\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Jeremy_Black_(historian)\n", - "494\n", - "494\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/John_Cannon_(historian)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Digital_object_identifier\n", - "494\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Digital_object_identifier\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/John_Pinches\n", - "494\n", - "494\n", - "494\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/John_Van_der_Kiste\n", - "494\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Alison_Weir\n", - "494\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/A._L._Rowse\n", - "494\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Charles_Grant_Robertson\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Basil_Williams_(historian)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/BBC\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/The_National_Archives_(United_Kingdom)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/National_Portrait_Gallery,_London\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/House_of_Hanover\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/House_of_Welf\n", - "406\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/List_of_British_monarchs\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Monarchy_of_Ireland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Elector_of_Brunswick-L%C3%BCneburg\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/George_III_of_the_United_Kingdom\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/British_monarchy\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/James_Francis_Edward_Stuart\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Prince_of_Wales\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Duke_of_Cornwall\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Duke_of_Rothesay\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Frederick,_Prince_of_Wales\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/James_Butler,_2nd_Duke_of_Ormonde\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/List_of_Chancellors_of_the_University_of_Dublin\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Frederick,_Prince_of_Wales\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/List_of_English_monarchs\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/List_of_Scottish_monarchs\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/List_of_British_monarchs\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/%C3%86thelstan\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Edmund_I\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Eadred\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Eadwig\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Edgar_the_Peaceful\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Edward_the_Martyr\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/%C3%86thelred_the_Unready\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Sweyn_Forkbeard\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Edmund_Ironside\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Cnut_the_Great\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Harold_Harefoot\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Harthacnut\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Edward_the_Confessor\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Harold_Godwinson\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Edgar_%C3%86theling\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/William_the_Conqueror\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/William_II_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Henry_I_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Stephen,_King_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Empress_Matilda\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Henry_II_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Henry_the_Young_King\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Richard_I_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/John,_King_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Henry_III_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Edward_I_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Edward_II_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Edward_III_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Richard_II_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Henry_IV_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Henry_V_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Henry_VI_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Edward_IV_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Edward_V_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Richard_III_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Henry_VII_of_England\n", - "559\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Edward_VI_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Lady_Jane_Grey\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Mary_I_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Philip_II_of_Spain\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Elizabeth_I_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Kenneth_MacAlpin\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Domnall_mac_Ailp%C3%ADn\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Causant%C3%ADn_mac_Cin%C3%A1eda\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/%C3%81ed_mac_Cin%C3%A1eda\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Giric\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Eochaid,_son_of_Rhun\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Donald_II_of_Scotland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Constantine_II_of_Scotland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Malcolm_I_of_Scotland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Indulf\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "0\n", - "PAGE HAS NO LINKS: /wiki/Dub,_King_of_Scotland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Cuil%C3%A9n\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Amla%C3%ADb,_King_of_Scotland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Kenneth_II_of_Scotland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Constantine_III_of_Scotland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Kenneth_III_of_Scotland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Malcolm_II_of_Scotland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Duncan_I_of_Scotland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Macbeth,_King_of_Scotland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Lulach\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Malcolm_III_of_Scotland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Donald_III_of_Scotland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Duncan_II_of_Scotland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Donald_III_of_Scotland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Edgar,_King_of_Scotland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Alexander_I_of_Scotland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/David_I_of_Scotland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Malcolm_IV_of_Scotland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/William_the_Lion\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Alexander_II_of_Scotland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Alexander_III_of_Scotland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Margaret,_Maid_of_Norway\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Guardian_of_Scotland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/John_Balliol\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Guardian_of_Scotland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Robert_the_Bruce\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/David_II_of_Scotland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Edward_Balliol\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Robert_II_of_Scotland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Robert_III_of_Scotland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/James_I_of_Scotland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/James_II_of_Scotland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/James_III_of_Scotland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/James_IV_of_Scotland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/James_V_of_Scotland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Mary,_Queen_of_Scots\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/James_VI_and_I\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Union_of_the_Crowns\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/James_VI_and_I\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Charles_I_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Commonwealth_of_England\n", - "487\n", - "460\n", - "526\n", - "308\n", - "491\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Acts_of_Union_1707\n", - "491\n", - "406\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/George_III_of_the_United_Kingdom\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/George_IV_of_the_United_Kingdom\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/William_IV_of_the_United_Kingdom\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Queen_Victoria\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Edward_VII\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/George_V\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Edward_VIII\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/George_VI\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Elizabeth_II\n", - "469\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Acts_of_Union_1707\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Great_Britain_in_the_Seven_Years%27_War\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Jacobitism\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Jacobite_risings\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/War_of_Jenkins%27_Ear\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/French_and_Indian_War\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Boston_Massacre\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/American_Revolutionary_War\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Fourth_Anglo-Dutch_War\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/French_Revolutionary_Wars\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Acts_of_Union_1800\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/House_of_Stuart\n", - "491\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/House_of_Hanover\n", - "406\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/George_III_of_the_United_Kingdom\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Parliament_of_Great_Britain\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/House_of_Lords\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/House_of_Commons_of_Great_Britain\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/List_of_Parliaments_of_Great_Britain\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/List_of_Acts_of_the_Parliament_of_Great_Britain\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/List_of_Acts_of_the_Parliament_of_Great_Britain,_1707%E2%80%931719\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/List_of_Acts_of_the_Parliament_of_Great_Britain,_1720%E2%80%931739\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/List_of_Acts_of_the_Parliament_of_Great_Britain,_1740%E2%80%931759\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/List_of_Acts_of_the_Parliament_of_Great_Britain,_1760%E2%80%931779\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/List_of_Acts_of_the_Parliament_of_Great_Britain,_1780%E2%80%931800\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Elections_in_Great_Britain\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/British_general_election,_1708\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/British_general_election,_1710\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/British_general_election,_1713\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/British_general_election,_1715\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/British_general_election,_1722\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/British_general_election,_1727\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/British_general_election,_1734\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/British_general_election,_1741\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/British_general_election,_1747\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/British_general_election,_1754\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/British_general_election,_1761\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/British_general_election,_1768\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/British_general_election,_1774\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/British_general_election,_1780\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/British_general_election,_1784\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/British_general_election,_1790\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/British_general_election,_1796\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/List_of_British_monarchs\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Peerage_of_Great_Britain\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Privy_Council_of_Great_Britain\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Prime_Minister_of_Great_Britain\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/List_of_Prime_Ministers_of_Great_Britain\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Whigs_(British_political_party)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Tories_(British_political_party)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Whig_Junto\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Patriot_Whigs\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Kit-Cat_Club\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Great_Britain\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Queen_Anne_style_architecture\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Georgian_architecture\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/East_India_Company\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/British_Empire\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Longitude_prize\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Window_tax\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Proclamation_of_Rebellion\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/South_Sea_Company\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Speenhamland_system\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Flag_of_Great_Britain\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Royal_coat_of_arms_of_Great_Britain\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/British_prince\n", - "406\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Frederick,_Prince_of_Wales\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Prince_George_William_of_Great_Britain\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Prince_William,_Duke_of_Cumberland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/George_III_of_the_United_Kingdom\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Prince_Edward,_Duke_of_York_and_Albany\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Prince_William_Henry,_Duke_of_Gloucester_and_Edinburgh\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Prince_Henry,_Duke_of_Cumberland_and_Strathearn\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Prince_Frederick_of_Great_Britain\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/George_IV_of_the_United_Kingdom\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Prince_Frederick,_Duke_of_York_and_Albany\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/William_IV_of_the_United_Kingdom\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Prince_Edward,_Duke_of_Kent_and_Strathearn\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Ernest_Augustus,_King_of_Hanover\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Prince_Augustus_Frederick,_Duke_of_Sussex\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Prince_Adolphus,_Duke_of_Cambridge\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Prince_Octavius_of_Great_Britain\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Prince_Alfred_of_Great_Britain\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Prince_William_Frederick,_Duke_of_Gloucester_and_Edinburgh\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Albert,_Prince_Consort\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/George_V_of_Hanover\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Prince_George,_Duke_of_Cambridge\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Edward_VII\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Alfred,_Duke_of_Saxe-Coburg_and_Gotha\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Prince_Arthur,_Duke_of_Connaught_and_Strathearn\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Prince_Leopold,_Duke_of_Albany\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Prince_Ernest_Augustus,_3rd_Duke_of_Cumberland_and_Teviotdale\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Prince_Albert_Victor,_Duke_of_Clarence_and_Avondale\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/George_V\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Prince_Alexander_John_of_Wales\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Alfred,_Hereditary_Prince_of_Saxe-Coburg_and_Gotha\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Prince_Arthur_of_Connaught\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Charles_Edward,_Duke_of_Saxe-Coburg_and_Gotha\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Prince_George_William_of_Hanover_(1880%E2%80%931912)\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "0\n", - "PAGE HAS NO LINKS: /wiki/Prince_Christian_of_Hanover_(1885%E2%80%931901)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Ernest_Augustus,_Duke_of_Brunswick\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Edward_VIII\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/George_VI\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Prince_Henry,_Duke_of_Gloucester\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Prince_George,_Duke_of_Kent\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Prince_John_of_the_United_Kingdom\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Alastair_Windsor,_2nd_Duke_of_Connaught_and_Strathearn\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Johann_Leopold,_Hereditary_Prince_of_Saxe-Coburg_and_Gotha\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Prince_Hubertus_of_Saxe-Coburg_and_Gotha_(1909%E2%80%931943)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Prince_Ernest_Augustus_of_Hanover_(1914%E2%80%931987)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Prince_George_William_of_Hanover_(1915%E2%80%932006)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Prince_Philip,_Duke_of_Edinburgh\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Prince_William_of_Gloucester\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Prince_Richard,_Duke_of_Gloucester\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Prince_Edward,_Duke_of_Kent\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Prince_Michael_of_Kent\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Charles,_Prince_of_Wales\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Prince_Andrew,_Duke_of_York\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Prince_Edward,_Earl_of_Wessex\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Prince_William,_Duke_of_Cambridge\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Prince_Harry\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/James,_Viscount_Severn\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Prince_George_of_Cambridge\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Prince_Consort\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/James,_Viscount_Severn#Titles_and_styles\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Prince_of_Wales\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Edward_II_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Edward_the_Black_Prince\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Richard_II_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Henry_V_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Edward_of_Westminster,_Prince_of_Wales\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Richard_of_York,_3rd_Duke_of_York\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Edward_V_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Edward_of_Middleham,_Prince_of_Wales\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Arthur,_Prince_of_Wales\n", - "559\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Edward_VI_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Henry_Frederick,_Prince_of_Wales\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Charles_I_of_England\n", - "487\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/James_Francis_Edward_Stuart\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Frederick,_Prince_of_Wales\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/George_III_of_the_United_Kingdom\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/George_IV_of_the_United_Kingdom\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Edward_VII\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/George_V\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Edward_VIII\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Charles,_Prince_of_Wales\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Prince_of_Wales%27s_feathers\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Principality_of_Wales\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Duke_of_Cornwall\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Edward_the_Black_Prince\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Richard_II_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Henry_V_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Henry_VI_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Edward_of_Westminster,_Prince_of_Wales\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Richard_of_York,_3rd_Duke_of_York\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Edward_V_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Edward_of_Middleham,_Prince_of_Wales\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Arthur,_Prince_of_Wales\n", - "559\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Henry,_Duke_of_Cornwall\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Henry,_Duke_of_Cornwall\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Henry,_Duke_of_Cornwall\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Edward_VI_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Henry_Frederick,_Prince_of_Wales\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Charles_I_of_England\n", - "487\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/James_Francis_Edward_Stuart\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Frederick,_Prince_of_Wales\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/George_IV_of_the_United_Kingdom\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Edward_VII\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/George_V\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Edward_VIII\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Charles,_Prince_of_Wales\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Duke_of_Rothesay\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/David_Stewart,_Duke_of_Rothesay\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/James_I_of_Scotland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Alexander_Stewart,_Duke_of_Rothesay\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/James_II_of_Scotland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/James_III_of_Scotland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/James_IV_of_Scotland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/James,_Duke_of_Rothesay_(born_1507)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Arthur_Stewart,_Duke_of_Rothesay\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/James_V_of_Scotland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/James,_Duke_of_Rothesay_(born_1540)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/James_VI_and_I\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Henry_Frederick,_Prince_of_Wales\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Charles_I_of_England\n", - "487\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/James_Francis_Edward_Stuart\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Frederick,_Prince_of_Wales\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/George_IV_of_the_United_Kingdom\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Edward_VII\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/George_V\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Edward_VIII\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Charles,_Prince_of_Wales\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Duke_of_Cambridge\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Charles_Stuart,_Duke_of_Cambridge_(born_1660)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/James_Stuart,_Duke_of_Cambridge\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Edgar_Stuart,_Duke_of_Cambridge\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Charles_Stuart,_Duke_of_Cambridge_(born_1677)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Prince_Adolphus,_Duke_of_Cambridge\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Prince_George,_Duke_of_Cambridge\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Prince_William,_Duke_of_Cambridge\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/History_of_Hanover\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Electorate_of_Brunswick-L%C3%BCneburg\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Ernest_Augustus,_Elector_of_Brunswick-L%C3%BCneburg\n", - "406\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/George_III_of_the_United_Kingdom\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Kingdom_of_Hanover\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/George_III_of_the_United_Kingdom\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/George_IV_of_the_United_Kingdom\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/William_IV_of_the_United_Kingdom\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Ernest_Augustus,_King_of_Hanover\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/George_V_of_Hanover\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/List_of_British_monarchs\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Virtual_International_Authority_File\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Library_of_Congress_Control_Number\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/International_Standard_Name_Identifier\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Integrated_Authority_File\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/LIBRIS\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Syst%C3%A8me_universitaire_de_documentation\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Biblioth%C3%A8que_nationale_de_France\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/BIBSYS\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Union_List_of_Artist_Names\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Institute_for_Advanced_Technology_in_the_Humanities\n", - "463\n", - "463\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Main_Page\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Main_Page\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/George_III_of_Great_Britain\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/George_III_(disambiguation)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Allan_Ramsay_(artist)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/List_of_British_monarchs\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Elector_of_Hanover\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Style_of_the_British_sovereign#Styles_of_British_sovereigns\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Coronation_of_the_British_monarch\n", - "464\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/George_IV\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/George_IV_of_the_United_Kingdom\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Prime_Minister_of_the_United_Kingdom\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Thomas_Pelham-Holles,_1st_Duke_of_Newcastle\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/John_Stuart,_3rd_Earl_of_Bute\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/George_Grenville\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Charles_Watson-Wentworth,_2nd_Marquess_of_Rockingham\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/William_Pitt,_1st_Earl_of_Chatham\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Augustus_FitzRoy,_3rd_Duke_of_Grafton\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Frederick_North,_Lord_North\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/William_Petty,_2nd_Earl_of_Shelburne\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/William_Cavendish-Bentinck,_3rd_Duke_of_Portland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/William_Pitt_the_Younger\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Henry_Addington,_1st_Viscount_Sidmouth\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/William_Grenville,_1st_Baron_Grenville\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Spencer_Perceval\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Robert_Jenkinson,_2nd_Earl_of_Liverpool\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "0\n", - "PAGE HAS NO LINKS: /wiki/Old_Style_and_New_Style_dates\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Norfolk_House\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/St._James%27s_Square\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Windsor_Castle\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/St_George%27s_Chapel,_Windsor_Castle\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Charlotte_of_Mecklenburg-Strelitz\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/George_IV_of_the_United_Kingdom\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Prince_Frederick,_Duke_of_York_and_Albany\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/William_IV_of_the_United_Kingdom\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Charlotte,_Princess_Royal\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Prince_Edward,_Duke_of_Kent_and_Strathearn\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Princess_Augusta_Sophia_of_the_United_Kingdom\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Princess_Elizabeth_of_the_United_Kingdom\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Ernest_Augustus,_King_of_Hanover\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Prince_Augustus_Frederick,_Duke_of_Sussex\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Prince_Adolphus,_Duke_of_Cambridge\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Princess_Mary,_Duchess_of_Gloucester_and_Edinburgh\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Princess_Sophia_of_the_United_Kingdom\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Prince_Octavius_of_Great_Britain\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Prince_Alfred_of_Great_Britain\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Princess_Amelia_of_the_United_Kingdom\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Dynasty\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/House_of_Hanover\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Frederick,_Prince_of_Wales\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Princess_Augusta_of_Saxe-Gotha\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/King_of_Great_Britain\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/King_of_Ireland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Acts_of_Union_1800\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/United_Kingdom_of_Great_Britain_and_Ireland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Prince-elector\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Electorate_of_Brunswick-L%C3%BCneburg\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Holy_Roman_Empire\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/King_of_Hanover\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/House_of_Hanover\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Seven_Years%27_War\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/American_Revolutionary_War\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/French_Revolution\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/First_French_Empire\n", - "1460\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Battle_of_Waterloo\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Mental_disorder\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Porphyria\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Regency_era\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/George_IV_of_the_United_Kingdom\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Prince_Regent\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Prince_Edward,_Duke_of_York_and_Albany\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Francis_Ayscough\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Dean_(Christianity)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Bristol_Cathedral\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Norfolk_House\n", - "464\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Frederick,_Prince_of_Wales\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Princess_Augusta_of_Saxe-Gotha\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Thomas_Secker\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/St_James%27s_Church,_Piccadilly\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Bishop_of_Oxford\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Frederick_I_of_Sweden\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Charles_Calvert,_5th_Baron_Baltimore\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Frederick_III,_Duke_of_Saxe-Gotha-Altenburg\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Henry_Brydges,_2nd_Duke_of_Chandos\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Sophia_Dorothea_of_Hanover\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/James_Hamilton,_4th_Duke_of_Hamilton#Marriage_and_issue\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Leicester_Square\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Prince_Edward,_Duke_of_York_and_Albany\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Church_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Joseph_Addison\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Cato,_a_Tragedy\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Romney_Sedgwick\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Heir_apparent\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Duke_of_Edinburgh\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Prince_of_Wales\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Prince_of_Wales\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Jean-%C3%89tienne_Liotard\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/St_James%27s_Palace\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/John_Stuart,_3rd_Earl_of_Bute\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Prime_Minister_of_the_United_Kingdom\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Dowager\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Lady_Sarah_Lennox\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Charles_Lennox,_3rd_Duke_of_Richmond\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Princess_Sophie_Caroline_of_Brunswick-Wolfenb%C3%BCttel\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Frederick,_Margrave_of_Brandenburg-Bayreuth\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Chapels_Royal\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/St_James%27s_Palace\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Charlotte_of_Mecklenburg-Strelitz\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Westminster_Abbey\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Buckingham_Palace\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Kew_Palace\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Windsor_Castle\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Weymouth,_Dorset\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Great_Britain_in_the_Seven_Years%27_War\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Philip_Yorke,_1st_Earl_of_Hardwicke\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Seven_Years%27_War\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Tory\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Whigs_(British_political_party)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Crown_land\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Crown_Estate\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Civil_list\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Royal_Academy_of_Arts\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Johannes_Vermeer\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/The_Music_Lesson\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Canaletto\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/King%27s_Library\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Allan_Ramsay_(artist)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Thomas_Pelham-Holles,_1st_Duke_of_Newcastle\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/John_Stuart,_3rd_Earl_of_Bute\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/John_Wilkes\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/The_North_Briton\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Seditious_libel\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/House_of_Commons_of_the_United_Kingdom\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Treaty_of_Paris_(1763)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/George_Grenville\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Royal_Proclamation_of_1763\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/No_taxation_without_representation\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Stamp_Act_1765\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Stamp_duty\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/William_Pitt,_1st_Earl_of_Chatham\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Charles_Watson-Wentworth,_2nd_Marquess_of_Rockingham\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Earl_of_Chatham\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/History_of_New_York_City_(1665%E2%80%931783)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Augustus_FitzRoy,_3rd_Duke_of_Grafton\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/British_general_election,_1768\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Middlesex_(UK_Parliament_constituency)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Henry_Luttrell,_2nd_Earl_of_Carhampton\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Frederick_North,_Lord_North\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Johann_Zoffany\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Prince_Henry,_Duke_of_Cumberland_and_Strathearn\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Anne,_Duchess_of_Cumberland_and_Strathearn\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Royal_Marriages_Act_1772\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Prince_William_Henry,_Duke_of_Gloucester_and_Edinburgh\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Maria,_Duchess_of_Gloucester_and_Edinburgh\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Edward_Walpole\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Boston_Harbor\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Boston_Tea_Party\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Intolerable_Acts\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Port_of_Boston\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Explanatory_charter\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Province_of_Massachusetts_Bay\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Massachusetts_Government_Act\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/The_Crown\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/American_Revolution\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/American_Revolution\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/American_Revolutionary_War\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/American_Revolutionary_War\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/American_Revolution\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/American_Enlightenment\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Rights_of_Englishmen\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Boston_Tea_Party\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Battles_of_Lexington_and_Concord\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Olive_Branch_Petition\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Proclamation_of_Rebellion\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/United_States_Declaration_of_Independence\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Saratoga_campaign\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/John_Burgoyne\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Battles_of_Saratoga\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Sir_George_Trevelyan,_2nd_Baronet\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Frederick_North,_Lord_North\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/William_Pitt,_1st_Earl_of_Chatham\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Early_modern_France\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "0\n", - "PAGE HAS NO LINKS: /wiki/Treaty_of_Alliance_(1778)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Enlightenment_in_Spain\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Dutch_Republic\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Granville_Leveson-Gower,_1st_Marquess_of_Stafford\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Thomas_Thynne,_1st_Marquess_of_Bath\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Gordon_riots\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Siege_of_Charleston\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Battle_of_Camden\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Battle_of_Guilford_Court_House\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Charles_Cornwallis,_1st_Marquess_Cornwallis\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Siege_of_Yorktown\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Peace_of_Paris_(1783)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Spanish_Florida\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/John_Adams\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/United_States_Ambassador_to_the_United_Kingdom\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/William_Petty,_2nd_Earl_of_Shelburne\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Charles_James_Fox\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/William_Cavendish-Bentinck,_3rd_Duke_of_Portland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Fox%E2%80%93North_Coalition\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Money_bag\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/East_India_Company\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/George_Nugent-Temple-Grenville,_1st_Marquess_of_Buckingham\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/House_of_Lords\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/William_Pitt_the_Younger\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/British_general_election,_1784\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/John_Singleton_Copley\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Guinea_(British_coin)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Porphyria\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Arsenic\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Cheltenham_Spa\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Frederick_William_II_of_Prussia\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Francis_Willis_(physician)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Heir_apparent\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/William_Beechey\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/James_Gillray\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Margaret_Nicholson\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/John_Frith_(assailant)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/James_Hadfield\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Theatre_Royal,_Drury_Lane\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Bannister_Truelock\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/French_Revolution\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/List_of_French_monarchs\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Habeas_corpus\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/War_of_the_First_Coalition\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/War_of_the_Second_Coalition\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Ottoman_Empire\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Napoleon_Bonaparte\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/French_Consulate\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/French_First_Republic\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Acts_of_Union_1800\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/British_claims_to_the_French_throne\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Edward_III_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/British_Emperor\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Anti-Catholicism_in_the_United_Kingdom\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Roman_Catholicism_in_the_United_Kingdom\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Speaker_of_the_House_of_Commons_(United_Kingdom)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Henry_Addington,_1st_Viscount_Sidmouth\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Treaty_of_Amiens\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Hyde_Park,_London\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/The_Times\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Richard_Hurd_(bishop)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Horatio_Nelson,_1st_Viscount_Nelson\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Battle_of_Trafalgar\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/William_Grenville,_1st_Baron_Grenville\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/War_of_the_Third_Coalition\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Ministry_of_All_the_Talents\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/William_Cavendish-Bentinck,_3rd_Duke_of_Portland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Chancellor_of_the_Exchequer\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Spencer_Perceval\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/United_Kingdom_general_election,_1807\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Henry_Hoppner_Meyer\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Cataract\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Rheumatism\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Princess_Amelia_of_the_United_Kingdom\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Regency_Acts#Care_of_King_During_his_Illness,_etc._Act_1811\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Spencer_Perceval\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Assassination_of_Spencer_Perceval\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Robert_Jenkinson,_2nd_Earl_of_Liverpool\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Congress_of_Vienna\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Kingdom_of_Hanover\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Dementia\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Windsor_Castle\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Prince_Edward,_Duke_of_Kent_and_Strathearn\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Prince_Frederick,_Duke_of_York_and_Albany\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/St_George%27s_Chapel,_Windsor_Castle\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/George_IV_of_the_United_Kingdom\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/William_IV_of_the_United_Kingdom\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Queen_Victoria\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Queen_Victoria\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Elizabeth_II\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/List_of_British_monarchs_by_longevity\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/List_of_monarchs_in_Britain_by_length_of_reign\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/British_Agricultural_Revolution\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Industrial_Revolution\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Science_Museum,_London\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/King%27s_Observatory\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Richmond-upon-Thames\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Transit_of_Venus#1761_and_1769\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/William_Herschel\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Uranus\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/40-foot_telescope\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/United_States_Declaration_of_Independence\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Sir_George_Trevelyan,_2nd_Baronet\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Erskine_May,_1st_Baron_Farnborough\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Lewis_Bernstein_Namier\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Herbert_Butterfield\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Style_(manner_of_address)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Fidei_defensor\n", - "469\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Kingdom_of_Ireland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Edward_III_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/British_claims_to_the_French_throne\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Braunschweig\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/L%C3%BCneburg\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Prince-elector\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Holy_Roman_Empire\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Congress_of_Vienna\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Royal_coat_of_arms_of_the_United_Kingdom\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Label_(heraldry)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Azure_(heraldry)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Fleur-de-lis\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Or_(heraldry)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Argent\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Quartering_(heraldry)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Gules\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Attitude_(heraldry)#Passant\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Pale_(heraldry)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Royal_Arms_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Impalement_(heraldry)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Attitude_(heraldry)#Rampant\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Orle_(heraldry)#Tressure\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Royal_coat_of_arms_of_Scotland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Coat_of_arms_of_Ireland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Division_of_the_field\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Variation_of_the_field#Semé\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Attitude_(heraldry)#Courant\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Saxon_Steed\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Charlemagne\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Acts_of_Union_1800\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Electorate_of_Brunswick-L%C3%BCneburg\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Descendants_of_George_III_and_Charlotte_of_Mecklenburg-Strelitz\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Monarchy_of_the_United_Kingdom\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/House_of_Hanover\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/George_IV_of_the_United_Kingdom\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Prince_Frederick,_Duke_of_York_and_Albany\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/William_IV_of_the_United_Kingdom\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Charlotte,_Princess_Royal\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Prince_Edward,_Duke_of_Kent_and_Strathearn\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Princess_Augusta_Sophia_of_the_United_Kingdom\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Princess_Elizabeth_of_the_United_Kingdom\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Ernest_Augustus,_King_of_Hanover\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Prince_Augustus_Frederick,_Duke_of_Sussex\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Prince_Adolphus,_Duke_of_Cambridge\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Princess_Mary,_Duchess_of_Gloucester_and_Edinburgh\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Princess_Sophia_of_the_United_Kingdom\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Prince_Octavius_of_Great_Britain\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Prince_Alfred_of_Great_Britain\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "0\n", - "PAGE HAS NO LINKS: /wiki/Princess_Amelia_of_the_United_Kingdom\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Princess_Charlotte_of_Wales\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/William_IV_of_the_United_Kingdom#Issue\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Princess_Elizabeth_of_Clarence\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Queen_Victoria\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/George_V_of_Hanover\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Prince_George,_Duke_of_Cambridge\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Princess_Augusta_of_Cambridge\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Princess_Mary_Adelaide_of_Cambridge\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Prince_Ernest_Augustus,_3rd_Duke_of_Cumberland_and_Teviotdale\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Princess_Frederica_of_Hanover\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Princess_Marie_of_Hanover\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Princess_Marie_Louise_of_Hanover\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Prince_George_William_of_Hanover_(1880%E2%80%931912)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Princess_Alexandra_of_Hanover_(1882%E2%80%931963)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Princess_Olga_of_Hanover\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Prince_Christian_of_Hanover_(1885%E2%80%931901)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Ernest_Augustus,_Duke_of_Brunswick\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Prince_Ernest_Augustus_of_Hanover_(1914%E2%80%931987)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Prince_George_William_of_Hanover_(1915%E2%80%932006)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Frederica_of_Hanover\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/George_IV_of_the_United_Kingdom\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Caroline_of_Brunswick\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Princess_Charlotte_of_Wales\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Prince_Frederick,_Duke_of_York_and_Albany\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Princess_Frederica_of_Prussia\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/William_IV_of_the_United_Kingdom\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Adelaide_of_Saxe-Meiningen\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Dorothea_Jordan\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/David_Cameron\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Prime_Minister_of_the_United_Kingdom\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Charlotte,_Princess_Royal\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Frederick_of_W%C3%BCrttemberg\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Prince_Edward,_Duke_of_Kent_and_Strathearn\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Princess_Victoria_of_Saxe-Coburg-Saalfeld\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Queen_Victoria\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Elizabeth_II\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Felipe_VI_of_Spain\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Carl_XVI_Gustaf_of_Sweden\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Harald_V_of_Norway\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Margrethe_II_of_Denmark\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Princess_Augusta_Sophia_of_the_United_Kingdom\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Princess_Elizabeth_of_the_United_Kingdom\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Frederick_VI,_Landgrave_of_Hesse-Homburg\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Ernest_Augustus,_King_of_Hanover\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Frederica_of_Mecklenburg-Strelitz\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Constantine_II_of_Greece\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Felipe_VI_of_Spain\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Prince_Augustus_Frederick,_Duke_of_Sussex\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Royal_Marriages_Act_1772\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Lady_Augusta_Murray\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Cecilia_Underwood,_Duchess_of_Inverness\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Duchess_of_Inverness\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Prince_Adolphus,_Duke_of_Cambridge\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Princess_Augusta_of_Hesse-Cassel\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Princess_Mary,_Duchess_of_Gloucester_and_Edinburgh\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Prince_William_Frederick,_Duke_of_Gloucester_and_Edinburgh\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Princess_Sophia_of_the_United_Kingdom\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Prince_Octavius_of_Great_Britain\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Prince_Alfred_of_Great_Britain\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Princess_Amelia_of_the_United_Kingdom\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Ernest_Augustus,_Elector_of_Brunswick-L%C3%BCneburg\n", - "406\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Sophia_of_Hanover\n", - "464\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/George_William,_Duke_of_Brunswick-L%C3%BCneburg\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Sophia_Dorothea_of_Celle\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/%C3%89l%C3%A9onore_Desmier_d%27Olbreuse\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Frederick,_Prince_of_Wales\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Albert_II,_Margrave_of_Brandenburg-Ansbach\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/John_Frederick,_Margrave_of_Brandenburg-Ansbach\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Caroline_of_Ansbach\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/John_George_I,_Duke_of_Saxe-Eisenach\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Princess_Eleonore_Erdmuthe_of_Saxe-Eisenach\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Countess_Johanetta_of_Sayn-Wittgenstein\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Ernest_I,_Duke_of_Saxe-Gotha\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Frederick_I,_Duke_of_Saxe-Gotha-Altenburg\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Princess_Elisabeth_Sophie_of_Saxe-Altenburg\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Frederick_II,_Duke_of_Saxe-Gotha-Altenburg\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Augustus,_Duke_of_Saxe-Weissenfels\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Magdalena_Sibylle_of_Saxe-Weissenfels\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Anna_Maria_of_Mecklenburg-Schwerin\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Princess_Augusta_of_Saxe-Gotha\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/John_VI,_Prince_of_Anhalt-Zerbst\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Karl,_Prince_of_Anhalt-Zerbst\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Sophie_Augusta_of_Holstein-Gottorp\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Princess_Magdalena_Augusta_of_Anhalt-Zerbst\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Augustus,_Duke_of_Saxe-Weissenfels\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Sophia_of_Saxe-Weissenfels,_Princess_of_Anhalt-Zerbst\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Anna_Maria_of_Mecklenburg-Schwerin\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Cultural_depictions_of_George_III_of_the_United_Kingdom\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/The_Madness_of_George_III\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Alan_Bennett\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Nigel_Hawthorne\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/The_Madness_of_King_George\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Nicholas_Hytner\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/List_of_mentally_ill_monarchs\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Acts_of_Union_1800\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Old_Style_and_New_Style_dates\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Julian_calendar\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Quakers\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Hannah_Lightfoot\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Lavinia_Ryves\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Olivia_Serres\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Horace_Walpole\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/The_London_Gazette\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Dictionary_of_National_Biography#Oxford_Dictionary_of_National_Biography\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Digital_object_identifier\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/The_National_Archives_(United_Kingdom)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/The_Guardian\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/John_C._G._R%C3%B6hl\n", - "494\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Digital_object_identifier\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/PubMed_Identifier\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/PLOS_ONE\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Digital_object_identifier\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/The_Lancet\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Digital_object_identifier\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/PubMed_Identifier\n", - "494\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/The_London_Gazette\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/The_London_Gazette\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/The_London_Gazette\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/The_London_Gazette\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/The_London_Gazette\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/The_London_Gazette\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/The_London_Gazette\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/William_Berry_(genealogist)\n", - "494\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/The_London_Gazette\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/The_London_Gazette\n", - "494\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Jeremy_Black_(historian)\n", - "494\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/John_Brooke_(English_historian)\n", - "494\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Herbert_Butterfield\n", - "494\n", - "494\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Antonia_Fraser\n", - "494\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Christopher_Hibbert\n", - "494\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/John_C._G._R%C3%B6hl\n", - "494\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Digital_object_identifier\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Sir_George_Trevelyan,_2nd_Baronet\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/J._Steven_Watson\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Alison_Weir\n", - "494\n", - "494\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Digital_object_identifier\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/PubMed_Central\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/PubMed_Identifier\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Digital_object_identifier\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/PubMed_Central\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/PubMed_Identifier\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Lewis_Bernstein_Namier\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Digital_object_identifier\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Charles_Grant_Robertson\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "0\n", - "PAGE HAS NO LINKS: /wiki/Encyclop%C3%A6dia_Britannica\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/The_National_Archives_(United_Kingdom)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/National_Portrait_Gallery,_London\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/House_of_Hanover\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/House_of_Welf\n", - "464\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/List_of_British_monarchs\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Monarchy_of_Ireland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Acts_of_Union_1800\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Electorate_of_Brunswick-L%C3%BCneburg\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Duchy_of_Brunswick-L%C3%BCneburg\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Archtreasurer\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Holy_Roman_Empire\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Acts_of_Union_1800\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Monarchy_of_the_United_Kingdom\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/George_IV_of_the_United_Kingdom\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Congress_of_Vienna\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Kingdom_of_Hanover\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/British_monarchy\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Frederick,_Prince_of_Wales\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Prince_of_Wales\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/George_IV_of_the_United_Kingdom\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Peerage_of_Great_Britain\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Frederick,_Prince_of_Wales\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Duke_of_Edinburgh\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Pretender\n", - "464\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/British_claims_to_the_French_throne\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/List_of_English_monarchs\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/List_of_Scottish_monarchs\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/List_of_British_monarchs\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/%C3%86thelstan\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Edmund_I\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Eadred\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Eadwig\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Edgar_the_Peaceful\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Edward_the_Martyr\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/%C3%86thelred_the_Unready\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Sweyn_Forkbeard\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Edmund_Ironside\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Cnut_the_Great\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Harold_Harefoot\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Harthacnut\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Edward_the_Confessor\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Harold_Godwinson\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Edgar_%C3%86theling\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/William_the_Conqueror\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/William_II_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Henry_I_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Stephen,_King_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Empress_Matilda\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Henry_II_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Henry_the_Young_King\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Richard_I_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/John,_King_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Henry_III_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Edward_I_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Edward_II_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Edward_III_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Richard_II_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Henry_IV_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Henry_V_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Henry_VI_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Edward_IV_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Edward_V_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Richard_III_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Henry_VII_of_England\n", - "559\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Edward_VI_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Lady_Jane_Grey\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Mary_I_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Philip_II_of_Spain\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Elizabeth_I_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Kenneth_MacAlpin\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Domnall_mac_Ailp%C3%ADn\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Causant%C3%ADn_mac_Cin%C3%A1eda\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/%C3%81ed_mac_Cin%C3%A1eda\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Giric\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Eochaid,_son_of_Rhun\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Donald_II_of_Scotland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Constantine_II_of_Scotland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Malcolm_I_of_Scotland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Indulf\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Dub,_King_of_Scotland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Cuil%C3%A9n\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Amla%C3%ADb,_King_of_Scotland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Kenneth_II_of_Scotland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Constantine_III_of_Scotland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Kenneth_III_of_Scotland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Malcolm_II_of_Scotland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Duncan_I_of_Scotland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Macbeth,_King_of_Scotland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Lulach\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Malcolm_III_of_Scotland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Donald_III_of_Scotland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Duncan_II_of_Scotland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Donald_III_of_Scotland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Edgar,_King_of_Scotland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Alexander_I_of_Scotland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/David_I_of_Scotland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Malcolm_IV_of_Scotland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/William_the_Lion\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Alexander_II_of_Scotland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Alexander_III_of_Scotland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Margaret,_Maid_of_Norway\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Guardian_of_Scotland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/John_Balliol\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Guardian_of_Scotland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Robert_the_Bruce\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/David_II_of_Scotland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Edward_Balliol\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Robert_II_of_Scotland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Robert_III_of_Scotland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/James_I_of_Scotland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/James_II_of_Scotland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/James_III_of_Scotland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/James_IV_of_Scotland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/James_V_of_Scotland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Mary,_Queen_of_Scots\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/James_VI_and_I\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Union_of_the_Crowns\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/James_VI_and_I\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Charles_I_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Commonwealth_of_England\n", - "487\n", - "460\n", - "526\n", - "308\n", - "491\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Acts_of_Union_1707\n", - "491\n", - "406\n", - "464\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/George_IV_of_the_United_Kingdom\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/William_IV_of_the_United_Kingdom\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Queen_Victoria\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Edward_VII\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/George_V\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Edward_VIII\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/George_VI\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Elizabeth_II\n", - "469\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Acts_of_Union_1707\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Great_Britain_in_the_Seven_Years%27_War\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Jacobitism\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Jacobite_risings\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/War_of_Jenkins%27_Ear\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/French_and_Indian_War\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Boston_Massacre\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/American_Revolutionary_War\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Fourth_Anglo-Dutch_War\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/French_Revolutionary_Wars\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Acts_of_Union_1800\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/House_of_Stuart\n", - "491\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/House_of_Hanover\n", - "406\n", - "464\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Parliament_of_Great_Britain\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/House_of_Lords\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/House_of_Commons_of_Great_Britain\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/List_of_Parliaments_of_Great_Britain\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/List_of_Acts_of_the_Parliament_of_Great_Britain\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/List_of_Acts_of_the_Parliament_of_Great_Britain,_1707%E2%80%931719\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/List_of_Acts_of_the_Parliament_of_Great_Britain,_1720%E2%80%931739\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/List_of_Acts_of_the_Parliament_of_Great_Britain,_1740%E2%80%931759\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/List_of_Acts_of_the_Parliament_of_Great_Britain,_1760%E2%80%931779\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/List_of_Acts_of_the_Parliament_of_Great_Britain,_1780%E2%80%931800\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Elections_in_Great_Britain\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/British_general_election,_1708\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/British_general_election,_1710\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/British_general_election,_1713\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/British_general_election,_1715\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/British_general_election,_1722\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/British_general_election,_1727\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/British_general_election,_1734\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/British_general_election,_1741\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/British_general_election,_1747\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "0\n", - "PAGE HAS NO LINKS: /wiki/British_general_election,_1754\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/British_general_election,_1761\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/British_general_election,_1768\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/British_general_election,_1774\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/British_general_election,_1780\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/British_general_election,_1784\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/British_general_election,_1790\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/British_general_election,_1796\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/List_of_British_monarchs\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Peerage_of_Great_Britain\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Privy_Council_of_Great_Britain\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Prime_Minister_of_Great_Britain\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/List_of_Prime_Ministers_of_Great_Britain\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Whigs_(British_political_party)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Tories_(British_political_party)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Whig_Junto\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Patriot_Whigs\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Kit-Cat_Club\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Great_Britain\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Queen_Anne_style_architecture\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Georgian_architecture\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/East_India_Company\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/British_Empire\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Longitude_prize\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Window_tax\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Proclamation_of_Rebellion\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/South_Sea_Company\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Speenhamland_system\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Flag_of_Great_Britain\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Royal_coat_of_arms_of_Great_Britain\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Duke_of_Edinburgh\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Frederick,_Prince_of_Wales\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Duke_of_Gloucester_and_Edinburgh\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Alfred,_Duke_of_Saxe-Coburg_and_Gotha\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Prince_Philip,_Duke_of_Edinburgh\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/British_prince\n", - "406\n", - "464\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Frederick,_Prince_of_Wales\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Prince_George_William_of_Great_Britain\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Prince_William,_Duke_of_Cumberland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Prince_Edward,_Duke_of_York_and_Albany\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Prince_William_Henry,_Duke_of_Gloucester_and_Edinburgh\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Prince_Henry,_Duke_of_Cumberland_and_Strathearn\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Prince_Frederick_of_Great_Britain\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/George_IV_of_the_United_Kingdom\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Prince_Frederick,_Duke_of_York_and_Albany\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/William_IV_of_the_United_Kingdom\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Prince_Edward,_Duke_of_Kent_and_Strathearn\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Ernest_Augustus,_King_of_Hanover\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Prince_Augustus_Frederick,_Duke_of_Sussex\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Prince_Adolphus,_Duke_of_Cambridge\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Prince_Octavius_of_Great_Britain\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Prince_Alfred_of_Great_Britain\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Prince_William_Frederick,_Duke_of_Gloucester_and_Edinburgh\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Albert,_Prince_Consort\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/George_V_of_Hanover\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Prince_George,_Duke_of_Cambridge\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Edward_VII\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Alfred,_Duke_of_Saxe-Coburg_and_Gotha\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Prince_Arthur,_Duke_of_Connaught_and_Strathearn\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Prince_Leopold,_Duke_of_Albany\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Prince_Ernest_Augustus,_3rd_Duke_of_Cumberland_and_Teviotdale\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Prince_Albert_Victor,_Duke_of_Clarence_and_Avondale\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/George_V\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Prince_Alexander_John_of_Wales\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Alfred,_Hereditary_Prince_of_Saxe-Coburg_and_Gotha\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Prince_Arthur_of_Connaught\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Charles_Edward,_Duke_of_Saxe-Coburg_and_Gotha\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Prince_George_William_of_Hanover_(1880%E2%80%931912)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Prince_Christian_of_Hanover_(1885%E2%80%931901)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Ernest_Augustus,_Duke_of_Brunswick\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Edward_VIII\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/George_VI\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Prince_Henry,_Duke_of_Gloucester\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Prince_George,_Duke_of_Kent\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Prince_John_of_the_United_Kingdom\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Alastair_Windsor,_2nd_Duke_of_Connaught_and_Strathearn\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Johann_Leopold,_Hereditary_Prince_of_Saxe-Coburg_and_Gotha\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Prince_Hubertus_of_Saxe-Coburg_and_Gotha_(1909%E2%80%931943)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Prince_Ernest_Augustus_of_Hanover_(1914%E2%80%931987)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Prince_George_William_of_Hanover_(1915%E2%80%932006)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Prince_Philip,_Duke_of_Edinburgh\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Prince_William_of_Gloucester\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Prince_Richard,_Duke_of_Gloucester\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Prince_Edward,_Duke_of_Kent\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Prince_Michael_of_Kent\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Charles,_Prince_of_Wales\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Prince_Andrew,_Duke_of_York\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Prince_Edward,_Earl_of_Wessex\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Prince_William,_Duke_of_Cambridge\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Prince_Harry\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/James,_Viscount_Severn\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Prince_George_of_Cambridge\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Prince_Consort\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/James,_Viscount_Severn#Titles_and_styles\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Prince_of_Wales\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Edward_II_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Edward_the_Black_Prince\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Richard_II_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Henry_V_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Edward_of_Westminster,_Prince_of_Wales\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Richard_of_York,_3rd_Duke_of_York\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Edward_V_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Edward_of_Middleham,_Prince_of_Wales\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Arthur,_Prince_of_Wales\n", - "559\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Edward_VI_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Henry_Frederick,_Prince_of_Wales\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Charles_I_of_England\n", - "487\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/James_Francis_Edward_Stuart\n", - "464\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Frederick,_Prince_of_Wales\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/George_IV_of_the_United_Kingdom\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Edward_VII\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/George_V\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Edward_VIII\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Charles,_Prince_of_Wales\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Prince_of_Wales%27s_feathers\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Principality_of_Wales\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/History_of_Hanover\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Electorate_of_Brunswick-L%C3%BCneburg\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Ernest_Augustus,_Elector_of_Brunswick-L%C3%BCneburg\n", - "406\n", - "464\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Kingdom_of_Hanover\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/George_IV_of_the_United_Kingdom\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/William_IV_of_the_United_Kingdom\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Ernest_Augustus,_King_of_Hanover\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/George_V_of_Hanover\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/List_of_British_monarchs\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Virtual_International_Authority_File\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Library_of_Congress_Control_Number\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/International_Standard_Name_Identifier\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Integrated_Authority_File\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/LIBRIS\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Syst%C3%A8me_universitaire_de_documentation\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Biblioth%C3%A8que_nationale_de_France\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/BIBSYS\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Union_List_of_Artist_Names\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/National_Library_of_Australia\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/National_Library_of_the_Czech_Republic\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Netherlands_Institute_for_Art_History#Online_artist_pages\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Institute_for_Advanced_Technology_in_the_Humanities\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/George_III_of_the_United_Kingdom\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/George_III_of_the_United_Kingdom\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Main_Page\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Main_Page\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/List_of_colonial_governors_of_Pennsylvania\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "23\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Delaware\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/American_Revolution\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/William_Penn\n", - "54\n", - "487\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/William_Penn_(admiral)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Hannah_Callowhill_Penn\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/John_Penn_%22the_American%22\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Thomas_Penn\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Richard_Penn,_Sr.\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/John_Penn_(governor)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/John_Penn_(writer)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/William_Penn\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Hannah_Callowhill_Penn\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/John_Penn_(%22the_American%22)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Thomas_Penn\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Richard_Penn,_Sr.\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Thomas_Penn\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/John_Penn_(governor)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/John_Penn_(writer)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/John_Penn_(governor)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Colonial_Pennsylvania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Lower_Counties\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/William_Markham_(Governor)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Deputy_Governor\n", - "1705\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/William_Penn\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Proprietor\n", - "1705\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Thomas_Lloyd_(lieutenant_governor)\n", - "1705\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/William_Clayton_(Governor)\n", - "1705\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Deputy_Governor\n", - "1705\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Thomas_Lloyd_(lieutenant_governor)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Deputy_Governor\n", - "1705\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/William_Markham_(Governor)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Deputy_Governor\n", - "1705\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Benjamin_Fletcher\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Governor\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/New_York,_New_York\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/William_Markham_(Governor)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Deputy_Governor\n", - "1705\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Samuel_Carpenter\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Deputy_Governor\n", - "1705\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/William_Penn\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Proprietor\n", - "1705\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Andrew_Hamilton_(New_Jersey)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Deputy_Governor\n", - "1705\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Edward_Shippen\n", - "1705\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/John_Evans_(Pennsylvania_governor)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Deputy_Governor\n", - "1705\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Charles_Gookin\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Deputy_Governor\n", - "1705\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/William_Keith_(Colonial_Lieutenant_Governor_of_Pennsylvania_and_Delaware)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Deputy_Governor\n", - "1705\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Patrick_Gordon_(governor)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Deputy_Governor\n", - "1705\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/James_Logan_(statesman)\n", - "1705\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Deputy_Governor\n", - "1705\n", - "1705\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/James_Hamilton_(Pennsylvania)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Deputy_Governor\n", - "1705\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Robert_Hunter_Morris\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Deputy_Governor\n", - "1705\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Deputy_Governor\n", - "1705\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/James_Hamilton_(Pennsylvania)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Deputy_Governor\n", - "1705\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/John_Penn_(governor)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Lieutenant_Governor\n", - "1705\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Richard_Penn_(governor)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Lieutenant_Governor\n", - "1705\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/John_Penn_(governor)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Lieutenant_Governor\n", - "1705\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Joseph_Galloway\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/List_of_Governors_of_Pennsylvania\n", - "494\n", - "41\n", - "41\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Main_Page\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Main_Page\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Pennsylvania_Provincial_Assembly\n", - "548\n", - "469\n", - "300\n", - "300\n", - "1705\n", - "1023\n", - "329\n", - "440\n", - "235\n", - "114\n", - "195\n", - "54\n", - "592\n", - "357\n", - "487\n", - "460\n", - "526\n", - "308\n", - "491\n", - "406\n", - "464\n", - "577\n", - "42\n", - "24\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/William_Penn\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Treaty_of_Paris_(1783)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Pound_sterling\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Spanish_dollar\n", - "1\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/English_overseas_possessions\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/William_Penn\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Royal_charter\n", - "487\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/William_Penn_(Royal_Navy_officer)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Restoration_colony\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Province_of_Carolina\n", - "54\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/American_Revolution\n", - "1\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Frame_of_Government_of_Pennsylvania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/American_Revolution\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Pennsylvania_Constitution_of_1776\n", - "1\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Pennsylvania_General_Assembly\n", - "1705\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Bucks_County,_Pennsylvania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Montgomery_County,_Pennsylvania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Chester_County,_Pennsylvania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Mason%E2%80%93Dixon_line\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Marcus_Hook,_Pennsylvania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Delaware\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/New_Castle_County,_Delaware\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Sussex_County,_Delaware\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Kent_County,_Delaware\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/William_Penn\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/French_and_Indian_War\n", - "1705\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Pennsylvania_Dutch_Country\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Mennonites\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Germantown,_Philadelphia,_Pennsylvania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Northkill_Amish_Settlement\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Pennsylvania_Hospital\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/The_Academy_and_College_of_Philadelphia\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/University_of_Pennsylvania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Liberty_Bell\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Benjamin_West\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Lenni_Lenape\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Native_Americans_in_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Lenape\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Susquehannock\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Voltaire\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Lenape\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Delaware_River\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Lehigh_River\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Easton,_Pennsylvania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Walking_Purchase\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Rhode_Island\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Pike_County,_Pennsylvania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Monroe_County,_Pennsylvania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Carbon_County,_Pennsylvania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Schuylkill_County,_Pennsylvania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Northampton_County,_Pennsylvania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Lehigh_County,_Pennsylvania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Bucks_County,_Pennsylvania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Great_Britain_in_the_Seven_Years%27_War\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Ohio_Country\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/French_and_Indian_War\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/British_Empire\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Pontiac%27s_War\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Royal_Proclamation_of_1763\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Appalachian_Mountains\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Fort_Pitt_(Pennsylvania)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Pittsburgh,_Pennsylvania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Edward_Shippen\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/John_Guest_(judge)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/John_Guest_(judge)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Roger_Mompesson\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/David_Lloyd_(judge)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/James_Logan_(statesman)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Jeremiah_Langhorne\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/William_Allen_(loyalist)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Benjamin_Chew\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Benjamin_Franklin\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Academy_and_College_of_Philadelphia\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/University_of_Pennsylvania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/King_George%27s_War\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Thomas_McKean\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/New_London_Township,_Pennsylvania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Continental_Army\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Articles_of_Confederation\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Gouverneur_Morris\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Robert_Morris_(merchant)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Robert_Morris_University\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/John_Morton_(politician)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Ridley_Township,_Delaware_County,_Pennsylvania\n", - "1\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Continental_Congress\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Continental_Association\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/United_States_Declaration_of_Independence\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Thomas_Paine\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Common_Sense_(pamphlet)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/William_Penn\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/George_Ross_(delegate)\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "0\n", - "PAGE HAS NO LINKS: /wiki/New_Castle,_Delaware\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Delaware\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Arthur_St._Clair\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Continental_Army\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Articles_of_Confederation\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/James_Wilson\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/United_States_Declaration_of_Independence\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Three-Fifths_Compromise\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Peggy_Shippen\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Edward_Shippen,_IV\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Benedict_Arnold\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Restoration_colony\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Walking_Purchase\n", - "42\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Independence_Hall\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Great_Wagon_Road\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Pennsylvania_in_the_American_Revolution\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Welsh_Tract\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Murray_Rothbard\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/LewRockwell.com\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Wilkes_University_Election_Statistics_Project\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Thirteen_Colonies\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Colonial_history_of_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/New_England_Colonies\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Middle_Colonies\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Chesapeake_Colonies\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Southern_Colonies\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Connecticut_Colony\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Delaware_Colony\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Province_of_Georgia\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Province_of_Maryland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Province_of_Massachusetts_Bay\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Province_of_New_Hampshire\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Province_of_New_Jersey\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Province_of_New_York\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Province_of_North_Carolina\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Colony_of_Rhode_Island_and_Providence_Plantations\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Province_of_South_Carolina\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Colony_of_Virginia\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Province_of_Carolina\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/East_Jersey\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Province_of_Maine\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Dominion_of_New_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/New_Haven_Colony\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Plymouth_Colony\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Saybrook_Colony\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/West_Jersey\n", - "1830\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/British_Empire\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Commonwealth_realm\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Commonwealth_of_Nations\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Historical_flags_of_the_British_Empire\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Kingdom_of_Ireland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Menorca\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Gibraltar\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Malta_Protectorate\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Crown_Colony_of_Malta\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Heligoland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/United_States_of_the_Ionian_Islands\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/British_Cyprus\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Irish_Free_State\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/New_Albion\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/History_of_Newfoundland_and_Labrador\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/British_Saint_Lucia\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Colony_of_Virginia\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Bermuda\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Plymouth_Colony\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Saint_Kitts\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/History_of_Barbados\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Saint_Croix,_U.S._Virgin_Islands\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/History_of_Saint_Vincent_and_the_Grenadines\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Nevis\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Massachusetts_Bay_Colony\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Province_of_Maryland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Montserrat\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Antigua\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Saybrook_Colony\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Connecticut_Colony\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Colony_of_Rhode_Island_and_Providence_Plantations\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/New_Haven_Colony\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Bay_Islands_Department\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Anguilla\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Mosquito_Coast\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Colony_of_Jamaica\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Province_of_Carolina\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Province_of_New_York\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Province_of_New_Jersey\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/British_Virgin_Islands\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Cayman_Islands\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/History_of_the_Bahamas\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Rupert%27s_Land\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/British_Leeward_Islands\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/East_Jersey\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/West_Jersey\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Province_of_New_Hampshire\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Dominion_of_New_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Province_of_Massachusetts_Bay\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Delaware_Colony\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Province_of_North_Carolina\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Province_of_South_Carolina\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/History_of_Nova_Scotia\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Province_of_Georgia\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Cape_Breton_Island\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/History_of_Grenada\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/History_of_Dominica\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/History_of_Prince_Edward_Island\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Province_of_Quebec_(1763%E2%80%9391)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/East_Florida\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/British_West_Florida\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/History_of_New_Brunswick\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Lower_Canada\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Upper_Canada\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Turks_and_Caicos_Islands\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Columbia_District\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Oregon_Country\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/British_Windward_Islands\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/British_Leeward_Islands\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Province_of_Canada\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Colony_of_Vancouver_Island\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Colony_of_the_Queen_Charlotte_Islands\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Colony_of_British_Columbia_(1858%E2%80%9366)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/North-Western_Territory\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/History_of_Antigua_and_Barbuda\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Stickeen_Territories\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Colony_of_British_Columbia_(1866%E2%80%9371)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Post-Confederation_Canada_(1867%E2%80%931914)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/British_Honduras\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/History_of_Saint_Kitts_and_Nevis\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/History_of_Trinidad_and_Tobago\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Dominion_of_Newfoundland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/West_Indies_Federation\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Condominium_(international_law)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Dominion\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Statute_of_Westminster_1931\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Name_of_Canada\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Responsible_government\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/De_jure\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Provinces_and_territories_of_Canada\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Providence_Island_colony\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Willoughbyland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Archipelago_of_San_Andr%C3%A9s,_Providencia_and_Santa_Catalina\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/British_Guiana\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Falkland_Islands\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/South_Georgia_and_the_South_Sandwich_Islands\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Departments_of_Colombia\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Falklands_War\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Saint_Helena\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Sierra_Leone_Colony_and_Protectorate\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Cape_Colony\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Ascension_Island\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Tristan_da_Cunha\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Cape_Colony\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/History_of_Madeira\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/British_Mauritius\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Gambia_Colony_and_Protectorate\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Colony_of_Natal\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Lagos_Colony\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Basutoland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Gold_Coast_(British_colony)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Sultanate_of_Egypt\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Niger_Coast_Protectorate\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Bechuanaland_Protectorate\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/British_Somaliland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Zulu_Kingdom\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Uganda_Protectorate\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Zanzibar\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Nyasaland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/British_Central_Africa_Protectorate\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/History_of_Swaziland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/East_Africa_Protectorate\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "0\n", - "PAGE HAS NO LINKS: /wiki/Anglo-Egyptian_Sudan\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Northern_Nigeria_Protectorate\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Southern_Nigeria_Protectorate\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Orange_River_Colony\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Transvaal_Colony\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/History_of_Seychelles\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Union_of_South_Africa\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Colonial_Nigeria\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/South-West_Africa\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/British_Cameroons\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Kenya_Colony\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Tanganyika_(territory)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Southern_Rhodesia\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Northern_Rhodesia\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/League_of_Nations_mandate\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Responsible_government\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Rhodesia%27s_Unilateral_Declaration_of_Independence\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Rhodesia\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Diplomatic_recognition\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Lancaster_House_Agreement\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/British_Bencoolen\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/C%C3%B4n_S%C6%A1n_Island\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Bengal_Presidency\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/British_invasion_of_Manila\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Padang\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/History_of_Penang\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/British_Ceylon\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/History_of_the_Maldives\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Java_Island\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Bangka_Island\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Belitung\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/British_Malaya\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/British_rule_in_Burma\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Straits_Settlements\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Colony_of_Aden\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/First_Anglo-Afghan_War\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/British_Hong_Kong\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Kingdom_of_Sarawak\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Crown_Colony_of_Labuan\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/British_Raj\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/British_Borneo\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/European_influence_in_Afghanistan\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/North_Borneo\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Unfederated_Malay_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Bruneian_Empire\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Muscat_and_Oman\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Trucial_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Federated_Malay_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Weihaiwei_under_British_rule\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/British_Cyprus\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/History_of_Bhutan\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Sheikhdom_of_Kuwait\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/British_Mandate_for_Mesopotamia_(legal_instrument)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Emirate_of_Transjordan\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Mandatory_Palestine\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/War_in_Vietnam_(1945%E2%80%9346)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Crown_Colony_of_North_Borneo\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Crown_Colony_of_Sarawak\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Colony_of_Singapore\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Malayan_Union\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Federation_of_Malaya\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Akrotiri_and_Dhekelia\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Cyprus\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/British_Indian_Ocean_Territory\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Mauritius\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Seychelles\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/League_of_Nations_mandate\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Anglo-Iraqi_Treaty\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Colony_of_New_South_Wales\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Van_Diemen%27s_Land\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Colony_of_Tasmania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Auckland_Islands\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/New_Hebrides\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Colony_of_Queensland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Swan_River_Colony\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Colony_of_Western_Australia\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Colony_of_South_Australia\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/History_of_the_Pitcairn_Islands\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Colony_of_New_Zealand\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Colony_of_Victoria\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Colony_of_Fiji\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/British_Western_Pacific_Territories\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Territory_of_Papua\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Kingdom_of_Rarotonga\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Cook_Islands_Federation\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Union_Islands\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Gilbert_and_Ellice_Islands\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/British_Solomon_Islands\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/History_of_Tonga\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/History_of_Niue\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/History_of_Australia_(1901%E2%80%9345)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Dominion_of_New_Zealand\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/History_of_Nauru\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Territory_of_New_Guinea\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Territory_of_Papua_and_New_Guinea\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Realm_of_New_Zealand\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Kiribati\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Tuvalu\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Solomon_Islands\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Papua_New_Guinea\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Saint_Helena\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Ascension_Island\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Tristan_da_Cunha\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/British_Antarctic_Territory\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Australian_Antarctic_Territory\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Commonwealth_of_Australia\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Ross_Dependency\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Realm_of_New_Zealand\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Saint_Helena,_Ascension_and_Tristan_da_Cunha\n", - "267\n", - "24\n", - "24\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Main_Page\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Main_Page\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/William_Penn\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/William_Penn_(disambiguation)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/London\n", - "548\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Ruscombe\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Berkshire\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/England\n", - "469\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Chigwell_School\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Christ_Church,_Oxford\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Hannah_Callowhill_Penn\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/William_Penn,_Jr.\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/John_Penn_(%22the_American%22)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Thomas_Penn\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Richard_Penn,_Sr.\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Admiral_Sir_William_Penn\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Brooklyn_Museum\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Sir_William_Penn\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Religious_Society_of_Friends\n", - "25\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Commonwealth\n", - "1\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Religious_freedom\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Lenape\n", - "1705\n", - "487\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Admiral_Sir_William_Penn\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Delaware\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/New_Castle,_Delaware\n", - "54\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Pennsylvania_General_Assembly\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Quaker\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/New_Netherland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/New_Sweden\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/British_colonization_of_the_Americas\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Delaware\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Delaware_Colony\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/British_colonization_of_the_Americas\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Frame_of_Government_of_Pennsylvania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/United_States_Constitution\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Pacifist\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/United_States_of_Europe\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/European_Parliament\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Primitive_Christianity\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Tower_of_London\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/No_Cross,_No_Crown\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/All_Hallows-by-the-Tower\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Tower_Hill\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/William_Penn_(Royal_Navy_officer)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Rotterdam\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Commonwealth_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/English_Civil_War\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Oliver_Cromwell\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Irish_Rebellion_of_1641\n", - "487\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Royal_Navy\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Oliver_Cromwell\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Puritan\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Charles_I_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Smallpox\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Essex\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Samuel_Pepys\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Chigwell_School\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Christ_Church,_Oxford\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/University_of_Oxford\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/William_Shakespeare\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Caribbean\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Missionary\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/University_of_Oxford\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Swashbuckling\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/John_Owen_(theologian)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Louis_XIV\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "0\n", - "PAGE HAS NO LINKS: /wiki/Notre-Dame_de_Paris\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Moise_Amyraut\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Saumur\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Great_Plague_of_London\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Gout\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Great_Fire_of_1666\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Five_Mile_Act_1665\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Religious_Society_of_Friends\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Cork_(city)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Original_sin\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/George_Fox\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Seekers\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Ranters\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Antinomianism\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Soul_sleep\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Adamites\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Diggers\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Levellers\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Behmenists\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Muggletonians\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Castle_Salem\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Rosscarbery\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Salzburg\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Francis_Daniel_Pastorius\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Proprietor\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Germantown,_Philadelphia\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/German_Society_of_Pennsylvania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Whore_of_Babylon\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Christian_perfection\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Tower_of_London\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Blasphemy\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Trinity\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Divinity_of_Christ\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Primitive_Christianity\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Christ_Church,_Oxford\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/William_Mead_(merchant)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Conventicles_Act_1670\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Old_Bailey\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Newgate_Prison\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Bushel%27s_Case\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Jury_nullification\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Habeas_corpus\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Jean_Leon_Gerome_Ferris\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/New_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Puritan\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Caribbean\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/West_Jersey\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/New_Jersey\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Chorleywood\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Rickmansworth\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Buckinghamshire\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Burlington,_New_Jersey\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/East_Jersey\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Province_of_Maryland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Cecilius_Calvert,_2nd_Baron_Baltimore\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Delmarva_Peninsula\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Graystones_Forest\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Pennsylvania_Charter_of_Privileges\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Utopia\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Trial_by_jury\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Freedom_of_religion\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Frame_of_Government_of_Pennsylvania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Huguenot\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Mennonite\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Amish\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Roman_Catholic_Church\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Lutheranism\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Jews\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Bloody_Code\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Cock-fighting\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Bear-baiting\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/John_Locke\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Thomas_Jefferson\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Penn%E2%80%93Calvert_Boundary_Dispute\n", - "460\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Declaration_of_Indulgence\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/George_Fox\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Slate_Roof_House\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/James_Logan_(statesman)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Isle_of_Wight\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Canterbury_(ship)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Slavery\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Germantown,_Philadelphia,_Pennsylvania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Pennsbury_Manor\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/James_Logan_(statesman)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/William_Penn,_Jr.\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Sussex_County,_Delaware\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Andrew_Hamilton_(lawyer)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Replevin\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Ruscombe\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Twyford,_Berkshire\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Jordans,_Buckinghamshire\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Chalfont_St_Giles\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Hannah_Callowhill_Penn\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/John_Penn_(%22the_American%22)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Thomas_Penn\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Earl_of_Pomfret\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Richard_Penn,_Sr.\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/William_Penn_Charter_School\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Voltaire\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Benjamin_Franklin\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/American_Revolution\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Thomas_Paine\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/American_Revolution\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/British_Empire\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/American_Revolution\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Thomas_Penn\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/John_Penn_(%22the_American%22)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Roman_Catholicism\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Quakers\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Benjamin_Franklin\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Walking_Purchase\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Lehigh_Valley\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Philadelphia_City_Hall\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Ronald_Reagan\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Act_of_Congress\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Hannah_Callowhill_Penn\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Honorary_Citizen_of_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Alexander_Milne_Calder\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Edmund_Bacon_(architect)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/One_Liberty_Place\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Curse_of_Billy_Penn\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Comcast_Center_(Philadelphia)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Philadelphia_Phillies\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/2008_World_Series\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Penn_Treaty_Park\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Penn%27s_Treaty_with_the_Indians\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Quaker_Oats_Company\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Penn_of_Pennsylvania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Clifford_Evans_(actor)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/William_Penn_High_School_for_Girls\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/National_Register_of_Historic_Places\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Chigwell_School\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Slough\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Stoke_Park,_Guildford\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/The_Friends%27_School,_Hobart\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/George_Fox_University\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Penn%E2%80%93Calvert_boundary_dispute\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Nicholas_More\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/European_Parliament\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Daniele_Archibugi\n", - "494\n", - "494\n", - "494\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Jan_Claus\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Conventicle_Act_1664\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Privateer\n", - "494\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Quaker_Oats_Company\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/National_Park_Service\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/JSTOR\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Wikisource\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Ludwig_von_Mises_Institute\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Find_a_Grave\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Project_Gutenberg\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Internet_Archive\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/LibriVox\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/No_Cross,_No_Crown\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Quakers\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/List_of_Quakers\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Susan_B._Anthony\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Robert_Barclay\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Anthony_Benezet\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Kenneth_E._Boulding\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Howard_Brinton\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/John_Cadbury\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Levi_Coffin\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Judi_Dench\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Margaret_Fell\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/George_Fox\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Elizabeth_Fry\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Edward_Hicks\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Elias_Hicks\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Herbert_Hoover\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Rufus_Jones_(writer)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Thomas_Raymond_Kelly_(Quaker_mystic)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Benjamin_Lay\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Dave_Matthews\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Lucretia_Mott\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/James_Nayler\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Richard_Nixon\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Parker_Palmer\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Alice_Paul\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Robert_Pleasants\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Bayard_Rustin\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Jessamyn_West_(writer)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/John_Greenleaf_Whittier\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/John_Woolman\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Yearly_Meeting\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "0\n", - "PAGE HAS NO LINKS: /wiki/Monthly_meeting\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/American_Friends_Service_Committee\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/A_Quaker_Action_Group\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Britain_Yearly_Meeting\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Evangelical_Friends_Church_International\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Friends_Committee_on_National_Legislation\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Friends_General_Conference\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Friends_United_Meeting\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Friends_World_Committee_for_Consultation\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Nontheist_Quakers\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Quaker_Council_for_European_Affairs\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Quaker_Peace_and_Social_Witness\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Quaker_United_Nations_Office\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/World_Gathering_of_Young_Friends\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Peace_Testimony\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Testimony_of_equality\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Testimony_of_integrity\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Testimony_of_Simplicity\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Quakers_in_North_America\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Quakers_in_Latin_America\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Quakers_in_Europe\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Quakers_in_Africa\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/List_of_Quaker_businesses,_organizations_and_charities\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Quakers_in_science\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Clerk_(Quaker)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Book_of_Discipline_(Quaker)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/History_of_the_Quakers\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Homosexuality_and_Quakerism\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Inner_light\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Friends_meeting_house\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Query_(Quaker)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/List_of_Friends_schools\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Quaker_Tapestry\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Quaker_wedding\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Quaker_views_on_women\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Protestantism\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Nonconformist\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Sussex\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Baptists\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/General_Baptists\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Reformed_Baptists\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Reformed_Baptists#Strict_Baptists\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Angmering_Baptist_Church\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Ebenezer_Chapel,_Heathfield\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Grove_Road_Strict_Baptist_Church\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/West_Street_Baptist_Church,_East_Grinstead\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Jireh_Chapel,_Haywards_Heath\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Hope_Chapel,_Horsham\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Holland_Road_Baptist_Church\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Rehoboth_Chapel,_Jarvis_Brook\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Zoar_Strict_Baptist_Chapel\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/St_Leonard%27s_Baptist_Church,_St_Leonards-on-Sea\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Bethel_Strict_Baptist_Chapel,_Wivelsfield\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Angmering_Baptist_Church\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Providence_Strict_Baptist_Chapel,_Burgess_Hill\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Providence_Chapel,_Hadlow_Down\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Ebenezer_Particular_Baptist_Chapel,_Hastings\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Madina_Mosque,_Horsham\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Zion_Chapel,_Newick\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Rehoboth_Chapel,_Pell_Green\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Bethel_Strict_Baptist_Chapel,_Robertsbridge\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Rye_Particular_Baptist_Chapel\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Shover%27s_Green_Baptist_Chapel\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Southover_General_Baptist_Chapel\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Evangelicalism\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Countess_of_Huntingdon%27s_Connexion\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Worthing_Tabernacle\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Methodism\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Dorset_Gardens_Methodist_Church\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Central_Methodist_Church,_Eastbourne\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Hove_Methodist_Church\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Steyning_Methodist_Church\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Bristol_Road_Methodist_Church\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Vintners_Parrot#Bedford_Hall\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Plymouth_Brethren\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Jarvis_Hall,_Steyning\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Presbyterianism#England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Congregational_church#United_Kingdom\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/United_Reformed_Church\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/All_Saints_United_Reformed_Church\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Hounsom_Memorial_United_Reformed_Church,_Hove\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Herstmonceux_Free_Church\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Lewes_Free_Presbyterian_Church\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/St_Luke%27s_United_Reformed_Church,_Silverhill,_Hastings\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Trinity_Congregational_Church,_Arundel\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Union_Chapel,_Brighton\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Robertsbridge_United_Reformed_Church\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/St_Leonards-on-Sea_Congregational_Church\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Quakers\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Brighton_Friends_Meeting_House\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Ifield_Friends_Meeting_House\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Littlehampton_Friends_Meeting_House\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Reformed_Church_of_France\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/French_Protestant_Church,_Brighton\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Unitarianism\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Billingshurst_Unitarian_Chapel\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Brighton_Unitarian_Church\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Ditchling_Unitarian_Chapel\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Horsham_Unitarian_Church\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Countess_of_Huntingdon%27s_Connexion\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Society_of_Dependants\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Selina_Hastings,_Countess_of_Huntingdon\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/William_Huntington_(preacher)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/John_Sirgood\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Hall_of_Fame_for_Great_Americans\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/John_Adams\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/John_Quincy_Adams\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Jane_Addams\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Louis_Agassiz\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Susan_B._Anthony\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/John_James_Audubon\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/George_Bancroft\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Clara_Barton\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Henry_Ward_Beecher\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Alexander_Graham_Bell\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Daniel_Boone\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Edwin_Booth\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Louis_Brandeis\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Phillips_Brooks\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/William_Cullen_Bryant\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Luther_Burbank\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Andrew_Carnegie\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/George_Washington_Carver\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/William_Ellery_Channing\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Rufus_Choate\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Henry_Clay\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Grover_Cleveland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/James_Fenimore_Cooper\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Peter_Cooper\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Charlotte_Cushman\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/James_Buchanan_Eads\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Thomas_Edison\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Jonathan_Edwards_(theologian)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Ralph_Waldo_Emerson\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/David_Farragut\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Stephen_Foster\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Benjamin_Franklin\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Robert_Fulton\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Josiah_Willard_Gibbs\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/William_C._Gorgas\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Ulysses_S._Grant\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Asa_Gray\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Alexander_Hamilton\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Nathaniel_Hawthorne\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Joseph_Henry\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Patrick_Henry\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Oliver_Wendell_Holmes_Sr.\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Oliver_Wendell_Holmes_Jr.\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Mark_Hopkins_(educator)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Elias_Howe\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Washington_Irving\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Andrew_Jackson\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Stonewall_Jackson\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Thomas_Jefferson\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/John_Paul_Jones\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/James_Kent\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Sidney_Lanier\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Robert_E._Lee\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Abraham_Lincoln\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Henry_Wadsworth_Longfellow\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/James_Russell_Lowell\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "0\n", - "PAGE HAS NO LINKS: /wiki/Mary_Lyon\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Edward_MacDowell\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/James_Madison\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Horace_Mann\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/John_Marshall\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Matthew_Fontaine_Maury\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Albert_A._Michelson\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Maria_Mitchell\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/James_Monroe\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Samuel_Morse\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/William_T._G._Morton\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/John_Lothrop_Motley\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Simon_Newcomb\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Thomas_Paine\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Alice_Freeman_Palmer\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Francis_Parkman\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/George_Peabody\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Edgar_Allan_Poe\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Walter_Reed\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Franklin_D._Roosevelt\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Theodore_Roosevelt\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Augustus_Saint-Gaudens\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/William_Tecumseh_Sherman\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/John_Philip_Sousa\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Joseph_Story\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Harriet_Beecher_Stowe\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Gilbert_Stuart\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Sylvanus_Thayer\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Henry_David_Thoreau\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Mark_Twain\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Lillian_Wald\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Booker_T._Washington\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/George_Washington\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Daniel_Webster\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/George_Westinghouse\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/James_Abbott_McNeill_Whistler\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Walt_Whitman\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Eli_Whitney\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/John_Greenleaf_Whittier\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Emma_Willard\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Frances_Willard_(suffragist)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Roger_Williams\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Woodrow_Wilson\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Wright_brothers\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Wright_brothers\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Virtual_International_Authority_File\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Library_of_Congress_Control_Number\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/International_Standard_Name_Identifier\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Integrated_Authority_File\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/LIBRIS\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Syst%C3%A8me_universitaire_de_documentation\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Biblioth%C3%A8que_nationale_de_France\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/BIBSYS\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Union_List_of_Artist_Names\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/National_Library_of_Australia\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/National_Diet_Library\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Biblioteca_Nacional_de_Espa%C3%B1a\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Institute_for_Advanced_Technology_in_the_Humanities\n", - "432\n", - "432\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Main_Page\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Main_Page\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Treaty_of_Paris_(1783)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Treaty_of_Paris_(disambiguation)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Paris\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Kingdom_of_France\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Ratification\n", - "469\n", - "469\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/National_Archives_and_Records_Administration\n", - "1023\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Wikisource\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Paris\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/George_III_of_the_United_Kingdom\n", - "469\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/American_Revolutionary_War\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Demarcation_line\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/British_Empire\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/North_America\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/France_in_the_American_Revolutionary_War\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Spain_in_the_American_Revolutionary_War\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Dutch_Republic\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Peace_of_Paris_(1783)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Sovereignty\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Sovereign_state\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Benjamin_West\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/John_Jay\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/John_Adams\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Benjamin_Franklin\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Henry_Laurens\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/William_Temple_Franklin\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Benjamin_Franklin\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/John_Jay\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Henry_Laurens\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/John_Adams\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/David_Hartley_(the_Younger)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Richard_Oswald_(merchant)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Paris\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Charles_Gravier,_comte_de_Vergennes\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Great_Siege_of_Gibraltar\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Northwest_Territory\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Indian_barrier_state\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/William_Petty,_2nd_Earl_of_Shelburne\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/6th_arrondissement_of_Paris\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/East_Florida\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/West_Florida\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Treaty_of_Madrid_(1795)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Menorca\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Bahama_Islands\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Grenada\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Montserrat\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Tobago\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Senegal\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Newfoundland_(island)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Congress_of_the_Confederation\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Ratification_Day_(United_States)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Preamble\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/British_Crown\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/British_North_America\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Grand_Banks\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Newfoundland_(island)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Gulf_of_Saint_Lawrence\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Congress_of_the_Confederation\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Loyalist_(American_Revolution)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Prisoner_of_war\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Mississippi_River\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Eschatocol\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Charles_Gravier,_comte_de_Vergennes\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Vermont_Republic\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Barbary_corsairs#United_States_and_the_Barbary_Wars\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Mediterranean_Sea\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/First_Barbary_War\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Second_Barbary_War\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Geography_of_North_America\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/West_Florida_Controversy\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Northwestern_point_of_the_Lake_of_the_Woods\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Lake_of_the_Woods\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Great_Lakes_region\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Lake_Champlain\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Northwest_Indian_War\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Jay_Treaty\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Fort_au_Fer_(New_York)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Champlain,_New_York\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/North_Hero,_Vermont\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Fort_Shelby_(Michigan)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Fort_Detroit\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Detroit_River\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Detroit\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Michigan\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Fort_Mackinac\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Straits_of_Mackinac\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Mackinac_Island,_Michigan\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Fort_Miami_(Ohio)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Maumee_River\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Maumee,_Ohio\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Fort_Niagara\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Niagara_River\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Youngstown,_New_York\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Fort_Ontario\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Lake_Ontario\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Oswego,_New_York\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Fort_de_La_Pr%C3%A9sentation\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Saint_Lawrence_River\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Ogdensburg,_New_York\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Ratification_Day_(United_States)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/List_of_United_States_treaties\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/America%27s_Critical_Period\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/History_of_the_United_States_(1776%E2%80%9389)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Diplomacy_in_the_American_Revolutionary_War\n", - "494\n", - "494\n", - "494\n", - "494\n", - "494\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/American_Revolutionary_War\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/American_Revolution\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/American_Enlightenment\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/John_Locke\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Colonial_history_of_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Liberalism_in_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Republicanism_in_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Freedom_of_religion_in_the_United_States\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "0\n", - "PAGE HAS NO LINKS: /wiki/Rights_of_Englishmen\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Common_Sense_(pamphlet)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Spirit_of_%2776_(sentiment)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/All_men_are_created_equal\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Life,_Liberty_and_the_pursuit_of_Happiness\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Consent_of_the_governed\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Pitt%E2%80%93Newcastle_ministry\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Bute_ministry\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Grenville_ministry\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/First_Rockingham_ministry\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Chatham_ministry\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Grafton_ministry\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/North_ministry\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Second_Rockingham_ministry\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Shelburne_ministry\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Fox%E2%80%93North_coalition\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Loyalist_(American_Revolution)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Black_Loyalist\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Navigation_Acts\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Iron_Act\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Molasses_Act\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Royal_Proclamation_of_1763\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Sugar_Act\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Currency_Act\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Quartering_Acts\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Stamp_Act_1765\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Declaratory_Act\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Townshend_Acts\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Tea_Act\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Quebec_Act\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Intolerable_Acts\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Conciliatory_Resolution\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Restraining_Acts_1775\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Proclamation_of_Rebellion\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Prohibitory_Act\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Stamp_Act_Congress\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Declaration_of_Rights_and_Grievances\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Virginia_Association\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Sons_of_Liberty\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Patriot_(American_Revolution)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Committees_of_correspondence\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Committees_of_safety_(American_Revolution)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Letters_from_a_Farmer_in_Pennsylvania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Massachusetts_Circular_Letter\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/First_Continental_Congress\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Continental_Association\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Minutemen\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Second_Continental_Congress\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Olive_Branch_Petition\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/United_States_Declaration_of_Independence\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Articles_of_Confederation\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/French_and_Indian_War\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Treaty_of_Paris_(1763)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Boston_Massacre\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Gaspee_Affair\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Hutchinson_Letters_Affair\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Boston_Tea_Party\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Powder_Alarm\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Thirteen_Colonies\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Continental_Congress\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Continental_Army\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Continental_Navy\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Continental_Marines\n", - "469\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Parliament_of_Great_Britain\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/British_Army#Early_British_Empire\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Royal_Navy#1707–1815\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Germans_in_the_American_Revolution#Allies_of_Great_Britain\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/France_in_the_American_Revolutionary_War\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/French_Army\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/French_Navy\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Roderigue_Hortalez_and_Company\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Boston_campaign\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Invasion_of_Quebec_(1775)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/New_York_and_New_Jersey_campaign\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Saratoga_campaign\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Philadelphia_campaign\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Northern_theater_of_the_American_Revolutionary_War_after_Saratoga\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Southern_theater_of_the_American_Revolutionary_War\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Western_theater_of_the_American_Revolutionary_War\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Yorktown_campaign\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Naval_battles_of_the_American_Revolutionary_War\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/List_of_American_Revolutionary_War_battles\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Battles_of_Lexington_and_Concord\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Siege_of_Boston\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Capture_of_Fort_Ticonderoga\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Battle_of_Bunker_Hill\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Battle_of_Quebec_(1775)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Battle_of_Valcour_Island\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Battle_of_Long_Island\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Battle_of_Harlem_Heights\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Battle_of_Fort_Washington\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Battle_of_Trenton\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Battle_of_the_Assunpink_Creek\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Battle_of_Princeton\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Siege_of_Fort_Ticonderoga_(1777)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Battle_of_Bennington\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Battles_of_Saratoga\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Battle_of_Brandywine\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Battle_of_Germantown\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Battle_of_Monmouth\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Battle_of_St._Lucia\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Battle_of_Grenada\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Battle_of_Stony_Point\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Sullivan_Expedition\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Siege_of_Savannah\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Great_Siege_of_Gibraltar\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Battle_of_Cape_St._Vincent_(1780)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Siege_of_Charleston\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Battle_of_Springfield_(1780)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Battle_of_Camden\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Battle_of_Kings_Mountain\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Battle_of_Cowpens\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Battle_of_Guilford_Court_House\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Lochry%27s_Defeat\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Siege_of_Yorktown\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Battle_of_the_Saintes\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Siege_of_Cuddalore\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Staten_Island_Peace_Conference\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Sint_Eustatius#\"First_Salute\"\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/George_Washington%27s_crossing_of_the_Delaware_River\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Conway_Cabal\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Valley_Forge\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Franco-American_alliance\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Carlisle_Peace_Commission\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Gordon_Riots\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Pennsylvania_Line_mutiny\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Capture_of_Sint_Eustatius\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Newburgh_Conspiracy\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Pennsylvania_Mutiny_of_1783\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Cherokee%E2%80%93American_wars\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Fourth_Anglo-Dutch_War\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Second_Anglo-Mysore_War\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Thirteen_Colonies\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/History_of_Connecticut#The_American_Revolution_(1775–1789)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Delaware_Line\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Georgia_in_the_American_Revolution\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Maryland_in_the_American_Revolution\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/New_Jersey_in_the_American_Revolution\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/New_York_in_the_American_Revolution\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/North_Carolina_in_the_American_Revolution#American_Revolution\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Pennsylvania_in_the_American_Revolution\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Rhode_Island_in_the_American_Revolution#Revolutionary_era_1775-1790\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/South_Carolina_in_the_American_Revolution\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Virginia_in_the_American_Revolution#American_Revolution\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/East_Florida\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Nova_Scotia#17th_and_18th_centuries\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Province_of_Quebec_(1763%E2%80%931791)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/West_Florida\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Mariot_Arbuthnot\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Joseph_Brant\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/John_Burgoyne\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/John_Campbell,_of_Strachur\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Guy_Carleton,_1st_Baron_Dorchester\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Henry_Clinton_(British_Army_officer,_born_1730)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Charles_Cornwallis,_1st_Marquess_Cornwallis\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Simon_Fraser_of_Lovat\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "0\n", - "PAGE HAS NO LINKS: /wiki/Thomas_Gage\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Thomas_Graves,_1st_Baron_Graves\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Richard_Howe,_1st_Earl_Howe\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/William_Howe,_5th_Viscount_Howe\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Wilhelm_von_Knyphausen\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/George_Brydges_Rodney,_1st_Baron_Rodney\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/George_III_of_the_United_Kingdom\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Jeffery_Amherst,_1st_Baron_Amherst\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/William_Barrington,_2nd_Viscount_Barrington\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/George_Germain,_1st_Viscount_Sackville\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Frederick_North,_Lord_North\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Charles_Watson-Wentworth,_2nd_Marquess_of_Rockingham\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/John_Montagu,_4th_Earl_of_Sandwich\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/William_Petty,_2nd_Earl_of_Shelburne\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/George_Washington\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/William_Alexander,_Lord_Stirling\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Ethan_Allen\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Benedict_Arnold\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/John_Barry_(naval_officer)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/George_Claghorn\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/George_Rogers_Clark\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Louis_Leb%C3%A8gue_Duportail\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Horatio_Gates\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Nathanael_Greene\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Alexander_Hamilton\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Esek_Hopkins\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/John_Paul_Jones\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Johann_de_Kalb\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Henry_Knox\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Gilbert_du_Motier,_Marquis_de_Lafayette\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Charles_Lee_(general)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Benjamin_Lincoln\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Hugh_Mercer\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Richard_Montgomery\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Samuel_Nicholson\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Israel_Putnam\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Caesar_Rodney\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Arthur_St._Clair\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Philip_Schuyler\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Friedrich_Wilhelm_von_Steuben\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/John_Sullivan_(general)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Artemas_Ward\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Anthony_Wayne\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/John_Adams\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Samuel_Adams\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Charles_Carroll_of_Carrollton\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/John_Dickinson\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Benjamin_Franklin\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/John_Hancock\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/John_Hanson\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Patrick_Henry\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Samuel_Huntington_(Connecticut_politician)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/John_Jay\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Thomas_Jefferson\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Henry_Laurens\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Richard_Henry_Lee\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Thomas_McKean\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Robert_Morris_(financier)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Paul_Revere\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Benjamin_Rush\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/John_Witherspoon\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Louis_XVI_of_France\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Pierre_Beaumarchais\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Charles_Henri_Hector_d%27Estaing\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Fran%C3%A7ois_Joseph_Paul_de_Grasse\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Luc_Urbain_de_Bou%C3%ABxic,_comte_de_Guichen\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Anne-C%C3%A9sar,_Chevalier_de_la_Luzerne\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Jean-Baptiste_Donatien_de_Vimeur,_comte_de_Rochambeau\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Pierre_Andr%C3%A9_de_Suffren\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Charles_Gravier,_comte_de_Vergennes\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Constitutional_Convention_(United_States)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/United_States_Constitution\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/United_States_Bill_of_Rights\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/The_Federalist_Papers\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Shays%27_Rebellion\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Jay_Treaty\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Prisoners_of_war_in_the_American_Revolutionary_War\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Society_of_the_Cincinnati\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Turtle_(submersible)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Founding_Fathers_of_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Diplomacy_in_the_American_Revolutionary_War\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Liberty_Tree\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Yankee_Doodle\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/African_Americans_in_the_Revolutionary_War\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Timeline_of_the_American_Revolution\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Women_in_the_American_Revolution\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/United_States_territorial_acquisitions\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Thirteen_Colonies\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Louisiana_Purchase\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Treaty_of_1818\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Adams%E2%80%93On%C3%ADs_Treaty\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Texas_annexation\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Oregon_Treaty\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Mexican_Cession\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Gadsden_Purchase\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Guano_Islands_Act\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Alaska_Purchase\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Newlands_Resolution\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Treaty_of_Paris_(1898)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Tripartite_Convention\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Treaty_of_Cession_of_Tutuila\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Treaty_of_Cession_of_Manu%27a\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Treaty_of_the_Danish_West_Indies\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Manifest_destiny\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Benjamin_Franklin\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/List_of_Governors_of_Pennsylvania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/United_States_Ambassador_to_France\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Second_Continental_Congress\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Join,_or_Die\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Albany_Plan\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Albany_Congress\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Hutchinson_Letters_Affair\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Committee_of_Secret_Correspondence\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Committee_of_Five\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/United_States_Declaration_of_Independence\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Model_Treaty\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Franco-American_alliance\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Treaty_of_Amity_and_Commerce_(United_States%E2%80%93France)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Treaty_of_Alliance_(1778)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Staten_Island_Peace_Conference\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Constitutional_Convention_(United_States)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Province_of_Pennsylvania#Government\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/United_States_Postmaster_General\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Founding_Fathers_of_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Franklin%27s_electrostatic_machine\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Bifocals\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Franklin_stove\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Glass_harmonica#Franklin's_armonica\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Gulf_Stream#History\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Lightning_rod\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Kite_experiment\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Pay_it_forward\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Associators\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/111th_Infantry_Regiment_(United_States)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Junto_(club)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/American_Philosophical_Society\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Library_Company_of_Philadelphia\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Pennsylvania_Hospital\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/The_Academy_and_College_of_Philadelphia\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/University_of_Pennsylvania\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Philadelphia_Contributionship\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Union_Fire_Company\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Early_American_currency\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Fugio_Cent\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Postage_stamps_and_postal_history_of_the_United_States#Early_postal_history\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Pennsylvania_Abolition_Society\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Les_Neuf_S%C5%93urs\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Social_contributions_and_studies_by_Benjamin_Franklin\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Christ_Church_Burial_Ground\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Silence_Dogood\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/A_Dissertation_on_Liberty_and_Necessity,_Pleasure_and_Pain\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/The_Busy-Body\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Pennsylvania_Gazette\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Poor_Richard%27s_Almanack\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/The_Drinker%27s_Dictionary\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Advice_to_a_Friend_on_Choosing_a_Mistress\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/The_Speech_of_Polly_Baker\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "0\n", - "PAGE HAS NO LINKS: /wiki/Observations_Concerning_the_Increase_of_Mankind,_Peopling_of_Countries,_etc.\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Experiments_and_Observations_on_Electricity\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Thomas_Birch#Copies_of_Franklin_letters\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/The_Way_to_Wealth\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Pennsylvania_Chronicle\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Indian_removal#Benjamin_Franklin\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Fart_Proudly\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Noble_savage#Benjamin_Franklin's_Remarks_Concerning_the_Savages_of_North_America\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/The_Morals_of_Chess\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/The_Autobiography_of_Benjamin_Franklin\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Bagatelles_and_Satires\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/History_of_American_newspapers#Ben_Franklin,_journalist\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Franklin_Court\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Benjamin_Franklin_House\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Benjamin_Franklin_Institute_of_Technology\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Benjamin_Franklin_National_Memorial\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Franklin_Institute\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Benjamin_Franklin_Medal_(American_Philosophical_Society)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/The_Apotheosis_of_Washington\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Benjamin_Franklin_(Jouvenal)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Benjamin_Franklin_in_popular_culture\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Ben_and_Me\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Ben_Franklin_in_Paris\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/1776_(musical)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/1776_(film)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Benjamin_Franklin_(miniseries)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Liberty!\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Liberty%27s_Kids\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Benjamin_Franklin_(2002_film)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/John_Adams_(miniseries)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Sons_of_Liberty_(miniseries)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Sons_of_Ben_(MLS_supporters_association)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Refunding_Certificate\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Franklin_half_dollar\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/United_States_one_hundred-dollar_bill\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Washington-Franklin_Issues\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/List_of_places_named_for_Benjamin_Franklin\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Franklin_Field\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/State_of_Franklin\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Ships_named_USS_Franklin\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Ben_Franklin_effect\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Age_of_Enlightenment\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/American_Enlightenment\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/The_New-England_Courant\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/The_American_Museum_(magazine)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/American_Revolution\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Patriot_(American_Revolution)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Syng_inkstand\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Deborah_Read\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Sarah_Franklin_Bache\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Francis_Folger_Franklin\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/William_Franklin\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Richard_Bache_Jr.\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Benjamin_Franklin_Bache_(journalist)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Louis_Franklin_Bache\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/William_Temple_Franklin\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Andrew_A._Harwood\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Alexander_Dallas_Bache\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Josiah_Franklin\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Jane_Mecom\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/James_Franklin_(printer)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Mary_Morrell_Folger\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Peter_Folger_(Nantucket_settler)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Richard_Bache\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Ann_Smith_Franklin\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/John_Adams\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/List_of_Presidents_of_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/President_of_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/List_of_Vice_Presidents_of_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Vice_President_of_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/United_States_Ambassador_to_the_United_Kingdom\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/United_States_Ambassador_to_the_Netherlands\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Second_Continental_Congress\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/First_Continental_Congress\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Founding_Fathers_of_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Braintree_Instructions\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Boston_Massacre#Trials\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Continental_Association\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/John_Adams#Dispute_concerning_Parliament's_authority\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Thoughts_on_Government\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/John_Adams#Declaration_of_Independence\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/United_States_Declaration_of_Independence#May_15_preamble\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Committee_of_Five\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Model_Treaty\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Treaty_of_Amity_and_Commerce_(United_States%E2%80%93France)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Treaty_of_Alliance_(1778)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Board_of_War\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/United_States_Secretary_of_the_Navy#Secretaries_of_the_Navy\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Continental_Navy\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Staten_Island_Peace_Conference\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Conference_House\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Constitution_of_Massachusetts\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Presidency_of_John_Adams\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Inauguration_of_John_Adams\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Quasi-War\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/XYZ_Affair\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/An_Act_further_to_protect_the_commerce_of_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/History_of_the_United_States_Marine_Corps#Establishment_of_the_modern_Marine_Corps\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Convention_of_1800\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Alien_and_Sedition_Acts\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Naturalization_Act_of_1798\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Navy_Department_Library\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Treaty_of_Tellico\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Treaty_of_Tripoli\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Midnight_Judges_Act\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Marbury_v._Madison\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/1797_State_of_the_Union_Address\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/1798_State_of_the_Union_Address\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/1799_State_of_the_Union_Address\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/1800_State_of_the_Union_Address\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/John_Adams#Administration_and_cabinet\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/List_of_federal_judges_appointed_by_John_Adams\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Massachusetts_Historical_Society#Collections\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Adams_Papers_Editorial_Project\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/John_Adams#Early_life_and_education\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Adams_National_Historical_Park\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/John_Adams_Birthplace\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/John_Quincy_Adams_Birthplace\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Peacefield\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Adams_National_Historical_Park#Stone_Library\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Massachusetts_Hall_(Harvard_University)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/President%27s_House_(Philadelphia)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/American_Academy_of_Arts_and_Sciences\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/United_First_Parish_Church_(Quincy,_Massachusetts)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/United_States_presidential_election,_1788%E2%80%9389\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/United_States_presidential_election,_1792\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/United_States_presidential_election,_1796\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/United_States_presidential_election,_1800\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Adams_House_(Harvard_University)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/John_Adams_Building\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Presidents_of_the_United_States_on_U.S._postage_stamps#John_Adams\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Adams_Memorial\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Profiles_in_Courage_(TV_series)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/American_Primitive\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/1776_(musical)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/1776_(film)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/The_Adams_Chronicles\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Liberty!\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Liberty%27s_Kids\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/John_Adams_(book)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/John_Adams_(miniseries)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Sons_of_Liberty_(miniseries)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Adams_and_Liberty\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Boston_Public_Library#Overview\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/American_Enlightenment\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Congress_Hall\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Federalist_Party\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "0\n", - "PAGE HAS NO LINKS: /wiki/Federalist_Era\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/First_Party_System\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Republicanism_in_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/American_Philosophical_Society\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Gazette_of_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/The_American_Museum_(magazine)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/American_Revolution\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Patriot_(American_Revolution)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Adams_political_family\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Abigail_Adams\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Quincy_political_family\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Abigail_Adams_Smith\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/John_Quincy_Adams\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Presidency_of_John_Quincy_Adams\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Charles_Adams_(1770%E2%80%931800)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Thomas_Boylston_Adams_(1772%E2%80%931832)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/George_Washington_Adams\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Charles_Francis_Adams_Sr.\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/John_Adams_II\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/John_Quincy_Adams_II\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Henry_Adams\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Brooks_Adams\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/John_Adams_Sr.\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Susanna_Boylston\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Elihu_Adams\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Samuel_Adams\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Louisa_Adams\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/First_Ladies_of_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/George_Washington\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Thomas_Jefferson\n", - "540\n", - "540\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Main_Page\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Main_Page\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Pound_sterling\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/GBP_(disambiguation)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Manx_pound\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Jersey_pound\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Guernsey_pound\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Coins_of_the_pound_sterling#2008_redesign\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/ISO_4217\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Penny_(British_decimal_coin)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Plural\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Penny_(British_decimal_coin)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Currency_symbol\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Pound_sign\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Penny_(British_decimal_coin)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Banknotes_of_the_pound_sterling\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/%C2%A35\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/%C2%A310\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/%C2%A320\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/%C2%A31\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/%C2%A350\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Coins_of_the_pound_sterling\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Penny_(British_decimal_coin)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Two_pence_(British_decimal_coin)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Five_pence_(British_coin)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Ten_pence_(British_coin)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Twenty_pence_(British_coin)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Fifty_pence_(British_coin)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/One_pound_(British_coin)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Two_pounds_(British_coin)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Royal_Maundy#Maundy_coinage\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Royal_Maundy#Maundy_coinage\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Sixpence_(British_coin)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/British_twenty-five_pence_coin\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Five_pounds_(British_coin)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Sovereign_(British_coin)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Twenty_pounds_(British_coin)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/One_hundred_pounds_(British_coin)\n", - "1830\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/British_Antarctic_Territory\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Falkland_Islands\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Falkland_Islands_pound\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Gibraltar\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Gibraltar_pound\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Saint_Helena,_Ascension_and_Tristan_da_Cunha\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Tristan_da_Cunha\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Saint_Helena_pound\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Saint_Helena\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Ascension_Island\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/South_Georgia_and_the_South_Sandwich_Islands\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Falkland_Islands_pound\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/British_Indian_Ocean_Territory\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/U.S._dollar\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Guernsey\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Guernsey_pound\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Isle_of_Man\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Manx_pound\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Jersey\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Jersey_pound\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Zimbabwe\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Pitcairn_Islands\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Central_bank\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Bank_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Printer_(publisher)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Bank_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Bank_of_Scotland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Royal_Bank_of_Scotland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Clydesdale_Bank\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Danske_Bank\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/First_Trust_Bank\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Ulster_Bank\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Bank_of_Ireland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/States_of_Guernsey\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/States_of_Jersey\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Isle_of_Man\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Mint_(coin)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Royal_Mint\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Monetary_inflation\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Consumer_Price_Index_(United_Kingdom)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Fixed_exchange_rate\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Falkland_Islands_pound\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Gibraltar_pound\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Saint_Helena_pound\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Jersey_pound\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Guernsey_pound\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Manx_pound\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/European_Exchange_Rate_Mechanism\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Black_Wednesday\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Pound_sign\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/ISO_4217\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Currency\n", - "1830\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Jersey\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Guernsey\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Isle_of_Man\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/South_Georgia_and_the_South_Sandwich_Islands\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/British_Antarctic_Territory\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Tristan_da_Cunha\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Pound_(currency)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Commodity_money\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Fiat_money\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Crown_dependencies\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Guernsey_pound\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Jersey_pound\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Manx_pound\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Gibraltar\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Gibraltar_pound\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Falkland_Islands\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Falkland_Islands_pound\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Saint_Helena\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Ascension_Island\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Saint_Helena_pound\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Bank_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Central_bank\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Foreign_exchange_market\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/United_States_dollar\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Euro\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Japanese_yen\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Basket_of_currencies\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Special_drawing_rights#Value_definition\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/International_Monetary_Fund\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Special_drawing_rights\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Reserve_currency\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Foreign_exchange_reserves\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/English_plural#Plurals_of_compound_nouns\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Pound_(currency)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/US_Dollar\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Foreign_exchange_market\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Irish_Pound\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Euro\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Diminutive\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Silver_penny\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Philip_Grierson\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Hanseatic_League\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Sterling_silver\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Currency_sign\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Pound_sign\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Ancient_Roman_units_of_measurement\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/%C2%A3sd\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Duodecimal\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Blackletter\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/ISO_4217\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/ISO_3166-1_alpha-2\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/ISO_3166\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Terminology_of_the_British_Isles#Terminology_in_detail\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Crown_dependency\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Guernsey_pound\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Jersey_pound\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Isle_of_Man_pound\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "0\n", - "PAGE HAS NO LINKS: /wiki/Pence_sterling\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Italian_scudo\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Quid_pro_quo\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Decimalisation\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Decimal_Day\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Halfpenny_(British_decimal_coin)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/%C2%A3sd\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/The_Hatter\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/British_shilling_coin\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Old_penny_sterling\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Solidus_(coin)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Denarius\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Crown_(British_coin)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Farthing_(British_coin)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Sovereign_(British_coin)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Guinea_(British_coin)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Coins_of_the_pound_sterling\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/List_of_British_bank_notes_and_coins\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/George_III_of_the_United_Kingdom\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/George_IV_of_the_United_Kingdom\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/William_IV_of_the_United_Kingdom\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Queen_Victoria\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Cupro-nickel\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Two_shilling_coin\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Anglo-Saxon_pound\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Shilling\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Silver_penny\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Anglo-Saxons\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/History_of_the_English_penny_(c._600-1066)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Pound_(mass)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Currency\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Farthing_(British_coin)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Penny\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Shilling\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Charlemagne\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Francia\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/French_livre\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Offa_of_Mercia\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/History_of_the_English_penny_(c._600-1066)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Charlemagne\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Frankish_Empire\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Pound_(mass)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Grain_(mass)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Tower_pound\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/History_of_the_English_penny_(1154%E2%80%931485)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Henry_II_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/History_of_the_English_penny_(1154%E2%80%931485)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Sterling_silver\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Fine_silver\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Noble_(English_coin)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Henry_III_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Henry_IV_of_England\n", - "559\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Edward_VI\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Troy_pound\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Sterling_silver\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Gold_coinage\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Carat_(purity)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Guinea_(coin)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Troy_pound\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Isaac_Newton\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Royal_Mint\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Gresham%27s_Law\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Gold_standard\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/East_India_Company\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/History_of_opium_in_China\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Opium\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Britannia_silver\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Assay_Office\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Bank_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Bank_of_Scotland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Paper_money\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Pound_Scots\n", - "548\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Kingdom_of_Scotland\n", - "469\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Treaty_of_Union\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Kingdom_of_Ireland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/United_Kingdom_of_Great_Britain_and_Ireland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Irish_pound\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Sterling_area\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/British_Empire\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Canadian_dollar\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Barbados\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/British_West_Africa\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Cyprus\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Fiji\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Irish_Free_State\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Jamaica\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Southern_Rhodesia\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/South_African_pound\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Australian_pound\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Sterling_area\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Napoleonic_wars\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Bank_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Legal_tender\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Gold_standard\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Sovereign_(British_coin)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Irish_pound\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Nellie_Bly\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Around_the_World_in_Seventy-Two_Days\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Canadian_dollar\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Dutch_guilder\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/French_franc\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Latin_Monetary_Union\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/German_gold_mark\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Austro-Hungarian_krone\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/International_Monetary_Conferences\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Latin_Monetary_Union\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Royal_Commission\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/World_War_I\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Great_Depression\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/United_States_dollar\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/World_War_II\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Bretton_Woods_system\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Operation_Bernhard\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Second_World_War\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Harold_Wilson\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Decimal_Day\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Guinea_(British_coin)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/House_of_Commons_of_the_United_Kingdom\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/John_Bowring\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Stirling_Burghs_(UK_Parliament_constituency)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/William_Gladstone\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/South_Lancashire_(UK_Parliament_constituency)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Royal_Commission\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Samuel_Jones-Loyd,_1st_Baron_Overstone\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/John_Hubbard,_1st_Baron_Addington\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Cypriot_pound\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Queen%27s_Speech\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Bretton_Woods_system\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Floating_currency\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Sterling_area\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/James_Callaghan\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/National_Archives\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/1973_oil_crisis\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/The_Wall_Street_Journal\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/European_Economic_Community\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/International_Monetary_Fund\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Public_expenditure\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Monetarist\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Money_supply\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Recession\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Margaret_Thatcher\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Chancellor_of_the_Exchequer\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Nigel_Lawson\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Deutsche_Mark\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Edward_Heath\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/German_re-unification\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Third_Thatcher_ministry\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/European_Exchange_Rate_Mechanism\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Deutsche_Mark\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Black_Wednesday\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Labour_Party_(UK)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Bank_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Liberal_Democrats_(UK)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Consumer_Price_Index_(United_Kingdom)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Chancellor_of_the_Exchequer\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Retail_Prices_Index_(United_Kingdom)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/United_Kingdom_and_the_euro\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/European_Union\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Euro\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Gordon_Brown\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Chancellor_of_the_Exchequer\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Republic_of_Cyprus\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Cypriot_pound\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Akrotiri_and_Dhekelia\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/United_Kingdom_European_Union_membership_referendum,_2016\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/United_Kingdom%27s_withdrawal_from_the_European_Union\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Tony_Blair\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Five_economic_tests\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Convergence_criteria\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Government_budget_deficit\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Gross_domestic_product\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Denmark\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Scottish_Conservative_Party\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Scottish_independence_referendum,_2014\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Scottish_National_Party\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Economy_of_the_United_Kingdom#Exchange_rates\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "0\n", - "PAGE HAS NO LINKS: /wiki/ISO_4217\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/United_States_dollar\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Euro\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Japanese_yen\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Australian_dollar\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Canadian_dollar\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Swiss_franc\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Renminbi\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Swedish_krona\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/New_Zealand_dollar\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Mexican_peso\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Singapore_dollar\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Hong_Kong_dollar\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Norwegian_krone\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/South_Korean_won\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Turkish_lira\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Russian_ruble\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Indian_rupee\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Brazilian_real\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/South_African_rand\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Global_financial_crisis_of_2008%E2%80%932009\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Bank_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Capital_(economics)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Economy_of_the_United_Kingdom\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Quantitative_easing\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Governor_of_the_Bank_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Mervyn_King,_Baron_King_of_Lothbury\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Asset\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Government_bond\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Commercial_paper\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Corporate_bond\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Chancellor_of_the_Exchequer\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Alistair_Darling\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/United_Kingdom_European_Union_membership_referendum,_2016\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Inflation\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Interest_rates\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Coins_of_the_pound_sterling\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Farthing_(British_coin)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Halfpenny_(British_coin)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Gold_penny\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Groat_(coin)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Florin_(English_coin)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Noble_(English_coin)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Angel_(coin)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Henry_VII_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Shilling\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Sovereign_(British_coin)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Crown_(British_coin)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Half_crown_(British_coin)\n", - "559\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Debasement\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Edward_VI\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Threepence_(British_coin)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Sixpence_(British_coin)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Elizabeth_I\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/James_VI\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Spur_ryal\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Unite_(English_coin)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Laurel_(English_coin)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Tin\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Copper\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Farthing_(British_coin)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Halfpenny_(British_coin)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Charles_I_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/English_Civil_War\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Guinea_(British_coin)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Spanish_dollar\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Spanish_real\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Spanish_colonial_real\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Sovereign_(British_coin)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Florin_(British_coin)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Double_florin\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/World_War_I\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Sovereign_(British_coin)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Half-sovereign\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Gold_standard\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Cupro-nickel\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Royal_Maundy#Maundy_coinage\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/One_pound_(British_decimal_coin)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Elizabeth_II\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Tudor_rose\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Leek#Cultural_significance\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Thistle#Scottish_thistle\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Shamrock\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Coins_of_the_pound_sterling\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Cupro-nickel\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Heptagon\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Bronze\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Copper_plating\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Steel\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Bi-metallic_coins\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Two_pounds_(British_decimal_coin)#The_modern_circulating_coin_(1997–present)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Entrepreneur\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Market_value\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Royal_coat_of_arms_of_the_United_Kingdom\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Nickel_electroplating\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Banknotes_of_the_pound_sterling\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Bank_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Napoleonic_wars\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Bank_of_Scotland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Pound_Scots\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Royal_Bank_of_Scotland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Bank_of_Ireland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/HM_Treasury\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Northern_Ireland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/World_War_II\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Nazi\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Operation_Bernhard\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/UV_lamp\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Offset_litho\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Intaglio_(printmaking)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Letterpress\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Banking_system\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Polymer_banknote\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Northern_Bank\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Danske_Bank_(Northern_Ireland)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Central_bank\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Bank_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Monetary_policy\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/HM_Treasury\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Royal_Mint\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Crown_Dependencies\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Manx_pound\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Jersey_pound\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Guernsey_pound\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Fixed_exchange_rate\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Currency_union\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/ISO_4217\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/British_Overseas_Territories\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Falkland_Islands_pound\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Gibraltar_pound\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Saint_Helena_pound\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/British_Islands\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Legal_tender\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Bank_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/England_and_Wales\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Northern_Ireland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/World_War_II\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Channel_Islands\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Isle_of_Man\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Five_pounds_(British_decimal_coin)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/British_twenty-five_pence_coin\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/House_of_Commons_Library\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Napoleonic_Wars\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Inflation\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/World_War_II\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Foreign_exchange_market\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/United_States_dollar\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Euro\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Japanese_yen\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Swiss_franc\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Australian_dollar\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Canadian_dollar\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Indian_rupee\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Reserve_currency\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Reserve_currency\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/United_States_dollar\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Euro\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Deutsche_Mark\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/French_franc\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Japanese_yen\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/List_of_currencies\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Angevin_pound\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Green_pound\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Zimbabwean_dollar\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Euro\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/United_States_dollar\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/South_African_rand\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Botswana_pula\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Indian_rupees\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Australian_dollars\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Chinese_yuan\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Japanese_yen\n", - "494\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Tynwald\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Frankfurter_Allgemeine_Zeitung\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Frankfurt\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Philip_Grierson\n", - "494\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Nellie_Bly\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Retail_Price_Index\n", - "494\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/The_National_Archives_(United_Kingdom)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Iain_Martin\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/The_Wall_Street_Journal\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Alexander_Cairncross_(economist)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Yale_University_Press\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "494\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/The_Observer\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Hansard\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/House_of_Commons_of_the_United_Kingdom\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Ann_Treneman\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/The_Times\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Michael_Theodoulou\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/The_Daily_Telegraph\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Currency_pair\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/The_Guardian\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/The_Royal_Mint\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/House_of_Commons_Library\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Office_for_National_Statistics\n", - "494\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/International_Standard_Serial_Number\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Portable_Document_Format\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/European_Central_Bank\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/International_Standard_Serial_Number\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/International_Standard_Serial_Number\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Portable_Document_Format\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/International_Monetary_Fund\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Portable_Document_Format\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/European_Central_Bank\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/International_Standard_Serial_Number\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/International_Standard_Serial_Number\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Fernand_Braudel\n", - "494\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/University_of_Chicago_Press\n", - "494\n", - "494\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Princeton_University_Press\n", - "494\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Oxford_University_Press\n", - "494\n", - "494\n", - "494\n", - "494\n", - "494\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Standard_Catalog_of_World_Coins\n", - "494\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Standard_Catalog_of_World_Paper_Money\n", - "494\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Standard_Catalog_of_World_Paper_Money\n", - "494\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Euro\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Economic_and_Monetary_Union_of_the_European_Union\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Euro_sign\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Eurozone\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Linguistic_issues_concerning_the_euro\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/European_Central_Bank\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/President_of_the_European_Central_Bank\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/European_System_of_Central_Banks\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Eurosystem\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Economic_and_Financial_Affairs_Council\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Eurogroup\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Euro_summit\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Stability_and_Growth_Pact\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/European_Financial_Stability_Facility\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/European_Financial_Stabilisation_Mechanism\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/European_Stability_Mechanism\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Euro_Plus_Pact\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Sixpack_(European_Union_law)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/European_Fiscal_Compact\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/History_of_the_euro\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Snake_in_the_tunnel\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/European_Monetary_System\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/European_Currency_Unit\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/European_Exchange_Rate_Mechanism\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Economic_and_Monetary_Union_of_the_European_Union\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/European_Monetary_Cooperation_Fund\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/European_Monetary_Institute\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Enlargement_of_the_eurozone\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Black_Wednesday\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Economy_of_Europe\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Economy_of_the_European_Union\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Eonia\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Euro_calculator\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Euribor\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Single_Euro_Payments_Area\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/International_status_and_usage_of_the_euro\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Eurobonds\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Reserve_currency\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Petroeuro\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/World_currency\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Euro_coins\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/1_cent_euro_coin\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/2_cent_euro_coin\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/5_cent_euro_coin\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/10_cent_euro_coin\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/20_cent_euro_coin\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/50_cent_euro_coin\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/1_euro_coin\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/2_euro_coin\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/%E2%82%AC2_commemorative_coins\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Euro_gold_and_silver_commemorative_coins\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Identifying_marks_on_euro_coins\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Euro_starter_kits\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Europa_coin_programme\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/List_of_euro_mints\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Euro_banknotes\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/5_euro_note\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/10_euro_note\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/20_euro_note\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/50_euro_note\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/100_euro_note\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/200_euro_note\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/500_euro_note\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Austrian_euro_coins\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Belgian_euro_coins\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Cypriot_euro_coins\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Estonian_euro_coins\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Finnish_euro_coins\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/French_euro_coins\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/German_euro_coins\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Greek_euro_coins\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Irish_euro_coins\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Italian_euro_coins\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Latvian_euro_coins\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Lithuania_and_the_euro\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Luxembourgish_euro_coins\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Maltese_euro_coins\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Dutch_euro_coins\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Portuguese_euro_coins\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Slovak_euro_coins\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Slovenian_euro_coins\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Spanish_euro_coins\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Andorra_and_the_euro\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Mon%C3%A9gasque_euro_coins\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Sammarinese_euro_coins\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Vatican_euro_coins\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Bulgaria_and_the_euro\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Croatia_and_the_euro\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Czech_Republic_and_the_euro\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Denmark_and_the_euro\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Hungary_and_the_euro\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Poland_and_the_euro\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Romania_and_the_euro\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Sweden_and_the_euro\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/United_Kingdom_and_the_euro\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Kosovo_and_the_euro\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Montenegro_and_the_euro\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/European_Currency_Unit\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Austrian_schilling\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Belgian_franc\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Cypriot_pound\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Dutch_guilder\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Estonian_kroon\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Finnish_markka\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/French_franc\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Deutsche_Mark\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Greek_drachma\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Irish_pound\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Italian_lira\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Latvian_lats\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Lithuanian_litas\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Luxembourgish_franc\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Maltese_lira\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Mon%C3%A9gasque_franc\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Portuguese_escudo\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Sammarinese_lira\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Slovak_koruna\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Slovenian_tolar\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Spanish_peseta\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Vatican_lira\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Currencies_of_the_European_Union\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Danish_krone\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Gibraltar_pound\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Bulgarian_lev\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Croatian_kuna\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Czech_koruna\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Hungarian_forint\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Polish_z%C5%82oty\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Romanian_leu\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Swedish_krona\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Currency\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Algerian_dinar\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Egyptian_pound\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Euro\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Plazas_de_soberan%C3%ADa\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Libyan_dinar\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Mauritanian_ouguiya\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Moroccan_dirham\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Sahrawi_peseta\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Sudanese_pound\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Tunisian_dinar\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Angolan_kwanza\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "0\n", - "PAGE HAS NO LINKS: /wiki/Burundian_franc\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Central_African_CFA_franc\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Cameroon\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Central_African_Republic\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Chad\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Republic_of_the_Congo\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Equatorial_Guinea\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Gabon\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Congolese_franc\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Rwandan_franc\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Comorian_franc\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Djiboutian_franc\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Eritrean_nakfa\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Ethiopian_birr\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Kenyan_shilling\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Seychellois_rupee\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Somali_shilling\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Somaliland_shilling\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/South_Sudanese_pound\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Tanzanian_shilling\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Ugandan_shilling\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Botswana_pula\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Saint_Helena,_Ascension_and_Tristan_da_Cunha\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Zimbabwe\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Euro\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/French_Southern_and_Antarctic_Lands\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Mayotte\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/R%C3%A9union\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Zimbabwe\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Lesotho_loti\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Malagasy_ariary\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Malawian_kwacha\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Mauritian_rupee\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Mozambican_metical\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Namibian_dollar\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Saint_Helena_pound\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/South_African_rand\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Lesotho\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Namibia\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Swaziland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Zimbabwe\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Swazi_lilangeni\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/United_States_dollar\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Zimbabwe\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Zambian_kwacha\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Zimbabwean_dollar\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Hyperinflation\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Zimbabwean_bond_coins\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Cent_(currency)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Zimbabwean_bond_notes\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Dollar\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Cape_Verdean_escudo\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Euro\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Canary_Islands\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Madeira\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Gambian_dalasi\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Ghanaian_cedi\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Guinean_franc\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Liberian_dollar\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Nigerian_naira\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/S%C3%A3o_Tom%C3%A9_and_Pr%C3%ADncipe_dobra\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Sierra_Leonean_leone\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/West_African_CFA_franc\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Benin\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Burkina_Faso\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Guinea-Bissau\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Ivory_Coast\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Mali\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Niger\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Senegal\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Togo\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Currency\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Canadian_dollar\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Canada\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Saint_Pierre_and_Miquelon\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Danish_krone\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Greenland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Euro\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Saint_Pierre_and_Miquelon\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Mexican_peso\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/United_States_dollar\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Aruban_florin\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Bahamian_dollar\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Barbadian_dollar\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Bermudian_dollar\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Cayman_Islands_dollar\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Cuban_peso\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Cuban_convertible_peso\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Dominican_peso\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/East_Caribbean_dollar\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Anguilla\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Antigua_and_Barbuda\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Dominica\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Grenada\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Montserrat\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Saint_Kitts_and_Nevis\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Saint_Lucia\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Saint_Vincent_and_the_Grenadines\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Euro\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Saint_Martin\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Saint_Barth%C3%A9lemy\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Guadeloupe\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Martinique\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Haitian_gourde\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Jamaican_dollar\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Netherlands_Antillean_guilder\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Cura%C3%A7ao\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Sint_Maarten\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Trinidad_and_Tobago_dollar\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/United_States_dollar\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Puerto_Rico\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/United_States_Virgin_Islands\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/British_Virgin_Islands\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Caribbean_Netherlands\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Turks_and_Caicos_Islands\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Belize_dollar\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Costa_Rican_col%C3%B3n\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Guatemalan_quetzal\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Honduran_lempira\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Nicaraguan_c%C3%B3rdoba\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Panamanian_balboa\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/United_States_dollar\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/El_Salvador\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Panama\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Argentine_peso\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Bolivian_boliviano\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Brazilian_real\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/British_Antarctic_Territory\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/South_Georgia_and_the_South_Sandwich_Islands\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Chilean_peso\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Colombian_peso\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Ecuadorian_centavo_coins\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Ecuador\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Euro\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/French_Guiana\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Falkland_Islands_pound\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Guyanese_dollar\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Paraguayan_guaran%C3%AD\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Peruvian_sol\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Surinamese_dollar\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Uruguayan_peso\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/United_States_dollar\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Ecuador\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Venezuelan_bol%C3%ADvar\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Kazakhstani_tenge\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Kyrgyzstani_som\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Tajikistani_somoni\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Turkmenistan_manat\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Uzbekistani_so%CA%BBm\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Renminbi\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Hong_Kong_dollar\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Japanese_yen\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/North_Korean_won\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/South_Korean_won\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Macanese_pataca\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Mongolian_t%C3%B6gr%C3%B6g\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/New_Taiwan_dollar\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Russian_ruble\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Afghan_afghani\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Bangladeshi_taka\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Bhutanese_ngultrum\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Indian_rupee\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Maldivian_rufiyaa\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Nepalese_rupee\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Pakistani_rupee\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Sri_Lankan_rupee\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/British_Indian_Ocean_Territory\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/United_States_dollar\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/British_Indian_Ocean_Territory\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Brunei_dollar\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Burmese_kyat\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Cambodian_riel\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/East_Timor_centavo_coins\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Indonesian_rupiah\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Lao_kip\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Malaysian_ringgit\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Philippine_peso\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Singapore_dollar\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Thai_baht\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/United_States_dollar\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/East_Timor\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Vietnamese_%C4%91%E1%BB%93ng\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Abkhazian_apsar\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Armenian_dram\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Artsakh_dram\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Azerbaijani_manat\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Bahraini_dinar\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Egyptian_pound\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Gaza_Strip\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "0\n", - "PAGE HAS NO LINKS: /wiki/Euro\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Cyprus\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Georgian_lari\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Iranian_rial\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Iraqi_dinar\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Israeli_new_shekel\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Jordanian_dinar\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Kuwaiti_dinar\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Lebanese_pound\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Omani_rial\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Russian_ruble\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Abkhazia\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/South_Ossetia\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Qatari_riyal\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Saudi_riyal\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Syrian_pound\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Turkish_lira\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/United_Arab_Emirates_dirham\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Yemeni_rial\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Currency\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Bulgarian_lev\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Croatian_kuna\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Czech_koruna\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Danish_krone\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Euro\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Gibraltar_pound\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Hungarian_forint\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Polish_z%C5%82oty\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Romanian_leu\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Swedish_krona\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Armenian_dram\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Azerbaijani_manat\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Belarusian_ruble\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Georgian_lari\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Moldovan_leu\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Kazakhstani_tenge\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Russian_ruble\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Transnistrian_ruble\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Ukrainian_hryvnia\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Albanian_lek\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Bosnia_and_Herzegovina_convertible_mark\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Macedonian_denar\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Maltese_scudo\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Serbian_dinar\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Turkish_lira\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Faroese_kr%C3%B3na\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Guernsey_pound\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Icelandic_kr%C3%B3na\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Jersey_pound\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Manx_pound\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Norwegian_krone\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Swiss_franc\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Banknotes_of_the_pound_sterling\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Bank_of_England_note_issues\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Bank_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Bank_of_England_%C2%A35_note\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Bank_of_England_%C2%A310_note\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Bank_of_England_%C2%A320_note\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Bank_of_England_%C2%A350_note\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Bank_of_England_10s_note\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Bank_of_England_%C2%A31_note\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Banknotes_of_Scotland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Bank_of_Scotland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Bank_of_Scotland_%C2%A35_note\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Bank_of_Scotland_%C2%A310_note\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Bank_of_Scotland_%C2%A320_note\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Bank_of_Scotland_%C2%A350_note\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Bank_of_Scotland_%C2%A3100_note\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/The_Royal_Bank_of_Scotland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/The_Royal_Bank_of_Scotland_%C2%A31_note\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/The_Royal_Bank_of_Scotland_%C2%A35_note\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/The_Royal_Bank_of_Scotland_%C2%A310_note\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/The_Royal_Bank_of_Scotland_%C2%A320_note\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/The_Royal_Bank_of_Scotland_%C2%A350_note\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/The_Royal_Bank_of_Scotland_%C2%A3100_note\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Clydesdale_Bank\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Clydesdale_Bank_%C2%A35_note\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Clydesdale_Bank_%C2%A310_note\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Clydesdale_Bank_%C2%A320_note\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Clydesdale_Bank_%C2%A350_note\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Clydesdale_Bank_%C2%A3100_note\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Banknotes_of_Northern_Ireland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Bank_of_Ireland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Bank_of_Ireland_%C2%A35_note\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Bank_of_Ireland_%C2%A310_note\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Bank_of_Ireland_%C2%A320_note\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Bank_of_Ireland_%C2%A350_note\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Bank_of_Ireland_%C2%A3100_note\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Danske_Bank_(Northern_Ireland)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Northern_Bank_%C2%A35_note\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Danske_Bank_%C2%A310_note\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Danske_Bank_%C2%A320_note\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/First_Trust_Bank\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Ulster_Bank\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Crown_dependencies\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Guernsey_pound\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Jersey_pound\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Manx_pound\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/British_Overseas_Territories\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Gibraltar_pound\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Falkland_Islands_pound\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Saint_Helena_pound\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Coins_of_the_pound_sterling\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Economy_of_the_United_Kingdom\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Sterling_area\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Coins_of_the_pound_sterling\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Halfpenny_(British_decimal_coin)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Penny_(British_decimal_coin)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Two_pence_(British_decimal_coin)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Five_pence_(British_coin)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Ten_pence_(British_coin)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Twenty_pence_(British_coin)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Fifty_pence_(British_coin)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/One_pound_(British_coin)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Two_pounds_(British_coin)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Quarter_farthing\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Third_farthing\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Half_farthing\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Farthing_(British_coin)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Halfpenny_(British_pre-decimal_coin)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Penny_(British_pre-decimal_coin)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Three_halfpence_(British_coin)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Twopence_(British_pre-decimal_coin)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Threepence_(British_coin)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Fourpence_(British_coin)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Sixpence_(British_coin)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Shilling_(British_coin)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Florin_(British_coin)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Half_crown_(British_coin)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Double_florin\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Crown_(British_coin)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Quarter_guinea\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Third_guinea_(British_coin)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Half_sovereign\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Half_guinea\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Sovereign_(British_coin)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Guinea_(coin)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Double_sovereign\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Two_guineas_(British_coin)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Five_pounds_(British_gold_coin)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Five_guineas_(British_coin)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/British_twenty-five_pence_coin\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Five_pounds_(British_coin)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Twenty_pounds_(British_coin)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Fifty_pounds_(British_coin)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/One_hundred_pounds_(British_coin)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Royal_Maundy\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Britannia_(coin)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Quarter_sovereign\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Half_sovereign\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Sovereign_(British_coin)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Lunar_Series_(British_coin)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/The_Queen%27s_Beasts_(coin)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Landmarks_of_Britain\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Coins_of_the_pound_sterling\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Banknotes_of_the_pound_sterling\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/List_of_British_banknotes_and_coins\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/List_of_British_currencies\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Scottish_coinage\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Coins_of_Ireland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/List_of_people_on_coins_of_the_United_Kingdom\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Currency\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Pound_(currency)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Alderney_pound\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Falkland_Islands_pound\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Gibraltar_pound\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Guernsey_pound\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "0\n", - "PAGE HAS NO LINKS: /wiki/Jersey_pound\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Manx_pound\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Saint_Helena_pound\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Egyptian_pound\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Lebanese_pound\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/South_Sudanese_pound\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Sudanese_pound\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Syrian_pound\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Turkish_lira\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Bristol_Pound\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Brixton#Brixton_Pound\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Lewes_Pound\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Stroud_Pound\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Totnes_Pound\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Anglo-Saxon_pound\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Australian_pound\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Bahamian_pound\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Bermudian_pound\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Biafran_pound\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/British_West_African_pound\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Canadian_pound\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Connecticut_pound\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Cypriot_pound\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Delaware_pound\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Fijian_pound\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/French_livre\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Livre_parisis\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Livre_tournois\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/French_colonial_livre\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Guadeloupe_livre\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Haitian_livre\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/New_France_livre\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Saint_Lucia_livre\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Gambian_pound\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Georgia_pound\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Ghanaian_pound\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Irish_pound\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Israeli_pound\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Jamaican_pound\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Japanese_government-issued_Oceanian_Pound\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Libyan_pound\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Lombardo-Venetian_pound\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Luccan_pound\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Luxembourgish_livre\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Malawian_pound\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Maltese_pound\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Maltese_lira\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Maryland_pound\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Massachusetts_pound\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/New_Brunswick_pound\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/New_Guinean_pound\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/New_Hampshire_pound\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/New_Jersey_pound\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/New_York_pound\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/New_Zealand_pound\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Newfoundland_pound\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Nigerian_pound\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/North_Carolina_pound\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Nova_Scotian_pound\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Oceanian_pound\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Ottoman_lira\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Palestine_pound\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Papal_lira\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Parman_lira\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Pennsylvania_pound\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Pound_Scots\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Prince_Edward_Island_pound\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Rhode_Island_pound\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Rhodesian_pound\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Rhodesia_and_Nyasaland_pound\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Sammarinese_lira\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Sardinian_lira\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Solomon_Islands_pound\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/South_Carolina_pound\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Southern_Rhodesian_pound\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/South_African_pound\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/South_African_pound\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/South_West_African_pound\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Tongan_pound\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Tuscan_pound\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Vatican_lira\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Virginia_pound\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/West_Indian_pound\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Western_Samoan_pound\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Zambian_pound\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Dinar\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Pound_sign\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Troy_weight\n", - "1830\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/History_of_the_United_Kingdom\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Timeline_of_British_history\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/History_of_the_formation_of_the_United_Kingdom\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Georgian_era\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Victorian_era\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Edwardian_era\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/History_of_the_United_Kingdom_during_the_First_World_War\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/History_of_the_United_Kingdom#Interwar_era\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/History_of_the_United_Kingdom#World_War_II\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Political_history_of_the_United_Kingdom_(1945%E2%80%93present)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Social_history_of_the_United_Kingdom_(1945%E2%80%93present)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Economic_history_of_the_United_Kingdom\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/British_Empire\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Maritime_history_of_the_United_Kingdom\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Military_history_of_the_United_Kingdom\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Geography_of_the_United_Kingdom\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Administrative_geography_of_the_United_Kingdom\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Countries_of_the_United_Kingdom\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Crown_dependencies\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/British_Overseas_Territories\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/City_status_in_the_United_Kingdom\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/List_of_towns_in_the_United_Kingdom\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/List_of_countries_that_gained_independence_from_the_United_Kingdom\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Geography_of_the_United_Kingdom\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/British_Isles\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Terminology_of_the_British_Isles\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Great_Britain\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Coastline_of_the_United_Kingdom\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Geology_of_Great_Britain\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Geography_of_Ireland#Geological_development\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/List_of_lakes_and_lochs_in_the_United_Kingdom\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/List_of_mountains_and_hills_of_the_United_Kingdom\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/List_of_rivers_of_the_United_Kingdom\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/List_of_volcanoes_in_the_United_Kingdom\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/List_of_renewable_resources_produced_and_traded_by_the_United_Kingdom\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Energy_in_the_United_Kingdom\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Renewable_energy_in_the_United_Kingdom\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Biodiesel_in_the_United_Kingdom\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Coal_mining_in_the_United_Kingdom\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Geothermal_power_in_the_United_Kingdom\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Hydraulic_fracturing_in_the_United_Kingdom\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Hydroelectricity_in_the_United_Kingdom\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Renewable_energy_in_the_United_Kingdom#Ocean_power\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/North_Sea_oil\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Solar_power_in_the_United_Kingdom\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Wind_power_in_the_United_Kingdom\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/British_food\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Agriculture_in_the_United_Kingdom\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Fishing_in_Scotland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Fishing_industry_in_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Fishing_in_Scotland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Hunting_and_shooting_in_the_United_Kingdom\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/List_of_the_vascular_plants_of_Britain_and_Ireland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Forestry_in_the_United_Kingdom\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Mining_in_the_United_Kingdom\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Politics_of_the_United_Kingdom\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Constitution_of_the_United_Kingdom\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Courts_of_the_United_Kingdom\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Elections_in_the_United_Kingdom\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Foreign_relations_of_the_United_Kingdom\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/History_of_the_foreign_relations_of_the_United_Kingdom\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Human_rights_in_the_United_Kingdom\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Intersex_rights_in_the_United_Kingdom\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/LGBT_rights_in_the_United_Kingdom\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Transgender_rights_in_the_United_Kingdom\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Judiciary_of_the_United_Kingdom\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Law_of_the_United_Kingdom\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Law_enforcement_in_the_United_Kingdom\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/United_Kingdom_legislation\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Monarchy_of_the_United_Kingdom\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "0\n", - "PAGE HAS NO LINKS: /wiki/List_of_British_monarchs\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/British_nationality_law\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Parliament_of_the_United_Kingdom\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/House_of_Commons_of_the_United_Kingdom\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/House_of_Lords\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/List_of_political_parties_in_the_United_Kingdom\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Government_of_the_United_Kingdom\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Cabinet_of_the_United_Kingdom\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/List_of_British_governments\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Her_Majesty%27s_Civil_Service\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Departments_of_the_United_Kingdom_Government\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Prime_Minister_of_the_United_Kingdom\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/List_of_Prime_Ministers_of_the_United_Kingdom\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/British_Armed_Forces\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Royal_Navy\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/British_Army\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Royal_Air_Force\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/United_Kingdom_and_weapons_of_mass_destruction\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Economy_of_the_United_Kingdom\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/List_of_banks_in_the_United_Kingdom\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Bank_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/United_Kingdom_budget\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Economic_geography_of_the_United_Kingdom\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Manufacturing_in_the_United_Kingdom\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/List_of_stock_exchanges_in_the_United_Kingdom,_the_British_Crown_Dependencies_and_United_Kingdom_Overseas_Territories\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/London_Stock_Exchange\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Taxation_in_the_United_Kingdom\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Telecommunications_in_the_United_Kingdom\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Tourism_in_the_United_Kingdom\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Transport_in_the_United_Kingdom\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/British_Rail\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Affordability_of_housing_in_the_United_Kingdom\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Crime_in_the_United_Kingdom\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Demography_of_the_United_Kingdom\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Drug_policy_of_the_United_Kingdom\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Education_in_the_United_Kingdom\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Ethnic_groups_in_the_United_Kingdom\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Healthcare_in_the_United_Kingdom\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Immigration_to_the_United_Kingdom_since_1922\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/List_of_British_innovations_and_discoveries\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Languages_of_the_United_Kingdom\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Poverty_in_the_United_Kingdom\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Food_bank#United_Kingdom\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Prostitution_in_the_United_Kingdom\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Public_holidays_in_the_United_Kingdom\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Social_care_in_the_United_Kingdom\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Social_structure_of_the_United_Kingdom\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Culture_of_the_United_Kingdom\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Art_of_the_United_Kingdom\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Cinema_of_the_United_Kingdom\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/British_cuisine\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Britishness\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/British_literature\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Media_of_the_United_Kingdom\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Television_in_the_United_Kingdom\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Music_of_the_United_Kingdom\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Religion_in_the_United_Kingdom\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Sport_in_the_United_Kingdom\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Symbols_of_the_United_Kingdom,_the_Channel_Islands_and_the_Isle_of_Man\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Theatre_of_the_United_Kingdom\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Countries_of_the_United_Kingdom\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/History_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Social_history_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Timeline_of_English_history\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Geography_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Politics_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/English_law\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Economy_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Tourism_in_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Education_in_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Healthcare_in_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Culture_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Religion_in_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/National_symbols_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Northern_Ireland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/History_of_Northern_Ireland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Northern_Ireland#Geography_and_climate\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Politics_of_Northern_Ireland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Northern_Ireland_Assembly\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Northern_Ireland_Executive\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/First_Minister_and_deputy_First_Minister\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Northern_Ireland_law\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Economy_of_Northern_Ireland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/List_of_tourist_attractions_in_Ireland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Education_in_Northern_Ireland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Health_and_Social_Care_in_Northern_Ireland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Culture_of_Northern_Ireland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Religion_in_Northern_Ireland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Northern_Ireland#Symbols\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Scotland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/History_of_Scotland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Timeline_of_Scottish_history\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Geography_of_Scotland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Politics_of_Scotland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Scottish_Parliament\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Scottish_Government\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/First_Minister_of_Scotland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Scots_law\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Economy_of_Scotland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Tourism_in_Scotland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Education_in_Scotland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Healthcare_in_Scotland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Culture_of_Scotland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Religion_in_Scotland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/National_symbols_of_Scotland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Wales\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/History_of_Wales\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Geography_of_Wales\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Welsh_Government\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Politics_of_Wales\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/National_Assembly_for_Wales\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/First_Minister_of_Wales\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Welsh_law\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Economy_of_Wales\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Tourism_in_Wales\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Education_in_Wales\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Healthcare_in_Wales\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Culture_of_Wales\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Religion_in_Wales\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/National_symbols_of_Wales\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Outline_of_the_United_Kingdom\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Index_of_United_Kingdom-related_articles\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Integrated_Authority_File\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/National_Diet_Library\n", - "979\n", - "979\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Main_Page\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Main_Page\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Spanish_dollar\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Pieces_of_Eight\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Catholic_Monarchs\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Ferdinand_V_of_Spain\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Isabella_I_of_Castile\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Kingdom_of_Granada\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Seville\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Crown_of_Castile\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Crown_of_Aragon\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Philip_V_of_Spain\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Pillars_of_Hercules\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Castile_and_Le%C3%B3n\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Granada\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Inescutcheon\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Anjou\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Ferdinand_VI_of_Spain\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Granada\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Inescutcheon\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Anjou\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Charles_III_of_Spain\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Charles_IV_of_Spain\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/United_States_Mint\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Ferdinand_VII_of_Spain\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Spanish_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Peso\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Coin\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Spanish_real\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Spanish_Empire\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Thaler\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/World_currency\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Legal_tender\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "0\n", - "PAGE HAS NO LINKS: /wiki/Coinage_Act_of_1857\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/World_currency\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Canadian_dollar\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Japanese_yen\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Yuan_(currency)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Philippine_peso\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Dollar_sign\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Peso\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Argentine_peso\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Bolivian_peso\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Chilean_peso\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Colombian_peso\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Costa_Rican_peso\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Cuban_peso\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Dominican_peso\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Ecuadorian_peso\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Guatemalan_peso\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Honduran_peso\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Mexican_peso\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Nicaraguan_peso\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Paraguayan_peso\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Philippine_peso\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Puerto_Rican_peso\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Peruvian_real\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Salvadoran_peso\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Uruguayan_peso\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Venezuelan_peso\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Coin\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Currency_of_Spanish_America\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Hieronymus_Schlick\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Bohemia\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Joachimsthaler\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Dale_(landform)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Joachimsthal\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Ore_Mountains\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/J%C3%A1chymov\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Kingdom_of_Bohemia\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Holy_Roman_Empire\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Troy_grain\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Duchy_of_Burgundy\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Cross_of_Burgundy\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Burgundian_Netherlands\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Philip_II_of_Spain\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Seven_United_Provinces\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Thaler#Dutch_daalder\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/New_Netherland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Thirteen_colonies\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Guldengroschen\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Escudo\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/New_World\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Potos%C3%AD\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Bolivia\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Taxco,_Guerrero\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Zacatecas,_Zacatecas\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Peru\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/National_Mint_of_Bolivia\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Lima\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Mexican_Mint\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Bogot%C3%A1\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Popay%C3%A1n\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Guatemala_City\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Santiago\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Spanish_peseta\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Latin_Monetary_Union\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Decimalization\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Colony_of_New_South_Wales\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Lachlan_Macquarie\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/British_One_Penny_coin_(pre-decimal)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Holey_dollar\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Shilling_(British_coin)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Parliament_of_the_United_Kingdom\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Coinage_Act_of_1792\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/United_States_Mint\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Grain_(measure)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Troy_ounce\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Coinage_Act_of_1792\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Alexander_Hamilton\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/American_Revolution\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Mercantilism\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/West_Indies\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Coinage_Act_of_1857\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/New_York_Stock_Exchange\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Pirate\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Spanish_treasure_fleet\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Manila_galleon\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Manila\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Philippines\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Metallurgical_assay\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Trade_dollar\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Hong_Kong_dollar\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Chinese_yuan\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Pirates_in_popular_culture\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Robert_Louis_Stevenson\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Treasure_Island\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Long_John_Silver\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Pirates_in_popular_culture\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Calypso_(mythology)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Tia_Dalma\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Jack_Sparrow\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Neal_Stephenson\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/The_Baroque_Cycle\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Daniel_Defoe\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Robinson_Crusoe\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Puzzle_Pirates\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Monkey_Island_(series)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Pieces_of_Eight\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Styx_(band)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Doubloon\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Spanish_escudo\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Columnarios\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Maria_Theresa_thaler\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Piastre\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Holey_dollar\n", - "494\n", - "494\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Murray_Rothbard\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/LewRockwell.com\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/JSTOR\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Currency\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Dollar\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Australian_dollar\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Bahamian_dollar\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Barbadian_dollar\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Belize_dollar\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Bermudian_dollar\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Brunei_dollar\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Canadian_dollar\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Cayman_Islands_dollar\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Cook_Islands_dollar\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Eastern_Caribbean_dollar\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Fijian_dollar\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Guyanese_dollar\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Hong_Kong_dollar\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Jamaican_dollar\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Kiribati_dollar\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Liberian_dollar\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Namibian_dollar\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/New_Zealand_dollar\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Samoan_t%C4%81l%C4%81\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Singapore_dollar\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Solomon_Islands_dollar\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Surinamese_dollar\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/New_Taiwan_dollar\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Trinidad_and_Tobago_dollar\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Tuvaluan_dollar\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/United_States_dollar\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Chinese_yuan#Connection_with_dollar\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Ethiopian_birr\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Malaysian_ringgit\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Antigua_dollar\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/British_Columbia_dollar\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/British_North_Borneo_dollar\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/British_West_Indies_dollar\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Ceylonese_rixdollar\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Confederate_States_dollar\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Early_American_currency#Continental_currency\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Danish_rigsdaler\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Danish_West_Indian_daler\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Danish_West_Indian_rigsdaler\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Dominican_dollar\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Dutch_rijksdaalder\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Greenlandic_rigsdaler\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Grenadan_dollar\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Hawaiian_dollar\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Japanese_government-issued_dollar_in_Malaya_and_Borneo\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Kiautschou_dollar\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Malaya_and_British_Borneo_dollar\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Malayan_dollar\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Mauritian_dollar\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Mongolian_dollar\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Nevisian_dollar\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/New_Brunswick_dollar\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Newfoundland_dollar\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Norwegian_rigsdaler\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Norwegian_speciedaler\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Nova_Scotian_dollar\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Penang_dollar\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Prince_Edward_Island_dollar\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Currencies_of_Puerto_Rico\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Rhodesian_dollar\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Saint_Kitts_dollar\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Saint_Lucia_dollar\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Saint_Vincent_dollar\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Sarawak_dollar\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Sierra_Leonean_dollar\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Slovenian_tolar\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Straits_dollar\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "0\n", - "PAGE HAS NO LINKS: /wiki/Sumatran_dollar\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Swedish_riksdaler\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Old_Taiwan_dollar\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Texas_dollar\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Trinidadian_dollar\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Tobagan_dollar\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Zimbabwean_dollar\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Niue_dollar\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Pitcairn_Islands_dollar\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Eurodollar\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Petrodollar\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Geary%E2%80%93Khamis_dollar\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Economy_of_Second_Life\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Entropia_Universe\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Angus_Bucks\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Antarctican_dollar\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Calgary_dollar\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Canadian_Tire_money\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Disney_dollar\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Liberty_dollar_(private_currency)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Salt_Spring_dollar\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Toronto_dollar\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Bristol_Pound\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Dollar_sign\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Half_dollar\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Holey_dollar\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Thaler\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Tolar\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Trade_dollar\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Zimbabwean_bond_coins\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Zimbabwean_bond_notes\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Currency\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Peso\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Argentine_peso\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Chilean_peso\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Colombian_peso\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Cuban_convertible_peso\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Cuban_peso\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Dominican_peso\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Macanese_pataca\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Mexican_peso\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Philippine_peso\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Sahrawi_peseta\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Uruguayan_peso\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Argentine_peso_argentino\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Argentine_peso_ley\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Argentine_peso_moneda_corriente\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Argentine_peso_moneda_nacional\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Bolivian_peso\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Catalan_peseta\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Costa_Rican_peso\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Ecuadorian_peso\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Equatorial_Guinean_peseta\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Guatemalan_peso\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Guinea-Bissau_peso\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Honduran_peso\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Japanese_government-issued_Philippine_Peso\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Nicaraguan_peso\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Paraguayan_peso\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Peruvian_peseta\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Portuguese_Timorese_pataca\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Currencies_of_Puerto_Rico\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Salvadoran_peso\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Spanish_peseta\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Venezuelan_peso\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Dollar_sign\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Maltese_pataca\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Spanish_Empire\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Catholic_Monarchs\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Habsburg_Spain\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Spanish_Golden_Age\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Encomienda\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/New_Laws\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Expulsion_of_the_Moriscos\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Eighty_Years%27_War\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Portuguese_Restoration_War\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Enlightenment_in_Spain\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Peninsular_War\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Spanish_American_wars_of_independence\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Spanish_Constitution_of_1812\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Carlist_Wars\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Spanish%E2%80%93American_War\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/German%E2%80%93Spanish_Treaty_(1899)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Spanish_Civil_War\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Moroccan_Army_of_Liberation\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Western_Sahara_conflict\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Kingdom_of_Naples\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Kingdom_of_Sicily#The_insular_kingdom_of_Sicily_under_the_Crown_of_Aragon_and_Spain\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Sardinia#Aragonese_period\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/List_of_rulers_of_Milan\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Charles_V,_Holy_Roman_Emperor\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Spanish_Netherlands\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Franche-Comt%C3%A9\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Iberian_Union\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/History_of_the_Philippines_(1521%E2%80%931898)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Spanish_East_Indies\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Spanish_Formosa\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Tidore\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Spanish_Florida\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/New_Spain\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Louisiana_(New_Spain)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Spanish_expeditions_to_the_Pacific_Northwest\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/History_of_Haiti#Spanish_history_(1492–1625)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/History_of_Belize_(1506%E2%80%931862)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Colony_of_Santiago\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/History_of_Trinidad_and_Tobago#Spanish_period\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Captaincy_General_of_Venezuela\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Viceroyalty_of_New_Granada\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Viceroyalty_of_Peru\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Viceroyalty_of_the_R%C3%ADo_de_la_Plata\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Real_Audiencia_of_Charcas\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Banda_Oriental\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/History_of_the_Falkland_Islands\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Captaincy_General_of_Chile\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Spanish_Guinea\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Ifni\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Cape_Juby\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Spanish_protectorate_in_Morocco\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Spanish_Sahara\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Archivo_de_Indias\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Council_of_the_Indies\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Cabildo_(council)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Trial_of_residence\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Laws_of_the_Indies\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Royal_Decree_of_Graces_of_1815\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Exequatur\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Papal_bull\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/School_of_Salamanca\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Viceroy\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Viceroyalty_of_New_Spain\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Viceroyalty_of_New_Granada\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Viceroyalty_of_Peru\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Viceroyalty_of_the_R%C3%ADo_de_la_Plata\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Real_Audiencia\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/New_Kingdom_of_Granada\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Royal_Audiencia_of_Buenos_Aires\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Captaincy_General_of_Venezuela\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Real_Audiencia_of_Charcas\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Real_Audiencia_of_Concepci%C3%B3n\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Real_Audiencia_of_Cusco\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Royal_Audiencia_of_Guadalajara\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Real_Audiencia_of_Guatemala\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Real_Audiencia_of_Lima\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Real_Audiencia_of_Manila\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Royal_Audiencia_of_Mexico\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Real_Audiencia_of_Panama\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Real_Audiencia_of_Quito\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Real_Audiencia_of_Santiago\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Real_Audiencia_of_Santo_Domingo\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Captaincies_of_the_Spanish_Empire\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Captaincy_General_of_Chile\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Captaincy_General_of_Cuba\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Captaincy_General_of_Guatemala\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Captaincy_General_of_the_Philippines\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Captaincy_General_of_Puerto_Rico\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Captaincy_General_of_Santo_Domingo\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Captaincy_General_of_Venezuela\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Captaincy_General_of_Yucat%C3%A1n\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Provincias_Internas\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Governorates_of_the_Spanish_Empire\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Castilla_de_Oro\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Governorate_of_Cuba\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Governorate_of_New_Andalusia_(1501%E2%80%9313)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Governorate_of_New_Andalusia\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Governorate_of_New_Castile\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Governorate_of_New_Toledo\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Governorate_of_Paraguay\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Governorate_of_the_R%C3%ADo_de_la_Plata\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "0\n", - "PAGE HAS NO LINKS: /wiki/Currency_of_Spanish_America\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Spanish_colonial_real\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Maraved%C3%AD\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Spanish_escudo\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Columnarios\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Manila_galleon\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Spanish_treasure_fleet\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Casa_de_Contrataci%C3%B3n\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Guipuzcoan_Company_of_Caracas\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Camino_Real_de_Tierra_Adentro\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Tercio\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Army_of_Flanders\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Spanish_Armada\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Indian_auxiliaries\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Spanish_Legion\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Fernando_%C3%81lvarez_de_Toledo,_3rd_Duke_of_Alba\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Antonio_de_Leyva,_Duke_of_Terranova\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Mart%C3%ADn_de_Goiti\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Alfonso_d%27Avalos\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Garc%C3%ADa_de_Toledo_Osorio,_4th_Marquis_of_Villafranca\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Emmanuel_Philibert,_Duke_of_Savoy\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/%C3%81lvaro_de_Baz%C3%A1n_the_Elder\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/John_of_Austria\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Charles_Bonaventure_de_Longueval,_Count_of_Bucquoy\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Pedro_de_Zubiaur\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Ambrogio_Spinola,_1st_Marquis_of_the_Balbases\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Bernardo_de_G%C3%A1lvez\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Christopher_Columbus\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Pinz%C3%B3n_brothers\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Ferdinand_Magellan\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Juan_Sebasti%C3%A1n_Elcano\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Juan_de_la_Cosa\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Juan_Ponce_de_Le%C3%B3n\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Miguel_L%C3%B3pez_de_Legazpi\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Pedro_Men%C3%A9ndez_de_Avil%C3%A9s\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Sebasti%C3%A1n_de_Ocampo\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/%C3%81lvar_N%C3%BA%C3%B1ez_Cabeza_de_Vaca\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Alonso_de_Ojeda\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Vasco_N%C3%BA%C3%B1ez_de_Balboa\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Alonso_de_Salazar\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Andr%C3%A9s_de_Urdaneta\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Antonio_de_Ulloa\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Ruy_L%C3%B3pez_de_Villalobos\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Diego_Columbus\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Alonso_de_Ercilla\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Nicol%C3%A1s_de_Ovando\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Juan_de_Ayala\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Sebasti%C3%A1n_Vizca%C3%ADno\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Juan_Fern%C3%A1ndez_(explorer)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Felipe_Gonz%C3%A1lez_de_Ahedo\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Conquistador\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Hern%C3%A1n_Cort%C3%A9s\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Francisco_Pizarro\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Gonzalo_Jim%C3%A9nez_de_Quesada\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Hern%C3%A1n_P%C3%A9rez_de_Quesada\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Francisco_V%C3%A1zquez_de_Coronado\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Diego_Vel%C3%A1zquez_de_Cu%C3%A9llar\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Pedro_de_Valdivia\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Pedro_de_Alvarado\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Mart%C3%ADn_de_Urs%C3%BAa\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Diego_de_Almagro\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/P%C3%A1nfilo_de_Narv%C3%A1ez\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Diego_de_Mazariegos\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Jer%C3%B3nimo_Luis_de_Cabrera\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Battle_of_Bicocca\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Battle_of_Landriano\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Battle_of_Pavia\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Conquest_of_Tunis_(1535)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Battle_of_M%C3%BChlberg\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Battle_of_St._Quentin_(1557)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Battle_of_Gravelines_(1558)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Great_Siege_of_Malta\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Battle_of_Lepanto\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Fall_of_Antwerp\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Battle_of_Ponta_Delgada\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Siege_of_Mons_(1572)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Battle_of_Gembloux_(1578)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Siege_of_Ostend\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/English_Armada\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Battle_of_Cape_Celidonia\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Battle_of_White_Mountain\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Siege_of_Breda_(1624)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Battle_of_N%C3%B6rdlingen_(1634)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Battle_of_Valenciennes_(1656)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Sieges_of_Ceuta_(1694%E2%80%931727)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Battle_of_Bitonto\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Battle_of_Bail%C3%A9n\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Battle_of_Vitoria\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Battle_of_T%C3%A9touan\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Alhucemas_landing\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Battle_of_Capo_d%27Orso\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Battle_of_Preveza\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Siege_of_Castelnuovo\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Algiers_expedition_(1541)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Battle_of_Ceresole\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Battle_of_Djerba\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Conquest_of_Tunis_(1574)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Spanish_Armada\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Siege_of_Leiden\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Battle_of_Rocroi\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Battle_of_the_Downs\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Battle_of_Cape_Passaro\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Battle_of_Trafalgar\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Battle_of_Somosierra\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Battle_of_Annual\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Fall_of_Tenochtitlan\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Battle_of_Cajamarca\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Siege_of_Cuzco\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Spanish_conquest_of_the_Muisca\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Battle_of_Reynog%C3%BCel%C3%A9n\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Battle_of_Penco\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Battle_of_Guadalupe_Island_(1595)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Battle_of_San_Juan_(1595)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Battle_of_Cartagena_de_Indias\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Cuerno_Verde\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Siege_of_Pensacola\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/La_Noche_Triste\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Battle_of_Tucapel\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Battle_of_Chacabuco\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Battle_of_Carabobo\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Battle_of_Ayacucho\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Capture_of_Guam\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Battle_of_Santiago_de_Cuba\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Battle_of_Manila_Bay\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Puerto_Rican_Campaign#Battle_of_Asomante\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Conquest_of_the_Canary_Islands\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Spanish_conquest_of_the_Aztec_Empire\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Spanish_conquest_of_the_Maya\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Spanish_conquest_of_Chiapas\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Spanish_conquest_of_Yucat%C3%A1n\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Spanish_conquest_of_Guatemala\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Spanish_conquest_of_Pet%C3%A9n\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Spanish_conquest_of_El_Salvador\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Spanish_conquest_of_Honduras\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Spanish_conquest_of_Nicaragua\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Spanish_conquest_of_the_Chibchan_Nations\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Spanish_conquest_of_the_Muisca\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Spanish_conquest_of_the_Inca_Empire\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Conquest_of_Chile\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Spanish_Colonial_architecture\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Mesoamerican_literature\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Cuzco_School\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Indochristian_art\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Quito_School\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/List_of_colonial_universities_in_Hispanic_America\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/List_of_the_oldest_schools_in_the_Philippines\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/General_Archive_of_the_Indies\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Colonial_Spanish_Horse\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Casta\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Spanish_Inquisition\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Slavery_in_the_Spanish_New_World_colonies\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Fort_Mose_Historic_State_Park#Historical_background\n", - "480\n", - "480\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Main_Page\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Main_Page\n", - "1\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Americas\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/America_(disambiguation)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/US_(disambiguation)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/USA_(disambiguation)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/United_States_(disambiguation)\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "267\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Flag_of_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Great_Seal_of_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/In_God_We_Trust\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/E_pluribus_unum\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Latin_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Annuit_c%C5%93ptis\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Latin_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/God\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Novus_ordo_seclorum\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Latin_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/The_Star-Spangled_Banner\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/The_Stars_and_Stripes_Forever\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Contiguous_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Alaska\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Hawaii\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Territories_of_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Washington,_D.C.\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/New_York_City\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Federal_government_of_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/National_language\n", - "1023\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Ethnic_groups\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/White_Americans\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/African_Americans\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Asian_Americans\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Multiracial_Americans\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Native_Americans_in_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Pacific_Islands_Americans\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Hispanic_and_Latino_Americans\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Christianity_in_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Irreligion_in_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/American_Jews\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Islam_in_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Religion_in_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Demonym\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Americans\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Politics_of_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Federalism\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Presidential_system\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Republic\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/President_of_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Donald_Trump\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Vice_President_of_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Mike_Pence\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Speaker_of_the_United_States_House_of_Representatives\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Paul_Ryan\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Chief_Justice_of_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/John_Roberts\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/United_States_Congress\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Upper_house\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/United_States_Senate\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Lower_house\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/United_States_House_of_Representatives\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/American_Revolution\n", - "469\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/United_States_Declaration_of_Independence\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Articles_of_Confederation\n", - "541\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/United_States_Constitution\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Northern_Mariana_Islands\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Geography_of_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/List_of_countries_and_dependencies_by_area\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Demographics_of_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/List_of_countries_and_dependencies_by_population\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/List_of_countries_and_dependencies_by_population\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/List_of_countries_and_territories_by_population_density\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Gross_domestic_product\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Purchasing_power_parity\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/List_of_countries_by_GDP_(PPP)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/List_of_countries_by_GDP_(PPP)_per_capita\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Gross_domestic_product\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/List_of_countries_by_GDP_(nominal)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/List_of_countries_by_GDP_(nominal)_per_capita\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Gini_coefficient\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Human_Development_Index\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/List_of_countries_by_Human_Development_Index\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/United_States_dollar\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/ISO_4217\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Coordinated_Universal_Time\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Daylight_saving_time\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Coordinated_Universal_Time\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Anno_Domini\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Right-_and_left-hand_traffic\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Telephone_numbers_in_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/North_American_Numbering_Plan\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/ISO_3166\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Country_code_top-level_domain\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/.us\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Federal_republic\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/U.S._state\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Washington,_D.C.\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Territories_of_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/United_States_Minor_Outlying_Islands\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/List_of_countries_and_dependencies_by_area\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/List_of_countries_and_dependencies_by_population\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Washington,_D.C.\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/List_of_United_States_cities_by_population\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/New_York_City\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Contiguous_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/North_America\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Canada\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Mexico\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Alaska\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Bering_Strait\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Russia\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Hawaii\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Archipelago\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Pacific_Ocean\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Territories_of_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Caribbean_Sea\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Time_in_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Geography_of_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Climate_of_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Fauna_of_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Megadiverse_countries\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Paleo-Indians\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Prehistoric_migration_and_settlement_of_the_Americas_from_Asia\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/European_colonization_of_the_Americas\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Thirteen_Colonies\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/East_Coast_of_the_United_States\n", - "469\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Seven_Years%27_War\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/American_Revolution\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/United_States_Declaration_of_Independence\n", - "541\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Colonial_empire\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/United_States_Constitution\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/United_States_Bill_of_Rights\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Natural_and_legal_rights\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/United_States_territorial_acquisitions\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/American_Indian_Wars\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/List_of_U.S._states_by_date_of_admission_to_the_Union\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/American_Civil_War\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Slavery_in_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Industrial_Revolution\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Spanish%E2%80%93American_War\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/World_War_I\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/World_War_II\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Superpower\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Nuclear_weapons_and_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Atomic_bombings_of_Hiroshima_and_Nagasaki\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Permanent_members_of_the_United_Nations_Security_Council\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/United_Nations_Security_Council\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Cold_War\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Soviet_Union\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Space_Race\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Apollo_11\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Dissolution_of_the_Soviet_Union\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Hyperpower\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/United_Nations\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/World_Bank\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/International_Monetary_Fund\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Organization_of_American_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Developed_country\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/List_of_countries_by_GDP_(nominal)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/List_of_countries_by_GDP_(PPP)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Economy_of_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Americas\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Post-industrial_society\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Service_(economics)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Knowledge_economy\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/National_wealth\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/International_rankings_of_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/List_of_countries_by_average_wage\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Human_Development_Index\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "0\n", - "PAGE HAS NO LINKS: /wiki/List_of_countries_by_GDP_(nominal)_per_capita\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/United_States_Armed_Forces\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/List_of_countries_by_military_expenditures\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Politics\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Culture_of_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Science_and_technology_in_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Naming_of_America\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Names_for_United_States_citizens\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/American_(word)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Amerigo_Vespucci\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Martin_Waldseem%C3%BCller\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Americas\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Amerigo_Vespucci\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Latin_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Stephen_Moylan\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/George_Washington\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Aide-de-camp\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Continental_Army\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Joseph_Reed_(politician)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/The_Virginia_Gazette\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Articles_of_Confederation\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/John_Dickinson\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Thomas_Jefferson\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/United_States_Declaration_of_Independence\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Columbia_(name)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Christopher_Columbus\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Washington,_D.C.\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Thirteenth_Amendment_to_the_United_States_Constitution\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Americans\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/American_(word)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/History_of_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Timeline_of_United_States_history\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/American_business_history\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Economic_history_of_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Labor_history_of_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/History_of_Native_Americans_in_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Monks_Mound\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Cahokia\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/UNESCO\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/World_Heritage_Site\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Mississippian_culture\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Prehistoric_migration_and_settlement_of_the_Americas_from_Asia\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Siberia\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Beringia\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Clovis_culture\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Pre-Columbian_era\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Mississippian_culture\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Cahokia\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Archaeology\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Four_Corners\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Ancestral_Puebloans\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/UNESCO_World_Heritage_Sites\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Mesa_Verde_National_Park\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Chaco_Culture_National_Historical_Park\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Taos_Pueblo\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Great_Lakes\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Iroquois_Confederacy\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Hawaiian_Islands\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Archaeology\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/James_Cook#Third_voyage_(1776–79)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Captain_James_Cook\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Waimea,_Kauai_County,_Hawaii\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Kauai\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Archipelago\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/John_Montagu,_4th_Earl_of_Sandwich\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Lords_Commissioners_of_the_Admiralty\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Royal_Navy\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Colonial_history_of_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/European_colonization_of_the_Americas\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Thirteen_Colonies\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Saint_Augustine,_Florida\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Mayflower_Compact\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Jean_Leon_Gerome_Ferris\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Christopher_Columbus\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Voyages_of_Christopher_Columbus#First_voyage\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/New_World\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Conquistador\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Juan_Ponce_de_Le%C3%B3n\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Unincorporated_territories_of_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Christopher_Columbus\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Puerto_Rico\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Voyages_of_Christopher_Columbus#Second_voyage\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/St._Augustine,_Florida\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Santa_Fe,_New_Mexico\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Mississippi_River\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/English_overseas_possessions\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Colony_of_Virginia\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Jamestown,_Virginia\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Pilgrims_(Plymouth_Colony)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Plymouth_Colony\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/English_Dissenters\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Freedom_of_religion\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/House_of_Burgesses\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Mayflower_Compact\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Fundamental_Orders_of_Connecticut\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Cash_crops\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Scotch-Irish_American\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Indentured_servitude\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Province_of_Georgia\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Thirteen_Colonies\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Rights_of_Englishmen\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Christian_revival\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/First_Great_Awakening\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Seven_Years%27_War\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/French_and_Indian_War\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/French_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Native_Americans_in_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Spanish_Navy\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Juan_Jos%C3%A9_P%C3%A9rez_Hern%C3%A1ndez\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Nootka_Sound\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Fur\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Abalone\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/California\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Asia\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Portugal\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Russians\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Fur_trading\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Alaska\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Pacific_Northwest\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Alta_California\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Cape_Foulweather\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/43rd_parallel_north\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Bligh_Island_(Canada)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Yuquot,_British_Columbia\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Nuu-chah-nulth_people\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/American_Indian_Wars\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Population_history_of_indigenous_peoples_of_the_Americas\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/James_Cook\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Johann_Zoffany\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Native_Americans_in_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/American_Indian_Wars\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Population_history_of_indigenous_peoples_of_the_Americas\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Smallpox\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Measles\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Indigenous_peoples_of_the_Americas\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Northwest_Passage\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Maui\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Hawaii_Island\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Kealakekua_Bay\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/American_Revolutionary_War\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/United_States_Declaration_of_Independence\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/American_Revolution\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Territorial_evolution_of_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Declaration_of_Independence_(Trumbull)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/John_Trumbull\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Republicanism_in_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Rights_of_Englishmen\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/American_Revolution\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Lee_Resolution\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Second_Continental_Congress\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/United_States_Declaration_of_Independence\n", - "469\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Thirteen_Colonies\n", - "316\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Articles_of_Confederation\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Siege_of_Yorktown\n", - "541\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Mississippi_River\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Constitutional_Convention_(United_States)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/United_States_Constitution\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Ratification_of_the_United_States_Constitution\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/President_of_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/United_States_Bill_of_Rights\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Natural_and_legal_rights\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Deep_South\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Second_Great_Awakening\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Evangelicalism\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Abolitionism_in_the_United_States\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "0\n", - "PAGE HAS NO LINKS: /wiki/United_States_territorial_acquisitions\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/American_Indian_Wars\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Louisiana_Purchase\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/War_of_1812\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Adams%E2%80%93On%C3%ADs_Treaty\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Steam_engine\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Steamboats\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Canal\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Erie_Canal\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Illinois_and_Michigan_Canal\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Jacksonian_democracy\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Second_Party_System\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Trail_of_Tears\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Indian_Removal_Act\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Indian_reservations\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Republic_of_Texas\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Manifest_destiny\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Oregon_Treaty\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Northwestern_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Mexican%E2%80%93American_War\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Mexican_Cession\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Southwestern_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/California_Gold_Rush\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/American_Civil_War\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Rail_transportation_in_the_United_States#History\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/American_bison\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Plains_Indians\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Presidency_of_Ulysses_S._Grant#Indian_affairs_and_human_rights\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Statue_of_Liberty\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/New_York_City\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/American_Civil_War\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Reconstruction_Era\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Battle_of_Gettysburg\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Thure_de_Thulstrup\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Slavery_in_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Africans\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/African_Americans\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Origins_of_the_American_Civil_War\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Slave_states_and_free_states\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/United_States_presidential_election,_1860\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Abraham_Lincoln\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Republican_Party_(United_States)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Confederate_States_of_America\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Union_(American_Civil_War)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Emancipation_Proclamation\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Thirteenth_Amendment_to_the_United_States_Constitution\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Reconstruction_Amendments\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Fourteenth_Amendment_to_the_United_States_Constitution\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/African_American\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Fifteenth_Amendment_to_the_United_States_Constitution\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Federalism_in_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Reconstruction_(United_States)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Assassination_of_Abraham_Lincoln\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Compromise_of_1877\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/United_States_presidential_election,_1876\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Redeemers\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Jim_Crow_laws\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Disenfranchisement_after_the_Reconstruction_Era\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Racial_segregation_in_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Lynching_in_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Economic_history_of_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Technological_and_industrial_history_of_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Ellis_Island\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Immigration_to_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Immigration_to_the_United_States#History\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Southern_Europe\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Eastern_Europe\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/First_Transcontinental_Telegraph\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/First_Transcontinental_Railroad\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/American_frontier\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Incandescent_light_bulb\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Telephone\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/American_Indian_Wars\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Alaska_Purchase\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Russian_Empire\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Overthrow_of_the_Kingdom_of_Hawaii\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Kingdom_of_Hawaii\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Republic_of_Hawaii\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Territory_of_Hawaii\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Puerto_Rico\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Guam\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Philippines\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Spanish%E2%80%93American_War\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/American_Samoa\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Second_Samoan_Civil_War\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/U.S._Virgin_Islands\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Gilded_Age\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Business_magnate\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Cornelius_Vanderbilt\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/John_D._Rockefeller\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Andrew_Carnegie\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Railways\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Petroleum_industry\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/History_of_the_steel_industry\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/J._P._Morgan\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Thomas_Edison\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Nikola_Tesla\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Henry_Ford\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Automotive_industry\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Great_power\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/People%27s_Party_(United_States)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/History_of_the_socialist_movement_in_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Anarchism_in_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Progressive_Era\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Women%27s_suffrage\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Prohibition_in_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/United_States_antitrust_law\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/World_War_I\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Great_Depression\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/World_War_II\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Wall_Street\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/World_War_I\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Allies_of_World_War_I\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Central_Powers\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Woodrow_Wilson\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Paris_Peace_Conference,_1919\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/League_of_Nations\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Treaty_of_Versailles\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Nineteenth_Amendment_to_the_United_States_Constitution\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Women%27s_suffrage_in_the_United_States\n", - "93\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Mass_communication\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Television\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Roaring_Twenties\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Wall_Street_Crash_of_1929\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Great_Depression_in_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Franklin_D._Roosevelt\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/New_Deal\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Social_Security_(United_States)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Great_Migration_(African_American)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Dust_Bowl\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Military_history_of_the_United_States_during_World_War_II\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Allies_of_World_War_II\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Lend-Lease\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Empire_of_Japan\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Attack_on_Pearl_Harbor\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Axis_powers\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Four_Policemen\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/World_War_II_casualties#Human_losses_by_country\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Bretton_Woods_Conference\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Yalta_Conference\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Victory_in_Europe_Day\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/United_Nations_Conference_on_International_Organization\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/San_Francisco\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/United_Nations_Charter\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Manhattan_Project\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Atomic_bombings_of_Hiroshima_and_Nagasaki\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Surrender_of_Japan\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Victory_Day_(United_States)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/History_of_the_United_States_(1945%E2%80%9364)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/History_of_the_United_States_(1964%E2%80%9380)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/History_of_the_United_States_(1980%E2%80%9391)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Cold_War\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Civil_Rights_Movement\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/War_on_Poverty\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Space_Race\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Reaganomics\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Ronald_Reagan\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Tear_down_this_wall!\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Berlin\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Soviet_Union\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Cold_War\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Capitalism\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Communism\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "0\n", - "PAGE HAS NO LINKS: /wiki/Geopolitics\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Europe\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/NATO\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Warsaw_Pact\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Containment\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Proxy_war\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Third_World\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/People%27s_Liberation_Army\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/North_Korea\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Korean_War\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Sputnik_1\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Vostok_1\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Space_Race\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Apollo_11\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Vietnam_War\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Post%E2%80%93World_War_II_economic_expansion\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Post%E2%80%93World_War_II_baby_boom\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Interstate_Highway_System\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Inner_city\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Suburb\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Hawaii\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Civil_Rights_Movement\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Nonviolence\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Martin_Luther_King_Jr.\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Civil_Rights_Act_of_1968\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Counterculture_of_the_1960s\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Opposition_to_United_States_involvement_in_the_Vietnam_War\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Black_nationalism\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Sexual_revolution\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/War_on_Poverty\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Medicare_(United_States)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Medicaid\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Means-tested\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Food_Stamp_Program\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Aid_to_Families_with_Dependent_Children\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Stagflation\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Ronald_Reagan\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Reaganomics\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/D%C3%A9tente\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Rollback\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Cold_War_(1985%E2%80%9391)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Dissolution_of_the_Soviet_Union\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Unipolarity\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Pax_Americana\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/New_world_order_(politics)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/History_of_the_United_States_(1991%E2%80%932008)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/History_of_the_United_States_(2008%E2%80%93present)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Gulf_War\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/September_11_attacks\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/War_on_Terror\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/2008_financial_crisis\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Affordable_Care_Act\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/World_Trade_Center_(1973%E2%80%932001)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Lower_Manhattan\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/September_11_attacks\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/One_World_Trade_Center\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Ba%27athist_Iraq\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Sadaam_Hussein\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Invasion_of_Kuwait\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/George_H.W._Bush\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Gulf_War\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Gulf_War\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Coalition_of_the_Gulf_War\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/ARPANET\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Internet\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Dot-com_boom\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Alan_Greenspan\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Personal_Responsibility_and_Work_Opportunity_Act\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/1990s_United_States_boom\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/North_American_Free_Trade_Agreement\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/September_11_attacks\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Al-Qaeda\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/World_Trade_Center_(1973%E2%80%932001)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/The_Pentagon\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/War_on_Terror\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/War_in_Afghanistan_(2001%E2%80%932014)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Iraq_War\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Iraq_War_troop_surge_of_2007\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/United_States_housing_bubble\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/2008_financial_crisis\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Barack_Obama\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/African_American\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Multiracial_American\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/United_States_presidential_election,_2008\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/American_Reinvestment_and_Recovery_Act\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Dodd-Frank_Wall_Street_Reform_and_Consumer_Protection_Act\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Patient_Protection_and_Affordable_Care_Act\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Health_care_in_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Patient_Protection_and_Affordable_Care_Act#Mandates\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Premium_tax_credit\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Health_insurance_marketplace\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/United_States_House_of_Representatives_elections,_2010\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/United_States_Senate_elections,_2014\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Withdrawal_of_U.S._troops_from_Iraq\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Iraqi_insurgency_(2011%E2%80%9313)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Islamic_State_of_Iraq_and_the_Levant\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/United_States%E2%80%93Cuban_Thaw\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Cuba%E2%80%93United_States_relations\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/P5%2B1\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Joint_Comprehensive_Plan_of_Action\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Nuclear_program_of_Iran\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Geography_of_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Climate_of_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Environment_of_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/K%C3%B6ppen_climate_classification\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Contiguous_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Hawaii\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Pacific_Ocean\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Puerto_Rico\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/American_Samoa\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Guam\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Northern_Mariana_Islands\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/United_States_Virgin_Islands\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/List_of_countries_and_dependencies_by_area\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/China\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/India\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Encyclop%C3%A6dia_Britannica\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/The_World_Factbook\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Atlantic_Ocean\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Deciduous\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Piedmont_(United_States)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Appalachian_Mountains\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Great_Lakes\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Midwestern_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Mississippi_River\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Missouri_River\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/List_of_rivers_by_length\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Prairie\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Great_Plains\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/U.S._Interior_Highlands\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Rocky_Mountains\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Colorado\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Great_Basin\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Chihuahuan_Desert\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Mojave_Desert\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Sierra_Nevada_(U.S.)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Cascade_Range\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/West_Coast_of_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Extreme_points_of_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Contiguous_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/California\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Denali\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Volcano\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Alexander_Archipelago\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Aleutian_Islands\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Supervolcano\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Yellowstone_National_Park\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Rockies\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/100th_meridian_west\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Humid_continental_climate\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Humid_subtropical_climate\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Alpine_climate\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Mediterranean_climate\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Coastal_California\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Oceanic_climate\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Oregon\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Washington_(state)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Florida\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Gulf_of_Mexico\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Tropical_cyclone\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Tornado\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Tornado_Alley\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Fauna_of_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Flora_of_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Bald_eagle\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/National_bird_of_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Megadiverse_countries\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Vascular_plant\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Flowering_plant\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Bald_eagle\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/List_of_national_birds\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "0\n", - "PAGE HAS NO LINKS: /wiki/List_of_national_animals\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/List_of_areas_in_the_United_States_National_Park_System\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Wilderness\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Protected_area\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Environmental_issues_in_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Nuclear_binding_energy\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Deforestation\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/United_States_Environmental_Protection_Agency\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Endangered_Species_Act\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/United_States_Fish_and_Wildlife_Service\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Demography_of_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Americans\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/List_of_U.S._states_by_population_density\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/List_of_United_States_cities_by_population\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/1790_United_States_Census\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/1800_United_States_Census\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/1810_United_States_Census\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/1820_United_States_Census\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/1830_United_States_Census\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/1840_United_States_Census\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/1850_United_States_Census\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/1860_United_States_Census\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/1870_United_States_Census\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/1880_United_States_Census\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/1890_United_States_Census\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/1900_United_States_Census\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/1910_United_States_Census\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/1920_United_States_Census\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/1930_United_States_Census\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/1940_United_States_Census\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/1950_United_States_Census\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/1960_United_States_Census\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/1970_United_States_Census\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/1980_United_States_Census\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/1990_United_States_Census\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/2000_United_States_Census\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/2010_United_States_Census\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Native_Americans_in_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/United_States_Census_Bureau\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/China\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/India\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Population_growth\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Total_fertility_rate#Developed_or_developing_countries\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Immigration_to_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Chain_migration#Legislation_and_chain_migration\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Permanent_residence_(United_States)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Mexico\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Immigration_and_Nationality_Act_of_1965\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Philippines\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Illegal_immigration_to_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Minority_group\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Non-Hispanic_whites\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Homosexuality\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Bisexuality\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Transgender\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Gallup_(company)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/LGBT\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Centers_for_Disease_Control_and_Prevention\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Native_Americans_in_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Alaska_Natives\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Native_Hawaiians\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Pacific_Islander\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Hispanic_and_Latino_Americans\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Demographic_transition\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Race_and_ethnicity_in_the_United_States_Census\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Mexican_American\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Foreign_born\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Latin_America\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/United_States_urban_area\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Great_Lakes_Megalopolis\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Northeast_Megalopolis\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Southern_California\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/List_of_United_States_cities_by_population\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Global_city\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/New_York_City\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Los_Angeles\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Chicago\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Houston\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/List_of_Metropolitan_Statistical_Areas\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/San_Bernardino,_California\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Dallas\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Atlanta\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Phoenix,_Arizona\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/List_of_Metropolitan_Statistical_Areas\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/List_of_Metropolitan_Statistical_Areas\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/New_York_City\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Los_Angeles\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Chicago\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Dallas\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/New_York_City\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/New_York_metropolitan_area#Metropolitan_Statistical_Area\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Northeastern_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Los_Angeles\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Los_Angeles_metropolitan_area\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Western_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Chicago\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Chicago_metropolitan_area\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Midwestern_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Dallas%E2%80%93Fort_Worth_metroplex\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Dallas%E2%80%93Fort_Worth_metroplex\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Southern_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Houston\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Greater_Houston\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Southern_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Washington,_D.C.\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Washington_metropolitan_area\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Southern_United_States\n", - "1705\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Delaware_Valley\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Northeastern_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Miami\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Miami_metropolitan_area\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Southern_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Atlanta\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Atlanta_metropolitan_area\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Southern_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Boston\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Greater_Boston\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Northeastern_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/San_Francisco\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/San_Francisco%E2%80%93Oakland%E2%80%93Hayward,_CA_Metropolitan_Statistical_Area\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Western_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Phoenix,_Arizona\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Phoenix_metropolitan_area\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Western_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Inland_Empire\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Inland_Empire\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Western_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Detroit\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Metro_Detroit\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Midwestern_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Seattle\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Seattle_metropolitan_area\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Western_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Minneapolis%E2%80%93Saint_Paul\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Minneapolis%E2%80%93Saint_Paul\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Midwestern_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/San_Diego\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/San_Diego_County,_California\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Western_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Tampa_Bay_Area\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Tampa_Bay_Area\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Southern_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Denver\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Denver_metropolitan_area\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Western_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/St._Louis\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Greater_St._Louis\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Midwestern_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/United_States_Census_Bureau\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Languages_of_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Language_Spoken_at_Home_in_the_United_States_of_America\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/List_of_endangered_languages_in_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Language_education_in_the_United_States\n", - "1023\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/American_English\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/De_facto\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/National_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Official_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Naturalized_citizen_of_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Spanish_language_in_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Hawaiian_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Hawaii\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Alaska\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "0\n", - "PAGE HAS NO LINKS: /wiki/Alaska_Native_languages\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/New_Mexico\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Louisiana\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/French_language_in_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/California\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Samoan_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/American_Samoa\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Chamorro_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Guam\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Carolinian_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Northern_Mariana_Islands\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Puerto_Rico\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/List_of_most_commonly_learned_foreign_languages_in_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/German_language_in_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Latin\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Japanese_language_education_in_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/American_Sign_Language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Italian_language_in_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Chinese_language_in_the_United_States\n", - "1023\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Spanish_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Spanish-based_creole_languages\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Puerto_Rico\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Chinese_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Mandarin_Chinese\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Cantonese\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Tagalog_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Filipino_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Vietnamese_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Arabic_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/French_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/French_Patois\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Cajun_French\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Korean_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Religion_in_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Christianity\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Protestant\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Evangelicalism_in_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Mainline_Protestant\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Black_church\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Catholic\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Mormon\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Jehovah%27s_Witnesses\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Eastern_Orthodox\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Jewish\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Muslim\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Buddhist\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Hindu\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Irreligion\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Agnosticism\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Atheism\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/First_Amendment_to_the_United_States_Constitution\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Free_Exercise_Clause\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Establishment_Clause\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Christianity\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Vermont\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Irreligion\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Christianity_in_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Protestantism\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Catholic_Church_in_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/American_Jews\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Islam_in_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Buddhism_in_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Hinduism_in_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Agnosticism\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Atheism\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Irreligion\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Unitarian_Universalist\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Scientologist\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Bah%C3%A1%27%C3%AD_Faith\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Sikh\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Jainism\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Shinto\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Confucianism\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Taoism\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Neo-Druidism\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Native_American_religion\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Wicca\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Religious_humanism\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Deism\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Protestantism_in_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Baptists\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Southern_Baptist_Convention\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Lutheranism\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Scandinavia\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Germany\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/North_Dakota\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/South_Dakota\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Presbyterianism\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Scottish_people\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Ulster_Scots_people\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Dutch_Reformed\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/New_Amsterdam\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Nondenominational_Protestants\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Methodists\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Pentecostals\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Episcopal_Church_(USA)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Anglicans\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Holiness_movement\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Adventists\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Anabaptists\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Christian_fundamentalists\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Reformed\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Pietists\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Quakers\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/List_of_Christian_denominations#Protestantism\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Catholic_Church_in_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Spanish_colonization_of_the_Americas\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/French_colonization_of_the_Americas\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Province_of_Maryland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Rhode_Island\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Utah\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Mormonism\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Mormon_Corridor\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Idaho\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Nevada\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Wyoming\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Eastern_Orthodoxy\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Alaska\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Russian_Alaska\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Eastern_Europe\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Jehovah%27s_Witnesses\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Restorationists\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Churches_of_Christ\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Christian_Scientists\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/List_of_Christian_denominations\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Bible_Belt\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Southern_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/New_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Western_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Family_structure_in_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Educational_attainment_in_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Teenage_pregnancy\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Alabama\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Wyoming\n", - "671\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Roe_v._Wade\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Lists_of_landmark_court_decisions\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Supreme_Court_of_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Total_fertility_rate\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Adoption_in_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Same-sex_marriage_in_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/LGBT_adoption_in_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Polygamy\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Federal_government_of_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/State_governments_of_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Local_government_in_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Elections_in_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/United_States_Capitol\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/United_States_Congress\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/United_States_Senate\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/United_States_House_of_Representatives\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/White_House\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/President_of_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/United_States_Supreme_Court_Building\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Supreme_Court_of_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Federation\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Representative_democracy\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Majority_rule\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Minority_rights\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Law_of_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Separation_of_powers\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Democracy_Index\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Italy\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Corruption_Perceptions_Index\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Federalism#United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Political_divisions_of_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Local_government_in_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/County_(United_States)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Municipal_corporation\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Plurality_voting_system\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Proportional_representation\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Legislature\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Bicameralism\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/United_States_Congress\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/United_States_Senate\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/United_States_House_of_Representatives\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "0\n", - "PAGE HAS NO LINKS: /wiki/Federal_law\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Declaration_of_war\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Power_of_the_purse\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Impeachment\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Executive_(government)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/President_of_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Commander-in-chief\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Bill_(law)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Cabinet_of_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Judiciary\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Supreme_Court_of_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Federal_judiciary_of_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Constitutionality\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Congressional_district\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/United_States_congressional_apportionment\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/2000_United_States_Census\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/District_of_Columbia\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Territories_of_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Non-voting_members_of_the_United_States_House_of_Representatives\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/At-large\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Term_limits_in_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/United_States_presidential_election\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Electoral_College_(United_States)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Washington,_D.C.\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Chief_Justice_of_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Nebraska\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Unicameralism\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Governor_(United_States)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Article_One_of_the_United_States_Constitution\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Habeas_corpus_in_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/United_States_Bill_of_Rights\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Fourteenth_Amendment_to_the_United_States_Constitution\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Judicial_review\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Marbury_v._Madison\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/John_Marshall\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Political_divisions_of_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/U.S._state\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Territories_of_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/List_of_states_and_territories_of_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Indian_reservation\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Territorial_evolution_of_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/United_States_territorial_acquisitions\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Exclusive_economic_zone#United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/U.S._state\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/District_of_Columbia\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Territories_of_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/United_States_Minor_Outlying_Islands\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/District_of_Columbia\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Twenty-third_Amendment_to_the_United_States_Constitution\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Territories_of_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Puerto_Rico\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Non-voting_members_of_the_United_States_House_of_Representatives\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Tribal_sovereignty_in_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/American_Samoa\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Alabama\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Alaska\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Arizona\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Arkansas\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/California\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Colorado\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Connecticut\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Delaware\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Florida\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Georgia_(U.S._state)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Hawaii\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Idaho\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Illinois\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Indiana\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Iowa\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Kansas\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Kentucky\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Louisiana\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Maine\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Maryland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Massachusetts\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Michigan\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Minnesota\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Mississippi\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Missouri\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Montana\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Nebraska\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Nevada\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/New_Hampshire\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/New_Jersey\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/New_Mexico\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/New_York_(state)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/North_Carolina\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/North_Dakota\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Ohio\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Oklahoma\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Oregon\n", - "1\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Rhode_Island\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/South_Carolina\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/South_Dakota\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Tennessee\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Texas\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Utah\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Vermont\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Virginia\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Washington_(state)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/West_Virginia\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Wisconsin\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Wyoming\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Delaware\n", - "1\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/New_Jersey\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Georgia_(U.S._state)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Connecticut\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Massachusetts\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Maryland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/South_Carolina\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/New_Hampshire\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Virginia\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/New_York_(state)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/North_Carolina\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Rhode_Island\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Vermont\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Kentucky\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Tennessee\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Ohio\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Louisiana\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Indiana\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Mississippi\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Illinois\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Alabama\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Maine\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Missouri\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Arkansas\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Michigan\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Florida\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Texas\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Iowa\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Wisconsin\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/California\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Minnesota\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Oregon\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Kansas\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/West_Virginia\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Nevada\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Nebraska\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Colorado\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/North_Dakota\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/South_Dakota\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Montana\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Washington_(state)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Idaho\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Wyoming\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Utah\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Oklahoma\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/New_Mexico\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Arizona\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Alaska\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Hawaii\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Article_Seven_of_the_United_States_Constitution\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Admission_to_the_Union\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/American_Samoa\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Washington,_D.C.\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Guam\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Northern_Mariana_Islands\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Puerto_Rico\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/United_States_Virgin_Islands\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Washington,_D.C.\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Guam\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Puerto_Rico\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/American_Samoa\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/United_States_Virgin_Islands\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Northern_Mariana_Islands\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Politics_of_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Political_ideologies_in_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Barack_Obama\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Donald_Trump\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/President_of_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Mike_Pence\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Vice_President_of_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Two-party_system\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Primary_election\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Nomination\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/General_election\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/United_States_presidential_election,_1856\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Democratic_Party_(United_States)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/History_of_the_United_States_Democratic_Party\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Republican_Party_(United_States)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/History_of_the_United_States_Republican_Party\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Third_party_(United_States)\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "0\n", - "PAGE HAS NO LINKS: /wiki/Theodore_Roosevelt\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Progressive_Party_(United_States,_1912)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/United_States_presidential_election,_1912\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Electoral_College_(United_States)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Political_culture\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Center-right_politics\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Conservatism_in_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Centre-left_politics\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Modern_liberalism_in_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Politics_of_the_Northeastern_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Politics_of_the_Western_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Red_states_and_blue_states\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Political_party_strength_in_U.S._states\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Politics_of_the_Southern_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Midwestern_United_States#Political_trends\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Politics_of_the_Western_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Republican_Party_(United_States)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Donald_Trump\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/United_States_Presidential_Election,_2016\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/President_of_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Mike_Pence\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Orrin_Hatch\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Party_leaders_of_the_United_States_Senate\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Mitch_McConnell\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Chuck_Schumer\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Paul_Ryan\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Party_leaders_of_the_United_States_House_of_Representatives\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Kevin_McCarthy_(California_politician)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Nancy_Pelosi\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/115th_United_States_Congress\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/United_States_House_of_Representatives\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/United_States_Senate\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Independent_politician\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/New_Progressive_Party_of_Puerto_Rico\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Foreign_relations_of_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Foreign_policy_of_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Headquarters_of_the_United_Nations\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Midtown_Manhattan\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/United_Nations_Security_Council\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Headquarters_of_the_United_Nations\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/G7\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/G20\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Organisation_for_Economic_Co-operation_and_Development\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/List_of_diplomatic_missions_in_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Consul_(representative)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/List_of_diplomatic_missions_of_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Iran%E2%80%93United_States_relations\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/North_Korea%E2%80%93United_States_relations\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Foreign_relations_of_Bhutan\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Taiwan%E2%80%93United_States_relations\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Six_Assurances\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Special_Relationship\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/United_Kingdom%E2%80%93United_States_relations\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Canada%E2%80%93United_States_relations\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Australia%E2%80%93United_States_relations\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/New_Zealand%E2%80%93United_States_relations\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Philippines%E2%80%93United_States_relations\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Japan%E2%80%93United_States_relations\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/South_Korea%E2%80%93United_States_relations\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Israel%E2%80%93United_States_relations\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/European_Union\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/France%E2%80%93United_States_relations\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Italy%E2%80%93United_States_relations\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Germany%E2%80%93United_States_relations\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Spain%E2%80%93United_States_relations\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/NATO\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Organization_of_American_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/United_States_free_trade_agreements\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/North_American_Free_Trade_Agreement\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Mexico%E2%80%93United_States_relations\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Official_development_assistance\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Gross_national_income\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Compact_of_Free_Association\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Federated_States_of_Micronesia\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Marshall_Islands\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Palau\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Trust_Territory_of_the_Pacific_Islands\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/U.S._Agency_for_International_Development\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Taxation_in_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/United_States_federal_budget\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Taxation_in_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Gross_domestic_product\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Progressive_tax\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Regressive_tax\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Unearned_income\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Congressional_Budget_Office\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Tax_incidence\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Corporate_tax_in_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Regressive_tax\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/National_debt_of_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/United_States_Armed_Forces\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Carrier_strike_group\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/USS_Kitty_Hawk_(CV-63)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/USS_Ronald_Reagan_(CVN-76)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/USS_Abraham_Lincoln_(CVN-72)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/United_States_Marine_Corps\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/United_States_Navy\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/United_States_Air_Force\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Commander-in-chief\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/United_States_Secretary_of_Defense\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Joint_Chiefs_of_Staff\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/United_States_Department_of_Defense\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/United_States_Army\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/United_States_Marine_Corps\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/United_States_Navy\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/United_States_Air_Force\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/United_States_Coast_Guard\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/United_States_Department_of_Homeland_Security\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/United_States_Department_of_the_Navy\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Reserve_components_of_the_United_States_Armed_Forces\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/National_Guard_of_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Conscription_in_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Selective_Service_System\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Aircraft_carrier\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Marine_expeditionary_unit\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/United_States_Fleet_Forces_Command\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/United_States_Pacific_Fleet\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/United_States_military_deployments\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Military_budget_of_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Saudi_Arabia\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Military_budget_of_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Iraq_War\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/War_in_Afghanistan_(2001%E2%80%932014)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Law_enforcement_in_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Crime_in_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Law_of_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Second_Amendment_to_the_United_States_Constitution\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Human_rights_in_the_United_States#Justice_system\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Incarceration_in_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Capital_punishment_in_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Sheriff\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/State_police\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/New_York_City_Police_Department\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Federal_Bureau_of_Investigation\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/United_States_Marshals_Service\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Civil_rights\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/National_Security_of_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/U.S._federal_courts\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Common_law\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Federal_judiciary_of_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Plea_bargaining_in_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Plea_bargain\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Jury_trial\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Clearance_rate\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Gun_violence_in_the_United_States\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "0\n", - "PAGE HAS NO LINKS: /wiki/World_Health_Organization\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Second_Amendment_to_the_United_States_Constitution\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Gun_politics_in_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Uniform_Crime_Reports\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Capital_punishment\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Furman_v._Georgia\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Oklahoma\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Capital_punishment_in_the_United_States#States_without_capital_punishment\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Iran\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Pakistan\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Saudi_Arabia\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/United_States_incarceration_rate\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Incarceration_in_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/United_States_Federal_Sentencing_Guidelines\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Federal_drug_policy_of_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Federal_Bureau_of_Prisons\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Incarceration_in_the_United_States#Privatization\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/List_of_U.S._states_by_incarceration_rate#Incarceration_rate_by_state\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Territories_of_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/U.S._Virgin_Islands\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Puerto_Rico\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Economy_of_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Economic_history_of_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Gross_domestic_product\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Consumer_price_index\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Employment-to-population_ratio\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Unemployment_in_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Labor_force#Labor_force_in_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/National_debt_of_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Wealth_in_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Capitalism\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Mixed_economy\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Natural_resource\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/International_Monetary_Fund\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Gross_world_product\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Purchasing_power_parity\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/G7\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/List_of_countries_by_GDP_(nominal)_per_capita\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/List_of_countries_by_GDP_(PPP)_per_capita\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/United_States_dollar\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Reserve_currency\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/List_of_countries_by_imports\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/List_of_countries_by_exports\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/List_of_countries_by_exports_per_capita\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Foreign_trade_of_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Canada\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/China\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Mexico\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Japan\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Germany\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Federal_Reserve_System\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Manufacturing_in_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Post-industrial_society\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Tertiary_sector_of_the_economy\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Franchising\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/McDonald%27s\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Subway_(restaurant)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Coca-Cola\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Soft_drink\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Liquefied_natural_gas\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Sulfur\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Salt\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/National_Mining_Association\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Coal\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Mineral\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Beryllium\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Copper\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Lead\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Magnesium\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Zinc\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Titanium\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Agriculture_in_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/National_Agricultural_Statistics_Service\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Peanut\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Oat\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Rye\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Wheat\n", - "960\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Cotton\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Maize\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Barley\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Hay\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Helianthus\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Vegetable_oil\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/United_States_Department_of_Agriculture\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Beef\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Poultry\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Pork\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Milk\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Genetically_modified_food\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Crops\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Consumer_spending\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Labor_unions_in_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Western_Europe\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Global_Competitiveness_Report\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Welfare_state\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/List_of_statutory_minimum_employment_leave_by_country\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Paid_family_leave\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Papua_New_Guinea\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Suriname\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Liberia\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Workforce_productivity\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Luxembourg\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Norway\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Netherlands\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Great_Recession\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Congressional_Budget_Office\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Unemployment\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Consumer_confidence_index\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/United_States_housing_bubble\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Inflation\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/2000s_energy_crisis\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Tract_housing\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/San_Jose,_California\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Income_in_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Poverty_in_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Affluence_in_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/United_States_counties_by_per_capita_income\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Income_inequality_in_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Household_income\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/List_of_countries_by_average_wage\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Median_household_income\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Global_Food_Security_Index\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/European_Union\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/United_Nations_Development_Programme\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Human_Development_Index#2014_report\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Human_Development_Index#Inequality-adjusted_HDI\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Income_inequality_in_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Upper_class\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Wealth_in_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Wealth_inequality_in_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Great_Recession\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Household_debt\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Homelessness_in_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Hunger_in_the_United_States#Children\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Poverty_in_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/List_of_U.S._states_by_poverty_rate\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/New_Hampshire\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/American_Samoa\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Mississippi\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Transportation_in_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Interstate_Highway_System\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/National_Highway_System_(United_States)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Passenger_vehicles_in_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Sport_utility_vehicle\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/High-speed_rail_in_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Mass_transit_in_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Rail_transportation_in_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Amtrak\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Rail_transportation_in_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Light_rail_in_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/List_of_airlines_of_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Airline_Deregulation_Act\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/List_of_airports_in_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/American_Airlines\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/US_Airways\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/List_of_the_world%27s_busiest_airports_by_passenger_traffic\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Hartsfield%E2%80%93Jackson_Atlanta_International_Airport\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/O%27Hare_International_Airport\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Chicago\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/September_11_attacks\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Transportation_Security_Administration\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Energy_policy_of_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/North_American_Electric_Reliability_Corporation\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "0\n", - "PAGE HAS NO LINKS: /wiki/Energy_in_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Kilowatt_hour\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/List_of_countries_by_energy_consumption_per_capita\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Renewable_energy\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Nuclear_power_in_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Three_Mile_Island_accident\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Drinking_water_supply_and_sanitation_in_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Water_scarcity\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Water_pollution_in_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Climate_change\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Combined_sewer_overflow\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Education_in_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/University_of_Virginia\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Thomas_Jefferson\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/State_school\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/United_States_Department_of_Education\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Kindergarten\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/First_grade\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Twelfth_grade\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/High_school\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Parochial_school\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Nonsectarian\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Private_school\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Homeschooling\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Public_university\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Lists_of_American_institutions_of_higher_education\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Community_college\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Bachelor%27s_degree\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Literacy\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Organisation_for_Economic_Co-operation_and_Development\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Student_debt\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Culture_of_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Alaska_Natives#Cultures\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Native_American_cultures_in_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Culture_of_the_Native_Hawaiians\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Social_class_in_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Public_holidays_in_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Tourism_in_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Multiculturalism\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Native_Americans_in_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Native_Hawaiians\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Alaska_Natives\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Western_culture\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/European_American\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/African-American_culture\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Asian_American\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Latin_American_culture\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Melting_pot\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Salad_bowl_(cultural_idea)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Protestantism\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Frontier\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Work_ethic\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Creed\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/American_Dream\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Socio-economic_mobility_in_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Classless_society\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Socialization\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Average_Joe\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Cuisine_of_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Apple_pie\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Wheat\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Thanksgiving_(United_States)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Turkey_(bird)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Thanksgiving_(United_States)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Mexican_cuisine\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Italian_cuisine\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Breakfast\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/British_cuisine\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/John_L._Hess\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Fast_food\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Drive-through\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Obesity_in_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/American_literature\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/American_philosophy\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Architecture_of_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Visual_art_of_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/American_classical_music\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Mark_Twain\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Comedy\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Nathaniel_Hawthorne\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Edgar_Allan_Poe\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Henry_David_Thoreau\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Mark_Twain\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Walt_Whitman\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Emily_Dickinson\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Herman_Melville\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Moby-Dick\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Adventures_of_Huckleberry_Finn\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/F._Scott_Fitzgerald\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/The_Great_Gatsby\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Harper_Lee\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/To_Kill_a_Mockingbird\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Great_American_Novel\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Nobel_Prize_in_Literature\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Bob_Dylan\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/William_Faulkner\n", - "647\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/John_Steinbeck\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Western_fiction\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Hardboiled\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Beat_Generation\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Postmodern_literature\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/John_Barth\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Thomas_Pynchon\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Don_DeLillo\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Transcendentalism\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Ralph_Waldo_Emerson\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/American_philosophy\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Charles_Sanders_Peirce\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/William_James\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/John_Dewey\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Pragmatism\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Willard_Van_Orman_Quine\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Richard_Rorty\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Noam_Chomsky\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Analytic_philosophy\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/John_Rawls\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Robert_Nozick\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Political_philosophy\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Cornel_West\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Judith_Butler\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Chicago_school_of_economics\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Milton_Friedman\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/James_M._Buchanan\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Thomas_Sowell\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Hudson_River_School\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Realism_(arts)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Thomas_Eakins\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Armory_Show\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Modern_art\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Georgia_O%27Keeffe\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Marsden_Hartley\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Abstract_expressionism\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Jackson_Pollock\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Willem_de_Kooning\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Pop_art\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Andy_Warhol\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Roy_Lichtenstein\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Postmodernism\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Frank_Lloyd_Wright\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Philip_Johnson\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Frank_Gehry\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Photography\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Alfred_Stieglitz\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Edward_Steichen\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Ansel_Adams\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Times_Square\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/New_York_City\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Broadway_theatre\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Theater_District,_Manhattan\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Theater_of_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/P._T._Barnum\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Manhattan\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Edward_Harrigan\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Musical_theatre\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Broadway_theatre\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Irving_Berlin\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Cole_Porter\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Stephen_Sondheim\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Traditional_pop_music\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Eugene_O%27Neill\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Pulitzer_Prize_for_Drama\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Tennessee_Williams\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Edward_Albee\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/August_Wilson\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Charles_Ives\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Henry_Cowell\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/John_Cage\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Aaron_Copland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/George_Gershwin\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Choreography\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Isadora_Duncan\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Martha_Graham\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Modern_dance\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/George_Balanchine\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Jerome_Robbins\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Music_of_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Grammy_Award\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/African-American_music\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Music_of_the_United_States\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "0\n", - "PAGE HAS NO LINKS: /wiki/Folk_music\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Blues\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Old-time_music\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Popular_music\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Jazz\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Louis_Armstrong\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Duke_Ellington\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Country_music\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Rhythm_and_blues\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Elvis_Presley\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Chuck_Berry\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Rock_and_roll\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Bob_Dylan\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/American_folk_music_revival\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/James_Brown\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Funk\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Hip_hop_music\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/House_music\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Michael_Jackson\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Madonna_(entertainer)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Taylor_Swift\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Britney_Spears\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Katy_Perry\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Beyonc%C3%A9\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Jay-Z\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Eminem\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Kanye_West\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Metallica\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Eagles_(band)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Aerosmith\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/List_of_best-selling_music_artists\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Cinema_of_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Hollywood_Sign\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Los_Angeles\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Hollywood\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Los_Angeles\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Thomas_Edison\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Kinetoscope\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Sound_film\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/D._W._Griffith\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Filmmaker\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Film_grammar\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Walt_Disney\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Animation\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Merchandising\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/John_Ford\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/John_Huston\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Classical_Hollywood_cinema\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/John_Wayne\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Marilyn_Monroe\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Martin_Scorsese\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Francis_Ford_Coppola\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Robert_Altman\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/New_Hollywood\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Aftermath_of_World_War_II\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Steven_Spielberg\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/George_Lucas\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/James_Cameron\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Avatar_(2009_film)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/American_Film_Institute\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/AFI_100\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Orson_Welles\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Citizen_Kane\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Casablanca_(film)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/The_Godfather\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Gone_with_the_Wind_(1939_film)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Lawrence_of_Arabia_(film)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/The_Wizard_of_Oz_(1939_film)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/The_Graduate\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/On_the_Waterfront\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Schindler%27s_List\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Singin%27_in_the_Rain\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/It%27s_a_Wonderful_Life\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Sunset_Boulevard_(film)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Academy_Awards\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Academy_of_Motion_Picture_Arts_and_Sciences\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Golden_Globe_Awards\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Sports_in_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/American_football\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Baseball\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Basketball\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Ice_hockey\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/American_football\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/National_Football_League\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Super_Bowl\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Baseball\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/National_sport\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Major_League_Baseball\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Basketball\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Ice_hockey\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Major_professional_sports_leagues_in_the_United_States_and_Canada\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/National_Basketball_Association\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/National_Hockey_League\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/College_football\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/College_basketball\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Association_football\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/1994_FIFA_World_Cup\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/United_States_men%27s_national_soccer_team\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/United_States_women%27s_national_soccer_team\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/FIFA_Women%27s_World_Cup\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Major_League_Soccer\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Olympic_Games\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/2028_Summer_Olympics\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Summer_Olympic_Games\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Winter_Olympic_Games\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Basketball\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Volleyball\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Skateboarding\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Snowboarding\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Lacrosse\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Surfing\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Individual_sport\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Golf\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Auto_racing\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/NASCAR\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Rugby_union\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Media_of_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/American_Broadcasting_Company\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/NBC\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/CBS\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/American_Broadcasting_Company\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Fox_Broadcasting_Company\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Television_network\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Cable_television_in_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/NPR\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/PBS\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/U.S._Federal_Communications_Commission\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/The_Wall_Street_Journal\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/The_New_York_Times\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/USA_Today\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Gannett_Company\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/The_McClatchy_Company\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/The_Village_Voice\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/LA_Weekly\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Comic_strip\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/American_comic_book\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Superman\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Superhero\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/DC_Comics\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Web_portal\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Web_search_engine\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Facebook\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/YouTube\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Wikipedia\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Yahoo!\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/EBay\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Amazon.com\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Twitter\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Science_and_technology_in_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Science_policy_of_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/James_Irwin\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Moon\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Apollo_15\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Apollo_Lunar_Module\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Lunar_rover\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Space_Race\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Interchangeable_parts\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Machine_tool\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/American_system_of_manufacturing\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Electrification\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Assembly_line\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Mass_production\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Alexander_Graham_Bell\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Invention_of_the_telephone\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Thomas_Edison\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Research_institute\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Phonograph\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Incandescent_light_bulb\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Kinetoscope\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Show_business\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Ransom_E._Olds\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Henry_Ford\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Assembly_line\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Wright_brothers\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Wright_Flyer\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Fascism\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Nazism\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Albert_Einstein\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Enrico_Fermi\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/John_von_Neumann\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Manhattan_Project\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Atomic_Age\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Space_Race\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Materials_science\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Aeronautics\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Transistor\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Electronics\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Silicon_Valley\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Microprocessor\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Advanced_Micro_Devices\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "0\n", - "PAGE HAS NO LINKS: /wiki/Intel\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Software\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Computer_hardware\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Adobe_Systems\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Apple_Inc.\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/IBM\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Microsoft\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Sun_Microsystems\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Personal_computer\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/ARPANET\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/United_States_Department_of_Defense\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/History_of_the_Internet\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Internet\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Personalization\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Computer\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Impact_factor\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Health_care_in_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Health_care_reform_in_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Health_insurance_in_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/New_York-Presbyterian_Hospital\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/New_York_City\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Hospital\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Weill_Cornell_Graduate_School_of_Medical_Sciences\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Hawaii\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/American_Samoa\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Obesity_in_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Diabetes_mellitus_type_2\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Coronary_artery_disease\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Lung_cancer\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Stroke\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Chronic_obstructive_pulmonary_disease\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Major_depressive_disorder\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Musculoskeletal_disorder\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Anxiety\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Risk_factor\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Hypertension\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Hyperglycemia\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Physical_inactivity\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Alzheimer%27s_disease\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Kidney_disease\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/List_of_Nobel_laureates_in_Physiology_or_Medicine\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/List_of_countries_by_total_health_expenditure_(PPP)_per_capita\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Universal_health_care\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Health_insurance\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Massachusetts\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Patient_Protection_and_Affordable_Care_Act\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Index_of_United_States-related_articles\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Lists_of_U.S._state_topics\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Outline_of_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Title_36_of_the_United_States_Code\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Official_language_of_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Hawaiian_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Hawaii\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Alaska_Native_languages\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Alaska\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Algonquian_languages\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Cherokee_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Sioux_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/French_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Maine\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Louisiana\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/New_Mexico\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Spanish_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Spanish_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Samoan_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Chamorro_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Carolinian_language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Time_in_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/United_States_Virgin_Islands\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/American_Samoa\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Guam\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Northern_Mariana_Islands\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Puerto_Rico\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/United_States_Virgin_Islands\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Baker_Island\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Howland_Island\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Jarvis_Island\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Johnston_Atoll\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Kingman_Reef\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Midway_Atoll\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Palmyra_Atoll\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Bajo_Nuevo_Bank\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Navassa_Island\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Serranilla_Bank\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Wake_Island\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Spanish_expeditions_to_the_Pacific_Northwest\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Sir_Joseph_Banks\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Makahiki\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Hawaiian_religion\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Lono\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/HMS_Resolution_(1771)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/HMS_Discovery_(1774)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/K%C5%AB\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Hawaiian_religion\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Ali%CA%BBi\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Kalani%CA%BB%C5%8Dpu%CA%BBu\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/K%C4%81nekap%C5%8Dlei\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Native_Hawaiians\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Kana%CA%BBina\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/U.s._ancestry\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/German_American\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Irish_American\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Mexican_American\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/English_American\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/White_American\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Race_(human_classification)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/African_American\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Minority_group\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Hispanic_and_Latino_Americans\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Asian_American\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Chinese_American\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Filipino_American\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Indian_American\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Fertility\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Replacement_rates\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Minority_group\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/American_Community_Survey\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/U.S._Census_Bureau\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Credit_rating\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Standard_%26_Poor%27s\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Fitch_Ratings\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Moody%27s_Investors_Service\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Stockholm_International_Peace_Research_Institute\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Arms_industry\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Lead\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Perchlorates\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Drinking_water_quality_in_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/United_States_Census_Bureau\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/International_Monetary_Fund\n", - "494\n", - "494\n", - "494\n", - "494\n", - "494\n", - "494\n", - "494\n", - "494\n", - "494\n", - "494\n", - "494\n", - "494\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Digital_object_identifier\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/JSTOR\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Bibcode\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Digital_object_identifier\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/PubMed_Identifier\n", - "494\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Michael_R._Waters\n", - "494\n", - "494\n", - "494\n", - "494\n", - "494\n", - "494\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Vanessa_Collingridge\n", - "494\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/JSTOR\n", - "494\n", - "494\n", - "494\n", - "494\n", - "494\n", - "494\n", - "494\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Wayback_Machine\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Cambridge_University_Press\n", - "494\n", - "494\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/W._W._Norton\n", - "494\n", - "494\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Routledge\n", - "494\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Rowman_Altamira\n", - "494\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Courier_Corporation\n", - "494\n", - "494\n", - "494\n", - "494\n", - "494\n", - "494\n", - "494\n", - "494\n", - "494\n", - "494\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Martin_Ridge_(historian)\n", - "494\n", - "494\n", - "494\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/University_of_North_Carolina_Press\n", - "494\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/McFarland_%26_Company\n", - "494\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Rowman_%26_Littlefield\n", - "494\n", - "494\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Jeremy_Black_(historian)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Indiana_University_Press\n", - "494\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/University_of_Nebraska_Press\n", - "494\n", - "494\n", - "494\n", - "494\n", - "494\n", - "494\n", - "494\n", - "494\n", - "494\n", - "494\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/CliffsNotes\n", - "494\n", - "494\n", - "494\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Alfred_A._Knopf\n", - "494\n", - "494\n", - "494\n", - "494\n", - "494\n", - "494\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Michael_Collins_(astronaut)\n", - "494\n", - "494\n", - "494\n", - "494\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Henry_Kissinger\n", - "494\n", - "494\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Charles_Krauthammer\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Encyclop%C3%A6dia_Britannica\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Encyclop%C3%A6dia_Britannica,_Inc.\n", - "494\n", - "494\n", - "494\n", - "494\n", - "494\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/George_W._Bush\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Peter_Feaver\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Foreign_Policy\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/NBC_News\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Peter_J._Wallison\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Encounter_Books\n", - "494\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Financial_Crisis_Inquiry_Commission\n", - "494\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/John_B._Taylor\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/National_Bureau_of_Economic_Research\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/The_Wall_Street_Journal\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Dow_Jones_%26_Company\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/The_New_York_Times\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "0\n", - "PAGE HAS NO LINKS: /wiki/The_New_York_Times_Company\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Initiative_on_Global_Markets\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/University_of_Chicago\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Digital_object_identifier\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Congressional_Budget_Office\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/CNN\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Political_Science_Quarterly\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Digital_object_identifier\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/United_States_Military_Academy\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Peter_Baker_(author)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/The_New_York_Times\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/The_New_York_Times_Company\n", - "494\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Digital_object_identifier\n", - "494\n", - "494\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/United_States_Census_Bureau\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Office_of_Immigration_Statistics\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Pew_Research_Center\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/The_Plain_Dealer\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/The_Plain_Dealer\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/United_States_Census_Bureau\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Digital_object_identifier\n", - "494\n", - "494\n", - "494\n", - "494\n", - "494\n", - "494\n", - "494\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Modern_Language_Association\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Pew_Research_Center\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Pew_Research_Center\n", - "494\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/National_Public_Radio\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/All_Things_Considered\n", - "494\n", - "494\n", - "494\n", - "494\n", - "494\n", - "494\n", - "494\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Serranilla_Bank\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Bajo_Nuevo_Bank\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Title_8_of_the_United_States_Code\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Title_8_of_the_United_States_Code\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Title_8_of_the_United_States_Code\n", - "494\n", - "494\n", - "494\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Clerk_of_the_United_States_House_of_Representatives\n", - "494\n", - "494\n", - "494\n", - "494\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/The_New_York_Times\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Digital_object_identifier\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/The_Heritage_Foundation\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Stockholm_International_Peace_Research_Institute\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Frontline_(magazine)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/The_Hindu_Group\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/International_Standard_Serial_Number\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/FiveThirtyEight\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/NPR\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/The_American_Journal_of_Medicine\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Digital_object_identifier\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Reuters\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Death_Penalty_Information_Center\n", - "494\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/United_States_National_Research_Council\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/National_Academies_Press\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Human_Rights_Watch\n", - "494\n", - "494\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/The_Washington_Post\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/International_Centre_for_Prison_Studies\n", - "494\n", - "494\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Bernard_Harcourt\n", - "494\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Digital_object_identifier\n", - "494\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/The_Times-Picayune\n", - "494\n", - "494\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Center_for_Economic_and_Policy_Research\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/The_New_York_Times\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Digital_object_identifier\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Organisation_for_Economic_Co-operation_and_Development\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/OECD_Better_Life_Index\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Economic_Policy_Institute\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Tony_Atkinson\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Thomas_Piketty\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Emmanuel_Saez\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Digital_object_identifier\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Organisation_for_Economic_Co-operation_and_Development\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Emmanuel_Saez\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/University_of_California,_Berkeley\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Perspectives_on_Politics\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Digital_object_identifier\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Larry_Bartels\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Digital_object_identifier\n", - "494\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Political_Research_Quarterly\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Digital_object_identifier\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Social_Science_Research_Network\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Digital_object_identifier\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Thomas_Piketty\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Capital_in_the_Twenty-First_Century\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Harvard_University_Press\n", - "494\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/CNNMoney\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Federal_Reserve_Bank_of_New_York\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/United_States_Census_Bureau\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Philip_Alston\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Office_of_the_United_Nations_High_Commissioner_for_Human_Rights\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/The_Economist\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Cato_Institute\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/International_Energy_Agency\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/United_States_Environmental_Protection_Agency\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Mother_Nature_Network\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/NPR\n", - "494\n", - "494\n", - "494\n", - "494\n", - "494\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Samuel_P._Huntington\n", - "494\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/American%27s_Creed\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/William_Tyler_Page\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Economic_Policy_Institute\n", - "494\n", - "494\n", - "494\n", - "494\n", - "494\n", - "494\n", - "494\n", - "494\n", - "494\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Arteriosclerosis,_Thrombosis,_and_Vascular_Biology\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Harold_Bloom\n", - "494\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Digital_object_identifier\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/International_Standard_Serial_Number\n", - "494\n", - "494\n", - "494\n", - "494\n", - "494\n", - "494\n", - "494\n", - "494\n", - "494\n", - "494\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/International_Standard_Serial_Number\n", - "494\n", - "494\n", - "494\n", - "494\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Wayback_Machine\n", - "494\n", - "494\n", - "494\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/USA_Today\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Los_Angeles_Times\n", - "494\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Les_Daniels\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Titan_Books\n", - "494\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/David_A._Hounshell\n", - "494\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Library_of_Congress_Control_Number\n", - "494\n", - "494\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/The_New_York_Times\n", - "494\n", - "494\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Digital_object_identifier\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Digital_object_identifier\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/PubMed_Central\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/PubMed_Identifier\n", - "494\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Arteriosclerosis,_Thrombosis,_and_Vascular_Biology\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Digital_object_identifier\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/International_Standard_Serial_Number\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/PubMed_Identifier\n", - "494\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Edward_E._Baptist\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Basic_Books\n", - "494\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Digital_object_identifier\n", - "494\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Digital_object_identifier\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/PubMed_Identifier\n", - "494\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Johns_Hopkins_University_Press\n", - "494\n", - "494\n", - "494\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Texas_A%26M_University_Press\n", - "494\n", - "494\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/John_Wiley_%26_Sons\n", - "494\n", - "494\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/The_Atlantic\n", - "494\n", - "494\n", - "494\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/John_Steele_Gordon\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/HarperCollins\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Greenwood_Publishing_Group\n", - "494\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Routledge\n", - "494\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Westminster,_Maryland\n", - "494\n", - "494\n", - "494\n", - "494\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Infobase_Publishing\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Infobase_Publishing\n", - "494\n", - "494\n", - "494\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Robert_Leckie_(author)\n", - "494\n", - "494\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Melvyn_P._Leffler\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Odd_Arne_Westad\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Cambridge_University_Press\n", - "494\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Rowman_%26_Littlefield\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Columbia_University\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/University_of_Massachusetts_Press\n", - "494\n", - "494\n", - "494\n", - "494\n", - "494\n", - "494\n", - "494\n", - "494\n", - "494\n", - "494\n", - "494\n", - "494\n", - "494\n", - "494\n", - "494\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/University_of_Illinois_Press\n", - "494\n", - "494\n", - "494\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/David_Stannard\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Oxford_University_Press\n", - "494\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/JSTOR\n", - "494\n", - "494\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Digital_object_identifier\n", - "494\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Howard_Zinn\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/A_People%27s_History_of_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Harper_Perennial\n", - "494\n", - "494\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Journal_of_Cold_War_Studies\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/President_and_Fellows_of_Harvard_College\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Massachusetts_Institute_of_Technology\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Digital_object_identifier\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/The_World_Factbook\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Central_Intelligence_Agency\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "0\n", - "PAGE HAS NO LINKS: /wiki/BBC_News\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/International_Futures\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/History_of_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Timeline_of_United_States_history\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Pre-Columbian_era\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Colonial_history_of_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Thirteen_Colonies\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Colonial_American_military_history\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Continental_Congress\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/American_Revolution\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/American_Revolutionary_War\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/American_frontier\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/America%27s_Critical_Period\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Timeline_of_drafting_and_ratification_of_the_United_States_Constitution\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Federalist_Era\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/War_of_1812\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/United_States_territorial_acquisitions\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Territorial_evolution_of_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Mexican%E2%80%93American_War\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/American_Civil_War\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Reconstruction_Era\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/American_Indian_Wars\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Gilded_Age\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Progressive_Era\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/African-American_civil_rights_movement_(1865%E2%80%931896)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/African-American_civil_rights_movement_(1896%E2%80%931954)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/African-American_civil_rights_movement_(1954%E2%80%931968)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Spanish%E2%80%93American_War\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/American_imperialism\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/History_of_the_United_States_(1865%E2%80%931918)#World_War_I\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Roaring_Twenties\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Great_Depression\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Military_history_of_the_United_States_during_World_War_II\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/United_States_home_front_during_World_War_II\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/German_American_Bund\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/American_Century\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Cold_War\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Korean_War\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Space_Race\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Second-wave_feminism\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Vietnam_War\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/History_of_the_United_States_(1991%E2%80%932008)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/War_on_Terror\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/War_in_Afghanistan_(2001%E2%80%93present)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Iraq_War\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/History_of_the_United_States_(2008%E2%80%93present)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Outline_of_the_United_States#History_of_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Demographic_history_of_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Timeline_of_United_States_discoveries\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Economic_history_of_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/History_of_United_States_debt_ceiling\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Timeline_of_United_States_inventions\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Timeline_of_United_States_inventions_(before_1890)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Timeline_of_United_States_inventions_(1890%E2%80%931945)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Timeline_of_United_States_inventions_(1946%E2%80%9391)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Timeline_of_United_States_inventions_(after_1991)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Military_history_of_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Postage_stamps_and_postal_history_of_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Technological_and_industrial_history_of_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Geography_of_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/United_States_territory\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/County_(United_States)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Washington,_D.C.\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Federal_enclave\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Indian_reservation\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Territories_of_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/United_States_Minor_Outlying_Islands\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Lists_of_populated_places_in_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/U.S._state\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/List_of_earthquakes_in_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/List_of_extreme_points_of_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/List_of_islands_of_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/List_of_mountains_of_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/List_of_mountain_peaks_of_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/List_of_mountain_ranges#United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Appalachian_Mountains\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Rocky_Mountains\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/National_Park_Service\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/List_of_areas_in_the_United_States_National_Park_System\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/List_of_regions_of_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/East_Coast_of_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/West_Coast_of_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Great_Plains\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Gulf_Coast_of_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Mid-Atlantic_(United_States)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Midwestern_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/New_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Pacific_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Central_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Eastern_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Northern_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Northeastern_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Northwestern_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Southern_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Southeastern_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Southwestern_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Western_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/List_of_rivers_of_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Colorado_River\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Columbia_River\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Mississippi_River\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Missouri_River\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Ohio_River\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Rio_Grande\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Yukon_River\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Time_in_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Drinking_water_supply_and_sanitation_in_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Politics_of_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Federal_government_of_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Cabinet_of_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/United_States_federal_civil_service\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/United_States_federal_executive_departments\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Executive_Office_of_the_President_of_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Independent_agencies_of_the_United_States_government\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Federal_law_enforcement_in_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/President_of_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Public_policy_of_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/United_States_Congress\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/United_States_House_of_Representatives\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Current_members_of_the_United_States_House_of_Representatives\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Speaker_of_the_United_States_House_of_Representatives\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/United_States_Senate\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Current_members_of_the_United_States_Senate\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/President_pro_tempore_of_the_United_States_Senate\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Vice_President_of_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Federal_judiciary_of_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/United_States_courts_of_appeals\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/United_States_district_court\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Supreme_Court_of_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Law_of_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/United_States_Bill_of_Rights\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Civil_liberties_in_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Code_of_Federal_Regulations\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/United_States_Constitution\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Federalism_in_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Federal_preemption\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Separation_of_powers_under_the_United_States_Constitution\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Federal_Reporter\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/United_States_Code\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/United_States_Reports\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/United_States_Intelligence_Community\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "0\n", - "PAGE HAS NO LINKS: /wiki/Central_Intelligence_Agency\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Defense_Intelligence_Agency\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Federal_Bureau_of_Investigation\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/National_Geospatial-Intelligence_Agency\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/National_Reconnaissance_Office\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/National_Security_Agency\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Director_of_National_Intelligence\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Uniformed_services_of_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/United_States_Armed_Forces\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/United_States_Army\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/United_States_Marine_Corps\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/United_States_Navy\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/United_States_Air_Force\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/United_States_Coast_Guard\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/National_Guard_of_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/NOAA_Commissioned_Officer_Corps\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/United_States_Public_Health_Service_Commissioned_Corps\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/51st_state\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Political_status_of_Puerto_Rico\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/District_of_Columbia_statehood_movement\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Elections_in_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Electoral_College_(United_States)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Foreign_relations_of_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Foreign_policy_of_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Hawaiian_sovereignty_movement\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Political_ideologies_in_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Anti-Americanism\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/American_exceptionalism\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/American_nationalism\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Local_government_in_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Political_parties_in_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Democratic_Party_(United_States)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Republican_Party_(United_States)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Third_party_(United_States)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Red_states_and_blue_states\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Purple_America\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/List_of_federal_political_scandals_in_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/State_governments_of_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Governor_(United_States)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/State_legislature_(United_States)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/State_court_(United_States)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Uncle_Sam\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Economy_of_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Economy_of_the_United_States_by_sector\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Agriculture_in_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Banking_in_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Communications_in_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Energy_in_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Insurance_in_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Manufacturing_in_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Mining_in_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Tourism_in_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Foreign_trade_of_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Transportation_in_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/List_of_companies_of_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/List_of_companies_of_the_United_States_by_state\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/United_States_dollar\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/List_of_exports_of_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/United_States_federal_budget\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Federal_Reserve_System\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Financial_position_of_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Labor_unions_in_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/National_debt_of_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Social_programs_in_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Taxation_in_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Unemployment_in_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Wall_Street\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Society_of_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Culture_of_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Americana\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Architecture_of_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Cinema_of_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Cuisine_of_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Dance_in_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Demography_of_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Education_in_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Family_structure_in_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Fashion_in_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Flag_of_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Folklore_of_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Languages_of_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/American_English\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Indigenous_languages_of_the_Americas\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/American_Sign_Language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Black_American_Sign_Language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Hawai%27i_Sign_Language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Plains_Indian_Sign_Language\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Arabic_language_in_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Chinese_language_and_varieties_in_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/French_language_in_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/German_language_in_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Italian_language_in_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Russian_language_in_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Spanish_language_in_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/American_literature\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Media_of_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/History_of_American_journalism\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Internet_in_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/History_of_American_newspapers\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Radio_in_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Television_in_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Music_of_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Naming_in_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Americans\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/American_philosophy\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Public_holidays_in_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Religion_in_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Sexuality_in_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Sports_in_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Theater_in_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Visual_art_of_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Social_class_in_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Affluence_in_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/American_Dream\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Educational_attainment_in_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Homelessness_in_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Home-ownership_in_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Household_income_in_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Income_inequality_in_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/American_middle_class\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Personal_income_in_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Poverty_in_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Professional_and_working_class_conflict_in_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Standard_of_living_in_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Wealth_in_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Social_issues_in_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Ages_of_consent_in_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Capital_punishment_in_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Crime_in_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Incarceration_in_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Criticism_of_the_United_States_government\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Discrimination_in_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Affirmative_action_in_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Antisemitism_in_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Intersex_rights_in_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Islamophobia_in_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/LGBT_rights_in_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Racism_in_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Same-sex_marriage_in_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Federal_drug_policy_of_the_United_States\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "0\n", - "PAGE HAS NO LINKS: /wiki/Energy_policy_of_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Environmental_movement_in_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Gun_politics_in_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Health_care_in_the_United_States\n", - "671\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Health_insurance_in_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Hunger_in_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Obesity_in_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Tobacco_in_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Human_rights_in_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Immigration_to_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Illegal_immigration_to_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/International_rankings_of_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/National_security_of_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Mass_surveillance_in_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Terrorism_in_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Separation_of_church_and_state_in_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Outline_of_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Index_of_United_States-related_articles\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Virtual_International_Authority_File\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Library_of_Congress_Control_Number\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/International_Standard_Name_Identifier\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Integrated_Authority_File\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/LIBRIS\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Syst%C3%A8me_universitaire_de_documentation\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Biblioth%C3%A8que_nationale_de_France\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Historical_Dictionary_of_Switzerland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/National_Library_of_Australia\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/National_Diet_Library\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Biblioteca_Nacional_de_Espa%C3%B1a\n", - "1834\n", - "1834\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Main_Page\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Main_Page\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/English_overseas_possessions\n", - "469\n", - "1830\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/British_Empire\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Angevin_Empire\n", - "548\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Acts_of_Union_1707\n", - "548\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Kingdom_of_Scotland\n", - "469\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/British_Empire\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Naval_warfare\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Dutch_Republic\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Kingdom_of_Portugal\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Kingdom_of_Spain\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Ireland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/North_America\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Bermuda\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/West_Indies\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Trading_post\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Factory_(trading_post)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/East_Indies\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Bantam_(city)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Indian_subcontinent\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Surat\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Fort_St._George_(India)\n", - "487\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Catherine_of_Braganza\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Dowry\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Portuguese_Empire\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/English_Tangier\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/North_Africa\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Mumbai\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Newfoundland_Colony\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Virginia_Colony\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Province_of_Maine\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Plymouth_Colony\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Province_of_New_Hampshire\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Salem,_Massachusetts\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Massachusetts_Bay_Colony\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Nova_Scotia\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Connecticut_Colony\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/New_Haven_Colony\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Province_of_Maryland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Rhode_Island_Colony\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/New_Netherland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/New_Sweden\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Province_of_New_York\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Province_of_New_Jersey\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Delaware\n", - "1\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/John_Cabot\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Matthew_(ship)\n", - "548\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/%C3%86thelstan\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/House_of_Kn%C3%BDtlinga\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Personal_union\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Scandinavia\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/William_the_Conqueror\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Duke_of_Normandy\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Norman_conquest_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Crown_land\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Middle_Ages\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/France\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Angevin_Empire\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/British_Isles\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Plantagenet\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Hundred_Years%27_War\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Kingdom_of_France\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Pale_of_Calais\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Channel_Islands\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Duchy_of_Normandy\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/The_Crown\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/British_Isles\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Norman_invasion_of_Ireland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Ireland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Lordship_of_Ireland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Plantation_of_Ulster\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/United_Kingdom_of_Great_Britain_and_Ireland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Voyages_of_Christopher_Columbus\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Christopher_Columbus\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/West_Indies\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Portuguese_Empire\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Spanish_Empire\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Henry_VII_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/John_Cabot\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Atlantic_Ocean\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Maluku_Islands\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Asia\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/North_West_Passage\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Newfoundland_(island)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Colony\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/English_Reformation\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Privateer\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/John_Hawkins_(naval_commander)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Francis_Drake\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/West_Africa\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Anglo-Spanish_War_(1585)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/New_World\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Richard_Hakluyt\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/John_Dee\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Portugal\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Brazil\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/China\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/French_colonization_of_the_Americas\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Saint_Lawrence_River\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/New_France\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Elizabethan_era\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Elizabeth_I_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/North_America\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Plantation_of_Ulster\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/West_Indies\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Elizabeth_I_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Muscovy_Company\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Martin_Frobisher\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Blackwall,_London\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/North_West_Passage\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Frobisher_Bay\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Baffin_Island\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Church_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Greenland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Francis_Drake\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Circumnavigation\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Elizabeth_Island_(Cape_Horn)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Cape_Horn\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Straits_of_Magellan\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/California\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/New_Albion\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Humphrey_Gilbert\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Newfoundland_(island)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/St._John%27s,_Newfoundland_and_Labrador\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/League_(unit)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Walter_Raleigh\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Charter\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/North_America\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Virginia_Colony\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Privateer\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Spain\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Orinoco_River\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/South_America\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/El_Dorado\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Roanoke_Colony\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Charter\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/East_India_Company\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/East_Indies\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Bantam_(city)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Java\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Surat\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/India\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Bangladesh\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/West_Indies\n", - "54\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Proprietary_Governor\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Charter\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Joint_stock_company\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/London_Company\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "0\n", - "PAGE HAS NO LINKS: /wiki/Jamestown,_Virginia\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Bermuda\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Corporate_spin-off\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Somers_Isles_Company\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/London_and_Bristol_Company\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Cuper%27s_Cove\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/St._John%27s,_Newfoundland_and_Labrador\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Charter_colony\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Bermuda\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/British_Overseas_Territory\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Sea_Venture\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/St._George%27s,_Bermuda\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/New_World\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Privateer#Bermudians\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/West_Indies\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Chesapeake_Bay\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/New_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Barbados\n", - "487\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Royal_African_Company\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Atlantic_slave_trade\n", - "460\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Portugal\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Catherine_of_Braganza\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/English_Tangier\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Bombay\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/India\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Fort_Amsterdam\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Dutch_colonization_of_the_Americas\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/New_Netherland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/New_Amsterdam\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Second_Anglo%E2%80%93Dutch_War\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Province_of_New_York\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/New_Sweden\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Delaware\n", - "1\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Treaty_of_Westminster_(1674)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Exchequer\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Privy_Council_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Ad_hoc\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Board_of_Trade\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Tobacco\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Sugar\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/John_Smith_(explorer)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/St._John%27s,_Newfoundland_and_Labrador\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Humphrey_Gilbert\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Roanoke_Colony\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/North_Carolina\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Virginia_Dare\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Cuttyhunk\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Elizabeth_Islands\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Massachusetts\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Bartholomew_Gosnold\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Virginia_Company\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Crown_colony\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Colony_of_Virginia\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Jamestown,_Virginia\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/London_Company\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Bermuda\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/North_Atlantic\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Virginia_Company_of_London\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Flagship\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Sea_Venture\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/St._George%27s,_Bermuda\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Somers_Isles_Company\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/House_of_Assembly_of_Bermuda\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Henricus\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Indian_massacre_of_1622\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Popham_Colony\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Plymouth_Company\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Kennebec_River\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Maine\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/38th_parallel_north\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Chesapeake_Bay\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/45th_parallel_north\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/St._John%27s,_Newfoundland_and_Labrador\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Humphrey_Gilbert\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Society_of_Merchant_Venturers\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Bristol\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Newfoundland_and_Labrador\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Cuper%27s_Cove\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Subdivision_1I,_Newfoundland_and_Labrador#Bristol's_Hope\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/London_and_Bristol_Company\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Newfoundland_and_Labrador\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Cambriol\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/William_Vaughan_(writer)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Newfoundland_Company\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Avalon_Peninsula\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Calvert,_Newfoundland_and_Labrador\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Placentia_Bay\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Renews,_Newfoundland_and_Labrador\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Plymouth_Council_for_New_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Plymouth_Colony\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Massachusetts_Bay_Colony\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Ferryland,_Newfoundland_and_Labrador\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/George_Calvert,_1st_Baron_Baltimore\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Province_of_Maine\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Massachusetts_Bay_Colony\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/South_Falkland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Newfoundland_and_Labrador\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Henry_Cary,_1st_Viscount_Falkland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Province_of_New_Hampshire\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/New_Hampshire\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/New_Hampshire_Grants\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Gloucester,_Massachusetts\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Dorchester_Company\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Salem,_Massachusetts\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Massachusetts_Bay_Colony\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Nova_Scotia\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Nova_Scotia\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Connecticut_Colony\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Connecticut\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Province_of_Maryland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Maryland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Province_of_New_Albion\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Saybrook_Colony\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Rhode_Island_Colony\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/New_Haven_Colony\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Gardiners_Island\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/East_Hampton_(town),_New_York\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/New_England_Confederation\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Massachusetts_Bay_Colony\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Plymouth_Colony\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Connecticut_Colony\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/New_Haven_Colony\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Puritan\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Native_Americans_in_the_United_States\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Indentured_servant\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Province_of_New_York\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Province_of_New_Jersey\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/West_Jersey\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/East_Jersey\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Rupert%27s_Land\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Prince_Rupert_of_the_Rhine\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Nonsuch_(1650_ship)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Hudson_Bay\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Waskaganish,_Quebec\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Rupert_River\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Hudson%27s_Bay_Company\n", - "31\n", - "1\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Delaware_Colony\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Delaware\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Province_of_Carolina\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Albemarle_Settlements\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Province_of_North_Carolina\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/North_Carolina\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Province_of_South_Carolina\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/South_Carolina\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/British_colony\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Province_of_Georgia\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Georgia_(U.S._state)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Barbados\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Jamestown,_Virginia\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Saint_Kitts\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Kalinago\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Nevis\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Providence_Island_colony\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Providence_Island_Company\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Spanish_capture_of_Providencia\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Montserrat\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Antigua\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Saint_Kitts\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/The_Bahamas\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Eleutheran_Adventurers\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Bermuda\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Eleuthera\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Anguilla\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Treaty_of_Breda_(1667)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Jamaica\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Barbuda\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Cayman_Islands\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Francis_Drake\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Spanish_Inquisition\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Oliver_Cromwell\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Treaty_of_Madrid_(1670)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Elizabeth_Island_(Cape_Horn)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Cape_Horn\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Straits_of_Magellan\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/British_Guiana\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Gold\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Mosquito_Coast\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Providence_Island_Company\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Fort_St._George,_India\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Chennai\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "0\n", - "PAGE HAS NO LINKS: /wiki/Bantam_(city)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/East_Indies\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/City_of_London\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/East_India_Company\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Factory_(trading_post)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Java\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Surat\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Bombay\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Machilipatnam\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Coromandel_Coast\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Run_(island)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Nathaniel_Courthope\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Dutch_East_India_Company\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/James_I_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Treaty_of_Westminster_(1654)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Second_Anglo-Dutch_War\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Manhattan\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Fort_St._George_(India)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Chennai\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/George_Town,_Chennai\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Mumbai\n", - "487\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Catherine_of_Braganza\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/John_IV_of_Portugal\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Mahim\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Sion,_Mumbai\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Dharavi\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Wadala_Road\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/East_India_Company\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Surat\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Bombay_Presidency\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/British_Bencoolen\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Black_pepper\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Garrison\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Sumatra\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Kolkata\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Hooghly_River\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Bengal\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Kunta_Kinteh_Island\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Fort_Gambia\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Gambia_River\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Ant%C3%B3nio,_Prior_of_Crato\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/List_of_Portuguese_monarchs\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Letters_patent\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/James_I_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/The_Gambia\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Gold_Coast_(British_colony)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Fort_Gambia\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Kunta_Kinteh_Island\n", - "460\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Gold\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Ivory\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Slave\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Royal_African_Company\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/English_Tangier\n", - "487\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Catherine_of_Braganza\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Saint_Helena\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/South_Atlantic\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/East_India_Company\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Oliver_Cromwell\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Ascension_Island\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Tristan_da_Cunha\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Capture_of_Gibraltar\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/George_Rooke\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Royal_Navy\n", - "469\n", - "469\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Company_of_Scotland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Evolution_of_the_British_Empire\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Bermuda\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Turks_and_Caicos\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Cayman_Islands\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Montserrat\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Anguilla\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Saint_Helena\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Saint_Helena,_Ascension_and_Tristan_da_Cunha\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Gibraltar\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/First_European_colonization_wave\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Historiography_of_the_British_Empire\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Plantations_of_Ireland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Scottish_colonization_of_the_Americas\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Thirteen_Colonies\n", - "494\n", - "494\n", - "494\n", - "494\n", - "494\n", - "494\n", - "494\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Francis_Fletcher_(clergyman)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Hakluyt_Society\n", - "494\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/University_of_Toronto\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Wayback_Machine\n", - "494\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Encyclop%C3%A6dia_Britannica\n", - "494\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Paul_O%27Neill_(author)\n", - "494\n", - "494\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Edward_John_Payne\n", - "548\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/History_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Timeline_of_English_history\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/History_of_Anglo-Saxon_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Heptarchy\n", - "548\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Norman_conquest_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Anglo-Norman_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Angevin_Empire\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/England_in_the_Late_Middle_Ages\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Wars_of_the_Roses\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Tudor_period\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Stuart_period_(England)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/English_Renaissance\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/English_Reformation\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Elizabethan_era\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Union_of_the_Crowns\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Gunpowder_Plot\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Jacobean_era\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/English_Civil_War\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Interregnum_(England)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Commonwealth_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/The_Protectorate\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Restoration_(England)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Popish_Plot\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Glorious_Revolution\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Maritime_history_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Economy_of_England_in_the_Middle_Ages\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Acts_of_Union_1707\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Dynasty\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/House_of_Wessex\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/House_of_Kn%C3%BDtlinga\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/House_of_Normandy\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Angevin_kings_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/House_of_Plantagenet\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/House_of_Lancaster\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/House_of_York\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Tudor_dynasty\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/House_of_Stuart\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/House_of_Orange-Nassau\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Politics_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/English_law\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Witenagemot\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Curia_regis\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Parliament_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/House_of_Lords_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/House_of_Commons_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/List_of_English_monarchs\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/English_Council_of_State\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Lord_Protector\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Peerage_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Privy_Council_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/List_of_English_ministries\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Secretary_of_State_(England)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Governance_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Elizabethan_government\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Star_Chamber\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Whiggism\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Tory\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/List_of_Acts_of_the_Parliament_of_England_to_1483\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/List_of_Acts_of_the_Parliament_of_England,_1485%E2%80%931601\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/List_of_Acts_of_the_Parliament_of_England,_1603%E2%80%9341\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/List_of_Ordinances_and_Acts_of_the_Parliament_of_England,_1642%E2%80%9360\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/List_of_Acts_of_the_Parliament_of_England,_1660%E2%80%9399\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/List_of_Acts_of_the_Parliament_of_England,_1700%E2%80%9306\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Military_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Anglo-Saxon_military_organization\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Anglo-Saxon_warfare\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/English_Army\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/New_Model_Army\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Royal_Navy\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/List_of_ship_names_of_the_Royal_Navy\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/History_of_the_Royal_Navy\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Geography_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Historic_counties_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/List_of_islands_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/List_of_places_in_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/List_of_towns_in_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/List_of_castles_in_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/List_of_palaces#England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Demography_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/English_language_in_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/English_people\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/List_of_English_people\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Culture_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Religion_in_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Church_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/English_cuisine\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/English_folklore\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Morris_dance\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "0\n", - "PAGE HAS NO LINKS: /wiki/English_country_dance\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Architecture_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Anglo-Saxon_architecture\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/English_Gothic_architecture\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Tudor_architecture\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Elizabethan_architecture\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Jacobean_architecture\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Queen_Anne_style_architecture\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Georgian_architecture\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/National_symbols_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Flag_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/List_of_English_flags\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/English_heraldry\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Royal_Arms_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/College_of_Arms\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Royal_Badges_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Royal_Supporters_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Royal_Standards_of_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Crown_Jewels_of_the_United_Kingdom\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Tudor_rose\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Oak\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Saint_George\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/St_George%27s_Day_in_England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Empire\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Ancient_history\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Akkadian_Empire\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/New_Kingdom_of_Egypt\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Neo-Assyrian_Empire\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Neo-Babylonian_Empire\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Ancient_Carthage\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/History_of_China#Imperial_era\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Qin_dynasty\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Han_dynasty\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Jin_dynasty_(265%E2%80%93420)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Northern_Wei\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Hellenistic_period\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Macedonia_(ancient_kingdom)#Empire\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Seleucid_Empire\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Hittites\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/History_of_India\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Nanda_Empire\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Maurya_Empire\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Satavahana_dynasty\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Shunga_Empire\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Gupta_Empire\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Empire_of_Harsha\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/History_of_Iran\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Medes\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Achaemenid_Empire\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Parthian_Empire\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Sasanian_Empire\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Kushan_Empire\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/History_of_Mongolia\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Xianbei_state\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Xiongnu\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Roman_Empire\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Western_Roman_Empire\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Byzantine_Empire\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Teotihuacan\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Post-classical_history\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Caliphate\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Rashidun_Caliphate\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Umayyad_Caliphate\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Abbasid_Caliphate\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Fatimid_Caliphate\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Caliphate_of_C%C3%B3rdoba\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Crown_of_Aragon\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Angevin_Empire\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Aztec_Empire\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Benin_Empire\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Bornu_Empire\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Bruneian_Empire\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Bulgarian_Empire\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/First_Bulgarian_Empire\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Second_Bulgarian_Empire\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Byzantine_Empire\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Empire_of_Nicaea\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Empire_of_Trebizond\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Carolingian_Empire\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/History_of_China#Imperial_era\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Sui_dynasty\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Tang_dynasty\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Song_dynasty\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Yuan_dynasty\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Ethiopian_Empire\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Zagwe_dynasty\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Solomonic_dynasty\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Empire_of_Georgia\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Hunnic_Empire\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Inca_Empire\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/History_of_India\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Chola_dynasty\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Gurjara-Pratihara\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Pala_Empire\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Eastern_Ganga_dynasty\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Delhi_Sultanate\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Vijayanagara_Empire\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/History_of_Iran\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Tahirid_dynasty\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Samanid_Empire\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Buyid_dynasty\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Sallarid_dynasty\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Ziyarid_dynasty\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Kanem_Empire\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Khmer_Empire\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Latin_Empire\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Majapahit\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Malacca_Sultanate\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Mali_Empire\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Mongol_Empire\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Yuan_dynasty\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Golden_Horde\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Chagatai_Khanate\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Ilkhanate\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/History_of_Morocco\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Idrisid_dynasty\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Almoravid_dynasty\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Almohad_Caliphate\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Marinid_dynasty\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/North_Sea_Empire\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Oyo_Empire\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Holy_Roman_Empire\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Serbian_Empire\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/History_of_Somalia\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Ajuran_Sultanate\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Sultanate_of_Ifat\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Adal_Sultanate\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Sultanate_of_Mogadishu\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Warsangali_Sultanate\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Songhai_Empire\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Srivijaya\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Tibetan_Empire\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Turko-Persian_tradition\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Ghaznavids\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Seljuk_Empire\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Khwarazmian_dynasty\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Timurid_Empire\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/History_of_Vietnam\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Ly_Dynasty\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Tran_Dynasty\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Later_Le_Dynasty\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Ghana_Empire\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Modern_history\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Ashanti_Empire\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Austrian_Empire\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Austria-Hungary\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Empire_of_Brazil\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Central_African_Empire\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/History_of_China#Imperial_era\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Ming_dynasty\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Qing_dynasty\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Empire_of_China_(1915%E2%80%931916)\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Manchukuo\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Ethiopian_Empire\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/History_of_France\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/First_French_Empire\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Second_French_Empire\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/History_of_Germany\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Holy_Roman_Empire\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/German_Empire\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Nazi_Germany\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/History_of_Haiti\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/First_Empire_of_Haiti\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Second_Empire_of_Haiti\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/History_of_India\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Maratha_Empire\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Sikh_Empire\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Mughal_Empire\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/British_Raj\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/History_of_Iran\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Safavid_dynasty\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Afsharid_dynasty\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Zand_dynasty\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Qajar_dynasty\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Pahlavi_dynasty\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Empire_of_Japan\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Johor_Sultanate\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Korean_Empire\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/History_of_Mexico\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/First_Mexican_Empire\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Second_Mexican_Empire\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/History_of_Morocco\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Saadi_dynasty\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Alaouite_dynasty\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Russian_Empire\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Soviet_Empire\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "0\n", - "PAGE HAS NO LINKS: /wiki/History_of_Somalia\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Sultanate_of_the_Geledi\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Majeerteen_Sultanate\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Sultanate_of_Hobyo\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Dervish_state\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Swedish_Empire\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Tu%CA%BBi_Tonga_Empire\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/History_of_Turkey\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Ottoman_Empire\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Karamanids\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Ramadanids\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/History_of_Vietnam\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Tay_Son_Dynasty\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Nguyen_Dynasty\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Empire_of_Vietnam\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Colonial_empire\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/United_States_territorial_acquisitions\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Belgian_colonial_empire\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/British_Empire\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Danish_colonial_empire\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Dutch_Empire\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/French_colonial_empire\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/German_colonial_empire\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Italian_Empire\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Empire_of_Japan\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Muscat_and_Oman\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Norwegian_expansion_during_the_Middle_Ages\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Portuguese_Empire\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Spanish_Empire\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Swedish_overseas_colonies\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/List_of_empires\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/List_of_largest_empires\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/List_of_ancient_great_powers\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/List_of_medieval_great_powers\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/List_of_modern_great_powers\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Colonial_empire\n", - "1835\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/United_States_territorial_acquisitions\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Austria-Hungary\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Austrian_colonial_policy\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Belgium\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Belgian_overseas_colonies\n", - "1830\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/British_Empire\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Courland\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Couronian_colonization\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Denmark\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Danish_colonial_empire\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Netherlands\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Dutch_Empire\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/England\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/France\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/French_colonial_empire\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/German_Empire\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/German_colonial_empire\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Kingdom_of_Italy\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Italian_Empire\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Empire_of_Japan\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Japanese_colonial_empire\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Sovereign_Military_Order_of_Malta\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/History_of_Malta_under_the_Order_of_Saint_John\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Ottoman_Empire\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Ottoman_Empire\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Portugal\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Portuguese_Empire\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Russian_Empire\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Russian_Empire\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Soviet_Union\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Soviet_Empire\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Spain\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Spanish_Empire\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Sweden\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Swedish_overseas_colonies\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Colonies_in_antiquity\n", - "610\n", - "610\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Main_Page\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Main_Page\n", - "433\n", - "0\n", - "PAGE HAS NO LINKS: /wiki/Royal_charter\n" - ] - }, - { - "ename": "URLError", - "evalue": "", - "output_type": "error", - "traceback": [ - "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", - "\u001b[0;31mgaierror\u001b[0m Traceback (most recent call last)", - "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/urllib/request.py\u001b[0m in \u001b[0;36mdo_open\u001b[0;34m(self, http_class, req, **http_conn_args)\u001b[0m\n\u001b[1;32m 1317\u001b[0m h.request(req.get_method(), req.selector, req.data, headers,\n\u001b[0;32m-> 1318\u001b[0;31m encode_chunked=req.has_header('Transfer-encoding'))\n\u001b[0m\u001b[1;32m 1319\u001b[0m \u001b[0;32mexcept\u001b[0m \u001b[0mOSError\u001b[0m \u001b[0;32mas\u001b[0m \u001b[0merr\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0;31m# timeout error\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/http/client.py\u001b[0m in \u001b[0;36mrequest\u001b[0;34m(self, method, url, body, headers, encode_chunked)\u001b[0m\n\u001b[1;32m 1238\u001b[0m \u001b[0;34m\"\"\"Send a complete request to the server.\"\"\"\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 1239\u001b[0;31m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_send_request\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mmethod\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0murl\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mbody\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mheaders\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mencode_chunked\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 1240\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/http/client.py\u001b[0m in \u001b[0;36m_send_request\u001b[0;34m(self, method, url, body, headers, encode_chunked)\u001b[0m\n\u001b[1;32m 1284\u001b[0m \u001b[0mbody\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0m_encode\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mbody\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m'body'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 1285\u001b[0;31m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mendheaders\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mbody\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mencode_chunked\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mencode_chunked\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 1286\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/http/client.py\u001b[0m in \u001b[0;36mendheaders\u001b[0;34m(self, message_body, encode_chunked)\u001b[0m\n\u001b[1;32m 1233\u001b[0m \u001b[0;32mraise\u001b[0m \u001b[0mCannotSendHeader\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 1234\u001b[0;31m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_send_output\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mmessage_body\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mencode_chunked\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mencode_chunked\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 1235\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/http/client.py\u001b[0m in \u001b[0;36m_send_output\u001b[0;34m(self, message_body, encode_chunked)\u001b[0m\n\u001b[1;32m 1025\u001b[0m \u001b[0;32mdel\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_buffer\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 1026\u001b[0;31m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msend\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mmsg\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 1027\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/http/client.py\u001b[0m in \u001b[0;36msend\u001b[0;34m(self, data)\u001b[0m\n\u001b[1;32m 963\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mauto_open\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 964\u001b[0;31m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mconnect\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 965\u001b[0m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/http/client.py\u001b[0m in \u001b[0;36mconnect\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 935\u001b[0m self.sock = self._create_connection(\n\u001b[0;32m--> 936\u001b[0;31m (self.host,self.port), self.timeout, self.source_address)\n\u001b[0m\u001b[1;32m 937\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msock\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msetsockopt\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0msocket\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mIPPROTO_TCP\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0msocket\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mTCP_NODELAY\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;36m1\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/socket.py\u001b[0m in \u001b[0;36mcreate_connection\u001b[0;34m(address, timeout, source_address)\u001b[0m\n\u001b[1;32m 703\u001b[0m \u001b[0merr\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;32mNone\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 704\u001b[0;31m \u001b[0;32mfor\u001b[0m \u001b[0mres\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mgetaddrinfo\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mhost\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mport\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;36m0\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mSOCK_STREAM\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 705\u001b[0m \u001b[0maf\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0msocktype\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mproto\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mcanonname\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0msa\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mres\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/socket.py\u001b[0m in \u001b[0;36mgetaddrinfo\u001b[0;34m(host, port, family, type, proto, flags)\u001b[0m\n\u001b[1;32m 742\u001b[0m \u001b[0maddrlist\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m[\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 743\u001b[0;31m \u001b[0;32mfor\u001b[0m \u001b[0mres\u001b[0m \u001b[0;32min\u001b[0m \u001b[0m_socket\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mgetaddrinfo\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mhost\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mport\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mfamily\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mtype\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mproto\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mflags\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 744\u001b[0m \u001b[0maf\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0msocktype\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mproto\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mcanonname\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0msa\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mres\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;31mgaierror\u001b[0m: [Errno 8] nodename nor servname provided, or not known", - "\nDuring handling of the above exception, another exception occurred:\n", - "\u001b[0;31mURLError\u001b[0m Traceback (most recent call last)", - "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[1;32m 58\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 59\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 60\u001b[0;31m \u001b[0mgetLinks\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'/wiki/Kevin_Bacon'\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;36m0\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mloadPages\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 61\u001b[0m \u001b[0mcur\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mclose\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 62\u001b[0m \u001b[0mconn\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mclose\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m\u001b[0m in \u001b[0;36mgetLinks\u001b[0;34m(pageUrl, recursionLevel, pages)\u001b[0m\n\u001b[1;32m 55\u001b[0m \u001b[0mprint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"PAGE HAS NO LINKS: {}\"\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mformat\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mlink\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 56\u001b[0m \u001b[0mpages\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mappend\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mlink\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 57\u001b[0;31m \u001b[0mgetLinks\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mlink\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mrecursionLevel\u001b[0m\u001b[0;34m+\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mpages\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 58\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 59\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m\u001b[0m in \u001b[0;36mgetLinks\u001b[0;34m(pageUrl, recursionLevel, pages)\u001b[0m\n\u001b[1;32m 55\u001b[0m \u001b[0mprint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"PAGE HAS NO LINKS: {}\"\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mformat\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mlink\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 56\u001b[0m \u001b[0mpages\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mappend\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mlink\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 57\u001b[0;31m \u001b[0mgetLinks\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mlink\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mrecursionLevel\u001b[0m\u001b[0;34m+\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mpages\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 58\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 59\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m\u001b[0m in \u001b[0;36mgetLinks\u001b[0;34m(pageUrl, recursionLevel, pages)\u001b[0m\n\u001b[1;32m 55\u001b[0m \u001b[0mprint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"PAGE HAS NO LINKS: {}\"\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mformat\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mlink\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 56\u001b[0m \u001b[0mpages\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mappend\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mlink\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 57\u001b[0;31m \u001b[0mgetLinks\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mlink\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mrecursionLevel\u001b[0m\u001b[0;34m+\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mpages\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 58\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 59\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m\u001b[0m in \u001b[0;36mgetLinks\u001b[0;34m(pageUrl, recursionLevel, pages)\u001b[0m\n\u001b[1;32m 55\u001b[0m \u001b[0mprint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"PAGE HAS NO LINKS: {}\"\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mformat\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mlink\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 56\u001b[0m \u001b[0mpages\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mappend\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mlink\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 57\u001b[0;31m \u001b[0mgetLinks\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mlink\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mrecursionLevel\u001b[0m\u001b[0;34m+\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mpages\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 58\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 59\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m\u001b[0m in \u001b[0;36mgetLinks\u001b[0;34m(pageUrl, recursionLevel, pages)\u001b[0m\n\u001b[1;32m 44\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 45\u001b[0m \u001b[0mpageId\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0minsertPageIfNotExists\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mpageUrl\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 46\u001b[0;31m \u001b[0mhtml\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0murlopen\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'http://en.wikipedia.org{}'\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mformat\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mpageUrl\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 47\u001b[0m \u001b[0mbs\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mBeautifulSoup\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mhtml\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m'html.parser'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 48\u001b[0m \u001b[0mlinks\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mbs\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mfindAll\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'a'\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mhref\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mre\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mcompile\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'^(/wiki/)((?!:).)*$'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/urllib/request.py\u001b[0m in \u001b[0;36murlopen\u001b[0;34m(url, data, timeout, cafile, capath, cadefault, context)\u001b[0m\n\u001b[1;32m 221\u001b[0m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 222\u001b[0m \u001b[0mopener\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0m_opener\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 223\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mopener\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mopen\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0murl\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mdata\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mtimeout\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 224\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 225\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0minstall_opener\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mopener\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/urllib/request.py\u001b[0m in \u001b[0;36mopen\u001b[0;34m(self, fullurl, data, timeout)\u001b[0m\n\u001b[1;32m 524\u001b[0m \u001b[0mreq\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mmeth\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mreq\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 525\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 526\u001b[0;31m \u001b[0mresponse\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_open\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mreq\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mdata\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 527\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 528\u001b[0m \u001b[0;31m# post-process response\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/urllib/request.py\u001b[0m in \u001b[0;36m_open\u001b[0;34m(self, req, data)\u001b[0m\n\u001b[1;32m 542\u001b[0m \u001b[0mprotocol\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mreq\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mtype\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 543\u001b[0m result = self._call_chain(self.handle_open, protocol, protocol +\n\u001b[0;32m--> 544\u001b[0;31m '_open', req)\n\u001b[0m\u001b[1;32m 545\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mresult\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 546\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mresult\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/urllib/request.py\u001b[0m in \u001b[0;36m_call_chain\u001b[0;34m(self, chain, kind, meth_name, *args)\u001b[0m\n\u001b[1;32m 502\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0mhandler\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mhandlers\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 503\u001b[0m \u001b[0mfunc\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mgetattr\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mhandler\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mmeth_name\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 504\u001b[0;31m \u001b[0mresult\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mfunc\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 505\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mresult\u001b[0m \u001b[0;32mis\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0;32mNone\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 506\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mresult\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/urllib/request.py\u001b[0m in \u001b[0;36mhttp_open\u001b[0;34m(self, req)\u001b[0m\n\u001b[1;32m 1344\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1345\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0mhttp_open\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mreq\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 1346\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mdo_open\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mhttp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mclient\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mHTTPConnection\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mreq\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 1347\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1348\u001b[0m \u001b[0mhttp_request\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mAbstractHTTPHandler\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mdo_request_\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/urllib/request.py\u001b[0m in \u001b[0;36mdo_open\u001b[0;34m(self, http_class, req, **http_conn_args)\u001b[0m\n\u001b[1;32m 1318\u001b[0m encode_chunked=req.has_header('Transfer-encoding'))\n\u001b[1;32m 1319\u001b[0m \u001b[0;32mexcept\u001b[0m \u001b[0mOSError\u001b[0m \u001b[0;32mas\u001b[0m \u001b[0merr\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0;31m# timeout error\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 1320\u001b[0;31m \u001b[0;32mraise\u001b[0m \u001b[0mURLError\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0merr\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 1321\u001b[0m \u001b[0mr\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mh\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mgetresponse\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1322\u001b[0m \u001b[0;32mexcept\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;31mURLError\u001b[0m: " - ] - } - ], - "source": [ - "from urllib.request import urlopen\n", - "from bs4 import BeautifulSoup\n", - "import re\n", - "import pymysql\n", - "from random import shuffle\n", - "\n", - "conn = pymysql.connect(host='127.0.0.1', unix_socket='/tmp/mysql.sock',\n", - " user='root', passwd='root', db='mysql', charset='utf8')\n", - "cur = conn.cursor()\n", - "cur.execute('USE wikipedia')\n", - "\n", - "def insertPageIfNotExists(url):\n", - " cur.execute('SELECT * FROM pages WHERE url = %s', (url))\n", - " if cur.rowcount == 0:\n", - " cur.execute('INSERT INTO pages (url) VALUES (%s)', (url))\n", - " conn.commit()\n", - " return cur.lastrowid\n", - " else:\n", - " return cur.fetchone()[0]\n", - "\n", - "def loadPages():\n", - " cur.execute('SELECT * FROM pages')\n", - " pages = [row[1] for row in cur.fetchall()]\n", - " return pages\n", - "\n", - "def insertLink(fromPageId, toPageId):\n", - " cur.execute('SELECT * FROM links WHERE fromPageId = %s AND toPageId = %s', \n", - " (int(fromPageId), int(toPageId)))\n", - " if cur.rowcount == 0:\n", - " cur.execute('INSERT INTO links (fromPageId, toPageId) VALUES (%s, %s)', \n", - " (int(fromPageId), int(toPageId)))\n", - " conn.commit()\n", - "def pageHasLinks(pageId):\n", - " cur.execute('SELECT * FROM links WHERE fromPageId = %s', (int(pageId)))\n", - " rowcount = cur.rowcount\n", - " if rowcount == 0:\n", - " return False\n", - " return True\n", - "\n", - "def getLinks(pageUrl, recursionLevel, pages):\n", - " if recursionLevel > 4:\n", - " return\n", - "\n", - " pageId = insertPageIfNotExists(pageUrl)\n", - " html = urlopen('http://en.wikipedia.org{}'.format(pageUrl))\n", - " bs = BeautifulSoup(html, 'html.parser')\n", - " links = bs.findAll('a', href=re.compile('^(/wiki/)((?!:).)*$'))\n", - " links = [link.attrs['href'] for link in links]\n", - "\n", - " for link in links:\n", - " linkId = insertPageIfNotExists(link)\n", - " insertLink(pageId, linkId)\n", - " if not pageHasLinks(linkId):\n", - " print(\"PAGE HAS NO LINKS: {}\".format(link))\n", - " pages.append(link)\n", - " getLinks(link, recursionLevel+1, pages)\n", - " \n", - " \n", - "getLinks('/wiki/Kevin_Bacon', 0, loadPages()) \n", - "cur.close()\n", - "conn.close()" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "import smtplib\n", - "from email.mime.text import MIMEText\n", - "\n", - "msg = MIMEText('The body of the email is here')\n", - "\n", - "msg['Subject'] = 'An Email Alert'\n", - "msg['From'] = 'ryan@pythonscraping.com'\n", - "msg['To'] = 'webmaster@pythonscraping.com'\n", - "\n", - "s = smtplib.SMTP('localhost')\n", - "s.send_message(msg)\n", - "s.quit()" - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "metadata": {}, - "outputs": [ - { - "ename": "ConnectionRefusedError", - "evalue": "[Errno 61] Connection refused", - "output_type": "error", - "traceback": [ - "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", - "\u001b[0;31mConnectionRefusedError\u001b[0m Traceback (most recent call last)", - "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[1;32m 21\u001b[0m \u001b[0mbs\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mBeautifulSoup\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0murlopen\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'https://isitchristmas.com/'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m'html.parser'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 22\u001b[0m sendMail('It\\'s Christmas!', \n\u001b[0;32m---> 23\u001b[0;31m 'According to http://itischristmas.com, it is Christmas!')\n\u001b[0m", - "\u001b[0;32m\u001b[0m in \u001b[0;36msendMail\u001b[0;34m(subject, body)\u001b[0m\n\u001b[1;32m 11\u001b[0m \u001b[0mmsg\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m'To'\u001b[0m\u001b[0;34m]\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m'ryan@pythonscraping.com'\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 12\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 13\u001b[0;31m \u001b[0ms\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0msmtplib\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mSMTP\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'localhost'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 14\u001b[0m \u001b[0ms\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msend_message\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mmsg\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 15\u001b[0m \u001b[0ms\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mquit\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/smtplib.py\u001b[0m in \u001b[0;36m__init__\u001b[0;34m(self, host, port, local_hostname, timeout, source_address)\u001b[0m\n\u001b[1;32m 249\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 250\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mhost\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 251\u001b[0;31m \u001b[0;34m(\u001b[0m\u001b[0mcode\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mmsg\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mconnect\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mhost\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mport\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 252\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mcode\u001b[0m \u001b[0;34m!=\u001b[0m \u001b[0;36m220\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 253\u001b[0m \u001b[0;32mraise\u001b[0m \u001b[0mSMTPConnectError\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mcode\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mmsg\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/smtplib.py\u001b[0m in \u001b[0;36mconnect\u001b[0;34m(self, host, port, source_address)\u001b[0m\n\u001b[1;32m 333\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mdebuglevel\u001b[0m \u001b[0;34m>\u001b[0m \u001b[0;36m0\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 334\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_print_debug\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'connect:'\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m(\u001b[0m\u001b[0mhost\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mport\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 335\u001b[0;31m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msock\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_get_socket\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mhost\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mport\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mtimeout\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 336\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mfile\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;32mNone\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 337\u001b[0m \u001b[0;34m(\u001b[0m\u001b[0mcode\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mmsg\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mgetreply\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/smtplib.py\u001b[0m in \u001b[0;36m_get_socket\u001b[0;34m(self, host, port, timeout)\u001b[0m\n\u001b[1;32m 304\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_print_debug\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'connect: to'\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m(\u001b[0m\u001b[0mhost\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mport\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msource_address\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 305\u001b[0m return socket.create_connection((host, port), timeout,\n\u001b[0;32m--> 306\u001b[0;31m self.source_address)\n\u001b[0m\u001b[1;32m 307\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 308\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0mconnect\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mhost\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;34m'localhost'\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mport\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;36m0\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0msource_address\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;32mNone\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/socket.py\u001b[0m in \u001b[0;36mcreate_connection\u001b[0;34m(address, timeout, source_address)\u001b[0m\n\u001b[1;32m 720\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 721\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0merr\u001b[0m \u001b[0;32mis\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0;32mNone\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 722\u001b[0;31m \u001b[0;32mraise\u001b[0m \u001b[0merr\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 723\u001b[0m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 724\u001b[0m \u001b[0;32mraise\u001b[0m \u001b[0merror\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"getaddrinfo returns an empty list\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/socket.py\u001b[0m in \u001b[0;36mcreate_connection\u001b[0;34m(address, timeout, source_address)\u001b[0m\n\u001b[1;32m 711\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0msource_address\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 712\u001b[0m \u001b[0msock\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mbind\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0msource_address\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 713\u001b[0;31m \u001b[0msock\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mconnect\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0msa\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 714\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0msock\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 715\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;31mConnectionRefusedError\u001b[0m: [Errno 61] Connection refused" - ] - } - ], - "source": [ - "import smtplib\n", - "from email.mime.text import MIMEText\n", - "from bs4 import BeautifulSoup\n", - "from urllib.request import urlopen\n", - "import time\n", - "\n", - "def sendMail(subject, body):\n", - " msg = MIMEText(body)\n", - " msg['Subject'] = subject\n", - " msg['From'] ='christmas_alerts@pythonscraping.com'\n", - " msg['To'] = 'ryan@pythonscraping.com'\n", - "\n", - " s = smtplib.SMTP('localhost')\n", - " s.send_message(msg)\n", - " s.quit()\n", - "\n", - "bs = BeautifulSoup(urlopen('https://isitchristmas.com/'), 'html.parser')\n", - "while(bs.find('a', {'id':'answer'}).attrs['title'] == 'NO'):\n", - " print('It is not Christmas yet.')\n", - " time.sleep(3600)\n", - " bs = BeautifulSoup(urlopen('https://isitchristmas.com/'), 'html.parser')\n", - "sendMail('It\\'s Christmas!', \n", - " 'According to http://itischristmas.com, it is Christmas!')" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "'" - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.6.1" - } - }, - "nbformat": 4, - "nbformat_minor": 2 -} diff --git a/Chapter06_Web-Crawlers.ipynb b/Chapter06_Web-Crawlers.ipynb new file mode 100644 index 0000000..5422f4d --- /dev/null +++ b/Chapter06_Web-Crawlers.ipynb @@ -0,0 +1,2055 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "#bodyContent\n", + "/wiki/Main_Page\n", + "/wiki/Wikipedia:Contents\n", + "/wiki/Portal:Current_events\n", + "/wiki/Special:Random\n", + "/wiki/Wikipedia:About\n", + "//en.wikipedia.org/wiki/Wikipedia:Contact_us\n", + "https://donate.wikimedia.org/wiki/Special:FundraiserRedirector?utm_source=donate&utm_medium=sidebar&utm_campaign=C13_en.wikipedia.org&uselang=en\n", + "/wiki/Help:Contents\n", + "/wiki/Help:Introduction\n", + "/wiki/Wikipedia:Community_portal\n", + "/wiki/Special:RecentChanges\n", + "/wiki/Wikipedia:File_upload_wizard\n", + "/wiki/Main_Page\n", + "/wiki/Special:Search\n", + "/w/index.php?title=Special:CreateAccount&returnto=Kevin+Bacon\n", + "/w/index.php?title=Special:UserLogin&returnto=Kevin+Bacon\n", + "/w/index.php?title=Special:CreateAccount&returnto=Kevin+Bacon\n", + "/w/index.php?title=Special:UserLogin&returnto=Kevin+Bacon\n", + "/wiki/Help:Introduction\n", + "/wiki/Special:MyContributions\n", + "/wiki/Special:MyTalk\n", + "#\n", + "#Early_life_and_education\n", + "#Acting_career\n", + "#Early_work\n", + "#1980s\n", + "#1990s\n", + "#2000s\n", + "#2010s\n", + "#Advertising_work\n", + "#Six_Degrees_of_Kevin_Bacon\n", + "#Music\n", + "#Personal_life\n", + "#Accolades\n", + "#Awards_and_nominations\n", + "#Other_honors\n", + "#See_also\n", + "#References\n", + "#External_links\n", + "https://af.wikipedia.org/wiki/Kevin_Bacon\n", + "https://ar.wikipedia.org/wiki/%D9%83%D9%8A%D9%81%D9%8A%D9%86_%D8%A8%D9%8A%D9%83%D9%86\n", + "https://an.wikipedia.org/wiki/Kevin_Bacon\n", + "https://ast.wikipedia.org/wiki/Kevin_Bacon\n", + "https://azb.wikipedia.org/wiki/%DA%A9%D9%88%DB%8C%D9%86_%D8%A8%DB%8C%DA%A9%D9%86\n", + "https://zh-min-nan.wikipedia.org/wiki/Kevin_Bacon\n", + "https://bi.wikipedia.org/wiki/Kevin_Bacon\n", + "https://bg.wikipedia.org/wiki/%D0%9A%D0%B5%D0%B2%D0%B8%D0%BD_%D0%91%D0%B5%D0%B9%D0%BA%D1%8A%D0%BD\n", + "https://bs.wikipedia.org/wiki/Kevin_Bacon\n", + "https://ca.wikipedia.org/wiki/Kevin_Bacon\n", + "https://cs.wikipedia.org/wiki/Kevin_Bacon\n", + "https://da.wikipedia.org/wiki/Kevin_Bacon\n", + "https://de.wikipedia.org/wiki/Kevin_Bacon\n", + "https://el.wikipedia.org/wiki/%CE%9A%CE%AD%CE%B2%CE%B9%CE%BD_%CE%9C%CF%80%CE%AD%CE%B9%CE%BA%CE%BF%CE%BD\n", + "https://eml.wikipedia.org/wiki/Kevin_Bacon\n", + "https://es.wikipedia.org/wiki/Kevin_Bacon\n", + "https://eo.wikipedia.org/wiki/Kevin_Bacon\n", + "https://eu.wikipedia.org/wiki/Kevin_Bacon\n", + "https://fa.wikipedia.org/wiki/%DA%A9%D9%88%DB%8C%D9%86_%D8%A8%DB%8C%DA%A9%D9%86\n", + "https://fr.wikipedia.org/wiki/Kevin_Bacon\n", + "https://ga.wikipedia.org/wiki/Kevin_Bacon\n", + "https://gl.wikipedia.org/wiki/Kevin_Bacon\n", + "https://ko.wikipedia.org/wiki/%EC%BC%80%EB%B9%88_%EB%B2%A0%EC%9D%B4%EC%BB%A8\n", + "https://hy.wikipedia.org/wiki/%D5%94%D6%87%D5%AB%D5%B6_%D4%B2%D5%A5%D5%B5%D6%84%D5%B8%D5%B6\n", + "https://hr.wikipedia.org/wiki/Kevin_Bacon\n", + "https://io.wikipedia.org/wiki/Kevin_Bacon\n", + "https://id.wikipedia.org/wiki/Kevin_Bacon\n", + "https://it.wikipedia.org/wiki/Kevin_Bacon\n", + "https://he.wikipedia.org/wiki/%D7%A7%D7%95%D7%95%D7%99%D7%9F_%D7%91%D7%99%D7%99%D7%A7%D7%95%D7%9F\n", + "https://ka.wikipedia.org/wiki/%E1%83%99%E1%83%94%E1%83%95%E1%83%98%E1%83%9C_%E1%83%91%E1%83%94%E1%83%98%E1%83%99%E1%83%9D%E1%83%9C%E1%83%98\n", + "https://kk.wikipedia.org/wiki/%D0%9A%D0%B5%D0%B2%D0%B8%D0%BD_%D0%91%D1%8D%D0%B9%D0%BA%D0%BE%D0%BD\n", + "https://lv.wikipedia.org/wiki/Kevins_Beikons\n", + "https://hu.wikipedia.org/wiki/Kevin_Bacon\n", + "https://xmf.wikipedia.org/wiki/%E1%83%99%E1%83%94%E1%83%95%E1%83%98%E1%83%9C_%E1%83%91%E1%83%94%E1%83%98%E1%83%99%E1%83%9D%E1%83%9C%E1%83%98\n", + "https://arz.wikipedia.org/wiki/%D9%83%D9%8A%D9%81%D9%8A%D9%86_%D8%A8%D9%8A%D9%83%D9%86\n", + "https://ms.wikipedia.org/wiki/Kevin_Bacon\n", + "https://mn.wikipedia.org/wiki/%D0%9A%D0%B5%D0%B2%D0%B8%D0%BD_%D0%91%D1%8D%D0%B9%D0%BA%D0%BE%D0%BD\n", + "https://nl.wikipedia.org/wiki/Kevin_Bacon\n", + "https://ja.wikipedia.org/wiki/%E3%82%B1%E3%83%B4%E3%82%A3%E3%83%B3%E3%83%BB%E3%83%99%E3%83%BC%E3%82%B3%E3%83%B3\n", + "https://no.wikipedia.org/wiki/Kevin_Bacon\n", + "https://oc.wikipedia.org/wiki/Kevin_Bacon\n", + "https://uz.wikipedia.org/wiki/Kevin_Bacon\n", + "https://pl.wikipedia.org/wiki/Kevin_Bacon\n", + "https://pt.wikipedia.org/wiki/Kevin_Bacon\n", + "https://ro.wikipedia.org/wiki/Kevin_Bacon\n", + "https://ru.wikipedia.org/wiki/%D0%91%D0%B5%D0%B9%D0%BA%D0%BE%D0%BD,_%D0%9A%D0%B5%D0%B2%D0%B8%D0%BD\n", + "https://sco.wikipedia.org/wiki/Kevin_Bacon\n", + "https://simple.wikipedia.org/wiki/Kevin_Bacon\n", + "https://sk.wikipedia.org/wiki/Kevin_Bacon\n", + "https://ckb.wikipedia.org/wiki/%DA%A9%DB%8E%DA%A4%D9%86_%D8%A8%DB%95%DB%8C%DA%A9%D9%86\n", + "https://sr.wikipedia.org/wiki/%D0%9A%D0%B5%D0%B2%D0%B8%D0%BD_%D0%91%D0%B5%D1%98%D0%BA%D0%BE%D0%BD\n", + "https://sh.wikipedia.org/wiki/Kevin_Bacon\n", + "https://fi.wikipedia.org/wiki/Kevin_Bacon\n", + "https://sv.wikipedia.org/wiki/Kevin_Bacon\n", + "https://th.wikipedia.org/wiki/%E0%B9%80%E0%B8%84%E0%B8%A7%E0%B8%B4%E0%B8%99_%E0%B9%80%E0%B8%9A%E0%B8%84%E0%B8%AD%E0%B8%99\n", + "https://tr.wikipedia.org/wiki/Kevin_Bacon\n", + "https://uk.wikipedia.org/wiki/%D0%9A%D0%B5%D0%B2%D1%96%D0%BD_%D0%91%D0%B5%D0%B9%D0%BA%D0%BE%D0%BD\n", + "https://vi.wikipedia.org/wiki/Kevin_Bacon\n", + "https://wuu.wikipedia.org/wiki/%E5%87%AF%E6%96%87%C2%B7%E8%B4%9D%E8%82%AF\n", + "https://zh-yue.wikipedia.org/wiki/%E5%A5%87%E9%9B%B2%E8%B2%9D%E6%A0%B9\n", + "https://zh.wikipedia.org/wiki/%E5%87%AF%E6%96%87%C2%B7%E8%B4%9D%E8%82%AF\n", + "https://www.wikidata.org/wiki/Special:EntityPage/Q3454165#sitelinks-wikipedia\n", + "/wiki/Kevin_Bacon\n", + "/wiki/Talk:Kevin_Bacon\n", + "/wiki/Kevin_Bacon\n", + "/w/index.php?title=Kevin_Bacon&action=edit\n", + "/w/index.php?title=Kevin_Bacon&action=history\n", + "/wiki/Kevin_Bacon\n", + "/w/index.php?title=Kevin_Bacon&action=edit\n", + "/w/index.php?title=Kevin_Bacon&action=history\n", + "/wiki/Special:WhatLinksHere/Kevin_Bacon\n", + "/wiki/Special:RecentChangesLinked/Kevin_Bacon\n", + "/wiki/Wikipedia:File_Upload_Wizard\n", + "/wiki/Special:SpecialPages\n", + "/w/index.php?title=Kevin_Bacon&oldid=1146341850\n", + "/w/index.php?title=Kevin_Bacon&action=info\n", + "/w/index.php?title=Special:CiteThisPage&page=Kevin_Bacon&id=1146341850&wpFormIdentifier=titleform\n", + "https://www.wikidata.org/wiki/Special:EntityPage/Q3454165\n", + "/w/index.php?title=Special:DownloadAsPdf&page=Kevin_Bacon&action=show-download-screen\n", + "/w/index.php?title=Kevin_Bacon&printable=yes\n", + "https://commons.wikimedia.org/wiki/Kevin_Bacon\n", + "/wiki/Wikipedia:Protection_policy#semi\n", + "/wiki/Kevin_Bacon_(disambiguation)\n", + "/wiki/File:Kevin_Bacon_SDCC_2014.jpg\n", + "/wiki/Philadelphia\n", + "/wiki/Kevin_Bacon_filmography\n", + "/wiki/Kyra_Sedgwick\n", + "/wiki/Sosie_Bacon\n", + "#cite_note-1\n", + "/wiki/Edmund_Bacon_(architect)\n", + "/wiki/Michael_Bacon_(musician)\n", + "/wiki/Holly_Near\n", + "/wiki/Wikipedia:Citation_needed\n", + "http://baconbros.com/\n", + "#cite_note-2\n", + "#cite_note-actor-3\n", + "/wiki/Leading_man\n", + "/wiki/Character_actor\n", + "/wiki/Golden_Globe_Award\n", + "/wiki/Screen_Actors_Guild_Award\n", + "/wiki/Primetime_Emmy_Award\n", + "/wiki/The_Guardian\n", + "/wiki/Academy_Award\n", + "#cite_note-4\n", + "/wiki/Hollywood_Walk_of_Fame\n", + "#cite_note-5\n", + "/wiki/National_Lampoon%27s_Animal_House\n", + "/wiki/Footloose_(1984_film)\n", + "/wiki/Diner_(1982_film)\n", + "/wiki/JFK_(film)\n", + "/wiki/A_Few_Good_Men\n", + "/wiki/Apollo_13_(film)\n", + "/wiki/Mystic_River_(film)\n", + "/wiki/Frost/Nixon_(film)\n", + "/wiki/Friday_the_13th_(1980_film)\n", + "/wiki/The_River_Wild\n", + "/wiki/Sleepers_(film)\n", + "/wiki/Wild_Things_(film)\n", + "/wiki/The_Woodsman_(2004_film)\n", + "/wiki/Flatliners\n", + "/wiki/Crazy,_Stupid,_Love\n", + "/wiki/X-Men:_First_Class\n", + "/wiki/Black_Mass_(film)\n", + "/wiki/Patriots_Day_(film)\n", + "/wiki/Losing_Chase\n", + "/wiki/Loverboy_(2005_film)\n", + "/wiki/Fox_Broadcasting_Company\n", + "/wiki/The_Following\n", + "/wiki/Michael_Strobl\n", + "/wiki/HBO\n", + "/wiki/Taking_Chance\n", + "/wiki/Golden_Globe_Award_for_Best_Actor_%E2%80%93_Miniseries_or_Television_Film\n", + "/wiki/Screen_Actors_Guild_Award_for_Outstanding_Performance_by_a_Male_Actor_in_a_Miniseries_or_Television_Movie\n", + "/wiki/Amazon_Prime_Video\n", + "/wiki/I_Love_Dick_(TV_series)\n", + "/wiki/Golden_Globe_Award_for_Best_Actor_%E2%80%93_Television_Series_Musical_or_Comedy\n", + "/wiki/Showtime_(TV_network)\n", + "/wiki/City_on_a_Hill_(TV_series)\n", + "#cite_note-6\n", + "/wiki/Six_Degrees_of_Kevin_Bacon\n", + "/wiki/SixDegrees.org\n", + "#cite_note-walk-7\n", + "/wiki/EE_Limited\n", + "#cite_note-8\n", + "/wiki/Philadelphia\n", + "#cite_note-actor-3\n", + "#cite_note-actor-3\n", + "/wiki/Edmund_Bacon_(architect)\n", + "/wiki/Design_of_Cities\n", + "#cite_note-bacon-9\n", + "/wiki/Julia_R._Masterman_High_School\n", + "#cite_note-10\n", + "/wiki/Pennsylvania_Governor%27s_School_for_the_Arts\n", + "/wiki/Bucknell_University\n", + "#cite_note-11\n", + "/wiki/Glory_Van_Scott\n", + "#cite_note-walk-7\n", + "#cite_note-bacon-9\n", + "/wiki/Kevin_Bacon_filmography\n", + "/wiki/Circle_in_the_Square\n", + "/wiki/Nancy_Mills\n", + "/wiki/Cosmopolitan_(magazine)\n", + "#cite_note-cosmo91-12\n", + "/wiki/Fraternities_and_sororities\n", + "/wiki/Animal_House\n", + "#cite_note-bacon-9\n", + "/wiki/Search_for_Tomorrow\n", + "/wiki/Guiding_Light\n", + "/wiki/Friday_the_13th_(1980_film)\n", + "#cite_note-13\n", + "/wiki/Getting_Out\n", + "/wiki/Phoenix_Theater\n", + "/wiki/Flux\n", + "/wiki/Second_Stage_Theatre\n", + "#cite_note-bio-14\n", + "/wiki/Obie_Award\n", + "/wiki/Forty_Deuce\n", + "#cite_note-kevin-15\n", + "/wiki/Slab_Boys\n", + "/wiki/Sean_Penn\n", + "/wiki/Val_Kilmer\n", + "/wiki/Barry_Levinson\n", + "/wiki/Diner_(1982_film)\n", + "/wiki/Steve_Guttenberg\n", + "/wiki/Daniel_Stern_(actor)\n", + "/wiki/Mickey_Rourke\n", + "/wiki/Tim_Daly\n", + "/wiki/Ellen_Barkin\n", + "#cite_note-16\n", + "/wiki/Footloose_(1984_film)\n", + "#cite_note-bio-14\n", + "/wiki/James_Dean\n", + "/wiki/Rebel_Without_a_Cause\n", + "/wiki/Mickey_Rooney\n", + "/wiki/Judy_Garland\n", + "#cite_note-time84-17\n", + "#cite_note-bacon-9\n", + "#cite_note-18\n", + "#cite_note-19\n", + "/wiki/Typecasting_(acting)\n", + "/wiki/John_Hughes_(filmmaker)\n", + "/wiki/Planes,_Trains_and_Automobiles\n", + "#cite_note-20\n", + "/wiki/She%27s_Having_a_Baby\n", + "#cite_note-bio-14\n", + "/wiki/The_Big_Picture_(1989_film)\n", + "#cite_note-21\n", + "/wiki/Tremors_(1990_film)\n", + "#cite_note-22\n", + "/wiki/Joel_Schumacher\n", + "/wiki/Flatliners\n", + "#cite_note-bio-14\n", + "/wiki/Elizabeth_Perkins\n", + "/wiki/He_Said,_She_Said_(film)\n", + "#cite_note-bio-14\n", + "/wiki/The_New_York_Times\n", + "#cite_note-nyt94-23\n", + "/wiki/Oliver_Stone\n", + "/wiki/JFK_(film)\n", + "#cite_note-24\n", + "/wiki/A_Few_Good_Men_(film)\n", + "#cite_note-25\n", + "/wiki/Michael_Greif\n", + "#cite_note-bio-14\n", + "/wiki/Golden_Globe_Award\n", + "/wiki/The_River_Wild\n", + "#cite_note-bio-14\n", + "/wiki/Meryl_Streep\n", + "/wiki/Murder_in_the_First_(film)\n", + "#cite_note-bio-14\n", + "/wiki/Blockbuster_(entertainment)\n", + "/wiki/Apollo_13_(film)\n", + "#cite_note-26\n", + "/wiki/Sleepers_(film)\n", + "#cite_note-27\n", + "/wiki/Picture_Perfect_(1997_film)\n", + "#cite_note-bio-14\n", + "/wiki/Losing_Chase\n", + "#cite_note-austin-28\n", + "/wiki/Digging_to_China\n", + "#cite_note-bio-14\n", + "/wiki/Payola\n", + "/wiki/Telling_Lies_in_America_(film)\n", + "#cite_note-bio-14\n", + "/wiki/Wild_Things_(film)\n", + "/wiki/Stir_of_Echoes\n", + "/wiki/David_Koepp\n", + "#cite_note-29\n", + "/wiki/File:Kevin_Bacon_Cannes_2004.jpg\n", + "/wiki/File:Kevin_Bacon_Cannes_2004.jpg\n", + "/wiki/Cannes_Film_Festival\n", + "/wiki/Paul_Verhoeven\n", + "/wiki/Hollow_Man\n", + "#cite_note-30\n", + "/wiki/Colin_Firth\n", + "/wiki/Rachel_Blanchard\n", + "/wiki/M%C3%A9nage_%C3%A0_trois\n", + "/wiki/Where_the_Truth_Lies\n", + "#cite_note-31\n", + "/wiki/Atom_Egoyan\n", + "/wiki/MPAA\n", + "/wiki/MPAA_film_rating_system\n", + "#cite_note-32\n", + "/wiki/Sean_Penn\n", + "/wiki/Tim_Robbins\n", + "/wiki/Clint_Eastwood\n", + "/wiki/Mystic_River_(film)\n", + "/wiki/The_Woodsman_(2004_film)\n", + "#cite_note-33\n", + "/wiki/HBO_Films\n", + "/wiki/Taking_Chance\n", + "/wiki/Michael_Strobl\n", + "/wiki/Desert_Storm\n", + "#cite_note-34\n", + "/wiki/Screen_Actors_Guild_Award_for_Outstanding_Performance_by_a_Male_Actor_in_a_Miniseries_or_Television_Movie\n", + "/wiki/File:Black_Mass_PC_04_(21429102646).jpg\n", + "/wiki/File:Black_Mass_PC_04_(21429102646).jpg\n", + "/wiki/Toronto_Film_Festival\n", + "/wiki/Matthew_Vaughn\n", + "/wiki/X-Men:_First_Class\n", + "/wiki/Sebastian_Shaw_(comics)\n", + "#cite_note-35\n", + "#cite_note-36\n", + "/wiki/Dustin_Lance_Black\n", + "/wiki/8_(play)\n", + "/wiki/Perry_v._Brown\n", + "/wiki/Proposition_8\n", + "/wiki/Charles_J._Cooper\n", + "#cite_note-8_the_play-37\n", + "/wiki/Wilshire_Ebell_Theatre\n", + "/wiki/American_Foundation_for_Equal_Rights\n", + "#cite_note-8_play_video-38\n", + "#cite_note-39\n", + "/wiki/The_Following\n", + "#cite_note-40\n", + "/wiki/Saturn_Award_for_Best_Actor_on_Television\n", + "#cite_note-41\n", + "/wiki/Huffington_Post\n", + "/wiki/Tremors_(1990_film)\n", + "#cite_note-42\n", + "/wiki/Tremors_5:_Bloodline\n", + "/wiki/EE_(telecommunications_company)\n", + "#cite_note-43\n", + "#cite_note-44\n", + "#cite_note-45\n", + "/wiki/Six_Degrees_of_Kevin_Bacon\n", + "/wiki/Trivia\n", + "/wiki/Big_screen\n", + "/wiki/Six_degrees_of_separation\n", + "/wiki/Internet_meme\n", + "/wiki/SixDegrees.org\n", + "/wiki/Social_networking_service\n", + "#cite_note-46\n", + "/wiki/Six_Degrees_of_Kevin_Bacon\n", + "/wiki/IMDb\n", + "#cite_note-47\n", + "/wiki/Paul_Erd%C5%91s\n", + "/wiki/Erd%C5%91s_number\n", + "/wiki/Paul_Erd%C5%91s\n", + "/wiki/Erd%C5%91s_number\n", + "/wiki/Erd%C5%91s%E2%80%93Bacon_number\n", + "#cite_note-48\n", + "/wiki/The_Bacon_Brothers\n", + "/wiki/Michael_Bacon_(musician)\n", + "#cite_note-49\n", + "/wiki/Instagram\n", + "#cite_note-50\n", + "/wiki/Old_97%27s\n", + "/wiki/The_Guardians_of_the_Galaxy_Holiday_Special\n", + "#cite_note-51\n", + "/wiki/Kyra_Sedgwick\n", + "/wiki/PBS\n", + "/wiki/Lanford_Wilson\n", + "/wiki/Lemon_Sky\n", + "#cite_note-cosmo91-12\n", + "/wiki/Pyrates\n", + "/wiki/Murder_in_the_First_(film)\n", + "/wiki/The_Woodsman_(2004_film)\n", + "/wiki/Loverboy_(2005_film)\n", + "/wiki/Sosie_Bacon\n", + "/wiki/Upper_West_Side\n", + "/wiki/Manhattan\n", + "#cite_note-52\n", + "/wiki/Tracy_Pollan\n", + "#cite_note-53\n", + "/wiki/Separation_of_church_and_state_in_the_United_States\n", + "#cite_note-54\n", + "#cite_note-55\n", + "/wiki/The_Times\n", + "/wiki/Atheism\n", + "#cite_note-56\n", + "/wiki/Antireligion\n", + "#cite_note-57\n", + "/wiki/Will.i.am\n", + "/wiki/It%27s_a_New_Day_(Will.i.am_song)\n", + "/wiki/Barack_Obama\n", + "/wiki/Ponzi_scheme\n", + "/wiki/Bernie_Madoff\n", + "#cite_note-financialpost-58\n", + "#cite_note-59\n", + "/wiki/Finding_Your_Roots\n", + "/wiki/Henry_Louis_Gates\n", + "#cite_note-60\n", + "#cite_note-61\n", + "#cite_note-62\n", + "#cite_note-63\n", + "/wiki/Apollo_13_(film)\n", + "#cite_note-64\n", + "/wiki/Mystic_River_(film)\n", + "/wiki/Blockbuster_Entertainment_Awards\n", + "/wiki/Blockbuster_Entertainment_Awards\n", + "#cite_note-65\n", + "/wiki/Hollow_Man\n", + "/wiki/Boston_Society_of_Film_Critics\n", + "/wiki/Boston_Society_of_Film_Critics_Award_for_Best_Cast\n", + "#cite_note-66\n", + "/wiki/Mystic_River_(film)\n", + "/wiki/Bravo_Otto\n", + "/wiki/Bravo_Otto\n", + "/wiki/Footloose_(1984_film)\n", + "/wiki/CableACE_Award\n", + "/wiki/CableACE_Award\n", + "/wiki/Losing_Chase\n", + "/wiki/Chlotrudis_Awards\n", + "/wiki/The_Woodsman_(2004_film)\n", + "/wiki/Critics%27_Choice_Movie_Awards\n", + "/wiki/Critics%27_Choice_Movie_Award_for_Best_Actor\n", + "/wiki/Murder_in_the_First_(film)\n", + "/wiki/Ghent_International_Film_Festival\n", + "/wiki/Ghent_International_Film_Festival\n", + "/wiki/The_Woodsman_(2004_film)\n", + "/wiki/Giffoni_Film_Festival\n", + "/wiki/Giffoni_Film_Festival\n", + "/wiki/Digging_to_China\n", + "/wiki/Mystic_River_(film)\n", + "/wiki/Golden_Globe_Award\n", + "/wiki/Golden_Globe_Award_for_Best_Supporting_Actor_%E2%80%93_Motion_Picture\n", + "/wiki/The_River_Wild\n", + "/wiki/Golden_Globe_Award_for_Best_Actor_%E2%80%93_Miniseries_or_Television_Film\n", + "/wiki/Taking_Chance\n", + "/wiki/Golden_Globe_Award_for_Best_Actor_%E2%80%93_Television_Series_Musical_or_Comedy\n", + "/wiki/I_Love_Dick_(TV_series)\n", + "/wiki/Independent_Spirit_Awards\n", + "/wiki/Independent_Spirit_Award_for_Best_Male_Lead\n", + "/wiki/The_Woodsman_(2004_film)\n", + "/wiki/Mystic_River_(film)\n", + "/wiki/MTV_Movie_%26_TV_Awards\n", + "/wiki/MTV_Movie_Award_for_Best_Villain\n", + "/wiki/Hollow_Man\n", + "/wiki/Taking_Chance\n", + "/wiki/The_Following\n", + "/wiki/E!_People%27s_Choice_Awards\n", + "/wiki/E!_People%27s_Choice_Awards\n", + "/wiki/The_Following\n", + "/wiki/E!_People%27s_Choice_Awards\n", + "/wiki/The_Following\n", + "/wiki/Primetime_Emmy_Award\n", + "/wiki/Primetime_Emmy_Award_for_Outstanding_Lead_Actor_in_a_Limited_Series_or_Movie\n", + "/wiki/Taking_Chance\n", + "/wiki/Satellite_Awards\n", + "/wiki/Satellite_Award_for_Best_Actor_%E2%80%93_Motion_Picture\n", + "/wiki/The_Woodsman_(2004_film)\n", + "/wiki/Satellite_Award_for_Best_Actor_%E2%80%93_Miniseries_or_Television_Film\n", + "/wiki/Taking_Chance\n", + "/wiki/Saturn_Award\n", + "/wiki/Saturn_Award_for_Best_Actor_on_Television\n", + "/wiki/The_Following\n", + "/wiki/Saturn_Award_for_Best_Actor_on_Television\n", + "/wiki/The_Following\n", + "/wiki/Scream_Awards\n", + "/wiki/Scream_Awards\n", + "/wiki/X-Men:_First_Class\n", + "/wiki/Screen_Actors_Guild_Award\n", + "/wiki/Screen_Actors_Guild_Award_for_Outstanding_Performance_by_a_Male_Actor_in_a_Supporting_Role\n", + "/wiki/Murder_in_the_First_(film)\n", + "/wiki/Screen_Actors_Guild_Award_for_Outstanding_Performance_by_a_Cast_in_a_Motion_Picture\n", + "/wiki/Apollo_13_(film)\n", + "/wiki/Screen_Actors_Guild_Award_for_Outstanding_Performance_by_a_Cast_in_a_Motion_Picture\n", + "/wiki/Mystic_River_(film)\n", + "/wiki/Screen_Actors_Guild_Award_for_Outstanding_Performance_by_a_Cast_in_a_Motion_Picture\n", + "/wiki/Frost/Nixon_(film)\n", + "/wiki/Screen_Actors_Guild_Award_for_Outstanding_Performance_by_a_Male_Actor_in_a_Miniseries_or_Television_Movie\n", + "/wiki/Taking_Chance\n", + "/wiki/Teen_Choice_Awards\n", + "/wiki/Teen_Choice_Award_for_Choice_Movie_Villain\n", + "/wiki/Beauty_Shop\n", + "/wiki/Teen_Choice_Award_for_Choice_Movie_Villain\n", + "/wiki/X-Men:_First_Class\n", + "/wiki/TV_Guide_Award\n", + "/wiki/TV_Guide_Award\n", + "/wiki/The_Following\n", + "/wiki/File:Kevin_Bacon%27s_Star_Walk_of_Fame.jpg\n", + "/wiki/File:Kevin_Bacon%27s_Star_Walk_of_Fame.jpg\n", + "/wiki/Hollywood_Walk_of_Fame\n", + "/wiki/Hollywood_Walk_of_Fame\n", + "#cite_note-67\n", + "/wiki/Denver_Film_Festival\n", + "#cite_note-68\n", + "/wiki/Phoenix_Film_Festival\n", + "#cite_note-69\n", + "/wiki/Santa_Barbara_International_Film_Festival\n", + "#cite_note-70\n", + "/wiki/Broadcast_Film_Critics_Association\n", + "#cite_note-71\n", + "/wiki/Seattle_International_Film_Festival\n", + "#cite_note-72\n", + "/wiki/List_of_actors_with_Hollywood_Walk_of_Fame_motion_picture_stars\n", + "#cite_ref-1\n", + "http://www.geneall.net/U/per_page.php?id=1014399\n", + "#cite_ref-2\n", + "https://web.archive.org/web/20090113222205/http://www.newenglandancestors.org/research/services/articles_gbr78.asp\n", + "http://www.newenglandancestors.org/research/services/articles_gbr78.asp\n", + "#cite_ref-actor_3-0\n", + "#cite_ref-actor_3-1\n", + "#cite_ref-actor_3-2\n", + "http://www.biography.com/people/kevin-bacon-9542173\n", + "#cite_ref-4\n", + "https://www.theguardian.com/film/filmblog/2009/feb/19/best-actors-never-nominated-for-oscars\n", + "#cite_ref-5\n", + "http://www.walkoffame.com/kevin-bacon\n", + "#cite_ref-6\n", + "https://www.hollywoodreporter.com/tv/tv-news/showtime-cancels-city-on-a-hill-3-seasons-1235250089/\n", + "/wiki/The_Hollywood_Reporter\n", + "#cite_ref-walk_7-0\n", + "#cite_ref-walk_7-1\n", + "https://web.archive.org/web/20141016202657/http://www.thebiographychannel.co.uk/biographies/kevin-bacon.html\n", + "http://www.thebiographychannel.co.uk/biographies/kevin-bacon.html\n", + "#cite_ref-8\n", + "https://www.marketingweek.com/ee-unveils-six-degrees-of-bacon-launch-ads/\n", + "#cite_ref-bacon_9-0\n", + "#cite_ref-bacon_9-1\n", + "#cite_ref-bacon_9-2\n", + "#cite_ref-bacon_9-3\n", + "https://web.archive.org/web/20190403203113/https://www.biography.com/news/kevin-bacon-biography-facts\n", + "http://www.biography.com/news/kevin-bacon-biography-facts\n", + "#cite_ref-10\n", + "https://philadelphia.cbslocal.com/top-lists/stars-from-philly-to-hollywood/\n", + "#cite_ref-11\n", + "https://movies.yahoo.com/person/kevin-bacon/biography.html\n", + "#cite_ref-cosmo91_12-0\n", + "#cite_ref-cosmo91_12-1\n", + "#cite_ref-13\n", + "http://www.nydailynews.com/entertainment/happy-halloween-superstars-start-horror-flick-gallery-1.98345\n", + "#cite_ref-bio_14-0\n", + "#cite_ref-bio_14-1\n", + "#cite_ref-bio_14-2\n", + "#cite_ref-bio_14-3\n", + "#cite_ref-bio_14-4\n", + "#cite_ref-bio_14-5\n", + "#cite_ref-bio_14-6\n", + "#cite_ref-bio_14-7\n", + "#cite_ref-bio_14-8\n", + "#cite_ref-bio_14-9\n", + "#cite_ref-bio_14-10\n", + "https://web.archive.org/web/20160530033240/http://www.pbs.org/weta/finding-your-roots/profiles/kevin-bacon%c2%a0/\n", + "https://www.pbs.org/wnet/finding-your-roots/profiles/kevin-bacon%C2%A0/\n", + "#cite_ref-kevin_15-0\n", + "https://www.tvguide.com/celebrities/kevin-bacon/bio/160550\n", + "#cite_ref-16\n", + "https://web.archive.org/web/20141021030336/http://news.moviefone.com/2012/03/02/diner-30th-anniversary/\n", + "http://news.moviefone.com/2012/03/02/diner-30th-anniversary/\n", + "#cite_ref-time84_17-0\n", + "https://web.archive.org/web/20080830035710/http://www.time.com/time/magazine/article/0,9171,950019,00.html\n", + "http://www.time.com/time/magazine/article/0,9171,950019,00.html\n", + "#cite_ref-18\n", + "http://www.huffingtonpost.com/2014/08/25/kevin-bacon-footloose_n_5710413.html\n", + "#cite_ref-19\n", + "https://web.archive.org/web/20090109152125/http://www.thebiographychannel.co.uk/biography_story/522%3A492/1/Kevin_Bacon.htm\n", + "http://www.thebiographychannel.co.uk/biography_story/522:492/1/Kevin_Bacon.htm\n", + "#cite_ref-20\n", + "https://www.mentalfloss.com/article/71594/14-moving-facts-about-planes-trains-and-automobiles\n", + "#cite_ref-21\n", + "https://www.nytimes.com/1994/09/25/movies/a-second-wind-is-blowing-for-kevin-bacon.html\n", + "#cite_ref-22\n", + "https://www.nytimes.com/movie/review?res=9C0CE2DE1631F93AA25752C0A966958260\n", + "#cite_ref-nyt94_23-0\n", + "https://query.nytimes.com/gst/fullpage.html?res=9C07E6D91F3BF936A1575AC0A962958260\n", + "#cite_ref-24\n", + "http://www.jfk-online.com/jfkbacon.html\n", + "#cite_ref-25\n", + "http://www.tcm.com/this-month/article/143158%7C0/A-Few-Good-Men.html\n", + "#cite_ref-26\n", + "http://collider.com/kevin-bacon-commercials-footloose/\n", + "#cite_ref-27\n", + "http://www.rogerebert.com/reviews/sleepers-1996\n", + "#cite_ref-austin_28-0\n", + "http://www.austinchronicle.com/calendar/film/1997-02-07/283342/\n", + "/wiki/The_Austin_Chronicle\n", + "#cite_ref-29\n", + "http://www.criminalelement.com/blogs/2013/09/under-the-raderhorror-movies-you-may-have-missed-stir-of-echoes\n", + "#cite_ref-30\n", + "http://www.rogerebert.com/reviews/hollow-man-2000\n", + "#cite_ref-31\n", + "https://web.archive.org/web/20141017080013/http://movies.about.com/od/wherethetruthlies/a/truthkb101305.htm\n", + "http://movies.about.com/od/wherethetruthlies/a/truthkb101305.htm\n", + "#cite_ref-32\n", + "https://archive.today/20120604150801/http://jam.canoe.ca/Movies/2005/09/14/1216527.html\n", + "http://jam.canoe.ca/Movies/2005/09/14/1216527.html\n", + "#cite_ref-33\n", + "https://web.archive.org/web/20140802203026/http://www.latimes.com/entertainment/la-et-kevin-bacon-photo6-photo.html\n", + "http://www.latimes.com/entertainment/la-et-kevin-bacon-photo6-photo.html\n", + "#cite_ref-34\n", + "http://www.nydailynews.com/entertainment/tv-movies/kevin-bacon-chance-body-fallen-marine-home-article-1.392226\n", + "#cite_ref-35\n", + "https://web.archive.org/web/20100722010545/http://heatvision.hollywoodreporter.com/2010/07/winters-bone-star-cast-as-mystique-in-xmen-first-class.html\n", + "http://heatvision.hollywoodreporter.com/2010/07/winters-bone-star-cast-as-mystique-in-xmen-first-class.html\n", + "#cite_ref-36\n", + "https://web.archive.org/web/20100720060214/http://www.forcesofgeek.com/2010/07/kevin-bacon-playing-sebastian-shaw-in-x.html\n", + "http://www.forcesofgeek.com/2010/07/kevin-bacon-playing-sebastian-shaw-in-x.html\n", + "#cite_ref-8_the_play_37-0\n", + "http://www.accesshollywood.com/jesse-tyler-ferguson/glee-stars-touched-by-brad-pitt-and-george-clooneys-support-of-8_article_61543\n", + "/wiki/Access_Hollywood\n", + "#cite_ref-8_play_video_38-0\n", + "https://www.youtube.com/watch?v=qlUG8F9uVgM\n", + "https://ghostarchive.org/varchive/youtube/20211211/qlUG8F9uVgM\n", + "#cite_ref-39\n", + "http://www.pinknews.co.uk/2012/03/01/youtube-to-broadcast-proposition-8-play-live/\n", + "#cite_ref-40\n", + "http://www.fox.com/the-following/\n", + "#cite_ref-41\n", + "https://news.yahoo.com/blogs/trending-now/kevin-bacon-gives-millennials-a-history-lesson-about-the--80s-162525915.html\n", + "#cite_ref-42\n", + "http://www.huffingtonpost.com.au/entry/kevin-bacon-tremors-tv-reboot_us_5655b651e4b072e9d1c13a11\n", + "#cite_ref-43\n", + "http://www.campaignlive.co.uk/news/1294856/\n", + "#cite_ref-44\n", + "http://parade.condenast.com/269380/ashleighschmitz/kevin-bacon-reprises-his-most-iconic-film-roles-in-british-commercial/\n", + "#cite_ref-45\n", + "https://money.cnn.com/2015/03/13/media/kevin-bacon-eggs/index.html\n", + "#cite_ref-46\n", + "http://www.sixdegrees.org/\n", + "#cite_ref-47\n", + "http://www.webmonkey.com/2012/09/easter-egg-google-connects-the-dots-for-bacon-number-search/\n", + "#cite_ref-48\n", + "https://web.archive.org/web/20121112081753/http://www.telegraph.co.uk/science/science-news/4768389/And-the-winner-tonight-is.html\n", + "https://www.telegraph.co.uk/science/science-news/4768389/And-the-winner-tonight-is.html\n", + "#cite_ref-49\n", + "http://baconbros.com/\n", + "#cite_ref-50\n", + "https://www.instagram.com/p/ClUvj92p4Qn/?hl=en\n", + "#cite_ref-51\n", + "https://www.marvel.com/articles/tv-shows/guardians-of-the-galaxy-holiday-special-soundtrack\n", + "#cite_ref-52\n", + "http://www.nydailynews.com/entertainment/tv-movies/kevin-bacon-loyalty-nyc-philly-origins-peace-bustling-city-article-1.147197\n", + "#cite_ref-53\n", + "http://www.people.com/people/archive/article/0,,20093025,00.html\n", + "#cite_ref-54\n", + "https://web.archive.org/web/20141023014658/https://www.au.org/media/church-and-state/archives/2008/05/two-thumbs-up.html\n", + "http://www.au.org/media/church-and-state/archives/2008/05/two-thumbs-up.html\n", + "#cite_ref-55\n", + "https://www.washingtonpost.com/wp-dyn/content/article/2008/03/25/AR2008032503852.html\n", + "#cite_ref-56\n", + "#cite_ref-57\n", + "http://www.foxnews.com/story/0,2933,343589,00.html\n", + "#cite_ref-financialpost_58-0\n", + "https://web.archive.org/web/20140314085857/http://economiccrisis.us/2009/06/may-god-spare-mercy-victim-tells-madoff/\n", + "http://economiccrisis.us/2009/06/may-god-spare-mercy-victim-tells-madoff/\n", + "#cite_ref-59\n", + "#cite_ref-60\n", + "http://www.huffingtonpost.com/megan-smolenyak-smolenyak/6-degrees-of-separation-k_b_900707.html\n", + "#cite_ref-61\n", + "https://web.archive.org/web/20130405182304/http://www.drawtheline.org/watch-stuff/\n", + "http://www.drawtheline.org/watch-stuff\n", + "#cite_ref-62\n", + "http://www.drawtheline.org/sign-now/\n", + "#cite_ref-63\n", + "http://www.awardscircuit.com/2015/07/01/pixars-toy-story-wins-top-prize-for-1995-awards-circuit-community-awards/\n", + "#cite_ref-64\n", + "http://www.awardscircuit.com/acca/the-acca-nominations-2003/\n", + "#cite_ref-65\n", + "https://idobi.com/news/nsync-takes-home-three-blockbuster-entertainment-awards/\n", + "#cite_ref-66\n", + "https://www.upi.com/Boston-critics-pick-Mystic-River/24961071506935/\n", + "#cite_ref-67\n", + "http://www.walkoffame.com/kevin-bacon\n", + "#cite_ref-68\n", + "https://www.imdb.com/event/ev0000209/2004/1/\n", + "#cite_ref-69\n", + "https://www.imdb.com/event/ev0000536/2005/1/\n", + "#cite_ref-70\n", + "https://www.imdb.com/event/ev0000589/2005/1/\n", + "#cite_ref-71\n", + "http://www.criticschoice.com/movie-awards/critics%E2%80%99-choice-movie-awards-winners-archive/\n", + "#cite_ref-72\n", + "https://www.imdb.com/event/ev0000600/2015/1/\n", + "https://commons.wikimedia.org/wiki/Category:Kevin_Bacon\n", + "https://www.imdb.com/name/nm0000102/\n", + "/wiki/IMDb\n", + "https://www.ibdb.com/broadway-cast-staff/90569\n", + "/wiki/Internet_Broadway_Database\n", + "https://www.wikidata.org/wiki/Q3454165#P1220\n", + "http://www.iobdb.com/CreditableEntity/5597\n", + "/wiki/Internet_Off-Broadway_Database\n", + "https://www.allmovie.com/artist/p3164\n", + "/wiki/AllMovie\n", + "http://oracleofbacon.org\n", + "/wiki/Template:Kevin_Bacon\n", + "/wiki/Template_talk:Kevin_Bacon\n", + "https://en.wikipedia.org/w/index.php?title=Template:Kevin_Bacon&action=edit\n", + "/wiki/Kevin_Bacon_filmography\n", + "/wiki/Losing_Chase\n", + "/wiki/Loverboy_(2005_film)\n", + "/wiki/Kyra_Sedgwick\n", + "/wiki/Sosie_Bacon\n", + "/wiki/Edmund_Bacon_(architect)\n", + "/wiki/Michael_Bacon_(musician)\n", + "/wiki/The_Bacon_Brothers\n", + "/wiki/Six_Degrees_of_Kevin_Bacon\n", + "/wiki/Erd%C5%91s%E2%80%93Bacon_number\n", + "/wiki/SixDegrees.org\n", + "/wiki/Template:Critics%27_Choice_Movie_Award_for_Best_Actor\n", + "/wiki/Template_talk:Critics%27_Choice_Movie_Award_for_Best_Actor\n", + "https://en.wikipedia.org/w/index.php?title=Template:Critics%27_Choice_Movie_Award_for_Best_Actor&action=edit\n", + "/wiki/Critics%27_Choice_Movie_Award_for_Best_Actor\n", + "/wiki/Geoffrey_Rush\n", + "/wiki/Jack_Nicholson\n", + "/wiki/Ian_McKellen\n", + "/wiki/Russell_Crowe\n", + "/wiki/Russell_Crowe\n", + "/wiki/Russell_Crowe\n", + "/wiki/Daniel_Day-Lewis\n", + "/wiki/Jack_Nicholson\n", + "/wiki/Sean_Penn\n", + "/wiki/Jamie_Foxx\n", + "/wiki/Philip_Seymour_Hoffman\n", + "/wiki/Forest_Whitaker\n", + "/wiki/Daniel_Day-Lewis\n", + "/wiki/Sean_Penn\n", + "/wiki/Jeff_Bridges\n", + "/wiki/Colin_Firth\n", + "/wiki/George_Clooney\n", + "/wiki/Daniel_Day-Lewis\n", + "/wiki/Matthew_McConaughey\n", + "/wiki/Michael_Keaton\n", + "/wiki/Leonardo_DiCaprio\n", + "/wiki/Casey_Affleck\n", + "/wiki/Gary_Oldman\n", + "/wiki/Christian_Bale\n", + "/wiki/Joaquin_Phoenix\n", + "/wiki/Chadwick_Boseman\n", + "/wiki/Will_Smith\n", + "/wiki/Brendan_Fraser\n", + "/wiki/Template:Golden_Globe_Best_Actor_TV_Miniseries_Film\n", + "/wiki/Template_talk:Golden_Globe_Best_Actor_TV_Miniseries_Film\n", + "https://en.wikipedia.org/w/index.php?title=Template:Golden_Globe_Best_Actor_TV_Miniseries_Film&action=edit\n", + "/wiki/Golden_Globe_Award_for_Best_Actor_%E2%80%93_Miniseries_or_Television_Film\n", + "/wiki/Mickey_Rooney\n", + "/wiki/Anthony_Andrews\n", + "/wiki/Richard_Chamberlain\n", + "/wiki/Ted_Danson\n", + "/wiki/Dustin_Hoffman\n", + "/wiki/James_Woods\n", + "/wiki/Randy_Quaid\n", + "/wiki/Michael_Caine\n", + "/wiki/Stacy_Keach\n", + "/wiki/Robert_Duvall\n", + "/wiki/James_Garner\n", + "/wiki/Beau_Bridges\n", + "/wiki/Robert_Duvall\n", + "/wiki/James_Garner\n", + "/wiki/Raul_Julia\n", + "/wiki/Gary_Sinise\n", + "/wiki/Alan_Rickman\n", + "/wiki/Ving_Rhames\n", + "/wiki/Stanley_Tucci\n", + "/wiki/Jack_Lemmon\n", + "/wiki/Brian_Dennehy\n", + "/wiki/James_Franco\n", + "/wiki/Albert_Finney\n", + "/wiki/Al_Pacino\n", + "/wiki/Geoffrey_Rush\n", + "/wiki/Jonathan_Rhys_Meyers\n", + "/wiki/Bill_Nighy\n", + "/wiki/Jim_Broadbent\n", + "/wiki/Paul_Giamatti\n", + "/wiki/Al_Pacino\n", + "/wiki/Idris_Elba\n", + "/wiki/Kevin_Costner\n", + "/wiki/Michael_Douglas\n", + "/wiki/Billy_Bob_Thornton\n", + "/wiki/Oscar_Isaac\n", + "/wiki/Tom_Hiddleston\n", + "/wiki/Ewan_McGregor\n", + "/wiki/Darren_Criss\n", + "/wiki/Russell_Crowe\n", + "/wiki/Mark_Ruffalo\n", + "/wiki/Michael_Keaton\n", + "/wiki/Evan_Peters\n", + "/wiki/Template:Saturn_Award_for_Best_Actor_on_Television\n", + "/wiki/Template_talk:Saturn_Award_for_Best_Actor_on_Television\n", + "https://en.wikipedia.org/w/index.php?title=Template:Saturn_Award_for_Best_Actor_on_Television&action=edit\n", + "/wiki/Saturn_Award_for_Best_Actor_on_Television\n", + "/wiki/Saturn_Award_for_Best_Actor_on_Television\n", + "/wiki/Kyle_Chandler\n", + "/wiki/Steven_Weber_(actor)\n", + "/wiki/Richard_Dean_Anderson\n", + "/wiki/David_Boreanaz\n", + "/wiki/Robert_Patrick\n", + "/wiki/Ben_Browder\n", + "/wiki/David_Boreanaz\n", + "/wiki/David_Boreanaz\n", + "/wiki/Ben_Browder\n", + "/wiki/Matthew_Fox\n", + "/wiki/Michael_C._Hall\n", + "/wiki/Matthew_Fox\n", + "/wiki/Edward_James_Olmos\n", + "/wiki/Josh_Holloway\n", + "/wiki/Stephen_Moyer\n", + "/wiki/Bryan_Cranston\n", + "/wiki/Bryan_Cranston\n", + "/wiki/Mads_Mikkelsen\n", + "/wiki/Hugh_Dancy\n", + "/wiki/Andrew_Lincoln\n", + "/wiki/Bruce_Campbell\n", + "/wiki/Andrew_Lincoln\n", + "/wiki/Kyle_MacLachlan\n", + "/wiki/Patrick_Stewart\n", + "/wiki/Saturn_Award_for_Best_Actor_in_a_Network_or_Cable_Television_Series\n", + "/wiki/Sam_Heughan\n", + "/wiki/Bob_Odenkirk\n", + "/wiki/Saturn_Award_for_Best_Actor_in_a_Streaming_Television_Series\n", + "/wiki/Henry_Thomas\n", + "/wiki/Oscar_Isaac\n", + "/wiki/Template:ScreenActorsGuildAward_MaleTVMiniseriesMovie\n", + "/wiki/Template_talk:ScreenActorsGuildAward_MaleTVMiniseriesMovie\n", + "https://en.wikipedia.org/w/index.php?title=Template:ScreenActorsGuildAward_MaleTVMiniseriesMovie&action=edit\n", + "/wiki/Screen_Actors_Guild_Award_for_Outstanding_Performance_by_a_Male_Actor_in_a_Miniseries_or_Television_Movie\n", + "/wiki/Raul_Julia\n", + "/wiki/Gary_Sinise\n", + "/wiki/Alan_Rickman\n", + "/wiki/Gary_Sinise\n", + "/wiki/Christopher_Reeve\n", + "/wiki/Jack_Lemmon\n", + "/wiki/Brian_Dennehy\n", + "/wiki/Ben_Kingsley\n", + "/wiki/William_H._Macy\n", + "/wiki/Al_Pacino\n", + "/wiki/Geoffrey_Rush\n", + "/wiki/Paul_Newman\n", + "/wiki/Jeremy_Irons\n", + "/wiki/Kevin_Kline\n", + "/wiki/Paul_Giamatti\n", + "/wiki/Al_Pacino\n", + "/wiki/Paul_Giamatti\n", + "/wiki/Kevin_Costner\n", + "/wiki/Michael_Douglas\n", + "/wiki/Mark_Ruffalo\n", + "/wiki/Idris_Elba\n", + "/wiki/Bryan_Cranston\n", + "/wiki/Alexander_Skarsg%C3%A5rd\n", + "/wiki/Darren_Criss\n", + "/wiki/Sam_Rockwell\n", + "/wiki/Mark_Ruffalo\n", + "/wiki/Michael_Keaton\n", + "/wiki/Sam_Elliott\n", + "/wiki/Help:Authority_control\n", + "https://www.wikidata.org/wiki/Q3454165#identifiers\n", + "http://id.worldcat.org/fast/242183/\n", + "https://isni.org/isni/0000000121291300\n", + "https://viaf.org/viaf/39570812\n", + "https://www.worldcat.org/identities/lccn-n88034930/\n", + "https://authority.bibsys.no/authority/rest/authorities/html/98015093\n", + "http://catalogo.bne.es/uhtbin/authoritybrowse.cgi?action=display&authority_id=XX1298810\n", + "https://catalogue.bnf.fr/ark:/12148/cb139817766\n", + "https://data.bnf.fr/ark:/12148/cb139817766\n", + "https://d-nb.info/gnd/124109659\n", + "http://uli.nli.org.il/F/?func=find-b&local_base=NLX10&find_code=UID&request=987007454685905171\n", + "https://id.loc.gov/authorities/names/n88034930\n", + "https://kopkatalogs.lv/F?func=direct&local_base=lnc10&doc_number=000249798&P_CON_LNG=ENG\n", + "https://aleph.nkp.cz/F/?func=find-c&local_base=aut&ccl_term=ica=xx0025279&CON_LNG=ENG\n", + "https://nla.gov.au/anbd.aut-an36021861\n", + "https://lod.nl.go.kr/resource/KAC2020K8226\n", + "http://data.bibliotheken.nl/id/thes/p147880998\n", + "http://mak.bn.org.pl/cgi-bin/KHW/makwww.exe?BM=1&NU=1&IM=4&WI=9810630778405606\n", + "https://musicbrainz.org/artist/cc0dbdfc-9b2c-4e31-8448-808412388406\n", + "https://trove.nla.gov.au/people/1189569\n", + "https://snaccooperative.org/ark:/99166/w6w67gw2\n", + "https://www.idref.fr/067287832\n", + "https://en.wikipedia.org/w/index.php?title=Kevin_Bacon&oldid=1146341850\n", + "/wiki/Help:Category\n", + "/wiki/Category:1958_births\n", + "/wiki/Category:20th-century_American_male_actors\n", + "/wiki/Category:21st-century_American_male_actors\n", + "/wiki/Category:American_atheists\n", + "/wiki/Category:American_male_film_actors\n", + "/wiki/Category:American_male_soap_opera_actors\n", + "/wiki/Category:American_male_television_actors\n", + "/wiki/Category:American_male_voice_actors\n", + "/wiki/Category:The_Bacon_Brothers_members\n", + "/wiki/Category:Best_Miniseries_or_Television_Movie_Actor_Golden_Globe_winners\n", + "/wiki/Category:Circle_in_the_Square_Theatre_School_alumni\n", + "/wiki/Category:Living_people\n", + "/wiki/Category:Male_actors_from_Philadelphia\n", + "/wiki/Category:Obie_Award_recipients\n", + "/wiki/Category:Outstanding_Performance_by_a_Cast_in_a_Motion_Picture_Screen_Actors_Guild_Award_winners\n", + "/wiki/Category:Outstanding_Performance_by_a_Male_Actor_in_a_Miniseries_or_Television_Movie_Screen_Actors_Guild_Award_winners\n", + "/wiki/Category:Sedgwick_family\n", + "/wiki/Category:People_from_the_Upper_West_Side\n", + "/wiki/Category:Articles_with_short_description\n", + "/wiki/Category:Short_description_is_different_from_Wikidata\n", + "/wiki/Category:Wikipedia_indefinitely_semi-protected_biographies_of_living_people\n", + "/wiki/Category:Use_mdy_dates_from_October_2022\n", + "/wiki/Category:All_articles_with_unsourced_statements\n", + "/wiki/Category:Articles_with_unsourced_statements_from_October_2021\n", + "/wiki/Category:Articles_with_hCards\n", + "/wiki/Category:Commons_category_link_from_Wikidata\n", + "/wiki/Category:IBDB_name_template_using_Wikidata\n", + "/wiki/Category:Internet_Off-Broadway_Database_person_ID_same_as_Wikidata\n", + "/wiki/Category:Articles_with_FAST_identifiers\n", + "/wiki/Category:Articles_with_ISNI_identifiers\n", + "/wiki/Category:Articles_with_VIAF_identifiers\n", + "/wiki/Category:Articles_with_WorldCat_identifiers\n", + "/wiki/Category:Articles_with_BIBSYS_identifiers\n", + "/wiki/Category:Articles_with_BNE_identifiers\n", + "/wiki/Category:Articles_with_BNF_identifiers\n", + "/wiki/Category:Articles_with_BNFdata_identifiers\n", + "/wiki/Category:Articles_with_GND_identifiers\n", + "/wiki/Category:Articles_with_J9U_identifiers\n", + "/wiki/Category:Articles_with_LCCN_identifiers\n", + "/wiki/Category:Articles_with_LNB_identifiers\n", + "/wiki/Category:Articles_with_NKC_identifiers\n", + "/wiki/Category:Articles_with_NLA_identifiers\n", + "/wiki/Category:Articles_with_NLK_identifiers\n", + "/wiki/Category:Articles_with_NTA_identifiers\n", + "/wiki/Category:Articles_with_PLWABN_identifiers\n", + "/wiki/Category:Articles_with_MusicBrainz_identifiers\n", + "/wiki/Category:Articles_with_Trove_identifiers\n", + "/wiki/Category:Articles_with_SNAC-ID_identifiers\n", + "/wiki/Category:Articles_with_SUDOC_identifiers\n", + "//en.wikipedia.org/wiki/Wikipedia:Text_of_the_Creative_Commons_Attribution-ShareAlike_3.0_Unported_License\n", + "//creativecommons.org/licenses/by-sa/3.0/\n", + "//foundation.wikimedia.org/wiki/Terms_of_Use\n", + "//foundation.wikimedia.org/wiki/Privacy_policy\n", + "//www.wikimediafoundation.org/\n", + "https://foundation.wikimedia.org/wiki/Privacy_policy\n", + "/wiki/Wikipedia:About\n", + "/wiki/Wikipedia:General_disclaimer\n", + "//en.wikipedia.org/wiki/Wikipedia:Contact_us\n", + "//en.m.wikipedia.org/w/index.php?title=Kevin_Bacon&mobileaction=toggle_view_mobile\n", + "https://developer.wikimedia.org\n", + "https://stats.wikimedia.org/#/en.wikipedia.org\n", + "https://foundation.wikimedia.org/wiki/Cookie_statement\n", + "https://wikimediafoundation.org/\n", + "https://www.mediawiki.org/\n" + ] + } + ], + "source": [ + "from urllib.request import urlopen\n", + "from bs4 import BeautifulSoup \n", + "\n", + "html = urlopen('http://en.wikipedia.org/wiki/Kevin_Bacon')\n", + "bs = BeautifulSoup(html, 'html.parser')\n", + "for link in bs.find_all('a'):\n", + " if 'href' in link.attrs:\n", + " print(link.attrs['href'])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Retrieving Articles Only" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "/wiki/Kevin_Bacon_(disambiguation)\n", + "/wiki/Philadelphia\n", + "/wiki/Kevin_Bacon_filmography\n", + "/wiki/Kyra_Sedgwick\n", + "/wiki/Sosie_Bacon\n", + "/wiki/Edmund_Bacon_(architect)\n", + "/wiki/Michael_Bacon_(musician)\n", + "/wiki/Leading_man\n", + "/wiki/Character_actor\n", + "/wiki/Golden_Globe_Award\n", + "/wiki/Screen_Actors_Guild_Award\n", + "/wiki/Primetime_Emmy_Award\n", + "/wiki/National_Lampoon%27s_Animal_House\n", + "/wiki/Footloose_(1984_film)\n", + "/wiki/Diner_(1982_film)\n", + "/wiki/JFK_(film)\n", + "/wiki/A_Few_Good_Men\n", + "/wiki/Apollo_13_(film)\n", + "/wiki/Mystic_River_(film)\n", + "/wiki/Frost/Nixon_(film)\n", + "/wiki/Friday_the_13th_(1980_film)\n", + "/wiki/Tremors_(1990_film)\n", + "/wiki/The_River_Wild\n", + "/wiki/The_Woodsman_(2004_film)\n", + "/wiki/Crazy,_Stupid,_Love\n", + "/wiki/Patriots_Day_(film)\n", + "/wiki/Losing_Chase\n", + "/wiki/Loverboy_(2005_film)\n", + "/wiki/Golden_Globe_Award_for_Best_Actor_%E2%80%93_Miniseries_or_Television_Film\n", + "/wiki/Screen_Actors_Guild_Award_for_Outstanding_Performance_by_a_Male_Actor_in_a_Miniseries_or_Television_Movie\n", + "/wiki/Michael_Strobl\n", + "/wiki/HBO\n", + "/wiki/Taking_Chance\n", + "/wiki/Fox_Broadcasting_Company\n", + "/wiki/The_Following\n", + "/wiki/Amazon_Prime_Video\n", + "/wiki/I_Love_Dick_(TV_series)\n", + "/wiki/Golden_Globe_Award_for_Best_Actor_%E2%80%93_Television_Series_Musical_or_Comedy\n", + "/wiki/Showtime_(TV_network)\n", + "/wiki/City_on_a_Hill_(TV_series)\n", + "/wiki/The_Guardian\n", + "/wiki/Academy_Award\n", + "/wiki/Hollywood_Walk_of_Fame\n", + "/wiki/Six_Degrees_of_Kevin_Bacon\n", + "/wiki/EE_Limited\n", + "/wiki/Kyra_Sedgwick\n", + "/wiki/Philadelphia\n", + "/wiki/Edmund_Bacon_(architect)\n", + "/wiki/Urban_planning\n", + "/wiki/Design_of_Cities\n", + "/wiki/Julia_R._Masterman_School\n", + "/wiki/Spring_Garden,_Philadelphia\n", + "/wiki/Pennsylvania_Governor%27s_School_for_the_Arts\n", + "/wiki/Bucknell_University\n", + "/wiki/Lewisburg,_Pennsylvania\n", + "/wiki/Glory_Van_Scott\n", + "/wiki/Kevin_Bacon_filmography\n", + "/wiki/Circle_in_the_Square\n", + "/wiki/Nancy_Mills\n", + "/wiki/Cosmopolitan_(magazine)\n", + "/wiki/Fraternities_and_sororities\n", + "/wiki/Animal_House\n", + "/wiki/Search_for_Tomorrow\n", + "/wiki/Guiding_Light\n", + "/wiki/Friday_the_13th_(1980_film)\n", + "/wiki/Getting_Out\n", + "/wiki/Phoenix_Theater\n", + "/wiki/Flux\n", + "/wiki/Second_Stage_Theatre\n", + "/wiki/Obie_Award\n", + "/wiki/Forty_Deuce\n", + "/wiki/Slab_Boys\n", + "/wiki/Sean_Penn\n", + "/wiki/Val_Kilmer\n", + "/wiki/Barry_Levinson\n", + "/wiki/Diner_(1982_film)\n", + "/wiki/Steve_Guttenberg\n", + "/wiki/Daniel_Stern_(actor)\n", + "/wiki/Mickey_Rourke\n", + "/wiki/Tim_Daly\n", + "/wiki/Ellen_Barkin\n", + "/wiki/Footloose_(1984_film)\n", + "/wiki/James_Dean\n", + "/wiki/Rebel_Without_a_Cause\n", + "/wiki/Mickey_Rooney\n", + "/wiki/Judy_Garland\n", + "/wiki/Typecasting_(acting)\n", + "/wiki/John_Hughes_(filmmaker)\n", + "/wiki/Planes,_Trains_and_Automobiles\n", + "/wiki/She%27s_Having_a_Baby\n", + "/wiki/The_Big_Picture_(1989_film)\n", + "/wiki/Tremors_(1990_film)\n", + "/wiki/Joel_Schumacher\n", + "/wiki/Flatliners\n", + "/wiki/Elizabeth_Perkins\n", + "/wiki/He_Said,_She_Said_(film)\n", + "/wiki/The_New_York_Times\n", + "/wiki/Oliver_Stone\n", + "/wiki/JFK_(film)\n", + "/wiki/A_Few_Good_Men_(film)\n", + "/wiki/Michael_Greif\n", + "/wiki/Golden_Globe_Award\n", + "/wiki/The_River_Wild\n", + "/wiki/Meryl_Streep\n", + "/wiki/Murder_in_the_First_(film)\n", + "/wiki/Blockbuster_(entertainment)\n", + "/wiki/Apollo_13_(film)\n", + "/wiki/Sleepers_(film)\n", + "/wiki/Picture_Perfect_(1997_film)\n", + "/wiki/Losing_Chase\n", + "/wiki/Digging_to_China\n", + "/wiki/Payola\n", + "/wiki/Telling_Lies_in_America_(film)\n", + "/wiki/Wild_Things_(film)\n", + "/wiki/Stir_of_Echoes\n", + "/wiki/David_Koepp\n", + "/wiki/Cannes_Film_Festival\n", + "/wiki/Paul_Verhoeven\n", + "/wiki/Hollow_Man\n", + "/wiki/Colin_Firth\n", + "/wiki/Rachel_Blanchard\n", + "/wiki/M%C3%A9nage_%C3%A0_trois\n", + "/wiki/Where_the_Truth_Lies\n", + "/wiki/Atom_Egoyan\n", + "/wiki/MPAA\n", + "/wiki/MPAA_film_rating_system\n", + "/wiki/Sean_Penn\n", + "/wiki/Tim_Robbins\n", + "/wiki/Clint_Eastwood\n", + "/wiki/Mystic_River_(film)\n", + "/wiki/The_Woodsman_(2004_film)\n", + "/wiki/HBO_Films\n", + "/wiki/Taking_Chance\n", + "/wiki/Michael_Strobl\n", + "/wiki/Desert_Storm\n", + "/wiki/Screen_Actors_Guild_Award_for_Outstanding_Performance_by_a_Male_Actor_in_a_Miniseries_or_Television_Movie\n", + "/wiki/Toronto_Film_Festival\n", + "/wiki/Matthew_Vaughn\n", + "/wiki/Sebastian_Shaw_(comics)\n", + "/wiki/Dustin_Lance_Black\n", + "/wiki/8_(play)\n", + "/wiki/Perry_v._Brown\n", + "/wiki/Proposition_8\n", + "/wiki/Charles_J._Cooper\n", + "/wiki/Wilshire_Ebell_Theatre\n", + "/wiki/American_Foundation_for_Equal_Rights\n", + "/wiki/The_Following\n", + "/wiki/Saturn_Award_for_Best_Actor_on_Television\n", + "/wiki/Huffington_Post\n", + "/wiki/Tremors_(1990_film)\n", + "/wiki/The_Bacon_Brothers\n", + "/wiki/Michael_Bacon_(musician)\n", + "/wiki/Instagram\n", + "/wiki/Old_97%27s\n", + "/wiki/The_Guardians_of_the_Galaxy_Holiday_Special\n", + "/wiki/EE_(telecommunications_company)\n", + "/wiki/Six_Degrees_of_Kevin_Bacon\n", + "/wiki/Trivia\n", + "/wiki/Big_screen\n", + "/wiki/Six_degrees_of_separation\n", + "/wiki/Internet_meme\n", + "/wiki/SixDegrees.org\n", + "/wiki/Social_networking_service\n", + "/wiki/Six_Degrees_of_Kevin_Bacon\n", + "/wiki/IMDb\n", + "/wiki/Paul_Erd%C5%91s\n", + "/wiki/Erd%C5%91s_number\n", + "/wiki/Paul_Erd%C5%91s\n", + "/wiki/Erd%C5%91s_number\n", + "/wiki/Erd%C5%91s%E2%80%93Bacon_number\n", + "/wiki/Kyra_Sedgwick\n", + "/wiki/PBS\n", + "/wiki/Lanford_Wilson\n", + "/wiki/Lemon_Sky\n", + "/wiki/Pyrates\n", + "/wiki/Murder_in_the_First_(film)\n", + "/wiki/The_Woodsman_(2004_film)\n", + "/wiki/Loverboy_(2005_film)\n", + "/wiki/Sosie_Bacon\n", + "/wiki/Upper_West_Side\n", + "/wiki/Manhattan\n", + "/wiki/Tracy_Pollan\n", + "/wiki/Separation_of_church_and_state_in_the_United_States\n", + "/wiki/The_Times\n", + "/wiki/Atheism\n", + "/wiki/Antireligion\n", + "/wiki/Will.i.am\n", + "/wiki/It%27s_a_New_Day_(Will.i.am_song)\n", + "/wiki/Barack_Obama\n", + "/wiki/Ponzi_scheme\n", + "/wiki/Bernie_Madoff\n", + "/wiki/Finding_Your_Roots\n", + "/wiki/Henry_Louis_Gates\n", + "/wiki/Apollo_13_(film)\n", + "/wiki/Mystic_River_(film)\n", + "/wiki/Blockbuster_Entertainment_Awards\n", + "/wiki/Blockbuster_Entertainment_Awards\n", + "/wiki/Hollow_Man\n", + "/wiki/Boston_Society_of_Film_Critics\n", + "/wiki/Boston_Society_of_Film_Critics_Award_for_Best_Cast\n", + "/wiki/Mystic_River_(film)\n", + "/wiki/Bravo_Otto\n", + "/wiki/Bravo_Otto\n", + "/wiki/Footloose_(1984_film)\n", + "/wiki/CableACE_Award\n", + "/wiki/CableACE_Award\n", + "/wiki/Losing_Chase\n", + "/wiki/Chlotrudis_Awards\n", + "/wiki/The_Woodsman_(2004_film)\n", + "/wiki/Critics%27_Choice_Movie_Awards\n", + "/wiki/Critics%27_Choice_Movie_Award_for_Best_Actor\n", + "/wiki/Murder_in_the_First_(film)\n", + "/wiki/Ghent_International_Film_Festival\n", + "/wiki/Ghent_International_Film_Festival\n", + "/wiki/The_Woodsman_(2004_film)\n", + "/wiki/Giffoni_Film_Festival\n", + "/wiki/Giffoni_Film_Festival\n", + "/wiki/Digging_to_China\n", + "/wiki/Mystic_River_(film)\n", + "/wiki/Golden_Globe_Award\n", + "/wiki/Golden_Globe_Award_for_Best_Supporting_Actor_%E2%80%93_Motion_Picture\n", + "/wiki/The_River_Wild\n", + "/wiki/Golden_Globe_Award_for_Best_Actor_%E2%80%93_Miniseries_or_Television_Film\n", + "/wiki/Taking_Chance\n", + "/wiki/Golden_Globe_Award_for_Best_Actor_%E2%80%93_Television_Series_Musical_or_Comedy\n", + "/wiki/I_Love_Dick_(TV_series)\n", + "/wiki/Independent_Spirit_Awards\n", + "/wiki/Independent_Spirit_Award_for_Best_Male_Lead\n", + "/wiki/The_Woodsman_(2004_film)\n", + "/wiki/Mystic_River_(film)\n", + "/wiki/MTV_Movie_%26_TV_Awards\n", + "/wiki/MTV_Movie_Award_for_Best_Villain\n", + "/wiki/Hollow_Man\n", + "/wiki/Taking_Chance\n", + "/wiki/The_Following\n", + "/wiki/E!_People%27s_Choice_Awards\n", + "/wiki/E!_People%27s_Choice_Awards\n", + "/wiki/The_Following\n", + "/wiki/E!_People%27s_Choice_Awards\n", + "/wiki/The_Following\n", + "/wiki/Primetime_Emmy_Award\n", + "/wiki/Primetime_Emmy_Award_for_Outstanding_Lead_Actor_in_a_Limited_Series_or_Movie\n", + "/wiki/Taking_Chance\n", + "/wiki/Satellite_Awards\n", + "/wiki/Satellite_Award_for_Best_Actor_%E2%80%93_Motion_Picture\n", + "/wiki/The_Woodsman_(2004_film)\n", + "/wiki/Satellite_Award_for_Best_Actor_%E2%80%93_Miniseries_or_Television_Film\n", + "/wiki/Taking_Chance\n", + "/wiki/Saturn_Award\n", + "/wiki/Saturn_Award_for_Best_Actor_on_Television\n", + "/wiki/The_Following\n", + "/wiki/Saturn_Award_for_Best_Actor_on_Television\n", + "/wiki/The_Following\n", + "/wiki/Scream_Awards\n", + "/wiki/Scream_Awards\n", + "/wiki/Screen_Actors_Guild_Award\n", + "/wiki/Screen_Actors_Guild_Award_for_Outstanding_Performance_by_a_Male_Actor_in_a_Supporting_Role\n", + "/wiki/Murder_in_the_First_(film)\n", + "/wiki/Screen_Actors_Guild_Award_for_Outstanding_Performance_by_a_Cast_in_a_Motion_Picture\n", + "/wiki/Apollo_13_(film)\n", + "/wiki/Screen_Actors_Guild_Award_for_Outstanding_Performance_by_a_Cast_in_a_Motion_Picture\n", + "/wiki/Mystic_River_(film)\n", + "/wiki/Screen_Actors_Guild_Award_for_Outstanding_Performance_by_a_Cast_in_a_Motion_Picture\n", + "/wiki/Frost/Nixon_(film)\n", + "/wiki/Screen_Actors_Guild_Award_for_Outstanding_Performance_by_a_Male_Actor_in_a_Miniseries_or_Television_Movie\n", + "/wiki/Taking_Chance\n", + "/wiki/Teen_Choice_Awards\n", + "/wiki/Teen_Choice_Award_for_Choice_Movie_Villain\n", + "/wiki/Beauty_Shop\n", + "/wiki/Teen_Choice_Award_for_Choice_Movie_Villain\n", + "/wiki/TV_Guide_Award\n", + "/wiki/TV_Guide_Award\n", + "/wiki/The_Following\n", + "/wiki/Hollywood_Walk_of_Fame\n", + "/wiki/Hollywood_Walk_of_Fame\n", + "/wiki/Denver_Film_Festival\n", + "/wiki/Phoenix_Film_Festival\n", + "/wiki/Santa_Barbara_International_Film_Festival\n", + "/wiki/Broadcast_Film_Critics_Association\n", + "/wiki/Seattle_International_Film_Festival\n", + "/wiki/List_of_actors_with_Hollywood_Walk_of_Fame_motion_picture_stars\n", + "/wiki/The_Hollywood_Reporter\n", + "/wiki/The_Austin_Chronicle\n", + "/wiki/Access_Hollywood\n", + "/wiki/CNN\n", + "/wiki/IMDb_(identifier)\n", + "/wiki/Internet_Broadway_Database\n", + "/wiki/Internet_Off-Broadway_Database\n", + "/wiki/AllMovie\n", + "/wiki/Kevin_Bacon_filmography\n", + "/wiki/Losing_Chase\n", + "/wiki/Loverboy_(2005_film)\n", + "/wiki/Kyra_Sedgwick\n", + "/wiki/Sosie_Bacon\n", + "/wiki/Edmund_Bacon_(architect)\n", + "/wiki/Michael_Bacon_(musician)\n", + "/wiki/The_Bacon_Brothers\n", + "/wiki/Six_Degrees_of_Kevin_Bacon\n", + "/wiki/Erd%C5%91s%E2%80%93Bacon_number\n", + "/wiki/SixDegrees.org\n", + "/wiki/Critics%27_Choice_Movie_Award_for_Best_Actor\n", + "/wiki/Geoffrey_Rush\n", + "/wiki/Jack_Nicholson\n", + "/wiki/Ian_McKellen\n", + "/wiki/Russell_Crowe\n", + "/wiki/Russell_Crowe\n", + "/wiki/Russell_Crowe\n", + "/wiki/Daniel_Day-Lewis\n", + "/wiki/Jack_Nicholson\n", + "/wiki/Sean_Penn\n", + "/wiki/Jamie_Foxx\n", + "/wiki/Philip_Seymour_Hoffman\n", + "/wiki/Forest_Whitaker\n", + "/wiki/Daniel_Day-Lewis\n", + "/wiki/Sean_Penn\n", + "/wiki/Jeff_Bridges\n", + "/wiki/Colin_Firth\n", + "/wiki/George_Clooney\n", + "/wiki/Daniel_Day-Lewis\n", + "/wiki/Matthew_McConaughey\n", + "/wiki/Michael_Keaton\n", + "/wiki/Leonardo_DiCaprio\n", + "/wiki/Casey_Affleck\n", + "/wiki/Gary_Oldman\n", + "/wiki/Christian_Bale\n", + "/wiki/Joaquin_Phoenix\n", + "/wiki/Chadwick_Boseman\n", + "/wiki/Will_Smith\n", + "/wiki/Brendan_Fraser\n", + "/wiki/Golden_Globe_Award_for_Best_Actor_%E2%80%93_Miniseries_or_Television_Film\n", + "/wiki/Mickey_Rooney\n", + "/wiki/Anthony_Andrews\n", + "/wiki/Richard_Chamberlain\n", + "/wiki/Ted_Danson\n", + "/wiki/Dustin_Hoffman\n", + "/wiki/James_Woods\n", + "/wiki/Randy_Quaid\n", + "/wiki/Michael_Caine\n", + "/wiki/Stacy_Keach\n", + "/wiki/Robert_Duvall\n", + "/wiki/James_Garner\n", + "/wiki/Beau_Bridges\n", + "/wiki/Robert_Duvall\n", + "/wiki/James_Garner\n", + "/wiki/Raul_Julia\n", + "/wiki/Gary_Sinise\n", + "/wiki/Alan_Rickman\n", + "/wiki/Ving_Rhames\n", + "/wiki/Stanley_Tucci\n", + "/wiki/Jack_Lemmon\n", + "/wiki/Brian_Dennehy\n", + "/wiki/James_Franco\n", + "/wiki/Albert_Finney\n", + "/wiki/Al_Pacino\n", + "/wiki/Geoffrey_Rush\n", + "/wiki/Jonathan_Rhys_Meyers\n", + "/wiki/Bill_Nighy\n", + "/wiki/Jim_Broadbent\n", + "/wiki/Paul_Giamatti\n", + "/wiki/Al_Pacino\n", + "/wiki/Idris_Elba\n", + "/wiki/Kevin_Costner\n", + "/wiki/Michael_Douglas\n", + "/wiki/Billy_Bob_Thornton\n", + "/wiki/Oscar_Isaac\n", + "/wiki/Tom_Hiddleston\n", + "/wiki/Ewan_McGregor\n", + "/wiki/Darren_Criss\n", + "/wiki/Russell_Crowe\n", + "/wiki/Mark_Ruffalo\n", + "/wiki/Michael_Keaton\n", + "/wiki/Evan_Peters\n", + "/wiki/Saturn_Award_for_Best_Actor_on_Television\n", + "/wiki/Saturn_Award_for_Best_Actor_on_Television\n", + "/wiki/Kyle_Chandler\n", + "/wiki/Steven_Weber_(actor)\n", + "/wiki/Richard_Dean_Anderson\n", + "/wiki/David_Boreanaz\n", + "/wiki/Robert_Patrick\n", + "/wiki/Ben_Browder\n", + "/wiki/David_Boreanaz\n", + "/wiki/David_Boreanaz\n", + "/wiki/Ben_Browder\n", + "/wiki/Matthew_Fox\n", + "/wiki/Michael_C._Hall\n", + "/wiki/Matthew_Fox\n", + "/wiki/Edward_James_Olmos\n", + "/wiki/Josh_Holloway\n", + "/wiki/Stephen_Moyer\n", + "/wiki/Bryan_Cranston\n", + "/wiki/Bryan_Cranston\n", + "/wiki/Mads_Mikkelsen\n", + "/wiki/Hugh_Dancy\n", + "/wiki/Andrew_Lincoln\n", + "/wiki/Bruce_Campbell\n", + "/wiki/Andrew_Lincoln\n", + "/wiki/Kyle_MacLachlan\n", + "/wiki/Patrick_Stewart\n", + "/wiki/Saturn_Award_for_Best_Actor_in_a_Network_or_Cable_Television_Series\n", + "/wiki/Sam_Heughan\n", + "/wiki/Bob_Odenkirk\n", + "/wiki/Saturn_Award_for_Best_Actor_in_a_Streaming_Television_Series\n", + "/wiki/Henry_Thomas\n", + "/wiki/Oscar_Isaac\n", + "/wiki/Screen_Actors_Guild_Award_for_Outstanding_Performance_by_a_Male_Actor_in_a_Miniseries_or_Television_Movie\n", + "/wiki/Raul_Julia\n", + "/wiki/Gary_Sinise\n", + "/wiki/Alan_Rickman\n", + "/wiki/Gary_Sinise\n", + "/wiki/Christopher_Reeve\n", + "/wiki/Jack_Lemmon\n", + "/wiki/Brian_Dennehy\n", + "/wiki/Ben_Kingsley\n", + "/wiki/William_H._Macy\n", + "/wiki/Al_Pacino\n", + "/wiki/Geoffrey_Rush\n", + "/wiki/Paul_Newman\n", + "/wiki/Jeremy_Irons\n", + "/wiki/Kevin_Kline\n", + "/wiki/Paul_Giamatti\n", + "/wiki/Al_Pacino\n", + "/wiki/Paul_Giamatti\n", + "/wiki/Kevin_Costner\n", + "/wiki/Michael_Douglas\n", + "/wiki/Mark_Ruffalo\n", + "/wiki/Idris_Elba\n", + "/wiki/Bryan_Cranston\n", + "/wiki/Alexander_Skarsg%C3%A5rd\n", + "/wiki/Darren_Criss\n", + "/wiki/Sam_Rockwell\n", + "/wiki/Mark_Ruffalo\n", + "/wiki/Michael_Keaton\n", + "/wiki/Sam_Elliott\n" + ] + } + ], + "source": [ + "from urllib.request import urlopen \n", + "from bs4 import BeautifulSoup \n", + "import re\n", + "\n", + "html = urlopen('http://en.wikipedia.org/wiki/Kevin_Bacon')\n", + "bs = BeautifulSoup(html, 'html.parser')\n", + "for link in bs.find('div', {'id':'bodyContent'}).find_all(\n", + " 'a', href=re.compile('^(/wiki/)((?!:).)*$')):\n", + " print(link.attrs['href'])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Random Walk" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "/wiki/Julia_R._Masterman_High_School\n", + "/wiki/Edwin_M._Stanton_School_(Philadelphia)\n", + "/wiki/Robert_Ralston_School\n", + "/wiki/Thaddeus_Stevens_School_of_Observation\n", + "/wiki/Delaplaine_McDaniel_School\n", + "/wiki/National_Register_of_Historic_Places_listings_in_Greene_County,_Pennsylvania\n", + "/wiki/National_Register_of_Historic_Places_listings_in_Fayette_County,_Pennsylvania\n", + "/wiki/National_Register_of_Historic_Places_listings_in_Blair_County,_Pennsylvania\n", + "/wiki/National_Register_of_Historic_Places_listings_in_Montour_County,_Pennsylvania\n", + "/wiki/National_Register_of_Historic_Places_listings_in_Pittsburgh,_Pennsylvania\n" + ] + }, + { + "ename": "KeyboardInterrupt", + "evalue": "", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mKeyboardInterrupt\u001b[0m Traceback (most recent call last)", + "Input \u001b[0;32mIn [4]\u001b[0m, in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[1;32m 15\u001b[0m newArticle \u001b[38;5;241m=\u001b[39m links[random\u001b[38;5;241m.\u001b[39mrandint(\u001b[38;5;241m0\u001b[39m, \u001b[38;5;28mlen\u001b[39m(links)\u001b[38;5;241m-\u001b[39m\u001b[38;5;241m1\u001b[39m)]\u001b[38;5;241m.\u001b[39mattrs[\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mhref\u001b[39m\u001b[38;5;124m'\u001b[39m]\n\u001b[1;32m 16\u001b[0m \u001b[38;5;28mprint\u001b[39m(newArticle)\n\u001b[0;32m---> 17\u001b[0m links \u001b[38;5;241m=\u001b[39m \u001b[43mgetLinks\u001b[49m\u001b[43m(\u001b[49m\u001b[43mnewArticle\u001b[49m\u001b[43m)\u001b[49m\n", + "Input \u001b[0;32mIn [4]\u001b[0m, in \u001b[0;36mgetLinks\u001b[0;34m(articleUrl)\u001b[0m\n\u001b[1;32m 8\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21mgetLinks\u001b[39m(articleUrl):\n\u001b[1;32m 9\u001b[0m html \u001b[38;5;241m=\u001b[39m urlopen(\u001b[38;5;124mf\u001b[39m\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mhttp://en.wikipedia.org\u001b[39m\u001b[38;5;132;01m{\u001b[39;00marticleUrl\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m'\u001b[39m)\n\u001b[0;32m---> 10\u001b[0m bs \u001b[38;5;241m=\u001b[39m \u001b[43mBeautifulSoup\u001b[49m\u001b[43m(\u001b[49m\u001b[43mhtml\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;124;43m'\u001b[39;49m\u001b[38;5;124;43mhtml.parser\u001b[39;49m\u001b[38;5;124;43m'\u001b[39;49m\u001b[43m)\u001b[49m\n\u001b[1;32m 11\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m bs\u001b[38;5;241m.\u001b[39mfind(\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mdiv\u001b[39m\u001b[38;5;124m'\u001b[39m, {\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mid\u001b[39m\u001b[38;5;124m'\u001b[39m:\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mbodyContent\u001b[39m\u001b[38;5;124m'\u001b[39m})\u001b[38;5;241m.\u001b[39mfind_all(\u001b[38;5;124m'\u001b[39m\u001b[38;5;124ma\u001b[39m\u001b[38;5;124m'\u001b[39m, href\u001b[38;5;241m=\u001b[39mre\u001b[38;5;241m.\u001b[39mcompile(\u001b[38;5;124m'\u001b[39m\u001b[38;5;124m^(/wiki/)((?!:).)*$\u001b[39m\u001b[38;5;124m'\u001b[39m))\n", + "File \u001b[0;32m~/opt/anaconda3/lib/python3.9/site-packages/bs4/__init__.py:312\u001b[0m, in \u001b[0;36mBeautifulSoup.__init__\u001b[0;34m(self, markup, features, builder, parse_only, from_encoding, exclude_encodings, element_classes, **kwargs)\u001b[0m\n\u001b[1;32m 309\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mparse_only \u001b[38;5;241m=\u001b[39m parse_only\n\u001b[1;32m 311\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28mhasattr\u001b[39m(markup, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mread\u001b[39m\u001b[38;5;124m'\u001b[39m): \u001b[38;5;66;03m# It's a file-type object.\u001b[39;00m\n\u001b[0;32m--> 312\u001b[0m markup \u001b[38;5;241m=\u001b[39m \u001b[43mmarkup\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mread\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 313\u001b[0m \u001b[38;5;28;01melif\u001b[39;00m \u001b[38;5;28mlen\u001b[39m(markup) \u001b[38;5;241m<\u001b[39m\u001b[38;5;241m=\u001b[39m \u001b[38;5;241m256\u001b[39m \u001b[38;5;129;01mand\u001b[39;00m (\n\u001b[1;32m 314\u001b[0m (\u001b[38;5;28misinstance\u001b[39m(markup, \u001b[38;5;28mbytes\u001b[39m) \u001b[38;5;129;01mand\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;124mb\u001b[39m\u001b[38;5;124m'\u001b[39m\u001b[38;5;124m<\u001b[39m\u001b[38;5;124m'\u001b[39m \u001b[38;5;129;01min\u001b[39;00m markup)\n\u001b[1;32m 315\u001b[0m \u001b[38;5;129;01mor\u001b[39;00m (\u001b[38;5;28misinstance\u001b[39m(markup, \u001b[38;5;28mstr\u001b[39m) \u001b[38;5;129;01mand\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;124m'\u001b[39m\u001b[38;5;124m<\u001b[39m\u001b[38;5;124m'\u001b[39m \u001b[38;5;129;01min\u001b[39;00m markup)\n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 319\u001b[0m \u001b[38;5;66;03m# Beautiful Soup will still parse the input as markup,\u001b[39;00m\n\u001b[1;32m 320\u001b[0m \u001b[38;5;66;03m# since that is sometimes the intended behavior.\u001b[39;00m\n\u001b[1;32m 321\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_markup_is_url(markup):\n", + "File \u001b[0;32m~/opt/anaconda3/lib/python3.9/http/client.py:470\u001b[0m, in \u001b[0;36mHTTPResponse.read\u001b[0;34m(self, amt)\u001b[0m\n\u001b[1;32m 465\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m:\n\u001b[1;32m 466\u001b[0m \u001b[38;5;66;03m# Amount is not given (unbounded read) so we must check self.length\u001b[39;00m\n\u001b[1;32m 467\u001b[0m \u001b[38;5;66;03m# and self.chunked\u001b[39;00m\n\u001b[1;32m 469\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mchunked:\n\u001b[0;32m--> 470\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_readall_chunked\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 472\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mlength \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m:\n\u001b[1;32m 473\u001b[0m s \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mfp\u001b[38;5;241m.\u001b[39mread()\n", + "File \u001b[0;32m~/opt/anaconda3/lib/python3.9/http/client.py:577\u001b[0m, in \u001b[0;36mHTTPResponse._readall_chunked\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 575\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[1;32m 576\u001b[0m \u001b[38;5;28;01mwhile\u001b[39;00m \u001b[38;5;28;01mTrue\u001b[39;00m:\n\u001b[0;32m--> 577\u001b[0m chunk_left \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_get_chunk_left\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 578\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m chunk_left \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m:\n\u001b[1;32m 579\u001b[0m \u001b[38;5;28;01mbreak\u001b[39;00m\n", + "File \u001b[0;32m~/opt/anaconda3/lib/python3.9/http/client.py:560\u001b[0m, in \u001b[0;36mHTTPResponse._get_chunk_left\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 558\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_safe_read(\u001b[38;5;241m2\u001b[39m) \u001b[38;5;66;03m# toss the CRLF at the end of the chunk\u001b[39;00m\n\u001b[1;32m 559\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[0;32m--> 560\u001b[0m chunk_left \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_read_next_chunk_size\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 561\u001b[0m \u001b[38;5;28;01mexcept\u001b[39;00m \u001b[38;5;167;01mValueError\u001b[39;00m:\n\u001b[1;32m 562\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m IncompleteRead(\u001b[38;5;124mb\u001b[39m\u001b[38;5;124m'\u001b[39m\u001b[38;5;124m'\u001b[39m)\n", + "File \u001b[0;32m~/opt/anaconda3/lib/python3.9/http/client.py:520\u001b[0m, in \u001b[0;36mHTTPResponse._read_next_chunk_size\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 518\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21m_read_next_chunk_size\u001b[39m(\u001b[38;5;28mself\u001b[39m):\n\u001b[1;32m 519\u001b[0m \u001b[38;5;66;03m# Read the next chunk size from the file\u001b[39;00m\n\u001b[0;32m--> 520\u001b[0m line \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mfp\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mreadline\u001b[49m\u001b[43m(\u001b[49m\u001b[43m_MAXLINE\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m+\u001b[39;49m\u001b[43m \u001b[49m\u001b[38;5;241;43m1\u001b[39;49m\u001b[43m)\u001b[49m\n\u001b[1;32m 521\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28mlen\u001b[39m(line) \u001b[38;5;241m>\u001b[39m _MAXLINE:\n\u001b[1;32m 522\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m LineTooLong(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mchunk size\u001b[39m\u001b[38;5;124m\"\u001b[39m)\n", + "File \u001b[0;32m~/opt/anaconda3/lib/python3.9/socket.py:704\u001b[0m, in \u001b[0;36mSocketIO.readinto\u001b[0;34m(self, b)\u001b[0m\n\u001b[1;32m 702\u001b[0m \u001b[38;5;28;01mwhile\u001b[39;00m \u001b[38;5;28;01mTrue\u001b[39;00m:\n\u001b[1;32m 703\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[0;32m--> 704\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_sock\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mrecv_into\u001b[49m\u001b[43m(\u001b[49m\u001b[43mb\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 705\u001b[0m \u001b[38;5;28;01mexcept\u001b[39;00m timeout:\n\u001b[1;32m 706\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_timeout_occurred \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;01mTrue\u001b[39;00m\n", + "File \u001b[0;32m~/opt/anaconda3/lib/python3.9/ssl.py:1241\u001b[0m, in \u001b[0;36mSSLSocket.recv_into\u001b[0;34m(self, buffer, nbytes, flags)\u001b[0m\n\u001b[1;32m 1237\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m flags \u001b[38;5;241m!=\u001b[39m \u001b[38;5;241m0\u001b[39m:\n\u001b[1;32m 1238\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m \u001b[38;5;167;01mValueError\u001b[39;00m(\n\u001b[1;32m 1239\u001b[0m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mnon-zero flags not allowed in calls to recv_into() on \u001b[39m\u001b[38;5;132;01m%s\u001b[39;00m\u001b[38;5;124m\"\u001b[39m \u001b[38;5;241m%\u001b[39m\n\u001b[1;32m 1240\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m\u001b[38;5;18m__class__\u001b[39m)\n\u001b[0;32m-> 1241\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mread\u001b[49m\u001b[43m(\u001b[49m\u001b[43mnbytes\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mbuffer\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 1242\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m:\n\u001b[1;32m 1243\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28msuper\u001b[39m()\u001b[38;5;241m.\u001b[39mrecv_into(buffer, nbytes, flags)\n", + "File \u001b[0;32m~/opt/anaconda3/lib/python3.9/ssl.py:1099\u001b[0m, in \u001b[0;36mSSLSocket.read\u001b[0;34m(self, len, buffer)\u001b[0m\n\u001b[1;32m 1097\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[1;32m 1098\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m buffer \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m:\n\u001b[0;32m-> 1099\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_sslobj\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mread\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;28;43mlen\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mbuffer\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 1100\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m:\n\u001b[1;32m 1101\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_sslobj\u001b[38;5;241m.\u001b[39mread(\u001b[38;5;28mlen\u001b[39m)\n", + "\u001b[0;31mKeyboardInterrupt\u001b[0m: " + ] + } + ], + "source": [ + "from urllib.request import urlopen\n", + "from bs4 import BeautifulSoup\n", + "import datetime\n", + "import random\n", + "import re\n", + "\n", + "random.seed(datetime.datetime.now().strftime('%s'))\n", + "def getLinks(articleUrl):\n", + " html = urlopen(f'http://en.wikipedia.org{articleUrl}')\n", + " bs = BeautifulSoup(html, 'html.parser')\n", + " return bs.find('div', {'id':'bodyContent'}).find_all('a', href=re.compile('^(/wiki/)((?!:).)*$'))\n", + "\n", + "links = getLinks('/wiki/Kevin_Bacon')\n", + "while len(links) > 0:\n", + " newArticle = links[random.randint(0, len(links)-1)].attrs['href']\n", + " print(newArticle)\n", + " links = getLinks(newArticle)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Recursively crawling an entire site" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "/wiki/Main_Page\n", + "/wiki/Special:Search\n", + "/wiki/Help:Introduction\n", + "/wiki/Special:MyTalk\n", + "/wiki/Special:MyContributions\n", + "/wiki/Wikipedia:Contents\n", + "/wiki/Portal:Current_events\n", + "/wiki/Special:Random\n" + ] + }, + { + "ename": "KeyboardInterrupt", + "evalue": "", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mKeyboardInterrupt\u001b[0m Traceback (most recent call last)", + "Input \u001b[0;32mIn [7]\u001b[0m, in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[1;32m 16\u001b[0m pages\u001b[38;5;241m.\u001b[39madd(newPage)\n\u001b[1;32m 17\u001b[0m getLinks(newPage)\n\u001b[0;32m---> 18\u001b[0m \u001b[43mgetLinks\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;124;43m'\u001b[39;49m\u001b[38;5;124;43m'\u001b[39;49m\u001b[43m)\u001b[49m\n", + "Input \u001b[0;32mIn [7]\u001b[0m, in \u001b[0;36mgetLinks\u001b[0;34m(pageUrl)\u001b[0m\n\u001b[1;32m 15\u001b[0m \u001b[38;5;28mprint\u001b[39m(newPage)\n\u001b[1;32m 16\u001b[0m pages\u001b[38;5;241m.\u001b[39madd(newPage)\n\u001b[0;32m---> 17\u001b[0m \u001b[43mgetLinks\u001b[49m\u001b[43m(\u001b[49m\u001b[43mnewPage\u001b[49m\u001b[43m)\u001b[49m\n", + "Input \u001b[0;32mIn [7]\u001b[0m, in \u001b[0;36mgetLinks\u001b[0;34m(pageUrl)\u001b[0m\n\u001b[1;32m 15\u001b[0m \u001b[38;5;28mprint\u001b[39m(newPage)\n\u001b[1;32m 16\u001b[0m pages\u001b[38;5;241m.\u001b[39madd(newPage)\n\u001b[0;32m---> 17\u001b[0m \u001b[43mgetLinks\u001b[49m\u001b[43m(\u001b[49m\u001b[43mnewPage\u001b[49m\u001b[43m)\u001b[49m\n", + " \u001b[0;31m[... skipping similar frames: getLinks at line 17 (5 times)]\u001b[0m\n", + "Input \u001b[0;32mIn [7]\u001b[0m, in \u001b[0;36mgetLinks\u001b[0;34m(pageUrl)\u001b[0m\n\u001b[1;32m 15\u001b[0m \u001b[38;5;28mprint\u001b[39m(newPage)\n\u001b[1;32m 16\u001b[0m pages\u001b[38;5;241m.\u001b[39madd(newPage)\n\u001b[0;32m---> 17\u001b[0m \u001b[43mgetLinks\u001b[49m\u001b[43m(\u001b[49m\u001b[43mnewPage\u001b[49m\u001b[43m)\u001b[49m\n", + "Input \u001b[0;32mIn [7]\u001b[0m, in \u001b[0;36mgetLinks\u001b[0;34m(pageUrl)\u001b[0m\n\u001b[1;32m 6\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21mgetLinks\u001b[39m(pageUrl):\n\u001b[1;32m 7\u001b[0m \u001b[38;5;28;01mglobal\u001b[39;00m pages\n\u001b[0;32m----> 8\u001b[0m html \u001b[38;5;241m=\u001b[39m \u001b[43murlopen\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;124;43mf\u001b[39;49m\u001b[38;5;124;43m'\u001b[39;49m\u001b[38;5;124;43mhttp://en.wikipedia.org\u001b[39;49m\u001b[38;5;132;43;01m{\u001b[39;49;00m\u001b[43mpageUrl\u001b[49m\u001b[38;5;132;43;01m}\u001b[39;49;00m\u001b[38;5;124;43m'\u001b[39;49m\u001b[43m)\u001b[49m\n\u001b[1;32m 9\u001b[0m bs \u001b[38;5;241m=\u001b[39m BeautifulSoup(html, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mhtml.parser\u001b[39m\u001b[38;5;124m'\u001b[39m)\n\u001b[1;32m 10\u001b[0m \u001b[38;5;28;01mfor\u001b[39;00m link \u001b[38;5;129;01min\u001b[39;00m bs\u001b[38;5;241m.\u001b[39mfind_all(\u001b[38;5;124m'\u001b[39m\u001b[38;5;124ma\u001b[39m\u001b[38;5;124m'\u001b[39m, href\u001b[38;5;241m=\u001b[39mre\u001b[38;5;241m.\u001b[39mcompile(\u001b[38;5;124m'\u001b[39m\u001b[38;5;124m^(/wiki/)\u001b[39m\u001b[38;5;124m'\u001b[39m)):\n", + "File \u001b[0;32m~/opt/anaconda3/lib/python3.9/urllib/request.py:214\u001b[0m, in \u001b[0;36murlopen\u001b[0;34m(url, data, timeout, cafile, capath, cadefault, context)\u001b[0m\n\u001b[1;32m 212\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m:\n\u001b[1;32m 213\u001b[0m opener \u001b[38;5;241m=\u001b[39m _opener\n\u001b[0;32m--> 214\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[43mopener\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mopen\u001b[49m\u001b[43m(\u001b[49m\u001b[43murl\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mdata\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mtimeout\u001b[49m\u001b[43m)\u001b[49m\n", + "File \u001b[0;32m~/opt/anaconda3/lib/python3.9/urllib/request.py:523\u001b[0m, in \u001b[0;36mOpenerDirector.open\u001b[0;34m(self, fullurl, data, timeout)\u001b[0m\n\u001b[1;32m 521\u001b[0m \u001b[38;5;28;01mfor\u001b[39;00m processor \u001b[38;5;129;01min\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mprocess_response\u001b[38;5;241m.\u001b[39mget(protocol, []):\n\u001b[1;32m 522\u001b[0m meth \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mgetattr\u001b[39m(processor, meth_name)\n\u001b[0;32m--> 523\u001b[0m response \u001b[38;5;241m=\u001b[39m \u001b[43mmeth\u001b[49m\u001b[43m(\u001b[49m\u001b[43mreq\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mresponse\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 525\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m response\n", + "File \u001b[0;32m~/opt/anaconda3/lib/python3.9/urllib/request.py:632\u001b[0m, in \u001b[0;36mHTTPErrorProcessor.http_response\u001b[0;34m(self, request, response)\u001b[0m\n\u001b[1;32m 629\u001b[0m \u001b[38;5;66;03m# According to RFC 2616, \"2xx\" code indicates that the client's\u001b[39;00m\n\u001b[1;32m 630\u001b[0m \u001b[38;5;66;03m# request was successfully received, understood, and accepted.\u001b[39;00m\n\u001b[1;32m 631\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m (\u001b[38;5;241m200\u001b[39m \u001b[38;5;241m<\u001b[39m\u001b[38;5;241m=\u001b[39m code \u001b[38;5;241m<\u001b[39m \u001b[38;5;241m300\u001b[39m):\n\u001b[0;32m--> 632\u001b[0m response \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mparent\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43merror\u001b[49m\u001b[43m(\u001b[49m\n\u001b[1;32m 633\u001b[0m \u001b[43m \u001b[49m\u001b[38;5;124;43m'\u001b[39;49m\u001b[38;5;124;43mhttp\u001b[39;49m\u001b[38;5;124;43m'\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mrequest\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mresponse\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mcode\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mmsg\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mhdrs\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 635\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m response\n", + "File \u001b[0;32m~/opt/anaconda3/lib/python3.9/urllib/request.py:555\u001b[0m, in \u001b[0;36mOpenerDirector.error\u001b[0;34m(self, proto, *args)\u001b[0m\n\u001b[1;32m 553\u001b[0m http_err \u001b[38;5;241m=\u001b[39m \u001b[38;5;241m0\u001b[39m\n\u001b[1;32m 554\u001b[0m args \u001b[38;5;241m=\u001b[39m (\u001b[38;5;28mdict\u001b[39m, proto, meth_name) \u001b[38;5;241m+\u001b[39m args\n\u001b[0;32m--> 555\u001b[0m result \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_call_chain\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43margs\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 556\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m result:\n\u001b[1;32m 557\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m result\n", + "File \u001b[0;32m~/opt/anaconda3/lib/python3.9/urllib/request.py:494\u001b[0m, in \u001b[0;36mOpenerDirector._call_chain\u001b[0;34m(self, chain, kind, meth_name, *args)\u001b[0m\n\u001b[1;32m 492\u001b[0m \u001b[38;5;28;01mfor\u001b[39;00m handler \u001b[38;5;129;01min\u001b[39;00m handlers:\n\u001b[1;32m 493\u001b[0m func \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mgetattr\u001b[39m(handler, meth_name)\n\u001b[0;32m--> 494\u001b[0m result \u001b[38;5;241m=\u001b[39m \u001b[43mfunc\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43margs\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 495\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m result \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m:\n\u001b[1;32m 496\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m result\n", + "File \u001b[0;32m~/opt/anaconda3/lib/python3.9/urllib/request.py:747\u001b[0m, in \u001b[0;36mHTTPRedirectHandler.http_error_302\u001b[0;34m(self, req, fp, code, msg, headers)\u001b[0m\n\u001b[1;32m 744\u001b[0m fp\u001b[38;5;241m.\u001b[39mread()\n\u001b[1;32m 745\u001b[0m fp\u001b[38;5;241m.\u001b[39mclose()\n\u001b[0;32m--> 747\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mparent\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mopen\u001b[49m\u001b[43m(\u001b[49m\u001b[43mnew\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mtimeout\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mreq\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mtimeout\u001b[49m\u001b[43m)\u001b[49m\n", + "File \u001b[0;32m~/opt/anaconda3/lib/python3.9/urllib/request.py:517\u001b[0m, in \u001b[0;36mOpenerDirector.open\u001b[0;34m(self, fullurl, data, timeout)\u001b[0m\n\u001b[1;32m 514\u001b[0m req \u001b[38;5;241m=\u001b[39m meth(req)\n\u001b[1;32m 516\u001b[0m sys\u001b[38;5;241m.\u001b[39maudit(\u001b[38;5;124m'\u001b[39m\u001b[38;5;124murllib.Request\u001b[39m\u001b[38;5;124m'\u001b[39m, req\u001b[38;5;241m.\u001b[39mfull_url, req\u001b[38;5;241m.\u001b[39mdata, req\u001b[38;5;241m.\u001b[39mheaders, req\u001b[38;5;241m.\u001b[39mget_method())\n\u001b[0;32m--> 517\u001b[0m response \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_open\u001b[49m\u001b[43m(\u001b[49m\u001b[43mreq\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mdata\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 519\u001b[0m \u001b[38;5;66;03m# post-process response\u001b[39;00m\n\u001b[1;32m 520\u001b[0m meth_name \u001b[38;5;241m=\u001b[39m protocol\u001b[38;5;241m+\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124m_response\u001b[39m\u001b[38;5;124m\"\u001b[39m\n", + "File \u001b[0;32m~/opt/anaconda3/lib/python3.9/urllib/request.py:534\u001b[0m, in \u001b[0;36mOpenerDirector._open\u001b[0;34m(self, req, data)\u001b[0m\n\u001b[1;32m 531\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m result\n\u001b[1;32m 533\u001b[0m protocol \u001b[38;5;241m=\u001b[39m req\u001b[38;5;241m.\u001b[39mtype\n\u001b[0;32m--> 534\u001b[0m result \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_call_chain\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mhandle_open\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mprotocol\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mprotocol\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m+\u001b[39;49m\n\u001b[1;32m 535\u001b[0m \u001b[43m \u001b[49m\u001b[38;5;124;43m'\u001b[39;49m\u001b[38;5;124;43m_open\u001b[39;49m\u001b[38;5;124;43m'\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mreq\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 536\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m result:\n\u001b[1;32m 537\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m result\n", + "File \u001b[0;32m~/opt/anaconda3/lib/python3.9/urllib/request.py:494\u001b[0m, in \u001b[0;36mOpenerDirector._call_chain\u001b[0;34m(self, chain, kind, meth_name, *args)\u001b[0m\n\u001b[1;32m 492\u001b[0m \u001b[38;5;28;01mfor\u001b[39;00m handler \u001b[38;5;129;01min\u001b[39;00m handlers:\n\u001b[1;32m 493\u001b[0m func \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mgetattr\u001b[39m(handler, meth_name)\n\u001b[0;32m--> 494\u001b[0m result \u001b[38;5;241m=\u001b[39m \u001b[43mfunc\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43margs\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 495\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m result \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m:\n\u001b[1;32m 496\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m result\n", + "File \u001b[0;32m~/opt/anaconda3/lib/python3.9/urllib/request.py:1389\u001b[0m, in \u001b[0;36mHTTPSHandler.https_open\u001b[0;34m(self, req)\u001b[0m\n\u001b[1;32m 1388\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21mhttps_open\u001b[39m(\u001b[38;5;28mself\u001b[39m, req):\n\u001b[0;32m-> 1389\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mdo_open\u001b[49m\u001b[43m(\u001b[49m\u001b[43mhttp\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mclient\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mHTTPSConnection\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mreq\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 1390\u001b[0m \u001b[43m \u001b[49m\u001b[43mcontext\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_context\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mcheck_hostname\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_check_hostname\u001b[49m\u001b[43m)\u001b[49m\n", + "File \u001b[0;32m~/opt/anaconda3/lib/python3.9/urllib/request.py:1350\u001b[0m, in \u001b[0;36mAbstractHTTPHandler.do_open\u001b[0;34m(self, http_class, req, **http_conn_args)\u001b[0m\n\u001b[1;32m 1348\u001b[0m \u001b[38;5;28;01mexcept\u001b[39;00m \u001b[38;5;167;01mOSError\u001b[39;00m \u001b[38;5;28;01mas\u001b[39;00m err: \u001b[38;5;66;03m# timeout error\u001b[39;00m\n\u001b[1;32m 1349\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m URLError(err)\n\u001b[0;32m-> 1350\u001b[0m r \u001b[38;5;241m=\u001b[39m \u001b[43mh\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mgetresponse\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 1351\u001b[0m \u001b[38;5;28;01mexcept\u001b[39;00m:\n\u001b[1;32m 1352\u001b[0m h\u001b[38;5;241m.\u001b[39mclose()\n", + "File \u001b[0;32m~/opt/anaconda3/lib/python3.9/http/client.py:1377\u001b[0m, in \u001b[0;36mHTTPConnection.getresponse\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 1375\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[1;32m 1376\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[0;32m-> 1377\u001b[0m \u001b[43mresponse\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mbegin\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 1378\u001b[0m \u001b[38;5;28;01mexcept\u001b[39;00m \u001b[38;5;167;01mConnectionError\u001b[39;00m:\n\u001b[1;32m 1379\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mclose()\n", + "File \u001b[0;32m~/opt/anaconda3/lib/python3.9/http/client.py:320\u001b[0m, in \u001b[0;36mHTTPResponse.begin\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 318\u001b[0m \u001b[38;5;66;03m# read until we get a non-100 response\u001b[39;00m\n\u001b[1;32m 319\u001b[0m \u001b[38;5;28;01mwhile\u001b[39;00m \u001b[38;5;28;01mTrue\u001b[39;00m:\n\u001b[0;32m--> 320\u001b[0m version, status, reason \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_read_status\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 321\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m status \u001b[38;5;241m!=\u001b[39m CONTINUE:\n\u001b[1;32m 322\u001b[0m \u001b[38;5;28;01mbreak\u001b[39;00m\n", + "File \u001b[0;32m~/opt/anaconda3/lib/python3.9/http/client.py:281\u001b[0m, in \u001b[0;36mHTTPResponse._read_status\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 280\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21m_read_status\u001b[39m(\u001b[38;5;28mself\u001b[39m):\n\u001b[0;32m--> 281\u001b[0m line \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mstr\u001b[39m(\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mfp\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mreadline\u001b[49m\u001b[43m(\u001b[49m\u001b[43m_MAXLINE\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m+\u001b[39;49m\u001b[43m \u001b[49m\u001b[38;5;241;43m1\u001b[39;49m\u001b[43m)\u001b[49m, \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124miso-8859-1\u001b[39m\u001b[38;5;124m\"\u001b[39m)\n\u001b[1;32m 282\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28mlen\u001b[39m(line) \u001b[38;5;241m>\u001b[39m _MAXLINE:\n\u001b[1;32m 283\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m LineTooLong(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mstatus line\u001b[39m\u001b[38;5;124m\"\u001b[39m)\n", + "File \u001b[0;32m~/opt/anaconda3/lib/python3.9/socket.py:704\u001b[0m, in \u001b[0;36mSocketIO.readinto\u001b[0;34m(self, b)\u001b[0m\n\u001b[1;32m 702\u001b[0m \u001b[38;5;28;01mwhile\u001b[39;00m \u001b[38;5;28;01mTrue\u001b[39;00m:\n\u001b[1;32m 703\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[0;32m--> 704\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_sock\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mrecv_into\u001b[49m\u001b[43m(\u001b[49m\u001b[43mb\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 705\u001b[0m \u001b[38;5;28;01mexcept\u001b[39;00m timeout:\n\u001b[1;32m 706\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_timeout_occurred \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;01mTrue\u001b[39;00m\n", + "File \u001b[0;32m~/opt/anaconda3/lib/python3.9/ssl.py:1241\u001b[0m, in \u001b[0;36mSSLSocket.recv_into\u001b[0;34m(self, buffer, nbytes, flags)\u001b[0m\n\u001b[1;32m 1237\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m flags \u001b[38;5;241m!=\u001b[39m \u001b[38;5;241m0\u001b[39m:\n\u001b[1;32m 1238\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m \u001b[38;5;167;01mValueError\u001b[39;00m(\n\u001b[1;32m 1239\u001b[0m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mnon-zero flags not allowed in calls to recv_into() on \u001b[39m\u001b[38;5;132;01m%s\u001b[39;00m\u001b[38;5;124m\"\u001b[39m \u001b[38;5;241m%\u001b[39m\n\u001b[1;32m 1240\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m\u001b[38;5;18m__class__\u001b[39m)\n\u001b[0;32m-> 1241\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mread\u001b[49m\u001b[43m(\u001b[49m\u001b[43mnbytes\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mbuffer\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 1242\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m:\n\u001b[1;32m 1243\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28msuper\u001b[39m()\u001b[38;5;241m.\u001b[39mrecv_into(buffer, nbytes, flags)\n", + "File \u001b[0;32m~/opt/anaconda3/lib/python3.9/ssl.py:1099\u001b[0m, in \u001b[0;36mSSLSocket.read\u001b[0;34m(self, len, buffer)\u001b[0m\n\u001b[1;32m 1097\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[1;32m 1098\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m buffer \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m:\n\u001b[0;32m-> 1099\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_sslobj\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mread\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;28;43mlen\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mbuffer\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 1100\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m:\n\u001b[1;32m 1101\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_sslobj\u001b[38;5;241m.\u001b[39mread(\u001b[38;5;28mlen\u001b[39m)\n", + "\u001b[0;31mKeyboardInterrupt\u001b[0m: " + ] + } + ], + "source": [ + "from urllib.request import urlopen\n", + "from bs4 import BeautifulSoup\n", + "import re\n", + "\n", + "pages = set()\n", + "def getLinks(pageUrl):\n", + " html = urlopen(f'http://en.wikipedia.org{pageUrl}')\n", + " bs = BeautifulSoup(html, 'html.parser')\n", + " for link in bs.find_all('a', href=re.compile('^(/wiki/)')):\n", + " if 'href' in link.attrs:\n", + " if link.attrs['href'] not in pages:\n", + " #We have encountered a new page\n", + " newPage = link.attrs['href']\n", + " print(newPage)\n", + " pages.add(newPage)\n", + " getLinks(newPage)\n", + "getLinks('')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Collecting Data Across an Entire Site" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "General-purpose programming language\n", + "

In computer software, a general-purpose programming language (GPL) is a programming language for building software in a wide variety of application domains. Conversely, a domain-specific programming language is used within a specific area. For example, SQL was specifically designed for querying relational databases.\n", + "

\n", + "/w/index.php?title=General-purpose_programming_language&action=edit\n", + "--------------------\n", + "/wiki/Main_Page\n", + "Main Page\n", + "

\"I Need You\" is a song recorded by American socialite Paris Hilton (pictured). Michael Green produced the song and co-wrote it with Hilton and Simon Wilcox. Heiress Records released it as a digital download on February 14, 2018. A version of the song leaked in 2010, but Hilton said she re-recorded portions of the vocals and instrumental as a dedication to her then-fiancé Chris Zylka. It is a doo-wop and pop ballad with holiday-related puns about love. Green based the ballad's style on 1950s music. Critics praised \"I Need You\", partially as a departure from Hilton's dance and EDM songs. The single peaked at number 32 on the Dance Club Songs chart, Hilton's fifth appearance on it. A music video, directed by Zylka, features Hilton wearing lingerie, posing in a bed covered with red rose petals, and popping out of a cake. It was inspired by Marilyn Monroe's performance of \"I Wanna Be Loved by You\" and Jessica Rabbit. Critics described the bed scene as an homage to the 1999 film American Beauty. (Full article...)\n", + "

\n", + "This page is missing something! Continuing.\n", + "--------------------\n", + "/wiki/Special:Search\n", + "Search\n", + "This page is missing something! Continuing.\n", + "--------------------\n", + "/wiki/Help:Introduction\n", + "Help:Introduction\n", + "

\n", + "

\n", + "This page is missing something! Continuing.\n", + "--------------------\n", + "/wiki/Special:MyTalk\n", + "User talk:72.93.95.254\n", + "

People on Wikipedia can use this talk page to post a public message about edits made from the IP address you are currently using.\n", + "

\n", + "/w/index.php?title=User_talk:72.93.95.254&action=edit\n", + "--------------------\n", + "/wiki/Special:MyContributions\n", + "User contributions for 72.93.95.254\n", + "This page is missing something! Continuing.\n", + "--------------------\n", + "/wiki/Wikipedia:Contents\n", + "Wikipedia:Contents\n", + "

\n", + "

\n", + "This page is missing something! Continuing.\n", + "--------------------\n", + "/wiki/Portal:Current_events\n", + "Portal:Current events\n", + "

Edit instructions\n", + "

\n", + "This page is missing something! Continuing.\n", + "--------------------\n", + "/wiki/Special:Random\n", + "1995 Missouri Valley Conference men's basketball tournament\n", + "

The 1995 Missouri Valley Conference men's basketball tournament was played after the conclusion of the 1994–1995 regular season at the Kiel Center in St. Louis, Missouri.\n", + "

\n", + "/w/index.php?title=1995_Missouri_Valley_Conference_men%27s_basketball_tournament&action=edit\n", + "--------------------\n", + "/wiki/Wikipedia:About\n", + "Wikipedia:About\n", + "

\n", + "

\n", + "This page is missing something! Continuing.\n", + "--------------------\n", + "/wiki/Help:Contents\n", + "Help:Contents\n", + "


\n", + "\n", + "

\n", + "This page is missing something! Continuing.\n", + "--------------------\n", + "/wiki/Wikipedia:Community_portal\n", + "Wikipedia:Community portal\n", + "

\n", + "

\n", + "This page is missing something! Continuing.\n", + "--------------------\n", + "/wiki/Special:RecentChanges\n", + "Recent changes\n", + "

This is a list of recent changes to Wikipedia.\n", + "

\n", + "This page is missing something! Continuing.\n", + "--------------------\n", + "/wiki/Wikipedia:File_upload_wizard\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Wikipedia:File upload wizard\n", + "

Thank you for offering to contribute an image or other media file for use on Wikipedia. This wizard will guide you through a questionnaire prompting you for the appropriate copyright and sourcing information for each file. Please ensure you understand copyright and the image use policy before proceeding.\n", + "

\n", + "This page is missing something! Continuing.\n", + "--------------------\n", + "/wiki/Special:WhatLinksHere/Wikipedia:File_upload_wizard\n", + "Pages that link to \"Wikipedia:File upload wizard\"\n", + "

The following pages link to Wikipedia:File upload wizard \n", + "

\n", + "This page is missing something! Continuing.\n", + "--------------------\n", + "/wiki/Wikipedia:File_Upload_Wizard\n" + ] + }, + { + "ename": "KeyboardInterrupt", + "evalue": "", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mKeyboardInterrupt\u001b[0m Traceback (most recent call last)", + "Input \u001b[0;32mIn [13]\u001b[0m, in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[1;32m 27\u001b[0m pages\u001b[38;5;241m.\u001b[39madd(newPage)\n\u001b[1;32m 28\u001b[0m getLinks(newPage)\n\u001b[0;32m---> 29\u001b[0m \u001b[43mgetLinks\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;124;43m'\u001b[39;49m\u001b[38;5;124;43m/wiki/General-purpose_programming_language\u001b[39;49m\u001b[38;5;124;43m'\u001b[39;49m\u001b[43m)\u001b[49m\n", + "Input \u001b[0;32mIn [13]\u001b[0m, in \u001b[0;36mgetLinks\u001b[0;34m(pageUrl)\u001b[0m\n\u001b[1;32m 26\u001b[0m \u001b[38;5;28mprint\u001b[39m(newPage)\n\u001b[1;32m 27\u001b[0m pages\u001b[38;5;241m.\u001b[39madd(newPage)\n\u001b[0;32m---> 28\u001b[0m \u001b[43mgetLinks\u001b[49m\u001b[43m(\u001b[49m\u001b[43mnewPage\u001b[49m\u001b[43m)\u001b[49m\n", + "Input \u001b[0;32mIn [13]\u001b[0m, in \u001b[0;36mgetLinks\u001b[0;34m(pageUrl)\u001b[0m\n\u001b[1;32m 26\u001b[0m \u001b[38;5;28mprint\u001b[39m(newPage)\n\u001b[1;32m 27\u001b[0m pages\u001b[38;5;241m.\u001b[39madd(newPage)\n\u001b[0;32m---> 28\u001b[0m \u001b[43mgetLinks\u001b[49m\u001b[43m(\u001b[49m\u001b[43mnewPage\u001b[49m\u001b[43m)\u001b[49m\n", + " \u001b[0;31m[... skipping similar frames: getLinks at line 28 (12 times)]\u001b[0m\n", + "Input \u001b[0;32mIn [13]\u001b[0m, in \u001b[0;36mgetLinks\u001b[0;34m(pageUrl)\u001b[0m\n\u001b[1;32m 26\u001b[0m \u001b[38;5;28mprint\u001b[39m(newPage)\n\u001b[1;32m 27\u001b[0m pages\u001b[38;5;241m.\u001b[39madd(newPage)\n\u001b[0;32m---> 28\u001b[0m \u001b[43mgetLinks\u001b[49m\u001b[43m(\u001b[49m\u001b[43mnewPage\u001b[49m\u001b[43m)\u001b[49m\n", + "Input \u001b[0;32mIn [13]\u001b[0m, in \u001b[0;36mgetLinks\u001b[0;34m(pageUrl)\u001b[0m\n\u001b[1;32m 6\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21mgetLinks\u001b[39m(pageUrl):\n\u001b[1;32m 7\u001b[0m \u001b[38;5;28;01mglobal\u001b[39;00m pages\n\u001b[0;32m----> 8\u001b[0m html \u001b[38;5;241m=\u001b[39m \u001b[43murlopen\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;124;43mf\u001b[39;49m\u001b[38;5;124;43m'\u001b[39;49m\u001b[38;5;124;43mhttp://en.wikipedia.org\u001b[39;49m\u001b[38;5;132;43;01m{\u001b[39;49;00m\u001b[43mpageUrl\u001b[49m\u001b[38;5;132;43;01m}\u001b[39;49;00m\u001b[38;5;124;43m'\u001b[39;49m\u001b[43m)\u001b[49m\n\u001b[1;32m 9\u001b[0m bs \u001b[38;5;241m=\u001b[39m BeautifulSoup(html, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mhtml.parser\u001b[39m\u001b[38;5;124m'\u001b[39m)\n\u001b[1;32m 10\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n", + "File \u001b[0;32m~/opt/anaconda3/lib/python3.9/urllib/request.py:214\u001b[0m, in \u001b[0;36murlopen\u001b[0;34m(url, data, timeout, cafile, capath, cadefault, context)\u001b[0m\n\u001b[1;32m 212\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m:\n\u001b[1;32m 213\u001b[0m opener \u001b[38;5;241m=\u001b[39m _opener\n\u001b[0;32m--> 214\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[43mopener\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mopen\u001b[49m\u001b[43m(\u001b[49m\u001b[43murl\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mdata\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mtimeout\u001b[49m\u001b[43m)\u001b[49m\n", + "File \u001b[0;32m~/opt/anaconda3/lib/python3.9/urllib/request.py:523\u001b[0m, in \u001b[0;36mOpenerDirector.open\u001b[0;34m(self, fullurl, data, timeout)\u001b[0m\n\u001b[1;32m 521\u001b[0m \u001b[38;5;28;01mfor\u001b[39;00m processor \u001b[38;5;129;01min\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mprocess_response\u001b[38;5;241m.\u001b[39mget(protocol, []):\n\u001b[1;32m 522\u001b[0m meth \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mgetattr\u001b[39m(processor, meth_name)\n\u001b[0;32m--> 523\u001b[0m response \u001b[38;5;241m=\u001b[39m \u001b[43mmeth\u001b[49m\u001b[43m(\u001b[49m\u001b[43mreq\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mresponse\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 525\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m response\n", + "File \u001b[0;32m~/opt/anaconda3/lib/python3.9/urllib/request.py:632\u001b[0m, in \u001b[0;36mHTTPErrorProcessor.http_response\u001b[0;34m(self, request, response)\u001b[0m\n\u001b[1;32m 629\u001b[0m \u001b[38;5;66;03m# According to RFC 2616, \"2xx\" code indicates that the client's\u001b[39;00m\n\u001b[1;32m 630\u001b[0m \u001b[38;5;66;03m# request was successfully received, understood, and accepted.\u001b[39;00m\n\u001b[1;32m 631\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m (\u001b[38;5;241m200\u001b[39m \u001b[38;5;241m<\u001b[39m\u001b[38;5;241m=\u001b[39m code \u001b[38;5;241m<\u001b[39m \u001b[38;5;241m300\u001b[39m):\n\u001b[0;32m--> 632\u001b[0m response \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mparent\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43merror\u001b[49m\u001b[43m(\u001b[49m\n\u001b[1;32m 633\u001b[0m \u001b[43m \u001b[49m\u001b[38;5;124;43m'\u001b[39;49m\u001b[38;5;124;43mhttp\u001b[39;49m\u001b[38;5;124;43m'\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mrequest\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mresponse\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mcode\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mmsg\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mhdrs\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 635\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m response\n", + "File \u001b[0;32m~/opt/anaconda3/lib/python3.9/urllib/request.py:555\u001b[0m, in \u001b[0;36mOpenerDirector.error\u001b[0;34m(self, proto, *args)\u001b[0m\n\u001b[1;32m 553\u001b[0m http_err \u001b[38;5;241m=\u001b[39m \u001b[38;5;241m0\u001b[39m\n\u001b[1;32m 554\u001b[0m args \u001b[38;5;241m=\u001b[39m (\u001b[38;5;28mdict\u001b[39m, proto, meth_name) \u001b[38;5;241m+\u001b[39m args\n\u001b[0;32m--> 555\u001b[0m result \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_call_chain\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43margs\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 556\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m result:\n\u001b[1;32m 557\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m result\n", + "File \u001b[0;32m~/opt/anaconda3/lib/python3.9/urllib/request.py:494\u001b[0m, in \u001b[0;36mOpenerDirector._call_chain\u001b[0;34m(self, chain, kind, meth_name, *args)\u001b[0m\n\u001b[1;32m 492\u001b[0m \u001b[38;5;28;01mfor\u001b[39;00m handler \u001b[38;5;129;01min\u001b[39;00m handlers:\n\u001b[1;32m 493\u001b[0m func \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mgetattr\u001b[39m(handler, meth_name)\n\u001b[0;32m--> 494\u001b[0m result \u001b[38;5;241m=\u001b[39m \u001b[43mfunc\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43margs\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 495\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m result \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m:\n\u001b[1;32m 496\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m result\n", + "File \u001b[0;32m~/opt/anaconda3/lib/python3.9/urllib/request.py:747\u001b[0m, in \u001b[0;36mHTTPRedirectHandler.http_error_302\u001b[0;34m(self, req, fp, code, msg, headers)\u001b[0m\n\u001b[1;32m 744\u001b[0m fp\u001b[38;5;241m.\u001b[39mread()\n\u001b[1;32m 745\u001b[0m fp\u001b[38;5;241m.\u001b[39mclose()\n\u001b[0;32m--> 747\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mparent\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mopen\u001b[49m\u001b[43m(\u001b[49m\u001b[43mnew\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mtimeout\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mreq\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mtimeout\u001b[49m\u001b[43m)\u001b[49m\n", + "File \u001b[0;32m~/opt/anaconda3/lib/python3.9/urllib/request.py:517\u001b[0m, in \u001b[0;36mOpenerDirector.open\u001b[0;34m(self, fullurl, data, timeout)\u001b[0m\n\u001b[1;32m 514\u001b[0m req \u001b[38;5;241m=\u001b[39m meth(req)\n\u001b[1;32m 516\u001b[0m sys\u001b[38;5;241m.\u001b[39maudit(\u001b[38;5;124m'\u001b[39m\u001b[38;5;124murllib.Request\u001b[39m\u001b[38;5;124m'\u001b[39m, req\u001b[38;5;241m.\u001b[39mfull_url, req\u001b[38;5;241m.\u001b[39mdata, req\u001b[38;5;241m.\u001b[39mheaders, req\u001b[38;5;241m.\u001b[39mget_method())\n\u001b[0;32m--> 517\u001b[0m response \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_open\u001b[49m\u001b[43m(\u001b[49m\u001b[43mreq\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mdata\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 519\u001b[0m \u001b[38;5;66;03m# post-process response\u001b[39;00m\n\u001b[1;32m 520\u001b[0m meth_name \u001b[38;5;241m=\u001b[39m protocol\u001b[38;5;241m+\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124m_response\u001b[39m\u001b[38;5;124m\"\u001b[39m\n", + "File \u001b[0;32m~/opt/anaconda3/lib/python3.9/urllib/request.py:534\u001b[0m, in \u001b[0;36mOpenerDirector._open\u001b[0;34m(self, req, data)\u001b[0m\n\u001b[1;32m 531\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m result\n\u001b[1;32m 533\u001b[0m protocol \u001b[38;5;241m=\u001b[39m req\u001b[38;5;241m.\u001b[39mtype\n\u001b[0;32m--> 534\u001b[0m result \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_call_chain\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mhandle_open\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mprotocol\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mprotocol\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m+\u001b[39;49m\n\u001b[1;32m 535\u001b[0m \u001b[43m \u001b[49m\u001b[38;5;124;43m'\u001b[39;49m\u001b[38;5;124;43m_open\u001b[39;49m\u001b[38;5;124;43m'\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mreq\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 536\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m result:\n\u001b[1;32m 537\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m result\n", + "File \u001b[0;32m~/opt/anaconda3/lib/python3.9/urllib/request.py:494\u001b[0m, in \u001b[0;36mOpenerDirector._call_chain\u001b[0;34m(self, chain, kind, meth_name, *args)\u001b[0m\n\u001b[1;32m 492\u001b[0m \u001b[38;5;28;01mfor\u001b[39;00m handler \u001b[38;5;129;01min\u001b[39;00m handlers:\n\u001b[1;32m 493\u001b[0m func \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mgetattr\u001b[39m(handler, meth_name)\n\u001b[0;32m--> 494\u001b[0m result \u001b[38;5;241m=\u001b[39m \u001b[43mfunc\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43margs\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 495\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m result \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m:\n\u001b[1;32m 496\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m result\n", + "File \u001b[0;32m~/opt/anaconda3/lib/python3.9/urllib/request.py:1389\u001b[0m, in \u001b[0;36mHTTPSHandler.https_open\u001b[0;34m(self, req)\u001b[0m\n\u001b[1;32m 1388\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21mhttps_open\u001b[39m(\u001b[38;5;28mself\u001b[39m, req):\n\u001b[0;32m-> 1389\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mdo_open\u001b[49m\u001b[43m(\u001b[49m\u001b[43mhttp\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mclient\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mHTTPSConnection\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mreq\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 1390\u001b[0m \u001b[43m \u001b[49m\u001b[43mcontext\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_context\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mcheck_hostname\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_check_hostname\u001b[49m\u001b[43m)\u001b[49m\n", + "File \u001b[0;32m~/opt/anaconda3/lib/python3.9/urllib/request.py:1346\u001b[0m, in \u001b[0;36mAbstractHTTPHandler.do_open\u001b[0;34m(self, http_class, req, **http_conn_args)\u001b[0m\n\u001b[1;32m 1344\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[1;32m 1345\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[0;32m-> 1346\u001b[0m \u001b[43mh\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mrequest\u001b[49m\u001b[43m(\u001b[49m\u001b[43mreq\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mget_method\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mreq\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mselector\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mreq\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mdata\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mheaders\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 1347\u001b[0m \u001b[43m \u001b[49m\u001b[43mencode_chunked\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mreq\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mhas_header\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;124;43m'\u001b[39;49m\u001b[38;5;124;43mTransfer-encoding\u001b[39;49m\u001b[38;5;124;43m'\u001b[39;49m\u001b[43m)\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 1348\u001b[0m \u001b[38;5;28;01mexcept\u001b[39;00m \u001b[38;5;167;01mOSError\u001b[39;00m \u001b[38;5;28;01mas\u001b[39;00m err: \u001b[38;5;66;03m# timeout error\u001b[39;00m\n\u001b[1;32m 1349\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m URLError(err)\n", + "File \u001b[0;32m~/opt/anaconda3/lib/python3.9/http/client.py:1285\u001b[0m, in \u001b[0;36mHTTPConnection.request\u001b[0;34m(self, method, url, body, headers, encode_chunked)\u001b[0m\n\u001b[1;32m 1282\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21mrequest\u001b[39m(\u001b[38;5;28mself\u001b[39m, method, url, body\u001b[38;5;241m=\u001b[39m\u001b[38;5;28;01mNone\u001b[39;00m, headers\u001b[38;5;241m=\u001b[39m{}, \u001b[38;5;241m*\u001b[39m,\n\u001b[1;32m 1283\u001b[0m encode_chunked\u001b[38;5;241m=\u001b[39m\u001b[38;5;28;01mFalse\u001b[39;00m):\n\u001b[1;32m 1284\u001b[0m \u001b[38;5;124;03m\"\"\"Send a complete request to the server.\"\"\"\u001b[39;00m\n\u001b[0;32m-> 1285\u001b[0m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_send_request\u001b[49m\u001b[43m(\u001b[49m\u001b[43mmethod\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43murl\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mbody\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mheaders\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mencode_chunked\u001b[49m\u001b[43m)\u001b[49m\n", + "File \u001b[0;32m~/opt/anaconda3/lib/python3.9/http/client.py:1331\u001b[0m, in \u001b[0;36mHTTPConnection._send_request\u001b[0;34m(self, method, url, body, headers, encode_chunked)\u001b[0m\n\u001b[1;32m 1327\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28misinstance\u001b[39m(body, \u001b[38;5;28mstr\u001b[39m):\n\u001b[1;32m 1328\u001b[0m \u001b[38;5;66;03m# RFC 2616 Section 3.7.1 says that text default has a\u001b[39;00m\n\u001b[1;32m 1329\u001b[0m \u001b[38;5;66;03m# default charset of iso-8859-1.\u001b[39;00m\n\u001b[1;32m 1330\u001b[0m body \u001b[38;5;241m=\u001b[39m _encode(body, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mbody\u001b[39m\u001b[38;5;124m'\u001b[39m)\n\u001b[0;32m-> 1331\u001b[0m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mendheaders\u001b[49m\u001b[43m(\u001b[49m\u001b[43mbody\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mencode_chunked\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mencode_chunked\u001b[49m\u001b[43m)\u001b[49m\n", + "File \u001b[0;32m~/opt/anaconda3/lib/python3.9/http/client.py:1280\u001b[0m, in \u001b[0;36mHTTPConnection.endheaders\u001b[0;34m(self, message_body, encode_chunked)\u001b[0m\n\u001b[1;32m 1278\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m:\n\u001b[1;32m 1279\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m CannotSendHeader()\n\u001b[0;32m-> 1280\u001b[0m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_send_output\u001b[49m\u001b[43m(\u001b[49m\u001b[43mmessage_body\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mencode_chunked\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mencode_chunked\u001b[49m\u001b[43m)\u001b[49m\n", + "File \u001b[0;32m~/opt/anaconda3/lib/python3.9/http/client.py:1040\u001b[0m, in \u001b[0;36mHTTPConnection._send_output\u001b[0;34m(self, message_body, encode_chunked)\u001b[0m\n\u001b[1;32m 1038\u001b[0m msg \u001b[38;5;241m=\u001b[39m \u001b[38;5;124mb\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;130;01m\\r\u001b[39;00m\u001b[38;5;130;01m\\n\u001b[39;00m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;241m.\u001b[39mjoin(\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_buffer)\n\u001b[1;32m 1039\u001b[0m \u001b[38;5;28;01mdel\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_buffer[:]\n\u001b[0;32m-> 1040\u001b[0m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43msend\u001b[49m\u001b[43m(\u001b[49m\u001b[43mmsg\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 1042\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m message_body \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m:\n\u001b[1;32m 1043\u001b[0m \n\u001b[1;32m 1044\u001b[0m \u001b[38;5;66;03m# create a consistent interface to message_body\u001b[39;00m\n\u001b[1;32m 1045\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28mhasattr\u001b[39m(message_body, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mread\u001b[39m\u001b[38;5;124m'\u001b[39m):\n\u001b[1;32m 1046\u001b[0m \u001b[38;5;66;03m# Let file-like take precedence over byte-like. This\u001b[39;00m\n\u001b[1;32m 1047\u001b[0m \u001b[38;5;66;03m# is needed to allow the current position of mmap'ed\u001b[39;00m\n\u001b[1;32m 1048\u001b[0m \u001b[38;5;66;03m# files to be taken into account.\u001b[39;00m\n", + "File \u001b[0;32m~/opt/anaconda3/lib/python3.9/http/client.py:980\u001b[0m, in \u001b[0;36mHTTPConnection.send\u001b[0;34m(self, data)\u001b[0m\n\u001b[1;32m 978\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39msock \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m:\n\u001b[1;32m 979\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mauto_open:\n\u001b[0;32m--> 980\u001b[0m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mconnect\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 981\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m:\n\u001b[1;32m 982\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m NotConnected()\n", + "File \u001b[0;32m~/opt/anaconda3/lib/python3.9/http/client.py:1447\u001b[0m, in \u001b[0;36mHTTPSConnection.connect\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 1444\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21mconnect\u001b[39m(\u001b[38;5;28mself\u001b[39m):\n\u001b[1;32m 1445\u001b[0m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mConnect to a host on a given (SSL) port.\u001b[39m\u001b[38;5;124m\"\u001b[39m\n\u001b[0;32m-> 1447\u001b[0m \u001b[38;5;28;43msuper\u001b[39;49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mconnect\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 1449\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_tunnel_host:\n\u001b[1;32m 1450\u001b[0m server_hostname \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_tunnel_host\n", + "File \u001b[0;32m~/opt/anaconda3/lib/python3.9/http/client.py:946\u001b[0m, in \u001b[0;36mHTTPConnection.connect\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 944\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21mconnect\u001b[39m(\u001b[38;5;28mself\u001b[39m):\n\u001b[1;32m 945\u001b[0m \u001b[38;5;124;03m\"\"\"Connect to the host and port specified in __init__.\"\"\"\u001b[39;00m\n\u001b[0;32m--> 946\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39msock \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_create_connection\u001b[49m\u001b[43m(\u001b[49m\n\u001b[1;32m 947\u001b[0m \u001b[43m \u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mhost\u001b[49m\u001b[43m,\u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mport\u001b[49m\u001b[43m)\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mtimeout\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43msource_address\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 948\u001b[0m \u001b[38;5;66;03m# Might fail in OSs that don't implement TCP_NODELAY\u001b[39;00m\n\u001b[1;32m 949\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n", + "File \u001b[0;32m~/opt/anaconda3/lib/python3.9/socket.py:832\u001b[0m, in \u001b[0;36mcreate_connection\u001b[0;34m(address, timeout, source_address)\u001b[0m\n\u001b[1;32m 830\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m source_address:\n\u001b[1;32m 831\u001b[0m sock\u001b[38;5;241m.\u001b[39mbind(source_address)\n\u001b[0;32m--> 832\u001b[0m \u001b[43msock\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mconnect\u001b[49m\u001b[43m(\u001b[49m\u001b[43msa\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 833\u001b[0m \u001b[38;5;66;03m# Break explicitly a reference cycle\u001b[39;00m\n\u001b[1;32m 834\u001b[0m err \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;01mNone\u001b[39;00m\n", + "\u001b[0;31mKeyboardInterrupt\u001b[0m: " + ] + } + ], + "source": [ + "from urllib.request import urlopen\n", + "from bs4 import BeautifulSoup\n", + "import re\n", + "\n", + "pages = set()\n", + "def getLinks(pageUrl):\n", + " html = urlopen(f'http://en.wikipedia.org{pageUrl}')\n", + " bs = BeautifulSoup(html, 'html.parser')\n", + " try:\n", + " print(bs.h1.get_text())\n", + " #mw-parser-output\n", + " bodyContent = bs.find('div', {'id':'bodyContent'}).find_all('p')\n", + " if len(bodyContent):\n", + " print(bodyContent[0])\n", + " print(bs.find(id='ca-edit').find('a').attrs['href'])\n", + " except AttributeError:\n", + " print('This page is missing something! Continuing.')\n", + " \n", + " for link in bs.find_all('a', href=re.compile('^(/wiki/)')):\n", + " if 'href' in link.attrs:\n", + " if link.attrs['href'] not in pages:\n", + " #We have encountered a new page\n", + " newPage = link.attrs['href']\n", + " print('-'*20)\n", + " print(newPage)\n", + " pages.add(newPage)\n", + " getLinks(newPage)\n", + "getLinks('/wiki/General-purpose_programming_language') " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Crawling across the Internet" + ] + }, + { + "cell_type": "code", + "execution_count": 37, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Random external link is: https://learning.oreilly.com/search/?query=author%3A%22Kelsey%20Hightower%22&extended_publisher_data=true&highlight=true&include_assessments=false&include_case_studies=true&include_courses=true&include_playlists=true&include_collections=true&include_notebooks=true&include_sandboxes=true&include_scenarios=true&is_academic_institution_account=false&source=user&sort=date_added&facet_json=true&json_facets=true&page=0&include_facets=false\n", + "Random external link is: https://play.google.com/store/apps/details?id=com.safariflow.queue\n", + "Random external link is: https://maps.google.com/?q=1005%20Gravenstein%20Highway%20North%0ASebastopol,%20CA%2095472%0AUSA\n" + ] + }, + { + "ename": "KeyboardInterrupt", + "evalue": "", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mKeyboardInterrupt\u001b[0m Traceback (most recent call last)", + "Input \u001b[0;32mIn [37]\u001b[0m, in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[1;32m 47\u001b[0m \u001b[38;5;28mprint\u001b[39m(\u001b[38;5;124mf\u001b[39m\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mRandom external link is: \u001b[39m\u001b[38;5;132;01m{\u001b[39;00mexternalLink\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m'\u001b[39m)\n\u001b[1;32m 48\u001b[0m followExternalOnly(externalLink)\n\u001b[0;32m---> 51\u001b[0m \u001b[43mfollowExternalOnly\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;124;43m'\u001b[39;49m\u001b[38;5;124;43mhttps://www.oreilly.com/\u001b[39;49m\u001b[38;5;124;43m'\u001b[39;49m\u001b[43m)\u001b[49m\n", + "Input \u001b[0;32mIn [37]\u001b[0m, in \u001b[0;36mfollowExternalOnly\u001b[0;34m(startingSite)\u001b[0m\n\u001b[1;32m 46\u001b[0m externalLink \u001b[38;5;241m=\u001b[39m getRandomExternalLink(startingSite)\n\u001b[1;32m 47\u001b[0m \u001b[38;5;28mprint\u001b[39m(\u001b[38;5;124mf\u001b[39m\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mRandom external link is: \u001b[39m\u001b[38;5;132;01m{\u001b[39;00mexternalLink\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m'\u001b[39m)\n\u001b[0;32m---> 48\u001b[0m \u001b[43mfollowExternalOnly\u001b[49m\u001b[43m(\u001b[49m\u001b[43mexternalLink\u001b[49m\u001b[43m)\u001b[49m\n", + "Input \u001b[0;32mIn [37]\u001b[0m, in \u001b[0;36mfollowExternalOnly\u001b[0;34m(startingSite)\u001b[0m\n\u001b[1;32m 46\u001b[0m externalLink \u001b[38;5;241m=\u001b[39m getRandomExternalLink(startingSite)\n\u001b[1;32m 47\u001b[0m \u001b[38;5;28mprint\u001b[39m(\u001b[38;5;124mf\u001b[39m\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mRandom external link is: \u001b[39m\u001b[38;5;132;01m{\u001b[39;00mexternalLink\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m'\u001b[39m)\n\u001b[0;32m---> 48\u001b[0m \u001b[43mfollowExternalOnly\u001b[49m\u001b[43m(\u001b[49m\u001b[43mexternalLink\u001b[49m\u001b[43m)\u001b[49m\n", + "Input \u001b[0;32mIn [37]\u001b[0m, in \u001b[0;36mfollowExternalOnly\u001b[0;34m(startingSite)\u001b[0m\n\u001b[1;32m 46\u001b[0m externalLink \u001b[38;5;241m=\u001b[39m getRandomExternalLink(startingSite)\n\u001b[1;32m 47\u001b[0m \u001b[38;5;28mprint\u001b[39m(\u001b[38;5;124mf\u001b[39m\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mRandom external link is: \u001b[39m\u001b[38;5;132;01m{\u001b[39;00mexternalLink\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m'\u001b[39m)\n\u001b[0;32m---> 48\u001b[0m \u001b[43mfollowExternalOnly\u001b[49m\u001b[43m(\u001b[49m\u001b[43mexternalLink\u001b[49m\u001b[43m)\u001b[49m\n", + "Input \u001b[0;32mIn [37]\u001b[0m, in \u001b[0;36mfollowExternalOnly\u001b[0;34m(startingSite)\u001b[0m\n\u001b[1;32m 45\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21mfollowExternalOnly\u001b[39m(startingSite):\n\u001b[0;32m---> 46\u001b[0m externalLink \u001b[38;5;241m=\u001b[39m \u001b[43mgetRandomExternalLink\u001b[49m\u001b[43m(\u001b[49m\u001b[43mstartingSite\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 47\u001b[0m \u001b[38;5;28mprint\u001b[39m(\u001b[38;5;124mf\u001b[39m\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mRandom external link is: \u001b[39m\u001b[38;5;132;01m{\u001b[39;00mexternalLink\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m'\u001b[39m)\n\u001b[1;32m 48\u001b[0m followExternalOnly(externalLink)\n", + "Input \u001b[0;32mIn [37]\u001b[0m, in \u001b[0;36mgetRandomExternalLink\u001b[0;34m(startingPage)\u001b[0m\n\u001b[1;32m 35\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21mgetRandomExternalLink\u001b[39m(startingPage):\n\u001b[0;32m---> 36\u001b[0m bs \u001b[38;5;241m=\u001b[39m BeautifulSoup(\u001b[43murlopen\u001b[49m\u001b[43m(\u001b[49m\u001b[43mstartingPage\u001b[49m\u001b[43m)\u001b[49m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mhtml.parser\u001b[39m\u001b[38;5;124m'\u001b[39m)\n\u001b[1;32m 37\u001b[0m externalLinks \u001b[38;5;241m=\u001b[39m getExternalLinks(bs, startingPage)\n\u001b[1;32m 38\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;28mlen\u001b[39m(externalLinks):\n", + "File \u001b[0;32m~/opt/anaconda3/lib/python3.9/urllib/request.py:214\u001b[0m, in \u001b[0;36murlopen\u001b[0;34m(url, data, timeout, cafile, capath, cadefault, context)\u001b[0m\n\u001b[1;32m 212\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m:\n\u001b[1;32m 213\u001b[0m opener \u001b[38;5;241m=\u001b[39m _opener\n\u001b[0;32m--> 214\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[43mopener\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mopen\u001b[49m\u001b[43m(\u001b[49m\u001b[43murl\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mdata\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mtimeout\u001b[49m\u001b[43m)\u001b[49m\n", + "File \u001b[0;32m~/opt/anaconda3/lib/python3.9/urllib/request.py:517\u001b[0m, in \u001b[0;36mOpenerDirector.open\u001b[0;34m(self, fullurl, data, timeout)\u001b[0m\n\u001b[1;32m 514\u001b[0m req \u001b[38;5;241m=\u001b[39m meth(req)\n\u001b[1;32m 516\u001b[0m sys\u001b[38;5;241m.\u001b[39maudit(\u001b[38;5;124m'\u001b[39m\u001b[38;5;124murllib.Request\u001b[39m\u001b[38;5;124m'\u001b[39m, req\u001b[38;5;241m.\u001b[39mfull_url, req\u001b[38;5;241m.\u001b[39mdata, req\u001b[38;5;241m.\u001b[39mheaders, req\u001b[38;5;241m.\u001b[39mget_method())\n\u001b[0;32m--> 517\u001b[0m response \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_open\u001b[49m\u001b[43m(\u001b[49m\u001b[43mreq\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mdata\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 519\u001b[0m \u001b[38;5;66;03m# post-process response\u001b[39;00m\n\u001b[1;32m 520\u001b[0m meth_name \u001b[38;5;241m=\u001b[39m protocol\u001b[38;5;241m+\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124m_response\u001b[39m\u001b[38;5;124m\"\u001b[39m\n", + "File \u001b[0;32m~/opt/anaconda3/lib/python3.9/urllib/request.py:534\u001b[0m, in \u001b[0;36mOpenerDirector._open\u001b[0;34m(self, req, data)\u001b[0m\n\u001b[1;32m 531\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m result\n\u001b[1;32m 533\u001b[0m protocol \u001b[38;5;241m=\u001b[39m req\u001b[38;5;241m.\u001b[39mtype\n\u001b[0;32m--> 534\u001b[0m result \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_call_chain\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mhandle_open\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mprotocol\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mprotocol\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m+\u001b[39;49m\n\u001b[1;32m 535\u001b[0m \u001b[43m \u001b[49m\u001b[38;5;124;43m'\u001b[39;49m\u001b[38;5;124;43m_open\u001b[39;49m\u001b[38;5;124;43m'\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mreq\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 536\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m result:\n\u001b[1;32m 537\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m result\n", + "File \u001b[0;32m~/opt/anaconda3/lib/python3.9/urllib/request.py:494\u001b[0m, in \u001b[0;36mOpenerDirector._call_chain\u001b[0;34m(self, chain, kind, meth_name, *args)\u001b[0m\n\u001b[1;32m 492\u001b[0m \u001b[38;5;28;01mfor\u001b[39;00m handler \u001b[38;5;129;01min\u001b[39;00m handlers:\n\u001b[1;32m 493\u001b[0m func \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mgetattr\u001b[39m(handler, meth_name)\n\u001b[0;32m--> 494\u001b[0m result \u001b[38;5;241m=\u001b[39m \u001b[43mfunc\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43margs\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 495\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m result \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m:\n\u001b[1;32m 496\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m result\n", + "File \u001b[0;32m~/opt/anaconda3/lib/python3.9/urllib/request.py:1389\u001b[0m, in \u001b[0;36mHTTPSHandler.https_open\u001b[0;34m(self, req)\u001b[0m\n\u001b[1;32m 1388\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21mhttps_open\u001b[39m(\u001b[38;5;28mself\u001b[39m, req):\n\u001b[0;32m-> 1389\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mdo_open\u001b[49m\u001b[43m(\u001b[49m\u001b[43mhttp\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mclient\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mHTTPSConnection\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mreq\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 1390\u001b[0m \u001b[43m \u001b[49m\u001b[43mcontext\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_context\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mcheck_hostname\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_check_hostname\u001b[49m\u001b[43m)\u001b[49m\n", + "File \u001b[0;32m~/opt/anaconda3/lib/python3.9/urllib/request.py:1350\u001b[0m, in \u001b[0;36mAbstractHTTPHandler.do_open\u001b[0;34m(self, http_class, req, **http_conn_args)\u001b[0m\n\u001b[1;32m 1348\u001b[0m \u001b[38;5;28;01mexcept\u001b[39;00m \u001b[38;5;167;01mOSError\u001b[39;00m \u001b[38;5;28;01mas\u001b[39;00m err: \u001b[38;5;66;03m# timeout error\u001b[39;00m\n\u001b[1;32m 1349\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m URLError(err)\n\u001b[0;32m-> 1350\u001b[0m r \u001b[38;5;241m=\u001b[39m \u001b[43mh\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mgetresponse\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 1351\u001b[0m \u001b[38;5;28;01mexcept\u001b[39;00m:\n\u001b[1;32m 1352\u001b[0m h\u001b[38;5;241m.\u001b[39mclose()\n", + "File \u001b[0;32m~/opt/anaconda3/lib/python3.9/http/client.py:1377\u001b[0m, in \u001b[0;36mHTTPConnection.getresponse\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 1375\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[1;32m 1376\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[0;32m-> 1377\u001b[0m \u001b[43mresponse\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mbegin\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 1378\u001b[0m \u001b[38;5;28;01mexcept\u001b[39;00m \u001b[38;5;167;01mConnectionError\u001b[39;00m:\n\u001b[1;32m 1379\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mclose()\n", + "File \u001b[0;32m~/opt/anaconda3/lib/python3.9/http/client.py:320\u001b[0m, in \u001b[0;36mHTTPResponse.begin\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 318\u001b[0m \u001b[38;5;66;03m# read until we get a non-100 response\u001b[39;00m\n\u001b[1;32m 319\u001b[0m \u001b[38;5;28;01mwhile\u001b[39;00m \u001b[38;5;28;01mTrue\u001b[39;00m:\n\u001b[0;32m--> 320\u001b[0m version, status, reason \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_read_status\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 321\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m status \u001b[38;5;241m!=\u001b[39m CONTINUE:\n\u001b[1;32m 322\u001b[0m \u001b[38;5;28;01mbreak\u001b[39;00m\n", + "File \u001b[0;32m~/opt/anaconda3/lib/python3.9/http/client.py:281\u001b[0m, in \u001b[0;36mHTTPResponse._read_status\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 280\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21m_read_status\u001b[39m(\u001b[38;5;28mself\u001b[39m):\n\u001b[0;32m--> 281\u001b[0m line \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mstr\u001b[39m(\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mfp\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mreadline\u001b[49m\u001b[43m(\u001b[49m\u001b[43m_MAXLINE\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m+\u001b[39;49m\u001b[43m \u001b[49m\u001b[38;5;241;43m1\u001b[39;49m\u001b[43m)\u001b[49m, \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124miso-8859-1\u001b[39m\u001b[38;5;124m\"\u001b[39m)\n\u001b[1;32m 282\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28mlen\u001b[39m(line) \u001b[38;5;241m>\u001b[39m _MAXLINE:\n\u001b[1;32m 283\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m LineTooLong(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mstatus line\u001b[39m\u001b[38;5;124m\"\u001b[39m)\n", + "File \u001b[0;32m~/opt/anaconda3/lib/python3.9/socket.py:704\u001b[0m, in \u001b[0;36mSocketIO.readinto\u001b[0;34m(self, b)\u001b[0m\n\u001b[1;32m 702\u001b[0m \u001b[38;5;28;01mwhile\u001b[39;00m \u001b[38;5;28;01mTrue\u001b[39;00m:\n\u001b[1;32m 703\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[0;32m--> 704\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_sock\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mrecv_into\u001b[49m\u001b[43m(\u001b[49m\u001b[43mb\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 705\u001b[0m \u001b[38;5;28;01mexcept\u001b[39;00m timeout:\n\u001b[1;32m 706\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_timeout_occurred \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;01mTrue\u001b[39;00m\n", + "File \u001b[0;32m~/opt/anaconda3/lib/python3.9/ssl.py:1241\u001b[0m, in \u001b[0;36mSSLSocket.recv_into\u001b[0;34m(self, buffer, nbytes, flags)\u001b[0m\n\u001b[1;32m 1237\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m flags \u001b[38;5;241m!=\u001b[39m \u001b[38;5;241m0\u001b[39m:\n\u001b[1;32m 1238\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m \u001b[38;5;167;01mValueError\u001b[39;00m(\n\u001b[1;32m 1239\u001b[0m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mnon-zero flags not allowed in calls to recv_into() on \u001b[39m\u001b[38;5;132;01m%s\u001b[39;00m\u001b[38;5;124m\"\u001b[39m \u001b[38;5;241m%\u001b[39m\n\u001b[1;32m 1240\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m\u001b[38;5;18m__class__\u001b[39m)\n\u001b[0;32m-> 1241\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mread\u001b[49m\u001b[43m(\u001b[49m\u001b[43mnbytes\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mbuffer\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 1242\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m:\n\u001b[1;32m 1243\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28msuper\u001b[39m()\u001b[38;5;241m.\u001b[39mrecv_into(buffer, nbytes, flags)\n", + "File \u001b[0;32m~/opt/anaconda3/lib/python3.9/ssl.py:1099\u001b[0m, in \u001b[0;36mSSLSocket.read\u001b[0;34m(self, len, buffer)\u001b[0m\n\u001b[1;32m 1097\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[1;32m 1098\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m buffer \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m:\n\u001b[0;32m-> 1099\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_sslobj\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mread\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;28;43mlen\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mbuffer\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 1100\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m:\n\u001b[1;32m 1101\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_sslobj\u001b[38;5;241m.\u001b[39mread(\u001b[38;5;28mlen\u001b[39m)\n", + "\u001b[0;31mKeyboardInterrupt\u001b[0m: " + ] + } + ], + "source": [ + "from urllib.request import urlopen\n", + "from urllib.parse import urlparse\n", + "from bs4 import BeautifulSoup\n", + "import re\n", + "import datetime\n", + "import random\n", + "\n", + "#Retrieves a list of all Internal links found on a page\n", + "def getInternalLinks(bs, url):\n", + " netloc = urlparse(url).netloc\n", + " scheme = urlparse(url).scheme\n", + " internalLinks = set()\n", + " for link in bs.find_all('a'):\n", + " if not link.attrs.get('href'):\n", + " continue\n", + " parsed = urlparse(link.attrs['href'])\n", + " if parsed.netloc == '':\n", + " internalLinks.add(f'{scheme}://{netloc}/{link.attrs[\"href\"].strip(\"/\")}')\n", + " elif parsed.netloc == netloc:\n", + " internalLinks.add(link.attrs['href'])\n", + " return list(internalLinks)\n", + " \n", + "#Retrieves a list of all external links found on a page\n", + "def getExternalLinks(bs, url):\n", + " netloc = urlparse(url).netloc\n", + " externalLinks = set()\n", + " for link in bs.find_all('a'):\n", + " if not link.attrs.get('href'):\n", + " continue\n", + " parsed = urlparse(link.attrs['href'])\n", + " if parsed.netloc != '' and parsed.netloc != netloc:\n", + " externalLinks.add(link.attrs['href'])\n", + " return list(externalLinks)\n", + "\n", + "def getRandomExternalLink(startingPage):\n", + " bs = BeautifulSoup(urlopen(startingPage), 'html.parser')\n", + " externalLinks = getExternalLinks(bs, startingPage)\n", + " if not len(externalLinks):\n", + " print('No external links, looking around the site for one')\n", + " internalLinks = getInternalLinks(bs, startingPage)\n", + " return getRandomExternalLink(random.choice(internalLinks))\n", + " else:\n", + " return random.choice(externalLinks)\n", + " \n", + "def followExternalOnly(startingSite):\n", + " externalLink = getRandomExternalLink(startingSite)\n", + " print(f'Random external link is: {externalLink}')\n", + " followExternalOnly(externalLink)\n", + "\n", + "\n", + "followExternalOnly('https://www.oreilly.com/')\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Collect all External Links from a Site" + ] + }, + { + "cell_type": "code", + "execution_count": 38, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "https://itunes.apple.com/us/app/safari-to-go/id881697395\n", + "https://learning.oreilly.com/search/?query=author%3A%22Sari%20Greene%22&extended_publisher_data=true&highlight=true&include_assessments=false&include_case_studies=true&include_courses=true&include_playlists=true&include_collections=true&include_notebooks=true&include_sandboxes=true&include_scenarios=true&is_academic_institution_account=false&source=user&sort=date_added&facet_json=true&json_facets=true&page=0&include_facets=false\n", + "https://twitter.com/oreillymedia\n", + "https://www.linkedin.com/company/oreilly-media\n", + "https://oreilly.hk/\n", + "https://oreilly.id/\n", + "https://learning.oreilly.com/search/?query=author%3A%22Neal%20Ford%22&extended_publisher_data=true&highlight=true&include_assessments=false&include_case_studies=true&include_courses=true&include_playlists=true&include_collections=true&include_notebooks=true&include_sandboxes=true&include_scenarios=true&is_academic_institution_account=false&source=user&sort=date_added&facet_json=true&json_facets=true&page=0&include_facets=false\n", + "https://learning.oreilly.com/search/?query=author%3A%22Kelsey%20Hightower%22&extended_publisher_data=true&highlight=true&include_assessments=false&include_case_studies=true&include_courses=true&include_playlists=true&include_collections=true&include_notebooks=true&include_sandboxes=true&include_scenarios=true&is_academic_institution_account=false&source=user&sort=date_added&facet_json=true&json_facets=true&page=0&include_facets=false\n", + "https://play.google.com/store/apps/details?id=com.safariflow.queue\n", + "https://www.youtube.com/user/OreillyMedia\n", + "https://learning.oreilly.com/search/?query=author%3A%22Bruno%20Gon%C3%A7alves%22&extended_publisher_data=true&highlight=true&include_assessments=false&include_case_studies=true&include_courses=true&include_playlists=true&include_collections=true&include_notebooks=true&include_sandboxes=true&include_scenarios=true&is_academic_institution_account=false&source=user&sort=date_added&facet_json=true&json_facets=true&page=0&include_facets=false\n", + "https://www.oreilly.co.jp/index.shtml\n", + "https://channelstore.roku.com/details/c8a2d0096693eb9455f6ac165003ee06/oreilly\n", + "https://learning.oreilly.com/search/?query=author%3A%22Arianne%20Dee%22&extended_publisher_data=true&highlight=true&include_assessments=false&include_case_studies=true&include_courses=true&include_playlists=true&include_collections=true&include_notebooks=true&include_sandboxes=true&include_scenarios=true&is_academic_institution_account=false&source=suggestion&sort=date_added&facet_json=true&json_facets=true&page=0&include_facets=false\n", + "https://www.amazon.com/OReilly-Media-Inc/dp/B087YYHL5C/ref=sr_1_2?dchild=1&keywords=oreilly&qid=1604964116&s=mobile-apps&sr=1-2\n", + "https://learning.oreilly.com/start-trial/\n", + "https://oreillylearning.in/\n", + "https://learning.oreilly.com/search/?query=author%3A%22Ken%20Kousen%22&extended_publisher_data=true&highlight=true&include_assessments=false&include_case_studies=true&include_courses=true&include_playlists=true&include_collections=true&include_notebooks=true&include_sandboxes=true&include_scenarios=true&is_academic_institution_account=false&source=user&sort=date_added&facet_json=true&json_facets=true&page=0&include_facets=false\n", + "http://twitter.com/timoreilly\n", + "http://www.oreillynet.com/pub/au/27\n", + "http://oreilly.com/oreilly/tim_bio.csp\n", + "http://www.web2expo.com/\n", + "http://toccon.com\n", + "http://www.oreillynet.com/pub/au/1242\n", + "http://missingmanuals.com\n", + "http://twitter.com/sarahm\n", + "http://tim.oreilly.com\n", + "http://shop.oreilly.com/product/0636920022336.do\n", + "https://www.applytosupply.digitalmarketplace.service.gov.uk/g-cloud/services/460643971613582\n", + "https://www.gsaelibrary.gsa.gov/ElibMain/contractorInfo.do?contractNumber=47QTCA19D0022&contractorName=O%27REILLY+MEDIA%2C+INC&executeQuery=YES\n", + "https://cdn.oreillystatic.com/pdf/OReilly_Capabilities_Statement.pdf\n", + "https://apps.apple.com/app/apple-store/id881697395?pt=206943&ct=oreilly-apps-page&mt=8\n", + "https://chrome.google.com/webstore/detail/oreilly/honddgdnobfcbldlmimekbmphjnehbbb?hl=en\n", + "https://learning.oreilly.com/signup/\n", + "https://learning.oreilly.com/interactive/\n", + "https://www.amazon.com/OReilly-Media-Inc/dp/B087YYHL5C/ref=sr_1_2?dchild=1&keywords=oreilly&qid=1604964116&s=mobile-apps&sr=1-2\n", + "https://members.oreilly.com/\n", + "https://www.facebook.com/OReilly\n", + "https://learning.oreilly.com/register/\n", + "https://oreillymedia.zoom.us/webinar/register/WN_BcLRmUGUTVWGRa-LvcxqHg\n", + "https://oreillymedia.zoom.us/webinar/register/WN_MBTdQH-PTtyRLIuRa7eHYA\n", + "https://oreillymedia.zoom.us/webinar/register/WN_hOecnEtERj-d5rMmw2feOQ\n", + "https://oreillymedia.zoom.us/webinar/register/WN_sT5HhW89R4aaRTaKaMYxGQ\n", + "https://oreillymedia.zoom.us/webinar/register/WN_9-GFj1gbQ66hZCenhisXKA\n", + "https://learning.oreilly.com/team-setup/\n", + "https://oreillymedia.zoom.us/webinar/register/WN_h8bJNEN4TsC54uo0o-zu4g\n", + "https://learning.oreilly.com/live-events/first-steps-in-machine-learning-misfit-models-and-fixes/0636920087879/0636920087877/\n", + "https://learning.oreilly.com/live-events/explainable-machine-learning-models-with-interactivity/0636920061943/0636920085001/\n", + "https://learning.oreilly.com/live-events/ai-superstream-designing-machine-learning-systems/0636920086385/0636920086384/\n", + "https://learning.oreilly.com/live-events/machine-learning-interviews-in-3-weeks/0636920080937/0636920085271/\n", + "https://learning.oreilly.com/scenarios/regularization-in-regression/9781492091424/\n", + "https://learning.oreilly.com/live-events/scaling-machine-learning-in-three-weeks/0636920081997/0636920087562/\n", + "https://learning.oreilly.com/scenarios/serve-machine-learning/9781492080725/\n", + "https://learning.oreilly.com/attend/\n", + "https://learning.oreilly.com/scenarios/multiple-linear-regression/9781492091400/\n", + "https://learning.oreilly.com/library/view/introduction-to-machine/9781449369880/\n", + "https://learning.oreilly.com/search/?query=&extended_publisher_data=true&formats=book&highlight=true&include_assessments=false&include_case_studies=true&include_courses=true&include_orioles=true&include_playlists=true&is_academic_institution_account=false&publishers=O%27Reilly%20Media%2C%20Inc.&topics=Machine%20Learning&sort=popularity\n", + "https://learning.oreilly.com/library/view/hands-on-machine-learning/9781098125967/\n", + "https://learning.oreilly.com/live-events/machine-learning-algorithms-for-trading-bootcamp/0636920082023/0636920088138/\n", + "https://learning.oreilly.com/scenarios/challenge-make-a/9781098113933/\n", + "https://learning.oreilly.com/library/view/hands-on-machine-learning/9781492032632/\n", + "https://learning.oreilly.com/scenarios/deploy-machine-learning/9781492080732/\n", + "https://learning.oreilly.com/library/view/designing-machine-learning/9781098107956/\n", + "https://learning.oreilly.com/scenarios/machine-learning-with/9781098142582/\n", + "http://archive.oreilly.com/oreillyschool/privacy-policy/\n", + "https://www.privacyshield.gov/article?id=ANNEX-I-introduction\n", + "https://www.privacyshield.gov\n", + "https://www.edoeb.admin.ch/edoeb/en/home/the-fdpic/task.html\n", + "https://www.safaribooksonline.com/membership-agreement/\n", + "https://ico.org.uk/\n", + "https://www.safaribooksonline.com/static/legal/SafariPrivacyPolicy_v3.3_13June2017.a4d9478408f5.pdf\n", + "http://archive.oreilly.com/oreillyschool/privacy-policy-version2/\n", + "https://ec.europa.eu/info/law/law-topic/data-protection/data-transfers-outside-eu/model-contracts-transfer-personal-data-third-countries_en\n", + "https://ec.europa.eu/info/law/law-topic/data-protection/data-transfers-outside-eu/adequacy-protection-personal-data-non-eu-countries_en\n", + "https://edpo.com/gdpr-data-request/\n", + "https://www.safaribooksonline.com/terms/\n", + "https://tools.google.com/dlpage/gaoptout/\n", + "https://learning.oreilly.com/membership-agreement/\n", + "https://cdn.oreillystatic.com/pdf/SafariPrivacyPolicy_v3.4_23October2017.pdf\n", + "https://www.privacyshield.gov/article?id=How-to-Submit-a-Complaint\n", + "https://edpb.europa.eu/about-edpb/about-edpb/members_en\n", + "//privacy.truste.com/privacy-seal/validation?rid=b1a9b95e-186e-4498-aaa0-2a7b98c52af0\n", + "https://ec.europa.eu/info/law/law-topic/data-protection/data-transfers-outside-eu/eu-us-privacy-shield_en\n", + "https://feedback-form.truste.com/watchdog/request\n", + "//privacy.truste.com/privacy-seal/validation?rid=0bdead8c-1d9c-429d-ae6a-5ee92e15a471\n", + "https://smetrics.oreilly.com/optout.html?optout=1&confirm_change=1\n", + "http://www.oreilly.com.cn/\n", + "http://www.oreilly.co.jp\n" + ] + }, + { + "ename": "HTTPError", + "evalue": "HTTP Error 404: Not Found", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mHTTPError\u001b[0m Traceback (most recent call last)", + "Input \u001b[0;32mIn [38]\u001b[0m, in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[1;32m 18\u001b[0m getAllExternalLinks(link)\n\u001b[1;32m 21\u001b[0m allIntLinks\u001b[38;5;241m.\u001b[39mappend(\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mhttps://oreilly.com\u001b[39m\u001b[38;5;124m'\u001b[39m)\n\u001b[0;32m---> 22\u001b[0m \u001b[43mgetAllExternalLinks\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;124;43m'\u001b[39;49m\u001b[38;5;124;43mhttps://www.oreilly.com/\u001b[39;49m\u001b[38;5;124;43m'\u001b[39;49m\u001b[43m)\u001b[49m\n", + "Input \u001b[0;32mIn [38]\u001b[0m, in \u001b[0;36mgetAllExternalLinks\u001b[0;34m(url)\u001b[0m\n\u001b[1;32m 16\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m link \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;129;01min\u001b[39;00m allIntLinks:\n\u001b[1;32m 17\u001b[0m allIntLinks\u001b[38;5;241m.\u001b[39mappend(link)\n\u001b[0;32m---> 18\u001b[0m \u001b[43mgetAllExternalLinks\u001b[49m\u001b[43m(\u001b[49m\u001b[43mlink\u001b[49m\u001b[43m)\u001b[49m\n", + "Input \u001b[0;32mIn [38]\u001b[0m, in \u001b[0;36mgetAllExternalLinks\u001b[0;34m(url)\u001b[0m\n\u001b[1;32m 16\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m link \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;129;01min\u001b[39;00m allIntLinks:\n\u001b[1;32m 17\u001b[0m allIntLinks\u001b[38;5;241m.\u001b[39mappend(link)\n\u001b[0;32m---> 18\u001b[0m \u001b[43mgetAllExternalLinks\u001b[49m\u001b[43m(\u001b[49m\u001b[43mlink\u001b[49m\u001b[43m)\u001b[49m\n", + " \u001b[0;31m[... skipping similar frames: getAllExternalLinks at line 18 (20 times)]\u001b[0m\n", + "Input \u001b[0;32mIn [38]\u001b[0m, in \u001b[0;36mgetAllExternalLinks\u001b[0;34m(url)\u001b[0m\n\u001b[1;32m 16\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m link \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;129;01min\u001b[39;00m allIntLinks:\n\u001b[1;32m 17\u001b[0m allIntLinks\u001b[38;5;241m.\u001b[39mappend(link)\n\u001b[0;32m---> 18\u001b[0m \u001b[43mgetAllExternalLinks\u001b[49m\u001b[43m(\u001b[49m\u001b[43mlink\u001b[49m\u001b[43m)\u001b[49m\n", + "Input \u001b[0;32mIn [38]\u001b[0m, in \u001b[0;36mgetAllExternalLinks\u001b[0;34m(url)\u001b[0m\n\u001b[1;32m 6\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21mgetAllExternalLinks\u001b[39m(url):\n\u001b[0;32m----> 7\u001b[0m bs \u001b[38;5;241m=\u001b[39m BeautifulSoup(\u001b[43murlopen\u001b[49m\u001b[43m(\u001b[49m\u001b[43murl\u001b[49m\u001b[43m)\u001b[49m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mhtml.parser\u001b[39m\u001b[38;5;124m'\u001b[39m)\n\u001b[1;32m 8\u001b[0m internalLinks \u001b[38;5;241m=\u001b[39m getInternalLinks(bs, url)\n\u001b[1;32m 9\u001b[0m externalLinks \u001b[38;5;241m=\u001b[39m getExternalLinks(bs, url)\n", + "File \u001b[0;32m~/opt/anaconda3/lib/python3.9/urllib/request.py:214\u001b[0m, in \u001b[0;36murlopen\u001b[0;34m(url, data, timeout, cafile, capath, cadefault, context)\u001b[0m\n\u001b[1;32m 212\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m:\n\u001b[1;32m 213\u001b[0m opener \u001b[38;5;241m=\u001b[39m _opener\n\u001b[0;32m--> 214\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[43mopener\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mopen\u001b[49m\u001b[43m(\u001b[49m\u001b[43murl\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mdata\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mtimeout\u001b[49m\u001b[43m)\u001b[49m\n", + "File \u001b[0;32m~/opt/anaconda3/lib/python3.9/urllib/request.py:523\u001b[0m, in \u001b[0;36mOpenerDirector.open\u001b[0;34m(self, fullurl, data, timeout)\u001b[0m\n\u001b[1;32m 521\u001b[0m \u001b[38;5;28;01mfor\u001b[39;00m processor \u001b[38;5;129;01min\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mprocess_response\u001b[38;5;241m.\u001b[39mget(protocol, []):\n\u001b[1;32m 522\u001b[0m meth \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mgetattr\u001b[39m(processor, meth_name)\n\u001b[0;32m--> 523\u001b[0m response \u001b[38;5;241m=\u001b[39m \u001b[43mmeth\u001b[49m\u001b[43m(\u001b[49m\u001b[43mreq\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mresponse\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 525\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m response\n", + "File \u001b[0;32m~/opt/anaconda3/lib/python3.9/urllib/request.py:632\u001b[0m, in \u001b[0;36mHTTPErrorProcessor.http_response\u001b[0;34m(self, request, response)\u001b[0m\n\u001b[1;32m 629\u001b[0m \u001b[38;5;66;03m# According to RFC 2616, \"2xx\" code indicates that the client's\u001b[39;00m\n\u001b[1;32m 630\u001b[0m \u001b[38;5;66;03m# request was successfully received, understood, and accepted.\u001b[39;00m\n\u001b[1;32m 631\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m (\u001b[38;5;241m200\u001b[39m \u001b[38;5;241m<\u001b[39m\u001b[38;5;241m=\u001b[39m code \u001b[38;5;241m<\u001b[39m \u001b[38;5;241m300\u001b[39m):\n\u001b[0;32m--> 632\u001b[0m response \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mparent\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43merror\u001b[49m\u001b[43m(\u001b[49m\n\u001b[1;32m 633\u001b[0m \u001b[43m \u001b[49m\u001b[38;5;124;43m'\u001b[39;49m\u001b[38;5;124;43mhttp\u001b[39;49m\u001b[38;5;124;43m'\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mrequest\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mresponse\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mcode\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mmsg\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mhdrs\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 635\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m response\n", + "File \u001b[0;32m~/opt/anaconda3/lib/python3.9/urllib/request.py:555\u001b[0m, in \u001b[0;36mOpenerDirector.error\u001b[0;34m(self, proto, *args)\u001b[0m\n\u001b[1;32m 553\u001b[0m http_err \u001b[38;5;241m=\u001b[39m \u001b[38;5;241m0\u001b[39m\n\u001b[1;32m 554\u001b[0m args \u001b[38;5;241m=\u001b[39m (\u001b[38;5;28mdict\u001b[39m, proto, meth_name) \u001b[38;5;241m+\u001b[39m args\n\u001b[0;32m--> 555\u001b[0m result \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_call_chain\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43margs\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 556\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m result:\n\u001b[1;32m 557\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m result\n", + "File \u001b[0;32m~/opt/anaconda3/lib/python3.9/urllib/request.py:494\u001b[0m, in \u001b[0;36mOpenerDirector._call_chain\u001b[0;34m(self, chain, kind, meth_name, *args)\u001b[0m\n\u001b[1;32m 492\u001b[0m \u001b[38;5;28;01mfor\u001b[39;00m handler \u001b[38;5;129;01min\u001b[39;00m handlers:\n\u001b[1;32m 493\u001b[0m func \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mgetattr\u001b[39m(handler, meth_name)\n\u001b[0;32m--> 494\u001b[0m result \u001b[38;5;241m=\u001b[39m \u001b[43mfunc\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43margs\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 495\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m result \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m:\n\u001b[1;32m 496\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m result\n", + "File \u001b[0;32m~/opt/anaconda3/lib/python3.9/urllib/request.py:747\u001b[0m, in \u001b[0;36mHTTPRedirectHandler.http_error_302\u001b[0;34m(self, req, fp, code, msg, headers)\u001b[0m\n\u001b[1;32m 744\u001b[0m fp\u001b[38;5;241m.\u001b[39mread()\n\u001b[1;32m 745\u001b[0m fp\u001b[38;5;241m.\u001b[39mclose()\n\u001b[0;32m--> 747\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mparent\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mopen\u001b[49m\u001b[43m(\u001b[49m\u001b[43mnew\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mtimeout\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mreq\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mtimeout\u001b[49m\u001b[43m)\u001b[49m\n", + "File \u001b[0;32m~/opt/anaconda3/lib/python3.9/urllib/request.py:523\u001b[0m, in \u001b[0;36mOpenerDirector.open\u001b[0;34m(self, fullurl, data, timeout)\u001b[0m\n\u001b[1;32m 521\u001b[0m \u001b[38;5;28;01mfor\u001b[39;00m processor \u001b[38;5;129;01min\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mprocess_response\u001b[38;5;241m.\u001b[39mget(protocol, []):\n\u001b[1;32m 522\u001b[0m meth \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mgetattr\u001b[39m(processor, meth_name)\n\u001b[0;32m--> 523\u001b[0m response \u001b[38;5;241m=\u001b[39m \u001b[43mmeth\u001b[49m\u001b[43m(\u001b[49m\u001b[43mreq\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mresponse\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 525\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m response\n", + "File \u001b[0;32m~/opt/anaconda3/lib/python3.9/urllib/request.py:632\u001b[0m, in \u001b[0;36mHTTPErrorProcessor.http_response\u001b[0;34m(self, request, response)\u001b[0m\n\u001b[1;32m 629\u001b[0m \u001b[38;5;66;03m# According to RFC 2616, \"2xx\" code indicates that the client's\u001b[39;00m\n\u001b[1;32m 630\u001b[0m \u001b[38;5;66;03m# request was successfully received, understood, and accepted.\u001b[39;00m\n\u001b[1;32m 631\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m (\u001b[38;5;241m200\u001b[39m \u001b[38;5;241m<\u001b[39m\u001b[38;5;241m=\u001b[39m code \u001b[38;5;241m<\u001b[39m \u001b[38;5;241m300\u001b[39m):\n\u001b[0;32m--> 632\u001b[0m response \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mparent\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43merror\u001b[49m\u001b[43m(\u001b[49m\n\u001b[1;32m 633\u001b[0m \u001b[43m \u001b[49m\u001b[38;5;124;43m'\u001b[39;49m\u001b[38;5;124;43mhttp\u001b[39;49m\u001b[38;5;124;43m'\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mrequest\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mresponse\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mcode\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mmsg\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mhdrs\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 635\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m response\n", + "File \u001b[0;32m~/opt/anaconda3/lib/python3.9/urllib/request.py:561\u001b[0m, in \u001b[0;36mOpenerDirector.error\u001b[0;34m(self, proto, *args)\u001b[0m\n\u001b[1;32m 559\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m http_err:\n\u001b[1;32m 560\u001b[0m args \u001b[38;5;241m=\u001b[39m (\u001b[38;5;28mdict\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mdefault\u001b[39m\u001b[38;5;124m'\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mhttp_error_default\u001b[39m\u001b[38;5;124m'\u001b[39m) \u001b[38;5;241m+\u001b[39m orig_args\n\u001b[0;32m--> 561\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_call_chain\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43margs\u001b[49m\u001b[43m)\u001b[49m\n", + "File \u001b[0;32m~/opt/anaconda3/lib/python3.9/urllib/request.py:494\u001b[0m, in \u001b[0;36mOpenerDirector._call_chain\u001b[0;34m(self, chain, kind, meth_name, *args)\u001b[0m\n\u001b[1;32m 492\u001b[0m \u001b[38;5;28;01mfor\u001b[39;00m handler \u001b[38;5;129;01min\u001b[39;00m handlers:\n\u001b[1;32m 493\u001b[0m func \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mgetattr\u001b[39m(handler, meth_name)\n\u001b[0;32m--> 494\u001b[0m result \u001b[38;5;241m=\u001b[39m \u001b[43mfunc\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43margs\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 495\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m result \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m:\n\u001b[1;32m 496\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m result\n", + "File \u001b[0;32m~/opt/anaconda3/lib/python3.9/urllib/request.py:641\u001b[0m, in \u001b[0;36mHTTPDefaultErrorHandler.http_error_default\u001b[0;34m(self, req, fp, code, msg, hdrs)\u001b[0m\n\u001b[1;32m 640\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21mhttp_error_default\u001b[39m(\u001b[38;5;28mself\u001b[39m, req, fp, code, msg, hdrs):\n\u001b[0;32m--> 641\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m HTTPError(req\u001b[38;5;241m.\u001b[39mfull_url, code, msg, hdrs, fp)\n", + "\u001b[0;31mHTTPError\u001b[0m: HTTP Error 404: Not Found" + ] + } + ], + "source": [ + "# Collects a list of all external URLs found on the site\n", + "allExtLinks = []\n", + "allIntLinks = []\n", + "\n", + "\n", + "def getAllExternalLinks(url):\n", + " bs = BeautifulSoup(urlopen(url), 'html.parser')\n", + " internalLinks = getInternalLinks(bs, url)\n", + " externalLinks = getExternalLinks(bs, url)\n", + " for link in externalLinks:\n", + " if link not in allExtLinks:\n", + " allExtLinks.append(link)\n", + " print(link)\n", + "\n", + " for link in internalLinks:\n", + " if link not in allIntLinks:\n", + " allIntLinks.append(link)\n", + " getAllExternalLinks(link)\n", + "\n", + "\n", + "allIntLinks.append('https://oreilly.com')\n", + "getAllExternalLinks('https://www.oreilly.com/')" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.9.12" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/Chapter07_CrawlingModels.ipynb b/Chapter07_CrawlingModels.ipynb new file mode 100644 index 0000000..b28d345 --- /dev/null +++ b/Chapter07_CrawlingModels.ipynb @@ -0,0 +1,3158 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Dealing with different website layouts" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "TITLE: Robotic rulemaking\n", + "URL: https://www.brookings.edu/research/robotic-rulemaking/\n", + "BODY: \n", + "As it has rocketed to some 100 million active users in record time, ChatGPT is provoking conversations about the role of artificial intelligence (AI) in drafting written materials such as student exams, news articles, legal pleadings, poems, and more. The chatbot, developed by OpenAI, relies on a large language model (LLM) to respond to user-submitted requests, or “prompts” as they are known. It is an example of generative AI, a technology that upends our understanding of who creates written materials and how they do it, challenging what it means to create, analyze, and express ideas.\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "Bridget C. E. Dooling\n", + "\n", + "\t\t\t\t\tResearch Professor - The George Washington University Regulatory Studies Center \n", + "\n", + " Twitter\n", + "BridgetDooling\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "Mark Febrizio\n", + "\n", + "\t\t\t\t\tSenior Policy Analyst - The George Washington University Regulatory Studies Center \n", + "\n", + " Twitter\n", + "markfebrizio\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "Rulemaking by federal agencies is a very text-intensive process, both in terms of writing the rules themselves, which express not only the law but also the agencies’ rationales for their regulatory choices, as well as public comments which arrive almost exclusively in the form of text. How might generative AI intersect with rulemaking? In this essay, we work through some use cases for generative AI in the rulemaking process, for better and for worse, both for the public and federal agencies.\n", + "Public comments and generative AI\n", + "For the public, generative AI might help people structure their information and views into public comments that have a better chance of influencing agency decisions. While agencies usually permit commenters to send in whatever text they want, more sophisticated comments tend to follow a professional format that contains substantive and sometimes highly technical information. A fairly constant worry with respect to public participation in rulemaking is that special interests overtake diffuse interests due to collective action problems. While readers of this series likely follow rulemaking closely, regulation remains esoteric for most people. Even for those aware of the rulemaking process, figuring out the style and content of a comment might seem out of reach. (Brookings published a helpful guide to commenting, by the way.) Scholars and policymakers disagree about the extent to which the public’s awareness of and participation in rulemaking is a problem that needs to be remedied, but at a minimum a tool that helps interested people compose a persuasive comment could be useful.\n", + "Someone could, for example, prompt a generative AI tool to summarize that person’s position on a proposal and knit it into a comment that looks organized and clear. The prompt could be something like: “Write a comment to the Consumer Product Safety Commission telling them that I support their proposed rule on fireworks.” Even better, the prompt could guide the AI to emphasize specific concepts or reasons for the person’s views: “Write a comment to the Consumer Product Safety Commission telling them that I support their proposed rule on fireworks because fireworks can be traumatic for little kids and pets.” In our experience, ChatGPT can readily create convincing public submissions based on such straightforward prompts. For one Department of Labor proposal, simply requesting that the chatbot produce several paragraphs objecting to the rule resulted in text comparable to a mass comment campaign submission, and the content was quickly inverted by asking for a supportive comment.\n", + "Generative AI also takes the possibility of “mass” and “malattributed” comments to the next level. Mass comments are “identical and near-duplicate comments” that are often “sponsored by organizations and submitted by group members and supporters to government agencies in response to proposed rules.” A team of researchers from The George Washington University and the Israel Democracy Institute wrote about the political reasons why groups organize these campaigns, likening them to the kind of lobbying activity that happens in Congress and other venues. Whether these mass comment campaigns actually influence agencies is the subject of some debate. The laws governing regulatory decisions generally do not call upon, or allow, the agencies to factor in public opinion; rather, agencies seek substantive and technical information from public comments. And the number of comments received is not a reliable proxy for general public opinion anyway because such submissions are not made by a representative sample of the population—even setting aside the possibility that some of the comments were not sent by real people, a possibility that generative AI increases. So most observers (with Professor Nina Mendelson a notable exception) have been dismissive of the role of mass comment campaigns in agency rulemaking decisions. Yet mass comment campaigns persist, for reasons that political scientists like Devin Judge-Lord are exploring in ongoing research. The reality is that generative AI arrives at a time when mass comment campaigns are a regular, if not frequent, component of rulemaking, so we can expect the two to intersect.\n", + "\n", + "\n", + "Related Content\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " \n", + "\n", + "\n", + "\n", + "Technology & Innovation\n", + "Exploring the impact of language models on cognitive automation\n", + "\n", + "Anton Korinek\n", + "Monday, March 6, 2023\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " \n", + "\n", + "\n", + "\n", + "Climate Change\n", + "Debt-for-adaptation swaps\n", + "\n", + "Chetan Hebbale and Johannes Urpelainen\n", + "Tuesday, March 21, 2023\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " \n", + "\n", + "\n", + "\n", + "Courts & Law\n", + "Judicial deference and the future of regulation\n", + "\n", + "James Kunhardt and Anne Joseph O’Connell\n", + "Thursday, August 18, 2022\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "Combining generative AI with mass comment campaigns could lead to mass comments that look less duplicative in nature, as the same idea could be expressed in many different ways with some support from an AI tool. Agencies currently have access to language processing tools that allow them to group comments based on the similarity of their text. This helps agencies meet their burden under the law to consider and respond to all significant comments. More varied comments will strain the current set of tools and likely lead to increased agency resources dedicated to comment analysis. That could further slow the already cumbersome rulemaking process, as agencies figure out how to cope with large and overwhelming volumes of differentiated and ostensibly substantive comments. For advocates looking to gum up the works, this could be an appealing tactic.\n", + "In response, and following the approach they took in response to mass comment campaigns, agencies might be tempted to spend resources to develop tools to help identify which comments were generated by an AI rather than a human. Such tools are already in production for other purposes. While these tools are not “fully reliable,” they could alert agency staff that a comment they’re reviewing is likely generated by AI. It is not immediately clear how an agency would make use of such information, however, because the Administrative Procedure Act only requires that the commenter is a “person,” and a person could have submitted the comment, no matter who or what drafted it. Perhaps the alert could encourage agency staff to read the comment with some skepticism, but it’s not obvious at this point that such an approach would be reasoned or fair.\n", + "Generative AI can be viewed as part of an ongoing tit-for-tat for public participation, with commenters deploying more sophisticated commenting methods and agencies attempting to respond with their own technology. Such an arms race is a waste of resources, though, if the end result is a large body of comments that neither represent the views of the general public nor offer novel and reliable information to the agency. More comments do not necessarily lead to better regulatory choices. The “arms race” frame is also troubling as applied to public input in a process intended to welcome it. Whether the type of participation that generative AI facilitates is the right kind of participation is part of what makes it such a provocative development.\n", + "If generative AI adds to the richness of mass comments, that could be an improvement over many mass comment campaigns which tend to express up-or-down sentiment. Personal stories woven into comments can sometimes shed light on problems that agencies did not anticipate—the question is whether generative AI is poised to actually elucidate such richness or simply fake it. If regulators end up altering rules because of convincing but made-up “facts,” that would certainly be a step backward. In our experience, agency staff work hard to substantiate the information provided to them by public comments rather than accepting them at face value, but it is not implausible to imagine such safeguards breaking down. In that case, the potential for review in the courts offers an important backstop.\n", + "Generative AI arrives at a time when mass comment campaigns are a regular, if not frequent, component of rulemaking, so we can expect the two to intersect.\n", + "Taking this analysis one step further, Professor Michael Herz coined the term “malattributed comments” after the spectacle that accompanied the Federal Communication Commission’s (FCC) Net Neutrality rulemaking, in which millions of public comments claimed to be from people who either did not exist or who did not actually send comments. In a study commissioned by the Administrative Conference of the United States (ACUS), researchers (including one of us) concluded that the risks of an agency being misled by malattributed comments are lower than might be expected because of the way agencies evaluate comments.1 Generative AI disturbs this equilibrium because it may help bad actors generate comments that look more persuasive, i.e., comments that seemingly present evidence beyond mere sentiment.\n", + "By reducing the costs of producing “malattributed” comments, generative AI could lead to a pooling equilibrium—to borrow a concept from game theory that is often applied to insurance markets—where agencies can no longer meaningfully distinguish between valid and malicious comments. Agencies could then be inclined to assume all comments might be “fake” and discount their relevance, weakening public commenting as an avenue for meaningful public input and the formulation of improved policies and, ultimately, making people worse off. That need not come to pass, however. The Administrative Procedure Act does not permit agencies to entirely dismiss all public comments in this manner, nor does it categorically prohibit the public from using AI to aid in comment creation. Agencies also have a track record of collaborating to address novel issues, such as mass comment campaigns, via the eRulemaking program, and we expect that work to continue. Overall, as commenters reach for ways to use generative AI, agencies would be wise to lean on this existing governance structure as they consider potential responses.\n", + "Agency workflows and generative AI\n", + "Generative AI also offers some promises and perils for internal agency processes. Beyond malattributed comments, one worry is that flooding rulemaking dockets with a virtually unlimited supply of unique comments would incapacitate government systems and prevent other users from submitting public input. While these fears are alarming, the rulemaking system is fairly robust to a torrent of bot-generated comments. More specifically, Regulations.gov—the site that a majority of agencies use to accept public submissions on rules—already implements several techniques to manage large volumes of comments.\n", + "First, Regulations.gov employs a CAPTCHA system developed by Google to distinguish between humans and bots. This prevents a computer program from automating comment submissions through the web interface, meaning that bad actors who want to spam the system would need to do so manually. In fact, one paper warning against the risk of bot submissions to rulemakings suggested this very solution. Second, the Regulations.gov Application Programming Interface (API) provides a way for organizations to submit multiple comments in an automated fashion—within certain limits. The API, which is managed by the General Services Administration (GSA), requires adherence to terms of service and uses a key to authenticate post submissions. Accordingly, GSA can also revoke access when it detects malicious activity. Further, submissions are constrained by a limit of 50 per minute or 500 per hour (whichever is reached first). This throttling inhibits malicious users from overwhelming the system before being identified and could be made stricter if necessary. While these safeguards are not foolproof, they provide meaningful protections against incapacitating the comment system with AI-generated text.\n", + "Another worry is that the government could be misled by AI-generated comments. The text from generative AI can be very convincing, even if it is entirely untrue. This is because LLMs draw from voluminous writings by humans. They are essentially extremely big text prediction models that select the next word, phrase, or punctuation according to sample texts that they have been trained on (i.e., the texts fed to the model as examples for it to learn from); they are not a lookup table or encyclopedia. ChatGPT is not connected to the internet and its training data stop in 2021, but it can still generate plausible analyses of current articles based on information gleaned from prompts and its training data. Even LLMs connected to the internet, such as Bing AI, have a tendency to make up or “hallucinate” information, especially in contexts lacking training data.2 Relatedly, they offer more tailored answers in areas where they have received more training. In this context, public comments on rules are available on Regulations.gov going back many years, making them a rich source of training data.\n", + "Given the likely pace of development for generative AI, the federal government needs to be prepared to adapt to this intriguing new set of tools.\n", + "Given this backdrop, someone could prompt a generative AI tool to write a comment that supports or criticizes a rule based on fake scientific data or other technical information.3 Interestingly, the public can already submit fake information to an agency.4 It is currently the agency’s responsibility to wade through public comments and discern which information is or is not reliable; this is part of why it can take agencies months or years to finalize rules once they have been proposed. While the rulemaking process can be criticized for its length, taking time to discern the weight of public comments helps protect against challenges to the rulemaking process’ integrity, whether they come from generative AI or other sources. The possibility raised above of a large number of authentic, substantive, and varied comments does give us some pause because such comments would not violate the terms of service and could therefore spike agency workloads. It may be a challenge to balance the policy goal of a notice-and-comment process that is open to all with the reality of limited agency resources to consider so much information. This could be an area ripe for enhancing executive branch and congressional oversight of agency rulemaking.\n", + "Generative AI could also help agency staff summarize and respond to comments received on the rules. A strength of LLMs is their ability to process and compose information based on their training data; regulators could use this to their advantage, especially if agencies had access to a model trained on public comments or texts related to the content of a rulemaking. Further, LLMs are most useful when combined with expertise because the information produced by the AI can be verified and supplemented by those with subject matter or “topic” knowledge. For example, an LLM could help regulators summarize comments on the proposal, classify feedback based on predefined categories, and cluster information based on similarities in content, style, or other features. Then, agency staff could provide a rough outline of responses to comments and prompt a generative AI to format them in the style of a rulemaking published in the Federal Register. This workflow would incorporate a more sophisticated set of tools than what agencies currently use to analyze and respond to public comments. While we are not in a position to say whether the federal government will actually invest in generative AI technologies, the capability is there. One pathway would be to fine-tune existing models like OpenAI’s GPT 3.5 (the basis for ChatGPT) for the rulemaking context.5 This could entail an agency customizing an existing LLM to better apply to its rulemaking activity by conducting additional training with relevant texts. For instance, the Environmental Protection Agency (EPA) could fine-tune GPT 3.5 for use by its Office of Air and Radiation by feeding it examples of its responses to comments from prior rules and topic-specific materials on the Clean Air Act.\n", + "Using AI to support agency workflows, including analyzing public comments, sits in tension with current notions of who is supposed to do the “thinking work” of the government. One of us has written about this recently (with co-author Professor Rachel A. Potter) in the context of regulations that are drafted by government contractors, exploring whether drafting rules should be considered an “inherently governmental function” that is off-limits to contractors. While contractors can serve as vital supplements to agency capacity or expertise, overreliance on contractors can introduce conflicts of interest and other risks into the process. Generative AI offers an interesting twist on this concern. Might generative AI be more conflicted or biased than an outside contractor, less conflicted or biased, or might it simply present entirely different considerations? Because an LLM’s training data inform the way it generates text, using it to draft regulatory material could therefore reinforce the status quo in some circumstances and, in others, help create new connections in human knowledge. Of course, existing approaches to crafting rules are not without their own biases, nor are other tools (e.g., Google searches) that have become commonplace in policymaking. We are only at the beginning of working through these issues as they apply to this essential form of executive branch lawmaking.\n", + "We limited this essay to generative AI, one of many technologies that intersect with rulemaking comments. Other tools could, for example, help alert people to rules that interest them and help the government catch errors and omissions in their analyses. The technology of rulemaking evolves along with the rest of society, and regulators should consider how to take advantage of the upside of tools like generative AI while minimizing their risks. One thing is sure: Given the likely pace of development for generative AI, the federal government needs to be prepared to adapt to this intriguing new set of tools.\n", + "\n", + "body: \n", + "\n", + "\n", + "\n", + "New York\n", + "CNN\n", + "  — \n", + " \n", + "\n", + "\n", + " Twitter’s traditional bird icon was booted and replaced with an image of a Shiba Inu, an apparent nod to dogecoin, the joke cryptocurrency that CEO Elon Musk is being sued over. \n", + " \n", + "\n", + " Musk addressed the change Monday afternoon, tweeting, “as promised” above an image of a year-old conversation in which another user suggested that Musk “just buy Twitter” and “change the bird logo to a doge.” \n", + " \n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "CNN/Adobe Stock\n", + "\n", + "\n", + "\n", + "\n", + "Elon Musk's Twitter promised a purge of blue check marks. Instead he singled out one account\n", + "\n", + "\n", + "\n", + "\n", + " The doge logo appeared on the site two days after Musk asked a judge to throw out a $258 billion racketeering lawsuit accusing him of running a pyramid scheme to support the dogecoin, according to Reuters.\n", + "\n", + "\n", + " Lawyers for Musk and Tesla called the lawsuit by dogecoin investors a “fanciful work of fiction” over Musk’s “innocuous and often silly tweets.”\n", + " \n", + "\n", + " It wasn’t clear whether the logo change was permanent. Musk has been known to use Twitter to troll both his fans and his critics. \n", + " \n", + "\n", + " The price of dogecoin, which is typically volatile, was up more than 20% over the past 24 hours, to about 9 cents. It was trading just under 8 cents Monday morning.\n", + " \n", + "\n", + "Dogecoin was created December 6, 2013, by a pair of software engineers — as a joke. The name is a nod to the “doge” meme that became popular a decade ago. Its Shiba Inu mascot mimicks that meme: a dog surrounded by a bunch of Comic Sans text in broken English.\n", + " \n", + "\n", + "TITLE: \n", + " Dogecoin jumps after Elon Musk replaces Twitter bird with Shiba Inu\n", + " \n", + "URL: https://www.cnn.com/2023/04/03/investing/dogecoin-elon-musk-twitter/index.html\n", + "BODY: \n", + "\n", + "\n", + "New York\n", + "CNN\n", + "  — \n", + " \n", + "\n", + "\n", + " Twitter’s traditional bird icon was booted and replaced with an image of a Shiba Inu, an apparent nod to dogecoin, the joke cryptocurrency that CEO Elon Musk is being sued over. \n", + " \n", + "\n", + " Musk addressed the change Monday afternoon, tweeting, “as promised” above an image of a year-old conversation in which another user suggested that Musk “just buy Twitter” and “change the bird logo to a doge.” \n", + " \n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "CNN/Adobe Stock\n", + "\n", + "\n", + "\n", + "\n", + "Elon Musk's Twitter promised a purge of blue check marks. Instead he singled out one account\n", + "\n", + "\n", + "\n", + "\n", + " The doge logo appeared on the site two days after Musk asked a judge to throw out a $258 billion racketeering lawsuit accusing him of running a pyramid scheme to support the dogecoin, according to Reuters.\n", + "\n", + "\n", + " Lawyers for Musk and Tesla called the lawsuit by dogecoin investors a “fanciful work of fiction” over Musk’s “innocuous and often silly tweets.”\n", + " \n", + "\n", + " It wasn’t clear whether the logo change was permanent. Musk has been known to use Twitter to troll both his fans and his critics. \n", + " \n", + "\n", + " The price of dogecoin, which is typically volatile, was up more than 20% over the past 24 hours, to about 9 cents. It was trading just under 8 cents Monday morning.\n", + " \n", + "\n", + "Dogecoin was created December 6, 2013, by a pair of software engineers — as a joke. The name is a nod to the “doge” meme that became popular a decade ago. Its Shiba Inu mascot mimicks that meme: a dog surrounded by a bunch of Comic Sans text in broken English.\n", + " \n", + "\n" + ] + } + ], + "source": [ + "from bs4 import BeautifulSoup\n", + "from urllib.request import urlopen\n", + "\n", + "class Content:\n", + " def __init__(self, url, title, body):\n", + " self.url = url\n", + " self.title = title\n", + " self.body = body\n", + " \n", + " def print(self):\n", + " print(f'TITLE: {self.title}')\n", + " print(f'URL: {self.url}')\n", + " print(f'BODY:\\n {self.body}')\n", + "\n", + "def scrapeCNN(url):\n", + " bs = BeautifulSoup(urlopen(url))\n", + " title = bs.find('h1').text\n", + " body = bs.find('div', {'class': 'article__content'}).text\n", + " print('body: ')\n", + " print(body)\n", + " return Content(url, title, body)\n", + "\n", + "def scrapeBrookings(url):\n", + " bs = BeautifulSoup(urlopen(url))\n", + " title = bs.find('h1').text\n", + " body = bs.find('div', {'class': 'post-body'}).text\n", + " return Content(url, title, body)\n", + "\n", + "url = 'https://www.brookings.edu/research/robotic-rulemaking/'\n", + "content = scrapeBrookings(url)\n", + "content.print()\n", + "\n", + "url = 'https://www.cnn.com/2023/04/03/investing/dogecoin-elon-musk-twitter/index.html'\n", + "content = scrapeCNN(url)\n", + "content.print()\n" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": {}, + "outputs": [], + "source": [ + "class Content:\n", + " \"\"\"\n", + " Common base class for all articles/pages\n", + " \"\"\"\n", + " def __init__(self, url, title, body):\n", + " self.url = url\n", + " self.title = title\n", + " self.body = body\n", + "\n", + " def print(self):\n", + " \"\"\"\n", + " Flexible printing function controls output\n", + " \"\"\"\n", + " print(f'URL: {self.url}')\n", + " print(f'TITLE: {self.title}')\n", + " print(f'BODY:\\n{self.body}')\n", + "\n", + "class Website:\n", + " \"\"\" \n", + " Contains information about website structure\n", + " \"\"\"\n", + " def __init__(self, name, url, titleTag, bodyTag):\n", + " self.name = name\n", + " self.url = url\n", + " self.titleTag = titleTag\n", + " self.bodyTag = bodyTag" + ] + }, + { + "cell_type": "code", + "execution_count": 39, + "metadata": {}, + "outputs": [], + "source": [ + "from bs4 import BeautifulSoup\n", + "\n", + "\n", + "class Crawler:\n", + " def getPage(url):\n", + " try:\n", + " html = urlopen(url)\n", + " except Exception:\n", + " return None\n", + " return BeautifulSoup(html, 'html.parser')\n", + "\n", + " def safeGet(bs, selector):\n", + " \"\"\"\n", + " Utilty function used to get a content string from a Beautiful Soup\n", + " object and a selector. Returns an empty string if no object\n", + " is found for the given selector\n", + " \"\"\"\n", + " selectedElems = bs.select(selector)\n", + " if selectedElems is not None and len(selectedElems) > 0:\n", + " return '\\n'.join([elem.get_text() for elem in selectedElems])\n", + " return ''\n", + "\n", + " def getContent(website, path):\n", + " \"\"\"\n", + " Extract content from a given page URL\n", + " \"\"\"\n", + " url = website.url+path\n", + " bs = Crawler.getPage(url)\n", + " if bs is not None:\n", + " title = Crawler.safeGet(bs, website.titleTag)\n", + " body = Crawler.safeGet(bs, website.bodyTag)\n", + " return Content(url, title, body)\n", + " return Content(url, '', '')" + ] + }, + { + "cell_type": "code", + "execution_count": 42, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "URL: https://www.oreilly.com/library/view/web-scraping-with/9781491910283\n", + "TITLE: Web Scraping with Python\n", + "BODY:\n", + "\n", + "\n", + "Book description\n", + "Learn web scraping and crawling techniques to access unlimited data from any web source in any format. With this practical guide, you’ll learn how to use Python scripts and web APIs to gather and process data from thousands—or even millions—of web pages at once.Ideal for programmers, security professionals, and web administrators familiar with Python, this book not only teaches basic web scraping mechanics, but also delves into more advanced topics, such as analyzing raw data or using scrapers for frontend website testing. Code samples are available to help you understand the concepts in practice.\n", + "Show and hide more\n", + "\n", + "Publisher resources\n", + "View/Submit Errata\n", + "Download Example Code\n", + "\n", + "\n", + "\n", + "\n" + ] + } + ], + "source": [ + "siteData = [\n", + " ['O\\'Reilly Media', 'https://www.oreilly.com', 'h1', 'div.title-description'],\n", + " ['Reuters', 'https://www.reuters.com', 'h1', 'div.ArticleBodyWrapper'],\n", + " ['Brookings', 'https://www.brookings.edu', 'h1', 'div.post-body'],\n", + " ['CNN', 'https://www.cnn.com', 'h1', 'div.article__content']\n", + "]\n", + "websites = []\n", + "for name, url, title, body in siteData:\n", + " websites.append(Website(name, url, title, body))\n", + "\n", + "Crawler.getContent(websites[0], '/library/view/web-scraping-with/9781491910283').print()\n", + "Crawler.getContent(\n", + " websites[1], '/article/us-usa-epa-pruitt-idUSKBN19W2D0').print()\n", + "Crawler.getContent(\n", + " websites[2],\n", + " '/blog/techtank/2016/03/01/idea-to-retire-old-methods-of-policy-education/').print()\n", + "Crawler.getContent(\n", + " websites[3], \n", + " '/2023/04/03/investing/dogecoin-elon-musk-twitter/index.html').print()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Crawling through sites with search" + ] + }, + { + "cell_type": "code", + "execution_count": 46, + "metadata": {}, + "outputs": [], + "source": [ + "class Content:\n", + " \"\"\"Common base class for all articles/pages\"\"\"\n", + "\n", + " def __init__(self, topic, url, title, body):\n", + " self.topic = topic\n", + " self.title = title\n", + " self.body = body\n", + " self.url = url\n", + "\n", + " def print(self):\n", + " \"\"\"\n", + " Flexible printing function controls output\n", + " \"\"\"\n", + " print(f'New article found for topic: {self.topic}')\n", + " print(f'URL: {self.url}')\n", + " print(f'TITLE: {self.title}')\n", + " print(f'BODY:\\n{self.body}')" + ] + }, + { + "cell_type": "code", + "execution_count": 47, + "metadata": {}, + "outputs": [], + "source": [ + "class Website:\n", + " \"\"\"Contains information about website structure\"\"\"\n", + "\n", + " def __init__(self, name, url, searchUrl, resultListing, resultUrl, absoluteUrl, titleTag, bodyTag):\n", + " self.name = name\n", + " self.url = url\n", + " self.searchUrl = searchUrl\n", + " self.resultListing = resultListing\n", + " self.resultUrl = resultUrl\n", + " self.absoluteUrl = absoluteUrl\n", + " self.titleTag = titleTag\n", + " self.bodyTag = bodyTag" + ] + }, + { + "cell_type": "code", + "execution_count": 65, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "https://www.reuters.com/search/news?blob=python\n", + "http://reuters.com/article/idUSKCN11S04G\n", + "New article found for topic: python\n", + "URL: http://reuters.com/article/idUSKCN11S04G\n", + "TITLE: Python in India demonstrates huge appetite\n", + "BODY:\n", + "By 1 Min ReadA 20 feet rock python was caught on camera in Junagadh district of India’s western Gujarat state with a swollen stomach after it consumed an antelope on Tuesday (September 20).Residents informed authorities at Girnar Wildlife Sanctuary after they spotted the reptile lying in discomfort in a field.In view of the massive swelling of the python’s stomach, the forest authorities suspect that it gobbled up a full-grown ‘nilgai’ or blue bull.The python - unable to move now - was rescued by the forest personnel and has been put under observation.“We will keep it (python) under observation. We will release it back in the wild once it digests the antelope and the swelling subsides,” said Assistant Conservator of Forest, S.D. Tilala.A blue bull is far larger than an ideal prey for pythons and digesting the mammal could prove to be a great struggle for the reptile.When unable to digest an unusually large prey, pythons are known to regurgitate them.\n", + "http://reuters.com/article/idUSKBN0L31PS20150130\n", + "New article found for topic: python\n", + "URL: http://reuters.com/article/idUSKBN0L31PS20150130\n", + "TITLE: Zimbabwean jailed for nine years for eating python meat\n", + "BODY:\n", + "By Reuters Staff1 Min ReadJOHANNESBURG (Reuters) - A Zimbabwean man has been jailed for nine years for eating python, a protected species, a Zimbabwean daily reported on Friday.Archwell Maramba said he had been eating the snake meat for its medicinal value.“I wanted to eat the python to cure my spine and since I ate my first python I have seen remarkable improvement,” NewsDay quoted Maramba as saying during his court case.Acting on a tipoff, police found the 58-year-old drying snakeskin and python meat stashed in his house.Reporting by Helen Nyambura-Mwaura; Editing by Andrew RocheOur Standards: The Thomson Reuters Trust Principles.\n", + "http://reuters.com/article/idUSBRE9081CL20130110\n", + "New article found for topic: python\n", + "URL: http://reuters.com/article/idUSBRE9081CL20130110\n", + "TITLE: Florida python hunting contest draws hundreds\n", + "BODY:\n", + "By Barbara Liston4 Min ReadORLANDO, Florida (Reuters) - A python hunting competition starting on Saturday is drawing hundreds of amateurs armed with clubs, machetes and guns to the Florida Everglades, where captured Burmese pythons have exceeded the length of minivans and weighed as much as grown men.Researchers at the Florida Museum of Natural History in Gainesville, Florida examine a 17-foot-7-inch Burmese python which was captured in Everglades National Park in this handout picture taken on August 10, 2012 and released on August 14, 2012. A python hunting competition starting January 12, 2013 is drawing hundreds of amateurs armed with clubs, machetes and guns to the Florida Everglades, where captured Burmese pythons have exceeded the length of minivans and weighed as much as grown men. REUTERS/Kristen Grace/Florida Museum of Natural History at University of Florida/HandoutPython Challenge 2013, a month-long event sponsored by the Florida Fish and Wildlife Conservation Commission, is open to hunters and non-hunters alike.But the idea of luring weapon-wielding amateurs into the harsh environment of the Everglades has raised some alarms.“I just thought it was as exciting as could be. It’s a once- in-a-lifetime opportunity,” said contestant Ron Polster, a retired salesman from Ohio whose closest encounter with the swamp has been from the highway heading south for the winter.Participants pay a $25 entry fee and take an online training course, which consists mostly of looking at photographs of both the targeted pythons and protected native snakes to learn the difference.The state wildlife agency is offering prizes of $1,500 for the most pythons captured and $1,000 for the longest python.A Burmese python found in Florida last year set records as the largest ever captured in the state at 17-feet, 7-inches. The snake weighed nearly 165 pounds (75 kg).FWC spokeswoman Carli Segelson said the number of registered contestants reached about 500 this week and was growing, with people coming from 32 states.The stated goal of the competition is to raise awareness of the threat Burmese pythons pose to the Everglades ecosystem. The snakes are native to Southeast Asia and have no known predators in Florida.The contest also serves as a pilot program to determine whether regular hunting competitions can cull the growing population of the invasive species, said Frank Mazzotti, a wildlife expert from the University of Florida who helped create the competition.Python Challenge rules require contestants to kill specimens on the spot in a humane fashion, recommending shooting the snakes precisely through the brain.“I was hoping there would be a lot of machetes and not a lot of guns,” said Polster, the retired salesman. He said he worries “these idiots will be firing all over the place.”Shawn Heflick, star of the National Geographic “Wild” television show “Python Hunters,” told Reuters that despite the formidable size of the snakes, he expects the swamp itself, with its alligators, crocodiles and venomous snakes, to pose a greater threat to the contestants.“You get these people going down there, they’ll get lost, they’ll get dehydrated, they’ll get sucked dry by mosquitoes,” Heflick said.Segelson said the wildlife agency will provide training on the use of GPS devices and on identifying venomous snakes at the kick-off event. In the meantime, she said, contestants should be familiarizing themselves with the Everglades environment, just as they should before entering any other strange territory.Heflick said most of the contestants likely were drawn to the Python Challenge by the romantic mystique of bagging a giant predator. He expects few will last long in the hunt.“The vast majority of them will never see a python. The vast majority of them will probably curtail their hunting very quickly when they figure out there’s a lot of mosquitoes, it’s hot, it’s rather boring sometimes - most of the time really, and I think a lot of them will go home,” Heflick said.Editing by Tom Brown and Dan GreblerOur Standards: The Thomson Reuters Trust Principles.\n", + "http://reuters.com/article/idUSBRE9081CL20130109\n", + "New article found for topic: python\n", + "URL: http://reuters.com/article/idUSBRE9081CL20130109\n", + "TITLE: Florida python hunting contest draws hundreds\n", + "BODY:\n", + "By Barbara Liston4 Min ReadORLANDO, Florida (Reuters) - A python hunting competition starting on Saturday is drawing hundreds of amateurs armed with clubs, machetes and guns to the Florida Everglades, where captured Burmese pythons have exceeded the length of minivans and weighed as much as grown men.Python Challenge 2013, a month-long event sponsored by the Florida Fish and Wildlife Conservation Commission, is open to hunters and non-hunters alike.But the idea of luring weapon-wielding amateurs into the harsh environment of the Everglades has raised some alarms.“I just thought it was as exciting as could be. It’s a once- in-a-lifetime opportunity,” said contestant Ron Polster, a retired salesman from Ohio whose closest encounter with the swamp has been from the highway heading south for the winter.Participants pay a $25 entry fee and take an online training course, which consists mostly of looking at photographs of both the targeted pythons and protected native snakes to learn the difference.The state wildlife agency is offering prizes of $1,500 for the most pythons captured and $1,000 for the longest python.A Burmese python found in Florida last year set records as the largest ever captured in the state at 17-feet, 7-inches. The snake weighed nearly 165 pounds (75 kg).FWC spokeswoman Carli Segelson said the number of registered contestants reached about 500 this week and was growing, with people coming from 32 states.The stated goal of the competition is to raise awareness of the threat Burmese pythons pose to the Everglades ecosystem. The snakes are native to Southeast Asia and have no known predators in Florida.The contest also serves as a pilot program to determine whether regular hunting competitions can cull the growing population of the invasive species, said Frank Mazzotti, a wildlife expert from the University of Florida who helped create the competition.Python Challenge rules require contestants to kill specimens on the spot in a humane fashion, recommending shooting the snakes precisely through the brain.“I was hoping there would be a lot of machetes and not a lot of guns,” said Polster, the retired salesman. He said he worries “these idiots will be firing all over the place.”Shawn Heflick, star of the National Geographic “Wild” television show “Python Hunters,” told Reuters that despite the formidable size of the snakes, he expects the swamp itself, with its alligators, crocodiles and venomous snakes, to pose a greater threat to the contestants.“You get these people going down there, they’ll get lost, they’ll get dehydrated, they’ll get sucked dry by mosquitoes,” Heflick said.Segelson said the wildlife agency will provide training on the use of GPS devices and on identifying venomous snakes at the kick-off event. In the meantime, she said, contestants should be familiarizing themselves with the Everglades environment, just as they should before entering any other strange territory.Heflick said most of the contestants likely were drawn to the Python Challenge by the romantic mystique of bagging a giant predator. He expects few will last long in the hunt.“The vast majority of them will never see a python. The vast majority of them will probably curtail their hunting very quickly when they figure out there’s a lot of mosquitoes, it’s hot, it’s rather boring sometimes - most of the time really, and I think a lot of them will go home,” Heflick said.Editing by Tom Brown and Dan GreblerOur Standards: The Thomson Reuters Trust Principles.\n", + "http://reuters.com/article/idUSKBN1OD2CM\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "New article found for topic: python\n", + "URL: http://reuters.com/article/idUSKBN1OD2CM\n", + "TITLE: UK woman illegally imported python-skin products\n", + "BODY:\n", + "By Reuters Staff2 Min ReadLONDON (Reuters) - A British woman who illegally imported and sold fashion accessories made from python skin was convicted on Friday, London police said.Stephanie Scolaro, 26, was involved in the illegal import of a parcel containing 10 python-skin hats and two bags which was seized by customs in 2016 at Leipzig airport in Germany, Southwark Crown Court had heard.An investigation began after London police’s Wildlife Crime Unit was alerted to the incident.The enquiry found that Scolaro operated an online company named ‘SS-Python.com’, where she sold python-skin hats, bags, chokers and mobile phone covers.More illicit python snake products were subsequently found in Scolaro’s central London home, and for sale at three shops in London.“Pythons are one of many species protected under CITES, an international treaty to protect endangered plants and animals,” said Sarah Bailey of the Wildlife Crime Unit.“Any trade outside of the legal framework could threaten the conservation status of the remaining wild population and contribute to its decline in the wild,” she added in a statement.Scolaro, who pleaded guilty, will be sentenced on Jan. 21.Reporting by Amy O’Brien; editing by Stephen AddisonOur Standards: The Thomson Reuters Trust Principles.\n", + "http://reuters.com/article/idUSBRE9640KE20130705\n", + "New article found for topic: python\n", + "URL: http://reuters.com/article/idUSBRE9640KE20130705\n", + "TITLE: Monty Python lose 'Spamalot' court battle\n", + "BODY:\n", + "By Li-mei Hoang4 Min ReadLONDON (Reuters) - The surviving members of the British comedy troupe Monty Python lost a High Court battle on Friday over tens of thousands of pounds in royalties from their hit Broadway musical “Spamalot”.Monty Python members Eric Idle (R) and Terry Jones return to the High Court after a lunch break in central London December 4, 2012. REUTERS/Andrew WinningMark Forstater, who helped produce the 1975 film “Monty Python and the Holy Grail” on which the stage show was based, said he had not received his fair share of the profits from the spin-off.Despite hearing evidence from three Pythons - Eric Idle, Michael Palin and Terry Jones - the judge, Justice Alastair Norris, sided with the producer.“I have always been adamant I was correct. I have been proved right - justice has prevailed,” Forstater said.Inspired by the film, the musical opened on Broadway in 2005 and has also enjoyed a successful run in Britain. Idle wrote the lyrics and collaborated on most of the music.Forstater, an American based in Britain, argued that he was entitled to one-seventh of the profits from the “Holy Grail” film and any merchandise or spin-offs.His lawyer told the court that for the purposes of profit-sharing, it had been agreed in 1974 that Forstater was “the seventh Python”.However Palin, along with Jones and Idle, who formed Monty Python with John Cleese, Terry Gilliam and Graham Chapman, dismissed this suggestion.“The idea of a seventh Python just doesn’t happen ... I don’t think there was ever any suggestion this man was going to be a ‘seventh Python’,” said Palin, giving evidence in December.In his judgment, Norris said Palin had been a “balanced and trustworthy” witness but had admitted his recollection was “hazy”, while evidence from Jones had been “suffused with a sense that Mr Forstater had done very well out of his brief connection with the Pythons”.“Eric Idle was frank enough to acknowledge that he now disliked Mr Forstater, but he expressed the hope that, in his evidence, he was being honest and that his dislike did not affect his honesty,” Norris said.“He undoubtedly regarded Mr Forstater as ungrateful.”“SOFT LOT”His ruling also made reference to the Pythons’ lack of business acumen, highlighting a diary entry from Palin in 1975.“As we are a soft lot and not at all businesslike, I think it would be in the finest traditions of Python irrationality if we gave Mark an extra 1,000 pounds and a silver tray with some cut-glass sherry glasses and told him to stop writing to us for more money,” Palin wrote.“Beyond that even I am not prepared to go. Oh, all right, some cheese straws to go with the sherry glasses.”The judge added: “As I assess the evidence, the Pythons continued at that point to be ‘a soft lot and not at all businesslike’.”No members of the Python group were present in court to hear the ruling.Final figures will be worked out at later hearings but Forstater told reporters he was entitled to more than 200,000 pounds ($300,000) including interest, the Press Association reported.“There is a sadness, though, about having to face people who were my friends in court,” he said. “The friendship has gone.”Forstater said he did not think the litigation would damage the Pythons’ reputation. “They’re an institution,” he said. “I still think they are very funny.”Editing by Michael Holden and Janet LawrenceOur Standards: The Thomson Reuters Trust Principles.\n", + "http://reuters.com/article/idUSBREA141OP20140205\n", + "New article found for topic: python\n", + "URL: http://reuters.com/article/idUSBREA141OP20140205\n", + "TITLE: 18-foot Burmese python found in Florida Everglades\n", + "BODY:\n", + "By Reuters Staff2 Min ReadSlideshow ( 2 images )MIAMI (Reuters) - Engineers in the Everglades stumbled upon a near-record-breaking Burmese python measuring more than 18 feet long during a routine inspection of levees on Tuesday, a water management district spokesman said.The snake, measuring at 18 feet 2 inches, fell short of the state record by 6 inches, according to the Florida Fish and Wildlife Conservation Commission.Last year, a snake collector in the state discovered the largest python on record there, measuring 18 feet 8 inches, commission spokeswoman Katie Johnson said.The pythons, which can grow to more than 20 feet in their native habitat in Southeast Asia, are one of the most problematic invaders of Florida’s sprawling Everglades wetlands.They eat indigenous species and their food sources, fueling concerns that the predator snakes will fundamentally change the ecosystem.The python found on Tuesday was killed, and its corpse was taken to the University of Florida, where it will be measured and studied by scientists trying to combat the species, according to South Florida Water Management District spokesman Gabe Margasak.Officials have said the python population is believed to have grown to as many as 150,000 in the Everglades. The cold-blooded reptiles are often found atop levees, where they lie for hours at a time to warm up under the Florida sun.The snakes, one of the largest species in the world, found a home to their liking in the Everglades when pet owners started using the wetlands as a convenient dumping ground.Reporting by Zachary Fagenson; Editing by Colleen Jenkins and Lisa Von AhnOur Standards: The Thomson Reuters Trust Principles.\n", + "http://reuters.com/article/idUSKCN11W1LT\n", + "New article found for topic: python\n", + "URL: http://reuters.com/article/idUSKCN11W1LT\n", + "TITLE: Indian man bitten by python whilst posing for selfie\n", + "BODY:\n", + "By 2 Min ReadForest department officials on Saturday (September 24) promised strict action after a python attacked a man when a group was trying to click a photo with it.The incident took place on Friday (September 23) after forest department officials removed the python from the premises of a school in northwestern Rajasthan state. They were posing for pictures with it after successfully capturing it.Deputy Conservator of Forests, K.G.Shrivastav, said the incident was unexpected as all officers were highly trained.“I wanted the snake to be released in my presence, but the officials released it before I could reach the spot. I had no clue that civilians were also present at the spot and something could go wrong as all the officials are highly trained. Clicking selfies with the snake and releasing the photos publicly is an offense under the Wildlife Act and we will issue notice to all involved in this incident,” Shrivastav said.The victim, Ashok Bishnoi, accepted the incident happened due to carelessness on his part.“The moment I received the news I reached the location. I did not realize how close I was to the python and it attacked me. This is entirely my fault,” said the victim, Ashok Bishnoi.Vishnoi added that the mishap happened in a short span of time in spite of the fact that the rescue officials had a strong grip on the reptile.The snake was later released in a forest.\n", + "http://reuters.com/article/idUSKBN1711E3\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "New article found for topic: python\n", + "URL: http://reuters.com/article/idUSKBN1711E3\n", + "TITLE: Indonesian found dead after being swallowed by python\n", + "BODY:\n", + "By Reuters Staff2 Min ReadSlideshow ( 2 images )JAKARTA (Reuters) - An Indonesian farmer has been found dead inside a 7-meter (23-foot) python after being reported missing on his failure to return home from work on a palm plantation.Village officials cut open the swollen body of the snake in a graphic video taken by a resident of Mamuju, on the eastern island of Sulawesi, the site of the incident. The victim’s legs, encased in rubber boots, emerge as the snake is pulled apart.Family members and neighbors of the 26-year-old victim, Akbar, had launched a search when he failed to come home for more than 24 hours, a resident of the area told Reuters.“We saw a python that couldn’t move properly and it’s belly was swollen,” said Asdin Rudi Fathir, 43. “Residents and officials decided to kill the python and were shocked to find a human body inside.”Relatives identified the victim, who went by only one name, as do many Indonesians.While large snakes and other animals are common in that part of Sulawesi, attacks on humans are rare, Fathir added.Reporting by Kanupriya Kapoor; Editing by Clarence FernandezOur Standards: The Thomson Reuters Trust Principles.\n", + "http://reuters.com/article/idUSL5N0J50QB20131120\n", + "New article found for topic: python\n", + "URL: http://reuters.com/article/idUSL5N0J50QB20131120\n", + "TITLE: Monty Python not dead after all - stage show planned\n", + "BODY:\n", + "By Reuters Staff2 Min ReadLONDON, Nov 20 (Reuters) - The comic team Monty Python, whose BBC TV series from the 1970s and feature films took their subversive humour and “Dead Parrot” routine around the world, are to reunite for a stage show, British media reported on Wednesday.A news release issued on behalf of the five surviving Pythons, Eric Idle, John Cleese, Terry Gilliam, Michael Palin and Terry Jones, all in their 70s, said that an official announcement would be made on Thursday.But several British newspapers and media outlets reported that the five would be appearing on stage for the first time together since the 1980s.The group was famed for its skits about a man trying to return a dead parrot to a shopkeeper who claimed the bird was “resting” and for poking fun at the establishment, the military and religion.“We’re getting together and putting on a show - it’s real,” Jones told the BBC.“I’m quite excited about it. I hope it makes us a lot of money. I hope to be able to pay off my mortgage!”On his Twitter account, Palin wrote: “The Python rides again...?” while Idle on Tuesday tweeted: “Only three days to go till the Python Press Conference. Make sure Python fans are alerted to the big forthcoming news event.”The BBC programme “Monty Python’s Flying Circus” was made for television between 1969 and 1974.The Pythons went on to make films including “Monty Python And The Holy Grail” (1975) and “Monty Python’s Life of Brian” (1979).They last performed live together in Monty Python Live At The Hollywood Bowl in 1982. The sixth Python, Graham Chapman, died of cancer at age 48 in 1989. (Writing by Michael Roddy; Editing by Doina Chiacu)Our Standards: The Thomson Reuters Trust Principles.\n", + "https://www.reuters.com/search/news?blob=data%20science\n", + "http://reuters.com/article/idUSL4N33D1H6\n", + "New article found for topic: data%20science\n", + "URL: http://reuters.com/article/idUSL4N33D1H6\n", + "TITLE: CORRECTED-Data science firm Tredence raises $175 mln from PE firm Advent\n", + "BODY:\n", + "By Reuters Staff2 Min Read(Corrects paragraph 3 to add dropped word “not”)BENGALURU, Dec 23 (Reuters) - Tredence, a data science and artificial intelligence company, has raised $175 million from private equity firm Advent International, the company said on Friday.The Series B round values Tredence, which has Indian founders but is headquartered in San Jose, at $500 million, the Economic Times newspaper reported, citing Tredence chief executive and co-founder, Shub Bhowmick.Tredence, which gets 80% of its revenue from North America, did not immediately respond to Reuters’ request for comment.Advent will take a minority stake in Tredence and join its board, while Chicago Pacific Founders, a PE firm that invested in Tredence in December 2020, will remain a shareholder, Tredence said in a statement.The company was started by Bhowmick, Sumit Mehra and Shashank Dubey in 2013 and raised $30 million in its Series A funding round in late 2020.It has over 1,800 employees and offices in San Jose, Foster City, Chicago, London, Toronto and Bengaluru. (Reporting by Nandan Mandayam in Bengaluru; Editing by Savio D’Souza)Our Standards: The Thomson Reuters Trust Principles.\n", + "http://reuters.com/article/idUSL1N36702Q\n", + "New article found for topic: data%20science\n", + "URL: http://reuters.com/article/idUSL1N36702Q\n", + "TITLE: Biden to discuss risks of AI in Tuesday meeting with science advisers\n", + "BODY:\n", + "By Jeff Mason2 Min ReadWASHINGTON, April 4 (Reuters) - U.S. President Joe Biden will discuss the “risks and opportunities” that artificial intelligence poses for people, society and national security during a meeting with science and technology advisers at the White House on Tuesday, an official said.Biden, a Democrat, is scheduled to meet with the President’s Council of Advisors on Science and Technology (PCAST) on the same day that his predecessor, former President Donald Trump, surrenders in New York over charges stemming from a probe into hush money paid to a porn star.Biden has declined to comment on Trump’s legal woes, and Democratic strategists say his focus on governing will create a politically advantageous split screen of sorts as his former rival, a Republican, deals with his legal challenges.“The president will discuss the importance of protecting rights and safety to ensure responsible innovation and appropriate safeguards,” a White House official said in a statement ahead of Biden’s meeting.“He will call on Congress to pass bipartisan privacy legislation to protect kids and limit personal data tech companies collect on all of us.”Artificial intelligence or AI is becoming a hot topic for policy makers.The tech ethics group Center for Artificial Intelligence and Digital Policy has asked the U.S. Federal Trade Commission month to stop OpenAI from issuing new commercial releases of GPT-4, which has wowed and appalled users with its human-like abilities to generate written responses to requests.Democratic U.S. Senator Chris Murphy has urged society to pause as it considers the ramifications of AI.Last year the Biden administration released a blueprint “Bill of Rights” to help ensure users’ rights are protected as technology companies design and develop AI systems. (Reporting by Jeff Mason; Editing by Stephen Coates)Our Standards: The Thomson Reuters Trust Principles.\n", + "http://reuters.com/article/idUSL1N33A11T\n", + "New article found for topic: data%20science\n", + "URL: http://reuters.com/article/idUSL1N33A11T\n", + "TITLE: SPECIAL REPORT-Why detransitioners are crucial to the science of gender care\n", + "BODY:\n", + "By Robin Respaut, Chad Terhune, Michelle Conlin39 Min Read(Takes sidebar USA-TRANSYOUTH/STUDIES)TORONTO, Dec 22 (Reuters) - For years, Dr Kinnon MacKinnon, like many people in the transgender community, considered the word “regret” to be taboo.MacKinnon, a 37-year-old transgender man and assistant professor of social work at York University here, thought it was offensive to talk about people who transitioned, later regretted their decision, and detransitioned. They were too few in number, he figured, and any attention they got reinforced to the public the false impression that transgender people were incapable of making sound decisions about their treatment.“This doesn’t even really happen,” MacKinnon recalled thinking as he listened to an academic presentation on detransitioners in 2017. “We’re not supposed to be talking about this.”MacKinnon, whose academic career has focused on sexual and gender minority health, assumed that nearly everyone who detransitioned did so because they lacked family support or couldn’t bear the discrimination and hostility they encountered – nothing to do with their own regret. To learn more about this group for a new study, he started interviewing people.In the past year, MacKinnon and his team of researchers have talked to 40 detransitioners in the United States, Canada and Europe, many of them having first received gender-affirming medical treatment in their 20s or younger. Their stories have upended his assumptions.Many have said their gender identity remained fluid well after the start of treatment, and a third of them expressed regret about their decision to transition from the gender they were assigned at birth. Some said they avoided telling their doctors about detransitioning out of embarrassment or shame. Others said their doctors were ill-equipped to help them with the process. Most often, they talked about how transitioning did not address their mental health problems.In his continuing search for detransitioners, MacKinnon spent hours scrolling through TikTok and sifting through online forums where people shared their experiences and found comfort from each other. These forays opened his eyes to the online abuse detransitioners receive – not just the usual anti-transgender attacks, but members of the transgender community telling them to “shut up” and even sending death threats.“I can’t think of any other examples where you’re not allowed to speak about your own healthcare experiences if you didn’t have a good outcome,” MacKinnon told Reuters.The stories he heard convinced him that doctors need to provide detransitioners the same supportive care they give to young people to transition, and that they need to inform their patients, especially minors, that detransitioning can occur because gender identity may change. A few months ago, he decided to organize a symposium to share his findings and new perspective with other researchers, clinicians, and patients and their families.Not everyone was willing to join the discussion. A Canadian health provider said it couldn’t participate, citing recent threats to hospitals offering youth gender care. An LGBTQ advocacy group refused to promote the event. MacKinnon declined to identify either, telling Reuters he didn’t want to single them out. Later, after he shared his findings on Twitter, a transgender person denounced his work as “transphobia.”He expected his research would be a hard sell even to many of the 100 or so people from Canada, the United States and elsewhere who accepted his invitation. “I need your help,” he told the crowd that assembled in November in a York University conference room for the daylong session. “My perspectives have changed significantly. But I recognize that for many of you, you may find yourselves feeling much like I did back in 2017 – challenged, apprehensive, maybe fearful.”FIGHTING WORDSIn the world of gender-affirming care, as well as in the broader transgender community, few words cause more discomfort and outright anger than “detransition” and “regret.” That’s particularly true among medical practitioners in the United States and other countries who provide treatment to rising numbers of minors seeking to transition.They insist, as MacKinnon once did, that detransitioning is too rare to warrant much attention, citing their own experiences with patients and extant research to support their view. When someone does detransition, they say, it’s almost never because of regret, but rather, a response to the hardship of living in a society where transphobia still runs rampant.“These patients are not returning in droves” to detransition, said Dr Marci Bowers, a transgender woman, gender surgeon and president of the World Professional Association for Transgender Health (WPATH), an international group that sets guidelines for transgender care. Patients with regret “are very rare,” she told Reuters. “Highest you’ll find is 1% or 1.5% of any kind of regret.”Doctors and many transgender people say that focusing on isolated cases of detransitioning and regret endangers hard-won gains for broader recognition of transgender identity and a rapid increase in the availability of gender care that has helped thousands of minors. They argue that as youth gender care has become highly politicized in the United States and other countries, opponents of that care are able to weaponize rare cases of detransition in their efforts to limit or end it altogether, even though major medical groups deem it safe and potentially life-saving.“Stories with people who have a lot of anger and regret” about transitioning are over-represented in the media, and they don’t reflect “what we are seeing in the clinics,” said Dr Jason Rafferty, a pediatrician and child psychiatrist at Hasbro Children’s Hospital in Providence, Rhode Island. He also helped write the American Academy of Pediatrics’ policy statement in support of gender-affirming care. Detransitioning is a “very invalidating term for a lot of people who are trans and gender-diverse,” Rafferty said.Some people do detransition, however, and some do so because of regret. The incidence of regret could be as low as clinicians like Bowers say, or it could be much higher. But as Reuters found, hard evidence on long-term outcomes for the rising numbers of people who received gender treatment as minors is very weak.Dr Laura Edwards-Leeper, a clinical psychologist in Oregon who treats transgender youths and a co-author of WPATH’s new Standards of Care for adolescents and children, said MacKinnon’s work represents some of the most extensive research to date on the reasons for detransitioning and the obstacles patients face. She said the vitriol he has encountered illustrates one reason so few clinicians and researchers are willing to broach the subject.“People are terrified to do this research,” she said.For this article, Reuters spoke to 17 people who began medical transition as minors and said they now regretted some or all of their transition. Many said they realized only after transitioning that they were homosexual, or they always knew they were lesbian or gay but felt, as adolescents, that it was safer or more desirable to transition to a gender that made them heterosexual. Others said sexual abuse or assault made them want to leave the gender associated with that trauma. Many also said they had autism or mental health issues such as bipolar disorder that complicated their search for identity as teenagers.Echoing what MacKinnon has found in his work, nearly all of these young people told Reuters that they wished their doctors or therapists had more fully discussed these complicating factors before allowing them to medically transition.No large-scale studies have tracked people who received gender care as adolescents to determine how many remained satisfied with their treatment as they aged and how many eventually regretted transitioning. The studies that have been done have yielded a wide range of findings, and even the most rigorous of them have severe limitations. Some focus on people who began treatment as adults, not adolescents. Some follow patients for only a short period of time, while others lose track of a significant number of patients.“There’s a real need for more long-term studies that track patients for five years or longer,” MacKinnon said. “Many detransitioners talk about feeling good during the first few years of their transition. After that, they may experience regret.”In October, Dutch researchers reported results of what they billed as the largest study to date of continuation of care among transgender youths. In a review of prescription drug records, they found that 704, or 98%, of 720 adolescents who started on puberty blockers before taking hormones had continued with treatment after four years on average. The researchers couldn’t tell from the records why the 16 had discontinued treatment.Gender-care professionals and transgender-rights advocates hailed the 98% figure as evidence that regret is rare. However, the authors cautioned that the result may not be replicated elsewhere because the adolescents studied had undergone comprehensive assessments, lasting a year on average, before being recommended for treatment. This slower, methodical approach is uncommon at many U.S. gender clinics, where patient evaluations are typically done much faster and any delay in treatment, or “gatekeeping,” is often believed to put youth at risk of self-harm because of their distress from gender dysphoria.Dr Marianne van der Loos, the Dutch study’s lead author, is a physician at Amsterdam University Medical Center’s Center for Expertise on Gender Dysphoria, a pioneer in gender care for adolescents. “It’s important to have evidence-based medicine instead of expert opinion or just opinion at all,” van der Loos said.Reliable evidence of the frequency of detransition and regret is important because, as MacKinnon, van der Loos and other researchers say, it could be used to help ensure that adolescent patients receive the best possible care.A basic tenet of modern medical science is to examine outcomes, identify potential mistakes, and, when deemed necessary, adjust treatment protocols to improve results for patients. For example, only after large international studies analyzing outcomes for thousands of patients did researchers establish that implanted coronary artery stents were no better than medication for treating most cases of heart disease.Stronger data on outcomes, including the circumstances that make regret more likely, would also help transgender teens and their parents make better-informed decisions as they weigh the benefits and risks of treatments with potentially irreversible effects.“We cannot carry on in this field that involves permanently changing young people’s bodies if we don’t fully understand what we’re doing and learn from those we fail,” said Edwards-Leeper, the clinical psychologist and WPATH member. “We need to take responsibility as a medical and mental-health community to see all the outcomes,” she said in an interview.As Reuters reported in October, thousands of families in the U.S. have been weighing these difficult choices amid soaring numbers of children diagnosed with gender dysphoria, the distress experienced when a person’s gender identity doesn’t align with their gender assigned at birth. They have had to do so based on scant scientific evidence of the long-term safety and efficacy of gender-affirming treatment for minors.Concern about how to cope with the growing waiting lists at gender clinics that treat minors has divided experts. Some urge caution to ensure that only adolescents deemed well-suited to treatment after thorough evaluation receive it. Others argue that any delay in treatment prolongs a child’s distress and puts them at risk of self-harm.DETRANSITION DEFINEDDetransitioning can mean many things. For those who transitioned socially, it may entail another change in name, preferred pronouns, and dress and other forms of identity expression. For those who also received medical treatment, detransitioning typically includes halting the hormone therapy they otherwise would receive for years.Nor do all people who stop treatment regret transitioning, according to interviews with detransitioners, doctors and researchers. Some end hormone therapy when they have achieved physical changes with which they are comfortable. Some are unhappy with the side effects of hormones, such as male pattern baldness, acne or weight gain. And some are unable to cope with the longstanding social stigma and discrimination of being transgender.Doctors and detransitioners also described the challenging physical and emotional consequences of the process. For example, patients who had their ovaries or testes removed no longer produce the hormones that match their gender assigned at birth, risking bone-density loss and other effects unless they take those hormones the rest of their lives. Some may undergo years of painful and expensive procedures to undo changes to their bodies caused by the hormones they took to transition. Those who had mastectomies may later undergo breast reconstruction surgery. As parents, they may regret losing the ability to lactate. Detransitioners also may need counseling to cope with the process and any lingering regret.The impact can be social, too. In a study published last year in the Journal of Homosexuality, a researcher in Germany surveyed 237 people who had socially or medically transitioned and later detransitioned, half of them having transitioned as minors. Many respondents reported a loss of support from the LGBTQ community and friends, negative experiences with medical professionals, difficulty in finding a therapist familiar with detransition and the overall isolation after detransition.“Many respondents described experiences of outright rejection from LGBT+ spaces due to their decision to detransition,” wrote Elie Vandenbussche, the study’s author, a detransitioner and at the time a student at Rhine-Waal University of Applied Sciences. “It seems reasonable to suspect that this loss of support experienced by detransitioners must have serious implications on their psychological well-being.”In its new Standards of Care, released in September, WPATH cited Vandenbussche’s paper and a few others on detransitioning and continuation of care among younger patients. “Some adolescents may regret the steps they have taken,” the WPATH guidelines say. “Therefore, it is important to present the full range of possible outcomes when assisting transgender adolescents.”However, Bowers, WPATH’s president, is among several gender-care specialists who say patients are ultimately responsible for choices they make about treatment, even as minors. They should not be “blaming the clinician or the people who helped guide them,” she said. “They need to own that final step.”WPATH’s guidelines acknowledge the lack of research on long-term outcomes for youth who didn’t undergo comprehensive assessments, saying that the “emerging evidence base indicates a general improvement in the lives of transgender adolescents” who receive treatment after careful evaluation. “Further, rates of reported regret during the study monitoring periods are low,” the guidelines say.Specific treatment protocols for detransitioning are hard to find. WPATH’s guidelines don’t provide detailed advice to clinicians on treating patients who detransition. The Endocrine Society’s guidelines for gender-affirming care, published in 2017, don’t address the issue, either. The “question of discontinuing hormone treatment is beyond the scope covered by the current guideline,” an Endocrine Society spokeswoman said.Some doctors think they – and patients – would benefit from more guidance. “We have guidelines to guide us in providing transition-related care, initiating hormones and managing them long-term. Equally as important would be having guidelines in deprescribing hormones in the safest way possible,” said Dr Mari-Lynne Sinnott, a doctor who attended MacKinnon’s symposium. She runs one of the only family medical practices in Newfoundland focused on gender-diverse people, who make up about half of her 1,500 patients.“SURE OF MY IDENTITY”Max Lazzara’s childhood in Minneapolis, Minnesota, was chaotic, with divorce, “moving around a lot, some emotionally abusive stuff at home,” she said. Her mother worked full-time, so Lazzara did most of the cooking, cleaning and caring for her little brother. She began to cut and burn herself as a means of coping and had tried to commit suicide three times before she entered high school, according to Lazzara and her medical records, which cite a history of bipolar disorder.“The life of a woman was bleak to me,” Lazzara told Reuters. “I worried that I would have to get married to a man someday and have a baby. I wanted to run far away from that.”In early 2011, when Lazzara was 14, she started questioning her gender identity. After discovering forums on Tumblr where young people described their transitions, she felt like something snapped into place. “I thought, ‘Wow, this could explain why my whole life felt wrong.’”During the summer of that year, Lazzara changed her name and began experimenting with presenting as more masculine. It felt good to cut her hair and wear gender-neutral or men’s clothing. She took medications and received therapy to treat bipolar disorder. But it wasn’t enough to alleviate her distress. In April 2012, Lazzara was admitted to the hospital at the University of Minnesota after a fourth suicide attempt.Three weeks later, she sought care at the university’s Center for Sexual Health, where she was diagnosed with gender identity disorder. Lazzara told the clinic she was “sure of my identity,” according to her medical records. She wanted hormones and surgeries, the records show, including a mastectomy, a hysterectomy, and liposuction to slim her legs and hips. She was horrified at her body, could not look down in the shower and felt “absolute dread at the time of menstrual cycle,” the records note.“I felt so strongly. I thought nothing would change my mind,” Lazzara told Reuters.Clinicians at the university warned families that their children were suicidal “because they are born in the wrong bodies,” Lazzara’s mother, Lisa Lind, told Reuters. “I thought, ‘I’ll do whatever it takes, so she doesn’t kill herself.’”Lazzara started taking testosterone in the fall of 2012, at age 16. She was still binding her breasts – so tightly, she said, that her ribs deformed. After a man groped her on the street, she decided to have breast-removal surgery, tapping the college fund her grandmother had left for her to cover the nearly $10,000 cost.Initially, Lazzara was happy with her transition. She liked the changes from taking testosterone – the redistribution of fat away from her hips, the lower voice, the facial hair – and she was spared the sexist cat-calling that her female friends endured. “I felt like I was growing into something I wanted to be,” Lazzara said.But her mental health continued to deteriorate. She attempted suicide twice more, at ages 17 and 20, landing in the hospital both times. Her depression worsened after a friend sexually abused her. She became dependent on prescription anti-anxiety medication and developed a severe eating disorder.During the summer of 2020, Lazzara was spiraling. She realized she no longer believed in her gender identity, but “I didn’t see a way forward.”That October, Lazzara was working as a janitor in an office building in the Seattle area when she caught her reflection in a bathroom mirror. For the first time, she said, she saw herself as a woman. “I had not allowed myself to have that thought before,” she said. It was shocking but also clarifying, she said, and “a peaceful feeling came over me.”Then she began to ponder her sexuality. In middle school, she had crushes on girls. After her transition, she identified as a transgender man who was bisexual. Now, she realized, she was a lesbian.Lazzara stopped taking testosterone. She later asked her doctor in the Seattle area for advice, but he seemed unsure about how to proceed. She found a new doctor and recently sought laser hair removal on her face.Lazzara told Reuters she now realizes that gender treatment was not appropriate for her and that it took a toll on her physical and mental health. “I do wish my doctors had said to me, ‘It’s OK to feel disconnected from your body. It’s OK to like girls. It’s OK to be gender non-conforming.’”Her original gender-care providers at the University of Minnesota declined to comment. In a statement, the university’s medical school said “gender-affirming care involves a carefully thought-out care plan between a patient and their multidisciplinary team of providers.”Lazzara recently found the before-and-after pictures of her torso on the website of the surgeon who performed her mastectomy in 2013. She had given him permission to post the images because he was proud of the outcome. Seeing her body as it once was stunned her. “I saw my breasts before I got them removed. That’s my 16-year-old body,” she said. “I had no ability at that age to be in my own body in my own way.”Since revealing she detransitioned, Lazzara said, many in the online transgender community who embraced her a decade ago have distanced themselves from her, and she has received hateful messages on social media. Now, when she sees someone come out online as detransitioned, she sends them a private message of support. “I know how lonely and alienating it can be,” she said.“SHUT UP,” DETRANSITIONERTransgender people are frequently subjected to harassment, abuse and threats online. And as Lazzara’s experience shows, so are detransitioners. In recent posts on TikTok, users took turns telling detransitioners to “shut up,” and mocked, attacked and blamed them for perpetuating harm on the transgender community. Diana Salameh, a transgender woman, film director and comedian from Mississippi, posted a TikTok video on Oct. 1 to “all the so-called transgender detransitioners out there.”Detransitioners “are just giving fuel to the fire to the people who think that no trans person should exist,” she said in the video. “You people who jumped the gun, made wrong decisions that you should actually feel embarrassed for, but you want to blame somebody else.” In closing, she said, “I think you all need to sit down and shut the fuck up!”Salameh told Reuters she posted the video because detransitioners spread the false idea “that nobody can be happy after transition,” and right-wing opponents of youth gender care are using their stories “to fuel their agendas.”Earlier this year, K.C. Miller, a 22-year-old in Pennsylvania who was assigned female at birth, began wrestling with how she felt about her medical transition.Miller initially sought treatment for gender dysphoria when she was 16 from the adolescent gender clinic at Children’s Hospital of Philadelphia. In September 2017, Miller met with Dr Linda Hawkins, a counselor and co-founder of the hospital’s gender clinic, for the first of two 90-minute visits. During that session, Miller told Hawkins she had wanted to be a Boy Scout as a kid and “always felt like a tomboy,” according to Hawkins’ notes in Miller’s medical records, reviewed by Reuters. Miller also told Reuters that as a young girl she was attracted to other girls, but didn’t feel she could pursue those relationships because her family’s church didn’t accept homosexuality.Miller’s case had further complications. Hawkins noted that Miller had an extensive history of sexual abuse by a family member starting at age 4, and that as a result, Miller had already been diagnosed with anxiety and post-traumatic stress disorder. Miller had been admitted to a psychiatric hospital for 10 days because of suicidal thoughts in late 2016.While in the hospital, Miller told her mother she wished she wasn’t a girl “because then the abuse would not have happened,” Hawkins wrote. Elsewhere in the records, Hawkins noted that “Mom expresses concern that the desire to be male and not female may be a trauma response.”Miller, her mother and Hawkins met again seven weeks later. Miller had continued to have suicidal thoughts. She had taken medication for depression and anxiety and was working with a therapist, Hawkins noted. By the end of that second visit, Hawkins concluded that, “in spite of” Miller’s trauma from abuse, the 16-year-old “has been insistent, persistent and consistent” in thinking of herself as male.Hawkins referred Miller to a local gender clinic to receive testosterone. Miller got a mastectomy about six months later.But medical treatment didn’t offer the relief she sought. Her body started to change due to the hormones, yet Miller didn’t feel better. Instead, she cycled through bouts of depression. She passed as a young man, but “something felt off. It felt like I was putting on an act.”Then Miller began reading the stories posted online by young detransitioners. Parts of their experiences resonated with her. “I absolutely would not have done this if I could go back and do it again,” Miller told Reuters. “I would have worked through therapy and would be living my life as a lesbian.”Miller said Hawkins should have done a more thorough evaluation of all of Miller’s mental health issues and shouldn’t have recommended treatment so quickly.Her mother, who asked not to be identified to protect her privacy, told Reuters that providers assured her that Miller’s distress was related to her gender identity and that gender-affirming care would reduce the risk of suicide.A spokesman for Children’s Hospital of Philadelphia declined to comment, citing patient privacy.Sitting in her car in early October, Miller let out years of frustration in a video posted on Twitter. She told viewers she felt she looked too masculine to detransition. She described how testosterone thinned her hair. “I don’t see me personally being able to come back from what’s happened,” she said in the video.The video went viral, registering nearly four million views within days and igniting an avalanche of comments. Two days after Miller’s post, Alejandra Caraballo, a transgender woman, LGBTQ-rights advocate and clinical instructor at Harvard Law School’s Cyberlaw Clinic, wrote on Twitter: “The detransition grift where you complain about transitioning not making you look like a greek god but you also aren’t actually detransitioning yet because you don’t feel like your birth gender and you follow a bunch of anti-trans reactionaries that want all trans people gone.”Caraballo told Reuters she reacted to Miller’s video because those types of detransition stories are “outlier examples being used by many on the anti-trans side to undermine access to gender-affirming care. They aren’t representative of detransitioners on the whole.”In other posts and direct messages, some transgender people Miller had once idolized made fun of her appearance and criticized her decisions. One person made a death threat.A few weeks later, Miller said she stopped taking testosterone, began to feel suicidal and sought psychiatric care. She uses female pronouns among friends, but still presents as a man in public.In its Standards of Care, WPATH says many detransitioners “expressed difficulties finding help during their detransition process and reported their detransition was an isolating experience during which they did not receive either sufficient or appropriate support.”In May, Dr Jamison Green, a transgender man, author and former president of WPATH, said he was encouraged when about 30 medical professionals attended an online WPATH seminar he and other gender-care specialists helped lead. The session was intended to help providers better serve detransitioners and other patients with an evolving gender identity.“I wish people in the transgender community would be less judgmental about people who change their mind,” Green said. “Transgender people, especially when they are newer to the community, can be really brutal to people for not conforming. I really think it’s harmful for everybody.”WORD SEARCH PITFALLSEver since the first clinic to offer gender care to minors in the United States opened in Boston 15 years ago, none of the leading providers have published any systematic, long-term studies tracking outcomes for all patients.In 2015, the National Institutes of Health funded a study to examine outcomes for about 400 transgender youth treated at four U.S. children’s hospitals, including the gender clinic at Boston Children’s Hospital. Researchers have said they are looking at “continuation of care.” However, long-term results are years away.That has left a small assortment of studies to guide clinicians in this emerging field of medicine. The results of these studies suggest a wide range of possibilities for rates of detransitioning, from less than 1% to 25%. The research provides even less certainty about the incidence of regret among patients who received medical treatment as minors. And the studies have serious drawbacks.Two of the largest ones, which found that 2% or less of people who transitioned experienced regret, focused on Europeans who primarily initiated treatment as adults. Experts caution that the results, because of the differences in maturity and life experiences between adults and adolescents, may have limited relevance as an indicator of outcomes for minors.Researchers acknowledge that studies that follow patients for only a short time may underestimate detransition and regret because evidence indicates some people may not reach that point until as long as a decade after treatment began. Some studies also lose track of patients – a recurring challenge as minors age out of pediatric clinics and have to seek care elsewhere.Even the choice of search terms can trip up researchers, as apparently happened in a study published in May by Kaiser Permanente, a large integrated health system based in Oakland, California.That study examined 209 patients who underwent gender-affirming mastectomies as minors between 2013 and 2020 in Kaiser’s northern California region. Its authors searched the patients’ medical records for words such as “regret,” “dissatisfaction,” “unsatisfied” and “unhappy” as indicators of regret. They didn’t look for the term “detransition,” according to the study.Their search yielded two patients who had expressed regret, or less than 1% of the group studied. The two patients, identified as nonbinary, had top surgery at age 16, and expressed regret within a year and a half.Reuters found two other patients in the region covered by the study who don’t match those characteristics and whom the Kaiser researchers apparently missed. Both have been outspoken about their detransitions.One is Max Robinson, who was 16 when she sought gender care at Kaiser in 2012. Her pediatric endocrinologist prescribed a puberty blocker and later testosterone.The doctor monitored Robinson’s hormone levels, wrote numerous letters to help Robinson change her legal gender from female to male, and recommended a plastic surgeon in San Francisco, Robinson’s medical records show. “I have no reservations recommending Max as a well adjusted candidate for breast reduction,” the Kaiser endocrinologist wrote to the surgeon in May 2013. Max had the surgery six weeks later, when she was 17.After the surgery, Robinson felt better. But within a year, her mental health issues, including anxiety and depression, had escalated, medical records show.In November 2015, three years after starting testosterone and two years after her surgery, Robinson told the Kaiser physician she was now seeing that she wasn’t interested in taking hormones any longer. “I’m no longer going to be using testosterone, so I don’t need further appointments or for those prescriptions to be active,” she wrote to the doctor. Two months later, she asked Kaiser to provide a letter confirming her detransition so she could change her legal records back to female. Kaiser obliged.“The whole experience alienated me from my doctors,” she told Reuters.Robinson began to speak publicly about her decision to detransition and in 2021 published “Detransition: Beyond Before and After,” a book in which she details her own process of medical transition and detransition.The other patient was Chloe Cole. According to a letter of intent to sue that her lawyers sent to Kaiser in November, Cole was 13 when a Kaiser doctor in 2018 put her on a puberty blocker, followed a few weeks later by testosterone, for her gender-affirming treatment.At 15, Cole told Reuters, she also wanted top surgery. In an interview, she and her father said the doctors at Kaiser readily agreed, though he wanted to wait until she was older.“They were so adamant,” he said. He recalled the doctors telling him: “‘At this age, they definitely know what their gender is.’” The father asked not to be named out of concern that speaking publicly might jeopardize his employment. Detransition, he said, “wasn’t really discussed as a possibility.”In June 2020, a Kaiser surgeon performed a mastectomy on Cole, according to the letter of intent to sue. That was a month before her 16th birthday. Less than a year later, Cole said, she began to realize she regretted her surgery and medically transitioning in general after a discussion in school about breastfeeding and pregnancy.Cole said that when she discussed her decision to detransition with her gender-care specialist at Kaiser, “I could tell that I made her upset that I was so regretful,” Cole said in an interview. Eventually, the doctor offered to recommend a surgeon for breast reconstruction, Cole said, “but that’s something I’ve decided to not go through with.”Cole has begun speaking out publicly in support of measures to end gender-affirming care for minors, appearing often on conservative media and with politicians who back such bans.In the letter of intent, Cole’s lawyers said Kaiser’s treatment “represents gross negligence and an egregious breach of the standard of care.”Steve Shivinsky, a spokesman for Kaiser Permanente, declined to comment on the care provided to Cole and Robinson or whether they were included in the study, citing patient privacy.In a statement, he said Kaiser’s “clinicians are deeply interested in the outcomes of the care we provide and the individual’s state of health and wellbeing before, during and beyond their gender transition.” For adolescents seeking gender-affirming care, he said, “the decision always rests with the patient and their parents and, in every case, we respect the patients’ and their families’ informed decision to choose one form of care over another.”The Kaiser researchers followed up with patients in their study an average of 2.1 years after surgery. “The time to develop postoperative regret and/or dissatisfaction remains unknown and may be difficult to discern given that regret is quite rare,” the researchers wrote.A CHANGE OF PERSPECTIVEMacKinnon, the assistant professor of social work, grew up as what he calls “a gender-nonconforming tomboy” in a small Nova Scotia town. After getting his degree in social work, he medically transitioned at 24 when he started taking testosterone. “It was a very slow build,” MacKinnon said of his transition. He didn’t identify as transgender as a child.As a young researcher in Toronto, MacKinnon was drawn to work that exposed the barriers transgender people face in getting medical care and navigating daily life, interviewing clinicians and patients about their experiences. More recently, he turned his attention to detransition and regret.In August 2021, MacKinnon published a paper in which he and his co-authors wrote that there was “scant evidence that detransition is a negative phenomenon” for patients that would justify limiting access to gender-affirming treatment. That conclusion angered many of the detransitioners he would later need to win over.Michelle Alleva, a 34-year-old detransitioner in Canada, criticized MacKinnon’s study in a blog post as another effort by gender-care supporters to whitewash the pain of regret and assuage clinicians’ fears of malpractice lawsuits. Another detransitioner complained on Twitter that the word “regret” was put in quotes in the paper, undermining its legitimacy in her opinion.Still skeptical that regret was a significant issue, MacKinnon in the autumn of 2021 embarked on his latest study and began talking to more people about their decisions to detransition. In July, he published a paper based on formal interviews with 28 of the more than 200 detransitioners he and his colleagues have found.A third expressed either strong or partial regret about their transition. Some said their transitions should have proceeded more slowly, with more therapy. Others expressed regret about the lasting impact on their bodies. Some said their mental health needs weren’t adequately addressed before transitioning. “They felt like their consent wasn’t informed because they didn’t initially understand what was going on that might have explained their feelings and suffering,” MacKinnon told Reuters.The patients’ stories brought MacKinnon round to the view that the gender-care community needs to address regret, adjust treatment to reduce its incidence, and provide better support for detransitioners. “Some of what I’ve learned about detransitioners is identifying cracks in the gender-affirming care system, particularly for young people,” he said.In September, MacKinnon presented his findings to a small but attentive crowd at WPATH’s annual conference in Montreal. A few weeks later, he shared his research more widely on Twitter. “We need to listen to and learn from the experiences of detransitioners, not silence them,” he wrote.Some people applauded his work. Others criticized it. Robyn D., who identified as “quietly trans,” replied on Twitter: “Transphobia disguised as academic opinion is the most poisonous of them all.” She didn’t respond to requests for comment from Reuters.At his November symposium, MacKinnon didn’t encounter the blowback from clinicians that he had expected. In fact, he accepted an invitation from one to speak about detransition at her medical practice.Alleva, who had criticized MacKinnon’s earlier study, was also there, one of the scores of detransitioners MacKinnon and his colleagues have talked to. She medically transitioned 12 years ago and then detransitioned in 2020 after a mastectomy, a hysterectomy and years of testosterone. She had refused to participate in his research because she didn’t trust MacKinnon, but over the summer, they began talking.“He reminded me of my old trans friends who I don’t speak with anymore,” Alleva said. “He actually listened to me.”Edited by Michele Gershberg and John Blanton.Our Standards: The Thomson Reuters Trust Principles.\n", + "http://reuters.com/article/idUSL8N2YT2PB\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "New article found for topic: data%20science\n", + "URL: http://reuters.com/article/idUSL8N2YT2PB\n", + "TITLE: Science offers basis for national climate damage claims -study\n", + "BODY:\n", + "\n", + "http://reuters.com/article/idUSKBN2ON108\n", + "New article found for topic: data%20science\n", + "URL: http://reuters.com/article/idUSKBN2ON108\n", + "TITLE: Science offers basis for national climate damage claims -study\n", + "BODY:\n", + "\n", + "http://reuters.com/article/idUSKBN2P20SJ\n", + "New article found for topic: data%20science\n", + "URL: http://reuters.com/article/idUSKBN2P20SJ\n", + "TITLE: Exclusive: Cassava Sciences faces U.S. criminal probe tied to Alzheimer's drug, sources say\n", + "BODY:\n", + "\n", + "http://reuters.com/article/idUSL1N2ZN2GC\n", + "New article found for topic: data%20science\n", + "URL: http://reuters.com/article/idUSL1N2ZN2GC\n", + "TITLE: Long COVID risk up for unvaccinated children; at-home antibody test shows promise\n", + "BODY:\n", + "\n", + "http://reuters.com/article/idUSL1N2Z61E5\n", + "New article found for topic: data%20science\n", + "URL: http://reuters.com/article/idUSL1N2Z61E5\n", + "TITLE: Exclusive: Cassava Sciences faces U.S. criminal probe tied to Alzheimer's drug, sources say\n", + "BODY:\n", + "\n", + "http://reuters.com/article/idUSL1N2ZE21A\n", + "New article found for topic: data%20science\n", + "URL: http://reuters.com/article/idUSL1N2ZE21A\n", + "TITLE: Omicron better at invading young noses than other variants; smell loss may predict memory issues\n", + "BODY:\n", + "\n", + "http://reuters.com/article/idUSL1N2Z71GW\n", + "New article found for topic: data%20science\n", + "URL: http://reuters.com/article/idUSL1N2Z71GW\n", + "TITLE: Experimental chewing gum reduces Omicron in saliva; sexual dysfunction, hair loss among long COVID symptoms\n", + "BODY:\n", + "\n", + "https://www.brookings.edu/search/?s=python\n", + "https://www.brookings.edu/blog/up-front/2022/03/17/housing-finance-reform-the-path-forward-gets-rolling/\n", + "New article found for topic: python\n", + "URL: https://www.brookings.edu/blog/up-front/2022/03/17/housing-finance-reform-the-path-forward-gets-rolling/\n", + "TITLE: Housing finance reform: The path forward gets rolling\n", + "Housing finance reform: The path forward gets rolling\n", + "BODY:\n", + "\n", + "https://www.brookings.edu/blog/techtank/2023/02/07/building-guardrails-for-chatgpt/\n", + "New article found for topic: python\n", + "URL: https://www.brookings.edu/blog/techtank/2023/02/07/building-guardrails-for-chatgpt/\n", + "TITLE: Building guardrails for ChatGPT\n", + "Building guardrails for ChatGPT\n", + "BODY:\n", + "\n", + "https://www.brookings.edu/research/how-open-source-software-shapes-ai-policy/\n", + "New article found for topic: python\n", + "URL: https://www.brookings.edu/research/how-open-source-software-shapes-ai-policy/\n", + "TITLE: How open-source software shapes AI policy\n", + "How open-source software shapes AI policy\n", + "BODY:\n", + "\n", + "https://www.brookings.edu/techstream/how-generative-ai-impacts-democratic-engagement/\n", + "New article found for topic: python\n", + "URL: https://www.brookings.edu/techstream/how-generative-ai-impacts-democratic-engagement/\n", + "TITLE: How generative AI impacts democratic engagement\n", + "BODY:\n", + "\n", + "The exterior of the U.S. Capitol is seen at sunset on January 22, 2020. (REUTERS/Sarah Silbiger)\n", + "\n", + "\n", + "Within two months of its launch last fall, the popular chatbot ChatGPT had reached an estimated 100 million monthly users—making it the fastest growing consumer application in history. Now that its parent company OpenAI has released a new version of the chatbot’s underlying language model, anyone with access to the app will soon be able not only to write poetry and practice journalism, but even ace the LSAT and GRE. Like most leading-edge language applications today, ChatGPT relies on a machine learning algorithm known as a transformer to generate probability distributions over words and then recognize, translate, predict, or generate text. The quality of that text is often deeply impressive—so much so that even relatively restrained tech publications have concluded ChatGPT may be “coming for your job.”\n", + "\n", + "\n", + "Yet large language models may disrupt far more than just the economy. They also appear poised to challenge democracy too. At issue is not just the risk of automated misinformation campaigns, but the threat to traditional forms of democratic engagement. Democracy depends in part on how responsive those who govern are to the preferences of the governed: from public comments on proposed agency rules (“submit your comments and let your voice be heard,” exhorts regulations.gov) to legislators’ refashioned electronic mail boxes, citizens have long offered feedback to policymakers via the written word. By making it trivial to produce large quantities of credible text, language models threaten to weaken the signal those words provide. As the New Yorker recently observed, ChatGPT “will strain a political system in peril.”\n", + "\n", + "\n", + "The threat is far from an idle one. In 2017, the Federal Communications Commission (FCC) invited public commentary regarding its proposed changes to net neutrality regulations. An orchestrated astroturf campaign opposed to net neutrality soon flooded the comment line, generating more than 8 million comments, while a single college student in favor of net neutrality used an automated script to generate seven million comments of his own. The government foiled the attempt only because of the inadequacy of the technology: since only 6% of the 21.7 million comments were unique and seven comments alone accounted for 38% of all submissions, the manipulation was easy to detect. By contrast, language models capable of automating unique submissions at scale will not be as easy to uncover.\n", + "\n", + "\n", + "To gauge the extent of the problem, we ran an experiment on the impact of language models on the efficacy of congressional correspondence. More specifically, we examined whether language models could distort the legislative agenda by drafting limitless original emails to members of Congress. Using both human writers and GPT-3, OpenAI’s predecessor to the GPT-4 system it announced last week, we randomly sent email to over 7,000 state legislators around the country and then compared response rates. The difference in response rates, which scholars use as a proxy for government responsiveness to constituent concerns, was just 2% overall, with no differences in response rates for three of the policy issues we analyzed. The findings suggest that legislators are potentially susceptible to the misuse of these technologies.\n", + "\n", + "\n", + "Research design and methodology\n", + "\n", + "\n", + "To investigate the possible misuse of language models like ChatGPT, we conducted a field experiment in 2020 using OpenAI’s then-state-of-the-art language model, GPT-3. We selected six policy issues—gun control, reproductive rights, education, health care, policing, and taxes—and asked a number of undergraduate research assistants to write right and left-leaning advocacy letters. We then trained GPT-3 on the student letters and asked GPT-3 to write new letters advancing a right-wing and left-wing position on each issue. For example, here’s the first paragraph of a right-wing gun control letter that one of our research assistants wrote:\n", + "\n", + "\n", + "\n", + "I was recently appalled by an interview on the News with the co-founder of Students for Safer Schools. He insisted that it was a natural consequence of our current gun control laws to allow active shooters to commit mass murder in schools. I am writing this letter in order to implore you to oppose any bill to ban or curtail the rights of gun owners in America.\n", + "\n", + "\n", + "\n", + "I was recently appalled by an interview on the News with the co-founder of Students for Safer Schools. He insisted that it was a natural consequence of our current gun control laws to allow active shooters to commit mass murder in schools. I am writing this letter in order to implore you to oppose any bill to ban or curtail the rights of gun owners in America.\n", + "\n", + "\n", + "Based on this student sample, we asked GPT-3 to “write a right-wing letter on gun control.”  Here’s the first paragraph of the AI-written letter:\n", + "\n", + "\n", + "\n", + "I hope this letter finds you well. I would first like to thank you for the job you’ve done in representing us in this time of national turmoil. The pandemic and social unrest sweeping the nation right now have made life difficult for all, and many citizens, myself included, fear that our Second Amendment right to firearm ownership may become more and more of a necessity in daily life.\n", + "\n", + "\n", + "\n", + "I hope this letter finds you well. I would first like to thank you for the job you’ve done in representing us in this time of national turmoil. The pandemic and social unrest sweeping the nation right now have made life difficult for all, and many citizens, myself included, fear that our Second Amendment right to firearm ownership may become more and more of a necessity in daily life.\n", + "\n", + "\n", + "Next, we created a program on Python to alternately send either human or AI-written emails to roughly 7,200 state legislators. All told, we sent a total of 32,398 emails or approximately 5 per legislator.\n", + "\n", + "\n", + "We then compared response rates to human and AI-generated emails as a measure of how credible each type of email was. Given the competing demands on a legislator’s time, the decision to answer a constituent letter implies a calculus about the importance of responsiveness to that individual or issue. Previous studies seeking to understand whether legislators discriminate on the basis of constituent race or ethnicity have sent emails from Hispanic, Black, or Muslim aliases and looked for differential response rates as evidence of discrimination. In our case, we judged that a busy legislator would not respond to a message that was clearly robotic or nonsensical, but rather would reply preferentially to real constituents.\n", + "\n", + "\n", + "Our analysis suggested that legislators found the AI-generated text almost as credible as the human-written messages. On two issues – gun control and health policy – we found virtually identical response rates for human versus machine emails (See Figure 1). And on a third, education policy, we observed a higher response rate for the machine-generated emails, though the difference is not statistically significant. This suggests that on these issues GPT-3 succeeded in producing content that was almost indistinguishable in the eyes of state legislative offices from human content. By contrast, legislators were less responsive to machine-generated communications on three issues: policing; reproductive rights; and taxes. However, even on these issues legislators responded to GPT-3-generated emails at rates only 4% lower than to hand-written emails.\n", + "\n", + "\n", + "Figure 1: Differential Response Rates (GPT-3 – Human Emails) by Policy Area\n", + "\n", + "\n", + "Note: I-bars present 95% confidence intervals around each difference in means.\n", + "\n", + "\n", + "While our findings suggest legislators routinely failed to distinguish real from AI-manufactured communications, follow-up exchanges with legislators surfaced some helpful tips for guarding against manipulation. Even the best language models can produce bland, generic, or sometimes factually inaccurate content, or can “hallucinate” and become repetitive. For example, one email started, “My name is Rebecca Johnson, and I am a single father raising a daughter.” This raised a red flag for at least one legislator in our sample. Further, the machine sometimes struggled to write ideologically consistent letters, particularly from a right-wing perspective on the issue of gun control. For instance, one AI-generated letter began, “I am a rifle owner and hunter”—but then suggested that the author took a turn and argued that owning a firearm was a constitutional right.\n", + "\n", + "\n", + "Even if these inconsistencies occur in a small fraction of the outputs, avoiding them requires a human-in-the-loop that is at odds with a nefarious actor’s goal of automating malice. The same antidote to these low-quality outputs also undermines the potential misuse of these tools. Of course, as the technology improves—such as through reinforcement learning from human feedback, or RLHF—those types of outputs will become less prevalent. Nevertheless, for now legislators or staffers should look for these hallmarks—or even better, the absence of telltale residency markers like specifics about the district or state.\n", + "\n", + "\n", + "Policy implications of generative AI\n", + "\n", + "\n", + "What then is a legislator to do?  Mail has always been an important way that politicians from local representatives to presidents have kept tabs on public opinion. Even in an era of ubiquitous polling, many have viewed mail as informative of the concerned public on a given issue—the effort it takes to compose a letter or note has historically served as a strong signal of the salience of a given issue or policy proposal, particularly when multiple constituents touch on the same points. However, language models threaten to weaken that signal. As malicious actors leverage them in a bid to influence the behavior of policymakers and regulators, elected and non-elected officials alike will have strong incentives to be skeptical of the information they can glean about public preferences from both constituent feedback and correspondence.\n", + "\n", + "\n", + "Fortunately, legislators have other means of keeping their finger on the pulse of public opinion. With enough resources, they can obtain district polling data on key issues; alternately, they can hold more frequent and more targeted town meetings to get a direct earful from those most animated about an issue. As the capacity for astroturfing increases, legislators may have to rely more heavily on these other sources of information about constituency preferences—and discount the sheer volume of text that they previously took as a signal of public attitudes.\n", + "\n", + "\n", + "In addition, regulators and legislators may also soon be able to more readily detect auto-generated text. For one, the same algorithms underlying models like GPT-3 can also be adapted to identify machine-generated text; researchers have shown that the accuracy of machine-based detection of generated text can reach accuracy rates of close to 90%. For another, OpenAI, Anthropic, and other labs responsible for leading-edge language models are all now experimenting with statistically watermarking the text they produce. As consensus standards and tools around watermarking emerge, legislators and regulators may be able to filter their correspondence through software that identifies auto-generated content. Finally, as language models improve, agency and congressional staff will need to rely on greater digital literacy to understand the risks they pose.\n", + "\n", + "\n", + "Recent election cycles have made it clear that malicious actors are both willing and able to leverage digital applications to subvert American democracy. With the advent of powerful new language models, those actors now have a potent new weapon in their arsenal. Lawmakers and regulators will need to work proactively to guard against the risks they introduce.\n", + "\n", + "\n", + "Sarah Kreps is a Non-Resident Senior Fellow in the Brookings Foreign Policy Program and the Brookings Artificial Intelligence and Emerging Technology Initiative, as well as the Director of the Tech Policy Institute at Cornell University.\n", + "\n", + "\n", + "Douglas Kriner is the Clinton Rossiter Professor in American Institutions and faculty director of the Institute of Politics and Global Affairs at Cornell University.\n", + "\n", + "\n", + "Microsoft, a major partner and investor in OpenAI, provides financial support to the Brookings Institution. The findings, interpretations, and conclusions posted in this piece are solely those of the authors and are not influenced by any donation.\n", + "\n", + "https://www.brookings.edu/techstream/lessons-from-the-meme-war-in-ukraine/\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "New article found for topic: python\n", + "URL: https://www.brookings.edu/techstream/lessons-from-the-meme-war-in-ukraine/\n", + "TITLE: Lessons from the meme war in Ukraine\n", + "BODY:\n", + "\n", + "Illustration of a mini replica of tanks and soldiers, seen in front of the Ukrainian flag in Krakow, Poland. (Photo by Artur Widak/NurPhoto)\n", + "\n", + "\n", + "In 1927, the political scientist Harold Lasswell wrote about political propaganda as “the management of collective attitudes by the manipulation of significant symbols.” Underlying Lasswell’s work were two sets of insights. One is that the mass public played a key role in political outcomes, such as success and failure in war. Second, that those public attitudes could also be manipulated. Scaling to the mass-level, however, required simplicity. This included the use of symbols and slogans that were memorable, such that they could frame “pictures”—or, cognitive shortcuts—that the public recalled when engaging elected officials to shape certain policies.\n", + "\n", + "\n", + "Nowhere has the use of propaganda been more ubiquitous than in war, especially because acquiescence or resistance is based on public sentiment and behavior. In World War II, Hollywood produced films that “created a communal viewing experience unlike any during World War I” intended to maintain resolve for the war. These films capitalized on the public’s predisposition to understand social life in terms of in- and out-groups, which shapes how people often interpret foreign policies, including the use of force.\n", + "\n", + "\n", + "In contemporary conflict, those symbols have increasingly taken the form of memes, defined as a “piece of media that is repurposed to deliver a cultural, social, or political expression, mainly through humor.” Online users have attempted to counter the Islamic State by creating memes satirizing the group’s barbarism, especially on specific “Troll ISIS Days.” Lebanese Internet-users have ruthlessly mocked Hezbollah’s leader, Hassan Nasrallah, with memes.\n", + "\n", + "\n", + "Memes have also been a staple of the war in Ukraine, providing a valuable window into key questions about how actors use memes for political purposes in war. Who is the audience, what is the message, and what events drive the production of these memes?\n", + "\n", + "\n", + "To explore these and related questions, we compiled an original dataset of memes posted by Ukrainians throughout the war. The memes were all taken from Reddit, a popular social media website that allows users to comment in discussion forums based on shared interests. Overall, our analysis of Ukrainians’ use of memes points to several findings that shed new light on how other countries may use memes during conflict. First, memes are not used in isolation from a particular military operation on the battlefield, such as an offensive or counter-offensive. Rather, they are concurrent and complementary to these military efforts, suggesting that they are meant to play a supporting role. Second, memes do not seem intended to directly influence diplomacy, but may further diplomatic efforts indirectly by bolstering popular support for the war. Third, memes target a diverse array of audiences, including Ukrainian citizens, expatriate audiences abroad, and Russians, especially soldiers’ families. This suggests that those creating and posting memes assume that success is a function of both domestic resolve as well as foreign material support.\n", + "\n", + "\n", + "Our empirical approach: Data, method, and descriptive trends\n", + "\n", + "\n", + "We analyzed Ukraine-related memes generated between the beginning of the war on February 24, 2022, and January 14, 2023. Although the Internet is rife with memes, we focused on Reddit, using the PRAW library in Python, which uses Reddit’s Application Programming Interface to request data from the website. To optimize the library, we used it against a handful of subreddits, which limited our scraping to three subreddits used almost exclusively by Ukrainians: (1) /r/ukrmemes, (2) /r/UkraineMem, and (3) /r/ukraine22memes. This approach yielded 1,365 visual memes, along with metadata for each meme, including its title, author’s screen name, date and time of dissemination, and popularity. The latter is a score that Reddit publishes with every post to help users gauge how much attention it is getting, and is the difference between the number of “upvotes” and “downvotes” a post receives. A greater number of upvotes, therefore, indicates the post is more popular with Reddit users. Finally, we also randomly sampled from our data to confirm that our machine-coding process was reliable.1 \n", + "\n", + "\n", + "The graph below illustrates how the Ukrainian meme war has evolved over time. By plotting meme frequency and popularity against The New York Times’ key monthly developments in the war, we are able to show how the intensity and public uptake of memes correlates with political and military milestones throughout the war.\n", + "\n", + "\n", + "This figure, made from data provided by Reddit, reflects the meme score (left y-axis) and frequency (right y-axis) from February 24, 2022, to January 14, 2023. For ease of interpretation, we put dates in a day/month/year format (click to expand).\n", + "\n", + "\n", + "The graph above reveals several patterns. First, the use of memes surged during Russia’s invasion of Ukraine and has steadily declined throughout the war. This trend suggests that the meme campaign is likely more informal or crowd-sourced than centralized among Ukrainian officials and leaders. If this were a coordinated, top-down effort, we would expect to see more continuity over time, especially in terms of frequency. As a bottom-up effort, the declines point to the possibility of war fatigue among the population.\n", + "\n", + "\n", + "Second, the frequency and popularity of memes correspond to major ebbs and flows in the Ukraine war, with spikes that clearly relate to major offensives and battles. More specifically, memes seem to play a supporting role designed to amplify tactical effects on the battlefield rather than precede them as a separate form of psychological operations. This finding is in line with what U.S. Army General Christopher Cavoli, the Supreme Allied Commander-Europe, observed at a recent security forum in Sweden: “hard power is a reality.” In short, memes are meant not to replace hard power on the battlefield but instead to provide a psychological dividend to the successful application of hard power.\n", + "\n", + "\n", + "Third, even as memes mirror major milestones in the war, they do not seem to correspond closely with important diplomatic and political events. Among these include the announcement on May 18, 2022, that Sweden and Finland submitted accession documents to join the North Atlantic Treaty Organization, as well as Ukrainian President Volodymyr Zelenskyy’s visit to the White House in late December 2022. This may suggest that memes are hitched to some immediately observable effects, which are typically more pronounced on the battlefield rather than diplomacy, considering negotiations often occur over a longer time horizon.\n", + "\n", + "\n", + "A typology of memes\n", + "\n", + "\n", + "Given the visually evocative nature of an image, fully understanding the role played by memes in the Ukrainian conflict requires more than just empirical analysis. Examining a subset of specific memes tells a more complete story of what some analysts have referred to as “memetic warfare,” or the use of memes to control the narrative. Accordingly, we randomly selected a handful of memes that piece together a story about messages and audiences. \n", + "\n", + "\n", + "Our analysis suggests that a rich typology of memes has emerged during the war. For instance, expatriates in places like the United States often generate memes to establish a sense of solidarity and support abroad. The meme below illustrates this purpose while capitalizing on a clear reference to the popular U.S. television show, “The Office.”  Published on December 14, 2022, the Ukrainian is translated as “Glory to Ukraine!” suggesting a pro-Ukrainian sentiment. Such sentiment may be important to sustain public support for the war, especially in the United States where Congress passed the “Ukraine Democracy Defense Lend-Lease Act of 2022” on May 9. Following the precedent of World War II, this act facilitates the transfer of arms and equipment to the Ukrainian government to enable its military operations against Russia.\n", + "\n", + "\n", + "\n", + " I live in DC, so this was from a while ago when I went for a walk around the national mall. The couple were going to a small solidarity demonstration outside the White House from ukrainememes \n", + "\n", + "\n", + "\n", + "Memes can also serve as a commentary on a military operation. The meme below shows a Russian billboard that reads “Kherson—Forever Russia.” The bottom panel then mocks this claim with a SpongeBob SquarePants cartoon, suggesting that Ukrainians believe Russia’s attempt to occupy Kherson is as ridiculous as a childrens’ cartoon. This meme was posted on November 9, 2022, just as the Ukrainians were in the process of recapturing Kherson, which culminated several days later.\n", + "\n", + "\n", + "\n", + " „Kherson, forever Russia!“ from ukrainememes \n", + "\n", + "\n", + "\n", + "Similarly, the meme below is from April 20, 2022, days after the Ukrainians had used a drone to sink the Russian warship Moskva, the flagship ship of the Russian Navy’s Black Sea Fleet. It portrays a tough-looking Putin on a ship at the bottom of the sea. The artist appears to be Hajo de Reijger, a freelance illustrator who writes for Dutch newspapers and is based in Amsterdam, but the meme clearly has universal accessibility in highlighting how damaging the sinking of the Moskva was to Russian President Vladimir Putin’s image as a competent military leader.\n", + "\n", + "\n", + "\n", + " Battleship Moskva – Amsterdam (Netherlands), Hajo de Reijger (20/4/2022) from UkrainianMemes \n", + "\n", + "\n", + "\n", + "Lastly, some memes are in both Ukrainian and English, suggesting they are designed to shape the attitudes of domestic and international audiences. The following meme, also posted on June 11, 2022, carries the following title: “Putin lacks imagination—У Путина нет воображения.” This statement highlights Putin’s targeting of civilians during the war, contrasting this immoral and illegal use of force with other countries’ investment in children, a message that could be intended for an audience in Russia, for example soldiers’ parents.\n", + "\n", + "\n", + "\n", + " Putin lacks imagination -У Путина нет воображения from memes \n", + "\n", + "\n", + "\n", + "The implications\n", + "\n", + "\n", + "What insights can we draw from this early analysis of memes in Ukraine? In a sense, the most powerful argument that can be made in defense of memes is theoretical. Countries have always relied on psychological operations conducted through visual expression. They do so because they think that the visual medium is effective for persuasion. In a domestic context, the supporters of political candidates place yard signs around communities because they think people can be persuaded by these visual insinuations, and research suggests that those resources are not wasted. These signs influence vote shares.\n", + "\n", + "\n", + "Our initial investigation suggests that memes can play a similar role. They offer a simple and digestible way to communicate with supporters, both at home and abroad. Propping up support among citizens is important, if not integral, to the war effort in Ukraine. Ukrainians are at the literal tip of the spear; if they do not resist, the country will fail. The psychological persuasion and support of expatriates is also crucial because they live in countries that materially support the Ukrainian military.\n", + "\n", + "\n", + "Though our research reflects a mix of memes intended to connect with these audiences, we also find that memes, at least in Ukraine, also play a supporting role to combat operations. As we show, the frequency and popularity of memes track closely with key military milestones in the war and mostly function informally as a way to highlight battlefield successes. To best capitalize on the psychological dividends that memes promise, however, officials should better integrate them into their overall wartime strategies, perhaps through a “Meme Warfare Center,” as recommended by other analysts. The relative decline of memes throughout the Ukrainian war raises another set of questions. Why, if their messages have such powerful potential, have memes declined over time? Do memes operate in a similar fashion as the news cycle where internet-users simply move on to the next viral social issue after a matter of time? Have meme creators concluded that the images are not effective? Has another form of online persuasion, if any, taken their place? Does the use of different social media platforms, including Facebook, LinkedIn, Telegram, and Twitter, shape the frequency and popularity of memes, as well as the anticipated effects? Scholars should study these and related questions to better understand if—and how—memes can play a role in the psychology, and perhaps even outcomes, of war.\n", + "\n", + "\n", + "Sarah Kreps is the John L. Wetherill Professor of Government at Cornell University and the director of the Cornell Brooks School Tech Policy Institute.\n", + "\n", + "\n", + "Paul Lushenko is a lieutenant colonel in the U.S. Army and deputy director of the Cornell Brooks School Tech Policy Institute.\n", + "\n", + "\n", + "Keith Carter is a lieutenant colonel in the U.S. Army and director of the defense and strategic studies program at the United States Military Academy.\n", + "\n", + "\n", + "Acknowledgments: The authors would like to thank Alexey Elkin for excellent research assistance, as well as Matthew Evangelista, Bryn Rosenfeld, Aleksandar Vladicic, and an anonymous reviewer for feedback on this research.\n", + "\n", + "\n", + "The views expressed in this article are those of the authors and do not necessarily reflect the official policy or position of the United States Department of the Army, Department of Defense, or Government.\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "Note 1. We manually reviewed a cross-section of the memes to check the accuracy of our scraping technique. Specifically, we built an algorithm to randomly select a percentage of memes from our database. This process resulted in a subset of 34 memes—approximately 3% of our database—from which we ensured they were, in fact, memes. Our hand-coding recorded an 85% fidelity rate on the machine-coding, suggesting that the volume of memes may be somewhat lower than the overall number of hits we gathered but we have no reason to think that this affects the broader patterns we observe.\n", + "\n", + "https://www.brookings.edu/research/preventing-pandemics-through-biodiversity-conservation-and-smart-wildlife-trade-regulation/\n", + "New article found for topic: python\n", + "URL: https://www.brookings.edu/research/preventing-pandemics-through-biodiversity-conservation-and-smart-wildlife-trade-regulation/\n", + "TITLE: Preventing pandemics through biodiversity conservation and smart wildlife trade regulation\n", + "Preventing pandemics through biodiversity conservation and smart wildlife trade regulation\n", + "BODY:\n", + "\n", + "https://www.brookings.edu/blog/techtank/2017/11/16/leveraging-the-disruptive-power-of-artificial-intelligence-for-fairer-opportunities/\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "New article found for topic: python\n", + "URL: https://www.brookings.edu/blog/techtank/2017/11/16/leveraging-the-disruptive-power-of-artificial-intelligence-for-fairer-opportunities/\n", + "TITLE: Leveraging the disruptive power of artificial intelligence for fairer opportunities\n", + "Leveraging the disruptive power of artificial intelligence for fairer opportunities\n", + "BODY:\n", + "\n", + "https://www.brookings.edu/blog/up-front/2015/12/21/the-hutchins-center-explains-budgeting-for-aging-america/\n", + "New article found for topic: python\n", + "URL: https://www.brookings.edu/blog/up-front/2015/12/21/the-hutchins-center-explains-budgeting-for-aging-america/\n", + "TITLE: The Hutchins Center Explains: Budgeting for aging America\n", + "The Hutchins Center Explains: Budgeting for aging America\n", + "BODY:\n", + "\n", + "https://www.brookings.edu/research/an-atlanta-organizations-mission-to-bring-racial-equity-to-the-tech-ecosystem/\n", + "New article found for topic: python\n", + "URL: https://www.brookings.edu/research/an-atlanta-organizations-mission-to-bring-racial-equity-to-the-tech-ecosystem/\n", + "TITLE: An Atlanta organization’s mission to bring racial equity to the tech ecosystem\n", + "An Atlanta organization’s mission to bring racial equity to the tech ecosystem\n", + "BODY:\n", + "\n", + "https://www.brookings.edu/blog/the-avenue/2014/08/06/the-silicon-valley-wage-premium/\n", + "New article found for topic: python\n", + "URL: https://www.brookings.edu/blog/the-avenue/2014/08/06/the-silicon-valley-wage-premium/\n", + "TITLE: The Silicon Valley Wage Premium\n", + "The Silicon Valley Wage Premium\n", + "BODY:\n", + "\n", + "https://www.brookings.edu/blog/techtank/2016/03/01/idea-to-retire-old-methods-of-policy-education/\n", + "New article found for topic: python\n", + "URL: https://www.brookings.edu/blog/techtank/2016/03/01/idea-to-retire-old-methods-of-policy-education/\n", + "TITLE: Idea to Retire: Old methods of policy education\n", + "Idea to Retire: Old methods of policy education\n", + "BODY:\n", + "\n", + "https://www.brookings.edu/research/institutionalizing-data-analysis-in-german-federal-governance/\n", + "New article found for topic: python\n", + "URL: https://www.brookings.edu/research/institutionalizing-data-analysis-in-german-federal-governance/\n", + "TITLE: Institutionalizing Data Analysis in German Federal Governance\n", + "Institutionalizing Data Analysis in German Federal Governance\n", + "BODY:\n", + "\n", + "https://www.brookings.edu/opinions/skills-success-and-why-your-choice-of-college-matters/\n", + "New article found for topic: python\n", + "URL: https://www.brookings.edu/opinions/skills-success-and-why-your-choice-of-college-matters/\n", + "TITLE: Skills, success, and why your choice of college matters\n", + "Skills, success, and why your choice of college matters\n", + "BODY:\n", + "\n", + "https://www.brookings.edu/research/making-waves-in-india-media-and-the-covid-19-pandemic/\n", + "New article found for topic: python\n", + "URL: https://www.brookings.edu/research/making-waves-in-india-media-and-the-covid-19-pandemic/\n", + "TITLE: Making waves in India: Media and the COVID-19 pandemic\n", + "Making waves in India: Media and the COVID-19 pandemic\n", + "BODY:\n", + "\n", + "https://www.brookings.edu/essay/building-skills-for-life-how-to-expand-and-improve-computer-science-education-around-the-world/\n", + "New article found for topic: python\n", + "URL: https://www.brookings.edu/essay/building-skills-for-life-how-to-expand-and-improve-computer-science-education-around-the-world/\n", + "TITLE: \n", + "\t\t\t\tBUILDING SKILLS FOR LIFE\t\t\t\n", + "BODY:\n", + "\n", + "This report makes the case for expanding computer science education in primary and secondary schools around the world, and outlines the key challenges standing in the way. Through analysis of regional and national education systems at various stages of progress in implementing computer science education programs, the report offers transferable lessons learned across a wide range of settings with the aim that all students—regardless of income level, race, or sex—can one day build foundational skills necessary for thriving in the 21st century.\n", + "\n", + "\n", + "Download the full report\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "Introduction\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "Access to education has expanded around the world since the late 1990s through the combined efforts of governments, bilateral and multilateral agencies, donors, civil society, and the private sector, yet education quality has not kept pace. Even before the COVID-19 pandemic led to school closures around the world, all young people were not developing the broad suite of skills they need to thrive in work, life, and citizenship (Filmer, Langthaler, Stehrer, & Vogel, 2018).\n", + "\n", + "\n", + "The impact of the pandemic on education investment, student learning, and longer-term economic outcomes threatens not only to dial back progress to date in addressing this learning crisis in skills development but also to further widen learning gaps within and between countries. Beyond the immediate and disparate impacts of COVID-19 on students’ access to quality learning, the global economic crisis it has precipitated will shrink government budgets, potentially resulting in lower education investment and impacting the ability to provide quality education (Vegas, 2020). There is also a concern that as governments struggle to reopen schools and/or provide sufficient distance-learning opportunities, many education systems will focus on foundational skills, such as literacy and numeracy, neglecting a broader set of skills needed to thrive in a rapidly changing, technologically-advanced world.\n", + "\n", + "\n", + "Among these broader skills, knowledge of computer science (CS) is increasingly relevant. CS is defined as “the study of computers and algorithmic processes, including their principles, their hardware and software designs, their [implementation], and their impact on society” (Tucker, 2003).1 CS skills enable individuals to understand how technology works, and how best to harness its potential to improve lives. The goal of CS education is to develop computational thinking skills, which refer to the “thought processes involved in expressing solutions as computational steps or algorithms that can be carried out by a computer” (K-12 Computer Science Framework Steering Committee, 2016). CS education is also distinct from computer or digital literacy, in that it is more concerned with computer design than with computer use. For example, coding is a skill one would learn in a CS course, while creating a document or slideshow presentation using an existing program is a skill one would learn in a computer or digital literacy course.\n", + "\n", + "\n", + "Research has shown that students benefit from CS education by increasing college enrollment rates and developing problem-solving abilities (Brown & Brown, 2020; Salehi et al., 2020). Research has also shown that lessons in computational thinking improve student response inhibition, planning, and coding skills (Arfé et al., 2020). Importantly, CS skills pay off in the labor market through higher likelihood of employment and better wages (Hanson & Slaughter, 2016; Nager & Atkinson, 2016). As these skills take preeminence in the rapidly changing 21st century, CS education promises to significantly enhance student preparedness for the future of work and active citizenship.\n", + "\n", + "\n", + "The benefits of CS education extend beyond economic motivations. Given the increasing integration of technology into many aspects of daily life in the 21st century, a functional knowledge of how computers work—beyond the simple use of applications—will help all students.\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "Why expand CS education?\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "By this point, many countries have begun making progress toward offering CS education more universally for their students. The specific reasons for offering it will be as varied as the countries themselves, though economic arguments often top the list of motivations. Other considerations beyond economics, however, are also relevant, and we account for the most common of these varied motives here.\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "The economic argument\n", + "\n", + "\n", + "At the macroeconomic level, previous research has suggested that countries with more workers with ICT (information, communications, and technology) skills will have higher economic growth through increases in productivity (Maryska, Doucek, & Kunstova, 2012; Jorgenson & Vu, 2016). Recent global data indicate that there is a positive relationship between the share of a country’s workforce with ICT skills and its economic growth. For example, using data from the Organisation for Economic Cooperation and Development (OECD), we find that countries with a higher share of graduates from an ICT field tend to have higher rates of per capita GDP (Figure 1). The strength of the estimated relationship here is noteworthy: A one percentage point increase in the share of ICT graduates correlates with nearly a quarter percentage point increase in recent economic growth, though we cannot determine the causal nature of this relationship (if any). Nonetheless, this figure supports the common view that economic growth follows from greater levels of investment in technological education.\n", + "\n", + "\n", + "FIGURE 1\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "At the microeconomic level, CS skills pay off for individuals—both for those who later choose to specialize in CS and those who do not. Focusing first on the majority of students who pursue careers outside of CS, foundational training in CS is still beneficial. Technology is becoming more heavily integrated across many industrial endeavors and academic disciplines—not just those typically included under the umbrella of science, technology, engineering, and mathematics (STEM) occupations. Careers from law to manufacturing to retail to health sciences all use computing and data more intensively now than in decades past (Lemieux, 2014). For example, using data from Germany, researchers showed that higher education programs in CS compared favorably against many other fields of study, producing a relatively high return on investment for lower risk (Glocker and Storck, 2014). Notably, completing advanced training in CS is not necessary to attain these benefits; rather, even short introductions to foundational skills in CS can increase young students’ executive functions (Arfe et al., 2020). Further, those with CS training develop better problem-solving abilities compared to those with more general training in math and sciences, suggesting that CS education offers unique skills not readily developed in other more common subjects (Salehi et al., 2020).\n", + "\n", + "\n", + "For those who choose to pursue advanced CS studies, specializing in CS pays off both in employment opportunities and earnings. For example, data from the U.S. show workers with CS skills are less likely to be unemployed than workers in other occupations (Figure 2). Moreover, the average earnings for workers with CS skills are higher than for workers in other occupations (Figure 3). These results are consistent across multiple studies using U.S. data (Carnevale et al., 2013; Altonji et al., 2012) and international data (Belfield et al., 2019; Hastings et al., 2013; Kirkeboen et al., 2016). Further, the U.S. Bureau of Labor Statistics has projected that the market for CS professionals will continue to grow at twice the speed of the rest of the labor market between 2014 and 2024 (National Academies of Sciences, 2018).\n", + "\n", + "\n", + "FIGURE 2\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "FIGURE 3\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "A common, though inaccurate, perception about the CS field is that anybody with a passion for technology can succeed without formal training. There is a nugget of truth in this view, as many leaders of major technology companies including Bill Gates, Elon Musk, Mark Zuckerberg, and many others have famously risen to the top of the field despite not having bachelor’s degrees in CS. Yet, it is a fallacy to assume that these outliers are representative of most who are successful in the field. This misconception could lead observers to conclude that investments in universal CS education are, at best, ineffective: providing skills to people who would learn them on their own regardless, and spending resources on developing skills in people who will not use them. However, such conclusions are not supported by empirical evidence. Rather, across STEM disciplines, including CS, higher levels of training and educational attainment lead to stronger employment outcomes, on average, than those with lesser levels of training in the same fields (Altonji et al., 2016; Altonji and Zhong, 2021).\n", + "\n", + "\n", + "The inequality argument\n", + "\n", + "\n", + "Technology—and particularly unequal access to its benefits—has been a key driver of social and economic inequality within countries. That is, those with elite social status or higher wealth have historically gotten access to technology first for their private advantages, which tends to reinforce preexisting social and economic inequalities. Conversely, providing universal access to CS education and computing technologies can enable those with lower access to technological resources the opportunity to catch up and, consequently, mitigate these inequalities. Empirical studies have shown how technological skills or occupations, in particular, have reduced inequalities between groups or accelerated the assimilation of immigrants (Hanson and Slaughter, 2017; DeVol, 2016).\n", + "\n", + "\n", + "Technology and CS education are likewise frequently considered critical in narrowing income gaps between developed and developing countries. This argument can be particularly compelling for low-income countries, as global development gaps will only be expected to widen if low-income countries’ investments in these domains falter while high-income countries continue to move ahead. Rather, strategic and intensive technological investment is frequently seen as a key strategy for less-developed countries to leapfrog stages of economic development to quickly catch up to more advanced countries (Fong, 2009; Lee, 2019).\n", + "\n", + "\n", + "CS skills enable adaptation in a quickly changing world, and adaptability is critical to progress in society and the economy. Perhaps there is no better illustration of the ability to thrive and adapt than from the COVID-19 pandemic. The pandemic has forced closures of many public spaces across the globe, though those closures’ impacts have been disproportionately felt across workers and sectors. Workers with the skills and abilities to move their job functions online have generally endured the pandemic more comfortably than those without those skills. And even more importantly, the organizations and private companies that had the human capacity to identify how technology could be utilized and applied to their operations could adapt in the face of the pandemic, while those without the resources to pivot their operations have frequently been forced to close in the wake of pandemic-induced restrictions. Thus, the pandemic bestowed comparative benefits on those with access to technology, the skills to use it, and the vision to recognize and implement novel applications quickly, while often punishing those with the least access and resources (OECD, 2021).\n", + "\n", + "\n", + "Failing to invest in technology and CS education may result in constrained global competitiveness, leaving governments less able to support its citizens. We recognize that efforts to expand CS education will demand time and money of public officials and school leaders, often in the face of other worthy competing demands. Though the contemporary costs may even seem prohibitive in some cases, the costs of inaction (while less immediately visible) are also real and meaningful in most contexts.\n", + "\n", + "\n", + "Beyond economics\n", + "\n", + "\n", + "We expect the benefits of CS education to extend beyond economic motivations, as well. Many household activities that were previously performed in real life are now often performed digitally, ranging from banking, shopping, travel planning, and socializing. A functional knowledge of how computers work—beyond the simple use of applications—should benefit all students as they mature into adults given the increasing integration of technology into many aspects of daily life in the 21st century. For example, whether a person wants to find a job or a romantic partner, these activities frequently occur through the use of technology, and understanding how matching algorithms work make for more sophisticated technology users in the future. Familiarity with CS basic principles can provide users more flexibility in the face of constant innovation and make them less vulnerable to digital security threats or predators (Livingstone et al., 2011). Many school systems now provide lessons in online safety for children, and those lessons will presumably be more effective if children have a foundational understanding of how the internet works.\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "Global advances in expanding CS education\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "To better understand what is needed to expand CS education, we first took stock of the extent to which countries around the world have integrated CS education into primary and secondary schools, and how this varied by region and income level. We also reviewed the existing literature on integrating CS into K-12 education to gain a deeper understanding of the key barriers and challenges to expanding CS education globally. Then, we selected jurisdictions at various stages of progress in implementing CS education programs in from multiple regions of the world and income levels, and drafted in-depth case studies on the origins, key milestones, barriers, and challenges of CS expansion.\n", + "\n", + "\n", + "Progress in expanding CS education across the globe\n", + "\n", + "\n", + "As shown in Figure 4, the extent to which CS education is offered in primary and secondary schools varies across the globe. Countries with mandatory CS education are geographically clustered in Eastern Europe and East Asia. Most states and provinces in the U.S. and Canada offer CS on a school-to-school basis or as an elective course. Multiple countries in Western Europe offer CS education as a cross-curricular topic integrated into other subjects. Latin America and Central and Southeast Asia have the most countries that have announced CS education programs or pilot projects. Countries in Africa and the Middle East have integrated the least amount of CS education into school curricula. Nevertheless, the number of countries piloting programs or adopting CS curricula indicate a global trend of more education systems integrating the subject into their curriculum.\n", + "\n", + "\n", + "FIGURE 4\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "As expected, students living in higher-income countries generally have better access to CS education. As Figure 5 shows, 43 percent of high-income countries require students to learn CS education in primary and/or secondary schools. Additionally, high-income countries also offer CS as an elective course to the largest share of the population. A further 35 percent of high-income countries offer CS on a school-to-school basis while not making it mandatory for all schools. Interestingly, upper-middle income countries host the largest share of students (62 percent) who are required to learn CS at any point in primary or secondary schools. Presumably, many upper-middle income countries likely have national economic development strategies focused on expanding tech-related jobs, and thus see the need to expand the labor force with CS skills. By contrast, only 5 percent of lower-middle income countries require CS during primary or secondary school, while 58 percent may offer CS education on a school-to-school basis.\n", + "\n", + "\n", + "FIGURE 5\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "Key barriers and challenges to expand CS education globally\n", + "\n", + "\n", + "To expand quality CS education, education systems must overcome enormous challenges. Many countries do not have enough teachers who are qualified to teach CS, and even though there is growing interest among students to pursue CS, relatively few students pursue more advanced training like CS testing certifications (Department for Education, 2019) or CS undergraduate majors compared to other STEM fields like engineering or biology (Hendrickson, 2019). This is especially true for girls and underrepresented minorities, who generally have fewer opportunities to develop an interest in CS and STEM more broadly (Code.org & CSTA, 2018). Our review of the literature identified four key challenges to expanding CS education.:\n", + "\n", + "\n", + "1. Providing access to ICT infrastructure to students and educators\n", + "\n", + "\n", + "Student access to ICT infrastructure, including both personal access to computing devices and an internet connection, is critical to a robust CS education. Without this infrastructure, students cannot easily integrate CS skills into their daily lives, and they will have few opportunities to experiment with new approaches on their own.\n", + "\n", + "\n", + "However, some initiatives have succeeded by introducing elements of CS education in settings without adequate ICT infrastructure. For example, many educators use alternative learning strategies like CS Unplugged to teach CS and computational thinking when computers are unavailable (Bell & Vahrenhold, 2018). One study shows that analog lessons can help primary school students develop computational thinking skills (Harris, 2018). Even without laptops or desktop computers, it is still possible for teachers to use digital tools for computational thinking. In South Africa, Professor Jean Greyling of Nelson Mandela University Computing Sciences co-created Tanks, a game that uses puzzle pieces and a mobile application to teach coding to children (Ellis, 2021). This is an especially useful concept, as many households and schools in South Africa and other developing countries have smartphones and access to analog materials but do not have access to personal computers or broadband connectivity (McCrocklin, 2021).\n", + "\n", + "\n", + "Taking a full CS curriculum to scale, however, requires investing in adequate access to ICT infrastructure for educators and students (Lockwood & Cornell, 2013). Indeed, as discussed in Section 3, our analysis of numerous case studies indicates that ICT infrastructure in schools provides a critical foundation to expand CS education.\n", + "\n", + "\n", + "2. Ensuring qualified teachers through teacher preparation and professional development\n", + "\n", + "\n", + "Many education systems encounter shortages of qualified CS teachers, contributing to a major bottleneck in CS expansion. A well-prepared and knowledgeable teacher is the most important component for instruction in commonly taught subjects (Chetty et al. 2014 a,b; Rivkin et al., 2005). We suspect this is no different for CS, though major deficiencies in the necessary CS skills among the teacher workforce are evident. For example, in a survey of preservice elementary school teachers in the United States, only 10 percent responded that they understood the concept of computational thinking (Campbell & Heller, 2019). Until six years ago, 75 percent of teachers in the U.S. incorrectly considered “creating documents or presentations on the computer” as a topic one would learn in a CS course (Google & Gallup, 2015), demonstrating a poor understanding of the distinction between CS and computer literacy. Other case studies, surveys, and interviews have found that teachers in India, Saudi Arabia, the U.K., and Turkey self-report low confidence in their understanding of CS (Ramen et al., 2015; Alfayez & Lambert, 2019; Royal Society, 2017; Gülbahar & Kalelioğlu, 2017). Indeed, developing the necessary skills and confidence levels for teachers to offer effective CS instruction remains challenging.\n", + "\n", + "\n", + "To address these challenges, school systems have introduced continuous professional development (PD), postgraduate certification programs, and CS credentials issued by teacher education degree programs. PD programs are common approaches, as they utilize the existing teacher workforce to fill the needs for special skills, rather than recruiting specialized teachers from outside the school system. For example, the British Computing Society created 10 regional university-based hubs to lead training activities, including lectures and meetings, to facilitate collaboration as part of the network of excellence (Dickens, 2016; Heintz et al., 2016; Royal Society, 2017). Most hubs involve multi-day seminars and workshops meant to familiarize teachers with CS concepts and provide ongoing support to help teachers as they encounter new challenges in the classroom. Cutts et al. (2017) further recommend teacher-led PD groups so that CS teachers can form collaborative professional networks. Various teacher surveys have found these PD programs in CS helpful (Alkaria & Alhassan, 2017; Goode et al., 2014). Still, more evidence is needed on the effectiveness of PD programs in CS education specifically (Hill, 2009).\n", + "\n", + "\n", + "Less commonly, some education systems have worked with teacher training institutions to introduce certification schemes so teachers can signal their unique qualifications in CS to employers. This signal can make teacher recruitment more transparent and incentivize more teachers to pursue training. This approach does require, though, an investment in developing CS education faculty at the teacher training institution, which may be a critical bottleneck in many places (Delyser et al., 2018). Advocates of the approach have recommended that school systems initiate certification schemes quickly and with a low bar at first, followed by improvement over time (Code.org, 2017; Lang et al., 2013; Sentance & Csizmadia, 2017). Short-term recommendations include giving temporary licenses to teachers who meet minimum content and knowledge requirements. Long-term recommendations, on the other hand, encourage preservice teachers to take CS courses as part of their teaching degree programs or in-service teachers to take CS courses as part of their graduate studies to augment their skillset.2 Upon completing these courses, teachers would earn a full CS endorsement or certificate.\n", + "\n", + "\n", + "3. Fostering student engagement and interest in CS education\n", + "\n", + "\n", + "Surveys from various countries suggest that despite a clear economic incentive, relatively few K-12 students express interest in pursuing advanced CS education. For example, 3 out of 4 U.S. students in a recent survey declared no interest in pursuing a career in computer science. And the differences by gender are notable: Nearly three times as many male students (33 percent) compared to female students (12 percent) expressed interest in pursuing a computer science career in the future (Google & Gallup, 2020).\n", + "\n", + "\n", + "Generally, parents view CS education favorably but also hold distinct misconceptions. For instance, more than 80 percent of U.S. parents surveyed in a Google and Gallup (2016) study reported that they think CS is as important as any other discipline. Nevertheless, the same parents indicated biases around who should take CS courses: 57 percent of parents think that one needs to be “very smart” to learn CS (Google & Gallup, 2015). Researchers have equated this kind of thinking to the idea that some people could be inherently gifted or inept at CS, a belief that could discourage some students from developing an interest or talent in CS (McCartney, 2017). Contrary to this belief, Patitsas et al. (2019) found that only 5.8 percent of university-level exam distributions were multimodal, indicating that most classes did not have a measurable divide between those who were inherently gifted and those who were not. This signals that CS is no more specialized to specific groups of students than any other subject.\n", + "\n", + "\n", + "Fostering student engagement, however, does not equate to developing a generation of programmers. Employment projections suggest the future demand for workers with CS skills will likely outpace supply in the absence of promoting students’ interest in the field. Yet, no countries expand access to CS education with the expectation of turning all students into computer programmers. Forcing students into career paths that are unnatural fits for their interests and skill levels result in worse outcomes for students at the decision margins (Kirkeboen et al., 2016). Rather, current engagement efforts both expose students to foundational skills that help navigate technology in 21st century life and provide opportunities for students to explore technical fields.\n", + "\n", + "\n", + "A lack of diversity in CS education not only excludes some people from accessing high-paying jobs, but it also reduces the number of students who would enter and succeed in the field (Du & Wimmer, 2019). Girls and racial minorities have been historically underrepresented in CS education (Sax et al., 2016). Research indicates that the diversity gap is not due to innate talent differences among demographic groups (Sullivan & Bers, 2012; Cussó-Calabuig et al., 2017), but rather a disparity of access to CS content (Google & Gallup 2016; Code.org & CSTA, 2018; Du & Wimmer, 2019), widely held cultural perceptions, and poor representation of women and underrepresented minorities (URMs) among industry leaders and in media depictions (Google & Gallup, 2015; Ayebi-Arthur, 2011; Downes & Looker, 2011).\n", + "\n", + "\n", + "To help meet the demand for CS professionals, government and philanthropic organizations have implemented programs that familiarize students with CS. By increasing student interest among K-12 students who may eventually pursue CS professions, these strategies have the potential to address the well documented lack of diversity in the tech industry (Harrison, 2019; Ioannou, 2018).For example, some have used short, one-time lessons in coding to reduce student anxiety around CS. Of these lessons, perhaps the best known is Hour of Code, designed by Code.org. In multiple surveys, students indicated more confidence after exposure to this program (Phillips & Brooks, 2017; Doukaki et al., 2013; Lang et al., 2016). It is not clear, however, whether these programs make students more likely to consider semester-long CS courses (Phillips & Brooks, 2017; Lang et al., 2016).\n", + "\n", + "\n", + "Other initiatives create more time-intensive programs for students. The U.S. state of Georgia, for example, implemented a program involving after-school, weekend, and summer workshops over a six-year period. Georgia saw an increase in participation in the Advanced Placement (AP) CS exam during the duration of the program, especially among girls and URMs (Guzdial et al., 2014). Other states have offered similar programs, setting up summer camps and weekend workshops in universities to help high school students become familiar with CS (Best College Reviews, 2021). These initiatives, whether one-off introductions to CS or time-intensive programs, typically share the explicit goal of encouraging participation in CS education among all students, and especially girls and URMs.\n", + "\n", + "\n", + "Yet, while studies indicate that Hour of Code and summer camps might improve student enthusiasm for CS, they do not provide the kind of rigorous impact assessment one would need to make a definitive conclusion of their effectiveness. They do not use a valid control group, meaning that there is no like-for-like comparison to students who are similar except for no exposure to the program. It is not clear that the increase in girls and URMs taking CS would not have happened if it were not for Georgia’s after-school clubs.\n", + "\n", + "\n", + "4. Generating and using evidence on curriculum and core competencies, instructional methods, and assessment\n", + "\n", + "\n", + "There is no one-size-fits-all CS curriculum for all education systems, schools, or classrooms. Regional contexts, school infrastructure, prior access, and exposure to CS need to be considered when developing CS curricula and competencies (Ackovska et al., 2015). Some CS skills, such as programming language, require access to computer infrastructure that may be absent in some contexts (Lockwood & Cornell, 2013). Rather than prescribing a curriculum, the U.S. K-12 Computer Science Framework Steering Committee (2016) recommends foundational CS concepts and competencies for education systems to consider. This framework encourages curriculum developers and educators to create learning experiences that extend beyond the framework to encompass student interests and abilities.\n", + "\n", + "\n", + "There is increasing consensus around what core CS competencies students should master when they complete primary and secondary education. Core competencies that students may learn by the end of primary school include:\n", + "\n", + "\n", + "abstraction—creating a model to solve a problem;generalization—remixing and reusing resources that were previously created;decomposition—breaking a complex task into simpler subtasks;algorithmic thinking—defining a series of steps for a solution, putting instructions in the correct sequence, and formulating mathematical and logical expressions;programming—understanding how to code a solution using the available features and syntax of a programming language or environment; anddebugging—recognizing when instructions do not correspond to actions and then removing or fixing errors (Angeli, 2016).\n", + "\n", + "\n", + "Competencies that secondary school students may learn in CS courses include:\n", + "\n", + "\n", + "logical and abstract thinking;representations of data, including various kinds of data structures;problem-solving by designing and programming algorithms using digital devices;performing calculations and executing programs;collaboration; and,ethics such as privacy and data security (Syslo & Kwiatkowska, 2015).\n", + "\n", + "\n", + "Several studies have described various methods for teaching CS core competencies. Integrated development environments are recommended especially for teaching coding skills (Florez et al., 2017; Saez-Lopez et al., 2016).2 These environments include block-based programming languages that encourage novice programmers to engage with programming, in part by alleviating the burden of syntax on learners (Weintrop & Wilensky, 2017; Repenning, 1993). Others recommended a variety of teaching methods that blend computerized lessons with offline activities (Taub et al. 2009; Curzon et al., 2009, Ackovska et al., 2015). This approach is meant to teach core concepts of computational thinking while keeping students engaged in physical, as well as digital, environments (Nishida et al., 2009). CS Unplugged, for example, provides kinesthetic lesson plans that include games and puzzles that teach core CS concepts like decomposition and algorithmic thinking.\n", + "\n", + "\n", + "Various studies have also attempted to measure traditional lecture-based instruction for CS (Alhassan 2017; Cicek & Taspinar, 2016).3 These studies, however, rely on small sample sizes wherein the experiment and control group each comprised of individual classes. More rigorous research is required to understand the effectiveness of teaching strategies for CS.\n", + "\n", + "\n", + "No consensus has emerged on the best ways to assess student competency in core CS concepts (So et al., 2019; Djambong & Freiman, 2016). Though various approaches to assessment are widely available—including classical cognitive tests, standardized tests in digital environments, and CS Unplugged activity tests—too many countries have yet to introduce regular assessments that may evaluate various curricula or instructional methods in CS. While several assessments have been developed for CS and CT at various grade levels as part of various research studies, there have been challenges to broader use. This is due to either a lack of large-scale studies using these assessments or diversity in programming environments used to teach programming and CS or simply a lack of interest in using objective tests of learning (as opposed to student projects and portfolios).\n", + "\n", + "\n", + "Fortunately, a growing number of organizations are developing standardized tests in CS and computational thinking. For example, the International Computer and Information Literacy Study included examinations in computational thinking in 2018 that had two 25-minute modules, where students were asked to develop a sequence of tasks in a program that related to a unified theme (Fraillon et al., 2020). The OECD’s PISA will also include questions in 2021 to assess computational thinking across countries (Schleicher & Partovi, 2019). The AP CS exam has also yielded useful comparisons that have indirectly evaluated CS teacher PD programs (Brown & Brown, 2019).\n", + "\n", + "\n", + "In summary, the current evidence base provides little consensus on the specific means of scaling a high-quality CS education and leaves wide latitude for experimentation. Consequently, in this report we do not offer prescriptions on how to expand CS education, even while arguing that expanding access to it generally is beneficial for students and the societies that invest in it. Given the current (uneven) distribution of ICT infrastructure and CS education resources, high-quality CS education may be at odds with expanded access. While we focus on ensuring universal access first, it is important to recognize that as CS education scales both locally and globally, the issues of curricula, pedagogies, instructor quality, and evaluation naturally become more pressing.\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "Lessons from education systems that have introduced CS education\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "Based on the available literature discussed in the previous section, we selected education systems that have implemented CS education programs and reviewed their progress through in-depth case studies. Intentionally, we selected jurisdictions at various levels of economic development, at different levels of progress in expanding CS education, and from different regions of the world. They include Arkansas (U.S.), British Columbia (Canada), Chile, England, Italy, New Brunswick (Canada), Poland, South Africa, South Korea, Thailand, and Uruguay. For each case, we reviewed the historical origins for introducing CS education and the institutional arrangements involved in CS education’s expansion. We also analyzed how the jurisdictions addressed the common challenges of ensuring CS teacher preparation and qualification, fostering student demand for CS education (especially among girls and URMs), and how they developed curriculum, identified core competencies, promoted effective instruction, and assessed students’ CS skills. In this section, we draw lessons from these case studies, which can be downloaded and read in full at the bottom of this page.\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "Figure 6 presents a graphical representation summarizing the trajectories of the case study jurisdictions as they expanded CS education. Together, the elements in the figure provide a rough approximation of how CS education has expanded in recent years in each case. For example, when South Korea focused its efforts on universal CS education in 2015, basic ICT infrastructure and broadband connectivity were already available in all schools and two CS education expansion policies had been previously implemented. Its movement since 2015 is represented purely in the vertical policy action space, as it moved up four intervals on the index. Uruguay, conversely, started expanding its CS education program t a lower level both in terms of ICT infrastructure (x-axis) and existing CS policies (y-axis). Since starting CS expansion efforts in 2007, though, it has built a robust ICT infrastructure in its school systems and implemented 4 of 7 possible policy actions.\n", + "\n", + "\n", + "FIGURE 6\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "Figure 6 suggests that first securing access to ICT infrastructure and broadband connectivity allows systems to dramatically improve access to and the quality of CS education. Examples include England, British Columbia, South Korea, and Arkansas. At the same time, Figure 6 suggests that systems that face the dual challenge of expanding ICT infrastructure and broadband connectivity and scaling the delivery of quality CS education, such as Chile, South Africa, Thailand, and Uruguay, may require more time and/or substantial investment to expand quality CS education to match the former cases. Even though Chile, Thailand, and especially Uruguay have made impressive progress since their CS education expansion efforts began, they continue to lag a few steps behind those countries that started with established ICT infrastructure in place.\n", + "\n", + "\n", + "Our analysis of these case studies surfaced six key lessons (Figure 7) for governments wishing to take CS education to scale in primary and secondary schools, which we discuss in further detail below.\n", + "\n", + "\n", + "FIGURE 7\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "1. Expanding tech-based jobs is a powerful lever for expanding CS education\n", + "\n", + "\n", + "In several of the case studies, economic development strategies were the underlying motivation to introduce or expand CS education. For example, Thailand’s 2017 20-year Strategic Plan marked the beginning of CS education in that country. The 72-page document, approved by the Thai Cabinet and Parliament, explained how Thailand could become a more “stable, prosperous, and sustainable” country and proposed to reform the education curriculum to prepare students for future labor demands (20-year National Strategy comes into effect, 2018). Similarly, Arkansas’s Governor Hutchinson made CS education a key part of his first campaign in 2014 (CS for All, n.d.), stating that “Through encouraging computer science and technology as a meaningful career path, we will produce more graduates prepared for the information-based economy that represents a wide-open job market for our young people” (Arkansas Department of Education, 2019).\n", + "\n", + "\n", + "Uruguay’s Plan Ceibal, named after the country’s national flowering tree, was likewise introduced in 2007 as a presidential initiative to incorporate technology in education and help close a gaping digital divide in the country. The initiative’s main objectives were to promote digital inclusion, graduate employability, a national digital culture, higher-order thinking skills, gender equity, and student motivation (Jara, Hepp, & Rodriguez, 2018)\n", + "\n", + "\n", + "Last, in 2018, the European Commission issued the Digital Education Action Plan that enumerated key digital skills for European citizens and students, including CS and computational thinking (European Commission, 2018). The plan encouraged young Europeans to understand the algorithms that underpin the technologies they use on a regular basis. In response to the plan, Italy’s 2018 National Indications and New Scenarios report included a discussion on the importance of computational thinking and the potential role of educational gaming and robotics in enhancing learning outcomes (Giacalone, 2019). Then, in 2019, the Italian Ministry of Education and the Parliament approved a legislative motion to include CS and computational thinking in primary school curricula by 2022 (Orizzontescuola, 2019).\n", + "\n", + "\n", + "In some cases, the impetus to expand CS education came more directly from demands from key stakeholders, including industry and parents. For example, British Columbia’s CS education program traces back to calls from a growing technology industry (Doucette, 2016). In 2016, the province’s technology sector employed 86,000 people—more than the mining, forestry, and oil and gas sectors combined, with high growth projections (Silcoff, 2016). The same year, leaders of the province’s technology companies revealed in interviews that access to talent had become their biggest concern (KPMG, 2016). According to a 2016 B.C. Technology Association report, the province needed 12,500 more graduates in CS from tertiary institutions between 2015 and 2021 to fill unmet demand in the labor market (Orton, 2018). The economic justification for improving CS education in the province was clear.\n", + "\n", + "\n", + "Growing parental demand helped create the impetus for changes to the CS curriculum in Poland. According to Kozlowski (2016), Polish parents perceive CS professions as some of the most desirable options for their children. And given the lack of options for CS education in schools, parents often seek out extracurricular workshops for their children to encourage them to develop their CS skills (Panskyi, Rowinska, & Biedron, 2019). The lack of in-school CS options for students created the push for curricular reforms to expand CS in primary and secondary schools. As former Minister of Education Anna Zalewska declared, Polish students “cannot afford to waste time on [the] slow, arduous task of building digital skills outside school [ and] only school education can offer systematic teaching of digital skills” (Szymański, 2016).\n", + "\n", + "\n", + "2. ICT in schools provides the foundation to expand CS education\n", + "\n", + "\n", + "Previous efforts to expand access to devices, connectivity, or basic computer literacy in schools provided a starting point in several jurisdictions to expand CS education. For example, the Uruguayan government built its CS education program after implementing expansive one-to-one computing projects, which made CS education affordable and accessible. In England, an ICT course was implemented in schools in the mid-1990s. These dedicated hours during the school day for ICT facilitated the expansion of CS education in the country.\n", + "\n", + "\n", + "The Chilean Enlaces program, developed in 1992 as a network of 24 universities, technology companies, and other organizations (Jara, Hepp, & Rodriguez, 2018; Sánchez & Salinas, 2008) sought to equip schools with digital tools and train teachers in their use (Severin, 2016). It provided internet connectivity and digital devices that enabled ICT education to take place in virtually all of Chile’s 10,000 public and subsidized private schools by 2008 (Santiago, Fiszbein, Jaramillo, & Radinger, 2017; Severin et al., 2016). Though Enlaces yielded few observable effects on classroom learning or ICT competencies (Sánchez & Salinas, 2008), the program provided the infrastructure needed to begin CS education initiatives years later.\n", + "\n", + "\n", + "While a history of ICT expansion can serve as a base for CS education, institutional flexibility to transform traditional ICT projects into CS education is crucial. The Chilean Enlaces program’s broader institutional reach resulted in a larger bureaucracy, slower implementation of new programs, and greater dependence on high-level political agendas (Severin, 2016). As a result, the program’s inflexibility prevented it from taking on new projects, placing the onus on the Ministry of Education to take the lead in initiating CS education. In Uruguay, Plan Ceibal’s initial top-down organizational structure enabled relatively fast implementation of the One Laptop per Child program, but closer coordination with educators and education authorities may have helped to better integrate education technology into teaching and learning. More recently, Plan Ceibal has involved teachers and school leaders more closely when introducing CS activities. In England, the transition from ICT courses to a computing curriculum that prioritized CS concepts, instead of computer literacy topics that the ICT teachers typically emphasized before the change, encountered some resistance. Many former ICT teachers were not prepared to implement the new program of study as intended, which leads us to the next key lesson.\n", + "\n", + "\n", + "3. Developing qualified teachers for CS education should be a top priority\n", + "\n", + "\n", + "The case studies highlight the critical need to invest in training adequate numbers of teachers to bring CS education to scale. For example, England took a modest approach to teacher training during the first five years of expanding its CS education K-12 program and discovered that its strategy fell short of its original ambitions. In 2013, the English Department for Education (DfE) funded the BCS to establish and run the Network of Excellence to create learning hubs and train a pool of “master” CS teachers. While over 500 master teachers were trained, the numbers were insufficient to expand CS education at scale. Then, in 2018 the DfE substantially increased its funding to establish the National Center for Computing Education (NCCE) and added 23 new computing hubs throughout England. Hubs offer support to primary and secondary computing teachers in their designated areas, including teaching, resources, and PD (Snowdon, 2019). In just over two years, England has come a long way toward fulfilling its goals of training teachers at scale with over 29,500 teachers engaged in some type of training (Teach Computing, 2020).\n", + "\n", + "\n", + "Several education systems partnered with higher education institutions to integrate CS education in both preservice and in-service teacher education programs. For example, two main institutions in British Columbia, Canada—the University of British Columbia and the University of Northern British Columbia—now offer CS courses in their pre-service teacher education programs. Similarly, in Poland, the Ministry of National Education sponsored teacher training courses in university CS departments. In Arkansas, state universities offer CS certification as part of preservice teacher training while partnering with the Arkansas Department of Education to host in-service professional development.\n", + "\n", + "\n", + "Still other systems partnered with nonprofit organizations to deliver teacher education programs. For instance, New Brunswick, Canada, partnered with the nonprofit organization Brilliant Labs to implement teacher PD programs in CS (Brilliant Labs, n.d.). In Chile, the Ministry of Education partnered with several nongovernmental organizations, including Code.org and Fundación Telefónica, to expand teacher training in CS education. Microsoft Philanthropies launched the Technology Education and Literacy in Schools (TEALS) in the United States and Canada to connect high school teachers to technology industry volunteers. The volunteer experts support instructors to learn CS independently over time and develop sustainable high school CS programs (Microsoft, n.d.).\n", + "\n", + "\n", + "To encourage teachers to participate in these training programs, several systems introduced teacher certification pathways in CS education. For example, in British Columbia, teachers need at least 24 credits of postsecondary coursework in CS education to be qualified to work in public schools. The Arkansas Department of Education incentivizes in-service teachers to attain certification through teaching CS courses and participating in approved PD programs (Code.org, CSTA, ECEP, 2019). In South Korea, where the teaching profession is highly selective and enjoys high social status, teachers receive comprehensive training on high-skill computational thinking elements, such as computer architecture, operating systems, programming, algorithms, networking, and multimedia. Only after receiving the “informatics–computer” teacher’s license may a teacher apply for the informatics teacher recruitment exam (Choi et al., 2015).\n", + "\n", + "\n", + "When faced with shortages of qualified teachers, remote instruction can provide greater access to qualified teachers. For example, a dearth of qualified CS teachers has been and continues to be a challenge for Uruguay. To address this challenge, in 2017, Plan Ceibal began providing remote instruction in computational thinking lessons for public school fifth and sixth graders and integrated fourth-grade students a year later. Students work on thematic projects anchored in a curricular context where instructors integrate tools like Scratch.4 During the school year, a group of students in a class can work on three to four projects during a weekly 45-minute videoconference with a remote instructor, while another group can work on projects for the same duration led by the classroom teacher. In a typical week, the remote instructor introduces an aspect of computational thinking. The in-class teacher then facilitates activities like block-based programming, circuit board examination, or other exercises prescribed by the remote teacher (Cobo & Montaldo, 2018).5 Importantly, Plan Ceibal implements Pensamiento Computacional, providing a remote instructor and videoconferencing devices at the request of schools, rather than imposing the curriculum on all classrooms (García, 2020). With the ongoing COVID-19 pandemic forcing many school systems across the globe to adopt remote instruction, at least temporarily, we speculate that remote learning is now well poised to become more common in expanding CS education in places facing ongoing teacher shortages.\n", + "\n", + "\n", + "4. Exposing students to CS education early helps foster demand, especially among underserved populations\n", + "\n", + "\n", + "Most education systems have underserved populations who lack the opportunity to develop an interest in CS, limiting opportunities later in life. For example, low CS enrollment rates for women at Italian universities reflect the gender gap in CS education. As of 2017, 21.6 percent and 12.3 percent of students completing bachelor’s degrees in information engineering and CS, respectively, were women (Marzolla, 2019). Further, female professors and researchers in these two subjects are also underrepresented. In 2018, only 15 percent and 24 percent of professors and researchers in CS and computer engineering, respectively, were women (Marzolla, 2019). Similar representation gaps at the highest levels of CS training are common globally. Thus, continuing to offer exposure to CS only in post-secondary education will likely perpetuate similar representation gaps.\n", + "\n", + "\n", + "To address this challenge, several education systems have implemented programs to make CS education accessible to girls and other underserved populations in early grades, before secondary school. For instance, to make CS education more gender balanced, the Italian Ministry of Education partnered with civil society organizations to implement programs to spur girls’ interest in CS and encourage them to specialize in the subject later (European Commission, 2009). An Italian employment agency (ironically named Men at Work) launched a project called Girls Code It Better to extend CS learning opportunities to 1,413 middle school girls across 53 schools in 2019 (Girls Code It Better, n.d.). During the academic year, the girls attended extracurricular CS courses before developing their own technologically advanced products and showcasing their work at an event at Bocconi University in Milan (Brogi, 2019). In addition to introducing the participants to CS, the initiative provided the girls with role models and generated awareness on the gender gap in CS education in Italy.\n", + "\n", + "\n", + "In British Columbia, students are exposed to computational thinking concepts as early as primary school, where they learn how to prototype, share, and test ideas. In the early grades of primary education, the British Columbia curriculum emphasizes numeracy using technology and information technology. Students develop numeracy skills by using models and learn information technology skills to apply across subjects. In kindergarten and first grade, curricular objectives include preparing students for presenting ideas using electronic documents. In grades 2 to 3, the curricular goals specify that students should “demonstrate an awareness of ways in which people communicate, including the use of technology,” in English language arts classes, as well as find information using information technology tools. By the time students are in grades 4 and 5, the curriculum expects students to focus more on prototyping and testing new ideas to solve a problem (Gannon & Buteau, 2018).\n", + "\n", + "\n", + "Several systems have also increased participation in CS education by integrating it as a cross-curricular subject. This approach avoids the need to find time during an already-packed school day to teach CS as a standalone subject. For example, in 2015, the Arkansas legislature began requiring elementary and middle school teachers to embed computational thinking concepts in other academic courses. As a result, teachers in the state integrate five main concepts of computational thinking into their lesson plans, including (1) problem-solving, (2) data and information, (3) algorithms and programs, (4) computers and communications, and, importantly, (5) community, global, and ethical impacts (Watson-Fisher, 2019). In the years following this reform, the share of African American students taking CS in high school reached 19.6 percent, a figure that slightly exceeds the percentage of African Americans among all students—a resounding sign of progress in creating student demand for CS education (Computer science on the rise in Arkansas schools, Gov. drafts legislation to make it a requirement for graduation, 2020).\n", + "\n", + "\n", + "After-school programs and summer camps, jointly organized with external partners, have also helped promote demand for CS education through targeted outreach programs to commonly underserved populations. For example, Microsoft Thailand has been holding free coding classes, Hour of Code, in partnership with nonprofit organizations, to encourage children from underprivileged backgrounds to pursue STEM education (Microsoft celebrates Hour of Code to build future ready generations in Asia, 2017). In the past decade, Microsoft has extended opportunities for ICT and digital skills development to more than 800,000 youth from diverse backgrounds—including those with disabilities and residents of remote communities (Thongnab, 2019). Their annual #MakeWhatsNext event for young Thai women showcases STEM careers and the growing demand for those careers (Making coding fun for Thailand’s young, 2018). Also in Thailand, Redemptorist Foundation for People with Disabilities, with over 30 years of experience working with differently abled communities in that country, expanded their services to offer computer trainings and information technology vocational certificate programs for differently abled youth (Mahatai, n.d.).\n", + "\n", + "\n", + "In British Columbia, Canada, the Ministry of Education and other stakeholders have taken steps to give girls, women, and aboriginal students the opportunity to develop an interest in CS education.For example, after-school programs have taken specific steps to increase girls’ participation in CS education. The UBC Department of Computer Science runs GIRLsmarts4tech, a program that focuses on giving 7th- grade girls role models and mentors that encourage them to pursue technology-related interests (GIRLsmarts4tech, n.d.). According to the latest census, in 2016, British Columbia’s First Nations and Indigenous Peoples (FNIP) population—including First Nations, Metis, and Inuits—was 270,585, an increase of 38 percent from 2006. With 42.5 percent of the FNIP population under 25, it is critical for the province to deliver quality education to this young and growing group (Ministry of Advanced Education, Skills and Training, 2018). To this end, part of the British Columbia curriculum for CS education incorporates FNIP world views, perspectives, knowledge, and practices in CS concepts. In addition, the B.C. based ANCESTOR project (AborigiNal Computer Education through STORytelling) has organized courses and workshops to encourage FNIP students to develop computer games or animated stories related to their culture and land (Westor & Binn, 2015).\n", + "\n", + "\n", + "As these examples suggest, private sector and nongovernmental organizations can play an important role in the expansion of CS education, an issue we turn to now.\n", + "\n", + "\n", + "5. Engaging key stakeholders can help address bottlenecks\n", + "\n", + "\n", + "In most reviewed cases, the private sector and nongovernmental organizations played a role in promoting the expansion of CS education. Technology companies not only helped to lobby for expanding CS education, but often provided much-needed infrastructure and subject matter expertise in the design and rollout of CS education. For example, Microsoft Thailand has worked with the Thai government since 1998 in various capacities, including contributing to the development and implementation of coding projects, digital skills initiatives, teacher training programs, and online learning platforms (Thongnab, 2019; Coding Thailand, n.d.). Since 2002, Intel’s Teach Thailand program has trained more than 150,000 teachers. Additionally, Google Coding Teacher workshops train educators on teaching computational thinking through CS Unplugged coding activities (EduTech Thailand, 2019). The workshop is conducted by Edutech (Thailand) Co., Ltd., an educational partner of Google, which adapted the Google curriculum to the Thailand education context. Samsung has been engaged in a smart classroom project that has built futuristic classroom prototypes and provided training for 21st century competencies (OECD/UNESCO, 2016).\n", + "\n", + "\n", + "In England, nongovernmental organizations have played an important role in supporting the government’s expansion of CS education. The DfE has relied on outside organizations for help in executing its CS education responsibilities. The DfE’s NCEE, for instance, is delivered by a consortium including the British Computing Society, STEM Learning, and the Raspberry Pi Foundation—three nonprofit organizations dedicated to advancing the computing industry and CS education in the country (British Computing Society, n.d; STEM Learning, n.d.; Raspberry Pi Foundation, n.d.).\n", + "\n", + "\n", + "Chile’s Ministry of Education developed partnerships with individual NGOs and private companies to engage more students, especially girls. These initiatives offer the opportunity for hands-on learning projects and programming activities that students can perform from their home computers. Some of the same partners also provide online training platforms for teacher PD.\n", + "\n", + "\n", + "Industry advocacy organizations can also play an important role in the expansion of CS education. For example, in Arkansas, the state’s business community has long supported CS education (Nix, 2017). Accelerate Arkansas was established in 2005 as an organization of 70 private and public sector members dedicated to moving Arkansas into a more innovation- and knowledge-based economy (State of Arkansas, 2018). Similarly, in England, a network of organizations called Computing at School established a coalition of industry representatives and teachers. It played a pivotal role in rebranding the ICT education program in 2014 to the computing program that placed a greater emphasis on CS (Royal Society, 2017).\n", + "\n", + "\n", + "To ensure sustainability, one key lesson is that the government should coordinate across multiple stakeholders. The reliance on inputs from external organizations to drive CS education implies that the heavy reliance on NGO-provided training and resources in Chile have been insufficient to motivate more schools and teachers to include CS and computational thinking in classroom learning activities. By contrast, the DfE has effectively coordinated across various nongovernmental organizations to expand CS education. Similarly, Arkansas’s Department of Education is leading an effort to get half of all school districts to form partnerships with universities and business organizations to give students opportunities to participate internships and college-level CS courses while in high school (Talk Business & Politics, 2020). In sum, the experience of decades of educational policies across the education systems reviewed shows that schools require long lasting, coordinated, and multidimensional support to achieve successful implementation of CS in classrooms.\n", + "\n", + "\n", + "6. When taught in an interactive, hands-on way, CS education builds skills for life\n", + "\n", + "\n", + "Several of the cases studied introduced innovative pedagogies using makerspaces (learning spaces with customizable layouts and materials) and project-based learning to develop not only skills specific to CS but also skills that are relevant more broadly for life. For example, Uruguayan CS education features innovative concepts like robotics competitions and makerspaces that allow students to creatively apply their computational thinking lessons and that can spark interest and deepen understanding. In addition, computational thinking has been integrated across subject areas (e.g., in biology, math, and statistics) (Vázquez et al., 2019) and in interdisciplinary projects that immerse students in imaginative challenges that foster creative, challenging, and active learning (Cobo & Montaldo, 2018). For instance, students can use sensors and program circuit boards to measure their own progress in physical education (e.g., measuring how many laps they can run in a given period).\n", + "\n", + "\n", + "Similarly, in New Brunswick, Brilliant Labs provide learning materials to schools so they can offer students CS lessons using makerspaces that encourage students to develop projects, engage with technology, learn, and collaborate. These makerspaces enable students to creatively apply their CS and computational thinking lessons, sparking interest and deepening understanding of CS and computational thinking.\n", + "\n", + "\n", + "Thailand’s curricular reforms also integrated project-based learning into CS education. Thai students in grades 4-6 learn about daily life through computers, including skills such as using logic in problem-solving, searching data and assessing its correctness, and block coding (e.g., Scratch). Then, students in grades 7-9 focus on learning about primary data through objectives that include using programming to solve problems, collecting, analyzing, presenting, and assessing data and information, and textual programming such as Python. Finally, students in grades 10-12 focus on applying advanced computing technology and programming to solve real-world problems, using knowledge from other subjects and data from external sources (Piamsa-nga et al., 2020).\n", + "\n", + "\n", + "After two years of nationwide discussions from 2014 to 2016, the Polish Ministry of National Education announced the creation of a new core curriculum for CS in primary and secondary schools (Syslo, 2020). The new curriculum’s goals included students using technology to identify solutions for problems in every day and professional situations and supporting other disciplines—such as science, the arts, and the social sciences—in innovation (Panskyi, Rowinska, & Biedron, 2019).\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "Conclusion\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "CS skills are increasingly necessary to function in today’s technology-advanced world and for the future. They enable individuals to understand how technology works, and how best to harness its potential to improve lives. As these skills take preeminence in the rapidly changing 21st century, CS education promises to significantly enhance student preparedness for the future of work and active citizenship.\n", + "\n", + "\n", + "Our findings suggest six recommendations for governments interested in taking CS education to scale in primary and secondary schools. First, governments should use economic development strategies focused on expanding technology-based jobs to engage all stakeholders and expand CS education in primary and secondary schools. Indeed, such a strategy helps attract and retain investors and foster CS education demand among students. Second, provide access to ICT infrastructure in primary and secondary schools to facilitate the introduction and expansion of CS education. Third, developing qualified teachers for CS should be a top priority. The evidence is clear that a qualified teacher is the most important factor in student learning, and thus preparing the teacher force needed for CS at scale is crucial. Fourth, expose students early to CS education to increase their likelihood of pursuing it. This is especially important for girls and other URM groups historically underrepresented in STEM and CS fields. Fifth, engage key stakeholders (including educators, the private sector, and civil society) to help address bottlenecks in physical and technical capacity. Finally, teach CS in an interactive, hands-on way to build skills for life.\n", + "\n", + "\n", + "Through studying the cases of regional and national governments at various levels of economic development and progress in implementing CS education programs, governments from around the globe can learn how to expand and improve CS education and help students develop a new basic skill necessary for the future of work and active citizenship.\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "Case studies\n", + "\n", + "\n", + "For a detailed discussion of regional and national education systems from diverse regions and circumstances that have implemented computer science education programs, download the case studies.\n", + "\n", + "\n", + " Download the full report \n", + "\n", + "https://www.brookings.edu/search/?s=data%20science\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "https://www.brookings.edu/blog/how-we-rise/2021/10/29/reckoning-with-science-medicine-and-scapegoating/\n", + "New article found for topic: data%20science\n", + "URL: https://www.brookings.edu/blog/how-we-rise/2021/10/29/reckoning-with-science-medicine-and-scapegoating/\n", + "TITLE: Reckoning with science, medicine, and scapegoating\n", + "Reckoning with science, medicine, and scapegoating\n", + "BODY:\n", + "\n", + "https://www.brookings.edu/research/the-potential-of-the-chips-and-science-act-for-rural-america/\n", + "New article found for topic: data%20science\n", + "URL: https://www.brookings.edu/research/the-potential-of-the-chips-and-science-act-for-rural-america/\n", + "TITLE: The potential of the CHIPS and Science Act for rural America\n", + "The potential of the CHIPS and Science Act for rural America\n", + "BODY:\n", + "\n", + "New article found for topic: python\n", + "URL: https://www.brookings.edu/research/institutionalizing-data-analysis-in-german-federal-governance/\n", + "TITLE: Institutionalizing Data Analysis in German Federal Governance\n", + "Institutionalizing Data Analysis in German Federal Governance\n", + "BODY:\n", + "\n", + "https://www.brookings.edu/research/in-central-new-york-a-test-of-the-chips-and-science-acts-promise-for-economic-revitalization/\n", + "New article found for topic: data%20science\n", + "URL: https://www.brookings.edu/research/in-central-new-york-a-test-of-the-chips-and-science-acts-promise-for-economic-revitalization/\n", + "TITLE: In Central New York, a test of the CHIPS and Science Act’s promise for economic revitalization\n", + "In Central New York, a test of the CHIPS and Science Act’s promise for economic revitalization\n", + "BODY:\n", + "\n", + "https://www.brookings.edu/news-releases/ben-bernanke-distinguished-senior-fellow-in-residence-receives-nobel-prize-in-economic-sciences/\n", + "New article found for topic: data%20science\n", + "URL: https://www.brookings.edu/news-releases/ben-bernanke-distinguished-senior-fellow-in-residence-receives-nobel-prize-in-economic-sciences/\n", + "TITLE: Ben Bernanke, distinguished senior fellow in residence, receives Nobel Prize in economic sciences\n", + "Ben Bernanke, distinguished senior fellow in residence, receives Nobel Prize in economic sciences\n", + "BODY:\n", + "\n", + "https://www.brookings.edu/techstream/how-data-science-can-ease-the-covid-19-pandemic/\n", + "New article found for topic: data%20science\n", + "URL: https://www.brookings.edu/techstream/how-data-science-can-ease-the-covid-19-pandemic/\n", + "TITLE: How data science can ease the COVID-19 pandemic\n", + "BODY:\n", + "\n", + "\n", + "\n", + "\n", + "Social distancing and stay-at-home orders in the United States have slowed the infection rate of SARS-CoV-2, the pathogen that causes COVID-19. This has halted the immediate threat to the U.S. healthcare system, but consensus on a long-term plan or solution to the crisis remains unclear.  As the reality settles in that there are no quick fixes and that therapies and vaccines will take several months if not years to invent, validate, and mass produce, this is a good time to consider another question: How can data science and technology help us endure the pandemic while we develop therapies and vaccines?\n", + "\n", + "\n", + "Before policymakers reopen their economies, they must be sure that the resulting new COVID-19 cases will not force local healthcare systems to resort to crisis standards of care. Doing so requires not just prevention and suppression of the virus, but ongoing measurement of virus activity, assessment of the efficacy of suppression measures, and forecasting of near-term demand on local health systems. This demand is highly variable given community demographics, the prevalence of pre-existing conditions, and population density and socioeconomics.\n", + "\n", + "\n", + "Data science can already provide ongoing, accurate estimates of health system demand, which is a requirement in almost all reopening plans. We need to go beyond that to a dynamic approach of data collection, analysis, and forecasting to inform policy decisions in real time and iteratively optimize public health recommendations for re-opening. While most reopening plans propose extensive testing, contact tracing, and monitoring of population mobility, almost none consider setting up such a dynamic feedback loop. Having such feedback could determine what level of virus activity can be tolerated in an area, given regional health system capacity, and adjust population distancing accordingly.\n", + "\n", + "\n", + "We propose that by using existing technology and some nifty data science, it is possible to set up that feedback loop, which would maintain healthcare demand under the threshold of what is available in a region. Just as the maker community stepped up to cover for the failures of the government to provide adequate protective gear to health workers, this is an opportunity for the data and tech community to partner with healthcare experts and provide a measure of public health planning that governments are unable to do. Therefore, the question we invite the data science community to focus on is: How can data science help forecast regional health system resource needs given measurements of virus activity and suppression measures such as population distancing?\n", + "\n", + "\n", + "For the data science effort to work, first and foremost, we need to fix delays in data collection and access introduced by existing reporting processes. Currently, most departments of public health are collecting and reporting metrics that are not helpful, and are reporting them with 48 hour delays, and often with errors. Although there are examples of regional excellence in such reporting, by and large, the recommendations from the health IT community around accurate and fast public health reporting remain ignored. For instance, consider the number of COVID-19 hospitalizations, which is the best indicator of the disease’s burden on the regional health system. At the present time, due to time lags in confirming and reporting cases and a failure to distinguish between current and cumulative hospitalizations, even regions that report hospitalization data often provide only a blurry picture of the burden on the regional health system. Regions should ideally report both suspected and confirmed hospital cases and indicate the date of admission, in addition to the date of report or confirmation.\n", + "\n", + "\n", + "Even with perfect reporting, there are fundamental delays in what such data can tell us. For example, new admissions to a hospital today reflect virus activity as of 9 to 13 days ago (which depends, in turn, on social distancing interventions from up to 17 days prior). Not factoring in such considerations have led to significant over-estimation of hospitalization needs nationwide. We therefore need to measure virus activity via proxy measures that are indicative early in the lifecycle of the virus. We must benchmark these against the number of new and total COVID-19 hospitalizations as well as ideally the number of new infections, assuming it is accurately measured through large scale testing. Available proxy measures include test positivity rates in health systems, case counts, deaths and perhaps seropositivity rates. Ongoing symptom tracking via smartphone apps, daily web or phone surveys, or cough sounds can identify potential hotspots where virus transmission rates are high. Contact tracing, which currently requires significant human effort, can also help tracking of potential cases if it can be scaled using technology under development by major American tech companies. \n", + "\n", + "\n", + "With reliable tracking and benchmarking in place, we can calculate infection prevalence as well as daily growth and transmission rates, which is essential for determining if policies are working. This is a problem not only of data collection but also data analysis. Issues of sensitivity, daily variability, time lags, and confounding need to be studied before such data can be used reliably. For instance, symptom tracking is nonspecific and may have difficulty tracking virus activity at low prevalence. Other emerging data sources such as wastewater and smart thermometer data hold similar promise but will have to grapple with these same issues.\n", + "\n", + "\n", + "We then need to estimate the regional effects of policy interventions such as shelter-in-place orders (via mobility reduction) and contact tracing (via reductions in new cases), first as simple forecasts and eventually maturing to what-if analyses. Several efforts have quantified the impact of mobility on virus transmission and some have suggested “safe” forms of mobility. While there are many potential ways to quantify population mobility — such as via traffic patterns, internet bandwidth usage by address, and location of credit card swipes — the most scalable mechanism to measure mobility appears to be via tracking of smartphones. Groups such as the COVID-19 Mobility Data Network provide such data daily in anonymized, aggregated reports.\n", + "\n", + "\n", + "Once the ability to project from mobility to transmission to health system burden is constructed, we can “close the loop” by predicting how much mobility we can afford given measured virus activity and anticipated health system resources in the next two weeks. Researchers have already attempted to calculate “tolerable transmission” in the form of maximum infection prevalence in a given geography that would not overload health systems. Coupling such tolerable transmission estimates with daily assessments of a valid sample of the population (via testing, via daily surveys, via electronic health record-based surveillance) would allow monitoring of changes in transmission which can alert us to the need to intervene, such as by reducing mobility. As new measures such as contact tracing cut transmission rates, these same monitoring systems can tell us that it is safe to increase mobility further. Continuously analyzing current mobility as well as virus activity and projected health system capacity can allow us to set up “keep the distance” alerts that trade off tolerable transmission against allowed mobility. Doing so will allow us to intelligently balance public health and economic needs in real time.\n", + "\n", + "\n", + "Concretely, then, the crucial “data science” task is to learn the counterfactual function linking last week’s population mobility and today’s transmission rates to project hospital demand two weeks later. Imagine taking past measurements of mobility around April 10 in a region (such as the Santa Clara County’s report from COVID-19 Community Mobility Reports), the April 20 virus transmission rate estimate for the region (such as from http://rt.live), and the April 25 burden on the health system (such as from the Santa Clara County Hospitalization dashboard), to learn a function that uses today’s mobility and transmission rates to anticipate needed hospital resources two weeks later. It is unclear how many days of data of each proxy measurement we need to reliably learn such a function, what mathematical form this function might take, and how we do this correctly with the observational data on hand and avoid the trap of mere function-fitting. However, this is the data science problem that needs to be tackled as a priority. \n", + "\n", + "\n", + "Adopting such technology and data science to keep anticipated healthcare needs under the threshold of availability in a region requires multiple privacy trade-offs, which will require thoughtful legislation so that the solutions invented for enduring the current pandemic do not lead to loss of privacy in perpetuity. However, given the immense economic as well as hidden medical toll of the shutdown, we urgently need to construct an early warning system that tells us to enhance suppression measures if the next COVID-19 outbreak peak might overwhelm our regional healthcare system. It is imperative that we focus our attention on using data science to anticipate, and manage, regional health system resource needs based on local measurements of virus activity and effects of population distancing.\n", + "\n", + "\n", + "Dr. Nigam Shah is an associate professor of Medicine (Biomedical Informatics) at Stanford University and Associate CIO for data science at Stanford Healthcare.Dr. Jacob Steinhardt is an assistant professor of statistics at University of California, Berkeley.\n", + "\n", + "\n", + "\n", + "\n", + "https://www.brookings.edu/blog/africa-in-focus/2022/01/26/investment-in-science-and-technology-is-key-to-an-african-economic-boom/\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "New article found for topic: data%20science\n", + "URL: https://www.brookings.edu/blog/africa-in-focus/2022/01/26/investment-in-science-and-technology-is-key-to-an-african-economic-boom/\n", + "TITLE: Investment in science and technology is key to an African economic boom\n", + "Investment in science and technology is key to an African economic boom\n", + "BODY:\n", + "\n", + "https://www.brookings.edu/research/exploring-the-state-of-computer-science-education-amid-rapid-policy-expansion/\n", + "New article found for topic: data%20science\n", + "URL: https://www.brookings.edu/research/exploring-the-state-of-computer-science-education-amid-rapid-policy-expansion/\n", + "TITLE: Exploring the state of computer science education amid rapid policy expansion\n", + "Exploring the state of computer science education amid rapid policy expansion\n", + "BODY:\n", + "\n", + "https://www.brookings.edu/techstream/how-china-harnesses-data-fusion-to-make-sense-of-surveillance-data/\n", + "New article found for topic: data%20science\n", + "URL: https://www.brookings.edu/techstream/how-china-harnesses-data-fusion-to-make-sense-of-surveillance-data/\n", + "TITLE: How China harnesses data fusion to make sense of surveillance data\n", + "BODY:\n", + "\n", + "Hikvision surveillance cameras are seen in front of a Chinese flag at a shopping area in Shanghai on May 5, 2021. (REUTERS/Aly Song)\n", + "\n", + "\n", + "Across the Chinese government’s surveillance apparatus, its many arms are busy collecting huge volumes of data. Video surveillance footage, WeChat accounts, e-commerce data, medical history, and hotel records: It’s all fair game for the government’s surveillance regime. Yet, taken individually, each of these data streams don’t tell authorities very much. That’s why the Chinese government has embarked on a massive project of data fusion, which merges disparate datasets to produce data-driven analysis. This is how Chinese surveillance systems achieve what authorities call “visualization” (可视化) and “police informatization” (警务信息化). \n", + "\n", + "\n", + "While policymakers around the world have grown increasingly aware of China’s mass surveillance regime—from its most repressive practices in Xinjiang to its exports of surveillance platforms to more than 80 countries—relatively little attention has been paid to how Chinese authorities are making use of the data it collects. As countries and companies consider how to respond to China’s surveillance regime, policymakers need to understand data fusion’s crucial role in monitoring the country’s population in order to craft effective responses.  \n", + "\n", + "\n", + "Data fusion in Chinese surveillance programs \n", + "\n", + "\n", + "As China’s population has embraced online life, the Party-state’s mass surveillance practices have evolved from relying on more manual methods—such as dānwèi (单位) work units, the hùkǒu (户口) residency registration system, and dǎng’àn (档案) secret political files—to using technologies that range from the mundane to the cutting-edge. To achieve the goal of “stability maintenance” (维稳), China’s national surveillance programs utilize varying degrees of data fusion. Data fusion is present, for example, in national defense crisis response platforms (国防动员) developed in the mid-2010s that gather data from multiple “thematic clouds,” including e-commerce, tourism, industry, courts, and law enforcement. Other recent programs that rely on data fusion include Sharp Eyes (雪亮工程), the nation-wide Police Cloud (警务云), and Xinjiang’s Integrated Joint Operations Platform (IJOP, 一体化联合作战平台).  \n", + "\n", + "\n", + "One of the Chinese government’s most prominent data fusion programs is Sharp Eyes, which was launched in 2015 by nine government bodies. The program builds on the infrastructure used by Skynet—a 2005 initiative that focused on surveillance in urban public areas—and extends it into rural areas. Sharp Eyes pulls from a wide variety of data sources. These include surveillance cameras—both privately and government-owned and with and without facial-recognition capabilities—and vehicle and license plate recognition cameras. Public and private video surveillance systems collect facial and other attributes from key locations such as hospitals, schools, entertainment venues, hotels, internet cafes, major road intersections, and storefronts. Sharp Eyes also aims to collect “virtual identities,” such as MAC addresses, phone numbers, and WeChat accounts. \n", + "\n", + "\n", + "Authorities ascertain individuals’ identities by first combining the above information with geographic information source (GIS) data and then sending this data to “societal resource integration platforms,” which exist in Xinjiang and at least four other provinces. According to analysis originally published in the journal China Digital Cable TV, a publication supervised by the Ministry of Education and the Ministry of Science and Technology, these platforms combine facial and vehicle recognition data and match it against private and public video sources. GIS data is superimposed on live video feeds to provide granular location data. Multiple companies can be involved in one platform project. For example, one local Sharp Eyes project in Fujian Province uses products from prominent (and blacklisted) AI companies such as Yitu, Huawei, and Hikvision.  \n", + "\n", + "\n", + "However, Sharp Eyes is not entirely powered by data fusion. In fact, human-centric surveillance is a key design element. In the city of Linyi, where Sharp Eyes was piloted, the local government upgraded citizens’ television cable boxes so they could view surveillance feeds and report crimes by pushing a button on their TV remotes. The Ministry of Justice even provided a patriotic slogan for the effort: “remote control in hand, safety in heart.” (This citizen-centric surveillance strategy originates from the Cultural Revolution, which inspired Sharp Eyes’ name.) As part of Sharp Eyes, mobile apps push video surveillance and public security information to citizens and allow assigned groups of households to report crimes. Command and control centers are staffed by personnel to review footage, take citizens’ reports, and dispatch police accordingly. \n", + "\n", + "\n", + "Another national program that uses data fusion is the Ministry of Public Security’s (MPS) Police Cloud, which has been active since 2015. Provincial police cloud-computing centers fuse data from public and private sources, including ID cards, CCTV footage, medical history, supermarket memberships, IP addresses, social media usernames, delivery records, residential addresses, hotel stays, petition records, and biometrics, according to a 2017 report from Human Rights Watch. In a nod to “visualizing” data, the system aims to uncover connections between individuals that would otherwise be difficult for police officers to detect on their own. It supposedly predicts future actions or threats that might cause social instability, such as protests and acts of terror.  \n", + "\n", + "\n", + "Targeting ‘focus personnel’ \n", + "\n", + "\n", + "China’s data-fusion programs allow its surveillance systems to assemble highly detailed portraits of the country’s citizens, but these systems apply particularly severe scrutiny to “focus personnel,” which includes individuals petitioning the government, those purportedly involved in terrorism, and those “undermining social stability.” China’s Uyghur ethnic minority is among those that fall under the “focus personnel” category, and in the Xinjiang region, the center of Uyghur life, this persecuted minority is subjected to intense surveillance. \n", + "\n", + "\n", + "One key tool in this surveillance regime is the Integrated Joint Operations Platform (IJOP), which monitors Xinjiang residents with unprecedented intrusiveness. The system flags mundane and otherwise legal behavior as warranting further surveillance, imprisonment, or even extralegal internment in Xinjiang’s vast network of concentration camps. The IJOP functions as a data fusion tool by tying an individual’s government-issued ID card to her physical attributes (such as facial features, blood type, and height), as well as tracking where individuals’ phones, ID cards, and vehicles go. The system collects a variety of data from afar: excessive electricity use, the use of WhatsApp and VPNs, driving someone else’s car. The system also relies on highly intrusive methods. Scattered at strategic locations such as malls and mosques around Xinjiang are what are known as “three-dimensional portrait and integrated data doors” (三维人像综合数据门). These “doors” resemble airport metal detectors and possess facial recognition capabilities, ID card verification, and tools to lift a variety of data from mobile phones, such as MAC addresses, IMEI, IMSI, and ESN numbers. The IJOP also ingests data collected by what have been dubbed “anti-terrorism swords,” which are used at police checkpoints to plug into phones and download their contents, according to an Intercept investigation. IJOP sends push notifications to officers, who can pull aside someone walking through a data door. They can then interrogate individuals and detain or imprison them. In this way, the IJOP can restrict individuals’ movements, which are limited based on what threat level the system determines they fall under.  \n", + "\n", + "\n", + "China’s military is another player using data-fusion tools in Xinjiang to build predictive policing systems. In 2019, a professor named Cui Yinglong at the People’s Armed Police Engineering University in the regional capital of Ürümqi developed a “dynamic early warning” system, known as the Tianshan Anti-terrorism Cloud (天山反恐云). It is trained on a database he helped build called the “East Turkistan terrorist activity database,” which collects and fuses data based on terrorist methods, objectives, attack dates, and organization from 1990 to the present. Although little information exists on the inner workings of the app, it purports to “accurately depict” terrorists’ “religious, organizational, and behavioral characteristics.” The cloud is designed to provide soldiers with early warning of terrorist activity and combat decision support, and is apparently in active operational use.  \n", + "\n", + "\n", + "Issues with ‘information islands’  \n", + "\n", + "\n", + "While it is tempting to conclude that China’s surveillance state is effortlessly and automatically tracking and surveilling every person in the country, its monitoring systems are plagued by human inefficiency, unreliable and incomplete basic data, and incompatible datasets and systems. These inefficiencies have resulted in data silos, also known as “government information islands” (政府信息孤岛), a phrase that refers to isolated data pools that are not adequately shared within government bureaucracies. Currently, data is shared horizontally (across departments and regions) and vertically (within the same organizational entity from the local level up). But scholars have found that horizontal integration bodies suffer from a lack of information that is stove-piped in vertical bodies. As a result, authorities are hindered by bureaucratic systems that prevent more comprehensive data access and greater insight.  \n", + "\n", + "\n", + "To better execute data fusion, Chinese authorities are now attempting to tackle longstanding issues with data silos, according to a recent ChinaFile analysis of government procurement notices. In 2019, for example, authorities in Beijing looked to build a “Sharp Eyes Video Sharing and Exchange Platform” that would make available video footage from cameras belonging to a range of different departments on a single platform. By integrating footage from approximately 200,000 cameras—and up to 1 million—the platform would improve access to footage and data re-use. To further improve data fusion, future improvements to Sharp Eyes include implementing a standard data mining approach and overcoming technical difficulties and inconsistent standards.  \n", + "\n", + "\n", + "On the legal front, authorities have also taken several steps to address data silos. While some of this reform preceded the advent of surveillance programs such as Sharp Eyes and the IJOP, scholars Huirong Chen and Sheena Chestnut Greitens note that newer reforms under Xi Jinping coincided with these programs. They include the 2017–18 reorganization of the People’s Armed Police and passing the 2017 National Intelligence Law, which aimed to integrate disparate intelligence and national security authorities. Furthermore, the 13th Five-Year Plan for National Informatization (2016–2020) detailed issues with “information islands,” and called for integrating systems across ministries and departments. In 2017, the Party asked local governments to establish comprehensive information platforms, likely similar to the ones established under Sharp Eyes. \n", + "\n", + "\n", + "Policy implications \n", + "\n", + "\n", + "Responding to the Chinese government’s use of data-fusion systems to power its surveillance systems represents a difficult challenge. Under the Trump Administration, the U.S. Department of Commerce’s Bureau of Industry and Security (BIS) blacklisted multiple Chinese companies for their human rights abuses in Xinjiang, adding them to the so-called “Entity List.” By being added to the Entity List, these firms should have been cut off from U.S. suppliers, but given the opaque nature of supply chains, it is difficult to assess whether sanctioned firms have been able to access U.S.-originating technologies via workarounds. It also difficult to assess whether homegrown R&D initiatives to develop domestic alternatives to U.S. goods have borne fruit. Furthermore, the vast majority of the companies on the Entity List do not have data fusion as their main line of business; rather, they often provide services that feed into fusion architectures. This means U.S. policy is potentially overlooking a key area of Chinese surveillance systems. (Media and nongovernmental organizations have created lists of Chinese and non-Chinese companies that enable surveillance data fusion practices. This database can aid the BIS in making determinations for its Entity List.) \n", + "\n", + "\n", + "On the technical side, governmental organizations, such as the National Science Foundation and the Defense Advanced Research Projects Agency, can fund research to thwart data fusion processes. One emerging line of research seeks to develop privacy-preserving computer vision systems that obscure individuals’ faces. Other lines of research seek to build counter-surveillance technologies, such as specialized clothing, attacking systems through adversarial examples (intentionally destructive inputs to cause model malfunctioning), or data poisoning (modifying training images). Interfering at the stage prior to fusion would not only protect the privacy of those targeted by surveillance systems, but also prevent data fusion processes from accurately functioning.  \n", + "\n", + "\n", + "It is also important to look at the role of U.S. companies. Chinese surveillance systems are heavily reliant on U.S. firms to provide the gear that powers these digital operations. U.S. suppliers such as Intel, NVIDIA, Cisco, Seagate and Western Digital have all been linked to various aspects of Chinese surveillance systems, but the U.S. government has so far been unable to write rules effectively prohibiting the sales of such equipment. In 2020, the State Department released exhaustive guidance for companies’ export considerations, but the document is nonbinding. The difficulty of imposing binding rules against U.S. companies—along with the continued synergy between the commercial sphere and surveillance states’ technical needs—makes it difficult to prevent the export of such technology. As the United States has staked out a clear policy against surveillance-enabled repression, especially in Xinjiang, it is no longer acceptable for companies to deny knowledge of involvement in supporting China’s surveillance state. One of the most viable options to decrease companies’ more problematic exports remains increased public pressure. \n", + "\n", + "\n", + "Increased attention to Chinese data fusion practices—and its supporting companies—would allow U.S. policy to target China’s surveillance state at a core level, rather than only facial and voice recognition elements that feed into fusion architectures. Taking such steps would better protect Uyghurs, “focus personnel,” and the Chinese people writ large from falling under increasingly abusive, unchecked surveillance.  \n", + "\n", + "\n", + "Dahlia Peterson is a research analyst at Georgetown’s Center for Security and Emerging Technology.  \n", + "\n", + "\n", + "Intel provides financial support to the Brookings Institution, a nonprofit organization devoted to rigorous, independent, in-depth public policy research. \n", + "\n", + "https://www.brookings.edu/research/superhuman-science-how-artificial-intelligence-may-impact-innovation/\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "New article found for topic: data%20science\n", + "URL: https://www.brookings.edu/research/superhuman-science-how-artificial-intelligence-may-impact-innovation/\n", + "TITLE: Superhuman science: How artificial intelligence may impact innovation\n", + "Superhuman science: How artificial intelligence may impact innovation\n", + "BODY:\n", + "\n", + "https://www.brookings.edu/blog/future-development/2022/04/28/how-can-better-climate-data-empower-people-to-act/\n", + "New article found for topic: data%20science\n", + "URL: https://www.brookings.edu/blog/future-development/2022/04/28/how-can-better-climate-data-empower-people-to-act/\n", + "TITLE: Getting people to understand climate data better\n", + "Getting people to understand climate data better\n", + "BODY:\n", + "\n", + "https://www.brookings.edu/research/what-all-policy-analysts-need-to-know-about-data-science/\n", + "New article found for topic: data%20science\n", + "URL: https://www.brookings.edu/research/what-all-policy-analysts-need-to-know-about-data-science/\n", + "TITLE: What all policy analysts need to know about data science\n", + "What all policy analysts need to know about data science\n", + "BODY:\n", + "\n", + "https://www.brookings.edu/techstream/how-satellites-and-ai-can-fix-development-data-problems/\n", + "New article found for topic: data%20science\n", + "URL: https://www.brookings.edu/techstream/how-satellites-and-ai-can-fix-development-data-problems/\n", + "TITLE: How satellites and AI can fix development data problems\n", + "BODY:\n", + "\n", + "A satellite image from 2015 depicts a salt-affected water catchment area in drought-struck farmland in Australia, November 26, 2015. (REUTERS/David Gray)\n", + "\n", + "\n", + "Data drives development policy. To determine aid packages and projects, policymakers need good data on everything from population to urban sprawl to economic livelihoods. Yet policymakers creating development policies, whether in response to disasters or with an eye toward the long-term, face a core problem: measuring sustainable development variables.\n", + "\n", + "\n", + "Against the backdrop of an ever more urgent climate crisis, improving efforts to get good data has never been more important. The most recent report from the U.N. Intergovernmental Panel on Climate Change lays bare the scale of this challenge, yet even as scientists warn that time is running out to slow the warming of the planet, persistent disagreement remains about how much wealthy countries should be spending on climate assistance for lower-resourced ones.\n", + "\n", + "\n", + "These questions of how much to spend on aid and where to spend it raise a key issue with development broadly. In the past, poor forecasting and inefficient aid distribution have hindered the effectiveness of development programs, including on climate. If policymakers and researchers cannot get accurate information about a problem, it’s more difficult to forge effective solutions. But new technology for development analysis, driven by a combination of satellite imagery and machine learning, may hold the keys to progress.\n", + "\n", + "\n", + "As it stands, data can be inaccurate, costly to acquire, or hard to get all together. This is especially the case in low-resourced countries. In Africa alone, 34% of countries have gone more than 15 years since their last agricultural survey. Even then, the data that is collected is often incomplete or inaccurate. And yet the need for this high-fidelity data is pressing. When a locust plague struck East Africa in 2020, one of the key challenges in responding to that crisis was simply determining the location of locust swarms. In the absence of effective tools to monitor and respond to the locusts marauding the region, 19 million farmers across East Africa lost their crops, causing widespread food shortages in the region.\n", + "\n", + "\n", + "Our new paper introduces an elegant solution to the problem of measuring sustainable development: machine learning applied to satellite imagery. The explosion in commercial satellites and the public availability of satellite imagery opens up new opportunities to analyze sustainable development-related variables at low cost, high accuracy, and great scale. When we compared satellite imagery from 200 random sample sites across multiple continents, we observed a substantial increase in the number and quality of images captured over time. Sites once imaged a couple times a year are now captured multiple times a week, and these images detail localized activity like infrastructure growth.\n", + "\n", + "\n", + "Satellite imagery is one piece of the puzzle. Another is the growing use, and usefulness, of artificial intelligence (AI)-powered machine learning (ML) models to extract common patterns of information from available data. In the development context, researchers have built models increasingly capable of assessing sustainable development metrics from satellite images. One satellite image of arable land might tell the story of a village’s economic health—its crop yields, its agricultural diversity, and its infrastructure development.\n", + "\n", + "\n", + "In our assessment, ML models leveraging satellite imagery inputs can amplify—and possibly outperform—traditional measurement tools like ground based surveys and censuses, offering a promising path forward. These technologies are unlikely to replace ground-based surveys altogether. But their augmentation of these methods can help address the data problems in sustainable development policy. For example, researchers can use satellite-based estimates of buildings, nighttime lights, and other markers to equip policymakers with more accurate estimates of local population size instead of infrequent, traditional census methods, particularly in lower-resourced countries.\n", + "\n", + "\n", + "Techniques to “train” ML models—to teach them which patterns to extract from available data—are improving. Researchers can now build models even when training data is less readily available or low in quality, as is often the case with sustainable development data. Synthetically created training data—data that is artificially created instead of generated by real-world events, we found, is another route to addressing data shortcomings, especially useful in the development context. In the agricultural setting, for example, crop model simulations trained on synthetic data to predict crop yields have performed as well as or better than approaches that calibrate directly to limited field data.\n", + "\n", + "\n", + "In addition, transfer learning and semi-supervised learning can enable researchers to circumvent issues surrounding data quantity and quality. In the former approach, models leverage large quantities of readily available data to learn a task similar to the task of interest and then “transfer” extracted patterns to sustainable development metrics. In the latter, models extract patterns from unlabelled satellite data (sometimes combined with small amounts of labeled data) without substantial human input. While noisy training data is a persistent problem that distorts model performance and evaluation, we found that models trained on high volumes of noisy data but tested on un-degraded data were stable performers, indicating that ML models can still be robust.\n", + "\n", + "\n", + "ML-driven, satellite-derived assessments of sustainable development variables hold evident promise, but they still face significant challenges. Trust issues loom large. Many ML models are not transparent, and it is often unclear how models arrive at a given outcome—such as predicting that a field’s crop yield will be low based on a satellite image. Policymakers are understandably weary of algorithms that cannot be fully explained. In addition to trust and explainability challenges, ML-driven estimates of sustainable development variables run into issues of scope. While some variables like crop growth can be inferred through ML-based approaches, others like educational attainment cannot be derived from satellite imagery.\n", + "\n", + "\n", + "Looking forward, researchers and practitioners alike can advance the use of satellite-driven assessments by focusing on explainability in models, cultivating public-private partnerships to operationalize model usage, and better understanding how satellite imagery and AI tools can address development data gaps. Policymakers, for their part, can better understand both the potential and the limitations of this emerging technology. After all, research does not occur in a vacuum, and, especially where development is concerned, policymakers have an important role in setting state policies, prioritizing investments, and raising attention to issues.\n", + "\n", + "\n", + "By focusing on strategies, such as, the use of synthetic data, transfer learning, and testing models on a small amount of high-quality data to counter noisy data, researchers and policymakers can leverage the power of machine learning and satellite imagery to change sustainable development for the better.\n", + "\n", + "\n", + "Marshall Burke is an associate professor in the Department of Earth System Science and deputy director of the Center on Food Security and the Environment at Stanford University. Anne Driscoll is a research data analyst at the Center on Food Security and the Environment at Stanford University.David Lobell is a professor in the Department of Earth System Science and the Gloria and Richard Kushel Director of the Center on Food Security and the Environment at Stanford University.Stefano Ermon is an assistant professor in the Department of Computer Science at Stanford University. This post is adapted from the Stanford HAI’s policy brief,“Using Satellite Imagery to Understand and Promote Sustainable Development.”\n", + "\n", + "https://www.brookings.edu/blog/techtank/2021/07/22/how-the-national-science-foundation-is-taking-on-fairness-in-ai/\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "New article found for topic: data%20science\n", + "URL: https://www.brookings.edu/blog/techtank/2021/07/22/how-the-national-science-foundation-is-taking-on-fairness-in-ai/\n", + "TITLE: How the National Science Foundation is taking on fairness in AI\n", + "How the National Science Foundation is taking on fairness in AI\n", + "BODY:\n", + "\n" + ] + } + ], + "source": [ + "from bs4 import BeautifulSoup\n", + "\n", + "class Crawler:\n", + " def __init__(self, website):\n", + " self.site = website\n", + " self.found = {}\n", + "\n", + " def getPage(url):\n", + " try:\n", + " html = urlopen(url)\n", + " except Exception as e:\n", + " return None\n", + " return BeautifulSoup(html, 'html.parser')\n", + "\n", + " def safeGet(bs, selector):\n", + " \"\"\"\n", + " Utilty function used to get a content string from a Beautiful Soup\n", + " object and a selector. Returns an empty string if no object\n", + " is found for the given selector\n", + " \"\"\"\n", + " selectedElems = bs.select(selector)\n", + " if selectedElems is not None and len(selectedElems) > 0:\n", + " return '\\n'.join([elem.get_text() for elem in selectedElems])\n", + " return ''\n", + "\n", + " def getContent(self, topic, url):\n", + " \"\"\"\n", + " Extract content from a given page URL\n", + " \"\"\"\n", + " bs = Crawler.getPage(url)\n", + " if bs is not None:\n", + " title = Crawler.safeGet(bs, self.site.titleTag)\n", + " body = Crawler.safeGet(bs, self.site.bodyTag)\n", + " return Content(topic, url, title, body)\n", + " return Content(topic, url, '', '')\n", + "\n", + " def search(self, topic):\n", + " \"\"\"\n", + " Searches a given website for a given topic and records all pages found\n", + " \"\"\"\n", + " bs = Crawler.getPage(self.site.searchUrl + topic)\n", + " searchResults = bs.select(self.site.resultListing)\n", + " for result in searchResults:\n", + " url = result.select(self.site.resultUrl)[0].attrs['href']\n", + " # Check to see whether it's a relative or an absolute URL\n", + " url = url if self.site.absoluteUrl else self.site.url + url\n", + " if url not in self.found:\n", + " self.found[url] = self.getContent(topic, url)\n", + " self.found[url].print()\n", + "\n", + "\n", + "\n", + "siteData = [\n", + " ['Reuters', 'http://reuters.com', 'https://www.reuters.com/search/news?blob=', 'div.search-result-indiv',\n", + " 'h3.search-result-title a', False, 'h1', 'div.ArticleBodyWrapper'],\n", + " ['Brookings', 'http://www.brookings.edu', 'https://www.brookings.edu/search/?s=',\n", + " 'div.article-info', 'h4.title a', True, 'h1', 'div.core-block']\n", + "]\n", + "sites = []\n", + "for name, url, search, rListing, rUrl, absUrl, tt, bt in siteData:\n", + " sites.append(Website(name, url, search, rListing, rUrl, absUrl, tt, bt))\n", + "\n", + "crawlers = [Crawler(site) for site in sites]\n", + "topics = ['python', 'data%20science']\n", + "\n", + "for topic in topics:\n", + " for crawler in crawlers:\n", + " crawler.search(topic)\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Crawling Sites through Links" + ] + }, + { + "cell_type": "code", + "execution_count": 70, + "metadata": {}, + "outputs": [], + "source": [ + "class Website:\n", + "\n", + " def __init__(self, name, url, targetPattern, absoluteUrl, titleTag, bodyTag):\n", + " self.name = name\n", + " self.url = url\n", + " self.targetPattern = targetPattern\n", + " self.absoluteUrl = absoluteUrl\n", + " self.titleTag = titleTag\n", + " self.bodyTag = bodyTag\n", + "\n", + "\n", + "class Content:\n", + "\n", + " def __init__(self, url, title, body):\n", + " self.url = url\n", + " self.title = title\n", + " self.body = body\n", + "\n", + " def print(self):\n", + " print(f'URL: {self.url}')\n", + " print(f'TITLE: {self.title}')\n", + " print(f'BODY:\\n{self.body}')" + ] + }, + { + "cell_type": "code", + "execution_count": 83, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "URL: https://www.brookings.edu/blog/fixgov/2023/04/05/what-we-learned-from-the-chicago-mayoral-results/\n", + "TITLE: What we learned from the Chicago mayoral results\n", + "What we learned from the Chicago mayoral results\n", + "BODY:\n", + "\n", + "As Chicagoans went to the polls on Tuesday, early signs pointed to a narrow victory for Paul Vallas, the former head of the city’s public school system and noted educational reformer, over Brandon Johnson, a former social studies teacher turned organizer for the Chicago Teachers Union. Vallas led in the pre-election polls by an average of 3 percentage points, a margin that widened to 6 points when undecided voters were asked whether they leaned toward a candidate. A higher share of Vallas’s supporters said that they were certain to cast their ballots, and more of Johnson’s said that they might change their minds about their choice. Vallas enjoyed a strong lead among voters 60 and older, who are the most likely to vote of all age cohorts, while Johnson was doing best among those 30 and younger, who are typically the least likely to participate.\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "William A. Galston\n", + "\n", + "\t\t\t\t\tEzra K. Zilkha Chair and Senior Fellow - Governance Studies \n", + "\n", + " Twitter\n", + "BillGalston\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "The ideological battle lines were clearly drawn. Vallas ran as a moderate, Johnson as an unabashed progressive. Johnson wanted to raise taxes on businesses, visitors of Chicago, and wealthy individuals to fund new social programs, while Vallas advocated fiscal restraint. The centerpiece of Vallas’s campaign was a pledge to crack down on violent crime. By contrast, Johnson expressed early sympathy (some would say support) for the “defund the police” movement that erupted after the murder of George Floyd before moderating his position. Not surprisingly, Vallas enjoyed the fervent backing of Chicago’s police union.\n", + "When incumbent mayor Rahm Emanuel ran for reelection in 2015, he also faced a progressive candidate, Jesus “Chuy” Garcia, leading some observers to draw parallels between then and now. But these elections differ in two key respects. First: because there was no Black candidate in the 2015 race, the Black vote was up for grabs, and Emanuel won it by a margin of 58 to 42. He also won the white vote by 2 to 1 while Garcia prevailed among Hispanics by a similar margin. This year, Brandon Johnson, a Black candidate with strong community roots, is receiving more than 70 percent support in this key constituency, while Vallas is outpolling Johnson among Hispanics. (Although Vallas is of Greek extraction, his last name — which means “fences” in Spanish — has led some Hispanics to believe that he is one of them.)\n", + "The second difference between 2015 and today: eight years ago, no single issue dominated the race, and the electorate was almost equally split among the economy, city finances, education, and crime as its chief concern. This year, violent crime dwarfed all other considerations, and the outcome of the race would be seen as a referendum on the candidates’ competing plans for addressing it.\n", + "It is the centrality of voters’ concerns about crime that gave this local contest national implications. A Vallas victory would have reinforced the tough on crime message that the election of Eric Adams in New York City had sent. If Johnson prevailed, his supporters would be able to argue that only a strong progressive message could bring young people and disaffected minority voters to the polls in large enough numbers to overcome those who wanted to intensify the use of tough, racially tinged methods against street-level criminals — and more broadly, to give progressives a chance to prevail over what they regard as the defenders of the status quo.\n", + "\n", + "\n", + "Related Content\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " \n", + "\n", + "\n", + "\n", + "FixGov\n", + "Do politicians get rewarded for spending money?\n", + "\n", + "Vanessa Williamson\n", + "Wednesday, March 22, 2023\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " \n", + "\n", + "\n", + "\n", + "FixGov\n", + "Can government protect women from domestic violence? Not if states do not follow up.\n", + "\n", + "Kaitlin N. Sidorsky and Wendy J. Schiller\n", + "Tuesday, March 21, 2023\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " \n", + "\n", + "\n", + "\n", + "FixGov\n", + "The gerrymander myth\n", + "\n", + "William A. Galston\n", + "Friday, March 17, 2023\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "To the surprise of many veteran observers, this is exactly what happened. With 90,000 absentee ballots still to be counted, Johnson led by a margin of 15,000 votes out of more than 550,000 cast. And because Johnson was receiving nearly 70% of the absentee vote, Vallas already has conceded the race.\n", + "Although exit polls are not yet available, preliminary results from Chicago’s 50 wards paint a clear picture. Johnson racked up nearly 80% of the Black vote on Chicago’s South Side and ran strongly among white liberals on the Lakefront. Vallas prevailed in the mostly white working-class wards in the Northwest and Southwest sections of the city, but his margins were not large enough to overcome Johnson’s margins elsewhere. With no Hispanic candidate on the ballot, turnout in the Hispanic-majority wards was reportedly anemic. Overall turnout, though, was higher than usual, which the Johnson campaign attributes in part to a surge among younger voters. We do not yet have enough information to confirm this assessment.\n", + "With a strong boost from the Chicago Teachers Union, which has become a dynamo of progressive policies and organizing in the Windy City, Johnson has an opportunity to advance his progressive agenda and become a trendsetter for other cities. Of course, governance always is more complicated than winning elections. The former will require policy approvals from the City Council and tax increases staunchly opposed by the business community to fund his proposed boost in social spending. How he deals with crime increases, underperforming schools, shaky city finances, and a divided Democrat party will determine how successful he is. Against the backdrop of the presidential campaign and national battles for control of Congress, next year won’t be dull.\n", + "\n", + "URL: https://www.brookings.edu/blog/order-from-chaos/2023/03/27/japans-new-security-policies-a-long-road-to-full-implementation/\n", + "TITLE: Japan’s new security policies: A long road to full implementation\n", + "Japan’s new security policies: A long road to full implementation\n", + "BODY:\n", + "\n", + "On December 16, 2022, Japan’s government released a new national security strategy, national defense strategy, and defense buildup program. In mid-January, Japanese Prime Minister Fumio Kishida and key Cabinet officials visited Washington to jointly highlight these documents and discuss the next steps for the U.S.-Japan alliance with the Biden administration.\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "Adam P. Liff\n", + "\n", + "\t\t\t\t\tNonresident Senior Fellow - Foreign Policy, Center for East Asia Policy Studies \n", + "\n", + " Twitter\n", + "AdamPLiff\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "Jeffrey W. Hornung\n", + "\n", + "\t\t\t\t\tSenior Political Scientist - RAND Corporation \n", + "\n", + "\t\t\t\t\tAdjunct Professor - Georgetown University \n", + "\n", + "\n", + "\n", + "\n", + "At the time, much commentary rightly noted the historic ambition contained within Japan’s new strategies aimed at strengthening deterrence in response to a worsening regional security environment.\n", + "In all the excitement over these historic announcements, however, much of the discourse has inappropriately treated Japan’s strategies as a done deal, as though their full realization is inevitable. The reality is that an extraordinary alignment of political, economic, fiscal, and other stars will be necessary for Japan’s government to fully implement the Kishida administration’s stated ambitions over the next 5-10 years.\n", + "To be sure, Japan may ultimately get there. But the road ahead may be bumpy.\n", + "What Japan’s “three documents” are — and what they are not\n", + "Japan’s new National Security Strategy (NSS) — the first since 2013 and only the second ever — is Tokyo’s “supreme national security policy document.” It “provides strategic guidance for Japan’s national security policy areas, including diplomacy, defense, economic security, technology, cyber, maritime, space, intelligence, official development assistance (ODA), and energy.” Japan’s new National Defense Strategy (NDS) — the first so-named and the successor to the erstwhile National Defense Program Guidelines (six versions since 1976; last revised in 2018) — is basically a ten-year guideline that is designed to clarify Japan’s defense objectives and the ways and means by which the government intends to achieve them. Its companion document, the Defense Buildup Program, provides “program guidelines” for building and maintaining the critical defense capabilities needed to support the NDS.\n", + "These documents were approved by Japan’s National Security Council and Cabinet — the members of which are appointed by Japan’s prime minister. As such, they are a clear signal of the current Kishida government’s political and policy intent.\n", + "However, these documents are not legally-binding commitments, plans, or legislation that have received the imprimatur of Japan’s National Diet, much less been fully resourced.\n", + "“The most severe and complex security environment since the end of World War II”\n", + "While Japan’s defense orientation remains fundamentally unchanged in key aspects, these new strategies, together with the outcomes from the January 2023 U.S.-Japan summit and cabinet-level security meetings in Washington, reflect a re-evaluation by Japan’s government of what it can and must do to more effectively enhance deterrence in the face of a rapidly worsening security environment, a changing balance of power in East Asia, and the arrival of a “new era of strategic competition.” They are the latest manifestation of a judgment shared across successive administrations in Japan that Tokyo must adopt a more proactive role in deterrence and regional stability amidst what the documents call Japan’s “most severe and complex security environment since the end of World War II.”\n", + "The new NSS identifies China and North Korea’s activities as posing, respectively, “an unprecedented and the greatest strategic challenge” and a “grave and imminent threat.” Meanwhile, it notes that “Russia’s aggression against Ukraine has easily breached the very foundation of the rules that shape the international order.” Critically, the NDS judges that Russia’s aggression was possible because “Ukraine’s defense capability … was insufficient” for effective deterrence. All told, the sense of urgency that Japan’s posture must adapt quickly to a changing security environment vastly exceeds that of the 2013 NSS.\n", + "In response to threats both general and specific, the new strategy calls for “fundamentally reinforcing Japan’s own capabilities.” For example, Japan’s unprecedented call for “counterstrike capabilities” results from a frank recognition that China and North Korea’s ballistic and cruise missile arsenals could overwhelm Japan’s air and missile defense systems. Meanwhile, the call for surging defense spending reflects not only a push for new, expensive capabilities (e.g., counterstrike; unmanned systems) but also an awareness that after years of under-investment in key initiatives (e.g., munitions and parts stockpiles, passive base defenses, cyber and space capabilities), vastly greater resources are needed to strengthen deterrence and resilience.\n", + "\n", + "Related Books\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " \n", + "\n", + "\n", + "\n", + "The Crisis of Liberal Internationalism\n", + "\n", + "\n", + "\t\t\t\t\t\tEdited by Yoichi Funabashi and G. John Ikenberry \n", + "2020\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " \n", + "\n", + "\n", + "\n", + "Dilemmas of a Trading Nation\n", + "\n", + "\n", + "\t\t\t\t\t\tBy Mireya Solís \n", + "2017\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "P\n", + "\n", + "\n", + "\n", + "Politicians and Policymaking in Japan\n", + "\n", + "\n", + "\t\t\t\t\t\tBy Gerald L. Curtis \n", + "2002\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "From here to there: a long (and potentially bumpy) road ahead\n", + "It is one thing to map out an ambitious vision and list of program priorities, which Japan has already accomplished with the release of last December’s “three documents.” But it is something different to effectively, efficiently, and fully implement it.\n", + "Show me the money: resourcing\n", + "As the new documents clearly acknowledge, major defense budget increases are the sine qua non for realizing much of Japan’s new national security vision. Without any doubt, the planned change in the official annual defense budget from 5.4 trillion yen in 2022 ($40 billion in today’s rates) and 8.9 trillion yen in 2027 ($67 billion in today’s rates) — a roughly two-thirds increase — is a historically significant pledge.\n", + "But the ambitious new spending targets were announced before a concrete plan for how to fully finance them. Generating and sustaining this massive amount of new funding over the next several years — and beyond — may not be easy.\n", + "Parliamentary debate has so far focused on some combination of sources — including tax increases, debt spending, expenditure cuts, and moving resources around from other budgets. Yet even within Kishida’s own Liberal Democratic Party (LDP), internal fissures have already emerged publicly. Furthermore, a December 2022 poll also showed that tax hikes were opposed by a clear majority. With an approval rating hovering between 30% to 40%, it’s not clear how much political capital Kishida (or his successors) will have to push through potentially unpopular funding measures. Tax increases in Japan have long been politically precarious.\n", + "There are certainly grounds for optimism in Tokyo. The Lower House just approved the government’s FY2023 budget request, which includes a massive defense budget increase of 26%. But there is no guarantee that achieving these spending levels will be fiscally or politically sustainable in the long run, especially with other recently announced initiatives also requiring massive outlays. Indeed, it is no secret that Japan faces severe demographic, economic, and fiscal headwinds.\n", + "None of this is to suggest that Japan reaching and sustaining an 8.9 trillion yen defense budget by 2027 is impossible. Rather, the point is only that it would be a mistake to assume it’s inevitable simply because it appears in the December 2022 Defense Buildup Program.\n", + "Don’t forget the politics\n", + "Beyond appropriations, legal and other reforms will also be necessary to fully implement pledges contained within the “three documents.” Given important constitutional, political, and other constraints on Japan’s defense posture, the devil may be in the details.\n", + "Forward momentum is already clear. Some new legislation has already been proposed, including as it concerns historic new reciprocal access agreements with Australia and the United Kingdom. In the coming years, additional legislation and reforms will be needed. For example, to implement the pledge to develop “active cyber defense” or capabilities to obtain human intelligence, the Diet may need to pass legislation related to privacy to assuage concerns about government overreach.\n", + "Domestic politics will impact whether and how quickly legislation will clear the Diet. Additionally, the precise content will also be shaped by political processes. At a minimum, Kishida’s LDP will need support from Komeito, its more “dovish” junior coalition partner with a clear track record of diluting major national security-related initiatives championed by LDP conservatives.\n", + "A potpourri of other issues\n", + "Lastly, even if fully resourced and legislated, Japan’s leaders will need to effectively implement Tokyo’s new national security strategy. First and foremost, they will need to negotiate a lot of political agreements — interagency; intra-coalition; and with the United States and other major international partners.\n", + "For Japan, an assortment of important tasks remains outstanding if it is to achieve its goals, including: securing qualitatively and quantitatively sufficient manpower; reinvigorating the defense industrial base; establishing new and diverse partnerships with the private sector; developing new doctrines, concepts, and forms of command and control; accelerating technological innovation; and cooperating with other countries in technological innovation and foreign military sales.\n", + "Adapting the U.S.-Japan alliance to Tokyo’s new ambitions and capabilities could be critical, especially if both countries judge that a rethink of the traditional “shield and spear” division of labor of roles and missions is necessary.\n", + "And none of these objectives will be pursued in a vacuum. Domestic and international political vicissitudes and unexpected events may force adjustments. The massive earthquake, tsunami, and nuclear disaster that struck Japan in March 2011 and Russia’s ongoing war against Ukraine are only two examples of how unforeseen “shocks” can drastically reshape political and strategic priorities.\n", + "Final word\n", + "Pointing out the difficult road ahead is not meant to minimize the significance of the ambitions contained in Japan’s new national security and defense strategies, or to suggest achievement is unlikely. Rather, the intent is simply to highlight that despite the bold steps forward already taken by the Kishida Cabinet, there remain many unknowns about what will come next, and how bumpy the path forward is likely to be. One thing is certain: a lot of hard work — in both Tokyo and Washington — lies ahead.\n", + "\n", + "\n", + "Related Content\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " \n", + "\n", + "\n", + "\n", + "Order from Chaos\n", + "South Korea-Japan rapprochement creates new opportunities in the Indo-Pacific\n", + "\n", + "Andrew Yeo\n", + "Friday, March 17, 2023\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " \n", + "\n", + "\n", + "\n", + "Order from Chaos\n", + "As Kishida meets Biden, what is the state of the US-Japan alliance?\n", + "\n", + "Mireya Solís\n", + "Friday, January 20, 2023\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " \n", + "\n", + "\n", + "\n", + "Order from Chaos\n", + "Will Biden’s Asia trip help the US meet its strategic objectives?\n", + "\n", + "Mireya Solís\n", + "Tuesday, May 24, 2022\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "URL: https://www.brookings.edu/research/addressing-the-looming-sovereign-debt-crisis-in-the-developing-world-it-is-time-to-consider-a-brady-plan/\n", + "TITLE: Addressing the looming sovereign debt crisis in the developing world: It is time to consider a ‘Brady’ plan\n", + "Addressing the looming sovereign debt crisis in the developing world: It is time to consider a ‘Brady’ plan\n", + "BODY:\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "Brahima Sangafowa Coulibaly\n", + "\n", + "\t\t\t\t\tVice President and Director - Global Economy and Development \n", + "\n", + "\t\t\t\t\tSenior Fellow - Global Economy and Development \n", + "\n", + " Twitter\n", + "BSangafowaCoul\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "W\n", + "\n", + "\n", + "\n", + "Wafa Abedin\n", + "\n", + "\t\t\t\t\tResearch and Administrative Assistant to the Vice President and Director - Global Economy and Development \n", + "\n", + "\n", + "\n", + "\n", + "Among the challenges facing developing countries, none is arguably more crucial than the significantly deteriorated fiscal situation that threatens to erase several years of progress on development agendas. According to some estimates, almost 60 percent of the poorest countries are either in or at high risk of debt distress, nearly doubling since 2015 (Figure 1; World Bank 2022a). Total debt service payments on public and publicly guaranteed (PPG) external debt of the poorest countries rose to over $50 billions in 2021, with repayments now representing 11.3 percent of government revenue in the poorest countries, up from 5.1 percent in 2010 (Figure 2). In most developing countries, the cost of servicing external debt now exceeds expenditures on health, education, and social protection combined (UNICEF, 2021). The current global environment characterized by higher global interest rates and exchange rate depreciations against major currencies is adding to the fiscal challenge by raising the cost of external financing and debt service. Debt service payments for the poorest countries rose 36 percent to over $70 billion last year and are projected to remain elevated through at least 2027 (Figure 3). It is increasingly evident that the Common Framework for Debt Treatments, adopted by the G-20 to help developing countries restructure their debts and address solvency issues and protracted liquidity problems, is facing serious operational challenges. Echoing widely shared concerns about the limitations of the CF, the International Monetary Fund’s Managing Director called for changes to it while the World Bank President urged for the acceleration of its implementation. Likely due to the challenges with the CF, out of the 37 countries at high risk of or in debt distress, only four countries have requested assistance under the framework so far. We need a pre-emptive and wholesale approach to restore fiscal sustainability across the developing world and avert a systemic debt crisis.\n", + "Figure 1: Low-income countries Debt Sustainability Analysis\n", + "\n", + "Source: IMF Annual Report (2022a) and author’s calculations using the IMF Debt Sustainability Analysis for Low-income Countries (2022).\n", + "Figure 2: External PPG debt servicing cost (2000-2022)\n", + "\n", + "Source: Author’s calculations using World Bank International Debt Statistics (2021) and IMF World Economic Outlook database (2022b).\n", + "Figure 3: Total external PPG debt service coming due\n", + "\n", + "Source: Author’s calculations using World Bank International Debt Statistics (2021).\n", + "In this policy brief, we propose that the G-20 adopt a Brady-like scheme to accelerate the restructuring of external private sector debt to restore debt sustainability in the affected countries with the following design features.\n", + "First, we recommend the creation of a new special purpose fund—the recovery and sustainability fund (RSF)—to be capitalized by International Financial Institutions (IFIs) and bilateral donors. Second, the funds will be used to secure collateral against new tradable bonds—Recovery and Sustainability bonds (RSBs)— issued by participating indebted countries. The guarantees attached to the RSBs will provide credit enhancement and allow countries to issue the new bonds on terms that are more favorable than those of the current stock of private external debt. As shown in Figure 4, despite holding about 27 percent of the debt, the private sector accounts for 37 percent of the debt service due to the higher cost; the median coupon rate is 7.5 percent. The new bonds would also have longer maturities, ideally 30 years. The beneficiary countries could use the proceeds from the RSBs to retire the outstanding balance on the current private external debt.\n", + "Figure 4: Share of debt versus share of debt service cost in 2021\n", + "\n", + "Source: Author’s calculations using World Bank International Debt Statistics (2021).\n", + "The lower coupon rates on the RSB along with the longer maturity will lead to sizeable reductions in the debt burden to more sustainable levels. We conduct a simple illustrative simulation, which indicates that this scheme could reduce the debt service payments as a share of government revenues by up to 4 percentage points per year for the average developing country, cutting near half the debt service burden in many cases. We further estimate a total reduction in external debt repayment of up to $100 billion over the next five years. In the remainder of the brief, we document the deterioration in sovereign debt situation, review the challenges with the CF, and outline the case for a Brady-like plan.\n", + "Download the full policy brief.\n", + "\n", + "\n", + "Related Content\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " \n", + "\n", + "\n", + "\n", + "Climate Change\n", + "Debt-for-adaptation swaps\n", + "\n", + "Chetan Hebbale and Johannes Urpelainen\n", + "Tuesday, March 21, 2023\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " \n", + "\n", + "\n", + "\n", + "Global Development\n", + "Social and development impact bonds by the numbers\n", + "\n", + "Emily Gustafsson-Wright and Elyse Painter\n", + "Thursday, March 9, 2023\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " \n", + "\n", + "\n", + "\n", + "Africa in Focus\n", + "Managing the compounding debt and climate crises\n", + "\n", + "Gracelin Baskaran\n", + "Wednesday, March 1, 2023\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "URL: https://www.brookings.edu/research/breaking-the-urban-doom-loop-the-future-of-downtowns-is-shared-prosperity/\n", + "TITLE: Breaking the ‘urban doom loop’: The future of downtowns is shared prosperity\n", + "Breaking the ‘urban doom loop’: The future of downtowns is shared prosperity\n", + "BODY:\n", + "\n", + "In 2019, the skylines of many American downtowns were sparkling with new construction. Hudson Yards in New York, the Frost Tower in San Antonio, San Francisco’s Salesforce Tower, the futuristic Amazon Spheres and surrounding towers in Seattle, and thousands of other buildings were all part of the more than 100 million square feet of new office space built in the United States just before the onset of the COVID-19 pandemic.1 Demand for cities seemed stronger than ever.\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "Tracy Hadden Loh\n", + "\n", + "\t\t\t\t\tFellow - Brookings Metro, Anne T. and Robert M. Bass Center for Transformative Placemaking \n", + "\n", + " Twitter\n", + "lohplaces\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "Hanna Love\n", + "\n", + "\t\t\t\t\tSenior Research Associate - Brookings Metro \n", + "\n", + " Twitter\n", + "hannamlove\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "Flash forward four years. By now, COVID-19 has claimed the lives of over 1 million Americans and raised new questions about another potential casualty: Is the pandemic, particularly its impact on the nature of work, taking down the American city? Nowhere is this fear more pronounced than in the nation’s “superstar” cities and their shiny downtowns.\n", + "This specter of an office real estate apocalypse, “urban doom loop,” transit death spiral, or “ghost towns” is filling some urban observers with existential dread. So too are reports of rising crime and unsheltered homelessness in downtowns. However, this fear is not new, nor is it destiny.\n", + "But this dread should prompt public and private sector leaders to reassess. In fact, they have an opportunity to seize this moment to chart a new future for American cities—one that reimagines downtowns as prosperous and inclusive places that advance shared prosperity across all neighborhoods.\n", + "A group of public and private sector leaders in some of the nation’s largest cities—New York, Chicago, Philadelphia, and Seattle—have come together at Brookings Metro to do just this. These leaders were at the forefront of inclusive growth before the pandemic, and are now working with Brookings Metro and each other to identify policy, practice, and governance solutions that can be the seeds for the next generation of shared prosperity in downtowns, cities, and regions.\n", + "Ghost-town downtowns: An old narrative with a new twist\n", + "Only a generation ago, white flight and suburban sprawl left many cities as partial ghost towns. Anti-city rhetoric around “blight” and “inner-city crime” was used to justify the most negative aspects of urban renewal and, later, the war on drugs, which had significant consequences for the economic and social fabric of American cities. Suburbanization spread the fruits of growth out over more land area and jurisdictions, while public and private sector abandonment of center cities both concentrated poverty and increased the overall cost of services—weakening city and regional economies and exacerbating racial and economic segregation.\n", + "The villainization of American city centers began to reverse in the early 2000s, as highly educated young workers and some employers returned, lured by proximity to jobs, amenities, walkability, and a sense of place that downtowns offered. For instance, in 35 of the top 45 U.S. downtowns by job count, the share of the regional population living in the commercial core (Table 1, Columns 5 and 6) grew between 2000 and 2020. And in a select few downtowns, regional job market share grew between 2011 and 2019 (Table 1, Columns 2 and 3), with Boston leading the pack.\n", + "\n", + "\n", + "\n", + "...\n", + "\n", + "\n", + "NotesCC = commercial core, AC = Activity Center\n", + "Data sources\r\n", + " 2019 U.S. Census Bureau Longitudinal Employer-Household Dynamics (LEHD) Origin-Destination Employment Statistics (LODES), available online.\n", + "\r\n", + " 2020 U.S. Census\n", + "\n", + "\n", + "\n", + "The urban “downtown resurgence” of the 21st century provided a new boost for urban cores that had been in decline, but it also created economic cleavages within cities and regions. In cities across geographic and economic spectrums—from Chattanooga, Tenn. to Detroit—subsidized development downtown ushered in newcomers while other (often predominantly Black and Latino or Hispanic) neighborhoods continued to lack basic amenities like grocery stores. At the same time, suburban poverty rates climbed. While not an entirely new phenomenon, on the eve of the COVID-19 pandemic, there was a public consensus in cities that the benefits of downtown growth weren’t extending to many other parts of the city and region.\n", + "Chicago: “The most obvious challenge that Chicago has struggled with—and has such a reputation for—is the segregation. Literally being able to draw the line from north and south, you see where it changes…You see it at the street level. All of that is just very visible. And it’s happened for so long.”   \n", + "Over the last three decades, then, city centers went from being perceived as dangerous and declining (a reason for white flight and suburbanization) to increasingly unaffordable and exclusive (a driver of urban inequality) to being “dead” once again (due to the retreat and slow return of office workers, increasing business closures and vacancies, and fear of crime and unsheltered homelessness).\n", + "This reversal is forcing local and regional leaders to ask: What does the future of downtowns look like? How can downtowns adapt to become less reliant on commuters and office space? What purpose should our downtowns fulfill? And most importantly, how can downtowns be more inclusive, safe, and productive for all residents as they evolve and recover from the pandemic? The timing of these questions—combined with a fire hose of federal relief aimed directly at cities—presents local leaders with a material opportunity to “think big.”\n", + "New York: “I think we’ve moved the conversation from ‘I’m scared of getting Covid and giving it to my loved ones’ to ‘I’m generally not feeling okay going back to the office because I’m seeing all of this crime, or what we perceive as crime, on the street and I don’t want to go back.’”\n", + "\n", + "Methods\n", + "This brief is part of a mixed-methods research project that seeks to understand the future of downtowns through interviews, spatial data analysis, and direct engagement with local leaders. To understand perceptions of downtown health and recovery, in fall 2022, we spoke with nearly 100 stakeholders in New York,2 Chicago, Seattle, and Philadelphia, including business leaders, major employers, public sector officials, residents, place governance associations, and other nonprofit and civic leaders.3\n", + " \n", + "We then juxtaposed our qualitative findings with quantitative spatial analysis of population, employment, travel, and real estate data impacting downtown recovery. To do so, we first needed to develop a definition for “downtown” that is both consistent and comparable across cities, but precise enough to distinguish downtowns from adjacent submarkets. (This is because perceptions of what “downtown” is can vary significantly, and multiple cities have distinct commercial submarkets that have varying dynamics within a single city center.)\n", + " \n", + "To define “downtown,” we began by identifying each metro area’s central business district (CBD) as the census block with both the highest job density in the region and the largest absolute number of jobs; this is similar to the approach the International Downtown Association used in prior research. We then identified all adjacent blocks with a live-work quotient (ratio of residents to jobs, shown in Table 1, Column 8) of less than 0.1.4 We defined a metro area’s “commercial core” as the broader area of contiguous census block groups characterized by moderate- to high-density development with more jobs than residents (live-work quotient < 1).5\n", + " \n", + "This essay includes an analysis based on these definitions for the 45 largest U.S. downtowns (by job count, as shown in Table 1, Column 1). It is the first in a series of research products designed to inform the conversation—and local decisionmaking—on contemporary issues impacting American downtowns, from housing and adaptive reuse to perceptions and realities of public safety. \n", + "\n", + "Downtowns’ challenges didn’t start with the pandemic\n", + "To help local leaders “think big” about center city recovery, it’s important to understand the pre-pandemic spatial distribution of cities’ jobs, opportunities, and amenities. Prior to the pandemic, the country’s economic geography was already evolving, and there was a need for downtown leaders to understand and adapt to these trends.\n", + "First, even during the “urban resurgence,” downtowns were not the only game in town. In fact, the knowledge and innovation economy’s demands on place did not favor only the urban core. With so many jobs already suburbanized and with rising demand for new, collaborative, green, and amenity-rich work environments (which some older downtowns could not adapt fast enough to supply), a constellation of activity centers both adjacent to downtowns and their suburbs emerged to meet new demand for density. As many have pointed out, even before the pandemic, office-dominated places like San Francisco’s downtown were not places residents liked to frequent unless they had to.\n", + "\n", + "For example, Figure 1 shows the Seattle region’s activity centers (areas where economic, social, and civic assets cluster), which include downtown but also other increasingly desirable neighborhoods such as University District, Bellevue, and Capitol Hill, which have witnessed population and economic growth largely driven by knowledge economy workers.\n", + "At the same time regions were witnessing the growth of new activity centers, only one-third of U.S. downtowns were gaining job market share in the years between the Great Recession and the pandemic’s arrival. Another one-third were growing only enough to hold steady, while the last third were in decline. Almost all regions were threatened by widening income inequality between neighborhoods.\n", + "Some cities were responding to their changing economic realities. For example, even prior to the pandemic, Phoenix built a downtown strategy adapted to its relatively low downtown job market share and weak office demand (Table 1) with creative placemaking and by both attracting new anchor institutions and investing in transit connections to other activity centers. Chicago’s pre-pandemic Neighborhood Opportunity Fund aimed to link the wealth generated by downtown development with small businesses in underserved commercial corridors. But others were stuck in an old mindset—overlooking the importance of placemaking, blocking new housing development, limiting the growth of anchor institutions, or failing to invest in transit.\n", + "While the pandemic did not create the origins of downtowns’ challenges, in its wake, the persistent and likely structural weakening of downtowns’ productivity could become a closed, reinforcing cycle: a doom loop. Some say that given suburbanization, the growth of activity centers, and remote work, downtowns simply no longer matter in the same way they once did (or, worse, that they are smoking craters that people should avoid). Others say downtowns have gotten all the spoils in recent decades, and it’s high time that public dollars focus on investment in neighborhoods. But it’s not that simple.\n", + "From ‘downtowns versus neighborhoods’ to downtowns supporting neighborhoods\n", + "Both the “downtowns versus neighborhoods” and “cities versus suburbs” viewpoints present false dichotomies that hold all residents of a region back.\n", + "First, downtowns are extremely important to their regional economies. As a rule, downtowns are the most intense clusters of jobs in their metro areas—concentrating both higher-wage jobs (such as those in finance, insurance, law, or public administration) and lower-wage jobs (such as those in the arts or hospitality). Drawing on our mapping of regional activity centers, we compared the pre-pandemic job density of downtown activity centers to all other activity centers in their respective regions. For all of the 45 largest U.S. downtowns, downtown activity centers concentrate more jobs than other regional activity centers by a factor ranging from a low of 1.4 in Birmingham, Ala. to a high of 27.5 in Chicago (Table 1, Column 4). With few exceptions, even if 50% of jobs did not return to U.S. downtowns and 100% of jobs returned to every other job center (an extreme and unlikely scenario), downtowns would still be the densest job centers in their relative regions. Their well-being matters to the whole economy.\n", + "Downtowns also matter to city residents, including workers and small business owners. Jobs in downtowns are generally more physically accessible to city dwellers than those in far-flung suburban areas. Beyond that, downtowns’ draw as regional job centers helps support local businesses. Every day, when suburban commuters arrive at jobs in a city center, the fiscal damage done by suburbanization is partially mitigated by their local spending. To summarize Table 1, the suburban commuter workforce increases the average city’s daytime population—and thus the market for goods and services—by an average of 19% (Table 1, Column 7). In a few notable cases, this boost is 50% or more, as in Washington, D.C. (50%); Boston (56%); and Hartford, Conn. (60%). In cities with a much higher daytime population relative to their resident population, the loss of sales tax and local employment in services and hospitality are likely acute.\n", + "Finally, downtowns matter to cities’ fiscal health. A typical U.S. downtown such as Chicago produces more than 7 times its tax assessable value relative to land area, as shown in Figure 2. In the rest of the city, this relationship is inverted, with land area producing less than three-quarters of its share of taxable value. The biggest U.S. cities with major office real estate footprints are still anticipating future revenue shortfalls as the “fiscal time bomb” of commercial real estate valuations adjusts to the new market reality and federal aid is used up. The well-being of all parts of these cities depends on maintaining a balanced budget—and an essential part of that is keeping downtowns productive.\n", + "\n", + "While the challenges facing downtowns must be addressed to ensure a prosperous future for American cities, investing in strong downtowns does not have to come at the expense of supporting disinvested neighborhoods. Past policies and practices have created a perception (or reality) that downtowns prosper while neighborhoods stagnate. There is an obvious moral and economic mandate to invest in neighborhoods, but downtowns are a critical part of this solution—for example, through the revenue they generate, which can be used to fund neighborhood improvements and create a positive loop where downtowns benefit from healthy neighborhoods as neighbors. This is shared prosperity, but as we consider the future of downtowns and cities, it is not a given.\n", + "Philadelphia: “Until you fix Kensington, Philly can never be a world-class city. Philly could be a world-class city, but only if it fixes communities like Kensington. No question. You can’t just make Center City shiny.”\n", + "Actions local leaders can take to advance both downtown and neighborhood recovery\n", + "In 2021, we wrote that to recover from COVID-19, downtowns would need to adapt by modernizing their office product, diversifying their land use mix, and prioritizing livability (such as quality public spaces, arts, traffic safety, etc.). As public and private sector leaders consider these adaptations (such as in panels like “New” New York), it is critical that all parties resist falling into false dichotomies and forced tradeoffs, and instead work together across silos to create win-win solutions.\n", + "What kinds of win-win solutions could unlock another generation of value from our most historically productive places? And how might these solutions broaden who benefits from the productivity and prosperity that downtowns produce? In the coming months, Brookings Metro will continue to work with New York, Seattle, Chicago, and Philadelphia to explore and synthesize innovative policy solutions for the future of downtowns across the following domains:\n", + "\n", + "Inclusive workforce development and job recovery, including best practices on how to support a diverse workforce pipeline that helps employers find the talent they need and connects residents of all educational backgrounds to good and accessible jobs.\n", + "Entrepreneurship and small business development, including how to maximize the survival of existing small businesses while cultivating new and diverse small business ownership downtown.\n", + "Public safety and its impact on downtown recovery, including how to address both the perceptions and realities of crime in cities, with a focus on preventative, place-based solutions and the role of economic development professionals and the business community in promoting safety.\n", + "Homelessness and its impact on downtown recovery, including understanding the costs and benefits of revising tax structures and adaptive reuse ordinances to build new housing, as well as policy changes to prevent homelessness and displacement and increase the supply of permanent affordable housing.\n", + "Play and placemaking downtown, including strategies to make downtowns 24-hour destinations through arts, events, and programming, as well as how to measure the inclusivity of such placemaking interventions.\n", + "Collaborative governance, civic partnerships, and capacity building, including identifying which partnerships are needed to sustain downtown recovery and the key public and private sector actions needed to facilitate supportive capital flows between downtowns and historically disinvested neighborhoods.\n", + "\n", + "As Brookings Metro and the four-city cohort delve into policy and practice solutions for each domain over the coming months, we will publish findings and guidance for other city and downtown leaders nationwide to learn from.\n", + "Conclusion\n", + "As we experience yet another rhetorical onslaught predicting the decline of cities and their downtowns, it is important to remember that cities have faced their share of crises before. From suburbanization and white flight to the rise of crime in urban centers in the 1990s to the 9/11 terrorist attacks on New York, cities and downtowns—and most especially, the people who activate them— have proved their resilience.\n", + "The COVID-19 pandemic is no different, except that city leaders are facing a task that is two-fold: 1) ensuring a strong downtown recovery to restore the fiscal and economic well-being of their city and region; and 2) promoting a recovery that intentionally confronts the challenges and inequities that plagued downtowns prior to the pandemic.\n", + "As the heart of our nation’s economy, downtowns have the unique potential—and imperative—to act boldly and inclusively to rebuild stronger than before. Rather than seeking to return to the pre-pandemic status quo, this is a pivotal moment for downtowns to build equity into revitalization by implementing policy solutions that connect downtown prosperity to more neighborhoods and more people. Only then can cities and regions realize their full potential.\n", + "\n", + "Related Books\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " \n", + "\n", + "\n", + "\n", + "Hyperlocal\n", + "\n", + "\n", + "\t\t\t\t\t\tBy Jennifer S. Vey and Nate Storring \n", + "2022\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "The authors would like to thank DW Rowlands for her excellent research assistance on this piece. They also extend their sincere gratitude to Fred Cerullo (Grand Central Partnership), David Downey (International Downtown Association), Anne Fadullon (City of Philadelphia), Paul Levy (Center City District), Julie Stein (City of New York), and Jennifer S. Vey for reviewing earlier drafts of this piece. Any errors that remain are solely the authors’.\n", + "\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "URL: https://www.brookings.edu/research/the-second-half-of-the-sustainable-development-goal-era-ideas-for-doing-things-differently/\n", + "TITLE: The ‘Second Half’ of the Sustainable Development Goal era: Ideas for doing things differently\n", + "The ‘Second Half’ of the Sustainable Development Goal era: Ideas for doing things differently\n", + "BODY:\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "John W. McArthur\n", + "\n", + "\t\t\t\t\tDirector - Center for Sustainable Development \n", + "\n", + "\t\t\t\t\tSenior Fellow - Global Economy and Development \n", + "\n", + " Twitter\n", + "@mcarthur\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "This September, the U.N. will convene a midpoint summit on the Sustainable Development Goals, halfway between their 2015 launch and 2030 deadline. For many leaders gathering in the General Assembly, the mood might be somber. Stark global tensions alongside inadequate SDG progress make for a tough outlook. But a successful summit will need to focus on pragmatics more than sentiment: What has gone well, where could a burst of effort tackle gaps, and—perhaps most importantly—what needs to be done differently? \n", + "The spirit of doing things differently is central to the purpose of the SDGs. The title of the all-country agreement establishing the goals was nothing shy of “Transforming our world.” It emphasized the “universal, integrated, and interrelated nature” of the goals, which “seek to realize the human rights of all.” Societies were not signing on to cherry-pick goals here and there. A hundred and ninety-three countries committed to transformation across all the goals, everywhere.  \n", + "But how much has actually changed in the ensuing years? Or more plainly, how many changes have turned out to be for the better?   \n", + "Fortunately, there are success stories. Compared to 2015, for example, a million fewer children under five are dying every year. India has extended basic sanitation access to more than 165 million additional people. Amid the pandemic, Togo deployed frontier digital technologies to deliver rapid cash assistance to nearly a quarter of its adult population, with priority to informally employed women. Since the SDGs were adopted, more than 200 legal reforms have been enacted across more than 100 countries to address domestic violence, penalize sexual harassment, and prohibit gender discrimination in employment. The United Kingdom’s greenhouse gas emissions dropped by roughly a fifth, despite the country’s remarkable political travails. Between 2015 and early 2023, Canada jumped from protecting around 1 percent to nearly 15 percent of its marine and coastal areas.  \n", + "A growing range of constituencies are engaging on the SDGs too. More than 60 local government entities have crafted “Voluntary Local Reviews” of their SDG progress since New York City pioneered the first one in 2018. Almost three-quarters of the world’s 250 largest companies by revenue now report against some dimension of the SDGs. Times Higher Education’s “Impact rankings” have prompted huge numbers of universities to benchmark efforts against the SDGs. The Nature family of journals has intentionally expanded their range of outlets to heighten SDG-related scientific debates, most recently including Nature Water, launched earlier this year.  \n", + "But despite these successes, empirical assessments draw attention to widespread SDG shortfalls. Our own previous work shows the huge number of people’s lives and basic needs at stake around the world, in addition to the planet itself. On many measures of SDG 5 for gender equality, current trends imply waiting decades if not centuries for targets to be achieved. Too few trendlines have changed, and in several areas the world is moving in the wrong direction.  \n", + "The bottom line is that the world has not been doing enough things differently enough to be on course for SDG success. One 2022 meta-study soberly assessed that the SDGs’ impact on institutions and policies “has been largely discursive,” with limited “institutional impact, from legislative action to changing resource allocation.” Other studies have shown similar gaps in the private sector, where SDG rhetoric still doesn’t translate enough to action.  \n", + "At the Brookings Center for Sustainable Development (CSD), we confront such findings with both clear-eyed rigor and determination. Our scholars and scholar teams work within their respective domains of expertise to distill challenges into component parts and distinguish between which pieces need reinforcement, which merit targeted innovation, and which need wholesale renewal. We draw inspiration from one another’s commitment to improving understanding and recommending better paths forward. \n", + "In that spirit, this short compendium captures a cross section of SDG-focused insights and recommendations from CSD-affiliated scholars. Each brief essay describes something with the potential to be done differently during the second half of the SDG era. Across a dozen contributions, topics range from reframing media coverage of the SDGs to measuring and elevating the role of the private sector; from participatory approaches to transforming education systems to new learning paradigms for human rights; from better risk-taking in fragile countries to improving infrastructure and services for care; from fit-for-purpose multilateral development banks to a purpose-driven fund to end extreme poverty; from turbo-charged Canadian SDG approaches to renewed American SDG leadership; from breakthroughs in digital public infrastructure to innovative frontiers in the digitally empowered methods of collective behavior science.  \n", + "We hope these essays can help spark bigger, broader, and bolder public debates on things to be done better during the second half of the SDG era. The world needs to keep ramping up critical keystones to success—the policies, institutions, technology, data, business innovations, government actions, and multistakeholder consortiums that will help do things differently. Shallow either-or arguments about opportunity versus failure are of little use when many ingredients for SDG success are increasingly in place. The practical challenge lies in fostering the complementary ingredients required to achieve breakthroughs. \n", + "Over the coming months, CSD scholar teams will continue to push forward on specific challenges at the heart of the “second half” agenda for the SDGs. These vary from renewing multilateral financing for climate and development to reframing fiscal policies for gender equality to reimagining policy for rural America. Through the 17 Rooms initiative, we will continue to innovate around diverse forms of “next step” group actions, both internationally and at the community level.  \n", + "Across all 17 goals, individual countries and communities deserve to have their own debates on what they’d like to do differently. Where the evidence suggests things haven’t yet been done differently enough, the looming 2030 deadline can help renew motivation to spark change.   \n", + "The pledge of a world transformed will boil down to people coming together in groups of all scales to drive better actions together. Doing so with urgency can still deliver an inclusive world of sustainable prosperity for all. \n", + "Download the full essay.\n", + "\n", + "URL: https://www.brookings.edu/research/hey-journalists-we-have-a-story-for-you/\n", + "TITLE: Hey journalists, we have a story for you\n", + "Hey journalists, we have a story for you\n", + "BODY:\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "Matthew Bishop\n", + "\n", + "\t\t\t\t\tNonresident Senior Fellow - Global Economy and Development, Center for Sustainable Development \n", + "\n", + " Twitter\n", + "mattbish\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "“Boring U.N. stuff,” the global journalistic profession seems to have collectively concluded early on about the Sustainable Development Goals (SDGs), before moving swiftly on to more interesting fare—of which, it is true, the past few years have offered a plentiful supply, what with Trump, COVID-19, Ukraine, Harry and Meghan, and other surefire headline grabbers. \n", + "Yet the media will likely have far more to say about the SDGs as the 2030 end date approaches. Any race against the clock generates tension, drama, and big decisions to report on as the deadline draws near.    \n", + "More subtly, the COVID-19 pandemic has provided tangible evidence of why taking the sort of broad approach adopted for the SDGs makes sense by highlighting how thoroughly interconnected are issues of personal and planetary health, exclusion, and inequality. Reporting on the interconnections between the various problems the world faces during this era of polycrisis should be far easier for a journalist to pitch to an editor post-pandemic. The smarter newsroom bosses are more likely to recognize that their writers should look beyond their narrow domain expertise to see the bigger picture. Asking a writer “how does your story relate to the SDGs?” could become a useful shorthand for editors wanting to encourage the use of a more panoramic reporting lens. \n", + "The smarter newsroom bosses are more likely to recognize that their writers should look beyond their narrow domain expertise to see the bigger picture. Asking a writer “how does your story relate to the SDGs?” could become a useful shorthand for editors wanting to encourage the use of a more panoramic reporting lens. \n", + "Business journalism may lead the rest of the profession in doing this kind of reporting, as the transformation demanded by the SDGs is becoming increasingly material to the companies and investors they write about.    \n", + "During last year’s 17 Rooms flagship process, hosted by the Center for Sustainable Development at the Brookings Institution and The Rockefeller Foundation, leading business media editors gathered in “Room 12,” a working group focused on actionable next steps for SDG 12 centered around responsible consumption and production. All of the editors said their organizations are now taking the SDGs—and their parallel yardstick in the business world, ESG (environment, social, governance)—far more seriously than they used to, and they expected their interest to keep growing. They also increasingly see a need to upgrade their newsrooms with the expertise needed to cover this story in a sophisticated way. \n", + "Business pressures from content consumers, advertisers, and conference sponsors are all helping push things in the right direction, but the biggest motivator is that this is no longer “boring U.N. stuff.” There is now a real story to report on, with real CEOs and successful investors wanting to talk about the profits, opportunities, and risks that abound on the road to SDG world. \n", + "Business editors first started to get it when companies started pledging to become carbon “net-zero.” What could be more natural for an editor than to have reporters look into how exactly these companies proposed to make this transformation, whether their strategy made any sense, and whether they were actually implementing it.   \n", + "As ESG now moves center stage politically in the U.S. and globally, serious media, especially those with decent business coverage, will likely do what it does best: report, inform, educate, and hold decisionmakers to account.  \n", + "However superficial the Punch-and-Judy political debate about ESG may seem compared to the seriousness of underlying environmental, social, and economic challenges of global sustainable development, it does stem from serious questions about the extent to which business should, can, and does make genuine efforts to improve the state of the world. Mobilizing the media to answer these questions is just what the SDGs need.  \n", + "Indeed, a more engaged media will increase general awareness of why the Global Goals are needed, and what will be required to get the job done. It will highlight what is working, and more painfully, highlight failures and a good deal of humbug in private-sector ESG/SDG initiatives. If that latter part hurts, it should also inspire learning and a determination to do better in future. For the SDGs, it will certainly beat being ignored. \n", + "Download the full essay.\n", + " \n", + "\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "URL: https://www.brookings.edu/research/caring-about-care-an-sdg-5-priority/\n", + "TITLE: Caring about Care: An SDG-5 priority\n", + "Caring about Care: An SDG-5 priority\n", + "BODY:\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "Caren Grown\n", + "\n", + "\t\t\t\t\tSenior Fellow - Global Economy and Development, Center for Sustainable Development \n", + "\n", + "\n", + "\n", + "\n", + "Goal 5 is an ambitious and expansive approach to reducing gaps between males and females and enabling women and girls to live their lives to the fullest. It proposes a multidimensional definition of, and comprehensive set of indicators for, tracking gender equality and women’s empowerment, complemented with targets and indicators across other goals. While advances have been made toward many aspects of Goal 5, the U.N. estimates that at the current rate, it will take nearly 300 years to meet all targets.  A high priority for accelerating progress is Target 5.4, which seeks to equalize the time that women and men spend on unpaid care and domestic work, including care for children, the elderly, the sick, and those with disabilities. Available data suggest this target is seriously off track.   \n", + "Even before COVID-19 exposed glaring gaps in the infrastructure, systems, and services for care, inequality between males and females in unpaid care and domestic work were stark, with women providing the bulk of care worldwide. At the same time, the need for more and better care is urgent.  Many countries will experience an increased demand for care, especially elderly care, over the next 7 years considering demographic trends and climate-related events. Fertility remains high in several countries in sub-Saharan Africa, which will require care for children, while several countries in Asia, the Middle East, and Europe face high growth rates of the elderly population, with many countries expected to turn greyer by the end of the SDGs in 2030. Conflict also increases the need for care, especially for those with physical and emotional disabilities. Unless the supply of publicly supported care for children, the elderly, and those with disabilities increases, and men take up more caring labor, women of working age will face pressure to drop out of the labor force to take on this role.  \n", + "There are currently no international legal standards for the provision of care. Nonetheless, the global community has adopted the “Five R” framework for care:  recognize, reduce, and redistribute unpaid work, and reward and represent paid caregiving. Comprehensive and coordinated policies, investments, and actions are needed to implement this framework. National governments play a key role in setting policies, including for parental leave and long-term care services1; occupational, safety, and other regulations for public and private care providers; and financing through public expenditure or tax credits.  Governments can also incorporate care as an economic sector in industrial planning and job creation strategies. As they do so, more investment and better regulation to assure the quality of care services will be critical. \n", + "Since care provision largely takes place at the local level, municipalities also play a key role—delivering or contracting out public services; issuing building codes, licensing requirements, and standards for care facilities; inspecting facilities to ensure standards are met; and providing financial support to families, to name a few functions.2 Bogota is a shining example of a municipality that has adopted a comprehensive care framework, centered around CARE blocks that currently operate in 10 areas of the city, providing a range of quality services for caregivers and recipients.   \n", + "But there is more to do. For instance, mayors, city councils, and urban planners can incorporate care services and infrastructure into city master plans. Collecting and analyzing data on the demand for care and the supply of care services is a first step. Planners can also link care diagnostics to strategies for housing, transport, land use, energy, water and sanitation, and food security. Meanwhile, cities can begin incorporating care provision into planning for climate risks and adaptation in response to climate shocks.  Employer-supported child care can be particularly impactful in low-income and post-conflict contexts where fiscal space may be constricted and publicly provided services are limited.  The needs of unpaid and informal caregivers should be at the heart of these efforts.  \n", + "All individuals require care and provide care at some point throughout their lives, many without the support they need.  Continued inaction and lack of investment is no longer an option. By 2030, there is a major opportunity to advance SDG 5.4, and ensure the world is on the way to building quality systems to support caregivers and those who receive it. National- and local-level leaders working together can help pave the way forward.    \n", + "Download the full essay.\n", + "\n", + "\n", + "URL: https://www.brookings.edu/research/participatory-policymaking-to-transform-education-systems-and-meet-sdg-4/\n", + "TITLE: Participatory policymaking to transform education systems and meet SDG 4\n", + "Participatory policymaking to transform education systems and meet SDG 4\n", + "BODY:\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "Rebecca Winthrop\n", + "\n", + "\t\t\t\t\tDirector - Center for Universal Education \n", + "\n", + "\t\t\t\t\tSenior Fellow - Global Economy and Development \n", + "\n", + " Twitter\n", + "RebeccaWinthrop\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "Still reeling from the COVID-19 pandemic, education systems around the globe are facing a myriad of challenges. The world did not have enough teachers before the pandemic, but today the crisis is even worse. Overwhelmed, exhausted, underpaid, and unappreciated, teachers (like nurses in many places) are leaving the profession.  UNESCO estimates tens of millions more are needed globally—from roughly 9,000 more in the Netherlands to 16.5 million in sub-Saharan Africa. Children’s well-being has also suffered drastically. Child marriage is on the rise in countries in the Global South with UNICEF estimating 10 million more girls at risk of child marriage due to COVID-19. In the Global North, especially, the pandemic has created a mental health crisis with the American Academy of Pediatrics declaring it a U.S. national emergency in October 2021.   \n", + "Unsurprisingly, the pandemic’s lasting impacts also reach academic learning. Many children, especially those with learning differences and from the most marginalized communities, are being further left behind on mastering essential skills like literacy and numeracy. In low- and middle-income countries, learning poverty (the percentage of 10-year-olds not able to read a simple text) has increased due to the pandemic, rising from 57 percent pre-pandemic to an estimated 70 percent in 2022. In the high-income country context of the United States, equity gaps widened with math proficiency scores for eighth-graders falling to levels not seen since 2000.  \n", + "Given what educators and systems leaders face, many argue that dialing back our ambition and focusing on closing the learning gaps on essential academic skills, namely literacy and numeracy, should take center stage rather than maintaining our collective focus on developing the lifelong learners envisioned in SDG 4. However, dialing back ambition is not the answer. Finding new and transformative ways to tackle the suite of problems is. The risk of replacing the SDG education goal with a more focused objective on, say, literacy and numeracy is that even though it would be framed as a floor to build on, education systems will orient around it and ultimately treat it as the core objective. It will unwittingly become a ceiling. One has to look no further than the United Nations Millennium Development Goals that focused on access to primary school for boys and girls as the starting point for a quality education, assuming quality teaching and learning would follow. Instead, it became the end goal with millions of children entering new schools and no learning taking place. \n", + "What is needed is a serious attempt to meet SDG 4 not by tinkering on the margins but by transforming systems so that they address the deep gaps in equity and relevance simultaneously. One approach to doing this is to harness innovation and bring it to the center of systems as we argued in 2018 in “Leapfrogging Inequality: Remaking Education to Help Young People Thrive.” The COVID-19 pandemic showed that education systems can indeed innovate in their core business. Several important pandemic-era innovations have the potential to deeply transform systems. For example, schools meaningfully sharing power with families on how to best collaborate to educate children is one important innovation that would transform systems. As our work in the Brookings Center for Universal Education highlighted, schools with deep relational trust between families and teachers are 10 times more likely to improve students’ academic and well-being outcomes. Maintaining this shift alongside other new practices such as effectively harnessing technology and integrating a focus on student well-being and mental health can help reach more children and provide them with the support and skills they need.       \n", + "Ultimately, developing and stewarding education system transformation requires a participatory approach that puts those inside the system at the center. Government leaders, teachers, students, and communities need to develop a shared vision of the purpose of their own education systems. Too often,  essential actors feel left on the sidelines with too little space made for their involvement by those with power. Engaging in participatory policymaking approaches is essential to sustain the commitment needed to accompany transformation over time and has been done in contexts ranging from British Columbia, Canada to Bogotá, Colombia. As David Sengeh of the government of Sierra Leone and I wrote together last year, education system transformation hinges on refreshed local assessment of goals—“are they meeting the moment that we are in, are they tackling inequality and building resilience for a changing world, are they fully context aware, are they owned broadly across society”—and then aligning action around shared answers.  With common purpose, education systems can be transformed to dramatically reduce inequalities and produce lifelong learning for all.  \n", + "Download the full essay.\n", + "\n", + "\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "URL: https://www.brookings.edu/blog/brown-center-chalkboard/2023/04/05/state-of-the-states-gubernatorial-policy-priorities-in-2023/\n", + "TITLE: State of the States: Gubernatorial policy priorities in 2023\n", + "State of the States: Gubernatorial policy priorities in 2023\n", + "BODY:\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "Katharine Meyer\n", + "\n", + "\t\t\t\t\tFellow - Governance Studies, Brown Center on Education Policy \n", + "\n", + " Twitter\n", + "@katharinemeyer\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "Rachel M. Perera\n", + "\n", + "\t\t\t\t\tFellow - Governance Studies, Brown Center on Education Policy - The Brookings Institution \n", + "\n", + " Twitter\n", + "@rachelmarisa\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "The federal government plays a limited role in education policy—states and local governments are primarily responsible for educating our nation’s youth. The first federal laws about education governance weren’t introduced until 1965 with the Elementary and Secondary Education Act (ESEA) and Higher Education Act (HEA). And still, states are given broad latitude to determine how to best implement these federal laws in their states. Today, the federal government provides only about 10% of funding for K-12 public education and does not directly contribute to college operations (though the U.S. Department of Education administers a large portfolio of financial aid programs to students pursuing postsecondary education). \n", + "States are often seen as “laboratories of democracy”—individual systems with their own executive, legislative, and judicial branches that may experiment with the development and implementation of policies to inform policy adoption in other states and at the federal level. These state-level policies then tend to “diffuse” throughout the country. One example of the prominent role that states play in agenda setting when it comes to education policy is the Common Core State Standards, K-12 education standards developed by the Council of Chief State School Officers and the National Governors Association, not by the federal government.\n", + "\n", + "\n", + "Related Content\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " \n", + "\n", + "\n", + "\n", + "Brown Center Chalkboard\n", + "The alarming state of the American student in 2022\n", + "\n", + "Robin Lake and Travis Pillow\n", + "Tuesday, November 1, 2022\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " \n", + "\n", + "\n", + "\n", + "Brown Center Chalkboard\n", + "What if Americans sour on public education? \n", + "\n", + "Jon Valant\n", + "Monday, August 29, 2022\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " \n", + "\n", + "\n", + "\n", + "Brown Center Chalkboard\n", + "Can public education return to normal after the COVID-19 pandemic?\n", + "\n", + "Paul T. Hill and Ashley Jochim\n", + "Thursday, October 29, 2020\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "The present moment reveals important insights into states’ priorities on public education. Most education systems—from early childhood to K-12 to postsecondary—are still reeling from the harmful effects of the pandemic and pandemic-era political conflicts. Many systems are also grappling with the wave of censorship bills and book bans sweeping K-12 schools and colleges across the country. In this context and with so much turnover taking place in state houses across the country—36 states held gubernatorial elections last fall with nine new governors starting their terms in 2023—we aim to understand what these changes mean for education policy. \n", + "In this series, we focus on gubernatorial education priorities for 2023 to understand what state laboratories are experimenting with. Each year, many of the nation’s governors deliver their “State of the State” reports. Analogous to the President’s State of the Union, these addresses provide governors an opportunity to present their policy priorities for the year and the remainder of their terms. In this series, we first review gubernatorial priorities laid out in governors’ State of the State addresses. We then provide key contextual information about these efforts — what the research says about various proposals and lessons learned from prior attempts to implement similar policies—that we hope can guide the transition from policy priority to policy in practice. \n", + "To do so, we rely on resources developed by teams at FutureEd, the Education Commission of the States, and the National Governors Association. These teams collated governors’ State of the State videos and transcripts, coded education topics covered, and made these resources publicly available for analysis. We are grateful for their careful work which this series builds on. \n", + "\n", + "URL: https://www.brookings.edu/blog/brown-center-chalkboard/\n", + "TITLE: State of the States: Gubernatorial policy priorities in 2023\n", + "BODY:\n", + "\n", + "URL: https://www.brookings.edu/blog/fixgov/2023/04/05/the-right-to-abortion-will-be-secured-before-the-end-of-the-decade/\n", + "TITLE: The right to abortion will be secured before the end of the decade\n", + "The right to abortion will be secured before the end of the decade\n", + "BODY:\n", + "\n", + "When the right to choose an abortion is on the ballot, it wins. And it will keep winning for the rest of the decade until the right to abortion is secured state by state in all but the deepest red states and the U.S. Supreme Court’s decision is rendered moot.\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "Elaine Kamarck\n", + "\n", + "\t\t\t\t\tFounding Director - Center for Effective Public Management \n", + "\n", + "\t\t\t\t\tSenior Fellow - Governance Studies \n", + "\n", + " Twitter\n", + "EKamarck\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "The latest evidence? On Tuesday, the liberal Milwaukee circuit court judge, Janet Protasiewicz, scored a solid victory over the conservative candidate Daniel Kelly in a race whose outcome would determine the majority on the Wisconsin Supreme Court and pave the way for overturning the 1849 law outlawing abortion.\n", + "This race is but the latest example of the power this issue has to upend American politics. It happened first in August 2022 when a referendum on the primary ballot in Kansas would have amended the state constitution to make abortion illegal. Turnout was high — more votes were cast (980,000) than in any primary election in Kansas history. In a state Donald Trump won by 15 points, the anti-abortion referendum lost 59% to 41%. The larger more urban counties rejected the referendum by large margins and in the rural counties where it won it won by narrow margins.\n", + "And now Wisconsin.\n", + "In the 2020 presidential race, Wisconsin was a battleground state where Biden won a narrow victory (just over 20,000 votes) over Trump. The race for the open Supreme Court seat broke all records for turnout and money spent. Turnout appears to be 1.8 million — over half of the turnout in the 2020 presidential election. Over $45 million was spent according to WisPolitics — “a stunning sum for a statewide, off-year, springtime election.” The campaigning was intense, complete with nearly half of the ads about abortion.\n", + "As the race went on, Dan Kelly, the conservative candidate with a pro-life record, tried to change the subject and tamp down the abortion issue; realizing as the race progressed (as did others in the 2022 midterms) — that his stance was a loser.\n", + "As in Kansas, the power of the abortion issue is evident when compared to the presidential vote county by county. In the state’s two most populous counties, Milwaukee and Dane (home to the University of Wisconsin in Madison) Protasiewicz won big, which was to be expected. However, she also exceeded Biden’s vote in those two places — by 3.6% in Milwaukee and 6.3% in Dane. In the state’s next three most populous counties Biden lost to Trump, but in each one Protasiewicz performed better than Biden. In the third largest county in the state, Wausheka, Biden won 38.9% of the vote but Protasiewicz won 42%. In Brown County Biden won 45.6% of the vote but Protasiewicz won 52%. And in Racine County Biden won 47.2% of the vote and Protasiewicz won 49%.\n", + "\n", + "\n", + "Related Content\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " \n", + "\n", + "\n", + "\n", + "FixGov\n", + "What we learned from the Chicago mayoral results\n", + "\n", + "William A. Galston\n", + "Wednesday, April 5, 2023\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " \n", + "\n", + "\n", + "\n", + "FixGov\n", + "Do politicians get rewarded for spending money?\n", + "\n", + "Vanessa Williamson\n", + "Wednesday, March 22, 2023\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " \n", + "\n", + "\n", + "\n", + "FixGov\n", + "Can government protect women from domestic violence? Not if states do not follow up.\n", + "\n", + "Kaitlin N. Sidorsky and Wendy J. Schiller\n", + "Tuesday, March 21, 2023\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "As we saw in the 2022 midterms — when the freedom to choose is on the ballot it wins — upending prior voting patterns. The issue today is more real than it was in past races where Democrats always tried to argue its importance. Not surprising. A right withdrawn will always get more attention than a right taken for granted. While we don’t have any exit polls to confirm that abortion was foremost in voters’ minds, the explicit prominence of the issue in Protasiewicz’s campaign and Kelly’s failed attempts to change the topic are evidence that there was one big issue in this race.\n", + "In the coming years pro-choice advocates will try to put as many pro-choice referenda on the ballot as possible. In 2022, six states had referenda on the ballot and the pro-choice position won in all of them. Wisconsin’s attempt at a referenda was rejected, but the recent Supreme Court race took its place and victory there will likely accomplish the same thing. In 2024 we can expect at least ten states to have citizen-led ballot initiatives enshrining abortion rights in their state constitutions.[1]\n", + "The strength of the pro-choice position goes well beyond the debate over abortion itself. Deep in the American DNA is the belief that we should have as little government and as much liberty as possible. The law’s intrusion into the complex medical and moral issues surrounding as personal a decision as abortion strikes at the heart of American’s desires to control their own destiny. All indications are that by the end of the decade the Supreme Court’s decision to return abortion rights to states will reinstate abortion across the land.\n", + "\n", + "[1] Arizona, Arkansas, Florida, Missouri, Montana, Nebraska, North Dakota, Ohio, Oklahoma and South Dakota.\n", + "\n", + "URL: https://www.brookings.edu/blog/fixgov/\n", + "TITLE: The right to abortion will be secured before the end of the decade\n", + "\n", + "\t\t\t\tFixGov\t\n", + "BODY:\n", + "\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "URL: https://www.brookings.edu/blog/order-from-chaos/2023/04/05/when-might-us-political-support-be-unwelcome-in-taiwan/\n", + "TITLE: When might US political support be unwelcome in Taiwan?\n", + "When might US political support be unwelcome in Taiwan?\n", + "BODY:\n", + "\n", + "For a time, it looked as though House Speaker Kevin McCarthy would make a high-profile visit to Taiwan this spring. There was some suggestion that this might lead Beijing to react even more coercively than it did after the previous speaker, Nancy Pelosi, visited in August 2022. Perhaps for that reason, McCarthy will now have a meeting with Taiwanese President Tsai Ing-wen when she transits through Los Angeles, California. Depending on how McCarthy frames his support for Tsai, however, the People’s Republic of China (PRC) might still escalate its military operations around Taiwan to signal its opposition to the alleged “hollowing out” of the U.S. “One China” policy. Depending on the scale of these actions, some Taiwanese voters might again conclude that such symbolic demonstrations of support risk entrapping Taiwan in an escalating U.S.-China rivalry.\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "Alastair Iain Johnston\n", + "\n", + "\t\t\t\t\tGovernor James Albert Noe and Linda Noe Laine Professor of China in World Affairs - Harvard Fairbank Center for Chinese Studies \n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "Tsai Chia-hung\n", + "\n", + "\t\t\t\t\tProfessor - National Chengchi University \n", + "\n", + "\t\t\t\t\t2022-23 Visiting Scholar - Harvard Fairbank Center for Chinese Studies \n", + "\n", + "\n", + "\n", + "\n", + "\n", + "G\n", + "\n", + "\n", + "\n", + "George Yin\n", + "\n", + "\t\t\t\t\tDistinguished Research Fellow - National Taiwan University Center for China Studies \n", + "\n", + "\t\t\t\t\tResearch Associate - Harvard Fairbank Center for Chinese Studies \n", + "\n", + "\n", + "\n", + "\n", + "According to recent surveys we conducted in Taiwan, a majority of respondents believe that Pelosi’s visit was detrimental to Taiwan’s security. At first glance, this seems surprising. In a triangular relationship between a patron state (the United States) and its client (Taiwan) on the one hand, and a shared adversary (China) on the other, one might normally expect the client to welcome visible and credible signals of support.\n", + "However, even as its security environment appears to be deteriorating, a client might not welcome signals of support from the patron if the client considers those signals to be so provocative that they undermine its security. Typically, it is the patron that worries about entrapment by its client, while the client worries about abandonment by the patron. But our surveys suggest that a considerable portion of Taiwanese voters worry about entrapment by the United States. There are, of course, partisan differences concerning fears of entrapment. Supporters of the Kuomintang (KMT) and independents worry that the convergence of Democratic Progressive Party (DPP) and U.S. preferences toward strategic competition with China makes Taiwan less secure.\n", + "This concern about entrapment appears to have increased after Pelosi’s visit. We conducted a panel survey in Taiwan with two waves, one in September 2022 and a second in January 2023, to gauge the Taiwanese public’s reaction to Pelosi’s very public demonstration of support for Taiwan. In 2022, we asked respondents, in the wake of Pelosi’s visit and the PRC’s unprecedented military exercises around Taiwan, whether Taiwan faced a serious threat. In January 2023, we followed with a slightly different question about whether Pelosi’s travel had made Taiwan more or less secure.\n", + "In September 2022, respondents overwhelmingly believed that Pelosi’s trip and the large-scale People’s Liberation Army exercises created a serious threat to Taiwan. Somewhat surprisingly, this response was similar across the political partisan divide in Taiwan. Media reports, in both Taiwan and the West, have suggested that many Taiwanese citizens did not originally seem too bothered by China’s reactions.\n", + "After the initial shock, the majority of respondents in the January 2023 survey still believed that Pelosi’s visit made Taiwan less secure. But partisan differences were clearer in the answers to this question than they had been in September. A majority of KMT supporters and independents (as well as one-third of DPP supporters) believed that Pelosi’s visit had made Taiwan less secure. By contrast, a majority of DPP supporters felt the opposite was true.\n", + "Indeed, by January 2023, 52% of our DPP respondents had shifted to the conclusion that Taiwan was more secure in the wake of the visit. In contrast, only 21% of the independent respondents and 11% of the KMT respondents had done so.\n", + "Such a shift may have resulted from reassuring U.S. policy initiatives or confirmation bias, or both. For example, by January 2023, some DPP supporters may have been responding to the U.S.-Taiwan Initiative on 21st-Century Trade and a $12 billion military aid program. Alternatively, some DPP supporters may have perceived, or wanted to perceive, a change in U.S. policy after our first survey in September 2022 and looked for evidence for their beliefs. Based on answers to other questions we asked in the 2023 survey about the likelihood of possible gestures of U.S. support for Taiwan, those DPP respondents who shifted their perception of Taiwan’s security in a more positive direction between surveys also believed that the United States would diplomatically recognize Taiwan, would send troops to defend Taiwan if attacked by the PRC, and would conclude a trade agreement with Taiwan.\n", + "A “Folk theory” of Taiwanese Security?\n", + "In addition to asking respondents about the impact of Pelosi’s visit on Taiwan’s security, we also probed the panel respondents about whether they had a “folk theory” of security — that is, intuitions about the factors influencing Taiwan’s security based on their own biases and lived experiences. We gave respondents five common explanations for cross-strait instability and asked them whether they agreed or disagreed with each.\n", + "\n", + "Related Books\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " \n", + "\n", + "\n", + "\n", + "Upcoming\n", + "U.S.-Taiwan Relations\n", + "\n", + "\n", + "\t\t\t\t\t\tBy Ryan Hass, Bonnie Glaser, and Richard Bush \n", + "2023\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " \n", + "\n", + "\n", + "\n", + "US-China Nuclear Relations: The Impact of Strategic Triangles\n", + "\n", + "\n", + "\t\t\t\t\t\tContributions by Robert Einhorn \n", + "2021\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " \n", + "\n", + "\n", + "\n", + "China 2049\n", + "\n", + "\n", + "\t\t\t\t\t\tEdited by David Dollar, Yiping Huang, and Yang Yao \n", + "2020\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "A large portion of respondents appears to have a relatively plausible multi-causal “theory” of how Taiwan’s security is threatened. A large majority agrees that the PRC’s aggressive intentions are a source of instability. A smaller majority believes that increasing levels of support for independence in Taiwan is a source of instability. And only about 55% attribute instability to shifts in U.S. policy toward a “One China, One Taiwan policy.” On the other hand, majorities of respondents tended not to attribute instability to the neglect of defense building in Taiwan or to U.S. strategic ambiguity. Together these results suggest that many voters essentially lean toward the ideas embedded in the traditional U.S. policy of dual deterrence: Taiwan is more secure when the PRC’s aggressive intentions are countered and when the PRC is assured that U.S. policy does not encourage formal independence.\n", + "Not surprisingly there are partisan differences. DPP supporters are more likely to blame inadequate military spending as a source of instability than KMT supporters and independents. Similarly, while KMT supporters and independents do not think U.S. strategic ambiguity is a source of instability, a small majority of DPP supporters does. While all groups attribute instability to the PRC’s aggressive intentions, DPP supporters overwhelmingly do so. Interestingly, all groups also agree that greater support in Taiwan for independence is a source of instability, though a smaller majority of DPP supporters agree than others. Not surprisingly, a large majority of KMT supporters agree that the hollowing out of the U.S. “One China” policy is a source of instability, but independents and DPP supporters are relatively evenly split.\n", + "Implications\n", + "Our surveys have a couple of tentative implications for policy discussions in Washington about how to preserve Taiwan’s security.\n", + "First, our data suggests that if a substantial constituency in the client state believes such high-profile signals of support are counterproductive, this can weaken the security relationship between patron and client, making coordinated responses to the common adversary more difficult. A McCarthy-Tsai meeting, or a McCarthy visit to Taiwan, may only be prospectively reassuring to a majority of Taiwanese if they believe that the PRC response will be milder than it was after Pelosi’s visit. And if China does react less coercively after McCarthy’s symbolic actions, then it is possible that, retrospectively, at least some KMT and independent voters may conclude such actions are a useful signal of support. On the other hand, even a slightly less threatening PRC response may not be reassuring enough to KMT and independent voters, given their concerns about entrapment. Our surveys suggest that KMT supporters, and to some degree independents, do not identify culturally or politically with the United States nearly as much as DPP respondents do. Many KMT supporters and independents blame growing support for independence as a source of cross-strait instability. So, it may be unlikely that many KMT and independents will interpret a McCarthy-Tsai meeting as a useful symbol of U.S. support in the face of PRC coercion, especially if it is viewed as a partisan statement of support for the DPP government.\n", + "A second implication of our results concerns the effectiveness of deterrence. Washington’s discourse about how to deter the PRC emphasizes military tools over the synergistic effects of assuring Beijing that the United States is not encouraging or enabling formal Taiwanese independence. Proponents of dual deterrence claim that, since 1972, credible coercion and credible assurance have kept the probability of a PRC takeover of Taiwan relatively low and will likely continue to be more successful compared to alternative U.S. strategies, such as allowing and/or recognizing a de jure independent Taiwan. This may or may not be the case. There is a debate over whether dual deterrence is the best of a bad set of options for reducing the probability of conflict. But our analysis of respondents’ “folk theory” of security suggests that a considerable portion of the Taiwanese population seems to agree with the dual deterrence notion. This may be the conceptual basis for their concern about entrapment by U.S. politicians.\n", + "\n", + "\n", + "Related Content\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " \n", + "\n", + "\n", + "\n", + "Order from Chaos\n", + "Australia’s caution on Taiwan may not last\n", + "\n", + "Richard McGregor\n", + "Wednesday, March 29, 2023\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " \n", + "\n", + "\n", + "\n", + "Order from Chaos\n", + "Taiwan is feeling the pressure from Russian and Chinese autocracy\n", + "\n", + "Pavel K. Baev\n", + "Thursday, March 16, 2023\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " \n", + "\n", + "\n", + "\n", + "Order from Chaos\n", + "The Philippines’ evolving view on Taiwan: From passivity to active involvement\n", + "\n", + "Renato Cruz De Castro\n", + "Thursday, March 9, 2023\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "Methodology\n", + "The 2022 household telephone survey was conducted between September 22 and 29, 2022, by the Election Study Center, National Chengchi University. We randomly drew samples according to the area codes of telephone books. Only respondents who were over 20 years old and registered in Taiwan were eligible for this survey. Data was weighted by gender, age, education, and residence area based on the latest census data. The sample size was 1,127. The margin of error with 95% confidence interval is 2.92%. The 2023 panel study was conducted between January 5 and 9, 2023. We successfully re-interviewed 576 respondents or about 51% of the 2022 sample. The data was also weighted by gender, age, education, and residence area. The main questions we analyze are: “In August this year, U.S. Congress Speaker Nancy Pelosi visited Taiwan, and China immediately held large-scale military exercises around Taiwan. Do you think this is a serious threat to Taiwan’s security?” (September 2022 survey); and “Do you think Pelosi’s visit to Taiwan made Taiwan more or less secure?” (January 2023 survey).\n", + "\n", + "URL: https://www.brookings.edu/blog/order-from-chaos/\n", + "TITLE: When might US political support be unwelcome in Taiwan?\n", + "\n", + "\t\t\t\tOrder from Chaos\t\n", + "BODY:\n", + "\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "URL: https://www.brookings.edu/research/sdg-implementation-for-fragile-countries-needs-more-risk-taking/\n", + "TITLE: SDG implementation for fragile countries needs more risk-taking\n", + "SDG implementation for fragile countries needs more risk-taking\n", + "BODY:\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "Naheed Sarabi\n", + "\n", + "\t\t\t\t\tVisiting Fellow - Global Economy and Development, Center for Sustainable Development \n", + "\n", + " Twitter\n", + "Sarabinaheed\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "In 2023, concurring economic, social, and environmental crises are disproportionately affecting fragile states, creating a grim outlook for achieving the SDGs by 2030. The Global Peace Index Report for 2022 indicates deteriorating global peacefulness since 2014, with a growing gap between the most peaceful and least peaceful countries. SDG progress has been either stagnating or declining in more than half of the fragile states. Poverty and insecurity are on the rise in conflict-affected and fragile countries, where 20 percent of the global share of those in extreme poverty live; this is expected to rise to more than 50 percent by 2023. In addition, fragile countries are not on track with SDGs related to hunger, good health, and gender.  \n", + "During the second half of the SDG era, the international community must take more risks than it does in traditional development processes if conflict-affected and fragile countries are to make more SDG gains.  \n", + "A traditional economic development agenda in developing countries focuses on interdependent issues like growth, governance, poverty reduction, better services, and infrastructure. However, development is reversible and fragile in the occurrence of shocks. Resilience depends largely on the strength of the institutions. The g7+ group of conflict-affected countries advocated strongly, and successfully, for the New Deal principles, established in 2011, to be incorporated into the 2030 Agenda and the SDGs: peace-building and state-building goals (PSGs), engagement to support country-owned and -led pathways out of fragility, and commitments to results.  \n", + "What does constructive risk-taking look like in fragile countries?  Three steps can help drive better progress: \n", + "\n", + "Strengthen emphasis on SDG 16. Peace, reconciliation, and political stability—foundational elements of SDG 16—must be given stronger political weight in both international and country-level SDG discussions. In my own conversations with the g7+ secretariat, they insist that without a stronger commitment to peace, achieving SDG targets will be a challenge. Multi-year development planning needs farsighted and stable political environments that provide a smooth transition from quick response to long-term development efforts. To level the foundations, the international community must put more emphasis on both peace-building and peacemaking efforts. Addressing horizontal inequalities and keeping closer watch on drivers of internal conflict and community-level peace-building are essentials for the way forward.  \n", + "Build ownership and institutions in a more measurable manner. Donors need to channel more funds through government systems to build trust and ownership in fragile countries. The SDGs represent an enormous undertaking for fragile countries with low spending capacities. Building institutions and capacities takes time. Where the risk levels for corruption and misuse are extremely high, there is a need for joint program implementation between the government and donors. Multi-donor trust funds that channel money and decisionmaking power through government systems can be good models.  \n", + "Strengthen the basics for data, planning, financing, and expenditure. There should be an expedited effort to coordinate data systems, integrate SDGs into the national planning and budgeting process, and link plans to government and donor expenditure systems and reports. Lack of access to data is a pressing problem in fragile and conflict-affected countries. Governments are constrained by data deprivation due to the flow of funds outside government systems that in turn shape development plans. SDG targets should be translated into realistic multi-year projects through an inclusive approach. Experts in development cooperation need to undertake simple exercises to align SDGs into national data collection, planning, and budgeting cycles.  \n", + "\n", + "SDG implementation in fragile countries needs much more partnership and trust between the development partners and host countries. While the international community must harbor more risk in implementing the above actions, host countries must show the commitment to execute and take ownership.  \n", + "Download the full essay.\n", + "\n", + "URL: https://www.brookings.edu/research/a-pact-to-sustain-digital-public-infrastructure-for-the-sdgs/\n", + "TITLE: A PACT to sustain digital public infrastructure for the SDGs\n", + "A PACT to sustain digital public infrastructure for the SDGs\n", + "BODY:\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "Priya Vora\n", + "\n", + "\t\t\t\t\tNonresident Fellow - Global Economy and Development, Center for Sustainable Development \n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "George Ingram\n", + "\n", + "\t\t\t\t\tSenior Fellow - Global Economy and Development, Center for Sustainable Development \n", + "\n", + " Twitter\n", + "@GMIngramIV\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "Digital technologies can accelerate achievement of the SDGs but only if governments act now to make trusted digital infrastructure universally available. For years digital capabilities have been described as enablers of progress; they are a key reason seven indicators across four SDGs relate to digital capabilities. But here at the halfway mark, meeting the SDGs remains elusive. Digital must again be put forward as an important means to fast-track progress. \n", + "With 2030 in sight, governments must find pathways to creating foundational digital infrastructure that can be repurposed for a variety of uses—therefore obviating the need to “reinvent the wheel” and massively improve the return on initial investment. \n", + "There is reason to be excited about foundational infrastructure designed for multiple uses. India is efficiently extending government services to over 93 percent of its population enrolled in the Aadhaar identity platform. That same tool is used for banks to extend financial services to millions of unbanked families. In the midst of war, the government of Ukraine is using its e-government portal to ensure displaced citizens can access proof of identity, health care records, and much more. The same underlying system is the basis for government agencies to share data to better understand the needs of citizens and identify how best to service those needs. However, the picture of digital infrastructure is not always rosy. These powerful systems are accelerators of intent, whether good or bad. Since the consensus on the SDGs was secured, the world has witnessed a range of harms resulting from digital technologies—in the form of exclusion; data misuse and abuse; and monopolistic tendencies that squash competitive markets. \n", + "The goal therefore is to expand digital infrastructure but ensure the public (state) response is strong enough to maximize participation, agency, choice, and trust (PACT). When digital assets are either publicly owned, publicly regulated, or publicly designed through open protocols–digital infrastructure can be realized for the public good. In other words, digital public infrastructure (DPI) is secured.  \n", + "While the return on investment for foundational digital infrastructure is high, foreign assistance for DPI remains inadequate. The bulk of donor digital investments are in one-off siloed solutions designed for a specific program or activity, undermining the hope of infrastructural investments that can serve many purposes. Moreover, investment in public sector institutions to regulate and oversee the digital economy is woefully low in most countries.  \n", + "This must change. Donors need to jointly commit to invest over the long term in DPI solutions—and the necessary institutional safeguards around them—that will serve nations and maximize digital participation, agency, choice, and trust in the quest to achieve the SDGs.     \n", + "This opportunity is not out of reach. As an example, India spent just over $1 per person to deploy its digital identity system. The figure could be lower for others using open code, which allows low-resource states to leverage the talents of coders around the world who contribute to open-source digital infrastructure solutions. More importantly, because DPI is relevant to most SDG goals, meeting the resource gap may not require new funds. Instead, through a strategic approach to digital public infrastructure and the institutional safeguards, funding intended for siloed technology investments could be redirected to underpin widely available digital infrastructure assets for all. \n", + "Download the full essay.\n", + " \n", + "\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "URL: https://www.brookings.edu/research/scaling-private-sector-engagement-in-the-sdgs/\n", + "TITLE: Scaling private sector engagement in the SDGs\n", + "Scaling private sector engagement in the SDGs\n", + "BODY:\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "Jane Nelson\n", + "\n", + "\t\t\t\t\tNonresident Senior Fellow - Global Economy and Development, Center for Sustainable Development \n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "George Ingram\n", + "\n", + "\t\t\t\t\tSenior Fellow - Global Economy and Development, Center for Sustainable Development \n", + "\n", + " Twitter\n", + "@GMIngramIV\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "Private sector investment and innovation are essential to achieving the Sustainable Development Goals (SDGs). A vanguard of companies is making public commitments and taking action. Yet, business engagement and impact are far from becoming mainstream. A concerted effort is required to scale the quantity, quality, and accountability of private sector activities that could have a measurable impact on supporting the SDGs.  \n", + "In the 12th U.N. Global Compact-Accenture CEO Study, released in 2023, 98 percent of more than 2,600 chief executives across 18 industries in 128 countries agreed that sustainability is now core to their role. While 87 percent warned that current levels of geopolitical and economic disruption are limiting the delivery of the SDGs, 51 percent believe they could play a critical role to help achieve the goals with increased commitment and action.  \n", + "In many cases, however, implementation is lagging behind public pledges and ambition. KPMG’s 2022 Survey of Sustainability Reporting found that 74 percent of the world’s largest 250 companies by revenue are reporting on the SDGs. Yet, only 10 percent are reporting on all 17 Goals, and only 6 percent are reporting on their negative as well as positive impacts. Another study by the Global Reporting Initiative and Support the Goals found that 83 percent of 206 companies surveyed in 2021 said they support the SDGs, but only 40 percent set measurable commitments and only 20 percent included evidence to assess their impacts.    \n", + "What needs to change? Three areas of collective action will be essential. \n", + "\n", + " Standardize and require measures of corporate accountability: The time has come to put public disclosure of a company’s material, social, and environmental risks and performance on a par with corporate financial reporting.\n", + "Among voluntary reporting initiatives, the International Sustainability Standards Board, created in 2021, is on track to issue its first two standards on General Requirements and Climate by mid-2023. Last year, the Global Reporting Initiative updated its guidance for companies to report on the SDGs. In 2022, the Task Force for Climate-related Financial Disclosure reported that more than 3,800 organizations across 99 countries have become supporters of its recommendations, including over 1,500 financial institutions responsible for assets of $217 trillion.\n", + "But beyond such voluntary efforts, it is time to make this reporting mandatory, independently audited, or assured in accordance with international auditing and assurance standards, and based on comparable, relevant, and reliable metrics. A variety of non-financial reporting requirements and directives are being spearheaded by the European Union, the U.S. Securities and Exchange Commission, and other government entities. Such policy efforts need to find efficient paths to implementation, to scale the experience and lessons of voluntary reporting by some companies to mandatory reporting for all companies.\n", + "\n", + "\n", + " Leverage investment in innovation accelerators and collaborative platforms: Companies should invest more strategically in research, development, and innovation partnerships. Individual company investments in new technologies, products, services, and business models to deliver specific SDGs are necessary but not sufficient. There is untapped potential to leverage different combinations of public, private, and philanthropic finance and undertake joint efforts to accelerate or scale progress in crucial sectors and systems. Recent alliances such as the Breakthrough Energy Network, the First Movers Coalition, the Energy Transition Accelerator, and the Zero Hunger Private Sector Pledge point the way, alongside more established platforms such as GAVI, the Vaccine Alliance. \n", + "\n", + "\n", + " Advocate for enabling policies through business coalitions: Corporations must speak out more ambitiously and transparently on the need for smart public policies and regulations. In the absence of policy reforms and market incentives, business action for the SDGs will never scale beyond the leading companies. At a global level, organizations such as the World Business Council for Sustainable Development and We Mean Business Coalition, alongside some established industry groups, are increasing their public advocacy. More needs to be done at the national level. The Keidanren in Japan, National Business Initiative in South Africa, and Confederation of Danish Industry are three examples of business associations advocating for government leadership on the SDGs.\n", + "\n", + "In summary, the first seven years of the 2030 Agenda have seen growing business engagement, but not at the speed and scale that are necessary—or possible. The second half of the SDG era needs to capture and catapult private-sector contributions to the 2030 goals.  \n", + "Download the full essay. \n", + "\n", + "URL: https://www.brookings.edu/research/paradigm-shift-creating-more-just-societies-with-the-sdgs-human-rights-and-innovations-in-higher-education/\n", + "TITLE: Paradigm shift: Creating more just societies with the SDGs, human rights, and innovations in higher education\n", + "Paradigm shift: Creating more just societies with the SDGs, human rights, and innovations in higher education\n", + "BODY:\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "Sarah E. Mendelson\n", + "\n", + "\t\t\t\t\tNonresident Senior Fellow - Global Economy and Development, Center for Sustainable Development \n", + "\n", + "\t\t\t\t\tDistinguished Service Professor of Public Policy and Head of Heinz College in Washington, D.C. - Carnegie Mellon University \n", + "\n", + " Twitter\n", + "SarahMendelson\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "A large share of the human rights community does not yet embrace—let alone know about—the Sustainable Development Goals (SDGs). Ambivalence is driven in part by the voluntary nature of the SDG agenda, as opposed to one shaped by legal requirements. At the same time, however, a downbeat cottage industry has developed around pessimistic themes such as the “end times” of human rights and a failed, last “utopia.” The pessimism stems from what appears to be overreliance on these same legal remedies that in so many cases fail to stem impunity or address inequality.  \n", + "A new approach requires a paradigm shift in the frameworks that currently dominate human rights.   \n", + "Innovations in higher education offer a pathway to advance the closely aligned endeavors of creating peaceful, just, and inclusive communities. Universities have a critical role to play in generating a refreshed approach to human rights that includes SDG literacy, helping to grow what I call Cohort 2030.  \n", + "What would such a paradigm shift look like?  \n", + "\n", + "First, the SDG watchwords “Leave No One Behind” (LNOB) should be embedded in human rights education. LNOB is fundamentally a call for human rights to be respected universally; the SDGs apply everywhere to everyone. The SDGs help broaden attention beyond political rights and elevate socioeconomic ones, which during the Cold War, became enmeshed in East-West power struggles and were subsequently downplayed, at least in the United States. The pandemic has laid bare the urgent need to address social justice gaps and socioeconomic inequities in the Global North as well as in the Global South. In fact, these issues are bound up with tackling much of what imperils democracy in the United States today.      \n", + "Second, human rights education should focus on SDG localization and translation in specific contexts (sometimes referred to as “vernacularization” in the rights literature). The general lack of localization has been diagnosed by human rights scholars as a significant barrier to the realization of rights. When viewed as global and abstract rather than local and experienced by people, the disconnect contributes to both the need to “rescue” the SDGs and the end-times-for-human-rights zeitgeist. Localizing the SDGs, as has occurred in a number of cities around the world, has resulted in innovation and practical applications that directly and positively impact communities. \n", + "Third, related to both LNOB and localization, human rights and sustainable development research and coursework should increasingly incorporate and generate people-centered data ecosystems, including community data portals that use open-source software and are derived with the input of local community members. During the 2021 flagship 17 Rooms process, co-hosted by the Brookings Center for Sustainable Development and The Rockefeller Foundation, this was a distinct recommendation from rights experts focused on advancing SDG 16. Disaggregated data that reveal local communities’ social justice gaps are necessary (along with policies and funds) to enable more just transitions post-pandemic—which to date, based on research in several North American cities, has not occurred. In the United States, the White House executive order on equity and data that recently went into effect could be a game changer helping generate such ecosystems.  \n", + "\n", + "These three steps would link the Universal Declaration of Human Rights, now in its 75th year, with the SDGs, in addition to the numerous subsequent treaties and laws which students still need to learn.  The idea of combining the SDG and human rights agendas has already been highlighted, for example, by the United Nations in its Fourth Phase (2020-2024) of the World Programme for Human Rights, albeit with scant specificity.  It would also be fully consistent with a recent study by the U.S. National Academies of Sciences, Engineering, and Medicine on higher education and the SDGs, which recommends “field building” regarding sustainable development.1 Best of all, it would drive demand for progress not only on SDG 16 (justice) but on the other people-focused SDGs too. The second half of the SDG era needs to create a sustainable future in which rights are realized for all.   \n", + "Download the full essay.\n", + "\n", + "URL: https://www.brookings.edu/research/how-to-make-mdbs-fit-for-purpose-to-support-sdg-implementation/\n", + "TITLE: How to make MDBs fit for purpose to support SDG implementation\n", + "How to make MDBs fit for purpose to support SDG implementation\n", + "BODY:\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "Amar Bhattacharya\n", + "\n", + "\t\t\t\t\tSenior Fellow - Global Economy and Development, Center for Sustainable Development \n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "Homi Kharas\n", + "\n", + "\t\t\t\t\tSenior Fellow - Global Economy and Development, Center for Sustainable Development \n", + "\n", + "\n", + "\n", + "\n", + "“Through collective and individual actions, initiatives and additional steps to enhance extensive work already underway in our organizations, the MDBs, and the IMF will help countries, partners, investors, and the global community move from billions to trillions as we take up the challenge of achieving the SDGs.” Upon the adoption of the SDGs, the World Bank recognized that the transformative vision embodied in the SDGs would require a vastly higher level of resources to be successfully implemented. This never happened. MDB net flows averaged $25 billion in 2013-15 (in constant 2012 dollars) and $41 billion in 2021, an increase driven by the cyclical response to the COVID-19 pandemic, rather than by the structural needs for building the SDG economy. \n", + "Shareholders are again asking the MDBs to up their game. The Italian G-20 tasked an expert committee to review the capital adequacy frameworks of the banks. U.S. Treasury Secretary Janet Yellen and other shareholders called for an evolution roadmap for the World Bank. The Indian G-20 is setting up an expert group to advise on MDB reform. \n", + "Three elements of MDB reform would significantly enlarge their contributions to SDG achievement: \n", + "\n", + "The MDBs should embrace and drive the new growth story for the 21st century, one based on innovation and investment in green technologies, and on adaptation and resilience to accelerating climate change.  A number of new technologies in electricity production, light road transport, fugitive emissions, building heating, and food and agriculture are reaching a point within the next five years that would make them price-competitive on a mass-market scale. The potential for cheap power can accelerate growth and make access to modern electricity easier for the 775 million people who currently lack it. It avoids the negative local effects of fossil-fuel-sourced pollution on health and education. Yet there are holdouts among MDBs and their clients that view the green transition as potentially holding back the reduction of poverty and social progress. The MDBs should provide the empirical evidence in support of the new growth strategy that is inclusive, sustainable, and resilient, and draws lessons on how to manage the transition.\n", + "Achieving a green transformation will require investments at scale. Recent granular estimates suggest that emerging markets and developing countries other than China must increase spending on climate investments fourfold by 2030 to $2.4 trillion.  MDBs must play a much more purposive and proactive role in helping countries identify, enable, and foster green investments, moving beyond a project-by-project approach to support system change. Country-led and country-owned coordination mechanisms around priority objectives have to become the norm for scaling up investments and mobilizing the necessary support. For this MDBs have to be able to work much more effectively as a system and with the private sector.  \n", + "MDBs also have a central role to play in securing the scale and affordability of finance that will be needed.  Private capital can meet the largest share of the $1 trillion in external finance needed by 2030. In the current context of debt overhangs and rising interest rates on capital markets, however, little private capital is flowing to developing countries. MDBs can create a new highway for private finance through partnering with and reducing risks for the private sector. They can use guarantees and insurance products to take risks that the private sector cannot mitigate, such as policy risk, and reduce the cost of capital through blended finance. MDBs must also increase their own direct finance for the large complementary public investments in both the physical and social infrastructure required and where private capital may not be forthcoming. MDBs are unique in that they can scale up financing at affordable terms without relying heavily on contributions from the budgets of major shareholders, although for the poorest shareholders, it will be important to continue to provide them with concessional aid.\n", + "\n", + "In taking these steps, MDBs must take to heart the universal character of the SDGs and the spillover benefits that come from coordinated action. They must serve all clients, low-income and middle-income alike. They must pursue sustainable development as an integrated and interwoven package of economic growth, human capital development, gender equality, urbanization, jobs, nature conservation, and biodiversity preservation. Fit for purpose MDBs would provide an accelerant for the second half of the SDG period and for keeping global climate targets in reach. \n", + "Download the full essay.\n", + "\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "URL: https://www.brookings.edu/research/a-purpose-driven-fund-to-end-extreme-poverty-by-2030/\n", + "TITLE: A purpose-driven fund to end extreme poverty by 2030\n", + "A purpose-driven fund to end extreme poverty by 2030\n", + "BODY:\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "Homi Kharas\n", + "\n", + "\t\t\t\t\tSenior Fellow - Global Economy and Development, Center for Sustainable Development \n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "John W. McArthur\n", + "\n", + "\t\t\t\t\tDirector - Center for Sustainable Development \n", + "\n", + "\t\t\t\t\tSenior Fellow - Global Economy and Development \n", + "\n", + " Twitter\n", + "@mcarthur\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "Ending extreme poverty by 2030 is first among equals within the Sustainable Development Goals. When SDG target 1.1 was formally adopted in 2015, the number of extremely poor people was thought to be around 730 million globally and was falling by roughly 65 million a year. Continuing that trend would have cut poverty rates to zero by 2030. But progress has slowed instead. Recent projections suggest 570 million people might still be poor in 2030, far short of elimination. At the SDG midpoint, rebooting efforts to ending extreme poverty could re-energize the world like nothing else.  \n", + "First, what went wrong? Much early optimism rested on the World Bank’s prominent ownership of the poverty reduction target. In 2013, the organization adopted the end of extreme poverty as one of its two headline goals, alongside reducing inequality. It promised to operationalize the twin goals through tailored country strategies and transformational forms of engagement. Further, in the 2015 Addis Ababa Action Agenda on Financing and Development, all U.N. member states agreed to a new social compact to end poverty, with fiscally sustainable and nationally appropriate income floors. They vowed to explore funding modalities for such systems.  \n", + "Unfortunately, these promises lacked follow-through. The shortcomings culminated last October, when the World Bank admitted premature defeat on its own goal, with a statement that “the global goal of ending extreme poverty by 2030 would not be achieved.”  \n", + "The bumpiness of the path to ending extreme poverty should motivate renewal, not resignation. Fortunately, improvements in technology, policy, and evidence over the past decade make the goal more solvable today than it was in 2015, not less.  \n", + "As particular inspiration during the strains of COVID-19, widespread country breakthroughs in social protection highlight frontier opportunities for direct income support through cash transfers. Evidence of these and other cash transfer measures is reassuringly positive: A strong reduction in poverty rates and spillover benefits into other SDG areas, mostly education, health, and nutrition. Evidence of the practicalities of implementation has also accumulated. For instance, Togo, a low-income country, was able to build its Novissi digital platform to reach almost 1 million beneficiaries within a year, distributing around $20/month (30 percent of the monthly minimum wage). During the first six months, nearly two-thirds of the beneficiaries were women.  \n", + "The bumpiness of the path to ending extreme poverty should motivate renewal, not resignation. \n", + "The digital and mobile technology revolutions have transformed the speed and costs of hyper-targeted transfers to poor people. Transaction costs are now down to single-digit levels as a share of funds for beneficiaries. Dramatic advances in targeting methods, thanks to machine learning and more granular poverty data, have radically improved efficiency and efficacy. \n", + "For sure, cash transfers are a policy tool, not a panacea. They require a long-term strategy, and a majority of extremely poor people still live in rural areas, where investments in agriculture, infrastructure, and human capital are all key to long-term economic growth. Each country should be empowered with vigorous debate on how to sequence and scale such investments. But cash transfers can serve as a best alternative to a negotiated agreement in these debates. Whenever a better alternative to ending extreme poverty by 2030 cannot be found, cash transfers offer a powerful device for getting the job done—as a ladder out of poverty, not a permanent dependency.  \n", + "Embedding this logic into a purpose-driven global funding instrument could transform progress on SDG 1. One option would be to encourage the International Development Association (IDA) to orient its operations around the explicit purpose of ending extreme poverty, proactively supporting targeted cash transfer systems in every country that wishes to use them. With an incoming new World Bank president and a request from shareholders to follow through on its existing headline goal, IDA would be ripe for innovation. An alternative would be to build a new purpose-driven multilateral fund to end extreme poverty, with a technical focus on sustained cash transfer systems for extremely poor people. Such a targeted instrument would be consistent with, while much more specific than, calls for a global fund for social protection.  \n", + "The implied financing needs for such a funding instrument are substantial but realistic. At about $100 billion, the global extreme poverty gap is equivalent to only 0.1 percent of global GDP, its lowest relative size ever, and slightly more than half of total official development assistance. An initial funding modality could start where the needs are greatest, with focused support to the five countries on course to account for more than half the world’s poor in 2030: Nigeria, the Democratic Republic of Congo, Madagascar, Tanzania, and Angola.  \n", + "The time is ripe for a purpose-driven fund to end extreme poverty. The targeting can be surgical, costs are modest, and implementation is now feasible. Doing so to achieve SDG 1 within the coming seven years would mark a historic global achievement and help renew momentum for the SDGs overall.\n", + "Download the full essay.\n", + "\n" + ] + } + ], + "source": [ + "import re\n", + "\n", + "\n", + "class Crawler:\n", + " def __init__(self, site):\n", + " self.site = site\n", + " self.visited = {}\n", + "\n", + " def getPage(url):\n", + " try:\n", + " html = urlopen(url)\n", + " except Exception as e:\n", + " print(e)\n", + " return None\n", + " return BeautifulSoup(html, 'html.parser')\n", + "\n", + " def safeGet(bs, selector):\n", + " selectedElems = bs.select(selector)\n", + " if selectedElems is not None and len(selectedElems) > 0:\n", + " return '\\n'.join([elem.get_text() for elem in selectedElems])\n", + " return ''\n", + "\n", + " def getContent(self, url):\n", + " \"\"\"\n", + " Extract content from a given page URL\n", + " \"\"\"\n", + " bs = Crawler.getPage(url)\n", + " if bs is not None:\n", + " title = Crawler.safeGet(bs, self.site.titleTag)\n", + " body = Crawler.safeGet(bs, self.site.bodyTag)\n", + " return Content(url, title, body)\n", + " return Content(url, '', '')\n", + "\n", + " def crawl(self):\n", + " \"\"\"\n", + " Get pages from website home page\n", + " \"\"\"\n", + " bs = Crawler.getPage(self.site.url)\n", + " targetPages = bs.findAll('a', href=re.compile(self.site.targetPattern))\n", + " for targetPage in targetPages:\n", + " url = targetPage.attrs['href']\n", + " url = url if self.site.absoluteUrl else f'{self.site.url}{targetPage}'\n", + " if url not in self.visited:\n", + " self.visited[url] = self.getContent(url)\n", + " self.visited[url].print()\n", + "\n", + "\n", + "brookings = Website('Reuters', 'https://brookings.edu', '\\/(research|blog)\\/', True, 'h1', 'div.post-body')\n", + "crawler = Crawler(brookings)\n", + "crawler.crawl()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Crawling multiple page types" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "class Website:\n", + " \"\"\"Common base class for all articles/pages\"\"\"\n", + "\n", + " def __init__(self, name, url, titleTag, bodyTag):\n", + " self.name = name\n", + " self.url = url\n", + " self.titleTag = titleTag\n", + " self.bodyTag = bodyTag\n", + " " + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "class Product(Website):\n", + " \"\"\"Contains information for scraping a product page\"\"\"\n", + "\n", + " def __init__(self, name, url, titleTag, productNumber, price):\n", + " Website.__init__(self, name, url, TitleTag)\n", + " self.productNumberTag = productNumberTag\n", + " self.priceTag = priceTag\n", + "\n", + "class Article(Website):\n", + " \"\"\"Contains information for scraping an article page\"\"\"\n", + "\n", + " def __init__(self, name, url, titleTag, bodyTag, dateTag):\n", + " Website.__init__(self, name, url, titleTag)\n", + " self.bodyTag = bodyTag\n", + " self.dateTag = dateTag" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.9.12" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/Chapter08-CleaningYourDirtyData.ipynb b/Chapter08-CleaningYourDirtyData.ipynb deleted file mode 100644 index 05d9944..0000000 --- a/Chapter08-CleaningYourDirtyData.ipynb +++ /dev/null @@ -1,206 +0,0 @@ -{ - "cells": [ - { - "cell_type": "code", - "execution_count": 11, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "[['\\nPython\\n\\n\\n\\n\\nParadigm\\nObject-oriented,', 'imperative,'], ['imperative,', 'functional,'], ['functional,', 'procedural,'], ['procedural,', 'reflective\\n\\n\\nDesigned\\xa0by\\nGuido'], ['reflective\\n\\n\\nDesigned\\xa0by\\nGuido', 'van'], ['van', 'Rossum\\n\\n\\nDeveloper\\nPython'], ['Rossum\\n\\n\\nDeveloper\\nPython', 'Software'], ['Software', 'Foundation\\n\\n\\nFirst\\xa0appeared\\n20\\xa0February'], ['Foundation\\n\\n\\nFirst\\xa0appeared\\n20\\xa0February', '1991;'], ['1991;', '26'], ['26', 'years'], ['years', 'ago\\xa0(1991-02-20)[1]\\n\\n\\n\\n\\n\\nStable'], ['ago\\xa0(1991-02-20)[1]\\n\\n\\n\\n\\n\\nStable', 'release\\n\\n3.6.4'], ['release\\n\\n3.6.4', '/'], ['/', '19\\xa0December'], ['19\\xa0December', '2017;'], ['2017;', '18'], ['18', 'days'], ['days', 'ago\\xa0(2017-12-19)[2]\\n2.7.14'], ['ago\\xa0(2017-12-19)[2]\\n2.7.14', '/'], ['/', '16\\xa0September'], ['16\\xa0September', '2017;'], ['2017;', '3'], ['3', 'months'], ['months', 'ago\\xa0(2017-09-16)[3]\\n\\n\\n\\n\\n\\n\\nTyping'], ['ago\\xa0(2017-09-16)[3]\\n\\n\\n\\n\\n\\n\\nTyping', 'discipline\\nDuck,'], ['discipline\\nDuck,', 'dynamic,'], ['dynamic,', 'strong\\n\\n\\nLicense\\nPython'], ['strong\\n\\n\\nLicense\\nPython', 'Software'], ['Software', 'Foundation'], ['Foundation', 'License\\n\\n\\nFilename'], ['License\\n\\n\\nFilename', 'extensions\\n.py,'], ['extensions\\n.py,', '.pyc,'], ['.pyc,', '.pyd,'], ['.pyd,', '.pyo'], ['.pyo', '(prior'], ['(prior', 'to'], ['to', '3.5),[4]'], ['3.5),[4]', '.pyw,'], ['.pyw,', '.pyz'], ['.pyz', '(since'], ['(since', '3.5)[5]\\n\\n\\nWebsite\\npython.org\\n\\n\\nMajor'], ['3.5)[5]\\n\\n\\nWebsite\\npython.org\\n\\n\\nMajor', 'implementations\\n\\n\\nCPython,'], ['implementations\\n\\n\\nCPython,', 'IronPython,'], ['IronPython,', 'Jython,'], ['Jython,', 'MicroPython,'], ['MicroPython,', 'Numba,'], ['Numba,', 'PyPy,'], ['PyPy,', 'Stackless'], ['Stackless', 'Python\\n\\n\\nDialects\\n\\n\\nCython,'], ['Python\\n\\n\\nDialects\\n\\n\\nCython,', 'RPython\\n\\n\\nInfluenced'], ['RPython\\n\\n\\nInfluenced', 'by\\n\\n\\nABC,[6]'], ['by\\n\\n\\nABC,[6]', 'ALGOL'], ['ALGOL', '68,[7]'], ['68,[7]', 'C,[8]'], ['C,[8]', 'C++,[9]'], ['C++,[9]', 'CLU,[10]'], ['CLU,[10]', 'Dylan,[11]'], ['Dylan,[11]', 'Haskell,[12]'], ['Haskell,[12]', 'Icon,[13]'], ['Icon,[13]', 'Java,[14]'], ['Java,[14]', 'Lisp,[15]'], ['Lisp,[15]', 'Modula-3,[9]'], ['Modula-3,[9]', 'Perl\\n\\n\\nInfluenced\\n\\n\\nBoo,'], ['Perl\\n\\n\\nInfluenced\\n\\n\\nBoo,', 'Cobra,'], ['Cobra,', 'Coconut,[16]'], ['Coconut,[16]', 'CoffeeScript,[17]'], ['CoffeeScript,[17]', 'D,'], ['D,', 'F#,'], ['F#,', 'Falcon,'], ['Falcon,', 'Genie,[18]'], ['Genie,[18]', 'Go,'], ['Go,', 'Groovy,'], ['Groovy,', 'JavaScript,[19][20]'], ['JavaScript,[19][20]', 'Julia,[21]'], ['Julia,[21]', 'Nim,'], ['Nim,', 'Ring[22],'], ['Ring[22],', 'Ruby,[23]'], ['Ruby,[23]', 'Swift[24]\\n\\n\\n\\n\\n'], ['Swift[24]\\n\\n\\n\\n\\n', 'Python'], ['Python', 'Programming'], ['Programming', 'at'], ['at', 'Wikibooks\\n\\n\\n\\n\\nPython'], ['Wikibooks\\n\\n\\n\\n\\nPython', 'is'], ['is', 'an'], ['an', 'interpreted'], ['interpreted', 'high-level'], ['high-level', 'programming'], ['programming', 'language'], ['language', 'for'], ['for', 'general-purpose'], ['general-purpose', 'programming.'], ['programming.', 'Created'], ['Created', 'by'], ['by', 'Guido'], ['Guido', 'van'], ['van', 'Rossum'], ['Rossum', 'and'], ['and', 'first'], ['first', 'released'], ['released', 'in'], ['in', '1991,'], ['1991,', 'Python'], ['Python', 'has'], ['has', 'a'], ['a', 'design'], ['design', 'philosophy'], ['philosophy', 'that'], ['that', 'emphasizes'], ['emphasizes', 'code'], ['code', 'readability,'], ['readability,', 'and'], ['and', 'a'], ['a', 'syntax'], ['syntax', 'that'], ['that', 'allows'], ['allows', 'programmers'], ['programmers', 'to'], ['to', 'express'], ['express', 'concepts'], ['concepts', 'in'], ['in', 'fewer'], ['fewer', 'lines'], ['lines', 'of'], ['of', 'code,[25][26]'], ['code,[25][26]', 'notably'], ['notably', 'using'], ['using', 'significant'], ['significant', 'whitespace.'], ['whitespace.', 'It'], ['It', 'provides'], ['provides', 'constructs'], ['constructs', 'that'], ['that', 'enable'], ['enable', 'clear'], ['clear', 'programming'], ['programming', 'on'], ['on', 'both'], ['both', 'small'], ['small', 'and'], ['and', 'large'], ['large', 'scales.[27]\\nPython'], ['scales.[27]\\nPython', 'features'], ['features', 'a'], ['a', 'dynamic'], ['dynamic', 'type'], ['type', 'system'], ['system', 'and'], ['and', 'automatic'], ['automatic', 'memory'], ['memory', 'management.'], ['management.', 'It'], ['It', 'supports'], ['supports', 'multiple'], ['multiple', 'programming'], ['programming', 'paradigms,'], ['paradigms,', 'including'], ['including', 'object-oriented,'], ['object-oriented,', 'imperative,'], ['imperative,', 'functional'], ['functional', 'and'], ['and', 'procedural,'], ['procedural,', 'and'], ['and', 'has'], ['has', 'a'], ['a', 'large'], ['large', 'and'], ['and', 'comprehensive'], ['comprehensive', 'standard'], ['standard', 'library.[28]\\nPython'], ['library.[28]\\nPython', 'interpreters'], ['interpreters', 'are'], ['are', 'available'], ['available', 'for'], ['for', 'many'], ['many', 'operating'], ['operating', 'systems.'], ['systems.', 'CPython,'], ['CPython,', 'the'], ['the', 'reference'], ['reference', 'implementation'], ['implementation', 'of'], ['of', 'Python,'], ['Python,', 'is'], ['is', 'open'], ['open', 'source'], ['source', 'software[29]'], ['software[29]', 'and'], ['and', 'has'], ['has', 'a'], ['a', 'community-based'], ['community-based', 'development'], ['development', 'model,'], ['model,', 'as'], ['as', 'do'], ['do', 'nearly'], ['nearly', 'all'], ['all', 'of'], ['of', 'its'], ['its', 'variant'], ['variant', 'implementations.'], ['implementations.', 'CPython'], ['CPython', 'is'], ['is', 'managed'], ['managed', 'by'], ['by', 'the'], ['the', 'non-profit'], ['non-profit', 'Python'], ['Python', 'Software'], ['Software', 'Foundation.\\n\\n\\n\\nContents\\n\\n\\n1'], ['Foundation.\\n\\n\\n\\nContents\\n\\n\\n1', 'History\\n2'], ['History\\n2', 'Features'], ['Features', 'and'], ['and', 'philosophy\\n3'], ['philosophy\\n3', 'Syntax'], ['Syntax', 'and'], ['and', 'semantics\\n\\n3.1'], ['semantics\\n\\n3.1', 'Indentation\\n3.2'], ['Indentation\\n3.2', 'Statements'], ['Statements', 'and'], ['and', 'control'], ['control', 'flow\\n3.3'], ['flow\\n3.3', 'Expressions\\n3.4'], ['Expressions\\n3.4', 'Methods\\n3.5'], ['Methods\\n3.5', 'Typing\\n3.6'], ['Typing\\n3.6', 'Mathematics\\n\\n\\n4'], ['Mathematics\\n\\n\\n4', 'Libraries\\n5'], ['Libraries\\n5', 'Development'], ['Development', 'environments\\n6'], ['environments\\n6', 'Implementations\\n\\n6.1'], ['Implementations\\n\\n6.1', 'Reference'], ['Reference', 'implementation\\n6.2'], ['implementation\\n6.2', 'Other'], ['Other', 'implementations\\n6.3'], ['implementations\\n6.3', 'Unsupported'], ['Unsupported', 'implementations\\n6.4'], ['implementations\\n6.4', 'Cross-compilers'], ['Cross-compilers', 'to'], ['to', 'other'], ['other', 'languages\\n6.5'], ['languages\\n6.5', 'Performance\\n\\n\\n7'], ['Performance\\n\\n\\n7', 'Development\\n8'], ['Development\\n8', 'Naming\\n9'], ['Naming\\n9', 'Uses\\n10'], ['Uses\\n10', 'Languages'], ['Languages', 'influenced'], ['influenced', 'by'], ['by', 'Python\\n11'], ['Python\\n11', 'See'], ['See', 'also\\n12'], ['also\\n12', 'References\\n13'], ['References\\n13', 'Further'], ['Further', 'reading\\n14'], ['reading\\n14', 'External'], ['External', 'links\\n\\n\\n\\nHistory[edit]\\n\\n\\n\\n\\nGuido'], ['links\\n\\n\\n\\nHistory[edit]\\n\\n\\n\\n\\nGuido', 'van'], ['van', 'Rossum,'], ['Rossum,', 'the'], ['the', 'creator'], ['creator', 'of'], ['of', 'Python\\n\\n\\nMain'], ['Python\\n\\n\\nMain', 'article:'], ['article:', 'History'], ['History', 'of'], ['of', 'Python\\nPython'], ['Python\\nPython', 'was'], ['was', 'conceived'], ['conceived', 'in'], ['in', 'the'], ['the', 'late'], ['late', '1980s,[30]'], ['1980s,[30]', 'and'], ['and', 'its'], ['its', 'implementation'], ['implementation', 'began'], ['began', 'in'], ['in', 'December'], ['December', '1989[31]'], ['1989[31]', 'by'], ['by', 'Guido'], ['Guido', 'van'], ['van', 'Rossum'], ['Rossum', 'at'], ['at', 'Centrum'], ['Centrum', 'Wiskunde'], ['Wiskunde', '&'], ['&', 'Informatica'], ['Informatica', '(CWI)'], ['(CWI)', 'in'], ['in', 'the'], ['the', 'Netherlands'], ['Netherlands', 'as'], ['as', 'a'], ['a', 'successor'], ['successor', 'to'], ['to', 'the'], ['the', 'ABC'], ['ABC', 'language'], ['language', '(itself'], ['(itself', 'inspired'], ['inspired', 'by'], ['by', 'SETL)[32]'], ['SETL)[32]', 'capable'], ['capable', 'of'], ['of', 'exception'], ['exception', 'handling'], ['handling', 'and'], ['and', 'interfacing'], ['interfacing', 'with'], ['with', 'the'], ['the', 'Amoeba'], ['Amoeba', 'operating'], ['operating', 'system.[6]'], ['system.[6]', 'Van'], ['Van', 'Rossum'], ['Rossum', 'remains'], ['remains', \"Python's\"], [\"Python's\", 'principal'], ['principal', 'author.'], ['author.', 'His'], ['His', 'continuing'], ['continuing', 'central'], ['central', 'role'], ['role', 'in'], ['in', \"Python's\"], [\"Python's\", 'development'], ['development', 'is'], ['is', 'reflected'], ['reflected', 'in'], ['in', 'the'], ['the', 'title'], ['title', 'given'], ['given', 'to'], ['to', 'him'], ['him', 'by'], ['by', 'the'], ['the', 'Python'], ['Python', 'community:'], ['community:', 'Benevolent'], ['Benevolent', 'Dictator'], ['Dictator', 'For'], ['For', 'Life'], ['Life', '(BDFL).\\nOn'], ['(BDFL).\\nOn', 'the'], ['the', 'origins'], ['origins', 'of'], ['of', 'Python,'], ['Python,', 'Van'], ['Van', 'Rossum'], ['Rossum', 'wrote'], ['wrote', 'in'], ['in', '1996:[33]\\n\\n\\n“\\n...In'], ['1996:[33]\\n\\n\\n“\\n...In', 'December'], ['December', '1989,'], ['1989,', 'I'], ['I', 'was'], ['was', 'looking'], ['looking', 'for'], ['for', 'a'], ['a', '\"hobby\"'], ['\"hobby\"', 'programming'], ['programming', 'project'], ['project', 'that'], ['that', 'would'], ['would', 'keep'], ['keep', 'me'], ['me', 'occupied'], ['occupied', 'during'], ['during', 'the'], ['the', 'week'], ['week', 'around'], ['around', 'Christmas.'], ['Christmas.', 'My'], ['My', 'office'], ['office', '...'], ['...', 'would'], ['would', 'be'], ['be', 'closed,'], ['closed,', 'but'], ['but', 'I'], ['I', 'had'], ['had', 'a'], ['a', 'home'], ['home', 'computer,'], ['computer,', 'and'], ['and', 'not'], ['not', 'much'], ['much', 'else'], ['else', 'on'], ['on', 'my'], ['my', 'hands.'], ['hands.', 'I'], ['I', 'decided'], ['decided', 'to'], ['to', 'write'], ['write', 'an'], ['an', 'interpreter'], ['interpreter', 'for'], ['for', 'the'], ['the', 'new'], ['new', 'scripting'], ['scripting', 'language'], ['language', 'I'], ['I', 'had'], ['had', 'been'], ['been', 'thinking'], ['thinking', 'about'], ['about', 'lately:'], ['lately:', 'a'], ['a', 'descendant'], ['descendant', 'of'], ['of', 'ABC'], ['ABC', 'that'], ['that', 'would'], ['would', 'appeal'], ['appeal', 'to'], ['to', 'Unix/C'], ['Unix/C', 'hackers.'], ['hackers.', 'I'], ['I', 'chose'], ['chose', 'Python'], ['Python', 'as'], ['as', 'a'], ['a', 'working'], ['working', 'title'], ['title', 'for'], ['for', 'the'], ['the', 'project,'], ['project,', 'being'], ['being', 'in'], ['in', 'a'], ['a', 'slightly'], ['slightly', 'irreverent'], ['irreverent', 'mood'], ['mood', '(and'], ['(and', 'a'], ['a', 'big'], ['big', 'fan'], ['fan', 'of'], ['of', 'Monty'], ['Monty', \"Python's\"], [\"Python's\", 'Flying'], ['Flying', 'Circus).\\n”\\n\\n\\nPython'], ['Circus).\\n”\\n\\n\\nPython', '2.0'], ['2.0', 'was'], ['was', 'released'], ['released', 'on'], ['on', '16'], ['16', 'October'], ['October', '2000'], ['2000', 'and'], ['and', 'had'], ['had', 'many'], ['many', 'major'], ['major', 'new'], ['new', 'features,'], ['features,', 'including'], ['including', 'a'], ['a', 'cycle-detecting'], ['cycle-detecting', 'garbage'], ['garbage', 'collector'], ['collector', 'and'], ['and', 'support'], ['support', 'for'], ['for', 'Unicode.'], ['Unicode.', 'With'], ['With', 'this'], ['this', 'release,'], ['release,', 'the'], ['the', 'development'], ['development', 'process'], ['process', 'became'], ['became', 'more'], ['more', 'transparent'], ['transparent', 'and'], ['and', 'community-backed.[34]\\nPython'], ['community-backed.[34]\\nPython', '3.0'], ['3.0', '(initially'], ['(initially', 'called'], ['called', 'Python'], ['Python', '3000'], ['3000', 'or'], ['or', 'py3k)'], ['py3k)', 'was'], ['was', 'released'], ['released', 'on'], ['on', '3'], ['3', 'December'], ['December', '2008'], ['2008', 'after'], ['after', 'a'], ['a', 'long'], ['long', 'testing'], ['testing', 'period.'], ['period.', 'It'], ['It', 'is'], ['is', 'a'], ['a', 'major'], ['major', 'revision'], ['revision', 'of'], ['of', 'the'], ['the', 'language'], ['language', 'that'], ['that', 'is'], ['is', 'not'], ['not', 'backward-compatible'], ['backward-compatible', 'with'], ['with', 'previous'], ['previous', 'versions.[35]'], ['versions.[35]', 'However,'], ['However,', 'many'], ['many', 'of'], ['of', 'its'], ['its', 'major'], ['major', 'features'], ['features', 'have'], ['have', 'been'], ['been', 'backported'], ['backported', 'to'], ['to', 'the'], ['the', 'backward-compatible'], ['backward-compatible', 'Python'], ['Python', '2.6.x[36]'], ['2.6.x[36]', 'and'], ['and', '2.7.x'], ['2.7.x', 'version'], ['version', 'series.\\nPython'], ['series.\\nPython', \"2.7's\"], [\"2.7's\", 'end-of-life'], ['end-of-life', 'date'], ['date', '(a.k.a.'], ['(a.k.a.', 'EOL,'], ['EOL,', 'sunset'], ['sunset', 'date)'], ['date)', 'was'], ['was', 'initially'], ['initially', 'set'], ['set', 'at'], ['at', '2015,'], ['2015,', 'then'], ['then', 'postponed'], ['postponed', 'to'], ['to', '2020'], ['2020', 'out'], ['out', 'of'], ['of', 'concern'], ['concern', 'that'], ['that', 'a'], ['a', 'large'], ['large', 'body'], ['body', 'of'], ['of', 'existing'], ['existing', 'code'], ['code', 'could'], ['could', 'not'], ['not', 'easily'], ['easily', 'be'], ['be', 'forward-ported'], ['forward-ported', 'to'], ['to', 'Python'], ['Python', '3.[37][38]'], ['3.[37][38]', 'In'], ['In', 'January'], ['January', '2017,'], ['2017,', 'Google'], ['Google', 'announced'], ['announced', 'work'], ['work', 'on'], ['on', 'a'], ['a', 'Python'], ['Python', '2.7'], ['2.7', 'to'], ['to', 'Go'], ['Go', 'transcompiler.'], ['transcompiler.', 'The'], ['The', 'Register'], ['Register', 'speculated'], ['speculated', 'that'], ['that', 'this'], ['this', 'was'], ['was', 'in'], ['in', 'response'], ['response', 'to'], ['to', 'Python'], ['Python', \"2.7's\"], [\"2.7's\", 'planned'], ['planned', 'end-of-life[39],'], ['end-of-life[39],', 'but'], ['but', 'Google'], ['Google', 'cited'], ['cited', 'performance'], ['performance', 'under'], ['under', 'concurrent'], ['concurrent', 'workloads'], ['workloads', 'as'], ['as', 'their'], ['their', 'only'], ['only', 'motivation.[40]\\nFeatures'], ['motivation.[40]\\nFeatures', 'and'], ['and', 'philosophy[edit]\\nPython'], ['philosophy[edit]\\nPython', 'is'], ['is', 'a'], ['a', 'multi-paradigm'], ['multi-paradigm', 'programming'], ['programming', 'language.'], ['language.', 'Object-oriented'], ['Object-oriented', 'programming'], ['programming', 'and'], ['and', 'structured'], ['structured', 'programming'], ['programming', 'are'], ['are', 'fully'], ['fully', 'supported,'], ['supported,', 'and'], ['and', 'many'], ['many', 'of'], ['of', 'its'], ['its', 'features'], ['features', 'support'], ['support', 'functional'], ['functional', 'programming'], ['programming', 'and'], ['and', 'aspect-oriented'], ['aspect-oriented', 'programming'], ['programming', '(including'], ['(including', 'by'], ['by', 'metaprogramming[41]'], ['metaprogramming[41]', 'and'], ['and', 'metaobjects'], ['metaobjects', '(magic'], ['(magic', 'methods)).[42]'], ['methods)).[42]', 'Many'], ['Many', 'other'], ['other', 'paradigms'], ['paradigms', 'are'], ['are', 'supported'], ['supported', 'via'], ['via', 'extensions,'], ['extensions,', 'including'], ['including', 'design'], ['design', 'by'], ['by', 'contract[43][44]'], ['contract[43][44]', 'and'], ['and', 'logic'], ['logic', 'programming.[45]\\nPython'], ['programming.[45]\\nPython', 'uses'], ['uses', 'dynamic'], ['dynamic', 'typing,'], ['typing,', 'and'], ['and', 'a'], ['a', 'combination'], ['combination', 'of'], ['of', 'reference'], ['reference', 'counting'], ['counting', 'and'], ['and', 'a'], ['a', 'cycle-detecting'], ['cycle-detecting', 'garbage'], ['garbage', 'collector'], ['collector', 'for'], ['for', 'memory'], ['memory', 'management.'], ['management.', 'It'], ['It', 'also'], ['also', 'features'], ['features', 'dynamic'], ['dynamic', 'name'], ['name', 'resolution'], ['resolution', '(late'], ['(late', 'binding),'], ['binding),', 'which'], ['which', 'binds'], ['binds', 'method'], ['method', 'and'], ['and', 'variable'], ['variable', 'names'], ['names', 'during'], ['during', 'program'], ['program', \"execution.\\nPython's\"], [\"execution.\\nPython's\", 'design'], ['design', 'offers'], ['offers', 'some'], ['some', 'support'], ['support', 'for'], ['for', 'functional'], ['functional', 'programming'], ['programming', 'in'], ['in', 'the'], ['the', 'Lisp'], ['Lisp', 'tradition.'], ['tradition.', 'It'], ['It', 'has'], ['has', 'filter(),'], ['filter(),', 'map(),'], ['map(),', 'and'], ['and', 'reduce()'], ['reduce()', 'functions;'], ['functions;', 'list'], ['list', 'comprehensions,'], ['comprehensions,', 'dictionaries,'], ['dictionaries,', 'and'], ['and', 'sets;'], ['sets;', 'and'], ['and', 'generator'], ['generator', 'expressions.[46]'], ['expressions.[46]', 'The'], ['The', 'standard'], ['standard', 'library'], ['library', 'has'], ['has', 'two'], ['two', 'modules'], ['modules', '(itertools'], ['(itertools', 'and'], ['and', 'functools)'], ['functools)', 'that'], ['that', 'implement'], ['implement', 'functional'], ['functional', 'tools'], ['tools', 'borrowed'], ['borrowed', 'from'], ['from', 'Haskell'], ['Haskell', 'and'], ['and', 'Standard'], ['Standard', 'ML.[47]\\nThe'], ['ML.[47]\\nThe', \"language's\"], [\"language's\", 'core'], ['core', 'philosophy'], ['philosophy', 'is'], ['is', 'summarized'], ['summarized', 'in'], ['in', 'the'], ['the', 'document'], ['document', 'The'], ['The', 'Zen'], ['Zen', 'of'], ['of', 'Python'], ['Python', '(PEP'], ['(PEP', '20),'], ['20),', 'which'], ['which', 'includes'], ['includes', 'aphorisms'], ['aphorisms', 'such'], ['such', 'as:[48]\\n\\nBeautiful'], ['as:[48]\\n\\nBeautiful', 'is'], ['is', 'better'], ['better', 'than'], ['than', 'ugly\\nExplicit'], ['ugly\\nExplicit', 'is'], ['is', 'better'], ['better', 'than'], ['than', 'implicit\\nSimple'], ['implicit\\nSimple', 'is'], ['is', 'better'], ['better', 'than'], ['than', 'complex\\nComplex'], ['complex\\nComplex', 'is'], ['is', 'better'], ['better', 'than'], ['than', 'complicated\\nReadability'], ['complicated\\nReadability', 'counts\\n\\nRather'], ['counts\\n\\nRather', 'than'], ['than', 'having'], ['having', 'all'], ['all', 'of'], ['of', 'its'], ['its', 'functionality'], ['functionality', 'built'], ['built', 'into'], ['into', 'its'], ['its', 'core,'], ['core,', 'Python'], ['Python', 'was'], ['was', 'designed'], ['designed', 'to'], ['to', 'be'], ['be', 'highly'], ['highly', 'extensible.'], ['extensible.', 'This'], ['This', 'compact'], ['compact', 'modularity'], ['modularity', 'has'], ['has', 'made'], ['made', 'it'], ['it', 'particularly'], ['particularly', 'popular'], ['popular', 'as'], ['as', 'a'], ['a', 'means'], ['means', 'of'], ['of', 'adding'], ['adding', 'programmable'], ['programmable', 'interfaces'], ['interfaces', 'to'], ['to', 'existing'], ['existing', 'applications.'], ['applications.', 'Van'], ['Van', \"Rossum's\"], [\"Rossum's\", 'vision'], ['vision', 'of'], ['of', 'a'], ['a', 'small'], ['small', 'core'], ['core', 'language'], ['language', 'with'], ['with', 'a'], ['a', 'large'], ['large', 'standard'], ['standard', 'library'], ['library', 'and'], ['and', 'easily'], ['easily', 'extensible'], ['extensible', 'interpreter'], ['interpreter', 'stemmed'], ['stemmed', 'from'], ['from', 'his'], ['his', 'frustrations'], ['frustrations', 'with'], ['with', 'ABC,'], ['ABC,', 'which'], ['which', 'espoused'], ['espoused', 'the'], ['the', 'opposite'], ['opposite', 'approach.[30]\\nWhile'], ['approach.[30]\\nWhile', 'offering'], ['offering', 'choice'], ['choice', 'in'], ['in', 'coding'], ['coding', 'methodology,'], ['methodology,', 'the'], ['the', 'Python'], ['Python', 'philosophy'], ['philosophy', 'rejects'], ['rejects', 'exuberant'], ['exuberant', 'syntax'], ['syntax', '(such'], ['(such', 'as'], ['as', 'that'], ['that', 'of'], ['of', 'Perl)'], ['Perl)', 'in'], ['in', 'favor'], ['favor', 'of'], ['of', 'a'], ['a', 'simpler,'], ['simpler,', 'less-cluttered'], ['less-cluttered', 'grammar.'], ['grammar.', 'As'], ['As', 'Alex'], ['Alex', 'Martelli'], ['Martelli', 'put'], ['put', 'it:'], ['it:', '\"To'], ['\"To', 'describe'], ['describe', 'something'], ['something', 'as'], ['as', \"'clever'\"], [\"'clever'\", 'is'], ['is', 'not'], ['not', 'considered'], ['considered', 'a'], ['a', 'compliment'], ['compliment', 'in'], ['in', 'the'], ['the', 'Python'], ['Python', 'culture.\"[49]'], ['culture.\"[49]', \"Python's\"], [\"Python's\", 'philosophy'], ['philosophy', 'rejects'], ['rejects', 'the'], ['the', 'Perl'], ['Perl', '\"there'], ['\"there', 'is'], ['is', 'more'], ['more', 'than'], ['than', 'one'], ['one', 'way'], ['way', 'to'], ['to', 'do'], ['do', 'it\"'], ['it\"', 'approach'], ['approach', 'to'], ['to', 'language'], ['language', 'design'], ['design', 'in'], ['in', 'favor'], ['favor', 'of'], ['of', '\"there'], ['\"there', 'should'], ['should', 'be'], ['be', 'one—and'], ['one—and', 'preferably'], ['preferably', 'only'], ['only', 'one—obvious'], ['one—obvious', 'way'], ['way', 'to'], ['to', 'do'], ['do', 'it\".[48]\\nPython\\'s'], ['it\".[48]\\nPython\\'s', 'developers'], ['developers', 'strive'], ['strive', 'to'], ['to', 'avoid'], ['avoid', 'premature'], ['premature', 'optimization,'], ['optimization,', 'and'], ['and', 'reject'], ['reject', 'patches'], ['patches', 'to'], ['to', 'non-critical'], ['non-critical', 'parts'], ['parts', 'of'], ['of', 'CPython'], ['CPython', 'that'], ['that', 'would'], ['would', 'offer'], ['offer', 'marginal'], ['marginal', 'increases'], ['increases', 'in'], ['in', 'speed'], ['speed', 'at'], ['at', 'the'], ['the', 'cost'], ['cost', 'of'], ['of', 'clarity.[50]'], ['clarity.[50]', 'When'], ['When', 'speed'], ['speed', 'is'], ['is', 'important,'], ['important,', 'a'], ['a', 'Python'], ['Python', 'programmer'], ['programmer', 'can'], ['can', 'move'], ['move', 'time-critical'], ['time-critical', 'functions'], ['functions', 'to'], ['to', 'extension'], ['extension', 'modules'], ['modules', 'written'], ['written', 'in'], ['in', 'languages'], ['languages', 'such'], ['such', 'as'], ['as', 'C,'], ['C,', 'or'], ['or', 'use'], ['use', 'PyPy,'], ['PyPy,', 'a'], ['a', 'just-in-time'], ['just-in-time', 'compiler.'], ['compiler.', 'Cython'], ['Cython', 'is'], ['is', 'also'], ['also', 'available,'], ['available,', 'which'], ['which', 'translates'], ['translates', 'a'], ['a', 'Python'], ['Python', 'script'], ['script', 'into'], ['into', 'C'], ['C', 'and'], ['and', 'makes'], ['makes', 'direct'], ['direct', 'C-level'], ['C-level', 'API'], ['API', 'calls'], ['calls', 'into'], ['into', 'the'], ['the', 'Python'], ['Python', 'interpreter.\\nAn'], ['interpreter.\\nAn', 'important'], ['important', 'goal'], ['goal', 'of'], ['of', \"Python's\"], [\"Python's\", 'developers'], ['developers', 'is'], ['is', 'keeping'], ['keeping', 'it'], ['it', 'fun'], ['fun', 'to'], ['to', 'use.'], ['use.', 'This'], ['This', 'is'], ['is', 'reflected'], ['reflected', 'in'], ['in', 'the'], ['the', \"language's\"], [\"language's\", 'name—a'], ['name—a', 'tribute'], ['tribute', 'to'], ['to', 'the'], ['the', 'British'], ['British', 'comedy'], ['comedy', 'group'], ['group', 'Monty'], ['Monty', 'Python[51]—and'], ['Python[51]—and', 'in'], ['in', 'occasionally'], ['occasionally', 'playful'], ['playful', 'approaches'], ['approaches', 'to'], ['to', 'tutorials'], ['tutorials', 'and'], ['and', 'reference'], ['reference', 'materials,'], ['materials,', 'such'], ['such', 'as'], ['as', 'examples'], ['examples', 'that'], ['that', 'refer'], ['refer', 'to'], ['to', 'spam'], ['spam', 'and'], ['and', 'eggs'], ['eggs', '(from'], ['(from', 'a'], ['a', 'famous'], ['famous', 'Monty'], ['Monty', 'Python'], ['Python', 'sketch)'], ['sketch)', 'instead'], ['instead', 'of'], ['of', 'the'], ['the', 'standard'], ['standard', 'foo'], ['foo', 'and'], ['and', 'bar.[52][53]\\nA'], ['bar.[52][53]\\nA', 'common'], ['common', 'neologism'], ['neologism', 'in'], ['in', 'the'], ['the', 'Python'], ['Python', 'community'], ['community', 'is'], ['is', 'pythonic,'], ['pythonic,', 'which'], ['which', 'can'], ['can', 'have'], ['have', 'a'], ['a', 'wide'], ['wide', 'range'], ['range', 'of'], ['of', 'meanings'], ['meanings', 'related'], ['related', 'to'], ['to', 'program'], ['program', 'style.'], ['style.', 'To'], ['To', 'say'], ['say', 'that'], ['that', 'code'], ['code', 'is'], ['is', 'pythonic'], ['pythonic', 'is'], ['is', 'to'], ['to', 'say'], ['say', 'that'], ['that', 'it'], ['it', 'uses'], ['uses', 'Python'], ['Python', 'idioms'], ['idioms', 'well,'], ['well,', 'that'], ['that', 'it'], ['it', 'is'], ['is', 'natural'], ['natural', 'or'], ['or', 'shows'], ['shows', 'fluency'], ['fluency', 'in'], ['in', 'the'], ['the', 'language,'], ['language,', 'that'], ['that', 'it'], ['it', 'conforms'], ['conforms', 'with'], ['with', \"Python's\"], [\"Python's\", 'minimalist'], ['minimalist', 'philosophy'], ['philosophy', 'and'], ['and', 'emphasis'], ['emphasis', 'on'], ['on', 'readability.'], ['readability.', 'In'], ['In', 'contrast,'], ['contrast,', 'code'], ['code', 'that'], ['that', 'is'], ['is', 'difficult'], ['difficult', 'to'], ['to', 'understand'], ['understand', 'or'], ['or', 'reads'], ['reads', 'like'], ['like', 'a'], ['a', 'rough'], ['rough', 'transcription'], ['transcription', 'from'], ['from', 'another'], ['another', 'programming'], ['programming', 'language'], ['language', 'is'], ['is', 'called'], ['called', 'unpythonic.\\nUsers'], ['unpythonic.\\nUsers', 'and'], ['and', 'admirers'], ['admirers', 'of'], ['of', 'Python,'], ['Python,', 'especially'], ['especially', 'those'], ['those', 'considered'], ['considered', 'knowledgeable'], ['knowledgeable', 'or'], ['or', 'experienced,'], ['experienced,', 'are'], ['are', 'often'], ['often', 'referred'], ['referred', 'to'], ['to', 'as'], ['as', 'Pythonists,'], ['Pythonists,', 'Pythonistas,'], ['Pythonistas,', 'and'], ['and', 'Pythoneers.[54][55]\\nSyntax'], ['Pythoneers.[54][55]\\nSyntax', 'and'], ['and', 'semantics[edit]\\nMain'], ['semantics[edit]\\nMain', 'article:'], ['article:', 'Python'], ['Python', 'syntax'], ['syntax', 'and'], ['and', 'semantics\\nPython'], ['semantics\\nPython', 'is'], ['is', 'meant'], ['meant', 'to'], ['to', 'be'], ['be', 'an'], ['an', 'easily'], ['easily', 'readable'], ['readable', 'language.'], ['language.', 'Its'], ['Its', 'formatting'], ['formatting', 'is'], ['is', 'visually'], ['visually', 'uncluttered,'], ['uncluttered,', 'and'], ['and', 'it'], ['it', 'often'], ['often', 'uses'], ['uses', 'English'], ['English', 'keywords'], ['keywords', 'where'], ['where', 'other'], ['other', 'languages'], ['languages', 'use'], ['use', 'punctuation.'], ['punctuation.', 'Unlike'], ['Unlike', 'many'], ['many', 'other'], ['other', 'languages,'], ['languages,', 'it'], ['it', 'does'], ['does', 'not'], ['not', 'use'], ['use', 'curly'], ['curly', 'brackets'], ['brackets', 'to'], ['to', 'delimit'], ['delimit', 'blocks,'], ['blocks,', 'and'], ['and', 'semicolons'], ['semicolons', 'after'], ['after', 'statements'], ['statements', 'are'], ['are', 'optional.'], ['optional.', 'It'], ['It', 'has'], ['has', 'fewer'], ['fewer', 'syntactic'], ['syntactic', 'exceptions'], ['exceptions', 'and'], ['and', 'special'], ['special', 'cases'], ['cases', 'than'], ['than', 'C'], ['C', 'or'], ['or', 'Pascal.[56]\\nIndentation[edit]\\nMain'], ['Pascal.[56]\\nIndentation[edit]\\nMain', 'article:'], ['article:', 'Python'], ['Python', 'syntax'], ['syntax', 'and'], ['and', 'semantics'], ['semantics', '§\\xa0Indentation\\nPython'], ['§\\xa0Indentation\\nPython', 'uses'], ['uses', 'whitespace'], ['whitespace', 'indentation,'], ['indentation,', 'rather'], ['rather', 'than'], ['than', 'curly'], ['curly', 'braces'], ['braces', 'or'], ['or', 'keywords,'], ['keywords,', 'to'], ['to', 'delimit'], ['delimit', 'blocks.'], ['blocks.', 'An'], ['An', 'increase'], ['increase', 'in'], ['in', 'indentation'], ['indentation', 'comes'], ['comes', 'after'], ['after', 'certain'], ['certain', 'statements;'], ['statements;', 'a'], ['a', 'decrease'], ['decrease', 'in'], ['in', 'indentation'], ['indentation', 'signifies'], ['signifies', 'the'], ['the', 'end'], ['end', 'of'], ['of', 'the'], ['the', 'current'], ['current', 'block.[57]'], ['block.[57]', 'This'], ['This', 'feature'], ['feature', 'is'], ['is', 'also'], ['also', 'sometimes'], ['sometimes', 'termed'], ['termed', 'the'], ['the', 'off-side'], ['off-side', 'rule.\\nStatements'], ['rule.\\nStatements', 'and'], ['and', 'control'], ['control', \"flow[edit]\\nPython's\"], [\"flow[edit]\\nPython's\", 'statements'], ['statements', 'include'], ['include', '(among'], ['(among', 'others):\\n\\nThe'], ['others):\\n\\nThe', 'assignment'], ['assignment', 'statement'], ['statement', '(token'], ['(token', \"'=',\"], [\"'=',\", 'the'], ['the', 'equals'], ['equals', 'sign).'], ['sign).', 'This'], ['This', 'operates'], ['operates', 'differently'], ['differently', 'than'], ['than', 'in'], ['in', 'traditional'], ['traditional', 'imperative'], ['imperative', 'programming'], ['programming', 'languages,'], ['languages,', 'and'], ['and', 'this'], ['this', 'fundamental'], ['fundamental', 'mechanism'], ['mechanism', '(including'], ['(including', 'the'], ['the', 'nature'], ['nature', 'of'], ['of', \"Python's\"], [\"Python's\", 'version'], ['version', 'of'], ['of', 'variables)'], ['variables)', 'illuminates'], ['illuminates', 'many'], ['many', 'other'], ['other', 'features'], ['features', 'of'], ['of', 'the'], ['the', 'language.'], ['language.', 'Assignment'], ['Assignment', 'in'], ['in', 'C,'], ['C,', 'e.g.,'], ['e.g.,', 'x'], ['x', '='], ['=', '2,'], ['2,', 'translates'], ['translates', 'to'], ['to', '\"typed'], ['\"typed', 'variable'], ['variable', 'name'], ['name', 'x'], ['x', 'receives'], ['receives', 'a'], ['a', 'copy'], ['copy', 'of'], ['of', 'numeric'], ['numeric', 'value'], ['value', '2\".'], ['2\".', 'The'], ['The', '(right-hand)'], ['(right-hand)', 'value'], ['value', 'is'], ['is', 'copied'], ['copied', 'into'], ['into', 'an'], ['an', 'allocated'], ['allocated', 'storage'], ['storage', 'location'], ['location', 'for'], ['for', 'which'], ['which', 'the'], ['the', '(left-hand)'], ['(left-hand)', 'variable'], ['variable', 'name'], ['name', 'is'], ['is', 'the'], ['the', 'symbolic'], ['symbolic', 'address.'], ['address.', 'The'], ['The', 'memory'], ['memory', 'allocated'], ['allocated', 'to'], ['to', 'the'], ['the', 'variable'], ['variable', 'is'], ['is', 'large'], ['large', 'enough'], ['enough', '(potentially'], ['(potentially', 'quite'], ['quite', 'large)'], ['large)', 'for'], ['for', 'the'], ['the', 'declared'], ['declared', 'type.'], ['type.', 'In'], ['In', 'the'], ['the', 'simplest'], ['simplest', 'case'], ['case', 'of'], ['of', 'Python'], ['Python', 'assignment,'], ['assignment,', 'using'], ['using', 'the'], ['the', 'same'], ['same', 'example,'], ['example,', 'x'], ['x', '='], ['=', '2,'], ['2,', 'translates'], ['translates', 'to'], ['to', '\"(generic)'], ['\"(generic)', 'name'], ['name', 'x'], ['x', 'receives'], ['receives', 'a'], ['a', 'reference'], ['reference', 'to'], ['to', 'a'], ['a', 'separate,'], ['separate,', 'dynamically'], ['dynamically', 'allocated'], ['allocated', 'object'], ['object', 'of'], ['of', 'numeric'], ['numeric', '(int)'], ['(int)', 'type'], ['type', 'of'], ['of', 'value'], ['value', '2.\"'], ['2.\"', 'This'], ['This', 'is'], ['is', 'termed'], ['termed', 'binding'], ['binding', 'the'], ['the', 'name'], ['name', 'to'], ['to', 'the'], ['the', 'object.'], ['object.', 'Since'], ['Since', 'the'], ['the', \"name's\"], [\"name's\", 'storage'], ['storage', 'location'], ['location', \"doesn't\"], [\"doesn't\", 'contain'], ['contain', 'the'], ['the', 'indicated'], ['indicated', 'value,'], ['value,', 'it'], ['it', 'is'], ['is', 'improper'], ['improper', 'to'], ['to', 'call'], ['call', 'it'], ['it', 'a'], ['a', 'variable.'], ['variable.', 'Names'], ['Names', 'may'], ['may', 'be'], ['be', 'subsequently'], ['subsequently', 'rebound'], ['rebound', 'at'], ['at', 'any'], ['any', 'time'], ['time', 'to'], ['to', 'objects'], ['objects', 'of'], ['of', 'greatly'], ['greatly', 'varying'], ['varying', 'types,'], ['types,', 'including'], ['including', 'strings,'], ['strings,', 'procedures,'], ['procedures,', 'complex'], ['complex', 'objects'], ['objects', 'with'], ['with', 'data'], ['data', 'and'], ['and', 'methods,'], ['methods,', 'etc.'], ['etc.', 'Successive'], ['Successive', 'assignments'], ['assignments', 'of'], ['of', 'a'], ['a', 'common'], ['common', 'value'], ['value', 'to'], ['to', 'multiple'], ['multiple', 'names,'], ['names,', 'e.g.,'], ['e.g.,', 'x'], ['x', '='], ['=', '2;'], ['2;', 'y'], ['y', '='], ['=', '2;'], ['2;', 'z'], ['z', '='], ['=', '2'], ['2', 'result'], ['result', 'in'], ['in', 'allocating'], ['allocating', 'storage'], ['storage', 'to'], ['to', '(at'], ['(at', 'most)'], ['most)', 'three'], ['three', 'names'], ['names', 'and'], ['and', 'one'], ['one', 'numeric'], ['numeric', 'object,'], ['object,', 'to'], ['to', 'which'], ['which', 'all'], ['all', 'three'], ['three', 'names'], ['names', 'are'], ['are', 'bound.'], ['bound.', 'Since'], ['Since', 'a'], ['a', 'name'], ['name', 'is'], ['is', 'a'], ['a', 'generic'], ['generic', 'reference'], ['reference', 'holder'], ['holder', 'it'], ['it', 'is'], ['is', 'unreasonable'], ['unreasonable', 'to'], ['to', 'associate'], ['associate', 'a'], ['a', 'fixed'], ['fixed', 'data'], ['data', 'type'], ['type', 'with'], ['with', 'it.'], ['it.', 'However'], ['However', 'at'], ['at', 'a'], ['a', 'given'], ['given', 'time'], ['time', 'a'], ['a', 'name'], ['name', 'will'], ['will', 'be'], ['be', 'bound'], ['bound', 'to'], ['to', 'some'], ['some', 'object,'], ['object,', 'which'], ['which', 'will'], ['will', 'have'], ['have', 'a'], ['a', 'type;'], ['type;', 'thus'], ['thus', 'there'], ['there', 'is'], ['is', 'dynamic'], ['dynamic', 'typing.\\nThe'], ['typing.\\nThe', 'if'], ['if', 'statement,'], ['statement,', 'which'], ['which', 'conditionally'], ['conditionally', 'executes'], ['executes', 'a'], ['a', 'block'], ['block', 'of'], ['of', 'code,'], ['code,', 'along'], ['along', 'with'], ['with', 'else'], ['else', 'and'], ['and', 'elif'], ['elif', '(a'], ['(a', 'contraction'], ['contraction', 'of'], ['of', 'else-if).\\nThe'], ['else-if).\\nThe', 'for'], ['for', 'statement,'], ['statement,', 'which'], ['which', 'iterates'], ['iterates', 'over'], ['over', 'an'], ['an', 'iterable'], ['iterable', 'object,'], ['object,', 'capturing'], ['capturing', 'each'], ['each', 'element'], ['element', 'to'], ['to', 'a'], ['a', 'local'], ['local', 'variable'], ['variable', 'for'], ['for', 'use'], ['use', 'by'], ['by', 'the'], ['the', 'attached'], ['attached', 'block.\\nThe'], ['block.\\nThe', 'while'], ['while', 'statement,'], ['statement,', 'which'], ['which', 'executes'], ['executes', 'a'], ['a', 'block'], ['block', 'of'], ['of', 'code'], ['code', 'as'], ['as', 'long'], ['long', 'as'], ['as', 'its'], ['its', 'condition'], ['condition', 'is'], ['is', 'true.\\nThe'], ['true.\\nThe', 'try'], ['try', 'statement,'], ['statement,', 'which'], ['which', 'allows'], ['allows', 'exceptions'], ['exceptions', 'raised'], ['raised', 'in'], ['in', 'its'], ['its', 'attached'], ['attached', 'code'], ['code', 'block'], ['block', 'to'], ['to', 'be'], ['be', 'caught'], ['caught', 'and'], ['and', 'handled'], ['handled', 'by'], ['by', 'except'], ['except', 'clauses;'], ['clauses;', 'it'], ['it', 'also'], ['also', 'ensures'], ['ensures', 'that'], ['that', 'clean-up'], ['clean-up', 'code'], ['code', 'in'], ['in', 'a'], ['a', 'finally'], ['finally', 'block'], ['block', 'will'], ['will', 'always'], ['always', 'be'], ['be', 'run'], ['run', 'regardless'], ['regardless', 'of'], ['of', 'how'], ['how', 'the'], ['the', 'block'], ['block', 'exits.\\nThe'], ['exits.\\nThe', 'class'], ['class', 'statement,'], ['statement,', 'which'], ['which', 'executes'], ['executes', 'a'], ['a', 'block'], ['block', 'of'], ['of', 'code'], ['code', 'and'], ['and', 'attaches'], ['attaches', 'its'], ['its', 'local'], ['local', 'namespace'], ['namespace', 'to'], ['to', 'a'], ['a', 'class,'], ['class,', 'for'], ['for', 'use'], ['use', 'in'], ['in', 'object-oriented'], ['object-oriented', 'programming.\\nThe'], ['programming.\\nThe', 'def'], ['def', 'statement,'], ['statement,', 'which'], ['which', 'defines'], ['defines', 'a'], ['a', 'function'], ['function', 'or'], ['or', 'method.\\nThe'], ['method.\\nThe', 'with'], ['with', 'statement'], ['statement', '(from'], ['(from', 'Python'], ['Python', '2.5),'], ['2.5),', 'which'], ['which', 'encloses'], ['encloses', 'a'], ['a', 'code'], ['code', 'block'], ['block', 'within'], ['within', 'a'], ['a', 'context'], ['context', 'manager'], ['manager', '(for'], ['(for', 'example,'], ['example,', 'acquiring'], ['acquiring', 'a'], ['a', 'lock'], ['lock', 'before'], ['before', 'the'], ['the', 'block'], ['block', 'of'], ['of', 'code'], ['code', 'is'], ['is', 'run'], ['run', 'and'], ['and', 'releasing'], ['releasing', 'the'], ['the', 'lock'], ['lock', 'afterwards,'], ['afterwards,', 'or'], ['or', 'opening'], ['opening', 'a'], ['a', 'file'], ['file', 'and'], ['and', 'then'], ['then', 'closing'], ['closing', 'it),'], ['it),', 'allowing'], ['allowing', 'Resource'], ['Resource', 'Acquisition'], ['Acquisition', 'Is'], ['Is', 'Initialization'], ['Initialization', '(RAII)-like'], ['(RAII)-like', 'behavior.\\nThe'], ['behavior.\\nThe', 'pass'], ['pass', 'statement,'], ['statement,', 'which'], ['which', 'serves'], ['serves', 'as'], ['as', 'a'], ['a', 'NOP.'], ['NOP.', 'It'], ['It', 'is'], ['is', 'syntactically'], ['syntactically', 'needed'], ['needed', 'to'], ['to', 'create'], ['create', 'an'], ['an', 'empty'], ['empty', 'code'], ['code', 'block.\\nThe'], ['block.\\nThe', 'assert'], ['assert', 'statement,'], ['statement,', 'used'], ['used', 'during'], ['during', 'debugging'], ['debugging', 'to'], ['to', 'check'], ['check', 'for'], ['for', 'conditions'], ['conditions', 'that'], ['that', 'ought'], ['ought', 'to'], ['to', 'apply.\\nThe'], ['apply.\\nThe', 'yield'], ['yield', 'statement,'], ['statement,', 'which'], ['which', 'returns'], ['returns', 'a'], ['a', 'value'], ['value', 'from'], ['from', 'a'], ['a', 'generator'], ['generator', 'function.'], ['function.', 'From'], ['From', 'Python'], ['Python', '2.5,'], ['2.5,', 'yield'], ['yield', 'is'], ['is', 'also'], ['also', 'an'], ['an', 'operator.'], ['operator.', 'This'], ['This', 'form'], ['form', 'is'], ['is', 'used'], ['used', 'to'], ['to', 'implement'], ['implement', 'coroutines.\\nThe'], ['coroutines.\\nThe', 'import'], ['import', 'statement,'], ['statement,', 'which'], ['which', 'is'], ['is', 'used'], ['used', 'to'], ['to', 'import'], ['import', 'modules'], ['modules', 'whose'], ['whose', 'functions'], ['functions', 'or'], ['or', 'variables'], ['variables', 'can'], ['can', 'be'], ['be', 'used'], ['used', 'in'], ['in', 'the'], ['the', 'current'], ['current', 'program.'], ['program.', 'There'], ['There', 'are'], ['are', 'two'], ['two', 'ways'], ['ways', 'of'], ['of', 'using'], ['using', 'import:'], ['import:', 'from'], ['from', ''], ['name>', 'import'], ['import', '*'], ['*', 'or'], ['or', 'import'], ['import', '.\\nThe'], ['name>.\\nThe', 'print'], ['print', 'statement'], ['statement', 'was'], ['was', 'changed'], ['changed', 'to'], ['to', 'the'], ['the', 'print()'], ['print()', 'function'], ['function', 'in'], ['in', 'Python'], ['Python', '3.[58]\\n\\nPython'], ['3.[58]\\n\\nPython', 'does'], ['does', 'not'], ['not', 'support'], ['support', 'tail'], ['tail', 'call'], ['call', 'optimization'], ['optimization', 'or'], ['or', 'first-class'], ['first-class', 'continuations,'], ['continuations,', 'and,'], ['and,', 'according'], ['according', 'to'], ['to', 'Guido'], ['Guido', 'van'], ['van', 'Rossum,'], ['Rossum,', 'it'], ['it', 'never'], ['never', 'will.[59][60]'], ['will.[59][60]', 'However,'], ['However,', 'better'], ['better', 'support'], ['support', 'for'], ['for', 'coroutine-like'], ['coroutine-like', 'functionality'], ['functionality', 'is'], ['is', 'provided'], ['provided', 'in'], ['in', '2.5,'], ['2.5,', 'by'], ['by', 'extending'], ['extending', \"Python's\"], [\"Python's\", 'generators.[61]'], ['generators.[61]', 'Before'], ['Before', '2.5,'], ['2.5,', 'generators'], ['generators', 'were'], ['were', 'lazy'], ['lazy', 'iterators;'], ['iterators;', 'information'], ['information', 'was'], ['was', 'passed'], ['passed', 'unidirectionally'], ['unidirectionally', 'out'], ['out', 'of'], ['of', 'the'], ['the', 'generator.'], ['generator.', 'From'], ['From', 'Python'], ['Python', '2.5,'], ['2.5,', 'it'], ['it', 'is'], ['is', 'possible'], ['possible', 'to'], ['to', 'pass'], ['pass', 'information'], ['information', 'back'], ['back', 'into'], ['into', 'a'], ['a', 'generator'], ['generator', 'function,'], ['function,', 'and'], ['and', 'from'], ['from', 'Python'], ['Python', '3.3,'], ['3.3,', 'the'], ['the', 'information'], ['information', 'can'], ['can', 'be'], ['be', 'passed'], ['passed', 'through'], ['through', 'multiple'], ['multiple', 'stack'], ['stack', 'levels.[62]\\nExpressions[edit]\\nSome'], ['levels.[62]\\nExpressions[edit]\\nSome', 'Python'], ['Python', 'expressions'], ['expressions', 'are'], ['are', 'similar'], ['similar', 'to'], ['to', 'languages'], ['languages', 'such'], ['such', 'as'], ['as', 'C'], ['C', 'and'], ['and', 'Java,'], ['Java,', 'while'], ['while', 'some'], ['some', 'are'], ['are', 'not:\\n\\nAddition,'], ['not:\\n\\nAddition,', 'subtraction,'], ['subtraction,', 'and'], ['and', 'multiplication'], ['multiplication', 'are'], ['are', 'the'], ['the', 'same,'], ['same,', 'but'], ['but', 'the'], ['the', 'behavior'], ['behavior', 'of'], ['of', 'division'], ['division', 'differs.'], ['differs.', 'There'], ['There', 'are'], ['are', 'two'], ['two', 'types'], ['types', 'of'], ['of', 'divisions'], ['divisions', 'in'], ['in', 'Python.'], ['Python.', 'They'], ['They', 'are'], ['are', 'floor'], ['floor', 'division'], ['division', 'and'], ['and', 'integer'], ['integer', 'division.[63]'], ['division.[63]', 'Python'], ['Python', 'also'], ['also', 'added'], ['added', 'the'], ['the', '**'], ['**', 'operator'], ['operator', 'for'], ['for', 'exponentiation.\\nFrom'], ['exponentiation.\\nFrom', 'Python'], ['Python', '3.5,'], ['3.5,', 'it'], ['it', 'enables'], ['enables', 'support'], ['support', 'of'], ['of', 'matrix'], ['matrix', 'multiplication'], ['multiplication', 'with'], ['with', 'the'], ['the', '@'], ['@', 'operator.[64][65]\\nIn'], ['operator.[64][65]\\nIn', 'Python,'], ['Python,', '=='], ['==', 'compares'], ['compares', 'by'], ['by', 'value,'], ['value,', 'versus'], ['versus', 'Java,'], ['Java,', 'which'], ['which', 'compares'], ['compares', 'numerics'], ['numerics', 'by'], ['by', 'value[66]'], ['value[66]', 'and'], ['and', 'objects'], ['objects', 'by'], ['by', 'reference.[67]'], ['reference.[67]', '(Value'], ['(Value', 'comparisons'], ['comparisons', 'in'], ['in', 'Java'], ['Java', 'on'], ['on', 'objects'], ['objects', 'can'], ['can', 'be'], ['be', 'performed'], ['performed', 'with'], ['with', 'the'], ['the', 'equals()'], ['equals()', 'method.)'], ['method.)', \"Python's\"], [\"Python's\", 'is'], ['is', 'operator'], ['operator', 'may'], ['may', 'be'], ['be', 'used'], ['used', 'to'], ['to', 'compare'], ['compare', 'object'], ['object', 'identities'], ['identities', '(comparison'], ['(comparison', 'by'], ['by', 'reference).'], ['reference).', 'In'], ['In', 'Python,'], ['Python,', 'comparisons'], ['comparisons', 'may'], ['may', 'be'], ['be', 'chained,'], ['chained,', 'for'], ['for', 'example'], ['example', 'a'], ['a', '<='], ['<=', 'b'], ['b', '<='], ['<=', 'c.\\nPython'], ['c.\\nPython', 'uses'], ['uses', 'the'], ['the', 'words'], ['words', 'and,'], ['and,', 'or,'], ['or,', 'not'], ['not', 'for'], ['for', 'its'], ['its', 'boolean'], ['boolean', 'operators'], ['operators', 'rather'], ['rather', 'than'], ['than', 'the'], ['the', 'symbolic'], ['symbolic', '&&,'], ['&&,', '||,'], ['||,', '!'], ['!', 'used'], ['used', 'in'], ['in', 'Java'], ['Java', 'and'], ['and', 'C.\\nPython'], ['C.\\nPython', 'has'], ['has', 'a'], ['a', 'type'], ['type', 'of'], ['of', 'expression'], ['expression', 'termed'], ['termed', 'a'], ['a', 'list'], ['list', 'comprehension.'], ['comprehension.', 'Python'], ['Python', '2.4'], ['2.4', 'extended'], ['extended', 'list'], ['list', 'comprehensions'], ['comprehensions', 'into'], ['into', 'a'], ['a', 'more'], ['more', 'general'], ['general', 'expression'], ['expression', 'termed'], ['termed', 'a'], ['a', 'generator'], ['generator', 'expression.[46]\\nAnonymous'], ['expression.[46]\\nAnonymous', 'functions'], ['functions', 'are'], ['are', 'implemented'], ['implemented', 'using'], ['using', 'lambda'], ['lambda', 'expressions;'], ['expressions;', 'however,'], ['however,', 'these'], ['these', 'are'], ['are', 'limited'], ['limited', 'in'], ['in', 'that'], ['that', 'the'], ['the', 'body'], ['body', 'can'], ['can', 'only'], ['only', 'be'], ['be', 'one'], ['one', 'expression.\\nConditional'], ['expression.\\nConditional', 'expressions'], ['expressions', 'in'], ['in', 'Python'], ['Python', 'are'], ['are', 'written'], ['written', 'as'], ['as', 'x'], ['x', 'if'], ['if', 'c'], ['c', 'else'], ['else', 'y[68]'], ['y[68]', '(different'], ['(different', 'in'], ['in', 'order'], ['order', 'of'], ['of', 'operands'], ['operands', 'from'], ['from', 'the'], ['the', 'c'], ['c', '?'], ['?', 'x'], ['x', ':'], [':', 'y'], ['y', 'operator'], ['operator', 'common'], ['common', 'to'], ['to', 'many'], ['many', 'other'], ['other', 'languages).\\nPython'], ['languages).\\nPython', 'makes'], ['makes', 'a'], ['a', 'distinction'], ['distinction', 'between'], ['between', 'lists'], ['lists', 'and'], ['and', 'tuples.'], ['tuples.', 'Lists'], ['Lists', 'are'], ['are', 'written'], ['written', 'as'], ['as', '[1,'], ['[1,', '2,'], ['2,', '3],'], ['3],', 'are'], ['are', 'mutable,'], ['mutable,', 'and'], ['and', 'cannot'], ['cannot', 'be'], ['be', 'used'], ['used', 'as'], ['as', 'the'], ['the', 'keys'], ['keys', 'of'], ['of', 'dictionaries'], ['dictionaries', '(dictionary'], ['(dictionary', 'keys'], ['keys', 'must'], ['must', 'be'], ['be', 'immutable'], ['immutable', 'in'], ['in', 'Python).'], ['Python).', 'Tuples'], ['Tuples', 'are'], ['are', 'written'], ['written', 'as'], ['as', '(1,'], ['(1,', '2,'], ['2,', '3),'], ['3),', 'are'], ['are', 'immutable'], ['immutable', 'and'], ['and', 'thus'], ['thus', 'can'], ['can', 'be'], ['be', 'used'], ['used', 'as'], ['as', 'the'], ['the', 'keys'], ['keys', 'of'], ['of', 'dictionaries,'], ['dictionaries,', 'provided'], ['provided', 'all'], ['all', 'elements'], ['elements', 'of'], ['of', 'the'], ['the', 'tuple'], ['tuple', 'are'], ['are', 'immutable.'], ['immutable.', 'The'], ['The', '+'], ['+', 'operator'], ['operator', 'can'], ['can', 'be'], ['be', 'used'], ['used', 'to'], ['to', 'concatenate'], ['concatenate', 'two'], ['two', 'tuples,'], ['tuples,', 'which'], ['which', 'does'], ['does', 'not'], ['not', 'directly'], ['directly', 'modify'], ['modify', 'their'], ['their', 'contents,'], ['contents,', 'but'], ['but', 'rather'], ['rather', 'produces'], ['produces', 'a'], ['a', 'new'], ['new', 'tuple'], ['tuple', 'containing'], ['containing', 'the'], ['the', 'elements'], ['elements', 'of'], ['of', 'both'], ['both', 'provided'], ['provided', 'tuples.'], ['tuples.', 'Thus,'], ['Thus,', 'given'], ['given', 'the'], ['the', 'variable'], ['variable', 't'], ['t', 'initially'], ['initially', 'equal'], ['equal', 'to'], ['to', '(1,'], ['(1,', '2,'], ['2,', '3),'], ['3),', 'executing'], ['executing', 't'], ['t', '='], ['=', 't'], ['t', '+'], ['+', '(4,'], ['(4,', '5)'], ['5)', 'first'], ['first', 'evaluates'], ['evaluates', 't'], ['t', '+'], ['+', '(4,'], ['(4,', '5),'], ['5),', 'which'], ['which', 'yields'], ['yields', '(1,'], ['(1,', '2,'], ['2,', '3,'], ['3,', '4,'], ['4,', '5),'], ['5),', 'which'], ['which', 'is'], ['is', 'then'], ['then', 'assigned'], ['assigned', 'back'], ['back', 'to'], ['to', 't,'], ['t,', 'thereby'], ['thereby', 'effectively'], ['effectively', '\"modifying'], ['\"modifying', 'the'], ['the', 'contents\"'], ['contents\"', 'of'], ['of', 't,'], ['t,', 'while'], ['while', 'conforming'], ['conforming', 'to'], ['to', 'the'], ['the', 'immutable'], ['immutable', 'nature'], ['nature', 'of'], ['of', 'tuple'], ['tuple', 'objects.'], ['objects.', 'Parentheses'], ['Parentheses', 'are'], ['are', 'optional'], ['optional', 'for'], ['for', 'tuples'], ['tuples', 'in'], ['in', 'unambiguous'], ['unambiguous', 'contexts.[69]\\nPython'], ['contexts.[69]\\nPython', 'features'], ['features', 'sequence'], ['sequence', 'unpacking'], ['unpacking', 'where'], ['where', 'multiple'], ['multiple', 'expressions,'], ['expressions,', 'each'], ['each', 'evaluating'], ['evaluating', 'to'], ['to', 'anything'], ['anything', 'that'], ['that', 'can'], ['can', 'be'], ['be', 'assigned'], ['assigned', 'to'], ['to', '(a'], ['(a', 'variable,'], ['variable,', 'a'], ['a', 'writable'], ['writable', 'property,'], ['property,', 'etc),'], ['etc),', 'are'], ['are', 'associated'], ['associated', 'in'], ['in', 'the'], ['the', 'identical'], ['identical', 'manner'], ['manner', 'to'], ['to', 'that'], ['that', 'forming'], ['forming', 'tuple'], ['tuple', 'literals'], ['literals', 'and,'], ['and,', 'as'], ['as', 'a'], ['a', 'whole,'], ['whole,', 'are'], ['are', 'put'], ['put', 'on'], ['on', 'the'], ['the', 'left'], ['left', 'hand'], ['hand', 'side'], ['side', 'of'], ['of', 'the'], ['the', 'equal'], ['equal', 'sign'], ['sign', 'in'], ['in', 'an'], ['an', 'assignment'], ['assignment', 'statement.'], ['statement.', 'The'], ['The', 'statement'], ['statement', 'expects'], ['expects', 'an'], ['an', 'iterable'], ['iterable', 'object'], ['object', 'on'], ['on', 'the'], ['the', 'right'], ['right', 'hand'], ['hand', 'side'], ['side', 'of'], ['of', 'the'], ['the', 'equal'], ['equal', 'sign'], ['sign', 'that'], ['that', 'produces'], ['produces', 'the'], ['the', 'same'], ['same', 'number'], ['number', 'of'], ['of', 'values'], ['values', 'as'], ['as', 'the'], ['the', 'provided'], ['provided', 'writable'], ['writable', 'expressions'], ['expressions', 'when'], ['when', 'iterated'], ['iterated', 'through,'], ['through,', 'and'], ['and', 'will'], ['will', 'iterate'], ['iterate', 'through'], ['through', 'it,'], ['it,', 'assigning'], ['assigning', 'each'], ['each', 'of'], ['of', 'the'], ['the', 'produced'], ['produced', 'values'], ['values', 'to'], ['to', 'the'], ['the', 'corresponding'], ['corresponding', 'expression'], ['expression', 'on'], ['on', 'the'], ['the', 'left.[citation'], ['left.[citation', 'needed]\\nPython'], ['needed]\\nPython', 'has'], ['has', 'a'], ['a', '\"string'], ['\"string', 'format\"'], ['format\"', 'operator'], ['operator', '%.'], ['%.', 'This'], ['This', 'functions'], ['functions', 'analogous'], ['analogous', 'to'], ['to', 'printf'], ['printf', 'format'], ['format', 'strings'], ['strings', 'in'], ['in', 'C,'], ['C,', 'e.g.'], ['e.g.', '\"spam=%s'], ['\"spam=%s', 'eggs=%d\"\\xa0%'], ['eggs=%d\"\\xa0%', '(\"blah\",'], ['(\"blah\",', '2)'], ['2)', 'evaluates'], ['evaluates', 'to'], ['to', '\"spam=blah'], ['\"spam=blah', 'eggs=2\".'], ['eggs=2\".', 'In'], ['In', 'Python'], ['Python', '3'], ['3', 'and'], ['and', '2.6+,'], ['2.6+,', 'this'], ['this', 'was'], ['was', 'supplemented'], ['supplemented', 'by'], ['by', 'the'], ['the', 'format()'], ['format()', 'method'], ['method', 'of'], ['of', 'the'], ['the', 'str'], ['str', 'class,'], ['class,', 'e.g.'], ['e.g.', '\"spam={0}'], ['\"spam={0}', 'eggs={1}\".format(\"blah\",'], ['eggs={1}\".format(\"blah\",', '2),'], ['2),', 'Python'], ['Python', '3.6'], ['3.6', 'added'], ['added', '\"f-strings\":'], ['\"f-strings\":', 'f\\'spam={\"blah\"}'], ['f\\'spam={\"blah\"}', \"eggs={2}'.[70]\\nPython\"], [\"eggs={2}'.[70]\\nPython\", 'has'], ['has', 'various'], ['various', 'kinds'], ['kinds', 'of'], ['of', 'string'], ['string', 'literals:\\n\\nStrings'], ['literals:\\n\\nStrings', 'delimited'], ['delimited', 'by'], ['by', 'single'], ['single', 'or'], ['or', 'double'], ['double', 'quote'], ['quote', 'marks.'], ['marks.', 'Unlike'], ['Unlike', 'in'], ['in', 'Unix'], ['Unix', 'shells,'], ['shells,', 'Perl'], ['Perl', 'and'], ['and', 'Perl-influenced'], ['Perl-influenced', 'languages,'], ['languages,', 'single'], ['single', 'quote'], ['quote', 'marks'], ['marks', 'and'], ['and', 'double'], ['double', 'quote'], ['quote', 'marks'], ['marks', 'function'], ['function', 'identically.'], ['identically.', 'Both'], ['Both', 'kinds'], ['kinds', 'of'], ['of', 'string'], ['string', 'use'], ['use', 'the'], ['the', 'backslash'], ['backslash', '(\\\\)'], ['(\\\\)', 'as'], ['as', 'an'], ['an', 'escape'], ['escape', 'character.'], ['character.', 'String'], ['String', 'interpolation'], ['interpolation', 'became'], ['became', 'available'], ['available', 'in'], ['in', 'Python'], ['Python', '3.6'], ['3.6', 'as'], ['as', '\"formatted'], ['\"formatted', 'string'], ['string', 'literals\".[70]\\nTriple-quoted'], ['literals\".[70]\\nTriple-quoted', 'strings,'], ['strings,', 'which'], ['which', 'begin'], ['begin', 'and'], ['and', 'end'], ['end', 'with'], ['with', 'a'], ['a', 'series'], ['series', 'of'], ['of', 'three'], ['three', 'single'], ['single', 'or'], ['or', 'double'], ['double', 'quote'], ['quote', 'marks.'], ['marks.', 'They'], ['They', 'may'], ['may', 'span'], ['span', 'multiple'], ['multiple', 'lines'], ['lines', 'and'], ['and', 'function'], ['function', 'like'], ['like', 'here'], ['here', 'documents'], ['documents', 'in'], ['in', 'shells,'], ['shells,', 'Perl'], ['Perl', 'and'], ['and', 'Ruby.\\nRaw'], ['Ruby.\\nRaw', 'string'], ['string', 'varieties,'], ['varieties,', 'denoted'], ['denoted', 'by'], ['by', 'prefixing'], ['prefixing', 'the'], ['the', 'string'], ['string', 'literal'], ['literal', 'with'], ['with', 'an'], ['an', 'r.'], ['r.', 'Escape'], ['Escape', 'sequences'], ['sequences', 'are'], ['are', 'not'], ['not', 'interpreted;'], ['interpreted;', 'hence'], ['hence', 'raw'], ['raw', 'strings'], ['strings', 'are'], ['are', 'useful'], ['useful', 'where'], ['where', 'literal'], ['literal', 'backslashes'], ['backslashes', 'are'], ['are', 'common,'], ['common,', 'such'], ['such', 'as'], ['as', 'regular'], ['regular', 'expressions'], ['expressions', 'and'], ['and', 'Windows-style'], ['Windows-style', 'paths.'], ['paths.', 'Compare'], ['Compare', '\"@-quoting\"'], ['\"@-quoting\"', 'in'], ['in', 'C#.\\n\\n\\nPython'], ['C#.\\n\\n\\nPython', 'has'], ['has', 'array'], ['array', 'index'], ['index', 'and'], ['and', 'array'], ['array', 'slicing'], ['slicing', 'expressions'], ['expressions', 'on'], ['on', 'lists,'], ['lists,', 'denoted'], ['denoted', 'as'], ['as', 'a[key],'], ['a[key],', 'a[start:stop]'], ['a[start:stop]', 'or'], ['or', 'a[start:stop:step].'], ['a[start:stop:step].', 'Indexes'], ['Indexes', 'are'], ['are', 'zero-based,'], ['zero-based,', 'and'], ['and', 'negative'], ['negative', 'indexes'], ['indexes', 'are'], ['are', 'relative'], ['relative', 'to'], ['to', 'the'], ['the', 'end.'], ['end.', 'Slices'], ['Slices', 'take'], ['take', 'elements'], ['elements', 'from'], ['from', 'the'], ['the', 'start'], ['start', 'index'], ['index', 'up'], ['up', 'to,'], ['to,', 'but'], ['but', 'not'], ['not', 'including,'], ['including,', 'the'], ['the', 'stop'], ['stop', 'index.'], ['index.', 'The'], ['The', 'third'], ['third', 'slice'], ['slice', 'parameter,'], ['parameter,', 'called'], ['called', 'step'], ['step', 'or'], ['or', 'stride,'], ['stride,', 'allows'], ['allows', 'elements'], ['elements', 'to'], ['to', 'be'], ['be', 'skipped'], ['skipped', 'and'], ['and', 'reversed.'], ['reversed.', 'Slice'], ['Slice', 'indexes'], ['indexes', 'may'], ['may', 'be'], ['be', 'omitted,'], ['omitted,', 'for'], ['for', 'example'], ['example', 'a[:]'], ['a[:]', 'returns'], ['returns', 'a'], ['a', 'copy'], ['copy', 'of'], ['of', 'the'], ['the', 'entire'], ['entire', 'list.'], ['list.', 'Each'], ['Each', 'element'], ['element', 'of'], ['of', 'a'], ['a', 'slice'], ['slice', 'is'], ['is', 'a'], ['a', 'shallow'], ['shallow', 'copy.\\n\\nIn'], ['copy.\\n\\nIn', 'Python,'], ['Python,', 'a'], ['a', 'distinction'], ['distinction', 'between'], ['between', 'expressions'], ['expressions', 'and'], ['and', 'statements'], ['statements', 'is'], ['is', 'rigidly'], ['rigidly', 'enforced,'], ['enforced,', 'in'], ['in', 'contrast'], ['contrast', 'to'], ['to', 'languages'], ['languages', 'such'], ['such', 'as'], ['as', 'Common'], ['Common', 'Lisp,'], ['Lisp,', 'Scheme,'], ['Scheme,', 'or'], ['or', 'Ruby.'], ['Ruby.', 'This'], ['This', 'leads'], ['leads', 'to'], ['to', 'duplicating'], ['duplicating', 'some'], ['some', 'functionality.'], ['functionality.', 'For'], ['For', 'example:\\n\\nList'], ['example:\\n\\nList', 'comprehensions'], ['comprehensions', 'vs.'], ['vs.', 'for-loops\\nConditional'], ['for-loops\\nConditional', 'expressions'], ['expressions', 'vs.'], ['vs.', 'if'], ['if', 'blocks\\nThe'], ['blocks\\nThe', 'eval()'], ['eval()', 'vs.'], ['vs.', 'exec()'], ['exec()', 'built-in'], ['built-in', 'functions'], ['functions', '(in'], ['(in', 'Python'], ['Python', '2,'], ['2,', 'exec'], ['exec', 'is'], ['is', 'a'], ['a', 'statement);'], ['statement);', 'the'], ['the', 'former'], ['former', 'is'], ['is', 'for'], ['for', 'expressions,'], ['expressions,', 'the'], ['the', 'latter'], ['latter', 'is'], ['is', 'for'], ['for', 'statements.\\n\\nStatements'], ['statements.\\n\\nStatements', 'cannot'], ['cannot', 'be'], ['be', 'a'], ['a', 'part'], ['part', 'of'], ['of', 'an'], ['an', 'expression,'], ['expression,', 'so'], ['so', 'list'], ['list', 'and'], ['and', 'other'], ['other', 'comprehensions'], ['comprehensions', 'or'], ['or', 'lambda'], ['lambda', 'expressions,'], ['expressions,', 'all'], ['all', 'being'], ['being', 'expressions,'], ['expressions,', 'cannot'], ['cannot', 'contain'], ['contain', 'statements.'], ['statements.', 'A'], ['A', 'particular'], ['particular', 'case'], ['case', 'of'], ['of', 'this'], ['this', 'is'], ['is', 'that'], ['that', 'an'], ['an', 'assignment'], ['assignment', 'statement'], ['statement', 'such'], ['such', 'as'], ['as', 'a'], ['a', '='], ['=', '1'], ['1', 'cannot'], ['cannot', 'form'], ['form', 'part'], ['part', 'of'], ['of', 'the'], ['the', 'conditional'], ['conditional', 'expression'], ['expression', 'of'], ['of', 'a'], ['a', 'conditional'], ['conditional', 'statement.'], ['statement.', 'This'], ['This', 'has'], ['has', 'the'], ['the', 'advantage'], ['advantage', 'of'], ['of', 'avoiding'], ['avoiding', 'a'], ['a', 'classic'], ['classic', 'C'], ['C', 'error'], ['error', 'of'], ['of', 'mistaking'], ['mistaking', 'an'], ['an', 'assignment'], ['assignment', 'operator'], ['operator', '='], ['=', 'for'], ['for', 'an'], ['an', 'equality'], ['equality', 'operator'], ['operator', '=='], ['==', 'in'], ['in', 'conditions:'], ['conditions:', 'if'], ['if', '(c'], ['(c', '='], ['=', '1)'], ['1)', '{'], ['{', '...'], ['...', '}'], ['}', 'is'], ['is', 'syntactically'], ['syntactically', 'valid'], ['valid', '(but'], ['(but', 'probably'], ['probably', 'unintended)'], ['unintended)', 'C'], ['C', 'code'], ['code', 'but'], ['but', 'if'], ['if', 'c'], ['c', '='], ['=', '1:'], ['1:', '...'], ['...', 'causes'], ['causes', 'a'], ['a', 'syntax'], ['syntax', 'error'], ['error', 'in'], ['in', 'Python.\\nMethods[edit]\\nMethods'], ['Python.\\nMethods[edit]\\nMethods', 'on'], ['on', 'objects'], ['objects', 'are'], ['are', 'functions'], ['functions', 'attached'], ['attached', 'to'], ['to', 'the'], ['the', \"object's\"], [\"object's\", 'class;'], ['class;', 'the'], ['the', 'syntax'], ['syntax', 'instance.method(argument)'], ['instance.method(argument)', 'is,'], ['is,', 'for'], ['for', 'normal'], ['normal', 'methods'], ['methods', 'and'], ['and', 'functions,'], ['functions,', 'syntactic'], ['syntactic', 'sugar'], ['sugar', 'for'], ['for', 'Class.method(instance,'], ['Class.method(instance,', 'argument).'], ['argument).', 'Python'], ['Python', 'methods'], ['methods', 'have'], ['have', 'an'], ['an', 'explicit'], ['explicit', 'self'], ['self', 'parameter'], ['parameter', 'to'], ['to', 'access'], ['access', 'instance'], ['instance', 'data,'], ['data,', 'in'], ['in', 'contrast'], ['contrast', 'to'], ['to', 'the'], ['the', 'implicit'], ['implicit', 'self'], ['self', '(or'], ['(or', 'this)'], ['this)', 'in'], ['in', 'some'], ['some', 'other'], ['other', 'object-oriented'], ['object-oriented', 'programming'], ['programming', 'languages'], ['languages', '(e.g.,'], ['(e.g.,', 'C++,'], ['C++,', 'Java,'], ['Java,', 'Objective-C,'], ['Objective-C,', 'or'], ['or', 'Ruby).[71]\\nTyping[edit]\\nPython'], ['Ruby).[71]\\nTyping[edit]\\nPython', 'uses'], ['uses', 'duck'], ['duck', 'typing'], ['typing', 'and'], ['and', 'has'], ['has', 'typed'], ['typed', 'objects'], ['objects', 'but'], ['but', 'untyped'], ['untyped', 'variable'], ['variable', 'names.'], ['names.', 'Type'], ['Type', 'constraints'], ['constraints', 'are'], ['are', 'not'], ['not', 'checked'], ['checked', 'at'], ['at', 'compile'], ['compile', 'time;'], ['time;', 'rather,'], ['rather,', 'operations'], ['operations', 'on'], ['on', 'an'], ['an', 'object'], ['object', 'may'], ['may', 'fail,'], ['fail,', 'signifying'], ['signifying', 'that'], ['that', 'the'], ['the', 'given'], ['given', 'object'], ['object', 'is'], ['is', 'not'], ['not', 'of'], ['of', 'a'], ['a', 'suitable'], ['suitable', 'type.'], ['type.', 'Despite'], ['Despite', 'being'], ['being', 'dynamically'], ['dynamically', 'typed,'], ['typed,', 'Python'], ['Python', 'is'], ['is', 'strongly'], ['strongly', 'typed,'], ['typed,', 'forbidding'], ['forbidding', 'operations'], ['operations', 'that'], ['that', 'are'], ['are', 'not'], ['not', 'well-defined'], ['well-defined', '(for'], ['(for', 'example,'], ['example,', 'adding'], ['adding', 'a'], ['a', 'number'], ['number', 'to'], ['to', 'a'], ['a', 'string)'], ['string)', 'rather'], ['rather', 'than'], ['than', 'silently'], ['silently', 'attempting'], ['attempting', 'to'], ['to', 'make'], ['make', 'sense'], ['sense', 'of'], ['of', 'them.\\nPython'], ['them.\\nPython', 'allows'], ['allows', 'programmers'], ['programmers', 'to'], ['to', 'define'], ['define', 'their'], ['their', 'own'], ['own', 'types'], ['types', 'using'], ['using', 'classes,'], ['classes,', 'which'], ['which', 'are'], ['are', 'most'], ['most', 'often'], ['often', 'used'], ['used', 'for'], ['for', 'object-oriented'], ['object-oriented', 'programming.'], ['programming.', 'New'], ['New', 'instances'], ['instances', 'of'], ['of', 'classes'], ['classes', 'are'], ['are', 'constructed'], ['constructed', 'by'], ['by', 'calling'], ['calling', 'the'], ['the', 'class'], ['class', '(for'], ['(for', 'example,'], ['example,', 'SpamClass()'], ['SpamClass()', 'or'], ['or', 'EggsClass()),'], ['EggsClass()),', 'and'], ['and', 'the'], ['the', 'classes'], ['classes', 'are'], ['are', 'instances'], ['instances', 'of'], ['of', 'the'], ['the', 'metaclass'], ['metaclass', 'type'], ['type', '(itself'], ['(itself', 'an'], ['an', 'instance'], ['instance', 'of'], ['of', 'itself),'], ['itself),', 'allowing'], ['allowing', 'metaprogramming'], ['metaprogramming', 'and'], ['and', 'reflection.\\nBefore'], ['reflection.\\nBefore', 'version'], ['version', '3.0,'], ['3.0,', 'Python'], ['Python', 'had'], ['had', 'two'], ['two', 'kinds'], ['kinds', 'of'], ['of', 'classes:'], ['classes:', 'old-style'], ['old-style', 'and'], ['and', 'new-style.[72]'], ['new-style.[72]', 'The'], ['The', 'syntax'], ['syntax', 'of'], ['of', 'both'], ['both', 'styles'], ['styles', 'is'], ['is', 'the'], ['the', 'same,'], ['same,', 'the'], ['the', 'difference'], ['difference', 'being'], ['being', 'whether'], ['whether', 'the'], ['the', 'class'], ['class', 'object'], ['object', 'is'], ['is', 'inherited'], ['inherited', 'from,'], ['from,', 'directly'], ['directly', 'or'], ['or', 'indirectly'], ['indirectly', '(all'], ['(all', 'new-style'], ['new-style', 'classes'], ['classes', 'inherit'], ['inherit', 'from'], ['from', 'object'], ['object', 'and'], ['and', 'are'], ['are', 'instances'], ['instances', 'of'], ['of', 'type).'], ['type).', 'In'], ['In', 'versions'], ['versions', 'of'], ['of', 'Python'], ['Python', '2'], ['2', 'from'], ['from', 'Python'], ['Python', '2.2'], ['2.2', 'onwards,'], ['onwards,', 'both'], ['both', 'kinds'], ['kinds', 'of'], ['of', 'classes'], ['classes', 'can'], ['can', 'be'], ['be', 'used.'], ['used.', 'Old-style'], ['Old-style', 'classes'], ['classes', 'were'], ['were', 'eliminated'], ['eliminated', 'in'], ['in', 'Python'], ['Python', '3.0.\\nThe'], ['3.0.\\nThe', 'long'], ['long', 'term'], ['term', 'plan'], ['plan', 'is'], ['is', 'to'], ['to', 'support'], ['support', 'gradual'], ['gradual', 'typing[73]'], ['typing[73]', 'and'], ['and', 'from'], ['from', 'Python'], ['Python', '3.5,'], ['3.5,', 'the'], ['the', 'syntax'], ['syntax', 'of'], ['of', 'the'], ['the', 'language'], ['language', 'allows'], ['allows', 'specifying'], ['specifying', 'static'], ['static', 'types'], ['types', 'but'], ['but', 'they'], ['they', 'are'], ['are', 'not'], ['not', 'checked'], ['checked', 'in'], ['in', 'the'], ['the', 'default'], ['default', 'implementation,'], ['implementation,', 'CPython.'], ['CPython.', 'An'], ['An', 'experimental'], ['experimental', 'optional'], ['optional', 'static'], ['static', 'type'], ['type', 'checker'], ['checker', 'named'], ['named', 'mypy'], ['mypy', 'supports'], ['supports', 'compile-time'], ['compile-time', 'type'], ['type', 'checking.[74]\\n\\nSummary'], ['checking.[74]\\n\\nSummary', 'of'], ['of', 'Python'], ['Python', \"3's\"], [\"3's\", 'built-in'], ['built-in', 'types\\n\\nType\\nmutable\\nDescription\\nSyntax'], ['types\\n\\nType\\nmutable\\nDescription\\nSyntax', 'example\\n\\n\\nbool\\nimmutable\\nBoolean'], ['example\\n\\n\\nbool\\nimmutable\\nBoolean', 'value\\nTrue\\nFalse\\n\\n\\nbytearray\\nmutable\\nSequence'], ['value\\nTrue\\nFalse\\n\\n\\nbytearray\\nmutable\\nSequence', 'of'], ['of', \"bytes\\nbytearray(b'Some\"], [\"bytes\\nbytearray(b'Some\", 'ASCII\\')\\nbytearray(b\"Some'], ['ASCII\\')\\nbytearray(b\"Some', 'ASCII\")\\nbytearray([119,'], ['ASCII\")\\nbytearray([119,', '105,'], ['105,', '107,'], ['107,', '105])\\n\\n\\nbytes\\nimmutable\\nSequence'], ['105])\\n\\n\\nbytes\\nimmutable\\nSequence', 'of'], ['of', \"bytes\\nb'Some\"], [\"bytes\\nb'Some\", 'ASCII\\'\\nb\"Some'], ['ASCII\\'\\nb\"Some', 'ASCII\"\\nbytes([119,'], ['ASCII\"\\nbytes([119,', '105,'], ['105,', '107,'], ['107,', '105])\\n\\n\\ncomplex\\nimmutable\\nComplex'], ['105])\\n\\n\\ncomplex\\nimmutable\\nComplex', 'number'], ['number', 'with'], ['with', 'real'], ['real', 'and'], ['and', 'imaginary'], ['imaginary', 'parts\\n3+2.7j\\n\\n\\ndict\\nmutable\\nAssociative'], ['parts\\n3+2.7j\\n\\n\\ndict\\nmutable\\nAssociative', 'array'], ['array', '(or'], ['(or', 'dictionary)'], ['dictionary)', 'of'], ['of', 'key'], ['key', 'and'], ['and', 'value'], ['value', 'pairs;'], ['pairs;', 'can'], ['can', 'contain'], ['contain', 'mixed'], ['mixed', 'types'], ['types', '(keys'], ['(keys', 'and'], ['and', 'values),'], ['values),', 'keys'], ['keys', 'must'], ['must', 'be'], ['be', 'a'], ['a', 'hashable'], ['hashable', \"type\\n{'key1':\"], [\"type\\n{'key1':\", '1.0,'], ['1.0,', '3:'], ['3:', 'False}\\n\\n\\nellipsis\\n\\nAn'], ['False}\\n\\n\\nellipsis\\n\\nAn', 'ellipsis'], ['ellipsis', 'placeholder'], ['placeholder', 'to'], ['to', 'be'], ['be', 'used'], ['used', 'as'], ['as', 'an'], ['an', 'index'], ['index', 'in'], ['in', 'NumPy'], ['NumPy', 'arrays\\n...\\n\\n\\nfloat\\nimmutable\\nFloating'], ['arrays\\n...\\n\\n\\nfloat\\nimmutable\\nFloating', 'point'], ['point', 'number,'], ['number,', 'system-defined'], ['system-defined', 'precision\\n3.1415927\\n\\n\\nfrozenset\\nimmutable\\nUnordered'], ['precision\\n3.1415927\\n\\n\\nfrozenset\\nimmutable\\nUnordered', 'set,'], ['set,', 'contains'], ['contains', 'no'], ['no', 'duplicates;'], ['duplicates;', 'can'], ['can', 'contain'], ['contain', 'mixed'], ['mixed', 'types,'], ['types,', 'if'], ['if', 'hashable\\nfrozenset([4.0,'], ['hashable\\nfrozenset([4.0,', \"'string',\"], [\"'string',\", 'True])\\n\\n\\nint\\nimmutable\\nInteger'], ['True])\\n\\n\\nint\\nimmutable\\nInteger', 'of'], ['of', 'unlimited'], ['unlimited', 'magnitude[75]\\n42\\n\\n\\nlist\\nmutable\\nList,'], ['magnitude[75]\\n42\\n\\n\\nlist\\nmutable\\nList,', 'can'], ['can', 'contain'], ['contain', 'mixed'], ['mixed', 'types\\n[4.0,'], ['types\\n[4.0,', \"'string',\"], [\"'string',\", 'True]\\n\\n\\nset\\nmutable\\nUnordered'], ['True]\\n\\n\\nset\\nmutable\\nUnordered', 'set,'], ['set,', 'contains'], ['contains', 'no'], ['no', 'duplicates;'], ['duplicates;', 'can'], ['can', 'contain'], ['contain', 'mixed'], ['mixed', 'types,'], ['types,', 'if'], ['if', 'hashable\\n{4.0,'], ['hashable\\n{4.0,', \"'string',\"], [\"'string',\", 'True}\\n\\n\\nstr\\nimmutable\\nA'], ['True}\\n\\n\\nstr\\nimmutable\\nA', 'character'], ['character', 'string:'], ['string:', 'sequence'], ['sequence', 'of'], ['of', 'Unicode'], ['Unicode', 'codepoints\\n\\'Wikipedia\\'\\n\"Wikipedia\"\\n\"\"\"Spanning\\nmultiple\\nlines\"\"\"\\n\\n\\ntuple\\nimmutable\\nCan'], ['codepoints\\n\\'Wikipedia\\'\\n\"Wikipedia\"\\n\"\"\"Spanning\\nmultiple\\nlines\"\"\"\\n\\n\\ntuple\\nimmutable\\nCan', 'contain'], ['contain', 'mixed'], ['mixed', 'types\\n(4.0,'], ['types\\n(4.0,', \"'string',\"], [\"'string',\", 'True)But'], ['True)But', 'we'], ['we', 'can'], ['can', 'append'], ['append', 'elements'], ['elements', 'using'], ['using', '__add__'], ['__add__', '.\\na'], ['.\\na', '='], ['=', '(4.0,'], ['(4.0,', \"'string'\"], [\"'string'\", ','], [',', \"True).__add__(('hi'\"], [\"True).__add__(('hi'\", ',))\\nnow'], [',))\\nnow', 'a'], ['a', 'gives'], ['gives', '(4.0,'], ['(4.0,', \"'string',\"], [\"'string',\", 'True'], ['True', \",'hi')\\n\\n\\n\\nMathematics[edit]\\nPython\"], [\",'hi')\\n\\n\\n\\nMathematics[edit]\\nPython\", 'has'], ['has', 'the'], ['the', 'usual'], ['usual', 'C'], ['C', 'arithmetic'], ['arithmetic', 'operators'], ['operators', '(+,'], ['(+,', '-,'], ['-,', '*,'], ['*,', '/,'], ['/,', '%).'], ['%).', 'It'], ['It', 'also'], ['also', 'has'], ['has', '**'], ['**', 'for'], ['for', 'exponentiation,'], ['exponentiation,', 'e.g.'], ['e.g.', '5**3'], ['5**3', '=='], ['==', '125'], ['125', 'and'], ['and', '9**0.5'], ['9**0.5', '=='], ['==', '3.0,'], ['3.0,', 'and'], ['and', 'a'], ['a', 'new'], ['new', 'matrix'], ['matrix', 'multiply'], ['multiply', '@'], ['@', 'operator'], ['operator', 'is'], ['is', 'included'], ['included', 'in'], ['in', 'version'], ['version', '3.5.[76]'], ['3.5.[76]', 'Additionally,'], ['Additionally,', 'it'], ['it', 'has'], ['has', 'a'], ['a', 'unary'], ['unary', 'operator'], ['operator', '(~),'], ['(~),', 'which'], ['which', 'essentially'], ['essentially', 'inverts'], ['inverts', 'all'], ['all', 'the'], ['the', 'bytes'], ['bytes', 'of'], ['of', 'its'], ['its', 'one'], ['one', 'argument.'], ['argument.', 'For'], ['For', 'integers,'], ['integers,', 'this'], ['this', 'means'], ['means', '~x=-x-1.[77]'], ['~x=-x-1.[77]', 'Other'], ['Other', 'operators'], ['operators', 'include'], ['include', 'bitwise'], ['bitwise', 'shift'], ['shift', 'operators'], ['operators', 'x'], ['x', '<<'], ['<<', 'y,'], ['y,', 'which'], ['which', 'shifts'], ['shifts', 'x'], ['x', 'to'], ['to', 'the'], ['the', 'left'], ['left', 'y'], ['y', 'places,'], ['places,', 'the'], ['the', 'same'], ['same', 'as'], ['as', 'x*(2**y)'], ['x*(2**y)', ','], [',', 'and'], ['and', 'x'], ['x', '>>'], ['>>', 'y,'], ['y,', 'which'], ['which', 'shifts'], ['shifts', 'x'], ['x', 'to'], ['to', 'the'], ['the', 'right'], ['right', 'y'], ['y', 'places,'], ['places,', 'the'], ['the', 'same'], ['same', 'as'], ['as', 'x/(2**y)'], ['x/(2**y)', '.[78]\\nThe'], ['.[78]\\nThe', 'behavior'], ['behavior', 'of'], ['of', 'division'], ['division', 'has'], ['has', 'changed'], ['changed', 'significantly'], ['significantly', 'over'], ['over', 'time:[79]\\n\\nPython'], ['time:[79]\\n\\nPython', '2.1'], ['2.1', 'and'], ['and', 'earlier'], ['earlier', 'use'], ['use', 'the'], ['the', 'C'], ['C', 'division'], ['division', 'behavior.'], ['behavior.', 'The'], ['The', '/'], ['/', 'operator'], ['operator', 'is'], ['is', 'integer'], ['integer', 'division'], ['division', 'if'], ['if', 'both'], ['both', 'operands'], ['operands', 'are'], ['are', 'integers,'], ['integers,', 'and'], ['and', 'floating-point'], ['floating-point', 'division'], ['division', 'otherwise.'], ['otherwise.', 'Integer'], ['Integer', 'division'], ['division', 'rounds'], ['rounds', 'towards'], ['towards', '0,'], ['0,', 'e.g.'], ['e.g.', '7/3'], ['7/3', '=='], ['==', '2'], ['2', 'and'], ['and', '-7/3'], ['-7/3', '=='], ['==', '-2.\\nPython'], ['-2.\\nPython', '2.2'], ['2.2', 'changes'], ['changes', 'integer'], ['integer', 'division'], ['division', 'to'], ['to', 'round'], ['round', 'towards'], ['towards', 'negative'], ['negative', 'infinity,'], ['infinity,', 'e.g.'], ['e.g.', '7/3'], ['7/3', '=='], ['==', '2'], ['2', 'and'], ['and', '-7/3'], ['-7/3', '=='], ['==', '-3.'], ['-3.', 'The'], ['The', 'floor'], ['floor', 'division'], ['division', '//'], ['//', 'operator'], ['operator', 'is'], ['is', 'introduced.'], ['introduced.', 'So'], ['So', '7//3'], ['7//3', '=='], ['==', '2,'], ['2,', '-7//3'], ['-7//3', '=='], ['==', '-3,'], ['-3,', '7.5//3'], ['7.5//3', '=='], ['==', '2.0'], ['2.0', 'and'], ['and', '-7.5//3'], ['-7.5//3', '=='], ['==', '-3.0.'], ['-3.0.', 'Adding'], ['Adding', 'from'], ['from', '__future__'], ['__future__', 'import'], ['import', 'division'], ['division', 'causes'], ['causes', 'a'], ['a', 'module'], ['module', 'to'], ['to', 'use'], ['use', 'Python'], ['Python', '3.0'], ['3.0', 'rules'], ['rules', 'for'], ['for', 'division'], ['division', '(see'], ['(see', 'next).\\nPython'], ['next).\\nPython', '3.0'], ['3.0', 'changes'], ['changes', '/'], ['/', 'to'], ['to', 'be'], ['be', 'always'], ['always', 'floating-point'], ['floating-point', 'division.'], ['division.', 'In'], ['In', 'Python'], ['Python', 'terms,'], ['terms,', 'the'], ['the', 'pre-3.0'], ['pre-3.0', '/'], ['/', 'is'], ['is', 'classic'], ['classic', 'division,'], ['division,', 'the'], ['the', 'version-3.0'], ['version-3.0', '/'], ['/', 'is'], ['is', 'real'], ['real', 'division,'], ['division,', 'and'], ['and', '//'], ['//', 'is'], ['is', 'floor'], ['floor', 'division.\\n\\nRounding'], ['division.\\n\\nRounding', 'towards'], ['towards', 'negative'], ['negative', 'infinity,'], ['infinity,', 'though'], ['though', 'different'], ['different', 'from'], ['from', 'most'], ['most', 'languages,'], ['languages,', 'adds'], ['adds', 'consistency.'], ['consistency.', 'For'], ['For', 'instance,'], ['instance,', 'it'], ['it', 'means'], ['means', 'that'], ['that', 'the'], ['the', 'equation'], ['equation', '(a'], ['(a', '+'], ['+', 'b)//b'], ['b)//b', '=='], ['==', 'a//b'], ['a//b', '+'], ['+', '1'], ['1', 'is'], ['is', 'always'], ['always', 'true.'], ['true.', 'It'], ['It', 'also'], ['also', 'means'], ['means', 'that'], ['that', 'the'], ['the', 'equation'], ['equation', 'b*(a//b)'], ['b*(a//b)', '+'], ['+', 'a%b'], ['a%b', '=='], ['==', 'a'], ['a', 'is'], ['is', 'valid'], ['valid', 'for'], ['for', 'both'], ['both', 'positive'], ['positive', 'and'], ['and', 'negative'], ['negative', 'values'], ['values', 'of'], ['of', 'a.'], ['a.', 'However,'], ['However,', 'maintaining'], ['maintaining', 'the'], ['the', 'validity'], ['validity', 'of'], ['of', 'this'], ['this', 'equation'], ['equation', 'means'], ['means', 'that'], ['that', 'while'], ['while', 'the'], ['the', 'result'], ['result', 'of'], ['of', 'a%b'], ['a%b', 'is,'], ['is,', 'as'], ['as', 'expected,'], ['expected,', 'in'], ['in', 'the'], ['the', 'half-open'], ['half-open', 'interval'], ['interval', '[0,'], ['[0,', 'b),'], ['b),', 'where'], ['where', 'b'], ['b', 'is'], ['is', 'a'], ['a', 'positive'], ['positive', 'integer,'], ['integer,', 'it'], ['it', 'has'], ['has', 'to'], ['to', 'lie'], ['lie', 'in'], ['in', 'the'], ['the', 'interval'], ['interval', '(b,'], ['(b,', '0]'], ['0]', 'when'], ['when', 'b'], ['b', 'is'], ['is', 'negative.[80]\\nPython'], ['negative.[80]\\nPython', 'provides'], ['provides', 'a'], ['a', 'round'], ['round', 'function'], ['function', 'for'], ['for', 'rounding'], ['rounding', 'a'], ['a', 'float'], ['float', 'to'], ['to', 'the'], ['the', 'nearest'], ['nearest', 'integer.'], ['integer.', 'For'], ['For', 'tie-breaking,'], ['tie-breaking,', 'versions'], ['versions', 'before'], ['before', '3'], ['3', 'use'], ['use', 'round-away-from-zero:'], ['round-away-from-zero:', 'round(0.5)'], ['round(0.5)', 'is'], ['is', '1.0,'], ['1.0,', 'round(-0.5)'], ['round(-0.5)', 'is'], ['is', '−1.0.[81]'], ['−1.0.[81]', 'Python'], ['Python', '3'], ['3', 'uses'], ['uses', 'round'], ['round', 'to'], ['to', 'even:'], ['even:', 'round(1.5)'], ['round(1.5)', 'is'], ['is', '2,'], ['2,', 'round(2.5)'], ['round(2.5)', 'is'], ['is', '2.[82]\\nPython'], ['2.[82]\\nPython', 'allows'], ['allows', 'boolean'], ['boolean', 'expressions'], ['expressions', 'with'], ['with', 'multiple'], ['multiple', 'equality'], ['equality', 'relations'], ['relations', 'in'], ['in', 'a'], ['a', 'manner'], ['manner', 'that'], ['that', 'is'], ['is', 'consistent'], ['consistent', 'with'], ['with', 'general'], ['general', 'use'], ['use', 'in'], ['in', 'mathematics.'], ['mathematics.', 'For'], ['For', 'example,'], ['example,', 'the'], ['the', 'expression'], ['expression', 'a'], ['a', '<'], ['<', 'b'], ['b', '<'], ['<', 'c'], ['c', 'tests'], ['tests', 'whether'], ['whether', 'a'], ['a', 'is'], ['is', 'less'], ['less', 'than'], ['than', 'b'], ['b', 'and'], ['and', 'b'], ['b', 'is'], ['is', 'less'], ['less', 'than'], ['than', 'c.'], ['c.', 'C-derived'], ['C-derived', 'languages'], ['languages', 'interpret'], ['interpret', 'this'], ['this', 'expression'], ['expression', 'differently:'], ['differently:', 'in'], ['in', 'C,'], ['C,', 'the'], ['the', 'expression'], ['expression', 'would'], ['would', 'first'], ['first', 'evaluate'], ['evaluate', 'a'], ['a', '<'], ['<', 'b,'], ['b,', 'resulting'], ['resulting', 'in'], ['in', '0'], ['0', 'or'], ['or', '1,'], ['1,', 'and'], ['and', 'that'], ['that', 'result'], ['result', 'would'], ['would', 'then'], ['then', 'be'], ['be', 'compared'], ['compared', 'with'], ['with', 'c.[83][page\\xa0needed]\\nPython'], ['c.[83][page\\xa0needed]\\nPython', 'has'], ['has', 'extensive'], ['extensive', 'built-in'], ['built-in', 'support'], ['support', 'for'], ['for', 'arbitrary'], ['arbitrary', 'precision'], ['precision', 'arithmetic.'], ['arithmetic.', 'Integers'], ['Integers', 'are'], ['are', 'transparently'], ['transparently', 'switched'], ['switched', 'from'], ['from', 'the'], ['the', 'machine-supported'], ['machine-supported', 'maximum'], ['maximum', 'fixed-precision'], ['fixed-precision', '(usually'], ['(usually', '32'], ['32', 'or'], ['or', '64'], ['64', 'bits),'], ['bits),', 'belonging'], ['belonging', 'to'], ['to', 'the'], ['the', 'python'], ['python', 'type'], ['type', 'int,'], ['int,', 'to'], ['to', 'arbitrary'], ['arbitrary', 'precision,'], ['precision,', 'belonging'], ['belonging', 'to'], ['to', 'the'], ['the', 'python'], ['python', 'type'], ['type', 'long,'], ['long,', 'where'], ['where', 'needed.'], ['needed.', 'The'], ['The', 'latter'], ['latter', 'have'], ['have', 'an'], ['an', '\"L\"'], ['\"L\"', 'suffix'], ['suffix', 'in'], ['in', 'their'], ['their', 'textual'], ['textual', 'representation.[84]'], ['representation.[84]', '(In'], ['(In', 'Python'], ['Python', '3,'], ['3,', 'the'], ['the', 'distinction'], ['distinction', 'between'], ['between', 'the'], ['the', 'int'], ['int', 'and'], ['and', 'long'], ['long', 'types'], ['types', 'was'], ['was', 'eliminated;'], ['eliminated;', 'this'], ['this', 'behavior'], ['behavior', 'is'], ['is', 'now'], ['now', 'entirely'], ['entirely', 'contained'], ['contained', 'by'], ['by', 'the'], ['the', 'int'], ['int', 'class.)'], ['class.)', 'The'], ['The', 'Decimal'], ['Decimal', 'type/class'], ['type/class', 'in'], ['in', 'module'], ['module', 'decimal'], ['decimal', '(since'], ['(since', 'version'], ['version', '2.4)'], ['2.4)', 'provides'], ['provides', 'decimal'], ['decimal', 'floating'], ['floating', 'point'], ['point', 'numbers'], ['numbers', 'to'], ['to', 'arbitrary'], ['arbitrary', 'precision'], ['precision', 'and'], ['and', 'several'], ['several', 'rounding'], ['rounding', 'modes.[85]'], ['modes.[85]', 'The'], ['The', 'Fraction'], ['Fraction', 'type'], ['type', 'in'], ['in', 'module'], ['module', 'fractions'], ['fractions', '(since'], ['(since', 'version'], ['version', '2.6)'], ['2.6)', 'provides'], ['provides', 'arbitrary'], ['arbitrary', 'precision'], ['precision', 'for'], ['for', 'rational'], ['rational', 'numbers.[86]\\nDue'], ['numbers.[86]\\nDue', 'to'], ['to', \"Python's\"], [\"Python's\", 'extensive'], ['extensive', 'mathematics'], ['mathematics', 'library,'], ['library,', 'and'], ['and', 'the'], ['the', 'third-party'], ['third-party', 'library'], ['library', 'NumPy'], ['NumPy', 'that'], ['that', 'further'], ['further', 'extends'], ['extends', 'the'], ['the', 'native'], ['native', 'capabilities,'], ['capabilities,', 'it'], ['it', 'is'], ['is', 'frequently'], ['frequently', 'used'], ['used', 'as'], ['as', 'a'], ['a', 'scientific'], ['scientific', 'scripting'], ['scripting', 'language'], ['language', 'to'], ['to', 'aid'], ['aid', 'in'], ['in', 'problems'], ['problems', 'such'], ['such', 'as'], ['as', 'numerical'], ['numerical', 'data'], ['data', 'processing'], ['processing', 'and'], ['and', \"manipulation.\\nLibraries[edit]\\nPython's\"], [\"manipulation.\\nLibraries[edit]\\nPython's\", 'large'], ['large', 'standard'], ['standard', 'library,'], ['library,', 'commonly'], ['commonly', 'cited'], ['cited', 'as'], ['as', 'one'], ['one', 'of'], ['of', 'its'], ['its', 'greatest'], ['greatest', 'strengths,[87]'], ['strengths,[87]', 'provides'], ['provides', 'tools'], ['tools', 'suited'], ['suited', 'to'], ['to', 'many'], ['many', 'tasks.'], ['tasks.', 'For'], ['For', 'Internet-facing'], ['Internet-facing', 'applications,'], ['applications,', 'many'], ['many', 'standard'], ['standard', 'formats'], ['formats', 'and'], ['and', 'protocols'], ['protocols', 'such'], ['such', 'as'], ['as', 'MIME'], ['MIME', 'and'], ['and', 'HTTP'], ['HTTP', 'are'], ['are', 'supported.'], ['supported.', 'It'], ['It', 'includes'], ['includes', 'modules'], ['modules', 'for'], ['for', 'creating'], ['creating', 'graphical'], ['graphical', 'user'], ['user', 'interfaces,'], ['interfaces,', 'connecting'], ['connecting', 'to'], ['to', 'relational'], ['relational', 'databases,'], ['databases,', 'generating'], ['generating', 'pseudorandom'], ['pseudorandom', 'numbers,'], ['numbers,', 'arithmetic'], ['arithmetic', 'with'], ['with', 'arbitrary'], ['arbitrary', 'precision'], ['precision', 'decimals,[88]'], ['decimals,[88]', 'manipulating'], ['manipulating', 'regular'], ['regular', 'expressions,'], ['expressions,', 'and'], ['and', 'unit'], ['unit', 'testing.\\nSome'], ['testing.\\nSome', 'parts'], ['parts', 'of'], ['of', 'the'], ['the', 'standard'], ['standard', 'library'], ['library', 'are'], ['are', 'covered'], ['covered', 'by'], ['by', 'specifications'], ['specifications', '(for'], ['(for', 'example,'], ['example,', 'the'], ['the', 'Web'], ['Web', 'Server'], ['Server', 'Gateway'], ['Gateway', 'Interface'], ['Interface', '(WSGI)'], ['(WSGI)', 'implementation'], ['implementation', 'wsgiref'], ['wsgiref', 'follows'], ['follows', 'PEP'], ['PEP', '333[89]),'], ['333[89]),', 'but'], ['but', 'most'], ['most', 'modules'], ['modules', 'are'], ['are', 'not.'], ['not.', 'They'], ['They', 'are'], ['are', 'specified'], ['specified', 'by'], ['by', 'their'], ['their', 'code,'], ['code,', 'internal'], ['internal', 'documentation,'], ['documentation,', 'and'], ['and', 'test'], ['test', 'suites'], ['suites', '(if'], ['(if', 'supplied).'], ['supplied).', 'However,'], ['However,', 'because'], ['because', 'most'], ['most', 'of'], ['of', 'the'], ['the', 'standard'], ['standard', 'library'], ['library', 'is'], ['is', 'cross-platform'], ['cross-platform', 'Python'], ['Python', 'code,'], ['code,', 'only'], ['only', 'a'], ['a', 'few'], ['few', 'modules'], ['modules', 'need'], ['need', 'altering'], ['altering', 'or'], ['or', 'rewriting'], ['rewriting', 'for'], ['for', 'variant'], ['variant', 'implementations.\\nAs'], ['implementations.\\nAs', 'of'], ['of', 'September'], ['September', '2017,[update]'], ['2017,[update]', 'the'], ['the', 'Python'], ['Python', 'Package'], ['Package', 'Index,'], ['Index,', 'the'], ['the', 'official'], ['official', 'repository'], ['repository', 'for'], ['for', 'third-party'], ['third-party', 'Python'], ['Python', 'software,'], ['software,', 'contains'], ['contains', 'over'], ['over', '117,000[90]'], ['117,000[90]', 'packages'], ['packages', 'with'], ['with', 'a'], ['a', 'wide'], ['wide', 'range'], ['range', 'of'], ['of', 'functionality,'], ['functionality,', 'including:\\n\\nGraphical'], ['including:\\n\\nGraphical', 'user'], ['user', 'interfaces\\nWeb'], ['interfaces\\nWeb', 'frameworks\\nMultimedia\\nDatabases\\nNetworking\\nTest'], ['frameworks\\nMultimedia\\nDatabases\\nNetworking\\nTest', 'frameworks\\nAutomation\\nWeb'], ['frameworks\\nAutomation\\nWeb', 'scraping\\nDocumentation\\nSystem'], ['scraping\\nDocumentation\\nSystem', 'administration\\nScientific'], ['administration\\nScientific', 'computing\\nText'], ['computing\\nText', 'processing\\nImage'], ['processing\\nImage', 'processing\\n\\nDevelopment'], ['processing\\n\\nDevelopment', 'environments[edit]\\nSee'], ['environments[edit]\\nSee', 'also:'], ['also:', 'Comparison'], ['Comparison', 'of'], ['of', 'integrated'], ['integrated', 'development'], ['development', 'environments'], ['environments', '§\\xa0Python\\nMost'], ['§\\xa0Python\\nMost', 'Python'], ['Python', 'implementations'], ['implementations', '(including'], ['(including', 'CPython)'], ['CPython)', 'include'], ['include', 'a'], ['a', 'read–eval–print'], ['read–eval–print', 'loop'], ['loop', '(REPL),'], ['(REPL),', 'permitting'], ['permitting', 'them'], ['them', 'to'], ['to', 'function'], ['function', 'as'], ['as', 'a'], ['a', 'command'], ['command', 'line'], ['line', 'interpreter'], ['interpreter', 'for'], ['for', 'which'], ['which', 'the'], ['the', 'user'], ['user', 'enters'], ['enters', 'statements'], ['statements', 'sequentially'], ['sequentially', 'and'], ['and', 'receives'], ['receives', 'results'], ['results', 'immediately.\\nOther'], ['immediately.\\nOther', 'shells,'], ['shells,', 'including'], ['including', 'IDLE'], ['IDLE', 'and'], ['and', 'IPython,'], ['IPython,', 'add'], ['add', 'further'], ['further', 'abilities'], ['abilities', 'such'], ['such', 'as'], ['as', 'auto-completion,'], ['auto-completion,', 'session'], ['session', 'state'], ['state', 'retention'], ['retention', 'and'], ['and', 'syntax'], ['syntax', 'highlighting.\\nAs'], ['highlighting.\\nAs', 'well'], ['well', 'as'], ['as', 'standard'], ['standard', 'desktop'], ['desktop', 'integrated'], ['integrated', 'development'], ['development', 'environments'], ['environments', '(see'], ['(see', \"Wikipedia's\"], [\"Wikipedia's\", '\"Python'], ['\"Python', 'IDE\"'], ['IDE\"', 'article),'], ['article),', 'there'], ['there', 'are'], ['are', 'Web'], ['Web', 'browser-based'], ['browser-based', 'IDEs;'], ['IDEs;', 'SageMath'], ['SageMath', '(intended'], ['(intended', 'for'], ['for', 'developing'], ['developing', 'science'], ['science', 'and'], ['and', 'math-related'], ['math-related', 'Python'], ['Python', 'programs);'], ['programs);', 'PythonAnywhere,'], ['PythonAnywhere,', 'a'], ['a', 'browser-based'], ['browser-based', 'IDE'], ['IDE', 'and'], ['and', 'hosting'], ['hosting', 'environment;'], ['environment;', 'and'], ['and', 'Canopy'], ['Canopy', 'IDE,'], ['IDE,', 'a'], ['a', 'commercial'], ['commercial', 'Python'], ['Python', 'IDE'], ['IDE', 'emphasizing'], ['emphasizing', 'scientific'], ['scientific', 'computing.[91]\\nImplementations[edit]\\nSee'], ['computing.[91]\\nImplementations[edit]\\nSee', 'also:'], ['also:', 'List'], ['List', 'of'], ['of', 'Python'], ['Python', 'software'], ['software', '§\\xa0Python'], ['§\\xa0Python', 'implementations\\nReference'], ['implementations\\nReference', 'implementation[edit]\\nCPython'], ['implementation[edit]\\nCPython', 'is'], ['is', 'the'], ['the', 'reference'], ['reference', 'implementation'], ['implementation', 'of'], ['of', 'Python.'], ['Python.', 'It'], ['It', 'is'], ['is', 'written'], ['written', 'in'], ['in', 'C,'], ['C,', 'meeting'], ['meeting', 'the'], ['the', 'C89'], ['C89', 'standard'], ['standard', 'with'], ['with', 'several'], ['several', 'select'], ['select', 'C99'], ['C99', 'features.[92]'], ['features.[92]', 'It'], ['It', 'compiles'], ['compiles', 'Python'], ['Python', 'programs'], ['programs', 'into'], ['into', 'an'], ['an', 'intermediate'], ['intermediate', 'bytecode[93]'], ['bytecode[93]', 'which'], ['which', 'is'], ['is', 'then'], ['then', 'executed'], ['executed', 'by'], ['by', 'its'], ['its', 'virtual'], ['virtual', 'machine.[94]'], ['machine.[94]', 'CPython'], ['CPython', 'is'], ['is', 'distributed'], ['distributed', 'with'], ['with', 'a'], ['a', 'large'], ['large', 'standard'], ['standard', 'library'], ['library', 'written'], ['written', 'in'], ['in', 'a'], ['a', 'mixture'], ['mixture', 'of'], ['of', 'C'], ['C', 'and'], ['and', 'native'], ['native', 'Python.'], ['Python.', 'It'], ['It', 'is'], ['is', 'available'], ['available', 'for'], ['for', 'many'], ['many', 'platforms,'], ['platforms,', 'including'], ['including', 'Windows'], ['Windows', 'and'], ['and', 'most'], ['most', 'modern'], ['modern', 'Unix-like'], ['Unix-like', 'systems.'], ['systems.', 'Platform'], ['Platform', 'portability'], ['portability', 'was'], ['was', 'one'], ['one', 'of'], ['of', 'its'], ['its', 'earliest'], ['earliest', 'priorities.[95]\\nOther'], ['priorities.[95]\\nOther', 'implementations[edit]\\nPyPy'], ['implementations[edit]\\nPyPy', 'is'], ['is', 'a'], ['a', 'fast,'], ['fast,', 'compliant[96]'], ['compliant[96]', 'interpreter'], ['interpreter', 'of'], ['of', 'Python'], ['Python', '2.7'], ['2.7', 'and'], ['and', '3.5.'], ['3.5.', 'Its'], ['Its', 'just-in-time'], ['just-in-time', 'compiler'], ['compiler', 'brings'], ['brings', 'a'], ['a', 'significant'], ['significant', 'speed'], ['speed', 'improvement'], ['improvement', 'over'], ['over', 'CPython.[97]'], ['CPython.[97]', 'A'], ['A', 'version'], ['version', 'is'], ['is', 'under'], ['under', 'development'], ['development', 'that'], ['that', 'will'], ['will', 'use'], ['use', 'software'], ['software', 'transactional'], ['transactional', 'memory'], ['memory', 'to'], ['to', 'take'], ['take', 'advantage'], ['advantage', 'of'], ['of', 'multi-core'], ['multi-core', 'processors.[98]\\nStackless'], ['processors.[98]\\nStackless', 'Python'], ['Python', 'is'], ['is', 'a'], ['a', 'significant'], ['significant', 'fork'], ['fork', 'of'], ['of', 'CPython'], ['CPython', 'that'], ['that', 'implements'], ['implements', 'microthreads;'], ['microthreads;', 'it'], ['it', 'does'], ['does', 'not'], ['not', 'use'], ['use', 'the'], ['the', 'C'], ['C', 'memory'], ['memory', 'stack,'], ['stack,', 'thus'], ['thus', 'allowing'], ['allowing', 'massively'], ['massively', 'concurrent'], ['concurrent', 'programs.'], ['programs.', 'PyPy'], ['PyPy', 'also'], ['also', 'has'], ['has', 'a'], ['a', 'stackless'], ['stackless', 'version.[99]\\nMicroPython'], ['version.[99]\\nMicroPython', 'is'], ['is', 'a'], ['a', 'Python'], ['Python', '3'], ['3', 'variant'], ['variant', 'optimised'], ['optimised', 'for'], ['for', 'microcontrollers.\\nUnsupported'], ['microcontrollers.\\nUnsupported', 'implementations[edit]\\nOther'], ['implementations[edit]\\nOther', 'just-in-time'], ['just-in-time', 'Python'], ['Python', 'compilers'], ['compilers', 'have'], ['have', 'been'], ['been', 'developed,'], ['developed,', 'but'], ['but', 'are'], ['are', 'now'], ['now', 'unsupported:\\n\\nGoogle'], ['unsupported:\\n\\nGoogle', 'began'], ['began', 'a'], ['a', 'project'], ['project', 'named'], ['named', 'Unladen'], ['Unladen', 'Swallow'], ['Swallow', 'in'], ['in', '2009'], ['2009', 'with'], ['with', 'the'], ['the', 'aim'], ['aim', 'of'], ['of', 'speeding'], ['speeding', 'up'], ['up', 'the'], ['the', 'Python'], ['Python', 'interpreter'], ['interpreter', 'fivefold'], ['fivefold', 'by'], ['by', 'using'], ['using', 'the'], ['the', 'LLVM,'], ['LLVM,', 'and'], ['and', 'of'], ['of', 'improving'], ['improving', 'its'], ['its', 'multithreading'], ['multithreading', 'ability'], ['ability', 'to'], ['to', 'scale'], ['scale', 'to'], ['to', 'thousands'], ['thousands', 'of'], ['of', 'cores.[100]\\nPsyco'], ['cores.[100]\\nPsyco', 'is'], ['is', 'a'], ['a', 'just-in-time'], ['just-in-time', 'specialising'], ['specialising', 'compiler'], ['compiler', 'that'], ['that', 'integrates'], ['integrates', 'with'], ['with', 'CPython'], ['CPython', 'and'], ['and', 'transforms'], ['transforms', 'bytecode'], ['bytecode', 'to'], ['to', 'machine'], ['machine', 'code'], ['code', 'at'], ['at', 'runtime.'], ['runtime.', 'The'], ['The', 'emitted'], ['emitted', 'code'], ['code', 'is'], ['is', 'specialised'], ['specialised', 'for'], ['for', 'certain'], ['certain', 'data'], ['data', 'types'], ['types', 'and'], ['and', 'is'], ['is', 'faster'], ['faster', 'than'], ['than', 'standard'], ['standard', 'Python'], ['Python', 'code.\\n\\nIn'], ['code.\\n\\nIn', '2005,'], ['2005,', 'Nokia'], ['Nokia', 'released'], ['released', 'a'], ['a', 'Python'], ['Python', 'interpreter'], ['interpreter', 'for'], ['for', 'the'], ['the', 'Series'], ['Series', '60'], ['60', 'mobile'], ['mobile', 'phones'], ['phones', 'named'], ['named', 'PyS60.'], ['PyS60.', 'It'], ['It', 'includes'], ['includes', 'many'], ['many', 'of'], ['of', 'the'], ['the', 'modules'], ['modules', 'from'], ['from', 'the'], ['the', 'CPython'], ['CPython', 'implementations'], ['implementations', 'and'], ['and', 'some'], ['some', 'additional'], ['additional', 'modules'], ['modules', 'to'], ['to', 'integrate'], ['integrate', 'with'], ['with', 'the'], ['the', 'Symbian'], ['Symbian', 'operating'], ['operating', 'system.'], ['system.', 'The'], ['The', 'project'], ['project', 'has'], ['has', 'been'], ['been', 'kept'], ['kept', 'up-to-date'], ['up-to-date', 'to'], ['to', 'run'], ['run', 'on'], ['on', 'all'], ['all', 'variants'], ['variants', 'of'], ['of', 'the'], ['the', 'S60'], ['S60', 'platform,'], ['platform,', 'and'], ['and', 'several'], ['several', 'third-party'], ['third-party', 'modules'], ['modules', 'are'], ['are', 'available.'], ['available.', 'The'], ['The', 'Nokia'], ['Nokia', 'N900'], ['N900', 'also'], ['also', 'supports'], ['supports', 'Python'], ['Python', 'with'], ['with', 'GTK'], ['GTK', 'widget'], ['widget', 'libraries,'], ['libraries,', 'enabling'], ['enabling', 'programs'], ['programs', 'to'], ['to', 'be'], ['be', 'written'], ['written', 'and'], ['and', 'run'], ['run', 'on'], ['on', 'the'], ['the', 'target'], ['target', 'device.[101]\\nCross-compilers'], ['device.[101]\\nCross-compilers', 'to'], ['to', 'other'], ['other', 'languages[edit]\\nThere'], ['languages[edit]\\nThere', 'are'], ['are', 'several'], ['several', 'compilers'], ['compilers', 'to'], ['to', 'high-level'], ['high-level', 'object'], ['object', 'languages,'], ['languages,', 'with'], ['with', 'either'], ['either', 'unrestricted'], ['unrestricted', 'Python,'], ['Python,', 'a'], ['a', 'restricted'], ['restricted', 'subset'], ['subset', 'of'], ['of', 'Python,'], ['Python,', 'or'], ['or', 'a'], ['a', 'language'], ['language', 'similar'], ['similar', 'to'], ['to', 'Python'], ['Python', 'as'], ['as', 'the'], ['the', 'source'], ['source', 'language:\\n\\nJython'], ['language:\\n\\nJython', 'compiles'], ['compiles', 'into'], ['into', 'Java'], ['Java', 'byte'], ['byte', 'code,'], ['code,', 'which'], ['which', 'can'], ['can', 'then'], ['then', 'be'], ['be', 'executed'], ['executed', 'by'], ['by', 'every'], ['every', 'Java'], ['Java', 'virtual'], ['virtual', 'machine'], ['machine', 'implementation.'], ['implementation.', 'This'], ['This', 'also'], ['also', 'enables'], ['enables', 'the'], ['the', 'use'], ['use', 'of'], ['of', 'Java'], ['Java', 'class'], ['class', 'library'], ['library', 'functions'], ['functions', 'from'], ['from', 'the'], ['the', 'Python'], ['Python', 'program.\\nIronPython'], ['program.\\nIronPython', 'follows'], ['follows', 'a'], ['a', 'similar'], ['similar', 'approach'], ['approach', 'in'], ['in', 'order'], ['order', 'to'], ['to', 'run'], ['run', 'Python'], ['Python', 'programs'], ['programs', 'on'], ['on', 'the'], ['the', '.NET'], ['.NET', 'Common'], ['Common', 'Language'], ['Language', 'Runtime.\\nThe'], ['Runtime.\\nThe', 'RPython'], ['RPython', 'language'], ['language', 'can'], ['can', 'be'], ['be', 'compiled'], ['compiled', 'to'], ['to', 'C,'], ['C,', 'Java'], ['Java', 'bytecode,'], ['bytecode,', 'or'], ['or', 'Common'], ['Common', 'Intermediate'], ['Intermediate', 'Language,'], ['Language,', 'and'], ['and', 'is'], ['is', 'used'], ['used', 'to'], ['to', 'build'], ['build', 'the'], ['the', 'PyPy'], ['PyPy', 'interpreter'], ['interpreter', 'of'], ['of', 'Python.\\nPyjs'], ['Python.\\nPyjs', 'compiles'], ['compiles', 'Python'], ['Python', 'to'], ['to', 'JavaScript.\\nCython'], ['JavaScript.\\nCython', 'compiles'], ['compiles', 'Python'], ['Python', 'to'], ['to', 'C'], ['C', 'and'], ['and', 'C++.\\nPythran'], ['C++.\\nPythran', 'compiles'], ['compiles', 'Python'], ['Python', 'to'], ['to', 'C++.\\nSomewhat'], ['C++.\\nSomewhat', 'dated'], ['dated', 'Pyrex'], ['Pyrex', '(latest'], ['(latest', 'release'], ['release', 'in'], ['in', '2010)'], ['2010)', 'and'], ['and', 'Shed'], ['Shed', 'Skin'], ['Skin', '(latest'], ['(latest', 'release'], ['release', 'in'], ['in', '2013)'], ['2013)', 'compile'], ['compile', 'to'], ['to', 'C'], ['C', 'and'], ['and', 'C++'], ['C++', \"respectively.\\nGoogle's\"], [\"respectively.\\nGoogle's\", 'Grumpy'], ['Grumpy', 'compiles'], ['compiles', 'Python'], ['Python', 'to'], ['to', 'Go.\\nNuitka'], ['Go.\\nNuitka', 'compiles'], ['compiles', 'Python'], ['Python', 'into'], ['into', 'C++'], ['C++', '[102]\\n\\nPerformance[edit]\\nA'], ['[102]\\n\\nPerformance[edit]\\nA', 'performance'], ['performance', 'comparison'], ['comparison', 'of'], ['of', 'various'], ['various', 'Python'], ['Python', 'implementations'], ['implementations', 'on'], ['on', 'a'], ['a', 'non-numerical'], ['non-numerical', '(combinatorial)'], ['(combinatorial)', 'workload'], ['workload', 'was'], ['was', 'presented'], ['presented', 'at'], ['at', 'EuroSciPy'], ['EuroSciPy', \"'13.[103]\\nDevelopment[edit]\\nPython's\"], [\"'13.[103]\\nDevelopment[edit]\\nPython's\", 'development'], ['development', 'is'], ['is', 'conducted'], ['conducted', 'largely'], ['largely', 'through'], ['through', 'the'], ['the', 'Python'], ['Python', 'Enhancement'], ['Enhancement', 'Proposal'], ['Proposal', '(PEP)'], ['(PEP)', 'process,'], ['process,', 'the'], ['the', 'primary'], ['primary', 'mechanism'], ['mechanism', 'for'], ['for', 'proposing'], ['proposing', 'major'], ['major', 'new'], ['new', 'features,'], ['features,', 'collecting'], ['collecting', 'community'], ['community', 'input'], ['input', 'on'], ['on', 'issues'], ['issues', 'and'], ['and', 'documenting'], ['documenting', 'Python'], ['Python', 'design'], ['design', 'decisions.[104]'], ['decisions.[104]', 'Outstanding'], ['Outstanding', 'PEPs'], ['PEPs', 'are'], ['are', 'reviewed'], ['reviewed', 'and'], ['and', 'commented'], ['commented', 'on'], ['on', 'by'], ['by', 'the'], ['the', 'Python'], ['Python', 'community'], ['community', 'and'], ['and', 'Guido'], ['Guido', 'Van'], ['Van', 'Rossum,'], ['Rossum,', \"Python's\"], [\"Python's\", 'Benevolent'], ['Benevolent', 'Dictator'], ['Dictator', 'For'], ['For', 'Life.[104]\\nEnhancement'], ['Life.[104]\\nEnhancement', 'of'], ['of', 'the'], ['the', 'language'], ['language', 'corresponds'], ['corresponds', 'with'], ['with', 'development'], ['development', 'of'], ['of', 'the'], ['the', 'CPython'], ['CPython', 'reference'], ['reference', 'implementation.'], ['implementation.', 'The'], ['The', 'mailing'], ['mailing', 'list'], ['list', 'python-dev'], ['python-dev', 'is'], ['is', 'the'], ['the', 'primary'], ['primary', 'forum'], ['forum', 'for'], ['for', 'the'], ['the', \"language's\"], [\"language's\", 'development.'], ['development.', 'Specific'], ['Specific', 'issues'], ['issues', 'are'], ['are', 'discussed'], ['discussed', 'in'], ['in', 'the'], ['the', 'Roundup'], ['Roundup', 'bug'], ['bug', 'tracker'], ['tracker', 'maintained'], ['maintained', 'at'], ['at', 'python.org.[105]'], ['python.org.[105]', 'Development'], ['Development', 'originally'], ['originally', 'took'], ['took', 'place'], ['place', 'on'], ['on', 'a'], ['a', 'self-hosted'], ['self-hosted', 'source-code'], ['source-code', 'repository'], ['repository', 'running'], ['running', 'Mercurial,'], ['Mercurial,', 'until'], ['until', 'Python'], ['Python', 'moved'], ['moved', 'to'], ['to', 'GitHub'], ['GitHub', 'in'], ['in', 'January'], ['January', \"2017.[106]\\nCPython's\"], [\"2017.[106]\\nCPython's\", 'public'], ['public', 'releases'], ['releases', 'come'], ['come', 'in'], ['in', 'three'], ['three', 'types,'], ['types,', 'distinguished'], ['distinguished', 'by'], ['by', 'which'], ['which', 'part'], ['part', 'of'], ['of', 'the'], ['the', 'version'], ['version', 'number'], ['number', 'is'], ['is', 'incremented:\\n\\nBackward-incompatible'], ['incremented:\\n\\nBackward-incompatible', 'versions,'], ['versions,', 'where'], ['where', 'code'], ['code', 'is'], ['is', 'expected'], ['expected', 'to'], ['to', 'break'], ['break', 'and'], ['and', 'need'], ['need', 'to'], ['to', 'be'], ['be', 'manually'], ['manually', 'ported.'], ['ported.', 'The'], ['The', 'first'], ['first', 'part'], ['part', 'of'], ['of', 'the'], ['the', 'version'], ['version', 'number'], ['number', 'is'], ['is', 'incremented.'], ['incremented.', 'These'], ['These', 'releases'], ['releases', 'happen'], ['happen', 'infrequently—for'], ['infrequently—for', 'example,'], ['example,', 'version'], ['version', '3.0'], ['3.0', 'was'], ['was', 'released'], ['released', '8'], ['8', 'years'], ['years', 'after'], ['after', '2.0.\\nMajor'], ['2.0.\\nMajor', 'or'], ['or', '\"feature\"'], ['\"feature\"', 'releases,'], ['releases,', 'about'], ['about', 'every'], ['every', '18'], ['18', 'months,'], ['months,', 'are'], ['are', 'largely'], ['largely', 'compatible'], ['compatible', 'but'], ['but', 'introduce'], ['introduce', 'new'], ['new', 'features.'], ['features.', 'The'], ['The', 'second'], ['second', 'part'], ['part', 'of'], ['of', 'the'], ['the', 'version'], ['version', 'number'], ['number', 'is'], ['is', 'incremented.'], ['incremented.', 'Each'], ['Each', 'major'], ['major', 'version'], ['version', 'is'], ['is', 'supported'], ['supported', 'by'], ['by', 'bugfixes'], ['bugfixes', 'for'], ['for', 'several'], ['several', 'years'], ['years', 'after'], ['after', 'its'], ['its', 'release.[107]\\nBugfix'], ['release.[107]\\nBugfix', 'releases,'], ['releases,', 'which'], ['which', 'introduce'], ['introduce', 'no'], ['no', 'new'], ['new', 'features,'], ['features,', 'occur'], ['occur', 'about'], ['about', 'every'], ['every', '3'], ['3', 'months'], ['months', 'and'], ['and', 'are'], ['are', 'made'], ['made', 'when'], ['when', 'a'], ['a', 'sufficient'], ['sufficient', 'number'], ['number', 'of'], ['of', 'bugs'], ['bugs', 'have'], ['have', 'been'], ['been', 'fixed'], ['fixed', 'upstream'], ['upstream', 'since'], ['since', 'the'], ['the', 'last'], ['last', 'release.'], ['release.', 'Security'], ['Security', 'vulnerabilities'], ['vulnerabilities', 'are'], ['are', 'also'], ['also', 'patched'], ['patched', 'in'], ['in', 'these'], ['these', 'releases.'], ['releases.', 'The'], ['The', 'third'], ['third', 'and'], ['and', 'final'], ['final', 'part'], ['part', 'of'], ['of', 'the'], ['the', 'version'], ['version', 'number'], ['number', 'is'], ['is', 'incremented.[108]\\n\\nMany'], ['incremented.[108]\\n\\nMany', 'alpha,'], ['alpha,', 'beta,'], ['beta,', 'and'], ['and', 'release-candidates'], ['release-candidates', 'are'], ['are', 'also'], ['also', 'released'], ['released', 'as'], ['as', 'previews'], ['previews', 'and'], ['and', 'for'], ['for', 'testing'], ['testing', 'before'], ['before', 'final'], ['final', 'releases.'], ['releases.', 'Although'], ['Although', 'there'], ['there', 'is'], ['is', 'a'], ['a', 'rough'], ['rough', 'schedule'], ['schedule', 'for'], ['for', 'each'], ['each', 'release,'], ['release,', 'they'], ['they', 'are'], ['are', 'often'], ['often', 'delayed'], ['delayed', 'if'], ['if', 'the'], ['the', 'code'], ['code', 'is'], ['is', 'not'], ['not', 'ready.'], ['ready.', \"Python's\"], [\"Python's\", 'development'], ['development', 'team'], ['team', 'monitors'], ['monitors', 'the'], ['the', 'state'], ['state', 'of'], ['of', 'the'], ['the', 'code'], ['code', 'by'], ['by', 'running'], ['running', 'the'], ['the', 'large'], ['large', 'unit'], ['unit', 'test'], ['test', 'suite'], ['suite', 'during'], ['during', 'development,'], ['development,', 'and'], ['and', 'using'], ['using', 'the'], ['the', 'BuildBot'], ['BuildBot', 'continuous'], ['continuous', 'integration'], ['integration', 'system.[109]\\nThe'], ['system.[109]\\nThe', 'community'], ['community', 'of'], ['of', 'Python'], ['Python', 'developers'], ['developers', 'has'], ['has', 'also'], ['also', 'contributed'], ['contributed', 'over'], ['over', '86,000[110]'], ['86,000[110]', 'software'], ['software', 'modules'], ['modules', '(as'], ['(as', 'of'], ['of', '20'], ['20', 'August'], ['August', '2016[update])'], ['2016[update])', 'to'], ['to', 'the'], ['the', 'Python'], ['Python', 'Package'], ['Package', 'Index'], ['Index', '(PyPI),'], ['(PyPI),', 'the'], ['the', 'official'], ['official', 'repository'], ['repository', 'of'], ['of', 'third-party'], ['third-party', 'Python'], ['Python', 'libraries.\\nThe'], ['libraries.\\nThe', 'major'], ['major', 'academic'], ['academic', 'conference'], ['conference', 'on'], ['on', 'Python'], ['Python', 'is'], ['is', 'PyCon.'], ['PyCon.', 'There'], ['There', 'are'], ['are', 'also'], ['also', 'special'], ['special', 'Python'], ['Python', 'mentoring'], ['mentoring', 'programmes,'], ['programmes,', 'such'], ['such', 'as'], ['as', \"Pyladies.\\nNaming[edit]\\nPython's\"], [\"Pyladies.\\nNaming[edit]\\nPython's\", 'name'], ['name', 'is'], ['is', 'derived'], ['derived', 'from'], ['from', 'the'], ['the', 'British'], ['British', 'comedy'], ['comedy', 'group'], ['group', 'Monty'], ['Monty', 'Python,'], ['Python,', 'whom'], ['whom', 'Python'], ['Python', 'creator'], ['creator', 'Guido'], ['Guido', 'van'], ['van', 'Rossum'], ['Rossum', 'enjoyed'], ['enjoyed', 'while'], ['while', 'developing'], ['developing', 'the'], ['the', 'language.'], ['language.', 'Monty'], ['Monty', 'Python'], ['Python', 'references'], ['references', 'appear'], ['appear', 'frequently'], ['frequently', 'in'], ['in', 'Python'], ['Python', 'code'], ['code', 'and'], ['and', 'culture;[111]'], ['culture;[111]', 'for'], ['for', 'example,'], ['example,', 'the'], ['the', 'metasyntactic'], ['metasyntactic', 'variables'], ['variables', 'often'], ['often', 'used'], ['used', 'in'], ['in', 'Python'], ['Python', 'literature'], ['literature', 'are'], ['are', 'spam'], ['spam', 'and'], ['and', 'eggs'], ['eggs', 'instead'], ['instead', 'of'], ['of', 'the'], ['the', 'traditional'], ['traditional', 'foo'], ['foo', 'and'], ['and', 'bar[111][112].'], ['bar[111][112].', 'The'], ['The', 'official'], ['official', 'Python'], ['Python', 'documentation'], ['documentation', 'also'], ['also', 'contains'], ['contains', 'various'], ['various', 'references'], ['references', 'to'], ['to', 'Monty'], ['Monty', 'Python'], ['Python', 'routines.[113][114]\\nThe'], ['routines.[113][114]\\nThe', 'prefix'], ['prefix', 'Py-'], ['Py-', 'is'], ['is', 'used'], ['used', 'to'], ['to', 'show'], ['show', 'that'], ['that', 'something'], ['something', 'is'], ['is', 'related'], ['related', 'to'], ['to', 'Python.'], ['Python.', 'Examples'], ['Examples', 'of'], ['of', 'the'], ['the', 'use'], ['use', 'of'], ['of', 'this'], ['this', 'prefix'], ['prefix', 'in'], ['in', 'names'], ['names', 'of'], ['of', 'Python'], ['Python', 'applications'], ['applications', 'or'], ['or', 'libraries'], ['libraries', 'include'], ['include', 'Pygame,'], ['Pygame,', 'a'], ['a', 'binding'], ['binding', 'of'], ['of', 'SDL'], ['SDL', 'to'], ['to', 'Python'], ['Python', '(commonly'], ['(commonly', 'used'], ['used', 'to'], ['to', 'create'], ['create', 'games);'], ['games);', 'Python'], ['Python', 'for'], ['for', 'S60,'], ['S60,', 'an'], ['an', 'implementation'], ['implementation', 'for'], ['for', 'the'], ['the', 'Symbian'], ['Symbian', 'S60'], ['S60', 'operating'], ['operating', 'system;'], ['system;', 'PyQt'], ['PyQt', 'and'], ['and', 'PyGTK,'], ['PyGTK,', 'which'], ['which', 'bind'], ['bind', 'Qt'], ['Qt', 'and'], ['and', 'GTK'], ['GTK', 'to'], ['to', 'Python'], ['Python', 'respectively;'], ['respectively;', 'and'], ['and', 'PyPy,'], ['PyPy,', 'a'], ['a', 'Python'], ['Python', 'implementation'], ['implementation', 'originally'], ['originally', 'written'], ['written', 'in'], ['in', 'Python.\\nUses[edit]\\nMain'], ['Python.\\nUses[edit]\\nMain', 'article:'], ['article:', 'List'], ['List', 'of'], ['of', 'Python'], ['Python', 'software\\nSince'], ['software\\nSince', '2003,'], ['2003,', 'Python'], ['Python', 'has'], ['has', 'consistently'], ['consistently', 'ranked'], ['ranked', 'in'], ['in', 'the'], ['the', 'top'], ['top', 'ten'], ['ten', 'most'], ['most', 'popular'], ['popular', 'programming'], ['programming', 'languages'], ['languages', 'in'], ['in', 'the'], ['the', 'TIOBE'], ['TIOBE', 'Programming'], ['Programming', 'Community'], ['Community', 'Index.'], ['Index.', 'As'], ['As', 'of'], ['of', 'March'], ['March', '2017[update],'], ['2017[update],', 'it'], ['it', 'is'], ['is', 'the'], ['the', 'fifth'], ['fifth', 'most'], ['most', 'popular'], ['popular', 'language.[115]'], ['language.[115]', 'It'], ['It', 'was'], ['was', 'selected'], ['selected', 'Programming'], ['Programming', 'Language'], ['Language', 'of'], ['of', 'the'], ['the', 'Year'], ['Year', 'in'], ['in', '2007'], ['2007', 'and'], ['and', '2010.[116]'], ['2010.[116]', 'It'], ['It', 'is'], ['is', 'the'], ['the', 'third'], ['third', 'most'], ['most', 'popular'], ['popular', 'language'], ['language', 'whose'], ['whose', 'grammatical'], ['grammatical', 'syntax'], ['syntax', 'is'], ['is', 'not'], ['not', 'predominantly'], ['predominantly', 'based'], ['based', 'on'], ['on', 'C.\\nAn'], ['C.\\nAn', 'empirical'], ['empirical', 'study'], ['study', 'found'], ['found', 'that'], ['that', 'scripting'], ['scripting', 'languages,'], ['languages,', 'such'], ['such', 'as'], ['as', 'Python,'], ['Python,', 'are'], ['are', 'more'], ['more', 'productive'], ['productive', 'than'], ['than', 'conventional'], ['conventional', 'languages,'], ['languages,', 'such'], ['such', 'as'], ['as', 'C'], ['C', 'and'], ['and', 'Java,'], ['Java,', 'for'], ['for', 'programming'], ['programming', 'problems'], ['problems', 'involving'], ['involving', 'string'], ['string', 'manipulation'], ['manipulation', 'and'], ['and', 'search'], ['search', 'in'], ['in', 'a'], ['a', 'dictionary,'], ['dictionary,', 'and'], ['and', 'determined'], ['determined', 'that'], ['that', 'memory'], ['memory', 'consumption'], ['consumption', 'was'], ['was', 'often'], ['often', '\"better'], ['\"better', 'than'], ['than', 'Java'], ['Java', 'and'], ['and', 'not'], ['not', 'much'], ['much', 'worse'], ['worse', 'than'], ['than', 'C'], ['C', 'or'], ['or', 'C++\".[117]\\nLarge'], ['C++\".[117]\\nLarge', 'organizations'], ['organizations', 'that'], ['that', 'use'], ['use', 'Python'], ['Python', 'include'], ['include', 'Wikipedia,'], ['Wikipedia,', 'Google,[118]'], ['Google,[118]', 'Yahoo!,[119]'], ['Yahoo!,[119]', 'CERN,[120]'], ['CERN,[120]', 'NASA,[121]'], ['NASA,[121]', 'and'], ['and', 'some'], ['some', 'smaller'], ['smaller', 'entities'], ['entities', 'like'], ['like', 'ILM[122]'], ['ILM[122]', 'and'], ['and', 'ITA.[123]'], ['ITA.[123]', 'The'], ['The', 'social'], ['social', 'news'], ['news', 'networking'], ['networking', 'site'], ['site', 'Reddit'], ['Reddit', 'is'], ['is', 'written'], ['written', 'entirely'], ['entirely', 'in'], ['in', 'Python.\\nPython'], ['Python.\\nPython', 'can'], ['can', 'serve'], ['serve', 'as'], ['as', 'a'], ['a', 'scripting'], ['scripting', 'language'], ['language', 'for'], ['for', 'web'], ['web', 'applications,'], ['applications,', 'e.g.,'], ['e.g.,', 'via'], ['via', 'mod_wsgi'], ['mod_wsgi', 'for'], ['for', 'the'], ['the', 'Apache'], ['Apache', 'web'], ['web', 'server.[124]'], ['server.[124]', 'With'], ['With', 'Web'], ['Web', 'Server'], ['Server', 'Gateway'], ['Gateway', 'Interface,'], ['Interface,', 'a'], ['a', 'standard'], ['standard', 'API'], ['API', 'has'], ['has', 'evolved'], ['evolved', 'to'], ['to', 'facilitate'], ['facilitate', 'these'], ['these', 'applications.'], ['applications.', 'Web'], ['Web', 'frameworks'], ['frameworks', 'like'], ['like', 'Django,'], ['Django,', 'Pylons,'], ['Pylons,', 'Pyramid,'], ['Pyramid,', 'TurboGears,'], ['TurboGears,', 'web2py,'], ['web2py,', 'Tornado,'], ['Tornado,', 'Flask,'], ['Flask,', 'Bottle'], ['Bottle', 'and'], ['and', 'Zope'], ['Zope', 'support'], ['support', 'developers'], ['developers', 'in'], ['in', 'the'], ['the', 'design'], ['design', 'and'], ['and', 'maintenance'], ['maintenance', 'of'], ['of', 'complex'], ['complex', 'applications.'], ['applications.', 'Pyjs'], ['Pyjs', 'and'], ['and', 'IronPython'], ['IronPython', 'can'], ['can', 'be'], ['be', 'used'], ['used', 'to'], ['to', 'develop'], ['develop', 'the'], ['the', 'client-side'], ['client-side', 'of'], ['of', 'Ajax-based'], ['Ajax-based', 'applications.'], ['applications.', 'SQLAlchemy'], ['SQLAlchemy', 'can'], ['can', 'be'], ['be', 'used'], ['used', 'as'], ['as', 'data'], ['data', 'mapper'], ['mapper', 'to'], ['to', 'a'], ['a', 'relational'], ['relational', 'database.'], ['database.', 'Twisted'], ['Twisted', 'is'], ['is', 'a'], ['a', 'framework'], ['framework', 'to'], ['to', 'program'], ['program', 'communications'], ['communications', 'between'], ['between', 'computers,'], ['computers,', 'and'], ['and', 'is'], ['is', 'used'], ['used', '(for'], ['(for', 'example)'], ['example)', 'by'], ['by', 'Dropbox.\\nLibraries'], ['Dropbox.\\nLibraries', 'such'], ['such', 'as'], ['as', 'NumPy,'], ['NumPy,', 'SciPy'], ['SciPy', 'and'], ['and', 'Matplotlib'], ['Matplotlib', 'allow'], ['allow', 'the'], ['the', 'effective'], ['effective', 'use'], ['use', 'of'], ['of', 'Python'], ['Python', 'in'], ['in', 'scientific'], ['scientific', 'computing,[125][126]'], ['computing,[125][126]', 'with'], ['with', 'specialized'], ['specialized', 'libraries'], ['libraries', 'such'], ['such', 'as'], ['as', 'Biopython'], ['Biopython', 'and'], ['and', 'Astropy'], ['Astropy', 'providing'], ['providing', 'domain-specific'], ['domain-specific', 'functionality.'], ['functionality.', 'SageMath'], ['SageMath', 'is'], ['is', 'a'], ['a', 'mathematical'], ['mathematical', 'software'], ['software', 'with'], ['with', 'a'], ['a', '\"notebook\"'], ['\"notebook\"', 'programmable'], ['programmable', 'in'], ['in', 'Python:'], ['Python:', 'its'], ['its', 'library'], ['library', 'covers'], ['covers', 'many'], ['many', 'aspects'], ['aspects', 'of'], ['of', 'mathematics,'], ['mathematics,', 'including'], ['including', 'algebra,'], ['algebra,', 'combinatorics,'], ['combinatorics,', 'numerical'], ['numerical', 'mathematics,'], ['mathematics,', 'number'], ['number', 'theory,'], ['theory,', 'and'], ['and', 'calculus.'], ['calculus.', 'The'], ['The', 'Python'], ['Python', 'language'], ['language', 're-implemented'], ['re-implemented', 'in'], ['in', 'Java'], ['Java', 'platform'], ['platform', 'is'], ['is', 'used'], ['used', 'for'], ['for', 'numeric'], ['numeric', 'and'], ['and', 'statistical'], ['statistical', 'calculations'], ['calculations', 'with'], ['with', '2D/3D'], ['2D/3D', 'visualization'], ['visualization', 'by'], ['by', 'the'], ['the', 'DMelt'], ['DMelt', 'project.[127][128]\\nPython'], ['project.[127][128]\\nPython', 'has'], ['has', 'been'], ['been', 'successfully'], ['successfully', 'embedded'], ['embedded', 'in'], ['in', 'many'], ['many', 'software'], ['software', 'products'], ['products', 'as'], ['as', 'a'], ['a', 'scripting'], ['scripting', 'language,'], ['language,', 'including'], ['including', 'in'], ['in', 'finite'], ['finite', 'element'], ['element', 'method'], ['method', 'software'], ['software', 'such'], ['such', 'as'], ['as', 'Abaqus,'], ['Abaqus,', '3D'], ['3D', 'parametric'], ['parametric', 'modeler'], ['modeler', 'like'], ['like', 'FreeCAD,'], ['FreeCAD,', '3D'], ['3D', 'animation'], ['animation', 'packages'], ['packages', 'such'], ['such', 'as'], ['as', '3ds'], ['3ds', 'Max,'], ['Max,', 'Blender,'], ['Blender,', 'Cinema'], ['Cinema', '4D,'], ['4D,', 'Lightwave,'], ['Lightwave,', 'Houdini,'], ['Houdini,', 'Maya,'], ['Maya,', 'modo,'], ['modo,', 'MotionBuilder,'], ['MotionBuilder,', 'Softimage,'], ['Softimage,', 'the'], ['the', 'visual'], ['visual', 'effects'], ['effects', 'compositor'], ['compositor', 'Nuke,'], ['Nuke,', '2D'], ['2D', 'imaging'], ['imaging', 'programs'], ['programs', 'like'], ['like', 'GIMP,[129]'], ['GIMP,[129]', 'Inkscape,'], ['Inkscape,', 'Scribus'], ['Scribus', 'and'], ['and', 'Paint'], ['Paint', 'Shop'], ['Shop', 'Pro,[130]'], ['Pro,[130]', 'and'], ['and', 'musical'], ['musical', 'notation'], ['notation', 'programs'], ['programs', 'like'], ['like', 'scorewriter'], ['scorewriter', 'and'], ['and', 'capella.'], ['capella.', 'GNU'], ['GNU', 'Debugger'], ['Debugger', 'uses'], ['uses', 'Python'], ['Python', 'as'], ['as', 'a'], ['a', 'pretty'], ['pretty', 'printer'], ['printer', 'to'], ['to', 'show'], ['show', 'complex'], ['complex', 'structures'], ['structures', 'such'], ['such', 'as'], ['as', 'C++'], ['C++', 'containers.'], ['containers.', 'Esri'], ['Esri', 'promotes'], ['promotes', 'Python'], ['Python', 'as'], ['as', 'the'], ['the', 'best'], ['best', 'choice'], ['choice', 'for'], ['for', 'writing'], ['writing', 'scripts'], ['scripts', 'in'], ['in', 'ArcGIS.[131]'], ['ArcGIS.[131]', 'It'], ['It', 'has'], ['has', 'also'], ['also', 'been'], ['been', 'used'], ['used', 'in'], ['in', 'several'], ['several', 'video'], ['video', 'games,[132][133]'], ['games,[132][133]', 'and'], ['and', 'has'], ['has', 'been'], ['been', 'adopted'], ['adopted', 'as'], ['as', 'first'], ['first', 'of'], ['of', 'the'], ['the', 'three'], ['three', 'available'], ['available', 'programming'], ['programming', 'languages'], ['languages', 'in'], ['in', 'Google'], ['Google', 'App'], ['App', 'Engine,'], ['Engine,', 'the'], ['the', 'other'], ['other', 'two'], ['two', 'being'], ['being', 'Java'], ['Java', 'and'], ['and', 'Go.[134]'], ['Go.[134]', 'Python'], ['Python', 'is'], ['is', 'also'], ['also', 'used'], ['used', 'in'], ['in', 'algorithmic'], ['algorithmic', 'trading'], ['trading', 'and'], ['and', 'quantitative'], ['quantitative', 'finance.[135]'], ['finance.[135]', 'Python'], ['Python', 'can'], ['can', 'also'], ['also', 'be'], ['be', 'implemented'], ['implemented', 'in'], ['in', 'APIs'], ['APIs', 'of'], ['of', 'online'], ['online', 'brokerages'], ['brokerages', 'that'], ['that', 'run'], ['run', 'on'], ['on', 'other'], ['other', 'languages'], ['languages', 'by'], ['by', 'using'], ['using', 'wrappers.[136]\\nPython'], ['wrappers.[136]\\nPython', 'has'], ['has', 'been'], ['been', 'used'], ['used', 'in'], ['in', 'artificial'], ['artificial', 'intelligence'], ['intelligence', 'projects.[137][138][139][140]'], ['projects.[137][138][139][140]', 'As'], ['As', 'a'], ['a', 'scripting'], ['scripting', 'language'], ['language', 'with'], ['with', 'modular'], ['modular', 'architecture,'], ['architecture,', 'simple'], ['simple', 'syntax'], ['syntax', 'and'], ['and', 'rich'], ['rich', 'text'], ['text', 'processing'], ['processing', 'tools,'], ['tools,', 'Python'], ['Python', 'is'], ['is', 'often'], ['often', 'used'], ['used', 'for'], ['for', 'natural'], ['natural', 'language'], ['language', 'processing.[141]\\nMany'], ['processing.[141]\\nMany', 'operating'], ['operating', 'systems'], ['systems', 'include'], ['include', 'Python'], ['Python', 'as'], ['as', 'a'], ['a', 'standard'], ['standard', 'component.'], ['component.', 'It'], ['It', 'ships'], ['ships', 'with'], ['with', 'most'], ['most', 'Linux'], ['Linux', 'distributions,'], ['distributions,', 'AmigaOS'], ['AmigaOS', '4,'], ['4,', 'FreeBSD,'], ['FreeBSD,', 'NetBSD,'], ['NetBSD,', 'OpenBSD'], ['OpenBSD', 'and'], ['and', 'macOS,'], ['macOS,', 'and'], ['and', 'can'], ['can', 'be'], ['be', 'used'], ['used', 'from'], ['from', 'the'], ['the', 'command'], ['command', 'line'], ['line', '(terminal).'], ['(terminal).', 'Many'], ['Many', 'Linux'], ['Linux', 'distributions'], ['distributions', 'use'], ['use', 'installers'], ['installers', 'written'], ['written', 'in'], ['in', 'Python:'], ['Python:', 'Ubuntu'], ['Ubuntu', 'uses'], ['uses', 'the'], ['the', 'Ubiquity'], ['Ubiquity', 'installer,'], ['installer,', 'while'], ['while', 'Red'], ['Red', 'Hat'], ['Hat', 'Linux'], ['Linux', 'and'], ['and', 'Fedora'], ['Fedora', 'use'], ['use', 'the'], ['the', 'Anaconda'], ['Anaconda', 'installer.'], ['installer.', 'Gentoo'], ['Gentoo', 'Linux'], ['Linux', 'uses'], ['uses', 'Python'], ['Python', 'in'], ['in', 'its'], ['its', 'package'], ['package', 'management'], ['management', 'system,'], ['system,', 'Portage.\\nPython'], ['Portage.\\nPython', 'is'], ['is', 'used'], ['used', 'extensively'], ['extensively', 'in'], ['in', 'the'], ['the', 'information'], ['information', 'security'], ['security', 'industry,'], ['industry,', 'including'], ['including', 'in'], ['in', 'exploit'], ['exploit', 'development.[142][143]\\nMost'], ['development.[142][143]\\nMost', 'of'], ['of', 'the'], ['the', 'Sugar'], ['Sugar', 'software'], ['software', 'for'], ['for', 'the'], ['the', 'One'], ['One', 'Laptop'], ['Laptop', 'per'], ['per', 'Child'], ['Child', 'XO,'], ['XO,', 'now'], ['now', 'developed'], ['developed', 'at'], ['at', 'Sugar'], ['Sugar', 'Labs,'], ['Labs,', 'is'], ['is', 'written'], ['written', 'in'], ['in', 'Python.[144]\\nThe'], ['Python.[144]\\nThe', 'Raspberry'], ['Raspberry', 'Pi'], ['Pi', 'single-board'], ['single-board', 'computer'], ['computer', 'project'], ['project', 'has'], ['has', 'adopted'], ['adopted', 'Python'], ['Python', 'as'], ['as', 'its'], ['its', 'main'], ['main', 'user-programming'], ['user-programming', 'language.\\nLibreOffice'], ['language.\\nLibreOffice', 'includes'], ['includes', 'Python,'], ['Python,', 'and'], ['and', 'intends'], ['intends', 'to'], ['to', 'replace'], ['replace', 'Java'], ['Java', 'with'], ['with', 'Python.'], ['Python.', 'Its'], ['Its', 'Python'], ['Python', 'Scripting'], ['Scripting', 'Provider'], ['Provider', 'is'], ['is', 'a'], ['a', 'core'], ['core', 'feature[145]'], ['feature[145]', 'since'], ['since', 'Version'], ['Version', '4.0'], ['4.0', 'from'], ['from', '7'], ['7', 'February'], ['February', '2013.\\nLanguages'], ['2013.\\nLanguages', 'influenced'], ['influenced', 'by'], ['by', \"Python[edit]\\nPython's\"], [\"Python[edit]\\nPython's\", 'design'], ['design', 'and'], ['and', 'philosophy'], ['philosophy', 'have'], ['have', 'influenced'], ['influenced', 'many'], ['many', 'other'], ['other', 'programming'], ['programming', 'languages:\\n\\nBoo'], ['languages:\\n\\nBoo', 'uses'], ['uses', 'indentation,'], ['indentation,', 'a'], ['a', 'similar'], ['similar', 'syntax,'], ['syntax,', 'and'], ['and', 'a'], ['a', 'similar'], ['similar', 'object'], ['object', 'model.[146]\\nCobra'], ['model.[146]\\nCobra', 'uses'], ['uses', 'indentation'], ['indentation', 'and'], ['and', 'a'], ['a', 'similar'], ['similar', 'syntax,'], ['syntax,', 'and'], ['and', 'its'], ['its', '\"Acknowledgements\"'], ['\"Acknowledgements\"', 'document'], ['document', 'lists'], ['lists', 'Python'], ['Python', 'first'], ['first', 'among'], ['among', 'languages'], ['languages', 'that'], ['that', 'influenced'], ['influenced', 'it.[147]'], ['it.[147]', 'However,'], ['However,', 'Cobra'], ['Cobra', 'directly'], ['directly', 'supports'], ['supports', 'design-by-contract,'], ['design-by-contract,', 'unit'], ['unit', 'tests,'], ['tests,', 'and'], ['and', 'optional'], ['optional', 'static'], ['static', 'typing.[148]\\nCoffeeScript,'], ['typing.[148]\\nCoffeeScript,', 'a'], ['a', 'programming'], ['programming', 'language'], ['language', 'that'], ['that', 'cross-compiles'], ['cross-compiles', 'to'], ['to', 'JavaScript,'], ['JavaScript,', 'has'], ['has', 'Python-inspired'], ['Python-inspired', 'syntax.\\nECMAScript'], ['syntax.\\nECMAScript', 'borrowed'], ['borrowed', 'iterators,'], ['iterators,', 'generators'], ['generators', 'and'], ['and', 'list'], ['list', 'comprehensions'], ['comprehensions', 'from'], ['from', 'Python.[149]\\nGo'], ['Python.[149]\\nGo', 'is'], ['is', 'described'], ['described', 'as'], ['as', 'incorporating'], ['incorporating', 'the'], ['the', '\"development'], ['\"development', 'speed'], ['speed', 'of'], ['of', 'working'], ['working', 'in'], ['in', 'a'], ['a', 'dynamic'], ['dynamic', 'language'], ['language', 'like'], ['like', 'Python\".[150]\\nGroovy'], ['Python\".[150]\\nGroovy', 'was'], ['was', 'motivated'], ['motivated', 'by'], ['by', 'the'], ['the', 'desire'], ['desire', 'to'], ['to', 'bring'], ['bring', 'the'], ['the', 'Python'], ['Python', 'design'], ['design', 'philosophy'], ['philosophy', 'to'], ['to', 'Java.[151]\\nJulia'], ['Java.[151]\\nJulia', 'was'], ['was', 'designed'], ['designed', '\"with'], ['\"with', 'true'], ['true', 'macros'], ['macros', '[..'], ['[..', 'and'], ['and', 'to'], ['to', 'be]'], ['be]', 'as'], ['as', 'usable'], ['usable', 'for'], ['for', 'general'], ['general', 'programming'], ['programming', 'as'], ['as', 'Python'], ['Python', '[and]'], ['[and]', 'should'], ['should', 'be'], ['be', 'as'], ['as', 'fast'], ['fast', 'as'], ['as', 'C\".[21]'], ['C\".[21]', 'Calling'], ['Calling', 'to'], ['to', 'or'], ['or', 'from'], ['from', 'Julia'], ['Julia', 'is'], ['is', 'possible;'], ['possible;', 'to'], ['to', 'with'], ['with', 'PyCall.jl'], ['PyCall.jl', 'and'], ['and', 'a'], ['a', 'Python'], ['Python', 'package'], ['package', 'pyjulia'], ['pyjulia', 'allows'], ['allows', 'calling,'], ['calling,', 'in'], ['in', 'the'], ['the', 'other'], ['other', 'direction,'], ['direction,', 'from'], ['from', 'Python.\\nOCaml'], ['Python.\\nOCaml', 'has'], ['has', 'an'], ['an', 'optional'], ['optional', 'syntax'], ['syntax', 'named'], ['named', 'twt'], ['twt', '(The'], ['(The', 'Whitespace'], ['Whitespace', 'Thing),'], ['Thing),', 'inspired'], ['inspired', 'by'], ['by', 'Python'], ['Python', 'and'], ['and', \"Haskell.[152]\\nRuby's\"], [\"Haskell.[152]\\nRuby's\", 'creator,'], ['creator,', 'Yukihiro'], ['Yukihiro', 'Matsumoto,'], ['Matsumoto,', 'has'], ['has', 'said:'], ['said:', '\"I'], ['\"I', 'wanted'], ['wanted', 'a'], ['a', 'scripting'], ['scripting', 'language'], ['language', 'that'], ['that', 'was'], ['was', 'more'], ['more', 'powerful'], ['powerful', 'than'], ['than', 'Perl,'], ['Perl,', 'and'], ['and', 'more'], ['more', 'object-oriented'], ['object-oriented', 'than'], ['than', 'Python.'], ['Python.', \"That's\"], [\"That's\", 'why'], ['why', 'I'], ['I', 'decided'], ['decided', 'to'], ['to', 'design'], ['design', 'my'], ['my', 'own'], ['own', 'language.\"[153]\\nSwift,'], ['language.\"[153]\\nSwift,', 'a'], ['a', 'programming'], ['programming', 'language'], ['language', 'developed'], ['developed', 'by'], ['by', 'Apple,'], ['Apple,', 'has'], ['has', 'some'], ['some', 'Python-inspired'], ['Python-inspired', \"syntax.[154]\\n\\nPython's\"], [\"syntax.[154]\\n\\nPython's\", 'development'], ['development', 'practices'], ['practices', 'have'], ['have', 'also'], ['also', 'been'], ['been', 'emulated'], ['emulated', 'by'], ['by', 'other'], ['other', 'languages.'], ['languages.', 'For'], ['For', 'example,'], ['example,', 'the'], ['the', 'practice'], ['practice', 'of'], ['of', 'requiring'], ['requiring', 'a'], ['a', 'document'], ['document', 'describing'], ['describing', 'the'], ['the', 'rationale'], ['rationale', 'for,'], ['for,', 'and'], ['and', 'issues'], ['issues', 'surrounding,'], ['surrounding,', 'a'], ['a', 'change'], ['change', 'to'], ['to', 'the'], ['the', 'language'], ['language', '(in'], ['(in', 'Python,'], ['Python,', 'a'], ['a', 'PEP)'], ['PEP)', 'is'], ['is', 'also'], ['also', 'used'], ['used', 'in'], ['in', 'Tcl[155]'], ['Tcl[155]', 'and'], ['and', 'Erlang[156].\\nPython'], ['Erlang[156].\\nPython', 'received'], ['received', \"TIOBE's\"], [\"TIOBE's\", 'Programming'], ['Programming', 'Language'], ['Language', 'of'], ['of', 'the'], ['the', 'Year'], ['Year', 'awards'], ['awards', 'in'], ['in', '2007'], ['2007', 'and'], ['and', '2010.'], ['2010.', 'The'], ['The', 'award'], ['award', 'is'], ['is', 'given'], ['given', 'to'], ['to', 'the'], ['the', 'language'], ['language', 'with'], ['with', 'the'], ['the', 'greatest'], ['greatest', 'growth'], ['growth', 'in'], ['in', 'popularity'], ['popularity', 'over'], ['over', 'the'], ['the', 'year,'], ['year,', 'as'], ['as', 'measured'], ['measured', 'by'], ['by', 'the'], ['the', 'TIOBE'], ['TIOBE', 'index.[157]\\nSee'], ['index.[157]\\nSee', 'also[edit]\\n\\n\\nFree'], ['also[edit]\\n\\n\\nFree', 'software'], ['software', 'portal\\nPython'], ['portal\\nPython', 'programming'], ['programming', 'portal\\n\\n\\n\\nComparison'], ['portal\\n\\n\\n\\nComparison', 'of'], ['of', 'integrated'], ['integrated', 'development'], ['development', 'environments'], ['environments', 'for'], ['for', 'Python\\nComparison'], ['Python\\nComparison', 'of'], ['of', 'programming'], ['programming', 'languages\\nList'], ['languages\\nList', 'of'], ['of', 'programming'], ['programming', 'languages\\nOff-side'], ['languages\\nOff-side', 'rule\\n\\nReferences[edit]\\n\\n\\n^'], ['rule\\n\\nReferences[edit]\\n\\n\\n^', '\"The'], ['\"The', 'History'], ['History', 'of'], ['of', 'Python:'], ['Python:', 'A'], ['A', 'Brief'], ['Brief', 'Timeline'], ['Timeline', 'of'], ['of', 'Python\".'], ['Python\".', 'Blogger.'], ['Blogger.', '20'], ['20', 'January'], ['January', '2009.'], ['2009.', 'Retrieved'], ['Retrieved', '20'], ['20', 'March'], ['March', '2016.\\xa0\\n^'], ['2016.\\xa0\\n^', 'Deily,'], ['Deily,', 'Ned'], ['Ned', '(19'], ['(19', 'December'], ['December', '2017).'], ['2017).', '\"Python'], ['\"Python', '3.6.4'], ['3.6.4', 'is'], ['is', 'now'], ['now', 'available\".'], ['available\".', 'Python'], ['Python', 'Insider.'], ['Insider.', 'The'], ['The', 'Python'], ['Python', 'Core'], ['Core', 'Developers.'], ['Developers.', 'Retrieved'], ['Retrieved', '20'], ['20', 'December'], ['December', '2017.\\xa0\\n^'], ['2017.\\xa0\\n^', 'Peterson,'], ['Peterson,', 'Benjamin'], ['Benjamin', '(16'], ['(16', 'September'], ['September', '2017).'], ['2017).', '\"Python'], ['\"Python', '2.7.14'], ['2.7.14', 'released\".'], ['released\".', 'Python'], ['Python', 'Insider.'], ['Insider.', 'The'], ['The', 'Python'], ['Python', 'Core'], ['Core', 'Developers.'], ['Developers.', 'Retrieved'], ['Retrieved', '17'], ['17', 'September'], ['September', '2017.\\xa0\\n^'], ['2017.\\xa0\\n^', 'File'], ['File', 'extension'], ['extension', '.pyo'], ['.pyo', 'was'], ['was', 'removed'], ['removed', 'in'], ['in', 'Python'], ['Python', '3.5.'], ['3.5.', 'See'], ['See', 'PEP'], ['PEP', '0488\\n^'], ['0488\\n^', 'Holth,'], ['Holth,', 'Moore'], ['Moore', '(30'], ['(30', 'March'], ['March', '2014).'], ['2014).', '\"PEP'], ['\"PEP', '0441'], ['0441', '--'], ['--', 'Improving'], ['Improving', 'Python'], ['Python', 'ZIP'], ['ZIP', 'Application'], ['Application', 'Support\".'], ['Support\".', 'Retrieved'], ['Retrieved', '12'], ['12', 'November'], ['November', '2015.\\xa0\\n^'], ['2015.\\xa0\\n^', 'a'], ['a', 'b'], ['b', '\"Why'], ['\"Why', 'was'], ['was', 'Python'], ['Python', 'created'], ['created', 'in'], ['in', 'the'], ['the', 'first'], ['first', 'place?\".'], ['place?\".', 'General'], ['General', 'Python'], ['Python', 'FAQ.'], ['FAQ.', 'Python'], ['Python', 'Software'], ['Software', 'Foundation.'], ['Foundation.', 'Retrieved'], ['Retrieved', '22'], ['22', 'March'], ['March', '2007.\\xa0\\n^'], ['2007.\\xa0\\n^', 'Kuchling,'], ['Kuchling,', 'Andrew'], ['Andrew', 'M.'], ['M.', '(22'], ['(22', 'December'], ['December', '2006).'], ['2006).', '\"Interview'], ['\"Interview', 'with'], ['with', 'Guido'], ['Guido', 'van'], ['van', 'Rossum'], ['Rossum', '(July'], ['(July', '1998)\".'], ['1998)\".', 'amk.ca.'], ['amk.ca.', 'Archived'], ['Archived', 'from'], ['from', 'the'], ['the', 'original'], ['original', 'on'], ['on', '1'], ['1', 'May'], ['May', '2007.'], ['2007.', 'Retrieved'], ['Retrieved', '12'], ['12', 'March'], ['March', '2012.\\xa0\\n^'], ['2012.\\xa0\\n^', 'van'], ['van', 'Rossum,'], ['Rossum,', 'Guido'], ['Guido', '(1993).'], ['(1993).', '\"An'], ['\"An', 'Introduction'], ['Introduction', 'to'], ['to', 'Python'], ['Python', 'for'], ['for', 'UNIX/C'], ['UNIX/C', 'Programmers\".'], ['Programmers\".', 'Proceedings'], ['Proceedings', 'of'], ['of', 'the'], ['the', 'NLUUG'], ['NLUUG', 'najaarsconferentie'], ['najaarsconferentie', '(Dutch'], ['(Dutch', 'UNIX'], ['UNIX', 'users'], ['users', 'group).'], ['group).', 'even'], ['even', 'though'], ['though', 'the'], ['the', 'design'], ['design', 'of'], ['of', 'C'], ['C', 'is'], ['is', 'far'], ['far', 'from'], ['from', 'ideal,'], ['ideal,', 'its'], ['its', 'influence'], ['influence', 'on'], ['on', 'Python'], ['Python', 'is'], ['is', 'considerable.\\xa0\\n^'], ['considerable.\\xa0\\n^', 'a'], ['a', 'b'], ['b', '\"Classes\".'], ['\"Classes\".', 'The'], ['The', 'Python'], ['Python', 'Tutorial.'], ['Tutorial.', 'Python'], ['Python', 'Software'], ['Software', 'Foundation.'], ['Foundation.', 'Retrieved'], ['Retrieved', '20'], ['20', 'February'], ['February', '2012.'], ['2012.', 'It'], ['It', 'is'], ['is', 'a'], ['a', 'mixture'], ['mixture', 'of'], ['of', 'the'], ['the', 'class'], ['class', 'mechanisms'], ['mechanisms', 'found'], ['found', 'in'], ['in', 'C++'], ['C++', 'and'], ['and', 'Modula-3\\xa0\\n^'], ['Modula-3\\xa0\\n^', 'Lundh,'], ['Lundh,', 'Fredrik.'], ['Fredrik.', '\"Call'], ['\"Call', 'By'], ['By', 'Object\".'], ['Object\".', 'effbot.org.'], ['effbot.org.', 'Retrieved'], ['Retrieved', '21'], ['21', 'November'], ['November', '2017.'], ['2017.', 'replace'], ['replace', '\"CLU\"'], ['\"CLU\"', 'with'], ['with', '\"Python\",'], ['\"Python\",', '\"record\"'], ['\"record\"', 'with'], ['with', '\"instance\",'], ['\"instance\",', 'and'], ['and', '\"procedure\"'], ['\"procedure\"', 'with'], ['with', '\"function'], ['\"function', 'or'], ['or', 'method\",'], ['method\",', 'and'], ['and', 'you'], ['you', 'get'], ['get', 'a'], ['a', 'pretty'], ['pretty', 'accurate'], ['accurate', 'description'], ['description', 'of'], ['of', \"Python's\"], [\"Python's\", 'object'], ['object', 'model.\\xa0\\n^'], ['model.\\xa0\\n^', 'Simionato,'], ['Simionato,', 'Michele.'], ['Michele.', '\"The'], ['\"The', 'Python'], ['Python', '2.3'], ['2.3', 'Method'], ['Method', 'Resolution'], ['Resolution', 'Order\".'], ['Order\".', 'Python'], ['Python', 'Software'], ['Software', 'Foundation.'], ['Foundation.', 'The'], ['The', 'C3'], ['C3', 'method'], ['method', 'itself'], ['itself', 'has'], ['has', 'nothing'], ['nothing', 'to'], ['to', 'do'], ['do', 'with'], ['with', 'Python,'], ['Python,', 'since'], ['since', 'it'], ['it', 'was'], ['was', 'invented'], ['invented', 'by'], ['by', 'people'], ['people', 'working'], ['working', 'on'], ['on', 'Dylan'], ['Dylan', 'and'], ['and', 'it'], ['it', 'is'], ['is', 'described'], ['described', 'in'], ['in', 'a'], ['a', 'paper'], ['paper', 'intended'], ['intended', 'for'], ['for', 'lispers\\xa0\\n^'], ['lispers\\xa0\\n^', 'Kuchling,'], ['Kuchling,', 'A.'], ['A.', 'M.'], ['M.', '\"Functional'], ['\"Functional', 'Programming'], ['Programming', 'HOWTO\".'], ['HOWTO\".', 'Python'], ['Python', 'v2.7.2'], ['v2.7.2', 'documentation.'], ['documentation.', 'Python'], ['Python', 'Software'], ['Software', 'Foundation.'], ['Foundation.', 'Retrieved'], ['Retrieved', '9'], ['9', 'February'], ['February', '2012.\\xa0\\n^'], ['2012.\\xa0\\n^', 'Schemenauer,'], ['Schemenauer,', 'Neil;'], ['Neil;', 'Peters,'], ['Peters,', 'Tim;'], ['Tim;', 'Hetland,'], ['Hetland,', 'Magnus'], ['Magnus', 'Lie'], ['Lie', '(18'], ['(18', 'May'], ['May', '2001).'], ['2001).', '\"PEP'], ['\"PEP', '255\\xa0–'], ['255\\xa0–', 'Simple'], ['Simple', 'Generators\".'], ['Generators\".', 'Python'], ['Python', 'Enhancement'], ['Enhancement', 'Proposals.'], ['Proposals.', 'Python'], ['Python', 'Software'], ['Software', 'Foundation.'], ['Foundation.', 'Retrieved'], ['Retrieved', '9'], ['9', 'February'], ['February', '2012.\\xa0\\n^'], ['2012.\\xa0\\n^', 'Smith,'], ['Smith,', 'Kevin'], ['Kevin', 'D.;'], ['D.;', 'Jewett,'], ['Jewett,', 'Jim'], ['Jim', 'J.;'], ['J.;', 'Montanaro,'], ['Montanaro,', 'Skip;'], ['Skip;', 'Baxter,'], ['Baxter,', 'Anthony'], ['Anthony', '(2'], ['(2', 'September'], ['September', '2004).'], ['2004).', '\"PEP'], ['\"PEP', '318\\xa0–'], ['318\\xa0–', 'Decorators'], ['Decorators', 'for'], ['for', 'Functions'], ['Functions', 'and'], ['and', 'Methods\".'], ['Methods\".', 'Python'], ['Python', 'Enhancement'], ['Enhancement', 'Proposals.'], ['Proposals.', 'Python'], ['Python', 'Software'], ['Software', 'Foundation.'], ['Foundation.', 'Retrieved'], ['Retrieved', '24'], ['24', 'February'], ['February', '2012.\\xa0\\n^'], ['2012.\\xa0\\n^', '\"More'], ['\"More', 'Control'], ['Control', 'Flow'], ['Flow', 'Tools\".'], ['Tools\".', 'Python'], ['Python', '3'], ['3', 'documentation.'], ['documentation.', 'Python'], ['Python', 'Software'], ['Software', 'Foundation.'], ['Foundation.', 'Retrieved'], ['Retrieved', '24'], ['24', 'July'], ['July', '2015.\\xa0\\n^'], ['2015.\\xa0\\n^', 'Hubinger,'], ['Hubinger,', 'Evan.'], ['Evan.', '\"Coconut'], ['\"Coconut', 'Programming'], ['Programming', 'Language\".'], ['Language\".', 'coconut-lang.org.'], ['coconut-lang.org.', 'Retrieved'], ['Retrieved', '18'], ['18', 'August'], ['August', '2017.\\xa0\\n^'], ['2017.\\xa0\\n^', '\"CoffeeScript'], ['\"CoffeeScript', 'borrows'], ['borrows', 'chained'], ['chained', 'comparisons'], ['comparisons', 'from'], ['from', 'Python\".\\xa0\\n^'], ['Python\".\\xa0\\n^', '\"Genie'], ['\"Genie', 'Language'], ['Language', '-'], ['-', 'A'], ['A', 'brief'], ['brief', 'guide\".'], ['guide\".', 'Retrieved'], ['Retrieved', '28'], ['28', 'December'], ['December', '2015.\\xa0\\n^'], ['2015.\\xa0\\n^', '\"Perl'], ['\"Perl', 'and'], ['and', 'Python'], ['Python', 'influences'], ['influences', 'in'], ['in', 'JavaScript\".'], ['JavaScript\".', 'www.2ality.com.'], ['www.2ality.com.', '24'], ['24', 'February'], ['February', '2013.'], ['2013.', 'Retrieved'], ['Retrieved', '15'], ['15', 'May'], ['May', '2015.\\xa0\\n^'], ['2015.\\xa0\\n^', 'Rauschmayer,'], ['Rauschmayer,', 'Axel.'], ['Axel.', '\"Chapter'], ['\"Chapter', '3:'], ['3:', 'The'], ['The', 'Nature'], ['Nature', 'of'], ['of', 'JavaScript;'], ['JavaScript;', 'Influences\".'], ['Influences\".', \"O'Reilly,\"], [\"O'Reilly,\", 'Speaking'], ['Speaking', 'JavaScript.'], ['JavaScript.', 'Retrieved'], ['Retrieved', '15'], ['15', 'May'], ['May', '2015.\\xa0\\n^'], ['2015.\\xa0\\n^', 'a'], ['a', 'b'], ['b', '\"Why'], ['\"Why', 'We'], ['We', 'Created'], ['Created', 'Julia\".'], ['Julia\".', 'Julia'], ['Julia', 'website.'], ['website.', 'February'], ['February', '2012.'], ['2012.', 'Retrieved'], ['Retrieved', '5'], ['5', 'June'], ['June', '2014.\\xa0\\n^'], ['2014.\\xa0\\n^', 'Ring'], ['Ring', 'Team'], ['Team', '(4'], ['(4', 'December'], ['December', '2017).'], ['2017).', '\"Ring'], ['\"Ring', 'and'], ['and', 'other'], ['other', 'languages\".'], ['languages\".', 'ring-lang.net.'], ['ring-lang.net.', 'ring-lang.\\xa0\\n^'], ['ring-lang.\\xa0\\n^', 'Bini,'], ['Bini,', 'Ola'], ['Ola', '(2007).'], ['(2007).', 'Practical'], ['Practical', 'JRuby'], ['JRuby', 'on'], ['on', 'Rails'], ['Rails', 'Web'], ['Web', '2.0'], ['2.0', 'Projects:'], ['Projects:', 'bringing'], ['bringing', 'Ruby'], ['Ruby', 'on'], ['on', 'Rails'], ['Rails', 'to'], ['to', 'the'], ['the', 'Java'], ['Java', 'platform.'], ['platform.', 'Berkeley:'], ['Berkeley:', 'APress.'], ['APress.', 'p.\\xa03.'], ['p.\\xa03.', 'ISBN\\xa0978-1-59059-881-8.\\xa0\\n^'], ['ISBN\\xa0978-1-59059-881-8.\\xa0\\n^', 'Lattner,'], ['Lattner,', 'Chris'], ['Chris', '(3'], ['(3', 'June'], ['June', '2014).'], ['2014).', '\"Chris'], ['\"Chris', \"Lattner's\"], [\"Lattner's\", 'Homepage\".'], ['Homepage\".', 'Chris'], ['Chris', 'Lattner.'], ['Lattner.', 'Retrieved'], ['Retrieved', '3'], ['3', 'June'], ['June', '2014.'], ['2014.', 'The'], ['The', 'Swift'], ['Swift', 'language'], ['language', 'is'], ['is', 'the'], ['the', 'product'], ['product', 'of'], ['of', 'tireless'], ['tireless', 'effort'], ['effort', 'from'], ['from', 'a'], ['a', 'team'], ['team', 'of'], ['of', 'language'], ['language', 'experts,'], ['experts,', 'documentation'], ['documentation', 'gurus,'], ['gurus,', 'compiler'], ['compiler', 'optimization'], ['optimization', 'ninjas,'], ['ninjas,', 'and'], ['and', 'an'], ['an', 'incredibly'], ['incredibly', 'important'], ['important', 'internal'], ['internal', 'dogfooding'], ['dogfooding', 'group'], ['group', 'who'], ['who', 'provided'], ['provided', 'feedback'], ['feedback', 'to'], ['to', 'help'], ['help', 'refine'], ['refine', 'and'], ['and', 'battle-test'], ['battle-test', 'ideas.'], ['ideas.', 'Of'], ['Of', 'course,'], ['course,', 'it'], ['it', 'also'], ['also', 'greatly'], ['greatly', 'benefited'], ['benefited', 'from'], ['from', 'the'], ['the', 'experiences'], ['experiences', 'hard-won'], ['hard-won', 'by'], ['by', 'many'], ['many', 'other'], ['other', 'languages'], ['languages', 'in'], ['in', 'the'], ['the', 'field,'], ['field,', 'drawing'], ['drawing', 'ideas'], ['ideas', 'from'], ['from', 'Objective-C,'], ['Objective-C,', 'Rust,'], ['Rust,', 'Haskell,'], ['Haskell,', 'Ruby,'], ['Ruby,', 'Python,'], ['Python,', 'C#,'], ['C#,', 'CLU,'], ['CLU,', 'and'], ['and', 'far'], ['far', 'too'], ['too', 'many'], ['many', 'others'], ['others', 'to'], ['to', 'list.\\xa0\\n^'], ['list.\\xa0\\n^', 'Summerfield,'], ['Summerfield,', 'Mark.'], ['Mark.', 'Rapid'], ['Rapid', 'GUI'], ['GUI', 'Programming'], ['Programming', 'with'], ['with', 'Python'], ['Python', 'and'], ['and', 'Qt.'], ['Qt.', 'Python'], ['Python', 'is'], ['is', 'a'], ['a', 'very'], ['very', 'expressive'], ['expressive', 'language,'], ['language,', 'which'], ['which', 'means'], ['means', 'that'], ['that', 'we'], ['we', 'can'], ['can', 'usually'], ['usually', 'write'], ['write', 'far'], ['far', 'fewer'], ['fewer', 'lines'], ['lines', 'of'], ['of', 'Python'], ['Python', 'code'], ['code', 'than'], ['than', 'would'], ['would', 'be'], ['be', 'required'], ['required', 'for'], ['for', 'an'], ['an', 'equivalent'], ['equivalent', 'application'], ['application', 'written'], ['written', 'in,'], ['in,', 'say,'], ['say,', 'C++'], ['C++', 'or'], ['or', 'Java\\xa0\\n^'], ['Java\\xa0\\n^', 'McConnell,'], ['McConnell,', 'Steve'], ['Steve', '(30'], ['(30', 'November'], ['November', '2009).'], ['2009).', 'Code'], ['Code', 'Complete,'], ['Complete,', 'p.'], ['p.', '100.'], ['100.', 'ISBN\\xa09780735636972.\\xa0\\n^'], ['ISBN\\xa09780735636972.\\xa0\\n^', 'Kuhlman,'], ['Kuhlman,', 'Dave.'], ['Dave.', '\"A'], ['\"A', 'Python'], ['Python', 'Book:'], ['Book:', 'Beginning'], ['Beginning', 'Python,'], ['Python,', 'Advanced'], ['Advanced', 'Python,'], ['Python,', 'and'], ['and', 'Python'], ['Python', 'Exercises\".\\xa0\\n^'], ['Exercises\".\\xa0\\n^', '\"About'], ['\"About', 'Python\".'], ['Python\".', 'Python'], ['Python', 'Software'], ['Software', 'Foundation.'], ['Foundation.', 'Retrieved'], ['Retrieved', '24'], ['24', 'April'], ['April', '2012.\\xa0,'], ['2012.\\xa0,', 'second'], ['second', 'section'], ['section', '\"Fans'], ['\"Fans', 'of'], ['of', 'Python'], ['Python', 'use'], ['use', 'the'], ['the', 'phrase'], ['phrase', '\"batteries'], ['\"batteries', 'included\"'], ['included\"', 'to'], ['to', 'describe'], ['describe', 'the'], ['the', 'standard'], ['standard', 'library,'], ['library,', 'which'], ['which', 'covers'], ['covers', 'everything'], ['everything', 'from'], ['from', 'asynchronous'], ['asynchronous', 'processing'], ['processing', 'to'], ['to', 'zip'], ['zip', 'files.\"\\n^'], ['files.\"\\n^', '\"History'], ['\"History', 'and'], ['and', 'License\".'], ['License\".', 'Retrieved'], ['Retrieved', '5'], ['5', 'December'], ['December', '2016.\\xa0'], ['2016.\\xa0', '\"All'], ['\"All', 'Python'], ['Python', 'releases'], ['releases', 'are'], ['are', 'Open'], ['Open', 'Source\"\\n^'], ['Source\"\\n^', 'a'], ['a', 'b'], ['b', 'Venners,'], ['Venners,', 'Bill'], ['Bill', '(13'], ['(13', 'January'], ['January', '2003).'], ['2003).', '\"The'], ['\"The', 'Making'], ['Making', 'of'], ['of', 'Python\".'], ['Python\".', 'Artima'], ['Artima', 'Developer.'], ['Developer.', 'Artima.'], ['Artima.', 'Retrieved'], ['Retrieved', '22'], ['22', 'March'], ['March', '2007.\\xa0\\n^'], ['2007.\\xa0\\n^', 'van'], ['van', 'Rossum,'], ['Rossum,', 'Guido'], ['Guido', '(20'], ['(20', 'January'], ['January', '2009).'], ['2009).', '\"A'], ['\"A', 'Brief'], ['Brief', 'Timeline'], ['Timeline', 'of'], ['of', 'Python\".'], ['Python\".', 'The'], ['The', 'History'], ['History', 'of'], ['of', 'Python.'], ['Python.', 'Google.'], ['Google.', 'Retrieved'], ['Retrieved', '20'], ['20', 'January'], ['January', '2009.\\xa0\\n^'], ['2009.\\xa0\\n^', 'van'], ['van', 'Rossum,'], ['Rossum,', 'Guido'], ['Guido', '(29'], ['(29', 'August'], ['August', '2000).'], ['2000).', '\"SETL'], ['\"SETL', '(was:'], ['(was:', 'Lukewarm'], ['Lukewarm', 'about'], ['about', 'range'], ['range', 'literals)\".'], ['literals)\".', 'Python-Dev'], ['Python-Dev', '(Mailing'], ['(Mailing', 'list).'], ['list).', 'Retrieved'], ['Retrieved', '13'], ['13', 'March'], ['March', '2011.\\xa0\\n^'], ['2011.\\xa0\\n^', 'van'], ['van', 'Rossum,'], ['Rossum,', 'Guido'], ['Guido', '(1996).'], ['(1996).', '\"Foreword'], ['\"Foreword', 'for'], ['for', '\"Programming'], ['\"Programming', 'Python\"'], ['Python\"', '(1st'], ['(1st', 'ed.)\".'], ['ed.)\".', 'Retrieved'], ['Retrieved', '10'], ['10', 'July'], ['July', '2014.\\xa0\\n^'], ['2014.\\xa0\\n^', 'Kuchling,'], ['Kuchling,', 'A.'], ['A.', 'M.;'], ['M.;', 'Zadka,'], ['Zadka,', 'Moshe'], ['Moshe', '(16'], ['(16', 'October'], ['October', '2000).'], ['2000).', '\"What\\'s'], ['\"What\\'s', 'New'], ['New', 'in'], ['in', 'Python'], ['Python', '2.0\".'], ['2.0\".', 'Python'], ['Python', 'Software'], ['Software', 'Foundation.'], ['Foundation.', 'Retrieved'], ['Retrieved', '11'], ['11', 'February'], ['February', '2012.\\xa0\\n^'], ['2012.\\xa0\\n^', '\"Python'], ['\"Python', '3.0'], ['3.0', 'Release\".'], ['Release\".', 'Python'], ['Python', 'Software'], ['Software', 'Foundation.'], ['Foundation.', 'Retrieved'], ['Retrieved', '8'], ['8', 'July'], ['July', '2009.\\xa0\\n^'], ['2009.\\xa0\\n^', 'van'], ['van', 'Rossum,'], ['Rossum,', 'Guido'], ['Guido', '(5'], ['(5', 'April'], ['April', '2006).'], ['2006).', '\"PEP'], ['\"PEP', '3000\\xa0–'], ['3000\\xa0–', 'Python'], ['Python', '3000\".'], ['3000\".', 'Python'], ['Python', 'Enhancement'], ['Enhancement', 'Proposals.'], ['Proposals.', 'Python'], ['Python', 'Software'], ['Software', 'Foundation.'], ['Foundation.', 'Retrieved'], ['Retrieved', '27'], ['27', 'June'], ['June', '2009.\\xa0\\n^'], ['2009.\\xa0\\n^', '\"PEP'], ['\"PEP', '373'], ['373', '--'], ['--', 'Python'], ['Python', '2.7'], ['2.7', 'Release'], ['Release', 'Schedule\".'], ['Schedule\".', 'python.org.'], ['python.org.', 'Retrieved'], ['Retrieved', '9'], ['9', 'January'], ['January', '2017.\\xa0\\n^'], ['2017.\\xa0\\n^', '\"PEP'], ['\"PEP', '466'], ['466', '--'], ['--', 'Network'], ['Network', 'Security'], ['Security', 'Enhancements'], ['Enhancements', 'for'], ['for', 'Python'], ['Python', '2.7.x\".'], ['2.7.x\".', 'python.org.'], ['python.org.', 'Retrieved'], ['Retrieved', '9'], ['9', 'January'], ['January', '2017.\\xa0\\n^'], ['2017.\\xa0\\n^', 'Claburn,'], ['Claburn,', 'Thomas'], ['Thomas', '(5'], ['(5', 'January'], ['January', '2017).'], ['2017).', '\"Google\\'s'], ['\"Google\\'s', 'Grumpy'], ['Grumpy', 'code'], ['code', 'makes'], ['makes', 'Python'], ['Python', 'Go\".'], ['Go\".', 'Retrieved'], ['Retrieved', '9'], ['9', 'January'], ['January', '2017.\\xa0\\n^'], ['2017.\\xa0\\n^', '\"Google'], ['\"Google', 'Open'], ['Open', 'Source'], ['Source', 'Blog:'], ['Blog:', 'Grumpy:'], ['Grumpy:', 'Go'], ['Go', 'running'], ['running', 'Python!\".'], ['Python!\".', '4'], ['4', 'January'], ['January', '2017.'], ['2017.', 'Retrieved'], ['Retrieved', '7'], ['7', 'March'], ['March', '2017.\\xa0\\n^'], ['2017.\\xa0\\n^', 'The'], ['The', 'Cain'], ['Cain', 'Gang'], ['Gang', 'Ltd.'], ['Ltd.', '\"Python'], ['\"Python', 'Metaclasses:'], ['Metaclasses:', 'Who?'], ['Who?', 'Why?'], ['Why?', 'When?\"'], ['When?\"', '(PDF).'], ['(PDF).', 'Archived'], ['Archived', 'from'], ['from', 'the'], ['the', 'original'], ['original', '(PDF)'], ['(PDF)', 'on'], ['on', '10'], ['10', 'December'], ['December', '2009.'], ['2009.', 'Retrieved'], ['Retrieved', '27'], ['27', 'June'], ['June', '2009.\\xa0\\n^'], ['2009.\\xa0\\n^', '\"3.3.'], ['\"3.3.', 'Special'], ['Special', 'method'], ['method', 'names\".'], ['names\".', 'The'], ['The', 'Python'], ['Python', 'Language'], ['Language', 'Reference.'], ['Reference.', 'Python'], ['Python', 'Software'], ['Software', 'Foundation.'], ['Foundation.', 'Retrieved'], ['Retrieved', '27'], ['27', 'June'], ['June', '2009.\\xa0\\n^'], ['2009.\\xa0\\n^', '\"PyDBC:'], ['\"PyDBC:', 'method'], ['method', 'preconditions,'], ['preconditions,', 'method'], ['method', 'postconditions'], ['postconditions', 'and'], ['and', 'class'], ['class', 'invariants'], ['invariants', 'for'], ['for', 'Python\".'], ['Python\".', 'Retrieved'], ['Retrieved', '24'], ['24', 'September'], ['September', '2011.\\xa0\\n^'], ['2011.\\xa0\\n^', '\"Contracts'], ['\"Contracts', 'for'], ['for', 'Python\".'], ['Python\".', 'Retrieved'], ['Retrieved', '24'], ['24', 'September'], ['September', '2011.\\xa0\\n^'], ['2011.\\xa0\\n^', '\"PyDatalog\".'], ['\"PyDatalog\".', 'Retrieved'], ['Retrieved', '22'], ['22', 'July'], ['July', '2012.\\xa0\\n^'], ['2012.\\xa0\\n^', 'a'], ['a', 'b'], ['b', 'Hettinger,'], ['Hettinger,', 'Raymond'], ['Raymond', '(30'], ['(30', 'January'], ['January', '2002).'], ['2002).', '\"PEP'], ['\"PEP', '289\\xa0–'], ['289\\xa0–', 'Generator'], ['Generator', 'Expressions\".'], ['Expressions\".', 'Python'], ['Python', 'Enhancement'], ['Enhancement', 'Proposals.'], ['Proposals.', 'Python'], ['Python', 'Software'], ['Software', 'Foundation.'], ['Foundation.', 'Retrieved'], ['Retrieved', '19'], ['19', 'February'], ['February', '2012.\\xa0\\n^'], ['2012.\\xa0\\n^', '\"6.5'], ['\"6.5', 'itertools\\xa0–'], ['itertools\\xa0–', 'Functions'], ['Functions', 'creating'], ['creating', 'iterators'], ['iterators', 'for'], ['for', 'efficient'], ['efficient', 'looping\".'], ['looping\".', 'Docs.python.org.'], ['Docs.python.org.', 'Retrieved'], ['Retrieved', '22'], ['22', 'November'], ['November', '2016.\\xa0\\n^'], ['2016.\\xa0\\n^', 'a'], ['a', 'b'], ['b', 'Peters,'], ['Peters,', 'Tim'], ['Tim', '(19'], ['(19', 'August'], ['August', '2004).'], ['2004).', '\"PEP'], ['\"PEP', '20\\xa0–'], ['20\\xa0–', 'The'], ['The', 'Zen'], ['Zen', 'of'], ['of', 'Python\".'], ['Python\".', 'Python'], ['Python', 'Enhancement'], ['Enhancement', 'Proposals.'], ['Proposals.', 'Python'], ['Python', 'Software'], ['Software', 'Foundation.'], ['Foundation.', 'Retrieved'], ['Retrieved', '24'], ['24', 'November'], ['November', '2008.\\xa0\\n^'], ['2008.\\xa0\\n^', 'Martelli,'], ['Martelli,', 'Alex;'], ['Alex;', 'Ravenscroft,'], ['Ravenscroft,', 'Anna;'], ['Anna;', 'Ascher,'], ['Ascher,', 'David'], ['David', '(2005).'], ['(2005).', 'Python'], ['Python', 'Cookbook,'], ['Cookbook,', '2nd'], ['2nd', 'Edition.'], ['Edition.', \"O'Reilly\"], [\"O'Reilly\", 'Media.'], ['Media.', 'p.\\xa0230.'], ['p.\\xa0230.', 'ISBN\\xa0978-0-596-00797-3.\\xa0\\n^'], ['ISBN\\xa0978-0-596-00797-3.\\xa0\\n^', '\"Python'], ['\"Python', 'Culture\".\\xa0\\n^'], ['Culture\".\\xa0\\n^', '\"General'], ['\"General', 'Python'], ['Python', 'FAQ\".'], ['FAQ\".', 'Python'], ['Python', 'v2.7.3'], ['v2.7.3', 'documentation.'], ['documentation.', 'Docs.python.org.'], ['Docs.python.org.', 'Retrieved'], ['Retrieved', '3'], ['3', 'December'], ['December', '2012.\\xa0\\n^'], ['2012.\\xa0\\n^', '\"15'], ['\"15', 'Ways'], ['Ways', 'Python'], ['Python', 'Is'], ['Is', 'a'], ['a', 'Powerful'], ['Powerful', 'Force'], ['Force', 'on'], ['on', 'the'], ['the', 'Web\".\\xa0\\n^'], ['Web\".\\xa0\\n^', '\"pprint'], ['\"pprint', '-'], ['-', 'Data'], ['Data', 'pretty'], ['pretty', 'printer'], ['printer', '-'], ['-', 'Python'], ['Python', 'Documentation\".\\xa0\\n^'], ['Documentation\".\\xa0\\n^', 'Goodger,'], ['Goodger,', 'David.'], ['David.', '\"Code'], ['\"Code', 'Like'], ['Like', 'a'], ['a', 'Pythonista:'], ['Pythonista:', 'Idiomatic'], ['Idiomatic', 'Python\".\\xa0\\n^'], ['Python\".\\xa0\\n^', '\"How'], ['\"How', 'to'], ['to', 'think'], ['think', 'like'], ['like', 'a'], ['a', 'Pythonista\".\\xa0\\n^'], ['Pythonista\".\\xa0\\n^', '\"Is'], ['\"Is', 'Python'], ['Python', 'a'], ['a', 'good'], ['good', 'language'], ['language', 'for'], ['for', 'beginning'], ['beginning', 'programmers?\".'], ['programmers?\".', 'General'], ['General', 'Python'], ['Python', 'FAQ.'], ['FAQ.', 'Python'], ['Python', 'Software'], ['Software', 'Foundation.'], ['Foundation.', 'Retrieved'], ['Retrieved', '21'], ['21', 'March'], ['March', '2007.\\xa0\\n^'], ['2007.\\xa0\\n^', '\"Myths'], ['\"Myths', 'about'], ['about', 'indentation'], ['indentation', 'in'], ['in', 'Python\".'], ['Python\".', 'Secnetix.de.'], ['Secnetix.de.', 'Retrieved'], ['Retrieved', '19'], ['19', 'April'], ['April', '2011.\\xa0\\n^'], ['2011.\\xa0\\n^', 'Sweigart,'], ['Sweigart,', 'Al'], ['Al', '(2010).'], ['(2010).', '\"Appendix'], ['\"Appendix', 'A:'], ['A:', 'Differences'], ['Differences', 'Between'], ['Between', 'Python'], ['Python', '2'], ['2', 'and'], ['and', '3\".'], ['3\".', 'Invent'], ['Invent', 'Your'], ['Your', 'Own'], ['Own', 'Computer'], ['Computer', 'Games'], ['Games', 'with'], ['with', 'Python'], ['Python', '(2'], ['(2', 'ed.).'], ['ed.).', 'ISBN\\xa0978-0-9821060-1-3.'], ['ISBN\\xa0978-0-9821060-1-3.', 'Retrieved'], ['Retrieved', '20'], ['20', 'February'], ['February', '2014.\\xa0\\n^'], ['2014.\\xa0\\n^', 'van'], ['van', 'Rossum,'], ['Rossum,', 'Guido'], ['Guido', '(22'], ['(22', 'April'], ['April', '2009).'], ['2009).', '\"Tail'], ['\"Tail', 'Recursion'], ['Recursion', 'Elimination\".'], ['Elimination\".', 'Neopythonic.blogspot.be.'], ['Neopythonic.blogspot.be.', 'Retrieved'], ['Retrieved', '3'], ['3', 'December'], ['December', '2012.\\xa0\\n^'], ['2012.\\xa0\\n^', 'van'], ['van', 'Rossum,'], ['Rossum,', 'Guido'], ['Guido', '(9'], ['(9', 'February'], ['February', '2006).'], ['2006).', '\"Language'], ['\"Language', 'Design'], ['Design', 'Is'], ['Is', 'Not'], ['Not', 'Just'], ['Just', 'Solving'], ['Solving', 'Puzzles\".'], ['Puzzles\".', 'Artima'], ['Artima', 'forums.'], ['forums.', 'Artima.'], ['Artima.', 'Retrieved'], ['Retrieved', '21'], ['21', 'March'], ['March', '2007.\\xa0\\n^'], ['2007.\\xa0\\n^', 'van'], ['van', 'Rossum,'], ['Rossum,', 'Guido;'], ['Guido;', 'Eby,'], ['Eby,', 'Phillip'], ['Phillip', 'J.'], ['J.', '(10'], ['(10', 'May'], ['May', '2005).'], ['2005).', '\"PEP'], ['\"PEP', '342\\xa0–'], ['342\\xa0–', 'Coroutines'], ['Coroutines', 'via'], ['via', 'Enhanced'], ['Enhanced', 'Generators\".'], ['Generators\".', 'Python'], ['Python', 'Enhancement'], ['Enhancement', 'Proposals.'], ['Proposals.', 'Python'], ['Python', 'Software'], ['Software', 'Foundation.'], ['Foundation.', 'Retrieved'], ['Retrieved', '19'], ['19', 'February'], ['February', '2012.\\xa0\\n^'], ['2012.\\xa0\\n^', '\"PEP'], ['\"PEP', '380\".'], ['380\".', 'Python.org.'], ['Python.org.', 'Retrieved'], ['Retrieved', '3'], ['3', 'December'], ['December', '2012.\\xa0\\n^'], ['2012.\\xa0\\n^', '\"division\".'], ['\"division\".', 'python.org.\\xa0\\n^'], ['python.org.\\xa0\\n^', '\"PEP'], ['\"PEP', '0465'], ['0465', '--'], ['--', 'A'], ['A', 'dedicated'], ['dedicated', 'infix'], ['infix', 'operator'], ['operator', 'for'], ['for', 'matrix'], ['matrix', 'multiplication\".'], ['multiplication\".', 'python.org.'], ['python.org.', 'Retrieved'], ['Retrieved', '1'], ['1', 'January'], ['January', '2016.\\xa0\\n^'], ['2016.\\xa0\\n^', '\"Python'], ['\"Python', '3.5.1'], ['3.5.1', 'Release'], ['Release', 'and'], ['and', 'Changelog\".'], ['Changelog\".', 'python.org.'], ['python.org.', 'Retrieved'], ['Retrieved', '1'], ['1', 'January'], ['January', '2016.\\xa0\\n^'], ['2016.\\xa0\\n^', '\"Chapter'], ['\"Chapter', '15.'], ['15.', 'Expressions'], ['Expressions', '-'], ['-', '15.21.1.'], ['15.21.1.', 'Numerical'], ['Numerical', 'Equality'], ['Equality', 'Operators'], ['Operators', '=='], ['==', 'and\\xa0!=\".'], ['and\\xa0!=\".', 'Oracle'], ['Oracle', 'Corporation.'], ['Corporation.', 'Retrieved'], ['Retrieved', '28'], ['28', 'August'], ['August', '2016.\\xa0\\n^'], ['2016.\\xa0\\n^', '\"Chapter'], ['\"Chapter', '15.'], ['15.', 'Expressions'], ['Expressions', '-'], ['-', '15.21.3.'], ['15.21.3.', 'Reference'], ['Reference', 'Equality'], ['Equality', 'Operators'], ['Operators', '=='], ['==', 'and\\xa0!=\".'], ['and\\xa0!=\".', 'Oracle'], ['Oracle', 'Corporation.'], ['Corporation.', 'Retrieved'], ['Retrieved', '28'], ['28', 'August'], ['August', '2016.\\xa0\\n^'], ['2016.\\xa0\\n^', 'van'], ['van', 'Rossum,'], ['Rossum,', 'Guido;'], ['Guido;', 'Hettinger,'], ['Hettinger,', 'Raymond'], ['Raymond', '(7'], ['(7', 'February'], ['February', '2003).'], ['2003).', '\"PEP'], ['\"PEP', '308\\xa0–'], ['308\\xa0–', 'Conditional'], ['Conditional', 'Expressions\".'], ['Expressions\".', 'Python'], ['Python', 'Enhancement'], ['Enhancement', 'Proposals.'], ['Proposals.', 'Python'], ['Python', 'Software'], ['Software', 'Foundation.'], ['Foundation.', 'Retrieved'], ['Retrieved', '13'], ['13', 'July'], ['July', '2011.\\xa0\\n^'], ['2011.\\xa0\\n^', '\"4.'], ['\"4.', 'Built-in'], ['Built-in', 'Types'], ['Types', '—'], ['—', 'Python'], ['Python', '3.6.3rc1'], ['3.6.3rc1', 'documentation\".'], ['documentation\".', 'python.org.'], ['python.org.', 'Retrieved'], ['Retrieved', '1'], ['1', 'October'], ['October', '2017.\\xa0\\n^'], ['2017.\\xa0\\n^', 'a'], ['a', 'b'], ['b', '\"PEP'], ['\"PEP', '498'], ['498', '--'], ['--', 'Literal'], ['Literal', 'String'], ['String', 'Interpolation\".'], ['Interpolation\".', 'python.org.'], ['python.org.', 'Retrieved'], ['Retrieved', '8'], ['8', 'March'], ['March', '2017.\\xa0\\n^'], ['2017.\\xa0\\n^', '\"Why'], ['\"Why', 'must'], ['must', \"'self'\"], [\"'self'\", 'be'], ['be', 'used'], ['used', 'explicitly'], ['explicitly', 'in'], ['in', 'method'], ['method', 'definitions'], ['definitions', 'and'], ['and', 'calls?\".'], ['calls?\".', 'Design'], ['Design', 'and'], ['and', 'History'], ['History', 'FAQ.'], ['FAQ.', 'Python'], ['Python', 'Software'], ['Software', 'Foundation.'], ['Foundation.', 'Retrieved'], ['Retrieved', '19'], ['19', 'February'], ['February', '2012.\\xa0\\n^'], ['2012.\\xa0\\n^', '\"The'], ['\"The', 'Python'], ['Python', 'Language'], ['Language', 'Reference,'], ['Reference,', 'section'], ['section', '3.3.'], ['3.3.', 'New-style'], ['New-style', 'and'], ['and', 'classic'], ['classic', 'classes,'], ['classes,', 'for'], ['for', 'release'], ['release', '2.7.1\".'], ['2.7.1\".', 'Retrieved'], ['Retrieved', '12'], ['12', 'January'], ['January', '2011.\\xa0\\n^'], ['2011.\\xa0\\n^', '\"Type'], ['\"Type', 'hinting'], ['hinting', 'for'], ['for', 'Python\".'], ['Python\".', 'LWN.net.'], ['LWN.net.', '24'], ['24', 'December'], ['December', '2014.'], ['2014.', 'Retrieved'], ['Retrieved', '5'], ['5', 'May'], ['May', '2015.\\xa0\\n^'], ['2015.\\xa0\\n^', '\"mypy'], ['\"mypy', '-'], ['-', 'Optional'], ['Optional', 'Static'], ['Static', 'Typing'], ['Typing', 'for'], ['for', 'Python\".'], ['Python\".', 'Retrieved'], ['Retrieved', '28'], ['28', 'January'], ['January', '2017.\\xa0\\n^'], ['2017.\\xa0\\n^', 'Zadka,'], ['Zadka,', 'Moshe;'], ['Moshe;', 'van'], ['van', 'Rossum,'], ['Rossum,', 'Guido'], ['Guido', '(11'], ['(11', 'March'], ['March', '2001).'], ['2001).', '\"PEP'], ['\"PEP', '237\\xa0–'], ['237\\xa0–', 'Unifying'], ['Unifying', 'Long'], ['Long', 'Integers'], ['Integers', 'and'], ['and', 'Integers\".'], ['Integers\".', 'Python'], ['Python', 'Enhancement'], ['Enhancement', 'Proposals.'], ['Proposals.', 'Python'], ['Python', 'Software'], ['Software', 'Foundation.'], ['Foundation.', 'Retrieved'], ['Retrieved', '24'], ['24', 'September'], ['September', '2011.\\xa0\\n^'], ['2011.\\xa0\\n^', '\"PEP'], ['\"PEP', '465'], ['465', '--'], ['--', 'A'], ['A', 'dedicated'], ['dedicated', 'infix'], ['infix', 'operator'], ['operator', 'for'], ['for', 'matrix'], ['matrix', 'multiplication\".'], ['multiplication\".', 'python.org.\\xa0\\n^'], ['python.org.\\xa0\\n^', '\"The'], ['\"The', 'tilde'], ['tilde', 'operator'], ['operator', 'in'], ['in', 'Python'], ['Python', '-'], ['-', 'Stackoverflow\".'], ['Stackoverflow\".', 'stackoverflow.com.\\xa0\\n^'], ['stackoverflow.com.\\xa0\\n^', '\"BitwiseOperators'], ['\"BitwiseOperators', '-'], ['-', 'Python'], ['Python', 'Wiki\".'], ['Wiki\".', 'wiki.python.org.\\xa0\\n^'], ['wiki.python.org.\\xa0\\n^', 'Zadka,'], ['Zadka,', 'Moshe;'], ['Moshe;', 'van'], ['van', 'Rossum,'], ['Rossum,', 'Guido'], ['Guido', '(11'], ['(11', 'March'], ['March', '2001).'], ['2001).', '\"PEP'], ['\"PEP', '238\\xa0–'], ['238\\xa0–', 'Changing'], ['Changing', 'the'], ['the', 'Division'], ['Division', 'Operator\".'], ['Operator\".', 'Python'], ['Python', 'Enhancement'], ['Enhancement', 'Proposals.'], ['Proposals.', 'Python'], ['Python', 'Software'], ['Software', 'Foundation.'], ['Foundation.', 'Retrieved'], ['Retrieved', '23'], ['23', 'October'], ['October', '2013.\\xa0\\n^'], ['2013.\\xa0\\n^', '\"Why'], ['\"Why', \"Python's\"], [\"Python's\", 'Integer'], ['Integer', 'Division'], ['Division', 'Floors\".'], ['Floors\".', 'Retrieved'], ['Retrieved', '25'], ['25', 'August'], ['August', '2010.\\xa0\\n^'], ['2010.\\xa0\\n^', '\"round\",'], ['\"round\",', 'The'], ['The', 'Python'], ['Python', 'standard'], ['standard', 'library,'], ['library,', 'release'], ['release', '2.7,'], ['2.7,', '§2:'], ['§2:', 'Built-in'], ['Built-in', 'functions,'], ['functions,', 'retrieved'], ['retrieved', '14'], ['14', 'August'], ['August', '2011\\xa0\\n^'], ['2011\\xa0\\n^', '\"round\",'], ['\"round\",', 'The'], ['The', 'Python'], ['Python', 'standard'], ['standard', 'library,'], ['library,', 'release'], ['release', '3.2,'], ['3.2,', '§2:'], ['§2:', 'Built-in'], ['Built-in', 'functions,'], ['functions,', 'retrieved'], ['retrieved', '14'], ['14', 'August'], ['August', '2011\\xa0\\n^'], ['2011\\xa0\\n^', 'Python'], ['Python', 'Essential'], ['Essential', 'Reference,'], ['Reference,', 'David'], ['David', 'M.'], ['M.', 'Beazley\\n^'], ['Beazley\\n^', '\"Built-in'], ['\"Built-in', 'Type\".'], ['Type\".', 'docs.python.org.\\xa0\\n^'], ['docs.python.org.\\xa0\\n^', 'Batista,'], ['Batista,', 'Facundo.'], ['Facundo.', '\"PEP'], ['\"PEP', '0327'], ['0327', '--'], ['--', 'Decimal'], ['Decimal', 'Data'], ['Data', 'Type\".'], ['Type\".', 'Python.org.'], ['Python.org.', 'Retrieved'], ['Retrieved', '26'], ['26', 'September'], ['September', '2015.\\xa0\\n^'], ['2015.\\xa0\\n^', '\"What\\'s'], ['\"What\\'s', 'New'], ['New', 'in'], ['in', 'Python'], ['Python', '2.6'], ['2.6', '—'], ['—', 'Python'], ['Python', 'v2.6.9'], ['v2.6.9', 'documentation\".'], ['documentation\".', 'docs.python.org.'], ['docs.python.org.', 'Retrieved'], ['Retrieved', '26'], ['26', 'September'], ['September', '2015.\\xa0\\n^'], ['2015.\\xa0\\n^', 'Piotrowski,'], ['Piotrowski,', 'Przemyslaw'], ['Przemyslaw', '(July'], ['(July', '2006).'], ['2006).', '\"Build'], ['\"Build', 'a'], ['a', 'Rapid'], ['Rapid', 'Web'], ['Web', 'Development'], ['Development', 'Environment'], ['Environment', 'for'], ['for', 'Python'], ['Python', 'Server'], ['Server', 'Pages'], ['Pages', 'and'], ['and', 'Oracle\".'], ['Oracle\".', 'Oracle'], ['Oracle', 'Technology'], ['Technology', 'Network.'], ['Network.', 'Oracle.'], ['Oracle.', 'Retrieved'], ['Retrieved', '12'], ['12', 'March'], ['March', '2012.\\xa0\\n^'], ['2012.\\xa0\\n^', 'Batista,'], ['Batista,', 'Facundo'], ['Facundo', '(17'], ['(17', 'October'], ['October', '2003).'], ['2003).', '\"PEP'], ['\"PEP', '327\\xa0–'], ['327\\xa0–', 'Decimal'], ['Decimal', 'Data'], ['Data', 'Type\".'], ['Type\".', 'Python'], ['Python', 'Enhancement'], ['Enhancement', 'Proposals.'], ['Proposals.', 'Python'], ['Python', 'Software'], ['Software', 'Foundation.'], ['Foundation.', 'Retrieved'], ['Retrieved', '24'], ['24', 'November'], ['November', '2008.\\xa0\\n^'], ['2008.\\xa0\\n^', 'Eby,'], ['Eby,', 'Phillip'], ['Phillip', 'J.'], ['J.', '(7'], ['(7', 'December'], ['December', '2003).'], ['2003).', '\"PEP'], ['\"PEP', '333\\xa0–'], ['333\\xa0–', 'Python'], ['Python', 'Web'], ['Web', 'Server'], ['Server', 'Gateway'], ['Gateway', 'Interface'], ['Interface', 'v1.0\".'], ['v1.0\".', 'Python'], ['Python', 'Enhancement'], ['Enhancement', 'Proposals.'], ['Proposals.', 'Python'], ['Python', 'Software'], ['Software', 'Foundation.'], ['Foundation.', 'Retrieved'], ['Retrieved', '19'], ['19', 'February'], ['February', '2012.\\xa0\\n^'], ['2012.\\xa0\\n^', 'Debill,'], ['Debill,', 'Erik.'], ['Erik.', '\"Module'], ['\"Module', 'Counts\".'], ['Counts\".', 'ModuleCounts.'], ['ModuleCounts.', 'Retrieved'], ['Retrieved', '20'], ['20', 'September'], ['September', '2017.\\xa0\\n^'], ['2017.\\xa0\\n^', 'Enthought,'], ['Enthought,', 'Canopy.'], ['Canopy.', '\"Canopy\".'], ['\"Canopy\".', 'www.enthought.com.'], ['www.enthought.com.', 'Retrieved'], ['Retrieved', '20'], ['20', 'August'], ['August', '2016.\\xa0\\n^'], ['2016.\\xa0\\n^', 'van'], ['van', 'Rossum,'], ['Rossum,', 'Guido'], ['Guido', '(5'], ['(5', 'June'], ['June', '2001).'], ['2001).', '\"PEP'], ['\"PEP', '7\\xa0–'], ['7\\xa0–', 'Style'], ['Style', 'Guide'], ['Guide', 'for'], ['for', 'C'], ['C', 'Code\".'], ['Code\".', 'Python'], ['Python', 'Enhancement'], ['Enhancement', 'Proposals.'], ['Proposals.', 'Python'], ['Python', 'Software'], ['Software', 'Foundation.'], ['Foundation.', 'Retrieved'], ['Retrieved', '24'], ['24', 'November'], ['November', '2008.\\xa0\\n^'], ['2008.\\xa0\\n^', '\"CPython'], ['\"CPython', 'byte'], ['byte', 'code\".'], ['code\".', 'Docs.python.org.'], ['Docs.python.org.', 'Retrieved'], ['Retrieved', '16'], ['16', 'February'], ['February', '2016.\\xa0\\n^'], ['2016.\\xa0\\n^', '\"Python'], ['\"Python', '2.5'], ['2.5', 'internals\"'], ['internals\"', '(PDF).'], ['(PDF).', 'Retrieved'], ['Retrieved', '19'], ['19', 'April'], ['April', '2011.\\xa0\\n^'], ['2011.\\xa0\\n^', '\"An'], ['\"An', 'Interview'], ['Interview', 'with'], ['with', 'Guido'], ['Guido', 'van'], ['van', 'Rossum\".'], ['Rossum\".', 'Oreilly.com.'], ['Oreilly.com.', 'Retrieved'], ['Retrieved', '24'], ['24', 'November'], ['November', '2008.\\xa0\\n^'], ['2008.\\xa0\\n^', '\"PyPy'], ['\"PyPy', 'compatibility\".'], ['compatibility\".', 'Pypy.org.'], ['Pypy.org.', 'Retrieved'], ['Retrieved', '3'], ['3', 'December'], ['December', '2012.\\xa0\\n^'], ['2012.\\xa0\\n^', '\"speed'], ['\"speed', 'comparison'], ['comparison', 'between'], ['between', 'CPython'], ['CPython', 'and'], ['and', 'Pypy\".'], ['Pypy\".', 'Speed.pypy.org.'], ['Speed.pypy.org.', 'Retrieved'], ['Retrieved', '3'], ['3', 'December'], ['December', '2012.\\xa0\\n^'], ['2012.\\xa0\\n^', '\"STM'], ['\"STM', 'with'], ['with', 'threads\".'], ['threads\".', 'Morepypy.blogspot.be.'], ['Morepypy.blogspot.be.', '10'], ['10', 'June'], ['June', '2012.'], ['2012.', 'Retrieved'], ['Retrieved', '3'], ['3', 'December'], ['December', '2012.\\xa0\\n^'], ['2012.\\xa0\\n^', '\"Application-level'], ['\"Application-level', 'Stackless'], ['Stackless', 'features'], ['features', '—'], ['—', 'PyPy'], ['PyPy', '2.0.2'], ['2.0.2', 'documentation\".'], ['documentation\".', 'Doc.pypy.org.'], ['Doc.pypy.org.', 'Retrieved'], ['Retrieved', '17'], ['17', 'July'], ['July', '2013.\\xa0\\n^'], ['2013.\\xa0\\n^', '\"Plans'], ['\"Plans', 'for'], ['for', 'optimizing'], ['optimizing', 'Python\".'], ['Python\".', 'Google'], ['Google', 'Project'], ['Project', 'Hosting.'], ['Hosting.', 'Google.'], ['Google.', '15'], ['15', 'December'], ['December', '2009.'], ['2009.', 'Retrieved'], ['Retrieved', '24'], ['24', 'September'], ['September', '2011.\\xa0\\n^'], ['2011.\\xa0\\n^', '\"Python'], ['\"Python', 'on'], ['on', 'the'], ['the', 'Nokia'], ['Nokia', 'N900\".'], ['N900\".', 'Stochastic'], ['Stochastic', 'Geometry.\\xa0\\n^'], ['Geometry.\\xa0\\n^', '\"Nuitka'], ['\"Nuitka', 'Home'], ['Home', '|'], ['|', 'Nuitka'], ['Nuitka', 'Home\".'], ['Home\".', 'nuitka.net.'], ['nuitka.net.', 'Retrieved'], ['Retrieved', '18'], ['18', 'August'], ['August', '2017.\\xa0\\n^'], ['2017.\\xa0\\n^', 'Murri,'], ['Murri,', 'Riccardo'], ['Riccardo', '(2013).'], ['(2013).', 'Performance'], ['Performance', 'of'], ['of', 'Python'], ['Python', 'runtimes'], ['runtimes', 'on'], ['on', 'a'], ['a', 'non-numeric'], ['non-numeric', 'scientific'], ['scientific', 'code.'], ['code.', 'European'], ['European', 'Conference'], ['Conference', 'on'], ['on', 'Python'], ['Python', 'in'], ['in', 'Science'], ['Science', '(EuroSciPy).'], ['(EuroSciPy).', 'arXiv:1404.6388\\u202f.\\xa0\\n^'], ['arXiv:1404.6388\\u202f.\\xa0\\n^', 'a'], ['a', 'b'], ['b', 'Warsaw,'], ['Warsaw,', 'Barry;'], ['Barry;', 'Hylton,'], ['Hylton,', 'Jeremy;'], ['Jeremy;', 'Goodger,'], ['Goodger,', 'David'], ['David', '(13'], ['(13', 'June'], ['June', '2000).'], ['2000).', '\"PEP'], ['\"PEP', '1\\xa0–'], ['1\\xa0–', 'PEP'], ['PEP', 'Purpose'], ['Purpose', 'and'], ['and', 'Guidelines\".'], ['Guidelines\".', 'Python'], ['Python', 'Enhancement'], ['Enhancement', 'Proposals.'], ['Proposals.', 'Python'], ['Python', 'Software'], ['Software', 'Foundation.'], ['Foundation.', 'Retrieved'], ['Retrieved', '19'], ['19', 'April'], ['April', '2011.\\xa0\\n^'], ['2011.\\xa0\\n^', 'Cannon,'], ['Cannon,', 'Brett.'], ['Brett.', '\"Guido,'], ['\"Guido,', 'Some'], ['Some', 'Guys,'], ['Guys,', 'and'], ['and', 'a'], ['a', 'Mailing'], ['Mailing', 'List:'], ['List:', 'How'], ['How', 'Python'], ['Python', 'is'], ['is', 'Developed\".'], ['Developed\".', 'python.org.'], ['python.org.', 'Python'], ['Python', 'Software'], ['Software', 'Foundation.'], ['Foundation.', 'Archived'], ['Archived', 'from'], ['from', 'the'], ['the', 'original'], ['original', 'on'], ['on', '1'], ['1', 'June'], ['June', '2009.'], ['2009.', 'Retrieved'], ['Retrieved', '27'], ['27', 'June'], ['June', '2009.\\xa0\\n^'], ['2009.\\xa0\\n^', '\"Python'], ['\"Python', \"Developer's\"], [\"Developer's\", 'Guide\".\\xa0\\n^'], ['Guide\".\\xa0\\n^', 'Norwitz,'], ['Norwitz,', 'Neal'], ['Neal', '(8'], ['(8', 'April'], ['April', '2002).'], ['2002).', '\"[Python-Dev]'], ['\"[Python-Dev]', 'Release'], ['Release', 'Schedules'], ['Schedules', '(was'], ['(was', 'Stability'], ['Stability', '&'], ['&', 'change)\".'], ['change)\".', 'Retrieved'], ['Retrieved', '27'], ['27', 'June'], ['June', '2009.\\xa0\\n^'], ['2009.\\xa0\\n^', 'Aahz;'], ['Aahz;', 'Baxter,'], ['Baxter,', 'Anthony'], ['Anthony', '(15'], ['(15', 'March'], ['March', '2001).'], ['2001).', '\"PEP'], ['\"PEP', '6\\xa0–'], ['6\\xa0–', 'Bug'], ['Bug', 'Fix'], ['Fix', 'Releases\".'], ['Releases\".', 'Python'], ['Python', 'Enhancement'], ['Enhancement', 'Proposals.'], ['Proposals.', 'Python'], ['Python', 'Software'], ['Software', 'Foundation.'], ['Foundation.', 'Retrieved'], ['Retrieved', '27'], ['27', 'June'], ['June', '2009.\\xa0\\n^'], ['2009.\\xa0\\n^', '\"Python'], ['\"Python', 'Buildbot\".'], ['Buildbot\".', 'Python'], ['Python', 'Developer’s'], ['Developer’s', 'Guide.'], ['Guide.', 'Python'], ['Python', 'Software'], ['Software', 'Foundation.'], ['Foundation.', 'Retrieved'], ['Retrieved', '24'], ['24', 'September'], ['September', '2011.\\xa0\\n^'], ['2011.\\xa0\\n^', 'DeBill,'], ['DeBill,', 'Erik.'], ['Erik.', '\"Module'], ['\"Module', 'Counts\".'], ['Counts\".', 'www.modulecounts.com.'], ['www.modulecounts.com.', 'Retrieved'], ['Retrieved', '20'], ['20', 'August'], ['August', '2016.\\xa0\\n^'], ['2016.\\xa0\\n^', 'a'], ['a', 'b'], ['b', '\"Whetting'], ['\"Whetting', 'Your'], ['Your', 'Appetite\".'], ['Appetite\".', 'The'], ['The', 'Python'], ['Python', 'Tutorial.'], ['Tutorial.', 'Python'], ['Python', 'Software'], ['Software', 'Foundation.'], ['Foundation.', 'Retrieved'], ['Retrieved', '20'], ['20', 'February'], ['February', '2012.\\xa0\\n^'], ['2012.\\xa0\\n^', '\"In'], ['\"In', 'Python,'], ['Python,', 'should'], ['should', 'I'], ['I', 'use'], ['use', 'else'], ['else', 'after'], ['after', 'a'], ['a', 'return'], ['return', 'in'], ['in', 'an'], ['an', 'if'], ['if', 'block?\".'], ['block?\".', 'Stack'], ['Stack', 'Overflow.'], ['Overflow.', 'Stack'], ['Stack', 'Exchange.'], ['Exchange.', '17'], ['17', 'February'], ['February', '2011.'], ['2011.', 'Retrieved'], ['Retrieved', '6'], ['6', 'May'], ['May', '2011.\\xa0\\n^'], ['2011.\\xa0\\n^', 'Lutz,'], ['Lutz,', 'Mark'], ['Mark', '(2009).'], ['(2009).', 'Learning'], ['Learning', 'Python:'], ['Python:', 'Powerful'], ['Powerful', 'Object-Oriented'], ['Object-Oriented', 'Programming.'], ['Programming.', \"O'Reilly\"], [\"O'Reilly\", 'Media,'], ['Media,', 'Inc.'], ['Inc.', 'p.\\xa017.'], ['p.\\xa017.', 'ISBN\\xa09781449379322.\\xa0\\n^'], ['ISBN\\xa09781449379322.\\xa0\\n^', 'Fehily,'], ['Fehily,', 'Chris'], ['Chris', '(2002).'], ['(2002).', 'Python.'], ['Python.', 'Peachpit'], ['Peachpit', 'Press.'], ['Press.', 'p.\\xa0xv.'], ['p.\\xa0xv.', 'ISBN\\xa09780201748840.\\xa0\\n^'], ['ISBN\\xa09780201748840.\\xa0\\n^', '\"TIOBE'], ['\"TIOBE', 'Index\".'], ['Index\".', 'TIOBE'], ['TIOBE', '-'], ['-', 'The'], ['The', 'Software'], ['Software', 'Quality'], ['Quality', 'Company.'], ['Company.', 'Retrieved'], ['Retrieved', '7'], ['7', 'March'], ['March', '2017.\\xa0\\n^'], ['2017.\\xa0\\n^', 'TIOBE'], ['TIOBE', 'Software'], ['Software', 'Index'], ['Index', '(2015).'], ['(2015).', '\"TIOBE'], ['\"TIOBE', 'Programming'], ['Programming', 'Community'], ['Community', 'Index'], ['Index', 'Python\".'], ['Python\".', 'Retrieved'], ['Retrieved', '10'], ['10', 'September'], ['September', '2015.\\xa0\\n^'], ['2015.\\xa0\\n^', 'Prechelt,'], ['Prechelt,', 'Lutz'], ['Lutz', '(14'], ['(14', 'March'], ['March', '2000).'], ['2000).', '\"An'], ['\"An', 'empirical'], ['empirical', 'comparison'], ['comparison', 'of'], ['of', 'C,'], ['C,', 'C++,'], ['C++,', 'Java,'], ['Java,', 'Perl,'], ['Perl,', 'Python,'], ['Python,', 'Rexx,'], ['Rexx,', 'and'], ['and', 'Tcl\"'], ['Tcl\"', '(PDF).'], ['(PDF).', 'Retrieved'], ['Retrieved', '30'], ['30', 'August'], ['August', '2013.\\xa0\\n^'], ['2013.\\xa0\\n^', '\"Quotes'], ['\"Quotes', 'about'], ['about', 'Python\".'], ['Python\".', 'Python'], ['Python', 'Software'], ['Software', 'Foundation.'], ['Foundation.', 'Retrieved'], ['Retrieved', '8'], ['8', 'January'], ['January', '2012.\\xa0\\n^'], ['2012.\\xa0\\n^', '\"Organizations'], ['\"Organizations', 'Using'], ['Using', 'Python\".'], ['Python\".', 'Python'], ['Python', 'Software'], ['Software', 'Foundation.'], ['Foundation.', 'Retrieved'], ['Retrieved', '15'], ['15', 'January'], ['January', '2009.\\xa0\\n^'], ['2009.\\xa0\\n^', '\"Python\\xa0:'], ['\"Python\\xa0:', 'the'], ['the', 'holy'], ['holy', 'grail'], ['grail', 'of'], ['of', 'programming\".'], ['programming\".', 'CERN'], ['CERN', 'Bulletin.'], ['Bulletin.', 'CERN'], ['CERN', 'Publications'], ['Publications', '(31/2006).'], ['(31/2006).', '31'], ['31', 'July'], ['July', '2006.'], ['2006.', 'Retrieved'], ['Retrieved', '11'], ['11', 'February'], ['February', '2012.\\xa0\\n^'], ['2012.\\xa0\\n^', 'Shafer,'], ['Shafer,', 'Daniel'], ['Daniel', 'G.'], ['G.', '(17'], ['(17', 'January'], ['January', '2003).'], ['2003).', '\"Python'], ['\"Python', 'Streamlines'], ['Streamlines', 'Space'], ['Space', 'Shuttle'], ['Shuttle', 'Mission'], ['Mission', 'Design\".'], ['Design\".', 'Python'], ['Python', 'Software'], ['Software', 'Foundation.'], ['Foundation.', 'Retrieved'], ['Retrieved', '24'], ['24', 'November'], ['November', '2008.\\xa0\\n^'], ['2008.\\xa0\\n^', 'Fortenberry,'], ['Fortenberry,', 'Tim'], ['Tim', '(17'], ['(17', 'January'], ['January', '2003).'], ['2003).', '\"Industrial'], ['\"Industrial', 'Light'], ['Light', '&'], ['&', 'Magic'], ['Magic', 'Runs'], ['Runs', 'on'], ['on', 'Python\".'], ['Python\".', 'Python'], ['Python', 'Software'], ['Software', 'Foundation.'], ['Foundation.', 'Retrieved'], ['Retrieved', '11'], ['11', 'February'], ['February', '2012.\\xa0\\n^'], ['2012.\\xa0\\n^', 'Taft,'], ['Taft,', 'Darryl'], ['Darryl', 'K.'], ['K.', '(5'], ['(5', 'March'], ['March', '2007).'], ['2007).', '\"Python'], ['\"Python', 'Slithers'], ['Slithers', 'into'], ['into', 'Systems\".'], ['Systems\".', 'eWeek.com.'], ['eWeek.com.', 'Ziff'], ['Ziff', 'Davis'], ['Davis', 'Holdings.'], ['Holdings.', 'Retrieved'], ['Retrieved', '24'], ['24', 'September'], ['September', '2011.\\xa0\\n^'], ['2011.\\xa0\\n^', '\"Usage'], ['\"Usage', 'statistics'], ['statistics', 'and'], ['and', 'market'], ['market', 'share'], ['share', 'of'], ['of', 'Python'], ['Python', 'for'], ['for', 'websites\".'], ['websites\".', '2012.'], ['2012.', 'Retrieved'], ['Retrieved', '18'], ['18', 'December'], ['December', '2012.\\xa0\\n^'], ['2012.\\xa0\\n^', 'Oliphant,'], ['Oliphant,', 'Travis'], ['Travis', '(2007).'], ['(2007).', '\"Python'], ['\"Python', 'for'], ['for', 'Scientific'], ['Scientific', 'Computing\".'], ['Computing\".', 'Computing'], ['Computing', 'in'], ['in', 'Science'], ['Science', 'and'], ['and', 'Engineering.\\xa0\\n^'], ['Engineering.\\xa0\\n^', 'Millman,'], ['Millman,', 'K.'], ['K.', 'Jarrod;'], ['Jarrod;', 'Aivazis,'], ['Aivazis,', 'Michael'], ['Michael', '(2011).'], ['(2011).', '\"Python'], ['\"Python', 'for'], ['for', 'Scientists'], ['Scientists', 'and'], ['and', 'Engineers\".'], ['Engineers\".', 'Computing'], ['Computing', 'in'], ['in', 'Science'], ['Science', 'and'], ['and', 'Engineering.'], ['Engineering.', '13'], ['13', '(2):'], ['(2):', '9–12.\\xa0\\n^'], ['9–12.\\xa0\\n^', 'Chekanov,'], ['Chekanov,', 'S.'], ['S.', '(April'], ['(April', '2016).'], ['2016).', 'Numeric'], ['Numeric', 'Computation'], ['Computation', 'and'], ['and', 'Statistical'], ['Statistical', 'Data'], ['Data', 'Analysis'], ['Analysis', 'on'], ['on', 'the'], ['the', 'Java'], ['Java', 'Platform.'], ['Platform.', 'London:'], ['London:', 'Springer.'], ['Springer.', 'p.\\xa0670.'], ['p.\\xa0670.', 'ISBN\\xa0978-3-319-28531-3.\\xa0\\n^'], ['ISBN\\xa0978-3-319-28531-3.\\xa0\\n^', 'Chekanov,'], ['Chekanov,', 'S.'], ['S.', '(2010).'], ['(2010).', 'Scientific'], ['Scientific', 'Data'], ['Data', 'Analysis'], ['Analysis', 'using'], ['using', 'Jython'], ['Jython', 'Scripting'], ['Scripting', 'and'], ['and', 'Java.'], ['Java.', 'London:'], ['London:', 'Springer.'], ['Springer.', 'p.\\xa0600.'], ['p.\\xa0600.', 'ISBN\\xa0978-3-319-28531-3.\\xa0\\n^'], ['ISBN\\xa0978-3-319-28531-3.\\xa0\\n^', '\"Installers'], ['\"Installers', 'for'], ['for', 'GIMP'], ['GIMP', 'for'], ['for', 'Windows'], ['Windows', '-'], ['-', 'Frequently'], ['Frequently', 'Asked'], ['Asked', 'Questions\".'], ['Questions\".', '26'], ['26', 'July'], ['July', '2013.'], ['2013.', 'Retrieved'], ['Retrieved', '26'], ['26', 'July'], ['July', '2013.\\xa0\\n^'], ['2013.\\xa0\\n^', '\"jasc'], ['\"jasc', 'psp9components\".'], ['psp9components\".', 'Archived'], ['Archived', 'from'], ['from', 'the'], ['the', 'original'], ['original', 'on'], ['on', '19'], ['19', 'March'], ['March', '2008.\\xa0\\n^'], ['2008.\\xa0\\n^', '\"About'], ['\"About', 'getting'], ['getting', 'started'], ['started', 'with'], ['with', 'writing'], ['writing', 'geoprocessing'], ['geoprocessing', 'scripts\".'], ['scripts\".', 'ArcGIS'], ['ArcGIS', 'Desktop'], ['Desktop', 'Help'], ['Help', '9.2.'], ['9.2.', 'Environmental'], ['Environmental', 'Systems'], ['Systems', 'Research'], ['Research', 'Institute.'], ['Institute.', '17'], ['17', 'November'], ['November', '2006.'], ['2006.', 'Retrieved'], ['Retrieved', '11'], ['11', 'February'], ['February', '2012.\\xa0\\n^'], ['2012.\\xa0\\n^', 'CCP'], ['CCP', 'porkbelly'], ['porkbelly', '(24'], ['(24', 'August'], ['August', '2010).'], ['2010).', '\"Stackless'], ['\"Stackless', 'Python'], ['Python', '2.7\".'], ['2.7\".', 'EVE'], ['EVE', 'Community'], ['Community', 'Dev'], ['Dev', 'Blogs.'], ['Blogs.', 'CCP'], ['CCP', 'Games.'], ['Games.', 'As'], ['As', 'you'], ['you', 'may'], ['may', 'know,'], ['know,', 'EVE'], ['EVE', 'has'], ['has', 'at'], ['at', 'its'], ['its', 'core'], ['core', 'the'], ['the', 'programming'], ['programming', 'language'], ['language', 'known'], ['known', 'as'], ['as', 'Stackless'], ['Stackless', 'Python.\\xa0\\n^'], ['Python.\\xa0\\n^', 'Caudill,'], ['Caudill,', 'Barry'], ['Barry', '(20'], ['(20', 'September'], ['September', '2005).'], ['2005).', '\"Modding'], ['\"Modding', 'Sid'], ['Sid', \"Meier's\"], [\"Meier's\", 'Civilization'], ['Civilization', 'IV\".'], ['IV\".', 'Sid'], ['Sid', \"Meier's\"], [\"Meier's\", 'Civilization'], ['Civilization', 'IV'], ['IV', 'Developer'], ['Developer', 'Blog.'], ['Blog.', 'Firaxis'], ['Firaxis', 'Games.'], ['Games.', 'Archived'], ['Archived', 'from'], ['from', 'the'], ['the', 'original'], ['original', 'on'], ['on', '11'], ['11', 'August'], ['August', '2010.'], ['2010.', 'we'], ['we', 'created'], ['created', 'three'], ['three', 'levels'], ['levels', 'of'], ['of', 'tools'], ['tools', '...'], ['...', 'The'], ['The', 'next'], ['next', 'level'], ['level', 'offers'], ['offers', 'Python'], ['Python', 'and'], ['and', 'XML'], ['XML', 'support,'], ['support,', 'letting'], ['letting', 'modders'], ['modders', 'with'], ['with', 'more'], ['more', 'experience'], ['experience', 'manipulate'], ['manipulate', 'the'], ['the', 'game'], ['game', 'world'], ['world', 'and'], ['and', 'everything'], ['everything', 'in'], ['in', 'it.\\xa0\\n^'], ['it.\\xa0\\n^', '\"Python'], ['\"Python', 'Language'], ['Language', 'Guide'], ['Guide', '(v1.0)\".'], ['(v1.0)\".', 'Google'], ['Google', 'Documents'], ['Documents', 'List'], ['List', 'Data'], ['Data', 'API'], ['API', 'v1.0.'], ['v1.0.', 'Google.'], ['Google.', 'Archived'], ['Archived', 'from'], ['from', 'the'], ['the', 'original'], ['original', 'on'], ['on', '11'], ['11', 'August'], ['August', '2010.\\xa0\\n^'], ['2010.\\xa0\\n^', '\"Python'], ['\"Python', '-'], ['-', 'Best'], ['Best', 'Programming'], ['Programming', 'Language'], ['Language', 'for'], ['for', 'Algorithmic'], ['Algorithmic', 'Trading'], ['Trading', 'Systems\".'], ['Systems\".', '9'], ['9', 'March'], ['March', '2016.'], ['2016.', 'Retrieved'], ['Retrieved', '3'], ['3', 'October'], ['October', '2016.\\xa0\\n^'], ['2016.\\xa0\\n^', '\"Trading'], ['\"Trading', 'with'], ['with', 'Interactive'], ['Interactive', 'Brokers'], ['Brokers', 'using'], ['using', 'Python:'], ['Python:', 'An'], ['An', 'IBPy'], ['IBPy', 'Tutorial\".'], ['Tutorial\".', '19'], ['19', 'September'], ['September', '2016.'], ['2016.', 'Retrieved'], ['Retrieved', '3'], ['3', 'October'], ['October', '2016.\\xa0\\n^'], ['2016.\\xa0\\n^', '\"Python'], ['\"Python', 'for'], ['for', 'Artificial'], ['Artificial', 'Intelligence\".'], ['Intelligence\".', 'Wiki.python.org.'], ['Wiki.python.org.', '19'], ['19', 'July'], ['July', '2012.'], ['2012.', 'Archived'], ['Archived', 'from'], ['from', 'the'], ['the', 'original'], ['original', 'on'], ['on', '1'], ['1', 'November'], ['November', '2012.'], ['2012.', 'Retrieved'], ['Retrieved', '3'], ['3', 'December'], ['December', '2012.\\xa0\\n^'], ['2012.\\xa0\\n^', 'Paine,'], ['Paine,', 'Jocelyn,'], ['Jocelyn,', 'ed.'], ['ed.', '(August'], ['(August', '2005).'], ['2005).', '\"AI'], ['\"AI', 'in'], ['in', 'Python\".'], ['Python\".', 'AI'], ['AI', 'Expert'], ['Expert', 'Newsletter.'], ['Newsletter.', 'Amzi!.'], ['Amzi!.', 'Retrieved'], ['Retrieved', '11'], ['11', 'February'], ['February', '2012.\\xa0\\n^'], ['2012.\\xa0\\n^', '\"PyAIML'], ['\"PyAIML', '0.8.5\\xa0:'], ['0.8.5\\xa0:', 'Python'], ['Python', 'Package'], ['Package', 'Index\".'], ['Index\".', 'Pypi.python.org.'], ['Pypi.python.org.', 'Retrieved'], ['Retrieved', '17'], ['17', 'July'], ['July', '2013.\\xa0\\n^'], ['2013.\\xa0\\n^', 'Russell,'], ['Russell,', 'Stuart'], ['Stuart', 'J.'], ['J.', '&'], ['&', 'Norvig,'], ['Norvig,', 'Peter'], ['Peter', '(2009).'], ['(2009).', 'Artificial'], ['Artificial', 'Intelligence:'], ['Intelligence:', 'A'], ['A', 'Modern'], ['Modern', 'Approach'], ['Approach', '(3rd'], ['(3rd', 'ed.).'], ['ed.).', 'Upper'], ['Upper', 'Saddle'], ['Saddle', 'River,'], ['River,', 'NJ:'], ['NJ:', 'Prentice'], ['Prentice', 'Hall.'], ['Hall.', 'p.\\xa01062.'], ['p.\\xa01062.', 'ISBN\\xa0978-0-13-604259-4.'], ['ISBN\\xa0978-0-13-604259-4.', 'Retrieved'], ['Retrieved', '11'], ['11', 'February'], ['February', '2012.\\xa0\\n^'], ['2012.\\xa0\\n^', '\"Natural'], ['\"Natural', 'Language'], ['Language', 'Toolkit\".\\xa0\\n^'], ['Toolkit\".\\xa0\\n^', '\"Immunity:'], ['\"Immunity:', 'Knowing'], ['Knowing', \"You're\"], [\"You're\", 'Secure\".\\xa0\\n^'], ['Secure\".\\xa0\\n^', '\"Corelabs'], ['\"Corelabs', 'site\".\\xa0\\n^'], ['site\".\\xa0\\n^', '\"What'], ['\"What', 'is'], ['is', 'Sugar?\".'], ['Sugar?\".', 'Sugar'], ['Sugar', 'Labs.'], ['Labs.', 'Retrieved'], ['Retrieved', '11'], ['11', 'February'], ['February', '2012.\\xa0\\n^'], ['2012.\\xa0\\n^', '\"4.0'], ['\"4.0', 'New'], ['New', 'Features'], ['Features', 'and'], ['and', 'Fixes\".'], ['Fixes\".', 'LibreOffice.org.'], ['LibreOffice.org.', 'The'], ['The', 'Document'], ['Document', 'Foundation.'], ['Foundation.', '2013.'], ['2013.', 'Retrieved'], ['Retrieved', '25'], ['25', 'February'], ['February', '2013.\\xa0\\n^'], ['2013.\\xa0\\n^', '\"Gotchas'], ['\"Gotchas', 'for'], ['for', 'Python'], ['Python', 'Users\".'], ['Users\".', 'boo.codehaus.org.'], ['boo.codehaus.org.', 'Codehaus'], ['Codehaus', 'Foundation.'], ['Foundation.', 'Retrieved'], ['Retrieved', '24'], ['24', 'November'], ['November', '2008.\\xa0\\n^'], ['2008.\\xa0\\n^', 'Esterbrook,'], ['Esterbrook,', 'Charles.'], ['Charles.', '\"Acknowledgements\".'], ['\"Acknowledgements\".', 'cobra-language.com.'], ['cobra-language.com.', 'Cobra'], ['Cobra', 'Language.'], ['Language.', 'Retrieved'], ['Retrieved', '7'], ['7', 'April'], ['April', '2010.\\xa0\\n^'], ['2010.\\xa0\\n^', 'Esterbrook,'], ['Esterbrook,', 'Charles.'], ['Charles.', '\"Comparison'], ['\"Comparison', 'to'], ['to', 'Python\".'], ['Python\".', 'cobra-language.com.'], ['cobra-language.com.', 'Cobra'], ['Cobra', 'Language.'], ['Language.', 'Retrieved'], ['Retrieved', '7'], ['7', 'April'], ['April', '2010.\\xa0\\n^'], ['2010.\\xa0\\n^', '\"Proposals:'], ['\"Proposals:', 'iterators'], ['iterators', 'and'], ['and', 'generators'], ['generators', '[ES4'], ['[ES4', 'Wiki]\".'], ['Wiki]\".', 'wiki.ecmascript.org.'], ['wiki.ecmascript.org.', 'Retrieved'], ['Retrieved', '24'], ['24', 'November'], ['November', '2008.\\xa0\\n^'], ['2008.\\xa0\\n^', 'Kincaid,'], ['Kincaid,', 'Jason'], ['Jason', '(10'], ['(10', 'November'], ['November', '2009).'], ['2009).', '\"Google\\'s'], ['\"Google\\'s', 'Go:'], ['Go:', 'A'], ['A', 'New'], ['New', 'Programming'], ['Programming', 'Language'], ['Language', \"That's\"], [\"That's\", 'Python'], ['Python', 'Meets'], ['Meets', 'C++\".'], ['C++\".', 'TechCrunch.'], ['TechCrunch.', 'Retrieved'], ['Retrieved', '29'], ['29', 'January'], ['January', '2010.\\xa0\\n^'], ['2010.\\xa0\\n^', 'Strachan,'], ['Strachan,', 'James'], ['James', '(29'], ['(29', 'August'], ['August', '2003).'], ['2003).', '\"Groovy\\xa0–'], ['\"Groovy\\xa0–', 'the'], ['the', 'birth'], ['birth', 'of'], ['of', 'a'], ['a', 'new'], ['new', 'dynamic'], ['dynamic', 'language'], ['language', 'for'], ['for', 'the'], ['the', 'Java'], ['Java', 'platform\".\\xa0\\n^'], ['platform\".\\xa0\\n^', 'Lin,'], ['Lin,', 'Mike.'], ['Mike.', '\"The'], ['\"The', 'Whitespace'], ['Whitespace', 'Thing'], ['Thing', 'for'], ['for', 'OCaml\".'], ['OCaml\".', 'Massachusetts'], ['Massachusetts', 'Institute'], ['Institute', 'of'], ['of', 'Technology.'], ['Technology.', 'Retrieved'], ['Retrieved', '12'], ['12', 'April'], ['April', '2009.\\xa0\\n^'], ['2009.\\xa0\\n^', '\"An'], ['\"An', 'Interview'], ['Interview', 'with'], ['with', 'the'], ['the', 'Creator'], ['Creator', 'of'], ['of', 'Ruby\".'], ['Ruby\".', 'Linuxdevcenter.com.'], ['Linuxdevcenter.com.', 'Retrieved'], ['Retrieved', '3'], ['3', 'December'], ['December', '2012.\\xa0\\n^'], ['2012.\\xa0\\n^', 'Lattner,'], ['Lattner,', 'Chris'], ['Chris', '(3'], ['(3', 'June'], ['June', '2014).'], ['2014).', '\"Chris'], ['\"Chris', \"Lattner's\"], [\"Lattner's\", 'Homepage\".'], ['Homepage\".', 'Chris'], ['Chris', 'Lattner.'], ['Lattner.', 'Retrieved'], ['Retrieved', '3'], ['3', 'June'], ['June', '2014.'], ['2014.', 'I'], ['I', 'started'], ['started', 'work'], ['work', 'on'], ['on', 'the'], ['the', 'Swift'], ['Swift', 'Programming'], ['Programming', 'Language'], ['Language', 'in'], ['in', 'July'], ['July', 'of'], ['of', '2010.'], ['2010.', 'I'], ['I', 'implemented'], ['implemented', 'much'], ['much', 'of'], ['of', 'the'], ['the', 'basic'], ['basic', 'language'], ['language', 'structure,'], ['structure,', 'with'], ['with', 'only'], ['only', 'a'], ['a', 'few'], ['few', 'people'], ['people', 'knowing'], ['knowing', 'of'], ['of', 'its'], ['its', 'existence.'], ['existence.', 'A'], ['A', 'few'], ['few', 'other'], ['other', '(amazing)'], ['(amazing)', 'people'], ['people', 'started'], ['started', 'contributing'], ['contributing', 'in'], ['in', 'earnest'], ['earnest', 'late'], ['late', 'in'], ['in', '2011,'], ['2011,', 'and'], ['and', 'it'], ['it', 'became'], ['became', 'a'], ['a', 'major'], ['major', 'focus'], ['focus', 'for'], ['for', 'the'], ['the', 'Apple'], ['Apple', 'Developer'], ['Developer', 'Tools'], ['Tools', 'group'], ['group', 'in'], ['in', 'July'], ['July', '2013'], ['2013', '[...]'], ['[...]', 'drawing'], ['drawing', 'ideas'], ['ideas', 'from'], ['from', 'Objective-C,'], ['Objective-C,', 'Rust,'], ['Rust,', 'Haskell,'], ['Haskell,', 'Ruby,'], ['Ruby,', 'Python,'], ['Python,', 'C#,'], ['C#,', 'CLU,'], ['CLU,', 'and'], ['and', 'far'], ['far', 'too'], ['too', 'many'], ['many', 'others'], ['others', 'to'], ['to', 'list.\\xa0\\n^'], ['list.\\xa0\\n^', 'Kupries,'], ['Kupries,', 'Andreas;'], ['Andreas;', 'Fellows,'], ['Fellows,', 'Donal'], ['Donal', 'K.'], ['K.', '(14'], ['(14', 'September'], ['September', '2000).'], ['2000).', '\"TIP'], ['\"TIP', '#3:'], ['#3:', 'TIP'], ['TIP', 'Format\".'], ['Format\".', 'tcl.tk.'], ['tcl.tk.', 'Tcl'], ['Tcl', 'Developer'], ['Developer', 'Xchange.'], ['Xchange.', 'Retrieved'], ['Retrieved', '24'], ['24', 'November'], ['November', '2008.\\xa0\\n^'], ['2008.\\xa0\\n^', 'Gustafsson,'], ['Gustafsson,', 'Per;'], ['Per;', 'Niskanen,'], ['Niskanen,', 'Raimo'], ['Raimo', '(29'], ['(29', 'January'], ['January', '2007).'], ['2007).', '\"EEP'], ['\"EEP', '1:'], ['1:', 'EEP'], ['EEP', 'Purpose'], ['Purpose', 'and'], ['and', 'Guidelines\".'], ['Guidelines\".', 'erlang.org.'], ['erlang.org.', 'Retrieved'], ['Retrieved', '19'], ['19', 'April'], ['April', '2011.\\xa0\\n^'], ['2011.\\xa0\\n^', '\"TIOBE'], ['\"TIOBE', 'Programming'], ['Programming', 'Community'], ['Community', 'Index'], ['Index', 'for'], ['for', 'March'], ['March', '2012\".'], ['2012\".', 'TIOBE'], ['TIOBE', 'Software.'], ['Software.', 'March'], ['March', '2012.'], ['2012.', 'Retrieved'], ['Retrieved', '25'], ['25', 'March'], ['March', '2012.\\xa0\\n\\n\\nFurther'], ['2012.\\xa0\\n\\n\\nFurther', 'reading[edit]\\n\\nDowney,'], ['reading[edit]\\n\\nDowney,', 'Allen'], ['Allen', 'B.'], ['B.', '(May'], ['(May', '2012).'], ['2012).', 'Think'], ['Think', 'Python:'], ['Python:', 'How'], ['How', 'to'], ['to', 'Think'], ['Think', 'Like'], ['Like', 'a'], ['a', 'Computer'], ['Computer', 'Scientist'], ['Scientist', '(Version'], ['(Version', '1.6.6'], ['1.6.6', 'ed.).'], ['ed.).', 'ISBN\\xa0978-0-521-72596-5.\\xa0\\nHamilton,'], ['ISBN\\xa0978-0-521-72596-5.\\xa0\\nHamilton,', 'Naomi'], ['Naomi', '(5'], ['(5', 'August'], ['August', '2008).'], ['2008).', '\"The'], ['\"The', 'A-Z'], ['A-Z', 'of'], ['of', 'Programming'], ['Programming', 'Languages:'], ['Languages:', 'Python\".'], ['Python\".', 'Computerworld.'], ['Computerworld.', 'Archived'], ['Archived', 'from'], ['from', 'the'], ['the', 'original'], ['original', 'on'], ['on', '29'], ['29', 'December'], ['December', '2008.'], ['2008.', 'Retrieved'], ['Retrieved', '31'], ['31', 'March'], ['March', '2010.\\xa0\\nLutz,'], ['2010.\\xa0\\nLutz,', 'Mark'], ['Mark', '(2013).'], ['(2013).', 'Learning'], ['Learning', 'Python'], ['Python', '(5th'], ['(5th', 'ed.).'], ['ed.).', \"O'Reilly\"], [\"O'Reilly\", 'Media.'], ['Media.', 'ISBN\\xa0978-0-596-15806-4.\\xa0\\nPilgrim,'], ['ISBN\\xa0978-0-596-15806-4.\\xa0\\nPilgrim,', 'Mark'], ['Mark', '(2004).'], ['(2004).', 'Dive'], ['Dive', 'Into'], ['Into', 'Python.'], ['Python.', 'Apress.'], ['Apress.', 'ISBN\\xa0978-1-59059-356-1.\\xa0\\nPilgrim,'], ['ISBN\\xa0978-1-59059-356-1.\\xa0\\nPilgrim,', 'Mark'], ['Mark', '(2009).'], ['(2009).', 'Dive'], ['Dive', 'Into'], ['Into', 'Python'], ['Python', '3.'], ['3.', 'Apress.'], ['Apress.', 'ISBN\\xa0978-1-4302-2415-0.\\xa0\\nSummerfield,'], ['ISBN\\xa0978-1-4302-2415-0.\\xa0\\nSummerfield,', 'Mark'], ['Mark', '(2009).'], ['(2009).', 'Programming'], ['Programming', 'in'], ['in', 'Python'], ['Python', '3'], ['3', '(2nd'], ['(2nd', 'ed.).'], ['ed.).', 'Addison-Wesley'], ['Addison-Wesley', 'Professional.'], ['Professional.', 'ISBN\\xa0978-0-321-68056-3.\\xa0\\n\\nExternal'], ['ISBN\\xa0978-0-321-68056-3.\\xa0\\n\\nExternal', 'links[edit]\\n\\nFind'], ['links[edit]\\n\\nFind', 'more'], ['more', 'aboutPython'], ['aboutPython', '(programming'], ['(programming', 'language)at'], ['language)at', \"Wikipedia's\"], [\"Wikipedia's\", 'sister'], ['sister', 'projects\\n\\nMedia'], ['projects\\n\\nMedia', 'from'], ['from', 'Wikimedia'], ['Wikimedia', 'Commons\\nQuotations'], ['Commons\\nQuotations', 'from'], ['from', 'Wikiquote\\nTextbooks'], ['Wikiquote\\nTextbooks', 'from'], ['from', 'Wikibooks\\nLearning'], ['Wikibooks\\nLearning', 'resources'], ['resources', 'from'], ['from', 'Wikiversity\\n\\n\\n\\nOfficial'], ['Wikiversity\\n\\n\\n\\nOfficial', 'website\\nPython'], ['website\\nPython', 'at'], ['at', 'Curlie'], ['Curlie', '(based'], ['(based', 'on'], ['on', 'DMOZ)\\n\\n\\n\\n\\n\\n\\n\\nv\\nt\\ne\\n\\n\\nProgramming'], ['DMOZ)\\n\\n\\n\\n\\n\\n\\n\\nv\\nt\\ne\\n\\n\\nProgramming', 'languages\\n\\n\\n\\n\\n\\n\\nComparison\\nTimeline\\nHistory\\n\\n\\n\\n\\n\\n\\n\\n\\nAssembly\\nBASIC\\nC\\nC++\\nC#\\nCOBOL\\nFortran\\nАналитик\\nGo\\nGroovy\\nHaskell\\nJava\\nJavaScript'], ['languages\\n\\n\\n\\n\\n\\n\\nComparison\\nTimeline\\nHistory\\n\\n\\n\\n\\n\\n\\n\\n\\nAssembly\\nBASIC\\nC\\nC++\\nC#\\nCOBOL\\nFortran\\nАналитик\\nGo\\nGroovy\\nHaskell\\nJava\\nJavaScript', '(JS)\\nKotlin\\nLisp\\nLua\\nObjective-C\\nPascal\\nPerl\\nPHP\\nPython\\nRexx\\nRuby\\nShell\\nSmalltalk\\nSwift\\nVisual'], ['(JS)\\nKotlin\\nLisp\\nLua\\nObjective-C\\nPascal\\nPerl\\nPHP\\nPython\\nRexx\\nRuby\\nShell\\nSmalltalk\\nSwift\\nVisual', 'Basic'], ['Basic', '.NET'], ['.NET', '(VB.NET)\\nVBScript\\nmore...\\n\\n\\n\\n\\n\\n\\n\\n\\n'], ['(VB.NET)\\nVBScript\\nmore...\\n\\n\\n\\n\\n\\n\\n\\n\\n', 'Category\\n'], ['Category\\n', 'Lists\\n\\nAlphabetical\\nCategorical\\nGenerational\\nNon-English-based\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\nv\\nt\\ne\\n\\n\\nPython\\n\\n\\n\\nImplementations\\n\\n\\n\\nCLPython\\nCPython\\nCython\\nMicroPython\\nNumba\\nIronPython\\nJython\\nPsyco\\nPyPy\\nPython'], ['Lists\\n\\nAlphabetical\\nCategorical\\nGenerational\\nNon-English-based\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\nv\\nt\\ne\\n\\n\\nPython\\n\\n\\n\\nImplementations\\n\\n\\n\\nCLPython\\nCPython\\nCython\\nMicroPython\\nNumba\\nIronPython\\nJython\\nPsyco\\nPyPy\\nPython', 'for'], ['for', 'S60\\nShed'], ['S60\\nShed', 'Skin\\nStackless'], ['Skin\\nStackless', 'Python\\nUnladen'], ['Python\\nUnladen', 'Swallow\\nmore...\\n\\n\\n\\n\\n\\n\\n\\n\\nIDE\\n\\n\\n\\nBoa\\nEric'], ['Swallow\\nmore...\\n\\n\\n\\n\\n\\n\\n\\n\\nIDE\\n\\n\\n\\nBoa\\nEric', 'Python'], ['Python', 'IDE\\nIDLE\\nPyDev\\nSPE\\nNinja-IDE\\nmore...\\n\\n\\n\\n\\n\\nTopics\\n\\n\\n\\nWSGI\\n\\n\\n\\n\\n\\n\\n\\n\\nsoftware'], ['IDE\\nIDLE\\nPyDev\\nSPE\\nNinja-IDE\\nmore...\\n\\n\\n\\n\\n\\nTopics\\n\\n\\n\\nWSGI\\n\\n\\n\\n\\n\\n\\n\\n\\nsoftware', '(list)\\nPython'], ['(list)\\nPython', 'Software'], ['Software', 'Foundation\\nPyCon\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\nv\\nt\\ne\\n\\n\\nPython'], ['Foundation\\nPyCon\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\nv\\nt\\ne\\n\\n\\nPython', 'web'], ['web', 'frameworks\\n\\n\\n\\n\\n\\n\\nBlueBream\\nBottle\\nCherryPy\\nDjango\\nFlask\\nGrok\\nNagare\\nNevow\\nPyjs\\nPylons\\nPyramid\\nQuixote\\nSpyce\\nTACTIC\\nTornado\\nTurboGears\\nTwistedWeb\\nWebware\\nweb2py\\nZope'], ['frameworks\\n\\n\\n\\n\\n\\n\\nBlueBream\\nBottle\\nCherryPy\\nDjango\\nFlask\\nGrok\\nNagare\\nNevow\\nPyjs\\nPylons\\nPyramid\\nQuixote\\nSpyce\\nTACTIC\\nTornado\\nTurboGears\\nTwistedWeb\\nWebware\\nweb2py\\nZope', '2\\nmore...\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\nv\\nt\\ne\\n\\n\\nFree'], ['2\\nmore...\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\nv\\nt\\ne\\n\\n\\nFree', 'and'], ['and', 'open-source'], ['open-source', 'software\\n\\n\\n\\nGeneral\\n\\n\\n\\nAlternative'], ['software\\n\\n\\n\\nGeneral\\n\\n\\n\\nAlternative', 'terms'], ['terms', 'for'], ['for', 'free'], ['free', 'software\\nComparison'], ['software\\nComparison', 'of'], ['of', 'open-source'], ['open-source', 'and'], ['and', 'closed-source'], ['closed-source', 'software\\nComparison'], ['software\\nComparison', 'of'], ['of', 'source'], ['source', 'code'], ['code', 'hosting'], ['hosting', 'facilities\\nFree'], ['facilities\\nFree', 'software\\nFree'], ['software\\nFree', 'software'], ['software', 'project'], ['project', 'directories\\nGratis'], ['directories\\nGratis', 'versus'], ['versus', 'libre\\nLong-term'], ['libre\\nLong-term', 'support\\nOpen-source'], ['support\\nOpen-source', 'software\\nOpen-source'], ['software\\nOpen-source', 'software'], ['software', 'development\\nOutline\\n\\n\\n\\n\\n\\nSoftware\\npackages\\n\\n\\n\\nAudio\\nBioinformatics\\nCodecs\\nCollaboration\\nConfiguration'], ['development\\nOutline\\n\\n\\n\\n\\n\\nSoftware\\npackages\\n\\n\\n\\nAudio\\nBioinformatics\\nCodecs\\nCollaboration\\nConfiguration', 'management\\nDevice'], ['management\\nDevice', 'drivers\\n\\nGraphics\\nWireless\\n\\n\\nGeophysics\\nHealth\\nMathematics\\nOperating'], ['drivers\\n\\nGraphics\\nWireless\\n\\n\\nGeophysics\\nHealth\\nMathematics\\nOperating', 'systems\\nProgramming'], ['systems\\nProgramming', 'languages\\nRouting\\nStatistics\\nTelevision\\nVideo'], ['languages\\nRouting\\nStatistics\\nTelevision\\nVideo', 'games\\nWeb'], ['games\\nWeb', 'applications\\n\\nContent'], ['applications\\n\\nContent', 'management'], ['management', 'systems\\nE-commerce\\n\\n\\nWord'], ['systems\\nE-commerce\\n\\n\\nWord', 'processors\\nAndroid'], ['processors\\nAndroid', 'apps\\niOS'], ['apps\\niOS', 'apps\\nCommercial\\nTrademarked\\nFormerly'], ['apps\\nCommercial\\nTrademarked\\nFormerly', 'proprietary\\n\\n\\n\\n\\n\\nCommunity\\n\\n\\n\\nFree'], ['proprietary\\n\\n\\n\\n\\n\\nCommunity\\n\\n\\n\\nFree', 'software'], ['software', 'movement\\nHistory\\nOpen-source'], ['movement\\nHistory\\nOpen-source', 'software'], ['software', 'movement\\nOrganizations\\nEvents\\n\\n\\n\\n\\n\\nLicenses\\n\\n\\n\\nAFL\\nApache\\nAPSL\\nArtistic\\nBeerware\\nBoost\\nBSD\\nCC0\\nCDDL\\nEPL\\nGNU'], ['movement\\nOrganizations\\nEvents\\n\\n\\n\\n\\n\\nLicenses\\n\\n\\n\\nAFL\\nApache\\nAPSL\\nArtistic\\nBeerware\\nBoost\\nBSD\\nCC0\\nCDDL\\nEPL\\nGNU', 'GPL\\nGNU'], ['GPL\\nGNU', 'LGPL\\nISC\\nMIT\\nMPL\\nMs-PL/RL\\nPython\\nPython'], ['LGPL\\nISC\\nMIT\\nMPL\\nMs-PL/RL\\nPython\\nPython', 'Software'], ['Software', 'Foundation\\nSleepycat\\nUnlicense\\nWTFPL\\nzlib\\n\\n\\n\\n\\n\\nLicense'], ['Foundation\\nSleepycat\\nUnlicense\\nWTFPL\\nzlib\\n\\n\\n\\n\\n\\nLicense', 'types\\nand'], ['types\\nand', 'standards\\n\\n\\n\\nComparison'], ['standards\\n\\n\\n\\nComparison', 'of'], ['of', 'free'], ['free', 'and'], ['and', 'open-source'], ['open-source', 'software'], ['software', 'licenses\\nContributor'], ['licenses\\nContributor', 'License'], ['License', 'Agreement\\nCopyfree\\nCopyleft\\nDebian'], ['Agreement\\nCopyfree\\nCopyleft\\nDebian', 'Free'], ['Free', 'Software'], ['Software', 'Guidelines\\nDefinition'], ['Guidelines\\nDefinition', 'of'], ['of', 'Free'], ['Free', 'Cultural'], ['Cultural', 'Works\\nFree'], ['Works\\nFree', 'license\\nThe'], ['license\\nThe', 'Free'], ['Free', 'Software'], ['Software', 'Definition\\nThe'], ['Definition\\nThe', 'Open'], ['Open', 'Source'], ['Source', 'Definition\\nOpen-source'], ['Definition\\nOpen-source', 'license\\nPermissive'], ['license\\nPermissive', 'software'], ['software', 'licence\\nPublic'], ['licence\\nPublic', 'domain\\nViral'], ['domain\\nViral', 'license\\n\\n\\n\\n\\n\\nChallenges\\n\\n\\n\\nBinary'], ['license\\n\\n\\n\\n\\n\\nChallenges\\n\\n\\n\\nBinary', 'blob\\nDigital'], ['blob\\nDigital', 'rights'], ['rights', 'management\\nHardware'], ['management\\nHardware', 'restrictions\\nLicense'], ['restrictions\\nLicense', 'proliferation\\nMozilla'], ['proliferation\\nMozilla', 'software'], ['software', 'rebranding\\nProprietary'], ['rebranding\\nProprietary', 'software\\nSCO/Linux'], ['software\\nSCO/Linux', 'controversies\\nSecure'], ['controversies\\nSecure', 'boot\\nSoftware'], ['boot\\nSoftware', 'patents\\nSoftware'], ['patents\\nSoftware', 'security\\nTrusted'], ['security\\nTrusted', 'Computing\\n\\n\\n\\n\\n\\nRelated'], ['Computing\\n\\n\\n\\n\\n\\nRelated', 'topics\\n\\n\\n\\nThe'], ['topics\\n\\n\\n\\nThe', 'Cathedral'], ['Cathedral', 'and'], ['and', 'the'], ['the', 'Bazaar\\nForking\\nMicrosoft'], ['Bazaar\\nForking\\nMicrosoft', 'Open'], ['Open', 'Specification'], ['Specification', 'Promise\\nRevolution'], ['Promise\\nRevolution', 'OS\\n\\n\\n\\n\\n\\n\\n\\n\\n'], ['OS\\n\\n\\n\\n\\n\\n\\n\\n\\n', 'Book\\n'], ['Book\\n', 'Category\\n'], ['Category\\n', 'Commons\\n'], ['Commons\\n', 'Portal\\n\\n\\n\\n\\n\\n\\n\\n\\n\\nAuthority'], ['Portal\\n\\n\\n\\n\\n\\n\\n\\n\\n\\nAuthority', 'control\\n\\n\\n\\nLCCN:'], ['control\\n\\n\\n\\nLCCN:', 'sh96008834\\nGND:'], ['sh96008834\\nGND:', '4434275-5\\nSUDOC:'], ['4434275-5\\nSUDOC:', '051626225\\nBNF:'], ['051626225\\nBNF:', 'cb13560465c'], ['cb13560465c', '(data)\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n']]\n", - "2-grams count is: 8614\n" - ] - } - ], - "source": [ - "from urllib.request import urlopen\n", - "from bs4 import BeautifulSoup\n", - "\n", - "def getNgrams(content, n):\n", - " content = content.split(' ')\n", - " output = []\n", - " for i in range(len(content)-n+1):\n", - " output.append(content[i:i+n])\n", - " return output\n", - "\n", - "html = urlopen('http://en.wikipedia.org/wiki/Python_(programming_language)')\n", - "bs = BeautifulSoup(html, 'html.parser')\n", - "content = bs.find('div', {'id':'mw-content-text'}).get_text()\n", - "ngrams = getNgrams(content, 2)\n", - "print(ngrams)\n", - "print('2-grams count is: '+str(len(ngrams)))" - ] - }, - { - "cell_type": "code", - "execution_count": 18, - "metadata": {}, - "outputs": [], - "source": [ - "import re\n", - "\n", - "def getNgrams(content, n):\n", - " content = re.sub('\\n|[[\\d+\\]]', ' ', content)\n", - " content = bytes(content, 'UTF-8')\n", - " content = content.decode('ascii', 'ignore')\n", - " content = content.split(' ')\n", - " content = [word for word in content if word != '']\n", - " output = []\n", - " for i in range(len(content)-n+1):\n", - " output.append(content[i:i+n])\n", - " return output" - ] - }, - { - "cell_type": "code", - "execution_count": 19, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "[['Python', 'Paradigm'], ['Paradigm', 'Object-oriented,'], ['Object-oriented,', 'imperative,'], ['imperative,', 'functional,'], ['functional,', 'procedural,'], ['procedural,', 'reflective'], ['reflective', 'Designedby'], ['Designedby', 'Guido'], ['Guido', 'van'], ['van', 'Rossum'], ['Rossum', 'Developer'], ['Developer', 'Python'], ['Python', 'Software'], ['Software', 'Foundation'], ['Foundation', 'Firstappeared'], ['Firstappeared', 'February'], ['February', ';'], [';', 'years'], ['years', 'ago('], ['ago(', '-'], ['-', '-'], ['-', ')'], [')', 'Stable'], ['Stable', 'release'], ['release', '.'], ['.', '.'], ['.', '/'], ['/', 'December'], ['December', ';'], [';', 'days'], ['days', 'ago('], ['ago(', '-'], ['-', '-'], ['-', ')'], [')', '.'], ['.', '.'], ['.', '/'], ['/', 'September'], ['September', ';'], [';', 'months'], ['months', 'ago('], ['ago(', '-'], ['-', '-'], ['-', ')'], [')', 'Typing'], ['Typing', 'discipline'], ['discipline', 'Duck,'], ['Duck,', 'dynamic,'], ['dynamic,', 'strong'], ['strong', 'License'], ['License', 'Python'], ['Python', 'Software'], ['Software', 'Foundation'], ['Foundation', 'License'], ['License', 'Filename'], ['Filename', 'extensions'], ['extensions', '.py,'], ['.py,', '.pyc,'], ['.pyc,', '.pyd,'], ['.pyd,', '.pyo'], ['.pyo', '(prior'], ['(prior', 'to'], ['to', '.'], ['.', '),'], ['),', '.pyw,'], ['.pyw,', '.pyz'], ['.pyz', '(since'], ['(since', '.'], ['.', ')'], [')', 'Website'], ['Website', 'python.org'], ['python.org', 'Major'], ['Major', 'implementations'], ['implementations', 'CPython,'], ['CPython,', 'IronPython,'], ['IronPython,', 'Jython,'], ['Jython,', 'MicroPython,'], ['MicroPython,', 'Numba,'], ['Numba,', 'PyPy,'], ['PyPy,', 'Stackless'], ['Stackless', 'Python'], ['Python', 'Dialects'], ['Dialects', 'Cython,'], ['Cython,', 'RPython'], ['RPython', 'Influenced'], ['Influenced', 'by'], ['by', 'ABC,'], ['ABC,', 'ALGOL'], ['ALGOL', ','], [',', 'C,'], ['C,', 'C'], ['C', ','], [',', 'CLU,'], ['CLU,', 'Dylan,'], ['Dylan,', 'Haskell,'], ['Haskell,', 'Icon,'], ['Icon,', 'Java,'], ['Java,', 'Lisp,'], ['Lisp,', 'Modula-'], ['Modula-', ','], [',', 'Perl'], ['Perl', 'Influenced'], ['Influenced', 'Boo,'], ['Boo,', 'Cobra,'], ['Cobra,', 'Coconut,'], ['Coconut,', 'CoffeeScript,'], ['CoffeeScript,', 'D,'], ['D,', 'F#,'], ['F#,', 'Falcon,'], ['Falcon,', 'Genie,'], ['Genie,', 'Go,'], ['Go,', 'Groovy,'], ['Groovy,', 'JavaScript,'], ['JavaScript,', 'Julia,'], ['Julia,', 'Nim,'], ['Nim,', 'Ring'], ['Ring', ','], [',', 'Ruby,'], ['Ruby,', 'Swift'], ['Swift', 'Python'], ['Python', 'Programming'], ['Programming', 'at'], ['at', 'Wikibooks'], ['Wikibooks', 'Python'], ['Python', 'is'], ['is', 'an'], ['an', 'interpreted'], ['interpreted', 'high-level'], ['high-level', 'programming'], ['programming', 'language'], ['language', 'for'], ['for', 'general-purpose'], ['general-purpose', 'programming.'], ['programming.', 'Created'], ['Created', 'by'], ['by', 'Guido'], ['Guido', 'van'], ['van', 'Rossum'], ['Rossum', 'and'], ['and', 'first'], ['first', 'released'], ['released', 'in'], ['in', ','], [',', 'Python'], ['Python', 'has'], ['has', 'a'], ['a', 'design'], ['design', 'philosophy'], ['philosophy', 'that'], ['that', 'emphasizes'], ['emphasizes', 'code'], ['code', 'readability,'], ['readability,', 'and'], ['and', 'a'], ['a', 'syntax'], ['syntax', 'that'], ['that', 'allows'], ['allows', 'programmers'], ['programmers', 'to'], ['to', 'express'], ['express', 'concepts'], ['concepts', 'in'], ['in', 'fewer'], ['fewer', 'lines'], ['lines', 'of'], ['of', 'code,'], ['code,', 'notably'], ['notably', 'using'], ['using', 'significant'], ['significant', 'whitespace.'], ['whitespace.', 'It'], ['It', 'provides'], ['provides', 'constructs'], ['constructs', 'that'], ['that', 'enable'], ['enable', 'clear'], ['clear', 'programming'], ['programming', 'on'], ['on', 'both'], ['both', 'small'], ['small', 'and'], ['and', 'large'], ['large', 'scales.'], ['scales.', 'Python'], ['Python', 'features'], ['features', 'a'], ['a', 'dynamic'], ['dynamic', 'type'], ['type', 'system'], ['system', 'and'], ['and', 'automatic'], ['automatic', 'memory'], ['memory', 'management.'], ['management.', 'It'], ['It', 'supports'], ['supports', 'multiple'], ['multiple', 'programming'], ['programming', 'paradigms,'], ['paradigms,', 'including'], ['including', 'object-oriented,'], ['object-oriented,', 'imperative,'], ['imperative,', 'functional'], ['functional', 'and'], ['and', 'procedural,'], ['procedural,', 'and'], ['and', 'has'], ['has', 'a'], ['a', 'large'], ['large', 'and'], ['and', 'comprehensive'], ['comprehensive', 'standard'], ['standard', 'library.'], ['library.', 'Python'], ['Python', 'interpreters'], ['interpreters', 'are'], ['are', 'available'], ['available', 'for'], ['for', 'many'], ['many', 'operating'], ['operating', 'systems.'], ['systems.', 'CPython,'], ['CPython,', 'the'], ['the', 'reference'], ['reference', 'implementation'], ['implementation', 'of'], ['of', 'Python,'], ['Python,', 'is'], ['is', 'open'], ['open', 'source'], ['source', 'software'], ['software', 'and'], ['and', 'has'], ['has', 'a'], ['a', 'community-based'], ['community-based', 'development'], ['development', 'model,'], ['model,', 'as'], ['as', 'do'], ['do', 'nearly'], ['nearly', 'all'], ['all', 'of'], ['of', 'its'], ['its', 'variant'], ['variant', 'implementations.'], ['implementations.', 'CPython'], ['CPython', 'is'], ['is', 'managed'], ['managed', 'by'], ['by', 'the'], ['the', 'non-profit'], ['non-profit', 'Python'], ['Python', 'Software'], ['Software', 'Foundation.'], ['Foundation.', 'Contents'], ['Contents', 'History'], ['History', 'Features'], ['Features', 'and'], ['and', 'philosophy'], ['philosophy', 'Syntax'], ['Syntax', 'and'], ['and', 'semantics'], ['semantics', '.'], ['.', 'Indentation'], ['Indentation', '.'], ['.', 'Statements'], ['Statements', 'and'], ['and', 'control'], ['control', 'flow'], ['flow', '.'], ['.', 'Expressions'], ['Expressions', '.'], ['.', 'Methods'], ['Methods', '.'], ['.', 'Typing'], ['Typing', '.'], ['.', 'Mathematics'], ['Mathematics', 'Libraries'], ['Libraries', 'Development'], ['Development', 'environments'], ['environments', 'Implementations'], ['Implementations', '.'], ['.', 'Reference'], ['Reference', 'implementation'], ['implementation', '.'], ['.', 'Other'], ['Other', 'implementations'], ['implementations', '.'], ['.', 'Unsupported'], ['Unsupported', 'implementations'], ['implementations', '.'], ['.', 'Cross-compilers'], ['Cross-compilers', 'to'], ['to', 'other'], ['other', 'languages'], ['languages', '.'], ['.', 'Performance'], ['Performance', 'Development'], ['Development', 'Naming'], ['Naming', 'Uses'], ['Uses', 'Languages'], ['Languages', 'influenced'], ['influenced', 'by'], ['by', 'Python'], ['Python', 'See'], ['See', 'also'], ['also', 'References'], ['References', 'Further'], ['Further', 'reading'], ['reading', 'External'], ['External', 'links'], ['links', 'History'], ['History', 'edit'], ['edit', 'Guido'], ['Guido', 'van'], ['van', 'Rossum,'], ['Rossum,', 'the'], ['the', 'creator'], ['creator', 'of'], ['of', 'Python'], ['Python', 'Main'], ['Main', 'article:'], ['article:', 'History'], ['History', 'of'], ['of', 'Python'], ['Python', 'Python'], ['Python', 'was'], ['was', 'conceived'], ['conceived', 'in'], ['in', 'the'], ['the', 'late'], ['late', 's,'], ['s,', 'and'], ['and', 'its'], ['its', 'implementation'], ['implementation', 'began'], ['began', 'in'], ['in', 'December'], ['December', 'by'], ['by', 'Guido'], ['Guido', 'van'], ['van', 'Rossum'], ['Rossum', 'at'], ['at', 'Centrum'], ['Centrum', 'Wiskunde'], ['Wiskunde', '&'], ['&', 'Informatica'], ['Informatica', '(CWI)'], ['(CWI)', 'in'], ['in', 'the'], ['the', 'Netherlands'], ['Netherlands', 'as'], ['as', 'a'], ['a', 'successor'], ['successor', 'to'], ['to', 'the'], ['the', 'ABC'], ['ABC', 'language'], ['language', '(itself'], ['(itself', 'inspired'], ['inspired', 'by'], ['by', 'SETL)'], ['SETL)', 'capable'], ['capable', 'of'], ['of', 'exception'], ['exception', 'handling'], ['handling', 'and'], ['and', 'interfacing'], ['interfacing', 'with'], ['with', 'the'], ['the', 'Amoeba'], ['Amoeba', 'operating'], ['operating', 'system.'], ['system.', 'Van'], ['Van', 'Rossum'], ['Rossum', 'remains'], ['remains', \"Python's\"], [\"Python's\", 'principal'], ['principal', 'author.'], ['author.', 'His'], ['His', 'continuing'], ['continuing', 'central'], ['central', 'role'], ['role', 'in'], ['in', \"Python's\"], [\"Python's\", 'development'], ['development', 'is'], ['is', 'reflected'], ['reflected', 'in'], ['in', 'the'], ['the', 'title'], ['title', 'given'], ['given', 'to'], ['to', 'him'], ['him', 'by'], ['by', 'the'], ['the', 'Python'], ['Python', 'community:'], ['community:', 'Benevolent'], ['Benevolent', 'Dictator'], ['Dictator', 'For'], ['For', 'Life'], ['Life', '(BDFL).'], ['(BDFL).', 'On'], ['On', 'the'], ['the', 'origins'], ['origins', 'of'], ['of', 'Python,'], ['Python,', 'Van'], ['Van', 'Rossum'], ['Rossum', 'wrote'], ['wrote', 'in'], ['in', ':'], [':', '...In'], ['...In', 'December'], ['December', ','], [',', 'I'], ['I', 'was'], ['was', 'looking'], ['looking', 'for'], ['for', 'a'], ['a', '\"hobby\"'], ['\"hobby\"', 'programming'], ['programming', 'project'], ['project', 'that'], ['that', 'would'], ['would', 'keep'], ['keep', 'me'], ['me', 'occupied'], ['occupied', 'during'], ['during', 'the'], ['the', 'week'], ['week', 'around'], ['around', 'Christmas.'], ['Christmas.', 'My'], ['My', 'office'], ['office', '...'], ['...', 'would'], ['would', 'be'], ['be', 'closed,'], ['closed,', 'but'], ['but', 'I'], ['I', 'had'], ['had', 'a'], ['a', 'home'], ['home', 'computer,'], ['computer,', 'and'], ['and', 'not'], ['not', 'much'], ['much', 'else'], ['else', 'on'], ['on', 'my'], ['my', 'hands.'], ['hands.', 'I'], ['I', 'decided'], ['decided', 'to'], ['to', 'write'], ['write', 'an'], ['an', 'interpreter'], ['interpreter', 'for'], ['for', 'the'], ['the', 'new'], ['new', 'scripting'], ['scripting', 'language'], ['language', 'I'], ['I', 'had'], ['had', 'been'], ['been', 'thinking'], ['thinking', 'about'], ['about', 'lately:'], ['lately:', 'a'], ['a', 'descendant'], ['descendant', 'of'], ['of', 'ABC'], ['ABC', 'that'], ['that', 'would'], ['would', 'appeal'], ['appeal', 'to'], ['to', 'Unix/C'], ['Unix/C', 'hackers.'], ['hackers.', 'I'], ['I', 'chose'], ['chose', 'Python'], ['Python', 'as'], ['as', 'a'], ['a', 'working'], ['working', 'title'], ['title', 'for'], ['for', 'the'], ['the', 'project,'], ['project,', 'being'], ['being', 'in'], ['in', 'a'], ['a', 'slightly'], ['slightly', 'irreverent'], ['irreverent', 'mood'], ['mood', '(and'], ['(and', 'a'], ['a', 'big'], ['big', 'fan'], ['fan', 'of'], ['of', 'Monty'], ['Monty', \"Python's\"], [\"Python's\", 'Flying'], ['Flying', 'Circus).'], ['Circus).', 'Python'], ['Python', '.'], ['.', 'was'], ['was', 'released'], ['released', 'on'], ['on', 'October'], ['October', 'and'], ['and', 'had'], ['had', 'many'], ['many', 'major'], ['major', 'new'], ['new', 'features,'], ['features,', 'including'], ['including', 'a'], ['a', 'cycle-detecting'], ['cycle-detecting', 'garbage'], ['garbage', 'collector'], ['collector', 'and'], ['and', 'support'], ['support', 'for'], ['for', 'Unicode.'], ['Unicode.', 'With'], ['With', 'this'], ['this', 'release,'], ['release,', 'the'], ['the', 'development'], ['development', 'process'], ['process', 'became'], ['became', 'more'], ['more', 'transparent'], ['transparent', 'and'], ['and', 'community-backed.'], ['community-backed.', 'Python'], ['Python', '.'], ['.', '(initially'], ['(initially', 'called'], ['called', 'Python'], ['Python', 'or'], ['or', 'py'], ['py', 'k)'], ['k)', 'was'], ['was', 'released'], ['released', 'on'], ['on', 'December'], ['December', 'after'], ['after', 'a'], ['a', 'long'], ['long', 'testing'], ['testing', 'period.'], ['period.', 'It'], ['It', 'is'], ['is', 'a'], ['a', 'major'], ['major', 'revision'], ['revision', 'of'], ['of', 'the'], ['the', 'language'], ['language', 'that'], ['that', 'is'], ['is', 'not'], ['not', 'backward-compatible'], ['backward-compatible', 'with'], ['with', 'previous'], ['previous', 'versions.'], ['versions.', 'However,'], ['However,', 'many'], ['many', 'of'], ['of', 'its'], ['its', 'major'], ['major', 'features'], ['features', 'have'], ['have', 'been'], ['been', 'backported'], ['backported', 'to'], ['to', 'the'], ['the', 'backward-compatible'], ['backward-compatible', 'Python'], ['Python', '.'], ['.', '.x'], ['.x', 'and'], ['and', '.'], ['.', '.x'], ['.x', 'version'], ['version', 'series.'], ['series.', 'Python'], ['Python', '.'], ['.', \"'s\"], [\"'s\", 'end-of-life'], ['end-of-life', 'date'], ['date', '(a.k.a.'], ['(a.k.a.', 'EOL,'], ['EOL,', 'sunset'], ['sunset', 'date)'], ['date)', 'was'], ['was', 'initially'], ['initially', 'set'], ['set', 'at'], ['at', ','], [',', 'then'], ['then', 'postponed'], ['postponed', 'to'], ['to', 'out'], ['out', 'of'], ['of', 'concern'], ['concern', 'that'], ['that', 'a'], ['a', 'large'], ['large', 'body'], ['body', 'of'], ['of', 'existing'], ['existing', 'code'], ['code', 'could'], ['could', 'not'], ['not', 'easily'], ['easily', 'be'], ['be', 'forward-ported'], ['forward-ported', 'to'], ['to', 'Python'], ['Python', '.'], ['.', 'In'], ['In', 'January'], ['January', ','], [',', 'Google'], ['Google', 'announced'], ['announced', 'work'], ['work', 'on'], ['on', 'a'], ['a', 'Python'], ['Python', '.'], ['.', 'to'], ['to', 'Go'], ['Go', 'transcompiler.'], ['transcompiler.', 'The'], ['The', 'Register'], ['Register', 'speculated'], ['speculated', 'that'], ['that', 'this'], ['this', 'was'], ['was', 'in'], ['in', 'response'], ['response', 'to'], ['to', 'Python'], ['Python', '.'], ['.', \"'s\"], [\"'s\", 'planned'], ['planned', 'end-of-life'], ['end-of-life', ','], [',', 'but'], ['but', 'Google'], ['Google', 'cited'], ['cited', 'performance'], ['performance', 'under'], ['under', 'concurrent'], ['concurrent', 'workloads'], ['workloads', 'as'], ['as', 'their'], ['their', 'only'], ['only', 'motivation.'], ['motivation.', 'Features'], ['Features', 'and'], ['and', 'philosophy'], ['philosophy', 'edit'], ['edit', 'Python'], ['Python', 'is'], ['is', 'a'], ['a', 'multi-paradigm'], ['multi-paradigm', 'programming'], ['programming', 'language.'], ['language.', 'Object-oriented'], ['Object-oriented', 'programming'], ['programming', 'and'], ['and', 'structured'], ['structured', 'programming'], ['programming', 'are'], ['are', 'fully'], ['fully', 'supported,'], ['supported,', 'and'], ['and', 'many'], ['many', 'of'], ['of', 'its'], ['its', 'features'], ['features', 'support'], ['support', 'functional'], ['functional', 'programming'], ['programming', 'and'], ['and', 'aspect-oriented'], ['aspect-oriented', 'programming'], ['programming', '(including'], ['(including', 'by'], ['by', 'metaprogramming'], ['metaprogramming', 'and'], ['and', 'metaobjects'], ['metaobjects', '(magic'], ['(magic', 'methods)).'], ['methods)).', 'Many'], ['Many', 'other'], ['other', 'paradigms'], ['paradigms', 'are'], ['are', 'supported'], ['supported', 'via'], ['via', 'extensions,'], ['extensions,', 'including'], ['including', 'design'], ['design', 'by'], ['by', 'contract'], ['contract', 'and'], ['and', 'logic'], ['logic', 'programming.'], ['programming.', 'Python'], ['Python', 'uses'], ['uses', 'dynamic'], ['dynamic', 'typing,'], ['typing,', 'and'], ['and', 'a'], ['a', 'combination'], ['combination', 'of'], ['of', 'reference'], ['reference', 'counting'], ['counting', 'and'], ['and', 'a'], ['a', 'cycle-detecting'], ['cycle-detecting', 'garbage'], ['garbage', 'collector'], ['collector', 'for'], ['for', 'memory'], ['memory', 'management.'], ['management.', 'It'], ['It', 'also'], ['also', 'features'], ['features', 'dynamic'], ['dynamic', 'name'], ['name', 'resolution'], ['resolution', '(late'], ['(late', 'binding),'], ['binding),', 'which'], ['which', 'binds'], ['binds', 'method'], ['method', 'and'], ['and', 'variable'], ['variable', 'names'], ['names', 'during'], ['during', 'program'], ['program', 'execution.'], ['execution.', \"Python's\"], [\"Python's\", 'design'], ['design', 'offers'], ['offers', 'some'], ['some', 'support'], ['support', 'for'], ['for', 'functional'], ['functional', 'programming'], ['programming', 'in'], ['in', 'the'], ['the', 'Lisp'], ['Lisp', 'tradition.'], ['tradition.', 'It'], ['It', 'has'], ['has', 'filter(),'], ['filter(),', 'map(),'], ['map(),', 'and'], ['and', 'reduce()'], ['reduce()', 'functions;'], ['functions;', 'list'], ['list', 'comprehensions,'], ['comprehensions,', 'dictionaries,'], ['dictionaries,', 'and'], ['and', 'sets;'], ['sets;', 'and'], ['and', 'generator'], ['generator', 'expressions.'], ['expressions.', 'The'], ['The', 'standard'], ['standard', 'library'], ['library', 'has'], ['has', 'two'], ['two', 'modules'], ['modules', '(itertools'], ['(itertools', 'and'], ['and', 'functools)'], ['functools)', 'that'], ['that', 'implement'], ['implement', 'functional'], ['functional', 'tools'], ['tools', 'borrowed'], ['borrowed', 'from'], ['from', 'Haskell'], ['Haskell', 'and'], ['and', 'Standard'], ['Standard', 'ML.'], ['ML.', 'The'], ['The', \"language's\"], [\"language's\", 'core'], ['core', 'philosophy'], ['philosophy', 'is'], ['is', 'summarized'], ['summarized', 'in'], ['in', 'the'], ['the', 'document'], ['document', 'The'], ['The', 'Zen'], ['Zen', 'of'], ['of', 'Python'], ['Python', '(PEP'], ['(PEP', '),'], ['),', 'which'], ['which', 'includes'], ['includes', 'aphorisms'], ['aphorisms', 'such'], ['such', 'as:'], ['as:', 'Beautiful'], ['Beautiful', 'is'], ['is', 'better'], ['better', 'than'], ['than', 'ugly'], ['ugly', 'Explicit'], ['Explicit', 'is'], ['is', 'better'], ['better', 'than'], ['than', 'implicit'], ['implicit', 'Simple'], ['Simple', 'is'], ['is', 'better'], ['better', 'than'], ['than', 'complex'], ['complex', 'Complex'], ['Complex', 'is'], ['is', 'better'], ['better', 'than'], ['than', 'complicated'], ['complicated', 'Readability'], ['Readability', 'counts'], ['counts', 'Rather'], ['Rather', 'than'], ['than', 'having'], ['having', 'all'], ['all', 'of'], ['of', 'its'], ['its', 'functionality'], ['functionality', 'built'], ['built', 'into'], ['into', 'its'], ['its', 'core,'], ['core,', 'Python'], ['Python', 'was'], ['was', 'designed'], ['designed', 'to'], ['to', 'be'], ['be', 'highly'], ['highly', 'extensible.'], ['extensible.', 'This'], ['This', 'compact'], ['compact', 'modularity'], ['modularity', 'has'], ['has', 'made'], ['made', 'it'], ['it', 'particularly'], ['particularly', 'popular'], ['popular', 'as'], ['as', 'a'], ['a', 'means'], ['means', 'of'], ['of', 'adding'], ['adding', 'programmable'], ['programmable', 'interfaces'], ['interfaces', 'to'], ['to', 'existing'], ['existing', 'applications.'], ['applications.', 'Van'], ['Van', \"Rossum's\"], [\"Rossum's\", 'vision'], ['vision', 'of'], ['of', 'a'], ['a', 'small'], ['small', 'core'], ['core', 'language'], ['language', 'with'], ['with', 'a'], ['a', 'large'], ['large', 'standard'], ['standard', 'library'], ['library', 'and'], ['and', 'easily'], ['easily', 'extensible'], ['extensible', 'interpreter'], ['interpreter', 'stemmed'], ['stemmed', 'from'], ['from', 'his'], ['his', 'frustrations'], ['frustrations', 'with'], ['with', 'ABC,'], ['ABC,', 'which'], ['which', 'espoused'], ['espoused', 'the'], ['the', 'opposite'], ['opposite', 'approach.'], ['approach.', 'While'], ['While', 'offering'], ['offering', 'choice'], ['choice', 'in'], ['in', 'coding'], ['coding', 'methodology,'], ['methodology,', 'the'], ['the', 'Python'], ['Python', 'philosophy'], ['philosophy', 'rejects'], ['rejects', 'exuberant'], ['exuberant', 'syntax'], ['syntax', '(such'], ['(such', 'as'], ['as', 'that'], ['that', 'of'], ['of', 'Perl)'], ['Perl)', 'in'], ['in', 'favor'], ['favor', 'of'], ['of', 'a'], ['a', 'simpler,'], ['simpler,', 'less-cluttered'], ['less-cluttered', 'grammar.'], ['grammar.', 'As'], ['As', 'Alex'], ['Alex', 'Martelli'], ['Martelli', 'put'], ['put', 'it:'], ['it:', '\"To'], ['\"To', 'describe'], ['describe', 'something'], ['something', 'as'], ['as', \"'clever'\"], [\"'clever'\", 'is'], ['is', 'not'], ['not', 'considered'], ['considered', 'a'], ['a', 'compliment'], ['compliment', 'in'], ['in', 'the'], ['the', 'Python'], ['Python', 'culture.\"'], ['culture.\"', \"Python's\"], [\"Python's\", 'philosophy'], ['philosophy', 'rejects'], ['rejects', 'the'], ['the', 'Perl'], ['Perl', '\"there'], ['\"there', 'is'], ['is', 'more'], ['more', 'than'], ['than', 'one'], ['one', 'way'], ['way', 'to'], ['to', 'do'], ['do', 'it\"'], ['it\"', 'approach'], ['approach', 'to'], ['to', 'language'], ['language', 'design'], ['design', 'in'], ['in', 'favor'], ['favor', 'of'], ['of', '\"there'], ['\"there', 'should'], ['should', 'be'], ['be', 'oneand'], ['oneand', 'preferably'], ['preferably', 'only'], ['only', 'oneobvious'], ['oneobvious', 'way'], ['way', 'to'], ['to', 'do'], ['do', 'it\".'], ['it\".', \"Python's\"], [\"Python's\", 'developers'], ['developers', 'strive'], ['strive', 'to'], ['to', 'avoid'], ['avoid', 'premature'], ['premature', 'optimization,'], ['optimization,', 'and'], ['and', 'reject'], ['reject', 'patches'], ['patches', 'to'], ['to', 'non-critical'], ['non-critical', 'parts'], ['parts', 'of'], ['of', 'CPython'], ['CPython', 'that'], ['that', 'would'], ['would', 'offer'], ['offer', 'marginal'], ['marginal', 'increases'], ['increases', 'in'], ['in', 'speed'], ['speed', 'at'], ['at', 'the'], ['the', 'cost'], ['cost', 'of'], ['of', 'clarity.'], ['clarity.', 'When'], ['When', 'speed'], ['speed', 'is'], ['is', 'important,'], ['important,', 'a'], ['a', 'Python'], ['Python', 'programmer'], ['programmer', 'can'], ['can', 'move'], ['move', 'time-critical'], ['time-critical', 'functions'], ['functions', 'to'], ['to', 'extension'], ['extension', 'modules'], ['modules', 'written'], ['written', 'in'], ['in', 'languages'], ['languages', 'such'], ['such', 'as'], ['as', 'C,'], ['C,', 'or'], ['or', 'use'], ['use', 'PyPy,'], ['PyPy,', 'a'], ['a', 'just-in-time'], ['just-in-time', 'compiler.'], ['compiler.', 'Cython'], ['Cython', 'is'], ['is', 'also'], ['also', 'available,'], ['available,', 'which'], ['which', 'translates'], ['translates', 'a'], ['a', 'Python'], ['Python', 'script'], ['script', 'into'], ['into', 'C'], ['C', 'and'], ['and', 'makes'], ['makes', 'direct'], ['direct', 'C-level'], ['C-level', 'API'], ['API', 'calls'], ['calls', 'into'], ['into', 'the'], ['the', 'Python'], ['Python', 'interpreter.'], ['interpreter.', 'An'], ['An', 'important'], ['important', 'goal'], ['goal', 'of'], ['of', \"Python's\"], [\"Python's\", 'developers'], ['developers', 'is'], ['is', 'keeping'], ['keeping', 'it'], ['it', 'fun'], ['fun', 'to'], ['to', 'use.'], ['use.', 'This'], ['This', 'is'], ['is', 'reflected'], ['reflected', 'in'], ['in', 'the'], ['the', \"language's\"], [\"language's\", 'namea'], ['namea', 'tribute'], ['tribute', 'to'], ['to', 'the'], ['the', 'British'], ['British', 'comedy'], ['comedy', 'group'], ['group', 'Monty'], ['Monty', 'Python'], ['Python', 'and'], ['and', 'in'], ['in', 'occasionally'], ['occasionally', 'playful'], ['playful', 'approaches'], ['approaches', 'to'], ['to', 'tutorials'], ['tutorials', 'and'], ['and', 'reference'], ['reference', 'materials,'], ['materials,', 'such'], ['such', 'as'], ['as', 'examples'], ['examples', 'that'], ['that', 'refer'], ['refer', 'to'], ['to', 'spam'], ['spam', 'and'], ['and', 'eggs'], ['eggs', '(from'], ['(from', 'a'], ['a', 'famous'], ['famous', 'Monty'], ['Monty', 'Python'], ['Python', 'sketch)'], ['sketch)', 'instead'], ['instead', 'of'], ['of', 'the'], ['the', 'standard'], ['standard', 'foo'], ['foo', 'and'], ['and', 'bar.'], ['bar.', 'A'], ['A', 'common'], ['common', 'neologism'], ['neologism', 'in'], ['in', 'the'], ['the', 'Python'], ['Python', 'community'], ['community', 'is'], ['is', 'pythonic,'], ['pythonic,', 'which'], ['which', 'can'], ['can', 'have'], ['have', 'a'], ['a', 'wide'], ['wide', 'range'], ['range', 'of'], ['of', 'meanings'], ['meanings', 'related'], ['related', 'to'], ['to', 'program'], ['program', 'style.'], ['style.', 'To'], ['To', 'say'], ['say', 'that'], ['that', 'code'], ['code', 'is'], ['is', 'pythonic'], ['pythonic', 'is'], ['is', 'to'], ['to', 'say'], ['say', 'that'], ['that', 'it'], ['it', 'uses'], ['uses', 'Python'], ['Python', 'idioms'], ['idioms', 'well,'], ['well,', 'that'], ['that', 'it'], ['it', 'is'], ['is', 'natural'], ['natural', 'or'], ['or', 'shows'], ['shows', 'fluency'], ['fluency', 'in'], ['in', 'the'], ['the', 'language,'], ['language,', 'that'], ['that', 'it'], ['it', 'conforms'], ['conforms', 'with'], ['with', \"Python's\"], [\"Python's\", 'minimalist'], ['minimalist', 'philosophy'], ['philosophy', 'and'], ['and', 'emphasis'], ['emphasis', 'on'], ['on', 'readability.'], ['readability.', 'In'], ['In', 'contrast,'], ['contrast,', 'code'], ['code', 'that'], ['that', 'is'], ['is', 'difficult'], ['difficult', 'to'], ['to', 'understand'], ['understand', 'or'], ['or', 'reads'], ['reads', 'like'], ['like', 'a'], ['a', 'rough'], ['rough', 'transcription'], ['transcription', 'from'], ['from', 'another'], ['another', 'programming'], ['programming', 'language'], ['language', 'is'], ['is', 'called'], ['called', 'unpythonic.'], ['unpythonic.', 'Users'], ['Users', 'and'], ['and', 'admirers'], ['admirers', 'of'], ['of', 'Python,'], ['Python,', 'especially'], ['especially', 'those'], ['those', 'considered'], ['considered', 'knowledgeable'], ['knowledgeable', 'or'], ['or', 'experienced,'], ['experienced,', 'are'], ['are', 'often'], ['often', 'referred'], ['referred', 'to'], ['to', 'as'], ['as', 'Pythonists,'], ['Pythonists,', 'Pythonistas,'], ['Pythonistas,', 'and'], ['and', 'Pythoneers.'], ['Pythoneers.', 'Syntax'], ['Syntax', 'and'], ['and', 'semantics'], ['semantics', 'edit'], ['edit', 'Main'], ['Main', 'article:'], ['article:', 'Python'], ['Python', 'syntax'], ['syntax', 'and'], ['and', 'semantics'], ['semantics', 'Python'], ['Python', 'is'], ['is', 'meant'], ['meant', 'to'], ['to', 'be'], ['be', 'an'], ['an', 'easily'], ['easily', 'readable'], ['readable', 'language.'], ['language.', 'Its'], ['Its', 'formatting'], ['formatting', 'is'], ['is', 'visually'], ['visually', 'uncluttered,'], ['uncluttered,', 'and'], ['and', 'it'], ['it', 'often'], ['often', 'uses'], ['uses', 'English'], ['English', 'keywords'], ['keywords', 'where'], ['where', 'other'], ['other', 'languages'], ['languages', 'use'], ['use', 'punctuation.'], ['punctuation.', 'Unlike'], ['Unlike', 'many'], ['many', 'other'], ['other', 'languages,'], ['languages,', 'it'], ['it', 'does'], ['does', 'not'], ['not', 'use'], ['use', 'curly'], ['curly', 'brackets'], ['brackets', 'to'], ['to', 'delimit'], ['delimit', 'blocks,'], ['blocks,', 'and'], ['and', 'semicolons'], ['semicolons', 'after'], ['after', 'statements'], ['statements', 'are'], ['are', 'optional.'], ['optional.', 'It'], ['It', 'has'], ['has', 'fewer'], ['fewer', 'syntactic'], ['syntactic', 'exceptions'], ['exceptions', 'and'], ['and', 'special'], ['special', 'cases'], ['cases', 'than'], ['than', 'C'], ['C', 'or'], ['or', 'Pascal.'], ['Pascal.', 'Indentation'], ['Indentation', 'edit'], ['edit', 'Main'], ['Main', 'article:'], ['article:', 'Python'], ['Python', 'syntax'], ['syntax', 'and'], ['and', 'semantics'], ['semantics', 'Indentation'], ['Indentation', 'Python'], ['Python', 'uses'], ['uses', 'whitespace'], ['whitespace', 'indentation,'], ['indentation,', 'rather'], ['rather', 'than'], ['than', 'curly'], ['curly', 'braces'], ['braces', 'or'], ['or', 'keywords,'], ['keywords,', 'to'], ['to', 'delimit'], ['delimit', 'blocks.'], ['blocks.', 'An'], ['An', 'increase'], ['increase', 'in'], ['in', 'indentation'], ['indentation', 'comes'], ['comes', 'after'], ['after', 'certain'], ['certain', 'statements;'], ['statements;', 'a'], ['a', 'decrease'], ['decrease', 'in'], ['in', 'indentation'], ['indentation', 'signifies'], ['signifies', 'the'], ['the', 'end'], ['end', 'of'], ['of', 'the'], ['the', 'current'], ['current', 'block.'], ['block.', 'This'], ['This', 'feature'], ['feature', 'is'], ['is', 'also'], ['also', 'sometimes'], ['sometimes', 'termed'], ['termed', 'the'], ['the', 'off-side'], ['off-side', 'rule.'], ['rule.', 'Statements'], ['Statements', 'and'], ['and', 'control'], ['control', 'flow'], ['flow', 'edit'], ['edit', \"Python's\"], [\"Python's\", 'statements'], ['statements', 'include'], ['include', '(among'], ['(among', 'others):'], ['others):', 'The'], ['The', 'assignment'], ['assignment', 'statement'], ['statement', '(token'], ['(token', \"'=',\"], [\"'=',\", 'the'], ['the', 'equals'], ['equals', 'sign).'], ['sign).', 'This'], ['This', 'operates'], ['operates', 'differently'], ['differently', 'than'], ['than', 'in'], ['in', 'traditional'], ['traditional', 'imperative'], ['imperative', 'programming'], ['programming', 'languages,'], ['languages,', 'and'], ['and', 'this'], ['this', 'fundamental'], ['fundamental', 'mechanism'], ['mechanism', '(including'], ['(including', 'the'], ['the', 'nature'], ['nature', 'of'], ['of', \"Python's\"], [\"Python's\", 'version'], ['version', 'of'], ['of', 'variables)'], ['variables)', 'illuminates'], ['illuminates', 'many'], ['many', 'other'], ['other', 'features'], ['features', 'of'], ['of', 'the'], ['the', 'language.'], ['language.', 'Assignment'], ['Assignment', 'in'], ['in', 'C,'], ['C,', 'e.g.,'], ['e.g.,', 'x'], ['x', '='], ['=', ','], [',', 'translates'], ['translates', 'to'], ['to', '\"typed'], ['\"typed', 'variable'], ['variable', 'name'], ['name', 'x'], ['x', 'receives'], ['receives', 'a'], ['a', 'copy'], ['copy', 'of'], ['of', 'numeric'], ['numeric', 'value'], ['value', '\".'], ['\".', 'The'], ['The', '(right-hand)'], ['(right-hand)', 'value'], ['value', 'is'], ['is', 'copied'], ['copied', 'into'], ['into', 'an'], ['an', 'allocated'], ['allocated', 'storage'], ['storage', 'location'], ['location', 'for'], ['for', 'which'], ['which', 'the'], ['the', '(left-hand)'], ['(left-hand)', 'variable'], ['variable', 'name'], ['name', 'is'], ['is', 'the'], ['the', 'symbolic'], ['symbolic', 'address.'], ['address.', 'The'], ['The', 'memory'], ['memory', 'allocated'], ['allocated', 'to'], ['to', 'the'], ['the', 'variable'], ['variable', 'is'], ['is', 'large'], ['large', 'enough'], ['enough', '(potentially'], ['(potentially', 'quite'], ['quite', 'large)'], ['large)', 'for'], ['for', 'the'], ['the', 'declared'], ['declared', 'type.'], ['type.', 'In'], ['In', 'the'], ['the', 'simplest'], ['simplest', 'case'], ['case', 'of'], ['of', 'Python'], ['Python', 'assignment,'], ['assignment,', 'using'], ['using', 'the'], ['the', 'same'], ['same', 'example,'], ['example,', 'x'], ['x', '='], ['=', ','], [',', 'translates'], ['translates', 'to'], ['to', '\"(generic)'], ['\"(generic)', 'name'], ['name', 'x'], ['x', 'receives'], ['receives', 'a'], ['a', 'reference'], ['reference', 'to'], ['to', 'a'], ['a', 'separate,'], ['separate,', 'dynamically'], ['dynamically', 'allocated'], ['allocated', 'object'], ['object', 'of'], ['of', 'numeric'], ['numeric', '(int)'], ['(int)', 'type'], ['type', 'of'], ['of', 'value'], ['value', '.\"'], ['.\"', 'This'], ['This', 'is'], ['is', 'termed'], ['termed', 'binding'], ['binding', 'the'], ['the', 'name'], ['name', 'to'], ['to', 'the'], ['the', 'object.'], ['object.', 'Since'], ['Since', 'the'], ['the', \"name's\"], [\"name's\", 'storage'], ['storage', 'location'], ['location', \"doesn't\"], [\"doesn't\", 'contain'], ['contain', 'the'], ['the', 'indicated'], ['indicated', 'value,'], ['value,', 'it'], ['it', 'is'], ['is', 'improper'], ['improper', 'to'], ['to', 'call'], ['call', 'it'], ['it', 'a'], ['a', 'variable.'], ['variable.', 'Names'], ['Names', 'may'], ['may', 'be'], ['be', 'subsequently'], ['subsequently', 'rebound'], ['rebound', 'at'], ['at', 'any'], ['any', 'time'], ['time', 'to'], ['to', 'objects'], ['objects', 'of'], ['of', 'greatly'], ['greatly', 'varying'], ['varying', 'types,'], ['types,', 'including'], ['including', 'strings,'], ['strings,', 'procedures,'], ['procedures,', 'complex'], ['complex', 'objects'], ['objects', 'with'], ['with', 'data'], ['data', 'and'], ['and', 'methods,'], ['methods,', 'etc.'], ['etc.', 'Successive'], ['Successive', 'assignments'], ['assignments', 'of'], ['of', 'a'], ['a', 'common'], ['common', 'value'], ['value', 'to'], ['to', 'multiple'], ['multiple', 'names,'], ['names,', 'e.g.,'], ['e.g.,', 'x'], ['x', '='], ['=', ';'], [';', 'y'], ['y', '='], ['=', ';'], [';', 'z'], ['z', '='], ['=', 'result'], ['result', 'in'], ['in', 'allocating'], ['allocating', 'storage'], ['storage', 'to'], ['to', '(at'], ['(at', 'most)'], ['most)', 'three'], ['three', 'names'], ['names', 'and'], ['and', 'one'], ['one', 'numeric'], ['numeric', 'object,'], ['object,', 'to'], ['to', 'which'], ['which', 'all'], ['all', 'three'], ['three', 'names'], ['names', 'are'], ['are', 'bound.'], ['bound.', 'Since'], ['Since', 'a'], ['a', 'name'], ['name', 'is'], ['is', 'a'], ['a', 'generic'], ['generic', 'reference'], ['reference', 'holder'], ['holder', 'it'], ['it', 'is'], ['is', 'unreasonable'], ['unreasonable', 'to'], ['to', 'associate'], ['associate', 'a'], ['a', 'fixed'], ['fixed', 'data'], ['data', 'type'], ['type', 'with'], ['with', 'it.'], ['it.', 'However'], ['However', 'at'], ['at', 'a'], ['a', 'given'], ['given', 'time'], ['time', 'a'], ['a', 'name'], ['name', 'will'], ['will', 'be'], ['be', 'bound'], ['bound', 'to'], ['to', 'some'], ['some', 'object,'], ['object,', 'which'], ['which', 'will'], ['will', 'have'], ['have', 'a'], ['a', 'type;'], ['type;', 'thus'], ['thus', 'there'], ['there', 'is'], ['is', 'dynamic'], ['dynamic', 'typing.'], ['typing.', 'The'], ['The', 'if'], ['if', 'statement,'], ['statement,', 'which'], ['which', 'conditionally'], ['conditionally', 'executes'], ['executes', 'a'], ['a', 'block'], ['block', 'of'], ['of', 'code,'], ['code,', 'along'], ['along', 'with'], ['with', 'else'], ['else', 'and'], ['and', 'elif'], ['elif', '(a'], ['(a', 'contraction'], ['contraction', 'of'], ['of', 'else-if).'], ['else-if).', 'The'], ['The', 'for'], ['for', 'statement,'], ['statement,', 'which'], ['which', 'iterates'], ['iterates', 'over'], ['over', 'an'], ['an', 'iterable'], ['iterable', 'object,'], ['object,', 'capturing'], ['capturing', 'each'], ['each', 'element'], ['element', 'to'], ['to', 'a'], ['a', 'local'], ['local', 'variable'], ['variable', 'for'], ['for', 'use'], ['use', 'by'], ['by', 'the'], ['the', 'attached'], ['attached', 'block.'], ['block.', 'The'], ['The', 'while'], ['while', 'statement,'], ['statement,', 'which'], ['which', 'executes'], ['executes', 'a'], ['a', 'block'], ['block', 'of'], ['of', 'code'], ['code', 'as'], ['as', 'long'], ['long', 'as'], ['as', 'its'], ['its', 'condition'], ['condition', 'is'], ['is', 'true.'], ['true.', 'The'], ['The', 'try'], ['try', 'statement,'], ['statement,', 'which'], ['which', 'allows'], ['allows', 'exceptions'], ['exceptions', 'raised'], ['raised', 'in'], ['in', 'its'], ['its', 'attached'], ['attached', 'code'], ['code', 'block'], ['block', 'to'], ['to', 'be'], ['be', 'caught'], ['caught', 'and'], ['and', 'handled'], ['handled', 'by'], ['by', 'except'], ['except', 'clauses;'], ['clauses;', 'it'], ['it', 'also'], ['also', 'ensures'], ['ensures', 'that'], ['that', 'clean-up'], ['clean-up', 'code'], ['code', 'in'], ['in', 'a'], ['a', 'finally'], ['finally', 'block'], ['block', 'will'], ['will', 'always'], ['always', 'be'], ['be', 'run'], ['run', 'regardless'], ['regardless', 'of'], ['of', 'how'], ['how', 'the'], ['the', 'block'], ['block', 'exits.'], ['exits.', 'The'], ['The', 'class'], ['class', 'statement,'], ['statement,', 'which'], ['which', 'executes'], ['executes', 'a'], ['a', 'block'], ['block', 'of'], ['of', 'code'], ['code', 'and'], ['and', 'attaches'], ['attaches', 'its'], ['its', 'local'], ['local', 'namespace'], ['namespace', 'to'], ['to', 'a'], ['a', 'class,'], ['class,', 'for'], ['for', 'use'], ['use', 'in'], ['in', 'object-oriented'], ['object-oriented', 'programming.'], ['programming.', 'The'], ['The', 'def'], ['def', 'statement,'], ['statement,', 'which'], ['which', 'defines'], ['defines', 'a'], ['a', 'function'], ['function', 'or'], ['or', 'method.'], ['method.', 'The'], ['The', 'with'], ['with', 'statement'], ['statement', '(from'], ['(from', 'Python'], ['Python', '.'], ['.', '),'], ['),', 'which'], ['which', 'encloses'], ['encloses', 'a'], ['a', 'code'], ['code', 'block'], ['block', 'within'], ['within', 'a'], ['a', 'context'], ['context', 'manager'], ['manager', '(for'], ['(for', 'example,'], ['example,', 'acquiring'], ['acquiring', 'a'], ['a', 'lock'], ['lock', 'before'], ['before', 'the'], ['the', 'block'], ['block', 'of'], ['of', 'code'], ['code', 'is'], ['is', 'run'], ['run', 'and'], ['and', 'releasing'], ['releasing', 'the'], ['the', 'lock'], ['lock', 'afterwards,'], ['afterwards,', 'or'], ['or', 'opening'], ['opening', 'a'], ['a', 'file'], ['file', 'and'], ['and', 'then'], ['then', 'closing'], ['closing', 'it),'], ['it),', 'allowing'], ['allowing', 'Resource'], ['Resource', 'Acquisition'], ['Acquisition', 'Is'], ['Is', 'Initialization'], ['Initialization', '(RAII)-like'], ['(RAII)-like', 'behavior.'], ['behavior.', 'The'], ['The', 'pass'], ['pass', 'statement,'], ['statement,', 'which'], ['which', 'serves'], ['serves', 'as'], ['as', 'a'], ['a', 'NOP.'], ['NOP.', 'It'], ['It', 'is'], ['is', 'syntactically'], ['syntactically', 'needed'], ['needed', 'to'], ['to', 'create'], ['create', 'an'], ['an', 'empty'], ['empty', 'code'], ['code', 'block.'], ['block.', 'The'], ['The', 'assert'], ['assert', 'statement,'], ['statement,', 'used'], ['used', 'during'], ['during', 'debugging'], ['debugging', 'to'], ['to', 'check'], ['check', 'for'], ['for', 'conditions'], ['conditions', 'that'], ['that', 'ought'], ['ought', 'to'], ['to', 'apply.'], ['apply.', 'The'], ['The', 'yield'], ['yield', 'statement,'], ['statement,', 'which'], ['which', 'returns'], ['returns', 'a'], ['a', 'value'], ['value', 'from'], ['from', 'a'], ['a', 'generator'], ['generator', 'function.'], ['function.', 'From'], ['From', 'Python'], ['Python', '.'], ['.', ','], [',', 'yield'], ['yield', 'is'], ['is', 'also'], ['also', 'an'], ['an', 'operator.'], ['operator.', 'This'], ['This', 'form'], ['form', 'is'], ['is', 'used'], ['used', 'to'], ['to', 'implement'], ['implement', 'coroutines.'], ['coroutines.', 'The'], ['The', 'import'], ['import', 'statement,'], ['statement,', 'which'], ['which', 'is'], ['is', 'used'], ['used', 'to'], ['to', 'import'], ['import', 'modules'], ['modules', 'whose'], ['whose', 'functions'], ['functions', 'or'], ['or', 'variables'], ['variables', 'can'], ['can', 'be'], ['be', 'used'], ['used', 'in'], ['in', 'the'], ['the', 'current'], ['current', 'program.'], ['program.', 'There'], ['There', 'are'], ['are', 'two'], ['two', 'ways'], ['ways', 'of'], ['of', 'using'], ['using', 'import:'], ['import:', 'from'], ['from', ''], ['name>', 'import'], ['import', '*'], ['*', 'or'], ['or', 'import'], ['import', '.'], ['name>.', 'The'], ['The', 'print'], ['print', 'statement'], ['statement', 'was'], ['was', 'changed'], ['changed', 'to'], ['to', 'the'], ['the', 'print()'], ['print()', 'function'], ['function', 'in'], ['in', 'Python'], ['Python', '.'], ['.', 'Python'], ['Python', 'does'], ['does', 'not'], ['not', 'support'], ['support', 'tail'], ['tail', 'call'], ['call', 'optimization'], ['optimization', 'or'], ['or', 'first-class'], ['first-class', 'continuations,'], ['continuations,', 'and,'], ['and,', 'according'], ['according', 'to'], ['to', 'Guido'], ['Guido', 'van'], ['van', 'Rossum,'], ['Rossum,', 'it'], ['it', 'never'], ['never', 'will.'], ['will.', 'However,'], ['However,', 'better'], ['better', 'support'], ['support', 'for'], ['for', 'coroutine-like'], ['coroutine-like', 'functionality'], ['functionality', 'is'], ['is', 'provided'], ['provided', 'in'], ['in', '.'], ['.', ','], [',', 'by'], ['by', 'extending'], ['extending', \"Python's\"], [\"Python's\", 'generators.'], ['generators.', 'Before'], ['Before', '.'], ['.', ','], [',', 'generators'], ['generators', 'were'], ['were', 'lazy'], ['lazy', 'iterators;'], ['iterators;', 'information'], ['information', 'was'], ['was', 'passed'], ['passed', 'unidirectionally'], ['unidirectionally', 'out'], ['out', 'of'], ['of', 'the'], ['the', 'generator.'], ['generator.', 'From'], ['From', 'Python'], ['Python', '.'], ['.', ','], [',', 'it'], ['it', 'is'], ['is', 'possible'], ['possible', 'to'], ['to', 'pass'], ['pass', 'information'], ['information', 'back'], ['back', 'into'], ['into', 'a'], ['a', 'generator'], ['generator', 'function,'], ['function,', 'and'], ['and', 'from'], ['from', 'Python'], ['Python', '.'], ['.', ','], [',', 'the'], ['the', 'information'], ['information', 'can'], ['can', 'be'], ['be', 'passed'], ['passed', 'through'], ['through', 'multiple'], ['multiple', 'stack'], ['stack', 'levels.'], ['levels.', 'Expressions'], ['Expressions', 'edit'], ['edit', 'Some'], ['Some', 'Python'], ['Python', 'expressions'], ['expressions', 'are'], ['are', 'similar'], ['similar', 'to'], ['to', 'languages'], ['languages', 'such'], ['such', 'as'], ['as', 'C'], ['C', 'and'], ['and', 'Java,'], ['Java,', 'while'], ['while', 'some'], ['some', 'are'], ['are', 'not:'], ['not:', 'Addition,'], ['Addition,', 'subtraction,'], ['subtraction,', 'and'], ['and', 'multiplication'], ['multiplication', 'are'], ['are', 'the'], ['the', 'same,'], ['same,', 'but'], ['but', 'the'], ['the', 'behavior'], ['behavior', 'of'], ['of', 'division'], ['division', 'differs.'], ['differs.', 'There'], ['There', 'are'], ['are', 'two'], ['two', 'types'], ['types', 'of'], ['of', 'divisions'], ['divisions', 'in'], ['in', 'Python.'], ['Python.', 'They'], ['They', 'are'], ['are', 'floor'], ['floor', 'division'], ['division', 'and'], ['and', 'integer'], ['integer', 'division.'], ['division.', 'Python'], ['Python', 'also'], ['also', 'added'], ['added', 'the'], ['the', '**'], ['**', 'operator'], ['operator', 'for'], ['for', 'exponentiation.'], ['exponentiation.', 'From'], ['From', 'Python'], ['Python', '.'], ['.', ','], [',', 'it'], ['it', 'enables'], ['enables', 'support'], ['support', 'of'], ['of', 'matrix'], ['matrix', 'multiplication'], ['multiplication', 'with'], ['with', 'the'], ['the', '@'], ['@', 'operator.'], ['operator.', 'In'], ['In', 'Python,'], ['Python,', '=='], ['==', 'compares'], ['compares', 'by'], ['by', 'value,'], ['value,', 'versus'], ['versus', 'Java,'], ['Java,', 'which'], ['which', 'compares'], ['compares', 'numerics'], ['numerics', 'by'], ['by', 'value'], ['value', 'and'], ['and', 'objects'], ['objects', 'by'], ['by', 'reference.'], ['reference.', '(Value'], ['(Value', 'comparisons'], ['comparisons', 'in'], ['in', 'Java'], ['Java', 'on'], ['on', 'objects'], ['objects', 'can'], ['can', 'be'], ['be', 'performed'], ['performed', 'with'], ['with', 'the'], ['the', 'equals()'], ['equals()', 'method.)'], ['method.)', \"Python's\"], [\"Python's\", 'is'], ['is', 'operator'], ['operator', 'may'], ['may', 'be'], ['be', 'used'], ['used', 'to'], ['to', 'compare'], ['compare', 'object'], ['object', 'identities'], ['identities', '(comparison'], ['(comparison', 'by'], ['by', 'reference).'], ['reference).', 'In'], ['In', 'Python,'], ['Python,', 'comparisons'], ['comparisons', 'may'], ['may', 'be'], ['be', 'chained,'], ['chained,', 'for'], ['for', 'example'], ['example', 'a'], ['a', '<='], ['<=', 'b'], ['b', '<='], ['<=', 'c.'], ['c.', 'Python'], ['Python', 'uses'], ['uses', 'the'], ['the', 'words'], ['words', 'and,'], ['and,', 'or,'], ['or,', 'not'], ['not', 'for'], ['for', 'its'], ['its', 'boolean'], ['boolean', 'operators'], ['operators', 'rather'], ['rather', 'than'], ['than', 'the'], ['the', 'symbolic'], ['symbolic', '&&,'], ['&&,', '||,'], ['||,', '!'], ['!', 'used'], ['used', 'in'], ['in', 'Java'], ['Java', 'and'], ['and', 'C.'], ['C.', 'Python'], ['Python', 'has'], ['has', 'a'], ['a', 'type'], ['type', 'of'], ['of', 'expression'], ['expression', 'termed'], ['termed', 'a'], ['a', 'list'], ['list', 'comprehension.'], ['comprehension.', 'Python'], ['Python', '.'], ['.', 'extended'], ['extended', 'list'], ['list', 'comprehensions'], ['comprehensions', 'into'], ['into', 'a'], ['a', 'more'], ['more', 'general'], ['general', 'expression'], ['expression', 'termed'], ['termed', 'a'], ['a', 'generator'], ['generator', 'expression.'], ['expression.', 'Anonymous'], ['Anonymous', 'functions'], ['functions', 'are'], ['are', 'implemented'], ['implemented', 'using'], ['using', 'lambda'], ['lambda', 'expressions;'], ['expressions;', 'however,'], ['however,', 'these'], ['these', 'are'], ['are', 'limited'], ['limited', 'in'], ['in', 'that'], ['that', 'the'], ['the', 'body'], ['body', 'can'], ['can', 'only'], ['only', 'be'], ['be', 'one'], ['one', 'expression.'], ['expression.', 'Conditional'], ['Conditional', 'expressions'], ['expressions', 'in'], ['in', 'Python'], ['Python', 'are'], ['are', 'written'], ['written', 'as'], ['as', 'x'], ['x', 'if'], ['if', 'c'], ['c', 'else'], ['else', 'y'], ['y', '(different'], ['(different', 'in'], ['in', 'order'], ['order', 'of'], ['of', 'operands'], ['operands', 'from'], ['from', 'the'], ['the', 'c'], ['c', '?'], ['?', 'x'], ['x', ':'], [':', 'y'], ['y', 'operator'], ['operator', 'common'], ['common', 'to'], ['to', 'many'], ['many', 'other'], ['other', 'languages).'], ['languages).', 'Python'], ['Python', 'makes'], ['makes', 'a'], ['a', 'distinction'], ['distinction', 'between'], ['between', 'lists'], ['lists', 'and'], ['and', 'tuples.'], ['tuples.', 'Lists'], ['Lists', 'are'], ['are', 'written'], ['written', 'as'], ['as', ','], [',', ','], [',', ','], [',', 'are'], ['are', 'mutable,'], ['mutable,', 'and'], ['and', 'cannot'], ['cannot', 'be'], ['be', 'used'], ['used', 'as'], ['as', 'the'], ['the', 'keys'], ['keys', 'of'], ['of', 'dictionaries'], ['dictionaries', '(dictionary'], ['(dictionary', 'keys'], ['keys', 'must'], ['must', 'be'], ['be', 'immutable'], ['immutable', 'in'], ['in', 'Python).'], ['Python).', 'Tuples'], ['Tuples', 'are'], ['are', 'written'], ['written', 'as'], ['as', '('], ['(', ','], [',', ','], [',', '),'], ['),', 'are'], ['are', 'immutable'], ['immutable', 'and'], ['and', 'thus'], ['thus', 'can'], ['can', 'be'], ['be', 'used'], ['used', 'as'], ['as', 'the'], ['the', 'keys'], ['keys', 'of'], ['of', 'dictionaries,'], ['dictionaries,', 'provided'], ['provided', 'all'], ['all', 'elements'], ['elements', 'of'], ['of', 'the'], ['the', 'tuple'], ['tuple', 'are'], ['are', 'immutable.'], ['immutable.', 'The'], ['The', 'operator'], ['operator', 'can'], ['can', 'be'], ['be', 'used'], ['used', 'to'], ['to', 'concatenate'], ['concatenate', 'two'], ['two', 'tuples,'], ['tuples,', 'which'], ['which', 'does'], ['does', 'not'], ['not', 'directly'], ['directly', 'modify'], ['modify', 'their'], ['their', 'contents,'], ['contents,', 'but'], ['but', 'rather'], ['rather', 'produces'], ['produces', 'a'], ['a', 'new'], ['new', 'tuple'], ['tuple', 'containing'], ['containing', 'the'], ['the', 'elements'], ['elements', 'of'], ['of', 'both'], ['both', 'provided'], ['provided', 'tuples.'], ['tuples.', 'Thus,'], ['Thus,', 'given'], ['given', 'the'], ['the', 'variable'], ['variable', 't'], ['t', 'initially'], ['initially', 'equal'], ['equal', 'to'], ['to', '('], ['(', ','], [',', ','], [',', '),'], ['),', 'executing'], ['executing', 't'], ['t', '='], ['=', 't'], ['t', '('], ['(', ','], [',', ')'], [')', 'first'], ['first', 'evaluates'], ['evaluates', 't'], ['t', '('], ['(', ','], [',', '),'], ['),', 'which'], ['which', 'yields'], ['yields', '('], ['(', ','], [',', ','], [',', ','], [',', ','], [',', '),'], ['),', 'which'], ['which', 'is'], ['is', 'then'], ['then', 'assigned'], ['assigned', 'back'], ['back', 'to'], ['to', 't,'], ['t,', 'thereby'], ['thereby', 'effectively'], ['effectively', '\"modifying'], ['\"modifying', 'the'], ['the', 'contents\"'], ['contents\"', 'of'], ['of', 't,'], ['t,', 'while'], ['while', 'conforming'], ['conforming', 'to'], ['to', 'the'], ['the', 'immutable'], ['immutable', 'nature'], ['nature', 'of'], ['of', 'tuple'], ['tuple', 'objects.'], ['objects.', 'Parentheses'], ['Parentheses', 'are'], ['are', 'optional'], ['optional', 'for'], ['for', 'tuples'], ['tuples', 'in'], ['in', 'unambiguous'], ['unambiguous', 'contexts.'], ['contexts.', 'Python'], ['Python', 'features'], ['features', 'sequence'], ['sequence', 'unpacking'], ['unpacking', 'where'], ['where', 'multiple'], ['multiple', 'expressions,'], ['expressions,', 'each'], ['each', 'evaluating'], ['evaluating', 'to'], ['to', 'anything'], ['anything', 'that'], ['that', 'can'], ['can', 'be'], ['be', 'assigned'], ['assigned', 'to'], ['to', '(a'], ['(a', 'variable,'], ['variable,', 'a'], ['a', 'writable'], ['writable', 'property,'], ['property,', 'etc),'], ['etc),', 'are'], ['are', 'associated'], ['associated', 'in'], ['in', 'the'], ['the', 'identical'], ['identical', 'manner'], ['manner', 'to'], ['to', 'that'], ['that', 'forming'], ['forming', 'tuple'], ['tuple', 'literals'], ['literals', 'and,'], ['and,', 'as'], ['as', 'a'], ['a', 'whole,'], ['whole,', 'are'], ['are', 'put'], ['put', 'on'], ['on', 'the'], ['the', 'left'], ['left', 'hand'], ['hand', 'side'], ['side', 'of'], ['of', 'the'], ['the', 'equal'], ['equal', 'sign'], ['sign', 'in'], ['in', 'an'], ['an', 'assignment'], ['assignment', 'statement.'], ['statement.', 'The'], ['The', 'statement'], ['statement', 'expects'], ['expects', 'an'], ['an', 'iterable'], ['iterable', 'object'], ['object', 'on'], ['on', 'the'], ['the', 'right'], ['right', 'hand'], ['hand', 'side'], ['side', 'of'], ['of', 'the'], ['the', 'equal'], ['equal', 'sign'], ['sign', 'that'], ['that', 'produces'], ['produces', 'the'], ['the', 'same'], ['same', 'number'], ['number', 'of'], ['of', 'values'], ['values', 'as'], ['as', 'the'], ['the', 'provided'], ['provided', 'writable'], ['writable', 'expressions'], ['expressions', 'when'], ['when', 'iterated'], ['iterated', 'through,'], ['through,', 'and'], ['and', 'will'], ['will', 'iterate'], ['iterate', 'through'], ['through', 'it,'], ['it,', 'assigning'], ['assigning', 'each'], ['each', 'of'], ['of', 'the'], ['the', 'produced'], ['produced', 'values'], ['values', 'to'], ['to', 'the'], ['the', 'corresponding'], ['corresponding', 'expression'], ['expression', 'on'], ['on', 'the'], ['the', 'left.'], ['left.', 'citation'], ['citation', 'needed'], ['needed', 'Python'], ['Python', 'has'], ['has', 'a'], ['a', '\"string'], ['\"string', 'format\"'], ['format\"', 'operator'], ['operator', '%.'], ['%.', 'This'], ['This', 'functions'], ['functions', 'analogous'], ['analogous', 'to'], ['to', 'printf'], ['printf', 'format'], ['format', 'strings'], ['strings', 'in'], ['in', 'C,'], ['C,', 'e.g.'], ['e.g.', '\"spam=%s'], ['\"spam=%s', 'eggs=%d\"%'], ['eggs=%d\"%', '(\"blah\",'], ['(\"blah\",', ')'], [')', 'evaluates'], ['evaluates', 'to'], ['to', '\"spam=blah'], ['\"spam=blah', 'eggs='], ['eggs=', '\".'], ['\".', 'In'], ['In', 'Python'], ['Python', 'and'], ['and', '.'], ['.', ','], [',', 'this'], ['this', 'was'], ['was', 'supplemented'], ['supplemented', 'by'], ['by', 'the'], ['the', 'format()'], ['format()', 'method'], ['method', 'of'], ['of', 'the'], ['the', 'str'], ['str', 'class,'], ['class,', 'e.g.'], ['e.g.', '\"spam={'], ['\"spam={', '}'], ['}', 'eggs={'], ['eggs={', '}\".format(\"blah\",'], ['}\".format(\"blah\",', '),'], ['),', 'Python'], ['Python', '.'], ['.', 'added'], ['added', '\"f-strings\":'], ['\"f-strings\":', 'f\\'spam={\"blah\"}'], ['f\\'spam={\"blah\"}', 'eggs={'], ['eggs={', \"}'.\"], [\"}'.\", 'Python'], ['Python', 'has'], ['has', 'various'], ['various', 'kinds'], ['kinds', 'of'], ['of', 'string'], ['string', 'literals:'], ['literals:', 'Strings'], ['Strings', 'delimited'], ['delimited', 'by'], ['by', 'single'], ['single', 'or'], ['or', 'double'], ['double', 'quote'], ['quote', 'marks.'], ['marks.', 'Unlike'], ['Unlike', 'in'], ['in', 'Unix'], ['Unix', 'shells,'], ['shells,', 'Perl'], ['Perl', 'and'], ['and', 'Perl-influenced'], ['Perl-influenced', 'languages,'], ['languages,', 'single'], ['single', 'quote'], ['quote', 'marks'], ['marks', 'and'], ['and', 'double'], ['double', 'quote'], ['quote', 'marks'], ['marks', 'function'], ['function', 'identically.'], ['identically.', 'Both'], ['Both', 'kinds'], ['kinds', 'of'], ['of', 'string'], ['string', 'use'], ['use', 'the'], ['the', 'backslash'], ['backslash', '(\\\\)'], ['(\\\\)', 'as'], ['as', 'an'], ['an', 'escape'], ['escape', 'character.'], ['character.', 'String'], ['String', 'interpolation'], ['interpolation', 'became'], ['became', 'available'], ['available', 'in'], ['in', 'Python'], ['Python', '.'], ['.', 'as'], ['as', '\"formatted'], ['\"formatted', 'string'], ['string', 'literals\".'], ['literals\".', 'Triple-quoted'], ['Triple-quoted', 'strings,'], ['strings,', 'which'], ['which', 'begin'], ['begin', 'and'], ['and', 'end'], ['end', 'with'], ['with', 'a'], ['a', 'series'], ['series', 'of'], ['of', 'three'], ['three', 'single'], ['single', 'or'], ['or', 'double'], ['double', 'quote'], ['quote', 'marks.'], ['marks.', 'They'], ['They', 'may'], ['may', 'span'], ['span', 'multiple'], ['multiple', 'lines'], ['lines', 'and'], ['and', 'function'], ['function', 'like'], ['like', 'here'], ['here', 'documents'], ['documents', 'in'], ['in', 'shells,'], ['shells,', 'Perl'], ['Perl', 'and'], ['and', 'Ruby.'], ['Ruby.', 'Raw'], ['Raw', 'string'], ['string', 'varieties,'], ['varieties,', 'denoted'], ['denoted', 'by'], ['by', 'prefixing'], ['prefixing', 'the'], ['the', 'string'], ['string', 'literal'], ['literal', 'with'], ['with', 'an'], ['an', 'r.'], ['r.', 'Escape'], ['Escape', 'sequences'], ['sequences', 'are'], ['are', 'not'], ['not', 'interpreted;'], ['interpreted;', 'hence'], ['hence', 'raw'], ['raw', 'strings'], ['strings', 'are'], ['are', 'useful'], ['useful', 'where'], ['where', 'literal'], ['literal', 'backslashes'], ['backslashes', 'are'], ['are', 'common,'], ['common,', 'such'], ['such', 'as'], ['as', 'regular'], ['regular', 'expressions'], ['expressions', 'and'], ['and', 'Windows-style'], ['Windows-style', 'paths.'], ['paths.', 'Compare'], ['Compare', '\"@-quoting\"'], ['\"@-quoting\"', 'in'], ['in', 'C#.'], ['C#.', 'Python'], ['Python', 'has'], ['has', 'array'], ['array', 'index'], ['index', 'and'], ['and', 'array'], ['array', 'slicing'], ['slicing', 'expressions'], ['expressions', 'on'], ['on', 'lists,'], ['lists,', 'denoted'], ['denoted', 'as'], ['as', 'a'], ['a', 'key'], ['key', ','], [',', 'a'], ['a', 'start:stop'], ['start:stop', 'or'], ['or', 'a'], ['a', 'start:stop:step'], ['start:stop:step', '.'], ['.', 'Indexes'], ['Indexes', 'are'], ['are', 'zero-based,'], ['zero-based,', 'and'], ['and', 'negative'], ['negative', 'indexes'], ['indexes', 'are'], ['are', 'relative'], ['relative', 'to'], ['to', 'the'], ['the', 'end.'], ['end.', 'Slices'], ['Slices', 'take'], ['take', 'elements'], ['elements', 'from'], ['from', 'the'], ['the', 'start'], ['start', 'index'], ['index', 'up'], ['up', 'to,'], ['to,', 'but'], ['but', 'not'], ['not', 'including,'], ['including,', 'the'], ['the', 'stop'], ['stop', 'index.'], ['index.', 'The'], ['The', 'third'], ['third', 'slice'], ['slice', 'parameter,'], ['parameter,', 'called'], ['called', 'step'], ['step', 'or'], ['or', 'stride,'], ['stride,', 'allows'], ['allows', 'elements'], ['elements', 'to'], ['to', 'be'], ['be', 'skipped'], ['skipped', 'and'], ['and', 'reversed.'], ['reversed.', 'Slice'], ['Slice', 'indexes'], ['indexes', 'may'], ['may', 'be'], ['be', 'omitted,'], ['omitted,', 'for'], ['for', 'example'], ['example', 'a'], ['a', ':'], [':', 'returns'], ['returns', 'a'], ['a', 'copy'], ['copy', 'of'], ['of', 'the'], ['the', 'entire'], ['entire', 'list.'], ['list.', 'Each'], ['Each', 'element'], ['element', 'of'], ['of', 'a'], ['a', 'slice'], ['slice', 'is'], ['is', 'a'], ['a', 'shallow'], ['shallow', 'copy.'], ['copy.', 'In'], ['In', 'Python,'], ['Python,', 'a'], ['a', 'distinction'], ['distinction', 'between'], ['between', 'expressions'], ['expressions', 'and'], ['and', 'statements'], ['statements', 'is'], ['is', 'rigidly'], ['rigidly', 'enforced,'], ['enforced,', 'in'], ['in', 'contrast'], ['contrast', 'to'], ['to', 'languages'], ['languages', 'such'], ['such', 'as'], ['as', 'Common'], ['Common', 'Lisp,'], ['Lisp,', 'Scheme,'], ['Scheme,', 'or'], ['or', 'Ruby.'], ['Ruby.', 'This'], ['This', 'leads'], ['leads', 'to'], ['to', 'duplicating'], ['duplicating', 'some'], ['some', 'functionality.'], ['functionality.', 'For'], ['For', 'example:'], ['example:', 'List'], ['List', 'comprehensions'], ['comprehensions', 'vs.'], ['vs.', 'for-loops'], ['for-loops', 'Conditional'], ['Conditional', 'expressions'], ['expressions', 'vs.'], ['vs.', 'if'], ['if', 'blocks'], ['blocks', 'The'], ['The', 'eval()'], ['eval()', 'vs.'], ['vs.', 'exec()'], ['exec()', 'built-in'], ['built-in', 'functions'], ['functions', '(in'], ['(in', 'Python'], ['Python', ','], [',', 'exec'], ['exec', 'is'], ['is', 'a'], ['a', 'statement);'], ['statement);', 'the'], ['the', 'former'], ['former', 'is'], ['is', 'for'], ['for', 'expressions,'], ['expressions,', 'the'], ['the', 'latter'], ['latter', 'is'], ['is', 'for'], ['for', 'statements.'], ['statements.', 'Statements'], ['Statements', 'cannot'], ['cannot', 'be'], ['be', 'a'], ['a', 'part'], ['part', 'of'], ['of', 'an'], ['an', 'expression,'], ['expression,', 'so'], ['so', 'list'], ['list', 'and'], ['and', 'other'], ['other', 'comprehensions'], ['comprehensions', 'or'], ['or', 'lambda'], ['lambda', 'expressions,'], ['expressions,', 'all'], ['all', 'being'], ['being', 'expressions,'], ['expressions,', 'cannot'], ['cannot', 'contain'], ['contain', 'statements.'], ['statements.', 'A'], ['A', 'particular'], ['particular', 'case'], ['case', 'of'], ['of', 'this'], ['this', 'is'], ['is', 'that'], ['that', 'an'], ['an', 'assignment'], ['assignment', 'statement'], ['statement', 'such'], ['such', 'as'], ['as', 'a'], ['a', '='], ['=', 'cannot'], ['cannot', 'form'], ['form', 'part'], ['part', 'of'], ['of', 'the'], ['the', 'conditional'], ['conditional', 'expression'], ['expression', 'of'], ['of', 'a'], ['a', 'conditional'], ['conditional', 'statement.'], ['statement.', 'This'], ['This', 'has'], ['has', 'the'], ['the', 'advantage'], ['advantage', 'of'], ['of', 'avoiding'], ['avoiding', 'a'], ['a', 'classic'], ['classic', 'C'], ['C', 'error'], ['error', 'of'], ['of', 'mistaking'], ['mistaking', 'an'], ['an', 'assignment'], ['assignment', 'operator'], ['operator', '='], ['=', 'for'], ['for', 'an'], ['an', 'equality'], ['equality', 'operator'], ['operator', '=='], ['==', 'in'], ['in', 'conditions:'], ['conditions:', 'if'], ['if', '(c'], ['(c', '='], ['=', ')'], [')', '{'], ['{', '...'], ['...', '}'], ['}', 'is'], ['is', 'syntactically'], ['syntactically', 'valid'], ['valid', '(but'], ['(but', 'probably'], ['probably', 'unintended)'], ['unintended)', 'C'], ['C', 'code'], ['code', 'but'], ['but', 'if'], ['if', 'c'], ['c', '='], ['=', ':'], [':', '...'], ['...', 'causes'], ['causes', 'a'], ['a', 'syntax'], ['syntax', 'error'], ['error', 'in'], ['in', 'Python.'], ['Python.', 'Methods'], ['Methods', 'edit'], ['edit', 'Methods'], ['Methods', 'on'], ['on', 'objects'], ['objects', 'are'], ['are', 'functions'], ['functions', 'attached'], ['attached', 'to'], ['to', 'the'], ['the', \"object's\"], [\"object's\", 'class;'], ['class;', 'the'], ['the', 'syntax'], ['syntax', 'instance.method(argument)'], ['instance.method(argument)', 'is,'], ['is,', 'for'], ['for', 'normal'], ['normal', 'methods'], ['methods', 'and'], ['and', 'functions,'], ['functions,', 'syntactic'], ['syntactic', 'sugar'], ['sugar', 'for'], ['for', 'Class.method(instance,'], ['Class.method(instance,', 'argument).'], ['argument).', 'Python'], ['Python', 'methods'], ['methods', 'have'], ['have', 'an'], ['an', 'explicit'], ['explicit', 'self'], ['self', 'parameter'], ['parameter', 'to'], ['to', 'access'], ['access', 'instance'], ['instance', 'data,'], ['data,', 'in'], ['in', 'contrast'], ['contrast', 'to'], ['to', 'the'], ['the', 'implicit'], ['implicit', 'self'], ['self', '(or'], ['(or', 'this)'], ['this)', 'in'], ['in', 'some'], ['some', 'other'], ['other', 'object-oriented'], ['object-oriented', 'programming'], ['programming', 'languages'], ['languages', '(e.g.,'], ['(e.g.,', 'C'], ['C', ','], [',', 'Java,'], ['Java,', 'Objective-C,'], ['Objective-C,', 'or'], ['or', 'Ruby).'], ['Ruby).', 'Typing'], ['Typing', 'edit'], ['edit', 'Python'], ['Python', 'uses'], ['uses', 'duck'], ['duck', 'typing'], ['typing', 'and'], ['and', 'has'], ['has', 'typed'], ['typed', 'objects'], ['objects', 'but'], ['but', 'untyped'], ['untyped', 'variable'], ['variable', 'names.'], ['names.', 'Type'], ['Type', 'constraints'], ['constraints', 'are'], ['are', 'not'], ['not', 'checked'], ['checked', 'at'], ['at', 'compile'], ['compile', 'time;'], ['time;', 'rather,'], ['rather,', 'operations'], ['operations', 'on'], ['on', 'an'], ['an', 'object'], ['object', 'may'], ['may', 'fail,'], ['fail,', 'signifying'], ['signifying', 'that'], ['that', 'the'], ['the', 'given'], ['given', 'object'], ['object', 'is'], ['is', 'not'], ['not', 'of'], ['of', 'a'], ['a', 'suitable'], ['suitable', 'type.'], ['type.', 'Despite'], ['Despite', 'being'], ['being', 'dynamically'], ['dynamically', 'typed,'], ['typed,', 'Python'], ['Python', 'is'], ['is', 'strongly'], ['strongly', 'typed,'], ['typed,', 'forbidding'], ['forbidding', 'operations'], ['operations', 'that'], ['that', 'are'], ['are', 'not'], ['not', 'well-defined'], ['well-defined', '(for'], ['(for', 'example,'], ['example,', 'adding'], ['adding', 'a'], ['a', 'number'], ['number', 'to'], ['to', 'a'], ['a', 'string)'], ['string)', 'rather'], ['rather', 'than'], ['than', 'silently'], ['silently', 'attempting'], ['attempting', 'to'], ['to', 'make'], ['make', 'sense'], ['sense', 'of'], ['of', 'them.'], ['them.', 'Python'], ['Python', 'allows'], ['allows', 'programmers'], ['programmers', 'to'], ['to', 'define'], ['define', 'their'], ['their', 'own'], ['own', 'types'], ['types', 'using'], ['using', 'classes,'], ['classes,', 'which'], ['which', 'are'], ['are', 'most'], ['most', 'often'], ['often', 'used'], ['used', 'for'], ['for', 'object-oriented'], ['object-oriented', 'programming.'], ['programming.', 'New'], ['New', 'instances'], ['instances', 'of'], ['of', 'classes'], ['classes', 'are'], ['are', 'constructed'], ['constructed', 'by'], ['by', 'calling'], ['calling', 'the'], ['the', 'class'], ['class', '(for'], ['(for', 'example,'], ['example,', 'SpamClass()'], ['SpamClass()', 'or'], ['or', 'EggsClass()),'], ['EggsClass()),', 'and'], ['and', 'the'], ['the', 'classes'], ['classes', 'are'], ['are', 'instances'], ['instances', 'of'], ['of', 'the'], ['the', 'metaclass'], ['metaclass', 'type'], ['type', '(itself'], ['(itself', 'an'], ['an', 'instance'], ['instance', 'of'], ['of', 'itself),'], ['itself),', 'allowing'], ['allowing', 'metaprogramming'], ['metaprogramming', 'and'], ['and', 'reflection.'], ['reflection.', 'Before'], ['Before', 'version'], ['version', '.'], ['.', ','], [',', 'Python'], ['Python', 'had'], ['had', 'two'], ['two', 'kinds'], ['kinds', 'of'], ['of', 'classes:'], ['classes:', 'old-style'], ['old-style', 'and'], ['and', 'new-style.'], ['new-style.', 'The'], ['The', 'syntax'], ['syntax', 'of'], ['of', 'both'], ['both', 'styles'], ['styles', 'is'], ['is', 'the'], ['the', 'same,'], ['same,', 'the'], ['the', 'difference'], ['difference', 'being'], ['being', 'whether'], ['whether', 'the'], ['the', 'class'], ['class', 'object'], ['object', 'is'], ['is', 'inherited'], ['inherited', 'from,'], ['from,', 'directly'], ['directly', 'or'], ['or', 'indirectly'], ['indirectly', '(all'], ['(all', 'new-style'], ['new-style', 'classes'], ['classes', 'inherit'], ['inherit', 'from'], ['from', 'object'], ['object', 'and'], ['and', 'are'], ['are', 'instances'], ['instances', 'of'], ['of', 'type).'], ['type).', 'In'], ['In', 'versions'], ['versions', 'of'], ['of', 'Python'], ['Python', 'from'], ['from', 'Python'], ['Python', '.'], ['.', 'onwards,'], ['onwards,', 'both'], ['both', 'kinds'], ['kinds', 'of'], ['of', 'classes'], ['classes', 'can'], ['can', 'be'], ['be', 'used.'], ['used.', 'Old-style'], ['Old-style', 'classes'], ['classes', 'were'], ['were', 'eliminated'], ['eliminated', 'in'], ['in', 'Python'], ['Python', '.'], ['.', '.'], ['.', 'The'], ['The', 'long'], ['long', 'term'], ['term', 'plan'], ['plan', 'is'], ['is', 'to'], ['to', 'support'], ['support', 'gradual'], ['gradual', 'typing'], ['typing', 'and'], ['and', 'from'], ['from', 'Python'], ['Python', '.'], ['.', ','], [',', 'the'], ['the', 'syntax'], ['syntax', 'of'], ['of', 'the'], ['the', 'language'], ['language', 'allows'], ['allows', 'specifying'], ['specifying', 'static'], ['static', 'types'], ['types', 'but'], ['but', 'they'], ['they', 'are'], ['are', 'not'], ['not', 'checked'], ['checked', 'in'], ['in', 'the'], ['the', 'default'], ['default', 'implementation,'], ['implementation,', 'CPython.'], ['CPython.', 'An'], ['An', 'experimental'], ['experimental', 'optional'], ['optional', 'static'], ['static', 'type'], ['type', 'checker'], ['checker', 'named'], ['named', 'mypy'], ['mypy', 'supports'], ['supports', 'compile-time'], ['compile-time', 'type'], ['type', 'checking.'], ['checking.', 'Summary'], ['Summary', 'of'], ['of', 'Python'], ['Python', \"'s\"], [\"'s\", 'built-in'], ['built-in', 'types'], ['types', 'Type'], ['Type', 'mutable'], ['mutable', 'Description'], ['Description', 'Syntax'], ['Syntax', 'example'], ['example', 'bool'], ['bool', 'immutable'], ['immutable', 'Boolean'], ['Boolean', 'value'], ['value', 'True'], ['True', 'False'], ['False', 'bytearray'], ['bytearray', 'mutable'], ['mutable', 'Sequence'], ['Sequence', 'of'], ['of', 'bytes'], ['bytes', \"bytearray(b'Some\"], [\"bytearray(b'Some\", \"ASCII')\"], [\"ASCII')\", 'bytearray(b\"Some'], ['bytearray(b\"Some', 'ASCII\")'], ['ASCII\")', 'bytearray('], ['bytearray(', ','], [',', ','], [',', ','], [',', ')'], [')', 'bytes'], ['bytes', 'immutable'], ['immutable', 'Sequence'], ['Sequence', 'of'], ['of', 'bytes'], ['bytes', \"b'Some\"], [\"b'Some\", \"ASCII'\"], [\"ASCII'\", 'b\"Some'], ['b\"Some', 'ASCII\"'], ['ASCII\"', 'bytes('], ['bytes(', ','], [',', ','], [',', ','], [',', ')'], [')', 'complex'], ['complex', 'immutable'], ['immutable', 'Complex'], ['Complex', 'number'], ['number', 'with'], ['with', 'real'], ['real', 'and'], ['and', 'imaginary'], ['imaginary', 'parts'], ['parts', '.'], ['.', 'j'], ['j', 'dict'], ['dict', 'mutable'], ['mutable', 'Associative'], ['Associative', 'array'], ['array', '(or'], ['(or', 'dictionary)'], ['dictionary)', 'of'], ['of', 'key'], ['key', 'and'], ['and', 'value'], ['value', 'pairs;'], ['pairs;', 'can'], ['can', 'contain'], ['contain', 'mixed'], ['mixed', 'types'], ['types', '(keys'], ['(keys', 'and'], ['and', 'values),'], ['values),', 'keys'], ['keys', 'must'], ['must', 'be'], ['be', 'a'], ['a', 'hashable'], ['hashable', 'type'], ['type', \"{'key\"], [\"{'key\", \"':\"], [\"':\", '.'], ['.', ','], [',', ':'], [':', 'False}'], ['False}', 'ellipsis'], ['ellipsis', 'An'], ['An', 'ellipsis'], ['ellipsis', 'placeholder'], ['placeholder', 'to'], ['to', 'be'], ['be', 'used'], ['used', 'as'], ['as', 'an'], ['an', 'index'], ['index', 'in'], ['in', 'NumPy'], ['NumPy', 'arrays'], ['arrays', '...'], ['...', 'float'], ['float', 'immutable'], ['immutable', 'Floating'], ['Floating', 'point'], ['point', 'number,'], ['number,', 'system-defined'], ['system-defined', 'precision'], ['precision', '.'], ['.', 'frozenset'], ['frozenset', 'immutable'], ['immutable', 'Unordered'], ['Unordered', 'set,'], ['set,', 'contains'], ['contains', 'no'], ['no', 'duplicates;'], ['duplicates;', 'can'], ['can', 'contain'], ['contain', 'mixed'], ['mixed', 'types,'], ['types,', 'if'], ['if', 'hashable'], ['hashable', 'frozenset('], ['frozenset(', '.'], ['.', ','], [',', \"'string',\"], [\"'string',\", 'True'], ['True', ')'], [')', 'int'], ['int', 'immutable'], ['immutable', 'Integer'], ['Integer', 'of'], ['of', 'unlimited'], ['unlimited', 'magnitude'], ['magnitude', 'list'], ['list', 'mutable'], ['mutable', 'List,'], ['List,', 'can'], ['can', 'contain'], ['contain', 'mixed'], ['mixed', 'types'], ['types', '.'], ['.', ','], [',', \"'string',\"], [\"'string',\", 'True'], ['True', 'set'], ['set', 'mutable'], ['mutable', 'Unordered'], ['Unordered', 'set,'], ['set,', 'contains'], ['contains', 'no'], ['no', 'duplicates;'], ['duplicates;', 'can'], ['can', 'contain'], ['contain', 'mixed'], ['mixed', 'types,'], ['types,', 'if'], ['if', 'hashable'], ['hashable', '{'], ['{', '.'], ['.', ','], [',', \"'string',\"], [\"'string',\", 'True}'], ['True}', 'str'], ['str', 'immutable'], ['immutable', 'A'], ['A', 'character'], ['character', 'string:'], ['string:', 'sequence'], ['sequence', 'of'], ['of', 'Unicode'], ['Unicode', 'codepoints'], ['codepoints', \"'Wikipedia'\"], [\"'Wikipedia'\", '\"Wikipedia\"'], ['\"Wikipedia\"', '\"\"\"Spanning'], ['\"\"\"Spanning', 'multiple'], ['multiple', 'lines\"\"\"'], ['lines\"\"\"', 'tuple'], ['tuple', 'immutable'], ['immutable', 'Can'], ['Can', 'contain'], ['contain', 'mixed'], ['mixed', 'types'], ['types', '('], ['(', '.'], ['.', ','], [',', \"'string',\"], [\"'string',\", 'True)But'], ['True)But', 'we'], ['we', 'can'], ['can', 'append'], ['append', 'elements'], ['elements', 'using'], ['using', '__add__'], ['__add__', '.'], ['.', 'a'], ['a', '='], ['=', '('], ['(', '.'], ['.', ','], [',', \"'string'\"], [\"'string'\", ','], [',', \"True).__add__(('hi'\"], [\"True).__add__(('hi'\", ',))'], [',))', 'now'], ['now', 'a'], ['a', 'gives'], ['gives', '('], ['(', '.'], ['.', ','], [',', \"'string',\"], [\"'string',\", 'True'], ['True', \",'hi')\"], [\",'hi')\", 'Mathematics'], ['Mathematics', 'edit'], ['edit', 'Python'], ['Python', 'has'], ['has', 'the'], ['the', 'usual'], ['usual', 'C'], ['C', 'arithmetic'], ['arithmetic', 'operators'], ['operators', '('], ['(', ','], [',', '-,'], ['-,', '*,'], ['*,', '/,'], ['/,', '%).'], ['%).', 'It'], ['It', 'also'], ['also', 'has'], ['has', '**'], ['**', 'for'], ['for', 'exponentiation,'], ['exponentiation,', 'e.g.'], ['e.g.', '**'], ['**', '=='], ['==', 'and'], ['and', '**'], ['**', '.'], ['.', '=='], ['==', '.'], ['.', ','], [',', 'and'], ['and', 'a'], ['a', 'new'], ['new', 'matrix'], ['matrix', 'multiply'], ['multiply', '@'], ['@', 'operator'], ['operator', 'is'], ['is', 'included'], ['included', 'in'], ['in', 'version'], ['version', '.'], ['.', '.'], ['.', 'Additionally,'], ['Additionally,', 'it'], ['it', 'has'], ['has', 'a'], ['a', 'unary'], ['unary', 'operator'], ['operator', '(~),'], ['(~),', 'which'], ['which', 'essentially'], ['essentially', 'inverts'], ['inverts', 'all'], ['all', 'the'], ['the', 'bytes'], ['bytes', 'of'], ['of', 'its'], ['its', 'one'], ['one', 'argument.'], ['argument.', 'For'], ['For', 'integers,'], ['integers,', 'this'], ['this', 'means'], ['means', '~x=-x-'], ['~x=-x-', '.'], ['.', 'Other'], ['Other', 'operators'], ['operators', 'include'], ['include', 'bitwise'], ['bitwise', 'shift'], ['shift', 'operators'], ['operators', 'x'], ['x', '<<'], ['<<', 'y,'], ['y,', 'which'], ['which', 'shifts'], ['shifts', 'x'], ['x', 'to'], ['to', 'the'], ['the', 'left'], ['left', 'y'], ['y', 'places,'], ['places,', 'the'], ['the', 'same'], ['same', 'as'], ['as', 'x*('], ['x*(', '**y)'], ['**y)', ','], [',', 'and'], ['and', 'x'], ['x', '>>'], ['>>', 'y,'], ['y,', 'which'], ['which', 'shifts'], ['shifts', 'x'], ['x', 'to'], ['to', 'the'], ['the', 'right'], ['right', 'y'], ['y', 'places,'], ['places,', 'the'], ['the', 'same'], ['same', 'as'], ['as', 'x/('], ['x/(', '**y)'], ['**y)', '.'], ['.', 'The'], ['The', 'behavior'], ['behavior', 'of'], ['of', 'division'], ['division', 'has'], ['has', 'changed'], ['changed', 'significantly'], ['significantly', 'over'], ['over', 'time:'], ['time:', 'Python'], ['Python', '.'], ['.', 'and'], ['and', 'earlier'], ['earlier', 'use'], ['use', 'the'], ['the', 'C'], ['C', 'division'], ['division', 'behavior.'], ['behavior.', 'The'], ['The', '/'], ['/', 'operator'], ['operator', 'is'], ['is', 'integer'], ['integer', 'division'], ['division', 'if'], ['if', 'both'], ['both', 'operands'], ['operands', 'are'], ['are', 'integers,'], ['integers,', 'and'], ['and', 'floating-point'], ['floating-point', 'division'], ['division', 'otherwise.'], ['otherwise.', 'Integer'], ['Integer', 'division'], ['division', 'rounds'], ['rounds', 'towards'], ['towards', ','], [',', 'e.g.'], ['e.g.', '/'], ['/', '=='], ['==', 'and'], ['and', '-'], ['-', '/'], ['/', '=='], ['==', '-'], ['-', '.'], ['.', 'Python'], ['Python', '.'], ['.', 'changes'], ['changes', 'integer'], ['integer', 'division'], ['division', 'to'], ['to', 'round'], ['round', 'towards'], ['towards', 'negative'], ['negative', 'infinity,'], ['infinity,', 'e.g.'], ['e.g.', '/'], ['/', '=='], ['==', 'and'], ['and', '-'], ['-', '/'], ['/', '=='], ['==', '-'], ['-', '.'], ['.', 'The'], ['The', 'floor'], ['floor', 'division'], ['division', '//'], ['//', 'operator'], ['operator', 'is'], ['is', 'introduced.'], ['introduced.', 'So'], ['So', '//'], ['//', '=='], ['==', ','], [',', '-'], ['-', '//'], ['//', '=='], ['==', '-'], ['-', ','], [',', '.'], ['.', '//'], ['//', '=='], ['==', '.'], ['.', 'and'], ['and', '-'], ['-', '.'], ['.', '//'], ['//', '=='], ['==', '-'], ['-', '.'], ['.', '.'], ['.', 'Adding'], ['Adding', 'from'], ['from', '__future__'], ['__future__', 'import'], ['import', 'division'], ['division', 'causes'], ['causes', 'a'], ['a', 'module'], ['module', 'to'], ['to', 'use'], ['use', 'Python'], ['Python', '.'], ['.', 'rules'], ['rules', 'for'], ['for', 'division'], ['division', '(see'], ['(see', 'next).'], ['next).', 'Python'], ['Python', '.'], ['.', 'changes'], ['changes', '/'], ['/', 'to'], ['to', 'be'], ['be', 'always'], ['always', 'floating-point'], ['floating-point', 'division.'], ['division.', 'In'], ['In', 'Python'], ['Python', 'terms,'], ['terms,', 'the'], ['the', 'pre-'], ['pre-', '.'], ['.', '/'], ['/', 'is'], ['is', 'classic'], ['classic', 'division,'], ['division,', 'the'], ['the', 'version-'], ['version-', '.'], ['.', '/'], ['/', 'is'], ['is', 'real'], ['real', 'division,'], ['division,', 'and'], ['and', '//'], ['//', 'is'], ['is', 'floor'], ['floor', 'division.'], ['division.', 'Rounding'], ['Rounding', 'towards'], ['towards', 'negative'], ['negative', 'infinity,'], ['infinity,', 'though'], ['though', 'different'], ['different', 'from'], ['from', 'most'], ['most', 'languages,'], ['languages,', 'adds'], ['adds', 'consistency.'], ['consistency.', 'For'], ['For', 'instance,'], ['instance,', 'it'], ['it', 'means'], ['means', 'that'], ['that', 'the'], ['the', 'equation'], ['equation', '(a'], ['(a', 'b)//b'], ['b)//b', '=='], ['==', 'a//b'], ['a//b', 'is'], ['is', 'always'], ['always', 'true.'], ['true.', 'It'], ['It', 'also'], ['also', 'means'], ['means', 'that'], ['that', 'the'], ['the', 'equation'], ['equation', 'b*(a//b)'], ['b*(a//b)', 'a%b'], ['a%b', '=='], ['==', 'a'], ['a', 'is'], ['is', 'valid'], ['valid', 'for'], ['for', 'both'], ['both', 'positive'], ['positive', 'and'], ['and', 'negative'], ['negative', 'values'], ['values', 'of'], ['of', 'a.'], ['a.', 'However,'], ['However,', 'maintaining'], ['maintaining', 'the'], ['the', 'validity'], ['validity', 'of'], ['of', 'this'], ['this', 'equation'], ['equation', 'means'], ['means', 'that'], ['that', 'while'], ['while', 'the'], ['the', 'result'], ['result', 'of'], ['of', 'a%b'], ['a%b', 'is,'], ['is,', 'as'], ['as', 'expected,'], ['expected,', 'in'], ['in', 'the'], ['the', 'half-open'], ['half-open', 'interval'], ['interval', ','], [',', 'b),'], ['b),', 'where'], ['where', 'b'], ['b', 'is'], ['is', 'a'], ['a', 'positive'], ['positive', 'integer,'], ['integer,', 'it'], ['it', 'has'], ['has', 'to'], ['to', 'lie'], ['lie', 'in'], ['in', 'the'], ['the', 'interval'], ['interval', '(b,'], ['(b,', 'when'], ['when', 'b'], ['b', 'is'], ['is', 'negative.'], ['negative.', 'Python'], ['Python', 'provides'], ['provides', 'a'], ['a', 'round'], ['round', 'function'], ['function', 'for'], ['for', 'rounding'], ['rounding', 'a'], ['a', 'float'], ['float', 'to'], ['to', 'the'], ['the', 'nearest'], ['nearest', 'integer.'], ['integer.', 'For'], ['For', 'tie-breaking,'], ['tie-breaking,', 'versions'], ['versions', 'before'], ['before', 'use'], ['use', 'round-away-from-zero:'], ['round-away-from-zero:', 'round('], ['round(', '.'], ['.', ')'], [')', 'is'], ['is', '.'], ['.', ','], [',', 'round(-'], ['round(-', '.'], ['.', ')'], [')', 'is'], ['is', '.'], ['.', '.'], ['.', 'Python'], ['Python', 'uses'], ['uses', 'round'], ['round', 'to'], ['to', 'even:'], ['even:', 'round('], ['round(', '.'], ['.', ')'], [')', 'is'], ['is', ','], [',', 'round('], ['round(', '.'], ['.', ')'], [')', 'is'], ['is', '.'], ['.', 'Python'], ['Python', 'allows'], ['allows', 'boolean'], ['boolean', 'expressions'], ['expressions', 'with'], ['with', 'multiple'], ['multiple', 'equality'], ['equality', 'relations'], ['relations', 'in'], ['in', 'a'], ['a', 'manner'], ['manner', 'that'], ['that', 'is'], ['is', 'consistent'], ['consistent', 'with'], ['with', 'general'], ['general', 'use'], ['use', 'in'], ['in', 'mathematics.'], ['mathematics.', 'For'], ['For', 'example,'], ['example,', 'the'], ['the', 'expression'], ['expression', 'a'], ['a', '<'], ['<', 'b'], ['b', '<'], ['<', 'c'], ['c', 'tests'], ['tests', 'whether'], ['whether', 'a'], ['a', 'is'], ['is', 'less'], ['less', 'than'], ['than', 'b'], ['b', 'and'], ['and', 'b'], ['b', 'is'], ['is', 'less'], ['less', 'than'], ['than', 'c.'], ['c.', 'C-derived'], ['C-derived', 'languages'], ['languages', 'interpret'], ['interpret', 'this'], ['this', 'expression'], ['expression', 'differently:'], ['differently:', 'in'], ['in', 'C,'], ['C,', 'the'], ['the', 'expression'], ['expression', 'would'], ['would', 'first'], ['first', 'evaluate'], ['evaluate', 'a'], ['a', '<'], ['<', 'b,'], ['b,', 'resulting'], ['resulting', 'in'], ['in', 'or'], ['or', ','], [',', 'and'], ['and', 'that'], ['that', 'result'], ['result', 'would'], ['would', 'then'], ['then', 'be'], ['be', 'compared'], ['compared', 'with'], ['with', 'c.'], ['c.', 'pageneeded'], ['pageneeded', 'Python'], ['Python', 'has'], ['has', 'extensive'], ['extensive', 'built-in'], ['built-in', 'support'], ['support', 'for'], ['for', 'arbitrary'], ['arbitrary', 'precision'], ['precision', 'arithmetic.'], ['arithmetic.', 'Integers'], ['Integers', 'are'], ['are', 'transparently'], ['transparently', 'switched'], ['switched', 'from'], ['from', 'the'], ['the', 'machine-supported'], ['machine-supported', 'maximum'], ['maximum', 'fixed-precision'], ['fixed-precision', '(usually'], ['(usually', 'or'], ['or', 'bits),'], ['bits),', 'belonging'], ['belonging', 'to'], ['to', 'the'], ['the', 'python'], ['python', 'type'], ['type', 'int,'], ['int,', 'to'], ['to', 'arbitrary'], ['arbitrary', 'precision,'], ['precision,', 'belonging'], ['belonging', 'to'], ['to', 'the'], ['the', 'python'], ['python', 'type'], ['type', 'long,'], ['long,', 'where'], ['where', 'needed.'], ['needed.', 'The'], ['The', 'latter'], ['latter', 'have'], ['have', 'an'], ['an', '\"L\"'], ['\"L\"', 'suffix'], ['suffix', 'in'], ['in', 'their'], ['their', 'textual'], ['textual', 'representation.'], ['representation.', '(In'], ['(In', 'Python'], ['Python', ','], [',', 'the'], ['the', 'distinction'], ['distinction', 'between'], ['between', 'the'], ['the', 'int'], ['int', 'and'], ['and', 'long'], ['long', 'types'], ['types', 'was'], ['was', 'eliminated;'], ['eliminated;', 'this'], ['this', 'behavior'], ['behavior', 'is'], ['is', 'now'], ['now', 'entirely'], ['entirely', 'contained'], ['contained', 'by'], ['by', 'the'], ['the', 'int'], ['int', 'class.)'], ['class.)', 'The'], ['The', 'Decimal'], ['Decimal', 'type/class'], ['type/class', 'in'], ['in', 'module'], ['module', 'decimal'], ['decimal', '(since'], ['(since', 'version'], ['version', '.'], ['.', ')'], [')', 'provides'], ['provides', 'decimal'], ['decimal', 'floating'], ['floating', 'point'], ['point', 'numbers'], ['numbers', 'to'], ['to', 'arbitrary'], ['arbitrary', 'precision'], ['precision', 'and'], ['and', 'several'], ['several', 'rounding'], ['rounding', 'modes.'], ['modes.', 'The'], ['The', 'Fraction'], ['Fraction', 'type'], ['type', 'in'], ['in', 'module'], ['module', 'fractions'], ['fractions', '(since'], ['(since', 'version'], ['version', '.'], ['.', ')'], [')', 'provides'], ['provides', 'arbitrary'], ['arbitrary', 'precision'], ['precision', 'for'], ['for', 'rational'], ['rational', 'numbers.'], ['numbers.', 'Due'], ['Due', 'to'], ['to', \"Python's\"], [\"Python's\", 'extensive'], ['extensive', 'mathematics'], ['mathematics', 'library,'], ['library,', 'and'], ['and', 'the'], ['the', 'third-party'], ['third-party', 'library'], ['library', 'NumPy'], ['NumPy', 'that'], ['that', 'further'], ['further', 'extends'], ['extends', 'the'], ['the', 'native'], ['native', 'capabilities,'], ['capabilities,', 'it'], ['it', 'is'], ['is', 'frequently'], ['frequently', 'used'], ['used', 'as'], ['as', 'a'], ['a', 'scientific'], ['scientific', 'scripting'], ['scripting', 'language'], ['language', 'to'], ['to', 'aid'], ['aid', 'in'], ['in', 'problems'], ['problems', 'such'], ['such', 'as'], ['as', 'numerical'], ['numerical', 'data'], ['data', 'processing'], ['processing', 'and'], ['and', 'manipulation.'], ['manipulation.', 'Libraries'], ['Libraries', 'edit'], ['edit', \"Python's\"], [\"Python's\", 'large'], ['large', 'standard'], ['standard', 'library,'], ['library,', 'commonly'], ['commonly', 'cited'], ['cited', 'as'], ['as', 'one'], ['one', 'of'], ['of', 'its'], ['its', 'greatest'], ['greatest', 'strengths,'], ['strengths,', 'provides'], ['provides', 'tools'], ['tools', 'suited'], ['suited', 'to'], ['to', 'many'], ['many', 'tasks.'], ['tasks.', 'For'], ['For', 'Internet-facing'], ['Internet-facing', 'applications,'], ['applications,', 'many'], ['many', 'standard'], ['standard', 'formats'], ['formats', 'and'], ['and', 'protocols'], ['protocols', 'such'], ['such', 'as'], ['as', 'MIME'], ['MIME', 'and'], ['and', 'HTTP'], ['HTTP', 'are'], ['are', 'supported.'], ['supported.', 'It'], ['It', 'includes'], ['includes', 'modules'], ['modules', 'for'], ['for', 'creating'], ['creating', 'graphical'], ['graphical', 'user'], ['user', 'interfaces,'], ['interfaces,', 'connecting'], ['connecting', 'to'], ['to', 'relational'], ['relational', 'databases,'], ['databases,', 'generating'], ['generating', 'pseudorandom'], ['pseudorandom', 'numbers,'], ['numbers,', 'arithmetic'], ['arithmetic', 'with'], ['with', 'arbitrary'], ['arbitrary', 'precision'], ['precision', 'decimals,'], ['decimals,', 'manipulating'], ['manipulating', 'regular'], ['regular', 'expressions,'], ['expressions,', 'and'], ['and', 'unit'], ['unit', 'testing.'], ['testing.', 'Some'], ['Some', 'parts'], ['parts', 'of'], ['of', 'the'], ['the', 'standard'], ['standard', 'library'], ['library', 'are'], ['are', 'covered'], ['covered', 'by'], ['by', 'specifications'], ['specifications', '(for'], ['(for', 'example,'], ['example,', 'the'], ['the', 'Web'], ['Web', 'Server'], ['Server', 'Gateway'], ['Gateway', 'Interface'], ['Interface', '(WSGI)'], ['(WSGI)', 'implementation'], ['implementation', 'wsgiref'], ['wsgiref', 'follows'], ['follows', 'PEP'], ['PEP', '),'], ['),', 'but'], ['but', 'most'], ['most', 'modules'], ['modules', 'are'], ['are', 'not.'], ['not.', 'They'], ['They', 'are'], ['are', 'specified'], ['specified', 'by'], ['by', 'their'], ['their', 'code,'], ['code,', 'internal'], ['internal', 'documentation,'], ['documentation,', 'and'], ['and', 'test'], ['test', 'suites'], ['suites', '(if'], ['(if', 'supplied).'], ['supplied).', 'However,'], ['However,', 'because'], ['because', 'most'], ['most', 'of'], ['of', 'the'], ['the', 'standard'], ['standard', 'library'], ['library', 'is'], ['is', 'cross-platform'], ['cross-platform', 'Python'], ['Python', 'code,'], ['code,', 'only'], ['only', 'a'], ['a', 'few'], ['few', 'modules'], ['modules', 'need'], ['need', 'altering'], ['altering', 'or'], ['or', 'rewriting'], ['rewriting', 'for'], ['for', 'variant'], ['variant', 'implementations.'], ['implementations.', 'As'], ['As', 'of'], ['of', 'September'], ['September', ','], [',', 'update'], ['update', 'the'], ['the', 'Python'], ['Python', 'Package'], ['Package', 'Index,'], ['Index,', 'the'], ['the', 'official'], ['official', 'repository'], ['repository', 'for'], ['for', 'third-party'], ['third-party', 'Python'], ['Python', 'software,'], ['software,', 'contains'], ['contains', 'over'], ['over', ','], [',', 'packages'], ['packages', 'with'], ['with', 'a'], ['a', 'wide'], ['wide', 'range'], ['range', 'of'], ['of', 'functionality,'], ['functionality,', 'including:'], ['including:', 'Graphical'], ['Graphical', 'user'], ['user', 'interfaces'], ['interfaces', 'Web'], ['Web', 'frameworks'], ['frameworks', 'Multimedia'], ['Multimedia', 'Databases'], ['Databases', 'Networking'], ['Networking', 'Test'], ['Test', 'frameworks'], ['frameworks', 'Automation'], ['Automation', 'Web'], ['Web', 'scraping'], ['scraping', 'Documentation'], ['Documentation', 'System'], ['System', 'administration'], ['administration', 'Scientific'], ['Scientific', 'computing'], ['computing', 'Text'], ['Text', 'processing'], ['processing', 'Image'], ['Image', 'processing'], ['processing', 'Development'], ['Development', 'environments'], ['environments', 'edit'], ['edit', 'See'], ['See', 'also:'], ['also:', 'Comparison'], ['Comparison', 'of'], ['of', 'integrated'], ['integrated', 'development'], ['development', 'environments'], ['environments', 'Python'], ['Python', 'Most'], ['Most', 'Python'], ['Python', 'implementations'], ['implementations', '(including'], ['(including', 'CPython)'], ['CPython)', 'include'], ['include', 'a'], ['a', 'readevalprint'], ['readevalprint', 'loop'], ['loop', '(REPL),'], ['(REPL),', 'permitting'], ['permitting', 'them'], ['them', 'to'], ['to', 'function'], ['function', 'as'], ['as', 'a'], ['a', 'command'], ['command', 'line'], ['line', 'interpreter'], ['interpreter', 'for'], ['for', 'which'], ['which', 'the'], ['the', 'user'], ['user', 'enters'], ['enters', 'statements'], ['statements', 'sequentially'], ['sequentially', 'and'], ['and', 'receives'], ['receives', 'results'], ['results', 'immediately.'], ['immediately.', 'Other'], ['Other', 'shells,'], ['shells,', 'including'], ['including', 'IDLE'], ['IDLE', 'and'], ['and', 'IPython,'], ['IPython,', 'add'], ['add', 'further'], ['further', 'abilities'], ['abilities', 'such'], ['such', 'as'], ['as', 'auto-completion,'], ['auto-completion,', 'session'], ['session', 'state'], ['state', 'retention'], ['retention', 'and'], ['and', 'syntax'], ['syntax', 'highlighting.'], ['highlighting.', 'As'], ['As', 'well'], ['well', 'as'], ['as', 'standard'], ['standard', 'desktop'], ['desktop', 'integrated'], ['integrated', 'development'], ['development', 'environments'], ['environments', '(see'], ['(see', \"Wikipedia's\"], [\"Wikipedia's\", '\"Python'], ['\"Python', 'IDE\"'], ['IDE\"', 'article),'], ['article),', 'there'], ['there', 'are'], ['are', 'Web'], ['Web', 'browser-based'], ['browser-based', 'IDEs;'], ['IDEs;', 'SageMath'], ['SageMath', '(intended'], ['(intended', 'for'], ['for', 'developing'], ['developing', 'science'], ['science', 'and'], ['and', 'math-related'], ['math-related', 'Python'], ['Python', 'programs);'], ['programs);', 'PythonAnywhere,'], ['PythonAnywhere,', 'a'], ['a', 'browser-based'], ['browser-based', 'IDE'], ['IDE', 'and'], ['and', 'hosting'], ['hosting', 'environment;'], ['environment;', 'and'], ['and', 'Canopy'], ['Canopy', 'IDE,'], ['IDE,', 'a'], ['a', 'commercial'], ['commercial', 'Python'], ['Python', 'IDE'], ['IDE', 'emphasizing'], ['emphasizing', 'scientific'], ['scientific', 'computing.'], ['computing.', 'Implementations'], ['Implementations', 'edit'], ['edit', 'See'], ['See', 'also:'], ['also:', 'List'], ['List', 'of'], ['of', 'Python'], ['Python', 'software'], ['software', 'Python'], ['Python', 'implementations'], ['implementations', 'Reference'], ['Reference', 'implementation'], ['implementation', 'edit'], ['edit', 'CPython'], ['CPython', 'is'], ['is', 'the'], ['the', 'reference'], ['reference', 'implementation'], ['implementation', 'of'], ['of', 'Python.'], ['Python.', 'It'], ['It', 'is'], ['is', 'written'], ['written', 'in'], ['in', 'C,'], ['C,', 'meeting'], ['meeting', 'the'], ['the', 'C'], ['C', 'standard'], ['standard', 'with'], ['with', 'several'], ['several', 'select'], ['select', 'C'], ['C', 'features.'], ['features.', 'It'], ['It', 'compiles'], ['compiles', 'Python'], ['Python', 'programs'], ['programs', 'into'], ['into', 'an'], ['an', 'intermediate'], ['intermediate', 'bytecode'], ['bytecode', 'which'], ['which', 'is'], ['is', 'then'], ['then', 'executed'], ['executed', 'by'], ['by', 'its'], ['its', 'virtual'], ['virtual', 'machine.'], ['machine.', 'CPython'], ['CPython', 'is'], ['is', 'distributed'], ['distributed', 'with'], ['with', 'a'], ['a', 'large'], ['large', 'standard'], ['standard', 'library'], ['library', 'written'], ['written', 'in'], ['in', 'a'], ['a', 'mixture'], ['mixture', 'of'], ['of', 'C'], ['C', 'and'], ['and', 'native'], ['native', 'Python.'], ['Python.', 'It'], ['It', 'is'], ['is', 'available'], ['available', 'for'], ['for', 'many'], ['many', 'platforms,'], ['platforms,', 'including'], ['including', 'Windows'], ['Windows', 'and'], ['and', 'most'], ['most', 'modern'], ['modern', 'Unix-like'], ['Unix-like', 'systems.'], ['systems.', 'Platform'], ['Platform', 'portability'], ['portability', 'was'], ['was', 'one'], ['one', 'of'], ['of', 'its'], ['its', 'earliest'], ['earliest', 'priorities.'], ['priorities.', 'Other'], ['Other', 'implementations'], ['implementations', 'edit'], ['edit', 'PyPy'], ['PyPy', 'is'], ['is', 'a'], ['a', 'fast,'], ['fast,', 'compliant'], ['compliant', 'interpreter'], ['interpreter', 'of'], ['of', 'Python'], ['Python', '.'], ['.', 'and'], ['and', '.'], ['.', '.'], ['.', 'Its'], ['Its', 'just-in-time'], ['just-in-time', 'compiler'], ['compiler', 'brings'], ['brings', 'a'], ['a', 'significant'], ['significant', 'speed'], ['speed', 'improvement'], ['improvement', 'over'], ['over', 'CPython.'], ['CPython.', 'A'], ['A', 'version'], ['version', 'is'], ['is', 'under'], ['under', 'development'], ['development', 'that'], ['that', 'will'], ['will', 'use'], ['use', 'software'], ['software', 'transactional'], ['transactional', 'memory'], ['memory', 'to'], ['to', 'take'], ['take', 'advantage'], ['advantage', 'of'], ['of', 'multi-core'], ['multi-core', 'processors.'], ['processors.', 'Stackless'], ['Stackless', 'Python'], ['Python', 'is'], ['is', 'a'], ['a', 'significant'], ['significant', 'fork'], ['fork', 'of'], ['of', 'CPython'], ['CPython', 'that'], ['that', 'implements'], ['implements', 'microthreads;'], ['microthreads;', 'it'], ['it', 'does'], ['does', 'not'], ['not', 'use'], ['use', 'the'], ['the', 'C'], ['C', 'memory'], ['memory', 'stack,'], ['stack,', 'thus'], ['thus', 'allowing'], ['allowing', 'massively'], ['massively', 'concurrent'], ['concurrent', 'programs.'], ['programs.', 'PyPy'], ['PyPy', 'also'], ['also', 'has'], ['has', 'a'], ['a', 'stackless'], ['stackless', 'version.'], ['version.', 'MicroPython'], ['MicroPython', 'is'], ['is', 'a'], ['a', 'Python'], ['Python', 'variant'], ['variant', 'optimised'], ['optimised', 'for'], ['for', 'microcontrollers.'], ['microcontrollers.', 'Unsupported'], ['Unsupported', 'implementations'], ['implementations', 'edit'], ['edit', 'Other'], ['Other', 'just-in-time'], ['just-in-time', 'Python'], ['Python', 'compilers'], ['compilers', 'have'], ['have', 'been'], ['been', 'developed,'], ['developed,', 'but'], ['but', 'are'], ['are', 'now'], ['now', 'unsupported:'], ['unsupported:', 'Google'], ['Google', 'began'], ['began', 'a'], ['a', 'project'], ['project', 'named'], ['named', 'Unladen'], ['Unladen', 'Swallow'], ['Swallow', 'in'], ['in', 'with'], ['with', 'the'], ['the', 'aim'], ['aim', 'of'], ['of', 'speeding'], ['speeding', 'up'], ['up', 'the'], ['the', 'Python'], ['Python', 'interpreter'], ['interpreter', 'fivefold'], ['fivefold', 'by'], ['by', 'using'], ['using', 'the'], ['the', 'LLVM,'], ['LLVM,', 'and'], ['and', 'of'], ['of', 'improving'], ['improving', 'its'], ['its', 'multithreading'], ['multithreading', 'ability'], ['ability', 'to'], ['to', 'scale'], ['scale', 'to'], ['to', 'thousands'], ['thousands', 'of'], ['of', 'cores.'], ['cores.', 'Psyco'], ['Psyco', 'is'], ['is', 'a'], ['a', 'just-in-time'], ['just-in-time', 'specialising'], ['specialising', 'compiler'], ['compiler', 'that'], ['that', 'integrates'], ['integrates', 'with'], ['with', 'CPython'], ['CPython', 'and'], ['and', 'transforms'], ['transforms', 'bytecode'], ['bytecode', 'to'], ['to', 'machine'], ['machine', 'code'], ['code', 'at'], ['at', 'runtime.'], ['runtime.', 'The'], ['The', 'emitted'], ['emitted', 'code'], ['code', 'is'], ['is', 'specialised'], ['specialised', 'for'], ['for', 'certain'], ['certain', 'data'], ['data', 'types'], ['types', 'and'], ['and', 'is'], ['is', 'faster'], ['faster', 'than'], ['than', 'standard'], ['standard', 'Python'], ['Python', 'code.'], ['code.', 'In'], ['In', ','], [',', 'Nokia'], ['Nokia', 'released'], ['released', 'a'], ['a', 'Python'], ['Python', 'interpreter'], ['interpreter', 'for'], ['for', 'the'], ['the', 'Series'], ['Series', 'mobile'], ['mobile', 'phones'], ['phones', 'named'], ['named', 'PyS'], ['PyS', '.'], ['.', 'It'], ['It', 'includes'], ['includes', 'many'], ['many', 'of'], ['of', 'the'], ['the', 'modules'], ['modules', 'from'], ['from', 'the'], ['the', 'CPython'], ['CPython', 'implementations'], ['implementations', 'and'], ['and', 'some'], ['some', 'additional'], ['additional', 'modules'], ['modules', 'to'], ['to', 'integrate'], ['integrate', 'with'], ['with', 'the'], ['the', 'Symbian'], ['Symbian', 'operating'], ['operating', 'system.'], ['system.', 'The'], ['The', 'project'], ['project', 'has'], ['has', 'been'], ['been', 'kept'], ['kept', 'up-to-date'], ['up-to-date', 'to'], ['to', 'run'], ['run', 'on'], ['on', 'all'], ['all', 'variants'], ['variants', 'of'], ['of', 'the'], ['the', 'S'], ['S', 'platform,'], ['platform,', 'and'], ['and', 'several'], ['several', 'third-party'], ['third-party', 'modules'], ['modules', 'are'], ['are', 'available.'], ['available.', 'The'], ['The', 'Nokia'], ['Nokia', 'N'], ['N', 'also'], ['also', 'supports'], ['supports', 'Python'], ['Python', 'with'], ['with', 'GTK'], ['GTK', 'widget'], ['widget', 'libraries,'], ['libraries,', 'enabling'], ['enabling', 'programs'], ['programs', 'to'], ['to', 'be'], ['be', 'written'], ['written', 'and'], ['and', 'run'], ['run', 'on'], ['on', 'the'], ['the', 'target'], ['target', 'device.'], ['device.', 'Cross-compilers'], ['Cross-compilers', 'to'], ['to', 'other'], ['other', 'languages'], ['languages', 'edit'], ['edit', 'There'], ['There', 'are'], ['are', 'several'], ['several', 'compilers'], ['compilers', 'to'], ['to', 'high-level'], ['high-level', 'object'], ['object', 'languages,'], ['languages,', 'with'], ['with', 'either'], ['either', 'unrestricted'], ['unrestricted', 'Python,'], ['Python,', 'a'], ['a', 'restricted'], ['restricted', 'subset'], ['subset', 'of'], ['of', 'Python,'], ['Python,', 'or'], ['or', 'a'], ['a', 'language'], ['language', 'similar'], ['similar', 'to'], ['to', 'Python'], ['Python', 'as'], ['as', 'the'], ['the', 'source'], ['source', 'language:'], ['language:', 'Jython'], ['Jython', 'compiles'], ['compiles', 'into'], ['into', 'Java'], ['Java', 'byte'], ['byte', 'code,'], ['code,', 'which'], ['which', 'can'], ['can', 'then'], ['then', 'be'], ['be', 'executed'], ['executed', 'by'], ['by', 'every'], ['every', 'Java'], ['Java', 'virtual'], ['virtual', 'machine'], ['machine', 'implementation.'], ['implementation.', 'This'], ['This', 'also'], ['also', 'enables'], ['enables', 'the'], ['the', 'use'], ['use', 'of'], ['of', 'Java'], ['Java', 'class'], ['class', 'library'], ['library', 'functions'], ['functions', 'from'], ['from', 'the'], ['the', 'Python'], ['Python', 'program.'], ['program.', 'IronPython'], ['IronPython', 'follows'], ['follows', 'a'], ['a', 'similar'], ['similar', 'approach'], ['approach', 'in'], ['in', 'order'], ['order', 'to'], ['to', 'run'], ['run', 'Python'], ['Python', 'programs'], ['programs', 'on'], ['on', 'the'], ['the', '.NET'], ['.NET', 'Common'], ['Common', 'Language'], ['Language', 'Runtime.'], ['Runtime.', 'The'], ['The', 'RPython'], ['RPython', 'language'], ['language', 'can'], ['can', 'be'], ['be', 'compiled'], ['compiled', 'to'], ['to', 'C,'], ['C,', 'Java'], ['Java', 'bytecode,'], ['bytecode,', 'or'], ['or', 'Common'], ['Common', 'Intermediate'], ['Intermediate', 'Language,'], ['Language,', 'and'], ['and', 'is'], ['is', 'used'], ['used', 'to'], ['to', 'build'], ['build', 'the'], ['the', 'PyPy'], ['PyPy', 'interpreter'], ['interpreter', 'of'], ['of', 'Python.'], ['Python.', 'Pyjs'], ['Pyjs', 'compiles'], ['compiles', 'Python'], ['Python', 'to'], ['to', 'JavaScript.'], ['JavaScript.', 'Cython'], ['Cython', 'compiles'], ['compiles', 'Python'], ['Python', 'to'], ['to', 'C'], ['C', 'and'], ['and', 'C'], ['C', '.'], ['.', 'Pythran'], ['Pythran', 'compiles'], ['compiles', 'Python'], ['Python', 'to'], ['to', 'C'], ['C', '.'], ['.', 'Somewhat'], ['Somewhat', 'dated'], ['dated', 'Pyrex'], ['Pyrex', '(latest'], ['(latest', 'release'], ['release', 'in'], ['in', ')'], [')', 'and'], ['and', 'Shed'], ['Shed', 'Skin'], ['Skin', '(latest'], ['(latest', 'release'], ['release', 'in'], ['in', ')'], [')', 'compile'], ['compile', 'to'], ['to', 'C'], ['C', 'and'], ['and', 'C'], ['C', 'respectively.'], ['respectively.', \"Google's\"], [\"Google's\", 'Grumpy'], ['Grumpy', 'compiles'], ['compiles', 'Python'], ['Python', 'to'], ['to', 'Go.'], ['Go.', 'Nuitka'], ['Nuitka', 'compiles'], ['compiles', 'Python'], ['Python', 'into'], ['into', 'C'], ['C', 'Performance'], ['Performance', 'edit'], ['edit', 'A'], ['A', 'performance'], ['performance', 'comparison'], ['comparison', 'of'], ['of', 'various'], ['various', 'Python'], ['Python', 'implementations'], ['implementations', 'on'], ['on', 'a'], ['a', 'non-numerical'], ['non-numerical', '(combinatorial)'], ['(combinatorial)', 'workload'], ['workload', 'was'], ['was', 'presented'], ['presented', 'at'], ['at', 'EuroSciPy'], ['EuroSciPy', \"'\"], [\"'\", '.'], ['.', 'Development'], ['Development', 'edit'], ['edit', \"Python's\"], [\"Python's\", 'development'], ['development', 'is'], ['is', 'conducted'], ['conducted', 'largely'], ['largely', 'through'], ['through', 'the'], ['the', 'Python'], ['Python', 'Enhancement'], ['Enhancement', 'Proposal'], ['Proposal', '(PEP)'], ['(PEP)', 'process,'], ['process,', 'the'], ['the', 'primary'], ['primary', 'mechanism'], ['mechanism', 'for'], ['for', 'proposing'], ['proposing', 'major'], ['major', 'new'], ['new', 'features,'], ['features,', 'collecting'], ['collecting', 'community'], ['community', 'input'], ['input', 'on'], ['on', 'issues'], ['issues', 'and'], ['and', 'documenting'], ['documenting', 'Python'], ['Python', 'design'], ['design', 'decisions.'], ['decisions.', 'Outstanding'], ['Outstanding', 'PEPs'], ['PEPs', 'are'], ['are', 'reviewed'], ['reviewed', 'and'], ['and', 'commented'], ['commented', 'on'], ['on', 'by'], ['by', 'the'], ['the', 'Python'], ['Python', 'community'], ['community', 'and'], ['and', 'Guido'], ['Guido', 'Van'], ['Van', 'Rossum,'], ['Rossum,', \"Python's\"], [\"Python's\", 'Benevolent'], ['Benevolent', 'Dictator'], ['Dictator', 'For'], ['For', 'Life.'], ['Life.', 'Enhancement'], ['Enhancement', 'of'], ['of', 'the'], ['the', 'language'], ['language', 'corresponds'], ['corresponds', 'with'], ['with', 'development'], ['development', 'of'], ['of', 'the'], ['the', 'CPython'], ['CPython', 'reference'], ['reference', 'implementation.'], ['implementation.', 'The'], ['The', 'mailing'], ['mailing', 'list'], ['list', 'python-dev'], ['python-dev', 'is'], ['is', 'the'], ['the', 'primary'], ['primary', 'forum'], ['forum', 'for'], ['for', 'the'], ['the', \"language's\"], [\"language's\", 'development.'], ['development.', 'Specific'], ['Specific', 'issues'], ['issues', 'are'], ['are', 'discussed'], ['discussed', 'in'], ['in', 'the'], ['the', 'Roundup'], ['Roundup', 'bug'], ['bug', 'tracker'], ['tracker', 'maintained'], ['maintained', 'at'], ['at', 'python.org.'], ['python.org.', 'Development'], ['Development', 'originally'], ['originally', 'took'], ['took', 'place'], ['place', 'on'], ['on', 'a'], ['a', 'self-hosted'], ['self-hosted', 'source-code'], ['source-code', 'repository'], ['repository', 'running'], ['running', 'Mercurial,'], ['Mercurial,', 'until'], ['until', 'Python'], ['Python', 'moved'], ['moved', 'to'], ['to', 'GitHub'], ['GitHub', 'in'], ['in', 'January'], ['January', '.'], ['.', \"CPython's\"], [\"CPython's\", 'public'], ['public', 'releases'], ['releases', 'come'], ['come', 'in'], ['in', 'three'], ['three', 'types,'], ['types,', 'distinguished'], ['distinguished', 'by'], ['by', 'which'], ['which', 'part'], ['part', 'of'], ['of', 'the'], ['the', 'version'], ['version', 'number'], ['number', 'is'], ['is', 'incremented:'], ['incremented:', 'Backward-incompatible'], ['Backward-incompatible', 'versions,'], ['versions,', 'where'], ['where', 'code'], ['code', 'is'], ['is', 'expected'], ['expected', 'to'], ['to', 'break'], ['break', 'and'], ['and', 'need'], ['need', 'to'], ['to', 'be'], ['be', 'manually'], ['manually', 'ported.'], ['ported.', 'The'], ['The', 'first'], ['first', 'part'], ['part', 'of'], ['of', 'the'], ['the', 'version'], ['version', 'number'], ['number', 'is'], ['is', 'incremented.'], ['incremented.', 'These'], ['These', 'releases'], ['releases', 'happen'], ['happen', 'infrequentlyfor'], ['infrequentlyfor', 'example,'], ['example,', 'version'], ['version', '.'], ['.', 'was'], ['was', 'released'], ['released', 'years'], ['years', 'after'], ['after', '.'], ['.', '.'], ['.', 'Major'], ['Major', 'or'], ['or', '\"feature\"'], ['\"feature\"', 'releases,'], ['releases,', 'about'], ['about', 'every'], ['every', 'months,'], ['months,', 'are'], ['are', 'largely'], ['largely', 'compatible'], ['compatible', 'but'], ['but', 'introduce'], ['introduce', 'new'], ['new', 'features.'], ['features.', 'The'], ['The', 'second'], ['second', 'part'], ['part', 'of'], ['of', 'the'], ['the', 'version'], ['version', 'number'], ['number', 'is'], ['is', 'incremented.'], ['incremented.', 'Each'], ['Each', 'major'], ['major', 'version'], ['version', 'is'], ['is', 'supported'], ['supported', 'by'], ['by', 'bugfixes'], ['bugfixes', 'for'], ['for', 'several'], ['several', 'years'], ['years', 'after'], ['after', 'its'], ['its', 'release.'], ['release.', 'Bugfix'], ['Bugfix', 'releases,'], ['releases,', 'which'], ['which', 'introduce'], ['introduce', 'no'], ['no', 'new'], ['new', 'features,'], ['features,', 'occur'], ['occur', 'about'], ['about', 'every'], ['every', 'months'], ['months', 'and'], ['and', 'are'], ['are', 'made'], ['made', 'when'], ['when', 'a'], ['a', 'sufficient'], ['sufficient', 'number'], ['number', 'of'], ['of', 'bugs'], ['bugs', 'have'], ['have', 'been'], ['been', 'fixed'], ['fixed', 'upstream'], ['upstream', 'since'], ['since', 'the'], ['the', 'last'], ['last', 'release.'], ['release.', 'Security'], ['Security', 'vulnerabilities'], ['vulnerabilities', 'are'], ['are', 'also'], ['also', 'patched'], ['patched', 'in'], ['in', 'these'], ['these', 'releases.'], ['releases.', 'The'], ['The', 'third'], ['third', 'and'], ['and', 'final'], ['final', 'part'], ['part', 'of'], ['of', 'the'], ['the', 'version'], ['version', 'number'], ['number', 'is'], ['is', 'incremented.'], ['incremented.', 'Many'], ['Many', 'alpha,'], ['alpha,', 'beta,'], ['beta,', 'and'], ['and', 'release-candidates'], ['release-candidates', 'are'], ['are', 'also'], ['also', 'released'], ['released', 'as'], ['as', 'previews'], ['previews', 'and'], ['and', 'for'], ['for', 'testing'], ['testing', 'before'], ['before', 'final'], ['final', 'releases.'], ['releases.', 'Although'], ['Although', 'there'], ['there', 'is'], ['is', 'a'], ['a', 'rough'], ['rough', 'schedule'], ['schedule', 'for'], ['for', 'each'], ['each', 'release,'], ['release,', 'they'], ['they', 'are'], ['are', 'often'], ['often', 'delayed'], ['delayed', 'if'], ['if', 'the'], ['the', 'code'], ['code', 'is'], ['is', 'not'], ['not', 'ready.'], ['ready.', \"Python's\"], [\"Python's\", 'development'], ['development', 'team'], ['team', 'monitors'], ['monitors', 'the'], ['the', 'state'], ['state', 'of'], ['of', 'the'], ['the', 'code'], ['code', 'by'], ['by', 'running'], ['running', 'the'], ['the', 'large'], ['large', 'unit'], ['unit', 'test'], ['test', 'suite'], ['suite', 'during'], ['during', 'development,'], ['development,', 'and'], ['and', 'using'], ['using', 'the'], ['the', 'BuildBot'], ['BuildBot', 'continuous'], ['continuous', 'integration'], ['integration', 'system.'], ['system.', 'The'], ['The', 'community'], ['community', 'of'], ['of', 'Python'], ['Python', 'developers'], ['developers', 'has'], ['has', 'also'], ['also', 'contributed'], ['contributed', 'over'], ['over', ','], [',', 'software'], ['software', 'modules'], ['modules', '(as'], ['(as', 'of'], ['of', 'August'], ['August', 'update'], ['update', ')'], [')', 'to'], ['to', 'the'], ['the', 'Python'], ['Python', 'Package'], ['Package', 'Index'], ['Index', '(PyPI),'], ['(PyPI),', 'the'], ['the', 'official'], ['official', 'repository'], ['repository', 'of'], ['of', 'third-party'], ['third-party', 'Python'], ['Python', 'libraries.'], ['libraries.', 'The'], ['The', 'major'], ['major', 'academic'], ['academic', 'conference'], ['conference', 'on'], ['on', 'Python'], ['Python', 'is'], ['is', 'PyCon.'], ['PyCon.', 'There'], ['There', 'are'], ['are', 'also'], ['also', 'special'], ['special', 'Python'], ['Python', 'mentoring'], ['mentoring', 'programmes,'], ['programmes,', 'such'], ['such', 'as'], ['as', 'Pyladies.'], ['Pyladies.', 'Naming'], ['Naming', 'edit'], ['edit', \"Python's\"], [\"Python's\", 'name'], ['name', 'is'], ['is', 'derived'], ['derived', 'from'], ['from', 'the'], ['the', 'British'], ['British', 'comedy'], ['comedy', 'group'], ['group', 'Monty'], ['Monty', 'Python,'], ['Python,', 'whom'], ['whom', 'Python'], ['Python', 'creator'], ['creator', 'Guido'], ['Guido', 'van'], ['van', 'Rossum'], ['Rossum', 'enjoyed'], ['enjoyed', 'while'], ['while', 'developing'], ['developing', 'the'], ['the', 'language.'], ['language.', 'Monty'], ['Monty', 'Python'], ['Python', 'references'], ['references', 'appear'], ['appear', 'frequently'], ['frequently', 'in'], ['in', 'Python'], ['Python', 'code'], ['code', 'and'], ['and', 'culture;'], ['culture;', 'for'], ['for', 'example,'], ['example,', 'the'], ['the', 'metasyntactic'], ['metasyntactic', 'variables'], ['variables', 'often'], ['often', 'used'], ['used', 'in'], ['in', 'Python'], ['Python', 'literature'], ['literature', 'are'], ['are', 'spam'], ['spam', 'and'], ['and', 'eggs'], ['eggs', 'instead'], ['instead', 'of'], ['of', 'the'], ['the', 'traditional'], ['traditional', 'foo'], ['foo', 'and'], ['and', 'bar'], ['bar', '.'], ['.', 'The'], ['The', 'official'], ['official', 'Python'], ['Python', 'documentation'], ['documentation', 'also'], ['also', 'contains'], ['contains', 'various'], ['various', 'references'], ['references', 'to'], ['to', 'Monty'], ['Monty', 'Python'], ['Python', 'routines.'], ['routines.', 'The'], ['The', 'prefix'], ['prefix', 'Py-'], ['Py-', 'is'], ['is', 'used'], ['used', 'to'], ['to', 'show'], ['show', 'that'], ['that', 'something'], ['something', 'is'], ['is', 'related'], ['related', 'to'], ['to', 'Python.'], ['Python.', 'Examples'], ['Examples', 'of'], ['of', 'the'], ['the', 'use'], ['use', 'of'], ['of', 'this'], ['this', 'prefix'], ['prefix', 'in'], ['in', 'names'], ['names', 'of'], ['of', 'Python'], ['Python', 'applications'], ['applications', 'or'], ['or', 'libraries'], ['libraries', 'include'], ['include', 'Pygame,'], ['Pygame,', 'a'], ['a', 'binding'], ['binding', 'of'], ['of', 'SDL'], ['SDL', 'to'], ['to', 'Python'], ['Python', '(commonly'], ['(commonly', 'used'], ['used', 'to'], ['to', 'create'], ['create', 'games);'], ['games);', 'Python'], ['Python', 'for'], ['for', 'S'], ['S', ','], [',', 'an'], ['an', 'implementation'], ['implementation', 'for'], ['for', 'the'], ['the', 'Symbian'], ['Symbian', 'S'], ['S', 'operating'], ['operating', 'system;'], ['system;', 'PyQt'], ['PyQt', 'and'], ['and', 'PyGTK,'], ['PyGTK,', 'which'], ['which', 'bind'], ['bind', 'Qt'], ['Qt', 'and'], ['and', 'GTK'], ['GTK', 'to'], ['to', 'Python'], ['Python', 'respectively;'], ['respectively;', 'and'], ['and', 'PyPy,'], ['PyPy,', 'a'], ['a', 'Python'], ['Python', 'implementation'], ['implementation', 'originally'], ['originally', 'written'], ['written', 'in'], ['in', 'Python.'], ['Python.', 'Uses'], ['Uses', 'edit'], ['edit', 'Main'], ['Main', 'article:'], ['article:', 'List'], ['List', 'of'], ['of', 'Python'], ['Python', 'software'], ['software', 'Since'], ['Since', ','], [',', 'Python'], ['Python', 'has'], ['has', 'consistently'], ['consistently', 'ranked'], ['ranked', 'in'], ['in', 'the'], ['the', 'top'], ['top', 'ten'], ['ten', 'most'], ['most', 'popular'], ['popular', 'programming'], ['programming', 'languages'], ['languages', 'in'], ['in', 'the'], ['the', 'TIOBE'], ['TIOBE', 'Programming'], ['Programming', 'Community'], ['Community', 'Index.'], ['Index.', 'As'], ['As', 'of'], ['of', 'March'], ['March', 'update'], ['update', ','], [',', 'it'], ['it', 'is'], ['is', 'the'], ['the', 'fifth'], ['fifth', 'most'], ['most', 'popular'], ['popular', 'language.'], ['language.', 'It'], ['It', 'was'], ['was', 'selected'], ['selected', 'Programming'], ['Programming', 'Language'], ['Language', 'of'], ['of', 'the'], ['the', 'Year'], ['Year', 'in'], ['in', 'and'], ['and', '.'], ['.', 'It'], ['It', 'is'], ['is', 'the'], ['the', 'third'], ['third', 'most'], ['most', 'popular'], ['popular', 'language'], ['language', 'whose'], ['whose', 'grammatical'], ['grammatical', 'syntax'], ['syntax', 'is'], ['is', 'not'], ['not', 'predominantly'], ['predominantly', 'based'], ['based', 'on'], ['on', 'C.'], ['C.', 'An'], ['An', 'empirical'], ['empirical', 'study'], ['study', 'found'], ['found', 'that'], ['that', 'scripting'], ['scripting', 'languages,'], ['languages,', 'such'], ['such', 'as'], ['as', 'Python,'], ['Python,', 'are'], ['are', 'more'], ['more', 'productive'], ['productive', 'than'], ['than', 'conventional'], ['conventional', 'languages,'], ['languages,', 'such'], ['such', 'as'], ['as', 'C'], ['C', 'and'], ['and', 'Java,'], ['Java,', 'for'], ['for', 'programming'], ['programming', 'problems'], ['problems', 'involving'], ['involving', 'string'], ['string', 'manipulation'], ['manipulation', 'and'], ['and', 'search'], ['search', 'in'], ['in', 'a'], ['a', 'dictionary,'], ['dictionary,', 'and'], ['and', 'determined'], ['determined', 'that'], ['that', 'memory'], ['memory', 'consumption'], ['consumption', 'was'], ['was', 'often'], ['often', '\"better'], ['\"better', 'than'], ['than', 'Java'], ['Java', 'and'], ['and', 'not'], ['not', 'much'], ['much', 'worse'], ['worse', 'than'], ['than', 'C'], ['C', 'or'], ['or', 'C'], ['C', '\".'], ['\".', 'Large'], ['Large', 'organizations'], ['organizations', 'that'], ['that', 'use'], ['use', 'Python'], ['Python', 'include'], ['include', 'Wikipedia,'], ['Wikipedia,', 'Google,'], ['Google,', 'Yahoo!,'], ['Yahoo!,', 'CERN,'], ['CERN,', 'NASA,'], ['NASA,', 'and'], ['and', 'some'], ['some', 'smaller'], ['smaller', 'entities'], ['entities', 'like'], ['like', 'ILM'], ['ILM', 'and'], ['and', 'ITA.'], ['ITA.', 'The'], ['The', 'social'], ['social', 'news'], ['news', 'networking'], ['networking', 'site'], ['site', 'Reddit'], ['Reddit', 'is'], ['is', 'written'], ['written', 'entirely'], ['entirely', 'in'], ['in', 'Python.'], ['Python.', 'Python'], ['Python', 'can'], ['can', 'serve'], ['serve', 'as'], ['as', 'a'], ['a', 'scripting'], ['scripting', 'language'], ['language', 'for'], ['for', 'web'], ['web', 'applications,'], ['applications,', 'e.g.,'], ['e.g.,', 'via'], ['via', 'mod_wsgi'], ['mod_wsgi', 'for'], ['for', 'the'], ['the', 'Apache'], ['Apache', 'web'], ['web', 'server.'], ['server.', 'With'], ['With', 'Web'], ['Web', 'Server'], ['Server', 'Gateway'], ['Gateway', 'Interface,'], ['Interface,', 'a'], ['a', 'standard'], ['standard', 'API'], ['API', 'has'], ['has', 'evolved'], ['evolved', 'to'], ['to', 'facilitate'], ['facilitate', 'these'], ['these', 'applications.'], ['applications.', 'Web'], ['Web', 'frameworks'], ['frameworks', 'like'], ['like', 'Django,'], ['Django,', 'Pylons,'], ['Pylons,', 'Pyramid,'], ['Pyramid,', 'TurboGears,'], ['TurboGears,', 'web'], ['web', 'py,'], ['py,', 'Tornado,'], ['Tornado,', 'Flask,'], ['Flask,', 'Bottle'], ['Bottle', 'and'], ['and', 'Zope'], ['Zope', 'support'], ['support', 'developers'], ['developers', 'in'], ['in', 'the'], ['the', 'design'], ['design', 'and'], ['and', 'maintenance'], ['maintenance', 'of'], ['of', 'complex'], ['complex', 'applications.'], ['applications.', 'Pyjs'], ['Pyjs', 'and'], ['and', 'IronPython'], ['IronPython', 'can'], ['can', 'be'], ['be', 'used'], ['used', 'to'], ['to', 'develop'], ['develop', 'the'], ['the', 'client-side'], ['client-side', 'of'], ['of', 'Ajax-based'], ['Ajax-based', 'applications.'], ['applications.', 'SQLAlchemy'], ['SQLAlchemy', 'can'], ['can', 'be'], ['be', 'used'], ['used', 'as'], ['as', 'data'], ['data', 'mapper'], ['mapper', 'to'], ['to', 'a'], ['a', 'relational'], ['relational', 'database.'], ['database.', 'Twisted'], ['Twisted', 'is'], ['is', 'a'], ['a', 'framework'], ['framework', 'to'], ['to', 'program'], ['program', 'communications'], ['communications', 'between'], ['between', 'computers,'], ['computers,', 'and'], ['and', 'is'], ['is', 'used'], ['used', '(for'], ['(for', 'example)'], ['example)', 'by'], ['by', 'Dropbox.'], ['Dropbox.', 'Libraries'], ['Libraries', 'such'], ['such', 'as'], ['as', 'NumPy,'], ['NumPy,', 'SciPy'], ['SciPy', 'and'], ['and', 'Matplotlib'], ['Matplotlib', 'allow'], ['allow', 'the'], ['the', 'effective'], ['effective', 'use'], ['use', 'of'], ['of', 'Python'], ['Python', 'in'], ['in', 'scientific'], ['scientific', 'computing,'], ['computing,', 'with'], ['with', 'specialized'], ['specialized', 'libraries'], ['libraries', 'such'], ['such', 'as'], ['as', 'Biopython'], ['Biopython', 'and'], ['and', 'Astropy'], ['Astropy', 'providing'], ['providing', 'domain-specific'], ['domain-specific', 'functionality.'], ['functionality.', 'SageMath'], ['SageMath', 'is'], ['is', 'a'], ['a', 'mathematical'], ['mathematical', 'software'], ['software', 'with'], ['with', 'a'], ['a', '\"notebook\"'], ['\"notebook\"', 'programmable'], ['programmable', 'in'], ['in', 'Python:'], ['Python:', 'its'], ['its', 'library'], ['library', 'covers'], ['covers', 'many'], ['many', 'aspects'], ['aspects', 'of'], ['of', 'mathematics,'], ['mathematics,', 'including'], ['including', 'algebra,'], ['algebra,', 'combinatorics,'], ['combinatorics,', 'numerical'], ['numerical', 'mathematics,'], ['mathematics,', 'number'], ['number', 'theory,'], ['theory,', 'and'], ['and', 'calculus.'], ['calculus.', 'The'], ['The', 'Python'], ['Python', 'language'], ['language', 're-implemented'], ['re-implemented', 'in'], ['in', 'Java'], ['Java', 'platform'], ['platform', 'is'], ['is', 'used'], ['used', 'for'], ['for', 'numeric'], ['numeric', 'and'], ['and', 'statistical'], ['statistical', 'calculations'], ['calculations', 'with'], ['with', 'D/'], ['D/', 'D'], ['D', 'visualization'], ['visualization', 'by'], ['by', 'the'], ['the', 'DMelt'], ['DMelt', 'project.'], ['project.', 'Python'], ['Python', 'has'], ['has', 'been'], ['been', 'successfully'], ['successfully', 'embedded'], ['embedded', 'in'], ['in', 'many'], ['many', 'software'], ['software', 'products'], ['products', 'as'], ['as', 'a'], ['a', 'scripting'], ['scripting', 'language,'], ['language,', 'including'], ['including', 'in'], ['in', 'finite'], ['finite', 'element'], ['element', 'method'], ['method', 'software'], ['software', 'such'], ['such', 'as'], ['as', 'Abaqus,'], ['Abaqus,', 'D'], ['D', 'parametric'], ['parametric', 'modeler'], ['modeler', 'like'], ['like', 'FreeCAD,'], ['FreeCAD,', 'D'], ['D', 'animation'], ['animation', 'packages'], ['packages', 'such'], ['such', 'as'], ['as', 'ds'], ['ds', 'Max,'], ['Max,', 'Blender,'], ['Blender,', 'Cinema'], ['Cinema', 'D,'], ['D,', 'Lightwave,'], ['Lightwave,', 'Houdini,'], ['Houdini,', 'Maya,'], ['Maya,', 'modo,'], ['modo,', 'MotionBuilder,'], ['MotionBuilder,', 'Softimage,'], ['Softimage,', 'the'], ['the', 'visual'], ['visual', 'effects'], ['effects', 'compositor'], ['compositor', 'Nuke,'], ['Nuke,', 'D'], ['D', 'imaging'], ['imaging', 'programs'], ['programs', 'like'], ['like', 'GIMP,'], ['GIMP,', 'Inkscape,'], ['Inkscape,', 'Scribus'], ['Scribus', 'and'], ['and', 'Paint'], ['Paint', 'Shop'], ['Shop', 'Pro,'], ['Pro,', 'and'], ['and', 'musical'], ['musical', 'notation'], ['notation', 'programs'], ['programs', 'like'], ['like', 'scorewriter'], ['scorewriter', 'and'], ['and', 'capella.'], ['capella.', 'GNU'], ['GNU', 'Debugger'], ['Debugger', 'uses'], ['uses', 'Python'], ['Python', 'as'], ['as', 'a'], ['a', 'pretty'], ['pretty', 'printer'], ['printer', 'to'], ['to', 'show'], ['show', 'complex'], ['complex', 'structures'], ['structures', 'such'], ['such', 'as'], ['as', 'C'], ['C', 'containers.'], ['containers.', 'Esri'], ['Esri', 'promotes'], ['promotes', 'Python'], ['Python', 'as'], ['as', 'the'], ['the', 'best'], ['best', 'choice'], ['choice', 'for'], ['for', 'writing'], ['writing', 'scripts'], ['scripts', 'in'], ['in', 'ArcGIS.'], ['ArcGIS.', 'It'], ['It', 'has'], ['has', 'also'], ['also', 'been'], ['been', 'used'], ['used', 'in'], ['in', 'several'], ['several', 'video'], ['video', 'games,'], ['games,', 'and'], ['and', 'has'], ['has', 'been'], ['been', 'adopted'], ['adopted', 'as'], ['as', 'first'], ['first', 'of'], ['of', 'the'], ['the', 'three'], ['three', 'available'], ['available', 'programming'], ['programming', 'languages'], ['languages', 'in'], ['in', 'Google'], ['Google', 'App'], ['App', 'Engine,'], ['Engine,', 'the'], ['the', 'other'], ['other', 'two'], ['two', 'being'], ['being', 'Java'], ['Java', 'and'], ['and', 'Go.'], ['Go.', 'Python'], ['Python', 'is'], ['is', 'also'], ['also', 'used'], ['used', 'in'], ['in', 'algorithmic'], ['algorithmic', 'trading'], ['trading', 'and'], ['and', 'quantitative'], ['quantitative', 'finance.'], ['finance.', 'Python'], ['Python', 'can'], ['can', 'also'], ['also', 'be'], ['be', 'implemented'], ['implemented', 'in'], ['in', 'APIs'], ['APIs', 'of'], ['of', 'online'], ['online', 'brokerages'], ['brokerages', 'that'], ['that', 'run'], ['run', 'on'], ['on', 'other'], ['other', 'languages'], ['languages', 'by'], ['by', 'using'], ['using', 'wrappers.'], ['wrappers.', 'Python'], ['Python', 'has'], ['has', 'been'], ['been', 'used'], ['used', 'in'], ['in', 'artificial'], ['artificial', 'intelligence'], ['intelligence', 'projects.'], ['projects.', 'As'], ['As', 'a'], ['a', 'scripting'], ['scripting', 'language'], ['language', 'with'], ['with', 'modular'], ['modular', 'architecture,'], ['architecture,', 'simple'], ['simple', 'syntax'], ['syntax', 'and'], ['and', 'rich'], ['rich', 'text'], ['text', 'processing'], ['processing', 'tools,'], ['tools,', 'Python'], ['Python', 'is'], ['is', 'often'], ['often', 'used'], ['used', 'for'], ['for', 'natural'], ['natural', 'language'], ['language', 'processing.'], ['processing.', 'Many'], ['Many', 'operating'], ['operating', 'systems'], ['systems', 'include'], ['include', 'Python'], ['Python', 'as'], ['as', 'a'], ['a', 'standard'], ['standard', 'component.'], ['component.', 'It'], ['It', 'ships'], ['ships', 'with'], ['with', 'most'], ['most', 'Linux'], ['Linux', 'distributions,'], ['distributions,', 'AmigaOS'], ['AmigaOS', ','], [',', 'FreeBSD,'], ['FreeBSD,', 'NetBSD,'], ['NetBSD,', 'OpenBSD'], ['OpenBSD', 'and'], ['and', 'macOS,'], ['macOS,', 'and'], ['and', 'can'], ['can', 'be'], ['be', 'used'], ['used', 'from'], ['from', 'the'], ['the', 'command'], ['command', 'line'], ['line', '(terminal).'], ['(terminal).', 'Many'], ['Many', 'Linux'], ['Linux', 'distributions'], ['distributions', 'use'], ['use', 'installers'], ['installers', 'written'], ['written', 'in'], ['in', 'Python:'], ['Python:', 'Ubuntu'], ['Ubuntu', 'uses'], ['uses', 'the'], ['the', 'Ubiquity'], ['Ubiquity', 'installer,'], ['installer,', 'while'], ['while', 'Red'], ['Red', 'Hat'], ['Hat', 'Linux'], ['Linux', 'and'], ['and', 'Fedora'], ['Fedora', 'use'], ['use', 'the'], ['the', 'Anaconda'], ['Anaconda', 'installer.'], ['installer.', 'Gentoo'], ['Gentoo', 'Linux'], ['Linux', 'uses'], ['uses', 'Python'], ['Python', 'in'], ['in', 'its'], ['its', 'package'], ['package', 'management'], ['management', 'system,'], ['system,', 'Portage.'], ['Portage.', 'Python'], ['Python', 'is'], ['is', 'used'], ['used', 'extensively'], ['extensively', 'in'], ['in', 'the'], ['the', 'information'], ['information', 'security'], ['security', 'industry,'], ['industry,', 'including'], ['including', 'in'], ['in', 'exploit'], ['exploit', 'development.'], ['development.', 'Most'], ['Most', 'of'], ['of', 'the'], ['the', 'Sugar'], ['Sugar', 'software'], ['software', 'for'], ['for', 'the'], ['the', 'One'], ['One', 'Laptop'], ['Laptop', 'per'], ['per', 'Child'], ['Child', 'XO,'], ['XO,', 'now'], ['now', 'developed'], ['developed', 'at'], ['at', 'Sugar'], ['Sugar', 'Labs,'], ['Labs,', 'is'], ['is', 'written'], ['written', 'in'], ['in', 'Python.'], ['Python.', 'The'], ['The', 'Raspberry'], ['Raspberry', 'Pi'], ['Pi', 'single-board'], ['single-board', 'computer'], ['computer', 'project'], ['project', 'has'], ['has', 'adopted'], ['adopted', 'Python'], ['Python', 'as'], ['as', 'its'], ['its', 'main'], ['main', 'user-programming'], ['user-programming', 'language.'], ['language.', 'LibreOffice'], ['LibreOffice', 'includes'], ['includes', 'Python,'], ['Python,', 'and'], ['and', 'intends'], ['intends', 'to'], ['to', 'replace'], ['replace', 'Java'], ['Java', 'with'], ['with', 'Python.'], ['Python.', 'Its'], ['Its', 'Python'], ['Python', 'Scripting'], ['Scripting', 'Provider'], ['Provider', 'is'], ['is', 'a'], ['a', 'core'], ['core', 'feature'], ['feature', 'since'], ['since', 'Version'], ['Version', '.'], ['.', 'from'], ['from', 'February'], ['February', '.'], ['.', 'Languages'], ['Languages', 'influenced'], ['influenced', 'by'], ['by', 'Python'], ['Python', 'edit'], ['edit', \"Python's\"], [\"Python's\", 'design'], ['design', 'and'], ['and', 'philosophy'], ['philosophy', 'have'], ['have', 'influenced'], ['influenced', 'many'], ['many', 'other'], ['other', 'programming'], ['programming', 'languages:'], ['languages:', 'Boo'], ['Boo', 'uses'], ['uses', 'indentation,'], ['indentation,', 'a'], ['a', 'similar'], ['similar', 'syntax,'], ['syntax,', 'and'], ['and', 'a'], ['a', 'similar'], ['similar', 'object'], ['object', 'model.'], ['model.', 'Cobra'], ['Cobra', 'uses'], ['uses', 'indentation'], ['indentation', 'and'], ['and', 'a'], ['a', 'similar'], ['similar', 'syntax,'], ['syntax,', 'and'], ['and', 'its'], ['its', '\"Acknowledgements\"'], ['\"Acknowledgements\"', 'document'], ['document', 'lists'], ['lists', 'Python'], ['Python', 'first'], ['first', 'among'], ['among', 'languages'], ['languages', 'that'], ['that', 'influenced'], ['influenced', 'it.'], ['it.', 'However,'], ['However,', 'Cobra'], ['Cobra', 'directly'], ['directly', 'supports'], ['supports', 'design-by-contract,'], ['design-by-contract,', 'unit'], ['unit', 'tests,'], ['tests,', 'and'], ['and', 'optional'], ['optional', 'static'], ['static', 'typing.'], ['typing.', 'CoffeeScript,'], ['CoffeeScript,', 'a'], ['a', 'programming'], ['programming', 'language'], ['language', 'that'], ['that', 'cross-compiles'], ['cross-compiles', 'to'], ['to', 'JavaScript,'], ['JavaScript,', 'has'], ['has', 'Python-inspired'], ['Python-inspired', 'syntax.'], ['syntax.', 'ECMAScript'], ['ECMAScript', 'borrowed'], ['borrowed', 'iterators,'], ['iterators,', 'generators'], ['generators', 'and'], ['and', 'list'], ['list', 'comprehensions'], ['comprehensions', 'from'], ['from', 'Python.'], ['Python.', 'Go'], ['Go', 'is'], ['is', 'described'], ['described', 'as'], ['as', 'incorporating'], ['incorporating', 'the'], ['the', '\"development'], ['\"development', 'speed'], ['speed', 'of'], ['of', 'working'], ['working', 'in'], ['in', 'a'], ['a', 'dynamic'], ['dynamic', 'language'], ['language', 'like'], ['like', 'Python\".'], ['Python\".', 'Groovy'], ['Groovy', 'was'], ['was', 'motivated'], ['motivated', 'by'], ['by', 'the'], ['the', 'desire'], ['desire', 'to'], ['to', 'bring'], ['bring', 'the'], ['the', 'Python'], ['Python', 'design'], ['design', 'philosophy'], ['philosophy', 'to'], ['to', 'Java.'], ['Java.', 'Julia'], ['Julia', 'was'], ['was', 'designed'], ['designed', '\"with'], ['\"with', 'true'], ['true', 'macros'], ['macros', '..'], ['..', 'and'], ['and', 'to'], ['to', 'be'], ['be', 'as'], ['as', 'usable'], ['usable', 'for'], ['for', 'general'], ['general', 'programming'], ['programming', 'as'], ['as', 'Python'], ['Python', 'and'], ['and', 'should'], ['should', 'be'], ['be', 'as'], ['as', 'fast'], ['fast', 'as'], ['as', 'C\".'], ['C\".', 'Calling'], ['Calling', 'to'], ['to', 'or'], ['or', 'from'], ['from', 'Julia'], ['Julia', 'is'], ['is', 'possible;'], ['possible;', 'to'], ['to', 'with'], ['with', 'PyCall.jl'], ['PyCall.jl', 'and'], ['and', 'a'], ['a', 'Python'], ['Python', 'package'], ['package', 'pyjulia'], ['pyjulia', 'allows'], ['allows', 'calling,'], ['calling,', 'in'], ['in', 'the'], ['the', 'other'], ['other', 'direction,'], ['direction,', 'from'], ['from', 'Python.'], ['Python.', 'OCaml'], ['OCaml', 'has'], ['has', 'an'], ['an', 'optional'], ['optional', 'syntax'], ['syntax', 'named'], ['named', 'twt'], ['twt', '(The'], ['(The', 'Whitespace'], ['Whitespace', 'Thing),'], ['Thing),', 'inspired'], ['inspired', 'by'], ['by', 'Python'], ['Python', 'and'], ['and', 'Haskell.'], ['Haskell.', \"Ruby's\"], [\"Ruby's\", 'creator,'], ['creator,', 'Yukihiro'], ['Yukihiro', 'Matsumoto,'], ['Matsumoto,', 'has'], ['has', 'said:'], ['said:', '\"I'], ['\"I', 'wanted'], ['wanted', 'a'], ['a', 'scripting'], ['scripting', 'language'], ['language', 'that'], ['that', 'was'], ['was', 'more'], ['more', 'powerful'], ['powerful', 'than'], ['than', 'Perl,'], ['Perl,', 'and'], ['and', 'more'], ['more', 'object-oriented'], ['object-oriented', 'than'], ['than', 'Python.'], ['Python.', \"That's\"], [\"That's\", 'why'], ['why', 'I'], ['I', 'decided'], ['decided', 'to'], ['to', 'design'], ['design', 'my'], ['my', 'own'], ['own', 'language.\"'], ['language.\"', 'Swift,'], ['Swift,', 'a'], ['a', 'programming'], ['programming', 'language'], ['language', 'developed'], ['developed', 'by'], ['by', 'Apple,'], ['Apple,', 'has'], ['has', 'some'], ['some', 'Python-inspired'], ['Python-inspired', 'syntax.'], ['syntax.', \"Python's\"], [\"Python's\", 'development'], ['development', 'practices'], ['practices', 'have'], ['have', 'also'], ['also', 'been'], ['been', 'emulated'], ['emulated', 'by'], ['by', 'other'], ['other', 'languages.'], ['languages.', 'For'], ['For', 'example,'], ['example,', 'the'], ['the', 'practice'], ['practice', 'of'], ['of', 'requiring'], ['requiring', 'a'], ['a', 'document'], ['document', 'describing'], ['describing', 'the'], ['the', 'rationale'], ['rationale', 'for,'], ['for,', 'and'], ['and', 'issues'], ['issues', 'surrounding,'], ['surrounding,', 'a'], ['a', 'change'], ['change', 'to'], ['to', 'the'], ['the', 'language'], ['language', '(in'], ['(in', 'Python,'], ['Python,', 'a'], ['a', 'PEP)'], ['PEP)', 'is'], ['is', 'also'], ['also', 'used'], ['used', 'in'], ['in', 'Tcl'], ['Tcl', 'and'], ['and', 'Erlang'], ['Erlang', '.'], ['.', 'Python'], ['Python', 'received'], ['received', \"TIOBE's\"], [\"TIOBE's\", 'Programming'], ['Programming', 'Language'], ['Language', 'of'], ['of', 'the'], ['the', 'Year'], ['Year', 'awards'], ['awards', 'in'], ['in', 'and'], ['and', '.'], ['.', 'The'], ['The', 'award'], ['award', 'is'], ['is', 'given'], ['given', 'to'], ['to', 'the'], ['the', 'language'], ['language', 'with'], ['with', 'the'], ['the', 'greatest'], ['greatest', 'growth'], ['growth', 'in'], ['in', 'popularity'], ['popularity', 'over'], ['over', 'the'], ['the', 'year,'], ['year,', 'as'], ['as', 'measured'], ['measured', 'by'], ['by', 'the'], ['the', 'TIOBE'], ['TIOBE', 'index.'], ['index.', 'See'], ['See', 'also'], ['also', 'edit'], ['edit', 'Free'], ['Free', 'software'], ['software', 'portal'], ['portal', 'Python'], ['Python', 'programming'], ['programming', 'portal'], ['portal', 'Comparison'], ['Comparison', 'of'], ['of', 'integrated'], ['integrated', 'development'], ['development', 'environments'], ['environments', 'for'], ['for', 'Python'], ['Python', 'Comparison'], ['Comparison', 'of'], ['of', 'programming'], ['programming', 'languages'], ['languages', 'List'], ['List', 'of'], ['of', 'programming'], ['programming', 'languages'], ['languages', 'Off-side'], ['Off-side', 'rule'], ['rule', 'References'], ['References', 'edit'], ['edit', '^'], ['^', '\"The'], ['\"The', 'History'], ['History', 'of'], ['of', 'Python:'], ['Python:', 'A'], ['A', 'Brief'], ['Brief', 'Timeline'], ['Timeline', 'of'], ['of', 'Python\".'], ['Python\".', 'Blogger.'], ['Blogger.', 'January'], ['January', '.'], ['.', 'Retrieved'], ['Retrieved', 'March'], ['March', '.'], ['.', '^'], ['^', 'Deily,'], ['Deily,', 'Ned'], ['Ned', '('], ['(', 'December'], ['December', ').'], [').', '\"Python'], ['\"Python', '.'], ['.', '.'], ['.', 'is'], ['is', 'now'], ['now', 'available\".'], ['available\".', 'Python'], ['Python', 'Insider.'], ['Insider.', 'The'], ['The', 'Python'], ['Python', 'Core'], ['Core', 'Developers.'], ['Developers.', 'Retrieved'], ['Retrieved', 'December'], ['December', '.'], ['.', '^'], ['^', 'Peterson,'], ['Peterson,', 'Benjamin'], ['Benjamin', '('], ['(', 'September'], ['September', ').'], [').', '\"Python'], ['\"Python', '.'], ['.', '.'], ['.', 'released\".'], ['released\".', 'Python'], ['Python', 'Insider.'], ['Insider.', 'The'], ['The', 'Python'], ['Python', 'Core'], ['Core', 'Developers.'], ['Developers.', 'Retrieved'], ['Retrieved', 'September'], ['September', '.'], ['.', '^'], ['^', 'File'], ['File', 'extension'], ['extension', '.pyo'], ['.pyo', 'was'], ['was', 'removed'], ['removed', 'in'], ['in', 'Python'], ['Python', '.'], ['.', '.'], ['.', 'See'], ['See', 'PEP'], ['PEP', '^'], ['^', 'Holth,'], ['Holth,', 'Moore'], ['Moore', '('], ['(', 'March'], ['March', ').'], [').', '\"PEP'], ['\"PEP', '--'], ['--', 'Improving'], ['Improving', 'Python'], ['Python', 'ZIP'], ['ZIP', 'Application'], ['Application', 'Support\".'], ['Support\".', 'Retrieved'], ['Retrieved', 'November'], ['November', '.'], ['.', '^'], ['^', 'a'], ['a', 'b'], ['b', '\"Why'], ['\"Why', 'was'], ['was', 'Python'], ['Python', 'created'], ['created', 'in'], ['in', 'the'], ['the', 'first'], ['first', 'place?\".'], ['place?\".', 'General'], ['General', 'Python'], ['Python', 'FAQ.'], ['FAQ.', 'Python'], ['Python', 'Software'], ['Software', 'Foundation.'], ['Foundation.', 'Retrieved'], ['Retrieved', 'March'], ['March', '.'], ['.', '^'], ['^', 'Kuchling,'], ['Kuchling,', 'Andrew'], ['Andrew', 'M.'], ['M.', '('], ['(', 'December'], ['December', ').'], [').', '\"Interview'], ['\"Interview', 'with'], ['with', 'Guido'], ['Guido', 'van'], ['van', 'Rossum'], ['Rossum', '(July'], ['(July', ')\".'], [')\".', 'amk.ca.'], ['amk.ca.', 'Archived'], ['Archived', 'from'], ['from', 'the'], ['the', 'original'], ['original', 'on'], ['on', 'May'], ['May', '.'], ['.', 'Retrieved'], ['Retrieved', 'March'], ['March', '.'], ['.', '^'], ['^', 'van'], ['van', 'Rossum,'], ['Rossum,', 'Guido'], ['Guido', '('], ['(', ').'], [').', '\"An'], ['\"An', 'Introduction'], ['Introduction', 'to'], ['to', 'Python'], ['Python', 'for'], ['for', 'UNIX/C'], ['UNIX/C', 'Programmers\".'], ['Programmers\".', 'Proceedings'], ['Proceedings', 'of'], ['of', 'the'], ['the', 'NLUUG'], ['NLUUG', 'najaarsconferentie'], ['najaarsconferentie', '(Dutch'], ['(Dutch', 'UNIX'], ['UNIX', 'users'], ['users', 'group).'], ['group).', 'even'], ['even', 'though'], ['though', 'the'], ['the', 'design'], ['design', 'of'], ['of', 'C'], ['C', 'is'], ['is', 'far'], ['far', 'from'], ['from', 'ideal,'], ['ideal,', 'its'], ['its', 'influence'], ['influence', 'on'], ['on', 'Python'], ['Python', 'is'], ['is', 'considerable.'], ['considerable.', '^'], ['^', 'a'], ['a', 'b'], ['b', '\"Classes\".'], ['\"Classes\".', 'The'], ['The', 'Python'], ['Python', 'Tutorial.'], ['Tutorial.', 'Python'], ['Python', 'Software'], ['Software', 'Foundation.'], ['Foundation.', 'Retrieved'], ['Retrieved', 'February'], ['February', '.'], ['.', 'It'], ['It', 'is'], ['is', 'a'], ['a', 'mixture'], ['mixture', 'of'], ['of', 'the'], ['the', 'class'], ['class', 'mechanisms'], ['mechanisms', 'found'], ['found', 'in'], ['in', 'C'], ['C', 'and'], ['and', 'Modula-'], ['Modula-', '^'], ['^', 'Lundh,'], ['Lundh,', 'Fredrik.'], ['Fredrik.', '\"Call'], ['\"Call', 'By'], ['By', 'Object\".'], ['Object\".', 'effbot.org.'], ['effbot.org.', 'Retrieved'], ['Retrieved', 'November'], ['November', '.'], ['.', 'replace'], ['replace', '\"CLU\"'], ['\"CLU\"', 'with'], ['with', '\"Python\",'], ['\"Python\",', '\"record\"'], ['\"record\"', 'with'], ['with', '\"instance\",'], ['\"instance\",', 'and'], ['and', '\"procedure\"'], ['\"procedure\"', 'with'], ['with', '\"function'], ['\"function', 'or'], ['or', 'method\",'], ['method\",', 'and'], ['and', 'you'], ['you', 'get'], ['get', 'a'], ['a', 'pretty'], ['pretty', 'accurate'], ['accurate', 'description'], ['description', 'of'], ['of', \"Python's\"], [\"Python's\", 'object'], ['object', 'model.'], ['model.', '^'], ['^', 'Simionato,'], ['Simionato,', 'Michele.'], ['Michele.', '\"The'], ['\"The', 'Python'], ['Python', '.'], ['.', 'Method'], ['Method', 'Resolution'], ['Resolution', 'Order\".'], ['Order\".', 'Python'], ['Python', 'Software'], ['Software', 'Foundation.'], ['Foundation.', 'The'], ['The', 'C'], ['C', 'method'], ['method', 'itself'], ['itself', 'has'], ['has', 'nothing'], ['nothing', 'to'], ['to', 'do'], ['do', 'with'], ['with', 'Python,'], ['Python,', 'since'], ['since', 'it'], ['it', 'was'], ['was', 'invented'], ['invented', 'by'], ['by', 'people'], ['people', 'working'], ['working', 'on'], ['on', 'Dylan'], ['Dylan', 'and'], ['and', 'it'], ['it', 'is'], ['is', 'described'], ['described', 'in'], ['in', 'a'], ['a', 'paper'], ['paper', 'intended'], ['intended', 'for'], ['for', 'lispers'], ['lispers', '^'], ['^', 'Kuchling,'], ['Kuchling,', 'A.'], ['A.', 'M.'], ['M.', '\"Functional'], ['\"Functional', 'Programming'], ['Programming', 'HOWTO\".'], ['HOWTO\".', 'Python'], ['Python', 'v'], ['v', '.'], ['.', '.'], ['.', 'documentation.'], ['documentation.', 'Python'], ['Python', 'Software'], ['Software', 'Foundation.'], ['Foundation.', 'Retrieved'], ['Retrieved', 'February'], ['February', '.'], ['.', '^'], ['^', 'Schemenauer,'], ['Schemenauer,', 'Neil;'], ['Neil;', 'Peters,'], ['Peters,', 'Tim;'], ['Tim;', 'Hetland,'], ['Hetland,', 'Magnus'], ['Magnus', 'Lie'], ['Lie', '('], ['(', 'May'], ['May', ').'], [').', '\"PEP'], ['\"PEP', 'Simple'], ['Simple', 'Generators\".'], ['Generators\".', 'Python'], ['Python', 'Enhancement'], ['Enhancement', 'Proposals.'], ['Proposals.', 'Python'], ['Python', 'Software'], ['Software', 'Foundation.'], ['Foundation.', 'Retrieved'], ['Retrieved', 'February'], ['February', '.'], ['.', '^'], ['^', 'Smith,'], ['Smith,', 'Kevin'], ['Kevin', 'D.;'], ['D.;', 'Jewett,'], ['Jewett,', 'Jim'], ['Jim', 'J.;'], ['J.;', 'Montanaro,'], ['Montanaro,', 'Skip;'], ['Skip;', 'Baxter,'], ['Baxter,', 'Anthony'], ['Anthony', '('], ['(', 'September'], ['September', ').'], [').', '\"PEP'], ['\"PEP', 'Decorators'], ['Decorators', 'for'], ['for', 'Functions'], ['Functions', 'and'], ['and', 'Methods\".'], ['Methods\".', 'Python'], ['Python', 'Enhancement'], ['Enhancement', 'Proposals.'], ['Proposals.', 'Python'], ['Python', 'Software'], ['Software', 'Foundation.'], ['Foundation.', 'Retrieved'], ['Retrieved', 'February'], ['February', '.'], ['.', '^'], ['^', '\"More'], ['\"More', 'Control'], ['Control', 'Flow'], ['Flow', 'Tools\".'], ['Tools\".', 'Python'], ['Python', 'documentation.'], ['documentation.', 'Python'], ['Python', 'Software'], ['Software', 'Foundation.'], ['Foundation.', 'Retrieved'], ['Retrieved', 'July'], ['July', '.'], ['.', '^'], ['^', 'Hubinger,'], ['Hubinger,', 'Evan.'], ['Evan.', '\"Coconut'], ['\"Coconut', 'Programming'], ['Programming', 'Language\".'], ['Language\".', 'coconut-lang.org.'], ['coconut-lang.org.', 'Retrieved'], ['Retrieved', 'August'], ['August', '.'], ['.', '^'], ['^', '\"CoffeeScript'], ['\"CoffeeScript', 'borrows'], ['borrows', 'chained'], ['chained', 'comparisons'], ['comparisons', 'from'], ['from', 'Python\".'], ['Python\".', '^'], ['^', '\"Genie'], ['\"Genie', 'Language'], ['Language', '-'], ['-', 'A'], ['A', 'brief'], ['brief', 'guide\".'], ['guide\".', 'Retrieved'], ['Retrieved', 'December'], ['December', '.'], ['.', '^'], ['^', '\"Perl'], ['\"Perl', 'and'], ['and', 'Python'], ['Python', 'influences'], ['influences', 'in'], ['in', 'JavaScript\".'], ['JavaScript\".', 'www.'], ['www.', 'ality.com.'], ['ality.com.', 'February'], ['February', '.'], ['.', 'Retrieved'], ['Retrieved', 'May'], ['May', '.'], ['.', '^'], ['^', 'Rauschmayer,'], ['Rauschmayer,', 'Axel.'], ['Axel.', '\"Chapter'], ['\"Chapter', ':'], [':', 'The'], ['The', 'Nature'], ['Nature', 'of'], ['of', 'JavaScript;'], ['JavaScript;', 'Influences\".'], ['Influences\".', \"O'Reilly,\"], [\"O'Reilly,\", 'Speaking'], ['Speaking', 'JavaScript.'], ['JavaScript.', 'Retrieved'], ['Retrieved', 'May'], ['May', '.'], ['.', '^'], ['^', 'a'], ['a', 'b'], ['b', '\"Why'], ['\"Why', 'We'], ['We', 'Created'], ['Created', 'Julia\".'], ['Julia\".', 'Julia'], ['Julia', 'website.'], ['website.', 'February'], ['February', '.'], ['.', 'Retrieved'], ['Retrieved', 'June'], ['June', '.'], ['.', '^'], ['^', 'Ring'], ['Ring', 'Team'], ['Team', '('], ['(', 'December'], ['December', ').'], [').', '\"Ring'], ['\"Ring', 'and'], ['and', 'other'], ['other', 'languages\".'], ['languages\".', 'ring-lang.net.'], ['ring-lang.net.', 'ring-lang.'], ['ring-lang.', '^'], ['^', 'Bini,'], ['Bini,', 'Ola'], ['Ola', '('], ['(', ').'], [').', 'Practical'], ['Practical', 'JRuby'], ['JRuby', 'on'], ['on', 'Rails'], ['Rails', 'Web'], ['Web', '.'], ['.', 'Projects:'], ['Projects:', 'bringing'], ['bringing', 'Ruby'], ['Ruby', 'on'], ['on', 'Rails'], ['Rails', 'to'], ['to', 'the'], ['the', 'Java'], ['Java', 'platform.'], ['platform.', 'Berkeley:'], ['Berkeley:', 'APress.'], ['APress.', 'p.'], ['p.', '.'], ['.', 'ISBN'], ['ISBN', '-'], ['-', '-'], ['-', '-'], ['-', '-'], ['-', '.'], ['.', '^'], ['^', 'Lattner,'], ['Lattner,', 'Chris'], ['Chris', '('], ['(', 'June'], ['June', ').'], [').', '\"Chris'], ['\"Chris', \"Lattner's\"], [\"Lattner's\", 'Homepage\".'], ['Homepage\".', 'Chris'], ['Chris', 'Lattner.'], ['Lattner.', 'Retrieved'], ['Retrieved', 'June'], ['June', '.'], ['.', 'The'], ['The', 'Swift'], ['Swift', 'language'], ['language', 'is'], ['is', 'the'], ['the', 'product'], ['product', 'of'], ['of', 'tireless'], ['tireless', 'effort'], ['effort', 'from'], ['from', 'a'], ['a', 'team'], ['team', 'of'], ['of', 'language'], ['language', 'experts,'], ['experts,', 'documentation'], ['documentation', 'gurus,'], ['gurus,', 'compiler'], ['compiler', 'optimization'], ['optimization', 'ninjas,'], ['ninjas,', 'and'], ['and', 'an'], ['an', 'incredibly'], ['incredibly', 'important'], ['important', 'internal'], ['internal', 'dogfooding'], ['dogfooding', 'group'], ['group', 'who'], ['who', 'provided'], ['provided', 'feedback'], ['feedback', 'to'], ['to', 'help'], ['help', 'refine'], ['refine', 'and'], ['and', 'battle-test'], ['battle-test', 'ideas.'], ['ideas.', 'Of'], ['Of', 'course,'], ['course,', 'it'], ['it', 'also'], ['also', 'greatly'], ['greatly', 'benefited'], ['benefited', 'from'], ['from', 'the'], ['the', 'experiences'], ['experiences', 'hard-won'], ['hard-won', 'by'], ['by', 'many'], ['many', 'other'], ['other', 'languages'], ['languages', 'in'], ['in', 'the'], ['the', 'field,'], ['field,', 'drawing'], ['drawing', 'ideas'], ['ideas', 'from'], ['from', 'Objective-C,'], ['Objective-C,', 'Rust,'], ['Rust,', 'Haskell,'], ['Haskell,', 'Ruby,'], ['Ruby,', 'Python,'], ['Python,', 'C#,'], ['C#,', 'CLU,'], ['CLU,', 'and'], ['and', 'far'], ['far', 'too'], ['too', 'many'], ['many', 'others'], ['others', 'to'], ['to', 'list.'], ['list.', '^'], ['^', 'Summerfield,'], ['Summerfield,', 'Mark.'], ['Mark.', 'Rapid'], ['Rapid', 'GUI'], ['GUI', 'Programming'], ['Programming', 'with'], ['with', 'Python'], ['Python', 'and'], ['and', 'Qt.'], ['Qt.', 'Python'], ['Python', 'is'], ['is', 'a'], ['a', 'very'], ['very', 'expressive'], ['expressive', 'language,'], ['language,', 'which'], ['which', 'means'], ['means', 'that'], ['that', 'we'], ['we', 'can'], ['can', 'usually'], ['usually', 'write'], ['write', 'far'], ['far', 'fewer'], ['fewer', 'lines'], ['lines', 'of'], ['of', 'Python'], ['Python', 'code'], ['code', 'than'], ['than', 'would'], ['would', 'be'], ['be', 'required'], ['required', 'for'], ['for', 'an'], ['an', 'equivalent'], ['equivalent', 'application'], ['application', 'written'], ['written', 'in,'], ['in,', 'say,'], ['say,', 'C'], ['C', 'or'], ['or', 'Java'], ['Java', '^'], ['^', 'McConnell,'], ['McConnell,', 'Steve'], ['Steve', '('], ['(', 'November'], ['November', ').'], [').', 'Code'], ['Code', 'Complete,'], ['Complete,', 'p.'], ['p.', '.'], ['.', 'ISBN'], ['ISBN', '.'], ['.', '^'], ['^', 'Kuhlman,'], ['Kuhlman,', 'Dave.'], ['Dave.', '\"A'], ['\"A', 'Python'], ['Python', 'Book:'], ['Book:', 'Beginning'], ['Beginning', 'Python,'], ['Python,', 'Advanced'], ['Advanced', 'Python,'], ['Python,', 'and'], ['and', 'Python'], ['Python', 'Exercises\".'], ['Exercises\".', '^'], ['^', '\"About'], ['\"About', 'Python\".'], ['Python\".', 'Python'], ['Python', 'Software'], ['Software', 'Foundation.'], ['Foundation.', 'Retrieved'], ['Retrieved', 'April'], ['April', '.,'], ['.,', 'second'], ['second', 'section'], ['section', '\"Fans'], ['\"Fans', 'of'], ['of', 'Python'], ['Python', 'use'], ['use', 'the'], ['the', 'phrase'], ['phrase', '\"batteries'], ['\"batteries', 'included\"'], ['included\"', 'to'], ['to', 'describe'], ['describe', 'the'], ['the', 'standard'], ['standard', 'library,'], ['library,', 'which'], ['which', 'covers'], ['covers', 'everything'], ['everything', 'from'], ['from', 'asynchronous'], ['asynchronous', 'processing'], ['processing', 'to'], ['to', 'zip'], ['zip', 'files.\"'], ['files.\"', '^'], ['^', '\"History'], ['\"History', 'and'], ['and', 'License\".'], ['License\".', 'Retrieved'], ['Retrieved', 'December'], ['December', '.'], ['.', '\"All'], ['\"All', 'Python'], ['Python', 'releases'], ['releases', 'are'], ['are', 'Open'], ['Open', 'Source\"'], ['Source\"', '^'], ['^', 'a'], ['a', 'b'], ['b', 'Venners,'], ['Venners,', 'Bill'], ['Bill', '('], ['(', 'January'], ['January', ').'], [').', '\"The'], ['\"The', 'Making'], ['Making', 'of'], ['of', 'Python\".'], ['Python\".', 'Artima'], ['Artima', 'Developer.'], ['Developer.', 'Artima.'], ['Artima.', 'Retrieved'], ['Retrieved', 'March'], ['March', '.'], ['.', '^'], ['^', 'van'], ['van', 'Rossum,'], ['Rossum,', 'Guido'], ['Guido', '('], ['(', 'January'], ['January', ').'], [').', '\"A'], ['\"A', 'Brief'], ['Brief', 'Timeline'], ['Timeline', 'of'], ['of', 'Python\".'], ['Python\".', 'The'], ['The', 'History'], ['History', 'of'], ['of', 'Python.'], ['Python.', 'Google.'], ['Google.', 'Retrieved'], ['Retrieved', 'January'], ['January', '.'], ['.', '^'], ['^', 'van'], ['van', 'Rossum,'], ['Rossum,', 'Guido'], ['Guido', '('], ['(', 'August'], ['August', ').'], [').', '\"SETL'], ['\"SETL', '(was:'], ['(was:', 'Lukewarm'], ['Lukewarm', 'about'], ['about', 'range'], ['range', 'literals)\".'], ['literals)\".', 'Python-Dev'], ['Python-Dev', '(Mailing'], ['(Mailing', 'list).'], ['list).', 'Retrieved'], ['Retrieved', 'March'], ['March', '.'], ['.', '^'], ['^', 'van'], ['van', 'Rossum,'], ['Rossum,', 'Guido'], ['Guido', '('], ['(', ').'], [').', '\"Foreword'], ['\"Foreword', 'for'], ['for', '\"Programming'], ['\"Programming', 'Python\"'], ['Python\"', '('], ['(', 'st'], ['st', 'ed.)\".'], ['ed.)\".', 'Retrieved'], ['Retrieved', 'July'], ['July', '.'], ['.', '^'], ['^', 'Kuchling,'], ['Kuchling,', 'A.'], ['A.', 'M.;'], ['M.;', 'Zadka,'], ['Zadka,', 'Moshe'], ['Moshe', '('], ['(', 'October'], ['October', ').'], [').', '\"What\\'s'], ['\"What\\'s', 'New'], ['New', 'in'], ['in', 'Python'], ['Python', '.'], ['.', '\".'], ['\".', 'Python'], ['Python', 'Software'], ['Software', 'Foundation.'], ['Foundation.', 'Retrieved'], ['Retrieved', 'February'], ['February', '.'], ['.', '^'], ['^', '\"Python'], ['\"Python', '.'], ['.', 'Release\".'], ['Release\".', 'Python'], ['Python', 'Software'], ['Software', 'Foundation.'], ['Foundation.', 'Retrieved'], ['Retrieved', 'July'], ['July', '.'], ['.', '^'], ['^', 'van'], ['van', 'Rossum,'], ['Rossum,', 'Guido'], ['Guido', '('], ['(', 'April'], ['April', ').'], [').', '\"PEP'], ['\"PEP', 'Python'], ['Python', '\".'], ['\".', 'Python'], ['Python', 'Enhancement'], ['Enhancement', 'Proposals.'], ['Proposals.', 'Python'], ['Python', 'Software'], ['Software', 'Foundation.'], ['Foundation.', 'Retrieved'], ['Retrieved', 'June'], ['June', '.'], ['.', '^'], ['^', '\"PEP'], ['\"PEP', '--'], ['--', 'Python'], ['Python', '.'], ['.', 'Release'], ['Release', 'Schedule\".'], ['Schedule\".', 'python.org.'], ['python.org.', 'Retrieved'], ['Retrieved', 'January'], ['January', '.'], ['.', '^'], ['^', '\"PEP'], ['\"PEP', '--'], ['--', 'Network'], ['Network', 'Security'], ['Security', 'Enhancements'], ['Enhancements', 'for'], ['for', 'Python'], ['Python', '.'], ['.', '.x\".'], ['.x\".', 'python.org.'], ['python.org.', 'Retrieved'], ['Retrieved', 'January'], ['January', '.'], ['.', '^'], ['^', 'Claburn,'], ['Claburn,', 'Thomas'], ['Thomas', '('], ['(', 'January'], ['January', ').'], [').', '\"Google\\'s'], ['\"Google\\'s', 'Grumpy'], ['Grumpy', 'code'], ['code', 'makes'], ['makes', 'Python'], ['Python', 'Go\".'], ['Go\".', 'Retrieved'], ['Retrieved', 'January'], ['January', '.'], ['.', '^'], ['^', '\"Google'], ['\"Google', 'Open'], ['Open', 'Source'], ['Source', 'Blog:'], ['Blog:', 'Grumpy:'], ['Grumpy:', 'Go'], ['Go', 'running'], ['running', 'Python!\".'], ['Python!\".', 'January'], ['January', '.'], ['.', 'Retrieved'], ['Retrieved', 'March'], ['March', '.'], ['.', '^'], ['^', 'The'], ['The', 'Cain'], ['Cain', 'Gang'], ['Gang', 'Ltd.'], ['Ltd.', '\"Python'], ['\"Python', 'Metaclasses:'], ['Metaclasses:', 'Who?'], ['Who?', 'Why?'], ['Why?', 'When?\"'], ['When?\"', '(PDF).'], ['(PDF).', 'Archived'], ['Archived', 'from'], ['from', 'the'], ['the', 'original'], ['original', '(PDF)'], ['(PDF)', 'on'], ['on', 'December'], ['December', '.'], ['.', 'Retrieved'], ['Retrieved', 'June'], ['June', '.'], ['.', '^'], ['^', '\"'], ['\"', '.'], ['.', '.'], ['.', 'Special'], ['Special', 'method'], ['method', 'names\".'], ['names\".', 'The'], ['The', 'Python'], ['Python', 'Language'], ['Language', 'Reference.'], ['Reference.', 'Python'], ['Python', 'Software'], ['Software', 'Foundation.'], ['Foundation.', 'Retrieved'], ['Retrieved', 'June'], ['June', '.'], ['.', '^'], ['^', '\"PyDBC:'], ['\"PyDBC:', 'method'], ['method', 'preconditions,'], ['preconditions,', 'method'], ['method', 'postconditions'], ['postconditions', 'and'], ['and', 'class'], ['class', 'invariants'], ['invariants', 'for'], ['for', 'Python\".'], ['Python\".', 'Retrieved'], ['Retrieved', 'September'], ['September', '.'], ['.', '^'], ['^', '\"Contracts'], ['\"Contracts', 'for'], ['for', 'Python\".'], ['Python\".', 'Retrieved'], ['Retrieved', 'September'], ['September', '.'], ['.', '^'], ['^', '\"PyDatalog\".'], ['\"PyDatalog\".', 'Retrieved'], ['Retrieved', 'July'], ['July', '.'], ['.', '^'], ['^', 'a'], ['a', 'b'], ['b', 'Hettinger,'], ['Hettinger,', 'Raymond'], ['Raymond', '('], ['(', 'January'], ['January', ').'], [').', '\"PEP'], ['\"PEP', 'Generator'], ['Generator', 'Expressions\".'], ['Expressions\".', 'Python'], ['Python', 'Enhancement'], ['Enhancement', 'Proposals.'], ['Proposals.', 'Python'], ['Python', 'Software'], ['Software', 'Foundation.'], ['Foundation.', 'Retrieved'], ['Retrieved', 'February'], ['February', '.'], ['.', '^'], ['^', '\"'], ['\"', '.'], ['.', 'itertools'], ['itertools', 'Functions'], ['Functions', 'creating'], ['creating', 'iterators'], ['iterators', 'for'], ['for', 'efficient'], ['efficient', 'looping\".'], ['looping\".', 'Docs.python.org.'], ['Docs.python.org.', 'Retrieved'], ['Retrieved', 'November'], ['November', '.'], ['.', '^'], ['^', 'a'], ['a', 'b'], ['b', 'Peters,'], ['Peters,', 'Tim'], ['Tim', '('], ['(', 'August'], ['August', ').'], [').', '\"PEP'], ['\"PEP', 'The'], ['The', 'Zen'], ['Zen', 'of'], ['of', 'Python\".'], ['Python\".', 'Python'], ['Python', 'Enhancement'], ['Enhancement', 'Proposals.'], ['Proposals.', 'Python'], ['Python', 'Software'], ['Software', 'Foundation.'], ['Foundation.', 'Retrieved'], ['Retrieved', 'November'], ['November', '.'], ['.', '^'], ['^', 'Martelli,'], ['Martelli,', 'Alex;'], ['Alex;', 'Ravenscroft,'], ['Ravenscroft,', 'Anna;'], ['Anna;', 'Ascher,'], ['Ascher,', 'David'], ['David', '('], ['(', ').'], [').', 'Python'], ['Python', 'Cookbook,'], ['Cookbook,', 'nd'], ['nd', 'Edition.'], ['Edition.', \"O'Reilly\"], [\"O'Reilly\", 'Media.'], ['Media.', 'p.'], ['p.', '.'], ['.', 'ISBN'], ['ISBN', '-'], ['-', '-'], ['-', '-'], ['-', '-'], ['-', '.'], ['.', '^'], ['^', '\"Python'], ['\"Python', 'Culture\".'], ['Culture\".', '^'], ['^', '\"General'], ['\"General', 'Python'], ['Python', 'FAQ\".'], ['FAQ\".', 'Python'], ['Python', 'v'], ['v', '.'], ['.', '.'], ['.', 'documentation.'], ['documentation.', 'Docs.python.org.'], ['Docs.python.org.', 'Retrieved'], ['Retrieved', 'December'], ['December', '.'], ['.', '^'], ['^', '\"'], ['\"', 'Ways'], ['Ways', 'Python'], ['Python', 'Is'], ['Is', 'a'], ['a', 'Powerful'], ['Powerful', 'Force'], ['Force', 'on'], ['on', 'the'], ['the', 'Web\".'], ['Web\".', '^'], ['^', '\"pprint'], ['\"pprint', '-'], ['-', 'Data'], ['Data', 'pretty'], ['pretty', 'printer'], ['printer', '-'], ['-', 'Python'], ['Python', 'Documentation\".'], ['Documentation\".', '^'], ['^', 'Goodger,'], ['Goodger,', 'David.'], ['David.', '\"Code'], ['\"Code', 'Like'], ['Like', 'a'], ['a', 'Pythonista:'], ['Pythonista:', 'Idiomatic'], ['Idiomatic', 'Python\".'], ['Python\".', '^'], ['^', '\"How'], ['\"How', 'to'], ['to', 'think'], ['think', 'like'], ['like', 'a'], ['a', 'Pythonista\".'], ['Pythonista\".', '^'], ['^', '\"Is'], ['\"Is', 'Python'], ['Python', 'a'], ['a', 'good'], ['good', 'language'], ['language', 'for'], ['for', 'beginning'], ['beginning', 'programmers?\".'], ['programmers?\".', 'General'], ['General', 'Python'], ['Python', 'FAQ.'], ['FAQ.', 'Python'], ['Python', 'Software'], ['Software', 'Foundation.'], ['Foundation.', 'Retrieved'], ['Retrieved', 'March'], ['March', '.'], ['.', '^'], ['^', '\"Myths'], ['\"Myths', 'about'], ['about', 'indentation'], ['indentation', 'in'], ['in', 'Python\".'], ['Python\".', 'Secnetix.de.'], ['Secnetix.de.', 'Retrieved'], ['Retrieved', 'April'], ['April', '.'], ['.', '^'], ['^', 'Sweigart,'], ['Sweigart,', 'Al'], ['Al', '('], ['(', ').'], [').', '\"Appendix'], ['\"Appendix', 'A:'], ['A:', 'Differences'], ['Differences', 'Between'], ['Between', 'Python'], ['Python', 'and'], ['and', '\".'], ['\".', 'Invent'], ['Invent', 'Your'], ['Your', 'Own'], ['Own', 'Computer'], ['Computer', 'Games'], ['Games', 'with'], ['with', 'Python'], ['Python', '('], ['(', 'ed.).'], ['ed.).', 'ISBN'], ['ISBN', '-'], ['-', '-'], ['-', '-'], ['-', '-'], ['-', '.'], ['.', 'Retrieved'], ['Retrieved', 'February'], ['February', '.'], ['.', '^'], ['^', 'van'], ['van', 'Rossum,'], ['Rossum,', 'Guido'], ['Guido', '('], ['(', 'April'], ['April', ').'], [').', '\"Tail'], ['\"Tail', 'Recursion'], ['Recursion', 'Elimination\".'], ['Elimination\".', 'Neopythonic.blogspot.be.'], ['Neopythonic.blogspot.be.', 'Retrieved'], ['Retrieved', 'December'], ['December', '.'], ['.', '^'], ['^', 'van'], ['van', 'Rossum,'], ['Rossum,', 'Guido'], ['Guido', '('], ['(', 'February'], ['February', ').'], [').', '\"Language'], ['\"Language', 'Design'], ['Design', 'Is'], ['Is', 'Not'], ['Not', 'Just'], ['Just', 'Solving'], ['Solving', 'Puzzles\".'], ['Puzzles\".', 'Artima'], ['Artima', 'forums.'], ['forums.', 'Artima.'], ['Artima.', 'Retrieved'], ['Retrieved', 'March'], ['March', '.'], ['.', '^'], ['^', 'van'], ['van', 'Rossum,'], ['Rossum,', 'Guido;'], ['Guido;', 'Eby,'], ['Eby,', 'Phillip'], ['Phillip', 'J.'], ['J.', '('], ['(', 'May'], ['May', ').'], [').', '\"PEP'], ['\"PEP', 'Coroutines'], ['Coroutines', 'via'], ['via', 'Enhanced'], ['Enhanced', 'Generators\".'], ['Generators\".', 'Python'], ['Python', 'Enhancement'], ['Enhancement', 'Proposals.'], ['Proposals.', 'Python'], ['Python', 'Software'], ['Software', 'Foundation.'], ['Foundation.', 'Retrieved'], ['Retrieved', 'February'], ['February', '.'], ['.', '^'], ['^', '\"PEP'], ['\"PEP', '\".'], ['\".', 'Python.org.'], ['Python.org.', 'Retrieved'], ['Retrieved', 'December'], ['December', '.'], ['.', '^'], ['^', '\"division\".'], ['\"division\".', 'python.org.'], ['python.org.', '^'], ['^', '\"PEP'], ['\"PEP', '--'], ['--', 'A'], ['A', 'dedicated'], ['dedicated', 'infix'], ['infix', 'operator'], ['operator', 'for'], ['for', 'matrix'], ['matrix', 'multiplication\".'], ['multiplication\".', 'python.org.'], ['python.org.', 'Retrieved'], ['Retrieved', 'January'], ['January', '.'], ['.', '^'], ['^', '\"Python'], ['\"Python', '.'], ['.', '.'], ['.', 'Release'], ['Release', 'and'], ['and', 'Changelog\".'], ['Changelog\".', 'python.org.'], ['python.org.', 'Retrieved'], ['Retrieved', 'January'], ['January', '.'], ['.', '^'], ['^', '\"Chapter'], ['\"Chapter', '.'], ['.', 'Expressions'], ['Expressions', '-'], ['-', '.'], ['.', '.'], ['.', '.'], ['.', 'Numerical'], ['Numerical', 'Equality'], ['Equality', 'Operators'], ['Operators', '=='], ['==', 'and!=\".'], ['and!=\".', 'Oracle'], ['Oracle', 'Corporation.'], ['Corporation.', 'Retrieved'], ['Retrieved', 'August'], ['August', '.'], ['.', '^'], ['^', '\"Chapter'], ['\"Chapter', '.'], ['.', 'Expressions'], ['Expressions', '-'], ['-', '.'], ['.', '.'], ['.', '.'], ['.', 'Reference'], ['Reference', 'Equality'], ['Equality', 'Operators'], ['Operators', '=='], ['==', 'and!=\".'], ['and!=\".', 'Oracle'], ['Oracle', 'Corporation.'], ['Corporation.', 'Retrieved'], ['Retrieved', 'August'], ['August', '.'], ['.', '^'], ['^', 'van'], ['van', 'Rossum,'], ['Rossum,', 'Guido;'], ['Guido;', 'Hettinger,'], ['Hettinger,', 'Raymond'], ['Raymond', '('], ['(', 'February'], ['February', ').'], [').', '\"PEP'], ['\"PEP', 'Conditional'], ['Conditional', 'Expressions\".'], ['Expressions\".', 'Python'], ['Python', 'Enhancement'], ['Enhancement', 'Proposals.'], ['Proposals.', 'Python'], ['Python', 'Software'], ['Software', 'Foundation.'], ['Foundation.', 'Retrieved'], ['Retrieved', 'July'], ['July', '.'], ['.', '^'], ['^', '\"'], ['\"', '.'], ['.', 'Built-in'], ['Built-in', 'Types'], ['Types', 'Python'], ['Python', '.'], ['.', '.'], ['.', 'rc'], ['rc', 'documentation\".'], ['documentation\".', 'python.org.'], ['python.org.', 'Retrieved'], ['Retrieved', 'October'], ['October', '.'], ['.', '^'], ['^', 'a'], ['a', 'b'], ['b', '\"PEP'], ['\"PEP', '--'], ['--', 'Literal'], ['Literal', 'String'], ['String', 'Interpolation\".'], ['Interpolation\".', 'python.org.'], ['python.org.', 'Retrieved'], ['Retrieved', 'March'], ['March', '.'], ['.', '^'], ['^', '\"Why'], ['\"Why', 'must'], ['must', \"'self'\"], [\"'self'\", 'be'], ['be', 'used'], ['used', 'explicitly'], ['explicitly', 'in'], ['in', 'method'], ['method', 'definitions'], ['definitions', 'and'], ['and', 'calls?\".'], ['calls?\".', 'Design'], ['Design', 'and'], ['and', 'History'], ['History', 'FAQ.'], ['FAQ.', 'Python'], ['Python', 'Software'], ['Software', 'Foundation.'], ['Foundation.', 'Retrieved'], ['Retrieved', 'February'], ['February', '.'], ['.', '^'], ['^', '\"The'], ['\"The', 'Python'], ['Python', 'Language'], ['Language', 'Reference,'], ['Reference,', 'section'], ['section', '.'], ['.', '.'], ['.', 'New-style'], ['New-style', 'and'], ['and', 'classic'], ['classic', 'classes,'], ['classes,', 'for'], ['for', 'release'], ['release', '.'], ['.', '.'], ['.', '\".'], ['\".', 'Retrieved'], ['Retrieved', 'January'], ['January', '.'], ['.', '^'], ['^', '\"Type'], ['\"Type', 'hinting'], ['hinting', 'for'], ['for', 'Python\".'], ['Python\".', 'LWN.net.'], ['LWN.net.', 'December'], ['December', '.'], ['.', 'Retrieved'], ['Retrieved', 'May'], ['May', '.'], ['.', '^'], ['^', '\"mypy'], ['\"mypy', '-'], ['-', 'Optional'], ['Optional', 'Static'], ['Static', 'Typing'], ['Typing', 'for'], ['for', 'Python\".'], ['Python\".', 'Retrieved'], ['Retrieved', 'January'], ['January', '.'], ['.', '^'], ['^', 'Zadka,'], ['Zadka,', 'Moshe;'], ['Moshe;', 'van'], ['van', 'Rossum,'], ['Rossum,', 'Guido'], ['Guido', '('], ['(', 'March'], ['March', ').'], [').', '\"PEP'], ['\"PEP', 'Unifying'], ['Unifying', 'Long'], ['Long', 'Integers'], ['Integers', 'and'], ['and', 'Integers\".'], ['Integers\".', 'Python'], ['Python', 'Enhancement'], ['Enhancement', 'Proposals.'], ['Proposals.', 'Python'], ['Python', 'Software'], ['Software', 'Foundation.'], ['Foundation.', 'Retrieved'], ['Retrieved', 'September'], ['September', '.'], ['.', '^'], ['^', '\"PEP'], ['\"PEP', '--'], ['--', 'A'], ['A', 'dedicated'], ['dedicated', 'infix'], ['infix', 'operator'], ['operator', 'for'], ['for', 'matrix'], ['matrix', 'multiplication\".'], ['multiplication\".', 'python.org.'], ['python.org.', '^'], ['^', '\"The'], ['\"The', 'tilde'], ['tilde', 'operator'], ['operator', 'in'], ['in', 'Python'], ['Python', '-'], ['-', 'Stackoverflow\".'], ['Stackoverflow\".', 'stackoverflow.com.'], ['stackoverflow.com.', '^'], ['^', '\"BitwiseOperators'], ['\"BitwiseOperators', '-'], ['-', 'Python'], ['Python', 'Wiki\".'], ['Wiki\".', 'wiki.python.org.'], ['wiki.python.org.', '^'], ['^', 'Zadka,'], ['Zadka,', 'Moshe;'], ['Moshe;', 'van'], ['van', 'Rossum,'], ['Rossum,', 'Guido'], ['Guido', '('], ['(', 'March'], ['March', ').'], [').', '\"PEP'], ['\"PEP', 'Changing'], ['Changing', 'the'], ['the', 'Division'], ['Division', 'Operator\".'], ['Operator\".', 'Python'], ['Python', 'Enhancement'], ['Enhancement', 'Proposals.'], ['Proposals.', 'Python'], ['Python', 'Software'], ['Software', 'Foundation.'], ['Foundation.', 'Retrieved'], ['Retrieved', 'October'], ['October', '.'], ['.', '^'], ['^', '\"Why'], ['\"Why', \"Python's\"], [\"Python's\", 'Integer'], ['Integer', 'Division'], ['Division', 'Floors\".'], ['Floors\".', 'Retrieved'], ['Retrieved', 'August'], ['August', '.'], ['.', '^'], ['^', '\"round\",'], ['\"round\",', 'The'], ['The', 'Python'], ['Python', 'standard'], ['standard', 'library,'], ['library,', 'release'], ['release', '.'], ['.', ','], [',', ':'], [':', 'Built-in'], ['Built-in', 'functions,'], ['functions,', 'retrieved'], ['retrieved', 'August'], ['August', '^'], ['^', '\"round\",'], ['\"round\",', 'The'], ['The', 'Python'], ['Python', 'standard'], ['standard', 'library,'], ['library,', 'release'], ['release', '.'], ['.', ','], [',', ':'], [':', 'Built-in'], ['Built-in', 'functions,'], ['functions,', 'retrieved'], ['retrieved', 'August'], ['August', '^'], ['^', 'Python'], ['Python', 'Essential'], ['Essential', 'Reference,'], ['Reference,', 'David'], ['David', 'M.'], ['M.', 'Beazley'], ['Beazley', '^'], ['^', '\"Built-in'], ['\"Built-in', 'Type\".'], ['Type\".', 'docs.python.org.'], ['docs.python.org.', '^'], ['^', 'Batista,'], ['Batista,', 'Facundo.'], ['Facundo.', '\"PEP'], ['\"PEP', '--'], ['--', 'Decimal'], ['Decimal', 'Data'], ['Data', 'Type\".'], ['Type\".', 'Python.org.'], ['Python.org.', 'Retrieved'], ['Retrieved', 'September'], ['September', '.'], ['.', '^'], ['^', '\"What\\'s'], ['\"What\\'s', 'New'], ['New', 'in'], ['in', 'Python'], ['Python', '.'], ['.', 'Python'], ['Python', 'v'], ['v', '.'], ['.', '.'], ['.', 'documentation\".'], ['documentation\".', 'docs.python.org.'], ['docs.python.org.', 'Retrieved'], ['Retrieved', 'September'], ['September', '.'], ['.', '^'], ['^', 'Piotrowski,'], ['Piotrowski,', 'Przemyslaw'], ['Przemyslaw', '(July'], ['(July', ').'], [').', '\"Build'], ['\"Build', 'a'], ['a', 'Rapid'], ['Rapid', 'Web'], ['Web', 'Development'], ['Development', 'Environment'], ['Environment', 'for'], ['for', 'Python'], ['Python', 'Server'], ['Server', 'Pages'], ['Pages', 'and'], ['and', 'Oracle\".'], ['Oracle\".', 'Oracle'], ['Oracle', 'Technology'], ['Technology', 'Network.'], ['Network.', 'Oracle.'], ['Oracle.', 'Retrieved'], ['Retrieved', 'March'], ['March', '.'], ['.', '^'], ['^', 'Batista,'], ['Batista,', 'Facundo'], ['Facundo', '('], ['(', 'October'], ['October', ').'], [').', '\"PEP'], ['\"PEP', 'Decimal'], ['Decimal', 'Data'], ['Data', 'Type\".'], ['Type\".', 'Python'], ['Python', 'Enhancement'], ['Enhancement', 'Proposals.'], ['Proposals.', 'Python'], ['Python', 'Software'], ['Software', 'Foundation.'], ['Foundation.', 'Retrieved'], ['Retrieved', 'November'], ['November', '.'], ['.', '^'], ['^', 'Eby,'], ['Eby,', 'Phillip'], ['Phillip', 'J.'], ['J.', '('], ['(', 'December'], ['December', ').'], [').', '\"PEP'], ['\"PEP', 'Python'], ['Python', 'Web'], ['Web', 'Server'], ['Server', 'Gateway'], ['Gateway', 'Interface'], ['Interface', 'v'], ['v', '.'], ['.', '\".'], ['\".', 'Python'], ['Python', 'Enhancement'], ['Enhancement', 'Proposals.'], ['Proposals.', 'Python'], ['Python', 'Software'], ['Software', 'Foundation.'], ['Foundation.', 'Retrieved'], ['Retrieved', 'February'], ['February', '.'], ['.', '^'], ['^', 'Debill,'], ['Debill,', 'Erik.'], ['Erik.', '\"Module'], ['\"Module', 'Counts\".'], ['Counts\".', 'ModuleCounts.'], ['ModuleCounts.', 'Retrieved'], ['Retrieved', 'September'], ['September', '.'], ['.', '^'], ['^', 'Enthought,'], ['Enthought,', 'Canopy.'], ['Canopy.', '\"Canopy\".'], ['\"Canopy\".', 'www.enthought.com.'], ['www.enthought.com.', 'Retrieved'], ['Retrieved', 'August'], ['August', '.'], ['.', '^'], ['^', 'van'], ['van', 'Rossum,'], ['Rossum,', 'Guido'], ['Guido', '('], ['(', 'June'], ['June', ').'], [').', '\"PEP'], ['\"PEP', 'Style'], ['Style', 'Guide'], ['Guide', 'for'], ['for', 'C'], ['C', 'Code\".'], ['Code\".', 'Python'], ['Python', 'Enhancement'], ['Enhancement', 'Proposals.'], ['Proposals.', 'Python'], ['Python', 'Software'], ['Software', 'Foundation.'], ['Foundation.', 'Retrieved'], ['Retrieved', 'November'], ['November', '.'], ['.', '^'], ['^', '\"CPython'], ['\"CPython', 'byte'], ['byte', 'code\".'], ['code\".', 'Docs.python.org.'], ['Docs.python.org.', 'Retrieved'], ['Retrieved', 'February'], ['February', '.'], ['.', '^'], ['^', '\"Python'], ['\"Python', '.'], ['.', 'internals\"'], ['internals\"', '(PDF).'], ['(PDF).', 'Retrieved'], ['Retrieved', 'April'], ['April', '.'], ['.', '^'], ['^', '\"An'], ['\"An', 'Interview'], ['Interview', 'with'], ['with', 'Guido'], ['Guido', 'van'], ['van', 'Rossum\".'], ['Rossum\".', 'Oreilly.com.'], ['Oreilly.com.', 'Retrieved'], ['Retrieved', 'November'], ['November', '.'], ['.', '^'], ['^', '\"PyPy'], ['\"PyPy', 'compatibility\".'], ['compatibility\".', 'Pypy.org.'], ['Pypy.org.', 'Retrieved'], ['Retrieved', 'December'], ['December', '.'], ['.', '^'], ['^', '\"speed'], ['\"speed', 'comparison'], ['comparison', 'between'], ['between', 'CPython'], ['CPython', 'and'], ['and', 'Pypy\".'], ['Pypy\".', 'Speed.pypy.org.'], ['Speed.pypy.org.', 'Retrieved'], ['Retrieved', 'December'], ['December', '.'], ['.', '^'], ['^', '\"STM'], ['\"STM', 'with'], ['with', 'threads\".'], ['threads\".', 'Morepypy.blogspot.be.'], ['Morepypy.blogspot.be.', 'June'], ['June', '.'], ['.', 'Retrieved'], ['Retrieved', 'December'], ['December', '.'], ['.', '^'], ['^', '\"Application-level'], ['\"Application-level', 'Stackless'], ['Stackless', 'features'], ['features', 'PyPy'], ['PyPy', '.'], ['.', '.'], ['.', 'documentation\".'], ['documentation\".', 'Doc.pypy.org.'], ['Doc.pypy.org.', 'Retrieved'], ['Retrieved', 'July'], ['July', '.'], ['.', '^'], ['^', '\"Plans'], ['\"Plans', 'for'], ['for', 'optimizing'], ['optimizing', 'Python\".'], ['Python\".', 'Google'], ['Google', 'Project'], ['Project', 'Hosting.'], ['Hosting.', 'Google.'], ['Google.', 'December'], ['December', '.'], ['.', 'Retrieved'], ['Retrieved', 'September'], ['September', '.'], ['.', '^'], ['^', '\"Python'], ['\"Python', 'on'], ['on', 'the'], ['the', 'Nokia'], ['Nokia', 'N'], ['N', '\".'], ['\".', 'Stochastic'], ['Stochastic', 'Geometry.'], ['Geometry.', '^'], ['^', '\"Nuitka'], ['\"Nuitka', 'Home'], ['Home', '|'], ['|', 'Nuitka'], ['Nuitka', 'Home\".'], ['Home\".', 'nuitka.net.'], ['nuitka.net.', 'Retrieved'], ['Retrieved', 'August'], ['August', '.'], ['.', '^'], ['^', 'Murri,'], ['Murri,', 'Riccardo'], ['Riccardo', '('], ['(', ').'], [').', 'Performance'], ['Performance', 'of'], ['of', 'Python'], ['Python', 'runtimes'], ['runtimes', 'on'], ['on', 'a'], ['a', 'non-numeric'], ['non-numeric', 'scientific'], ['scientific', 'code.'], ['code.', 'European'], ['European', 'Conference'], ['Conference', 'on'], ['on', 'Python'], ['Python', 'in'], ['in', 'Science'], ['Science', '(EuroSciPy).'], ['(EuroSciPy).', 'arXiv:'], ['arXiv:', '.'], ['.', '.'], ['.', '^'], ['^', 'a'], ['a', 'b'], ['b', 'Warsaw,'], ['Warsaw,', 'Barry;'], ['Barry;', 'Hylton,'], ['Hylton,', 'Jeremy;'], ['Jeremy;', 'Goodger,'], ['Goodger,', 'David'], ['David', '('], ['(', 'June'], ['June', ').'], [').', '\"PEP'], ['\"PEP', 'PEP'], ['PEP', 'Purpose'], ['Purpose', 'and'], ['and', 'Guidelines\".'], ['Guidelines\".', 'Python'], ['Python', 'Enhancement'], ['Enhancement', 'Proposals.'], ['Proposals.', 'Python'], ['Python', 'Software'], ['Software', 'Foundation.'], ['Foundation.', 'Retrieved'], ['Retrieved', 'April'], ['April', '.'], ['.', '^'], ['^', 'Cannon,'], ['Cannon,', 'Brett.'], ['Brett.', '\"Guido,'], ['\"Guido,', 'Some'], ['Some', 'Guys,'], ['Guys,', 'and'], ['and', 'a'], ['a', 'Mailing'], ['Mailing', 'List:'], ['List:', 'How'], ['How', 'Python'], ['Python', 'is'], ['is', 'Developed\".'], ['Developed\".', 'python.org.'], ['python.org.', 'Python'], ['Python', 'Software'], ['Software', 'Foundation.'], ['Foundation.', 'Archived'], ['Archived', 'from'], ['from', 'the'], ['the', 'original'], ['original', 'on'], ['on', 'June'], ['June', '.'], ['.', 'Retrieved'], ['Retrieved', 'June'], ['June', '.'], ['.', '^'], ['^', '\"Python'], ['\"Python', \"Developer's\"], [\"Developer's\", 'Guide\".'], ['Guide\".', '^'], ['^', 'Norwitz,'], ['Norwitz,', 'Neal'], ['Neal', '('], ['(', 'April'], ['April', ').'], [').', '\"'], ['\"', 'Python-Dev'], ['Python-Dev', 'Release'], ['Release', 'Schedules'], ['Schedules', '(was'], ['(was', 'Stability'], ['Stability', '&'], ['&', 'change)\".'], ['change)\".', 'Retrieved'], ['Retrieved', 'June'], ['June', '.'], ['.', '^'], ['^', 'Aahz;'], ['Aahz;', 'Baxter,'], ['Baxter,', 'Anthony'], ['Anthony', '('], ['(', 'March'], ['March', ').'], [').', '\"PEP'], ['\"PEP', 'Bug'], ['Bug', 'Fix'], ['Fix', 'Releases\".'], ['Releases\".', 'Python'], ['Python', 'Enhancement'], ['Enhancement', 'Proposals.'], ['Proposals.', 'Python'], ['Python', 'Software'], ['Software', 'Foundation.'], ['Foundation.', 'Retrieved'], ['Retrieved', 'June'], ['June', '.'], ['.', '^'], ['^', '\"Python'], ['\"Python', 'Buildbot\".'], ['Buildbot\".', 'Python'], ['Python', 'Developers'], ['Developers', 'Guide.'], ['Guide.', 'Python'], ['Python', 'Software'], ['Software', 'Foundation.'], ['Foundation.', 'Retrieved'], ['Retrieved', 'September'], ['September', '.'], ['.', '^'], ['^', 'DeBill,'], ['DeBill,', 'Erik.'], ['Erik.', '\"Module'], ['\"Module', 'Counts\".'], ['Counts\".', 'www.modulecounts.com.'], ['www.modulecounts.com.', 'Retrieved'], ['Retrieved', 'August'], ['August', '.'], ['.', '^'], ['^', 'a'], ['a', 'b'], ['b', '\"Whetting'], ['\"Whetting', 'Your'], ['Your', 'Appetite\".'], ['Appetite\".', 'The'], ['The', 'Python'], ['Python', 'Tutorial.'], ['Tutorial.', 'Python'], ['Python', 'Software'], ['Software', 'Foundation.'], ['Foundation.', 'Retrieved'], ['Retrieved', 'February'], ['February', '.'], ['.', '^'], ['^', '\"In'], ['\"In', 'Python,'], ['Python,', 'should'], ['should', 'I'], ['I', 'use'], ['use', 'else'], ['else', 'after'], ['after', 'a'], ['a', 'return'], ['return', 'in'], ['in', 'an'], ['an', 'if'], ['if', 'block?\".'], ['block?\".', 'Stack'], ['Stack', 'Overflow.'], ['Overflow.', 'Stack'], ['Stack', 'Exchange.'], ['Exchange.', 'February'], ['February', '.'], ['.', 'Retrieved'], ['Retrieved', 'May'], ['May', '.'], ['.', '^'], ['^', 'Lutz,'], ['Lutz,', 'Mark'], ['Mark', '('], ['(', ').'], [').', 'Learning'], ['Learning', 'Python:'], ['Python:', 'Powerful'], ['Powerful', 'Object-Oriented'], ['Object-Oriented', 'Programming.'], ['Programming.', \"O'Reilly\"], [\"O'Reilly\", 'Media,'], ['Media,', 'Inc.'], ['Inc.', 'p.'], ['p.', '.'], ['.', 'ISBN'], ['ISBN', '.'], ['.', '^'], ['^', 'Fehily,'], ['Fehily,', 'Chris'], ['Chris', '('], ['(', ').'], [').', 'Python.'], ['Python.', 'Peachpit'], ['Peachpit', 'Press.'], ['Press.', 'p.xv.'], ['p.xv.', 'ISBN'], ['ISBN', '.'], ['.', '^'], ['^', '\"TIOBE'], ['\"TIOBE', 'Index\".'], ['Index\".', 'TIOBE'], ['TIOBE', '-'], ['-', 'The'], ['The', 'Software'], ['Software', 'Quality'], ['Quality', 'Company.'], ['Company.', 'Retrieved'], ['Retrieved', 'March'], ['March', '.'], ['.', '^'], ['^', 'TIOBE'], ['TIOBE', 'Software'], ['Software', 'Index'], ['Index', '('], ['(', ').'], [').', '\"TIOBE'], ['\"TIOBE', 'Programming'], ['Programming', 'Community'], ['Community', 'Index'], ['Index', 'Python\".'], ['Python\".', 'Retrieved'], ['Retrieved', 'September'], ['September', '.'], ['.', '^'], ['^', 'Prechelt,'], ['Prechelt,', 'Lutz'], ['Lutz', '('], ['(', 'March'], ['March', ').'], [').', '\"An'], ['\"An', 'empirical'], ['empirical', 'comparison'], ['comparison', 'of'], ['of', 'C,'], ['C,', 'C'], ['C', ','], [',', 'Java,'], ['Java,', 'Perl,'], ['Perl,', 'Python,'], ['Python,', 'Rexx,'], ['Rexx,', 'and'], ['and', 'Tcl\"'], ['Tcl\"', '(PDF).'], ['(PDF).', 'Retrieved'], ['Retrieved', 'August'], ['August', '.'], ['.', '^'], ['^', '\"Quotes'], ['\"Quotes', 'about'], ['about', 'Python\".'], ['Python\".', 'Python'], ['Python', 'Software'], ['Software', 'Foundation.'], ['Foundation.', 'Retrieved'], ['Retrieved', 'January'], ['January', '.'], ['.', '^'], ['^', '\"Organizations'], ['\"Organizations', 'Using'], ['Using', 'Python\".'], ['Python\".', 'Python'], ['Python', 'Software'], ['Software', 'Foundation.'], ['Foundation.', 'Retrieved'], ['Retrieved', 'January'], ['January', '.'], ['.', '^'], ['^', '\"Python:'], ['\"Python:', 'the'], ['the', 'holy'], ['holy', 'grail'], ['grail', 'of'], ['of', 'programming\".'], ['programming\".', 'CERN'], ['CERN', 'Bulletin.'], ['Bulletin.', 'CERN'], ['CERN', 'Publications'], ['Publications', '('], ['(', '/'], ['/', ').'], [').', 'July'], ['July', '.'], ['.', 'Retrieved'], ['Retrieved', 'February'], ['February', '.'], ['.', '^'], ['^', 'Shafer,'], ['Shafer,', 'Daniel'], ['Daniel', 'G.'], ['G.', '('], ['(', 'January'], ['January', ').'], [').', '\"Python'], ['\"Python', 'Streamlines'], ['Streamlines', 'Space'], ['Space', 'Shuttle'], ['Shuttle', 'Mission'], ['Mission', 'Design\".'], ['Design\".', 'Python'], ['Python', 'Software'], ['Software', 'Foundation.'], ['Foundation.', 'Retrieved'], ['Retrieved', 'November'], ['November', '.'], ['.', '^'], ['^', 'Fortenberry,'], ['Fortenberry,', 'Tim'], ['Tim', '('], ['(', 'January'], ['January', ').'], [').', '\"Industrial'], ['\"Industrial', 'Light'], ['Light', '&'], ['&', 'Magic'], ['Magic', 'Runs'], ['Runs', 'on'], ['on', 'Python\".'], ['Python\".', 'Python'], ['Python', 'Software'], ['Software', 'Foundation.'], ['Foundation.', 'Retrieved'], ['Retrieved', 'February'], ['February', '.'], ['.', '^'], ['^', 'Taft,'], ['Taft,', 'Darryl'], ['Darryl', 'K.'], ['K.', '('], ['(', 'March'], ['March', ').'], [').', '\"Python'], ['\"Python', 'Slithers'], ['Slithers', 'into'], ['into', 'Systems\".'], ['Systems\".', 'eWeek.com.'], ['eWeek.com.', 'Ziff'], ['Ziff', 'Davis'], ['Davis', 'Holdings.'], ['Holdings.', 'Retrieved'], ['Retrieved', 'September'], ['September', '.'], ['.', '^'], ['^', '\"Usage'], ['\"Usage', 'statistics'], ['statistics', 'and'], ['and', 'market'], ['market', 'share'], ['share', 'of'], ['of', 'Python'], ['Python', 'for'], ['for', 'websites\".'], ['websites\".', '.'], ['.', 'Retrieved'], ['Retrieved', 'December'], ['December', '.'], ['.', '^'], ['^', 'Oliphant,'], ['Oliphant,', 'Travis'], ['Travis', '('], ['(', ').'], [').', '\"Python'], ['\"Python', 'for'], ['for', 'Scientific'], ['Scientific', 'Computing\".'], ['Computing\".', 'Computing'], ['Computing', 'in'], ['in', 'Science'], ['Science', 'and'], ['and', 'Engineering.'], ['Engineering.', '^'], ['^', 'Millman,'], ['Millman,', 'K.'], ['K.', 'Jarrod;'], ['Jarrod;', 'Aivazis,'], ['Aivazis,', 'Michael'], ['Michael', '('], ['(', ').'], [').', '\"Python'], ['\"Python', 'for'], ['for', 'Scientists'], ['Scientists', 'and'], ['and', 'Engineers\".'], ['Engineers\".', 'Computing'], ['Computing', 'in'], ['in', 'Science'], ['Science', 'and'], ['and', 'Engineering.'], ['Engineering.', '('], ['(', '):'], ['):', '.'], ['.', '^'], ['^', 'Chekanov,'], ['Chekanov,', 'S.'], ['S.', '(April'], ['(April', ').'], [').', 'Numeric'], ['Numeric', 'Computation'], ['Computation', 'and'], ['and', 'Statistical'], ['Statistical', 'Data'], ['Data', 'Analysis'], ['Analysis', 'on'], ['on', 'the'], ['the', 'Java'], ['Java', 'Platform.'], ['Platform.', 'London:'], ['London:', 'Springer.'], ['Springer.', 'p.'], ['p.', '.'], ['.', 'ISBN'], ['ISBN', '-'], ['-', '-'], ['-', '-'], ['-', '-'], ['-', '.'], ['.', '^'], ['^', 'Chekanov,'], ['Chekanov,', 'S.'], ['S.', '('], ['(', ').'], [').', 'Scientific'], ['Scientific', 'Data'], ['Data', 'Analysis'], ['Analysis', 'using'], ['using', 'Jython'], ['Jython', 'Scripting'], ['Scripting', 'and'], ['and', 'Java.'], ['Java.', 'London:'], ['London:', 'Springer.'], ['Springer.', 'p.'], ['p.', '.'], ['.', 'ISBN'], ['ISBN', '-'], ['-', '-'], ['-', '-'], ['-', '-'], ['-', '.'], ['.', '^'], ['^', '\"Installers'], ['\"Installers', 'for'], ['for', 'GIMP'], ['GIMP', 'for'], ['for', 'Windows'], ['Windows', '-'], ['-', 'Frequently'], ['Frequently', 'Asked'], ['Asked', 'Questions\".'], ['Questions\".', 'July'], ['July', '.'], ['.', 'Retrieved'], ['Retrieved', 'July'], ['July', '.'], ['.', '^'], ['^', '\"jasc'], ['\"jasc', 'psp'], ['psp', 'components\".'], ['components\".', 'Archived'], ['Archived', 'from'], ['from', 'the'], ['the', 'original'], ['original', 'on'], ['on', 'March'], ['March', '.'], ['.', '^'], ['^', '\"About'], ['\"About', 'getting'], ['getting', 'started'], ['started', 'with'], ['with', 'writing'], ['writing', 'geoprocessing'], ['geoprocessing', 'scripts\".'], ['scripts\".', 'ArcGIS'], ['ArcGIS', 'Desktop'], ['Desktop', 'Help'], ['Help', '.'], ['.', '.'], ['.', 'Environmental'], ['Environmental', 'Systems'], ['Systems', 'Research'], ['Research', 'Institute.'], ['Institute.', 'November'], ['November', '.'], ['.', 'Retrieved'], ['Retrieved', 'February'], ['February', '.'], ['.', '^'], ['^', 'CCP'], ['CCP', 'porkbelly'], ['porkbelly', '('], ['(', 'August'], ['August', ').'], [').', '\"Stackless'], ['\"Stackless', 'Python'], ['Python', '.'], ['.', '\".'], ['\".', 'EVE'], ['EVE', 'Community'], ['Community', 'Dev'], ['Dev', 'Blogs.'], ['Blogs.', 'CCP'], ['CCP', 'Games.'], ['Games.', 'As'], ['As', 'you'], ['you', 'may'], ['may', 'know,'], ['know,', 'EVE'], ['EVE', 'has'], ['has', 'at'], ['at', 'its'], ['its', 'core'], ['core', 'the'], ['the', 'programming'], ['programming', 'language'], ['language', 'known'], ['known', 'as'], ['as', 'Stackless'], ['Stackless', 'Python.'], ['Python.', '^'], ['^', 'Caudill,'], ['Caudill,', 'Barry'], ['Barry', '('], ['(', 'September'], ['September', ').'], [').', '\"Modding'], ['\"Modding', 'Sid'], ['Sid', \"Meier's\"], [\"Meier's\", 'Civilization'], ['Civilization', 'IV\".'], ['IV\".', 'Sid'], ['Sid', \"Meier's\"], [\"Meier's\", 'Civilization'], ['Civilization', 'IV'], ['IV', 'Developer'], ['Developer', 'Blog.'], ['Blog.', 'Firaxis'], ['Firaxis', 'Games.'], ['Games.', 'Archived'], ['Archived', 'from'], ['from', 'the'], ['the', 'original'], ['original', 'on'], ['on', 'August'], ['August', '.'], ['.', 'we'], ['we', 'created'], ['created', 'three'], ['three', 'levels'], ['levels', 'of'], ['of', 'tools'], ['tools', '...'], ['...', 'The'], ['The', 'next'], ['next', 'level'], ['level', 'offers'], ['offers', 'Python'], ['Python', 'and'], ['and', 'XML'], ['XML', 'support,'], ['support,', 'letting'], ['letting', 'modders'], ['modders', 'with'], ['with', 'more'], ['more', 'experience'], ['experience', 'manipulate'], ['manipulate', 'the'], ['the', 'game'], ['game', 'world'], ['world', 'and'], ['and', 'everything'], ['everything', 'in'], ['in', 'it.'], ['it.', '^'], ['^', '\"Python'], ['\"Python', 'Language'], ['Language', 'Guide'], ['Guide', '(v'], ['(v', '.'], ['.', ')\".'], [')\".', 'Google'], ['Google', 'Documents'], ['Documents', 'List'], ['List', 'Data'], ['Data', 'API'], ['API', 'v'], ['v', '.'], ['.', '.'], ['.', 'Google.'], ['Google.', 'Archived'], ['Archived', 'from'], ['from', 'the'], ['the', 'original'], ['original', 'on'], ['on', 'August'], ['August', '.'], ['.', '^'], ['^', '\"Python'], ['\"Python', '-'], ['-', 'Best'], ['Best', 'Programming'], ['Programming', 'Language'], ['Language', 'for'], ['for', 'Algorithmic'], ['Algorithmic', 'Trading'], ['Trading', 'Systems\".'], ['Systems\".', 'March'], ['March', '.'], ['.', 'Retrieved'], ['Retrieved', 'October'], ['October', '.'], ['.', '^'], ['^', '\"Trading'], ['\"Trading', 'with'], ['with', 'Interactive'], ['Interactive', 'Brokers'], ['Brokers', 'using'], ['using', 'Python:'], ['Python:', 'An'], ['An', 'IBPy'], ['IBPy', 'Tutorial\".'], ['Tutorial\".', 'September'], ['September', '.'], ['.', 'Retrieved'], ['Retrieved', 'October'], ['October', '.'], ['.', '^'], ['^', '\"Python'], ['\"Python', 'for'], ['for', 'Artificial'], ['Artificial', 'Intelligence\".'], ['Intelligence\".', 'Wiki.python.org.'], ['Wiki.python.org.', 'July'], ['July', '.'], ['.', 'Archived'], ['Archived', 'from'], ['from', 'the'], ['the', 'original'], ['original', 'on'], ['on', 'November'], ['November', '.'], ['.', 'Retrieved'], ['Retrieved', 'December'], ['December', '.'], ['.', '^'], ['^', 'Paine,'], ['Paine,', 'Jocelyn,'], ['Jocelyn,', 'ed.'], ['ed.', '(August'], ['(August', ').'], [').', '\"AI'], ['\"AI', 'in'], ['in', 'Python\".'], ['Python\".', 'AI'], ['AI', 'Expert'], ['Expert', 'Newsletter.'], ['Newsletter.', 'Amzi!.'], ['Amzi!.', 'Retrieved'], ['Retrieved', 'February'], ['February', '.'], ['.', '^'], ['^', '\"PyAIML'], ['\"PyAIML', '.'], ['.', '.'], ['.', ':'], [':', 'Python'], ['Python', 'Package'], ['Package', 'Index\".'], ['Index\".', 'Pypi.python.org.'], ['Pypi.python.org.', 'Retrieved'], ['Retrieved', 'July'], ['July', '.'], ['.', '^'], ['^', 'Russell,'], ['Russell,', 'Stuart'], ['Stuart', 'J.'], ['J.', '&'], ['&', 'Norvig,'], ['Norvig,', 'Peter'], ['Peter', '('], ['(', ').'], [').', 'Artificial'], ['Artificial', 'Intelligence:'], ['Intelligence:', 'A'], ['A', 'Modern'], ['Modern', 'Approach'], ['Approach', '('], ['(', 'rd'], ['rd', 'ed.).'], ['ed.).', 'Upper'], ['Upper', 'Saddle'], ['Saddle', 'River,'], ['River,', 'NJ:'], ['NJ:', 'Prentice'], ['Prentice', 'Hall.'], ['Hall.', 'p.'], ['p.', '.'], ['.', 'ISBN'], ['ISBN', '-'], ['-', '-'], ['-', '-'], ['-', '-'], ['-', '.'], ['.', 'Retrieved'], ['Retrieved', 'February'], ['February', '.'], ['.', '^'], ['^', '\"Natural'], ['\"Natural', 'Language'], ['Language', 'Toolkit\".'], ['Toolkit\".', '^'], ['^', '\"Immunity:'], ['\"Immunity:', 'Knowing'], ['Knowing', \"You're\"], [\"You're\", 'Secure\".'], ['Secure\".', '^'], ['^', '\"Corelabs'], ['\"Corelabs', 'site\".'], ['site\".', '^'], ['^', '\"What'], ['\"What', 'is'], ['is', 'Sugar?\".'], ['Sugar?\".', 'Sugar'], ['Sugar', 'Labs.'], ['Labs.', 'Retrieved'], ['Retrieved', 'February'], ['February', '.'], ['.', '^'], ['^', '\"'], ['\"', '.'], ['.', 'New'], ['New', 'Features'], ['Features', 'and'], ['and', 'Fixes\".'], ['Fixes\".', 'LibreOffice.org.'], ['LibreOffice.org.', 'The'], ['The', 'Document'], ['Document', 'Foundation.'], ['Foundation.', '.'], ['.', 'Retrieved'], ['Retrieved', 'February'], ['February', '.'], ['.', '^'], ['^', '\"Gotchas'], ['\"Gotchas', 'for'], ['for', 'Python'], ['Python', 'Users\".'], ['Users\".', 'boo.codehaus.org.'], ['boo.codehaus.org.', 'Codehaus'], ['Codehaus', 'Foundation.'], ['Foundation.', 'Retrieved'], ['Retrieved', 'November'], ['November', '.'], ['.', '^'], ['^', 'Esterbrook,'], ['Esterbrook,', 'Charles.'], ['Charles.', '\"Acknowledgements\".'], ['\"Acknowledgements\".', 'cobra-language.com.'], ['cobra-language.com.', 'Cobra'], ['Cobra', 'Language.'], ['Language.', 'Retrieved'], ['Retrieved', 'April'], ['April', '.'], ['.', '^'], ['^', 'Esterbrook,'], ['Esterbrook,', 'Charles.'], ['Charles.', '\"Comparison'], ['\"Comparison', 'to'], ['to', 'Python\".'], ['Python\".', 'cobra-language.com.'], ['cobra-language.com.', 'Cobra'], ['Cobra', 'Language.'], ['Language.', 'Retrieved'], ['Retrieved', 'April'], ['April', '.'], ['.', '^'], ['^', '\"Proposals:'], ['\"Proposals:', 'iterators'], ['iterators', 'and'], ['and', 'generators'], ['generators', 'ES'], ['ES', 'Wiki'], ['Wiki', '\".'], ['\".', 'wiki.ecmascript.org.'], ['wiki.ecmascript.org.', 'Retrieved'], ['Retrieved', 'November'], ['November', '.'], ['.', '^'], ['^', 'Kincaid,'], ['Kincaid,', 'Jason'], ['Jason', '('], ['(', 'November'], ['November', ').'], [').', '\"Google\\'s'], ['\"Google\\'s', 'Go:'], ['Go:', 'A'], ['A', 'New'], ['New', 'Programming'], ['Programming', 'Language'], ['Language', \"That's\"], [\"That's\", 'Python'], ['Python', 'Meets'], ['Meets', 'C'], ['C', '\".'], ['\".', 'TechCrunch.'], ['TechCrunch.', 'Retrieved'], ['Retrieved', 'January'], ['January', '.'], ['.', '^'], ['^', 'Strachan,'], ['Strachan,', 'James'], ['James', '('], ['(', 'August'], ['August', ').'], [').', '\"Groovy'], ['\"Groovy', 'the'], ['the', 'birth'], ['birth', 'of'], ['of', 'a'], ['a', 'new'], ['new', 'dynamic'], ['dynamic', 'language'], ['language', 'for'], ['for', 'the'], ['the', 'Java'], ['Java', 'platform\".'], ['platform\".', '^'], ['^', 'Lin,'], ['Lin,', 'Mike.'], ['Mike.', '\"The'], ['\"The', 'Whitespace'], ['Whitespace', 'Thing'], ['Thing', 'for'], ['for', 'OCaml\".'], ['OCaml\".', 'Massachusetts'], ['Massachusetts', 'Institute'], ['Institute', 'of'], ['of', 'Technology.'], ['Technology.', 'Retrieved'], ['Retrieved', 'April'], ['April', '.'], ['.', '^'], ['^', '\"An'], ['\"An', 'Interview'], ['Interview', 'with'], ['with', 'the'], ['the', 'Creator'], ['Creator', 'of'], ['of', 'Ruby\".'], ['Ruby\".', 'Linuxdevcenter.com.'], ['Linuxdevcenter.com.', 'Retrieved'], ['Retrieved', 'December'], ['December', '.'], ['.', '^'], ['^', 'Lattner,'], ['Lattner,', 'Chris'], ['Chris', '('], ['(', 'June'], ['June', ').'], [').', '\"Chris'], ['\"Chris', \"Lattner's\"], [\"Lattner's\", 'Homepage\".'], ['Homepage\".', 'Chris'], ['Chris', 'Lattner.'], ['Lattner.', 'Retrieved'], ['Retrieved', 'June'], ['June', '.'], ['.', 'I'], ['I', 'started'], ['started', 'work'], ['work', 'on'], ['on', 'the'], ['the', 'Swift'], ['Swift', 'Programming'], ['Programming', 'Language'], ['Language', 'in'], ['in', 'July'], ['July', 'of'], ['of', '.'], ['.', 'I'], ['I', 'implemented'], ['implemented', 'much'], ['much', 'of'], ['of', 'the'], ['the', 'basic'], ['basic', 'language'], ['language', 'structure,'], ['structure,', 'with'], ['with', 'only'], ['only', 'a'], ['a', 'few'], ['few', 'people'], ['people', 'knowing'], ['knowing', 'of'], ['of', 'its'], ['its', 'existence.'], ['existence.', 'A'], ['A', 'few'], ['few', 'other'], ['other', '(amazing)'], ['(amazing)', 'people'], ['people', 'started'], ['started', 'contributing'], ['contributing', 'in'], ['in', 'earnest'], ['earnest', 'late'], ['late', 'in'], ['in', ','], [',', 'and'], ['and', 'it'], ['it', 'became'], ['became', 'a'], ['a', 'major'], ['major', 'focus'], ['focus', 'for'], ['for', 'the'], ['the', 'Apple'], ['Apple', 'Developer'], ['Developer', 'Tools'], ['Tools', 'group'], ['group', 'in'], ['in', 'July'], ['July', '...'], ['...', 'drawing'], ['drawing', 'ideas'], ['ideas', 'from'], ['from', 'Objective-C,'], ['Objective-C,', 'Rust,'], ['Rust,', 'Haskell,'], ['Haskell,', 'Ruby,'], ['Ruby,', 'Python,'], ['Python,', 'C#,'], ['C#,', 'CLU,'], ['CLU,', 'and'], ['and', 'far'], ['far', 'too'], ['too', 'many'], ['many', 'others'], ['others', 'to'], ['to', 'list.'], ['list.', '^'], ['^', 'Kupries,'], ['Kupries,', 'Andreas;'], ['Andreas;', 'Fellows,'], ['Fellows,', 'Donal'], ['Donal', 'K.'], ['K.', '('], ['(', 'September'], ['September', ').'], [').', '\"TIP'], ['\"TIP', '#'], ['#', ':'], [':', 'TIP'], ['TIP', 'Format\".'], ['Format\".', 'tcl.tk.'], ['tcl.tk.', 'Tcl'], ['Tcl', 'Developer'], ['Developer', 'Xchange.'], ['Xchange.', 'Retrieved'], ['Retrieved', 'November'], ['November', '.'], ['.', '^'], ['^', 'Gustafsson,'], ['Gustafsson,', 'Per;'], ['Per;', 'Niskanen,'], ['Niskanen,', 'Raimo'], ['Raimo', '('], ['(', 'January'], ['January', ').'], [').', '\"EEP'], ['\"EEP', ':'], [':', 'EEP'], ['EEP', 'Purpose'], ['Purpose', 'and'], ['and', 'Guidelines\".'], ['Guidelines\".', 'erlang.org.'], ['erlang.org.', 'Retrieved'], ['Retrieved', 'April'], ['April', '.'], ['.', '^'], ['^', '\"TIOBE'], ['\"TIOBE', 'Programming'], ['Programming', 'Community'], ['Community', 'Index'], ['Index', 'for'], ['for', 'March'], ['March', '\".'], ['\".', 'TIOBE'], ['TIOBE', 'Software.'], ['Software.', 'March'], ['March', '.'], ['.', 'Retrieved'], ['Retrieved', 'March'], ['March', '.'], ['.', 'Further'], ['Further', 'reading'], ['reading', 'edit'], ['edit', 'Downey,'], ['Downey,', 'Allen'], ['Allen', 'B.'], ['B.', '(May'], ['(May', ').'], [').', 'Think'], ['Think', 'Python:'], ['Python:', 'How'], ['How', 'to'], ['to', 'Think'], ['Think', 'Like'], ['Like', 'a'], ['a', 'Computer'], ['Computer', 'Scientist'], ['Scientist', '(Version'], ['(Version', '.'], ['.', '.'], ['.', 'ed.).'], ['ed.).', 'ISBN'], ['ISBN', '-'], ['-', '-'], ['-', '-'], ['-', '-'], ['-', '.'], ['.', 'Hamilton,'], ['Hamilton,', 'Naomi'], ['Naomi', '('], ['(', 'August'], ['August', ').'], [').', '\"The'], ['\"The', 'A-Z'], ['A-Z', 'of'], ['of', 'Programming'], ['Programming', 'Languages:'], ['Languages:', 'Python\".'], ['Python\".', 'Computerworld.'], ['Computerworld.', 'Archived'], ['Archived', 'from'], ['from', 'the'], ['the', 'original'], ['original', 'on'], ['on', 'December'], ['December', '.'], ['.', 'Retrieved'], ['Retrieved', 'March'], ['March', '.'], ['.', 'Lutz,'], ['Lutz,', 'Mark'], ['Mark', '('], ['(', ').'], [').', 'Learning'], ['Learning', 'Python'], ['Python', '('], ['(', 'th'], ['th', 'ed.).'], ['ed.).', \"O'Reilly\"], [\"O'Reilly\", 'Media.'], ['Media.', 'ISBN'], ['ISBN', '-'], ['-', '-'], ['-', '-'], ['-', '-'], ['-', '.'], ['.', 'Pilgrim,'], ['Pilgrim,', 'Mark'], ['Mark', '('], ['(', ').'], [').', 'Dive'], ['Dive', 'Into'], ['Into', 'Python.'], ['Python.', 'Apress.'], ['Apress.', 'ISBN'], ['ISBN', '-'], ['-', '-'], ['-', '-'], ['-', '-'], ['-', '.'], ['.', 'Pilgrim,'], ['Pilgrim,', 'Mark'], ['Mark', '('], ['(', ').'], [').', 'Dive'], ['Dive', 'Into'], ['Into', 'Python'], ['Python', '.'], ['.', 'Apress.'], ['Apress.', 'ISBN'], ['ISBN', '-'], ['-', '-'], ['-', '-'], ['-', '-'], ['-', '.'], ['.', 'Summerfield,'], ['Summerfield,', 'Mark'], ['Mark', '('], ['(', ').'], [').', 'Programming'], ['Programming', 'in'], ['in', 'Python'], ['Python', '('], ['(', 'nd'], ['nd', 'ed.).'], ['ed.).', 'Addison-Wesley'], ['Addison-Wesley', 'Professional.'], ['Professional.', 'ISBN'], ['ISBN', '-'], ['-', '-'], ['-', '-'], ['-', '-'], ['-', '.'], ['.', 'External'], ['External', 'links'], ['links', 'edit'], ['edit', 'Find'], ['Find', 'more'], ['more', 'aboutPython'], ['aboutPython', '(programming'], ['(programming', 'language)at'], ['language)at', \"Wikipedia's\"], [\"Wikipedia's\", 'sister'], ['sister', 'projects'], ['projects', 'Media'], ['Media', 'from'], ['from', 'Wikimedia'], ['Wikimedia', 'Commons'], ['Commons', 'Quotations'], ['Quotations', 'from'], ['from', 'Wikiquote'], ['Wikiquote', 'Textbooks'], ['Textbooks', 'from'], ['from', 'Wikibooks'], ['Wikibooks', 'Learning'], ['Learning', 'resources'], ['resources', 'from'], ['from', 'Wikiversity'], ['Wikiversity', 'Official'], ['Official', 'website'], ['website', 'Python'], ['Python', 'at'], ['at', 'Curlie'], ['Curlie', '(based'], ['(based', 'on'], ['on', 'DMOZ)'], ['DMOZ)', 'v'], ['v', 't'], ['t', 'e'], ['e', 'Programming'], ['Programming', 'languages'], ['languages', 'Comparison'], ['Comparison', 'Timeline'], ['Timeline', 'History'], ['History', 'Assembly'], ['Assembly', 'BASIC'], ['BASIC', 'C'], ['C', 'C'], ['C', 'C#'], ['C#', 'COBOL'], ['COBOL', 'Fortran'], ['Fortran', 'Go'], ['Go', 'Groovy'], ['Groovy', 'Haskell'], ['Haskell', 'Java'], ['Java', 'JavaScript'], ['JavaScript', '(JS)'], ['(JS)', 'Kotlin'], ['Kotlin', 'Lisp'], ['Lisp', 'Lua'], ['Lua', 'Objective-C'], ['Objective-C', 'Pascal'], ['Pascal', 'Perl'], ['Perl', 'PHP'], ['PHP', 'Python'], ['Python', 'Rexx'], ['Rexx', 'Ruby'], ['Ruby', 'Shell'], ['Shell', 'Smalltalk'], ['Smalltalk', 'Swift'], ['Swift', 'Visual'], ['Visual', 'Basic'], ['Basic', '.NET'], ['.NET', '(VB.NET)'], ['(VB.NET)', 'VBScript'], ['VBScript', 'more...'], ['more...', 'Category'], ['Category', 'Lists'], ['Lists', 'Alphabetical'], ['Alphabetical', 'Categorical'], ['Categorical', 'Generational'], ['Generational', 'Non-English-based'], ['Non-English-based', 'v'], ['v', 't'], ['t', 'e'], ['e', 'Python'], ['Python', 'Implementations'], ['Implementations', 'CLPython'], ['CLPython', 'CPython'], ['CPython', 'Cython'], ['Cython', 'MicroPython'], ['MicroPython', 'Numba'], ['Numba', 'IronPython'], ['IronPython', 'Jython'], ['Jython', 'Psyco'], ['Psyco', 'PyPy'], ['PyPy', 'Python'], ['Python', 'for'], ['for', 'S'], ['S', 'Shed'], ['Shed', 'Skin'], ['Skin', 'Stackless'], ['Stackless', 'Python'], ['Python', 'Unladen'], ['Unladen', 'Swallow'], ['Swallow', 'more...'], ['more...', 'IDE'], ['IDE', 'Boa'], ['Boa', 'Eric'], ['Eric', 'Python'], ['Python', 'IDE'], ['IDE', 'IDLE'], ['IDLE', 'PyDev'], ['PyDev', 'SPE'], ['SPE', 'Ninja-IDE'], ['Ninja-IDE', 'more...'], ['more...', 'Topics'], ['Topics', 'WSGI'], ['WSGI', 'software'], ['software', '(list)'], ['(list)', 'Python'], ['Python', 'Software'], ['Software', 'Foundation'], ['Foundation', 'PyCon'], ['PyCon', 'v'], ['v', 't'], ['t', 'e'], ['e', 'Python'], ['Python', 'web'], ['web', 'frameworks'], ['frameworks', 'BlueBream'], ['BlueBream', 'Bottle'], ['Bottle', 'CherryPy'], ['CherryPy', 'Django'], ['Django', 'Flask'], ['Flask', 'Grok'], ['Grok', 'Nagare'], ['Nagare', 'Nevow'], ['Nevow', 'Pyjs'], ['Pyjs', 'Pylons'], ['Pylons', 'Pyramid'], ['Pyramid', 'Quixote'], ['Quixote', 'Spyce'], ['Spyce', 'TACTIC'], ['TACTIC', 'Tornado'], ['Tornado', 'TurboGears'], ['TurboGears', 'TwistedWeb'], ['TwistedWeb', 'Webware'], ['Webware', 'web'], ['web', 'py'], ['py', 'Zope'], ['Zope', 'more...'], ['more...', 'v'], ['v', 't'], ['t', 'e'], ['e', 'Free'], ['Free', 'and'], ['and', 'open-source'], ['open-source', 'software'], ['software', 'General'], ['General', 'Alternative'], ['Alternative', 'terms'], ['terms', 'for'], ['for', 'free'], ['free', 'software'], ['software', 'Comparison'], ['Comparison', 'of'], ['of', 'open-source'], ['open-source', 'and'], ['and', 'closed-source'], ['closed-source', 'software'], ['software', 'Comparison'], ['Comparison', 'of'], ['of', 'source'], ['source', 'code'], ['code', 'hosting'], ['hosting', 'facilities'], ['facilities', 'Free'], ['Free', 'software'], ['software', 'Free'], ['Free', 'software'], ['software', 'project'], ['project', 'directories'], ['directories', 'Gratis'], ['Gratis', 'versus'], ['versus', 'libre'], ['libre', 'Long-term'], ['Long-term', 'support'], ['support', 'Open-source'], ['Open-source', 'software'], ['software', 'Open-source'], ['Open-source', 'software'], ['software', 'development'], ['development', 'Outline'], ['Outline', 'Software'], ['Software', 'packages'], ['packages', 'Audio'], ['Audio', 'Bioinformatics'], ['Bioinformatics', 'Codecs'], ['Codecs', 'Collaboration'], ['Collaboration', 'Configuration'], ['Configuration', 'management'], ['management', 'Device'], ['Device', 'drivers'], ['drivers', 'Graphics'], ['Graphics', 'Wireless'], ['Wireless', 'Geophysics'], ['Geophysics', 'Health'], ['Health', 'Mathematics'], ['Mathematics', 'Operating'], ['Operating', 'systems'], ['systems', 'Programming'], ['Programming', 'languages'], ['languages', 'Routing'], ['Routing', 'Statistics'], ['Statistics', 'Television'], ['Television', 'Video'], ['Video', 'games'], ['games', 'Web'], ['Web', 'applications'], ['applications', 'Content'], ['Content', 'management'], ['management', 'systems'], ['systems', 'E-commerce'], ['E-commerce', 'Word'], ['Word', 'processors'], ['processors', 'Android'], ['Android', 'apps'], ['apps', 'iOS'], ['iOS', 'apps'], ['apps', 'Commercial'], ['Commercial', 'Trademarked'], ['Trademarked', 'Formerly'], ['Formerly', 'proprietary'], ['proprietary', 'Community'], ['Community', 'Free'], ['Free', 'software'], ['software', 'movement'], ['movement', 'History'], ['History', 'Open-source'], ['Open-source', 'software'], ['software', 'movement'], ['movement', 'Organizations'], ['Organizations', 'Events'], ['Events', 'Licenses'], ['Licenses', 'AFL'], ['AFL', 'Apache'], ['Apache', 'APSL'], ['APSL', 'Artistic'], ['Artistic', 'Beerware'], ['Beerware', 'Boost'], ['Boost', 'BSD'], ['BSD', 'CC'], ['CC', 'CDDL'], ['CDDL', 'EPL'], ['EPL', 'GNU'], ['GNU', 'GPL'], ['GPL', 'GNU'], ['GNU', 'LGPL'], ['LGPL', 'ISC'], ['ISC', 'MIT'], ['MIT', 'MPL'], ['MPL', 'Ms-PL/RL'], ['Ms-PL/RL', 'Python'], ['Python', 'Python'], ['Python', 'Software'], ['Software', 'Foundation'], ['Foundation', 'Sleepycat'], ['Sleepycat', 'Unlicense'], ['Unlicense', 'WTFPL'], ['WTFPL', 'zlib'], ['zlib', 'License'], ['License', 'types'], ['types', 'and'], ['and', 'standards'], ['standards', 'Comparison'], ['Comparison', 'of'], ['of', 'free'], ['free', 'and'], ['and', 'open-source'], ['open-source', 'software'], ['software', 'licenses'], ['licenses', 'Contributor'], ['Contributor', 'License'], ['License', 'Agreement'], ['Agreement', 'Copyfree'], ['Copyfree', 'Copyleft'], ['Copyleft', 'Debian'], ['Debian', 'Free'], ['Free', 'Software'], ['Software', 'Guidelines'], ['Guidelines', 'Definition'], ['Definition', 'of'], ['of', 'Free'], ['Free', 'Cultural'], ['Cultural', 'Works'], ['Works', 'Free'], ['Free', 'license'], ['license', 'The'], ['The', 'Free'], ['Free', 'Software'], ['Software', 'Definition'], ['Definition', 'The'], ['The', 'Open'], ['Open', 'Source'], ['Source', 'Definition'], ['Definition', 'Open-source'], ['Open-source', 'license'], ['license', 'Permissive'], ['Permissive', 'software'], ['software', 'licence'], ['licence', 'Public'], ['Public', 'domain'], ['domain', 'Viral'], ['Viral', 'license'], ['license', 'Challenges'], ['Challenges', 'Binary'], ['Binary', 'blob'], ['blob', 'Digital'], ['Digital', 'rights'], ['rights', 'management'], ['management', 'Hardware'], ['Hardware', 'restrictions'], ['restrictions', 'License'], ['License', 'proliferation'], ['proliferation', 'Mozilla'], ['Mozilla', 'software'], ['software', 'rebranding'], ['rebranding', 'Proprietary'], ['Proprietary', 'software'], ['software', 'SCO/Linux'], ['SCO/Linux', 'controversies'], ['controversies', 'Secure'], ['Secure', 'boot'], ['boot', 'Software'], ['Software', 'patents'], ['patents', 'Software'], ['Software', 'security'], ['security', 'Trusted'], ['Trusted', 'Computing'], ['Computing', 'Related'], ['Related', 'topics'], ['topics', 'The'], ['The', 'Cathedral'], ['Cathedral', 'and'], ['and', 'the'], ['the', 'Bazaar'], ['Bazaar', 'Forking'], ['Forking', 'Microsoft'], ['Microsoft', 'Open'], ['Open', 'Specification'], ['Specification', 'Promise'], ['Promise', 'Revolution'], ['Revolution', 'OS'], ['OS', 'Book'], ['Book', 'Category'], ['Category', 'Commons'], ['Commons', 'Portal'], ['Portal', 'Authority'], ['Authority', 'control'], ['control', 'LCCN:'], ['LCCN:', 'sh'], ['sh', 'GND:'], ['GND:', '-'], ['-', 'SUDOC:'], ['SUDOC:', 'BNF:'], ['BNF:', 'cb'], ['cb', 'c'], ['c', '(data)']]\n", - "2-grams count is: 9348\n" - ] - } - ], - "source": [ - "html = urlopen('http://en.wikipedia.org/wiki/Python_(programming_language)')\n", - "bs = BeautifulSoup(html, 'html.parser')\n", - "content = bs.find('div', {'id':'mw-content-text'}).get_text()\n", - "ngrams = getNgrams(content, 2)\n", - "print(ngrams)\n", - "print('2-grams count is: '+str(len(ngrams)))" - ] - }, - { - "cell_type": "code", - "execution_count": 70, - "metadata": {}, - "outputs": [], - "source": [ - "from urllib.request import urlopen\n", - "from bs4 import BeautifulSoup\n", - "import re\n", - "import string\n", - "\n", - "def cleanSentence(sentence):\n", - " sentence = sentence.split(' ')\n", - " sentence = [word.strip(string.punctuation+string.whitespace) for word in sentence]\n", - " sentence = [word for word in sentence if len(word) > 1 or (word.lower() == 'a' or word.lower() == 'i')]\n", - " return sentence\n", - "\n", - "def cleanInput(content):\n", - " content = content.upper()\n", - " content = re.sub('\\n|[[\\d+\\]]', ' ', content)\n", - " content = bytes(content, \"UTF-8\")\n", - " content = content.decode(\"ascii\", \"ignore\")\n", - " sentences = content.split('. ')\n", - " return [cleanSentence(sentence) for sentence in sentences]\n", - "\n", - "def getNgramsFromSentence(content, n):\n", - " output = []\n", - " for i in range(len(content)-n+1):\n", - " output.append(content[i:i+n])\n", - " return output\n", - "\n", - "def getNgrams(content, n):\n", - " content = cleanInput(content)\n", - " ngrams = []\n", - " for sentence in content:\n", - " ngrams.extend(getNgramsFromSentence(sentence, n))\n", - " return(ngrams)\n", - " \n" - ] - }, - { - "cell_type": "code", - "execution_count": 71, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "7275\n" - ] - } - ], - "source": [ - "html = urlopen('http://en.wikipedia.org/wiki/Python_(programming_language)')\n", - "bs = BeautifulSoup(html, 'html.parser')\n", - "content = bs.find('div', {'id':'mw-content-text'}).get_text()\n", - "print(len(getNgrams(content, 2)))" - ] - }, - { - "cell_type": "code", - "execution_count": 68, - "metadata": {}, - "outputs": [], - "source": [ - "from collections import Counter\n", - "\n", - "def getNgrams(content, n):\n", - " content = cleanInput(content)\n", - " ngrams = Counter()\n", - " ngrams_list = []\n", - " for sentence in content:\n", - " newNgrams = [' '.join(ngram) for ngram in getNgramsFromSentence(sentence, n)]\n", - " ngrams_list.extend(newNgrams)\n", - " ngrams.update(newNgrams)\n", - " return(ngrams)" - ] - }, - { - "cell_type": "code", - "execution_count": 69, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "5479\n", - "7275\n", - "Counter({'PYTHON SOFTWARE': 40, 'SOFTWARE FOUNDATION': 37, 'OF THE': 34, 'IN PYTHON': 31, 'OF PYTHON': 28, 'IN THE': 24, 'THE PYTHON': 24, 'VAN ROSSUM': 23, 'TO THE': 20, 'SUCH AS': 19, 'RETRIEVED FEBRUARY': 19, 'IS A': 17, 'FROM THE': 16, 'PYTHON ENHANCEMENT': 15, 'PYTHON IS': 14, 'AS A': 14, 'ENHANCEMENT PROPOSALS': 14, 'IT IS': 13, 'RETRIEVED MARCH': 13, 'PROGRAMMING LANGUAGE': 12, 'RETRIEVED DECEMBER': 12, 'ROSSUM GUIDO': 12, 'FOR EXAMPLE': 11, 'CAN BE': 11, 'BE USED': 11, 'RETRIEVED SEPTEMBER': 11, 'RETRIEVED NOVEMBER': 11, 'RETRIEVED JANUARY': 11, 'PYTHON HAS': 10, 'STANDARD LIBRARY': 10, 'ON THE': 10, 'FOR THE': 10, 'PROGRAMMING LANGUAGES': 10, 'FROM PYTHON': 10, 'RETRIEVED AUGUST': 10, 'GUIDO VAN': 9, 'AND A': 9, 'BY THE': 9, 'OTHER LANGUAGES': 9, 'TO BE': 9, 'PYTHON AND': 9, 'STATEMENT WHICH': 9, 'RETRIEVED JUNE': 9, 'OF ITS': 8, 'THE LANGUAGE': 8, 'TO PYTHON': 8, 'A PYTHON': 8, 'OF A': 8, 'USED TO': 8, 'COMPARISON OF': 8, 'FOR PYTHON': 8, 'ARCHIVED FROM': 8, 'THE ORIGINAL': 8, 'RETRIEVED JULY': 8, 'RETRIEVED APRIL': 8, 'HAS A': 7, 'SYNTAX AND': 7, 'WITH THE': 7, 'IN A': 7, 'WRITTEN IN': 7, 'IS THE': 7, 'IS USED': 7, 'USED IN': 7, 'PYTHON FOR': 7, 'FREE SOFTWARE': 7, 'ORIGINAL ON': 7, 'SCRIPTING LANGUAGE': 6, 'PYTHON AS': 6, 'IS NOT': 6, 'MANY OTHER': 6, 'THE STANDARD': 6, 'THE SAME': 6, 'TO A': 6, 'ARE NOT': 6, 'PART OF': 6, 'COMPILES PYTHON': 6, 'STACKLESS PYTHON': 5, 'LANGUAGE FOR': 5, 'OF CODE': 5, 'REFERENCE IMPLEMENTATION': 5, 'DEVELOPMENT ENVIRONMENTS': 5, 'NEW FEATURES': 5, 'OBJECT-ORIENTED PROGRAMMING': 5, 'PYTHON USES': 5, 'IT ALSO': 5, 'IT HAS': 5, 'BETTER THAN': 5, 'WITH A': 5, 'LANGUAGES SUCH': 5, 'IS ALSO': 5, 'MONTY PYTHON': 5, 'CODE IS': 5, \"EDIT PYTHON'S\": 5, 'THERE ARE': 5, 'INTEGER DIVISION': 5, 'THE OPERATOR': 5, 'USED AS': 5, 'AS THE': 5, 'USE THE': 5, 'PYTHON A': 5, 'CAN CONTAIN': 5, 'CONTAIN MIXED': 5, 'MIXED TYPES': 5, 'THE VERSION': 5, 'AND IS': 5, 'ARBITRARY PRECISION': 5, 'IN AND': 5, 'WITH PYTHON': 5, 'OPEN-SOURCE SOFTWARE': 5, 'AND HAS': 4, 'A LARGE': 4, 'OPEN SOURCE': 4, 'AND SEMANTICS': 4, 'SEE ALSO': 4, 'MAIN ARTICLE': 4, \"PYTHON'S DEVELOPMENT\": 4, 'SUPPORT FOR': 4, 'LANGUAGE THAT': 4, 'ON A': 4, 'LIST COMPREHENSIONS': 4, 'IS BETTER': 4, 'RATHER THAN': 4, 'LIKE A': 4, 'DOES NOT': 4, 'MAY BE': 4, 'BLOCK OF': 4, 'THE CLASS': 4, 'THEY ARE': 4, 'OPERATOR FOR': 4, 'THAT THE': 4, 'A NEW': 4, 'KINDS OF': 4, 'QUOTE MARKS': 4, 'PERL AND': 4, 'USED FOR': 4, 'STRING TRUE': 4, 'MEANS THAT': 4, 'EXAMPLE THE': 4, 'WEB SERVER': 4, 'PYTHON CODE': 4, 'PYTHON PACKAGE': 4, 'SCIENTIFIC COMPUTING': 4, 'PYTHON IMPLEMENTATIONS': 4, 'HAS BEEN': 4, 'A SIMILAR': 4, 'PYTHON TO': 4, 'VERSION NUMBER': 4, 'NUMBER IS': 4, 'IS INCREMENTED': 4, 'ON PYTHON': 4, 'A SCRIPTING': 4, 'PYTHON LANGUAGE': 4, 'JAVA PLATFORM': 4, 'OF PROGRAMMING': 4, 'RETRIEVED MAY': 4, 'RETRIEVED OCTOBER': 4, 'INFLUENCED BY': 3, 'OPERATING SYSTEMS': 3, 'CPYTHON IS': 3, 'FEATURES AND': 3, 'AND PHILOSOPHY': 3, 'CONTROL FLOW': 3, 'BY PYTHON': 3, 'HISTORY OF': 3, 'OPERATING SYSTEM': 3, 'PYTHON COMMUNITY': 3, 'THAT WOULD': 3, 'INTERPRETER FOR': 3, 'WAS RELEASED': 3, 'ON DECEMBER': 3, 'THAT IS': 3, 'MANY OF': 3, 'HAVE BEEN': 3, 'EDIT PYTHON': 3, 'FUNCTIONAL PROGRAMMING': 3, 'TYPING AND': 3, \"THE LANGUAGE'S\": 3, 'LANGUAGE WITH': 3, 'LARGE STANDARD': 3, 'THERE IS': 3, 'TO DO': 3, 'PYTHON INTERPRETER': 3, \"OF PYTHON'S\": 3, 'THIS IS': 3, 'FROM A': 3, 'THAT IT': 3, 'USES PYTHON': 3, 'IN CONTRAST': 3, 'EDIT MAIN': 3, 'AND IT': 3, 'ASSIGNMENT STATEMENT': 3, 'NATURE OF': 3, 'NAME IS': 3, 'USING THE': 3, 'DATA TYPE': 3, 'EXECUTES A': 3, 'A BLOCK': 3, 'CODE BLOCK': 3, 'A GENERATOR': 3, 'WHICH IS': 3, 'AS AND': 3, 'AND JAVA': 3, 'FLOOR DIVISION': 3, 'MATRIX MULTIPLICATION': 3, 'IN JAVA': 3, 'JAVA AND': 3, 'CONDITIONAL EXPRESSIONS': 3, 'ARE WRITTEN': 3, 'WRITTEN AS': 3, 'DISTINCTION BETWEEN': 3, 'THE LEFT': 3, 'AN ASSIGNMENT': 3, 'DOUBLE QUOTE': 3, 'EXPRESSIONS AND': 3, 'THE THIRD': 3, 'BUILT-IN FUNCTIONS': 3, 'IS FOR': 3, 'OF THIS': 3, 'FOR AN': 3, 'THE SYNTAX': 3, 'OFTEN USED': 3, 'INSTANCES OF': 3, 'OF CLASSES': 3, 'AND THE': 3, 'OPTIONAL STATIC': 3, 'SEQUENCE OF': 3, 'OPERATOR IS': 3, 'SINCE VERSION': 3, 'SERVER GATEWAY': 3, 'GATEWAY INTERFACE': 3, 'A FEW': 3, 'AS OF': 3, 'PACKAGE INDEX': 3, 'THE OFFICIAL': 3, 'WEB FRAMEWORKS': 3, 'INTEGRATED DEVELOPMENT': 3, 'PYTHON IDE': 3, 'SCIENCE AND': 3, 'PYTHON PROGRAMS': 3, 'IMPLEMENTATIONS EDIT': 3, 'LIST OF': 3, 'IS WRITTEN': 3, 'RUN ON': 3, 'USE OF': 3, 'MAILING LIST': 3, 'ARE ALSO': 3, 'PYTHON DOCUMENTATION': 3, 'MOST POPULAR': 3, 'LANGUAGES IN': 3, 'TIOBE PROGRAMMING': 3, 'PROGRAMMING COMMUNITY': 3, 'COMMUNITY INDEX': 3, 'THE YEAR': 3, 'DESIGN AND': 3, 'PYTHON IN': 3, 'ARTIFICIAL INTELLIGENCE': 3, 'A BRIEF': 3, 'GENERAL PYTHON': 3, 'PYTHON FAQ': 3, 'INTERVIEW WITH': 3, 'THE JAVA': 3, 'ZADKA MOSHE': 3, 'PEP PYTHON': 3, \"O'REILLY MEDIA\": 3, 'IN SCIENCE': 3, 'OBJECT-ORIENTED IMPERATIVE': 2, 'IMPERATIVE FUNCTIONAL': 2, 'IRONPYTHON JYTHON': 2, 'MICROPYTHON NUMBA': 2, 'GO GROOVY': 2, 'PYTHON PROGRAMMING': 2, 'BY GUIDO': 2, 'DESIGN PHILOSOPHY': 2, 'A SYNTAX': 2, 'ALLOWS PROGRAMMERS': 2, 'PROGRAMMERS TO': 2, 'FEWER LINES': 2, 'LINES OF': 2, 'PYTHON FEATURES': 2, 'A DYNAMIC': 2, 'MEMORY MANAGEMENT': 2, 'ARE AVAILABLE': 2, 'AVAILABLE FOR': 2, 'FOR MANY': 2, 'MANY OPERATING': 2, 'THE REFERENCE': 2, 'IMPLEMENTATION OF': 2, 'ALL OF': 2, 'VARIANT IMPLEMENTATIONS': 2, 'STATEMENTS AND': 2, 'AND CONTROL': 2, 'OTHER IMPLEMENTATIONS': 2, 'UNSUPPORTED IMPLEMENTATIONS': 2, 'CROSS-COMPILERS TO': 2, 'TO OTHER': 2, 'LANGUAGES INFLUENCED': 2, 'FURTHER READING': 2, 'EXTERNAL LINKS': 2, 'THE CREATOR': 2, 'CREATOR OF': 2, 'PYTHON PYTHON': 2, 'PYTHON WAS': 2, 'AND ITS': 2, 'IN DECEMBER': 2, 'INSPIRED BY': 2, 'DEVELOPMENT IS': 2, 'IS REFLECTED': 2, 'REFLECTED IN': 2, 'GIVEN TO': 2, 'BENEVOLENT DICTATOR': 2, 'DICTATOR FOR': 2, 'FOR LIFE': 2, 'WOULD BE': 2, 'I HAD': 2, 'AND NOT': 2, 'NOT MUCH': 2, 'I DECIDED': 2, 'DECIDED TO': 2, 'THE PROJECT': 2, 'RELEASED ON': 2, 'MAJOR NEW': 2, 'A CYCLE-DETECTING': 2, 'CYCLE-DETECTING GARBAGE': 2, 'GARBAGE COLLECTOR': 2, 'THE DEVELOPMENT': 2, 'PYTHON OR': 2, 'AFTER A': 2, 'A MAJOR': 2, 'OUT OF': 2, 'IN JANUARY': 2, 'WORK ON': 2, 'TO GO': 2, 'THIS WAS': 2, 'PROGRAMMING AND': 2, 'METAPROGRAMMING AND': 2, 'ARE SUPPORTED': 2, 'DYNAMIC TYPING': 2, 'METHOD AND': 2, 'VARIABLE NAMES': 2, \"PYTHON'S DESIGN\": 2, 'PROGRAMMING IN': 2, 'GENERATOR EXPRESSIONS': 2, 'THE DOCUMENT': 2, 'THE ZEN': 2, 'ZEN OF': 2, 'ITS CORE': 2, 'WAS DESIGNED': 2, 'LIBRARY AND': 2, 'PHILOSOPHY REJECTS': 2, 'IN FAVOR': 2, 'FAVOR OF': 2, 'TO DESCRIBE': 2, 'PYTHON CULTURE': 2, 'WAY TO': 2, 'DO IT': 2, 'LANGUAGE DESIGN': 2, 'SHOULD BE': 2, \"PYTHON'S DEVELOPERS\": 2, 'PARTS OF': 2, 'OF CPYTHON': 2, 'CPYTHON THAT': 2, 'PYPY A': 2, 'A JUST-IN-TIME': 2, 'JUST-IN-TIME COMPILER': 2, 'TO USE': 2, 'THE BRITISH': 2, 'BRITISH COMEDY': 2, 'COMEDY GROUP': 2, 'GROUP MONTY': 2, 'SPAM AND': 2, 'AND EGGS': 2, 'INSTEAD OF': 2, 'FOO AND': 2, 'AND BAR': 2, 'A COMMON': 2, 'IS PYTHONIC': 2, 'WHICH CAN': 2, 'HAVE A': 2, 'A WIDE': 2, 'WIDE RANGE': 2, 'RANGE OF': 2, 'RELATED TO': 2, 'TO PROGRAM': 2, 'TO SAY': 2, 'SAY THAT': 2, 'IS TO': 2, 'A ROUGH': 2, 'LANGUAGE IS': 2, 'ARE OFTEN': 2, 'ARTICLE PYTHON': 2, 'PYTHON SYNTAX': 2, 'IT DOES': 2, 'NOT USE': 2, 'TO DELIMIT': 2, 'DELIMIT BLOCKS': 2, 'ARE OPTIONAL': 2, 'THAN OR': 2, 'IN INDENTATION': 2, 'THE END': 2, 'THE CURRENT': 2, 'OFF-SIDE RULE': 2, 'THE EQUALS': 2, 'INCLUDING THE': 2, 'THE NATURE': 2, 'IN E.G': 2, 'TRANSLATES TO': 2, 'VARIABLE NAME': 2, 'NAME RECEIVES': 2, 'RECEIVES A': 2, 'A COPY': 2, 'COPY OF': 2, 'OF NUMERIC': 2, 'INTO AN': 2, 'STORAGE LOCATION': 2, 'FOR WHICH': 2, 'WHICH THE': 2, 'THE SYMBOLIC': 2, 'THE MEMORY': 2, 'THE VARIABLE': 2, 'CASE OF': 2, 'TYPE OF': 2, 'SINCE THE': 2, 'A VARIABLE': 2, 'AND METHODS': 2, 'THREE NAMES': 2, 'A NAME': 2, 'A TYPE': 2, 'AN ITERABLE': 2, 'ITERABLE OBJECT': 2, 'EACH ELEMENT': 2, 'FOR USE': 2, 'WHICH EXECUTES': 2, 'AS ITS': 2, 'IN ITS': 2, 'THE BLOCK': 2, 'CODE AND': 2, 'CLASS FOR': 2, 'USE IN': 2, 'FUNCTION OR': 2, 'OR METHOD': 2, 'IS SYNTACTICALLY': 2, 'TO CREATE': 2, 'RETURNS A': 2, 'GENERATOR FUNCTION': 2, 'ARE TWO': 2, 'MODULE NAME': 2, 'THE PRINT': 2, 'IS POSSIBLE': 2, 'POSSIBLE TO': 2, 'INTO A': 2, 'AND FROM': 2, 'THE INFORMATION': 2, 'SIMILAR TO': 2, 'TO LANGUAGES': 2, 'THE BEHAVIOR': 2, 'BEHAVIOR OF': 2, 'OF DIVISION': 2, 'DIVISION AND': 2, 'FOR EXPONENTIATION': 2, 'BY VALUE': 2, 'BY REFERENCE': 2, 'ON OBJECTS': 2, 'EXAMPLE A': 2, 'USES THE': 2, 'EXPRESSION TERMED': 2, 'TERMED A': 2, 'LAMBDA EXPRESSIONS': 2, 'PYTHON ARE': 2, 'IN ORDER': 2, 'TO MANY': 2, 'A DISTINCTION': 2, 'AS ARE': 2, 'CANNOT BE': 2, 'THE KEYS': 2, 'KEYS OF': 2, 'OF DICTIONARIES': 2, 'KEYS MUST': 2, 'MUST BE': 2, 'ARE IMMUTABLE': 2, 'ELEMENTS OF': 2, 'OF BOTH': 2, 'IS THEN': 2, 'HAND SIDE': 2, 'SIDE OF': 2, 'THE EQUAL': 2, 'EQUAL SIGN': 2, 'IN AN': 2, 'THE RIGHT': 2, 'NUMBER OF': 2, 'A STRING': 2, 'OF STRING': 2, 'STRING LITERALS': 2, 'SINGLE OR': 2, 'OR DOUBLE': 2, 'SHELLS PERL': 2, 'BOTH KINDS': 2, 'AS AN': 2, 'STRING INTERPOLATION': 2, 'MULTIPLE LINES': 2, 'REGULAR EXPRESSIONS': 2, 'OR A': 2, 'INDEXES ARE': 2, 'AND NEGATIVE': 2, 'CONTRAST TO': 2, 'OR RUBY': 2, 'THE LATTER': 2, 'BE A': 2, 'AND OTHER': 2, 'HAS THE': 2, 'ADVANTAGE OF': 2, 'OPERATOR IN': 2, 'CAUSES A': 2, 'CLASS THE': 2, 'HAVE AN': 2, 'NOT CHECKED': 2, 'OBJECT IS': 2, 'PYTHON ALLOWS': 2, 'CLASSES ARE': 2, 'ARE INSTANCES': 2, 'SYNTAX OF': 2, 'AND ARE': 2, 'BUILT-IN TYPES': 2, 'OF BYTES': 2, 'FLOATING POINT': 2, 'UNORDERED SET': 2, 'SET CONTAINS': 2, 'CONTAINS NO': 2, 'NO DUPLICATES': 2, 'DUPLICATES CAN': 2, 'TYPES IF': 2, 'IF HASHABLE': 2, 'WE CAN': 2, 'ALSO HAS': 2, 'WHICH SHIFTS': 2, 'SHIFTS TO': 2, 'PLACES THE': 2, 'SAME AS': 2, 'THE DIVISION': 2, 'INTEGERS AND': 2, 'FLOATING-POINT DIVISION': 2, 'TOWARDS NEGATIVE': 2, 'NEGATIVE INFINITY': 2, 'DIVISION OPERATOR': 2, 'USE PYTHON': 2, 'THE EQUATION': 2, 'A IS': 2, 'THE EXPRESSION': 2, 'IS LESS': 2, 'LESS THAN': 2, 'THEN BE': 2, 'BELONGING TO': 2, 'PYTHON TYPE': 2, 'TO ARBITRARY': 2, 'PYTHON THE': 2, 'THE INT': 2, 'IS NOW': 2, 'IN MODULE': 2, 'AND SEVERAL': 2, 'ONE OF': 2, 'IT INCLUDES': 2, 'GRAPHICAL USER': 2, 'USER INTERFACES': 2, 'THE WEB': 2, 'MODULES ARE': 2, 'MOST OF': 2, 'ONLY A': 2, 'OFFICIAL REPOSITORY': 2, 'THIRD-PARTY PYTHON': 2, 'TEXT PROCESSING': 2, 'EDIT SEE': 2, 'OF INTEGRATED': 2, 'COMMAND LINE': 2, 'INTENDED FOR': 2, 'EXECUTED BY': 2, 'VIRTUAL MACHINE': 2, 'A MIXTURE': 2, 'MIXTURE OF': 2, 'INTERPRETER OF': 2, 'A SIGNIFICANT': 2, 'VERSION IS': 2, 'UNLADEN SWALLOW': 2, 'BY USING': 2, 'CPYTHON AND': 2, 'TYPES AND': 2, 'THE CPYTHON': 2, 'AND SOME': 2, 'THE SYMBIAN': 2, 'SYMBIAN OPERATING': 2, 'PROJECT HAS': 2, 'TO RUN': 2, 'THE NOKIA': 2, 'BYTE CODE': 2, 'THE USE': 2, 'OF JAVA': 2, 'TO JAVA': 2, 'TO JAVASCRIPT': 2, 'TO AND': 2, 'LATEST RELEASE': 2, 'RELEASE IN': 2, 'SHED SKIN': 2, \"GOOGLE'S GRUMPY\": 2, 'THE PRIMARY': 2, 'PYTHON DESIGN': 2, 'THE FIRST': 2, 'THESE RELEASES': 2, 'YEARS AFTER': 2, 'ABOUT EVERY': 2, 'EVERY MONTHS': 2, 'THE CODE': 2, 'PYTHON DEVELOPERS': 2, 'HAS ALSO': 2, 'CONFERENCE ON': 2, 'TO SHOW': 2, 'AND PYPY': 2, 'THE TIOBE': 2, 'POPULAR LANGUAGE': 2, 'IT WAS': 2, 'LANGUAGE OF': 2, 'BASED ON': 2, 'AN EMPIRICAL': 2, 'AS PYTHON': 2, 'FOR PROGRAMMING': 2, 'PYTHON CAN': 2, 'WEB APPLICATIONS': 2, 'A STANDARD': 2, 'PYLONS PYRAMID': 2, 'WEB PY': 2, 'THE DESIGN': 2, 'LIBRARIES SUCH': 2, 'AND STATISTICAL': 2, 'INCLUDING IN': 2, 'PROGRAMS LIKE': 2, 'A PRETTY': 2, 'PRETTY PRINTER': 2, 'ALSO BEEN': 2, 'BEEN USED': 2, 'VIDEO GAMES': 2, 'THE OTHER': 2, 'ALSO USED': 2, 'ALGORITHMIC TRADING': 2, 'NATURAL LANGUAGE': 2, 'LINUX DISTRIBUTIONS': 2, 'SUGAR LABS': 2, 'USES INDENTATION': 2, 'SIMILAR SYNTAX': 2, 'OBJECT MODEL': 2, 'STATIC TYPING': 2, 'A PROGRAMMING': 2, 'PYTHON-INSPIRED SYNTAX': 2, 'IS DESCRIBED': 2, 'DYNAMIC LANGUAGE': 2, 'BE AS': 2, 'THE WHITESPACE': 2, 'WHITESPACE THING': 2, 'LANGUAGE IN': 2, 'A PEP': 2, 'TIOBE INDEX': 2, 'THE HISTORY': 2, 'BRIEF TIMELINE': 2, 'TIMELINE OF': 2, 'PYTHON INSIDER': 2, 'PYTHON CORE': 2, 'CORE DEVELOPERS': 2, 'A WHY': 2, 'WITH GUIDO': 2, 'PYTHON TUTORIAL': 2, 'KUCHLING A': 2, 'PETERS TIM': 2, 'BAXTER ANTHONY': 2, 'AND PYTHON': 2, 'WE CREATED': 2, 'ON RAILS': 2, 'LATTNER CHRIS': 2, 'CHRIS JUNE': 2, \"CHRIS LATTNER'S\": 2, \"LATTNER'S HOMEPAGE\": 2, 'CHRIS LATTNER': 2, 'THE SWIFT': 2, 'DRAWING IDEAS': 2, 'IDEAS FROM': 2, 'FROM OBJECTIVE-C': 2, 'OBJECTIVE-C RUST': 2, 'RUST HASKELL': 2, 'HASKELL RUBY': 2, 'RUBY PYTHON': 2, 'PYTHON CLU': 2, 'CLU AND': 2, 'AND FAR': 2, 'FAR TOO': 2, 'TOO MANY': 2, 'MANY OTHERS': 2, 'OTHERS TO': 2, 'TO LIST': 2, 'SUMMERFIELD MARK': 2, 'ABOUT PYTHON': 2, \"WHAT'S NEW\": 2, 'NEW IN': 2, 'GUIDO APRIL': 2, 'LANGUAGE REFERENCE': 2, 'HETTINGER RAYMOND': 2, 'GOODGER DAVID': 2, 'A PYTHONISTA': 2, 'HOW TO': 2, 'TO THINK': 2, 'THINK LIKE': 2, 'EBY PHILLIP': 2, 'PEP A': 2, 'A DEDICATED': 2, 'DEDICATED INFIX': 2, 'INFIX OPERATOR': 2, 'FOR MATRIX': 2, 'EQUALITY OPERATORS': 2, 'OPERATORS AND': 2, 'ORACLE CORPORATION': 2, 'MOSHE VAN': 2, 'GUIDO MARCH': 2, 'ROUND THE': 2, 'PYTHON STANDARD': 2, 'LIBRARY RELEASE': 2, 'FUNCTIONS RETRIEVED': 2, 'BATISTA FACUNDO': 2, 'PEP DECIMAL': 2, 'DECIMAL DATA': 2, 'PYTHON WEB': 2, 'DEBILL ERIK': 2, 'MODULE COUNTS': 2, 'AN INTERVIEW': 2, 'NUITKA HOME': 2, 'PURPOSE AND': 2, 'AND GUIDELINES': 2, 'LUTZ MARK': 2, 'LEARNING PYTHON': 2, 'TIOBE SOFTWARE': 2, 'PYTHON REXX': 2, 'USING PYTHON': 2, 'COMPUTING IN': 2, 'AND ENGINEERING': 2, 'DATA ANALYSIS': 2, 'LONDON SPRINGER': 2, \"SID MEIER'S\": 2, \"MEIER'S CIVILIZATION\": 2, 'CIVILIZATION IV': 2, 'ON AUGUST': 2, 'ESTERBROOK CHARLES': 2, 'COBRA LANGUAGE': 2, 'IN JULY': 2, 'PILGRIM MARK': 2, 'DIVE INTO': 2, 'INTO PYTHON': 2, 'FREE AND': 2, 'AND OPEN-SOURCE': 2, 'SOFTWARE COMPARISON': 2, 'SOFTWARE MOVEMENT': 2, 'OF FREE': 2, 'PYTHON PARADIGM': 1, 'PARADIGM OBJECT-ORIENTED': 1, 'FUNCTIONAL PROCEDURAL': 1, 'PROCEDURAL REFLECTIVE': 1, 'REFLECTIVE DESIGNEDBY': 1, 'DESIGNEDBY GUIDO': 1, 'ROSSUM DEVELOPER': 1, 'DEVELOPER PYTHON': 1, 'FOUNDATION FIRSTAPPEARED': 1, 'FIRSTAPPEARED FEBRUARY': 1, 'FEBRUARY YEARS': 1, 'YEARS AGO': 1, 'AGO STABLE': 1, 'STABLE RELEASE': 1, 'DECEMBER DAYS': 1, 'DAYS AGO': 1, 'SEPTEMBER MONTHS': 1, 'MONTHS AGO': 1, 'AGO TYPING': 1, 'TYPING DISCIPLINE': 1, 'DISCIPLINE DUCK': 1, 'DUCK DYNAMIC': 1, 'DYNAMIC STRONG': 1, 'STRONG LICENSE': 1, 'LICENSE PYTHON': 1, 'FOUNDATION LICENSE': 1, 'LICENSE FILENAME': 1, 'FILENAME EXTENSIONS': 1, 'EXTENSIONS PY': 1, 'PY PYC': 1, 'PYC PYD': 1, 'PYD PYO': 1, 'PYO PRIOR': 1, 'PRIOR TO': 1, 'PYW PYZ': 1, 'PYZ SINCE': 1, 'WEBSITE PYTHON.ORG': 1, 'PYTHON.ORG MAJOR': 1, 'MAJOR IMPLEMENTATIONS': 1, 'IMPLEMENTATIONS CPYTHON': 1, 'CPYTHON IRONPYTHON': 1, 'JYTHON MICROPYTHON': 1, 'NUMBA PYPY': 1, 'PYPY STACKLESS': 1, 'PYTHON DIALECTS': 1, 'DIALECTS CYTHON': 1, 'CYTHON RPYTHON': 1, 'RPYTHON INFLUENCED': 1, 'BY ABC': 1, 'ABC ALGOL': 1, 'ALGOL CLU': 1, 'CLU DYLAN': 1, 'DYLAN HASKELL': 1, 'HASKELL ICON': 1, 'ICON JAVA': 1, 'JAVA LISP': 1, 'LISP MODULA': 1, 'MODULA PERL': 1, 'PERL INFLUENCED': 1, 'INFLUENCED BOO': 1, 'BOO COBRA': 1, 'COBRA COCONUT': 1, 'COCONUT COFFEESCRIPT': 1, 'COFFEESCRIPT FALCON': 1, 'FALCON GENIE': 1, 'GENIE GO': 1, 'GROOVY JAVASCRIPT': 1, 'JAVASCRIPT JULIA': 1, 'JULIA NIM': 1, 'NIM RING': 1, 'RING RUBY': 1, 'RUBY SWIFT': 1, 'SWIFT PYTHON': 1, 'PROGRAMMING AT': 1, 'AT WIKIBOOKS': 1, 'WIKIBOOKS PYTHON': 1, 'IS AN': 1, 'AN INTERPRETED': 1, 'INTERPRETED HIGH-LEVEL': 1, 'HIGH-LEVEL PROGRAMMING': 1, 'FOR GENERAL-PURPOSE': 1, 'GENERAL-PURPOSE PROGRAMMING': 1, 'CREATED BY': 1, 'ROSSUM AND': 1, 'AND FIRST': 1, 'FIRST RELEASED': 1, 'RELEASED IN': 1, 'A DESIGN': 1, 'PHILOSOPHY THAT': 1, 'THAT EMPHASIZES': 1, 'EMPHASIZES CODE': 1, 'CODE READABILITY': 1, 'READABILITY AND': 1, 'SYNTAX THAT': 1, 'THAT ALLOWS': 1, 'TO EXPRESS': 1, 'EXPRESS CONCEPTS': 1, 'CONCEPTS IN': 1, 'IN FEWER': 1, 'CODE NOTABLY': 1, 'NOTABLY USING': 1, 'USING SIGNIFICANT': 1, 'SIGNIFICANT WHITESPACE': 1, 'IT PROVIDES': 1, 'PROVIDES CONSTRUCTS': 1, 'CONSTRUCTS THAT': 1, 'THAT ENABLE': 1, 'ENABLE CLEAR': 1, 'CLEAR PROGRAMMING': 1, 'PROGRAMMING ON': 1, 'ON BOTH': 1, 'BOTH SMALL': 1, 'SMALL AND': 1, 'AND LARGE': 1, 'LARGE SCALES': 1, 'FEATURES A': 1, 'DYNAMIC TYPE': 1, 'TYPE SYSTEM': 1, 'SYSTEM AND': 1, 'AND AUTOMATIC': 1, 'AUTOMATIC MEMORY': 1, 'IT SUPPORTS': 1, 'SUPPORTS MULTIPLE': 1, 'MULTIPLE PROGRAMMING': 1, 'PROGRAMMING PARADIGMS': 1, 'PARADIGMS INCLUDING': 1, 'INCLUDING OBJECT-ORIENTED': 1, 'FUNCTIONAL AND': 1, 'AND PROCEDURAL': 1, 'PROCEDURAL AND': 1, 'LARGE AND': 1, 'AND COMPREHENSIVE': 1, 'COMPREHENSIVE STANDARD': 1, 'PYTHON INTERPRETERS': 1, 'INTERPRETERS ARE': 1, 'CPYTHON THE': 1, 'IS OPEN': 1, 'SOURCE SOFTWARE': 1, 'SOFTWARE AND': 1, 'A COMMUNITY-BASED': 1, 'COMMUNITY-BASED DEVELOPMENT': 1, 'DEVELOPMENT MODEL': 1, 'MODEL AS': 1, 'AS DO': 1, 'DO NEARLY': 1, 'NEARLY ALL': 1, 'ITS VARIANT': 1, 'IS MANAGED': 1, 'MANAGED BY': 1, 'THE NON-PROFIT': 1, 'NON-PROFIT PYTHON': 1, 'CONTENTS HISTORY': 1, 'HISTORY FEATURES': 1, 'PHILOSOPHY SYNTAX': 1, 'MATHEMATICS LIBRARIES': 1, 'LIBRARIES DEVELOPMENT': 1, 'ENVIRONMENTS IMPLEMENTATIONS': 1, 'PERFORMANCE DEVELOPMENT': 1, 'DEVELOPMENT NAMING': 1, 'NAMING USES': 1, 'USES LANGUAGES': 1, 'PYTHON SEE': 1, 'ALSO REFERENCES': 1, 'REFERENCES FURTHER': 1, 'READING EXTERNAL': 1, 'LINKS HISTORY': 1, 'HISTORY EDIT': 1, 'EDIT GUIDO': 1, 'ROSSUM THE': 1, 'PYTHON MAIN': 1, 'ARTICLE HISTORY': 1, 'WAS CONCEIVED': 1, 'CONCEIVED IN': 1, 'THE LATE': 1, 'LATE AND': 1, 'ITS IMPLEMENTATION': 1, 'IMPLEMENTATION BEGAN': 1, 'BEGAN IN': 1, 'DECEMBER BY': 1, 'ROSSUM AT': 1, 'AT CENTRUM': 1, 'CENTRUM WISKUNDE': 1, 'WISKUNDE INFORMATICA': 1, 'INFORMATICA CWI': 1, 'CWI IN': 1, 'THE NETHERLANDS': 1, 'NETHERLANDS AS': 1, 'A SUCCESSOR': 1, 'SUCCESSOR TO': 1, 'THE ABC': 1, 'ABC LANGUAGE': 1, 'LANGUAGE ITSELF': 1, 'ITSELF INSPIRED': 1, 'BY SETL': 1, 'SETL CAPABLE': 1, 'CAPABLE OF': 1, 'OF EXCEPTION': 1, 'EXCEPTION HANDLING': 1, 'HANDLING AND': 1, 'AND INTERFACING': 1, 'INTERFACING WITH': 1, 'THE AMOEBA': 1, 'AMOEBA OPERATING': 1, 'ROSSUM REMAINS': 1, \"REMAINS PYTHON'S\": 1, \"PYTHON'S PRINCIPAL\": 1, 'PRINCIPAL AUTHOR': 1, 'HIS CONTINUING': 1, 'CONTINUING CENTRAL': 1, 'CENTRAL ROLE': 1, 'ROLE IN': 1, \"IN PYTHON'S\": 1, 'THE TITLE': 1, 'TITLE GIVEN': 1, 'TO HIM': 1, 'HIM BY': 1, 'COMMUNITY BENEVOLENT': 1, 'LIFE BDFL': 1, 'THE ORIGINS': 1, 'ORIGINS OF': 1, 'PYTHON VAN': 1, 'ROSSUM WROTE': 1, 'WROTE IN': 1, 'IN IN': 1, 'DECEMBER I': 1, 'I WAS': 1, 'WAS LOOKING': 1, 'LOOKING FOR': 1, 'FOR A': 1, 'A HOBBY': 1, 'HOBBY PROGRAMMING': 1, 'PROGRAMMING PROJECT': 1, 'PROJECT THAT': 1, 'WOULD KEEP': 1, 'KEEP ME': 1, 'ME OCCUPIED': 1, 'OCCUPIED DURING': 1, 'DURING THE': 1, 'THE WEEK': 1, 'WEEK AROUND': 1, 'AROUND CHRISTMAS': 1, 'MY OFFICE': 1, 'BE CLOSED': 1, 'CLOSED BUT': 1, 'BUT I': 1, 'HAD A': 1, 'A HOME': 1, 'HOME COMPUTER': 1, 'COMPUTER AND': 1, 'MUCH ELSE': 1, 'ELSE ON': 1, 'ON MY': 1, 'MY HANDS': 1, 'TO WRITE': 1, 'WRITE AN': 1, 'AN INTERPRETER': 1, 'THE NEW': 1, 'NEW SCRIPTING': 1, 'LANGUAGE I': 1, 'HAD BEEN': 1, 'BEEN THINKING': 1, 'THINKING ABOUT': 1, 'ABOUT LATELY': 1, 'LATELY A': 1, 'A DESCENDANT': 1, 'DESCENDANT OF': 1, 'OF ABC': 1, 'ABC THAT': 1, 'WOULD APPEAL': 1, 'APPEAL TO': 1, 'TO UNIX/C': 1, 'UNIX/C HACKERS': 1, 'I CHOSE': 1, 'CHOSE PYTHON': 1, 'A WORKING': 1, 'WORKING TITLE': 1, 'TITLE FOR': 1, 'PROJECT BEING': 1, 'BEING IN': 1, 'A SLIGHTLY': 1, 'SLIGHTLY IRREVERENT': 1, 'IRREVERENT MOOD': 1, 'MOOD AND': 1, 'A BIG': 1, 'BIG FAN': 1, 'FAN OF': 1, 'OF MONTY': 1, \"MONTY PYTHON'S\": 1, \"PYTHON'S FLYING\": 1, 'FLYING CIRCUS': 1, 'ON OCTOBER': 1, 'OCTOBER AND': 1, 'AND HAD': 1, 'HAD MANY': 1, 'MANY MAJOR': 1, 'FEATURES INCLUDING': 1, 'INCLUDING A': 1, 'COLLECTOR AND': 1, 'AND SUPPORT': 1, 'FOR UNICODE': 1, 'WITH THIS': 1, 'THIS RELEASE': 1, 'RELEASE THE': 1, 'DEVELOPMENT PROCESS': 1, 'PROCESS BECAME': 1, 'BECAME MORE': 1, 'MORE TRANSPARENT': 1, 'TRANSPARENT AND': 1, 'AND COMMUNITY-BACKED': 1, 'INITIALLY CALLED': 1, 'CALLED PYTHON': 1, 'OR PY': 1, 'PY WAS': 1, 'DECEMBER AFTER': 1, 'A LONG': 1, 'LONG TESTING': 1, 'TESTING PERIOD': 1, 'MAJOR REVISION': 1, 'REVISION OF': 1, 'NOT BACKWARD-COMPATIBLE': 1, 'BACKWARD-COMPATIBLE WITH': 1, 'WITH PREVIOUS': 1, 'PREVIOUS VERSIONS': 1, 'HOWEVER MANY': 1, 'ITS MAJOR': 1, 'MAJOR FEATURES': 1, 'FEATURES HAVE': 1, 'BEEN BACKPORTED': 1, 'BACKPORTED TO': 1, 'THE BACKWARD-COMPATIBLE': 1, 'BACKWARD-COMPATIBLE PYTHON': 1, 'VERSION SERIES': 1, 'END-OF-LIFE DATE': 1, 'DATE A.K.A': 1, 'EOL SUNSET': 1, 'SUNSET DATE': 1, 'DATE WAS': 1, 'WAS INITIALLY': 1, 'INITIALLY SET': 1, 'SET AT': 1, 'AT THEN': 1, 'THEN POSTPONED': 1, 'POSTPONED TO': 1, 'TO OUT': 1, 'OF CONCERN': 1, 'CONCERN THAT': 1, 'THAT A': 1, 'LARGE BODY': 1, 'BODY OF': 1, 'OF EXISTING': 1, 'EXISTING CODE': 1, 'CODE COULD': 1, 'COULD NOT': 1, 'NOT EASILY': 1, 'EASILY BE': 1, 'BE FORWARD-PORTED': 1, 'FORWARD-PORTED TO': 1, 'JANUARY GOOGLE': 1, 'GOOGLE ANNOUNCED': 1, 'ANNOUNCED WORK': 1, 'GO TRANSCOMPILER': 1, 'THE REGISTER': 1, 'REGISTER SPECULATED': 1, 'SPECULATED THAT': 1, 'THAT THIS': 1, 'WAS IN': 1, 'IN RESPONSE': 1, 'RESPONSE TO': 1, 'PLANNED END-OF-LIFE': 1, 'END-OF-LIFE BUT': 1, 'BUT GOOGLE': 1, 'GOOGLE CITED': 1, 'CITED PERFORMANCE': 1, 'PERFORMANCE UNDER': 1, 'UNDER CONCURRENT': 1, 'CONCURRENT WORKLOADS': 1, 'WORKLOADS AS': 1, 'AS THEIR': 1, 'THEIR ONLY': 1, 'ONLY MOTIVATION': 1, 'PHILOSOPHY EDIT': 1, 'A MULTI-PARADIGM': 1, 'MULTI-PARADIGM PROGRAMMING': 1, 'AND STRUCTURED': 1, 'STRUCTURED PROGRAMMING': 1, 'PROGRAMMING ARE': 1, 'ARE FULLY': 1, 'FULLY SUPPORTED': 1, 'SUPPORTED AND': 1, 'AND MANY': 1, 'ITS FEATURES': 1, 'FEATURES SUPPORT': 1, 'SUPPORT FUNCTIONAL': 1, 'AND ASPECT-ORIENTED': 1, 'ASPECT-ORIENTED PROGRAMMING': 1, 'PROGRAMMING INCLUDING': 1, 'INCLUDING BY': 1, 'BY METAPROGRAMMING': 1, 'AND METAOBJECTS': 1, 'METAOBJECTS MAGIC': 1, 'MAGIC METHODS': 1, 'OTHER PARADIGMS': 1, 'PARADIGMS ARE': 1, 'SUPPORTED VIA': 1, 'VIA EXTENSIONS': 1, 'EXTENSIONS INCLUDING': 1, 'INCLUDING DESIGN': 1, 'DESIGN BY': 1, 'BY CONTRACT': 1, 'CONTRACT AND': 1, 'AND LOGIC': 1, 'LOGIC PROGRAMMING': 1, 'USES DYNAMIC': 1, 'A COMBINATION': 1, 'COMBINATION OF': 1, 'OF REFERENCE': 1, 'REFERENCE COUNTING': 1, 'COUNTING AND': 1, 'COLLECTOR FOR': 1, 'FOR MEMORY': 1, 'ALSO FEATURES': 1, 'FEATURES DYNAMIC': 1, 'DYNAMIC NAME': 1, 'NAME RESOLUTION': 1, 'RESOLUTION LATE': 1, 'LATE BINDING': 1, 'BINDING WHICH': 1, 'WHICH BINDS': 1, 'BINDS METHOD': 1, 'AND VARIABLE': 1, 'NAMES DURING': 1, 'DURING PROGRAM': 1, 'PROGRAM EXECUTION': 1, 'DESIGN OFFERS': 1, 'OFFERS SOME': 1, 'SOME SUPPORT': 1, 'FOR FUNCTIONAL': 1, 'THE LISP': 1, 'LISP TRADITION': 1, 'HAS FILTER': 1, 'FILTER MAP': 1, 'MAP AND': 1, 'AND REDUCE': 1, 'REDUCE FUNCTIONS': 1, 'FUNCTIONS LIST': 1, 'COMPREHENSIONS DICTIONARIES': 1, 'DICTIONARIES AND': 1, 'AND SETS': 1, 'SETS AND': 1, 'AND GENERATOR': 1, 'LIBRARY HAS': 1, 'HAS TWO': 1, 'TWO MODULES': 1, 'MODULES ITERTOOLS': 1, 'ITERTOOLS AND': 1, 'AND FUNCTOOLS': 1, 'FUNCTOOLS THAT': 1, 'THAT IMPLEMENT': 1, 'IMPLEMENT FUNCTIONAL': 1, 'FUNCTIONAL TOOLS': 1, 'TOOLS BORROWED': 1, 'BORROWED FROM': 1, 'FROM HASKELL': 1, 'HASKELL AND': 1, 'AND STANDARD': 1, 'STANDARD ML': 1, \"LANGUAGE'S CORE\": 1, 'CORE PHILOSOPHY': 1, 'PHILOSOPHY IS': 1, 'IS SUMMARIZED': 1, 'SUMMARIZED IN': 1, 'DOCUMENT THE': 1, 'PYTHON PEP': 1, 'PEP WHICH': 1, 'WHICH INCLUDES': 1, 'INCLUDES APHORISMS': 1, 'APHORISMS SUCH': 1, 'AS BEAUTIFUL': 1, 'BEAUTIFUL IS': 1, 'THAN UGLY': 1, 'UGLY EXPLICIT': 1, 'EXPLICIT IS': 1, 'THAN IMPLICIT': 1, 'IMPLICIT SIMPLE': 1, 'SIMPLE IS': 1, 'THAN COMPLEX': 1, 'COMPLEX COMPLEX': 1, 'COMPLEX IS': 1, 'THAN COMPLICATED': 1, 'COMPLICATED READABILITY': 1, 'READABILITY COUNTS': 1, 'COUNTS RATHER': 1, 'THAN HAVING': 1, 'HAVING ALL': 1, 'ITS FUNCTIONALITY': 1, 'FUNCTIONALITY BUILT': 1, 'BUILT INTO': 1, 'INTO ITS': 1, 'CORE PYTHON': 1, 'DESIGNED TO': 1, 'BE HIGHLY': 1, 'HIGHLY EXTENSIBLE': 1, 'THIS COMPACT': 1, 'COMPACT MODULARITY': 1, 'MODULARITY HAS': 1, 'HAS MADE': 1, 'MADE IT': 1, 'IT PARTICULARLY': 1, 'PARTICULARLY POPULAR': 1, 'POPULAR AS': 1, 'A MEANS': 1, 'MEANS OF': 1, 'OF ADDING': 1, 'ADDING PROGRAMMABLE': 1, 'PROGRAMMABLE INTERFACES': 1, 'INTERFACES TO': 1, 'TO EXISTING': 1, 'EXISTING APPLICATIONS': 1, \"VAN ROSSUM'S\": 1, \"ROSSUM'S VISION\": 1, 'VISION OF': 1, 'A SMALL': 1, 'SMALL CORE': 1, 'CORE LANGUAGE': 1, 'AND EASILY': 1, 'EASILY EXTENSIBLE': 1, 'EXTENSIBLE INTERPRETER': 1, 'INTERPRETER STEMMED': 1, 'STEMMED FROM': 1, 'FROM HIS': 1, 'HIS FRUSTRATIONS': 1, 'FRUSTRATIONS WITH': 1, 'WITH ABC': 1, 'ABC WHICH': 1, 'WHICH ESPOUSED': 1, 'ESPOUSED THE': 1, 'THE OPPOSITE': 1, 'OPPOSITE APPROACH': 1, 'WHILE OFFERING': 1, 'OFFERING CHOICE': 1, 'CHOICE IN': 1, 'IN CODING': 1, 'CODING METHODOLOGY': 1, 'METHODOLOGY THE': 1, 'PYTHON PHILOSOPHY': 1, 'REJECTS EXUBERANT': 1, 'EXUBERANT SYNTAX': 1, 'SYNTAX SUCH': 1, 'AS THAT': 1, 'THAT OF': 1, 'OF PERL': 1, 'PERL IN': 1, 'A SIMPLER': 1, 'SIMPLER LESS-CLUTTERED': 1, 'LESS-CLUTTERED GRAMMAR': 1, 'AS ALEX': 1, 'ALEX MARTELLI': 1, 'MARTELLI PUT': 1, 'PUT IT': 1, 'IT TO': 1, 'DESCRIBE SOMETHING': 1, 'SOMETHING AS': 1, 'AS CLEVER': 1, 'CLEVER IS': 1, 'NOT CONSIDERED': 1, 'CONSIDERED A': 1, 'A COMPLIMENT': 1, 'COMPLIMENT IN': 1, \"CULTURE PYTHON'S\": 1, \"PYTHON'S PHILOSOPHY\": 1, 'REJECTS THE': 1, 'THE PERL': 1, 'PERL THERE': 1, 'IS MORE': 1, 'MORE THAN': 1, 'THAN ONE': 1, 'ONE WAY': 1, 'IT APPROACH': 1, 'APPROACH TO': 1, 'TO LANGUAGE': 1, 'DESIGN IN': 1, 'OF THERE': 1, 'THERE SHOULD': 1, 'BE ONEAND': 1, 'ONEAND PREFERABLY': 1, 'PREFERABLY ONLY': 1, 'ONLY ONEOBVIOUS': 1, 'ONEOBVIOUS WAY': 1, 'DEVELOPERS STRIVE': 1, 'STRIVE TO': 1, 'TO AVOID': 1, 'AVOID PREMATURE': 1, 'PREMATURE OPTIMIZATION': 1, 'OPTIMIZATION AND': 1, 'AND REJECT': 1, 'REJECT PATCHES': 1, 'PATCHES TO': 1, 'TO NON-CRITICAL': 1, 'NON-CRITICAL PARTS': 1, 'WOULD OFFER': 1, 'OFFER MARGINAL': 1, 'MARGINAL INCREASES': 1, 'INCREASES IN': 1, 'IN SPEED': 1, 'SPEED AT': 1, 'AT THE': 1, 'THE COST': 1, 'COST OF': 1, 'OF CLARITY': 1, 'WHEN SPEED': 1, 'SPEED IS': 1, 'IS IMPORTANT': 1, 'IMPORTANT A': 1, 'PYTHON PROGRAMMER': 1, 'PROGRAMMER CAN': 1, 'CAN MOVE': 1, 'MOVE TIME-CRITICAL': 1, 'TIME-CRITICAL FUNCTIONS': 1, 'FUNCTIONS TO': 1, 'TO EXTENSION': 1, 'EXTENSION MODULES': 1, 'MODULES WRITTEN': 1, 'IN LANGUAGES': 1, 'AS OR': 1, 'OR USE': 1, 'USE PYPY': 1, 'CYTHON IS': 1, 'ALSO AVAILABLE': 1, 'AVAILABLE WHICH': 1, 'WHICH TRANSLATES': 1, 'TRANSLATES A': 1, 'PYTHON SCRIPT': 1, 'SCRIPT INTO': 1, 'INTO AND': 1, 'AND MAKES': 1, 'MAKES DIRECT': 1, 'DIRECT C-LEVEL': 1, 'C-LEVEL API': 1, 'API CALLS': 1, 'CALLS INTO': 1, 'INTO THE': 1, 'AN IMPORTANT': 1, 'IMPORTANT GOAL': 1, 'GOAL OF': 1, 'DEVELOPERS IS': 1, 'IS KEEPING': 1, 'KEEPING IT': 1, 'IT FUN': 1, 'FUN TO': 1, \"LANGUAGE'S NAMEA\": 1, 'NAMEA TRIBUTE': 1, 'TRIBUTE TO': 1, 'AND IN': 1, 'IN OCCASIONALLY': 1, 'OCCASIONALLY PLAYFUL': 1, 'PLAYFUL APPROACHES': 1, 'APPROACHES TO': 1, 'TO TUTORIALS': 1, 'TUTORIALS AND': 1, 'AND REFERENCE': 1, 'REFERENCE MATERIALS': 1, 'MATERIALS SUCH': 1, 'AS EXAMPLES': 1, 'EXAMPLES THAT': 1, 'THAT REFER': 1, 'REFER TO': 1, 'TO SPAM': 1, 'EGGS FROM': 1, 'A FAMOUS': 1, 'FAMOUS MONTY': 1, 'PYTHON SKETCH': 1, 'SKETCH INSTEAD': 1, 'STANDARD FOO': 1, 'COMMON NEOLOGISM': 1, 'NEOLOGISM IN': 1, 'COMMUNITY IS': 1, 'PYTHONIC WHICH': 1, 'CAN HAVE': 1, 'OF MEANINGS': 1, 'MEANINGS RELATED': 1, 'PROGRAM STYLE': 1, 'THAT CODE': 1, 'PYTHONIC IS': 1, 'IT USES': 1, 'PYTHON IDIOMS': 1, 'IDIOMS WELL': 1, 'WELL THAT': 1, 'IS NATURAL': 1, 'NATURAL OR': 1, 'OR SHOWS': 1, 'SHOWS FLUENCY': 1, 'FLUENCY IN': 1, 'IT CONFORMS': 1, 'CONFORMS WITH': 1, \"WITH PYTHON'S\": 1, \"PYTHON'S MINIMALIST\": 1, 'MINIMALIST PHILOSOPHY': 1, 'PHILOSOPHY AND': 1, 'AND EMPHASIS': 1, 'EMPHASIS ON': 1, 'ON READABILITY': 1, 'CONTRAST CODE': 1, 'CODE THAT': 1, 'IS DIFFICULT': 1, 'DIFFICULT TO': 1, 'TO UNDERSTAND': 1, 'UNDERSTAND OR': 1, 'OR READS': 1, 'READS LIKE': 1, 'ROUGH TRANSCRIPTION': 1, 'TRANSCRIPTION FROM': 1, 'FROM ANOTHER': 1, 'ANOTHER PROGRAMMING': 1, 'IS CALLED': 1, 'CALLED UNPYTHONIC': 1, 'USERS AND': 1, 'AND ADMIRERS': 1, 'ADMIRERS OF': 1, 'PYTHON ESPECIALLY': 1, 'ESPECIALLY THOSE': 1, 'THOSE CONSIDERED': 1, 'CONSIDERED KNOWLEDGEABLE': 1, 'KNOWLEDGEABLE OR': 1, 'OR EXPERIENCED': 1, 'EXPERIENCED ARE': 1, 'OFTEN REFERRED': 1, 'REFERRED TO': 1, 'TO AS': 1, 'AS PYTHONISTS': 1, 'PYTHONISTS PYTHONISTAS': 1, 'PYTHONISTAS AND': 1, 'AND PYTHONEERS': 1, 'SEMANTICS EDIT': 1, 'SEMANTICS PYTHON': 1, 'IS MEANT': 1, 'MEANT TO': 1, 'BE AN': 1, 'AN EASILY': 1, 'EASILY READABLE': 1, 'READABLE LANGUAGE': 1, 'ITS FORMATTING': 1, 'FORMATTING IS': 1, 'IS VISUALLY': 1, 'VISUALLY UNCLUTTERED': 1, 'UNCLUTTERED AND': 1, 'IT OFTEN': 1, 'OFTEN USES': 1, 'USES ENGLISH': 1, 'ENGLISH KEYWORDS': 1, 'KEYWORDS WHERE': 1, 'WHERE OTHER': 1, 'LANGUAGES USE': 1, 'USE PUNCTUATION': 1, 'UNLIKE MANY': 1, 'LANGUAGES IT': 1, 'USE CURLY': 1, 'CURLY BRACKETS': 1, 'BRACKETS TO': 1, 'BLOCKS AND': 1, 'AND SEMICOLONS': 1, 'SEMICOLONS AFTER': 1, 'AFTER STATEMENTS': 1, 'STATEMENTS ARE': 1, 'HAS FEWER': 1, 'FEWER SYNTACTIC': 1, 'SYNTACTIC EXCEPTIONS': 1, 'EXCEPTIONS AND': 1, 'AND SPECIAL': 1, 'SPECIAL CASES': 1, 'CASES THAN': 1, 'OR PASCAL': 1, 'INDENTATION EDIT': 1, 'SEMANTICS INDENTATION': 1, 'INDENTATION PYTHON': 1, 'USES WHITESPACE': 1, 'WHITESPACE INDENTATION': 1, 'INDENTATION RATHER': 1, 'THAN CURLY': 1, 'CURLY BRACES': 1, 'BRACES OR': 1, 'OR KEYWORDS': 1, 'KEYWORDS TO': 1, 'AN INCREASE': 1, 'INCREASE IN': 1, 'INDENTATION COMES': 1, 'COMES AFTER': 1, 'AFTER CERTAIN': 1, 'CERTAIN STATEMENTS': 1, 'STATEMENTS A': 1, 'A DECREASE': 1, 'DECREASE IN': 1, 'INDENTATION SIGNIFIES': 1, 'SIGNIFIES THE': 1, 'END OF': 1, 'CURRENT BLOCK': 1, 'THIS FEATURE': 1, 'FEATURE IS': 1, 'ALSO SOMETIMES': 1, 'SOMETIMES TERMED': 1, 'TERMED THE': 1, 'THE OFF-SIDE': 1, 'FLOW EDIT': 1, \"PYTHON'S STATEMENTS\": 1, 'STATEMENTS INCLUDE': 1, 'INCLUDE AMONG': 1, 'AMONG OTHERS': 1, 'OTHERS THE': 1, 'THE ASSIGNMENT': 1, 'STATEMENT TOKEN': 1, 'TOKEN THE': 1, 'EQUALS SIGN': 1, 'THIS OPERATES': 1, 'OPERATES DIFFERENTLY': 1, 'DIFFERENTLY THAN': 1, 'THAN IN': 1, 'IN TRADITIONAL': 1, 'TRADITIONAL IMPERATIVE': 1, 'IMPERATIVE PROGRAMMING': 1, 'LANGUAGES AND': 1, 'AND THIS': 1, 'THIS FUNDAMENTAL': 1, 'FUNDAMENTAL MECHANISM': 1, 'MECHANISM INCLUDING': 1, \"PYTHON'S VERSION\": 1, 'VERSION OF': 1, 'OF VARIABLES': 1, 'VARIABLES ILLUMINATES': 1, 'ILLUMINATES MANY': 1, 'OTHER FEATURES': 1, 'FEATURES OF': 1, 'ASSIGNMENT IN': 1, 'E.G TRANSLATES': 1, 'TO TYPED': 1, 'TYPED VARIABLE': 1, 'NUMERIC VALUE': 1, 'THE RIGHT-HAND': 1, 'RIGHT-HAND VALUE': 1, 'VALUE IS': 1, 'IS COPIED': 1, 'COPIED INTO': 1, 'AN ALLOCATED': 1, 'ALLOCATED STORAGE': 1, 'LOCATION FOR': 1, 'THE LEFT-HAND': 1, 'LEFT-HAND VARIABLE': 1, 'SYMBOLIC ADDRESS': 1, 'MEMORY ALLOCATED': 1, 'ALLOCATED TO': 1, 'VARIABLE IS': 1, 'IS LARGE': 1, 'LARGE ENOUGH': 1, 'ENOUGH POTENTIALLY': 1, 'POTENTIALLY QUITE': 1, 'QUITE LARGE': 1, 'LARGE FOR': 1, 'THE DECLARED': 1, 'DECLARED TYPE': 1, 'THE SIMPLEST': 1, 'SIMPLEST CASE': 1, 'PYTHON ASSIGNMENT': 1, 'ASSIGNMENT USING': 1, 'SAME EXAMPLE': 1, 'EXAMPLE TRANSLATES': 1, 'TO GENERIC': 1, 'GENERIC NAME': 1, 'A REFERENCE': 1, 'REFERENCE TO': 1, 'A SEPARATE': 1, 'SEPARATE DYNAMICALLY': 1, 'DYNAMICALLY ALLOCATED': 1, 'ALLOCATED OBJECT': 1, 'OBJECT OF': 1, 'NUMERIC INT': 1, 'INT TYPE': 1, 'OF VALUE': 1, 'VALUE THIS': 1, 'IS TERMED': 1, 'TERMED BINDING': 1, 'BINDING THE': 1, 'THE NAME': 1, 'NAME TO': 1, 'THE OBJECT': 1, \"THE NAME'S\": 1, \"NAME'S STORAGE\": 1, \"LOCATION DOESN'T\": 1, \"DOESN'T CONTAIN\": 1, 'CONTAIN THE': 1, 'THE INDICATED': 1, 'INDICATED VALUE': 1, 'VALUE IT': 1, 'IS IMPROPER': 1, 'IMPROPER TO': 1, 'TO CALL': 1, 'CALL IT': 1, 'IT A': 1, 'NAMES MAY': 1, 'BE SUBSEQUENTLY': 1, 'SUBSEQUENTLY REBOUND': 1, 'REBOUND AT': 1, 'AT ANY': 1, 'ANY TIME': 1, 'TIME TO': 1, 'TO OBJECTS': 1, 'OBJECTS OF': 1, 'OF GREATLY': 1, 'GREATLY VARYING': 1, 'VARYING TYPES': 1, 'TYPES INCLUDING': 1, 'INCLUDING STRINGS': 1, 'STRINGS PROCEDURES': 1, 'PROCEDURES COMPLEX': 1, 'COMPLEX OBJECTS': 1, 'OBJECTS WITH': 1, 'WITH DATA': 1, 'DATA AND': 1, 'METHODS ETC': 1, 'SUCCESSIVE ASSIGNMENTS': 1, 'ASSIGNMENTS OF': 1, 'COMMON VALUE': 1, 'VALUE TO': 1, 'TO MULTIPLE': 1, 'MULTIPLE NAMES': 1, 'NAMES E.G': 1, 'E.G RESULT': 1, 'RESULT IN': 1, 'IN ALLOCATING': 1, 'ALLOCATING STORAGE': 1, 'STORAGE TO': 1, 'TO AT': 1, 'AT MOST': 1, 'MOST THREE': 1, 'NAMES AND': 1, 'AND ONE': 1, 'ONE NUMERIC': 1, 'NUMERIC OBJECT': 1, 'OBJECT TO': 1, 'TO WHICH': 1, 'WHICH ALL': 1, 'ALL THREE': 1, 'NAMES ARE': 1, 'ARE BOUND': 1, 'SINCE A': 1, 'A GENERIC': 1, 'GENERIC REFERENCE': 1, 'REFERENCE HOLDER': 1, 'HOLDER IT': 1, 'IS UNREASONABLE': 1, 'UNREASONABLE TO': 1, 'TO ASSOCIATE': 1, 'ASSOCIATE A': 1, 'A FIXED': 1, 'FIXED DATA': 1, 'TYPE WITH': 1, 'WITH IT': 1, 'HOWEVER AT': 1, 'AT A': 1, 'A GIVEN': 1, 'GIVEN TIME': 1, 'TIME A': 1, 'NAME WILL': 1, 'WILL BE': 1, 'BE BOUND': 1, 'BOUND TO': 1, 'TO SOME': 1, 'SOME OBJECT': 1, 'OBJECT WHICH': 1, 'WHICH WILL': 1, 'WILL HAVE': 1, 'TYPE THUS': 1, 'THUS THERE': 1, 'IS DYNAMIC': 1, 'THE IF': 1, 'IF STATEMENT': 1, 'WHICH CONDITIONALLY': 1, 'CONDITIONALLY EXECUTES': 1, 'CODE ALONG': 1, 'ALONG WITH': 1, 'WITH ELSE': 1, 'ELSE AND': 1, 'AND ELIF': 1, 'ELIF A': 1, 'A CONTRACTION': 1, 'CONTRACTION OF': 1, 'OF ELSE-IF': 1, 'THE FOR': 1, 'FOR STATEMENT': 1, 'WHICH ITERATES': 1, 'ITERATES OVER': 1, 'OVER AN': 1, 'OBJECT CAPTURING': 1, 'CAPTURING EACH': 1, 'ELEMENT TO': 1, 'A LOCAL': 1, 'LOCAL VARIABLE': 1, 'VARIABLE FOR': 1, 'USE BY': 1, 'THE ATTACHED': 1, 'ATTACHED BLOCK': 1, 'THE WHILE': 1, 'WHILE STATEMENT': 1, 'CODE AS': 1, 'AS LONG': 1, 'LONG AS': 1, 'ITS CONDITION': 1, 'CONDITION IS': 1, 'IS TRUE': 1, 'THE TRY': 1, 'TRY STATEMENT': 1, 'WHICH ALLOWS': 1, 'ALLOWS EXCEPTIONS': 1, 'EXCEPTIONS RAISED': 1, 'RAISED IN': 1, 'ITS ATTACHED': 1, 'ATTACHED CODE': 1, 'BLOCK TO': 1, 'BE CAUGHT': 1, 'CAUGHT AND': 1, 'AND HANDLED': 1, 'HANDLED BY': 1, 'BY EXCEPT': 1, 'EXCEPT CLAUSES': 1, 'CLAUSES IT': 1, 'ALSO ENSURES': 1, 'ENSURES THAT': 1, 'THAT CLEAN-UP': 1, 'CLEAN-UP CODE': 1, 'CODE IN': 1, 'A FINALLY': 1, 'FINALLY BLOCK': 1, 'BLOCK WILL': 1, 'WILL ALWAYS': 1, 'ALWAYS BE': 1, 'BE RUN': 1, 'RUN REGARDLESS': 1, 'REGARDLESS OF': 1, 'OF HOW': 1, 'HOW THE': 1, 'BLOCK EXITS': 1, 'CLASS STATEMENT': 1, 'AND ATTACHES': 1, 'ATTACHES ITS': 1, 'ITS LOCAL': 1, 'LOCAL NAMESPACE': 1, 'NAMESPACE TO': 1, 'A CLASS': 1, 'IN OBJECT-ORIENTED': 1, 'THE DEF': 1, 'DEF STATEMENT': 1, 'WHICH DEFINES': 1, 'DEFINES A': 1, 'A FUNCTION': 1, 'THE WITH': 1, 'WITH STATEMENT': 1, 'STATEMENT FROM': 1, 'WHICH ENCLOSES': 1, 'ENCLOSES A': 1, 'A CODE': 1, 'BLOCK WITHIN': 1, 'WITHIN A': 1, 'A CONTEXT': 1, 'CONTEXT MANAGER': 1, 'MANAGER FOR': 1, 'EXAMPLE ACQUIRING': 1, 'ACQUIRING A': 1, 'A LOCK': 1, 'LOCK BEFORE': 1, 'BEFORE THE': 1, 'IS RUN': 1, 'RUN AND': 1, 'AND RELEASING': 1, 'RELEASING THE': 1, 'THE LOCK': 1, 'LOCK AFTERWARDS': 1, 'AFTERWARDS OR': 1, 'OR OPENING': 1, 'OPENING A': 1, 'A FILE': 1, 'FILE AND': 1, 'AND THEN': 1, 'THEN CLOSING': 1, 'CLOSING IT': 1, 'IT ALLOWING': 1, 'ALLOWING RESOURCE': 1, 'RESOURCE ACQUISITION': 1, 'ACQUISITION IS': 1, 'IS INITIALIZATION': 1, 'INITIALIZATION RAII)-LIKE': 1, 'RAII)-LIKE BEHAVIOR': 1, 'THE PASS': 1, 'PASS STATEMENT': 1, 'WHICH SERVES': 1, 'SERVES AS': 1, 'A NOP': 1, 'SYNTACTICALLY NEEDED': 1, 'NEEDED TO': 1, 'CREATE AN': 1, 'AN EMPTY': 1, 'EMPTY CODE': 1, 'THE ASSERT': 1, 'ASSERT STATEMENT': 1, 'STATEMENT USED': 1, 'USED DURING': 1, 'DURING DEBUGGING': 1, 'DEBUGGING TO': 1, 'TO CHECK': 1, 'CHECK FOR': 1, 'FOR CONDITIONS': 1, 'CONDITIONS THAT': 1, 'THAT OUGHT': 1, 'OUGHT TO': 1, 'TO APPLY': 1, 'THE YIELD': 1, 'YIELD STATEMENT': 1, 'WHICH RETURNS': 1, 'A VALUE': 1, 'VALUE FROM': 1, 'YIELD IS': 1, 'ALSO AN': 1, 'AN OPERATOR': 1, 'THIS FORM': 1, 'FORM IS': 1, 'TO IMPLEMENT': 1, 'IMPLEMENT COROUTINES': 1, 'THE IMPORT': 1, 'IMPORT STATEMENT': 1, 'TO IMPORT': 1, 'IMPORT MODULES': 1, 'MODULES WHOSE': 1, 'WHOSE FUNCTIONS': 1, 'FUNCTIONS OR': 1, 'OR VARIABLES': 1, 'VARIABLES CAN': 1, 'CURRENT PROGRAM': 1, 'TWO WAYS': 1, 'WAYS OF': 1, 'OF USING': 1, 'USING IMPORT': 1, 'IMPORT FROM': 1, 'FROM MODULE': 1, 'NAME IMPORT': 1, 'IMPORT OR': 1, 'OR IMPORT': 1, 'IMPORT MODULE': 1, 'PRINT STATEMENT': 1, 'STATEMENT WAS': 1, 'WAS CHANGED': 1, 'CHANGED TO': 1, 'PRINT FUNCTION': 1, 'FUNCTION IN': 1, 'PYTHON DOES': 1, 'NOT SUPPORT': 1, 'SUPPORT TAIL': 1, 'TAIL CALL': 1, 'CALL OPTIMIZATION': 1, 'OPTIMIZATION OR': 1, 'OR FIRST-CLASS': 1, 'FIRST-CLASS CONTINUATIONS': 1, 'CONTINUATIONS AND': 1, 'AND ACCORDING': 1, 'ACCORDING TO': 1, 'TO GUIDO': 1, 'ROSSUM IT': 1, 'IT NEVER': 1, 'NEVER WILL': 1, 'HOWEVER BETTER': 1, 'BETTER SUPPORT': 1, 'FOR COROUTINE-LIKE': 1, 'COROUTINE-LIKE FUNCTIONALITY': 1, 'FUNCTIONALITY IS': 1, 'IS PROVIDED': 1, 'PROVIDED IN': 1, 'BY EXTENDING': 1, \"EXTENDING PYTHON'S\": 1, \"PYTHON'S GENERATORS\": 1, 'GENERATORS WERE': 1, 'WERE LAZY': 1, 'LAZY ITERATORS': 1, 'ITERATORS INFORMATION': 1, 'INFORMATION WAS': 1, 'WAS PASSED': 1, 'PASSED UNIDIRECTIONALLY': 1, 'UNIDIRECTIONALLY OUT': 1, 'THE GENERATOR': 1, 'TO PASS': 1, 'PASS INFORMATION': 1, 'INFORMATION BACK': 1, 'BACK INTO': 1, 'FUNCTION AND': 1, 'INFORMATION CAN': 1, 'BE PASSED': 1, 'PASSED THROUGH': 1, 'THROUGH MULTIPLE': 1, 'MULTIPLE STACK': 1, 'STACK LEVELS': 1, 'EXPRESSIONS EDIT': 1, 'EDIT SOME': 1, 'SOME PYTHON': 1, 'PYTHON EXPRESSIONS': 1, 'EXPRESSIONS ARE': 1, 'ARE SIMILAR': 1, 'JAVA WHILE': 1, 'WHILE SOME': 1, 'SOME ARE': 1, 'NOT ADDITION': 1, 'ADDITION SUBTRACTION': 1, 'SUBTRACTION AND': 1, 'AND MULTIPLICATION': 1, 'MULTIPLICATION ARE': 1, 'ARE THE': 1, 'SAME BUT': 1, 'BUT THE': 1, 'DIVISION DIFFERS': 1, 'TWO TYPES': 1, 'TYPES OF': 1, 'OF DIVISIONS': 1, 'DIVISIONS IN': 1, 'ARE FLOOR': 1, 'AND INTEGER': 1, 'PYTHON ALSO': 1, 'ALSO ADDED': 1, 'ADDED THE': 1, 'IT ENABLES': 1, 'ENABLES SUPPORT': 1, 'SUPPORT OF': 1, 'OF MATRIX': 1, 'MULTIPLICATION WITH': 1, 'PYTHON COMPARES': 1, 'COMPARES BY': 1, 'VALUE VERSUS': 1, 'VERSUS JAVA': 1, 'JAVA WHICH': 1, 'WHICH COMPARES': 1, 'COMPARES NUMERICS': 1, 'NUMERICS BY': 1, 'VALUE AND': 1, 'AND OBJECTS': 1, 'OBJECTS BY': 1, 'VALUE COMPARISONS': 1, 'COMPARISONS IN': 1, 'JAVA ON': 1, 'OBJECTS CAN': 1, 'BE PERFORMED': 1, 'PERFORMED WITH': 1, 'EQUALS METHOD': 1, \"METHOD PYTHON'S\": 1, \"PYTHON'S IS\": 1, 'IS OPERATOR': 1, 'OPERATOR MAY': 1, 'TO COMPARE': 1, 'COMPARE OBJECT': 1, 'OBJECT IDENTITIES': 1, 'IDENTITIES COMPARISON': 1, 'COMPARISON BY': 1, 'PYTHON COMPARISONS': 1, 'COMPARISONS MAY': 1, 'BE CHAINED': 1, 'CHAINED FOR': 1, 'THE WORDS': 1, 'WORDS AND': 1, 'AND OR': 1, 'OR NOT': 1, 'NOT FOR': 1, 'FOR ITS': 1, 'ITS BOOLEAN': 1, 'BOOLEAN OPERATORS': 1, 'OPERATORS RATHER': 1, 'THAN THE': 1, 'SYMBOLIC USED': 1, 'OF EXPRESSION': 1, 'A LIST': 1, 'LIST COMPREHENSION': 1, 'EXTENDED LIST': 1, 'COMPREHENSIONS INTO': 1, 'A MORE': 1, 'MORE GENERAL': 1, 'GENERAL EXPRESSION': 1, 'GENERATOR EXPRESSION': 1, 'ANONYMOUS FUNCTIONS': 1, 'FUNCTIONS ARE': 1, 'ARE IMPLEMENTED': 1, 'IMPLEMENTED USING': 1, 'USING LAMBDA': 1, 'EXPRESSIONS HOWEVER': 1, 'HOWEVER THESE': 1, 'THESE ARE': 1, 'ARE LIMITED': 1, 'LIMITED IN': 1, 'IN THAT': 1, 'THE BODY': 1, 'BODY CAN': 1, 'CAN ONLY': 1, 'ONLY BE': 1, 'BE ONE': 1, 'ONE EXPRESSION': 1, 'EXPRESSIONS IN': 1, 'AS IF': 1, 'IF ELSE': 1, 'ELSE DIFFERENT': 1, 'DIFFERENT IN': 1, 'ORDER OF': 1, 'OF OPERANDS': 1, 'OPERANDS FROM': 1, 'OPERATOR COMMON': 1, 'COMMON TO': 1, 'PYTHON MAKES': 1, 'MAKES A': 1, 'BETWEEN LISTS': 1, 'LISTS AND': 1, 'AND TUPLES': 1, 'LISTS ARE': 1, 'ARE MUTABLE': 1, 'MUTABLE AND': 1, 'AND CANNOT': 1, 'DICTIONARIES DICTIONARY': 1, 'DICTIONARY KEYS': 1, 'BE IMMUTABLE': 1, 'IMMUTABLE IN': 1, 'TUPLES ARE': 1, 'IMMUTABLE AND': 1, 'AND THUS': 1, 'THUS CAN': 1, 'DICTIONARIES PROVIDED': 1, 'PROVIDED ALL': 1, 'ALL ELEMENTS': 1, 'THE TUPLE': 1, 'TUPLE ARE': 1, 'OPERATOR CAN': 1, 'TO CONCATENATE': 1, 'CONCATENATE TWO': 1, 'TWO TUPLES': 1, 'TUPLES WHICH': 1, 'WHICH DOES': 1, 'NOT DIRECTLY': 1, 'DIRECTLY MODIFY': 1, 'MODIFY THEIR': 1, 'THEIR CONTENTS': 1, 'CONTENTS BUT': 1, 'BUT RATHER': 1, 'RATHER PRODUCES': 1, 'PRODUCES A': 1, 'NEW TUPLE': 1, 'TUPLE CONTAINING': 1, 'CONTAINING THE': 1, 'THE ELEMENTS': 1, 'BOTH PROVIDED': 1, 'PROVIDED TUPLES': 1, 'THUS GIVEN': 1, 'GIVEN THE': 1, 'VARIABLE INITIALLY': 1, 'INITIALLY EQUAL': 1, 'EQUAL TO': 1, 'TO EXECUTING': 1, 'EXECUTING FIRST': 1, 'FIRST EVALUATES': 1, 'EVALUATES WHICH': 1, 'WHICH YIELDS': 1, 'YIELDS WHICH': 1, 'THEN ASSIGNED': 1, 'ASSIGNED BACK': 1, 'BACK TO': 1, 'TO THEREBY': 1, 'THEREBY EFFECTIVELY': 1, 'EFFECTIVELY MODIFYING': 1, 'MODIFYING THE': 1, 'THE CONTENTS': 1, 'CONTENTS OF': 1, 'OF WHILE': 1, 'WHILE CONFORMING': 1, 'CONFORMING TO': 1, 'THE IMMUTABLE': 1, 'IMMUTABLE NATURE': 1, 'OF TUPLE': 1, 'TUPLE OBJECTS': 1, 'PARENTHESES ARE': 1, 'OPTIONAL FOR': 1, 'FOR TUPLES': 1, 'TUPLES IN': 1, 'IN UNAMBIGUOUS': 1, 'UNAMBIGUOUS CONTEXTS': 1, 'FEATURES SEQUENCE': 1, 'SEQUENCE UNPACKING': 1, 'UNPACKING WHERE': 1, 'WHERE MULTIPLE': 1, 'MULTIPLE EXPRESSIONS': 1, 'EXPRESSIONS EACH': 1, 'EACH EVALUATING': 1, 'EVALUATING TO': 1, 'TO ANYTHING': 1, 'ANYTHING THAT': 1, 'THAT CAN': 1, 'BE ASSIGNED': 1, 'ASSIGNED TO': 1, 'VARIABLE A': 1, 'A WRITABLE': 1, 'WRITABLE PROPERTY': 1, 'PROPERTY ETC': 1, 'ETC ARE': 1, 'ARE ASSOCIATED': 1, 'ASSOCIATED IN': 1, 'THE IDENTICAL': 1, 'IDENTICAL MANNER': 1, 'MANNER TO': 1, 'TO THAT': 1, 'THAT FORMING': 1, 'FORMING TUPLE': 1, 'TUPLE LITERALS': 1, 'LITERALS AND': 1, 'AND AS': 1, 'A WHOLE': 1, 'WHOLE ARE': 1, 'ARE PUT': 1, 'PUT ON': 1, 'LEFT HAND': 1, 'SIGN IN': 1, 'THE STATEMENT': 1, 'STATEMENT EXPECTS': 1, 'EXPECTS AN': 1, 'OBJECT ON': 1, 'RIGHT HAND': 1, 'SIGN THAT': 1, 'THAT PRODUCES': 1, 'PRODUCES THE': 1, 'SAME NUMBER': 1, 'OF VALUES': 1, 'VALUES AS': 1, 'THE PROVIDED': 1, 'PROVIDED WRITABLE': 1, 'WRITABLE EXPRESSIONS': 1, 'EXPRESSIONS WHEN': 1, 'WHEN ITERATED': 1, 'ITERATED THROUGH': 1, 'THROUGH AND': 1, 'AND WILL': 1, 'WILL ITERATE': 1, 'ITERATE THROUGH': 1, 'THROUGH IT': 1, 'IT ASSIGNING': 1, 'ASSIGNING EACH': 1, 'EACH OF': 1, 'THE PRODUCED': 1, 'PRODUCED VALUES': 1, 'VALUES TO': 1, 'THE CORRESPONDING': 1, 'CORRESPONDING EXPRESSION': 1, 'EXPRESSION ON': 1, 'CITATION NEEDED': 1, 'NEEDED PYTHON': 1, 'STRING FORMAT': 1, 'FORMAT OPERATOR': 1, 'THIS FUNCTIONS': 1, 'FUNCTIONS ANALOGOUS': 1, 'ANALOGOUS TO': 1, 'TO PRINTF': 1, 'PRINTF FORMAT': 1, 'FORMAT STRINGS': 1, 'STRINGS IN': 1, 'SPAM=%S EGGS=%D': 1, 'EGGS=%D BLAH': 1, 'BLAH EVALUATES': 1, 'EVALUATES TO': 1, 'TO SPAM=BLAH': 1, 'SPAM=BLAH EGGS': 1, 'WAS SUPPLEMENTED': 1, 'SUPPLEMENTED BY': 1, 'THE FORMAT': 1, 'FORMAT METHOD': 1, 'METHOD OF': 1, 'THE STR': 1, 'STR CLASS': 1, 'CLASS E.G': 1, 'SPAM EGGS': 1, 'EGGS FORMAT(\"BLAH': 1, 'FORMAT(\"BLAH PYTHON': 1, 'ADDED F-STRINGS': 1, 'F-STRINGS F\\'SPAM={\"BLAH': 1, 'F\\'SPAM={\"BLAH EGGS': 1, 'HAS VARIOUS': 1, 'VARIOUS KINDS': 1, 'LITERALS STRINGS': 1, 'STRINGS DELIMITED': 1, 'DELIMITED BY': 1, 'BY SINGLE': 1, 'UNLIKE IN': 1, 'IN UNIX': 1, 'UNIX SHELLS': 1, 'AND PERL-INFLUENCED': 1, 'PERL-INFLUENCED LANGUAGES': 1, 'LANGUAGES SINGLE': 1, 'SINGLE QUOTE': 1, 'MARKS AND': 1, 'AND DOUBLE': 1, 'MARKS FUNCTION': 1, 'FUNCTION IDENTICALLY': 1, 'STRING USE': 1, 'THE BACKSLASH': 1, 'BACKSLASH AS': 1, 'AN ESCAPE': 1, 'ESCAPE CHARACTER': 1, 'INTERPOLATION BECAME': 1, 'BECAME AVAILABLE': 1, 'AVAILABLE IN': 1, 'AS FORMATTED': 1, 'FORMATTED STRING': 1, 'TRIPLE-QUOTED STRINGS': 1, 'STRINGS WHICH': 1, 'WHICH BEGIN': 1, 'BEGIN AND': 1, 'AND END': 1, 'END WITH': 1, 'A SERIES': 1, 'SERIES OF': 1, 'OF THREE': 1, 'THREE SINGLE': 1, 'THEY MAY': 1, 'MAY SPAN': 1, 'SPAN MULTIPLE': 1, 'LINES AND': 1, 'AND FUNCTION': 1, 'FUNCTION LIKE': 1, 'LIKE HERE': 1, 'HERE DOCUMENTS': 1, 'DOCUMENTS IN': 1, 'IN SHELLS': 1, 'AND RUBY': 1, 'RAW STRING': 1, 'STRING VARIETIES': 1, 'VARIETIES DENOTED': 1, 'DENOTED BY': 1, 'BY PREFIXING': 1, 'PREFIXING THE': 1, 'THE STRING': 1, 'STRING LITERAL': 1, 'LITERAL WITH': 1, 'WITH AN': 1, 'ESCAPE SEQUENCES': 1, 'SEQUENCES ARE': 1, 'NOT INTERPRETED': 1, 'INTERPRETED HENCE': 1, 'HENCE RAW': 1, 'RAW STRINGS': 1, 'STRINGS ARE': 1, 'ARE USEFUL': 1, 'USEFUL WHERE': 1, 'WHERE LITERAL': 1, 'LITERAL BACKSLASHES': 1, 'BACKSLASHES ARE': 1, 'ARE COMMON': 1, 'COMMON SUCH': 1, 'AS REGULAR': 1, 'AND WINDOWS-STYLE': 1, 'WINDOWS-STYLE PATHS': 1, 'COMPARE QUOTING': 1, 'QUOTING IN': 1, 'HAS ARRAY': 1, 'ARRAY INDEX': 1, 'INDEX AND': 1, 'AND ARRAY': 1, 'ARRAY SLICING': 1, 'SLICING EXPRESSIONS': 1, 'EXPRESSIONS ON': 1, 'ON LISTS': 1, 'LISTS DENOTED': 1, 'DENOTED AS': 1, 'A KEY': 1, 'KEY A': 1, 'A START:STOP': 1, 'START:STOP OR': 1, 'A START:STOP:STEP': 1, 'ARE ZERO-BASED': 1, 'ZERO-BASED AND': 1, 'NEGATIVE INDEXES': 1, 'ARE RELATIVE': 1, 'RELATIVE TO': 1, 'SLICES TAKE': 1, 'TAKE ELEMENTS': 1, 'ELEMENTS FROM': 1, 'THE START': 1, 'START INDEX': 1, 'INDEX UP': 1, 'UP TO': 1, 'TO BUT': 1, 'BUT NOT': 1, 'NOT INCLUDING': 1, 'THE STOP': 1, 'STOP INDEX': 1, 'THIRD SLICE': 1, 'SLICE PARAMETER': 1, 'PARAMETER CALLED': 1, 'CALLED STEP': 1, 'STEP OR': 1, 'OR STRIDE': 1, 'STRIDE ALLOWS': 1, 'ALLOWS ELEMENTS': 1, 'ELEMENTS TO': 1, 'BE SKIPPED': 1, 'SKIPPED AND': 1, 'AND REVERSED': 1, 'SLICE INDEXES': 1, 'INDEXES MAY': 1, 'BE OMITTED': 1, 'OMITTED FOR': 1, 'A RETURNS': 1, 'THE ENTIRE': 1, 'ENTIRE LIST': 1, 'ELEMENT OF': 1, 'A SLICE': 1, 'SLICE IS': 1, 'A SHALLOW': 1, 'SHALLOW COPY': 1, 'BETWEEN EXPRESSIONS': 1, 'AND STATEMENTS': 1, 'STATEMENTS IS': 1, 'IS RIGIDLY': 1, 'RIGIDLY ENFORCED': 1, 'ENFORCED IN': 1, 'AS COMMON': 1, 'COMMON LISP': 1, 'LISP SCHEME': 1, 'SCHEME OR': 1, 'THIS LEADS': 1, 'LEADS TO': 1, 'TO DUPLICATING': 1, 'DUPLICATING SOME': 1, 'SOME FUNCTIONALITY': 1, 'EXAMPLE LIST': 1, 'COMPREHENSIONS VS': 1, 'FOR-LOOPS CONDITIONAL': 1, 'EXPRESSIONS VS': 1, 'IF BLOCKS': 1, 'BLOCKS THE': 1, 'THE EVAL': 1, 'EVAL VS': 1, 'EXEC BUILT-IN': 1, 'FUNCTIONS IN': 1, 'PYTHON EXEC': 1, 'EXEC IS': 1, 'A STATEMENT': 1, 'STATEMENT THE': 1, 'THE FORMER': 1, 'FORMER IS': 1, 'FOR EXPRESSIONS': 1, 'EXPRESSIONS THE': 1, 'LATTER IS': 1, 'FOR STATEMENTS': 1, 'STATEMENTS CANNOT': 1, 'A PART': 1, 'OF AN': 1, 'AN EXPRESSION': 1, 'EXPRESSION SO': 1, 'SO LIST': 1, 'LIST AND': 1, 'OTHER COMPREHENSIONS': 1, 'COMPREHENSIONS OR': 1, 'OR LAMBDA': 1, 'EXPRESSIONS ALL': 1, 'ALL BEING': 1, 'BEING EXPRESSIONS': 1, 'EXPRESSIONS CANNOT': 1, 'CANNOT CONTAIN': 1, 'CONTAIN STATEMENTS': 1, 'A PARTICULAR': 1, 'PARTICULAR CASE': 1, 'IS THAT': 1, 'THAT AN': 1, 'STATEMENT SUCH': 1, 'A CANNOT': 1, 'CANNOT FORM': 1, 'FORM PART': 1, 'THE CONDITIONAL': 1, 'CONDITIONAL EXPRESSION': 1, 'EXPRESSION OF': 1, 'A CONDITIONAL': 1, 'CONDITIONAL STATEMENT': 1, 'THIS HAS': 1, 'THE ADVANTAGE': 1, 'OF AVOIDING': 1, 'AVOIDING A': 1, 'A CLASSIC': 1, 'CLASSIC ERROR': 1, 'ERROR OF': 1, 'OF MISTAKING': 1, 'MISTAKING AN': 1, 'ASSIGNMENT OPERATOR': 1, 'AN EQUALITY': 1, 'EQUALITY OPERATOR': 1, 'IN CONDITIONS': 1, 'CONDITIONS IF': 1, 'SYNTACTICALLY VALID': 1, 'VALID BUT': 1, 'BUT PROBABLY': 1, 'PROBABLY UNINTENDED': 1, 'UNINTENDED CODE': 1, 'CODE BUT': 1, 'BUT IF': 1, 'SYNTAX ERROR': 1, 'ERROR IN': 1, 'METHODS EDIT': 1, 'EDIT METHODS': 1, 'METHODS ON': 1, 'OBJECTS ARE': 1, 'ARE FUNCTIONS': 1, 'FUNCTIONS ATTACHED': 1, 'ATTACHED TO': 1, \"THE OBJECT'S\": 1, \"OBJECT'S CLASS\": 1, 'SYNTAX INSTANCE.METHOD(ARGUMENT': 1, 'INSTANCE.METHOD(ARGUMENT IS': 1, 'FOR NORMAL': 1, 'NORMAL METHODS': 1, 'METHODS AND': 1, 'AND FUNCTIONS': 1, 'FUNCTIONS SYNTACTIC': 1, 'SYNTACTIC SUGAR': 1, 'SUGAR FOR': 1, 'FOR CLASS.METHOD(INSTANCE': 1, 'CLASS.METHOD(INSTANCE ARGUMENT': 1, 'PYTHON METHODS': 1, 'METHODS HAVE': 1, 'AN EXPLICIT': 1, 'EXPLICIT SELF': 1, 'SELF PARAMETER': 1, 'PARAMETER TO': 1, 'TO ACCESS': 1, 'ACCESS INSTANCE': 1, 'INSTANCE DATA': 1, 'DATA IN': 1, 'THE IMPLICIT': 1, 'IMPLICIT SELF': 1, 'SELF OR': 1, 'OR THIS': 1, 'THIS IN': 1, 'IN SOME': 1, 'SOME OTHER': 1, 'OTHER OBJECT-ORIENTED': 1, 'LANGUAGES E.G': 1, 'E.G JAVA': 1, 'JAVA OBJECTIVE-C': 1, 'OBJECTIVE-C OR': 1, 'TYPING EDIT': 1, 'USES DUCK': 1, 'DUCK TYPING': 1, 'HAS TYPED': 1, 'TYPED OBJECTS': 1, 'OBJECTS BUT': 1, 'BUT UNTYPED': 1, 'UNTYPED VARIABLE': 1, 'TYPE CONSTRAINTS': 1, 'CONSTRAINTS ARE': 1, 'CHECKED AT': 1, 'AT COMPILE': 1, 'COMPILE TIME': 1, 'TIME RATHER': 1, 'RATHER OPERATIONS': 1, 'OPERATIONS ON': 1, 'ON AN': 1, 'AN OBJECT': 1, 'OBJECT MAY': 1, 'MAY FAIL': 1, 'FAIL SIGNIFYING': 1, 'SIGNIFYING THAT': 1, 'THE GIVEN': 1, 'GIVEN OBJECT': 1, 'NOT OF': 1, 'A SUITABLE': 1, 'SUITABLE TYPE': 1, 'DESPITE BEING': 1, 'BEING DYNAMICALLY': 1, 'DYNAMICALLY TYPED': 1, 'TYPED PYTHON': 1, 'IS STRONGLY': 1, 'STRONGLY TYPED': 1, 'TYPED FORBIDDING': 1, 'FORBIDDING OPERATIONS': 1, 'OPERATIONS THAT': 1, 'THAT ARE': 1, 'NOT WELL-DEFINED': 1, 'WELL-DEFINED FOR': 1, 'EXAMPLE ADDING': 1, 'ADDING A': 1, 'A NUMBER': 1, 'NUMBER TO': 1, 'STRING RATHER': 1, 'THAN SILENTLY': 1, 'SILENTLY ATTEMPTING': 1, 'ATTEMPTING TO': 1, 'TO MAKE': 1, 'MAKE SENSE': 1, 'SENSE OF': 1, 'OF THEM': 1, 'TO DEFINE': 1, 'DEFINE THEIR': 1, 'THEIR OWN': 1, 'OWN TYPES': 1, 'TYPES USING': 1, 'USING CLASSES': 1, 'CLASSES WHICH': 1, 'WHICH ARE': 1, 'ARE MOST': 1, 'MOST OFTEN': 1, 'FOR OBJECT-ORIENTED': 1, 'NEW INSTANCES': 1, 'ARE CONSTRUCTED': 1, 'CONSTRUCTED BY': 1, 'BY CALLING': 1, 'CALLING THE': 1, 'EXAMPLE SPAMCLASS': 1, 'SPAMCLASS OR': 1, 'OR EGGSCLASS': 1, 'EGGSCLASS AND': 1, 'THE CLASSES': 1, 'THE METACLASS': 1, 'METACLASS TYPE': 1, 'TYPE ITSELF': 1, 'ITSELF AN': 1, 'AN INSTANCE': 1, 'INSTANCE OF': 1, 'OF ITSELF': 1, 'ITSELF ALLOWING': 1, 'ALLOWING METAPROGRAMMING': 1, 'AND REFLECTION': 1, 'BEFORE VERSION': 1, 'PYTHON HAD': 1, 'HAD TWO': 1, 'TWO KINDS': 1, 'CLASSES OLD-STYLE': 1, 'OLD-STYLE AND': 1, 'AND NEW-STYLE': 1, 'BOTH STYLES': 1, 'STYLES IS': 1, 'SAME THE': 1, 'THE DIFFERENCE': 1, 'DIFFERENCE BEING': 1, 'BEING WHETHER': 1, 'WHETHER THE': 1, 'CLASS OBJECT': 1, 'IS INHERITED': 1, 'INHERITED FROM': 1, 'FROM DIRECTLY': 1, 'DIRECTLY OR': 1, 'OR INDIRECTLY': 1, 'INDIRECTLY ALL': 1, 'ALL NEW-STYLE': 1, 'NEW-STYLE CLASSES': 1, 'CLASSES INHERIT': 1, 'INHERIT FROM': 1, 'FROM OBJECT': 1, 'OBJECT AND': 1, 'OF TYPE': 1, 'IN VERSIONS': 1, 'VERSIONS OF': 1, 'PYTHON FROM': 1, 'ONWARDS BOTH': 1, 'CLASSES CAN': 1, 'OLD-STYLE CLASSES': 1, 'CLASSES WERE': 1, 'WERE ELIMINATED': 1, 'ELIMINATED IN': 1, 'THE LONG': 1, 'LONG TERM': 1, 'TERM PLAN': 1, 'PLAN IS': 1, 'TO SUPPORT': 1, 'SUPPORT GRADUAL': 1, 'GRADUAL TYPING': 1, 'LANGUAGE ALLOWS': 1, 'ALLOWS SPECIFYING': 1, 'SPECIFYING STATIC': 1, 'STATIC TYPES': 1, 'TYPES BUT': 1, 'BUT THEY': 1, 'CHECKED IN': 1, 'THE DEFAULT': 1, 'DEFAULT IMPLEMENTATION': 1, 'IMPLEMENTATION CPYTHON': 1, 'AN EXPERIMENTAL': 1, 'EXPERIMENTAL OPTIONAL': 1, 'STATIC TYPE': 1, 'TYPE CHECKER': 1, 'CHECKER NAMED': 1, 'NAMED MYPY': 1, 'MYPY SUPPORTS': 1, 'SUPPORTS COMPILE-TIME': 1, 'COMPILE-TIME TYPE': 1, 'TYPE CHECKING': 1, 'SUMMARY OF': 1, 'PYTHON BUILT-IN': 1, 'TYPES TYPE': 1, 'TYPE MUTABLE': 1, 'MUTABLE DESCRIPTION': 1, 'DESCRIPTION SYNTAX': 1, 'SYNTAX EXAMPLE': 1, 'EXAMPLE BOOL': 1, 'BOOL IMMUTABLE': 1, 'IMMUTABLE BOOLEAN': 1, 'BOOLEAN VALUE': 1, 'VALUE TRUE': 1, 'TRUE FALSE': 1, 'FALSE BYTEARRAY': 1, 'BYTEARRAY MUTABLE': 1, 'MUTABLE SEQUENCE': 1, \"BYTES BYTEARRAY(B'SOME\": 1, \"BYTEARRAY(B'SOME ASCII\": 1, 'ASCII BYTEARRAY(B\"SOME': 1, 'BYTEARRAY(B\"SOME ASCII': 1, 'ASCII BYTEARRAY': 1, 'BYTEARRAY BYTES': 1, 'BYTES IMMUTABLE': 1, 'IMMUTABLE SEQUENCE': 1, \"BYTES B'SOME\": 1, \"B'SOME ASCII\": 1, 'ASCII B\"SOME': 1, 'B\"SOME ASCII': 1, 'ASCII BYTES': 1, 'BYTES COMPLEX': 1, 'COMPLEX IMMUTABLE': 1, 'IMMUTABLE COMPLEX': 1, 'COMPLEX NUMBER': 1, 'NUMBER WITH': 1, 'WITH REAL': 1, 'REAL AND': 1, 'AND IMAGINARY': 1, 'IMAGINARY PARTS': 1, 'DICT MUTABLE': 1, 'MUTABLE ASSOCIATIVE': 1, 'ASSOCIATIVE ARRAY': 1, 'ARRAY OR': 1, 'OR DICTIONARY': 1, 'DICTIONARY OF': 1, 'OF KEY': 1, 'KEY AND': 1, 'AND VALUE': 1, 'VALUE PAIRS': 1, 'PAIRS CAN': 1, 'TYPES KEYS': 1, 'KEYS AND': 1, 'AND VALUES': 1, 'VALUES KEYS': 1, 'A HASHABLE': 1, 'HASHABLE TYPE': 1, 'TYPE KEY': 1, 'FALSE ELLIPSIS': 1, 'ELLIPSIS AN': 1, 'AN ELLIPSIS': 1, 'ELLIPSIS PLACEHOLDER': 1, 'PLACEHOLDER TO': 1, 'AN INDEX': 1, 'INDEX IN': 1, 'IN NUMPY': 1, 'NUMPY ARRAYS': 1, 'FLOAT IMMUTABLE': 1, 'IMMUTABLE FLOATING': 1, 'POINT NUMBER': 1, 'NUMBER SYSTEM-DEFINED': 1, 'SYSTEM-DEFINED PRECISION': 1, 'FROZENSET IMMUTABLE': 1, 'IMMUTABLE UNORDERED': 1, 'HASHABLE FROZENSET': 1, 'TRUE INT': 1, 'INT IMMUTABLE': 1, 'IMMUTABLE INTEGER': 1, 'INTEGER OF': 1, 'OF UNLIMITED': 1, 'UNLIMITED MAGNITUDE': 1, 'MAGNITUDE LIST': 1, 'LIST MUTABLE': 1, 'MUTABLE LIST': 1, 'LIST CAN': 1, 'TRUE SET': 1, 'SET MUTABLE': 1, 'MUTABLE UNORDERED': 1, 'TRUE STR': 1, 'STR IMMUTABLE': 1, 'IMMUTABLE A': 1, 'A CHARACTER': 1, 'CHARACTER STRING': 1, 'STRING SEQUENCE': 1, 'OF UNICODE': 1, 'UNICODE CODEPOINTS': 1, 'CODEPOINTS WIKIPEDIA': 1, 'WIKIPEDIA WIKIPEDIA': 1, 'WIKIPEDIA SPANNING': 1, 'SPANNING MULTIPLE': 1, 'LINES TUPLE': 1, 'TUPLE IMMUTABLE': 1, 'IMMUTABLE CAN': 1, 'STRING TRUE)BUT': 1, 'TRUE)BUT WE': 1, 'CAN APPEND': 1, 'APPEND ELEMENTS': 1, 'ELEMENTS USING': 1, 'USING ADD': 1, \"STRING TRUE).__ADD__(('HI\": 1, \"TRUE).__ADD__(('HI NOW\": 1, 'NOW A': 1, 'A GIVES': 1, 'TRUE HI': 1, 'HI MATHEMATICS': 1, 'MATHEMATICS EDIT': 1, 'THE USUAL': 1, 'USUAL ARITHMETIC': 1, 'ARITHMETIC OPERATORS': 1, 'HAS FOR': 1, 'EXPONENTIATION E.G': 1, 'NEW MATRIX': 1, 'MATRIX MULTIPLY': 1, 'MULTIPLY OPERATOR': 1, 'IS INCLUDED': 1, 'INCLUDED IN': 1, 'IN VERSION': 1, 'ADDITIONALLY IT': 1, 'A UNARY': 1, 'UNARY OPERATOR': 1, 'OPERATOR WHICH': 1, 'WHICH ESSENTIALLY': 1, 'ESSENTIALLY INVERTS': 1, 'INVERTS ALL': 1, 'ALL THE': 1, 'THE BYTES': 1, 'BYTES OF': 1, 'ITS ONE': 1, 'ONE ARGUMENT': 1, 'FOR INTEGERS': 1, 'INTEGERS THIS': 1, 'THIS MEANS': 1, 'MEANS X=-X': 1, 'OTHER OPERATORS': 1, 'OPERATORS INCLUDE': 1, 'INCLUDE BITWISE': 1, 'BITWISE SHIFT': 1, 'SHIFT OPERATORS': 1, 'OPERATORS WHICH': 1, 'LEFT PLACES': 1, 'AND WHICH': 1, 'RIGHT PLACES': 1, 'DIVISION HAS': 1, 'HAS CHANGED': 1, 'CHANGED SIGNIFICANTLY': 1, 'SIGNIFICANTLY OVER': 1, 'OVER TIME': 1, 'TIME PYTHON': 1, 'AND EARLIER': 1, 'EARLIER USE': 1, 'DIVISION BEHAVIOR': 1, 'IS INTEGER': 1, 'DIVISION IF': 1, 'IF BOTH': 1, 'BOTH OPERANDS': 1, 'OPERANDS ARE': 1, 'ARE INTEGERS': 1, 'AND FLOATING-POINT': 1, 'DIVISION OTHERWISE': 1, 'DIVISION ROUNDS': 1, 'ROUNDS TOWARDS': 1, 'TOWARDS E.G': 1, 'CHANGES INTEGER': 1, 'DIVISION TO': 1, 'TO ROUND': 1, 'ROUND TOWARDS': 1, 'INFINITY E.G': 1, 'THE FLOOR': 1, 'IS INTRODUCED': 1, 'ADDING FROM': 1, 'FROM FUTURE': 1, 'FUTURE IMPORT': 1, 'IMPORT DIVISION': 1, 'DIVISION CAUSES': 1, 'A MODULE': 1, 'MODULE TO': 1, 'RULES FOR': 1, 'FOR DIVISION': 1, 'DIVISION SEE': 1, 'SEE NEXT': 1, 'CHANGES TO': 1, 'BE ALWAYS': 1, 'ALWAYS FLOATING-POINT': 1, 'PYTHON TERMS': 1, 'TERMS THE': 1, 'THE PRE': 1, 'IS CLASSIC': 1, 'CLASSIC DIVISION': 1, 'DIVISION THE': 1, 'IS REAL': 1, 'REAL DIVISION': 1, 'IS FLOOR': 1, 'ROUNDING TOWARDS': 1, 'INFINITY THOUGH': 1, 'THOUGH DIFFERENT': 1, 'DIFFERENT FROM': 1, 'FROM MOST': 1, 'MOST LANGUAGES': 1, 'LANGUAGES ADDS': 1, 'ADDS CONSISTENCY': 1, 'FOR INSTANCE': 1, 'INSTANCE IT': 1, 'IT MEANS': 1, 'EQUATION A': 1, 'A B)//B': 1, 'B)//B A//B': 1, 'A//B IS': 1, 'IS ALWAYS': 1, 'ALWAYS TRUE': 1, 'ALSO MEANS': 1, 'EQUATION B*(A//B': 1, 'B*(A//B A%B': 1, 'A%B A': 1, 'IS VALID': 1, 'VALID FOR': 1, 'FOR BOTH': 1, 'BOTH POSITIVE': 1, 'POSITIVE AND': 1, 'NEGATIVE VALUES': 1, 'VALUES OF': 1, 'HOWEVER MAINTAINING': 1, 'MAINTAINING THE': 1, 'THE VALIDITY': 1, 'VALIDITY OF': 1, 'THIS EQUATION': 1, 'EQUATION MEANS': 1, 'THAT WHILE': 1, 'WHILE THE': 1, 'THE RESULT': 1, 'RESULT OF': 1, 'OF A%B': 1, 'A%B IS': 1, 'IS AS': 1, 'AS EXPECTED': 1, 'EXPECTED IN': 1, 'THE HALF-OPEN': 1, 'HALF-OPEN INTERVAL': 1, 'INTERVAL WHERE': 1, 'WHERE IS': 1, 'A POSITIVE': 1, 'POSITIVE INTEGER': 1, 'INTEGER IT': 1, 'HAS TO': 1, 'TO LIE': 1, 'LIE IN': 1, 'THE INTERVAL': 1, 'INTERVAL WHEN': 1, 'WHEN IS': 1, 'IS NEGATIVE': 1, 'PYTHON PROVIDES': 1, 'PROVIDES A': 1, 'A ROUND': 1, 'ROUND FUNCTION': 1, 'FUNCTION FOR': 1, 'FOR ROUNDING': 1, 'ROUNDING A': 1, 'A FLOAT': 1, 'FLOAT TO': 1, 'THE NEAREST': 1, 'NEAREST INTEGER': 1, 'FOR TIE-BREAKING': 1, 'TIE-BREAKING VERSIONS': 1, 'VERSIONS BEFORE': 1, 'BEFORE USE': 1, 'USE ROUND-AWAY-FROM-ZERO': 1, 'ROUND-AWAY-FROM-ZERO ROUND': 1, 'USES ROUND': 1, 'ROUND TO': 1, 'TO EVEN': 1, 'EVEN ROUND': 1, 'IS ROUND': 1, 'ALLOWS BOOLEAN': 1, 'BOOLEAN EXPRESSIONS': 1, 'EXPRESSIONS WITH': 1, 'WITH MULTIPLE': 1, 'MULTIPLE EQUALITY': 1, 'EQUALITY RELATIONS': 1, 'RELATIONS IN': 1, 'A MANNER': 1, 'MANNER THAT': 1, 'IS CONSISTENT': 1, 'CONSISTENT WITH': 1, 'WITH GENERAL': 1, 'GENERAL USE': 1, 'IN MATHEMATICS': 1, 'EXPRESSION A': 1, 'A TESTS': 1, 'TESTS WHETHER': 1, 'WHETHER A': 1, 'THAN AND': 1, 'C-DERIVED LANGUAGES': 1, 'LANGUAGES INTERPRET': 1, 'INTERPRET THIS': 1, 'THIS EXPRESSION': 1, 'EXPRESSION DIFFERENTLY': 1, 'DIFFERENTLY IN': 1, 'EXPRESSION WOULD': 1, 'WOULD FIRST': 1, 'FIRST EVALUATE': 1, 'EVALUATE A': 1, 'A RESULTING': 1, 'RESULTING IN': 1, 'IN OR': 1, 'OR AND': 1, 'AND THAT': 1, 'THAT RESULT': 1, 'RESULT WOULD': 1, 'WOULD THEN': 1, 'BE COMPARED': 1, 'COMPARED WITH': 1, 'PAGENEEDED PYTHON': 1, 'HAS EXTENSIVE': 1, 'EXTENSIVE BUILT-IN': 1, 'BUILT-IN SUPPORT': 1, 'FOR ARBITRARY': 1, 'PRECISION ARITHMETIC': 1, 'INTEGERS ARE': 1, 'ARE TRANSPARENTLY': 1, 'TRANSPARENTLY SWITCHED': 1, 'SWITCHED FROM': 1, 'THE MACHINE-SUPPORTED': 1, 'MACHINE-SUPPORTED MAXIMUM': 1, 'MAXIMUM FIXED-PRECISION': 1, 'FIXED-PRECISION USUALLY': 1, 'USUALLY OR': 1, 'OR BITS': 1, 'BITS BELONGING': 1, 'TYPE INT': 1, 'INT TO': 1, 'PRECISION BELONGING': 1, 'TYPE LONG': 1, 'LONG WHERE': 1, 'WHERE NEEDED': 1, 'LATTER HAVE': 1, 'AN SUFFIX': 1, 'SUFFIX IN': 1, 'IN THEIR': 1, 'THEIR TEXTUAL': 1, 'TEXTUAL REPRESENTATION': 1, 'THE DISTINCTION': 1, 'BETWEEN THE': 1, 'INT AND': 1, 'AND LONG': 1, 'LONG TYPES': 1, 'TYPES WAS': 1, 'WAS ELIMINATED': 1, 'ELIMINATED THIS': 1, 'THIS BEHAVIOR': 1, 'BEHAVIOR IS': 1, 'NOW ENTIRELY': 1, 'ENTIRELY CONTAINED': 1, 'CONTAINED BY': 1, 'INT CLASS': 1, 'THE DECIMAL': 1, 'DECIMAL TYPE/CLASS': 1, 'TYPE/CLASS IN': 1, 'MODULE DECIMAL': 1, 'DECIMAL SINCE': 1, 'PROVIDES DECIMAL': 1, 'DECIMAL FLOATING': 1, 'POINT NUMBERS': 1, 'NUMBERS TO': 1, 'PRECISION AND': 1, 'SEVERAL ROUNDING': 1, 'ROUNDING MODES': 1, 'THE FRACTION': 1, 'FRACTION TYPE': 1, 'TYPE IN': 1, 'MODULE FRACTIONS': 1, 'FRACTIONS SINCE': 1, 'PROVIDES ARBITRARY': 1, 'PRECISION FOR': 1, 'FOR RATIONAL': 1, 'RATIONAL NUMBERS': 1, 'DUE TO': 1, \"TO PYTHON'S\": 1, \"PYTHON'S EXTENSIVE\": 1, 'EXTENSIVE MATHEMATICS': 1, 'MATHEMATICS LIBRARY': 1, 'THE THIRD-PARTY': 1, 'THIRD-PARTY LIBRARY': 1, 'LIBRARY NUMPY': 1, 'NUMPY THAT': 1, 'THAT FURTHER': 1, 'FURTHER EXTENDS': 1, 'EXTENDS THE': 1, 'THE NATIVE': 1, 'NATIVE CAPABILITIES': 1, 'CAPABILITIES IT': 1, 'IS FREQUENTLY': 1, 'FREQUENTLY USED': 1, 'A SCIENTIFIC': 1, 'SCIENTIFIC SCRIPTING': 1, 'LANGUAGE TO': 1, 'TO AID': 1, 'AID IN': 1, 'IN PROBLEMS': 1, 'PROBLEMS SUCH': 1, 'AS NUMERICAL': 1, 'NUMERICAL DATA': 1, 'DATA PROCESSING': 1, 'PROCESSING AND': 1, 'AND MANIPULATION': 1, 'LIBRARIES EDIT': 1, \"PYTHON'S LARGE\": 1, 'LIBRARY COMMONLY': 1, 'COMMONLY CITED': 1, 'CITED AS': 1, 'AS ONE': 1, 'ITS GREATEST': 1, 'GREATEST STRENGTHS': 1, 'STRENGTHS PROVIDES': 1, 'PROVIDES TOOLS': 1, 'TOOLS SUITED': 1, 'SUITED TO': 1, 'MANY TASKS': 1, 'FOR INTERNET-FACING': 1, 'INTERNET-FACING APPLICATIONS': 1, 'APPLICATIONS MANY': 1, 'MANY STANDARD': 1, 'STANDARD FORMATS': 1, 'FORMATS AND': 1, 'AND PROTOCOLS': 1, 'PROTOCOLS SUCH': 1, 'AS MIME': 1, 'MIME AND': 1, 'AND HTTP': 1, 'HTTP ARE': 1, 'INCLUDES MODULES': 1, 'MODULES FOR': 1, 'FOR CREATING': 1, 'CREATING GRAPHICAL': 1, 'INTERFACES CONNECTING': 1, 'CONNECTING TO': 1, 'TO RELATIONAL': 1, 'RELATIONAL DATABASES': 1, 'DATABASES GENERATING': 1, 'GENERATING PSEUDORANDOM': 1, 'PSEUDORANDOM NUMBERS': 1, 'NUMBERS ARITHMETIC': 1, 'ARITHMETIC WITH': 1, 'WITH ARBITRARY': 1, 'PRECISION DECIMALS': 1, 'DECIMALS MANIPULATING': 1, 'MANIPULATING REGULAR': 1, 'AND UNIT': 1, 'UNIT TESTING': 1, 'SOME PARTS': 1, 'LIBRARY ARE': 1, 'ARE COVERED': 1, 'COVERED BY': 1, 'BY SPECIFICATIONS': 1, 'SPECIFICATIONS FOR': 1, 'INTERFACE WSGI': 1, 'WSGI IMPLEMENTATION': 1, 'IMPLEMENTATION WSGIREF': 1, 'WSGIREF FOLLOWS': 1, 'FOLLOWS PEP': 1, 'PEP BUT': 1, 'BUT MOST': 1, 'MOST MODULES': 1, 'ARE SPECIFIED': 1, 'SPECIFIED BY': 1, 'BY THEIR': 1, 'THEIR CODE': 1, 'CODE INTERNAL': 1, 'INTERNAL DOCUMENTATION': 1, 'DOCUMENTATION AND': 1, 'AND TEST': 1, 'TEST SUITES': 1, 'SUITES IF': 1, 'IF SUPPLIED': 1, 'HOWEVER BECAUSE': 1, 'BECAUSE MOST': 1, 'LIBRARY IS': 1, 'IS CROSS-PLATFORM': 1, 'CROSS-PLATFORM PYTHON': 1, 'CODE ONLY': 1, 'FEW MODULES': 1, 'MODULES NEED': 1, 'NEED ALTERING': 1, 'ALTERING OR': 1, 'OR REWRITING': 1, 'REWRITING FOR': 1, 'FOR VARIANT': 1, 'OF SEPTEMBER': 1, 'SEPTEMBER UPDATE': 1, 'UPDATE THE': 1, 'INDEX THE': 1, 'REPOSITORY FOR': 1, 'FOR THIRD-PARTY': 1, 'SOFTWARE CONTAINS': 1, 'CONTAINS OVER': 1, 'OVER PACKAGES': 1, 'PACKAGES WITH': 1, 'OF FUNCTIONALITY': 1, 'FUNCTIONALITY INCLUDING': 1, 'INCLUDING GRAPHICAL': 1, 'INTERFACES WEB': 1, 'FRAMEWORKS MULTIMEDIA': 1, 'MULTIMEDIA DATABASES': 1, 'DATABASES NETWORKING': 1, 'NETWORKING TEST': 1, 'TEST FRAMEWORKS': 1, 'FRAMEWORKS AUTOMATION': 1, 'AUTOMATION WEB': 1, 'WEB SCRAPING': 1, 'SCRAPING DOCUMENTATION': 1, 'DOCUMENTATION SYSTEM': 1, 'SYSTEM ADMINISTRATION': 1, 'ADMINISTRATION SCIENTIFIC': 1, 'COMPUTING TEXT': 1, 'PROCESSING IMAGE': 1, 'IMAGE PROCESSING': 1, 'PROCESSING DEVELOPMENT': 1, 'ENVIRONMENTS EDIT': 1, 'ALSO COMPARISON': 1, 'ENVIRONMENTS PYTHON': 1, 'PYTHON MOST': 1, 'MOST PYTHON': 1, 'IMPLEMENTATIONS INCLUDING': 1, 'INCLUDING CPYTHON': 1, 'CPYTHON INCLUDE': 1, 'INCLUDE A': 1, 'A READEVALPRINT': 1, 'READEVALPRINT LOOP': 1, 'LOOP REPL': 1, 'REPL PERMITTING': 1, 'PERMITTING THEM': 1, 'THEM TO': 1, 'TO FUNCTION': 1, 'FUNCTION AS': 1, 'A COMMAND': 1, 'LINE INTERPRETER': 1, 'THE USER': 1, 'USER ENTERS': 1, 'ENTERS STATEMENTS': 1, 'STATEMENTS SEQUENTIALLY': 1, 'SEQUENTIALLY AND': 1, 'AND RECEIVES': 1, 'RECEIVES RESULTS': 1, 'RESULTS IMMEDIATELY': 1, 'OTHER SHELLS': 1, 'SHELLS INCLUDING': 1, 'INCLUDING IDLE': 1, 'IDLE AND': 1, 'AND IPYTHON': 1, 'IPYTHON ADD': 1, 'ADD FURTHER': 1, 'FURTHER ABILITIES': 1, 'ABILITIES SUCH': 1, 'AS AUTO-COMPLETION': 1, 'AUTO-COMPLETION SESSION': 1, 'SESSION STATE': 1, 'STATE RETENTION': 1, 'RETENTION AND': 1, 'AND SYNTAX': 1, 'SYNTAX HIGHLIGHTING': 1, 'AS WELL': 1, 'WELL AS': 1, 'AS STANDARD': 1, 'STANDARD DESKTOP': 1, 'DESKTOP INTEGRATED': 1, 'ENVIRONMENTS SEE': 1, \"SEE WIKIPEDIA'S\": 1, \"WIKIPEDIA'S PYTHON\": 1, 'IDE ARTICLE': 1, 'ARTICLE THERE': 1, 'ARE WEB': 1, 'WEB BROWSER-BASED': 1, 'BROWSER-BASED IDES': 1, 'IDES SAGEMATH': 1, 'SAGEMATH INTENDED': 1, 'FOR DEVELOPING': 1, 'DEVELOPING SCIENCE': 1, 'AND MATH-RELATED': 1, 'MATH-RELATED PYTHON': 1, 'PROGRAMS PYTHONANYWHERE': 1, 'PYTHONANYWHERE A': 1, 'A BROWSER-BASED': 1, 'BROWSER-BASED IDE': 1, 'IDE AND': 1, 'AND HOSTING': 1, 'HOSTING ENVIRONMENT': 1, 'ENVIRONMENT AND': 1, 'AND CANOPY': 1, 'CANOPY IDE': 1, 'IDE A': 1, 'A COMMERCIAL': 1, 'COMMERCIAL PYTHON': 1, 'IDE EMPHASIZING': 1, 'EMPHASIZING SCIENTIFIC': 1, 'ALSO LIST': 1, 'SOFTWARE PYTHON': 1, 'IMPLEMENTATIONS REFERENCE': 1, 'IMPLEMENTATION EDIT': 1, 'EDIT CPYTHON': 1, 'IN MEETING': 1, 'MEETING THE': 1, 'STANDARD WITH': 1, 'WITH SEVERAL': 1, 'SEVERAL SELECT': 1, 'SELECT FEATURES': 1, 'IT COMPILES': 1, 'PROGRAMS INTO': 1, 'AN INTERMEDIATE': 1, 'INTERMEDIATE BYTECODE': 1, 'BYTECODE WHICH': 1, 'THEN EXECUTED': 1, 'BY ITS': 1, 'ITS VIRTUAL': 1, 'IS DISTRIBUTED': 1, 'DISTRIBUTED WITH': 1, 'LIBRARY WRITTEN': 1, 'OF AND': 1, 'AND NATIVE': 1, 'NATIVE PYTHON': 1, 'IS AVAILABLE': 1, 'MANY PLATFORMS': 1, 'PLATFORMS INCLUDING': 1, 'INCLUDING WINDOWS': 1, 'WINDOWS AND': 1, 'AND MOST': 1, 'MOST MODERN': 1, 'MODERN UNIX-LIKE': 1, 'UNIX-LIKE SYSTEMS': 1, 'PLATFORM PORTABILITY': 1, 'PORTABILITY WAS': 1, 'WAS ONE': 1, 'ITS EARLIEST': 1, 'EARLIEST PRIORITIES': 1, 'EDIT PYPY': 1, 'PYPY IS': 1, 'A FAST': 1, 'FAST COMPLIANT': 1, 'COMPLIANT INTERPRETER': 1, 'ITS JUST-IN-TIME': 1, 'COMPILER BRINGS': 1, 'BRINGS A': 1, 'SIGNIFICANT SPEED': 1, 'SPEED IMPROVEMENT': 1, 'IMPROVEMENT OVER': 1, 'OVER CPYTHON': 1, 'A VERSION': 1, 'IS UNDER': 1, 'UNDER DEVELOPMENT': 1, 'DEVELOPMENT THAT': 1, 'THAT WILL': 1, 'WILL USE': 1, 'USE SOFTWARE': 1, 'SOFTWARE TRANSACTIONAL': 1, 'TRANSACTIONAL MEMORY': 1, 'MEMORY TO': 1, 'TO TAKE': 1, 'TAKE ADVANTAGE': 1, 'OF MULTI-CORE': 1, 'MULTI-CORE PROCESSORS': 1, 'SIGNIFICANT FORK': 1, 'FORK OF': 1, 'THAT IMPLEMENTS': 1, 'IMPLEMENTS MICROTHREADS': 1, 'MICROTHREADS IT': 1, 'MEMORY STACK': 1, 'STACK THUS': 1, 'THUS ALLOWING': 1, 'ALLOWING MASSIVELY': 1, 'MASSIVELY CONCURRENT': 1, 'CONCURRENT PROGRAMS': 1, 'PYPY ALSO': 1, 'A STACKLESS': 1, 'STACKLESS VERSION': 1, 'MICROPYTHON IS': 1, 'PYTHON VARIANT': 1, 'VARIANT OPTIMISED': 1, 'OPTIMISED FOR': 1, 'FOR MICROCONTROLLERS': 1, 'EDIT OTHER': 1, 'OTHER JUST-IN-TIME': 1, 'JUST-IN-TIME PYTHON': 1, 'PYTHON COMPILERS': 1, 'COMPILERS HAVE': 1, 'BEEN DEVELOPED': 1, 'DEVELOPED BUT': 1, 'BUT ARE': 1, 'ARE NOW': 1, 'NOW UNSUPPORTED': 1, 'UNSUPPORTED GOOGLE': 1, 'GOOGLE BEGAN': 1, 'BEGAN A': 1, 'A PROJECT': 1, 'PROJECT NAMED': 1, 'NAMED UNLADEN': 1, 'SWALLOW IN': 1, 'IN WITH': 1, 'THE AIM': 1, 'AIM OF': 1, 'OF SPEEDING': 1, 'SPEEDING UP': 1, 'UP THE': 1, 'INTERPRETER FIVEFOLD': 1, 'FIVEFOLD BY': 1, 'THE LLVM': 1, 'LLVM AND': 1, 'AND OF': 1, 'OF IMPROVING': 1, 'IMPROVING ITS': 1, 'ITS MULTITHREADING': 1, 'MULTITHREADING ABILITY': 1, 'ABILITY TO': 1, 'TO SCALE': 1, 'SCALE TO': 1, 'TO THOUSANDS': 1, 'THOUSANDS OF': 1, 'OF CORES': 1, 'PSYCO IS': 1, 'JUST-IN-TIME SPECIALISING': 1, 'SPECIALISING COMPILER': 1, 'COMPILER THAT': 1, 'THAT INTEGRATES': 1, 'INTEGRATES WITH': 1, 'WITH CPYTHON': 1, 'AND TRANSFORMS': 1, 'TRANSFORMS BYTECODE': 1, 'BYTECODE TO': 1, 'TO MACHINE': 1, 'MACHINE CODE': 1, 'CODE AT': 1, 'AT RUNTIME': 1, 'THE EMITTED': 1, 'EMITTED CODE': 1, 'IS SPECIALISED': 1, 'SPECIALISED FOR': 1, 'FOR CERTAIN': 1, 'CERTAIN DATA': 1, 'DATA TYPES': 1, 'IS FASTER': 1, 'FASTER THAN': 1, 'THAN STANDARD': 1, 'STANDARD PYTHON': 1, 'IN NOKIA': 1, 'NOKIA RELEASED': 1, 'RELEASED A': 1, 'THE SERIES': 1, 'SERIES MOBILE': 1, 'MOBILE PHONES': 1, 'PHONES NAMED': 1, 'NAMED PYS': 1, 'INCLUDES MANY': 1, 'THE MODULES': 1, 'MODULES FROM': 1, 'CPYTHON IMPLEMENTATIONS': 1, 'IMPLEMENTATIONS AND': 1, 'SOME ADDITIONAL': 1, 'ADDITIONAL MODULES': 1, 'MODULES TO': 1, 'TO INTEGRATE': 1, 'INTEGRATE WITH': 1, 'BEEN KEPT': 1, 'KEPT UP-TO-DATE': 1, 'UP-TO-DATE TO': 1, 'ON ALL': 1, 'ALL VARIANTS': 1, 'VARIANTS OF': 1, 'THE PLATFORM': 1, 'PLATFORM AND': 1, 'SEVERAL THIRD-PARTY': 1, 'THIRD-PARTY MODULES': 1, 'NOKIA ALSO': 1, 'ALSO SUPPORTS': 1, 'SUPPORTS PYTHON': 1, 'PYTHON WITH': 1, 'WITH GTK': 1, 'GTK WIDGET': 1, 'WIDGET LIBRARIES': 1, 'LIBRARIES ENABLING': 1, 'ENABLING PROGRAMS': 1, 'PROGRAMS TO': 1, 'BE WRITTEN': 1, 'WRITTEN AND': 1, 'AND RUN': 1, 'THE TARGET': 1, 'TARGET DEVICE': 1, 'LANGUAGES EDIT': 1, 'EDIT THERE': 1, 'ARE SEVERAL': 1, 'SEVERAL COMPILERS': 1, 'COMPILERS TO': 1, 'TO HIGH-LEVEL': 1, 'HIGH-LEVEL OBJECT': 1, 'OBJECT LANGUAGES': 1, 'LANGUAGES WITH': 1, 'WITH EITHER': 1, 'EITHER UNRESTRICTED': 1, 'UNRESTRICTED PYTHON': 1, 'A RESTRICTED': 1, 'RESTRICTED SUBSET': 1, 'SUBSET OF': 1, 'A LANGUAGE': 1, 'LANGUAGE SIMILAR': 1, 'THE SOURCE': 1, 'SOURCE LANGUAGE': 1, 'LANGUAGE JYTHON': 1, 'JYTHON COMPILES': 1, 'COMPILES INTO': 1, 'INTO JAVA': 1, 'JAVA BYTE': 1, 'CODE WHICH': 1, 'CAN THEN': 1, 'BE EXECUTED': 1, 'BY EVERY': 1, 'EVERY JAVA': 1, 'JAVA VIRTUAL': 1, 'MACHINE IMPLEMENTATION': 1, 'THIS ALSO': 1, 'ALSO ENABLES': 1, 'ENABLES THE': 1, 'JAVA CLASS': 1, 'CLASS LIBRARY': 1, 'LIBRARY FUNCTIONS': 1, 'FUNCTIONS FROM': 1, 'PYTHON PROGRAM': 1, 'IRONPYTHON FOLLOWS': 1, 'FOLLOWS A': 1, 'SIMILAR APPROACH': 1, 'APPROACH IN': 1, 'ORDER TO': 1, 'RUN PYTHON': 1, 'PROGRAMS ON': 1, 'THE NET': 1, 'NET COMMON': 1, 'COMMON LANGUAGE': 1, 'LANGUAGE RUNTIME': 1, 'THE RPYTHON': 1, 'RPYTHON LANGUAGE': 1, 'LANGUAGE CAN': 1, 'BE COMPILED': 1, 'COMPILED TO': 1, 'JAVA BYTECODE': 1, 'BYTECODE OR': 1, 'OR COMMON': 1, 'COMMON INTERMEDIATE': 1, 'INTERMEDIATE LANGUAGE': 1, 'LANGUAGE AND': 1, 'TO BUILD': 1, 'BUILD THE': 1, 'THE PYPY': 1, 'PYPY INTERPRETER': 1, 'PYJS COMPILES': 1, 'CYTHON COMPILES': 1, 'PYTHRAN COMPILES': 1, 'SOMEWHAT DATED': 1, 'DATED PYREX': 1, 'PYREX LATEST': 1, 'AND SHED': 1, 'SKIN LATEST': 1, 'IN COMPILE': 1, 'COMPILE TO': 1, 'AND RESPECTIVELY': 1, 'GRUMPY COMPILES': 1, 'NUITKA COMPILES': 1, 'PYTHON INTO': 1, 'INTO PERFORMANCE': 1, 'PERFORMANCE EDIT': 1, 'EDIT A': 1, 'A PERFORMANCE': 1, 'PERFORMANCE COMPARISON': 1, 'OF VARIOUS': 1, 'VARIOUS PYTHON': 1, 'IMPLEMENTATIONS ON': 1, 'A NON-NUMERICAL': 1, 'NON-NUMERICAL COMBINATORIAL': 1, 'COMBINATORIAL WORKLOAD': 1, 'WORKLOAD WAS': 1, 'WAS PRESENTED': 1, 'PRESENTED AT': 1, 'AT EUROSCIPY': 1, 'DEVELOPMENT EDIT': 1, 'IS CONDUCTED': 1, 'CONDUCTED LARGELY': 1, 'LARGELY THROUGH': 1, 'THROUGH THE': 1, 'ENHANCEMENT PROPOSAL': 1, 'PROPOSAL PEP': 1, 'PEP PROCESS': 1, 'PROCESS THE': 1, 'PRIMARY MECHANISM': 1, 'MECHANISM FOR': 1, 'FOR PROPOSING': 1, 'PROPOSING MAJOR': 1, 'FEATURES COLLECTING': 1, 'COLLECTING COMMUNITY': 1, 'COMMUNITY INPUT': 1, 'INPUT ON': 1, 'ON ISSUES': 1, 'ISSUES AND': 1, 'AND DOCUMENTING': 1, 'DOCUMENTING PYTHON': 1, 'DESIGN DECISIONS': 1, 'OUTSTANDING PEPS': 1, 'PEPS ARE': 1, 'ARE REVIEWED': 1, 'REVIEWED AND': 1, 'AND COMMENTED': 1, 'COMMENTED ON': 1, 'ON BY': 1, 'COMMUNITY AND': 1, 'AND GUIDO': 1, \"ROSSUM PYTHON'S\": 1, \"PYTHON'S BENEVOLENT\": 1, 'ENHANCEMENT OF': 1, 'LANGUAGE CORRESPONDS': 1, 'CORRESPONDS WITH': 1, 'WITH DEVELOPMENT': 1, 'DEVELOPMENT OF': 1, 'CPYTHON REFERENCE': 1, 'THE MAILING': 1, 'LIST PYTHON-DEV': 1, 'PYTHON-DEV IS': 1, 'PRIMARY FORUM': 1, 'FORUM FOR': 1, \"LANGUAGE'S DEVELOPMENT\": 1, 'SPECIFIC ISSUES': 1, 'ISSUES ARE': 1, 'ARE DISCUSSED': 1, 'DISCUSSED IN': 1, 'THE ROUNDUP': 1, 'ROUNDUP BUG': 1, 'BUG TRACKER': 1, 'TRACKER MAINTAINED': 1, 'MAINTAINED AT': 1, 'AT PYTHON.ORG': 1, 'DEVELOPMENT ORIGINALLY': 1, 'ORIGINALLY TOOK': 1, 'TOOK PLACE': 1, 'PLACE ON': 1, 'A SELF-HOSTED': 1, 'SELF-HOSTED SOURCE-CODE': 1, 'SOURCE-CODE REPOSITORY': 1, 'REPOSITORY RUNNING': 1, 'RUNNING MERCURIAL': 1, 'MERCURIAL UNTIL': 1, 'UNTIL PYTHON': 1, 'PYTHON MOVED': 1, 'MOVED TO': 1, 'TO GITHUB': 1, 'GITHUB IN': 1, \"CPYTHON'S PUBLIC\": 1, 'PUBLIC RELEASES': 1, 'RELEASES COME': 1, 'COME IN': 1, 'IN THREE': 1, 'THREE TYPES': 1, 'TYPES DISTINGUISHED': 1, 'DISTINGUISHED BY': 1, 'BY WHICH': 1, 'WHICH PART': 1, 'INCREMENTED BACKWARD-INCOMPATIBLE': 1, 'BACKWARD-INCOMPATIBLE VERSIONS': 1, 'VERSIONS WHERE': 1, 'WHERE CODE': 1, 'IS EXPECTED': 1, 'EXPECTED TO': 1, 'TO BREAK': 1, 'BREAK AND': 1, 'AND NEED': 1, 'NEED TO': 1, 'BE MANUALLY': 1, 'MANUALLY PORTED': 1, 'FIRST PART': 1, 'RELEASES HAPPEN': 1, 'HAPPEN INFREQUENTLYFOR': 1, 'INFREQUENTLYFOR EXAMPLE': 1, 'EXAMPLE VERSION': 1, 'RELEASED YEARS': 1, 'MAJOR OR': 1, 'OR FEATURE': 1, 'FEATURE RELEASES': 1, 'RELEASES ABOUT': 1, 'MONTHS ARE': 1, 'ARE LARGELY': 1, 'LARGELY COMPATIBLE': 1, 'COMPATIBLE BUT': 1, 'BUT INTRODUCE': 1, 'INTRODUCE NEW': 1, 'THE SECOND': 1, 'SECOND PART': 1, 'EACH MAJOR': 1, 'MAJOR VERSION': 1, 'IS SUPPORTED': 1, 'SUPPORTED BY': 1, 'BY BUGFIXES': 1, 'BUGFIXES FOR': 1, 'FOR SEVERAL': 1, 'SEVERAL YEARS': 1, 'AFTER ITS': 1, 'ITS RELEASE': 1, 'BUGFIX RELEASES': 1, 'RELEASES WHICH': 1, 'WHICH INTRODUCE': 1, 'INTRODUCE NO': 1, 'NO NEW': 1, 'FEATURES OCCUR': 1, 'OCCUR ABOUT': 1, 'MONTHS AND': 1, 'ARE MADE': 1, 'MADE WHEN': 1, 'WHEN A': 1, 'A SUFFICIENT': 1, 'SUFFICIENT NUMBER': 1, 'OF BUGS': 1, 'BUGS HAVE': 1, 'BEEN FIXED': 1, 'FIXED UPSTREAM': 1, 'UPSTREAM SINCE': 1, 'THE LAST': 1, 'LAST RELEASE': 1, 'SECURITY VULNERABILITIES': 1, 'VULNERABILITIES ARE': 1, 'ALSO PATCHED': 1, 'PATCHED IN': 1, 'IN THESE': 1, 'THIRD AND': 1, 'AND FINAL': 1, 'FINAL PART': 1, 'MANY ALPHA': 1, 'ALPHA BETA': 1, 'BETA AND': 1, 'AND RELEASE-CANDIDATES': 1, 'RELEASE-CANDIDATES ARE': 1, 'ALSO RELEASED': 1, 'RELEASED AS': 1, 'AS PREVIEWS': 1, 'PREVIEWS AND': 1, 'AND FOR': 1, 'FOR TESTING': 1, 'TESTING BEFORE': 1, 'BEFORE FINAL': 1, 'FINAL RELEASES': 1, 'ALTHOUGH THERE': 1, 'ROUGH SCHEDULE': 1, 'SCHEDULE FOR': 1, 'FOR EACH': 1, 'EACH RELEASE': 1, 'RELEASE THEY': 1, 'OFTEN DELAYED': 1, 'DELAYED IF': 1, 'IF THE': 1, 'NOT READY': 1, 'DEVELOPMENT TEAM': 1, 'TEAM MONITORS': 1, 'MONITORS THE': 1, 'THE STATE': 1, 'STATE OF': 1, 'CODE BY': 1, 'BY RUNNING': 1, 'RUNNING THE': 1, 'THE LARGE': 1, 'LARGE UNIT': 1, 'UNIT TEST': 1, 'TEST SUITE': 1, 'SUITE DURING': 1, 'DURING DEVELOPMENT': 1, 'DEVELOPMENT AND': 1, 'AND USING': 1, 'THE BUILDBOT': 1, 'BUILDBOT CONTINUOUS': 1, 'CONTINUOUS INTEGRATION': 1, 'INTEGRATION SYSTEM': 1, 'THE COMMUNITY': 1, 'COMMUNITY OF': 1, 'DEVELOPERS HAS': 1, 'ALSO CONTRIBUTED': 1, 'CONTRIBUTED OVER': 1, 'OVER SOFTWARE': 1, 'SOFTWARE MODULES': 1, 'MODULES AS': 1, 'OF AUGUST': 1, 'AUGUST UPDATE': 1, 'UPDATE TO': 1, 'INDEX PYPI': 1, 'PYPI THE': 1, 'REPOSITORY OF': 1, 'OF THIRD-PARTY': 1, 'PYTHON LIBRARIES': 1, 'THE MAJOR': 1, 'MAJOR ACADEMIC': 1, 'ACADEMIC CONFERENCE': 1, 'IS PYCON': 1, 'ALSO SPECIAL': 1, 'SPECIAL PYTHON': 1, 'PYTHON MENTORING': 1, 'MENTORING PROGRAMMES': 1, 'PROGRAMMES SUCH': 1, 'AS PYLADIES': 1, 'NAMING EDIT': 1, \"PYTHON'S NAME\": 1, 'IS DERIVED': 1, 'DERIVED FROM': 1, 'PYTHON WHOM': 1, 'WHOM PYTHON': 1, 'PYTHON CREATOR': 1, 'CREATOR GUIDO': 1, 'ROSSUM ENJOYED': 1, 'ENJOYED WHILE': 1, 'WHILE DEVELOPING': 1, 'DEVELOPING THE': 1, 'PYTHON REFERENCES': 1, 'REFERENCES APPEAR': 1, 'APPEAR FREQUENTLY': 1, 'FREQUENTLY IN': 1, 'AND CULTURE': 1, 'CULTURE FOR': 1, 'THE METASYNTACTIC': 1, 'METASYNTACTIC VARIABLES': 1, 'VARIABLES OFTEN': 1, 'PYTHON LITERATURE': 1, 'LITERATURE ARE': 1, 'ARE SPAM': 1, 'EGGS INSTEAD': 1, 'THE TRADITIONAL': 1, 'TRADITIONAL FOO': 1, 'OFFICIAL PYTHON': 1, 'DOCUMENTATION ALSO': 1, 'ALSO CONTAINS': 1, 'CONTAINS VARIOUS': 1, 'VARIOUS REFERENCES': 1, 'REFERENCES TO': 1, 'TO MONTY': 1, 'PYTHON ROUTINES': 1, 'THE PREFIX': 1, 'PREFIX PY': 1, 'PY IS': 1, 'SHOW THAT': 1, 'THAT SOMETHING': 1, 'SOMETHING IS': 1, 'IS RELATED': 1, 'EXAMPLES OF': 1, 'THIS PREFIX': 1, 'PREFIX IN': 1, 'IN NAMES': 1, 'NAMES OF': 1, 'PYTHON APPLICATIONS': 1, 'APPLICATIONS OR': 1, 'OR LIBRARIES': 1, 'LIBRARIES INCLUDE': 1, 'INCLUDE PYGAME': 1, 'PYGAME A': 1, 'A BINDING': 1, 'BINDING OF': 1, 'OF SDL': 1, 'SDL TO': 1, 'PYTHON COMMONLY': 1, 'COMMONLY USED': 1, 'CREATE GAMES': 1, 'GAMES PYTHON': 1, 'AN IMPLEMENTATION': 1, 'IMPLEMENTATION FOR': 1, 'SYSTEM PYQT': 1, 'PYQT AND': 1, 'AND PYGTK': 1, 'PYGTK WHICH': 1, 'WHICH BIND': 1, 'BIND QT': 1, 'QT AND': 1, 'AND GTK': 1, 'GTK TO': 1, 'PYTHON RESPECTIVELY': 1, 'RESPECTIVELY AND': 1, 'PYTHON IMPLEMENTATION': 1, 'IMPLEMENTATION ORIGINALLY': 1, 'ORIGINALLY WRITTEN': 1, 'USES EDIT': 1, 'ARTICLE LIST': 1, 'SOFTWARE SINCE': 1, 'SINCE PYTHON': 1, 'HAS CONSISTENTLY': 1, 'CONSISTENTLY RANKED': 1, 'RANKED IN': 1, 'THE TOP': 1, 'TOP TEN': 1, 'TEN MOST': 1, 'POPULAR PROGRAMMING': 1, 'OF MARCH': 1, 'MARCH UPDATE': 1, 'UPDATE IT': 1, 'THE FIFTH': 1, 'FIFTH MOST': 1, 'WAS SELECTED': 1, 'SELECTED PROGRAMMING': 1, 'YEAR IN': 1, 'THIRD MOST': 1, 'LANGUAGE WHOSE': 1, 'WHOSE GRAMMATICAL': 1, 'GRAMMATICAL SYNTAX': 1, 'SYNTAX IS': 1, 'NOT PREDOMINANTLY': 1, 'PREDOMINANTLY BASED': 1, 'EMPIRICAL STUDY': 1, 'STUDY FOUND': 1, 'FOUND THAT': 1, 'THAT SCRIPTING': 1, 'SCRIPTING LANGUAGES': 1, 'ARE MORE': 1, 'MORE PRODUCTIVE': 1, 'PRODUCTIVE THAN': 1, 'THAN CONVENTIONAL': 1, 'CONVENTIONAL LANGUAGES': 1, 'JAVA FOR': 1, 'PROGRAMMING PROBLEMS': 1, 'PROBLEMS INVOLVING': 1, 'INVOLVING STRING': 1, 'STRING MANIPULATION': 1, 'MANIPULATION AND': 1, 'AND SEARCH': 1, 'SEARCH IN': 1, 'A DICTIONARY': 1, 'DICTIONARY AND': 1, 'AND DETERMINED': 1, 'DETERMINED THAT': 1, 'THAT MEMORY': 1, 'MEMORY CONSUMPTION': 1, 'CONSUMPTION WAS': 1, 'WAS OFTEN': 1, 'OFTEN BETTER': 1, 'THAN JAVA': 1, 'MUCH WORSE': 1, 'WORSE THAN': 1, 'LARGE ORGANIZATIONS': 1, 'ORGANIZATIONS THAT': 1, 'THAT USE': 1, 'PYTHON INCLUDE': 1, 'INCLUDE WIKIPEDIA': 1, 'WIKIPEDIA GOOGLE': 1, 'GOOGLE YAHOO': 1, 'YAHOO CERN': 1, 'CERN NASA': 1, 'NASA AND': 1, 'SOME SMALLER': 1, 'SMALLER ENTITIES': 1, 'ENTITIES LIKE': 1, 'LIKE ILM': 1, 'ILM AND': 1, 'AND ITA': 1, 'THE SOCIAL': 1, 'SOCIAL NEWS': 1, 'NEWS NETWORKING': 1, 'NETWORKING SITE': 1, 'SITE REDDIT': 1, 'REDDIT IS': 1, 'WRITTEN ENTIRELY': 1, 'ENTIRELY IN': 1, 'CAN SERVE': 1, 'SERVE AS': 1, 'FOR WEB': 1, 'APPLICATIONS E.G': 1, 'E.G VIA': 1, 'VIA MOD_WSGI': 1, 'MOD_WSGI FOR': 1, 'THE APACHE': 1, 'APACHE WEB': 1, 'WITH WEB': 1, 'INTERFACE A': 1, 'STANDARD API': 1, 'API HAS': 1, 'HAS EVOLVED': 1, 'EVOLVED TO': 1, 'TO FACILITATE': 1, 'FACILITATE THESE': 1, 'THESE APPLICATIONS': 1, 'FRAMEWORKS LIKE': 1, 'LIKE DJANGO': 1, 'DJANGO PYLONS': 1, 'PYRAMID TURBOGEARS': 1, 'TURBOGEARS WEB': 1, 'PY TORNADO': 1, 'TORNADO FLASK': 1, 'FLASK BOTTLE': 1, 'BOTTLE AND': 1, 'AND ZOPE': 1, 'ZOPE SUPPORT': 1, 'SUPPORT DEVELOPERS': 1, 'DEVELOPERS IN': 1, 'AND MAINTENANCE': 1, 'MAINTENANCE OF': 1, 'OF COMPLEX': 1, 'COMPLEX APPLICATIONS': 1, 'PYJS AND': 1, 'AND IRONPYTHON': 1, 'IRONPYTHON CAN': 1, 'TO DEVELOP': 1, 'DEVELOP THE': 1, 'THE CLIENT-SIDE': 1, 'CLIENT-SIDE OF': 1, 'OF AJAX-BASED': 1, 'AJAX-BASED APPLICATIONS': 1, 'SQLALCHEMY CAN': 1, 'AS DATA': 1, 'DATA MAPPER': 1, 'MAPPER TO': 1, 'A RELATIONAL': 1, 'RELATIONAL DATABASE': 1, 'TWISTED IS': 1, 'A FRAMEWORK': 1, 'FRAMEWORK TO': 1, 'PROGRAM COMMUNICATIONS': 1, 'COMMUNICATIONS BETWEEN': 1, 'BETWEEN COMPUTERS': 1, 'COMPUTERS AND': 1, 'EXAMPLE BY': 1, 'BY DROPBOX': 1, 'AS NUMPY': 1, 'NUMPY SCIPY': 1, 'SCIPY AND': 1, 'AND MATPLOTLIB': 1, 'MATPLOTLIB ALLOW': 1, 'ALLOW THE': 1, 'THE EFFECTIVE': 1, 'EFFECTIVE USE': 1, 'IN SCIENTIFIC': 1, 'COMPUTING WITH': 1, 'WITH SPECIALIZED': 1, 'SPECIALIZED LIBRARIES': 1, 'AS BIOPYTHON': 1, 'BIOPYTHON AND': 1, 'AND ASTROPY': 1, 'ASTROPY PROVIDING': 1, 'PROVIDING DOMAIN-SPECIFIC': 1, 'DOMAIN-SPECIFIC FUNCTIONALITY': 1, 'SAGEMATH IS': 1, 'A MATHEMATICAL': 1, 'MATHEMATICAL SOFTWARE': 1, 'SOFTWARE WITH': 1, 'A NOTEBOOK': 1, 'NOTEBOOK PROGRAMMABLE': 1, 'PROGRAMMABLE IN': 1, 'PYTHON ITS': 1, 'ITS LIBRARY': 1, 'LIBRARY COVERS': 1, 'COVERS MANY': 1, 'MANY ASPECTS': 1, 'ASPECTS OF': 1, 'OF MATHEMATICS': 1, 'MATHEMATICS INCLUDING': 1, 'INCLUDING ALGEBRA': 1, 'ALGEBRA COMBINATORICS': 1, 'COMBINATORICS NUMERICAL': 1, 'NUMERICAL MATHEMATICS': 1, 'MATHEMATICS NUMBER': 1, 'NUMBER THEORY': 1, 'THEORY AND': 1, 'AND CALCULUS': 1, 'LANGUAGE RE-IMPLEMENTED': 1, 'RE-IMPLEMENTED IN': 1, 'PLATFORM IS': 1, 'FOR NUMERIC': 1, 'NUMERIC AND': 1, 'STATISTICAL CALCULATIONS': 1, 'CALCULATIONS WITH': 1, 'WITH VISUALIZATION': 1, 'VISUALIZATION BY': 1, 'THE DMELT': 1, 'DMELT PROJECT': 1, 'BEEN SUCCESSFULLY': 1, 'SUCCESSFULLY EMBEDDED': 1, 'EMBEDDED IN': 1, 'IN MANY': 1, 'MANY SOFTWARE': 1, 'SOFTWARE PRODUCTS': 1, 'PRODUCTS AS': 1, 'LANGUAGE INCLUDING': 1, 'IN FINITE': 1, 'FINITE ELEMENT': 1, 'ELEMENT METHOD': 1, 'METHOD SOFTWARE': 1, 'SOFTWARE SUCH': 1, 'AS ABAQUS': 1, 'ABAQUS PARAMETRIC': 1, 'PARAMETRIC MODELER': 1, 'MODELER LIKE': 1, 'LIKE FREECAD': 1, 'FREECAD ANIMATION': 1, 'ANIMATION PACKAGES': 1, 'PACKAGES SUCH': 1, 'AS DS': 1, 'DS MAX': 1, 'MAX BLENDER': 1, 'BLENDER CINEMA': 1, 'CINEMA LIGHTWAVE': 1, 'LIGHTWAVE HOUDINI': 1, 'HOUDINI MAYA': 1, 'MAYA MODO': 1, 'MODO MOTIONBUILDER': 1, 'MOTIONBUILDER SOFTIMAGE': 1, 'SOFTIMAGE THE': 1, 'THE VISUAL': 1, 'VISUAL EFFECTS': 1, 'EFFECTS COMPOSITOR': 1, 'COMPOSITOR NUKE': 1, 'NUKE IMAGING': 1, 'IMAGING PROGRAMS': 1, 'LIKE GIMP': 1, 'GIMP INKSCAPE': 1, 'INKSCAPE SCRIBUS': 1, 'SCRIBUS AND': 1, 'AND PAINT': 1, 'PAINT SHOP': 1, 'SHOP PRO': 1, 'PRO AND': 1, 'AND MUSICAL': 1, 'MUSICAL NOTATION': 1, 'NOTATION PROGRAMS': 1, 'LIKE SCOREWRITER': 1, 'SCOREWRITER AND': 1, 'AND CAPELLA': 1, 'GNU DEBUGGER': 1, 'DEBUGGER USES': 1, 'PRINTER TO': 1, 'SHOW COMPLEX': 1, 'COMPLEX STRUCTURES': 1, 'STRUCTURES SUCH': 1, 'AS CONTAINERS': 1, 'ESRI PROMOTES': 1, 'PROMOTES PYTHON': 1, 'THE BEST': 1, 'BEST CHOICE': 1, 'CHOICE FOR': 1, 'FOR WRITING': 1, 'WRITING SCRIPTS': 1, 'SCRIPTS IN': 1, 'IN ARCGIS': 1, 'IN SEVERAL': 1, 'SEVERAL VIDEO': 1, 'GAMES AND': 1, 'BEEN ADOPTED': 1, 'ADOPTED AS': 1, 'AS FIRST': 1, 'FIRST OF': 1, 'THE THREE': 1, 'THREE AVAILABLE': 1, 'AVAILABLE PROGRAMMING': 1, 'IN GOOGLE': 1, 'GOOGLE APP': 1, 'APP ENGINE': 1, 'ENGINE THE': 1, 'OTHER TWO': 1, 'TWO BEING': 1, 'BEING JAVA': 1, 'AND GO': 1, 'IN ALGORITHMIC': 1, 'TRADING AND': 1, 'AND QUANTITATIVE': 1, 'QUANTITATIVE FINANCE': 1, 'CAN ALSO': 1, 'ALSO BE': 1, 'BE IMPLEMENTED': 1, 'IMPLEMENTED IN': 1, 'IN APIS': 1, 'APIS OF': 1, 'OF ONLINE': 1, 'ONLINE BROKERAGES': 1, 'BROKERAGES THAT': 1, 'THAT RUN': 1, 'ON OTHER': 1, 'LANGUAGES BY': 1, 'USING WRAPPERS': 1, 'IN ARTIFICIAL': 1, 'INTELLIGENCE PROJECTS': 1, 'WITH MODULAR': 1, 'MODULAR ARCHITECTURE': 1, 'ARCHITECTURE SIMPLE': 1, 'SIMPLE SYNTAX': 1, 'AND RICH': 1, 'RICH TEXT': 1, 'PROCESSING TOOLS': 1, 'TOOLS PYTHON': 1, 'IS OFTEN': 1, 'FOR NATURAL': 1, 'LANGUAGE PROCESSING': 1, 'SYSTEMS INCLUDE': 1, 'INCLUDE PYTHON': 1, 'STANDARD COMPONENT': 1, 'IT SHIPS': 1, 'SHIPS WITH': 1, 'WITH MOST': 1, 'MOST LINUX': 1, 'DISTRIBUTIONS AMIGAOS': 1, 'AMIGAOS FREEBSD': 1, 'FREEBSD NETBSD': 1, 'NETBSD OPENBSD': 1, 'OPENBSD AND': 1, 'AND MACOS': 1, 'MACOS AND': 1, 'AND CAN': 1, 'USED FROM': 1, 'THE COMMAND': 1, 'LINE TERMINAL': 1, 'MANY LINUX': 1, 'DISTRIBUTIONS USE': 1, 'USE INSTALLERS': 1, 'INSTALLERS WRITTEN': 1, 'PYTHON UBUNTU': 1, 'UBUNTU USES': 1, 'THE UBIQUITY': 1, 'UBIQUITY INSTALLER': 1, 'INSTALLER WHILE': 1, 'WHILE RED': 1, 'RED HAT': 1, 'HAT LINUX': 1, 'LINUX AND': 1, 'AND FEDORA': 1, 'FEDORA USE': 1, 'THE ANACONDA': 1, 'ANACONDA INSTALLER': 1, 'GENTOO LINUX': 1, 'LINUX USES': 1, 'ITS PACKAGE': 1, 'PACKAGE MANAGEMENT': 1, 'MANAGEMENT SYSTEM': 1, 'SYSTEM PORTAGE': 1, 'USED EXTENSIVELY': 1, 'EXTENSIVELY IN': 1, 'INFORMATION SECURITY': 1, 'SECURITY INDUSTRY': 1, 'INDUSTRY INCLUDING': 1, 'IN EXPLOIT': 1, 'EXPLOIT DEVELOPMENT': 1, 'THE SUGAR': 1, 'SUGAR SOFTWARE': 1, 'SOFTWARE FOR': 1, 'THE ONE': 1, 'ONE LAPTOP': 1, 'LAPTOP PER': 1, 'PER CHILD': 1, 'CHILD XO': 1, 'XO NOW': 1, 'NOW DEVELOPED': 1, 'DEVELOPED AT': 1, 'AT SUGAR': 1, 'LABS IS': 1, 'THE RASPBERRY': 1, 'RASPBERRY PI': 1, 'PI SINGLE-BOARD': 1, 'SINGLE-BOARD COMPUTER': 1, 'COMPUTER PROJECT': 1, 'HAS ADOPTED': 1, 'ADOPTED PYTHON': 1, 'ITS MAIN': 1, 'MAIN USER-PROGRAMMING': 1, 'USER-PROGRAMMING LANGUAGE': 1, 'LIBREOFFICE INCLUDES': 1, 'INCLUDES PYTHON': 1, 'AND INTENDS': 1, 'INTENDS TO': 1, 'TO REPLACE': 1, 'REPLACE JAVA': 1, 'JAVA WITH': 1, 'ITS PYTHON': 1, 'PYTHON SCRIPTING': 1, 'SCRIPTING PROVIDER': 1, 'PROVIDER IS': 1, 'A CORE': 1, 'CORE FEATURE': 1, 'FEATURE SINCE': 1, 'FROM FEBRUARY': 1, 'PYTHON EDIT': 1, 'PHILOSOPHY HAVE': 1, 'HAVE INFLUENCED': 1, 'INFLUENCED MANY': 1, 'OTHER PROGRAMMING': 1, 'LANGUAGES BOO': 1, 'BOO USES': 1, 'INDENTATION A': 1, 'SIMILAR OBJECT': 1, 'COBRA USES': 1, 'INDENTATION AND': 1, 'ITS ACKNOWLEDGEMENTS': 1, 'ACKNOWLEDGEMENTS DOCUMENT': 1, 'DOCUMENT LISTS': 1, 'LISTS PYTHON': 1, 'PYTHON FIRST': 1, 'FIRST AMONG': 1, 'AMONG LANGUAGES': 1, 'LANGUAGES THAT': 1, 'THAT INFLUENCED': 1, 'INFLUENCED IT': 1, 'HOWEVER COBRA': 1, 'COBRA DIRECTLY': 1, 'DIRECTLY SUPPORTS': 1, 'SUPPORTS DESIGN-BY-CONTRACT': 1, 'DESIGN-BY-CONTRACT UNIT': 1, 'UNIT TESTS': 1, 'TESTS AND': 1, 'AND OPTIONAL': 1, 'COFFEESCRIPT A': 1, 'THAT CROSS-COMPILES': 1, 'CROSS-COMPILES TO': 1, 'JAVASCRIPT HAS': 1, 'HAS PYTHON-INSPIRED': 1, 'ECMASCRIPT BORROWED': 1, 'BORROWED ITERATORS': 1, 'ITERATORS GENERATORS': 1, 'GENERATORS AND': 1, 'AND LIST': 1, 'COMPREHENSIONS FROM': 1, 'GO IS': 1, 'DESCRIBED AS': 1, 'AS INCORPORATING': 1, 'INCORPORATING THE': 1, 'DEVELOPMENT SPEED': 1, 'SPEED OF': 1, 'OF WORKING': 1, 'WORKING IN': 1, 'LANGUAGE LIKE': 1, 'LIKE PYTHON': 1, 'GROOVY WAS': 1, 'WAS MOTIVATED': 1, 'MOTIVATED BY': 1, 'THE DESIRE': 1, 'DESIRE TO': 1, 'TO BRING': 1, 'BRING THE': 1, 'PHILOSOPHY TO': 1, 'JULIA WAS': 1, 'DESIGNED WITH': 1, 'WITH TRUE': 1, 'TRUE MACROS': 1, 'AND TO': 1, 'AS USABLE': 1, 'USABLE FOR': 1, 'FOR GENERAL': 1, 'GENERAL PROGRAMMING': 1, 'PROGRAMMING AS': 1, 'AND SHOULD': 1, 'AS FAST': 1, 'FAST AS': 1, 'CALLING TO': 1, 'TO OR': 1, 'OR FROM': 1, 'FROM JULIA': 1, 'JULIA IS': 1, 'TO WITH': 1, 'WITH PYCALL.JL': 1, 'PYCALL.JL AND': 1, 'PACKAGE PYJULIA': 1, 'PYJULIA ALLOWS': 1, 'ALLOWS CALLING': 1, 'CALLING IN': 1, 'OTHER DIRECTION': 1, 'DIRECTION FROM': 1, 'OCAML HAS': 1, 'HAS AN': 1, 'AN OPTIONAL': 1, 'OPTIONAL SYNTAX': 1, 'SYNTAX NAMED': 1, 'NAMED TWT': 1, 'TWT THE': 1, 'THING INSPIRED': 1, 'AND HASKELL': 1, \"RUBY'S CREATOR\": 1, 'CREATOR YUKIHIRO': 1, 'YUKIHIRO MATSUMOTO': 1, 'MATSUMOTO HAS': 1, 'HAS SAID': 1, 'SAID I': 1, 'I WANTED': 1, 'WANTED A': 1, 'THAT WAS': 1, 'WAS MORE': 1, 'MORE POWERFUL': 1, 'POWERFUL THAN': 1, 'THAN PERL': 1, 'AND MORE': 1, 'MORE OBJECT-ORIENTED': 1, 'OBJECT-ORIENTED THAN': 1, 'THAN PYTHON': 1, \"THAT'S WHY\": 1, 'WHY I': 1, 'TO DESIGN': 1, 'DESIGN MY': 1, 'MY OWN': 1, 'OWN LANGUAGE': 1, 'LANGUAGE SWIFT': 1, 'SWIFT A': 1, 'LANGUAGE DEVELOPED': 1, 'DEVELOPED BY': 1, 'BY APPLE': 1, 'APPLE HAS': 1, 'HAS SOME': 1, 'SOME PYTHON-INSPIRED': 1, 'DEVELOPMENT PRACTICES': 1, 'PRACTICES HAVE': 1, 'HAVE ALSO': 1, 'BEEN EMULATED': 1, 'EMULATED BY': 1, 'BY OTHER': 1, 'THE PRACTICE': 1, 'PRACTICE OF': 1, 'OF REQUIRING': 1, 'REQUIRING A': 1, 'A DOCUMENT': 1, 'DOCUMENT DESCRIBING': 1, 'DESCRIBING THE': 1, 'THE RATIONALE': 1, 'RATIONALE FOR': 1, 'FOR AND': 1, 'AND ISSUES': 1, 'ISSUES SURROUNDING': 1, 'SURROUNDING A': 1, 'A CHANGE': 1, 'CHANGE TO': 1, 'PEP IS': 1, 'IN TCL': 1, 'TCL AND': 1, 'AND ERLANG': 1, 'PYTHON RECEIVED': 1, \"RECEIVED TIOBE'S\": 1, \"TIOBE'S PROGRAMMING\": 1, 'YEAR AWARDS': 1, 'AWARDS IN': 1, 'THE AWARD': 1, 'AWARD IS': 1, 'IS GIVEN': 1, 'THE GREATEST': 1, 'GREATEST GROWTH': 1, 'GROWTH IN': 1, 'IN POPULARITY': 1, 'POPULARITY OVER': 1, 'OVER THE': 1, 'YEAR AS': 1, 'AS MEASURED': 1, 'MEASURED BY': 1, 'ALSO EDIT': 1, 'EDIT FREE': 1, 'SOFTWARE PORTAL': 1, 'PORTAL PYTHON': 1, 'PROGRAMMING PORTAL': 1, 'PORTAL COMPARISON': 1, 'ENVIRONMENTS FOR': 1, 'PYTHON COMPARISON': 1, 'LANGUAGES LIST': 1, 'LANGUAGES OFF-SIDE': 1, 'RULE REFERENCES': 1, 'REFERENCES EDIT': 1, 'EDIT THE': 1, 'DEILY NED': 1, 'NED DECEMBER': 1, 'NOW AVAILABLE': 1, 'PETERSON BENJAMIN': 1, 'BENJAMIN SEPTEMBER': 1, 'FILE EXTENSION': 1, 'EXTENSION PYO': 1, 'PYO WAS': 1, 'WAS REMOVED': 1, 'REMOVED IN': 1, 'SEE PEP': 1, 'PEP HOLTH': 1, 'HOLTH MOORE': 1, 'MOORE MARCH': 1, 'PEP IMPROVING': 1, 'IMPROVING PYTHON': 1, 'PYTHON ZIP': 1, 'ZIP APPLICATION': 1, 'APPLICATION SUPPORT': 1, 'WHY WAS': 1, 'WAS PYTHON': 1, 'PYTHON CREATED': 1, 'CREATED IN': 1, 'FIRST PLACE': 1, 'KUCHLING ANDREW': 1, 'ROSSUM JULY': 1, 'ON MAY': 1, 'AN INTRODUCTION': 1, 'INTRODUCTION TO': 1, 'FOR UNIX/C': 1, 'UNIX/C PROGRAMMERS': 1, 'PROCEEDINGS OF': 1, 'THE NLUUG': 1, 'NLUUG NAJAARSCONFERENTIE': 1, 'NAJAARSCONFERENTIE DUTCH': 1, 'DUTCH UNIX': 1, 'UNIX USERS': 1, 'USERS GROUP': 1, 'EVEN THOUGH': 1, 'THOUGH THE': 1, 'DESIGN OF': 1, 'OF IS': 1, 'IS FAR': 1, 'FAR FROM': 1, 'FROM IDEAL': 1, 'IDEAL ITS': 1, 'ITS INFLUENCE': 1, 'INFLUENCE ON': 1, 'IS CONSIDERABLE': 1, 'A CLASSES': 1, 'CLASS MECHANISMS': 1, 'MECHANISMS FOUND': 1, 'FOUND IN': 1, 'AND MODULA': 1, 'MODULA LUNDH': 1, 'LUNDH FREDRIK': 1, 'CALL BY': 1, 'BY OBJECT': 1, 'REPLACE CLU': 1, 'CLU WITH': 1, 'PYTHON RECORD': 1, 'RECORD WITH': 1, 'WITH INSTANCE': 1, 'INSTANCE AND': 1, 'AND PROCEDURE': 1, 'PROCEDURE WITH': 1, 'WITH FUNCTION': 1, 'AND YOU': 1, 'YOU GET': 1, 'GET A': 1, 'PRETTY ACCURATE': 1, 'ACCURATE DESCRIPTION': 1, 'DESCRIPTION OF': 1, \"PYTHON'S OBJECT\": 1, 'SIMIONATO MICHELE': 1, 'METHOD RESOLUTION': 1, 'RESOLUTION ORDER': 1, 'THE METHOD': 1, 'METHOD ITSELF': 1, 'ITSELF HAS': 1, 'HAS NOTHING': 1, 'NOTHING TO': 1, 'DO WITH': 1, 'PYTHON SINCE': 1, 'SINCE IT': 1, 'WAS INVENTED': 1, 'INVENTED BY': 1, 'BY PEOPLE': 1, 'PEOPLE WORKING': 1, 'WORKING ON': 1, 'ON DYLAN': 1, 'DYLAN AND': 1, 'DESCRIBED IN': 1, 'A PAPER': 1, 'PAPER INTENDED': 1, 'FOR LISPERS': 1, 'LISPERS KUCHLING': 1, 'PROGRAMMING HOWTO': 1, 'SCHEMENAUER NEIL': 1, 'NEIL PETERS': 1, 'TIM HETLAND': 1, 'HETLAND MAGNUS': 1, 'MAGNUS LIE': 1, 'LIE MAY': 1, 'PEP SIMPLE': 1, 'SIMPLE GENERATORS': 1, 'SMITH KEVIN': 1, 'KEVIN JEWETT': 1, 'JEWETT JIM': 1, 'JIM MONTANARO': 1, 'MONTANARO SKIP': 1, 'SKIP BAXTER': 1, 'ANTHONY SEPTEMBER': 1, 'PEP DECORATORS': 1, 'DECORATORS FOR': 1, 'FOR FUNCTIONS': 1, 'FUNCTIONS AND': 1, 'MORE CONTROL': 1, 'FLOW TOOLS': 1, 'HUBINGER EVAN': 1, 'COCONUT PROGRAMMING': 1, 'COFFEESCRIPT BORROWS': 1, 'BORROWS CHAINED': 1, 'CHAINED COMPARISONS': 1, 'COMPARISONS FROM': 1, 'GENIE LANGUAGE': 1, 'LANGUAGE A': 1, 'BRIEF GUIDE': 1, 'PYTHON INFLUENCES': 1, 'INFLUENCES IN': 1, 'IN JAVASCRIPT': 1, 'RAUSCHMAYER AXEL': 1, 'CHAPTER THE': 1, 'OF JAVASCRIPT': 1, 'JAVASCRIPT INFLUENCES': 1, \"O'REILLY SPEAKING\": 1, 'SPEAKING JAVASCRIPT': 1, 'WHY WE': 1, 'CREATED JULIA': 1, 'JULIA WEBSITE': 1, 'RING TEAM': 1, 'TEAM DECEMBER': 1, 'RING AND': 1, 'BINI OLA': 1, 'PRACTICAL JRUBY': 1, 'JRUBY ON': 1, 'RAILS WEB': 1, 'PROJECTS BRINGING': 1, 'BRINGING RUBY': 1, 'RUBY ON': 1, 'RAILS TO': 1, 'BERKELEY APRESS': 1, 'SWIFT LANGUAGE': 1, 'THE PRODUCT': 1, 'PRODUCT OF': 1, 'OF TIRELESS': 1, 'TIRELESS EFFORT': 1, 'EFFORT FROM': 1, 'A TEAM': 1, 'TEAM OF': 1, 'OF LANGUAGE': 1, 'LANGUAGE EXPERTS': 1, 'EXPERTS DOCUMENTATION': 1, 'DOCUMENTATION GURUS': 1, 'GURUS COMPILER': 1, 'COMPILER OPTIMIZATION': 1, 'OPTIMIZATION NINJAS': 1, 'NINJAS AND': 1, 'AND AN': 1, 'AN INCREDIBLY': 1, 'INCREDIBLY IMPORTANT': 1, 'IMPORTANT INTERNAL': 1, 'INTERNAL DOGFOODING': 1, 'DOGFOODING GROUP': 1, 'GROUP WHO': 1, 'WHO PROVIDED': 1, 'PROVIDED FEEDBACK': 1, 'FEEDBACK TO': 1, 'TO HELP': 1, 'HELP REFINE': 1, 'REFINE AND': 1, 'AND BATTLE-TEST': 1, 'BATTLE-TEST IDEAS': 1, 'OF COURSE': 1, 'COURSE IT': 1, 'ALSO GREATLY': 1, 'GREATLY BENEFITED': 1, 'BENEFITED FROM': 1, 'THE EXPERIENCES': 1, 'EXPERIENCES HARD-WON': 1, 'HARD-WON BY': 1, 'BY MANY': 1, 'THE FIELD': 1, 'FIELD DRAWING': 1, 'RAPID GUI': 1, 'GUI PROGRAMMING': 1, 'PROGRAMMING WITH': 1, 'AND QT': 1, 'A VERY': 1, 'VERY EXPRESSIVE': 1, 'EXPRESSIVE LANGUAGE': 1, 'LANGUAGE WHICH': 1, 'WHICH MEANS': 1, 'THAT WE': 1, 'CAN USUALLY': 1, 'USUALLY WRITE': 1, 'WRITE FAR': 1, 'FAR FEWER': 1, 'CODE THAN': 1, 'THAN WOULD': 1, 'BE REQUIRED': 1, 'REQUIRED FOR': 1, 'AN EQUIVALENT': 1, 'EQUIVALENT APPLICATION': 1, 'APPLICATION WRITTEN': 1, 'IN SAY': 1, 'SAY OR': 1, 'OR JAVA': 1, 'JAVA MCCONNELL': 1, 'MCCONNELL STEVE': 1, 'STEVE NOVEMBER': 1, 'CODE COMPLETE': 1, 'KUHLMAN DAVE': 1, 'PYTHON BOOK': 1, 'BOOK BEGINNING': 1, 'BEGINNING PYTHON': 1, 'PYTHON ADVANCED': 1, 'ADVANCED PYTHON': 1, 'PYTHON EXERCISES': 1, 'APRIL SECOND': 1, 'SECOND SECTION': 1, 'SECTION FANS': 1, 'FANS OF': 1, 'PYTHON USE': 1, 'THE PHRASE': 1, 'PHRASE BATTERIES': 1, 'BATTERIES INCLUDED': 1, 'INCLUDED TO': 1, 'DESCRIBE THE': 1, 'LIBRARY WHICH': 1, 'WHICH COVERS': 1, 'COVERS EVERYTHING': 1, 'EVERYTHING FROM': 1, 'FROM ASYNCHRONOUS': 1, 'ASYNCHRONOUS PROCESSING': 1, 'PROCESSING TO': 1, 'TO ZIP': 1, 'ZIP FILES': 1, 'FILES HISTORY': 1, 'HISTORY AND': 1, 'AND LICENSE': 1, 'ALL PYTHON': 1, 'PYTHON RELEASES': 1, 'RELEASES ARE': 1, 'ARE OPEN': 1, 'SOURCE A': 1, 'A VENNERS': 1, 'VENNERS BILL': 1, 'BILL JANUARY': 1, 'THE MAKING': 1, 'MAKING OF': 1, 'ARTIMA DEVELOPER': 1, 'GUIDO JANUARY': 1, 'GUIDO AUGUST': 1, 'SETL WAS': 1, 'WAS LUKEWARM': 1, 'LUKEWARM ABOUT': 1, 'ABOUT RANGE': 1, 'RANGE LITERALS': 1, 'PYTHON-DEV MAILING': 1, 'FOREWORD FOR': 1, 'PROGRAMMING PYTHON': 1, 'PYTHON ST': 1, 'ST ED': 1, 'MOSHE OCTOBER': 1, 'RELEASE SCHEDULE': 1, 'PEP NETWORK': 1, 'NETWORK SECURITY': 1, 'SECURITY ENHANCEMENTS': 1, 'ENHANCEMENTS FOR': 1, 'CLABURN THOMAS': 1, 'THOMAS JANUARY': 1, 'GRUMPY CODE': 1, 'CODE MAKES': 1, 'MAKES PYTHON': 1, 'PYTHON GO': 1, 'GOOGLE OPEN': 1, 'SOURCE BLOG': 1, 'BLOG GRUMPY': 1, 'GRUMPY GO': 1, 'GO RUNNING': 1, 'RUNNING PYTHON': 1, 'THE CAIN': 1, 'CAIN GANG': 1, 'GANG LTD': 1, 'PYTHON METACLASSES': 1, 'METACLASSES WHO': 1, 'WHO WHY': 1, 'WHY WHEN': 1, 'WHEN PDF': 1, 'ORIGINAL PDF': 1, 'PDF ON': 1, 'SPECIAL METHOD': 1, 'METHOD NAMES': 1, 'PYDBC METHOD': 1, 'METHOD PRECONDITIONS': 1, 'PRECONDITIONS METHOD': 1, 'METHOD POSTCONDITIONS': 1, 'POSTCONDITIONS AND': 1, 'AND CLASS': 1, 'CLASS INVARIANTS': 1, 'INVARIANTS FOR': 1, 'CONTRACTS FOR': 1, 'A HETTINGER': 1, 'RAYMOND JANUARY': 1, 'PEP GENERATOR': 1, 'ITERTOOLS FUNCTIONS': 1, 'FUNCTIONS CREATING': 1, 'CREATING ITERATORS': 1, 'ITERATORS FOR': 1, 'FOR EFFICIENT': 1, 'EFFICIENT LOOPING': 1, 'A PETERS': 1, 'TIM AUGUST': 1, 'PEP THE': 1, 'MARTELLI ALEX': 1, 'ALEX RAVENSCROFT': 1, 'RAVENSCROFT ANNA': 1, 'ANNA ASCHER': 1, 'ASCHER DAVID': 1, 'PYTHON COOKBOOK': 1, 'COOKBOOK ND': 1, 'ND EDITION': 1, 'WAYS PYTHON': 1, 'A POWERFUL': 1, 'POWERFUL FORCE': 1, 'FORCE ON': 1, 'PPRINT DATA': 1, 'DATA PRETTY': 1, 'PRINTER PYTHON': 1, 'CODE LIKE': 1, 'PYTHONISTA IDIOMATIC': 1, 'IDIOMATIC PYTHON': 1, 'IS PYTHON': 1, 'A GOOD': 1, 'GOOD LANGUAGE': 1, 'FOR BEGINNING': 1, 'BEGINNING PROGRAMMERS': 1, 'MYTHS ABOUT': 1, 'ABOUT INDENTATION': 1, 'INDENTATION IN': 1, 'SWEIGART AL': 1, 'APPENDIX A': 1, 'A DIFFERENCES': 1, 'DIFFERENCES BETWEEN': 1, 'BETWEEN PYTHON': 1, 'INVENT YOUR': 1, 'YOUR OWN': 1, 'OWN COMPUTER': 1, 'COMPUTER GAMES': 1, 'GAMES WITH': 1, 'PYTHON ED': 1, 'TAIL RECURSION': 1, 'RECURSION ELIMINATION': 1, 'GUIDO FEBRUARY': 1, 'DESIGN IS': 1, 'NOT JUST': 1, 'JUST SOLVING': 1, 'SOLVING PUZZLES': 1, 'ARTIMA FORUMS': 1, 'GUIDO EBY': 1, 'PEP COROUTINES': 1, 'COROUTINES VIA': 1, 'VIA ENHANCED': 1, 'ENHANCED GENERATORS': 1, 'RELEASE AND': 1, 'AND CHANGELOG': 1, 'NUMERICAL EQUALITY': 1, 'REFERENCE EQUALITY': 1, 'GUIDO HETTINGER': 1, 'RAYMOND FEBRUARY': 1, 'PEP CONDITIONAL': 1, 'TYPES PYTHON': 1, 'RC DOCUMENTATION': 1, 'PEP LITERAL': 1, 'LITERAL STRING': 1, 'WHY MUST': 1, 'MUST SELF': 1, 'SELF BE': 1, 'USED EXPLICITLY': 1, 'EXPLICITLY IN': 1, 'IN METHOD': 1, 'METHOD DEFINITIONS': 1, 'DEFINITIONS AND': 1, 'AND CALLS': 1, 'AND HISTORY': 1, 'HISTORY FAQ': 1, 'REFERENCE SECTION': 1, 'NEW-STYLE AND': 1, 'AND CLASSIC': 1, 'CLASSIC CLASSES': 1, 'CLASSES FOR': 1, 'FOR RELEASE': 1, 'TYPE HINTING': 1, 'HINTING FOR': 1, 'MYPY OPTIONAL': 1, 'TYPING FOR': 1, 'PEP UNIFYING': 1, 'UNIFYING LONG': 1, 'LONG INTEGERS': 1, 'AND INTEGERS': 1, 'THE TILDE': 1, 'TILDE OPERATOR': 1, 'PYTHON STACKOVERFLOW': 1, 'BITWISEOPERATORS PYTHON': 1, 'PYTHON WIKI': 1, 'PEP CHANGING': 1, 'CHANGING THE': 1, \"WHY PYTHON'S\": 1, \"PYTHON'S INTEGER\": 1, 'DIVISION FLOORS': 1, 'AUGUST ROUND': 1, 'AUGUST PYTHON': 1, 'PYTHON ESSENTIAL': 1, 'ESSENTIAL REFERENCE': 1, 'REFERENCE DAVID': 1, 'BEAZLEY BUILT-IN': 1, 'BUILT-IN TYPE': 1, 'PIOTROWSKI PRZEMYSLAW': 1, 'PRZEMYSLAW JULY': 1, 'BUILD A': 1, 'A RAPID': 1, 'RAPID WEB': 1, 'WEB DEVELOPMENT': 1, 'DEVELOPMENT ENVIRONMENT': 1, 'ENVIRONMENT FOR': 1, 'PYTHON SERVER': 1, 'SERVER PAGES': 1, 'PAGES AND': 1, 'AND ORACLE': 1, 'ORACLE TECHNOLOGY': 1, 'TECHNOLOGY NETWORK': 1, 'FACUNDO OCTOBER': 1, 'ENTHOUGHT CANOPY': 1, 'GUIDO JUNE': 1, 'PEP STYLE': 1, 'STYLE GUIDE': 1, 'GUIDE FOR': 1, 'FOR CODE': 1, 'CPYTHON BYTE': 1, 'INTERNALS PDF': 1, 'PYPY COMPATIBILITY': 1, 'SPEED COMPARISON': 1, 'COMPARISON BETWEEN': 1, 'BETWEEN CPYTHON': 1, 'STM WITH': 1, 'WITH THREADS': 1, 'APPLICATION-LEVEL STACKLESS': 1, 'STACKLESS FEATURES': 1, 'FEATURES PYPY': 1, 'PLANS FOR': 1, 'FOR OPTIMIZING': 1, 'OPTIMIZING PYTHON': 1, 'GOOGLE PROJECT': 1, 'PROJECT HOSTING': 1, 'PYTHON ON': 1, 'STOCHASTIC GEOMETRY': 1, 'HOME NUITKA': 1, 'MURRI RICCARDO': 1, 'PERFORMANCE OF': 1, 'PYTHON RUNTIMES': 1, 'RUNTIMES ON': 1, 'A NON-NUMERIC': 1, 'NON-NUMERIC SCIENTIFIC': 1, 'SCIENTIFIC CODE': 1, 'EUROPEAN CONFERENCE': 1, 'SCIENCE EUROSCIPY': 1, 'A WARSAW': 1, 'WARSAW BARRY': 1, 'BARRY HYLTON': 1, 'HYLTON JEREMY': 1, 'JEREMY GOODGER': 1, 'DAVID JUNE': 1, 'PEP PEP': 1, 'PEP PURPOSE': 1, 'CANNON BRETT': 1, 'GUIDO SOME': 1, 'SOME GUYS': 1, 'GUYS AND': 1, 'A MAILING': 1, 'LIST HOW': 1, 'HOW PYTHON': 1, 'IS DEVELOPED': 1, 'ON JUNE': 1, \"PYTHON DEVELOPER'S\": 1, \"DEVELOPER'S GUIDE\": 1, 'NORWITZ NEAL': 1, 'NEAL APRIL': 1, 'PYTHON-DEV RELEASE': 1, 'RELEASE SCHEDULES': 1, 'SCHEDULES WAS': 1, 'WAS STABILITY': 1, 'STABILITY CHANGE': 1, 'AAHZ BAXTER': 1, 'ANTHONY MARCH': 1, 'PEP BUG': 1, 'BUG FIX': 1, 'FIX RELEASES': 1, 'PYTHON BUILDBOT': 1, 'DEVELOPERS GUIDE': 1, 'A WHETTING': 1, 'WHETTING YOUR': 1, 'YOUR APPETITE': 1, 'PYTHON SHOULD': 1, 'SHOULD I': 1, 'I USE': 1, 'USE ELSE': 1, 'ELSE AFTER': 1, 'A RETURN': 1, 'RETURN IN': 1, 'AN IF': 1, 'IF BLOCK': 1, 'STACK OVERFLOW': 1, 'STACK EXCHANGE': 1, 'PYTHON POWERFUL': 1, 'POWERFUL OBJECT-ORIENTED': 1, 'MEDIA INC': 1, 'FEHILY CHRIS': 1, 'PEACHPIT PRESS': 1, 'TIOBE THE': 1, 'THE SOFTWARE': 1, 'SOFTWARE QUALITY': 1, 'QUALITY COMPANY': 1, 'SOFTWARE INDEX': 1, 'INDEX PYTHON': 1, 'PRECHELT LUTZ': 1, 'LUTZ MARCH': 1, 'EMPIRICAL COMPARISON': 1, 'JAVA PERL': 1, 'PERL PYTHON': 1, 'REXX AND': 1, 'AND TCL': 1, 'TCL PDF': 1, 'QUOTES ABOUT': 1, 'ORGANIZATIONS USING': 1, 'THE HOLY': 1, 'HOLY GRAIL': 1, 'GRAIL OF': 1, 'CERN BULLETIN': 1, 'CERN PUBLICATIONS': 1, 'SHAFER DANIEL': 1, 'PYTHON STREAMLINES': 1, 'STREAMLINES SPACE': 1, 'SPACE SHUTTLE': 1, 'SHUTTLE MISSION': 1, 'MISSION DESIGN': 1, 'FORTENBERRY TIM': 1, 'TIM JANUARY': 1, 'INDUSTRIAL LIGHT': 1, 'LIGHT MAGIC': 1, 'MAGIC RUNS': 1, 'RUNS ON': 1, 'TAFT DARRYL': 1, 'PYTHON SLITHERS': 1, 'SLITHERS INTO': 1, 'INTO SYSTEMS': 1, 'ZIFF DAVIS': 1, 'DAVIS HOLDINGS': 1, 'USAGE STATISTICS': 1, 'STATISTICS AND': 1, 'AND MARKET': 1, 'MARKET SHARE': 1, 'SHARE OF': 1, 'FOR WEBSITES': 1, 'OLIPHANT TRAVIS': 1, 'FOR SCIENTIFIC': 1, 'JARROD AIVAZIS': 1, 'AIVAZIS MICHAEL': 1, 'FOR SCIENTISTS': 1, 'SCIENTISTS AND': 1, 'AND ENGINEERS': 1, 'NUMERIC COMPUTATION': 1, 'COMPUTATION AND': 1, 'STATISTICAL DATA': 1, 'ANALYSIS ON': 1, 'SCIENTIFIC DATA': 1, 'ANALYSIS USING': 1, 'USING JYTHON': 1, 'JYTHON SCRIPTING': 1, 'SCRIPTING AND': 1, 'INSTALLERS FOR': 1, 'FOR GIMP': 1, 'GIMP FOR': 1, 'FOR WINDOWS': 1, 'WINDOWS FREQUENTLY': 1, 'FREQUENTLY ASKED': 1, 'ASKED QUESTIONS': 1, 'JASC PSP': 1, 'PSP COMPONENTS': 1, 'ON MARCH': 1, 'ABOUT GETTING': 1, 'GETTING STARTED': 1, 'STARTED WITH': 1, 'WITH WRITING': 1, 'WRITING GEOPROCESSING': 1, 'GEOPROCESSING SCRIPTS': 1, 'ARCGIS DESKTOP': 1, 'DESKTOP HELP': 1, 'ENVIRONMENTAL SYSTEMS': 1, 'SYSTEMS RESEARCH': 1, 'RESEARCH INSTITUTE': 1, 'CCP PORKBELLY': 1, 'PORKBELLY AUGUST': 1, 'EVE COMMUNITY': 1, 'COMMUNITY DEV': 1, 'DEV BLOGS': 1, 'CCP GAMES': 1, 'AS YOU': 1, 'YOU MAY': 1, 'MAY KNOW': 1, 'KNOW EVE': 1, 'EVE HAS': 1, 'HAS AT': 1, 'AT ITS': 1, 'CORE THE': 1, 'THE PROGRAMMING': 1, 'LANGUAGE KNOWN': 1, 'KNOWN AS': 1, 'AS STACKLESS': 1, 'CAUDILL BARRY': 1, 'BARRY SEPTEMBER': 1, 'MODDING SID': 1, 'IV DEVELOPER': 1, 'DEVELOPER BLOG': 1, 'FIRAXIS GAMES': 1, 'CREATED THREE': 1, 'THREE LEVELS': 1, 'LEVELS OF': 1, 'OF TOOLS': 1, 'THE NEXT': 1, 'NEXT LEVEL': 1, 'LEVEL OFFERS': 1, 'OFFERS PYTHON': 1, 'AND XML': 1, 'XML SUPPORT': 1, 'SUPPORT LETTING': 1, 'LETTING MODDERS': 1, 'MODDERS WITH': 1, 'WITH MORE': 1, 'MORE EXPERIENCE': 1, 'EXPERIENCE MANIPULATE': 1, 'MANIPULATE THE': 1, 'THE GAME': 1, 'GAME WORLD': 1, 'WORLD AND': 1, 'AND EVERYTHING': 1, 'EVERYTHING IN': 1, 'IN IT': 1, 'LANGUAGE GUIDE': 1, 'GOOGLE DOCUMENTS': 1, 'DOCUMENTS LIST': 1, 'LIST DATA': 1, 'DATA API': 1, 'PYTHON BEST': 1, 'BEST PROGRAMMING': 1, 'FOR ALGORITHMIC': 1, 'TRADING SYSTEMS': 1, 'TRADING WITH': 1, 'WITH INTERACTIVE': 1, 'INTERACTIVE BROKERS': 1, 'BROKERS USING': 1, 'PYTHON AN': 1, 'AN IBPY': 1, 'IBPY TUTORIAL': 1, 'FOR ARTIFICIAL': 1, 'ON NOVEMBER': 1, 'PAINE JOCELYN': 1, 'JOCELYN ED': 1, 'AI IN': 1, 'AI EXPERT': 1, 'EXPERT NEWSLETTER': 1, 'RUSSELL STUART': 1, 'NORVIG PETER': 1, 'INTELLIGENCE A': 1, 'A MODERN': 1, 'MODERN APPROACH': 1, 'APPROACH RD': 1, 'RD ED': 1, 'UPPER SADDLE': 1, 'SADDLE RIVER': 1, 'RIVER NJ': 1, 'NJ PRENTICE': 1, 'PRENTICE HALL': 1, 'LANGUAGE TOOLKIT': 1, 'IMMUNITY KNOWING': 1, \"KNOWING YOU'RE\": 1, \"YOU'RE SECURE\": 1, 'CORELABS SITE': 1, 'WHAT IS': 1, 'IS SUGAR': 1, 'AND FIXES': 1, 'DOCUMENT FOUNDATION': 1, 'GOTCHAS FOR': 1, 'PYTHON USERS': 1, 'CODEHAUS FOUNDATION': 1, 'COMPARISON TO': 1, 'PROPOSALS ITERATORS': 1, 'ITERATORS AND': 1, 'AND GENERATORS': 1, 'GENERATORS ES': 1, 'ES WIKI': 1, 'KINCAID JASON': 1, 'JASON NOVEMBER': 1, \"GOOGLE'S GO\": 1, 'GO A': 1, 'NEW PROGRAMMING': 1, \"LANGUAGE THAT'S\": 1, \"THAT'S PYTHON\": 1, 'PYTHON MEETS': 1, 'STRACHAN JAMES': 1, 'JAMES AUGUST': 1, 'GROOVY THE': 1, 'THE BIRTH': 1, 'BIRTH OF': 1, 'NEW DYNAMIC': 1, 'LIN MIKE': 1, 'THING FOR': 1, 'FOR OCAML': 1, 'MASSACHUSETTS INSTITUTE': 1, 'INSTITUTE OF': 1, 'OF TECHNOLOGY': 1, 'OF RUBY': 1, 'I STARTED': 1, 'STARTED WORK': 1, 'SWIFT PROGRAMMING': 1, 'JULY OF': 1, 'I IMPLEMENTED': 1, 'IMPLEMENTED MUCH': 1, 'MUCH OF': 1, 'THE BASIC': 1, 'BASIC LANGUAGE': 1, 'LANGUAGE STRUCTURE': 1, 'STRUCTURE WITH': 1, 'WITH ONLY': 1, 'FEW PEOPLE': 1, 'PEOPLE KNOWING': 1, 'KNOWING OF': 1, 'ITS EXISTENCE': 1, 'FEW OTHER': 1, 'OTHER AMAZING': 1, 'AMAZING PEOPLE': 1, 'PEOPLE STARTED': 1, 'STARTED CONTRIBUTING': 1, 'CONTRIBUTING IN': 1, 'IN EARNEST': 1, 'EARNEST LATE': 1, 'LATE IN': 1, 'IT BECAME': 1, 'BECAME A': 1, 'MAJOR FOCUS': 1, 'FOCUS FOR': 1, 'THE APPLE': 1, 'APPLE DEVELOPER': 1, 'DEVELOPER TOOLS': 1, 'TOOLS GROUP': 1, 'GROUP IN': 1, 'KUPRIES ANDREAS': 1, 'ANDREAS FELLOWS': 1, 'FELLOWS DONAL': 1, 'TIP TIP': 1, 'TIP FORMAT': 1, 'TCL DEVELOPER': 1, 'DEVELOPER XCHANGE': 1, 'GUSTAFSSON PER': 1, 'PER NISKANEN': 1, 'NISKANEN RAIMO': 1, 'RAIMO JANUARY': 1, 'EEP EEP': 1, 'EEP PURPOSE': 1, 'INDEX FOR': 1, 'FOR MARCH': 1, 'READING EDIT': 1, 'EDIT DOWNEY': 1, 'DOWNEY ALLEN': 1, 'THINK PYTHON': 1, 'PYTHON HOW': 1, 'A COMPUTER': 1, 'COMPUTER SCIENTIST': 1, 'SCIENTIST VERSION': 1, 'HAMILTON NAOMI': 1, 'NAOMI AUGUST': 1, 'THE A-Z': 1, 'A-Z OF': 1, 'LANGUAGES PYTHON': 1, 'PYTHON TH': 1, 'TH ED': 1, 'PYTHON ND': 1, 'ND ED': 1, 'ADDISON-WESLEY PROFESSIONAL': 1, 'LINKS EDIT': 1, 'EDIT FIND': 1, 'FIND MORE': 1, 'MORE ABOUTPYTHON': 1, 'ABOUTPYTHON PROGRAMMING': 1, 'PROGRAMMING LANGUAGE)AT': 1, \"LANGUAGE)AT WIKIPEDIA'S\": 1, \"WIKIPEDIA'S SISTER\": 1, 'SISTER PROJECTS': 1, 'PROJECTS MEDIA': 1, 'MEDIA FROM': 1, 'FROM WIKIMEDIA': 1, 'WIKIMEDIA COMMONS': 1, 'COMMONS QUOTATIONS': 1, 'QUOTATIONS FROM': 1, 'FROM WIKIQUOTE': 1, 'WIKIQUOTE TEXTBOOKS': 1, 'TEXTBOOKS FROM': 1, 'FROM WIKIBOOKS': 1, 'WIKIBOOKS LEARNING': 1, 'LEARNING RESOURCES': 1, 'RESOURCES FROM': 1, 'FROM WIKIVERSITY': 1, 'WIKIVERSITY OFFICIAL': 1, 'OFFICIAL WEBSITE': 1, 'WEBSITE PYTHON': 1, 'PYTHON AT': 1, 'AT CURLIE': 1, 'CURLIE BASED': 1, 'ON DMOZ': 1, 'DMOZ PROGRAMMING': 1, 'LANGUAGES COMPARISON': 1, 'COMPARISON TIMELINE': 1, 'TIMELINE HISTORY': 1, 'HISTORY ASSEMBLY': 1, 'ASSEMBLY BASIC': 1, 'BASIC COBOL': 1, 'COBOL FORTRAN': 1, 'FORTRAN GO': 1, 'GROOVY HASKELL': 1, 'HASKELL JAVA': 1, 'JAVA JAVASCRIPT': 1, 'JAVASCRIPT JS': 1, 'JS KOTLIN': 1, 'KOTLIN LISP': 1, 'LISP LUA': 1, 'LUA OBJECTIVE-C': 1, 'OBJECTIVE-C PASCAL': 1, 'PASCAL PERL': 1, 'PERL PHP': 1, 'PHP PYTHON': 1, 'REXX RUBY': 1, 'RUBY SHELL': 1, 'SHELL SMALLTALK': 1, 'SMALLTALK SWIFT': 1, 'SWIFT VISUAL': 1, 'VISUAL BASIC': 1, 'BASIC NET': 1, 'NET VB.NET': 1, 'VB.NET VBSCRIPT': 1, 'VBSCRIPT MORE': 1, 'CATEGORY LISTS': 1, 'LISTS ALPHABETICAL': 1, 'ALPHABETICAL CATEGORICAL': 1, 'CATEGORICAL GENERATIONAL': 1, 'GENERATIONAL NON-ENGLISH-BASED': 1, 'NON-ENGLISH-BASED PYTHON': 1, 'IMPLEMENTATIONS CLPYTHON': 1, 'CLPYTHON CPYTHON': 1, 'CPYTHON CYTHON': 1, 'CYTHON MICROPYTHON': 1, 'NUMBA IRONPYTHON': 1, 'JYTHON PSYCO': 1, 'PSYCO PYPY': 1, 'PYPY PYTHON': 1, 'FOR SHED': 1, 'SKIN STACKLESS': 1, 'PYTHON UNLADEN': 1, 'SWALLOW MORE': 1, 'IDE BOA': 1, 'BOA ERIC': 1, 'ERIC PYTHON': 1, 'IDE IDLE': 1, 'IDLE PYDEV': 1, 'PYDEV SPE': 1, 'SPE NINJA-IDE': 1, 'NINJA-IDE MORE': 1, 'TOPICS WSGI': 1, 'WSGI SOFTWARE': 1, 'SOFTWARE LIST': 1, 'LIST PYTHON': 1, 'FOUNDATION PYCON': 1, 'PYCON PYTHON': 1, 'FRAMEWORKS BLUEBREAM': 1, 'BLUEBREAM BOTTLE': 1, 'BOTTLE CHERRYPY': 1, 'CHERRYPY DJANGO': 1, 'DJANGO FLASK': 1, 'FLASK GROK': 1, 'GROK NAGARE': 1, 'NAGARE NEVOW': 1, 'NEVOW PYJS': 1, 'PYJS PYLONS': 1, 'PYRAMID QUIXOTE': 1, 'QUIXOTE SPYCE': 1, 'SPYCE TACTIC': 1, 'TACTIC TORNADO': 1, 'TORNADO TURBOGEARS': 1, 'TURBOGEARS TWISTEDWEB': 1, 'TWISTEDWEB WEBWARE': 1, 'WEBWARE WEB': 1, 'PY ZOPE': 1, 'ZOPE MORE': 1, 'SOFTWARE GENERAL': 1, 'GENERAL ALTERNATIVE': 1, 'ALTERNATIVE TERMS': 1, 'TERMS FOR': 1, 'FOR FREE': 1, 'OF OPEN-SOURCE': 1, 'OPEN-SOURCE AND': 1, 'AND CLOSED-SOURCE': 1, 'CLOSED-SOURCE SOFTWARE': 1, 'OF SOURCE': 1, 'SOURCE CODE': 1, 'CODE HOSTING': 1, 'HOSTING FACILITIES': 1, 'FACILITIES FREE': 1, 'SOFTWARE FREE': 1, 'SOFTWARE PROJECT': 1, 'PROJECT DIRECTORIES': 1, 'DIRECTORIES GRATIS': 1, 'GRATIS VERSUS': 1, 'VERSUS LIBRE': 1, 'LIBRE LONG-TERM': 1, 'LONG-TERM SUPPORT': 1, 'SUPPORT OPEN-SOURCE': 1, 'SOFTWARE OPEN-SOURCE': 1, 'SOFTWARE DEVELOPMENT': 1, 'DEVELOPMENT OUTLINE': 1, 'OUTLINE SOFTWARE': 1, 'SOFTWARE PACKAGES': 1, 'PACKAGES AUDIO': 1, 'AUDIO BIOINFORMATICS': 1, 'BIOINFORMATICS CODECS': 1, 'CODECS COLLABORATION': 1, 'COLLABORATION CONFIGURATION': 1, 'CONFIGURATION MANAGEMENT': 1, 'MANAGEMENT DEVICE': 1, 'DEVICE DRIVERS': 1, 'DRIVERS GRAPHICS': 1, 'GRAPHICS WIRELESS': 1, 'WIRELESS GEOPHYSICS': 1, 'GEOPHYSICS HEALTH': 1, 'HEALTH MATHEMATICS': 1, 'MATHEMATICS OPERATING': 1, 'SYSTEMS PROGRAMMING': 1, 'LANGUAGES ROUTING': 1, 'ROUTING STATISTICS': 1, 'STATISTICS TELEVISION': 1, 'TELEVISION VIDEO': 1, 'GAMES WEB': 1, 'APPLICATIONS CONTENT': 1, 'CONTENT MANAGEMENT': 1, 'MANAGEMENT SYSTEMS': 1, 'SYSTEMS E-COMMERCE': 1, 'E-COMMERCE WORD': 1, 'WORD PROCESSORS': 1, 'PROCESSORS ANDROID': 1, 'ANDROID APPS': 1, 'APPS IOS': 1, 'IOS APPS': 1, 'APPS COMMERCIAL': 1, 'COMMERCIAL TRADEMARKED': 1, 'TRADEMARKED FORMERLY': 1, 'FORMERLY PROPRIETARY': 1, 'PROPRIETARY COMMUNITY': 1, 'COMMUNITY FREE': 1, 'MOVEMENT HISTORY': 1, 'HISTORY OPEN-SOURCE': 1, 'MOVEMENT ORGANIZATIONS': 1, 'ORGANIZATIONS EVENTS': 1, 'EVENTS LICENSES': 1, 'LICENSES AFL': 1, 'AFL APACHE': 1, 'APACHE APSL': 1, 'APSL ARTISTIC': 1, 'ARTISTIC BEERWARE': 1, 'BEERWARE BOOST': 1, 'BOOST BSD': 1, 'BSD CC': 1, 'CC CDDL': 1, 'CDDL EPL': 1, 'EPL GNU': 1, 'GNU GPL': 1, 'GPL GNU': 1, 'GNU LGPL': 1, 'LGPL ISC': 1, 'ISC MIT': 1, 'MIT MPL': 1, 'MPL MS-PL/RL': 1, 'MS-PL/RL PYTHON': 1, 'FOUNDATION SLEEPYCAT': 1, 'SLEEPYCAT UNLICENSE': 1, 'UNLICENSE WTFPL': 1, 'WTFPL ZLIB': 1, 'ZLIB LICENSE': 1, 'LICENSE TYPES': 1, 'AND STANDARDS': 1, 'STANDARDS COMPARISON': 1, 'SOFTWARE LICENSES': 1, 'LICENSES CONTRIBUTOR': 1, 'CONTRIBUTOR LICENSE': 1, 'LICENSE AGREEMENT': 1, 'AGREEMENT COPYFREE': 1, 'COPYFREE COPYLEFT': 1, 'COPYLEFT DEBIAN': 1, 'DEBIAN FREE': 1, 'SOFTWARE GUIDELINES': 1, 'GUIDELINES DEFINITION': 1, 'DEFINITION OF': 1, 'FREE CULTURAL': 1, 'CULTURAL WORKS': 1, 'WORKS FREE': 1, 'FREE LICENSE': 1, 'LICENSE THE': 1, 'THE FREE': 1, 'SOFTWARE DEFINITION': 1, 'DEFINITION THE': 1, 'THE OPEN': 1, 'SOURCE DEFINITION': 1, 'DEFINITION OPEN-SOURCE': 1, 'OPEN-SOURCE LICENSE': 1, 'LICENSE PERMISSIVE': 1, 'PERMISSIVE SOFTWARE': 1, 'SOFTWARE LICENCE': 1, 'LICENCE PUBLIC': 1, 'PUBLIC DOMAIN': 1, 'DOMAIN VIRAL': 1, 'VIRAL LICENSE': 1, 'LICENSE CHALLENGES': 1, 'CHALLENGES BINARY': 1, 'BINARY BLOB': 1, 'BLOB DIGITAL': 1, 'DIGITAL RIGHTS': 1, 'RIGHTS MANAGEMENT': 1, 'MANAGEMENT HARDWARE': 1, 'HARDWARE RESTRICTIONS': 1, 'RESTRICTIONS LICENSE': 1, 'LICENSE PROLIFERATION': 1, 'PROLIFERATION MOZILLA': 1, 'MOZILLA SOFTWARE': 1, 'SOFTWARE REBRANDING': 1, 'REBRANDING PROPRIETARY': 1, 'PROPRIETARY SOFTWARE': 1, 'SOFTWARE SCO/LINUX': 1, 'SCO/LINUX CONTROVERSIES': 1, 'CONTROVERSIES SECURE': 1, 'SECURE BOOT': 1, 'BOOT SOFTWARE': 1, 'SOFTWARE PATENTS': 1, 'PATENTS SOFTWARE': 1, 'SOFTWARE SECURITY': 1, 'SECURITY TRUSTED': 1, 'TRUSTED COMPUTING': 1, 'COMPUTING RELATED': 1, 'RELATED TOPICS': 1, 'TOPICS THE': 1, 'THE CATHEDRAL': 1, 'CATHEDRAL AND': 1, 'THE BAZAAR': 1, 'BAZAAR FORKING': 1, 'FORKING MICROSOFT': 1, 'MICROSOFT OPEN': 1, 'OPEN SPECIFICATION': 1, 'SPECIFICATION PROMISE': 1, 'PROMISE REVOLUTION': 1, 'REVOLUTION OS': 1, 'OS BOOK': 1, 'BOOK CATEGORY': 1, 'CATEGORY COMMONS': 1, 'COMMONS PORTAL': 1, 'PORTAL AUTHORITY': 1, 'AUTHORITY CONTROL': 1, 'CONTROL LCCN': 1, 'LCCN SH': 1, 'SH GND': 1, 'GND SUDOC': 1, 'SUDOC BNF': 1, 'BNF CB': 1, 'CB DATA': 1})\n" - ] - } - ], - "source": [ - "print(getNgrams(content, 2))" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.6.1" - } - }, - "nbformat": 4, - "nbformat_minor": 2 -} diff --git a/Chapter05_Scrapy/wikiSpider/wikiSpider/__init__.py b/Chapter08_Scrapy/wikiSpider/build/lib/wikiSpider/__init__.py similarity index 100% rename from Chapter05_Scrapy/wikiSpider/wikiSpider/__init__.py rename to Chapter08_Scrapy/wikiSpider/build/lib/wikiSpider/__init__.py diff --git a/Chapter05_Scrapy/wikiSpider/wikiSpider/items.py b/Chapter08_Scrapy/wikiSpider/build/lib/wikiSpider/items.py similarity index 100% rename from Chapter05_Scrapy/wikiSpider/wikiSpider/items.py rename to Chapter08_Scrapy/wikiSpider/build/lib/wikiSpider/items.py diff --git a/Chapter05_Scrapy/wikiSpider/wikiSpider/middlewares.py b/Chapter08_Scrapy/wikiSpider/build/lib/wikiSpider/middlewares.py similarity index 100% rename from Chapter05_Scrapy/wikiSpider/wikiSpider/middlewares.py rename to Chapter08_Scrapy/wikiSpider/build/lib/wikiSpider/middlewares.py diff --git a/Chapter05_Scrapy/wikiSpider/wikiSpider/pipelines.py b/Chapter08_Scrapy/wikiSpider/build/lib/wikiSpider/pipelines.py similarity index 100% rename from Chapter05_Scrapy/wikiSpider/wikiSpider/pipelines.py rename to Chapter08_Scrapy/wikiSpider/build/lib/wikiSpider/pipelines.py diff --git a/Chapter05_Scrapy/wikiSpider/wikiSpider/settings.py b/Chapter08_Scrapy/wikiSpider/build/lib/wikiSpider/settings.py similarity index 100% rename from Chapter05_Scrapy/wikiSpider/wikiSpider/settings.py rename to Chapter08_Scrapy/wikiSpider/build/lib/wikiSpider/settings.py diff --git a/Chapter05_Scrapy/wikiSpider/wikiSpider/spiders/__init__.py b/Chapter08_Scrapy/wikiSpider/build/lib/wikiSpider/spiders/__init__.py similarity index 100% rename from Chapter05_Scrapy/wikiSpider/wikiSpider/spiders/__init__.py rename to Chapter08_Scrapy/wikiSpider/build/lib/wikiSpider/spiders/__init__.py diff --git a/Chapter05_Scrapy/wikiSpider/wikiSpider/article.py b/Chapter08_Scrapy/wikiSpider/build/lib/wikiSpider/spiders/article.py similarity index 77% rename from Chapter05_Scrapy/wikiSpider/wikiSpider/article.py rename to Chapter08_Scrapy/wikiSpider/build/lib/wikiSpider/spiders/article.py index 7c0ebdb..a793863 100644 --- a/Chapter05_Scrapy/wikiSpider/wikiSpider/article.py +++ b/Chapter08_Scrapy/wikiSpider/build/lib/wikiSpider/spiders/article.py @@ -1,6 +1,6 @@ -import scrapy +from scrapy import Spider, Request -class ArticleSpider(scrapy.Spider): +class ArticleSpider(Spider): name='article' def start_requests(self): @@ -8,7 +8,7 @@ def start_requests(self): "http://en.wikipedia.org/wiki/Python_%28programming_language%29", "https://en.wikipedia.org/wiki/Functional_programming", "https://en.wikipedia.org/wiki/Monty_Python"] - return [scrapy.Request(url=url, callback=self.parse) for url in urls] + return [Request(url=url, callback=self.parse) for url in urls] def parse(self, response): url = response.url diff --git a/Chapter05_Scrapy/wikiSpider/wikiSpider/articleItems.py b/Chapter08_Scrapy/wikiSpider/build/lib/wikiSpider/spiders/articleItems.py similarity index 87% rename from Chapter05_Scrapy/wikiSpider/wikiSpider/articleItems.py rename to Chapter08_Scrapy/wikiSpider/build/lib/wikiSpider/spiders/articleItems.py index 0ccd9c0..19034f8 100644 --- a/Chapter05_Scrapy/wikiSpider/wikiSpider/articleItems.py +++ b/Chapter08_Scrapy/wikiSpider/build/lib/wikiSpider/spiders/articleItems.py @@ -1,5 +1,5 @@ -from scrapy.contrib.linkextractors import LinkExtractor -from scrapy.contrib.spiders import CrawlSpider, Rule +from scrapy.linkextractors import LinkExtractor +from scrapy.spiders import CrawlSpider, Rule from wikiSpider.items import Article class ArticleSpider(CrawlSpider): diff --git a/Chapter05_Scrapy/wikiSpider/wikiSpider/articlePipelines.py b/Chapter08_Scrapy/wikiSpider/build/lib/wikiSpider/spiders/articlePipelines.py similarity index 86% rename from Chapter05_Scrapy/wikiSpider/wikiSpider/articlePipelines.py rename to Chapter08_Scrapy/wikiSpider/build/lib/wikiSpider/spiders/articlePipelines.py index d6d2b18..9b6d66d 100644 --- a/Chapter05_Scrapy/wikiSpider/wikiSpider/articlePipelines.py +++ b/Chapter08_Scrapy/wikiSpider/build/lib/wikiSpider/spiders/articlePipelines.py @@ -1,5 +1,5 @@ -from scrapy.contrib.linkextractors import LinkExtractor -from scrapy.contrib.spiders import CrawlSpider, Rule +from scrapy.linkextractors import LinkExtractor +from scrapy.spiders import CrawlSpider, Rule from wikiSpider.items import Article class ArticleSpider(CrawlSpider): diff --git a/Chapter05_Scrapy/wikiSpider/wikiSpider/articles.py b/Chapter08_Scrapy/wikiSpider/build/lib/wikiSpider/spiders/articles.py similarity index 100% rename from Chapter05_Scrapy/wikiSpider/wikiSpider/articles.py rename to Chapter08_Scrapy/wikiSpider/build/lib/wikiSpider/spiders/articles.py diff --git a/Chapter05_Scrapy/wikiSpider/wikiSpider/articlesMoreRules.py b/Chapter08_Scrapy/wikiSpider/build/lib/wikiSpider/spiders/articlesMoreRules.py similarity index 80% rename from Chapter05_Scrapy/wikiSpider/wikiSpider/articlesMoreRules.py rename to Chapter08_Scrapy/wikiSpider/build/lib/wikiSpider/spiders/articlesMoreRules.py index 0668f00..c611a5b 100644 --- a/Chapter05_Scrapy/wikiSpider/wikiSpider/articlesMoreRules.py +++ b/Chapter08_Scrapy/wikiSpider/build/lib/wikiSpider/spiders/articlesMoreRules.py @@ -1,12 +1,12 @@ -from scrapy.contrib.linkextractors import LinkExtractor -from scrapy.contrib.spiders import CrawlSpider, Rule +from scrapy.linkextractors import LinkExtractor +from scrapy.spiders import CrawlSpider, Rule class ArticleSpider(CrawlSpider): name = 'articles' allowed_domains = ['wikipedia.org'] start_urls = ['https://en.wikipedia.org/wiki/Benevolent_dictator_for_life'] rules = [ - Rule(LinkExtractor(allow='(/wiki/)((?!:).)*$'), callback='parse_items', follow=True, cb_kwargs={'is_article': True}), + Rule(LinkExtractor(allow='^(/wiki/)((?!:).)*$'), callback='parse_items', follow=True, cb_kwargs={'is_article': True}), Rule(LinkExtractor(allow='.*'), callback='parse_items', cb_kwargs={'is_article': False}) ] diff --git a/Chapter08_Scrapy/wikiSpider/project.egg-info/PKG-INFO b/Chapter08_Scrapy/wikiSpider/project.egg-info/PKG-INFO new file mode 100644 index 0000000..3e6e2f5 --- /dev/null +++ b/Chapter08_Scrapy/wikiSpider/project.egg-info/PKG-INFO @@ -0,0 +1,3 @@ +Metadata-Version: 2.1 +Name: project +Version: 1.0 diff --git a/Chapter08_Scrapy/wikiSpider/project.egg-info/SOURCES.txt b/Chapter08_Scrapy/wikiSpider/project.egg-info/SOURCES.txt new file mode 100644 index 0000000..7eed64e --- /dev/null +++ b/Chapter08_Scrapy/wikiSpider/project.egg-info/SOURCES.txt @@ -0,0 +1,17 @@ +setup.py +project.egg-info/PKG-INFO +project.egg-info/SOURCES.txt +project.egg-info/dependency_links.txt +project.egg-info/entry_points.txt +project.egg-info/top_level.txt +wikiSpider/__init__.py +wikiSpider/items.py +wikiSpider/middlewares.py +wikiSpider/pipelines.py +wikiSpider/settings.py +wikiSpider/spiders/__init__.py +wikiSpider/spiders/article.py +wikiSpider/spiders/articleItems.py +wikiSpider/spiders/articlePipelines.py +wikiSpider/spiders/articles.py +wikiSpider/spiders/articlesMoreRules.py \ No newline at end of file diff --git a/Chapter08_Scrapy/wikiSpider/project.egg-info/dependency_links.txt b/Chapter08_Scrapy/wikiSpider/project.egg-info/dependency_links.txt new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/Chapter08_Scrapy/wikiSpider/project.egg-info/dependency_links.txt @@ -0,0 +1 @@ + diff --git a/Chapter08_Scrapy/wikiSpider/project.egg-info/entry_points.txt b/Chapter08_Scrapy/wikiSpider/project.egg-info/entry_points.txt new file mode 100644 index 0000000..8a760eb --- /dev/null +++ b/Chapter08_Scrapy/wikiSpider/project.egg-info/entry_points.txt @@ -0,0 +1,2 @@ +[scrapy] +settings = wikiSpider.settings diff --git a/Chapter08_Scrapy/wikiSpider/project.egg-info/top_level.txt b/Chapter08_Scrapy/wikiSpider/project.egg-info/top_level.txt new file mode 100644 index 0000000..a27e108 --- /dev/null +++ b/Chapter08_Scrapy/wikiSpider/project.egg-info/top_level.txt @@ -0,0 +1 @@ +wikiSpider diff --git a/Chapter08_Scrapy/wikiSpider/scrapinghub.yml b/Chapter08_Scrapy/wikiSpider/scrapinghub.yml new file mode 100644 index 0000000..a2ec87d --- /dev/null +++ b/Chapter08_Scrapy/wikiSpider/scrapinghub.yml @@ -0,0 +1 @@ +project: 624829 diff --git a/Chapter05_Scrapy/wikiSpider/scrapy.cfg b/Chapter08_Scrapy/wikiSpider/scrapy.cfg similarity index 100% rename from Chapter05_Scrapy/wikiSpider/scrapy.cfg rename to Chapter08_Scrapy/wikiSpider/scrapy.cfg diff --git a/Chapter08_Scrapy/wikiSpider/setup.py b/Chapter08_Scrapy/wikiSpider/setup.py new file mode 100644 index 0000000..121314f --- /dev/null +++ b/Chapter08_Scrapy/wikiSpider/setup.py @@ -0,0 +1,10 @@ +# Automatically created by: shub deploy + +from setuptools import setup, find_packages + +setup( + name = 'project', + version = '1.0', + packages = find_packages(), + entry_points = {'scrapy': ['settings = wikiSpider.settings']}, +) diff --git a/v1/chapter3/scrapy/wikiSpider/wikiSpider/__init__.py b/Chapter08_Scrapy/wikiSpider/wikiSpider/__init__.py similarity index 100% rename from v1/chapter3/scrapy/wikiSpider/wikiSpider/__init__.py rename to Chapter08_Scrapy/wikiSpider/wikiSpider/__init__.py diff --git a/Chapter08_Scrapy/wikiSpider/wikiSpider/__pycache__/__init__.cpython-39.pyc b/Chapter08_Scrapy/wikiSpider/wikiSpider/__pycache__/__init__.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..74dc46c5d9289e288c3c2e8ceec565b8308e2c75 GIT binary patch literal 189 zcmYe~<>g`k0yh5_$sqbMh(HF6K#l_t7qb9~6oz01O-8?!3`HPe1o10LKeRZts8~NJ zxF9t-qeR~&Ke;qFHLs*t-#xR$qclmspt2+*KTo$fxhSz9GcR4=IU}*4B(=!EG(H$4 uRHG$HYumdND7lRqC2h|LBhkhNUyL0}rp=<}%pm^+HF7Jp z@Jq=;qtfIytFc%ba5TNwKK`HcobPJ zII3+|7%cTcy;lAVLw|VPcXdY~yfa^!F zaKdR$3KA2F*vV<(#7>Rf+%3G=qhyjaIV{JN(=~Di9JqV#;BGjN(eoM&iE+-{<{tOvceu}kQ#^02ku7pU z5e*4<&%7pfei=EY&{uocUe8l)_9U|AvpcURnGR(-7U5y4Lp%xv2jV=eN=s%pdOYks z3w!VGg{cX9JCA$M2aH0ub3-YR#t2;BhGk5S$@}H6P}GpmR6!HpoC9w}E{MW=eaAY3 zb?c!X>KX*<Og}{O$V{s8zGfsmTS~|rCdB&Ms7xwU!?poS94PDUS6SJ2t*1r)(YDfNxNOjj#T9+k z#k}rf*#IIM!-THVW$>GHh0gB&r`cT?ympe5X(5utc9Nv1_%uh{O_GCYnl~rv7QDMq zzWxtbOkr6cTqBbNLh^t6Ff Lq_JL?!sq+}hLit> literal 0 HcmV?d00001 diff --git a/Chapter08_Scrapy/wikiSpider/wikiSpider/__pycache__/settings.cpython-39.pyc b/Chapter08_Scrapy/wikiSpider/wikiSpider/__pycache__/settings.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..f0960092e9e74d14dd2f8971783391b2616c3e49 GIT binary patch literal 377 zcmY+A!AiqG5QcZtG?rqE_yAs|pjj{8M6`CPfi?-be_e?I;>%pdo9U7*YIK9iSY06yxaS%zNjbjve6C=dd}oAb(bOBwCzwg`k0yh5_$qRw>V-N=!FakLaKwQiMBvKfH88jLFRx%WUgb~EAEd9{p)S_bj zpx}bkhedmnCf|ArC1Jn3m zkWi(5d1iKIa6x8DY7sKC7%Wn(A0MBYmst`YuUAlci^C>2KczG$)ehu_&p^xo03HN2 A{Qv*} literal 0 HcmV?d00001 diff --git a/Chapter08_Scrapy/wikiSpider/wikiSpider/spiders/__pycache__/article.cpython-39.pyc b/Chapter08_Scrapy/wikiSpider/wikiSpider/spiders/__pycache__/article.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..032ec6b635293b8780a2c71d390e1d16803023cd GIT binary patch literal 1216 zcmaJ=O>fgc5Z$$%)Cx@n^oBU}Ko3SDE>)2rsv=M;$^k0W&`Ts_w%%>x)?eM-2x5{` zE5U^W|Dfg8zqD6QNJt#Gabm_!MJk{hjWaXrdAsxGnKhdY0!w`V!QWVfe8pgPIS@Ps zQ+MFO38yhhXpbgV&!S|DaEsd~gxi81+dZ2*UE*+PoB~dX+H<(WYbT^v<8{EDGtDPbM`0{3a9I_GbOsbL?Ww6-;Pm0n zU+9E>Ap5k$b;op*98*AawmrM(47ASMzAw_&+vqUL1&>%OlYJi}|K&&zvNTv;eVEIv zFIkdAX+MZr+8?sMSYCZptYN+SFTm4b8tN!ZSsctD6nC$#dXc4i6jX=*)m|OCS_GT6 zHzu!dPN*hh`jH#}g`cd?))5YZ!VK)8jEx(zINoF7p=U|t#?*2qm4I!lwIUJjoEk@o zc>kRIiu_$Ar1E#Vxd;c^-^{{cB2umVtw=u`?)iC1$vqWHmIE37#(?Eo$dv~{7gM8> zxN1bRt}4Z#{OQnI`N%ZZ;|OGtC3)u>T;eAfDON5GxurA|1hP_)YOTi^G^0A;T$IXr zD1*)r!Z^^cDl-ywEt{BJxD0{~E7Uciu2bB;>bwx;bg{4mZ39fL!DCDh$iy1cQ_ATX zJ+;or#MU6*Q)g_Q(PK&pL^ecr6>(CEu5btU+ifl0>7uc_^L!~%?WOmVV*XX6V=;}q zS~(YEhf0|yyee6!gZ)S<4bziRs!e@AlL^zFQ+4i2q4F$+*!3Q^G0z_b7(*$hD0L`KUFsa*)T1tN zp9L(mIefu1pdpRESZzetXy-FZ*Ju~=>6!jAL>oEnkv8Hp%?h>X&-o#*8RcYD$%Dms zs&%c#Ny5s}f0o2b$wOAM50zl0&M40{fx@y0kl+)x*w}2H;?2$bSI6-vzIg)*^obDF z+;nRq70b8{`Vzp1a?tOS{LloG%6jAu)cJ4Oc39d0Qm=t&^a*`*PVhT?0w8Rm6MX7W z=M0~^X9zTIqw%N*8o$x_OP`?i`RJawrwv4B4*0Ku)d6riyT+YKv52O($79WowDC39 zf-P<&3FRN&Y;$_|S}`ByRjHxqp>?_THc9Nh85_^;i_3yvpH!7*a>&a`H55eYqN44E ziz_duTn%b+zy@=o2G%$LxHY4LsvH<(x>oh7rUX=RC~erS|zKqHL8zg z1VQ^iY8@ED0q)=p_^spfcyZ~!xg4zw$Zp&*QI?gYU|D85Sq5;zbAfX&%ihn3SXw;0 zn{&;CF`Ch;AiPwjqcr4^L1UG)QzY$Z8DGK`s>!IqVuf9@P603rzUl#sum{No&c+|l zYb?8QWG*zQ9FGJ%>}3NgsoLAum$oGk5%JVekQ$M8^QYe<0tLA2z|4{;_^V)08;C~D56-P z948ptvm>0`P2Ai|yjpgJp9e{R(KAFn>YpO&Gxx+zS~S=}QR_Q+KoK^*m%P|}dZ;DI zbSWdpbT%b95IYs8Od4-{Di~O`9!bqJ!7}^T;_^Y*08%4h3?-PN#GyEGsk4g{kGjBp z7O&51RA&2c+>-pUu*ovCirL50*wPr3AcQH@kiTV#9?wZ$)hrrfETPmZqkirqCfkKAgL0 z`f*A`bK}|FT&{t_XiCeR@Islk(vV3Cvr^K&QE3rkd>qJBB zL8^hX^4s(3o2@7`SL(hT4dDUoHBB$2ntQ+0+%>I`7KC+hvuq#0yl2B2#q+V+a0@Be X`AD0G3D@VSO?$m z^7PAdB}k?!5m|b8Ajm2|sySssJI|Ln%Z%&x@IcvzDZc~3P=YB+EQ%AGT63H@)CTD? zkM*cS-78Ez+M_=0aZLMHPHP`@cApNxx^rdEt;DAR9lb_LpWcB4cXjYoD4ykPlS<-~ zjVha9#ZP(7C?}Ij%$w;#saj6sn3a=TNNlwDb5^pmDrcoiDbEyvTc$IZIiIoStsnL_ zUeVs(XCF+XN%ZI;km8a&uU2|k6Cqj36)WVi9&njmQX*tu#R#xdn*FZVh9_Z=yB9U@<^020RVgOMyqs0zoJdtv zw2Sfn@q){+CUX|9hzt!FLfsUjVO542HNi1gISaX*hCg41O`vY6Lvu(6Huu|D5U#9L zNXoD)h1nSS+N}jImA026*LEhQ4q&V4>2$`0RN6hSiCXAhXVpEy>YQZER8JH{MLq3E zmd~^=n5?T(GT}pMwA*GRMrQ4pbo9{N;zdmf+~PMR?gR3Vj9NnBs3MOBVvCP>Z8d3>-SHE{O$qx8s_F4`vCH2U^Zwy#jeZ(9G`N-*;x z<)pq4rjG)c@*W6;2Y7@X?13ENomTEz%{x!G-_T^MpAVyf_S3W^1xr&sNK>d9M27WF zn*OvTd51XWtM9ZAg3**#1>vRC1F0aX6zG=1G_$ZkXjhoz+RR#Fw#2)}$pvA&rQy?W z)Ag*k@x6Z?x5W-4Pv31xx|rnfU+St=3Au?s>adO%VV>3IcoTW+G*cB}j@16gn~Qyl ML6he29lUG(2kk6~4FCWD literal 0 HcmV?d00001 diff --git a/Chapter08_Scrapy/wikiSpider/wikiSpider/spiders/article.py b/Chapter08_Scrapy/wikiSpider/wikiSpider/spiders/article.py new file mode 100644 index 0000000..a793863 --- /dev/null +++ b/Chapter08_Scrapy/wikiSpider/wikiSpider/spiders/article.py @@ -0,0 +1,18 @@ +from scrapy import Spider, Request + +class ArticleSpider(Spider): + name='article' + + def start_requests(self): + urls = [ + "http://en.wikipedia.org/wiki/Python_%28programming_language%29", + "https://en.wikipedia.org/wiki/Functional_programming", + "https://en.wikipedia.org/wiki/Monty_Python"] + return [Request(url=url, callback=self.parse) for url in urls] + + def parse(self, response): + url = response.url + title = response.css('h1::text').extract_first() + print('URL is: {}'.format(url)) + print('Title is: {}'.format(title)) + diff --git a/Chapter08_Scrapy/wikiSpider/wikiSpider/spiders/articleItems.py b/Chapter08_Scrapy/wikiSpider/wikiSpider/spiders/articleItems.py new file mode 100644 index 0000000..19034f8 --- /dev/null +++ b/Chapter08_Scrapy/wikiSpider/wikiSpider/spiders/articleItems.py @@ -0,0 +1,20 @@ +from scrapy.linkextractors import LinkExtractor +from scrapy.spiders import CrawlSpider, Rule +from wikiSpider.items import Article + +class ArticleSpider(CrawlSpider): + name = 'articleItems' + allowed_domains = ['wikipedia.org'] + start_urls = ['https://en.wikipedia.org/wiki/Benevolent_dictator_for_life'] + rules = [ + Rule(LinkExtractor(allow='(/wiki/)((?!:).)*$'), callback='parse_items', follow=True), + ] + + def parse_items(self, response): + article = Article() + article['url'] = response.url + article['title'] = response.css('h1::text').extract_first() + article['text'] = response.xpath('//div[@id="mw-content-text"]//text()').extract() + lastUpdated = response.css('li#footer-info-lastmod::text').extract_first() + article['lastUpdated'] = lastUpdated.replace('This page was last edited on ', '') + return article \ No newline at end of file diff --git a/Chapter08_Scrapy/wikiSpider/wikiSpider/spiders/articlePipelines.py b/Chapter08_Scrapy/wikiSpider/wikiSpider/spiders/articlePipelines.py new file mode 100644 index 0000000..9b6d66d --- /dev/null +++ b/Chapter08_Scrapy/wikiSpider/wikiSpider/spiders/articlePipelines.py @@ -0,0 +1,19 @@ +from scrapy.linkextractors import LinkExtractor +from scrapy.spiders import CrawlSpider, Rule +from wikiSpider.items import Article + +class ArticleSpider(CrawlSpider): + name = 'articlePipelines' + allowed_domains = ['wikipedia.org'] + start_urls = ['https://en.wikipedia.org/wiki/Benevolent_dictator_for_life'] + rules = [ + Rule(LinkExtractor(allow='(/wiki/)((?!:).)*$'), callback='parse_items', follow=True), + ] + + def parse_items(self, response): + article = Article() + article['url'] = response.url + article['title'] = response.css('h1::text').extract_first() + article['text'] = response.xpath('//div[@id="mw-content-text"]//text()').extract() + article['lastUpdated'] = response.css('li#footer-info-lastmod::text').extract_first() + return article \ No newline at end of file diff --git a/Chapter08_Scrapy/wikiSpider/wikiSpider/spiders/articles.py b/Chapter08_Scrapy/wikiSpider/wikiSpider/spiders/articles.py new file mode 100644 index 0000000..40132c8 --- /dev/null +++ b/Chapter08_Scrapy/wikiSpider/wikiSpider/spiders/articles.py @@ -0,0 +1,19 @@ +from scrapy.linkextractors import LinkExtractor +from scrapy.spiders import CrawlSpider, Rule + +class ArticleSpider(CrawlSpider): + name = 'articles' + allowed_domains = ['wikipedia.org'] + start_urls = ['https://en.wikipedia.org/wiki/Benevolent_dictator_for_life'] + rules = [Rule(LinkExtractor(allow=r'.*'), callback='parse_items', follow=True)] + + def parse_items(self, response): + url = response.url + title = response.css('h1::text').extract_first() + text = response.xpath('//div[@id="mw-content-text"]//text()').extract() + lastUpdated = response.css('li#footer-info-lastmod::text').extract_first() + lastUpdated = lastUpdated.replace('This page was last edited on ', '') + print('URL is: {}'.format(url)) + print('title is: {} '.format(title)) + print('text is: {}'.format(text)) + print('Last updated: {}'.format(lastUpdated)) diff --git a/Chapter08_Scrapy/wikiSpider/wikiSpider/spiders/articlesMoreRules.py b/Chapter08_Scrapy/wikiSpider/wikiSpider/spiders/articlesMoreRules.py new file mode 100644 index 0000000..c611a5b --- /dev/null +++ b/Chapter08_Scrapy/wikiSpider/wikiSpider/spiders/articlesMoreRules.py @@ -0,0 +1,26 @@ +from scrapy.linkextractors import LinkExtractor +from scrapy.spiders import CrawlSpider, Rule + +class ArticleSpider(CrawlSpider): + name = 'articles' + allowed_domains = ['wikipedia.org'] + start_urls = ['https://en.wikipedia.org/wiki/Benevolent_dictator_for_life'] + rules = [ + Rule(LinkExtractor(allow='^(/wiki/)((?!:).)*$'), callback='parse_items', follow=True, cb_kwargs={'is_article': True}), + Rule(LinkExtractor(allow='.*'), callback='parse_items', cb_kwargs={'is_article': False}) + ] + + def parse_items(self, response, is_article): + print(response.url) + title = response.css('h1::text').extract_first() + if is_article: + url = response.url + text = response.xpath('//div[@id="mw-content-text"]//text()').extract() + lastUpdated = response.css('li#footer-info-lastmod::text').extract_first() + lastUpdated = lastUpdated.replace('This page was last edited on ', '') + print('Title is: {} '.format(title)) + print('title is: {} '.format(title)) + print('text is: {}'.format(text)) + else: + print('This is not an article: {}'.format(title)) + diff --git a/Chapter09_NaturalLanguages.ipynb b/Chapter09_NaturalLanguages.ipynb deleted file mode 100644 index 5d90fa0..0000000 --- a/Chapter09_NaturalLanguages.ipynb +++ /dev/null @@ -1,312 +0,0 @@ -{ - "cells": [ - { - "cell_type": "code", - "execution_count": 1, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Counter({'OF THE PEOPLE': 13, 'OF THE CONSTITUTION': 11, 'THE UNITED STATES': 10, 'OF THE UNITED': 9, 'IT MAY BE': 8, 'OF THE GOVERNMENT': 8, 'THE CHARACTER OF': 7, 'OF THE EXECUTIVE': 7, 'BY THE CONSTITUTION': 6, 'PART OF THE': 6, 'OF THE LEGISLATIVE': 6, 'OF THE STATES': 6, 'ACTS OF THE': 6, 'OF THE PUBLIC': 6, 'OF THE WHOLE': 6, 'IN RELATION TO': 5, 'OF POWER TO': 5, 'OF ALL THE': 5, 'AS TO THE': 5, 'TO THE EXECUTIVE': 5, 'THE ACTS OF': 5, 'OF THE LEGISLATURE': 5, 'OF THE COUNTRY': 5, 'AS WELL AS': 5, 'IT HAS BEEN': 4, 'THE PEOPLE TO': 4, 'ON THE CONTRARY': 4, 'GRANT OF POWER': 4, 'PEOPLE OF THE': 4, 'THE INFLUENCE OF': 4, 'ONE OF THE': 4, 'THE HANDS OF': 4, 'EXERCISE OF THE': 4, 'OF THE FORMER': 4, 'IT WOULD BE': 4, 'IF THERE IS': 4, 'CHARACTER OF THE': 4, 'THE EXECUTIVE DEPARTMENT': 4, 'THE GENERAL GOVERNMENT': 4, 'THE CONTROL OF': 4, 'CONTROL OF THE': 4, 'OF THE TREASURY': 4, 'THE CITIZEN OF': 4, 'THE CITIZENS OF': 4, 'THE SPIRIT OF': 4, 'SPIRIT OF LIBERTY': 4, 'WHICH THE CONSTITUTION': 3, 'CALLED UPON TO': 3, 'IT WAS THE': 3, 'SOME OF THE': 3, 'OF THE POWER': 3, 'THE DUTY OF': 3, 'WHICH HAVE BEEN': 3, 'WHICH HAS BEEN': 3, 'BEEN GRANTED TO': 3, 'THE POWER OF': 3, 'BUT BY THE': 3, 'THE PEOPLE OF': 3, 'WHICH THEY HAVE': 3, 'RELATION TO THE': 3, 'OF THE MOST': 3, 'THE FRAMERS OF': 3, 'FRAMERS OF THE': 3, 'NOT APPEAR TO': 3, 'THE GOVERNMENT OF': 3, 'IN ONE OF': 3, 'OF THE DEPARTMENTS': 3, 'THE POWERS WHICH': 3, 'HANDS OF THE': 3, 'THE EXTENT OF': 3, 'AS FAR AS': 3, 'WHICH MAY BE': 3, 'POWER IN THE': 3, 'THE MANAGEMENT OF': 3, 'OF THEIR AFFAIRS': 3, 'THE LOVE OF': 3, 'IT IS THE': 3, 'THE PART OF': 3, 'THE CONTINUANCE OF': 3, 'A PART OF': 3, 'THE POWER TO': 3, 'THE CONSTITUTION HAS': 3, 'THE LEGISLATIVE BODY': 3, 'UPON THE ACTS': 3, 'THE ADOPTION OF': 3, 'THAN ANY OTHER': 3, 'OF THE UNION': 3, 'THE SAME CAUSES': 3, 'THE LEGISLATION OF': 3, 'THE EFFECTS OF': 3, 'DEPARTMENTS OF THE': 3, 'STATE OF THINGS': 3, 'TO CONTROL THE': 3, 'THE FREEDOM OF': 3, 'FREEDOM OF THE': 3, 'AT THIS TIME': 3, 'TO BE THE': 3, 'OF THEIR OWN': 3, 'THE GOVERNMENT SHOULD': 3, 'IT IS IN': 3, 'THE DISTRICT OF': 3, 'DISTRICT OF COLUMBIA': 3, 'OF ANY OTHER': 3, 'AS IN THE': 3, 'THE CHARACTER AND': 3, 'THE WHOLE COUNTRY': 3, 'I PROCEED TO': 2, 'IN THE DISCHARGE': 2, 'THE DISCHARGE OF': 2, 'DISCHARGE OF THE': 2, 'OF THE DUTIES': 2, 'WHICH I SHALL': 2, 'I SHALL BE': 2, 'UPON TO PERFORM': 2, 'REMARK OF A': 2, 'OF A ROMAN': 2, 'OF THAT CELEBRATED': 2, 'IN THE LATTER': 2, 'THE LAPSE OF': 2, 'EXAMINATION OF THE': 2, 'OF SOME OF': 2, 'UPON THEIR PART': 2, 'SUPPOSED TO HAVE': 2, 'THERE MAY BE': 2, 'OF A FEW': 2, 'AND I SHALL': 2, 'THE MASS OF': 2, 'OF THOSE WHO': 2, 'THE POWER WHICH': 2, 'POWER WHICH IT': 2, 'WHICH IT HAS': 2, 'THE AID OF': 2, 'TO ME BY': 2, 'UPON WHICH OUR': 2, 'NONE OF THE': 2, 'OF THE GREAT': 2, 'TO THAT OF': 2, 'IF WE WOULD': 2, 'OF OUR PEOPLE': 2, 'OF OUR CITIZENS': 2, 'AMOUNT OF POWER': 2, 'THAT WHICH HAS': 2, 'TO THEM BY': 2, 'THEM BY THE': 2, 'SO FAR AS': 2, 'AN EXPRESS GRANT': 2, 'THE CONSTITUTION OF': 2, 'CONSTITUTION OF THE': 2, 'POWER TO THE': 2, 'OF THAT INSTRUMENT': 2, 'BE FOUND TO': 2, 'THE RIGHT TO': 2, 'BEING IN THE': 2, 'IN THE LANGUAGE': 2, 'THE LANGUAGE OF': 2, 'OF OUR SYSTEM': 2, 'THE SUBJECT OF': 2, 'SUBJECT OF THE': 2, 'WITH OR WITHOUT': 2, 'NOT OF A': 2, 'PRESCRIBED BY THE': 2, 'THE GOVERNMENT THE': 2, 'BY THE SAME': 2, 'SHARE OF THE': 2, 'BY THE PEOPLE': 2, 'THE AMOUNT OF': 2, 'AND NOT ONLY': 2, 'THE EXERCISE OF': 2, 'TO CARRY INTO': 2, 'CARRY INTO EFFECT': 2, 'INTO EFFECT THE': 2, 'MANY OF OUR': 2, 'AT ONE TIME': 2, 'OF THEIR POLITICAL': 2, 'OF EACH OF': 2, 'ARE ATTRIBUTABLE TO': 2, 'DANGER TO OUR': 2, 'TO OUR INSTITUTIONS': 2, 'DOES NOT APPEAR': 2, 'TO ME TO': 2, 'ME TO BE': 2, 'TO BE IN': 2, 'THE PEOPLE BUT': 2, 'THE DEPARTMENTS OF': 2, 'HAVE BEEN GRANTED': 2, 'WHEN THE CONSTITUTION': 2, 'FROM THE HANDS': 2, 'OF THE CONVENTION': 2, 'WHICH HAD BEEN': 2, 'THE FEDERAL GOVERNMENT': 2, 'FEDERAL GOVERNMENT AND': 2, 'ASSIGNED TO THE': 2, 'NOT TO BE': 2, 'THE TENDENCY OF': 2, 'POWER TO INCREASE': 2, 'TO INCREASE ITSELF': 2, 'TO SAY THAT': 2, 'HAS BEEN IN': 2, 'THAT I SHOULD': 2, 'TO ITS PRISTINE': 2, 'ITS PRISTINE HEALTH': 2, 'PRISTINE HEALTH AND': 2, 'CAN BE EFFECTED': 2, 'BE EFFECTED BY': 2, 'PLACED IN MY': 2, 'IN MY HANDS': 2, 'OPINION OF THE': 2, 'TO BE FOUND': 2, 'DEFECTS OF THE': 2, 'A MISCONSTRUCTION OF': 2, 'OF ITS PROVISIONS': 2, 'OF THE SAME': 2, 'A SECOND TERM': 2, 'IS IN THE': 2, 'THE OPINION OF': 2, 'FRAMED THE CONSTITUTION': 2, 'HAVE BEEN THE': 2, 'MAY BE OBSERVED': 2, 'BE OBSERVED HOWEVER': 2, 'OF POWER IN': 2, 'IN THE BOSOMS': 2, 'THE BOSOMS OF': 2, 'OF THOSE TO': 2, 'THOSE TO WHOM': 2, 'MORE LIKELY TO': 2, 'LIKELY TO PRODUCE': 2, 'A STATE OF': 2, 'TO THE CHARACTER': 2, 'OF THE HUMAN': 2, 'LAWS AND THE': 2, 'BY RENEWING THE': 2, 'CONTINUANCE OF THE': 2, 'THE EXECUTIVE POWER': 2, 'OR EITHER OF': 2, 'CAN NOT BE': 2, 'IT IS A': 2, 'AND ALTHOUGH THERE': 2, 'CONFIDENCE IN THE': 2, 'INDEED THAT THE': 2, 'THAT THE CONSTITUTION': 2, 'GIVEN TO THE': 2, 'THE EXECUTIVE THE': 2, 'NO PART OF': 2, 'NEGATIVE UPON THE': 2, 'THAT OF WANT': 2, 'OF WANT OF': 2, 'WANT OF CONFORMITY': 2, 'OF CONFORMITY TO': 2, 'CONFORMITY TO THE': 2, 'TO THE CONSTITUTION': 2, 'OF THE JUDICIARY': 2, 'BOTH HOUSES OF': 2, 'HOUSES OF CONGRESS': 2, 'BY THE EXECUTIVE': 2, 'THAT IN THE': 2, 'IN THE HANDS': 2, 'SEEM TO BE': 2, 'IN OUR SYSTEM': 2, 'THE CONSTITUTION THE': 2, 'APPEAR TO HAVE': 2, 'THE STATE GOVERNMENTS': 2, 'FOR THE ADOPTION': 2, 'PEOPLE AND THE': 2, 'OF THE STATE': 2, 'NOT TO HAVE': 2, 'THE CIRCUMSTANCES OF': 2, 'CIRCUMSTANCES OF THE': 2, 'AND IT IS': 2, 'TIE OF INTEREST': 2, 'THE VETO POWER': 2, 'THE LABORS OF': 2, 'HAD BEEN COMMITTED': 2, 'ADOPTION OF THE': 2, 'TO THE CONVENTION': 2, 'TO THE SECURITY': 2, 'INTERESTS OF THE': 2, 'THE CONSTITUTION AND': 2, 'CONSTITUTED BY THE': 2, 'THAT HIGH OFFICE': 2, 'THE RIGHTS OF': 2, 'POWER TO BE': 2, 'TO PREVENT THE': 2, 'OF THE GENERAL': 2, 'OF THE NATION': 2, 'MADE OF THE': 2, 'OF THE POWERS': 2, 'POWERS WHICH THEY': 2, 'WHICH THEY RESPECTIVELY': 2, 'THEY RESPECTIVELY CLAIM': 2, 'THOSE OF THE': 2, 'THE COMMENCEMENT OF': 2, 'OF ITS OPERATIONS': 2, 'THE RESERVED POWERS': 2, 'RESERVED POWERS OF': 2, 'OF THE FEDERAL': 2, 'FOR WHICH THEY': 2, 'THE MODE OF': 2, 'RIGHTS OF THE': 2, 'THE STATE AUTHORITIES': 2, 'BY THE GREAT': 2, 'THE GREAT INCREASE': 2, 'DEPARTMENT OF THE': 2, 'GENERAL GOVERNMENT BUT': 2, 'GOVERNMENT BUT THE': 2, 'IN THE CONSTITUTION': 2, 'IN CONTROLLING THE': 2, 'CONTROLLING THE FREEDOM': 2, 'OF THE ELECTIVE': 2, 'THE ELECTIVE FRANCHISE': 2, 'IT IS NOT': 2, 'DUTY OF THE': 2, 'OF THE PRESIDENT': 2, 'THE PRESIDENT TO': 2, 'TO ME IT': 2, 'ME IT APPEARS': 2, 'STRANGE INDEED THAT': 2, 'WHICH THE PRESIDENT': 2, 'THE PUBLIC MONEY': 2, 'BY THE POWER': 2, 'UNION OF THE': 2, 'BRANCH OF THE': 2, 'WHICH OUR ANCESTORS': 2, 'OF CIVIL AND': 2, 'CIVIL AND RELIGIOUS': 2, 'SHOULD NEVER BE': 2, 'GOVERNMENT SHOULD BE': 2, 'IT SHOULD BE': 2, 'TO PROPOSE AMENDMENTS': 2, 'THEM TO THE': 2, 'OF KEEPING THE': 2, 'OF THE CITIZENS': 2, 'BY WHICH THE': 2, 'IT IS AN': 2, 'IS AN EXCLUSIVE': 2, 'AN EXCLUSIVE METALLIC': 2, 'EXCLUSIVE METALLIC CURRENCY': 2, 'THERE IS A': 2, 'OF THEIR SUBJECTS': 2, 'IN THE DISTRICT': 2, 'TO THE GENERAL': 2, 'OF OUR COUNTRY': 2, 'OF OUR GOVERNMENT': 2, 'ALL ITS MEMBERS': 2, 'CITIZEN OF ANY': 2, 'BUT THAT OF': 2, 'TO BE EXERCISED': 2, 'CITIZENS OF ONE': 2, 'OF ONE STATE': 2, 'CONTROL THE DOMESTIC': 2, 'THE DESTRUCTION OF': 2, 'THE INSTITUTIONS OF': 2, 'IN THE PRINCIPLES': 2, 'AND FORMS OF': 2, 'WELL AS IN': 2, 'OF THE SEVERAL': 2, 'CONTENT WITH THE': 2, 'THE INDIVIDUAL MEMBERS': 2, 'THE PRINCIPLES OF': 2, 'TO OUR COUNTRY': 2, 'CHARACTER AND CREDIT': 2, 'AND CREDIT OF': 2, 'CREDIT OF THE': 2, 'FOR WHICH OUR': 2, 'OF LIBERTY IS': 2, 'THE CONTRARY NO': 2, 'A FREE PEOPLE': 2, 'AND AS LONG': 2, 'AS LONG AS': 2, 'LONG AS THE': 2, 'THE LIBERTIES OF': 2, 'OF A PEOPLE': 2, 'THE GENUINE SPIRIT': 2, 'GENUINE SPIRIT OF': 2, 'THE TRUE SPIRIT': 2, 'SPIRIT OF PARTY': 2, 'THAT OF LIBERTY': 2, 'TO MY FELLOW-CITIZENS': 2, 'AND OF THE': 2, 'THE INTERESTS OF': 2, 'ON THE PART': 2, 'OF MY COUNTRYMEN': 2, 'FOR THE SAKE': 2, 'THE SAKE OF': 2, 'WHOLE COUNTRY FOR': 2, 'COUNTRY FOR THE': 2, 'FOR THE DEFENSE': 2, 'THE DEFENSE OF': 2, 'THE SUPPORT OF': 2, 'CALLED FROM A': 1, 'FROM A RETIREMENT': 1, 'A RETIREMENT WHICH': 1, 'RETIREMENT WHICH I': 1, 'WHICH I HAD': 1, 'I HAD SUPPOSED': 1, 'HAD SUPPOSED WAS': 1, 'SUPPOSED WAS TO': 1, 'WAS TO CONTINUE': 1, 'TO CONTINUE FOR': 1, 'CONTINUE FOR THE': 1, 'FOR THE RESIDUE': 1, 'THE RESIDUE OF': 1, 'RESIDUE OF MY': 1, 'OF MY LIFE': 1, 'MY LIFE TO': 1, 'LIFE TO FILL': 1, 'TO FILL THE': 1, 'FILL THE CHIEF': 1, 'THE CHIEF EXECUTIVE': 1, 'CHIEF EXECUTIVE OFFICE': 1, 'EXECUTIVE OFFICE OF': 1, 'OFFICE OF THIS': 1, 'OF THIS GREAT': 1, 'THIS GREAT AND': 1, 'GREAT AND FREE': 1, 'AND FREE NATION': 1, 'FREE NATION I': 1, 'NATION I APPEAR': 1, 'I APPEAR BEFORE': 1, 'APPEAR BEFORE YOU': 1, 'BEFORE YOU FELLOW-CITIZENS': 1, 'YOU FELLOW-CITIZENS TO': 1, 'FELLOW-CITIZENS TO TAKE': 1, 'TO TAKE THE': 1, 'TAKE THE OATHS': 1, 'THE OATHS WHICH': 1, 'OATHS WHICH THE': 1, 'THE CONSTITUTION PRESCRIBES': 1, 'CONSTITUTION PRESCRIBES AS': 1, 'PRESCRIBES AS A': 1, 'AS A NECESSARY': 1, 'A NECESSARY QUALIFICATION': 1, 'NECESSARY QUALIFICATION FOR': 1, 'QUALIFICATION FOR THE': 1, 'FOR THE PERFORMANCE': 1, 'THE PERFORMANCE OF': 1, 'PERFORMANCE OF ITS': 1, 'OF ITS DUTIES': 1, 'ITS DUTIES AND': 1, 'DUTIES AND IN': 1, 'AND IN OBEDIENCE': 1, 'IN OBEDIENCE TO': 1, 'OBEDIENCE TO A': 1, 'TO A CUSTOM': 1, 'A CUSTOM COEVAL': 1, 'CUSTOM COEVAL WITH': 1, 'COEVAL WITH OUR': 1, 'WITH OUR GOVERNMENT': 1, 'OUR GOVERNMENT AND': 1, 'GOVERNMENT AND WHAT': 1, 'AND WHAT I': 1, 'WHAT I BELIEVE': 1, 'I BELIEVE TO': 1, 'BELIEVE TO BE': 1, 'TO BE YOUR': 1, 'BE YOUR EXPECTATIONS': 1, 'YOUR EXPECTATIONS I': 1, 'EXPECTATIONS I PROCEED': 1, 'PROCEED TO PRESENT': 1, 'TO PRESENT TO': 1, 'PRESENT TO YOU': 1, 'TO YOU A': 1, 'YOU A SUMMARY': 1, 'A SUMMARY OF': 1, 'SUMMARY OF THE': 1, 'OF THE PRINCIPLES': 1, 'THE PRINCIPLES WHICH': 1, 'PRINCIPLES WHICH WILL': 1, 'WHICH WILL GOVERN': 1, 'WILL GOVERN ME': 1, 'GOVERN ME IN': 1, 'ME IN THE': 1, 'THE DUTIES WHICH': 1, 'DUTIES WHICH I': 1, 'SHALL BE CALLED': 1, 'BE CALLED UPON': 1, 'WAS THE REMARK': 1, 'THE REMARK OF': 1, 'A ROMAN CONSUL': 1, 'ROMAN CONSUL IN': 1, 'CONSUL IN AN': 1, 'IN AN EARLY': 1, 'AN EARLY PERIOD': 1, 'EARLY PERIOD OF': 1, 'PERIOD OF THAT': 1, 'THAT CELEBRATED REPUBLIC': 1, 'CELEBRATED REPUBLIC THAT': 1, 'REPUBLIC THAT A': 1, 'THAT A MOST': 1, 'A MOST STRIKING': 1, 'MOST STRIKING CONTRAST': 1, 'STRIKING CONTRAST WAS': 1, 'CONTRAST WAS OBSERVABLE': 1, 'WAS OBSERVABLE IN': 1, 'OBSERVABLE IN THE': 1, 'IN THE CONDUCT': 1, 'THE CONDUCT OF': 1, 'CONDUCT OF CANDIDATES': 1, 'OF CANDIDATES FOR': 1, 'CANDIDATES FOR OFFICES': 1, 'FOR OFFICES OF': 1, 'OFFICES OF POWER': 1, 'OF POWER AND': 1, 'POWER AND TRUST': 1, 'AND TRUST BEFORE': 1, 'TRUST BEFORE AND': 1, 'BEFORE AND AFTER': 1, 'AND AFTER OBTAINING': 1, 'AFTER OBTAINING THEM': 1, 'OBTAINING THEM THEY': 1, 'THEM THEY SELDOM': 1, 'THEY SELDOM CARRYING': 1, 'SELDOM CARRYING OUT': 1, 'CARRYING OUT IN': 1, 'OUT IN THE': 1, 'THE LATTER CASE': 1, 'LATTER CASE THE': 1, 'CASE THE PLEDGES': 1, 'THE PLEDGES AND': 1, 'PLEDGES AND PROMISES': 1, 'AND PROMISES MADE': 1, 'PROMISES MADE IN': 1, 'MADE IN THE': 1, 'IN THE FORMER': 1, 'HOWEVER MUCH THE': 1, 'MUCH THE WORLD': 1, 'THE WORLD MAY': 1, 'WORLD MAY HAVE': 1, 'MAY HAVE IMPROVED': 1, 'HAVE IMPROVED IN': 1, 'IMPROVED IN MANY': 1, 'IN MANY RESPECTS': 1, 'MANY RESPECTS IN': 1, 'RESPECTS IN THE': 1, 'IN THE LAPSE': 1, 'LAPSE OF UPWARD': 1, 'OF UPWARD OF': 1, 'UPWARD OF TWO': 1, 'OF TWO THOUSAND': 1, 'TWO THOUSAND YEARS': 1, 'THOUSAND YEARS SINCE': 1, 'YEARS SINCE THE': 1, 'SINCE THE REMARK': 1, 'THE REMARK WAS': 1, 'REMARK WAS MADE': 1, 'WAS MADE BY': 1, 'MADE BY THE': 1, 'BY THE VIRTUOUS': 1, 'THE VIRTUOUS AND': 1, 'VIRTUOUS AND INDIGNANT': 1, 'AND INDIGNANT ROMAN': 1, 'INDIGNANT ROMAN I': 1, 'ROMAN I FEAR': 1, 'I FEAR THAT': 1, 'FEAR THAT A': 1, 'THAT A STRICT': 1, 'A STRICT EXAMINATION': 1, 'STRICT EXAMINATION OF': 1, 'OF THE ANNALS': 1, 'THE ANNALS OF': 1, 'ANNALS OF SOME': 1, 'OF THE MODERN': 1, 'THE MODERN ELECTIVE': 1, 'MODERN ELECTIVE GOVERNMENTS': 1, 'ELECTIVE GOVERNMENTS WOULD': 1, 'GOVERNMENTS WOULD DEVELOP': 1, 'WOULD DEVELOP SIMILAR': 1, 'DEVELOP SIMILAR INSTANCES': 1, 'SIMILAR INSTANCES OF': 1, 'INSTANCES OF VIOLATED': 1, 'OF VIOLATED CONFIDENCE': 1, 'ALTHOUGH THE FIAT': 1, 'THE FIAT OF': 1, 'FIAT OF THE': 1, 'THE PEOPLE HAS': 1, 'PEOPLE HAS GONE': 1, 'HAS GONE FORTH': 1, 'GONE FORTH PROCLAIMING': 1, 'FORTH PROCLAIMING ME': 1, 'PROCLAIMING ME THE': 1, 'ME THE CHIEF': 1, 'THE CHIEF MAGISTRATE': 1, 'CHIEF MAGISTRATE OF': 1, 'MAGISTRATE OF THIS': 1, 'OF THIS GLORIOUS': 1, 'THIS GLORIOUS UNION': 1, 'GLORIOUS UNION NOTHING': 1, 'UNION NOTHING UPON': 1, 'NOTHING UPON THEIR': 1, 'THEIR PART REMAINING': 1, 'PART REMAINING TO': 1, 'REMAINING TO BE': 1, 'TO BE DONE': 1, 'BE DONE IT': 1, 'DONE IT MAY': 1, 'MAY BE THOUGHT': 1, 'BE THOUGHT THAT': 1, 'THOUGHT THAT A': 1, 'THAT A MOTIVE': 1, 'A MOTIVE MAY': 1, 'MOTIVE MAY EXIST': 1, 'MAY EXIST TO': 1, 'EXIST TO KEEP': 1, 'TO KEEP UP': 1, 'KEEP UP THE': 1, 'UP THE DELUSION': 1, 'THE DELUSION UNDER': 1, 'DELUSION UNDER WHICH': 1, 'UNDER WHICH THEY': 1, 'WHICH THEY MAY': 1, 'THEY MAY BE': 1, 'MAY BE SUPPOSED': 1, 'BE SUPPOSED TO': 1, 'TO HAVE ACTED': 1, 'HAVE ACTED IN': 1, 'ACTED IN RELATION': 1, 'RELATION TO MY': 1, 'TO MY PRINCIPLES': 1, 'MY PRINCIPLES AND': 1, 'PRINCIPLES AND OPINIONS': 1, 'AND OPINIONS AND': 1, 'OPINIONS AND PERHAPS': 1, 'AND PERHAPS THERE': 1, 'PERHAPS THERE MAY': 1, 'MAY BE SOME': 1, 'BE SOME IN': 1, 'SOME IN THIS': 1, 'IN THIS ASSEMBLY': 1, 'THIS ASSEMBLY WHO': 1, 'ASSEMBLY WHO HAVE': 1, 'WHO HAVE COME': 1, 'HAVE COME HERE': 1, 'COME HERE EITHER': 1, 'HERE EITHER PREPARED': 1, 'EITHER PREPARED TO': 1, 'PREPARED TO CONDEMN': 1, 'TO CONDEMN THOSE': 1, 'CONDEMN THOSE I': 1, 'THOSE I SHALL': 1, 'I SHALL NOW': 1, 'SHALL NOW DELIVER': 1, 'NOW DELIVER OR': 1, 'DELIVER OR APPROVING': 1, 'OR APPROVING THEM': 1, 'APPROVING THEM TO': 1, 'THEM TO DOUBT': 1, 'TO DOUBT THE': 1, 'DOUBT THE SINCERITY': 1, 'THE SINCERITY WITH': 1, 'SINCERITY WITH WHICH': 1, 'WITH WHICH THEY': 1, 'WHICH THEY ARE': 1, 'THEY ARE NOW': 1, 'ARE NOW UTTERED': 1, 'BUT THE LAPSE': 1, 'LAPSE OF A': 1, 'A FEW MONTHS': 1, 'FEW MONTHS WILL': 1, 'MONTHS WILL CONFIRM': 1, 'WILL CONFIRM OR': 1, 'CONFIRM OR DISPEL': 1, 'OR DISPEL THEIR': 1, 'DISPEL THEIR FEARS': 1, 'THE OUTLINE OF': 1, 'OUTLINE OF PRINCIPLES': 1, 'OF PRINCIPLES TO': 1, 'PRINCIPLES TO GOVERN': 1, 'TO GOVERN AND': 1, 'GOVERN AND MEASURES': 1, 'AND MEASURES TO': 1, 'MEASURES TO BE': 1, 'TO BE ADOPTED': 1, 'BE ADOPTED BY': 1, 'ADOPTED BY AN': 1, 'BY AN ADMINISTRATION': 1, 'AN ADMINISTRATION NOT': 1, 'ADMINISTRATION NOT YET': 1, 'NOT YET BEGUN': 1, 'YET BEGUN WILL': 1, 'BEGUN WILL SOON': 1, 'WILL SOON BE': 1, 'SOON BE EXCHANGED': 1, 'BE EXCHANGED FOR': 1, 'EXCHANGED FOR IMMUTABLE': 1, 'FOR IMMUTABLE HISTORY': 1, 'IMMUTABLE HISTORY AND': 1, 'HISTORY AND I': 1, 'I SHALL STAND': 1, 'SHALL STAND EITHER': 1, 'STAND EITHER EXONERATED': 1, 'EITHER EXONERATED BY': 1, 'EXONERATED BY MY': 1, 'BY MY COUNTRYMEN': 1, 'MY COUNTRYMEN OR': 1, 'COUNTRYMEN OR CLASSED': 1, 'OR CLASSED WITH': 1, 'CLASSED WITH THE': 1, 'WITH THE MASS': 1, 'MASS OF THOSE': 1, 'THOSE WHO PROMISED': 1, 'WHO PROMISED THAT': 1, 'PROMISED THAT THEY': 1, 'THAT THEY MIGHT': 1, 'THEY MIGHT DECEIVE': 1, 'MIGHT DECEIVE AND': 1, 'DECEIVE AND FLATTERED': 1, 'AND FLATTERED WITH': 1, 'FLATTERED WITH THE': 1, 'WITH THE INTENTION': 1, 'THE INTENTION TO': 1, 'INTENTION TO BETRAY': 1, 'HOWEVER STRONG MAY': 1, 'STRONG MAY BE': 1, 'MAY BE MY': 1, 'BE MY PRESENT': 1, 'MY PRESENT PURPOSE': 1, 'PRESENT PURPOSE TO': 1, 'PURPOSE TO REALIZE': 1, 'TO REALIZE THE': 1, 'REALIZE THE EXPECTATIONS': 1, 'THE EXPECTATIONS OF': 1, 'EXPECTATIONS OF A': 1, 'OF A MAGNANIMOUS': 1, 'A MAGNANIMOUS AND': 1, 'MAGNANIMOUS AND CONFIDING': 1, 'AND CONFIDING PEOPLE': 1, 'CONFIDING PEOPLE I': 1, 'PEOPLE I TOO': 1, 'I TOO WELL': 1, 'TOO WELL UNDERSTAND': 1, 'WELL UNDERSTAND THE': 1, 'UNDERSTAND THE DANGEROUS': 1, 'THE DANGEROUS TEMPTATIONS': 1, 'DANGEROUS TEMPTATIONS TO': 1, 'TEMPTATIONS TO WHICH': 1, 'TO WHICH I': 1, 'SHALL BE EXPOSED': 1, 'BE EXPOSED FROM': 1, 'EXPOSED FROM THE': 1, 'FROM THE MAGNITUDE': 1, 'THE MAGNITUDE OF': 1, 'MAGNITUDE OF THE': 1, 'HAS BEEN THE': 1, 'BEEN THE PLEASURE': 1, 'THE PLEASURE OF': 1, 'PLEASURE OF THE': 1, 'PEOPLE TO COMMIT': 1, 'TO COMMIT TO': 1, 'COMMIT TO MY': 1, 'TO MY HANDS': 1, 'MY HANDS NOT': 1, 'HANDS NOT TO': 1, 'NOT TO PLACE': 1, 'TO PLACE MY': 1, 'PLACE MY CHIEF': 1, 'MY CHIEF CONFIDENCE': 1, 'CHIEF CONFIDENCE UPON': 1, 'CONFIDENCE UPON THE': 1, 'UPON THE AID': 1, 'AID OF THAT': 1, 'OF THAT ALMIGHTY': 1, 'THAT ALMIGHTY POWER': 1, 'ALMIGHTY POWER WHICH': 1, 'POWER WHICH HAS': 1, 'WHICH HAS HITHERTO': 1, 'HAS HITHERTO PROTECTED': 1, 'HITHERTO PROTECTED ME': 1, 'PROTECTED ME AND': 1, 'ME AND ENABLED': 1, 'AND ENABLED ME': 1, 'ENABLED ME TO': 1, 'ME TO BRING': 1, 'TO BRING TO': 1, 'BRING TO FAVORABLE': 1, 'TO FAVORABLE ISSUES': 1, 'FAVORABLE ISSUES OTHER': 1, 'ISSUES OTHER IMPORTANT': 1, 'OTHER IMPORTANT BUT': 1, 'IMPORTANT BUT STILL': 1, 'BUT STILL GREATLY': 1, 'STILL GREATLY INFERIOR': 1, 'GREATLY INFERIOR TRUSTS': 1, 'INFERIOR TRUSTS HERETOFORE': 1, 'TRUSTS HERETOFORE CONFIDED': 1, 'HERETOFORE CONFIDED TO': 1, 'CONFIDED TO ME': 1, 'ME BY MY': 1, 'BY MY COUNTRY': 1, 'THE BROAD FOUNDATION': 1, 'BROAD FOUNDATION UPON': 1, 'FOUNDATION UPON WHICH': 1, 'WHICH OUR CONSTITUTION': 1, 'OUR CONSTITUTION RESTS': 1, 'CONSTITUTION RESTS BEING': 1, 'RESTS BEING THE': 1, 'BEING THE PEOPLE--A': 1, 'THE PEOPLE--A BREATH': 1, 'PEOPLE--A BREATH OF': 1, 'BREATH OF THEIRS': 1, 'OF THEIRS HAVING': 1, 'THEIRS HAVING MADE': 1, 'HAVING MADE AS': 1, 'MADE AS A': 1, 'AS A BREATH': 1, 'A BREATH CAN': 1, 'BREATH CAN UNMAKE': 1, 'CAN UNMAKE CHANGE': 1, 'UNMAKE CHANGE OR': 1, 'CHANGE OR MODIFY': 1, 'OR MODIFY IT--IT': 1, 'MODIFY IT--IT CAN': 1, 'IT--IT CAN BE': 1, 'CAN BE ASSIGNED': 1, 'BE ASSIGNED TO': 1, 'ASSIGNED TO NONE': 1, 'TO NONE OF': 1, 'THE GREAT DIVISIONS': 1, 'GREAT DIVISIONS OF': 1, 'DIVISIONS OF GOVERNMENT': 1, 'OF GOVERNMENT BUT': 1, 'GOVERNMENT BUT TO': 1, 'BUT TO THAT': 1, 'THAT OF DEMOCRACY': 1, 'IF SUCH IS': 1, 'SUCH IS ITS': 1, 'IS ITS THEORY': 1, 'ITS THEORY THOSE': 1, 'THEORY THOSE WHO': 1, 'THOSE WHO ARE': 1, 'WHO ARE CALLED': 1, 'ARE CALLED UPON': 1, 'UPON TO ADMINISTER': 1, 'TO ADMINISTER IT': 1, 'ADMINISTER IT MUST': 1, 'IT MUST RECOGNIZE': 1, 'MUST RECOGNIZE AS': 1, 'RECOGNIZE AS ITS': 1, 'AS ITS LEADING': 1, 'ITS LEADING PRINCIPLE': 1, 'LEADING PRINCIPLE THE': 1, 'PRINCIPLE THE DUTY': 1, 'DUTY OF SHAPING': 1, 'OF SHAPING THEIR': 1, 'SHAPING THEIR MEASURES': 1, 'THEIR MEASURES SO': 1, 'MEASURES SO AS': 1, 'SO AS TO': 1, 'AS TO PRODUCE': 1, 'TO PRODUCE THE': 1, 'PRODUCE THE GREATEST': 1, 'THE GREATEST GOOD': 1, 'GREATEST GOOD TO': 1, 'GOOD TO THE': 1, 'TO THE GREATEST': 1, 'THE GREATEST NUMBER': 1, 'BUT WITH THESE': 1, 'WITH THESE BROAD': 1, 'THESE BROAD ADMISSIONS': 1, 'BROAD ADMISSIONS IF': 1, 'ADMISSIONS IF WE': 1, 'WE WOULD COMPARE': 1, 'WOULD COMPARE THE': 1, 'COMPARE THE SOVEREIGNTY': 1, 'THE SOVEREIGNTY ACKNOWLEDGED': 1, 'SOVEREIGNTY ACKNOWLEDGED TO': 1, 'ACKNOWLEDGED TO EXIST': 1, 'TO EXIST IN': 1, 'EXIST IN THE': 1, 'IN THE MASS': 1, 'MASS OF OUR': 1, 'OUR PEOPLE WITH': 1, 'PEOPLE WITH THE': 1, 'WITH THE POWER': 1, 'THE POWER CLAIMED': 1, 'POWER CLAIMED BY': 1, 'CLAIMED BY OTHER': 1, 'BY OTHER SOVEREIGNTIES': 1, 'OTHER SOVEREIGNTIES EVEN': 1, 'SOVEREIGNTIES EVEN BY': 1, 'EVEN BY THOSE': 1, 'BY THOSE WHICH': 1, 'THOSE WHICH HAVE': 1, 'HAVE BEEN CONSIDERED': 1, 'BEEN CONSIDERED MOST': 1, 'CONSIDERED MOST PURELY': 1, 'MOST PURELY DEMOCRATIC': 1, 'PURELY DEMOCRATIC WE': 1, 'DEMOCRATIC WE SHALL': 1, 'WE SHALL FIND': 1, 'SHALL FIND A': 1, 'FIND A MOST': 1, 'A MOST ESSENTIAL': 1, 'MOST ESSENTIAL DIFFERENCE': 1, 'ALL OTHERS LAY': 1, 'OTHERS LAY CLAIM': 1, 'LAY CLAIM TO': 1, 'CLAIM TO POWER': 1, 'TO POWER LIMITED': 1, 'POWER LIMITED ONLY': 1, 'LIMITED ONLY BY': 1, 'ONLY BY THEIR': 1, 'BY THEIR OWN': 1, 'THEIR OWN WILL': 1, 'THE MAJORITY OF': 1, 'MAJORITY OF OUR': 1, 'OUR CITIZENS ON': 1, 'CITIZENS ON THE': 1, 'THE CONTRARY POSSESS': 1, 'CONTRARY POSSESS A': 1, 'POSSESS A SOVEREIGNTY': 1, 'A SOVEREIGNTY WITH': 1, 'SOVEREIGNTY WITH AN': 1, 'WITH AN AMOUNT': 1, 'AN AMOUNT OF': 1, 'OF POWER PRECISELY': 1, 'POWER PRECISELY EQUAL': 1, 'PRECISELY EQUAL TO': 1, 'EQUAL TO THAT': 1, 'TO THAT WHICH': 1, 'HAS BEEN GRANTED': 1, 'GRANTED TO THEM': 1, 'BY THE PARTIES': 1, 'THE PARTIES TO': 1, 'PARTIES TO THE': 1, 'TO THE NATIONAL': 1, 'THE NATIONAL COMPACT': 1, 'NATIONAL COMPACT AND': 1, 'COMPACT AND NOTHING': 1, 'AND NOTHING BEYOND': 1, 'WE ADMIT OF': 1, 'ADMIT OF NO': 1, 'OF NO GOVERNMENT': 1, 'NO GOVERNMENT BY': 1, 'GOVERNMENT BY DIVINE': 1, 'BY DIVINE RIGHT': 1, 'DIVINE RIGHT BELIEVING': 1, 'RIGHT BELIEVING THAT': 1, 'BELIEVING THAT SO': 1, 'THAT SO FAR': 1, 'FAR AS POWER': 1, 'AS POWER IS': 1, 'POWER IS CONCERNED': 1, 'IS CONCERNED THE': 1, 'CONCERNED THE BENEFICENT': 1, 'THE BENEFICENT CREATOR': 1, 'BENEFICENT CREATOR HAS': 1, 'CREATOR HAS MADE': 1, 'HAS MADE NO': 1, 'MADE NO DISTINCTION': 1, 'NO DISTINCTION AMONGST': 1, 'DISTINCTION AMONGST MEN': 1, 'AMONGST MEN THAT': 1, 'MEN THAT ALL': 1, 'THAT ALL ARE': 1, 'ALL ARE UPON': 1, 'ARE UPON AN': 1, 'UPON AN EQUALITY': 1, 'AN EQUALITY AND': 1, 'EQUALITY AND THAT': 1, 'AND THAT THE': 1, 'THAT THE ONLY': 1, 'THE ONLY LEGITIMATE': 1, 'ONLY LEGITIMATE RIGHT': 1, 'LEGITIMATE RIGHT TO': 1, 'RIGHT TO GOVERN': 1, 'TO GOVERN IS': 1, 'GOVERN IS AN': 1, 'IS AN EXPRESS': 1, 'EXPRESS GRANT OF': 1, 'OF POWER FROM': 1, 'POWER FROM THE': 1, 'FROM THE GOVERNED': 1, 'UNITED STATES IS': 1, 'STATES IS THE': 1, 'IS THE INSTRUMENT': 1, 'THE INSTRUMENT CONTAINING': 1, 'INSTRUMENT CONTAINING THIS': 1, 'CONTAINING THIS GRANT': 1, 'THIS GRANT OF': 1, 'TO THE SEVERAL': 1, 'THE SEVERAL DEPARTMENTS': 1, 'SEVERAL DEPARTMENTS COMPOSING': 1, 'DEPARTMENTS COMPOSING THE': 1, 'COMPOSING THE GOVERNMENT': 1, 'ON AN EXAMINATION': 1, 'AN EXAMINATION OF': 1, 'EXAMINATION OF THAT': 1, 'THAT INSTRUMENT IT': 1, 'INSTRUMENT IT WILL': 1, 'IT WILL BE': 1, 'WILL BE FOUND': 1, 'FOUND TO CONTAIN': 1, 'TO CONTAIN DECLARATIONS': 1, 'CONTAIN DECLARATIONS OF': 1, 'DECLARATIONS OF POWER': 1, 'OF POWER GRANTED': 1, 'POWER GRANTED AND': 1, 'GRANTED AND OF': 1, 'AND OF POWER': 1, 'OF POWER WITHHELD': 1, 'THE LATTER IS': 1, 'LATTER IS ALSO': 1, 'IS ALSO SUSCEPTIBLE': 1, 'ALSO SUSCEPTIBLE OF': 1, 'SUSCEPTIBLE OF DIVISION': 1, 'OF DIVISION INTO': 1, 'DIVISION INTO POWER': 1, 'INTO POWER WHICH': 1, 'POWER WHICH THE': 1, 'WHICH THE MAJORITY': 1, 'THE MAJORITY HAD': 1, 'MAJORITY HAD THE': 1, 'HAD THE RIGHT': 1, 'RIGHT TO GRANT': 1, 'TO GRANT BUT': 1, 'GRANT BUT WHICH': 1, 'BUT WHICH THEY': 1, 'WHICH THEY DO': 1, 'THEY DO NOT': 1, 'DO NOT THINK': 1, 'NOT THINK PROPER': 1, 'THINK PROPER TO': 1, 'PROPER TO INTRUST': 1, 'TO INTRUST TO': 1, 'INTRUST TO THEIR': 1, 'TO THEIR AGENTS': 1, 'THEIR AGENTS AND': 1, 'AGENTS AND THAT': 1, 'AND THAT WHICH': 1, 'THAT WHICH THEY': 1, 'WHICH THEY COULD': 1, 'THEY COULD NOT': 1, 'COULD NOT HAVE': 1, 'NOT HAVE GRANTED': 1, 'HAVE GRANTED NOT': 1, 'GRANTED NOT BEING': 1, 'NOT BEING POSSESSED': 1, 'BEING POSSESSED BY': 1, 'POSSESSED BY THEMSELVES': 1, 'IN OTHER WORDS': 1, 'OTHER WORDS THERE': 1, 'WORDS THERE ARE': 1, 'THERE ARE CERTAIN': 1, 'ARE CERTAIN RIGHTS': 1, 'CERTAIN RIGHTS POSSESSED': 1, 'RIGHTS POSSESSED BY': 1, 'POSSESSED BY EACH': 1, 'BY EACH INDIVIDUAL': 1, 'EACH INDIVIDUAL AMERICAN': 1, 'INDIVIDUAL AMERICAN CITIZEN': 1, 'AMERICAN CITIZEN WHICH': 1, 'CITIZEN WHICH IN': 1, 'WHICH IN HIS': 1, 'IN HIS COMPACT': 1, 'HIS COMPACT WITH': 1, 'COMPACT WITH THE': 1, 'WITH THE OTHERS': 1, 'THE OTHERS HE': 1, 'OTHERS HE HAS': 1, 'HE HAS NEVER': 1, 'HAS NEVER SURRENDERED': 1, 'SOME OF THEM': 1, 'OF THEM INDEED': 1, 'THEM INDEED HE': 1, 'INDEED HE IS': 1, 'HE IS UNABLE': 1, 'IS UNABLE TO': 1, 'UNABLE TO SURRENDER': 1, 'TO SURRENDER BEING': 1, 'SURRENDER BEING IN': 1, 'LANGUAGE OF OUR': 1, 'OUR SYSTEM UNALIENABLE': 1, 'THE BOASTED PRIVILEGE': 1, 'BOASTED PRIVILEGE OF': 1, 'PRIVILEGE OF A': 1, 'A ROMAN CITIZEN': 1, 'ROMAN CITIZEN WAS': 1, 'CITIZEN WAS TO': 1, 'WAS TO HIM': 1, 'TO HIM A': 1, 'HIM A SHIELD': 1, 'A SHIELD ONLY': 1, 'SHIELD ONLY AGAINST': 1, 'ONLY AGAINST A': 1, 'AGAINST A PETTY': 1, 'A PETTY PROVINCIAL': 1, 'PETTY PROVINCIAL RULER': 1, 'PROVINCIAL RULER WHILST': 1, 'RULER WHILST THE': 1, 'WHILST THE PROUD': 1, 'THE PROUD DEMOCRAT': 1, 'PROUD DEMOCRAT OF': 1, 'DEMOCRAT OF ATHENS': 1, 'OF ATHENS WOULD': 1, 'ATHENS WOULD CONSOLE': 1, 'WOULD CONSOLE HIMSELF': 1, 'CONSOLE HIMSELF UNDER': 1, 'HIMSELF UNDER A': 1, 'UNDER A SENTENCE': 1, 'A SENTENCE OF': 1, 'SENTENCE OF DEATH': 1, 'OF DEATH FOR': 1, 'DEATH FOR A': 1, 'FOR A SUPPOSED': 1, 'A SUPPOSED VIOLATION': 1, 'SUPPOSED VIOLATION OF': 1, 'VIOLATION OF THE': 1, 'OF THE NATIONAL': 1, 'THE NATIONAL FAITH--WHICH': 1, 'NATIONAL FAITH--WHICH NO': 1, 'FAITH--WHICH NO ONE': 1, 'NO ONE UNDERSTOOD': 1, 'ONE UNDERSTOOD AND': 1, 'UNDERSTOOD AND WHICH': 1, 'AND WHICH AT': 1, 'WHICH AT TIMES': 1, 'AT TIMES WAS': 1, 'TIMES WAS THE': 1, 'WAS THE SUBJECT': 1, 'OF THE MOCKERY': 1, 'THE MOCKERY OF': 1, 'MOCKERY OF ALL--OR': 1, 'OF ALL--OR THE': 1, 'ALL--OR THE BANISHMENT': 1, 'THE BANISHMENT FROM': 1, 'BANISHMENT FROM HIS': 1, 'FROM HIS HOME': 1, 'HIS HOME HIS': 1, 'HOME HIS FAMILY': 1, 'HIS FAMILY AND': 1, 'FAMILY AND HIS': 1, 'AND HIS COUNTRY': 1, 'HIS COUNTRY WITH': 1, 'COUNTRY WITH OR': 1, 'OR WITHOUT AN': 1, 'WITHOUT AN ALLEGED': 1, 'AN ALLEGED CAUSE': 1, 'ALLEGED CAUSE THAT': 1, 'CAUSE THAT IT': 1, 'THAT IT WAS': 1, 'WAS THE ACT': 1, 'THE ACT NOT': 1, 'ACT NOT OF': 1, 'OF A SINGLE': 1, 'A SINGLE TYRANT': 1, 'SINGLE TYRANT OR': 1, 'TYRANT OR HATED': 1, 'OR HATED ARISTOCRACY': 1, 'HATED ARISTOCRACY BUT': 1, 'ARISTOCRACY BUT OF': 1, 'BUT OF HIS': 1, 'OF HIS ASSEMBLED': 1, 'HIS ASSEMBLED COUNTRYMEN': 1, 'FAR DIFFERENT IS': 1, 'DIFFERENT IS THE': 1, 'IS THE POWER': 1, 'POWER OF OUR': 1, 'OF OUR SOVEREIGNTY': 1, 'IT CAN INTERFERE': 1, 'CAN INTERFERE WITH': 1, 'INTERFERE WITH NO': 1, \"WITH NO ONE'S\": 1, \"NO ONE'S FAITH\": 1, \"ONE'S FAITH PRESCRIBE\": 1, 'FAITH PRESCRIBE FORMS': 1, 'PRESCRIBE FORMS OF': 1, 'FORMS OF WORSHIP': 1, 'OF WORSHIP FOR': 1, 'WORSHIP FOR NO': 1, \"FOR NO ONE'S\": 1, \"NO ONE'S OBSERVANCE\": 1, \"ONE'S OBSERVANCE INFLICT\": 1, 'OBSERVANCE INFLICT NO': 1, 'INFLICT NO PUNISHMENT': 1, 'NO PUNISHMENT BUT': 1, 'PUNISHMENT BUT AFTER': 1, 'BUT AFTER WELL-ASCERTAINED': 1, 'AFTER WELL-ASCERTAINED GUILT': 1, 'WELL-ASCERTAINED GUILT THE': 1, 'GUILT THE RESULT': 1, 'THE RESULT OF': 1, 'RESULT OF INVESTIGATION': 1, 'OF INVESTIGATION UNDER': 1, 'INVESTIGATION UNDER RULES': 1, 'UNDER RULES PRESCRIBED': 1, 'RULES PRESCRIBED BY': 1, 'THE CONSTITUTION ITSELF': 1, 'THESE PRECIOUS PRIVILEGES': 1, 'PRECIOUS PRIVILEGES AND': 1, 'PRIVILEGES AND THOSE': 1, 'AND THOSE SCARCELY': 1, 'THOSE SCARCELY LESS': 1, 'SCARCELY LESS IMPORTANT': 1, 'LESS IMPORTANT OF': 1, 'IMPORTANT OF GIVING': 1, 'OF GIVING EXPRESSION': 1, 'GIVING EXPRESSION TO': 1, 'EXPRESSION TO HIS': 1, 'TO HIS THOUGHTS': 1, 'HIS THOUGHTS AND': 1, 'THOUGHTS AND OPINIONS': 1, 'AND OPINIONS EITHER': 1, 'OPINIONS EITHER BY': 1, 'EITHER BY WRITING': 1, 'BY WRITING OR': 1, 'WRITING OR SPEAKING': 1, 'OR SPEAKING UNRESTRAINED': 1, 'SPEAKING UNRESTRAINED BUT': 1, 'UNRESTRAINED BUT BY': 1, 'BY THE LIABILITY': 1, 'THE LIABILITY FOR': 1, 'LIABILITY FOR INJURY': 1, 'FOR INJURY TO': 1, 'INJURY TO OTHERS': 1, 'TO OTHERS AND': 1, 'OTHERS AND THAT': 1, 'AND THAT OF': 1, 'THAT OF A': 1, 'OF A FULL': 1, 'A FULL PARTICIPATION': 1, 'FULL PARTICIPATION IN': 1, 'PARTICIPATION IN ALL': 1, 'IN ALL THE': 1, 'ALL THE ADVANTAGES': 1, 'THE ADVANTAGES WHICH': 1, 'ADVANTAGES WHICH FLOW': 1, 'WHICH FLOW FROM': 1, 'FLOW FROM THE': 1, 'FROM THE GOVERNMENT': 1, 'GOVERNMENT THE ACKNOWLEDGED': 1, 'THE ACKNOWLEDGED PROPERTY': 1, 'ACKNOWLEDGED PROPERTY OF': 1, 'PROPERTY OF ALL': 1, 'ALL THE AMERICAN': 1, 'THE AMERICAN CITIZEN': 1, 'AMERICAN CITIZEN DERIVES': 1, 'CITIZEN DERIVES FROM': 1, 'DERIVES FROM NO': 1, 'FROM NO CHARTER': 1, 'NO CHARTER GRANTED': 1, 'CHARTER GRANTED BY': 1, 'GRANTED BY HIS': 1, 'BY HIS FELLOW-MAN': 1, 'HE CLAIMS THEM': 1, 'CLAIMS THEM BECAUSE': 1, 'THEM BECAUSE HE': 1, 'BECAUSE HE IS': 1, 'HE IS HIMSELF': 1, 'IS HIMSELF A': 1, 'HIMSELF A MAN': 1, 'A MAN FASHIONED': 1, 'MAN FASHIONED BY': 1, 'FASHIONED BY THE': 1, 'THE SAME ALMIGHTY': 1, 'SAME ALMIGHTY HAND': 1, 'ALMIGHTY HAND AS': 1, 'HAND AS THE': 1, 'AS THE REST': 1, 'THE REST OF': 1, 'REST OF HIS': 1, 'OF HIS SPECIES': 1, 'HIS SPECIES AND': 1, 'SPECIES AND ENTITLED': 1, 'AND ENTITLED TO': 1, 'ENTITLED TO A': 1, 'TO A FULL': 1, 'A FULL SHARE': 1, 'FULL SHARE OF': 1, 'OF THE BLESSINGS': 1, 'THE BLESSINGS WITH': 1, 'BLESSINGS WITH WHICH': 1, 'WITH WHICH HE': 1, 'WHICH HE HAS': 1, 'HE HAS ENDOWED': 1, 'HAS ENDOWED THEM': 1, 'NOTWITHSTANDING THE LIMITED': 1, 'THE LIMITED SOVEREIGNTY': 1, 'LIMITED SOVEREIGNTY POSSESSED': 1, 'SOVEREIGNTY POSSESSED BY': 1, 'POSSESSED BY THE': 1, 'UNITED STATES AND': 1, 'STATES AND THE': 1, 'AND THE RESTRICTED': 1, 'THE RESTRICTED GRANT': 1, 'RESTRICTED GRANT OF': 1, 'TO THE GOVERNMENT': 1, 'THE GOVERNMENT WHICH': 1, 'GOVERNMENT WHICH THEY': 1, 'THEY HAVE ADOPTED': 1, 'HAVE ADOPTED ENOUGH': 1, 'ADOPTED ENOUGH HAS': 1, 'ENOUGH HAS BEEN': 1, 'HAS BEEN GIVEN': 1, 'BEEN GIVEN TO': 1, 'GIVEN TO ACCOMPLISH': 1, 'TO ACCOMPLISH ALL': 1, 'ACCOMPLISH ALL THE': 1, 'ALL THE OBJECTS': 1, 'THE OBJECTS FOR': 1, 'OBJECTS FOR WHICH': 1, 'FOR WHICH IT': 1, 'WHICH IT WAS': 1, 'IT WAS CREATED': 1, 'HAS BEEN FOUND': 1, 'BEEN FOUND POWERFUL': 1, 'FOUND POWERFUL IN': 1, 'POWERFUL IN WAR': 1, 'IN WAR AND': 1, 'WAR AND HITHERTO': 1, 'AND HITHERTO JUSTICE': 1, 'HITHERTO JUSTICE HAS': 1, 'JUSTICE HAS BEEN': 1, 'HAS BEEN ADMINISTERED': 1, 'BEEN ADMINISTERED AND': 1, 'ADMINISTERED AND INTIMATE': 1, 'AND INTIMATE UNION': 1, 'INTIMATE UNION EFFECTED': 1, 'UNION EFFECTED DOMESTIC': 1, 'EFFECTED DOMESTIC TRANQUILLITY': 1, 'DOMESTIC TRANQUILLITY PRESERVED': 1, 'TRANQUILLITY PRESERVED AND': 1, 'PRESERVED AND PERSONAL': 1, 'AND PERSONAL LIBERTY': 1, 'PERSONAL LIBERTY SECURED': 1, 'LIBERTY SECURED TO': 1, 'SECURED TO THE': 1, 'TO THE CITIZEN': 1, 'AS WAS TO': 1, 'WAS TO BE': 1, 'TO BE EXPECTED': 1, 'BE EXPECTED HOWEVER': 1, 'EXPECTED HOWEVER FROM': 1, 'HOWEVER FROM THE': 1, 'FROM THE DEFECT': 1, 'THE DEFECT OF': 1, 'DEFECT OF LANGUAGE': 1, 'OF LANGUAGE AND': 1, 'LANGUAGE AND THE': 1, 'AND THE NECESSARILY': 1, 'THE NECESSARILY SENTENTIOUS': 1, 'NECESSARILY SENTENTIOUS MANNER': 1, 'SENTENTIOUS MANNER IN': 1, 'MANNER IN WHICH': 1, 'IN WHICH THE': 1, 'THE CONSTITUTION IS': 1, 'CONSTITUTION IS WRITTEN': 1, 'IS WRITTEN DISPUTES': 1, 'WRITTEN DISPUTES HAVE': 1, 'DISPUTES HAVE ARISEN': 1, 'HAVE ARISEN AS': 1, 'ARISEN AS TO': 1, 'TO THE AMOUNT': 1, 'OF POWER WHICH': 1, 'IT HAS ACTUALLY': 1, 'HAS ACTUALLY GRANTED': 1, 'ACTUALLY GRANTED OR': 1, 'GRANTED OR WAS': 1, 'OR WAS INTENDED': 1, 'WAS INTENDED TO': 1, 'INTENDED TO GRANT': 1, 'THIS IS MORE': 1, 'IS MORE PARTICULARLY': 1, 'MORE PARTICULARLY THE': 1, 'PARTICULARLY THE CASE': 1, 'THE CASE IN': 1, 'CASE IN RELATION': 1, 'RELATION TO THAT': 1, 'TO THAT PART': 1, 'THAT PART OF': 1, 'OF THE INSTRUMENT': 1, 'THE INSTRUMENT WHICH': 1, 'INSTRUMENT WHICH TREATS': 1, 'WHICH TREATS OF': 1, 'TREATS OF THE': 1, 'THE LEGISLATIVE BRANCH': 1, 'LEGISLATIVE BRANCH AND': 1, 'BRANCH AND NOT': 1, 'NOT ONLY AS': 1, 'ONLY AS REGARDS': 1, 'AS REGARDS THE': 1, 'REGARDS THE EXERCISE': 1, 'EXERCISE OF POWERS': 1, 'OF POWERS CLAIMED': 1, 'POWERS CLAIMED UNDER': 1, 'CLAIMED UNDER A': 1, 'UNDER A GENERAL': 1, 'A GENERAL CLAUSE': 1, 'GENERAL CLAUSE GIVING': 1, 'CLAUSE GIVING THAT': 1, 'GIVING THAT BODY': 1, 'THAT BODY THE': 1, 'BODY THE AUTHORITY': 1, 'THE AUTHORITY TO': 1, 'AUTHORITY TO PASS': 1, 'TO PASS ALL': 1, 'PASS ALL LAWS': 1, 'ALL LAWS NECESSARY': 1, 'LAWS NECESSARY TO': 1, 'NECESSARY TO CARRY': 1, 'EFFECT THE SPECIFIED': 1, 'THE SPECIFIED POWERS': 1, 'SPECIFIED POWERS BUT': 1, 'POWERS BUT IN': 1, 'BUT IN RELATION': 1, 'TO THE LATTER': 1, 'THE LATTER ALSO': 1, 'IT IS HOWEVER': 1, 'IS HOWEVER CONSOLATORY': 1, 'HOWEVER CONSOLATORY TO': 1, 'CONSOLATORY TO REFLECT': 1, 'TO REFLECT THAT': 1, 'REFLECT THAT MOST': 1, 'THAT MOST OF': 1, 'MOST OF THE': 1, 'OF THE INSTANCES': 1, 'THE INSTANCES OF': 1, 'INSTANCES OF ALLEGED': 1, 'OF ALLEGED DEPARTURE': 1, 'ALLEGED DEPARTURE FROM': 1, 'DEPARTURE FROM THE': 1, 'FROM THE LETTER': 1, 'THE LETTER OR': 1, 'LETTER OR SPIRIT': 1, 'OR SPIRIT OF': 1, 'SPIRIT OF THE': 1, 'THE CONSTITUTION HAVE': 1, 'CONSTITUTION HAVE ULTIMATELY': 1, 'HAVE ULTIMATELY RECEIVED': 1, 'ULTIMATELY RECEIVED THE': 1, 'RECEIVED THE SANCTION': 1, 'THE SANCTION OF': 1, 'SANCTION OF A': 1, 'OF A MAJORITY': 1, 'A MAJORITY OF': 1, 'MAJORITY OF THE': 1, 'AND THE FACT': 1, 'THE FACT THAT': 1, 'FACT THAT MANY': 1, 'THAT MANY OF': 1, 'OF OUR STATESMEN': 1, 'OUR STATESMEN MOST': 1, 'STATESMEN MOST DISTINGUISHED': 1, 'MOST DISTINGUISHED FOR': 1, 'DISTINGUISHED FOR TALENT': 1, 'FOR TALENT AND': 1, 'TALENT AND PATRIOTISM': 1, 'AND PATRIOTISM HAVE': 1, 'PATRIOTISM HAVE BEEN': 1, 'HAVE BEEN AT': 1, 'BEEN AT ONE': 1, 'ONE TIME OR': 1, 'TIME OR OTHER': 1, 'OR OTHER OF': 1, 'OTHER OF THEIR': 1, 'THEIR POLITICAL CAREER': 1, 'POLITICAL CAREER ON': 1, 'CAREER ON BOTH': 1, 'ON BOTH SIDES': 1, 'BOTH SIDES OF': 1, 'SIDES OF EACH': 1, 'EACH OF THE': 1, 'THE MOST WARMLY': 1, 'MOST WARMLY DISPUTED': 1, 'WARMLY DISPUTED QUESTIONS': 1, 'DISPUTED QUESTIONS FORCES': 1, 'QUESTIONS FORCES UPON': 1, 'FORCES UPON US': 1, 'UPON US THE': 1, 'US THE INFERENCE': 1, 'THE INFERENCE THAT': 1, 'INFERENCE THAT THE': 1, 'THAT THE ERRORS': 1, 'THE ERRORS IF': 1, 'ERRORS IF ERRORS': 1, 'IF ERRORS THERE': 1, 'ERRORS THERE WERE': 1, 'THERE WERE ARE': 1, 'WERE ARE ATTRIBUTABLE': 1, 'ATTRIBUTABLE TO THE': 1, 'TO THE INTRINSIC': 1, 'THE INTRINSIC DIFFICULTY': 1, 'INTRINSIC DIFFICULTY IN': 1, 'DIFFICULTY IN MANY': 1, 'IN MANY INSTANCES': 1, 'MANY INSTANCES OF': 1, 'INSTANCES OF ASCERTAINING': 1, 'OF ASCERTAINING THE': 1, 'ASCERTAINING THE INTENTIONS': 1, 'THE INTENTIONS OF': 1, 'INTENTIONS OF THE': 1, 'OF THE FRAMERS': 1, 'THE CONSTITUTION RATHER': 1, 'CONSTITUTION RATHER THAN': 1, 'RATHER THAN THE': 1, 'THAN THE INFLUENCE': 1, 'INFLUENCE OF ANY': 1, 'OF ANY SINISTER': 1, 'ANY SINISTER OR': 1, 'SINISTER OR UNPATRIOTIC': 1, 'OR UNPATRIOTIC MOTIVE': 1, 'BUT THE GREAT': 1, 'THE GREAT DANGER': 1, 'GREAT DANGER TO': 1, 'OUR INSTITUTIONS DOES': 1, 'INSTITUTIONS DOES NOT': 1, 'APPEAR TO ME': 1, 'BE IN A': 1, 'IN A USURPATION': 1, 'A USURPATION BY': 1, 'USURPATION BY THE': 1, 'BY THE GOVERNMENT': 1, 'GOVERNMENT OF POWER': 1, 'OF POWER NOT': 1, 'POWER NOT GRANTED': 1, 'NOT GRANTED BY': 1, 'GRANTED BY THE': 1, 'PEOPLE BUT BY': 1, 'BY THE ACCUMULATION': 1, 'THE ACCUMULATION IN': 1, 'ACCUMULATION IN ONE': 1, 'DEPARTMENTS OF THAT': 1, 'OF THAT WHICH': 1, 'THAT WHICH WAS': 1, 'WHICH WAS ASSIGNED': 1, 'WAS ASSIGNED TO': 1, 'ASSIGNED TO OTHERS': 1, 'LIMITED AS ARE': 1, 'AS ARE THE': 1, 'ARE THE POWERS': 1, 'POWERS WHICH HAVE': 1, 'BEEN GRANTED STILL': 1, 'GRANTED STILL ENOUGH': 1, 'STILL ENOUGH HAVE': 1, 'ENOUGH HAVE BEEN': 1, 'GRANTED TO CONSTITUTE': 1, 'TO CONSTITUTE A': 1, 'CONSTITUTE A DESPOTISM': 1, 'A DESPOTISM IF': 1, 'DESPOTISM IF CONCENTRATED': 1, 'IF CONCENTRATED IN': 1, 'CONCENTRATED IN ONE': 1, 'THIS DANGER IS': 1, 'DANGER IS GREATLY': 1, 'IS GREATLY HEIGHTENED': 1, 'GREATLY HEIGHTENED AS': 1, 'HEIGHTENED AS IT': 1, 'AS IT HAS': 1, 'HAS BEEN ALWAYS': 1, 'BEEN ALWAYS OBSERVABLE': 1, 'ALWAYS OBSERVABLE THAT': 1, 'OBSERVABLE THAT MEN': 1, 'THAT MEN ARE': 1, 'MEN ARE LESS': 1, 'ARE LESS JEALOUS': 1, 'LESS JEALOUS OF': 1, 'JEALOUS OF ENCROACHMENTS': 1, 'OF ENCROACHMENTS OF': 1, 'ENCROACHMENTS OF ONE': 1, 'OF ONE DEPARTMENT': 1, 'ONE DEPARTMENT UPON': 1, 'DEPARTMENT UPON ANOTHER': 1, 'UPON ANOTHER THAN': 1, 'ANOTHER THAN UPON': 1, 'THAN UPON THEIR': 1, 'UPON THEIR OWN': 1, 'THEIR OWN RESERVED': 1, 'OWN RESERVED RIGHTS': 1, 'UNITED STATES FIRST': 1, 'STATES FIRST CAME': 1, 'FIRST CAME FROM': 1, 'CAME FROM THE': 1, 'THE CONVENTION WHICH': 1, 'CONVENTION WHICH FORMED': 1, 'WHICH FORMED IT': 1, 'FORMED IT MANY': 1, 'IT MANY OF': 1, 'MANY OF THE': 1, 'OF THE STERNEST': 1, 'THE STERNEST REPUBLICANS': 1, 'STERNEST REPUBLICANS OF': 1, 'REPUBLICANS OF THE': 1, 'OF THE DAY': 1, 'THE DAY WERE': 1, 'DAY WERE ALARMED': 1, 'WERE ALARMED AT': 1, 'ALARMED AT THE': 1, 'AT THE EXTENT': 1, 'EXTENT OF THE': 1, 'POWER WHICH HAD': 1, 'HAD BEEN GRANTED': 1, 'GRANTED TO THE': 1, 'TO THE FEDERAL': 1, 'GOVERNMENT AND MORE': 1, 'AND MORE PARTICULARLY': 1, 'MORE PARTICULARLY OF': 1, 'PARTICULARLY OF THAT': 1, 'OF THAT PORTION': 1, 'THAT PORTION WHICH': 1, 'PORTION WHICH HAD': 1, 'HAD BEEN ASSIGNED': 1, 'BEEN ASSIGNED TO': 1, 'THE EXECUTIVE BRANCH': 1, 'THERE WERE IN': 1, 'WERE IN IT': 1, 'IN IT FEATURES': 1, 'IT FEATURES WHICH': 1, 'FEATURES WHICH APPEARED': 1, 'WHICH APPEARED NOT': 1, 'APPEARED NOT TO': 1, 'BE IN HARMONY': 1, 'IN HARMONY WITH': 1, 'HARMONY WITH THEIR': 1, 'WITH THEIR IDEAS': 1, 'THEIR IDEAS OF': 1, 'IDEAS OF A': 1, 'OF A SIMPLE': 1, 'A SIMPLE REPRESENTATIVE': 1, 'SIMPLE REPRESENTATIVE DEMOCRACY': 1, 'REPRESENTATIVE DEMOCRACY OR': 1, 'DEMOCRACY OR REPUBLIC': 1, 'OR REPUBLIC AND': 1, 'REPUBLIC AND KNOWING': 1, 'AND KNOWING THE': 1, 'KNOWING THE TENDENCY': 1, 'TENDENCY OF POWER': 1, 'INCREASE ITSELF PARTICULARLY': 1, 'ITSELF PARTICULARLY WHEN': 1, 'PARTICULARLY WHEN EXERCISED': 1, 'WHEN EXERCISED BY': 1, 'EXERCISED BY A': 1, 'BY A SINGLE': 1, 'A SINGLE INDIVIDUAL': 1, 'SINGLE INDIVIDUAL PREDICTIONS': 1, 'INDIVIDUAL PREDICTIONS WERE': 1, 'PREDICTIONS WERE MADE': 1, 'WERE MADE THAT': 1, 'MADE THAT AT': 1, 'THAT AT NO': 1, 'AT NO VERY': 1, 'NO VERY REMOTE': 1, 'VERY REMOTE PERIOD': 1, 'REMOTE PERIOD THE': 1, 'PERIOD THE GOVERNMENT': 1, 'THE GOVERNMENT WOULD': 1, 'GOVERNMENT WOULD TERMINATE': 1, 'WOULD TERMINATE IN': 1, 'TERMINATE IN VIRTUAL': 1, 'IN VIRTUAL MONARCHY': 1, 'IT WOULD NOT': 1, 'WOULD NOT BECOME': 1, 'NOT BECOME ME': 1, 'BECOME ME TO': 1, 'ME TO SAY': 1, 'SAY THAT THE': 1, 'THAT THE FEARS': 1, 'THE FEARS OF': 1, 'FEARS OF THESE': 1, 'OF THESE PATRIOTS': 1, 'THESE PATRIOTS HAVE': 1, 'PATRIOTS HAVE BEEN': 1, 'HAVE BEEN ALREADY': 1, 'BEEN ALREADY REALIZED': 1, 'ALREADY REALIZED BUT': 1, 'REALIZED BUT AS': 1, 'BUT AS I': 1, 'AS I SINCERELY': 1, 'I SINCERELY BELIEVE': 1, 'SINCERELY BELIEVE THAT': 1, 'BELIEVE THAT THE': 1, 'THAT THE TENDENCY': 1, 'TENDENCY OF MEASURES': 1, 'OF MEASURES AND': 1, 'MEASURES AND OF': 1, \"AND OF MEN'S\": 1, \"OF MEN'S OPINIONS\": 1, \"MEN'S OPINIONS FOR\": 1, 'OPINIONS FOR SOME': 1, 'FOR SOME YEARS': 1, 'SOME YEARS PAST': 1, 'YEARS PAST HAS': 1, 'PAST HAS BEEN': 1, 'BEEN IN THAT': 1, 'IN THAT DIRECTION': 1, 'THAT DIRECTION IT': 1, 'DIRECTION IT IS': 1, 'IT IS I': 1, 'IS I CONCEIVE': 1, 'I CONCEIVE STRICTLY': 1, 'CONCEIVE STRICTLY PROPER': 1, 'STRICTLY PROPER THAT': 1, 'PROPER THAT I': 1, 'I SHOULD TAKE': 1, 'SHOULD TAKE THIS': 1, 'TAKE THIS OCCASION': 1, 'THIS OCCASION TO': 1, 'OCCASION TO REPEAT': 1, 'TO REPEAT THE': 1, 'REPEAT THE ASSURANCES': 1, 'THE ASSURANCES I': 1, 'ASSURANCES I HAVE': 1, 'I HAVE HERETOFORE': 1, 'HAVE HERETOFORE GIVEN': 1, 'HERETOFORE GIVEN OF': 1, 'GIVEN OF MY': 1, 'OF MY DETERMINATION': 1, 'MY DETERMINATION TO': 1, 'DETERMINATION TO ARREST': 1, 'TO ARREST THE': 1, 'ARREST THE PROGRESS': 1, 'THE PROGRESS OF': 1, 'PROGRESS OF THAT': 1, 'OF THAT TENDENCY': 1, 'THAT TENDENCY IF': 1, 'TENDENCY IF IT': 1, 'IF IT REALLY': 1, 'IT REALLY EXISTS': 1, 'REALLY EXISTS AND': 1, 'EXISTS AND RESTORE': 1, 'AND RESTORE THE': 1, 'RESTORE THE GOVERNMENT': 1, 'THE GOVERNMENT TO': 1, 'GOVERNMENT TO ITS': 1, 'HEALTH AND VIGOR': 1, 'AND VIGOR AS': 1, 'VIGOR AS FAR': 1, 'FAR AS THIS': 1, 'AS THIS CAN': 1, 'THIS CAN BE': 1, 'EFFECTED BY ANY': 1, 'BY ANY LEGITIMATE': 1, 'ANY LEGITIMATE EXERCISE': 1, 'LEGITIMATE EXERCISE OF': 1, 'THE POWER PLACED': 1, 'POWER PLACED IN': 1, 'PROCEED TO STATE': 1, 'TO STATE IN': 1, 'STATE IN AS': 1, 'IN AS SUMMARY': 1, 'AS SUMMARY A': 1, 'SUMMARY A MANNER': 1, 'A MANNER AS': 1, 'MANNER AS I': 1, 'AS I CAN': 1, 'I CAN MY': 1, 'CAN MY OPINION': 1, 'MY OPINION OF': 1, 'OF THE SOURCES': 1, 'THE SOURCES OF': 1, 'SOURCES OF THE': 1, 'OF THE EVILS': 1, 'THE EVILS WHICH': 1, 'EVILS WHICH HAVE': 1, 'HAVE BEEN SO': 1, 'BEEN SO EXTENSIVELY': 1, 'SO EXTENSIVELY COMPLAINED': 1, 'EXTENSIVELY COMPLAINED OF': 1, 'COMPLAINED OF AND': 1, 'OF AND THE': 1, 'AND THE CORRECTIVES': 1, 'THE CORRECTIVES WHICH': 1, 'CORRECTIVES WHICH MAY': 1, 'MAY BE APPLIED': 1, 'THE FORMER ARE': 1, 'FORMER ARE UNQUESTIONABLY': 1, 'ARE UNQUESTIONABLY TO': 1, 'UNQUESTIONABLY TO BE': 1, 'BE FOUND IN': 1, 'FOUND IN THE': 1, 'IN THE DEFECTS': 1, 'THE DEFECTS OF': 1, 'THE CONSTITUTION OTHERS': 1, 'CONSTITUTION OTHERS IN': 1, 'OTHERS IN MY': 1, 'IN MY JUDGMENT': 1, 'MY JUDGMENT ARE': 1, 'JUDGMENT ARE ATTRIBUTABLE': 1, 'ATTRIBUTABLE TO A': 1, 'TO A MISCONSTRUCTION': 1, 'MISCONSTRUCTION OF SOME': 1, 'SOME OF ITS': 1, 'THE FORMER IS': 1, 'FORMER IS THE': 1, 'IS THE ELIGIBILITY': 1, 'THE ELIGIBILITY OF': 1, 'ELIGIBILITY OF THE': 1, 'THE SAME INDIVIDUAL': 1, 'SAME INDIVIDUAL TO': 1, 'INDIVIDUAL TO A': 1, 'TO A SECOND': 1, 'SECOND TERM OF': 1, 'TERM OF THE': 1, 'OF THE PRESIDENCY': 1, 'THE SAGACIOUS MIND': 1, 'SAGACIOUS MIND OF': 1, 'MIND OF MR': 1, 'JEFFERSON EARLY SAW': 1, 'EARLY SAW AND': 1, 'SAW AND LAMENTED': 1, 'AND LAMENTED THIS': 1, 'LAMENTED THIS ERROR': 1, 'THIS ERROR AND': 1, 'ERROR AND ATTEMPTS': 1, 'AND ATTEMPTS HAVE': 1, 'ATTEMPTS HAVE BEEN': 1, 'HAVE BEEN MADE': 1, 'BEEN MADE HITHERTO': 1, 'MADE HITHERTO WITHOUT': 1, 'HITHERTO WITHOUT SUCCESS': 1, 'WITHOUT SUCCESS TO': 1, 'SUCCESS TO APPLY': 1, 'TO APPLY THE': 1, 'APPLY THE AMENDATORY': 1, 'THE AMENDATORY POWER': 1, 'AMENDATORY POWER OF': 1, 'POWER OF THE': 1, 'THE STATES TO': 1, 'STATES TO ITS': 1, 'TO ITS CORRECTION': 1, 'AS HOWEVER ONE': 1, 'HOWEVER ONE MODE': 1, 'ONE MODE OF': 1, 'MODE OF CORRECTION': 1, 'OF CORRECTION IS': 1, 'CORRECTION IS IN': 1, 'IN THE POWER': 1, 'POWER OF EVERY': 1, 'OF EVERY PRESIDENT': 1, 'EVERY PRESIDENT AND': 1, 'PRESIDENT AND CONSEQUENTLY': 1, 'AND CONSEQUENTLY IN': 1, 'CONSEQUENTLY IN MINE': 1, 'IN MINE IT': 1, 'MINE IT WOULD': 1, 'WOULD BE USELESS': 1, 'BE USELESS AND': 1, 'USELESS AND PERHAPS': 1, 'AND PERHAPS INVIDIOUS': 1, 'PERHAPS INVIDIOUS TO': 1, 'INVIDIOUS TO ENUMERATE': 1, 'TO ENUMERATE THE': 1, 'ENUMERATE THE EVILS': 1, 'THE EVILS OF': 1, 'EVILS OF WHICH': 1, 'OF WHICH IN': 1, 'WHICH IN THE': 1, 'IN THE OPINION': 1, 'OPINION OF MANY': 1, 'OF MANY OF': 1, 'OF OUR FELLOW-CITIZENS': 1, 'OUR FELLOW-CITIZENS THIS': 1, 'FELLOW-CITIZENS THIS ERROR': 1, 'THIS ERROR OF': 1, 'ERROR OF THE': 1, 'OF THE SAGES': 1, 'THE SAGES WHO': 1, 'SAGES WHO FRAMED': 1, 'WHO FRAMED THE': 1, 'THE CONSTITUTION MAY': 1, 'CONSTITUTION MAY HAVE': 1, 'MAY HAVE BEEN': 1, 'BEEN THE SOURCE': 1, 'THE SOURCE AND': 1, 'SOURCE AND THE': 1, 'AND THE BITTER': 1, 'THE BITTER FRUITS': 1, 'BITTER FRUITS WHICH': 1, 'FRUITS WHICH WE': 1, 'WHICH WE ARE': 1, 'WE ARE STILL': 1, 'ARE STILL TO': 1, 'STILL TO GATHER': 1, 'TO GATHER FROM': 1, 'GATHER FROM IT': 1, 'FROM IT IF': 1, 'IT IF IT': 1, 'IF IT CONTINUES': 1, 'IT CONTINUES TO': 1, 'CONTINUES TO DISFIGURE': 1, 'TO DISFIGURE OUR': 1, 'DISFIGURE OUR SYSTEM': 1, 'OBSERVED HOWEVER AS': 1, 'HOWEVER AS A': 1, 'AS A GENERAL': 1, 'A GENERAL REMARK': 1, 'GENERAL REMARK THAT': 1, 'REMARK THAT REPUBLICS': 1, 'THAT REPUBLICS CAN': 1, 'REPUBLICS CAN COMMIT': 1, 'CAN COMMIT NO': 1, 'COMMIT NO GREATER': 1, 'NO GREATER ERROR': 1, 'GREATER ERROR THAN': 1, 'ERROR THAN TO': 1, 'THAN TO ADOPT': 1, 'TO ADOPT OR': 1, 'ADOPT OR CONTINUE': 1, 'OR CONTINUE ANY': 1, 'CONTINUE ANY FEATURE': 1, 'ANY FEATURE IN': 1, 'FEATURE IN THEIR': 1, 'IN THEIR SYSTEMS': 1, 'THEIR SYSTEMS OF': 1, 'SYSTEMS OF GOVERNMENT': 1, 'OF GOVERNMENT WHICH': 1, 'GOVERNMENT WHICH MAY': 1, 'MAY BE CALCULATED': 1, 'BE CALCULATED TO': 1, 'CALCULATED TO CREATE': 1, 'TO CREATE OR': 1, 'CREATE OR INCREASE': 1, 'OR INCREASE THE': 1, 'INCREASE THE LOVER': 1, 'THE LOVER OF': 1, 'LOVER OF POWER': 1, 'BOSOMS OF THOSE': 1, 'TO WHOM NECESSITY': 1, 'WHOM NECESSITY OBLIGES': 1, 'NECESSITY OBLIGES THEM': 1, 'OBLIGES THEM TO': 1, 'THEM TO COMMIT': 1, 'TO COMMIT THE': 1, 'COMMIT THE MANAGEMENT': 1, 'MANAGEMENT OF THEIR': 1, 'THEIR AFFAIRS AND': 1, 'AFFAIRS AND SURELY': 1, 'AND SURELY NOTHING': 1, 'SURELY NOTHING IS': 1, 'NOTHING IS MORE': 1, 'IS MORE LIKELY': 1, 'TO PRODUCE SUCH': 1, 'PRODUCE SUCH A': 1, 'SUCH A STATE': 1, 'STATE OF MIND': 1, 'OF MIND THAN': 1, 'MIND THAN THE': 1, 'THAN THE LONG': 1, 'THE LONG CONTINUANCE': 1, 'LONG CONTINUANCE OF': 1, 'CONTINUANCE OF AN': 1, 'OF AN OFFICE': 1, 'AN OFFICE OF': 1, 'OFFICE OF HIGH': 1, 'OF HIGH TRUST': 1, 'NOTHING CAN BE': 1, 'CAN BE MORE': 1, 'BE MORE CORRUPTING': 1, 'MORE CORRUPTING NOTHING': 1, 'CORRUPTING NOTHING MORE': 1, 'NOTHING MORE DESTRUCTIVE': 1, 'MORE DESTRUCTIVE OF': 1, 'DESTRUCTIVE OF ALL': 1, 'OF ALL THOSE': 1, 'ALL THOSE NOBLE': 1, 'THOSE NOBLE FEELINGS': 1, 'NOBLE FEELINGS WHICH': 1, 'FEELINGS WHICH BELONG': 1, 'WHICH BELONG TO': 1, 'BELONG TO THE': 1, 'CHARACTER OF A': 1, 'OF A DEVOTED': 1, 'A DEVOTED REPUBLICAN': 1, 'DEVOTED REPUBLICAN PATRIOT': 1, 'WHEN THIS CORRUPTING': 1, 'THIS CORRUPTING PASSION': 1, 'CORRUPTING PASSION ONCE': 1, 'PASSION ONCE TAKES': 1, 'ONCE TAKES POSSESSION': 1, 'TAKES POSSESSION OF': 1, 'POSSESSION OF THE': 1, 'THE HUMAN MIND': 1, 'HUMAN MIND LIKE': 1, 'MIND LIKE THE': 1, 'LIKE THE LOVE': 1, 'LOVE OF GOLD': 1, 'OF GOLD IT': 1, 'GOLD IT BECOMES': 1, 'IT BECOMES INSATIABLE': 1, 'IS THE NEVER-DYING': 1, 'THE NEVER-DYING WORM': 1, 'NEVER-DYING WORM IN': 1, 'WORM IN HIS': 1, 'IN HIS BOSOM': 1, 'HIS BOSOM GROWS': 1, 'BOSOM GROWS WITH': 1, 'GROWS WITH HIS': 1, 'WITH HIS GROWTH': 1, 'HIS GROWTH AND': 1, 'GROWTH AND STRENGTHENS': 1, 'AND STRENGTHENS WITH': 1, 'STRENGTHENS WITH THE': 1, 'WITH THE DECLINING': 1, 'THE DECLINING YEARS': 1, 'DECLINING YEARS OF': 1, 'YEARS OF ITS': 1, 'OF ITS VICTIM': 1, 'IF THIS IS': 1, 'THIS IS TRUE': 1, 'IS TRUE IT': 1, 'TRUE IT IS': 1, 'IS THE PART': 1, 'PART OF WISDOM': 1, 'OF WISDOM FOR': 1, 'WISDOM FOR A': 1, 'FOR A REPUBLIC': 1, 'A REPUBLIC TO': 1, 'REPUBLIC TO LIMIT': 1, 'TO LIMIT THE': 1, 'LIMIT THE SERVICE': 1, 'THE SERVICE OF': 1, 'SERVICE OF THAT': 1, 'OF THAT OFFICER': 1, 'THAT OFFICER AT': 1, 'OFFICER AT LEAST': 1, 'AT LEAST TO': 1, 'LEAST TO WHOM': 1, 'TO WHOM SHE': 1, 'WHOM SHE HAS': 1, 'SHE HAS INTRUSTED': 1, 'HAS INTRUSTED THE': 1, 'INTRUSTED THE MANAGEMENT': 1, 'MANAGEMENT OF HER': 1, 'OF HER FOREIGN': 1, 'HER FOREIGN RELATIONS': 1, 'FOREIGN RELATIONS THE': 1, 'RELATIONS THE EXECUTION': 1, 'THE EXECUTION OF': 1, 'EXECUTION OF HER': 1, 'OF HER LAWS': 1, 'HER LAWS AND': 1, 'AND THE COMMAND': 1, 'THE COMMAND OF': 1, 'COMMAND OF HER': 1, 'OF HER ARMIES': 1, 'HER ARMIES AND': 1, 'ARMIES AND NAVIES': 1, 'AND NAVIES TO': 1, 'NAVIES TO A': 1, 'TO A PERIOD': 1, 'A PERIOD SO': 1, 'PERIOD SO SHORT': 1, 'SO SHORT AS': 1, 'SHORT AS TO': 1, 'AS TO PREVENT': 1, 'TO PREVENT HIS': 1, 'PREVENT HIS FORGETTING': 1, 'HIS FORGETTING THAT': 1, 'FORGETTING THAT HE': 1, 'THAT HE IS': 1, 'HE IS THE': 1, 'IS THE ACCOUNTABLE': 1, 'THE ACCOUNTABLE AGENT': 1, 'ACCOUNTABLE AGENT NOT': 1, 'AGENT NOT THE': 1, 'NOT THE PRINCIPAL': 1, 'THE PRINCIPAL THE': 1, 'PRINCIPAL THE SERVANT': 1, 'THE SERVANT NOT': 1, 'SERVANT NOT THE': 1, 'NOT THE MASTER': 1, 'UNTIL AN AMENDMENT': 1, 'AN AMENDMENT OF': 1, 'AMENDMENT OF THE': 1, 'THE CONSTITUTION CAN': 1, 'CONSTITUTION CAN BE': 1, 'BE EFFECTED PUBLIC': 1, 'EFFECTED PUBLIC OPINION': 1, 'PUBLIC OPINION MAY': 1, 'OPINION MAY SECURE': 1, 'MAY SECURE THE': 1, 'SECURE THE DESIRED': 1, 'THE DESIRED OBJECT': 1, 'I GIVE MY': 1, 'GIVE MY AID': 1, 'MY AID TO': 1, 'AID TO IT': 1, 'TO IT BY': 1, 'IT BY RENEWING': 1, 'RENEWING THE PLEDGE': 1, 'THE PLEDGE HERETOFORE': 1, 'PLEDGE HERETOFORE GIVEN': 1, 'HERETOFORE GIVEN THAT': 1, 'GIVEN THAT UNDER': 1, 'THAT UNDER NO': 1, 'UNDER NO CIRCUMSTANCES': 1, 'NO CIRCUMSTANCES WILL': 1, 'CIRCUMSTANCES WILL I': 1, 'WILL I CONSENT': 1, 'I CONSENT TO': 1, 'CONSENT TO SERVE': 1, 'TO SERVE A': 1, 'SERVE A SECOND': 1, 'BUT IF THERE': 1, 'THERE IS DANGER': 1, 'IS DANGER TO': 1, 'DANGER TO PUBLIC': 1, 'TO PUBLIC LIBERTY': 1, 'PUBLIC LIBERTY FROM': 1, 'LIBERTY FROM THE': 1, 'FROM THE ACKNOWLEDGED': 1, 'THE ACKNOWLEDGED DEFECTS': 1, 'ACKNOWLEDGED DEFECTS OF': 1, 'THE CONSTITUTION IN': 1, 'CONSTITUTION IN THE': 1, 'IN THE WANT': 1, 'THE WANT OF': 1, 'WANT OF LIMIT': 1, 'OF LIMIT TO': 1, 'LIMIT TO THE': 1, 'TO THE CONTINUANCE': 1, 'EXECUTIVE POWER IN': 1, 'IN THE SAME': 1, 'THE SAME HANDS': 1, 'SAME HANDS THERE': 1, 'HANDS THERE IS': 1, 'THERE IS I': 1, 'IS I APPREHEND': 1, 'I APPREHEND NOT': 1, 'APPREHEND NOT MUCH': 1, 'NOT MUCH LESS': 1, 'MUCH LESS FROM': 1, 'LESS FROM A': 1, 'FROM A MISCONSTRUCTION': 1, 'MISCONSTRUCTION OF THAT': 1, 'THAT INSTRUMENT AS': 1, 'INSTRUMENT AS IT': 1, 'AS IT REGARDS': 1, 'IT REGARDS THE': 1, 'REGARDS THE POWERS': 1, 'THE POWERS ACTUALLY': 1, 'POWERS ACTUALLY GIVEN': 1, 'I CAN NOT': 1, 'CAN NOT CONCEIVE': 1, 'NOT CONCEIVE THAT': 1, 'CONCEIVE THAT BY': 1, 'THAT BY A': 1, 'BY A FAIR': 1, 'A FAIR CONSTRUCTION': 1, 'FAIR CONSTRUCTION ANY': 1, 'CONSTRUCTION ANY OR': 1, 'ANY OR EITHER': 1, 'EITHER OF ITS': 1, 'ITS PROVISIONS WOULD': 1, 'PROVISIONS WOULD BE': 1, 'WOULD BE FOUND': 1, 'FOUND TO CONSTITUTE': 1, 'TO CONSTITUTE THE': 1, 'CONSTITUTE THE PRESIDENT': 1, 'THE PRESIDENT A': 1, 'PRESIDENT A PART': 1, 'THE LEGISLATIVE POWER': 1, 'IT CAN NOT': 1, 'NOT BE CLAIMED': 1, 'BE CLAIMED FROM': 1, 'CLAIMED FROM THE': 1, 'FROM THE POWER': 1, 'POWER TO RECOMMEND': 1, 'TO RECOMMEND SINCE': 1, 'RECOMMEND SINCE ALTHOUGH': 1, 'SINCE ALTHOUGH ENJOINED': 1, 'ALTHOUGH ENJOINED AS': 1, 'ENJOINED AS A': 1, 'AS A DUTY': 1, 'A DUTY UPON': 1, 'DUTY UPON HIM': 1, 'UPON HIM IT': 1, 'HIM IT IS': 1, 'IS A PRIVILEGE': 1, 'A PRIVILEGE WHICH': 1, 'PRIVILEGE WHICH HE': 1, 'WHICH HE HOLDS': 1, 'HE HOLDS IN': 1, 'HOLDS IN COMMON': 1, 'IN COMMON WITH': 1, 'COMMON WITH EVERY': 1, 'WITH EVERY OTHER': 1, 'EVERY OTHER CITIZEN': 1, 'OTHER CITIZEN AND': 1, 'CITIZEN AND ALTHOUGH': 1, 'ALTHOUGH THERE MAY': 1, 'MAY BE SOMETHING': 1, 'BE SOMETHING MORE': 1, 'SOMETHING MORE OF': 1, 'MORE OF CONFIDENCE': 1, 'OF CONFIDENCE IN': 1, 'IN THE PROPRIETY': 1, 'THE PROPRIETY OF': 1, 'PROPRIETY OF THE': 1, 'OF THE MEASURES': 1, 'THE MEASURES RECOMMENDED': 1, 'MEASURES RECOMMENDED IN': 1, 'RECOMMENDED IN THE': 1, 'IN THE ONE': 1, 'THE ONE CASE': 1, 'ONE CASE THAN': 1, 'CASE THAN IN': 1, 'THAN IN THE': 1, 'IN THE OTHER': 1, 'THE OTHER IN': 1, 'OTHER IN THE': 1, 'IN THE OBLIGATIONS': 1, 'THE OBLIGATIONS OF': 1, 'OBLIGATIONS OF ULTIMATE': 1, 'OF ULTIMATE DECISION': 1, 'ULTIMATE DECISION THERE': 1, 'DECISION THERE CAN': 1, 'THERE CAN BE': 1, 'CAN BE NO': 1, 'BE NO DIFFERENCE': 1, 'LANGUAGE OF THE': 1, 'THE CONSTITUTION ALL': 1, 'CONSTITUTION ALL THE': 1, 'ALL THE LEGISLATIVE': 1, 'THE LEGISLATIVE POWERS': 1, 'LEGISLATIVE POWERS WHICH': 1, 'POWERS WHICH IT': 1, 'WHICH IT GRANTS': 1, 'IT GRANTS ARE': 1, 'GRANTS ARE VESTED': 1, 'ARE VESTED IN': 1, 'VESTED IN THE': 1, 'IN THE CONGRESS': 1, 'THE CONGRESS OF': 1, 'CONGRESS OF THE': 1, 'UNITED STATES IT': 1, 'STATES IT WOULD': 1, 'WOULD BE A': 1, 'BE A SOLECISM': 1, 'A SOLECISM IN': 1, 'SOLECISM IN LANGUAGE': 1, 'IN LANGUAGE TO': 1, 'LANGUAGE TO SAY': 1, 'SAY THAT ANY': 1, 'THAT ANY PORTION': 1, 'ANY PORTION OF': 1, 'PORTION OF THESE': 1, 'OF THESE IS': 1, 'THESE IS NOT': 1, 'IS NOT INCLUDED': 1, 'NOT INCLUDED IN': 1, 'INCLUDED IN THE': 1, 'IN THE WHOLE': 1, 'MAY BE SAID': 1, 'BE SAID INDEED': 1, 'SAID INDEED THAT': 1, 'CONSTITUTION HAS GIVEN': 1, 'HAS GIVEN TO': 1, 'EXECUTIVE THE POWER': 1, 'POWER TO ANNUL': 1, 'TO ANNUL THE': 1, 'ANNUL THE ACTS': 1, 'LEGISLATIVE BODY BY': 1, 'BODY BY REFUSING': 1, 'BY REFUSING TO': 1, 'REFUSING TO THEM': 1, 'TO THEM HIS': 1, 'THEM HIS ASSENT': 1, 'SO A SIMILAR': 1, 'A SIMILAR POWER': 1, 'SIMILAR POWER HAS': 1, 'POWER HAS NECESSARILY': 1, 'HAS NECESSARILY RESULTED': 1, 'NECESSARILY RESULTED FROM': 1, 'RESULTED FROM THAT': 1, 'FROM THAT INSTRUMENT': 1, 'THAT INSTRUMENT TO': 1, 'INSTRUMENT TO THE': 1, 'TO THE JUDICIARY': 1, 'THE JUDICIARY AND': 1, 'JUDICIARY AND YET': 1, 'AND YET THE': 1, 'YET THE JUDICIARY': 1, 'THE JUDICIARY FORMS': 1, 'JUDICIARY FORMS NO': 1, 'FORMS NO PART': 1, 'THERE IS IT': 1, 'IS IT IS': 1, 'IT IS TRUE': 1, 'IS TRUE THIS': 1, 'TRUE THIS DIFFERENCE': 1, 'THIS DIFFERENCE BETWEEN': 1, 'DIFFERENCE BETWEEN THESE': 1, 'BETWEEN THESE GRANTS': 1, 'THESE GRANTS OF': 1, 'GRANTS OF POWER': 1, 'OF POWER THE': 1, 'POWER THE EXECUTIVE': 1, 'THE EXECUTIVE CAN': 1, 'EXECUTIVE CAN PUT': 1, 'CAN PUT HIS': 1, 'PUT HIS NEGATIVE': 1, 'HIS NEGATIVE UPON': 1, 'THE LEGISLATURE FOR': 1, 'LEGISLATURE FOR OTHER': 1, 'FOR OTHER CAUSE': 1, 'OTHER CAUSE THAN': 1, 'CAUSE THAN THAT': 1, 'THAN THAT OF': 1, 'THE CONSTITUTION WHILST': 1, 'CONSTITUTION WHILST THE': 1, 'WHILST THE JUDICIARY': 1, 'THE JUDICIARY CAN': 1, 'JUDICIARY CAN ONLY': 1, 'CAN ONLY DECLARE': 1, 'ONLY DECLARE VOID': 1, 'DECLARE VOID THOSE': 1, 'VOID THOSE WHICH': 1, 'THOSE WHICH VIOLATE': 1, 'WHICH VIOLATE THAT': 1, 'VIOLATE THAT INSTRUMENT': 1, 'BUT THE DECISION': 1, 'THE DECISION OF': 1, 'DECISION OF THE': 1, 'THE JUDICIARY IS': 1, 'JUDICIARY IS FINAL': 1, 'IS FINAL IN': 1, 'FINAL IN SUCH': 1, 'IN SUCH A': 1, 'SUCH A CASE': 1, 'A CASE WHEREAS': 1, 'CASE WHEREAS IN': 1, 'WHEREAS IN EVERY': 1, 'IN EVERY INSTANCE': 1, 'EVERY INSTANCE WHERE': 1, 'INSTANCE WHERE THE': 1, 'WHERE THE VETO': 1, 'THE VETO OF': 1, 'VETO OF THE': 1, 'THE EXECUTIVE IS': 1, 'EXECUTIVE IS APPLIED': 1, 'IS APPLIED IT': 1, 'APPLIED IT MAY': 1, 'MAY BE OVERCOME': 1, 'BE OVERCOME BY': 1, 'OVERCOME BY A': 1, 'BY A VOTE': 1, 'A VOTE OF': 1, 'VOTE OF TWO-THIRDS': 1, 'OF TWO-THIRDS OF': 1, 'TWO-THIRDS OF BOTH': 1, 'OF BOTH HOUSES': 1, 'THE NEGATIVE UPON': 1, 'THE LEGISLATIVE BY': 1, 'LEGISLATIVE BY THE': 1, 'THE EXECUTIVE AUTHORITY': 1, 'EXECUTIVE AUTHORITY AND': 1, 'AUTHORITY AND THAT': 1, 'AND THAT IN': 1, 'HANDS OF ONE': 1, 'OF ONE INDIVIDUAL': 1, 'ONE INDIVIDUAL WOULD': 1, 'INDIVIDUAL WOULD SEEM': 1, 'WOULD SEEM TO': 1, 'TO BE AN': 1, 'BE AN INCONGRUITY': 1, 'AN INCONGRUITY IN': 1, 'INCONGRUITY IN OUR': 1, 'LIKE SOME OTHERS': 1, 'SOME OTHERS OF': 1, 'OTHERS OF A': 1, 'OF A SIMILAR': 1, 'A SIMILAR CHARACTER': 1, 'SIMILAR CHARACTER HOWEVER': 1, 'CHARACTER HOWEVER IT': 1, 'HOWEVER IT APPEARS': 1, 'IT APPEARS TO': 1, 'APPEARS TO BE': 1, 'TO BE HIGHLY': 1, 'BE HIGHLY EXPEDIENT': 1, 'HIGHLY EXPEDIENT AND': 1, 'EXPEDIENT AND IF': 1, 'AND IF USED': 1, 'IF USED ONLY': 1, 'USED ONLY WITH': 1, 'ONLY WITH THE': 1, 'WITH THE FORBEARANCE': 1, 'THE FORBEARANCE AND': 1, 'FORBEARANCE AND IN': 1, 'AND IN THE': 1, 'IN THE SPIRIT': 1, 'THE SPIRIT WHICH': 1, 'SPIRIT WHICH WAS': 1, 'WHICH WAS INTENDED': 1, 'WAS INTENDED BY': 1, 'INTENDED BY ITS': 1, 'BY ITS AUTHORS': 1, 'ITS AUTHORS IT': 1, 'AUTHORS IT MAY': 1, 'MAY BE PRODUCTIVE': 1, 'BE PRODUCTIVE OF': 1, 'PRODUCTIVE OF GREAT': 1, 'OF GREAT GOOD': 1, 'GREAT GOOD AND': 1, 'GOOD AND BE': 1, 'AND BE FOUND': 1, 'BE FOUND ONE': 1, 'FOUND ONE OF': 1, 'OF THE BEST': 1, 'THE BEST SAFEGUARDS': 1, 'BEST SAFEGUARDS TO': 1, 'SAFEGUARDS TO THE': 1, 'TO THE UNION': 1, 'AT THE PERIOD': 1, 'THE PERIOD OF': 1, 'PERIOD OF THE': 1, 'OF THE FORMATION': 1, 'THE FORMATION OF': 1, 'FORMATION OF THE': 1, 'CONSTITUTION THE PRINCIPLE': 1, 'THE PRINCIPLE DOES': 1, 'PRINCIPLE DOES NOT': 1, 'TO HAVE ENJOYED': 1, 'HAVE ENJOYED MUCH': 1, 'ENJOYED MUCH FAVOR': 1, 'MUCH FAVOR IN': 1, 'FAVOR IN THE': 1, 'IN THE STATE': 1, 'IT EXISTED BUT': 1, 'EXISTED BUT IN': 1, 'BUT IN TWO': 1, 'IN TWO AND': 1, 'TWO AND IN': 1, 'AND IN ONE': 1, 'ONE OF THESE': 1, 'OF THESE THERE': 1, 'THESE THERE WAS': 1, 'THERE WAS A': 1, 'WAS A PLURAL': 1, 'A PLURAL EXECUTIVE': 1, 'WE WOULD SEARCH': 1, 'WOULD SEARCH FOR': 1, 'SEARCH FOR THE': 1, 'FOR THE MOTIVES': 1, 'THE MOTIVES WHICH': 1, 'MOTIVES WHICH OPERATED': 1, 'WHICH OPERATED UPON': 1, 'OPERATED UPON THE': 1, 'UPON THE PURELY': 1, 'THE PURELY PATRIOTIC': 1, 'PURELY PATRIOTIC AND': 1, 'PATRIOTIC AND ENLIGHTENED': 1, 'AND ENLIGHTENED ASSEMBLY': 1, 'ENLIGHTENED ASSEMBLY WHICH': 1, 'ASSEMBLY WHICH FRAMED': 1, 'WHICH FRAMED THE': 1, 'THE CONSTITUTION FOR': 1, 'CONSTITUTION FOR THE': 1, 'ADOPTION OF A': 1, 'OF A PROVISION': 1, 'A PROVISION SO': 1, 'PROVISION SO APPARENTLY': 1, 'SO APPARENTLY REPUGNANT': 1, 'APPARENTLY REPUGNANT TO': 1, 'REPUGNANT TO THE': 1, 'TO THE LEADING': 1, 'THE LEADING DEMOCRATIC': 1, 'LEADING DEMOCRATIC PRINCIPLE': 1, 'DEMOCRATIC PRINCIPLE THAT': 1, 'PRINCIPLE THAT THE': 1, 'THAT THE MAJORITY': 1, 'THE MAJORITY SHOULD': 1, 'MAJORITY SHOULD GOVERN': 1, 'SHOULD GOVERN WE': 1, 'GOVERN WE MUST': 1, 'WE MUST REJECT': 1, 'MUST REJECT THE': 1, 'REJECT THE IDEA': 1, 'THE IDEA THAT': 1, 'IDEA THAT THEY': 1, 'THAT THEY ANTICIPATED': 1, 'THEY ANTICIPATED FROM': 1, 'ANTICIPATED FROM IT': 1, 'FROM IT ANY': 1, 'IT ANY BENEFIT': 1, 'ANY BENEFIT TO': 1, 'BENEFIT TO THE': 1, 'TO THE ORDINARY': 1, 'THE ORDINARY COURSE': 1, 'ORDINARY COURSE OF': 1, 'COURSE OF LEGISLATION': 1, 'THEY KNEW TOO': 1, 'KNEW TOO WELL': 1, 'TOO WELL THE': 1, 'WELL THE HIGH': 1, 'THE HIGH DEGREE': 1, 'HIGH DEGREE OF': 1, 'DEGREE OF INTELLIGENCE': 1, 'OF INTELLIGENCE WHICH': 1, 'INTELLIGENCE WHICH EXISTED': 1, 'WHICH EXISTED AMONG': 1, 'EXISTED AMONG THE': 1, 'AMONG THE PEOPLE': 1, 'THE PEOPLE AND': 1, 'AND THE ENLIGHTENED': 1, 'THE ENLIGHTENED CHARACTER': 1, 'ENLIGHTENED CHARACTER OF': 1, 'THE STATE LEGISLATURES': 1, 'STATE LEGISLATURES NOT': 1, 'LEGISLATURES NOT TO': 1, 'TO HAVE THE': 1, 'HAVE THE FULLEST': 1, 'THE FULLEST CONFIDENCE': 1, 'FULLEST CONFIDENCE THAT': 1, 'CONFIDENCE THAT THE': 1, 'THAT THE TWO': 1, 'THE TWO BODIES': 1, 'TWO BODIES ELECTED': 1, 'BODIES ELECTED BY': 1, 'ELECTED BY THEM': 1, 'BY THEM WOULD': 1, 'THEM WOULD BE': 1, 'WOULD BE WORTHY': 1, 'BE WORTHY REPRESENTATIVES': 1, 'WORTHY REPRESENTATIVES OF': 1, 'REPRESENTATIVES OF SUCH': 1, 'OF SUCH CONSTITUENTS': 1, 'SUCH CONSTITUENTS AND': 1, 'CONSTITUENTS AND OF': 1, 'AND OF COURSE': 1, 'OF COURSE THAT': 1, 'COURSE THAT THEY': 1, 'THAT THEY WOULD': 1, 'THEY WOULD REQUIRE': 1, 'WOULD REQUIRE NO': 1, 'REQUIRE NO AID': 1, 'NO AID IN': 1, 'AID IN CONCEIVING': 1, 'IN CONCEIVING AND': 1, 'CONCEIVING AND MATURING': 1, 'AND MATURING THE': 1, 'MATURING THE MEASURES': 1, 'THE MEASURES WHICH': 1, 'MEASURES WHICH THE': 1, 'WHICH THE CIRCUMSTANCES': 1, 'THE COUNTRY MIGHT': 1, 'COUNTRY MIGHT REQUIRE': 1, 'IT IS PREPOSTEROUS': 1, 'IS PREPOSTEROUS TO': 1, 'PREPOSTEROUS TO SUPPOSE': 1, 'TO SUPPOSE THAT': 1, 'SUPPOSE THAT A': 1, 'THAT A THOUGHT': 1, 'A THOUGHT COULD': 1, 'THOUGHT COULD FOR': 1, 'COULD FOR A': 1, 'FOR A MOMENT': 1, 'A MOMENT HAVE': 1, 'MOMENT HAVE BEEN': 1, 'HAVE BEEN ENTERTAINED': 1, 'BEEN ENTERTAINED THAT': 1, 'ENTERTAINED THAT THE': 1, 'THAT THE PRESIDENT': 1, 'THE PRESIDENT PLACED': 1, 'PRESIDENT PLACED AT': 1, 'PLACED AT THE': 1, 'AT THE CAPITAL': 1, 'THE CAPITAL IN': 1, 'CAPITAL IN THE': 1, 'IN THE CENTER': 1, 'THE CENTER OF': 1, 'CENTER OF THE': 1, 'THE COUNTRY COULD': 1, 'COUNTRY COULD BETTER': 1, 'COULD BETTER UNDERSTAND': 1, 'BETTER UNDERSTAND THE': 1, 'UNDERSTAND THE WANTS': 1, 'THE WANTS AND': 1, 'WANTS AND WISHES': 1, 'AND WISHES OF': 1, 'WISHES OF THE': 1, 'THE PEOPLE THAN': 1, 'PEOPLE THAN THEIR': 1, 'THAN THEIR OWN': 1, 'THEIR OWN IMMEDIATE': 1, 'OWN IMMEDIATE REPRESENTATIVES': 1, 'IMMEDIATE REPRESENTATIVES WHO': 1, 'REPRESENTATIVES WHO SPEND': 1, 'WHO SPEND A': 1, 'SPEND A PART': 1, 'PART OF EVERY': 1, 'OF EVERY YEAR': 1, 'EVERY YEAR AMONG': 1, 'YEAR AMONG THEM': 1, 'AMONG THEM LIVING': 1, 'THEM LIVING WITH': 1, 'LIVING WITH THEM': 1, 'WITH THEM OFTEN': 1, 'THEM OFTEN LABORING': 1, 'OFTEN LABORING WITH': 1, 'LABORING WITH THEM': 1, 'WITH THEM AND': 1, 'THEM AND BOUND': 1, 'AND BOUND TO': 1, 'BOUND TO THEM': 1, 'BY THE TRIPLE': 1, 'THE TRIPLE TIE': 1, 'TRIPLE TIE OF': 1, 'OF INTEREST DUTY': 1, 'INTEREST DUTY AND': 1, 'DUTY AND AFFECTION': 1, 'TO ASSIST OR': 1, 'ASSIST OR CONTROL': 1, 'OR CONTROL CONGRESS': 1, 'CONTROL CONGRESS THEN': 1, 'CONGRESS THEN IN': 1, 'THEN IN ITS': 1, 'IN ITS ORDINARY': 1, 'ITS ORDINARY LEGISLATION': 1, 'ORDINARY LEGISLATION COULD': 1, 'LEGISLATION COULD NOT': 1, 'COULD NOT I': 1, 'NOT I CONCEIVE': 1, 'I CONCEIVE HAVE': 1, 'CONCEIVE HAVE BEEN': 1, 'BEEN THE MOTIVE': 1, 'THE MOTIVE FOR': 1, 'MOTIVE FOR CONFERRING': 1, 'FOR CONFERRING THE': 1, 'CONFERRING THE VETO': 1, 'VETO POWER ON': 1, 'POWER ON THE': 1, 'ON THE PRESIDENT': 1, 'THIS ARGUMENT ACQUIRES': 1, 'ARGUMENT ACQUIRES ADDITIONAL': 1, 'ACQUIRES ADDITIONAL FORCE': 1, 'ADDITIONAL FORCE FROM': 1, 'FORCE FROM THE': 1, 'FROM THE FACT': 1, 'THE FACT OF': 1, 'FACT OF ITS': 1, 'OF ITS NEVER': 1, 'ITS NEVER HAVING': 1, 'NEVER HAVING BEEN': 1, 'HAVING BEEN THUS': 1, 'BEEN THUS USED': 1, 'THUS USED BY': 1, 'USED BY THE': 1, 'BY THE FIRST': 1, 'THE FIRST SIX': 1, 'FIRST SIX PRESIDENTS--AND': 1, 'SIX PRESIDENTS--AND TWO': 1, 'PRESIDENTS--AND TWO OF': 1, 'TWO OF THEM': 1, 'OF THEM WERE': 1, 'THEM WERE MEMBERS': 1, 'WERE MEMBERS OF': 1, 'MEMBERS OF THE': 1, 'THE CONVENTION ONE': 1, 'CONVENTION ONE PRESIDING': 1, 'ONE PRESIDING OVER': 1, 'PRESIDING OVER ITS': 1, 'OVER ITS DELIBERATIONS': 1, 'ITS DELIBERATIONS AND': 1, 'DELIBERATIONS AND THE': 1, 'AND THE OTHER': 1, 'THE OTHER BEARING': 1, 'OTHER BEARING A': 1, 'BEARING A LARGER': 1, 'A LARGER SHARE': 1, 'LARGER SHARE IN': 1, 'SHARE IN CONSUMMATING': 1, 'IN CONSUMMATING THE': 1, 'CONSUMMATING THE LABORS': 1, 'LABORS OF THAT': 1, 'OF THAT AUGUST': 1, 'THAT AUGUST BODY': 1, 'AUGUST BODY THAN': 1, 'BODY THAN ANY': 1, 'ANY OTHER PERSON': 1, 'BUT IF BILLS': 1, 'IF BILLS WERE': 1, 'BILLS WERE NEVER': 1, 'WERE NEVER RETURNED': 1, 'NEVER RETURNED TO': 1, 'RETURNED TO CONGRESS': 1, 'TO CONGRESS BY': 1, 'CONGRESS BY EITHER': 1, 'BY EITHER OF': 1, 'EITHER OF THE': 1, 'OF THE PRESIDENTS': 1, 'THE PRESIDENTS ABOVE': 1, 'PRESIDENTS ABOVE REFERRED': 1, 'ABOVE REFERRED TO': 1, 'REFERRED TO UPON': 1, 'TO UPON THE': 1, 'UPON THE GROUND': 1, 'THE GROUND OF': 1, 'GROUND OF THEIR': 1, 'OF THEIR BEING': 1, 'THEIR BEING INEXPEDIENT': 1, 'BEING INEXPEDIENT OR': 1, 'INEXPEDIENT OR NOT': 1, 'OR NOT AS': 1, 'NOT AS WELL': 1, 'AS WELL ADAPTED': 1, 'WELL ADAPTED AS': 1, 'ADAPTED AS THEY': 1, 'AS THEY MIGHT': 1, 'THEY MIGHT BE': 1, 'MIGHT BE TO': 1, 'BE TO THE': 1, 'TO THE WANTS': 1, 'THE WANTS OF': 1, 'WANTS OF THE': 1, 'THE PEOPLE THE': 1, 'PEOPLE THE VETO': 1, 'THE VETO WAS': 1, 'VETO WAS APPLIED': 1, 'WAS APPLIED UPON': 1, 'APPLIED UPON THAT': 1, 'UPON THAT OF': 1, 'THE CONSTITUTION OR': 1, 'CONSTITUTION OR BECAUSE': 1, 'OR BECAUSE ERRORS': 1, 'BECAUSE ERRORS HAD': 1, 'ERRORS HAD BEEN': 1, 'BEEN COMMITTED FROM': 1, 'COMMITTED FROM A': 1, 'FROM A TOO': 1, 'A TOO HASTY': 1, 'TOO HASTY ENACTMENT': 1, 'THERE IS ANOTHER': 1, 'IS ANOTHER GROUND': 1, 'ANOTHER GROUND FOR': 1, 'GROUND FOR THE': 1, 'OF THE VETO': 1, 'THE VETO PRINCIPLE': 1, 'VETO PRINCIPLE WHICH': 1, 'PRINCIPLE WHICH HAD': 1, 'WHICH HAD PROBABLY': 1, 'HAD PROBABLY MORE': 1, 'PROBABLY MORE INFLUENCE': 1, 'MORE INFLUENCE IN': 1, 'INFLUENCE IN RECOMMENDING': 1, 'IN RECOMMENDING IT': 1, 'RECOMMENDING IT TO': 1, 'IT TO THE': 1, 'THE CONVENTION THAN': 1, 'CONVENTION THAN ANY': 1, 'I REFER TO': 1, 'REFER TO THE': 1, 'THE SECURITY WHICH': 1, 'SECURITY WHICH IT': 1, 'WHICH IT GIVES': 1, 'IT GIVES TO': 1, 'GIVES TO THE': 1, 'TO THE JUST': 1, 'THE JUST AND': 1, 'JUST AND EQUITABLE': 1, 'AND EQUITABLE ACTION': 1, 'EQUITABLE ACTION OF': 1, 'ACTION OF THE': 1, 'THE LEGISLATURE UPON': 1, 'LEGISLATURE UPON ALL': 1, 'UPON ALL PARTS': 1, 'ALL PARTS OF': 1, 'PARTS OF THE': 1, 'IT COULD NOT': 1, 'COULD NOT BUT': 1, 'NOT BUT HAVE': 1, 'BUT HAVE OCCURRED': 1, 'HAVE OCCURRED TO': 1, 'OCCURRED TO THE': 1, 'THE CONVENTION THAT': 1, 'CONVENTION THAT IN': 1, 'THAT IN A': 1, 'IN A COUNTRY': 1, 'A COUNTRY SO': 1, 'COUNTRY SO EXTENSIVE': 1, 'SO EXTENSIVE EMBRACING': 1, 'EXTENSIVE EMBRACING SO': 1, 'EMBRACING SO GREAT': 1, 'SO GREAT A': 1, 'GREAT A VARIETY': 1, 'A VARIETY OF': 1, 'VARIETY OF SOIL': 1, 'OF SOIL AND': 1, 'SOIL AND CLIMATE': 1, 'AND CLIMATE AND': 1, 'CLIMATE AND CONSEQUENTLY': 1, 'AND CONSEQUENTLY OF': 1, 'CONSEQUENTLY OF PRODUCTS': 1, 'OF PRODUCTS AND': 1, 'PRODUCTS AND WHICH': 1, 'AND WHICH FROM': 1, 'WHICH FROM THE': 1, 'FROM THE SAME': 1, 'SAME CAUSES MUST': 1, 'CAUSES MUST EVER': 1, 'MUST EVER EXHIBIT': 1, 'EVER EXHIBIT A': 1, 'EXHIBIT A GREAT': 1, 'A GREAT DIFFERENCE': 1, 'GREAT DIFFERENCE IN': 1, 'DIFFERENCE IN THE': 1, 'IN THE AMOUNT': 1, 'AMOUNT OF THE': 1, 'OF THE POPULATION': 1, 'THE POPULATION OF': 1, 'POPULATION OF ITS': 1, 'OF ITS VARIOUS': 1, 'ITS VARIOUS SECTIONS': 1, 'VARIOUS SECTIONS CALLING': 1, 'SECTIONS CALLING FOR': 1, 'CALLING FOR A': 1, 'FOR A GREAT': 1, 'A GREAT DIVERSITY': 1, 'GREAT DIVERSITY IN': 1, 'DIVERSITY IN THE': 1, 'IN THE EMPLOYMENTS': 1, 'THE EMPLOYMENTS OF': 1, 'EMPLOYMENTS OF THE': 1, 'THE PEOPLE THAT': 1, 'PEOPLE THAT THE': 1, 'THAT THE LEGISLATION': 1, 'LEGISLATION OF THE': 1, 'OF THE MAJORITY': 1, 'THE MAJORITY MIGHT': 1, 'MAJORITY MIGHT NOT': 1, 'MIGHT NOT ALWAYS': 1, 'NOT ALWAYS JUSTLY': 1, 'ALWAYS JUSTLY REGARD': 1, 'JUSTLY REGARD THE': 1, 'REGARD THE RIGHTS': 1, 'THE RIGHTS AND': 1, 'RIGHTS AND INTERESTS': 1, 'AND INTERESTS OF': 1, 'OF THE MINORITY': 1, 'THE MINORITY AND': 1, 'MINORITY AND THAT': 1, 'AND THAT ACTS': 1, 'THAT ACTS OF': 1, 'ACTS OF THIS': 1, 'OF THIS CHARACTER': 1, 'THIS CHARACTER MIGHT': 1, 'CHARACTER MIGHT BE': 1, 'MIGHT BE PASSED': 1, 'BE PASSED UNDER': 1, 'PASSED UNDER AN': 1, 'UNDER AN EXPRESS': 1, 'EXPRESS GRANT BY': 1, 'GRANT BY THE': 1, 'BY THE WORDS': 1, 'THE WORDS OF': 1, 'WORDS OF THE': 1, 'CONSTITUTION AND THEREFORE': 1, 'AND THEREFORE NOT': 1, 'THEREFORE NOT WITHIN': 1, 'NOT WITHIN THE': 1, 'WITHIN THE COMPETENCY': 1, 'THE COMPETENCY OF': 1, 'COMPETENCY OF THE': 1, 'THE JUDICIARY TO': 1, 'JUDICIARY TO DECLARE': 1, 'TO DECLARE VOID': 1, 'DECLARE VOID THAT': 1, 'VOID THAT HOWEVER': 1, 'THAT HOWEVER ENLIGHTENED': 1, 'HOWEVER ENLIGHTENED AND': 1, 'ENLIGHTENED AND PATRIOTIC': 1, 'AND PATRIOTIC THEY': 1, 'PATRIOTIC THEY MIGHT': 1, 'THEY MIGHT SUPPOSE': 1, 'MIGHT SUPPOSE FROM': 1, 'SUPPOSE FROM PAST': 1, 'FROM PAST EXPERIENCE': 1, 'PAST EXPERIENCE THE': 1, 'EXPERIENCE THE MEMBERS': 1, 'THE MEMBERS OF': 1, 'MEMBERS OF CONGRESS': 1, 'OF CONGRESS MIGHT': 1, 'CONGRESS MIGHT BE': 1, 'MIGHT BE AND': 1, 'BE AND HOWEVER': 1, 'AND HOWEVER LARGELY': 1, 'HOWEVER LARGELY PARTAKING': 1, 'LARGELY PARTAKING IN': 1, 'PARTAKING IN THE': 1, 'IN THE GENERAL': 1, 'THE GENERAL OF': 1, 'GENERAL OF THE': 1, 'OF THE LIBERAL': 1, 'THE LIBERAL FEELINGS': 1, 'LIBERAL FEELINGS OF': 1, 'FEELINGS OF THE': 1, 'THE PEOPLE IT': 1, 'PEOPLE IT WAS': 1, 'IT WAS IMPOSSIBLE': 1, 'WAS IMPOSSIBLE TO': 1, 'IMPOSSIBLE TO EXPECT': 1, 'TO EXPECT THAT': 1, 'EXPECT THAT BODIES': 1, 'THAT BODIES SO': 1, 'BODIES SO CONSTITUTED': 1, 'SO CONSTITUTED SHOULD': 1, 'CONSTITUTED SHOULD NOT': 1, 'SHOULD NOT SOMETIMES': 1, 'NOT SOMETIMES BE': 1, 'SOMETIMES BE CONTROLLED': 1, 'BE CONTROLLED BY': 1, 'CONTROLLED BY LOCAL': 1, 'BY LOCAL INTERESTS': 1, 'LOCAL INTERESTS AND': 1, 'INTERESTS AND SECTIONAL': 1, 'AND SECTIONAL FEELINGS': 1, 'IT WAS PROPER': 1, 'WAS PROPER THEREFORE': 1, 'PROPER THEREFORE TO': 1, 'THEREFORE TO PROVIDE': 1, 'TO PROVIDE SOME': 1, 'PROVIDE SOME UMPIRE': 1, 'SOME UMPIRE FROM': 1, 'UMPIRE FROM WHOSE': 1, 'FROM WHOSE SITUATION': 1, 'WHOSE SITUATION AND': 1, 'SITUATION AND MODE': 1, 'AND MODE OF': 1, 'MODE OF APPOINTMENT': 1, 'OF APPOINTMENT MORE': 1, 'APPOINTMENT MORE INDEPENDENCE': 1, 'MORE INDEPENDENCE AND': 1, 'INDEPENDENCE AND FREEDOM': 1, 'AND FREEDOM FROM': 1, 'FREEDOM FROM SUCH': 1, 'FROM SUCH INFLUENCES': 1, 'SUCH INFLUENCES MIGHT': 1, 'INFLUENCES MIGHT BE': 1, 'MIGHT BE EXPECTED': 1, 'SUCH A ONE': 1, 'A ONE WAS': 1, 'ONE WAS AFFORDED': 1, 'WAS AFFORDED BY': 1, 'AFFORDED BY THE': 1, 'EXECUTIVE DEPARTMENT CONSTITUTED': 1, 'DEPARTMENT CONSTITUTED BY': 1, 'A PERSON ELECTED': 1, 'PERSON ELECTED TO': 1, 'ELECTED TO THAT': 1, 'TO THAT HIGH': 1, 'HIGH OFFICE HAVING': 1, 'OFFICE HAVING HIS': 1, 'HAVING HIS CONSTITUENTS': 1, 'HIS CONSTITUENTS IN': 1, 'CONSTITUENTS IN EVERY': 1, 'IN EVERY SECTION': 1, 'EVERY SECTION STATE': 1, 'SECTION STATE AND': 1, 'STATE AND SUBDIVISION': 1, 'AND SUBDIVISION OF': 1, 'SUBDIVISION OF THE': 1, 'THE UNION MUST': 1, 'UNION MUST CONSIDER': 1, 'MUST CONSIDER HIMSELF': 1, 'CONSIDER HIMSELF BOUND': 1, 'HIMSELF BOUND BY': 1, 'BOUND BY THE': 1, 'BY THE MOST': 1, 'THE MOST SOLEMN': 1, 'MOST SOLEMN SANCTIONS': 1, 'SOLEMN SANCTIONS TO': 1, 'SANCTIONS TO GUARD': 1, 'TO GUARD PROTECT': 1, 'GUARD PROTECT AND': 1, 'PROTECT AND DEFEND': 1, 'AND DEFEND THE': 1, 'DEFEND THE RIGHTS': 1, 'RIGHTS OF ALL': 1, 'OF ALL AND': 1, 'ALL AND OF': 1, 'AND OF EVERY': 1, 'OF EVERY PORTION': 1, 'EVERY PORTION GREAT': 1, 'PORTION GREAT OR': 1, 'GREAT OR SMALL': 1, 'OR SMALL FROM': 1, 'SMALL FROM THE': 1, 'FROM THE INJUSTICE': 1, 'THE INJUSTICE AND': 1, 'INJUSTICE AND OPPRESSION': 1, 'AND OPPRESSION OF': 1, 'OPPRESSION OF THE': 1, 'OF THE REST': 1, 'I CONSIDER THE': 1, 'CONSIDER THE VETO': 1, 'VETO POWER THEREFORE': 1, 'POWER THEREFORE GIVEN': 1, 'THEREFORE GIVEN BY': 1, 'GIVEN BY THE': 1, 'THE CONSTITUTION TO': 1, 'CONSTITUTION TO THE': 1, 'THE EXECUTIVE OF': 1, 'EXECUTIVE OF THE': 1, 'UNITED STATES SOLELY': 1, 'STATES SOLELY AS': 1, 'SOLELY AS A': 1, 'AS A CONSERVATIVE': 1, 'A CONSERVATIVE POWER': 1, 'CONSERVATIVE POWER TO': 1, 'TO BE USED': 1, 'BE USED ONLY': 1, 'USED ONLY FIRST': 1, 'ONLY FIRST TO': 1, 'FIRST TO PROTECT': 1, 'TO PROTECT THE': 1, 'PROTECT THE CONSTITUTION': 1, 'THE CONSTITUTION FROM': 1, 'CONSTITUTION FROM VIOLATION': 1, 'FROM VIOLATION SECONDLY': 1, 'VIOLATION SECONDLY THE': 1, 'SECONDLY THE PEOPLE': 1, 'THE PEOPLE FROM': 1, 'PEOPLE FROM THE': 1, 'FROM THE EFFECTS': 1, 'EFFECTS OF HASTY': 1, 'OF HASTY LEGISLATION': 1, 'HASTY LEGISLATION WHERE': 1, 'LEGISLATION WHERE THEIR': 1, 'WHERE THEIR WILL': 1, 'THEIR WILL HAS': 1, 'WILL HAS BEEN': 1, 'HAS BEEN PROBABLY': 1, 'BEEN PROBABLY DISREGARDED': 1, 'PROBABLY DISREGARDED OR': 1, 'DISREGARDED OR NOT': 1, 'OR NOT WELL': 1, 'NOT WELL UNDERSTOOD': 1, 'WELL UNDERSTOOD AND': 1, 'UNDERSTOOD AND THIRDLY': 1, 'AND THIRDLY TO': 1, 'THIRDLY TO PREVENT': 1, 'PREVENT THE EFFECTS': 1, 'EFFECTS OF COMBINATIONS': 1, 'OF COMBINATIONS VIOLATIVE': 1, 'COMBINATIONS VIOLATIVE OF': 1, 'VIOLATIVE OF THE': 1, 'OF THE RIGHTS': 1, 'RIGHTS OF MINORITIES': 1, 'IN REFERENCE TO': 1, 'REFERENCE TO THE': 1, 'TO THE SECOND': 1, 'THE SECOND OF': 1, 'SECOND OF THESE': 1, 'OF THESE OBJECTS': 1, 'THESE OBJECTS I': 1, 'OBJECTS I MAY': 1, 'I MAY OBSERVE': 1, 'MAY OBSERVE THAT': 1, 'OBSERVE THAT I': 1, 'THAT I CONSIDER': 1, 'I CONSIDER IT': 1, 'CONSIDER IT THE': 1, 'IT THE RIGHT': 1, 'THE RIGHT AND': 1, 'RIGHT AND PRIVILEGE': 1, 'AND PRIVILEGE OF': 1, 'PRIVILEGE OF THE': 1, 'PEOPLE TO DECIDE': 1, 'TO DECIDE DISPUTED': 1, 'DECIDE DISPUTED POINTS': 1, 'DISPUTED POINTS OF': 1, 'POINTS OF THE': 1, 'THE CONSTITUTION ARISING': 1, 'CONSTITUTION ARISING FROM': 1, 'ARISING FROM THE': 1, 'FROM THE GENERAL': 1, 'THE GENERAL GRANT': 1, 'GENERAL GRANT OF': 1, 'POWER TO CONGRESS': 1, 'TO CONGRESS TO': 1, 'CONGRESS TO CARRY': 1, 'EFFECT THE POWERS': 1, 'THE POWERS EXPRESSLY': 1, 'POWERS EXPRESSLY GIVEN': 1, 'EXPRESSLY GIVEN AND': 1, 'GIVEN AND I': 1, 'AND I BELIEVE': 1, 'I BELIEVE WITH': 1, 'BELIEVE WITH MR': 1, 'MADISON THAT REPEATED': 1, 'THAT REPEATED RECOGNITIONS': 1, 'REPEATED RECOGNITIONS UNDER': 1, 'RECOGNITIONS UNDER VARIED': 1, 'UNDER VARIED CIRCUMSTANCES': 1, 'VARIED CIRCUMSTANCES IN': 1, 'CIRCUMSTANCES IN ACTS': 1, 'IN ACTS OF': 1, 'THE LEGISLATIVE EXECUTIVE': 1, 'LEGISLATIVE EXECUTIVE AND': 1, 'EXECUTIVE AND JUDICIAL': 1, 'AND JUDICIAL BRANCHES': 1, 'JUDICIAL BRANCHES OF': 1, 'BRANCHES OF THE': 1, 'THE GOVERNMENT ACCOMPANIED': 1, 'GOVERNMENT ACCOMPANIED BY': 1, 'ACCOMPANIED BY INDICATIONS': 1, 'BY INDICATIONS IN': 1, 'INDICATIONS IN DIFFERENT': 1, 'IN DIFFERENT MODES': 1, 'DIFFERENT MODES OF': 1, 'MODES OF THE': 1, 'OF THE CONCURRENCE': 1, 'THE CONCURRENCE OF': 1, 'CONCURRENCE OF THE': 1, 'THE GENERAL WILL': 1, 'GENERAL WILL OF': 1, 'WILL OF THE': 1, 'THE NATION AS': 1, 'NATION AS AFFORDING': 1, 'AS AFFORDING TO': 1, 'AFFORDING TO THE': 1, 'TO THE PRESIDENT': 1, 'THE PRESIDENT SUFFICIENT': 1, 'PRESIDENT SUFFICIENT AUTHORITY': 1, 'SUFFICIENT AUTHORITY FOR': 1, 'AUTHORITY FOR HIS': 1, 'FOR HIS CONSIDERING': 1, 'HIS CONSIDERING SUCH': 1, 'CONSIDERING SUCH DISPUTED': 1, 'SUCH DISPUTED POINTS': 1, 'DISPUTED POINTS AS': 1, 'POINTS AS SETTLED': 1, 'UPWARD OF HALF': 1, 'OF HALF A': 1, 'HALF A CENTURY': 1, 'A CENTURY HAS': 1, 'CENTURY HAS ELAPSED': 1, 'HAS ELAPSED SINCE': 1, 'ELAPSED SINCE THE': 1, 'SINCE THE ADOPTION': 1, 'OF THE PRESENT': 1, 'THE PRESENT FORM': 1, 'PRESENT FORM OF': 1, 'FORM OF GOVERNMENT': 1, 'WOULD BE AN': 1, 'BE AN OBJECT': 1, 'AN OBJECT MORE': 1, 'OBJECT MORE HIGHLY': 1, 'MORE HIGHLY DESIRABLE': 1, 'HIGHLY DESIRABLE THAN': 1, 'DESIRABLE THAN THE': 1, 'THAN THE GRATIFICATION': 1, 'THE GRATIFICATION OF': 1, 'GRATIFICATION OF THE': 1, 'OF THE CURIOSITY': 1, 'THE CURIOSITY OF': 1, 'CURIOSITY OF SPECULATIVE': 1, 'OF SPECULATIVE STATESMEN': 1, 'SPECULATIVE STATESMEN IF': 1, 'STATESMEN IF ITS': 1, 'IF ITS PRECISE': 1, 'ITS PRECISE SITUATION': 1, 'PRECISE SITUATION COULD': 1, 'SITUATION COULD BE': 1, 'COULD BE ASCERTAINED': 1, 'BE ASCERTAINED A': 1, 'ASCERTAINED A FAIR': 1, 'A FAIR EXHIBIT': 1, 'FAIR EXHIBIT MADE': 1, 'EXHIBIT MADE OF': 1, 'OF THE OPERATIONS': 1, 'THE OPERATIONS OF': 1, 'OPERATIONS OF EACH': 1, 'EACH OF ITS': 1, 'OF ITS DEPARTMENTS': 1, 'ITS DEPARTMENTS OF': 1, 'RESPECTIVELY CLAIM AND': 1, 'CLAIM AND EXERCISE': 1, 'AND EXERCISE OF': 1, 'OF THE COLLISIONS': 1, 'THE COLLISIONS WHICH': 1, 'COLLISIONS WHICH HAVE': 1, 'WHICH HAVE OCCURRED': 1, 'HAVE OCCURRED BETWEEN': 1, 'OCCURRED BETWEEN THEM': 1, 'BETWEEN THEM OR': 1, 'THEM OR BETWEEN': 1, 'OR BETWEEN THE': 1, 'BETWEEN THE WHOLE': 1, 'THE WHOLE GOVERNMENT': 1, 'WHOLE GOVERNMENT AND': 1, 'GOVERNMENT AND THOSE': 1, 'AND THOSE OF': 1, 'THE STATES OR': 1, 'STATES OR EITHER': 1, 'EITHER OF THEM': 1, 'WE COULD THEN': 1, 'COULD THEN COMPARE': 1, 'THEN COMPARE OUR': 1, 'COMPARE OUR ACTUAL': 1, 'OUR ACTUAL CONDITION': 1, 'ACTUAL CONDITION AFTER': 1, 'CONDITION AFTER FIFTY': 1, 'AFTER FIFTY YEARS': 1, 'FIFTY YEARS TRIAL': 1, 'YEARS TRIAL OF': 1, 'TRIAL OF OUR': 1, 'OUR SYSTEM WITH': 1, 'SYSTEM WITH WHAT': 1, 'WITH WHAT IT': 1, 'WHAT IT WAS': 1, 'IT WAS IN': 1, 'WAS IN THE': 1, 'IN THE COMMENCEMENT': 1, 'COMMENCEMENT OF ITS': 1, 'ITS OPERATIONS AND': 1, 'OPERATIONS AND ASCERTAIN': 1, 'AND ASCERTAIN WHETHER': 1, 'ASCERTAIN WHETHER THE': 1, 'WHETHER THE PREDICTIONS': 1, 'THE PREDICTIONS OF': 1, 'PREDICTIONS OF THE': 1, 'OF THE PATRIOTS': 1, 'THE PATRIOTS WHO': 1, 'PATRIOTS WHO OPPOSED': 1, 'WHO OPPOSED ITS': 1, 'OPPOSED ITS ADOPTION': 1, 'ITS ADOPTION OR': 1, 'ADOPTION OR THE': 1, 'OR THE CONFIDENT': 1, 'THE CONFIDENT HOPES': 1, 'CONFIDENT HOPES OF': 1, 'HOPES OF ITS': 1, 'OF ITS ADVOCATES': 1, 'ITS ADVOCATES HAVE': 1, 'ADVOCATES HAVE BEEN': 1, 'HAVE BEEN BEST': 1, 'BEEN BEST REALIZED': 1, 'THE GREAT DREAD': 1, 'GREAT DREAD OF': 1, 'DREAD OF THE': 1, 'THE FORMER SEEMS': 1, 'FORMER SEEMS TO': 1, 'SEEMS TO HAVE': 1, 'TO HAVE BEEN': 1, 'HAVE BEEN THAT': 1, 'BEEN THAT THE': 1, 'THAT THE RESERVED': 1, 'POWERS OF THE': 1, 'THE STATES WOULD': 1, 'STATES WOULD BE': 1, 'WOULD BE ABSORBED': 1, 'BE ABSORBED BY': 1, 'ABSORBED BY THOSE': 1, 'BY THOSE OF': 1, 'GOVERNMENT AND A': 1, 'AND A CONSOLIDATED': 1, 'A CONSOLIDATED POWER': 1, 'CONSOLIDATED POWER ESTABLISHED': 1, 'POWER ESTABLISHED LEAVING': 1, 'ESTABLISHED LEAVING TO': 1, 'LEAVING TO THE': 1, 'TO THE STATES': 1, 'THE STATES THE': 1, 'STATES THE SHADOW': 1, 'THE SHADOW ONLY': 1, 'SHADOW ONLY OF': 1, 'ONLY OF THAT': 1, 'OF THAT INDEPENDENT': 1, 'THAT INDEPENDENT ACTION': 1, 'INDEPENDENT ACTION FOR': 1, 'ACTION FOR WHICH': 1, 'WHICH THEY HAD': 1, 'THEY HAD SO': 1, 'HAD SO ZEALOUSLY': 1, 'SO ZEALOUSLY CONTENDED': 1, 'ZEALOUSLY CONTENDED AND': 1, 'CONTENDED AND ON': 1, 'AND ON THE': 1, 'ON THE PRESERVATION': 1, 'THE PRESERVATION OF': 1, 'PRESERVATION OF WHICH': 1, 'OF WHICH THEY': 1, 'WHICH THEY RELIED': 1, 'THEY RELIED AS': 1, 'RELIED AS THE': 1, 'AS THE LAST': 1, 'THE LAST HOPE': 1, 'LAST HOPE OF': 1, 'HOPE OF LIBERTY': 1, 'WITHOUT DENYING THAT': 1, 'DENYING THAT THE': 1, 'THAT THE RESULT': 1, 'THE RESULT TO': 1, 'RESULT TO WHICH': 1, 'TO WHICH THEY': 1, 'WHICH THEY LOOKED': 1, 'THEY LOOKED WITH': 1, 'LOOKED WITH SO': 1, 'WITH SO MUCH': 1, 'SO MUCH APPREHENSION': 1, 'MUCH APPREHENSION IS': 1, 'APPREHENSION IS IN': 1, 'IN THE WAY': 1, 'THE WAY OF': 1, 'WAY OF BEING': 1, 'OF BEING REALIZED': 1, 'BEING REALIZED IT': 1, 'REALIZED IT IS': 1, 'IT IS OBVIOUS': 1, 'IS OBVIOUS THAT': 1, 'OBVIOUS THAT THEY': 1, 'THAT THEY DID': 1, 'THEY DID NOT': 1, 'DID NOT CLEARLY': 1, 'NOT CLEARLY SEE': 1, 'CLEARLY SEE THE': 1, 'SEE THE MODE': 1, 'MODE OF ITS': 1, 'OF ITS ACCOMPLISHMENT': 1, 'GENERAL GOVERNMENT HAS': 1, 'GOVERNMENT HAS SEIZED': 1, 'HAS SEIZED UPON': 1, 'SEIZED UPON NONE': 1, 'UPON NONE OF': 1, 'OF THE RESERVED': 1, 'THE RESERVED RIGHTS': 1, 'RESERVED RIGHTS OF': 1, 'FAR AS ANY': 1, 'AS ANY OPEN': 1, 'ANY OPEN WARFARE': 1, 'OPEN WARFARE MAY': 1, 'WARFARE MAY HAVE': 1, 'MAY HAVE GONE': 1, 'HAVE GONE THE': 1, 'GONE THE STATE': 1, 'STATE AUTHORITIES HAVE': 1, 'AUTHORITIES HAVE AMPLY': 1, 'HAVE AMPLY MAINTAINED': 1, 'AMPLY MAINTAINED THEIR': 1, 'MAINTAINED THEIR RIGHTS': 1, 'TO A CASUAL': 1, 'A CASUAL OBSERVER': 1, 'CASUAL OBSERVER OUR': 1, 'OBSERVER OUR SYSTEM': 1, 'OUR SYSTEM PRESENTS': 1, 'SYSTEM PRESENTS NO': 1, 'PRESENTS NO APPEARANCE': 1, 'NO APPEARANCE OF': 1, 'APPEARANCE OF DISCORD': 1, 'OF DISCORD BETWEEN': 1, 'DISCORD BETWEEN THE': 1, 'BETWEEN THE DIFFERENT': 1, 'THE DIFFERENT MEMBERS': 1, 'DIFFERENT MEMBERS WHICH': 1, 'MEMBERS WHICH COMPOSE': 1, 'WHICH COMPOSE IT': 1, 'EVEN THE ADDITION': 1, 'THE ADDITION OF': 1, 'ADDITION OF MANY': 1, 'OF MANY NEW': 1, 'MANY NEW ONES': 1, 'NEW ONES HAS': 1, 'ONES HAS PRODUCED': 1, 'HAS PRODUCED NO': 1, 'PRODUCED NO JARRING': 1, 'THEY MOVE IN': 1, 'MOVE IN THEIR': 1, 'IN THEIR RESPECTIVE': 1, 'THEIR RESPECTIVE ORBITS': 1, 'RESPECTIVE ORBITS IN': 1, 'ORBITS IN PERFECT': 1, 'IN PERFECT HARMONY': 1, 'PERFECT HARMONY WITH': 1, 'HARMONY WITH THE': 1, 'WITH THE CENTRAL': 1, 'THE CENTRAL HEAD': 1, 'CENTRAL HEAD AND': 1, 'HEAD AND WITH': 1, 'AND WITH EACH': 1, 'WITH EACH OTHER': 1, 'BUT THERE IS': 1, 'THERE IS STILL': 1, 'IS STILL AN': 1, 'STILL AN UNDERCURRENT': 1, 'AN UNDERCURRENT AT': 1, 'UNDERCURRENT AT WORK': 1, 'AT WORK BY': 1, 'WORK BY WHICH': 1, 'BY WHICH IF': 1, 'WHICH IF NOT': 1, 'IF NOT SEASONABLY': 1, 'NOT SEASONABLY CHECKED': 1, 'SEASONABLY CHECKED THE': 1, 'CHECKED THE WORST': 1, 'THE WORST APPREHENSIONS': 1, 'WORST APPREHENSIONS OF': 1, 'APPREHENSIONS OF OUR': 1, 'OF OUR ANTIFEDERAL': 1, 'OUR ANTIFEDERAL PATRIOTS': 1, 'ANTIFEDERAL PATRIOTS WILL': 1, 'PATRIOTS WILL BE': 1, 'WILL BE REALIZED': 1, 'BE REALIZED AND': 1, 'REALIZED AND NOT': 1, 'NOT ONLY WILL': 1, 'ONLY WILL THE': 1, 'WILL THE STATE': 1, 'STATE AUTHORITIES BE': 1, 'AUTHORITIES BE OVERSHADOWED': 1, 'BE OVERSHADOWED BY': 1, 'OVERSHADOWED BY THE': 1, 'GREAT INCREASE OF': 1, 'INCREASE OF POWER': 1, 'IN THE EXECUTIVE': 1, 'EXECUTIVE DEPARTMENT OF': 1, 'BUT THE CHARACTER': 1, 'CHARACTER OF THAT': 1, 'OF THAT GOVERNMENT': 1, 'THAT GOVERNMENT IF': 1, 'GOVERNMENT IF NOT': 1, 'IF NOT ITS': 1, 'NOT ITS DESIGNATION': 1, 'ITS DESIGNATION BE': 1, 'DESIGNATION BE ESSENTIALLY': 1, 'BE ESSENTIALLY AND': 1, 'ESSENTIALLY AND RADICALLY': 1, 'AND RADICALLY CHANGED': 1, 'THIS STATE OF': 1, 'OF THINGS HAS': 1, 'THINGS HAS BEEN': 1, 'BEEN IN PART': 1, 'IN PART EFFECTED': 1, 'PART EFFECTED BY': 1, 'EFFECTED BY CAUSES': 1, 'BY CAUSES INHERENT': 1, 'CAUSES INHERENT IN': 1, 'INHERENT IN THE': 1, 'CONSTITUTION AND IN': 1, 'AND IN PART': 1, 'IN PART BY': 1, 'PART BY THE': 1, 'BY THE NEVER-FAILING': 1, 'THE NEVER-FAILING TENDENCY': 1, 'NEVER-FAILING TENDENCY OF': 1, 'TENDENCY OF POLITICAL': 1, 'OF POLITICAL POWER': 1, 'POLITICAL POWER TO': 1, 'BY MAKING THE': 1, 'MAKING THE PRESIDENT': 1, 'THE PRESIDENT THE': 1, 'PRESIDENT THE SOLE': 1, 'THE SOLE DISTRIBUTER': 1, 'SOLE DISTRIBUTER OF': 1, 'DISTRIBUTER OF ALL': 1, 'ALL THE PATRONAGE': 1, 'THE PATRONAGE OF': 1, 'PATRONAGE OF THE': 1, 'GOVERNMENT THE FRAMERS': 1, 'THE CONSTITUTION DO': 1, 'CONSTITUTION DO NOT': 1, 'DO NOT APPEAR': 1, 'TO HAVE ANTICIPATED': 1, 'HAVE ANTICIPATED AT': 1, 'ANTICIPATED AT HOW': 1, 'AT HOW SHORT': 1, 'HOW SHORT A': 1, 'SHORT A PERIOD': 1, 'A PERIOD IT': 1, 'PERIOD IT WOULD': 1, 'IT WOULD BECOME': 1, 'WOULD BECOME A': 1, 'BECOME A FORMIDABLE': 1, 'A FORMIDABLE INSTRUMENT': 1, 'FORMIDABLE INSTRUMENT TO': 1, 'INSTRUMENT TO CONTROL': 1, 'CONTROL THE FREE': 1, 'THE FREE OPERATIONS': 1, 'FREE OPERATIONS OF': 1, 'OPERATIONS OF THE': 1, 'OF TRIFLING IMPORTANCE': 1, 'TRIFLING IMPORTANCE AT': 1, 'IMPORTANCE AT FIRST': 1, 'AT FIRST IT': 1, 'FIRST IT HAD': 1, 'IT HAD EARLY': 1, 'HAD EARLY IN': 1, 'EARLY IN MR': 1, \"JEFFERSON'S ADMINISTRATION BECOME\": 1, 'ADMINISTRATION BECOME SO': 1, 'BECOME SO POWERFUL': 1, 'SO POWERFUL AS': 1, 'POWERFUL AS TO': 1, 'AS TO CREATE': 1, 'TO CREATE GREAT': 1, 'CREATE GREAT ALARM': 1, 'GREAT ALARM IN': 1, 'ALARM IN THE': 1, 'IN THE MIND': 1, 'THE MIND OF': 1, 'MIND OF THAT': 1, 'OF THAT PATRIOT': 1, 'THAT PATRIOT FROM': 1, 'PATRIOT FROM THE': 1, 'FROM THE POTENT': 1, 'THE POTENT INFLUENCE': 1, 'POTENT INFLUENCE IT': 1, 'INFLUENCE IT MIGHT': 1, 'IT MIGHT EXERT': 1, 'MIGHT EXERT IN': 1, 'EXERT IN CONTROLLING': 1, 'IF SUCH COULD': 1, 'SUCH COULD HAVE': 1, 'COULD HAVE THEN': 1, 'HAVE THEN BEEN': 1, 'THEN BEEN THE': 1, 'BEEN THE EFFECTS': 1, 'EFFECTS OF ITS': 1, 'OF ITS INFLUENCE': 1, 'ITS INFLUENCE HOW': 1, 'INFLUENCE HOW MUCH': 1, 'HOW MUCH GREATER': 1, 'MUCH GREATER MUST': 1, 'GREATER MUST BE': 1, 'MUST BE THE': 1, 'BE THE DANGER': 1, 'THE DANGER AT': 1, 'DANGER AT THIS': 1, 'THIS TIME QUADRUPLED': 1, 'TIME QUADRUPLED IN': 1, 'QUADRUPLED IN AMOUNT': 1, 'IN AMOUNT AS': 1, 'AMOUNT AS IT': 1, 'AS IT CERTAINLY': 1, 'IT CERTAINLY IS': 1, 'CERTAINLY IS AND': 1, 'IS AND MORE': 1, 'AND MORE COMPLETELY': 1, 'MORE COMPLETELY UNDER': 1, 'COMPLETELY UNDER THE': 1, 'UNDER THE CONTROL': 1, 'THE EXECUTIVE WILL': 1, 'EXECUTIVE WILL THAN': 1, 'WILL THAN THEIR': 1, 'THAN THEIR CONSTRUCTION': 1, 'THEIR CONSTRUCTION OF': 1, 'CONSTRUCTION OF THEIR': 1, 'OF THEIR POWERS': 1, 'THEIR POWERS ALLOWED': 1, 'POWERS ALLOWED OR': 1, 'ALLOWED OR THE': 1, 'OR THE FORBEARING': 1, 'THE FORBEARING CHARACTERS': 1, 'FORBEARING CHARACTERS OF': 1, 'CHARACTERS OF ALL': 1, 'ALL THE EARLY': 1, 'THE EARLY PRESIDENTS': 1, 'EARLY PRESIDENTS PERMITTED': 1, 'PRESIDENTS PERMITTED THEM': 1, 'PERMITTED THEM TO': 1, 'THEM TO MAKE': 1, 'BUT IT IS': 1, 'IS NOT BY': 1, 'NOT BY THE': 1, 'BY THE EXTENT': 1, 'EXTENT OF ITS': 1, 'OF ITS PATRONAGE': 1, 'ITS PATRONAGE ALONE': 1, 'PATRONAGE ALONE THAT': 1, 'ALONE THAT THE': 1, 'THAT THE EXECUTIVE': 1, 'EXECUTIVE DEPARTMENT HAS': 1, 'DEPARTMENT HAS BECOME': 1, 'HAS BECOME DANGEROUS': 1, 'BECOME DANGEROUS BUT': 1, 'DANGEROUS BUT BY': 1, 'BY THE USE': 1, 'THE USE WHICH': 1, 'USE WHICH IT': 1, 'WHICH IT APPEARS': 1, 'IT APPEARS MAY': 1, 'APPEARS MAY BE': 1, 'MAY BE MADE': 1, 'BE MADE OF': 1, 'OF THE APPOINTING': 1, 'THE APPOINTING POWER': 1, 'APPOINTING POWER TO': 1, 'POWER TO BRING': 1, 'TO BRING UNDER': 1, 'BRING UNDER ITS': 1, 'UNDER ITS CONTROL': 1, 'ITS CONTROL THE': 1, 'CONTROL THE WHOLE': 1, 'THE WHOLE REVENUES': 1, 'WHOLE REVENUES OF': 1, 'REVENUES OF THE': 1, 'CONSTITUTION HAS DECLARED': 1, 'HAS DECLARED IT': 1, 'DECLARED IT TO': 1, 'IT TO BE': 1, 'BE THE DUTY': 1, 'PRESIDENT TO SEE': 1, 'TO SEE THAT': 1, 'SEE THAT THE': 1, 'THAT THE LAWS': 1, 'THE LAWS ARE': 1, 'LAWS ARE EXECUTED': 1, 'ARE EXECUTED AND': 1, 'EXECUTED AND IT': 1, 'AND IT MAKES': 1, 'IT MAKES HIM': 1, 'MAKES HIM THE': 1, 'HIM THE COMMANDER': 1, 'THE COMMANDER IN': 1, 'COMMANDER IN CHIEF': 1, 'IN CHIEF OF': 1, 'CHIEF OF THE': 1, 'OF THE ARMIES': 1, 'THE ARMIES AND': 1, 'ARMIES AND NAVY': 1, 'AND NAVY OF': 1, 'NAVY OF THE': 1, 'IF THE OPINION': 1, 'THE MOST APPROVED': 1, 'MOST APPROVED WRITERS': 1, 'APPROVED WRITERS UPON': 1, 'WRITERS UPON THAT': 1, 'UPON THAT SPECIES': 1, 'THAT SPECIES OF': 1, 'SPECIES OF MIXED': 1, 'OF MIXED GOVERNMENT': 1, 'MIXED GOVERNMENT WHICH': 1, 'GOVERNMENT WHICH IN': 1, 'WHICH IN MODERN': 1, 'IN MODERN EUROPE': 1, 'MODERN EUROPE IS': 1, 'EUROPE IS TERMED': 1, 'IS TERMED MONARCHY': 1, 'TERMED MONARCHY IN': 1, 'MONARCHY IN CONTRADISTINCTION': 1, 'IN CONTRADISTINCTION TO': 1, 'CONTRADISTINCTION TO DESPOTISM': 1, 'TO DESPOTISM IS': 1, 'DESPOTISM IS CORRECT': 1, 'IS CORRECT THERE': 1, 'CORRECT THERE WAS': 1, 'THERE WAS WANTING': 1, 'WAS WANTING NO': 1, 'WANTING NO OTHER': 1, 'NO OTHER ADDITION': 1, 'OTHER ADDITION TO': 1, 'ADDITION TO THE': 1, 'TO THE POWERS': 1, 'THE POWERS OF': 1, 'POWERS OF OUR': 1, 'OF OUR CHIEF': 1, 'OUR CHIEF MAGISTRATE': 1, 'CHIEF MAGISTRATE TO': 1, 'MAGISTRATE TO STAMP': 1, 'TO STAMP A': 1, 'STAMP A MONARCHICAL': 1, 'A MONARCHICAL CHARACTER': 1, 'MONARCHICAL CHARACTER ON': 1, 'CHARACTER ON OUR': 1, 'ON OUR GOVERNMENT': 1, 'OUR GOVERNMENT BUT': 1, 'BUT THE CONTROL': 1, 'THE PUBLIC FINANCES': 1, 'PUBLIC FINANCES AND': 1, 'FINANCES AND TO': 1, 'AND TO ME': 1, 'IT APPEARS STRANGE': 1, 'APPEARS STRANGE INDEED': 1, 'INDEED THAT ANYONE': 1, 'THAT ANYONE SHOULD': 1, 'ANYONE SHOULD DOUBT': 1, 'SHOULD DOUBT THAT': 1, 'DOUBT THAT THE': 1, 'THAT THE ENTIRE': 1, 'THE ENTIRE CONTROL': 1, 'ENTIRE CONTROL WHICH': 1, 'CONTROL WHICH THE': 1, 'THE PRESIDENT POSSESSES': 1, 'PRESIDENT POSSESSES OVER': 1, 'POSSESSES OVER THE': 1, 'OVER THE OFFICERS': 1, 'THE OFFICERS WHO': 1, 'OFFICERS WHO HAVE': 1, 'WHO HAVE THE': 1, 'HAVE THE CUSTODY': 1, 'THE CUSTODY OF': 1, 'CUSTODY OF THE': 1, 'PUBLIC MONEY BY': 1, 'MONEY BY THE': 1, 'POWER OF REMOVAL': 1, 'OF REMOVAL WITH': 1, 'REMOVAL WITH OR': 1, 'OR WITHOUT CAUSE': 1, 'WITHOUT CAUSE DOES': 1, 'CAUSE DOES FOR': 1, 'DOES FOR ALL': 1, 'FOR ALL MISCHIEVOUS': 1, 'ALL MISCHIEVOUS PURPOSES': 1, 'MISCHIEVOUS PURPOSES AT': 1, 'PURPOSES AT LEAST': 1, 'AT LEAST VIRTUALLY': 1, 'LEAST VIRTUALLY SUBJECT': 1, 'VIRTUALLY SUBJECT THE': 1, 'SUBJECT THE TREASURE': 1, 'THE TREASURE ALSO': 1, 'TREASURE ALSO TO': 1, 'ALSO TO HIS': 1, 'TO HIS DISPOSAL': 1, 'THE FIRST ROMAN': 1, 'FIRST ROMAN EMPEROR': 1, 'ROMAN EMPEROR IN': 1, 'EMPEROR IN HIS': 1, 'IN HIS ATTEMPT': 1, 'HIS ATTEMPT TO': 1, 'ATTEMPT TO SEIZE': 1, 'TO SEIZE THE': 1, 'SEIZE THE SACRED': 1, 'THE SACRED TREASURE': 1, 'SACRED TREASURE SILENCED': 1, 'TREASURE SILENCED THE': 1, 'SILENCED THE OPPOSITION': 1, 'THE OPPOSITION OF': 1, 'OPPOSITION OF THE': 1, 'OF THE OFFICER': 1, 'THE OFFICER TO': 1, 'OFFICER TO WHOSE': 1, 'TO WHOSE CHARGE': 1, 'WHOSE CHARGE IT': 1, 'CHARGE IT HAD': 1, 'IT HAD BEEN': 1, 'BEEN COMMITTED BY': 1, 'COMMITTED BY A': 1, 'BY A SIGNIFICANT': 1, 'A SIGNIFICANT ALLUSION': 1, 'SIGNIFICANT ALLUSION TO': 1, 'ALLUSION TO HIS': 1, 'TO HIS SWORD': 1, 'BY A SELECTION': 1, 'A SELECTION OF': 1, 'SELECTION OF POLITICAL': 1, 'OF POLITICAL INSTRUMENTS': 1, 'POLITICAL INSTRUMENTS FOR': 1, 'INSTRUMENTS FOR THE': 1, 'FOR THE CARE': 1, 'THE CARE OF': 1, 'CARE OF THE': 1, 'PUBLIC MONEY A': 1, 'MONEY A REFERENCE': 1, 'A REFERENCE TO': 1, 'REFERENCE TO THEIR': 1, 'TO THEIR COMMISSIONS': 1, 'THEIR COMMISSIONS BY': 1, 'COMMISSIONS BY A': 1, 'BY A PRESIDENT': 1, 'A PRESIDENT WOULD': 1, 'PRESIDENT WOULD BE': 1, 'WOULD BE QUITE': 1, 'BE QUITE AS': 1, 'QUITE AS EFFECTUAL': 1, 'AS EFFECTUAL AN': 1, 'EFFECTUAL AN ARGUMENT': 1, 'AN ARGUMENT AS': 1, 'ARGUMENT AS THAT': 1, 'AS THAT OF': 1, 'THAT OF CAESAR': 1, 'OF CAESAR TO': 1, 'CAESAR TO THE': 1, 'TO THE ROMAN': 1, 'THE ROMAN KNIGHT': 1, 'I AM NOT': 1, 'AM NOT INSENSIBLE': 1, 'NOT INSENSIBLE OF': 1, 'INSENSIBLE OF THE': 1, 'THE GREAT DIFFICULTY': 1, 'GREAT DIFFICULTY THAT': 1, 'DIFFICULTY THAT EXISTS': 1, 'THAT EXISTS IN': 1, 'EXISTS IN DRAWING': 1, 'IN DRAWING A': 1, 'DRAWING A PROPER': 1, 'A PROPER PLAN': 1, 'PROPER PLAN FOR': 1, 'PLAN FOR THE': 1, 'FOR THE SAFE-KEEPING': 1, 'THE SAFE-KEEPING AND': 1, 'SAFE-KEEPING AND DISBURSEMENT': 1, 'AND DISBURSEMENT OF': 1, 'DISBURSEMENT OF THE': 1, 'THE PUBLIC REVENUES': 1, 'PUBLIC REVENUES AND': 1, 'REVENUES AND I': 1, 'AND I KNOW': 1, 'I KNOW THE': 1, 'KNOW THE IMPORTANCE': 1, 'THE IMPORTANCE WHICH': 1, 'IMPORTANCE WHICH HAS': 1, 'HAS BEEN ATTACHED': 1, 'BEEN ATTACHED BY': 1, 'ATTACHED BY MEN': 1, 'BY MEN OF': 1, 'MEN OF GREAT': 1, 'OF GREAT ABILITIES': 1, 'GREAT ABILITIES AND': 1, 'ABILITIES AND PATRIOTISM': 1, 'AND PATRIOTISM TO': 1, 'PATRIOTISM TO THE': 1, 'TO THE DIVORCE': 1, 'THE DIVORCE AS': 1, 'DIVORCE AS IT': 1, 'AS IT IS': 1, 'IT IS CALLED': 1, 'IS CALLED OF': 1, 'CALLED OF THE': 1, 'THE TREASURY FROM': 1, 'TREASURY FROM THE': 1, 'FROM THE BANKING': 1, 'THE BANKING INSTITUTIONS': 1, 'IS NOT THE': 1, 'NOT THE DIVORCE': 1, 'THE DIVORCE WHICH': 1, 'DIVORCE WHICH IS': 1, 'WHICH IS COMPLAINED': 1, 'IS COMPLAINED OF': 1, 'COMPLAINED OF BUT': 1, 'OF BUT THE': 1, 'BUT THE UNHALLOWED': 1, 'THE UNHALLOWED UNION': 1, 'UNHALLOWED UNION OF': 1, 'THE TREASURY WITH': 1, 'TREASURY WITH THE': 1, 'WITH THE EXECUTIVE': 1, 'EXECUTIVE DEPARTMENT WHICH': 1, 'DEPARTMENT WHICH HAS': 1, 'WHICH HAS CREATED': 1, 'HAS CREATED SUCH': 1, 'CREATED SUCH EXTENSIVE': 1, 'SUCH EXTENSIVE ALARM': 1, 'TO THIS DANGER': 1, 'THIS DANGER TO': 1, 'TO OUR REPUBLICAN': 1, 'OUR REPUBLICAN INSTITUTIONS': 1, 'REPUBLICAN INSTITUTIONS AND': 1, 'INSTITUTIONS AND THAT': 1, 'AND THAT CREATED': 1, 'THAT CREATED BY': 1, 'CREATED BY THE': 1, 'BY THE INFLUENCE': 1, 'THE INFLUENCE GIVEN': 1, 'INFLUENCE GIVEN TO': 1, 'THE EXECUTIVE THROUGH': 1, 'EXECUTIVE THROUGH THE': 1, 'THROUGH THE INSTRUMENTALITY': 1, 'THE INSTRUMENTALITY OF': 1, 'INSTRUMENTALITY OF THE': 1, 'THE FEDERAL OFFICERS': 1, 'FEDERAL OFFICERS I': 1, 'OFFICERS I PROPOSE': 1, 'I PROPOSE TO': 1, 'PROPOSE TO APPLY': 1, 'TO APPLY ALL': 1, 'APPLY ALL THE': 1, 'ALL THE REMEDIES': 1, 'THE REMEDIES WHICH': 1, 'REMEDIES WHICH MAY': 1, 'MAY BE AT': 1, 'BE AT MY': 1, 'AT MY COMMAND': 1, 'IT WAS CERTAINLY': 1, 'WAS CERTAINLY A': 1, 'CERTAINLY A GREAT': 1, 'A GREAT ERROR': 1, 'GREAT ERROR IN': 1, 'ERROR IN THE': 1, 'IN THE FRAMERS': 1, 'THE CONSTITUTION NOT': 1, 'CONSTITUTION NOT TO': 1, 'TO HAVE MADE': 1, 'HAVE MADE THE': 1, 'MADE THE OFFICER': 1, 'THE OFFICER AT': 1, 'OFFICER AT THE': 1, 'AT THE HEAD': 1, 'THE HEAD OF': 1, 'HEAD OF THE': 1, 'THE TREASURY DEPARTMENT': 1, 'TREASURY DEPARTMENT ENTIRELY': 1, 'DEPARTMENT ENTIRELY INDEPENDENT': 1, 'ENTIRELY INDEPENDENT OF': 1, 'INDEPENDENT OF THE': 1, 'HE SHOULD AT': 1, 'SHOULD AT LEAST': 1, 'AT LEAST HAVE': 1, 'LEAST HAVE BEEN': 1, 'HAVE BEEN REMOVABLE': 1, 'BEEN REMOVABLE ONLY': 1, 'REMOVABLE ONLY UPON': 1, 'ONLY UPON THE': 1, 'UPON THE DEMAND': 1, 'THE DEMAND OF': 1, 'DEMAND OF THE': 1, 'OF THE POPULAR': 1, 'THE POPULAR BRANCH': 1, 'POPULAR BRANCH OF': 1, 'I HAVE DETERMINED': 1, 'HAVE DETERMINED NEVER': 1, 'DETERMINED NEVER TO': 1, 'NEVER TO REMOVE': 1, 'TO REMOVE A': 1, 'REMOVE A SECRETARY': 1, 'A SECRETARY OF': 1, 'SECRETARY OF THE': 1, 'THE TREASURY WITHOUT': 1, 'TREASURY WITHOUT COMMUNICATING': 1, 'WITHOUT COMMUNICATING ALL': 1, 'COMMUNICATING ALL THE': 1, 'ALL THE CIRCUMSTANCES': 1, 'THE CIRCUMSTANCES ATTENDING': 1, 'CIRCUMSTANCES ATTENDING SUCH': 1, 'ATTENDING SUCH REMOVAL': 1, 'SUCH REMOVAL TO': 1, 'REMOVAL TO BOTH': 1, 'TO BOTH HOUSES': 1, 'INFLUENCE OF THE': 1, 'THE EXECUTIVE IN': 1, 'EXECUTIVE IN CONTROLLING': 1, 'ELECTIVE FRANCHISE THROUGH': 1, 'FRANCHISE THROUGH THE': 1, 'THROUGH THE MEDIUM': 1, 'THE MEDIUM OF': 1, 'MEDIUM OF THE': 1, 'THE PUBLIC OFFICERS': 1, 'PUBLIC OFFICERS CAN': 1, 'OFFICERS CAN BE': 1, 'CAN BE EFFECTUALLY': 1, 'BE EFFECTUALLY CHECKED': 1, 'EFFECTUALLY CHECKED BY': 1, 'CHECKED BY RENEWING': 1, 'RENEWING THE PROHIBITION': 1, 'THE PROHIBITION PUBLISHED': 1, 'PROHIBITION PUBLISHED BY': 1, 'PUBLISHED BY MR': 1, 'JEFFERSON FORBIDDING THEIR': 1, 'FORBIDDING THEIR INTERFERENCE': 1, 'THEIR INTERFERENCE IN': 1, 'INTERFERENCE IN ELECTIONS': 1, 'IN ELECTIONS FURTHER': 1, 'ELECTIONS FURTHER THAN': 1, 'FURTHER THAN GIVING': 1, 'THAN GIVING THEIR': 1, 'GIVING THEIR OWN': 1, 'THEIR OWN VOTES': 1, 'OWN VOTES AND': 1, 'VOTES AND THEIR': 1, 'AND THEIR OWN': 1, 'THEIR OWN INDEPENDENCE': 1, 'OWN INDEPENDENCE SECURED': 1, 'INDEPENDENCE SECURED BY': 1, 'SECURED BY AN': 1, 'BY AN ASSURANCE': 1, 'AN ASSURANCE OF': 1, 'ASSURANCE OF PERFECT': 1, 'OF PERFECT IMMUNITY': 1, 'PERFECT IMMUNITY IN': 1, 'IMMUNITY IN EXERCISING': 1, 'IN EXERCISING THIS': 1, 'EXERCISING THIS SACRED': 1, 'THIS SACRED PRIVILEGE': 1, 'SACRED PRIVILEGE OF': 1, 'PRIVILEGE OF FREEMEN': 1, 'OF FREEMEN UNDER': 1, 'FREEMEN UNDER THE': 1, 'UNDER THE DICTATES': 1, 'THE DICTATES OF': 1, 'DICTATES OF THEIR': 1, 'THEIR OWN UNBIASED': 1, 'OWN UNBIASED JUDGMENTS': 1, 'NEVER WITH MY': 1, 'WITH MY CONSENT': 1, 'MY CONSENT SHALL': 1, 'CONSENT SHALL AN': 1, 'SHALL AN OFFICER': 1, 'AN OFFICER OF': 1, 'OFFICER OF THE': 1, 'THE PEOPLE COMPENSATED': 1, 'PEOPLE COMPENSATED FOR': 1, 'COMPENSATED FOR HIS': 1, 'FOR HIS SERVICES': 1, 'HIS SERVICES OUT': 1, 'SERVICES OUT OF': 1, 'OUT OF THEIR': 1, 'OF THEIR POCKETS': 1, 'THEIR POCKETS BECOME': 1, 'POCKETS BECOME THE': 1, 'BECOME THE PLIANT': 1, 'THE PLIANT INSTRUMENT': 1, 'PLIANT INSTRUMENT OF': 1, 'INSTRUMENT OF EXECUTIVE': 1, 'OF EXECUTIVE WILL': 1, 'THERE IS NO': 1, 'IS NO PART': 1, 'OF THE MEANS': 1, 'THE MEANS PLACED': 1, 'MEANS PLACED IN': 1, 'PLACED IN THE': 1, 'THE EXECUTIVE WHICH': 1, 'EXECUTIVE WHICH MIGHT': 1, 'WHICH MIGHT BE': 1, 'MIGHT BE USED': 1, 'BE USED WITH': 1, 'USED WITH GREATER': 1, 'WITH GREATER EFFECT': 1, 'GREATER EFFECT FOR': 1, 'EFFECT FOR UNHALLOWED': 1, 'FOR UNHALLOWED PURPOSES': 1, 'UNHALLOWED PURPOSES THAN': 1, 'PURPOSES THAN THE': 1, 'THAN THE CONTROL': 1, 'THE PUBLIC PRESS': 1, 'THE MAXIM WHICH': 1, 'MAXIM WHICH OUR': 1, 'OUR ANCESTORS DERIVED': 1, 'ANCESTORS DERIVED FROM': 1, 'DERIVED FROM THE': 1, 'FROM THE MOTHER': 1, 'THE MOTHER COUNTRY': 1, 'MOTHER COUNTRY THAT': 1, 'COUNTRY THAT THE': 1, 'THAT THE FREEDOM': 1, 'OF THE PRESS': 1, 'THE PRESS IS': 1, 'PRESS IS THE': 1, 'IS THE GREAT': 1, 'THE GREAT BULWARK': 1, 'GREAT BULWARK OF': 1, 'BULWARK OF CIVIL': 1, 'AND RELIGIOUS LIBERTY': 1, 'RELIGIOUS LIBERTY IS': 1, 'LIBERTY IS ONE': 1, 'IS ONE OF': 1, 'THE MOST PRECIOUS': 1, 'MOST PRECIOUS LEGACIES': 1, 'PRECIOUS LEGACIES WHICH': 1, 'LEGACIES WHICH THEY': 1, 'THEY HAVE LEFT': 1, 'HAVE LEFT US': 1, 'WE HAVE LEARNED': 1, 'HAVE LEARNED TOO': 1, 'LEARNED TOO FROM': 1, 'TOO FROM OUR': 1, 'FROM OUR OWN': 1, 'OUR OWN AS': 1, 'OWN AS WELL': 1, 'WELL AS THE': 1, 'AS THE EXPERIENCE': 1, 'THE EXPERIENCE OF': 1, 'EXPERIENCE OF OTHER': 1, 'OF OTHER COUNTRIES': 1, 'OTHER COUNTRIES THAT': 1, 'COUNTRIES THAT GOLDEN': 1, 'THAT GOLDEN SHACKLES': 1, 'GOLDEN SHACKLES BY': 1, 'SHACKLES BY WHOMSOEVER': 1, 'BY WHOMSOEVER OR': 1, 'WHOMSOEVER OR BY': 1, 'OR BY WHATEVER': 1, 'BY WHATEVER PRETENSE': 1, 'WHATEVER PRETENSE IMPOSED': 1, 'PRETENSE IMPOSED ARE': 1, 'IMPOSED ARE AS': 1, 'ARE AS FATAL': 1, 'AS FATAL TO': 1, 'FATAL TO IT': 1, 'TO IT AS': 1, 'IT AS THE': 1, 'AS THE IRON': 1, 'THE IRON BONDS': 1, 'IRON BONDS OF': 1, 'BONDS OF DESPOTISM': 1, 'THE PRESSES IN': 1, 'PRESSES IN THE': 1, 'IN THE NECESSARY': 1, 'THE NECESSARY EMPLOYMENT': 1, 'NECESSARY EMPLOYMENT OF': 1, 'EMPLOYMENT OF THE': 1, 'GOVERNMENT SHOULD NEVER': 1, 'NEVER BE USED': 1, 'BE USED TO': 1, 'USED TO CLEAR': 1, 'TO CLEAR THE': 1, 'CLEAR THE GUILTY': 1, 'THE GUILTY OR': 1, 'GUILTY OR TO': 1, 'OR TO VARNISH': 1, 'TO VARNISH CRIME': 1, 'VARNISH CRIME A': 1, 'CRIME A DECENT': 1, 'A DECENT AND': 1, 'DECENT AND MANLY': 1, 'AND MANLY EXAMINATION': 1, 'MANLY EXAMINATION OF': 1, 'OF THE ACTS': 1, 'SHOULD BE NOT': 1, 'BE NOT ONLY': 1, 'NOT ONLY TOLERATED': 1, 'ONLY TOLERATED BUT': 1, 'TOLERATED BUT ENCOURAGED': 1, 'UPON ANOTHER OCCASION': 1, 'ANOTHER OCCASION I': 1, 'OCCASION I HAVE': 1, 'I HAVE GIVEN': 1, 'HAVE GIVEN MY': 1, 'GIVEN MY OPINION': 1, 'MY OPINION AT': 1, 'OPINION AT SOME': 1, 'AT SOME LENGTH': 1, 'SOME LENGTH UPON': 1, 'LENGTH UPON THE': 1, 'UPON THE IMPROPRIETY': 1, 'THE IMPROPRIETY OF': 1, 'IMPROPRIETY OF EXECUTIVE': 1, 'OF EXECUTIVE INTERFERENCE': 1, 'EXECUTIVE INTERFERENCE IN': 1, 'INTERFERENCE IN THE': 1, 'IN THE LEGISLATION': 1, 'LEGISLATION OF CONGRESS--THAT': 1, 'OF CONGRESS--THAT THE': 1, 'CONGRESS--THAT THE ARTICLE': 1, 'THE ARTICLE IN': 1, 'ARTICLE IN THE': 1, 'THE CONSTITUTION MAKING': 1, 'CONSTITUTION MAKING IT': 1, 'MAKING IT THE': 1, 'IT THE DUTY': 1, 'PRESIDENT TO COMMUNICATE': 1, 'TO COMMUNICATE INFORMATION': 1, 'COMMUNICATE INFORMATION AND': 1, 'INFORMATION AND AUTHORIZING': 1, 'AND AUTHORIZING HIM': 1, 'AUTHORIZING HIM TO': 1, 'HIM TO RECOMMEND': 1, 'TO RECOMMEND MEASURES': 1, 'RECOMMEND MEASURES WAS': 1, 'MEASURES WAS NOT': 1, 'WAS NOT INTENDED': 1, 'NOT INTENDED TO': 1, 'INTENDED TO MAKE': 1, 'TO MAKE HIM': 1, 'MAKE HIM THE': 1, 'HIM THE SOURCE': 1, 'THE SOURCE IN': 1, 'SOURCE IN LEGISLATION': 1, 'IN LEGISLATION AND': 1, 'LEGISLATION AND IN': 1, 'AND IN PARTICULAR': 1, 'IN PARTICULAR THAT': 1, 'PARTICULAR THAT HE': 1, 'THAT HE SHOULD': 1, 'HE SHOULD NEVER': 1, 'NEVER BE LOOKED': 1, 'BE LOOKED TO': 1, 'LOOKED TO FOR': 1, 'TO FOR SCHEMES': 1, 'FOR SCHEMES OF': 1, 'SCHEMES OF FINANCE': 1, 'WOULD BE VERY': 1, 'BE VERY STRANGE': 1, 'VERY STRANGE INDEED': 1, 'THE CONSTITUTION SHOULD': 1, 'CONSTITUTION SHOULD HAVE': 1, 'SHOULD HAVE STRICTLY': 1, 'HAVE STRICTLY FORBIDDEN': 1, 'STRICTLY FORBIDDEN ONE': 1, 'FORBIDDEN ONE BRANCH': 1, 'ONE BRANCH OF': 1, 'THE LEGISLATURE FROM': 1, 'LEGISLATURE FROM INTERFERING': 1, 'FROM INTERFERING IN': 1, 'INTERFERING IN THE': 1, 'IN THE ORIGINATION': 1, 'THE ORIGINATION OF': 1, 'ORIGINATION OF SUCH': 1, 'OF SUCH BILLS': 1, 'SUCH BILLS AND': 1, 'BILLS AND THAT': 1, 'AND THAT IT': 1, 'THAT IT SHOULD': 1, 'SHOULD BE CONSIDERED': 1, 'BE CONSIDERED PROPER': 1, 'CONSIDERED PROPER THAT': 1, 'PROPER THAT AN': 1, 'THAT AN ALTOGETHER': 1, 'AN ALTOGETHER DIFFERENT': 1, 'ALTOGETHER DIFFERENT DEPARTMENT': 1, 'DIFFERENT DEPARTMENT OF': 1, 'SHOULD BE PERMITTED': 1, 'BE PERMITTED TO': 1, 'PERMITTED TO DO': 1, 'TO DO SO': 1, 'SOME OF OUR': 1, 'OF OUR BEST': 1, 'OUR BEST POLITICAL': 1, 'BEST POLITICAL MAXIMS': 1, 'POLITICAL MAXIMS AND': 1, 'MAXIMS AND OPINIONS': 1, 'AND OPINIONS HAVE': 1, 'OPINIONS HAVE BEEN': 1, 'HAVE BEEN DRAWN': 1, 'BEEN DRAWN FROM': 1, 'DRAWN FROM OUR': 1, 'FROM OUR PARENT': 1, 'OUR PARENT ISLE': 1, 'THERE ARE OTHERS': 1, 'ARE OTHERS HOWEVER': 1, 'OTHERS HOWEVER WHICH': 1, 'HOWEVER WHICH CAN': 1, 'WHICH CAN NOT': 1, 'NOT BE INTRODUCED': 1, 'BE INTRODUCED IN': 1, 'INTRODUCED IN OUR': 1, 'OUR SYSTEM WITHOUT': 1, 'SYSTEM WITHOUT SINGULAR': 1, 'WITHOUT SINGULAR INCONGRUITY': 1, 'SINGULAR INCONGRUITY AND': 1, 'INCONGRUITY AND THE': 1, 'AND THE PRODUCTION': 1, 'THE PRODUCTION OF': 1, 'PRODUCTION OF MUCH': 1, 'OF MUCH MISCHIEF': 1, 'MUCH MISCHIEF AND': 1, 'MISCHIEF AND THIS': 1, 'AND THIS I': 1, 'THIS I CONCEIVE': 1, 'I CONCEIVE TO': 1, 'CONCEIVE TO BE': 1, 'TO BE ONE': 1, 'NO MATTER IN': 1, 'MATTER IN WHICH': 1, 'IN WHICH OF': 1, 'WHICH OF THE': 1, 'OF THE HOUSES': 1, 'THE HOUSES OF': 1, 'HOUSES OF PARLIAMENT': 1, 'OF PARLIAMENT A': 1, 'PARLIAMENT A BILL': 1, 'A BILL MAY': 1, 'BILL MAY ORIGINATE': 1, 'MAY ORIGINATE NOR': 1, 'ORIGINATE NOR BY': 1, 'NOR BY WHOM': 1, 'BY WHOM INTRODUCED--A': 1, 'WHOM INTRODUCED--A MINISTER': 1, 'INTRODUCED--A MINISTER OR': 1, 'MINISTER OR A': 1, 'OR A MEMBER': 1, 'A MEMBER OF': 1, 'MEMBER OF THE': 1, 'OF THE OPPOSITION--BY': 1, 'THE OPPOSITION--BY THE': 1, 'OPPOSITION--BY THE FICTION': 1, 'THE FICTION OF': 1, 'FICTION OF LAW': 1, 'OF LAW OR': 1, 'LAW OR RATHER': 1, 'OR RATHER OF': 1, 'RATHER OF CONSTITUTIONAL': 1, 'OF CONSTITUTIONAL PRINCIPLE': 1, 'CONSTITUTIONAL PRINCIPLE THE': 1, 'PRINCIPLE THE SOVEREIGN': 1, 'THE SOVEREIGN IS': 1, 'SOVEREIGN IS SUPPOSED': 1, 'IS SUPPOSED TO': 1, 'TO HAVE PREPARED': 1, 'HAVE PREPARED IT': 1, 'PREPARED IT AGREEABLY': 1, 'IT AGREEABLY TO': 1, 'AGREEABLY TO HIS': 1, 'TO HIS WILL': 1, 'HIS WILL AND': 1, 'WILL AND THEN': 1, 'AND THEN SUBMITTED': 1, 'THEN SUBMITTED IT': 1, 'SUBMITTED IT TO': 1, 'IT TO PARLIAMENT': 1, 'TO PARLIAMENT FOR': 1, 'PARLIAMENT FOR THEIR': 1, 'FOR THEIR ADVICE': 1, 'THEIR ADVICE AND': 1, 'ADVICE AND CONSENT': 1, 'NOW THE VERY': 1, 'THE VERY REVERSE': 1, 'VERY REVERSE IS': 1, 'REVERSE IS THE': 1, 'IS THE CASE': 1, 'THE CASE HERE': 1, 'CASE HERE NOT': 1, 'HERE NOT ONLY': 1, 'NOT ONLY WITH': 1, 'ONLY WITH REGARD': 1, 'WITH REGARD TO': 1, 'REGARD TO THE': 1, 'TO THE PRINCIPLE': 1, 'THE PRINCIPLE BUT': 1, 'PRINCIPLE BUT THE': 1, 'BUT THE FORMS': 1, 'THE FORMS PRESCRIBED': 1, 'FORMS PRESCRIBED BY': 1, 'THE PRINCIPLE CERTAINLY': 1, 'PRINCIPLE CERTAINLY ASSIGNS': 1, 'CERTAINLY ASSIGNS TO': 1, 'ASSIGNS TO THE': 1, 'TO THE ONLY': 1, 'THE ONLY BODY': 1, 'ONLY BODY CONSTITUTED': 1, 'BODY CONSTITUTED BY': 1, 'CONSTITUTION THE LEGISLATIVE': 1, 'LEGISLATIVE BODY THE': 1, 'BODY THE POWER': 1, 'POWER TO MAKE': 1, 'TO MAKE LAWS': 1, 'MAKE LAWS AND': 1, 'AND THE FORMS': 1, 'THE FORMS EVEN': 1, 'FORMS EVEN DIRECT': 1, 'EVEN DIRECT THAT': 1, 'DIRECT THAT THE': 1, 'THAT THE ENACTMENT': 1, 'THE ENACTMENT SHOULD': 1, 'ENACTMENT SHOULD BE': 1, 'SHOULD BE ASCRIBED': 1, 'BE ASCRIBED TO': 1, 'ASCRIBED TO THEM': 1, 'THE SENATE IN': 1, 'SENATE IN RELATION': 1, 'RELATION TO REVENUE': 1, 'TO REVENUE BILLS': 1, 'REVENUE BILLS HAVE': 1, 'BILLS HAVE THE': 1, 'HAVE THE RIGHT': 1, 'RIGHT TO PROPOSE': 1, 'PROPOSE AMENDMENTS AND': 1, 'AMENDMENTS AND SO': 1, 'AND SO HAS': 1, 'SO HAS THE': 1, 'HAS THE EXECUTIVE': 1, 'THE EXECUTIVE BY': 1, 'EXECUTIVE BY THE': 1, 'THE POWER GIVEN': 1, 'POWER GIVEN HIM': 1, 'GIVEN HIM TO': 1, 'HIM TO RETURN': 1, 'TO RETURN THEM': 1, 'RETURN THEM TO': 1, 'TO THE HOUSE': 1, 'THE HOUSE OF': 1, 'HOUSE OF REPRESENTATIVES': 1, 'OF REPRESENTATIVES WITH': 1, 'REPRESENTATIVES WITH HIS': 1, 'WITH HIS OBJECTIONS': 1, 'IS IN HIS': 1, 'IN HIS POWER': 1, 'HIS POWER ALSO': 1, 'POWER ALSO TO': 1, 'ALSO TO PROPOSE': 1, 'PROPOSE AMENDMENTS IN': 1, 'AMENDMENTS IN THE': 1, 'IN THE EXISTING': 1, 'THE EXISTING REVENUE': 1, 'EXISTING REVENUE LAWS': 1, 'REVENUE LAWS SUGGESTED': 1, 'LAWS SUGGESTED BY': 1, 'SUGGESTED BY HIS': 1, 'BY HIS OBSERVATIONS': 1, 'HIS OBSERVATIONS UPON': 1, 'OBSERVATIONS UPON THEIR': 1, 'UPON THEIR DEFECTIVE': 1, 'THEIR DEFECTIVE OR': 1, 'DEFECTIVE OR INJURIOUS': 1, 'OR INJURIOUS OPERATION': 1, 'BUT THE DELICATE': 1, 'THE DELICATE DUTY': 1, 'DELICATE DUTY OF': 1, 'DUTY OF DEVISING': 1, 'OF DEVISING SCHEMES': 1, 'DEVISING SCHEMES OF': 1, 'SCHEMES OF REVENUE': 1, 'OF REVENUE SHOULD': 1, 'REVENUE SHOULD BE': 1, 'SHOULD BE LEFT': 1, 'BE LEFT WHERE': 1, 'LEFT WHERE THE': 1, 'WHERE THE CONSTITUTION': 1, 'CONSTITUTION HAS PLACED': 1, 'HAS PLACED IT--WITH': 1, 'PLACED IT--WITH THE': 1, 'IT--WITH THE IMMEDIATE': 1, 'THE IMMEDIATE REPRESENTATIVES': 1, 'IMMEDIATE REPRESENTATIVES OF': 1, 'REPRESENTATIVES OF THE': 1, 'FOR SIMILAR REASONS': 1, 'SIMILAR REASONS THE': 1, 'REASONS THE MODE': 1, 'MODE OF KEEPING': 1, 'KEEPING THE PUBLIC': 1, 'THE PUBLIC TREASURE': 1, 'PUBLIC TREASURE SHOULD': 1, 'TREASURE SHOULD BE': 1, 'SHOULD BE PRESCRIBED': 1, 'BE PRESCRIBED BY': 1, 'PRESCRIBED BY THEM': 1, 'BY THEM AND': 1, 'THEM AND THE': 1, 'AND THE FURTHER': 1, 'THE FURTHER REMOVED': 1, 'FURTHER REMOVED IT': 1, 'REMOVED IT MAY': 1, 'MAY BE FROM': 1, 'BE FROM THE': 1, 'FROM THE CONTROL': 1, 'EXECUTIVE THE MORE': 1, 'THE MORE WHOLESOME': 1, 'MORE WHOLESOME THE': 1, 'WHOLESOME THE ARRANGEMENT': 1, 'THE ARRANGEMENT AND': 1, 'ARRANGEMENT AND THE': 1, 'AND THE MORE': 1, 'THE MORE IN': 1, 'MORE IN ACCORDANCE': 1, 'IN ACCORDANCE WITH': 1, 'ACCORDANCE WITH REPUBLICAN': 1, 'WITH REPUBLICAN PRINCIPLE': 1, 'CONNECTED WITH THIS': 1, 'WITH THIS SUBJECT': 1, 'THIS SUBJECT IS': 1, 'SUBJECT IS THE': 1, 'IS THE CHARACTER': 1, 'OF THE CURRENCY': 1, 'THE IDEA OF': 1, 'IDEA OF MAKING': 1, 'OF MAKING IT': 1, 'MAKING IT EXCLUSIVELY': 1, 'IT EXCLUSIVELY METALLIC': 1, 'EXCLUSIVELY METALLIC HOWEVER': 1, 'METALLIC HOWEVER WELL': 1, 'HOWEVER WELL INTENDED': 1, 'WELL INTENDED APPEARS': 1, 'INTENDED APPEARS TO': 1, 'APPEARS TO ME': 1, 'TO BE FRAUGHT': 1, 'BE FRAUGHT WITH': 1, 'FRAUGHT WITH MORE': 1, 'WITH MORE FATAL': 1, 'MORE FATAL CONSEQUENCES': 1, 'FATAL CONSEQUENCES THAN': 1, 'CONSEQUENCES THAN ANY': 1, 'ANY OTHER SCHEME': 1, 'OTHER SCHEME HAVING': 1, 'SCHEME HAVING NO': 1, 'HAVING NO RELATION': 1, 'NO RELATION TO': 1, 'TO THE PERSONAL': 1, 'THE PERSONAL RIGHTS': 1, 'PERSONAL RIGHTS OF': 1, 'THE CITIZENS THAT': 1, 'CITIZENS THAT HAS': 1, 'THAT HAS EVER': 1, 'HAS EVER BEEN': 1, 'EVER BEEN DEVISED': 1, 'IF ANY SINGLE': 1, 'ANY SINGLE SCHEME': 1, 'SINGLE SCHEME COULD': 1, 'SCHEME COULD PRODUCE': 1, 'COULD PRODUCE THE': 1, 'PRODUCE THE EFFECT': 1, 'THE EFFECT OF': 1, 'EFFECT OF ARRESTING': 1, 'OF ARRESTING AT': 1, 'ARRESTING AT ONCE': 1, 'AT ONCE THAT': 1, 'ONCE THAT MUTATION': 1, 'THAT MUTATION OF': 1, 'MUTATION OF CONDITION': 1, 'OF CONDITION BY': 1, 'CONDITION BY WHICH': 1, 'BY WHICH THOUSANDS': 1, 'WHICH THOUSANDS OF': 1, 'THOUSANDS OF OUR': 1, 'OF OUR MOST': 1, 'OUR MOST INDIGENT': 1, 'MOST INDIGENT FELLOW-CITIZENS': 1, 'INDIGENT FELLOW-CITIZENS BY': 1, 'FELLOW-CITIZENS BY THEIR': 1, 'BY THEIR INDUSTRY': 1, 'THEIR INDUSTRY AND': 1, 'INDUSTRY AND ENTERPRISE': 1, 'AND ENTERPRISE ARE': 1, 'ENTERPRISE ARE RAISED': 1, 'ARE RAISED TO': 1, 'RAISED TO THE': 1, 'TO THE POSSESSION': 1, 'THE POSSESSION OF': 1, 'POSSESSION OF WEALTH': 1, 'OF WEALTH THAT': 1, 'WEALTH THAT IS': 1, 'THAT IS THE': 1, 'IS THE ONE': 1, 'THERE IS ONE': 1, 'IS ONE MEASURE': 1, 'ONE MEASURE BETTER': 1, 'MEASURE BETTER CALCULATED': 1, 'BETTER CALCULATED THAN': 1, 'CALCULATED THAN ANOTHER': 1, 'THAN ANOTHER TO': 1, 'ANOTHER TO PRODUCE': 1, 'TO PRODUCE THAT': 1, 'PRODUCE THAT STATE': 1, 'THAT STATE OF': 1, 'OF THINGS SO': 1, 'THINGS SO MUCH': 1, 'SO MUCH DEPRECATED': 1, 'MUCH DEPRECATED BY': 1, 'DEPRECATED BY ALL': 1, 'BY ALL TRUE': 1, 'ALL TRUE REPUBLICANS': 1, 'TRUE REPUBLICANS BY': 1, 'REPUBLICANS BY WHICH': 1, 'WHICH THE RICH': 1, 'THE RICH ARE': 1, 'RICH ARE DAILY': 1, 'ARE DAILY ADDING': 1, 'DAILY ADDING TO': 1, 'ADDING TO THEIR': 1, 'TO THEIR HOARDS': 1, 'THEIR HOARDS AND': 1, 'HOARDS AND THE': 1, 'AND THE POOR': 1, 'THE POOR SINKING': 1, 'POOR SINKING DEEPER': 1, 'SINKING DEEPER INTO': 1, 'DEEPER INTO PENURY': 1, 'INTO PENURY IT': 1, 'PENURY IT IS': 1, 'OR IF THERE': 1, 'IS A PROCESS': 1, 'A PROCESS BY': 1, 'PROCESS BY WHICH': 1, 'WHICH THE CHARACTER': 1, 'THE COUNTRY FOR': 1, 'COUNTRY FOR GENEROSITY': 1, 'FOR GENEROSITY AND': 1, 'GENEROSITY AND NOBLENESS': 1, 'AND NOBLENESS OF': 1, 'NOBLENESS OF FEELING': 1, 'OF FEELING MAY': 1, 'FEELING MAY BE': 1, 'MAY BE DESTROYED': 1, 'BE DESTROYED BY': 1, 'DESTROYED BY THE': 1, 'GREAT INCREASE AND': 1, 'INCREASE AND NECK': 1, 'AND NECK TOLERATION': 1, 'NECK TOLERATION OF': 1, 'TOLERATION OF USURY': 1, 'OF USURY IT': 1, 'USURY IT IS': 1, 'AMONGST THE OTHER': 1, 'THE OTHER DUTIES': 1, 'OTHER DUTIES OF': 1, 'DUTIES OF A': 1, 'OF A DELICATE': 1, 'A DELICATE CHARACTER': 1, 'DELICATE CHARACTER WHICH': 1, 'CHARACTER WHICH THE': 1, 'THE PRESIDENT IS': 1, 'PRESIDENT IS CALLED': 1, 'IS CALLED UPON': 1, 'TO PERFORM IS': 1, 'PERFORM IS THE': 1, 'IS THE SUPERVISION': 1, 'THE SUPERVISION OF': 1, 'SUPERVISION OF THE': 1, 'GOVERNMENT OF THE': 1, 'OF THE TERRITORIES': 1, 'THE TERRITORIES OF': 1, 'TERRITORIES OF THE': 1, 'THOSE OF THEM': 1, 'OF THEM WHICH': 1, 'THEM WHICH ARE': 1, 'WHICH ARE DESTINED': 1, 'ARE DESTINED TO': 1, 'DESTINED TO BECOME': 1, 'TO BECOME MEMBERS': 1, 'BECOME MEMBERS OF': 1, 'MEMBERS OF OUR': 1, 'OF OUR GREAT': 1, 'OUR GREAT POLITICAL': 1, 'GREAT POLITICAL FAMILY': 1, 'POLITICAL FAMILY ARE': 1, 'FAMILY ARE COMPENSATED': 1, 'ARE COMPENSATED BY': 1, 'COMPENSATED BY THEIR': 1, 'BY THEIR RAPID': 1, 'THEIR RAPID PROGRESS': 1, 'RAPID PROGRESS FROM': 1, 'PROGRESS FROM INFANCY': 1, 'FROM INFANCY TO': 1, 'INFANCY TO MANHOOD': 1, 'TO MANHOOD FOR': 1, 'MANHOOD FOR THE': 1, 'FOR THE PARTIAL': 1, 'THE PARTIAL AND': 1, 'PARTIAL AND TEMPORARY': 1, 'AND TEMPORARY DEPRIVATION': 1, 'TEMPORARY DEPRIVATION OF': 1, 'DEPRIVATION OF THEIR': 1, 'THEIR POLITICAL RIGHTS': 1, 'IS IN THIS': 1, 'IN THIS DISTRICT': 1, 'THIS DISTRICT ONLY': 1, 'DISTRICT ONLY WHERE': 1, 'ONLY WHERE AMERICAN': 1, 'WHERE AMERICAN CITIZENS': 1, 'AMERICAN CITIZENS ARE': 1, 'CITIZENS ARE TO': 1, 'ARE TO BE': 1, 'BE FOUND WHO': 1, 'FOUND WHO UNDER': 1, 'WHO UNDER A': 1, 'UNDER A SETTLED': 1, 'A SETTLED POLICY': 1, 'SETTLED POLICY ARE': 1, 'POLICY ARE DEPRIVED': 1, 'ARE DEPRIVED OF': 1, 'DEPRIVED OF MANY': 1, 'OF MANY IMPORTANT': 1, 'MANY IMPORTANT POLITICAL': 1, 'IMPORTANT POLITICAL PRIVILEGES': 1, 'POLITICAL PRIVILEGES WITHOUT': 1, 'PRIVILEGES WITHOUT ANY': 1, 'WITHOUT ANY INSPIRING': 1, 'ANY INSPIRING HOPE': 1, 'INSPIRING HOPE AS': 1, 'HOPE AS TO': 1, 'TO THE FUTURE': 1, 'THEIR ONLY CONSOLATION': 1, 'ONLY CONSOLATION UNDER': 1, 'CONSOLATION UNDER CIRCUMSTANCES': 1, 'UNDER CIRCUMSTANCES OF': 1, 'CIRCUMSTANCES OF SUCH': 1, 'OF SUCH DEPRIVATION': 1, 'SUCH DEPRIVATION IS': 1, 'DEPRIVATION IS THAT': 1, 'IS THAT OF': 1, 'THAT OF THE': 1, 'OF THE DEVOTED': 1, 'THE DEVOTED EXTERIOR': 1, 'DEVOTED EXTERIOR GUARDS': 1, 'EXTERIOR GUARDS OF': 1, 'GUARDS OF A': 1, 'OF A CAMP--THAT': 1, 'A CAMP--THAT THEIR': 1, 'CAMP--THAT THEIR SUFFERINGS': 1, 'THEIR SUFFERINGS SECURE': 1, 'SUFFERINGS SECURE TRANQUILLITY': 1, 'SECURE TRANQUILLITY AND': 1, 'TRANQUILLITY AND SAFETY': 1, 'AND SAFETY WITHIN': 1, 'ARE THERE ANY': 1, 'THERE ANY OF': 1, 'ANY OF THEIR': 1, 'OF THEIR COUNTRYMEN': 1, 'THEIR COUNTRYMEN WHO': 1, 'COUNTRYMEN WHO WOULD': 1, 'WHO WOULD SUBJECT': 1, 'WOULD SUBJECT THEM': 1, 'SUBJECT THEM TO': 1, 'THEM TO GREATER': 1, 'TO GREATER SACRIFICES': 1, 'GREATER SACRIFICES TO': 1, 'SACRIFICES TO ANY': 1, 'TO ANY OTHER': 1, 'ANY OTHER HUMILIATIONS': 1, 'OTHER HUMILIATIONS THAN': 1, 'HUMILIATIONS THAN THOSE': 1, 'THAN THOSE ESSENTIALLY': 1, 'THOSE ESSENTIALLY NECESSARY': 1, 'ESSENTIALLY NECESSARY TO': 1, 'NECESSARY TO THE': 1, 'THE SECURITY OF': 1, 'SECURITY OF THE': 1, 'OF THE OBJECT': 1, 'THE OBJECT FOR': 1, 'OBJECT FOR WHICH': 1, 'WHICH THEY WERE': 1, 'THEY WERE THUS': 1, 'WERE THUS SEPARATED': 1, 'THUS SEPARATED FROM': 1, 'SEPARATED FROM THEIR': 1, 'FROM THEIR FELLOW-CITIZENS': 1, 'THEIR FELLOW-CITIZENS ARE': 1, 'FELLOW-CITIZENS ARE THEIR': 1, 'ARE THEIR RIGHTS': 1, 'THEIR RIGHTS ALONE': 1, 'RIGHTS ALONE NOT': 1, 'ALONE NOT TO': 1, 'TO BE GUARANTEED': 1, 'BE GUARANTEED BY': 1, 'GUARANTEED BY THE': 1, 'BY THE APPLICATION': 1, 'THE APPLICATION OF': 1, 'APPLICATION OF THOSE': 1, 'OF THOSE GREAT': 1, 'THOSE GREAT PRINCIPLES': 1, 'GREAT PRINCIPLES UPON': 1, 'PRINCIPLES UPON WHICH': 1, 'UPON WHICH ALL': 1, 'WHICH ALL OUR': 1, 'ALL OUR CONSTITUTIONS': 1, 'OUR CONSTITUTIONS ARE': 1, 'CONSTITUTIONS ARE FOUNDED': 1, 'ARE FOUNDED WE': 1, 'FOUNDED WE ARE': 1, 'WE ARE TOLD': 1, 'ARE TOLD BY': 1, 'TOLD BY THE': 1, 'BY THE GREATEST': 1, 'THE GREATEST OF': 1, 'GREATEST OF BRITISH': 1, 'OF BRITISH ORATORS': 1, 'BRITISH ORATORS AND': 1, 'ORATORS AND STATESMEN': 1, 'AND STATESMEN THAT': 1, 'STATESMEN THAT AT': 1, 'THAT AT THE': 1, 'AT THE COMMENCEMENT': 1, 'COMMENCEMENT OF THE': 1, 'OF THE WAR': 1, 'THE WAR OF': 1, 'WAR OF THE': 1, 'OF THE REVOLUTION': 1, 'THE REVOLUTION THE': 1, 'REVOLUTION THE MOST': 1, 'THE MOST STUPID': 1, 'MOST STUPID MEN': 1, 'STUPID MEN IN': 1, 'MEN IN ENGLAND': 1, 'IN ENGLAND SPOKE': 1, 'ENGLAND SPOKE OF': 1, 'SPOKE OF THEIR': 1, 'OF THEIR AMERICAN': 1, 'THEIR AMERICAN SUBJECTS': 1, 'AMERICAN SUBJECTS ARE': 1, 'SUBJECTS ARE THERE': 1, 'ARE THERE INDEED': 1, 'THERE INDEED CITIZENS': 1, 'INDEED CITIZENS OF': 1, 'CITIZENS OF ANY': 1, 'OF ANY OF': 1, 'ANY OF OUR': 1, 'OF OUR STATES': 1, 'OUR STATES WHO': 1, 'STATES WHO HAVE': 1, 'WHO HAVE DREAMED': 1, 'HAVE DREAMED OF': 1, 'DREAMED OF THEIR': 1, 'THEIR SUBJECTS IN': 1, 'SUBJECTS IN THE': 1, 'OF COLUMBIA SUCH': 1, 'COLUMBIA SUCH DREAMS': 1, 'SUCH DREAMS CAN': 1, 'DREAMS CAN NEVER': 1, 'CAN NEVER BE': 1, 'NEVER BE REALIZED': 1, 'BE REALIZED BY': 1, 'REALIZED BY ANY': 1, 'BY ANY AGENCY': 1, 'ANY AGENCY OF': 1, 'AGENCY OF MINE': 1, 'OF THE DISTRICT': 1, 'OF COLUMBIA ARE': 1, 'COLUMBIA ARE NOT': 1, 'ARE NOT THE': 1, 'NOT THE SUBJECTS': 1, 'THE SUBJECTS OF': 1, 'SUBJECTS OF THE': 1, 'THE STATES BUT': 1, 'STATES BUT FREE': 1, 'BUT FREE AMERICAN': 1, 'FREE AMERICAN CITIZENS': 1, 'THE LATTER CONDITION': 1, 'LATTER CONDITION WHEN': 1, 'CONDITION WHEN THE': 1, 'THE CONSTITUTION WAS': 1, 'CONSTITUTION WAS FORMED': 1, 'WAS FORMED NO': 1, 'FORMED NO WORDS': 1, 'NO WORDS USED': 1, 'WORDS USED IN': 1, 'USED IN THAT': 1, 'IN THAT INSTRUMENT': 1, 'THAT INSTRUMENT COULD': 1, 'INSTRUMENT COULD HAVE': 1, 'COULD HAVE BEEN': 1, 'HAVE BEEN INTENDED': 1, 'BEEN INTENDED TO': 1, 'INTENDED TO DEPRIVE': 1, 'TO DEPRIVE THEM': 1, 'DEPRIVE THEM OF': 1, 'THEM OF THAT': 1, 'OF THAT CHARACTER': 1, 'THERE IS ANYTHING': 1, 'IS ANYTHING IN': 1, 'ANYTHING IN THE': 1, 'IN THE GREAT': 1, 'THE GREAT PRINCIPLE': 1, 'GREAT PRINCIPLE OF': 1, 'PRINCIPLE OF UNALIENABLE': 1, 'OF UNALIENABLE RIGHTS': 1, 'UNALIENABLE RIGHTS SO': 1, 'RIGHTS SO EMPHATICALLY': 1, 'SO EMPHATICALLY INSISTED': 1, 'EMPHATICALLY INSISTED UPON': 1, 'INSISTED UPON IN': 1, 'UPON IN OUR': 1, 'IN OUR DECLARATION': 1, 'OUR DECLARATION OF': 1, 'DECLARATION OF INDEPENDENCE': 1, 'OF INDEPENDENCE THEY': 1, 'INDEPENDENCE THEY COULD': 1, 'THEY COULD NEITHER': 1, 'COULD NEITHER MAKE': 1, 'NEITHER MAKE NOR': 1, 'MAKE NOR THE': 1, 'NOR THE UNITED': 1, 'UNITED STATES ACCEPT': 1, 'STATES ACCEPT A': 1, 'ACCEPT A SURRENDER': 1, 'A SURRENDER OF': 1, 'SURRENDER OF THEIR': 1, 'OF THEIR LIBERTIES': 1, 'THEIR LIBERTIES AND': 1, 'LIBERTIES AND BECOME': 1, 'AND BECOME THE': 1, \"BECOME THE SUBJECTS'--IN\": 1, \"THE SUBJECTS'--IN OTHER\": 1, \"SUBJECTS'--IN OTHER WORDS\": 1, 'OTHER WORDS THE': 1, 'WORDS THE SLAVES--OF': 1, 'THE SLAVES--OF THEIR': 1, 'SLAVES--OF THEIR FORMER': 1, 'THEIR FORMER FELLOW-CITIZENS': 1, 'IF THIS BE': 1, 'THIS BE TRUE--AND': 1, 'BE TRUE--AND IT': 1, 'TRUE--AND IT WILL': 1, 'IT WILL SCARCELY': 1, 'WILL SCARCELY BE': 1, 'SCARCELY BE DENIED': 1, 'BE DENIED BY': 1, 'DENIED BY ANYONE': 1, 'BY ANYONE WHO': 1, 'ANYONE WHO HAS': 1, 'WHO HAS A': 1, 'HAS A CORRECT': 1, 'A CORRECT IDEA': 1, 'CORRECT IDEA OF': 1, 'IDEA OF HIS': 1, 'OF HIS OWN': 1, 'HIS OWN RIGHTS': 1, 'OWN RIGHTS AS': 1, 'RIGHTS AS AN': 1, 'AS AN AMERICAN': 1, 'AN AMERICAN CITIZEN--THE': 1, 'AMERICAN CITIZEN--THE GRANT': 1, 'CITIZEN--THE GRANT TO': 1, 'GRANT TO CONGRESS': 1, 'TO CONGRESS OF': 1, 'CONGRESS OF EXCLUSIVE': 1, 'OF EXCLUSIVE JURISDICTION': 1, 'EXCLUSIVE JURISDICTION IN': 1, 'JURISDICTION IN THE': 1, 'OF COLUMBIA CAN': 1, 'COLUMBIA CAN BE': 1, 'CAN BE INTERPRETED': 1, 'BE INTERPRETED SO': 1, 'INTERPRETED SO FAR': 1, 'FAR AS RESPECTS': 1, 'AS RESPECTS THE': 1, 'RESPECTS THE AGGREGATE': 1, 'THE AGGREGATE PEOPLE': 1, 'AGGREGATE PEOPLE OF': 1, 'UNITED STATES AS': 1, 'STATES AS MEANING': 1, 'AS MEANING NOTHING': 1, 'MEANING NOTHING MORE': 1, 'NOTHING MORE THAN': 1, 'MORE THAN TO': 1, 'THAN TO ALLOW': 1, 'TO ALLOW TO': 1, 'ALLOW TO CONGRESS': 1, 'TO CONGRESS THE': 1, 'CONGRESS THE CONTROLLING': 1, 'THE CONTROLLING POWER': 1, 'CONTROLLING POWER NECESSARY': 1, 'POWER NECESSARY TO': 1, 'NECESSARY TO AFFORD': 1, 'TO AFFORD A': 1, 'AFFORD A FREE': 1, 'A FREE AND': 1, 'FREE AND SAFE': 1, 'AND SAFE EXERCISE': 1, 'SAFE EXERCISE OF': 1, 'OF THE FUNCTIONS': 1, 'THE FUNCTIONS ASSIGNED': 1, 'FUNCTIONS ASSIGNED TO': 1, 'GENERAL GOVERNMENT BY': 1, 'GOVERNMENT BY THE': 1, 'IN ALL OTHER': 1, 'ALL OTHER RESPECTS': 1, 'OTHER RESPECTS THE': 1, 'RESPECTS THE LEGISLATION': 1, 'LEGISLATION OF CONGRESS': 1, 'OF CONGRESS SHOULD': 1, 'CONGRESS SHOULD BE': 1, 'SHOULD BE ADAPTED': 1, 'BE ADAPTED TO': 1, 'ADAPTED TO THEIR': 1, 'TO THEIR PECULIAR': 1, 'THEIR PECULIAR POSITION': 1, 'PECULIAR POSITION AND': 1, 'POSITION AND WANTS': 1, 'AND WANTS AND': 1, 'WANTS AND BE': 1, 'AND BE CONFORMABLE': 1, 'BE CONFORMABLE WITH': 1, 'CONFORMABLE WITH THEIR': 1, 'WITH THEIR DELIBERATE': 1, 'THEIR DELIBERATE OPINIONS': 1, 'DELIBERATE OPINIONS OF': 1, 'OPINIONS OF THEIR': 1, 'THEIR OWN INTERESTS': 1, 'I HAVE SPOKEN': 1, 'HAVE SPOKEN OF': 1, 'SPOKEN OF THE': 1, 'OF THE NECESSITY': 1, 'THE NECESSITY OF': 1, 'NECESSITY OF KEEPING': 1, 'KEEPING THE RESPECTIVE': 1, 'THE RESPECTIVE DEPARTMENTS': 1, 'RESPECTIVE DEPARTMENTS OF': 1, 'THE GOVERNMENT AS': 1, 'GOVERNMENT AS WELL': 1, 'WELL AS ALL': 1, 'AS ALL THE': 1, 'ALL THE OTHER': 1, 'THE OTHER AUTHORITIES': 1, 'OTHER AUTHORITIES OF': 1, 'AUTHORITIES OF OUR': 1, 'OUR COUNTRY WITHIN': 1, 'COUNTRY WITHIN THEIR': 1, 'WITHIN THEIR APPROPRIATE': 1, 'THEIR APPROPRIATE ORBITS': 1, 'THIS IS A': 1, 'IS A MATTER': 1, 'A MATTER OF': 1, 'MATTER OF DIFFICULTY': 1, 'OF DIFFICULTY IN': 1, 'DIFFICULTY IN SOME': 1, 'IN SOME CASES': 1, 'SOME CASES AS': 1, 'CASES AS THE': 1, 'AS THE POWERS': 1, 'RESPECTIVELY CLAIM ARE': 1, 'CLAIM ARE OFTEN': 1, 'ARE OFTEN NOT': 1, 'OFTEN NOT DEFINED': 1, 'NOT DEFINED BY': 1, 'DEFINED BY ANY': 1, 'BY ANY DISTINCT': 1, 'ANY DISTINCT LINES': 1, 'MISCHIEVOUS HOWEVER IN': 1, 'HOWEVER IN THEIR': 1, 'IN THEIR TENDENCIES': 1, 'THEIR TENDENCIES AS': 1, 'TENDENCIES AS COLLISIONS': 1, 'AS COLLISIONS OF': 1, 'COLLISIONS OF THIS': 1, 'OF THIS KIND': 1, 'THIS KIND MAY': 1, 'KIND MAY BE': 1, 'MAY BE THOSE': 1, 'BE THOSE WHICH': 1, 'THOSE WHICH ARISE': 1, 'WHICH ARISE BETWEEN': 1, 'ARISE BETWEEN THE': 1, 'BETWEEN THE RESPECTIVE': 1, 'THE RESPECTIVE COMMUNITIES': 1, 'RESPECTIVE COMMUNITIES WHICH': 1, 'COMMUNITIES WHICH FOR': 1, 'WHICH FOR CERTAIN': 1, 'FOR CERTAIN PURPOSES': 1, 'CERTAIN PURPOSES COMPOSE': 1, 'PURPOSES COMPOSE ONE': 1, 'COMPOSE ONE NATION': 1, 'ONE NATION ARE': 1, 'NATION ARE MUCH': 1, 'ARE MUCH MORE': 1, 'MUCH MORE SO': 1, 'MORE SO FOR': 1, 'SO FOR NO': 1, 'FOR NO SUCH': 1, 'NO SUCH NATION': 1, 'SUCH NATION CAN': 1, 'NATION CAN LONG': 1, 'CAN LONG EXIST': 1, 'LONG EXIST WITHOUT': 1, 'EXIST WITHOUT THE': 1, 'WITHOUT THE CAREFUL': 1, 'THE CAREFUL CULTURE': 1, 'CAREFUL CULTURE OF': 1, 'CULTURE OF THOSE': 1, 'OF THOSE FEELINGS': 1, 'THOSE FEELINGS OF': 1, 'FEELINGS OF CONFIDENCE': 1, 'OF CONFIDENCE AND': 1, 'CONFIDENCE AND AFFECTION': 1, 'AND AFFECTION WHICH': 1, 'AFFECTION WHICH ARE': 1, 'WHICH ARE THE': 1, 'ARE THE EFFECTIVE': 1, 'THE EFFECTIVE BONDS': 1, 'EFFECTIVE BONDS TO': 1, 'BONDS TO UNION': 1, 'TO UNION BETWEEN': 1, 'UNION BETWEEN FREE': 1, 'BETWEEN FREE AND': 1, 'FREE AND CONFEDERATED': 1, 'AND CONFEDERATED STATES': 1, 'STRONG AS IS': 1, 'AS IS THE': 1, 'IS THE TIE': 1, 'THE TIE OF': 1, 'OF INTEREST IT': 1, 'INTEREST IT HAS': 1, 'HAS BEEN OFTEN': 1, 'BEEN OFTEN FOUND': 1, 'OFTEN FOUND INEFFECTUAL': 1, 'MEN BLINDED BY': 1, 'BLINDED BY THEIR': 1, 'BY THEIR PASSIONS': 1, 'THEIR PASSIONS HAVE': 1, 'PASSIONS HAVE BEEN': 1, 'HAVE BEEN KNOWN': 1, 'BEEN KNOWN TO': 1, 'KNOWN TO ADOPT': 1, 'TO ADOPT MEASURES': 1, 'ADOPT MEASURES FOR': 1, 'MEASURES FOR THEIR': 1, 'FOR THEIR COUNTRY': 1, 'THEIR COUNTRY IN': 1, 'COUNTRY IN DIRECT': 1, 'IN DIRECT OPPOSITION': 1, 'DIRECT OPPOSITION TO': 1, 'OPPOSITION TO ALL': 1, 'TO ALL THE': 1, 'ALL THE SUGGESTIONS': 1, 'THE SUGGESTIONS OF': 1, 'SUGGESTIONS OF POLICY': 1, 'THE ALTERNATIVE THEN': 1, 'ALTERNATIVE THEN IS': 1, 'THEN IS TO': 1, 'IS TO DESTROY': 1, 'TO DESTROY OR': 1, 'DESTROY OR KEEP': 1, 'OR KEEP DOWN': 1, 'KEEP DOWN A': 1, 'DOWN A BAD': 1, 'A BAD PASSION': 1, 'BAD PASSION BY': 1, 'PASSION BY CREATING': 1, 'BY CREATING AND': 1, 'CREATING AND FOSTERING': 1, 'AND FOSTERING A': 1, 'FOSTERING A GOOD': 1, 'A GOOD ONE': 1, 'GOOD ONE AND': 1, 'ONE AND THIS': 1, 'AND THIS SEEMS': 1, 'THIS SEEMS TO': 1, 'SEEMS TO BE': 1, 'BE THE CORNER': 1, 'THE CORNER STONE': 1, 'CORNER STONE UPON': 1, 'STONE UPON WHICH': 1, 'WHICH OUR AMERICAN': 1, 'OUR AMERICAN POLITICAL': 1, 'AMERICAN POLITICAL ARCHITECTS': 1, 'POLITICAL ARCHITECTS HAVE': 1, 'ARCHITECTS HAVE REARED': 1, 'HAVE REARED THE': 1, 'REARED THE FABRIC': 1, 'THE FABRIC OF': 1, 'FABRIC OF OUR': 1, 'THE CEMENT WHICH': 1, 'CEMENT WHICH WAS': 1, 'WHICH WAS TO': 1, 'WAS TO BIND': 1, 'TO BIND IT': 1, 'BIND IT AND': 1, 'IT AND PERPETUATE': 1, 'AND PERPETUATE ITS': 1, 'PERPETUATE ITS EXISTENCE': 1, 'ITS EXISTENCE WAS': 1, 'EXISTENCE WAS THE': 1, 'WAS THE AFFECTIONATE': 1, 'THE AFFECTIONATE ATTACHMENT': 1, 'AFFECTIONATE ATTACHMENT BETWEEN': 1, 'ATTACHMENT BETWEEN ALL': 1, 'BETWEEN ALL ITS': 1, 'TO INSURE THE': 1, 'INSURE THE CONTINUANCE': 1, 'CONTINUANCE OF THIS': 1, 'OF THIS FEELING': 1, 'THIS FEELING PRODUCED': 1, 'FEELING PRODUCED AT': 1, 'PRODUCED AT FIRST': 1, 'AT FIRST BY': 1, 'FIRST BY A': 1, 'BY A COMMUNITY': 1, 'A COMMUNITY OF': 1, 'COMMUNITY OF DANGERS': 1, 'OF DANGERS OF': 1, 'DANGERS OF SUFFERINGS': 1, 'OF SUFFERINGS AND': 1, 'SUFFERINGS AND OF': 1, 'AND OF INTERESTS': 1, 'OF INTERESTS THE': 1, 'INTERESTS THE ADVANTAGES': 1, 'THE ADVANTAGES OF': 1, 'ADVANTAGES OF EACH': 1, 'OF EACH WERE': 1, 'EACH WERE MADE': 1, 'WERE MADE ACCESSIBLE': 1, 'MADE ACCESSIBLE TO': 1, 'ACCESSIBLE TO ALL': 1, 'NO PARTICIPATION IN': 1, 'PARTICIPATION IN ANY': 1, 'IN ANY GOOD': 1, 'ANY GOOD POSSESSED': 1, 'GOOD POSSESSED BY': 1, 'POSSESSED BY ANY': 1, 'BY ANY MEMBER': 1, 'ANY MEMBER OF': 1, 'MEMBER OF OUR': 1, 'OF OUR EXTENSIVE': 1, 'OUR EXTENSIVE CONFEDERACY': 1, 'EXTENSIVE CONFEDERACY EXCEPT': 1, 'CONFEDERACY EXCEPT IN': 1, 'EXCEPT IN DOMESTIC': 1, 'IN DOMESTIC GOVERNMENT': 1, 'DOMESTIC GOVERNMENT WAS': 1, 'GOVERNMENT WAS WITHHELD': 1, 'WAS WITHHELD FROM': 1, 'WITHHELD FROM THE': 1, 'FROM THE CITIZEN': 1, 'ANY OTHER MEMBER': 1, 'BY A PROCESS': 1, 'A PROCESS ATTENDED': 1, 'PROCESS ATTENDED WITH': 1, 'ATTENDED WITH NO': 1, 'WITH NO DIFFICULTY': 1, 'NO DIFFICULTY NO': 1, 'DIFFICULTY NO DELAY': 1, 'NO DELAY NO': 1, 'DELAY NO EXPENSE': 1, 'NO EXPENSE BUT': 1, 'EXPENSE BUT THAT': 1, 'THAT OF REMOVAL': 1, 'OF REMOVAL THE': 1, 'REMOVAL THE CITIZEN': 1, 'CITIZEN OF ONE': 1, 'OF ONE MIGHT': 1, 'ONE MIGHT BECOME': 1, 'MIGHT BECOME THE': 1, 'BECOME THE CITIZEN': 1, 'ANY OTHER AND': 1, 'OTHER AND SUCCESSIVELY': 1, 'AND SUCCESSIVELY OF': 1, 'SUCCESSIVELY OF THE': 1, 'THE LINES TOO': 1, 'LINES TOO SEPARATING': 1, 'TOO SEPARATING POWERS': 1, 'SEPARATING POWERS TO': 1, 'POWERS TO BE': 1, 'BE EXERCISED BY': 1, 'EXERCISED BY THE': 1, 'BY THE CITIZENS': 1, 'ONE STATE FROM': 1, 'STATE FROM THOSE': 1, 'FROM THOSE OF': 1, 'THOSE OF ANOTHER': 1, 'OF ANOTHER SEEM': 1, 'ANOTHER SEEM TO': 1, 'TO BE SO': 1, 'BE SO DISTINCTLY': 1, 'SO DISTINCTLY DRAWN': 1, 'DISTINCTLY DRAWN AS': 1, 'DRAWN AS TO': 1, 'AS TO LEAVE': 1, 'TO LEAVE NO': 1, 'LEAVE NO ROOM': 1, 'NO ROOM FOR': 1, 'ROOM FOR MISUNDERSTANDING': 1, 'CITIZENS OF EACH': 1, 'OF EACH STATE': 1, 'EACH STATE UNITE': 1, 'STATE UNITE IN': 1, 'UNITE IN THEIR': 1, 'IN THEIR PERSONS': 1, 'THEIR PERSONS ALL': 1, 'PERSONS ALL THE': 1, 'ALL THE PRIVILEGES': 1, 'THE PRIVILEGES WHICH': 1, 'PRIVILEGES WHICH THAT': 1, 'WHICH THAT CHARACTER': 1, 'THAT CHARACTER CONFERS': 1, 'CHARACTER CONFERS AND': 1, 'CONFERS AND ALL': 1, 'AND ALL THAT': 1, 'ALL THAT THEY': 1, 'THAT THEY MAY': 1, 'THEY MAY CLAIM': 1, 'MAY CLAIM AS': 1, 'CLAIM AS CITIZENS': 1, 'AS CITIZENS OF': 1, 'CITIZENS OF THE': 1, 'UNITED STATES BUT': 1, 'STATES BUT IN': 1, 'BUT IN NO': 1, 'IN NO CASE': 1, 'NO CASE CAN': 1, 'CASE CAN THE': 1, 'CAN THE SAME': 1, 'THE SAME PERSONS': 1, 'SAME PERSONS AT': 1, 'PERSONS AT THE': 1, 'AT THE SAME': 1, 'THE SAME TIME': 1, 'SAME TIME ACT': 1, 'TIME ACT AS': 1, 'ACT AS THE': 1, 'AS THE CITIZEN': 1, 'CITIZEN OF TWO': 1, 'OF TWO SEPARATE': 1, 'TWO SEPARATE STATES': 1, 'SEPARATE STATES AND': 1, 'STATES AND HE': 1, 'AND HE IS': 1, 'HE IS THEREFORE': 1, 'IS THEREFORE POSITIVELY': 1, 'THEREFORE POSITIVELY PRECLUDED': 1, 'POSITIVELY PRECLUDED FROM': 1, 'PRECLUDED FROM ANY': 1, 'FROM ANY INTERFERENCE': 1, 'ANY INTERFERENCE WITH': 1, 'INTERFERENCE WITH THE': 1, 'WITH THE RESERVED': 1, 'POWERS OF ANY': 1, 'OF ANY STATE': 1, 'ANY STATE BUT': 1, 'STATE BUT THAT': 1, 'THAT OF WHICH': 1, 'OF WHICH HE': 1, 'WHICH HE IS': 1, 'HE IS FOR': 1, 'IS FOR THE': 1, 'FOR THE TIME': 1, 'THE TIME BEING': 1, 'TIME BEING A': 1, 'BEING A CITIZEN': 1, 'HE MAY INDEED': 1, 'MAY INDEED OFFER': 1, 'INDEED OFFER TO': 1, 'OFFER TO THE': 1, 'TO THE CITIZENS': 1, 'CITIZENS OF OTHER': 1, 'OF OTHER STATES': 1, 'OTHER STATES HIS': 1, 'STATES HIS ADVICE': 1, 'HIS ADVICE AS': 1, 'ADVICE AS TO': 1, 'AS TO THEIR': 1, 'TO THEIR MANAGEMENT': 1, 'THEIR MANAGEMENT AND': 1, 'MANAGEMENT AND THE': 1, 'AND THE FORM': 1, 'THE FORM IN': 1, 'FORM IN WHICH': 1, 'IN WHICH IT': 1, 'WHICH IT IS': 1, 'IT IS TENDERED': 1, 'IS TENDERED IS': 1, 'TENDERED IS LEFT': 1, 'IS LEFT TO': 1, 'LEFT TO HIS': 1, 'TO HIS OWN': 1, 'HIS OWN DISCRETION': 1, 'OWN DISCRETION AND': 1, 'DISCRETION AND SENSE': 1, 'AND SENSE OF': 1, 'SENSE OF PROPRIETY': 1, 'OBSERVED HOWEVER THAT': 1, 'HOWEVER THAT ORGANIZED': 1, 'THAT ORGANIZED ASSOCIATIONS': 1, 'ORGANIZED ASSOCIATIONS OF': 1, 'ASSOCIATIONS OF CITIZENS': 1, 'OF CITIZENS REQUIRING': 1, 'CITIZENS REQUIRING COMPLIANCE': 1, 'REQUIRING COMPLIANCE WITH': 1, 'COMPLIANCE WITH THEIR': 1, 'WITH THEIR WISHES': 1, 'THEIR WISHES TOO': 1, 'WISHES TOO MUCH': 1, 'TOO MUCH RESEMBLE': 1, 'MUCH RESEMBLE THE': 1, 'RESEMBLE THE RECOMMENDATIONS': 1, 'THE RECOMMENDATIONS OF': 1, 'RECOMMENDATIONS OF ATHENS': 1, 'OF ATHENS TO': 1, 'ATHENS TO HER': 1, 'TO HER ALLIES': 1, 'HER ALLIES SUPPORTED': 1, 'ALLIES SUPPORTED BY': 1, 'SUPPORTED BY AN': 1, 'BY AN ARMED': 1, 'AN ARMED AND': 1, 'ARMED AND POWERFUL': 1, 'AND POWERFUL FLEET': 1, 'IT WAS INDEED': 1, 'WAS INDEED TO': 1, 'INDEED TO THE': 1, 'TO THE AMBITION': 1, 'THE AMBITION OF': 1, 'AMBITION OF THE': 1, 'OF THE LEADING': 1, 'THE LEADING STATES': 1, 'LEADING STATES OF': 1, 'STATES OF GREECE': 1, 'OF GREECE TO': 1, 'GREECE TO CONTROL': 1, 'THE DOMESTIC CONCERNS': 1, 'DOMESTIC CONCERNS OF': 1, 'CONCERNS OF THE': 1, 'OF THE OTHERS': 1, 'THE OTHERS THAT': 1, 'OTHERS THAT THE': 1, 'THAT THE DESTRUCTION': 1, 'DESTRUCTION OF THAT': 1, 'THAT CELEBRATED CONFEDERACY': 1, 'CELEBRATED CONFEDERACY AND': 1, 'CONFEDERACY AND SUBSEQUENTLY': 1, 'AND SUBSEQUENTLY OF': 1, 'SUBSEQUENTLY OF ALL': 1, 'OF ALL ITS': 1, 'ITS MEMBERS IS': 1, 'MEMBERS IS MAINLY': 1, 'IS MAINLY TO': 1, 'MAINLY TO BE': 1, 'TO BE ATTRIBUTED': 1, 'BE ATTRIBUTED AND': 1, 'ATTRIBUTED AND IT': 1, 'IT IS OWING': 1, 'IS OWING TO': 1, 'OWING TO THE': 1, 'TO THE ABSENCE': 1, 'THE ABSENCE OF': 1, 'ABSENCE OF THAT': 1, 'OF THAT SPIRIT': 1, 'THAT SPIRIT THAT': 1, 'SPIRIT THAT THE': 1, 'THAT THE HELVETIC': 1, 'THE HELVETIC CONFEDERACY': 1, 'HELVETIC CONFEDERACY HAS': 1, 'CONFEDERACY HAS FOR': 1, 'HAS FOR SO': 1, 'FOR SO MANY': 1, 'SO MANY YEARS': 1, 'MANY YEARS BEEN': 1, 'YEARS BEEN PRESERVED': 1, 'NEVER HAS THERE': 1, 'HAS THERE BEEN': 1, 'THERE BEEN SEEN': 1, 'BEEN SEEN IN': 1, 'SEEN IN THE': 1, 'IN THE INSTITUTIONS': 1, 'INSTITUTIONS OF THE': 1, 'OF THE SEPARATE': 1, 'THE SEPARATE MEMBERS': 1, 'SEPARATE MEMBERS OF': 1, 'MEMBERS OF ANY': 1, 'OF ANY CONFEDERACY': 1, 'ANY CONFEDERACY MORE': 1, 'CONFEDERACY MORE ELEMENTS': 1, 'MORE ELEMENTS OF': 1, 'ELEMENTS OF DISCORD': 1, 'THE PRINCIPLES AND': 1, 'PRINCIPLES AND FORMS': 1, 'FORMS OF GOVERNMENT': 1, 'OF GOVERNMENT AND': 1, 'GOVERNMENT AND RELIGION': 1, 'AND RELIGION AS': 1, 'RELIGION AS WELL': 1, 'IN THE CIRCUMSTANCES': 1, 'THE SEVERAL CANTONS': 1, 'SEVERAL CANTONS SO': 1, 'CANTONS SO MARKED': 1, 'SO MARKED A': 1, 'MARKED A DISCREPANCY': 1, 'A DISCREPANCY WAS': 1, 'DISCREPANCY WAS OBSERVABLE': 1, 'WAS OBSERVABLE AS': 1, 'OBSERVABLE AS TO': 1, 'AS TO PROMISE': 1, 'TO PROMISE ANYTHING': 1, 'PROMISE ANYTHING BUT': 1, 'ANYTHING BUT HARMONY': 1, 'BUT HARMONY IN': 1, 'HARMONY IN THEIR': 1, 'IN THEIR INTERCOURSE': 1, 'THEIR INTERCOURSE OR': 1, 'INTERCOURSE OR PERMANENCY': 1, 'OR PERMANENCY IN': 1, 'PERMANENCY IN THEIR': 1, 'IN THEIR ALLIANCE': 1, 'THEIR ALLIANCE AND': 1, 'ALLIANCE AND YET': 1, 'AND YET FOR': 1, 'YET FOR AGES': 1, 'FOR AGES NEITHER': 1, 'AGES NEITHER HAS': 1, 'NEITHER HAS BEEN': 1, 'HAS BEEN INTERRUPTED': 1, 'WITH THE POSITIVE': 1, 'THE POSITIVE BENEFITS': 1, 'POSITIVE BENEFITS WHICH': 1, 'BENEFITS WHICH THEIR': 1, 'WHICH THEIR UNION': 1, 'THEIR UNION PRODUCED': 1, 'UNION PRODUCED WITH': 1, 'PRODUCED WITH THE': 1, 'WITH THE INDEPENDENCE': 1, 'THE INDEPENDENCE AND': 1, 'INDEPENDENCE AND SAFETY': 1, 'AND SAFETY FROM': 1, 'SAFETY FROM FOREIGN': 1, 'FROM FOREIGN AGGRESSION': 1, 'FOREIGN AGGRESSION WHICH': 1, 'AGGRESSION WHICH IT': 1, 'WHICH IT SECURED': 1, 'IT SECURED THESE': 1, 'SECURED THESE SAGACIOUS': 1, 'THESE SAGACIOUS PEOPLE': 1, 'SAGACIOUS PEOPLE RESPECTED': 1, 'PEOPLE RESPECTED THE': 1, 'RESPECTED THE INSTITUTIONS': 1, 'INSTITUTIONS OF EACH': 1, 'OF EACH OTHER': 1, 'EACH OTHER HOWEVER': 1, 'OTHER HOWEVER REPUGNANT': 1, 'HOWEVER REPUGNANT TO': 1, 'REPUGNANT TO THEIR': 1, 'TO THEIR OWN': 1, 'THEIR OWN PRINCIPLES': 1, 'OWN PRINCIPLES AND': 1, 'PRINCIPLES AND PREJUDICES': 1, 'OUR CONFEDERACY FELLOW-CITIZENS': 1, 'CONFEDERACY FELLOW-CITIZENS CAN': 1, 'FELLOW-CITIZENS CAN ONLY': 1, 'CAN ONLY BE': 1, 'ONLY BE PRESERVED': 1, 'BE PRESERVED BY': 1, 'PRESERVED BY THE': 1, 'THE SAME FORBEARANCE': 1, 'OUR CITIZENS MUST': 1, 'CITIZENS MUST BE': 1, 'MUST BE CONTENT': 1, 'BE CONTENT WITH': 1, 'WITH THE EXERCISE': 1, 'THE POWERS WITH': 1, 'POWERS WITH WHICH': 1, 'WITH WHICH THE': 1, 'THE CONSTITUTION CLOTHES': 1, 'CONSTITUTION CLOTHES THEM': 1, 'THE ATTEMPT OF': 1, 'ATTEMPT OF THOSE': 1, 'OF THOSE OF': 1, 'THOSE OF ONE': 1, 'ONE STATE TO': 1, 'STATE TO CONTROL': 1, 'THE DOMESTIC INSTITUTIONS': 1, 'DOMESTIC INSTITUTIONS OF': 1, 'INSTITUTIONS OF ANOTHER': 1, 'OF ANOTHER CAN': 1, 'ANOTHER CAN ONLY': 1, 'CAN ONLY RESULT': 1, 'ONLY RESULT IN': 1, 'RESULT IN FEELINGS': 1, 'IN FEELINGS OF': 1, 'FEELINGS OF DISTRUST': 1, 'OF DISTRUST AND': 1, 'DISTRUST AND JEALOUSY': 1, 'AND JEALOUSY THE': 1, 'JEALOUSY THE CERTAIN': 1, 'THE CERTAIN HARBINGERS': 1, 'CERTAIN HARBINGERS OF': 1, 'HARBINGERS OF DISUNION': 1, 'OF DISUNION VIOLENCE': 1, 'DISUNION VIOLENCE AND': 1, 'VIOLENCE AND CIVIL': 1, 'AND CIVIL WAR': 1, 'CIVIL WAR AND': 1, 'WAR AND THE': 1, 'AND THE ULTIMATE': 1, 'THE ULTIMATE DESTRUCTION': 1, 'ULTIMATE DESTRUCTION OF': 1, 'DESTRUCTION OF OUR': 1, 'OF OUR FREE': 1, 'OUR FREE INSTITUTIONS': 1, 'OUR CONFEDERACY IS': 1, 'CONFEDERACY IS PERFECTLY': 1, 'IS PERFECTLY ILLUSTRATED': 1, 'PERFECTLY ILLUSTRATED BY': 1, 'ILLUSTRATED BY THE': 1, 'BY THE TERMS': 1, 'THE TERMS AND': 1, 'TERMS AND PRINCIPLES': 1, 'AND PRINCIPLES GOVERNING': 1, 'PRINCIPLES GOVERNING A': 1, 'GOVERNING A COMMON': 1, 'A COMMON COPARTNERSHIP': 1, 'IS A FUND': 1, 'A FUND OF': 1, 'FUND OF POWER': 1, 'BE EXERCISED UNDER': 1, 'EXERCISED UNDER THE': 1, 'UNDER THE DIRECTION': 1, 'THE DIRECTION OF': 1, 'DIRECTION OF THE': 1, 'OF THE JOINT': 1, 'THE JOINT COUNCILS': 1, 'JOINT COUNCILS OF': 1, 'COUNCILS OF THE': 1, 'OF THE ALLIED': 1, 'THE ALLIED MEMBERS': 1, 'ALLIED MEMBERS BUT': 1, 'MEMBERS BUT THAT': 1, 'BUT THAT WHICH': 1, 'HAS BEEN RESERVED': 1, 'BEEN RESERVED BY': 1, 'RESERVED BY THE': 1, 'BY THE INDIVIDUAL': 1, 'INDIVIDUAL MEMBERS IS': 1, 'MEMBERS IS INTANGIBLE': 1, 'IS INTANGIBLE BY': 1, 'INTANGIBLE BY THE': 1, 'BY THE COMMON': 1, 'THE COMMON GOVERNMENT': 1, 'COMMON GOVERNMENT OR': 1, 'GOVERNMENT OR THE': 1, 'OR THE INDIVIDUAL': 1, 'INDIVIDUAL MEMBERS COMPOSING': 1, 'MEMBERS COMPOSING IT': 1, 'TO ATTEMPT IT': 1, 'ATTEMPT IT FINDS': 1, 'IT FINDS NO': 1, 'FINDS NO SUPPORT': 1, 'NO SUPPORT IN': 1, 'SUPPORT IN THE': 1, 'PRINCIPLES OF OUR': 1, 'OF OUR CONSTITUTION': 1, 'SHOULD BE OUR': 1, 'BE OUR CONSTANT': 1, 'OUR CONSTANT AND': 1, 'CONSTANT AND EARNEST': 1, 'AND EARNEST ENDEAVOR': 1, 'EARNEST ENDEAVOR MUTUALLY': 1, 'ENDEAVOR MUTUALLY TO': 1, 'MUTUALLY TO CULTIVATE': 1, 'TO CULTIVATE A': 1, 'CULTIVATE A SPIRIT': 1, 'A SPIRIT OF': 1, 'SPIRIT OF CONCORD': 1, 'OF CONCORD AND': 1, 'CONCORD AND HARMONY': 1, 'AND HARMONY AMONG': 1, 'HARMONY AMONG THE': 1, 'AMONG THE VARIOUS': 1, 'THE VARIOUS PARTS': 1, 'VARIOUS PARTS OF': 1, 'PARTS OF OUR': 1, 'OF OUR CONFEDERACY': 1, 'EXPERIENCE HAS ABUNDANTLY': 1, 'HAS ABUNDANTLY TAUGHT': 1, 'ABUNDANTLY TAUGHT US': 1, 'TAUGHT US THAT': 1, 'US THAT THE': 1, 'THAT THE AGITATION': 1, 'THE AGITATION BY': 1, 'AGITATION BY CITIZENS': 1, 'BY CITIZENS OF': 1, 'OF ONE PART': 1, 'ONE PART OF': 1, 'THE UNION OF': 1, 'UNION OF A': 1, 'OF A SUBJECT': 1, 'A SUBJECT NOT': 1, 'SUBJECT NOT CONFIDED': 1, 'NOT CONFIDED TO': 1, 'CONFIDED TO THE': 1, 'GOVERNMENT BUT EXCLUSIVELY': 1, 'BUT EXCLUSIVELY UNDER': 1, 'EXCLUSIVELY UNDER THE': 1, 'UNDER THE GUARDIANSHIP': 1, 'THE GUARDIANSHIP OF': 1, 'GUARDIANSHIP OF THE': 1, 'OF THE LOCAL': 1, 'THE LOCAL AUTHORITIES': 1, 'LOCAL AUTHORITIES IS': 1, 'AUTHORITIES IS PRODUCTIVE': 1, 'IS PRODUCTIVE OF': 1, 'PRODUCTIVE OF NO': 1, 'OF NO OTHER': 1, 'NO OTHER CONSEQUENCES': 1, 'OTHER CONSEQUENCES THAN': 1, 'CONSEQUENCES THAN BITTERNESS': 1, 'THAN BITTERNESS ALIENATION': 1, 'BITTERNESS ALIENATION DISCORD': 1, 'ALIENATION DISCORD AND': 1, 'DISCORD AND INJURY': 1, 'AND INJURY TO': 1, 'INJURY TO THE': 1, 'TO THE VERY': 1, 'THE VERY CAUSE': 1, 'VERY CAUSE WHICH': 1, 'CAUSE WHICH IS': 1, 'WHICH IS INTENDED': 1, 'IS INTENDED TO': 1, 'INTENDED TO BE': 1, 'TO BE ADVANCED': 1, 'ALL THE GREAT': 1, 'THE GREAT INTERESTS': 1, 'GREAT INTERESTS WHICH': 1, 'INTERESTS WHICH APPERTAIN': 1, 'WHICH APPERTAIN TO': 1, 'APPERTAIN TO OUR': 1, 'OUR COUNTRY THAT': 1, 'COUNTRY THAT OF': 1, 'THAT OF UNION--CORDIAL': 1, 'OF UNION--CORDIAL CONFIDING': 1, 'UNION--CORDIAL CONFIDING FRATERNAL': 1, 'CONFIDING FRATERNAL UNION--IS': 1, 'FRATERNAL UNION--IS BY': 1, 'UNION--IS BY FAR': 1, 'BY FAR THE': 1, 'FAR THE MOST': 1, 'THE MOST IMPORTANT': 1, 'MOST IMPORTANT SINCE': 1, 'IMPORTANT SINCE IT': 1, 'SINCE IT IS': 1, 'IS THE ONLY': 1, 'THE ONLY TRUE': 1, 'ONLY TRUE AND': 1, 'TRUE AND SURE': 1, 'AND SURE GUARANTY': 1, 'SURE GUARANTY OF': 1, 'GUARANTY OF ALL': 1, 'OF ALL OTHERS': 1, 'IN CONSEQUENCE OF': 1, 'CONSEQUENCE OF THE': 1, 'OF THE EMBARRASSED': 1, 'THE EMBARRASSED STATE': 1, 'EMBARRASSED STATE OF': 1, 'STATE OF BUSINESS': 1, 'OF BUSINESS AND': 1, 'BUSINESS AND THE': 1, 'AND THE CURRENCY': 1, 'THE CURRENCY SOME': 1, 'CURRENCY SOME OF': 1, 'THE STATES MAY': 1, 'STATES MAY MEET': 1, 'MAY MEET WITH': 1, 'MEET WITH DIFFICULTY': 1, 'WITH DIFFICULTY IN': 1, 'DIFFICULTY IN THEIR': 1, 'IN THEIR FINANCIAL': 1, 'THEIR FINANCIAL CONCERNS': 1, 'HOWEVER DEEPLY WE': 1, 'DEEPLY WE MAY': 1, 'WE MAY REGRET': 1, 'MAY REGRET ANYTHING': 1, 'REGRET ANYTHING IMPRUDENT': 1, 'ANYTHING IMPRUDENT OR': 1, 'IMPRUDENT OR EXCESSIVE': 1, 'OR EXCESSIVE IN': 1, 'EXCESSIVE IN THE': 1, 'IN THE ENGAGEMENTS': 1, 'THE ENGAGEMENTS INTO': 1, 'ENGAGEMENTS INTO WHICH': 1, 'INTO WHICH STATES': 1, 'WHICH STATES HAVE': 1, 'STATES HAVE ENTERED': 1, 'HAVE ENTERED FOR': 1, 'ENTERED FOR PURPOSES': 1, 'FOR PURPOSES OF': 1, 'PURPOSES OF THEIR': 1, 'THEIR OWN IT': 1, 'OWN IT DOES': 1, 'IT DOES NOT': 1, 'DOES NOT BECOME': 1, 'NOT BECOME US': 1, 'BECOME US TO': 1, 'US TO DISPARAGE': 1, 'TO DISPARAGE THE': 1, 'DISPARAGE THE STATES': 1, 'THE STATES GOVERNMENTS': 1, 'STATES GOVERNMENTS NOR': 1, 'GOVERNMENTS NOR TO': 1, 'NOR TO DISCOURAGE': 1, 'TO DISCOURAGE THEM': 1, 'DISCOURAGE THEM FROM': 1, 'THEM FROM MAKING': 1, 'FROM MAKING PROPER': 1, 'MAKING PROPER EFFORTS': 1, 'PROPER EFFORTS FOR': 1, 'EFFORTS FOR THEIR': 1, 'FOR THEIR OWN': 1, 'THEIR OWN RELIEF': 1, 'THE CONTRARY IT': 1, 'CONTRARY IT IS': 1, 'IT IS OUR': 1, 'IS OUR DUTY': 1, 'OUR DUTY TO': 1, 'DUTY TO ENCOURAGE': 1, 'TO ENCOURAGE THEM': 1, 'ENCOURAGE THEM TO': 1, 'TO THE EXTENT': 1, 'EXTENT OF OUR': 1, 'OF OUR CONSTITUTIONAL': 1, 'OUR CONSTITUTIONAL AUTHORITY': 1, 'CONSTITUTIONAL AUTHORITY TO': 1, 'AUTHORITY TO APPLY': 1, 'TO APPLY THEIR': 1, 'APPLY THEIR BEST': 1, 'THEIR BEST MEANS': 1, 'BEST MEANS AND': 1, 'MEANS AND CHEERFULLY': 1, 'AND CHEERFULLY TO': 1, 'CHEERFULLY TO MAKE': 1, 'TO MAKE ALL': 1, 'MAKE ALL NECESSARY': 1, 'ALL NECESSARY SACRIFICES': 1, 'NECESSARY SACRIFICES AND': 1, 'SACRIFICES AND SUBMIT': 1, 'AND SUBMIT TO': 1, 'SUBMIT TO ALL': 1, 'TO ALL NECESSARY': 1, 'ALL NECESSARY BURDENS': 1, 'NECESSARY BURDENS TO': 1, 'BURDENS TO FULFILL': 1, 'TO FULFILL THEIR': 1, 'FULFILL THEIR ENGAGEMENTS': 1, 'THEIR ENGAGEMENTS AND': 1, 'ENGAGEMENTS AND MAINTAIN': 1, 'AND MAINTAIN THEIR': 1, 'MAINTAIN THEIR CREDIT': 1, 'THEIR CREDIT FOR': 1, 'CREDIT FOR THE': 1, 'FOR THE CHARACTER': 1, 'THE SEVERAL STATES': 1, 'SEVERAL STATES FORM': 1, 'STATES FORM A': 1, 'FORM A PART': 1, 'OF THE CHARACTER': 1, 'THE RESOURCES OF': 1, 'RESOURCES OF THE': 1, 'THE COUNTRY ARE': 1, 'COUNTRY ARE ABUNDANT': 1, 'ARE ABUNDANT THE': 1, 'ABUNDANT THE ENTERPRISE': 1, 'THE ENTERPRISE AND': 1, 'ENTERPRISE AND ACTIVITY': 1, 'AND ACTIVITY OF': 1, 'ACTIVITY OF OUR': 1, 'OUR PEOPLE PROVERBIAL': 1, 'PEOPLE PROVERBIAL AND': 1, 'PROVERBIAL AND WE': 1, 'AND WE MAY': 1, 'WE MAY WELL': 1, 'MAY WELL HOPE': 1, 'WELL HOPE THAT': 1, 'HOPE THAT WISE': 1, 'THAT WISE LEGISLATION': 1, 'WISE LEGISLATION AND': 1, 'LEGISLATION AND PRUDENT': 1, 'AND PRUDENT ADMINISTRATION': 1, 'PRUDENT ADMINISTRATION BY': 1, 'ADMINISTRATION BY THE': 1, 'BY THE RESPECTIVE': 1, 'THE RESPECTIVE GOVERNMENTS': 1, 'RESPECTIVE GOVERNMENTS EACH': 1, 'GOVERNMENTS EACH ACTING': 1, 'EACH ACTING WITHIN': 1, 'ACTING WITHIN ITS': 1, 'WITHIN ITS OWN': 1, 'ITS OWN SPHERE': 1, 'OWN SPHERE WILL': 1, 'SPHERE WILL RESTORE': 1, 'WILL RESTORE FORMER': 1, 'RESTORE FORMER PROSPERITY': 1, 'UNPLEASANT AND EVEN': 1, 'AND EVEN DANGEROUS': 1, 'EVEN DANGEROUS AS': 1, 'DANGEROUS AS COLLISIONS': 1, 'AS COLLISIONS MAY': 1, 'COLLISIONS MAY SOMETIMES': 1, 'MAY SOMETIMES BE': 1, 'SOMETIMES BE BETWEEN': 1, 'BE BETWEEN THE': 1, 'BETWEEN THE CONSTITUTED': 1, 'THE CONSTITUTED AUTHORITIES': 1, 'CONSTITUTED AUTHORITIES OF': 1, 'AUTHORITIES OF THE': 1, 'CITIZENS OF OUR': 1, 'OUR COUNTRY IN': 1, 'COUNTRY IN RELATION': 1, 'TO THE LINES': 1, 'THE LINES WHICH': 1, 'LINES WHICH SEPARATE': 1, 'WHICH SEPARATE THEIR': 1, 'SEPARATE THEIR RESPECTIVE': 1, 'THEIR RESPECTIVE JURISDICTIONS': 1, 'RESPECTIVE JURISDICTIONS THE': 1, 'JURISDICTIONS THE RESULTS': 1, 'THE RESULTS CAN': 1, 'RESULTS CAN BE': 1, 'CAN BE OF': 1, 'BE OF NO': 1, 'OF NO VITAL': 1, 'NO VITAL INJURY': 1, 'VITAL INJURY TO': 1, 'INJURY TO OUR': 1, 'OUR INSTITUTIONS IF': 1, 'INSTITUTIONS IF THAT': 1, 'IF THAT ARDENT': 1, 'THAT ARDENT PATRIOTISM': 1, 'ARDENT PATRIOTISM THAT': 1, 'PATRIOTISM THAT DEVOTED': 1, 'THAT DEVOTED ATTACHMENT': 1, 'DEVOTED ATTACHMENT TO': 1, 'ATTACHMENT TO LIBERTY': 1, 'TO LIBERTY THAT': 1, 'LIBERTY THAT SPIRIT': 1, 'THAT SPIRIT OF': 1, 'SPIRIT OF MODERATION': 1, 'OF MODERATION AND': 1, 'MODERATION AND FORBEARANCE': 1, 'AND FORBEARANCE FOR': 1, 'FORBEARANCE FOR WHICH': 1, 'WHICH OUR COUNTRYMEN': 1, 'OUR COUNTRYMEN WERE': 1, 'COUNTRYMEN WERE ONCE': 1, 'WERE ONCE DISTINGUISHED': 1, 'ONCE DISTINGUISHED CONTINUE': 1, 'DISTINGUISHED CONTINUE TO': 1, 'CONTINUE TO BE': 1, 'TO BE CHERISHED': 1, 'IF THIS CONTINUES': 1, 'THIS CONTINUES TO': 1, 'CONTINUES TO BE': 1, 'BE THE RULING': 1, 'THE RULING PASSION': 1, 'RULING PASSION OF': 1, 'PASSION OF OUR': 1, 'OF OUR SOULS': 1, 'OUR SOULS THE': 1, 'SOULS THE WEAKER': 1, 'THE WEAKER FEELING': 1, 'WEAKER FEELING OF': 1, 'FEELING OF THE': 1, 'OF THE MISTAKEN': 1, 'THE MISTAKEN ENTHUSIAST': 1, 'MISTAKEN ENTHUSIAST WILL': 1, 'ENTHUSIAST WILL BE': 1, 'WILL BE CORRECTED': 1, 'BE CORRECTED THE': 1, 'CORRECTED THE UTOPIAN': 1, 'THE UTOPIAN DREAMS': 1, 'UTOPIAN DREAMS OF': 1, 'DREAMS OF THE': 1, 'OF THE SCHEMING': 1, 'THE SCHEMING POLITICIAN': 1, 'SCHEMING POLITICIAN DISSIPATED': 1, 'POLITICIAN DISSIPATED AND': 1, 'DISSIPATED AND THE': 1, 'AND THE COMPLICATED': 1, 'THE COMPLICATED INTRIGUES': 1, 'COMPLICATED INTRIGUES OF': 1, 'INTRIGUES OF THE': 1, 'OF THE DEMAGOGUE': 1, 'THE DEMAGOGUE RENDERED': 1, 'DEMAGOGUE RENDERED HARMLESS': 1, 'LIBERTY IS THE': 1, 'IS THE SOVEREIGN': 1, 'THE SOVEREIGN BALM': 1, 'SOVEREIGN BALM FOR': 1, 'BALM FOR EVERY': 1, 'FOR EVERY INJURY': 1, 'EVERY INJURY WHICH': 1, 'INJURY WHICH OUR': 1, 'WHICH OUR INSTITUTIONS': 1, 'OUR INSTITUTIONS MAY': 1, 'INSTITUTIONS MAY RECEIVE': 1, 'CONTRARY NO CARE': 1, 'NO CARE THAT': 1, 'CARE THAT CAN': 1, 'THAT CAN BE': 1, 'CAN BE USED': 1, 'BE USED IN': 1, 'USED IN THE': 1, 'IN THE CONSTRUCTION': 1, 'THE CONSTRUCTION OF': 1, 'CONSTRUCTION OF OUR': 1, 'OUR GOVERNMENT NO': 1, 'GOVERNMENT NO DIVISION': 1, 'NO DIVISION OF': 1, 'DIVISION OF POWERS': 1, 'OF POWERS NO': 1, 'POWERS NO DISTRIBUTION': 1, 'NO DISTRIBUTION OF': 1, 'DISTRIBUTION OF CHECKS': 1, 'OF CHECKS IN': 1, 'CHECKS IN ITS': 1, 'IN ITS SEVERAL': 1, 'ITS SEVERAL DEPARTMENTS': 1, 'SEVERAL DEPARTMENTS WILL': 1, 'DEPARTMENTS WILL PROVE': 1, 'WILL PROVE EFFECTUAL': 1, 'PROVE EFFECTUAL TO': 1, 'EFFECTUAL TO KEEP': 1, 'TO KEEP US': 1, 'KEEP US A': 1, 'US A FREE': 1, 'FREE PEOPLE IF': 1, 'PEOPLE IF THIS': 1, 'IF THIS SPIRIT': 1, 'THIS SPIRIT IS': 1, 'SPIRIT IS SUFFERED': 1, 'IS SUFFERED TO': 1, 'SUFFERED TO DECAY': 1, 'TO DECAY AND': 1, 'DECAY AND DECAY': 1, 'AND DECAY IT': 1, 'DECAY IT WILL': 1, 'IT WILL WITHOUT': 1, 'WILL WITHOUT CONSTANT': 1, 'WITHOUT CONSTANT NURTURE': 1, 'TO THE NEGLECT': 1, 'THE NEGLECT OF': 1, 'NEGLECT OF THIS': 1, 'OF THIS DUTY': 1, 'THIS DUTY THE': 1, 'DUTY THE BEST': 1, 'THE BEST HISTORIANS': 1, 'BEST HISTORIANS AGREE': 1, 'HISTORIANS AGREE IN': 1, 'AGREE IN ATTRIBUTING': 1, 'IN ATTRIBUTING THE': 1, 'ATTRIBUTING THE RUIN': 1, 'THE RUIN OF': 1, 'RUIN OF ALL': 1, 'ALL THE REPUBLICS': 1, 'THE REPUBLICS WITH': 1, 'REPUBLICS WITH WHOSE': 1, 'WITH WHOSE EXISTENCE': 1, 'WHOSE EXISTENCE AND': 1, 'EXISTENCE AND FALL': 1, 'AND FALL THEIR': 1, 'FALL THEIR WRITINGS': 1, 'THEIR WRITINGS HAVE': 1, 'WRITINGS HAVE MADE': 1, 'HAVE MADE US': 1, 'MADE US ACQUAINTED': 1, 'SAME CAUSES WILL': 1, 'CAUSES WILL EVER': 1, 'WILL EVER PRODUCE': 1, 'EVER PRODUCE THE': 1, 'PRODUCE THE SAME': 1, 'THE SAME EFFECTS': 1, 'SAME EFFECTS AND': 1, 'EFFECTS AND AS': 1, 'AS THE LOVE': 1, 'LOVE OF POWER': 1, 'OF POWER IS': 1, 'POWER IS A': 1, 'IS A DOMINANT': 1, 'A DOMINANT PASSION': 1, 'DOMINANT PASSION OF': 1, 'PASSION OF THE': 1, 'THE HUMAN BOSOM': 1, 'HUMAN BOSOM AND': 1, 'BOSOM AND AS': 1, 'AS THE UNDERSTANDINGS': 1, 'THE UNDERSTANDINGS OF': 1, 'UNDERSTANDINGS OF MEN': 1, 'OF MEN CAN': 1, 'MEN CAN BE': 1, 'CAN BE WARPED': 1, 'BE WARPED AND': 1, 'WARPED AND THEIR': 1, 'AND THEIR AFFECTIONS': 1, 'THEIR AFFECTIONS CHANGED': 1, 'AFFECTIONS CHANGED BY': 1, 'CHANGED BY OPERATIONS': 1, 'BY OPERATIONS UPON': 1, 'OPERATIONS UPON THEIR': 1, 'UPON THEIR PASSIONS': 1, 'THEIR PASSIONS AND': 1, 'PASSIONS AND PREJUDICES': 1, 'AND PREJUDICES SO': 1, 'PREJUDICES SO LONG': 1, 'SO LONG WILL': 1, 'LONG WILL THE': 1, 'WILL THE LIBERTIES': 1, 'LIBERTIES OF A': 1, 'A PEOPLE DEPEND': 1, 'PEOPLE DEPEND ON': 1, 'DEPEND ON THEIR': 1, 'ON THEIR OWN': 1, 'THEIR OWN CONSTANT': 1, 'OWN CONSTANT ATTENTION': 1, 'CONSTANT ATTENTION TO': 1, 'ATTENTION TO ITS': 1, 'TO ITS PRESERVATION': 1, 'THE DANGER TO': 1, 'DANGER TO ALL': 1, 'TO ALL WELL-ESTABLISHED': 1, 'ALL WELL-ESTABLISHED FREE': 1, 'WELL-ESTABLISHED FREE GOVERNMENTS': 1, 'FREE GOVERNMENTS ARISES': 1, 'GOVERNMENTS ARISES FROM': 1, 'ARISES FROM THE': 1, 'FROM THE UNWILLINGNESS': 1, 'THE UNWILLINGNESS OF': 1, 'UNWILLINGNESS OF THE': 1, 'PEOPLE TO BELIEVE': 1, 'TO BELIEVE IN': 1, 'BELIEVE IN ITS': 1, 'IN ITS EXISTENCE': 1, 'ITS EXISTENCE OR': 1, 'EXISTENCE OR FROM': 1, 'OR FROM THE': 1, 'FROM THE INFLUENCE': 1, 'INFLUENCE OF DESIGNING': 1, 'OF DESIGNING MEN': 1, 'DESIGNING MEN DIVERTING': 1, 'MEN DIVERTING THEIR': 1, 'DIVERTING THEIR ATTENTION': 1, 'THEIR ATTENTION FROM': 1, 'ATTENTION FROM THE': 1, 'FROM THE QUARTER': 1, 'THE QUARTER WHENCE': 1, 'QUARTER WHENCE IT': 1, 'WHENCE IT APPROACHES': 1, 'IT APPROACHES TO': 1, 'APPROACHES TO A': 1, 'TO A SOURCE': 1, 'A SOURCE FROM': 1, 'SOURCE FROM WHICH': 1, 'FROM WHICH IT': 1, 'WHICH IT CAN': 1, 'IT CAN NEVER': 1, 'CAN NEVER COME': 1, 'THIS IS THE': 1, 'IS THE OLD': 1, 'THE OLD TRICK': 1, 'OLD TRICK OF': 1, 'TRICK OF THOSE': 1, 'THOSE WHO WOULD': 1, 'WHO WOULD USURP': 1, 'WOULD USURP THE': 1, 'USURP THE GOVERNMENT': 1, 'GOVERNMENT OF THEIR': 1, 'OF THEIR COUNTRY': 1, 'IN THE NAME': 1, 'THE NAME OF': 1, 'NAME OF DEMOCRACY': 1, 'OF DEMOCRACY THEY': 1, 'DEMOCRACY THEY SPEAK': 1, 'THEY SPEAK WARNING': 1, 'SPEAK WARNING THE': 1, 'WARNING THE PEOPLE': 1, 'THE PEOPLE AGAINST': 1, 'PEOPLE AGAINST THE': 1, 'AGAINST THE INFLUENCE': 1, 'INFLUENCE OF WEALTH': 1, 'OF WEALTH AND': 1, 'WEALTH AND THE': 1, 'AND THE DANGER': 1, 'THE DANGER OF': 1, 'DANGER OF ARISTOCRACY': 1, 'HISTORY ANCIENT AND': 1, 'ANCIENT AND MODERN': 1, 'AND MODERN IS': 1, 'MODERN IS FULL': 1, 'IS FULL OF': 1, 'FULL OF SUCH': 1, 'OF SUCH EXAMPLES': 1, 'CAESAR BECAME THE': 1, 'BECAME THE MASTER': 1, 'THE MASTER OF': 1, 'MASTER OF THE': 1, 'OF THE ROMAN': 1, 'THE ROMAN PEOPLE': 1, 'ROMAN PEOPLE AND': 1, 'AND THE SENATE': 1, 'THE SENATE UNDER': 1, 'SENATE UNDER THE': 1, 'UNDER THE PRETENSE': 1, 'THE PRETENSE OF': 1, 'PRETENSE OF SUPPORTING': 1, 'OF SUPPORTING THE': 1, 'SUPPORTING THE DEMOCRATIC': 1, 'THE DEMOCRATIC CLAIMS': 1, 'DEMOCRATIC CLAIMS OF': 1, 'CLAIMS OF THE': 1, 'THE FORMER AGAINST': 1, 'FORMER AGAINST THE': 1, 'AGAINST THE ARISTOCRACY': 1, 'THE ARISTOCRACY OF': 1, 'ARISTOCRACY OF THE': 1, 'OF THE LATTER': 1, 'THE LATTER CROMWELL': 1, 'LATTER CROMWELL IN': 1, 'CROMWELL IN THE': 1, 'IN THE CHARACTER': 1, 'CHARACTER OF PROTECTOR': 1, 'OF PROTECTOR OF': 1, 'PROTECTOR OF THE': 1, 'OF THE LIBERTIES': 1, 'LIBERTIES OF THE': 1, 'THE PEOPLE BECAME': 1, 'PEOPLE BECAME THE': 1, 'BECAME THE DICTATOR': 1, 'THE DICTATOR OF': 1, 'DICTATOR OF ENGLAND': 1, 'OF ENGLAND AND': 1, 'ENGLAND AND BOLIVAR': 1, 'AND BOLIVAR POSSESSED': 1, 'BOLIVAR POSSESSED HIMSELF': 1, 'POSSESSED HIMSELF OF': 1, 'HIMSELF OF UNLIMITED': 1, 'OF UNLIMITED POWER': 1, 'UNLIMITED POWER WITH': 1, 'POWER WITH THE': 1, 'WITH THE TITLE': 1, 'THE TITLE OF': 1, 'TITLE OF HIS': 1, \"OF HIS COUNTRY'S\": 1, \"HIS COUNTRY'S LIBERATOR\": 1, 'THERE IS ON': 1, 'IS ON THE': 1, 'CONTRARY NO INSTANCE': 1, 'NO INSTANCE ON': 1, 'INSTANCE ON RECORD': 1, 'ON RECORD OF': 1, 'RECORD OF AN': 1, 'OF AN EXTENSIVE': 1, 'AN EXTENSIVE AND': 1, 'EXTENSIVE AND WELL-ESTABLISHED': 1, 'AND WELL-ESTABLISHED REPUBLIC': 1, 'WELL-ESTABLISHED REPUBLIC BEING': 1, 'REPUBLIC BEING CHANGED': 1, 'BEING CHANGED INTO': 1, 'CHANGED INTO AN': 1, 'INTO AN ARISTOCRACY': 1, 'THE TENDENCIES OF': 1, 'TENDENCIES OF ALL': 1, 'OF ALL SUCH': 1, 'ALL SUCH GOVERNMENTS': 1, 'SUCH GOVERNMENTS IN': 1, 'GOVERNMENTS IN THEIR': 1, 'IN THEIR DECLINE': 1, 'THEIR DECLINE IS': 1, 'DECLINE IS TO': 1, 'IS TO MONARCHY': 1, 'TO MONARCHY AND': 1, 'MONARCHY AND THE': 1, 'AND THE ANTAGONIST': 1, 'THE ANTAGONIST PRINCIPLE': 1, 'ANTAGONIST PRINCIPLE TO': 1, 'PRINCIPLE TO LIBERTY': 1, 'TO LIBERTY THERE': 1, 'LIBERTY THERE IS': 1, 'THERE IS THE': 1, 'IS THE SPIRIT': 1, 'SPIRIT OF FACTION--A': 1, 'OF FACTION--A SPIRIT': 1, 'FACTION--A SPIRIT WHICH': 1, 'SPIRIT WHICH ASSUMES': 1, 'WHICH ASSUMES THE': 1, 'ASSUMES THE CHARACTER': 1, 'CHARACTER AND IN': 1, 'AND IN TIMES': 1, 'IN TIMES OF': 1, 'TIMES OF GREAT': 1, 'OF GREAT EXCITEMENT': 1, 'GREAT EXCITEMENT IMPOSES': 1, 'EXCITEMENT IMPOSES ITSELF': 1, 'IMPOSES ITSELF UPON': 1, 'ITSELF UPON THE': 1, 'UPON THE PEOPLE': 1, 'THE PEOPLE AS': 1, 'PEOPLE AS THE': 1, 'AS THE GENUINE': 1, 'SPIRIT OF FREEDOM': 1, 'OF FREEDOM AND': 1, 'FREEDOM AND LIKE': 1, 'AND LIKE THE': 1, 'LIKE THE FALSE': 1, 'THE FALSE CHRISTS': 1, 'FALSE CHRISTS WHOSE': 1, 'CHRISTS WHOSE COMING': 1, 'WHOSE COMING WAS': 1, 'COMING WAS FORETOLD': 1, 'WAS FORETOLD BY': 1, 'FORETOLD BY THE': 1, 'BY THE SAVIOR': 1, 'THE SAVIOR SEEKS': 1, 'SAVIOR SEEKS TO': 1, 'SEEKS TO AND': 1, 'TO AND WERE': 1, 'AND WERE IT': 1, 'WERE IT POSSIBLE': 1, 'IT POSSIBLE WOULD': 1, 'POSSIBLE WOULD IMPOSE': 1, 'WOULD IMPOSE UPON': 1, 'IMPOSE UPON THE': 1, 'UPON THE TRUE': 1, 'THE TRUE AND': 1, 'TRUE AND MOST': 1, 'AND MOST FAITHFUL': 1, 'MOST FAITHFUL DISCIPLES': 1, 'FAITHFUL DISCIPLES OF': 1, 'DISCIPLES OF LIBERTY': 1, 'IS IN PERIODS': 1, 'IN PERIODS LIKE': 1, 'PERIODS LIKE THIS': 1, 'LIKE THIS THAT': 1, 'THIS THAT IT': 1, 'THAT IT BEHOOVES': 1, 'IT BEHOOVES THE': 1, 'BEHOOVES THE PEOPLE': 1, 'PEOPLE TO BE': 1, 'TO BE MOST': 1, 'BE MOST WATCHFUL': 1, 'MOST WATCHFUL OF': 1, 'WATCHFUL OF THOSE': 1, 'TO WHOM THEY': 1, 'WHOM THEY HAVE': 1, 'THEY HAVE INTRUSTED': 1, 'HAVE INTRUSTED POWER': 1, 'ALTHOUGH THERE IS': 1, 'THERE IS AT': 1, 'IS AT TIMES': 1, 'AT TIMES MUCH': 1, 'TIMES MUCH DIFFICULTY': 1, 'MUCH DIFFICULTY IN': 1, 'DIFFICULTY IN DISTINGUISHING': 1, 'IN DISTINGUISHING THE': 1, 'DISTINGUISHING THE FALSE': 1, 'THE FALSE FROM': 1, 'FALSE FROM THE': 1, 'FROM THE TRUE': 1, 'TRUE SPIRIT A': 1, 'SPIRIT A CALM': 1, 'A CALM AND': 1, 'CALM AND DISPASSIONATE': 1, 'AND DISPASSIONATE INVESTIGATION': 1, 'DISPASSIONATE INVESTIGATION WILL': 1, 'INVESTIGATION WILL DETECT': 1, 'WILL DETECT THE': 1, 'DETECT THE COUNTERFEIT': 1, 'THE COUNTERFEIT AS': 1, 'COUNTERFEIT AS WELL': 1, 'AS WELL BY': 1, 'WELL BY THE': 1, 'BY THE CHARACTER': 1, 'CHARACTER OF ITS': 1, 'ITS OPERATIONS AS': 1, 'OPERATIONS AS THE': 1, 'AS THE RESULTS': 1, 'THE RESULTS THAT': 1, 'RESULTS THAT ARE': 1, 'THAT ARE PRODUCED': 1, 'TRUE SPIRIT OF': 1, 'OF LIBERTY ALTHOUGH': 1, 'LIBERTY ALTHOUGH DEVOTED': 1, 'ALTHOUGH DEVOTED PERSEVERING': 1, 'DEVOTED PERSEVERING BOLD': 1, 'PERSEVERING BOLD AND': 1, 'BOLD AND UNCOMPROMISING': 1, 'AND UNCOMPROMISING IN': 1, 'UNCOMPROMISING IN PRINCIPLE': 1, 'IN PRINCIPLE THAT': 1, 'PRINCIPLE THAT SECURED': 1, 'THAT SECURED IS': 1, 'SECURED IS MILD': 1, 'IS MILD AND': 1, 'MILD AND TOLERANT': 1, 'AND TOLERANT AND': 1, 'TOLERANT AND SCRUPULOUS': 1, 'AND SCRUPULOUS AS': 1, 'SCRUPULOUS AS TO': 1, 'TO THE MEANS': 1, 'THE MEANS IT': 1, 'MEANS IT EMPLOYS': 1, 'IT EMPLOYS WHILST': 1, 'EMPLOYS WHILST THE': 1, 'WHILST THE SPIRIT': 1, 'OF PARTY ASSUMING': 1, 'PARTY ASSUMING TO': 1, 'ASSUMING TO BE': 1, 'TO BE THAT': 1, 'BE THAT OF': 1, 'LIBERTY IS HARSH': 1, 'IS HARSH VINDICTIVE': 1, 'HARSH VINDICTIVE AND': 1, 'VINDICTIVE AND INTOLERANT': 1, 'AND INTOLERANT AND': 1, 'INTOLERANT AND TOTALLY': 1, 'AND TOTALLY RECKLESS': 1, 'TOTALLY RECKLESS AS': 1, 'RECKLESS AS TO': 1, 'OF THE ALLIES': 1, 'THE ALLIES WHICH': 1, 'ALLIES WHICH IT': 1, 'WHICH IT BRINGS': 1, 'IT BRINGS TO': 1, 'BRINGS TO THE': 1, 'TO THE AID': 1, 'AID OF ITS': 1, 'OF ITS CAUSE': 1, 'WHEN THE GENUINE': 1, 'OF LIBERTY ANIMATES': 1, 'LIBERTY ANIMATES THE': 1, 'ANIMATES THE BODY': 1, 'THE BODY OF': 1, 'BODY OF A': 1, 'A PEOPLE TO': 1, 'PEOPLE TO A': 1, 'TO A THOROUGH': 1, 'A THOROUGH EXAMINATION': 1, 'THOROUGH EXAMINATION OF': 1, 'EXAMINATION OF THEIR': 1, 'THEIR AFFAIRS IT': 1, 'AFFAIRS IT LEADS': 1, 'IT LEADS TO': 1, 'LEADS TO THE': 1, 'TO THE EXCISION': 1, 'THE EXCISION OF': 1, 'EXCISION OF EVERY': 1, 'OF EVERY EXCRESCENCE': 1, 'EVERY EXCRESCENCE WHICH': 1, 'EXCRESCENCE WHICH MAY': 1, 'WHICH MAY HAVE': 1, 'MAY HAVE FASTENED': 1, 'HAVE FASTENED ITSELF': 1, 'FASTENED ITSELF UPON': 1, 'ITSELF UPON ANY': 1, 'UPON ANY OF': 1, 'ANY OF THE': 1, 'THE GOVERNMENT AND': 1, 'GOVERNMENT AND RESTORES': 1, 'AND RESTORES THE': 1, 'RESTORES THE SYSTEM': 1, 'THE SYSTEM TO': 1, 'SYSTEM TO ITS': 1, 'HEALTH AND BEAUTY': 1, 'BUT THE REIGN': 1, 'THE REIGN OF': 1, 'REIGN OF AN': 1, 'OF AN INTOLERANT': 1, 'AN INTOLERANT SPIRIT': 1, 'INTOLERANT SPIRIT OF': 1, 'OF PARTY AMONGST': 1, 'PARTY AMONGST A': 1, 'AMONGST A FREE': 1, 'FREE PEOPLE SELDOM': 1, 'PEOPLE SELDOM FAILS': 1, 'SELDOM FAILS TO': 1, 'FAILS TO RESULT': 1, 'TO RESULT IN': 1, 'RESULT IN A': 1, 'IN A DANGEROUS': 1, 'A DANGEROUS ACCESSION': 1, 'DANGEROUS ACCESSION TO': 1, 'ACCESSION TO THE': 1, 'EXECUTIVE POWER INTRODUCED': 1, 'POWER INTRODUCED AND': 1, 'INTRODUCED AND ESTABLISHED': 1, 'AND ESTABLISHED AMIDST': 1, 'ESTABLISHED AMIDST UNUSUAL': 1, 'AMIDST UNUSUAL PROFESSIONS': 1, 'UNUSUAL PROFESSIONS OF': 1, 'PROFESSIONS OF DEVOTION': 1, 'OF DEVOTION TO': 1, 'DEVOTION TO DEMOCRACY': 1, 'THE FOREGOING REMARKS': 1, 'FOREGOING REMARKS RELATE': 1, 'REMARKS RELATE ALMOST': 1, 'RELATE ALMOST EXCLUSIVELY': 1, 'ALMOST EXCLUSIVELY TO': 1, 'EXCLUSIVELY TO MATTERS': 1, 'TO MATTERS CONNECTED': 1, 'MATTERS CONNECTED WITH': 1, 'CONNECTED WITH OUR': 1, 'WITH OUR DOMESTIC': 1, 'OUR DOMESTIC CONCERNS': 1, 'MAY BE PROPER': 1, 'BE PROPER HOWEVER': 1, 'PROPER HOWEVER THAT': 1, 'HOWEVER THAT I': 1, 'I SHOULD GIVE': 1, 'SHOULD GIVE SOME': 1, 'GIVE SOME INDICATIONS': 1, 'SOME INDICATIONS TO': 1, 'INDICATIONS TO MY': 1, 'MY FELLOW-CITIZENS OF': 1, 'FELLOW-CITIZENS OF MY': 1, 'OF MY PROPOSED': 1, 'MY PROPOSED COURSE': 1, 'PROPOSED COURSE OF': 1, 'COURSE OF CONDUCT': 1, 'OF CONDUCT IN': 1, 'CONDUCT IN THE': 1, 'IN THE MANAGEMENT': 1, 'MANAGEMENT OF OUR': 1, 'OF OUR FOREIGN': 1, 'OUR FOREIGN RELATIONS': 1, 'I ASSURE THEM': 1, 'ASSURE THEM THEREFORE': 1, 'THEM THEREFORE THAT': 1, 'THEREFORE THAT IT': 1, 'THAT IT IS': 1, 'IT IS MY': 1, 'IS MY INTENTION': 1, 'MY INTENTION TO': 1, 'INTENTION TO USE': 1, 'TO USE EVERY': 1, 'USE EVERY MEANS': 1, 'EVERY MEANS IN': 1, 'MEANS IN MY': 1, 'IN MY POWER': 1, 'MY POWER TO': 1, 'POWER TO PRESERVE': 1, 'TO PRESERVE THE': 1, 'PRESERVE THE FRIENDLY': 1, 'THE FRIENDLY INTERCOURSE': 1, 'FRIENDLY INTERCOURSE WHICH': 1, 'INTERCOURSE WHICH NOW': 1, 'WHICH NOW SO': 1, 'NOW SO HAPPILY': 1, 'SO HAPPILY SUBSISTS': 1, 'HAPPILY SUBSISTS WITH': 1, 'SUBSISTS WITH EVERY': 1, 'WITH EVERY FOREIGN': 1, 'EVERY FOREIGN NATION': 1, 'FOREIGN NATION AND': 1, 'NATION AND THAT': 1, 'AND THAT ALTHOUGH': 1, 'THAT ALTHOUGH OF': 1, 'ALTHOUGH OF COURSE': 1, 'OF COURSE NOT': 1, 'COURSE NOT WELL': 1, 'NOT WELL INFORMED': 1, 'WELL INFORMED AS': 1, 'INFORMED AS TO': 1, 'TO THE STATE': 1, 'THE STATE OF': 1, 'STATE OF PENDING': 1, 'OF PENDING NEGOTIATIONS': 1, 'PENDING NEGOTIATIONS WITH': 1, 'NEGOTIATIONS WITH ANY': 1, 'WITH ANY OF': 1, 'ANY OF THEM': 1, 'OF THEM I': 1, 'THEM I SEE': 1, 'I SEE IN': 1, 'SEE IN THE': 1, 'IN THE PERSONAL': 1, 'THE PERSONAL CHARACTERS': 1, 'PERSONAL CHARACTERS OF': 1, 'CHARACTERS OF THE': 1, 'OF THE SOVEREIGNS': 1, 'THE SOVEREIGNS AS': 1, 'SOVEREIGNS AS WELL': 1, 'IN THE MUTUAL': 1, 'THE MUTUAL INTERESTS': 1, 'MUTUAL INTERESTS OF': 1, 'INTERESTS OF OUR': 1, 'OF OUR OWN': 1, 'OUR OWN AND': 1, 'OWN AND OF': 1, 'OF THE GOVERNMENTS': 1, 'THE GOVERNMENTS WITH': 1, 'GOVERNMENTS WITH WHICH': 1, 'WITH WHICH OUR': 1, 'WHICH OUR RELATIONS': 1, 'OUR RELATIONS ARE': 1, 'RELATIONS ARE MOST': 1, 'ARE MOST INTIMATE': 1, 'MOST INTIMATE A': 1, 'INTIMATE A PLEASING': 1, 'A PLEASING GUARANTY': 1, 'PLEASING GUARANTY THAT': 1, 'GUARANTY THAT THE': 1, 'THAT THE HARMONY': 1, 'THE HARMONY SO': 1, 'HARMONY SO IMPORTANT': 1, 'SO IMPORTANT TO': 1, 'IMPORTANT TO THE': 1, 'TO THE INTERESTS': 1, 'INTERESTS OF THEIR': 1, 'THEIR SUBJECTS AS': 1, 'SUBJECTS AS WELL': 1, 'WELL AS OF': 1, 'AS OF OUR': 1, 'OUR CITIZENS WILL': 1, 'CITIZENS WILL NOT': 1, 'WILL NOT BE': 1, 'NOT BE INTERRUPTED': 1, 'BE INTERRUPTED BY': 1, 'INTERRUPTED BY THE': 1, 'BY THE ADVANCEMENT': 1, 'THE ADVANCEMENT OF': 1, 'ADVANCEMENT OF ANY': 1, 'OF ANY CLAIM': 1, 'ANY CLAIM OR': 1, 'CLAIM OR PRETENSION': 1, 'OR PRETENSION UPON': 1, 'PRETENSION UPON THEIR': 1, 'THEIR PART TO': 1, 'PART TO WHICH': 1, 'TO WHICH OUR': 1, 'WHICH OUR HONOR': 1, 'OUR HONOR WOULD': 1, 'HONOR WOULD NOT': 1, 'WOULD NOT PERMIT': 1, 'NOT PERMIT US': 1, 'PERMIT US TO': 1, 'US TO YIELD': 1, 'LONG THE DEFENDER': 1, 'THE DEFENDER OF': 1, 'DEFENDER OF MY': 1, \"OF MY COUNTRY'S\": 1, \"MY COUNTRY'S RIGHTS\": 1, \"COUNTRY'S RIGHTS IN\": 1, 'RIGHTS IN THE': 1, 'IN THE FIELD': 1, 'THE FIELD I': 1, 'FIELD I TRUST': 1, 'I TRUST THAT': 1, 'TRUST THAT MY': 1, 'THAT MY FELLOW-CITIZENS': 1, 'MY FELLOW-CITIZENS WILL': 1, 'FELLOW-CITIZENS WILL NOT': 1, 'WILL NOT SEE': 1, 'NOT SEE IN': 1, 'SEE IN MY': 1, 'IN MY EARNEST': 1, 'MY EARNEST DESIRE': 1, 'EARNEST DESIRE TO': 1, 'DESIRE TO PRESERVE': 1, 'TO PRESERVE PEACE': 1, 'PRESERVE PEACE WITH': 1, 'PEACE WITH FOREIGN': 1, 'WITH FOREIGN POWERS': 1, 'FOREIGN POWERS ANY': 1, 'POWERS ANY INDICATION': 1, 'ANY INDICATION THAT': 1, 'INDICATION THAT THEIR': 1, 'THAT THEIR RIGHTS': 1, 'THEIR RIGHTS WILL': 1, 'RIGHTS WILL EVER': 1, 'WILL EVER BE': 1, 'EVER BE SACRIFICED': 1, 'BE SACRIFICED OR': 1, 'SACRIFICED OR THE': 1, 'OR THE HONOR': 1, 'THE HONOR OF': 1, 'HONOR OF THE': 1, 'THE NATION TARNISHED': 1, 'NATION TARNISHED BY': 1, 'TARNISHED BY ANY': 1, 'BY ANY ADMISSION': 1, 'ANY ADMISSION ON': 1, 'ADMISSION ON THE': 1, 'PART OF THEIR': 1, 'OF THEIR CHIEF': 1, 'THEIR CHIEF MAGISTRATE': 1, 'CHIEF MAGISTRATE UNWORTHY': 1, 'MAGISTRATE UNWORTHY OF': 1, 'UNWORTHY OF THEIR': 1, 'OF THEIR FORMER': 1, 'THEIR FORMER GLORY': 1, 'IN OUR INTERCOURSE': 1, 'OUR INTERCOURSE WITH': 1, 'INTERCOURSE WITH OUR': 1, 'WITH OUR ABORIGINAL': 1, 'OUR ABORIGINAL NEIGHBORS': 1, 'ABORIGINAL NEIGHBORS THE': 1, 'NEIGHBORS THE SAME': 1, 'THE SAME LIBERALITY': 1, 'SAME LIBERALITY AND': 1, 'LIBERALITY AND JUSTICE': 1, 'AND JUSTICE WHICH': 1, 'JUSTICE WHICH MARKED': 1, 'WHICH MARKED THE': 1, 'MARKED THE COURSE': 1, 'THE COURSE PRESCRIBED': 1, 'COURSE PRESCRIBED TO': 1, 'PRESCRIBED TO ME': 1, 'ME BY TWO': 1, 'BY TWO OF': 1, 'TWO OF MY': 1, 'OF MY ILLUSTRIOUS': 1, 'MY ILLUSTRIOUS PREDECESSORS': 1, 'ILLUSTRIOUS PREDECESSORS WHEN': 1, 'PREDECESSORS WHEN ACTING': 1, 'WHEN ACTING UNDER': 1, 'ACTING UNDER THEIR': 1, 'UNDER THEIR DIRECTION': 1, 'THEIR DIRECTION IN': 1, 'DIRECTION IN THE': 1, 'THE DUTIES OF': 1, 'DUTIES OF SUPERINTENDENT': 1, 'OF SUPERINTENDENT AND': 1, 'SUPERINTENDENT AND COMMISSIONER': 1, 'AND COMMISSIONER SHALL': 1, 'COMMISSIONER SHALL BE': 1, 'SHALL BE STRICTLY': 1, 'BE STRICTLY OBSERVED': 1, 'I CAN CONCEIVE': 1, 'CAN CONCEIVE OF': 1, 'CONCEIVE OF NO': 1, 'OF NO MORE': 1, 'NO MORE SUBLIME': 1, 'MORE SUBLIME SPECTACLE': 1, 'SUBLIME SPECTACLE NONE': 1, 'SPECTACLE NONE MORE': 1, 'NONE MORE LIKELY': 1, 'LIKELY TO PROPITIATE': 1, 'TO PROPITIATE AN': 1, 'PROPITIATE AN IMPARTIAL': 1, 'AN IMPARTIAL AND': 1, 'IMPARTIAL AND COMMON': 1, 'AND COMMON CREATOR': 1, 'COMMON CREATOR THAN': 1, 'CREATOR THAN A': 1, 'THAN A RIGID': 1, 'A RIGID ADHERENCE': 1, 'RIGID ADHERENCE TO': 1, 'ADHERENCE TO THE': 1, 'TO THE PRINCIPLES': 1, 'PRINCIPLES OF JUSTICE': 1, 'OF JUSTICE ON': 1, 'JUSTICE ON THE': 1, 'PART OF A': 1, 'OF A POWERFUL': 1, 'A POWERFUL NATION': 1, 'POWERFUL NATION IN': 1, 'NATION IN ITS': 1, 'IN ITS TRANSACTIONS': 1, 'ITS TRANSACTIONS WITH': 1, 'TRANSACTIONS WITH A': 1, 'WITH A WEAKER': 1, 'A WEAKER AND': 1, 'WEAKER AND UNCIVILIZED': 1, 'AND UNCIVILIZED PEOPLE': 1, 'UNCIVILIZED PEOPLE WHOM': 1, 'PEOPLE WHOM CIRCUMSTANCES': 1, 'WHOM CIRCUMSTANCES HAVE': 1, 'CIRCUMSTANCES HAVE PLACED': 1, 'HAVE PLACED AT': 1, 'PLACED AT ITS': 1, 'AT ITS DISPOSAL': 1, 'BEFORE CONCLUDING FELLOW-CITIZENS': 1, 'CONCLUDING FELLOW-CITIZENS I': 1, 'FELLOW-CITIZENS I MUST': 1, 'I MUST SAY': 1, 'MUST SAY SOMETHING': 1, 'SAY SOMETHING TO': 1, 'SOMETHING TO YOU': 1, 'TO YOU ON': 1, 'YOU ON THE': 1, 'ON THE SUBJECT': 1, 'OF THE PARTIES': 1, 'THE PARTIES AT': 1, 'PARTIES AT THIS': 1, 'THIS TIME EXISTING': 1, 'TIME EXISTING IN': 1, 'EXISTING IN OUR': 1, 'IN OUR COUNTRY': 1, 'IT APPEARS PERFECTLY': 1, 'APPEARS PERFECTLY CLEAR': 1, 'PERFECTLY CLEAR THAT': 1, 'CLEAR THAT THE': 1, 'THAT THE INTEREST': 1, 'THE INTEREST OF': 1, 'INTEREST OF THAT': 1, 'OF THAT COUNTRY': 1, 'THAT COUNTRY REQUIRES': 1, 'COUNTRY REQUIRES THAT': 1, 'REQUIRES THAT THE': 1, 'THAT THE VIOLENCE': 1, 'THE VIOLENCE OF': 1, 'VIOLENCE OF THE': 1, 'OF THE SPIRIT': 1, 'THE SPIRIT BY': 1, 'SPIRIT BY WHICH': 1, 'BY WHICH THOSE': 1, 'WHICH THOSE PARTIES': 1, 'THOSE PARTIES ARE': 1, 'PARTIES ARE AT': 1, 'ARE AT THIS': 1, 'THIS TIME GOVERNED': 1, 'TIME GOVERNED MUST': 1, 'GOVERNED MUST BE': 1, 'MUST BE GREATLY': 1, 'BE GREATLY MITIGATED': 1, 'GREATLY MITIGATED IF': 1, 'MITIGATED IF NOT': 1, 'IF NOT ENTIRELY': 1, 'NOT ENTIRELY EXTINGUISHED': 1, 'ENTIRELY EXTINGUISHED OR': 1, 'EXTINGUISHED OR CONSEQUENCES': 1, 'OR CONSEQUENCES WILL': 1, 'CONSEQUENCES WILL ENSUE': 1, 'WILL ENSUE WHICH': 1, 'ENSUE WHICH ARE': 1, 'WHICH ARE APPALLING': 1, 'ARE APPALLING TO': 1, 'APPALLING TO BE': 1, 'TO BE THOUGHT': 1, 'BE THOUGHT OF': 1, 'IF PARTIES IN': 1, 'PARTIES IN A': 1, 'IN A REPUBLIC': 1, 'A REPUBLIC ARE': 1, 'REPUBLIC ARE NECESSARY': 1, 'ARE NECESSARY TO': 1, 'NECESSARY TO SECURE': 1, 'TO SECURE A': 1, 'SECURE A DEGREE': 1, 'A DEGREE OF': 1, 'DEGREE OF VIGILANCE': 1, 'OF VIGILANCE SUFFICIENT': 1, 'VIGILANCE SUFFICIENT TO': 1, 'SUFFICIENT TO KEEP': 1, 'TO KEEP THE': 1, 'KEEP THE PUBLIC': 1, 'THE PUBLIC FUNCTIONARIES': 1, 'PUBLIC FUNCTIONARIES WITHIN': 1, 'FUNCTIONARIES WITHIN THE': 1, 'WITHIN THE BOUNDS': 1, 'THE BOUNDS OF': 1, 'BOUNDS OF LAW': 1, 'OF LAW AND': 1, 'LAW AND DUTY': 1, 'AND DUTY AT': 1, 'DUTY AT THAT': 1, 'AT THAT POINT': 1, 'THAT POINT THEIR': 1, 'POINT THEIR USEFULNESS': 1, 'THEIR USEFULNESS ENDS': 1, 'BEYOND THAT THEY': 1, 'THAT THEY BECOME': 1, 'THEY BECOME DESTRUCTIVE': 1, 'BECOME DESTRUCTIVE OF': 1, 'DESTRUCTIVE OF PUBLIC': 1, 'OF PUBLIC VIRTUE': 1, 'PUBLIC VIRTUE THE': 1, 'VIRTUE THE PARENT': 1, 'THE PARENT OF': 1, 'PARENT OF A': 1, 'OF A SPIRIT': 1, 'A SPIRIT ANTAGONIST': 1, 'SPIRIT ANTAGONIST TO': 1, 'ANTAGONIST TO THAT': 1, 'OF LIBERTY AND': 1, 'LIBERTY AND EVENTUALLY': 1, 'AND EVENTUALLY ITS': 1, 'EVENTUALLY ITS INEVITABLE': 1, 'ITS INEVITABLE CONQUEROR': 1, 'WE HAVE EXAMPLES': 1, 'HAVE EXAMPLES OF': 1, 'EXAMPLES OF REPUBLICS': 1, 'OF REPUBLICS WHERE': 1, 'REPUBLICS WHERE THE': 1, 'WHERE THE LOVE': 1, 'LOVE OF COUNTRY': 1, 'OF COUNTRY AND': 1, 'COUNTRY AND OF': 1, 'AND OF LIBERTY': 1, 'OF LIBERTY AT': 1, 'LIBERTY AT ONE': 1, 'ONE TIME WERE': 1, 'TIME WERE THE': 1, 'WERE THE DOMINANT': 1, 'THE DOMINANT PASSIONS': 1, 'DOMINANT PASSIONS OF': 1, 'PASSIONS OF THE': 1, 'THE WHOLE MASS': 1, 'WHOLE MASS OF': 1, 'MASS OF CITIZENS': 1, 'OF CITIZENS AND': 1, 'CITIZENS AND YET': 1, 'AND YET WITH': 1, 'YET WITH THE': 1, 'WITH THE CONTINUANCE': 1, 'OF THE NAME': 1, 'THE NAME AND': 1, 'NAME AND FORMS': 1, 'FORMS OF FREE': 1, 'OF FREE GOVERNMENT': 1, 'FREE GOVERNMENT NOT': 1, 'GOVERNMENT NOT A': 1, 'NOT A VESTIGE': 1, 'A VESTIGE OF': 1, 'VESTIGE OF THESE': 1, 'OF THESE QUALITIES': 1, 'THESE QUALITIES REMAINING': 1, 'QUALITIES REMAINING IN': 1, 'REMAINING IN THE': 1, 'BOSOMS OF ANY': 1, 'OF ANY ONE': 1, 'ANY ONE OF': 1, 'ONE OF ITS': 1, 'OF ITS CITIZENS': 1, 'WAS THE BEAUTIFUL': 1, 'THE BEAUTIFUL REMARK': 1, 'BEAUTIFUL REMARK OF': 1, 'OF A DISTINGUISHED': 1, 'A DISTINGUISHED ENGLISH': 1, 'DISTINGUISHED ENGLISH WRITER': 1, 'ENGLISH WRITER THAT': 1, 'WRITER THAT IN': 1, 'IN THE ROMAN': 1, 'THE ROMAN SENATE': 1, 'ROMAN SENATE OCTAVIUS': 1, 'SENATE OCTAVIUS HAD': 1, 'OCTAVIUS HAD A': 1, 'HAD A PARTY': 1, 'A PARTY AND': 1, 'PARTY AND ANTHONY': 1, 'AND ANTHONY A': 1, 'ANTHONY A PARTY': 1, 'A PARTY BUT': 1, 'PARTY BUT THE': 1, 'BUT THE COMMONWEALTH': 1, 'THE COMMONWEALTH HAD': 1, 'COMMONWEALTH HAD NONE': 1, 'HAD NONE YET': 1, 'NONE YET THE': 1, 'YET THE SENATE': 1, 'THE SENATE CONTINUED': 1, 'SENATE CONTINUED TO': 1, 'CONTINUED TO MEET': 1, 'TO MEET IN': 1, 'MEET IN THE': 1, 'IN THE TEMPLE': 1, 'THE TEMPLE OF': 1, 'TEMPLE OF LIBERTY': 1, 'OF LIBERTY TO': 1, 'LIBERTY TO TALK': 1, 'TO TALK OF': 1, 'TALK OF THE': 1, 'OF THE SACREDNESS': 1, 'THE SACREDNESS AND': 1, 'SACREDNESS AND BEAUTY': 1, 'AND BEAUTY OF': 1, 'BEAUTY OF THE': 1, 'OF THE COMMONWEALTH': 1, 'THE COMMONWEALTH AND': 1, 'COMMONWEALTH AND GAZE': 1, 'AND GAZE AT': 1, 'GAZE AT THE': 1, 'AT THE STATUES': 1, 'THE STATUES OF': 1, 'STATUES OF THE': 1, 'OF THE ELDER': 1, 'THE ELDER BRUTUS': 1, 'ELDER BRUTUS AND': 1, 'BRUTUS AND OF': 1, 'OF THE CURTII': 1, 'THE CURTII AND': 1, 'CURTII AND DECII': 1, 'AND DECII AND': 1, 'DECII AND THE': 1, 'AND THE PEOPLE': 1, 'THE PEOPLE ASSEMBLED': 1, 'PEOPLE ASSEMBLED IN': 1, 'ASSEMBLED IN THE': 1, 'IN THE FORUM': 1, 'THE FORUM NOT': 1, 'FORUM NOT AS': 1, 'NOT AS IN': 1, 'IN THE DAYS': 1, 'THE DAYS OF': 1, 'DAYS OF CAMILLUS': 1, 'OF CAMILLUS AND': 1, 'CAMILLUS AND THE': 1, 'AND THE SCIPIOS': 1, 'THE SCIPIOS TO': 1, 'SCIPIOS TO CAST': 1, 'TO CAST THEIR': 1, 'CAST THEIR FREE': 1, 'THEIR FREE VOTES': 1, 'FREE VOTES FOR': 1, 'VOTES FOR ANNUAL': 1, 'FOR ANNUAL MAGISTRATES': 1, 'ANNUAL MAGISTRATES OR': 1, 'MAGISTRATES OR PASS': 1, 'OR PASS UPON': 1, 'PASS UPON THE': 1, 'OF THE SENATE': 1, 'THE SENATE BUT': 1, 'SENATE BUT TO': 1, 'BUT TO RECEIVE': 1, 'TO RECEIVE FROM': 1, 'RECEIVE FROM THE': 1, 'OF THE LEADERS': 1, 'THE LEADERS OF': 1, 'LEADERS OF THE': 1, 'OF THE RESPECTIVE': 1, 'THE RESPECTIVE PARTIES': 1, 'RESPECTIVE PARTIES THEIR': 1, 'PARTIES THEIR SHARE': 1, 'THEIR SHARE OF': 1, 'OF THE SPOILS': 1, 'THE SPOILS AND': 1, 'SPOILS AND TO': 1, 'AND TO SHOUT': 1, 'TO SHOUT FOR': 1, 'SHOUT FOR ONE': 1, 'FOR ONE OR': 1, 'ONE OR THE': 1, 'OR THE OTHER': 1, 'THE OTHER AS': 1, 'OTHER AS THOSE': 1, 'AS THOSE COLLECTED': 1, 'THOSE COLLECTED IN': 1, 'COLLECTED IN GAUL': 1, 'IN GAUL OR': 1, 'GAUL OR EGYPT': 1, 'OR EGYPT AND': 1, 'EGYPT AND THE': 1, 'AND THE LESSER': 1, 'THE LESSER ASIA': 1, 'LESSER ASIA WOULD': 1, 'ASIA WOULD FURNISH': 1, 'WOULD FURNISH THE': 1, 'FURNISH THE LARGER': 1, 'THE LARGER DIVIDEND': 1, 'OF LIBERTY HAD': 1, 'LIBERTY HAD FLED': 1, 'HAD FLED AND': 1, 'FLED AND AVOIDING': 1, 'AND AVOIDING THE': 1, 'AVOIDING THE ABODES': 1, 'THE ABODES OF': 1, 'ABODES OF CIVILIZED': 1, 'OF CIVILIZED MAN': 1, 'CIVILIZED MAN HAD': 1, 'MAN HAD SOUGHT': 1, 'HAD SOUGHT PROTECTION': 1, 'SOUGHT PROTECTION IN': 1, 'PROTECTION IN THE': 1, 'IN THE WILDS': 1, 'THE WILDS OF': 1, 'WILDS OF SCYTHIA': 1, 'OF SCYTHIA OR': 1, 'SCYTHIA OR SCANDINAVIA': 1, 'OR SCANDINAVIA AND': 1, 'SCANDINAVIA AND SO': 1, 'AND SO UNDER': 1, 'SO UNDER THE': 1, 'UNDER THE OPERATION': 1, 'THE OPERATION OF': 1, 'OPERATION OF THE': 1, 'SAME CAUSES AND': 1, 'CAUSES AND INFLUENCES': 1, 'AND INFLUENCES IT': 1, 'INFLUENCES IT WILL': 1, 'IT WILL FLY': 1, 'WILL FLY FROM': 1, 'FLY FROM OUR': 1, 'FROM OUR CAPITOL': 1, 'OUR CAPITOL AND': 1, 'CAPITOL AND OUR': 1, 'AND OUR FORUMS': 1, 'A CALAMITY SO': 1, 'CALAMITY SO AWFUL': 1, 'SO AWFUL NOT': 1, 'AWFUL NOT ONLY': 1, 'NOT ONLY TO': 1, 'ONLY TO OUR': 1, 'OUR COUNTRY BUT': 1, 'COUNTRY BUT TO': 1, 'BUT TO THE': 1, 'TO THE WORLD': 1, 'THE WORLD MUST': 1, 'WORLD MUST BE': 1, 'MUST BE DEPRECATED': 1, 'BE DEPRECATED BY': 1, 'DEPRECATED BY EVERY': 1, 'BY EVERY PATRIOT': 1, 'EVERY PATRIOT AND': 1, 'PATRIOT AND EVERY': 1, 'AND EVERY TENDENCY': 1, 'EVERY TENDENCY TO': 1, 'TENDENCY TO A': 1, 'TO A STATE': 1, 'OF THINGS LIKELY': 1, 'THINGS LIKELY TO': 1, 'TO PRODUCE IT': 1, 'PRODUCE IT IMMEDIATELY': 1, 'IT IMMEDIATELY CHECKED': 1, 'SUCH A TENDENCY': 1, 'A TENDENCY HAS': 1, 'TENDENCY HAS EXISTED--DOES': 1, 'HAS EXISTED--DOES EXIST': 1, 'ALWAYS THE FRIEND': 1, 'THE FRIEND OF': 1, 'FRIEND OF MY': 1, 'MY COUNTRYMEN NEVER': 1, 'COUNTRYMEN NEVER THEIR': 1, 'NEVER THEIR FLATTERER': 1, 'THEIR FLATTERER IT': 1, 'FLATTERER IT BECOMES': 1, 'IT BECOMES MY': 1, 'BECOMES MY DUTY': 1, 'MY DUTY TO': 1, 'DUTY TO SAY': 1, 'TO SAY TO': 1, 'SAY TO THEM': 1, 'TO THEM FROM': 1, 'THEM FROM THIS': 1, 'FROM THIS HIGH': 1, 'THIS HIGH PLACE': 1, 'HIGH PLACE TO': 1, 'PLACE TO WHICH': 1, 'TO WHICH THEIR': 1, 'WHICH THEIR PARTIALITY': 1, 'THEIR PARTIALITY HAS': 1, 'PARTIALITY HAS EXALTED': 1, 'HAS EXALTED ME': 1, 'EXALTED ME THAT': 1, 'ME THAT THERE': 1, 'THAT THERE EXISTS': 1, 'THERE EXISTS IN': 1, 'EXISTS IN THE': 1, 'IN THE LAND': 1, 'THE LAND A': 1, 'LAND A SPIRIT': 1, 'A SPIRIT HOSTILE': 1, 'SPIRIT HOSTILE TO': 1, 'HOSTILE TO THEIR': 1, 'TO THEIR BEST': 1, 'THEIR BEST INTERESTS--HOSTILE': 1, 'BEST INTERESTS--HOSTILE TO': 1, 'INTERESTS--HOSTILE TO LIBERTY': 1, 'TO LIBERTY ITSELF': 1, 'IS A SPIRIT': 1, 'A SPIRIT CONTRACTED': 1, 'SPIRIT CONTRACTED IN': 1, 'CONTRACTED IN ITS': 1, 'IN ITS VIEWS': 1, 'ITS VIEWS SELFISH': 1, 'VIEWS SELFISH IN': 1, 'SELFISH IN ITS': 1, 'IN ITS OBJECTS': 1, 'IT LOOKS TO': 1, 'LOOKS TO THE': 1, 'TO THE AGGRANDIZEMENT': 1, 'THE AGGRANDIZEMENT OF': 1, 'AGGRANDIZEMENT OF A': 1, 'A FEW EVEN': 1, 'FEW EVEN TO': 1, 'EVEN TO THE': 1, 'TO THE DESTRUCTION': 1, 'DESTRUCTION OF THE': 1, 'OF THE INTERESTS': 1, 'THE ENTIRE REMEDY': 1, 'ENTIRE REMEDY IS': 1, 'REMEDY IS WITH': 1, 'IS WITH THE': 1, 'WITH THE PEOPLE': 1, 'SOMETHING HOWEVER MAY': 1, 'HOWEVER MAY BE': 1, 'MAY BE EFFECTED': 1, 'EFFECTED BY THE': 1, 'BY THE MEANS': 1, 'THE MEANS WHICH': 1, 'MEANS WHICH THEY': 1, 'THEY HAVE PLACED': 1, 'HAVE PLACED IN': 1, 'IT IS UNION': 1, 'IS UNION THAT': 1, 'UNION THAT WE': 1, 'THAT WE WANT': 1, 'WE WANT NOT': 1, 'WANT NOT OF': 1, 'OF A PARTY': 1, 'A PARTY FOR': 1, 'PARTY FOR THE': 1, 'SAKE OF THAT': 1, 'OF THAT PARTY': 1, 'THAT PARTY BUT': 1, 'PARTY BUT A': 1, 'BUT A UNION': 1, 'A UNION OF': 1, 'SAKE OF THE': 1, 'DEFENSE OF ITS': 1, 'OF ITS INTERESTS': 1, 'ITS INTERESTS AND': 1, 'INTERESTS AND ITS': 1, 'AND ITS HONOR': 1, 'ITS HONOR AGAINST': 1, 'HONOR AGAINST FOREIGN': 1, 'AGAINST FOREIGN AGGRESSION': 1, 'FOREIGN AGGRESSION FOR': 1, 'AGGRESSION FOR THE': 1, 'DEFENSE OF THOSE': 1, 'OF THOSE PRINCIPLES': 1, 'THOSE PRINCIPLES FOR': 1, 'PRINCIPLES FOR WHICH': 1, 'OUR ANCESTORS SO': 1, 'ANCESTORS SO GLORIOUSLY': 1, 'SO GLORIOUSLY CONTENDED': 1, 'FAR AS IT': 1, 'AS IT DEPENDS': 1, 'IT DEPENDS UPON': 1, 'DEPENDS UPON ME': 1, 'UPON ME IT': 1, 'ME IT SHALL': 1, 'IT SHALL BE': 1, 'SHALL BE ACCOMPLISHED': 1, 'ALL THE INFLUENCE': 1, 'THE INFLUENCE THAT': 1, 'INFLUENCE THAT I': 1, 'THAT I POSSESS': 1, 'I POSSESS SHALL': 1, 'POSSESS SHALL BE': 1, 'SHALL BE EXERTED': 1, 'BE EXERTED TO': 1, 'EXERTED TO PREVENT': 1, 'PREVENT THE FORMATION': 1, 'THE FORMATION AT': 1, 'FORMATION AT LEAST': 1, 'AT LEAST OF': 1, 'LEAST OF AN': 1, 'OF AN EXECUTIVE': 1, 'AN EXECUTIVE PARTY': 1, 'EXECUTIVE PARTY IN': 1, 'PARTY IN THE': 1, 'IN THE HALLS': 1, 'THE HALLS OF': 1, 'HALLS OF THE': 1, 'I WISH FOR': 1, 'WISH FOR THE': 1, 'FOR THE SUPPORT': 1, 'SUPPORT OF NO': 1, 'OF NO MEMBER': 1, 'NO MEMBER OF': 1, 'MEMBER OF THAT': 1, 'OF THAT BODY': 1, 'THAT BODY TO': 1, 'BODY TO ANY': 1, 'TO ANY MEASURE': 1, 'ANY MEASURE OF': 1, 'MEASURE OF MINE': 1, 'OF MINE THAT': 1, 'MINE THAT DOES': 1, 'THAT DOES NOT': 1, 'DOES NOT SATISFY': 1, 'NOT SATISFY HIS': 1, 'SATISFY HIS JUDGMENT': 1, 'HIS JUDGMENT AND': 1, 'JUDGMENT AND HIS': 1, 'AND HIS SENSE': 1, 'HIS SENSE OF': 1, 'SENSE OF DUTY': 1, 'OF DUTY TO': 1, 'DUTY TO THOSE': 1, 'TO THOSE FROM': 1, 'THOSE FROM WHOM': 1, 'FROM WHOM HE': 1, 'WHOM HE HOLDS': 1, 'HE HOLDS HIS': 1, 'HOLDS HIS APPOINTMENT': 1, 'HIS APPOINTMENT NOR': 1, 'APPOINTMENT NOR ANY': 1, 'NOR ANY CONFIDENCE': 1, 'ANY CONFIDENCE IN': 1, 'CONFIDENCE IN ADVANCE': 1, 'IN ADVANCE FROM': 1, 'ADVANCE FROM THE': 1, 'FROM THE PEOPLE': 1, 'PEOPLE BUT THAT': 1, 'BUT THAT ASKED': 1, 'THAT ASKED FOR': 1, 'ASKED FOR BY': 1, 'FOR BY MR': 1, 'JEFFERSON TO GIVE': 1, 'TO GIVE FIRMNESS': 1, 'GIVE FIRMNESS AND': 1, 'FIRMNESS AND EFFECT': 1, 'AND EFFECT TO': 1, 'EFFECT TO THE': 1, 'TO THE LEGAL': 1, 'THE LEGAL ADMINISTRATION': 1, 'LEGAL ADMINISTRATION OF': 1, 'ADMINISTRATION OF THEIR': 1, 'THEIR AFFAIRS I': 1, 'AFFAIRS I DEEM': 1, 'I DEEM THE': 1, 'DEEM THE PRESENT': 1, 'THE PRESENT OCCASION': 1, 'PRESENT OCCASION SUFFICIENTLY': 1, 'OCCASION SUFFICIENTLY IMPORTANT': 1, 'SUFFICIENTLY IMPORTANT AND': 1, 'IMPORTANT AND SOLEMN': 1, 'AND SOLEMN TO': 1, 'SOLEMN TO JUSTIFY': 1, 'TO JUSTIFY ME': 1, 'JUSTIFY ME IN': 1, 'ME IN EXPRESSING': 1, 'IN EXPRESSING TO': 1, 'EXPRESSING TO MY': 1, 'MY FELLOW-CITIZENS A': 1, 'FELLOW-CITIZENS A PROFOUND': 1, 'A PROFOUND REVERENCE': 1, 'PROFOUND REVERENCE FOR': 1, 'REVERENCE FOR THE': 1, 'FOR THE CHRISTIAN': 1, 'THE CHRISTIAN RELIGION': 1, 'CHRISTIAN RELIGION AND': 1, 'RELIGION AND A': 1, 'AND A THOROUGH': 1, 'A THOROUGH CONVICTION': 1, 'THOROUGH CONVICTION THAT': 1, 'CONVICTION THAT SOUND': 1, 'THAT SOUND MORALS': 1, 'SOUND MORALS RELIGIOUS': 1, 'MORALS RELIGIOUS LIBERTY': 1, 'RELIGIOUS LIBERTY AND': 1, 'LIBERTY AND A': 1, 'AND A JUST': 1, 'A JUST SENSE': 1, 'JUST SENSE OF': 1, 'SENSE OF RELIGIOUS': 1, 'OF RELIGIOUS RESPONSIBILITY': 1, 'RELIGIOUS RESPONSIBILITY ARE': 1, 'RESPONSIBILITY ARE ESSENTIALLY': 1, 'ARE ESSENTIALLY CONNECTED': 1, 'ESSENTIALLY CONNECTED WITH': 1, 'CONNECTED WITH ALL': 1, 'WITH ALL TRUE': 1, 'ALL TRUE AND': 1, 'TRUE AND LASTING': 1, 'AND LASTING HAPPINESS': 1, 'LASTING HAPPINESS AND': 1, 'HAPPINESS AND TO': 1, 'AND TO THAT': 1, 'TO THAT GOOD': 1, 'THAT GOOD BEING': 1, 'GOOD BEING WHO': 1, 'BEING WHO HAS': 1, 'WHO HAS BLESSED': 1, 'HAS BLESSED US': 1, 'BLESSED US BY': 1, 'US BY THE': 1, 'BY THE GIFTS': 1, 'THE GIFTS OF': 1, 'GIFTS OF CIVIL': 1, 'AND RELIGIOUS FREEDOM': 1, 'RELIGIOUS FREEDOM WHO': 1, 'FREEDOM WHO WATCHED': 1, 'WHO WATCHED OVER': 1, 'WATCHED OVER AND': 1, 'OVER AND PROSPERED': 1, 'AND PROSPERED THE': 1, 'PROSPERED THE LABORS': 1, 'LABORS OF OUR': 1, 'OF OUR FATHERS': 1, 'OUR FATHERS AND': 1, 'FATHERS AND HAS': 1, 'AND HAS HITHERTO': 1, 'HAS HITHERTO PRESERVED': 1, 'HITHERTO PRESERVED TO': 1, 'PRESERVED TO US': 1, 'TO US INSTITUTIONS': 1, 'US INSTITUTIONS FAR': 1, 'INSTITUTIONS FAR EXCEEDING': 1, 'FAR EXCEEDING IN': 1, 'EXCEEDING IN EXCELLENCE': 1, 'IN EXCELLENCE THOSE': 1, 'EXCELLENCE THOSE OF': 1, 'THOSE OF ANY': 1, 'ANY OTHER PEOPLE': 1, 'OTHER PEOPLE LET': 1, 'PEOPLE LET US': 1, 'LET US UNITE': 1, 'US UNITE IN': 1, 'UNITE IN FERVENTLY': 1, 'IN FERVENTLY COMMENDING': 1, 'FERVENTLY COMMENDING EVERY': 1, 'COMMENDING EVERY INTEREST': 1, 'EVERY INTEREST OF': 1, 'INTEREST OF OUR': 1, 'OF OUR BELOVED': 1, 'OUR BELOVED COUNTRY': 1, 'BELOVED COUNTRY IN': 1, 'COUNTRY IN ALL': 1, 'IN ALL FUTURE': 1, 'ALL FUTURE TIME': 1, 'FELLOW-CITIZENS BEING FULLY': 1, 'BEING FULLY INVESTED': 1, 'FULLY INVESTED WITH': 1, 'INVESTED WITH THAT': 1, 'WITH THAT HIGH': 1, 'HIGH OFFICE TO': 1, 'OFFICE TO WHICH': 1, 'TO WHICH THE': 1, 'WHICH THE PARTIALITY': 1, 'THE PARTIALITY OF': 1, 'PARTIALITY OF MY': 1, 'MY COUNTRYMEN HAS': 1, 'COUNTRYMEN HAS CALLED': 1, 'HAS CALLED ME': 1, 'CALLED ME I': 1, 'ME I NOW': 1, 'I NOW TAKE': 1, 'NOW TAKE AN': 1, 'TAKE AN AFFECTIONATE': 1, 'AN AFFECTIONATE LEAVE': 1, 'AFFECTIONATE LEAVE OF': 1, 'LEAVE OF YOU': 1, 'YOU WILL BEAR': 1, 'WILL BEAR WITH': 1, 'BEAR WITH YOU': 1, 'WITH YOU TO': 1, 'YOU TO YOUR': 1, 'TO YOUR HOMES': 1, 'YOUR HOMES THE': 1, 'HOMES THE REMEMBRANCE': 1, 'THE REMEMBRANCE OF': 1, 'REMEMBRANCE OF THE': 1, 'OF THE PLEDGE': 1, 'THE PLEDGE I': 1, 'PLEDGE I HAVE': 1, 'I HAVE THIS': 1, 'HAVE THIS DAY': 1, 'THIS DAY GIVEN': 1, 'DAY GIVEN TO': 1, 'GIVEN TO DISCHARGE': 1, 'TO DISCHARGE ALL': 1, 'DISCHARGE ALL THE': 1, 'ALL THE HIGH': 1, 'THE HIGH DUTIES': 1, 'HIGH DUTIES OF': 1, 'DUTIES OF MY': 1, 'OF MY EXALTED': 1, 'MY EXALTED STATION': 1, 'EXALTED STATION ACCORDING': 1, 'STATION ACCORDING TO': 1, 'ACCORDING TO THE': 1, 'TO THE BEST': 1, 'THE BEST OF': 1, 'BEST OF MY': 1, 'OF MY ABILITY': 1, 'MY ABILITY AND': 1, 'ABILITY AND I': 1, 'I SHALL ENTER': 1, 'SHALL ENTER UPON': 1, 'ENTER UPON THEIR': 1, 'UPON THEIR PERFORMANCE': 1, 'THEIR PERFORMANCE WITH': 1, 'PERFORMANCE WITH ENTIRE': 1, 'WITH ENTIRE CONFIDENCE': 1, 'ENTIRE CONFIDENCE IN': 1, 'IN THE SUPPORT': 1, 'SUPPORT OF A': 1, 'OF A JUST': 1, 'A JUST AND': 1, 'JUST AND GENEROUS': 1, 'AND GENEROUS PEOPLE': 1})\n" - ] - } - ], - "source": [ - "from urllib.request import urlopen\n", - "from bs4 import BeautifulSoup\n", - "import re\n", - "import string\n", - "from collections import Counter\n", - "\n", - "def cleanSentence(sentence):\n", - " sentence = sentence.split(' ')\n", - " sentence = [word.strip(string.punctuation+string.whitespace) for word in sentence]\n", - " sentence = [word for word in sentence if len(word) > 1 or (word.lower() == 'a' or word.lower() == 'i')]\n", - " return sentence\n", - "\n", - "def cleanInput(content):\n", - " content = content.upper()\n", - " content = re.sub('\\n', ' ', content)\n", - " content = bytes(content, 'UTF-8')\n", - " content = content.decode('ascii', 'ignore')\n", - " sentences = content.split('. ')\n", - " return [cleanSentence(sentence) for sentence in sentences]\n", - "\n", - "def getNgramsFromSentence(content, n):\n", - " output = []\n", - " for i in range(len(content)-n+1):\n", - " output.append(content[i:i+n])\n", - " return output\n", - "\n", - "def getNgrams(content, n):\n", - " content = cleanInput(content)\n", - " ngrams = Counter()\n", - " ngrams_list = []\n", - " for sentence in content:\n", - " newNgrams = [' '.join(ngram) for ngram in getNgramsFromSentence(sentence, n)]\n", - " ngrams_list.extend(newNgrams)\n", - " ngrams.update(newNgrams)\n", - " return(ngrams)\n", - "\n", - "\n", - "content = str(\n", - " urlopen('http://pythonscraping.com/files/inaugurationSpeech.txt').read(),\n", - " 'utf-8')\n", - "ngrams = getNgrams(content, 3)\n", - "print(ngrams)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] - }, - { - "cell_type": "code", - "execution_count": 31, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Counter({'EXCLUSIVE METALLIC CURRENCY': 2, 'HAD SUPPOSED WAS': 1, 'CHIEF EXECUTIVE OFFICE': 1, 'MOST STRIKING CONTRAST': 1, 'STRIKING CONTRAST WAS': 1, 'CONTRAST WAS OBSERVABLE': 1, 'THOUSAND YEARS SINCE': 1, 'REMARK WAS MADE': 1, 'MODERN ELECTIVE GOVERNMENTS': 1, 'DEVELOP SIMILAR INSTANCES': 1, 'GONE FORTH PROCLAIMING': 1, 'GLORIOUS UNION NOTHING': 1, 'UNION NOTHING UPON': 1, 'MOTIVE MAY EXIST': 1, 'SHALL STAND EITHER': 1, 'STAND EITHER EXONERATED': 1, 'HOWEVER STRONG MAY': 1, 'CHIEF CONFIDENCE UPON': 1, 'STILL GREATLY INFERIOR': 1, 'GREATLY INFERIOR TRUSTS': 1, 'INFERIOR TRUSTS HERETOFORE': 1, 'TRUSTS HERETOFORE CONFIDED': 1, 'BROAD FOUNDATION UPON': 1, 'CONSTITUTION RESTS BEING': 1, 'THEIRS HAVING MADE': 1, 'ARE CALLED UPON': 1, 'CONSIDERED MOST PURELY': 1, 'MOST PURELY DEMOCRATIC': 1, 'MOST ESSENTIAL DIFFERENCE': 1, 'OTHERS LAY CLAIM': 1, 'POWER LIMITED ONLY': 1, 'POWER PRECISELY EQUAL': 1, 'DIVINE RIGHT BELIEVING': 1, 'DISTINCTION AMONGST MEN': 1, 'ONLY LEGITIMATE RIGHT': 1, 'SEVERAL DEPARTMENTS COMPOSING': 1, 'ARE CERTAIN RIGHTS': 1, 'CERTAIN RIGHTS POSSESSED': 1, 'EACH INDIVIDUAL AMERICAN': 1, 'INDIVIDUAL AMERICAN CITIZEN': 1, 'ROMAN CITIZEN WAS': 1, 'SHIELD ONLY AGAINST': 1, 'PETTY PROVINCIAL RULER': 1, 'PROVINCIAL RULER WHILST': 1, 'CONSOLE HIMSELF UNDER': 1, \"ONE'S FAITH PRESCRIBE\": 1, 'FAITH PRESCRIBE FORMS': 1, \"ONE'S OBSERVANCE INFLICT\": 1, 'AFTER WELL-ASCERTAINED GUILT': 1, 'INVESTIGATION UNDER RULES': 1, 'UNDER RULES PRESCRIBED': 1, 'THOSE SCARCELY LESS': 1, 'SCARCELY LESS IMPORTANT': 1, 'AMERICAN CITIZEN DERIVES': 1, 'SAME ALMIGHTY HAND': 1, 'LIMITED SOVEREIGNTY POSSESSED': 1, 'INTIMATE UNION EFFECTED': 1, 'UNION EFFECTED DOMESTIC': 1, 'EFFECTED DOMESTIC TRANQUILLITY': 1, 'DOMESTIC TRANQUILLITY PRESERVED': 1, 'PERSONAL LIBERTY SECURED': 1, 'NECESSARILY SENTENTIOUS MANNER': 1, 'POWERS CLAIMED UNDER': 1, 'GENERAL CLAUSE GIVING': 1, 'STATESMEN MOST DISTINGUISHED': 1, 'MOST WARMLY DISPUTED': 1, 'WARMLY DISPUTED QUESTIONS': 1, 'DISPUTED QUESTIONS FORCES': 1, 'QUESTIONS FORCES UPON': 1, 'FORCES UPON US': 1, 'WERE ARE ATTRIBUTABLE': 1, 'GRANTED STILL ENOUGH': 1, 'MEN ARE LESS': 1, 'ARE LESS JEALOUS': 1, 'DEPARTMENT UPON ANOTHER': 1, 'OWN RESERVED RIGHTS': 1, 'SIMPLE REPRESENTATIVE DEMOCRACY': 1, 'INCREASE ITSELF PARTICULARLY': 1, 'SINGLE INDIVIDUAL PREDICTIONS': 1, 'INDIVIDUAL PREDICTIONS WERE': 1, 'PREDICTIONS WERE MADE': 1, 'VERY REMOTE PERIOD': 1, 'CONCEIVE STRICTLY PROPER': 1, 'ANY LEGITIMATE EXERCISE': 1, 'FORMER ARE UNQUESTIONABLY': 1, 'JUDGMENT ARE ATTRIBUTABLE': 1, 'JEFFERSON EARLY SAW': 1, 'MADE HITHERTO WITHOUT': 1, 'HITHERTO WITHOUT SUCCESS': 1, 'CONTINUE ANY FEATURE': 1, 'WHOM NECESSITY OBLIGES': 1, 'THOSE NOBLE FEELINGS': 1, 'DEVOTED REPUBLICAN PATRIOT': 1, 'CORRUPTING PASSION ONCE': 1, 'PASSION ONCE TAKES': 1, 'ONCE TAKES POSSESSION': 1, 'EFFECTED PUBLIC OPINION': 1, 'PUBLIC OPINION MAY': 1, 'OPINION MAY SECURE': 1, 'PLEDGE HERETOFORE GIVEN': 1, 'POWERS ACTUALLY GIVEN': 1, 'FAIR CONSTRUCTION ANY': 1, 'RECOMMEND SINCE ALTHOUGH': 1, 'SINCE ALTHOUGH ENJOINED': 1, 'GRANTS ARE VESTED': 1, 'ONLY DECLARE VOID': 1, 'DECLARE VOID THOSE': 1, 'EVERY INSTANCE WHERE': 1, 'SIMILAR CHARACTER HOWEVER': 1, 'ENJOYED MUCH FAVOR': 1, 'LEADING DEMOCRATIC PRINCIPLE': 1, 'MAJORITY SHOULD GOVERN': 1, 'COUNTRY MIGHT REQUIRE': 1, 'OWN IMMEDIATE REPRESENTATIVES': 1, 'ARGUMENT ACQUIRES ADDITIONAL': 1, 'ACQUIRES ADDITIONAL FORCE': 1, 'BILLS WERE NEVER': 1, 'WERE NEVER RETURNED': 1, 'PRESIDENTS ABOVE REFERRED': 1, 'VETO WAS APPLIED': 1, 'WAS APPLIED UPON': 1, 'TOO HASTY ENACTMENT': 1, 'SAME CAUSES MUST': 1, 'CAUSES MUST EVER': 1, 'MUST EVER EXHIBIT': 1, 'VARIOUS SECTIONS CALLING': 1, 'ALWAYS JUSTLY REGARD': 1, 'HOWEVER LARGELY PARTAKING': 1, 'WAS PROPER THEREFORE': 1, 'SUCH INFLUENCES MIGHT': 1, 'EXECUTIVE DEPARTMENT CONSTITUTED': 1, 'HIGH OFFICE HAVING': 1, 'EVERY SECTION STATE': 1, 'UNION MUST CONSIDER': 1, 'MUST CONSIDER HIMSELF': 1, 'CONSIDER HIMSELF BOUND': 1, 'MOST SOLEMN SANCTIONS': 1, 'EVERY PORTION GREAT': 1, 'VETO POWER THEREFORE': 1, 'POWER THEREFORE GIVEN': 1, 'UNITED STATES SOLELY': 1, 'HASTY LEGISLATION WHERE': 1, 'DECIDE DISPUTED POINTS': 1, 'POWERS EXPRESSLY GIVEN': 1, 'REPEATED RECOGNITIONS UNDER': 1, 'RECOGNITIONS UNDER VARIED': 1, 'UNDER VARIED CIRCUMSTANCES': 1, 'PRESIDENT SUFFICIENT AUTHORITY': 1, 'CONSIDERING SUCH DISPUTED': 1, 'SUCH DISPUTED POINTS': 1, 'FAIR EXHIBIT MADE': 1, 'ACTUAL CONDITION AFTER': 1, 'CONDITION AFTER FIFTY': 1, 'AFTER FIFTY YEARS': 1, 'FIFTY YEARS TRIAL': 1, 'CONSOLIDATED POWER ESTABLISHED': 1, 'POWER ESTABLISHED LEAVING': 1, 'SEIZED UPON NONE': 1, 'ANY OPEN WARFARE': 1, 'OPEN WARFARE MAY': 1, \"JEFFERSON'S ADMINISTRATION BECOME\": 1, 'CREATE GREAT ALARM': 1, 'MUCH GREATER MUST': 1, 'EARLY PRESIDENTS PERMITTED': 1, 'LAWS ARE EXECUTED': 1, 'MOST APPROVED WRITERS': 1, 'APPROVED WRITERS UPON': 1, 'APPEARS STRANGE INDEED': 1, 'ANYONE SHOULD DOUBT': 1, 'PRESIDENT POSSESSES OVER': 1, 'WITHOUT CAUSE DOES': 1, 'LEAST VIRTUALLY SUBJECT': 1, 'SACRED TREASURE SILENCED': 1, 'CREATED SUCH EXTENSIVE': 1, 'SUCH EXTENSIVE ALARM': 1, 'TREASURY DEPARTMENT ENTIRELY': 1, 'DEPARTMENT ENTIRELY INDEPENDENT': 1, 'REMOVABLE ONLY UPON': 1, 'TREASURY WITHOUT COMMUNICATING': 1, 'CIRCUMSTANCES ATTENDING SUCH': 1, 'ATTENDING SUCH REMOVAL': 1, 'ELECTIVE FRANCHISE THROUGH': 1, 'OWN INDEPENDENCE SECURED': 1, 'OWN UNBIASED JUDGMENTS': 1, 'MOST PRECIOUS LEGACIES': 1, 'WHATEVER PRETENSE IMPOSED': 1, 'PRETENSE IMPOSED ARE': 1, 'GOVERNMENT SHOULD NEVER': 1, 'UPON ANOTHER OCCASION': 1, 'RECOMMEND MEASURES WAS': 1, 'VERY STRANGE INDEED': 1, 'ALTOGETHER DIFFERENT DEPARTMENT': 1, 'BEST POLITICAL MAXIMS': 1, 'ARE OTHERS HOWEVER': 1, 'SYSTEM WITHOUT SINGULAR': 1, 'WITHOUT SINGULAR INCONGRUITY': 1, 'BILL MAY ORIGINATE': 1, 'MAY ORIGINATE NOR': 1, 'WHOM INTRODUCED--A MINISTER': 1, 'PRINCIPLE CERTAINLY ASSIGNS': 1, 'ONLY BODY CONSTITUTED': 1, 'FORMS EVEN DIRECT': 1, 'EXISTING REVENUE LAWS': 1, 'REVENUE LAWS SUGGESTED': 1, 'PUBLIC TREASURE SHOULD': 1, 'EXCLUSIVELY METALLIC HOWEVER': 1, 'ANY SINGLE SCHEME': 1, 'MOST INDIGENT FELLOW-CITIZENS': 1, 'ENTERPRISE ARE RAISED': 1, 'MEASURE BETTER CALCULATED': 1, 'RICH ARE DAILY': 1, 'ARE DAILY ADDING': 1, 'POOR SINKING DEEPER': 1, 'GREAT POLITICAL FAMILY': 1, 'POLITICAL FAMILY ARE': 1, 'FAMILY ARE COMPENSATED': 1, 'DISTRICT ONLY WHERE': 1, 'ONLY WHERE AMERICAN': 1, 'WHERE AMERICAN CITIZENS': 1, 'AMERICAN CITIZENS ARE': 1, 'SETTLED POLICY ARE': 1, 'POLICY ARE DEPRIVED': 1, 'IMPORTANT POLITICAL PRIVILEGES': 1, 'POLITICAL PRIVILEGES WITHOUT': 1, 'PRIVILEGES WITHOUT ANY': 1, 'WITHOUT ANY INSPIRING': 1, 'ANY INSPIRING HOPE': 1, 'ONLY CONSOLATION UNDER': 1, 'CONSOLATION UNDER CIRCUMSTANCES': 1, 'DEVOTED EXTERIOR GUARDS': 1, 'SUFFERINGS SECURE TRANQUILLITY': 1, 'THOSE ESSENTIALLY NECESSARY': 1, 'WERE THUS SEPARATED': 1, 'THOSE GREAT PRINCIPLES': 1, 'GREAT PRINCIPLES UPON': 1, 'CONSTITUTIONS ARE FOUNDED': 1, 'MOST STUPID MEN': 1, 'AMERICAN SUBJECTS ARE': 1, 'COLUMBIA SUCH DREAMS': 1, 'FREE AMERICAN CITIZENS': 1, 'CONSTITUTION WAS FORMED': 1, 'EMPHATICALLY INSISTED UPON': 1, 'UNITED STATES ACCEPT': 1, 'AMERICAN CITIZEN--THE GRANT': 1, 'CONTROLLING POWER NECESSARY': 1, 'RESPECTIVELY CLAIM ARE': 1, 'CLAIM ARE OFTEN': 1, 'ANY DISTINCT LINES': 1, 'CERTAIN PURPOSES COMPOSE': 1, 'NATION ARE MUCH': 1, 'LONG EXIST WITHOUT': 1, 'UNION BETWEEN FREE': 1, 'OFTEN FOUND INEFFECTUAL': 1, 'CORNER STONE UPON': 1, 'AMERICAN POLITICAL ARCHITECTS': 1, 'AFFECTIONATE ATTACHMENT BETWEEN': 1, 'EACH WERE MADE': 1, 'WERE MADE ACCESSIBLE': 1, 'ANY GOOD POSSESSED': 1, 'EXTENSIVE CONFEDERACY EXCEPT': 1, 'DOMESTIC GOVERNMENT WAS': 1, 'GOVERNMENT WAS WITHHELD': 1, 'LINES TOO SEPARATING': 1, 'TOO SEPARATING POWERS': 1, 'EACH STATE UNITE': 1, 'THEREFORE POSITIVELY PRECLUDED': 1, 'MAY INDEED OFFER': 1, 'CITIZENS REQUIRING COMPLIANCE': 1, 'WISHES TOO MUCH': 1, 'TOO MUCH RESEMBLE': 1, 'DISCREPANCY WAS OBSERVABLE': 1, 'INDIVIDUAL MEMBERS COMPOSING': 1, 'EARNEST ENDEAVOR MUTUALLY': 1, 'ABUNDANTLY TAUGHT US': 1, 'BITTERNESS ALIENATION DISCORD': 1, 'UNION--CORDIAL CONFIDING FRATERNAL': 1, 'CONFIDING FRATERNAL UNION--IS': 1, 'MOST IMPORTANT SINCE': 1, 'STATES MAY MEET': 1, 'MAY REGRET ANYTHING': 1, 'REGRET ANYTHING IMPRUDENT': 1, 'STATES GOVERNMENTS NOR': 1, 'MAKING PROPER EFFORTS': 1, 'SEVERAL STATES FORM': 1, 'COUNTRY ARE ABUNDANT': 1, 'RESPECTIVE GOVERNMENTS EACH': 1, 'GOVERNMENTS EACH ACTING': 1, 'EACH ACTING WITHIN': 1, 'RESTORE FORMER PROSPERITY': 1, 'COLLISIONS MAY SOMETIMES': 1, 'COUNTRYMEN WERE ONCE': 1, 'WERE ONCE DISTINGUISHED': 1, 'ONCE DISTINGUISHED CONTINUE': 1, 'SCHEMING POLITICIAN DISSIPATED': 1, 'DEMAGOGUE RENDERED HARMLESS': 1, 'INSTITUTIONS MAY RECEIVE': 1, 'WITHOUT CONSTANT NURTURE': 1, 'BEST HISTORIANS AGREE': 1, 'MADE US ACQUAINTED': 1, 'OWN CONSTANT ATTENTION': 1, 'WELL-ESTABLISHED FREE GOVERNMENTS': 1, 'FREE GOVERNMENTS ARISES': 1, 'DESIGNING MEN DIVERTING': 1, 'BOLIVAR POSSESSED HIMSELF': 1, 'WELL-ESTABLISHED REPUBLIC BEING': 1, 'REPUBLIC BEING CHANGED': 1, 'GREAT EXCITEMENT IMPOSES': 1, 'EXCITEMENT IMPOSES ITSELF': 1, 'IMPOSES ITSELF UPON': 1, 'FALSE CHRISTS WHOSE': 1, 'CHRISTS WHOSE COMING': 1, 'WHOSE COMING WAS': 1, 'COMING WAS FORETOLD': 1, 'MOST FAITHFUL DISCIPLES': 1, 'TIMES MUCH DIFFICULTY': 1, 'LIBERTY ALTHOUGH DEVOTED': 1, 'ALTHOUGH DEVOTED PERSEVERING': 1, 'DEVOTED PERSEVERING BOLD': 1, 'FASTENED ITSELF UPON': 1, 'ITSELF UPON ANY': 1, 'EXECUTIVE POWER INTRODUCED': 1, 'ESTABLISHED AMIDST UNUSUAL': 1, 'AMIDST UNUSUAL PROFESSIONS': 1, 'FOREGOING REMARKS RELATE': 1, 'REMARKS RELATE ALMOST': 1, 'RELATE ALMOST EXCLUSIVELY': 1, 'EVERY FOREIGN NATION': 1, 'RELATIONS ARE MOST': 1, 'ARE MOST INTIMATE': 1, 'FOREIGN POWERS ANY': 1, 'POWERS ANY INDICATION': 1, 'CHIEF MAGISTRATE UNWORTHY': 1, 'SUBLIME SPECTACLE NONE': 1, 'BEFORE CONCLUDING FELLOW-CITIZENS': 1, 'APPEARS PERFECTLY CLEAR': 1, 'THOSE PARTIES ARE': 1, 'REPUBLIC ARE NECESSARY': 1, 'PUBLIC FUNCTIONARIES WITHIN': 1, 'DISTINGUISHED ENGLISH WRITER': 1, 'ROMAN SENATE OCTAVIUS': 1, 'SENATE OCTAVIUS HAD': 1, 'COMMONWEALTH HAD NONE': 1, 'HAD NONE YET': 1, 'LIBERTY HAD FLED': 1, 'HAD SOUGHT PROTECTION': 1, 'SOMETHING HOWEVER MAY': 1, 'HONOR AGAINST FOREIGN': 1, 'AGAINST FOREIGN AGGRESSION': 1, 'APPOINTMENT NOR ANY': 1, 'NOR ANY CONFIDENCE': 1, 'PRESENT OCCASION SUFFICIENTLY': 1, 'OCCASION SUFFICIENTLY IMPORTANT': 1, 'SOUND MORALS RELIGIOUS': 1, 'MORALS RELIGIOUS LIBERTY': 1, 'RELIGIOUS RESPONSIBILITY ARE': 1, 'RESPONSIBILITY ARE ESSENTIALLY': 1, 'ARE ESSENTIALLY CONNECTED': 1, 'US INSTITUTIONS FAR': 1, 'INSTITUTIONS FAR EXCEEDING': 1, 'LET US UNITE': 1, 'FERVENTLY COMMENDING EVERY': 1, 'COMMENDING EVERY INTEREST': 1, 'FELLOW-CITIZENS BEING FULLY': 1, 'BEING FULLY INVESTED': 1, 'EXALTED STATION ACCORDING': 1, 'SHALL ENTER UPON': 1})\n" - ] - } - ], - "source": [ - "\n", - "\n", - "def isCommon(ngram):\n", - " commonWords = ['THE', 'BE', 'AND', 'OF', 'A', 'IN', 'TO', 'HAVE', 'IT', 'I', 'THAT', 'FOR', 'YOU', 'HE', 'WITH', 'ON', 'DO', 'SAY', 'THIS', 'THEY', 'IS', 'AN', 'AT', 'BUT', 'WE', 'HIS', 'FROM', 'THAT', 'NOT', 'BY', 'SHE', 'OR', 'AS', 'WHAT', 'GO', 'THEIR', 'CAN', 'WHO', 'GET', 'IF', 'WOULD', 'HER', 'ALL', 'MY', 'MAKE', 'ABOUT', 'KNOW', 'WILL', 'AS', 'UP', 'ONE', 'TIME', 'HAS', 'BEEN', 'THERE', 'YEAR', 'SO', 'THINK', 'WHEN', 'WHICH', 'THEM', 'SOME', 'ME', 'PEOPLE', 'TAKE', 'OUT', 'INTO', 'JUST', 'SEE', 'HIM', 'YOUR', 'COME', 'COULD', 'NOW', 'THAN', 'LIKE', 'OTHER', 'HOW', 'THEN', 'ITS', 'OUR', 'TWO', 'MORE', 'THESE', 'WANT', 'WAY', 'LOOK', 'FIRST', 'ALSO', 'NEW', 'BECAUSE', 'DAY', 'MORE', 'USE', 'NO', 'MAN', 'FIND', 'HERE', 'THING', 'GIVE', 'MANY', 'WELL']\n", - " for word in ngram:\n", - " if word in commonWords:\n", - " return True\n", - " return False\n", - "\n", - "def getNgramsFromSentence(content, n):\n", - " output = []\n", - " for i in range(len(content)-n+1):\n", - " if not isCommon(content[i:i+n]):\n", - " output.append(content[i:i+n])\n", - " return output\n", - "\n", - "ngrams = getNgrams(content, 3)\n", - "print(ngrams)\n" - ] - }, - { - "cell_type": "code", - "execution_count": 29, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "IF THERE IS ONE MEASURE BETTER CALCULATED THAN ANOTHER TO PRODUCE THAT STATE OF THINGS SO MUCH DEPRECATED BY ALL TRUE REPUBLICANS, BY WHICH THE RICH ARE DAILY ADDING TO THEIR HOARDS AND THE POOR SINKING DEEPER INTO PENURY, IT IS AN EXCLUSIVE METALLIC CURRENCY\n", - "\n", - "SUCH A ONE WAS AFFORDED BY THE EXECUTIVE DEPARTMENT CONSTITUTED BY THE CONSTITUTION\n", - "\n", - "THE GENERAL GOVERNMENT HAS SEIZED UPON NONE OF THE RESERVED RIGHTS OF THE STATES\n", - "\n", - "CALLED FROM A RETIREMENT WHICH I HAD SUPPOSED WAS TO CONTINUE FOR THE RESIDUE OF MY LIFE TO FILL THE CHIEF EXECUTIVE OFFICE OF THIS GREAT AND FREE NATION, I APPEAR BEFORE YOU, FELLOW-CITIZENS, TO TAKE THE OATHS WHICH THE CONSTITUTION PRESCRIBES AS A NECESSARY QUALIFICATION FOR THE PERFORMANCE OF ITS DUTIES; AND IN OBEDIENCE TO A CUSTOM COEVAL WITH OUR GOVERNMENT AND WHAT I BELIEVE TO BE YOUR EXPECTATIONS I PROCEED TO PRESENT TO YOU A SUMMARY OF THE PRINCIPLES WHICH WILL GOVERN ME IN THE DISCHARGE OF THE DUTIES WHICH I SHALL BE CALLED UPON TO PERFORM.\n", - "\n", - "IT WAS THE REMARK OF A ROMAN CONSUL IN AN EARLY PERIOD OF THAT CELEBRATED REPUBLIC THAT A MOST STRIKING CONTRAST WAS OBSERVABLE IN THE CONDUCT OF CANDIDATES FOR OFFICES OF POWER AND TRUST BEFORE AND AFTER OBTAINING THEM, THEY SELDOM CARRYING OUT IN THE LATTER CASE THE PLEDGES AND PROMISES MADE IN THE FORMER\n", - "\n", - "HOWEVER MUCH THE WORLD MAY HAVE IMPROVED IN MANY RESPECTS IN THE LAPSE OF UPWARD OF TWO THOUSAND YEARS SINCE THE REMARK WAS MADE BY THE VIRTUOUS AND INDIGNANT ROMAN, I FEAR THAT A STRICT EXAMINATION OF THE ANNALS OF SOME OF THE MODERN ELECTIVE GOVERNMENTS WOULD DEVELOP SIMILAR INSTANCES OF VIOLATED CONFIDENCE.\n", - "\n", - "ALTHOUGH THE FIAT OF THE PEOPLE HAS GONE FORTH PROCLAIMING ME THE CHIEF MAGISTRATE OF THIS GLORIOUS UNION, NOTHING UPON THEIR PART REMAINING TO BE DONE, IT MAY BE THOUGHT THAT A MOTIVE MAY EXIST TO KEEP UP THE DELUSION UNDER WHICH THEY MAY BE SUPPOSED TO HAVE ACTED IN RELATION TO MY PRINCIPLES AND OPINIONS; AND PERHAPS THERE MAY BE SOME IN THIS ASSEMBLY WHO HAVE COME HERE EITHER PREPARED TO CONDEMN THOSE I SHALL NOW DELIVER, OR, APPROVING THEM, TO DOUBT THE SINCERITY WITH WHICH THEY ARE NOW UTTERED\n", - "\n" - ] - } - ], - "source": [ - "def getFirstSentenceContaining(ngram, content):\n", - " #print(ngram)\n", - " sentences = content.upper().split(\". \")\n", - " for sentence in sentences: \n", - " if ngram in sentence:\n", - " return sentence+'\\n'\n", - " return \"\"\n", - "\n", - "\n", - "print(getFirstSentenceContaining('EXCLUSIVE METALLIC CURRENCY', content))\n", - "print(getFirstSentenceContaining('EXECUTIVE DEPARTMENT', content))\n", - "print(getFirstSentenceContaining('GENERAL GOVERNMENT', content))\n", - "print(getFirstSentenceContaining('CALLED UPON', content))\n", - "print(getFirstSentenceContaining('CHIEF MAGISTRATE', content))" - ] - }, - { - "cell_type": "code", - "execution_count": 11, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "I know the ruling passion of the source in the several Cantons , must be proper efforts for one of its theory , in no very cause , is termed 'monarchy' in which our Government , it finds no member of those collected in the Constitution can be , and eventually its pristine health and strengthens with each other of its disposal . A calamity so gloriously contended . It existed but free operations upon the act as the fact of another can be the accountable agent , if errors had been drawn as fatal consequences will . Jefferson forbidding their\n" - ] - } - ], - "source": [ - "from urllib.request import urlopen\n", - "from random import randint\n", - "\n", - "def wordListSum(wordList):\n", - " sum = 0\n", - " for word, value in wordList.items():\n", - " sum += value\n", - " return sum\n", - "\n", - "def retrieveRandomWord(wordList):\n", - " randIndex = randint(1, wordListSum(wordList))\n", - " for word, value in wordList.items():\n", - " randIndex -= value\n", - " if randIndex <= 0:\n", - " return word\n", - "\n", - "def buildWordDict(text):\n", - " # Remove newlines and quotes\n", - " text = text.replace('\\n', ' ');\n", - " text = text.replace('\"', '');\n", - "\n", - " # Make sure punctuation marks are treated as their own \"words,\"\n", - " # so that they will be included in the Markov chain\n", - " punctuation = [',','.',';',':']\n", - " for symbol in punctuation:\n", - " text = text.replace(symbol, ' {} '.format(symbol));\n", - "\n", - " words = text.split(' ')\n", - " # Filter out empty words\n", - " words = [word for word in words if word != '']\n", - "\n", - " wordDict = {}\n", - " for i in range(1, len(words)):\n", - " if words[i-1] not in wordDict:\n", - " # Create a new dictionary for this word\n", - " wordDict[words[i-1]] = {}\n", - " if words[i] not in wordDict[words[i-1]]:\n", - " wordDict[words[i-1]][words[i]] = 0\n", - " wordDict[words[i-1]][words[i]] += 1\n", - " return wordDict\n", - "\n", - "text = str(urlopen('http://pythonscraping.com/files/inaugurationSpeech.txt')\n", - " .read(), 'utf-8')\n", - "wordDict = buildWordDict(text)\n", - "\n", - "#Generate a Markov chain of length 100\n", - "length = 100\n", - "chain = ['I']\n", - "for i in range(0, length):\n", - " newWord = retrieveRandomWord(wordDict[chain[-1]])\n", - " chain.append(newWord)\n", - "\n", - "print(' '.join(chain))" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [] - }, - { - "cell_type": "code", - "execution_count": 2, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "/wiki/Kevin_Bacon\n", - "/wiki/Primetime_Emmy_Award_for_Outstanding_Lead_Actor_in_a_Miniseries_or_a_Movie\n", - "/wiki/Gary_Gilmore\n", - "/wiki/Eric_Idle\n" - ] - } - ], - "source": [ - "import pymysql\n", - "\n", - "conn = pymysql.connect(host='127.0.0.1', unix_socket='/tmp/mysql.sock', user='root', passwd='root', db='mysql', charset='utf8')\n", - "cur = conn.cursor()\n", - "cur.execute('USE wikipedia')\n", - "\n", - "def getUrl(pageId):\n", - " cur.execute('SELECT url FROM pages WHERE id = %s', (int(pageId)))\n", - " return cur.fetchone()[0]\n", - "\n", - "def getLinks(fromPageId):\n", - " cur.execute('SELECT toPageId FROM links WHERE fromPageId = %s', (int(fromPageId)))\n", - " if cur.rowcount == 0:\n", - " return []\n", - " return [x[0] for x in cur.fetchall()]\n", - "\n", - "def searchBreadth(targetPageId, paths=[[1]]):\n", - " newPaths = []\n", - " for path in paths:\n", - " links = getLinks(path[-1])\n", - " for link in links:\n", - " if link == targetPageId:\n", - " return path + [link]\n", - " else:\n", - " newPaths.append(path+[link])\n", - " return searchBreadth(targetPageId, newPaths)\n", - " \n", - "nodes = getLinks(1)\n", - "targetPageId = 28624\n", - "pageIds = searchBreadth(targetPageId)\n", - "for pageId in pageIds:\n", - " print(getUrl(pageId))" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "'" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.6.1" - } - }, - "nbformat": 4, - "nbformat_minor": 2 -} diff --git a/Chapter09_StoringData.ipynb b/Chapter09_StoringData.ipynb new file mode 100644 index 0000000..1fa12b4 --- /dev/null +++ b/Chapter09_StoringData.ipynb @@ -0,0 +1,11634 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "('logo.jpg', )" + ] + }, + "execution_count": 6, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "from urllib.request import urlretrieve, urlopen\n", + "from bs4 import BeautifulSoup\n", + "\n", + "html = urlopen('http://www.pythonscraping.com')\n", + "bs = BeautifulSoup(html, 'html.parser')\n", + "imageLocation = bs.find('img', {'alt': 'python-logo'})['src']\n", + "urlretrieve (imageLocation, 'logo.jpg')" + ] + }, + { + "cell_type": "code", + "execution_count": 31, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "https://pythonscraping.com/wp-includes/js/jquery/jquery.min.js?ver=3.6.3\n", + "https://pythonscraping.com/wp-includes/js/jquery/jquery-migrate.min.js?ver=3.4.0\n", + "https://pythonscraping.com/wp-content/plugins/pagelayer/js/combined.js?ver=1.5.9\n", + "https://pythonscraping.com/wp-content/uploads/2023/04/python-logo-e1681354047443.png\n", + "https://pythonscraping.com/wp-content/uploads/2021/08/home1.jpg\n", + "https://pythonscraping.com/wp-content/uploads/2021/08/logo01-e1681353135199.png\n", + "https://pythonscraping.com/wp-content/themes/popularfx/js/navigation.js?ver=1.2.0\n" + ] + } + ], + "source": [ + "import os\n", + "from urllib.request import urlretrieve, urlopen\n", + "from urllib.parse import urlparse\n", + "from bs4 import BeautifulSoup\n", + "\n", + "downloadDir = 'downloaded'\n", + "baseUrl = 'https://pythonscraping.com/'\n", + "baseNetloc = urlparse(baseUrl).netloc\n", + "\n", + "def getAbsoluteURL(source):\n", + " if urlparse(baseUrl).netloc == '':\n", + " return baseUrl + source\n", + " return source\n", + "\n", + "def getDownloadPath(fileUrl):\n", + " parsed = urlparse(fileUrl)\n", + " netloc = parsed.netloc.strip('/')\n", + " path = parsed.path.strip('/')\n", + " localfile = f'{downloadDir}/{netloc}/{path}'\n", + " \n", + " # Remove the filename from the path in order to \n", + " # make the directory structure leading up to it\n", + " localpath = '/'.join(localfile.split('/')[:-1])\n", + " if not os.path.exists(localpath):\n", + " os.makedirs(localpath)\n", + " return localfile\n", + "\n", + "html = urlopen(baseUrl)\n", + "bs = BeautifulSoup(html, 'html.parser')\n", + "downloadList = bs.findAll(src=True)\n", + "\n", + "for download in downloadList:\n", + " fileUrl = getAbsoluteURL(download['src'])\n", + " if fileUrl is not None:\n", + " try:\n", + " urlretrieve(fileUrl, getDownloadPath(fileUrl))\n", + " print(fileUrl)\n", + " except Exception as e:\n", + " print(f'Could not retrieve {fileUrl} Error: {e}')" + ] + }, + { + "cell_type": "code", + "execution_count": 32, + "metadata": {}, + "outputs": [], + "source": [ + "import csv\n", + "\n", + "csvFile = open('test.csv', 'w+')\n", + "try:\n", + " writer = csv.writer(csvFile)\n", + " writer.writerow(('number', 'number plus 2', 'number times 2'))\n", + " for i in range(10):\n", + " writer.writerow( (i, i+2, i*2))\n", + "finally:\n", + " csvFile.close()" + ] + }, + { + "cell_type": "code", + "execution_count": 37, + "metadata": {}, + "outputs": [], + "source": [ + "import csv\n", + "from urllib.request import urlopen\n", + "from bs4 import BeautifulSoup\n", + "\n", + "html = urlopen('http://en.wikipedia.org/wiki/Comparison_of_text_editors')\n", + "bs = BeautifulSoup(html, 'html.parser')\n", + "# The main comparison table is currently the first table on the page\n", + "table = bs.find('table',{'class':'wikitable'})\n", + "rows = table.findAll('tr')\n", + "csvFile = open('editors.csv', 'wt+')\n", + "writer = csv.writer(csvFile)\n", + "try:\n", + " for row in rows:\n", + " csvRow = []\n", + " for cell in row.findAll(['td', 'th']):\n", + " csvRow.append(cell.get_text().strip())\n", + " writer.writerow(csvRow)\n", + "finally:\n", + " csvFile.close()" + ] + }, + { + "cell_type": "code", + "execution_count": 39, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/var/folders/y6/jnf4yrtx1pg3y9tqb8fmhnrr0000gp/T/ipykernel_62159/983605081.py:13: DeprecationWarning: Seeding based on hashing is deprecated\n", + "since Python 3.9 and will be removed in a subsequent version. The only \n", + "supported seed types are: None, int, float, str, bytes, and bytearray.\n", + " random.seed(datetime.datetime.now())\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "/wiki/Atheism\n", + "/wiki/Ethical_monotheism\n", + "/wiki/Zoroastrianism\n", + "/wiki/Longhouse_Religion\n", + "/wiki/Theatre\n", + "/wiki/Wayback_Machine\n", + "/wiki/RECAP_US_Federal_Court_Documents_(collection)\n", + "/wiki/Associated_Whistleblowing_Press#Filtrala\n", + "/wiki/Welcome_to_Video_case\n", + "/wiki/University_of_Birmingham\n", + "/wiki/Leonard_Huxley_(physicist)\n", + "/wiki/Knight_Commander_of_the_Order_of_the_British_Empire\n", + "/wiki/Robert_Fulton_(Royal_Marines_officer)\n", + "/wiki/Varyl_Begg\n", + "/wiki/First_Sea_Lord\n", + "/wiki/Hugh_Pigot_(Royal_Navy_officer,_born_1722)\n", + "/wiki/George_Brydges_Rodney,_1st_Baron_Rodney\n", + "/wiki/Albert_Walsh\n", + "/wiki/Nova_Scotia\n", + "/wiki/List_of_Prime_Ministers_of_Canada\n", + "/wiki/Liberal-Conservative_Party\n", + "/wiki/Eglinton_(electoral_district)\n", + "/wiki/Mitchell_Sharp\n", + "/wiki/Joseph-%C3%89douard_Cauchon\n", + "/wiki/Leo_Housakos\n", + "/wiki/Jean_Chr%C3%A9tien\n", + "/wiki/Minister_of_National_Revenue\n", + "/wiki/Supreme_Court_of_Canada\n", + "/wiki/Ottawa_River\n", + "/wiki/Chaudi%C3%A8re_Falls\n", + "/wiki/Greely,_Ontario\n", + "/wiki/Greely_Elementary_School\n", + "/wiki/Cathy_Curry\n", + "/wiki/Kanata,_Ontario\n", + "/wiki/Stephen_Leacock_Public_School\n", + "/wiki/Ottawa_River_timber_trade\n", + "/wiki/Thomas_McKay\n", + "/wiki/Ottawa,_Ontario\n", + "/wiki/War_of_1812\n", + "/wiki/Doi_(identifier)\n", + "/wiki/Persistent_identifier\n", + "/wiki/Consortium_of_European_Research_Libraries\n", + "/wiki/Integrated_Authority_File\n", + "/wiki/Gemeinsame_K%C3%B6rperschaftsdatei\n", + "/wiki/Personennamendatei\n", + "/wiki/Library_of_Congress\n", + "/wiki/United_States_Senate_Democratic_Policy_Committee\n", + "/wiki/List_of_members_of_the_United_States_Congress_who_owned_slaves\n", + "/wiki/Democratic-Republican_Party_(United_States)\n", + "/wiki/Nebraska_Democratic_Party\n", + "/wiki/George_Washington_Jones_(Tennessee_politician)\n", + "/wiki/Presidency_of_Franklin_D._Roosevelt,_third_and_fourth_terms\n", + "/wiki/John_Sparkman\n", + "/wiki/United_Nations_General_Assembly\n", + "/wiki/United_Nations_Economic_and_Social_Council\n", + "/wiki/Office_of_the_Spokesperson_for_the_Secretary-General\n", + "/wiki/United_Nations_Institute_for_Disarmament_Research\n", + "/wiki/List_of_United_Nations_resolutions_concerning_Palestine\n", + "/wiki/United_Nations_Security_Council_Resolution_756\n", + "/wiki/United_Nations_Security_Council_Resolution_767\n", + "/wiki/United_Nations_Security_Council_Resolution_793\n", + "/wiki/United_Nations_Security_Council_Resolution_784\n", + "/wiki/United_Nations_Security_Council_Resolution_754\n", + "/wiki/France\n", + "/wiki/Freedom_of_religion_in_France\n", + "/wiki/Center_for_Religious_Studies_in_the_name_of_Hieromartyr_Irenaeus_of_Lyons\n", + "/wiki/Carol_Giambalvo\n", + "/wiki/Deprogramming\n", + "/wiki/Kidnapping\n", + "/wiki/Misdemeanor\n", + "/wiki/Accomplice\n", + "/wiki/At_Her_Majesty%27s_Pleasure\n", + "/wiki/Transfer_of_sovereignty_over_Hong_Kong\n", + "/wiki/ISBN_(identifier)\n", + "/wiki/Prime_number\n", + "/wiki/Divisor\n", + "/wiki/Highly_composite_number\n" + ] + }, + { + "ename": "KeyboardInterrupt", + "evalue": "", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mKeyboardInterrupt\u001b[0m Traceback (most recent call last)", + "Input \u001b[0;32mIn [39]\u001b[0m, in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[1;32m 30\u001b[0m newArticle \u001b[38;5;241m=\u001b[39m links[random\u001b[38;5;241m.\u001b[39mrandint(\u001b[38;5;241m0\u001b[39m, \u001b[38;5;28mlen\u001b[39m(links)\u001b[38;5;241m-\u001b[39m\u001b[38;5;241m1\u001b[39m)]\u001b[38;5;241m.\u001b[39mattrs[\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mhref\u001b[39m\u001b[38;5;124m'\u001b[39m]\n\u001b[1;32m 31\u001b[0m \u001b[38;5;28mprint\u001b[39m(newArticle)\n\u001b[0;32m---> 32\u001b[0m links \u001b[38;5;241m=\u001b[39m \u001b[43mgetLinks\u001b[49m\u001b[43m(\u001b[49m\u001b[43mnewArticle\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 33\u001b[0m \u001b[38;5;28;01mfinally\u001b[39;00m:\n\u001b[1;32m 34\u001b[0m cur\u001b[38;5;241m.\u001b[39mclose()\n", + "Input \u001b[0;32mIn [39]\u001b[0m, in \u001b[0;36mgetLinks\u001b[0;34m(articleUrl)\u001b[0m\n\u001b[1;32m 19\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21mgetLinks\u001b[39m(articleUrl):\n\u001b[0;32m---> 20\u001b[0m html \u001b[38;5;241m=\u001b[39m \u001b[43murlopen\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;124;43m'\u001b[39;49m\u001b[38;5;124;43mhttp://en.wikipedia.org\u001b[39;49m\u001b[38;5;124;43m'\u001b[39;49m\u001b[38;5;241;43m+\u001b[39;49m\u001b[43marticleUrl\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 21\u001b[0m bs \u001b[38;5;241m=\u001b[39m BeautifulSoup(html, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mhtml.parser\u001b[39m\u001b[38;5;124m'\u001b[39m)\n\u001b[1;32m 22\u001b[0m title \u001b[38;5;241m=\u001b[39m bs\u001b[38;5;241m.\u001b[39mfind(\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mh1\u001b[39m\u001b[38;5;124m'\u001b[39m)\u001b[38;5;241m.\u001b[39mget_text()\n", + "File \u001b[0;32m~/opt/anaconda3/lib/python3.9/urllib/request.py:214\u001b[0m, in \u001b[0;36murlopen\u001b[0;34m(url, data, timeout, cafile, capath, cadefault, context)\u001b[0m\n\u001b[1;32m 212\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m:\n\u001b[1;32m 213\u001b[0m opener \u001b[38;5;241m=\u001b[39m _opener\n\u001b[0;32m--> 214\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[43mopener\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mopen\u001b[49m\u001b[43m(\u001b[49m\u001b[43murl\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mdata\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mtimeout\u001b[49m\u001b[43m)\u001b[49m\n", + "File \u001b[0;32m~/opt/anaconda3/lib/python3.9/urllib/request.py:517\u001b[0m, in \u001b[0;36mOpenerDirector.open\u001b[0;34m(self, fullurl, data, timeout)\u001b[0m\n\u001b[1;32m 514\u001b[0m req \u001b[38;5;241m=\u001b[39m meth(req)\n\u001b[1;32m 516\u001b[0m sys\u001b[38;5;241m.\u001b[39maudit(\u001b[38;5;124m'\u001b[39m\u001b[38;5;124murllib.Request\u001b[39m\u001b[38;5;124m'\u001b[39m, req\u001b[38;5;241m.\u001b[39mfull_url, req\u001b[38;5;241m.\u001b[39mdata, req\u001b[38;5;241m.\u001b[39mheaders, req\u001b[38;5;241m.\u001b[39mget_method())\n\u001b[0;32m--> 517\u001b[0m response \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_open\u001b[49m\u001b[43m(\u001b[49m\u001b[43mreq\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mdata\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 519\u001b[0m \u001b[38;5;66;03m# post-process response\u001b[39;00m\n\u001b[1;32m 520\u001b[0m meth_name \u001b[38;5;241m=\u001b[39m protocol\u001b[38;5;241m+\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124m_response\u001b[39m\u001b[38;5;124m\"\u001b[39m\n", + "File \u001b[0;32m~/opt/anaconda3/lib/python3.9/urllib/request.py:534\u001b[0m, in \u001b[0;36mOpenerDirector._open\u001b[0;34m(self, req, data)\u001b[0m\n\u001b[1;32m 531\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m result\n\u001b[1;32m 533\u001b[0m protocol \u001b[38;5;241m=\u001b[39m req\u001b[38;5;241m.\u001b[39mtype\n\u001b[0;32m--> 534\u001b[0m result \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_call_chain\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mhandle_open\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mprotocol\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mprotocol\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m+\u001b[39;49m\n\u001b[1;32m 535\u001b[0m \u001b[43m \u001b[49m\u001b[38;5;124;43m'\u001b[39;49m\u001b[38;5;124;43m_open\u001b[39;49m\u001b[38;5;124;43m'\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mreq\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 536\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m result:\n\u001b[1;32m 537\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m result\n", + "File \u001b[0;32m~/opt/anaconda3/lib/python3.9/urllib/request.py:494\u001b[0m, in \u001b[0;36mOpenerDirector._call_chain\u001b[0;34m(self, chain, kind, meth_name, *args)\u001b[0m\n\u001b[1;32m 492\u001b[0m \u001b[38;5;28;01mfor\u001b[39;00m handler \u001b[38;5;129;01min\u001b[39;00m handlers:\n\u001b[1;32m 493\u001b[0m func \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mgetattr\u001b[39m(handler, meth_name)\n\u001b[0;32m--> 494\u001b[0m result \u001b[38;5;241m=\u001b[39m \u001b[43mfunc\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43margs\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 495\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m result \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m:\n\u001b[1;32m 496\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m result\n", + "File \u001b[0;32m~/opt/anaconda3/lib/python3.9/urllib/request.py:1375\u001b[0m, in \u001b[0;36mHTTPHandler.http_open\u001b[0;34m(self, req)\u001b[0m\n\u001b[1;32m 1374\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21mhttp_open\u001b[39m(\u001b[38;5;28mself\u001b[39m, req):\n\u001b[0;32m-> 1375\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mdo_open\u001b[49m\u001b[43m(\u001b[49m\u001b[43mhttp\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mclient\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mHTTPConnection\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mreq\u001b[49m\u001b[43m)\u001b[49m\n", + "File \u001b[0;32m~/opt/anaconda3/lib/python3.9/urllib/request.py:1350\u001b[0m, in \u001b[0;36mAbstractHTTPHandler.do_open\u001b[0;34m(self, http_class, req, **http_conn_args)\u001b[0m\n\u001b[1;32m 1348\u001b[0m \u001b[38;5;28;01mexcept\u001b[39;00m \u001b[38;5;167;01mOSError\u001b[39;00m \u001b[38;5;28;01mas\u001b[39;00m err: \u001b[38;5;66;03m# timeout error\u001b[39;00m\n\u001b[1;32m 1349\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m URLError(err)\n\u001b[0;32m-> 1350\u001b[0m r \u001b[38;5;241m=\u001b[39m \u001b[43mh\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mgetresponse\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 1351\u001b[0m \u001b[38;5;28;01mexcept\u001b[39;00m:\n\u001b[1;32m 1352\u001b[0m h\u001b[38;5;241m.\u001b[39mclose()\n", + "File \u001b[0;32m~/opt/anaconda3/lib/python3.9/http/client.py:1377\u001b[0m, in \u001b[0;36mHTTPConnection.getresponse\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 1375\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[1;32m 1376\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[0;32m-> 1377\u001b[0m \u001b[43mresponse\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mbegin\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 1378\u001b[0m \u001b[38;5;28;01mexcept\u001b[39;00m \u001b[38;5;167;01mConnectionError\u001b[39;00m:\n\u001b[1;32m 1379\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mclose()\n", + "File \u001b[0;32m~/opt/anaconda3/lib/python3.9/http/client.py:320\u001b[0m, in \u001b[0;36mHTTPResponse.begin\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 318\u001b[0m \u001b[38;5;66;03m# read until we get a non-100 response\u001b[39;00m\n\u001b[1;32m 319\u001b[0m \u001b[38;5;28;01mwhile\u001b[39;00m \u001b[38;5;28;01mTrue\u001b[39;00m:\n\u001b[0;32m--> 320\u001b[0m version, status, reason \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_read_status\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 321\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m status \u001b[38;5;241m!=\u001b[39m CONTINUE:\n\u001b[1;32m 322\u001b[0m \u001b[38;5;28;01mbreak\u001b[39;00m\n", + "File \u001b[0;32m~/opt/anaconda3/lib/python3.9/http/client.py:281\u001b[0m, in \u001b[0;36mHTTPResponse._read_status\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 280\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21m_read_status\u001b[39m(\u001b[38;5;28mself\u001b[39m):\n\u001b[0;32m--> 281\u001b[0m line \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mstr\u001b[39m(\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mfp\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mreadline\u001b[49m\u001b[43m(\u001b[49m\u001b[43m_MAXLINE\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m+\u001b[39;49m\u001b[43m \u001b[49m\u001b[38;5;241;43m1\u001b[39;49m\u001b[43m)\u001b[49m, \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124miso-8859-1\u001b[39m\u001b[38;5;124m\"\u001b[39m)\n\u001b[1;32m 282\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28mlen\u001b[39m(line) \u001b[38;5;241m>\u001b[39m _MAXLINE:\n\u001b[1;32m 283\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m LineTooLong(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mstatus line\u001b[39m\u001b[38;5;124m\"\u001b[39m)\n", + "File \u001b[0;32m~/opt/anaconda3/lib/python3.9/socket.py:704\u001b[0m, in \u001b[0;36mSocketIO.readinto\u001b[0;34m(self, b)\u001b[0m\n\u001b[1;32m 702\u001b[0m \u001b[38;5;28;01mwhile\u001b[39;00m \u001b[38;5;28;01mTrue\u001b[39;00m:\n\u001b[1;32m 703\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[0;32m--> 704\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_sock\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mrecv_into\u001b[49m\u001b[43m(\u001b[49m\u001b[43mb\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 705\u001b[0m \u001b[38;5;28;01mexcept\u001b[39;00m timeout:\n\u001b[1;32m 706\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_timeout_occurred \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;01mTrue\u001b[39;00m\n", + "\u001b[0;31mKeyboardInterrupt\u001b[0m: " + ] + } + ], + "source": [ + "from urllib.request import urlopen\n", + "from bs4 import BeautifulSoup\n", + "import random\n", + "import pymysql\n", + "import re\n", + "\n", + "conn = pymysql.connect(host='127.0.0.1', unix_socket='/tmp/mysql.sock',\n", + " user='root', passwd='password', db='mysql', charset='utf8')\n", + "cur = conn.cursor()\n", + "cur.execute('USE scraping')\n", + "\n", + "def store(title, content):\n", + " cur.execute('INSERT INTO pages (title, content) VALUES (\"%s\", \"%s\")', (title, content))\n", + " cur.connection.commit()\n", + "\n", + "def getLinks(articleUrl):\n", + " html = urlopen('http://en.wikipedia.org'+articleUrl)\n", + " bs = BeautifulSoup(html, 'html.parser')\n", + " title = bs.find('h1').get_text()\n", + " content = bs.find('div', {'id':'mw-content-text'}).find('p').get_text()\n", + " store(title, content)\n", + " return bs.find('div', {'id':'bodyContent'}).findAll('a', href=re.compile('^(/wiki/)((?!:).)*$'))\n", + "\n", + "links = getLinks('/wiki/Kevin_Bacon')\n", + "try:\n", + " while len(links) > 0:\n", + " newArticle = links[random.randint(0, len(links)-1)].attrs['href']\n", + " print(newArticle)\n", + " links = getLinks(newArticle)\n", + "finally:\n", + " cur.close()\n", + " conn.close()" + ] + }, + { + "cell_type": "code", + "execution_count": 55, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Already fetched /wiki/Main_Page\n", + "Already fetched /wiki/Main_Page\n", + "Already fetched /wiki/Kevin_Bacon\n", + "Already fetched /wiki/Kevin_Bacon\n", + "Already fetched /wiki/Kevin_Bacon\n", + "Already fetched /wiki/Kevin_Bacon_(disambiguation)\n", + "Already fetched /wiki/Philadelphia\n", + "Already fetched /wiki/Kevin_Bacon_filmography\n", + "Getting /wiki/Kyra_Sedgwick\n", + "Already fetched /wiki/Main_Page\n", + "Already fetched /wiki/Main_Page\n", + "Already fetched /wiki/Kyra_Sedgwick\n", + "Already fetched /wiki/Kyra_Sedgwick\n", + "Already fetched /wiki/Kyra_Sedgwick\n", + "Getting /wiki/University_of_Southern_California\n", + "Already fetched /wiki/Main_Page\n", + "Already fetched /wiki/Main_Page\n", + "Already fetched /wiki/University_of_Southern_California\n", + "Already fetched /wiki/University_of_Southern_California\n", + "Already fetched /wiki/University_of_Southern_California\n", + "Getting /wiki/USC_(disambiguation)\n", + "Already fetched /wiki/Main_Page\n", + "Already fetched /wiki/Main_Page\n", + "Getting /wiki/USC\n", + "Already fetched /wiki/Main_Page\n", + "Already fetched /wiki/Main_Page\n", + "Already fetched /wiki/USC\n", + "Already fetched /wiki/USC\n", + "Already fetched /wiki/USC\n", + "Getting /wiki/Universidad_del_Sagrado_Coraz%C3%B3n\n", + "Getting /wiki/University_of_South_Carolina\n", + "Getting /wiki/University_of_South_Carolina_System\n", + "Already fetched /wiki/University_of_Southern_California\n", + "Getting /wiki/University_of_Southern_Colorado\n", + "Getting /wiki/Upper_St._Clair_High_School\n", + "Getting /wiki/Utica_School_of_Commerce\n", + "Getting /wiki/Shih_Chien_University\n", + "Getting /wiki/Sichuan_University\n", + "Getting /wiki/Ullapara_Science_College\n", + "Getting /wiki/University_of_San_Carlos\n", + "Getting /wiki/University_of_Santiago_de_Compostela\n", + "Getting /wiki/University_of_Science_and_Culture\n", + "Getting /wiki/University_Senior_College\n", + "Getting /wiki/University_of_South_China\n", + "Getting /wiki/University_of_the_Southern_Caribbean\n", + "Getting /wiki/University_of_the_Sunshine_Coast\n", + "Getting /wiki/United_Somali_Congress\n", + "Getting /wiki/United_States_Code\n", + "Getting /wiki/United_States_Congress\n", + "Getting /wiki/Universal_Social_Charge\n", + "Getting /wiki/Utility_Stores_Corporation\n", + "Getting /wiki/Ulster_Special_Constabulary\n", + "Getting /wiki/United_States_Constabulary\n", + "Getting /wiki/UEFA_Super_Cup\n", + "Getting /wiki/United_Soccer_Coaches\n", + "Getting /wiki/United_SportsCar_Championship\n", + "Getting /wiki/Unity_Sporting_Club\n", + "Getting /wiki/Adelaide\n", + "Getting /wiki/South_Australian_Amateur_Soccer_League\n", + "Getting /wiki/USC_(clothing_retailer)\n", + "Getting /wiki/USC_Canada\n", + "Getting /wiki/Heckler_%26_Koch_USC\n", + "Getting /wiki/Ubuntu_Software_Center\n", + "Getting /wiki/Uchinoura_Space_Center\n", + "Getting /wiki/Unified_Soil_Classification_System\n", + "Getting /wiki/United_Shipbuilding_Corporation\n", + "Getting /wiki/United_States_customary_units\n", + "Getting /wiki/WWE_United_States_Championship\n", + "Getting /wiki/Pontifical_University_of_the_Holy_Cross\n", + "Getting /wiki/Unitarian_Universalist_Service_Committee\n", + "Already fetched /wiki/USC\n", + "Already fetched /wiki/USC\n", + "Getting /wiki/Universidad_del_Sagrado_Coraz%C3%B3n\n", + "Already fetched /wiki/Main_Page\n", + "Already fetched /wiki/Main_Page\n", + "Already fetched /wiki/Universidad_del_Sagrado_Coraz%C3%B3n\n", + "Already fetched /wiki/Universidad_del_Sagrado_Coraz%C3%B3n\n", + "Already fetched /wiki/Universidad_del_Sagrado_Coraz%C3%B3n\n", + "Getting /wiki/Sacred_Heart_University\n", + "Getting /wiki/Latin_language\n", + "Getting /wiki/Private_university\n", + "Getting /wiki/University_president\n", + "Getting /wiki/Undergraduate_education\n", + "Getting /wiki/Postgraduate_education\n", + "Getting /wiki/San_Juan,_Puerto_Rico\n", + "Getting /wiki/Geographic_coordinate_system\n", + "Getting /wiki/School_colors\n", + "Getting /wiki/Athletic_nickname\n", + "Getting /wiki/Liga_Atl%C3%A9tica_Interuniversitaria\n", + "Getting /wiki/Catholic_Church\n", + "Getting /wiki/Santurce,_San_Juan,_Puerto_Rico\n", + "Getting /wiki/Society_of_the_Sacred_Heart\n", + "Getting /wiki/Antonin_Nechodoma\n", + "Getting /wiki/Mission_Revival\n", + "Getting /wiki/Spanish_Colonial_Revival_architecture\n", + "Getting /wiki/Prairie_School\n", + "Getting /wiki/Art_Deco\n", + "Getting /wiki/Pope\n", + "Getting /wiki/John_Paul_II\n", + "Getting /wiki/National_Register_of_Historic_Places\n", + "Getting /wiki/Santurce,_San_Juan,_Puerto_Rico\n", + "Getting /wiki/San_Juan,_Puerto_Rico\n", + "Getting /wiki/Neoclassical_architecture\n", + "Getting /wiki/National_Register_of_Historic_Places\n", + "Getting /wiki/Council_of_Higher_Education_of_Puerto_Rico\n", + "Getting /wiki/Council_on_Social_Work_Education\n", + "Getting /wiki/Middle_States_Association_of_Colleges_and_Schools\n", + "Getting /wiki/National_League_for_Nursing\n", + "Getting /wiki/American_Library_Association\n", + "Getting /wiki/American_Medical_Association\n", + "Getting /wiki/Association_for_Educational_Communications_and_Technology\n", + "Getting /wiki/Association_of_American_Colleges\n", + "Getting /wiki/Eleanor_O%27Byrne\n", + "Getting /wiki/Raymond_Arrieta\n", + "Getting /wiki/Mar%C3%ADa_Elena_Batista\n", + "Getting /wiki/Giannina_Braschi\n", + "Getting /wiki/Sila_Calder%C3%B3n\n", + "Getting /wiki/Norma_Candal\n", + "Getting /wiki/Doreen_Colondres\n", + "Getting /wiki/Dreuxilla_Divine\n", + "Getting /wiki/Carmen_Dominicci\n", + "Getting /wiki/Juan_Eugenio_Hern%C3%A1ndez_Mayoral\n", + "Getting /wiki/Adamari_L%C3%B3pez\n", + "Getting /wiki/Nery_Santos_G%C3%B3mez\n", + "Getting /wiki/Teresa_L%C3%B3pez\n", + "Getting /wiki/Melanie_Maher\n", + "Getting /wiki/H%C3%A9ctor_Mart%C3%ADnez_Maldonado\n", + "Getting /wiki/Lila_Mayoral_Wirshing\n", + "Getting /wiki/Karla_Monroig\n", + "Getting /wiki/Viviana_Ortiz\n", + "Getting /wiki/Gilluis_P%C3%A9rez\n", + "Getting /wiki/Ivette_Perfecto\n", + "Getting /wiki/Laura_Ramirez\n", + "Getting /wiki/Kimmey_Raschke\n", + "Getting /wiki/Vilma_Reyes\n", + "Getting /wiki/Birmania_Rios\n", + "Getting /wiki/Rocky_the_Kid\n", + "Getting /wiki/Yara_Sofia\n", + "Getting /wiki/Luz_Mar%C3%ADa_Umpierre\n", + "Getting /wiki/Liga_Atl%C3%A9tica_Interuniversitaria_de_Puerto_Rico\n", + "Getting /wiki/University_of_Puerto_Rico,_R%C3%ADo_Piedras_Campus\n", + "Getting /wiki/University_of_Puerto_Rico_at_Mayag%C3%BCez\n", + "Getting /wiki/Interamerican_University_of_Puerto_Rico\n", + "Getting /wiki/Pontifical_Catholic_University_of_Puerto_Rico\n", + "Getting /wiki/University_of_Puerto_Rico_at_Cayey\n", + "Getting /wiki/Ana_G._M%C3%A9ndez_University\n", + "Getting /wiki/University_of_Puerto_Rico_at_Humacao\n", + "Getting /wiki/University_of_Puerto_Rico_at_Bayam%C3%B3n\n", + "Getting /wiki/University_of_Puerto_Rico_at_Arecibo\n", + "Getting /wiki/American_University_of_Puerto_Rico\n", + "Getting /wiki/Bayam%C3%B3n_Central_University\n", + "Getting /wiki/University_of_Puerto_Rico_at_Ponce\n", + "Getting /wiki/University_of_Puerto_Rico_at_Aguadilla\n", + "Getting /wiki/University_of_Puerto_Rico_at_Carolina\n", + "Getting /wiki/University_of_Puerto_Rico_at_Utuado\n", + "Getting /wiki/Polytechnic_University_of_Puerto_Rico\n", + "Getting /wiki/Caribbean_University\n", + "Getting /wiki/List_of_colleges_and_universities_in_American_Samoa\n", + "Getting /wiki/List_of_colleges_and_universities_in_Guam\n", + "Getting /wiki/List_of_colleges_and_universities_in_the_Northern_Mariana_Islands\n", + "Getting /wiki/List_of_colleges_and_universities_in_Puerto_Rico\n", + "Getting /wiki/List_of_colleges_and_universities_in_the_United_States_Virgin_Islands\n", + "Getting /wiki/University_of_South_Carolina\n", + "Already fetched /wiki/Main_Page\n", + "Already fetched /wiki/Main_Page\n", + "Already fetched /wiki/University_of_South_Carolina\n", + "Already fetched /wiki/University_of_South_Carolina\n", + "Already fetched /wiki/University_of_South_Carolina\n", + "Getting /wiki/University_of_South_Carolina_System\n", + "Getting /wiki/Latin\n", + "Getting /wiki/Public_university\n", + "Getting /wiki/Research_university\n", + "Getting /wiki/University_of_South_Carolina_System\n", + "Getting /wiki/Higher_education_accreditation\n", + "Getting /wiki/Southern_Association_of_Colleges_and_Schools\n", + "Getting /wiki/National_Sea_Grant_College_Program\n", + "Getting /wiki/Financial_endowment\n", + "Getting /wiki/University_president\n", + "Getting /wiki/Michael_Amiridis\n", + "Getting /wiki/Provost_(education)\n", + "Getting /wiki/Columbia,_South_Carolina\n", + "Getting /wiki/South_Carolina\n", + "Getting /wiki/Urban_area\n", + "Getting /wiki/The_Daily_Gamecock\n", + "Getting /wiki/School_colors\n", + "Getting /wiki/Athletic_nickname\n", + "Getting /wiki/South_Carolina_Gamecocks\n", + "Getting /wiki/NCAA_Division_I_FBS\n", + "Getting /wiki/Southeastern_Conference\n", + "Getting /wiki/Cocky_(mascot)\n", + "Getting /wiki/Public_university\n", + "Getting /wiki/Research_university\n", + "Getting /wiki/Columbia,_South_Carolina\n", + "Getting /wiki/University_of_South_Carolina_System\n", + "Getting /wiki/South_Carolina_State_House\n", + "Getting /wiki/Carnegie_Classification_of_Institutions_of_Higher_Education\n", + "Getting /wiki/Robert_Burns\n", + "Getting /wiki/Ernest_Hemingway\n", + "Getting /wiki/Bachelor%27s_degree\n", + "Getting /wiki/Master%27s_degree\n", + "Getting /wiki/Doctorate\n", + "Getting /wiki/History_of_the_University_of_South_Carolina\n", + "Getting /wiki/Jonathan_Maxcy\n", + "Getting /wiki/South_Carolina_General_Assembly\n", + "Getting /wiki/Governor_of_South_Carolina\n", + "Getting /wiki/John_Drayton\n", + "Getting /wiki/South_Carolina_Lowcountry\n", + "Getting /wiki/Upstate_South_Carolina\n", + "Getting /wiki/Baptist\n", + "Getting /wiki/Jonathan_Maxcy\n", + "Getting /wiki/Brown_University\n", + "Getting /wiki/Harvard_University\n", + "Getting /wiki/Union_College\n", + "Getting /wiki/Old_Campus_District,_University_of_South_Carolina\n", + "Getting /wiki/Clariosophic_Society\n", + "Getting /wiki/Euphradian_Society\n", + "Getting /wiki/Southern_United_States\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Getting /wiki/Francis_Lieber\n", + "Getting /wiki/Thomas_Cooper_(American_politician,_born_1759)\n", + "Getting /wiki/Joseph_LeConte\n", + "Getting /wiki/Forced_labour\n", + "Getting /wiki/Confederate_States_of_America\n", + "Getting /wiki/W._J._Whipper\n", + "Getting /wiki/Beaufort,_South_Carolina\n", + "Getting /wiki/Francis_Lewis_Cardozo\n", + "Getting /wiki/University_of_South_Carolina_Board_of_Trustees\n", + "Getting /wiki/Normal_school\n", + "Getting /wiki/Henry_E._Hayne\n", + "Getting /wiki/Secretary_of_State_of_South_Carolina\n", + "Getting /wiki/Old_Campus_District,_University_of_South_Carolina\n", + "Getting /wiki/National_Register_of_Historic_Places\n", + "Getting /wiki/University_of_South_Carolina_Library\n", + "Getting /wiki/Robert_Mills_(architect)\n", + "Getting /wiki/Koger_Center_for_the_Arts\n", + "Getting /wiki/Carolina_Coliseum\n", + "Getting /wiki/Colonial_Life_Arena\n", + "Getting /wiki/Carolina_Stadium\n", + "Getting /wiki/Olympic_Games\n", + "Getting /wiki/Williams-Brice_Stadium\n", + "Getting /wiki/Congaree_River\n", + "Getting /wiki/Five_Points_(Columbia)\n", + "Getting /wiki/Hoshuko\n", + "Getting /wiki/ACT_(examination)\n", + "Getting /wiki/College_and_university_rankings_in_the_United_States\n", + "Getting /wiki/Forbes%27_America%27s_Top_Colleges\n", + "Getting /wiki/Times_Higher_Education\n", + "Getting /wiki/The_Wall_Street_Journal\n", + "Getting /wiki/U.S._News_%26_World_Report_Best_Colleges_Ranking\n", + "Getting /wiki/Washington_Monthly#College_rankings\n", + "Getting /wiki/Academic_Ranking_of_World_Universities\n", + "Getting /wiki/QS_World_University_Rankings\n", + "Getting /wiki/Times_Higher_Education_World_University_Rankings\n", + "Getting /wiki/U.S._News_%26_World_Report_Best_Global_Universities_Ranking\n", + "Getting /wiki/Carnegie_Classification_of_Institutions_of_Higher_Education\n", + "Getting /wiki/John_Palms\n", + "Getting /wiki/Association_of_American_Universities\n", + "Getting /wiki/Andrew_Sorensen\n", + "Getting /wiki/Colorectal_cancer\n", + "Getting /wiki/Innovista\n", + "Getting /wiki/Biomedicine\n", + "Getting /wiki/Nanotechnology\n", + "Getting /wiki/Environmental_science\n", + "Getting /wiki/Alternative_fuels\n", + "Getting /wiki/U.S._Department_of_Energy\n", + "Getting /wiki/Energy_Frontier_Research_Center\n", + "Getting /wiki/Southeastern_Conference#Formation_of_SECU_and_SEC_academic_network\n", + "Getting /wiki/Southeastern_conference\n", + "Getting /wiki/Southeastern_Conference#Member_universities\n", + "Getting /wiki/Faculty_(academic_staff)\n", + "Getting /wiki/Non-Hispanic_whites\n", + "Getting /wiki/African_Americans\n", + "Getting /wiki/Hispanic_and_Latino_Americans\n", + "Getting /wiki/Asian_Americans\n", + "Getting /wiki/Foreign_national\n", + "Getting /wiki/Economic_diversity\n", + "Getting /wiki/American_lower_class\n", + "Getting /wiki/Affluence_in_the_United_States\n", + "Getting /wiki/University_of_South_Carolina_System\n", + "Getting /wiki/Richland_Library\n", + "Getting /wiki/Leadership_in_Energy_and_Environmental_Design\n", + "Getting /wiki/Alpha_Epsilon_Delta\n", + "Getting /wiki/Alpha_Kappa_Delta\n", + "Getting /wiki/Alpha_Lambda_Delta\n", + "Getting /wiki/Alpha_Phi_Sigma\n", + "Getting /wiki/Beta_Alpha_Psi\n", + "Getting /wiki/Chi_Sigma_Iota\n", + "Getting /wiki/Eta_Sigma_Delta\n", + "Getting /wiki/Golden_Key_International_Honour_Society\n", + "Getting /wiki/Kappa_Delta_Epsilon_(society)\n", + "Getting /wiki/Mortar_Board\n", + "Getting /wiki/Mu_Sigma_Rho\n", + "Getting /wiki/National_Residence_Hall_Honorary\n", + "Getting /wiki/National_Society_of_Collegiate_Scholars\n", + "Getting /wiki/Omicron_Delta_Kappa\n", + "Getting /wiki/Order_of_Omega\n", + "Getting /wiki/Phi_Alpha_Theta\n", + "Getting /wiki/Phi_Beta_Kappa\n", + "Getting /wiki/Phi_Lambda_Sigma\n", + "Getting /wiki/Phi_Sigma_Pi\n", + "Getting /wiki/Phi_Sigma_Tau\n", + "Getting /wiki/Pi_Tau_Sigma\n", + "Getting /wiki/Psi_Chi\n", + "Getting /wiki/Rho_Chi\n", + "Getting /wiki/Sigma_Alpha_Lambda\n", + "Getting /wiki/Sigma_Delta_Pi\n", + "Getting /wiki/Sigma_Iota_Rho\n", + "Getting /wiki/Tau_Sigma\n", + "Getting /wiki/Tau_Beta_Pi\n", + "Getting /wiki/Kappa_Kappa_Psi\n", + "Getting /wiki/Gamma_Iota_Sigma\n", + "Getting /wiki/Phi_Delta_Epsilon\n", + "Getting /wiki/Alpha_Kappa_Psi\n", + "Getting /wiki/American_Marketing_Association\n", + "Getting /wiki/Delta_Sigma_Pi\n", + "Getting /wiki/Phi_Alpha_Delta\n", + "Getting /wiki/Phi_Delta_Epsilon\n", + "Getting /wiki/Public_Relations_Student_Society_of_America\n", + "Getting /wiki/American_Society_of_Civil_Engineers\n", + "Getting /wiki/Biomedical_Engineering_Society\n", + "Getting /wiki/Phi_Beta_Lambda\n", + "Getting /wiki/Theta_Tau\n", + "Getting /wiki/Society_of_Women_Engineers\n", + "Getting /wiki/American_Society_of_Mechanical_Engineers\n", + "Getting /wiki/Campus_Crusade_for_Christ\n", + "Getting /wiki/Chi_Alpha\n", + "Getting /wiki/The_Navigators_(organization)\n", + "Getting /wiki/Reformed_University_Fellowship\n", + "Getting /wiki/InterVarsity_Christian_Fellowship\n", + "Getting /wiki/NAACP\n", + "Getting /wiki/Secular_Student_Alliance\n", + "Getting /wiki/Hindu_Students_Council\n", + "Getting /wiki/Mighty_Sound_of_the_Southeast\n", + "Getting /wiki/Anime\n", + "Getting /wiki/Nashi_pear\n", + "Getting /wiki/Reserve_Officers_Training_Corps\n", + "Getting /wiki/Habitat_for_Humanity\n", + "Getting /wiki/Vice_President_of_the_United_States\n", + "Getting /wiki/Joe_Biden\n", + "Getting /wiki/The_Daily_Gamecock\n", + "Getting /wiki/WUSC\n", + "Getting /wiki/The_Daily_Gamecock\n", + "Getting /wiki/WUSC-FM\n", + "Getting /wiki/Alpha_Epsilon_Pi\n", + "Getting /wiki/Alpha_Phi_Alpha\n", + "Getting /wiki/Alpha_Sigma_Phi\n", + "Getting /wiki/Alpha_Tau_Omega\n", + "Getting /wiki/Beta_Theta_Pi\n", + "Getting /wiki/Chi_Psi\n", + "Getting /wiki/Delta_Kappa_Epsilon\n", + "Getting /wiki/Delta_Tau_Delta\n", + "Getting /wiki/Delta_Upsilon\n", + "Getting /wiki/Iota_Phi_Theta\n", + "Getting /wiki/Kappa_Alpha_Order\n", + "Getting /wiki/Kappa_Alpha_Psi\n", + "Getting /wiki/Kappa_Sigma\n", + "Getting /wiki/Lambda_Chi_Alpha\n", + "Getting /wiki/Omega_Psi_Phi\n", + "Getting /wiki/Phi_Beta_Sigma\n", + "Getting /wiki/Phi_Iota_Alpha\n", + "Getting /wiki/Phi_Gamma_Delta\n", + "Getting /wiki/Phi_Kappa_Sigma\n", + "Getting /wiki/Phi_Kappa_Tau\n", + "Getting /wiki/Phi_Sigma_Kappa\n", + "Getting /wiki/Pi_Kappa_Alpha\n", + "Getting /wiki/Pi_Kappa_Phi\n", + "Getting /wiki/Sigma_Alpha_Epsilon\n", + "Getting /wiki/Sigma_Beta_Rho\n", + "Getting /wiki/Sigma_Chi\n", + "Getting /wiki/Sigma_Lambda_Beta\n", + "Getting /wiki/Sigma_Nu\n", + "Getting /wiki/Tau_Kappa_Epsilon\n", + "Getting /wiki/Theta_Delta_Chi\n", + "Getting /wiki/Theta_Chi\n", + "Getting /wiki/Alpha_Chi_Omega\n", + "Getting /wiki/Alpha_Delta_Pi\n", + "Getting /wiki/Alpha_Gamma_Delta\n", + "Getting /wiki/Alpha_Kappa_Alpha\n", + "Getting /wiki/Alpha_Xi_Delta\n", + "Getting /wiki/Chi_Omega\n", + "Getting /wiki/Delta_Delta_Delta\n", + "Getting /wiki/Delta_Sigma_Theta\n", + "Getting /wiki/Delta_Zeta\n", + "Getting /wiki/Gamma_Phi_Beta\n", + "Getting /wiki/Kappa_Delta\n", + "Getting /wiki/Kappa_Delta_Chi\n", + "Getting /wiki/Kappa_Kappa_Gamma\n", + "Getting /wiki/Phi_Mu\n", + "Getting /wiki/Pi_Beta_Phi\n", + "Getting /wiki/Sigma_Gamma_Rho\n", + "Getting /wiki/Sigma_Iota_Alpha\n", + "Getting /wiki/Zeta_Phi_Beta\n", + "Getting /wiki/Zeta_Sigma_Chi\n", + "Getting /wiki/Zeta_Tau_Alpha\n", + "Getting /wiki/Kappa_Kappa_Psi\n", + "Getting /wiki/Tau_Beta_Sigma\n", + "Getting /wiki/Phi_Mu_Alpha\n", + "Getting /wiki/Sigma_Alpha_Iota\n", + "Getting /wiki/Epsilon_Sigma_Alpha\n", + "Getting /wiki/Omega_Phi_Alpha\n", + "Getting /wiki/Alpha_Phi_Omega\n", + "Getting /wiki/Epsilon_Tau_Pi\n", + "Getting /wiki/Alpha_Kappa_Psi\n", + "Getting /wiki/Delta_Sigma_Pi\n", + "Getting /wiki/Theta_Tau\n", + "Getting /wiki/Phi_Delta_Epsilon\n", + "Getting /wiki/Five_Points_(Columbia)\n", + "Getting /wiki/Congaree_Vista\n", + "Getting /wiki/Lake_Murray_(South_Carolina)\n", + "Getting /wiki/Saluda_River\n", + "Getting /wiki/Broad_River_(Carolinas)\n", + "Getting /wiki/Congaree_River\n", + "Getting /wiki/Columbia,_South_Carolina\n", + "Getting /wiki/Charleston,_SC\n", + "Getting /wiki/Myrtle_Beach\n", + "Getting /wiki/Hilton_Head_Island,_South_Carolina\n", + "Getting /wiki/South_Carolina_Gamecocks\n", + "Getting /wiki/Williams-Brice_Stadium\n", + "Getting /wiki/Southeastern_Conference\n", + "Getting /wiki/Sun_Belt_Conference\n", + "Getting /wiki/Gamecock\n", + "Getting /wiki/2017_NCAA_Division_I_women%27s_basketball_tournament\n", + "Getting /wiki/2022_NCAA_Division_I_women%27s_basketball_tournament\n", + "Getting /wiki/2010_College_World_Series\n", + "Getting /wiki/2011_College_World_Series\n", + "Getting /wiki/NCAA_Women%27s_Division_I_Outdoor_Track_and_Field_Championships\n", + "Getting /wiki/National_Collegiate_Equestrian_Association\n", + "Getting /wiki/Hunt_Seat\n", + "Getting /wiki/National_Invitation_Tournament\n", + "Getting /wiki/Heisman_Trophy\n", + "Getting /wiki/George_Rogers_(American_football)\n", + "Getting /wiki/Graduation\n", + "Getting /wiki/Convocation\n", + "Getting /wiki/The_Fighting_Gamecocks_Lead_the_Way\n", + "Getting /wiki/Fight_song\n", + "Getting /wiki/We_Hail_Thee_Carolina\n", + "Getting /wiki/Elmer_Bernstein\n", + "Getting /wiki/Broadway_theatre\n", + "Getting /wiki/How_Now,_Dow_Jones\n", + "Getting /wiki/Paul_Dietzel\n", + "Getting /wiki/Virginia_Tech_Hokies_football\n", + "Getting /wiki/The_Daily_Gamecock\n", + "Getting /wiki/Robert_Burns\n", + "Getting /wiki/List_of_University_of_South_Carolina_people\n", + "Getting /wiki/Lee_Atwater\n", + "Getting /wiki/Republican_National_Committee\n", + "Getting /wiki/Stephen_K._Benjamin\n", + "Getting /wiki/Columbia,_South_Carolina\n", + "Getting /wiki/Senior_Advisor_to_the_President\n", + "Getting /wiki/Andrew_Card\n", + "Getting /wiki/United_States_Secretary_of_Transportation\n", + "Getting /wiki/George_H._W._Bush\n", + "Getting /wiki/White_House_Chief_of_Staff\n", + "Getting /wiki/George_W._Bush\n", + "Getting /wiki/Jadeveon_Clowney\n", + "Getting /wiki/2014_NFL_Draft\n", + "Getting /wiki/Rita_Cosby\n", + "Getting /wiki/Emmy_Award\n", + "Getting /wiki/Inside_Edition\n", + "Getting /wiki/Ainsley_Earhardt\n", + "Getting /wiki/Fox_%26_Friends\n", + "Getting /wiki/Fox_News\n", + "Getting /wiki/Alex_English\n", + "Getting /wiki/National_Basketball_Association\n", + "Getting /wiki/John_B._Floyd\n", + "Getting /wiki/Governor_of_Virginia\n", + "Getting /wiki/United_States_Secretary_of_War\n", + "Getting /wiki/Russell_Fry_(politician)\n", + "Getting /wiki/United_States_House_of_Representatives\n", + "Getting /wiki/South_Carolina%27s_7th_congressional_district\n", + "Getting /wiki/Leeza_Gibbons\n", + "Getting /wiki/Emmy_Award\n", + "Getting /wiki/Entertainment_Tonight\n", + "Getting /wiki/Lindsey_Graham\n", + "Getting /wiki/United_States_Senate\n", + "Getting /wiki/Wade_Hampton_III\n", + "Getting /wiki/Governor_of_South_Carolina\n", + "Getting /wiki/United_States_Senator\n", + "Getting /wiki/Confederate_States_of_America\n", + "Getting /wiki/Larry_Kellner\n", + "Getting /wiki/Continental_Airlines\n", + "Getting /wiki/Boeing\n", + "Getting /wiki/Henry_McMaster\n", + "Getting /wiki/Governor_of_South_Carolina\n", + "Getting /wiki/Alex_Molinaroli\n", + "Getting /wiki/Johnson_Controls\n", + "Getting /wiki/Interstate_Batteries\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Getting /wiki/Richard_Riley\n", + "Getting /wiki/United_States_Secretary_of_Education\n", + "Getting /wiki/Darius_Rucker\n", + "Getting /wiki/Hootie_%26_the_Blowfish\n", + "Getting /wiki/William_Timmons_(politician)\n", + "Getting /wiki/United_States_House_of_Representatives\n", + "Getting /wiki/South_Carolina%27s_4th_congressional_district\n", + "Getting /wiki/Joe_Wilson_(U.S._politician)\n", + "Getting /wiki/United_States_House_of_Representatives\n", + "Getting /wiki/South_Carolina%27s_2nd_congressional_district\n", + "Getting /wiki/Presidents_of_the_University_of_South_Carolina\n", + "Getting /wiki/Robert_L._Caslen\n", + "Getting /wiki/Harris_Pastides\n", + "Getting /wiki/Michael_Amiridis\n", + "Getting /wiki/University_of_South_Carolina_System\n", + "Getting /wiki/The_First_Year_Experience_Program\n", + "Getting /wiki/McMaster_School\n", + "Getting /wiki/Multiracial_Americans\n", + "Getting /wiki/Pell_grant\n", + "Getting /wiki/American_middle_class\n", + "Getting /wiki/ISBN_(identifier)\n", + "Getting /wiki/Greenwood,_South_Carolina\n", + "Getting /wiki/The_State_(Columbia,_South_Carolina)\n", + "Getting /wiki/Columbia,_South_Carolina\n", + "Getting /wiki/Newspapers.com\n", + "Getting /wiki/Forbes\n", + "Getting /wiki/The_Wall_Street_Journal\n", + "Getting /wiki/Times_Higher_Education\n", + "Getting /wiki/U.S._News_%26_World_Report\n", + "Getting /wiki/Washington_Monthly\n", + "Getting /wiki/Quacquarelli_Symonds\n", + "Getting /wiki/Times_Higher_Education\n", + "Getting /wiki/U.S._News_%26_World_Report\n", + "Getting /wiki/United_States_Department_of_Education\n", + "Getting /wiki/The_State_(newspaper)\n", + "Getting /wiki/Collier%27s_Encyclopedia\n", + "Getting /wiki/New_International_Encyclopedia\n", + "Getting /wiki/Columbia,_South_Carolina\n", + "Getting /wiki/Darla_Moore_School_of_Business\n", + "Getting /wiki/Prisma_Health_Richland_Hospital\n", + "Getting /wiki/University_of_South_Carolina_Press\n", + "Getting /wiki/University_of_South_Carolina_School_of_Law\n", + "Getting /wiki/University_of_South_Carolina_System\n", + "Getting /wiki/South_Carolina_Gamecocks\n", + "Getting /wiki/South_Carolina_Gamecocks\n", + "Getting /wiki/South_Carolina_Gamecocks_baseball\n", + "Getting /wiki/South_Carolina_Gamecocks_men%27s_basketball\n", + "Getting /wiki/South_Carolina_Gamecocks_football\n", + "Getting /wiki/South_Carolina_Gamecocks_men%27s_golf\n", + "Getting /wiki/South_Carolina_Gamecocks_men%27s_soccer\n", + "Getting /wiki/South_Carolina_Gamecocks_men%27s_swimming_and_diving\n", + "Getting /wiki/South_Carolina_Gamecocks_men%27s_tennis\n", + "Getting /wiki/South_Carolina_Gamecocks_men%27s_track_and_field\n", + "Getting /wiki/South_Carolina_Gamecocks_women%27s_basketball\n", + "Getting /wiki/South_Carolina_Gamecocks_women%27s_beach_volleyball\n", + "Getting /wiki/South_Carolina_Gamecocks_women%27s_golf\n", + "Getting /wiki/South_Carolina_Gamecocks_women%27s_soccer\n", + "Getting /wiki/South_Carolina_Gamecocks_softball\n", + "Getting /wiki/South_Carolina_Gamecocks_women%27s_tennis\n", + "Getting /wiki/South_Carolina_Gamecocks_women%27s_track_and_field\n", + "Getting /wiki/South_Carolina_Gamecocks_women%27s_volleyball\n", + "Getting /wiki/Carolina_Coliseum\n", + "Getting /wiki/Colonial_Life_Arena\n", + "Getting /wiki/Eugene_E._Stone_III_Stadium_(Columbia,_South_Carolina)\n", + "Getting /wiki/Founders_Park\n", + "Getting /wiki/Williams%E2%80%93Brice_Stadium\n", + "Getting /wiki/Sarge_Frye_Field\n", + "Getting /wiki/Currell_College\n", + "Getting /wiki/Horry-Guignard_House\n", + "Getting /wiki/Koger_Center_for_the_Arts\n", + "Getting /wiki/McMaster_School\n", + "Getting /wiki/Melton_Memorial_Observatory\n", + "Getting /wiki/Old_Campus_District,_University_of_South_Carolina\n", + "Getting /wiki/South_Carolina_Institute_of_Archaeology_and_Anthropology\n", + "Getting /wiki/University_of_South_Carolina_Libraries\n", + "Getting /wiki/W._Gordon_Belser_Arboretum\n", + "Getting /wiki/Carolina_Band\n", + "Getting /wiki/Clemson%E2%80%93South_Carolina_rivalry\n", + "Getting /wiki/Cocky_(mascot)\n", + "Getting /wiki/Congaree_Vista\n", + "Getting /wiki/The_Daily_Gamecock\n", + "Getting /wiki/The_Fighting_Gamecocks_Lead_the_Way\n", + "Getting /wiki/Five_Points_(Columbia,_South_Carolina)\n", + "Getting /wiki/Lake_Murray_(South_Carolina)\n", + "Getting /wiki/Riverbanks_Zoo\n", + "Getting /wiki/We_Hail_Thee_Carolina\n", + "Getting /wiki/WUSC-FM\n", + "Getting /wiki/Sign_Guy\n", + "Getting /wiki/List_of_University_of_South_Carolina_people\n", + "Getting /wiki/List_of_presidents_of_the_University_of_South_Carolina\n", + "Getting /wiki/University_of_South_Carolina_Board_of_Trustees\n", + "Getting /wiki/History_of_the_University_of_South_Carolina\n", + "Getting /wiki/Clariosophic_Society\n", + "Getting /wiki/Euphradian_Society\n", + "Getting /wiki/Innovista\n", + "Getting /wiki/South_Carolina_College_Cadets\n", + "Getting /wiki/University_of_South_Carolina_steroid_scandal\n", + "Getting /wiki/University_of_South_Carolina_System\n", + "Getting /wiki/University_of_South_Carolina_Aiken\n", + "Getting /wiki/University_of_South_Carolina_Beaufort\n", + "Getting /wiki/University_of_South_Carolina_Upstate\n", + "Getting /wiki/University_of_South_Carolina_Lancaster\n", + "Getting /wiki/University_of_South_Carolina_Salkehatchie\n", + "Getting /wiki/University_of_South_Carolina_Sumter\n", + "Getting /wiki/University_of_South_Carolina_Union\n", + "Getting /wiki/List_of_presidents_of_the_University_of_South_Carolina\n", + "Getting /wiki/College\n", + "Getting /wiki/University\n", + "Getting /wiki/South_Carolina\n", + "Getting /wiki/List_of_colleges_and_universities_in_South_Carolina\n", + "Getting /wiki/The_Citadel\n", + "Getting /wiki/Clemson_University\n", + "Getting /wiki/Coastal_Carolina_University\n", + "Getting /wiki/College_of_Charleston\n", + "Getting /wiki/Francis_Marion_University\n", + "Getting /wiki/Lander_University\n", + "Getting /wiki/South_Carolina_State_University\n", + "Getting /wiki/University_of_South_Carolina_Aiken\n", + "Getting /wiki/University_of_South_Carolina_Beaufort\n", + "Getting /wiki/University_of_South_Carolina_Lancaster\n", + "Getting /wiki/University_of_South_Carolina_Salkehatchie\n", + "Getting /wiki/University_of_South_Carolina_Sumter\n", + "Getting /wiki/University_of_South_Carolina_Union\n", + "Getting /wiki/University_of_South_Carolina_Upstate\n", + "Getting /wiki/Winthrop_University\n", + "Getting /wiki/Allen_University\n", + "Getting /wiki/American_College_of_the_Building_Arts\n", + "Getting /wiki/Anderson_University_(South_Carolina)\n", + "Getting /wiki/Benedict_College\n", + "Getting /wiki/Bob_Jones_University\n", + "Getting /wiki/Charleston_Southern_University\n", + "Getting /wiki/Claflin_University\n", + "Getting /wiki/Columbia_College_(South_Carolina)\n", + "Getting /wiki/Columbia_International_University\n", + "Getting /wiki/Coker_College\n", + "Getting /wiki/Converse_University\n", + "Getting /wiki/Erskine_College\n", + "Getting /wiki/Furman_University\n", + "Getting /wiki/Limestone_University\n", + "Getting /wiki/Morris_College\n", + "Getting /wiki/Newberry_College\n", + "Getting /wiki/North_Greenville_University\n", + "Getting /wiki/Presbyterian_College\n", + "Getting /wiki/Sherman_College_of_Straight_Chiropractic\n", + "Getting /wiki/Southern_Wesleyan_University\n", + "Getting /wiki/Spartanburg_Methodist_College\n", + "Getting /wiki/Voorhees_University\n", + "Getting /wiki/Wofford_College\n", + "Getting /wiki/Institute_of_technology\n", + "Getting /wiki/Aiken_Technical_College\n", + "Getting /wiki/Central_Carolina_Technical_College\n", + "Getting /wiki/Denmark_Technical_College\n", + "Getting /wiki/Florence%E2%80%93Darlington_Technical_College\n", + "Getting /wiki/Greenville_Technical_College\n", + "Getting /wiki/Horry-Georgetown_Technical_College\n", + "Getting /wiki/Midlands_Technical_College\n", + "Getting /wiki/Northeastern_Technical_College\n", + "Getting /wiki/Orangeburg-Calhoun_Technical_College\n", + "Getting /wiki/Piedmont_Technical_College\n", + "Getting /wiki/Spartanburg_Community_College\n", + "Getting /wiki/Technical_College_of_the_Lowcountry\n", + "Getting /wiki/Tri-County_Technical_College\n", + "Getting /wiki/Trident_Technical_College\n", + "Getting /wiki/Williamsburg_Technical_College\n", + "Getting /wiki/York_Technical_College\n", + "Getting /wiki/Charleston_School_of_Law\n", + "Getting /wiki/Erskine_Theological_Seminary\n", + "Getting /wiki/Geneva_Reformed_Seminary\n", + "Getting /wiki/Greenville_Presbyterian_Theological_Seminary\n", + "Getting /wiki/Lutheran_Theological_Southern_Seminary\n", + "Getting /wiki/Medical_University_of_South_Carolina\n", + "Getting /wiki/University_of_South_Carolina_School_of_Law\n", + "Getting /wiki/Arsenal_Academy\n", + "Getting /wiki/Southeastern_Universities_Research_Association\n", + "Getting /wiki/University_of_Alabama\n", + "Getting /wiki/University_of_Alabama_at_Birmingham\n", + "Getting /wiki/University_of_Alabama_in_Huntsville\n", + "Getting /wiki/University_of_Arkansas\n", + "Getting /wiki/Auburn_University\n", + "Getting /wiki/Baylor_University\n", + "Getting /wiki/Catholic_University_of_America\n", + "Getting /wiki/University_of_Central_Florida\n", + "Getting /wiki/Christopher_Newport_University\n", + "Getting /wiki/Clemson_University\n", + "Getting /wiki/University_of_Delaware\n", + "Getting /wiki/Duke_University\n", + "Getting /wiki/East_Carolina_University\n", + "Getting /wiki/University_of_Florida\n", + "Getting /wiki/Florida_Atlantic_University\n", + "Getting /wiki/Florida_Institute_of_Technology\n", + "Getting /wiki/Florida_International_University\n", + "Getting /wiki/Florida_State_University\n", + "Getting /wiki/George_Mason_University\n", + "Getting /wiki/George_Washington_University\n", + "Getting /wiki/Georgetown_University\n", + "Getting /wiki/University_of_Georgia\n", + "Getting /wiki/Georgia_Institute_of_Technology\n", + "Getting /wiki/Georgia_State_University\n", + "Getting /wiki/Hampton_University\n", + "Getting /wiki/University_of_Houston\n", + "Getting /wiki/James_Madison_University\n", + "Getting /wiki/University_of_Kentucky\n", + "Getting /wiki/University_of_Louisiana_at_Lafayette\n", + "Getting /wiki/Louisiana_State_University\n", + "Getting /wiki/Louisiana_Tech_University\n", + "Getting /wiki/University_of_Maryland,_College_Park\n", + "Getting /wiki/University_of_Maryland,_Baltimore_County\n", + "Getting /wiki/Massachusetts_Institute_of_Technology\n", + "Getting /wiki/University_of_Memphis\n", + "Getting /wiki/University_of_Miami\n", + "Getting /wiki/University_of_Mississippi\n", + "Getting /wiki/Mississippi_State_University\n", + "Getting /wiki/University_of_New_Orleans\n", + "Getting /wiki/Norfolk_State_University\n", + "Getting /wiki/North_Carolina_A%26T_State_University\n", + "Getting /wiki/University_of_North_Carolina_at_Chapel_Hill\n", + "Getting /wiki/North_Carolina_State_University\n", + "Getting /wiki/University_of_Oklahoma\n", + "Getting /wiki/Old_Dominion_University\n", + "Getting /wiki/University_of_Regina\n", + "Getting /wiki/Rice_University\n", + "Getting /wiki/University_of_Richmond\n", + "Getting /wiki/University_of_South_Florida\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Getting /wiki/University_of_Southern_Mississippi\n", + "Getting /wiki/University_of_Tennessee\n", + "Getting /wiki/University_of_Texas_at_Austin\n", + "Getting /wiki/Texas_A%26M_University\n", + "Getting /wiki/Tulane_University\n", + "Getting /wiki/Vanderbilt_University\n", + "Getting /wiki/University_of_Virginia\n", + "Getting /wiki/Virginia_Commonwealth_University\n", + "Getting /wiki/Virginia_Tech\n", + "Getting /wiki/Virginia_State_University\n", + "Getting /wiki/West_Virginia_University\n", + "Getting /wiki/College_of_William_%26_Mary\n", + "Getting /wiki/Idaho_State_University\n", + "Getting /wiki/Ohio_University\n", + "Getting /wiki/Southeastern_Conference\n", + "Getting /wiki/Florida_Gators\n", + "Getting /wiki/Georgia_Bulldogs\n", + "Getting /wiki/Kentucky_Wildcats\n", + "Getting /wiki/Missouri_Tigers\n", + "Getting /wiki/South_Carolina_Gamecocks\n", + "Getting /wiki/Tennessee_Volunteers\n", + "Getting /wiki/Vanderbilt_Commodores\n", + "Getting /wiki/Alabama_Crimson_Tide\n", + "Getting /wiki/Arkansas_Razorbacks\n", + "Getting /wiki/Auburn_Tigers\n", + "Getting /wiki/LSU_Tigers_and_Lady_Tigers\n", + "Getting /wiki/Ole_Miss_Rebels\n", + "Getting /wiki/Mississippi_State_Bulldogs\n", + "Getting /wiki/Texas_A%26M_Aggies\n", + "Getting /wiki/Oklahoma_Sooners\n", + "Getting /wiki/Texas_Longhorns\n", + "Getting /wiki/List_of_Southeastern_Conference_national_championships\n", + "Getting /wiki/List_of_Southeastern_Conference_champions\n", + "Getting /wiki/SEC_Network\n", + "Getting /wiki/SEC_Nation\n", + "Getting /wiki/SEC_Storied\n", + "Getting /wiki/College_Football_on_CBS_Sports\n", + "Getting /wiki/CBS_Sports\n", + "Getting /wiki/ESPN\n", + "Getting /wiki/Raycom_Sports\n", + "Getting /wiki/Jefferson_Pilot_Sports\n", + "Getting /wiki/Lincoln_Financial_Media\n", + "Getting /wiki/SEC_TV\n", + "Getting /wiki/List_of_former_SEC_TV_affiliates\n", + "Getting /wiki/Turner_Sports\n", + "Getting /wiki/Lorimar_Sports_Network\n", + "Getting /wiki/TVS_Television_Network\n", + "Getting /wiki/2010%E2%80%9312_Southeastern_Conference_realignment\n", + "Getting /wiki/Southeastern_Collegiate_Rugby_Conference\n", + "Getting /wiki/International_Business_Education_Alliance\n", + "Getting /wiki/ESSEC_Business_School\n", + "Getting /wiki/Funda%C3%A7%C3%A3o_Get%C3%BAlio_Vargas\n", + "Getting /wiki/University_of_Mannheim\n", + "Getting /wiki/Geographic_coordinate_system\n", + "Getting /wiki/University_of_South_Carolina_System\n", + "Already fetched /wiki/Main_Page\n", + "Already fetched /wiki/Main_Page\n", + "Already fetched /wiki/University_of_South_Carolina_System\n", + "Already fetched /wiki/University_of_South_Carolina_System\n", + "Already fetched /wiki/University_of_South_Carolina_System\n", + "Getting /wiki/State_university_system\n", + "Getting /wiki/Financial_endowment\n", + "Getting /wiki/University_president\n", + "Getting /wiki/Michael_Amiridis\n", + "Getting /wiki/Columbia,_South_Carolina\n", + "Getting /wiki/South_Carolina\n", + "Getting /wiki/United_States\n", + "Getting /wiki/State_university_system\n", + "Getting /wiki/South_Carolina\n", + "Already fetched /wiki/University_of_South_Carolina\n", + "Getting /wiki/Higher_education\n", + "Getting /wiki/Columbia,_South_Carolina\n", + "Getting /wiki/Aiken,_South_Carolina\n", + "Getting /wiki/Beaufort,_South_Carolina\n", + "Getting /wiki/Spartanburg,_South_Carolina\n", + "Getting /wiki/Undergraduate_education\n", + "Getting /wiki/Graduate_school\n", + "Getting /wiki/Associate%27s_degree\n", + "Getting /wiki/Palmetto_College\n", + "Getting /wiki/University_of_South_Carolina_Beaufort\n", + "Getting /wiki/Bluffton,_South_Carolina\n", + "Getting /wiki/University_of_South_Carolina_Union\n", + "Getting /wiki/Laurens,_South_Carolina\n", + "Getting /wiki/University_of_South_Carolina_Salkehatchie\n", + "Getting /wiki/Allendale,_South_Carolina\n", + "Getting /wiki/Walterboro,_South_Carolina\n", + "Getting /wiki/University_of_South_Carolina_Upstate\n", + "Getting /wiki/Greenville,_South_Carolina\n", + "Already fetched /wiki/University_of_South_Carolina\n", + "Getting /wiki/South_Carolina_Gamecocks\n", + "Getting /wiki/NCAA_Division_I\n", + "Getting /wiki/Southeastern_Conference\n", + "Getting /wiki/University_of_South_Carolina_Upstate\n", + "Getting /wiki/USC_Upstate_Spartans\n", + "Getting /wiki/NCAA_Division_I\n", + "Getting /wiki/Big_South_Conference\n", + "Getting /wiki/University_of_South_Carolina_Aiken\n", + "Getting /wiki/USC_Aiken_Pacers\n", + "Getting /wiki/NCAA_Division_II\n", + "Getting /wiki/Peach_Belt_Conference\n", + "Getting /wiki/University_of_South_Carolina_Beaufort\n", + "Getting /wiki/South_Carolina%E2%80%93Beaufort_Sand_Sharks\n", + "Getting /wiki/NCAA_Division_II\n", + "Getting /wiki/Peach_Belt_Conference\n", + "Getting /wiki/University_of_South_Carolina_Lancaster\n", + "Getting /wiki/USC_Lancaster_Lancers\n", + "Getting /wiki/National_Junior_College_Athletic_Association\n", + "Getting /wiki/Carolinas_Junior_College_Conference\n", + "Getting /wiki/University_of_South_Carolina_Sumter\n", + "Getting /wiki/USC_Sumter_Fire_Ants\n", + "Getting /wiki/National_Junior_College_Athletic_Association\n", + "Getting /wiki/Carolinas_Junior_College_Conference\n", + "Getting /wiki/University_of_South_Carolina_Union\n", + "Getting /wiki/USC_Union_Bantams\n", + "Getting /wiki/National_Junior_College_Athletic_Association\n", + "Getting /wiki/Carolinas_Junior_College_Conference\n", + "Getting /wiki/University_of_South_Carolina_Salkehatchie\n", + "Getting /wiki/USC_Salkehatchie_Indians\n", + "Getting /wiki/National_Junior_College_Athletic_Association\n", + "Getting /wiki/Carolinas_Junior_College_Conference\n", + "Getting /wiki/Francis_Marion_University\n", + "Getting /wiki/Coastal_Carolina_University\n", + "Getting /wiki/University_of_South_Carolina_Board_of_Trustees\n", + "Getting /wiki/South_Carolina_General_Assembly\n", + "Getting /wiki/List_of_Latin_phrases_(A%E2%80%93E)#E\n", + "Getting /wiki/Governor_of_South_Carolina\n", + "Getting /wiki/Presidents_of_the_University_of_South_Carolina\n", + "Getting /wiki/Chief_executive_officer\n", + "Getting /wiki/Chancellor_(education)\n", + "Getting /wiki/Dean_(education)\n", + "Getting /wiki/Old_Campus_District,_University_of_South_Carolina\n", + "Already fetched /wiki/University_of_South_Carolina\n", + "Getting /wiki/South_Carolina\n", + "Getting /wiki/South_Carolina_General_Assembly\n", + "Getting /wiki/John_Drayton\n", + "Getting /wiki/Governor_of_South_Carolina\n", + "Getting /wiki/Ex_officio\n", + "Getting /wiki/South_Carolina_General_Assembly\n", + "Getting /wiki/Solomon_Blatt,_Sr.\n", + "Getting /wiki/Solomon_Blatt,_Jr.\n", + "Getting /wiki/William_D._Murray\n", + "Getting /wiki/Governor_of_South_Carolina\n", + "Getting /wiki/Robert_Evander_McNair\n", + "Getting /wiki/Paul_Dietzel\n", + "Already fetched /wiki/University_of_South_Carolina\n", + "Getting /wiki/University_of_South_Carolina_Aiken\n", + "Getting /wiki/University_of_South_Carolina_Beaufort\n", + "Getting /wiki/University_of_South_Carolina_Upstate\n", + "Getting /wiki/University_of_South_Carolina_Lancaster\n", + "Getting /wiki/University_of_South_Carolina_Salkehatchie\n", + "Getting /wiki/University_of_South_Carolina_Sumter\n", + "Getting /wiki/University_of_South_Carolina_Union\n", + "Already fetched /wiki/University_of_South_Carolina\n", + "Getting /wiki/List_of_presidents_of_the_University_of_South_Carolina\n", + "Already fetched /wiki/University_of_Southern_California\n", + "Getting /wiki/University_of_Southern_Colorado\n", + "Already fetched /wiki/Main_Page\n", + "Already fetched /wiki/Main_Page\n", + "Getting /wiki/Colorado_State_University_Pueblo\n", + "Getting /wiki/Colorado_State_University_Pueblo\n", + "Getting /wiki/Colorado_State_University_Pueblo\n", + "Getting /wiki/Public_university\n", + "Getting /wiki/Hispanic-Serving_Institution\n", + "Getting /wiki/National_Space_Grant_College_and_Fellowship_Program\n", + "Getting /wiki/Chancellor_(education)\n", + "Getting /wiki/Anthony_A._Frank\n", + "Getting /wiki/University_president\n", + "Getting /wiki/Undergraduate_education\n", + "Getting /wiki/Postgraduate_education\n", + "Getting /wiki/Pueblo,_Colorado\n", + "Getting /wiki/Colorado\n", + "Getting /wiki/School_colors\n", + "Getting /wiki/Athletic_nickname\n", + "Getting /wiki/CSU_Pueblo_ThunderWolves\n", + "Getting /wiki/NCAA_Division_II\n", + "Getting /wiki/RMAC\n", + "Getting /wiki/Public_university\n", + "Getting /wiki/Pueblo,_Colorado\n", + "Getting /wiki/Hispanic-serving_institution\n", + "Getting /wiki/Pueblo_County,_Colorado\n", + "Getting /wiki/Fort_Lewis_College\n", + "Getting /wiki/Governor\n", + "Getting /wiki/Bill_Owens_(Colorado_politician)\n", + "Getting /wiki/United_States_Department_of_Education\n", + "Getting /wiki/Hispanic_Association_of_Colleges_and_Universities\n", + "Getting /wiki/Pueblo,_Colorado\n", + "Getting /wiki/Pikes_Peak\n", + "Getting /wiki/International_style_(architecture)\n", + "Getting /wiki/Massari_Arena\n", + "Getting /wiki/Leadership_in_Energy_and_Environmental_Design\n", + "Getting /wiki/U.S._Green_Building_Council\n", + "Getting /wiki/Joseph_A._Garcia\n", + "Getting /wiki/Anthony_A._Frank\n", + "Getting /wiki/CSU_Pueblo_ThunderWolves\n", + "Getting /wiki/Rocky_Mountain_Athletic_Conference\n", + "Getting /wiki/NCAA_Division_II\n", + "Getting /wiki/American_football\n", + "Getting /wiki/Collegiate_wrestling\n", + "Getting /wiki/Track_%26_field\n", + "Getting /wiki/Rocky_Mountain_Athletic_Conference\n", + "Getting /wiki/Cheerleading\n", + "Getting /wiki/Dance_team\n", + "Getting /wiki/Baseball\n", + "Getting /wiki/Racquetball\n", + "Getting /wiki/Climbing\n", + "Getting /wiki/Rugby_football\n", + "Getting /wiki/Soccer\n", + "Getting /wiki/Michael_Arnzen\n", + "Getting /wiki/Beau_Brieske\n", + "Getting /wiki/Dax_Charles\n", + "Getting /wiki/Dan_DeRose\n", + "Getting /wiki/Rick_Edgeman\n", + "Getting /wiki/Frank_Grant_(American_football)\n", + "Getting /wiki/Morgan_Fox_(American_football)\n", + "Getting /wiki/Herman_Heard\n", + "Getting /wiki/Ryan_Jensen_(American_football)\n", + "Getting /wiki/Patricia_Marcantonio\n", + "Getting /wiki/Arnold_L._Mitchem\n", + "Getting /wiki/Mike_Pennel\n", + "Getting /wiki/Dana_Perino\n", + "Getting /wiki/White_House_Press_Secretary\n", + "Getting /wiki/Jim_Ryan_(Football_Coach)\n", + "Getting /wiki/Urban_legend\n", + "Getting /wiki/Van_Halen\n", + "Getting /wiki/Rider_(theater)\n", + "Getting /wiki/M%26M%27s\n", + "Getting /wiki/David_Lee_Roth\n", + "Getting /wiki/List_of_colleges_and_universities_in_Colorado\n", + "Getting /wiki/Wayback_Machine\n", + "Getting /wiki/Wayback_Machine\n", + "Getting /wiki/Denver_Broncos\n", + "Getting /wiki/Pueblo_Chieftain\n", + "Getting /wiki/HighBeam_Research\n", + "Getting /wiki/ProQuest\n", + "Getting /wiki/McClatchy_-_Tribune_Business_News\n", + "Getting /wiki/Washington_University_in_St._Louis\n", + "Getting /wiki/Colorado_State_University\n", + "Getting /wiki/Colorado_State_University%E2%80%93Pueblo\n", + "Getting /wiki/CSU%E2%80%93Global_Campus\n", + "Getting /wiki/Colorado\n", + "Getting /wiki/List_of_colleges_and_universities_in_Colorado\n", + "Getting /wiki/Colorado#Education\n", + "Getting /wiki/Adams_State_University\n", + "Getting /wiki/Arapahoe_Community_College\n", + "Getting /wiki/The_Art_Institute_of_Colorado\n", + "Getting /wiki/Colorado_Christian_University\n", + "Getting /wiki/Colorado_College\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Getting /wiki/Colorado_Mesa_University\n", + "Getting /wiki/Colorado_Mountain_College\n", + "Getting /wiki/Colorado_Northwestern_Community_College\n", + "Getting /wiki/Colorado_School_of_Mines\n", + "Getting /wiki/Colorado_State_University\n", + "Getting /wiki/Colorado_State_University%E2%80%93Pueblo\n", + "Getting /wiki/Colorado_Technical_University\n", + "Getting /wiki/Community_College_of_Aurora\n", + "Getting /wiki/Community_College_of_Denver\n", + "Getting /wiki/Emily_Griffith_Opportunity_School\n", + "Getting /wiki/Fort_Lewis_College\n", + "Getting /wiki/Front_Range_Community_College\n", + "Getting /wiki/Iliff_School_of_Theology\n", + "Getting /wiki/Lamar_Community_College\n", + "Getting /wiki/Metropolitan_State_University_of_Denver\n", + "Getting /wiki/Morgan_Community_College\n", + "Getting /wiki/Naropa_University\n", + "Getting /wiki/Nazarene_Bible_College\n", + "Getting /wiki/Northeastern_Junior_College\n", + "Getting /wiki/Otero_College\n", + "Getting /wiki/Pikes_Peak_State_College\n", + "Getting /wiki/Pueblo_Community_College\n", + "Getting /wiki/Regis_University\n", + "Getting /wiki/Red_Rocks_Community_College\n", + "Getting /wiki/Rocky_Mountain_College_of_Art_and_Design\n", + "Getting /wiki/Rocky_Vista_University_College_of_Osteopathic_Medicine\n", + "Getting /wiki/Trinidad_State_College\n", + "Getting /wiki/United_States_Air_Force_Academy\n", + "Getting /wiki/University_of_Colorado_System\n", + "Getting /wiki/University_of_Colorado_Boulder\n", + "Getting /wiki/University_of_Colorado_at_Colorado_Springs\n", + "Getting /wiki/University_of_Colorado_Denver\n", + "Getting /wiki/University_of_Denver\n", + "Getting /wiki/University_of_Northern_Colorado\n", + "Getting /wiki/Western_Colorado_Community_College\n", + "Getting /wiki/Western_Colorado_University\n", + "Getting /wiki/Pueblo,_Colorado\n", + "Getting /wiki/Bessemer_(Pueblo)\n", + "Getting /wiki/Union_Avenue_Historic_Commercial_District\n", + "Getting /wiki/Historic_Arkansas_Riverwalk\n", + "Getting /wiki/Pueblo_School_District_60\n", + "Getting /wiki/Central_High_School_(Pueblo,_Colorado)\n", + "Getting /wiki/Centennial_High_School_(Pueblo,_Colorado)\n", + "Getting /wiki/East_High_School_(Pueblo,_Colorado)\n", + "Getting /wiki/South_High_School_(Pueblo,_Colorado)\n", + "Getting /wiki/Ch%C3%A1vez_Huerta_K-12_Preparatory_Academy\n", + "Getting /wiki/Pueblo_Catholic_High_School\n", + "Getting /wiki/Pueblo_Community_College\n", + "Getting /wiki/Colorado_State_University%E2%80%93Pueblo\n", + "Getting /wiki/Pueblo_City_Park_Carousel\n", + "Getting /wiki/El_Pueblo_History_Museum\n", + "Getting /wiki/Lake_Pueblo_State_Park\n", + "Getting /wiki/Nature_and_Wildlife_Discovery_Center\n", + "Getting /wiki/Pueblo_City-County_Library_District\n", + "Getting /wiki/Pueblo_Zoo\n", + "Getting /wiki/Rosemount_Museum\n", + "Getting /wiki/Sangre_de_Cristo_Arts_and_Conference_Center\n", + "Getting /wiki/Buell_Children%27s_Museum\n", + "Getting /wiki/Colorado_State_Fair\n", + "Getting /wiki/Steelworks_Museum\n", + "Getting /wiki/Pueblo_Weisbrod_Aircraft_Museum\n", + "Getting /wiki/Pueblo_Memorial_Airport\n", + "Getting /wiki/Pueblo_Transit\n", + "Getting /wiki/Media_in_Pueblo,_Colorado\n", + "Getting /wiki/The_Pueblo_Chieftain\n", + "Getting /wiki/Rocky_Mountain_Athletic_Conference\n", + "Getting /wiki/Adams_State_Grizzlies\n", + "Getting /wiki/Black_Hills_State_Yellow_Jackets\n", + "Getting /wiki/Chadron_State_Eagles\n", + "Getting /wiki/Colorado_Christian_Cougars\n", + "Getting /wiki/Colorado_Mesa_Mavericks\n", + "Getting /wiki/Colorado_Mines_Orediggers\n", + "Getting /wiki/CSU%E2%80%93Pueblo_ThunderWolves\n", + "Getting /wiki/Fort_Lewis_Skyhawks\n", + "Getting /wiki/Metro_State_Roadrunners\n", + "Getting /wiki/New_Mexico_Highlands_Cowboys_and_Cowgirls\n", + "Getting /wiki/Regis_Rangers\n", + "Getting /wiki/South_Dakota_Mines_Hardrockers\n", + "Getting /wiki/UCCS_Mountain_Lions\n", + "Getting /wiki/Western_Colorado_Mountaineers\n", + "Getting /wiki/Westminster_Griffins\n", + "Getting /wiki/Oklahoma_Baptist_Bison\n", + "Getting /wiki/Nebraska%E2%80%93Kearney_Lopers\n", + "Getting /wiki/Oklahoma_Baptist_Bison\n", + "Getting /wiki/Oklahoma_Christian_Eagles_and_Lady_Eagles\n", + "Getting /wiki/San_Francisco_State_Gators\n", + "Getting /wiki/Public_university\n", + "Getting /wiki/Colorado\n", + "Getting /wiki/Adams_State_University\n", + "Getting /wiki/University_of_Colorado\n", + "Getting /wiki/University_of_Colorado_Boulder\n", + "Getting /wiki/University_of_Colorado_Colorado_Springs\n", + "Getting /wiki/University_of_Colorado_Denver\n", + "Getting /wiki/Colorado_Mesa_University\n", + "Getting /wiki/Colorado_School_of_Mines\n", + "Getting /wiki/Colorado_State_University\n", + "Getting /wiki/Colorado_State_University%E2%80%93Pueblo\n", + "Getting /wiki/CSU%E2%80%93Global_Campus\n", + "Getting /wiki/Emily_Griffith_Opportunity_School\n", + "Getting /wiki/Fort_Lewis_College\n", + "Getting /wiki/Metropolitan_State_University_of_Denver\n", + "Getting /wiki/University_of_Northern_Colorado\n", + "Getting /wiki/Western_State_Colorado_University\n", + "Getting /wiki/Geographic_coordinate_system\n", + "Getting /wiki/Upper_St._Clair_High_School\n", + "Already fetched /wiki/Main_Page\n", + "Already fetched /wiki/Main_Page\n", + "Already fetched /wiki/Upper_St._Clair_High_School\n", + "Already fetched /wiki/Upper_St._Clair_High_School\n", + "Already fetched /wiki/Upper_St._Clair_High_School\n", + "Getting /wiki/Upper_St._Clair_Township,_Allegheny_County,_Pennsylvania\n", + "Getting /wiki/Pennsylvania\n", + "Getting /wiki/Geographic_coordinate_system\n", + "Getting /wiki/Geographic_coordinate_system\n", + "Getting /wiki/Public_high_school\n", + "Getting /wiki/Latin\n", + "Getting /wiki/Full-time_equivalent\n", + "Getting /wiki/Ninth_grade\n", + "Getting /wiki/Twelfth_grade\n", + "Getting /wiki/Mount_Lebanon_High_School\n", + "Getting /wiki/Secondary_school\n", + "Getting /wiki/Upper_St._Clair_Township,_Allegheny_County,_Pennsylvania\n", + "Getting /wiki/Pennsylvania\n", + "Getting /wiki/Upper_St._Clair_School_District\n", + "Getting /wiki/Ninth_grade\n", + "Getting /wiki/Twelfth_grade\n", + "Getting /wiki/Blue_Ribbon_Schools_Program\n", + "Getting /wiki/IPad\n", + "Getting /wiki/Chromebook\n", + "Getting /wiki/Securly\n", + "Getting /wiki/Square_(financial_services)\n", + "Getting /wiki/COVID-19_pandemic\n", + "Getting /wiki/North_Allegheny_School_District\n", + "Getting /wiki/William_S._Stickman_IV\n", + "Getting /wiki/United_States_Court_of_Appeals_for_the_Third_Circuit\n", + "Getting /wiki/Advanced_Placement\n", + "Getting /wiki/Advanced_Placement\n", + "Getting /wiki/International_Baccalaureate\n", + "Getting /wiki/National_Speech_and_Debate_Association\n", + "Getting /wiki/International_Baccalaureate\n", + "Getting /wiki/Advanced_Placement\n", + "Getting /wiki/ACLU\n", + "Getting /wiki/Pennsylvania_Interscholastic_Athletic_Association\n", + "Getting /wiki/Western_Pennsylvania_Interscholastic_Athletic_League\n", + "Getting /wiki/Black_panther\n", + "Getting /wiki/Central_Bucks_High_School_East\n", + "Getting /wiki/Greater_Latrobe_Senior_High_School\n", + "Getting /wiki/Music_theory\n", + "Getting /wiki/Music_history\n", + "Getting /wiki/Orchestra\n", + "Getting /wiki/Concert_band\n", + "Getting /wiki/Jazz_band\n", + "Getting /wiki/Musical_theatre\n", + "Getting /wiki/The_Drowsy_Chaperone\n", + "Getting /wiki/Evita_(musical)\n", + "Getting /wiki/Hello,_Dolly!_(musical)\n", + "Getting /wiki/Shrek_The_Musical\n", + "Getting /wiki/Smokey_Joe%27s_Cafe_(revue)\n", + "Getting /wiki/Seussical\n", + "Getting /wiki/Student_newspaper\n", + "Getting /wiki/Literary_magazine\n", + "Getting /wiki/Blue_Ribbon_Schools_Program\n", + "Getting /wiki/United_States_Department_of_Education\n", + "Getting /wiki/New_American_High_Schools\n", + "Getting /wiki/Newsweek\n", + "Getting /wiki/U.S._News_%26_World_Report\n", + "Getting /wiki/Terry_Babcock-Lumish\n", + "Getting /wiki/Sean_Casey_(baseball)\n", + "Getting /wiki/Cincinnati_Reds\n", + "Getting /wiki/Cincinnati_Reds_Hall_of_Fame\n", + "Getting /wiki/Stephen_Chbosky\n", + "Getting /wiki/The_Perks_of_Being_a_Wallflower\n", + "Getting /wiki/Jeff_Delaney\n", + "Getting /wiki/Kim_Director\n", + "Getting /wiki/Craig_Dunaway\n", + "Getting /wiki/Pittsburgh_Steelers\n", + "Getting /wiki/Tim_Federle\n", + "Getting /wiki/Kirk_Ferentz\n", + "Getting /wiki/University_of_Iowa\n", + "Getting /wiki/Chuck_Greenberg_(businessman)\n", + "Getting /wiki/Todd_Haley\n", + "Getting /wiki/Cleveland_Browns\n", + "Getting /wiki/Pittsburgh_Steelers\n", + "Getting /wiki/Kansas_City_Chiefs\n", + "Getting /wiki/Anthony_Jeselnik\n", + "Getting /wiki/Sean_Lee\n", + "Getting /wiki/Dallas_Cowboys\n", + "Getting /wiki/Grant_Lewis\n", + "Getting /wiki/Jack_Maitland\n", + "Getting /wiki/Baltimore_Colts\n", + "Getting /wiki/New_England_Patriots\n", + "Getting /wiki/Ryan_Malone\n", + "Getting /wiki/Tampa_Bay_Lightning\n", + "Getting /wiki/Kevin_Orie\n", + "Getting /wiki/Chicago_Cubs\n", + "Getting /wiki/Dylan_Reese\n", + "Getting /wiki/Harvard_Crimson\n", + "Getting /wiki/New_York_Rangers\n", + "Getting /wiki/Kevin_Slowey\n", + "Getting /wiki/Minnesota_Twins\n", + "Getting /wiki/Doug_Whaley\n", + "Getting /wiki/Buffalo_Bills\n", + "Getting /wiki/IB_Primary_Years_Programme\n", + "Getting /wiki/IB_Middle_Years_Programme\n", + "Getting /wiki/IB_Diploma_Programme\n", + "Getting /wiki/Blue_Ribbon_Schools_Program\n", + "Getting /wiki/U.S._News_%26_World_Report\n", + "Getting /wiki/Pittsburgh_Post-Gazette\n", + "Getting /wiki/ACLU\n", + "Getting /wiki/Pittsburgh_Tribune_Review\n", + "Getting /wiki/Pittsburgh_Tribune-Review\n", + "Getting /wiki/Newsweek\n", + "Getting /wiki/Detroit_Tigers\n", + "Getting /wiki/Pittsburgh_Tribune-Review\n", + "Getting /wiki/IMDb\n", + "Getting /wiki/Pittsburgh_Penguins\n", + "Getting /wiki/Eastern_College_Athletic_Conference\n", + "Getting /wiki/Utica_School_of_Commerce\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Already fetched /wiki/Main_Page\n", + "Already fetched /wiki/Main_Page\n", + "Already fetched /wiki/Utica_School_of_Commerce\n", + "Already fetched /wiki/Utica_School_of_Commerce\n", + "Already fetched /wiki/Utica_School_of_Commerce\n", + "Getting /wiki/Business_college\n", + "Getting /wiki/For-profit_college\n", + "Getting /wiki/Utica,_New_York\n", + "Getting /wiki/For-profit_higher_education_in_the_United_States\n", + "Getting /wiki/Business_college\n", + "Getting /wiki/New_York_(state)\n", + "Getting /wiki/Utica,_New_York\n", + "Getting /wiki/Canastota,_New_York\n", + "Getting /wiki/Oneonta,_New_York\n", + "Getting /wiki/Bryant_and_Stratton_College\n", + "Getting /wiki/Syracuse,_New_York\n", + "Getting /wiki/Utica,_New_York\n", + "Getting /wiki/Utica,_New_York\n", + "Getting /wiki/Utica%E2%80%93Rome_Metropolitan_Statistical_Area\n", + "Getting /wiki/Oneida_County,_New_York\n", + "Getting /wiki/New_York_(state)\n", + "Getting /wiki/Utica_Zoo\n", + "Getting /wiki/Utica_Parks_and_Parkway_Historic_District\n", + "Getting /wiki/Utica_University\n", + "Getting /wiki/Mohawk_Valley_Community_College\n", + "Getting /wiki/SUNY_Polytechnic_Institute\n", + "Getting /wiki/St._Elizabeth_College_of_Nursing\n", + "Getting /wiki/Munson-Williams-Proctor_Arts_Institute#PrattMWP\n", + "Getting /wiki/Empire_State_College\n", + "Getting /wiki/Oneida_Institute\n", + "Getting /wiki/Utica_City_School_District\n", + "Getting /wiki/Thomas_R._Proctor_High_School\n", + "Getting /wiki/Notre_Dame_Junior_Senior_High_School_(Utica,_New_York)\n", + "Getting /wiki/Utica_Free_Academy\n", + "Getting /wiki/Union_Station_(Utica,_New_York)\n", + "Getting /wiki/Griffiss_International_Airport\n", + "Getting /wiki/Oneida_County_Airport\n", + "Getting /wiki/Central_New_York_Regional_Transportation_Authority\n", + "Getting /wiki/Adirondack_Bank_Center\n", + "Getting /wiki/Utica_Comets\n", + "Getting /wiki/American_Hockey_League\n", + "Getting /wiki/2019%E2%80%9320_AHL_season\n", + "Getting /wiki/Utica_City_FC\n", + "Getting /wiki/Major_Arena_Soccer_League\n", + "Getting /wiki/2019%E2%80%9320_Major_Arena_Soccer_League_season\n", + "Getting /wiki/Utica_Curling_Club\n", + "Getting /wiki/Chicken_riggies\n", + "Getting /wiki/Utica_greens\n", + "Getting /wiki/Half-moons\n", + "Getting /wiki/Italian_tomato_pie\n", + "Getting /wiki/Penne_alla_vodka\n", + "Getting /wiki/Matt_Brewing_Company\n", + "Getting /wiki/Boilermaker_Road_Race\n", + "Getting /wiki/National_Distance_Running_Hall_of_Fame\n", + "Getting /wiki/Utica_Children%27s_Museum\n", + "Getting /wiki/Utica_Psychiatric_Center\n", + "Getting /wiki/Munson-Williams-Proctor_Arts_Institute\n", + "Getting /wiki/Stanley_Theater_(Utica,_New_York)\n", + "Getting /wiki/Hotel_Utica\n", + "Getting /wiki/Adirondack_Scenic_Railroad\n", + "Getting /wiki/WKTV\n", + "Getting /wiki/NBC\n", + "Getting /wiki/WKTV\n", + "Getting /wiki/CBS\n", + "Getting /wiki/WKTV\n", + "Getting /wiki/The_CW\n", + "Getting /wiki/WUTR\n", + "Getting /wiki/American_Broadcasting_Company\n", + "Getting /wiki/WFXV\n", + "Getting /wiki/Fox_Broadcasting_Company\n", + "Getting /wiki/WPNY-LD\n", + "Getting /wiki/MyNetworkTV\n", + "Getting /wiki/WCNY-TV\n", + "Getting /wiki/PBS\n", + "Getting /wiki/Observer-Dispatch\n", + "Getting /wiki/List_of_people_from_Utica,_New_York\n", + "Getting /wiki/List_of_mayors_of_Utica,_New_York\n", + "Getting /wiki/Demographics_of_Utica,_New_York\n", + "Getting /wiki/Shih_Chien_University\n", + "Already fetched /wiki/Main_Page\n", + "Already fetched /wiki/Main_Page\n", + "Already fetched /wiki/Shih_Chien_University\n", + "Already fetched /wiki/Shih_Chien_University\n", + "Already fetched /wiki/Shih_Chien_University\n", + "Getting /wiki/Pe%CC%8Dh-%C5%8De-j%C4%AB\n", + "Getting /wiki/Pinyin\n", + "Getting /wiki/Chairperson\n", + "Getting /wiki/University_president\n", + "Getting /wiki/Taipei\n", + "Getting /wiki/Kaohsiung\n", + "Getting /wiki/Taiwan\n", + "Getting /wiki/U12_Consortium\n", + "Getting /wiki/Traditional_Chinese_characters\n", + "Getting /wiki/Simplified_Chinese_characters\n", + "Getting /wiki/Standard_Chinese\n", + "Getting /wiki/Hanyu_Pinyin\n", + "Getting /wiki/Southern_Min\n", + "Getting /wiki/Hokkien\n", + "Getting /wiki/Pe%CC%8Dh-%C5%8De-j%C4%AB\n", + "Getting /wiki/Chinese_language\n", + "Getting /wiki/Pinyin\n", + "Getting /wiki/Pe%CC%8Dh-%C5%8De-j%C4%AB\n", + "Getting /wiki/Literal_translation\n", + "Getting /wiki/Private_university\n", + "Getting /wiki/Taipei\n", + "Getting /wiki/Kaohsiung\n", + "Getting /wiki/Taiwan\n", + "Getting /wiki/Bloomberg_Businessweek\n", + "Getting /wiki/QS_World_University_Rankings\n", + "Getting /wiki/Zhongshan_District,_Taipei\n", + "Getting /wiki/Taipei\n", + "Getting /wiki/Neimen_District\n", + "Getting /wiki/Kaohsiung\n", + "Getting /wiki/Hsieh_Tung-min\n", + "Getting /wiki/Ko_Chia-yen\n", + "Getting /wiki/Summer_Meng\n", + "Getting /wiki/Ashin\n", + "Getting /wiki/Saimaa_University_of_Applied_Sciences\n", + "Getting /wiki/Hanze_University_of_Applied_Sciences,_Groningen\n", + "Getting /wiki/University_of_Applied_Sciences_W%C3%BCrzburg-Schweinfurt\n", + "Getting /wiki/Northumbria_University\n", + "Getting /wiki/University_of_Cumbria\n", + "Getting /wiki/Kwantlen_Polytechnic_University\n", + "Getting /wiki/University_of_Wisconsin-River_Falls\n", + "Getting /wiki/Dallas_Baptist_University\n", + "Getting /wiki/RMIT_University\n", + "Getting /wiki/Unitec_Institute_of_Technology\n", + "Getting /wiki/University_of_California,_Davis\n", + "Getting /wiki/Dazhi_metro_station\n", + "Getting /wiki/Taipei_Metro\n", + "Getting /wiki/List_of_universities_in_Taiwan\n", + "Getting /wiki/U12_Consortium\n", + "Getting /wiki/Education_in_Taiwan#University\n", + "Getting /wiki/List_of_universities_in_Taiwan\n", + "Getting /wiki/National_Central_University\n", + "Getting /wiki/National_Cheng_Kung_University\n", + "Getting /wiki/National_Sun_Yat-sen_University\n", + "Getting /wiki/National_Taiwan_University\n", + "Getting /wiki/National_Tsing_Hua_University\n", + "Getting /wiki/National_Yang_Ming_Chiao_Tung_University\n", + "Getting /wiki/National_Chengchi_University\n", + "Getting /wiki/National_Chi_Nan_University\n", + "Getting /wiki/National_Chiayi_University\n", + "Getting /wiki/National_Chung_Cheng_University\n", + "Getting /wiki/National_Chung_Hsing_University\n", + "Getting /wiki/National_Dong_Hwa_University\n", + "Getting /wiki/National_Ilan_University\n", + "Getting /wiki/National_Pingtung_University\n", + "Getting /wiki/National_Taipei_University\n", + "Getting /wiki/National_Taitung_University\n", + "Getting /wiki/National_Taiwan_Ocean_University\n", + "Getting /wiki/National_United_University\n", + "Getting /wiki/National_University_of_Kaohsiung\n", + "Getting /wiki/National_University_of_Tainan\n", + "Getting /wiki/University_of_Taipei\n", + "Getting /wiki/National_Kaohsiung_Normal_University\n", + "Getting /wiki/National_Taiwan_Normal_University\n", + "Getting /wiki/National_Changhua_University_of_Education\n", + "Getting /wiki/National_Taichung_University_of_Education\n", + "Getting /wiki/National_Taipei_University_of_Education\n", + "Getting /wiki/National_Taiwan_University_of_Arts\n", + "Getting /wiki/Tainan_National_University_of_the_Arts\n", + "Getting /wiki/Taipei_National_University_of_the_Arts\n", + "Getting /wiki/National_Taiwan_Sport_University\n", + "Getting /wiki/National_Taiwan_University_of_Sport\n", + "Getting /wiki/National_Open_University\n", + "Getting /wiki/Open_University_of_Kaohsiung\n", + "Getting /wiki/Aletheia_University\n", + "Getting /wiki/Asia_University_(Taiwan)\n", + "Getting /wiki/Chang_Gung_University\n", + "Getting /wiki/Chang_Jung_Christian_University\n", + "Getting /wiki/Chinese_Culture_University\n", + "Getting /wiki/China_Medical_University_(Taiwan)\n", + "Getting /wiki/Chung_Hua_University\n", + "Getting /wiki/Chung_Shan_Medical_University\n", + "Getting /wiki/Chung_Yuan_Christian_University\n", + "Getting /wiki/Dayeh_University\n", + "Getting /wiki/Feng_Chia_University\n", + "Getting /wiki/Fo_Guang_University\n", + "Getting /wiki/Fu_Jen_Catholic_University\n", + "Getting /wiki/Hsuan_Chuang_University\n", + "Getting /wiki/Huafan_University\n", + "Getting /wiki/I-Shou_University\n", + "Getting /wiki/Kainan_University\n", + "Getting /wiki/Kaohsiung_Medical_University\n", + "Getting /wiki/Mackay_Medical_College\n", + "Getting /wiki/Ming_Chuan_University\n", + "Getting /wiki/MingDao_University\n", + "Getting /wiki/Nanhua_University\n", + "Getting /wiki/Providence_University\n", + "Getting /wiki/Shih_Hsin_University\n", + "Getting /wiki/Soochow_University_(Taiwan)\n", + "Getting /wiki/Taipei_Medical_University\n", + "Getting /wiki/Taiwan_Shoufu_University\n", + "Getting /wiki/Tamkang_University\n", + "Getting /wiki/Tatung_University\n", + "Getting /wiki/Tunghai_University\n", + "Getting /wiki/Tungnan_University\n", + "Getting /wiki/Tzu_Chi_University\n", + "Getting /wiki/University_of_Kang_Ning\n", + "Getting /wiki/Yuan_Ze_University\n", + "Getting /wiki/National_Chin-Yi_University_of_Technology\n", + "Getting /wiki/National_Formosa_University\n", + "Getting /wiki/National_Kaohsiung_University_of_Science_and_Technology\n", + "Getting /wiki/National_Kaohsiung_University_of_Hospitality_and_Tourism\n", + "Getting /wiki/National_Penghu_University_of_Science_and_Technology\n", + "Getting /wiki/National_Pingtung_University_of_Science_and_Technology\n", + "Getting /wiki/National_Taichung_University_of_Science_and_Technology\n", + "Getting /wiki/National_Taipei_University_of_Nursing_and_Health_Science\n", + "Getting /wiki/National_Taiwan_University_of_Science_and_Technology\n", + "Getting /wiki/National_Taipei_University_of_Technology\n", + "Getting /wiki/National_Yunlin_University_of_Science_and_Technology\n", + "Getting /wiki/National_Tainan_Junior_College_of_Nursing\n", + "Getting /wiki/National_Taipei_University_of_Business\n", + "Getting /wiki/National_Taitung_Junior_College\n", + "Getting /wiki/National_Taiwan_College_of_Performing_Arts\n", + "Getting /wiki/Asia_Eastern_University_of_Science_and_Technology\n", + "Getting /wiki/Chang_Gung_University_of_Science_and_Technology\n", + "Getting /wiki/Chaoyang_University_of_Technology\n", + "Getting /wiki/Central_Taiwan_University_of_Science_and_Technology\n", + "Getting /wiki/Cheng_Shiu_University\n", + "Getting /wiki/Chia_Nan_University_of_Pharmacy_and_Science\n", + "Getting /wiki/Chienkuo_Technology_University\n", + "Getting /wiki/Chihlee_University_of_Technology\n", + "Getting /wiki/China_University_of_Science_and_Technology\n", + "Getting /wiki/China_University_of_Technology\n", + "Getting /wiki/Chien_Hsin_University_of_Science_and_Technology\n", + "Getting /wiki/Chung_Chou_University_of_Science_and_Technology\n", + "Getting /wiki/Chung_Hwa_University_of_Medical_Technology\n", + "Getting /wiki/Chungyu_University_of_Film_and_Arts\n", + "Getting /wiki/Far_East_University_(Taiwan)\n", + "Getting /wiki/Fooyin_University\n", + "Getting /wiki/Hsing_Wu_University\n", + "Getting /wiki/Hsiuping_University_of_Science_and_Technology\n", + "Getting /wiki/Hungkuang_University\n", + "Getting /wiki/HungKuo_Delin_University_of_Technology\n", + "Getting /wiki/Hwa_Hsia_University_of_Technology\n", + "Getting /wiki/Jinwen_University_of_Science_and_Technology\n", + "Getting /wiki/Kao_Yuan_University\n", + "Getting /wiki/Kun_Shan_University\n", + "Getting /wiki/Ling_Tung_University\n", + "Getting /wiki/Lunghwa_University_of_Science_and_Technology\n", + "Getting /wiki/Meiho_University\n", + "Getting /wiki/Ming_Chi_University_of_Technology\n", + "Getting /wiki/Minghsin_University_of_Science_and_Technology\n", + "Getting /wiki/Nan_Kai_University_of_Technology\n", + "Getting /wiki/Overseas_Chinese_University\n", + "Getting /wiki/Southern_Taiwan_University_of_Science_and_Technology\n", + "Getting /wiki/St._John%27s_University_(Taiwan)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Getting /wiki/Shu-Te_University\n", + "Getting /wiki/Ta_Hwa_University_of_Science_and_Technology\n", + "Getting /wiki/Tajen_University\n", + "Getting /wiki/Tainan_University_of_Technology\n", + "Getting /wiki/Taipei_City_University_of_Science_and_Technology\n", + "Getting /wiki/Taipei_University_of_Marine_Technology\n", + "Getting /wiki/Takming_University_of_Science_and_Technology\n", + "Getting /wiki/TransWorld_University\n", + "Getting /wiki/Tung_Fang_Design_University\n", + "Getting /wiki/Tzu_Chi_University_of_Science_and_Technology\n", + "Getting /wiki/Vanung_University\n", + "Getting /wiki/WuFeng_University\n", + "Getting /wiki/Wenzao_Ursuline_University_of_Languages\n", + "Getting /wiki/Yu_Da_University_of_Science_and_Technology\n", + "Getting /wiki/Yuanpei_University_of_Medical_Technology\n", + "Getting /wiki/Ching_Kuo_Institute_of_Management_and_Health\n", + "Getting /wiki/CTBC_Business_School\n", + "Getting /wiki/Dahan_Institute_of_Technology\n", + "Getting /wiki/Fortune_Institute_of_Technology\n", + "Getting /wiki/Lan_Yang_Institute_of_Technology\n", + "Getting /wiki/Lee-Ming_Institute_of_Technology\n", + "Getting /wiki/Nanya_Institute_of_Technology\n", + "Getting /wiki/Tatung_Institute_of_Commerce_and_Technology\n", + "Getting /wiki/Tzu_Hui_Institute_of_Technology\n", + "Getting /wiki/Cardinal_Tien_College_of_Healthcare_and_Management\n", + "Getting /wiki/Hsin_Sheng_College_of_Medical_Care_and_Management\n", + "Getting /wiki/Tzu_Hui_Institute_of_Technology\n", + "Getting /wiki/Army_Academy_R.O.C.\n", + "Getting /wiki/National_Defense_Medical_Center\n", + "Getting /wiki/National_Defense_University_(Republic_of_China)\n", + "Getting /wiki/Republic_of_China_Air_Force_Academy\n", + "Getting /wiki/Republic_of_China_Military_Academy\n", + "Getting /wiki/Republic_of_China_Naval_Academy\n", + "Getting /wiki/Central_Police_University\n", + "Getting /wiki/Taiwan_Police_College\n", + "Getting /wiki/University_alliances_in_Taiwan\n", + "Getting /wiki/Joint_Private_Medical_Universities_Admissions_System\n", + "Getting /wiki/University_System_of_Taiwan\n", + "Getting /wiki/Taiwan_Comprehensive_University_System\n", + "Getting /wiki/European_Union_Centre_in_Taiwan\n", + "Getting /wiki/University_System_of_Taipei\n", + "Getting /wiki/National_University_System_of_Taiwan\n", + "Getting /wiki/Excellent_Long-Established_University_Consortium_of_Taiwan\n", + "Getting /wiki/Geographic_coordinate_system\n", + "Getting /wiki/Sichuan_University\n", + "Already fetched /wiki/Main_Page\n", + "Already fetched /wiki/Main_Page\n", + "Already fetched /wiki/Sichuan_University\n", + "Already fetched /wiki/Sichuan_University\n", + "Already fetched /wiki/Sichuan_University\n", + "Getting /wiki/Public_University\n", + "Getting /wiki/University_president\n", + "Getting /wiki/Li_Yanrong\n", + "Getting /wiki/Chengdu\n", + "Getting /wiki/Sichuan\n", + "Getting /wiki/School_colors\n", + "Getting /wiki/BRICS_Universities_League\n", + "Getting /wiki/Double_First_Class_University_Plan\n", + "Getting /wiki/Project_211\n", + "Getting /wiki/Project_985\n", + "Getting /wiki/Simplified_Chinese_characters\n", + "Getting /wiki/Traditional_Chinese_characters\n", + "Getting /wiki/Standard_Chinese\n", + "Getting /wiki/Hanyu_Pinyin\n", + "Getting /wiki/National_university\n", + "Getting /wiki/National_Key_Universities\n", + "Getting /wiki/Public_university\n", + "Getting /wiki/Research_university\n", + "Getting /wiki/Chengdu\n", + "Getting /wiki/Sichuan\n", + "Getting /wiki/China\n", + "Getting /wiki/Ministry_of_Education_of_the_People%27s_Republic_of_China\n", + "Getting /wiki/Double_First_Class_University_Plan\n", + "Getting /wiki/Double_First_Class_University_Plan\n", + "Getting /wiki/Project_211\n", + "Getting /wiki/Project_985\n", + "Getting /wiki/Chengdu_University_of_Science_and_Technology\n", + "Getting /wiki/West_China_University_of_Medical_Sciences\n", + "Getting /wiki/Higher_education_in_China\n", + "Getting /wiki/Academies_(Shuyuan)\n", + "Getting /wiki/Chengdu_University_of_Science_and_Technology\n", + "Getting /wiki/Sichuan_Agricultural_University\n", + "Getting /wiki/Southwest_Normal_University\n", + "Getting /wiki/Sichuan_Teachers_College\n", + "Getting /wiki/Southwest_College_of_Political_Science_and_Law\n", + "Getting /wiki/Southwest_Agricultural_University\n", + "Getting /wiki/Beihang_University\n", + "Getting /wiki/Chemical_engineering\n", + "Getting /wiki/Hydroelectricity\n", + "Getting /wiki/Mechanics\n", + "Getting /wiki/Textiles\n", + "Getting /wiki/Light_industry\n", + "Getting /wiki/West_China_Medical_Center\n", + "Getting /wiki/Traditional_Chinese_characters\n", + "Getting /wiki/Western_China\n", + "Getting /wiki/Doctorate\n", + "Getting /wiki/Postdoctoral_research\n", + "Getting /wiki/Bachelor%27s_degree\n", + "Getting /wiki/Liberal_arts\n", + "Getting /wiki/Sciences\n", + "Getting /wiki/Engineering\n", + "Getting /wiki/Medicine\n", + "Getting /wiki/Agriculture\n", + "Getting /wiki/Entity_List\n", + "Getting /wiki/United_States_Department_of_Commerce\n", + "Getting /wiki/Bureau_of_Industry_and_Security\n", + "Getting /wiki/Professor\n", + "Getting /wiki/Associate_professors\n", + "Getting /wiki/Chinese_Academy_of_Sciences\n", + "Getting /wiki/Chinese_Academy_of_Engineering\n", + "Getting /wiki/State_Council_of_the_People%27s_Republic_of_China\n", + "Getting /wiki/RMB\n", + "Getting /wiki/Project_985\n", + "Getting /wiki/Western_China\n", + "Getting /wiki/Xi%27an_Jiaotong_University\n", + "Getting /wiki/Southwest_China\n", + "Getting /wiki/Chongqing\n", + "Getting /wiki/Sichuan\n", + "Getting /wiki/Guizhou\n", + "Getting /wiki/Yunnan\n", + "Getting /wiki/Tibet_Autonomous_Region\n", + "Getting /wiki/Chinese_universities\n", + "Getting /wiki/Times_Higher_Education_World_Reputation_Rankings\n", + "Getting /wiki/Academic_Ranking_of_World_Universities\n", + "Getting /wiki/U.S._News_%26_World_Report_Best_Global_University_Ranking\n", + "Getting /wiki/U.S._News_%26_World_Report_Best_Global_University_Ranking\n", + "Getting /wiki/College_and_university_rankings\n", + "Getting /wiki/Academic_Ranking_of_World_Universities\n", + "Getting /wiki/QS_World_University_Rankings\n", + "Getting /wiki/Times_Higher_Education_World_University_Rankings\n", + "Getting /wiki/U.S._News_%26_World_Report_Best_Colleges_Ranking\n", + "Getting /wiki/QS_World_University_Rankings\n", + "Getting /wiki/QS_World_University_Rankings\n", + "Getting /wiki/U.S._News_%26_World_Report_Best_Colleges_Ranking\n", + "Getting /wiki/Academic_Ranking_of_World_Universities\n", + "Getting /wiki/Ministry_of_Education_of_the_People%27s_Republic_of_China\n", + "Getting /wiki/Chengdu\n", + "Getting /wiki/Capital_city\n", + "Getting /wiki/Sichuan_Province\n", + "Getting /wiki/Tributary\n", + "Getting /wiki/Shuangliu_County\n", + "Getting /wiki/West_China_College_of_Stomatology\n", + "Getting /wiki/Stomatology\n", + "Getting /wiki/Peter_Hessler\n", + "Getting /wiki/Semiotics\n", + "Getting /wiki/West_China_Medical_Center_of_Sichuan_University\n", + "Getting /wiki/The_Hong_Kong_Polytechnic_University\n", + "Getting /wiki/The_University_of_Pittsburgh\n", + "Getting /wiki/Zhang_Lan\n", + "Getting /wiki/Social_activist\n", + "Getting /wiki/Chinese_Central_Government\n", + "Getting /wiki/Wu_Yuzhang\n", + "Getting /wiki/Zhu_De\n", + "Getting /wiki/People%27s_Republic_of_China\n", + "Getting /wiki/People%27s_Liberation_Army\n", + "Getting /wiki/Guo_Moruo\n", + "Getting /wiki/Chinese_Academy_of_Science\n", + "Getting /wiki/Jinde_Cao\n", + "Getting /wiki/Southeast_University\n", + "Getting /wiki/Ba_Jin\n", + "Getting /wiki/Yang_Shangkun\n", + "Getting /wiki/Dai_Bingguo\n", + "Getting /wiki/Feng_Youlan\n", + "Getting /wiki/Tong_Dizhou\n", + "Getting /wiki/Zhu_Guangqian\n", + "Getting /wiki/Ke_Zhao\n", + "Getting /wiki/Pu_Baoming\n", + "Getting /wiki/Song_Yonghua\n", + "Getting /wiki/List_of_universities_in_China\n", + "Getting /wiki/West_China_Union_University\n", + "Getting /wiki/South_China_Morning_Post\n", + "Getting /wiki/NBC_News\n", + "Getting /wiki/The_New_Yorker\n", + "Getting /wiki/Chengdu\n", + "Getting /wiki/Wang_Lijun_incident\n", + "Getting /wiki/2021_Summer_World_University_Games\n", + "Getting /wiki/Qingyang_District\n", + "Getting /wiki/Jinjiang_District\n", + "Getting /wiki/Jinniu_District\n", + "Getting /wiki/Wuhou_District\n", + "Getting /wiki/Chenghua_District\n", + "Getting /wiki/Longquanyi_District\n", + "Getting /wiki/Qingbaijiang_District\n", + "Getting /wiki/Xindu_District\n", + "Getting /wiki/Wenjiang_District\n", + "Getting /wiki/Shuangliu_District\n", + "Getting /wiki/Dongsheng_Subdistrict,_Shuangliu_District\n", + "Getting /wiki/Pidu_District\n", + "Getting /wiki/Xinjin_District\n", + "Getting /wiki/Dujiangyan_City\n", + "Getting /wiki/Pengzhou\n", + "Getting /wiki/Qionglai_City\n", + "Getting /wiki/Chongzhou\n", + "Getting /wiki/Jianyang,_Sichuan\n", + "Getting /wiki/Jintang_County\n", + "Getting /wiki/Dayi_County\n", + "Getting /wiki/Pujiang_County,_Sichuan\n", + "Getting /wiki/Tianfu_New_Area\n", + "Getting /wiki/Chengdu_railway_station\n", + "Getting /wiki/Chengdu_East_railway_station\n", + "Getting /wiki/Chengdu_South_railway_station\n", + "Getting /wiki/Chengdu_Metro\n", + "Getting /wiki/List_of_Chengdu_Metro_stations\n", + "Getting /wiki/Chengdu_Public_Transport_Group\n", + "Getting /wiki/Chengdu_Shuangliu_International_Airport\n", + "Getting /wiki/Chengdu_Tianfu_International_Airport\n", + "Getting /wiki/Anshun_Bridge\n", + "Getting /wiki/Chengdu_Research_Base_of_Giant_Panda_Breeding\n", + "Getting /wiki/Chengdu_Tianfu_Software_Park\n", + "Getting /wiki/Chengdu_Zoo\n", + "Getting /wiki/Jinsha_site\n", + "Getting /wiki/Mount_Qingcheng\n", + "Getting /wiki/Sichuan_Provincial_Women%27s_Prison\n", + "Getting /wiki/West_China_Medical_Center\n", + "Getting /wiki/Consulate_General_of_the_United_States,_Chengdu\n", + "Getting /wiki/Chengdu_Shude_High_School\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Getting /wiki/Chengdu_No.7_High_School\n", + "Getting /wiki/Number_Seven_Yucai_Middle_School\n", + "Getting /wiki/Shishi_High_School\n", + "Getting /wiki/Chengdu_International_School\n", + "Getting /wiki/Chengdu_Meishi_International_School\n", + "Getting /wiki/L%C3%A9man_International_School_-_Chengdu\n", + "Getting /wiki/Malvern_College_Chengdu\n", + "Getting /wiki/Oxford_International_College_of_Chengdu\n", + "Getting /wiki/QSI_International_School_of_Chengdu\n", + "Getting /wiki/International_Department_of_Shude_High_School\n", + "Getting /wiki/Chengdu_Sport_University\n", + "Getting /wiki/Chengdu_University_of_Technology\n", + "Getting /wiki/Southwest_Jiaotong_University\n", + "Getting /wiki/University_of_Electronic_Science_and_Technology_of_China\n", + "Getting /wiki/Chengdu_University_of_Science_and_Technology\n", + "Getting /wiki/Chengdu_Tiancheng_F.C.\n", + "Getting /wiki/LGBT_culture_in_Chengdu\n", + "Getting /wiki/List_of_universities_and_colleges_in_Sichuan\n", + "Getting /wiki/Sichuan\n", + "Getting /wiki/National_university\n", + "Getting /wiki/University_of_Electronic_Science_and_Technology_of_China\n", + "Getting /wiki/Southwest_Jiaotong_University\n", + "Getting /wiki/Southwestern_University_of_Finance_and_Economics\n", + "Getting /wiki/Southwest_University_for_Nationalities\n", + "Getting /wiki/Civil_Aviation_Flight_University_of_China\n", + "Getting /wiki/Chengdu_University_of_Technology\n", + "Getting /wiki/Southwest_Petroleum_University\n", + "Getting /wiki/Public_university\n", + "Getting /wiki/Sichuan_Agricultural_University\n", + "Getting /wiki/Sichuan_Normal_University\n", + "Getting /wiki/Chengdu_University\n", + "Getting /wiki/Chengdu_University_of_Information_Technology\n", + "Getting /wiki/Chengdu_University_of_Traditional_Chinese_Medicine\n", + "Getting /wiki/Chengdu_Kinesiology_University\n", + "Getting /wiki/Xihua_University\n", + "Getting /wiki/Sichuan_Conservatory_of_Music\n", + "Getting /wiki/Chengdu_Medical_College\n", + "Getting /wiki/Southwest_University_of_Science_and_Technology\n", + "Getting /wiki/China_West_Normal_University\n", + "Getting /wiki/Sichuan_University_of_Science_and_Engineering\n", + "Getting /wiki/Southwest_Medical_University\n", + "Getting /wiki/Mianyang_Normal_University\n", + "Getting /wiki/Leshan_Normal_University\n", + "Getting /wiki/North_Sichuan_Medical_University\n", + "Getting /wiki/Private_university\n", + "Getting /wiki/Chengdu_Neusoft_University\n", + "Getting /wiki/List_of_universities_in_China\n", + "Getting /wiki/Project_985\n", + "Getting /wiki/Higher_education_in_China\n", + "Getting /wiki/List_of_universities_in_China\n", + "Getting /wiki/Beijing\n", + "Getting /wiki/Peking_University\n", + "Getting /wiki/Tsinghua_University\n", + "Getting /wiki/Renmin_University_of_China\n", + "Getting /wiki/Beijing_Normal_University\n", + "Getting /wiki/Beihang_University\n", + "Getting /wiki/Beijing_Institute_of_Technology\n", + "Getting /wiki/China_Agricultural_University\n", + "Getting /wiki/Minzu_University_of_China\n", + "Getting /wiki/Shanghai\n", + "Getting /wiki/Fudan_University\n", + "Getting /wiki/Shanghai_Jiao_Tong_University\n", + "Getting /wiki/Tongji_University\n", + "Getting /wiki/East_China_Normal_University\n", + "Getting /wiki/Zhejiang\n", + "Getting /wiki/Zhejiang_University\n", + "Getting /wiki/Jiangsu\n", + "Getting /wiki/Nanjing_University\n", + "Getting /wiki/Southeast_University\n", + "Getting /wiki/Anhui\n", + "Getting /wiki/University_of_Science_and_Technology_of_China\n", + "Getting /wiki/Shaanxi\n", + "Getting /wiki/Xi%27an_Jiaotong_University\n", + "Getting /wiki/Northwestern_Polytechnical_University\n", + "Getting /wiki/Northwest_A%26F_University\n", + "Getting /wiki/Heilongjiang\n", + "Getting /wiki/Harbin_Institute_of_Technology\n", + "Getting /wiki/Jilin\n", + "Getting /wiki/Jilin_University\n", + "Getting /wiki/Liaoning\n", + "Getting /wiki/Dalian_University_of_Technology\n", + "Getting /wiki/Northeastern_University_(China)\n", + "Getting /wiki/Tianjin\n", + "Getting /wiki/Nankai_University\n", + "Getting /wiki/Tianjin_University\n", + "Getting /wiki/Shandong\n", + "Getting /wiki/Shandong_University\n", + "Getting /wiki/Ocean_University_of_China\n", + "Getting /wiki/Gansu\n", + "Getting /wiki/Lanzhou_University\n", + "Getting /wiki/Hubei\n", + "Getting /wiki/Huazhong_University_of_Science_and_Technology\n", + "Getting /wiki/Wuhan_University\n", + "Getting /wiki/Hunan\n", + "Getting /wiki/Central_South_University\n", + "Getting /wiki/Hunan_University\n", + "Getting /wiki/National_University_of_Defense_Technology\n", + "Getting /wiki/Fujian\n", + "Getting /wiki/Xiamen_University\n", + "Getting /wiki/Chongqing\n", + "Getting /wiki/Chongqing_University\n", + "Getting /wiki/Sichuan\n", + "Getting /wiki/University_of_Electronic_Science_and_Technology_of_China\n", + "Getting /wiki/Guangdong\n", + "Getting /wiki/Sun_Yat-sen_University\n", + "Getting /wiki/South_China_University_of_Technology\n", + "Getting /wiki/Project_211\n", + "Getting /wiki/Project_211\n", + "Getting /wiki/Higher_education_in_China\n", + "Getting /wiki/List_of_universities_in_China\n", + "Getting /wiki/Beijing\n", + "Getting /wiki/Beijing_Foreign_Studies_University\n", + "Getting /wiki/Beijing_Forestry_University\n", + "Getting /wiki/Beijing_Institute_of_Technology\n", + "Getting /wiki/Beijing_Jiaotong_University\n", + "Getting /wiki/Beijing_Normal_University\n", + "Getting /wiki/Beihang_University\n", + "Getting /wiki/Beijing_University_of_Chemical_Technology\n", + "Getting /wiki/Beijing_University_of_Chinese_Medicine\n", + "Getting /wiki/Beijing_University_of_Posts_and_Telecommunications\n", + "Getting /wiki/Beijing_University_of_Technology\n", + "Getting /wiki/Central_Conservatory_of_Music\n", + "Getting /wiki/Central_University_of_Finance_and_Economics\n", + "Getting /wiki/China_Agricultural_University\n", + "Getting /wiki/China_University_of_Geosciences_(Beijing)\n", + "Getting /wiki/China_University_of_Petroleum_(Beijing)\n", + "Getting /wiki/China_University_of_Mining_and_Technology\n", + "Getting /wiki/China_University_of_Political_Science_and_Law\n", + "Getting /wiki/Communication_University_of_China\n", + "Getting /wiki/Minzu_University_of_China\n", + "Getting /wiki/North_China_Electric_Power_University\n", + "Getting /wiki/Peking_Union_Medical_College\n", + "Getting /wiki/Peking_University\n", + "Getting /wiki/Renmin_University_of_China\n", + "Getting /wiki/Tsinghua_University\n", + "Getting /wiki/University_of_International_Business_and_Economics_(Beijing)\n", + "Getting /wiki/University_of_Science_and_Technology_Beijing\n", + "Getting /wiki/Shanghai\n", + "Getting /wiki/Donghua_University\n", + "Getting /wiki/East_China_Normal_University\n", + "Getting /wiki/East_China_University_of_Science_and_Technology\n", + "Getting /wiki/Fudan_University\n", + "Getting /wiki/Second_Military_Medical_University\n", + "Getting /wiki/Shanghai_International_Studies_University\n", + "Getting /wiki/Shanghai_Jiao_Tong_University\n", + "Getting /wiki/Shanghai_University\n", + "Getting /wiki/Shanghai_University_of_Finance_and_Economics\n", + "Getting /wiki/Tongji_University\n", + "Getting /wiki/Tianjin\n", + "Getting /wiki/Nankai_University\n", + "Getting /wiki/Tianjin_Medical_University\n", + "Getting /wiki/Tianjin_University\n", + "Getting /wiki/Chongqing\n", + "Getting /wiki/Chongqing_University\n", + "Getting /wiki/Southwest_University\n", + "Getting /wiki/Anhui\n", + "Getting /wiki/Anhui_University\n", + "Getting /wiki/Hefei_University_of_Technology\n", + "Getting /wiki/University_of_Science_and_Technology_of_China\n", + "Getting /wiki/Fujian\n", + "Getting /wiki/Xiamen_University\n", + "Getting /wiki/Fuzhou_University\n", + "Getting /wiki/Guangdong\n", + "Getting /wiki/Jinan_University\n", + "Getting /wiki/South_China_Normal_University\n", + "Getting /wiki/South_China_University_of_Technology\n", + "Getting /wiki/Sun_Yat-sen_University\n", + "Getting /wiki/Guizhou\n", + "Getting /wiki/Guizhou_University\n", + "Getting /wiki/Gansu\n", + "Getting /wiki/Lanzhou_University\n", + "Getting /wiki/Hainan\n", + "Getting /wiki/Hainan_University\n", + "Getting /wiki/Hebei\n", + "Getting /wiki/Hebei_University_of_Technology\n", + "Getting /wiki/Heilongjiang\n", + "Getting /wiki/Harbin_Engineering_University\n", + "Getting /wiki/Harbin_Institute_of_Technology\n", + "Getting /wiki/Northeast_Agricultural_University\n", + "Getting /wiki/Northeast_Forestry_University\n", + "Getting /wiki/Henan\n", + "Getting /wiki/Zhengzhou_University\n", + "Getting /wiki/Hubei\n", + "Getting /wiki/China_University_of_Geosciences_(Wuhan)\n", + "Getting /wiki/Wuhan_University\n", + "Getting /wiki/Huazhong_University_of_Science_and_Technology\n", + "Getting /wiki/Wuhan_University_of_Technology\n", + "Getting /wiki/Huazhong_Agricultural_University\n", + "Getting /wiki/Huazhong_Normal_University\n", + "Getting /wiki/Zhongnan_University_of_Economics_and_Law\n", + "Getting /wiki/Hunan\n", + "Getting /wiki/Central_South_University\n", + "Getting /wiki/Hunan_Normal_University\n", + "Getting /wiki/Hunan_University\n", + "Getting /wiki/National_University_of_Defense_Technology\n", + "Getting /wiki/Jiangsu\n", + "Getting /wiki/China_Pharmaceutical_University\n", + "Getting /wiki/Hohai_University\n", + "Getting /wiki/Jiangnan_University\n", + "Getting /wiki/Nanjing_Aeronautics_and_Astronautics_University\n", + "Getting /wiki/Nanjing_Agricultural_University\n", + "Getting /wiki/Nanjing_Normal_University\n", + "Getting /wiki/Nanjing_University\n", + "Getting /wiki/Nanjing_University_of_Science_and_Technology\n", + "Getting /wiki/Soochow_University_(Suzhou)\n", + "Getting /wiki/Southeast_University\n", + "Getting /wiki/China_University_of_Mining_and_Technology\n", + "Getting /wiki/Jiangxi\n", + "Getting /wiki/Nanchang_University\n", + "Getting /wiki/Jilin\n", + "Getting /wiki/Jilin_University\n", + "Getting /wiki/Northeast_Normal_University\n", + "Getting /wiki/Yanbian_University\n", + "Getting /wiki/Liaoning\n", + "Getting /wiki/Dalian_Maritime_University\n", + "Getting /wiki/Dalian_University_of_Technology\n", + "Getting /wiki/Liaoning_University\n", + "Getting /wiki/Northeastern_University_(Shenyang,_China)\n", + "Getting /wiki/Qinghai\n", + "Getting /wiki/Qinghai_University\n", + "Getting /wiki/Shaanxi\n", + "Getting /wiki/Chang%27an_University\n", + "Getting /wiki/Fourth_Military_Medical_University\n", + "Getting /wiki/Northwest_A%26F_University\n", + "Getting /wiki/Northwest_University_(China)\n", + "Getting /wiki/Northwestern_Polytechnical_University\n", + "Getting /wiki/Shaanxi_Normal_University\n", + "Getting /wiki/Xi%27an_Jiaotong_University\n", + "Getting /wiki/Xidian_University\n", + "Getting /wiki/Shandong\n", + "Getting /wiki/China_University_of_Petroleum_(Huadong)\n", + "Getting /wiki/Shandong_University\n", + "Getting /wiki/Ocean_University_of_China\n", + "Getting /wiki/Shanxi\n", + "Getting /wiki/Taiyuan_University_of_Technology\n", + "Getting /wiki/Sichuan\n", + "Getting /wiki/Sichuan_Agricultural_University\n", + "Getting /wiki/Southwest_Jiaotong_University\n", + "Getting /wiki/Southwestern_University_of_Finance_and_Economics\n", + "Getting /wiki/University_of_Electronic_Science_and_Technology_of_China\n", + "Getting /wiki/Yunnan\n", + "Getting /wiki/Yunnan_University\n", + "Getting /wiki/Zhejiang\n", + "Getting /wiki/Zhejiang_University\n", + "Getting /wiki/Guangxi\n", + "Getting /wiki/Guangxi_University\n", + "Getting /wiki/Inner_Mongolia\n", + "Getting /wiki/Inner_Mongolia_University\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Getting /wiki/Ningxia\n", + "Getting /wiki/Ningxia_University\n", + "Getting /wiki/Tibet_Autonomous_Region\n", + "Getting /wiki/Tibet_University\n", + "Getting /wiki/Xinjiang\n", + "Getting /wiki/Shihezi_University\n", + "Getting /wiki/Xinjiang_University\n", + "Getting /wiki/Project_985\n", + "Getting /wiki/Sichuan\n", + "Getting /wiki/Chengdu\n", + "Getting /wiki/List_of_current_and_former_capitals_of_subnational_entities_of_China\n", + "Getting /wiki/Politics_of_Sichuan\n", + "Getting /wiki/Sichuan#Economy\n", + "Getting /wiki/List_of_universities_and_colleges_in_Sichuan\n", + "Getting /wiki/Sichuan#History\n", + "Getting /wiki/Sanxingdui\n", + "Getting /wiki/Ba_(state)\n", + "Getting /wiki/Shu_(kingdom)\n", + "Getting /wiki/Chengjia\n", + "Getting /wiki/Shu_Han\n", + "Getting /wiki/Cheng_Han\n", + "Getting /wiki/Qiao_Zong\n", + "Getting /wiki/Former_Shu\n", + "Getting /wiki/Later_Shu\n", + "Getting /wiki/Ming_Xia\n", + "Getting /wiki/Zhang_Xianzhong\n", + "Getting /wiki/Sichuan_anti-Mongol_fortresses\n", + "Getting /wiki/Railway_Protection_Movement\n", + "Getting /wiki/List_of_cities_in_the_People%27s_Republic_of_China#Sichuan\n", + "Getting /wiki/Sichuan_Basin\n", + "Getting /wiki/Chengdu_Plain\n", + "Getting /wiki/Sichuan_River\n", + "Getting /wiki/Min_River_(Sichuan)\n", + "Getting /wiki/Jialing_River\n", + "Getting /wiki/Tuo_River\n", + "Getting /wiki/Yalong_River\n", + "Getting /wiki/Daba_Mountains\n", + "Getting /wiki/Longmen_Mountains\n", + "Getting /wiki/Qionglai_Mountains\n", + "Getting /wiki/Hengduan_Mountains\n", + "Getting /wiki/Sichuan#Culture\n", + "Getting /wiki/Ba%E2%80%93Shu_culture\n", + "Getting /wiki/Sichuan_embroidery\n", + "Getting /wiki/Sichuan_cuisine\n", + "Getting /wiki/Mengding_Ganlu_tea\n", + "Getting /wiki/Panda_tea\n", + "Getting /wiki/Sichuan_opera\n", + "Getting /wiki/Music_of_Sichuan\n", + "Getting /wiki/Erlang_Shen\n", + "Getting /wiki/Sichuanese_garden\n", + "Getting /wiki/Sichuanese_people\n", + "Getting /wiki/Hakka_people\n", + "Getting /wiki/Xiang-speaking_peoples\n", + "Getting /wiki/Tibetan_people\n", + "Getting /wiki/Qiang_people\n", + "Getting /wiki/Yi_people\n", + "Getting /wiki/Sichuan#Religion\n", + "Getting /wiki/Buddhism\n", + "Getting /wiki/Chinese_Buddhism\n", + "Getting /wiki/Tibetan_Buddhism\n", + "Getting /wiki/Chinese_folk_religion\n", + "Getting /wiki/Chinese_salvationist_religions\n", + "Getting /wiki/Christianity\n", + "Getting /wiki/Christianity_in_Sichuan\n", + "Getting /wiki/Catholic_Church_in_Sichuan\n", + "Getting /wiki/Protestantism_in_Sichuan\n", + "Getting /wiki/Anglicanism_in_Sichuan\n", + "Getting /wiki/Methodism_in_Sichuan\n", + "Getting /wiki/Quakerism_in_Sichuan\n", + "Getting /wiki/Baptist_Christianity_in_Sichuan\n", + "Getting /wiki/Adventism_in_Sichuan\n", + "Getting /wiki/Confucianism\n", + "Getting /wiki/Islam\n", + "Getting /wiki/Islam_in_Sichuan\n", + "Getting /wiki/Taoism\n", + "Getting /wiki/Sichuan#Languages\n", + "Getting /wiki/Sichuanese_dialects\n", + "Getting /wiki/Ba%E2%80%93Shu_Chinese\n", + "Getting /wiki/Hakka_Chinese\n", + "Getting /wiki/Xiang_Chinese\n", + "Getting /wiki/Sichuanese_Standard_Chinese\n", + "Getting /wiki/Khams_Tibetan_language\n", + "Getting /wiki/Jiarongic_languages\n", + "Getting /wiki/Qiangic_languages\n", + "Getting /wiki/Nuosu_language\n", + "Getting /wiki/Bailu,_Pengzhou\n", + "Getting /wiki/Dujiangyan_Irrigation_System\n", + "Getting /wiki/Gsumge_Mani_Stone_Castle\n", + "Getting /wiki/Huanglong_Scenic_and_Historic_Interest_Area\n", + "Getting /wiki/Jiuzhaigou\n", + "Getting /wiki/Leshan_Giant_Buddha\n", + "Getting /wiki/Mount_Emei\n", + "Getting /wiki/Mount_Gongga\n", + "Getting /wiki/Mount_Qingcheng\n", + "Getting /wiki/Sanxingdui\n", + "Getting /wiki/Jinsha_site\n", + "Getting /wiki/Sichuan_Giant_Panda_Sanctuaries\n", + "Getting /wiki/Southern_Cliff_Buddhist_Sculptures\n", + "Getting /wiki/Bashu_nationalism\n", + "Getting /wiki/Chongqing\n", + "Getting /wiki/List_of_universities_in_China\n", + "Getting /wiki/Peking_University\n", + "Getting /wiki/Beihang_University\n", + "Getting /wiki/Beijing_Normal_University\n", + "Getting /wiki/Xiamen_University\n", + "Getting /wiki/University_of_Hong_Kong\n", + "Getting /wiki/Sun_Yat-sen_University\n", + "Getting /wiki/Wuhan_University\n", + "Getting /wiki/Huazhong_University_of_Science_and_Technology\n", + "Getting /wiki/Lanzhou_University\n", + "Getting /wiki/Shandong_University\n", + "Getting /wiki/Fudan_University\n", + "Getting /wiki/Nankai_University\n", + "Getting /wiki/Tsinghua_University\n", + "Getting /wiki/Shanghai_Jiao_Tong_University\n", + "Getting /wiki/Nanjing_University\n", + "Getting /wiki/Zhejiang_University\n", + "Getting /wiki/University_of_Science_and_Technology_of_China\n", + "Getting /wiki/Xi%27an_Jiao_Tong_University\n", + "Getting /wiki/Renmin_University_of_China\n", + "Getting /wiki/Excellence_League\n", + "Getting /wiki/Tongji_University\n", + "Getting /wiki/Tianjin_University\n", + "Getting /wiki/Beijing_Institute_of_Technology\n", + "Getting /wiki/Dalian_University_of_Technology\n", + "Getting /wiki/Southeast_University\n", + "Getting /wiki/Harbin_Institute_of_Technology\n", + "Getting /wiki/South_China_University_of_Technology\n", + "Getting /wiki/Northwestern_Polytechnical_University\n", + "Getting /wiki/Chongqing_University\n", + "Getting /wiki/Hunan_University\n", + "Getting /wiki/Chinese_language\n", + "Getting /wiki/%E4%B8%AD%E5%8D%8E%E4%BA%BA%E6%B0%91%E5%85%B1%E5%92%8C%E5%9B%BD\n", + "Getting /wiki/Geographic_coordinate_system\n", + "Getting /wiki/Ullapara_Science_College\n", + "Already fetched /wiki/Main_Page\n", + "Already fetched /wiki/Main_Page\n", + "Already fetched /wiki/Ullapara_Science_College\n", + "Already fetched /wiki/Ullapara_Science_College\n", + "Already fetched /wiki/Ullapara_Science_College\n", + "Getting /wiki/Ullahpara_Upazila\n", + "Getting /wiki/Sirajganj\n", + "Getting /wiki/Bangladesh\n", + "Getting /wiki/Higher_Secondary_School\n", + "Getting /wiki/M._Akbar_Ali\n", + "Getting /wiki/Board_of_education\n", + "Getting /wiki/Rajshahi_Education_Board\n", + "Getting /wiki/Ullahpara_Upazila\n", + "Getting /wiki/Sirajgonj\n", + "Getting /wiki/Bangladesh\n", + "Getting /wiki/M._Akbar_Ali\n", + "Getting /wiki/Bangladesh\n", + "Getting /wiki/Ullahpara_Upazila\n", + "Getting /wiki/Sirajganj\n", + "Getting /wiki/University_of_San_Carlos\n", + "Already fetched /wiki/Main_Page\n", + "Already fetched /wiki/Main_Page\n", + "Already fetched /wiki/University_of_San_Carlos\n", + "Already fetched /wiki/University_of_San_Carlos\n", + "Already fetched /wiki/University_of_San_Carlos\n", + "Getting /wiki/Universidad_de_San_Carlos_de_Guatemala\n", + "Getting /wiki/Filipino_language\n", + "Getting /wiki/Cebuano_language\n", + "Getting /wiki/Spanish_language\n", + "Getting /wiki/Latin_language\n", + "Getting /wiki/Latin\n", + "Getting /wiki/Private_school\n", + "Getting /wiki/Roman_Catholic\n", + "Getting /wiki/Research_university\n", + "Getting /wiki/Coeducation\n", + "Getting /wiki/Society_of_the_Divine_Word\n", + "Getting /wiki/Roman_Catholic\n", + "Getting /wiki/Society_of_the_Divine_Word\n", + "Getting /wiki/Philippine_Accrediting_Association_of_Schools,_Colleges_and_Universities\n", + "Getting /wiki/Integrity_Initiative\n", + "Getting /wiki/Transnational_Education\n", + "Getting /wiki/ASEAN_University_Network\n", + "Getting /wiki/Association_to_Advance_Collegiate_Schools_of_Business\n", + "Getting /wiki/International_Society_of_Automation\n", + "Getting /wiki/International_Association_of_Universities\n", + "Getting /wiki/International_Federation_of_Catholic_Universities\n", + "Getting /wiki/United_Nations_Development_Programme\n", + "Getting /wiki/World_Intellectual_Property_Organization\n", + "Getting /wiki/Intellectual_Property_Office_of_the_Philippines\n", + "Getting /wiki/Chairperson\n", + "Getting /wiki/University_president\n", + "Getting /wiki/Undergraduate_education\n", + "Getting /wiki/Postgraduate_education\n", + "Getting /wiki/Cebu_City\n", + "Getting /wiki/Philippines\n", + "Getting /wiki/Geographic_coordinate_system\n", + "Getting /wiki/School_colors\n", + "Getting /wiki/Athletic_nickname\n", + "Getting /wiki/Cebu_Schools_Athletic_Foundation,_Inc.\n", + "Getting /wiki/Private_Schools_Athletic_Association\n", + "Getting /wiki/Society_of_the_Divine_Word\n", + "Getting /wiki/Cebu_City\n", + "Getting /wiki/Philippines\n", + "Getting /wiki/Graduate_studies\n", + "Getting /wiki/Colegio_de_San_Ildefonso\n", + "Getting /wiki/Commission_on_Higher_Education_(Philippines)\n", + "Getting /wiki/Quacquarelli_Symonds\n", + "Getting /wiki/QS_World_University_Rankings#Asia\n", + "Getting /wiki/International_Standards_Organization\n", + "Getting /wiki/Metro_Cebu\n", + "Getting /wiki/Dispute_over_the_oldest_school_in_the_Philippines\n", + "Getting /wiki/University_of_Santo_Tomas\n", + "Getting /wiki/Colegio_de_San_Ildefonso\n", + "Getting /wiki/Expulsion_of_the_Jesuits\n", + "Getting /wiki/Dominican_Order\n", + "Getting /wiki/Lazarist\n", + "Getting /wiki/Society_of_the_Divine_Word\n", + "Getting /wiki/Second_World_War\n", + "Getting /wiki/St._Charles_Borromeo\n", + "Getting /wiki/Colegio_de_San_Ildefonso\n", + "Getting /wiki/Colegio_de_San_Ildefonso\n", + "Getting /wiki/Fidel_Villarroel\n", + "Getting /wiki/Colegio_de_San_Ildefonso\n", + "Getting /wiki/Basic_education\n", + "Getting /wiki/Secondary_school\n", + "Getting /wiki/Undergraduate_education\n", + "Getting /wiki/Graduate_Studies\n", + "Getting /wiki/Today%27s_Carolinian\n", + "Getting /wiki/College_and_university_rankings\n", + "Getting /wiki/QS_World_University_Rankings\n", + "Getting /wiki/QS_World_University_Rankings\n", + "Getting /wiki/Wayback_Machine\n", + "Getting /wiki/USC_School_of_Architecture\n", + "Getting /wiki/List_of_University_of_San_Carlos_alumni\n", + "Getting /wiki/University_of_San_Carlos_Museum\n", + "Getting /wiki/University_of_San_Carlos_Stadium\n", + "Getting /wiki/Wayback_Machine\n", + "Getting /wiki/The_Philippine_STAR\n", + "Getting /wiki/Facebook\n", + "Getting /wiki/Cebu_City\n", + "Getting /wiki/Queen_City_of_the_South\n", + "Getting /wiki/History_of_Cebu_City\n", + "Getting /wiki/Metro_Cebu\n", + "Getting /wiki/List_of_people_from_Cebu\n", + "Getting /wiki/List_of_television_and_radio_stations_in_Metro_Cebu\n", + "Getting /wiki/List_of_tallest_buildings_in_Metro_Cebu\n", + "Getting /wiki/Transportation_in_Cebu_City\n", + "Getting /wiki/Barangays_of_Cebu_City\n", + "Getting /wiki/Mayor_of_Cebu_City\n", + "Getting /wiki/Cebu_City_Hall\n", + "Getting /wiki/Cebu_City_Council\n", + "Getting /wiki/Cebu_City_Police_Office\n", + "Getting /wiki/Legislative_districts_of_Cebu_City\n", + "Getting /wiki/Cebu_City%27s_1st_congressional_district\n", + "Getting /wiki/Cebu_City%27s_2nd_congressional_district\n", + "Getting /wiki/Seal_of_Cebu_City\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Getting /wiki/Basilica_del_Santo_Ni%C3%B1o\n", + "Getting /wiki/Carbon_Market\n", + "Getting /wiki/Senior_Citizens%27_Park_Chapel\n", + "Getting /wiki/Cebu_City_Sports_Complex\n", + "Getting /wiki/Cebu_Metropolitan_Cathedral\n", + "Getting /wiki/Cebu_Ocean_Park\n", + "Getting /wiki/Cebu_Provincial_Capitol\n", + "Getting /wiki/Cebu_Taoist_Temple\n", + "Getting /wiki/Colon_Street\n", + "Getting /wiki/Magellan%27s_Cross_Pavilion\n", + "Getting /wiki/Museo_Sugbo\n", + "Getting /wiki/Pasil_Fish_Market\n", + "Getting /wiki/Plaza_Independencia_(Cebu_City)\n", + "Getting /wiki/Fort_San_Pedro\n", + "Getting /wiki/South_Road_Properties\n", + "Getting /wiki/Cebu_City_Public_Library\n", + "Getting /wiki/List_of_colleges_and_universities_in_Metro_Cebu\n", + "Getting /wiki/Cebu_Institute_of_Technology_%E2%80%93_University\n", + "Getting /wiki/Cebu_Normal_University\n", + "Getting /wiki/Cebu_Technological_University\n", + "Getting /wiki/Southwestern_University_(Philippines)\n", + "Getting /wiki/University_of_Cebu\n", + "Getting /wiki/University_of_San_Jose%E2%80%93Recoletos\n", + "Getting /wiki/University_of_Southern_Philippines_Foundation\n", + "Getting /wiki/University_of_the_Philippines_Cebu\n", + "Getting /wiki/University_of_the_Visayas\n", + "Getting /wiki/Cebuano_language\n", + "Getting /wiki/Roman_Catholic_Archdiocese_of_Cebu\n", + "Getting /wiki/Sinulog\n", + "Getting /wiki/Transportation_in_Cebu_City\n", + "Getting /wiki/List_of_streets_in_Cebu#Cebu_City\n", + "Getting /wiki/Cebu_North_Bus_Terminal\n", + "Getting /wiki/Cebu_South_Bus_Terminal\n", + "Getting /wiki/Mactan%E2%80%93Cebu_International_Airport\n", + "Getting /wiki/Port_of_Cebu\n", + "Getting /wiki/Cebu_Bus_Rapid_Transit_System\n", + "Getting /wiki/Cebu_Light_Rail_Transit_System\n", + "Getting /wiki/Central_Visayas\n", + "Getting /wiki/Philippines\n", + "Getting /wiki/Cebu\n", + "Getting /wiki/Cebu_Normal_University\n", + "Getting /wiki/Cebu_Technological_University\n", + "Getting /wiki/University_of_the_Philippines_Cebu\n", + "Getting /wiki/University_of_San_Jose%E2%80%93Recoletos\n", + "Getting /wiki/Cebu_Doctors%27_University\n", + "Getting /wiki/Cebu_Institute_of_Technology_%E2%80%93_University\n", + "Getting /wiki/Southwestern_University_(Philippines)\n", + "Getting /wiki/University_of_Cebu\n", + "Getting /wiki/University_of_Southern_Philippines_Foundation\n", + "Getting /wiki/University_of_the_Visayas\n", + "Getting /wiki/Lapu-Lapu_City_College\n", + "Getting /wiki/Mandaue_City_College\n", + "Getting /wiki/Colegio_de_San_Ildefonso\n", + "Getting /wiki/De_La_Salle_Andres_Soriano_Memorial_College\n", + "Getting /wiki/Saint_Theresa%27s_College_of_Cebu\n", + "Getting /wiki/Don_Bosco_Technical_College%E2%80%93Cebu\n", + "Getting /wiki/Colegio_de_la_Inmaculada_Concepcion_%E2%80%93_Cebu\n", + "Getting /wiki/Asian_College_of_Technology\n", + "Getting /wiki/Bantayan_Southern_Institute\n", + "Getting /wiki/Cebu_Eastern_College\n", + "Getting /wiki/Cebu_Institute_of_Medicine\n", + "Getting /wiki/College_of_Technological_Sciences%E2%80%93Cebu\n", + "Getting /wiki/Mandaue_City_College_(Paulus_Ca%C3%B1ete_College)\n", + "Getting /wiki/Matias_H._Aznar_Memorial_College_of_Medicine\n", + "Getting /wiki/Salazar_Colleges_of_Science_and_Institute_of_Technology\n", + "Getting /wiki/Velez_College\n", + "Getting /wiki/Higher_education_in_the_Philippines\n", + "Getting /wiki/Divine_Word_Missionaries\n", + "Getting /wiki/Philippines\n", + "Getting /wiki/Divine_Word_College_of_Bangued\n", + "Getting /wiki/Divine_Word_College_of_Calapan\n", + "Getting /wiki/Divine_Word_College_of_Laoag\n", + "Getting /wiki/Divine_Word_College_of_Legazpi\n", + "Getting /wiki/Divine_Word_College_of_San_Jose\n", + "Getting /wiki/Divine_Word_College_of_Urdaneta\n", + "Getting /wiki/Divine_Word_College_of_Vigan\n", + "Getting /wiki/Holy_Name_University\n", + "Getting /wiki/Divine_Word_University_of_Tacloban\n", + "Getting /wiki/Divine_Word_Academy_of_Dagupan\n", + "Getting /wiki/Christ_the_King_Mission_Seminary\n", + "Getting /wiki/Divine_Word_Mission_Seminary\n", + "Getting /wiki/Divine_Word_Seminary\n", + "Getting /wiki/University_of_Santiago_de_Compostela\n", + "Already fetched /wiki/Main_Page\n", + "Already fetched /wiki/Main_Page\n", + "Already fetched /wiki/University_of_Santiago_de_Compostela\n", + "Already fetched /wiki/University_of_Santiago_de_Compostela\n", + "Already fetched /wiki/University_of_Santiago_de_Compostela\n", + "Getting /wiki/Latin_language\n", + "Getting /wiki/Public_university\n", + "Getting /wiki/Compostela_Group_of_Universities\n", + "Getting /wiki/Rector_(academia)\n", + "Getting /wiki/Undergraduate_education\n", + "Getting /wiki/Postgraduate_education\n", + "Getting /wiki/Doctorate\n", + "Getting /wiki/Santiago_de_Compostela\n", + "Getting /wiki/Galicia_(Spain)\n", + "Getting /wiki/Spain\n", + "Getting /wiki/Geographic_coordinate_system\n", + "Getting /wiki/Santiago_de_Compostela\n", + "Getting /wiki/Lugo\n", + "Getting /wiki/Galician_language\n", + "Getting /wiki/Spanish_language\n", + "Getting /wiki/Public_university\n", + "Getting /wiki/Santiago_de_Compostela\n", + "Getting /wiki/Galicia_(Spain)\n", + "Getting /wiki/Spain\n", + "Getting /wiki/Lugo\n", + "Getting /wiki/Galicia_(Spain)\n", + "Getting /wiki/List_of_oldest_universities_in_continuous_operation\n", + "Getting /wiki/Pope_Julius_II\n", + "Getting /wiki/Papal_bull\n", + "Getting /wiki/Clement_VII\n", + "Getting /wiki/Cardinal_(Catholicism)\n", + "Getting /wiki/Juan_%C3%81lvarez_de_Toledo\n", + "Getting /wiki/Ministry_of_Education_(Spain)\n", + "Getting /wiki/Complutense_University_of_Madrid\n", + "Getting /wiki/Monasterio_de_San_Mart%C3%ADn_Pinario\n", + "Getting /wiki/Pope_Julius_II\n", + "Getting /wiki/Papal_bull\n", + "Getting /wiki/Alonso_III_de_Fonseca\n", + "Getting /wiki/Alonso_III_de_Fonseca\n", + "Getting /wiki/Archbishop_of_Santiago_de_Compostela\n", + "Getting /wiki/Polymath\n", + "Getting /wiki/Erasmus\n", + "Already fetched /wiki/Rotterdam\n", + "Getting /wiki/Irish_College\n", + "Getting /wiki/Charles_III_of_Spain\n", + "Already fetched /wiki/English_language\n", + "Getting /wiki/Jesuits\n", + "Getting /wiki/Spanish_Civil_War\n", + "Getting /wiki/A_Coru%C3%B1a\n", + "Getting /wiki/Vigo\n", + "Getting /wiki/School_of_Naval_and_Industrial_Engineers\n", + "Getting /wiki/Ferrol,_Spain\n", + "Getting /wiki/Francisco_Franco\n", + "Getting /wiki/Madrid\n", + "Getting /wiki/University_of_A_Coru%C3%B1a\n", + "Getting /wiki/Spanish_Constitution_of_1978\n", + "Getting /wiki/Felipe_Gonz%C3%A1lez_M%C3%A1rquez\n", + "Getting /wiki/Spanish_Socialist_Worker%E2%80%99s_Party\n", + "Getting /wiki/Autonomous_communities_of_Spain\n", + "Getting /wiki/University_of_A_Coru%C3%B1a\n", + "Getting /wiki/University_of_Vigo\n", + "Getting /wiki/Ourense\n", + "Getting /wiki/Pontevedra\n", + "Getting /wiki/Program_ConCiencia\n", + "Getting /wiki/Program_ConCiencia\n", + "Getting /wiki/Fonseca_Prize\n", + "Getting /wiki/Faculty_(division)\n", + "Getting /wiki/Biology\n", + "Getting /wiki/Chemistry\n", + "Getting /wiki/Communication_Sciences\n", + "Getting /wiki/Economics\n", + "Getting /wiki/Business_Administration\n", + "Getting /wiki/Education_studies\n", + "Getting /wiki/Geography\n", + "Getting /wiki/History\n", + "Getting /wiki/Law\n", + "Getting /wiki/Mathematics\n", + "Getting /wiki/Medicine\n", + "Getting /wiki/Dentistry\n", + "Getting /wiki/Pharmacy\n", + "Getting /wiki/Philology\n", + "Getting /wiki/Philosophy\n", + "Getting /wiki/Physics\n", + "Getting /wiki/Social_Science\n", + "Getting /wiki/Psychology\n", + "Getting /wiki/Veterinary_medicine\n", + "Getting /wiki/Engineering\n", + "Getting /wiki/Labour_Relations\n", + "Getting /wiki/Optics\n", + "Getting /wiki/Optometry\n", + "Getting /wiki/Nursing\n", + "Getting /wiki/Institute_of_Agricultural_Biodiversity_and_Rural_Development\n", + "Getting /wiki/Lugo\n", + "Getting /wiki/Xunta_de_Galicia\n", + "Getting /wiki/Mariano_Rajoy\n", + "Getting /wiki/Prime_Minister_of_Spain\n", + "Getting /wiki/People%27s_Party_(Spain)\n", + "Getting /wiki/Francisco_V%C3%A1zquez_V%C3%A1zquez\n", + "Getting /wiki/Holy_See\n", + "Getting /wiki/A_Coru%C3%B1a\n", + "Getting /wiki/C%C3%A1ndido_Conde-Pumpido\n", + "Getting /wiki/Elena_Espinosa\n", + "Getting /wiki/Ministry_of_Agriculture,_Food_and_Environment_(Spain)\n", + "Getting /wiki/Francisco_Caama%C3%B1o_Dom%C3%ADnguez\n", + "Getting /wiki/Ministry_of_Justice_(Spain)\n", + "Getting /wiki/C%C3%A9sar_Antonio_Molina\n", + "Getting /wiki/Ministry_of_Culture_(Spain)\n", + "Getting /wiki/Jos%C3%A9_Manuel_Romay_Beccar%C3%ADa\n", + "Getting /wiki/Ministry_of_Health_(Spain)\n", + "Getting /wiki/Abel_Caballero\n", + "Getting /wiki/Ministry_of_Public_Works_and_Transport_(Spain)\n", + "Getting /wiki/Vigo\n", + "Getting /wiki/Alberto_N%C3%BA%C3%B1ez_Feij%C3%B3o\n", + "Getting /wiki/Xunta_de_Galicia\n", + "Getting /wiki/Emilio_P%C3%A9rez_Touri%C3%B1o\n", + "Getting /wiki/Xunta_de_Galicia\n", + "Getting /wiki/Manuel_Fraga\n", + "Getting /wiki/Xunta_de_Galicia\n", + "Getting /wiki/People%27s_Party_(Spain)\n", + "Getting /wiki/Fernando_Gonz%C3%A1lez_Laxe\n", + "Getting /wiki/Xunta_de_Galicia\n", + "Getting /wiki/Gerardo_Fern%C3%A1ndez_Albor\n", + "Getting /wiki/Xunta_de_Galicia\n", + "Getting /wiki/Mar%C3%ADa_de_los_%C3%81ngeles_Alvari%C3%B1o_Gonz%C3%A1lez\n", + "Getting /wiki/Oceanographer\n", + "Getting /wiki/Biologist\n", + "Getting /wiki/Royal_Navy\n", + "Getting /wiki/Spanish_Navy\n", + "Getting /wiki/History_of_research_ships\n", + "Getting /wiki/Antonia_Ferr%C3%ADn_Moreiras\n", + "Getting /wiki/Jos%C3%A9_Daporta_Goz%C3%A1lez\n", + "Getting /wiki/Hygiene\n", + "Getting /wiki/Microbiology\n", + "Getting /wiki/Fine_arts\n", + "Getting /wiki/Alfonso_Daniel_Rodr%C3%ADguez_Castelao\n", + "Getting /wiki/Physician\n", + "Getting /wiki/Xos%C3%A9_Lu%C3%ADs_M%C3%A9ndez_Ferr%C3%ADn\n", + "Getting /wiki/Philology\n", + "Getting /wiki/Gonzalo_Torrente_Ballester\n", + "Getting /wiki/Xos%C3%A9_Manuel_Beiras\n", + "Getting /wiki/Otero_Pedrayo\n", + "Getting /wiki/Geography\n", + "Getting /wiki/Ricardo_Carvalho_Calero\n", + "Getting /wiki/Galician_Language\n", + "Getting /wiki/Galician_literature\n", + "Getting /wiki/F%C3%A1tima_Rodr%C3%ADguez\n", + "Getting /wiki/Dar%C3%ADo_Villanueva\n", + "Getting /wiki/Real_Academia_Espa%C3%B1ola\n", + "Getting /wiki/Darysabel_Isales\n", + "Getting /wiki/List_of_early_modern_universities_in_Europe\n", + "Getting /wiki/List_of_oldest_universities_in_continuous_operation\n", + "Getting /wiki/University_of_A_Coru%C3%B1a\n", + "Getting /wiki/University_of_Vigo\n", + "Getting /wiki/San_Clemente_Dormitory\n", + "Getting /wiki/Santiago_de_Compostela\n", + "Getting /wiki/Academic_Awards_in_Spain\n", + "Getting /wiki/Fonseca_Prize\n", + "Getting /wiki/Encyclop%C3%A6dia_Britannica_Eleventh_Edition\n", + "Getting /wiki/Way_of_St._James\n", + "Getting /wiki/Catholic_Encyclopedia\n", + "Getting /wiki/University_of_A_Coru%C3%B1a\n", + "Getting /wiki/University_of_Vigo\n", + "Getting /wiki/List_of_universities_in_Spain\n", + "Getting /wiki/University_of_the_Balearic_Islands\n", + "Getting /wiki/University_of_the_Basque_Country\n", + "Getting /wiki/University_of_Cantabria\n", + "Getting /wiki/University_of_Castilla%E2%80%93La_Mancha\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Getting /wiki/University_of_Extremadura\n", + "Getting /wiki/University_of_La_Rioja\n", + "Getting /wiki/Public_University_of_Navarre\n", + "Getting /wiki/University_of_Oviedo\n", + "Getting /wiki/University_of_Zaragoza\n", + "Getting /wiki/Andalusia\n", + "Getting /wiki/University_of_Almer%C3%ADa\n", + "Getting /wiki/University_of_C%C3%A1diz\n", + "Getting /wiki/University_of_C%C3%B3rdoba_(Spain)\n", + "Getting /wiki/University_of_Granada\n", + "Getting /wiki/University_of_Huelva\n", + "Getting /wiki/International_University_of_Andaluc%C3%ADa\n", + "Getting /wiki/University_of_Ja%C3%A9n\n", + "Getting /wiki/University_of_M%C3%A1laga\n", + "Getting /wiki/Pablo_de_Olavide_University\n", + "Getting /wiki/University_of_Seville\n", + "Getting /wiki/Castile_and_Le%C3%B3n\n", + "Getting /wiki/University_of_Burgos\n", + "Getting /wiki/University_of_Le%C3%B3n\n", + "Getting /wiki/University_of_Salamanca\n", + "Getting /wiki/University_of_Valladolid\n", + "Getting /wiki/Canary_Islands\n", + "Getting /wiki/University_of_La_Laguna\n", + "Getting /wiki/University_of_Las_Palmas_de_Gran_Canaria\n", + "Getting /wiki/Catalonia\n", + "Getting /wiki/Autonomous_University_of_Barcelona\n", + "Getting /wiki/University_of_Barcelona\n", + "Getting /wiki/University_of_Girona\n", + "Getting /wiki/University_of_Lleida\n", + "Getting /wiki/Open_University_of_Catalonia\n", + "Getting /wiki/Polytechnic_University_of_Catalonia\n", + "Getting /wiki/Pompeu_Fabra_University\n", + "Getting /wiki/Rovira_i_Virgili_University\n", + "Getting /wiki/Galicia_(Spain)\n", + "Getting /wiki/University_of_A_Coru%C3%B1a\n", + "Getting /wiki/University_of_Vigo\n", + "Getting /wiki/Community_of_Madrid\n", + "Getting /wiki/University_of_Alcal%C3%A1\n", + "Getting /wiki/Autonomous_University_of_Madrid\n", + "Getting /wiki/Charles_III_University_of_Madrid\n", + "Getting /wiki/Complutense_University_of_Madrid\n", + "Getting /wiki/Men%C3%A9ndez_Pelayo_International_University\n", + "Getting /wiki/National_University_of_Distance_Education\n", + "Getting /wiki/King_Juan_Carlos_University\n", + "Getting /wiki/Technical_University_of_Madrid\n", + "Getting /wiki/Region_of_Murcia\n", + "Getting /wiki/University_of_Murcia\n", + "Getting /wiki/Universidad_Polit%C3%A9cnica_de_Cartagena\n", + "Getting /wiki/Valencian_Community\n", + "Getting /wiki/University_of_Alicante\n", + "Getting /wiki/Jaume_I_University\n", + "Getting /wiki/Miguel_Hern%C3%A1ndez_University_of_Elche\n", + "Getting /wiki/Technical_University_of_Valencia\n", + "Getting /wiki/University_of_Valencia\n", + "Getting /wiki/Universidad_Camilo_Jos%C3%A9_Cela\n", + "Getting /wiki/Universidad_Isabel_I\n", + "Getting /wiki/European_University_of_the_Atlantic\n", + "Getting /wiki/European_University_of_Madrid\n", + "Getting /wiki/Francisco_de_Vitoria_University\n", + "Getting /wiki/IE_University\n", + "Getting /wiki/International_University_of_La_Rioja\n", + "Getting /wiki/Miguel_de_Cervantes_European_University\n", + "Getting /wiki/Mondragon_University\n", + "Getting /wiki/Ramon_Llull_University\n", + "Getting /wiki/Valencian_International_University\n", + "Getting /wiki/University_of_Vic_-_Central_University_of_Catalonia\n", + "Getting /wiki/Universidad_Europea_de_Canarias\n", + "Getting /wiki/Abat_Oliba_CEU_University\n", + "Getting /wiki/Catholic_University_of_%C3%81vila\n", + "Getting /wiki/CEU_Cardinal_Herrera_University\n", + "Getting /wiki/Universidad_CEU_San_Pablo\n", + "Getting /wiki/Comillas_Pontifical_University\n", + "Getting /wiki/University_of_Deusto\n", + "Getting /wiki/Loyola_University_Andalusia\n", + "Getting /wiki/University_of_Navarra\n", + "Getting /wiki/Pontifical_University_of_Salamanca\n", + "Getting /wiki/Universidad_Cat%C3%B3lica_San_Antonio_de_Murcia\n", + "Getting /wiki/Valencia_Catholic_University_Saint_Vincent_Martyr\n", + "Getting /wiki/Compostela_Group_of_Universities\n", + "Getting /wiki/Adam_Mickiewicz_University_in_Pozna%C5%84\n", + "Getting /wiki/Centro_de_Ense%C3%B1anza_T%C3%A9cnica_y_Superior\n", + "Getting /wiki/Columbus_University_(Panama)\n", + "Getting /wiki/ESAN_University\n", + "Getting /wiki/Grigol_Robakidze_University\n", + "Getting /wiki/Ilia_State_University\n", + "Getting /wiki/Jaume_I_University\n", + "Getting /wiki/Karlstad_University\n", + "Getting /wiki/Kazimieras_Simonavi%C4%8Dius_University\n", + "Getting /wiki/King_Juan_Carlos_University\n", + "Getting /wiki/Kore_University_of_Enna\n", + "Getting /wiki/Masaryk_University\n", + "Getting /wiki/Monterrey_Institute_of_Technology_and_Higher_Education\n", + "Getting /wiki/Federico_Villarreal_National_University\n", + "Getting /wiki/National_University_of_San_Marcos\n", + "Getting /wiki/Pan-European_University\n", + "Getting /wiki/Peruvian_University_of_Applied_Sciences\n", + "Getting /wiki/University_of_Marburg\n", + "Getting /wiki/Pontifical_Catholic_University_of_Peru\n", + "Getting /wiki/S%C3%A3o_Paulo_State_University\n", + "Getting /wiki/Santo_Domingo_Institute_of_Technology\n", + "Getting /wiki/Technical_University_of_Madrid\n", + "Getting /wiki/Anahuac_University_Network\n", + "Getting /wiki/Universidad_La_Salle_M%C3%A9xico\n", + "Getting /wiki/Universidad_Polit%C3%A9cnica_de_Cartagena\n", + "Getting /wiki/Universit%C3%A0_telematica_internazionale_Uninettuno\n", + "Getting /wiki/University_of_A_Coru%C3%B1a\n", + "Getting /wiki/University_of_Almer%C3%ADa\n", + "Getting /wiki/University_of_Burgos\n", + "Getting /wiki/University_of_C%C3%A1diz\n", + "Getting /wiki/University_of_Extremadura\n", + "Getting /wiki/University_of_Fribourg\n", + "Getting /wiki/University_of_Guadalajara\n", + "Getting /wiki/University_of_La_Laguna\n", + "Getting /wiki/University_of_Las_Palmas_de_Gran_Canaria\n", + "Getting /wiki/University_of_Le%C3%B3n\n", + "Getting /wiki/University_of_Lima\n", + "Getting /wiki/University_of_Lleida\n", + "Getting /wiki/University_of_%C5%81%C3%B3d%C5%BA\n", + "Getting /wiki/University_of_M%C3%A1laga\n", + "Getting /wiki/University_of_Malta\n", + "Getting /wiki/University_of_Minho\n", + "Getting /wiki/University_of_Monterrey\n", + "Getting /wiki/University_of_Nantes\n", + "Getting /wiki/University_of_Oviedo\n", + "Getting /wiki/University_of_P%C3%A9cs\n", + "Getting /wiki/University_of_Piura\n", + "Getting /wiki/University_of_Regensburg\n", + "Getting /wiki/University_of_Salamanca\n", + "Getting /wiki/University_of_Seville\n", + "Getting /wiki/University_of_Surabaya\n", + "Getting /wiki/University_of_the_Basque_Country\n", + "Getting /wiki/University_of_Tr%C3%A1s-os-Montes_and_Alto_Douro\n", + "Getting /wiki/University_of_Valencia\n", + "Getting /wiki/University_of_Vigo\n", + "Getting /wiki/University_of_Worcester\n", + "Getting /wiki/University_of_Zaragoza\n", + "Getting /wiki/Yanka_Kupala_State_University_of_Grodno\n", + "Getting /wiki/Zhejiang_Wanli_University\n", + "Getting /wiki/Consortium_for_North_American_Higher_Education_Collaboration\n", + "Getting /wiki/Euro-Mediterranean_University_of_Slovenia\n", + "Getting /wiki/HACU\n", + "Getting /wiki/Quacquarelli_Symonds\n", + "Getting /wiki/Scholars_at_Risk\n", + "Getting /wiki/University_of_Science_and_Culture\n", + "Already fetched /wiki/Main_Page\n", + "Already fetched /wiki/Main_Page\n", + "Already fetched /wiki/University_of_Science_and_Culture\n", + "Already fetched /wiki/University_of_Science_and_Culture\n", + "Already fetched /wiki/University_of_Science_and_Culture\n", + "Getting /wiki/Geographic_coordinate_system\n", + "Getting /wiki/Private_university\n", + "Getting /wiki/Tehran\n", + "Getting /wiki/Tehran_province\n", + "Getting /wiki/Iran\n", + "Getting /wiki/Iran\n", + "Getting /wiki/Tehran\n", + "Getting /wiki/Iran\n", + "Getting /wiki/Part-time_job\n", + "Getting /wiki/Entrance_examination\n", + "Getting /wiki/Law\n", + "Getting /wiki/Software_Engineering\n", + "Getting /wiki/Electrical_Engineering\n", + "Getting /wiki/Civil_engineering\n", + "Getting /wiki/Statistics\n", + "Getting /wiki/Management\n", + "Getting /wiki/Industrial_Engineering\n", + "Getting /wiki/Accounting\n", + "Getting /wiki/Architecture\n", + "Getting /wiki/Painting\n", + "Getting /wiki/Photography\n", + "Getting /wiki/Graphics\n", + "Getting /wiki/Safety_engineering\n", + "Getting /wiki/Research_institute\n", + "Getting /wiki/Higher_education\n", + "Getting /wiki/Human_resources\n", + "Getting /wiki/Trustee\n", + "Getting /wiki/Self-esteem\n", + "Getting /wiki/Isfahan\n", + "Getting /wiki/Rasht\n", + "Getting /wiki/Hamedan\n", + "Getting /wiki/Tehran\n", + "Getting /wiki/Kashmar\n", + "Getting /wiki/List_of_colleges_and_universities_in_Tehran\n", + "Getting /wiki/Public_university\n", + "Getting /wiki/Ministry_of_Science,_Research_and_Technology_(Iran)\n", + "Getting /wiki/Allameh_Tabatabaei_University\n", + "Getting /wiki/Alzahra_University\n", + "Getting /wiki/Amirkabir_University_of_Technology\n", + "Getting /wiki/Iran_University_of_Science_and_Technology\n", + "Getting /wiki/Kharazmi_University\n", + "Getting /wiki/K.N.Toosi_University_of_Technology\n", + "Getting /wiki/Shahid_Beheshti_University\n", + "Getting /wiki/Sharif_University_of_Technology\n", + "Getting /wiki/Tarbiat_Modares_University\n", + "Getting /wiki/Tehran_University_of_Art\n", + "Getting /wiki/University_of_Tehran\n", + "Getting /wiki/Ministry_of_Science,_Research_and_Technology_(Iran)\n", + "Getting /wiki/University_system\n", + "Getting /wiki/Payame_Noor_University\n", + "Getting /wiki/Technical_and_Vocational_University\n", + "Getting /wiki/University_of_Applied_Science_and_Technology\n", + "Getting /wiki/Ministry_of_Health_and_Medical_Education\n", + "Getting /wiki/Shahid_Beheshti_University_of_Medical_Sciences\n", + "Getting /wiki/Iran_University_of_Medical_Sciences\n", + "Getting /wiki/Tehran_University_of_Medical_Sciences\n", + "Getting /wiki/University_of_Social_Welfare_and_Rehabilitation_Sciences\n", + "Getting /wiki/Farhangian_University\n", + "Getting /wiki/Shahid_Rajaee_Teacher_Training_University\n", + "Getting /wiki/Malek_Ashtar_University_of_Technology\n", + "Getting /wiki/Amin_Police_University\n", + "Getting /wiki/Imam_Hossein_University\n", + "Getting /wiki/Baqiyatallah_University_of_Medical_Sciences\n", + "Getting /wiki/AJA_University_of_Medical_Sciences\n", + "Getting /wiki/Shahed_University\n", + "Getting /wiki/Civil_Aviation_Technology_College\n", + "Getting /wiki/Iran_Broadcasting_University\n", + "Getting /wiki/University_of_Judicial_Sciences_and_Administrative_Services\n", + "Getting /wiki/Private_university\n", + "Getting /wiki/Islamic_Azad_University\n", + "Getting /wiki/Islamic_Azad_University,_Science_and_Research_Branch,_Tehran\n", + "Getting /wiki/Islamic_Azad_University_Central_Tehran_Branch\n", + "Getting /wiki/Islamic_Azad_University_South_Tehran_Branch\n", + "Getting /wiki/Islamic_Azad_University_North_Tehran_Branch\n", + "Getting /wiki/Islamic_Azad_University_Medical_Branch_of_Tehran\n", + "Getting /wiki/Islamic_Azad_University,_West_Tehran_Branch\n", + "Getting /wiki/Imam_Sadiq_University\n", + "Getting /wiki/Soore_University\n", + "Getting /wiki/University_Senior_College\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Already fetched /wiki/Main_Page\n", + "Already fetched /wiki/Main_Page\n", + "Already fetched /wiki/University_Senior_College\n", + "Already fetched /wiki/University_Senior_College\n", + "Already fetched /wiki/University_Senior_College\n", + "Getting /wiki/University_of_Adelaide\n", + "Getting /wiki/Adelaide\n", + "Getting /wiki/South_Australia\n", + "Getting /wiki/Private_school\n", + "Getting /wiki/Independent_school\n", + "Getting /wiki/Co-educational_school\n", + "Getting /wiki/Secondary_school\n", + "Getting /wiki/International_school\n", + "Getting /wiki/Co-educational\n", + "Getting /wiki/Independent_school\n", + "Getting /wiki/High_school\n", + "Getting /wiki/University_of_Adelaide\n", + "Getting /wiki/South_Australia\n", + "Getting /wiki/The_University_of_Adelaide\n", + "Getting /wiki/University\n", + "Getting /wiki/Adelaide\n", + "Getting /wiki/University_of_Adelaide\n", + "Getting /wiki/School_uniform\n", + "Getting /wiki/Central_business_district\n", + "Getting /wiki/Tertiary_Entrance_Ranking\n", + "Getting /wiki/South_Australian_Certificate_of_Education\n", + "Getting /wiki/Scholarships\n", + "Getting /wiki/Hugh_Sheridan\n", + "Getting /wiki/Murali_K._Thalluri\n", + "Getting /wiki/Jake_Haberfield\n", + "Getting /wiki/Osama_Malik\n", + "Getting /wiki/Marielle_Smith\n", + "Getting /wiki/Geographic_coordinate_system\n", + "Getting /wiki/University_of_South_China\n", + "Already fetched /wiki/Main_Page\n", + "Already fetched /wiki/Main_Page\n", + "Already fetched /wiki/University_of_South_China\n", + "Already fetched /wiki/University_of_South_China\n", + "Already fetched /wiki/University_of_South_China\n", + "Getting /wiki/Nanhua_University\n", + "Already fetched /wiki/USC_(disambiguation)\n", + "Getting /wiki/Chinese_language\n", + "Getting /wiki/Public_University\n", + "Getting /wiki/University_president\n", + "Getting /wiki/Postgraduate_education\n", + "Getting /wiki/Hengyang\n", + "Getting /wiki/Hunan\n", + "Getting /wiki/Geographic_coordinate_system\n", + "Getting /wiki/Urban_area\n", + "Getting /wiki/Traditional_Chinese_characters\n", + "Getting /wiki/Simplified_Chinese_characters\n", + "Getting /wiki/Standard_Chinese\n", + "Getting /wiki/Hanyu_Pinyin\n", + "Getting /wiki/Simplified_Chinese_characters\n", + "Getting /wiki/University\n", + "Getting /wiki/Hengyang\n", + "Getting /wiki/Hunan\n", + "Getting /wiki/Best_Chinese_Universities_Ranking\n", + "Getting /wiki/Shanghai_Ranking\n", + "Getting /wiki/Commission_for_Science,_Technology_and_Industry_for_National_Defense\n", + "Getting /wiki/Chinese_People%27s_Liberation_Army\n", + "Getting /wiki/Undergraduate\n", + "Getting /wiki/Science\n", + "Getting /wiki/Engineering\n", + "Getting /wiki/Medicine\n", + "Getting /wiki/Law\n", + "Getting /wiki/Liberal_arts\n", + "Getting /wiki/Economics\n", + "Getting /wiki/Management\n", + "Getting /wiki/Education\n", + "Getting /wiki/Government_of_the_People%27s_Republic_of_China\n", + "Getting /wiki/Best_Chinese_Universities_Ranking\n", + "Getting /wiki/Shanghai_Ranking\n", + "Getting /wiki/SCImago_Institutions_Rankings\n", + "Getting /wiki/Best_Chinese_Universities_Ranking\n", + "Getting /wiki/Shanghai_Ranking\n", + "Getting /wiki/U.S._News_%26_World_Report_Best_Global_University_Ranking\n", + "Getting /wiki/Clinical_Medicine\n", + "Getting /wiki/Center_for_World_University_Rankings\n", + "Getting /wiki/Times_Higher_Education_World_University_Rankings\n", + "Getting /wiki/Engineering_and_Technology\n", + "Getting /wiki/Physical_Science\n", + "Getting /wiki/Life_Science\n", + "Getting /wiki/Times_Higher_Education_World_University_Rankings#Subject\n", + "Getting /wiki/Times_Higher_Education_World_University_Rankings\n", + "Getting /wiki/Times_Higher_Education_World_University_Rankings#Asia\n", + "Getting /wiki/List_of_universities_and_colleges_in_Hunan\n", + "Getting /wiki/Hunan\n", + "Getting /wiki/People%27s_Liberation_Army\n", + "Getting /wiki/National_University_of_Defense_Technology\n", + "Getting /wiki/National_university\n", + "Getting /wiki/Central_South_University\n", + "Getting /wiki/Hunan_University\n", + "Getting /wiki/Changsha\n", + "Getting /wiki/Central_South_University_of_Forestry_and_Technology\n", + "Getting /wiki/Central_South_University\n", + "Getting /wiki/Changsha_Aeronautical_Vocational_and_Technical_College\n", + "Getting /wiki/Changsha_Medical_University\n", + "Getting /wiki/Changsha_Normal_University\n", + "Getting /wiki/Changsha_Social_Work_College\n", + "Getting /wiki/Changsha_University_of_Science_and_Technology\n", + "Getting /wiki/Changsha_University\n", + "Getting /wiki/Hunan_Agricultural_University\n", + "Getting /wiki/Hunan_First_Normal_University\n", + "Getting /wiki/Hunan_International_Economics_University\n", + "Getting /wiki/Hunan_Normal_University\n", + "Getting /wiki/Hunan_Police_Academy\n", + "Getting /wiki/Hunan_University_of_Finance_and_Economics\n", + "Getting /wiki/Hunan_University_of_Technology_and_Commerce\n", + "Getting /wiki/Hunan_University_of_Chinese_Medicine\n", + "Getting /wiki/Hunan_University\n", + "Getting /wiki/Hunan_Women%27s_University\n", + "Getting /wiki/Zhuzhou\n", + "Getting /wiki/Hunan_University_of_Technology\n", + "Getting /wiki/Xiangtan\n", + "Getting /wiki/Xiangtan_University\n", + "Getting /wiki/Hunan_University_of_Science_and_Technology\n", + "Getting /wiki/Hunan_Institute_of_Engineering\n", + "Getting /wiki/Hengyang\n", + "Getting /wiki/Hengyang_Normal_University\n", + "Getting /wiki/Hunan_Institute_of_Technology\n", + "Getting /wiki/Shaoyang\n", + "Getting /wiki/Shaoyang_University\n", + "Getting /wiki/Yueyang\n", + "Getting /wiki/Hunan_Institute_of_Science_and_Technology\n", + "Getting /wiki/Changde\n", + "Getting /wiki/Hunan_University_of_Arts_and_Science\n", + "Getting /wiki/Yiyang\n", + "Getting /wiki/Hunan_City_University\n", + "Getting /wiki/Chenzhou\n", + "Getting /wiki/Xiangnan_University\n", + "Getting /wiki/Yongzhou\n", + "Getting /wiki/Hunan_University_of_Science_and_Engineering\n", + "Getting /wiki/Huaihua\n", + "Getting /wiki/Huaihua_University\n", + "Getting /wiki/Loudi\n", + "Getting /wiki/Hunan_University_of_Humanities,_Science_and_Technology\n", + "Getting /wiki/Xiangxi_Tujia_and_Miao_Autonomous_Prefecture\n", + "Getting /wiki/Jishou_University\n", + "Getting /wiki/List_of_universities_in_China\n", + "Getting /wiki/University_of_the_Southern_Caribbean\n", + "Already fetched /wiki/Main_Page\n", + "Already fetched /wiki/Main_Page\n", + "Already fetched /wiki/University_of_the_Southern_Caribbean\n", + "Already fetched /wiki/University_of_the_Southern_Caribbean\n", + "Already fetched /wiki/University_of_the_Southern_Caribbean\n", + "Getting /wiki/Private_University\n", + "Getting /wiki/University_president\n", + "Getting /wiki/Maracas_Valley\n", + "Getting /wiki/Trinidad_and_Tobago\n", + "Getting /wiki/School_colors\n", + "Getting /wiki/Green\n", + "Getting /wiki/Gold_(color)\n", + "Getting /wiki/Seventh-day_Adventist_Church\n", + "Getting /wiki/History_of_the_Seventh-day_Adventist_Church\n", + "Getting /wiki/Christianity\n", + "Getting /wiki/Protestantism\n", + "Getting /wiki/Millerism\n", + "Getting /wiki/Great_Disappointment\n", + "Getting /wiki/1888_Minneapolis_General_Conference_(Adventist)\n", + "Getting /wiki/Seventh-day_Adventist_theology\n", + "Getting /wiki/28_Fundamental_Beliefs\n", + "Getting /wiki/The_Pillars_of_Adventism\n", + "Getting /wiki/Three_Angels%27_Messages\n", + "Getting /wiki/Sabbath_in_Seventh-day_Adventism\n", + "Getting /wiki/Seventh-day_Adventist_eschatology\n", + "Getting /wiki/Investigative_judgment\n", + "Getting /wiki/Premillennialism\n", + "Getting /wiki/Christian_conditionalism\n", + "Getting /wiki/Remnant_(Adventist)\n", + "Getting /wiki/Government_of_the_Seventh-day_Adventist_Church\n", + "Getting /wiki/General_Conference_of_Seventh-day_Adventists\n", + "Getting /wiki/East-Central_Africa_Division_of_Seventh-day_Adventists\n", + "Getting /wiki/Euro-Asia_Division_of_Seventh-day_Adventists\n", + "Getting /wiki/Inter-American_Division_of_Seventh-day_Adventists\n", + "Getting /wiki/Inter-European_Division_of_Seventh-day_Adventists\n", + "Getting /wiki/North_American_Division_of_Seventh-day_Adventists\n", + "Getting /wiki/Northern_Asia-Pacific_Division_of_Seventh-day_Adventists\n", + "Getting /wiki/Southern_Africa-Indian_Ocean_Division_of_Seventh-day_Adventists\n", + "Getting /wiki/South_American_Division_of_Seventh-day_Adventists\n", + "Getting /wiki/South_Pacific_Division_of_Seventh-day_Adventists\n", + "Getting /wiki/Southern_Asia_Division_of_Seventh-day_Adventists\n", + "Getting /wiki/Southern_Asia-Pacific_Division_of_Seventh-day_Adventists\n", + "Getting /wiki/Trans-European_Division_of_Seventh-day_Adventists\n", + "Getting /wiki/West-Central_Africa_Division_of_Seventh-day_Adventists\n", + "Getting /wiki/List_of_Seventh-day_Adventist_periodicals\n", + "Getting /wiki/Adventist_Review\n", + "Getting /wiki/Signs_of_the_Times_(magazine)\n", + "Getting /wiki/List_of_Ellen_White_writings\n", + "Getting /wiki/Adventist_Development_and_Relief_Agency\n", + "Getting /wiki/Maranatha_Volunteers_International\n", + "Getting /wiki/Pathfinders_(Seventh-day_Adventist)\n", + "Getting /wiki/Adventurers_(Seventh-day_Adventist)\n", + "Getting /wiki/Medical_Cadet_Corps\n", + "Getting /wiki/Seventh-day_Adventist_education\n", + "Getting /wiki/List_of_Seventh-day_Adventist_secondary_schools\n", + "Getting /wiki/List_of_Seventh-day_Adventist_colleges_and_universities\n", + "Getting /wiki/List_of_Seventh-day_Adventist_hospitals\n", + "Getting /wiki/Media_ministries_of_the_Seventh-day_Adventist_Church\n", + "Getting /wiki/Hope_Channel\n", + "Getting /wiki/Loma_Linda_Broadcasting_Network\n", + "Getting /wiki/It_Is_Written\n", + "Getting /wiki/Voice_of_Prophecy\n", + "Getting /wiki/Three_Angels_Broadcasting_Network\n", + "Getting /wiki/Amazing_Facts\n", + "Getting /wiki/List_of_Seventh-day_Adventists\n", + "Getting /wiki/Ellen_G._White\n", + "Getting /wiki/James_Springer_White\n", + "Getting /wiki/Joseph_Bates_(Adventist)\n", + "Getting /wiki/John_Nevins_Andrews\n", + "Getting /wiki/Uriah_Smith\n", + "Getting /wiki/John_Harvey_Kellogg\n", + "Getting /wiki/James_Caleb_Jackson\n", + "Getting /wiki/W._C._White\n", + "Getting /wiki/F._D._Nichol\n", + "Getting /wiki/M._L._Andreasen\n", + "Getting /wiki/Le_Roy_Froom\n", + "Getting /wiki/Arthur_L._White\n", + "Getting /wiki/George_Vandeman\n", + "Getting /wiki/H._M._S._Richards\n", + "Getting /wiki/Edward_Heppenstall\n", + "Getting /wiki/Herbert_E._Douglass\n", + "Getting /wiki/Morris_Venden\n", + "Getting /wiki/Samuele_Bacchiocchi\n", + "Getting /wiki/E._E._Cleveland\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Getting /wiki/Walter_Veith\n", + "Getting /wiki/Mark_Finley\n", + "Getting /wiki/Adventism\n", + "Getting /wiki/Maracas_Valley\n", + "Getting /wiki/Trinidad\n", + "Getting /wiki/Trinidad_and_Tobago\n", + "Getting /wiki/Scarborough,_Trinidad_and_Tobago\n", + "Getting /wiki/Trinidad_and_Tobago\n", + "Getting /wiki/San_Fernando,_Trinidad_and_Tobago\n", + "Getting /wiki/Trinidad_and_Tobago\n", + "Getting /wiki/Georgetown,_Guyana\n", + "Getting /wiki/Guyana\n", + "Getting /wiki/Bridgetown\n", + "Getting /wiki/Barbados\n", + "Getting /wiki/Castries\n", + "Getting /wiki/St._Lucia\n", + "Getting /wiki/St._John%27s,_Antigua_and_Barbuda\n", + "Getting /wiki/Antigua_and_Barbuda\n", + "Getting /wiki/St._George%27s,_Grenada\n", + "Getting /wiki/Grenada\n", + "Getting /wiki/Seventh-day_Adventist_education\n", + "Getting /wiki/Post-secondary\n", + "Getting /wiki/Bachelor_of_Theology\n", + "Getting /wiki/Bachelor_of_Arts\n", + "Getting /wiki/Bachelor_of_Science\n", + "Getting /wiki/Bachelor_of_Business_Administration\n", + "Getting /wiki/Andrews_University\n", + "Getting /wiki/Port_of_Spain\n", + "Getting /wiki/Seventh-day_Adventist_Church\n", + "Getting /wiki/David_R._Williams_(scientist)\n", + "Getting /wiki/Harvard_School_of_Public_Health\n", + "Getting /wiki/Harvard_University\n", + "Getting /wiki/Menissa_Rambally\n", + "Getting /wiki/St._Lucia\n", + "Getting /wiki/Lloyd_J._Richardson\n", + "Getting /wiki/President_of_the_Parliament_of_Sint_Maarten\n", + "Getting /wiki/List_of_Seventh-day_Adventist_colleges_and_universities\n", + "Getting /wiki/Seventh-day_Adventist_education\n", + "Getting /wiki/List_of_universities_in_Trinidad_and_Tobago\n", + "Getting /wiki/Adventist_News_Network\n", + "Getting /wiki/Adventist_University_of_Africa\n", + "Getting /wiki/University_of_Eastern_Africa,_Baraton\n", + "Getting /wiki/Babcock_University\n", + "Getting /wiki/Rusangu_University\n", + "Getting /wiki/Adventist_University_of_Central_Africa\n", + "Getting /wiki/Helderberg_College_of_Higher_Education\n", + "Getting /wiki/Hong_Kong_Adventist_College\n", + "Getting /wiki/Spicer_Adventist_University\n", + "Getting /wiki/Northeast_Adventist_College\n", + "Getting /wiki/Roorkee_Adventist_College\n", + "Getting /wiki/Helen_Lowry_College_of_Arts_%26_Commerce\n", + "Getting /wiki/Indonesian_Adventist_University\n", + "Getting /wiki/Klabat_University\n", + "Getting /wiki/Adventist_College_of_Nursing_and_Health_Sciences\n", + "Getting /wiki/Adventist_International_Institute_of_Advanced_Studies\n", + "Getting /wiki/Adventist_University_of_the_Philippines\n", + "Getting /wiki/Central_Philippine_Adventist_College\n", + "Getting /wiki/Manila_Adventist_College\n", + "Getting /wiki/Adventist_Medical_Center_College-Iligan\n", + "Getting /wiki/Mountain_View_College_(Philippines)\n", + "Getting /wiki/South_Philippine_Adventist_College\n", + "Getting /wiki/Sahmyook_University\n", + "Getting /wiki/Asia-Pacific_International_University\n", + "Getting /wiki/Bogenhofen_Seminary\n", + "Getting /wiki/Adventist_University_of_France\n", + "Getting /wiki/Friedensau_Adventist_University\n", + "Getting /wiki/Zaoksky_Adventist_University\n", + "Getting /wiki/Newbold_College_of_Higher_Education\n", + "Getting /wiki/Adventist_University_of_the_Plata\n", + "Getting /wiki/Bolivia_Adventist_University\n", + "Getting /wiki/Dominican_Adventist_University\n", + "Getting /wiki/Adventist_University_of_Haiti\n", + "Getting /wiki/Hyacinth_Chen_Nursing_School\n", + "Getting /wiki/Northern_Caribbean_University\n", + "Getting /wiki/University_of_Montemorelos\n", + "Getting /wiki/University_of_Navojoa\n", + "Getting /wiki/Linda_Vista_University\n", + "Getting /wiki/Antillean_Adventist_University\n", + "Getting /wiki/Burman_University\n", + "Getting /wiki/AdventHealth_University\n", + "Getting /wiki/Andrews_University\n", + "Getting /wiki/Atlantic_Union_College\n", + "Getting /wiki/Griggs_University\n", + "Getting /wiki/Hartland_Institute\n", + "Getting /wiki/Kettering_College\n", + "Getting /wiki/La_Sierra_University\n", + "Getting /wiki/Loma_Linda_University\n", + "Getting /wiki/Oakwood_University\n", + "Getting /wiki/Ouachita_Hills_College\n", + "Getting /wiki/Pacific_Union_College\n", + "Getting /wiki/Southern_Adventist_University\n", + "Getting /wiki/Southwestern_Adventist_University\n", + "Getting /wiki/Union_College_(Nebraska)\n", + "Getting /wiki/Walla_Walla_University\n", + "Getting /wiki/Washington_Adventist_University\n", + "Getting /wiki/Weimar_University\n", + "Getting /wiki/Avondale_University_College\n", + "Getting /wiki/Mamarapha_College\n", + "Getting /wiki/Fulton_College_(Fiji)\n", + "Getting /wiki/Pacific_Adventist_University\n", + "Getting /wiki/Sonoma_Adventist_College\n", + "Getting /wiki/University_of_the_Sunshine_Coast\n", + "Already fetched /wiki/Main_Page\n", + "Already fetched /wiki/Main_Page\n", + "Already fetched /wiki/University_of_the_Sunshine_Coast\n", + "Already fetched /wiki/University_of_the_Sunshine_Coast\n", + "Already fetched /wiki/University_of_the_Sunshine_Coast\n", + "Getting /wiki/Public_university\n", + "Getting /wiki/Chancellor_(education)\n", + "Getting /wiki/Angus_Houston\n", + "Getting /wiki/Knight_of_the_Order_of_Australia\n", + "Getting /wiki/Air_Force_Cross_(United_Kingdom)\n", + "Getting /wiki/Vice-Chancellor\n", + "Getting /wiki/Sunshine_Coast,_Queensland\n", + "Getting /wiki/Queensland\n", + "Getting /wiki/Geographic_coordinate_system\n", + "Getting /wiki/Urban_area\n", + "Getting /wiki/Regional_Universities_Network\n", + "Getting /wiki/Public_university\n", + "Getting /wiki/Sunshine_Coast,_Queensland\n", + "Getting /wiki/Sippy_Downs\n", + "Getting /wiki/Hervey_Bay\n", + "Getting /wiki/Fraser_Coast\n", + "Getting /wiki/Petrie,_Queensland\n", + "Getting /wiki/Undergraduate\n", + "Getting /wiki/Postgraduate\n", + "Getting /wiki/Commonwealth_Register_of_Institutions_and_Courses_for_Overseas_Students\n", + "Getting /wiki/Government_of_Australia\n", + "Getting /wiki/Brisbane\n", + "Getting /wiki/Vice-chancellor\n", + "Getting /wiki/Paul_Thomas_(academic)\n", + "Getting /wiki/Member_of_the_Order_of_Australia\n", + "Getting /wiki/Tony_Fitzgerald\n", + "Getting /wiki/Angus_Houston\n", + "Getting /wiki/College_and_university_rankings\n", + "Getting /wiki/QS_World_University_Rankings\n", + "Getting /wiki/Times_Higher_Education_World_University_Rankings\n", + "Getting /wiki/Academic_Ranking_of_World_Universities\n", + "Getting /wiki/U.S._News_%26_World_Report\n", + "Getting /wiki/QS_World_University_Rankings\n", + "Getting /wiki/Times_Higher_Education_World_University_Rankings\n", + "Getting /wiki/College_and_university_rankings#Academic_Ranking_of_World_Universities\n", + "Getting /wiki/U.S._News_%26_World_Report\n", + "Getting /wiki/Excellence_in_Research_for_Australia\n", + "Getting /wiki/Australian_Universities_Quality_Agency\n", + "Getting /wiki/Equal_Opportunity_for_Women_in_the_Workplace_Agency\n", + "Getting /wiki/Sippy_Downs,_Queensland\n", + "Getting /wiki/Mooloolah_River_National_Park\n", + "Getting /wiki/Sugar_cane\n", + "Getting /wiki/Bruce_Highway\n", + "Getting /wiki/Royal_Australian_Institute_of_Architects\n", + "Getting /wiki/Sir_Zelman_Cowen\n", + "Getting /wiki/Treasurer_of_Australia\n", + "Getting /wiki/Wayne_Swan\n", + "Getting /wiki/Sunshine_Coast_University_Hospital\n", + "Getting /wiki/Government_of_Queensland\n", + "Getting /wiki/Fraser_Island\n", + "Getting /wiki/USC_Stadium\n", + "Getting /wiki/Netball\n", + "Getting /wiki/Suncorp_Super_Netball\n", + "Getting /wiki/Sunshine_Coast_Lightning\n", + "Getting /wiki/Australian_Research_Council\n", + "Getting /wiki/Synchrotron_radiation\n", + "Getting /wiki/University_of_Queensland\n", + "Getting /wiki/Curtin_University\n", + "Getting /wiki/Time_(magazine)\n", + "Getting /wiki/NASA\n", + "Getting /wiki/Ares_I\n", + "Getting /wiki/Coastal_management\n", + "Getting /wiki/Business_incubator\n", + "Getting /wiki/Business_accelerator\n", + "Getting /wiki/List_of_University_of_the_Sunshine_Coast_people\n", + "Getting /wiki/Angus_Houston\n", + "Getting /wiki/TransLink_(South_East_Queensland)\n", + "Getting /wiki/Sunbus_Sunshine_Coast\n", + "Getting /wiki/Sunshine_Plaza_bus_station\n", + "Getting /wiki/Landsborough_railway_station,_Queensland\n", + "Getting /wiki/University_of_the_Sunshine_Coast_Bus_Station,_Queensland\n", + "Getting /wiki/List_of_universities_in_Australia\n", + "Getting /wiki/Wayback_Machine\n", + "Getting /wiki/The_Australian\n", + "Getting /wiki/Brisbane_Times\n", + "Getting /wiki/The_Courier-Mail\n", + "Getting /wiki/Wayback_Machine\n", + "Getting /wiki/The_Toowoomba_Chronicle\n", + "Getting /wiki/The_Australian\n", + "Getting /wiki/Wayback_Machine\n", + "Getting /wiki/Wayback_Machine\n", + "Getting /wiki/Wayback_Machine\n", + "Getting /wiki/Wayback_Machine\n", + "Getting /wiki/Wayback_Machine\n", + "Getting /wiki/Wayback_Machine\n", + "Getting /wiki/Wayback_Machine\n", + "Getting /wiki/The_Courier-Mail\n", + "Getting /wiki/Wayback_Machine\n", + "Getting /wiki/Wayback_Machine\n", + "Getting /wiki/Sunshine_Coast_Daily\n", + "Getting /wiki/Wayback_Machine\n", + "Getting /wiki/Wayback_Machine\n", + "Getting /wiki/Wayback_Machine\n", + "Getting /wiki/Wayback_Machine\n", + "Getting /wiki/Wayback_Machine\n", + "Getting /wiki/List_of_universities_in_Australia\n", + "Getting /wiki/Tertiary_education_in_Australia\n", + "Getting /wiki/Australian_Capital_Territory\n", + "Getting /wiki/Australian_Defence_Force_Academy\n", + "Getting /wiki/University_of_New_South_Wales\n", + "Getting /wiki/Australian_National_University\n", + "Getting /wiki/University_of_Canberra\n", + "Getting /wiki/New_South_Wales\n", + "Getting /wiki/Charles_Sturt_University\n", + "Getting /wiki/Macquarie_University\n", + "Getting /wiki/Southern_Cross_University\n", + "Getting /wiki/University_of_Newcastle_(Australia)\n", + "Getting /wiki/University_of_New_England_(Australia)\n", + "Getting /wiki/University_of_New_South_Wales\n", + "Getting /wiki/University_of_Sydney\n", + "Getting /wiki/University_of_Technology_Sydney\n", + "Getting /wiki/University_of_Wollongong\n", + "Getting /wiki/Western_Sydney_University\n", + "Getting /wiki/Northern_Territory\n", + "Getting /wiki/Charles_Darwin_University\n", + "Getting /wiki/Queensland\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Getting /wiki/Bond_University\n", + "Getting /wiki/Central_Queensland_University\n", + "Getting /wiki/Griffith_University\n", + "Getting /wiki/James_Cook_University\n", + "Getting /wiki/University_of_Queensland\n", + "Getting /wiki/Queensland_University_of_Technology\n", + "Getting /wiki/University_of_Southern_Queensland\n", + "Getting /wiki/South_Australia\n", + "Getting /wiki/University_of_Adelaide\n", + "Getting /wiki/Carnegie_Mellon_University\n", + "Getting /wiki/Carnegie_Mellon_University,_Australia\n", + "Getting /wiki/Flinders_University\n", + "Getting /wiki/University_of_South_Australia\n", + "Getting /wiki/Tasmania\n", + "Getting /wiki/Australian_Maritime_College\n", + "Getting /wiki/University_of_Tasmania\n", + "Getting /wiki/University_of_Tasmania\n", + "Getting /wiki/Education_in_Victoria\n", + "Getting /wiki/Deakin_University\n", + "Getting /wiki/University_of_Divinity\n", + "Getting /wiki/Federation_University_Australia\n", + "Getting /wiki/La_Trobe_University\n", + "Getting /wiki/University_of_Melbourne\n", + "Getting /wiki/Monash_University\n", + "Getting /wiki/RMIT_University\n", + "Getting /wiki/Swinburne_University_of_Technology\n", + "Getting /wiki/Victoria_University,_Melbourne\n", + "Getting /wiki/Western_Australia\n", + "Getting /wiki/Curtin_University\n", + "Getting /wiki/Edith_Cowan_University\n", + "Getting /wiki/Murdoch_University\n", + "Getting /wiki/University_of_Notre_Dame_Australia\n", + "Getting /wiki/University_of_Western_Australia\n", + "Getting /wiki/National_university\n", + "Getting /wiki/Australian_Catholic_University\n", + "Getting /wiki/Torrens_University_Australia\n", + "Getting /wiki/Education_in_Australia\n", + "Getting /wiki/Australian_Technology_Network\n", + "Getting /wiki/Curtin_University\n", + "Getting /wiki/Deakin_University\n", + "Getting /wiki/RMIT_University\n", + "Getting /wiki/University_of_Newcastle_(Australia)\n", + "Getting /wiki/University_of_South_Australia\n", + "Getting /wiki/University_of_Technology_Sydney\n", + "Getting /wiki/Group_of_Eight_(Australian_universities)\n", + "Getting /wiki/University_of_Adelaide\n", + "Getting /wiki/Australian_National_University\n", + "Getting /wiki/University_of_Melbourne\n", + "Getting /wiki/Monash_University\n", + "Getting /wiki/University_of_New_South_Wales\n", + "Getting /wiki/University_of_Queensland\n", + "Getting /wiki/University_of_Sydney\n", + "Getting /wiki/University_of_Western_Australia\n", + "Getting /wiki/Innovative_Research_Universities\n", + "Getting /wiki/Flinders_University\n", + "Getting /wiki/Griffith_University\n", + "Getting /wiki/James_Cook_University\n", + "Getting /wiki/La_Trobe_University\n", + "Getting /wiki/Murdoch_University\n", + "Getting /wiki/Charles_Darwin_University\n", + "Getting /wiki/Western_Sydney_University\n", + "Getting /wiki/University_of_Canberra\n", + "Getting /wiki/University_of_Newcastle_(Australia)\n", + "Getting /wiki/University_of_New_South_Wales\n", + "Getting /wiki/University_of_Wollongong\n", + "Getting /wiki/Regional_Universities_Network\n", + "Getting /wiki/Central_Queensland_University\n", + "Getting /wiki/Charles_Sturt_University\n", + "Getting /wiki/Federation_University_Australia\n", + "Getting /wiki/Southern_Cross_University\n", + "Getting /wiki/University_of_New_England_(Australia)\n", + "Getting /wiki/University_of_Southern_Queensland\n", + "Getting /wiki/Sandstone_universities\n", + "Getting /wiki/University_of_Adelaide\n", + "Getting /wiki/University_of_Melbourne\n", + "Getting /wiki/University_of_Queensland\n", + "Getting /wiki/University_of_Sydney\n", + "Getting /wiki/University_of_Tasmania\n", + "Getting /wiki/University_of_Western_Australia\n", + "Getting /wiki/Sandstone_universities#Red_brick_universities\n", + "Getting /wiki/University_of_New_South_Wales\n", + "Getting /wiki/Monash_University\n", + "Getting /wiki/Australian_National_University\n", + "Getting /wiki/Verdant_universities\n", + "Getting /wiki/Flinders_University\n", + "Getting /wiki/Griffith_University\n", + "Getting /wiki/La_Trobe_University\n", + "Getting /wiki/Macquarie_University\n", + "Getting /wiki/Murdoch_University\n", + "Getting /wiki/CDIO_Initiative\n", + "Getting /wiki/University_of_Johannesburg\n", + "Getting /wiki/University_of_Pretoria\n", + "Getting /wiki/Chisholm_Institute\n", + "Getting /wiki/Curtin_University\n", + "Getting /wiki/Queensland_University_of_Technology\n", + "Getting /wiki/RMIT_University\n", + "Getting /wiki/University_of_Sydney\n", + "Getting /wiki/Beijing_Institute_of_Petrochemical_Technology\n", + "Getting /wiki/Beijing_Jiaotong_University\n", + "Getting /wiki/Chengdu_University_of_Information_Technology\n", + "Getting /wiki/Shantou_University\n", + "Getting /wiki/Tsinghua_University\n", + "Getting /wiki/University_of_Electronic_Science_and_Technology_of_China\n", + "Getting /wiki/Yanshan_University\n", + "Getting /wiki/Dalian_Neusoft_University_of_Information\n", + "Getting /wiki/Universiti_Teknologi_MARA\n", + "Getting /wiki/Ungku_Omar_Polytechnic\n", + "Getting /wiki/Ibrahim_Sultan_Polytechnic\n", + "Getting /wiki/Taylor%27s_University\n", + "Getting /wiki/University_of_Auckland\n", + "Getting /wiki/Singapore_Polytechnic\n", + "Getting /wiki/Vietnam_National_University,_Ho_Chi_Minh_City\n", + "Getting /wiki/Lahti_University_of_Applied_Sciences\n", + "Getting /wiki/Lapland_University_of_Applied_Sciences\n", + "Getting /wiki/Metropolia_University_of_Applied_Sciences\n", + "Getting /wiki/Novia_University_of_Applied_Sciences\n", + "Getting /wiki/Savonia_University_of_Applied_Sciences\n", + "Getting /wiki/Sein%C3%A4joki_University_of_Applied_Sciences\n", + "Getting /wiki/Tampere_University_of_Applied_Sciences\n", + "Getting /wiki/Turku_University_of_Applied_Sciences\n", + "Getting /wiki/University_of_Turku\n", + "Getting /wiki/Astrakhan_State_University\n", + "Getting /wiki/Bauman_Moscow_State_Technical_University\n", + "Getting /wiki/Cherepovets_State_University\n", + "Getting /wiki/Don_State_Technical_University\n", + "Getting /wiki/Kazan_Federal_University\n", + "Getting /wiki/Moscow_Aviation_Institute\n", + "Getting /wiki/Moscow_Institute_of_Physics_and_Technology\n", + "Getting /wiki/National_Research_Nuclear_University_MEPhI_(Moscow_Engineering_Physics_Institute)\n", + "Getting /wiki/North-Eastern_Federal_University\n", + "Getting /wiki/Oryol_State_University\n", + "Getting /wiki/Saint_Petersburg_State_University_of_Aerospace_Instrumentation\n", + "Getting /wiki/Siberian_Federal_University\n", + "Getting /wiki/Skolkovo_Institute_of_Science_and_Technology\n", + "Getting /wiki/Tomsk_Polytechnic_University\n", + "Getting /wiki/Tomsk_State_University_of_Control_Systems_and_Radio-electronics\n", + "Getting /wiki/Ural_Federal_University\n", + "Getting /wiki/Blekinge_Institute_of_Technology\n", + "Getting /wiki/Chalmers_University_of_Technology\n", + "Getting /wiki/J%C3%B6nk%C3%B6ping_School_of_Engineering\n", + "Getting /wiki/Kristianstad_University\n", + "Getting /wiki/KTH_Royal_Institute_of_Technology\n", + "Getting /wiki/Link%C3%B6ping_University\n", + "Getting /wiki/Linnaeus_University\n", + "Getting /wiki/Lule%C3%A5_University_of_Technology\n", + "Getting /wiki/Ume%C3%A5_Institute_of_Technology\n", + "Getting /wiki/University_West\n", + "Getting /wiki/University_of_Sk%C3%B6vde\n", + "Getting /wiki/Aston_University\n", + "Getting /wiki/Lancaster_University\n", + "Getting /wiki/Queen%27s_University_Belfast\n", + "Getting /wiki/South_Eastern_Regional_College\n", + "Getting /wiki/Ulster_University\n", + "Getting /wiki/University_of_Bristol\n", + "Getting /wiki/University_of_Chichester\n", + "Getting /wiki/University_of_Leeds\n", + "Getting /wiki/University_of_Liverpool\n", + "Getting /wiki/University_of_Strathclyde\n", + "Getting /wiki/Hogeschool_Gent\n", + "Getting /wiki/Aarhus_University\n", + "Getting /wiki/Technical_University_of_Denmark\n", + "Getting /wiki/%C3%89cole_nationale_sup%C3%A9rieure_des_t%C3%A9l%C3%A9communications_de_Bretagne\n", + "Getting /wiki/Hochschule_Wismar\n", + "Getting /wiki/Polytechnic_University_of_Milan\n", + "Getting /wiki/Instituto_Superior_de_Engenharia_do_Porto\n", + "Getting /wiki/Polytechnic_University_of_Catalonia\n", + "Getting /wiki/Polytechnique_Montr%C3%A9al\n", + "Getting /wiki/Queen%27s_University_at_Kingston\n", + "Getting /wiki/Sheridan_College\n", + "Getting /wiki/University_of_Calgary\n", + "Getting /wiki/University_of_Manitoba\n", + "Getting /wiki/Arizona_State_University\n", + "Getting /wiki/California_State_University,_Northridge\n", + "Getting /wiki/Duke_University\n", + "Getting /wiki/Embry%E2%80%93Riddle_Aeronautical_University\n", + "Getting /wiki/Massachusetts_Institute_of_Technology\n", + "Getting /wiki/Naval_Postgraduate_School\n", + "Getting /wiki/Pennsylvania_State_University\n", + "Getting /wiki/Stanford_University\n", + "Getting /wiki/United_States_Naval_Academy\n", + "Getting /wiki/University_of_Arkansas\n", + "Getting /wiki/University_of_Colorado\n", + "Getting /wiki/University_of_Michigan\n", + "Getting /wiki/University_of_Notre_Dame\n", + "Getting /wiki/Catholic_University_of_the_Most_Holy_Conception\n", + "Getting /wiki/University_of_Chile\n", + "Getting /wiki/University_of_Los_Lagos\n", + "Getting /wiki/University_of_Santiago,_Chile\n", + "Getting /wiki/ICESI_University\n", + "Getting /wiki/National_University_of_Colombia\n", + "Getting /wiki/Pontifical_Xavierian_University\n", + "Getting /wiki/University_of_Antioquia\n", + "Getting /wiki/University_of_Santo_Tomas\n", + "Getting /wiki/University_of_Quind%C3%ADo\n", + "Getting /wiki/United_Somali_Congress\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Already fetched /wiki/Main_Page\n", + "Already fetched /wiki/Main_Page\n", + "Already fetched /wiki/United_Somali_Congress\n", + "Already fetched /wiki/United_Somali_Congress\n", + "Already fetched /wiki/United_Somali_Congress\n", + "Getting /wiki/Mohamed_Farrah_Aidid\n", + "Getting /wiki/Ali_Mahdi_Muhammad\n", + "Getting /wiki/Mogadishu\n", + "Getting /wiki/List_of_political_ideologies\n", + "Getting /wiki/Anti-communism\n", + "Getting /wiki/Siad_Barre\n", + "Getting /wiki/Islamism\n", + "Getting /wiki/Somali_nationalism\n", + "Getting /wiki/Greater_Somalia\n", + "Getting /wiki/Hawiye\n", + "Getting /wiki/Green\n", + "Getting /wiki/Politics_of_Somalia\n", + "Getting /wiki/List_of_political_parties_in_Somalia\n", + "Getting /wiki/Elections_in_Somalia\n", + "Getting /wiki/Somalia\n", + "Getting /wiki/Siad_Barre\n", + "Getting /wiki/Unified_Task_Force\n", + "Getting /wiki/Transitional_National_Government\n", + "Getting /wiki/Hawiye\n", + "Getting /wiki/Rome\n", + "Getting /wiki/Ali_Mohamed_Osoble\n", + "Getting /wiki/SODAF\n", + "Getting /wiki/Somali_Salvation_Democratic_Front\n", + "Getting /wiki/Somali_National_Movement\n", + "Getting /wiki/Ethiopia\n", + "Getting /wiki/General\n", + "Getting /wiki/Mohamed_Farrah_Aidid\n", + "Getting /wiki/Hussein_Mohamed_Farrah\n", + "Getting /wiki/Somali_National_Alliance\n", + "Getting /wiki/Galkayo\n", + "Getting /wiki/Somali_Armed_Forces\n", + "Getting /wiki/Mohammed_Farah_Aidid\n", + "Getting /wiki/Mustah%C4%ABl_(town)\n", + "Getting /wiki/Daniel_Arap_Moi\n", + "Getting /wiki/Somali_National_Movement\n", + "Getting /wiki/Somali_Patriotic_Movement\n", + "Getting /wiki/Somali_Salvation_Democratic_Front\n", + "Getting /wiki/Ali_Mahdi_Muhammad\n", + "Getting /wiki/Hussein_Mohamed_Farah_Aidid\n", + "Getting /wiki/Musa_Sudi_Yalahow\n", + "Getting /wiki/Somali_Reconciliation_and_Restoration_Council\n", + "Getting /wiki/Transitional_National_Government\n", + "Getting /wiki/Omar_Muhamoud_Finnish\n", + "Getting /wiki/Mogadishu\n", + "Getting /wiki/Somalia_Reconciliation_and_Restoration_Council\n", + "Getting /wiki/Transitional_National_Government\n", + "Getting /wiki/Juba_Valley_Alliance\n", + "Getting /wiki/Mohamed_Farrah_Aidid\n", + "Getting /wiki/Ali_Mohamed_Osoble\n", + "Getting /wiki/Ali_Mahdi_Muhammad\n", + "Getting /wiki/Mohamed_Afrah_Qanyare\n", + "Getting /wiki/Musa_Sudi_Yalahow\n", + "Getting /wiki/Omar_Muhamoud_Finnish\n", + "Getting /wiki/Mohammed_Aidid\n", + "Getting /wiki/Ali_Mahdi_Mohammed\n", + "Getting /wiki/Ali_Mahdi_Mohammed\n", + "Getting /wiki/Musa_Sudi_Yalahow\n", + "Getting /wiki/Musa_Sudi_Yalahow\n", + "Getting /wiki/Omar_Muhamoud_Finnish\n", + "Getting /wiki/Politics_of_Somalia\n", + "Getting /wiki/Somali_Civil_War\n", + "Getting /wiki/Factions_in_the_Somali_Civil_War\n", + "Getting /wiki/OCHA\n", + "Getting /wiki/ISBN_(identifier)\n", + "Getting /wiki/OCHA\n", + "Getting /wiki/The_New_Humanitarian\n", + "Getting /wiki/United_States_Code\n", + "Already fetched /wiki/Main_Page\n", + "Already fetched /wiki/Main_Page\n", + "Already fetched /wiki/United_States_Code\n", + "Already fetched /wiki/United_States_Code\n", + "Already fetched /wiki/United_States_Code\n", + "Getting /wiki/Code_of_Federal_Regulations\n", + "Getting /wiki/Great_Seal_of_the_United_States\n", + "Getting /wiki/Office_of_the_Law_Revision_Counsel\n", + "Getting /wiki/United_States_Government_Publishing_Office\n", + "Getting /wiki/OCLC_(identifier)\n", + "Getting /wiki/Wikisource\n", + "Getting /wiki/Title_1_of_the_United_States_Code\n", + "Getting /wiki/Title_2_of_the_United_States_Code\n", + "Getting /wiki/Title_3_of_the_United_States_Code\n", + "Getting /wiki/Title_4_of_the_United_States_Code\n", + "Getting /wiki/Title_5_of_the_United_States_Code\n", + "Getting /wiki/Title_6_of_the_United_States_Code\n", + "Getting /wiki/Title_7_of_the_United_States_Code\n", + "Getting /wiki/Title_8_of_the_United_States_Code\n", + "Getting /wiki/Title_9_of_the_United_States_Code\n", + "Getting /wiki/Title_10_of_the_United_States_Code\n", + "Getting /wiki/Title_11_of_the_United_States_Code\n", + "Getting /wiki/Title_12_of_the_United_States_Code\n", + "Getting /wiki/Title_13_of_the_United_States_Code\n", + "Getting /wiki/Title_14_of_the_United_States_Code\n", + "Getting /wiki/Title_15_of_the_United_States_Code\n", + "Getting /wiki/Title_16_of_the_United_States_Code\n", + "Getting /wiki/Title_17_of_the_United_States_Code\n", + "Getting /wiki/Title_18_of_the_United_States_Code\n", + "Getting /wiki/Title_19_of_the_United_States_Code\n", + "Getting /wiki/Title_20_of_the_United_States_Code\n", + "Getting /wiki/Title_21_of_the_United_States_Code\n", + "Getting /wiki/Title_22_of_the_United_States_Code\n", + "Getting /wiki/Title_23_of_the_United_States_Code\n", + "Getting /wiki/Title_24_of_the_United_States_Code\n", + "Getting /wiki/Title_25_of_the_United_States_Code\n", + "Getting /wiki/Title_26_of_the_United_States_Code\n", + "Getting /wiki/Title_27_of_the_United_States_Code\n", + "Getting /wiki/Title_28_of_the_United_States_Code\n", + "Getting /wiki/Title_29_of_the_United_States_Code\n", + "Getting /wiki/Title_30_of_the_United_States_Code\n", + "Getting /wiki/Title_31_of_the_United_States_Code\n", + "Getting /wiki/Title_32_of_the_United_States_Code\n", + "Getting /wiki/Title_33_of_the_United_States_Code\n", + "Getting /wiki/Title_34_of_the_United_States_Code\n", + "Getting /wiki/Title_35_of_the_United_States_Code\n", + "Getting /wiki/Title_36_of_the_United_States_Code\n", + "Getting /wiki/Title_37_of_the_United_States_Code\n", + "Getting /wiki/Title_38_of_the_United_States_Code\n", + "Getting /wiki/Title_39_of_the_United_States_Code\n", + "Getting /wiki/Title_40_of_the_United_States_Code\n", + "Getting /wiki/Title_41_of_the_United_States_Code\n", + "Getting /wiki/Title_42_of_the_United_States_Code\n", + "Getting /wiki/Title_43_of_the_United_States_Code\n", + "Getting /wiki/Title_44_of_the_United_States_Code\n", + "Getting /wiki/Title_45_of_the_United_States_Code\n", + "Getting /wiki/Title_46_of_the_United_States_Code\n", + "Getting /wiki/Title_47_of_the_United_States_Code\n", + "Getting /wiki/Title_48_of_the_United_States_Code\n", + "Getting /wiki/Title_49_of_the_United_States_Code\n", + "Getting /wiki/Title_50_of_the_United_States_Code\n", + "Getting /wiki/Title_51_of_the_United_States_Code\n", + "Getting /wiki/Title_52_of_the_United_States_Code\n", + "Getting /wiki/Title_53_of_the_United_States_Code\n", + "Getting /wiki/Title_54_of_the_United_States_Code\n", + "Getting /wiki/Law_of_the_United_States\n", + "Getting /wiki/Codification_(law)\n", + "Getting /wiki/Law_of_the_United_States#Federal_law\n", + "Getting /wiki/Small_business\n", + "Getting /wiki/Office_of_the_Law_Revision_Counsel\n", + "Getting /wiki/United_States_Statutes_at_Large\n", + "Getting /wiki/Act_of_Congress\n", + "Getting /wiki/Parchment\n", + "Getting /wiki/President_of_the_United_States\n", + "Getting /wiki/Veto_power_in_the_United_States\n", + "Getting /wiki/Office_of_the_Federal_Register\n", + "Getting /wiki/National_Archives_and_Records_Administration\n", + "Getting /wiki/Slip_law\n", + "Getting /wiki/United_States_Government_Publishing_Office\n", + "Getting /wiki/United_States_Statutes_at_Large\n", + "Getting /wiki/Cross-reference\n", + "Getting /wiki/Office_of_the_Law_Revision_Counsel\n", + "Getting /wiki/Taft%E2%80%93Hartley_Act\n", + "Getting /wiki/Embargo_Act_of_1807\n", + "Getting /wiki/Public_land\n", + "Getting /wiki/Positive_law\n", + "Getting /wiki/Title_12_of_the_United_States_Code\n", + "Getting /wiki/Prima_facie\n", + "Getting /wiki/United_States_Statutes_at_Large\n", + "Getting /wiki/United_States_Supreme_Court\n", + "Getting /wiki/Bancroft-Whitney\n", + "Getting /wiki/Michie_Company\n", + "Getting /wiki/Thomson_Corporation\n", + "Getting /wiki/West_(publisher)\n", + "Getting /wiki/Statutory_law\n", + "Getting /wiki/Appropriation_(law)\n", + "Getting /wiki/Budget\n", + "Getting /wiki/Fiscal_year\n", + "Getting /wiki/Revised_Statutes_of_the_United_States\n", + "Getting /wiki/United_States_Statutes_at_Large\n", + "Getting /wiki/Judicial_Code_of_1911\n", + "Getting /wiki/Thomson_West\n", + "Getting /wiki/Office_of_the_Law_Revision_Counsel\n", + "Getting /wiki/Office_of_the_Law_Revision_Counsel\n", + "Getting /wiki/Akoma_Ntoso\n", + "Getting /wiki/United_Nations_Department_of_Economic_and_Social_Affairs\n", + "Getting /wiki/LegalDocML\n", + "Getting /wiki/Cornell_University\n", + "Getting /wiki/Legal_Information_Institute\n", + "Getting /wiki/West_(publisher)\n", + "Getting /wiki/Thomson_Reuters\n", + "Getting /wiki/LexisNexis\n", + "Getting /wiki/Reed_Elsevier\n", + "Getting /wiki/Lawyers_Co-operative_Publishing_Co.\n", + "Getting /wiki/Pocket_part\n", + "Getting /wiki/Westlaw\n", + "Getting /wiki/Hyperlink\n", + "Getting /wiki/%C2%A7\n", + "Getting /wiki/Chapter_11_bankruptcy\n", + "Getting /wiki/Corporation\n", + "Getting /wiki/S_corporation\n", + "Getting /wiki/Civil_Rights_Act_of_1964\n", + "Getting /wiki/Title_42_of_the_United_States_Code\n", + "Getting /wiki/Title_7_of_the_United_States_Code\n", + "Getting /wiki/Privacy_Act_of_1974\n", + "Getting /wiki/Title_5_of_the_United_States_Code\n", + "Getting /wiki/Religious_Freedom_Restoration_Act\n", + "Getting /wiki/Title_42_of_the_United_States_Code\n", + "Getting /wiki/Title_42_of_the_United_States_Code\n", + "Getting /wiki/Title_42_of_the_United_States_Code\n", + "Getting /wiki/Title_42_of_the_United_States_Code\n", + "Getting /wiki/Positive_law\n", + "Getting /wiki/Title_1_of_the_United_States_Code\n", + "Getting /wiki/Title_2_of_the_United_States_Code\n", + "Getting /wiki/United_States_Congress\n", + "Getting /wiki/Title_3_of_the_United_States_Code\n", + "Getting /wiki/President_of_the_United_States\n", + "Getting /wiki/Title_4_of_the_United_States_Code\n", + "Getting /wiki/Flag_of_the_United_States\n", + "Getting /wiki/Great_Seal_of_the_United_States\n", + "Getting /wiki/Washington,_D.C.\n", + "Getting /wiki/Title_5_of_the_United_States_Code\n", + "Getting /wiki/Federal_government_of_the_United_States\n", + "Getting /wiki/Employee\n", + "Getting /wiki/Title_6_of_the_United_States_Code\n", + "Getting /wiki/Department_of_Homeland_Security\n", + "Getting /wiki/Title_7_of_the_United_States_Code\n", + "Getting /wiki/Agriculture\n", + "Getting /wiki/Title_8_of_the_United_States_Code\n", + "Getting /wiki/Title_9_of_the_United_States_Code\n", + "Getting /wiki/Arbitration\n", + "Getting /wiki/Title_10_of_the_United_States_Code\n", + "Getting /wiki/United_States_Armed_Forces\n", + "Getting /wiki/Title_11_of_the_United_States_Code\n", + "Getting /wiki/Bankruptcy_in_the_United_States\n", + "Getting /wiki/Title_12_of_the_United_States_Code\n", + "Getting /wiki/Title_13_of_the_United_States_Code\n", + "Getting /wiki/Census\n", + "Getting /wiki/Title_14_of_the_United_States_Code\n", + "Getting /wiki/United_States_Coast_Guard\n", + "Getting /wiki/Title_15_of_the_United_States_Code\n", + "Getting /wiki/Title_16_of_the_United_States_Code\n", + "Getting /wiki/Title_17_of_the_United_States_Code\n", + "Getting /wiki/Copyright\n", + "Getting /wiki/Title_18_of_the_United_States_Code\n", + "Getting /wiki/Criminal_Procedure\n", + "Getting /wiki/Title_19_of_the_United_States_Code\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Getting /wiki/Customs\n", + "Getting /wiki/Title_20_of_the_United_States_Code\n", + "Getting /wiki/Title_21_of_the_United_States_Code\n", + "Getting /wiki/Food_and_Drug_Administration\n", + "Getting /wiki/Title_22_of_the_United_States_Code\n", + "Getting /wiki/Foreign_relations_of_the_United_States\n", + "Getting /wiki/Title_23_of_the_United_States_Code\n", + "Getting /wiki/Title_24_of_the_United_States_Code\n", + "Getting /wiki/Hospital\n", + "Getting /wiki/Psychiatric_hospitals\n", + "Getting /wiki/Title_25_of_the_United_States_Code\n", + "Getting /wiki/Native_Americans_in_the_United_States\n", + "Getting /wiki/Internal_Revenue_Code\n", + "Getting /wiki/Internal_Revenue_Code\n", + "Getting /wiki/Title_27_of_the_United_States_Code\n", + "Getting /wiki/Alcoholic_beverage\n", + "Getting /wiki/Title_28_of_the_United_States_Code\n", + "Getting /wiki/Judiciary\n", + "Getting /wiki/Judicial_Procedure\n", + "Getting /wiki/Title_29_of_the_United_States_Code\n", + "Getting /wiki/Title_30_of_the_United_States_Code\n", + "Getting /wiki/Mining\n", + "Getting /wiki/Title_31_of_the_United_States_Code\n", + "Getting /wiki/Title_32_of_the_United_States_Code\n", + "Getting /wiki/National_Guard_of_the_United_States\n", + "Getting /wiki/Title_33_of_the_United_States_Code\n", + "Getting /wiki/Title_34_of_the_United_States_Code\n", + "Getting /wiki/Title_34_of_the_United_States_Code\n", + "Getting /wiki/Title_35_of_the_United_States_Code\n", + "Getting /wiki/Patent\n", + "Getting /wiki/Title_36_of_the_United_States_Code\n", + "Getting /wiki/Patriotism\n", + "Getting /wiki/Title_37_of_the_United_States_Code\n", + "Getting /wiki/Title_38_of_the_United_States_Code\n", + "Getting /wiki/Veteran\n", + "Getting /wiki/Title_39_of_the_United_States_Code\n", + "Getting /wiki/United_States_Postal_Service\n", + "Getting /wiki/Title_40_of_the_United_States_Code\n", + "Getting /wiki/Public_works\n", + "Getting /wiki/Title_41_of_the_United_States_Code\n", + "Getting /wiki/Title_42_of_the_United_States_Code\n", + "Getting /wiki/Social_welfare\n", + "Getting /wiki/Title_43_of_the_United_States_Code\n", + "Getting /wiki/Title_44_of_the_United_States_Code\n", + "Getting /wiki/Printing\n", + "Getting /wiki/Title_45_of_the_United_States_Code\n", + "Getting /wiki/Rail_transport\n", + "Getting /wiki/Title_46_of_the_United_States_Code\n", + "Getting /wiki/Title_47_of_the_United_States_Code\n", + "Getting /wiki/Title_48_of_the_United_States_Code\n", + "Getting /wiki/Insular_area\n", + "Getting /wiki/Title_49_of_the_United_States_Code\n", + "Getting /wiki/Title_50_of_the_United_States_Code\n", + "Getting /wiki/Title_51_of_the_United_States_Code\n", + "Getting /wiki/Title_52_of_the_United_States_Code\n", + "Getting /wiki/Title_53_of_the_United_States_Code\n", + "Getting /wiki/Title_54_of_the_United_States_Code\n", + "Getting /wiki/Office_of_Law_Revision_Counsel\n", + "Getting /wiki/Title_52_of_the_United_States_Code\n", + "Getting /wiki/Chinese_Exclusion_Act_(United_States)\n", + "Getting /wiki/United_States_Department_of_Justice\n", + "Getting /wiki/American_Bar_Association\n", + "Getting /wiki/The_Heritage_Foundation\n", + "Getting /wiki/United_States_House_Committee_on_the_Judiciary\n", + "Getting /wiki/Congressional_Research_Service\n", + "Getting /wiki/Executive_order_(United_States)\n", + "Getting /wiki/Statutes_at_Large\n", + "Getting /wiki/Administrative_Procedure_Act_(United_States)\n", + "Getting /wiki/Federal_Register\n", + "Getting /wiki/Code_of_Federal_Regulations\n", + "Getting /wiki/List_of_U.S._state_statutory_codes\n", + "Getting /wiki/United_States_Reports\n", + "Getting /wiki/Wayback_Machine\n", + "Getting /wiki/ISBN_(identifier)\n", + "Getting /wiki/United_States_Government_Publishing_Office\n", + "Getting /wiki/United_States_Government_Publishing_Office\n", + "Getting /wiki/Title_1_of_the_United_States_Code\n", + "Getting /wiki/Title_1_of_the_United_States_Code\n", + "Getting /wiki/Title_1_of_the_United_States_Code\n", + "Getting /wiki/Title_1_of_the_United_States_Code\n", + "Getting /wiki/Department_of_Defense_Appropriations_Act,_2006\n", + "Getting /wiki/Public_Law_(United_States)\n", + "Getting /wiki/United_States_Statutes_at_Large\n", + "Getting /wiki/Detainee_Treatment_Act\n", + "Getting /wiki/United_States_Statutes_at_Large\n", + "Getting /wiki/Title_10_of_the_United_States_Code\n", + "Getting /wiki/Title_42_of_the_United_States_Code\n", + "Getting /wiki/Title_28_of_the_United_States_Code\n", + "Getting /wiki/Public_Law_(United_States)\n", + "Getting /wiki/United_States_Statutes_at_Large\n", + "Getting /wiki/Title_28_of_the_United_States_Code\n", + "Getting /wiki/Public_Law_(United_States)\n", + "Getting /wiki/United_States_Statutes_at_Large\n", + "Getting /wiki/Public_Law_(United_States)\n", + "Getting /wiki/United_States_Statutes_at_Large\n", + "Getting /wiki/Sunlight_Foundation\n", + "Getting /wiki/Office_of_the_Law_Revision_Counsel\n", + "Getting /wiki/Library_of_Congress\n", + "Getting /wiki/ISBN_(identifier)\n", + "Getting /wiki/Wayback_Machine\n", + "Getting /wiki/ISBN_(identifier)\n", + "Getting /wiki/Surety_Bonds\n", + "Getting /wiki/Uniform_Code_of_Military_Justice\n", + "Getting /wiki/United_States_Navy\n", + "Getting /wiki/Title_10_of_the_United_States_Code\n", + "Getting /wiki/The_Wall_Street_Journal\n", + "Getting /wiki/The_Heritage_Foundation\n", + "Getting /wiki/The_Wall_Street_Journal\n", + "Getting /wiki/ABA_Journal\n", + "Getting /wiki/Los_Angeles_Times\n", + "Getting /wiki/ABA_Journal\n", + "Getting /wiki/Legal_Times\n", + "Getting /wiki/ALM_(company)\n", + "Getting /wiki/Wikisource\n", + "Getting /wiki/United_States_Government_Publishing_Office\n", + "Getting /wiki/Office_of_Law_Revision_Counsel\n", + "Getting /wiki/Cornell\n", + "Getting /wiki/Legal_Information_Institute\n", + "Getting /wiki/Wikisource\n", + "Getting /wiki/Title_1_of_the_United_States_Code\n", + "Getting /wiki/Title_2_of_the_United_States_Code\n", + "Getting /wiki/Title_3_of_the_United_States_Code\n", + "Getting /wiki/Title_4_of_the_United_States_Code\n", + "Getting /wiki/Title_5_of_the_United_States_Code\n", + "Getting /wiki/Title_6_of_the_United_States_Code\n", + "Getting /wiki/Title_7_of_the_United_States_Code\n", + "Getting /wiki/Title_8_of_the_United_States_Code\n", + "Getting /wiki/Title_9_of_the_United_States_Code\n", + "Getting /wiki/Title_10_of_the_United_States_Code\n", + "Getting /wiki/Title_11_of_the_United_States_Code\n", + "Getting /wiki/Title_12_of_the_United_States_Code\n", + "Getting /wiki/Title_13_of_the_United_States_Code\n", + "Getting /wiki/Title_14_of_the_United_States_Code\n", + "Getting /wiki/Title_15_of_the_United_States_Code\n", + "Getting /wiki/Title_16_of_the_United_States_Code\n", + "Getting /wiki/Title_17_of_the_United_States_Code\n", + "Getting /wiki/Title_18_of_the_United_States_Code\n", + "Getting /wiki/Title_19_of_the_United_States_Code\n", + "Getting /wiki/Title_20_of_the_United_States_Code\n", + "Getting /wiki/Title_21_of_the_United_States_Code\n", + "Getting /wiki/Title_22_of_the_United_States_Code\n", + "Getting /wiki/Title_23_of_the_United_States_Code\n", + "Getting /wiki/Title_24_of_the_United_States_Code\n", + "Getting /wiki/Title_25_of_the_United_States_Code\n", + "Getting /wiki/Internal_Revenue_Code\n", + "Getting /wiki/Title_27_of_the_United_States_Code\n", + "Getting /wiki/Title_28_of_the_United_States_Code\n", + "Getting /wiki/Title_29_of_the_United_States_Code\n", + "Getting /wiki/Title_30_of_the_United_States_Code\n", + "Getting /wiki/Title_31_of_the_United_States_Code\n", + "Getting /wiki/Title_32_of_the_United_States_Code\n", + "Getting /wiki/Title_33_of_the_United_States_Code\n", + "Getting /wiki/Title_34_of_the_United_States_Code\n", + "Getting /wiki/Title_35_of_the_United_States_Code\n", + "Getting /wiki/Title_36_of_the_United_States_Code\n", + "Getting /wiki/Title_37_of_the_United_States_Code\n", + "Getting /wiki/Title_38_of_the_United_States_Code\n", + "Getting /wiki/Title_39_of_the_United_States_Code\n", + "Getting /wiki/Title_40_of_the_United_States_Code\n", + "Getting /wiki/Title_41_of_the_United_States_Code\n", + "Getting /wiki/Title_42_of_the_United_States_Code\n", + "Getting /wiki/Title_43_of_the_United_States_Code\n", + "Getting /wiki/Title_44_of_the_United_States_Code\n", + "Getting /wiki/Title_45_of_the_United_States_Code\n", + "Getting /wiki/Title_46_of_the_United_States_Code\n", + "Getting /wiki/Title_47_of_the_United_States_Code\n", + "Getting /wiki/Title_48_of_the_United_States_Code\n", + "Getting /wiki/Title_49_of_the_United_States_Code\n", + "Getting /wiki/Title_50_of_the_United_States_Code\n", + "Getting /wiki/Title_51_of_the_United_States_Code\n", + "Getting /wiki/Title_52_of_the_United_States_Code\n", + "Getting /wiki/Title_54_of_the_United_States_Code\n", + "Getting /wiki/United_States_Congress\n", + "Getting /wiki/United_States_House_of_Representatives\n", + "Getting /wiki/United_States_Senate\n", + "Getting /wiki/Joint_session_of_the_United_States_Congress\n", + "Getting /wiki/117th_United_States_Congress\n", + "Getting /wiki/118th_United_States_Congress\n", + "Getting /wiki/119th_United_States_Congress\n", + "Getting /wiki/Lists_of_United_States_Congress\n", + "Getting /wiki/Member_of_Congress\n", + "Getting /wiki/List_of_members_of_the_United_States_Congress_by_longevity_of_service\n", + "Getting /wiki/List_of_members_of_the_United_States_Congress_by_brevity_of_service\n", + "Getting /wiki/List_of_youngest_members_of_the_United_States_Congress\n", + "Getting /wiki/Non-voting_members_of_the_United_States_House_of_Representatives\n", + "Getting /wiki/Unseated_members_of_the_United_States_Congress\n", + "Getting /wiki/List_of_new_members_of_the_98th_United_States_Congress\n", + "Getting /wiki/List_of_new_members_of_the_99th_United_States_Congress\n", + "Getting /wiki/List_of_new_members_of_the_100th_United_States_Congress\n", + "Getting /wiki/List_of_new_members_of_the_101st_United_States_Congress\n", + "Getting /wiki/List_of_new_members_of_the_102nd_United_States_Congress\n", + "Getting /wiki/List_of_new_members_of_the_103rd_United_States_Congress\n", + "Getting /wiki/List_of_new_members_of_the_104th_United_States_Congress\n", + "Getting /wiki/List_of_new_members_of_the_105th_United_States_Congress\n", + "Getting /wiki/List_of_new_members_of_the_106th_United_States_Congress\n", + "Getting /wiki/List_of_new_members_of_the_107th_United_States_Congress\n", + "Getting /wiki/List_of_new_members_of_the_108th_United_States_Congress\n", + "Getting /wiki/List_of_new_members_of_the_109th_United_States_Congress\n", + "Getting /wiki/List_of_new_members_of_the_110th_United_States_Congress\n", + "Getting /wiki/List_of_new_members_of_the_111th_United_States_Congress\n", + "Getting /wiki/List_of_new_members_of_the_112th_United_States_Congress\n", + "Getting /wiki/List_of_new_members_of_the_113th_United_States_Congress\n", + "Getting /wiki/List_of_new_members_of_the_114th_United_States_Congress\n", + "Getting /wiki/List_of_new_members_of_the_115th_United_States_Congress\n", + "Getting /wiki/List_of_new_members_of_the_116th_United_States_Congress\n", + "Getting /wiki/List_of_new_members_of_the_117th_United_States_Congress\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Getting /wiki/List_of_new_members_of_the_118th_United_States_Congress\n", + "Getting /wiki/List_of_current_United_States_senators\n", + "Getting /wiki/Seniority_in_the_United_States_Senate\n", + "Getting /wiki/Dean_of_the_United_States_Senate\n", + "Getting /wiki/List_of_former_United_States_senators\n", + "Getting /wiki/List_of_United_States_senators_expelled_or_censured\n", + "Getting /wiki/Classes_of_United_States_senators\n", + "Getting /wiki/List_of_United_States_senators_born_outside_the_United_States\n", + "Getting /wiki/Resignation_from_the_United_States_Senate\n", + "Getting /wiki/List_of_appointed_United_States_senators\n", + "Getting /wiki/List_of_United_States_senators_who_switched_parties\n", + "Getting /wiki/List_of_current_members_of_the_United_States_House_of_Representatives\n", + "Getting /wiki/Seniority_in_the_United_States_House_of_Representatives\n", + "Getting /wiki/Dean_of_the_United_States_House_of_Representatives\n", + "Getting /wiki/List_of_former_members_of_the_United_States_House_of_Representatives\n", + "Getting /wiki/List_of_United_States_representatives_expelled,_censured,_or_reprimanded\n", + "Getting /wiki/List_of_members_of_the_United_States_House_of_Representatives_who_served_a_single_term\n", + "Getting /wiki/List_of_United_States_representatives_who_switched_parties\n", + "Getting /wiki/List_of_members-elect_of_the_United_States_House_of_Representatives_who_never_took_their_seats\n", + "Getting /wiki/Vice_President_of_the_United_States\n", + "Getting /wiki/List_of_vice_presidents_of_the_United_States\n", + "Getting /wiki/President_pro_tempore_of_the_United_States_Senate\n", + "Getting /wiki/List_of_presidents_pro_tempore_of_the_United_States_Senate\n", + "Getting /wiki/Party_leaders_of_the_United_States_Senate\n", + "Getting /wiki/Senate_Democratic_Caucus\n", + "Getting /wiki/Senate_Democratic_Caucus#Chairs\n", + "Getting /wiki/Senate_Democratic_Caucus#Caucus_secretary\n", + "Getting /wiki/United_States_Senate_Democratic_Policy_Committee\n", + "Getting /wiki/Senate_Republican_Conference\n", + "Getting /wiki/Senate_Republican_Conference#List_of_conference_chairmen_and_chairwomen\n", + "Getting /wiki/Senate_Republican_Conference#List_of_Secretary_and_Vice_Chairman\n", + "Getting /wiki/United_States_Senate_Republican_Policy_Committee\n", + "Getting /wiki/Speaker_of_the_United_States_House_of_Representatives\n", + "Getting /wiki/List_of_speakers_of_the_United_States_House_of_Representatives\n", + "Getting /wiki/Party_leaders_of_the_United_States_House_of_Representatives\n", + "Getting /wiki/Bipartisan_Legal_Advisory_Group\n", + "Getting /wiki/House_Democratic_Caucus\n", + "Getting /wiki/House_Republican_Conference\n", + "Getting /wiki/List_of_United_States_congressional_districts\n", + "Getting /wiki/United_States_congressional_apportionment\n", + "Getting /wiki/Gerrymandering#United_States\n", + "Getting /wiki/Congressional_caucus\n", + "Getting /wiki/Caucuses_of_the_United_States_Congress\n", + "Getting /wiki/African_Americans_in_the_United_States_Congress\n", + "Getting /wiki/List_of_African-American_United_States_senators\n", + "Getting /wiki/List_of_African-American_United_States_representatives\n", + "Getting /wiki/Congressional_Black_Caucus\n", + "Getting /wiki/List_of_Arab_and_Middle_Eastern_Americans_in_the_United_States_Congress\n", + "Getting /wiki/List_of_Asian_Americans_and_Pacific_Islands_Americans_in_the_United_States_Congress\n", + "Getting /wiki/Congressional_Asian_Pacific_American_Caucus\n", + "Getting /wiki/Hispanic_and_Latino_Americans_in_the_United_States_Congress\n", + "Getting /wiki/List_of_Hispanic_and_Latino_Americans_in_the_United_States_Congress\n", + "Getting /wiki/Congressional_Hispanic_Caucus\n", + "Getting /wiki/Congressional_Hispanic_Conference\n", + "Getting /wiki/List_of_Native_Americans_in_the_United_States_Congress\n", + "Getting /wiki/List_of_LGBT_members_of_the_United_States_Congress\n", + "Getting /wiki/Congressional_Equality_Caucus\n", + "Getting /wiki/Women_in_the_United_States_Senate\n", + "Getting /wiki/Women_in_the_United_States_House_of_Representatives\n", + "Getting /wiki/Congressional_Caucus_for_Women%27s_Issues\n", + "Getting /wiki/Women_in_the_United_States_House_of_Representatives#Current_female_members\n", + "Getting /wiki/Physicians_in_the_United_States_Congress\n", + "Getting /wiki/List_of_Buddhist_members_of_the_United_States_Congress\n", + "Getting /wiki/List_of_Hindu_members_of_the_United_States_Congress\n", + "Getting /wiki/List_of_Jewish_members_of_the_United_States_Congress\n", + "Getting /wiki/List_of_Mormon_members_of_the_United_States_Congress\n", + "Getting /wiki/List_of_Muslim_members_of_the_United_States_Congress\n", + "Getting /wiki/List_of_Quaker_members_of_the_United_States_Congress\n", + "Getting /wiki/List_of_historical_longest-serving_members_of_the_United_States_Congress\n", + "Getting /wiki/List_of_current_members_of_the_United_States_Congress_by_wealth\n", + "Getting /wiki/List_of_members_of_the_United_States_Congress_from_multiple_states\n", + "Getting /wiki/List_of_United_States_Congress_members_who_died_in_office_(1790%E2%80%931899)\n", + "Getting /wiki/List_of_United_States_Congress_members_who_died_in_office_(1900%E2%80%931949)\n", + "Getting /wiki/List_of_United_States_Congress_members_who_died_in_office_(1950%E2%80%931999)\n", + "Getting /wiki/List_of_United_States_Congress_members_who_died_in_office_(2000%E2%80%93)\n", + "Getting /wiki/List_of_United_States_Congress_members_killed_or_wounded_in_office\n", + "Getting /wiki/List_of_party_switchers_in_the_United_States\n", + "Getting /wiki/List_of_members_of_the_United_States_Congress_who_owned_slaves\n", + "Getting /wiki/Article_One_of_the_United_States_Constitution\n", + "Getting /wiki/Copyright_Clause\n", + "Getting /wiki/Commerce_Clause\n", + "Getting /wiki/Dormant_Commerce_Clause\n", + "Getting /wiki/Contempt_of_Congress\n", + "Getting /wiki/Declaration_of_war_by_the_United_States\n", + "Getting /wiki/Federal_impeachment_in_the_United_States\n", + "Getting /wiki/Impeachment_inquiry_in_the_United_States\n", + "Getting /wiki/Federal_impeachment_trial_in_the_United_States\n", + "Getting /wiki/United_States_nationality_law\n", + "Getting /wiki/Necessary_and_Proper_Clause\n", + "Getting /wiki/Congressional_power_of_enforcement\n", + "Getting /wiki/Taxing_and_Spending_Clause\n", + "Getting /wiki/Salaries_of_members_of_the_United_States_Congress\n", + "Getting /wiki/Franking\n", + "Getting /wiki/Speech_or_Debate_Clause\n", + "Getting /wiki/Act_of_Congress\n", + "Getting /wiki/List_of_United_States_federal_legislation\n", + "Getting /wiki/Appropriations_bill_(United_States)\n", + "Getting /wiki/Bill_(United_States_Congress)\n", + "Getting /wiki/Blue_slip\n", + "Getting /wiki/United_States_budget_process\n", + "Getting /wiki/Censure_in_the_United_States\n", + "Getting /wiki/Closed_session_of_the_United_States_Congress\n", + "Getting /wiki/Closed_sessions_of_the_United_States_House_of_Representatives\n", + "Getting /wiki/Closed_sessions_of_the_United_States_Senate\n", + "Getting /wiki/Cloture\n", + "Getting /wiki/Concurrent_resolution\n", + "Getting /wiki/Continuing_resolution\n", + "Getting /wiki/Dear_Colleague_letter_(United_States)\n", + "Getting /wiki/Discharge_petition\n", + "Getting /wiki/Enrolled_bill\n", + "Getting /wiki/Expulsion_from_the_United_States_Congress\n", + "Getting /wiki/Joint_resolution\n", + "Getting /wiki/Joint_session_of_the_United_States_Congress\n", + "Getting /wiki/List_of_joint_sessions_of_the_United_States_Congress\n", + "Getting /wiki/Lame-duck_session\n", + "Getting /wiki/Magic_minute\n", + "Getting /wiki/Hastert_Rule\n", + "Getting /wiki/Multiple_referral\n", + "Getting /wiki/Procedures_of_the_United_States_House_of_Representatives\n", + "Getting /wiki/Quorum_call\n", + "Getting /wiki/Reconciliation_(United_States_Congress)\n", + "Getting /wiki/Rider_(legislation)\n", + "Getting /wiki/Saxbe_fix\n", + "Getting /wiki/Sponsor_(legislative)\n", + "Getting /wiki/Suspension_of_the_rules_in_the_United_States_Congress\n", + "Getting /wiki/Unanimous_consent\n", + "Getting /wiki/Veto\n", + "Getting /wiki/Line-item_veto\n", + "Getting /wiki/Pocket_veto\n", + "Getting /wiki/Advice_and_consent\n", + "Getting /wiki/Classes_of_United_States_senators\n", + "Getting /wiki/Executive_communication\n", + "Getting /wiki/Executive_session\n", + "Getting /wiki/Filibuster_in_the_United_States_Senate\n", + "Getting /wiki/Jefferson%27s_Manual\n", + "Getting /wiki/United_States_Senate_Journal\n", + "Getting /wiki/Morning_business\n", + "Getting /wiki/Nuclear_option\n", + "Getting /wiki/Presiding_Officer_of_the_United_States_Senate\n", + "Getting /wiki/Recess_appointment\n", + "Getting /wiki/Reconciliation_(United_States_Congress)\n", + "Getting /wiki/Riddick%27s_Senate_Procedure\n", + "Getting /wiki/Senate_hold\n", + "Getting /wiki/Senatorial_courtesy\n", + "Getting /wiki/Seniority_in_the_United_States_Senate\n", + "Getting /wiki/Standing_Rules_of_the_United_States_Senate\n", + "Getting /wiki/List_of_tie-breaking_votes_cast_by_the_vice_president_of_the_United_States\n", + "Getting /wiki/Traditions_of_the_United_States_Senate\n", + "Getting /wiki/Treaty_Clause\n", + "Getting /wiki/United_States_congressional_committee\n", + "Getting /wiki/Chairperson\n", + "Getting /wiki/Ranking_member\n", + "Getting /wiki/Committee_of_the_Whole_(United_States_House_of_Representatives)\n", + "Getting /wiki/United_States_congressional_conference_committee\n", + "Getting /wiki/Discharge_petition\n", + "Getting /wiki/United_States_congressional_hearing\n", + "Getting /wiki/Markup_(legislation)\n", + "Getting /wiki/Congressional_oversight\n", + "Getting /wiki/List_of_United_States_congressional_joint_committees\n", + "Getting /wiki/List_of_United_States_House_of_Representatives_committees\n", + "Getting /wiki/List_of_United_States_Senate_committees\n", + "Getting /wiki/Select_or_special_committee_(United_States_Congress)\n", + "Getting /wiki/Standing_committee_(United_States_Congress)\n", + "Getting /wiki/United_States_congressional_subcommittee\n", + "Getting /wiki/Gavel#United_States_Congress_gavels\n", + "Getting /wiki/Mace_of_the_United_States_House_of_Representatives\n", + "Getting /wiki/Seal_of_the_United_States_Senate\n", + "Getting /wiki/History_of_the_United_States_Congress\n", + "Getting /wiki/History_of_the_United_States_House_of_Representatives\n", + "Getting /wiki/U.S._representative_bibliography_(congressional_memoirs)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Getting /wiki/List_of_Speaker_of_the_United_States_House_of_Representatives_elections\n", + "Getting /wiki/History_of_the_United_States_Senate\n", + "Getting /wiki/List_of_United_States_Senate_election_disputes\n", + "Getting /wiki/U.S._senator_bibliography_(congressional_memoirs)\n", + "Getting /wiki/Continental_Congress\n", + "Getting /wiki/Federal_Hall\n", + "Getting /wiki/Congress_Hall\n", + "Getting /wiki/Old_Brick_Capitol\n", + "Getting /wiki/Biographical_Directory_of_the_United_States_Congress\n", + "Getting /wiki/Divided_government_in_the_United_States\n", + "Getting /wiki/Party_divisions_of_United_States_Congresses\n", + "Getting /wiki/C-SPAN\n", + "Getting /wiki/Congressional_Quarterly\n", + "Getting /wiki/The_Hill_(newspaper)\n", + "Getting /wiki/Politico\n", + "Getting /wiki/Roll_Call\n", + "Getting /wiki/United_States_Capitol_Complex\n", + "Getting /wiki/Capitol_Hill\n", + "Getting /wiki/Congressional_staff\n", + "Getting /wiki/Government_Accountability_Office\n", + "Getting /wiki/Comptroller_General_of_the_United_States\n", + "Getting /wiki/Architect_of_the_Capitol\n", + "Getting /wiki/United_States_Capitol_Police\n", + "Getting /wiki/Capitol_Police_Board\n", + "Getting /wiki/United_States_Capitol_Guide_Service\n", + "Getting /wiki/United_States_Capitol_Guide_Board\n", + "Getting /wiki/Congressional_Budget_Office\n", + "Getting /wiki/United_States_Congress_Office_of_Compliance\n", + "Getting /wiki/Library_of_Congress\n", + "Getting /wiki/United_States_Government_Publishing_Office\n", + "Getting /wiki/Office_of_Technology_Assessment\n", + "Getting /wiki/Curator_of_the_United_States_Senate\n", + "Getting /wiki/Historian_of_the_United_States_Senate\n", + "Getting /wiki/United_States_Senate_Library\n", + "Getting /wiki/Office_of_Congressional_Ethics\n", + "Getting /wiki/United_States_House_of_Representatives_Office_of_Emergency_Planning,_Preparedness,_and_Operations\n", + "Getting /wiki/United_States_House_of_Representatives_Office_of_Interparliamentary_Affairs\n", + "Getting /wiki/Office_of_the_Law_Revision_Counsel\n", + "Getting /wiki/Office_of_the_Legislative_Counsel\n", + "Getting /wiki/United_States_House_of_Representatives_Library\n", + "Getting /wiki/Secretary_of_the_United_States_Senate\n", + "Getting /wiki/Chaplain_of_the_United_States_Senate\n", + "Getting /wiki/Curator_of_the_United_States_Senate\n", + "Getting /wiki/Historian_of_the_United_States_Senate\n", + "Getting /wiki/United_States_Senate_Librarian\n", + "Getting /wiki/Page_of_the_United_States_Senate\n", + "Getting /wiki/Parliamentarian_of_the_United_States_Senate\n", + "Getting /wiki/Sergeant_at_Arms_of_the_United_States_Senate\n", + "Getting /wiki/Chaplain_of_the_United_States_House_of_Representatives\n", + "Getting /wiki/Chief_Administrative_Officer_of_the_United_States_House_of_Representatives\n", + "Getting /wiki/Clerk_of_the_United_States_House_of_Representatives\n", + "Getting /wiki/Doorkeeper_of_the_United_States_House_of_Representatives\n", + "Getting /wiki/Director_of_Floor_Operations\n", + "Getting /wiki/Floor_Services_Chief\n", + "Getting /wiki/Historian_of_the_United_States_House_of_Representatives\n", + "Getting /wiki/Page_of_the_United_States_House_of_Representatives\n", + "Getting /wiki/House_Page_Board\n", + "Getting /wiki/Parliamentarian_of_the_United_States_House_of_Representatives\n", + "Getting /wiki/Postmaster_of_the_United_States_House_of_Representatives\n", + "Getting /wiki/Reading_Clerk_of_the_United_States_House_of_Representatives\n", + "Getting /wiki/Sergeant_at_Arms_of_the_United_States_House_of_Representatives\n", + "Getting /wiki/Library_of_Congress\n", + "Getting /wiki/Congressional_Research_Service\n", + "Getting /wiki/Congressional_Research_Service_reports\n", + "Getting /wiki/United_States_Copyright_Office\n", + "Getting /wiki/Register_of_Copyrights\n", + "Getting /wiki/Law_Library_of_Congress\n", + "Getting /wiki/United_States_Poet_Laureate\n", + "Getting /wiki/THOMAS\n", + "Getting /wiki/John_Adams_Building\n", + "Getting /wiki/Thomas_Jefferson_Building\n", + "Getting /wiki/James_Madison_Memorial_Building\n", + "Getting /wiki/United_States_Government_Publishing_Office\n", + "Getting /wiki/Public_Printer_of_the_United_States\n", + "Getting /wiki/Congressional_Pictorial_Directory\n", + "Getting /wiki/Congressional_Record\n", + "Getting /wiki/Official_Congressional_Directory\n", + "Getting /wiki/United_States_Government_Manual\n", + "Getting /wiki/United_States_Congressional_Serial_Set\n", + "Getting /wiki/United_States_Statutes_at_Large\n", + "Getting /wiki/United_States_Capitol\n", + "Getting /wiki/Brumidi_Corridors\n", + "Getting /wiki/Congressional_Prayer_Room\n", + "Getting /wiki/United_States_Capitol_crypt\n", + "Getting /wiki/United_States_Capitol_dome\n", + "Getting /wiki/Statue_of_Freedom\n", + "Getting /wiki/United_States_Capitol_rotunda\n", + "Getting /wiki/Hall_of_Columns\n", + "Getting /wiki/National_Statuary_Hall\n", + "Getting /wiki/United_States_Capitol_Visitor_Center\n", + "Getting /wiki/The_Apotheosis_of_Washington\n", + "Getting /wiki/Statue_of_Freedom\n", + "Getting /wiki/Declaration_of_Independence_(painting)\n", + "Getting /wiki/Scene_at_the_Signing_of_the_Constitution_of_the_United_States\n", + "Getting /wiki/Apotheosis_of_Democracy\n", + "Getting /wiki/Progress_of_Civilization_Pediment\n", + "Getting /wiki/First_Reading_of_the_Emancipation_Proclamation_of_President_Lincoln\n", + "Getting /wiki/Surrender_of_General_Burgoyne\n", + "Getting /wiki/Surrender_of_Lord_Cornwallis\n", + "Getting /wiki/George_Washington_and_the_Revolutionary_War_Door\n", + "Getting /wiki/Revolutionary_War_Door\n", + "Getting /wiki/Columbus_Doors\n", + "Getting /wiki/Washington_at_Princeton\n", + "Getting /wiki/Westward_the_Course_of_Empire_Takes_Its_Way\n", + "Getting /wiki/Vice_President%27s_Room\n", + "Getting /wiki/United_States_Senate_Vice_Presidential_Bust_Collection\n", + "Getting /wiki/Congressional_office_buildings\n", + "Getting /wiki/Dirksen_Senate_Office_Building\n", + "Getting /wiki/Hart_Senate_Office_Building\n", + "Getting /wiki/Mountains_and_Clouds\n", + "Getting /wiki/Russell_Senate_Office_Building\n", + "Getting /wiki/House_Office_Building_Commission\n", + "Getting /wiki/Cannon_House_Office_Building\n", + "Getting /wiki/Ford_House_Office_Building\n", + "Getting /wiki/Longworth_House_Office_Building\n", + "Getting /wiki/O%27Neill_House_Office_Building\n", + "Getting /wiki/Rayburn_House_Office_Building\n", + "Getting /wiki/United_States_Botanic_Garden\n", + "Getting /wiki/Senate_Staff_Health_and_Fitness_Facility\n", + "Getting /wiki/Recording_Studio_of_the_United_States_House_of_Representatives\n", + "Getting /wiki/United_States_Senate_chamber\n", + "Getting /wiki/Old_Senate_Chamber\n", + "Getting /wiki/Old_Supreme_Court_Chamber\n", + "Getting /wiki/Capitol_Power_Plant\n", + "Getting /wiki/Daniel_Webster_Senate_Page_Residence\n", + "Getting /wiki/United_States_Capitol_subway_system\n", + "Getting /wiki/Capitol_Hill\n", + "Getting /wiki/United_States_Capitol_cornerstone_laying\n", + "Getting /wiki/Law_of_the_United_States\n", + "Getting /wiki/United_States_constitutional_law\n", + "Getting /wiki/List_of_United_States_federal_legislation\n", + "Getting /wiki/Federalism_in_the_United_States\n", + "Getting /wiki/Separation_of_powers_under_the_United_States_Constitution\n", + "Getting /wiki/Civil_liberties_in_the_United_States\n", + "Getting /wiki/Act_of_Congress\n", + "Getting /wiki/Bill_(United_States_Congress)\n", + "Getting /wiki/Courts_of_the_United_States\n", + "Getting /wiki/United_States_federal_courts\n", + "Getting /wiki/Supreme_Court_of_the_United_States\n", + "Getting /wiki/United_States_courts_of_appeals\n", + "Getting /wiki/United_States_district_court\n", + "Getting /wiki/List_of_United_States_district_and_territorial_courts\n", + "Getting /wiki/United_States_bankruptcy_court\n", + "Getting /wiki/United_States_Court_of_Federal_Claims\n", + "Getting /wiki/United_States_Court_of_International_Trade\n", + "Getting /wiki/United_States_Tax_Court\n", + "Getting /wiki/State_court_(United_States)\n", + "Getting /wiki/State_supreme_court\n", + "Getting /wiki/Legal_education_in_the_United_States\n", + "Getting /wiki/Law_school_in_the_United_States\n", + "Getting /wiki/Law_School_Admission_Test\n", + "Getting /wiki/Bar_examination_in_the_United_States\n", + "Getting /wiki/Admission_to_the_bar_in_the_United_States\n", + "Getting /wiki/Reading_law\n", + "Getting /wiki/Child_custody_laws_in_the_United_States\n", + "Getting /wiki/Child_sexual_abuse_laws_in_the_United_States\n", + "Getting /wiki/Civil_procedure_in_the_United_States\n", + "Getting /wiki/Conflict_of_laws_in_the_United_States\n", + "Getting /wiki/United_States_constitutional_law\n", + "Getting /wiki/United_States_contract_law\n", + "Getting /wiki/Property_law_in_the_United_States\n", + "Getting /wiki/United_States_corporate_law\n", + "Getting /wiki/Criminal_law_of_the_United_States\n", + "Getting /wiki/United_States_criminal_procedure\n", + "Getting /wiki/United_States_energy_law\n", + "Getting /wiki/Gun_law_in_the_United_States\n", + "Getting /wiki/Human_rights_in_the_United_States\n", + "Getting /wiki/American_juvenile_justice_system\n", + "Getting /wiki/Privacy_laws_of_the_United_States\n", + "Getting /wiki/State_privacy_laws_of_the_United_States\n", + "Getting /wiki/Judicial_aspects_of_race_in_the_United_States\n", + "Getting /wiki/State_law_(United_States)\n", + "Getting /wiki/United_States_tort_law\n", + "Getting /wiki/United_States_trust_law\n", + "Getting /wiki/Code_of_law\n", + "Getting /wiki/Statutes_of_Canada\n", + "Getting /wiki/Philippine_legal_codes\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Getting /wiki/Swedish_Code_of_Statutes\n", + "Getting /wiki/Danish_Code\n", + "Getting /wiki/Norwegian_Code\n", + "Getting /wiki/United_States_Congress\n", + "Already fetched /wiki/Main_Page\n", + "Already fetched /wiki/Main_Page\n", + "Already fetched /wiki/United_States_Congress\n", + "Already fetched /wiki/United_States_Congress\n", + "Already fetched /wiki/United_States_Congress\n", + "Getting /wiki/American_Parliament_(disambiguation)\n", + "Getting /wiki/118th_United_States_Congress\n", + "Getting /wiki/United_States_Capitol\n", + "Getting /wiki/Geographic_coordinate_system\n", + "Getting /wiki/118th_United_States_Congress\n", + "Getting /wiki/Bicameralism\n", + "Getting /wiki/United_States_Senate\n", + "Getting /wiki/United_States_House_of_Representatives\n", + "Getting /wiki/Congress_of_the_Confederation\n", + "Getting /wiki/Vice_President_of_the_United_States\n", + "Getting /wiki/Kamala_Harris\n", + "Getting /wiki/Democratic_Party_(United_States)\n", + "Getting /wiki/Inauguration_of_Joe_Biden\n", + "Getting /wiki/President_pro_tempore_of_the_United_States_Senate\n", + "Getting /wiki/Patty_Murray\n", + "Getting /wiki/Democratic_Party_(United_States)\n", + "Getting /wiki/Party_leaders_of_the_United_States_Senate\n", + "Getting /wiki/Chuck_Schumer\n", + "Getting /wiki/Democratic_Party_(United_States)\n", + "Getting /wiki/Speaker_of_the_United_States_House_of_Representatives\n", + "Getting /wiki/Kevin_McCarthy\n", + "Getting /wiki/Republican_Party_(United_States)\n", + "Getting /wiki/Party_leaders_of_the_United_States_House_of_Representatives\n", + "Getting /wiki/Steve_Scalise\n", + "Getting /wiki/Republican_Party_(United_States)\n", + "Getting /wiki/Non-voting_members_of_the_United_States_House_of_Representatives\n", + "Getting /wiki/United_States_Senate\n", + "Getting /wiki/Democratic_Party_(United_States)\n", + "Getting /wiki/Independent_politician\n", + "Getting /wiki/Republican_Party_(United_States)\n", + "Getting /wiki/United_States_House_of_Representatives\n", + "Getting /wiki/Republican_Party_(United_States)\n", + "Getting /wiki/Democratic_Party_(United_States)\n", + "Getting /wiki/United_States_Senate\n", + "Getting /wiki/2022_United_States_Senate_elections\n", + "Getting /wiki/United_States_House_of_Representatives\n", + "Getting /wiki/2022_United_States_House_of_Representatives_elections\n", + "Getting /wiki/United_States_Senate\n", + "Getting /wiki/2024_United_States_Senate_elections\n", + "Getting /wiki/United_States_House_of_Representatives\n", + "Getting /wiki/2024_United_States_House_of_Representatives_elections\n", + "Getting /wiki/United_States_Capitol\n", + "Getting /wiki/Washington,_D.C.\n", + "Getting /wiki/United_States\n", + "Getting /wiki/Constitution_of_the_United_States\n", + "Getting /wiki/Politics_of_the_United_States\n", + "Getting /wiki/Federal_government_of_the_United_States\n", + "Getting /wiki/Constitution_of_the_United_States\n", + "Getting /wiki/Law_of_the_United_States\n", + "Getting /wiki/Taxation_in_the_United_States\n", + "Getting /wiki/Public_policy_of_the_United_States\n", + "Getting /wiki/United_States_House_of_Representatives\n", + "Getting /wiki/Speaker_of_the_United_States_House_of_Representatives\n", + "Getting /wiki/Kevin_McCarthy\n", + "Getting /wiki/Party_leaders_of_the_United_States_House_of_Representatives\n", + "Getting /wiki/Steve_Scalise\n", + "Getting /wiki/Party_leaders_of_the_United_States_House_of_Representatives\n", + "Getting /wiki/Hakeem_Jeffries\n", + "Getting /wiki/United_States_congressional_district\n", + "Getting /wiki/List_of_United_States_congressional_districts\n", + "Getting /wiki/United_States_Senate\n", + "Getting /wiki/Vice_President_of_the_United_States\n", + "Getting /wiki/Kamala_Harris\n", + "Getting /wiki/President_pro_tempore_of_the_United_States_Senate\n", + "Getting /wiki/Patty_Murray\n", + "Getting /wiki/Party_leaders_of_the_United_States_Senate\n", + "Getting /wiki/Chuck_Schumer\n", + "Getting /wiki/Party_leaders_of_the_United_States_Senate\n", + "Getting /wiki/Mitch_McConnell\n", + "Getting /wiki/Executive_branch_of_the_United_States\n", + "Getting /wiki/President_of_the_United_States\n", + "Getting /wiki/Joe_Biden\n", + "Getting /wiki/Vice_President_of_the_United_States\n", + "Getting /wiki/Kamala_Harris\n", + "Getting /wiki/Cabinet_of_the_United_States\n", + "Getting /wiki/List_of_federal_agencies_in_the_United_States\n", + "Getting /wiki/Executive_Office_of_the_President_of_the_United_States\n", + "Getting /wiki/Federal_judiciary_of_the_United_States\n", + "Getting /wiki/Supreme_Court_of_the_United_States\n", + "Getting /wiki/Chief_Justice_of_the_United_States\n", + "Getting /wiki/John_Roberts\n", + "Getting /wiki/Clarence_Thomas\n", + "Getting /wiki/Samuel_Alito\n", + "Getting /wiki/Sonia_Sotomayor\n", + "Getting /wiki/Elena_Kagan\n", + "Getting /wiki/Neil_Gorsuch\n", + "Getting /wiki/Brett_Kavanaugh\n", + "Getting /wiki/Amy_Coney_Barrett\n", + "Getting /wiki/Ketanji_Brown_Jackson\n", + "Getting /wiki/United_States_courts_of_appeals\n", + "Getting /wiki/United_States_district_court\n", + "Getting /wiki/List_of_United_States_district_and_territorial_courts\n", + "Getting /wiki/Federal_tribunals_in_the_United_States\n", + "Getting /wiki/Elections_in_the_United_States\n", + "Getting /wiki/United_States_presidential_election\n", + "Getting /wiki/United_States_midterm_election\n", + "Getting /wiki/Off-year_election\n", + "Getting /wiki/Primary_election\n", + "Getting /wiki/United_States_presidential_primary\n", + "Getting /wiki/Elections_in_Alabama\n", + "Getting /wiki/Elections_in_Alaska\n", + "Getting /wiki/Elections_in_Arizona\n", + "Getting /wiki/Elections_in_Arkansas\n", + "Getting /wiki/Elections_in_California\n", + "Getting /wiki/Elections_in_Colorado\n", + "Getting /wiki/Elections_in_Connecticut\n", + "Getting /wiki/Elections_in_Delaware\n", + "Getting /wiki/Elections_in_the_District_of_Columbia\n", + "Getting /wiki/Elections_in_Florida\n", + "Getting /wiki/Elections_in_Georgia_(U.S._state)\n", + "Getting /wiki/Elections_in_Hawaii\n", + "Getting /wiki/Elections_in_Idaho\n", + "Getting /wiki/Elections_in_Illinois\n", + "Getting /wiki/Elections_in_Indiana\n", + "Getting /wiki/Elections_in_Iowa\n", + "Getting /wiki/Elections_in_Kansas\n", + "Getting /wiki/Elections_in_Kentucky\n", + "Getting /wiki/Elections_in_Louisiana\n", + "Getting /wiki/Elections_in_Maine\n", + "Getting /wiki/Elections_in_Maryland\n", + "Getting /wiki/List_of_elections_in_Massachusetts\n", + "Getting /wiki/Elections_in_Michigan\n", + "Getting /wiki/Elections_in_Minnesota\n", + "Getting /wiki/Elections_in_Mississippi\n", + "Getting /wiki/Elections_in_Missouri\n", + "Getting /wiki/Elections_in_Montana\n", + "Getting /wiki/Elections_in_Nebraska\n", + "Getting /wiki/Elections_in_Nevada\n", + "Getting /wiki/Elections_in_New_Hampshire\n", + "Getting /wiki/Elections_in_New_Jersey\n", + "Getting /wiki/Elections_in_New_Mexico\n", + "Getting /wiki/Elections_in_New_York_(state)\n", + "Getting /wiki/Elections_in_North_Carolina\n", + "Getting /wiki/Elections_in_North_Dakota\n", + "Getting /wiki/Elections_in_Ohio\n", + "Getting /wiki/Elections_in_Oklahoma\n", + "Getting /wiki/Elections_in_Oregon\n", + "Getting /wiki/Elections_in_Pennsylvania\n", + "Getting /wiki/Elections_in_Rhode_Island\n", + "Getting /wiki/Elections_in_South_Carolina\n", + "Getting /wiki/Elections_in_South_Dakota\n", + "Getting /wiki/Elections_in_Tennessee\n", + "Getting /wiki/Elections_in_Texas\n", + "Getting /wiki/Elections_in_Utah\n", + "Getting /wiki/Elections_in_Vermont\n", + "Getting /wiki/Elections_in_Virginia\n", + "Getting /wiki/Elections_in_Washington_(state)\n", + "Getting /wiki/Elections_in_West_Virginia\n", + "Getting /wiki/Elections_in_Wisconsin\n", + "Getting /wiki/Elections_in_Wyoming\n", + "Getting /wiki/Elections_in_American_Samoa\n", + "Getting /wiki/Elections_in_Guam\n", + "Getting /wiki/Elections_in_the_Northern_Mariana_Islands\n", + "Getting /wiki/Elections_in_Puerto_Rico\n", + "Getting /wiki/Elections_in_the_United_States_Virgin_Islands\n", + "Getting /wiki/List_of_elections_in_the_United_States\n", + "Getting /wiki/Political_parties_in_the_United_States\n", + "Getting /wiki/Democratic_Party_(United_States)\n", + "Getting /wiki/Republican_Party_(United_States)\n", + "Getting /wiki/Third_party_(United_States)\n", + "Getting /wiki/Libertarian_Party_(United_States)\n", + "Getting /wiki/Green_Party_of_the_United_States\n", + "Getting /wiki/List_of_political_parties_in_the_United_States\n", + "Getting /wiki/Political_ideologies_in_the_United_States\n", + "Getting /wiki/Conservatism_in_the_United_States\n", + "Getting /wiki/History_of_conservatism_in_the_United_States\n", + "Getting /wiki/Black_conservatism\n", + "Getting /wiki/Neoconservatism\n", + "Getting /wiki/Paleoconservatism\n", + "Getting /wiki/Social_conservatism_in_the_United_States\n", + "Getting /wiki/Traditionalist_conservatism_in_the_United_States\n", + "Getting /wiki/Liberalism_in_the_United_States\n", + "Getting /wiki/Modern_liberalism_in_the_United_States\n", + "Getting /wiki/Progressivism_in_the_United_States\n", + "Getting /wiki/Abolitionism_in_the_United_States\n", + "Getting /wiki/Constitutionalism_in_the_United_States\n", + "Getting /wiki/Environmentalism_in_the_United_States\n", + "Getting /wiki/Feminism_in_the_United_States\n", + "Getting /wiki/Libertarianism_in_the_United_States\n", + "Getting /wiki/Monarchism_in_the_United_States\n", + "Getting /wiki/Populism_in_the_United_States\n", + "Getting /wiki/Protectionism_in_the_United_States\n", + "Getting /wiki/Republicanism_in_the_United_States\n", + "Getting /wiki/Socialism_in_the_United_States\n", + "Getting /wiki/Anarchism_in_the_United_States\n", + "Getting /wiki/Individualist_anarchism_in_the_United_States\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Getting /wiki/Political_culture_of_the_United_States\n", + "Getting /wiki/Political_polarization_in_the_United_States\n", + "Getting /wiki/Federalism_in_the_United_States\n", + "Getting /wiki/U.S._state\n", + "Getting /wiki/State_governments_of_the_United_States\n", + "Getting /wiki/Political_ideology_of_states_in_the_United_States\n", + "Getting /wiki/List_of_current_United_States_governors\n", + "Getting /wiki/State_legislature_(United_States)\n", + "Getting /wiki/List_of_United_States_state_legislatures\n", + "Getting /wiki/State_court_(United_States)\n", + "Getting /wiki/Local_government_in_the_United_States\n", + "Getting /wiki/Foreign_relations_of_the_United_States\n", + "Getting /wiki/United_States_Department_of_State\n", + "Getting /wiki/United_States_Secretary_of_State\n", + "Getting /wiki/Antony_Blinken\n", + "Getting /wiki/List_of_diplomatic_missions_of_the_United_States\n", + "Getting /wiki/List_of_diplomatic_missions_in_the_United_States\n", + "Getting /wiki/Citizenship_of_the_United_States\n", + "Getting /wiki/United_States_passport\n", + "Getting /wiki/Visa_requirements_for_United_States_citizens\n", + "Getting /wiki/Visa_policy_of_the_United_States\n", + "Getting /wiki/United_States_and_the_United_Nations\n", + "Getting /wiki/United_Nations_Security_Council\n", + "Getting /wiki/Permanent_members_of_the_United_Nations_Security_Council\n", + "Getting /wiki/NATO\n", + "Getting /wiki/G20\n", + "Getting /wiki/Group_of_Seven\n", + "Getting /wiki/Russia%E2%80%93United_States_relations\n", + "Getting /wiki/China%E2%80%93United_States_relations\n", + "Getting /wiki/India%E2%80%93United_States_relations\n", + "Getting /wiki/Japan%E2%80%93United_States_relations\n", + "Getting /wiki/Canada%E2%80%93United_States_relations\n", + "Getting /wiki/United_Kingdom%E2%80%93United_States_relations\n", + "Getting /wiki/United_States%E2%80%93European_Union_relations\n", + "Getting /wiki/Latin_America%E2%80%93United_States_relations\n", + "Getting /wiki/Arab%E2%80%93American_relations\n", + "Getting /wiki/Greece-United_States_relations\n", + "Getting /wiki/Legislature\n", + "Getting /wiki/Federal_government_of_the_United_States\n", + "Getting /wiki/Bicameralism\n", + "Getting /wiki/United_States_House_of_Representatives\n", + "Getting /wiki/United_States_Senate\n", + "Getting /wiki/U.S._Capitol\n", + "Getting /wiki/Washington,_D.C.\n", + "Getting /wiki/Direct_election\n", + "Getting /wiki/Governor_(United_States)\n", + "Getting /wiki/U.S._vice_president\n", + "Getting /wiki/Non-voting_members_of_the_United_States_House_of_Representatives\n", + "Getting /wiki/Elections_in_the_United_States\n", + "Getting /wiki/Election_Day_(United_States)\n", + "Getting /wiki/Reapportionment_Act_of_1929\n", + "Getting /wiki/Congressional_districts_of_the_United_States\n", + "Getting /wiki/United_States_congressional_apportionment\n", + "Getting /wiki/U.S._state\n", + "Getting /wiki/Representation_by_population\n", + "Getting /wiki/U.S._census\n", + "Getting /wiki/Staggered_elections\n", + "Getting /wiki/Article_One_of_the_U.S._Constitution\n", + "Getting /wiki/U.S._Constitution\n", + "Getting /wiki/Congress_of_the_Confederation\n", + "Getting /wiki/Two-party_system\n", + "Getting /wiki/Democratic_Party_(United_States)\n", + "Getting /wiki/Republican_Party_(United_States)\n", + "Getting /wiki/Third-party_members_of_the_United_States_House_of_Representatives\n", + "Getting /wiki/Independent_(politician)\n", + "Getting /wiki/Library_of_Congress\n", + "Getting /wiki/Article_One_of_the_United_States_Constitution\n", + "Getting /wiki/President_of_the_United_States\n", + "Getting /wiki/Revenue\n", + "Getting /wiki/Andrew_Johnson\n", + "Getting /wiki/Federal_impeachment_in_the_United_States\n", + "Getting /wiki/Congress\n", + "Getting /wiki/117th_United_States_Congress\n", + "Getting /wiki/Twentieth_Amendment_to_the_United_States_Constitution\n", + "Getting /wiki/Lee_H._Hamilton\n", + "Getting /wiki/Supreme_court_justices\n", + "Getting /wiki/Southern_United_States\n", + "Getting /wiki/American_west\n", + "Getting /wiki/Demographic\n", + "Getting /wiki/Minorities\n", + "Getting /wiki/Government\n", + "Getting /wiki/Political_party\n", + "Getting /wiki/Civic_associations\n", + "Getting /wiki/Lobbying\n", + "Getting /wiki/Mass_media\n", + "Getting /wiki/National_Archives_and_Records_Administration\n", + "Getting /wiki/Washington,_D.C.\n", + "Getting /wiki/History_of_the_United_States_Congress\n", + "Getting /wiki/First_Continental_Congress\n", + "Getting /wiki/Thirteen_Colonies\n", + "Getting /wiki/Second_Continental_Congress\n", + "Getting /wiki/Declaration_of_Independence_of_the_United_States\n", + "Getting /wiki/Articles_of_Confederation\n", + "Getting /wiki/Congress_of_the_Confederation\n", + "Getting /wiki/Unicameralism\n", + "Getting /wiki/Scene_at_the_Signing_of_the_Constitution_of_the_United_States\n", + "Getting /wiki/George_Washington\n", + "Getting /wiki/United_States_Constitution\n", + "Getting /wiki/Philadelphia_Convention\n", + "Getting /wiki/Connecticut_Compromise\n", + "Getting /wiki/Rep_by_pop\n", + "Getting /wiki/Federalism\n", + "Getting /wiki/Separation_of_powers\n", + "Getting /wiki/Julian_E._Zelizer\n", + "Getting /wiki/Federalist_Party\n", + "Getting /wiki/Anti-Federalism\n", + "Getting /wiki/United_States_Bill_of_Rights\n", + "Getting /wiki/Anti-Administration_Party\n", + "Getting /wiki/James_Madison\n", + "Getting /wiki/Thomas_Jefferson\n", + "Getting /wiki/Alexander_Hamilton\n", + "Getting /wiki/Democratic-Republican_Party\n", + "Getting /wiki/First_Party_System\n", + "Getting /wiki/Peaceful_transition_of_power\n", + "Getting /wiki/John_Marshall\n", + "Getting /wiki/Supreme_Court_of_the_United_States\n", + "Getting /wiki/Judicial_review_in_the_United_States\n", + "Getting /wiki/Marbury_v._Madison\n", + "Getting /wiki/American_Civil_War\n", + "Getting /wiki/States_rights\n", + "Getting /wiki/Gilded_Age\n", + "Getting /wiki/History_of_the_United_States_Republican_Party\n", + "Getting /wiki/Ulysses_S._Grant\n", + "Getting /wiki/Progressive_Era\n", + "Getting /wiki/Speaker_of_the_United_States_House_of_Representatives\n", + "Getting /wiki/Thomas_Brackett_Reed\n", + "Getting /wiki/Joseph_Gurney_Cannon\n", + "Getting /wiki/United_States_congressional_committees\n", + "Getting /wiki/Direct_popular_election\n", + "Getting /wiki/Seventeenth_Amendment_to_the_United_States_Constitution\n", + "Getting /wiki/Supreme_Court_of_the_United_States\n", + "Getting /wiki/Commerce_clause\n", + "Getting /wiki/Lame_duck_(politics)\n", + "Getting /wiki/Twentieth_amendment_to_the_United_States_Constitution\n", + "Getting /wiki/Great_Depression\n", + "Getting /wiki/Franklin_Roosevelt\n", + "Getting /wiki/New_Deal\n", + "Getting /wiki/Franklin_D._Roosevelt\n", + "Getting /wiki/White_House\n", + "Getting /wiki/Democratic_Party_(United_States)\n", + "Getting /wiki/Conservative_Coalition\n", + "Getting /wiki/World_War_II\n", + "Getting /wiki/Joseph_McCarthy\n", + "Getting /wiki/McCarthyism\n", + "Getting /wiki/John_F._Kennedy\n", + "Getting /wiki/Party_divisions_of_United_States_Congresses\n", + "Getting /wiki/Senate_filibuster\n", + "Getting /wiki/Lyndon_Johnson\n", + "Getting /wiki/Great_Society\n", + "Getting /wiki/Watergate_Scandal\n", + "Getting /wiki/Bruce_J._Schulman\n", + "Getting /wiki/Lobbying_in_the_United_States\n", + "Getting /wiki/Federal_Election_Campaign_Act\n", + "Getting /wiki/Political_action_committee\n", + "Getting /wiki/Soft_Money\n", + "Getting /wiki/Bipartisan_Campaign_Reform_Act\n", + "Getting /wiki/Association_of_Trial_Lawyers_of_America\n", + "Getting /wiki/International_Brotherhood_of_Electrical_Workers\n", + "Getting /wiki/National_Association_of_Realtors\n", + "Getting /wiki/Resident_Commissioner_of_Puerto_Rico\n", + "Getting /wiki/United_States_Virgin_Islands%27s_at-large_congressional_district\n", + "Getting /wiki/Guam%27s_at-large_congressional_district\n", + "Getting /wiki/American_Samoa%27s_at-large_congressional_district\n", + "Getting /wiki/United_States_congressional_delegations_from_the_Northern_Mariana_Islands\n", + "Getting /wiki/Floor_privileges_of_the_united_states_senate\n", + "Getting /wiki/Committee_of_the_Whole_(United_States_House_of_Representatives)\n", + "Getting /wiki/United_States_Congress_Bicentennial_commemorative_coins\n", + "Getting /wiki/Michael_Schudson\n", + "Getting /wiki/Norman_Ornstein\n", + "Getting /wiki/Tabloidization\n", + "Getting /wiki/Brinkmanship\n", + "Getting /wiki/Donald_Trump\n", + "Getting /wiki/January_6_United_States_Capitol_attack\n", + "Getting /wiki/Burning_of_Washington\n", + "Getting /wiki/Cult_of_domesticity\n", + "Getting /wiki/Widow%27s_succession\n", + "Getting /wiki/Second-wave_feminism\n", + "Getting /wiki/Emily%E2%80%99s_List\n", + "Getting /wiki/Clarence_Thomas_Supreme_Court_nomination\n", + "Getting /wiki/2016_United_States_presidential_election\n", + "Getting /wiki/Year_of_the_Woman\n", + "Getting /wiki/The_Squad_(United_States_Congress)\n", + "Getting /wiki/Jim_Crow_laws\n", + "Getting /wiki/Voter_suppression_in_the_United_States\n", + "Getting /wiki/Voting_Rights_Act_of_1965\n", + "Getting /wiki/White_people\n", + "Getting /wiki/Carol_Moseley_Braun\n", + "Getting /wiki/Mazie_Hirono\n", + "Getting /wiki/Powers_of_the_United_States_Congress\n", + "Getting /wiki/Power_of_the_purse\n", + "Getting /wiki/Article_One_of_the_United_States_Constitution\n", + "Getting /wiki/Constitutional_amendment\n", + "Getting /wiki/Implied_powers\n", + "Getting /wiki/Necessary_and_Proper_Clause\n", + "Getting /wiki/Keynesian_economics\n", + "Getting /wiki/Sixteenth_Amendment_to_the_United_States_Constitution\n", + "Getting /wiki/Income_tax\n", + "Getting /wiki/Power_of_the_purse\n", + "Getting /wiki/Separation_of_powers_under_the_United_States_Constitution#Checks_and_balances\n", + "Getting /wiki/Commerce_Clause\n", + "Getting /wiki/Appropriations_bill_(United_States)\n", + "Getting /wiki/USS_Bon_Homme_Richard_(CV-31)\n", + "Getting /wiki/Defense_(military)\n", + "Getting /wiki/Military_of_the_United_States\n", + "Getting /wiki/Executive_branch\n", + "Getting /wiki/War_of_1812\n", + "Getting /wiki/Mexican%E2%80%93American_War\n", + "Getting /wiki/Spanish%E2%80%93American_War\n", + "Getting /wiki/World_War_I\n", + "Getting /wiki/World_War_II\n", + "Getting /wiki/Theodore_Roosevelt\n", + "Getting /wiki/Korean_War\n", + "Getting /wiki/Harry_S._Truman\n", + "Getting /wiki/Time_(magazine)\n", + "Getting /wiki/Michael_Kinsley\n", + "Getting /wiki/Copyright\n", + "Getting /wiki/Inferior_courts_of_the_United_States\n", + "Getting /wiki/Article_Four_of_the_United_States_Constitution\n", + "Getting /wiki/Senate_Watergate_Committee\n", + "Getting /wiki/Richard_Nixon\n", + "Getting /wiki/Watergate_scandal\n", + "Getting /wiki/Congressional_investigation\n", + "Getting /wiki/Congressional_oversight\n", + "Getting /wiki/United_States_congressional_committee\n", + "Getting /wiki/Congressional_oversight\n", + "Getting /wiki/Plame_affair\n", + "Getting /wiki/Henry_A._Waxman\n", + "Getting /wiki/Warrantless_wiretapping\n", + "Getting /wiki/Federal_impeachment_in_the_United_States\n", + "Getting /wiki/Unitary_executive\n", + "Getting /wiki/Signing_statements\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Getting /wiki/Ronald_Reagan\n", + "Getting /wiki/George_H._W._Bush\n", + "Getting /wiki/Bill_Clinton\n", + "Getting /wiki/George_W._Bush\n", + "Getting /wiki/American_Bar_Association\n", + "Getting /wiki/George_F._Will\n", + "Getting /wiki/Thirteenth_Amendment_to_the_United_States_Constitution\n", + "Getting /wiki/Fourteenth_Amendment_to_the_United_States_Constitution\n", + "Getting /wiki/Fifteenth_Amendment_to_the_United_States_Constitution\n", + "Getting /wiki/Voting_rights\n", + "Getting /wiki/Due_process\n", + "Getting /wiki/Equal_protection\n", + "Getting /wiki/Implied_powers\n", + "Getting /wiki/Necessary_and_Proper_Clause\n", + "Getting /wiki/Commerce_Clause\n", + "Getting /wiki/McCulloch_v_Maryland\n", + "Getting /wiki/Territories_of_the_United_States\n", + "Getting /wiki/Washington,_D.C.\n", + "Getting /wiki/Guam\n", + "Getting /wiki/American_Samoa\n", + "Getting /wiki/Puerto_Rico\n", + "Getting /wiki/U.S._Virgin_Islands\n", + "Getting /wiki/Northern_Mariana_Islands\n", + "Getting /wiki/U.S._Congress_in_relation_to_the_president_and_Supreme_Court\n", + "Getting /wiki/United_States_Capitol\n", + "Getting /wiki/United_States_Supreme_Court_building\n", + "Getting /wiki/Lee_H._Hamilton\n", + "Getting /wiki/Separation_of_powers_under_the_United_States_Constitution\n", + "Getting /wiki/Impeachment_of_Andrew_Johnson\n", + "Getting /wiki/Andrew_Johnson\n", + "Getting /wiki/Theodore_Roosevelt\n", + "Getting /wiki/Woodrow_Wilson\n", + "Getting /wiki/Franklin_D._Roosevelt\n", + "Getting /wiki/Richard_Nixon\n", + "Getting /wiki/Ronald_Reagan\n", + "Getting /wiki/George_W._Bush\n", + "Getting /wiki/Congressional_Budget_and_Impoundment_Control_Act_of_1974\n", + "Getting /wiki/War_Powers_Resolution\n", + "Getting /wiki/Impeachment_trial_of_Bill_Clinton\n", + "Getting /wiki/William_H._Rehnquist\n", + "Getting /wiki/Federal_impeachment_in_the_United_States\n", + "Getting /wiki/Defendant\n", + "Getting /wiki/Andrew_Johnson\n", + "Getting /wiki/Bill_Clinton\n", + "Getting /wiki/Donald_Trump\n", + "Getting /wiki/Trial_(law)\n", + "Getting /wiki/Conviction_(law)\n", + "Getting /wiki/Richard_Nixon\n", + "Getting /wiki/House_Judiciary_Committee\n", + "Getting /wiki/Cabinet_of_the_United_States\n", + "Getting /wiki/Hillary_Clinton\n", + "Getting /wiki/Judicial_review\n", + "Getting /wiki/Marbury_v._Madison\n", + "Getting /wiki/Unconstitutional\n", + "Getting /wiki/Founding_Fathers_of_the_United_States\n", + "Getting /wiki/Alexander_Hamilton\n", + "Getting /wiki/Federalist_No._78\n", + "Getting /wiki/Originalism\n", + "Getting /wiki/Dred_Scott\n", + "Getting /wiki/St._Clair%27s_Defeat\n", + "Getting /wiki/Subpoena\n", + "Getting /wiki/Contempt_of_Congress\n", + "Getting /wiki/Perjury\n", + "Getting /wiki/United_States_House_Permanent_Select_Committee_on_Intelligence\n", + "Getting /wiki/United_States_Senate_Select_Committee_on_Intelligence\n", + "Getting /wiki/Structure_of_the_United_States_Congress\n", + "Getting /wiki/Government_Accountability_Office\n", + "Getting /wiki/Library_of_Congress\n", + "Getting /wiki/Congress_Hall\n", + "Already fetched /wiki/Philadelphia\n", + "Getting /wiki/United_States_congressional_committee\n", + "Getting /wiki/United_States_congressional_committee\n", + "Getting /wiki/House_Ways_and_Means_Committee\n", + "Getting /wiki/Discharge_petition\n", + "Getting /wiki/United_States_congressional_subcommittee\n", + "Getting /wiki/Speaker_of_the_United_States_House_of_Representatives\n", + "Getting /wiki/Ex_officio\n", + "Getting /wiki/President_pro_tempore_of_the_United_States_Senate\n", + "Getting /wiki/Library_of_Congress\n", + "Getting /wiki/Capitol_Hill\n", + "Getting /wiki/National_Library_Service_for_the_Blind_and_Physically_Handicapped\n", + "Getting /wiki/National_Audio-Visual_Conservation_Center\n", + "Getting /wiki/Book_storage\n", + "Getting /wiki/War_of_1812\n", + "Getting /wiki/Thomas_Jefferson\n", + "Getting /wiki/Congressional_Research_Service\n", + "Getting /wiki/Congressional_Budget_Office\n", + "Getting /wiki/List_of_United_States_federal_agencies\n", + "Getting /wiki/Economics\n", + "Getting /wiki/Congressional_Budget_and_Impoundment_Control_Act_of_1974\n", + "Getting /wiki/National_debt\n", + "Getting /wiki/Senate_Committee_on_Appropriations\n", + "Getting /wiki/Lobbying_in_the_United_States\n", + "Getting /wiki/Advocacy_group\n", + "Getting /wiki/Whip_(politics)\n", + "Getting /wiki/Pro_bono\n", + "Getting /wiki/United_States_Capitol_Police\n", + "Getting /wiki/Bipartisanship\n", + "Getting /wiki/Polarization_(politics)\n", + "Getting /wiki/Partisanship\n", + "Getting /wiki/American_Civil_War\n", + "Getting /wiki/Political_science\n", + "Getting /wiki/Procedures_of_the_United_States_Congress\n", + "Getting /wiki/Legislative_session\n", + "Getting /wiki/Special_session\n", + "Getting /wiki/Joint_session_of_the_United_States_Congress\n", + "Getting /wiki/Electoral_votes\n", + "Getting /wiki/State_of_the_Union\n", + "Getting /wiki/State_of_the_Union\n", + "Getting /wiki/Speech_from_the_Throne\n", + "Getting /wiki/Thomas_Jefferson\n", + "Getting /wiki/Woodrow_Wilson\n", + "Getting /wiki/Act_of_Congress\n", + "Getting /wiki/List_of_United_States_federal_legislation\n", + "Getting /wiki/Act_of_Congress\n", + "Getting /wiki/House_Financial_Services_committee\n", + "Getting /wiki/Parliamentary_procedure\n", + "Getting /wiki/Revenue\n", + "Getting /wiki/Appropriations_bill_(United_States)\n", + "Getting /wiki/U.S._House_Committee_on_Rules\n", + "Getting /wiki/Standing_Rules_of_the_Senate\n", + "Getting /wiki/Government_Accountability_Office\n", + "Getting /wiki/Standing_committee\n", + "Getting /wiki/Chairperson\n", + "Getting /wiki/Ranking_minority_member\n", + "Getting /wiki/Enacting_formula\n", + "Getting /wiki/United_States_congressional_conference_committee\n", + "Getting /wiki/Quorum\n", + "Getting /wiki/Quorum_call\n", + "Getting /wiki/Voting_methods_in_deliberative_assemblies\n", + "Getting /wiki/Voting_methods_in_deliberative_assemblies\n", + "Getting /wiki/Proxy_vote\n", + "Getting /wiki/Enrolled_bill\n", + "Getting /wiki/Pocket_veto\n", + "Getting /wiki/U.S._Congress_and_citizens\n", + "Getting /wiki/Incumbency\n", + "Getting /wiki/Life_tenure\n", + "Getting /wiki/Gerrymandering\n", + "Getting /wiki/Stephen_Macedo\n", + "Getting /wiki/Gerrymandering_in_the_United_States\n", + "Getting /wiki/Franking_privilege\n", + "Getting /wiki/Utah\n", + "Getting /wiki/Free_speech\n", + "Getting /wiki/Coattail_effect\n", + "Getting /wiki/Safe_seat\n", + "Getting /wiki/Negative_advertising\n", + "Getting /wiki/The_Federalist_Papers\n", + "Getting /wiki/The_Federalist_Papers\n", + "Getting /wiki/Public_opinion_polls\n", + "Getting /wiki/Gallup_poll\n", + "Getting /wiki/Connecticut_Compromise\n", + "Getting /wiki/California\n", + "Getting /wiki/Wyoming\n", + "Getting /wiki/Sanford_Levinson\n", + "Getting /wiki/Constituency\n", + "Getting /wiki/Richard_Fenno\n", + "Getting /wiki/Henry_Clay\n", + "Getting /wiki/Parliamentary_privilege\n", + "Getting /wiki/Parliamentary_immunity\n", + "Getting /wiki/Treason\n", + "Getting /wiki/Felony\n", + "Getting /wiki/Breach_of_the_peace\n", + "Getting /wiki/Police\n", + "Getting /wiki/Summons\n", + "Getting /wiki/Subpoena\n", + "Getting /wiki/Speech_or_Debate_Clause\n", + "Getting /wiki/Slander\n", + "Getting /wiki/Federal_law\n", + "Getting /wiki/Contempt_of_Congress\n", + "Getting /wiki/Franking\n", + "Getting /wiki/Salaries_of_members_of_the_United_States_Congress\n", + "Getting /wiki/Per_diem\n", + "Getting /wiki/Party_leaders_of_the_United_States_House_of_Representatives\n", + "Getting /wiki/Household_income_in_the_United_States\n", + "Getting /wiki/Washington_D.C.\n", + "Getting /wiki/Change.org\n", + "Getting /wiki/Jim_Cooper\n", + "Getting /wiki/Tennessee\n", + "Getting /wiki/Lawrence_Lessig\n", + "Getting /wiki/Farm_team\n", + "Getting /wiki/K_Street_(Washington,_D.C.)\n", + "Getting /wiki/Federal_Employees_Retirement_System\n", + "Getting /wiki/Civil_Service_Retirement_System\n", + "Getting /wiki/The_Wall_Street_Journal\n", + "Getting /wiki/Twenty-seventh_Amendment_to_the_United_States_Constitution\n", + "Getting /wiki/United_States_Court_of_Appeals_for_the_District_of_Columbia_Circuit\n", + "Getting /wiki/Cost-of-living_index\n", + "Getting /wiki/Supreme_Court_of_the_United_States\n", + "Getting /wiki/Caucuses_of_the_United_States_Congress\n", + "Getting /wiki/Congressional_Archives\n", + "Getting /wiki/Current_members_of_the_United_States_House_of_Representatives\n", + "Getting /wiki/Current_members_of_the_United_States_Senate\n", + "Getting /wiki/Elections_in_the_United_States#Congressional_elections\n", + "Getting /wiki/List_of_United_States_Congresses\n", + "Getting /wiki/Oath_of_office#United_States\n", + "Getting /wiki/Radio_and_Television_Correspondents%27_Association\n", + "Getting /wiki/United_States_Congress_Joint_Select_Committee_on_Deficit_Reduction\n", + "Getting /wiki/United_States_Congressional_Baseball_Game\n", + "Getting /wiki/United_States_congressional_hearing\n", + "Getting /wiki/United_States_presidents_and_control_of_Congress\n", + "Getting /wiki/Independent_Democrat\n", + "Getting /wiki/Angus_King\n", + "Getting /wiki/Bernie_Sanders\n", + "Getting /wiki/Kyrsten_Sinema\n", + "Getting /wiki/Senate_Democratic_Caucus\n", + "Getting /wiki/Politico\n", + "Getting /wiki/Congressional_Research_Service\n", + "Getting /wiki/ISBN_(identifier)\n", + "Getting /wiki/ISBN_(identifier)\n", + "Getting /wiki/ISBN_(identifier)\n", + "Getting /wiki/ISBN_(identifier)\n", + "Getting /wiki/ISBN_(identifier)\n", + "Getting /wiki/ISBN_(identifier)\n", + "Getting /wiki/Wayback_Machine\n", + "Getting /wiki/Wayback_Machine\n", + "Getting /wiki/Erwin_Chemerinsky\n", + "Getting /wiki/ISBN_(identifier)\n", + "Getting /wiki/ISBN_(identifier)\n", + "Getting /wiki/ISBN_(identifier)\n", + "Getting /wiki/Time_(magazine)\n", + "Getting /wiki/Doi_(identifier)\n", + "Getting /wiki/ISSN_(identifier)\n", + "Getting /wiki/S2CID_(identifier)\n", + "Getting /wiki/ISBN_(identifier)\n", + "Getting /wiki/ISBN_(identifier)\n", + "Getting /wiki/Wayback_Machine\n", + "Getting /wiki/Wayback_Machine\n", + "Getting /wiki/ISBN_(identifier)\n", + "Getting /wiki/ISBN_(identifier)\n", + "Getting /wiki/Wayback_Machine\n", + "Getting /wiki/Wayback_Machine\n", + "Getting /wiki/Wayback_Machine\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Getting /wiki/Wayback_Machine\n", + "Getting /wiki/Wayback_Machine\n", + "Getting /wiki/Wayback_Machine\n", + "Getting /wiki/ISBN_(identifier)\n", + "Getting /wiki/ISBN_(identifier)\n", + "Getting /wiki/J._Leslie_Kincaid\n", + "Getting /wiki/Wayback_Machine\n", + "Getting /wiki/Wayback_Machine\n", + "Getting /wiki/John_Charles_Thomas_(jurist)\n", + "Getting /wiki/Wayback_Machine\n", + "Getting /wiki/ISBN_(identifier)\n", + "Getting /wiki/ISBN_(identifier)\n", + "Getting /wiki/Lawfare_(blog)\n", + "Getting /wiki/ISBN_(identifier)\n", + "Getting /wiki/Congressional_Research_Service\n", + "Getting /wiki/Library_of_Congress\n", + "Getting /wiki/Arthur_O%27Sullivan_(economist)\n", + "Getting /wiki/ISBN_(identifier)\n", + "Getting /wiki/ISBN_(identifier)\n", + "Getting /wiki/ISBN_(identifier)\n", + "Getting /wiki/Chris_Cillizza\n", + "Getting /wiki/ISBN_(identifier)\n", + "Getting /wiki/Organisation_for_Economic_Co-operation_and_Development\n", + "Getting /wiki/Karen_Tumulty\n", + "Getting /wiki/ISBN_(identifier)\n", + "Getting /wiki/ISBN_(identifier)\n", + "Getting /wiki/Congressional_district\n", + "Getting /wiki/ISBN_(identifier)\n", + "Getting /wiki/HeinOnline\n", + "Getting /wiki/The_Jurist_(journal)\n", + "Getting /wiki/ProQuest_(identifier)\n", + "Getting /wiki/ISBN_(identifier)\n", + "Getting /wiki/Wayback_Machine\n", + "Getting /wiki/Wayback_Machine\n", + "Getting /wiki/Congressional_Research_Service\n", + "Getting /wiki/Wayback_Machine\n", + "Getting /wiki/Congressional_Research_Service\n", + "Getting /wiki/Congressional_Research_Service\n", + "Getting /wiki/Federal_Reporter\n", + "Getting /wiki/ISBN_(identifier)\n", + "Getting /wiki/ISBN_(identifier)\n", + "Getting /wiki/ISBN_(identifier)\n", + "Getting /wiki/ISBN_(identifier)\n", + "Getting /wiki/ISBN_(identifier)\n", + "Getting /wiki/ISBN_(identifier)\n", + "Getting /wiki/ISBN_(identifier)\n", + "Getting /wiki/ISBN_(identifier)\n", + "Getting /wiki/Doi_(identifier)\n", + "Getting /wiki/S2CID_(identifier)\n", + "Getting /wiki/ISBN_(identifier)\n", + "Getting /wiki/Doi_(identifier)\n", + "Getting /wiki/S2CID_(identifier)\n", + "Getting /wiki/Doi_(identifier)\n", + "Getting /wiki/ISBN_(identifier)\n", + "Getting /wiki/Congress_of_the_Confederation\n", + "Getting /wiki/United_States_House_of_Representatives\n", + "Getting /wiki/United_States_Senate\n", + "Getting /wiki/Joint_session_of_the_United_States_Congress\n", + "Getting /wiki/117th_United_States_Congress\n", + "Getting /wiki/118th_United_States_Congress\n", + "Getting /wiki/119th_United_States_Congress\n", + "Getting /wiki/Lists_of_United_States_Congress\n", + "Getting /wiki/Member_of_Congress\n", + "Getting /wiki/List_of_members_of_the_United_States_Congress_by_longevity_of_service\n", + "Getting /wiki/List_of_members_of_the_United_States_Congress_by_brevity_of_service\n", + "Getting /wiki/List_of_youngest_members_of_the_United_States_Congress\n", + "Getting /wiki/Non-voting_members_of_the_United_States_House_of_Representatives\n", + "Getting /wiki/Unseated_members_of_the_United_States_Congress\n", + "Getting /wiki/List_of_new_members_of_the_98th_United_States_Congress\n", + "Getting /wiki/List_of_new_members_of_the_99th_United_States_Congress\n", + "Getting /wiki/List_of_new_members_of_the_100th_United_States_Congress\n", + "Getting /wiki/List_of_new_members_of_the_101st_United_States_Congress\n", + "Getting /wiki/List_of_new_members_of_the_102nd_United_States_Congress\n", + "Getting /wiki/List_of_new_members_of_the_103rd_United_States_Congress\n", + "Getting /wiki/List_of_new_members_of_the_104th_United_States_Congress\n", + "Getting /wiki/List_of_new_members_of_the_105th_United_States_Congress\n", + "Getting /wiki/List_of_new_members_of_the_106th_United_States_Congress\n", + "Getting /wiki/List_of_new_members_of_the_107th_United_States_Congress\n", + "Getting /wiki/List_of_new_members_of_the_108th_United_States_Congress\n", + "Getting /wiki/List_of_new_members_of_the_109th_United_States_Congress\n", + "Getting /wiki/List_of_new_members_of_the_110th_United_States_Congress\n", + "Getting /wiki/List_of_new_members_of_the_111th_United_States_Congress\n", + "Getting /wiki/List_of_new_members_of_the_112th_United_States_Congress\n", + "Getting /wiki/List_of_new_members_of_the_113th_United_States_Congress\n", + "Getting /wiki/List_of_new_members_of_the_114th_United_States_Congress\n", + "Getting /wiki/List_of_new_members_of_the_115th_United_States_Congress\n", + "Getting /wiki/List_of_new_members_of_the_116th_United_States_Congress\n", + "Getting /wiki/List_of_new_members_of_the_117th_United_States_Congress\n", + "Getting /wiki/List_of_new_members_of_the_118th_United_States_Congress\n", + "Getting /wiki/List_of_current_United_States_senators\n", + "Getting /wiki/Seniority_in_the_United_States_Senate\n", + "Getting /wiki/Dean_of_the_United_States_Senate\n", + "Getting /wiki/List_of_former_United_States_senators\n", + "Getting /wiki/List_of_United_States_senators_expelled_or_censured\n", + "Getting /wiki/Classes_of_United_States_senators\n", + "Getting /wiki/List_of_United_States_senators_born_outside_the_United_States\n", + "Getting /wiki/Resignation_from_the_United_States_Senate\n", + "Getting /wiki/List_of_appointed_United_States_senators\n", + "Getting /wiki/List_of_United_States_senators_who_switched_parties\n", + "Getting /wiki/List_of_current_members_of_the_United_States_House_of_Representatives\n", + "Getting /wiki/Seniority_in_the_United_States_House_of_Representatives\n", + "Getting /wiki/Dean_of_the_United_States_House_of_Representatives\n", + "Getting /wiki/List_of_former_members_of_the_United_States_House_of_Representatives\n", + "Getting /wiki/List_of_United_States_representatives_expelled,_censured,_or_reprimanded\n", + "Getting /wiki/List_of_members_of_the_United_States_House_of_Representatives_who_served_a_single_term\n", + "Getting /wiki/List_of_United_States_representatives_who_switched_parties\n", + "Getting /wiki/List_of_members-elect_of_the_United_States_House_of_Representatives_who_never_took_their_seats\n", + "Getting /wiki/Vice_President_of_the_United_States\n", + "Getting /wiki/List_of_vice_presidents_of_the_United_States\n", + "Getting /wiki/President_pro_tempore_of_the_United_States_Senate\n", + "Getting /wiki/List_of_presidents_pro_tempore_of_the_United_States_Senate\n", + "Getting /wiki/Party_leaders_of_the_United_States_Senate\n", + "Getting /wiki/Senate_Democratic_Caucus\n", + "Getting /wiki/Senate_Democratic_Caucus#Chairs\n", + "Getting /wiki/Senate_Democratic_Caucus#Caucus_secretary\n", + "Getting /wiki/United_States_Senate_Democratic_Policy_Committee\n", + "Getting /wiki/Senate_Republican_Conference\n", + "Getting /wiki/Senate_Republican_Conference#List_of_conference_chairmen_and_chairwomen\n", + "Getting /wiki/Senate_Republican_Conference#List_of_Secretary_and_Vice_Chairman\n", + "Getting /wiki/United_States_Senate_Republican_Policy_Committee\n", + "Getting /wiki/Speaker_of_the_United_States_House_of_Representatives\n", + "Getting /wiki/List_of_speakers_of_the_United_States_House_of_Representatives\n", + "Getting /wiki/Party_leaders_of_the_United_States_House_of_Representatives\n", + "Getting /wiki/Bipartisan_Legal_Advisory_Group\n", + "Getting /wiki/House_Democratic_Caucus\n", + "Getting /wiki/House_Republican_Conference\n", + "Getting /wiki/List_of_United_States_congressional_districts\n", + "Getting /wiki/United_States_congressional_apportionment\n", + "Getting /wiki/Gerrymandering#United_States\n", + "Getting /wiki/Congressional_caucus\n", + "Getting /wiki/Caucuses_of_the_United_States_Congress\n", + "Getting /wiki/African_Americans_in_the_United_States_Congress\n", + "Getting /wiki/List_of_African-American_United_States_senators\n", + "Getting /wiki/List_of_African-American_United_States_representatives\n", + "Getting /wiki/Congressional_Black_Caucus\n", + "Getting /wiki/List_of_Arab_and_Middle_Eastern_Americans_in_the_United_States_Congress\n", + "Getting /wiki/List_of_Asian_Americans_and_Pacific_Islands_Americans_in_the_United_States_Congress\n", + "Getting /wiki/Congressional_Asian_Pacific_American_Caucus\n", + "Getting /wiki/Hispanic_and_Latino_Americans_in_the_United_States_Congress\n", + "Getting /wiki/List_of_Hispanic_and_Latino_Americans_in_the_United_States_Congress\n", + "Getting /wiki/Congressional_Hispanic_Caucus\n", + "Getting /wiki/Congressional_Hispanic_Conference\n", + "Getting /wiki/List_of_Native_Americans_in_the_United_States_Congress\n", + "Getting /wiki/List_of_LGBT_members_of_the_United_States_Congress\n", + "Getting /wiki/Congressional_Equality_Caucus\n", + "Getting /wiki/Women_in_the_United_States_Senate\n", + "Getting /wiki/Women_in_the_United_States_House_of_Representatives\n", + "Getting /wiki/Congressional_Caucus_for_Women%27s_Issues\n", + "Getting /wiki/Women_in_the_United_States_House_of_Representatives#Current_female_members\n", + "Getting /wiki/Physicians_in_the_United_States_Congress\n", + "Getting /wiki/List_of_Buddhist_members_of_the_United_States_Congress\n", + "Getting /wiki/List_of_Hindu_members_of_the_United_States_Congress\n", + "Getting /wiki/List_of_Jewish_members_of_the_United_States_Congress\n", + "Getting /wiki/List_of_Mormon_members_of_the_United_States_Congress\n", + "Getting /wiki/List_of_Muslim_members_of_the_United_States_Congress\n", + "Getting /wiki/List_of_Quaker_members_of_the_United_States_Congress\n", + "Getting /wiki/List_of_historical_longest-serving_members_of_the_United_States_Congress\n", + "Getting /wiki/List_of_current_members_of_the_United_States_Congress_by_wealth\n", + "Getting /wiki/List_of_members_of_the_United_States_Congress_from_multiple_states\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Getting /wiki/List_of_United_States_Congress_members_who_died_in_office_(1790%E2%80%931899)\n", + "Getting /wiki/List_of_United_States_Congress_members_who_died_in_office_(1900%E2%80%931949)\n", + "Getting /wiki/List_of_United_States_Congress_members_who_died_in_office_(1950%E2%80%931999)\n", + "Getting /wiki/List_of_United_States_Congress_members_who_died_in_office_(2000%E2%80%93)\n", + "Getting /wiki/List_of_United_States_Congress_members_killed_or_wounded_in_office\n", + "Getting /wiki/List_of_party_switchers_in_the_United_States\n", + "Getting /wiki/List_of_members_of_the_United_States_Congress_who_owned_slaves\n", + "Getting /wiki/Article_One_of_the_United_States_Constitution\n", + "Getting /wiki/Copyright_Clause\n", + "Getting /wiki/Commerce_Clause\n", + "Getting /wiki/Dormant_Commerce_Clause\n", + "Getting /wiki/Contempt_of_Congress\n", + "Getting /wiki/Declaration_of_war_by_the_United_States\n", + "Getting /wiki/Federal_impeachment_in_the_United_States\n", + "Getting /wiki/Impeachment_inquiry_in_the_United_States\n", + "Getting /wiki/Federal_impeachment_trial_in_the_United_States\n", + "Getting /wiki/United_States_nationality_law\n", + "Getting /wiki/Necessary_and_Proper_Clause\n", + "Getting /wiki/Congressional_power_of_enforcement\n", + "Getting /wiki/Taxing_and_Spending_Clause\n", + "Getting /wiki/Salaries_of_members_of_the_United_States_Congress\n", + "Getting /wiki/Franking\n", + "Getting /wiki/Speech_or_Debate_Clause\n", + "Getting /wiki/Act_of_Congress\n", + "Getting /wiki/List_of_United_States_federal_legislation\n", + "Getting /wiki/Appropriations_bill_(United_States)\n", + "Getting /wiki/Bill_(United_States_Congress)\n", + "Getting /wiki/Blue_slip\n", + "Getting /wiki/United_States_budget_process\n", + "Getting /wiki/Censure_in_the_United_States\n", + "Getting /wiki/Closed_session_of_the_United_States_Congress\n", + "Getting /wiki/Closed_sessions_of_the_United_States_House_of_Representatives\n", + "Getting /wiki/Closed_sessions_of_the_United_States_Senate\n", + "Getting /wiki/Cloture\n", + "Getting /wiki/Concurrent_resolution\n", + "Getting /wiki/Continuing_resolution\n", + "Getting /wiki/Dear_Colleague_letter_(United_States)\n", + "Getting /wiki/Discharge_petition\n", + "Getting /wiki/Enrolled_bill\n", + "Getting /wiki/Expulsion_from_the_United_States_Congress\n", + "Getting /wiki/Joint_resolution\n", + "Getting /wiki/Joint_session_of_the_United_States_Congress\n", + "Getting /wiki/List_of_joint_sessions_of_the_United_States_Congress\n", + "Getting /wiki/Lame-duck_session\n", + "Getting /wiki/Magic_minute\n", + "Getting /wiki/Hastert_Rule\n", + "Getting /wiki/Multiple_referral\n", + "Getting /wiki/Procedures_of_the_United_States_House_of_Representatives\n", + "Getting /wiki/Quorum_call\n", + "Getting /wiki/Reconciliation_(United_States_Congress)\n", + "Getting /wiki/Rider_(legislation)\n", + "Getting /wiki/Saxbe_fix\n", + "Getting /wiki/Sponsor_(legislative)\n", + "Getting /wiki/Suspension_of_the_rules_in_the_United_States_Congress\n", + "Getting /wiki/Unanimous_consent\n", + "Getting /wiki/Veto\n", + "Getting /wiki/Line-item_veto\n", + "Getting /wiki/Pocket_veto\n", + "Getting /wiki/Advice_and_consent\n", + "Getting /wiki/Classes_of_United_States_senators\n", + "Getting /wiki/Executive_communication\n", + "Getting /wiki/Executive_session\n", + "Getting /wiki/Filibuster_in_the_United_States_Senate\n", + "Getting /wiki/Jefferson%27s_Manual\n", + "Getting /wiki/United_States_Senate_Journal\n", + "Getting /wiki/Morning_business\n", + "Getting /wiki/Nuclear_option\n", + "Getting /wiki/Presiding_Officer_of_the_United_States_Senate\n", + "Getting /wiki/Recess_appointment\n", + "Getting /wiki/Reconciliation_(United_States_Congress)\n", + "Getting /wiki/Riddick%27s_Senate_Procedure\n", + "Getting /wiki/Senate_hold\n", + "Getting /wiki/Senatorial_courtesy\n", + "Getting /wiki/Seniority_in_the_United_States_Senate\n", + "Getting /wiki/Standing_Rules_of_the_United_States_Senate\n", + "Getting /wiki/List_of_tie-breaking_votes_cast_by_the_vice_president_of_the_United_States\n", + "Getting /wiki/Traditions_of_the_United_States_Senate\n", + "Getting /wiki/Treaty_Clause\n", + "Getting /wiki/United_States_congressional_committee\n", + "Getting /wiki/Chairperson\n", + "Getting /wiki/Ranking_member\n", + "Getting /wiki/Committee_of_the_Whole_(United_States_House_of_Representatives)\n", + "Getting /wiki/United_States_congressional_conference_committee\n", + "Getting /wiki/Discharge_petition\n", + "Getting /wiki/United_States_congressional_hearing\n", + "Getting /wiki/Markup_(legislation)\n", + "Getting /wiki/Congressional_oversight\n", + "Getting /wiki/List_of_United_States_congressional_joint_committees\n", + "Getting /wiki/List_of_United_States_House_of_Representatives_committees\n", + "Getting /wiki/List_of_United_States_Senate_committees\n", + "Getting /wiki/Select_or_special_committee_(United_States_Congress)\n", + "Getting /wiki/Standing_committee_(United_States_Congress)\n", + "Getting /wiki/United_States_congressional_subcommittee\n", + "Getting /wiki/Gavel#United_States_Congress_gavels\n", + "Getting /wiki/Mace_of_the_United_States_House_of_Representatives\n", + "Getting /wiki/Seal_of_the_United_States_Senate\n", + "Getting /wiki/History_of_the_United_States_Congress\n", + "Getting /wiki/History_of_the_United_States_House_of_Representatives\n", + "Getting /wiki/U.S._representative_bibliography_(congressional_memoirs)\n", + "Getting /wiki/List_of_Speaker_of_the_United_States_House_of_Representatives_elections\n", + "Getting /wiki/History_of_the_United_States_Senate\n", + "Getting /wiki/List_of_United_States_Senate_election_disputes\n", + "Getting /wiki/U.S._senator_bibliography_(congressional_memoirs)\n", + "Getting /wiki/Continental_Congress\n", + "Getting /wiki/Federal_Hall\n", + "Getting /wiki/Congress_Hall\n", + "Getting /wiki/Old_Brick_Capitol\n", + "Getting /wiki/Biographical_Directory_of_the_United_States_Congress\n", + "Getting /wiki/Divided_government_in_the_United_States\n", + "Getting /wiki/Party_divisions_of_United_States_Congresses\n", + "Getting /wiki/C-SPAN\n", + "Getting /wiki/Congressional_Quarterly\n", + "Getting /wiki/The_Hill_(newspaper)\n", + "Getting /wiki/Politico\n", + "Getting /wiki/Roll_Call\n", + "Getting /wiki/United_States_Capitol_Complex\n", + "Getting /wiki/Capitol_Hill\n", + "Getting /wiki/Congressional_staff\n", + "Getting /wiki/Government_Accountability_Office\n", + "Getting /wiki/Comptroller_General_of_the_United_States\n", + "Getting /wiki/Architect_of_the_Capitol\n", + "Getting /wiki/United_States_Capitol_Police\n", + "Getting /wiki/Capitol_Police_Board\n", + "Getting /wiki/United_States_Capitol_Guide_Service\n", + "Getting /wiki/United_States_Capitol_Guide_Board\n", + "Getting /wiki/Congressional_Budget_Office\n", + "Getting /wiki/United_States_Congress_Office_of_Compliance\n", + "Getting /wiki/Library_of_Congress\n", + "Getting /wiki/United_States_Government_Publishing_Office\n", + "Getting /wiki/Office_of_Technology_Assessment\n", + "Getting /wiki/Curator_of_the_United_States_Senate\n", + "Getting /wiki/Historian_of_the_United_States_Senate\n", + "Getting /wiki/United_States_Senate_Library\n", + "Getting /wiki/Office_of_Congressional_Ethics\n", + "Getting /wiki/United_States_House_of_Representatives_Office_of_Emergency_Planning,_Preparedness,_and_Operations\n", + "Getting /wiki/United_States_House_of_Representatives_Office_of_Interparliamentary_Affairs\n", + "Getting /wiki/Office_of_the_Law_Revision_Counsel\n", + "Getting /wiki/Office_of_the_Legislative_Counsel\n", + "Getting /wiki/United_States_House_of_Representatives_Library\n", + "Getting /wiki/Secretary_of_the_United_States_Senate\n", + "Getting /wiki/Chaplain_of_the_United_States_Senate\n", + "Getting /wiki/Curator_of_the_United_States_Senate\n", + "Getting /wiki/Historian_of_the_United_States_Senate\n", + "Getting /wiki/United_States_Senate_Librarian\n", + "Getting /wiki/Page_of_the_United_States_Senate\n", + "Getting /wiki/Parliamentarian_of_the_United_States_Senate\n", + "Getting /wiki/Sergeant_at_Arms_of_the_United_States_Senate\n", + "Getting /wiki/Chaplain_of_the_United_States_House_of_Representatives\n", + "Getting /wiki/Chief_Administrative_Officer_of_the_United_States_House_of_Representatives\n", + "Getting /wiki/Clerk_of_the_United_States_House_of_Representatives\n", + "Getting /wiki/Doorkeeper_of_the_United_States_House_of_Representatives\n", + "Getting /wiki/Director_of_Floor_Operations\n", + "Getting /wiki/Floor_Services_Chief\n", + "Getting /wiki/Historian_of_the_United_States_House_of_Representatives\n", + "Getting /wiki/Page_of_the_United_States_House_of_Representatives\n", + "Getting /wiki/House_Page_Board\n", + "Getting /wiki/Parliamentarian_of_the_United_States_House_of_Representatives\n", + "Getting /wiki/Postmaster_of_the_United_States_House_of_Representatives\n", + "Getting /wiki/Reading_Clerk_of_the_United_States_House_of_Representatives\n", + "Getting /wiki/Sergeant_at_Arms_of_the_United_States_House_of_Representatives\n", + "Getting /wiki/Library_of_Congress\n", + "Getting /wiki/Congressional_Research_Service\n", + "Getting /wiki/Congressional_Research_Service_reports\n", + "Getting /wiki/United_States_Copyright_Office\n", + "Getting /wiki/Register_of_Copyrights\n", + "Getting /wiki/Law_Library_of_Congress\n", + "Getting /wiki/United_States_Poet_Laureate\n", + "Getting /wiki/THOMAS\n", + "Getting /wiki/John_Adams_Building\n", + "Getting /wiki/Thomas_Jefferson_Building\n", + "Getting /wiki/James_Madison_Memorial_Building\n", + "Getting /wiki/United_States_Government_Publishing_Office\n", + "Getting /wiki/Public_Printer_of_the_United_States\n", + "Getting /wiki/Congressional_Pictorial_Directory\n", + "Getting /wiki/Congressional_Record\n", + "Getting /wiki/Official_Congressional_Directory\n", + "Getting /wiki/United_States_Government_Manual\n", + "Getting /wiki/United_States_Congressional_Serial_Set\n", + "Getting /wiki/United_States_Statutes_at_Large\n", + "Already fetched /wiki/United_States_Code\n", + "Getting /wiki/United_States_Capitol\n", + "Getting /wiki/Brumidi_Corridors\n", + "Getting /wiki/Congressional_Prayer_Room\n", + "Getting /wiki/United_States_Capitol_crypt\n", + "Getting /wiki/United_States_Capitol_dome\n", + "Getting /wiki/Statue_of_Freedom\n", + "Getting /wiki/United_States_Capitol_rotunda\n", + "Getting /wiki/Hall_of_Columns\n", + "Getting /wiki/National_Statuary_Hall\n", + "Getting /wiki/United_States_Capitol_Visitor_Center\n", + "Getting /wiki/The_Apotheosis_of_Washington\n", + "Getting /wiki/Statue_of_Freedom\n", + "Getting /wiki/Declaration_of_Independence_(painting)\n", + "Getting /wiki/Scene_at_the_Signing_of_the_Constitution_of_the_United_States\n", + "Getting /wiki/Apotheosis_of_Democracy\n", + "Getting /wiki/Progress_of_Civilization_Pediment\n", + "Getting /wiki/First_Reading_of_the_Emancipation_Proclamation_of_President_Lincoln\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Getting /wiki/Surrender_of_General_Burgoyne\n", + "Getting /wiki/Surrender_of_Lord_Cornwallis\n", + "Getting /wiki/George_Washington_and_the_Revolutionary_War_Door\n", + "Getting /wiki/Revolutionary_War_Door\n", + "Getting /wiki/Columbus_Doors\n", + "Getting /wiki/Washington_at_Princeton\n", + "Getting /wiki/Westward_the_Course_of_Empire_Takes_Its_Way\n", + "Getting /wiki/Vice_President%27s_Room\n", + "Getting /wiki/United_States_Senate_Vice_Presidential_Bust_Collection\n", + "Getting /wiki/Congressional_office_buildings\n", + "Getting /wiki/Dirksen_Senate_Office_Building\n", + "Getting /wiki/Hart_Senate_Office_Building\n", + "Getting /wiki/Mountains_and_Clouds\n", + "Getting /wiki/Russell_Senate_Office_Building\n", + "Getting /wiki/House_Office_Building_Commission\n", + "Getting /wiki/Cannon_House_Office_Building\n", + "Getting /wiki/Ford_House_Office_Building\n", + "Getting /wiki/Longworth_House_Office_Building\n", + "Getting /wiki/O%27Neill_House_Office_Building\n", + "Getting /wiki/Rayburn_House_Office_Building\n", + "Getting /wiki/United_States_Botanic_Garden\n", + "Getting /wiki/Senate_Staff_Health_and_Fitness_Facility\n", + "Getting /wiki/Recording_Studio_of_the_United_States_House_of_Representatives\n", + "Getting /wiki/United_States_Senate_chamber\n", + "Getting /wiki/Old_Senate_Chamber\n", + "Getting /wiki/Old_Supreme_Court_Chamber\n", + "Getting /wiki/Capitol_Power_Plant\n", + "Getting /wiki/Daniel_Webster_Senate_Page_Residence\n", + "Getting /wiki/United_States_Capitol_subway_system\n", + "Getting /wiki/Capitol_Hill\n", + "Getting /wiki/United_States_Capitol_cornerstone_laying\n", + "Getting /wiki/List_of_United_States_Congresses\n", + "Getting /wiki/1st_United_States_Congress\n", + "Getting /wiki/2nd_United_States_Congress\n", + "Getting /wiki/3rd_United_States_Congress\n", + "Getting /wiki/4th_United_States_Congress\n", + "Getting /wiki/5th_United_States_Congress\n", + "Getting /wiki/6th_United_States_Congress\n", + "Getting /wiki/7th_United_States_Congress\n", + "Getting /wiki/8th_United_States_Congress\n", + "Getting /wiki/9th_United_States_Congress\n", + "Getting /wiki/10th_United_States_Congress\n", + "Getting /wiki/11th_United_States_Congress\n", + "Getting /wiki/12th_United_States_Congress\n", + "Getting /wiki/13th_United_States_Congress\n", + "Getting /wiki/14th_United_States_Congress\n", + "Getting /wiki/15th_United_States_Congress\n", + "Getting /wiki/16th_United_States_Congress\n", + "Getting /wiki/17th_United_States_Congress\n", + "Getting /wiki/18th_United_States_Congress\n", + "Getting /wiki/19th_United_States_Congress\n", + "Getting /wiki/20th_United_States_Congress\n", + "Getting /wiki/21st_United_States_Congress\n", + "Getting /wiki/22nd_United_States_Congress\n", + "Getting /wiki/23rd_United_States_Congress\n", + "Getting /wiki/24th_United_States_Congress\n", + "Getting /wiki/25th_United_States_Congress\n", + "Getting /wiki/26th_United_States_Congress\n", + "Getting /wiki/27th_United_States_Congress\n", + "Getting /wiki/28th_United_States_Congress\n", + "Getting /wiki/29th_United_States_Congress\n", + "Getting /wiki/30th_United_States_Congress\n", + "Getting /wiki/31st_United_States_Congress\n", + "Getting /wiki/32nd_United_States_Congress\n", + "Getting /wiki/33rd_United_States_Congress\n", + "Getting /wiki/34th_United_States_Congress\n", + "Getting /wiki/35th_United_States_Congress\n", + "Getting /wiki/36th_United_States_Congress\n", + "Getting /wiki/37th_United_States_Congress\n", + "Getting /wiki/38th_United_States_Congress\n", + "Getting /wiki/39th_United_States_Congress\n", + "Getting /wiki/40th_United_States_Congress\n", + "Getting /wiki/41st_United_States_Congress\n", + "Getting /wiki/42nd_United_States_Congress\n", + "Getting /wiki/43rd_United_States_Congress\n", + "Getting /wiki/44th_United_States_Congress\n", + "Getting /wiki/45th_United_States_Congress\n", + "Getting /wiki/46th_United_States_Congress\n", + "Getting /wiki/47th_United_States_Congress\n", + "Getting /wiki/48th_United_States_Congress\n", + "Getting /wiki/49th_United_States_Congress\n", + "Getting /wiki/50th_United_States_Congress\n", + "Getting /wiki/51st_United_States_Congress\n", + "Getting /wiki/52nd_United_States_Congress\n", + "Getting /wiki/53rd_United_States_Congress\n", + "Getting /wiki/54th_United_States_Congress\n", + "Getting /wiki/55th_United_States_Congress\n", + "Getting /wiki/56th_United_States_Congress\n", + "Getting /wiki/57th_United_States_Congress\n", + "Getting /wiki/58th_United_States_Congress\n", + "Getting /wiki/59th_United_States_Congress\n", + "Getting /wiki/60th_United_States_Congress\n", + "Getting /wiki/61st_United_States_Congress\n", + "Getting /wiki/62nd_United_States_Congress\n", + "Getting /wiki/63rd_United_States_Congress\n", + "Getting /wiki/64th_United_States_Congress\n", + "Getting /wiki/65th_United_States_Congress\n", + "Getting /wiki/66th_United_States_Congress\n", + "Getting /wiki/67th_United_States_Congress\n", + "Getting /wiki/68th_United_States_Congress\n", + "Getting /wiki/69th_United_States_Congress\n", + "Getting /wiki/70th_United_States_Congress\n", + "Getting /wiki/71st_United_States_Congress\n", + "Getting /wiki/72nd_United_States_Congress\n", + "Getting /wiki/73rd_United_States_Congress\n", + "Getting /wiki/74th_United_States_Congress\n", + "Getting /wiki/75th_United_States_Congress\n", + "Getting /wiki/76th_United_States_Congress\n", + "Getting /wiki/77th_United_States_Congress\n", + "Getting /wiki/78th_United_States_Congress\n", + "Getting /wiki/79th_United_States_Congress\n", + "Getting /wiki/80th_United_States_Congress\n", + "Getting /wiki/81st_United_States_Congress\n", + "Getting /wiki/82nd_United_States_Congress\n", + "Getting /wiki/83rd_United_States_Congress\n", + "Getting /wiki/84th_United_States_Congress\n", + "Getting /wiki/85th_United_States_Congress\n", + "Getting /wiki/86th_United_States_Congress\n", + "Getting /wiki/87th_United_States_Congress\n", + "Getting /wiki/88th_United_States_Congress\n", + "Getting /wiki/89th_United_States_Congress\n", + "Getting /wiki/90th_United_States_Congress\n", + "Getting /wiki/91st_United_States_Congress\n", + "Getting /wiki/92nd_United_States_Congress\n", + "Getting /wiki/93rd_United_States_Congress\n", + "Getting /wiki/94th_United_States_Congress\n", + "Getting /wiki/95th_United_States_Congress\n", + "Getting /wiki/96th_United_States_Congress\n", + "Getting /wiki/97th_United_States_Congress\n", + "Getting /wiki/98th_United_States_Congress\n", + "Getting /wiki/99th_United_States_Congress\n", + "Getting /wiki/100th_United_States_Congress\n", + "Getting /wiki/101st_United_States_Congress\n", + "Getting /wiki/102nd_United_States_Congress\n", + "Getting /wiki/103rd_United_States_Congress\n", + "Getting /wiki/104th_United_States_Congress\n", + "Getting /wiki/105th_United_States_Congress\n", + "Getting /wiki/106th_United_States_Congress\n", + "Getting /wiki/107th_United_States_Congress\n", + "Getting /wiki/108th_United_States_Congress\n", + "Getting /wiki/109th_United_States_Congress\n", + "Getting /wiki/110th_United_States_Congress\n", + "Getting /wiki/111th_United_States_Congress\n", + "Getting /wiki/112th_United_States_Congress\n", + "Getting /wiki/113th_United_States_Congress\n", + "Getting /wiki/114th_United_States_Congress\n", + "Getting /wiki/115th_United_States_Congress\n", + "Getting /wiki/116th_United_States_Congress\n", + "Getting /wiki/117th_United_States_Congress\n", + "Getting /wiki/118th_United_States_Congress\n", + "Getting /wiki/U.S._state\n", + "Getting /wiki/United_States_congressional_delegations_from_Alabama\n", + "Getting /wiki/List_of_United_States_representatives_from_Alabama\n", + "Getting /wiki/List_of_United_States_senators_from_Alabama\n", + "Getting /wiki/United_States_congressional_delegations_from_Alaska\n", + "Getting /wiki/List_of_United_States_representatives_from_Alaska\n", + "Getting /wiki/List_of_United_States_senators_from_Alaska\n", + "Getting /wiki/United_States_congressional_delegations_from_Arizona\n", + "Getting /wiki/List_of_United_States_representatives_from_Arizona\n", + "Getting /wiki/List_of_United_States_senators_from_Arizona\n", + "Getting /wiki/United_States_congressional_delegations_from_Arkansas\n", + "Getting /wiki/List_of_United_States_representatives_from_Arkansas\n", + "Getting /wiki/List_of_United_States_senators_from_Arkansas\n", + "Getting /wiki/United_States_congressional_delegations_from_California\n", + "Getting /wiki/List_of_United_States_representatives_from_California\n", + "Getting /wiki/List_of_United_States_senators_from_California\n", + "Getting /wiki/United_States_congressional_delegations_from_Colorado\n", + "Getting /wiki/List_of_United_States_representatives_from_Colorado\n", + "Getting /wiki/List_of_United_States_senators_from_Colorado\n", + "Getting /wiki/United_States_congressional_delegations_from_Connecticut\n", + "Getting /wiki/List_of_United_States_representatives_from_Connecticut\n", + "Getting /wiki/List_of_United_States_senators_from_Connecticut\n", + "Getting /wiki/United_States_congressional_delegations_from_Delaware\n", + "Getting /wiki/List_of_United_States_representatives_from_Delaware\n", + "Getting /wiki/List_of_United_States_senators_from_Delaware\n", + "Getting /wiki/United_States_congressional_delegations_from_Florida\n", + "Getting /wiki/List_of_United_States_representatives_from_Florida\n", + "Getting /wiki/List_of_United_States_senators_from_Florida\n", + "Getting /wiki/United_States_congressional_delegations_from_Georgia\n", + "Getting /wiki/List_of_United_States_representatives_from_Georgia\n", + "Getting /wiki/List_of_United_States_senators_from_Georgia\n", + "Getting /wiki/United_States_congressional_delegations_from_Hawaii\n", + "Getting /wiki/List_of_United_States_representatives_from_Hawaii\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Getting /wiki/List_of_United_States_senators_from_Hawaii\n", + "Getting /wiki/United_States_congressional_delegations_from_Idaho\n", + "Getting /wiki/List_of_United_States_representatives_from_Idaho\n", + "Getting /wiki/List_of_United_States_senators_from_Idaho\n", + "Getting /wiki/United_States_congressional_delegations_from_Illinois\n", + "Getting /wiki/List_of_United_States_representatives_from_Illinois\n", + "Getting /wiki/List_of_United_States_senators_from_Illinois\n", + "Getting /wiki/United_States_congressional_delegations_from_Indiana\n", + "Getting /wiki/List_of_United_States_representatives_from_Indiana\n", + "Getting /wiki/List_of_United_States_senators_from_Indiana\n", + "Getting /wiki/United_States_congressional_delegations_from_Iowa\n", + "Getting /wiki/List_of_United_States_representatives_from_Iowa\n", + "Getting /wiki/List_of_United_States_senators_from_Iowa\n", + "Getting /wiki/United_States_congressional_delegations_from_Kansas\n", + "Getting /wiki/List_of_United_States_representatives_from_Kansas\n", + "Getting /wiki/List_of_United_States_senators_from_Kansas\n", + "Getting /wiki/United_States_congressional_delegations_from_Kentucky\n", + "Getting /wiki/List_of_United_States_representatives_from_Kentucky\n", + "Getting /wiki/List_of_United_States_senators_from_Kentucky\n", + "Getting /wiki/United_States_congressional_delegations_from_Louisiana\n", + "Getting /wiki/List_of_United_States_representatives_from_Louisiana\n", + "Getting /wiki/List_of_United_States_senators_from_Louisiana\n", + "Getting /wiki/United_States_congressional_delegations_from_Maine\n", + "Getting /wiki/List_of_United_States_representatives_from_Maine\n", + "Getting /wiki/List_of_United_States_senators_from_Maine\n", + "Getting /wiki/United_States_congressional_delegations_from_Maryland\n", + "Getting /wiki/List_of_United_States_representatives_from_Maryland\n", + "Getting /wiki/List_of_United_States_senators_from_Maryland\n", + "Getting /wiki/United_States_congressional_delegations_from_Massachusetts\n", + "Getting /wiki/List_of_United_States_representatives_from_Massachusetts\n", + "Getting /wiki/List_of_United_States_senators_from_Massachusetts\n", + "Getting /wiki/United_States_congressional_delegations_from_Michigan\n", + "Getting /wiki/List_of_United_States_representatives_from_Michigan\n", + "Getting /wiki/List_of_United_States_senators_from_Michigan\n", + "Getting /wiki/United_States_congressional_delegations_from_Minnesota\n", + "Getting /wiki/List_of_United_States_representatives_from_Minnesota\n", + "Getting /wiki/List_of_United_States_senators_from_Minnesota\n", + "Getting /wiki/United_States_congressional_delegations_from_Mississippi\n", + "Getting /wiki/List_of_United_States_representatives_from_Mississippi\n", + "Getting /wiki/List_of_United_States_senators_from_Mississippi\n", + "Getting /wiki/United_States_congressional_delegations_from_Missouri\n", + "Getting /wiki/List_of_United_States_representatives_from_Missouri\n", + "Getting /wiki/List_of_United_States_senators_from_Missouri\n", + "Getting /wiki/United_States_congressional_delegations_from_Montana\n", + "Getting /wiki/List_of_United_States_representatives_from_Montana\n", + "Getting /wiki/List_of_United_States_senators_from_Montana\n", + "Getting /wiki/United_States_congressional_delegations_from_Nebraska\n", + "Getting /wiki/List_of_United_States_representatives_from_Nebraska\n", + "Getting /wiki/List_of_United_States_senators_from_Nebraska\n", + "Getting /wiki/United_States_congressional_delegations_from_Nevada\n", + "Getting /wiki/List_of_United_States_representatives_from_Nevada\n", + "Getting /wiki/List_of_United_States_senators_from_Nevada\n", + "Getting /wiki/United_States_congressional_delegations_from_New_Hampshire\n", + "Getting /wiki/List_of_United_States_representatives_from_New_Hampshire\n", + "Getting /wiki/List_of_United_States_senators_from_New_Hampshire\n", + "Getting /wiki/United_States_congressional_delegations_from_New_Jersey\n", + "Getting /wiki/List_of_United_States_representatives_from_New_Jersey\n", + "Getting /wiki/List_of_United_States_senators_from_New_Jersey\n", + "Getting /wiki/United_States_congressional_delegations_from_New_Mexico\n", + "Getting /wiki/List_of_United_States_representatives_from_New_Mexico\n", + "Getting /wiki/List_of_United_States_senators_from_New_Mexico\n", + "Getting /wiki/United_States_congressional_delegations_from_New_York\n", + "Getting /wiki/List_of_United_States_representatives_from_New_York\n", + "Getting /wiki/List_of_United_States_senators_from_New_York\n", + "Getting /wiki/United_States_congressional_delegations_from_North_Carolina\n", + "Getting /wiki/List_of_United_States_representatives_from_North_Carolina\n", + "Getting /wiki/List_of_United_States_senators_from_North_Carolina\n", + "Getting /wiki/United_States_congressional_delegations_from_North_Dakota\n", + "Getting /wiki/List_of_United_States_representatives_from_North_Dakota\n", + "Getting /wiki/List_of_United_States_senators_from_North_Dakota\n", + "Getting /wiki/United_States_congressional_delegations_from_Ohio\n", + "Getting /wiki/List_of_United_States_representatives_from_Ohio\n", + "Getting /wiki/List_of_United_States_senators_from_Ohio\n", + "Getting /wiki/United_States_congressional_delegations_from_Oklahoma\n", + "Getting /wiki/List_of_United_States_representatives_from_Oklahoma\n", + "Getting /wiki/List_of_United_States_senators_from_Oklahoma\n", + "Getting /wiki/United_States_congressional_delegations_from_Oregon\n", + "Getting /wiki/List_of_United_States_representatives_from_Oregon\n", + "Getting /wiki/List_of_United_States_senators_from_Oregon\n", + "Getting /wiki/United_States_congressional_delegations_from_Pennsylvania\n", + "Getting /wiki/List_of_United_States_representatives_from_Pennsylvania\n", + "Getting /wiki/List_of_United_States_senators_from_Pennsylvania\n", + "Getting /wiki/United_States_congressional_delegations_from_Rhode_Island\n", + "Getting /wiki/List_of_United_States_representatives_from_Rhode_Island\n", + "Getting /wiki/List_of_United_States_senators_from_Rhode_Island\n", + "Getting /wiki/United_States_congressional_delegations_from_South_Carolina\n", + "Getting /wiki/List_of_United_States_representatives_from_South_Carolina\n", + "Getting /wiki/List_of_United_States_senators_from_South_Carolina\n", + "Getting /wiki/United_States_congressional_delegations_from_South_Dakota\n", + "Getting /wiki/List_of_United_States_representatives_from_South_Dakota\n", + "Getting /wiki/List_of_United_States_senators_from_South_Dakota\n", + "Getting /wiki/United_States_congressional_delegations_from_Tennessee\n", + "Getting /wiki/List_of_United_States_representatives_from_Tennessee\n", + "Getting /wiki/List_of_United_States_senators_from_Tennessee\n", + "Getting /wiki/United_States_congressional_delegations_from_Texas\n", + "Getting /wiki/List_of_United_States_representatives_from_Texas\n", + "Getting /wiki/List_of_United_States_senators_from_Texas\n", + "Getting /wiki/United_States_congressional_delegations_from_Utah\n", + "Getting /wiki/List_of_United_States_representatives_from_Utah\n", + "Getting /wiki/List_of_United_States_senators_from_Utah\n", + "Getting /wiki/United_States_congressional_delegations_from_Vermont\n", + "Getting /wiki/List_of_United_States_representatives_from_Vermont\n", + "Getting /wiki/List_of_United_States_senators_from_Vermont\n", + "Getting /wiki/United_States_congressional_delegations_from_Virginia\n", + "Getting /wiki/List_of_United_States_representatives_from_Virginia\n", + "Getting /wiki/List_of_United_States_senators_from_Virginia\n", + "Getting /wiki/United_States_congressional_delegations_from_Washington\n", + "Getting /wiki/List_of_United_States_representatives_from_Washington\n", + "Getting /wiki/List_of_United_States_senators_from_Washington\n", + "Getting /wiki/United_States_congressional_delegations_from_West_Virginia\n", + "Getting /wiki/List_of_United_States_representatives_from_West_Virginia\n", + "Getting /wiki/List_of_United_States_senators_from_West_Virginia\n", + "Getting /wiki/United_States_congressional_delegations_from_Wisconsin\n", + "Getting /wiki/List_of_United_States_representatives_from_Wisconsin\n", + "Getting /wiki/List_of_United_States_senators_from_Wisconsin\n", + "Getting /wiki/United_States_congressional_delegations_from_Wyoming\n", + "Getting /wiki/List_of_United_States_representatives_from_Wyoming\n", + "Getting /wiki/List_of_United_States_senators_from_Wyoming\n", + "Getting /wiki/Non-voting_members_of_the_United_States_House_of_Representatives\n", + "Getting /wiki/American_Samoa%27s_at-large_congressional_district\n", + "Getting /wiki/District_of_Columbia%27s_at-large_congressional_district\n", + "Getting /wiki/Guam%27s_at-large_congressional_district\n", + "Getting /wiki/Northern_Mariana_Islands%27s_at-large_congressional_district\n", + "Getting /wiki/Resident_Commissioner_of_Puerto_Rico\n", + "Getting /wiki/United_States_Virgin_Islands%27s_at-large_congressional_district\n", + "Getting /wiki/Cherokee_delegate_to_the_United_States_House_of_Representatives\n", + "Getting /wiki/Dakota_Territory%27s_at-large_congressional_district\n", + "Getting /wiki/Northwest_Territory%27s_at-large_congressional_district\n", + "Getting /wiki/Orleans_Territory%27s_at-large_congressional_district\n", + "Getting /wiki/Resident_Commissioner_of_the_Philippines\n", + "Getting /wiki/Southwest_Territory%27s_at-large_congressional_district\n", + "Getting /wiki/List_of_former_members_of_the_United_States_House_of_Representatives\n", + "Getting /wiki/List_of_former_United_States_senators\n", + "Getting /wiki/Lists_of_acts_of_the_United_States_Congress\n", + "Getting /wiki/List_of_acts_of_the_74th_United_States_Congress\n", + "Getting /wiki/List_of_acts_of_the_104th_United_States_Congress\n", + "Getting /wiki/List_of_acts_of_the_105th_United_States_Congress\n", + "Getting /wiki/List_of_acts_of_the_106th_United_States_Congress\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Getting /wiki/List_of_acts_of_the_107th_United_States_Congress\n", + "Getting /wiki/List_of_acts_of_the_108th_United_States_Congress\n", + "Getting /wiki/List_of_acts_of_the_109th_United_States_Congress\n", + "Getting /wiki/List_of_acts_of_the_110th_United_States_Congress\n", + "Getting /wiki/List_of_acts_of_the_111th_United_States_Congress\n", + "Getting /wiki/List_of_acts_of_the_112th_United_States_Congress\n", + "Getting /wiki/List_of_acts_of_the_113th_United_States_Congress\n", + "Getting /wiki/List_of_acts_of_the_114th_United_States_Congress\n", + "Getting /wiki/List_of_acts_of_the_115th_United_States_Congress\n", + "Getting /wiki/List_of_acts_of_the_116th_United_States_Congress\n", + "Getting /wiki/List_of_acts_of_the_117th_United_States_Congress\n", + "Getting /wiki/List_of_acts_of_the_118th_United_States_Congress\n", + "Getting /wiki/List_of_United_States_federal_legislation,_1789%E2%80%931901\n", + "Getting /wiki/List_of_United_States_federal_legislation,_1901%E2%80%932001\n", + "Getting /wiki/List_of_United_States_federal_legislation,_2001%E2%80%93present\n", + "Getting /wiki/List_of_landmark_African-American_legislation\n", + "Getting /wiki/List_of_United_States_education_acts\n", + "Getting /wiki/List_of_United_States_energy_acts\n", + "Getting /wiki/List_of_United_States_federal_environmental_statutes\n", + "Getting /wiki/List_of_legislation_governing_the_United_States_Forest_Service\n", + "Getting /wiki/List_of_United_States_immigration_laws\n", + "Getting /wiki/List_of_tariffs_in_the_United_States\n", + "Getting /wiki/List_of_United_States_state_legislatures\n", + "Getting /wiki/United_States_House_of_Representatives\n", + "Getting /wiki/United_States_Senate\n", + "Getting /wiki/List_of_United_States_state_legislatures\n", + "Getting /wiki/Alabama_Legislature\n", + "Getting /wiki/Alabama_House_of_Representatives\n", + "Getting /wiki/Alabama_Senate\n", + "Getting /wiki/Alaska_Legislature\n", + "Getting /wiki/Alaska_House_of_Representatives\n", + "Getting /wiki/Alaska_Senate\n", + "Getting /wiki/Arizona_State_Legislature\n", + "Getting /wiki/Arizona_House_of_Representatives\n", + "Getting /wiki/Arizona_Senate\n", + "Getting /wiki/Arkansas_General_Assembly\n", + "Getting /wiki/Arkansas_House_of_Representatives\n", + "Getting /wiki/Arkansas_Senate\n", + "Getting /wiki/California_State_Legislature\n", + "Getting /wiki/California_State_Assembly\n", + "Getting /wiki/California_State_Senate\n", + "Getting /wiki/Colorado_General_Assembly\n", + "Getting /wiki/Colorado_House_of_Representatives\n", + "Getting /wiki/Colorado_Senate\n", + "Getting /wiki/Connecticut_General_Assembly\n", + "Getting /wiki/Connecticut_House_of_Representatives\n", + "Getting /wiki/Connecticut_State_Senate\n", + "Getting /wiki/Delaware_General_Assembly\n", + "Getting /wiki/Delaware_House_of_Representatives\n", + "Getting /wiki/Delaware_Senate\n", + "Getting /wiki/Florida_Legislature\n", + "Getting /wiki/Florida_House_of_Representatives\n", + "Getting /wiki/Florida_Senate\n", + "Getting /wiki/Georgia_General_Assembly\n", + "Getting /wiki/Georgia_House_of_Representatives\n", + "Getting /wiki/Georgia_State_Senate\n", + "Getting /wiki/Hawaii_State_Legislature\n", + "Getting /wiki/Hawaii_House_of_Representatives\n", + "Getting /wiki/Hawaii_Senate\n", + "Getting /wiki/Idaho_Legislature\n", + "Getting /wiki/Idaho_House_of_Representatives\n", + "Getting /wiki/Idaho_Senate\n", + "Getting /wiki/Illinois_General_Assembly\n", + "Getting /wiki/Illinois_House_of_Representatives\n", + "Getting /wiki/Illinois_Senate\n", + "Getting /wiki/Indiana_General_Assembly\n", + "Getting /wiki/Indiana_House_of_Representatives\n", + "Getting /wiki/Indiana_Senate\n", + "Getting /wiki/Iowa_General_Assembly\n", + "Getting /wiki/Iowa_House_of_Representatives\n", + "Getting /wiki/Iowa_Senate\n", + "Getting /wiki/Kansas_Legislature\n", + "Getting /wiki/Kansas_House_of_Representatives\n", + "Getting /wiki/Kansas_Senate\n", + "Getting /wiki/Kentucky_General_Assembly\n", + "Getting /wiki/Kentucky_House_of_Representatives\n", + "Getting /wiki/Kentucky_Senate\n", + "Getting /wiki/Louisiana_State_Legislature\n", + "Getting /wiki/Louisiana_House_of_Representatives\n", + "Getting /wiki/Louisiana_State_Senate\n", + "Getting /wiki/Maine_Legislature\n", + "Getting /wiki/Maine_House_of_Representatives\n", + "Getting /wiki/Maine_Senate\n", + "Getting /wiki/Maryland_General_Assembly\n", + "Getting /wiki/Maryland_House_of_Delegates\n", + "Getting /wiki/Maryland_Senate\n", + "Getting /wiki/Massachusetts_General_Court\n", + "Getting /wiki/Massachusetts_House_of_Representatives\n", + "Getting /wiki/Massachusetts_Senate\n", + "Getting /wiki/Michigan_Legislature\n", + "Getting /wiki/Michigan_House_of_Representatives\n", + "Getting /wiki/Michigan_Senate\n", + "Getting /wiki/Minnesota_Legislature\n", + "Getting /wiki/Minnesota_House_of_Representatives\n", + "Getting /wiki/Minnesota_Senate\n", + "Getting /wiki/Mississippi_Legislature\n", + "Getting /wiki/Mississippi_House_of_Representatives\n", + "Getting /wiki/Mississippi_State_Senate\n", + "Getting /wiki/Missouri_General_Assembly\n", + "Getting /wiki/Missouri_House_of_Representatives\n", + "Getting /wiki/Missouri_Senate\n", + "Getting /wiki/Montana_Legislature\n", + "Getting /wiki/Montana_House_of_Representatives\n", + "Getting /wiki/Montana_Senate\n", + "Getting /wiki/Nebraska_Legislature\n", + "Getting /wiki/Nevada_Legislature\n", + "Getting /wiki/Nevada_Assembly\n", + "Getting /wiki/Nevada_Senate\n", + "Getting /wiki/New_Hampshire_General_Court\n", + "Getting /wiki/New_Hampshire_House_of_Representatives\n", + "Getting /wiki/New_Hampshire_Senate\n", + "Getting /wiki/New_Jersey_Legislature\n", + "Getting /wiki/New_Jersey_General_Assembly\n", + "Getting /wiki/New_Jersey_Senate\n", + "Getting /wiki/New_Mexico_Legislature\n", + "Getting /wiki/New_Mexico_House_of_Representatives\n", + "Getting /wiki/New_Mexico_Senate\n", + "Getting /wiki/New_York_State_Legislature\n", + "Getting /wiki/New_York_State_Assembly\n", + "Getting /wiki/New_York_State_Senate\n", + "Getting /wiki/North_Carolina_General_Assembly\n", + "Getting /wiki/North_Carolina_House_of_Representatives\n", + "Getting /wiki/North_Carolina_Senate\n", + "Getting /wiki/North_Dakota_Legislative_Assembly\n", + "Getting /wiki/North_Dakota_House_of_Representatives\n", + "Getting /wiki/North_Dakota_Senate\n", + "Getting /wiki/Ohio_General_Assembly\n", + "Getting /wiki/Ohio_House_of_Representatives\n", + "Getting /wiki/Ohio_Senate\n", + "Getting /wiki/Oklahoma_Legislature\n", + "Getting /wiki/Oklahoma_House_of_Representatives\n", + "Getting /wiki/Oklahoma_Senate\n", + "Getting /wiki/Oregon_Legislative_Assembly\n", + "Getting /wiki/Oregon_House_of_Representatives\n", + "Getting /wiki/Oregon_State_Senate\n", + "Getting /wiki/Pennsylvania_General_Assembly\n", + "Getting /wiki/Pennsylvania_House_of_Representatives\n", + "Getting /wiki/Pennsylvania_State_Senate\n", + "Getting /wiki/Rhode_Island_General_Assembly\n", + "Getting /wiki/Rhode_Island_House_of_Representatives\n", + "Getting /wiki/Rhode_Island_Senate\n", + "Getting /wiki/South_Carolina_General_Assembly\n", + "Getting /wiki/South_Carolina_House_of_Representatives\n", + "Getting /wiki/South_Carolina_Senate\n", + "Getting /wiki/South_Dakota_Legislature\n", + "Getting /wiki/South_Dakota_House_of_Representatives\n", + "Getting /wiki/South_Dakota_Senate\n", + "Getting /wiki/Tennessee_General_Assembly\n", + "Getting /wiki/Tennessee_House_of_Representatives\n", + "Getting /wiki/Tennessee_Senate\n", + "Getting /wiki/Texas_Legislature\n", + "Getting /wiki/Texas_House_of_Representatives\n", + "Getting /wiki/Texas_Senate\n", + "Getting /wiki/Utah_State_Legislature\n", + "Getting /wiki/Utah_House_of_Representatives\n", + "Getting /wiki/Utah_State_Senate\n", + "Getting /wiki/Vermont_General_Assembly\n", + "Getting /wiki/Vermont_House_of_Representatives\n", + "Getting /wiki/Vermont_Senate\n", + "Getting /wiki/Virginia_General_Assembly\n", + "Getting /wiki/Virginia_House_of_Delegates\n", + "Getting /wiki/Senate_of_Virginia\n", + "Getting /wiki/Washington_State_Legislature\n", + "Getting /wiki/Washington_House_of_Representatives\n", + "Getting /wiki/Washington_State_Senate\n", + "Getting /wiki/West_Virginia_Legislature\n", + "Getting /wiki/West_Virginia_House_of_Delegates\n", + "Getting /wiki/West_Virginia_Senate\n", + "Getting /wiki/Wisconsin_Legislature\n", + "Getting /wiki/Wisconsin_State_Assembly\n", + "Getting /wiki/Wisconsin_Senate\n", + "Getting /wiki/Wyoming_Legislature\n", + "Getting /wiki/Wyoming_House_of_Representatives\n", + "Getting /wiki/Wyoming_Senate\n", + "Getting /wiki/List_of_United_States_state_legislatures#Territorial_and_Federal_District_Legislatures\n", + "Getting /wiki/Council_of_the_District_of_Columbia\n", + "Getting /wiki/American_Samoa_Fono\n", + "Getting /wiki/American_Samoa_House_of_Representatives\n", + "Getting /wiki/American_Samoa_Senate\n", + "Getting /wiki/Legislature_of_Guam\n", + "Getting /wiki/Northern_Mariana_Islands_Commonwealth_Legislature\n", + "Getting /wiki/Northern_Mariana_Islands_House_of_Representatives\n", + "Getting /wiki/Northern_Mariana_Islands_Senate\n", + "Getting /wiki/Legislative_Assembly_of_Puerto_Rico\n", + "Getting /wiki/House_of_Representatives_of_Puerto_Rico\n", + "Getting /wiki/Senate_of_Puerto_Rico\n", + "Getting /wiki/Legislature_of_the_Virgin_Islands\n", + "Getting /wiki/2000_United_States_state_legislative_elections\n", + "Getting /wiki/2001_United_States_state_legislative_elections\n", + "Getting /wiki/2002_United_States_state_legislative_elections\n", + "Getting /wiki/2003_United_States_state_legislative_elections\n", + "Getting /wiki/2004_United_States_state_legislative_elections\n", + "Getting /wiki/2005_United_States_state_legislative_elections\n", + "Getting /wiki/2006_United_States_state_legislative_elections\n", + "Getting /wiki/2007_United_States_state_legislative_elections\n", + "Getting /wiki/2008_United_States_state_legislative_elections\n", + "Getting /wiki/2009_United_States_state_legislative_elections\n", + "Getting /wiki/2010_United_States_state_legislative_elections\n", + "Getting /wiki/2011_United_States_state_legislative_elections\n", + "Getting /wiki/2012_United_States_state_legislative_elections\n", + "Getting /wiki/2013_United_States_state_legislative_elections\n", + "Getting /wiki/2014_United_States_state_legislative_elections\n", + "Getting /wiki/2015_United_States_state_legislative_elections\n", + "Getting /wiki/2016_United_States_state_legislative_elections\n", + "Getting /wiki/2017_United_States_state_legislative_elections\n", + "Getting /wiki/2018_United_States_state_legislative_elections\n", + "Getting /wiki/2019_United_States_state_legislative_elections\n", + "Getting /wiki/2020_United_States_state_legislative_elections\n", + "Getting /wiki/2021_United_States_state_legislative_elections\n", + "Getting /wiki/2022_United_States_state_legislative_elections\n", + "Getting /wiki/2023_United_States_state_legislative_elections\n", + "Getting /wiki/List_of_U.S._state_legislators\n", + "Getting /wiki/United_States\n", + "Getting /wiki/History_of_the_United_States\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Getting /wiki/History_of_the_United_States_(1776%E2%80%931789)\n", + "Getting /wiki/History_of_the_United_States_(1789%E2%80%931849)\n", + "Getting /wiki/History_of_the_United_States_(1849%E2%80%931865)\n", + "Getting /wiki/History_of_the_United_States_(1865%E2%80%931918)\n", + "Getting /wiki/History_of_the_United_States_(1918%E2%80%931945)\n", + "Getting /wiki/History_of_the_United_States_(1945%E2%80%931964)\n", + "Getting /wiki/History_of_the_United_States_(1964%E2%80%931980)\n", + "Getting /wiki/History_of_the_United_States_(1980%E2%80%931991)\n", + "Getting /wiki/History_of_the_United_States_(1991%E2%80%932008)\n", + "Getting /wiki/History_of_the_United_States_(2008%E2%80%93present)\n", + "Getting /wiki/Pre-Columbian_era\n", + "Getting /wiki/Colonial_history_of_the_United_States\n", + "Getting /wiki/Stamp_Act_Congress\n", + "Getting /wiki/Thirteen_Colonies\n", + "Getting /wiki/Continental_Congress\n", + "Getting /wiki/Continental_Association\n", + "Getting /wiki/United_Colonies\n", + "Getting /wiki/Colonial_American_military_history\n", + "Getting /wiki/Founding_Fathers_of_the_United_States\n", + "Getting /wiki/Halifax_Resolves\n", + "Getting /wiki/Lee_Resolution\n", + "Getting /wiki/United_States_Declaration_of_Independence\n", + "Getting /wiki/American_Revolution\n", + "Getting /wiki/American_Revolutionary_War\n", + "Getting /wiki/Treaty_of_Paris_(1783)\n", + "Getting /wiki/Articles_of_Confederation\n", + "Getting /wiki/Perpetual_Union\n", + "Getting /wiki/Confederation_period\n", + "Getting /wiki/American_frontier\n", + "Getting /wiki/Constitution_of_the_United_States\n", + "Getting /wiki/Timeline_of_drafting_and_ratification_of_the_United_States_Constitution\n", + "Getting /wiki/United_States_Bill_of_Rights\n", + "Getting /wiki/Federalist_Era\n", + "Getting /wiki/War_of_1812\n", + "Getting /wiki/Territorial_evolution_of_the_United_States\n", + "Getting /wiki/Mexican%E2%80%93American_War\n", + "Getting /wiki/American_Civil_War\n", + "Getting /wiki/Reconstruction_era\n", + "Getting /wiki/American_Indian_Wars\n", + "Getting /wiki/Gilded_Age\n", + "Getting /wiki/Progressive_Era\n", + "Getting /wiki/Women%27s_suffrage_in_the_United_States\n", + "Getting /wiki/Civil_rights_movement_(1865%E2%80%931896)\n", + "Getting /wiki/Civil_rights_movement_(1896%E2%80%931954)\n", + "Getting /wiki/Civil_rights_movement\n", + "Getting /wiki/Spanish%E2%80%93American_War\n", + "Getting /wiki/American_imperialism\n", + "Getting /wiki/United_States_in_World_War_I\n", + "Getting /wiki/Roaring_Twenties\n", + "Getting /wiki/Great_Depression\n", + "Getting /wiki/Military_history_of_the_United_States_during_World_War_II\n", + "Getting /wiki/United_States_home_front_during_World_War_II\n", + "Getting /wiki/American_Century\n", + "Getting /wiki/Cold_War\n", + "Getting /wiki/Korean_War\n", + "Getting /wiki/Space_Race\n", + "Getting /wiki/Second-wave_feminism\n", + "Getting /wiki/Gay_liberation\n", + "Getting /wiki/Vietnam_War\n", + "Getting /wiki/History_of_the_United_States_(1991%E2%80%932008)\n", + "Getting /wiki/September_11_attacks\n", + "Getting /wiki/War_on_terror\n", + "Getting /wiki/War_in_Afghanistan_(2001%E2%80%932021)\n", + "Getting /wiki/Iraq_War\n", + "Getting /wiki/Great_Recession_in_the_United_States\n", + "Getting /wiki/COVID-19_pandemic_in_the_United_States\n", + "Getting /wiki/Outline_of_the_United_States#History_of_the_United_States\n", + "Getting /wiki/Demographic_history_of_the_United_States\n", + "Getting /wiki/Timeline_of_United_States_discoveries\n", + "Getting /wiki/Economic_history_of_the_United_States\n", + "Getting /wiki/History_of_the_United_States_debt_ceiling\n", + "Getting /wiki/Timeline_of_United_States_inventions\n", + "Getting /wiki/Timeline_of_United_States_inventions_(before_1890)\n", + "Getting /wiki/Timeline_of_United_States_inventions_(1890%E2%80%931945)\n", + "Getting /wiki/Timeline_of_United_States_inventions_(1946%E2%80%931991)\n", + "Getting /wiki/Timeline_of_United_States_inventions_(after_1991)\n", + "Getting /wiki/Military_history_of_the_United_States\n", + "Getting /wiki/Postage_stamps_and_postal_history_of_the_United_States\n", + "Getting /wiki/Technological_and_industrial_history_of_the_United_States\n", + "Getting /wiki/Geography_of_the_United_States\n", + "Getting /wiki/U.S._territorial_sovereignty\n", + "Getting /wiki/Contiguous_United_States\n", + "Getting /wiki/County_(United_States)\n", + "Getting /wiki/Washington,_D.C.\n", + "Getting /wiki/Federal_enclave\n", + "Getting /wiki/Indian_reservation\n", + "Getting /wiki/Territories_of_the_United_States\n", + "Getting /wiki/United_States_Minor_Outlying_Islands\n", + "Getting /wiki/Lists_of_populated_places_in_the_United_States\n", + "Getting /wiki/U.S._state\n", + "Getting /wiki/List_of_earthquakes_in_the_United_States\n", + "Getting /wiki/List_of_extreme_points_of_the_United_States\n", + "Getting /wiki/List_of_islands_of_the_United_States\n", + "Getting /wiki/List_of_mountains_of_the_United_States\n", + "Getting /wiki/List_of_mountain_peaks_of_the_United_States\n", + "Getting /wiki/List_of_mountain_ranges#United_States\n", + "Getting /wiki/Appalachian_Mountains\n", + "Getting /wiki/Rocky_Mountains\n", + "Getting /wiki/Sierra_Nevada\n", + "Getting /wiki/National_Park_Service\n", + "Getting /wiki/List_of_areas_in_the_United_States_National_Park_System\n", + "Getting /wiki/List_of_regions_of_the_United_States\n", + "Getting /wiki/East_Coast_of_the_United_States\n", + "Getting /wiki/West_Coast_of_the_United_States\n", + "Getting /wiki/Great_Plains\n", + "Getting /wiki/Gulf_Coast_of_the_United_States\n", + "Getting /wiki/Mid-Atlantic_(United_States)\n", + "Getting /wiki/Midwestern_United_States\n", + "Getting /wiki/New_England\n", + "Getting /wiki/West_Coast_of_the_United_States\n", + "Getting /wiki/Central_United_States\n", + "Getting /wiki/Eastern_United_States\n", + "Getting /wiki/Northern_United_States\n", + "Getting /wiki/Northeastern_United_States\n", + "Getting /wiki/Northwestern_United_States\n", + "Getting /wiki/Southern_United_States\n", + "Getting /wiki/Southeastern_United_States\n", + "Getting /wiki/Southwestern_United_States\n", + "Getting /wiki/Western_United_States\n", + "Getting /wiki/List_of_rivers_of_the_United_States\n", + "Getting /wiki/Arkansas_River\n", + "Getting /wiki/Colorado_River\n", + "Getting /wiki/Columbia_River\n", + "Getting /wiki/Mississippi_River\n", + "Getting /wiki/Missouri_River\n", + "Getting /wiki/Red_River_of_the_South\n", + "Getting /wiki/Rio_Grande\n", + "Getting /wiki/Yukon_River\n", + "Getting /wiki/Time_in_the_United_States\n", + "Getting /wiki/Water_supply_and_sanitation_in_the_United_States\n", + "Getting /wiki/List_of_World_Heritage_Sites_in_the_United_States\n", + "Getting /wiki/Politics_of_the_United_States\n", + "Getting /wiki/Federal_government_of_the_United_States\n", + "Getting /wiki/Cabinet_of_the_United_States\n", + "Getting /wiki/United_States_federal_civil_service\n", + "Getting /wiki/United_States_federal_executive_departments\n", + "Getting /wiki/Executive_Office_of_the_President_of_the_United_States\n", + "Getting /wiki/Independent_agencies_of_the_United_States_government\n", + "Getting /wiki/Federal_law_enforcement_in_the_United_States\n", + "Getting /wiki/President_of_the_United_States\n", + "Getting /wiki/Powers_of_the_president_of_the_United_States\n", + "Getting /wiki/Public_policy_of_the_United_States\n", + "Getting /wiki/United_States_House_of_Representatives\n", + "Getting /wiki/List_of_current_members_of_the_United_States_House_of_Representatives\n", + "Getting /wiki/Speaker_of_the_United_States_House_of_Representatives\n", + "Getting /wiki/United_States_Senate\n", + "Getting /wiki/List_of_current_United_States_senators\n", + "Getting /wiki/President_pro_tempore_of_the_United_States_Senate\n", + "Getting /wiki/Vice_President_of_the_United_States\n", + "Getting /wiki/Federal_judiciary_of_the_United_States\n", + "Getting /wiki/United_States_district_court\n", + "Getting /wiki/United_States_courts_of_appeals\n", + "Getting /wiki/Supreme_Court_of_the_United_States\n", + "Getting /wiki/Law_of_the_United_States\n", + "Getting /wiki/United_States_Bill_of_Rights\n", + "Getting /wiki/Civil_liberties_in_the_United_States\n", + "Getting /wiki/Code_of_Federal_Regulations\n", + "Getting /wiki/Constitution_of_the_United_States\n", + "Getting /wiki/Federalism_in_the_United_States\n", + "Getting /wiki/Federal_preemption\n", + "Getting /wiki/Separation_of_powers_under_the_United_States_Constitution\n", + "Getting /wiki/Civil_rights_movement\n", + "Getting /wiki/Federal_Reporter\n", + "Already fetched /wiki/United_States_Code\n", + "Getting /wiki/United_States_Reports\n", + "Getting /wiki/United_States_Intelligence_Community\n", + "Getting /wiki/Central_Intelligence_Agency\n", + "Getting /wiki/Defense_Intelligence_Agency\n", + "Getting /wiki/Federal_Bureau_of_Investigation\n", + "Getting /wiki/National_Geospatial-Intelligence_Agency\n", + "Getting /wiki/National_Reconnaissance_Office\n", + "Getting /wiki/National_Security_Agency\n", + "Getting /wiki/Director_of_National_Intelligence\n", + "Getting /wiki/Uniformed_services_of_the_United_States\n", + "Getting /wiki/United_States_Armed_Forces\n", + "Getting /wiki/United_States_Army\n", + "Getting /wiki/United_States_Marine_Corps\n", + "Getting /wiki/United_States_Navy\n", + "Getting /wiki/United_States_Air_Force\n", + "Getting /wiki/United_States_Space_Force\n", + "Getting /wiki/United_States_Coast_Guard\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Getting /wiki/National_Guard_(United_States)\n", + "Getting /wiki/NOAA_Commissioned_Officer_Corps\n", + "Getting /wiki/United_States_Public_Health_Service_Commissioned_Corps\n", + "Getting /wiki/51st_state\n", + "Getting /wiki/Political_status_of_Puerto_Rico\n", + "Getting /wiki/Puerto_Rico_statehood_movement\n", + "Getting /wiki/District_of_Columbia_statehood_movement\n", + "Getting /wiki/Elections_in_the_United_States\n", + "Getting /wiki/United_States_Electoral_College\n", + "Getting /wiki/Foreign_relations_of_the_United_States\n", + "Getting /wiki/Foreign_policy_of_the_United_States\n", + "Getting /wiki/Secession_in_the_United_States\n", + "Getting /wiki/Hawaiian_sovereignty_movement\n", + "Getting /wiki/Political_ideologies_in_the_United_States\n", + "Getting /wiki/Anti-Americanism\n", + "Getting /wiki/American_exceptionalism\n", + "Getting /wiki/American_nationalism\n", + "Getting /wiki/Local_government_in_the_United_States\n", + "Getting /wiki/Political_parties_in_the_United_States\n", + "Getting /wiki/Democratic_Party_(United_States)\n", + "Getting /wiki/Republican_Party_(United_States)\n", + "Getting /wiki/Third_party_(United_States)\n", + "Getting /wiki/Red_states_and_blue_states\n", + "Getting /wiki/List_of_federal_political_scandals_in_the_United_States\n", + "Getting /wiki/State_governments_of_the_United_States\n", + "Getting /wiki/Governor_(United_States)\n", + "Getting /wiki/State_legislature_(United_States)\n", + "Getting /wiki/State_court_(United_States)\n", + "Getting /wiki/Imperial_presidency\n", + "Getting /wiki/Corruption_in_the_United_States\n", + "Getting /wiki/Economy_of_the_United_States\n", + "Getting /wiki/Economy_of_the_United_States_by_sector\n", + "Getting /wiki/Agriculture_in_the_United_States\n", + "Getting /wiki/Banking_in_the_United_States\n", + "Getting /wiki/Communications_in_the_United_States\n", + "Getting /wiki/List_of_companies_of_the_United_States_by_state\n", + "Getting /wiki/Energy_in_the_United_States\n", + "Getting /wiki/Insurance_in_the_United_States\n", + "Getting /wiki/Manufacturing_in_the_United_States\n", + "Getting /wiki/Mining_in_the_United_States\n", + "Getting /wiki/Science_and_technology_in_the_United_States\n", + "Getting /wiki/Tourism_in_the_United_States\n", + "Getting /wiki/Foreign_trade_of_the_United_States\n", + "Getting /wiki/Transportation_in_the_United_States\n", + "Getting /wiki/List_of_companies_of_the_United_States_by_state\n", + "Getting /wiki/United_States_dollar\n", + "Getting /wiki/List_of_exports_of_the_United_States\n", + "Getting /wiki/United_States_federal_budget\n", + "Getting /wiki/Greenhouse_gas_emissions_by_the_United_States\n", + "Getting /wiki/Federal_Reserve\n", + "Getting /wiki/Financial_position_of_the_United_States\n", + "Getting /wiki/Labor_unions_in_the_United_States\n", + "Getting /wiki/National_debt_of_the_United_States\n", + "Getting /wiki/Social_programs_in_the_United_States\n", + "Getting /wiki/Taxation_in_the_United_States\n", + "Getting /wiki/Unemployment_in_the_United_States\n", + "Getting /wiki/Wall_Street\n", + "Getting /wiki/Culture_of_the_United_States\n", + "Getting /wiki/Americana_(culture)\n", + "Getting /wiki/Architecture_of_the_United_States\n", + "Getting /wiki/Cinema_of_the_United_States\n", + "Getting /wiki/Crime_in_the_United_States\n", + "Getting /wiki/American_cuisine\n", + "Getting /wiki/Wine_of_the_United_States\n", + "Getting /wiki/Dance_in_the_United_States\n", + "Getting /wiki/Death_care_industry_in_the_United_States\n", + "Getting /wiki/Women_in_death_care_in_the_United_States\n", + "Getting /wiki/Demographics_of_the_United_States\n", + "Getting /wiki/Economy_of_the_United_States\n", + "Getting /wiki/Affluence_in_the_United_States\n", + "Getting /wiki/Eviction_in_the_United_States\n", + "Getting /wiki/Home-ownership_in_the_United_States\n", + "Getting /wiki/Household_income_in_the_United_States\n", + "Getting /wiki/Income_inequality_in_the_United_States\n", + "Getting /wiki/Labor_unions_in_the_United_States\n", + "Getting /wiki/American_middle_class\n", + "Getting /wiki/Personal_income_in_the_United_States\n", + "Getting /wiki/Poverty_in_the_United_States\n", + "Getting /wiki/Standard_of_living_in_the_United_States\n", + "Getting /wiki/Affluence_in_the_United_States\n", + "Getting /wiki/Education_in_the_United_States\n", + "Getting /wiki/Educational_attainment_in_the_United_States\n", + "Getting /wiki/Literacy_in_the_United_States\n", + "Getting /wiki/Family_in_the_United_States\n", + "Getting /wiki/Fashion_in_the_United_States\n", + "Getting /wiki/Flag_of_the_United_States\n", + "Getting /wiki/Folklore_of_the_United_States\n", + "Getting /wiki/Great_American_Novel\n", + "Getting /wiki/Health_in_the_United_States\n", + "Getting /wiki/Healthcare_in_the_United_States\n", + "Getting /wiki/Health_insurance_in_the_United_States\n", + "Getting /wiki/Public_holidays_in_the_United_States\n", + "Getting /wiki/Homelessness_in_the_United_States\n", + "Getting /wiki/Housing_in_the_United_States\n", + "Getting /wiki/Human_rights_in_the_United_States\n", + "Getting /wiki/Languages_of_the_United_States\n", + "Getting /wiki/American_English\n", + "Getting /wiki/Indigenous_languages_of_the_Americas\n", + "Getting /wiki/American_Sign_Language\n", + "Getting /wiki/Black_American_Sign_Language\n", + "Getting /wiki/Hawai%CA%BBi_Sign_Language\n", + "Getting /wiki/Plains_Indian_Sign_Language\n", + "Getting /wiki/Arabic_language_in_the_United_States\n", + "Getting /wiki/Chinese_language_and_varieties_in_the_United_States\n", + "Getting /wiki/French_language_in_the_United_States\n", + "Getting /wiki/German_language_in_the_United_States\n", + "Getting /wiki/Italian_language_in_the_United_States\n", + "Getting /wiki/Russian_language_in_the_United_States\n", + "Getting /wiki/Spanish_language_in_the_United_States\n", + "Getting /wiki/American_literature\n", + "Getting /wiki/Mass_media_in_the_United_States\n", + "Getting /wiki/History_of_American_journalism\n", + "Getting /wiki/Internet_in_the_United_States\n", + "Getting /wiki/History_of_American_newspapers\n", + "Getting /wiki/Radio_in_the_United_States\n", + "Getting /wiki/Television_in_the_United_States\n", + "Getting /wiki/Music_of_the_United_States\n", + "Getting /wiki/Naming_in_the_United_States\n", + "Getting /wiki/National_symbols_of_the_United_States\n", + "Getting /wiki/Columbia_(personification)\n", + "Getting /wiki/Mount_Rushmore\n", + "Getting /wiki/Statue_of_Liberty\n", + "Getting /wiki/Uncle_Sam\n", + "Getting /wiki/Americans\n", + "Getting /wiki/American_philosophy\n", + "Getting /wiki/Political_ideologies_in_the_United_States\n", + "Getting /wiki/Race_and_ethnicity_in_the_United_States\n", + "Getting /wiki/Religion_in_the_United_States\n", + "Getting /wiki/Sexuality_in_the_United_States\n", + "Getting /wiki/Adolescent_sexuality_in_the_United_States\n", + "Getting /wiki/Social_class_in_the_United_States\n", + "Getting /wiki/Society_of_the_United_States\n", + "Getting /wiki/Sports_in_the_United_States\n", + "Getting /wiki/Theater_in_the_United_States\n", + "Getting /wiki/Transportation_in_the_United_States\n", + "Getting /wiki/Video_games_in_the_United_States\n", + "Getting /wiki/Visual_art_of_the_United_States\n", + "Getting /wiki/Social_class_in_the_United_States\n", + "Getting /wiki/Affluence_in_the_United_States\n", + "Getting /wiki/American_Dream\n", + "Getting /wiki/Educational_attainment_in_the_United_States\n", + "Getting /wiki/Homelessness_in_the_United_States\n", + "Getting /wiki/Home-ownership_in_the_United_States\n", + "Getting /wiki/Household_income_in_the_United_States\n", + "Getting /wiki/Income_inequality_in_the_United_States\n", + "Getting /wiki/American_middle_class\n", + "Getting /wiki/Personal_income_in_the_United_States\n", + "Getting /wiki/Poverty_in_the_United_States\n", + "Getting /wiki/Standard_of_living_in_the_United_States\n", + "Getting /wiki/Ages_of_consent_in_the_United_States\n", + "Getting /wiki/Capital_punishment_in_the_United_States\n", + "Getting /wiki/Crime_in_the_United_States\n", + "Getting /wiki/Incarceration_in_the_United_States\n", + "Getting /wiki/Criticism_of_the_United_States_government\n", + "Getting /wiki/Discrimination_in_the_United_States\n", + "Getting /wiki/Affirmative_action_in_the_United_States\n", + "Getting /wiki/Antisemitism_in_the_United_States\n", + "Getting /wiki/Discrimination_based_on_hair_texture_in_the_United_States\n", + "Getting /wiki/Intersex_rights_in_the_United_States\n", + "Getting /wiki/Islamophobia_in_the_United_States\n", + "Getting /wiki/LGBT_rights_in_the_United_States\n", + "Getting /wiki/Racism_in_the_United_States\n", + "Getting /wiki/Same-sex_marriage_in_the_United_States\n", + "Getting /wiki/Federal_drug_policy_of_the_United_States\n", + "Getting /wiki/Energy_policy_of_the_United_States\n", + "Getting /wiki/Environmental_issues_in_the_United_States\n", + "Getting /wiki/Environmental_movement_in_the_United_States\n", + "Getting /wiki/Climate_change_in_the_United_States\n", + "Getting /wiki/Environmental_education_in_the_United_States\n", + "Getting /wiki/Gun_politics_in_the_United_States\n", + "Getting /wiki/Healthcare_in_the_United_States\n", + "Getting /wiki/Abortion_in_the_United_States\n", + "Getting /wiki/Health_insurance_in_the_United_States\n", + "Getting /wiki/Hunger_in_the_United_States\n", + "Getting /wiki/Obesity_in_the_United_States\n", + "Getting /wiki/Tobacco_in_the_United_States\n", + "Getting /wiki/Human_rights_in_the_United_States\n", + "Getting /wiki/Immigration_to_the_United_States\n", + "Getting /wiki/Illegal_immigration_to_the_United_States\n", + "Getting /wiki/International_rankings_of_the_United_States\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Getting /wiki/National_security_of_the_United_States\n", + "Getting /wiki/Mass_surveillance_in_the_United_States\n", + "Getting /wiki/Terrorism_in_the_United_States\n", + "Getting /wiki/Separation_of_church_and_state_in_the_United_States\n", + "Getting /wiki/Outline_of_the_United_States\n", + "Getting /wiki/Outline_of_the_United_States\n", + "Getting /wiki/Bicameralism\n", + "Getting /wiki/Legislature\n", + "Getting /wiki/Federation\n", + "Getting /wiki/National_Congress_of_Argentina\n", + "Getting /wiki/Parliament_of_Australia\n", + "Getting /wiki/Austrian_Parliament\n", + "Getting /wiki/Belgian_Federal_Parliament\n", + "Getting /wiki/Parliamentary_Assembly_of_Bosnia_and_Herzegovina\n", + "Getting /wiki/National_Congress_of_Brazil\n", + "Getting /wiki/Parliament_of_Canada\n", + "Getting /wiki/Parliament_of_Egypt\n", + "Getting /wiki/Federal_Parliamentary_Assembly\n", + "Getting /wiki/Parliament_of_India\n", + "Getting /wiki/Parliament_of_Malaysia\n", + "Getting /wiki/Congress_of_the_Union\n", + "Getting /wiki/Federal_Parliament_of_Nepal\n", + "Getting /wiki/National_Assembly_(Nigeria)\n", + "Getting /wiki/Parliament_of_Pakistan\n", + "Getting /wiki/Federal_Assembly_(Russia)\n", + "Getting /wiki/Federal_Parliament_of_Somalia\n", + "Getting /wiki/National_Legislature_(South_Sudan)\n", + "Getting /wiki/National_Legislature_(Sudan)\n", + "Getting /wiki/Federal_Assembly_(Switzerland)\n", + "Getting /wiki/Unitary_state\n", + "Getting /wiki/Parliament_of_Algeria\n", + "Getting /wiki/Parliament_of_Antigua_and_Barbuda\n", + "Getting /wiki/Parliament_of_the_Bahamas\n", + "Getting /wiki/National_Assembly_(Bahrain)\n", + "Getting /wiki/Parliament_of_Barbados\n", + "Getting /wiki/National_Assembly_of_Belarus\n", + "Getting /wiki/National_Assembly_(Belize)\n", + "Getting /wiki/Parliament_of_Bhutan\n", + "Getting /wiki/Plurinational_Legislative_Assembly\n", + "Getting /wiki/Parliament_of_Burundi\n", + "Getting /wiki/Parliament_of_Cambodia\n", + "Getting /wiki/Parliament_of_Cameroon\n", + "Getting /wiki/National_Congress_of_Chile\n", + "Getting /wiki/Congress_of_Colombia\n", + "Getting /wiki/Parliament_of_the_Democratic_Republic_of_the_Congo\n", + "Getting /wiki/Parliament_of_the_Republic_of_the_Congo\n", + "Getting /wiki/Parliament_of_the_Czech_Republic\n", + "Getting /wiki/Congress_of_the_Dominican_Republic\n", + "Getting /wiki/Parliament_of_Equatorial_Guinea\n", + "Getting /wiki/Parliament_of_Eswatini\n", + "Getting /wiki/French_Parliament\n", + "Getting /wiki/Parliament_of_Gabon\n", + "Getting /wiki/Parliament_of_Grenada\n", + "Getting /wiki/Haitian_Parliament\n", + "Getting /wiki/People%27s_Consultative_Assembly\n", + "Getting /wiki/Oireachtas\n", + "Getting /wiki/Italian_Parliament\n", + "Getting /wiki/Parliament_of_Ivory_Coast\n", + "Getting /wiki/Parliament_of_Jamaica\n", + "Getting /wiki/National_Diet\n", + "Getting /wiki/Parliament_of_Jordan\n", + "Getting /wiki/Parliament_of_Kazakhstan\n", + "Getting /wiki/Parliament_of_Kenya\n", + "Getting /wiki/Parliament_of_Lesotho\n", + "Getting /wiki/Legislature_of_Liberia\n", + "Getting /wiki/Parliament_of_Madagascar\n", + "Getting /wiki/Parliament_of_Morocco\n", + "Getting /wiki/Assembly_of_the_Union\n", + "Getting /wiki/Parliament_of_Namibia\n", + "Getting /wiki/States_General_of_the_Netherlands\n", + "Getting /wiki/Council_of_Oman\n", + "Getting /wiki/Palau_National_Congress\n", + "Getting /wiki/Congress_of_Paraguay\n", + "Getting /wiki/Congress_of_the_Philippines\n", + "Getting /wiki/Parliament_of_Poland\n", + "Getting /wiki/Parliament_of_Romania\n", + "Getting /wiki/Parliament_of_Rwanda\n", + "Getting /wiki/Parliament_of_Saint_Lucia\n", + "Getting /wiki/Slovenian_Parliament\n", + "Getting /wiki/Parliament_of_South_Africa\n", + "Getting /wiki/Cortes_Generales\n", + "Getting /wiki/Supreme_Assembly_(Tajikistan)\n", + "Getting /wiki/National_Assembly_of_Thailand\n", + "Getting /wiki/Parliament_of_Trinidad_and_Tobago\n", + "Getting /wiki/National_Council_of_Turkmenistan\n", + "Getting /wiki/Parliament_of_the_United_Kingdom\n", + "Getting /wiki/General_Assembly_of_Uruguay\n", + "Getting /wiki/Oliy_Majlis\n", + "Getting /wiki/Parliament_of_Zimbabwe\n", + "Getting /wiki/Dependent_territory\n", + "Getting /wiki/American_Samoa_Fono\n", + "Getting /wiki/Parliament_of_Bermuda\n", + "Getting /wiki/Tynwald\n", + "Getting /wiki/Northern_Mariana_Islands_Commonwealth_Legislature\n", + "Getting /wiki/Legislative_Assembly_of_Puerto_Rico\n", + "Getting /wiki/List_of_states_with_limited_recognition\n", + "Getting /wiki/Parliament_of_Somaliland\n", + "Getting /wiki/Congress_of_the_Republic_of_Venezuela\n", + "Getting /wiki/Confederate_States_Congress\n", + "Getting /wiki/National_Assembly_(Czechoslovakia)\n", + "Getting /wiki/Federal_Assembly_(Czechoslovakia)\n", + "Getting /wiki/Riigikogu#Division\n", + "Getting /wiki/Parliament_of_Serbia\n", + "Getting /wiki/Supreme_Soviet_of_the_Soviet_Union\n", + "Getting /wiki/Congress_of_the_Republic_of_Texas\n", + "Getting /wiki/Parliament_of_Yugoslavia\n", + "Getting /wiki/Parliament_of_Serbia_and_Montenegro\n", + "Getting /wiki/Unicameralism\n", + "Getting /wiki/Tricameralism\n", + "Getting /wiki/Tetracameralism\n", + "Getting /wiki/List_of_legislatures_by_country\n", + "Getting /wiki/Sovereign_state\n", + "Getting /wiki/Parliament_of_Antigua_and_Barbuda\n", + "Getting /wiki/National_Congress_of_Argentina\n", + "Getting /wiki/Parliament_of_the_Bahamas\n", + "Getting /wiki/Parliament_of_Barbados\n", + "Getting /wiki/National_Assembly_(Belize)\n", + "Getting /wiki/Plurinational_Legislative_Assembly\n", + "Getting /wiki/National_Congress_of_Brazil\n", + "Getting /wiki/Parliament_of_Canada\n", + "Getting /wiki/National_Congress_of_Chile\n", + "Getting /wiki/Congress_of_Colombia\n", + "Getting /wiki/Legislative_Assembly_of_Costa_Rica\n", + "Getting /wiki/National_Assembly_of_People%27s_Power\n", + "Getting /wiki/House_of_Assembly_of_Dominica\n", + "Getting /wiki/Congress_of_the_Dominican_Republic\n", + "Getting /wiki/National_Assembly_(Ecuador)\n", + "Getting /wiki/Legislative_Assembly_of_El_Salvador\n", + "Getting /wiki/French_Parliament\n", + "Getting /wiki/Parliament_of_Grenada\n", + "Getting /wiki/Congress_of_Guatemala\n", + "Getting /wiki/National_Assembly_(Guyana)\n", + "Getting /wiki/Haitian_Parliament\n", + "Getting /wiki/National_Congress_of_Honduras\n", + "Getting /wiki/Parliament_of_Jamaica\n", + "Getting /wiki/Congress_of_the_Union\n", + "Getting /wiki/National_Assembly_(Nicaragua)\n", + "Getting /wiki/National_Assembly_(Panama)\n", + "Getting /wiki/Congress_of_Paraguay\n", + "Getting /wiki/Congress_of_the_Republic_of_Peru\n", + "Getting /wiki/National_Assembly_(Saint_Kitts_and_Nevis)\n", + "Getting /wiki/Parliament_of_Saint_Lucia\n", + "Getting /wiki/House_of_Assembly_of_Saint_Vincent_and_the_Grenadines\n", + "Getting /wiki/National_Assembly_(Suriname)\n", + "Getting /wiki/Parliament_of_Trinidad_and_Tobago\n", + "Getting /wiki/General_Assembly_of_Uruguay\n", + "Getting /wiki/National_Assembly_(Venezuela)\n", + "Getting /wiki/Dependent_territory\n", + "Getting /wiki/Territory\n", + "Getting /wiki/House_of_Assembly_(Anguilla)\n", + "Getting /wiki/Estates_of_Aruba\n", + "Getting /wiki/Parliament_of_Bermuda\n", + "Getting /wiki/House_of_Assembly_of_the_British_Virgin_Islands\n", + "Getting /wiki/Parliament_of_the_Cayman_Islands\n", + "Getting /wiki/Estates_of_Cura%C3%A7ao\n", + "Getting /wiki/Legislative_Assembly_of_the_Falkland_Islands\n", + "Getting /wiki/Parliament_of_Greenland\n", + "Getting /wiki/Legislative_Assembly_of_Montserrat\n", + "Getting /wiki/Legislative_Assembly_of_Puerto_Rico\n", + "Getting /wiki/Territorial_Council_of_Saint_Barth%C3%A9lemy\n", + "Getting /wiki/Territorial_Council_of_Saint_Pierre_and_Miquelon\n", + "Getting /wiki/Estates_of_Sint_Maarten\n", + "Getting /wiki/House_of_Assembly_(Turks_and_Caicos_Islands)\n", + "Getting /wiki/Legislature_of_the_Virgin_Islands\n", + "Getting /wiki/Universal_Social_Charge\n", + "Already fetched /wiki/Main_Page\n", + "Already fetched /wiki/Main_Page\n", + "Getting /wiki/Taxation_in_the_Republic_of_Ireland\n", + "Getting /wiki/Taxation_in_the_Republic_of_Ireland\n", + "Getting /wiki/Taxation_in_the_Republic_of_Ireland\n", + "Getting /wiki/Corporation_tax_in_the_Republic_of_Ireland\n", + "Getting /wiki/Tax\n", + "Getting /wiki/Fiscal_policy\n", + "Getting /wiki/Tax_policy\n", + "Getting /wiki/Government_revenue\n", + "Getting /wiki/Property_tax_equalization\n", + "Getting /wiki/Tax_revenue\n", + "Getting /wiki/Non-tax_revenue\n", + "Getting /wiki/Tax_law\n", + "Getting /wiki/Tax_bracket\n", + "Getting /wiki/Flat_tax\n", + "Getting /wiki/Income_tax_threshold\n", + "Getting /wiki/Tax_exemption\n", + "Getting /wiki/Tax_credit\n", + "Getting /wiki/Tax_deduction\n", + "Getting /wiki/Tax_shift\n", + "Getting /wiki/Tax_cut\n", + "Getting /wiki/Tax_holiday\n", + "Getting /wiki/Tax_amnesty\n", + "Getting /wiki/Tax_advantage\n", + "Getting /wiki/Tax_incentive\n", + "Getting /wiki/Tax_reform\n", + "Getting /wiki/Tax_harmonization\n", + "Getting /wiki/Tax_competition\n", + "Getting /wiki/Tax_withholding\n", + "Getting /wiki/Double_taxation\n", + "Getting /wiki/No_taxation_without_representation\n", + "Getting /wiki/Taxpayer_groups\n", + "Getting /wiki/Medical_savings_account\n", + "Getting /wiki/Tax#Economic_effects\n", + "Getting /wiki/Effect_of_taxes_and_subsidies_on_price\n", + "Getting /wiki/Excess_burden_of_taxation\n", + "Getting /wiki/Tax_incidence\n", + "Getting /wiki/Laffer_curve\n", + "Getting /wiki/Optimal_tax\n", + "Getting /wiki/Theories_of_taxation\n", + "Getting /wiki/Optimal_capital_income_taxation\n", + "Getting /wiki/Tax_rate\n", + "Getting /wiki/Flat_tax\n", + "Getting /wiki/Progressive_tax\n", + "Getting /wiki/Regressive_tax\n", + "Getting /wiki/Proportional_tax\n", + "Getting /wiki/Tax_collection\n", + "Getting /wiki/Revenue_service\n", + "Getting /wiki/Revenue_stamp\n", + "Getting /wiki/Tax_assessment\n", + "Getting /wiki/Taxable_income\n", + "Getting /wiki/Tax_lien\n", + "Getting /wiki/Tax_refund\n", + "Getting /wiki/Tax_shield\n", + "Getting /wiki/Tax_residence\n", + "Getting /wiki/Tax_preparation\n", + "Getting /wiki/Tax_investigation\n", + "Getting /wiki/Tax_shelter\n", + "Getting /wiki/Tax_collector\n", + "Getting /wiki/Privatized_tax_collection\n", + "Getting /wiki/Farm_(revenue_leasing)\n", + "Getting /wiki/Tax_noncompliance\n", + "Getting /wiki/Tax_avoidance\n", + "Getting /wiki/Repatriation_tax_avoidance\n", + "Getting /wiki/Tax_evasion\n", + "Getting /wiki/Tax_resistance\n", + "Getting /wiki/Tax_shelter\n", + "Getting /wiki/Smuggling\n", + "Getting /wiki/Black_market\n", + "Getting /wiki/Unreported_employment\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Getting /wiki/Tax_inversion\n", + "Getting /wiki/Transfer_mispricing\n", + "Getting /wiki/Base_erosion_and_profit_shifting\n", + "Getting /wiki/Double_Irish_arrangement\n", + "Getting /wiki/Dutch_Sandwich\n", + "Getting /wiki/Double_Irish_arrangement#Replacement_by_single_malt\n", + "Getting /wiki/Double_Irish_arrangement#Backstop_of_capital_allowances\n", + "Getting /wiki/Tax_haven\n", + "Getting /wiki/Corporate_haven\n", + "Getting /wiki/Offshore_financial_centre\n", + "Getting /wiki/Offshore_magic_circle\n", + "Getting /wiki/Conduit_and_sink_OFCs\n", + "Getting /wiki/Financial_centre\n", + "Getting /wiki/Financial_Secrecy_Index\n", + "Getting /wiki/Ireland_as_a_tax_haven\n", + "Getting /wiki/EU_illegal_state_aid_case_against_Apple_in_Ireland\n", + "Getting /wiki/Leprechaun_economics\n", + "Getting /wiki/2008_Liechtenstein_tax_affair\n", + "Getting /wiki/LuxLeaks\n", + "Getting /wiki/Offshore_Leaks\n", + "Getting /wiki/Paradise_Papers\n", + "Getting /wiki/Panama_Papers\n", + "Getting /wiki/Swiss_Leaks\n", + "Getting /wiki/United_States_as_a_tax_haven\n", + "Getting /wiki/Panama_as_a_tax_haven\n", + "Getting /wiki/List_of_taxes\n", + "Getting /wiki/Direct_tax\n", + "Getting /wiki/Indirect_tax\n", + "Getting /wiki/Per_unit_tax\n", + "Getting /wiki/Ad_valorem_tax\n", + "Getting /wiki/Aviation_taxation_and_subsidies\n", + "Getting /wiki/Airport_improvement_fee\n", + "Getting /wiki/Landing_fee\n", + "Getting /wiki/Solidarity_tax_on_airplane_tickets\n", + "Getting /wiki/Capital_gains_tax\n", + "Getting /wiki/Expatriation_tax\n", + "Getting /wiki/Consumption_tax\n", + "Getting /wiki/Departure_tax\n", + "Getting /wiki/Hotel_tax\n", + "Getting /wiki/Sales_tax\n", + "Getting /wiki/Stamp_duty\n", + "Getting /wiki/Television_licence\n", + "Getting /wiki/Tourist_tax\n", + "Getting /wiki/Value-added_tax\n", + "Getting /wiki/Dividend_tax\n", + "Getting /wiki/Environmental_tax\n", + "Getting /wiki/Carbon_tax\n", + "Getting /wiki/Kerosene_tax\n", + "Getting /wiki/Landfill_tax\n", + "Getting /wiki/Natural_resources_consumption_tax\n", + "Getting /wiki/Severance_tax\n", + "Getting /wiki/Steering_tax\n", + "Getting /wiki/Stumpage\n", + "Getting /wiki/Excise\n", + "Getting /wiki/Alcohol_law\n", + "Getting /wiki/Cigarette_taxes_in_the_United_States\n", + "Getting /wiki/Fat_tax\n", + "Getting /wiki/Meat_tax\n", + "Getting /wiki/Sin_tax\n", + "Getting /wiki/Sugary_drink_tax\n", + "Getting /wiki/Tobacco_smoking\n", + "Getting /wiki/Consolidated_Fund\n", + "Getting /wiki/Georgism\n", + "Getting /wiki/Gift_tax\n", + "Getting /wiki/Gross_receipts_tax\n", + "Getting /wiki/Hypothecated_tax\n", + "Getting /wiki/Income_tax\n", + "Getting /wiki/Inheritance_tax\n", + "Getting /wiki/Land_value_tax\n", + "Getting /wiki/Luxury_tax\n", + "Getting /wiki/Payroll_tax\n", + "Getting /wiki/Pigouvian_tax\n", + "Getting /wiki/Property_tax\n", + "Getting /wiki/Single_tax\n", + "Getting /wiki/Surtax\n", + "Getting /wiki/Turnover_tax\n", + "Getting /wiki/Use_tax\n", + "Getting /wiki/User_charge\n", + "Getting /wiki/User_fee\n", + "Getting /wiki/Congestion_pricing\n", + "Getting /wiki/Fuel_tax\n", + "Getting /wiki/Road_pricing\n", + "Getting /wiki/GNSS_road_pricing\n", + "Getting /wiki/Toll_(fee)\n", + "Getting /wiki/Vehicle_miles_traveled_tax\n", + "Getting /wiki/Corporate_tax\n", + "Getting /wiki/Excess_profits_tax\n", + "Getting /wiki/Windfall_tax\n", + "Getting /wiki/Negative_income_tax\n", + "Getting /wiki/Wealth_tax\n", + "Getting /wiki/International_taxation\n", + "Getting /wiki/Financial_transaction_tax\n", + "Getting /wiki/Currency_transaction_tax\n", + "Getting /wiki/Common_Consolidated_Corporate_Tax_Base\n", + "Getting /wiki/Global_minimum_corporate_tax_rate\n", + "Getting /wiki/Tobin_tax\n", + "Getting /wiki/Spahn_tax\n", + "Getting /wiki/Tax_equalization\n", + "Getting /wiki/Tax_treaty\n", + "Getting /wiki/Permanent_establishment\n", + "Getting /wiki/Transfer_pricing\n", + "Getting /wiki/European_Union_financial_transaction_tax\n", + "Getting /wiki/Rule_against_foreign_revenue_enforcement\n", + "Getting /wiki/Trade\n", + "Getting /wiki/Customs\n", + "Getting /wiki/Duty_(economics)\n", + "Getting /wiki/Tariff\n", + "Getting /wiki/Import\n", + "Getting /wiki/Export\n", + "Getting /wiki/Trade_war\n", + "Getting /wiki/Free_trade\n", + "Getting /wiki/Free-trade_zone\n", + "Getting /wiki/Trade_agreement\n", + "Getting /wiki/ATA_Carnet\n", + "Getting /wiki/Mihir_A._Desai\n", + "Getting /wiki/Dhammika_Dharmapala\n", + "Getting /wiki/James_R._Hines_Jr.\n", + "Getting /wiki/Ronen_Palan\n", + "Getting /wiki/Joel_Slemrod\n", + "Getting /wiki/Gabriel_Zucman\n", + "Getting /wiki/Institute_on_Taxation_and_Economic_Policy\n", + "Getting /wiki/Oxfam\n", + "Getting /wiki/Tax_Foundation\n", + "Getting /wiki/Tax_Justice_Network\n", + "Getting /wiki/Tax_Policy_Center\n", + "Getting /wiki/Religion\n", + "Getting /wiki/Church_tax\n", + "Getting /wiki/Eight_per_thousand\n", + "Getting /wiki/Teind\n", + "Getting /wiki/Tithe\n", + "Getting /wiki/Fiscus_Judaicus\n", + "Getting /wiki/Leibzoll\n", + "Getting /wiki/Temple_tax\n", + "Getting /wiki/Tolerance_tax\n", + "Getting /wiki/Jizya\n", + "Getting /wiki/Kharaj\n", + "Getting /wiki/Khums\n", + "Getting /wiki/Nisab\n", + "Getting /wiki/Zakat\n", + "Getting /wiki/List_of_countries_by_tax_rates\n", + "Getting /wiki/List_of_countries_by_tax_revenue_to_GDP_ratio\n", + "Getting /wiki/Tax_rates_in_Europe\n", + "Getting /wiki/Taxation_in_Albania\n", + "Getting /wiki/Taxation_in_Algeria\n", + "Getting /wiki/Taxation_in_Argentina\n", + "Getting /wiki/Taxation_in_Armenia\n", + "Getting /wiki/Taxation_in_Australia\n", + "Getting /wiki/Taxation_in_Azerbaijan\n", + "Getting /wiki/Taxation_in_Bangladesh\n", + "Getting /wiki/Taxation_in_Bhutan\n", + "Getting /wiki/Taxation_in_Brazil\n", + "Getting /wiki/Taxation_in_Bulgaria\n", + "Getting /wiki/Taxation_in_the_British_Virgin_Islands\n", + "Getting /wiki/Taxation_in_Canada\n", + "Getting /wiki/Taxation_in_China\n", + "Getting /wiki/Taxation_in_Colombia\n", + "Getting /wiki/Taxation_in_Croatia\n", + "Getting /wiki/Taxation_in_Denmark\n", + "Getting /wiki/Taxation_in_Finland\n", + "Getting /wiki/Taxation_in_France\n", + "Getting /wiki/Taxation_in_Germany\n", + "Getting /wiki/Taxation_in_Greece\n", + "Getting /wiki/Taxation_in_Hong_Kong\n", + "Getting /wiki/Taxation_in_Iceland\n", + "Getting /wiki/Taxation_in_India\n", + "Getting /wiki/Taxation_in_Indonesia\n", + "Getting /wiki/Taxation_in_Iran\n", + "Getting /wiki/Taxation_in_Israel\n", + "Getting /wiki/Taxation_in_Italy\n", + "Getting /wiki/Taxation_in_Japan\n", + "Getting /wiki/Taxation_in_Kazakhstan\n", + "Getting /wiki/Taxation_in_Lithuania\n", + "Getting /wiki/Taxation_in_Malta\n", + "Getting /wiki/Taxation_in_Morocco\n", + "Getting /wiki/Taxation_in_Namibia\n", + "Getting /wiki/Taxation_in_the_Netherlands\n", + "Getting /wiki/Taxation_in_New_Zealand\n", + "Getting /wiki/Taxation_in_Norway\n", + "Getting /wiki/Taxation_in_Pakistan\n", + "Getting /wiki/Taxation_in_the_State_of_Palestine\n", + "Getting /wiki/Taxation_in_Peru\n", + "Getting /wiki/Taxation_in_the_Philippines\n", + "Getting /wiki/Taxation_in_Poland\n", + "Getting /wiki/Taxation_in_Portugal\n", + "Getting /wiki/Taxation_in_Russia\n", + "Getting /wiki/Taxation_in_South_Africa\n", + "Getting /wiki/Taxation_in_Sri_Lanka\n", + "Getting /wiki/Taxation_in_Sweden\n", + "Getting /wiki/Taxation_in_Switzerland\n", + "Getting /wiki/Taxation_in_Taiwan\n", + "Getting /wiki/Taxation_in_Tanzania\n", + "Getting /wiki/Taxation_in_the_United_Arab_Emirates\n", + "Getting /wiki/Taxation_in_the_United_Kingdom\n", + "Getting /wiki/Taxation_in_the_United_States\n", + "Getting /wiki/Taxation_in_Uruguay\n", + "Getting /wiki/Income_tax\n", + "Getting /wiki/Consumption_tax\n", + "Getting /wiki/Corporation_tax\n", + "Getting /wiki/Corporation_tax_in_the_Republic_of_Ireland\n", + "Getting /wiki/Base_erosion_and_profit_shifting\n", + "Getting /wiki/Central_Bank_of_Ireland\n", + "Getting /wiki/Modified_gross_national_income\n", + "Getting /wiki/Modified_gross_national_income#Irish_GDP_versus_Modified_GNI_(2009–2017)\n", + "Getting /wiki/Progressive_tax\n", + "Getting /wiki/Progressive_tax\n", + "Getting /wiki/Revenue_Commissioners\n", + "Getting /wiki/Ireland_as_a_tax_haven\n", + "Getting /wiki/Conduit_and_Sink_OFCs\n", + "Getting /wiki/Financial_Stability_Forum\n", + "Getting /wiki/Offshore_financial_centre#Shadow_banking\n", + "Getting /wiki/Tax_haven#Tax_haven_lists\n", + "Getting /wiki/Department_of_Finance_(Ireland)\n", + "Getting /wiki/Corporation_tax_in_the_Republic_of_Ireland#Distortion_of_GDP\n", + "Getting /wiki/BEPS\n", + "Getting /wiki/Corporation_tax_in_the_Republic_of_Ireland#Multinational_tax_schemes\n", + "Getting /wiki/Eurostat\n", + "Getting /wiki/Central_Bank_of_Ireland\n", + "Getting /wiki/Modified_gross_national_income\n", + "Getting /wiki/Modified_gross_national_income#Irish_GDP_versus_Modified_GNI_(2009–2017)\n", + "Getting /wiki/Tax_wedge\n", + "Getting /wiki/Progressive_tax\n", + "Getting /wiki/Tax_Cuts_and_Jobs_Act_of_2017\n", + "Getting /wiki/Corporation_tax_in_the_Republic_of_Ireland#Multinational_economy\n", + "Getting /wiki/Corporation_tax_in_the_Republic_of_Ireland#Effective_tax_rate_(ETR)\n", + "Getting /wiki/Ireland_as_a_tax_haven\n", + "Getting /wiki/Tax_haven#Tax_haven_lists\n", + "Getting /wiki/Fiscal_year\n", + "Getting /wiki/Gregorian_calendar\n", + "Getting /wiki/Euro\n", + "Getting /wiki/Government_debt\n", + "Getting /wiki/Renting\n", + "Getting /wiki/Easement\n", + "Getting /wiki/Tax_credits_in_the_Republic_of_Ireland\n", + "Getting /wiki/Pay_as_you_earn\n", + "Getting /wiki/Time_value_of_money\n", + "Getting /wiki/Cinderella\n", + "Getting /wiki/Domicile_(law)\n", + "Getting /wiki/Health_Service_Executive\n", + "Getting /wiki/F%C3%81S\n", + "Getting /wiki/Pension_scheme\n", + "Getting /wiki/PAYE\n", + "Getting /wiki/Department_of_Social_Protection\n", + "Getting /wiki/Welfare\n", + "Getting /wiki/Unemployment_benefits\n", + "Getting /wiki/Old-age_pension\n", + "Getting /wiki/Garda_S%C3%ADoch%C3%A1na\n", + "Getting /wiki/Defence_Forces_(Ireland)\n", + "Getting /wiki/Non-commissioned_officer\n", + "Getting /wiki/Enlisted_personnel\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Getting /wiki/Self-employment\n", + "Getting /wiki/Company_director\n", + "Getting /wiki/Value-Added_Tax\n", + "Getting /wiki/European_Union_Value_Added_Tax\n", + "Getting /wiki/Gregorian_calendar\n", + "Getting /wiki/Excise_tax\n", + "Getting /wiki/Mineral_oil\n", + "Getting /wiki/Liquefied_petroleum_gas\n", + "Getting /wiki/Coal_oil\n", + "Getting /wiki/Bitumen\n", + "Getting /wiki/Hydrocarbon\n", + "Getting /wiki/Carbon_tax\n", + "Getting /wiki/Aviation_gasoline\n", + "Getting /wiki/Cavendish_tobacco\n", + "Getting /wiki/Pipe_tobacco\n", + "Getting /wiki/Chewing_tobacco\n", + "Getting /wiki/Wine\n", + "Getting /wiki/Corporation_tax_in_the_Republic_of_Ireland#Tax_rates\n", + "Getting /wiki/Corporation_tax_in_the_Republic_of_Ireland#Yearly_returns_(2001–2017)\n", + "Getting /wiki/Corporation_tax_in_the_Republic_of_Ireland#Historical_rates_(1994–2018)\n", + "Getting /wiki/International_Financial_Services_Centre,_Dublin\n", + "Getting /wiki/Thin_capitalisation\n", + "Getting /wiki/Corporation_tax_in_the_Republic_of_Ireland#Corporate_tax_inversions\n", + "Getting /wiki/Medtronic\n", + "Getting /wiki/Base_erosion_and_profit_shifting\n", + "Getting /wiki/Double_Irish\n", + "Getting /wiki/Double_Irish_arrangement#Replacement_by_Single_Malt\n", + "Getting /wiki/Double_Irish_arrangement#CAIA\n", + "Getting /wiki/Leprechaun_economics\n", + "Getting /wiki/Irish_Section_110_Special_Purpose_Vehicle_(SPV)\n", + "Getting /wiki/Qualifying_investor_alternative_investment_fund_(QIAIF)\n", + "Getting /wiki/Irish_Collective_Asset-management_Vehicle\n", + "Getting /wiki/L-QIAIF\n", + "Getting /wiki/Capital_gains_tax\n", + "Getting /wiki/Savings_bonds\n", + "Getting /wiki/Prize_Bond\n", + "Getting /wiki/Life_assurance\n", + "Getting /wiki/Personal_property\n", + "Getting /wiki/Withholding_tax\n", + "Getting /wiki/Deposit_interest_retention_tax\n", + "Getting /wiki/Retention_tax\n", + "Getting /wiki/Interest\n", + "Getting /wiki/Stamp_duty\n", + "Getting /wiki/Charge_card\n", + "Getting /wiki/Automated_teller_machine\n", + "Getting /wiki/Debit_card\n", + "Getting /wiki/Double_taxation\n", + "Getting /wiki/Cheques\n", + "Getting /wiki/Bill_of_exchange\n", + "Getting /wiki/Insurance\n", + "Getting /wiki/Life_assurance\n", + "Getting /wiki/Withholding\n", + "Getting /wiki/F%C3%81S\n", + "Getting /wiki/Local_property_tax_(Ireland)\n", + "Getting /wiki/Shopping_bag\n", + "Getting /wiki/Eurocent\n", + "Getting /wiki/Airside_(airport)\n", + "Getting /wiki/Motor_vehicle\n", + "Getting /wiki/Jeep\n", + "Getting /wiki/Minibus\n", + "Getting /wiki/Carbon_dioxide\n", + "Getting /wiki/Engine_displacement\n", + "Getting /wiki/Electric_vehicle\n", + "Getting /wiki/Hybrid_vehicle\n", + "Getting /wiki/Odometer\n", + "Getting /wiki/Minister_for_Tourism,_Culture,_Arts,_Gaeltacht,_Sport_and_Media\n", + "Getting /wiki/Government_of_Ireland\n", + "Getting /wiki/Health_Service_Executive\n", + "Getting /wiki/Security_interest\n", + "Getting /wiki/Motor_tax_in_the_Republic_of_Ireland\n", + "Getting /wiki/Carbon_dioxide\n", + "Getting /wiki/Engine_displacement\n", + "Getting /wiki/Gross_vehicle_weight\n", + "Getting /wiki/Tax_evasion\n", + "Getting /wiki/Tax_avoidance\n", + "Getting /wiki/Rates_(tax)\n", + "Getting /wiki/Motor_tax_in_the_Republic_of_Ireland\n", + "Getting /wiki/Republic_of_Ireland\n", + "Getting /wiki/Christianity_in_Ireland\n", + "Getting /wiki/Irish_cuisine\n", + "Getting /wiki/Culture_of_Ireland\n", + "Getting /wiki/Etiquette_in_Europe#Ireland\n", + "Getting /wiki/Public_holidays_in_the_Republic_of_Ireland\n", + "Getting /wiki/Music_of_Ireland\n", + "Getting /wiki/Religion_in_the_Republic_of_Ireland\n", + "Getting /wiki/Sport_in_Ireland\n", + "Getting /wiki/Tourism_in_the_Republic_of_Ireland\n", + "Getting /wiki/Telecommunications_in_the_Republic_of_Ireland\n", + "Getting /wiki/Economy_of_the_Republic_of_Ireland\n", + "Getting /wiki/Transport_in_Ireland\n", + "Getting /wiki/Architecture_of_Ireland\n", + "Getting /wiki/Geography_of_Ireland\n", + "Getting /wiki/History_of_Ireland\n", + "Getting /wiki/Irish_Defence_Forces\n", + "Getting /wiki/Recycling_in_the_Republic_of_Ireland\n", + "Getting /wiki/Demographics_of_the_Republic_of_Ireland\n", + "Getting /wiki/Education_in_the_Republic_of_Ireland\n", + "Getting /wiki/Healthcare_in_the_Republic_of_Ireland\n", + "Getting /wiki/Languages_of_Ireland\n", + "Getting /wiki/Media_of_the_Republic_of_Ireland\n", + "Getting /wiki/Government_of_Ireland\n", + "Getting /wiki/Law_of_the_Republic_of_Ireland\n", + "Getting /wiki/Law_enforcement_in_the_Republic_of_Ireland\n", + "Getting /wiki/Politics_of_the_Republic_of_Ireland\n", + "Getting /wiki/Foreign_relations_of_the_Republic_of_Ireland\n", + "Getting /wiki/Abortion_in_the_Republic_of_Ireland\n", + "Getting /wiki/Same-sex_marriage_in_the_Republic_of_Ireland\n", + "Getting /wiki/Economy_of_the_Republic_of_Ireland\n", + "Getting /wiki/Personal_Public_Service_Number\n", + "Getting /wiki/Modified_gross_national_income\n", + "Getting /wiki/Corporation_tax_in_the_Republic_of_Ireland#ETR\n", + "Getting /wiki/Corporation_tax_in_the_Republic_of_Ireland#ETR\n", + "Getting /wiki/QIAIF\n", + "Getting /wiki/Section_110_SPV\n", + "Getting /wiki/L%E2%80%93QIAIF\n", + "Getting /wiki/Department_of_Finance_(Ireland)\n", + "Getting /wiki/Department_of_Finance_(Ireland)\n", + "Getting /wiki/Department_of_Finance_(Ireland)\n", + "Getting /wiki/Brad_Setser\n", + "Getting /wiki/Council_on_Foreign_Relations\n", + "Getting /wiki/Eurostat\n", + "Getting /wiki/Department_of_Finance_(Ireland)\n", + "Getting /wiki/OECD\n", + "Getting /wiki/Department_of_Finance_(Ireland)\n", + "Getting /wiki/Irish_Times\n", + "Getting /wiki/Irish_Revenue_Commissioners\n", + "Getting /wiki/ArXiv_(identifier)\n", + "Getting /wiki/Bibcode_(identifier)\n", + "Getting /wiki/Doi_(identifier)\n", + "Getting /wiki/PMC_(identifier)\n", + "Getting /wiki/PMID_(identifier)\n", + "Getting /wiki/Financial_Stability_Forum\n", + "Getting /wiki/Gabriel_Zucman\n", + "Getting /wiki/National_Bureau_of_Economic_Research\n", + "Getting /wiki/Wall_Street_Journal\n", + "Getting /wiki/Department_of_Finance_(Ireland)\n", + "Getting /wiki/Department_of_Finance_(Ireland)\n", + "Getting /wiki/Department_of_Finance_(Ireland)\n", + "Getting /wiki/Department_of_Finance_(Ireland)\n", + "Getting /wiki/Irish_Times\n", + "Getting /wiki/Department_of_Finance_(Ireland)\n", + "Getting /wiki/EuroStat\n", + "Getting /wiki/Tax_Foundation\n", + "Getting /wiki/Tax_Foundation\n", + "Getting /wiki/Wayback_Machine\n", + "Getting /wiki/IDA_Ireland\n", + "Getting /wiki/IDA_Ireland\n", + "Getting /wiki/Revenue_Commissioners\n", + "Getting /wiki/Irish_Fiscal_Advisory_Council\n", + "Getting /wiki/University_College_Cork\n", + "Getting /wiki/Department_of_Finance_(Ireland)\n", + "Getting /wiki/Irish_Fiscal_Advisory_Council\n", + "Getting /wiki/Department_of_Finance_(Ireland)\n", + "Getting /wiki/Bloomberg_News\n", + "Getting /wiki/Wayback_Machine\n", + "Getting /wiki/Wayback_Machine\n", + "Getting /wiki/Wayback_Machine\n", + "Getting /wiki/Wayback_Machine\n", + "Getting /wiki/Wayback_Machine\n", + "Getting /wiki/Irish_Revenue_Commissioners\n", + "Getting /wiki/Irish_Revenue_Commissioners\n", + "Getting /wiki/Tax\n", + "Getting /wiki/Taxation_in_Albania\n", + "Getting /wiki/Taxation_in_Andorra\n", + "Getting /wiki/Taxation_in_Armenia\n", + "Getting /wiki/Taxation_in_Austria\n", + "Getting /wiki/Taxation_in_Azerbaijan\n", + "Getting /wiki/Taxation_in_Belgium\n", + "Getting /wiki/Taxation_in_Bosnia_and_Herzegovina\n", + "Getting /wiki/Taxation_in_Bulgaria\n", + "Getting /wiki/Taxation_in_Croatia\n", + "Getting /wiki/Taxation_in_Cyprus\n", + "Getting /wiki/Taxation_in_the_Czech_Republic\n", + "Getting /wiki/Taxation_in_Denmark\n", + "Getting /wiki/Taxation_in_Estonia\n", + "Getting /wiki/Taxation_in_Finland\n", + "Getting /wiki/Taxation_in_France\n", + "Getting /wiki/Taxation_in_Georgia_(country)\n", + "Getting /wiki/Taxation_in_Germany\n", + "Getting /wiki/Taxation_in_Greece\n", + "Getting /wiki/Taxation_in_Hungary\n", + "Getting /wiki/Taxation_in_Iceland\n", + "Getting /wiki/Taxation_in_Italy\n", + "Getting /wiki/Taxation_in_Kazakhstan\n", + "Getting /wiki/Taxation_in_Latvia\n", + "Getting /wiki/Taxation_in_Liechtenstein\n", + "Getting /wiki/Taxation_in_Lithuania\n", + "Getting /wiki/Taxation_in_Luxembourg\n", + "Getting /wiki/Taxation_in_Malta\n", + "Getting /wiki/Taxation_in_Montenegro\n", + "Getting /wiki/Taxation_in_the_Netherlands\n", + "Getting /wiki/Taxation_in_Norway\n", + "Getting /wiki/Taxation_in_Poland\n", + "Getting /wiki/Taxation_in_Portugal\n", + "Getting /wiki/Taxation_in_Russia\n", + "Getting /wiki/Taxation_in_Serbia\n", + "Getting /wiki/Taxation_in_Slovakia\n", + "Getting /wiki/Taxation_in_Spain\n", + "Getting /wiki/Taxation_in_Sweden\n", + "Getting /wiki/Taxation_in_Switzerland\n", + "Getting /wiki/Taxation_in_Turkey\n", + "Getting /wiki/Taxation_in_Ukraine\n", + "Getting /wiki/Taxation_in_the_United_Kingdom\n", + "Getting /wiki/Taxation_in_the_European_Union\n", + "Getting /wiki/Utility_Stores_Corporation\n", + "Already fetched /wiki/Main_Page\n", + "Already fetched /wiki/Main_Page\n", + "Already fetched /wiki/Utility_Stores_Corporation\n", + "Already fetched /wiki/Utility_Stores_Corporation\n", + "Already fetched /wiki/Utility_Stores_Corporation\n", + "Getting /wiki/Consumer_Goods\n", + "Getting /wiki/Islamabad\n", + "Getting /wiki/Wheat_flour\n", + "Getting /wiki/Rice\n", + "Getting /wiki/Sugar\n", + "Getting /wiki/Biscuit\n", + "Getting /wiki/Ketchup\n", + "Getting /wiki/Toothpaste\n", + "Getting /wiki/Ghee\n", + "Getting /wiki/Oil\n", + "Getting /wiki/Spice\n", + "Getting /wiki/Dates_(fruit)\n", + "Getting /wiki/Tea\n", + "Getting /wiki/Beverages\n", + "Getting /wiki/Government_of_Pakistan\n", + "Getting /wiki/Parent_company\n", + "Getting /wiki/Ministry_of_Industries_and_Production_(Pakistan)\n", + "Getting /wiki/Urdu_language\n", + "Getting /wiki/State-owned_enterprise\n", + "Getting /wiki/Chain_stores\n", + "Getting /wiki/Board_of_directors\n", + "Getting /wiki/Managing_director\n", + "Getting /wiki/Government_of_Pakistan\n", + "Getting /wiki/List_of_supermarket_chains_in_Asia#_Pakistan\n", + "Getting /wiki/Carrefour\n", + "Getting /wiki/CSD_Pakistan\n", + "Getting /wiki/Imtiaz_(supermarket)\n", + "Getting /wiki/Metro_Cash_%26_Carry_Pakistan\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Getting /wiki/Spar_(retailer)\n", + "Getting /wiki/Ministry_of_Industries_and_Production_(Pakistan)\n", + "Getting /wiki/Minister_for_Industries_and_Production_(Pakistan)\n", + "Getting /wiki/Ghulam_Murtaza_Jatoi\n", + "Getting /wiki/National_Fertilizer_Corporation\n", + "Getting /wiki/Pakistan_Gems_and_Jewellery_Development_Company\n", + "Getting /wiki/Pakistan_Industrial_Development_Corporation\n", + "Getting /wiki/Pakistan_Steel_Mills\n", + "Getting /wiki/Small_and_Medium_Enterprise_Development_Authority\n", + "Getting /wiki/Government_of_Pakistan\n", + "Getting /wiki/Pakistan\n", + "Getting /wiki/Ulster_Special_Constabulary\n", + "Already fetched /wiki/Main_Page\n", + "Already fetched /wiki/Main_Page\n", + "Already fetched /wiki/Ulster_Special_Constabulary\n", + "Already fetched /wiki/Ulster_Special_Constabulary\n", + "Already fetched /wiki/Ulster_Special_Constabulary\n", + "Getting /wiki/Ulster_Defence_Regiment\n", + "Getting /wiki/Law_enforcement_agency#natlea\n", + "Getting /wiki/Northern_Ireland\n", + "Getting /wiki/Northern_Ireland\n", + "Getting /wiki/Law_enforcement_agency#locpol\n", + "Getting /wiki/Special_constable\n", + "Getting /wiki/Northern_Ireland\n", + "Getting /wiki/Partition_of_Ireland\n", + "Getting /wiki/Irish_War_of_Independence\n", + "Getting /wiki/Border_Campaign_(IRA)\n", + "Getting /wiki/The_Troubles\n", + "Getting /wiki/Ulster_Protestant\n", + "Getting /wiki/Reprisal\n", + "Getting /wiki/The_Troubles_in_Northern_Ireland_(1920-1922)\n", + "Getting /wiki/Timeline_of_the_Irish_War_of_Independence\n", + "Getting /wiki/Subversion\n", + "Getting /wiki/Hunt_Report\n", + "Getting /wiki/Ulster_Defence_Regiment\n", + "Getting /wiki/Royal_Ulster_Constabulary\n", + "Getting /wiki/Partition_of_Ireland\n", + "Getting /wiki/Irish_War_of_Independence\n", + "Getting /wiki/Irish_Republican_Army\n", + "Getting /wiki/Irish_unionism\n", + "Getting /wiki/Northern_Ireland\n", + "Getting /wiki/Ulster\n", + "Getting /wiki/Government_of_Ireland_Act_1920\n", + "Getting /wiki/James_Craig,_1st_Viscount_Craigavon\n", + "Getting /wiki/Prime_Minister_of_Northern_Ireland\n", + "Getting /wiki/Royal_Irish_Constabulary\n", + "Getting /wiki/Derry\n", + "Getting /wiki/Belfast\n", + "Getting /wiki/The_Troubles_in_Northern_Ireland_(1920%E2%80%931922)\n", + "Getting /wiki/Timeline_of_the_Irish_War_of_Independence\n", + "Getting /wiki/Ulster_Volunteers\n", + "Getting /wiki/Wilfrid_Spender\n", + "Getting /wiki/British_Prime_Minister\n", + "Getting /wiki/David_Lloyd_George\n", + "Getting /wiki/Dublin_Castle\n", + "Getting /wiki/Ulster_Unionist_Labour_Association\n", + "Getting /wiki/Basil_Brooke,_1st_Viscount_Brookeborough\n", + "Getting /wiki/Prime_Minister_of_Northern_Ireland\n", + "Getting /wiki/Vigilante\n", + "Getting /wiki/Ballymacarrett\n", + "Getting /wiki/Wilfrid_Spender\n", + "Getting /wiki/Charles_George_Wickham\n", + "Getting /wiki/Nationalist_Party_(Ireland)\n", + "Getting /wiki/Ancient_Order_of_Hibernians\n", + "Getting /wiki/Ulster_Volunteers\n", + "Getting /wiki/Platoon\n", + "Getting /wiki/Head_Constable\n", + "Getting /wiki/Sergeant\n", + "Getting /wiki/Nationalist_Party_(Northern_Ireland)\n", + "Getting /wiki/Joseph_Devlin\n", + "Getting /wiki/Nevil_Macready\n", + "Getting /wiki/General_Officer_Commanding\n", + "Getting /wiki/David_Lloyd_George\n", + "Getting /wiki/Sir_Henry_Wilson,_1st_Baronet\n", + "Getting /wiki/John_Anderson,_1st_Viscount_Waverley\n", + "Getting /wiki/Under_Secretary_for_Ireland\n", + "Getting /wiki/Fermanagh_Herald\n", + "Getting /wiki/Vice_Admiral\n", + "Getting /wiki/Arthur_Hezlet\n", + "Getting /wiki/Black_and_Tans\n", + "Getting /wiki/Ulster_Museum\n", + "Getting /wiki/Free_Derry\n", + "Getting /wiki/.455_Webley\n", + "Getting /wiki/Sten_gun\n", + "Getting /wiki/Sterling_SMG\n", + "Getting /wiki/Webley_Revolver\n", + "Getting /wiki/Lee%E2%80%93Enfield_rifle\n", + "Getting /wiki/Bayonets\n", + "Getting /wiki/Sten_submachine_gun\n", + "Getting /wiki/Sterling_submachine_gun\n", + "Getting /wiki/Platoon\n", + "Getting /wiki/Ford_Motor_Company\n", + "Getting /wiki/Crossley_tender\n", + "Getting /wiki/Roslea\n", + "Getting /wiki/Newry\n", + "Getting /wiki/Michael_Collins_(Irish_leader)\n", + "Getting /wiki/Irish_border\n", + "Getting /wiki/Anglo-Irish_Treaty\n", + "Getting /wiki/Irish_Free_State\n", + "Getting /wiki/Northern_Ireland\n", + "Getting /wiki/Michael_Collins_(Irish_leader)\n", + "Getting /wiki/Liam_Lynch_(Irish_republican)\n", + "Getting /wiki/Belleek,_County_Fermanagh\n", + "Getting /wiki/Pettigo\n", + "Getting /wiki/Clones,_County_Monaghan\n", + "Getting /wiki/McMahon_Murders\n", + "Getting /wiki/Arnon_Street_killings\n", + "Getting /wiki/Irish_Civil_War\n", + "Getting /wiki/Royal_Ulster_Constabulary\n", + "Getting /wiki/12_July\n", + "Getting /wiki/Second_World_War\n", + "Getting /wiki/Home_Guard_(United_Kingdom)\n", + "Getting /wiki/Border_Campaign_(Irish_Republican_Army)\n", + "Getting /wiki/Tim_Pat_Coogan\n", + "Getting /wiki/1969_Northern_Ireland_riots\n", + "Getting /wiki/Northern_Ireland_Civil_Rights_Association\n", + "Getting /wiki/Derry\n", + "Getting /wiki/Battle_of_the_Bogside\n", + "Getting /wiki/British_Army\n", + "Getting /wiki/Chief_of_Staff_of_the_Irish_Republican_Army\n", + "Getting /wiki/Cathal_Goulding\n", + "Getting /wiki/Bogside\n", + "Getting /wiki/Comber\n", + "Getting /wiki/Dungiven\n", + "Getting /wiki/Coalisland\n", + "Getting /wiki/Dungannon\n", + "Getting /wiki/Jack_Lynch\n", + "Getting /wiki/Taoiseach\n", + "Getting /wiki/Republic_of_Ireland\n", + "Getting /wiki/Irish_Army\n", + "Getting /wiki/Harold_Wilson\n", + "Getting /wiki/Ronald_Bunting\n", + "Getting /wiki/Ulster_Protestant_Volunteers\n", + "Getting /wiki/Leslie_Scarman,_Baron_Scarman\n", + "Getting /wiki/Hunt_Report\n", + "Getting /wiki/Ulster_Defence_Regiment\n", + "Getting /wiki/Ulster_Defence_Regiment\n", + "Getting /wiki/Orange_lodge\n", + "Getting /wiki/Ulster_Special_Constabulary_Association\n", + "Getting /wiki/Ken_Maginnis\n", + "Getting /wiki/Auxiliary_constable\n", + "Getting /wiki/Auxiliary_police\n", + "Getting /wiki/Alexander_Robinson\n", + "Getting /wiki/Special_constable\n", + "Getting /wiki/Special_constabulary\n", + "Getting /wiki/Special_police\n", + "Getting /wiki/Wayback_Machine\n", + "Getting /wiki/Fermanagh_Herald\n", + "Getting /wiki/The_Daily_Telegraph\n", + "Getting /wiki/Wayback_Machine\n", + "Getting /wiki/New_York_Times\n", + "Getting /wiki/Sunday_Independent_(Ireland)\n", + "Getting /wiki/ISBN_(identifier)\n", + "Getting /wiki/ISBN_(identifier)\n", + "Getting /wiki/ISBN_(identifier)\n", + "Getting /wiki/ISBN_(identifier)\n", + "Getting /wiki/ISBN_(identifier)\n", + "Getting /wiki/Tim_Pat_Coogan\n", + "Getting /wiki/HarperCollins\n", + "Getting /wiki/ISBN_(identifier)\n", + "Getting /wiki/ISBN_(identifier)\n", + "Getting /wiki/Pen_%26_Sword_Books\n", + "Getting /wiki/ISBN_(identifier)\n", + "Getting /wiki/ISBN_(identifier)\n", + "Getting /wiki/ISBN_(identifier)\n", + "Getting /wiki/ISBN_(identifier)\n", + "Getting /wiki/ISBN_(identifier)\n", + "Getting /wiki/ISBN_(identifier)\n", + "Getting /wiki/ISBN_(identifier)\n", + "Getting /wiki/ISBN_(identifier)\n", + "Getting /wiki/Arthur_Hezlet\n", + "Getting /wiki/ISBN_(identifier)\n", + "Getting /wiki/ISBN_(identifier)\n", + "Getting /wiki/ISBN_(identifier)\n", + "Getting /wiki/ISBN_(identifier)\n", + "Getting /wiki/Nevil_Macready\n", + "Getting /wiki/ISBN_(identifier)\n", + "Getting /wiki/ISBN_(identifier)\n", + "Getting /wiki/ISBN_(identifier)\n", + "Getting /wiki/Pen_%26_Sword_Books\n", + "Getting /wiki/ISBN_(identifier)\n", + "Getting /wiki/ISBN_(identifier)\n", + "Getting /wiki/ISBN_(identifier)\n", + "Getting /wiki/Royal_Ulster_Constabulary\n", + "Getting /wiki/Police_Service_of_Northern_Ireland\n", + "Getting /wiki/Law_enforcement_in_Ireland\n", + "Getting /wiki/Law_enforcement_in_the_Republic_of_Ireland\n", + "Getting /wiki/Garda_S%C3%ADoch%C3%A1na\n", + "Getting /wiki/Garda_S%C3%ADoch%C3%A1na_Reserve\n", + "Getting /wiki/Military_Police_Corps_(Ireland)\n", + "Getting /wiki/Airport_Police_(Ireland)\n", + "Getting /wiki/Dublin_Harbour_Police\n", + "Getting /wiki/D%C3%BAn_Laoghaire_Harbour_Police\n", + "Getting /wiki/Revenue_Commissioners\n", + "Getting /wiki/Criminal_Assets_Bureau\n", + "Getting /wiki/Office_of_the_Director_of_Corporate_Enforcement\n", + "Getting /wiki/Director_of_Public_Prosecutions_(Ireland)\n", + "Getting /wiki/Law_enforcement_in_Northern_Ireland\n", + "Getting /wiki/Belfast_Harbour_Police\n", + "Getting /wiki/Belfast_International_Airport_Constabulary\n", + "Getting /wiki/Larne_Harbour_Police\n", + "Getting /wiki/Ministry_of_Defence_Police\n", + "Getting /wiki/Northern_Ireland_Security_Guard_Service\n", + "Getting /wiki/Police_Service_of_Northern_Ireland\n", + "Getting /wiki/Royal_Military_Police\n", + "Getting /wiki/Belfast_Borough_Police\n", + "Getting /wiki/Dublin_Metropolitan_Police\n", + "Getting /wiki/Londonderry_Borough_Police\n", + "Getting /wiki/Irish_Republican_Police\n", + "Getting /wiki/Royal_Irish_Constabulary\n", + "Getting /wiki/Royal_Ulster_Constabulary\n", + "Getting /wiki/Criminal_Investigation_Department_(Ireland)\n", + "Getting /wiki/United_States_Constabulary\n", + "Already fetched /wiki/Main_Page\n", + "Already fetched /wiki/Main_Page\n", + "Already fetched /wiki/United_States_Constabulary\n", + "Already fetched /wiki/United_States_Constabulary\n", + "Already fetched /wiki/United_States_Constabulary\n", + "Getting /wiki/United_States\n", + "Getting /wiki/Regular_Army_(United_States)\n", + "Getting /wiki/United_States_Army\n", + "Getting /wiki/Constabulary\n", + "Getting /wiki/Division_(military)\n", + "Getting /wiki/Ernest_N._Harmon\n", + "Getting /wiki/Withers_A._Burress\n", + "Getting /wiki/Louis_A._Craig\n", + "Getting /wiki/Isaac_D._White\n", + "Getting /wiki/Thomas_Leonard_Harrold\n", + "Getting /wiki/United_States_Army\n", + "Getting /wiki/Gendarmerie\n", + "Getting /wiki/World_War_II\n", + "Getting /wiki/Allied_Occupation_Zones_in_Germany\n", + "Getting /wiki/West_Germany\n", + "Getting /wiki/Austria\n", + "Getting /wiki/Police\n", + "Getting /wiki/Military_occupation\n", + "Getting /wiki/Germany\n", + "Getting /wiki/United_States_Army\n", + "Getting /wiki/Military_espionage\n", + "Getting /wiki/SHAEF\n", + "Getting /wiki/United_States_Department_of_War\n", + "Getting /wiki/Military_police\n", + "Getting /wiki/State_police\n", + "Getting /wiki/Constabulary\n", + "Getting /wiki/Dwight_David_Eisenhower\n", + "Getting /wiki/State_Police\n", + "Getting /wiki/Ernest_N._Harmon\n", + "Getting /wiki/1st_Armored_Division_(United_States)\n", + "Getting /wiki/2nd_Armored_Division_(United_States)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Getting /wiki/XXII_Corps_(United_States)\n", + "Getting /wiki/Lucian_K._Truscott\n", + "Getting /wiki/Third_United_States_Army\n", + "Getting /wiki/Bad_T%C3%B6lz\n", + "Getting /wiki/Jeep\n", + "Getting /wiki/Armored_car_(military)\n", + "Getting /wiki/Tank\n", + "Getting /wiki/Motorcycle\n", + "Getting /wiki/Autobahn\n", + "Getting /wiki/Shoulder_patch\n", + "Getting /wiki/US_Cavalry\n", + "Getting /wiki/Spit_shine\n", + "Getting /wiki/VI_Corps_(United_States)#Inactivation\n", + "Getting /wiki/1st_Armored_Division_(United_States)\n", + "Getting /wiki/Fort_Knox\n", + "Getting /wiki/Kentucky\n", + "Getting /wiki/4th_Armored_Division_(United_States)\n", + "Getting /wiki/Paper_organization\n", + "Getting /wiki/Bamberg\n", + "Getting /wiki/Sonthofen\n", + "Getting /wiki/Nazism\n", + "Getting /wiki/Criminal_investigation\n", + "Getting /wiki/Self-defense\n", + "Getting /wiki/Rhode_Island_State_Police\n", + "Getting /wiki/Munich\n", + "Getting /wiki/Stuttgart\n", + "Getting /wiki/Fritzlar\n", + "Getting /wiki/Weiden_in_der_Oberpfalz\n", + "Getting /wiki/Hof,_Bavaria\n", + "Getting /wiki/Passau\n", + "Getting /wiki/B%C3%BCrgermeister\n", + "Getting /wiki/Kaserne\n", + "Getting /wiki/United_Nations_Relief_and_Rehabilitation_Administration\n", + "Getting /wiki/Black_market\n", + "Getting /wiki/State_Police\n", + "Getting /wiki/Highway_Patrol\n", + "Getting /wiki/Willys_MB\n", + "Getting /wiki/M8_Greyhound\n", + "Getting /wiki/Armored_car_(military)\n", + "Getting /wiki/M24_Chaffee\n", + "Getting /wiki/Light_tank\n", + "Getting /wiki/M1_Garand\n", + "Getting /wiki/M1_carbine\n", + "Getting /wiki/Thompson_submachine_gun\n", + "Getting /wiki/M3_submachine_gun\n", + "Getting /wiki/M1911_pistol\n", + "Getting /wiki/Bamberg\n", + "Getting /wiki/Stuttgart\n", + "Getting /wiki/Austria\n", + "Getting /wiki/West_Berlin\n", + "Getting /wiki/State_police\n", + "Getting /wiki/Patch_Barracks\n", + "Getting /wiki/Military_police\n", + "Getting /wiki/Constabulary\n", + "Getting /wiki/Philippine_Constabulary\n", + "Getting /wiki/Gendarmerie\n", + "Getting /wiki/4th_Armored_Division_(United_States)\n", + "Getting /wiki/United_States_Army_Center_of_Military_History\n", + "Getting /wiki/UEFA_Super_Cup\n", + "Already fetched /wiki/Main_Page\n", + "Already fetched /wiki/Main_Page\n", + "Already fetched /wiki/UEFA_Super_Cup\n", + "Already fetched /wiki/UEFA_Super_Cup\n", + "Already fetched /wiki/UEFA_Super_Cup\n", + "Getting /wiki/European_Super_Cup_(disambiguation)\n", + "Getting /wiki/UEFA\n", + "Getting /wiki/Royal_Spanish_Football_Federation\n", + "Getting /wiki/Real_Madrid_CF\n", + "Getting /wiki/Royal_Spanish_Football_Federation\n", + "Getting /wiki/FC_Barcelona\n", + "Getting /wiki/Italian_Football_Federation\n", + "Getting /wiki/A.C._Milan\n", + "Getting /wiki/Royal_Spanish_Football_Federation\n", + "Getting /wiki/Real_Madrid_CF\n", + "Getting /wiki/2023_UEFA_Super_Cup\n", + "Getting /wiki/Super_cup\n", + "Getting /wiki/Association_football\n", + "Getting /wiki/UEFA\n", + "Getting /wiki/UEFA_Champions_League\n", + "Getting /wiki/UEFA_Europa_League\n", + "Getting /wiki/1995_UEFA_Super_Cup\n", + "Getting /wiki/UEFA_Cup_Winners%27_Cup\n", + "Getting /wiki/Real_Madrid_CF\n", + "Getting /wiki/Eintracht_Frankfurt\n", + "Getting /wiki/2022_UEFA_Super_Cup\n", + "Getting /wiki/FC_Barcelona\n", + "Getting /wiki/A.C._Milan\n", + "Getting /wiki/1973_European_Super_Cup\n", + "Getting /wiki/Royal_Dutch_Football_Association\n", + "Getting /wiki/AFC_Ajax\n", + "Getting /wiki/1975_European_Super_Cup\n", + "Getting /wiki/Football_Federation_of_the_Soviet_Union\n", + "Getting /wiki/Dynamo_Kyiv\n", + "Getting /wiki/1976_European_Super_Cup\n", + "Getting /wiki/Royal_Belgian_Football_Association\n", + "Getting /wiki/RSC_Anderlecht\n", + "Getting /wiki/1977_European_Super_Cup\n", + "Getting /wiki/The_Football_Association\n", + "Getting /wiki/Liverpool_F.C.\n", + "Getting /wiki/1978_European_Super_Cup\n", + "Getting /wiki/Royal_Belgian_Football_Association\n", + "Getting /wiki/RSC_Anderlecht\n", + "Getting /wiki/1979_European_Super_Cup\n", + "Getting /wiki/The_Football_Association\n", + "Getting /wiki/Nottingham_Forest\n", + "Getting /wiki/1980_European_Super_Cup\n", + "Getting /wiki/Royal_Spanish_Football_Federation\n", + "Getting /wiki/Valencia_CF\n", + "Getting /wiki/1982_European_Super_Cup\n", + "Getting /wiki/The_Football_Association\n", + "Getting /wiki/Aston_Villa\n", + "Getting /wiki/1983_European_Super_Cup\n", + "Getting /wiki/Scottish_Football_Association\n", + "Getting /wiki/Aberdeen_F.C.\n", + "Getting /wiki/1984_European_Super_Cup\n", + "Getting /wiki/Italian_Football_Federation\n", + "Getting /wiki/Juventus_F.C.\n", + "Getting /wiki/1986_European_Super_Cup\n", + "Getting /wiki/Romanian_Football_Federation\n", + "Getting /wiki/CSA_Steaua_Bucure%C8%99ti_(football)\n", + "Getting /wiki/1987_European_Super_Cup\n", + "Getting /wiki/Portuguese_Football_Federation\n", + "Getting /wiki/FC_Porto\n", + "Getting /wiki/1988_European_Super_Cup\n", + "Getting /wiki/Royal_Belgian_Football_Association\n", + "Getting /wiki/KV_Mechelen\n", + "Getting /wiki/1989_European_Super_Cup\n", + "Getting /wiki/Italian_Football_Federation\n", + "Getting /wiki/AC_Milan\n", + "Getting /wiki/1990_European_Super_Cup\n", + "Getting /wiki/Italian_Football_Federation\n", + "Getting /wiki/AC_Milan\n", + "Getting /wiki/1991_European_Super_Cup\n", + "Getting /wiki/The_Football_Association\n", + "Getting /wiki/Manchester_United_F.C.\n", + "Getting /wiki/1992_European_Super_Cup\n", + "Getting /wiki/Royal_Spanish_Football_Federation\n", + "Getting /wiki/FC_Barcelona\n", + "Getting /wiki/1993_European_Super_Cup\n", + "Getting /wiki/Italian_Football_Federation\n", + "Getting /wiki/AC_Parma\n", + "Getting /wiki/1994_European_Super_Cup\n", + "Getting /wiki/Italian_Football_Federation\n", + "Getting /wiki/AC_Milan\n", + "Getting /wiki/1995_UEFA_Super_Cup\n", + "Getting /wiki/Royal_Dutch_Football_Association\n", + "Getting /wiki/AFC_Ajax\n", + "Getting /wiki/1996_UEFA_Super_Cup\n", + "Getting /wiki/Italian_Football_Federation\n", + "Getting /wiki/Juventus_F.C.\n", + "Getting /wiki/1997_UEFA_Super_Cup\n", + "Getting /wiki/Royal_Spanish_Football_Federation\n", + "Getting /wiki/FC_Barcelona\n", + "Getting /wiki/1998_UEFA_Super_Cup\n", + "Getting /wiki/The_Football_Association\n", + "Getting /wiki/Chelsea_F.C.\n", + "Getting /wiki/1999_UEFA_Super_Cup\n", + "Getting /wiki/Italian_Football_Federation\n", + "Getting /wiki/S.S._Lazio\n", + "Getting /wiki/2000_UEFA_Super_Cup\n", + "Getting /wiki/Turkish_Football_Federation\n", + "Getting /wiki/Galatasaray_S.K._(football)\n", + "Getting /wiki/2001_UEFA_Super_Cup\n", + "Getting /wiki/The_Football_Association\n", + "Getting /wiki/Liverpool_F.C.\n", + "Getting /wiki/2002_UEFA_Super_Cup\n", + "Getting /wiki/Royal_Spanish_Football_Federation\n", + "Getting /wiki/Real_Madrid_CF\n", + "Getting /wiki/2003_UEFA_Super_Cup\n", + "Getting /wiki/Italian_Football_Federation\n", + "Getting /wiki/AC_Milan\n", + "Getting /wiki/2004_UEFA_Super_Cup\n", + "Getting /wiki/Royal_Spanish_Football_Federation\n", + "Getting /wiki/Valencia_CF\n", + "Getting /wiki/2005_UEFA_Super_Cup\n", + "Getting /wiki/The_Football_Association\n", + "Getting /wiki/Liverpool_F.C.\n", + "Getting /wiki/2006_UEFA_Super_Cup\n", + "Getting /wiki/Royal_Spanish_Football_Federation\n", + "Getting /wiki/Sevilla_FC\n", + "Getting /wiki/2007_UEFA_Super_Cup\n", + "Getting /wiki/Italian_Football_Federation\n", + "Getting /wiki/AC_Milan\n", + "Getting /wiki/2008_UEFA_Super_Cup\n", + "Getting /wiki/Russian_Football_Union\n", + "Getting /wiki/Zenit_Saint_Petersburg\n", + "Getting /wiki/2009_UEFA_Super_Cup\n", + "Getting /wiki/Royal_Spanish_Football_Federation\n", + "Getting /wiki/FC_Barcelona\n", + "Getting /wiki/2010_UEFA_Super_Cup\n", + "Getting /wiki/Royal_Spanish_Football_Federation\n", + "Getting /wiki/Atl%C3%A9tico_Madrid\n", + "Getting /wiki/2011_UEFA_Super_Cup\n", + "Getting /wiki/Royal_Spanish_Football_Federation\n", + "Getting /wiki/FC_Barcelona\n", + "Getting /wiki/2012_UEFA_Super_Cup\n", + "Getting /wiki/Royal_Spanish_Football_Federation\n", + "Getting /wiki/Atl%C3%A9tico_Madrid\n", + "Getting /wiki/2013_UEFA_Super_Cup\n", + "Getting /wiki/German_Football_Association\n", + "Getting /wiki/Bayern_Munich\n", + "Getting /wiki/2014_UEFA_Super_Cup\n", + "Getting /wiki/Royal_Spanish_Football_Federation\n", + "Getting /wiki/Real_Madrid_CF\n", + "Getting /wiki/2015_UEFA_Super_Cup\n", + "Getting /wiki/Royal_Spanish_Football_Federation\n", + "Getting /wiki/FC_Barcelona\n", + "Getting /wiki/2016_UEFA_Super_Cup\n", + "Getting /wiki/Royal_Spanish_Football_Federation\n", + "Getting /wiki/Real_Madrid_CF\n", + "Getting /wiki/2017_UEFA_Super_Cup\n", + "Getting /wiki/Royal_Spanish_Football_Federation\n", + "Getting /wiki/Real_Madrid_CF\n", + "Getting /wiki/2018_UEFA_Super_Cup\n", + "Getting /wiki/Royal_Spanish_Football_Federation\n", + "Getting /wiki/Atl%C3%A9tico_Madrid\n", + "Getting /wiki/2019_UEFA_Super_Cup\n", + "Getting /wiki/The_Football_Association\n", + "Getting /wiki/Liverpool_F.C.\n", + "Getting /wiki/2020_UEFA_Super_Cup\n", + "Getting /wiki/German_Football_Association\n", + "Getting /wiki/Bayern_Munich\n", + "Getting /wiki/2021_UEFA_Super_Cup\n", + "Getting /wiki/The_Football_Association\n", + "Getting /wiki/Chelsea_F.C.\n", + "Getting /wiki/2022_UEFA_Super_Cup\n", + "Getting /wiki/Royal_Spanish_Football_Federation\n", + "Getting /wiki/Real_Madrid_CF\n", + "Getting /wiki/2023_UEFA_Super_Cup\n", + "Getting /wiki/AFC_Ajax\n", + "Getting /wiki/De_Telegraaf\n", + "Getting /wiki/Total_Football\n", + "Getting /wiki/AFC_Ajax\n", + "Getting /wiki/Johan_Cruyff\n", + "Getting /wiki/UEFA_Champions_League\n", + "Getting /wiki/UEFA_Cup_Winners%27_Cup\n", + "Getting /wiki/UEFA\n", + "Getting /wiki/1972_European_Super_Cup\n", + "Getting /wiki/Rangers_F.C.\n", + "Getting /wiki/1972_UEFA_Cup_Winners%27_Cup_Final\n", + "Getting /wiki/1973_European_Super_Cup\n", + "Getting /wiki/A.C._Milan\n", + "Getting /wiki/1997_UEFA_Super_Cup\n", + "Getting /wiki/1984_European_Super_Cup\n", + "Getting /wiki/1986_European_Super_Cup\n", + "Getting /wiki/1991_European_Super_Cup\n", + "Getting /wiki/FC_Bayern_Munich\n", + "Getting /wiki/1._FC_Magdeburg\n", + "Getting /wiki/Liverpool_F.C.\n", + "Getting /wiki/FC_Dinamo_Tbilisi\n", + "Getting /wiki/Heysel_Stadium_disaster#Ban\n", + "Getting /wiki/Everton_F.C.\n", + "Getting /wiki/Juventus_F.C.\n", + "Getting /wiki/1999_UEFA_Super_Cup\n", + "Getting /wiki/S.S._Lazio\n", + "Getting /wiki/1998%E2%80%9399_UEFA_Cup_Winners%27_Cup\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Getting /wiki/Manchester_United_F.C.\n", + "Getting /wiki/1998%E2%80%9399_UEFA_Champions_League\n", + "Getting /wiki/Andr%C3%A9s_Iniesta\n", + "Getting /wiki/2015_UEFA_Super_Cup\n", + "Getting /wiki/UEFA_Europa_League\n", + "Getting /wiki/2000_UEFA_Super_Cup\n", + "Getting /wiki/Galatasaray_S.K._(football)\n", + "Getting /wiki/1999%E2%80%932000_UEFA_Cup\n", + "Getting /wiki/Real_Madrid_CF\n", + "Getting /wiki/1999%E2%80%932000_UEFA_Champions_League\n", + "Getting /wiki/Chelsea_F.C.\n", + "Getting /wiki/1998_UEFA_Super_Cup\n", + "Getting /wiki/2012_UEFA_Super_Cup\n", + "Getting /wiki/2013_UEFA_Super_Cup\n", + "Getting /wiki/2017_UEFA_Super_Cup\n", + "Getting /wiki/2017_UEFA_Europa_League_Final\n", + "Getting /wiki/Stade_Louis_II\n", + "Getting /wiki/Monaco\n", + "Getting /wiki/1998_UEFA_Super_Cup\n", + "Getting /wiki/2012_UEFA_Super_Cup\n", + "Getting /wiki/2013_UEFA_Super_Cup\n", + "Getting /wiki/Synot_Tip_Arena\n", + "Getting /wiki/Prague\n", + "Getting /wiki/Czech_Republic\n", + "Getting /wiki/Est%C3%A1dio_do_Drag%C3%A3o\n", + "Getting /wiki/Porto\n", + "Getting /wiki/COVID-19_pandemic_in_Europe\n", + "Getting /wiki/2020_UEFA_Champions_League_Final\n", + "Getting /wiki/Pusk%C3%A1s_Ar%C3%A9na\n", + "Getting /wiki/Budapest\n", + "Getting /wiki/Two-legged_tie\n", + "Getting /wiki/1991_European_Super_Cup\n", + "Getting /wiki/Red_Star_Belgrade\n", + "Getting /wiki/SFR_Yugoslavia\n", + "Getting /wiki/Yugoslav_Wars\n", + "Getting /wiki/Manchester_United_F.C.\n", + "Getting /wiki/Stade_Louis_II\n", + "Getting /wiki/Monaco\n", + "Getting /wiki/1998_UEFA_Super_Cup\n", + "Getting /wiki/2012_UEFA_Super_Cup\n", + "Getting /wiki/Stade_Louis_II\n", + "Getting /wiki/2013_UEFA_Super_Cup\n", + "Getting /wiki/Fortuna_Arena\n", + "Getting /wiki/Prague\n", + "Getting /wiki/2014_UEFA_Super_Cup\n", + "Getting /wiki/Cardiff_City_Stadium\n", + "Getting /wiki/Cardiff\n", + "Getting /wiki/2015_UEFA_Super_Cup\n", + "Getting /wiki/Boris_Paichadze_Dinamo_Arena\n", + "Getting /wiki/Tbilisi\n", + "Getting /wiki/2016_UEFA_Super_Cup\n", + "Getting /wiki/Lerkendal_Stadion\n", + "Getting /wiki/Trondheim\n", + "Getting /wiki/2017_UEFA_Super_Cup\n", + "Getting /wiki/To%C5%A1e_Proeski_Arena\n", + "Getting /wiki/Skopje\n", + "Getting /wiki/2018_UEFA_Super_Cup\n", + "Getting /wiki/Lillek%C3%BCla_Stadium\n", + "Getting /wiki/Tallinn\n", + "Getting /wiki/2019_UEFA_Super_Cup\n", + "Getting /wiki/Vodafone_Park\n", + "Getting /wiki/Istanbul\n", + "Getting /wiki/2020_UEFA_Super_Cup\n", + "Getting /wiki/Pusk%C3%A1s_Ar%C3%A9na\n", + "Getting /wiki/Budapest\n", + "Getting /wiki/2021_UEFA_Super_Cup\n", + "Getting /wiki/Windsor_Park\n", + "Getting /wiki/Belfast\n", + "Getting /wiki/2022_UEFA_Super_Cup\n", + "Getting /wiki/Helsinki_Olympic_Stadium\n", + "Getting /wiki/Helsinki\n", + "Getting /wiki/2023_UEFA_Super_Cup\n", + "Getting /wiki/Karaiskakis_Stadium\n", + "Getting /wiki/Piraeus\n", + "Getting /wiki/UEFA_Champions_League\n", + "Getting /wiki/European_Champion_Clubs%27_Cup\n", + "Getting /wiki/UEFA_Europa_League\n", + "Getting /wiki/A.C._Milan\n", + "Getting /wiki/FC_Barcelona\n", + "Getting /wiki/Real_Madrid_CF\n", + "Getting /wiki/Extra_time_(football)\n", + "Getting /wiki/Penalty_shootout_(association_football)\n", + "Getting /wiki/Kit_(association_football)\n", + "Getting /wiki/Europa_League\n", + "Getting /wiki/2022_UEFA_Super_Cup\n", + "Getting /wiki/FedEx\n", + "Getting /wiki/Turkish_Airlines\n", + "Getting /wiki/Oppo\n", + "Getting /wiki/Heineken_N.V.\n", + "Getting /wiki/Just_Eat_Takeaway\n", + "Getting /wiki/Mastercard\n", + "Getting /wiki/PepsiCo\n", + "Getting /wiki/Sony\n", + "Getting /wiki/PlayStation_5\n", + "Getting /wiki/Adidas\n", + "Getting /wiki/List_of_UEFA_Super_Cup_matches\n", + "Getting /wiki/Royal_Spanish_Football_Federation\n", + "Getting /wiki/FC_Barcelona\n", + "Getting /wiki/1992_European_Super_Cup\n", + "Getting /wiki/1997_UEFA_Super_Cup\n", + "Getting /wiki/2009_UEFA_Super_Cup\n", + "Getting /wiki/2011_UEFA_Super_Cup\n", + "Getting /wiki/2015_UEFA_Super_Cup\n", + "Getting /wiki/1979_European_Super_Cup\n", + "Getting /wiki/1982_European_Super_Cup\n", + "Getting /wiki/1989_European_Super_Cup\n", + "Getting /wiki/2006_UEFA_Super_Cup\n", + "Getting /wiki/Royal_Spanish_Football_Federation\n", + "Getting /wiki/Real_Madrid_CF\n", + "Getting /wiki/2002_UEFA_Super_Cup\n", + "Getting /wiki/2014_UEFA_Super_Cup\n", + "Getting /wiki/2016_UEFA_Super_Cup\n", + "Getting /wiki/2017_UEFA_Super_Cup\n", + "Getting /wiki/2022_UEFA_Super_Cup\n", + "Getting /wiki/1998_UEFA_Super_Cup\n", + "Getting /wiki/2000_UEFA_Super_Cup\n", + "Getting /wiki/2018_UEFA_Super_Cup\n", + "Getting /wiki/Italian_Football_Federation\n", + "Getting /wiki/A.C._Milan\n", + "Getting /wiki/1989_European_Super_Cup\n", + "Getting /wiki/1990_European_Super_Cup\n", + "Getting /wiki/1994_European_Super_Cup\n", + "Getting /wiki/2003_UEFA_Super_Cup\n", + "Getting /wiki/2007_UEFA_Super_Cup\n", + "Getting /wiki/1973_European_Super_Cup\n", + "Getting /wiki/1993_European_Super_Cup\n", + "Getting /wiki/The_Football_Association\n", + "Getting /wiki/Liverpool_F.C.\n", + "Getting /wiki/1977_European_Super_Cup\n", + "Getting /wiki/2001_UEFA_Super_Cup\n", + "Getting /wiki/2005_UEFA_Super_Cup\n", + "Getting /wiki/2019_UEFA_Super_Cup\n", + "Getting /wiki/1978_European_Super_Cup\n", + "Getting /wiki/1984_European_Super_Cup\n", + "Getting /wiki/Royal_Spanish_Football_Federation\n", + "Getting /wiki/Atl%C3%A9tico_Madrid\n", + "Getting /wiki/2010_UEFA_Super_Cup\n", + "Getting /wiki/2012_UEFA_Super_Cup\n", + "Getting /wiki/2018_UEFA_Super_Cup\n", + "Getting /wiki/The_Football_Association\n", + "Getting /wiki/Chelsea_F.C.\n", + "Getting /wiki/1998_UEFA_Super_Cup\n", + "Getting /wiki/2021_UEFA_Super_Cup\n", + "Getting /wiki/2012_UEFA_Super_Cup\n", + "Getting /wiki/2013_UEFA_Super_Cup\n", + "Getting /wiki/2019_UEFA_Super_Cup\n", + "Getting /wiki/German_Football_Association\n", + "Getting /wiki/FC_Bayern_Munich\n", + "Getting /wiki/2013_UEFA_Super_Cup\n", + "Getting /wiki/2020_UEFA_Super_Cup\n", + "Getting /wiki/1975_European_Super_Cup\n", + "Getting /wiki/1976_European_Super_Cup\n", + "Getting /wiki/2001_UEFA_Super_Cup\n", + "Getting /wiki/Royal_Dutch_Football_Association\n", + "Getting /wiki/AFC_Ajax\n", + "Getting /wiki/1973_European_Super_Cup\n", + "Getting /wiki/1995_UEFA_Super_Cup\n", + "Getting /wiki/1987_European_Super_Cup\n", + "Getting /wiki/Royal_Belgian_Football_Association\n", + "Getting /wiki/R.S.C._Anderlecht\n", + "Getting /wiki/1976_European_Super_Cup\n", + "Getting /wiki/1978_European_Super_Cup\n", + "Getting /wiki/Royal_Spanish_Football_Federation\n", + "Getting /wiki/Valencia_CF\n", + "Getting /wiki/1980_European_Super_Cup\n", + "Getting /wiki/2004_UEFA_Super_Cup\n", + "Getting /wiki/Italian_Football_Federation\n", + "Getting /wiki/Juventus_F.C.\n", + "Getting /wiki/1984_European_Super_Cup\n", + "Getting /wiki/1996_UEFA_Super_Cup\n", + "Getting /wiki/Royal_Spanish_Football_Federation\n", + "Getting /wiki/Sevilla_FC\n", + "Getting /wiki/2006_UEFA_Super_Cup\n", + "Getting /wiki/2007_UEFA_Super_Cup\n", + "Getting /wiki/2014_UEFA_Super_Cup\n", + "Getting /wiki/2015_UEFA_Super_Cup\n", + "Getting /wiki/2016_UEFA_Super_Cup\n", + "Getting /wiki/2020_UEFA_Super_Cup\n", + "Getting /wiki/Portuguese_Football_Federation\n", + "Getting /wiki/FC_Porto\n", + "Getting /wiki/1987_European_Super_Cup\n", + "Getting /wiki/2003_UEFA_Super_Cup\n", + "Getting /wiki/2004_UEFA_Super_Cup\n", + "Getting /wiki/2011_UEFA_Super_Cup\n", + "Getting /wiki/The_Football_Association\n", + "Getting /wiki/Manchester_United_F.C.\n", + "Getting /wiki/1991_European_Super_Cup\n", + "Getting /wiki/1999_UEFA_Super_Cup\n", + "Getting /wiki/2008_UEFA_Super_Cup\n", + "Getting /wiki/2017_UEFA_Super_Cup\n", + "Getting /wiki/Football_Federation_of_the_Soviet_Union\n", + "Getting /wiki/FC_Dynamo_Kyiv\n", + "Getting /wiki/1975_European_Super_Cup\n", + "Getting /wiki/1986_European_Super_Cup\n", + "Getting /wiki/The_Football_Association\n", + "Getting /wiki/Nottingham_Forest_F.C.\n", + "Getting /wiki/1979_European_Super_Cup\n", + "Getting /wiki/1980_European_Super_Cup\n", + "Getting /wiki/The_Football_Association\n", + "Getting /wiki/Aston_Villa_F.C.\n", + "Getting /wiki/1982_European_Super_Cup\n", + "Getting /wiki/Scottish_Football_Association\n", + "Getting /wiki/Aberdeen_F.C.\n", + "Getting /wiki/1983_European_Super_Cup\n", + "Getting /wiki/Romanian_Football_Federation\n", + "Getting /wiki/FCSB\n", + "Getting /wiki/1986_European_Super_Cup\n", + "Getting /wiki/Royal_Belgian_Football_Association\n", + "Getting /wiki/KV_Mechelen\n", + "Getting /wiki/1988_European_Super_Cup\n", + "Getting /wiki/Italian_Football_Federation\n", + "Getting /wiki/Parma_Calcio_1913\n", + "Getting /wiki/1993_European_Super_Cup\n", + "Getting /wiki/Italian_Football_Federation\n", + "Getting /wiki/S.S._Lazio\n", + "Getting /wiki/1999_UEFA_Super_Cup\n", + "Getting /wiki/Turkish_Football_Federation\n", + "Getting /wiki/Galatasaray_S.K._(football)\n", + "Getting /wiki/2000_UEFA_Super_Cup\n", + "Getting /wiki/Russian_Football_Union\n", + "Getting /wiki/FC_Zenit_Saint_Petersburg\n", + "Getting /wiki/2008_UEFA_Super_Cup\n", + "Getting /wiki/German_Football_Association\n", + "Getting /wiki/Hamburger_SV\n", + "Getting /wiki/1977_European_Super_Cup\n", + "Getting /wiki/1983_European_Super_Cup\n", + "Getting /wiki/Royal_Dutch_Football_Association\n", + "Getting /wiki/PSV_Eindhoven\n", + "Getting /wiki/1988_European_Super_Cup\n", + "Getting /wiki/Italian_Football_Federation\n", + "Getting /wiki/U.C._Sampdoria\n", + "Getting /wiki/1990_European_Super_Cup\n", + "Getting /wiki/Football_Association_of_Yugoslavia\n", + "Getting /wiki/Red_Star_Belgrade\n", + "Getting /wiki/1991_European_Super_Cup\n", + "Getting /wiki/German_Football_Association\n", + "Getting /wiki/SV_Werder_Bremen\n", + "Getting /wiki/1992_European_Super_Cup\n", + "Getting /wiki/The_Football_Association\n", + "Getting /wiki/Arsenal_F.C.\n", + "Getting /wiki/1994_European_Super_Cup\n", + "Getting /wiki/Royal_Spanish_Football_Federation\n", + "Getting /wiki/Real_Zaragoza\n", + "Getting /wiki/1995_UEFA_Super_Cup\n", + "Getting /wiki/French_Football_Federation\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Getting /wiki/Paris_Saint-Germain_F.C.\n", + "Getting /wiki/1996_UEFA_Super_Cup\n", + "Getting /wiki/German_Football_Association\n", + "Getting /wiki/Borussia_Dortmund\n", + "Getting /wiki/1997_UEFA_Super_Cup\n", + "Getting /wiki/Royal_Dutch_Football_Association\n", + "Getting /wiki/Feyenoord\n", + "Getting /wiki/2002_UEFA_Super_Cup\n", + "Getting /wiki/Russian_Football_Union\n", + "Getting /wiki/PFC_CSKA_Moscow\n", + "Getting /wiki/2005_UEFA_Super_Cup\n", + "Getting /wiki/Ukrainian_Association_of_Football\n", + "Getting /wiki/FC_Shakhtar_Donetsk\n", + "Getting /wiki/2009_UEFA_Super_Cup\n", + "Getting /wiki/Italian_Football_Federation\n", + "Getting /wiki/Inter_Milan\n", + "Getting /wiki/2010_UEFA_Super_Cup\n", + "Getting /wiki/Royal_Spanish_Football_Federation\n", + "Getting /wiki/Villarreal_CF\n", + "Getting /wiki/2021_UEFA_Super_Cup\n", + "Getting /wiki/German_Football_Association\n", + "Getting /wiki/Eintracht_Frankfurt\n", + "Getting /wiki/2022_UEFA_Super_Cup\n", + "Getting /wiki/Royal_Spanish_Football_Federation\n", + "Getting /wiki/The_Football_Association\n", + "Getting /wiki/Italian_Football_Federation\n", + "Getting /wiki/Royal_Belgian_Football_Association\n", + "Getting /wiki/German_Football_Association\n", + "Getting /wiki/Royal_Dutch_Football_Association\n", + "Getting /wiki/Portuguese_Football_Federation\n", + "Getting /wiki/Russian_Football_Union\n", + "Getting /wiki/Football_Federation_of_the_Soviet_Union\n", + "Getting /wiki/Romanian_Football_Federation\n", + "Getting /wiki/Scottish_Football_Association\n", + "Getting /wiki/Turkish_Football_Federation\n", + "Getting /wiki/French_Football_Federation\n", + "Getting /wiki/Ukrainian_Association_of_Football\n", + "Getting /wiki/Football_Association_of_Yugoslavia\n", + "Getting /wiki/UEFA\n", + "Getting /wiki/West_Germany\n", + "Getting /wiki/East_Germany\n", + "Getting /wiki/Ukrainian_Soviet_Socialist_Republic\n", + "Getting /wiki/Paolo_Maldini\n", + "Getting /wiki/Dani_Alves\n", + "Getting /wiki/Dani_Carvajal\n", + "Getting /wiki/Karim_Benzema\n", + "Getting /wiki/Toni_Kroos\n", + "Getting /wiki/Luka_Modri%C4%87\n", + "Getting /wiki/Roberto_Donadoni\n", + "Getting /wiki/Alessandro_Costacurta\n", + "Getting /wiki/Carlo_Ancelotti\n", + "Getting /wiki/Alex_Ferguson\n", + "Getting /wiki/Arie_Haan\n", + "Getting /wiki/Oleg_Blokhin\n", + "Getting /wiki/David_Fairclough\n", + "Getting /wiki/Gerd_M%C3%BCller\n", + "Getting /wiki/Rob_Rensenbrink\n", + "Getting /wiki/Fran%C3%A7ois_Van_Der_Elst\n", + "Getting /wiki/Terry_McDermott\n", + "Getting /wiki/Radamel_Falcao\n", + "Getting /wiki/Lionel_Messi\n", + "Getting /wiki/Diego_Costa\n", + "Getting /wiki/Real_Madrid_C.F.\n", + "Getting /wiki/Terry_McDermott\n", + "Getting /wiki/Hamburger_SV\n", + "Getting /wiki/Radamel_Falcao\n", + "Getting /wiki/Chelsea_F.C.\n", + "Getting /wiki/List_of_association_football_competitions\n", + "Getting /wiki/List_of_UEFA_Super_Cup_winning_managers\n", + "Getting /wiki/List_of_UEFA_Super_Cup_goalscorers\n", + "Getting /wiki/UEFA_club_competition_records_and_statistics\n", + "Getting /wiki/Super_Cup\n", + "Getting /wiki/BBC_Sport\n", + "Getting /wiki/Liverpool_Echo\n", + "Getting /wiki/UEFA_Champions_League\n", + "Getting /wiki/UEFA_Cup_Winners%27_Cup\n", + "Getting /wiki/1972_European_Super_Cup\n", + "Getting /wiki/1973_European_Super_Cup\n", + "Getting /wiki/1975_European_Super_Cup\n", + "Getting /wiki/1976_European_Super_Cup\n", + "Getting /wiki/1977_European_Super_Cup\n", + "Getting /wiki/1978_European_Super_Cup\n", + "Getting /wiki/1979_European_Super_Cup\n", + "Getting /wiki/1980_European_Super_Cup\n", + "Getting /wiki/1982_European_Super_Cup\n", + "Getting /wiki/1983_European_Super_Cup\n", + "Getting /wiki/1984_European_Super_Cup\n", + "Getting /wiki/1986_European_Super_Cup\n", + "Getting /wiki/1987_European_Super_Cup\n", + "Getting /wiki/1988_European_Super_Cup\n", + "Getting /wiki/1989_European_Super_Cup\n", + "Getting /wiki/1990_European_Super_Cup\n", + "Getting /wiki/1991_European_Super_Cup\n", + "Getting /wiki/1992_European_Super_Cup\n", + "Getting /wiki/1993_European_Super_Cup\n", + "Getting /wiki/1994_European_Super_Cup\n", + "Getting /wiki/1995_UEFA_Super_Cup\n", + "Getting /wiki/1996_UEFA_Super_Cup\n", + "Getting /wiki/1997_UEFA_Super_Cup\n", + "Getting /wiki/1998_UEFA_Super_Cup\n", + "Getting /wiki/1999_UEFA_Super_Cup\n", + "Getting /wiki/UEFA_Champions_League\n", + "Getting /wiki/UEFA_Europa_League\n", + "Getting /wiki/2000_UEFA_Super_Cup\n", + "Getting /wiki/2001_UEFA_Super_Cup\n", + "Getting /wiki/2002_UEFA_Super_Cup\n", + "Getting /wiki/2003_UEFA_Super_Cup\n", + "Getting /wiki/2004_UEFA_Super_Cup\n", + "Getting /wiki/2005_UEFA_Super_Cup\n", + "Getting /wiki/2006_UEFA_Super_Cup\n", + "Getting /wiki/2007_UEFA_Super_Cup\n", + "Getting /wiki/2008_UEFA_Super_Cup\n", + "Getting /wiki/2009_UEFA_Super_Cup\n", + "Getting /wiki/2010_UEFA_Super_Cup\n", + "Getting /wiki/2011_UEFA_Super_Cup\n", + "Getting /wiki/2012_UEFA_Super_Cup\n", + "Getting /wiki/2013_UEFA_Super_Cup\n", + "Getting /wiki/2014_UEFA_Super_Cup\n", + "Getting /wiki/2015_UEFA_Super_Cup\n", + "Getting /wiki/2016_UEFA_Super_Cup\n", + "Getting /wiki/2017_UEFA_Super_Cup\n", + "Getting /wiki/2018_UEFA_Super_Cup\n", + "Getting /wiki/2019_UEFA_Super_Cup\n", + "Getting /wiki/2020_UEFA_Super_Cup\n", + "Getting /wiki/2021_UEFA_Super_Cup\n", + "Getting /wiki/2022_UEFA_Super_Cup\n", + "Getting /wiki/2023_UEFA_Super_Cup\n", + "Getting /wiki/List_of_UEFA_Super_Cup_matches\n", + "Getting /wiki/List_of_UEFA_Super_Cup_winning_managers\n", + "Getting /wiki/List_of_UEFA_Super_Cup_goalscorers\n", + "Getting /wiki/List_of_UEFA_Super_Cup_broadcasters\n", + "Getting /wiki/List_of_UEFA_Super_Cup_matches\n", + "Getting /wiki/UEFA_Champions_League\n", + "Getting /wiki/UEFA_Cup_Winners%27_Cup\n", + "Getting /wiki/1973_European_Super_Cup\n", + "Getting /wiki/Royal_Dutch_Football_Association\n", + "Getting /wiki/AFC_Ajax\n", + "Getting /wiki/1975_European_Super_Cup\n", + "Getting /wiki/Football_Federation_of_the_Soviet_Union\n", + "Getting /wiki/FC_Dynamo_Kyiv\n", + "Getting /wiki/1976_European_Super_Cup\n", + "Getting /wiki/Royal_Belgian_Football_Association\n", + "Getting /wiki/R.S.C._Anderlecht\n", + "Getting /wiki/1977_European_Super_Cup\n", + "Getting /wiki/The_Football_Association\n", + "Getting /wiki/Liverpool_F.C.\n", + "Getting /wiki/1978_European_Super_Cup\n", + "Getting /wiki/Royal_Belgian_Football_Association\n", + "Getting /wiki/R.S.C._Anderlecht\n", + "Getting /wiki/1979_European_Super_Cup\n", + "Getting /wiki/The_Football_Association\n", + "Getting /wiki/Nottingham_Forest_F.C.\n", + "Getting /wiki/1980_European_Super_Cup\n", + "Getting /wiki/Royal_Spanish_Football_Federation\n", + "Getting /wiki/Valencia_CF\n", + "Getting /wiki/1982_European_Super_Cup\n", + "Getting /wiki/The_Football_Association\n", + "Getting /wiki/Aston_Villa_F.C.\n", + "Getting /wiki/1983_European_Super_Cup\n", + "Getting /wiki/Scottish_Football_Association\n", + "Getting /wiki/Aberdeen_F.C.\n", + "Getting /wiki/1984_European_Super_Cup\n", + "Getting /wiki/Italian_Football_Federation\n", + "Getting /wiki/Juventus_F.C.\n", + "Getting /wiki/1986_European_Super_Cup\n", + "Getting /wiki/Romanian_Football_Federation\n", + "Getting /wiki/FC_Steaua_Bucure%C8%99ti\n", + "Getting /wiki/1987_European_Super_Cup\n", + "Getting /wiki/Portuguese_Football_Federation\n", + "Getting /wiki/FC_Porto\n", + "Getting /wiki/1988_European_Super_Cup\n", + "Getting /wiki/Royal_Belgian_Football_Association\n", + "Getting /wiki/K.V._Mechelen\n", + "Getting /wiki/1989_European_Super_Cup\n", + "Getting /wiki/Italian_Football_Federation\n", + "Getting /wiki/A.C._Milan\n", + "Getting /wiki/1990_European_Super_Cup\n", + "Getting /wiki/Italian_Football_Federation\n", + "Getting /wiki/A.C._Milan\n", + "Getting /wiki/1991_European_Super_Cup\n", + "Getting /wiki/The_Football_Association\n", + "Getting /wiki/Manchester_United_F.C.\n", + "Getting /wiki/1992_European_Super_Cup\n", + "Getting /wiki/Royal_Spanish_Football_Federation\n", + "Getting /wiki/FC_Barcelona\n", + "Getting /wiki/1993_European_Super_Cup\n", + "Getting /wiki/Italian_Football_Federation\n", + "Getting /wiki/Parma_Calcio_1913\n", + "Getting /wiki/1994_European_Super_Cup\n", + "Getting /wiki/Italian_Football_Federation\n", + "Getting /wiki/A.C._Milan\n", + "Getting /wiki/1995_UEFA_Super_Cup\n", + "Getting /wiki/Royal_Dutch_Football_Association\n", + "Getting /wiki/AFC_Ajax\n", + "Getting /wiki/1996_UEFA_Super_Cup\n", + "Getting /wiki/Italian_Football_Federation\n", + "Getting /wiki/Juventus_F.C.\n", + "Getting /wiki/1997_UEFA_Super_Cup\n", + "Getting /wiki/Royal_Spanish_Football_Federation\n", + "Getting /wiki/FC_Barcelona\n", + "Getting /wiki/1998_UEFA_Super_Cup\n", + "Getting /wiki/The_Football_Association\n", + "Getting /wiki/Chelsea_F.C.\n", + "Getting /wiki/1999_UEFA_Super_Cup\n", + "Getting /wiki/Italian_Football_Federation\n", + "Getting /wiki/S.S._Lazio\n", + "Getting /wiki/UEFA_Champions_League\n", + "Getting /wiki/UEFA_Europa_League\n", + "Getting /wiki/2000_UEFA_Super_Cup\n", + "Getting /wiki/Turkish_Football_Federation\n", + "Getting /wiki/Galatasaray_S.K._(football)\n", + "Getting /wiki/2001_UEFA_Super_Cup\n", + "Getting /wiki/The_Football_Association\n", + "Getting /wiki/Liverpool_F.C.\n", + "Getting /wiki/2002_UEFA_Super_Cup\n", + "Getting /wiki/Royal_Spanish_Football_Federation\n", + "Getting /wiki/Real_Madrid_CF\n", + "Getting /wiki/2003_UEFA_Super_Cup\n", + "Getting /wiki/Italian_Football_Federation\n", + "Getting /wiki/A.C._Milan\n", + "Getting /wiki/2004_UEFA_Super_Cup\n", + "Getting /wiki/Royal_Spanish_Football_Federation\n", + "Getting /wiki/Valencia_CF\n", + "Getting /wiki/2005_UEFA_Super_Cup\n", + "Getting /wiki/The_Football_Association\n", + "Getting /wiki/Liverpool_F.C.\n", + "Getting /wiki/2006_UEFA_Super_Cup\n", + "Getting /wiki/Royal_Spanish_Football_Federation\n", + "Getting /wiki/Sevilla_FC\n", + "Getting /wiki/2007_UEFA_Super_Cup\n", + "Getting /wiki/Italian_Football_Federation\n", + "Getting /wiki/A.C._Milan\n", + "Getting /wiki/2008_UEFA_Super_Cup\n", + "Getting /wiki/Russian_Football_Union\n", + "Getting /wiki/FC_Zenit_Saint_Petersburg\n", + "Getting /wiki/2009_UEFA_Super_Cup\n", + "Getting /wiki/Royal_Spanish_Football_Federation\n", + "Getting /wiki/FC_Barcelona\n", + "Getting /wiki/2010_UEFA_Super_Cup\n", + "Getting /wiki/Royal_Spanish_Football_Federation\n", + "Getting /wiki/Atl%C3%A9tico_Madrid\n", + "Getting /wiki/2011_UEFA_Super_Cup\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Getting /wiki/Royal_Spanish_Football_Federation\n", + "Getting /wiki/FC_Barcelona\n", + "Getting /wiki/2012_UEFA_Super_Cup\n", + "Getting /wiki/Royal_Spanish_Football_Federation\n", + "Getting /wiki/Atl%C3%A9tico_Madrid\n", + "Getting /wiki/2013_UEFA_Super_Cup\n", + "Getting /wiki/German_Football_Association\n", + "Getting /wiki/FC_Bayern_Munich\n", + "Getting /wiki/2014_UEFA_Super_Cup\n", + "Getting /wiki/Royal_Spanish_Football_Federation\n", + "Getting /wiki/Real_Madrid_CF\n", + "Getting /wiki/2015_UEFA_Super_Cup\n", + "Getting /wiki/Royal_Spanish_Football_Federation\n", + "Getting /wiki/FC_Barcelona\n", + "Getting /wiki/2016_UEFA_Super_Cup\n", + "Getting /wiki/Royal_Spanish_Football_Federation\n", + "Getting /wiki/Real_Madrid_CF\n", + "Getting /wiki/2017_UEFA_Super_Cup\n", + "Getting /wiki/Royal_Spanish_Football_Federation\n", + "Getting /wiki/Real_Madrid_CF\n", + "Getting /wiki/2018_UEFA_Super_Cup\n", + "Getting /wiki/Royal_Spanish_Football_Federation\n", + "Getting /wiki/Atl%C3%A9tico_Madrid\n", + "Getting /wiki/2019_UEFA_Super_Cup\n", + "Getting /wiki/The_Football_Association\n", + "Getting /wiki/Liverpool_F.C.\n", + "Getting /wiki/2020_UEFA_Super_Cup\n", + "Getting /wiki/German_Football_Association\n", + "Getting /wiki/FC_Bayern_Munich\n", + "Getting /wiki/2021_UEFA_Super_Cup\n", + "Getting /wiki/The_Football_Association\n", + "Getting /wiki/Chelsea_F.C.\n", + "Getting /wiki/2022_UEFA_Super_Cup\n", + "Getting /wiki/Royal_Spanish_Football_Federation\n", + "Getting /wiki/Real_Madrid_CF\n", + "Getting /wiki/List_of_UEFA_Super_Cup_winning_managers\n", + "Getting /wiki/1972_European_Super_Cup\n", + "Getting /wiki/%C8%98tefan_Kov%C3%A1cs\n", + "Getting /wiki/1973_European_Super_Cup\n", + "Getting /wiki/George_Knobel\n", + "Getting /wiki/1975_European_Super_Cup\n", + "Getting /wiki/Valeriy_Lobanovskyi\n", + "Getting /wiki/1976_European_Super_Cup\n", + "Getting /wiki/Raymond_Goethals\n", + "Getting /wiki/1977_European_Super_Cup\n", + "Getting /wiki/Bob_Paisley\n", + "Getting /wiki/1978_European_Super_Cup\n", + "Getting /wiki/Raymond_Goethals\n", + "Getting /wiki/1979_European_Super_Cup\n", + "Getting /wiki/Brian_Clough\n", + "Getting /wiki/1980_European_Super_Cup\n", + "Getting /wiki/Pasieguito\n", + "Getting /wiki/1982_European_Super_Cup\n", + "Getting /wiki/Tony_Barton_(footballer)\n", + "Getting /wiki/1983_European_Super_Cup\n", + "Getting /wiki/Alex_Ferguson\n", + "Getting /wiki/1984_European_Super_Cup\n", + "Getting /wiki/Giovanni_Trapattoni\n", + "Getting /wiki/1986_European_Super_Cup\n", + "Getting /wiki/Anghel_Iord%C4%83nescu\n", + "Getting /wiki/1987_European_Super_Cup\n", + "Getting /wiki/Tomislav_Ivi%C4%87\n", + "Getting /wiki/1988_European_Super_Cup\n", + "Getting /wiki/Aad_de_Mos\n", + "Getting /wiki/1989_European_Super_Cup\n", + "Getting /wiki/Arrigo_Sacchi\n", + "Getting /wiki/1990_European_Super_Cup\n", + "Getting /wiki/Arrigo_Sacchi\n", + "Getting /wiki/1991_European_Super_Cup\n", + "Getting /wiki/Alex_Ferguson\n", + "Getting /wiki/1992_European_Super_Cup\n", + "Getting /wiki/Johan_Cruyff\n", + "Getting /wiki/1993_European_Super_Cup\n", + "Getting /wiki/Nevio_Scala\n", + "Getting /wiki/1994_European_Super_Cup\n", + "Getting /wiki/Fabio_Capello\n", + "Getting /wiki/1995_UEFA_Super_Cup\n", + "Getting /wiki/Louis_van_Gaal\n", + "Getting /wiki/1996_UEFA_Super_Cup\n", + "Getting /wiki/Marcello_Lippi\n", + "Getting /wiki/1997_UEFA_Super_Cup\n", + "Getting /wiki/Louis_van_Gaal\n", + "Getting /wiki/1998_UEFA_Super_Cup\n", + "Getting /wiki/Gianluca_Vialli\n", + "Getting /wiki/1999_UEFA_Super_Cup\n", + "Getting /wiki/Sven-G%C3%B6ran_Eriksson\n", + "Getting /wiki/2000_UEFA_Super_Cup\n", + "Getting /wiki/Mircea_Lucescu\n", + "Getting /wiki/2001_UEFA_Super_Cup\n", + "Getting /wiki/G%C3%A9rard_Houllier\n", + "Getting /wiki/2002_UEFA_Super_Cup\n", + "Getting /wiki/Vicente_del_Bosque\n", + "Getting /wiki/2003_UEFA_Super_Cup\n", + "Getting /wiki/Carlo_Ancelotti\n", + "Getting /wiki/2004_UEFA_Super_Cup\n", + "Getting /wiki/Claudio_Ranieri\n", + "Getting /wiki/2005_UEFA_Super_Cup\n", + "Getting /wiki/Rafael_Ben%C3%ADtez\n", + "Getting /wiki/2006_UEFA_Super_Cup\n", + "Getting /wiki/Juande_Ramos\n", + "Getting /wiki/2007_UEFA_Super_Cup\n", + "Getting /wiki/Carlo_Ancelotti\n", + "Getting /wiki/2008_UEFA_Super_Cup\n", + "Getting /wiki/Dick_Advocaat\n", + "Getting /wiki/2009_UEFA_Super_Cup\n", + "Getting /wiki/Pep_Guardiola\n", + "Getting /wiki/2010_UEFA_Super_Cup\n", + "Getting /wiki/Quique_S%C3%A1nchez_Flores\n", + "Getting /wiki/2011_UEFA_Super_Cup\n", + "Getting /wiki/Pep_Guardiola\n", + "Getting /wiki/2012_UEFA_Super_Cup\n", + "Getting /wiki/Diego_Simeone\n", + "Getting /wiki/2013_UEFA_Super_Cup\n", + "Getting /wiki/Pep_Guardiola\n", + "Getting /wiki/2014_UEFA_Super_Cup\n", + "Getting /wiki/Carlo_Ancelotti\n", + "Getting /wiki/2015_UEFA_Super_Cup\n", + "Getting /wiki/Luis_Enrique\n", + "Getting /wiki/2016_UEFA_Super_Cup\n", + "Getting /wiki/Zinedine_Zidane\n", + "Getting /wiki/2017_UEFA_Super_Cup\n", + "Getting /wiki/Zinedine_Zidane\n", + "Getting /wiki/2018_UEFA_Super_Cup\n", + "Getting /wiki/Diego_Simeone\n", + "Getting /wiki/2019_UEFA_Super_Cup\n", + "Getting /wiki/J%C3%BCrgen_Klopp\n", + "Getting /wiki/2020_UEFA_Super_Cup\n", + "Getting /wiki/Hansi_Flick\n", + "Getting /wiki/2021_UEFA_Super_Cup\n", + "Getting /wiki/Thomas_Tuchel\n", + "Getting /wiki/2022_UEFA_Super_Cup\n", + "Getting /wiki/Carlo_Ancelotti\n", + "Getting /wiki/UEFA_competitions\n", + "Getting /wiki/UEFA_European_Championship\n", + "Getting /wiki/UEFA_European_Under-21_Championship\n", + "Getting /wiki/UEFA_European_Under-19_Championship\n", + "Getting /wiki/UEFA_European_Under-17_Championship\n", + "Getting /wiki/UEFA_Nations_League\n", + "Getting /wiki/CONMEBOL%E2%80%93UEFA_Cup_of_Champions\n", + "Getting /wiki/UEFA_Women%27s_Championship\n", + "Getting /wiki/UEFA_Women%27s_Under-19_Championship\n", + "Getting /wiki/UEFA_Women%27s_Under-17_Championship\n", + "Getting /wiki/UEFA_Women%27s_Nations_League\n", + "Getting /wiki/Women%27s_Finalissima\n", + "Getting /wiki/UEFA%E2%80%93CAF_Meridian_Cup\n", + "Getting /wiki/UEFA_Champions_League\n", + "Getting /wiki/UEFA_Europa_League\n", + "Getting /wiki/UEFA_Europa_Conference_League\n", + "Getting /wiki/UEFA_Youth_League\n", + "Getting /wiki/Under-20_Intercontinental_Cup\n", + "Getting /wiki/UEFA_Women%27s_Champions_League\n", + "Getting /wiki/UEFA_Cup_Winners%27_Cup\n", + "Getting /wiki/UEFA_Intertoto_Cup\n", + "Getting /wiki/Intercontinental_Cup_(football)\n", + "Getting /wiki/Intercontinental_Champions%27_Supercup\n", + "Getting /wiki/UEFA_Regions%27_Cup\n", + "Getting /wiki/UEFA_Amateur_Cup\n", + "Getting /wiki/UEFA_Futsal_Championship\n", + "Getting /wiki/UEFA_Under-21_Futsal_Tournament\n", + "Getting /wiki/UEFA_Under-19_Futsal_Championship\n", + "Getting /wiki/Futsal_Finalissima\n", + "Getting /wiki/UEFA_Women%27s_Futsal_Championship\n", + "Getting /wiki/UEFA_Futsal_Champions_League\n", + "Getting /wiki/UEFA_club_competition_records_and_statistics\n", + "Getting /wiki/List_of_UEFA_club_competition_winners\n", + "Getting /wiki/List_of_UEFA_club_competition_winning_managers\n", + "Getting /wiki/UEFA_coefficient\n", + "Getting /wiki/Bosman_ruling\n", + "Getting /wiki/UEFA_coaching_licences\n", + "Getting /wiki/UEFA_Financial_Fair_Play_Regulations\n", + "Getting /wiki/Homegrown_Player_Rule_(UEFA)\n", + "Getting /wiki/Respect_(UEFA_campaign)\n", + "Getting /wiki/UEFA_stadium_categories\n", + "Getting /wiki/Proposals_for_a_European_Super_League_in_association_football\n", + "Getting /wiki/UEFA%E2%80%93CONMEBOL_memorandum_of_understanding\n", + "Getting /wiki/2009_European_football_match-fixing_scandal\n", + "Getting /wiki/Football_team\n", + "Getting /wiki/Association_football\n", + "Getting /wiki/FIFA\n", + "Getting /wiki/FIFA_Club_World_Cup\n", + "Getting /wiki/Intercontinental_Cup_(football)\n", + "Getting /wiki/Under-20_Intercontinental_Cup\n", + "Getting /wiki/World_Leagues_Forum\n", + "Getting /wiki/Lists_of_association_football_clubs\n", + "Getting /wiki/Confederation_of_African_Football\n", + "Getting /wiki/CAF_Champions_League\n", + "Getting /wiki/CAF_Confederation_Cup\n", + "Getting /wiki/CAF_Super_Cup\n", + "Getting /wiki/List_of_top-division_football_clubs_in_CAF_countries\n", + "Getting /wiki/Asian_Football_Confederation\n", + "Getting /wiki/AFC_Champions_League\n", + "Getting /wiki/AFC_Cup\n", + "Getting /wiki/List_of_top-division_football_clubs_in_AFC_countries\n", + "Getting /wiki/UEFA\n", + "Getting /wiki/UEFA_Champions_League\n", + "Getting /wiki/UEFA_Europa_League\n", + "Getting /wiki/UEFA_Europa_Conference_League\n", + "Getting /wiki/List_of_top-division_football_clubs_in_UEFA_countries\n", + "Getting /wiki/CONCACAF\n", + "Getting /wiki/CONCACAF_Champions_League\n", + "Getting /wiki/Leagues_Cup\n", + "Getting /wiki/CONCACAF_Central_American_Cup\n", + "Getting /wiki/List_of_top-division_football_clubs_in_CONCACAF_countries\n", + "Getting /wiki/Oceania_Football_Confederation\n", + "Getting /wiki/OFC_Champions_League\n", + "Getting /wiki/List_of_top-division_football_clubs_in_OFC_countries\n", + "Getting /wiki/CONMEBOL\n", + "Getting /wiki/Copa_Libertadores\n", + "Getting /wiki/Copa_Sudamericana\n", + "Getting /wiki/Recopa_Sudamericana\n", + "Getting /wiki/List_of_top-division_football_clubs_in_CONMEBOL_countries\n", + "Getting /wiki/Association_football\n", + "Getting /wiki/UEFA_club_competitions\n", + "Getting /wiki/UEFA_Champions_League\n", + "Getting /wiki/UEFA_Europa_League\n", + "Getting /wiki/UEFA_Europa_Conference_League\n", + "Getting /wiki/UEFA_Youth_League\n", + "Getting /wiki/UEFA_Women%27s_Champions_League\n", + "Getting /wiki/Variants_of_association_football\n", + "Getting /wiki/UEFA_Futsal_Champions_League\n", + "Getting /wiki/Futsal_Women%27s_European_Champions\n", + "Getting /wiki/Euro_Winners_Cup\n", + "Getting /wiki/Women%27s_Euro_Winners_Cup\n", + "Getting /wiki/Basketball\n", + "Getting /wiki/EuroLeague\n", + "Getting /wiki/EuroCup_Basketball\n", + "Getting /wiki/Basketball_Champions_League\n", + "Getting /wiki/FIBA_Europe_Cup\n", + "Getting /wiki/Euroleague_Basketball_Next_Generation_Tournament\n", + "Getting /wiki/EuroLeague_Women\n", + "Getting /wiki/EuroCup_Women\n", + "Getting /wiki/FIBA_Europe_SuperCup_Women\n", + "Getting /wiki/Volleyball\n", + "Getting /wiki/CEV_Champions_League\n", + "Getting /wiki/CEV_Cup\n", + "Getting /wiki/CEV_Challenge_Cup\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Getting /wiki/CEV_Women%27s_Champions_League\n", + "Getting /wiki/Women%27s_CEV_Cup\n", + "Getting /wiki/CEV_Women%27s_Challenge_Cup\n", + "Getting /wiki/Handball\n", + "Getting /wiki/EHF_Champions_League\n", + "Getting /wiki/EHF_European_League\n", + "Getting /wiki/EHF_European_Cup\n", + "Getting /wiki/Women%27s_EHF_Champions_League\n", + "Getting /wiki/Women%27s_EHF_European_League\n", + "Getting /wiki/Women%27s_EHF_European_Cup\n", + "Getting /wiki/Water_polo\n", + "Getting /wiki/LEN_Champions_League\n", + "Getting /wiki/LEN_Euro_Cup\n", + "Getting /wiki/LEN_Super_Cup\n", + "Getting /wiki/LEN_Euro_League_Women\n", + "Getting /wiki/Women%27s_LEN_Trophy\n", + "Getting /wiki/Women%27s_LEN_Super_Cup\n", + "Getting /wiki/Rugby_union\n", + "Getting /wiki/European_Rugby_Champions_Cup\n", + "Getting /wiki/European_Rugby_Challenge_Cup\n", + "Getting /wiki/Rugby_Europe_Super_Cup\n", + "Getting /wiki/Ice_hockey\n", + "Getting /wiki/Champions_Hockey_League\n", + "Getting /wiki/IIHF_Continental_Cup\n", + "Getting /wiki/IIHF_European_Women%27s_Champions_Cup\n", + "Getting /wiki/European_Women%27s_Hockey_League\n", + "Getting /wiki/Indoor_hockey\n", + "Getting /wiki/Men%27s_EuroHockey_Indoor_Club_Cup\n", + "Getting /wiki/Women%27s_EuroHockey_Indoor_Club_Cup\n", + "Getting /wiki/Field_hockey\n", + "Getting /wiki/Euro_Hockey_League\n", + "Getting /wiki/Men%27s_EuroHockey_Club_Trophy_I\n", + "Getting /wiki/Women%27s_Euro_Hockey_League\n", + "Getting /wiki/Women%27s_EuroHockey_Club_Trophy\n", + "Getting /wiki/Roller_hockey\n", + "Getting /wiki/WSE_Champions_League\n", + "Getting /wiki/WSE_Cup\n", + "Getting /wiki/WSE_Continental_Cup\n", + "Getting /wiki/Rink_Hockey_European_Female_League\n", + "Getting /wiki/Table_tennis\n", + "Getting /wiki/European_Champions_League_(table_tennis)\n", + "Getting /wiki/ETTU_Cup\n", + "Getting /wiki/ETTU_Europe_Trophy\n", + "Getting /wiki/Badminton\n", + "Getting /wiki/Europe_Cup_(badminton)\n", + "Getting /wiki/Baseball\n", + "Getting /wiki/European_Cup_(baseball)\n", + "Getting /wiki/Softball\n", + "Getting /wiki/ESF_men%27s_EC_club_championships\n", + "Getting /wiki/ESF_men%27s_CWC_club_championships\n", + "Getting /wiki/ESF_Co-Ed_Slowpitch_European_Super_Cup\n", + "Getting /wiki/Korfball\n", + "Getting /wiki/American_football\n", + "Getting /wiki/European_League_of_Football\n", + "Getting /wiki/Central_European_Football_League\n", + "Getting /wiki/Sport_of_athletics\n", + "Getting /wiki/European_Champion_Clubs_Cup_(athletics)\n", + "Getting /wiki/European_Champion_Clubs_Cup_Cross_Country\n", + "Getting /wiki/Chess\n", + "Getting /wiki/European_Chess_Club_Cup\n", + "Getting /wiki/European_Chess_Club_Cup\n", + "Getting /wiki/Rugby_league\n", + "Getting /wiki/Super_League\n", + "Getting /wiki/Lacrosse\n", + "Getting /wiki/Ken_Galluccio_Cup\n", + "Getting /wiki/United_Soccer_Coaches\n", + "Already fetched /wiki/Main_Page\n", + "Already fetched /wiki/Main_Page\n", + "Already fetched /wiki/United_Soccer_Coaches\n", + "Already fetched /wiki/United_Soccer_Coaches\n", + "Already fetched /wiki/United_Soccer_Coaches\n", + "Getting /wiki/National_Collegiate_Athletic_Association\n", + "Getting /wiki/National_Association_of_Intercollegiate_Athletics\n", + "Getting /wiki/National_Christian_College_Athletic_Association\n", + "Getting /wiki/National_Junior_College_Athletic_Association\n", + "Getting /wiki/United_States\n", + "Getting /wiki/Soccer\n", + "Getting /wiki/Coach_(sport)\n", + "Getting /wiki/All-America\n", + "Getting /wiki/Missouri_Athletic_Club\n", + "Getting /wiki/Hermann_Trophy\n", + "Getting /wiki/Soccer_in_the_United_States\n", + "Getting /wiki/United_Soccer_Coaches_Hall_of_Fame\n", + "Getting /wiki/United_SportsCar_Championship\n", + "Already fetched /wiki/Main_Page\n", + "Already fetched /wiki/Main_Page\n", + "Getting /wiki/IMSA_SportsCar_Championship\n", + "Getting /wiki/IMSA_SportsCar_Championship\n", + "Getting /wiki/IMSA_SportsCar_Championship\n", + "Getting /wiki/IMSA_GT_Championship\n", + "Getting /wiki/United_States\n", + "Getting /wiki/United_States\n", + "Getting /wiki/Canada\n", + "Getting /wiki/Canada\n", + "Getting /wiki/North_America\n", + "Getting /wiki/Continental_AG\n", + "Getting /wiki/Michelin\n", + "Getting /wiki/United_Kingdom\n", + "Getting /wiki/Oliver_Jarvis\n", + "Getting /wiki/United_Kingdom\n", + "Getting /wiki/Tom_Blomqvist\n", + "Getting /wiki/Canada\n", + "Getting /wiki/United_States\n", + "Getting /wiki/Jon_Bennett_(racing_driver)\n", + "Getting /wiki/United_States\n", + "Getting /wiki/Colin_Braun\n", + "Getting /wiki/Australia\n", + "Getting /wiki/Matt_Campbell_(racing_driver)\n", + "Getting /wiki/France\n", + "Getting /wiki/Mathieu_Jaminet\n", + "Getting /wiki/Canada\n", + "Getting /wiki/Roman_De_Angelis\n", + "Getting /wiki/Japan\n", + "Getting /wiki/Acura\n", + "Getting /wiki/Germany\n", + "Getting /wiki/Porsche\n", + "Getting /wiki/Germany\n", + "Getting /wiki/BMW\n", + "Getting /wiki/United_States\n", + "Getting /wiki/Meyer_Shank_Racing\n", + "Getting /wiki/Curb-Agajanian_Performance_Group\n", + "Getting /wiki/United_States\n", + "Getting /wiki/United_States\n", + "Getting /wiki/CORE_Autosport\n", + "Getting /wiki/Canada\n", + "Getting /wiki/United_States\n", + "Getting /wiki/2023_IMSA_SportsCar_Championship\n", + "Getting /wiki/Sports_car_racing\n", + "Getting /wiki/United_States\n", + "Getting /wiki/Canada\n", + "Getting /wiki/International_Motor_Sports_Association\n", + "Getting /wiki/American_Le_Mans_Series\n", + "Getting /wiki/Rolex_Sports_Car_Series\n", + "Getting /wiki/Rolex_SA\n", + "Getting /wiki/Montres_Tudor_SA\n", + "Getting /wiki/24_Hours_of_Daytona\n", + "Getting /wiki/Petit_Le_Mans\n", + "Getting /wiki/Grand-Am_Road_Racing\n", + "Getting /wiki/Braselton,_Georgia\n", + "Getting /wiki/International_Motor_Sports_Association\n", + "Getting /wiki/Rolex_Sports_Car_Series\n", + "Getting /wiki/American_Le_Mans_Series\n", + "Getting /wiki/Daytona_Prototype\n", + "Getting /wiki/Le_Mans_Prototype\n", + "Getting /wiki/DeltaWing\n", + "Getting /wiki/Le_Mans_Prototype_Challenge\n", + "Getting /wiki/One-Design\n", + "Getting /wiki/Continental_AG\n", + "Getting /wiki/Sebring_International_Raceway\n", + "Getting /wiki/12_Hours_of_Sebring\n", + "Getting /wiki/International_Motor_Sports_Association\n", + "Getting /wiki/Fox_Sports_1\n", + "Getting /wiki/Montres_Tudor_SA\n", + "Getting /wiki/NBC_Sports\n", + "Getting /wiki/NBCSN\n", + "Getting /wiki/CNBC\n", + "Getting /wiki/NBC_Sports_on_USA_Network\n", + "Getting /wiki/Michelin_Pilot_Challenge\n", + "Getting /wiki/Touring_car_racing\n", + "Getting /wiki/Front-wheel_drive\n", + "Already fetched /wiki/United_SportsCar_Championship\n", + "Getting /wiki/Trans_Am_Series\n", + "Getting /wiki/Sports_prototype\n", + "Getting /wiki/Grand_tourer\n", + "Getting /wiki/LMDh\n", + "Getting /wiki/Automobile_Club_de_l%27Ouest\n", + "Getting /wiki/Le_Mans_Hypercar\n", + "Getting /wiki/Automobile_Club_de_l%27Ouest\n", + "Getting /wiki/Riley_Technologies\n", + "Getting /wiki/Multimatic_Motorsports\n", + "Getting /wiki/Onroak_Automotive\n", + "Getting /wiki/Oreca\n", + "Getting /wiki/Dallara\n", + "Getting /wiki/F%C3%A9d%C3%A9ration_Internationale_de_l%27Automobile\n", + "Getting /wiki/IMSA_Prototype_Challenge\n", + "Getting /wiki/Automobile_Club_de_l%27Ouest\n", + "Getting /wiki/Onroak_Automotive\n", + "Getting /wiki/ADESS_AG\n", + "Getting /wiki/Ginetta\n", + "Getting /wiki/F%C3%A9d%C3%A9ration_Internationale_de_l%27Automobile\n", + "Getting /wiki/Group_GT3\n", + "Getting /wiki/24_Hours_of_Daytona\n", + "Getting /wiki/Grand_Prix_of_Long_Beach\n", + "Getting /wiki/24_Hours_of_Le_Mans\n", + "Getting /wiki/Ligier_Nissan_DPi\n", + "Getting /wiki/Oreca_07\n", + "Getting /wiki/Chevrolet_Corvette_C7.R\n", + "Getting /wiki/Sports_prototype\n", + "Getting /wiki/Grand_tourer\n", + "Getting /wiki/Daytona_Prototype_International\n", + "Getting /wiki/Le_Mans_Prototype\n", + "Getting /wiki/Grand-Am_Road_Racing\n", + "Getting /wiki/Daytona_Prototype\n", + "Getting /wiki/American_Le_Mans_Series\n", + "Getting /wiki/Le_Mans_Prototype\n", + "Getting /wiki/DeltaWing\n", + "Getting /wiki/FIA_World_Endurance_Championship\n", + "Getting /wiki/American_Le_Mans_Series\n", + "Getting /wiki/Rolex_Sports_Car_Series\n", + "Getting /wiki/Daytona_Prototype\n", + "Getting /wiki/Le_Mans_Prototype\n", + "Getting /wiki/DeltaWing\n", + "Getting /wiki/2018_WeatherTech_SportsCar_Championship\n", + "Getting /wiki/Spec_racing\n", + "Getting /wiki/Oreca_FLM09\n", + "Getting /wiki/Chevrolet\n", + "Getting /wiki/LM_GTE\n", + "Getting /wiki/Daytona_International_Speedway\n", + "Getting /wiki/Sebring_International_Raceway\n", + "Getting /wiki/Grand_Prix_of_Long_Beach\n", + "Getting /wiki/Mid-Ohio_Sports_Car_Course\n", + "Getting /wiki/Mazda_Raceway_Laguna_Seca\n", + "Getting /wiki/Detroit_Belle_Isle_Grand_Prix\n", + "Getting /wiki/Watkins_Glen_International\n", + "Getting /wiki/Canadian_Tire_Motorsport_Park\n", + "Getting /wiki/Lime_Rock_Park\n", + "Getting /wiki/Road_America\n", + "Getting /wiki/Virginia_International_Raceway\n", + "Getting /wiki/Road_Atlanta\n", + "Getting /wiki/Kansas_Speedway\n", + "Getting /wiki/Indianapolis_Motor_Speedway\n", + "Getting /wiki/Circuit_of_the_Americas\n", + "Getting /wiki/Charlotte_Motor_Speedway\n", + "Getting /wiki/2023_IMSA_SportsCar_Championship\n", + "Getting /wiki/List_of_IMSA_SportsCar_Championship_circuits\n", + "Getting /wiki/Canadian_Tire_Motorsport_Park\n", + "Getting /wiki/2014_United_SportsCar_Championship\n", + "Getting /wiki/2019_IMSA_SportsCar_Championship\n", + "Getting /wiki/2022_IMSA_SportsCar_Championship\n", + "Getting /wiki/2023_IMSA_SportsCar_Championship\n", + "Getting /wiki/Charlotte_Motor_Speedway\n", + "Getting /wiki/2020_IMSA_SportsCar_Championship\n", + "Getting /wiki/Circuit_of_the_Americas\n", + "Getting /wiki/2014_United_SportsCar_Championship\n", + "Getting /wiki/2017_IMSA_SportsCar_Championship\n", + "Getting /wiki/Daytona_International_Speedway\n", + "Getting /wiki/2014_United_SportsCar_Championship\n", + "Getting /wiki/2023_IMSA_SportsCar_Championship\n", + "Getting /wiki/Detroit_Belle_Isle_Grand_Prix\n", + "Getting /wiki/2014_United_SportsCar_Championship\n", + "Getting /wiki/2019_IMSA_SportsCar_Championship\n", + "Getting /wiki/2021_IMSA_SportsCar_Championship\n", + "Getting /wiki/2022_IMSA_SportsCar_Championship\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Getting /wiki/Indianapolis_Motor_Speedway\n", + "Getting /wiki/2014_United_SportsCar_Championship\n", + "Getting /wiki/2023_IMSA_SportsCar_Championship\n", + "Getting /wiki/Kansas_Speedway\n", + "Getting /wiki/2014_United_SportsCar_Championship\n", + "Getting /wiki/Lime_Rock_Park\n", + "Getting /wiki/2015_United_SportsCar_Championship\n", + "Getting /wiki/2019_IMSA_SportsCar_Championship\n", + "Getting /wiki/2021_IMSA_SportsCar_Championship\n", + "Getting /wiki/2023_IMSA_SportsCar_Championship\n", + "Getting /wiki/Grand_Prix_of_Long_Beach\n", + "Getting /wiki/2014_United_SportsCar_Championship\n", + "Getting /wiki/2019_IMSA_SportsCar_Championship\n", + "Getting /wiki/2021_WeatherTech_SportsCar_Championship\n", + "Getting /wiki/2023_IMSA_SportsCar_Championship\n", + "Getting /wiki/Road_Atlanta\n", + "Getting /wiki/2014_United_SportsCar_Championship\n", + "Getting /wiki/2023_IMSA_SportsCar_Championship\n", + "Getting /wiki/Mid-Ohio_Sports_Car_Course\n", + "Getting /wiki/2018_IMSA_SportsCar_Championship\n", + "Getting /wiki/2022_IMSA_SportsCar_Championship\n", + "Getting /wiki/Road_America\n", + "Getting /wiki/2014_United_SportsCar_Championship\n", + "Getting /wiki/2023_IMSA_SportsCar_Championship\n", + "Getting /wiki/Sebring_International_Raceway\n", + "Getting /wiki/2014_United_SportsCar_Championship\n", + "Getting /wiki/2023_IMSA_SportsCar_Championship\n", + "Getting /wiki/Virginia_International_Raceway\n", + "Getting /wiki/2014_United_SportsCar_Championship\n", + "Getting /wiki/2023_IMSA_SportsCar_Championship\n", + "Getting /wiki/Watkins_Glen_International\n", + "Getting /wiki/2014_United_SportsCar_Championship\n", + "Getting /wiki/2019_IMSA_SportsCar_Championship\n", + "Getting /wiki/2021_IMSA_SportsCar_Championship\n", + "Getting /wiki/2023_IMSA_SportsCar_Championship\n", + "Getting /wiki/WeatherTech_Raceway_Laguna_Seca\n", + "Getting /wiki/2014_United_SportsCar_Championship\n", + "Getting /wiki/2023_IMSA_SportsCar_Championship\n", + "Getting /wiki/2014_United_SportsCar_Championship\n", + "Getting /wiki/Portugal\n", + "Getting /wiki/Jo%C3%A3o_Barbosa\n", + "Getting /wiki/Brazil\n", + "Getting /wiki/Christian_Fittipaldi\n", + "Getting /wiki/United_States\n", + "Getting /wiki/Jon_Bennett_(racing_driver)\n", + "Getting /wiki/United_States\n", + "Getting /wiki/Colin_Braun\n", + "Getting /wiki/Canada\n", + "Getting /wiki/Kuno_Wittmer\n", + "Getting /wiki/United_States\n", + "Getting /wiki/Dane_Cameron\n", + "Getting /wiki/2015_United_SportsCar_Championship\n", + "Getting /wiki/Portugal\n", + "Getting /wiki/Jo%C3%A3o_Barbosa\n", + "Getting /wiki/Brazil\n", + "Getting /wiki/Christian_Fittipaldi\n", + "Getting /wiki/United_States\n", + "Getting /wiki/Jon_Bennett_(racing_driver)\n", + "Getting /wiki/United_States\n", + "Getting /wiki/Colin_Braun\n", + "Getting /wiki/France\n", + "Getting /wiki/Patrick_Pilet\n", + "Getting /wiki/United_States\n", + "Getting /wiki/Townsend_Bell\n", + "Getting /wiki/United_States\n", + "Getting /wiki/2016_IMSA_SportsCar_Championship\n", + "Getting /wiki/United_States\n", + "Getting /wiki/Dane_Cameron\n", + "Getting /wiki/United_States\n", + "Getting /wiki/Eric_Curran\n", + "Getting /wiki/Venezuela\n", + "Getting /wiki/Alex_Popow\n", + "Getting /wiki/Netherlands\n", + "Getting /wiki/Renger_van_der_Zande\n", + "Getting /wiki/United_Kingdom\n", + "Getting /wiki/Oliver_Gavin\n", + "Getting /wiki/United_States\n", + "Getting /wiki/Tommy_Milner\n", + "Getting /wiki/Italy\n", + "Getting /wiki/Alessandro_Balzan\n", + "Getting /wiki/Denmark\n", + "Getting /wiki/Christina_Nielsen\n", + "Getting /wiki/2017_IMSA_SportsCar_Championship\n", + "Getting /wiki/United_States\n", + "Getting /wiki/Jordan_Taylor_(racing_driver)\n", + "Getting /wiki/United_States\n", + "Getting /wiki/Ricky_Taylor\n", + "Getting /wiki/United_States\n", + "Getting /wiki/James_French_(racing_driver)\n", + "Getting /wiki/Mexico\n", + "Getting /wiki/Patricio_O%27Ward\n", + "Getting /wiki/Spain\n", + "Getting /wiki/Antonio_Garc%C3%ADa_(racing_driver)\n", + "Getting /wiki/Denmark\n", + "Getting /wiki/Jan_Magnussen\n", + "Getting /wiki/Italy\n", + "Getting /wiki/Alessandro_Balzan\n", + "Getting /wiki/Denmark\n", + "Getting /wiki/Christina_Nielsen\n", + "Getting /wiki/2018_IMSA_SportsCar_Championship\n", + "Getting /wiki/United_States\n", + "Getting /wiki/Eric_Curran\n", + "Getting /wiki/Brazil\n", + "Getting /wiki/Felipe_Nasr\n", + "Getting /wiki/Spain\n", + "Getting /wiki/Antonio_Garc%C3%ADa_(racing_driver)\n", + "Getting /wiki/Denmark\n", + "Getting /wiki/Jan_Magnussen\n", + "Getting /wiki/United_States\n", + "Getting /wiki/Bryan_Sellers\n", + "Getting /wiki/United_States\n", + "Getting /wiki/Madison_Snow\n", + "Getting /wiki/2019_IMSA_SportsCar_Championship\n", + "Getting /wiki/United_States\n", + "Getting /wiki/Dane_Cameron\n", + "Getting /wiki/Colombia\n", + "Getting /wiki/Juan_Pablo_Montoya\n", + "Getting /wiki/United_States\n", + "Getting /wiki/Matt_McMurry\n", + "Getting /wiki/New_Zealand\n", + "Getting /wiki/Earl_Bamber\n", + "Getting /wiki/Belgium\n", + "Getting /wiki/Laurens_Vanthoor\n", + "Getting /wiki/Germany\n", + "Getting /wiki/Mario_Farnbacher\n", + "Getting /wiki/United_States\n", + "Getting /wiki/Trent_Hindman\n", + "Getting /wiki/2020_IMSA_SportsCar_Championship\n", + "Getting /wiki/United_States\n", + "Getting /wiki/Ricky_Taylor\n", + "Getting /wiki/Brazil\n", + "Getting /wiki/H%C3%A9lio_Castroneves\n", + "Getting /wiki/United_States\n", + "Getting /wiki/Spain\n", + "Getting /wiki/Antonio_Garc%C3%ADa_(racing_driver)\n", + "Getting /wiki/United_States\n", + "Getting /wiki/Jordan_Taylor_(racing_driver)\n", + "Getting /wiki/Germany\n", + "Getting /wiki/Mario_Farnbacher\n", + "Getting /wiki/United_States\n", + "Getting /wiki/Matt_McMurry\n", + "Getting /wiki/2021_IMSA_SportsCar_Championship\n", + "Getting /wiki/Brazil\n", + "Getting /wiki/Pipo_Derani\n", + "Getting /wiki/Brazil\n", + "Getting /wiki/Felipe_Nasr\n", + "Getting /wiki/United_States\n", + "Getting /wiki/Ben_Keating\n", + "Getting /wiki/Denmark\n", + "Getting /wiki/Mikkel_Jensen_(racing_driver)\n", + "Getting /wiki/United_States\n", + "Getting /wiki/Spain\n", + "Getting /wiki/Antonio_Garc%C3%ADa_(racing_driver)\n", + "Getting /wiki/United_States\n", + "Getting /wiki/Jordan_Taylor_(racing_driver)\n", + "Getting /wiki/Canada\n", + "Getting /wiki/Zacharie_Robichon\n", + "Getting /wiki/Belgium\n", + "Getting /wiki/Laurens_Vanthoor\n", + "Getting /wiki/2022_IMSA_SportsCar_Championship\n", + "Getting /wiki/United_Kingdom\n", + "Getting /wiki/Oliver_Jarvis\n", + "Getting /wiki/United_Kingdom\n", + "Getting /wiki/Tom_Blomqvist\n", + "Getting /wiki/Canada\n", + "Getting /wiki/United_States\n", + "Getting /wiki/Jon_Bennett_(racing_driver)\n", + "Getting /wiki/United_States\n", + "Getting /wiki/Colin_Braun\n", + "Getting /wiki/Australia\n", + "Getting /wiki/Matt_Campbell_(racing_driver)\n", + "Getting /wiki/France\n", + "Getting /wiki/Mathieu_Jaminet\n", + "Getting /wiki/Canada\n", + "Getting /wiki/Roman_De_Angelis\n", + "Getting /wiki/2014_United_SportsCar_Championship\n", + "Getting /wiki/United_States\n", + "Getting /wiki/Action_Express_Racing\n", + "Getting /wiki/United_States\n", + "Getting /wiki/CORE_Autosport\n", + "Getting /wiki/United_States\n", + "Getting /wiki/Street_%26_Racing_Technology\n", + "Getting /wiki/United_States\n", + "Getting /wiki/Turner_Motorsport\n", + "Getting /wiki/2015_United_SportsCar_Championship\n", + "Getting /wiki/United_States\n", + "Getting /wiki/Action_Express_Racing\n", + "Getting /wiki/United_States\n", + "Getting /wiki/CORE_Autosport\n", + "Getting /wiki/United_States\n", + "Getting /wiki/CORE_Autosport\n", + "Getting /wiki/United_States\n", + "Getting /wiki/Scuderia_Corsa\n", + "Getting /wiki/2016_IMSA_SportsCar_Championship\n", + "Getting /wiki/United_States\n", + "Getting /wiki/Action_Express_Racing\n", + "Getting /wiki/United_States\n", + "Getting /wiki/Starworks_Motorsport\n", + "Getting /wiki/United_States\n", + "Getting /wiki/Pratt_%26_Miller\n", + "Getting /wiki/United_States\n", + "Getting /wiki/Scuderia_Corsa\n", + "Getting /wiki/2017_IMSA_SportsCar_Championship\n", + "Getting /wiki/United_States\n", + "Getting /wiki/Wayne_Taylor_Racing\n", + "Getting /wiki/United_States\n", + "Getting /wiki/United_States\n", + "Getting /wiki/Pratt_%26_Miller\n", + "Getting /wiki/United_States\n", + "Getting /wiki/Scuderia_Corsa\n", + "Getting /wiki/2018_IMSA_SportsCar_Championship\n", + "Getting /wiki/United_States\n", + "Getting /wiki/Action_Express_Racing\n", + "Getting /wiki/United_States\n", + "Getting /wiki/Pratt_%26_Miller\n", + "Getting /wiki/United_States\n", + "Getting /wiki/Paul_Miller_Racing\n", + "Getting /wiki/2019_IMSA_SportsCar_Championship\n", + "Getting /wiki/United_States\n", + "Getting /wiki/Acura\n", + "Getting /wiki/Team_Penske\n", + "Getting /wiki/United_States\n", + "Getting /wiki/PR1/Mathiasen_Motorsports\n", + "Getting /wiki/United_States\n", + "Getting /wiki/CORE_Autosport\n", + "Getting /wiki/United_States\n", + "Getting /wiki/Meyer_Shank_Racing\n", + "Getting /wiki/Curb-Agajanian_Performance_Group\n", + "Getting /wiki/2020_IMSA_SportsCar_Championship\n", + "Getting /wiki/United_States\n", + "Getting /wiki/Acura\n", + "Getting /wiki/Team_Penske\n", + "Getting /wiki/United_States\n", + "Getting /wiki/PR1/Mathiasen_Motorsports\n", + "Getting /wiki/United_States\n", + "Getting /wiki/Corvette_Racing\n", + "Getting /wiki/United_States\n", + "Getting /wiki/Meyer_Shank_Racing\n", + "Getting /wiki/Curb-Agajanian_Performance_Group\n", + "Getting /wiki/2021_IMSA_SportsCar_Championship\n", + "Getting /wiki/United_States\n", + "Getting /wiki/Action_Express_Racing\n", + "Getting /wiki/United_States\n", + "Getting /wiki/PR1/Mathiasen_Motorsports\n", + "Getting /wiki/United_States\n", + "Getting /wiki/Riley_Technologies\n", + "Getting /wiki/United_States\n", + "Getting /wiki/Corvette_Racing\n", + "Getting /wiki/Canada\n", + "Getting /wiki/2022_IMSA_SportsCar_Championship\n", + "Getting /wiki/United_States\n", + "Getting /wiki/Meyer_Shank_Racing\n", + "Getting /wiki/Curb-Agajanian_Performance_Group\n", + "Getting /wiki/United_States\n", + "Getting /wiki/Starworks_Motorsport\n", + "Getting /wiki/United_States\n", + "Getting /wiki/CORE_Autosport\n", + "Getting /wiki/Canada\n", + "Getting /wiki/United_States\n", + "Getting /wiki/2014_United_SportsCar_Championship\n", + "Getting /wiki/United_States\n", + "Getting /wiki/Chevrolet\n", + "Getting /wiki/Germany\n", + "Getting /wiki/Porsche\n", + "Getting /wiki/Germany\n", + "Getting /wiki/Porsche\n", + "Getting /wiki/2015_United_SportsCar_Championship\n", + "Getting /wiki/United_States\n", + "Getting /wiki/Chevrolet\n", + "Getting /wiki/Germany\n", + "Getting /wiki/Porsche\n", + "Getting /wiki/Italy\n", + "Getting /wiki/Ferrari\n", + "Getting /wiki/2016_IMSA_SportsCar_Championship\n", + "Getting /wiki/United_States\n", + "Getting /wiki/Chevrolet\n", + "Getting /wiki/United_States\n", + "Getting /wiki/Chevrolet\n", + "Getting /wiki/Germany\n", + "Getting /wiki/Audi\n", + "Getting /wiki/2017_IMSA_SportsCar_Championship\n", + "Getting /wiki/United_States\n", + "Getting /wiki/Cadillac\n", + "Getting /wiki/United_States\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Getting /wiki/Chevrolet\n", + "Getting /wiki/Italy\n", + "Getting /wiki/Ferrari\n", + "Getting /wiki/2018_IMSA_SportsCar_Championship\n", + "Getting /wiki/United_States\n", + "Getting /wiki/Cadillac\n", + "Getting /wiki/United_States\n", + "Getting /wiki/Ford_Motor_Company\n", + "Getting /wiki/Italy\n", + "Getting /wiki/Lamborghini\n", + "Getting /wiki/2019_IMSA_SportsCar_Championship\n", + "Getting /wiki/Japan\n", + "Getting /wiki/Acura\n", + "Getting /wiki/Germany\n", + "Getting /wiki/Porsche\n", + "Getting /wiki/Italy\n", + "Getting /wiki/Lamborghini\n", + "Getting /wiki/2020_IMSA_SportsCar_Championship\n", + "Getting /wiki/Japan\n", + "Getting /wiki/Acura\n", + "Getting /wiki/United_States\n", + "Getting /wiki/Chevrolet\n", + "Getting /wiki/Japan\n", + "Getting /wiki/Acura\n", + "Getting /wiki/2021_IMSA_SportsCar_Championship\n", + "Getting /wiki/United_States\n", + "Getting /wiki/Cadillac\n", + "Getting /wiki/United_States\n", + "Getting /wiki/Chevrolet\n", + "Getting /wiki/Germany\n", + "Getting /wiki/Porsche\n", + "Getting /wiki/2022_IMSA_SportsCar_Championship\n", + "Getting /wiki/Japan\n", + "Getting /wiki/Acura\n", + "Getting /wiki/Germany\n", + "Getting /wiki/Porsche\n", + "Getting /wiki/Germany\n", + "Getting /wiki/BMW\n", + "Getting /wiki/2014_United_SportsCar_Championship\n", + "Getting /wiki/France\n", + "Getting /wiki/Michelin\n", + "Getting /wiki/2015_United_SportsCar_Championship\n", + "Getting /wiki/France\n", + "Getting /wiki/Michelin\n", + "Getting /wiki/2014_United_SportsCar_Championship\n", + "Getting /wiki/Portugal\n", + "Getting /wiki/Jo%C3%A3o_Barbosa\n", + "Getting /wiki/Brazil\n", + "Getting /wiki/Christian_Fittipaldi\n", + "Getting /wiki/United_States\n", + "Getting /wiki/Jon_Bennett_(racing_driver)\n", + "Getting /wiki/United_States\n", + "Getting /wiki/Colin_Braun\n", + "Getting /wiki/United_States\n", + "Getting /wiki/Denmark\n", + "Getting /wiki/Michael_Christensen_(racing_driver)\n", + "Getting /wiki/United_States\n", + "Getting /wiki/Patrick_Long\n", + "Getting /wiki/United_States\n", + "Getting /wiki/Townsend_Bell\n", + "Getting /wiki/United_States\n", + "Getting /wiki/2015_United_SportsCar_Championship\n", + "Getting /wiki/Portugal\n", + "Getting /wiki/Jo%C3%A3o_Barbosa\n", + "Getting /wiki/Brazil\n", + "Getting /wiki/Christian_Fittipaldi\n", + "Getting /wiki/United_States\n", + "Getting /wiki/United_Kingdom\n", + "Getting /wiki/Tom_Kimber-Smith\n", + "Getting /wiki/United_States\n", + "Getting /wiki/Andrew_Palmer_(racing_driver)\n", + "Getting /wiki/Spain\n", + "Getting /wiki/Antonio_Garc%C3%ADa_(racing_driver)\n", + "Getting /wiki/Denmark\n", + "Getting /wiki/Jan_Magnussen\n", + "Getting /wiki/United_States\n", + "Getting /wiki/United_States\n", + "Getting /wiki/Cameron_Lawrence_(racing_driver)\n", + "Getting /wiki/2016_IMSA_SportsCar_Championship\n", + "Getting /wiki/Portugal\n", + "Getting /wiki/Jo%C3%A3o_Barbosa\n", + "Getting /wiki/Brazil\n", + "Getting /wiki/Christian_Fittipaldi\n", + "Getting /wiki/United_States\n", + "Getting /wiki/Robert_Alon\n", + "Getting /wiki/Mexico\n", + "Getting /wiki/Jos%C3%A9_Guti%C3%A9rrez_(racing_driver)\n", + "Getting /wiki/United_Kingdom\n", + "Getting /wiki/Tom_Kimber-Smith\n", + "Getting /wiki/United_Kingdom\n", + "Getting /wiki/Oliver_Gavin\n", + "Getting /wiki/United_States\n", + "Getting /wiki/Tommy_Milner\n", + "Getting /wiki/Italy\n", + "Getting /wiki/Alessandro_Balzan\n", + "Getting /wiki/Denmark\n", + "Getting /wiki/Christina_Nielsen\n", + "Getting /wiki/2017_IMSA_SportsCar_Championship\n", + "Getting /wiki/Portugal\n", + "Getting /wiki/Filipe_Albuquerque\n", + "Getting /wiki/Portugal\n", + "Getting /wiki/Jo%C3%A3o_Barbosa\n", + "Getting /wiki/Brazil\n", + "Getting /wiki/Christian_Fittipaldi\n", + "Getting /wiki/United_States\n", + "Getting /wiki/James_French_(racing_driver)\n", + "Getting /wiki/United_States\n", + "Getting /wiki/Kyle_Masson\n", + "Getting /wiki/Mexico\n", + "Getting /wiki/Patricio_O%27Ward\n", + "Getting /wiki/France\n", + "Getting /wiki/Patrick_Pilet\n", + "Getting /wiki/Germany\n", + "Getting /wiki/Dirk_Werner\n", + "Getting /wiki/Netherlands\n", + "Getting /wiki/Jeroen_Bleekemolen\n", + "Getting /wiki/Germany\n", + "Getting /wiki/Mario_Farnbacher\n", + "Getting /wiki/United_States\n", + "Getting /wiki/Ben_Keating\n", + "Getting /wiki/2018_IMSA_SportsCar_Championship\n", + "Getting /wiki/United_States\n", + "Getting /wiki/Eric_Curran\n", + "Getting /wiki/Brazil\n", + "Getting /wiki/Felipe_Nasr\n", + "Getting /wiki/United_States\n", + "Getting /wiki/Joey_Hand\n", + "Getting /wiki/Germany\n", + "Getting /wiki/Dirk_M%C3%BCller_(racing_driver)\n", + "Getting /wiki/Netherlands\n", + "Getting /wiki/Jeroen_Bleekemolen\n", + "Getting /wiki/United_States\n", + "Getting /wiki/Ben_Keating\n", + "Getting /wiki/Germany\n", + "Getting /wiki/Luca_Stolz\n", + "Getting /wiki/2019_IMSA_SportsCar_Championship\n", + "Getting /wiki/Brazil\n", + "Getting /wiki/Pipo_Derani\n", + "Getting /wiki/Brazil\n", + "Getting /wiki/Felipe_Nasr\n", + "Getting /wiki/United_States\n", + "Getting /wiki/Eric_Curran\n", + "Getting /wiki/Canada\n", + "Getting /wiki/United_States\n", + "Getting /wiki/Kyle_Masson\n", + "Getting /wiki/United_States\n", + "Getting /wiki/Ryan_Briscoe\n", + "Getting /wiki/New_Zealand\n", + "Getting /wiki/Richard_Westbrook\n", + "Getting /wiki/Netherlands\n", + "Getting /wiki/Jeroen_Bleekemolen\n", + "Getting /wiki/United_States\n", + "Getting /wiki/Ben_Keating\n", + "Getting /wiki/Brazil\n", + "Getting /wiki/Felipe_Fraga\n", + "Getting /wiki/2020_IMSA_SportsCar_Championship\n", + "Getting /wiki/Australia\n", + "Getting /wiki/Ryan_Briscoe\n", + "Getting /wiki/Netherlands\n", + "Getting /wiki/Renger_van_der_Zande\n", + "Getting /wiki/Switzerland\n", + "Getting /wiki/Simon_Trummer\n", + "Getting /wiki/United_States\n", + "Getting /wiki/John_Edwards_(racing_driver)\n", + "Getting /wiki/Finland\n", + "Getting /wiki/Jesse_Krohn\n", + "Getting /wiki/United_States\n", + "Getting /wiki/Bryan_Sellers\n", + "Getting /wiki/United_States\n", + "Getting /wiki/Madison_Snow\n", + "Getting /wiki/United_States\n", + "Getting /wiki/Corey_Lewis_(racing_driver)\n", + "Getting /wiki/2021_IMSA_SportsCar_Championship\n", + "Getting /wiki/United_States\n", + "Getting /wiki/Alexander_Rossi\n", + "Getting /wiki/Portugal\n", + "Getting /wiki/Filipe_Albuquerque\n", + "Getting /wiki/United_States\n", + "Getting /wiki/Ricky_Taylor\n", + "Getting /wiki/United_States\n", + "Getting /wiki/Ben_Keating\n", + "Getting /wiki/Denmark\n", + "Getting /wiki/Mikkel_Jensen_(racing_driver)\n", + "Getting /wiki/United_States\n", + "Getting /wiki/Scott_Huffaker\n", + "Getting /wiki/United_States\n", + "Getting /wiki/Australia\n", + "Getting /wiki/United_States\n", + "Getting /wiki/Tommy_Milner\n", + "Getting /wiki/United_Kingdom\n", + "Getting /wiki/Nick_Tandy\n", + "Getting /wiki/Belgium\n", + "Getting /wiki/Jan_Heylen\n", + "Getting /wiki/United_States\n", + "Getting /wiki/Patrick_Long\n", + "Getting /wiki/United_States\n", + "Getting /wiki/Trent_Hindman\n", + "Getting /wiki/2022_IMSA_SportsCar_Championship\n", + "Getting /wiki/United_Kingdom\n", + "Getting /wiki/Oliver_Jarvis\n", + "Getting /wiki/United_Kingdom\n", + "Getting /wiki/Tom_Blomqvist\n", + "Getting /wiki/United_States\n", + "Getting /wiki/Ben_Keating\n", + "Getting /wiki/Denmark\n", + "Getting /wiki/Mikkel_Jensen_(racing_driver)\n", + "Getting /wiki/United_States\n", + "Getting /wiki/Scott_Huffaker\n", + "Getting /wiki/United_States\n", + "Getting /wiki/Brazil\n", + "Getting /wiki/Felipe_Fraga\n", + "Getting /wiki/Netherlands\n", + "Getting /wiki/Brazil\n", + "Getting /wiki/Daniel_Serra\n", + "Getting /wiki/Italy\n", + "Getting /wiki/Davide_Rigon\n", + "Getting /wiki/United_States\n", + "Getting /wiki/Brendan_Iribe\n", + "Getting /wiki/South_Africa\n", + "Getting /wiki/Jordan_Pepper\n", + "Getting /wiki/2014_United_SportsCar_Championship\n", + "Getting /wiki/United_States\n", + "Getting /wiki/Action_Express_Racing\n", + "Getting /wiki/United_States\n", + "Getting /wiki/CORE_Autosport\n", + "Getting /wiki/United_States\n", + "Getting /wiki/CORE_Autosport\n", + "Getting /wiki/Canada\n", + "Getting /wiki/2015_United_SportsCar_Championship\n", + "Getting /wiki/United_States\n", + "Getting /wiki/Action_Express_Racing\n", + "Getting /wiki/United_States\n", + "Getting /wiki/PR1/Mathiasen_Motorsports\n", + "Getting /wiki/United_States\n", + "Getting /wiki/Pratt_%26_Miller\n", + "Getting /wiki/United_States\n", + "Getting /wiki/Riley_Technologies\n", + "Getting /wiki/2016_IMSA_SportsCar_Championship\n", + "Getting /wiki/United_States\n", + "Getting /wiki/Action_Express_Racing\n", + "Getting /wiki/United_States\n", + "Getting /wiki/PR1/Mathiasen_Motorsports\n", + "Getting /wiki/United_States\n", + "Getting /wiki/Pratt_%26_Miller\n", + "Getting /wiki/United_States\n", + "Getting /wiki/Magnus_Racing\n", + "Getting /wiki/2017_IMSA_SportsCar_Championship\n", + "Getting /wiki/United_States\n", + "Getting /wiki/Action_Express_Racing\n", + "Getting /wiki/United_States\n", + "Getting /wiki/United_States\n", + "Getting /wiki/CORE_Autosport\n", + "Getting /wiki/United_States\n", + "Getting /wiki/Riley_Technologies\n", + "Getting /wiki/2018_IMSA_SportsCar_Championship\n", + "Getting /wiki/United_States\n", + "Getting /wiki/Action_Express_Racing\n", + "Getting /wiki/United_States\n", + "Getting /wiki/Chip_Ganassi_Racing\n", + "Getting /wiki/United_States\n", + "Getting /wiki/Riley_Technologies\n", + "Getting /wiki/2019_IMSA_SportsCar_Championship\n", + "Getting /wiki/United_States\n", + "Getting /wiki/Action_Express_Racing\n", + "Getting /wiki/United_States\n", + "Getting /wiki/United_States\n", + "Getting /wiki/Chip_Ganassi_Racing\n", + "Getting /wiki/United_States\n", + "Getting /wiki/Riley_Technologies\n", + "Getting /wiki/2020_IMSA_SportsCar_Championship\n", + "Getting /wiki/United_States\n", + "Getting /wiki/Wayne_Taylor_Racing\n", + "Getting /wiki/United_States\n", + "Getting /wiki/PR1/Mathiasen_Motorsports\n", + "Getting /wiki/United_States\n", + "Getting /wiki/Rahal_Letterman_Lanigan_Racing\n", + "Getting /wiki/United_States\n", + "Getting /wiki/Paul_Miller_Racing\n", + "Getting /wiki/2021_IMSA_SportsCar_Championship\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Getting /wiki/United_States\n", + "Getting /wiki/Wayne_Taylor_Racing\n", + "Getting /wiki/United_States\n", + "Getting /wiki/PR1/Mathiasen_Motorsports\n", + "Getting /wiki/United_States\n", + "Getting /wiki/Riley_Technologies\n", + "Getting /wiki/United_States\n", + "Getting /wiki/Corvette_Racing\n", + "Getting /wiki/United_States\n", + "Getting /wiki/2022_IMSA_SportsCar_Championship\n", + "Getting /wiki/United_States\n", + "Getting /wiki/Meyer_Shank_Racing\n", + "Getting /wiki/Curb-Agajanian_Performance_Group\n", + "Getting /wiki/United_States\n", + "Getting /wiki/PR1/Mathiasen_Motorsports\n", + "Getting /wiki/United_States\n", + "Getting /wiki/Riley_Technologies\n", + "Getting /wiki/United_States\n", + "Getting /wiki/Risi_Competizione\n", + "Getting /wiki/United_Kingdom\n", + "Getting /wiki/Optimum_Motorsport\n", + "Getting /wiki/2014_United_SportsCar_Championship\n", + "Getting /wiki/United_States\n", + "Getting /wiki/Chevrolet\n", + "Getting /wiki/Germany\n", + "Getting /wiki/Porsche\n", + "Getting /wiki/Italy\n", + "Getting /wiki/Ferrari\n", + "Getting /wiki/2015_United_SportsCar_Championship\n", + "Getting /wiki/United_States\n", + "Getting /wiki/Chevrolet\n", + "Getting /wiki/United_States\n", + "Getting /wiki/Chevrolet\n", + "Getting /wiki/Germany\n", + "Getting /wiki/Porsche\n", + "Getting /wiki/2016_IMSA_SportsCar_Championship\n", + "Getting /wiki/Japan\n", + "Getting /wiki/Honda\n", + "Getting /wiki/United_States\n", + "Getting /wiki/Chevrolet\n", + "Getting /wiki/Germany\n", + "Getting /wiki/Audi\n", + "Getting /wiki/2017_IMSA_SportsCar_Championship\n", + "Getting /wiki/United_States\n", + "Getting /wiki/Cadillac\n", + "Getting /wiki/United_States\n", + "Getting /wiki/Ford_Motor_Company\n", + "Getting /wiki/Germany\n", + "Getting /wiki/Mercedes-AMG\n", + "Getting /wiki/2018_IMSA_SportsCar_Championship\n", + "Getting /wiki/United_States\n", + "Getting /wiki/Cadillac\n", + "Getting /wiki/United_States\n", + "Getting /wiki/Ford_Motor_Company\n", + "Getting /wiki/Germany\n", + "Getting /wiki/Mercedes-AMG\n", + "Getting /wiki/2019_IMSA_SportsCar_Championship\n", + "Getting /wiki/United_States\n", + "Getting /wiki/Cadillac\n", + "Getting /wiki/United_States\n", + "Getting /wiki/Ford_Motor_Company\n", + "Getting /wiki/Germany\n", + "Getting /wiki/Mercedes-AMG\n", + "Getting /wiki/2020_IMSA_SportsCar_Championship\n", + "Getting /wiki/United_States\n", + "Getting /wiki/Cadillac\n", + "Getting /wiki/Germany\n", + "Getting /wiki/BMW\n", + "Getting /wiki/Italy\n", + "Getting /wiki/Lamborghini\n", + "Getting /wiki/2021_IMSA_SportsCar_Championship\n", + "Getting /wiki/Japan\n", + "Getting /wiki/Acura\n", + "Getting /wiki/United_States\n", + "Getting /wiki/Chevrolet\n", + "Getting /wiki/Germany\n", + "Getting /wiki/Porsche\n", + "Getting /wiki/2022_IMSA_SportsCar_Championship\n", + "Getting /wiki/Japan\n", + "Getting /wiki/Acura\n", + "Getting /wiki/Germany\n", + "Getting /wiki/Porsche\n", + "Getting /wiki/United_Kingdom\n", + "Getting /wiki/McLaren\n", + "Getting /wiki/2019_IMSA_SportsCar_Championship\n", + "Getting /wiki/Canada\n", + "Getting /wiki/Zacharie_Robichon\n", + "Getting /wiki/2020_IMSA_SportsCar_Championship\n", + "Getting /wiki/United_States\n", + "Getting /wiki/Aaron_Telitz\n", + "Getting /wiki/United_Kingdom\n", + "Getting /wiki/Jack_Hawksworth\n", + "Getting /wiki/2021_IMSA_SportsCar_Championship\n", + "Getting /wiki/Canada\n", + "Getting /wiki/Roman_De_Angelis\n", + "Getting /wiki/United_Kingdom\n", + "Getting /wiki/2022_IMSA_SportsCar_Championship\n", + "Getting /wiki/United_States\n", + "Getting /wiki/Madison_Snow\n", + "Getting /wiki/United_States\n", + "Getting /wiki/Bryan_Sellers\n", + "Getting /wiki/2019_IMSA_SportsCar_Championship\n", + "Getting /wiki/United_States\n", + "Getting /wiki/Michael_Shank\n", + "Getting /wiki/Curb_Agajanian_Performance_Group\n", + "Getting /wiki/2020_IMSA_SportsCar_Championship\n", + "Getting /wiki/Canada\n", + "Getting /wiki/Vasser_Sullivan_Racing\n", + "Getting /wiki/2021_IMSA_SportsCar_Championship\n", + "Getting /wiki/United_States\n", + "Getting /wiki/2022_IMSA_SportsCar_Championship\n", + "Getting /wiki/United_States\n", + "Getting /wiki/Paul_Miller_Racing\n", + "Getting /wiki/2019_IMSA_SportsCar_Championship\n", + "Getting /wiki/Germany\n", + "Getting /wiki/Porsche\n", + "Getting /wiki/2020_IMSA_SportsCar_Championship\n", + "Getting /wiki/Japan\n", + "Getting /wiki/Lexus\n", + "Getting /wiki/2021_IMSA_SportsCar_Championship\n", + "Getting /wiki/Italy\n", + "Getting /wiki/Lamborghini\n", + "Getting /wiki/2022_IMSA_SportsCar_Championship\n", + "Getting /wiki/Germany\n", + "Getting /wiki/BMW\n", + "Getting /wiki/American_Le_Mans_Series\n", + "Getting /wiki/American_Le_Mans_Series\n", + "Getting /wiki/International_Motor_Sports_Association\n", + "Getting /wiki/International_Motor_Sports_Association\n", + "Getting /wiki/International_Motor_Sports_Association\n", + "Getting /wiki/IMSA_GT_Championship\n", + "Getting /wiki/1971_IMSA_GT_Championship\n", + "Getting /wiki/1972_IMSA_GT_Championship\n", + "Getting /wiki/1973_IMSA_GT_Championship\n", + "Getting /wiki/1974_IMSA_GT_Championship\n", + "Getting /wiki/1975_IMSA_GT_Championship\n", + "Getting /wiki/1976_IMSA_GT_Championship\n", + "Getting /wiki/1977_IMSA_GT_Championship\n", + "Getting /wiki/1978_IMSA_GT_Championship\n", + "Getting /wiki/1979_IMSA_GT_Championship\n", + "Getting /wiki/1980_IMSA_GT_Championship\n", + "Getting /wiki/1981_IMSA_GT_Championship\n", + "Getting /wiki/1982_IMSA_GT_Championship\n", + "Getting /wiki/1983_IMSA_GT_Championship\n", + "Getting /wiki/1984_IMSA_GT_Championship\n", + "Getting /wiki/1985_IMSA_GT_Championship\n", + "Getting /wiki/1986_IMSA_GT_Championship\n", + "Getting /wiki/1987_IMSA_GT_Championship\n", + "Getting /wiki/1988_IMSA_GT_Championship\n", + "Getting /wiki/1989_IMSA_GT_Championship\n", + "Getting /wiki/1990_IMSA_GT_Championship\n", + "Getting /wiki/1991_IMSA_GT_Championship\n", + "Getting /wiki/1992_IMSA_GT_Championship\n", + "Getting /wiki/1993_IMSA_GT_Championship\n", + "Getting /wiki/1994_IMSA_GT_Championship\n", + "Getting /wiki/1995_IMSA_GT_Championship\n", + "Getting /wiki/1996_IMSA_GT_Championship\n", + "Getting /wiki/1997_IMSA_GT_Championship\n", + "Getting /wiki/1998_IMSA_GT_Championship\n", + "Getting /wiki/American_Le_Mans_Series\n", + "Getting /wiki/1999_American_Le_Mans_Series\n", + "Getting /wiki/2000_American_Le_Mans_Series\n", + "Getting /wiki/2001_American_Le_Mans_Series\n", + "Getting /wiki/2002_American_Le_Mans_Series\n", + "Getting /wiki/2003_American_Le_Mans_Series\n", + "Getting /wiki/2004_American_Le_Mans_Series\n", + "Getting /wiki/2005_American_Le_Mans_Series\n", + "Getting /wiki/2006_American_Le_Mans_Series\n", + "Getting /wiki/2007_American_Le_Mans_Series\n", + "Getting /wiki/2008_American_Le_Mans_Series\n", + "Getting /wiki/2009_American_Le_Mans_Series\n", + "Getting /wiki/2010_American_Le_Mans_Series\n", + "Getting /wiki/2011_American_Le_Mans_Series\n", + "Getting /wiki/2012_American_Le_Mans_Series\n", + "Getting /wiki/2013_American_Le_Mans_Series\n", + "Getting /wiki/2014_United_SportsCar_Championship\n", + "Getting /wiki/2015_United_SportsCar_Championship\n", + "Getting /wiki/2016_IMSA_SportsCar_Championship\n", + "Getting /wiki/2017_IMSA_SportsCar_Championship\n", + "Getting /wiki/2018_IMSA_SportsCar_Championship\n", + "Getting /wiki/2019_IMSA_SportsCar_Championship\n", + "Getting /wiki/2020_IMSA_SportsCar_Championship\n", + "Getting /wiki/2021_IMSA_SportsCar_Championship\n", + "Getting /wiki/2022_IMSA_SportsCar_Championship\n", + "Getting /wiki/2023_IMSA_SportsCar_Championship\n", + "Getting /wiki/SCCA_Pro_Racing\n", + "Getting /wiki/United_States_Road_Racing_Championship\n", + "Getting /wiki/1998_United_States_Road_Racing_Championship\n", + "Getting /wiki/1999_United_States_Road_Racing_Championship\n", + "Getting /wiki/Grand-Am_Road_Racing\n", + "Getting /wiki/Rolex_Sports_Car_Series\n", + "Getting /wiki/2000_Grand_American_Road_Racing_Championship\n", + "Getting /wiki/2001_Grand_American_Road_Racing_Championship\n", + "Getting /wiki/2002_Rolex_Sports_Car_Series\n", + "Getting /wiki/2003_Rolex_Sports_Car_Series\n", + "Getting /wiki/2004_Rolex_Sports_Car_Series\n", + "Getting /wiki/2005_Rolex_Sports_Car_Series\n", + "Getting /wiki/2006_Rolex_Sports_Car_Series\n", + "Getting /wiki/2007_Rolex_Sports_Car_Series\n", + "Getting /wiki/2008_Rolex_Sports_Car_Series\n", + "Getting /wiki/2009_Rolex_Sports_Car_Series\n", + "Getting /wiki/2010_Rolex_Sports_Car_Series\n", + "Getting /wiki/2011_Rolex_Sports_Car_Series\n", + "Getting /wiki/2012_Rolex_Sports_Car_Series\n", + "Getting /wiki/2013_Rolex_Sports_Car_Series\n", + "Getting /wiki/Jo%C3%A3o_Barbosa\n", + "Getting /wiki/Christian_Fittipaldi\n", + "Getting /wiki/Jo%C3%A3o_Barbosa\n", + "Getting /wiki/Christian_Fittipaldi\n", + "Getting /wiki/Dane_Cameron\n", + "Getting /wiki/Eric_Curran\n", + "Getting /wiki/Jordan_Taylor_(racing_driver)\n", + "Getting /wiki/Ricky_Taylor\n", + "Getting /wiki/Eric_Curran\n", + "Getting /wiki/Felipe_Nasr\n", + "Getting /wiki/Dane_Cameron\n", + "Getting /wiki/Juan_Pablo_Montoya\n", + "Getting /wiki/H%C3%A9lio_Castroneves\n", + "Getting /wiki/Ricky_Taylor\n", + "Getting /wiki/Pipo_Derani\n", + "Getting /wiki/Felipe_Nasr\n", + "Getting /wiki/Tom_Blomqvist\n", + "Getting /wiki/Oliver_Jarvis\n", + "Getting /wiki/Matt_McMurry\n", + "Getting /wiki/Mikkel_Jensen_(racing_driver)\n", + "Getting /wiki/Ben_Keating\n", + "Getting /wiki/Jon_Bennett_(racing_driver)\n", + "Getting /wiki/Colin_Braun\n", + "Getting /wiki/Jon_Bennett_(racing_driver)\n", + "Getting /wiki/Colin_Braun\n", + "Getting /wiki/Jon_Bennett_(racing_driver)\n", + "Getting /wiki/Colin_Braun\n", + "Getting /wiki/Alex_Popow\n", + "Getting /wiki/Renger_van_der_Zande\n", + "Getting /wiki/James_French_(racing_driver)\n", + "Getting /wiki/Patricio_O%27Ward\n", + "Getting /wiki/Kuno_Wittmer\n", + "Getting /wiki/Patrick_Pilet\n", + "Getting /wiki/Oliver_Gavin\n", + "Getting /wiki/Tommy_Milner\n", + "Getting /wiki/Antonio_Garc%C3%ADa_(racing_driver)\n", + "Getting /wiki/Jan_Magnussen\n", + "Getting /wiki/Antonio_Garc%C3%ADa_(racing_driver)\n", + "Getting /wiki/Jan_Magnussen\n", + "Getting /wiki/Earl_Bamber\n", + "Getting /wiki/Laurens_Vanthoor\n", + "Getting /wiki/Antonio_Garc%C3%ADa_(racing_driver)\n", + "Getting /wiki/Jordan_Taylor_(racing_driver)\n", + "Getting /wiki/Antonio_Garc%C3%ADa_(racing_driver)\n", + "Getting /wiki/Jordan_Taylor_(racing_driver)\n", + "Getting /wiki/Matt_Campbell_(racing_driver)\n", + "Getting /wiki/Mathieu_Jaminet\n", + "Getting /wiki/Dane_Cameron\n", + "Getting /wiki/Townsend_Bell\n", + "Getting /wiki/Alessandro_Balzan\n", + "Getting /wiki/Christina_Nielsen\n", + "Getting /wiki/Alessandro_Balzan\n", + "Getting /wiki/Christina_Nielsen\n", + "Getting /wiki/Bryan_Sellers\n", + "Getting /wiki/Madison_Snow\n", + "Getting /wiki/Mario_Farnbacher\n", + "Getting /wiki/Trent_Hindman\n", + "Getting /wiki/Mario_Farnbacher\n", + "Getting /wiki/Matt_McMurry\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Getting /wiki/Zacharie_Robichon\n", + "Getting /wiki/Laurens_Vanthoor\n", + "Getting /wiki/Roman_De_Angelis\n", + "Getting /wiki/List_of_IMSA_SportsCar_Championship_circuits\n", + "Getting /wiki/2023_IMSA_SportsCar_Championship\n", + "Getting /wiki/Daytona_International_Speedway\n", + "Getting /wiki/Sebring_International_Raceway\n", + "Getting /wiki/Grand_Prix_of_Long_Beach\n", + "Getting /wiki/WeatherTech_Raceway_Laguna_Seca\n", + "Getting /wiki/Watkins_Glen_International\n", + "Getting /wiki/Canadian_Tire_Motorsport_Park\n", + "Getting /wiki/Lime_Rock_Park\n", + "Getting /wiki/Road_America\n", + "Getting /wiki/Virginia_International_Raceway\n", + "Getting /wiki/Indianapolis_Motor_Speedway\n", + "Getting /wiki/Road_Atlanta\n", + "Getting /wiki/Circuit_of_the_Americas\n", + "Getting /wiki/Detroit_Grand_Prix_(IndyCar)\n", + "Getting /wiki/Charlotte_Motor_Speedway\n", + "Getting /wiki/Kansas_Speedway\n", + "Getting /wiki/Mid-Ohio_Sports_Car_Course\n", + "Getting /wiki/2023_IMSA_SportsCar_Championship\n", + "Getting /wiki/24_Hours_of_Daytona\n", + "Getting /wiki/12_Hours_of_Sebring\n", + "Getting /wiki/6_Hours_of_Watkins_Glen\n", + "Getting /wiki/Petit_Le_Mans\n", + "Getting /wiki/Grand_Prix_of_Long_Beach#IMSA_WeatherTech_SportsCar_Championship\n", + "Getting /wiki/Motul_Course_de_Monterey\n", + "Getting /wiki/Chevrolet_Grand_Prix\n", + "Getting /wiki/Northeast_Grand_Prix\n", + "Getting /wiki/Road_Race_Showcase_at_Road_America\n", + "Getting /wiki/GT_Challenge_at_VIR\n", + "Getting /wiki/Grand_Prix_of_Atlanta\n", + "Getting /wiki/Lone_Star_Le_Mans\n", + "Getting /wiki/Grand_Prix_of_Charlotte\n", + "Getting /wiki/WeatherTech_240\n", + "Getting /wiki/Detroit_Grand_Prix_(IndyCar)#IMSA_WeatherTech_SportsCar_Championship\n", + "Getting /wiki/Kansas_Speedway#Former_races\n", + "Getting /wiki/Sports_Car_Challenge_at_Mid-Ohio\n", + "Getting /wiki/2020_Cadillac_Grand_Prix_of_Sebring\n", + "Getting /wiki/Crown_Royal_200_at_the_Glen\n", + "Getting /wiki/Fox_Sports_(United_States)\n", + "Getting /wiki/NFL_on_Fox\n", + "Getting /wiki/Fox_NFL_Sunday\n", + "Getting /wiki/MLB_on_Fox\n", + "Getting /wiki/MLB_on_FS1\n", + "Getting /wiki/NASCAR_on_Fox\n", + "Getting /wiki/Soccer_on_Fox_Sports\n", + "Getting /wiki/MLS_on_Fox\n", + "Getting /wiki/Fox_College_Football\n", + "Getting /wiki/Fox_College_Hoops\n", + "Getting /wiki/Boxing_on_Fox\n", + "Getting /wiki/Premier_Boxing_Champions\n", + "Getting /wiki/PBA_on_Fox\n", + "Getting /wiki/WWE_SmackDown\n", + "Getting /wiki/United_States_Football_League_(2022)\n", + "Getting /wiki/Fox_Sports_1\n", + "Getting /wiki/Fox_Sports_2\n", + "Getting /wiki/Big_Ten_Network\n", + "Getting /wiki/Fox_Deportes\n", + "Getting /wiki/Fox_Soccer_Plus\n", + "Getting /wiki/Fox_Sports_Racing\n", + "Getting /wiki/Tubi\n", + "Getting /wiki/Fox_Sports_Radio\n", + "Getting /wiki/Fox_Sports_Interactive_Media\n", + "Getting /wiki/FoxSports.com\n", + "Getting /wiki/The_Best_Damn_Sports_Show_Period\n", + "Getting /wiki/Bowl_Championship_Series\n", + "Getting /wiki/Cotton_Bowl_Classic\n", + "Getting /wiki/FIA_World_Endurance_Championship\n", + "Getting /wiki/Formula_One\n", + "Getting /wiki/NFL_Europe\n", + "Getting /wiki/NHL_on_Fox\n", + "Getting /wiki/Soccer_Night_in_America\n", + "Getting /wiki/Impact!_(TV_series)\n", + "Getting /wiki/Golf_on_Fox\n", + "Getting /wiki/Copa_Am%C3%A9rica_on_United_States_television\n", + "Getting /wiki/Copa_Libertadores\n", + "Getting /wiki/NFLPA_Collegiate_Bowl\n", + "Getting /wiki/UEFA_Champions_League_on_United_States_television\n", + "Getting /wiki/UEFA_Europa_League\n", + "Getting /wiki/AMA_Supercross_Championship\n", + "Getting /wiki/Monster_Jam\n", + "Getting /wiki/International_Motor_Sports_Association\n", + "Getting /wiki/Women%27s_Professional_Soccer_on_television\n", + "Getting /wiki/National_Women%27s_Soccer_League_on_television\n", + "Getting /wiki/American_Basketball_League_(1996%E2%80%931998)_on_television\n", + "Getting /wiki/Premier_League_on_United_States_television\n", + "Getting /wiki/Fox_Soccer\n", + "Getting /wiki/Fox_Sports_(Southeast_Asian_TV_network)#Former_channels\n", + "Getting /wiki/Fox_Footy_Channel\n", + "Getting /wiki/Fox_Sports_(Middle_Eastern_TV_channel)\n", + "Getting /wiki/Fox_Sports_(Southeast_Asian_TV_network)#Former_channels\n", + "Getting /wiki/Fox_Sports_World_Canada\n", + "Getting /wiki/Fox_Sports_Africa\n", + "Getting /wiki/Fox_Sports_Italy\n", + "Getting /wiki/Fox_Sports_(Turkish_TV_channel)\n", + "Getting /wiki/Fox_Sports_(Israeli_TV_channel)\n", + "Getting /wiki/Fox_Sports_%26_Entertainment\n", + "Getting /wiki/JTBC_Golf%26Sports\n", + "Getting /wiki/ESPN_(Netherlands)\n", + "Getting /wiki/Fox_Sports_Eredivisie\n", + "Getting /wiki/Fox_Sports_International_(Netherlands)\n", + "Getting /wiki/Fox_Sports_(Asian_TV_network)\n", + "Getting /wiki/Fox_Sports_(Latin_American_TV_network)\n", + "Getting /wiki/Fox_Sports_(Brazil)\n", + "Getting /wiki/Fox_Sports_Networks\n", + "Getting /wiki/Stadium_College_Sports\n", + "Getting /wiki/Bally_Sports_app\n", + "Getting /wiki/Fuel_TV_(Australia)\n", + "Getting /wiki/Fuel_TV_(Portugal)\n", + "Getting /wiki/Speed_(American_cable_network)\n", + "Getting /wiki/Speed_(Australian_TV_network)\n", + "Getting /wiki/Speed_(TV_channel)#Latin_America\n", + "Getting /wiki/FoxBox_(sports)\n", + "Getting /wiki/FoxTrax\n", + "Getting /wiki/List_of_Fox_Sports_announcers\n", + "Getting /wiki/Fox_Sports_International\n", + "Getting /wiki/Fox_Sports_(Australia)\n", + "Getting /wiki/Fox_Cricket\n", + "Getting /wiki/Fox_Footy\n", + "Getting /wiki/Fox_League\n", + "Getting /wiki/Fox_Sports_News_(Australia)\n", + "Getting /wiki/Fox_Sports_(Argentina)\n", + "Getting /wiki/Fox_Sports_(Mexican_TV_network)\n", + "Getting /wiki/Unity_Sporting_Club\n", + "Already fetched /wiki/Main_Page\n", + "Already fetched /wiki/Main_Page\n", + "Getting /wiki/Wenchi_S.C.\n", + "Getting /wiki/Wenchi_S.C.\n", + "Getting /wiki/Wenchi_S.C.\n", + "Getting /wiki/Wenchi\n", + "Getting /wiki/Brong-Ahafo_Region\n", + "Getting /wiki/Ghana\n", + "Getting /wiki/Ghana_Football_Leagues#Division_Two_League_.28_Brong_Ahafo_Division_Two.29\n", + "Getting /wiki/Kit_(association_football)\n", + "Getting /wiki/Away_colours\n", + "Getting /wiki/Third_jersey\n", + "Getting /wiki/Ghana\n", + "Getting /wiki/Football_team\n", + "Getting /wiki/Wenchi\n", + "Getting /wiki/Brong-Ahafo_Region\n", + "Getting /wiki/Ghana_Football_Leagues#Division_Two_League_.28_Division_Two_League.29\n", + "Getting /wiki/Reading,_Berkshire\n", + "Getting /wiki/Berkshire\n", + "Getting /wiki/England\n", + "Getting /wiki/Ghana_Football_Leagues#Division_Two_League\n", + "Getting /wiki/Ghana_Football_Leagues#Division_Two_League\n", + "Getting /wiki/Ghana_Football_Leagues\n", + "Getting /wiki/FIFA_eligibility_rules\n", + "Getting /wiki/Goalkeeper_(association_football)\n", + "Getting /wiki/Ghana_Football_Association\n", + "Getting /wiki/Defender_(association_football)\n", + "Getting /wiki/Ghana_Football_Association\n", + "Getting /wiki/Alex_Nyarko\n", + "Getting /wiki/Defender_(association_football)\n", + "Getting /wiki/Ghana_Football_Association\n", + "Getting /wiki/Defender_(association_football)\n", + "Getting /wiki/Ghana_Football_Association\n", + "Getting /wiki/Defender_(association_football)\n", + "Getting /wiki/Ghana_Football_Association\n", + "Getting /wiki/Midfielder\n", + "Getting /wiki/Ghana_Football_Association\n", + "Getting /wiki/Midfielder\n", + "Getting /wiki/Ghana_Football_Association\n", + "Getting /wiki/Forward_(association_football)\n", + "Getting /wiki/Ghana_Football_Association\n", + "Getting /wiki/Midfielder\n", + "Getting /wiki/Ghana_Football_Association\n", + "Getting /wiki/Forward_(association_football)\n", + "Getting /wiki/Ghana_Football_Association\n", + "Getting /wiki/Joseph_Gyamfi\n", + "Getting /wiki/Goalkeeper_(association_football)\n", + "Getting /wiki/Ghana_Football_Association\n", + "Getting /wiki/Midfielder\n", + "Getting /wiki/Ghana_Football_Association\n", + "Getting /wiki/Midfielder\n", + "Getting /wiki/Ghana_Football_Association\n", + "Getting /wiki/Midfielder\n", + "Getting /wiki/Ghana_Football_Association\n", + "Getting /wiki/Defender_(association_football)\n", + "Getting /wiki/Ghana_Football_Association\n", + "Getting /wiki/Midfielder\n", + "Getting /wiki/Ghana_Football_Association\n", + "Getting /wiki/Forward_(association_football)\n", + "Getting /wiki/Ghana_Football_Association\n", + "Getting /wiki/Midfielder\n", + "Getting /wiki/Ghana_Football_Association\n", + "Getting /wiki/Midfielder\n", + "Getting /wiki/Ghana_Football_Association\n", + "Getting /wiki/Defender_(association_football)\n", + "Getting /wiki/Ghana_Football_Association\n", + "Getting /wiki/Midfielder\n", + "Getting /wiki/Ghana_Football_Association\n", + "Getting /wiki/Defender_(association_football)\n", + "Getting /wiki/Ghana_Football_Association\n", + "Getting /wiki/Midfielder\n", + "Getting /wiki/Ghana_Football_Association\n", + "Getting /wiki/Forward_(association_football)\n", + "Getting /wiki/Ghana_Football_Association\n", + "Getting /wiki/Midfielder\n", + "Getting /wiki/Ghana_Football_Association\n", + "Getting /wiki/Forward_(association_football)\n", + "Getting /wiki/Nigeria_Football_Federation\n", + "Getting /wiki/Midfielder\n", + "Getting /wiki/Ghana_Football_Association\n", + "Getting /wiki/Forward_(association_football)\n", + "Getting /wiki/Nigeria_Football_Federation\n", + "Getting /wiki/Midfielder\n", + "Getting /wiki/Ghana_Football_Association\n", + "Getting /wiki/Forward_(association_football)\n", + "Getting /wiki/Ghana_Football_Association\n", + "Getting /wiki/Stephen_Owusu\n", + "Getting /wiki/Defender_(association_football)\n", + "Getting /wiki/Ghana_Football_Association\n", + "Getting /wiki/Ghana\n", + "Getting /wiki/Ghana\n", + "Getting /wiki/Ghana\n", + "Getting /wiki/United_Kingdom\n", + "Getting /wiki/Ghana\n", + "Getting /wiki/Ghana\n", + "Getting /wiki/Ghana\n", + "Getting /wiki/Ghana\n", + "Getting /wiki/Ghana\n", + "Getting /wiki/Adelaide\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Already fetched /wiki/Main_Page\n", + "Already fetched /wiki/Main_Page\n", + "Already fetched /wiki/Adelaide\n", + "Already fetched /wiki/Adelaide\n", + "Already fetched /wiki/Adelaide\n", + "Getting /wiki/City_of_Adelaide\n", + "Getting /wiki/Adelaide_(disambiguation)\n", + "Getting /wiki/Kaurna_language\n", + "Getting /wiki/South_Australia\n", + "Getting /wiki/Adelaide_city_centre\n", + "Getting /wiki/Mount_Lofty\n", + "Getting /wiki/UniSA\n", + "Getting /wiki/St_Peter%27s_Cathedral,_Adelaide\n", + "Getting /wiki/North_Terrace,_Adelaide\n", + "Getting /wiki/Elder_Park\n", + "Getting /wiki/University_of_Adelaide\n", + "Getting /wiki/Bonython_Hall\n", + "Getting /wiki/Adelaide_Oval\n", + "Getting /wiki/Victoria_Square,_Adelaide\n", + "Getting /wiki/Geographic_coordinate_system\n", + "Getting /wiki/Geographic_coordinate_system\n", + "Getting /wiki/2021_Australian_census\n", + "Getting /wiki/Time_in_Australia\n", + "Getting /wiki/Australian_Central_Standard_Time\n", + "Getting /wiki/Daylight_saving_time\n", + "Getting /wiki/Australian_Central_Daylight_Time\n", + "Getting /wiki/Melbourne\n", + "Getting /wiki/Canberra\n", + "Getting /wiki/Sydney\n", + "Getting /wiki/Brisbane\n", + "Getting /wiki/Perth\n", + "Getting /wiki/Local_government_areas_of_South_Australia\n", + "Getting /wiki/Local_government_areas_of_South_Australia#Metropolitan_Adelaide\n", + "Getting /wiki/Electorates_of_the_Australian_states_and_territories\n", + "Getting /wiki/Electoral_districts_of_South_Australia\n", + "Getting /wiki/Divisions_of_the_Australian_House_of_Representatives\n", + "Getting /wiki/Divisions_of_the_Australian_House_of_Representatives\n", + "Getting /wiki/Kaurna_language\n", + "Getting /wiki/List_of_Australian_capital_cities\n", + "Getting /wiki/South_Australia\n", + "Getting /wiki/List_of_cities_in_Australia_by_population\n", + "Getting /wiki/Adelaide_Hills\n", + "Getting /wiki/Adelaide_city_centre\n", + "Getting /wiki/Demonym\n", + "Getting /wiki/Native_title_in_Australia#Traditional_owner\n", + "Getting /wiki/Kaurna_people\n", + "Getting /wiki/Kaurna_language\n", + "Getting /wiki/Adelaide_Plains\n", + "Getting /wiki/Fleurieu_Peninsula\n", + "Getting /wiki/Gulf_St_Vincent\n", + "Getting /wiki/Mount_Lofty_Ranges\n", + "Getting /wiki/Adelaide_Hills\n", + "Getting /wiki/Gawler\n", + "Getting /wiki/Sellicks_Beach\n", + "Getting /wiki/Queen_Adelaide\n", + "Getting /wiki/New_town\n", + "Getting /wiki/William_Light\n", + "Getting /wiki/River_Torrens\n", + "Getting /wiki/Australian_National_Heritage_List\n", + "Getting /wiki/Grid_plan\n", + "Getting /wiki/Light%27s_Vision\n", + "Getting /wiki/Adelaide_Parklands\n", + "Getting /wiki/Post-war\n", + "Getting /wiki/South_Australian_wine\n", + "Getting /wiki/Quality_of_life\n", + "Getting /wiki/Adelaide_city_centre\n", + "Getting /wiki/North_Terrace,_Adelaide\n", + "Getting /wiki/King_William_Street,_Adelaide\n", + "Getting /wiki/History_of_Adelaide\n", + "Getting /wiki/Kaurna\n", + "Getting /wiki/Aboriginal_Australian\n", + "Getting /wiki/Adelaide_park_lands\n", + "Getting /wiki/Tandanya_National_Aboriginal_Cultural_Institute\n", + "Getting /wiki/Tarndanyangga\n", + "Getting /wiki/Kaurna_language\n", + "Getting /wiki/Mount_Lofty_Ranges\n", + "Getting /wiki/Mound\n", + "Getting /wiki/Kaurna_language\n", + "Getting /wiki/South_Australia\n", + "Getting /wiki/Governor_of_South_Australia\n", + "Getting /wiki/The_Old_Gum_Tree\n", + "Getting /wiki/Glenelg_North,_South_Australia\n", + "Getting /wiki/Proclamation_Day_(South_Australia)\n", + "Getting /wiki/William_Light\n", + "Getting /wiki/Queen_Adelaide\n", + "Getting /wiki/Edward_Gibbon_Wakefield\n", + "Getting /wiki/Convictism_in_Australia\n", + "Getting /wiki/Brisbane\n", + "Getting /wiki/Hobart\n", + "Getting /wiki/Prison\n", + "Getting /wiki/South_Australian_Register\n", + "Getting /wiki/South_Australia_Police\n", + "Getting /wiki/Henry_Inman_(police_commander)\n", + "Getting /wiki/Adelaide_Gaol\n", + "Getting /wiki/John_Hindmarsh\n", + "Getting /wiki/James_Hurtle_Fisher\n", + "Getting /wiki/Victoria_(Australia)\n", + "Getting /wiki/New_South_Wales\n", + "Getting /wiki/Tasmania\n", + "Getting /wiki/Encounter_Bay\n", + "Getting /wiki/Clare,_South_Australia\n", + "Getting /wiki/George_Gawler\n", + "Getting /wiki/Adelaide_Gaol\n", + "Getting /wiki/Port_Adelaide\n", + "Getting /wiki/George_Edward_Grey\n", + "Getting /wiki/Glen_Osmond,_South_Australia\n", + "Getting /wiki/Murray_River\n", + "Getting /wiki/Francis_Cadell_(explorer)\n", + "Getting /wiki/Self-governing_colony\n", + "Getting /wiki/Secret_ballot\n", + "Getting /wiki/Bicameralism\n", + "Getting /wiki/Thorndon_Park_Reserve\n", + "Getting /wiki/University_of_Adelaide\n", + "Getting /wiki/South_Australian_Art_Gallery\n", + "Getting /wiki/Happy_Valley_Reservoir\n", + "Getting /wiki/Broken_Hill,_New_South_Wales\n", + "Getting /wiki/King_William_Street,_Adelaide\n", + "Getting /wiki/Parliament_House,_Adelaide\n", + "Getting /wiki/Light%27s_Vision\n", + "Getting /wiki/Great_Depression\n", + "Getting /wiki/Secondary_sector_of_industry\n", + "Getting /wiki/Primary_sector_of_industry\n", + "Getting /wiki/Thomas_Playford_IV\n", + "Getting /wiki/Whyalla,_South_Australia\n", + "Getting /wiki/Holden\n", + "Getting /wiki/Chrysler_Australia\n", + "Getting /wiki/Elizabeth,_South_Australia\n", + "Getting /wiki/Mannum%E2%80%93Adelaide_pipeline\n", + "Getting /wiki/River_Murray\n", + "Getting /wiki/Adelaide_International_Airport\n", + "Getting /wiki/West_Beach,_South_Australia\n", + "Getting /wiki/Flinders_University\n", + "Getting /wiki/Flinders_Medical_Centre\n", + "Getting /wiki/Don_Dunstan\n", + "Getting /wiki/LGBT_rights_in_South_Australia\n", + "Getting /wiki/Adelaide_Festival_of_Arts\n", + "Getting /wiki/State_Bank_of_South_Australia\n", + "Getting /wiki/Standard_%26_Poor%27s\n", + "Getting /wiki/Australia_Day\n", + "Getting /wiki/Mike_Rann\n", + "Getting /wiki/Australian_Football_League\n", + "Getting /wiki/Billion\n", + "Getting /wiki/Royal_Adelaide_Hospital\n", + "Getting /wiki/Torrens_Building\n", + "Getting /wiki/South_Australian_Film_Corporation\n", + "Getting /wiki/Adelaide_Desalination_Plant\n", + "Getting /wiki/Water_supply\n", + "Getting /wiki/Adelaide_Festival\n", + "Getting /wiki/Adelaide_Fringe_Festival\n", + "Getting /wiki/Womadelaide\n", + "Getting /wiki/COVID-19_pandemic_in_South_Australia\n", + "Getting /wiki/COVID-19_pandemic_in_Victoria\n", + "Getting /wiki/Gawler,_South_Australia\n", + "Getting /wiki/Sellicks_Beach,_South_Australia\n", + "Getting /wiki/Mount_Lofty\n", + "Getting /wiki/Burra,_South_Australia\n", + "Getting /wiki/Temperate_Grassland_of_South_Australia\n", + "Getting /wiki/European_Space_Agency\n", + "Getting /wiki/Sentinel-2\n", + "Getting /wiki/Cleland_National_Park\n", + "Getting /wiki/Belair_National_Park\n", + "Getting /wiki/Onkaparinga_River_National_Park\n", + "Getting /wiki/Happy_Valley_Reservoir\n", + "Getting /wiki/Mount_Bold_Reservoir\n", + "Getting /wiki/Darlington,_South_Australia\n", + "Getting /wiki/Adelaide_Hills\n", + "Getting /wiki/Mount_Lofty_Ranges\n", + "Getting /wiki/Siltstone\n", + "Getting /wiki/Dolomite_(rock)\n", + "Getting /wiki/Quartzite\n", + "Getting /wiki/Neoproterozoic\n", + "Getting /wiki/Cambrian\n", + "Getting /wiki/Adelaide_Superbasin\n", + "Getting /wiki/Adelaide_Plains\n", + "Getting /wiki/Tertiary\n", + "Getting /wiki/Quaternary\n", + "Getting /wiki/Alluvial_fan\n", + "Getting /wiki/Foothills\n", + "Getting /wiki/Marine_transgression\n", + "Getting /wiki/Pleistocene\n", + "Getting /wiki/Holocene\n", + "Getting /wiki/William_Light\n", + "Getting /wiki/William_Light\n", + "Getting /wiki/Montefiore_Hill\n", + "Getting /wiki/Grid_plan\n", + "Getting /wiki/Adelaide_city_centre\n", + "Getting /wiki/Adelaide_Parklands\n", + "Getting /wiki/Ancient_Greece\n", + "Getting /wiki/Italian_Renaissance\n", + "Already fetched /wiki/Philadelphia\n", + "Getting /wiki/Savannah,_Georgia\n", + "Getting /wiki/Cardinal_direction\n", + "Getting /wiki/Ring_road\n", + "Getting /wiki/City_Ring_Route,_Adelaide\n", + "Getting /wiki/A21_road_(Australia)\n", + "Getting /wiki/A3_road_(South_Australia)\n", + "Getting /wiki/South_Road,_Adelaide\n", + "Getting /wiki/A16_highway_(Australia)\n", + "Getting /wiki/A17_highway_(Australia)\n", + "Getting /wiki/Grand_Junction_Road\n", + "Getting /wiki/Portrush_Road\n", + "Getting /wiki/Cross_Road,_Adelaide\n", + "Getting /wiki/South_Road,_Adelaide\n", + "Getting /wiki/Elizabeth,_South_Australia\n", + "Getting /wiki/Urban_sprawl\n", + "Getting /wiki/South_Eastern_Freeway\n", + "Getting /wiki/City_of_Onkaparinga\n", + "Getting /wiki/Southern_Expressway_(Australia)\n", + "Getting /wiki/O-Bahn_Busway\n", + "Getting /wiki/Tea_Tree_Gully,_South_Australia\n", + "Getting /wiki/Golden_Grove,_South_Australia\n", + "Getting /wiki/Metropolitan_Adelaide_Transport_Study\n", + "Getting /wiki/Controlled-access_highway\n", + "Getting /wiki/Steele_Hall_(Australian_politician)\n", + "Getting /wiki/Australian_Labor_Party\n", + "Getting /wiki/Don_Dunstan\n", + "Getting /wiki/Liberal_party_of_Australia\n", + "Getting /wiki/David_Tonkin\n", + "Getting /wiki/Government_of_South_Australia\n", + "Getting /wiki/Transport-oriented_development\n", + "Getting /wiki/Clipsal_site_development\n", + "Getting /wiki/Bowden,_South_Australia\n", + "Getting /wiki/Adelaide_city_centre\n", + "Getting /wiki/Grid_plan\n", + "Getting /wiki/North_Terrace,_Adelaide\n", + "Getting /wiki/Pulteney_Street,_Adelaide\n", + "Getting /wiki/Bonython_Hall\n", + "Getting /wiki/Victoria_Square,_Adelaide\n", + "Getting /wiki/Grid_plan\n", + "Getting /wiki/Australian_residential_architectural_styles\n", + "Getting /wiki/North_Terrace,_Adelaide\n", + "Getting /wiki/Corrugated_iron\n", + "Getting /wiki/Colorbond\n", + "Getting /wiki/Brick_veneer\n", + "Getting /wiki/Framing_(construction)\n", + "Getting /wiki/Steel_frame#Cold-formed_steel_frames\n", + "Getting /wiki/Concrete_slab\n", + "Getting /wiki/Foundation_(engineering)\n", + "Getting /wiki/Gyprock\n", + "Getting /wiki/Shrink%E2%80%93swell_capacity\n", + "Getting /wiki/South_Australian_Housing_Trust\n", + "Getting /wiki/Carclew,_North_Adelaide\n", + "Getting /wiki/North_Adelaide\n", + "Getting /wiki/Bluestone\n", + "Getting /wiki/Climate_of_Adelaide\n", + "Getting /wiki/Mediterranean_climate\n", + "Getting /wiki/K%C3%B6ppen_climate_classification\n", + "Getting /wiki/Precipitation\n", + "Getting /wiki/Frost\n", + "Getting /wiki/Wind_chill\n", + "Getting /wiki/Apparent_temperature\n", + "Getting /wiki/Mount_Lofty\n", + "Getting /wiki/Climate_of_Adelaide#Climate_data_and_extremes\n", + "Getting /wiki/Relative_humidity\n", + "Getting /wiki/Sunshine_duration\n", + "Getting /wiki/Sunshine_duration\n", + "Getting /wiki/Bureau_of_Meteorology\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Getting /wiki/Rymill_Park,_Adelaide\n", + "Getting /wiki/Global_Liveability_Ranking\n", + "Getting /wiki/The_Economist_Intelligence_Unit\n", + "Getting /wiki/Auckland\n", + "Getting /wiki/Osaka\n", + "Getting /wiki/Most_liveable_city\n", + "Getting /wiki/Property_Council_of_Australia\n", + "Getting /wiki/Government_of_South_Australia\n", + "Getting /wiki/Parliament_House,_Adelaide\n", + "Getting /wiki/Government_of_South_Australia\n", + "Getting /wiki/Bicameral\n", + "Getting /wiki/Parliament_of_South_Australia\n", + "Getting /wiki/Lower_house\n", + "Getting /wiki/South_Australian_House_of_Assembly\n", + "Getting /wiki/Upper_house\n", + "Getting /wiki/South_Australian_Legislative_Council\n", + "Getting /wiki/South_Australian_state_elections\n", + "Getting /wiki/2022_South_Australian_state_election\n", + "Getting /wiki/Government_of_South_Australia\n", + "Getting /wiki/City_of_Adelaide\n", + "Getting /wiki/Adelaide_City_Council\n", + "Getting /wiki/Local_government_areas_of_South_Australia\n", + "Getting /wiki/Local_Government_Areas_of_South_Australia\n", + "Getting /wiki/City_of_Adelaide\n", + "Getting /wiki/Adelaide_city_centre\n", + "Getting /wiki/North_Adelaide\n", + "Getting /wiki/Adelaide_Parklands\n", + "Getting /wiki/James_Hurtle_Fisher\n", + "Getting /wiki/List_of_Mayors_and_Lord_Mayors_of_Adelaide\n", + "Getting /wiki/Sandy_Verschoor\n", + "Getting /wiki/List_of_cities_in_Australia_by_population\n", + "Getting /wiki/Mawson_Lakes,_South_Australia\n", + "Getting /wiki/Mainland_China\n", + "Getting /wiki/Paifang\n", + "Getting /wiki/Chinatown,_Adelaide\n", + "Getting /wiki/Adelaide_Central_Market\n", + "Getting /wiki/English_Australians\n", + "Getting /wiki/Australians\n", + "Getting /wiki/Scottish_Australians\n", + "Getting /wiki/Irish_Australians\n", + "Getting /wiki/Italian_Australians\n", + "Getting /wiki/German_Australians\n", + "Getting /wiki/Chinese_Australians\n", + "Getting /wiki/Indian_Australians\n", + "Getting /wiki/Greek_Australian\n", + "Getting /wiki/Vietnamese_Australians\n", + "Getting /wiki/Aboriginal_Australians\n", + "Getting /wiki/Dutch_Australians\n", + "Getting /wiki/Filipino_Australians\n", + "Getting /wiki/Polish_Australians\n", + "Getting /wiki/Mainland_China\n", + "Getting /wiki/Newton,_South_Australia\n", + "Getting /wiki/Payneham,_South_Australia\n", + "Getting /wiki/Campbelltown,_South_Australia\n", + "Getting /wiki/Torrensville,_South_Australia\n", + "Getting /wiki/West_Lakes,_South_Australia\n", + "Getting /wiki/Fulham,_South_Australia\n", + "Getting /wiki/Greek_Australian\n", + "Getting /wiki/Italian_Australian\n", + "Getting /wiki/Hindmarsh,_South_Australia\n", + "Getting /wiki/Vietnamese_Australian\n", + "Getting /wiki/Woodville,_South_Australia\n", + "Getting /wiki/Kilkenny,_South_Australia\n", + "Getting /wiki/Pennington,_South_Australia\n", + "Getting /wiki/Mansfield_Park,_South_Australia\n", + "Getting /wiki/Athol_Park,_South_Australia\n", + "Getting /wiki/Parafield_Gardens,_South_Australia\n", + "Getting /wiki/Pooraka,_South_Australia\n", + "Getting /wiki/Indian_Australian\n", + "Getting /wiki/Sri_Lankan_Australian\n", + "Getting /wiki/Blair_Athol,_South_Australia\n", + "Getting /wiki/Kilburn,_South_Australia\n", + "Getting /wiki/Enfield,_South_Australia\n", + "Getting /wiki/Plympton,_South_Australia\n", + "Getting /wiki/Park_Holme,_South_Australia\n", + "Getting /wiki/Kurralta_Park,_South_Australia\n", + "Getting /wiki/Para_Hills,_South_Australia\n", + "Getting /wiki/Salisbury,_South_Australia\n", + "Getting /wiki/Ingle_Farm,_South_Australia\n", + "Getting /wiki/Blair_Athol,_South_Australia\n", + "Getting /wiki/Findon,_South_Australia\n", + "Getting /wiki/West_Croydon,_South_Australia\n", + "Getting /wiki/Seaton,_South_Australia\n", + "Getting /wiki/Afghan_Australian\n", + "Getting /wiki/Chinese_Australian\n", + "Getting /wiki/Kensington_Gardens,_South_Australia\n", + "Getting /wiki/Greenacres,_South_Australia\n", + "Getting /wiki/Modbury,_South_Australia\n", + "Getting /wiki/Golden_Grove,_South_Australia\n", + "Getting /wiki/Mawson_Lakes,_South_Australia\n", + "Getting /wiki/University_of_South_Australia\n", + "Getting /wiki/Indigenous_Australians\n", + "Getting /wiki/Aboriginal_Australians\n", + "Getting /wiki/Torres_Strait_Islanders\n", + "Getting /wiki/Australian_English\n", + "Getting /wiki/Standard_Mandarin\n", + "Getting /wiki/Cantonese\n", + "Getting /wiki/Kaurna_language\n", + "Getting /wiki/Wayville,_South_Australia\n", + "Getting /wiki/Roman_Catholic_Church_in_Australia\n", + "Getting /wiki/Anglican_Church_of_Australia\n", + "Getting /wiki/Uniting_Church_in_Australia\n", + "Getting /wiki/Eastern_Orthodox_Church\n", + "Getting /wiki/Orthodox_Judaism\n", + "Getting /wiki/Reform_Judaism\n", + "Getting /wiki/Afghan_(Australia)\n", + "Getting /wiki/The_Ghan\n", + "Getting /wiki/Central_Adelaide_Mosque\n", + "Getting /wiki/Marree_Mosque\n", + "Getting /wiki/Royal_Adelaide_Hospital\n", + "Getting /wiki/Australian_Bureau_of_Statistics\n", + "Getting /wiki/Adelaide_Hills_wine_region\n", + "Getting /wiki/General_Motors_Holden\n", + "Getting /wiki/Elizabeth,_South_Australia\n", + "Getting /wiki/State_Bank_of_South_Australia\n", + "Getting /wiki/News_Corporation_(1980%E2%80%932013)\n", + "Getting /wiki/Rupert_Murdoch\n", + "Getting /wiki/Santos_Limited\n", + "Getting /wiki/Coopers_Brewery\n", + "Getting /wiki/Harris_Scarfe\n", + "Getting /wiki/Australian_Space_Agency\n", + "Getting /wiki/Collins-class_submarine\n", + "Getting /wiki/Submarine\n", + "Getting /wiki/HMAS_Rankin_(SSG_78)\n", + "Getting /wiki/Pearl_Harbor\n", + "Getting /wiki/Defence_Science_and_Technology_Organisation\n", + "Getting /wiki/BAE_Systems_Australia\n", + "Getting /wiki/RAAF_Base_Edinburgh\n", + "Getting /wiki/Technology_Park,_Adelaide\n", + "Getting /wiki/ASC_Pty_Ltd\n", + "Getting /wiki/Osborne,_South_Australia\n", + "Getting /wiki/Technology_Park,_Adelaide\n", + "Getting /wiki/Collins-class_submarine\n", + "Getting /wiki/Royal_Australian_Navy\n", + "Getting /wiki/Hobart-class_destroyer\n", + "Getting /wiki/Local_government_in_Australia\n", + "Getting /wiki/South_Australia#Education\n", + "Getting /wiki/Barr_Smith_Library\n", + "Getting /wiki/University_of_Adelaide\n", + "Getting /wiki/Government_of_South_Australia\n", + "Getting /wiki/List_of_Australian_Nobel_laureates#Australian_laureates_by_birthplace\n", + "Getting /wiki/William_Lawrence_Bragg\n", + "Getting /wiki/Howard_Florey\n", + "Getting /wiki/Robin_Warren\n", + "Getting /wiki/St_Peter%27s_College,_Adelaide\n", + "Getting /wiki/University_of_Adelaide\n", + "Getting /wiki/List_of_schools_in_South_Australia\n", + "Getting /wiki/Australian_Curriculum\n", + "Getting /wiki/South_Australian_Certificate_of_Education\n", + "Getting /wiki/Vocational_education\n", + "Getting /wiki/International_Baccalaureate\n", + "Getting /wiki/IB_Primary_Years_Programme\n", + "Getting /wiki/IB_Middle_Years_Programme\n", + "Getting /wiki/IB_Diploma_Programme\n", + "Getting /wiki/Marden,_South_Australia\n", + "Getting /wiki/Victoria_Square,_Adelaide\n", + "Getting /wiki/Flinders_University_of_South_Australia\n", + "Getting /wiki/University_of_Adelaide\n", + "Getting /wiki/University_of_South_Australia\n", + "Getting /wiki/Torrens_University_Australia\n", + "Getting /wiki/Laureate_International_Universities\n", + "Getting /wiki/Victoria_Square,_Adelaide\n", + "Getting /wiki/Carnegie_Mellon_University\n", + "Getting /wiki/Heinz_College_Australia\n", + "Getting /wiki/University_College_London\n", + "Getting /wiki/University_of_Adelaide\n", + "Getting /wiki/Group_of_Eight_(Australian_universities)\n", + "Getting /wiki/University_of_South_Australia\n", + "Getting /wiki/Whyalla\n", + "Getting /wiki/Mount_Gambier\n", + "Getting /wiki/Flinders_University\n", + "Getting /wiki/Bedford_Park,_South_Australia\n", + "Getting /wiki/Flinders_Medical_Centre\n", + "Getting /wiki/Tonsley\n", + "Getting /wiki/Adelaide_College_of_Divinity\n", + "Getting /wiki/Brooklyn_Park,_South_Australia\n", + "Getting /wiki/TAFE_South_Australia\n", + "Getting /wiki/Royal_Institution_of_Australia\n", + "Getting /wiki/Royal_Institution\n", + "Getting /wiki/North_Terrace,_Adelaide\n", + "Getting /wiki/SA_Pathology\n", + "Getting /wiki/Hanson_Institute\n", + "Getting /wiki/National_Wine_Centre_of_Australia\n", + "Getting /wiki/South_Australian_Health_and_Medical_Research_Institute\n", + "Getting /wiki/Royal_Adelaide_Hospital\n", + "Getting /wiki/Waite_Research_Precinct\n", + "Getting /wiki/South_Australian_Research_and_Development_Institute\n", + "Getting /wiki/Australian_Wine_Research_Institute\n", + "Getting /wiki/Australian_Centre_for_Plant_Functional_Genomics\n", + "Getting /wiki/CSIRO\n", + "Getting /wiki/Glenside,_South_Australia\n", + "Getting /wiki/West_Beach,_South_Australia\n", + "Getting /wiki/Edinburgh,_South_Australia\n", + "Getting /wiki/Defence_Science_and_Technology_Organisation\n", + "Getting /wiki/BAE_Systems\n", + "Getting /wiki/Lockheed_Martin\n", + "Getting /wiki/Technology_Park_Adelaide\n", + "Getting /wiki/Mawson_Lakes,_South_Australia\n", + "Getting /wiki/Optus\n", + "Getting /wiki/Raytheon\n", + "Getting /wiki/Topcon\n", + "Getting /wiki/Thebarton,_South_Australia\n", + "Getting /wiki/Basil_Hetzel\n", + "Getting /wiki/Woodville,_South_Australia\n", + "Getting /wiki/Queen_Elizabeth_Hospital,_Adelaide\n", + "Getting /wiki/The_Joanna_Briggs_Institute\n", + "Getting /wiki/University_of_Adelaide\n", + "Getting /wiki/University_of_South_Australia\n", + "Getting /wiki/Flinders_University\n", + "Getting /wiki/Art_Gallery_of_South_Australia\n", + "Getting /wiki/South_Australia#Cultural_life\n", + "Getting /wiki/Department_of_the_Premier_and_Cabinet_(South_Australia)#Arts_and_culture\n", + "Getting /wiki/List_of_festivals_in_Australia#South_Australia\n", + "Getting /wiki/Elder_Park\n", + "Getting /wiki/British_colonisation_of_South_Australia\n", + "Getting /wiki/German_Australians#Old_Lutherans\n", + "Getting /wiki/Vine_cuttings\n", + "Getting /wiki/Barossa_Valley\n", + "Getting /wiki/Royal_Adelaide_Show\n", + "Getting /wiki/Agricultural_show\n", + "Getting /wiki/State_fair\n", + "Getting /wiki/Adelaide_Showground\n", + "Getting /wiki/Adelaide_Festival_of_Arts\n", + "Getting /wiki/Adelaide_Fringe\n", + "Getting /wiki/Adelaide_Festival_Centre\n", + "Getting /wiki/Don_Dunstan\n", + "Getting /wiki/South_Australian_Film_Corporation\n", + "Getting /wiki/State_Opera_of_South_Australia\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Getting /wiki/Adelaide_Writers%27_Week\n", + "Getting /wiki/WOMADelaide\n", + "Getting /wiki/Adelaide_Cabaret_Festival\n", + "Getting /wiki/Adelaide_Festival_of_Ideas\n", + "Getting /wiki/Adelaide_Film_Festival\n", + "Getting /wiki/Feast_Festival\n", + "Getting /wiki/LGBT_culture\n", + "Getting /wiki/Tasting_Australia\n", + "Getting /wiki/Illuminate_Adelaide\n", + "Getting /wiki/Adelaide_500\n", + "Getting /wiki/Ghil%27ad_Zuckermann\n", + "Getting /wiki/Adelaide_Language_Festival\n", + "Getting /wiki/Sch%C3%BCtzenfest_(Adelaide)\n", + "Getting /wiki/Glendi\n", + "Getting /wiki/Adelaide_Christmas_Pageant\n", + "Getting /wiki/Santa_Claus_parade\n", + "Getting /wiki/Adelaide_Botanic_Garden\n", + "Getting /wiki/North_Terrace,_Adelaide\n", + "Getting /wiki/Art_Gallery_of_South_Australia\n", + "Getting /wiki/South_Australian_Museum\n", + "Getting /wiki/State_Library_of_South_Australia\n", + "Getting /wiki/Adelaide_Botanic_Garden\n", + "Getting /wiki/National_Wine_Centre\n", + "Getting /wiki/Tandanya_National_Aboriginal_Cultural_Institute\n", + "Getting /wiki/East_End,_Adelaide\n", + "Getting /wiki/Migration_Museum,_Adelaide\n", + "Getting /wiki/Lion_Arts_Centre\n", + "Getting /wiki/ACE_Open\n", + "Getting /wiki/Dance_Hub_SA\n", + "Getting /wiki/Mercury_Cinema\n", + "Getting /wiki/JamFactory\n", + "Getting /wiki/Adelaide_Town_Hall\n", + "Getting /wiki/Adelaide_Entertainment_Centre\n", + "Getting /wiki/State_Theatre_Company_of_South_Australia\n", + "Getting /wiki/Adelaide_Entertainment_Centre\n", + "Getting /wiki/Adelaide_Oval\n", + "Getting /wiki/Memorial_Drive_Park\n", + "Getting /wiki/Thebarton_Theatre\n", + "Getting /wiki/Adelaide_Town_Hall\n", + "Getting /wiki/Her_Majesty%27s_Theatre\n", + "Getting /wiki/Queen%27s_Theatre,_Adelaide\n", + "Getting /wiki/Lion_Arts_Factory\n", + "Getting /wiki/The_Gov\n", + "Getting /wiki/Hindmarsh,_South_Australia\n", + "Getting /wiki/Thebarton_Theatre\n", + "Getting /wiki/Music_of_Adelaide\n", + "Getting /wiki/Lonely_Planet\n", + "Getting /wiki/City_of_Music_(UNESCO)\n", + "Getting /wiki/UNESCO_Creative_Cities_Network\n", + "Getting /wiki/WOMAD\n", + "Getting /wiki/Creamfields_Australia\n", + "Getting /wiki/St_Jerome%27s_Laneway_Festival\n", + "Getting /wiki/Groovin%27_the_Moo\n", + "Getting /wiki/Adelaide_Symphony_Orchestra\n", + "Getting /wiki/Adelaide_Youth_Orchestra\n", + "Getting /wiki/The_Angels_(Australian_band)\n", + "Getting /wiki/Atlas_Genius\n", + "Getting /wiki/Cold_Chisel\n", + "Getting /wiki/The_Superjesus\n", + "Getting /wiki/Wolf_%26_Cub\n", + "Getting /wiki/The_Audreys\n", + "Getting /wiki/I_Killed_The_Prom_Queen\n", + "Getting /wiki/Double_Dragon_(band)\n", + "Getting /wiki/Hilltop_Hoods\n", + "Getting /wiki/Sia\n", + "Getting /wiki/Orianthi\n", + "Getting /wiki/Guy_Sebastian\n", + "Getting /wiki/Wes_Carr\n", + "Getting /wiki/Australian_Pink_Floyd_Show\n", + "Getting /wiki/Jimmy_Barnes\n", + "Getting /wiki/Elizabeth,_South_Australia\n", + "Getting /wiki/Rostrevor_College\n", + "Getting /wiki/Australian_Idol\n", + "Getting /wiki/Golden_Grove,_South_Australia\n", + "Getting /wiki/Free-to-air\n", + "Getting /wiki/ABS_(TV_station)\n", + "Getting /wiki/ABC_HD_(Australia)\n", + "Getting /wiki/High-definition_television\n", + "Getting /wiki/ABC_TV_Plus\n", + "Getting /wiki/ABC_Me\n", + "Getting /wiki/ABC_News_(TV_channel)\n", + "Getting /wiki/SBS_(Australian_TV_channel)\n", + "Getting /wiki/SBS_HD\n", + "Getting /wiki/High-definition_television\n", + "Getting /wiki/SBS_World_Movies\n", + "Getting /wiki/SBS_Viceland_HD\n", + "Getting /wiki/SBS_Food\n", + "Getting /wiki/National_Indigenous_Television\n", + "Getting /wiki/SBS_WorldWatch\n", + "Getting /wiki/SAS_(TV_station)\n", + "Getting /wiki/7HD\n", + "Getting /wiki/7Two\n", + "Getting /wiki/7mate\n", + "Getting /wiki/7Bravo\n", + "Getting /wiki/7flix\n", + "Getting /wiki/Racing.com\n", + "Getting /wiki/NWS_(TV_station)\n", + "Getting /wiki/9HD\n", + "Getting /wiki/9Gem\n", + "Getting /wiki/9Go!\n", + "Getting /wiki/9Life\n", + "Getting /wiki/9Gem_HD\n", + "Getting /wiki/9Rush\n", + "Getting /wiki/Extra_(Australian_TV_channel)\n", + "Getting /wiki/ADS_(TV_station)\n", + "Getting /wiki/10_HD\n", + "Getting /wiki/10_Bold\n", + "Getting /wiki/10_Peach\n", + "Getting /wiki/10_Shake\n", + "Getting /wiki/TVSN\n", + "Getting /wiki/Channel_44_(Adelaide)\n", + "Getting /wiki/High-definition_television\n", + "Getting /wiki/Standard-definition_television\n", + "Getting /wiki/Mount_Lofty\n", + "Getting /wiki/Grenfell_Street\n", + "Getting /wiki/Elizabeth_Downs,_South_Australia\n", + "Getting /wiki/Australian_Broadcasting_Corporation\n", + "Getting /wiki/ABS_(TV_station)\n", + "Getting /wiki/Special_Broadcasting_Service\n", + "Getting /wiki/Seven_Network\n", + "Getting /wiki/Network_Ten\n", + "Getting /wiki/SAS-7\n", + "Getting /wiki/ADS-10\n", + "Getting /wiki/NWS-9\n", + "Getting /wiki/Nine_Network\n", + "Getting /wiki/Community_television_in_Australia\n", + "Getting /wiki/Channel_44_(Adelaide)\n", + "Getting /wiki/Analogue_television\n", + "Getting /wiki/Foxtel\n", + "Getting /wiki/Pay_TV\n", + "Getting /wiki/Stan_(company)\n", + "Getting /wiki/Fetch_TV\n", + "Getting /wiki/Netflix\n", + "Getting /wiki/Disney%2B\n", + "Getting /wiki/Kayo_Sports\n", + "Getting /wiki/List_of_radio_stations_in_Australia#Adelaide\n", + "Getting /wiki/DAB%2B\n", + "Getting /wiki/Simulcast\n", + "Getting /wiki/Sport_in_South_Australia\n", + "Getting /wiki/Adelaide_Oval\n", + "Getting /wiki/Australian_Rules_football\n", + "Getting /wiki/Cricket\n", + "Getting /wiki/Hindmarsh_Stadium\n", + "Getting /wiki/Adelaide_United\n", + "Getting /wiki/Australian_Rules_football\n", + "Getting /wiki/Association_football\n", + "Getting /wiki/Cricket\n", + "Getting /wiki/Netball\n", + "Getting /wiki/Basketball\n", + "Getting /wiki/Australian_Football_League\n", + "Getting /wiki/Adelaide_Football_Club\n", + "Getting /wiki/Port_Adelaide_Football_Club\n", + "Getting /wiki/A-League\n", + "Getting /wiki/Adelaide_United\n", + "Getting /wiki/Australian_rules_football\n", + "Getting /wiki/South_Australian_National_Football_League\n", + "Getting /wiki/South_Australian_National_Football_League\n", + "Getting /wiki/South_Australian_National_Football_League\n", + "Getting /wiki/Adelaide_Oval\n", + "Getting /wiki/Football_Park\n", + "Getting /wiki/Adelaide_Crows\n", + "Getting /wiki/Port_Adelaide_Football_Club\n", + "Getting /wiki/Adelaide_Oval\n", + "Getting /wiki/South_Australia_cricket_team\n", + "Getting /wiki/Adelaide_Strikers\n", + "Getting /wiki/Adelaide_Oval\n", + "Getting /wiki/One_Day_International\n", + "Getting /wiki/Memorial_Drive_Park\n", + "Getting /wiki/Adelaide_United\n", + "Getting /wiki/Hindmarsh_Stadium\n", + "Getting /wiki/Soccer-specific_stadium\n", + "Getting /wiki/Adelaide_City_FC\n", + "Getting /wiki/West_Adelaide_SC\n", + "Getting /wiki/National_Soccer_League\n", + "Getting /wiki/Adelaide_derby\n", + "Getting /wiki/National_Premier_Leagues_South_Australia\n", + "Getting /wiki/Rugby_league\n", + "Getting /wiki/New_South_Wales_Rugby_League\n", + "Getting /wiki/Adelaide_Rams\n", + "Getting /wiki/Super_League_(Australia)\n", + "Getting /wiki/1997_Super_League_(Australia)_season\n", + "Getting /wiki/National_Rugby_League\n", + "Getting /wiki/1998_NRL_season\n", + "Getting /wiki/Australian_Rugby_League\n", + "Getting /wiki/Super_League_war\n", + "Getting /wiki/News_Limited\n", + "Getting /wiki/1999_NRL_season\n", + "Getting /wiki/Adelaide_36ers\n", + "Getting /wiki/National_Basketball_League_(Australasia)\n", + "Getting /wiki/Adelaide_Lightning\n", + "Getting /wiki/Women%27s_National_Basketball_League\n", + "Getting /wiki/Titanium_Security_Arena\n", + "Getting /wiki/Netball\n", + "Getting /wiki/Adelaide_Thunderbirds\n", + "Getting /wiki/Suncorp_Super_Netball\n", + "Getting /wiki/Priceline_Stadium\n", + "Getting /wiki/Tour_Down_Under\n", + "Getting /wiki/UCI_World_Tour\n", + "Getting /wiki/Tour_Down_Under\n", + "Getting /wiki/Bicycle_racing\n", + "Getting /wiki/Michael_Turtur\n", + "Getting /wiki/Summer_Olympics\n", + "Getting /wiki/Gold_medal\n", + "Getting /wiki/Cycling_at_the_1984_Summer_Olympics_%E2%80%93_Men%27s_team_pursuit\n", + "Getting /wiki/1984_Summer_Olympics\n", + "Getting /wiki/UCI_ProTour\n", + "Getting /wiki/Australian_Baseball_League\n", + "Getting /wiki/Adelaide_Giants\n", + "Getting /wiki/Norwood_Oval\n", + "Getting /wiki/Diamond_Sports_Stadium\n", + "Getting /wiki/Adelaide_International_Airport\n", + "Getting /wiki/Adelaide_Adrenaline\n", + "Getting /wiki/Australian_Ice_Hockey_League\n", + "Getting /wiki/Ice_Arena_(Adelaide)\n", + "Getting /wiki/Australian_Grand_Prix\n", + "Getting /wiki/Formula_One\n", + "Getting /wiki/Adelaide_Street_Circuit\n", + "Getting /wiki/Victoria_Park,_Adelaide\n", + "Getting /wiki/Adelaide_500\n", + "Getting /wiki/V8_Supercar\n", + "Getting /wiki/Rallying\n", + "Getting /wiki/Victoria_Park,_Adelaide\n", + "Getting /wiki/Cheltenham_Park_Racecourse\n", + "Getting /wiki/Morphettville_Racecourse\n", + "Getting /wiki/South_Australian_Jockey_Club\n", + "Getting /wiki/Globe_Derby_Park_(harness_racing)\n", + "Getting /wiki/Harness_racing\n", + "Getting /wiki/Adelaide_Showgrounds\n", + "Getting /wiki/Greyhound_Park\n", + "Getting /wiki/Greyhound_racing\n", + "Getting /wiki/World_Solar_Challenge\n", + "Getting /wiki/Dirt_track_racing\n", + "Getting /wiki/Adelaide_Motorsport_Park\n", + "Getting /wiki/Adelaide_International_Raceway\n", + "Getting /wiki/Virginia,_South_Australia\n", + "Getting /wiki/Rowley_Park_Speedway\n", + "Getting /wiki/Gillman_Speedway\n", + "Getting /wiki/Gillman,_South_Australia\n", + "Getting /wiki/Motorcycle_speedway\n", + "Getting /wiki/Sidecar_speedway\n", + "Getting /wiki/Sidewinders_Speedway\n", + "Getting /wiki/Wingfield,_South_Australia\n", + "Getting /wiki/Tailem_Bend\n", + "Getting /wiki/The_Bend_Motorsport_Park\n", + "Getting /wiki/FIA\n", + "Getting /wiki/Great_Southern_Slam\n", + "Getting /wiki/Roller_derby\n", + "Getting /wiki/Transport_in_Adelaide\n", + "Getting /wiki/Adelaide_Metro\n", + "Getting /wiki/Adelaide_Metro\n", + "Getting /wiki/O-Bahn_Busway\n", + "Getting /wiki/Railways_in_Adelaide\n", + "Getting /wiki/Hindmarsh,_South_Australia\n", + "Getting /wiki/Glenelg_tram_line\n", + "Getting /wiki/O-Bahn_Busway\n", + "Getting /wiki/Rymill_Park\n", + "Getting /wiki/South_Eastern_Freeway\n", + "Getting /wiki/Murray_Bridge,_South_Australia\n", + "Getting /wiki/Tailem_Bend\n", + "Getting /wiki/Southern_Expressway_(Australia)\n", + "Getting /wiki/South_Road\n", + "Getting /wiki/North-South_Motorway\n", + "Getting /wiki/South_Road\n", + "Getting /wiki/Southern_Expressway_(Adelaide)\n", + "Getting /wiki/Northern_Expressway\n", + "Getting /wiki/Croydon_Park,_South_Australia\n", + "Getting /wiki/Port_River_Expressway\n", + "Getting /wiki/Outer_Harbor,_South_Australia\n", + "Getting /wiki/Northern_Expressway\n", + "Getting /wiki/Gawler_Bypass\n", + "Getting /wiki/Northern_Connector\n", + "Getting /wiki/Custom_Coaches\n", + "Getting /wiki/Alstom_Citadis\n", + "Getting /wiki/Flexity_Classic\n", + "Getting /wiki/Mount_Osmond,_South_Australia\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Getting /wiki/South_Eastern_Freeway\n", + "Getting /wiki/Qatar_Airways\n", + "Getting /wiki/Adelaide_Airport\n", + "Getting /wiki/Adelaide_Airport\n", + "Getting /wiki/Parafield_Airport\n", + "Getting /wiki/RAAF_Base_Edinburgh\n", + "Getting /wiki/University_of_Adelaide\n", + "Getting /wiki/Royal_Adelaide_Hospital\n", + "Getting /wiki/Teaching_hospital\n", + "Getting /wiki/Flinders_Medical_Centre\n", + "Getting /wiki/Northfield,_South_Australia\n", + "Getting /wiki/Glenside_Hospital_(Adelaide)\n", + "Getting /wiki/Women%27s_and_Children%27s_Hospital,_Adelaide\n", + "Getting /wiki/Queen_Elizabeth_Hospital,_Adelaide\n", + "Getting /wiki/Modbury_Hospital\n", + "Getting /wiki/Lyell_McEwin_Hospital\n", + "Getting /wiki/Adelaide_Community_Healthcare_Alliance\n", + "Getting /wiki/Sisters_of_the_Little_Company_of_Mary\n", + "Getting /wiki/East_End,_Adelaide\n", + "Getting /wiki/South_Australian_Health_and_Medical_Research_Institute\n", + "Getting /wiki/Proton_therapy\n", + "Getting /wiki/Women%27s_and_Children%27s_Hospital\n", + "Getting /wiki/South_Australian_Health_and_Medical_Research_Institute\n", + "Getting /wiki/North_Terrace,_Adelaide\n", + "Getting /wiki/Royal_District_Nursing_Service_(South_Australia)\n", + "Getting /wiki/Adelaide_Electric_Supply_Company\n", + "Getting /wiki/Thomas_Playford_IV\n", + "Getting /wiki/Electricity_Trust_of_South_Australia\n", + "Getting /wiki/John_Olsen\n", + "Getting /wiki/SA_Power_Networks\n", + "Getting /wiki/Cheung_Kong_Holdings\n", + "Getting /wiki/Trevor_Crothers\n", + "Getting /wiki/ElectraNet\n", + "Getting /wiki/SA_Power_Networks\n", + "Getting /wiki/Torrens_Island_Power_Station\n", + "Getting /wiki/AGL_Energy\n", + "Getting /wiki/Pelican_Point_Power_Station\n", + "Getting /wiki/Engie\n", + "Getting /wiki/Natural_gas\n", + "Getting /wiki/Moomba,_South_Australia\n", + "Getting /wiki/Cooper_Basin\n", + "Getting /wiki/Moomba_Adelaide_Pipeline_System\n", + "Getting /wiki/SEAGas_pipeline\n", + "Getting /wiki/Victoria,_Australia\n", + "Getting /wiki/Wind_power\n", + "Getting /wiki/Tesla,_Inc.\n", + "Getting /wiki/Hornsdale_Wind_Farm\n", + "Getting /wiki/Happy_Valley_Reservoir\n", + "Getting /wiki/SA_Water\n", + "Getting /wiki/Mount_Bold_Reservoir\n", + "Getting /wiki/Happy_Valley_Reservoir\n", + "Getting /wiki/Myponga_Reservoir\n", + "Getting /wiki/Millbrook_Reservoir\n", + "Getting /wiki/Hope_Valley_Reservoir\n", + "Getting /wiki/Little_Para_Reservoir\n", + "Getting /wiki/South_Para_Reservoir\n", + "Getting /wiki/River_Murray\n", + "Getting /wiki/Adelaide_Desalination_Plant\n", + "Getting /wiki/2000s_Australian_drought\n", + "Getting /wiki/Coorong\n", + "Getting /wiki/Wi-Fi\n", + "Getting /wiki/Adelaide_city_centre\n", + "Getting /wiki/Internode_(ISP)\n", + "Getting /wiki/Cisco\n", + "Getting /wiki/Adelaide_Hills\n", + "Getting /wiki/City_of_Adelaide\n", + "Getting /wiki/Music_of_Adelaide\n", + "Getting /wiki/Port_Adelaide\n", + "Getting /wiki/List_of_Adelaide_obsolete_suburb_names\n", + "Getting /wiki/List_of_Adelaide_parks_and_gardens\n", + "Getting /wiki/List_of_Adelaide_railway_stations\n", + "Getting /wiki/List_of_Adelaide_suburbs\n", + "Getting /wiki/List_of_films_shot_in_Adelaide\n", + "Getting /wiki/List_of_people_from_Adelaide\n", + "Getting /wiki/List_of_protected_areas_in_Adelaide\n", + "Getting /wiki/List_of_public_art_in_South_Australia\n", + "Getting /wiki/List_of_public_transport_routes_in_Adelaide\n", + "Getting /wiki/List_of_South_Australian_commercial_icons\n", + "Getting /wiki/List_of_sporting_clubs_in_Adelaide\n", + "Getting /wiki/List_of_tallest_buildings_in_Adelaide\n", + "Getting /wiki/City_of_Adelaide#Sister_cities\n", + "Getting /wiki/Mainland_China\n", + "Getting /wiki/Macau\n", + "Getting /wiki/Anglo-Celtic_Australian\n", + "Getting /wiki/Torres_Strait_Islanders\n", + "Getting /wiki/Australian_Bureau_of_Statistics\n", + "Getting /wiki/ISBN_(identifier)\n", + "Getting /wiki/John_C._Wells\n", + "Getting /wiki/ISBN_(identifier)\n", + "Getting /wiki/Doi_(identifier)\n", + "Getting /wiki/ISBN_(identifier)\n", + "Getting /wiki/S2CID_(identifier)\n", + "Getting /wiki/National_Native_Title_Tribunal\n", + "Getting /wiki/City_of_Adelaide\n", + "Getting /wiki/Doi_(identifier)\n", + "Getting /wiki/ISSN_(identifier)\n", + "Getting /wiki/S2CID_(identifier)\n", + "Getting /wiki/ISBN_(identifier)\n", + "Getting /wiki/Karl_Marx\n", + "Getting /wiki/John_Wrathall_Bull\n", + "Getting /wiki/Early_Experiences_of_Colonial_Life_in_South_Australia\n", + "Getting /wiki/University_of_Adelaide\n", + "Getting /wiki/ISBN_(identifier)\n", + "Getting /wiki/ISBN_(identifier)\n", + "Getting /wiki/ISBN_(identifier)\n", + "Getting /wiki/Mitsubishi_Motors_Australia_Limited\n", + "Getting /wiki/Tonsley_Park\n", + "Getting /wiki/Wayback_Machine\n", + "Getting /wiki/Wayback_Machine\n", + "Getting /wiki/Wayback_Machine\n", + "Getting /wiki/Wayback_Machine\n", + "Getting /wiki/Wayback_Machine\n", + "Getting /wiki/Wayback_Machine\n", + "Getting /wiki/Bibcode_(identifier)\n", + "Getting /wiki/Doi_(identifier)\n", + "Getting /wiki/ISSN_(identifier)\n", + "Getting /wiki/S2CID_(identifier)\n", + "Getting /wiki/ISBN_(identifier)\n", + "Getting /wiki/ISBN_(identifier)\n", + "Getting /wiki/ISBN_(identifier)\n", + "Getting /wiki/ISBN_(identifier)\n", + "Getting /wiki/ISBN_(identifier)\n", + "Getting /wiki/Wayback_Machine\n", + "Getting /wiki/ISBN_(identifier)\n", + "Getting /wiki/ISBN_(identifier)\n", + "Getting /wiki/ISBN_(identifier)\n", + "Getting /wiki/ISBN_(identifier)\n", + "Getting /wiki/Wayback_Machine\n", + "Getting /wiki/InDaily\n", + "Getting /wiki/CNBC\n", + "Getting /wiki/ABC_News_(Australia)\n", + "Getting /wiki/The_Advertiser_(Adelaide)\n", + "Getting /wiki/The_Sydney_Morning_Herald\n", + "Getting /wiki/Sunday_Mail_(Adelaide)\n", + "Getting /wiki/News_Corp_Australia\n", + "Getting /wiki/University_of_Adelaide\n", + "Getting /wiki/Australian_Bureau_of_Statistics\n", + "Getting /wiki/Wayback_Machine\n", + "Getting /wiki/Australian_Bureau_of_Statistics\n", + "Getting /wiki/Wayback_Machine\n", + "Getting /wiki/Wayback_Machine\n", + "Getting /wiki/Wayback_Machine\n", + "Getting /wiki/Kent_Town,_South_Australia\n", + "Getting /wiki/Wakefield_Press_(Australia)\n", + "Getting /wiki/ISBN_(identifier)\n", + "Getting /wiki/OL_(identifier)\n", + "Getting /wiki/Wayback_Machine\n", + "Getting /wiki/Wayback_Machine\n", + "Getting /wiki/Wayback_Machine\n", + "Getting /wiki/Australian_Bureau_of_Statistics\n", + "Getting /wiki/Wayback_Machine\n", + "Getting /wiki/Wayback_Machine\n", + "Getting /wiki/Mike_Rann\n", + "Getting /wiki/Wayback_Machine\n", + "Getting /wiki/Wayback_Machine\n", + "Getting /wiki/Wayback_Machine\n", + "Getting /wiki/Wayback_Machine\n", + "Getting /wiki/Wayback_Machine\n", + "Getting /wiki/Wayback_Machine\n", + "Getting /wiki/Wayback_Machine\n", + "Getting /wiki/ISBN_(identifier)\n", + "Getting /wiki/ABC_News_(Australia)\n", + "Getting /wiki/Australian_Broadcasting_Corporation\n", + "Getting /wiki/Australian_Broadcasting_Corporation\n", + "Getting /wiki/Australian_Broadcasting_Corporation\n", + "Getting /wiki/ISBN_(identifier)\n", + "Getting /wiki/ISBN_(identifier)\n", + "Getting /wiki/JSTOR_(identifier)\n", + "Getting /wiki/City_of_Adelaide\n", + "Getting /wiki/ISBN_(identifier)\n", + "Getting /wiki/OCLC_(identifier)\n", + "Getting /wiki/ISBN_(identifier)\n", + "Getting /wiki/OCLC_(identifier)\n", + "Getting /wiki/ISBN_(identifier)\n", + "Getting /wiki/OCLC_(identifier)\n", + "Getting /wiki/Adelaide_Convention_Centre\n", + "Getting /wiki/Adelaide_Desalination_Plant\n", + "Getting /wiki/Adelaide_Town_Hall\n", + "Getting /wiki/Ayers_House_(Adelaide)\n", + "Getting /wiki/Beehive_Corner\n", + "Getting /wiki/Bonython_Hall\n", + "Getting /wiki/Brighton_Town_Hall,_South_Australia\n", + "Getting /wiki/Carrick_Hill\n", + "Getting /wiki/D%27Arenberg_Cube\n", + "Getting /wiki/Government_House,_Adelaide\n", + "Getting /wiki/Grenfell_Centre\n", + "Getting /wiki/Myer_Centre,_Adelaide\n", + "Getting /wiki/National_War_Memorial_(South_Australia)\n", + "Getting /wiki/National_Wine_Centre_of_Australia\n", + "Getting /wiki/Old_Government_House,_South_Australia\n", + "Getting /wiki/Parliament_House,_Adelaide\n", + "Getting /wiki/Piccadilly_Cinema\n", + "Getting /wiki/Pilgrim_Uniting_Church\n", + "Getting /wiki/RAA_Tower\n", + "Getting /wiki/South_African_War_Memorial_(South_Australia)\n", + "Getting /wiki/State_Library_of_South_Australia\n", + "Getting /wiki/Torrens_Building\n", + "Getting /wiki/The_Heights_Observatory\n", + "Getting /wiki/Regal_Theatre,_Adelaide\n", + "Getting /wiki/St_Francis_Xavier%27s_Cathedral,_Adelaide\n", + "Getting /wiki/St_Peter%27s_Cathedral,_Adelaide\n", + "Getting /wiki/Chinatown,_Adelaide\n", + "Getting /wiki/East_End,_Adelaide\n", + "Getting /wiki/Rundle_Mall\n", + "Getting /wiki/Victoria_Square,_Adelaide\n", + "Getting /wiki/West_End,_Adelaide\n", + "Getting /wiki/ACE_Open\n", + "Getting /wiki/Adelaide_Gaol\n", + "Getting /wiki/Art_Gallery_of_South_Australia\n", + "Getting /wiki/Migration_Museum,_Adelaide\n", + "Getting /wiki/Museum_of_Classical_Archaeology,_Adelaide\n", + "Getting /wiki/National_Railway_Museum,_Port_Adelaide\n", + "Getting /wiki/South_Australian_Aviation_Museum\n", + "Getting /wiki/South_Australian_Museum\n", + "Getting /wiki/Tandanya_National_Aboriginal_Cultural_Institute\n", + "Getting /wiki/Adelaide_Aquatic_Centre\n", + "Getting /wiki/Adelaide_International_Raceway\n", + "Getting /wiki/Adelaide_Motorsport_Park\n", + "Getting /wiki/Adelaide_Oval\n", + "Getting /wiki/Adelaide_Street_Circuit\n", + "Getting /wiki/Adelaide_Super-Drome\n", + "Getting /wiki/Diamond_Sports_Stadium\n", + "Getting /wiki/Football_Park\n", + "Getting /wiki/Gillman_Speedway\n", + "Getting /wiki/Greyhound_Park\n", + "Getting /wiki/Hindmarsh_Stadium\n", + "Getting /wiki/Ice_Arena_(Adelaide)\n", + "Getting /wiki/Kensington_Oval,_Adelaide\n", + "Getting /wiki/Kooyonga_Golf_Club\n", + "Getting /wiki/Memorial_Drive_Park\n", + "Getting /wiki/Morphettville_Racecourse\n", + "Getting /wiki/Netball_SA_Stadium\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Getting /wiki/North_Adelaide_Golf_Course\n", + "Getting /wiki/Royal_Adelaide_Golf_Club\n", + "Getting /wiki/Santos_Stadium\n", + "Getting /wiki/Sidewinders_Speedway\n", + "Getting /wiki/South_Australia_Aquatic_and_Leisure_Centre\n", + "Getting /wiki/State_Hockey_Centre_(South_Australia)\n", + "Getting /wiki/Titanium_Security_Arena\n", + "Getting /wiki/Adelaide_Casino\n", + "Getting /wiki/Adelaide_Central_Market\n", + "Getting /wiki/Adelaide_Entertainment_Centre\n", + "Getting /wiki/Adelaide_Festival_Centre\n", + "Getting /wiki/Adelaide_Showground\n", + "Getting /wiki/Adelaide_Zoo\n", + "Getting /wiki/The_Beachouse\n", + "Getting /wiki/Thebarton_Theatre\n", + "Getting /wiki/Aldinga_Beach,_South_Australia\n", + "Getting /wiki/Brighton,_South_Australia\n", + "Getting /wiki/Christies_Beach,_South_Australia\n", + "Getting /wiki/Glenelg,_South_Australia\n", + "Getting /wiki/Henley_Beach,_South_Australia\n", + "Getting /wiki/Largs_Bay,_South_Australia\n", + "Getting /wiki/Maslin_Beach,_South_Australia\n", + "Getting /wiki/Moana,_South_Australia\n", + "Getting /wiki/North_Haven,_South_Australia\n", + "Getting /wiki/Seacliff,_South_Australia\n", + "Getting /wiki/Semaphore,_South_Australia\n", + "Getting /wiki/West_Beach,_South_Australia\n", + "Getting /wiki/Australian_Football_League\n", + "Getting /wiki/Adelaide_Football_Club\n", + "Getting /wiki/Port_Adelaide_Football_Club\n", + "Getting /wiki/AFL_Women%27s\n", + "Getting /wiki/Adelaide_Football_Club_(AFL_Women%27s)\n", + "Getting /wiki/Port_Adelaide_Football_Club_(AFL_Women%27s)\n", + "Getting /wiki/Australian_Baseball_League\n", + "Getting /wiki/Adelaide_Giants\n", + "Getting /wiki/Claxton_Shield\n", + "Getting /wiki/South_Australia_(baseball_team)\n", + "Getting /wiki/National_Basketball_League_(Australia)\n", + "Getting /wiki/Adelaide_36ers\n", + "Getting /wiki/Women%27s_National_Basketball_League\n", + "Getting /wiki/Adelaide_Lightning\n", + "Getting /wiki/Sheffield_Shield\n", + "Getting /wiki/Australian_domestic_limited-overs_cricket_tournament\n", + "Getting /wiki/Southern_Redbacks\n", + "Getting /wiki/Big_Bash_League\n", + "Getting /wiki/Adelaide_Strikers\n", + "Getting /wiki/Women%27s_National_Cricket_League\n", + "Getting /wiki/South_Australian_Scorpions\n", + "Getting /wiki/Women%27s_Big_Bash_League\n", + "Getting /wiki/Adelaide_Strikers_(WBBL)\n", + "Getting /wiki/Australian_Hockey_League\n", + "Getting /wiki/Southern_Hotshots\n", + "Getting /wiki/Australian_Hockey_League\n", + "Getting /wiki/SA_Suns\n", + "Getting /wiki/Hockey_One\n", + "Getting /wiki/Adelaide_Fire\n", + "Getting /wiki/Australian_Ice_Hockey_League\n", + "Getting /wiki/Adelaide_Adrenaline\n", + "Getting /wiki/Australian_Women%27s_Ice_Hockey_League\n", + "Getting /wiki/Adelaide_Rush\n", + "Getting /wiki/Suncorp_Super_Netball\n", + "Getting /wiki/Adelaide_Thunderbirds\n", + "Getting /wiki/A-League_Men\n", + "Getting /wiki/Adelaide_United_FC\n", + "Getting /wiki/A-League_Women\n", + "Getting /wiki/Adelaide_United_FC_(W-League)\n", + "Getting /wiki/Australian_National_Water_Polo_League\n", + "Getting /wiki/Adelaide_Jets\n", + "Getting /wiki/Sport_in_South_Australia\n", + "Getting /wiki/South_Australia\n", + "Getting /wiki/History_of_South_Australia\n", + "Getting /wiki/Government_of_South_Australia\n", + "Getting /wiki/Flag_of_South_Australia\n", + "Getting /wiki/Culture_of_South_Australia\n", + "Getting /wiki/Transport_in_South_Australia\n", + "Getting /wiki/Rail_transport_in_South_Australia\n", + "Getting /wiki/Energy_in_South_Australia\n", + "Getting /wiki/Education_in_South_Australia\n", + "Getting /wiki/Geography_of_South_Australia\n", + "Getting /wiki/Geology_of_South_Australia\n", + "Getting /wiki/South_Australian_English\n", + "Getting /wiki/Sport_in_South_Australia\n", + "Getting /wiki/Symbols_of_South_Australia\n", + "Getting /wiki/Country_Fire_Service\n", + "Getting /wiki/Regions_of_South_Australia\n", + "Getting /wiki/Adelaide_Hills\n", + "Getting /wiki/Barossa_Valley\n", + "Getting /wiki/Clare_Valley\n", + "Getting /wiki/Eyre_Peninsula\n", + "Getting /wiki/Far_North_(South_Australia)\n", + "Getting /wiki/Fleurieu_Peninsula\n", + "Getting /wiki/Flinders_Ranges\n", + "Getting /wiki/Limestone_Coast\n", + "Getting /wiki/Mid_North\n", + "Getting /wiki/Murraylands\n", + "Getting /wiki/Nullarbor_Plain\n", + "Getting /wiki/Riverland\n", + "Getting /wiki/Yorke_Peninsula\n", + "Getting /wiki/List_of_cities_and_towns_in_South_Australia\n", + "Getting /wiki/Mount_Barker,_South_Australia\n", + "Getting /wiki/Mount_Gambier\n", + "Getting /wiki/Murray_Bridge,_South_Australia\n", + "Getting /wiki/Port_Augusta\n", + "Getting /wiki/Port_Lincoln\n", + "Getting /wiki/Port_Pirie\n", + "Getting /wiki/Victor_Harbor,_South_Australia\n", + "Getting /wiki/Whyalla\n", + "Getting /wiki/List_of_Australian_capital_cities\n", + "Getting /wiki/Australia\n", + "Getting /wiki/Australian_Capital_Territory\n", + "Getting /wiki/Canberra\n", + "Getting /wiki/New_South_Wales\n", + "Getting /wiki/Sydney\n", + "Getting /wiki/Northern_Territory\n", + "Getting /wiki/Darwin,_Northern_Territory\n", + "Getting /wiki/Queensland\n", + "Getting /wiki/Brisbane\n", + "Getting /wiki/South_Australia\n", + "Getting /wiki/Tasmania\n", + "Getting /wiki/Hobart\n", + "Getting /wiki/Victoria_(Australia)\n", + "Getting /wiki/Melbourne\n", + "Getting /wiki/Western_Australia\n", + "Getting /wiki/Perth\n", + "Getting /wiki/List_of_cities_in_Australia\n", + "Getting /wiki/List_of_cities_in_Australia\n", + "Getting /wiki/Australian_Capital_Territory\n", + "Getting /wiki/Canberra\n", + "Getting /wiki/New_South_Wales\n", + "Getting /wiki/Albury\n", + "Getting /wiki/Armidale\n", + "Getting /wiki/Bathurst,_New_South_Wales\n", + "Getting /wiki/Broken_Hill\n", + "Getting /wiki/Cessnock,_New_South_Wales\n", + "Getting /wiki/Coffs_Harbour\n", + "Getting /wiki/Dubbo\n", + "Getting /wiki/Gosford\n", + "Getting /wiki/Goulburn\n", + "Getting /wiki/Grafton,_New_South_Wales\n", + "Getting /wiki/Griffith,_New_South_Wales\n", + "Getting /wiki/City_of_Lake_Macquarie\n", + "Getting /wiki/Lismore,_New_South_Wales\n", + "Getting /wiki/Lithgow,_New_South_Wales\n", + "Getting /wiki/Maitland,_New_South_Wales\n", + "Getting /wiki/Newcastle,_New_South_Wales\n", + "Getting /wiki/Orange,_New_South_Wales\n", + "Getting /wiki/Queanbeyan\n", + "Getting /wiki/Sydney\n", + "Getting /wiki/Tamworth,_New_South_Wales\n", + "Getting /wiki/Wagga_Wagga\n", + "Getting /wiki/Wollongong\n", + "Getting /wiki/Northern_Territory\n", + "Getting /wiki/Darwin,_Northern_Territory\n", + "Getting /wiki/Palmerston,_Northern_Territory\n", + "Getting /wiki/Queensland\n", + "Getting /wiki/Brisbane\n", + "Getting /wiki/Bundaberg\n", + "Getting /wiki/Cairns\n", + "Getting /wiki/Caloundra\n", + "Getting /wiki/Gladstone,_Queensland\n", + "Getting /wiki/Gold_Coast,_Queensland\n", + "Getting /wiki/Gympie\n", + "Getting /wiki/Hervey_Bay\n", + "Getting /wiki/Ipswich,_Queensland\n", + "Getting /wiki/Mackay,_Queensland\n", + "Getting /wiki/Maryborough,_Queensland\n", + "Getting /wiki/Mount_Isa\n", + "Getting /wiki/Rockhampton\n", + "Getting /wiki/Sunshine_Coast,_Queensland\n", + "Getting /wiki/Toowoomba\n", + "Getting /wiki/Townsville\n", + "Getting /wiki/South_Australia\n", + "Getting /wiki/Mount_Gambier\n", + "Getting /wiki/Murray_Bridge,_South_Australia\n", + "Getting /wiki/Port_Augusta\n", + "Getting /wiki/Port_Lincoln\n", + "Getting /wiki/Port_Pirie\n", + "Getting /wiki/Victor_Harbor,_South_Australia\n", + "Getting /wiki/Whyalla\n", + "Getting /wiki/Tasmania\n", + "Getting /wiki/Burnie\n", + "Getting /wiki/Devonport,_Tasmania\n", + "Getting /wiki/Hobart\n", + "Getting /wiki/Launceston,_Tasmania\n", + "Getting /wiki/Victoria_(Australia)\n", + "Getting /wiki/Ararat,_Victoria\n", + "Getting /wiki/Bairnsdale\n", + "Getting /wiki/Ballarat\n", + "Getting /wiki/Benalla\n", + "Getting /wiki/Bendigo\n", + "Getting /wiki/Colac,_Victoria\n", + "Getting /wiki/Geelong\n", + "Getting /wiki/Hamilton,_Victoria\n", + "Getting /wiki/Horsham,_Victoria\n", + "Getting /wiki/Melbourne\n", + "Getting /wiki/Mildura\n", + "Getting /wiki/Sale,_Victoria\n", + "Getting /wiki/Shepparton\n", + "Getting /wiki/Traralgon\n", + "Getting /wiki/Wangaratta\n", + "Getting /wiki/Warrnambool\n", + "Getting /wiki/Wodonga\n", + "Getting /wiki/Western_Australia\n", + "Getting /wiki/Albany,_Western_Australia\n", + "Getting /wiki/Bunbury,_Western_Australia\n", + "Getting /wiki/Busselton\n", + "Getting /wiki/Geraldton\n", + "Getting /wiki/Kalgoorlie\n", + "Getting /wiki/Mandurah\n", + "Getting /wiki/Perth\n", + "Getting /wiki/South_Australian_Amateur_Soccer_League\n", + "Already fetched /wiki/Main_Page\n", + "Already fetched /wiki/Main_Page\n", + "Already fetched /wiki/South_Australian_Amateur_Soccer_League\n", + "Already fetched /wiki/South_Australian_Amateur_Soccer_League\n", + "Already fetched /wiki/South_Australian_Amateur_Soccer_League\n", + "Getting /wiki/Modbury_Jets_SC\n", + "Getting /wiki/Association_football\n", + "Getting /wiki/South_Australia\n", + "Getting /wiki/Modbury_Jets_SC\n", + "Getting /wiki/Adelaide_University_SC\n", + "Getting /wiki/St_Peter%27s_College,_Adelaide\n", + "Getting /wiki/Adelaide_Blue_Eagles\n", + "Getting /wiki/Adelaide_Blue_Eagles\n", + "Getting /wiki/Adelaide_University_SC\n", + "Getting /wiki/St_Peter%27s_College,_Adelaide\n", + "Getting /wiki/Modbury_Jets_SC\n", + "Getting /wiki/Modbury_Jets_SC\n", + "Getting /wiki/FK_Beograd_(Australia)\n", + "Getting /wiki/North_Eastern_MetroStars\n", + "Getting /wiki/Modbury_Vista_SC\n", + "Getting /wiki/Modbury_Jets_SC\n", + "Getting /wiki/North_Eastern_MetroStars\n", + "Getting /wiki/Adelaide_University_SC\n", + "Getting /wiki/The_Cove_FC\n", + "Getting /wiki/N.A.B._SC\n", + "Getting /wiki/N.A.B._SC\n", + "Getting /wiki/Adelaide_Comets_FC\n", + "Getting /wiki/Sport_at_the_University_of_Adelaide\n", + "Getting /wiki/Adelaide_Comets_FC\n", + "Getting /wiki/Adelaide_Comets_FC\n", + "Getting /wiki/Adelaide_Comets_FC\n", + "Getting /wiki/Sport_at_the_University_of_Adelaide\n", + "Getting /wiki/Modbury_Jets_SC\n", + "Getting /wiki/Modbury_Jets_SC\n", + "Getting /wiki/Australia\n", + "Getting /wiki/Soccer_in_Australia\n", + "Getting /wiki/Football_Australia\n", + "Getting /wiki/Australian_Professional_Leagues\n", + "Getting /wiki/Australia_men%27s_national_soccer_team\n", + "Getting /wiki/Australia_national_soccer_B_team\n", + "Getting /wiki/Australia_men%27s_national_under-23_soccer_team\n", + "Getting /wiki/Australia_men%27s_national_under-20_soccer_team\n", + "Getting /wiki/Australia_men%27s_national_under-17_soccer_team\n", + "Getting /wiki/Australia_national_futsal_team\n", + "Getting /wiki/Australia_national_beach_soccer_team\n", + "Getting /wiki/Australia_Paralympic_soccer_team\n", + "Getting /wiki/Australia_women%27s_national_soccer_team\n", + "Getting /wiki/Australia_women%27s_national_under-23_soccer_team\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Getting /wiki/Australia_women%27s_national_under-20_soccer_team\n", + "Getting /wiki/Australia_women%27s_national_under-17_soccer_team\n", + "Getting /wiki/Australia_women%27s_national_futsal_team\n", + "Getting /wiki/Australian_soccer_league_system\n", + "Getting /wiki/A-League_Men\n", + "Getting /wiki/National_Second_Division\n", + "Getting /wiki/National_Premier_Leagues\n", + "Getting /wiki/National_Premier_Leagues_Capital_Football\n", + "Getting /wiki/National_Premier_Leagues_NSW\n", + "Getting /wiki/National_Premier_Leagues_Northern_NSW\n", + "Getting /wiki/National_Premier_Leagues_Queensland\n", + "Getting /wiki/National_Premier_Leagues_South_Australia\n", + "Getting /wiki/National_Premier_Leagues_Tasmania\n", + "Getting /wiki/National_Premier_Leagues_Victoria\n", + "Getting /wiki/National_Premier_Leagues_Western_Australia\n", + "Getting /wiki/A-League_Women\n", + "Getting /wiki/National_Premier_Leagues_Women%27s\n", + "Getting /wiki/National_Premier_Leagues_NSW_Women%27s\n", + "Getting /wiki/National_Premier_Leagues_Victoria_Women\n", + "Getting /wiki/National_Premier_Leagues_WA_Women\n", + "Getting /wiki/List_of_Australian_soccer_champions#National_Cup_winners\n", + "Getting /wiki/Australia_Cup\n", + "Getting /wiki/FFA_State_Institute_Challenge\n", + "Getting /wiki/Australia_Cup_(1962%E2%80%931968)\n", + "Getting /wiki/NSL_Cup\n", + "Getting /wiki/Professional_Footballers_Australia\n", + "Getting /wiki/Women%27s_soccer_in_Australia\n", + "Getting /wiki/History_of_soccer_in_Brisbane,_Queensland\n", + "Getting /wiki/List_of_soccer_players_in_Australia_by_number_of_league_appearances\n", + "Getting /wiki/List_of_soccer_clubs_in_Australia\n", + "Getting /wiki/List_of_soccer_clubs_in_Australia_by_competitive_honours_won\n", + "Getting /wiki/List_of_Australian_soccer_champions\n", + "Getting /wiki/Australian_soccer_clubs_in_international_competitions\n", + "Getting /wiki/List_of_soccer_players_in_Australia_by_number_of_league_goals\n", + "Getting /wiki/List_of_record_home_attendances_of_Australian_soccer_clubs\n", + "Getting /wiki/List_of_soccer_stadiums_in_Australia\n", + "Getting /wiki/Soccer_records_and_statistics_in_Australia\n", + "Getting /wiki/Soccer_in_South_Australia\n", + "Getting /wiki/Football_South_Australia\n", + "Getting /wiki/National_Premier_Leagues_South_Australia\n", + "Getting /wiki/Adelaide_City_FC\n", + "Getting /wiki/Adelaide_Comets_FC\n", + "Getting /wiki/Adelaide_Olympic_FC\n", + "Getting /wiki/Adelaide_United_FC_Reserves\n", + "Getting /wiki/Campbelltown_City_SC\n", + "Getting /wiki/Croydon_FC_(Australia)\n", + "Getting /wiki/FK_Beograd_(Australia)\n", + "Getting /wiki/Modbury_Jets_SC\n", + "Getting /wiki/North_Eastern_MetroStars_SC\n", + "Getting /wiki/South_Adelaide_Panthers_FC\n", + "Getting /wiki/Sturt_Lions_FC\n", + "Getting /wiki/West_Adelaide_SC\n", + "Getting /wiki/State_League_1_South_Australia\n", + "Getting /wiki/Adelaide_Blue_Eagles\n", + "Getting /wiki/Adelaide_Cobras_FC\n", + "Getting /wiki/Adelaide_Croatia_Raiders_SC\n", + "Getting /wiki/Adelaide_Victory_FC\n", + "Getting /wiki/Cumberland_United_FC\n", + "Getting /wiki/Eastern_United_FC\n", + "Getting /wiki/Fulham_United_FC\n", + "Getting /wiki/Para_Hills_Knights_SC\n", + "Getting /wiki/Playford_City_Patriots_SC\n", + "Getting /wiki/Port_Adelaide_Pirates_SC\n", + "Getting /wiki/Adelaide_Vipers_FC\n", + "Getting /wiki/West_Torrens_Birkalla_SC\n", + "Getting /wiki/State_League_2_South_Australia\n", + "Getting /wiki/Adelaide_Hills_Hawks_SC\n", + "Getting /wiki/Sport_at_the_University_of_Adelaide\n", + "Getting /wiki/The_Cove_FC\n", + "Getting /wiki/Gawler_SC\n", + "Getting /wiki/Modbury_Vista_SC\n", + "Getting /wiki/Noarlunga_United_SC\n", + "Getting /wiki/Northern_Demons_SC\n", + "Getting /wiki/Salisbury_United_FC\n", + "Getting /wiki/Seaford_Rangers_FC\n", + "Getting /wiki/Western_Strikers_SC\n", + "Getting /wiki/Enfield_City_FC\n", + "Getting /wiki/N.A.B._SC\n", + "Getting /wiki/South_Australian_Regional_Leagues\n", + "Getting /wiki/Football_SA_Federation_Cup\n", + "Getting /wiki/FFSA_Super_League\n", + "Getting /wiki/1982_SASF_season\n", + "Getting /wiki/1983_SASF_season\n", + "Getting /wiki/1984_SASF_season\n", + "Getting /wiki/1985_SASF_season\n", + "Getting /wiki/1986_SASF_season\n", + "Getting /wiki/1987_SASF_season\n", + "Getting /wiki/1988_SASF_season\n", + "Getting /wiki/1989_SASF_season\n", + "Getting /wiki/1990_SASF_season\n", + "Getting /wiki/1991_SASF_season\n", + "Getting /wiki/1992_SASF_season\n", + "Getting /wiki/1993_SASF_season\n", + "Getting /wiki/1994_SASF_season\n", + "Getting /wiki/1995_SASF_season\n", + "Getting /wiki/1998_SASF_season\n", + "Getting /wiki/1999_SASF_season\n", + "Getting /wiki/2000_SASF_season\n", + "Getting /wiki/2001_SASF_season\n", + "Getting /wiki/2002_SASF_season\n", + "Getting /wiki/2003_SASF_season\n", + "Getting /wiki/2004_SASF_season\n", + "Getting /wiki/2005_SASF_season\n", + "Getting /wiki/2006_FFSA_season\n", + "Getting /wiki/2007_FFSA_season\n", + "Getting /wiki/2008_FFSA_season\n", + "Getting /wiki/2009_FFSA_season\n", + "Getting /wiki/2010_FFSA_season\n", + "Getting /wiki/2011_FFSA_season\n", + "Getting /wiki/2012_FFSA_season\n", + "Getting /wiki/2013_FFSA_season\n", + "Getting /wiki/2014_FFSA_season\n", + "Getting /wiki/2015_FFSA_season\n", + "Getting /wiki/2016_FFSA_season\n", + "Getting /wiki/2017_FFSA_season\n", + "Getting /wiki/2018_FFSA_season\n", + "Getting /wiki/2019_FFSA_season\n", + "Getting /wiki/2020_Football_South_Australia_season\n", + "Getting /wiki/2021_Football_South_Australia_season\n", + "Getting /wiki/2022_Football_South_Australia_season\n", + "Getting /wiki/2023_Football_South_Australia_season\n", + "Getting /wiki/USC_(clothing_retailer)\n", + "Already fetched /wiki/Main_Page\n", + "Already fetched /wiki/Main_Page\n", + "Already fetched /wiki/USC_(clothing_retailer)\n", + "Already fetched /wiki/USC_(clothing_retailer)\n", + "Already fetched /wiki/USC_(clothing_retailer)\n", + "Getting /wiki/Limited_company\n", + "Getting /wiki/Retail\n", + "Getting /wiki/Edinburgh\n", + "Getting /wiki/United_Kingdom\n", + "Getting /wiki/Republic_of_Ireland\n", + "Getting /wiki/Clothing\n", + "Getting /wiki/Parent_company\n", + "Getting /wiki/Frasers_Group\n", + "Getting /wiki/Clothing_retailer\n", + "Getting /wiki/United_Kingdom\n", + "Getting /wiki/Edinburgh\n", + "Getting /wiki/Frasers_Group\n", + "Getting /wiki/Tom_Hunter\n", + "Getting /wiki/Administration_(insolvency)\n", + "Getting /wiki/Republic_(retailer)\n", + "Getting /wiki/City_A.M.\n", + "Getting /wiki/Mike_Ashley_(businessman)\n", + "Getting /wiki/Duff_%26_Phelps\n", + "Getting /wiki/Sports_Direct\n", + "Getting /wiki/Shirebrook\n", + "Getting /wiki/Republic_(retailer)\n", + "Getting /wiki/Diesel_(brand)\n", + "Getting /wiki/HM_Revenue_and_Customs\n", + "Getting /wiki/Frasers_Group\n", + "Getting /wiki/Mike_Ashley_(businessman)\n", + "Getting /wiki/FTSE_250_Index\n", + "Getting /wiki/Bob%27s_Stores\n", + "Getting /wiki/Eastern_Mountain_Sports\n", + "Getting /wiki/Evans_Cycles\n", + "Getting /wiki/Firetrap\n", + "Getting /wiki/Flannels_(retail)\n", + "Getting /wiki/French_Connection_(clothing)\n", + "Getting /wiki/Game_(retailer)\n", + "Getting /wiki/Gelert_(company)\n", + "Getting /wiki/Heatons\n", + "Getting /wiki/House_of_Fraser\n", + "Getting /wiki/Jack_Wills\n", + "Getting /wiki/Sofa.com\n", + "Getting /wiki/Sports_Direct\n", + "Getting /wiki/Sweatshop_(retailer)\n", + "Getting /wiki/Missguided\n", + "Getting /wiki/SportsDirect.com\n", + "Getting /wiki/Studio_Retail_Group\n", + "Getting /wiki/Agent_Provocateur_(lingerie)\n", + "Getting /wiki/British_Knights\n", + "Getting /wiki/Carlton_Sports\n", + "Getting /wiki/Donnay_(sports)\n", + "Getting /wiki/Everlast_(brand)\n", + "Getting /wiki/Firetrap\n", + "Getting /wiki/Gelert_(company)\n", + "Getting /wiki/Gul_(watersports)\n", + "Getting /wiki/Hot_Tuna_Clothing\n", + "Getting /wiki/Kangol\n", + "Getting /wiki/Karrimor\n", + "Getting /wiki/LA_Gear\n", + "Getting /wiki/Lonsdale_(clothing)\n", + "Getting /wiki/Muddyfox\n", + "Getting /wiki/No_Fear\n", + "Getting /wiki/Slazenger\n", + "Getting /wiki/Dunlop_Slazenger\n", + "Getting /wiki/JJB_Sports\n", + "Getting /wiki/Republic_(retailer)\n", + "Getting /wiki/Umbro\n", + "Getting /wiki/USC_Canada\n", + "Already fetched /wiki/Main_Page\n", + "Already fetched /wiki/Main_Page\n", + "Getting /wiki/SeedChange\n", + "Getting /wiki/SeedChange\n", + "Getting /wiki/SeedChange\n", + "Getting /wiki/Nonprofit_organization\n", + "Getting /wiki/Lotta_Hitschmanova\n", + "Getting /wiki/Family_farms\n", + "Getting /wiki/Ecosystem\n", + "Getting /wiki/Food_sovereignty\n", + "Getting /wiki/National_Geographic_(magazine)\n", + "Getting /wiki/Lotta_Hitschmanova\n", + "Getting /wiki/Biodiversity_loss\n", + "Getting /wiki/Food_system\n", + "Getting /wiki/Seeds_of_Diversity\n", + "Getting /wiki/ISBN_(identifier)\n", + "Getting /wiki/Heckler_%26_Koch_USC\n", + "Already fetched /wiki/Main_Page\n", + "Already fetched /wiki/Main_Page\n", + "Getting /wiki/Heckler_%26_Koch_UMP\n", + "Getting /wiki/Heckler_%26_Koch_UMP\n", + "Getting /wiki/Heckler_%26_Koch_UMP\n", + "Getting /wiki/Knight%27s_Armament_Company\n", + "Getting /wiki/Vertical_forward_grip\n", + "Getting /wiki/Submachine_gun\n", + "Getting /wiki/Heckler_%26_Koch\n", + "Getting /wiki/Magazine_(firearms)\n", + "Getting /wiki/Stock_(firearm)\n", + "Getting /wiki/Gun_barrel\n", + "Getting /wiki/Cartridge_(firearms)\n", + "Getting /wiki/.45_ACP\n", + "Getting /wiki/.40_S%26W\n", + "Getting /wiki/9%C3%9719mm_Parabellum\n", + "Getting /wiki/Action_(firearms)\n", + "Getting /wiki/Blowback_operation\n", + "Getting /wiki/Closed_bolt\n", + "Getting /wiki/Rate_of_fire\n", + "Getting /wiki/Muzzle_velocity\n", + "Getting /wiki/.45_ACP\n", + "Getting /wiki/9%C3%9719mm_Parabellum\n", + "Getting /wiki/9%C3%9719mm_Parabellum\n", + "Getting /wiki/.45_ACP\n", + "Getting /wiki/Magazine_(firearms)\n", + "Getting /wiki/Submachine_gun\n", + "Getting /wiki/Heckler_%26_Koch\n", + "Getting /wiki/Heckler_%26_Koch_MP5\n", + "Getting /wiki/.45_ACP\n", + "Getting /wiki/5th_Special_Forces_Group\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Getting /wiki/United_States_Army_Special_Forces\n", + "Getting /wiki/Iraqi_insurgency_(2003%E2%80%932011)\n", + "Getting /wiki/U.S._military\n", + "Getting /wiki/Heckler_%26_Koch_MP5\n", + "Getting /wiki/Heckler_%26_Koch_MP5\n", + "Getting /wiki/Blowback_operation\n", + "Getting /wiki/Magazine_(firearms)\n", + "Getting /wiki/Closed_bolt\n", + "Getting /wiki/Cartridge_(firearms)\n", + "Getting /wiki/.45_ACP\n", + "Getting /wiki/.40_S%26W\n", + "Getting /wiki/Stopping_power\n", + "Getting /wiki/Automatic_firearm\n", + "Getting /wiki/Rate_of_fire\n", + "Getting /wiki/.45_ACP#Plus_P\n", + "Getting /wiki/Polymer\n", + "Getting /wiki/Semi-automatic_firearm\n", + "Getting /wiki/Safety_(firearms)\n", + "Getting /wiki/Stock_(firearm)\n", + "Getting /wiki/Iron_sights#Aperture_sights\n", + "Getting /wiki/Picatinny_rail\n", + "Getting /wiki/Receiver_(firearms)\n", + "Getting /wiki/Forearm_(firearm_component)\n", + "Getting /wiki/Tactical_light\n", + "Getting /wiki/Laser_applications#Laser_sight\n", + "Getting /wiki/Vertical_forward_grip\n", + "Getting /wiki/U.S._Customs_and_Border_Protection\n", + "Getting /wiki/.45_ACP\n", + "Getting /wiki/.40_S%26W\n", + "Getting /wiki/9%C3%9719mm_Parabellum\n", + "Getting /wiki/Bolt_(firearm)\n", + "Getting /wiki/Gun_barrel\n", + "Getting /wiki/Federal_assault_weapons_ban\n", + "Getting /wiki/Trigger_group\n", + "Getting /wiki/Australia\n", + "Getting /wiki/Victoria_Police\n", + "Getting /wiki/Critical_Incident_Response_Team\n", + "Getting /wiki/New_South_Wales_Police_Force\n", + "Getting /wiki/State_Protection_Group\n", + "Getting /wiki/Brazil\n", + "Getting /wiki/Brazilian_Special_Operations_Command\n", + "Getting /wiki/Brazilian_Army\n", + "Getting /wiki/COMANF\n", + "Getting /wiki/Brazilian_Marine_Corps\n", + "Getting /wiki/Canada\n", + "Getting /wiki/Brantford\n", + "Getting /wiki/Georgia_(country)\n", + "Getting /wiki/Georgian_Special_Operations_Forces\n", + "Getting /wiki/Jordan\n", + "Getting /wiki/Latvia\n", + "Getting /wiki/Liechtenstein\n", + "Getting /wiki/Law_enforcement_in_Liechtenstein#Structure\n", + "Getting /wiki/Law_enforcement_in_Liechtenstein#Structure\n", + "Getting /wiki/Malaysia\n", + "Getting /wiki/PASKAL\n", + "Getting /wiki/Royal_Malaysian_Navy\n", + "Getting /wiki/Malaysian_Maritime_Enforcement_Agency\n", + "Getting /wiki/Mexico\n", + "Getting /wiki/Mexican_Naval_Infantry\n", + "Getting /wiki/Paraguay\n", + "Getting /wiki/Poland\n", + "Getting /wiki/Policja\n", + "Getting /wiki/Portugal\n", + "Getting /wiki/Portuguese_Armed_Forces\n", + "Getting /wiki/Romania\n", + "Getting /wiki/Romanian_Land_Forces\n", + "Getting /wiki/Romanian_Naval_Forces\n", + "Getting /wiki/Serbia\n", + "Getting /wiki/72nd_Brigade_for_Special_Operations\n", + "Getting /wiki/63rd_Parachute_Brigade\n", + "Getting /wiki/Serbian_Armed_Forces\n", + "Getting /wiki/Slovakia\n", + "Getting /wiki/5th_Special_Forces_Regiment_(Slovakia)\n", + "Getting /wiki/Slovak_Army\n", + "Getting /wiki/South_Africa\n", + "Getting /wiki/National_Intervention_Unit\n", + "Getting /wiki/Special_operations\n", + "Getting /wiki/South_African_Police_Service\n", + "Getting /wiki/Spain\n", + "Getting /wiki/Spanish_Army\n", + "Getting /wiki/United_States\n", + "Getting /wiki/U.S._Border_Patrol\n", + "Getting /wiki/Pentagon_Force_Protection_Agency\n", + "Getting /wiki/Charlotte-Mecklenburg_Police_Department\n", + "Getting /wiki/ISBN_(identifier)\n", + "Getting /wiki/Kevin_Dockery_(author)\n", + "Getting /wiki/ISBN_(identifier)\n", + "Getting /wiki/ISBN_(identifier)\n", + "Getting /wiki/ISBN_(identifier)\n", + "Getting /wiki/ISBN_(identifier)\n", + "Getting /wiki/Wikimedia_Commons\n", + "Getting /wiki/QuickTime#File_formats\n", + "Getting /wiki/Heckler_%26_Koch\n", + "Getting /wiki/Handgun\n", + "Getting /wiki/Heckler_%26_Koch_HK4\n", + "Getting /wiki/Heckler_%26_Koch_VP70\n", + "Getting /wiki/Heckler_%26_Koch_P9\n", + "Getting /wiki/Heckler_%26_Koch_P7\n", + "Getting /wiki/Heckler_%26_Koch_Mark_23\n", + "Getting /wiki/Heckler_%26_Koch_USP\n", + "Getting /wiki/Heckler_%26_Koch_P2000\n", + "Getting /wiki/Heckler_%26_Koch_P30\n", + "Getting /wiki/Heckler_%26_Koch_HK45\n", + "Getting /wiki/Heckler_%26_Koch_VP9\n", + "Getting /wiki/Service_rifle\n", + "Getting /wiki/Heckler_%26_Koch_G3\n", + "Getting /wiki/Heckler_%26_Koch_HK33\n", + "Getting /wiki/Heckler_%26_Koch_G41\n", + "Getting /wiki/Heckler_%26_Koch_G36\n", + "Getting /wiki/Heckler_%26_Koch_HK416\n", + "Getting /wiki/Heckler_%26_Koch_HK417\n", + "Getting /wiki/Heckler_%26_Koch_HK433\n", + "Getting /wiki/M27_IAR\n", + "Getting /wiki/Heckler_%26_Koch_HK417#G28\n", + "Getting /wiki/Sniper_rifle\n", + "Getting /wiki/Heckler_%26_Koch_G3#Specialized_G3_types\n", + "Getting /wiki/Heckler_%26_Koch_HK33#Variants\n", + "Getting /wiki/Heckler_%26_Koch_PSG1\n", + "Getting /wiki/Heckler_%26_Koch_PSG1#MSG90\n", + "Getting /wiki/Heckler_%26_Koch_SL8#SL9SD\n", + "Getting /wiki/Rifle\n", + "Getting /wiki/Heckler_%26_Koch_HK41\n", + "Getting /wiki/Heckler_%26_Koch_HK43\n", + "Getting /wiki/Heckler_%26_Koch_HK416#Civilian\n", + "Getting /wiki/Heckler_%26_Koch_HK417#Civilian\n", + "Getting /wiki/Heckler_%26_Koch_SL6\n", + "Getting /wiki/Heckler_%26_Koch_SL7\n", + "Getting /wiki/Heckler_%26_Koch_SL8\n", + "Getting /wiki/Heckler_%26_Koch_SR9\n", + "Getting /wiki/Shotgun\n", + "Getting /wiki/Heckler_%26_Koch_HK512\n", + "Getting /wiki/Heckler_%26_Koch_FABARM_FP6\n", + "Getting /wiki/Submachine_gun\n", + "Getting /wiki/Heckler_%26_Koch_MP5\n", + "Getting /wiki/Heckler_%26_Koch_MP7\n", + "Getting /wiki/Machine_gun\n", + "Getting /wiki/Heckler_%26_Koch_HK21\n", + "Getting /wiki/Heckler_%26_Koch_MG4\n", + "Getting /wiki/Heckler_%26_Koch_MG5\n", + "Getting /wiki/Grenade_launcher\n", + "Getting /wiki/Heckler_%26_Koch_HK69A1\n", + "Getting /wiki/Heckler_%26_Koch_AG-C/EGLM\n", + "Getting /wiki/Heckler_%26_Koch_AG36\n", + "Getting /wiki/M320_Grenade_Launcher_Module\n", + "Getting /wiki/Heckler_%26_Koch_GMG\n", + "Getting /wiki/XM25_CDTE\n", + "Getting /wiki/Heckler_%26_Koch_UCP\n", + "Getting /wiki/Heckler_%26_Koch_HK32\n", + "Getting /wiki/Heckler_%26_Koch_HK36\n", + "Getting /wiki/Heckler_%26_Koch_G11\n", + "Getting /wiki/XM29_OICW\n", + "Getting /wiki/Heckler_%26_Koch_XM8\n", + "Getting /wiki/Heckler_%26_Koch_HK_CAWS\n", + "Getting /wiki/Heckler_%26_Koch_P2A1\n", + "Getting /wiki/Heckler_%26_Koch_P11\n", + "Getting /wiki/HK_4.6%C3%9730mm\n", + "Getting /wiki/4.6%C3%9736mm\n", + "Getting /wiki/L98A2\n", + "Getting /wiki/Ubuntu_Software_Center\n" + ] + }, + { + "ename": "KeyboardInterrupt", + "evalue": "", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mKeyboardInterrupt\u001b[0m Traceback (most recent call last)", + "Input \u001b[0;32mIn [55]\u001b[0m, in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[1;32m 55\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m:\n\u001b[1;32m 56\u001b[0m \u001b[38;5;28mprint\u001b[39m(\u001b[38;5;124mf\u001b[39m\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mAlready fetched \u001b[39m\u001b[38;5;132;01m{\u001b[39;00mlink\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m'\u001b[39m)\n\u001b[0;32m---> 59\u001b[0m \u001b[43mgetLinks\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;124;43m'\u001b[39;49m\u001b[38;5;124;43m/wiki/Kevin_Bacon\u001b[39;49m\u001b[38;5;124;43m'\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m0\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mloadPages\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\u001b[43m)\u001b[49m \n\u001b[1;32m 60\u001b[0m cur\u001b[38;5;241m.\u001b[39mclose()\n\u001b[1;32m 61\u001b[0m conn\u001b[38;5;241m.\u001b[39mclose()\n", + "Input \u001b[0;32mIn [55]\u001b[0m, in \u001b[0;36mgetLinks\u001b[0;34m(pageUrl, recursionLevel, pages)\u001b[0m\n\u001b[1;32m 52\u001b[0m \u001b[38;5;28mprint\u001b[39m(\u001b[38;5;124mf\u001b[39m\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mGetting \u001b[39m\u001b[38;5;132;01m{\u001b[39;00mlink\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m'\u001b[39m)\n\u001b[1;32m 53\u001b[0m pages\u001b[38;5;241m.\u001b[39mappend(link)\n\u001b[0;32m---> 54\u001b[0m \u001b[43mgetLinks\u001b[49m\u001b[43m(\u001b[49m\u001b[43mlink\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mrecursionLevel\u001b[49m\u001b[38;5;241;43m+\u001b[39;49m\u001b[38;5;241;43m1\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mpages\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 55\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m:\n\u001b[1;32m 56\u001b[0m \u001b[38;5;28mprint\u001b[39m(\u001b[38;5;124mf\u001b[39m\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mAlready fetched \u001b[39m\u001b[38;5;132;01m{\u001b[39;00mlink\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m'\u001b[39m)\n", + "Input \u001b[0;32mIn [55]\u001b[0m, in \u001b[0;36mgetLinks\u001b[0;34m(pageUrl, recursionLevel, pages)\u001b[0m\n\u001b[1;32m 52\u001b[0m \u001b[38;5;28mprint\u001b[39m(\u001b[38;5;124mf\u001b[39m\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mGetting \u001b[39m\u001b[38;5;132;01m{\u001b[39;00mlink\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m'\u001b[39m)\n\u001b[1;32m 53\u001b[0m pages\u001b[38;5;241m.\u001b[39mappend(link)\n\u001b[0;32m---> 54\u001b[0m \u001b[43mgetLinks\u001b[49m\u001b[43m(\u001b[49m\u001b[43mlink\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mrecursionLevel\u001b[49m\u001b[38;5;241;43m+\u001b[39;49m\u001b[38;5;241;43m1\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mpages\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 55\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m:\n\u001b[1;32m 56\u001b[0m \u001b[38;5;28mprint\u001b[39m(\u001b[38;5;124mf\u001b[39m\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mAlready fetched \u001b[39m\u001b[38;5;132;01m{\u001b[39;00mlink\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m'\u001b[39m)\n", + " \u001b[0;31m[... skipping similar frames: getLinks at line 54 (1 times)]\u001b[0m\n", + "Input \u001b[0;32mIn [55]\u001b[0m, in \u001b[0;36mgetLinks\u001b[0;34m(pageUrl, recursionLevel, pages)\u001b[0m\n\u001b[1;32m 52\u001b[0m \u001b[38;5;28mprint\u001b[39m(\u001b[38;5;124mf\u001b[39m\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mGetting \u001b[39m\u001b[38;5;132;01m{\u001b[39;00mlink\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m'\u001b[39m)\n\u001b[1;32m 53\u001b[0m pages\u001b[38;5;241m.\u001b[39mappend(link)\n\u001b[0;32m---> 54\u001b[0m \u001b[43mgetLinks\u001b[49m\u001b[43m(\u001b[49m\u001b[43mlink\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mrecursionLevel\u001b[49m\u001b[38;5;241;43m+\u001b[39;49m\u001b[38;5;241;43m1\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mpages\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 55\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m:\n\u001b[1;32m 56\u001b[0m \u001b[38;5;28mprint\u001b[39m(\u001b[38;5;124mf\u001b[39m\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mAlready fetched \u001b[39m\u001b[38;5;132;01m{\u001b[39;00mlink\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m'\u001b[39m)\n", + "Input \u001b[0;32mIn [55]\u001b[0m, in \u001b[0;36mgetLinks\u001b[0;34m(pageUrl, recursionLevel, pages)\u001b[0m\n\u001b[1;32m 42\u001b[0m pageId \u001b[38;5;241m=\u001b[39m insertPageIfNotExists(pageUrl)\n\u001b[1;32m 43\u001b[0m html \u001b[38;5;241m=\u001b[39m urlopen(\u001b[38;5;124mf\u001b[39m\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mhttp://en.wikipedia.org\u001b[39m\u001b[38;5;132;01m{\u001b[39;00mpageUrl\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m'\u001b[39m)\n\u001b[0;32m---> 44\u001b[0m bs \u001b[38;5;241m=\u001b[39m \u001b[43mBeautifulSoup\u001b[49m\u001b[43m(\u001b[49m\u001b[43mhtml\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;124;43m'\u001b[39;49m\u001b[38;5;124;43mhtml.parser\u001b[39;49m\u001b[38;5;124;43m'\u001b[39;49m\u001b[43m)\u001b[49m\n\u001b[1;32m 45\u001b[0m links \u001b[38;5;241m=\u001b[39m bs\u001b[38;5;241m.\u001b[39mfindAll(\u001b[38;5;124m'\u001b[39m\u001b[38;5;124ma\u001b[39m\u001b[38;5;124m'\u001b[39m, href\u001b[38;5;241m=\u001b[39mre\u001b[38;5;241m.\u001b[39mcompile(\u001b[38;5;124m'\u001b[39m\u001b[38;5;124m^(/wiki/)((?!:).)*$\u001b[39m\u001b[38;5;124m'\u001b[39m))\n\u001b[1;32m 46\u001b[0m links \u001b[38;5;241m=\u001b[39m [link\u001b[38;5;241m.\u001b[39mattrs[\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mhref\u001b[39m\u001b[38;5;124m'\u001b[39m] \u001b[38;5;28;01mfor\u001b[39;00m link \u001b[38;5;129;01min\u001b[39;00m links]\n", + "File \u001b[0;32m~/opt/anaconda3/lib/python3.9/site-packages/bs4/__init__.py:312\u001b[0m, in \u001b[0;36mBeautifulSoup.__init__\u001b[0;34m(self, markup, features, builder, parse_only, from_encoding, exclude_encodings, element_classes, **kwargs)\u001b[0m\n\u001b[1;32m 309\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mparse_only \u001b[38;5;241m=\u001b[39m parse_only\n\u001b[1;32m 311\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28mhasattr\u001b[39m(markup, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mread\u001b[39m\u001b[38;5;124m'\u001b[39m): \u001b[38;5;66;03m# It's a file-type object.\u001b[39;00m\n\u001b[0;32m--> 312\u001b[0m markup \u001b[38;5;241m=\u001b[39m \u001b[43mmarkup\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mread\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 313\u001b[0m \u001b[38;5;28;01melif\u001b[39;00m \u001b[38;5;28mlen\u001b[39m(markup) \u001b[38;5;241m<\u001b[39m\u001b[38;5;241m=\u001b[39m \u001b[38;5;241m256\u001b[39m \u001b[38;5;129;01mand\u001b[39;00m (\n\u001b[1;32m 314\u001b[0m (\u001b[38;5;28misinstance\u001b[39m(markup, \u001b[38;5;28mbytes\u001b[39m) \u001b[38;5;129;01mand\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;124mb\u001b[39m\u001b[38;5;124m'\u001b[39m\u001b[38;5;124m<\u001b[39m\u001b[38;5;124m'\u001b[39m \u001b[38;5;129;01min\u001b[39;00m markup)\n\u001b[1;32m 315\u001b[0m \u001b[38;5;129;01mor\u001b[39;00m (\u001b[38;5;28misinstance\u001b[39m(markup, \u001b[38;5;28mstr\u001b[39m) \u001b[38;5;129;01mand\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;124m'\u001b[39m\u001b[38;5;124m<\u001b[39m\u001b[38;5;124m'\u001b[39m \u001b[38;5;129;01min\u001b[39;00m markup)\n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 319\u001b[0m \u001b[38;5;66;03m# Beautiful Soup will still parse the input as markup,\u001b[39;00m\n\u001b[1;32m 320\u001b[0m \u001b[38;5;66;03m# since that is sometimes the intended behavior.\u001b[39;00m\n\u001b[1;32m 321\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_markup_is_url(markup):\n", + "File \u001b[0;32m~/opt/anaconda3/lib/python3.9/http/client.py:476\u001b[0m, in \u001b[0;36mHTTPResponse.read\u001b[0;34m(self, amt)\u001b[0m\n\u001b[1;32m 474\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m:\n\u001b[1;32m 475\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[0;32m--> 476\u001b[0m s \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_safe_read\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mlength\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 477\u001b[0m \u001b[38;5;28;01mexcept\u001b[39;00m IncompleteRead:\n\u001b[1;32m 478\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_close_conn()\n", + "File \u001b[0;32m~/opt/anaconda3/lib/python3.9/http/client.py:626\u001b[0m, in \u001b[0;36mHTTPResponse._safe_read\u001b[0;34m(self, amt)\u001b[0m\n\u001b[1;32m 624\u001b[0m s \u001b[38;5;241m=\u001b[39m []\n\u001b[1;32m 625\u001b[0m \u001b[38;5;28;01mwhile\u001b[39;00m amt \u001b[38;5;241m>\u001b[39m \u001b[38;5;241m0\u001b[39m:\n\u001b[0;32m--> 626\u001b[0m chunk \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mfp\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mread\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;28;43mmin\u001b[39;49m\u001b[43m(\u001b[49m\u001b[43mamt\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mMAXAMOUNT\u001b[49m\u001b[43m)\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 627\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m chunk:\n\u001b[1;32m 628\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m IncompleteRead(\u001b[38;5;124mb\u001b[39m\u001b[38;5;124m'\u001b[39m\u001b[38;5;124m'\u001b[39m\u001b[38;5;241m.\u001b[39mjoin(s), amt)\n", + "File \u001b[0;32m~/opt/anaconda3/lib/python3.9/socket.py:704\u001b[0m, in \u001b[0;36mSocketIO.readinto\u001b[0;34m(self, b)\u001b[0m\n\u001b[1;32m 702\u001b[0m \u001b[38;5;28;01mwhile\u001b[39;00m \u001b[38;5;28;01mTrue\u001b[39;00m:\n\u001b[1;32m 703\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[0;32m--> 704\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_sock\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mrecv_into\u001b[49m\u001b[43m(\u001b[49m\u001b[43mb\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 705\u001b[0m \u001b[38;5;28;01mexcept\u001b[39;00m timeout:\n\u001b[1;32m 706\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_timeout_occurred \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;01mTrue\u001b[39;00m\n", + "File \u001b[0;32m~/opt/anaconda3/lib/python3.9/ssl.py:1241\u001b[0m, in \u001b[0;36mSSLSocket.recv_into\u001b[0;34m(self, buffer, nbytes, flags)\u001b[0m\n\u001b[1;32m 1237\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m flags \u001b[38;5;241m!=\u001b[39m \u001b[38;5;241m0\u001b[39m:\n\u001b[1;32m 1238\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m \u001b[38;5;167;01mValueError\u001b[39;00m(\n\u001b[1;32m 1239\u001b[0m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mnon-zero flags not allowed in calls to recv_into() on \u001b[39m\u001b[38;5;132;01m%s\u001b[39;00m\u001b[38;5;124m\"\u001b[39m \u001b[38;5;241m%\u001b[39m\n\u001b[1;32m 1240\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m\u001b[38;5;18m__class__\u001b[39m)\n\u001b[0;32m-> 1241\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mread\u001b[49m\u001b[43m(\u001b[49m\u001b[43mnbytes\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mbuffer\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 1242\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m:\n\u001b[1;32m 1243\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28msuper\u001b[39m()\u001b[38;5;241m.\u001b[39mrecv_into(buffer, nbytes, flags)\n", + "File \u001b[0;32m~/opt/anaconda3/lib/python3.9/ssl.py:1099\u001b[0m, in \u001b[0;36mSSLSocket.read\u001b[0;34m(self, len, buffer)\u001b[0m\n\u001b[1;32m 1097\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[1;32m 1098\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m buffer \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m:\n\u001b[0;32m-> 1099\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_sslobj\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mread\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;28;43mlen\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mbuffer\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 1100\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m:\n\u001b[1;32m 1101\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_sslobj\u001b[38;5;241m.\u001b[39mread(\u001b[38;5;28mlen\u001b[39m)\n", + "\u001b[0;31mKeyboardInterrupt\u001b[0m: " + ] + } + ], + "source": [ + "from urllib.request import urlopen\n", + "from bs4 import BeautifulSoup\n", + "import re\n", + "import pymysql\n", + "from random import shuffle\n", + "\n", + "conn = pymysql.connect(host='127.0.0.1', unix_socket='/tmp/mysql.sock',\n", + " user='root', passwd='password', db='mysql', charset='utf8')\n", + "cur = conn.cursor()\n", + "cur.execute('USE wikipedia')\n", + "\n", + "def insertPageIfNotExists(url):\n", + " cur.execute('SELECT id FROM pages WHERE url = %s LIMIT 1', (url))\n", + " page = cur.fetchone()\n", + " if not page:\n", + " cur.execute('INSERT INTO pages (url) VALUES (%s)', (url))\n", + " conn.commit()\n", + " return cur.lastrowid\n", + " else:\n", + " return page[0]\n", + "\n", + "def loadPages():\n", + " cur.execute('SELECT url FROM pages')\n", + " return [row[0] for row in cur.fetchall()]\n", + "\n", + "def insertLink(fromPageId, toPageId):\n", + " cur.execute('SELECT EXISTS(SELECT 1 FROM links WHERE fromPageId = %s AND toPageId = %s)',(int(fromPageId), int(toPageId)))\n", + " if not cur.fetchone()[0]:\n", + " cur.execute('INSERT INTO links (fromPageId, toPageId) VALUES (%s, %s)', \n", + " (int(fromPageId), int(toPageId)))\n", + " conn.commit()\n", + "\n", + "def pageHasLinks(pageId):\n", + " cur.execute('SELECT EXISTS(SELECT 1 FROM links WHERE fromPageId = %s)', (int(pageId)))\n", + " return cur.fetchone()[0]\n", + "\n", + "\n", + "def getLinks(pageUrl, recursionLevel, pages):\n", + " if recursionLevel > 4:\n", + " return\n", + "\n", + " pageId = insertPageIfNotExists(pageUrl)\n", + " html = urlopen(f'http://en.wikipedia.org{pageUrl}')\n", + " bs = BeautifulSoup(html, 'html.parser')\n", + " links = bs.findAll('a', href=re.compile('^(/wiki/)((?!:).)*$'))\n", + " links = [link.attrs['href'] for link in links]\n", + "\n", + " for link in links:\n", + " linkId = insertPageIfNotExists(link)\n", + " insertLink(pageId, linkId)\n", + " if not pageHasLinks(linkId):\n", + " print(f'Getting {link}')\n", + " pages.append(link)\n", + " getLinks(link, recursionLevel+1, pages)\n", + " else:\n", + " print(f'Already fetched {link}')\n", + " \n", + " \n", + "getLinks('/wiki/Kevin_Bacon', 0, loadPages()) \n", + "cur.close()\n", + "conn.close()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import smtplib\n", + "from email.mime.text import MIMEText\n", + "\n", + "msg = MIMEText('The body of the email is here')\n", + "\n", + "msg['Subject'] = 'An Email Alert'\n", + "msg['From'] = 'ryan@pythonscraping.com'\n", + "msg['To'] = 'webmaster@pythonscraping.com'\n", + "\n", + "s = smtplib.SMTP('localhost')\n", + "s.send_message(msg)\n", + "s.quit()" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [ + { + "ename": "ConnectionRefusedError", + "evalue": "[Errno 61] Connection refused", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mConnectionRefusedError\u001b[0m Traceback (most recent call last)", + "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[1;32m 21\u001b[0m \u001b[0mbs\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mBeautifulSoup\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0murlopen\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'https://isitchristmas.com/'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m'html.parser'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 22\u001b[0m sendMail('It\\'s Christmas!', \n\u001b[0;32m---> 23\u001b[0;31m 'According to http://itischristmas.com, it is Christmas!')\n\u001b[0m", + "\u001b[0;32m\u001b[0m in \u001b[0;36msendMail\u001b[0;34m(subject, body)\u001b[0m\n\u001b[1;32m 11\u001b[0m \u001b[0mmsg\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m'To'\u001b[0m\u001b[0;34m]\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m'ryan@pythonscraping.com'\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 12\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 13\u001b[0;31m \u001b[0ms\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0msmtplib\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mSMTP\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'localhost'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 14\u001b[0m \u001b[0ms\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msend_message\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mmsg\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 15\u001b[0m \u001b[0ms\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mquit\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/smtplib.py\u001b[0m in \u001b[0;36m__init__\u001b[0;34m(self, host, port, local_hostname, timeout, source_address)\u001b[0m\n\u001b[1;32m 249\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 250\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mhost\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 251\u001b[0;31m \u001b[0;34m(\u001b[0m\u001b[0mcode\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mmsg\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mconnect\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mhost\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mport\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 252\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mcode\u001b[0m \u001b[0;34m!=\u001b[0m \u001b[0;36m220\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 253\u001b[0m \u001b[0;32mraise\u001b[0m \u001b[0mSMTPConnectError\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mcode\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mmsg\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/smtplib.py\u001b[0m in \u001b[0;36mconnect\u001b[0;34m(self, host, port, source_address)\u001b[0m\n\u001b[1;32m 333\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mdebuglevel\u001b[0m \u001b[0;34m>\u001b[0m \u001b[0;36m0\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 334\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_print_debug\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'connect:'\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m(\u001b[0m\u001b[0mhost\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mport\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 335\u001b[0;31m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msock\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_get_socket\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mhost\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mport\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mtimeout\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 336\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mfile\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;32mNone\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 337\u001b[0m \u001b[0;34m(\u001b[0m\u001b[0mcode\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mmsg\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mgetreply\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/smtplib.py\u001b[0m in \u001b[0;36m_get_socket\u001b[0;34m(self, host, port, timeout)\u001b[0m\n\u001b[1;32m 304\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_print_debug\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'connect: to'\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m(\u001b[0m\u001b[0mhost\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mport\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msource_address\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 305\u001b[0m return socket.create_connection((host, port), timeout,\n\u001b[0;32m--> 306\u001b[0;31m self.source_address)\n\u001b[0m\u001b[1;32m 307\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 308\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0mconnect\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mhost\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;34m'localhost'\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mport\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;36m0\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0msource_address\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;32mNone\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/socket.py\u001b[0m in \u001b[0;36mcreate_connection\u001b[0;34m(address, timeout, source_address)\u001b[0m\n\u001b[1;32m 720\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 721\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0merr\u001b[0m \u001b[0;32mis\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0;32mNone\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 722\u001b[0;31m \u001b[0;32mraise\u001b[0m \u001b[0merr\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 723\u001b[0m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 724\u001b[0m \u001b[0;32mraise\u001b[0m \u001b[0merror\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"getaddrinfo returns an empty list\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/socket.py\u001b[0m in \u001b[0;36mcreate_connection\u001b[0;34m(address, timeout, source_address)\u001b[0m\n\u001b[1;32m 711\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0msource_address\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 712\u001b[0m \u001b[0msock\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mbind\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0msource_address\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 713\u001b[0;31m \u001b[0msock\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mconnect\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0msa\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 714\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0msock\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 715\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;31mConnectionRefusedError\u001b[0m: [Errno 61] Connection refused" + ] + } + ], + "source": [ + "import smtplib\n", + "from email.mime.text import MIMEText\n", + "from bs4 import BeautifulSoup\n", + "from urllib.request import urlopen\n", + "import time\n", + "\n", + "def sendMail(subject, body):\n", + " msg = MIMEText(body)\n", + " msg['Subject'] = subject\n", + " msg['From'] ='christmas_alerts@pythonscraping.com'\n", + " msg['To'] = 'ryan@pythonscraping.com'\n", + "\n", + " s = smtplib.SMTP('localhost')\n", + " s.send_message(msg)\n", + " s.quit()\n", + "\n", + "bs = BeautifulSoup(urlopen('https://isitchristmas.com/'), 'html.parser')\n", + "while(bs.find('a', {'id':'answer'}).attrs['title'] == 'NO'):\n", + " print('It is not Christmas yet.')\n", + " time.sleep(3600)\n", + " bs = BeautifulSoup(urlopen('https://isitchristmas.com/'), 'html.parser')\n", + "sendMail('It\\'s Christmas!', \n", + " 'According to https://isitchristmas.com/, it is Christmas!')" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "'" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.9.12" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/Chapter10-CrawlingThroughFormsAndLogins.ipynb b/Chapter10-CrawlingThroughFormsAndLogins.ipynb deleted file mode 100644 index 9c9f25f..0000000 --- a/Chapter10-CrawlingThroughFormsAndLogins.ipynb +++ /dev/null @@ -1,554 +0,0 @@ -{ - "cells": [ - { - "cell_type": "code", - "execution_count": 1, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Hello there, Ryan Mitchell!\n" - ] - } - ], - "source": [ - "import requests\n", - "\n", - "params = {'firstname': 'Ryan', 'lastname': 'Mitchell'}\n", - "r = requests.post(\"http://pythonscraping.com/pages/processing.php\", data=params)\n", - "print(r.text)" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " \n", - "\tO’Reilly Media - Email Subscription Center\n", - "\n", - " \n", - " \n", - "\n", - " \n", - "\n", - "\t\n", - " \n", - "\n", - " \n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\t
\n", - "\t\t\n", - "\t
\n", - "\n", - "\t
\n", - "
\n", - " \t\t
\n", - " \t\t\t

Your Email Subscription

\n", - "\n", - " \n", - "\n", - " \t\t\t

We want to stay in touch, but only in ways that you find helpful. Select your preferences by using the form below and saving your changes.

\n", - "\n", - "

You’re Almost Finished

\n", - "\n", - "

One more click and you’ll be all set. To confirm your subscription, please add to your profile below, or simply confirm by clicking this button:

\n", - "\n", - " \n", - "
\n", - " \n", - "
\n", - "\n", - "

Complete Your Profile

\n", - "
\n", - "
\n", - "\t\n", - "\tryan.e.mitchell@gmail.com   (Not ryan.e.mitchell@gmail.com?)\n", - "\t
\n", - "
\n", - "
\n", - " \n", - "\n", - "
\n", - "\n", - "
\n", - " \n", - "\n", - "
\n", - "
\n", - " \t\t
\n", - "\n", - " \t\t
\n", - "

Choose Your Email Preferences

\n", - "\n", - "
\n", - " \t\t\t

Training

\n", - " \n", - "\n", - " \t\t\t

Webcasts

\n", - " \n", - "\n", - " \t\t\t

Product and Promotion Alerts

\n", - "
\n", - " Business & Leadership\n", - " Data\n", - " Design\n", - " Digital Photography\n", - " DIY\n", - " Game Design & Development\n", - " IoT\n", - " Linux & Unix\n", - " Math and Science\n", - " Mobile Design & Development\n", - "
\n", - "\n", - " \n", - "
\n", - "\n", - "
\n", - " \t\t\t

Newsletters

\n", - "
\n", - " Artifical Intelligence\n", - " Data\n", - " Design\n", - " FinTech\n", - " Four short links\n", - " Next:Economy\n", - " Programming\n", - " Security\n", - " Systems Engineering and Operations\n", - " Web\n", - " \t
\n", - "\n", - "\n", - "

Conference Bulletins

\n", - " \n", - "\n", - "
\n", - "\n", - " \n", - "\n", - " \n", - "\n", - " \n", - "\n", - " \n", - "\n", - " \n", - "\n", - " \n", - "\n", - " \n", - "\n", - " \n", - "\n", - " \n", - "\n", - " \n", - "\n", - " \n", - "\n", - " \n", - "\n", - " \n", - "\n", - " \n", - "\n", - " \n", - "\n", - " \n", - "\n", - " \n", - "\n", - " \n", - "\n", - " \n", - "\n", - " \n", - "\n", - " \n", - "\n", - " \n", - "\n", - " \n", - "\n", - " \n", - "\n", - " \n", - "\n", - " \n", - "\n", - " \n", - "\n", - " \n", - "\n", - " \n", - "\n", - " \n", - "\n", - "\n", - " \n", - "\n", - " \n", - "\n", - " \n", - "\n", - " \n", - "\n", - " \n", - "\n", - " \n", - "\n", - " \n", - "\n", - " \n", - "\n", - " \n", - "\n", - " \n", - "\n", - " \n", - "\n", - " \n", - "\n", - " \n", - "\n", - " \n", - "\n", - "
\n", - "
\n", - "

Scroll to manage all subscription options.

\n", - "
\n", - "
\n", - "
\n", - " \n", - "
\n", - "\n", - "

We take your privacy seriously and will not sell or distribute your email.

\n", - " \n", - "\t\t
\n", - " \n", - "
\n", - "\t
\n", - "\n", - "\t\n", - "\n", - " \n", - "\n", - " \n", - "\n", - "\n", - "\n", - "\n", - "\n" - ] - } - ], - "source": [ - "import requests\n", - "params = {'email_addr': 'ryan.e.mitchell@gmail.com'}\n", - "r = requests.post(\"http://post.oreilly.com/client/o/oreilly/forms/quicksignup.cgi\",\n", - " data=params)\n", - "print(r.text)" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "metadata": {}, - "outputs": [ - { - "ename": "FileNotFoundError", - "evalue": "[Errno 2] No such file or directory: 'files/Python-logo.png'", - "output_type": "error", - "traceback": [ - "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", - "\u001b[0;31mFileNotFoundError\u001b[0m Traceback (most recent call last)", - "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[1;32m 1\u001b[0m \u001b[0;32mimport\u001b[0m \u001b[0mrequests\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 2\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 3\u001b[0;31m \u001b[0mfiles\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m{\u001b[0m\u001b[0;34m'uploadFile'\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0mopen\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'files/Python-logo.png'\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m'rb'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m}\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 4\u001b[0m \u001b[0mr\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mrequests\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mpost\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'http://pythonscraping.com/pages/processing2.php'\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mfiles\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mfiles\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 5\u001b[0m \u001b[0mprint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mr\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mtext\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;31mFileNotFoundError\u001b[0m: [Errno 2] No such file or directory: 'files/Python-logo.png'" - ] - } - ], - "source": [ - "import requests\n", - "\n", - "files = {'uploadFile': open('files/Python-logo.png', 'rb')}\n", - "r = requests.post('http://pythonscraping.com/pages/processing2.php', files=files)\n", - "print(r.text)" - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Cookie is set to:\n", - "{'loggedin': '1', 'username': 'Ryan'}\n", - "-----------\n", - "Going to profile page...\n", - "Hey Ryan! Looks like you're still logged into the site!\n" - ] - } - ], - "source": [ - "import requests\n", - "\n", - "params = {'username': 'Ryan', 'password': 'password'}\n", - "r = requests.post('http://pythonscraping.com/pages/cookies/welcome.php', params)\n", - "print('Cookie is set to:')\n", - "print(r.cookies.get_dict())\n", - "print('Going to profile page...')\n", - "r = requests.get('http://pythonscraping.com/pages/cookies/profile.php', \n", - " cookies=r.cookies)\n", - "print(r.text)" - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Cookie is set to:\n", - "{'loggedin': '1', 'username': 'username'}\n", - "Going to profile page...\n", - "Hey username! Looks like you're still logged into the site!\n" - ] - } - ], - "source": [ - "import requests\n", - "\n", - "session = requests.Session()\n", - "\n", - "params = {'username': 'username', 'password': 'password'}\n", - "s = session.post('http://pythonscraping.com/pages/cookies/welcome.php', params)\n", - "print(\"Cookie is set to:\")\n", - "print(s.cookies.get_dict())\n", - "print('Going to profile page...')\n", - "s = session.get('http://pythonscraping.com/pages/cookies/profile.php')\n", - "print(s.text)" - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "

Hello ryan.

You entered password as your password.

\n" - ] - } - ], - "source": [ - "import requests\n", - "from requests.auth import AuthBase\n", - "from requests.auth import HTTPBasicAuth\n", - "\n", - "auth = HTTPBasicAuth('ryan', 'password')\n", - "r = requests.post(\n", - " url='http://pythonscraping.com/pages/auth/login.php', auth=auth)\n", - "print(r.text)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.6.1" - } - }, - "nbformat": 4, - "nbformat_minor": 2 -} diff --git a/Chapter07_ReadingDocuments.ipynb b/Chapter10_ReadingDocuments.ipynb similarity index 59% rename from Chapter07_ReadingDocuments.ipynb rename to Chapter10_ReadingDocuments.ipynb index cf69284..183fdf0 100644 --- a/Chapter07_ReadingDocuments.ipynb +++ b/Chapter10_ReadingDocuments.ipynb @@ -2,7 +2,7 @@ "cells": [ { "cell_type": "code", - "execution_count": 5, + "execution_count": 1, "metadata": {}, "outputs": [], "source": [ @@ -11,7 +11,7 @@ }, { "cell_type": "code", - "execution_count": 1, + "execution_count": 2, "metadata": {}, "outputs": [ { @@ -30,7 +30,7 @@ }, { "cell_type": "code", - "execution_count": 2, + "execution_count": 3, "metadata": {}, "outputs": [ { @@ -50,7 +50,7 @@ }, { "cell_type": "code", - "execution_count": 3, + "execution_count": 4, "metadata": {}, "outputs": [ { @@ -114,1063 +114,1401 @@ }, { "cell_type": "code", - "execution_count": 7, + "execution_count": 5, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "\n", - "Python\n", + "This article's lead section may be too short to adequately summarize the key points. Please consider expanding the lead to provide an accessible overview of all important aspects of the article. (March 2023)\n", "\n", "\n", + "General-purpose programming language\n", "\n", "\n", - "Paradigm\n", - "Object-oriented, imperative, functional, procedural, reflective\n", - "\n", + "PythonParadigmMulti-paradigm: object-oriented,[1] procedural (imperative), functional, structured, reflectiveDesigned byGuido van RossumDeveloperPython Software FoundationFirst appeared20 February 1991; 32 years ago (1991-02-20)[2]Stable release3.11.3[3] \n", + " / 5 April 2023; 12 days ago (5 April 2023)Preview release3.12.0a7[4] \n", + " / 5 April 2023; 12 days ago (5 April 2023)\n", + "Typing disciplineDuck, dynamic, strong typing;[5] gradual (since 3.5, but ignored in CPython)[6]OSWindows, macOS, Linux/UNIX, Android[7][8] and more[9]LicensePython Software Foundation LicenseFilename extensions.py, .pyi, .pyc, .pyd, .pyw, .pyz (since 3.5),[10] .pyo (prior to 3.5)[11]Websitepython.orgMajor implementationsCPython, PyPy, Stackless Python, MicroPython, CircuitPython, IronPython, JythonDialectsCython, RPython, Starlark[12]Influenced byABC,[13] Ada,[14] ALGOL 68,[15] APL,[16] C,[17] C++,[18] CLU,[19] Dylan,[20] Haskell,[21][16] Icon,[22] Lisp,[23] Modula-3,[15][18] Perl,[24] Standard ML[16]InfluencedApache Groovy, Boo, Cobra, CoffeeScript,[25] D, F#, GDScript, Genie,[26] Go, JavaScript,[27][28] Julia,[29] Nim, Ring,[30] Ruby,[31] Swift[32]\n", + " Python Programming at Wikibooks\n", "\n", - "Designed by\n", - "Guido van Rossum\n", + "Python is a high-level, general-purpose programming language. Its design philosophy emphasizes code readability with the use of significant indentation via the off-side rule.[33]\n", + "Python is dynamically typed and garbage-collected. It supports multiple programming paradigms, including structured (particularly procedural), object-oriented and functional programming. It is often described as a \"batteries included\" language due to its comprehensive standard library.[34][35]\n", + "Guido van Rossum began working on Python in the late 1980s as a successor to the ABC programming language and first released it in 1991 as Python 0.9.0.[36] Python 2.0 was released in 2000. Python 3.0, released in 2008, was a major revision not completely backward-compatible with earlier versions. Python 2.7.18, released in 2020, was the last release of Python 2.[37]\n", + "Python consistently ranks as one of the most popular programming languages.[38][39][40][41]\n", "\n", "\n", - "Developer\n", - "Python Software Foundation\n", + "History\n", + " The designer of Python, Guido van Rossum, at OSCON 2006\n", + "Main article: History of Python\n", + "Python was conceived in the late 1980s[42] by Guido van Rossum at Centrum Wiskunde & Informatica (CWI) in the Netherlands as a successor to the ABC programming language, which was inspired by SETL,[43] capable of exception handling and interfacing with the Amoeba operating system.[13] Its implementation began in December 1989.[44] Van Rossum shouldered sole responsibility for the project, as the lead developer, until 12 July 2018, when he announced his \"permanent vacation\" from his responsibilities as Python's \"benevolent dictator for life\", a title the Python community bestowed upon him to reflect his long-term commitment as the project's chief decision-maker.[45] In January 2019, active Python core developers elected a five-member Steering Council to lead the project.[46][47]\n", + "Python 2.0 was released on 16 October 2000, with many major new features such as list comprehensions, cycle-detecting garbage collection, reference counting, and Unicode support.[48] Python 3.0, released on 3 December 2008, with many of its major features backported to Python 2.6.x[49] and 2.7.x. Releases of Python 3 include the 2to3 utility, which automates the translation of Python 2 code to Python 3.[50]\n", + "Python 2.7's end-of-life was initially set for 2015, then postponed to 2020 out of concern that a large body of existing code could not easily be forward-ported to Python 3.[51][52] No further security patches or other improvements will be released for it.[53][54] Currently only 3.7 and later are supported. In 2021, Python 3.9.2 and 3.8.8 were expedited[55] as all versions of Python (including 2.7[56]) had security issues leading to possible remote code execution[57] and web cache poisoning.[58]\n", + "In 2022, Python 3.10.4 and 3.9.12 were expedited[59] and 3.8.13, and 3.7.13, because of many security issues.[60] When Python 3.9.13 was released in May 2022, it was announced that the 3.9 series (joining the older series 3.8 and 3.7) would only receive security fixes in the future.[61] On September 7, 2022, four new releases were made due to a potential denial-of-service attack: 3.10.7, 3.9.14, 3.8.14, and 3.7.14.[62][63]\n", + "As of November 2022,[update] Python 3.11 is the stable release. Notable changes from 3.10 include increased program execution speed and improved error reporting.[64]\n", + "\n", + "Design philosophy and features\n", + "Python is a multi-paradigm programming language. Object-oriented programming and structured programming are fully supported, and many of their features support functional programming and aspect-oriented programming (including metaprogramming[65] and metaobjects).[66] Many other paradigms are supported via extensions, including design by contract[67][68] and logic programming.[69]\n", + "Python uses dynamic typing and a combination of reference counting and a cycle-detecting garbage collector for memory management.[70] It uses dynamic name resolution (late binding), which binds method and variable names during program execution.\n", + "Its design offers some support for functional programming in the Lisp tradition. It has filter,mapandreduce functions; list comprehensions, dictionaries, sets, and generator expressions.[71] The standard library has two modules (itertools and functools) that implement functional tools borrowed from Haskell and Standard ML.[72]\n", + "Its core philosophy is summarized in the document The Zen of Python (PEP 20), which includes aphorisms such as:[73]\n", + "\n", + "Beautiful is better than ugly.\n", + "Explicit is better than implicit.\n", + "Simple is better than complex.\n", + "Complex is better than complicated.\n", + "Readability counts.\n", + "Rather than building all of its functionality into its core, Python was designed to be highly extensible via modules. This compact modularity has made it particularly popular as a means of adding programmable interfaces to existing applications. Van Rossum's vision of a small core language with a large standard library and easily extensible interpreter stemmed from his frustrations with ABC, which espoused the opposite approach.[42]\n", + "Python strives for a simpler, less-cluttered syntax and grammar while giving developers a choice in their coding methodology. In contrast to Perl's \"there is more than one way to do it\" motto, Python embraces a \"there should be one—and preferably only one—obvious way to do it\" philosophy.[73] Alex Martelli, a Fellow at the Python Software Foundation and Python book author, wrote: \"To describe something as 'clever' is not considered a compliment in the Python culture.\"[74]\n", + "Python's developers strive to avoid premature optimization and reject patches to non-critical parts of the CPython reference implementation that would offer marginal increases in speed at the cost of clarity.[75] When speed is important, a Python programmer can move time-critical functions to extension modules written in languages such as C; or use PyPy, a just-in-time compiler. Cython is also available, which translates a Python script into C and makes direct C-level API calls into the Python interpreter.\n", + "Python's developers aim for it to be fun to use. This is reflected in its name—a tribute to the British comedy group Monty Python[76]—and in occasionally playful approaches to tutorials and reference materials, such as the use of the terms \"spam\" and \"eggs\" (a reference to a Monty Python sketch) in examples, instead of the often-used \"foo\" and \"bar\".[77][78]\n", + "A common neologism in the Python community is pythonic, which has a wide range of meanings related to program style. \"Pythonic\" code may use Python idioms well, be natural or show fluency in the language, or conform with Python's minimalist philosophy and emphasis on readability. Code that is difficult to understand or reads like a rough transcription from another programming language is called unpythonic.[79][80]\n", + "\n", + "Syntax and semantics\n", + "Main article: Python syntax and semantics\n", + "Python is meant to be an easily readable language. Its formatting is visually uncluttered and often uses English keywords where other languages use punctuation. Unlike many other languages, it does not use curly brackets to delimit blocks, and semicolons after statements are allowed but rarely used. It has fewer syntactic exceptions and special cases than C or Pascal.[81]\n", "\n", + "Indentation\n", + "Main article: Python syntax and semantics § Indentation\n", + "Python uses whitespace indentation, rather than curly brackets or keywords, to delimit blocks. An increase in indentation comes after certain statements; a decrease in indentation signifies the end of the current block.[82] Thus, the program's visual structure accurately represents its semantic structure.[83] This feature is sometimes termed the off-side rule. Some other languages use indentation this way; but in most, indentation has no semantic meaning. The recommended indent size is four spaces.[84]\n", + "\n", + "Statements and control flow\n", + "Python's statements include:\n", + "\n", + "The assignment statement, using a single equals sign =\n", + "The if statement, which conditionally executes a block of code, along with else and elif (a contraction of else-if)\n", + "The for statement, which iterates over an iterable object, capturing each element to a local variable for use by the attached block\n", + "The while statement, which executes a block of code as long as its condition is true\n", + "The try statement, which allows exceptions raised in its attached code block to be caught and handled by except clauses (or new syntax except* in Python 3.11 for exception groups[85]); it also ensures that clean-up code in a finally block is always run regardless of how the block exits\n", + "The raise statement, used to raise a specified exception or re-raise a caught exception\n", + "The class statement, which executes a block of code and attaches its local namespace to a class, for use in object-oriented programming\n", + "The def statement, which defines a function or method\n", + "The with statement, which encloses a code block within a context manager (for example, acquiring a lock before it is run, then releasing the lock; or opening and closing a file), allowing resource-acquisition-is-initialization (RAII)-like behavior and replacing a common try/finally idiom[86]\n", + "The break statement, which exits a loop\n", + "The continue statement, which skips the rest of the current iteration and continues with the next\n", + "The del statement, which removes a variable—deleting the reference from the name to the value, and producing an error if the variable is referred to before it is redefined\n", + "The pass statement, serving as a NOP, syntactically needed to create an empty code block\n", + "The assert statement, used in debugging to check for conditions that should apply\n", + "The yield statement, which returns a value from a generator function (and also an operator); used to implement coroutines\n", + "The return statement, used to return a value from a function\n", + "The import and from statements, used to import modules whose functions or variables can be used in the current program\n", + "The assignment statement (=) binds a name as a reference to a separate, dynamically allocated object. Variables may subsequently be rebound at any time to any object. In Python, a variable name is a generic reference holder without a fixed data type; however, it always refers to some object with a type. This is called dynamic typing—in contrast to statically-typed languages, where each variable may contain only a value of a certain type.\n", + "Python does not support tail call optimization or first-class continuations, and, according to Van Rossum, it never will.[87][88] However, better support for coroutine-like functionality is provided by extending Python's generators.[89] Before 2.5, generators were lazy iterators; data was passed unidirectionally out of the generator. From Python 2.5 on, it is possible to pass data back into a generator function; and from version 3.3, it can be passed through multiple stack levels.[90]\n", + "\n", + "Expressions\n", + "Python's expressions include:\n", + "\n", + "The +, -, and * operators for mathematical addition, subtraction, and multiplication are similar to other languages, but the behavior of division differs. There are two types of divisions in Python: floor division (or integer division) // and floating-point/division.[91] Python uses the ** operator for exponentiation.\n", + "Python uses the + operator for string concatenation. Python uses the * operator for duplicating a string a specified number of times.\n", + "The @ infix operator. It is intended to be used by libraries such as NumPy for matrix multiplication.[92][93]\n", + "The syntax :=, called the \"walrus operator\", was introduced in Python 3.8. It assigns values to variables as part of a larger expression.[94]\n", + "In Python, == compares by value. Python's is operator may be used to compare object identities (comparison by reference), and comparisons may be chained—for example, a <= b <= c.\n", + "Python uses and, or, and not as boolean operators.\n", + "Python has a type of expression called a list comprehension, as well as a more general expression called a generator expression.[71]\n", + "Anonymous functions are implemented using lambda expressions; however, there may be only one expression in each body.\n", + "Conditional expressions are written as x if c else y[95] (different in order of operands from the c ? x : y operator common to many other languages).\n", + "Python makes a distinction between lists and tuples. Lists are written as [1, 2, 3], are mutable, and cannot be used as the keys of dictionaries (dictionary keys must be immutable in Python). Tuples, written as (1, 2, 3), are immutable and thus can be used as keys of dictionaries, provided all of the tuple's elements are immutable. The + operator can be used to concatenate two tuples, which does not directly modify their contents, but produces a new tuple containing the elements of both. Thus, given the variable t initially equal to (1, 2, 3), executing t = t + (4, 5) first evaluates t + (4, 5), which yields (1, 2, 3, 4, 5), which is then assigned back to t—thereby effectively \"modifying the contents\" of t while conforming to the immutable nature of tuple objects. Parentheses are optional for tuples in unambiguous contexts.[96]\n", + "Python features sequence unpacking where multiple expressions, each evaluating to anything that can be assigned (to a variable, writable property, etc.) are associated in an identical manner to that forming tuple literals—and, as a whole, are put on the left-hand side of the equal sign in an assignment statement. The statement expects an iterable object on the right-hand side of the equal sign that produces the same number of values as the provided writable expressions; when iterated through them, it assigns each of the produced values to the corresponding expression on the left.[97]\n", + "Python has a \"string format\" operator % that functions analogously to printf format strings in C—e.g. \"spam=%s eggs=%d\" % (\"blah\", 2) evaluates to \"spam=blah eggs=2\". In Python 2.6+ and 3+, this was supplemented by the format() method of the str class, e.g. \"spam={0} eggs={1}\".format(\"blah\", 2). Python 3.6 added \"f-strings\": spam = \"blah\"; eggs = 2; f'spam={spam} eggs={eggs}'.[98]\n", + "Strings in Python can be concatenated by \"adding\" them (with the same operator as for adding integers and floats), e.g. \"spam\" + \"eggs\" returns \"spameggs\". If strings contain numbers, they are added as strings rather than integers, e.g. \"2\" + \"2\" returns \"22\".\n", + "Python has various string literals:\n", + "Delimited by single or double quote marks; unlike in Unix shells, Perl, and Perl-influenced languages, single and double quote marks work the same. Both use the backslash (\\) as an escape character. String interpolation became available in Python 3.6 as \"formatted string literals\".[98]\n", + "Triple-quoted (beginning and ending with three single or double quote marks), which may span multiple lines and function like here documents in shells, Perl, and Ruby.\n", + "Raw string varieties, denoted by prefixing the string literal with r. Escape sequences are not interpreted; hence raw strings are useful where literal backslashes are common, such as regular expressions and Windows-style paths. (Compare \"@-quoting\" in C#.)\n", + "Python has array index and array slicing expressions in lists, denoted as a[key], a[start:stop] or a[start:stop:step]. Indexes are zero-based, and negative indexes are relative to the end. Slices take elements from the start index up to, but not including, the stop index. The third slice parameter called step or stride, allows elements to be skipped and reversed. Slice indexes may be omitted—for example, a[:] returns a copy of the entire list. Each element of a slice is a shallow copy.\n", + "In Python, a distinction between expressions and statements is rigidly enforced, in contrast to languages such as Common Lisp, Scheme, or Ruby. This leads to duplicating some functionality. For example:\n", "\n", - "First appeared\n", - "20 February 1991; 26 years ago (1991-02-20)[1]\n", + "List comprehensions vs. for-loops\n", + "Conditional expressions vs. if blocks\n", + "The eval() vs. exec() built-in functions (in Python 2, exec is a statement); the former is for expressions, the latter is for statements\n", + "Statements cannot be a part of an expression—so list and other comprehensions or lambda expressions, all being expressions, cannot contain statements. A particular case is that an assignment statement such as a = 1 cannot form part of the conditional expression of a conditional statement. This has the advantage of avoiding a classic C error of mistaking an assignment operator = for an equality operator == in conditions: if (c = 1) { ...} is syntactically valid (but probably unintended) C code, but if c = 1: ... causes a syntax error in Python.\n", "\n", + "Methods\n", + "Methods on objects are functions attached to the object's class; the syntax instance.method(argument) is, for normal methods and functions, syntactic sugar for Class.method(instance, argument). Python methods have an explicit self parameter to access instance data, in contrast to the implicit self (or this) in some other object-oriented programming languages (e.g., C++, Java, Objective-C, Ruby).[99] Python also provides methods, often called dunder methods (due to their names beginning and ending with double-underscores), to allow user-defined classes to modify how they are handled by native operations including length, comparison, in arithmetic operations and type conversion.[100]\n", "\n", + "Typing\n", + " The standard type hierarchy in Python 3\n", + "Python uses duck typing and has typed objects but untyped variable names. Type constraints are not checked at compile time; rather, operations on an object may fail, signifying that it is not of a suitable type. Despite being dynamically typed, Python is strongly typed, forbidding operations that are not well-defined (for example, adding a number to a string) rather than silently attempting to make sense of them.\n", + "Python allows programmers to define their own types using classes, most often used for object-oriented programming. New instances of classes are constructed by calling the class (for example, SpamClass() or EggsClass()), and the classes are instances of the metaclass type (itself an instance of itself), allowing metaprogramming and reflection.\n", + "Before version 3.0, Python had two kinds of classes (both using the same syntax): old-style and new-style,[101] current Python versions only support the semantics new style.\n", + "Python supports gradual typing.[102] Python's syntax allows specifying static types, but they are not checked in the default implementation, CPython. An experimental optional static type-checker, mypy, supports compile-time type checking.[103]\n", "\n", "\n", + "Summary of Python 3's built-in types\n", "\n", - "Stable release\n", "\n", - "3.6.4 / 19 December 2017; 18 days ago (2017-12-19)[2]\n", - "2.7.14 / 16 September 2017; 3 months ago (2017-09-16)[3]\n", + "Type\n", "\n", + "Mutability\n", "\n", + "Description\n", "\n", + "Syntax examples\n", "\n", "\n", + "bool\n", "\n", - "Typing discipline\n", - "Duck, dynamic, strong\n", + "immutable\n", "\n", + "Boolean value\n", "\n", - "License\n", - "Python Software Foundation License\n", + "TrueFalse\n", "\n", "\n", - "Filename extensions\n", - ".py, .pyc, .pyd, .pyo (prior to 3.5),[4] .pyw, .pyz (since 3.5)[5]\n", + "bytearray\n", "\n", + "mutable\n", "\n", - "Website\n", - "python.org\n", + "Sequence of bytes\n", "\n", + "bytearray(b'Some ASCII')bytearray(b\"Some ASCII\")bytearray([119, 105, 107, 105])\n", "\n", - "Major implementations\n", "\n", + "bytes\n", "\n", - "CPython, IronPython, Jython, MicroPython, Numba, PyPy, Stackless Python\n", + "immutable\n", "\n", + "Sequence of bytes\n", "\n", - "Dialects\n", + "b'Some ASCII'b\"Some ASCII\"bytes([119, 105, 107, 105])\n", "\n", "\n", - "Cython, RPython\n", + "complex\n", "\n", + "immutable\n", "\n", - "Influenced by\n", + "Complex number with real and imaginary parts\n", "\n", + "3+2.7j3 + 2.7j\n", "\n", - "ABC,[6] ALGOL 68,[7] C,[8] C++,[9] CLU,[10] Dylan,[11] Haskell,[12] Icon,[13] Java,[14] Lisp,[15] Modula-3,[9] Perl\n", "\n", + "dict\n", "\n", - "Influenced\n", + "mutable\n", "\n", + "Associative array (or dictionary) of key and value pairs; can contain mixed types (keys and values), keys must be a hashable type\n", "\n", - "Boo, Cobra, Coconut,[16] CoffeeScript,[17] D, F#, Falcon, Genie,[18] Go, Groovy, JavaScript,[19][20] Julia,[21] Nim, Ring[22], Ruby,[23] Swift[24]\n", + "{'key1': 1.0, 3: False}{}\n", "\n", "\n", + "types.EllipsisType\n", "\n", + "immutable\n", "\n", - " Python Programming at Wikibooks\n", + "An ellipsis placeholder to be used as an index in NumPy arrays\n", "\n", + "...Ellipsis\n", "\n", "\n", + "float\n", "\n", - "Python is an interpreted high-level programming language for general-purpose programming. Created by Guido van Rossum and first released in 1991, Python has a design philosophy that emphasizes code readability, and a syntax that allows programmers to express concepts in fewer lines of code,[25][26] notably using significant whitespace. It provides constructs that enable clear programming on both small and large scales.[27]\n", - "Python features a dynamic type system and automatic memory management. It supports multiple programming paradigms, including object-oriented, imperative, functional and procedural, and has a large and comprehensive standard library.[28]\n", - "Python interpreters are available for many operating systems. CPython, the reference implementation of Python, is open source software[29] and has a community-based development model, as do nearly all of its variant implementations. CPython is managed by the non-profit Python Software Foundation.\n", + "immutable\n", "\n", + "Double-precision floating-point number. The precision is machine-dependent but in practice is generally implemented as a 64-bit IEEE 754 number with 53 bits of precision.[104]\n", "\n", "\n", - "Contents\n", + "1.33333\n", "\n", "\n", - "1 History\n", - "2 Features and philosophy\n", - "3 Syntax and semantics\n", "\n", - "3.1 Indentation\n", - "3.2 Statements and control flow\n", - "3.3 Expressions\n", - "3.4 Methods\n", - "3.5 Typing\n", - "3.6 Mathematics\n", + "frozenset\n", "\n", + "immutable\n", "\n", - "4 Libraries\n", - "5 Development environments\n", - "6 Implementations\n", + "Unordered set, contains no duplicates; can contain mixed types, if hashable\n", "\n", - "6.1 Reference implementation\n", - "6.2 Other implementations\n", - "6.3 Unsupported implementations\n", - "6.4 Cross-compilers to other languages\n", - "6.5 Performance\n", + "frozenset([4.0, 'string', True])\n", "\n", "\n", - "7 Development\n", - "8 Naming\n", - "9 Uses\n", - "10 Languages influenced by Python\n", - "11 See also\n", - "12 References\n", - "13 Further reading\n", - "14 External links\n", + "int\n", "\n", + "immutable\n", "\n", + "Integer of unlimited magnitude[105]\n", "\n", - "History[edit]\n", + "42\n", "\n", "\n", + "list\n", "\n", + "mutable\n", "\n", - "Guido van Rossum, the creator of Python\n", + "List, can contain mixed types\n", "\n", + "[4.0, 'string', True][]\n", "\n", - "Main article: History of Python\n", - "Python was conceived in the late 1980s,[30] and its implementation began in December 1989[31] by Guido van Rossum at Centrum Wiskunde & Informatica (CWI) in the Netherlands as a successor to the ABC language (itself inspired by SETL)[32] capable of exception handling and interfacing with the Amoeba operating system.[6] Van Rossum remains Python's principal author. His continuing central role in Python's development is reflected in the title given to him by the Python community: Benevolent Dictator For Life (BDFL).\n", - "On the origins of Python, Van Rossum wrote in 1996:[33]\n", - "\n", - "\n", - "“\n", - "...In December 1989, I was looking for a \"hobby\" programming project that would keep me occupied during the week around Christmas. My office ... would be closed, but I had a home computer, and not much else on my hands. I decided to write an interpreter for the new scripting language I had been thinking about lately: a descendant of ABC that would appeal to Unix/C hackers. I chose Python as a working title for the project, being in a slightly irreverent mood (and a big fan of Monty Python's Flying Circus).\n", - "”\n", - "\n", - "\n", - "Python 2.0 was released on 16 October 2000 and had many major new features, including a cycle-detecting garbage collector and support for Unicode. With this release, the development process became more transparent and community-backed.[34]\n", - "Python 3.0 (initially called Python 3000 or py3k) was released on 3 December 2008 after a long testing period. It is a major revision of the language that is not backward-compatible with previous versions.[35] However, many of its major features have been backported to the backward-compatible Python 2.6.x[36] and 2.7.x version series.\n", - "Python 2.7's end-of-life date (a.k.a. EOL, sunset date) was initially set at 2015, then postponed to 2020 out of concern that a large body of existing code could not easily be forward-ported to Python 3.[37][38] In January 2017, Google announced work on a Python 2.7 to Go transcompiler. The Register speculated that this was in response to Python 2.7's planned end-of-life[39], but Google cited performance under concurrent workloads as their only motivation.[40]\n", - "Features and philosophy[edit]\n", - "Python is a multi-paradigm programming language. Object-oriented programming and structured programming are fully supported, and many of its features support functional programming and aspect-oriented programming (including by metaprogramming[41] and metaobjects (magic methods)).[42] Many other paradigms are supported via extensions, including design by contract[43][44] and logic programming.[45]\n", - "Python uses dynamic typing, and a combination of reference counting and a cycle-detecting garbage collector for memory management. It also features dynamic name resolution (late binding), which binds method and variable names during program execution.\n", - "Python's design offers some support for functional programming in the Lisp tradition. It has filter(), map(), and reduce() functions; list comprehensions, dictionaries, and sets; and generator expressions.[46] The standard library has two modules (itertools and functools) that implement functional tools borrowed from Haskell and Standard ML.[47]\n", - "The language's core philosophy is summarized in the document The Zen of Python (PEP 20), which includes aphorisms such as:[48]\n", - "\n", - "Beautiful is better than ugly\n", - "Explicit is better than implicit\n", - "Simple is better than complex\n", - "Complex is better than complicated\n", - "Readability counts\n", - "\n", - "Rather than having all of its functionality built into its core, Python was designed to be highly extensible. This compact modularity has made it particularly popular as a means of adding programmable interfaces to existing applications. Van Rossum's vision of a small core language with a large standard library and easily extensible interpreter stemmed from his frustrations with ABC, which espoused the opposite approach.[30]\n", - "While offering choice in coding methodology, the Python philosophy rejects exuberant syntax (such as that of Perl) in favor of a simpler, less-cluttered grammar. As Alex Martelli put it: \"To describe something as 'clever' is not considered a compliment in the Python culture.\"[49] Python's philosophy rejects the Perl \"there is more than one way to do it\" approach to language design in favor of \"there should be one—and preferably only one—obvious way to do it\".[48]\n", - "Python's developers strive to avoid premature optimization, and reject patches to non-critical parts of CPython that would offer marginal increases in speed at the cost of clarity.[50] When speed is important, a Python programmer can move time-critical functions to extension modules written in languages such as C, or use PyPy, a just-in-time compiler. Cython is also available, which translates a Python script into C and makes direct C-level API calls into the Python interpreter.\n", - "An important goal of Python's developers is keeping it fun to use. This is reflected in the language's name—a tribute to the British comedy group Monty Python[51]—and in occasionally playful approaches to tutorials and reference materials, such as examples that refer to spam and eggs (from a famous Monty Python sketch) instead of the standard foo and bar.[52][53]\n", - "A common neologism in the Python community is pythonic, which can have a wide range of meanings related to program style. To say that code is pythonic is to say that it uses Python idioms well, that it is natural or shows fluency in the language, that it conforms with Python's minimalist philosophy and emphasis on readability. In contrast, code that is difficult to understand or reads like a rough transcription from another programming language is called unpythonic.\n", - "Users and admirers of Python, especially those considered knowledgeable or experienced, are often referred to as Pythonists, Pythonistas, and Pythoneers.[54][55]\n", - "Syntax and semantics[edit]\n", - "Main article: Python syntax and semantics\n", - "Python is meant to be an easily readable language. Its formatting is visually uncluttered, and it often uses English keywords where other languages use punctuation. Unlike many other languages, it does not use curly brackets to delimit blocks, and semicolons after statements are optional. It has fewer syntactic exceptions and special cases than C or Pascal.[56]\n", - "Indentation[edit]\n", - "Main article: Python syntax and semantics § Indentation\n", - "Python uses whitespace indentation, rather than curly braces or keywords, to delimit blocks. An increase in indentation comes after certain statements; a decrease in indentation signifies the end of the current block.[57] This feature is also sometimes termed the off-side rule.\n", - "Statements and control flow[edit]\n", - "Python's statements include (among others):\n", - "\n", - "The assignment statement (token '=', the equals sign). This operates differently than in traditional imperative programming languages, and this fundamental mechanism (including the nature of Python's version of variables) illuminates many other features of the language. Assignment in C, e.g., x = 2, translates to \"typed variable name x receives a copy of numeric value 2\". The (right-hand) value is copied into an allocated storage location for which the (left-hand) variable name is the symbolic address. The memory allocated to the variable is large enough (potentially quite large) for the declared type. In the simplest case of Python assignment, using the same example, x = 2, translates to \"(generic) name x receives a reference to a separate, dynamically allocated object of numeric (int) type of value 2.\" This is termed binding the name to the object. Since the name's storage location doesn't contain the indicated value, it is improper to call it a variable. Names may be subsequently rebound at any time to objects of greatly varying types, including strings, procedures, complex objects with data and methods, etc. Successive assignments of a common value to multiple names, e.g., x = 2; y = 2; z = 2 result in allocating storage to (at most) three names and one numeric object, to which all three names are bound. Since a name is a generic reference holder it is unreasonable to associate a fixed data type with it. However at a given time a name will be bound to some object, which will have a type; thus there is dynamic typing.\n", - "The if statement, which conditionally executes a block of code, along with else and elif (a contraction of else-if).\n", - "The for statement, which iterates over an iterable object, capturing each element to a local variable for use by the attached block.\n", - "The while statement, which executes a block of code as long as its condition is true.\n", - "The try statement, which allows exceptions raised in its attached code block to be caught and handled by except clauses; it also ensures that clean-up code in a finally block will always be run regardless of how the block exits.\n", - "The class statement, which executes a block of code and attaches its local namespace to a class, for use in object-oriented programming.\n", - "The def statement, which defines a function or method.\n", - "The with statement (from Python 2.5), which encloses a code block within a context manager (for example, acquiring a lock before the block of code is run and releasing the lock afterwards, or opening a file and then closing it), allowing Resource Acquisition Is Initialization (RAII)-like behavior.\n", - "The pass statement, which serves as a NOP. It is syntactically needed to create an empty code block.\n", - "The assert statement, used during debugging to check for conditions that ought to apply.\n", - "The yield statement, which returns a value from a generator function. From Python 2.5, yield is also an operator. This form is used to implement coroutines.\n", - "The import statement, which is used to import modules whose functions or variables can be used in the current program. There are two ways of using import: from import * or import .\n", - "The print statement was changed to the print() function in Python 3.[58]\n", - "\n", - "Python does not support tail call optimization or first-class continuations, and, according to Guido van Rossum, it never will.[59][60] However, better support for coroutine-like functionality is provided in 2.5, by extending Python's generators.[61] Before 2.5, generators were lazy iterators; information was passed unidirectionally out of the generator. From Python 2.5, it is possible to pass information back into a generator function, and from Python 3.3, the information can be passed through multiple stack levels.[62]\n", - "Expressions[edit]\n", - "Some Python expressions are similar to languages such as C and Java, while some are not:\n", - "\n", - "Addition, subtraction, and multiplication are the same, but the behavior of division differs. There are two types of divisions in Python. They are floor division and integer division.[63] Python also added the ** operator for exponentiation.\n", - "From Python 3.5, it enables support of matrix multiplication with the @ operator.[64][65]\n", - "In Python, == compares by value, versus Java, which compares numerics by value[66] and objects by reference.[67] (Value comparisons in Java on objects can be performed with the equals() method.) Python's is operator may be used to compare object identities (comparison by reference). In Python, comparisons may be chained, for example a <= b <= c.\n", - "Python uses the words and, or, not for its boolean operators rather than the symbolic &&, ||, ! used in Java and C.\n", - "Python has a type of expression termed a list comprehension. Python 2.4 extended list comprehensions into a more general expression termed a generator expression.[46]\n", - "Anonymous functions are implemented using lambda expressions; however, these are limited in that the body can only be one expression.\n", - "Conditional expressions in Python are written as x if c else y[68] (different in order of operands from the c ? x : y operator common to many other languages).\n", - "Python makes a distinction between lists and tuples. Lists are written as [1, 2, 3], are mutable, and cannot be used as the keys of dictionaries (dictionary keys must be immutable in Python). Tuples are written as (1, 2, 3), are immutable and thus can be used as the keys of dictionaries, provided all elements of the tuple are immutable. The + operator can be used to concatenate two tuples, which does not directly modify their contents, but rather produces a new tuple containing the elements of both provided tuples. Thus, given the variable t initially equal to (1, 2, 3), executing t = t + (4, 5) first evaluates t + (4, 5), which yields (1, 2, 3, 4, 5), which is then assigned back to t, thereby effectively \"modifying the contents\" of t, while conforming to the immutable nature of tuple objects. Parentheses are optional for tuples in unambiguous contexts.[69]\n", - "Python features sequence unpacking where multiple expressions, each evaluating to anything that can be assigned to (a variable, a writable property, etc), are associated in the identical manner to that forming tuple literals and, as a whole, are put on the left hand side of the equal sign in an assignment statement. The statement expects an iterable object on the right hand side of the equal sign that produces the same number of values as the provided writable expressions when iterated through, and will iterate through it, assigning each of the produced values to the corresponding expression on the left.[citation needed]\n", - "Python has a \"string format\" operator %. This functions analogous to printf format strings in C, e.g. \"spam=%s eggs=%d\" % (\"blah\", 2) evaluates to \"spam=blah eggs=2\". In Python 3 and 2.6+, this was supplemented by the format() method of the str class, e.g. \"spam={0} eggs={1}\".format(\"blah\", 2), Python 3.6 added \"f-strings\": f'spam={\"blah\"} eggs={2}'.[70]\n", - "Python has various kinds of string literals:\n", - "\n", - "Strings delimited by single or double quote marks. Unlike in Unix shells, Perl and Perl-influenced languages, single quote marks and double quote marks function identically. Both kinds of string use the backslash (\\) as an escape character. String interpolation became available in Python 3.6 as \"formatted string literals\".[70]\n", - "Triple-quoted strings, which begin and end with a series of three single or double quote marks. They may span multiple lines and function like here documents in shells, Perl and Ruby.\n", - "Raw string varieties, denoted by prefixing the string literal with an r. Escape sequences are not interpreted; hence raw strings are useful where literal backslashes are common, such as regular expressions and Windows-style paths. Compare \"@-quoting\" in C#.\n", - "\n", - "\n", - "Python has array index and array slicing expressions on lists, denoted as a[key], a[start:stop] or a[start:stop:step]. Indexes are zero-based, and negative indexes are relative to the end. Slices take elements from the start index up to, but not including, the stop index. The third slice parameter, called step or stride, allows elements to be skipped and reversed. Slice indexes may be omitted, for example a[:] returns a copy of the entire list. Each element of a slice is a shallow copy.\n", "\n", - "In Python, a distinction between expressions and statements is rigidly enforced, in contrast to languages such as Common Lisp, Scheme, or Ruby. This leads to duplicating some functionality. For example:\n", + "types.NoneType\n", "\n", - "List comprehensions vs. for-loops\n", - "Conditional expressions vs. if blocks\n", - "The eval() vs. exec() built-in functions (in Python 2, exec is a statement); the former is for expressions, the latter is for statements.\n", + "immutable\n", "\n", - "Statements cannot be a part of an expression, so list and other comprehensions or lambda expressions, all being expressions, cannot contain statements. A particular case of this is that an assignment statement such as a = 1 cannot form part of the conditional expression of a conditional statement. This has the advantage of avoiding a classic C error of mistaking an assignment operator = for an equality operator == in conditions: if (c = 1) { ... } is syntactically valid (but probably unintended) C code but if c = 1: ... causes a syntax error in Python.\n", - "Methods[edit]\n", - "Methods on objects are functions attached to the object's class; the syntax instance.method(argument) is, for normal methods and functions, syntactic sugar for Class.method(instance, argument). Python methods have an explicit self parameter to access instance data, in contrast to the implicit self (or this) in some other object-oriented programming languages (e.g., C++, Java, Objective-C, or Ruby).[71]\n", - "Typing[edit]\n", - "Python uses duck typing and has typed objects but untyped variable names. Type constraints are not checked at compile time; rather, operations on an object may fail, signifying that the given object is not of a suitable type. Despite being dynamically typed, Python is strongly typed, forbidding operations that are not well-defined (for example, adding a number to a string) rather than silently attempting to make sense of them.\n", - "Python allows programmers to define their own types using classes, which are most often used for object-oriented programming. New instances of classes are constructed by calling the class (for example, SpamClass() or EggsClass()), and the classes are instances of the metaclass type (itself an instance of itself), allowing metaprogramming and reflection.\n", - "Before version 3.0, Python had two kinds of classes: old-style and new-style.[72] The syntax of both styles is the same, the difference being whether the class object is inherited from, directly or indirectly (all new-style classes inherit from object and are instances of type). In versions of Python 2 from Python 2.2 onwards, both kinds of classes can be used. Old-style classes were eliminated in Python 3.0.\n", - "The long term plan is to support gradual typing[73] and from Python 3.5, the syntax of the language allows specifying static types but they are not checked in the default implementation, CPython. An experimental optional static type checker named mypy supports compile-time type checking.[74]\n", + "An object representing the absence of a value, often called null in other languages\n", "\n", - "Summary of Python 3's built-in types\n", + "None\n", "\n", - "Type\n", - "mutable\n", - "Description\n", - "Syntax example\n", "\n", + "types.NotImplementedType\n", "\n", - "bool\n", "immutable\n", - "Boolean value\n", - "True\n", - "False\n", "\n", + "A placeholder that can be returned from overloaded operators to indicate unsupported operand types.\n", "\n", - "bytearray\n", - "mutable\n", - "Sequence of bytes\n", - "bytearray(b'Some ASCII')\n", - "bytearray(b\"Some ASCII\")\n", - "bytearray([119, 105, 107, 105])\n", + "NotImplemented\n", "\n", "\n", - "bytes\n", + "range\n", + "\n", "immutable\n", - "Sequence of bytes\n", - "b'Some ASCII'\n", - "b\"Some ASCII\"\n", - "bytes([119, 105, 107, 105])\n", "\n", + "An immutable sequence of numbers commonly used for looping a specific number of times in for loops[106]\n", "\n", - "complex\n", - "immutable\n", - "Complex number with real and imaginary parts\n", - "3+2.7j\n", + "range(-1, 10)range(10, -5, -2)\n", "\n", "\n", - "dict\n", + "set\n", + "\n", "mutable\n", - "Associative array (or dictionary) of key and value pairs; can contain mixed types (keys and values), keys must be a hashable type\n", - "{'key1': 1.0, 3: False}\n", "\n", + "Unordered set, contains no duplicates; can contain mixed types, if hashable\n", "\n", - "ellipsis\n", + "{4.0, 'string', True}set()\n", "\n", - "An ellipsis placeholder to be used as an index in NumPy arrays\n", - "...\n", "\n", + "str\n", "\n", - "float\n", "immutable\n", - "Floating point number, system-defined precision\n", - "3.1415927\n", "\n", + "A character string: sequence of Unicode codepoints\n", "\n", - "frozenset\n", - "immutable\n", - "Unordered set, contains no duplicates; can contain mixed types, if hashable\n", - "frozenset([4.0, 'string', True])\n", + "'Wikipedia'\"Wikipedia\"\"\"\"Spanning\n", + "multiple\n", + "lines\"\"\"\n", + "Spanning\n", + "multiple\n", + "lines\n", "\n", "\n", - "int\n", + "\n", + "tuple\n", + "\n", "immutable\n", - "Integer of unlimited magnitude[75]\n", - "42\n", "\n", + "Can contain mixed types\n", "\n", - "list\n", - "mutable\n", - "List, can contain mixed types\n", - "[4.0, 'string', True]\n", + "(4.0, 'string', True)('single element',)()\n", "\n", + "Arithmetic operations\n", + "Python has the usual symbols for arithmetic operators (+, -, *, /), the floor division operator // and the modulo operation % (where the remainder can be negative, e.g. 4 % -3 == -2). It also has ** for exponentiation, e.g. 5**3 == 125 and 9**0.5 == 3.0, and a matrix‑multiplication operator @ .[107] These operators work like in traditional math; with the same precedence rules, the operators infix (+ and - can also be unary to represent positive and negative numbers respectively).\n", + "The division between integers produces floating-point results. The behavior of division has changed significantly over time:[108]\n", "\n", - "set\n", - "mutable\n", - "Unordered set, contains no duplicates; can contain mixed types, if hashable\n", - "{4.0, 'string', True}\n", + "Current Python (i.e. since 3.0) changed / to always be floating-point division, e.g. 5/2 == 2.5.\n", + "The floor division // operator was introduced. So 7//3 == 2, -7//3 == -3, 7.5//3 == 2.0 and -7.5//3 == -3.0. Adding from __future__ import division causes a module used in Python 2.7 to use Python 3.0 rules for division (see above).\n", + "In Python terms, / is true division (or simply division), and // is floor division. / before version 3.0 is classic division.[108]\n", + "Rounding towards negative infinity, though different from most languages, adds consistency. For instance, it means that the equation (a + b)//b == a//b + 1 is always true. It also means that the equation b*(a//b) + a%b == a is valid for both positive and negative values of a. However, maintaining the validity of this equation means that while the result of a%b is, as expected, in the half-open interval [0, b), where b is a positive integer, it has to lie in the interval (b, 0] when b is negative.[109]\n", + "Python provides a round function for rounding a float to the nearest integer. For tie-breaking, Python 3 uses round to even: round(1.5) and round(2.5) both produce 2.[110] Versions before 3 used round-away-from-zero: round(0.5) is 1.0, round(-0.5) is −1.0.[111]\n", + "Python allows boolean expressions with multiple equality relations in a manner that is consistent with general use in mathematics. For example, the expression a < b < c tests whether a is less than b and b is less than c.[112] C-derived languages interpret this expression differently: in C, the expression would first evaluate a < b, resulting in 0 or 1, and that result would then be compared with c.[113]\n", + "Python uses arbitrary-precision arithmetic for all integer operations. The Decimal type/class in the decimal module provides decimal floating-point numbers to a pre-defined arbitrary precision and several rounding modes.[114] The Fraction class in the fractions module provides arbitrary precision for rational numbers.[115]\n", + "Due to Python's extensive mathematics library, and the third-party library NumPy that further extends the native capabilities, it is frequently used as a scientific scripting language to aid in problems such as numerical data processing and manipulation.[116][117]\n", "\n", + "Programming examples\n", + "Hello world program:\n", "\n", - "str\n", - "immutable\n", - "A character string: sequence of Unicode codepoints\n", - "'Wikipedia'\n", - "\"Wikipedia\"\n", - "\"\"\"Spanning\n", - "multiple\n", - "lines\"\"\"\n", + "print('Hello, world!')\n", "\n", + "Program to calculate the factorial of a positive integer:\n", "\n", - "tuple\n", - "immutable\n", - "Can contain mixed types\n", - "(4.0, 'string', True)But we can append elements using __add__ .\n", - "a = (4.0, 'string' , True).__add__(('hi' ,))\n", - "now a gives (4.0, 'string', True ,'hi')\n", + "n = int(input('Type a number, and its factorial will be printed: '))\n", "\n", + "if n < 0:\n", + " raise ValueError('You must enter a non-negative integer')\n", "\n", + "factorial = 1\n", + "for i in range(2, n + 1):\n", + " factorial *= i\n", "\n", - "Mathematics[edit]\n", - "Python has the usual C arithmetic operators (+, -, *, /, %). It also has ** for exponentiation, e.g. 5**3 == 125 and 9**0.5 == 3.0, and a new matrix multiply @ operator is included in version 3.5.[76] Additionally, it has a unary operator (~), which essentially inverts all the bytes of its one argument. For integers, this means ~x=-x-1.[77] Other operators include bitwise shift operators x << y, which shifts x to the left y places, the same as x*(2**y) , and x >> y, which shifts x to the right y places, the same as x/(2**y) .[78]\n", - "The behavior of division has changed significantly over time:[79]\n", + "print(factorial)\n", "\n", - "Python 2.1 and earlier use the C division behavior. The / operator is integer division if both operands are integers, and floating-point division otherwise. Integer division rounds towards 0, e.g. 7/3 == 2 and -7/3 == -2.\n", - "Python 2.2 changes integer division to round towards negative infinity, e.g. 7/3 == 2 and -7/3 == -3. The floor division // operator is introduced. So 7//3 == 2, -7//3 == -3, 7.5//3 == 2.0 and -7.5//3 == -3.0. Adding from __future__ import division causes a module to use Python 3.0 rules for division (see next).\n", - "Python 3.0 changes / to be always floating-point division. In Python terms, the pre-3.0 / is classic division, the version-3.0 / is real division, and // is floor division.\n", + "Libraries\n", + "Python's large standard library[118] provides tools suited to many tasks and is commonly cited as one of its greatest strengths. For Internet-facing applications, many standard formats and protocols such as MIME and HTTP are supported. It includes modules for creating graphical user interfaces, connecting to relational databases, generating pseudorandom numbers, arithmetic with arbitrary-precision decimals,[119] manipulating regular expressions, and unit testing.\n", + "Some parts of the standard library are covered by specifications—for example, the Web Server Gateway Interface (WSGI) implementation wsgiref follows PEP 333[120]—but most are specified by their code, internal documentation, and test suites. However, because most of the standard library is cross-platform Python code, only a few modules need altering or rewriting for variant implementations.\n", + "As of 14 November 2022,[update] the Python Package Index (PyPI), the official repository for third-party Python software, contains over 415,000[121] packages with a wide range of functionality, including:\n", "\n", - "Rounding towards negative infinity, though different from most languages, adds consistency. For instance, it means that the equation (a + b)//b == a//b + 1 is always true. It also means that the equation b*(a//b) + a%b == a is valid for both positive and negative values of a. However, maintaining the validity of this equation means that while the result of a%b is, as expected, in the half-open interval [0, b), where b is a positive integer, it has to lie in the interval (b, 0] when b is negative.[80]\n", - "Python provides a round function for rounding a float to the nearest integer. For tie-breaking, versions before 3 use round-away-from-zero: round(0.5) is 1.0, round(-0.5) is −1.0.[81] Python 3 uses round to even: round(1.5) is 2, round(2.5) is 2.[82]\n", - "Python allows boolean expressions with multiple equality relations in a manner that is consistent with general use in mathematics. For example, the expression a < b < c tests whether a is less than b and b is less than c. C-derived languages interpret this expression differently: in C, the expression would first evaluate a < b, resulting in 0 or 1, and that result would then be compared with c.[83][page needed]\n", - "Python has extensive built-in support for arbitrary precision arithmetic. Integers are transparently switched from the machine-supported maximum fixed-precision (usually 32 or 64 bits), belonging to the python type int, to arbitrary precision, belonging to the python type long, where needed. The latter have an \"L\" suffix in their textual representation.[84] (In Python 3, the distinction between the int and long types was eliminated; this behavior is now entirely contained by the int class.) The Decimal type/class in module decimal (since version 2.4) provides decimal floating point numbers to arbitrary precision and several rounding modes.[85] The Fraction type in module fractions (since version 2.6) provides arbitrary precision for rational numbers.[86]\n", - "Due to Python's extensive mathematics library, and the third-party library NumPy that further extends the native capabilities, it is frequently used as a scientific scripting language to aid in problems such as numerical data processing and manipulation.\n", - "Libraries[edit]\n", - "Python's large standard library, commonly cited as one of its greatest strengths,[87] provides tools suited to many tasks. For Internet-facing applications, many standard formats and protocols such as MIME and HTTP are supported. It includes modules for creating graphical user interfaces, connecting to relational databases, generating pseudorandom numbers, arithmetic with arbitrary precision decimals,[88] manipulating regular expressions, and unit testing.\n", - "Some parts of the standard library are covered by specifications (for example, the Web Server Gateway Interface (WSGI) implementation wsgiref follows PEP 333[89]), but most modules are not. They are specified by their code, internal documentation, and test suites (if supplied). However, because most of the standard library is cross-platform Python code, only a few modules need altering or rewriting for variant implementations.\n", - "As of September 2017,[update] the Python Package Index, the official repository for third-party Python software, contains over 117,000[90] packages with a wide range of functionality, including:\n", "\n", - "Graphical user interfaces\n", - "Web frameworks\n", - "Multimedia\n", - "Databases\n", - "Networking\n", - "Test frameworks\n", "Automation\n", - "Web scraping\n", + "Data analytics\n", + "Databases\n", "Documentation\n", - "System administration\n", + "Graphical user interfaces\n", + "Image processing\n", + "Machine learning\n", + "Mobile apps\n", + "Multimedia\n", + "Computer networking\n", "Scientific computing\n", + "System administration\n", + "Test frameworks\n", "Text processing\n", - "Image processing\n", - "\n", - "Development environments[edit]\n", + "Web frameworks\n", + "Web scraping\n", + "Development environments\n", "See also: Comparison of integrated development environments § Python\n", - "Most Python implementations (including CPython) include a read–eval–print loop (REPL), permitting them to function as a command line interpreter for which the user enters statements sequentially and receives results immediately.\n", - "Other shells, including IDLE and IPython, add further abilities such as auto-completion, session state retention and syntax highlighting.\n", - "As well as standard desktop integrated development environments (see Wikipedia's \"Python IDE\" article), there are Web browser-based IDEs; SageMath (intended for developing science and math-related Python programs); PythonAnywhere, a browser-based IDE and hosting environment; and Canopy IDE, a commercial Python IDE emphasizing scientific computing.[91]\n", - "Implementations[edit]\n", + "Most Python implementations (including CPython) include a read–eval–print loop (REPL), permitting them to function as a command line interpreter for which users enter statements sequentially and receive results immediately.\n", + "Python also comes with an Integrated development environment (IDE) called IDLE, which is more beginner-oriented.\n", + "Other shells, including IDLE and IPython, add further abilities such as improved auto-completion, session state retention, and syntax highlighting.\n", + "As well as standard desktop integrated development environments, there are Web browser-based IDEs, including SageMath, for developing science- and math-related programs; PythonAnywhere, a browser-based IDE and hosting environment; and Canopy IDE, a commercial IDE emphasizing scientific computing.[122]\n", + "\n", + "Implementations\n", "See also: List of Python software § Python implementations\n", - "Reference implementation[edit]\n", - "CPython is the reference implementation of Python. It is written in C, meeting the C89 standard with several select C99 features.[92] It compiles Python programs into an intermediate bytecode[93] which is then executed by its virtual machine.[94] CPython is distributed with a large standard library written in a mixture of C and native Python. It is available for many platforms, including Windows and most modern Unix-like systems. Platform portability was one of its earliest priorities.[95]\n", - "Other implementations[edit]\n", - "PyPy is a fast, compliant[96] interpreter of Python 2.7 and 3.5. Its just-in-time compiler brings a significant speed improvement over CPython.[97] A version is under development that will use software transactional memory to take advantage of multi-core processors.[98]\n", - "Stackless Python is a significant fork of CPython that implements microthreads; it does not use the C memory stack, thus allowing massively concurrent programs. PyPy also has a stackless version.[99]\n", - "MicroPython is a Python 3 variant optimised for microcontrollers.\n", - "Unsupported implementations[edit]\n", + "Reference implementation\n", + "CPython is the reference implementation of Python. It is written in C, meeting the C89 standard (Python 3.11 uses C11[123]) with several select C99 features. CPython includes its own C extensions, but third-party extensions are not limited to older C versions—e.g. they can be implemented with C11 or C++.[124][125]) It compiles Python programs into an intermediate bytecode[126] which is then executed by its virtual machine.[127] CPython is distributed with a large standard library written in a mixture of C and native Python, and is available for many platforms, including Windows (starting with Python 3.9, the Python installer deliberately fails to install on Windows 7 and 8;[128][129] Windows XP was supported until Python 3.5) and most modern Unix-like systems, including macOS (and Apple M1 Macs, since Python 3.9.1, with experimental installer) and unofficial support for e.g. VMS.[130] Platform portability was one of its earliest priorities.[131] (During Python 1 and 2 development, even OS/2 and Solaris were supported,[132] but support has since been dropped for many platforms.)\n", + "\n", + "Other implementations\n", + "PyPy is a fast, compliant interpreter of Python 2.7 and 3.8.[133][134] Its just-in-time compiler often brings a significant speed improvement over CPython but some libraries written in C cannot be used with it.[135]\n", + "Stackless Python is a significant fork of CPython that implements microthreads; it does not use the call stack in the same way, thus allowing massively concurrent programs. PyPy also has a stackless version.[136]\n", + "MicroPython and CircuitPython are Python 3 variants optimized for microcontrollers, including Lego Mindstorms EV3.[137]\n", + "Pyston is a variant of the Python runtime that uses just-in-time compilation to speed up the execution of Python programs.[138]\n", + "Cinder is a performance-oriented fork of CPython 3.8 that contains a number of optimizations including bytecode inline caching, eager evaluation of coroutines, a method-at-a-time JIT, and an experimental bytecode compiler.[139]\n", + "Unsupported implementations\n", "Other just-in-time Python compilers have been developed, but are now unsupported:\n", "\n", - "Google began a project named Unladen Swallow in 2009 with the aim of speeding up the Python interpreter fivefold by using the LLVM, and of improving its multithreading ability to scale to thousands of cores.[100]\n", - "Psyco is a just-in-time specialising compiler that integrates with CPython and transforms bytecode to machine code at runtime. The emitted code is specialised for certain data types and is faster than standard Python code.\n", - "\n", - "In 2005, Nokia released a Python interpreter for the Series 60 mobile phones named PyS60. It includes many of the modules from the CPython implementations and some additional modules to integrate with the Symbian operating system. The project has been kept up-to-date to run on all variants of the S60 platform, and several third-party modules are available. The Nokia N900 also supports Python with GTK widget libraries, enabling programs to be written and run on the target device.[101]\n", - "Cross-compilers to other languages[edit]\n", + "Google began a project named Unladen Swallow in 2009, with the aim of speeding up the Python interpreter fivefold by using the LLVM, and of improving its multithreading ability to scale to thousands of cores,[140] while ordinary implementations suffer from the global interpreter lock.\n", + "Psyco is a discontinued just-in-time specializing compiler that integrates with CPython and transforms bytecode to machine code at runtime. The emitted code is specialized for certain data types and is faster than the standard Python code. Psyco does not support Python 2.7 or later.\n", + "PyS60 was a Python 2 interpreter for Series 60 mobile phones released by Nokia in 2005. It implemented many of the modules from the standard library and some additional modules for integrating with the Symbian operating system. The Nokia N900 also supports Python with GTK widget libraries, enabling programs to be written and run on the target device.[141]\n", + "Cross-compilers to other languages\n", "There are several compilers to high-level object languages, with either unrestricted Python, a restricted subset of Python, or a language similar to Python as the source language:\n", "\n", - "Jython compiles into Java byte code, which can then be executed by every Java virtual machine implementation. This also enables the use of Java class library functions from the Python program.\n", - "IronPython follows a similar approach in order to run Python programs on the .NET Common Language Runtime.\n", - "The RPython language can be compiled to C, Java bytecode, or Common Intermediate Language, and is used to build the PyPy interpreter of Python.\n", - "Pyjs compiles Python to JavaScript.\n", - "Cython compiles Python to C and C++.\n", - "Pythran compiles Python to C++.\n", - "Somewhat dated Pyrex (latest release in 2010) and Shed Skin (latest release in 2013) compile to C and C++ respectively.\n", - "Google's Grumpy compiles Python to Go.\n", - "Nuitka compiles Python into C++ [102]\n", - "\n", - "Performance[edit]\n", - "A performance comparison of various Python implementations on a non-numerical (combinatorial) workload was presented at EuroSciPy '13.[103]\n", - "Development[edit]\n", - "Python's development is conducted largely through the Python Enhancement Proposal (PEP) process, the primary mechanism for proposing major new features, collecting community input on issues and documenting Python design decisions.[104] Outstanding PEPs are reviewed and commented on by the Python community and Guido Van Rossum, Python's Benevolent Dictator For Life.[104]\n", - "Enhancement of the language corresponds with development of the CPython reference implementation. The mailing list python-dev is the primary forum for the language's development. Specific issues are discussed in the Roundup bug tracker maintained at python.org.[105] Development originally took place on a self-hosted source-code repository running Mercurial, until Python moved to GitHub in January 2017.[106]\n", + "Brython,[142] Transcrypt[143][144] and Pyjs (latest release in 2012) compile Python to JavaScript.\n", + "Cython compiles (a superset of) Python to C (while the resulting code is also usable with Python and also e.g. C++).\n", + "Nuitka compiles Python into C.[145]\n", + "Numba uses LLVM to compile a subset of Python to machine code.\n", + "Pythran compiles a subset of Python 3 to C++ (C++11).[146][147][148]\n", + "RPython can be compiled to C, and is used to build the PyPy interpreter of Python.\n", + "The Python → 11l → C++ transpiler[149] compiles a subset of Python 3 to C++ (C++17).\n", + "Specialized:\n", + "\n", + "MyHDL is a Python-based hardware description language (HDL), that converts MyHDL code to Verilog or VHDL code.\n", + "Older projects (or not to be used with Python 3.x and latest syntax):\n", + "\n", + "Google's Grumpy (latest release in 2017) transpiles Python 2 to Go.[150][151][152]\n", + "IronPython allows running Python 2.7 programs (and an alpha, released in 2021, is also available for \"Python 3.4, although features and behaviors from later versions may be included\"[153]) on the .NET Common Language Runtime.[154]\n", + "Jython compiles Python 2.7 to Java bytecode, allowing the use of the Java libraries from a Python program.[155]\n", + "Pyrex (latest release in 2010) and Shed Skin (latest release in 2013) compile to C and C++ respectively.\n", + "Performance\n", + "Performance comparison of various Python implementations on a non-numerical (combinatorial) workload was presented at EuroSciPy '13.[156] Python's performance compared to other programming languages is also benchmarked by The Computer Language Benchmarks Game.[157]\n", + "\n", + "Development\n", + "Python's development is conducted largely through the Python Enhancement Proposal (PEP) process, the primary mechanism for proposing major new features, collecting community input on issues, and documenting Python design decisions.[158] Python coding style is covered in PEP 8.[159] Outstanding PEPs are reviewed and commented on by the Python community and the steering council.[158]\n", + "Enhancement of the language corresponds with the development of the CPython reference implementation. The mailing list python-dev is the primary forum for the language's development. Specific issues were originally discussed in the Roundup bug tracker hosted at by the foundation.[160] In 2022, all issues and discussions were migrated to GitHub.[161] Development originally took place on a self-hosted source-code repository running Mercurial, until Python moved to GitHub in January 2017.[162]\n", "CPython's public releases come in three types, distinguished by which part of the version number is incremented:\n", "\n", - "Backward-incompatible versions, where code is expected to break and need to be manually ported. The first part of the version number is incremented. These releases happen infrequently—for example, version 3.0 was released 8 years after 2.0.\n", - "Major or \"feature\" releases, about every 18 months, are largely compatible but introduce new features. The second part of the version number is incremented. Each major version is supported by bugfixes for several years after its release.[107]\n", - "Bugfix releases, which introduce no new features, occur about every 3 months and are made when a sufficient number of bugs have been fixed upstream since the last release. Security vulnerabilities are also patched in these releases. The third and final part of the version number is incremented.[108]\n", - "\n", - "Many alpha, beta, and release-candidates are also released as previews and for testing before final releases. Although there is a rough schedule for each release, they are often delayed if the code is not ready. Python's development team monitors the state of the code by running the large unit test suite during development, and using the BuildBot continuous integration system.[109]\n", - "The community of Python developers has also contributed over 86,000[110] software modules (as of 20 August 2016[update]) to the Python Package Index (PyPI), the official repository of third-party Python libraries.\n", - "The major academic conference on Python is PyCon. There are also special Python mentoring programmes, such as Pyladies.\n", - "Naming[edit]\n", - "Python's name is derived from the British comedy group Monty Python, whom Python creator Guido van Rossum enjoyed while developing the language. Monty Python references appear frequently in Python code and culture;[111] for example, the metasyntactic variables often used in Python literature are spam and eggs instead of the traditional foo and bar[111][112]. The official Python documentation also contains various references to Monty Python routines.[113][114]\n", - "The prefix Py- is used to show that something is related to Python. Examples of the use of this prefix in names of Python applications or libraries include Pygame, a binding of SDL to Python (commonly used to create games); Python for S60, an implementation for the Symbian S60 operating system; PyQt and PyGTK, which bind Qt and GTK to Python respectively; and PyPy, a Python implementation originally written in Python.\n", - "Uses[edit]\n", + "Backward-incompatible versions, where code is expected to break and needs to be manually ported. The first part of the version number is incremented. These releases happen infrequently—version 3.0 was released 8 years after 2.0. According to Guido van Rossum, a version 4.0 is very unlikely to ever happen.[163]\n", + "Major or \"feature\" releases are largely compatible with the previous version but introduce new features. The second part of the version number is incremented. Starting with Python 3.9, these releases are expected to happen annually.[164][165] Each major version is supported by bug fixes for several years after its release.[166]\n", + "Bugfix releases,[167] which introduce no new features, occur about every 3 months and are made when a sufficient number of bugs have been fixed upstream since the last release. Security vulnerabilities are also patched in these releases. The third and final part of the version number is incremented.[167]\n", + "Many alpha, beta, and release-candidates are also released as previews and for testing before final releases. Although there is a rough schedule for each release, they are often delayed if the code is not ready. Python's development team monitors the state of the code by running the large unit test suite during development.[168]\n", + "The major academic conference on Python is PyCon. There are also special Python mentoring programs, such as Pyladies.\n", + "Python 3.10 deprecated wstr (to be removed in Python 3.12; meaning Python extensions[169] need to be modified by then),[170] and added pattern matching to the language.[171]\n", + "\n", + "API documentation generators\n", + "Tools that can generate documentation for Python API include pydoc (available as part of the standard library), Sphinx, Pdoc and its forks, Doxygen and Graphviz, among others.[172]\n", + "\n", + "Naming\n", + "Python's name is derived from the British comedy group Monty Python, whom Python creator Guido van Rossum enjoyed while developing the language. Monty Python references appear frequently in Python code and culture;[173] for example, the metasyntactic variables often used in Python literature are spam and eggs instead of the traditional foo and bar.[173][174] The official Python documentation also contains various references to Monty Python routines.[175][176]\n", + "The prefix Py- is used to show that something is related to Python. Examples of the use of this prefix in names of Python applications or libraries include Pygame, a binding of SDL to Python (commonly used to create games); PyQt and PyGTK, which bind Qt and GTK to Python respectively; and PyPy, a Python implementation originally written in Python.\n", + "\n", + "Popularity\n", + "Since 2003, Python has consistently ranked in the top ten most popular programming languages in the TIOBE Programming Community Index where as of December 2022[update] it was the most popular language (ahead of C, C++, and Java).[40] It was selected Programming Language of the Year (for \"the highest rise in ratings in a year\") in 2007, 2010, 2018, and 2020 (the only language to have done so four times as of 2020[177]).\n", + "An empirical study found that scripting languages, such as Python, are more productive than conventional languages, such as C and Java, for programming problems involving string manipulation and search in a dictionary, and determined that memory consumption was often \"better than Java and not much worse than C or C++\".[178]\n", + "Large organizations that use Python include Wikipedia, Google,[179] Yahoo!,[180] CERN,[181] NASA,[182] Facebook,[183] Amazon, Instagram,[184] Spotify,[185] and some smaller entities like ILM[186] and ITA.[187] The social news networking site Reddit was written mostly in Python.[188]\n", + "\n", + "Uses\n", "Main article: List of Python software\n", - "Since 2003, Python has consistently ranked in the top ten most popular programming languages in the TIOBE Programming Community Index. As of March 2017[update], it is the fifth most popular language.[115] It was selected Programming Language of the Year in 2007 and 2010.[116] It is the third most popular language whose grammatical syntax is not predominantly based on C.\n", - "An empirical study found that scripting languages, such as Python, are more productive than conventional languages, such as C and Java, for programming problems involving string manipulation and search in a dictionary, and determined that memory consumption was often \"better than Java and not much worse than C or C++\".[117]\n", - "Large organizations that use Python include Wikipedia, Google,[118] Yahoo!,[119] CERN,[120] NASA,[121] and some smaller entities like ILM[122] and ITA.[123] The social news networking site Reddit is written entirely in Python.\n", - "Python can serve as a scripting language for web applications, e.g., via mod_wsgi for the Apache web server.[124] With Web Server Gateway Interface, a standard API has evolved to facilitate these applications. Web frameworks like Django, Pylons, Pyramid, TurboGears, web2py, Tornado, Flask, Bottle and Zope support developers in the design and maintenance of complex applications. Pyjs and IronPython can be used to develop the client-side of Ajax-based applications. SQLAlchemy can be used as data mapper to a relational database. Twisted is a framework to program communications between computers, and is used (for example) by Dropbox.\n", - "Libraries such as NumPy, SciPy and Matplotlib allow the effective use of Python in scientific computing,[125][126] with specialized libraries such as Biopython and Astropy providing domain-specific functionality. SageMath is a mathematical software with a \"notebook\" programmable in Python: its library covers many aspects of mathematics, including algebra, combinatorics, numerical mathematics, number theory, and calculus. The Python language re-implemented in Java platform is used for numeric and statistical calculations with 2D/3D visualization by the DMelt project.[127][128]\n", - "Python has been successfully embedded in many software products as a scripting language, including in finite element method software such as Abaqus, 3D parametric modeler like FreeCAD, 3D animation packages such as 3ds Max, Blender, Cinema 4D, Lightwave, Houdini, Maya, modo, MotionBuilder, Softimage, the visual effects compositor Nuke, 2D imaging programs like GIMP,[129] Inkscape, Scribus and Paint Shop Pro,[130] and musical notation programs like scorewriter and capella. GNU Debugger uses Python as a pretty printer to show complex structures such as C++ containers. Esri promotes Python as the best choice for writing scripts in ArcGIS.[131] It has also been used in several video games,[132][133] and has been adopted as first of the three available programming languages in Google App Engine, the other two being Java and Go.[134] Python is also used in algorithmic trading and quantitative finance.[135] Python can also be implemented in APIs of online brokerages that run on other languages by using wrappers.[136]\n", - "Python has been used in artificial intelligence projects.[137][138][139][140] As a scripting language with modular architecture, simple syntax and rich text processing tools, Python is often used for natural language processing.[141]\n", - "Many operating systems include Python as a standard component. It ships with most Linux distributions, AmigaOS 4, FreeBSD, NetBSD, OpenBSD and macOS, and can be used from the command line (terminal). Many Linux distributions use installers written in Python: Ubuntu uses the Ubiquity installer, while Red Hat Linux and Fedora use the Anaconda installer. Gentoo Linux uses Python in its package management system, Portage.\n", - "Python is used extensively in the information security industry, including in exploit development.[142][143]\n", - "Most of the Sugar software for the One Laptop per Child XO, now developed at Sugar Labs, is written in Python.[144]\n", - "The Raspberry Pi single-board computer project has adopted Python as its main user-programming language.\n", - "LibreOffice includes Python, and intends to replace Java with Python. Its Python Scripting Provider is a core feature[145] since Version 4.0 from 7 February 2013.\n", - "Languages influenced by Python[edit]\n", + " Python Powered\n", + "Python can serve as a scripting language for web applications, e.g., via mod_wsgi for the Apache webserver.[189] With Web Server Gateway Interface, a standard API has evolved to facilitate these applications. Web frameworks like Django, Pylons, Pyramid, TurboGears, web2py, Tornado, Flask, Bottle, and Zope support developers in the design and maintenance of complex applications. Pyjs and IronPython can be used to develop the client-side of Ajax-based applications. SQLAlchemy can be used as a data mapper to a relational database. Twisted is a framework to program communications between computers, and is used (for example) by Dropbox.\n", + "Libraries such as NumPy, SciPy, and Matplotlib allow the effective use of Python in scientific computing,[190][191] with specialized libraries such as Biopython and Astropy providing domain-specific functionality. SageMath is a computer algebra system with a notebook interface programmable in Python: its library covers many aspects of mathematics, including algebra, combinatorics, numerical mathematics, number theory, and calculus.[192] OpenCV has Python bindings with a rich set of features for computer vision and image processing.[193]\n", + "Python is commonly used in artificial intelligence projects and machine learning projects with the help of libraries like TensorFlow, Keras, Pytorch, and scikit-learn.[194][195][196][197] As a scripting language with a modular architecture, simple syntax, and rich text processing tools, Python is often used for natural language processing.[198]\n", + "Python can also be used to create games, with libraries such as Pygame, which can make 2D games.\n", + "Python has been successfully embedded in many software products as a scripting language, including in finite element method software such as Abaqus, 3D parametric modelers like FreeCAD, 3D animation packages such as 3ds Max, Blender, Cinema 4D, Lightwave, Houdini, Maya, modo, MotionBuilder, Softimage, the visual effects compositor Nuke, 2D imaging programs like GIMP,[199] Inkscape, Scribus and Paint Shop Pro,[200] and musical notation programs like scorewriter and capella. GNU Debugger uses Python as a pretty printer to show complex structures such as C++ containers. Esri promotes Python as the best choice for writing scripts in ArcGIS.[201] It has also been used in several video games,[202][203] and has been adopted as first of the three available programming languages in Google App Engine, the other two being Java and Go.[204]\n", + "Many operating systems include Python as a standard component. It ships with most Linux distributions,[205] AmigaOS 4 (using Python 2.7), FreeBSD (as a package), NetBSD, and OpenBSD (as a package) and can be used from the command line (terminal). Many Linux distributions use installers written in Python: Ubuntu uses the Ubiquity installer, while Red Hat Linux and Fedora Linux use the Anaconda installer. Gentoo Linux uses Python in its package management system, Portage.\n", + "Python is used extensively in the information security industry, including in exploit development.[206][207]\n", + "Most of the Sugar software for the One Laptop per Child XO, developed at Sugar Labs since 2008, is written in Python.[208] The Raspberry Pi single-board computer project has adopted Python as its main user-programming language.\n", + "LibreOffice includes Python and intends to replace Java with Python. Its Python Scripting Provider is a core feature[209] since Version 4.0 from 7 February 2013.\n", + "\n", + "Languages influenced by Python\n", "Python's design and philosophy have influenced many other programming languages:\n", "\n", - "Boo uses indentation, a similar syntax, and a similar object model.[146]\n", - "Cobra uses indentation and a similar syntax, and its \"Acknowledgements\" document lists Python first among languages that influenced it.[147] However, Cobra directly supports design-by-contract, unit tests, and optional static typing.[148]\n", + "Boo uses indentation, a similar syntax, and a similar object model.[210]\n", + "Cobra uses indentation and a similar syntax, and its Acknowledgements document lists Python first among languages that influenced it.[211]\n", "CoffeeScript, a programming language that cross-compiles to JavaScript, has Python-inspired syntax.\n", - "ECMAScript borrowed iterators, generators and list comprehensions from Python.[149]\n", - "Go is described as incorporating the \"development speed of working in a dynamic language like Python\".[150]\n", - "Groovy was motivated by the desire to bring the Python design philosophy to Java.[151]\n", - "Julia was designed \"with true macros [.. and to be] as usable for general programming as Python [and] should be as fast as C\".[21] Calling to or from Julia is possible; to with PyCall.jl and a Python package pyjulia allows calling, in the other direction, from Python.\n", - "OCaml has an optional syntax named twt (The Whitespace Thing), inspired by Python and Haskell.[152]\n", - "Ruby's creator, Yukihiro Matsumoto, has said: \"I wanted a scripting language that was more powerful than Perl, and more object-oriented than Python. That's why I decided to design my own language.\"[153]\n", - "Swift, a programming language developed by Apple, has some Python-inspired syntax.[154]\n", + "ECMAScript/JavaScript borrowed iterators and generators from Python.[212]\n", + "GDScript, a scripting language very similar to Python, built-in to the Godot game engine.[213]\n", + "Go is designed for the \"speed of working in a dynamic language like Python\"[214] and shares the same syntax for slicing arrays.\n", + "Groovy was motivated by the desire to bring the Python design philosophy to Java.[215]\n", + "Julia was designed to be \"as usable for general programming as Python\".[29]\n", + "Nim uses indentation and similar syntax.[216]\n", + "Ruby's creator, Yukihiro Matsumoto, has said: \"I wanted a scripting language that was more powerful than Perl, and more object-oriented than Python. That's why I decided to design my own language.\"[217]\n", + "Swift, a programming language developed by Apple, has some Python-inspired syntax.[218]\n", + "Python's development practices have also been emulated by other languages. For example, the practice of requiring a document describing the rationale for, and issues surrounding, a change to the language (in Python, a PEP) is also used in Tcl,[219] Erlang,[220] and Swift.[221]\n", + "\n", + "See also\n", + "\n", + "Computer programming portalFree and open-source software portal\n", + "Python syntax and semantics\n", + "pip (package manager)\n", + "List of programming languages\n", + "History of programming languages\n", + "Comparison of programming languages\n", "\n", - "Python's development practices have also been emulated by other languages. For example, the practice of requiring a document describing the rationale for, and issues surrounding, a change to the language (in Python, a PEP) is also used in Tcl[155] and Erlang[156].\n", - "Python received TIOBE's Programming Language of the Year awards in 2007 and 2010. The award is given to the language with the greatest growth in popularity over the year, as measured by the TIOBE index.[157]\n", - "See also[edit]\n", + "References\n", "\n", "\n", - "Free software portal\n", - "Python programming portal\n", + "^ \"General Python FAQ – Python 3.9.2 documentation\". docs.python.org. Archived from the original on 24 October 2012. Retrieved 28 March 2021.\n", "\n", + "^ \"Python 0.9.1 part 01/21\". alt.sources archives. Archived from the original on 11 August 2021. Retrieved 11 August 2021.\n", "\n", + "^ \"It's time for another set of Python releases! Python 3.11.3, 3.10.11 and 3.12 alpha 7 are now available\". 5 April 2023. Retrieved 6 April 2023.\n", "\n", - "Comparison of integrated development environments for Python\n", - "Comparison of programming languages\n", - "List of programming languages\n", - "Off-side rule\n", - "\n", - "References[edit]\n", - "\n", - "\n", - "^ \"The History of Python: A Brief Timeline of Python\". Blogger. 20 January 2009. Retrieved 20 March 2016. \n", - "^ Deily, Ned (19 December 2017). \"Python 3.6.4 is now available\". Python Insider. The Python Core Developers. Retrieved 20 December 2017. \n", - "^ Peterson, Benjamin (16 September 2017). \"Python 2.7.14 released\". Python Insider. The Python Core Developers. Retrieved 17 September 2017. \n", - "^ File extension .pyo was removed in Python 3.5. See PEP 0488\n", - "^ Holth, Moore (30 March 2014). \"PEP 0441 -- Improving Python ZIP Application Support\". Retrieved 12 November 2015. \n", - "^ a b \"Why was Python created in the first place?\". General Python FAQ. Python Software Foundation. Retrieved 22 March 2007. \n", - "^ Kuchling, Andrew M. (22 December 2006). \"Interview with Guido van Rossum (July 1998)\". amk.ca. Archived from the original on 1 May 2007. Retrieved 12 March 2012. \n", - "^ van Rossum, Guido (1993). \"An Introduction to Python for UNIX/C Programmers\". Proceedings of the NLUUG najaarsconferentie (Dutch UNIX users group). even though the design of C is far from ideal, its influence on Python is considerable. \n", - "^ a b \"Classes\". The Python Tutorial. Python Software Foundation. Retrieved 20 February 2012. It is a mixture of the class mechanisms found in C++ and Modula-3 \n", - "^ Lundh, Fredrik. \"Call By Object\". effbot.org. Retrieved 21 November 2017. replace \"CLU\" with \"Python\", \"record\" with \"instance\", and \"procedure\" with \"function or method\", and you get a pretty accurate description of Python's object model. \n", - "^ Simionato, Michele. \"The Python 2.3 Method Resolution Order\". Python Software Foundation. The C3 method itself has nothing to do with Python, since it was invented by people working on Dylan and it is described in a paper intended for lispers \n", - "^ Kuchling, A. M. \"Functional Programming HOWTO\". Python v2.7.2 documentation. Python Software Foundation. Retrieved 9 February 2012. \n", - "^ Schemenauer, Neil; Peters, Tim; Hetland, Magnus Lie (18 May 2001). \"PEP 255 – Simple Generators\". Python Enhancement Proposals. Python Software Foundation. Retrieved 9 February 2012. \n", - "^ Smith, Kevin D.; Jewett, Jim J.; Montanaro, Skip; Baxter, Anthony (2 September 2004). \"PEP 318 – Decorators for Functions and Methods\". Python Enhancement Proposals. Python Software Foundation. Retrieved 24 February 2012. \n", - "^ \"More Control Flow Tools\". Python 3 documentation. Python Software Foundation. Retrieved 24 July 2015. \n", - "^ Hubinger, Evan. \"Coconut Programming Language\". coconut-lang.org. Retrieved 18 August 2017. \n", - "^ \"CoffeeScript borrows chained comparisons from Python\". \n", - "^ \"Genie Language - A brief guide\". Retrieved 28 December 2015. \n", - "^ \"Perl and Python influences in JavaScript\". www.2ality.com. 24 February 2013. Retrieved 15 May 2015. \n", - "^ Rauschmayer, Axel. \"Chapter 3: The Nature of JavaScript; Influences\". O'Reilly, Speaking JavaScript. Retrieved 15 May 2015. \n", - "^ a b \"Why We Created Julia\". Julia website. February 2012. Retrieved 5 June 2014. \n", - "^ Ring Team (4 December 2017). \"Ring and other languages\". ring-lang.net. ring-lang. \n", - "^ Bini, Ola (2007). Practical JRuby on Rails Web 2.0 Projects: bringing Ruby on Rails to the Java platform. Berkeley: APress. p. 3. ISBN 978-1-59059-881-8. \n", - "^ Lattner, Chris (3 June 2014). \"Chris Lattner's Homepage\". Chris Lattner. Retrieved 3 June 2014. The Swift language is the product of tireless effort from a team of language experts, documentation gurus, compiler optimization ninjas, and an incredibly important internal dogfooding group who provided feedback to help refine and battle-test ideas. Of course, it also greatly benefited from the experiences hard-won by many other languages in the field, drawing ideas from Objective-C, Rust, Haskell, Ruby, Python, C#, CLU, and far too many others to list. \n", - "^ Summerfield, Mark. Rapid GUI Programming with Python and Qt. Python is a very expressive language, which means that we can usually write far fewer lines of Python code than would be required for an equivalent application written in, say, C++ or Java \n", - "^ McConnell, Steve (30 November 2009). Code Complete, p. 100. ISBN 9780735636972. \n", - "^ Kuhlman, Dave. \"A Python Book: Beginning Python, Advanced Python, and Python Exercises\". \n", - "^ \"About Python\". Python Software Foundation. Retrieved 24 April 2012. , second section \"Fans of Python use the phrase \"batteries included\" to describe the standard library, which covers everything from asynchronous processing to zip files.\"\n", - "^ \"History and License\". Retrieved 5 December 2016.  \"All Python releases are Open Source\"\n", - "^ a b Venners, Bill (13 January 2003). \"The Making of Python\". Artima Developer. Artima. Retrieved 22 March 2007. \n", - "^ van Rossum, Guido (20 January 2009). \"A Brief Timeline of Python\". The History of Python. Google. Retrieved 20 January 2009. \n", - "^ van Rossum, Guido (29 August 2000). \"SETL (was: Lukewarm about range literals)\". Python-Dev (Mailing list). Retrieved 13 March 2011. \n", - "^ van Rossum, Guido (1996). \"Foreword for \"Programming Python\" (1st ed.)\". Retrieved 10 July 2014. \n", - "^ Kuchling, A. M.; Zadka, Moshe (16 October 2000). \"What's New in Python 2.0\". Python Software Foundation. Retrieved 11 February 2012. \n", - "^ \"Python 3.0 Release\". Python Software Foundation. Retrieved 8 July 2009. \n", - "^ van Rossum, Guido (5 April 2006). \"PEP 3000 – Python 3000\". Python Enhancement Proposals. Python Software Foundation. Retrieved 27 June 2009. \n", - "^ \"PEP 373 -- Python 2.7 Release Schedule\". python.org. Retrieved 9 January 2017. \n", - "^ \"PEP 466 -- Network Security Enhancements for Python 2.7.x\". python.org. Retrieved 9 January 2017. \n", - "^ Claburn, Thomas (5 January 2017). \"Google's Grumpy code makes Python Go\". Retrieved 9 January 2017. \n", - "^ \"Google Open Source Blog: Grumpy: Go running Python!\". 4 January 2017. Retrieved 7 March 2017. \n", - "^ The Cain Gang Ltd. \"Python Metaclasses: Who? Why? When?\" (PDF). Archived from the original (PDF) on 10 December 2009. Retrieved 27 June 2009. \n", - "^ \"3.3. Special method names\". The Python Language Reference. Python Software Foundation. Retrieved 27 June 2009. \n", - "^ \"PyDBC: method preconditions, method postconditions and class invariants for Python\". Retrieved 24 September 2011. \n", - "^ \"Contracts for Python\". Retrieved 24 September 2011. \n", - "^ \"PyDatalog\". Retrieved 22 July 2012. \n", - "^ a b Hettinger, Raymond (30 January 2002). \"PEP 289 – Generator Expressions\". Python Enhancement Proposals. Python Software Foundation. Retrieved 19 February 2012. \n", - "^ \"6.5 itertools – Functions creating iterators for efficient looping\". Docs.python.org. Retrieved 22 November 2016. \n", - "^ a b Peters, Tim (19 August 2004). \"PEP 20 – The Zen of Python\". Python Enhancement Proposals. Python Software Foundation. Retrieved 24 November 2008. \n", - "^ Martelli, Alex; Ravenscroft, Anna; Ascher, David (2005). Python Cookbook, 2nd Edition. O'Reilly Media. p. 230. ISBN 978-0-596-00797-3. \n", - "^ \"Python Culture\". \n", - "^ \"General Python FAQ\". Python v2.7.3 documentation. Docs.python.org. Retrieved 3 December 2012. \n", - "^ \"15 Ways Python Is a Powerful Force on the Web\". \n", - "^ \"pprint - Data pretty printer - Python Documentation\". \n", - "^ Goodger, David. \"Code Like a Pythonista: Idiomatic Python\". \n", - "^ \"How to think like a Pythonista\". \n", - "^ \"Is Python a good language for beginning programmers?\". General Python FAQ. Python Software Foundation. Retrieved 21 March 2007. \n", - "^ \"Myths about indentation in Python\". Secnetix.de. Retrieved 19 April 2011. \n", - "^ Sweigart, Al (2010). \"Appendix A: Differences Between Python 2 and 3\". Invent Your Own Computer Games with Python (2 ed.). ISBN 978-0-9821060-1-3. Retrieved 20 February 2014. \n", - "^ van Rossum, Guido (22 April 2009). \"Tail Recursion Elimination\". Neopythonic.blogspot.be. Retrieved 3 December 2012. \n", - "^ van Rossum, Guido (9 February 2006). \"Language Design Is Not Just Solving Puzzles\". Artima forums. Artima. Retrieved 21 March 2007. \n", - "^ van Rossum, Guido; Eby, Phillip J. (10 May 2005). \"PEP 342 – Coroutines via Enhanced Generators\". Python Enhancement Proposals. Python Software Foundation. Retrieved 19 February 2012. \n", - "^ \"PEP 380\". Python.org. Retrieved 3 December 2012. \n", - "^ \"division\". python.org. \n", - "^ \"PEP 0465 -- A dedicated infix operator for matrix multiplication\". python.org. Retrieved 1 January 2016. \n", - "^ \"Python 3.5.1 Release and Changelog\". python.org. Retrieved 1 January 2016. \n", - "^ \"Chapter 15. Expressions - 15.21.1. Numerical Equality Operators == and !=\". Oracle Corporation. Retrieved 28 August 2016. \n", - "^ \"Chapter 15. Expressions - 15.21.3. Reference Equality Operators == and !=\". Oracle Corporation. Retrieved 28 August 2016. \n", - "^ van Rossum, Guido; Hettinger, Raymond (7 February 2003). \"PEP 308 – Conditional Expressions\". Python Enhancement Proposals. Python Software Foundation. Retrieved 13 July 2011. \n", - "^ \"4. Built-in Types — Python 3.6.3rc1 documentation\". python.org. Retrieved 1 October 2017. \n", - "^ a b \"PEP 498 -- Literal String Interpolation\". python.org. Retrieved 8 March 2017. \n", - "^ \"Why must 'self' be used explicitly in method definitions and calls?\". Design and History FAQ. Python Software Foundation. Retrieved 19 February 2012. \n", - "^ \"The Python Language Reference, section 3.3. New-style and classic classes, for release 2.7.1\". Retrieved 12 January 2011. \n", - "^ \"Type hinting for Python\". LWN.net. 24 December 2014. Retrieved 5 May 2015. \n", - "^ \"mypy - Optional Static Typing for Python\". Retrieved 28 January 2017. \n", - "^ Zadka, Moshe; van Rossum, Guido (11 March 2001). \"PEP 237 – Unifying Long Integers and Integers\". Python Enhancement Proposals. Python Software Foundation. Retrieved 24 September 2011. \n", - "^ \"PEP 465 -- A dedicated infix operator for matrix multiplication\". python.org. \n", - "^ \"The tilde operator in Python - Stackoverflow\". stackoverflow.com. \n", - "^ \"BitwiseOperators - Python Wiki\". wiki.python.org. \n", - "^ Zadka, Moshe; van Rossum, Guido (11 March 2001). \"PEP 238 – Changing the Division Operator\". Python Enhancement Proposals. Python Software Foundation. Retrieved 23 October 2013. \n", - "^ \"Why Python's Integer Division Floors\". Retrieved 25 August 2010. \n", - "^ \"round\", The Python standard library, release 2.7, §2: Built-in functions, retrieved 14 August 2011 \n", - "^ \"round\", The Python standard library, release 3.2, §2: Built-in functions, retrieved 14 August 2011 \n", - "^ Python Essential Reference, David M. Beazley\n", - "^ \"Built-in Type\". docs.python.org. \n", - "^ Batista, Facundo. \"PEP 0327 -- Decimal Data Type\". Python.org. Retrieved 26 September 2015. \n", - "^ \"What's New in Python 2.6 — Python v2.6.9 documentation\". docs.python.org. Retrieved 26 September 2015. \n", - "^ Piotrowski, Przemyslaw (July 2006). \"Build a Rapid Web Development Environment for Python Server Pages and Oracle\". Oracle Technology Network. Oracle. Retrieved 12 March 2012. \n", - "^ Batista, Facundo (17 October 2003). \"PEP 327 – Decimal Data Type\". Python Enhancement Proposals. Python Software Foundation. Retrieved 24 November 2008. \n", - "^ Eby, Phillip J. (7 December 2003). \"PEP 333 – Python Web Server Gateway Interface v1.0\". Python Enhancement Proposals. Python Software Foundation. Retrieved 19 February 2012. \n", - "^ Debill, Erik. \"Module Counts\". ModuleCounts. Retrieved 20 September 2017. \n", - "^ Enthought, Canopy. \"Canopy\". www.enthought.com. Retrieved 20 August 2016. \n", - "^ van Rossum, Guido (5 June 2001). \"PEP 7 – Style Guide for C Code\". Python Enhancement Proposals. Python Software Foundation. Retrieved 24 November 2008. \n", - "^ \"CPython byte code\". Docs.python.org. Retrieved 16 February 2016. \n", - "^ \"Python 2.5 internals\" (PDF). Retrieved 19 April 2011. \n", - "^ \"An Interview with Guido van Rossum\". Oreilly.com. Retrieved 24 November 2008. \n", - "^ \"PyPy compatibility\". Pypy.org. Retrieved 3 December 2012. \n", - "^ \"speed comparison between CPython and Pypy\". Speed.pypy.org. Retrieved 3 December 2012. \n", - "^ \"STM with threads\". Morepypy.blogspot.be. 10 June 2012. Retrieved 3 December 2012. \n", - "^ \"Application-level Stackless features — PyPy 2.0.2 documentation\". Doc.pypy.org. Retrieved 17 July 2013. \n", - "^ \"Plans for optimizing Python\". Google Project Hosting. Google. 15 December 2009. Retrieved 24 September 2011. \n", - "^ \"Python on the Nokia N900\". Stochastic Geometry. \n", - "^ \"Nuitka Home | Nuitka Home\". nuitka.net. Retrieved 18 August 2017. \n", - "^ Murri, Riccardo (2013). Performance of Python runtimes on a non-numeric scientific code. European Conference on Python in Science (EuroSciPy). arXiv:1404.6388 . \n", - "^ a b Warsaw, Barry; Hylton, Jeremy; Goodger, David (13 June 2000). \"PEP 1 – PEP Purpose and Guidelines\". Python Enhancement Proposals. Python Software Foundation. Retrieved 19 April 2011. \n", - "^ Cannon, Brett. \"Guido, Some Guys, and a Mailing List: How Python is Developed\". python.org. Python Software Foundation. Archived from the original on 1 June 2009. Retrieved 27 June 2009. \n", - "^ \"Python Developer's Guide\". \n", - "^ Norwitz, Neal (8 April 2002). \"[Python-Dev] Release Schedules (was Stability & change)\". Retrieved 27 June 2009. \n", - "^ Aahz; Baxter, Anthony (15 March 2001). \"PEP 6 – Bug Fix Releases\". Python Enhancement Proposals. Python Software Foundation. Retrieved 27 June 2009. \n", - "^ \"Python Buildbot\". Python Developer’s Guide. Python Software Foundation. Retrieved 24 September 2011. \n", - "^ DeBill, Erik. \"Module Counts\". www.modulecounts.com. Retrieved 20 August 2016. \n", - "^ a b \"Whetting Your Appetite\". The Python Tutorial. Python Software Foundation. Retrieved 20 February 2012. \n", - "^ \"In Python, should I use else after a return in an if block?\". Stack Overflow. Stack Exchange. 17 February 2011. Retrieved 6 May 2011. \n", - "^ Lutz, Mark (2009). Learning Python: Powerful Object-Oriented Programming. O'Reilly Media, Inc. p. 17. ISBN 9781449379322. \n", - "^ Fehily, Chris (2002). Python. Peachpit Press. p. xv. ISBN 9780201748840. \n", - "^ \"TIOBE Index\". TIOBE - The Software Quality Company. Retrieved 7 March 2017. \n", - "^ TIOBE Software Index (2015). \"TIOBE Programming Community Index Python\". Retrieved 10 September 2015. \n", - "^ Prechelt, Lutz (14 March 2000). \"An empirical comparison of C, C++, Java, Perl, Python, Rexx, and Tcl\" (PDF). Retrieved 30 August 2013. \n", - "^ \"Quotes about Python\". Python Software Foundation. Retrieved 8 January 2012. \n", - "^ \"Organizations Using Python\". Python Software Foundation. Retrieved 15 January 2009. \n", - "^ \"Python : the holy grail of programming\". CERN Bulletin. CERN Publications (31/2006). 31 July 2006. Retrieved 11 February 2012. \n", - "^ Shafer, Daniel G. (17 January 2003). \"Python Streamlines Space Shuttle Mission Design\". Python Software Foundation. Retrieved 24 November 2008. \n", - "^ Fortenberry, Tim (17 January 2003). \"Industrial Light & Magic Runs on Python\". Python Software Foundation. Retrieved 11 February 2012. \n", - "^ Taft, Darryl K. (5 March 2007). \"Python Slithers into Systems\". eWeek.com. Ziff Davis Holdings. Retrieved 24 September 2011. \n", - "^ \"Usage statistics and market share of Python for websites\". 2012. Retrieved 18 December 2012. \n", - "^ Oliphant, Travis (2007). \"Python for Scientific Computing\". Computing in Science and Engineering. \n", - "^ Millman, K. Jarrod; Aivazis, Michael (2011). \"Python for Scientists and Engineers\". Computing in Science and Engineering. 13 (2): 9–12. \n", - "^ Chekanov, S. (April 2016). Numeric Computation and Statistical Data Analysis on the Java Platform. London: Springer. p. 670. ISBN 978-3-319-28531-3. \n", - "^ Chekanov, S. (2010). Scientific Data Analysis using Jython Scripting and Java. London: Springer. p. 600. ISBN 978-3-319-28531-3. \n", - "^ \"Installers for GIMP for Windows - Frequently Asked Questions\". 26 July 2013. Retrieved 26 July 2013. \n", - "^ \"jasc psp9components\". Archived from the original on 19 March 2008. \n", - "^ \"About getting started with writing geoprocessing scripts\". ArcGIS Desktop Help 9.2. Environmental Systems Research Institute. 17 November 2006. Retrieved 11 February 2012. \n", - "^ CCP porkbelly (24 August 2010). \"Stackless Python 2.7\". EVE Community Dev Blogs. CCP Games. As you may know, EVE has at its core the programming language known as Stackless Python. \n", - "^ Caudill, Barry (20 September 2005). \"Modding Sid Meier's Civilization IV\". Sid Meier's Civilization IV Developer Blog. Firaxis Games. Archived from the original on 11 August 2010. we created three levels of tools ... The next level offers Python and XML support, letting modders with more experience manipulate the game world and everything in it. \n", - "^ \"Python Language Guide (v1.0)\". Google Documents List Data API v1.0. Google. Archived from the original on 11 August 2010. \n", - "^ \"Python - Best Programming Language for Algorithmic Trading Systems\". 9 March 2016. Retrieved 3 October 2016. \n", - "^ \"Trading with Interactive Brokers using Python: An IBPy Tutorial\". 19 September 2016. Retrieved 3 October 2016. \n", - "^ \"Python for Artificial Intelligence\". Wiki.python.org. 19 July 2012. Archived from the original on 1 November 2012. Retrieved 3 December 2012. \n", - "^ Paine, Jocelyn, ed. (August 2005). \"AI in Python\". AI Expert Newsletter. Amzi!. Retrieved 11 February 2012. \n", - "^ \"PyAIML 0.8.5 : Python Package Index\". Pypi.python.org. Retrieved 17 July 2013. \n", - "^ Russell, Stuart J. & Norvig, Peter (2009). Artificial Intelligence: A Modern Approach (3rd ed.). Upper Saddle River, NJ: Prentice Hall. p. 1062. ISBN 978-0-13-604259-4. Retrieved 11 February 2012. \n", - "^ \"Natural Language Toolkit\". \n", - "^ \"Immunity: Knowing You're Secure\". \n", - "^ \"Corelabs site\". \n", - "^ \"What is Sugar?\". Sugar Labs. Retrieved 11 February 2012. \n", - "^ \"4.0 New Features and Fixes\". LibreOffice.org. The Document Foundation. 2013. Retrieved 25 February 2013. \n", - "^ \"Gotchas for Python Users\". boo.codehaus.org. Codehaus Foundation. Retrieved 24 November 2008. \n", - "^ Esterbrook, Charles. \"Acknowledgements\". cobra-language.com. Cobra Language. Retrieved 7 April 2010. \n", - "^ Esterbrook, Charles. \"Comparison to Python\". cobra-language.com. Cobra Language. Retrieved 7 April 2010. \n", - "^ \"Proposals: iterators and generators [ES4 Wiki]\". wiki.ecmascript.org. Retrieved 24 November 2008. \n", - "^ Kincaid, Jason (10 November 2009). \"Google's Go: A New Programming Language That's Python Meets C++\". TechCrunch. Retrieved 29 January 2010. \n", - "^ Strachan, James (29 August 2003). \"Groovy – the birth of a new dynamic language for the Java platform\". \n", - "^ Lin, Mike. \"The Whitespace Thing for OCaml\". Massachusetts Institute of Technology. Retrieved 12 April 2009. \n", - "^ \"An Interview with the Creator of Ruby\". Linuxdevcenter.com. Retrieved 3 December 2012. \n", - "^ Lattner, Chris (3 June 2014). \"Chris Lattner's Homepage\". Chris Lattner. Retrieved 3 June 2014. I started work on the Swift Programming Language in July of 2010. I implemented much of the basic language structure, with only a few people knowing of its existence. A few other (amazing) people started contributing in earnest late in 2011, and it became a major focus for the Apple Developer Tools group in July 2013 [...] drawing ideas from Objective-C, Rust, Haskell, Ruby, Python, C#, CLU, and far too many others to list. \n", - "^ Kupries, Andreas; Fellows, Donal K. (14 September 2000). \"TIP #3: TIP Format\". tcl.tk. Tcl Developer Xchange. Retrieved 24 November 2008. \n", - "^ Gustafsson, Per; Niskanen, Raimo (29 January 2007). \"EEP 1: EEP Purpose and Guidelines\". erlang.org. Retrieved 19 April 2011. \n", - "^ \"TIOBE Programming Community Index for March 2012\". TIOBE Software. March 2012. Retrieved 25 March 2012. \n", - "\n", - "\n", - "Further reading[edit]\n", - "\n", - "Downey, Allen B. (May 2012). Think Python: How to Think Like a Computer Scientist (Version 1.6.6 ed.). ISBN 978-0-521-72596-5. \n", - "Hamilton, Naomi (5 August 2008). \"The A-Z of Programming Languages: Python\". Computerworld. Archived from the original on 29 December 2008. Retrieved 31 March 2010. \n", - "Lutz, Mark (2013). Learning Python (5th ed.). O'Reilly Media. ISBN 978-0-596-15806-4. \n", - "Pilgrim, Mark (2004). Dive Into Python. Apress. ISBN 978-1-59059-356-1. \n", - "Pilgrim, Mark (2009). Dive Into Python 3. Apress. ISBN 978-1-4302-2415-0. \n", - "Summerfield, Mark (2009). Programming in Python 3 (2nd ed.). Addison-Wesley Professional. ISBN 978-0-321-68056-3. \n", - "\n", - "External links[edit]\n", - "\n", - "Find more aboutPython (programming language)at Wikipedia's sister projects\n", - "\n", - "Media from Wikimedia Commons\n", - "Quotations from Wikiquote\n", - "Textbooks from Wikibooks\n", - "Learning resources from Wikiversity\n", - "\n", - "\n", - "\n", - "Official website\n", - "Python at Curlie (based on DMOZ)\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "v\n", - "t\n", - "e\n", + "^ \"Python 3.12.0 alpha 7\". 5 April 2023. Retrieved 5 April 2023.\n", "\n", + "^ \"Why is Python a dynamic language and also a strongly typed language – Python Wiki\". wiki.python.org. Archived from the original on 14 March 2021. Retrieved 27 January 2021.\n", "\n", - "Programming languages\n", + "^ \"PEP 483 – The Theory of Type Hints\". Python.org. Archived from the original on 14 June 2020. Retrieved 14 June 2018.\n", "\n", + "^ \"test – Regression tests package for Python – Python 3.7.13 documentation\". docs.python.org. Retrieved 17 May 2022.\n", "\n", + "^ \"platform – Access to underlying platform's identifying data – Python 3.10.4 documentation\". docs.python.org. Retrieved 17 May 2022.\n", "\n", + "^ \"Download Python\". Python.org. Archived from the original on 8 August 2018. Retrieved 24 May 2021.\n", "\n", + "^ Holth, Moore (30 March 2014). \"PEP 0441 – Improving Python ZIP Application Support\". Archived from the original on 26 December 2018. Retrieved 12 November 2015.\n", "\n", + "^ File extension .pyo was removed in Python 3.5. See PEP 0488 Archived 1 June 2020 at the Wayback Machine\n", "\n", - "Comparison\n", - "Timeline\n", - "History\n", + "^ \"Starlark Language\". Archived from the original on 15 June 2020. Retrieved 25 May 2019.\n", "\n", + "^ a b \"Why was Python created in the first place?\". General Python FAQ. Python Software Foundation. Archived from the original on 24 October 2012. Retrieved 22 March 2007. I had extensive experience with implementing an interpreted language in the ABC group at CWI, and from working with this group I had learned a lot about language design. This is the origin of many Python features, including the use of indentation for statement grouping and the inclusion of very high-level data types (although the details are all different in Python).\n", "\n", + "^ \"Ada 83 Reference Manual (raise statement)\". Archived from the original on 22 October 2019. Retrieved 7 January 2020.\n", "\n", + "^ a b Kuchling, Andrew M. (22 December 2006). \"Interview with Guido van Rossum (July 1998)\". amk.ca. Archived from the original on 1 May 2007. Retrieved 12 March 2012. I'd spent a summer at DEC's Systems Research Center, which introduced me to Modula-2+; the Modula-3 final report was being written there at about the same time. What I learned there later showed up in Python's exception handling, modules, and the fact that methods explicitly contain 'self' in their parameter list. String slicing came from Algol-68 and Icon.\n", "\n", + "^ a b c \"itertools – Functions creating iterators for efficient looping – Python 3.7.1 documentation\". docs.python.org. Archived from the original on 14 June 2020. Retrieved 22 November 2016. This module implements a number of iterator building blocks inspired by constructs from APL, Haskell, and SML.\n", "\n", + "^ van Rossum, Guido (1993). \"An Introduction to Python for UNIX/C Programmers\". Proceedings of the NLUUG Najaarsconferentie (Dutch UNIX Users Group). CiteSeerX 10.1.1.38.2023. even though the design of C is far from ideal, its influence on Python is considerable.\n", "\n", + "^ a b \"Classes\". The Python Tutorial. Python Software Foundation. Archived from the original on 23 October 2012. Retrieved 20 February 2012. It is a mixture of the class mechanisms found in C++ and Modula-3\n", "\n", + "^ Lundh, Fredrik. \"Call By Object\". effbot.org. Archived from the original on 23 November 2019. Retrieved 21 November 2017. replace \"CLU\" with \"Python\", \"record\" with \"instance\", and \"procedure\" with \"function or method\", and you get a pretty accurate description of Python's object model.\n", "\n", - "Assembly\n", - "BASIC\n", - "C\n", - "C++\n", - "C#\n", - "COBOL\n", - "Fortran\n", - "Аналитик\n", - "Go\n", - "Groovy\n", - "Haskell\n", - "Java\n", - "JavaScript (JS)\n", - "Kotlin\n", - "Lisp\n", - "Lua\n", - "Objective-C\n", - "Pascal\n", - "Perl\n", - "PHP\n", - "Python\n", - "Rexx\n", - "Ruby\n", - "Shell\n", - "Smalltalk\n", - "Swift\n", - "Visual Basic .NET (VB.NET)\n", - "VBScript\n", - "more...\n", + "^ Simionato, Michele. \"The Python 2.3 Method Resolution Order\". Python Software Foundation. Archived from the original on 20 August 2020. Retrieved 29 July 2014. The C3 method itself has nothing to do with Python, since it was invented by people working on Dylan and it is described in a paper intended for lispers\n", "\n", + "^ Kuchling, A. M. \"Functional Programming HOWTO\". Python v2.7.2 documentation. Python Software Foundation. Archived from the original on 24 October 2012. Retrieved 9 February 2012. List comprehensions and generator expressions [...] are a concise notation for such operations, borrowed from the functional programming language Haskell.\n", "\n", + "^ Schemenauer, Neil; Peters, Tim; Hetland, Magnus Lie (18 May 2001). \"PEP 255 – Simple Generators\". Python Enhancement Proposals. Python Software Foundation. Archived from the original on 5 June 2020. Retrieved 9 February 2012.\n", "\n", + "^ \"More Control Flow Tools\". Python 3 documentation. Python Software Foundation. Archived from the original on 4 June 2016. Retrieved 24 July 2015. By popular demand, a few features commonly found in functional programming languages like Lisp have been added to Python. With the lambda keyword, small anonymous functions can be created.\n", "\n", + "^ \"re – Regular expression operations – Python 3.10.6 documentation\". docs.python.org. Retrieved 6 September 2022. This module provides regular expression matching operations similar to those found in Perl.\n", "\n", + "^ \"CoffeeScript\". coffeescript.org. Archived from the original on 12 June 2020. Retrieved 3 July 2018.\n", "\n", + "^ \"The Genie Programming Language Tutorial\". Archived from the original on 1 June 2020. Retrieved 28 February 2020.\n", "\n", + "^ \"Perl and Python influences in JavaScript\". www.2ality.com. 24 February 2013. Archived from the original on 26 December 2018. Retrieved 15 May 2015.\n", "\n", - " Category\n", - " Lists\n", + "^ Rauschmayer, Axel. \"Chapter 3: The Nature of JavaScript; Influences\". O'Reilly, Speaking JavaScript. Archived from the original on 26 December 2018. Retrieved 15 May 2015.\n", "\n", - "Alphabetical\n", - "Categorical\n", - "Generational\n", - "Non-English-based\n", + "^ a b \"Why We Created Julia\". Julia website. February 2012. Archived from the original on 2 May 2020. Retrieved 5 June 2014. We want something as usable for general programming as Python [...]\n", "\n", + "^ Ring Team (4 December 2017). \"Ring and other languages\". ring-lang.net. ring-lang. Archived from the original on 25 December 2018. Retrieved 4 December 2017.\n", "\n", + "^ Bini, Ola (2007). Practical JRuby on Rails Web 2.0 Projects: bringing Ruby on Rails to the Java platform. Berkeley: APress. p. 3. ISBN 978-1-59059-881-8.\n", "\n", + "^ Lattner, Chris (3 June 2014). \"Chris Lattner's Homepage\". Chris Lattner. Archived from the original on 25 December 2018. Retrieved 3 June 2014. The Swift language is the product of tireless effort from a team of language experts, documentation gurus, compiler optimization ninjas, and an incredibly important internal dogfooding group who provided feedback to help refine and battle-test ideas. Of course, it also greatly benefited from the experiences hard-won by many other languages in the field, drawing ideas from Objective-C, Rust, Haskell, Ruby, Python, C#, CLU, and far too many others to list.\n", "\n", + "^ Kuhlman, Dave. \"A Python Book: Beginning Python, Advanced Python, and Python Exercises\". Section 1.1. Archived from the original (PDF) on 23 June 2012.\n", "\n", + "^ \"About Python\". Python Software Foundation. Archived from the original on 20 April 2012. Retrieved 24 April 2012., second section \"Fans of Python use the phrase \"batteries included\" to describe the standard library, which covers everything from asynchronous processing to zip files.\"\n", "\n", + "^ \"PEP 206 – Python Advanced Library\". Python.org. Archived from the original on 5 May 2021. Retrieved 11 October 2021.\n", "\n", + "^ Rossum, Guido Van (20 January 2009). \"The History of Python: A Brief Timeline of Python\". The History of Python. Archived from the original on 5 June 2020. Retrieved 5 March 2021.\n", "\n", + "^ Peterson, Benjamin (20 April 2020). \"Python Insider: Python 2.7.18, the last release of Python 2\". Python Insider. Archived from the original on 26 April 2020. Retrieved 27 April 2020.\n", "\n", + "^ \"Stack Overflow Developer Survey 2022\". Stack Overflow. Retrieved 12 August 2022.\n", "\n", + "^ \"The State of Developer Ecosystem in 2020 Infographic\". JetBrains: Developer Tools for Professionals and Teams. Archived from the original on 1 March 2021. Retrieved 5 March 2021.\n", "\n", + "^ a b \"TIOBE Index\". TIOBE. Retrieved 3 January 2023. The TIOBE Programming Community index is an indicator of the popularity of programming languages Updated as required.\n", "\n", + "^ \"PYPL PopularitY of Programming Language index\". pypl.github.io. Archived from the original on 14 March 2017. Retrieved 26 March 2021.\n", "\n", + "^ a b Venners, Bill (13 January 2003). \"The Making of Python\". Artima Developer. Artima. Archived from the original on 1 September 2016. Retrieved 22 March 2007.\n", "\n", - "v\n", - "t\n", - "e\n", + "^ van Rossum, Guido (29 August 2000). \"SETL (was: Lukewarm about range literals)\". Python-Dev (Mailing list). Archived from the original on 14 July 2018. Retrieved 13 March 2011.\n", "\n", + "^ van Rossum, Guido (20 January 2009). \"A Brief Timeline of Python\". The History of Python. Archived from the original on 5 June 2020. Retrieved 20 January 2009.\n", "\n", - "Python\n", + "^ Fairchild, Carlie (12 July 2018). \"Guido van Rossum Stepping Down from Role as Python's Benevolent Dictator For Life\". Linux Journal. Archived from the original on 13 July 2018. Retrieved 13 July 2018.\n", "\n", + "^ \"PEP 8100\". Python Software Foundation. Archived from the original on 4 June 2020. Retrieved 4 May 2019.\n", "\n", + "^ \"PEP 13 – Python Language Governance\". Python.org. Archived from the original on 27 May 2021. Retrieved 25 August 2021.\n", "\n", - "Implementations\n", + "^ Kuchling, A. M.; Zadka, Moshe (16 October 2000). \"What's New in Python 2.0\". Python Software Foundation. Archived from the original on 23 October 2012. Retrieved 11 February 2012.\n", "\n", + "^ van Rossum, Guido (5 April 2006). \"PEP 3000 – Python 3000\". Python Enhancement Proposals. Python Software Foundation. Archived from the original on 3 March 2016. Retrieved 27 June 2009.\n", "\n", + "^ \"2to3 – Automated Python 2 to 3 code translation\". docs.python.org. Archived from the original on 4 June 2020. Retrieved 2 February 2021.\n", "\n", - "CLPython\n", - "CPython\n", - "Cython\n", - "MicroPython\n", - "Numba\n", - "IronPython\n", - "Jython\n", - "Psyco\n", - "PyPy\n", - "Python for S60\n", - "Shed Skin\n", - "Stackless Python\n", - "Unladen Swallow\n", - "more...\n", + "^ \"PEP 373 – Python 2.7 Release Schedule\". python.org. Archived from the original on 19 May 2020. Retrieved 9 January 2017.\n", "\n", + "^ \"PEP 466 – Network Security Enhancements for Python 2.7.x\". python.org. Archived from the original on 4 June 2020. Retrieved 9 January 2017.\n", "\n", + "^ \"Sunsetting Python 2\". Python.org. Archived from the original on 12 January 2020. Retrieved 22 September 2019.\n", "\n", + "^ \"PEP 373 – Python 2.7 Release Schedule\". Python.org. Archived from the original on 13 January 2020. Retrieved 22 September 2019.\n", "\n", + "^ Langa, Łukasz (19 February 2021). \"Python Insider: Python 3.9.2 and 3.8.8 are now available\". Python Insider. Archived from the original on 25 February 2021. Retrieved 26 February 2021.\n", "\n", + "^ \"Red Hat Customer Portal – Access to 24x7 support and knowledge\". access.redhat.com. Archived from the original on 6 March 2021. Retrieved 26 February 2021.\n", "\n", + "^ \"CVE – CVE-2021-3177\". cve.mitre.org. Archived from the original on 27 February 2021. Retrieved 26 February 2021.\n", "\n", + "^ \"CVE – CVE-2021-23336\". cve.mitre.org. Archived from the original on 24 February 2021. Retrieved 26 February 2021.\n", "\n", - "IDE\n", + "^ Langa, Łukasz (24 March 2022). \"Python Insider: Python 3.10.4 and 3.9.12 are now available out of schedule\". Python Insider. Retrieved 19 April 2022.\n", "\n", + "^ Langa, Łukasz (16 March 2022). \"Python Insider: Python 3.10.3, 3.9.11, 3.8.13, and 3.7.13 are now available with security content\". Python Insider. Retrieved 19 April 2022.\n", "\n", + "^ Langa, Łukasz (17 May 2022). \"Python Insider: Python 3.9.13 is now available\". Python Insider. Retrieved 21 May 2022.\n", "\n", - "Boa\n", - "Eric Python IDE\n", - "IDLE\n", - "PyDev\n", - "SPE\n", - "Ninja-IDE\n", - "more...\n", + "^ \"Python Insider: Python releases 3.10.7, 3.9.14, 3.8.14, and 3.7.14 are now available\". pythoninsider.blogspot.com. 7 September 2022. Retrieved 16 September 2022.\n", "\n", + "^ \"CVE - CVE-2020-10735\". cve.mitre.org. Retrieved 16 September 2022.\n", "\n", + "^ corbet (24 October 2022). \"Python 3.11 released [LWN.net]\". lwn.net. Retrieved 15 November 2022.\n", "\n", + "^ The Cain Gang Ltd. \"Python Metaclasses: Who? Why? When?\" (PDF). Archived from the original (PDF) on 30 May 2009. Retrieved 27 June 2009.\n", "\n", + "^ \"3.3. Special method names\". The Python Language Reference. Python Software Foundation. Archived from the original on 15 December 2018. Retrieved 27 June 2009.\n", "\n", - "Topics\n", + "^ \"PyDBC: method preconditions, method postconditions and class invariants for Python\". Archived from the original on 23 November 2019. Retrieved 24 September 2011.\n", "\n", + "^ \"Contracts for Python\". Archived from the original on 15 June 2020. Retrieved 24 September 2011.\n", "\n", + "^ \"PyDatalog\". Archived from the original on 13 June 2020. Retrieved 22 July 2012.\n", "\n", - "WSGI\n", + "^ \"Extending and Embedding the Python Interpreter: Reference Counts\". Docs.python.org. Archived from the original on 18 October 2012. Retrieved 5 June 2020. Since Python makes heavy use of malloc() and free(), it needs a strategy to avoid memory leaks as well as the use of freed memory. The chosen method is called reference counting.\n", "\n", + "^ a b Hettinger, Raymond (30 January 2002). \"PEP 289 – Generator Expressions\". Python Enhancement Proposals. Python Software Foundation. Archived from the original on 14 June 2020. Retrieved 19 February 2012.\n", "\n", + "^ \"6.5 itertools – Functions creating iterators for efficient looping\". Docs.python.org. Archived from the original on 14 June 2020. Retrieved 22 November 2016.\n", "\n", + "^ a b Peters, Tim (19 August 2004). \"PEP 20 – The Zen of Python\". Python Enhancement Proposals. Python Software Foundation. Archived from the original on 26 December 2018. Retrieved 24 November 2008.\n", "\n", + "^ Martelli, Alex; Ravenscroft, Anna; Ascher, David (2005). Python Cookbook, 2nd Edition. O'Reilly Media. p. 230. ISBN 978-0-596-00797-3. Archived from the original on 23 February 2020. Retrieved 14 November 2015.\n", "\n", + "^ \"Python Culture\". ebeab. 21 January 2014. Archived from the original on 30 January 2014.\n", "\n", + "^ \"Why is it called Python?\". General Python FAQ. Docs.python.org. Archived from the original on 24 October 2012. Retrieved 3 January 2023.\n", "\n", + "^ \"15 Ways Python Is a Powerful Force on the Web\". Archived from the original on 11 May 2019. Retrieved 3 July 2018.\n", "\n", - "software (list)\n", - "Python Software Foundation\n", - "PyCon\n", + "^ \"pprint – Data pretty printer – Python 3.11.0 documentation\". docs.python.org. Archived from the original on 22 January 2021. Retrieved 5 November 2022. stuff=['spam', 'eggs', 'lumberjack', 'knights', 'ni']\n", "\n", + "^ Clark, Robert (26 April 2019). \"How to be Pythonic and why you should care\". Medium. Archived from the original on 13 August 2021. Retrieved 20 January 2021.\n", "\n", + "^ \"Code Style – The Hitchhiker's Guide to Python\". docs.python-guide.org. Archived from the original on 27 January 2021. Retrieved 20 January 2021.\n", "\n", + "^ \"Is Python a good language for beginning programmers?\". General Python FAQ. Python Software Foundation. Archived from the original on 24 October 2012. Retrieved 21 March 2007.\n", "\n", + "^ \"Myths about indentation in Python\". Secnetix.de. Archived from the original on 18 February 2018. Retrieved 19 April 2011.\n", "\n", + "^ Guttag, John V. (12 August 2016). Introduction to Computation and Programming Using Python: With Application to Understanding Data. MIT Press. ISBN 978-0-262-52962-4.\n", "\n", + "^ \"PEP 8 – Style Guide for Python Code\". Python.org. Archived from the original on 17 April 2019. Retrieved 26 March 2019.\n", "\n", + "^ \"8. Errors and Exceptions – Python 3.12.0a0 documentation\". docs.python.org. Retrieved 9 May 2022.\n", "\n", + "^ \"Highlights: Python 2.5\". Python.org. Archived from the original on 4 August 2019. Retrieved 20 March 2018.\n", "\n", + "^ van Rossum, Guido (22 April 2009). \"Tail Recursion Elimination\". Neopythonic.blogspot.be. Archived from the original on 19 May 2018. Retrieved 3 December 2012.\n", "\n", + "^ van Rossum, Guido (9 February 2006). \"Language Design Is Not Just Solving Puzzles\". Artima forums. Artima. Archived from the original on 17 January 2020. Retrieved 21 March 2007.\n", "\n", + "^ van Rossum, Guido; Eby, Phillip J. (10 May 2005). \"PEP 342 – Coroutines via Enhanced Generators\". Python Enhancement Proposals. Python Software Foundation. Archived from the original on 29 May 2020. Retrieved 19 February 2012.\n", "\n", - "v\n", - "t\n", - "e\n", + "^ \"PEP 380\". Python.org. Archived from the original on 4 June 2020. Retrieved 3 December 2012.\n", "\n", + "^ \"division\". python.org. Archived from the original on 20 July 2006. Retrieved 30 July 2014.\n", "\n", - "Python web frameworks\n", + "^ \"PEP 0465 – A dedicated infix operator for matrix multiplication\". python.org. Archived from the original on 4 June 2020. Retrieved 1 January 2016.\n", "\n", + "^ \"Python 3.5.1 Release and Changelog\". python.org. Archived from the original on 14 May 2020. Retrieved 1 January 2016.\n", "\n", + "^ \"What's New in Python 3.8\". Archived from the original on 8 June 2020. Retrieved 14 October 2019.\n", "\n", + "^ van Rossum, Guido; Hettinger, Raymond (7 February 2003). \"PEP 308 – Conditional Expressions\". Python Enhancement Proposals. Python Software Foundation. Archived from the original on 13 March 2016. Retrieved 13 July 2011.\n", "\n", + "^ \"4. Built-in Types – Python 3.6.3rc1 documentation\". python.org. Archived from the original on 14 June 2020. Retrieved 1 October 2017.\n", "\n", + "^ \"5.3. Tuples and Sequences – Python 3.7.1rc2 documentation\". python.org. Archived from the original on 10 June 2020. Retrieved 17 October 2018.\n", "\n", - "BlueBream\n", - "Bottle\n", - "CherryPy\n", - "Django\n", - "Flask\n", - "Grok\n", - "Nagare\n", - "Nevow\n", - "Pyjs\n", - "Pylons\n", - "Pyramid\n", - "Quixote\n", - "Spyce\n", - "TACTIC\n", - "Tornado\n", - "TurboGears\n", - "TwistedWeb\n", - "Webware\n", - "web2py\n", - "Zope 2\n", - "more...\n", + "^ a b \"PEP 498 – Literal String Interpolation\". python.org. Archived from the original on 15 June 2020. Retrieved 8 March 2017.\n", "\n", + "^ \"Why must 'self' be used explicitly in method definitions and calls?\". Design and History FAQ. Python Software Foundation. Archived from the original on 24 October 2012. Retrieved 19 February 2012.\n", "\n", + "^ Sweigart, Al (2020). Beyond the Basic Stuff with Python: Best Practices for Writing Clean Code. No Starch Press. p. 322. ISBN 978-1-59327-966-0. Archived from the original on 13 August 2021. Retrieved 7 July 2021.\n", "\n", + "^ \"The Python Language Reference, section 3.3. New-style and classic classes, for release 2.7.1\". Archived from the original on 26 October 2012. Retrieved 12 January 2011.\n", "\n", + "^ \"Type hinting for Python\". LWN.net. 24 December 2014. Archived from the original on 20 June 2019. Retrieved 5 May 2015.\n", "\n", + "^ \"mypy – Optional Static Typing for Python\". Archived from the original on 6 June 2020. Retrieved 28 January 2017.\n", "\n", + "^ \"15. Floating Point Arithmetic: Issues and Limitations – Python 3.8.3 documentation\". docs.python.org. Archived from the original on 6 June 2020. Retrieved 6 June 2020. Almost all machines today (November 2000) use IEEE-754 floating point arithmetic, and almost all platforms map Python floats to IEEE-754 \"double precision\".\n", "\n", + "^ Zadka, Moshe; van Rossum, Guido (11 March 2001). \"PEP 237 – Unifying Long Integers and Integers\". Python Enhancement Proposals. Python Software Foundation. Archived from the original on 28 May 2020. Retrieved 24 September 2011.\n", "\n", + "^ \"Built-in Types\". Archived from the original on 14 June 2020. Retrieved 3 October 2019.\n", "\n", + "^ \"PEP 465 – A dedicated infix operator for matrix multiplication\". python.org. Archived from the original on 29 May 2020. Retrieved 3 July 2018.\n", "\n", + "^ a b Zadka, Moshe; van Rossum, Guido (11 March 2001). \"PEP 238 – Changing the Division Operator\". Python Enhancement Proposals. Python Software Foundation. Archived from the original on 28 May 2020. Retrieved 23 October 2013.\n", "\n", + "^ \"Why Python's Integer Division Floors\". 24 August 2010. Archived from the original on 5 June 2020. Retrieved 25 August 2010.\n", "\n", - "v\n", - "t\n", - "e\n", + "^ \"round\", The Python standard library, release 3.2, §2: Built-in functions, archived from the original on 25 October 2012, retrieved 14 August 2011\n", "\n", + "^ \"round\", The Python standard library, release 2.7, §2: Built-in functions, archived from the original on 27 October 2012, retrieved 14 August 2011\n", "\n", - "Free and open-source software\n", + "^ Beazley, David M. (2009). Python Essential Reference (4th ed.). p. 66. ISBN 9780672329784.\n", "\n", + "^ Kernighan, Brian W.; Ritchie, Dennis M. (1988). The C Programming Language (2nd ed.). p. 206.\n", "\n", + "^ Batista, Facundo. \"PEP 0327 – Decimal Data Type\". Python.org. Archived from the original on 4 June 2020. Retrieved 26 September 2015.\n", "\n", - "General\n", + "^ \"What's New in Python 2.6 – Python v2.6.9 documentation\". docs.python.org. Archived from the original on 23 December 2019. Retrieved 26 September 2015.\n", "\n", + "^ \"10 Reasons Python Rocks for Research (And a Few Reasons it Doesn't) – Hoyt Koepke\". www.stat.washington.edu. Archived from the original on 31 May 2020. Retrieved 3 February 2019.\n", "\n", + "^ Shell, Scott (17 June 2014). \"An introduction to Python for scientific computing\" (PDF). Archived (PDF) from the original on 4 February 2019. Retrieved 3 February 2019.\n", "\n", - "Alternative terms for free software\n", - "Comparison of open-source and closed-source software\n", - "Comparison of source code hosting facilities\n", - "Free software\n", - "Free software project directories\n", - "Gratis versus libre\n", - "Long-term support\n", - "Open-source software\n", - "Open-source software development\n", - "Outline\n", + "^ Piotrowski, Przemyslaw (July 2006). \"Build a Rapid Web Development Environment for Python Server Pages and Oracle\". Oracle Technology Network. Oracle. Archived from the original on 2 April 2019. Retrieved 12 March 2012.\n", "\n", + "^ Batista, Facundo (17 October 2003). \"PEP 327 – Decimal Data Type\". Python Enhancement Proposals. Python Software Foundation. Archived from the original on 4 June 2020. Retrieved 24 November 2008.\n", "\n", + "^ Eby, Phillip J. (7 December 2003). \"PEP 333 – Python Web Server Gateway Interface v1.0\". Python Enhancement Proposals. Python Software Foundation. Archived from the original on 14 June 2020. Retrieved 19 February 2012.\n", "\n", + "^ \"Modulecounts\". Modulecounts. 14 November 2022. Archived from the original on 26 June 2022.\n", "\n", + "^ Enthought, Canopy. \"Canopy\". www.enthought.com. Archived from the original on 15 July 2017. Retrieved 20 August 2016.\n", "\n", - "Software\n", - "packages\n", + "^ \"PEP 7 – Style Guide for C Code | peps.python.org\". peps.python.org. Retrieved 28 April 2022.\n", "\n", + "^ \"4. Building C and C++ Extensions – Python 3.9.2 documentation\". docs.python.org. Archived from the original on 3 March 2021. Retrieved 1 March 2021.\n", "\n", + "^ van Rossum, Guido (5 June 2001). \"PEP 7 – Style Guide for C Code\". Python Enhancement Proposals. Python Software Foundation. Archived from the original on 1 June 2020. Retrieved 24 November 2008.\n", "\n", - "Audio\n", - "Bioinformatics\n", - "Codecs\n", - "Collaboration\n", - "Configuration management\n", - "Device drivers\n", + "^ \"CPython byte code\". Docs.python.org. Archived from the original on 5 June 2020. Retrieved 16 February 2016.\n", "\n", - "Graphics\n", - "Wireless\n", + "^ \"Python 2.5 internals\" (PDF). Archived (PDF) from the original on 6 August 2012. Retrieved 19 April 2011.\n", "\n", + "^ \"Changelog – Python 3.9.0 documentation\". docs.python.org. Archived from the original on 7 February 2021. Retrieved 8 February 2021.\n", "\n", - "Geophysics\n", - "Health\n", - "Mathematics\n", - "Operating systems\n", - "Programming languages\n", - "Routing\n", - "Statistics\n", - "Television\n", - "Video games\n", - "Web applications\n", + "^ \"Download Python\". Python.org. Archived from the original on 8 December 2020. Retrieved 13 December 2020.\n", "\n", - "Content management systems\n", - "E-commerce\n", + "^ \"history [vmspython]\". www.vmspython.org. Archived from the original on 2 December 2020. Retrieved 4 December 2020.\n", "\n", + "^ \"An Interview with Guido van Rossum\". Oreilly.com. Archived from the original on 16 July 2014. Retrieved 24 November 2008.\n", "\n", - "Word processors\n", - "Android apps\n", - "iOS apps\n", - "Commercial\n", - "Trademarked\n", - "Formerly proprietary\n", + "^ \"Download Python for Other Platforms\". Python.org. Archived from the original on 27 November 2020. Retrieved 4 December 2020.\n", "\n", + "^ \"PyPy compatibility\". Pypy.org. Archived from the original on 6 June 2020. Retrieved 3 December 2012.\n", "\n", + "^ Team, The PyPy (28 December 2019). \"Download and Install\". PyPy. Retrieved 8 January 2022.\n", "\n", + "^ \"speed comparison between CPython and Pypy\". Speed.pypy.org. Archived from the original on 10 May 2021. Retrieved 3 December 2012.\n", "\n", + "^ \"Application-level Stackless features – PyPy 2.0.2 documentation\". Doc.pypy.org. Archived from the original on 4 June 2020. Retrieved 17 July 2013.\n", "\n", - "Community\n", + "^ \"Python-for-EV3\". LEGO Education. Archived from the original on 7 June 2020. Retrieved 17 April 2019.\n", "\n", + "^ Yegulalp, Serdar (29 October 2020). \"Pyston returns from the dead to speed Python\". InfoWorld. Archived from the original on 27 January 2021. Retrieved 26 January 2021.\n", "\n", + "^ \"cinder: Instagram's performance-oriented fork of CPython\". GitHub. Archived from the original on 4 May 2021. Retrieved 4 May 2021.\n", "\n", - "Free software movement\n", - "History\n", - "Open-source software movement\n", - "Organizations\n", - "Events\n", + "^ \"Plans for optimizing Python\". Google Project Hosting. 15 December 2009. Archived from the original on 11 April 2016. Retrieved 24 September 2011.\n", "\n", + "^ \"Python on the Nokia N900\". Stochastic Geometry. 29 April 2010. Archived from the original on 20 June 2019. Retrieved 9 July 2015.\n", "\n", + "^ \"Brython\". brython.info. Archived from the original on 3 August 2018. Retrieved 21 January 2021.\n", "\n", + "^ \"Transcrypt – Python in the browser\". transcrypt.org. Archived from the original on 19 August 2018. Retrieved 22 December 2020.\n", "\n", + "^ \"Transcrypt: Anatomy of a Python to JavaScript Compiler\". InfoQ. Archived from the original on 5 December 2020. Retrieved 20 January 2021.\n", "\n", - "Licenses\n", + "^ \"Nuitka Home | Nuitka Home\". nuitka.net. Archived from the original on 30 May 2020. Retrieved 18 August 2017.\n", "\n", + "^ Borderies, Olivier (24 January 2019). \"Pythran: Python at C++ speed !\". Medium. Archived from the original on 25 March 2020. Retrieved 25 March 2020.\n", "\n", + "^ \"Pythran – Pythran 0.9.5 documentation\". pythran.readthedocs.io. Archived from the original on 19 February 2020. Retrieved 25 March 2020.\n", "\n", - "AFL\n", - "Apache\n", - "APSL\n", - "Artistic\n", - "Beerware\n", - "Boost\n", - "BSD\n", - "CC0\n", - "CDDL\n", - "EPL\n", - "GNU GPL\n", - "GNU LGPL\n", - "ISC\n", - "MIT\n", - "MPL\n", - "Ms-PL/RL\n", - "Python\n", - "Python Software Foundation\n", - "Sleepycat\n", - "Unlicense\n", - "WTFPL\n", - "zlib\n", + "^ Guelton, Serge; Brunet, Pierrick; Amini, Mehdi; Merlini, Adrien; Corbillon, Xavier; Raynaud, Alan (16 March 2015). \"Pythran: enabling static optimization of scientific Python programs\". Computational Science & Discovery. IOP Publishing. 8 (1): 014001. Bibcode:2015CS&D....8a4001G. doi:10.1088/1749-4680/8/1/014001. ISSN 1749-4699.\n", "\n", + "^ The Python → 11l → C++ transpiler\n", "\n", + "^ \"google/grumpy\". 10 April 2020. Archived from the original on 15 April 2020. Retrieved 25 March 2020 – via GitHub.\n", "\n", + "^ \"Projects\". opensource.google. Archived from the original on 24 April 2020. Retrieved 25 March 2020.\n", "\n", + "^ Francisco, Thomas Claburn in San. \"Google's Grumpy code makes Python Go\". www.theregister.com. Archived from the original on 7 March 2021. Retrieved 20 January 2021.\n", "\n", - "License types\n", - "and standards\n", + "^ \"GitHub – IronLanguages/ironpython3: Implementation of Python 3.x for .NET Framework that is built on top of the Dynamic Language Runtime\". GitHub. Archived from the original on 28 September 2021.\n", "\n", + "^ \"IronPython.net /\". ironpython.net. Archived from the original on 17 April 2021.\n", "\n", + "^ \"Jython FAQ\". www.jython.org. Archived from the original on 22 April 2021. Retrieved 22 April 2021.\n", "\n", - "Comparison of free and open-source software licenses\n", - "Contributor License Agreement\n", - "Copyfree\n", - "Copyleft\n", - "Debian Free Software Guidelines\n", - "Definition of Free Cultural Works\n", - "Free license\n", - "The Free Software Definition\n", - "The Open Source Definition\n", - "Open-source license\n", - "Permissive software licence\n", - "Public domain\n", - "Viral license\n", + "^ Murri, Riccardo (2013). Performance of Python runtimes on a non-numeric scientific code. European Conference on Python in Science (EuroSciPy). arXiv:1404.6388. Bibcode:2014arXiv1404.6388M.\n", "\n", + "^ \"The Computer Language Benchmarks Game\". Archived from the original on 14 June 2020. Retrieved 30 April 2020.\n", "\n", + "^ a b Warsaw, Barry; Hylton, Jeremy; Goodger, David (13 June 2000). \"PEP 1 – PEP Purpose and Guidelines\". Python Enhancement Proposals. Python Software Foundation. Archived from the original on 6 June 2020. Retrieved 19 April 2011.\n", "\n", + "^ \"PEP 8 – Style Guide for Python Code\". Python.org. Archived from the original on 17 April 2019. Retrieved 26 March 2019.\n", "\n", + "^ Cannon, Brett. \"Guido, Some Guys, and a Mailing List: How Python is Developed\". python.org. Python Software Foundation. Archived from the original on 1 June 2009. Retrieved 27 June 2009.\n", "\n", - "Challenges\n", + "^ \"Moving Python's bugs to GitHub [LWN.net]\".\n", "\n", + "^ \"Python Developer's Guide – Python Developer's Guide\". devguide.python.org. Archived from the original on 9 November 2020. Retrieved 17 December 2019.\n", "\n", + "^ Hughes, Owen (24 May 2021). \"Programming languages: Why Python 4.0 might never arrive, according to its creator\". TechRepublic. Retrieved 16 May 2022.\n", "\n", - "Binary blob\n", - "Digital rights management\n", - "Hardware restrictions\n", - "License proliferation\n", - "Mozilla software rebranding\n", - "Proprietary software\n", - "SCO/Linux controversies\n", - "Secure boot\n", - "Software patents\n", - "Software security\n", - "Trusted Computing\n", + "^ \"PEP 602 – Annual Release Cycle for Python\". Python.org. Archived from the original on 14 June 2020. Retrieved 6 November 2019.\n", "\n", + "^ \"Changing the Python release cadence [LWN.net]\". lwn.net. Archived from the original on 6 November 2019. Retrieved 6 November 2019.\n", "\n", + "^ Norwitz, Neal (8 April 2002). \"[Python-Dev] Release Schedules (was Stability & change)\". Archived from the original on 15 December 2018. Retrieved 27 June 2009.\n", "\n", + "^ a b Aahz; Baxter, Anthony (15 March 2001). \"PEP 6 – Bug Fix Releases\". Python Enhancement Proposals. Python Software Foundation. Archived from the original on 5 June 2020. Retrieved 27 June 2009.\n", "\n", + "^ \"Python Buildbot\". Python Developer's Guide. Python Software Foundation. Archived from the original on 5 June 2020. Retrieved 24 September 2011.\n", "\n", - "Related topics\n", + "^ \"1. Extending Python with C or C++ – Python 3.9.1 documentation\". docs.python.org. Archived from the original on 23 June 2020. Retrieved 14 February 2021.\n", "\n", + "^ \"PEP 623 – Remove wstr from Unicode\". Python.org. Archived from the original on 5 March 2021. Retrieved 14 February 2021.\n", "\n", + "^ \"PEP 634 – Structural Pattern Matching: Specification\". Python.org. Archived from the original on 6 May 2021. Retrieved 14 February 2021.\n", "\n", - "The Cathedral and the Bazaar\n", - "Forking\n", - "Microsoft Open Specification Promise\n", - "Revolution OS\n", + "^ \"Documentation Tools\". Python.org. Archived from the original on 11 November 2020. Retrieved 22 March 2021.\n", "\n", + "^ a b \"Whetting Your Appetite\". The Python Tutorial. Python Software Foundation. Archived from the original on 26 October 2012. Retrieved 20 February 2012.\n", "\n", + "^ \"In Python, should I use else after a return in an if block?\". Stack Overflow. Stack Exchange. 17 February 2011. Archived from the original on 20 June 2019. Retrieved 6 May 2011.\n", "\n", + "^ Lutz, Mark (2009). Learning Python: Powerful Object-Oriented Programming. O'Reilly Media, Inc. p. 17. ISBN 9781449379322. Archived from the original on 17 July 2017. Retrieved 9 May 2017.\n", "\n", + "^ Fehily, Chris (2002). Python. Peachpit Press. p. xv. ISBN 9780201748840. Archived from the original on 17 July 2017. Retrieved 9 May 2017.\n", "\n", + "^ Blake, Troy (18 January 2021). \"TIOBE Index for January 2021\". Technology News and Information by SeniorDBA. Archived from the original on 21 March 2021. Retrieved 26 February 2021.\n", "\n", + "^ Prechelt, Lutz (14 March 2000). \"An empirical comparison of C, C++, Java, Perl, Python, Rexx, and Tcl\" (PDF). Archived (PDF) from the original on 3 January 2020. Retrieved 30 August 2013.\n", "\n", + "^ \"Quotes about Python\". Python Software Foundation. Archived from the original on 3 June 2020. Retrieved 8 January 2012.\n", "\n", - " Book\n", - " Category\n", - " Commons\n", - " Portal\n", + "^ \"Organizations Using Python\". Python Software Foundation. Archived from the original on 21 August 2018. Retrieved 15 January 2009.\n", + "\n", + "^ \"Python : the holy grail of programming\". CERN Bulletin. CERN Publications (31/2006). 31 July 2006. Archived from the original on 15 January 2013. Retrieved 11 February 2012.\n", + "\n", + "^ Shafer, Daniel G. (17 January 2003). \"Python Streamlines Space Shuttle Mission Design\". Python Software Foundation. Archived from the original on 5 June 2020. Retrieved 24 November 2008.\n", + "\n", + "^ \"Tornado: Facebook's Real-Time Web Framework for Python – Facebook for Developers\". Facebook for Developers. Archived from the original on 19 February 2019. Retrieved 19 June 2018.\n", + "\n", + "^ \"What Powers Instagram: Hundreds of Instances, Dozens of Technologies\". Instagram Engineering. 11 December 2016. Archived from the original on 15 June 2020. Retrieved 27 May 2019.\n", + "\n", + "^ \"How we use Python at Spotify\". Spotify Labs. 20 March 2013. Archived from the original on 10 June 2020. Retrieved 25 July 2018.\n", + "\n", + "^ Fortenberry, Tim (17 January 2003). \"Industrial Light & Magic Runs on Python\". Python Software Foundation. Archived from the original on 6 June 2020. Retrieved 11 February 2012.\n", + "\n", + "^ Taft, Darryl K. (5 March 2007). \"Python Slithers into Systems\". eWeek.com. Ziff Davis Holdings. Archived from the original on 13 August 2021. Retrieved 24 September 2011.\n", + "\n", + "^ GitHub – reddit-archive/reddit: historical code from reddit.com., The Reddit Archives, archived from the original on 1 June 2020, retrieved 20 March 2019\n", + "\n", + "^ \"Usage statistics and market share of Python for websites\". 2012. Archived from the original on 13 August 2021. Retrieved 18 December 2012.\n", + "\n", + "^ Oliphant, Travis (2007). \"Python for Scientific Computing\". Computing in Science and Engineering. 9 (3): 10–20. Bibcode:2007CSE.....9c..10O. CiteSeerX 10.1.1.474.6460. doi:10.1109/MCSE.2007.58. S2CID 206457124. Archived from the original on 15 June 2020. Retrieved 10 April 2015.\n", + "\n", + "^ Millman, K. Jarrod; Aivazis, Michael (2011). \"Python for Scientists and Engineers\". Computing in Science and Engineering. 13 (2): 9–12. Bibcode:2011CSE....13b...9M. doi:10.1109/MCSE.2011.36. Archived from the original on 19 February 2019. Retrieved 7 July 2014.\n", + "\n", + "^ Science education with SageMath, Innovative Computing in Science Education, archived from the original on 15 June 2020, retrieved 22 April 2019\n", "\n", + "^ \"OpenCV: OpenCV-Python Tutorials\". docs.opencv.org. Archived from the original on 23 September 2020. Retrieved 14 September 2020.\n", "\n", + "^ Dean, Jeff; Monga, Rajat; et al. (9 November 2015). \"TensorFlow: Large-scale machine learning on heterogeneous systems\" (PDF). TensorFlow.org. Google Research. Archived (PDF) from the original on 20 November 2015. Retrieved 10 November 2015.\n", "\n", + "^ Piatetsky, Gregory. \"Python eats away at R: Top Software for Analytics, Data Science, Machine Learning in 2018: Trends and Analysis\". KDnuggets. KDnuggets. Archived from the original on 15 November 2019. Retrieved 30 May 2018.\n", "\n", + "^ \"Who is using scikit-learn? – scikit-learn 0.20.1 documentation\". scikit-learn.org. Archived from the original on 6 May 2020. Retrieved 30 November 2018.\n", "\n", + "^ Jouppi, Norm. \"Google supercharges machine learning tasks with TPU custom chip\". Google Cloud Platform Blog. Archived from the original on 18 May 2016. Retrieved 19 May 2016.\n", "\n", + "^ \"Natural Language Toolkit – NLTK 3.5b1 documentation\". www.nltk.org. Archived from the original on 13 June 2020. Retrieved 10 April 2020.\n", "\n", + "^ \"Installers for GIMP for Windows – Frequently Asked Questions\". 26 July 2013. Archived from the original on 17 July 2013. Retrieved 26 July 2013.\n", "\n", + "^ \"jasc psp9components\". Archived from the original on 19 March 2008.\n", "\n", - "Authority control\n", + "^ \"About getting started with writing geoprocessing scripts\". ArcGIS Desktop Help 9.2. Environmental Systems Research Institute. 17 November 2006. Archived from the original on 5 June 2020. Retrieved 11 February 2012.\n", "\n", + "^ CCP porkbelly (24 August 2010). \"Stackless Python 2.7\". EVE Community Dev Blogs. CCP Games. Archived from the original on 11 January 2014. Retrieved 11 January 2014. As you may know, EVE has at its core the programming language known as Stackless Python.\n", "\n", + "^ Caudill, Barry (20 September 2005). \"Modding Sid Meier's Civilization IV\". Sid Meier's Civilization IV Developer Blog. Firaxis Games. Archived from the original on 2 December 2010. we created three levels of tools ... The next level offers Python and XML support, letting modders with more experience manipulate the game world and everything in it.\n", "\n", - "LCCN: sh96008834\n", - "GND: 4434275-5\n", - "SUDOC: 051626225\n", - "BNF: cb13560465c (data)\n", + "^ \"Python Language Guide (v1.0)\". Google Documents List Data API v1.0. Archived from the original on 15 July 2010.\n", "\n", + "^ \"Python Setup and Usage\". Python Software Foundation. Archived from the original on 17 June 2020. Retrieved 10 January 2020.\n", "\n", + "^ \"Immunity: Knowing You're Secure\". Archived from the original on 16 February 2009.\n", "\n", + "^ \"Core Security\". Core Security. Archived from the original on 9 June 2020. Retrieved 10 April 2020.\n", "\n", + "^ \"What is Sugar?\". Sugar Labs. Archived from the original on 9 January 2009. Retrieved 11 February 2012.\n", "\n", + "^ \"4.0 New Features and Fixes\". LibreOffice.org. The Document Foundation. 2013. Archived from the original on 9 February 2014. Retrieved 25 February 2013.\n", "\n", + "^ \"Gotchas for Python Users\". boo.codehaus.org. Codehaus Foundation. Archived from the original on 11 December 2008. Retrieved 24 November 2008.\n", "\n", + "^ Esterbrook, Charles. \"Acknowledgements\". cobra-language.com. Cobra Language. Archived from the original on 8 February 2008. Retrieved 7 April 2010.\n", "\n", + "^ \"Proposals: iterators and generators [ES4 Wiki]\". wiki.ecmascript.org. Archived from the original on 20 October 2007. Retrieved 24 November 2008.\n", "\n", + "^ \"Frequently asked questions\". Godot Engine documentation. Archived from the original on 28 April 2021. Retrieved 10 May 2021.\n", "\n", - "\n" + "^ Kincaid, Jason (10 November 2009). \"Google's Go: A New Programming Language That's Python Meets C++\". TechCrunch. Archived from the original on 18 January 2010. Retrieved 29 January 2010.\n", + "\n", + "^ Strachan, James (29 August 2003). \"Groovy – the birth of a new dynamic language for the Java platform\". Archived from the original on 5 April 2007. Retrieved 11 June 2007.\n", + "\n", + "^ Yegulalp, Serdar (16 January 2017). \"Nim language draws from best of Python, Rust, Go, and Lisp\". InfoWorld. Archived from the original on 13 October 2018. Retrieved 7 June 2020. Nim's syntax is strongly reminiscent of Python's, as it uses indented code blocks and some of the same syntax (such as the way if/elif/then/else blocks are constructed).\n", + "\n", + "^ \"An Interview with the Creator of Ruby\". Linuxdevcenter.com. Archived from the original on 28 April 2018. Retrieved 3 December 2012.\n", + "\n", + "^ Lattner, Chris (3 June 2014). \"Chris Lattner's Homepage\". Chris Lattner. Archived from the original on 22 December 2015. Retrieved 3 June 2014. I started work on the Swift Programming Language in July of 2010. I implemented much of the basic language structure, with only a few people knowing of its existence. A few other (amazing) people started contributing in earnest late in 2011, and it became a major focus for the Apple Developer Tools group in July 2013 [...] drawing ideas from Objective-C, Rust, Haskell, Ruby, Python, C#, CLU, and far too many others to list.\n", + "\n", + "^ Kupries, Andreas; Fellows, Donal K. (14 September 2000). \"TIP #3: TIP Format\". tcl.tk. Tcl Developer Xchange. Archived from the original on 13 July 2017. Retrieved 24 November 2008.\n", + "\n", + "^ Gustafsson, Per; Niskanen, Raimo (29 January 2007). \"EEP 1: EEP Purpose and Guidelines\". erlang.org. Archived from the original on 15 June 2020. Retrieved 19 April 2011.\n", + "\n", + "^ \"Swift Evolution Process\". Swift Programming Language Evolution repository on GitHub. 18 February 2020. Archived from the original on 27 April 2020. Retrieved 27 April 2020.\n", + "\n", + "\n", + "Sources\n", + "\"Python for Artificial Intelligence\". Wiki.python.org. 19 July 2012. Archived from the original on 1 November 2012. Retrieved 3 December 2012.\n", + "Paine, Jocelyn, ed. (August 2005). \"AI in Python\". AI Expert Newsletter. Amzi!. Archived from the original on 26 March 2012. Retrieved 11 February 2012.\n", + "\"PyAIML 0.8.5 : Python Package Index\". Pypi.python.org. Retrieved 17 July 2013.\n", + "Russell, Stuart J. & Norvig, Peter (2009). Artificial Intelligence: A Modern Approach (3rd ed.). Upper Saddle River, NJ: Prentice Hall. ISBN 978-0-13-604259-4.\n", + "Further reading\n", + "Downey, Allen B. (May 2012). Think Python: How to Think Like a Computer Scientist (version 1.6.6 ed.). ISBN 978-0-521-72596-5.\n", + "Hamilton, Naomi (5 August 2008). \"The A-Z of Programming Languages: Python\". Computerworld. Archived from the original on 29 December 2008. Retrieved 31 March 2010.\n", + "Lutz, Mark (2013). Learning Python (5th ed.). O'Reilly Media. ISBN 978-0-596-15806-4.\n", + "Summerfield, Mark (2009). Programming in Python 3 (2nd ed.). Addison-Wesley Professional. ISBN 978-0-321-68056-3.\n", + "Ramalho, Luciano (May 2022). Fluent Python (2nd ed.). O'Reilly Media. ISBN 978-1-4920-5632-4.\n", + "External links\n", + "\n", + "\n", + "Python at Wikipedia's sister projects\n", + "\n", + "Media from CommonsQuotations from WikiquoteTextbooks from WikibooksResources from WikiversityData from Wikidata\n", + "\n", + "Official website \n", + "vtePythonImplementations\n", + "CircuitPython\n", + "CLPython\n", + "CPython\n", + "Cython\n", + "MicroPython\n", + "Numba\n", + "IronPython\n", + "Jython\n", + "Psyco\n", + "PyPy\n", + "Python for S60\n", + "Shed Skin\n", + "Stackless Python\n", + "Unladen Swallow\n", + "more...\n", + "IDE\n", + "Boa\n", + "Eric Python IDE\n", + "IDLE\n", + "PyCharm\n", + "PyDev\n", + "Ninja-IDE\n", + "more...\n", + "Topics\n", + "WSGI\n", + "ASGI\n", + "\n", + "software (list)\n", + "Python Software Foundation\n", + "PyCon\n", + "\n", + "vteProgramming languages\n", + "Comparison\n", + "Timeline\n", + "History\n", + "\n", + "Ada\n", + "ALGOL\n", + "APL\n", + "Assembly\n", + "BASIC\n", + "C\n", + "C++\n", + "C#\n", + "Classic Visual Basic\n", + "COBOL\n", + "Erlang\n", + "Forth\n", + "Fortran\n", + "Go\n", + "Haskell\n", + "Java\n", + "JavaScript\n", + "Kotlin\n", + "Lisp\n", + "Lua\n", + "MATLAB\n", + "ML\n", + "Object Pascal\n", + "Pascal\n", + "Perl\n", + "PHP\n", + "Prolog\n", + "Python\n", + "R\n", + "Ruby\n", + "Rust\n", + "SQL\n", + "Scratch\n", + "Shell\n", + "Simula\n", + "Smalltalk\n", + "Swift\n", + "Visual Basic\n", + "more...\n", + "\n", + " Lists: Alphabetical\n", + "Categorical\n", + "Generational\n", + "Non-English-based\n", + " Category\n", + "\n", + "vtePython web frameworks\n", + "Bottle\n", + "CherryPy\n", + "CubicWeb\n", + "Django\n", + "FastAPI\n", + "Flask\n", + "Grok\n", + "Nagare\n", + "Nevow\n", + "Pylons\n", + "Pyramid\n", + "Quixote\n", + "TACTIC\n", + "Tornado\n", + "TurboGears\n", + "TwistedWeb\n", + "web2py\n", + "Zope 2\n", + "more...\n", + "\n", + "vteDifferentiable computingGeneral\n", + "Differentiable programming\n", + "Information geometry\n", + "Statistical manifold\n", + "Automatic differentiation\n", + "Neuromorphic engineering\n", + "Pattern recognition\n", + "Tensor calculus\n", + "Computational learning theory\n", + "Inductive bias\n", + "Concepts\n", + "Gradient descent\n", + "SGD\n", + "Clustering\n", + "Regression\n", + "Overfitting\n", + "Hallucination\n", + "Adversary\n", + "Attention\n", + "Convolution\n", + "Loss functions\n", + "Backpropagation\n", + "Normalization\n", + "Activation\n", + "Softmax\n", + "Sigmoid\n", + "Rectifier\n", + "Regularization\n", + "Datasets\n", + "Augmentation\n", + "Diffusion\n", + "Autoregression\n", + "Applications\n", + "Machine learning\n", + "Artificial neural network\n", + "Deep learning\n", + "Scientific computing\n", + "Artificial Intelligence\n", + "Language model\n", + "Large language model\n", + "Hardware\n", + "IPU\n", + "TPU\n", + "VPU\n", + "Memristor\n", + "SpiNNaker\n", + "Software libraries\n", + "TensorFlow\n", + "PyTorch\n", + "Keras\n", + "Theano\n", + "JAX\n", + "ImplementationsAudio–visual\n", + "AlexNet\n", + "WaveNet\n", + "Human image synthesis\n", + "HWR\n", + "OCR\n", + "Speech synthesis\n", + "Speech recognition\n", + "Facial recognition\n", + "AlphaFold\n", + "DALL-E\n", + "Midjourney\n", + "Stable Diffusion\n", + "Verbal\n", + "Word2vec\n", + "Seq2seq\n", + "BERT\n", + "LaMDA\n", + "Bard\n", + "NMT\n", + "Project Debater\n", + "IBM Watson\n", + "GPT family\n", + "GPT-2\n", + "GPT-3\n", + "ChatGPT\n", + "GPT-4\n", + "GPT-J\n", + "Chinchilla AI\n", + "PaLM\n", + "BLOOM\n", + "LLaMA\n", + "Decisional\n", + "AlphaGo\n", + "AlphaZero\n", + "Q-learning\n", + "SARSA\n", + "OpenAI Five\n", + "Self-driving car\n", + "MuZero\n", + "Action selection\n", + "Robot control\n", + "People\n", + "Yoshua Bengio\n", + "Alex Graves\n", + "Ian Goodfellow\n", + "Stephen Grossberg\n", + "Demis Hassabis\n", + "Geoffrey Hinton\n", + "Yann LeCun\n", + "Fei-Fei Li\n", + "Andrew Ng\n", + "Jürgen Schmidhuber\n", + "David Silver\n", + "Organizations\n", + "Anthropic\n", + "DeepMind\n", + "EleutherAI\n", + "Google Brain\n", + "OpenAI\n", + "Meta AI\n", + "Mila\n", + "MIT CSAIL\n", + "Architectures\n", + "Neural Turing machine\n", + "Differentiable neural computer\n", + "Transformer\n", + "Recurrent neural network (RNN)\n", + "Long short-term memory (LSTM)\n", + "Gated recurrent unit (GRU)\n", + "Echo state network\n", + "Multilayer perceptron (MLP)\n", + "Convolutional neural network\n", + "Residual network\n", + "Autoencoder\n", + "Variational autoencoder (VAE)\n", + "Generative adversarial network (GAN)\n", + "Graph neural network\n", + "\n", + " Portals\n", + "Computer programming\n", + "Technology\n", + " Categories\n", + "Artificial neural networks\n", + "Machine learning\n", + "\n", + "vteFree and open-source softwareGeneral\n", + "Alternative terms for free software\n", + "Comparison of open-source and closed-source software\n", + "Comparison of source-code-hosting facilities\n", + "Free software\n", + "Free software project directories\n", + "Gratis versus libre\n", + "Long-term support\n", + "Open-source software\n", + "Open-source software development\n", + "Outline\n", + "Timeline\n", + "Softwarepackages\n", + "Audio\n", + "Bioinformatics\n", + "Codecs\n", + "Configuration management\n", + "Drivers\n", + "Graphics\n", + "Wireless\n", + "Health\n", + "Mathematics\n", + "Office Suites\n", + "Operating systems\n", + "Programming languages\n", + "Routing\n", + "Television\n", + "Video games\n", + "Web applications\n", + "E-commerce\n", + "Android apps\n", + "iOS apps\n", + "Commercial\n", + "Formerly proprietary\n", + "Formerly open-source\n", + "Community\n", + "Free software movement\n", + "History\n", + "Open-source-software movement\n", + "Events\n", + "Organisations\n", + "Free Software Movement of India\n", + "Free Software Foundation\n", + "Licenses\n", + "AFL\n", + "Apache\n", + "APSL\n", + "Artistic\n", + "Beerware\n", + "BSD\n", + "Creative Commons\n", + "CDDL\n", + "EPL\n", + "Free Software Foundation\n", + "GNU GPL\n", + "GNU LGPL\n", + "ISC\n", + "MIT\n", + "MPL\n", + "Python\n", + "Python Software Foundation License\n", + "Shared Source Initiative\n", + "Sleepycat\n", + "Unlicense\n", + "WTFPL\n", + "zlib\n", + "Types and standards\n", + "Comparison of licenses\n", + "Contributor License Agreement\n", + "Copyleft\n", + "Debian Free Software Guidelines\n", + "Definition of Free Cultural Works\n", + "Free license\n", + "The Free Software Definition\n", + "The Open Source Definition\n", + "Open-source license\n", + "Permissive software license\n", + "Public domain\n", + "Viral license\n", + "\n", + "Challenges\n", + "Digital rights management\n", + "Hardware restrictions\n", + "License proliferation\n", + "Mozilla software rebranding\n", + "Proprietary device drivers\n", + "Proprietary firmware\n", + "Proprietary software\n", + "SCO/Linux controversies\n", + "Software patents\n", + "Software security\n", + "Trusted Computing\n", + "Related topics\n", + "Forking\n", + "GNU Manifesto\n", + "Microsoft Open Specification Promise\n", + "Open-core model\n", + "Open-source hardware\n", + "Shared Source Initiative\n", + "Source-available software\n", + "The Cathedral and the Bazaar\n", + "Revolution OS\n", + "\n", + " Portal\n", + " Category\n", + "\n", + "vteStatistical softwarePublic domain\n", + "Dataplot\n", + "Epi Info\n", + "CSPro\n", + "X-12-ARIMA\n", + "Open-source\n", + "ADMB\n", + "DAP\n", + "gretl\n", + "JASP\n", + "JAGS\n", + "JMulTi\n", + "Julia\n", + "Jupyter (Julia, Python, R)\n", + "GNU Octave\n", + "OpenBUGS\n", + "Orange\n", + "PSPP\n", + "Python (statsmodels, PyMC3, IPython, IDLE)\n", + "R (RStudio)\n", + "SageMath\n", + "SimFiT\n", + "SOFA Statistics\n", + "Stan\n", + "XLispStat\n", + "Freeware\n", + "BV4.1\n", + "CumFreq\n", + "SegReg\n", + "XploRe\n", + "WinBUGS\n", + "CommercialCross-platform\n", + "Data Desk\n", + "GAUSS\n", + "GraphPad InStat\n", + "GraphPad Prism\n", + "IBM SPSS Statistics\n", + "IBM SPSS Modeler\n", + "JMP\n", + "Maple\n", + "Mathcad\n", + "Mathematica\n", + "MATLAB\n", + "OxMetrics\n", + "RATS\n", + "Revolution Analytics\n", + "SAS\n", + "SmartPLS\n", + "Stata\n", + "StatView\n", + "SUDAAN\n", + "S-PLUS\n", + "TSP\n", + "World Programming System (WPS)\n", + "Windows only\n", + "BMDP\n", + "EViews\n", + "GenStat\n", + "LIMDEP\n", + "LISREL\n", + "MedCalc\n", + "Microfit\n", + "Minitab\n", + "MLwiN\n", + "NCSS\n", + "SHAZAM\n", + "SigmaStat\n", + "Statistica\n", + "StatsDirect\n", + "StatXact\n", + "SYSTAT\n", + "The Unscrambler\n", + "UNISTAT\n", + "Excel add-ons\n", + "Analyse-it\n", + "UNISTAT for Excel\n", + "XLfit\n", + "RExcel\n", + "\n", + "Category\n", + "Comparison\n", + "\n", + "vteNumerical-analysis softwareFree\n", + "Advanced Simulation Library\n", + "ADMB\n", + "Chapel\n", + "Euler\n", + "Fortress\n", + "FreeFem++\n", + "FreeMat\n", + "Genius\n", + "Gmsh\n", + "GNU Octave\n", + "gretl\n", + "Julia\n", + "Jupyter (Julia, Python, R; IPython)\n", + "MFEM\n", + "OpenFOAM\n", + "Python\n", + "R\n", + "SageMath\n", + "Salome\n", + "ScicosLab\n", + "Scilab\n", + "X10\n", + "Weka\n", + "Proprietary\n", + "DADiSP\n", + "FEATool Multiphysics\n", + "GAUSS\n", + "LabVIEW\n", + "Maple\n", + "Mathcad\n", + "Mathematica\n", + "MATLAB\n", + "Speakeasy\n", + "VisSim\n", + "\n", + "Comparison\n", + "\n", + "Authority control International\n", + "FAST\n", + "National\n", + "France\n", + "BnF data\n", + "Germany\n", + "Israel\n", + "United States\n", + "Czech Republic\n", + "Other\n", + "IdRef\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "Retrieved from \"https://en.wikipedia.org/w/index.php?title=Python_(programming_language)&oldid=1147632985\"\n" ] } ], @@ -1185,7 +1523,7 @@ }, { "cell_type": "code", - "execution_count": 13, + "execution_count": 6, "metadata": {}, "outputs": [ { @@ -1243,17 +1581,7 @@ }, { "cell_type": "code", - "execution_count": 12, - "metadata": {}, - "outputs": [], - "source": [ - "for row in csvReader:\n", - " print(\"The album \\\"\"+row[0]+\"\\\" was released in \"+str(row[1]))" - ] - }, - { - "cell_type": "code", - "execution_count": 15, + "execution_count": 8, "metadata": {}, "outputs": [ { @@ -1261,21 +1589,21 @@ "output_type": "stream", "text": [ "['Name', 'Year']\n", - "OrderedDict([('Name', \"Monty Python's Flying Circus\"), ('Year', '1970')])\n", - "OrderedDict([('Name', 'Another Monty Python Record'), ('Year', '1971')])\n", - "OrderedDict([('Name', \"Monty Python's Previous Record\"), ('Year', '1972')])\n", - "OrderedDict([('Name', 'The Monty Python Matching Tie and Handkerchief'), ('Year', '1973')])\n", - "OrderedDict([('Name', 'Monty Python Live at Drury Lane'), ('Year', '1974')])\n", - "OrderedDict([('Name', 'An Album of the Soundtrack of the Trailer of the Film of Monty Python and the Holy Grail'), ('Year', '1975')])\n", - "OrderedDict([('Name', 'Monty Python Live at City Center'), ('Year', '1977')])\n", - "OrderedDict([('Name', 'The Monty Python Instant Record Collection'), ('Year', '1977')])\n", - "OrderedDict([('Name', \"Monty Python's Life of Brian\"), ('Year', '1979')])\n", - "OrderedDict([('Name', \"Monty Python's Cotractual Obligation Album\"), ('Year', '1980')])\n", - "OrderedDict([('Name', \"Monty Python's The Meaning of Life\"), ('Year', '1983')])\n", - "OrderedDict([('Name', 'The Final Rip Off'), ('Year', '1987')])\n", - "OrderedDict([('Name', 'Monty Python Sings'), ('Year', '1989')])\n", - "OrderedDict([('Name', 'The Ultimate Monty Python Rip Off'), ('Year', '1994')])\n", - "OrderedDict([('Name', 'Monty Python Sings Again'), ('Year', '2014')])\n" + "{'Name': \"Monty Python's Flying Circus\", 'Year': '1970'}\n", + "{'Name': 'Another Monty Python Record', 'Year': '1971'}\n", + "{'Name': \"Monty Python's Previous Record\", 'Year': '1972'}\n", + "{'Name': 'The Monty Python Matching Tie and Handkerchief', 'Year': '1973'}\n", + "{'Name': 'Monty Python Live at Drury Lane', 'Year': '1974'}\n", + "{'Name': 'An Album of the Soundtrack of the Trailer of the Film of Monty Python and the Holy Grail', 'Year': '1975'}\n", + "{'Name': 'Monty Python Live at City Center', 'Year': '1977'}\n", + "{'Name': 'The Monty Python Instant Record Collection', 'Year': '1977'}\n", + "{'Name': \"Monty Python's Life of Brian\", 'Year': '1979'}\n", + "{'Name': \"Monty Python's Cotractual Obligation Album\", 'Year': '1980'}\n", + "{'Name': \"Monty Python's The Meaning of Life\", 'Year': '1983'}\n", + "{'Name': 'The Final Rip Off', 'Year': '1987'}\n", + "{'Name': 'Monty Python Sings', 'Year': '1989'}\n", + "{'Name': 'The Ultimate Monty Python Rip Off', 'Year': '1994'}\n", + "{'Name': 'Monty Python Sings Again', 'Year': '2014'}\n" ] } ], @@ -1296,303 +1624,60 @@ }, { "cell_type": "code", - "execution_count": 16, + "execution_count": 17, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "CHAPTER I\n", - "\n", - "\"Well, Prince, so Genoa and Lucca are now just family estates of \n", - "theBuonapartes. But I warn you, if you don't tell me that this \n", - "means war,if you still try to defend the infamies and horrors \n", - "perpetrated bythat Antichrist- I really believe he is Antichrist- I will \n", - "havenothing more to do with you and you are no longer my friend, \n", - "no longermy 'faithful slave,' as you call yourself! But how do you \n", - "do? I seeI have frightened you- sit down and tell me all the news.\"\n", - "\n", - "It was in July, 1805, and the speaker was the well-known \n", - "AnnaPavlovna Scherer, maid of honor and favorite of the \n", - "Empress MaryaFedorovna. With these words she greeted Prince \n", - "Vasili Kuragin, a manof high rank and importance, who was the \n", - "first to arrive at herreception. Anna Pavlovna had had a cough for \n", - "some days. She was, asshe said, suffering from la grippe; grippe \n", - "being then a new word inSt. Petersburg, used only by the elite.\n", - "\n", - "All her invitations without exception, written in French, \n", - "anddelivered by a scarlet-liveried footman that morning, ran as \n", - "follows:\n", - "\n", - "\"If you have nothing better to do, Count [or Prince], and if \n", - "theprospect of spending an evening with a poor invalid is not \n", - "tooterrible, I shall be very charmed to see you tonight between 7 \n", - "and 10-Annette Scherer.\"\n", - "\n", - "\"Heavens! what a virulent attack!\" replied the prince, not in \n", - "theleast disconcerted by this reception. He had just entered, \n", - "wearingan embroidered court uniform, knee breeches, and shoes, \n", - "and hadstars on his breast and a serene expression on his flat \n", - "face. He spokein that refined French in which our grandfathers \n", - "not only spoke butthought, and with the gentle, patronizing \n", - "intonation natural to aman of importance who had grown old in \n", - "society and at court. He wentup to Anna Pavlovna, kissed her \n", - "hand, presenting to her his bald,scented, and shining head, and \n", - "\n", - "\f", - "complacently seated himself on thesofa.\n", - "\n", - "\"First of all, dear friend, tell me how you are. Set your friend'smind \n", - "at rest,\" said he without altering his tone, beneath thepoliteness \n", - "and affected sympathy of which indifference and evenirony could \n", - "be discerned.\n", - "\n", - "\"Can one be well while suffering morally? Can one be calm in \n", - "timeslike these if one has any feeling?\" said Anna Pavlovna. \"You \n", - "arestaying the whole evening, I hope?\"\n", - "\n", - "\"And the fete at the English ambassador's? Today is Wednesday. \n", - "Imust put in an appearance there,\" said the prince. \"My daughter \n", - "iscoming for me to take me there.\"\n", - "\n", - "\"I thought today's fete had been canceled. I confess all \n", - "thesefestivities and fireworks are becoming wearisome.\"\n", - "\n", - "\"If they had known that you wished it, the entertainment \n", - "wouldhave been put off,\" said the prince, who, like a wound-up \n", - "clock, byforce of habit said things he did not even wish to be \n", - "believed.\n", - "\n", - "\"Don't tease! Well, and what has been decided about \n", - "Novosiltsev'sdispatch? You know everything.\"\n", - "\n", - "\"What can one say about it?\" replied the prince in a cold,listless \n", - "tone. \"What has been decided? They have decided \n", - "thatBuonaparte has burnt his boats, and I believe that we are \n", - "ready toburn ours.\"\n", - "\n", - "Prince Vasili always spoke languidly, like an actor repeating astale \n", - "part. Anna Pavlovna Scherer on the contrary, despite her \n", - "fortyyears, overflowed with animation and impulsiveness. To be \n", - "anenthusiast had become her social vocation and, sometimes \n", - "even when shedid not feel like it, she became enthusiastic in \n", - "\n", - "\f", - "order not todisappoint the expectations of those who knew her. \n", - "The subdued smilewhich, though it did not suit her faded features, \n", - "always playedround her lips expressed, as in a spoiled child, a \n", - "continualconsciousness of her charming defect, which she neither \n", - "wished, norcould, nor considered it necessary, to correct.\n", - "\n", - "In the midst of a conversation on political matters Anna \n", - "Pavlovnaburst out:\n", - "\n", - "\"Oh, don't speak to me of Austria. Perhaps I don't \n", - "understandthings, but Austria never has wished, and does not \n", - "wish, for war.She is betraying us! Russia alone must save \n", - "Europe. Our gracioussovereign recognizes his high vocation and \n", - "will be true to it. That isthe one thing I have faith in! Our good and \n", - "wonderful sovereign has toperform the noblest role on earth, and \n", - "he is so virtuous and noblethat God will not forsake him. He will \n", - "fulfill his vocation andcrush the hydra of revolution, which has \n", - "become more terrible thanever in the person of this murderer and \n", - "villain! We alone mustavenge the blood of the just one.... Whom, I \n", - "ask you, can we relyon?... England with her commercial spirit will \n", - "not and cannotunderstand the Emperor Alexander's loftiness of \n", - "soul. She hasrefused to evacuate Malta. She wanted to find, and \n", - "still seeks, somesecret motive in our actions. What answer did \n", - "Novosiltsev get? None.The English have not understood and \n", - "cannot understand theself-abnegation of our Emperor who wants \n", - "nothing for himself, but onlydesires the good of mankind. And \n", - "what have they promised? Nothing! Andwhat little they have \n", - "promised they will not perform! Prussia hasalways declared that \n", - "Buonaparte is invincible, and that all Europeis powerless before \n", - "him.... And I don't believe a word that Hardenburgsays, or \n", - "Haugwitz either. This famous Prussian neutrality is just atrap. I \n", - "have faith only in God and the lofty destiny of our adoredmonarch. \n", - "He will save Europe!\"\n", - "\n", - "She suddenly paused, smiling at her own impetuosity.\n", - "\n", - "\f", - "\"I think,\" said the prince with a smile, \"that if you had beensent \n", - "instead of our dear Wintzingerode you would have captured \n", - "theKing of Prussia's consent by assault. You are so eloquent. Will \n", - "yougive me a cup of tea?\"\n", - "\n", - "\"In a moment. A propos,\" she added, becoming calm again, \"I \n", - "amexpecting two very interesting men tonight, le Vicomte de \n", - "Mortemart,who is connected with the Montmorencys through the \n", - "Rohans, one ofthe best French families. He is one of the genuine \n", - "emigres, the goodones. And also the Abbe Morio. Do you know \n", - "that profound thinker? Hehas been received by the Emperor. Had \n", - "you heard?\"\n", - "\n", - "\"I shall be delighted to meet them,\" said the prince. \"But tell \n", - "me,\"he added with studied carelessness as if it had only just \n", - "occurredto him, though the question he was about to ask was the \n", - "chief motiveof his visit, \"is it true that the Dowager Empress wants \n", - "Baron Funketo be appointed first secretary at Vienna? The baron \n", - "by all accountsis a poor creature.\"\n", - "\n", - "Prince Vasili wished to obtain this post for his son, but otherswere \n", - "trying through the Dowager Empress Marya Fedorovna to secure \n", - "itfor the baron.\n", - "\n", - "Anna Pavlovna almost closed her eyes to indicate that neither \n", - "shenor anyone else had a right to criticize what the Empress \n", - "desired orwas pleased with.\n", - "\n", - "\"Baron Funke has been recommended to the Dowager Empress \n", - "by hersister,\" was all she said, in a dry and mournful tone.\n", - "\n", - "As she named the Empress, Anna Pavlovna's face suddenly \n", - "assumed anexpression of profound and sincere devotion and \n", - "respect mingled withsadness, and this occurred every time she \n", - "mentioned her illustriouspatroness. She added that Her Majesty \n", - "had deigned to show BaronFunke beaucoup d'estime, and again \n", - "\n", - "\f", - "her face clouded over with sadness.\n", - "\n", - "The prince was silent and looked indifferent. But, with thewomanly \n", - "and courtierlike quickness and tact habitual to her, AnnaPavlovna \n", - "wished both to rebuke him (for daring to speak he had done ofa \n", - "man recommended to the Empress) and at the same time to \n", - "console him,so she said:\n", - "\n", - "\"Now about your family. Do you know that since your daughter \n", - "cameout everyone has been enraptured by her? They say she is \n", - "amazinglybeautiful.\"\n", - "\n", - "The prince bowed to signify his respect and gratitude.\n", - "\n", - "\"I often think,\" she continued after a short pause, drawing \n", - "nearerto the prince and smiling amiably at him as if to show \n", - "thatpolitical and social topics were ended and the time had come \n", - "forintimate conversation- \"I often think how unfairly sometimes \n", - "thejoys of life are distributed. Why has fate given you two such \n", - "splendidchildren? I don't speak of Anatole, your youngest. I don't \n", - "likehim,\" she added in a tone admitting of no rejoinder and raising \n", - "hereyebrows. \"Two such charming children. And really you \n", - "appreciatethem less than anyone, and so you don't deserve to \n", - "have them.\"\n", - "\n", - "And she smiled her ecstatic smile.\n", - "\n", - "\"I can't help it,\" said the prince. \"Lavater would have said Ilack the \n", - "bump of paternity.\"\n", - "\n", - "\"Don't joke; I mean to have a serious talk with you. Do you know \n", - "Iam dissatisfied with your younger son? Between ourselves\" (and \n", - "herface assumed its melancholy expression), \"he was mentioned \n", - "at HerMajesty's and you were pitied....\"\n", - "\n", - "The prince answered nothing, but she looked at him \n", - "\n", - "\f", - "significantly,awaiting a reply. He frowned.\n", - "\n", - "\"What would you have me do?\" he said at last. \"You know I did \n", - "alla father could for their education, and they have both turned \n", - "outfools. Hippolyte is at least a quiet fool, but Anatole is an \n", - "activeone. That is the only difference between them.\" He said this \n", - "smilingin a way more natural and animated than usual, so that the \n", - "wrinklesround his mouth very clearly revealed something \n", - "unexpectedly coarseand unpleasant.\n", - "\n", - "\"And why are children born to such men as you? If you were not \n", - "afather there would be nothing I could reproach you with,\" said \n", - "AnnaPavlovna, looking up pensively.\n", - "\n", - "\"I am your faithful slave and to you alone I can confess that \n", - "mychildren are the bane of my life. It is the cross I have to bear. \n", - "Thatis how I explain it to myself. It can't be helped!\"\n", - "\n", - "He said no more, but expressed his resignation to cruel fate by \n", - "agesture. Anna Pavlovna meditated.\n", - "\n", - "\"Have you never thought of marrying your prodigal son \n", - "Anatole?\"she asked. \"They say old maids have a mania for \n", - "matchmaking, andthough I don't feel that weakness in myself as \n", - "yet,I know a littleperson who is very unhappy with her father. She \n", - "is a relation ofyours, Princess Mary Bolkonskaya.\"\n", - "\n", - "Prince Vasili did not reply, though, with the quickness of \n", - "memoryand perception befitting a man of the world, he indicated \n", - "by amovement of the head that he was considering this \n", - "information.\n", - "\n", - "\"Do you know,\" he said at last, evidently unable to check the \n", - "sadcurrent of his thoughts, \"that Anatole is costing me forty \n", - "thousandrubles a year? And,\" he went on after a pause, \"what will \n", - "it be infive years, if he goes on like this?\" Presently he added: \n", - "\n", - "\f", - "\"That's whatwe fathers have to put up with.... Is this princess of \n", - "yours rich?\"\n", - "\n", - "\"Her father is very rich and stingy. He lives in the country. Heis the \n", - "well-known Prince Bolkonski who had to retire from the \n", - "armyunder the late Emperor, and was nicknamed 'the King of \n", - "Prussia.' He isvery clever but eccentric, and a bore. The poor girl \n", - "is veryunhappy. She has a brother; I think you know him, he \n", - "married LiseMeinen lately. He is an aide-de-camp of Kutuzov's \n", - "and will be heretonight.\"\n", - "\n", - "\"Listen, dear Annette,\" said the prince, suddenly taking \n", - "AnnaPavlovna's hand and for some reason drawing it \n", - "downwards. \"Arrangethat affair for me and I shall always be your \n", - "most devoted slave-slafe wigh an f, as a village elder of mine \n", - "writes in his reports. Sheis rich and of good family and that's all I \n", - "want.\"\n", - "\n", - "And with the familiarity and easy grace peculiar to him, he \n", - "raisedthe maid of honor's hand to his lips, kissed it, and swung it \n", - "to andfro as he lay back in his armchair, looking in another \n", - "direction.\n", - "\n", - "\"Attendez,\" said Anna Pavlovna, reflecting, \"I'll speak to \n", - "Lise,young Bolkonski's wife, this very evening, and perhaps the \n", - "thing canbe arranged. It shall be on your family's behalf that I'll \n", - "start myapprenticeship as old maid.\"\n", - "\n", - "\f", - "\n" + "Lorem ipsum dolor sit amet \n" ] } ], "source": [ - "from urllib.request import urlopen\n", - "from pdfminer.pdfinterp import PDFResourceManager, process_pdf\n", - "from pdfminer.converter import TextConverter\n", - "from pdfminer.layout import LAParams\n", - "from io import StringIO\n", - "from io import open\n", + "from pypdf import PdfReader\n", "\n", - "def readPDF(pdfFile):\n", - " rsrcmgr = PDFResourceManager()\n", - " retstr = StringIO()\n", - " laparams = LAParams()\n", - " device = TextConverter(rsrcmgr, retstr, laparams=laparams)\n", - "\n", - " process_pdf(rsrcmgr, device, pdfFile)\n", - " device.close()\n", + "reader = PdfReader(\"foo.pdf\")\n", + "number_of_pages = len(reader.pages)\n", + "page = reader.pages[0]\n", + "text = page.extract_text()\n", + "print(text)" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "CHAPTER I\"Well, Prince, so Genoa and Lucca are now just family estates of theBuonapartes. But I warn you, if you don't tell me that this means war,if you still try to defend the infamies and horrors perpetrated bythat Antichrist- I really believe he is Antichrist- I will havenothing more to do with you and you are no longer my friend, no longermy 'faithful slave,' as you call yourself! But how do you do? I seeI have frightened you- sit down and tell me all the news.\"It was in July, 1805, and the speaker was the well-known AnnaPavlovna Scherer, maid of honor and favorite of the Empress MaryaFedorovna. With these words she greeted Prince Vasili Kuragin, a manof high rank and importance, who was the first to arrive at herreception. Anna Pavlovna had had a cough for some days. She was, asshe said, suffering from la grippe; grippe being then a new word inSt. Petersburg, used only by the elite.All her invitations without exception, written in French, anddelivered by a scarlet-liveried footman that morning, ran as follows:\"If you have nothing better to do, Count [or Prince], and if theprospect of spending an evening with a poor invalid is not tooterrible, I shall be very charmed to see you tonight between 7 and 10-Annette Scherer.\"\"Heavens! what a virulent attack!\" replied the prince, not in theleast disconcerted by this reception. He had just entered, wearingan embroidered court uniform, knee breeches, and shoes, and hadstars on his breast and a serene expression on his flat face. He spokein that refined French in which our grandfathers not only spoke butthought, and with the gentle, patronizing intonation natural to aman of importance who had grown old in society and at court. He wentup to Anna Pavlovna, kissed her hand, presenting to her his bald,scented, and shining head, and \n", + "complacently seated himself on thesofa.\"First of all, dear friend, tell me how you are. Set your friend'smind at rest,\" said he without altering his tone, beneath thepoliteness and affected sympathy of which indifference and evenirony could be discerned.\"Can one be well while suffering morally? Can one be calm in timeslike these if one has any feeling?\" said Anna Pavlovna. \"You arestaying the whole evening, I hope?\"\"And the fete at the English ambassador's? Today is Wednesday. Imust put in an appearance there,\" said the prince. \"My daughter iscoming for me to take me there.\"\"I thought today's fete had been canceled. I confess all thesefestivities and fireworks are becoming wearisome.\"\"If they had known that you wished it, the entertainment wouldhave been put off,\" said the prince, who, like a wound-up clock, byforce of habit said things he did not even wish to be believed.\"Don't tease! Well, and what has been decided about Novosiltsev'sdispatch? You know everything.\"\"What can one say about it?\" replied the prince in a cold,listless tone. \"What has been decided? They have decided thatBuonaparte has burnt his boats, and I believe that we are ready toburn ours.\"Prince Vasili always spoke languidly, like an actor repeating astale part. Anna Pavlovna Scherer on the contrary, despite her fortyyears, overflowed with animation and impulsiveness. To be anenthusiast had become her social vocation and, sometimes even when shedid not feel like it, she became enthusiastic in \n", + "order not todisappoint the expectations of those who knew her. The subdued smilewhich, though it did not suit her faded features, always playedround her lips expressed, as in a spoiled child, a continualconsciousness of her charming defect, which she neither wished, norcould, nor considered it necessary, to correct.In the midst of a conversation on political matters Anna Pavlovnaburst out:\"Oh, don't speak to me of Austria. Perhaps I don't understandthings, but Austria never has wished, and does not wish, for war.She is betraying us! Russia alone must save Europe. Our gracioussovereign recognizes his high vocation and will be true to it. That isthe one thing I have faith in! Our good and wonderful sovereign has toperform the noblest role on earth, and he is so virtuous and noblethat God will not forsake him. He will fulfill his vocation andcrush the hydra of revolution, which has become more terrible thanever in the person of this murderer and villain! We alone mustavenge the blood of the just one.... Whom, I ask you, can we relyon?... England with her commercial spirit will not and cannotunderstand the Emperor Alexander's loftiness of soul. She hasrefused to evacuate Malta. She wanted to find, and still seeks, somesecret motive in our actions. What answer did Novosiltsev get? None.The English have not understood and cannot understand theself-abnegation of our Emperor who wants nothing for himself, but onlydesires the good of mankind. And what have they promised? Nothing! Andwhat little they have promised they will not perform! Prussia hasalways declared that Buonaparte is invincible, and that all Europeis powerless before him.... And I don't believe a word that Hardenburgsays, or Haugwitz either. This famous Prussian neutrality is just atrap. I have faith only in God and the lofty destiny of our adoredmonarch. He will save Europe!\"She suddenly paused, smiling at her own impetuosity.\n", + "\"I think,\" said the prince with a smile, \"that if you had beensent instead of our dear Wintzingerode you would have captured theKing of Prussia's consent by assault. You are so eloquent. Will yougive me a cup of tea?\"\"In a moment. A propos,\" she added, becoming calm again, \"I amexpecting two very interesting men tonight, le Vicomte de Mortemart,who is connected with the Montmorencys through the Rohans, one ofthe best French families. He is one of the genuine emigres, the goodones. And also the Abbe Morio. Do you know that profound thinker? Hehas been received by the Emperor. Had you heard?\"\"I shall be delighted to meet them,\" said the prince. \"But tell me,\"he added with studied carelessness as if it had only just occurredto him, though the question he was about to ask was the chief motiveof his visit, \"is it true that the Dowager Empress wants Baron Funketo be appointed first secretary at Vienna? The baron by all accountsis a poor creature.\"Prince Vasili wished to obtain this post for his son, but otherswere trying through the Dowager Empress Marya Fedorovna to secure itfor the baron.Anna Pavlovna almost closed her eyes to indicate that neither shenor anyone else had a right to criticize what the Empress desired orwas pleased with.\"Baron Funke has been recommended to the Dowager Empress by hersister,\" was all she said, in a dry and mournful tone.As she named the Empress, Anna Pavlovna's face suddenly assumed anexpression of profound and sincere devotion and respect mingled withsadness, and this occurred every time she mentioned her illustriouspatroness. She added that Her Majesty had deigned to show BaronFunke beaucoup d'estime, and again \n", + "her face clouded over with sadness.The prince was silent and looked indifferent. But, with thewomanly and courtierlike quickness and tact habitual to her, AnnaPavlovna wished both to rebuke him (for daring to speak he had done ofa man recommended to the Empress) and at the same time to console him,so she said:\"Now about your family. Do you know that since your daughter cameout everyone has been enraptured by her? They say she is amazinglybeautiful.\"The prince bowed to signify his respect and gratitude.\"I often think,\" she continued after a short pause, drawing nearerto the prince and smiling amiably at him as if to show thatpolitical and social topics were ended and the time had come forintimate conversation- \"I often think how unfairly sometimes thejoys of life are distributed. Why has fate given you two such splendidchildren? I don't speak of Anatole, your youngest. I don't likehim,\" she added in a tone admitting of no rejoinder and raising hereyebrows. \"Two such charming children. And really you appreciatethem less than anyone, and so you don't deserve to have them.\"And she smiled her ecstatic smile.\"I can't help it,\" said the prince. \"Lavater would have said Ilack the bump of paternity.\"\"Don't joke; I mean to have a serious talk with you. Do you know Iam dissatisfied with your younger son? Between ourselves\" (and herface assumed its melancholy expression), \"he was mentioned at HerMajesty's and you were pitied....\"The prince answered nothing, but she looked at him \n", + "significantly,awaiting a reply. He frowned.\"What would you have me do?\" he said at last. \"You know I did alla father could for their education, and they have both turned outfools. Hippolyte is at least a quiet fool, but Anatole is an activeone. That is the only difference between them.\" He said this smilingin a way more natural and animated than usual, so that the wrinklesround his mouth very clearly revealed something unexpectedly coarseand unpleasant.\"And why are children born to such men as you? If you were not afather there would be nothing I could reproach you with,\" said AnnaPavlovna, looking up pensively.\"I am your faithful slave and to you alone I can confess that mychildren are the bane of my life. It is the cross I have to bear. Thatis how I explain it to myself. It can't be helped!\"He said no more, but expressed his resignation to cruel fate by agesture. Anna Pavlovna meditated.\"Have you never thought of marrying your prodigal son Anatole?\"she asked. \"They say old maids have a mania for matchmaking, andthough I don't feel that weakness in myself as yet,I know a littleperson who is very unhappy with her father. She is a relation ofyours, Princess Mary Bolkonskaya.\"Prince Vasili did not reply, though, with the quickness of memoryand perception befitting a man of the world, he indicated by amovement of the head that he was considering this information.\"Do you know,\" he said at last, evidently unable to check the sadcurrent of his thoughts, \"that Anatole is costing me forty thousandrubles a year? And,\" he went on after a pause, \"what will it be infive years, if he goes on like this?\" Presently he added: \n", + "\"That's whatwe fathers have to put up with.... Is this princess of yours rich?\"\"Her father is very rich and stingy. He lives in the country. Heis the well-known Prince Bolkonski who had to retire from the armyunder the late Emperor, and was nicknamed 'the King of Prussia.' He isvery clever but eccentric, and a bore. The poor girl is veryunhappy. She has a brother; I think you know him, he married LiseMeinen lately. He is an aide-de-camp of Kutuzov's and will be heretonight.\"\"Listen, dear Annette,\" said the prince, suddenly taking AnnaPavlovna's hand and for some reason drawing it downwards. \"Arrangethat affair for me and I shall always be your most devoted slave-slafe wigh an f, as a village elder of mine writes in his reports. Sheis rich and of good family and that's all I want.\"And with the familiarity and easy grace peculiar to him, he raisedthe maid of honor's hand to his lips, kissed it, and swung it to andfro as he lay back in his armchair, looking in another direction.\"Attendez,\" said Anna Pavlovna, reflecting, \"I'll speak to Lise,young Bolkonski's wife, this very evening, and perhaps the thing canbe arranged. It shall be on your family's behalf that I'll start myapprenticeship as old maid.\"\n" + ] + } + ], + "source": [ + "from urllib.request import urlretrieve\n", + "from pypdf import PdfReader\n", "\n", - " content = retstr.getvalue()\n", - " retstr.close()\n", - " return content\n", + "urlretrieve('http://pythonscraping.com/pages/warandpeace/chapter1.pdf', 'chapter1.pdf')\n", + "reader = PdfReader('chapter1.pdf')\n", "\n", - "pdfFile = urlopen(\"http://pythonscraping.com/pages/warandpeace/chapter1.pdf\")\n", - "outputString = readPDF(pdfFile)\n", - "print(outputString)\n", - "pdfFile.close()" + "for page in reader.pages:\n", + " print(page.extract_text())\n" ] }, { "cell_type": "code", - "execution_count": 1, + "execution_count": 28, "metadata": {}, "outputs": [ { @@ -1626,7 +1711,7 @@ }, { "cell_type": "code", - "execution_count": 14, + "execution_count": 29, "metadata": {}, "outputs": [ { @@ -1646,7 +1731,7 @@ "for textElem in textStrings:\n", " style = textElem.parent.parent.find('w:pStyle')\n", " if style is not None and style['w:val'] == 'Title':\n", - " print('Title is: {}'.format(textElem.text))\n", + " print(f'Title is: {textElem.text}')\n", " else:\n", " print(textElem.text)\n" ] @@ -1661,7 +1746,7 @@ ], "metadata": { "kernelspec": { - "display_name": "Python 3", + "display_name": "Python 3 (ipykernel)", "language": "python", "name": "python3" }, @@ -1675,7 +1760,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.6.1" + "version": "3.9.12" } }, "nbformat": 4, diff --git a/Chapter11_CleaningYourDirtyData.ipynb b/Chapter11_CleaningYourDirtyData.ipynb new file mode 100644 index 0000000..e4ab4fd --- /dev/null +++ b/Chapter11_CleaningYourDirtyData.ipynb @@ -0,0 +1,457 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 85, + "metadata": {}, + "outputs": [], + "source": [ + "from urllib.request import urlopen\n", + "from bs4 import BeautifulSoup\n", + "\n", + "html = urlopen('http://en.wikipedia.org/wiki/Python_(programming_language)')\n", + "bs = BeautifulSoup(html, 'html.parser')\n", + "content = bs.find('div', {'id':'mw-content-text'}).find_all('p')\n", + "content = [p.get_text() for p in content]\n" + ] + }, + { + "cell_type": "code", + "execution_count": 86, + "metadata": {}, + "outputs": [], + "source": [ + "content = ''.join(content)" + ] + }, + { + "cell_type": "code", + "execution_count": 87, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "\n", + "Python is a high-level, general-purpose programming language. Its design philosophy emphasizes code readability with the use of significant indentation via the off-side rule.[34]\n", + "Python is dynamically typed and garbage-collected. It supports multiple programming paradigms, including structured (particularly procedural), object-oriented and functional programming. It is often described as a \"batteries included\" language due to its comprehensive standard library.[35][36]\n", + "Guido van Rossum began working on Python in the late 1980s as a successor to the ABC programming language and first released it in 1991 as Python 0.9.0.[37] Python 2.0 was released in 2000. Python 3.0, released in 2008, was a major revision not completely backward-compatible with earlier versions. Python 2.7.18, released in 2020, was the last release of Python 2.[38]\n", + "Python consistently ranks as one of the most popular programming languages.[39][40][41][42]\n", + "Python was conceived in the late 1980s[43] by Guido van Rossum at Centrum Wiskunde & Informatica (CWI) in the Netherlands as a successor to the ABC programming language, which was inspired by SETL,[44] capable of exception handling and interfacing with the Amoeba operating system.[13] Its implementation began in December 1989.[45] Van Rossum shouldered sole responsibility for the project, as the lead developer, until 12 July 2018, when he announced his \"permanent vacation\" from his responsibilities as Python's \"benevolent dictator for life\", a title the Python community bestowed upon him to reflect his long-term commitment as the project's chief decision-maker.[46] In January 2019, active Python core developers elected a five-member Steering Council to lead the project.[47][48]\n", + "Python 2.0 was released on 16 October 2000, with many major new features such as list comprehensions, cycle-detecting garbage collection, reference counting, and Unicode support.[49] Python 3.0, released on 3 December 2008, with many of its major features backported to Python 2.6.x[50] and 2.7.x. Releases of Python 3 include the 2to3 utility, which automates the translation of Python 2 code to Python 3.[51]\n", + "Python 2.7's end-of-life was initially set for 2015, then postponed to 2020 out of concern that a large body of existing code could not easily be forward-ported to Python 3.[52][53] No further security patches or other improvements will be released for it.[54][55] Currently only 3.7 and later are supported. In 2021, Python 3.9.2 and 3.8.8 were expedited[56] as all versions of Python (including 2.7[57]) had security issues leading to possible remote code execution[58] and web cache poisoning.[59]\n", + "In 2022, Python 3.10.4 and 3.9.12 were expedited[60] and 3.8.13, and 3.7.13, because of many security issues.[61] When Python 3.9.13 was released in May 2022, it was announced that the 3.9 series (joining the older series 3.8 and 3.7) would only receive security fixes in the future.[62] On September 7, 2022, four new releases were made due to a potential denial-of-service attack: 3.10.7, 3.9.14, 3.8.14, and 3.7.14.[63][64]\n", + "As of November 2022,[update] Python 3.11 is the stable release. Notable changes from 3.10 include increased program execution speed and improved error reporting.[65]\n", + "Python is a multi-paradigm programming language. Object-oriented programming and structured programming are fully supported, and many of their features support functional programming and aspect-oriented programming (including metaprogramming[66] and metaobjects).[67] Many other paradigms are supported via extensions, including design by contract[68][69] and logic programming.[70]\n", + "Python uses dynamic typing and a combination of reference counting and a cycle-detecting garbage collector for memory management.[71] It uses dynamic name resolution (late binding), which binds method and variable names during program execution.\n", + "Its design offers some support for functional programming in the Lisp tradition. It has filter,mapandreduce functions; list comprehensions, dictionaries, sets, and generator expressions.[72] The standard library has two modules (itertools and functools) that implement functional tools borrowed from Haskell and Standard ML.[73]\n", + "Its core philosophy is summarized in the document The Zen of Python (PEP 20), which includes aphorisms such as:[74]\n", + "Rather than building all of its functionality into its core, Python was designed to be highly extensible via modules. This compact modularity has made it particularly popular as a means of adding programmable interfaces to existing applications. Van Rossum's vision of a small core language with a large standard library and easily extensible interpreter stemmed from his frustrations with ABC, which espoused the opposite approach.[43]\n", + "Python strives for a simpler, less-cluttered syntax and grammar while giving developers a choice in their coding methodology. In contrast to Perl's \"there is more than one way to do it\" motto, Python embraces a \"there should be one—and preferably only one—obvious way to do it\" philosophy.[74] Alex Martelli, a Fellow at the Python Software Foundation and Python book author, wrote: \"To describe something as 'clever' is not considered a compliment in the Python culture.\"[75]\n", + "Python's developers strive to avoid premature optimization and reject patches to non-critical parts of the CPython reference implementation that would offer marginal increases in speed at the cost of clarity.[76] When speed is important, a Python programmer can move time-critical functions to extension modules written in languages such as C; or use PyPy, a just-in-time compiler. Cython is also available, which translates a Python script into C and makes direct C-level API calls into the Python interpreter.\n", + "Python's developers aim for it to be fun to use. This is reflected in its name—a tribute to the British comedy group Monty Python[77]—and in occasionally playful approaches to tutorials and reference materials, such as the use of the terms \"spam\" and \"eggs\" (a reference to a Monty Python sketch) in examples, instead of the often-used \"foo\" and \"bar\".[78][79]\n", + "A common neologism in the Python community is pythonic, which has a wide range of meanings related to program style. \"Pythonic\" code may use Python idioms well, be natural or show fluency in the language, or conform with Python's minimalist philosophy and emphasis on readability. Code that is difficult to understand or reads like a rough transcription from another programming language is called unpythonic.[80][81]\n", + "Python is meant to be an easily readable language. Its formatting is visually uncluttered and often uses English keywords where other languages use punctuation. Unlike many other languages, it does not use curly brackets to delimit blocks, and semicolons after statements are allowed but rarely used. It has fewer syntactic exceptions and special cases than C or Pascal.[82]\n", + "Python uses whitespace indentation, rather than curly brackets or keywords, to delimit blocks. An increase in indentation comes after certain statements; a decrease in indentation signifies the end of the current block.[83] Thus, the program's visual structure accurately represents its semantic structure.[84] This feature is sometimes termed the off-side rule. Some other languages use indentation this way; but in most, indentation has no semantic meaning. The recommended indent size is four spaces.[85]\n", + "Python's statements include:\n", + "The assignment statement (=) binds a name as a reference to a separate, dynamically allocated object. Variables may subsequently be rebound at any time to any object. In Python, a variable name is a generic reference holder without a fixed data type; however, it always refers to some object with a type. This is called dynamic typing—in contrast to statically-typed languages, where each variable may contain only a value of a certain type.\n", + "Python does not support tail call optimization or first-class continuations, and, according to Van Rossum, it never will.[88][89] However, better support for coroutine-like functionality is provided by extending Python's generators.[90] Before 2.5, generators were lazy iterators; data was passed unidirectionally out of the generator. From Python 2.5 on, it is possible to pass data back into a generator function; and from version 3.3, it can be passed through multiple stack levels.[91]\n", + "Python's expressions include:\n", + "In Python, a distinction between expressions and statements is rigidly enforced, in contrast to languages such as Common Lisp, Scheme, or Ruby. This leads to duplicating some functionality. For example:\n", + "Statements cannot be a part of an expression—so list and other comprehensions or lambda expressions, all being expressions, cannot contain statements. A particular case is that an assignment statement such as a = 1 cannot form part of the conditional expression of a conditional statement. This has the advantage of avoiding a classic C error of mistaking an assignment operator = for an equality operator == in conditions: if (c = 1) { ...} is syntactically valid (but probably unintended) C code, but if c = 1: ... causes a syntax error in Python.\n", + "Methods on objects are functions attached to the object's class; the syntax instance.method(argument) is, for normal methods and functions, syntactic sugar for Class.method(instance, argument). Python methods have an explicit self parameter to access instance data, in contrast to the implicit self (or this) in some other object-oriented programming languages (e.g., C++, Java, Objective-C, Ruby).[100] Python also provides methods, often called dunder methods (due to their names beginning and ending with double-underscores), to allow user-defined classes to modify how they are handled by native operations including length, comparison, in arithmetic operations and type conversion.[101]\n", + "Python uses duck typing and has typed objects but untyped variable names. Type constraints are not checked at compile time; rather, operations on an object may fail, signifying that it is not of a suitable type. Despite being dynamically typed, Python is strongly typed, forbidding operations that are not well-defined (for example, adding a number to a string) rather than silently attempting to make sense of them.\n", + "Python allows programmers to define their own types using classes, most often used for object-oriented programming. New instances of classes are constructed by calling the class (for example, SpamClass() or EggsClass()), and the classes are instances of the metaclass type (itself an instance of itself), allowing metaprogramming and reflection.\n", + "Before version 3.0, Python had two kinds of classes (both using the same syntax): old-style and new-style,[102] current Python versions only support the semantics new style.\n", + "Python supports gradual typing.[103] Python's syntax allows specifying static types, but they are not checked in the default implementation, CPython. An experimental optional static type-checker, mypy, supports compile-time type checking.[104]\n", + "1.33333\n", + "Python has the usual symbols for arithmetic operators (+, -, *, /), the floor division operator // and the modulo operation % (where the remainder can be negative, e.g. 4 % -3 == -2). It also has ** for exponentiation, e.g. 5**3 == 125 and 9**0.5 == 3.0, and a matrix‑multiplication operator @ .[108] These operators work like in traditional math; with the same precedence rules, the operators infix (+ and - can also be unary to represent positive and negative numbers respectively).\n", + "The division between integers produces floating-point results. The behavior of division has changed significantly over time:[109]\n", + "In Python terms, / is true division (or simply division), and // is floor division. / before version 3.0 is classic division.[109]\n", + "Rounding towards negative infinity, though different from most languages, adds consistency. For instance, it means that the equation (a + b)//b == a//b + 1 is always true. It also means that the equation b*(a//b) + a%b == a is valid for both positive and negative values of a. However, maintaining the validity of this equation means that while the result of a%b is, as expected, in the half-open interval [0, b), where b is a positive integer, it has to lie in the interval (b, 0] when b is negative.[110]\n", + "Python provides a round function for rounding a float to the nearest integer. For tie-breaking, Python 3 uses round to even: round(1.5) and round(2.5) both produce 2.[111] Versions before 3 used round-away-from-zero: round(0.5) is 1.0, round(-0.5) is −1.0.[112]\n", + "Python allows boolean expressions with multiple equality relations in a manner that is consistent with general use in mathematics. For example, the expression a < b < c tests whether a is less than b and b is less than c.[113] C-derived languages interpret this expression differently: in C, the expression would first evaluate a < b, resulting in 0 or 1, and that result would then be compared with c.[114]\n", + "Python uses arbitrary-precision arithmetic for all integer operations. The Decimal type/class in the decimal module provides decimal floating-point numbers to a pre-defined arbitrary precision and several rounding modes.[115] The Fraction class in the fractions module provides arbitrary precision for rational numbers.[116]\n", + "Due to Python's extensive mathematics library, and the third-party library NumPy that further extends the native capabilities, it is frequently used as a scientific scripting language to aid in problems such as numerical data processing and manipulation.[117][118]\n", + "Hello world program:\n", + "Program to calculate the factorial of a positive integer:\n", + "Python's large standard library[119] provides tools suited to many tasks and is commonly cited as one of its greatest strengths. For Internet-facing applications, many standard formats and protocols such as MIME and HTTP are supported. It includes modules for creating graphical user interfaces, connecting to relational databases, generating pseudorandom numbers, arithmetic with arbitrary-precision decimals,[120] manipulating regular expressions, and unit testing.\n", + "Some parts of the standard library are covered by specifications—for example, the Web Server Gateway Interface (WSGI) implementation wsgiref follows PEP 333[121]—but most are specified by their code, internal documentation, and test suites. However, because most of the standard library is cross-platform Python code, only a few modules need altering or rewriting for variant implementations.\n", + "As of 14 November 2022,[update] the Python Package Index (PyPI), the official repository for third-party Python software, contains over 415,000[122] packages with a wide range of functionality, including:\n", + "Most Python implementations (including CPython) include a read–eval–print loop (REPL), permitting them to function as a command line interpreter for which users enter statements sequentially and receive results immediately.\n", + "Python also comes with an Integrated development environment (IDE) called IDLE, which is more beginner-oriented.\n", + "Other shells, including IDLE and IPython, add further abilities such as improved auto-completion, session state retention, and syntax highlighting.\n", + "As well as standard desktop integrated development environments, there are Web browser-based IDEs, including SageMath, for developing science- and math-related programs; PythonAnywhere, a browser-based IDE and hosting environment; and Canopy IDE, a commercial IDE emphasizing scientific computing.[123]\n", + "CPython is the reference implementation of Python. It is written in C, meeting the C89 standard (Python 3.11 uses C11[124]) with several select C99 features. CPython includes its own C extensions, but third-party extensions are not limited to older C versions—e.g. they can be implemented with C11 or C++.[125][126]) It compiles Python programs into an intermediate bytecode[127] which is then executed by its virtual machine.[128] CPython is distributed with a large standard library written in a mixture of C and native Python, and is available for many platforms, including Windows (starting with Python 3.9, the Python installer deliberately fails to install on Windows 7 and 8;[129][130] Windows XP was supported until Python 3.5) and most modern Unix-like systems, including macOS (and Apple M1 Macs, since Python 3.9.1, with experimental installer) and unofficial support for e.g. VMS.[131] Platform portability was one of its earliest priorities.[132] (During Python 1 and 2 development, even OS/2 and Solaris were supported,[133] but support has since been dropped for many platforms.)\n", + "Other just-in-time Python compilers have been developed, but are now unsupported:\n", + "There are several compilers to high-level object languages, with either unrestricted Python, a restricted subset of Python, or a language similar to Python as the source language:\n", + "Specialized:\n", + "Older projects (or not to be used with Python 3.x and latest syntax):\n", + "Performance comparison of various Python implementations on a non-numerical (combinatorial) workload was presented at EuroSciPy '13.[157] Python's performance compared to other programming languages is also benchmarked by The Computer Language Benchmarks Game.[158]\n", + "Python's development is conducted largely through the Python Enhancement Proposal (PEP) process, the primary mechanism for proposing major new features, collecting community input on issues, and documenting Python design decisions.[159] Python coding style is covered in PEP 8.[160] Outstanding PEPs are reviewed and commented on by the Python community and the steering council.[159]\n", + "Enhancement of the language corresponds with the development of the CPython reference implementation. The mailing list python-dev is the primary forum for the language's development. Specific issues were originally discussed in the Roundup bug tracker hosted at by the foundation.[161] In 2022, all issues and discussions were migrated to GitHub.[162] Development originally took place on a self-hosted source-code repository running Mercurial, until Python moved to GitHub in January 2017.[163]\n", + "CPython's public releases come in three types, distinguished by which part of the version number is incremented:\n", + "Many alpha, beta, and release-candidates are also released as previews and for testing before final releases. Although there is a rough schedule for each release, they are often delayed if the code is not ready. Python's development team monitors the state of the code by running the large unit test suite during development.[169]\n", + "The major academic conference on Python is PyCon. There are also special Python mentoring programs, such as Pyladies.\n", + "Python 3.10 deprecated wstr (to be removed in Python 3.12; meaning Python extensions[170] need to be modified by then),[171] and added pattern matching to the language.[172]\n", + "Tools that can generate documentation for Python API include pydoc (available as part of the standard library), Sphinx, Pdoc and its forks, Doxygen and Graphviz, among others.[173]\n", + "Python's name is derived from the British comedy group Monty Python, whom Python creator Guido van Rossum enjoyed while developing the language. Monty Python references appear frequently in Python code and culture;[174] for example, the metasyntactic variables often used in Python literature are spam and eggs instead of the traditional foo and bar.[174][175] The official Python documentation also contains various references to Monty Python routines.[176][177]\n", + "The prefix Py- is used to show that something is related to Python. Examples of the use of this prefix in names of Python applications or libraries include Pygame, a binding of SDL to Python (commonly used to create games); PyQt and PyGTK, which bind Qt and GTK to Python respectively; and PyPy, a Python implementation originally written in Python.\n", + "Since 2003, Python has consistently ranked in the top ten most popular programming languages in the TIOBE Programming Community Index where as of December 2022[update] it was the most popular language (ahead of C, C++, and Java).[41] It was selected Programming Language of the Year (for \"the highest rise in ratings in a year\") in 2007, 2010, 2018, and 2020 (the only language to have done so four times as of 2020[178]).\n", + "An empirical study found that scripting languages, such as Python, are more productive than conventional languages, such as C and Java, for programming problems involving string manipulation and search in a dictionary, and determined that memory consumption was often \"better than Java and not much worse than C or C++\".[179]\n", + "Large organizations that use Python include Wikipedia, Google,[180] Yahoo!,[181] CERN,[182] NASA,[183] Facebook,[184] Amazon, Instagram,[185] Spotify,[186] and some smaller entities like ILM[187] and ITA.[188] The social news networking site Reddit was written mostly in Python.[189]\n", + "Python can serve as a scripting language for web applications, e.g., via mod_wsgi for the Apache webserver.[190] With Web Server Gateway Interface, a standard API has evolved to facilitate these applications. Web frameworks like Django, Pylons, Pyramid, TurboGears, web2py, Tornado, Flask, Bottle, and Zope support developers in the design and maintenance of complex applications. Pyjs and IronPython can be used to develop the client-side of Ajax-based applications. SQLAlchemy can be used as a data mapper to a relational database. Twisted is a framework to program communications between computers, and is used (for example) by Dropbox.\n", + "Libraries such as NumPy, SciPy, and Matplotlib allow the effective use of Python in scientific computing,[191][192] with specialized libraries such as Biopython and Astropy providing domain-specific functionality. SageMath is a computer algebra system with a notebook interface programmable in Python: its library covers many aspects of mathematics, including algebra, combinatorics, numerical mathematics, number theory, and calculus.[193] OpenCV has Python bindings with a rich set of features for computer vision and image processing.[194]\n", + "Python is commonly used in artificial intelligence projects and machine learning projects with the help of libraries like TensorFlow, Keras, Pytorch, and scikit-learn.[195][196][197][198] As a scripting language with a modular architecture, simple syntax, and rich text processing tools, Python is often used for natural language processing.[199]\n", + "Python can also be used to create games, with libraries such as Pygame, which can make 2D games.\n", + "Python has been successfully embedded in many software products as a scripting language, including in finite element method software such as Abaqus, 3D parametric modelers like FreeCAD, 3D animation packages such as 3ds Max, Blender, Cinema 4D, Lightwave, Houdini, Maya, modo, MotionBuilder, Softimage, the visual effects compositor Nuke, 2D imaging programs like GIMP,[200] Inkscape, Scribus and Paint Shop Pro,[201] and musical notation programs like scorewriter and capella. GNU Debugger uses Python as a pretty printer to show complex structures such as C++ containers. Esri promotes Python as the best choice for writing scripts in ArcGIS.[202] It has also been used in several video games,[203][204] and has been adopted as first of the three available programming languages in Google App Engine, the other two being Java and Go.[205]\n", + "Many operating systems include Python as a standard component. It ships with most Linux distributions,[206] AmigaOS 4 (using Python 2.7), FreeBSD (as a package), NetBSD, and OpenBSD (as a package) and can be used from the command line (terminal). Many Linux distributions use installers written in Python: Ubuntu uses the Ubiquity installer, while Red Hat Linux and Fedora Linux use the Anaconda installer. Gentoo Linux uses Python in its package management system, Portage.\n", + "Python is used extensively in the information security industry, including in exploit development.[207][208]\n", + "Most of the Sugar software for the One Laptop per Child XO, developed at Sugar Labs since 2008, is written in Python.[209] The Raspberry Pi single-board computer project has adopted Python as its main user-programming language.\n", + "LibreOffice includes Python and intends to replace Java with Python. Its Python Scripting Provider is a core feature[210] since Version 4.0 from 7 February 2013.\n", + "Python's design and philosophy have influenced many other programming languages:\n", + "Python's development practices have also been emulated by other languages. For example, the practice of requiring a document describing the rationale for, and issues surrounding, a change to the language (in Python, a PEP) is also used in Tcl,[222] Erlang,[223] and Swift.[224]\n", + "\n" + ] + } + ], + "source": [ + "print(content)" + ] + }, + { + "cell_type": "code", + "execution_count": 102, + "metadata": {}, + "outputs": [], + "source": [ + "import re\n", + "import string \n", + "import unicodedata\n", + "\n", + "# Must be called before split_sentences\n", + "def replace_newlines(text):\n", + " return text.replace('\\n', ' ')\n", + "\n", + "def make_lowercase(text):\n", + " return text.lower()\n", + "\n", + "CITATION_REGEX = re.compile('\\[[0-9]*\\]')\n", + "def strip_citations(text):\n", + " return re.sub(CITATION_REGEX, '', text)\n", + "\n", + "\n", + "def split_sentences(text):\n", + " return [s.strip() for s in text.split('. ')]\n", + "\n", + "PARENS_REGEX = re.compile('\\([a-z A-Z \\+\\.,\\-]{0,100}\\)')\n", + "def remove_parentheses(text):\n", + " return re.sub(PARENS_REGEX, '', text)\n", + "\n", + "\n", + "DESCRIPTION_REGEX = re.compile('\\n[a-z A-Z]*:')\n", + "def remove_descriptions(text):\n", + " return re.sub(DESCRIPTION_REGEX, '', text)\n", + "\n", + "\n", + "puncts = [re.escape(c) for c in string.punctuation]\n", + "PUNCTUATION_REGEX = re.compile('|'.join(puncts))\n", + "def remove_punctuation(text):\n", + " return re.sub(PUNCTUATION_REGEX, '', text)\n", + "\n", + "def normalize(text):\n", + " return unicodedata.normalize('NFKD', text)\n" + ] + }, + { + "cell_type": "code", + "execution_count": 103, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "['python is a highlevel generalpurpose programming language', 'its design philosophy emphasizes code readability with the use of significant indentation via the offside rule', 'python is dynamically typed and garbagecollected', 'it supports multiple programming paradigms including structured objectoriented and functional programming', 'it is often described as a batteries included language due to its comprehensive standard library', 'guido van rossum began working on python in the late 1980s as a successor to the abc programming language and first released it in 1991 as python 090', 'python 20 was released in 2000', 'python 30 released in 2008 was a major revision not completely backwardcompatible with earlier versions', 'python 2718 released in 2020 was the last release of python 2', 'python consistently ranks as one of the most popular programming languages', 'python was conceived in the late 1980s by guido van rossum at centrum wiskunde informatica in the netherlands as a successor to the abc programming language which was inspired by setl capable of exception handling and interfacing with the amoeba operating system', 'its implementation began in december 1989', 'van rossum shouldered sole responsibility for the project as the lead developer until 12 july 2018 when he announced his permanent vacation from his responsibilities as pythons benevolent dictator for life a title the python community bestowed upon him to reflect his longterm commitment as the projects chief decisionmaker', 'in january 2019 active python core developers elected a fivemember steering council to lead the project', 'python 20 was released on 16 october 2000 with many major new features such as list comprehensions cycledetecting garbage collection reference counting and unicode support', 'python 30 released on 3 december 2008 with many of its major features backported to python 26x and 27x', 'releases of python 3 include the 2to3 utility which automates the translation of python 2 code to python 3', 'python 27s endoflife was initially set for 2015 then postponed to 2020 out of concern that a large body of existing code could not easily be forwardported to python 3', 'no further security patches or other improvements will be released for it', 'currently only 37 and later are supported', 'in 2021 python 392 and 388 were expedited as all versions of python including 27 had security issues leading to possible remote code execution and web cache poisoning', 'in 2022 python 3104 and 3912 were expedited and 3813 and 3713 because of many security issues', 'when python 3913 was released in may 2022 it was announced that the 39 series joining the older series 38 and 37 would only receive security fixes in the future', 'on september 7 2022 four new releases were made due to a potential denialofservice attack 3107 3914 3814 and 3714', 'as of november 2022update python 311 is the stable release', 'notable changes from 310 include increased program execution speed and improved error reporting', 'python is a multiparadigm programming language', 'objectoriented programming and structured programming are fully supported and many of their features support functional programming and aspectoriented programming', 'many other paradigms are supported via extensions including design by contract and logic programming', 'python uses dynamic typing and a combination of reference counting and a cycledetecting garbage collector for memory management', 'it uses dynamic name resolution which binds method and variable names during program execution', 'its design offers some support for functional programming in the lisp tradition', 'it has filtermapandreduce functions list comprehensions dictionaries sets and generator expressions', 'the standard library has two modules that implement functional tools borrowed from haskell and standard ml', 'its core philosophy is summarized in the document the zen of python pep 20 which includes aphorisms such as rather than building all of its functionality into its core python was designed to be highly extensible via modules', 'this compact modularity has made it particularly popular as a means of adding programmable interfaces to existing applications', 'van rossums vision of a small core language with a large standard library and easily extensible interpreter stemmed from his frustrations with abc which espoused the opposite approach', 'python strives for a simpler lesscluttered syntax and grammar while giving developers a choice in their coding methodology', 'in contrast to perls there is more than one way to do it motto python embraces a there should be one—and preferably only one—obvious way to do it philosophy', 'alex martelli a fellow at the python software foundation and python book author wrote to describe something as clever is not considered a compliment in the python culture pythons developers strive to avoid premature optimization and reject patches to noncritical parts of the cpython reference implementation that would offer marginal increases in speed at the cost of clarity', 'when speed is important a python programmer can move timecritical functions to extension modules written in languages such as c or use pypy a justintime compiler', 'cython is also available which translates a python script into c and makes direct clevel api calls into the python interpreter', 'pythons developers aim for it to be fun to use', 'this is reflected in its name—a tribute to the british comedy group monty python—and in occasionally playful approaches to tutorials and reference materials such as the use of the terms spam and eggs in examples instead of the oftenused foo and bar', 'a common neologism in the python community is pythonic which has a wide range of meanings related to program style', 'pythonic code may use python idioms well be natural or show fluency in the language or conform with pythons minimalist philosophy and emphasis on readability', 'code that is difficult to understand or reads like a rough transcription from another programming language is called unpythonic', 'python is meant to be an easily readable language', 'its formatting is visually uncluttered and often uses english keywords where other languages use punctuation', 'unlike many other languages it does not use curly brackets to delimit blocks and semicolons after statements are allowed but rarely used', 'it has fewer syntactic exceptions and special cases than c or pascal', 'python uses whitespace indentation rather than curly brackets or keywords to delimit blocks', 'an increase in indentation comes after certain statements a decrease in indentation signifies the end of the current block', 'thus the programs visual structure accurately represents its semantic structure', 'this feature is sometimes termed the offside rule', 'some other languages use indentation this way but in most indentation has no semantic meaning', 'the recommended indent size is four spaces', 'pythons statements include the assignment statement binds a name as a reference to a separate dynamically allocated object', 'variables may subsequently be rebound at any time to any object', 'in python a variable name is a generic reference holder without a fixed data type however it always refers to some object with a type', 'this is called dynamic typing—in contrast to staticallytyped languages where each variable may contain only a value of a certain type', 'python does not support tail call optimization or firstclass continuations and according to van rossum it never will', 'however better support for coroutinelike functionality is provided by extending pythons generators', 'before 25 generators were lazy iterators data was passed unidirectionally out of the generator', 'from python 25 on it is possible to pass data back into a generator function and from version 33 it can be passed through multiple stack levels', 'pythons expressions include in python a distinction between expressions and statements is rigidly enforced in contrast to languages such as common lisp scheme or ruby', 'this leads to duplicating some functionality', 'for example statements cannot be a part of an expression—so list and other comprehensions or lambda expressions all being expressions cannot contain statements', 'a particular case is that an assignment statement such as a 1 cannot form part of the conditional expression of a conditional statement', 'this has the advantage of avoiding a classic c error of mistaking an assignment operator for an equality operator in conditions if c 1 is syntactically valid c code but if c 1 ', 'causes a syntax error in python', 'methods on objects are functions attached to the objects class the syntax instancemethod is for normal methods and functions syntactic sugar for classmethod', 'python methods have an explicit self parameter to access instance data in contrast to the implicit self in some other objectoriented programming languages', 'python also provides methods often called dunder methods to allow userdefined classes to modify how they are handled by native operations including length comparison in arithmetic operations and type conversion', 'python uses duck typing and has typed objects but untyped variable names', 'type constraints are not checked at compile time rather operations on an object may fail signifying that it is not of a suitable type', 'despite being dynamically typed python is strongly typed forbidding operations that are not welldefined rather than silently attempting to make sense of them', 'python allows programmers to define their own types using classes most often used for objectoriented programming', 'new instances of classes are constructed by calling the class for example spamclass or eggsclass and the classes are instances of the metaclass type allowing metaprogramming and reflection', 'before version 30 python had two kinds of classes oldstyle and newstyle current python versions only support the semantics new style', 'python supports gradual typing', 'pythons syntax allows specifying static types but they are not checked in the default implementation cpython', 'an experimental optional static typechecker mypy supports compiletime type checking', '133333 python has the usual symbols for arithmetic operators the floor division operator and the modulo operation where the remainder can be negative eg', '4 3 2', 'it also has for exponentiation eg', '53 125 and 905 30 and a matrix‐multiplication operator ', 'these operators work like in traditional math with the same precedence rules the operators infix', 'the division between integers produces floatingpoint results', 'the behavior of division has changed significantly over time in python terms is true division and is floor division', ' before version 30 is classic division', 'rounding towards negative infinity though different from most languages adds consistency', 'for instance it means that the equation b ab 1 is always true', 'it also means that the equation bab ab a is valid for both positive and negative values of a', 'however maintaining the validity of this equation means that while the result of ab is as expected in the halfopen interval 0 b where b is a positive integer it has to lie in the interval b 0 when b is negative', 'python provides a round function for rounding a float to the nearest integer', 'for tiebreaking python 3 uses round to even round15 and round25 both produce 2', 'versions before 3 used roundawayfromzero round05 is 10 round05 is −10', 'python allows boolean expressions with multiple equality relations in a manner that is consistent with general use in mathematics', 'for example the expression a b c tests whether a is less than b and b is less than c', 'cderived languages interpret this expression differently in c the expression would first evaluate a b resulting in 0 or 1 and that result would then be compared with c', 'python uses arbitraryprecision arithmetic for all integer operations', 'the decimal typeclass in the decimal module provides decimal floatingpoint numbers to a predefined arbitrary precision and several rounding modes', 'the fraction class in the fractions module provides arbitrary precision for rational numbers', 'due to pythons extensive mathematics library and the thirdparty library numpy that further extends the native capabilities it is frequently used as a scientific scripting language to aid in problems such as numerical data processing and manipulation', 'pythons large standard library provides tools suited to many tasks and is commonly cited as one of its greatest strengths', 'for internetfacing applications many standard formats and protocols such as mime and http are supported', 'it includes modules for creating graphical user interfaces connecting to relational databases generating pseudorandom numbers arithmetic with arbitraryprecision decimals manipulating regular expressions and unit testing', 'some parts of the standard library are covered by specifications—for example the web server gateway interface implementation wsgiref follows pep 333—but most are specified by their code internal documentation and test suites', 'however because most of the standard library is crossplatform python code only a few modules need altering or rewriting for variant implementations', 'as of 14 november 2022update the python package index the official repository for thirdparty python software contains over 415000 packages with a wide range of functionality including most python implementations include a read–eval–print loop permitting them to function as a command line interpreter for which users enter statements sequentially and receive results immediately', 'python also comes with an integrated development environment called idle which is more beginneroriented', 'other shells including idle and ipython add further abilities such as improved autocompletion session state retention and syntax highlighting', 'as well as standard desktop integrated development environments there are web browserbased ides including sagemath for developing science and mathrelated programs pythonanywhere a browserbased ide and hosting environment and canopy ide a commercial ide emphasizing scientific computing', 'cpython is the reference implementation of python', 'it is written in c meeting the c89 standard python 311 uses c11 with several select c99 features', 'cpython includes its own c extensions but thirdparty extensions are not limited to older c versions—eg', 'they can be implemented with c11 or c it compiles python programs into an intermediate bytecode which is then executed by its virtual machine', 'cpython is distributed with a large standard library written in a mixture of c and native python and is available for many platforms including windows starting with python 39 the python installer deliberately fails to install on windows 7 and 8 windows xp was supported until python 35 and most modern unixlike systems including macos and apple m1 macs since python 391 with experimental installer and unofficial support for eg', 'vms', 'platform portability was one of its earliest priorities', 'during python 1 and 2 development even os2 and solaris were supported but support has since been dropped for many platforms other justintime python compilers have been developed but are now unsupported there are several compilers to highlevel object languages with either unrestricted python a restricted subset of python or a language similar to python as the source language older projects or not to be used with python 3x and latest syntax performance comparison of various python implementations on a nonnumerical workload was presented at euroscipy 13', 'pythons performance compared to other programming languages is also benchmarked by the computer language benchmarks game', 'pythons development is conducted largely through the python enhancement proposal process the primary mechanism for proposing major new features collecting community input on issues and documenting python design decisions', 'python coding style is covered in pep 8', 'outstanding peps are reviewed and commented on by the python community and the steering council', 'enhancement of the language corresponds with the development of the cpython reference implementation', 'the mailing list pythondev is the primary forum for the languages development', 'specific issues were originally discussed in the roundup bug tracker hosted at by the foundation', 'in 2022 all issues and discussions were migrated to github', 'development originally took place on a selfhosted sourcecode repository running mercurial until python moved to github in january 2017', 'cpythons public releases come in three types distinguished by which part of the version number is incremented many alpha beta and releasecandidates are also released as previews and for testing before final releases', 'although there is a rough schedule for each release they are often delayed if the code is not ready', 'pythons development team monitors the state of the code by running the large unit test suite during development', 'the major academic conference on python is pycon', 'there are also special python mentoring programs such as pyladies', 'python 310 deprecated wstr to be removed in python 312 meaning python extensions need to be modified by then and added pattern matching to the language', 'tools that can generate documentation for python api include pydoc sphinx pdoc and its forks doxygen and graphviz among others', 'pythons name is derived from the british comedy group monty python whom python creator guido van rossum enjoyed while developing the language', 'monty python references appear frequently in python code and culture for example the metasyntactic variables often used in python literature are spam and eggs instead of the traditional foo and bar', 'the official python documentation also contains various references to monty python routines', 'the prefix py is used to show that something is related to python', 'examples of the use of this prefix in names of python applications or libraries include pygame a binding of sdl to python pyqt and pygtk which bind qt and gtk to python respectively and pypy a python implementation originally written in python', 'since 2003 python has consistently ranked in the top ten most popular programming languages in the tiobe programming community index where as of december 2022update it was the most popular language', 'it was selected programming language of the year for the highest rise in ratings in a year in 2007 2010 2018 and 2020 the only language to have done so four times as of 2020', 'an empirical study found that scripting languages such as python are more productive than conventional languages such as c and java for programming problems involving string manipulation and search in a dictionary and determined that memory consumption was often better than java and not much worse than c or c', 'large organizations that use python include wikipedia google yahoo cern nasa facebook amazon instagram spotify and some smaller entities like ilm and ita', 'the social news networking site reddit was written mostly in python', 'python can serve as a scripting language for web applications eg via modwsgi for the apache webserver', 'with web server gateway interface a standard api has evolved to facilitate these applications', 'web frameworks like django pylons pyramid turbogears web2py tornado flask bottle and zope support developers in the design and maintenance of complex applications', 'pyjs and ironpython can be used to develop the clientside of ajaxbased applications', 'sqlalchemy can be used as a data mapper to a relational database', 'twisted is a framework to program communications between computers and is used by dropbox', 'libraries such as numpy scipy and matplotlib allow the effective use of python in scientific computing with specialized libraries such as biopython and astropy providing domainspecific functionality', 'sagemath is a computer algebra system with a notebook interface programmable in python its library covers many aspects of mathematics including algebra combinatorics numerical mathematics number theory and calculus', 'opencv has python bindings with a rich set of features for computer vision and image processing', 'python is commonly used in artificial intelligence projects and machine learning projects with the help of libraries like tensorflow keras pytorch and scikitlearn', 'as a scripting language with a modular architecture simple syntax and rich text processing tools python is often used for natural language processing', 'python can also be used to create games with libraries such as pygame which can make 2d games', 'python has been successfully embedded in many software products as a scripting language including in finite element method software such as abaqus 3d parametric modelers like freecad 3d animation packages such as 3ds max blender cinema 4d lightwave houdini maya modo motionbuilder softimage the visual effects compositor nuke 2d imaging programs like gimp inkscape scribus and paint shop pro and musical notation programs like scorewriter and capella', 'gnu debugger uses python as a pretty printer to show complex structures such as c containers', 'esri promotes python as the best choice for writing scripts in arcgis', 'it has also been used in several video games and has been adopted as first of the three available programming languages in google app engine the other two being java and go', 'many operating systems include python as a standard component', 'it ships with most linux distributions amigaos 4 using python 27 freebsd netbsd and openbsd and can be used from the command line', 'many linux distributions use installers written in python ubuntu uses the ubiquity installer while red hat linux and fedora linux use the anaconda installer', 'gentoo linux uses python in its package management system portage', 'python is used extensively in the information security industry including in exploit development', 'most of the sugar software for the one laptop per child xo developed at sugar labs since 2008 is written in python', 'the raspberry pi singleboard computer project has adopted python as its main userprogramming language', 'libreoffice includes python and intends to replace java with python', 'its python scripting provider is a core feature since version 40 from 7 february 2013', 'pythons design and philosophy have influenced many other programming languages pythons development practices have also been emulated by other languages', 'for example the practice of requiring a document describing the rationale for and issues surrounding a change to the language is also used in tcl erlang and swift', '']\n" + ] + } + ], + "source": [ + "\n", + "text_operations = [\n", + " strip_citations,\n", + " remove_parentheses,\n", + " remove_descriptions,\n", + " replace_newlines,\n", + " split_sentences,\n", + " make_lowercase,\n", + " remove_punctuation,\n", + " normalize\n", + "]\n", + "\n", + "cleaned = content\n", + "for op in text_operations:\n", + " if type(cleaned) == list:\n", + " cleaned = [op(c) for c in cleaned]\n", + " else:\n", + " cleaned = op(cleaned)\n", + " \n", + "print(cleaned)" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[('web', 'scraping'), ('scraping', 'with'), ('with', 'python')]" + ] + }, + "execution_count": 2, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "from urllib.request import urlopen\n", + "from bs4 import BeautifulSoup\n", + "\n", + "def getNgrams(text, n):\n", + " text = text.split(' ')\n", + " return [text[i:i+n] for i in range(len(text)-n+1)]\n", + "\n", + "getNgrams('web scraping with python', 2)" + ] + }, + { + "cell_type": "code", + "execution_count": 109, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[('in the', 19), ('of the', 19), ('such as', 18), ('as a', 14), ('in python', 12), ('python is', 9), ('of python', 9), ('the python', 9), ('is a', 8), ('to the', 8), ('standard library', 7), ('to python', 7), ('with a', 7), ('programming language', 6), ('programming languages', 6), ('to be', 6), ('written in', 6), ('can be', 6), ('with the', 5), ('it is', 5), ('van rossum', 5), ('for the', 5), ('as the', 5), ('of a', 5), ('the language', 5), ('for example', 5), ('python as', 5), ('be used', 5), ('use of', 4), ('released in', 4), (' in', 4), ('of its', 4), ('python 3', 4), ('to a', 4), ('as of', 4), ('python uses', 4), ('it has', 4), ('contrast to', 4), ('languages such', 4), ('other languages', 4), (' 1', 4), ('operator ', 4), (' ', 4), (' is', 4), ('are not', 4), ('and the', 4), ('in a', 4), ('example the', 4), ('scripting language', 4), ('used in', 4), ('the use', 3), ('functional programming', 3), ('due to', 3), ('guido van', 3), ('python in', 3), ('was released', 3), ('one of', 3), ('most popular', 3), ('python community', 3), ('a large', 3), ('are supported', 3), ('it was', 3), ('that the', 3), ('is the', 3), ('objectoriented programming', 3), ('many other', 3), ('and a', 3), ('support for', 3), ('the standard', 3), ('rather than', 3), ('large standard', 3), ('in contrast', 3), ('is not', 3), ('reference implementation', 3), ('a python', 3), ('as c', 3), ('c or', 3), ('is also', 3), ('c and', 3), ('than c', 3), ('python a', 3), ('part of', 3), ('a ', 3), ('they are', 3), ('often used', 3), ('python has', 3), (' and', 3), ('means that', 3), ('b is', 3), ('and is', 3), ('there are', 3), ('with python', 3), ('by the', 3), ('pythons development', 3), ('monty python', 3), ('is used', 3), ('used to', 3), ('a scripting', 3), ('libraries such', 3), ('its design', 2), ('the offside', 2), ('offside rule', 2), ('dynamically typed', 2), ('is often', 2), ('on python', 2), ('the late', 2), ('late 1980s', 2), ('a successor', 2), ('successor to', 2), ('the abc', 2), ('abc programming', 2), ('as python', 2), ('python 20', 2), ('20 was', 2), ('python 30', 2), ('30 released', 2), ('was the', 2), ('python 2', 2), ('as one', 2), ('the most', 2), ('popular programming', 2), ('python was', 2), ('the project', 2), ('from his', 2), ('in january', 2), ('steering council', 2), ('released on', 2), ('with many', 2), ('major new', 2), ('new features', 2), ('list comprehensions', 2), ('cycledetecting garbage', 2), ('reference counting', 2), ('counting and', 2), ('many of', 2), ('include the', 2), ('out of', 2), ('for it', 2), ('were expedited', 2), ('security issues', 2), ('in 2022', 2), ('november 2022update', 2), ('python 311', 2), ('program execution', 2), ('programming and', 2), ('uses dynamic', 2), ('typing and', 2), ('variable names', 2), ('its core', 2), ('language with', 2), ('library and', 2), ('syntax and', 2), ('there is', 2), ('is more', 2), ('way to', 2), ('to do', 2), ('do it', 2), ('at the', 2), ('python software', 2), ('pythons developers', 2), ('parts of', 2), ('the cpython', 2), ('cpython reference', 2), ('pypy a', 2), ('this is', 2), ('in its', 2), ('the british', 2), ('british comedy', 2), ('comedy group', 2), ('group monty', 2), ('spam and', 2), ('and eggs', 2), ('instead of', 2), ('foo and', 2), ('and bar', 2), ('a wide', 2), ('wide range', 2), ('range of', 2), ('related to', 2), ('to program', 2), ('use python', 2), ('that is', 2), ('a rough', 2), ('is called', 2), ('languages use', 2), ('does not', 2), ('curly brackets', 2), ('to delimit', 2), ('delimit blocks', 2), ('in indentation', 2), ('some other', 2), ('assignment statement', 2), ('name is', 2), ('only a', 2), ('expressions and', 2), ('an assignment', 2), ('has the', 2), (' for', 2), ('if c', 2), ('c ', 2), ('1 ', 2), (' c', 2), ('python also', 2), ('and has', 2), ('not checked', 2), ('python allows', 2), ('used for', 2), ('instances of', 2), ('of classes', 2), ('classes are', 2), ('before version', 2), ('version 30', 2), (' the', 2), ('floor division', 2), ('it also', 2), ('the equation', 2), ('b ', 2), (' ab', 2), ('ab ', 2), ('a is', 2), ('of this', 2), ('round05 is', 2), ('the expression', 2), (' b', 2), ('is less', 2), ('less than', 2), ('in c', 2), ('1 and', 2), ('the decimal', 2), ('module provides', 2), ('arbitrary precision', 2), ('used as', 2), ('language to', 2), ('is commonly', 2), ('web server', 2), ('server gateway', 2), ('gateway interface', 2), ('most of', 2), ('python code', 2), ('the official', 2), ('python implementations', 2), ('command line', 2), ('integrated development', 2), ('which is', 2), ('scientific computing', 2), ('cpython is', 2), ('is written', 2), ('or c', 2), ('python and', 2), ('for many', 2), ('many platforms', 2), ('until python', 2), ('on a', 2), ('other programming', 2), ('the primary', 2), ('issues and', 2), ('to github', 2), ('are also', 2), ('the code', 2), ('from the', 2), ('to show', 2), ('languages in', 2), ('java and', 2), ('python can', 2), ('a standard', 2), ('design and', 2), ('has been', 2), ('including in', 2), ('programs like', 2), ('uses python', 2), ('also been', 2), ('linux distributions', 2), ('a highlevel', 1), ('highlevel generalpurpose', 1), ('generalpurpose programming', 1), ('design philosophy', 1), ('philosophy emphasizes', 1), ('emphasizes code', 1), ('code readability', 1), ('readability with', 1), ('of significant', 1), ('significant indentation', 1), ('indentation via', 1), ('via the', 1), ('is dynamically', 1), ('typed and', 1), ('and garbagecollected', 1), ('it supports', 1), ('supports multiple', 1), ('multiple programming', 1), ('programming paradigms', 1), ('paradigms including', 1), ('including structured', 1), ('structured ', 1), (' objectoriented', 1), ('objectoriented and', 1), ('and functional', 1), ('often described', 1), ('described as', 1), ('a batteries', 1), ('batteries included', 1), ('included language', 1), ('language due', 1), ('to its', 1), ('its comprehensive', 1), ('comprehensive standard', 1), ('rossum began', 1), ('began working', 1), ('working on', 1), ('1980s as', 1), ('language and', 1), ('and first', 1), ('first released', 1), ('released it', 1), ('it in', 1), ('in 1991', 1), ('1991 as', 1), ('python 090', 1), ('in 2000', 1), ('in 2008', 1), ('2008 was', 1), ('was a', 1), ('a major', 1), ('major revision', 1), ('revision not', 1), ('not completely', 1), ('completely backwardcompatible', 1), ('backwardcompatible with', 1), ('with earlier', 1), ('earlier versions', 1), ('python 2718', 1), ('2718 released', 1), ('in 2020', 1), ('2020 was', 1), ('the last', 1), ('last release', 1), ('release of', 1), ('python consistently', 1), ('consistently ranks', 1), ('ranks as', 1), ('was conceived', 1), ('conceived in', 1), ('1980s by', 1), ('by guido', 1), ('rossum at', 1), ('at centrum', 1), ('centrum wiskunde', 1), ('wiskunde ', 1), (' informatica', 1), ('informatica ', 1), ('the netherlands', 1), ('netherlands as', 1), ('language which', 1), ('which was', 1), ('was inspired', 1), ('inspired by', 1), ('by setl', 1), ('setl capable', 1), ('capable of', 1), ('of exception', 1), ('exception handling', 1), ('handling and', 1), ('and interfacing', 1), ('interfacing with', 1), ('the amoeba', 1), ('amoeba operating', 1), ('operating system', 1), ('its implementation', 1), ('implementation began', 1), ('began in', 1), ('in december', 1), ('december 1989', 1), ('rossum shouldered', 1), ('shouldered sole', 1), ('sole responsibility', 1), ('responsibility for', 1), ('project as', 1), ('the lead', 1), ('lead developer', 1), ('developer until', 1), ('until 12', 1), ('12 july', 1), ('july 2018', 1), ('2018 when', 1), ('when he', 1), ('he announced', 1), ('announced his', 1), ('his permanent', 1), ('permanent vacation', 1), ('vacation from', 1), ('his responsibilities', 1), ('responsibilities as', 1), ('as pythons', 1), ('pythons benevolent', 1), ('benevolent dictator', 1), ('dictator for', 1), ('for life', 1), ('life a', 1), ('a title', 1), ('title the', 1), ('community bestowed', 1), ('bestowed upon', 1), ('upon him', 1), ('him to', 1), ('to reflect', 1), ('reflect his', 1), ('his longterm', 1), ('longterm commitment', 1), ('commitment as', 1), ('the projects', 1), ('projects chief', 1), ('chief decisionmaker', 1), ('january 2019', 1), ('2019 active', 1), ('active python', 1), ('python core', 1), ('core developers', 1), ('developers elected', 1), ('elected a', 1), ('a fivemember', 1), ('fivemember steering', 1), ('council to', 1), ('to lead', 1), ('lead the', 1), ('on 16', 1), ('16 october', 1), ('october 2000', 1), ('2000 with', 1), ('many major', 1), ('features such', 1), ('as list', 1), ('comprehensions cycledetecting', 1), ('garbage collection', 1), ('collection reference', 1), ('and unicode', 1), ('unicode support', 1), ('on 3', 1), ('3 december', 1), ('december 2008', 1), ('2008 with', 1), ('its major', 1), ('major features', 1), ('features backported', 1), ('backported to', 1), ('python 26x', 1), ('26x and', 1), ('and 27x', 1), ('releases of', 1), ('3 include', 1), ('the 2to3', 1), ('2to3 utility', 1), ('utility which', 1), ('which automates', 1), ('automates the', 1), ('the translation', 1), ('translation of', 1), ('2 code', 1), ('code to', 1), ('python 27s', 1), ('27s endoflife', 1), ('endoflife was', 1), ('was initially', 1), ('initially set', 1), ('set for', 1), ('for 2015', 1), ('2015 then', 1), ('then postponed', 1), ('postponed to', 1), ('to 2020', 1), ('2020 out', 1), ('of concern', 1), ('concern that', 1), ('that a', 1), ('large body', 1), ('body of', 1), ('of existing', 1), ('existing code', 1), ('code could', 1), ('could not', 1), ('not easily', 1), ('easily be', 1), ('be forwardported', 1), ('forwardported to', 1), ('no further', 1), ('further security', 1), ('security patches', 1), ('patches or', 1), ('or other', 1), ('other improvements', 1), ('improvements will', 1), ('will be', 1), ('be released', 1), ('released for', 1), ('currently only', 1), ('only 37', 1), ('37 and', 1), ('and later', 1), ('later are', 1), ('in 2021', 1), ('2021 python', 1), ('python 392', 1), ('392 and', 1), ('and 388', 1), ('388 were', 1), ('expedited as', 1), ('as all', 1), ('all versions', 1), ('versions of', 1), ('python including', 1), ('including 27', 1), ('27 had', 1), ('had security', 1), ('issues leading', 1), ('leading to', 1), ('to possible', 1), ('possible remote', 1), ('remote code', 1), ('code execution', 1), ('execution and', 1), ('and web', 1), ('web cache', 1), ('cache poisoning', 1), ('2022 python', 1), ('python 3104', 1), ('3104 and', 1), ('and 3912', 1), ('3912 were', 1), ('expedited and', 1), ('and 3813', 1), ('3813 and', 1), ('and 3713', 1), ('3713 because', 1), ('because of', 1), ('of many', 1), ('many security', 1), ('when python', 1), ('python 3913', 1), ('3913 was', 1), ('in may', 1), ('may 2022', 1), ('2022 it', 1), ('was announced', 1), ('announced that', 1), ('the 39', 1), ('39 series', 1), ('series joining', 1), ('joining the', 1), ('the older', 1), ('older series', 1), ('series 38', 1), ('38 and', 1), ('and 37', 1), ('37 would', 1), ('would only', 1), ('only receive', 1), ('receive security', 1), ('security fixes', 1), ('fixes in', 1), ('the future', 1), ('on september', 1), ('september 7', 1), ('7 2022', 1), ('2022 four', 1), ('four new', 1), ('new releases', 1), ('releases were', 1), ('were made', 1), ('made due', 1), ('a potential', 1), ('potential denialofservice', 1), ('denialofservice attack', 1), ('attack 3107', 1), ('3107 3914', 1), ('3914 3814', 1), ('3814 and', 1), ('and 3714', 1), ('of november', 1), ('2022update python', 1), ('311 is', 1), ('the stable', 1), ('stable release', 1), ('notable changes', 1), ('changes from', 1), ('from 310', 1), ('310 include', 1), ('include increased', 1), ('increased program', 1), ('execution speed', 1), ('speed and', 1), ('and improved', 1), ('improved error', 1), ('error reporting', 1), ('a multiparadigm', 1), ('multiparadigm programming', 1), ('and structured', 1), ('structured programming', 1), ('programming are', 1), ('are fully', 1), ('fully supported', 1), ('supported and', 1), ('and many', 1), ('of their', 1), ('their features', 1), ('features support', 1), ('support functional', 1), ('and aspectoriented', 1), ('aspectoriented programming', 1), ('other paradigms', 1), ('paradigms are', 1), ('supported via', 1), ('via extensions', 1), ('extensions including', 1), ('including design', 1), ('design by', 1), ('by contract', 1), ('contract and', 1), ('and logic', 1), ('logic programming', 1), ('dynamic typing', 1), ('a combination', 1), ('combination of', 1), ('of reference', 1), ('a cycledetecting', 1), ('garbage collector', 1), ('collector for', 1), ('for memory', 1), ('memory management', 1), ('it uses', 1), ('dynamic name', 1), ('name resolution', 1), ('resolution ', 1), (' which', 1), ('which binds', 1), ('binds method', 1), ('method and', 1), ('and variable', 1), ('names during', 1), ('during program', 1), ('design offers', 1), ('offers some', 1), ('some support', 1), ('for functional', 1), ('programming in', 1), ('the lisp', 1), ('lisp tradition', 1), ('has filtermapandreduce', 1), ('filtermapandreduce functions', 1), ('functions list', 1), ('comprehensions dictionaries', 1), ('dictionaries sets', 1), ('sets and', 1), ('and generator', 1), ('generator expressions', 1), ('library has', 1), ('has two', 1), ('two modules', 1), ('modules ', 1), (' that', 1), ('that implement', 1), ('implement functional', 1), ('functional tools', 1), ('tools borrowed', 1), ('borrowed from', 1), ('from haskell', 1), ('haskell and', 1), ('and standard', 1), ('standard ml', 1), ('core philosophy', 1), ('philosophy is', 1), ('is summarized', 1), ('summarized in', 1), ('the document', 1), ('document the', 1), ('the zen', 1), ('zen of', 1), ('python pep', 1), ('pep 20', 1), ('20 which', 1), ('which includes', 1), ('includes aphorisms', 1), ('aphorisms such', 1), ('as rather', 1), ('than building', 1), ('building all', 1), ('all of', 1), ('its functionality', 1), ('functionality into', 1), ('into its', 1), ('core python', 1), ('was designed', 1), ('designed to', 1), ('be highly', 1), ('highly extensible', 1), ('extensible via', 1), ('via modules', 1), ('this compact', 1), ('compact modularity', 1), ('modularity has', 1), ('has made', 1), ('made it', 1), ('it particularly', 1), ('particularly popular', 1), ('popular as', 1), ('a means', 1), ('means of', 1), ('of adding', 1), ('adding programmable', 1), ('programmable interfaces', 1), ('interfaces to', 1), ('to existing', 1), ('existing applications', 1), ('van rossums', 1), ('rossums vision', 1), ('vision of', 1), ('a small', 1), ('small core', 1), ('core language', 1), ('and easily', 1), ('easily extensible', 1), ('extensible interpreter', 1), ('interpreter stemmed', 1), ('stemmed from', 1), ('his frustrations', 1), ('frustrations with', 1), ('with abc', 1), ('abc which', 1), ('which espoused', 1), ('espoused the', 1), ('the opposite', 1), ('opposite approach', 1), ('python strives', 1), ('strives for', 1), ('for a', 1), ('a simpler', 1), ('simpler lesscluttered', 1), ('lesscluttered syntax', 1), ('and grammar', 1), ('grammar while', 1), ('while giving', 1), ('giving developers', 1), ('developers a', 1), ('a choice', 1), ('choice in', 1), ('in their', 1), ('their coding', 1), ('coding methodology', 1), ('to perls', 1), ('perls there', 1), ('more than', 1), ('than one', 1), ('one way', 1), ('it motto', 1), ('motto python', 1), ('python embraces', 1), ('embraces a', 1), ('a there', 1), ('there should', 1), ('should be', 1), ('be one—and', 1), ('one—and preferably', 1), ('preferably only', 1), ('only one—obvious', 1), ('one—obvious way', 1), ('it ', 1), (' philosophy', 1), ('alex martelli', 1), ('martelli a', 1), ('a fellow', 1), ('fellow at', 1), ('software foundation', 1), ('foundation and', 1), ('and python', 1), ('python book', 1), ('book author', 1), ('author wrote', 1), ('wrote to', 1), ('to describe', 1), ('describe something', 1), ('something as', 1), ('as clever', 1), ('clever is', 1), ('not considered', 1), ('considered a', 1), ('a compliment', 1), ('compliment in', 1), ('python culture', 1), ('culture pythons', 1), ('developers strive', 1), ('strive to', 1), ('to avoid', 1), ('avoid premature', 1), ('premature optimization', 1), ('optimization and', 1), ('and reject', 1), ('reject patches', 1), ('patches to', 1), ('to noncritical', 1), ('noncritical parts', 1), ('implementation that', 1), ('that would', 1), ('would offer', 1), ('offer marginal', 1), ('marginal increases', 1), ('increases in', 1), ('in speed', 1), ('speed at', 1), ('the cost', 1), ('cost of', 1), ('of clarity', 1), ('when speed', 1), ('speed is', 1), ('is important', 1), ('important a', 1), ('python programmer', 1), ('programmer can', 1), ('can move', 1), ('move timecritical', 1), ('timecritical functions', 1), ('functions to', 1), ('to extension', 1), ('extension modules', 1), ('modules written', 1), ('in languages', 1), ('or use', 1), ('use pypy', 1), ('a justintime', 1), ('justintime compiler', 1), ('cython is', 1), ('also available', 1), ('available which', 1), ('which translates', 1), ('translates a', 1), ('python script', 1), ('script into', 1), ('into c', 1), ('and makes', 1), ('makes direct', 1), ('direct clevel', 1), ('clevel api', 1), ('api calls', 1), ('calls into', 1), ('into the', 1), ('python interpreter', 1), ('developers aim', 1), ('aim for', 1), ('it to', 1), ('be fun', 1), ('fun to', 1), ('to use', 1), ('is reflected', 1), ('reflected in', 1), ('its name—a', 1), ('name—a tribute', 1), ('tribute to', 1), ('monty python—and', 1), ('python—and in', 1), ('in occasionally', 1), ('occasionally playful', 1), ('playful approaches', 1), ('approaches to', 1), ('to tutorials', 1), ('tutorials and', 1), ('and reference', 1), ('reference materials', 1), ('materials such', 1), ('the terms', 1), ('terms spam', 1), ('eggs ', 1), ('in examples', 1), ('examples instead', 1), ('the oftenused', 1), ('oftenused foo', 1), ('a common', 1), ('common neologism', 1), ('neologism in', 1), ('community is', 1), ('is pythonic', 1), ('pythonic which', 1), ('which has', 1), ('has a', 1), ('of meanings', 1), ('meanings related', 1), ('program style', 1), ('pythonic code', 1), ('code may', 1), ('may use', 1), ('python idioms', 1), ('idioms well', 1), ('well be', 1), ('be natural', 1), ('natural or', 1), ('or show', 1), ('show fluency', 1), ('fluency in', 1), ('language or', 1), ('or conform', 1), ('conform with', 1), ('with pythons', 1), ('pythons minimalist', 1), ('minimalist philosophy', 1), ('philosophy and', 1), ('and emphasis', 1), ('emphasis on', 1), ('on readability', 1), ('code that', 1), ('is difficult', 1), ('difficult to', 1), ('to understand', 1), ('understand or', 1), ('or reads', 1), ('reads like', 1), ('like a', 1), ('rough transcription', 1), ('transcription from', 1), ('from another', 1), ('another programming', 1), ('language is', 1), ('called unpythonic', 1), ('is meant', 1), ('meant to', 1), ('be an', 1), ('an easily', 1), ('easily readable', 1), ('readable language', 1), ('its formatting', 1), ('formatting is', 1), ('is visually', 1), ('visually uncluttered', 1), ('uncluttered and', 1), ('and often', 1), ('often uses', 1), ('uses english', 1), ('english keywords', 1), ('keywords where', 1), ('where other', 1), ('use punctuation', 1), ('unlike many', 1), ('languages it', 1), ('it does', 1), ('not use', 1), ('use curly', 1), ('brackets to', 1), ('blocks and', 1), ('and semicolons', 1), ('semicolons after', 1), ('after statements', 1), ('statements are', 1), ('are allowed', 1), ('allowed but', 1), ('but rarely', 1), ('rarely used', 1), ('has fewer', 1), ('fewer syntactic', 1), ('syntactic exceptions', 1), ('exceptions and', 1), ('and special', 1), ('special cases', 1), ('cases than', 1), ('or pascal', 1), ('uses whitespace', 1), ('whitespace indentation', 1), ('indentation rather', 1), ('than curly', 1), ('brackets or', 1), ('or keywords', 1), ('keywords to', 1), ('an increase', 1), ('increase in', 1), ('indentation comes', 1), ('comes after', 1), ('after certain', 1), ('certain statements', 1), ('statements a', 1), ('a decrease', 1), ('decrease in', 1), ('indentation signifies', 1), ('signifies the', 1), ('the end', 1), ('end of', 1), ('the current', 1), ('current block', 1), ('thus the', 1), ('the programs', 1), ('programs visual', 1), ('visual structure', 1), ('structure accurately', 1), ('accurately represents', 1), ('represents its', 1), ('its semantic', 1), ('semantic structure', 1), ('this feature', 1), ('feature is', 1), ('is sometimes', 1), ('sometimes termed', 1), ('termed the', 1), ('use indentation', 1), ('indentation this', 1), ('this way', 1), ('way but', 1), ('but in', 1), ('in most', 1), ('most indentation', 1), ('indentation has', 1), ('has no', 1), ('no semantic', 1), ('semantic meaning', 1), ('the recommended', 1), ('recommended indent', 1), ('indent size', 1), ('size is', 1), ('is four', 1), ('four spaces', 1), ('pythons statements', 1), ('statements include', 1), ('the assignment', 1), ('statement ', 1), (' binds', 1), ('binds a', 1), ('a name', 1), ('name as', 1), ('a reference', 1), ('reference to', 1), ('a separate', 1), ('separate dynamically', 1), ('dynamically allocated', 1), ('allocated object', 1), ('variables may', 1), ('may subsequently', 1), ('subsequently be', 1), ('be rebound', 1), ('rebound at', 1), ('at any', 1), ('any time', 1), ('time to', 1), ('to any', 1), ('any object', 1), ('a variable', 1), ('variable name', 1), ('a generic', 1), ('generic reference', 1), ('reference holder', 1), ('holder without', 1), ('without a', 1), ('a fixed', 1), ('fixed data', 1), ('data type', 1), ('type however', 1), ('however it', 1), ('it always', 1), ('always refers', 1), ('refers to', 1), ('to some', 1), ('some object', 1), ('object with', 1), ('a type', 1), ('called dynamic', 1), ('dynamic typing—in', 1), ('typing—in contrast', 1), ('to staticallytyped', 1), ('staticallytyped languages', 1), ('languages where', 1), ('where each', 1), ('each variable', 1), ('variable may', 1), ('may contain', 1), ('contain only', 1), ('a value', 1), ('value of', 1), ('a certain', 1), ('certain type', 1), ('python does', 1), ('not support', 1), ('support tail', 1), ('tail call', 1), ('call optimization', 1), ('optimization or', 1), ('or firstclass', 1), ('firstclass continuations', 1), ('continuations and', 1), ('and according', 1), ('according to', 1), ('to van', 1), ('rossum it', 1), ('it never', 1), ('never will', 1), ('however better', 1), ('better support', 1), ('for coroutinelike', 1), ('coroutinelike functionality', 1), ('functionality is', 1), ('is provided', 1), ('provided by', 1), ('by extending', 1), ('extending pythons', 1), ('pythons generators', 1), ('before 25', 1), ('25 generators', 1), ('generators were', 1), ('were lazy', 1), ('lazy iterators', 1), ('iterators data', 1), ('data was', 1), ('was passed', 1), ('passed unidirectionally', 1), ('unidirectionally out', 1), ('the generator', 1), ('from python', 1), ('python 25', 1), ('25 on', 1), ('on it', 1), ('is possible', 1), ('possible to', 1), ('to pass', 1), ('pass data', 1), ('data back', 1), ('back into', 1), ('into a', 1), ('a generator', 1), ('generator function', 1), ('function and', 1), ('and from', 1), ('from version', 1), ('version 33', 1), ('33 it', 1), ('it can', 1), ('be passed', 1), ('passed through', 1), ('through multiple', 1), ('multiple stack', 1), ('stack levels', 1), ('pythons expressions', 1), ('expressions include', 1), ('include in', 1), ('a distinction', 1), ('distinction between', 1), ('between expressions', 1), ('and statements', 1), ('statements is', 1), ('is rigidly', 1), ('rigidly enforced', 1), ('enforced in', 1), ('to languages', 1), ('as common', 1), ('common lisp', 1), ('lisp scheme', 1), ('scheme or', 1), ('or ruby', 1), ('this leads', 1), ('leads to', 1), ('to duplicating', 1), ('duplicating some', 1), ('some functionality', 1), ('example statements', 1), ('statements cannot', 1), ('cannot be', 1), ('be a', 1), ('a part', 1), ('of an', 1), ('an expression—so', 1), ('expression—so list', 1), ('list and', 1), ('and other', 1), ('other comprehensions', 1), ('comprehensions or', 1), ('or lambda', 1), ('lambda expressions', 1), ('expressions all', 1), ('all being', 1), ('being expressions', 1), ('expressions cannot', 1), ('cannot contain', 1), ('contain statements', 1), ('a particular', 1), ('particular case', 1), ('case is', 1), ('is that', 1), ('that an', 1), ('statement such', 1), ('1 cannot', 1), ('cannot form', 1), ('form part', 1), ('the conditional', 1), ('conditional expression', 1), ('expression of', 1), ('a conditional', 1), ('conditional statement', 1), ('this has', 1), ('the advantage', 1), ('advantage of', 1), ('of avoiding', 1), ('avoiding a', 1), ('a classic', 1), ('classic c', 1), ('c error', 1), ('error of', 1), ('of mistaking', 1), ('mistaking an', 1), ('assignment operator', 1), ('for an', 1), ('an equality', 1), ('equality operator', 1), ('in conditions', 1), ('conditions if', 1), ('is syntactically', 1), ('syntactically valid', 1), ('valid ', 1), ('c code', 1), ('code but', 1), ('but if', 1), ('causes a', 1), ('a syntax', 1), ('syntax error', 1), ('error in', 1), ('methods on', 1), ('on objects', 1), ('objects are', 1), ('are functions', 1), ('functions attached', 1), ('attached to', 1), ('the objects', 1), ('objects class', 1), ('class the', 1), ('the syntax', 1), ('syntax instancemethod', 1), ('instancemethod is', 1), ('is for', 1), ('for normal', 1), ('normal methods', 1), ('methods and', 1), ('and functions', 1), ('functions syntactic', 1), ('syntactic sugar', 1), ('sugar for', 1), ('for classmethod', 1), ('python methods', 1), ('methods have', 1), ('have an', 1), ('an explicit', 1), ('explicit self', 1), ('self parameter', 1), ('parameter to', 1), ('to access', 1), ('access instance', 1), ('instance data', 1), ('data in', 1), ('the implicit', 1), ('implicit self', 1), ('self ', 1), ('in some', 1), ('other objectoriented', 1), ('also provides', 1), ('provides methods', 1), ('methods often', 1), ('often called', 1), ('called dunder', 1), ('dunder methods', 1), ('methods ', 1), (' to', 1), ('to allow', 1), ('allow userdefined', 1), ('userdefined classes', 1), ('classes to', 1), ('to modify', 1), ('modify how', 1), ('how they', 1), ('are handled', 1), ('handled by', 1), ('by native', 1), ('native operations', 1), ('operations including', 1), ('including length', 1), ('length comparison', 1), ('comparison in', 1), ('in arithmetic', 1), ('arithmetic operations', 1), ('operations and', 1), ('and type', 1), ('type conversion', 1), ('uses duck', 1), ('duck typing', 1), ('has typed', 1), ('typed objects', 1), ('objects but', 1), ('but untyped', 1), ('untyped variable', 1), ('type constraints', 1), ('constraints are', 1), ('checked at', 1), ('at compile', 1), ('compile time', 1), ('time rather', 1), ('rather operations', 1), ('operations on', 1), ('on an', 1), ('an object', 1), ('object may', 1), ('may fail', 1), ('fail signifying', 1), ('signifying that', 1), ('that it', 1), ('not of', 1), ('a suitable', 1), ('suitable type', 1), ('despite being', 1), ('being dynamically', 1), ('typed python', 1), ('is strongly', 1), ('strongly typed', 1), ('typed forbidding', 1), ('forbidding operations', 1), ('operations that', 1), ('that are', 1), ('not welldefined', 1), ('welldefined ', 1), (' rather', 1), ('than silently', 1), ('silently attempting', 1), ('attempting to', 1), ('to make', 1), ('make sense', 1), ('sense of', 1), ('of them', 1), ('allows programmers', 1), ('programmers to', 1), ('to define', 1), ('define their', 1), ('their own', 1), ('own types', 1), ('types using', 1), ('using classes', 1), ('classes most', 1), ('most often', 1), ('for objectoriented', 1), ('new instances', 1), ('are constructed', 1), ('constructed by', 1), ('by calling', 1), ('calling the', 1), ('the class', 1), ('class for', 1), ('example spamclass', 1), ('spamclass or', 1), ('or eggsclass', 1), ('eggsclass and', 1), ('the classes', 1), ('are instances', 1), ('the metaclass', 1), ('metaclass type', 1), ('type ', 1), (' allowing', 1), ('allowing metaprogramming', 1), ('metaprogramming and', 1), ('and reflection', 1), ('30 python', 1), ('python had', 1), ('had two', 1), ('two kinds', 1), ('kinds of', 1), ('classes ', 1), (' oldstyle', 1), ('oldstyle and', 1), ('and newstyle', 1), ('newstyle current', 1), ('current python', 1), ('python versions', 1), ('versions only', 1), ('only support', 1), ('support the', 1), ('the semantics', 1), ('semantics new', 1), ('new style', 1), ('python supports', 1), ('supports gradual', 1), ('gradual typing', 1), ('pythons syntax', 1), ('syntax allows', 1), ('allows specifying', 1), ('specifying static', 1), ('static types', 1), ('types but', 1), ('but they', 1), ('checked in', 1), ('the default', 1), ('default implementation', 1), ('implementation cpython', 1), ('an experimental', 1), ('experimental optional', 1), ('optional static', 1), ('static typechecker', 1), ('typechecker mypy', 1), ('mypy supports', 1), ('supports compiletime', 1), ('compiletime type', 1), ('type checking', 1), ('133333 python', 1), ('the usual', 1), ('usual symbols', 1), ('symbols for', 1), ('for arithmetic', 1), ('arithmetic operators', 1), ('operators ', 1), ('the floor', 1), ('division operator', 1), ('the modulo', 1), ('modulo operation', 1), ('operation ', 1), (' where', 1), ('where the', 1), ('the remainder', 1), ('remainder can', 1), ('be negative', 1), ('negative ', 1), (' eg', 1), ('4 ', 1), (' 3', 1), ('3 ', 1), (' 2', 1), ('also has', 1), ('has ', 1), ('for exponentiation', 1), ('exponentiation eg', 1), ('53 ', 1), (' 125', 1), ('125 and', 1), ('and 905', 1), ('905 ', 1), (' 30', 1), ('30 and', 1), ('a matrix‐multiplication', 1), ('matrix‐multiplication operator', 1), ('these operators', 1), ('operators work', 1), ('work like', 1), ('like in', 1), ('in traditional', 1), ('traditional math', 1), ('math with', 1), ('the same', 1), ('same precedence', 1), ('precedence rules', 1), ('rules the', 1), ('the operators', 1), ('operators infix', 1), ('the division', 1), ('division between', 1), ('between integers', 1), ('integers produces', 1), ('produces floatingpoint', 1), ('floatingpoint results', 1), ('the behavior', 1), ('behavior of', 1), ('of division', 1), ('division has', 1), ('has changed', 1), ('changed significantly', 1), ('significantly over', 1), ('over time', 1), ('time in', 1), ('python terms', 1), ('terms ', 1), ('is true', 1), ('true division', 1), ('division ', 1), ('and ', 1), ('is floor', 1), (' before', 1), ('30 is', 1), ('is classic', 1), ('classic division', 1), ('rounding towards', 1), ('towards negative', 1), ('negative infinity', 1), ('infinity though', 1), ('though different', 1), ('different from', 1), ('from most', 1), ('most languages', 1), ('languages adds', 1), ('adds consistency', 1), ('for instance', 1), ('instance it', 1), ('it means', 1), ('equation b', 1), ('1 is', 1), ('is always', 1), ('always true', 1), ('also means', 1), ('equation bab', 1), ('bab ', 1), (' a', 1), ('is valid', 1), ('valid for', 1), ('for both', 1), ('both positive', 1), ('positive and', 1), ('and negative', 1), ('negative values', 1), ('values of', 1), ('however maintaining', 1), ('maintaining the', 1), ('the validity', 1), ('validity of', 1), ('this equation', 1), ('equation means', 1), ('that while', 1), ('while the', 1), ('the result', 1), ('result of', 1), ('of ab', 1), ('ab is', 1), ('is as', 1), ('as expected', 1), ('expected in', 1), ('the halfopen', 1), ('halfopen interval', 1), ('interval 0', 1), ('0 b', 1), ('b where', 1), ('where b', 1), ('a positive', 1), ('positive integer', 1), ('integer it', 1), ('has to', 1), ('to lie', 1), ('lie in', 1), ('the interval', 1), ('interval b', 1), ('b 0', 1), ('0 when', 1), ('when b', 1), ('is negative', 1), ('python provides', 1), ('provides a', 1), ('a round', 1), ('round function', 1), ('function for', 1), ('for rounding', 1), ('rounding a', 1), ('a float', 1), ('float to', 1), ('the nearest', 1), ('nearest integer', 1), ('for tiebreaking', 1), ('tiebreaking python', 1), ('3 uses', 1), ('uses round', 1), ('round to', 1), ('to even', 1), ('even round15', 1), ('round15 and', 1), ('and round25', 1), ('round25 both', 1), ('both produce', 1), ('produce 2', 1), ('versions before', 1), ('before 3', 1), ('3 used', 1), ('used roundawayfromzero', 1), ('roundawayfromzero round05', 1), ('is 10', 1), ('10 round05', 1), ('is −10', 1), ('allows boolean', 1), ('boolean expressions', 1), ('expressions with', 1), ('with multiple', 1), ('multiple equality', 1), ('equality relations', 1), ('relations in', 1), ('a manner', 1), ('manner that', 1), ('is consistent', 1), ('consistent with', 1), ('with general', 1), ('general use', 1), ('use in', 1), ('in mathematics', 1), ('expression a', 1), ('c tests', 1), ('tests whether', 1), ('whether a', 1), ('than b', 1), ('b and', 1), ('and b', 1), ('cderived languages', 1), ('languages interpret', 1), ('interpret this', 1), ('this expression', 1), ('expression differently', 1), ('differently in', 1), ('c the', 1), ('expression would', 1), ('would first', 1), ('first evaluate', 1), ('evaluate a', 1), ('b resulting', 1), ('resulting in', 1), ('in 0', 1), ('0 or', 1), ('or 1', 1), ('and that', 1), ('that result', 1), ('result would', 1), ('would then', 1), ('then be', 1), ('be compared', 1), ('compared with', 1), ('with c', 1), ('uses arbitraryprecision', 1), ('arbitraryprecision arithmetic', 1), ('arithmetic for', 1), ('for all', 1), ('all integer', 1), ('integer operations', 1), ('decimal typeclass', 1), ('typeclass in', 1), ('decimal module', 1), ('provides decimal', 1), ('decimal floatingpoint', 1), ('floatingpoint numbers', 1), ('numbers to', 1), ('a predefined', 1), ('predefined arbitrary', 1), ('precision and', 1), ('and several', 1), ('several rounding', 1), ('rounding modes', 1), ('the fraction', 1), ('fraction class', 1), ('class in', 1), ('the fractions', 1), ('fractions module', 1), ('provides arbitrary', 1), ('precision for', 1), ('for rational', 1), ('rational numbers', 1), ('to pythons', 1), ('pythons extensive', 1), ('extensive mathematics', 1), ('mathematics library', 1), ('the thirdparty', 1), ('thirdparty library', 1), ('library numpy', 1), ('numpy that', 1), ('that further', 1), ('further extends', 1), ('extends the', 1), ('the native', 1), ('native capabilities', 1), ('capabilities it', 1), ('is frequently', 1), ('frequently used', 1), ('a scientific', 1), ('scientific scripting', 1), ('to aid', 1), ('aid in', 1), ('in problems', 1), ('problems such', 1), ('as numerical', 1), ('numerical data', 1), ('data processing', 1), ('processing and', 1), ('and manipulation', 1), ('pythons large', 1), ('library provides', 1), ('provides tools', 1), ('tools suited', 1), ('suited to', 1), ('to many', 1), ('many tasks', 1), ('tasks and', 1), ('commonly cited', 1), ('cited as', 1), ('its greatest', 1), ('greatest strengths', 1), ('for internetfacing', 1), ('internetfacing applications', 1), ('applications many', 1), ('many standard', 1), ('standard formats', 1), ('formats and', 1), ('and protocols', 1), ('protocols such', 1), ('as mime', 1), ('mime and', 1), ('and http', 1), ('http are', 1), ('it includes', 1), ('includes modules', 1), ('modules for', 1), ('for creating', 1), ('creating graphical', 1), ('graphical user', 1), ('user interfaces', 1), ('interfaces connecting', 1), ('connecting to', 1), ('to relational', 1), ('relational databases', 1), ('databases generating', 1), ('generating pseudorandom', 1), ('pseudorandom numbers', 1), ('numbers arithmetic', 1), ('arithmetic with', 1), ('with arbitraryprecision', 1), ('arbitraryprecision decimals', 1), ('decimals manipulating', 1), ('manipulating regular', 1), ('regular expressions', 1), ('and unit', 1), ('unit testing', 1), ('some parts', 1), ('library are', 1), ('are covered', 1), ('covered by', 1), ('by specifications—for', 1), ('specifications—for example', 1), ('the web', 1), ('interface ', 1), (' implementation', 1), ('implementation wsgiref', 1), ('wsgiref follows', 1), ('follows pep', 1), ('pep 333—but', 1), ('333—but most', 1), ('most are', 1), ('are specified', 1), ('specified by', 1), ('by their', 1), ('their code', 1), ('code internal', 1), ('internal documentation', 1), ('documentation and', 1), ('and test', 1), ('test suites', 1), ('however because', 1), ('because most', 1), ('library is', 1), ('is crossplatform', 1), ('crossplatform python', 1), ('code only', 1), ('a few', 1), ('few modules', 1), ('modules need', 1), ('need altering', 1), ('altering or', 1), ('or rewriting', 1), ('rewriting for', 1), ('for variant', 1), ('variant implementations', 1), ('of 14', 1), ('14 november', 1), ('2022update the', 1), ('python package', 1), ('package index', 1), ('index ', 1), ('official repository', 1), ('repository for', 1), ('for thirdparty', 1), ('thirdparty python', 1), ('software contains', 1), ('contains over', 1), ('over 415000', 1), ('415000 packages', 1), ('packages with', 1), ('of functionality', 1), ('functionality including', 1), ('including most', 1), ('most python', 1), ('implementations ', 1), (' include', 1), ('include a', 1), ('a read–eval–print', 1), ('read–eval–print loop', 1), ('loop ', 1), (' permitting', 1), ('permitting them', 1), ('them to', 1), ('to function', 1), ('function as', 1), ('a command', 1), ('line interpreter', 1), ('interpreter for', 1), ('for which', 1), ('which users', 1), ('users enter', 1), ('enter statements', 1), ('statements sequentially', 1), ('sequentially and', 1), ('and receive', 1), ('receive results', 1), ('results immediately', 1), ('also comes', 1), ('comes with', 1), ('with an', 1), ('an integrated', 1), ('development environment', 1), ('environment ', 1), (' called', 1), ('called idle', 1), ('idle which', 1), ('more beginneroriented', 1), ('other shells', 1), ('shells including', 1), ('including idle', 1), ('idle and', 1), ('and ipython', 1), ('ipython add', 1), ('add further', 1), ('further abilities', 1), ('abilities such', 1), ('as improved', 1), ('improved autocompletion', 1), ('autocompletion session', 1), ('session state', 1), ('state retention', 1), ('retention and', 1), ('and syntax', 1), ('syntax highlighting', 1), ('as well', 1), ('well as', 1), ('as standard', 1), ('standard desktop', 1), ('desktop integrated', 1), ('development environments', 1), ('environments there', 1), ('are web', 1), ('web browserbased', 1), ('browserbased ides', 1), ('ides including', 1), ('including sagemath', 1), ('sagemath for', 1), ('for developing', 1), ('developing science', 1), ('science and', 1), ('and mathrelated', 1), ('mathrelated programs', 1), ('programs pythonanywhere', 1), ('pythonanywhere a', 1), ('a browserbased', 1), ('browserbased ide', 1), ('ide and', 1), ('and hosting', 1), ('hosting environment', 1), ('environment and', 1), ('and canopy', 1), ('canopy ide', 1), ('ide a', 1), ('a commercial', 1), ('commercial ide', 1), ('ide emphasizing', 1), ('emphasizing scientific', 1), ('the reference', 1), ('implementation of', 1), ('c meeting', 1), ('meeting the', 1), ('the c89', 1), ('c89 standard', 1), ('standard python', 1), ('311 uses', 1), ('uses c11', 1), ('c11 with', 1), ('with several', 1), ('several select', 1), ('select c99', 1), ('c99 features', 1), ('cpython includes', 1), ('includes its', 1), ('its own', 1), ('own c', 1), ('c extensions', 1), ('extensions but', 1), ('but thirdparty', 1), ('thirdparty extensions', 1), ('extensions are', 1), ('not limited', 1), ('limited to', 1), ('to older', 1), ('older c', 1), ('c versions—eg', 1), ('they can', 1), ('be implemented', 1), ('implemented with', 1), ('with c11', 1), ('c11 or', 1), ('c it', 1), ('it compiles', 1), ('compiles python', 1), ('python programs', 1), ('programs into', 1), ('into an', 1), ('an intermediate', 1), ('intermediate bytecode', 1), ('bytecode which', 1), ('is then', 1), ('then executed', 1), ('executed by', 1), ('by its', 1), ('its virtual', 1), ('virtual machine', 1), ('is distributed', 1), ('distributed with', 1), ('library written', 1), ('a mixture', 1), ('mixture of', 1), ('of c', 1), ('and native', 1), ('native python', 1), ('is available', 1), ('available for', 1), ('platforms including', 1), ('including windows', 1), ('windows starting', 1), ('starting with', 1), ('python 39', 1), ('39 the', 1), ('python installer', 1), ('installer deliberately', 1), ('deliberately fails', 1), ('fails to', 1), ('to install', 1), ('install on', 1), ('on windows', 1), ('windows 7', 1), ('7 and', 1), ('and 8', 1), ('8 windows', 1), ('windows xp', 1), ('xp was', 1), ('was supported', 1), ('supported until', 1), ('python 35', 1), ('35 and', 1), ('and most', 1), ('most modern', 1), ('modern unixlike', 1), ('unixlike systems', 1), ('systems including', 1), ('including macos', 1), ('macos and', 1), ('and apple', 1), ('apple m1', 1), ('m1 macs', 1), ('macs since', 1), ('since python', 1), ('python 391', 1), ('391 with', 1), ('with experimental', 1), ('experimental installer', 1), ('installer and', 1), ('and unofficial', 1), ('unofficial support', 1), ('for eg', 1), ('platform portability', 1), ('portability was', 1), ('was one', 1), ('its earliest', 1), ('earliest priorities', 1), ('during python', 1), ('python 1', 1), ('and 2', 1), ('2 development', 1), ('development even', 1), ('even os2', 1), ('os2 and', 1), ('and solaris', 1), ('solaris were', 1), ('were supported', 1), ('supported but', 1), ('but support', 1), ('support has', 1), ('has since', 1), ('since been', 1), ('been dropped', 1), ('dropped for', 1), ('platforms other', 1), ('other justintime', 1), ('justintime python', 1), ('python compilers', 1), ('compilers have', 1), ('have been', 1), ('been developed', 1), ('developed but', 1), ('but are', 1), ('are now', 1), ('now unsupported', 1), ('unsupported there', 1), ('are several', 1), ('several compilers', 1), ('compilers to', 1), ('to highlevel', 1), ('highlevel object', 1), ('object languages', 1), ('languages with', 1), ('with either', 1), ('either unrestricted', 1), ('unrestricted python', 1), ('a restricted', 1), ('restricted subset', 1), ('subset of', 1), ('python or', 1), ('or a', 1), ('a language', 1), ('language similar', 1), ('similar to', 1), ('the source', 1), ('source language', 1), ('language older', 1), ('older projects', 1), ('projects or', 1), ('or not', 1), ('not to', 1), ('used with', 1), ('python 3x', 1), ('3x and', 1), ('and latest', 1), ('latest syntax', 1), ('syntax performance', 1), ('performance comparison', 1), ('comparison of', 1), ('of various', 1), ('various python', 1), ('implementations on', 1), ('a nonnumerical', 1), ('nonnumerical ', 1), (' workload', 1), ('workload was', 1), ('was presented', 1), ('presented at', 1), ('at euroscipy', 1), ('euroscipy 13', 1), ('pythons performance', 1), ('performance compared', 1), ('compared to', 1), ('to other', 1), ('languages is', 1), ('also benchmarked', 1), ('benchmarked by', 1), ('the computer', 1), ('computer language', 1), ('language benchmarks', 1), ('benchmarks game', 1), ('development is', 1), ('is conducted', 1), ('conducted largely', 1), ('largely through', 1), ('through the', 1), ('python enhancement', 1), ('enhancement proposal', 1), ('proposal ', 1), (' process', 1), ('process the', 1), ('primary mechanism', 1), ('mechanism for', 1), ('for proposing', 1), ('proposing major', 1), ('features collecting', 1), ('collecting community', 1), ('community input', 1), ('input on', 1), ('on issues', 1), ('and documenting', 1), ('documenting python', 1), ('python design', 1), ('design decisions', 1), ('python coding', 1), ('coding style', 1), ('style is', 1), ('is covered', 1), ('covered in', 1), ('in pep', 1), ('pep 8', 1), ('outstanding peps', 1), ('peps are', 1), ('are reviewed', 1), ('reviewed and', 1), ('and commented', 1), ('commented on', 1), ('on by', 1), ('community and', 1), ('the steering', 1), ('enhancement of', 1), ('language corresponds', 1), ('corresponds with', 1), ('the development', 1), ('development of', 1), ('the mailing', 1), ('mailing list', 1), ('list pythondev', 1), ('pythondev is', 1), ('primary forum', 1), ('forum for', 1), ('the languages', 1), ('languages development', 1), ('specific issues', 1), ('issues were', 1), ('were originally', 1), ('originally discussed', 1), ('discussed in', 1), ('the roundup', 1), ('roundup bug', 1), ('bug tracker', 1), ('tracker hosted', 1), ('hosted at', 1), ('at by', 1), ('the foundation', 1), ('2022 all', 1), ('all issues', 1), ('and discussions', 1), ('discussions were', 1), ('were migrated', 1), ('migrated to', 1), ('development originally', 1), ('originally took', 1), ('took place', 1), ('place on', 1), ('a selfhosted', 1), ('selfhosted sourcecode', 1), ('sourcecode repository', 1), ('repository running', 1), ('running mercurial', 1), ('mercurial until', 1), ('python moved', 1), ('moved to', 1), ('github in', 1), ('january 2017', 1), ('cpythons public', 1), ('public releases', 1), ('releases come', 1), ('come in', 1), ('in three', 1), ('three types', 1), ('types distinguished', 1), ('distinguished by', 1), ('by which', 1), ('which part', 1), ('the version', 1), ('version number', 1), ('number is', 1), ('is incremented', 1), ('incremented many', 1), ('many alpha', 1), ('alpha beta', 1), ('beta and', 1), ('and releasecandidates', 1), ('releasecandidates are', 1), ('also released', 1), ('released as', 1), ('as previews', 1), ('previews and', 1), ('and for', 1), ('for testing', 1), ('testing before', 1), ('before final', 1), ('final releases', 1), ('although there', 1), ('rough schedule', 1), ('schedule for', 1), ('for each', 1), ('each release', 1), ('release they', 1), ('are often', 1), ('often delayed', 1), ('delayed if', 1), ('if the', 1), ('code is', 1), ('not ready', 1), ('development team', 1), ('team monitors', 1), ('monitors the', 1), ('the state', 1), ('state of', 1), ('code by', 1), ('by running', 1), ('running the', 1), ('the large', 1), ('large unit', 1), ('unit test', 1), ('test suite', 1), ('suite during', 1), ('during development', 1), ('the major', 1), ('major academic', 1), ('academic conference', 1), ('conference on', 1), ('is pycon', 1), ('also special', 1), ('special python', 1), ('python mentoring', 1), ('mentoring programs', 1), ('programs such', 1), ('as pyladies', 1), ('python 310', 1), ('310 deprecated', 1), ('deprecated wstr', 1), ('wstr to', 1), ('be removed', 1), ('removed in', 1), ('python 312', 1), ('312 meaning', 1), ('meaning python', 1), ('python extensions', 1), ('extensions need', 1), ('need to', 1), ('be modified', 1), ('modified by', 1), ('by then', 1), ('then and', 1), ('and added', 1), ('added pattern', 1), ('pattern matching', 1), ('matching to', 1), ('tools that', 1), ('that can', 1), ('can generate', 1), ('generate documentation', 1), ('documentation for', 1), ('for python', 1), ('python api', 1), ('api include', 1), ('include pydoc', 1), ('pydoc ', 1), (' sphinx', 1), ('sphinx pdoc', 1), ('pdoc and', 1), ('and its', 1), ('its forks', 1), ('forks doxygen', 1), ('doxygen and', 1), ('and graphviz', 1), ('graphviz among', 1), ('among others', 1), ('pythons name', 1), ('is derived', 1), ('derived from', 1), ('python whom', 1), ('whom python', 1), ('python creator', 1), ('creator guido', 1), ('rossum enjoyed', 1), ('enjoyed while', 1), ('while developing', 1), ('developing the', 1), ('python references', 1), ('references appear', 1), ('appear frequently', 1), ('frequently in', 1), ('code and', 1), ('and culture', 1), ('culture for', 1), ('the metasyntactic', 1), ('metasyntactic variables', 1), ('variables often', 1), ('python literature', 1), ('literature are', 1), ('are spam', 1), ('eggs instead', 1), ('the traditional', 1), ('traditional foo', 1), ('official python', 1), ('python documentation', 1), ('documentation also', 1), ('also contains', 1), ('contains various', 1), ('various references', 1), ('references to', 1), ('to monty', 1), ('python routines', 1), ('the prefix', 1), ('prefix py', 1), ('py is', 1), ('show that', 1), ('that something', 1), ('something is', 1), ('is related', 1), ('examples of', 1), ('this prefix', 1), ('prefix in', 1), ('in names', 1), ('names of', 1), ('python applications', 1), ('applications or', 1), ('or libraries', 1), ('libraries include', 1), ('include pygame', 1), ('pygame a', 1), ('a binding', 1), ('binding of', 1), ('of sdl', 1), ('sdl to', 1), ('python ', 1), (' pyqt', 1), ('pyqt and', 1), ('and pygtk', 1), ('pygtk which', 1), ('which bind', 1), ('bind qt', 1), ('qt and', 1), ('and gtk', 1), ('gtk to', 1), ('python respectively', 1), ('respectively and', 1), ('and pypy', 1), ('python implementation', 1), ('implementation originally', 1), ('originally written', 1), ('since 2003', 1), ('2003 python', 1), ('has consistently', 1), ('consistently ranked', 1), ('ranked in', 1), ('the top', 1), ('top ten', 1), ('ten most', 1), ('the tiobe', 1), ('tiobe programming', 1), ('programming community', 1), ('community index', 1), ('index where', 1), ('where as', 1), ('of december', 1), ('december 2022update', 1), ('2022update it', 1), ('popular language', 1), ('was selected', 1), ('selected programming', 1), ('language of', 1), ('the year', 1), ('year for', 1), ('the highest', 1), ('highest rise', 1), ('rise in', 1), ('in ratings', 1), ('ratings in', 1), ('a year', 1), ('year in', 1), ('in 2007', 1), ('2007 2010', 1), ('2010 2018', 1), ('2018 and', 1), ('and 2020', 1), ('2020 the', 1), ('the only', 1), ('only language', 1), ('to have', 1), ('have done', 1), ('done so', 1), ('so four', 1), ('four times', 1), ('times as', 1), ('of 2020', 1), ('an empirical', 1), ('empirical study', 1), ('study found', 1), ('found that', 1), ('that scripting', 1), ('scripting languages', 1), ('python are', 1), ('are more', 1), ('more productive', 1), ('productive than', 1), ('than conventional', 1), ('conventional languages', 1), ('and java', 1), ('java for', 1), ('for programming', 1), ('programming problems', 1), ('problems involving', 1), ('involving string', 1), ('string manipulation', 1), ('manipulation and', 1), ('and search', 1), ('search in', 1), ('a dictionary', 1), ('dictionary and', 1), ('and determined', 1), ('determined that', 1), ('that memory', 1), ('memory consumption', 1), ('consumption was', 1), ('was often', 1), ('often better', 1), ('better than', 1), ('than java', 1), ('and not', 1), ('not much', 1), ('much worse', 1), ('worse than', 1), ('large organizations', 1), ('organizations that', 1), ('that use', 1), ('python include', 1), ('include wikipedia', 1), ('wikipedia google', 1), ('google yahoo', 1), ('yahoo cern', 1), ('cern nasa', 1), ('nasa facebook', 1), ('facebook amazon', 1), ('amazon instagram', 1), ('instagram spotify', 1), ('spotify and', 1), ('and some', 1), ('some smaller', 1), ('smaller entities', 1), ('entities like', 1), ('like ilm', 1), ('ilm and', 1), ('and ita', 1), ('the social', 1), ('social news', 1), ('news networking', 1), ('networking site', 1), ('site reddit', 1), ('reddit was', 1), ('was written', 1), ('written mostly', 1), ('mostly in', 1), ('can serve', 1), ('serve as', 1), ('language for', 1), ('for web', 1), ('web applications', 1), ('applications eg', 1), ('eg via', 1), ('via modwsgi', 1), ('modwsgi for', 1), ('the apache', 1), ('apache webserver', 1), ('with web', 1), ('interface a', 1), ('standard api', 1), ('api has', 1), ('has evolved', 1), ('evolved to', 1), ('to facilitate', 1), ('facilitate these', 1), ('these applications', 1), ('web frameworks', 1), ('frameworks like', 1), ('like django', 1), ('django pylons', 1), ('pylons pyramid', 1), ('pyramid turbogears', 1), ('turbogears web2py', 1), ('web2py tornado', 1), ('tornado flask', 1), ('flask bottle', 1), ('bottle and', 1), ('and zope', 1), ('zope support', 1), ('support developers', 1), ('developers in', 1), ('the design', 1), ('and maintenance', 1), ('maintenance of', 1), ('of complex', 1), ('complex applications', 1), ('pyjs and', 1), ('and ironpython', 1), ('ironpython can', 1), ('to develop', 1), ('develop the', 1), ('the clientside', 1), ('clientside of', 1), ('of ajaxbased', 1), ('ajaxbased applications', 1), ('sqlalchemy can', 1), ('a data', 1), ('data mapper', 1), ('mapper to', 1), ('a relational', 1), ('relational database', 1), ('twisted is', 1), ('a framework', 1), ('framework to', 1), ('program communications', 1), ('communications between', 1), ('between computers', 1), ('computers and', 1), ('used ', 1), (' by', 1), ('by dropbox', 1), ('as numpy', 1), ('numpy scipy', 1), ('scipy and', 1), ('and matplotlib', 1), ('matplotlib allow', 1), ('allow the', 1), ('the effective', 1), ('effective use', 1), ('in scientific', 1), ('computing with', 1), ('with specialized', 1), ('specialized libraries', 1), ('as biopython', 1), ('biopython and', 1), ('and astropy', 1), ('astropy providing', 1), ('providing domainspecific', 1), ('domainspecific functionality', 1), ('sagemath is', 1), ('a computer', 1), ('computer algebra', 1), ('algebra system', 1), ('system with', 1), ('a notebook', 1), ('notebook interface', 1), ('interface programmable', 1), ('programmable in', 1), ('python its', 1), ('its library', 1), ('library covers', 1), ('covers many', 1), ('many aspects', 1), ('aspects of', 1), ('of mathematics', 1), ('mathematics including', 1), ('including algebra', 1), ('algebra combinatorics', 1), ('combinatorics numerical', 1), ('numerical mathematics', 1), ('mathematics number', 1), ('number theory', 1), ('theory and', 1), ('and calculus', 1), ('opencv has', 1), ('has python', 1), ('python bindings', 1), ('bindings with', 1), ('a rich', 1), ('rich set', 1), ('set of', 1), ('of features', 1), ('features for', 1), ('for computer', 1), ('computer vision', 1), ('vision and', 1), ('and image', 1), ('image processing', 1), ('commonly used', 1), ('in artificial', 1), ('artificial intelligence', 1), ('intelligence projects', 1), ('projects and', 1), ('and machine', 1), ('machine learning', 1), ('learning projects', 1), ('projects with', 1), ('the help', 1), ('help of', 1), ('of libraries', 1), ('libraries like', 1), ('like tensorflow', 1), ('tensorflow keras', 1), ('keras pytorch', 1), ('pytorch and', 1), ('and scikitlearn', 1), ('a modular', 1), ('modular architecture', 1), ('architecture simple', 1), ('simple syntax', 1), ('and rich', 1), ('rich text', 1), ('text processing', 1), ('processing tools', 1), ('tools python', 1), ('for natural', 1), ('natural language', 1), ('language processing', 1), ('can also', 1), ('also be', 1), ('to create', 1), ('create games', 1), ('games with', 1), ('with libraries', 1), ('as pygame', 1), ('pygame which', 1), ('which can', 1), ('can make', 1), ('make 2d', 1), ('2d games', 1), ('been successfully', 1), ('successfully embedded', 1), ('embedded in', 1), ('in many', 1), ('many software', 1), ('software products', 1), ('products as', 1), ('language including', 1), ('in finite', 1), ('finite element', 1), ('element method', 1), ('method software', 1), ('software such', 1), ('as abaqus', 1), ('abaqus 3d', 1), ('3d parametric', 1), ('parametric modelers', 1), ('modelers like', 1), ('like freecad', 1), ('freecad 3d', 1), ('3d animation', 1), ('animation packages', 1), ('packages such', 1), ('as 3ds', 1), ('3ds max', 1), ('max blender', 1), ('blender cinema', 1), ('cinema 4d', 1), ('4d lightwave', 1), ('lightwave houdini', 1), ('houdini maya', 1), ('maya modo', 1), ('modo motionbuilder', 1), ('motionbuilder softimage', 1), ('softimage the', 1), ('the visual', 1), ('visual effects', 1), ('effects compositor', 1), ('compositor nuke', 1), ('nuke 2d', 1), ('2d imaging', 1), ('imaging programs', 1), ('like gimp', 1), ('gimp inkscape', 1), ('inkscape scribus', 1), ('scribus and', 1), ('and paint', 1), ('paint shop', 1), ('shop pro', 1), ('pro and', 1), ('and musical', 1), ('musical notation', 1), ('notation programs', 1), ('like scorewriter', 1), ('scorewriter and', 1), ('and capella', 1), ('gnu debugger', 1), ('debugger uses', 1), ('a pretty', 1), ('pretty printer', 1), ('printer to', 1), ('show complex', 1), ('complex structures', 1), ('structures such', 1), ('c containers', 1), ('esri promotes', 1), ('promotes python', 1), ('the best', 1), ('best choice', 1), ('choice for', 1), ('for writing', 1), ('writing scripts', 1), ('scripts in', 1), ('in arcgis', 1), ('has also', 1), ('been used', 1), ('in several', 1), ('several video', 1), ('video games', 1), ('games and', 1), ('been adopted', 1), ('adopted as', 1), ('as first', 1), ('first of', 1), ('the three', 1), ('three available', 1), ('available programming', 1), ('in google', 1), ('google app', 1), ('app engine', 1), ('engine the', 1), ('the other', 1), ('other two', 1), ('two being', 1), ('being java', 1), ('and go', 1), ('many operating', 1), ('operating systems', 1), ('systems include', 1), ('include python', 1), ('standard component', 1), ('it ships', 1), ('ships with', 1), ('with most', 1), ('most linux', 1), ('distributions amigaos', 1), ('amigaos 4', 1), ('4 using', 1), ('using python', 1), ('python 27', 1), ('27 freebsd', 1), ('freebsd ', 1), (' netbsd', 1), ('netbsd and', 1), ('and openbsd', 1), ('openbsd ', 1), ('and can', 1), ('used from', 1), ('the command', 1), ('many linux', 1), ('distributions use', 1), ('use installers', 1), ('installers written', 1), ('python ubuntu', 1), ('ubuntu uses', 1), ('uses the', 1), ('the ubiquity', 1), ('ubiquity installer', 1), ('installer while', 1), ('while red', 1), ('red hat', 1), ('hat linux', 1), ('linux and', 1), ('and fedora', 1), ('fedora linux', 1), ('linux use', 1), ('use the', 1), ('the anaconda', 1), ('anaconda installer', 1), ('gentoo linux', 1), ('linux uses', 1), ('its package', 1), ('package management', 1), ('management system', 1), ('system portage', 1), ('used extensively', 1), ('extensively in', 1), ('the information', 1), ('information security', 1), ('security industry', 1), ('industry including', 1), ('in exploit', 1), ('exploit development', 1), ('the sugar', 1), ('sugar software', 1), ('software for', 1), ('the one', 1), ('one laptop', 1), ('laptop per', 1), ('per child', 1), ('child xo', 1), ('xo developed', 1), ('developed at', 1), ('at sugar', 1), ('sugar labs', 1), ('labs since', 1), ('since 2008', 1), ('2008 is', 1), ('the raspberry', 1), ('raspberry pi', 1), ('pi singleboard', 1), ('singleboard computer', 1), ('computer project', 1), ('project has', 1), ('has adopted', 1), ('adopted python', 1), ('as its', 1), ('its main', 1), ('main userprogramming', 1), ('userprogramming language', 1), ('libreoffice includes', 1), ('includes python', 1), ('and intends', 1), ('intends to', 1), ('to replace', 1), ('replace java', 1), ('java with', 1), ('its python', 1), ('python scripting', 1), ('scripting provider', 1), ('provider is', 1), ('a core', 1), ('core feature', 1), ('feature since', 1), ('since version', 1), ('version 40', 1), ('40 from', 1), ('from 7', 1), ('7 february', 1), ('february 2013', 1), ('pythons design', 1), ('and philosophy', 1), ('philosophy have', 1), ('have influenced', 1), ('influenced many', 1), ('languages pythons', 1), ('development practices', 1), ('practices have', 1), ('have also', 1), ('been emulated', 1), ('emulated by', 1), ('by other', 1), ('the practice', 1), ('practice of', 1), ('of requiring', 1), ('requiring a', 1), ('a document', 1), ('document describing', 1), ('describing the', 1), ('the rationale', 1), ('rationale for', 1), ('for and', 1), ('and issues', 1), ('issues surrounding', 1), ('surrounding a', 1), ('a change', 1), ('change to', 1), ('language ', 1), ('also used', 1), ('in tcl', 1), ('tcl erlang', 1), ('erlang and', 1), ('and swift', 1)]\n" + ] + } + ], + "source": [ + "from collections import Counter\n", + "\n", + "def getNgrams(text, n):\n", + " text = text.split(' ')\n", + " return [' '.join(text[i:i+n]) for i in range(len(text)-n+1)]\n", + "\n", + "def countNGramsFromSentences(sentences, n):\n", + " counts = Counter()\n", + " for sentence in sentences:\n", + " counts.update(getNgrams(sentence, n))\n", + " return counts\n", + "\n", + "counts = countNGramsFromSentences(cleaned, 2)\n", + "print(counts.most_common())" + ] + }, + { + "cell_type": "code", + "execution_count": 110, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "2814" + ] + }, + "execution_count": 110, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "len(counts)" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "import re\n", + "\n", + "def getNgrams(content, n):\n", + " content = re.sub('\\n|[[\\d+\\]]', ' ', content)\n", + " content = bytes(content, 'UTF-8')\n", + " content = content.decode('ascii', 'ignore')\n", + " content = content.split(' ')\n", + " content = [word for word in content if word != '']\n", + " output = []\n", + " for i in range(len(content)-n+1):\n", + " output.append(content[i:i+n])\n", + " return output" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[['General-purpose', 'programming'], ['programming', 'language'], ['language', 'PythonParadigmMulti-paradigm:'], ['PythonParadigmMulti-paradigm:', 'object-oriented,'], ['object-oriented,', 'procedural'], ['procedural', '(imperative),'], ['(imperative),', 'functional,'], ['functional,', 'structured,'], ['structured,', 'reflectiveDesignedbyGuido'], ['reflectiveDesignedbyGuido', 'van'], ['van', 'RossumDeveloperPython'], ['RossumDeveloperPython', 'Software'], ['Software', 'FoundationFirstappeared'], ['FoundationFirstappeared', 'February'], ['February', ';'], [';', 'years'], ['years', 'ago('], ['ago(', '-'], ['-', '-'], ['-', ')'], [')', 'Stable'], ['Stable', 'release'], ['release', '.'], ['.', '.'], ['.', '/'], ['/', 'February'], ['February', ';'], [';', 'days'], ['days', 'ago('], ['ago(', 'February'], ['February', ')Preview'], [')Preview', 'release'], ['release', '.'], ['.', '.'], ['.', 'a'], ['a', '/'], ['/', 'February'], ['February', ';'], [';', 'days'], ['days', 'ago('], ['ago(', 'February'], ['February', ')'], [')', 'Typing'], ['Typing', 'disciplineDuck,'], ['disciplineDuck,', 'dynamic,'], ['dynamic,', 'strong'], ['strong', 'typing;'], ['typing;', 'gradual'], ['gradual', '(since'], ['(since', '.'], ['.', ','], [',', 'but'], ['but', 'ignored'], ['ignored', 'in'], ['in', 'CPython)'], ['CPython)', 'OSWindows,'], ['OSWindows,', 'macOS,'], ['macOS,', 'Linux/UNIX,'], ['Linux/UNIX,', 'Android'], ['Android', 'and'], ['and', 'more'], ['more', 'LicensePython'], ['LicensePython', 'Software'], ['Software', 'Foundation'], ['Foundation', 'LicenseFilename'], ['LicenseFilename', 'extensions.py,'], ['extensions.py,', '.pyi,'], ['.pyi,', '.pyc,'], ['.pyc,', '.pyd,'], ['.pyd,', '.pyw,'], ['.pyw,', '.pyz'], ['.pyz', '(since'], ['(since', '.'], ['.', '),'], ['),', '.pyo'], ['.pyo', '(prior'], ['(prior', 'to'], ['to', '.'], ['.', ')'], [')', 'Websitepython.orgMajor'], ['Websitepython.orgMajor', 'implementationsCPython,'], ['implementationsCPython,', 'PyPy,'], ['PyPy,', 'Stackless'], ['Stackless', 'Python,'], ['Python,', 'MicroPython,'], ['MicroPython,', 'CircuitPython,'], ['CircuitPython,', 'IronPython,'], ['IronPython,', 'JythonDialectsCython,'], ['JythonDialectsCython,', 'RPython,'], ['RPython,', 'Starlark'], ['Starlark', 'Influenced'], ['Influenced', 'byABC,'], ['byABC,', 'Ada,'], ['Ada,', 'ALGOL'], ['ALGOL', ','], [',', 'APL,'], ['APL,', 'C,'], ['C,', 'C'], ['C', ','], [',', 'CLU,'], ['CLU,', 'Dylan,'], ['Dylan,', 'Haskell,'], ['Haskell,', 'Icon,'], ['Icon,', 'Lisp,'], ['Lisp,', 'Modula-'], ['Modula-', ','], [',', 'Perl,'], ['Perl,', 'Standard'], ['Standard', 'ML'], ['ML', 'InfluencedApache'], ['InfluencedApache', 'Groovy,'], ['Groovy,', 'Boo,'], ['Boo,', 'Cobra,'], ['Cobra,', 'CoffeeScript,'], ['CoffeeScript,', 'D,'], ['D,', 'F#,'], ['F#,', 'Genie,'], ['Genie,', 'Go,'], ['Go,', 'JavaScript,'], ['JavaScript,', 'Julia,'], ['Julia,', 'Nim,'], ['Nim,', 'Ring,'], ['Ring,', 'Ruby,'], ['Ruby,', 'Swift'], ['Swift', 'Python'], ['Python', 'Programming'], ['Programming', 'at'], ['at', 'Wikibooks'], ['Wikibooks', 'Python'], ['Python', 'is'], ['is', 'a'], ['a', 'high-level,'], ['high-level,', 'general-purpose'], ['general-purpose', 'programming'], ['programming', 'language.'], ['language.', 'Its'], ['Its', 'design'], ['design', 'philosophy'], ['philosophy', 'emphasizes'], ['emphasizes', 'code'], ['code', 'readability'], ['readability', 'with'], ['with', 'the'], ['the', 'use'], ['use', 'of'], ['of', 'significant'], ['significant', 'indentation.'], ['indentation.', 'Python'], ['Python', 'is'], ['is', 'dynamically'], ['dynamically', 'typed'], ['typed', 'and'], ['and', 'garbage-collected.'], ['garbage-collected.', 'It'], ['It', 'supports'], ['supports', 'multiple'], ['multiple', 'programming'], ['programming', 'paradigms,'], ['paradigms,', 'including'], ['including', 'structured'], ['structured', '(particularly'], ['(particularly', 'procedural),'], ['procedural),', 'object-oriented'], ['object-oriented', 'and'], ['and', 'functional'], ['functional', 'programming.'], ['programming.', 'It'], ['It', 'is'], ['is', 'often'], ['often', 'described'], ['described', 'as'], ['as', 'a'], ['a', '\"batteries'], ['\"batteries', 'included\"'], ['included\"', 'language'], ['language', 'due'], ['due', 'to'], ['to', 'its'], ['its', 'comprehensive'], ['comprehensive', 'standard'], ['standard', 'library.'], ['library.', 'Guido'], ['Guido', 'van'], ['van', 'Rossum'], ['Rossum', 'began'], ['began', 'working'], ['working', 'on'], ['on', 'Python'], ['Python', 'in'], ['in', 'the'], ['the', 'late'], ['late', 's'], ['s', 'as'], ['as', 'a'], ['a', 'successor'], ['successor', 'to'], ['to', 'the'], ['the', 'ABC'], ['ABC', 'programming'], ['programming', 'language'], ['language', 'and'], ['and', 'first'], ['first', 'released'], ['released', 'it'], ['it', 'in'], ['in', 'as'], ['as', 'Python'], ['Python', '.'], ['.', '.'], ['.', '.'], ['.', 'Python'], ['Python', '.'], ['.', 'was'], ['was', 'released'], ['released', 'in'], ['in', '.'], ['.', 'Python'], ['Python', '.'], ['.', ','], [',', 'released'], ['released', 'in'], ['in', ','], [',', 'was'], ['was', 'a'], ['a', 'major'], ['major', 'revision'], ['revision', 'not'], ['not', 'completely'], ['completely', 'backward-compatible'], ['backward-compatible', 'with'], ['with', 'earlier'], ['earlier', 'versions.'], ['versions.', 'Python'], ['Python', '.'], ['.', '.'], ['.', ','], [',', 'released'], ['released', 'in'], ['in', ','], [',', 'was'], ['was', 'the'], ['the', 'last'], ['last', 'release'], ['release', 'of'], ['of', 'Python'], ['Python', '.'], ['.', 'Python'], ['Python', 'consistently'], ['consistently', 'ranks'], ['ranks', 'as'], ['as', 'one'], ['one', 'of'], ['of', 'the'], ['the', 'most'], ['most', 'popular'], ['popular', 'programming'], ['programming', 'languages.'], ['languages.', 'History'], ['History', 'The'], ['The', 'designer'], ['designer', 'of'], ['of', 'Python,'], ['Python,', 'Guido'], ['Guido', 'van'], ['van', 'Rossum,'], ['Rossum,', 'at'], ['at', 'OSCON'], ['OSCON', 'Main'], ['Main', 'article:'], ['article:', 'History'], ['History', 'of'], ['of', 'Python'], ['Python', 'Python'], ['Python', 'was'], ['was', 'conceived'], ['conceived', 'in'], ['in', 'the'], ['the', 'late'], ['late', 's'], ['s', 'by'], ['by', 'Guido'], ['Guido', 'van'], ['van', 'Rossum'], ['Rossum', 'at'], ['at', 'Centrum'], ['Centrum', 'Wiskunde'], ['Wiskunde', '&'], ['&', 'Informatica'], ['Informatica', '(CWI)'], ['(CWI)', 'in'], ['in', 'the'], ['the', 'Netherlands'], ['Netherlands', 'as'], ['as', 'a'], ['a', 'successor'], ['successor', 'to'], ['to', 'the'], ['the', 'ABC'], ['ABC', 'programming'], ['programming', 'language,'], ['language,', 'which'], ['which', 'was'], ['was', 'inspired'], ['inspired', 'by'], ['by', 'SETL,'], ['SETL,', 'capable'], ['capable', 'of'], ['of', 'exception'], ['exception', 'handling'], ['handling', 'and'], ['and', 'interfacing'], ['interfacing', 'with'], ['with', 'the'], ['the', 'Amoeba'], ['Amoeba', 'operating'], ['operating', 'system.'], ['system.', 'Its'], ['Its', 'implementation'], ['implementation', 'began'], ['began', 'in'], ['in', 'December'], ['December', '.'], ['.', 'Van'], ['Van', 'Rossum'], ['Rossum', 'shouldered'], ['shouldered', 'sole'], ['sole', 'responsibility'], ['responsibility', 'for'], ['for', 'the'], ['the', 'project,'], ['project,', 'as'], ['as', 'the'], ['the', 'lead'], ['lead', 'developer,'], ['developer,', 'until'], ['until', 'July'], ['July', ','], [',', 'when'], ['when', 'he'], ['he', 'announced'], ['announced', 'his'], ['his', '\"permanent'], ['\"permanent', 'vacation\"'], ['vacation\"', 'from'], ['from', 'his'], ['his', 'responsibilities'], ['responsibilities', 'as'], ['as', \"Python's\"], [\"Python's\", '\"benevolent'], ['\"benevolent', 'dictator'], ['dictator', 'for'], ['for', 'life\",'], ['life\",', 'a'], ['a', 'title'], ['title', 'the'], ['the', 'Python'], ['Python', 'community'], ['community', 'bestowed'], ['bestowed', 'upon'], ['upon', 'him'], ['him', 'to'], ['to', 'reflect'], ['reflect', 'his'], ['his', 'long-term'], ['long-term', 'commitment'], ['commitment', 'as'], ['as', 'the'], ['the', \"project's\"], [\"project's\", 'chief'], ['chief', 'decision-maker.'], ['decision-maker.', 'In'], ['In', 'January'], ['January', ','], [',', 'active'], ['active', 'Python'], ['Python', 'core'], ['core', 'developers'], ['developers', 'elected'], ['elected', 'a'], ['a', 'five-member'], ['five-member', 'Steering'], ['Steering', 'Council'], ['Council', 'to'], ['to', 'lead'], ['lead', 'the'], ['the', 'project.'], ['project.', 'Python'], ['Python', '.'], ['.', 'was'], ['was', 'released'], ['released', 'on'], ['on', 'October'], ['October', ','], [',', 'with'], ['with', 'many'], ['many', 'major'], ['major', 'new'], ['new', 'features'], ['features', 'such'], ['such', 'as'], ['as', 'list'], ['list', 'comprehensions,'], ['comprehensions,', 'cycle-detecting'], ['cycle-detecting', 'garbage'], ['garbage', 'collection,'], ['collection,', 'reference'], ['reference', 'counting,'], ['counting,', 'and'], ['and', 'Unicode'], ['Unicode', 'support.'], ['support.', 'Python'], ['Python', '.'], ['.', ','], [',', 'released'], ['released', 'on'], ['on', 'December'], ['December', ','], [',', 'with'], ['with', 'many'], ['many', 'of'], ['of', 'its'], ['its', 'major'], ['major', 'features'], ['features', 'backported'], ['backported', 'to'], ['to', 'Python'], ['Python', '.'], ['.', '.x'], ['.x', 'and'], ['and', '.'], ['.', '.x.'], ['.x.', 'Releases'], ['Releases', 'of'], ['of', 'Python'], ['Python', 'include'], ['include', 'the'], ['the', 'to'], ['to', 'utility,'], ['utility,', 'which'], ['which', 'automates'], ['automates', 'the'], ['the', 'translation'], ['translation', 'of'], ['of', 'Python'], ['Python', 'code'], ['code', 'to'], ['to', 'Python'], ['Python', '.'], ['.', 'Python'], ['Python', '.'], ['.', \"'s\"], [\"'s\", 'end-of-life'], ['end-of-life', 'was'], ['was', 'initially'], ['initially', 'set'], ['set', 'for'], ['for', ','], [',', 'then'], ['then', 'postponed'], ['postponed', 'to'], ['to', 'out'], ['out', 'of'], ['of', 'concern'], ['concern', 'that'], ['that', 'a'], ['a', 'large'], ['large', 'body'], ['body', 'of'], ['of', 'existing'], ['existing', 'code'], ['code', 'could'], ['could', 'not'], ['not', 'easily'], ['easily', 'be'], ['be', 'forward-ported'], ['forward-ported', 'to'], ['to', 'Python'], ['Python', '.'], ['.', 'No'], ['No', 'further'], ['further', 'security'], ['security', 'patches'], ['patches', 'or'], ['or', 'other'], ['other', 'improvements'], ['improvements', 'will'], ['will', 'be'], ['be', 'released'], ['released', 'for'], ['for', 'it.'], ['it.', 'Currently'], ['Currently', 'only'], ['only', '.'], ['.', 'and'], ['and', 'later'], ['later', 'are'], ['are', 'supported.'], ['supported.', 'In'], ['In', ','], [',', 'Python'], ['Python', '.'], ['.', '.'], ['.', 'and'], ['and', '.'], ['.', '.'], ['.', 'were'], ['were', 'expedited'], ['expedited', 'as'], ['as', 'all'], ['all', 'versions'], ['versions', 'of'], ['of', 'Python'], ['Python', '(including'], ['(including', '.'], ['.', ')'], [')', 'had'], ['had', 'security'], ['security', 'issues'], ['issues', 'leading'], ['leading', 'to'], ['to', 'possible'], ['possible', 'remote'], ['remote', 'code'], ['code', 'execution'], ['execution', 'and'], ['and', 'web'], ['web', 'cache'], ['cache', 'poisoning.'], ['poisoning.', 'In'], ['In', ','], [',', 'Python'], ['Python', '.'], ['.', '.'], ['.', 'and'], ['and', '.'], ['.', '.'], ['.', 'were'], ['were', 'expedited'], ['expedited', 'and'], ['and', '.'], ['.', '.'], ['.', ','], [',', 'and'], ['and', '.'], ['.', '.'], ['.', ','], [',', 'because'], ['because', 'of'], ['of', 'many'], ['many', 'security'], ['security', 'issues.'], ['issues.', 'When'], ['When', 'Python'], ['Python', '.'], ['.', '.'], ['.', 'was'], ['was', 'released'], ['released', 'in'], ['in', 'May'], ['May', ','], [',', 'it'], ['it', 'was'], ['was', 'announced'], ['announced', 'that'], ['that', 'the'], ['the', '.'], ['.', 'series'], ['series', '(joining'], ['(joining', 'the'], ['the', 'older'], ['older', 'series'], ['series', '.'], ['.', 'and'], ['and', '.'], ['.', ')'], [')', 'would'], ['would', 'only'], ['only', 'receive'], ['receive', 'security'], ['security', 'fixes'], ['fixes', 'in'], ['in', 'the'], ['the', 'future.'], ['future.', 'On'], ['On', 'September'], ['September', ','], [',', ','], [',', 'four'], ['four', 'new'], ['new', 'releases'], ['releases', 'were'], ['were', 'made'], ['made', 'due'], ['due', 'to'], ['to', 'a'], ['a', 'potential'], ['potential', 'denial-of-service'], ['denial-of-service', 'attack:'], ['attack:', '.'], ['.', '.'], ['.', ','], [',', '.'], ['.', '.'], ['.', ','], [',', '.'], ['.', '.'], ['.', ','], [',', 'and'], ['and', '.'], ['.', '.'], ['.', '.'], ['.', 'As'], ['As', 'of'], ['of', 'November'], ['November', ','], [',', 'update'], ['update', 'Python'], ['Python', '.'], ['.', '.'], ['.', 'is'], ['is', 'the'], ['the', 'current'], ['current', 'stable'], ['stable', 'release.'], ['release.', 'Notable'], ['Notable', 'changes'], ['changes', 'from'], ['from', '.'], ['.', 'include'], ['include', 'increased'], ['increased', 'program'], ['program', 'execution'], ['execution', 'speed'], ['speed', 'and'], ['and', 'improved'], ['improved', 'error'], ['error', 'reporting.'], ['reporting.', 'Design'], ['Design', 'philosophy'], ['philosophy', 'and'], ['and', 'features'], ['features', 'Python'], ['Python', 'is'], ['is', 'a'], ['a', 'multi-paradigm'], ['multi-paradigm', 'programming'], ['programming', 'language.'], ['language.', 'Object-oriented'], ['Object-oriented', 'programming'], ['programming', 'and'], ['and', 'structured'], ['structured', 'programming'], ['programming', 'are'], ['are', 'fully'], ['fully', 'supported,'], ['supported,', 'and'], ['and', 'many'], ['many', 'of'], ['of', 'their'], ['their', 'features'], ['features', 'support'], ['support', 'functional'], ['functional', 'programming'], ['programming', 'and'], ['and', 'aspect-oriented'], ['aspect-oriented', 'programming'], ['programming', '(including'], ['(including', 'metaprogramming'], ['metaprogramming', 'and'], ['and', 'metaobjects).'], ['metaobjects).', 'Many'], ['Many', 'other'], ['other', 'paradigms'], ['paradigms', 'are'], ['are', 'supported'], ['supported', 'via'], ['via', 'extensions,'], ['extensions,', 'including'], ['including', 'design'], ['design', 'by'], ['by', 'contract'], ['contract', 'and'], ['and', 'logic'], ['logic', 'programming.'], ['programming.', 'Python'], ['Python', 'uses'], ['uses', 'dynamic'], ['dynamic', 'typing'], ['typing', 'and'], ['and', 'a'], ['a', 'combination'], ['combination', 'of'], ['of', 'reference'], ['reference', 'counting'], ['counting', 'and'], ['and', 'a'], ['a', 'cycle-detecting'], ['cycle-detecting', 'garbage'], ['garbage', 'collector'], ['collector', 'for'], ['for', 'memory'], ['memory', 'management.'], ['management.', 'It'], ['It', 'uses'], ['uses', 'dynamic'], ['dynamic', 'name'], ['name', 'resolution'], ['resolution', '(late'], ['(late', 'binding),'], ['binding),', 'which'], ['which', 'binds'], ['binds', 'method'], ['method', 'and'], ['and', 'variable'], ['variable', 'names'], ['names', 'during'], ['during', 'program'], ['program', 'execution.'], ['execution.', 'Its'], ['Its', 'design'], ['design', 'offers'], ['offers', 'some'], ['some', 'support'], ['support', 'for'], ['for', 'functional'], ['functional', 'programming'], ['programming', 'in'], ['in', 'the'], ['the', 'Lisp'], ['Lisp', 'tradition.'], ['tradition.', 'It'], ['It', 'has'], ['has', 'filter,mapandreduce'], ['filter,mapandreduce', 'functions;'], ['functions;', 'list'], ['list', 'comprehensions,'], ['comprehensions,', 'dictionaries,'], ['dictionaries,', 'sets,'], ['sets,', 'and'], ['and', 'generator'], ['generator', 'expressions.'], ['expressions.', 'The'], ['The', 'standard'], ['standard', 'library'], ['library', 'has'], ['has', 'two'], ['two', 'modules'], ['modules', '(itertools'], ['(itertools', 'and'], ['and', 'functools)'], ['functools)', 'that'], ['that', 'implement'], ['implement', 'functional'], ['functional', 'tools'], ['tools', 'borrowed'], ['borrowed', 'from'], ['from', 'Haskell'], ['Haskell', 'and'], ['and', 'Standard'], ['Standard', 'ML.'], ['ML.', 'Its'], ['Its', 'core'], ['core', 'philosophy'], ['philosophy', 'is'], ['is', 'summarized'], ['summarized', 'in'], ['in', 'the'], ['the', 'document'], ['document', 'The'], ['The', 'Zen'], ['Zen', 'of'], ['of', 'Python'], ['Python', '(PEP'], ['(PEP', '),'], ['),', 'which'], ['which', 'includes'], ['includes', 'aphorisms'], ['aphorisms', 'such'], ['such', 'as:'], ['as:', 'Beautiful'], ['Beautiful', 'is'], ['is', 'better'], ['better', 'than'], ['than', 'ugly.'], ['ugly.', 'Explicit'], ['Explicit', 'is'], ['is', 'better'], ['better', 'than'], ['than', 'implicit.'], ['implicit.', 'Simple'], ['Simple', 'is'], ['is', 'better'], ['better', 'than'], ['than', 'complex.'], ['complex.', 'Complex'], ['Complex', 'is'], ['is', 'better'], ['better', 'than'], ['than', 'complicated.'], ['complicated.', 'Readability'], ['Readability', 'counts.'], ['counts.', 'Rather'], ['Rather', 'than'], ['than', 'building'], ['building', 'all'], ['all', 'of'], ['of', 'its'], ['its', 'functionality'], ['functionality', 'into'], ['into', 'its'], ['its', 'core,'], ['core,', 'Python'], ['Python', 'was'], ['was', 'designed'], ['designed', 'to'], ['to', 'be'], ['be', 'highly'], ['highly', 'extensible'], ['extensible', 'via'], ['via', 'modules.'], ['modules.', 'This'], ['This', 'compact'], ['compact', 'modularity'], ['modularity', 'has'], ['has', 'made'], ['made', 'it'], ['it', 'particularly'], ['particularly', 'popular'], ['popular', 'as'], ['as', 'a'], ['a', 'means'], ['means', 'of'], ['of', 'adding'], ['adding', 'programmable'], ['programmable', 'interfaces'], ['interfaces', 'to'], ['to', 'existing'], ['existing', 'applications.'], ['applications.', 'Van'], ['Van', \"Rossum's\"], [\"Rossum's\", 'vision'], ['vision', 'of'], ['of', 'a'], ['a', 'small'], ['small', 'core'], ['core', 'language'], ['language', 'with'], ['with', 'a'], ['a', 'large'], ['large', 'standard'], ['standard', 'library'], ['library', 'and'], ['and', 'easily'], ['easily', 'extensible'], ['extensible', 'interpreter'], ['interpreter', 'stemmed'], ['stemmed', 'from'], ['from', 'his'], ['his', 'frustrations'], ['frustrations', 'with'], ['with', 'ABC,'], ['ABC,', 'which'], ['which', 'espoused'], ['espoused', 'the'], ['the', 'opposite'], ['opposite', 'approach.'], ['approach.', 'Python'], ['Python', 'strives'], ['strives', 'for'], ['for', 'a'], ['a', 'simpler,'], ['simpler,', 'less-cluttered'], ['less-cluttered', 'syntax'], ['syntax', 'and'], ['and', 'grammar'], ['grammar', 'while'], ['while', 'giving'], ['giving', 'developers'], ['developers', 'a'], ['a', 'choice'], ['choice', 'in'], ['in', 'their'], ['their', 'coding'], ['coding', 'methodology.'], ['methodology.', 'In'], ['In', 'contrast'], ['contrast', 'to'], ['to', \"Perl's\"], [\"Perl's\", '\"there'], ['\"there', 'is'], ['is', 'more'], ['more', 'than'], ['than', 'one'], ['one', 'way'], ['way', 'to'], ['to', 'do'], ['do', 'it\"'], ['it\"', 'motto,'], ['motto,', 'Python'], ['Python', 'embraces'], ['embraces', 'a'], ['a', '\"there'], ['\"there', 'should'], ['should', 'be'], ['be', 'oneand'], ['oneand', 'preferably'], ['preferably', 'only'], ['only', 'oneobvious'], ['oneobvious', 'way'], ['way', 'to'], ['to', 'do'], ['do', 'it\"'], ['it\"', 'philosophy.'], ['philosophy.', 'Alex'], ['Alex', 'Martelli,'], ['Martelli,', 'a'], ['a', 'Fellow'], ['Fellow', 'at'], ['at', 'the'], ['the', 'Python'], ['Python', 'Software'], ['Software', 'Foundation'], ['Foundation', 'and'], ['and', 'Python'], ['Python', 'book'], ['book', 'author,'], ['author,', 'wrote:'], ['wrote:', '\"To'], ['\"To', 'describe'], ['describe', 'something'], ['something', 'as'], ['as', \"'clever'\"], [\"'clever'\", 'is'], ['is', 'not'], ['not', 'considered'], ['considered', 'a'], ['a', 'compliment'], ['compliment', 'in'], ['in', 'the'], ['the', 'Python'], ['Python', 'culture.\"'], ['culture.\"', \"Python's\"], [\"Python's\", 'developers'], ['developers', 'strive'], ['strive', 'to'], ['to', 'avoid'], ['avoid', 'premature'], ['premature', 'optimization'], ['optimization', 'and'], ['and', 'reject'], ['reject', 'patches'], ['patches', 'to'], ['to', 'non-critical'], ['non-critical', 'parts'], ['parts', 'of'], ['of', 'the'], ['the', 'CPython'], ['CPython', 'reference'], ['reference', 'implementation'], ['implementation', 'that'], ['that', 'would'], ['would', 'offer'], ['offer', 'marginal'], ['marginal', 'increases'], ['increases', 'in'], ['in', 'speed'], ['speed', 'at'], ['at', 'the'], ['the', 'cost'], ['cost', 'of'], ['of', 'clarity.'], ['clarity.', 'When'], ['When', 'speed'], ['speed', 'is'], ['is', 'important,'], ['important,', 'a'], ['a', 'Python'], ['Python', 'programmer'], ['programmer', 'can'], ['can', 'move'], ['move', 'time-critical'], ['time-critical', 'functions'], ['functions', 'to'], ['to', 'extension'], ['extension', 'modules'], ['modules', 'written'], ['written', 'in'], ['in', 'languages'], ['languages', 'such'], ['such', 'as'], ['as', 'C;'], ['C;', 'or'], ['or', 'use'], ['use', 'PyPy,'], ['PyPy,', 'a'], ['a', 'just-in-time'], ['just-in-time', 'compiler.'], ['compiler.', 'Cython'], ['Cython', 'is'], ['is', 'also'], ['also', 'available,'], ['available,', 'which'], ['which', 'translates'], ['translates', 'a'], ['a', 'Python'], ['Python', 'script'], ['script', 'into'], ['into', 'C'], ['C', 'and'], ['and', 'makes'], ['makes', 'direct'], ['direct', 'C-level'], ['C-level', 'API'], ['API', 'calls'], ['calls', 'into'], ['into', 'the'], ['the', 'Python'], ['Python', 'interpreter.'], ['interpreter.', \"Python's\"], [\"Python's\", 'developers'], ['developers', 'aim'], ['aim', 'for'], ['for', 'it'], ['it', 'to'], ['to', 'be'], ['be', 'fun'], ['fun', 'to'], ['to', 'use.'], ['use.', 'This'], ['This', 'is'], ['is', 'reflected'], ['reflected', 'in'], ['in', 'its'], ['its', 'namea'], ['namea', 'tribute'], ['tribute', 'to'], ['to', 'the'], ['the', 'British'], ['British', 'comedy'], ['comedy', 'group'], ['group', 'Monty'], ['Monty', 'Python'], ['Python', 'and'], ['and', 'in'], ['in', 'occasionally'], ['occasionally', 'playful'], ['playful', 'approaches'], ['approaches', 'to'], ['to', 'tutorials'], ['tutorials', 'and'], ['and', 'reference'], ['reference', 'materials,'], ['materials,', 'such'], ['such', 'as'], ['as', 'the'], ['the', 'use'], ['use', 'of'], ['of', 'the'], ['the', 'terms'], ['terms', '\"spam\"'], ['\"spam\"', 'and'], ['and', '\"eggs\"'], ['\"eggs\"', '(a'], ['(a', 'reference'], ['reference', 'to'], ['to', 'a'], ['a', 'Monty'], ['Monty', 'Python'], ['Python', 'sketch)'], ['sketch)', 'in'], ['in', 'examples,'], ['examples,', 'instead'], ['instead', 'of'], ['of', 'the'], ['the', 'often-used'], ['often-used', '\"foo\"'], ['\"foo\"', 'and'], ['and', '\"bar\".'], ['\"bar\".', 'A'], ['A', 'common'], ['common', 'neologism'], ['neologism', 'in'], ['in', 'the'], ['the', 'Python'], ['Python', 'community'], ['community', 'is'], ['is', 'pythonic,'], ['pythonic,', 'which'], ['which', 'has'], ['has', 'a'], ['a', 'wide'], ['wide', 'range'], ['range', 'of'], ['of', 'meanings'], ['meanings', 'related'], ['related', 'to'], ['to', 'program'], ['program', 'style.'], ['style.', '\"Pythonic\"'], ['\"Pythonic\"', 'code'], ['code', 'may'], ['may', 'use'], ['use', 'Python'], ['Python', 'idioms'], ['idioms', 'well,'], ['well,', 'be'], ['be', 'natural'], ['natural', 'or'], ['or', 'show'], ['show', 'fluency'], ['fluency', 'in'], ['in', 'the'], ['the', 'language,'], ['language,', 'or'], ['or', 'conform'], ['conform', 'with'], ['with', \"Python's\"], [\"Python's\", 'minimalist'], ['minimalist', 'philosophy'], ['philosophy', 'and'], ['and', 'emphasis'], ['emphasis', 'on'], ['on', 'readability.'], ['readability.', 'Code'], ['Code', 'that'], ['that', 'is'], ['is', 'difficult'], ['difficult', 'to'], ['to', 'understand'], ['understand', 'or'], ['or', 'reads'], ['reads', 'like'], ['like', 'a'], ['a', 'rough'], ['rough', 'transcription'], ['transcription', 'from'], ['from', 'another'], ['another', 'programming'], ['programming', 'language'], ['language', 'is'], ['is', 'called'], ['called', 'unpythonic.'], ['unpythonic.', 'Syntax'], ['Syntax', 'and'], ['and', 'semantics'], ['semantics', 'Main'], ['Main', 'article:'], ['article:', 'Python'], ['Python', 'syntax'], ['syntax', 'and'], ['and', 'semantics'], ['semantics', 'Python'], ['Python', 'is'], ['is', 'meant'], ['meant', 'to'], ['to', 'be'], ['be', 'an'], ['an', 'easily'], ['easily', 'readable'], ['readable', 'language.'], ['language.', 'Its'], ['Its', 'formatting'], ['formatting', 'is'], ['is', 'visually'], ['visually', 'uncluttered'], ['uncluttered', 'and'], ['and', 'often'], ['often', 'uses'], ['uses', 'English'], ['English', 'keywords'], ['keywords', 'where'], ['where', 'other'], ['other', 'languages'], ['languages', 'use'], ['use', 'punctuation.'], ['punctuation.', 'Unlike'], ['Unlike', 'many'], ['many', 'other'], ['other', 'languages,'], ['languages,', 'it'], ['it', 'does'], ['does', 'not'], ['not', 'use'], ['use', 'curly'], ['curly', 'brackets'], ['brackets', 'to'], ['to', 'delimit'], ['delimit', 'blocks,'], ['blocks,', 'and'], ['and', 'semicolons'], ['semicolons', 'after'], ['after', 'statements'], ['statements', 'are'], ['are', 'allowed'], ['allowed', 'but'], ['but', 'rarely'], ['rarely', 'used.'], ['used.', 'It'], ['It', 'has'], ['has', 'fewer'], ['fewer', 'syntactic'], ['syntactic', 'exceptions'], ['exceptions', 'and'], ['and', 'special'], ['special', 'cases'], ['cases', 'than'], ['than', 'C'], ['C', 'or'], ['or', 'Pascal.'], ['Pascal.', 'Indentation'], ['Indentation', 'Main'], ['Main', 'article:'], ['article:', 'Python'], ['Python', 'syntax'], ['syntax', 'and'], ['and', 'semantics'], ['semantics', 'Indentation'], ['Indentation', 'Python'], ['Python', 'uses'], ['uses', 'whitespace'], ['whitespace', 'indentation,'], ['indentation,', 'rather'], ['rather', 'than'], ['than', 'curly'], ['curly', 'brackets'], ['brackets', 'or'], ['or', 'keywords,'], ['keywords,', 'to'], ['to', 'delimit'], ['delimit', 'blocks.'], ['blocks.', 'An'], ['An', 'increase'], ['increase', 'in'], ['in', 'indentation'], ['indentation', 'comes'], ['comes', 'after'], ['after', 'certain'], ['certain', 'statements;'], ['statements;', 'a'], ['a', 'decrease'], ['decrease', 'in'], ['in', 'indentation'], ['indentation', 'signifies'], ['signifies', 'the'], ['the', 'end'], ['end', 'of'], ['of', 'the'], ['the', 'current'], ['current', 'block.'], ['block.', 'Thus,'], ['Thus,', 'the'], ['the', \"program's\"], [\"program's\", 'visual'], ['visual', 'structure'], ['structure', 'accurately'], ['accurately', 'represents'], ['represents', 'its'], ['its', 'semantic'], ['semantic', 'structure.'], ['structure.', 'This'], ['This', 'feature'], ['feature', 'is'], ['is', 'sometimes'], ['sometimes', 'termed'], ['termed', 'the'], ['the', 'off-side'], ['off-side', 'rule.'], ['rule.', 'Some'], ['Some', 'other'], ['other', 'languages'], ['languages', 'use'], ['use', 'indentation'], ['indentation', 'this'], ['this', 'way;'], ['way;', 'but'], ['but', 'in'], ['in', 'most,'], ['most,', 'indentation'], ['indentation', 'has'], ['has', 'no'], ['no', 'semantic'], ['semantic', 'meaning.'], ['meaning.', 'The'], ['The', 'recommended'], ['recommended', 'indent'], ['indent', 'size'], ['size', 'is'], ['is', 'four'], ['four', 'spaces.'], ['spaces.', 'Statements'], ['Statements', 'and'], ['and', 'control'], ['control', 'flow'], ['flow', \"Python's\"], [\"Python's\", 'statements'], ['statements', 'include:'], ['include:', 'The'], ['The', 'assignment'], ['assignment', 'statement,'], ['statement,', 'using'], ['using', 'a'], ['a', 'single'], ['single', 'equals'], ['equals', 'sign'], ['sign', '='], ['=', 'The'], ['The', 'if'], ['if', 'statement,'], ['statement,', 'which'], ['which', 'conditionally'], ['conditionally', 'executes'], ['executes', 'a'], ['a', 'block'], ['block', 'of'], ['of', 'code,'], ['code,', 'along'], ['along', 'with'], ['with', 'else'], ['else', 'and'], ['and', 'elif'], ['elif', '(a'], ['(a', 'contraction'], ['contraction', 'of'], ['of', 'else-if)'], ['else-if)', 'The'], ['The', 'for'], ['for', 'statement,'], ['statement,', 'which'], ['which', 'iterates'], ['iterates', 'over'], ['over', 'an'], ['an', 'iterable'], ['iterable', 'object,'], ['object,', 'capturing'], ['capturing', 'each'], ['each', 'element'], ['element', 'to'], ['to', 'a'], ['a', 'local'], ['local', 'variable'], ['variable', 'for'], ['for', 'use'], ['use', 'by'], ['by', 'the'], ['the', 'attached'], ['attached', 'block'], ['block', 'The'], ['The', 'while'], ['while', 'statement,'], ['statement,', 'which'], ['which', 'executes'], ['executes', 'a'], ['a', 'block'], ['block', 'of'], ['of', 'code'], ['code', 'as'], ['as', 'long'], ['long', 'as'], ['as', 'its'], ['its', 'condition'], ['condition', 'is'], ['is', 'true'], ['true', 'The'], ['The', 'try'], ['try', 'statement,'], ['statement,', 'which'], ['which', 'allows'], ['allows', 'exceptions'], ['exceptions', 'raised'], ['raised', 'in'], ['in', 'its'], ['its', 'attached'], ['attached', 'code'], ['code', 'block'], ['block', 'to'], ['to', 'be'], ['be', 'caught'], ['caught', 'and'], ['and', 'handled'], ['handled', 'by'], ['by', 'except'], ['except', 'clauses'], ['clauses', '(or'], ['(or', 'new'], ['new', 'syntax'], ['syntax', 'except*'], ['except*', 'in'], ['in', 'Python'], ['Python', '.'], ['.', 'for'], ['for', 'exception'], ['exception', 'groups'], ['groups', ');'], [');', 'it'], ['it', 'also'], ['also', 'ensures'], ['ensures', 'that'], ['that', 'clean-up'], ['clean-up', 'code'], ['code', 'in'], ['in', 'a'], ['a', 'finally'], ['finally', 'block'], ['block', 'is'], ['is', 'always'], ['always', 'run'], ['run', 'regardless'], ['regardless', 'of'], ['of', 'how'], ['how', 'the'], ['the', 'block'], ['block', 'exits'], ['exits', 'The'], ['The', 'raise'], ['raise', 'statement,'], ['statement,', 'used'], ['used', 'to'], ['to', 'raise'], ['raise', 'a'], ['a', 'specified'], ['specified', 'exception'], ['exception', 'or'], ['or', 're-raise'], ['re-raise', 'a'], ['a', 'caught'], ['caught', 'exception'], ['exception', 'The'], ['The', 'class'], ['class', 'statement,'], ['statement,', 'which'], ['which', 'executes'], ['executes', 'a'], ['a', 'block'], ['block', 'of'], ['of', 'code'], ['code', 'and'], ['and', 'attaches'], ['attaches', 'its'], ['its', 'local'], ['local', 'namespace'], ['namespace', 'to'], ['to', 'a'], ['a', 'class,'], ['class,', 'for'], ['for', 'use'], ['use', 'in'], ['in', 'object-oriented'], ['object-oriented', 'programming'], ['programming', 'The'], ['The', 'def'], ['def', 'statement,'], ['statement,', 'which'], ['which', 'defines'], ['defines', 'a'], ['a', 'function'], ['function', 'or'], ['or', 'method'], ['method', 'The'], ['The', 'with'], ['with', 'statement,'], ['statement,', 'which'], ['which', 'encloses'], ['encloses', 'a'], ['a', 'code'], ['code', 'block'], ['block', 'within'], ['within', 'a'], ['a', 'context'], ['context', 'manager'], ['manager', '(for'], ['(for', 'example,'], ['example,', 'acquiring'], ['acquiring', 'a'], ['a', 'lock'], ['lock', 'before'], ['before', 'it'], ['it', 'is'], ['is', 'run,'], ['run,', 'then'], ['then', 'releasing'], ['releasing', 'the'], ['the', 'lock;'], ['lock;', 'or'], ['or', 'opening'], ['opening', 'and'], ['and', 'closing'], ['closing', 'a'], ['a', 'file),'], ['file),', 'allowing'], ['allowing', 'resource-acquisition-is-initialization'], ['resource-acquisition-is-initialization', '(RAII)-like'], ['(RAII)-like', 'behavior'], ['behavior', 'and'], ['and', 'replacing'], ['replacing', 'a'], ['a', 'common'], ['common', 'try/finally'], ['try/finally', 'idiom'], ['idiom', 'The'], ['The', 'break'], ['break', 'statement,'], ['statement,', 'which'], ['which', 'exits'], ['exits', 'a'], ['a', 'loop'], ['loop', 'The'], ['The', 'continue'], ['continue', 'statement,'], ['statement,', 'which'], ['which', 'skips'], ['skips', 'the'], ['the', 'rest'], ['rest', 'of'], ['of', 'the'], ['the', 'current'], ['current', 'iteration'], ['iteration', 'and'], ['and', 'continues'], ['continues', 'with'], ['with', 'the'], ['the', 'next'], ['next', 'The'], ['The', 'del'], ['del', 'statement,'], ['statement,', 'which'], ['which', 'removes'], ['removes', 'a'], ['a', 'variabledeleting'], ['variabledeleting', 'the'], ['the', 'reference'], ['reference', 'from'], ['from', 'the'], ['the', 'name'], ['name', 'to'], ['to', 'the'], ['the', 'value,'], ['value,', 'and'], ['and', 'producing'], ['producing', 'an'], ['an', 'error'], ['error', 'if'], ['if', 'the'], ['the', 'variable'], ['variable', 'is'], ['is', 'referred'], ['referred', 'to'], ['to', 'before'], ['before', 'it'], ['it', 'is'], ['is', 'redefined'], ['redefined', 'The'], ['The', 'pass'], ['pass', 'statement,'], ['statement,', 'serving'], ['serving', 'as'], ['as', 'a'], ['a', 'NOP,'], ['NOP,', 'syntactically'], ['syntactically', 'needed'], ['needed', 'to'], ['to', 'create'], ['create', 'an'], ['an', 'empty'], ['empty', 'code'], ['code', 'block'], ['block', 'The'], ['The', 'assert'], ['assert', 'statement,'], ['statement,', 'used'], ['used', 'in'], ['in', 'debugging'], ['debugging', 'to'], ['to', 'check'], ['check', 'for'], ['for', 'conditions'], ['conditions', 'that'], ['that', 'should'], ['should', 'apply'], ['apply', 'The'], ['The', 'yield'], ['yield', 'statement,'], ['statement,', 'which'], ['which', 'returns'], ['returns', 'a'], ['a', 'value'], ['value', 'from'], ['from', 'a'], ['a', 'generator'], ['generator', 'function'], ['function', '(and'], ['(and', 'also'], ['also', 'an'], ['an', 'operator);'], ['operator);', 'used'], ['used', 'to'], ['to', 'implement'], ['implement', 'coroutines'], ['coroutines', 'The'], ['The', 'return'], ['return', 'statement,'], ['statement,', 'used'], ['used', 'to'], ['to', 'return'], ['return', 'a'], ['a', 'value'], ['value', 'from'], ['from', 'a'], ['a', 'function'], ['function', 'The'], ['The', 'import'], ['import', 'and'], ['and', 'from'], ['from', 'statements,'], ['statements,', 'used'], ['used', 'to'], ['to', 'import'], ['import', 'modules'], ['modules', 'whose'], ['whose', 'functions'], ['functions', 'or'], ['or', 'variables'], ['variables', 'can'], ['can', 'be'], ['be', 'used'], ['used', 'in'], ['in', 'the'], ['the', 'current'], ['current', 'program'], ['program', 'The'], ['The', 'assignment'], ['assignment', 'statement'], ['statement', '(=)'], ['(=)', 'binds'], ['binds', 'a'], ['a', 'name'], ['name', 'as'], ['as', 'a'], ['a', 'reference'], ['reference', 'to'], ['to', 'a'], ['a', 'separate,'], ['separate,', 'dynamically'], ['dynamically', 'allocated'], ['allocated', 'object.'], ['object.', 'Variables'], ['Variables', 'may'], ['may', 'subsequently'], ['subsequently', 'be'], ['be', 'rebound'], ['rebound', 'at'], ['at', 'any'], ['any', 'time'], ['time', 'to'], ['to', 'any'], ['any', 'object.'], ['object.', 'In'], ['In', 'Python,'], ['Python,', 'a'], ['a', 'variable'], ['variable', 'name'], ['name', 'is'], ['is', 'a'], ['a', 'generic'], ['generic', 'reference'], ['reference', 'holder'], ['holder', 'without'], ['without', 'a'], ['a', 'fixed'], ['fixed', 'data'], ['data', 'type;'], ['type;', 'however,'], ['however,', 'it'], ['it', 'always'], ['always', 'refers'], ['refers', 'to'], ['to', 'some'], ['some', 'object'], ['object', 'with'], ['with', 'a'], ['a', 'type.'], ['type.', 'This'], ['This', 'is'], ['is', 'called'], ['called', 'dynamic'], ['dynamic', 'typingin'], ['typingin', 'contrast'], ['contrast', 'to'], ['to', 'statically-typed'], ['statically-typed', 'languages,'], ['languages,', 'where'], ['where', 'each'], ['each', 'variable'], ['variable', 'may'], ['may', 'contain'], ['contain', 'only'], ['only', 'a'], ['a', 'value'], ['value', 'of'], ['of', 'a'], ['a', 'certain'], ['certain', 'type.'], ['type.', 'Python'], ['Python', 'does'], ['does', 'not'], ['not', 'support'], ['support', 'tail'], ['tail', 'call'], ['call', 'optimization'], ['optimization', 'or'], ['or', 'first-class'], ['first-class', 'continuations,'], ['continuations,', 'and,'], ['and,', 'according'], ['according', 'to'], ['to', 'Van'], ['Van', 'Rossum,'], ['Rossum,', 'it'], ['it', 'never'], ['never', 'will.'], ['will.', 'However,'], ['However,', 'better'], ['better', 'support'], ['support', 'for'], ['for', 'coroutine-like'], ['coroutine-like', 'functionality'], ['functionality', 'is'], ['is', 'provided'], ['provided', 'by'], ['by', 'extending'], ['extending', \"Python's\"], [\"Python's\", 'generators.'], ['generators.', 'Before'], ['Before', '.'], ['.', ','], [',', 'generators'], ['generators', 'were'], ['were', 'lazy'], ['lazy', 'iterators;'], ['iterators;', 'data'], ['data', 'was'], ['was', 'passed'], ['passed', 'unidirectionally'], ['unidirectionally', 'out'], ['out', 'of'], ['of', 'the'], ['the', 'generator.'], ['generator.', 'From'], ['From', 'Python'], ['Python', '.'], ['.', 'on,'], ['on,', 'it'], ['it', 'is'], ['is', 'possible'], ['possible', 'to'], ['to', 'pass'], ['pass', 'data'], ['data', 'back'], ['back', 'into'], ['into', 'a'], ['a', 'generator'], ['generator', 'function;'], ['function;', 'and'], ['and', 'from'], ['from', 'version'], ['version', '.'], ['.', ','], [',', 'it'], ['it', 'can'], ['can', 'be'], ['be', 'passed'], ['passed', 'through'], ['through', 'multiple'], ['multiple', 'stack'], ['stack', 'levels.'], ['levels.', 'Expressions'], ['Expressions', \"Python's\"], [\"Python's\", 'expressions'], ['expressions', 'include:'], ['include:', 'The'], ['The', ','], [',', '-,'], ['-,', 'and'], ['and', '*'], ['*', 'operators'], ['operators', 'for'], ['for', 'mathematical'], ['mathematical', 'addition,'], ['addition,', 'subtraction,'], ['subtraction,', 'and'], ['and', 'multiplication'], ['multiplication', 'are'], ['are', 'similar'], ['similar', 'to'], ['to', 'other'], ['other', 'languages,'], ['languages,', 'but'], ['but', 'the'], ['the', 'behavior'], ['behavior', 'of'], ['of', 'division'], ['division', 'differs.'], ['differs.', 'There'], ['There', 'are'], ['are', 'two'], ['two', 'types'], ['types', 'of'], ['of', 'divisions'], ['divisions', 'in'], ['in', 'Python:'], ['Python:', 'floor'], ['floor', 'division'], ['division', '(or'], ['(or', 'integer'], ['integer', 'division)'], ['division)', '//'], ['//', 'and'], ['and', 'floating-point/division.'], ['floating-point/division.', 'Python'], ['Python', 'uses'], ['uses', 'the'], ['the', '**'], ['**', 'operator'], ['operator', 'for'], ['for', 'exponentiation.'], ['exponentiation.', 'Python'], ['Python', 'uses'], ['uses', 'the'], ['the', 'operator'], ['operator', 'for'], ['for', 'string'], ['string', 'concatenation.'], ['concatenation.', 'Python'], ['Python', 'uses'], ['uses', 'the'], ['the', '*'], ['*', 'operator'], ['operator', 'for'], ['for', 'duplicating'], ['duplicating', 'a'], ['a', 'string'], ['string', 'a'], ['a', 'specified'], ['specified', 'number'], ['number', 'of'], ['of', 'times.'], ['times.', 'The'], ['The', '@'], ['@', 'infix'], ['infix', 'operator.'], ['operator.', 'It'], ['It', 'is'], ['is', 'intended'], ['intended', 'to'], ['to', 'be'], ['be', 'used'], ['used', 'by'], ['by', 'libraries'], ['libraries', 'such'], ['such', 'as'], ['as', 'NumPy'], ['NumPy', 'for'], ['for', 'matrix'], ['matrix', 'multiplication.'], ['multiplication.', 'The'], ['The', 'syntax'], ['syntax', ':=,'], [':=,', 'called'], ['called', 'the'], ['the', '\"walrus'], ['\"walrus', 'operator\",'], ['operator\",', 'was'], ['was', 'introduced'], ['introduced', 'in'], ['in', 'Python'], ['Python', '.'], ['.', '.'], ['.', 'It'], ['It', 'assigns'], ['assigns', 'values'], ['values', 'to'], ['to', 'variables'], ['variables', 'as'], ['as', 'part'], ['part', 'of'], ['of', 'a'], ['a', 'larger'], ['larger', 'expression.'], ['expression.', 'In'], ['In', 'Python,'], ['Python,', '=='], ['==', 'compares'], ['compares', 'by'], ['by', 'value.'], ['value.', \"Python's\"], [\"Python's\", 'is'], ['is', 'operator'], ['operator', 'may'], ['may', 'be'], ['be', 'used'], ['used', 'to'], ['to', 'compare'], ['compare', 'object'], ['object', 'identities'], ['identities', '(comparison'], ['(comparison', 'by'], ['by', 'reference),'], ['reference),', 'and'], ['and', 'comparisons'], ['comparisons', 'may'], ['may', 'be'], ['be', 'chainedfor'], ['chainedfor', 'example,'], ['example,', 'a'], ['a', '<='], ['<=', 'b'], ['b', '<='], ['<=', 'c.'], ['c.', 'Python'], ['Python', 'uses'], ['uses', 'and,'], ['and,', 'or,'], ['or,', 'and'], ['and', 'not'], ['not', 'as'], ['as', 'boolean'], ['boolean', 'operators.'], ['operators.', 'Python'], ['Python', 'has'], ['has', 'a'], ['a', 'type'], ['type', 'of'], ['of', 'expression'], ['expression', 'called'], ['called', 'a'], ['a', 'list'], ['list', 'comprehension,'], ['comprehension,', 'as'], ['as', 'well'], ['well', 'as'], ['as', 'a'], ['a', 'more'], ['more', 'general'], ['general', 'expression'], ['expression', 'called'], ['called', 'a'], ['a', 'generator'], ['generator', 'expression.'], ['expression.', 'Anonymous'], ['Anonymous', 'functions'], ['functions', 'are'], ['are', 'implemented'], ['implemented', 'using'], ['using', 'lambda'], ['lambda', 'expressions;'], ['expressions;', 'however,'], ['however,', 'there'], ['there', 'may'], ['may', 'be'], ['be', 'only'], ['only', 'one'], ['one', 'expression'], ['expression', 'in'], ['in', 'each'], ['each', 'body.'], ['body.', 'Conditional'], ['Conditional', 'expressions'], ['expressions', 'are'], ['are', 'written'], ['written', 'as'], ['as', 'x'], ['x', 'if'], ['if', 'c'], ['c', 'else'], ['else', 'y'], ['y', '(different'], ['(different', 'in'], ['in', 'order'], ['order', 'of'], ['of', 'operands'], ['operands', 'from'], ['from', 'the'], ['the', 'c?'], ['c?', 'x:'], ['x:', 'y'], ['y', 'operator'], ['operator', 'common'], ['common', 'to'], ['to', 'many'], ['many', 'other'], ['other', 'languages).'], ['languages).', 'Python'], ['Python', 'makes'], ['makes', 'a'], ['a', 'distinction'], ['distinction', 'between'], ['between', 'lists'], ['lists', 'and'], ['and', 'tuples.'], ['tuples.', 'Lists'], ['Lists', 'are'], ['are', 'written'], ['written', 'as'], ['as', ','], [',', ','], [',', ','], [',', 'are'], ['are', 'mutable,'], ['mutable,', 'and'], ['and', 'cannot'], ['cannot', 'be'], ['be', 'used'], ['used', 'as'], ['as', 'the'], ['the', 'keys'], ['keys', 'of'], ['of', 'dictionaries'], ['dictionaries', '(dictionary'], ['(dictionary', 'keys'], ['keys', 'must'], ['must', 'be'], ['be', 'immutable'], ['immutable', 'in'], ['in', 'Python).'], ['Python).', 'Tuples,'], ['Tuples,', 'written'], ['written', 'as'], ['as', '('], ['(', ','], [',', ','], [',', '),'], ['),', 'are'], ['are', 'immutable'], ['immutable', 'and'], ['and', 'thus'], ['thus', 'can'], ['can', 'be'], ['be', 'used'], ['used', 'as'], ['as', 'keys'], ['keys', 'of'], ['of', 'dictionaries,'], ['dictionaries,', 'provided'], ['provided', 'all'], ['all', 'of'], ['of', 'the'], ['the', \"tuple's\"], [\"tuple's\", 'elements'], ['elements', 'are'], ['are', 'immutable.'], ['immutable.', 'The'], ['The', 'operator'], ['operator', 'can'], ['can', 'be'], ['be', 'used'], ['used', 'to'], ['to', 'concatenate'], ['concatenate', 'two'], ['two', 'tuples,'], ['tuples,', 'which'], ['which', 'does'], ['does', 'not'], ['not', 'directly'], ['directly', 'modify'], ['modify', 'their'], ['their', 'contents,'], ['contents,', 'but'], ['but', 'produces'], ['produces', 'a'], ['a', 'new'], ['new', 'tuple'], ['tuple', 'containing'], ['containing', 'the'], ['the', 'elements'], ['elements', 'of'], ['of', 'both.'], ['both.', 'Thus,'], ['Thus,', 'given'], ['given', 'the'], ['the', 'variable'], ['variable', 't'], ['t', 'initially'], ['initially', 'equal'], ['equal', 'to'], ['to', '('], ['(', ','], [',', ','], [',', '),'], ['),', 'executing'], ['executing', 't'], ['t', '='], ['=', 't'], ['t', '('], ['(', ','], [',', ')'], [')', 'first'], ['first', 'evaluates'], ['evaluates', 't'], ['t', '('], ['(', ','], [',', '),'], ['),', 'which'], ['which', 'yields'], ['yields', '('], ['(', ','], [',', ','], [',', ','], [',', ','], [',', '),'], ['),', 'which'], ['which', 'is'], ['is', 'then'], ['then', 'assigned'], ['assigned', 'back'], ['back', 'to'], ['to', 'tthereby'], ['tthereby', 'effectively'], ['effectively', '\"modifying'], ['\"modifying', 'the'], ['the', 'contents\"'], ['contents\"', 'of'], ['of', 't'], ['t', 'while'], ['while', 'conforming'], ['conforming', 'to'], ['to', 'the'], ['the', 'immutable'], ['immutable', 'nature'], ['nature', 'of'], ['of', 'tuple'], ['tuple', 'objects.'], ['objects.', 'Parentheses'], ['Parentheses', 'are'], ['are', 'optional'], ['optional', 'for'], ['for', 'tuples'], ['tuples', 'in'], ['in', 'unambiguous'], ['unambiguous', 'contexts.'], ['contexts.', 'Python'], ['Python', 'features'], ['features', 'sequence'], ['sequence', 'unpacking'], ['unpacking', 'where'], ['where', 'multiple'], ['multiple', 'expressions,'], ['expressions,', 'each'], ['each', 'evaluating'], ['evaluating', 'to'], ['to', 'anything'], ['anything', 'that'], ['that', 'can'], ['can', 'be'], ['be', 'assigned'], ['assigned', '(to'], ['(to', 'a'], ['a', 'variable,'], ['variable,', 'writable'], ['writable', 'property,'], ['property,', 'etc.)'], ['etc.)', 'are'], ['are', 'associated'], ['associated', 'in'], ['in', 'an'], ['an', 'identical'], ['identical', 'manner'], ['manner', 'to'], ['to', 'that'], ['that', 'forming'], ['forming', 'tuple'], ['tuple', 'literalsand,'], ['literalsand,', 'as'], ['as', 'a'], ['a', 'whole,'], ['whole,', 'are'], ['are', 'put'], ['put', 'on'], ['on', 'the'], ['the', 'left-hand'], ['left-hand', 'side'], ['side', 'of'], ['of', 'the'], ['the', 'equal'], ['equal', 'sign'], ['sign', 'in'], ['in', 'an'], ['an', 'assignment'], ['assignment', 'statement.'], ['statement.', 'The'], ['The', 'statement'], ['statement', 'expects'], ['expects', 'an'], ['an', 'iterable'], ['iterable', 'object'], ['object', 'on'], ['on', 'the'], ['the', 'right-hand'], ['right-hand', 'side'], ['side', 'of'], ['of', 'the'], ['the', 'equal'], ['equal', 'sign'], ['sign', 'that'], ['that', 'produces'], ['produces', 'the'], ['the', 'same'], ['same', 'number'], ['number', 'of'], ['of', 'values'], ['values', 'as'], ['as', 'the'], ['the', 'provided'], ['provided', 'writable'], ['writable', 'expressions;'], ['expressions;', 'when'], ['when', 'iterated'], ['iterated', 'through'], ['through', 'them,'], ['them,', 'it'], ['it', 'assigns'], ['assigns', 'each'], ['each', 'of'], ['of', 'the'], ['the', 'produced'], ['produced', 'values'], ['values', 'to'], ['to', 'the'], ['the', 'corresponding'], ['corresponding', 'expression'], ['expression', 'on'], ['on', 'the'], ['the', 'left.'], ['left.', 'Python'], ['Python', 'has'], ['has', 'a'], ['a', '\"string'], ['\"string', 'format\"'], ['format\"', 'operator'], ['operator', '%'], ['%', 'that'], ['that', 'functions'], ['functions', 'analogously'], ['analogously', 'to'], ['to', 'printf'], ['printf', 'format'], ['format', 'strings'], ['strings', 'in'], ['in', 'Ce.g.'], ['Ce.g.', '\"spam=%s'], ['\"spam=%s', 'eggs=%d\"'], ['eggs=%d\"', '%'], ['%', '(\"blah\",'], ['(\"blah\",', ')'], [')', 'evaluates'], ['evaluates', 'to'], ['to', '\"spam=blah'], ['\"spam=blah', 'eggs='], ['eggs=', '\".'], ['\".', 'In'], ['In', 'Python'], ['Python', '.'], ['.', 'and'], ['and', ','], [',', 'this'], ['this', 'was'], ['was', 'supplemented'], ['supplemented', 'by'], ['by', 'the'], ['the', 'format()'], ['format()', 'method'], ['method', 'of'], ['of', 'the'], ['the', 'str'], ['str', 'class,'], ['class,', 'e.g.'], ['e.g.', '\"spam={'], ['\"spam={', '}'], ['}', 'eggs={'], ['eggs={', '}\".format(\"blah\",'], ['}\".format(\"blah\",', ').'], [').', 'Python'], ['Python', '.'], ['.', 'added'], ['added', '\"f-strings\":'], ['\"f-strings\":', 'spam'], ['spam', '='], ['=', '\"blah\";'], ['\"blah\";', 'eggs'], ['eggs', '='], ['=', ';'], [';', \"f'spam={spam}\"], [\"f'spam={spam}\", \"eggs={eggs}'.\"], [\"eggs={eggs}'.\", 'Strings'], ['Strings', 'in'], ['in', 'Python'], ['Python', 'can'], ['can', 'be'], ['be', 'concatenated'], ['concatenated', 'by'], ['by', '\"adding\"'], ['\"adding\"', 'them'], ['them', '(with'], ['(with', 'the'], ['the', 'same'], ['same', 'operator'], ['operator', 'as'], ['as', 'for'], ['for', 'adding'], ['adding', 'integers'], ['integers', 'and'], ['and', 'floats),'], ['floats),', 'e.g.'], ['e.g.', '\"spam\"'], ['\"spam\"', '\"eggs\"'], ['\"eggs\"', 'returns'], ['returns', '\"spameggs\".'], ['\"spameggs\".', 'If'], ['If', 'strings'], ['strings', 'contain'], ['contain', 'numbers,'], ['numbers,', 'they'], ['they', 'are'], ['are', 'added'], ['added', 'as'], ['as', 'strings'], ['strings', 'rather'], ['rather', 'than'], ['than', 'integers,'], ['integers,', 'e.g.'], ['e.g.', '\"'], ['\"', '\"'], ['\"', '\"'], ['\"', '\"'], ['\"', 'returns'], ['returns', '\"'], ['\"', '\".'], ['\".', 'Python'], ['Python', 'has'], ['has', 'various'], ['various', 'string'], ['string', 'literals:'], ['literals:', 'Delimited'], ['Delimited', 'by'], ['by', 'single'], ['single', 'or'], ['or', 'double'], ['double', 'quote'], ['quote', 'marks;'], ['marks;', 'unlike'], ['unlike', 'in'], ['in', 'Unix'], ['Unix', 'shells,'], ['shells,', 'Perl,'], ['Perl,', 'and'], ['and', 'Perl-influenced'], ['Perl-influenced', 'languages,'], ['languages,', 'single'], ['single', 'and'], ['and', 'double'], ['double', 'quote'], ['quote', 'marks'], ['marks', 'work'], ['work', 'the'], ['the', 'same.'], ['same.', 'Both'], ['Both', 'use'], ['use', 'the'], ['the', 'backslash'], ['backslash', '(\\\\)'], ['(\\\\)', 'as'], ['as', 'an'], ['an', 'escape'], ['escape', 'character.'], ['character.', 'String'], ['String', 'interpolation'], ['interpolation', 'became'], ['became', 'available'], ['available', 'in'], ['in', 'Python'], ['Python', '.'], ['.', 'as'], ['as', '\"formatted'], ['\"formatted', 'string'], ['string', 'literals\".'], ['literals\".', 'Triple-quoted'], ['Triple-quoted', '(beginning'], ['(beginning', 'and'], ['and', 'ending'], ['ending', 'with'], ['with', 'three'], ['three', 'single'], ['single', 'or'], ['or', 'double'], ['double', 'quote'], ['quote', 'marks),'], ['marks),', 'which'], ['which', 'may'], ['may', 'span'], ['span', 'multiple'], ['multiple', 'lines'], ['lines', 'and'], ['and', 'function'], ['function', 'like'], ['like', 'here'], ['here', 'documents'], ['documents', 'in'], ['in', 'shells,'], ['shells,', 'Perl,'], ['Perl,', 'and'], ['and', 'Ruby.'], ['Ruby.', 'Raw'], ['Raw', 'string'], ['string', 'varieties,'], ['varieties,', 'denoted'], ['denoted', 'by'], ['by', 'prefixing'], ['prefixing', 'the'], ['the', 'string'], ['string', 'literal'], ['literal', 'with'], ['with', 'r.'], ['r.', 'Escape'], ['Escape', 'sequences'], ['sequences', 'are'], ['are', 'not'], ['not', 'interpreted;'], ['interpreted;', 'hence'], ['hence', 'raw'], ['raw', 'strings'], ['strings', 'are'], ['are', 'useful'], ['useful', 'where'], ['where', 'literal'], ['literal', 'backslashes'], ['backslashes', 'are'], ['are', 'common,'], ['common,', 'such'], ['such', 'as'], ['as', 'regular'], ['regular', 'expressions'], ['expressions', 'and'], ['and', 'Windows-style'], ['Windows-style', 'paths.'], ['paths.', '(Compare'], ['(Compare', '\"@-quoting\"'], ['\"@-quoting\"', 'in'], ['in', 'C#.)'], ['C#.)', 'Python'], ['Python', 'has'], ['has', 'array'], ['array', 'index'], ['index', 'and'], ['and', 'array'], ['array', 'slicing'], ['slicing', 'expressions'], ['expressions', 'in'], ['in', 'lists,'], ['lists,', 'denoted'], ['denoted', 'as'], ['as', 'a'], ['a', 'key'], ['key', ','], [',', 'a'], ['a', 'start:stop'], ['start:stop', 'or'], ['or', 'a'], ['a', 'start:stop:step'], ['start:stop:step', '.'], ['.', 'Indexes'], ['Indexes', 'are'], ['are', 'zero-based,'], ['zero-based,', 'and'], ['and', 'negative'], ['negative', 'indexes'], ['indexes', 'are'], ['are', 'relative'], ['relative', 'to'], ['to', 'the'], ['the', 'end.'], ['end.', 'Slices'], ['Slices', 'take'], ['take', 'elements'], ['elements', 'from'], ['from', 'the'], ['the', 'start'], ['start', 'index'], ['index', 'up'], ['up', 'to,'], ['to,', 'but'], ['but', 'not'], ['not', 'including,'], ['including,', 'the'], ['the', 'stop'], ['stop', 'index.'], ['index.', 'The'], ['The', 'third'], ['third', 'slice'], ['slice', 'parameter'], ['parameter', 'called'], ['called', 'step'], ['step', 'or'], ['or', 'stride,'], ['stride,', 'allows'], ['allows', 'elements'], ['elements', 'to'], ['to', 'be'], ['be', 'skipped'], ['skipped', 'and'], ['and', 'reversed.'], ['reversed.', 'Slice'], ['Slice', 'indexes'], ['indexes', 'may'], ['may', 'be'], ['be', 'omittedfor'], ['omittedfor', 'example,'], ['example,', 'a'], ['a', ':'], [':', 'returns'], ['returns', 'a'], ['a', 'copy'], ['copy', 'of'], ['of', 'the'], ['the', 'entire'], ['entire', 'list.'], ['list.', 'Each'], ['Each', 'element'], ['element', 'of'], ['of', 'a'], ['a', 'slice'], ['slice', 'is'], ['is', 'a'], ['a', 'shallow'], ['shallow', 'copy.'], ['copy.', 'In'], ['In', 'Python,'], ['Python,', 'a'], ['a', 'distinction'], ['distinction', 'between'], ['between', 'expressions'], ['expressions', 'and'], ['and', 'statements'], ['statements', 'is'], ['is', 'rigidly'], ['rigidly', 'enforced,'], ['enforced,', 'in'], ['in', 'contrast'], ['contrast', 'to'], ['to', 'languages'], ['languages', 'such'], ['such', 'as'], ['as', 'Common'], ['Common', 'Lisp,'], ['Lisp,', 'Scheme,'], ['Scheme,', 'or'], ['or', 'Ruby.'], ['Ruby.', 'This'], ['This', 'leads'], ['leads', 'to'], ['to', 'duplicating'], ['duplicating', 'some'], ['some', 'functionality.'], ['functionality.', 'For'], ['For', 'example:'], ['example:', 'List'], ['List', 'comprehensions'], ['comprehensions', 'vs.'], ['vs.', 'for-loops'], ['for-loops', 'Conditional'], ['Conditional', 'expressions'], ['expressions', 'vs.'], ['vs.', 'if'], ['if', 'blocks'], ['blocks', 'The'], ['The', 'eval()'], ['eval()', 'vs.'], ['vs.', 'exec()'], ['exec()', 'built-in'], ['built-in', 'functions'], ['functions', '(in'], ['(in', 'Python'], ['Python', ','], [',', 'exec'], ['exec', 'is'], ['is', 'a'], ['a', 'statement);'], ['statement);', 'the'], ['the', 'former'], ['former', 'is'], ['is', 'for'], ['for', 'expressions,'], ['expressions,', 'the'], ['the', 'latter'], ['latter', 'is'], ['is', 'for'], ['for', 'statements'], ['statements', 'Statements'], ['Statements', 'cannot'], ['cannot', 'be'], ['be', 'a'], ['a', 'part'], ['part', 'of'], ['of', 'an'], ['an', 'expressionso'], ['expressionso', 'list'], ['list', 'and'], ['and', 'other'], ['other', 'comprehensions'], ['comprehensions', 'or'], ['or', 'lambda'], ['lambda', 'expressions,'], ['expressions,', 'all'], ['all', 'being'], ['being', 'expressions,'], ['expressions,', 'cannot'], ['cannot', 'contain'], ['contain', 'statements.'], ['statements.', 'A'], ['A', 'particular'], ['particular', 'case'], ['case', 'is'], ['is', 'that'], ['that', 'an'], ['an', 'assignment'], ['assignment', 'statement'], ['statement', 'such'], ['such', 'as'], ['as', 'a'], ['a', '='], ['=', 'cannot'], ['cannot', 'form'], ['form', 'part'], ['part', 'of'], ['of', 'the'], ['the', 'conditional'], ['conditional', 'expression'], ['expression', 'of'], ['of', 'a'], ['a', 'conditional'], ['conditional', 'statement.'], ['statement.', 'This'], ['This', 'has'], ['has', 'the'], ['the', 'advantage'], ['advantage', 'of'], ['of', 'avoiding'], ['avoiding', 'a'], ['a', 'classic'], ['classic', 'C'], ['C', 'error'], ['error', 'of'], ['of', 'mistaking'], ['mistaking', 'an'], ['an', 'assignment'], ['assignment', 'operator'], ['operator', '='], ['=', 'for'], ['for', 'an'], ['an', 'equality'], ['equality', 'operator'], ['operator', '=='], ['==', 'in'], ['in', 'conditions:'], ['conditions:', 'if'], ['if', '(c'], ['(c', '='], ['=', ')'], [')', '{'], ['{', '...'], ['...', '}'], ['}', 'is'], ['is', 'syntactically'], ['syntactically', 'valid'], ['valid', '(but'], ['(but', 'probably'], ['probably', 'unintended)'], ['unintended)', 'C'], ['C', 'code,'], ['code,', 'but'], ['but', 'if'], ['if', 'c'], ['c', '='], ['=', ':'], [':', '...'], ['...', 'causes'], ['causes', 'a'], ['a', 'syntax'], ['syntax', 'error'], ['error', 'in'], ['in', 'Python.'], ['Python.', 'Methods'], ['Methods', 'Methods'], ['Methods', 'on'], ['on', 'objects'], ['objects', 'are'], ['are', 'functions'], ['functions', 'attached'], ['attached', 'to'], ['to', 'the'], ['the', \"object's\"], [\"object's\", 'class;'], ['class;', 'the'], ['the', 'syntax'], ['syntax', 'instance.method(argument)'], ['instance.method(argument)', 'is,'], ['is,', 'for'], ['for', 'normal'], ['normal', 'methods'], ['methods', 'and'], ['and', 'functions,'], ['functions,', 'syntactic'], ['syntactic', 'sugar'], ['sugar', 'for'], ['for', 'Class.method(instance,'], ['Class.method(instance,', 'argument).'], ['argument).', 'Python'], ['Python', 'methods'], ['methods', 'have'], ['have', 'an'], ['an', 'explicit'], ['explicit', 'self'], ['self', 'parameter'], ['parameter', 'to'], ['to', 'access'], ['access', 'instance'], ['instance', 'data,'], ['data,', 'in'], ['in', 'contrast'], ['contrast', 'to'], ['to', 'the'], ['the', 'implicit'], ['implicit', 'self'], ['self', '(or'], ['(or', 'this)'], ['this)', 'in'], ['in', 'some'], ['some', 'other'], ['other', 'object-oriented'], ['object-oriented', 'programming'], ['programming', 'languages'], ['languages', '(e.g.,'], ['(e.g.,', 'C'], ['C', ','], [',', 'Java,'], ['Java,', 'Objective-C,'], ['Objective-C,', 'Ruby).'], ['Ruby).', 'Python'], ['Python', 'also'], ['also', 'provides'], ['provides', 'methods,'], ['methods,', 'often'], ['often', 'called'], ['called', 'dunder'], ['dunder', 'methods'], ['methods', '(due'], ['(due', 'to'], ['to', 'their'], ['their', 'names'], ['names', 'beginning'], ['beginning', 'and'], ['and', 'ending'], ['ending', 'with'], ['with', 'double-underscores),'], ['double-underscores),', 'to'], ['to', 'allow'], ['allow', 'user-defined'], ['user-defined', 'classes'], ['classes', 'to'], ['to', 'modify'], ['modify', 'how'], ['how', 'they'], ['they', 'are'], ['are', 'handled'], ['handled', 'by'], ['by', 'native'], ['native', 'operations'], ['operations', 'including'], ['including', 'length,'], ['length,', 'comparison,'], ['comparison,', 'in'], ['in', 'arithmetic'], ['arithmetic', 'operations'], ['operations', 'and'], ['and', 'type'], ['type', 'conversion.'], ['conversion.', 'Typing'], ['Typing', 'The'], ['The', 'standard'], ['standard', 'type'], ['type', 'hierarchy'], ['hierarchy', 'in'], ['in', 'Python'], ['Python', 'Python'], ['Python', 'uses'], ['uses', 'duck'], ['duck', 'typing'], ['typing', 'and'], ['and', 'has'], ['has', 'typed'], ['typed', 'objects'], ['objects', 'but'], ['but', 'untyped'], ['untyped', 'variable'], ['variable', 'names.'], ['names.', 'Type'], ['Type', 'constraints'], ['constraints', 'are'], ['are', 'not'], ['not', 'checked'], ['checked', 'at'], ['at', 'compile'], ['compile', 'time;'], ['time;', 'rather,'], ['rather,', 'operations'], ['operations', 'on'], ['on', 'an'], ['an', 'object'], ['object', 'may'], ['may', 'fail,'], ['fail,', 'signifying'], ['signifying', 'that'], ['that', 'it'], ['it', 'is'], ['is', 'not'], ['not', 'of'], ['of', 'a'], ['a', 'suitable'], ['suitable', 'type.'], ['type.', 'Despite'], ['Despite', 'being'], ['being', 'dynamically'], ['dynamically', 'typed,'], ['typed,', 'Python'], ['Python', 'is'], ['is', 'strongly'], ['strongly', 'typed,'], ['typed,', 'forbidding'], ['forbidding', 'operations'], ['operations', 'that'], ['that', 'are'], ['are', 'not'], ['not', 'well-defined'], ['well-defined', '(for'], ['(for', 'example,'], ['example,', 'adding'], ['adding', 'a'], ['a', 'number'], ['number', 'to'], ['to', 'a'], ['a', 'string)'], ['string)', 'rather'], ['rather', 'than'], ['than', 'silently'], ['silently', 'attempting'], ['attempting', 'to'], ['to', 'make'], ['make', 'sense'], ['sense', 'of'], ['of', 'them.'], ['them.', 'Python'], ['Python', 'allows'], ['allows', 'programmers'], ['programmers', 'to'], ['to', 'define'], ['define', 'their'], ['their', 'own'], ['own', 'types'], ['types', 'using'], ['using', 'classes,'], ['classes,', 'most'], ['most', 'often'], ['often', 'used'], ['used', 'for'], ['for', 'object-oriented'], ['object-oriented', 'programming.'], ['programming.', 'New'], ['New', 'instances'], ['instances', 'of'], ['of', 'classes'], ['classes', 'are'], ['are', 'constructed'], ['constructed', 'by'], ['by', 'calling'], ['calling', 'the'], ['the', 'class'], ['class', '(for'], ['(for', 'example,'], ['example,', 'SpamClass()'], ['SpamClass()', 'or'], ['or', 'EggsClass()),'], ['EggsClass()),', 'and'], ['and', 'the'], ['the', 'classes'], ['classes', 'are'], ['are', 'instances'], ['instances', 'of'], ['of', 'the'], ['the', 'metaclass'], ['metaclass', 'type'], ['type', '(itself'], ['(itself', 'an'], ['an', 'instance'], ['instance', 'of'], ['of', 'itself),'], ['itself),', 'allowing'], ['allowing', 'metaprogramming'], ['metaprogramming', 'and'], ['and', 'reflection.'], ['reflection.', 'Before'], ['Before', 'version'], ['version', '.'], ['.', ','], [',', 'Python'], ['Python', 'had'], ['had', 'two'], ['two', 'kinds'], ['kinds', 'of'], ['of', 'classes'], ['classes', '(both'], ['(both', 'using'], ['using', 'the'], ['the', 'same'], ['same', 'syntax):'], ['syntax):', 'old-style'], ['old-style', 'and'], ['and', 'new-style,'], ['new-style,', 'current'], ['current', 'Python'], ['Python', 'versions'], ['versions', 'only'], ['only', 'support'], ['support', 'the'], ['the', 'semantics'], ['semantics', 'new'], ['new', 'style.'], ['style.', 'Python'], ['Python', 'supports'], ['supports', 'gradual'], ['gradual', 'typing.'], ['typing.', \"Python's\"], [\"Python's\", 'syntax'], ['syntax', 'allows'], ['allows', 'specifying'], ['specifying', 'static'], ['static', 'types,'], ['types,', 'but'], ['but', 'they'], ['they', 'are'], ['are', 'not'], ['not', 'checked'], ['checked', 'in'], ['in', 'the'], ['the', 'default'], ['default', 'implementation,'], ['implementation,', 'CPython.'], ['CPython.', 'An'], ['An', 'experimental'], ['experimental', 'optional'], ['optional', 'static'], ['static', 'type-checker,'], ['type-checker,', 'mypy,'], ['mypy,', 'supports'], ['supports', 'compile-time'], ['compile-time', 'type'], ['type', 'checking.'], ['checking.', 'Summary'], ['Summary', 'of'], ['of', 'Python'], ['Python', \"'s\"], [\"'s\", 'built-in'], ['built-in', 'types'], ['types', 'Type'], ['Type', 'Mutability'], ['Mutability', 'Description'], ['Description', 'Syntax'], ['Syntax', 'examples'], ['examples', 'bool'], ['bool', 'immutable'], ['immutable', 'Boolean'], ['Boolean', 'value'], ['value', 'TrueFalse'], ['TrueFalse', 'bytearray'], ['bytearray', 'mutable'], ['mutable', 'Sequence'], ['Sequence', 'of'], ['of', 'bytes'], ['bytes', \"bytearray(b'Some\"], [\"bytearray(b'Some\", 'ASCII\\')bytearray(b\"Some'], ['ASCII\\')bytearray(b\"Some', 'ASCII\")bytearray('], ['ASCII\")bytearray(', ','], [',', ','], [',', ','], [',', ')'], [')', 'bytes'], ['bytes', 'immutable'], ['immutable', 'Sequence'], ['Sequence', 'of'], ['of', 'bytes'], ['bytes', \"b'Some\"], [\"b'Some\", 'ASCII\\'b\"Some'], ['ASCII\\'b\"Some', 'ASCII\"bytes('], ['ASCII\"bytes(', ','], [',', ','], [',', ','], [',', ')'], [')', 'complex'], ['complex', 'immutable'], ['immutable', 'Complex'], ['Complex', 'number'], ['number', 'with'], ['with', 'real'], ['real', 'and'], ['and', 'imaginary'], ['imaginary', 'parts'], ['parts', '.'], ['.', 'j'], ['j', '.'], ['.', 'j'], ['j', 'dict'], ['dict', 'mutable'], ['mutable', 'Associative'], ['Associative', 'array'], ['array', '(or'], ['(or', 'dictionary)'], ['dictionary)', 'of'], ['of', 'key'], ['key', 'and'], ['and', 'value'], ['value', 'pairs;'], ['pairs;', 'can'], ['can', 'contain'], ['contain', 'mixed'], ['mixed', 'types'], ['types', '(keys'], ['(keys', 'and'], ['and', 'values),'], ['values),', 'keys'], ['keys', 'must'], ['must', 'be'], ['be', 'a'], ['a', 'hashable'], ['hashable', 'type'], ['type', \"{'key\"], [\"{'key\", \"':\"], [\"':\", '.'], ['.', ','], [',', ':'], [':', 'False}{}'], ['False}{}', 'types.EllipsisType'], ['types.EllipsisType', 'immutable'], ['immutable', 'An'], ['An', 'ellipsis'], ['ellipsis', 'placeholder'], ['placeholder', 'to'], ['to', 'be'], ['be', 'used'], ['used', 'as'], ['as', 'an'], ['an', 'index'], ['index', 'in'], ['in', 'NumPy'], ['NumPy', 'arrays'], ['arrays', '...Ellipsis'], ['...Ellipsis', 'float'], ['float', 'immutable'], ['immutable', 'Double-precision'], ['Double-precision', 'floating-point'], ['floating-point', 'number.'], ['number.', 'The'], ['The', 'precision'], ['precision', 'is'], ['is', 'machine-dependent'], ['machine-dependent', 'but'], ['but', 'in'], ['in', 'practice'], ['practice', 'is'], ['is', 'generally'], ['generally', 'implemented'], ['implemented', 'as'], ['as', 'a'], ['a', '-bit'], ['-bit', 'IEEE'], ['IEEE', 'number'], ['number', 'with'], ['with', 'bits'], ['bits', 'of'], ['of', 'precision.'], ['precision.', '.'], ['.', 'frozenset'], ['frozenset', 'immutable'], ['immutable', 'Unordered'], ['Unordered', 'set,'], ['set,', 'contains'], ['contains', 'no'], ['no', 'duplicates;'], ['duplicates;', 'can'], ['can', 'contain'], ['contain', 'mixed'], ['mixed', 'types,'], ['types,', 'if'], ['if', 'hashable'], ['hashable', 'frozenset('], ['frozenset(', '.'], ['.', ','], [',', \"'string',\"], [\"'string',\", 'True'], ['True', ')'], [')', 'int'], ['int', 'immutable'], ['immutable', 'Integer'], ['Integer', 'of'], ['of', 'unlimited'], ['unlimited', 'magnitude'], ['magnitude', 'list'], ['list', 'mutable'], ['mutable', 'List,'], ['List,', 'can'], ['can', 'contain'], ['contain', 'mixed'], ['mixed', 'types'], ['types', '.'], ['.', ','], [',', \"'string',\"], [\"'string',\", 'True'], ['True', 'types.NoneType'], ['types.NoneType', 'immutable'], ['immutable', 'An'], ['An', 'object'], ['object', 'representing'], ['representing', 'the'], ['the', 'absence'], ['absence', 'of'], ['of', 'a'], ['a', 'value,'], ['value,', 'often'], ['often', 'called'], ['called', 'null'], ['null', 'in'], ['in', 'other'], ['other', 'languages'], ['languages', 'None'], ['None', 'types.NotImplementedType'], ['types.NotImplementedType', 'immutable'], ['immutable', 'A'], ['A', 'placeholder'], ['placeholder', 'that'], ['that', 'can'], ['can', 'be'], ['be', 'returned'], ['returned', 'from'], ['from', 'overloaded'], ['overloaded', 'operators'], ['operators', 'to'], ['to', 'indicate'], ['indicate', 'unsupported'], ['unsupported', 'operand'], ['operand', 'types.'], ['types.', 'NotImplemented'], ['NotImplemented', 'range'], ['range', 'immutable'], ['immutable', 'An'], ['An', 'immutable'], ['immutable', 'sequence'], ['sequence', 'of'], ['of', 'numbers'], ['numbers', 'commonly'], ['commonly', 'used'], ['used', 'for'], ['for', 'looping'], ['looping', 'a'], ['a', 'specific'], ['specific', 'number'], ['number', 'of'], ['of', 'times'], ['times', 'in'], ['in', 'for'], ['for', 'loops'], ['loops', 'range(-'], ['range(-', ','], [',', ')range('], [')range(', ','], [',', '-'], ['-', ','], [',', '-'], ['-', ')'], [')', 'set'], ['set', 'mutable'], ['mutable', 'Unordered'], ['Unordered', 'set,'], ['set,', 'contains'], ['contains', 'no'], ['no', 'duplicates;'], ['duplicates;', 'can'], ['can', 'contain'], ['contain', 'mixed'], ['mixed', 'types,'], ['types,', 'if'], ['if', 'hashable'], ['hashable', '{'], ['{', '.'], ['.', ','], [',', \"'string',\"], [\"'string',\", 'True}set()'], ['True}set()', 'str'], ['str', 'immutable'], ['immutable', 'A'], ['A', 'character'], ['character', 'string:'], ['string:', 'sequence'], ['sequence', 'of'], ['of', 'Unicode'], ['Unicode', 'codepoints'], ['codepoints', '\\'Wikipedia\\'\"Wikipedia\"\"\"\"Spanning'], ['\\'Wikipedia\\'\"Wikipedia\"\"\"\"Spanning', 'multiple'], ['multiple', 'lines\"\"\"'], ['lines\"\"\"', 'Spanning'], ['Spanning', 'multiple'], ['multiple', 'lines'], ['lines', 'tuple'], ['tuple', 'immutable'], ['immutable', 'Can'], ['Can', 'contain'], ['contain', 'mixed'], ['mixed', 'types'], ['types', '('], ['(', '.'], ['.', ','], [',', \"'string',\"], [\"'string',\", \"True)('single\"], [\"True)('single\", \"element',)()\"], [\"element',)()\", 'Arithmetic'], ['Arithmetic', 'operations'], ['operations', 'Python'], ['Python', 'has'], ['has', 'the'], ['the', 'usual'], ['usual', 'symbols'], ['symbols', 'for'], ['for', 'arithmetic'], ['arithmetic', 'operators'], ['operators', '('], ['(', ','], [',', '-,'], ['-,', '*,'], ['*,', '/),'], ['/),', 'the'], ['the', 'floor'], ['floor', 'division'], ['division', 'operator'], ['operator', '//'], ['//', 'and'], ['and', 'the'], ['the', 'modulo'], ['modulo', 'operation'], ['operation', '%'], ['%', '(where'], ['(where', 'the'], ['the', 'remainder'], ['remainder', 'can'], ['can', 'be'], ['be', 'negative,'], ['negative,', 'e.g.'], ['e.g.', '%'], ['%', '-'], ['-', '=='], ['==', '-'], ['-', ').'], [').', 'It'], ['It', 'also'], ['also', 'has'], ['has', '**'], ['**', 'for'], ['for', 'exponentiation,'], ['exponentiation,', 'e.g.'], ['e.g.', '**'], ['**', '=='], ['==', 'and'], ['and', '**'], ['**', '.'], ['.', '=='], ['==', '.'], ['.', ','], [',', 'and'], ['and', 'a'], ['a', 'matrixmultiplication'], ['matrixmultiplication', 'operator'], ['operator', '@'], ['@', '.'], ['.', 'These'], ['These', 'operators'], ['operators', 'work'], ['work', 'like'], ['like', 'in'], ['in', 'traditional'], ['traditional', 'math;'], ['math;', 'with'], ['with', 'the'], ['the', 'same'], ['same', 'precedence'], ['precedence', 'rules,'], ['rules,', 'the'], ['the', 'operators'], ['operators', 'infix'], ['infix', '('], ['(', 'and'], ['and', '-'], ['-', 'can'], ['can', 'also'], ['also', 'be'], ['be', 'unary'], ['unary', 'to'], ['to', 'represent'], ['represent', 'positive'], ['positive', 'and'], ['and', 'negative'], ['negative', 'numbers'], ['numbers', 'respectively).'], ['respectively).', 'The'], ['The', 'division'], ['division', 'between'], ['between', 'integers'], ['integers', 'produces'], ['produces', 'floating-point'], ['floating-point', 'results.'], ['results.', 'The'], ['The', 'behavior'], ['behavior', 'of'], ['of', 'division'], ['division', 'has'], ['has', 'changed'], ['changed', 'significantly'], ['significantly', 'over'], ['over', 'time:'], ['time:', 'Current'], ['Current', 'Python'], ['Python', '(i.e.'], ['(i.e.', 'since'], ['since', '.'], ['.', ')'], [')', 'changed'], ['changed', '/'], ['/', 'to'], ['to', 'always'], ['always', 'be'], ['be', 'floating-point'], ['floating-point', 'division,'], ['division,', 'e.g.'], ['e.g.', '/'], ['/', '=='], ['==', '.'], ['.', '.'], ['.', 'The'], ['The', 'floor'], ['floor', 'division'], ['division', '//'], ['//', 'operator'], ['operator', 'was'], ['was', 'introduced.'], ['introduced.', 'So'], ['So', '//'], ['//', '=='], ['==', ','], [',', '-'], ['-', '//'], ['//', '=='], ['==', '-'], ['-', ','], [',', '.'], ['.', '//'], ['//', '=='], ['==', '.'], ['.', 'and'], ['and', '-'], ['-', '.'], ['.', '//'], ['//', '=='], ['==', '-'], ['-', '.'], ['.', '.'], ['.', 'Adding'], ['Adding', 'from'], ['from', '__future__'], ['__future__', 'import'], ['import', 'division'], ['division', 'causes'], ['causes', 'a'], ['a', 'module'], ['module', 'used'], ['used', 'in'], ['in', 'Python'], ['Python', '.'], ['.', 'to'], ['to', 'use'], ['use', 'Python'], ['Python', '.'], ['.', 'rules'], ['rules', 'for'], ['for', 'division'], ['division', '(see'], ['(see', 'above).'], ['above).', 'In'], ['In', 'Python'], ['Python', 'terms,'], ['terms,', '/'], ['/', 'is'], ['is', 'true'], ['true', 'division'], ['division', '(or'], ['(or', 'simply'], ['simply', 'division),'], ['division),', 'and'], ['and', '//'], ['//', 'is'], ['is', 'floor'], ['floor', 'division.'], ['division.', '/'], ['/', 'before'], ['before', 'version'], ['version', '.'], ['.', 'is'], ['is', 'classic'], ['classic', 'division.'], ['division.', 'Rounding'], ['Rounding', 'towards'], ['towards', 'negative'], ['negative', 'infinity,'], ['infinity,', 'though'], ['though', 'different'], ['different', 'from'], ['from', 'most'], ['most', 'languages,'], ['languages,', 'adds'], ['adds', 'consistency.'], ['consistency.', 'For'], ['For', 'instance,'], ['instance,', 'it'], ['it', 'means'], ['means', 'that'], ['that', 'the'], ['the', 'equation'], ['equation', '(a'], ['(a', 'b)//b'], ['b)//b', '=='], ['==', 'a//b'], ['a//b', 'is'], ['is', 'always'], ['always', 'true.'], ['true.', 'It'], ['It', 'also'], ['also', 'means'], ['means', 'that'], ['that', 'the'], ['the', 'equation'], ['equation', 'b*(a//b)'], ['b*(a//b)', 'a%b'], ['a%b', '=='], ['==', 'a'], ['a', 'is'], ['is', 'valid'], ['valid', 'for'], ['for', 'both'], ['both', 'positive'], ['positive', 'and'], ['and', 'negative'], ['negative', 'values'], ['values', 'of'], ['of', 'a.'], ['a.', 'However,'], ['However,', 'maintaining'], ['maintaining', 'the'], ['the', 'validity'], ['validity', 'of'], ['of', 'this'], ['this', 'equation'], ['equation', 'means'], ['means', 'that'], ['that', 'while'], ['while', 'the'], ['the', 'result'], ['result', 'of'], ['of', 'a%b'], ['a%b', 'is,'], ['is,', 'as'], ['as', 'expected,'], ['expected,', 'in'], ['in', 'the'], ['the', 'half-open'], ['half-open', 'interval'], ['interval', ','], [',', 'b),'], ['b),', 'where'], ['where', 'b'], ['b', 'is'], ['is', 'a'], ['a', 'positive'], ['positive', 'integer,'], ['integer,', 'it'], ['it', 'has'], ['has', 'to'], ['to', 'lie'], ['lie', 'in'], ['in', 'the'], ['the', 'interval'], ['interval', '(b,'], ['(b,', 'when'], ['when', 'b'], ['b', 'is'], ['is', 'negative.'], ['negative.', 'Python'], ['Python', 'provides'], ['provides', 'a'], ['a', 'round'], ['round', 'function'], ['function', 'for'], ['for', 'rounding'], ['rounding', 'a'], ['a', 'float'], ['float', 'to'], ['to', 'the'], ['the', 'nearest'], ['nearest', 'integer.'], ['integer.', 'For'], ['For', 'tie-breaking,'], ['tie-breaking,', 'Python'], ['Python', 'uses'], ['uses', 'round'], ['round', 'to'], ['to', 'even:'], ['even:', 'round('], ['round(', '.'], ['.', ')'], [')', 'and'], ['and', 'round('], ['round(', '.'], ['.', ')'], [')', 'both'], ['both', 'produce'], ['produce', '.'], ['.', 'Versions'], ['Versions', 'before'], ['before', 'used'], ['used', 'round-away-from-zero:'], ['round-away-from-zero:', 'round('], ['round(', '.'], ['.', ')'], [')', 'is'], ['is', '.'], ['.', ','], [',', 'round(-'], ['round(-', '.'], ['.', ')'], [')', 'is'], ['is', '.'], ['.', '.'], ['.', 'Python'], ['Python', 'allows'], ['allows', 'boolean'], ['boolean', 'expressions'], ['expressions', 'with'], ['with', 'multiple'], ['multiple', 'equality'], ['equality', 'relations'], ['relations', 'in'], ['in', 'a'], ['a', 'manner'], ['manner', 'that'], ['that', 'is'], ['is', 'consistent'], ['consistent', 'with'], ['with', 'general'], ['general', 'use'], ['use', 'in'], ['in', 'mathematics.'], ['mathematics.', 'For'], ['For', 'example,'], ['example,', 'the'], ['the', 'expression'], ['expression', 'a'], ['a', '<'], ['<', 'b'], ['b', '<'], ['<', 'c'], ['c', 'tests'], ['tests', 'whether'], ['whether', 'a'], ['a', 'is'], ['is', 'less'], ['less', 'than'], ['than', 'b'], ['b', 'and'], ['and', 'b'], ['b', 'is'], ['is', 'less'], ['less', 'than'], ['than', 'c.'], ['c.', 'C-derived'], ['C-derived', 'languages'], ['languages', 'interpret'], ['interpret', 'this'], ['this', 'expression'], ['expression', 'differently:'], ['differently:', 'in'], ['in', 'C,'], ['C,', 'the'], ['the', 'expression'], ['expression', 'would'], ['would', 'first'], ['first', 'evaluate'], ['evaluate', 'a'], ['a', '<'], ['<', 'b,'], ['b,', 'resulting'], ['resulting', 'in'], ['in', 'or'], ['or', ','], [',', 'and'], ['and', 'that'], ['that', 'result'], ['result', 'would'], ['would', 'then'], ['then', 'be'], ['be', 'compared'], ['compared', 'with'], ['with', 'c.'], ['c.', 'Python'], ['Python', 'uses'], ['uses', 'arbitrary-precision'], ['arbitrary-precision', 'arithmetic'], ['arithmetic', 'for'], ['for', 'all'], ['all', 'integer'], ['integer', 'operations.'], ['operations.', 'The'], ['The', 'Decimal'], ['Decimal', 'type/class'], ['type/class', 'in'], ['in', 'the'], ['the', 'decimal'], ['decimal', 'module'], ['module', 'provides'], ['provides', 'decimal'], ['decimal', 'floating-point'], ['floating-point', 'numbers'], ['numbers', 'to'], ['to', 'a'], ['a', 'pre-defined'], ['pre-defined', 'arbitrary'], ['arbitrary', 'precision'], ['precision', 'and'], ['and', 'several'], ['several', 'rounding'], ['rounding', 'modes.'], ['modes.', 'The'], ['The', 'Fraction'], ['Fraction', 'class'], ['class', 'in'], ['in', 'the'], ['the', 'fractions'], ['fractions', 'module'], ['module', 'provides'], ['provides', 'arbitrary'], ['arbitrary', 'precision'], ['precision', 'for'], ['for', 'rational'], ['rational', 'numbers.'], ['numbers.', 'Due'], ['Due', 'to'], ['to', \"Python's\"], [\"Python's\", 'extensive'], ['extensive', 'mathematics'], ['mathematics', 'library,'], ['library,', 'and'], ['and', 'the'], ['the', 'third-party'], ['third-party', 'library'], ['library', 'NumPy'], ['NumPy', 'that'], ['that', 'further'], ['further', 'extends'], ['extends', 'the'], ['the', 'native'], ['native', 'capabilities,'], ['capabilities,', 'it'], ['it', 'is'], ['is', 'frequently'], ['frequently', 'used'], ['used', 'as'], ['as', 'a'], ['a', 'scientific'], ['scientific', 'scripting'], ['scripting', 'language'], ['language', 'to'], ['to', 'aid'], ['aid', 'in'], ['in', 'problems'], ['problems', 'such'], ['such', 'as'], ['as', 'numerical'], ['numerical', 'data'], ['data', 'processing'], ['processing', 'and'], ['and', 'manipulation.'], ['manipulation.', 'Programming'], ['Programming', 'examples'], ['examples', 'Hello'], ['Hello', 'world'], ['world', 'program:'], ['program:', \"print('Hello,\"], [\"print('Hello,\", \"world!')\"], [\"world!')\", 'Program'], ['Program', 'to'], ['to', 'calculate'], ['calculate', 'the'], ['the', 'factorial'], ['factorial', 'of'], ['of', 'a'], ['a', 'positive'], ['positive', 'integer:'], ['integer:', 'n'], ['n', '='], ['=', \"int(input('Type\"], [\"int(input('Type\", 'a'], ['a', 'number,'], ['number,', 'and'], ['and', 'its'], ['its', 'factorial'], ['factorial', 'will'], ['will', 'be'], ['be', 'printed:'], ['printed:', \"'))\"], [\"'))\", 'if'], ['if', 'n'], ['n', '<'], ['<', ':'], [':', 'raise'], ['raise', \"ValueError('You\"], [\"ValueError('You\", 'must'], ['must', 'enter'], ['enter', 'a'], ['a', 'non-negative'], ['non-negative', \"integer')\"], [\"integer')\", 'factorial'], ['factorial', '='], ['=', 'for'], ['for', 'i'], ['i', 'in'], ['in', 'range('], ['range(', ','], [',', 'n'], ['n', '):'], ['):', 'factorial'], ['factorial', '*='], ['*=', 'i'], ['i', 'print(factorial)'], ['print(factorial)', 'Libraries'], ['Libraries', \"Python's\"], [\"Python's\", 'large'], ['large', 'standard'], ['standard', 'library'], ['library', 'provides'], ['provides', 'tools'], ['tools', 'suited'], ['suited', 'to'], ['to', 'many'], ['many', 'tasks'], ['tasks', 'and'], ['and', 'is'], ['is', 'commonly'], ['commonly', 'cited'], ['cited', 'as'], ['as', 'one'], ['one', 'of'], ['of', 'its'], ['its', 'greatest'], ['greatest', 'strengths.'], ['strengths.', 'For'], ['For', 'Internet-facing'], ['Internet-facing', 'applications,'], ['applications,', 'many'], ['many', 'standard'], ['standard', 'formats'], ['formats', 'and'], ['and', 'protocols'], ['protocols', 'such'], ['such', 'as'], ['as', 'MIME'], ['MIME', 'and'], ['and', 'HTTP'], ['HTTP', 'are'], ['are', 'supported.'], ['supported.', 'It'], ['It', 'includes'], ['includes', 'modules'], ['modules', 'for'], ['for', 'creating'], ['creating', 'graphical'], ['graphical', 'user'], ['user', 'interfaces,'], ['interfaces,', 'connecting'], ['connecting', 'to'], ['to', 'relational'], ['relational', 'databases,'], ['databases,', 'generating'], ['generating', 'pseudorandom'], ['pseudorandom', 'numbers,'], ['numbers,', 'arithmetic'], ['arithmetic', 'with'], ['with', 'arbitrary-precision'], ['arbitrary-precision', 'decimals,'], ['decimals,', 'manipulating'], ['manipulating', 'regular'], ['regular', 'expressions,'], ['expressions,', 'and'], ['and', 'unit'], ['unit', 'testing.'], ['testing.', 'Some'], ['Some', 'parts'], ['parts', 'of'], ['of', 'the'], ['the', 'standard'], ['standard', 'library'], ['library', 'are'], ['are', 'covered'], ['covered', 'by'], ['by', 'specificationsfor'], ['specificationsfor', 'example,'], ['example,', 'the'], ['the', 'Web'], ['Web', 'Server'], ['Server', 'Gateway'], ['Gateway', 'Interface'], ['Interface', '(WSGI)'], ['(WSGI)', 'implementation'], ['implementation', 'wsgiref'], ['wsgiref', 'follows'], ['follows', 'PEP'], ['PEP', 'but'], ['but', 'most'], ['most', 'are'], ['are', 'specified'], ['specified', 'by'], ['by', 'their'], ['their', 'code,'], ['code,', 'internal'], ['internal', 'documentation,'], ['documentation,', 'and'], ['and', 'test'], ['test', 'suites.'], ['suites.', 'However,'], ['However,', 'because'], ['because', 'most'], ['most', 'of'], ['of', 'the'], ['the', 'standard'], ['standard', 'library'], ['library', 'is'], ['is', 'cross-platform'], ['cross-platform', 'Python'], ['Python', 'code,'], ['code,', 'only'], ['only', 'a'], ['a', 'few'], ['few', 'modules'], ['modules', 'need'], ['need', 'altering'], ['altering', 'or'], ['or', 'rewriting'], ['rewriting', 'for'], ['for', 'variant'], ['variant', 'implementations.'], ['implementations.', 'As'], ['As', 'of'], ['of', 'November'], ['November', ','], [',', 'update'], ['update', 'the'], ['the', 'Python'], ['Python', 'Package'], ['Package', 'Index'], ['Index', '(PyPI),'], ['(PyPI),', 'the'], ['the', 'official'], ['official', 'repository'], ['repository', 'for'], ['for', 'third-party'], ['third-party', 'Python'], ['Python', 'software,'], ['software,', 'contains'], ['contains', 'over'], ['over', ','], [',', 'packages'], ['packages', 'with'], ['with', 'a'], ['a', 'wide'], ['wide', 'range'], ['range', 'of'], ['of', 'functionality,'], ['functionality,', 'including:'], ['including:', 'Automation'], ['Automation', 'Data'], ['Data', 'analytics'], ['analytics', 'Databases'], ['Databases', 'Documentation'], ['Documentation', 'Graphical'], ['Graphical', 'user'], ['user', 'interfaces'], ['interfaces', 'Image'], ['Image', 'processing'], ['processing', 'Machine'], ['Machine', 'learning'], ['learning', 'Mobile'], ['Mobile', 'apps'], ['apps', 'Multimedia'], ['Multimedia', 'Computer'], ['Computer', 'networking'], ['networking', 'Scientific'], ['Scientific', 'computing'], ['computing', 'System'], ['System', 'administration'], ['administration', 'Test'], ['Test', 'frameworks'], ['frameworks', 'Text'], ['Text', 'processing'], ['processing', 'Web'], ['Web', 'frameworks'], ['frameworks', 'Web'], ['Web', 'scraping'], ['scraping', 'Development'], ['Development', 'environments'], ['environments', 'See'], ['See', 'also:'], ['also:', 'Comparison'], ['Comparison', 'of'], ['of', 'integrated'], ['integrated', 'development'], ['development', 'environments'], ['environments', 'Python'], ['Python', 'Most'], ['Most', 'Python'], ['Python', 'implementations'], ['implementations', '(including'], ['(including', 'CPython)'], ['CPython)', 'include'], ['include', 'a'], ['a', 'readevalprint'], ['readevalprint', 'loop'], ['loop', '(REPL),'], ['(REPL),', 'permitting'], ['permitting', 'them'], ['them', 'to'], ['to', 'function'], ['function', 'as'], ['as', 'a'], ['a', 'command'], ['command', 'line'], ['line', 'interpreter'], ['interpreter', 'for'], ['for', 'which'], ['which', 'users'], ['users', 'enter'], ['enter', 'statements'], ['statements', 'sequentially'], ['sequentially', 'and'], ['and', 'receive'], ['receive', 'results'], ['results', 'immediately.'], ['immediately.', 'Python'], ['Python', 'also'], ['also', 'comes'], ['comes', 'with'], ['with', 'an'], ['an', 'Integrated'], ['Integrated', 'development'], ['development', 'environment'], ['environment', '(IDE)'], ['(IDE)', 'called'], ['called', 'IDLE,'], ['IDLE,', 'which'], ['which', 'is'], ['is', 'more'], ['more', 'beginner-oriented.'], ['beginner-oriented.', 'Other'], ['Other', 'shells,'], ['shells,', 'including'], ['including', 'IDLE'], ['IDLE', 'and'], ['and', 'IPython,'], ['IPython,', 'add'], ['add', 'further'], ['further', 'abilities'], ['abilities', 'such'], ['such', 'as'], ['as', 'improved'], ['improved', 'auto-completion,'], ['auto-completion,', 'session'], ['session', 'state'], ['state', 'retention,'], ['retention,', 'and'], ['and', 'syntax'], ['syntax', 'highlighting.'], ['highlighting.', 'As'], ['As', 'well'], ['well', 'as'], ['as', 'standard'], ['standard', 'desktop'], ['desktop', 'integrated'], ['integrated', 'development'], ['development', 'environments,'], ['environments,', 'there'], ['there', 'are'], ['are', 'Web'], ['Web', 'browser-based'], ['browser-based', 'IDEs,'], ['IDEs,', 'including'], ['including', 'SageMath,'], ['SageMath,', 'for'], ['for', 'developing'], ['developing', 'science-'], ['science-', 'and'], ['and', 'math-related'], ['math-related', 'programs;'], ['programs;', 'PythonAnywhere,'], ['PythonAnywhere,', 'a'], ['a', 'browser-based'], ['browser-based', 'IDE'], ['IDE', 'and'], ['and', 'hosting'], ['hosting', 'environment;'], ['environment;', 'and'], ['and', 'Canopy'], ['Canopy', 'IDE,'], ['IDE,', 'a'], ['a', 'commercial'], ['commercial', 'IDE'], ['IDE', 'emphasizing'], ['emphasizing', 'scientific'], ['scientific', 'computing.'], ['computing.', 'Implementations'], ['Implementations', 'See'], ['See', 'also:'], ['also:', 'List'], ['List', 'of'], ['of', 'Python'], ['Python', 'software'], ['software', 'Python'], ['Python', 'implementations'], ['implementations', 'Reference'], ['Reference', 'implementation'], ['implementation', 'CPython'], ['CPython', 'is'], ['is', 'the'], ['the', 'reference'], ['reference', 'implementation'], ['implementation', 'of'], ['of', 'Python.'], ['Python.', 'It'], ['It', 'is'], ['is', 'written'], ['written', 'in'], ['in', 'C,'], ['C,', 'meeting'], ['meeting', 'the'], ['the', 'C'], ['C', 'standard'], ['standard', '(Python'], ['(Python', '.'], ['.', 'uses'], ['uses', 'C'], ['C', ')'], [')', 'with'], ['with', 'several'], ['several', 'select'], ['select', 'C'], ['C', 'features'], ['features', '(With'], ['(With', 'later'], ['later', 'C'], ['C', 'versions'], ['versions', 'out,'], ['out,', 'it'], ['it', 'is'], ['is', 'considered'], ['considered', 'outdated.'], ['outdated.', 'CPython'], ['CPython', 'includes'], ['includes', 'its'], ['its', 'own'], ['own', 'C'], ['C', 'extensions,'], ['extensions,', 'but'], ['but', 'third-party'], ['third-party', 'extensions'], ['extensions', 'are'], ['are', 'not'], ['not', 'limited'], ['limited', 'to'], ['to', 'older'], ['older', 'C'], ['C', 'versionse.g.'], ['versionse.g.', 'they'], ['they', 'can'], ['can', 'be'], ['be', 'implemented'], ['implemented', 'with'], ['with', 'C'], ['C', 'or'], ['or', 'C'], ['C', '.'], ['.', ')'], [')', 'It'], ['It', 'compiles'], ['compiles', 'Python'], ['Python', 'programs'], ['programs', 'into'], ['into', 'an'], ['an', 'intermediate'], ['intermediate', 'bytecode'], ['bytecode', 'which'], ['which', 'is'], ['is', 'then'], ['then', 'executed'], ['executed', 'by'], ['by', 'its'], ['its', 'virtual'], ['virtual', 'machine.'], ['machine.', 'CPython'], ['CPython', 'is'], ['is', 'distributed'], ['distributed', 'with'], ['with', 'a'], ['a', 'large'], ['large', 'standard'], ['standard', 'library'], ['library', 'written'], ['written', 'in'], ['in', 'a'], ['a', 'mixture'], ['mixture', 'of'], ['of', 'C'], ['C', 'and'], ['and', 'native'], ['native', 'Python,'], ['Python,', 'and'], ['and', 'is'], ['is', 'available'], ['available', 'for'], ['for', 'many'], ['many', 'platforms,'], ['platforms,', 'including'], ['including', 'Windows'], ['Windows', '(starting'], ['(starting', 'with'], ['with', 'Python'], ['Python', '.'], ['.', ','], [',', 'the'], ['the', 'Python'], ['Python', 'installer'], ['installer', 'deliberately'], ['deliberately', 'fails'], ['fails', 'to'], ['to', 'install'], ['install', 'on'], ['on', 'Windows'], ['Windows', 'and'], ['and', ';'], [';', 'Windows'], ['Windows', 'XP'], ['XP', 'was'], ['was', 'supported'], ['supported', 'until'], ['until', 'Python'], ['Python', '.'], ['.', ')'], [')', 'and'], ['and', 'most'], ['most', 'modern'], ['modern', 'Unix-like'], ['Unix-like', 'systems,'], ['systems,', 'including'], ['including', 'macOS'], ['macOS', '(and'], ['(and', 'Apple'], ['Apple', 'M'], ['M', 'Macs,'], ['Macs,', 'since'], ['since', 'Python'], ['Python', '.'], ['.', '.'], ['.', ','], [',', 'with'], ['with', 'experimental'], ['experimental', 'installer)'], ['installer)', 'and'], ['and', 'unofficial'], ['unofficial', 'support'], ['support', 'for'], ['for', 'e.g.'], ['e.g.', 'VMS.'], ['VMS.', 'Platform'], ['Platform', 'portability'], ['portability', 'was'], ['was', 'one'], ['one', 'of'], ['of', 'its'], ['its', 'earliest'], ['earliest', 'priorities.'], ['priorities.', '(During'], ['(During', 'Python'], ['Python', 'and'], ['and', 'development,'], ['development,', 'even'], ['even', 'OS/'], ['OS/', 'and'], ['and', 'Solaris'], ['Solaris', 'were'], ['were', 'supported,'], ['supported,', 'but'], ['but', 'support'], ['support', 'has'], ['has', 'since'], ['since', 'been'], ['been', 'dropped'], ['dropped', 'for'], ['for', 'many'], ['many', 'platforms.)'], ['platforms.)', 'Other'], ['Other', 'implementations'], ['implementations', 'PyPy'], ['PyPy', 'is'], ['is', 'a'], ['a', 'fast,'], ['fast,', 'compliant'], ['compliant', 'interpreter'], ['interpreter', 'of'], ['of', 'Python'], ['Python', '.'], ['.', 'and'], ['and', '.'], ['.', '.'], ['.', 'Its'], ['Its', 'just-in-time'], ['just-in-time', 'compiler'], ['compiler', 'often'], ['often', 'brings'], ['brings', 'a'], ['a', 'significant'], ['significant', 'speed'], ['speed', 'improvement'], ['improvement', 'over'], ['over', 'CPython'], ['CPython', 'but'], ['but', 'some'], ['some', 'libraries'], ['libraries', 'written'], ['written', 'in'], ['in', 'C'], ['C', 'cannot'], ['cannot', 'be'], ['be', 'used'], ['used', 'with'], ['with', 'it.'], ['it.', 'Stackless'], ['Stackless', 'Python'], ['Python', 'is'], ['is', 'a'], ['a', 'significant'], ['significant', 'fork'], ['fork', 'of'], ['of', 'CPython'], ['CPython', 'that'], ['that', 'implements'], ['implements', 'microthreads;'], ['microthreads;', 'it'], ['it', 'does'], ['does', 'not'], ['not', 'use'], ['use', 'the'], ['the', 'call'], ['call', 'stack'], ['stack', 'in'], ['in', 'the'], ['the', 'same'], ['same', 'way,'], ['way,', 'thus'], ['thus', 'allowing'], ['allowing', 'massively'], ['massively', 'concurrent'], ['concurrent', 'programs.'], ['programs.', 'PyPy'], ['PyPy', 'also'], ['also', 'has'], ['has', 'a'], ['a', 'stackless'], ['stackless', 'version.'], ['version.', 'MicroPython'], ['MicroPython', 'and'], ['and', 'CircuitPython'], ['CircuitPython', 'are'], ['are', 'Python'], ['Python', 'variants'], ['variants', 'optimized'], ['optimized', 'for'], ['for', 'microcontrollers,'], ['microcontrollers,', 'including'], ['including', 'Lego'], ['Lego', 'Mindstorms'], ['Mindstorms', 'EV'], ['EV', '.'], ['.', 'Pyston'], ['Pyston', 'is'], ['is', 'a'], ['a', 'variant'], ['variant', 'of'], ['of', 'the'], ['the', 'Python'], ['Python', 'runtime'], ['runtime', 'that'], ['that', 'uses'], ['uses', 'just-in-time'], ['just-in-time', 'compilation'], ['compilation', 'to'], ['to', 'speed'], ['speed', 'up'], ['up', 'the'], ['the', 'execution'], ['execution', 'of'], ['of', 'Python'], ['Python', 'programs.'], ['programs.', 'Cinder'], ['Cinder', 'is'], ['is', 'a'], ['a', 'performance-oriented'], ['performance-oriented', 'fork'], ['fork', 'of'], ['of', 'CPython'], ['CPython', '.'], ['.', 'that'], ['that', 'contains'], ['contains', 'a'], ['a', 'number'], ['number', 'of'], ['of', 'optimizations'], ['optimizations', 'including'], ['including', 'bytecode'], ['bytecode', 'inline'], ['inline', 'caching,'], ['caching,', 'eager'], ['eager', 'evaluation'], ['evaluation', 'of'], ['of', 'coroutines,'], ['coroutines,', 'a'], ['a', 'method-at-a-time'], ['method-at-a-time', 'JIT,'], ['JIT,', 'and'], ['and', 'an'], ['an', 'experimental'], ['experimental', 'bytecode'], ['bytecode', 'compiler.'], ['compiler.', 'Unsupported'], ['Unsupported', 'implementations'], ['implementations', 'Other'], ['Other', 'just-in-time'], ['just-in-time', 'Python'], ['Python', 'compilers'], ['compilers', 'have'], ['have', 'been'], ['been', 'developed,'], ['developed,', 'but'], ['but', 'are'], ['are', 'now'], ['now', 'unsupported:'], ['unsupported:', 'Google'], ['Google', 'began'], ['began', 'a'], ['a', 'project'], ['project', 'named'], ['named', 'Unladen'], ['Unladen', 'Swallow'], ['Swallow', 'in'], ['in', ','], [',', 'with'], ['with', 'the'], ['the', 'aim'], ['aim', 'of'], ['of', 'speeding'], ['speeding', 'up'], ['up', 'the'], ['the', 'Python'], ['Python', 'interpreter'], ['interpreter', 'fivefold'], ['fivefold', 'by'], ['by', 'using'], ['using', 'the'], ['the', 'LLVM,'], ['LLVM,', 'and'], ['and', 'of'], ['of', 'improving'], ['improving', 'its'], ['its', 'multithreading'], ['multithreading', 'ability'], ['ability', 'to'], ['to', 'scale'], ['scale', 'to'], ['to', 'thousands'], ['thousands', 'of'], ['of', 'cores,'], ['cores,', 'while'], ['while', 'ordinary'], ['ordinary', 'implementations'], ['implementations', 'suffer'], ['suffer', 'from'], ['from', 'the'], ['the', 'global'], ['global', 'interpreter'], ['interpreter', 'lock.'], ['lock.', 'Psyco'], ['Psyco', 'is'], ['is', 'a'], ['a', 'discontinued'], ['discontinued', 'just-in-time'], ['just-in-time', 'specializing'], ['specializing', 'compiler'], ['compiler', 'that'], ['that', 'integrates'], ['integrates', 'with'], ['with', 'CPython'], ['CPython', 'and'], ['and', 'transforms'], ['transforms', 'bytecode'], ['bytecode', 'to'], ['to', 'machine'], ['machine', 'code'], ['code', 'at'], ['at', 'runtime.'], ['runtime.', 'The'], ['The', 'emitted'], ['emitted', 'code'], ['code', 'is'], ['is', 'specialized'], ['specialized', 'for'], ['for', 'certain'], ['certain', 'data'], ['data', 'types'], ['types', 'and'], ['and', 'is'], ['is', 'faster'], ['faster', 'than'], ['than', 'the'], ['the', 'standard'], ['standard', 'Python'], ['Python', 'code.'], ['code.', 'Psyco'], ['Psyco', 'does'], ['does', 'not'], ['not', 'support'], ['support', 'Python'], ['Python', '.'], ['.', 'or'], ['or', 'later.'], ['later.', 'PyS'], ['PyS', 'was'], ['was', 'a'], ['a', 'Python'], ['Python', 'interpreter'], ['interpreter', 'for'], ['for', 'Series'], ['Series', 'mobile'], ['mobile', 'phones'], ['phones', 'released'], ['released', 'by'], ['by', 'Nokia'], ['Nokia', 'in'], ['in', '.'], ['.', 'It'], ['It', 'implemented'], ['implemented', 'many'], ['many', 'of'], ['of', 'the'], ['the', 'modules'], ['modules', 'from'], ['from', 'the'], ['the', 'standard'], ['standard', 'library'], ['library', 'and'], ['and', 'some'], ['some', 'additional'], ['additional', 'modules'], ['modules', 'for'], ['for', 'integrating'], ['integrating', 'with'], ['with', 'the'], ['the', 'Symbian'], ['Symbian', 'operating'], ['operating', 'system.'], ['system.', 'The'], ['The', 'Nokia'], ['Nokia', 'N'], ['N', 'also'], ['also', 'supports'], ['supports', 'Python'], ['Python', 'with'], ['with', 'GTK'], ['GTK', 'widget'], ['widget', 'libraries,'], ['libraries,', 'enabling'], ['enabling', 'programs'], ['programs', 'to'], ['to', 'be'], ['be', 'written'], ['written', 'and'], ['and', 'run'], ['run', 'on'], ['on', 'the'], ['the', 'target'], ['target', 'device.'], ['device.', 'Cross-compilers'], ['Cross-compilers', 'to'], ['to', 'other'], ['other', 'languages'], ['languages', 'There'], ['There', 'are'], ['are', 'several'], ['several', 'compilers'], ['compilers', 'to'], ['to', 'high-level'], ['high-level', 'object'], ['object', 'languages,'], ['languages,', 'with'], ['with', 'either'], ['either', 'unrestricted'], ['unrestricted', 'Python,'], ['Python,', 'a'], ['a', 'restricted'], ['restricted', 'subset'], ['subset', 'of'], ['of', 'Python,'], ['Python,', 'or'], ['or', 'a'], ['a', 'language'], ['language', 'similar'], ['similar', 'to'], ['to', 'Python'], ['Python', 'as'], ['as', 'the'], ['the', 'source'], ['source', 'language:'], ['language:', 'Brython,'], ['Brython,', 'Transcrypt'], ['Transcrypt', 'and'], ['and', 'Pyjs'], ['Pyjs', '(latest'], ['(latest', 'release'], ['release', 'in'], ['in', ')'], [')', 'compile'], ['compile', 'Python'], ['Python', 'to'], ['to', 'JavaScript.'], ['JavaScript.', 'Cython'], ['Cython', 'compiles'], ['compiles', '(a'], ['(a', 'superset'], ['superset', 'of)'], ['of)', 'Python'], ['Python', 'to'], ['to', 'C'], ['C', '(while'], ['(while', 'the'], ['the', 'resulting'], ['resulting', 'code'], ['code', 'is'], ['is', 'also'], ['also', 'usable'], ['usable', 'with'], ['with', 'Python'], ['Python', 'and'], ['and', 'also'], ['also', 'e.g.'], ['e.g.', 'C'], ['C', ').'], [').', 'Nuitka'], ['Nuitka', 'compiles'], ['compiles', 'Python'], ['Python', 'into'], ['into', 'C.'], ['C.', 'Numba'], ['Numba', 'uses'], ['uses', 'LLVM'], ['LLVM', 'to'], ['to', 'compile'], ['compile', 'a'], ['a', 'subset'], ['subset', 'of'], ['of', 'Python'], ['Python', 'to'], ['to', 'machine'], ['machine', 'code.'], ['code.', 'Pythran'], ['Pythran', 'compiles'], ['compiles', 'a'], ['a', 'subset'], ['subset', 'of'], ['of', 'Python'], ['Python', 'to'], ['to', 'C'], ['C', '(C'], ['(C', ').'], [').', 'RPython'], ['RPython', 'can'], ['can', 'be'], ['be', 'compiled'], ['compiled', 'to'], ['to', 'C,'], ['C,', 'and'], ['and', 'is'], ['is', 'used'], ['used', 'to'], ['to', 'build'], ['build', 'the'], ['the', 'PyPy'], ['PyPy', 'interpreter'], ['interpreter', 'of'], ['of', 'Python.'], ['Python.', 'The'], ['The', 'Python'], ['Python', 'l'], ['l', 'C'], ['C', 'transpiler'], ['transpiler', 'compiles'], ['compiles', 'a'], ['a', 'subset'], ['subset', 'of'], ['of', 'Python'], ['Python', 'to'], ['to', 'C'], ['C', '(C'], ['(C', ').'], [').', 'Specialized:'], ['Specialized:', 'MyHDL'], ['MyHDL', 'is'], ['is', 'a'], ['a', 'Python-based'], ['Python-based', 'hardware'], ['hardware', 'description'], ['description', 'language'], ['language', '(HDL),'], ['(HDL),', 'that'], ['that', 'converts'], ['converts', 'MyHDL'], ['MyHDL', 'code'], ['code', 'to'], ['to', 'Verilog'], ['Verilog', 'or'], ['or', 'VHDL'], ['VHDL', 'code.'], ['code.', 'Older'], ['Older', 'projects'], ['projects', '(or'], ['(or', 'not'], ['not', 'to'], ['to', 'be'], ['be', 'used'], ['used', 'with'], ['with', 'Python'], ['Python', '.x'], ['.x', 'and'], ['and', 'latest'], ['latest', 'syntax):'], ['syntax):', \"Google's\"], [\"Google's\", 'Grumpy'], ['Grumpy', '(latest'], ['(latest', 'release'], ['release', 'in'], ['in', ')'], [')', 'transpiles'], ['transpiles', 'Python'], ['Python', 'to'], ['to', 'Go.'], ['Go.', 'IronPython'], ['IronPython', 'allows'], ['allows', 'running'], ['running', 'Python'], ['Python', '.'], ['.', 'programs'], ['programs', '(and'], ['(and', 'an'], ['an', 'alpha,'], ['alpha,', 'released'], ['released', 'in'], ['in', ','], [',', 'is'], ['is', 'also'], ['also', 'available'], ['available', 'for'], ['for', '\"Python'], ['\"Python', '.'], ['.', ','], [',', 'although'], ['although', 'features'], ['features', 'and'], ['and', 'behaviors'], ['behaviors', 'from'], ['from', 'later'], ['later', 'versions'], ['versions', 'may'], ['may', 'be'], ['be', 'included\"'], ['included\"', ')'], [')', 'on'], ['on', 'the'], ['the', '.NET'], ['.NET', 'Common'], ['Common', 'Language'], ['Language', 'Runtime.'], ['Runtime.', 'Jython'], ['Jython', 'compiles'], ['compiles', 'Python'], ['Python', '.'], ['.', 'to'], ['to', 'Java'], ['Java', 'bytecode,'], ['bytecode,', 'allowing'], ['allowing', 'the'], ['the', 'use'], ['use', 'of'], ['of', 'the'], ['the', 'Java'], ['Java', 'libraries'], ['libraries', 'from'], ['from', 'a'], ['a', 'Python'], ['Python', 'program.'], ['program.', 'Pyrex'], ['Pyrex', '(latest'], ['(latest', 'release'], ['release', 'in'], ['in', ')'], [')', 'and'], ['and', 'Shed'], ['Shed', 'Skin'], ['Skin', '(latest'], ['(latest', 'release'], ['release', 'in'], ['in', ')'], [')', 'compile'], ['compile', 'to'], ['to', 'C'], ['C', 'and'], ['and', 'C'], ['C', 'respectively.'], ['respectively.', 'Performance'], ['Performance', 'Performance'], ['Performance', 'comparison'], ['comparison', 'of'], ['of', 'various'], ['various', 'Python'], ['Python', 'implementations'], ['implementations', 'on'], ['on', 'a'], ['a', 'non-numerical'], ['non-numerical', '(combinatorial)'], ['(combinatorial)', 'workload'], ['workload', 'was'], ['was', 'presented'], ['presented', 'at'], ['at', 'EuroSciPy'], ['EuroSciPy', \"'\"], [\"'\", '.'], ['.', \"Python's\"], [\"Python's\", 'performance'], ['performance', 'compared'], ['compared', 'to'], ['to', 'other'], ['other', 'programming'], ['programming', 'languages'], ['languages', 'is'], ['is', 'also'], ['also', 'benchmarked'], ['benchmarked', 'by'], ['by', 'The'], ['The', 'Computer'], ['Computer', 'Language'], ['Language', 'Benchmarks'], ['Benchmarks', 'Game.'], ['Game.', 'Development'], ['Development', \"Python's\"], [\"Python's\", 'development'], ['development', 'is'], ['is', 'conducted'], ['conducted', 'largely'], ['largely', 'through'], ['through', 'the'], ['the', 'Python'], ['Python', 'Enhancement'], ['Enhancement', 'Proposal'], ['Proposal', '(PEP)'], ['(PEP)', 'process,'], ['process,', 'the'], ['the', 'primary'], ['primary', 'mechanism'], ['mechanism', 'for'], ['for', 'proposing'], ['proposing', 'major'], ['major', 'new'], ['new', 'features,'], ['features,', 'collecting'], ['collecting', 'community'], ['community', 'input'], ['input', 'on'], ['on', 'issues,'], ['issues,', 'and'], ['and', 'documenting'], ['documenting', 'Python'], ['Python', 'design'], ['design', 'decisions.'], ['decisions.', 'Python'], ['Python', 'coding'], ['coding', 'style'], ['style', 'is'], ['is', 'covered'], ['covered', 'in'], ['in', 'PEP'], ['PEP', '.'], ['.', 'Outstanding'], ['Outstanding', 'PEPs'], ['PEPs', 'are'], ['are', 'reviewed'], ['reviewed', 'and'], ['and', 'commented'], ['commented', 'on'], ['on', 'by'], ['by', 'the'], ['the', 'Python'], ['Python', 'community'], ['community', 'and'], ['and', 'the'], ['the', 'steering'], ['steering', 'council.'], ['council.', 'Enhancement'], ['Enhancement', 'of'], ['of', 'the'], ['the', 'language'], ['language', 'corresponds'], ['corresponds', 'with'], ['with', 'the'], ['the', 'development'], ['development', 'of'], ['of', 'the'], ['the', 'CPython'], ['CPython', 'reference'], ['reference', 'implementation.'], ['implementation.', 'The'], ['The', 'mailing'], ['mailing', 'list'], ['list', 'python-dev'], ['python-dev', 'is'], ['is', 'the'], ['the', 'primary'], ['primary', 'forum'], ['forum', 'for'], ['for', 'the'], ['the', \"language's\"], [\"language's\", 'development.'], ['development.', 'Specific'], ['Specific', 'issues'], ['issues', 'were'], ['were', 'originally'], ['originally', 'discussed'], ['discussed', 'in'], ['in', 'the'], ['the', 'Roundup'], ['Roundup', 'bug'], ['bug', 'tracker'], ['tracker', 'hosted'], ['hosted', 'at'], ['at', 'by'], ['by', 'the'], ['the', 'foundation.'], ['foundation.', 'In'], ['In', ','], [',', 'all'], ['all', 'issues'], ['issues', 'and'], ['and', 'discussions'], ['discussions', 'were'], ['were', 'migrated'], ['migrated', 'to'], ['to', 'GitHub.'], ['GitHub.', 'Development'], ['Development', 'originally'], ['originally', 'took'], ['took', 'place'], ['place', 'on'], ['on', 'a'], ['a', 'self-hosted'], ['self-hosted', 'source-code'], ['source-code', 'repository'], ['repository', 'running'], ['running', 'Mercurial,'], ['Mercurial,', 'until'], ['until', 'Python'], ['Python', 'moved'], ['moved', 'to'], ['to', 'GitHub'], ['GitHub', 'in'], ['in', 'January'], ['January', '.'], ['.', \"CPython's\"], [\"CPython's\", 'public'], ['public', 'releases'], ['releases', 'come'], ['come', 'in'], ['in', 'three'], ['three', 'types,'], ['types,', 'distinguished'], ['distinguished', 'by'], ['by', 'which'], ['which', 'part'], ['part', 'of'], ['of', 'the'], ['the', 'version'], ['version', 'number'], ['number', 'is'], ['is', 'incremented:'], ['incremented:', 'Backward-incompatible'], ['Backward-incompatible', 'versions,'], ['versions,', 'where'], ['where', 'code'], ['code', 'is'], ['is', 'expected'], ['expected', 'to'], ['to', 'break'], ['break', 'and'], ['and', 'needs'], ['needs', 'to'], ['to', 'be'], ['be', 'manually'], ['manually', 'ported.'], ['ported.', 'The'], ['The', 'first'], ['first', 'part'], ['part', 'of'], ['of', 'the'], ['the', 'version'], ['version', 'number'], ['number', 'is'], ['is', 'incremented.'], ['incremented.', 'These'], ['These', 'releases'], ['releases', 'happen'], ['happen', 'infrequentlyversion'], ['infrequentlyversion', '.'], ['.', 'was'], ['was', 'released'], ['released', 'years'], ['years', 'after'], ['after', '.'], ['.', '.'], ['.', 'According'], ['According', 'to'], ['to', 'Guido'], ['Guido', 'van'], ['van', 'Rossum,'], ['Rossum,', 'a'], ['a', 'version'], ['version', '.'], ['.', 'is'], ['is', 'very'], ['very', 'unlikely'], ['unlikely', 'to'], ['to', 'ever'], ['ever', 'happen.'], ['happen.', 'Major'], ['Major', 'or'], ['or', '\"feature\"'], ['\"feature\"', 'releases'], ['releases', 'are'], ['are', 'largely'], ['largely', 'compatible'], ['compatible', 'with'], ['with', 'the'], ['the', 'previous'], ['previous', 'version'], ['version', 'but'], ['but', 'introduce'], ['introduce', 'new'], ['new', 'features.'], ['features.', 'The'], ['The', 'second'], ['second', 'part'], ['part', 'of'], ['of', 'the'], ['the', 'version'], ['version', 'number'], ['number', 'is'], ['is', 'incremented.'], ['incremented.', 'Starting'], ['Starting', 'with'], ['with', 'Python'], ['Python', '.'], ['.', ','], [',', 'these'], ['these', 'releases'], ['releases', 'are'], ['are', 'expected'], ['expected', 'to'], ['to', 'happen'], ['happen', 'annually.'], ['annually.', 'Each'], ['Each', 'major'], ['major', 'version'], ['version', 'is'], ['is', 'supported'], ['supported', 'by'], ['by', 'bug'], ['bug', 'fixes'], ['fixes', 'for'], ['for', 'several'], ['several', 'years'], ['years', 'after'], ['after', 'its'], ['its', 'release.'], ['release.', 'Bugfix'], ['Bugfix', 'releases,'], ['releases,', 'which'], ['which', 'introduce'], ['introduce', 'no'], ['no', 'new'], ['new', 'features,'], ['features,', 'occur'], ['occur', 'about'], ['about', 'every'], ['every', 'months'], ['months', 'and'], ['and', 'are'], ['are', 'made'], ['made', 'when'], ['when', 'a'], ['a', 'sufficient'], ['sufficient', 'number'], ['number', 'of'], ['of', 'bugs'], ['bugs', 'have'], ['have', 'been'], ['been', 'fixed'], ['fixed', 'upstream'], ['upstream', 'since'], ['since', 'the'], ['the', 'last'], ['last', 'release.'], ['release.', 'Security'], ['Security', 'vulnerabilities'], ['vulnerabilities', 'are'], ['are', 'also'], ['also', 'patched'], ['patched', 'in'], ['in', 'these'], ['these', 'releases.'], ['releases.', 'The'], ['The', 'third'], ['third', 'and'], ['and', 'final'], ['final', 'part'], ['part', 'of'], ['of', 'the'], ['the', 'version'], ['version', 'number'], ['number', 'is'], ['is', 'incremented.'], ['incremented.', 'Many'], ['Many', 'alpha,'], ['alpha,', 'beta,'], ['beta,', 'and'], ['and', 'release-candidates'], ['release-candidates', 'are'], ['are', 'also'], ['also', 'released'], ['released', 'as'], ['as', 'previews'], ['previews', 'and'], ['and', 'for'], ['for', 'testing'], ['testing', 'before'], ['before', 'final'], ['final', 'releases.'], ['releases.', 'Although'], ['Although', 'there'], ['there', 'is'], ['is', 'a'], ['a', 'rough'], ['rough', 'schedule'], ['schedule', 'for'], ['for', 'each'], ['each', 'release,'], ['release,', 'they'], ['they', 'are'], ['are', 'often'], ['often', 'delayed'], ['delayed', 'if'], ['if', 'the'], ['the', 'code'], ['code', 'is'], ['is', 'not'], ['not', 'ready.'], ['ready.', \"Python's\"], [\"Python's\", 'development'], ['development', 'team'], ['team', 'monitors'], ['monitors', 'the'], ['the', 'state'], ['state', 'of'], ['of', 'the'], ['the', 'code'], ['code', 'by'], ['by', 'running'], ['running', 'the'], ['the', 'large'], ['large', 'unit'], ['unit', 'test'], ['test', 'suite'], ['suite', 'during'], ['during', 'development.'], ['development.', 'The'], ['The', 'major'], ['major', 'academic'], ['academic', 'conference'], ['conference', 'on'], ['on', 'Python'], ['Python', 'is'], ['is', 'PyCon.'], ['PyCon.', 'There'], ['There', 'are'], ['are', 'also'], ['also', 'special'], ['special', 'Python'], ['Python', 'mentoring'], ['mentoring', 'programs,'], ['programs,', 'such'], ['such', 'as'], ['as', 'Pyladies.'], ['Pyladies.', 'Python'], ['Python', '.'], ['.', 'deprecated'], ['deprecated', 'wstr'], ['wstr', '(to'], ['(to', 'be'], ['be', 'removed'], ['removed', 'in'], ['in', 'Python'], ['Python', '.'], ['.', ';'], [';', 'meaning'], ['meaning', 'Python'], ['Python', 'extensions'], ['extensions', 'need'], ['need', 'to'], ['to', 'be'], ['be', 'modified'], ['modified', 'by'], ['by', 'then),'], ['then),', 'and'], ['and', 'added'], ['added', 'pattern'], ['pattern', 'matching'], ['matching', 'to'], ['to', 'the'], ['the', 'language.'], ['language.', 'API'], ['API', 'documentation'], ['documentation', 'generators'], ['generators', 'Tools'], ['Tools', 'that'], ['that', 'can'], ['can', 'generate'], ['generate', 'documentation'], ['documentation', 'for'], ['for', 'Python'], ['Python', 'API'], ['API', 'include'], ['include', 'pydoc'], ['pydoc', '(available'], ['(available', 'as'], ['as', 'part'], ['part', 'of'], ['of', 'the'], ['the', 'standard'], ['standard', 'library),'], ['library),', 'Sphinx,'], ['Sphinx,', 'Pdoc'], ['Pdoc', 'and'], ['and', 'its'], ['its', 'forks,'], ['forks,', 'Doxygen'], ['Doxygen', 'and'], ['and', 'Graphviz,'], ['Graphviz,', 'among'], ['among', 'others.'], ['others.', 'Naming'], ['Naming', \"Python's\"], [\"Python's\", 'name'], ['name', 'is'], ['is', 'derived'], ['derived', 'from'], ['from', 'the'], ['the', 'British'], ['British', 'comedy'], ['comedy', 'group'], ['group', 'Monty'], ['Monty', 'Python,'], ['Python,', 'whom'], ['whom', 'Python'], ['Python', 'creator'], ['creator', 'Guido'], ['Guido', 'van'], ['van', 'Rossum'], ['Rossum', 'enjoyed'], ['enjoyed', 'while'], ['while', 'developing'], ['developing', 'the'], ['the', 'language.'], ['language.', 'Monty'], ['Monty', 'Python'], ['Python', 'references'], ['references', 'appear'], ['appear', 'frequently'], ['frequently', 'in'], ['in', 'Python'], ['Python', 'code'], ['code', 'and'], ['and', 'culture;'], ['culture;', 'for'], ['for', 'example,'], ['example,', 'the'], ['the', 'metasyntactic'], ['metasyntactic', 'variables'], ['variables', 'often'], ['often', 'used'], ['used', 'in'], ['in', 'Python'], ['Python', 'literature'], ['literature', 'are'], ['are', 'spam'], ['spam', 'and'], ['and', 'eggs'], ['eggs', 'instead'], ['instead', 'of'], ['of', 'the'], ['the', 'traditional'], ['traditional', 'foo'], ['foo', 'and'], ['and', 'bar.'], ['bar.', 'The'], ['The', 'official'], ['official', 'Python'], ['Python', 'documentation'], ['documentation', 'also'], ['also', 'contains'], ['contains', 'various'], ['various', 'references'], ['references', 'to'], ['to', 'Monty'], ['Monty', 'Python'], ['Python', 'routines.'], ['routines.', 'The'], ['The', 'prefix'], ['prefix', 'Py-'], ['Py-', 'is'], ['is', 'used'], ['used', 'to'], ['to', 'show'], ['show', 'that'], ['that', 'something'], ['something', 'is'], ['is', 'related'], ['related', 'to'], ['to', 'Python.'], ['Python.', 'Examples'], ['Examples', 'of'], ['of', 'the'], ['the', 'use'], ['use', 'of'], ['of', 'this'], ['this', 'prefix'], ['prefix', 'in'], ['in', 'names'], ['names', 'of'], ['of', 'Python'], ['Python', 'applications'], ['applications', 'or'], ['or', 'libraries'], ['libraries', 'include'], ['include', 'Pygame,'], ['Pygame,', 'a'], ['a', 'binding'], ['binding', 'of'], ['of', 'SDL'], ['SDL', 'to'], ['to', 'Python'], ['Python', '(commonly'], ['(commonly', 'used'], ['used', 'to'], ['to', 'create'], ['create', 'games);'], ['games);', 'PyQt'], ['PyQt', 'and'], ['and', 'PyGTK,'], ['PyGTK,', 'which'], ['which', 'bind'], ['bind', 'Qt'], ['Qt', 'and'], ['and', 'GTK'], ['GTK', 'to'], ['to', 'Python'], ['Python', 'respectively;'], ['respectively;', 'and'], ['and', 'PyPy,'], ['PyPy,', 'a'], ['a', 'Python'], ['Python', 'implementation'], ['implementation', 'originally'], ['originally', 'written'], ['written', 'in'], ['in', 'Python.'], ['Python.', 'Popularity'], ['Popularity', 'Since'], ['Since', ','], [',', 'Python'], ['Python', 'has'], ['has', 'consistently'], ['consistently', 'ranked'], ['ranked', 'in'], ['in', 'the'], ['the', 'top'], ['top', 'ten'], ['ten', 'most'], ['most', 'popular'], ['popular', 'programming'], ['programming', 'languages'], ['languages', 'in'], ['in', 'the'], ['the', 'TIOBE'], ['TIOBE', 'Programming'], ['Programming', 'Community'], ['Community', 'Index'], ['Index', 'where'], ['where', 'as'], ['as', 'of'], ['of', 'December'], ['December', 'update'], ['update', 'it'], ['it', 'was'], ['was', 'the'], ['the', 'most'], ['most', 'popular'], ['popular', 'language'], ['language', '(ahead'], ['(ahead', 'of'], ['of', 'C,'], ['C,', 'C'], ['C', ','], [',', 'and'], ['and', 'Java).'], ['Java).', 'It'], ['It', 'was'], ['was', 'selected'], ['selected', 'Programming'], ['Programming', 'Language'], ['Language', 'of'], ['of', 'the'], ['the', 'Year'], ['Year', '(for'], ['(for', '\"the'], ['\"the', 'highest'], ['highest', 'rise'], ['rise', 'in'], ['in', 'ratings'], ['ratings', 'in'], ['in', 'a'], ['a', 'year\")'], ['year\")', 'in'], ['in', ','], [',', ','], [',', ','], [',', 'and'], ['and', '(the'], ['(the', 'only'], ['only', 'language'], ['language', 'to'], ['to', 'have'], ['have', 'done'], ['done', 'so'], ['so', 'four'], ['four', 'times'], ['times', 'as'], ['as', 'of'], ['of', ').'], [').', 'An'], ['An', 'empirical'], ['empirical', 'study'], ['study', 'found'], ['found', 'that'], ['that', 'scripting'], ['scripting', 'languages,'], ['languages,', 'such'], ['such', 'as'], ['as', 'Python,'], ['Python,', 'are'], ['are', 'more'], ['more', 'productive'], ['productive', 'than'], ['than', 'conventional'], ['conventional', 'languages,'], ['languages,', 'such'], ['such', 'as'], ['as', 'C'], ['C', 'and'], ['and', 'Java,'], ['Java,', 'for'], ['for', 'programming'], ['programming', 'problems'], ['problems', 'involving'], ['involving', 'string'], ['string', 'manipulation'], ['manipulation', 'and'], ['and', 'search'], ['search', 'in'], ['in', 'a'], ['a', 'dictionary,'], ['dictionary,', 'and'], ['and', 'determined'], ['determined', 'that'], ['that', 'memory'], ['memory', 'consumption'], ['consumption', 'was'], ['was', 'often'], ['often', '\"better'], ['\"better', 'than'], ['than', 'Java'], ['Java', 'and'], ['and', 'not'], ['not', 'much'], ['much', 'worse'], ['worse', 'than'], ['than', 'C'], ['C', 'or'], ['or', 'C'], ['C', '\".'], ['\".', 'Large'], ['Large', 'organizations'], ['organizations', 'that'], ['that', 'use'], ['use', 'Python'], ['Python', 'include'], ['include', 'Wikipedia,'], ['Wikipedia,', 'Google,'], ['Google,', 'Yahoo!,'], ['Yahoo!,', 'CERN,'], ['CERN,', 'NASA,'], ['NASA,', 'Facebook,'], ['Facebook,', 'Amazon,'], ['Amazon,', 'Instagram,'], ['Instagram,', 'Spotify,'], ['Spotify,', 'and'], ['and', 'some'], ['some', 'smaller'], ['smaller', 'entities'], ['entities', 'like'], ['like', 'ILM'], ['ILM', 'and'], ['and', 'ITA.'], ['ITA.', 'The'], ['The', 'social'], ['social', 'news'], ['news', 'networking'], ['networking', 'site'], ['site', 'Reddit'], ['Reddit', 'was'], ['was', 'written'], ['written', 'mostly'], ['mostly', 'in'], ['in', 'Python.'], ['Python.', 'Uses'], ['Uses', 'Main'], ['Main', 'article:'], ['article:', 'List'], ['List', 'of'], ['of', 'Python'], ['Python', 'software'], ['software', 'Python'], ['Python', 'Powered'], ['Powered', 'Python'], ['Python', 'can'], ['can', 'serve'], ['serve', 'as'], ['as', 'a'], ['a', 'scripting'], ['scripting', 'language'], ['language', 'for'], ['for', 'web'], ['web', 'applications,'], ['applications,', 'e.g.,'], ['e.g.,', 'via'], ['via', 'mod_wsgi'], ['mod_wsgi', 'for'], ['for', 'the'], ['the', 'Apache'], ['Apache', 'webserver.'], ['webserver.', 'With'], ['With', 'Web'], ['Web', 'Server'], ['Server', 'Gateway'], ['Gateway', 'Interface,'], ['Interface,', 'a'], ['a', 'standard'], ['standard', 'API'], ['API', 'has'], ['has', 'evolved'], ['evolved', 'to'], ['to', 'facilitate'], ['facilitate', 'these'], ['these', 'applications.'], ['applications.', 'Web'], ['Web', 'frameworks'], ['frameworks', 'like'], ['like', 'Django,'], ['Django,', 'Pylons,'], ['Pylons,', 'Pyramid,'], ['Pyramid,', 'TurboGears,'], ['TurboGears,', 'web'], ['web', 'py,'], ['py,', 'Tornado,'], ['Tornado,', 'Flask,'], ['Flask,', 'Bottle,'], ['Bottle,', 'and'], ['and', 'Zope'], ['Zope', 'support'], ['support', 'developers'], ['developers', 'in'], ['in', 'the'], ['the', 'design'], ['design', 'and'], ['and', 'maintenance'], ['maintenance', 'of'], ['of', 'complex'], ['complex', 'applications.'], ['applications.', 'Pyjs'], ['Pyjs', 'and'], ['and', 'IronPython'], ['IronPython', 'can'], ['can', 'be'], ['be', 'used'], ['used', 'to'], ['to', 'develop'], ['develop', 'the'], ['the', 'client-side'], ['client-side', 'of'], ['of', 'Ajax-based'], ['Ajax-based', 'applications.'], ['applications.', 'SQLAlchemy'], ['SQLAlchemy', 'can'], ['can', 'be'], ['be', 'used'], ['used', 'as'], ['as', 'a'], ['a', 'data'], ['data', 'mapper'], ['mapper', 'to'], ['to', 'a'], ['a', 'relational'], ['relational', 'database.'], ['database.', 'Twisted'], ['Twisted', 'is'], ['is', 'a'], ['a', 'framework'], ['framework', 'to'], ['to', 'program'], ['program', 'communications'], ['communications', 'between'], ['between', 'computers,'], ['computers,', 'and'], ['and', 'is'], ['is', 'used'], ['used', '(for'], ['(for', 'example)'], ['example)', 'by'], ['by', 'Dropbox.'], ['Dropbox.', 'Libraries'], ['Libraries', 'such'], ['such', 'as'], ['as', 'NumPy,'], ['NumPy,', 'SciPy,'], ['SciPy,', 'and'], ['and', 'Matplotlib'], ['Matplotlib', 'allow'], ['allow', 'the'], ['the', 'effective'], ['effective', 'use'], ['use', 'of'], ['of', 'Python'], ['Python', 'in'], ['in', 'scientific'], ['scientific', 'computing,'], ['computing,', 'with'], ['with', 'specialized'], ['specialized', 'libraries'], ['libraries', 'such'], ['such', 'as'], ['as', 'Biopython'], ['Biopython', 'and'], ['and', 'Astropy'], ['Astropy', 'providing'], ['providing', 'domain-specific'], ['domain-specific', 'functionality.'], ['functionality.', 'SageMath'], ['SageMath', 'is'], ['is', 'a'], ['a', 'computer'], ['computer', 'algebra'], ['algebra', 'system'], ['system', 'with'], ['with', 'a'], ['a', 'notebook'], ['notebook', 'interface'], ['interface', 'programmable'], ['programmable', 'in'], ['in', 'Python:'], ['Python:', 'its'], ['its', 'library'], ['library', 'covers'], ['covers', 'many'], ['many', 'aspects'], ['aspects', 'of'], ['of', 'mathematics,'], ['mathematics,', 'including'], ['including', 'algebra,'], ['algebra,', 'combinatorics,'], ['combinatorics,', 'numerical'], ['numerical', 'mathematics,'], ['mathematics,', 'number'], ['number', 'theory,'], ['theory,', 'and'], ['and', 'calculus.'], ['calculus.', 'OpenCV'], ['OpenCV', 'has'], ['has', 'Python'], ['Python', 'bindings'], ['bindings', 'with'], ['with', 'a'], ['a', 'rich'], ['rich', 'set'], ['set', 'of'], ['of', 'features'], ['features', 'for'], ['for', 'computer'], ['computer', 'vision'], ['vision', 'and'], ['and', 'image'], ['image', 'processing.'], ['processing.', 'Python'], ['Python', 'is'], ['is', 'commonly'], ['commonly', 'used'], ['used', 'in'], ['in', 'artificial'], ['artificial', 'intelligence'], ['intelligence', 'projects'], ['projects', 'and'], ['and', 'machine'], ['machine', 'learning'], ['learning', 'projects'], ['projects', 'with'], ['with', 'the'], ['the', 'help'], ['help', 'of'], ['of', 'libraries'], ['libraries', 'like'], ['like', 'TensorFlow,'], ['TensorFlow,', 'Keras,'], ['Keras,', 'Pytorch,'], ['Pytorch,', 'and'], ['and', 'scikit-learn.'], ['scikit-learn.', 'As'], ['As', 'a'], ['a', 'scripting'], ['scripting', 'language'], ['language', 'with'], ['with', 'a'], ['a', 'modular'], ['modular', 'architecture,'], ['architecture,', 'simple'], ['simple', 'syntax,'], ['syntax,', 'and'], ['and', 'rich'], ['rich', 'text'], ['text', 'processing'], ['processing', 'tools,'], ['tools,', 'Python'], ['Python', 'is'], ['is', 'often'], ['often', 'used'], ['used', 'for'], ['for', 'natural'], ['natural', 'language'], ['language', 'processing.'], ['processing.', 'Python'], ['Python', 'can'], ['can', 'also'], ['also', 'be'], ['be', 'used'], ['used', 'to'], ['to', 'create'], ['create', 'games,'], ['games,', 'with'], ['with', 'libraries'], ['libraries', 'such'], ['such', 'as'], ['as', 'Pygame,'], ['Pygame,', 'which'], ['which', 'can'], ['can', 'make'], ['make', 'D'], ['D', 'games.'], ['games.', 'Python'], ['Python', 'has'], ['has', 'been'], ['been', 'successfully'], ['successfully', 'embedded'], ['embedded', 'in'], ['in', 'many'], ['many', 'software'], ['software', 'products'], ['products', 'as'], ['as', 'a'], ['a', 'scripting'], ['scripting', 'language,'], ['language,', 'including'], ['including', 'in'], ['in', 'finite'], ['finite', 'element'], ['element', 'method'], ['method', 'software'], ['software', 'such'], ['such', 'as'], ['as', 'Abaqus,'], ['Abaqus,', 'D'], ['D', 'parametric'], ['parametric', 'modelers'], ['modelers', 'like'], ['like', 'FreeCAD,'], ['FreeCAD,', 'D'], ['D', 'animation'], ['animation', 'packages'], ['packages', 'such'], ['such', 'as'], ['as', 'ds'], ['ds', 'Max,'], ['Max,', 'Blender,'], ['Blender,', 'Cinema'], ['Cinema', 'D,'], ['D,', 'Lightwave,'], ['Lightwave,', 'Houdini,'], ['Houdini,', 'Maya,'], ['Maya,', 'modo,'], ['modo,', 'MotionBuilder,'], ['MotionBuilder,', 'Softimage,'], ['Softimage,', 'the'], ['the', 'visual'], ['visual', 'effects'], ['effects', 'compositor'], ['compositor', 'Nuke,'], ['Nuke,', 'D'], ['D', 'imaging'], ['imaging', 'programs'], ['programs', 'like'], ['like', 'GIMP,'], ['GIMP,', 'Inkscape,'], ['Inkscape,', 'Scribus'], ['Scribus', 'and'], ['and', 'Paint'], ['Paint', 'Shop'], ['Shop', 'Pro,'], ['Pro,', 'and'], ['and', 'musical'], ['musical', 'notation'], ['notation', 'programs'], ['programs', 'like'], ['like', 'scorewriter'], ['scorewriter', 'and'], ['and', 'capella.'], ['capella.', 'GNU'], ['GNU', 'Debugger'], ['Debugger', 'uses'], ['uses', 'Python'], ['Python', 'as'], ['as', 'a'], ['a', 'pretty'], ['pretty', 'printer'], ['printer', 'to'], ['to', 'show'], ['show', 'complex'], ['complex', 'structures'], ['structures', 'such'], ['such', 'as'], ['as', 'C'], ['C', 'containers.'], ['containers.', 'Esri'], ['Esri', 'promotes'], ['promotes', 'Python'], ['Python', 'as'], ['as', 'the'], ['the', 'best'], ['best', 'choice'], ['choice', 'for'], ['for', 'writing'], ['writing', 'scripts'], ['scripts', 'in'], ['in', 'ArcGIS.'], ['ArcGIS.', 'It'], ['It', 'has'], ['has', 'also'], ['also', 'been'], ['been', 'used'], ['used', 'in'], ['in', 'several'], ['several', 'video'], ['video', 'games,'], ['games,', 'and'], ['and', 'has'], ['has', 'been'], ['been', 'adopted'], ['adopted', 'as'], ['as', 'first'], ['first', 'of'], ['of', 'the'], ['the', 'three'], ['three', 'available'], ['available', 'programming'], ['programming', 'languages'], ['languages', 'in'], ['in', 'Google'], ['Google', 'App'], ['App', 'Engine,'], ['Engine,', 'the'], ['the', 'other'], ['other', 'two'], ['two', 'being'], ['being', 'Java'], ['Java', 'and'], ['and', 'Go.'], ['Go.', 'Many'], ['Many', 'operating'], ['operating', 'systems'], ['systems', 'include'], ['include', 'Python'], ['Python', 'as'], ['as', 'a'], ['a', 'standard'], ['standard', 'component.'], ['component.', 'It'], ['It', 'ships'], ['ships', 'with'], ['with', 'most'], ['most', 'Linux'], ['Linux', 'distributions,'], ['distributions,', 'AmigaOS'], ['AmigaOS', '(using'], ['(using', 'Python'], ['Python', '.'], ['.', '),'], ['),', 'FreeBSD'], ['FreeBSD', '(as'], ['(as', 'a'], ['a', 'package),'], ['package),', 'NetBSD,'], ['NetBSD,', 'and'], ['and', 'OpenBSD'], ['OpenBSD', '(as'], ['(as', 'a'], ['a', 'package)'], ['package)', 'and'], ['and', 'can'], ['can', 'be'], ['be', 'used'], ['used', 'from'], ['from', 'the'], ['the', 'command'], ['command', 'line'], ['line', '(terminal).'], ['(terminal).', 'Many'], ['Many', 'Linux'], ['Linux', 'distributions'], ['distributions', 'use'], ['use', 'installers'], ['installers', 'written'], ['written', 'in'], ['in', 'Python:'], ['Python:', 'Ubuntu'], ['Ubuntu', 'uses'], ['uses', 'the'], ['the', 'Ubiquity'], ['Ubiquity', 'installer,'], ['installer,', 'while'], ['while', 'Red'], ['Red', 'Hat'], ['Hat', 'Linux'], ['Linux', 'and'], ['and', 'Fedora'], ['Fedora', 'Linux'], ['Linux', 'use'], ['use', 'the'], ['the', 'Anaconda'], ['Anaconda', 'installer.'], ['installer.', 'Gentoo'], ['Gentoo', 'Linux'], ['Linux', 'uses'], ['uses', 'Python'], ['Python', 'in'], ['in', 'its'], ['its', 'package'], ['package', 'management'], ['management', 'system,'], ['system,', 'Portage.'], ['Portage.', 'Python'], ['Python', 'is'], ['is', 'used'], ['used', 'extensively'], ['extensively', 'in'], ['in', 'the'], ['the', 'information'], ['information', 'security'], ['security', 'industry,'], ['industry,', 'including'], ['including', 'in'], ['in', 'exploit'], ['exploit', 'development.'], ['development.', 'Most'], ['Most', 'of'], ['of', 'the'], ['the', 'Sugar'], ['Sugar', 'software'], ['software', 'for'], ['for', 'the'], ['the', 'One'], ['One', 'Laptop'], ['Laptop', 'per'], ['per', 'Child'], ['Child', 'XO,'], ['XO,', 'developed'], ['developed', 'at'], ['at', 'Sugar'], ['Sugar', 'Labs'], ['Labs', 'since'], ['since', ','], [',', 'is'], ['is', 'written'], ['written', 'in'], ['in', 'Python.'], ['Python.', 'The'], ['The', 'Raspberry'], ['Raspberry', 'Pi'], ['Pi', 'single-board'], ['single-board', 'computer'], ['computer', 'project'], ['project', 'has'], ['has', 'adopted'], ['adopted', 'Python'], ['Python', 'as'], ['as', 'its'], ['its', 'main'], ['main', 'user-programming'], ['user-programming', 'language.'], ['language.', 'LibreOffice'], ['LibreOffice', 'includes'], ['includes', 'Python'], ['Python', 'and'], ['and', 'intends'], ['intends', 'to'], ['to', 'replace'], ['replace', 'Java'], ['Java', 'with'], ['with', 'Python.'], ['Python.', 'Its'], ['Its', 'Python'], ['Python', 'Scripting'], ['Scripting', 'Provider'], ['Provider', 'is'], ['is', 'a'], ['a', 'core'], ['core', 'feature'], ['feature', 'since'], ['since', 'Version'], ['Version', '.'], ['.', 'from'], ['from', 'February'], ['February', '.'], ['.', 'Languages'], ['Languages', 'influenced'], ['influenced', 'by'], ['by', 'Python'], ['Python', \"Python's\"], [\"Python's\", 'design'], ['design', 'and'], ['and', 'philosophy'], ['philosophy', 'have'], ['have', 'influenced'], ['influenced', 'many'], ['many', 'other'], ['other', 'programming'], ['programming', 'languages:'], ['languages:', 'Boo'], ['Boo', 'uses'], ['uses', 'indentation,'], ['indentation,', 'a'], ['a', 'similar'], ['similar', 'syntax,'], ['syntax,', 'and'], ['and', 'a'], ['a', 'similar'], ['similar', 'object'], ['object', 'model.'], ['model.', 'Cobra'], ['Cobra', 'uses'], ['uses', 'indentation'], ['indentation', 'and'], ['and', 'a'], ['a', 'similar'], ['similar', 'syntax,'], ['syntax,', 'and'], ['and', 'its'], ['its', 'Acknowledgements'], ['Acknowledgements', 'document'], ['document', 'lists'], ['lists', 'Python'], ['Python', 'first'], ['first', 'among'], ['among', 'languages'], ['languages', 'that'], ['that', 'influenced'], ['influenced', 'it.'], ['it.', 'CoffeeScript,'], ['CoffeeScript,', 'a'], ['a', 'programming'], ['programming', 'language'], ['language', 'that'], ['that', 'cross-compiles'], ['cross-compiles', 'to'], ['to', 'JavaScript,'], ['JavaScript,', 'has'], ['has', 'Python-inspired'], ['Python-inspired', 'syntax.'], ['syntax.', 'ECMAScript/JavaScript'], ['ECMAScript/JavaScript', 'borrowed'], ['borrowed', 'iterators'], ['iterators', 'and'], ['and', 'generators'], ['generators', 'from'], ['from', 'Python.'], ['Python.', 'GDScript,'], ['GDScript,', 'a'], ['a', 'scripting'], ['scripting', 'language'], ['language', 'very'], ['very', 'similar'], ['similar', 'to'], ['to', 'Python,'], ['Python,', 'built-in'], ['built-in', 'to'], ['to', 'the'], ['the', 'Godot'], ['Godot', 'game'], ['game', 'engine.'], ['engine.', 'Go'], ['Go', 'is'], ['is', 'designed'], ['designed', 'for'], ['for', 'the'], ['the', '\"speed'], ['\"speed', 'of'], ['of', 'working'], ['working', 'in'], ['in', 'a'], ['a', 'dynamic'], ['dynamic', 'language'], ['language', 'like'], ['like', 'Python\"'], ['Python\"', 'and'], ['and', 'shares'], ['shares', 'the'], ['the', 'same'], ['same', 'syntax'], ['syntax', 'for'], ['for', 'slicing'], ['slicing', 'arrays.'], ['arrays.', 'Groovy'], ['Groovy', 'was'], ['was', 'motivated'], ['motivated', 'by'], ['by', 'the'], ['the', 'desire'], ['desire', 'to'], ['to', 'bring'], ['bring', 'the'], ['the', 'Python'], ['Python', 'design'], ['design', 'philosophy'], ['philosophy', 'to'], ['to', 'Java.'], ['Java.', 'Julia'], ['Julia', 'was'], ['was', 'designed'], ['designed', 'to'], ['to', 'be'], ['be', '\"as'], ['\"as', 'usable'], ['usable', 'for'], ['for', 'general'], ['general', 'programming'], ['programming', 'as'], ['as', 'Python\".'], ['Python\".', 'Nim'], ['Nim', 'uses'], ['uses', 'indentation'], ['indentation', 'and'], ['and', 'similar'], ['similar', 'syntax.'], ['syntax.', \"Ruby's\"], [\"Ruby's\", 'creator,'], ['creator,', 'Yukihiro'], ['Yukihiro', 'Matsumoto,'], ['Matsumoto,', 'has'], ['has', 'said:'], ['said:', '\"I'], ['\"I', 'wanted'], ['wanted', 'a'], ['a', 'scripting'], ['scripting', 'language'], ['language', 'that'], ['that', 'was'], ['was', 'more'], ['more', 'powerful'], ['powerful', 'than'], ['than', 'Perl,'], ['Perl,', 'and'], ['and', 'more'], ['more', 'object-oriented'], ['object-oriented', 'than'], ['than', 'Python.'], ['Python.', \"That's\"], [\"That's\", 'why'], ['why', 'I'], ['I', 'decided'], ['decided', 'to'], ['to', 'design'], ['design', 'my'], ['my', 'own'], ['own', 'language.\"'], ['language.\"', 'Swift,'], ['Swift,', 'a'], ['a', 'programming'], ['programming', 'language'], ['language', 'developed'], ['developed', 'by'], ['by', 'Apple,'], ['Apple,', 'has'], ['has', 'some'], ['some', 'Python-inspired'], ['Python-inspired', 'syntax.'], ['syntax.', \"Python's\"], [\"Python's\", 'development'], ['development', 'practices'], ['practices', 'have'], ['have', 'also'], ['also', 'been'], ['been', 'emulated'], ['emulated', 'by'], ['by', 'other'], ['other', 'languages.'], ['languages.', 'For'], ['For', 'example,'], ['example,', 'the'], ['the', 'practice'], ['practice', 'of'], ['of', 'requiring'], ['requiring', 'a'], ['a', 'document'], ['document', 'describing'], ['describing', 'the'], ['the', 'rationale'], ['rationale', 'for,'], ['for,', 'and'], ['and', 'issues'], ['issues', 'surrounding,'], ['surrounding,', 'a'], ['a', 'change'], ['change', 'to'], ['to', 'the'], ['the', 'language'], ['language', '(in'], ['(in', 'Python,'], ['Python,', 'a'], ['a', 'PEP)'], ['PEP)', 'is'], ['is', 'also'], ['also', 'used'], ['used', 'in'], ['in', 'Tcl,'], ['Tcl,', 'Erlang,'], ['Erlang,', 'and'], ['and', 'Swift.'], ['Swift.', 'See'], ['See', 'also'], ['also', 'Computer'], ['Computer', 'programming'], ['programming', 'portalFree'], ['portalFree', 'and'], ['and', 'open-source'], ['open-source', 'software'], ['software', 'portal'], ['portal', 'Python'], ['Python', 'syntax'], ['syntax', 'and'], ['and', 'semantics'], ['semantics', 'pip'], ['pip', '(package'], ['(package', 'manager)'], ['manager)', 'List'], ['List', 'of'], ['of', 'programming'], ['programming', 'languages'], ['languages', 'History'], ['History', 'of'], ['of', 'programming'], ['programming', 'languages'], ['languages', 'Comparison'], ['Comparison', 'of'], ['of', 'programming'], ['programming', 'languages'], ['languages', 'References'], ['References', '^'], ['^', '\"General'], ['\"General', 'Python'], ['Python', 'FAQ'], ['FAQ', 'Python'], ['Python', '.'], ['.', '.'], ['.', 'documentation\".'], ['documentation\".', 'docs.python.org.'], ['docs.python.org.', 'Archived'], ['Archived', 'from'], ['from', 'the'], ['the', 'original'], ['original', 'on'], ['on', 'October'], ['October', '.'], ['.', 'Retrieved'], ['Retrieved', 'March'], ['March', '.'], ['.', '^'], ['^', '\"Python'], ['\"Python', '.'], ['.', '.'], ['.', 'part'], ['part', '/'], ['/', '\".'], ['\".', 'alt.sources'], ['alt.sources', 'archives.'], ['archives.', 'Archived'], ['Archived', 'from'], ['from', 'the'], ['the', 'original'], ['original', 'on'], ['on', 'August'], ['August', '.'], ['.', 'Retrieved'], ['Retrieved', 'August'], ['August', '.'], ['.', '^'], ['^', '\"Python'], ['\"Python', '.'], ['.', '.'], ['.', ','], [',', 'Python'], ['Python', '.'], ['.', '.'], ['.', 'and'], ['and', '.'], ['.', '.'], ['.', 'alpha'], ['alpha', 'are'], ['are', 'available\".'], ['available\".', 'February'], ['February', '.'], ['.', 'Retrieved'], ['Retrieved', 'February'], ['February', '.'], ['.', '^'], ['^', '\"Python'], ['\"Python', '.'], ['.', '.'], ['.', ','], [',', 'Python'], ['Python', '.'], ['.', '.'], ['.', 'and'], ['and', '.'], ['.', '.'], ['.', 'alpha'], ['alpha', 'are'], ['are', 'available\".'], ['available\".', 'February'], ['February', '.'], ['.', 'Retrieved'], ['Retrieved', 'February'], ['February', '.'], ['.', '^'], ['^', '\"Why'], ['\"Why', 'is'], ['is', 'Python'], ['Python', 'a'], ['a', 'dynamic'], ['dynamic', 'language'], ['language', 'and'], ['and', 'also'], ['also', 'a'], ['a', 'strongly'], ['strongly', 'typed'], ['typed', 'language'], ['language', 'Python'], ['Python', 'Wiki\".'], ['Wiki\".', 'wiki.python.org.'], ['wiki.python.org.', 'Archived'], ['Archived', 'from'], ['from', 'the'], ['the', 'original'], ['original', 'on'], ['on', 'March'], ['March', '.'], ['.', 'Retrieved'], ['Retrieved', 'January'], ['January', '.'], ['.', '^'], ['^', '\"PEP'], ['\"PEP', 'The'], ['The', 'Theory'], ['Theory', 'of'], ['of', 'Type'], ['Type', 'Hints\".'], ['Hints\".', 'Python.org.'], ['Python.org.', 'Archived'], ['Archived', 'from'], ['from', 'the'], ['the', 'original'], ['original', 'on'], ['on', 'June'], ['June', '.'], ['.', 'Retrieved'], ['Retrieved', 'June'], ['June', '.'], ['.', '^'], ['^', '\"test'], ['\"test', 'Regression'], ['Regression', 'tests'], ['tests', 'package'], ['package', 'for'], ['for', 'Python'], ['Python', 'Python'], ['Python', '.'], ['.', '.'], ['.', 'documentation\".'], ['documentation\".', 'docs.python.org.'], ['docs.python.org.', 'Retrieved'], ['Retrieved', 'May'], ['May', '.'], ['.', '^'], ['^', '\"platform'], ['\"platform', 'Access'], ['Access', 'to'], ['to', 'underlying'], ['underlying', \"platform's\"], [\"platform's\", 'identifying'], ['identifying', 'data'], ['data', 'Python'], ['Python', '.'], ['.', '.'], ['.', 'documentation\".'], ['documentation\".', 'docs.python.org.'], ['docs.python.org.', 'Retrieved'], ['Retrieved', 'May'], ['May', '.'], ['.', '^'], ['^', '\"Download'], ['\"Download', 'Python\".'], ['Python\".', 'Python.org.'], ['Python.org.', 'Archived'], ['Archived', 'from'], ['from', 'the'], ['the', 'original'], ['original', 'on'], ['on', 'August'], ['August', '.'], ['.', 'Retrieved'], ['Retrieved', 'May'], ['May', '.'], ['.', '^'], ['^', 'Holth,'], ['Holth,', 'Moore'], ['Moore', '('], ['(', 'March'], ['March', ').'], [').', '\"PEP'], ['\"PEP', 'Improving'], ['Improving', 'Python'], ['Python', 'ZIP'], ['ZIP', 'Application'], ['Application', 'Support\".'], ['Support\".', 'Archived'], ['Archived', 'from'], ['from', 'the'], ['the', 'original'], ['original', 'on'], ['on', 'December'], ['December', '.'], ['.', 'Retrieved'], ['Retrieved', 'November'], ['November', '.'], ['.', '^'], ['^', 'File'], ['File', 'extension'], ['extension', '.pyo'], ['.pyo', 'was'], ['was', 'removed'], ['removed', 'in'], ['in', 'Python'], ['Python', '.'], ['.', '.'], ['.', 'See'], ['See', 'PEP'], ['PEP', 'Archived'], ['Archived', 'June'], ['June', 'at'], ['at', 'the'], ['the', 'Wayback'], ['Wayback', 'Machine'], ['Machine', '^'], ['^', '\"Starlark'], ['\"Starlark', 'Language\".'], ['Language\".', 'Archived'], ['Archived', 'from'], ['from', 'the'], ['the', 'original'], ['original', 'on'], ['on', 'June'], ['June', '.'], ['.', 'Retrieved'], ['Retrieved', 'May'], ['May', '.'], ['.', '^'], ['^', 'a'], ['a', 'b'], ['b', '\"Why'], ['\"Why', 'was'], ['was', 'Python'], ['Python', 'created'], ['created', 'in'], ['in', 'the'], ['the', 'first'], ['first', 'place?\".'], ['place?\".', 'General'], ['General', 'Python'], ['Python', 'FAQ.'], ['FAQ.', 'Python'], ['Python', 'Software'], ['Software', 'Foundation.'], ['Foundation.', 'Archived'], ['Archived', 'from'], ['from', 'the'], ['the', 'original'], ['original', 'on'], ['on', 'October'], ['October', '.'], ['.', 'Retrieved'], ['Retrieved', 'March'], ['March', '.'], ['.', 'I'], ['I', 'had'], ['had', 'extensive'], ['extensive', 'experience'], ['experience', 'with'], ['with', 'implementing'], ['implementing', 'an'], ['an', 'interpreted'], ['interpreted', 'language'], ['language', 'in'], ['in', 'the'], ['the', 'ABC'], ['ABC', 'group'], ['group', 'at'], ['at', 'CWI,'], ['CWI,', 'and'], ['and', 'from'], ['from', 'working'], ['working', 'with'], ['with', 'this'], ['this', 'group'], ['group', 'I'], ['I', 'had'], ['had', 'learned'], ['learned', 'a'], ['a', 'lot'], ['lot', 'about'], ['about', 'language'], ['language', 'design.'], ['design.', 'This'], ['This', 'is'], ['is', 'the'], ['the', 'origin'], ['origin', 'of'], ['of', 'many'], ['many', 'Python'], ['Python', 'features,'], ['features,', 'including'], ['including', 'the'], ['the', 'use'], ['use', 'of'], ['of', 'indentation'], ['indentation', 'for'], ['for', 'statement'], ['statement', 'grouping'], ['grouping', 'and'], ['and', 'the'], ['the', 'inclusion'], ['inclusion', 'of'], ['of', 'very'], ['very', 'high-level'], ['high-level', 'data'], ['data', 'types'], ['types', '(although'], ['(although', 'the'], ['the', 'details'], ['details', 'are'], ['are', 'all'], ['all', 'different'], ['different', 'in'], ['in', 'Python).'], ['Python).', '^'], ['^', '\"Ada'], ['\"Ada', 'Reference'], ['Reference', 'Manual'], ['Manual', '(raise'], ['(raise', 'statement)\".'], ['statement)\".', 'Archived'], ['Archived', 'from'], ['from', 'the'], ['the', 'original'], ['original', 'on'], ['on', 'October'], ['October', '.'], ['.', 'Retrieved'], ['Retrieved', 'January'], ['January', '.'], ['.', '^'], ['^', 'a'], ['a', 'b'], ['b', 'Kuchling,'], ['Kuchling,', 'Andrew'], ['Andrew', 'M.'], ['M.', '('], ['(', 'December'], ['December', ').'], [').', '\"Interview'], ['\"Interview', 'with'], ['with', 'Guido'], ['Guido', 'van'], ['van', 'Rossum'], ['Rossum', '(July'], ['(July', ')\".'], [')\".', 'amk.ca.'], ['amk.ca.', 'Archived'], ['Archived', 'from'], ['from', 'the'], ['the', 'original'], ['original', 'on'], ['on', 'May'], ['May', '.'], ['.', 'Retrieved'], ['Retrieved', 'March'], ['March', '.'], ['.', \"I'd\"], [\"I'd\", 'spent'], ['spent', 'a'], ['a', 'summer'], ['summer', 'at'], ['at', \"DEC's\"], [\"DEC's\", 'Systems'], ['Systems', 'Research'], ['Research', 'Center,'], ['Center,', 'which'], ['which', 'introduced'], ['introduced', 'me'], ['me', 'to'], ['to', 'Modula-'], ['Modula-', ';'], [';', 'the'], ['the', 'Modula-'], ['Modula-', 'final'], ['final', 'report'], ['report', 'was'], ['was', 'being'], ['being', 'written'], ['written', 'there'], ['there', 'at'], ['at', 'about'], ['about', 'the'], ['the', 'same'], ['same', 'time.'], ['time.', 'What'], ['What', 'I'], ['I', 'learned'], ['learned', 'there'], ['there', 'later'], ['later', 'showed'], ['showed', 'up'], ['up', 'in'], ['in', \"Python's\"], [\"Python's\", 'exception'], ['exception', 'handling,'], ['handling,', 'modules,'], ['modules,', 'and'], ['and', 'the'], ['the', 'fact'], ['fact', 'that'], ['that', 'methods'], ['methods', 'explicitly'], ['explicitly', 'contain'], ['contain', \"'self'\"], [\"'self'\", 'in'], ['in', 'their'], ['their', 'parameter'], ['parameter', 'list.'], ['list.', 'String'], ['String', 'slicing'], ['slicing', 'came'], ['came', 'from'], ['from', 'Algol-'], ['Algol-', 'and'], ['and', 'Icon.'], ['Icon.', '^'], ['^', 'a'], ['a', 'b'], ['b', 'c'], ['c', '\"itertools'], ['\"itertools', 'Functions'], ['Functions', 'creating'], ['creating', 'iterators'], ['iterators', 'for'], ['for', 'efficient'], ['efficient', 'looping'], ['looping', 'Python'], ['Python', '.'], ['.', '.'], ['.', 'documentation\".'], ['documentation\".', 'docs.python.org.'], ['docs.python.org.', 'Archived'], ['Archived', 'from'], ['from', 'the'], ['the', 'original'], ['original', 'on'], ['on', 'June'], ['June', '.'], ['.', 'Retrieved'], ['Retrieved', 'November'], ['November', '.'], ['.', 'This'], ['This', 'module'], ['module', 'implements'], ['implements', 'a'], ['a', 'number'], ['number', 'of'], ['of', 'iterator'], ['iterator', 'building'], ['building', 'blocks'], ['blocks', 'inspired'], ['inspired', 'by'], ['by', 'constructs'], ['constructs', 'from'], ['from', 'APL,'], ['APL,', 'Haskell,'], ['Haskell,', 'and'], ['and', 'SML.'], ['SML.', '^'], ['^', 'van'], ['van', 'Rossum,'], ['Rossum,', 'Guido'], ['Guido', '('], ['(', ').'], [').', '\"An'], ['\"An', 'Introduction'], ['Introduction', 'to'], ['to', 'Python'], ['Python', 'for'], ['for', 'UNIX/C'], ['UNIX/C', 'Programmers\".'], ['Programmers\".', 'Proceedings'], ['Proceedings', 'of'], ['of', 'the'], ['the', 'NLUUG'], ['NLUUG', 'Najaarsconferentie'], ['Najaarsconferentie', '(Dutch'], ['(Dutch', 'UNIX'], ['UNIX', 'Users'], ['Users', 'Group).'], ['Group).', 'CiteSeerX'], ['CiteSeerX', '.'], ['.', '.'], ['.', '.'], ['.', '.'], ['.', '.'], ['.', 'even'], ['even', 'though'], ['though', 'the'], ['the', 'design'], ['design', 'of'], ['of', 'C'], ['C', 'is'], ['is', 'far'], ['far', 'from'], ['from', 'ideal,'], ['ideal,', 'its'], ['its', 'influence'], ['influence', 'on'], ['on', 'Python'], ['Python', 'is'], ['is', 'considerable.'], ['considerable.', '^'], ['^', 'a'], ['a', 'b'], ['b', '\"Classes\".'], ['\"Classes\".', 'The'], ['The', 'Python'], ['Python', 'Tutorial.'], ['Tutorial.', 'Python'], ['Python', 'Software'], ['Software', 'Foundation.'], ['Foundation.', 'Archived'], ['Archived', 'from'], ['from', 'the'], ['the', 'original'], ['original', 'on'], ['on', 'October'], ['October', '.'], ['.', 'Retrieved'], ['Retrieved', 'February'], ['February', '.'], ['.', 'It'], ['It', 'is'], ['is', 'a'], ['a', 'mixture'], ['mixture', 'of'], ['of', 'the'], ['the', 'class'], ['class', 'mechanisms'], ['mechanisms', 'found'], ['found', 'in'], ['in', 'C'], ['C', 'and'], ['and', 'Modula-'], ['Modula-', '^'], ['^', 'Lundh,'], ['Lundh,', 'Fredrik.'], ['Fredrik.', '\"Call'], ['\"Call', 'By'], ['By', 'Object\".'], ['Object\".', 'effbot.org.'], ['effbot.org.', 'Archived'], ['Archived', 'from'], ['from', 'the'], ['the', 'original'], ['original', 'on'], ['on', 'November'], ['November', '.'], ['.', 'Retrieved'], ['Retrieved', 'November'], ['November', '.'], ['.', 'replace'], ['replace', '\"CLU\"'], ['\"CLU\"', 'with'], ['with', '\"Python\",'], ['\"Python\",', '\"record\"'], ['\"record\"', 'with'], ['with', '\"instance\",'], ['\"instance\",', 'and'], ['and', '\"procedure\"'], ['\"procedure\"', 'with'], ['with', '\"function'], ['\"function', 'or'], ['or', 'method\",'], ['method\",', 'and'], ['and', 'you'], ['you', 'get'], ['get', 'a'], ['a', 'pretty'], ['pretty', 'accurate'], ['accurate', 'description'], ['description', 'of'], ['of', \"Python's\"], [\"Python's\", 'object'], ['object', 'model.'], ['model.', '^'], ['^', 'Simionato,'], ['Simionato,', 'Michele.'], ['Michele.', '\"The'], ['\"The', 'Python'], ['Python', '.'], ['.', 'Method'], ['Method', 'Resolution'], ['Resolution', 'Order\".'], ['Order\".', 'Python'], ['Python', 'Software'], ['Software', 'Foundation.'], ['Foundation.', 'Archived'], ['Archived', 'from'], ['from', 'the'], ['the', 'original'], ['original', 'on'], ['on', 'August'], ['August', '.'], ['.', 'Retrieved'], ['Retrieved', 'July'], ['July', '.'], ['.', 'The'], ['The', 'C'], ['C', 'method'], ['method', 'itself'], ['itself', 'has'], ['has', 'nothing'], ['nothing', 'to'], ['to', 'do'], ['do', 'with'], ['with', 'Python,'], ['Python,', 'since'], ['since', 'it'], ['it', 'was'], ['was', 'invented'], ['invented', 'by'], ['by', 'people'], ['people', 'working'], ['working', 'on'], ['on', 'Dylan'], ['Dylan', 'and'], ['and', 'it'], ['it', 'is'], ['is', 'described'], ['described', 'in'], ['in', 'a'], ['a', 'paper'], ['paper', 'intended'], ['intended', 'for'], ['for', 'lispers'], ['lispers', '^'], ['^', 'Kuchling,'], ['Kuchling,', 'A.'], ['A.', 'M.'], ['M.', '\"Functional'], ['\"Functional', 'Programming'], ['Programming', 'HOWTO\".'], ['HOWTO\".', 'Python'], ['Python', 'v'], ['v', '.'], ['.', '.'], ['.', 'documentation.'], ['documentation.', 'Python'], ['Python', 'Software'], ['Software', 'Foundation.'], ['Foundation.', 'Archived'], ['Archived', 'from'], ['from', 'the'], ['the', 'original'], ['original', 'on'], ['on', 'October'], ['October', '.'], ['.', 'Retrieved'], ['Retrieved', 'February'], ['February', '.'], ['.', 'List'], ['List', 'comprehensions'], ['comprehensions', 'and'], ['and', 'generator'], ['generator', 'expressions'], ['expressions', '...'], ['...', 'are'], ['are', 'a'], ['a', 'concise'], ['concise', 'notation'], ['notation', 'for'], ['for', 'such'], ['such', 'operations,'], ['operations,', 'borrowed'], ['borrowed', 'from'], ['from', 'the'], ['the', 'functional'], ['functional', 'programming'], ['programming', 'language'], ['language', 'Haskell.'], ['Haskell.', '^'], ['^', 'Schemenauer,'], ['Schemenauer,', 'Neil;'], ['Neil;', 'Peters,'], ['Peters,', 'Tim;'], ['Tim;', 'Hetland,'], ['Hetland,', 'Magnus'], ['Magnus', 'Lie'], ['Lie', '('], ['(', 'May'], ['May', ').'], [').', '\"PEP'], ['\"PEP', 'Simple'], ['Simple', 'Generators\".'], ['Generators\".', 'Python'], ['Python', 'Enhancement'], ['Enhancement', 'Proposals.'], ['Proposals.', 'Python'], ['Python', 'Software'], ['Software', 'Foundation.'], ['Foundation.', 'Archived'], ['Archived', 'from'], ['from', 'the'], ['the', 'original'], ['original', 'on'], ['on', 'June'], ['June', '.'], ['.', 'Retrieved'], ['Retrieved', 'February'], ['February', '.'], ['.', '^'], ['^', '\"More'], ['\"More', 'Control'], ['Control', 'Flow'], ['Flow', 'Tools\".'], ['Tools\".', 'Python'], ['Python', 'documentation.'], ['documentation.', 'Python'], ['Python', 'Software'], ['Software', 'Foundation.'], ['Foundation.', 'Archived'], ['Archived', 'from'], ['from', 'the'], ['the', 'original'], ['original', 'on'], ['on', 'June'], ['June', '.'], ['.', 'Retrieved'], ['Retrieved', 'July'], ['July', '.'], ['.', 'By'], ['By', 'popular'], ['popular', 'demand,'], ['demand,', 'a'], ['a', 'few'], ['few', 'features'], ['features', 'commonly'], ['commonly', 'found'], ['found', 'in'], ['in', 'functional'], ['functional', 'programming'], ['programming', 'languages'], ['languages', 'like'], ['like', 'Lisp'], ['Lisp', 'have'], ['have', 'been'], ['been', 'added'], ['added', 'to'], ['to', 'Python.'], ['Python.', 'With'], ['With', 'the'], ['the', 'lambda'], ['lambda', 'keyword,'], ['keyword,', 'small'], ['small', 'anonymous'], ['anonymous', 'functions'], ['functions', 'can'], ['can', 'be'], ['be', 'created.'], ['created.', '^'], ['^', '\"re'], ['\"re', 'Regular'], ['Regular', 'expression'], ['expression', 'operations'], ['operations', 'Python'], ['Python', '.'], ['.', '.'], ['.', 'documentation\".'], ['documentation\".', 'docs.python.org.'], ['docs.python.org.', 'Retrieved'], ['Retrieved', 'September'], ['September', '.'], ['.', 'This'], ['This', 'module'], ['module', 'provides'], ['provides', 'regular'], ['regular', 'expression'], ['expression', 'matching'], ['matching', 'operations'], ['operations', 'similar'], ['similar', 'to'], ['to', 'those'], ['those', 'found'], ['found', 'in'], ['in', 'Perl.'], ['Perl.', '^'], ['^', '\"CoffeeScript\".'], ['\"CoffeeScript\".', 'coffeescript.org.'], ['coffeescript.org.', 'Archived'], ['Archived', 'from'], ['from', 'the'], ['the', 'original'], ['original', 'on'], ['on', 'June'], ['June', '.'], ['.', 'Retrieved'], ['Retrieved', 'July'], ['July', '.'], ['.', '^'], ['^', '\"The'], ['\"The', 'Genie'], ['Genie', 'Programming'], ['Programming', 'Language'], ['Language', 'Tutorial\".'], ['Tutorial\".', 'Archived'], ['Archived', 'from'], ['from', 'the'], ['the', 'original'], ['original', 'on'], ['on', 'June'], ['June', '.'], ['.', 'Retrieved'], ['Retrieved', 'February'], ['February', '.'], ['.', '^'], ['^', '\"Perl'], ['\"Perl', 'and'], ['and', 'Python'], ['Python', 'influences'], ['influences', 'in'], ['in', 'JavaScript\".'], ['JavaScript\".', 'www.'], ['www.', 'ality.com.'], ['ality.com.', 'February'], ['February', '.'], ['.', 'Archived'], ['Archived', 'from'], ['from', 'the'], ['the', 'original'], ['original', 'on'], ['on', 'December'], ['December', '.'], ['.', 'Retrieved'], ['Retrieved', 'May'], ['May', '.'], ['.', '^'], ['^', 'Rauschmayer,'], ['Rauschmayer,', 'Axel.'], ['Axel.', '\"Chapter'], ['\"Chapter', ':'], [':', 'The'], ['The', 'Nature'], ['Nature', 'of'], ['of', 'JavaScript;'], ['JavaScript;', 'Influences\".'], ['Influences\".', \"O'Reilly,\"], [\"O'Reilly,\", 'Speaking'], ['Speaking', 'JavaScript.'], ['JavaScript.', 'Archived'], ['Archived', 'from'], ['from', 'the'], ['the', 'original'], ['original', 'on'], ['on', 'December'], ['December', '.'], ['.', 'Retrieved'], ['Retrieved', 'May'], ['May', '.'], ['.', '^'], ['^', 'a'], ['a', 'b'], ['b', '\"Why'], ['\"Why', 'We'], ['We', 'Created'], ['Created', 'Julia\".'], ['Julia\".', 'Julia'], ['Julia', 'website.'], ['website.', 'February'], ['February', '.'], ['.', 'Archived'], ['Archived', 'from'], ['from', 'the'], ['the', 'original'], ['original', 'on'], ['on', 'May'], ['May', '.'], ['.', 'Retrieved'], ['Retrieved', 'June'], ['June', '.'], ['.', 'We'], ['We', 'want'], ['want', 'something'], ['something', 'as'], ['as', 'usable'], ['usable', 'for'], ['for', 'general'], ['general', 'programming'], ['programming', 'as'], ['as', 'Python'], ['Python', '...'], ['...', '^'], ['^', 'Ring'], ['Ring', 'Team'], ['Team', '('], ['(', 'December'], ['December', ').'], [').', '\"Ring'], ['\"Ring', 'and'], ['and', 'other'], ['other', 'languages\".'], ['languages\".', 'ring-lang.net.'], ['ring-lang.net.', 'ring-lang.'], ['ring-lang.', 'Archived'], ['Archived', 'from'], ['from', 'the'], ['the', 'original'], ['original', 'on'], ['on', 'December'], ['December', '.'], ['.', 'Retrieved'], ['Retrieved', 'December'], ['December', '.'], ['.', '^'], ['^', 'Bini,'], ['Bini,', 'Ola'], ['Ola', '('], ['(', ').'], [').', 'Practical'], ['Practical', 'JRuby'], ['JRuby', 'on'], ['on', 'Rails'], ['Rails', 'Web'], ['Web', '.'], ['.', 'Projects:'], ['Projects:', 'bringing'], ['bringing', 'Ruby'], ['Ruby', 'on'], ['on', 'Rails'], ['Rails', 'to'], ['to', 'the'], ['the', 'Java'], ['Java', 'platform.'], ['platform.', 'Berkeley:'], ['Berkeley:', 'APress.'], ['APress.', 'p.'], ['p.', '.'], ['.', 'ISBN'], ['ISBN', '-'], ['-', '-'], ['-', '-'], ['-', '-'], ['-', '.'], ['.', '^'], ['^', 'Lattner,'], ['Lattner,', 'Chris'], ['Chris', '('], ['(', 'June'], ['June', ').'], [').', '\"Chris'], ['\"Chris', \"Lattner's\"], [\"Lattner's\", 'Homepage\".'], ['Homepage\".', 'Chris'], ['Chris', 'Lattner.'], ['Lattner.', 'Archived'], ['Archived', 'from'], ['from', 'the'], ['the', 'original'], ['original', 'on'], ['on', 'December'], ['December', '.'], ['.', 'Retrieved'], ['Retrieved', 'June'], ['June', '.'], ['.', 'The'], ['The', 'Swift'], ['Swift', 'language'], ['language', 'is'], ['is', 'the'], ['the', 'product'], ['product', 'of'], ['of', 'tireless'], ['tireless', 'effort'], ['effort', 'from'], ['from', 'a'], ['a', 'team'], ['team', 'of'], ['of', 'language'], ['language', 'experts,'], ['experts,', 'documentation'], ['documentation', 'gurus,'], ['gurus,', 'compiler'], ['compiler', 'optimization'], ['optimization', 'ninjas,'], ['ninjas,', 'and'], ['and', 'an'], ['an', 'incredibly'], ['incredibly', 'important'], ['important', 'internal'], ['internal', 'dogfooding'], ['dogfooding', 'group'], ['group', 'who'], ['who', 'provided'], ['provided', 'feedback'], ['feedback', 'to'], ['to', 'help'], ['help', 'refine'], ['refine', 'and'], ['and', 'battle-test'], ['battle-test', 'ideas.'], ['ideas.', 'Of'], ['Of', 'course,'], ['course,', 'it'], ['it', 'also'], ['also', 'greatly'], ['greatly', 'benefited'], ['benefited', 'from'], ['from', 'the'], ['the', 'experiences'], ['experiences', 'hard-won'], ['hard-won', 'by'], ['by', 'many'], ['many', 'other'], ['other', 'languages'], ['languages', 'in'], ['in', 'the'], ['the', 'field,'], ['field,', 'drawing'], ['drawing', 'ideas'], ['ideas', 'from'], ['from', 'Objective-C,'], ['Objective-C,', 'Rust,'], ['Rust,', 'Haskell,'], ['Haskell,', 'Ruby,'], ['Ruby,', 'Python,'], ['Python,', 'C#,'], ['C#,', 'CLU,'], ['CLU,', 'and'], ['and', 'far'], ['far', 'too'], ['too', 'many'], ['many', 'others'], ['others', 'to'], ['to', 'list.'], ['list.', '^'], ['^', 'Kuhlman,'], ['Kuhlman,', 'Dave.'], ['Dave.', '\"A'], ['\"A', 'Python'], ['Python', 'Book:'], ['Book:', 'Beginning'], ['Beginning', 'Python,'], ['Python,', 'Advanced'], ['Advanced', 'Python,'], ['Python,', 'and'], ['and', 'Python'], ['Python', 'Exercises\".'], ['Exercises\".', 'Section'], ['Section', '.'], ['.', '.'], ['.', 'Archived'], ['Archived', 'from'], ['from', 'the'], ['the', 'original'], ['original', '(PDF)'], ['(PDF)', 'on'], ['on', 'June'], ['June', '.'], ['.', '^'], ['^', '\"About'], ['\"About', 'Python\".'], ['Python\".', 'Python'], ['Python', 'Software'], ['Software', 'Foundation.'], ['Foundation.', 'Archived'], ['Archived', 'from'], ['from', 'the'], ['the', 'original'], ['original', 'on'], ['on', 'April'], ['April', '.'], ['.', 'Retrieved'], ['Retrieved', 'April'], ['April', '.,'], ['.,', 'second'], ['second', 'section'], ['section', '\"Fans'], ['\"Fans', 'of'], ['of', 'Python'], ['Python', 'use'], ['use', 'the'], ['the', 'phrase'], ['phrase', '\"batteries'], ['\"batteries', 'included\"'], ['included\"', 'to'], ['to', 'describe'], ['describe', 'the'], ['the', 'standard'], ['standard', 'library,'], ['library,', 'which'], ['which', 'covers'], ['covers', 'everything'], ['everything', 'from'], ['from', 'asynchronous'], ['asynchronous', 'processing'], ['processing', 'to'], ['to', 'zip'], ['zip', 'files.\"'], ['files.\"', '^'], ['^', '\"PEP'], ['\"PEP', 'Python'], ['Python', 'Advanced'], ['Advanced', 'Library\".'], ['Library\".', 'Python.org.'], ['Python.org.', 'Archived'], ['Archived', 'from'], ['from', 'the'], ['the', 'original'], ['original', 'on'], ['on', 'May'], ['May', '.'], ['.', 'Retrieved'], ['Retrieved', 'October'], ['October', '.'], ['.', '^'], ['^', 'Rossum,'], ['Rossum,', 'Guido'], ['Guido', 'Van'], ['Van', '('], ['(', 'January'], ['January', ').'], [').', '\"The'], ['\"The', 'History'], ['History', 'of'], ['of', 'Python:'], ['Python:', 'A'], ['A', 'Brief'], ['Brief', 'Timeline'], ['Timeline', 'of'], ['of', 'Python\".'], ['Python\".', 'The'], ['The', 'History'], ['History', 'of'], ['of', 'Python.'], ['Python.', 'Archived'], ['Archived', 'from'], ['from', 'the'], ['the', 'original'], ['original', 'on'], ['on', 'June'], ['June', '.'], ['.', 'Retrieved'], ['Retrieved', 'March'], ['March', '.'], ['.', '^'], ['^', 'Peterson,'], ['Peterson,', 'Benjamin'], ['Benjamin', '('], ['(', 'April'], ['April', ').'], [').', '\"Python'], ['\"Python', 'Insider:'], ['Insider:', 'Python'], ['Python', '.'], ['.', '.'], ['.', ','], [',', 'the'], ['the', 'last'], ['last', 'release'], ['release', 'of'], ['of', 'Python'], ['Python', '\".'], ['\".', 'Python'], ['Python', 'Insider.'], ['Insider.', 'Archived'], ['Archived', 'from'], ['from', 'the'], ['the', 'original'], ['original', 'on'], ['on', 'April'], ['April', '.'], ['.', 'Retrieved'], ['Retrieved', 'April'], ['April', '.'], ['.', '^'], ['^', '\"Stack'], ['\"Stack', 'Overflow'], ['Overflow', 'Developer'], ['Developer', 'Survey'], ['Survey', '\".'], ['\".', 'Stack'], ['Stack', 'Overflow.'], ['Overflow.', 'Retrieved'], ['Retrieved', 'August'], ['August', '.'], ['.', '^'], ['^', '\"The'], ['\"The', 'State'], ['State', 'of'], ['of', 'Developer'], ['Developer', 'Ecosystem'], ['Ecosystem', 'in'], ['in', 'Infographic\".'], ['Infographic\".', 'JetBrains:'], ['JetBrains:', 'Developer'], ['Developer', 'Tools'], ['Tools', 'for'], ['for', 'Professionals'], ['Professionals', 'and'], ['and', 'Teams.'], ['Teams.', 'Archived'], ['Archived', 'from'], ['from', 'the'], ['the', 'original'], ['original', 'on'], ['on', 'March'], ['March', '.'], ['.', 'Retrieved'], ['Retrieved', 'March'], ['March', '.'], ['.', '^'], ['^', 'a'], ['a', 'b'], ['b', '\"TIOBE'], ['\"TIOBE', 'Index\".'], ['Index\".', 'TIOBE.'], ['TIOBE.', 'Retrieved'], ['Retrieved', 'January'], ['January', '.'], ['.', 'The'], ['The', 'TIOBE'], ['TIOBE', 'Programming'], ['Programming', 'Community'], ['Community', 'index'], ['index', 'is'], ['is', 'an'], ['an', 'indicator'], ['indicator', 'of'], ['of', 'the'], ['the', 'popularity'], ['popularity', 'of'], ['of', 'programming'], ['programming', 'languages'], ['languages', 'Updated'], ['Updated', 'as'], ['as', 'required.'], ['required.', '^'], ['^', '\"PYPL'], ['\"PYPL', 'PopularitY'], ['PopularitY', 'of'], ['of', 'Programming'], ['Programming', 'Language'], ['Language', 'index\".'], ['index\".', 'pypl.github.io.'], ['pypl.github.io.', 'Archived'], ['Archived', 'from'], ['from', 'the'], ['the', 'original'], ['original', 'on'], ['on', 'March'], ['March', '.'], ['.', 'Retrieved'], ['Retrieved', 'March'], ['March', '.'], ['.', '^'], ['^', 'a'], ['a', 'b'], ['b', 'Venners,'], ['Venners,', 'Bill'], ['Bill', '('], ['(', 'January'], ['January', ').'], [').', '\"The'], ['\"The', 'Making'], ['Making', 'of'], ['of', 'Python\".'], ['Python\".', 'Artima'], ['Artima', 'Developer.'], ['Developer.', 'Artima.'], ['Artima.', 'Archived'], ['Archived', 'from'], ['from', 'the'], ['the', 'original'], ['original', 'on'], ['on', 'September'], ['September', '.'], ['.', 'Retrieved'], ['Retrieved', 'March'], ['March', '.'], ['.', '^'], ['^', 'van'], ['van', 'Rossum,'], ['Rossum,', 'Guido'], ['Guido', '('], ['(', 'August'], ['August', ').'], [').', '\"SETL'], ['\"SETL', '(was:'], ['(was:', 'Lukewarm'], ['Lukewarm', 'about'], ['about', 'range'], ['range', 'literals)\".'], ['literals)\".', 'Python-Dev'], ['Python-Dev', '(Mailing'], ['(Mailing', 'list).'], ['list).', 'Archived'], ['Archived', 'from'], ['from', 'the'], ['the', 'original'], ['original', 'on'], ['on', 'July'], ['July', '.'], ['.', 'Retrieved'], ['Retrieved', 'March'], ['March', '.'], ['.', '^'], ['^', 'van'], ['van', 'Rossum,'], ['Rossum,', 'Guido'], ['Guido', '('], ['(', 'January'], ['January', ').'], [').', '\"A'], ['\"A', 'Brief'], ['Brief', 'Timeline'], ['Timeline', 'of'], ['of', 'Python\".'], ['Python\".', 'The'], ['The', 'History'], ['History', 'of'], ['of', 'Python.'], ['Python.', 'Archived'], ['Archived', 'from'], ['from', 'the'], ['the', 'original'], ['original', 'on'], ['on', 'June'], ['June', '.'], ['.', 'Retrieved'], ['Retrieved', 'January'], ['January', '.'], ['.', '^'], ['^', 'Fairchild,'], ['Fairchild,', 'Carlie'], ['Carlie', '('], ['(', 'July'], ['July', ').'], [').', '\"Guido'], ['\"Guido', 'van'], ['van', 'Rossum'], ['Rossum', 'Stepping'], ['Stepping', 'Down'], ['Down', 'from'], ['from', 'Role'], ['Role', 'as'], ['as', \"Python's\"], [\"Python's\", 'Benevolent'], ['Benevolent', 'Dictator'], ['Dictator', 'For'], ['For', 'Life\".'], ['Life\".', 'Linux'], ['Linux', 'Journal.'], ['Journal.', 'Archived'], ['Archived', 'from'], ['from', 'the'], ['the', 'original'], ['original', 'on'], ['on', 'July'], ['July', '.'], ['.', 'Retrieved'], ['Retrieved', 'July'], ['July', '.'], ['.', '^'], ['^', '\"PEP'], ['\"PEP', '\".'], ['\".', 'Python'], ['Python', 'Software'], ['Software', 'Foundation.'], ['Foundation.', 'Archived'], ['Archived', 'from'], ['from', 'the'], ['the', 'original'], ['original', 'on'], ['on', 'June'], ['June', '.'], ['.', 'Retrieved'], ['Retrieved', 'May'], ['May', '.'], ['.', '^'], ['^', '\"PEP'], ['\"PEP', 'Python'], ['Python', 'Language'], ['Language', 'Governance\".'], ['Governance\".', 'Python.org.'], ['Python.org.', 'Archived'], ['Archived', 'from'], ['from', 'the'], ['the', 'original'], ['original', 'on'], ['on', 'May'], ['May', '.'], ['.', 'Retrieved'], ['Retrieved', 'August'], ['August', '.'], ['.', '^'], ['^', 'Kuchling,'], ['Kuchling,', 'A.'], ['A.', 'M.;'], ['M.;', 'Zadka,'], ['Zadka,', 'Moshe'], ['Moshe', '('], ['(', 'October'], ['October', ').'], [').', '\"What\\'s'], ['\"What\\'s', 'New'], ['New', 'in'], ['in', 'Python'], ['Python', '.'], ['.', '\".'], ['\".', 'Python'], ['Python', 'Software'], ['Software', 'Foundation.'], ['Foundation.', 'Archived'], ['Archived', 'from'], ['from', 'the'], ['the', 'original'], ['original', 'on'], ['on', 'October'], ['October', '.'], ['.', 'Retrieved'], ['Retrieved', 'February'], ['February', '.'], ['.', '^'], ['^', 'van'], ['van', 'Rossum,'], ['Rossum,', 'Guido'], ['Guido', '('], ['(', 'April'], ['April', ').'], [').', '\"PEP'], ['\"PEP', 'Python'], ['Python', '\".'], ['\".', 'Python'], ['Python', 'Enhancement'], ['Enhancement', 'Proposals.'], ['Proposals.', 'Python'], ['Python', 'Software'], ['Software', 'Foundation.'], ['Foundation.', 'Archived'], ['Archived', 'from'], ['from', 'the'], ['the', 'original'], ['original', 'on'], ['on', 'March'], ['March', '.'], ['.', 'Retrieved'], ['Retrieved', 'June'], ['June', '.'], ['.', '^'], ['^', '\"'], ['\"', 'to'], ['to', 'Automated'], ['Automated', 'Python'], ['Python', 'to'], ['to', 'code'], ['code', 'translation\".'], ['translation\".', 'docs.python.org.'], ['docs.python.org.', 'Archived'], ['Archived', 'from'], ['from', 'the'], ['the', 'original'], ['original', 'on'], ['on', 'June'], ['June', '.'], ['.', 'Retrieved'], ['Retrieved', 'February'], ['February', '.'], ['.', '^'], ['^', '\"PEP'], ['\"PEP', 'Python'], ['Python', '.'], ['.', 'Release'], ['Release', 'Schedule\".'], ['Schedule\".', 'python.org.'], ['python.org.', 'Archived'], ['Archived', 'from'], ['from', 'the'], ['the', 'original'], ['original', 'on'], ['on', 'May'], ['May', '.'], ['.', 'Retrieved'], ['Retrieved', 'January'], ['January', '.'], ['.', '^'], ['^', '\"PEP'], ['\"PEP', 'Network'], ['Network', 'Security'], ['Security', 'Enhancements'], ['Enhancements', 'for'], ['for', 'Python'], ['Python', '.'], ['.', '.x\".'], ['.x\".', 'python.org.'], ['python.org.', 'Archived'], ['Archived', 'from'], ['from', 'the'], ['the', 'original'], ['original', 'on'], ['on', 'June'], ['June', '.'], ['.', 'Retrieved'], ['Retrieved', 'January'], ['January', '.'], ['.', '^'], ['^', '\"Sunsetting'], ['\"Sunsetting', 'Python'], ['Python', '\".'], ['\".', 'Python.org.'], ['Python.org.', 'Archived'], ['Archived', 'from'], ['from', 'the'], ['the', 'original'], ['original', 'on'], ['on', 'January'], ['January', '.'], ['.', 'Retrieved'], ['Retrieved', 'September'], ['September', '.'], ['.', '^'], ['^', '\"PEP'], ['\"PEP', 'Python'], ['Python', '.'], ['.', 'Release'], ['Release', 'Schedule\".'], ['Schedule\".', 'Python.org.'], ['Python.org.', 'Archived'], ['Archived', 'from'], ['from', 'the'], ['the', 'original'], ['original', 'on'], ['on', 'January'], ['January', '.'], ['.', 'Retrieved'], ['Retrieved', 'September'], ['September', '.'], ['.', '^'], ['^', 'Langa,'], ['Langa,', 'ukasz'], ['ukasz', '('], ['(', 'February'], ['February', ').'], [').', '\"Python'], ['\"Python', 'Insider:'], ['Insider:', 'Python'], ['Python', '.'], ['.', '.'], ['.', 'and'], ['and', '.'], ['.', '.'], ['.', 'are'], ['are', 'now'], ['now', 'available\".'], ['available\".', 'Python'], ['Python', 'Insider.'], ['Insider.', 'Archived'], ['Archived', 'from'], ['from', 'the'], ['the', 'original'], ['original', 'on'], ['on', 'February'], ['February', '.'], ['.', 'Retrieved'], ['Retrieved', 'February'], ['February', '.'], ['.', '^'], ['^', '\"Red'], ['\"Red', 'Hat'], ['Hat', 'Customer'], ['Customer', 'Portal'], ['Portal', 'Access'], ['Access', 'to'], ['to', 'x'], ['x', 'support'], ['support', 'and'], ['and', 'knowledge\".'], ['knowledge\".', 'access.redhat.com.'], ['access.redhat.com.', 'Archived'], ['Archived', 'from'], ['from', 'the'], ['the', 'original'], ['original', 'on'], ['on', 'March'], ['March', '.'], ['.', 'Retrieved'], ['Retrieved', 'February'], ['February', '.'], ['.', '^'], ['^', '\"CVE'], ['\"CVE', 'CVE-'], ['CVE-', '-'], ['-', '\".'], ['\".', 'cve.mitre.org.'], ['cve.mitre.org.', 'Archived'], ['Archived', 'from'], ['from', 'the'], ['the', 'original'], ['original', 'on'], ['on', 'February'], ['February', '.'], ['.', 'Retrieved'], ['Retrieved', 'February'], ['February', '.'], ['.', '^'], ['^', '\"CVE'], ['\"CVE', 'CVE-'], ['CVE-', '-'], ['-', '\".'], ['\".', 'cve.mitre.org.'], ['cve.mitre.org.', 'Archived'], ['Archived', 'from'], ['from', 'the'], ['the', 'original'], ['original', 'on'], ['on', 'February'], ['February', '.'], ['.', 'Retrieved'], ['Retrieved', 'February'], ['February', '.'], ['.', '^'], ['^', 'Langa,'], ['Langa,', 'ukasz'], ['ukasz', '('], ['(', 'March'], ['March', ').'], [').', '\"Python'], ['\"Python', 'Insider:'], ['Insider:', 'Python'], ['Python', '.'], ['.', '.'], ['.', 'and'], ['and', '.'], ['.', '.'], ['.', 'are'], ['are', 'now'], ['now', 'available'], ['available', 'out'], ['out', 'of'], ['of', 'schedule\".'], ['schedule\".', 'Python'], ['Python', 'Insider.'], ['Insider.', 'Retrieved'], ['Retrieved', 'April'], ['April', '.'], ['.', '^'], ['^', 'Langa,'], ['Langa,', 'ukasz'], ['ukasz', '('], ['(', 'March'], ['March', ').'], [').', '\"Python'], ['\"Python', 'Insider:'], ['Insider:', 'Python'], ['Python', '.'], ['.', '.'], ['.', ','], [',', '.'], ['.', '.'], ['.', ','], [',', '.'], ['.', '.'], ['.', ','], [',', 'and'], ['and', '.'], ['.', '.'], ['.', 'are'], ['are', 'now'], ['now', 'available'], ['available', 'with'], ['with', 'security'], ['security', 'content\".'], ['content\".', 'Python'], ['Python', 'Insider.'], ['Insider.', 'Retrieved'], ['Retrieved', 'April'], ['April', '.'], ['.', '^'], ['^', 'Langa,'], ['Langa,', 'ukasz'], ['ukasz', '('], ['(', 'May'], ['May', ').'], [').', '\"Python'], ['\"Python', 'Insider:'], ['Insider:', 'Python'], ['Python', '.'], ['.', '.'], ['.', 'is'], ['is', 'now'], ['now', 'available\".'], ['available\".', 'Python'], ['Python', 'Insider.'], ['Insider.', 'Retrieved'], ['Retrieved', 'May'], ['May', '.'], ['.', '^'], ['^', '\"Python'], ['\"Python', 'Insider:'], ['Insider:', 'Python'], ['Python', 'releases'], ['releases', '.'], ['.', '.'], ['.', ','], [',', '.'], ['.', '.'], ['.', ','], [',', '.'], ['.', '.'], ['.', ','], [',', 'and'], ['and', '.'], ['.', '.'], ['.', 'are'], ['are', 'now'], ['now', 'available\".'], ['available\".', 'pythoninsider.blogspot.com.'], ['pythoninsider.blogspot.com.', 'September'], ['September', '.'], ['.', 'Retrieved'], ['Retrieved', 'September'], ['September', '.'], ['.', '^'], ['^', '\"CVE'], ['\"CVE', '-'], ['-', 'CVE-'], ['CVE-', '-'], ['-', '\".'], ['\".', 'cve.mitre.org.'], ['cve.mitre.org.', 'Retrieved'], ['Retrieved', 'September'], ['September', '.'], ['.', '^'], ['^', 'corbet'], ['corbet', '('], ['(', 'October'], ['October', ').'], [').', '\"Python'], ['\"Python', '.'], ['.', 'released'], ['released', 'LWN.net'], ['LWN.net', '\".'], ['\".', 'lwn.net.'], ['lwn.net.', 'Retrieved'], ['Retrieved', 'November'], ['November', '.'], ['.', '^'], ['^', 'The'], ['The', 'Cain'], ['Cain', 'Gang'], ['Gang', 'Ltd.'], ['Ltd.', '\"Python'], ['\"Python', 'Metaclasses:'], ['Metaclasses:', 'Who?'], ['Who?', 'Why?'], ['Why?', 'When?\"'], ['When?\"', '(PDF).'], ['(PDF).', 'Archived'], ['Archived', 'from'], ['from', 'the'], ['the', 'original'], ['original', '(PDF)'], ['(PDF)', 'on'], ['on', 'May'], ['May', '.'], ['.', 'Retrieved'], ['Retrieved', 'June'], ['June', '.'], ['.', '^'], ['^', '\"'], ['\"', '.'], ['.', '.'], ['.', 'Special'], ['Special', 'method'], ['method', 'names\".'], ['names\".', 'The'], ['The', 'Python'], ['Python', 'Language'], ['Language', 'Reference.'], ['Reference.', 'Python'], ['Python', 'Software'], ['Software', 'Foundation.'], ['Foundation.', 'Archived'], ['Archived', 'from'], ['from', 'the'], ['the', 'original'], ['original', 'on'], ['on', 'December'], ['December', '.'], ['.', 'Retrieved'], ['Retrieved', 'June'], ['June', '.'], ['.', '^'], ['^', '\"PyDBC:'], ['\"PyDBC:', 'method'], ['method', 'preconditions,'], ['preconditions,', 'method'], ['method', 'postconditions'], ['postconditions', 'and'], ['and', 'class'], ['class', 'invariants'], ['invariants', 'for'], ['for', 'Python\".'], ['Python\".', 'Archived'], ['Archived', 'from'], ['from', 'the'], ['the', 'original'], ['original', 'on'], ['on', 'November'], ['November', '.'], ['.', 'Retrieved'], ['Retrieved', 'September'], ['September', '.'], ['.', '^'], ['^', '\"Contracts'], ['\"Contracts', 'for'], ['for', 'Python\".'], ['Python\".', 'Archived'], ['Archived', 'from'], ['from', 'the'], ['the', 'original'], ['original', 'on'], ['on', 'June'], ['June', '.'], ['.', 'Retrieved'], ['Retrieved', 'September'], ['September', '.'], ['.', '^'], ['^', '\"PyDatalog\".'], ['\"PyDatalog\".', 'Archived'], ['Archived', 'from'], ['from', 'the'], ['the', 'original'], ['original', 'on'], ['on', 'June'], ['June', '.'], ['.', 'Retrieved'], ['Retrieved', 'July'], ['July', '.'], ['.', '^'], ['^', '\"Extending'], ['\"Extending', 'and'], ['and', 'Embedding'], ['Embedding', 'the'], ['the', 'Python'], ['Python', 'Interpreter:'], ['Interpreter:', 'Reference'], ['Reference', 'Counts\".'], ['Counts\".', 'Docs.python.org.'], ['Docs.python.org.', 'Archived'], ['Archived', 'from'], ['from', 'the'], ['the', 'original'], ['original', 'on'], ['on', 'October'], ['October', '.'], ['.', 'Retrieved'], ['Retrieved', 'June'], ['June', '.'], ['.', 'Since'], ['Since', 'Python'], ['Python', 'makes'], ['makes', 'heavy'], ['heavy', 'use'], ['use', 'of'], ['of', 'malloc()'], ['malloc()', 'and'], ['and', 'free(),'], ['free(),', 'it'], ['it', 'needs'], ['needs', 'a'], ['a', 'strategy'], ['strategy', 'to'], ['to', 'avoid'], ['avoid', 'memory'], ['memory', 'leaks'], ['leaks', 'as'], ['as', 'well'], ['well', 'as'], ['as', 'the'], ['the', 'use'], ['use', 'of'], ['of', 'freed'], ['freed', 'memory.'], ['memory.', 'The'], ['The', 'chosen'], ['chosen', 'method'], ['method', 'is'], ['is', 'called'], ['called', 'reference'], ['reference', 'counting.'], ['counting.', '^'], ['^', 'a'], ['a', 'b'], ['b', 'Hettinger,'], ['Hettinger,', 'Raymond'], ['Raymond', '('], ['(', 'January'], ['January', ').'], [').', '\"PEP'], ['\"PEP', 'Generator'], ['Generator', 'Expressions\".'], ['Expressions\".', 'Python'], ['Python', 'Enhancement'], ['Enhancement', 'Proposals.'], ['Proposals.', 'Python'], ['Python', 'Software'], ['Software', 'Foundation.'], ['Foundation.', 'Archived'], ['Archived', 'from'], ['from', 'the'], ['the', 'original'], ['original', 'on'], ['on', 'June'], ['June', '.'], ['.', 'Retrieved'], ['Retrieved', 'February'], ['February', '.'], ['.', '^'], ['^', '\"'], ['\"', '.'], ['.', 'itertools'], ['itertools', 'Functions'], ['Functions', 'creating'], ['creating', 'iterators'], ['iterators', 'for'], ['for', 'efficient'], ['efficient', 'looping\".'], ['looping\".', 'Docs.python.org.'], ['Docs.python.org.', 'Archived'], ['Archived', 'from'], ['from', 'the'], ['the', 'original'], ['original', 'on'], ['on', 'June'], ['June', '.'], ['.', 'Retrieved'], ['Retrieved', 'November'], ['November', '.'], ['.', '^'], ['^', 'a'], ['a', 'b'], ['b', 'Peters,'], ['Peters,', 'Tim'], ['Tim', '('], ['(', 'August'], ['August', ').'], [').', '\"PEP'], ['\"PEP', 'The'], ['The', 'Zen'], ['Zen', 'of'], ['of', 'Python\".'], ['Python\".', 'Python'], ['Python', 'Enhancement'], ['Enhancement', 'Proposals.'], ['Proposals.', 'Python'], ['Python', 'Software'], ['Software', 'Foundation.'], ['Foundation.', 'Archived'], ['Archived', 'from'], ['from', 'the'], ['the', 'original'], ['original', 'on'], ['on', 'December'], ['December', '.'], ['.', 'Retrieved'], ['Retrieved', 'November'], ['November', '.'], ['.', '^'], ['^', 'Martelli,'], ['Martelli,', 'Alex;'], ['Alex;', 'Ravenscroft,'], ['Ravenscroft,', 'Anna;'], ['Anna;', 'Ascher,'], ['Ascher,', 'David'], ['David', '('], ['(', ').'], [').', 'Python'], ['Python', 'Cookbook,'], ['Cookbook,', 'nd'], ['nd', 'Edition.'], ['Edition.', \"O'Reilly\"], [\"O'Reilly\", 'Media.'], ['Media.', 'p.'], ['p.', '.'], ['.', 'ISBN'], ['ISBN', '-'], ['-', '-'], ['-', '-'], ['-', '-'], ['-', '.'], ['.', 'Archived'], ['Archived', 'from'], ['from', 'the'], ['the', 'original'], ['original', 'on'], ['on', 'February'], ['February', '.'], ['.', 'Retrieved'], ['Retrieved', 'November'], ['November', '.'], ['.', '^'], ['^', '\"Python'], ['\"Python', 'Culture\".'], ['Culture\".', 'ebeab.'], ['ebeab.', 'January'], ['January', '.'], ['.', 'Archived'], ['Archived', 'from'], ['from', 'the'], ['the', 'original'], ['original', 'on'], ['on', 'January'], ['January', '.'], ['.', '^'], ['^', '\"Why'], ['\"Why', 'is'], ['is', 'it'], ['it', 'called'], ['called', 'Python?\".'], ['Python?\".', 'General'], ['General', 'Python'], ['Python', 'FAQ.'], ['FAQ.', 'Docs.python.org.'], ['Docs.python.org.', 'Archived'], ['Archived', 'from'], ['from', 'the'], ['the', 'original'], ['original', 'on'], ['on', 'October'], ['October', '.'], ['.', 'Retrieved'], ['Retrieved', 'January'], ['January', '.'], ['.', '^'], ['^', '\"'], ['\"', 'Ways'], ['Ways', 'Python'], ['Python', 'Is'], ['Is', 'a'], ['a', 'Powerful'], ['Powerful', 'Force'], ['Force', 'on'], ['on', 'the'], ['the', 'Web\".'], ['Web\".', 'Archived'], ['Archived', 'from'], ['from', 'the'], ['the', 'original'], ['original', 'on'], ['on', 'May'], ['May', '.'], ['.', 'Retrieved'], ['Retrieved', 'July'], ['July', '.'], ['.', '^'], ['^', '\"pprint'], ['\"pprint', 'Data'], ['Data', 'pretty'], ['pretty', 'printer'], ['printer', 'Python'], ['Python', '.'], ['.', '.'], ['.', 'documentation\".'], ['documentation\".', 'docs.python.org.'], ['docs.python.org.', 'Archived'], ['Archived', 'from'], ['from', 'the'], ['the', 'original'], ['original', 'on'], ['on', 'January'], ['January', '.'], ['.', 'Retrieved'], ['Retrieved', 'November'], ['November', '.'], ['.', 'stuff'], ['stuff', '='], ['=', \"'spam',\"], [\"'spam',\", \"'eggs',\"], [\"'eggs',\", \"'lumberjack',\"], [\"'lumberjack',\", \"'knights',\"], [\"'knights',\", \"'ni'\"], [\"'ni'\", '^'], ['^', 'Clark,'], ['Clark,', 'Robert'], ['Robert', '('], ['(', 'April'], ['April', ').'], [').', '\"How'], ['\"How', 'to'], ['to', 'be'], ['be', 'Pythonic'], ['Pythonic', 'and'], ['and', 'why'], ['why', 'you'], ['you', 'should'], ['should', 'care\".'], ['care\".', 'Medium.'], ['Medium.', 'Archived'], ['Archived', 'from'], ['from', 'the'], ['the', 'original'], ['original', 'on'], ['on', 'August'], ['August', '.'], ['.', 'Retrieved'], ['Retrieved', 'January'], ['January', '.'], ['.', '^'], ['^', '\"Code'], ['\"Code', 'Style'], ['Style', 'The'], ['The', \"Hitchhiker's\"], [\"Hitchhiker's\", 'Guide'], ['Guide', 'to'], ['to', 'Python\".'], ['Python\".', 'docs.python-guide.org.'], ['docs.python-guide.org.', 'Archived'], ['Archived', 'from'], ['from', 'the'], ['the', 'original'], ['original', 'on'], ['on', 'January'], ['January', '.'], ['.', 'Retrieved'], ['Retrieved', 'January'], ['January', '.'], ['.', '^'], ['^', '\"Is'], ['\"Is', 'Python'], ['Python', 'a'], ['a', 'good'], ['good', 'language'], ['language', 'for'], ['for', 'beginning'], ['beginning', 'programmers?\".'], ['programmers?\".', 'General'], ['General', 'Python'], ['Python', 'FAQ.'], ['FAQ.', 'Python'], ['Python', 'Software'], ['Software', 'Foundation.'], ['Foundation.', 'Archived'], ['Archived', 'from'], ['from', 'the'], ['the', 'original'], ['original', 'on'], ['on', 'October'], ['October', '.'], ['.', 'Retrieved'], ['Retrieved', 'March'], ['March', '.'], ['.', '^'], ['^', '\"Myths'], ['\"Myths', 'about'], ['about', 'indentation'], ['indentation', 'in'], ['in', 'Python\".'], ['Python\".', 'Secnetix.de.'], ['Secnetix.de.', 'Archived'], ['Archived', 'from'], ['from', 'the'], ['the', 'original'], ['original', 'on'], ['on', 'February'], ['February', '.'], ['.', 'Retrieved'], ['Retrieved', 'April'], ['April', '.'], ['.', '^'], ['^', 'Guttag,'], ['Guttag,', 'John'], ['John', 'V.'], ['V.', '('], ['(', 'August'], ['August', ').'], [').', 'Introduction'], ['Introduction', 'to'], ['to', 'Computation'], ['Computation', 'and'], ['and', 'Programming'], ['Programming', 'Using'], ['Using', 'Python:'], ['Python:', 'With'], ['With', 'Application'], ['Application', 'to'], ['to', 'Understanding'], ['Understanding', 'Data.'], ['Data.', 'MIT'], ['MIT', 'Press.'], ['Press.', 'ISBN'], ['ISBN', '-'], ['-', '-'], ['-', '-'], ['-', '-'], ['-', '.'], ['.', '^'], ['^', '\"PEP'], ['\"PEP', 'Style'], ['Style', 'Guide'], ['Guide', 'for'], ['for', 'Python'], ['Python', 'Code\".'], ['Code\".', 'Python.org.'], ['Python.org.', 'Archived'], ['Archived', 'from'], ['from', 'the'], ['the', 'original'], ['original', 'on'], ['on', 'April'], ['April', '.'], ['.', 'Retrieved'], ['Retrieved', 'March'], ['March', '.'], ['.', '^'], ['^', '\"'], ['\"', '.'], ['.', 'Errors'], ['Errors', 'and'], ['and', 'Exceptions'], ['Exceptions', 'Python'], ['Python', '.'], ['.', '.'], ['.', 'a'], ['a', 'documentation\".'], ['documentation\".', 'docs.python.org.'], ['docs.python.org.', 'Retrieved'], ['Retrieved', 'May'], ['May', '.'], ['.', '^'], ['^', '\"Highlights:'], ['\"Highlights:', 'Python'], ['Python', '.'], ['.', '\".'], ['\".', 'Python.org.'], ['Python.org.', 'Archived'], ['Archived', 'from'], ['from', 'the'], ['the', 'original'], ['original', 'on'], ['on', 'August'], ['August', '.'], ['.', 'Retrieved'], ['Retrieved', 'March'], ['March', '.'], ['.', '^'], ['^', 'van'], ['van', 'Rossum,'], ['Rossum,', 'Guido'], ['Guido', '('], ['(', 'April'], ['April', ').'], [').', '\"Tail'], ['\"Tail', 'Recursion'], ['Recursion', 'Elimination\".'], ['Elimination\".', 'Neopythonic.blogspot.be.'], ['Neopythonic.blogspot.be.', 'Archived'], ['Archived', 'from'], ['from', 'the'], ['the', 'original'], ['original', 'on'], ['on', 'May'], ['May', '.'], ['.', 'Retrieved'], ['Retrieved', 'December'], ['December', '.'], ['.', '^'], ['^', 'van'], ['van', 'Rossum,'], ['Rossum,', 'Guido'], ['Guido', '('], ['(', 'February'], ['February', ').'], [').', '\"Language'], ['\"Language', 'Design'], ['Design', 'Is'], ['Is', 'Not'], ['Not', 'Just'], ['Just', 'Solving'], ['Solving', 'Puzzles\".'], ['Puzzles\".', 'Artima'], ['Artima', 'forums.'], ['forums.', 'Artima.'], ['Artima.', 'Archived'], ['Archived', 'from'], ['from', 'the'], ['the', 'original'], ['original', 'on'], ['on', 'January'], ['January', '.'], ['.', 'Retrieved'], ['Retrieved', 'March'], ['March', '.'], ['.', '^'], ['^', 'van'], ['van', 'Rossum,'], ['Rossum,', 'Guido;'], ['Guido;', 'Eby,'], ['Eby,', 'Phillip'], ['Phillip', 'J.'], ['J.', '('], ['(', 'May'], ['May', ').'], [').', '\"PEP'], ['\"PEP', 'Coroutines'], ['Coroutines', 'via'], ['via', 'Enhanced'], ['Enhanced', 'Generators\".'], ['Generators\".', 'Python'], ['Python', 'Enhancement'], ['Enhancement', 'Proposals.'], ['Proposals.', 'Python'], ['Python', 'Software'], ['Software', 'Foundation.'], ['Foundation.', 'Archived'], ['Archived', 'from'], ['from', 'the'], ['the', 'original'], ['original', 'on'], ['on', 'May'], ['May', '.'], ['.', 'Retrieved'], ['Retrieved', 'February'], ['February', '.'], ['.', '^'], ['^', '\"PEP'], ['\"PEP', '\".'], ['\".', 'Python.org.'], ['Python.org.', 'Archived'], ['Archived', 'from'], ['from', 'the'], ['the', 'original'], ['original', 'on'], ['on', 'June'], ['June', '.'], ['.', 'Retrieved'], ['Retrieved', 'December'], ['December', '.'], ['.', '^'], ['^', '\"division\".'], ['\"division\".', 'python.org.'], ['python.org.', 'Archived'], ['Archived', 'from'], ['from', 'the'], ['the', 'original'], ['original', 'on'], ['on', 'July'], ['July', '.'], ['.', 'Retrieved'], ['Retrieved', 'July'], ['July', '.'], ['.', '^'], ['^', '\"PEP'], ['\"PEP', 'A'], ['A', 'dedicated'], ['dedicated', 'infix'], ['infix', 'operator'], ['operator', 'for'], ['for', 'matrix'], ['matrix', 'multiplication\".'], ['multiplication\".', 'python.org.'], ['python.org.', 'Archived'], ['Archived', 'from'], ['from', 'the'], ['the', 'original'], ['original', 'on'], ['on', 'June'], ['June', '.'], ['.', 'Retrieved'], ['Retrieved', 'January'], ['January', '.'], ['.', '^'], ['^', '\"Python'], ['\"Python', '.'], ['.', '.'], ['.', 'Release'], ['Release', 'and'], ['and', 'Changelog\".'], ['Changelog\".', 'python.org.'], ['python.org.', 'Archived'], ['Archived', 'from'], ['from', 'the'], ['the', 'original'], ['original', 'on'], ['on', 'May'], ['May', '.'], ['.', 'Retrieved'], ['Retrieved', 'January'], ['January', '.'], ['.', '^'], ['^', '\"What\\'s'], ['\"What\\'s', 'New'], ['New', 'in'], ['in', 'Python'], ['Python', '.'], ['.', '\".'], ['\".', 'Archived'], ['Archived', 'from'], ['from', 'the'], ['the', 'original'], ['original', 'on'], ['on', 'June'], ['June', '.'], ['.', 'Retrieved'], ['Retrieved', 'October'], ['October', '.'], ['.', '^'], ['^', 'van'], ['van', 'Rossum,'], ['Rossum,', 'Guido;'], ['Guido;', 'Hettinger,'], ['Hettinger,', 'Raymond'], ['Raymond', '('], ['(', 'February'], ['February', ').'], [').', '\"PEP'], ['\"PEP', 'Conditional'], ['Conditional', 'Expressions\".'], ['Expressions\".', 'Python'], ['Python', 'Enhancement'], ['Enhancement', 'Proposals.'], ['Proposals.', 'Python'], ['Python', 'Software'], ['Software', 'Foundation.'], ['Foundation.', 'Archived'], ['Archived', 'from'], ['from', 'the'], ['the', 'original'], ['original', 'on'], ['on', 'March'], ['March', '.'], ['.', 'Retrieved'], ['Retrieved', 'July'], ['July', '.'], ['.', '^'], ['^', '\"'], ['\"', '.'], ['.', 'Built-in'], ['Built-in', 'Types'], ['Types', 'Python'], ['Python', '.'], ['.', '.'], ['.', 'rc'], ['rc', 'documentation\".'], ['documentation\".', 'python.org.'], ['python.org.', 'Archived'], ['Archived', 'from'], ['from', 'the'], ['the', 'original'], ['original', 'on'], ['on', 'June'], ['June', '.'], ['.', 'Retrieved'], ['Retrieved', 'October'], ['October', '.'], ['.', '^'], ['^', '\"'], ['\"', '.'], ['.', '.'], ['.', 'Tuples'], ['Tuples', 'and'], ['and', 'Sequences'], ['Sequences', 'Python'], ['Python', '.'], ['.', '.'], ['.', 'rc'], ['rc', 'documentation\".'], ['documentation\".', 'python.org.'], ['python.org.', 'Archived'], ['Archived', 'from'], ['from', 'the'], ['the', 'original'], ['original', 'on'], ['on', 'June'], ['June', '.'], ['.', 'Retrieved'], ['Retrieved', 'October'], ['October', '.'], ['.', '^'], ['^', 'a'], ['a', 'b'], ['b', '\"PEP'], ['\"PEP', 'Literal'], ['Literal', 'String'], ['String', 'Interpolation\".'], ['Interpolation\".', 'python.org.'], ['python.org.', 'Archived'], ['Archived', 'from'], ['from', 'the'], ['the', 'original'], ['original', 'on'], ['on', 'June'], ['June', '.'], ['.', 'Retrieved'], ['Retrieved', 'March'], ['March', '.'], ['.', '^'], ['^', '\"Why'], ['\"Why', 'must'], ['must', \"'self'\"], [\"'self'\", 'be'], ['be', 'used'], ['used', 'explicitly'], ['explicitly', 'in'], ['in', 'method'], ['method', 'definitions'], ['definitions', 'and'], ['and', 'calls?\".'], ['calls?\".', 'Design'], ['Design', 'and'], ['and', 'History'], ['History', 'FAQ.'], ['FAQ.', 'Python'], ['Python', 'Software'], ['Software', 'Foundation.'], ['Foundation.', 'Archived'], ['Archived', 'from'], ['from', 'the'], ['the', 'original'], ['original', 'on'], ['on', 'October'], ['October', '.'], ['.', 'Retrieved'], ['Retrieved', 'February'], ['February', '.'], ['.', '^'], ['^', 'Sweigart,'], ['Sweigart,', 'Al'], ['Al', '('], ['(', ').'], [').', 'Beyond'], ['Beyond', 'the'], ['the', 'Basic'], ['Basic', 'Stuff'], ['Stuff', 'with'], ['with', 'Python:'], ['Python:', 'Best'], ['Best', 'Practices'], ['Practices', 'for'], ['for', 'Writing'], ['Writing', 'Clean'], ['Clean', 'Code.'], ['Code.', 'No'], ['No', 'Starch'], ['Starch', 'Press.'], ['Press.', 'p.'], ['p.', '.'], ['.', 'ISBN'], ['ISBN', '-'], ['-', '-'], ['-', '-'], ['-', '-'], ['-', '.'], ['.', 'Archived'], ['Archived', 'from'], ['from', 'the'], ['the', 'original'], ['original', 'on'], ['on', 'August'], ['August', '.'], ['.', 'Retrieved'], ['Retrieved', 'July'], ['July', '.'], ['.', '^'], ['^', '\"The'], ['\"The', 'Python'], ['Python', 'Language'], ['Language', 'Reference,'], ['Reference,', 'section'], ['section', '.'], ['.', '.'], ['.', 'New-style'], ['New-style', 'and'], ['and', 'classic'], ['classic', 'classes,'], ['classes,', 'for'], ['for', 'release'], ['release', '.'], ['.', '.'], ['.', '\".'], ['\".', 'Archived'], ['Archived', 'from'], ['from', 'the'], ['the', 'original'], ['original', 'on'], ['on', 'October'], ['October', '.'], ['.', 'Retrieved'], ['Retrieved', 'January'], ['January', '.'], ['.', '^'], ['^', '\"Type'], ['\"Type', 'hinting'], ['hinting', 'for'], ['for', 'Python\".'], ['Python\".', 'LWN.net.'], ['LWN.net.', 'December'], ['December', '.'], ['.', 'Archived'], ['Archived', 'from'], ['from', 'the'], ['the', 'original'], ['original', 'on'], ['on', 'June'], ['June', '.'], ['.', 'Retrieved'], ['Retrieved', 'May'], ['May', '.'], ['.', '^'], ['^', '\"mypy'], ['\"mypy', 'Optional'], ['Optional', 'Static'], ['Static', 'Typing'], ['Typing', 'for'], ['for', 'Python\".'], ['Python\".', 'Archived'], ['Archived', 'from'], ['from', 'the'], ['the', 'original'], ['original', 'on'], ['on', 'June'], ['June', '.'], ['.', 'Retrieved'], ['Retrieved', 'January'], ['January', '.'], ['.', '^'], ['^', '\"'], ['\"', '.'], ['.', 'Floating'], ['Floating', 'Point'], ['Point', 'Arithmetic:'], ['Arithmetic:', 'Issues'], ['Issues', 'and'], ['and', 'Limitations'], ['Limitations', 'Python'], ['Python', '.'], ['.', '.'], ['.', 'documentation\".'], ['documentation\".', 'docs.python.org.'], ['docs.python.org.', 'Archived'], ['Archived', 'from'], ['from', 'the'], ['the', 'original'], ['original', 'on'], ['on', 'June'], ['June', '.'], ['.', 'Retrieved'], ['Retrieved', 'June'], ['June', '.'], ['.', 'Almost'], ['Almost', 'all'], ['all', 'machines'], ['machines', 'today'], ['today', '(November'], ['(November', ')'], [')', 'use'], ['use', 'IEEE-'], ['IEEE-', 'floating'], ['floating', 'point'], ['point', 'arithmetic,'], ['arithmetic,', 'and'], ['and', 'almost'], ['almost', 'all'], ['all', 'platforms'], ['platforms', 'map'], ['map', 'Python'], ['Python', 'floats'], ['floats', 'to'], ['to', 'IEEE-'], ['IEEE-', '\"double'], ['\"double', 'precision\".'], ['precision\".', '^'], ['^', 'Zadka,'], ['Zadka,', 'Moshe;'], ['Moshe;', 'van'], ['van', 'Rossum,'], ['Rossum,', 'Guido'], ['Guido', '('], ['(', 'March'], ['March', ').'], [').', '\"PEP'], ['\"PEP', 'Unifying'], ['Unifying', 'Long'], ['Long', 'Integers'], ['Integers', 'and'], ['and', 'Integers\".'], ['Integers\".', 'Python'], ['Python', 'Enhancement'], ['Enhancement', 'Proposals.'], ['Proposals.', 'Python'], ['Python', 'Software'], ['Software', 'Foundation.'], ['Foundation.', 'Archived'], ['Archived', 'from'], ['from', 'the'], ['the', 'original'], ['original', 'on'], ['on', 'May'], ['May', '.'], ['.', 'Retrieved'], ['Retrieved', 'September'], ['September', '.'], ['.', '^'], ['^', '\"Built-in'], ['\"Built-in', 'Types\".'], ['Types\".', 'Archived'], ['Archived', 'from'], ['from', 'the'], ['the', 'original'], ['original', 'on'], ['on', 'June'], ['June', '.'], ['.', 'Retrieved'], ['Retrieved', 'October'], ['October', '.'], ['.', '^'], ['^', '\"PEP'], ['\"PEP', 'A'], ['A', 'dedicated'], ['dedicated', 'infix'], ['infix', 'operator'], ['operator', 'for'], ['for', 'matrix'], ['matrix', 'multiplication\".'], ['multiplication\".', 'python.org.'], ['python.org.', 'Archived'], ['Archived', 'from'], ['from', 'the'], ['the', 'original'], ['original', 'on'], ['on', 'May'], ['May', '.'], ['.', 'Retrieved'], ['Retrieved', 'July'], ['July', '.'], ['.', '^'], ['^', 'a'], ['a', 'b'], ['b', 'Zadka,'], ['Zadka,', 'Moshe;'], ['Moshe;', 'van'], ['van', 'Rossum,'], ['Rossum,', 'Guido'], ['Guido', '('], ['(', 'March'], ['March', ').'], [').', '\"PEP'], ['\"PEP', 'Changing'], ['Changing', 'the'], ['the', 'Division'], ['Division', 'Operator\".'], ['Operator\".', 'Python'], ['Python', 'Enhancement'], ['Enhancement', 'Proposals.'], ['Proposals.', 'Python'], ['Python', 'Software'], ['Software', 'Foundation.'], ['Foundation.', 'Archived'], ['Archived', 'from'], ['from', 'the'], ['the', 'original'], ['original', 'on'], ['on', 'May'], ['May', '.'], ['.', 'Retrieved'], ['Retrieved', 'October'], ['October', '.'], ['.', '^'], ['^', '\"Why'], ['\"Why', \"Python's\"], [\"Python's\", 'Integer'], ['Integer', 'Division'], ['Division', 'Floors\".'], ['Floors\".', 'August'], ['August', '.'], ['.', 'Archived'], ['Archived', 'from'], ['from', 'the'], ['the', 'original'], ['original', 'on'], ['on', 'June'], ['June', '.'], ['.', 'Retrieved'], ['Retrieved', 'August'], ['August', '.'], ['.', '^'], ['^', '\"round\",'], ['\"round\",', 'The'], ['The', 'Python'], ['Python', 'standard'], ['standard', 'library,'], ['library,', 'release'], ['release', '.'], ['.', ','], [',', ':'], [':', 'Built-in'], ['Built-in', 'functions,'], ['functions,', 'archived'], ['archived', 'from'], ['from', 'the'], ['the', 'original'], ['original', 'on'], ['on', 'October'], ['October', ','], [',', 'retrieved'], ['retrieved', 'August'], ['August', '^'], ['^', '\"round\",'], ['\"round\",', 'The'], ['The', 'Python'], ['Python', 'standard'], ['standard', 'library,'], ['library,', 'release'], ['release', '.'], ['.', ','], [',', ':'], [':', 'Built-in'], ['Built-in', 'functions,'], ['functions,', 'archived'], ['archived', 'from'], ['from', 'the'], ['the', 'original'], ['original', 'on'], ['on', 'October'], ['October', ','], [',', 'retrieved'], ['retrieved', 'August'], ['August', '^'], ['^', 'Beazley,'], ['Beazley,', 'David'], ['David', 'M.'], ['M.', '('], ['(', ').'], [').', 'Python'], ['Python', 'Essential'], ['Essential', 'Reference'], ['Reference', '('], ['(', 'thed.).'], ['thed.).', 'p.'], ['p.', '.'], ['.', 'ISBN'], ['ISBN', '.'], ['.', '^'], ['^', 'Kernighan,'], ['Kernighan,', 'Brian'], ['Brian', 'W.;'], ['W.;', 'Ritchie,'], ['Ritchie,', 'Dennis'], ['Dennis', 'M.'], ['M.', '('], ['(', ').'], [').', 'The'], ['The', 'C'], ['C', 'Programming'], ['Programming', 'Language'], ['Language', '('], ['(', 'nded.).'], ['nded.).', 'p.'], ['p.', '.'], ['.', '^'], ['^', 'Batista,'], ['Batista,', 'Facundo.'], ['Facundo.', '\"PEP'], ['\"PEP', 'Decimal'], ['Decimal', 'Data'], ['Data', 'Type\".'], ['Type\".', 'Python.org.'], ['Python.org.', 'Archived'], ['Archived', 'from'], ['from', 'the'], ['the', 'original'], ['original', 'on'], ['on', 'June'], ['June', '.'], ['.', 'Retrieved'], ['Retrieved', 'September'], ['September', '.'], ['.', '^'], ['^', '\"What\\'s'], ['\"What\\'s', 'New'], ['New', 'in'], ['in', 'Python'], ['Python', '.'], ['.', 'Python'], ['Python', 'v'], ['v', '.'], ['.', '.'], ['.', 'documentation\".'], ['documentation\".', 'docs.python.org.'], ['docs.python.org.', 'Archived'], ['Archived', 'from'], ['from', 'the'], ['the', 'original'], ['original', 'on'], ['on', 'December'], ['December', '.'], ['.', 'Retrieved'], ['Retrieved', 'September'], ['September', '.'], ['.', '^'], ['^', '\"'], ['\"', 'Reasons'], ['Reasons', 'Python'], ['Python', 'Rocks'], ['Rocks', 'for'], ['for', 'Research'], ['Research', '(And'], ['(And', 'a'], ['a', 'Few'], ['Few', 'Reasons'], ['Reasons', 'it'], ['it', \"Doesn't)\"], [\"Doesn't)\", 'Hoyt'], ['Hoyt', 'Koepke\".'], ['Koepke\".', 'www.stat.washington.edu.'], ['www.stat.washington.edu.', 'Archived'], ['Archived', 'from'], ['from', 'the'], ['the', 'original'], ['original', 'on'], ['on', 'May'], ['May', '.'], ['.', 'Retrieved'], ['Retrieved', 'February'], ['February', '.'], ['.', '^'], ['^', 'Shell,'], ['Shell,', 'Scott'], ['Scott', '('], ['(', 'June'], ['June', ').'], [').', '\"An'], ['\"An', 'introduction'], ['introduction', 'to'], ['to', 'Python'], ['Python', 'for'], ['for', 'scientific'], ['scientific', 'computing\"'], ['computing\"', '(PDF).'], ['(PDF).', 'Archived'], ['Archived', '(PDF)'], ['(PDF)', 'from'], ['from', 'the'], ['the', 'original'], ['original', 'on'], ['on', 'February'], ['February', '.'], ['.', 'Retrieved'], ['Retrieved', 'February'], ['February', '.'], ['.', '^'], ['^', 'Piotrowski,'], ['Piotrowski,', 'Przemyslaw'], ['Przemyslaw', '(July'], ['(July', ').'], [').', '\"Build'], ['\"Build', 'a'], ['a', 'Rapid'], ['Rapid', 'Web'], ['Web', 'Development'], ['Development', 'Environment'], ['Environment', 'for'], ['for', 'Python'], ['Python', 'Server'], ['Server', 'Pages'], ['Pages', 'and'], ['and', 'Oracle\".'], ['Oracle\".', 'Oracle'], ['Oracle', 'Technology'], ['Technology', 'Network.'], ['Network.', 'Oracle.'], ['Oracle.', 'Archived'], ['Archived', 'from'], ['from', 'the'], ['the', 'original'], ['original', 'on'], ['on', 'April'], ['April', '.'], ['.', 'Retrieved'], ['Retrieved', 'March'], ['March', '.'], ['.', '^'], ['^', 'Batista,'], ['Batista,', 'Facundo'], ['Facundo', '('], ['(', 'October'], ['October', ').'], [').', '\"PEP'], ['\"PEP', 'Decimal'], ['Decimal', 'Data'], ['Data', 'Type\".'], ['Type\".', 'Python'], ['Python', 'Enhancement'], ['Enhancement', 'Proposals.'], ['Proposals.', 'Python'], ['Python', 'Software'], ['Software', 'Foundation.'], ['Foundation.', 'Archived'], ['Archived', 'from'], ['from', 'the'], ['the', 'original'], ['original', 'on'], ['on', 'June'], ['June', '.'], ['.', 'Retrieved'], ['Retrieved', 'November'], ['November', '.'], ['.', '^'], ['^', 'Eby,'], ['Eby,', 'Phillip'], ['Phillip', 'J.'], ['J.', '('], ['(', 'December'], ['December', ').'], [').', '\"PEP'], ['\"PEP', 'Python'], ['Python', 'Web'], ['Web', 'Server'], ['Server', 'Gateway'], ['Gateway', 'Interface'], ['Interface', 'v'], ['v', '.'], ['.', '\".'], ['\".', 'Python'], ['Python', 'Enhancement'], ['Enhancement', 'Proposals.'], ['Proposals.', 'Python'], ['Python', 'Software'], ['Software', 'Foundation.'], ['Foundation.', 'Archived'], ['Archived', 'from'], ['from', 'the'], ['the', 'original'], ['original', 'on'], ['on', 'June'], ['June', '.'], ['.', 'Retrieved'], ['Retrieved', 'February'], ['February', '.'], ['.', '^'], ['^', '\"Modulecounts\".'], ['\"Modulecounts\".', 'Modulecounts.'], ['Modulecounts.', 'November'], ['November', '.'], ['.', 'Archived'], ['Archived', 'from'], ['from', 'the'], ['the', 'original'], ['original', 'on'], ['on', 'June'], ['June', '.'], ['.', '^'], ['^', 'Enthought,'], ['Enthought,', 'Canopy.'], ['Canopy.', '\"Canopy\".'], ['\"Canopy\".', 'www.enthought.com.'], ['www.enthought.com.', 'Archived'], ['Archived', 'from'], ['from', 'the'], ['the', 'original'], ['original', 'on'], ['on', 'July'], ['July', '.'], ['.', 'Retrieved'], ['Retrieved', 'August'], ['August', '.'], ['.', '^'], ['^', '\"PEP'], ['\"PEP', 'Style'], ['Style', 'Guide'], ['Guide', 'for'], ['for', 'C'], ['C', 'Code'], ['Code', '|'], ['|', 'peps.python.org\".'], ['peps.python.org\".', 'peps.python.org.'], ['peps.python.org.', 'Retrieved'], ['Retrieved', 'April'], ['April', '.'], ['.', '^'], ['^', '\"Mailman'], ['\"Mailman', 'Why'], ['Why', \"aren't\"], [\"aren't\", 'we'], ['we', 'allowing'], ['allowing', 'the'], ['the', 'use'], ['use', 'of'], ['of', 'C'], ['C', '?'], ['?', '-'], ['-', 'Python-Dev'], ['Python-Dev', '-'], ['-', 'python.org\".'], ['python.org\".', 'mail.python.org.'], ['mail.python.org.', 'Archived'], ['Archived', 'from'], ['from', 'the'], ['the', 'original'], ['original', 'on'], ['on', 'April'], ['April', '.'], ['.', 'Retrieved'], ['Retrieved', 'March'], ['March', '.'], ['.', '^'], ['^', '\"Issue'], ['\"Issue', ':'], [':', 'Intel'], ['Intel', 'compiler'], ['compiler', '(icc)'], ['(icc)', 'does'], ['does', 'not'], ['not', 'fully'], ['fully', 'support'], ['support', 'C'], ['C', 'Features,'], ['Features,', 'including'], ['including', 'atomics'], ['atomics', 'Python'], ['Python', 'tracker\".'], ['tracker\".', 'bugs.python.org.'], ['bugs.python.org.', 'Archived'], ['Archived', 'from'], ['from', 'the'], ['the', 'original'], ['original', 'on'], ['on', 'April'], ['April', '.'], ['.', 'Retrieved'], ['Retrieved', 'March'], ['March', '.'], ['.', '^'], ['^', '\"'], ['\"', '.'], ['.', 'Building'], ['Building', 'C'], ['C', 'and'], ['and', 'C'], ['C', 'Extensions'], ['Extensions', 'Python'], ['Python', '.'], ['.', '.'], ['.', 'documentation\".'], ['documentation\".', 'docs.python.org.'], ['docs.python.org.', 'Archived'], ['Archived', 'from'], ['from', 'the'], ['the', 'original'], ['original', 'on'], ['on', 'March'], ['March', '.'], ['.', 'Retrieved'], ['Retrieved', 'March'], ['March', '.'], ['.', '^'], ['^', 'van'], ['van', 'Rossum,'], ['Rossum,', 'Guido'], ['Guido', '('], ['(', 'June'], ['June', ').'], [').', '\"PEP'], ['\"PEP', 'Style'], ['Style', 'Guide'], ['Guide', 'for'], ['for', 'C'], ['C', 'Code\".'], ['Code\".', 'Python'], ['Python', 'Enhancement'], ['Enhancement', 'Proposals.'], ['Proposals.', 'Python'], ['Python', 'Software'], ['Software', 'Foundation.'], ['Foundation.', 'Archived'], ['Archived', 'from'], ['from', 'the'], ['the', 'original'], ['original', 'on'], ['on', 'June'], ['June', '.'], ['.', 'Retrieved'], ['Retrieved', 'November'], ['November', '.'], ['.', '^'], ['^', '\"CPython'], ['\"CPython', 'byte'], ['byte', 'code\".'], ['code\".', 'Docs.python.org.'], ['Docs.python.org.', 'Archived'], ['Archived', 'from'], ['from', 'the'], ['the', 'original'], ['original', 'on'], ['on', 'June'], ['June', '.'], ['.', 'Retrieved'], ['Retrieved', 'February'], ['February', '.'], ['.', '^'], ['^', '\"Python'], ['\"Python', '.'], ['.', 'internals\"'], ['internals\"', '(PDF).'], ['(PDF).', 'Archived'], ['Archived', '(PDF)'], ['(PDF)', 'from'], ['from', 'the'], ['the', 'original'], ['original', 'on'], ['on', 'August'], ['August', '.'], ['.', 'Retrieved'], ['Retrieved', 'April'], ['April', '.'], ['.', '^'], ['^', '\"Changelog'], ['\"Changelog', 'Python'], ['Python', '.'], ['.', '.'], ['.', 'documentation\".'], ['documentation\".', 'docs.python.org.'], ['docs.python.org.', 'Archived'], ['Archived', 'from'], ['from', 'the'], ['the', 'original'], ['original', 'on'], ['on', 'February'], ['February', '.'], ['.', 'Retrieved'], ['Retrieved', 'February'], ['February', '.'], ['.', '^'], ['^', '\"Download'], ['\"Download', 'Python\".'], ['Python\".', 'Python.org.'], ['Python.org.', 'Archived'], ['Archived', 'from'], ['from', 'the'], ['the', 'original'], ['original', 'on'], ['on', 'December'], ['December', '.'], ['.', 'Retrieved'], ['Retrieved', 'December'], ['December', '.'], ['.', '^'], ['^', '\"history'], ['\"history', 'vmspython'], ['vmspython', '\".'], ['\".', 'www.vmspython.org.'], ['www.vmspython.org.', 'Archived'], ['Archived', 'from'], ['from', 'the'], ['the', 'original'], ['original', 'on'], ['on', 'December'], ['December', '.'], ['.', 'Retrieved'], ['Retrieved', 'December'], ['December', '.'], ['.', '^'], ['^', '\"An'], ['\"An', 'Interview'], ['Interview', 'with'], ['with', 'Guido'], ['Guido', 'van'], ['van', 'Rossum\".'], ['Rossum\".', 'Oreilly.com.'], ['Oreilly.com.', 'Archived'], ['Archived', 'from'], ['from', 'the'], ['the', 'original'], ['original', 'on'], ['on', 'July'], ['July', '.'], ['.', 'Retrieved'], ['Retrieved', 'November'], ['November', '.'], ['.', '^'], ['^', '\"Download'], ['\"Download', 'Python'], ['Python', 'for'], ['for', 'Other'], ['Other', 'Platforms\".'], ['Platforms\".', 'Python.org.'], ['Python.org.', 'Archived'], ['Archived', 'from'], ['from', 'the'], ['the', 'original'], ['original', 'on'], ['on', 'November'], ['November', '.'], ['.', 'Retrieved'], ['Retrieved', 'December'], ['December', '.'], ['.', '^'], ['^', '\"PyPy'], ['\"PyPy', 'compatibility\".'], ['compatibility\".', 'Pypy.org.'], ['Pypy.org.', 'Archived'], ['Archived', 'from'], ['from', 'the'], ['the', 'original'], ['original', 'on'], ['on', 'June'], ['June', '.'], ['.', 'Retrieved'], ['Retrieved', 'December'], ['December', '.'], ['.', '^'], ['^', 'Team,'], ['Team,', 'The'], ['The', 'PyPy'], ['PyPy', '('], ['(', 'December'], ['December', ').'], [').', '\"Download'], ['\"Download', 'and'], ['and', 'Install\".'], ['Install\".', 'PyPy.'], ['PyPy.', 'Retrieved'], ['Retrieved', 'January'], ['January', '.'], ['.', '^'], ['^', '\"speed'], ['\"speed', 'comparison'], ['comparison', 'between'], ['between', 'CPython'], ['CPython', 'and'], ['and', 'Pypy\".'], ['Pypy\".', 'Speed.pypy.org.'], ['Speed.pypy.org.', 'Archived'], ['Archived', 'from'], ['from', 'the'], ['the', 'original'], ['original', 'on'], ['on', 'May'], ['May', '.'], ['.', 'Retrieved'], ['Retrieved', 'December'], ['December', '.'], ['.', '^'], ['^', '\"Application-level'], ['\"Application-level', 'Stackless'], ['Stackless', 'features'], ['features', 'PyPy'], ['PyPy', '.'], ['.', '.'], ['.', 'documentation\".'], ['documentation\".', 'Doc.pypy.org.'], ['Doc.pypy.org.', 'Archived'], ['Archived', 'from'], ['from', 'the'], ['the', 'original'], ['original', 'on'], ['on', 'June'], ['June', '.'], ['.', 'Retrieved'], ['Retrieved', 'July'], ['July', '.'], ['.', '^'], ['^', '\"Python-for-EV'], ['\"Python-for-EV', '\".'], ['\".', 'LEGO'], ['LEGO', 'Education.'], ['Education.', 'Archived'], ['Archived', 'from'], ['from', 'the'], ['the', 'original'], ['original', 'on'], ['on', 'June'], ['June', '.'], ['.', 'Retrieved'], ['Retrieved', 'April'], ['April', '.'], ['.', '^'], ['^', 'Yegulalp,'], ['Yegulalp,', 'Serdar'], ['Serdar', '('], ['(', 'October'], ['October', ').'], [').', '\"Pyston'], ['\"Pyston', 'returns'], ['returns', 'from'], ['from', 'the'], ['the', 'dead'], ['dead', 'to'], ['to', 'speed'], ['speed', 'Python\".'], ['Python\".', 'InfoWorld.'], ['InfoWorld.', 'Archived'], ['Archived', 'from'], ['from', 'the'], ['the', 'original'], ['original', 'on'], ['on', 'January'], ['January', '.'], ['.', 'Retrieved'], ['Retrieved', 'January'], ['January', '.'], ['.', '^'], ['^', '\"cinder:'], ['\"cinder:', \"Instagram's\"], [\"Instagram's\", 'performance-oriented'], ['performance-oriented', 'fork'], ['fork', 'of'], ['of', 'CPython\".'], ['CPython\".', 'GitHub.'], ['GitHub.', 'Archived'], ['Archived', 'from'], ['from', 'the'], ['the', 'original'], ['original', 'on'], ['on', 'May'], ['May', '.'], ['.', 'Retrieved'], ['Retrieved', 'May'], ['May', '.'], ['.', '^'], ['^', '\"Plans'], ['\"Plans', 'for'], ['for', 'optimizing'], ['optimizing', 'Python\".'], ['Python\".', 'Google'], ['Google', 'Project'], ['Project', 'Hosting.'], ['Hosting.', 'December'], ['December', '.'], ['.', 'Archived'], ['Archived', 'from'], ['from', 'the'], ['the', 'original'], ['original', 'on'], ['on', 'April'], ['April', '.'], ['.', 'Retrieved'], ['Retrieved', 'September'], ['September', '.'], ['.', '^'], ['^', '\"Python'], ['\"Python', 'on'], ['on', 'the'], ['the', 'Nokia'], ['Nokia', 'N'], ['N', '\".'], ['\".', 'Stochastic'], ['Stochastic', 'Geometry.'], ['Geometry.', 'April'], ['April', '.'], ['.', 'Archived'], ['Archived', 'from'], ['from', 'the'], ['the', 'original'], ['original', 'on'], ['on', 'June'], ['June', '.'], ['.', 'Retrieved'], ['Retrieved', 'July'], ['July', '.'], ['.', '^'], ['^', '\"Brython\".'], ['\"Brython\".', 'brython.info.'], ['brython.info.', 'Archived'], ['Archived', 'from'], ['from', 'the'], ['the', 'original'], ['original', 'on'], ['on', 'August'], ['August', '.'], ['.', 'Retrieved'], ['Retrieved', 'January'], ['January', '.'], ['.', '^'], ['^', '\"Transcrypt'], ['\"Transcrypt', 'Python'], ['Python', 'in'], ['in', 'the'], ['the', 'browser\".'], ['browser\".', 'transcrypt.org.'], ['transcrypt.org.', 'Archived'], ['Archived', 'from'], ['from', 'the'], ['the', 'original'], ['original', 'on'], ['on', 'August'], ['August', '.'], ['.', 'Retrieved'], ['Retrieved', 'December'], ['December', '.'], ['.', '^'], ['^', '\"Transcrypt:'], ['\"Transcrypt:', 'Anatomy'], ['Anatomy', 'of'], ['of', 'a'], ['a', 'Python'], ['Python', 'to'], ['to', 'JavaScript'], ['JavaScript', 'Compiler\".'], ['Compiler\".', 'InfoQ.'], ['InfoQ.', 'Archived'], ['Archived', 'from'], ['from', 'the'], ['the', 'original'], ['original', 'on'], ['on', 'December'], ['December', '.'], ['.', 'Retrieved'], ['Retrieved', 'January'], ['January', '.'], ['.', '^'], ['^', '\"Nuitka'], ['\"Nuitka', 'Home'], ['Home', '|'], ['|', 'Nuitka'], ['Nuitka', 'Home\".'], ['Home\".', 'nuitka.net.'], ['nuitka.net.', 'Archived'], ['Archived', 'from'], ['from', 'the'], ['the', 'original'], ['original', 'on'], ['on', 'May'], ['May', '.'], ['.', 'Retrieved'], ['Retrieved', 'August'], ['August', '.'], ['.', '^'], ['^', 'Borderies,'], ['Borderies,', 'Olivier'], ['Olivier', '('], ['(', 'January'], ['January', ').'], [').', '\"Pythran:'], ['\"Pythran:', 'Python'], ['Python', 'at'], ['at', 'C'], ['C', 'speed!\".'], ['speed!\".', 'Medium.'], ['Medium.', 'Archived'], ['Archived', 'from'], ['from', 'the'], ['the', 'original'], ['original', 'on'], ['on', 'March'], ['March', '.'], ['.', 'Retrieved'], ['Retrieved', 'March'], ['March', '.'], ['.', '^'], ['^', '\"Pythran'], ['\"Pythran', 'Pythran'], ['Pythran', '.'], ['.', '.'], ['.', 'documentation\".'], ['documentation\".', 'pythran.readthedocs.io.'], ['pythran.readthedocs.io.', 'Archived'], ['Archived', 'from'], ['from', 'the'], ['the', 'original'], ['original', 'on'], ['on', 'February'], ['February', '.'], ['.', 'Retrieved'], ['Retrieved', 'March'], ['March', '.'], ['.', '^'], ['^', 'Guelton,'], ['Guelton,', 'Serge;'], ['Serge;', 'Brunet,'], ['Brunet,', 'Pierrick;'], ['Pierrick;', 'Amini,'], ['Amini,', 'Mehdi;'], ['Mehdi;', 'Merlini,'], ['Merlini,', 'Adrien;'], ['Adrien;', 'Corbillon,'], ['Corbillon,', 'Xavier;'], ['Xavier;', 'Raynaud,'], ['Raynaud,', 'Alan'], ['Alan', '('], ['(', 'March'], ['March', ').'], [').', '\"Pythran:'], ['\"Pythran:', 'enabling'], ['enabling', 'static'], ['static', 'optimization'], ['optimization', 'of'], ['of', 'scientific'], ['scientific', 'Python'], ['Python', 'programs\".'], ['programs\".', 'Computational'], ['Computational', 'Science'], ['Science', '&'], ['&', 'Discovery.'], ['Discovery.', 'IOP'], ['IOP', 'Publishing.'], ['Publishing.', '('], ['(', '):'], ['):', '.'], ['.', 'Bibcode:'], ['Bibcode:', 'CS&D....'], ['CS&D....', 'a'], ['a', 'G.'], ['G.', 'doi:'], ['doi:', '.'], ['.', '/'], ['/', '-'], ['-', '/'], ['/', '/'], ['/', '/'], ['/', '.'], ['.', 'ISSN'], ['ISSN', '-'], ['-', '.'], ['.', '^'], ['^', 'The'], ['The', 'Python'], ['Python', 'l'], ['l', 'C'], ['C', 'transpiler'], ['transpiler', '^'], ['^', '\"google/grumpy\".'], ['\"google/grumpy\".', 'April'], ['April', '.'], ['.', 'Archived'], ['Archived', 'from'], ['from', 'the'], ['the', 'original'], ['original', 'on'], ['on', 'April'], ['April', '.'], ['.', 'Retrieved'], ['Retrieved', 'March'], ['March', 'via'], ['via', 'GitHub.'], ['GitHub.', '^'], ['^', '\"Projects\".'], ['\"Projects\".', 'opensource.google.'], ['opensource.google.', 'Archived'], ['Archived', 'from'], ['from', 'the'], ['the', 'original'], ['original', 'on'], ['on', 'April'], ['April', '.'], ['.', 'Retrieved'], ['Retrieved', 'March'], ['March', '.'], ['.', '^'], ['^', 'Francisco,'], ['Francisco,', 'Thomas'], ['Thomas', 'Claburn'], ['Claburn', 'in'], ['in', 'San.'], ['San.', '\"Google\\'s'], ['\"Google\\'s', 'Grumpy'], ['Grumpy', 'code'], ['code', 'makes'], ['makes', 'Python'], ['Python', 'Go\".'], ['Go\".', 'www.theregister.com.'], ['www.theregister.com.', 'Archived'], ['Archived', 'from'], ['from', 'the'], ['the', 'original'], ['original', 'on'], ['on', 'March'], ['March', '.'], ['.', 'Retrieved'], ['Retrieved', 'January'], ['January', '.'], ['.', '^'], ['^', '\"GitHub'], ['\"GitHub', 'IronLanguages/ironpython'], ['IronLanguages/ironpython', ':'], [':', 'Implementation'], ['Implementation', 'of'], ['of', 'Python'], ['Python', '.x'], ['.x', 'for'], ['for', '.NET'], ['.NET', 'Framework'], ['Framework', 'that'], ['that', 'is'], ['is', 'built'], ['built', 'on'], ['on', 'top'], ['top', 'of'], ['of', 'the'], ['the', 'Dynamic'], ['Dynamic', 'Language'], ['Language', 'Runtime\".'], ['Runtime\".', 'GitHub.'], ['GitHub.', 'Archived'], ['Archived', 'from'], ['from', 'the'], ['the', 'original'], ['original', 'on'], ['on', 'September'], ['September', '.'], ['.', '^'], ['^', '\"IronPython.net'], ['\"IronPython.net', '/\".'], ['/\".', 'ironpython.net.'], ['ironpython.net.', 'Archived'], ['Archived', 'from'], ['from', 'the'], ['the', 'original'], ['original', 'on'], ['on', 'April'], ['April', '.'], ['.', '^'], ['^', '\"Jython'], ['\"Jython', 'FAQ\".'], ['FAQ\".', 'www.jython.org.'], ['www.jython.org.', 'Archived'], ['Archived', 'from'], ['from', 'the'], ['the', 'original'], ['original', 'on'], ['on', 'April'], ['April', '.'], ['.', 'Retrieved'], ['Retrieved', 'April'], ['April', '.'], ['.', '^'], ['^', 'Murri,'], ['Murri,', 'Riccardo'], ['Riccardo', '('], ['(', ').'], [').', 'Performance'], ['Performance', 'of'], ['of', 'Python'], ['Python', 'runtimes'], ['runtimes', 'on'], ['on', 'a'], ['a', 'non-numeric'], ['non-numeric', 'scientific'], ['scientific', 'code.'], ['code.', 'European'], ['European', 'Conference'], ['Conference', 'on'], ['on', 'Python'], ['Python', 'in'], ['in', 'Science'], ['Science', '(EuroSciPy).'], ['(EuroSciPy).', 'arXiv:'], ['arXiv:', '.'], ['.', '.'], ['.', 'Bibcode:'], ['Bibcode:', 'arXiv'], ['arXiv', '.'], ['.', 'M.'], ['M.', '^'], ['^', '\"The'], ['\"The', 'Computer'], ['Computer', 'Language'], ['Language', 'Benchmarks'], ['Benchmarks', 'Game\".'], ['Game\".', 'Archived'], ['Archived', 'from'], ['from', 'the'], ['the', 'original'], ['original', 'on'], ['on', 'June'], ['June', '.'], ['.', 'Retrieved'], ['Retrieved', 'April'], ['April', '.'], ['.', '^'], ['^', 'a'], ['a', 'b'], ['b', 'Warsaw,'], ['Warsaw,', 'Barry;'], ['Barry;', 'Hylton,'], ['Hylton,', 'Jeremy;'], ['Jeremy;', 'Goodger,'], ['Goodger,', 'David'], ['David', '('], ['(', 'June'], ['June', ').'], [').', '\"PEP'], ['\"PEP', 'PEP'], ['PEP', 'Purpose'], ['Purpose', 'and'], ['and', 'Guidelines\".'], ['Guidelines\".', 'Python'], ['Python', 'Enhancement'], ['Enhancement', 'Proposals.'], ['Proposals.', 'Python'], ['Python', 'Software'], ['Software', 'Foundation.'], ['Foundation.', 'Archived'], ['Archived', 'from'], ['from', 'the'], ['the', 'original'], ['original', 'on'], ['on', 'June'], ['June', '.'], ['.', 'Retrieved'], ['Retrieved', 'April'], ['April', '.'], ['.', '^'], ['^', '\"PEP'], ['\"PEP', 'Style'], ['Style', 'Guide'], ['Guide', 'for'], ['for', 'Python'], ['Python', 'Code\".'], ['Code\".', 'Python.org.'], ['Python.org.', 'Archived'], ['Archived', 'from'], ['from', 'the'], ['the', 'original'], ['original', 'on'], ['on', 'April'], ['April', '.'], ['.', 'Retrieved'], ['Retrieved', 'March'], ['March', '.'], ['.', '^'], ['^', 'Cannon,'], ['Cannon,', 'Brett.'], ['Brett.', '\"Guido,'], ['\"Guido,', 'Some'], ['Some', 'Guys,'], ['Guys,', 'and'], ['and', 'a'], ['a', 'Mailing'], ['Mailing', 'List:'], ['List:', 'How'], ['How', 'Python'], ['Python', 'is'], ['is', 'Developed\".'], ['Developed\".', 'python.org.'], ['python.org.', 'Python'], ['Python', 'Software'], ['Software', 'Foundation.'], ['Foundation.', 'Archived'], ['Archived', 'from'], ['from', 'the'], ['the', 'original'], ['original', 'on'], ['on', 'June'], ['June', '.'], ['.', 'Retrieved'], ['Retrieved', 'June'], ['June', '.'], ['.', '^'], ['^', '\"Moving'], ['\"Moving', \"Python's\"], [\"Python's\", 'bugs'], ['bugs', 'to'], ['to', 'GitHub'], ['GitHub', 'LWN.net'], ['LWN.net', '\".'], ['\".', '^'], ['^', '\"Python'], ['\"Python', \"Developer's\"], [\"Developer's\", 'Guide'], ['Guide', 'Python'], ['Python', \"Developer's\"], [\"Developer's\", 'Guide\".'], ['Guide\".', 'devguide.python.org.'], ['devguide.python.org.', 'Archived'], ['Archived', 'from'], ['from', 'the'], ['the', 'original'], ['original', 'on'], ['on', 'November'], ['November', '.'], ['.', 'Retrieved'], ['Retrieved', 'December'], ['December', '.'], ['.', '^'], ['^', 'Hughes,'], ['Hughes,', 'Owen'], ['Owen', '('], ['(', 'May'], ['May', ').'], [').', '\"Programming'], ['\"Programming', 'languages:'], ['languages:', 'Why'], ['Why', 'Python'], ['Python', '.'], ['.', 'might'], ['might', 'never'], ['never', 'arrive,'], ['arrive,', 'according'], ['according', 'to'], ['to', 'its'], ['its', 'creator\".'], ['creator\".', 'TechRepublic.'], ['TechRepublic.', 'Retrieved'], ['Retrieved', 'May'], ['May', '.'], ['.', '^'], ['^', '\"PEP'], ['\"PEP', 'Annual'], ['Annual', 'Release'], ['Release', 'Cycle'], ['Cycle', 'for'], ['for', 'Python\".'], ['Python\".', 'Python.org.'], ['Python.org.', 'Archived'], ['Archived', 'from'], ['from', 'the'], ['the', 'original'], ['original', 'on'], ['on', 'June'], ['June', '.'], ['.', 'Retrieved'], ['Retrieved', 'November'], ['November', '.'], ['.', '^'], ['^', '\"Changing'], ['\"Changing', 'the'], ['the', 'Python'], ['Python', 'release'], ['release', 'cadence'], ['cadence', 'LWN.net'], ['LWN.net', '\".'], ['\".', 'lwn.net.'], ['lwn.net.', 'Archived'], ['Archived', 'from'], ['from', 'the'], ['the', 'original'], ['original', 'on'], ['on', 'November'], ['November', '.'], ['.', 'Retrieved'], ['Retrieved', 'November'], ['November', '.'], ['.', '^'], ['^', 'Norwitz,'], ['Norwitz,', 'Neal'], ['Neal', '('], ['(', 'April'], ['April', ').'], [').', '\"'], ['\"', 'Python-Dev'], ['Python-Dev', 'Release'], ['Release', 'Schedules'], ['Schedules', '(was'], ['(was', 'Stability'], ['Stability', '&'], ['&', 'change)\".'], ['change)\".', 'Archived'], ['Archived', 'from'], ['from', 'the'], ['the', 'original'], ['original', 'on'], ['on', 'December'], ['December', '.'], ['.', 'Retrieved'], ['Retrieved', 'June'], ['June', '.'], ['.', '^'], ['^', 'a'], ['a', 'b'], ['b', 'Aahz;'], ['Aahz;', 'Baxter,'], ['Baxter,', 'Anthony'], ['Anthony', '('], ['(', 'March'], ['March', ').'], [').', '\"PEP'], ['\"PEP', 'Bug'], ['Bug', 'Fix'], ['Fix', 'Releases\".'], ['Releases\".', 'Python'], ['Python', 'Enhancement'], ['Enhancement', 'Proposals.'], ['Proposals.', 'Python'], ['Python', 'Software'], ['Software', 'Foundation.'], ['Foundation.', 'Archived'], ['Archived', 'from'], ['from', 'the'], ['the', 'original'], ['original', 'on'], ['on', 'June'], ['June', '.'], ['.', 'Retrieved'], ['Retrieved', 'June'], ['June', '.'], ['.', '^'], ['^', '\"Python'], ['\"Python', 'Buildbot\".'], ['Buildbot\".', 'Python'], ['Python', \"Developer's\"], [\"Developer's\", 'Guide.'], ['Guide.', 'Python'], ['Python', 'Software'], ['Software', 'Foundation.'], ['Foundation.', 'Archived'], ['Archived', 'from'], ['from', 'the'], ['the', 'original'], ['original', 'on'], ['on', 'June'], ['June', '.'], ['.', 'Retrieved'], ['Retrieved', 'September'], ['September', '.'], ['.', '^'], ['^', '\"'], ['\"', '.'], ['.', 'Extending'], ['Extending', 'Python'], ['Python', 'with'], ['with', 'C'], ['C', 'or'], ['or', 'C'], ['C', 'Python'], ['Python', '.'], ['.', '.'], ['.', 'documentation\".'], ['documentation\".', 'docs.python.org.'], ['docs.python.org.', 'Archived'], ['Archived', 'from'], ['from', 'the'], ['the', 'original'], ['original', 'on'], ['on', 'June'], ['June', '.'], ['.', 'Retrieved'], ['Retrieved', 'February'], ['February', '.'], ['.', '^'], ['^', '\"PEP'], ['\"PEP', 'Remove'], ['Remove', 'wstr'], ['wstr', 'from'], ['from', 'Unicode\".'], ['Unicode\".', 'Python.org.'], ['Python.org.', 'Archived'], ['Archived', 'from'], ['from', 'the'], ['the', 'original'], ['original', 'on'], ['on', 'March'], ['March', '.'], ['.', 'Retrieved'], ['Retrieved', 'February'], ['February', '.'], ['.', '^'], ['^', '\"PEP'], ['\"PEP', 'Structural'], ['Structural', 'Pattern'], ['Pattern', 'Matching:'], ['Matching:', 'Specification\".'], ['Specification\".', 'Python.org.'], ['Python.org.', 'Archived'], ['Archived', 'from'], ['from', 'the'], ['the', 'original'], ['original', 'on'], ['on', 'May'], ['May', '.'], ['.', 'Retrieved'], ['Retrieved', 'February'], ['February', '.'], ['.', '^'], ['^', '\"Documentation'], ['\"Documentation', 'Tools\".'], ['Tools\".', 'Python.org.'], ['Python.org.', 'Archived'], ['Archived', 'from'], ['from', 'the'], ['the', 'original'], ['original', 'on'], ['on', 'November'], ['November', '.'], ['.', 'Retrieved'], ['Retrieved', 'March'], ['March', '.'], ['.', '^'], ['^', 'a'], ['a', 'b'], ['b', '\"Whetting'], ['\"Whetting', 'Your'], ['Your', 'Appetite\".'], ['Appetite\".', 'The'], ['The', 'Python'], ['Python', 'Tutorial.'], ['Tutorial.', 'Python'], ['Python', 'Software'], ['Software', 'Foundation.'], ['Foundation.', 'Archived'], ['Archived', 'from'], ['from', 'the'], ['the', 'original'], ['original', 'on'], ['on', 'October'], ['October', '.'], ['.', 'Retrieved'], ['Retrieved', 'February'], ['February', '.'], ['.', '^'], ['^', '\"In'], ['\"In', 'Python,'], ['Python,', 'should'], ['should', 'I'], ['I', 'use'], ['use', 'else'], ['else', 'after'], ['after', 'a'], ['a', 'return'], ['return', 'in'], ['in', 'an'], ['an', 'if'], ['if', 'block?\".'], ['block?\".', 'Stack'], ['Stack', 'Overflow.'], ['Overflow.', 'Stack'], ['Stack', 'Exchange.'], ['Exchange.', 'February'], ['February', '.'], ['.', 'Archived'], ['Archived', 'from'], ['from', 'the'], ['the', 'original'], ['original', 'on'], ['on', 'June'], ['June', '.'], ['.', 'Retrieved'], ['Retrieved', 'May'], ['May', '.'], ['.', '^'], ['^', 'Lutz,'], ['Lutz,', 'Mark'], ['Mark', '('], ['(', ').'], [').', 'Learning'], ['Learning', 'Python:'], ['Python:', 'Powerful'], ['Powerful', 'Object-Oriented'], ['Object-Oriented', 'Programming.'], ['Programming.', \"O'Reilly\"], [\"O'Reilly\", 'Media,'], ['Media,', 'Inc.'], ['Inc.', 'p.'], ['p.', '.'], ['.', 'ISBN'], ['ISBN', '.'], ['.', 'Archived'], ['Archived', 'from'], ['from', 'the'], ['the', 'original'], ['original', 'on'], ['on', 'July'], ['July', '.'], ['.', 'Retrieved'], ['Retrieved', 'May'], ['May', '.'], ['.', '^'], ['^', 'Fehily,'], ['Fehily,', 'Chris'], ['Chris', '('], ['(', ').'], [').', 'Python.'], ['Python.', 'Peachpit'], ['Peachpit', 'Press.'], ['Press.', 'p.xv.'], ['p.xv.', 'ISBN'], ['ISBN', '.'], ['.', 'Archived'], ['Archived', 'from'], ['from', 'the'], ['the', 'original'], ['original', 'on'], ['on', 'July'], ['July', '.'], ['.', 'Retrieved'], ['Retrieved', 'May'], ['May', '.'], ['.', '^'], ['^', 'Blake,'], ['Blake,', 'Troy'], ['Troy', '('], ['(', 'January'], ['January', ').'], [').', '\"TIOBE'], ['\"TIOBE', 'Index'], ['Index', 'for'], ['for', 'January'], ['January', '\".'], ['\".', 'Technology'], ['Technology', 'News'], ['News', 'and'], ['and', 'Information'], ['Information', 'by'], ['by', 'SeniorDBA.'], ['SeniorDBA.', 'Archived'], ['Archived', 'from'], ['from', 'the'], ['the', 'original'], ['original', 'on'], ['on', 'March'], ['March', '.'], ['.', 'Retrieved'], ['Retrieved', 'February'], ['February', '.'], ['.', '^'], ['^', 'Prechelt,'], ['Prechelt,', 'Lutz'], ['Lutz', '('], ['(', 'March'], ['March', ').'], [').', '\"An'], ['\"An', 'empirical'], ['empirical', 'comparison'], ['comparison', 'of'], ['of', 'C,'], ['C,', 'C'], ['C', ','], [',', 'Java,'], ['Java,', 'Perl,'], ['Perl,', 'Python,'], ['Python,', 'Rexx,'], ['Rexx,', 'and'], ['and', 'Tcl\"'], ['Tcl\"', '(PDF).'], ['(PDF).', 'Archived'], ['Archived', '(PDF)'], ['(PDF)', 'from'], ['from', 'the'], ['the', 'original'], ['original', 'on'], ['on', 'January'], ['January', '.'], ['.', 'Retrieved'], ['Retrieved', 'August'], ['August', '.'], ['.', '^'], ['^', '\"Quotes'], ['\"Quotes', 'about'], ['about', 'Python\".'], ['Python\".', 'Python'], ['Python', 'Software'], ['Software', 'Foundation.'], ['Foundation.', 'Archived'], ['Archived', 'from'], ['from', 'the'], ['the', 'original'], ['original', 'on'], ['on', 'June'], ['June', '.'], ['.', 'Retrieved'], ['Retrieved', 'January'], ['January', '.'], ['.', '^'], ['^', '\"Organizations'], ['\"Organizations', 'Using'], ['Using', 'Python\".'], ['Python\".', 'Python'], ['Python', 'Software'], ['Software', 'Foundation.'], ['Foundation.', 'Archived'], ['Archived', 'from'], ['from', 'the'], ['the', 'original'], ['original', 'on'], ['on', 'August'], ['August', '.'], ['.', 'Retrieved'], ['Retrieved', 'January'], ['January', '.'], ['.', '^'], ['^', '\"Python:'], ['\"Python:', 'the'], ['the', 'holy'], ['holy', 'grail'], ['grail', 'of'], ['of', 'programming\".'], ['programming\".', 'CERN'], ['CERN', 'Bulletin.'], ['Bulletin.', 'CERN'], ['CERN', 'Publications'], ['Publications', '('], ['(', '/'], ['/', ').'], [').', 'July'], ['July', '.'], ['.', 'Archived'], ['Archived', 'from'], ['from', 'the'], ['the', 'original'], ['original', 'on'], ['on', 'January'], ['January', '.'], ['.', 'Retrieved'], ['Retrieved', 'February'], ['February', '.'], ['.', '^'], ['^', 'Shafer,'], ['Shafer,', 'Daniel'], ['Daniel', 'G.'], ['G.', '('], ['(', 'January'], ['January', ').'], [').', '\"Python'], ['\"Python', 'Streamlines'], ['Streamlines', 'Space'], ['Space', 'Shuttle'], ['Shuttle', 'Mission'], ['Mission', 'Design\".'], ['Design\".', 'Python'], ['Python', 'Software'], ['Software', 'Foundation.'], ['Foundation.', 'Archived'], ['Archived', 'from'], ['from', 'the'], ['the', 'original'], ['original', 'on'], ['on', 'June'], ['June', '.'], ['.', 'Retrieved'], ['Retrieved', 'November'], ['November', '.'], ['.', '^'], ['^', '\"Tornado:'], ['\"Tornado:', \"Facebook's\"], [\"Facebook's\", 'Real-Time'], ['Real-Time', 'Web'], ['Web', 'Framework'], ['Framework', 'for'], ['for', 'Python'], ['Python', 'Facebook'], ['Facebook', 'for'], ['for', 'Developers\".'], ['Developers\".', 'Facebook'], ['Facebook', 'for'], ['for', 'Developers.'], ['Developers.', 'Archived'], ['Archived', 'from'], ['from', 'the'], ['the', 'original'], ['original', 'on'], ['on', 'February'], ['February', '.'], ['.', 'Retrieved'], ['Retrieved', 'June'], ['June', '.'], ['.', '^'], ['^', '\"What'], ['\"What', 'Powers'], ['Powers', 'Instagram:'], ['Instagram:', 'Hundreds'], ['Hundreds', 'of'], ['of', 'Instances,'], ['Instances,', 'Dozens'], ['Dozens', 'of'], ['of', 'Technologies\".'], ['Technologies\".', 'Instagram'], ['Instagram', 'Engineering.'], ['Engineering.', 'December'], ['December', '.'], ['.', 'Archived'], ['Archived', 'from'], ['from', 'the'], ['the', 'original'], ['original', 'on'], ['on', 'June'], ['June', '.'], ['.', 'Retrieved'], ['Retrieved', 'May'], ['May', '.'], ['.', '^'], ['^', '\"How'], ['\"How', 'we'], ['we', 'use'], ['use', 'Python'], ['Python', 'at'], ['at', 'Spotify\".'], ['Spotify\".', 'Spotify'], ['Spotify', 'Labs.'], ['Labs.', 'March'], ['March', '.'], ['.', 'Archived'], ['Archived', 'from'], ['from', 'the'], ['the', 'original'], ['original', 'on'], ['on', 'June'], ['June', '.'], ['.', 'Retrieved'], ['Retrieved', 'July'], ['July', '.'], ['.', '^'], ['^', 'Fortenberry,'], ['Fortenberry,', 'Tim'], ['Tim', '('], ['(', 'January'], ['January', ').'], [').', '\"Industrial'], ['\"Industrial', 'Light'], ['Light', '&'], ['&', 'Magic'], ['Magic', 'Runs'], ['Runs', 'on'], ['on', 'Python\".'], ['Python\".', 'Python'], ['Python', 'Software'], ['Software', 'Foundation.'], ['Foundation.', 'Archived'], ['Archived', 'from'], ['from', 'the'], ['the', 'original'], ['original', 'on'], ['on', 'June'], ['June', '.'], ['.', 'Retrieved'], ['Retrieved', 'February'], ['February', '.'], ['.', '^'], ['^', 'Taft,'], ['Taft,', 'Darryl'], ['Darryl', 'K.'], ['K.', '('], ['(', 'March'], ['March', ').'], [').', '\"Python'], ['\"Python', 'Slithers'], ['Slithers', 'into'], ['into', 'Systems\".'], ['Systems\".', 'eWeek.com.'], ['eWeek.com.', 'Ziff'], ['Ziff', 'Davis'], ['Davis', 'Holdings.'], ['Holdings.', 'Archived'], ['Archived', 'from'], ['from', 'the'], ['the', 'original'], ['original', 'on'], ['on', 'August'], ['August', '.'], ['.', 'Retrieved'], ['Retrieved', 'September'], ['September', '.'], ['.', '^'], ['^', 'GitHub'], ['GitHub', 'reddit-archive/reddit:'], ['reddit-archive/reddit:', 'historical'], ['historical', 'code'], ['code', 'from'], ['from', 'reddit.com.,'], ['reddit.com.,', 'The'], ['The', 'Reddit'], ['Reddit', 'Archives,'], ['Archives,', 'archived'], ['archived', 'from'], ['from', 'the'], ['the', 'original'], ['original', 'on'], ['on', 'June'], ['June', ','], [',', 'retrieved'], ['retrieved', 'March'], ['March', '^'], ['^', '\"Usage'], ['\"Usage', 'statistics'], ['statistics', 'and'], ['and', 'market'], ['market', 'share'], ['share', 'of'], ['of', 'Python'], ['Python', 'for'], ['for', 'websites\".'], ['websites\".', '.'], ['.', 'Archived'], ['Archived', 'from'], ['from', 'the'], ['the', 'original'], ['original', 'on'], ['on', 'August'], ['August', '.'], ['.', 'Retrieved'], ['Retrieved', 'December'], ['December', '.'], ['.', '^'], ['^', 'Oliphant,'], ['Oliphant,', 'Travis'], ['Travis', '('], ['(', ').'], [').', '\"Python'], ['\"Python', 'for'], ['for', 'Scientific'], ['Scientific', 'Computing\".'], ['Computing\".', 'Computing'], ['Computing', 'in'], ['in', 'Science'], ['Science', 'and'], ['and', 'Engineering.'], ['Engineering.', '('], ['(', '):'], ['):', '.'], ['.', 'Bibcode:'], ['Bibcode:', 'CSE.....'], ['CSE.....', 'c..'], ['c..', 'O.'], ['O.', 'CiteSeerX'], ['CiteSeerX', '.'], ['.', '.'], ['.', '.'], ['.', '.'], ['.', '.'], ['.', 'doi:'], ['doi:', '.'], ['.', '/MCSE.'], ['/MCSE.', '.'], ['.', '.'], ['.', 'S'], ['S', 'CID'], ['CID', '.'], ['.', 'Archived'], ['Archived', 'from'], ['from', 'the'], ['the', 'original'], ['original', 'on'], ['on', 'June'], ['June', '.'], ['.', 'Retrieved'], ['Retrieved', 'April'], ['April', '.'], ['.', '^'], ['^', 'Millman,'], ['Millman,', 'K.'], ['K.', 'Jarrod;'], ['Jarrod;', 'Aivazis,'], ['Aivazis,', 'Michael'], ['Michael', '('], ['(', ').'], [').', '\"Python'], ['\"Python', 'for'], ['for', 'Scientists'], ['Scientists', 'and'], ['and', 'Engineers\".'], ['Engineers\".', 'Computing'], ['Computing', 'in'], ['in', 'Science'], ['Science', 'and'], ['and', 'Engineering.'], ['Engineering.', '('], ['(', '):'], ['):', '.'], ['.', 'Bibcode:'], ['Bibcode:', 'CSE....'], ['CSE....', 'b...'], ['b...', 'M.'], ['M.', 'doi:'], ['doi:', '.'], ['.', '/MCSE.'], ['/MCSE.', '.'], ['.', '.'], ['.', 'Archived'], ['Archived', 'from'], ['from', 'the'], ['the', 'original'], ['original', 'on'], ['on', 'February'], ['February', '.'], ['.', 'Retrieved'], ['Retrieved', 'July'], ['July', '.'], ['.', '^'], ['^', 'Science'], ['Science', 'education'], ['education', 'with'], ['with', 'SageMath,'], ['SageMath,', 'Innovative'], ['Innovative', 'Computing'], ['Computing', 'in'], ['in', 'Science'], ['Science', 'Education,'], ['Education,', 'archived'], ['archived', 'from'], ['from', 'the'], ['the', 'original'], ['original', 'on'], ['on', 'June'], ['June', ','], [',', 'retrieved'], ['retrieved', 'April'], ['April', '^'], ['^', '\"OpenCV:'], ['\"OpenCV:', 'OpenCV-Python'], ['OpenCV-Python', 'Tutorials\".'], ['Tutorials\".', 'docs.opencv.org.'], ['docs.opencv.org.', 'Archived'], ['Archived', 'from'], ['from', 'the'], ['the', 'original'], ['original', 'on'], ['on', 'September'], ['September', '.'], ['.', 'Retrieved'], ['Retrieved', 'September'], ['September', '.'], ['.', '^'], ['^', 'Dean,'], ['Dean,', 'Jeff;'], ['Jeff;', 'Monga,'], ['Monga,', 'Rajat;'], ['Rajat;', 'etal.'], ['etal.', '('], ['(', 'November'], ['November', ').'], [').', '\"TensorFlow:'], ['\"TensorFlow:', 'Large-scale'], ['Large-scale', 'machine'], ['machine', 'learning'], ['learning', 'on'], ['on', 'heterogeneous'], ['heterogeneous', 'systems\"'], ['systems\"', '(PDF).'], ['(PDF).', 'TensorFlow.org.'], ['TensorFlow.org.', 'Google'], ['Google', 'Research.'], ['Research.', 'Archived'], ['Archived', '(PDF)'], ['(PDF)', 'from'], ['from', 'the'], ['the', 'original'], ['original', 'on'], ['on', 'November'], ['November', '.'], ['.', 'Retrieved'], ['Retrieved', 'November'], ['November', '.'], ['.', '^'], ['^', 'Piatetsky,'], ['Piatetsky,', 'Gregory.'], ['Gregory.', '\"Python'], ['\"Python', 'eats'], ['eats', 'away'], ['away', 'at'], ['at', 'R:'], ['R:', 'Top'], ['Top', 'Software'], ['Software', 'for'], ['for', 'Analytics,'], ['Analytics,', 'Data'], ['Data', 'Science,'], ['Science,', 'Machine'], ['Machine', 'Learning'], ['Learning', 'in'], ['in', ':'], [':', 'Trends'], ['Trends', 'and'], ['and', 'Analysis\".'], ['Analysis\".', 'KDnuggets.'], ['KDnuggets.', 'KDnuggets.'], ['KDnuggets.', 'Archived'], ['Archived', 'from'], ['from', 'the'], ['the', 'original'], ['original', 'on'], ['on', 'November'], ['November', '.'], ['.', 'Retrieved'], ['Retrieved', 'May'], ['May', '.'], ['.', '^'], ['^', '\"Who'], ['\"Who', 'is'], ['is', 'using'], ['using', 'scikit-learn?'], ['scikit-learn?', 'scikit-learn'], ['scikit-learn', '.'], ['.', '.'], ['.', 'documentation\".'], ['documentation\".', 'scikit-learn.org.'], ['scikit-learn.org.', 'Archived'], ['Archived', 'from'], ['from', 'the'], ['the', 'original'], ['original', 'on'], ['on', 'May'], ['May', '.'], ['.', 'Retrieved'], ['Retrieved', 'November'], ['November', '.'], ['.', '^'], ['^', 'Jouppi,'], ['Jouppi,', 'Norm.'], ['Norm.', '\"Google'], ['\"Google', 'supercharges'], ['supercharges', 'machine'], ['machine', 'learning'], ['learning', 'tasks'], ['tasks', 'with'], ['with', 'TPU'], ['TPU', 'custom'], ['custom', 'chip\".'], ['chip\".', 'Google'], ['Google', 'Cloud'], ['Cloud', 'Platform'], ['Platform', 'Blog.'], ['Blog.', 'Archived'], ['Archived', 'from'], ['from', 'the'], ['the', 'original'], ['original', 'on'], ['on', 'May'], ['May', '.'], ['.', 'Retrieved'], ['Retrieved', 'May'], ['May', '.'], ['.', '^'], ['^', '\"Natural'], ['\"Natural', 'Language'], ['Language', 'Toolkit'], ['Toolkit', 'NLTK'], ['NLTK', '.'], ['.', 'b'], ['b', 'documentation\".'], ['documentation\".', 'www.nltk.org.'], ['www.nltk.org.', 'Archived'], ['Archived', 'from'], ['from', 'the'], ['the', 'original'], ['original', 'on'], ['on', 'June'], ['June', '.'], ['.', 'Retrieved'], ['Retrieved', 'April'], ['April', '.'], ['.', '^'], ['^', '\"Installers'], ['\"Installers', 'for'], ['for', 'GIMP'], ['GIMP', 'for'], ['for', 'Windows'], ['Windows', 'Frequently'], ['Frequently', 'Asked'], ['Asked', 'Questions\".'], ['Questions\".', 'July'], ['July', '.'], ['.', 'Archived'], ['Archived', 'from'], ['from', 'the'], ['the', 'original'], ['original', 'on'], ['on', 'July'], ['July', '.'], ['.', 'Retrieved'], ['Retrieved', 'July'], ['July', '.'], ['.', '^'], ['^', '\"jasc'], ['\"jasc', 'psp'], ['psp', 'components\".'], ['components\".', 'Archived'], ['Archived', 'from'], ['from', 'the'], ['the', 'original'], ['original', 'on'], ['on', 'March'], ['March', '.'], ['.', '^'], ['^', '\"About'], ['\"About', 'getting'], ['getting', 'started'], ['started', 'with'], ['with', 'writing'], ['writing', 'geoprocessing'], ['geoprocessing', 'scripts\".'], ['scripts\".', 'ArcGIS'], ['ArcGIS', 'Desktop'], ['Desktop', 'Help'], ['Help', '.'], ['.', '.'], ['.', 'Environmental'], ['Environmental', 'Systems'], ['Systems', 'Research'], ['Research', 'Institute.'], ['Institute.', 'November'], ['November', '.'], ['.', 'Archived'], ['Archived', 'from'], ['from', 'the'], ['the', 'original'], ['original', 'on'], ['on', 'June'], ['June', '.'], ['.', 'Retrieved'], ['Retrieved', 'February'], ['February', '.'], ['.', '^'], ['^', 'CCP'], ['CCP', 'porkbelly'], ['porkbelly', '('], ['(', 'August'], ['August', ').'], [').', '\"Stackless'], ['\"Stackless', 'Python'], ['Python', '.'], ['.', '\".'], ['\".', 'EVE'], ['EVE', 'Community'], ['Community', 'Dev'], ['Dev', 'Blogs.'], ['Blogs.', 'CCP'], ['CCP', 'Games.'], ['Games.', 'Archived'], ['Archived', 'from'], ['from', 'the'], ['the', 'original'], ['original', 'on'], ['on', 'January'], ['January', '.'], ['.', 'Retrieved'], ['Retrieved', 'January'], ['January', '.'], ['.', 'As'], ['As', 'you'], ['you', 'may'], ['may', 'know,'], ['know,', 'EVE'], ['EVE', 'has'], ['has', 'at'], ['at', 'its'], ['its', 'core'], ['core', 'the'], ['the', 'programming'], ['programming', 'language'], ['language', 'known'], ['known', 'as'], ['as', 'Stackless'], ['Stackless', 'Python.'], ['Python.', '^'], ['^', 'Caudill,'], ['Caudill,', 'Barry'], ['Barry', '('], ['(', 'September'], ['September', ').'], [').', '\"Modding'], ['\"Modding', 'Sid'], ['Sid', \"Meier's\"], [\"Meier's\", 'Civilization'], ['Civilization', 'IV\".'], ['IV\".', 'Sid'], ['Sid', \"Meier's\"], [\"Meier's\", 'Civilization'], ['Civilization', 'IV'], ['IV', 'Developer'], ['Developer', 'Blog.'], ['Blog.', 'Firaxis'], ['Firaxis', 'Games.'], ['Games.', 'Archived'], ['Archived', 'from'], ['from', 'the'], ['the', 'original'], ['original', 'on'], ['on', 'December'], ['December', '.'], ['.', 'we'], ['we', 'created'], ['created', 'three'], ['three', 'levels'], ['levels', 'of'], ['of', 'tools'], ['tools', '...'], ['...', 'The'], ['The', 'next'], ['next', 'level'], ['level', 'offers'], ['offers', 'Python'], ['Python', 'and'], ['and', 'XML'], ['XML', 'support,'], ['support,', 'letting'], ['letting', 'modders'], ['modders', 'with'], ['with', 'more'], ['more', 'experience'], ['experience', 'manipulate'], ['manipulate', 'the'], ['the', 'game'], ['game', 'world'], ['world', 'and'], ['and', 'everything'], ['everything', 'in'], ['in', 'it.'], ['it.', '^'], ['^', '\"Python'], ['\"Python', 'Language'], ['Language', 'Guide'], ['Guide', '(v'], ['(v', '.'], ['.', ')\".'], [')\".', 'Google'], ['Google', 'Documents'], ['Documents', 'List'], ['List', 'Data'], ['Data', 'API'], ['API', 'v'], ['v', '.'], ['.', '.'], ['.', 'Archived'], ['Archived', 'from'], ['from', 'the'], ['the', 'original'], ['original', 'on'], ['on', 'July'], ['July', '.'], ['.', '^'], ['^', '\"Python'], ['\"Python', 'Setup'], ['Setup', 'and'], ['and', 'Usage\".'], ['Usage\".', 'Python'], ['Python', 'Software'], ['Software', 'Foundation.'], ['Foundation.', 'Archived'], ['Archived', 'from'], ['from', 'the'], ['the', 'original'], ['original', 'on'], ['on', 'June'], ['June', '.'], ['.', 'Retrieved'], ['Retrieved', 'January'], ['January', '.'], ['.', '^'], ['^', '\"Immunity:'], ['\"Immunity:', 'Knowing'], ['Knowing', \"You're\"], [\"You're\", 'Secure\".'], ['Secure\".', 'Archived'], ['Archived', 'from'], ['from', 'the'], ['the', 'original'], ['original', 'on'], ['on', 'February'], ['February', '.'], ['.', '^'], ['^', '\"Core'], ['\"Core', 'Security\".'], ['Security\".', 'Core'], ['Core', 'Security.'], ['Security.', 'Archived'], ['Archived', 'from'], ['from', 'the'], ['the', 'original'], ['original', 'on'], ['on', 'June'], ['June', '.'], ['.', 'Retrieved'], ['Retrieved', 'April'], ['April', '.'], ['.', '^'], ['^', '\"What'], ['\"What', 'is'], ['is', 'Sugar?\".'], ['Sugar?\".', 'Sugar'], ['Sugar', 'Labs.'], ['Labs.', 'Archived'], ['Archived', 'from'], ['from', 'the'], ['the', 'original'], ['original', 'on'], ['on', 'January'], ['January', '.'], ['.', 'Retrieved'], ['Retrieved', 'February'], ['February', '.'], ['.', '^'], ['^', '\"'], ['\"', '.'], ['.', 'New'], ['New', 'Features'], ['Features', 'and'], ['and', 'Fixes\".'], ['Fixes\".', 'LibreOffice.org.'], ['LibreOffice.org.', 'The'], ['The', 'Document'], ['Document', 'Foundation.'], ['Foundation.', '.'], ['.', 'Archived'], ['Archived', 'from'], ['from', 'the'], ['the', 'original'], ['original', 'on'], ['on', 'February'], ['February', '.'], ['.', 'Retrieved'], ['Retrieved', 'February'], ['February', '.'], ['.', '^'], ['^', '\"Gotchas'], ['\"Gotchas', 'for'], ['for', 'Python'], ['Python', 'Users\".'], ['Users\".', 'boo.codehaus.org.'], ['boo.codehaus.org.', 'Codehaus'], ['Codehaus', 'Foundation.'], ['Foundation.', 'Archived'], ['Archived', 'from'], ['from', 'the'], ['the', 'original'], ['original', 'on'], ['on', 'December'], ['December', '.'], ['.', 'Retrieved'], ['Retrieved', 'November'], ['November', '.'], ['.', '^'], ['^', 'Esterbrook,'], ['Esterbrook,', 'Charles.'], ['Charles.', '\"Acknowledgements\".'], ['\"Acknowledgements\".', 'cobra-language.com.'], ['cobra-language.com.', 'Cobra'], ['Cobra', 'Language.'], ['Language.', 'Archived'], ['Archived', 'from'], ['from', 'the'], ['the', 'original'], ['original', 'on'], ['on', 'February'], ['February', '.'], ['.', 'Retrieved'], ['Retrieved', 'April'], ['April', '.'], ['.', '^'], ['^', '\"Proposals:'], ['\"Proposals:', 'iterators'], ['iterators', 'and'], ['and', 'generators'], ['generators', 'ES'], ['ES', 'Wiki'], ['Wiki', '\".'], ['\".', 'wiki.ecmascript.org.'], ['wiki.ecmascript.org.', 'Archived'], ['Archived', 'from'], ['from', 'the'], ['the', 'original'], ['original', 'on'], ['on', 'October'], ['October', '.'], ['.', 'Retrieved'], ['Retrieved', 'November'], ['November', '.'], ['.', '^'], ['^', '\"Frequently'], ['\"Frequently', 'asked'], ['asked', 'questions\".'], ['questions\".', 'Godot'], ['Godot', 'Engine'], ['Engine', 'documentation.'], ['documentation.', 'Archived'], ['Archived', 'from'], ['from', 'the'], ['the', 'original'], ['original', 'on'], ['on', 'April'], ['April', '.'], ['.', 'Retrieved'], ['Retrieved', 'May'], ['May', '.'], ['.', '^'], ['^', 'Kincaid,'], ['Kincaid,', 'Jason'], ['Jason', '('], ['(', 'November'], ['November', ').'], [').', '\"Google\\'s'], ['\"Google\\'s', 'Go:'], ['Go:', 'A'], ['A', 'New'], ['New', 'Programming'], ['Programming', 'Language'], ['Language', \"That's\"], [\"That's\", 'Python'], ['Python', 'Meets'], ['Meets', 'C'], ['C', '\".'], ['\".', 'TechCrunch.'], ['TechCrunch.', 'Archived'], ['Archived', 'from'], ['from', 'the'], ['the', 'original'], ['original', 'on'], ['on', 'January'], ['January', '.'], ['.', 'Retrieved'], ['Retrieved', 'January'], ['January', '.'], ['.', '^'], ['^', 'Strachan,'], ['Strachan,', 'James'], ['James', '('], ['(', 'August'], ['August', ').'], [').', '\"Groovy'], ['\"Groovy', 'the'], ['the', 'birth'], ['birth', 'of'], ['of', 'a'], ['a', 'new'], ['new', 'dynamic'], ['dynamic', 'language'], ['language', 'for'], ['for', 'the'], ['the', 'Java'], ['Java', 'platform\".'], ['platform\".', 'Archived'], ['Archived', 'from'], ['from', 'the'], ['the', 'original'], ['original', 'on'], ['on', 'April'], ['April', '.'], ['.', 'Retrieved'], ['Retrieved', 'June'], ['June', '.'], ['.', '^'], ['^', 'Yegulalp,'], ['Yegulalp,', 'Serdar'], ['Serdar', '('], ['(', 'January'], ['January', ').'], [').', '\"Nim'], ['\"Nim', 'language'], ['language', 'draws'], ['draws', 'from'], ['from', 'best'], ['best', 'of'], ['of', 'Python,'], ['Python,', 'Rust,'], ['Rust,', 'Go,'], ['Go,', 'and'], ['and', 'Lisp\".'], ['Lisp\".', 'InfoWorld.'], ['InfoWorld.', 'Archived'], ['Archived', 'from'], ['from', 'the'], ['the', 'original'], ['original', 'on'], ['on', 'October'], ['October', '.'], ['.', 'Retrieved'], ['Retrieved', 'June'], ['June', '.'], ['.', \"Nim's\"], [\"Nim's\", 'syntax'], ['syntax', 'is'], ['is', 'strongly'], ['strongly', 'reminiscent'], ['reminiscent', 'of'], ['of', \"Python's,\"], [\"Python's,\", 'as'], ['as', 'it'], ['it', 'uses'], ['uses', 'indented'], ['indented', 'code'], ['code', 'blocks'], ['blocks', 'and'], ['and', 'some'], ['some', 'of'], ['of', 'the'], ['the', 'same'], ['same', 'syntax'], ['syntax', '(such'], ['(such', 'as'], ['as', 'the'], ['the', 'way'], ['way', 'if/elif/then/else'], ['if/elif/then/else', 'blocks'], ['blocks', 'are'], ['are', 'constructed).'], ['constructed).', '^'], ['^', '\"An'], ['\"An', 'Interview'], ['Interview', 'with'], ['with', 'the'], ['the', 'Creator'], ['Creator', 'of'], ['of', 'Ruby\".'], ['Ruby\".', 'Linuxdevcenter.com.'], ['Linuxdevcenter.com.', 'Archived'], ['Archived', 'from'], ['from', 'the'], ['the', 'original'], ['original', 'on'], ['on', 'April'], ['April', '.'], ['.', 'Retrieved'], ['Retrieved', 'December'], ['December', '.'], ['.', '^'], ['^', 'Lattner,'], ['Lattner,', 'Chris'], ['Chris', '('], ['(', 'June'], ['June', ').'], [').', '\"Chris'], ['\"Chris', \"Lattner's\"], [\"Lattner's\", 'Homepage\".'], ['Homepage\".', 'Chris'], ['Chris', 'Lattner.'], ['Lattner.', 'Archived'], ['Archived', 'from'], ['from', 'the'], ['the', 'original'], ['original', 'on'], ['on', 'December'], ['December', '.'], ['.', 'Retrieved'], ['Retrieved', 'June'], ['June', '.'], ['.', 'I'], ['I', 'started'], ['started', 'work'], ['work', 'on'], ['on', 'the'], ['the', 'Swift'], ['Swift', 'Programming'], ['Programming', 'Language'], ['Language', 'in'], ['in', 'July'], ['July', 'of'], ['of', '.'], ['.', 'I'], ['I', 'implemented'], ['implemented', 'much'], ['much', 'of'], ['of', 'the'], ['the', 'basic'], ['basic', 'language'], ['language', 'structure,'], ['structure,', 'with'], ['with', 'only'], ['only', 'a'], ['a', 'few'], ['few', 'people'], ['people', 'knowing'], ['knowing', 'of'], ['of', 'its'], ['its', 'existence.'], ['existence.', 'A'], ['A', 'few'], ['few', 'other'], ['other', '(amazing)'], ['(amazing)', 'people'], ['people', 'started'], ['started', 'contributing'], ['contributing', 'in'], ['in', 'earnest'], ['earnest', 'late'], ['late', 'in'], ['in', ','], [',', 'and'], ['and', 'it'], ['it', 'became'], ['became', 'a'], ['a', 'major'], ['major', 'focus'], ['focus', 'for'], ['for', 'the'], ['the', 'Apple'], ['Apple', 'Developer'], ['Developer', 'Tools'], ['Tools', 'group'], ['group', 'in'], ['in', 'July'], ['July', '...'], ['...', 'drawing'], ['drawing', 'ideas'], ['ideas', 'from'], ['from', 'Objective-C,'], ['Objective-C,', 'Rust,'], ['Rust,', 'Haskell,'], ['Haskell,', 'Ruby,'], ['Ruby,', 'Python,'], ['Python,', 'C#,'], ['C#,', 'CLU,'], ['CLU,', 'and'], ['and', 'far'], ['far', 'too'], ['too', 'many'], ['many', 'others'], ['others', 'to'], ['to', 'list.'], ['list.', '^'], ['^', 'Kupries,'], ['Kupries,', 'Andreas;'], ['Andreas;', 'Fellows,'], ['Fellows,', 'Donal'], ['Donal', 'K.'], ['K.', '('], ['(', 'September'], ['September', ').'], [').', '\"TIP'], ['\"TIP', '#'], ['#', ':'], [':', 'TIP'], ['TIP', 'Format\".'], ['Format\".', 'tcl.tk.'], ['tcl.tk.', 'Tcl'], ['Tcl', 'Developer'], ['Developer', 'Xchange.'], ['Xchange.', 'Archived'], ['Archived', 'from'], ['from', 'the'], ['the', 'original'], ['original', 'on'], ['on', 'July'], ['July', '.'], ['.', 'Retrieved'], ['Retrieved', 'November'], ['November', '.'], ['.', '^'], ['^', 'Gustafsson,'], ['Gustafsson,', 'Per;'], ['Per;', 'Niskanen,'], ['Niskanen,', 'Raimo'], ['Raimo', '('], ['(', 'January'], ['January', ').'], [').', '\"EEP'], ['\"EEP', ':'], [':', 'EEP'], ['EEP', 'Purpose'], ['Purpose', 'and'], ['and', 'Guidelines\".'], ['Guidelines\".', 'erlang.org.'], ['erlang.org.', 'Archived'], ['Archived', 'from'], ['from', 'the'], ['the', 'original'], ['original', 'on'], ['on', 'June'], ['June', '.'], ['.', 'Retrieved'], ['Retrieved', 'April'], ['April', '.'], ['.', '^'], ['^', '\"Swift'], ['\"Swift', 'Evolution'], ['Evolution', 'Process\".'], ['Process\".', 'Swift'], ['Swift', 'Programming'], ['Programming', 'Language'], ['Language', 'Evolution'], ['Evolution', 'repository'], ['repository', 'on'], ['on', 'GitHub.'], ['GitHub.', 'February'], ['February', '.'], ['.', 'Archived'], ['Archived', 'from'], ['from', 'the'], ['the', 'original'], ['original', 'on'], ['on', 'April'], ['April', '.'], ['.', 'Retrieved'], ['Retrieved', 'April'], ['April', '.'], ['.', 'Sources'], ['Sources', '\"Python'], ['\"Python', 'for'], ['for', 'Artificial'], ['Artificial', 'Intelligence\".'], ['Intelligence\".', 'Wiki.python.org.'], ['Wiki.python.org.', 'July'], ['July', '.'], ['.', 'Archived'], ['Archived', 'from'], ['from', 'the'], ['the', 'original'], ['original', 'on'], ['on', 'November'], ['November', '.'], ['.', 'Retrieved'], ['Retrieved', 'December'], ['December', '.'], ['.', 'Paine,'], ['Paine,', 'Jocelyn,'], ['Jocelyn,', 'ed.'], ['ed.', '(August'], ['(August', ').'], [').', '\"AI'], ['\"AI', 'in'], ['in', 'Python\".'], ['Python\".', 'AI'], ['AI', 'Expert'], ['Expert', 'Newsletter.'], ['Newsletter.', 'Amzi!.'], ['Amzi!.', 'Archived'], ['Archived', 'from'], ['from', 'the'], ['the', 'original'], ['original', 'on'], ['on', 'March'], ['March', '.'], ['.', 'Retrieved'], ['Retrieved', 'February'], ['February', '.'], ['.', '\"PyAIML'], ['\"PyAIML', '.'], ['.', '.'], ['.', ':'], [':', 'Python'], ['Python', 'Package'], ['Package', 'Index\".'], ['Index\".', 'Pypi.python.org.'], ['Pypi.python.org.', 'Retrieved'], ['Retrieved', 'July'], ['July', '.'], ['.', 'Russell,'], ['Russell,', 'Stuart'], ['Stuart', 'J.'], ['J.', '&'], ['&', 'Norvig,'], ['Norvig,', 'Peter'], ['Peter', '('], ['(', ').'], [').', 'Artificial'], ['Artificial', 'Intelligence:'], ['Intelligence:', 'A'], ['A', 'Modern'], ['Modern', 'Approach'], ['Approach', '('], ['(', 'rded.).'], ['rded.).', 'Upper'], ['Upper', 'Saddle'], ['Saddle', 'River,'], ['River,', 'NJ:'], ['NJ:', 'Prentice'], ['Prentice', 'Hall.'], ['Hall.', 'ISBN'], ['ISBN', '-'], ['-', '-'], ['-', '-'], ['-', '-'], ['-', '.'], ['.', 'Further'], ['Further', 'reading'], ['reading', 'Downey,'], ['Downey,', 'Allen'], ['Allen', 'B.'], ['B.', '(May'], ['(May', ').'], [').', 'Think'], ['Think', 'Python:'], ['Python:', 'How'], ['How', 'to'], ['to', 'Think'], ['Think', 'Like'], ['Like', 'a'], ['a', 'Computer'], ['Computer', 'Scientist'], ['Scientist', '(version'], ['(version', '.'], ['.', '.'], ['.', 'ed.).'], ['ed.).', 'ISBN'], ['ISBN', '-'], ['-', '-'], ['-', '-'], ['-', '-'], ['-', '.'], ['.', 'Hamilton,'], ['Hamilton,', 'Naomi'], ['Naomi', '('], ['(', 'August'], ['August', ').'], [').', '\"The'], ['\"The', 'A-Z'], ['A-Z', 'of'], ['of', 'Programming'], ['Programming', 'Languages:'], ['Languages:', 'Python\".'], ['Python\".', 'Computerworld.'], ['Computerworld.', 'Archived'], ['Archived', 'from'], ['from', 'the'], ['the', 'original'], ['original', 'on'], ['on', 'December'], ['December', '.'], ['.', 'Retrieved'], ['Retrieved', 'March'], ['March', '.'], ['.', 'Lutz,'], ['Lutz,', 'Mark'], ['Mark', '('], ['(', ').'], [').', 'Learning'], ['Learning', 'Python'], ['Python', '('], ['(', 'thed.).'], ['thed.).', \"O'Reilly\"], [\"O'Reilly\", 'Media.'], ['Media.', 'ISBN'], ['ISBN', '-'], ['-', '-'], ['-', '-'], ['-', '-'], ['-', '.'], ['.', 'Summerfield,'], ['Summerfield,', 'Mark'], ['Mark', '('], ['(', ').'], [').', 'Programming'], ['Programming', 'in'], ['in', 'Python'], ['Python', '('], ['(', 'nded.).'], ['nded.).', 'Addison-Wesley'], ['Addison-Wesley', 'Professional.'], ['Professional.', 'ISBN'], ['ISBN', '-'], ['-', '-'], ['-', '-'], ['-', '-'], ['-', '.'], ['.', 'Ramalho,'], ['Ramalho,', 'Luciano'], ['Luciano', '(May'], ['(May', ').'], [').', 'Fluent'], ['Fluent', 'Python'], ['Python', '('], ['(', 'nd'], ['nd', 'ed.).'], ['ed.).', \"O'Reilly\"], [\"O'Reilly\", 'Media.'], ['Media.', 'ISBN'], ['ISBN', '-'], ['-', '-'], ['-', '-'], ['-', '-'], ['-', '.'], ['.', 'External'], ['External', 'links'], ['links', 'Python'], ['Python', 'at'], ['at', \"Wikipedia's\"], [\"Wikipedia's\", 'sister'], ['sister', 'projects'], ['projects', 'Media'], ['Media', 'from'], ['from', 'CommonsQuotations'], ['CommonsQuotations', 'from'], ['from', 'WikiquoteTextbooks'], ['WikiquoteTextbooks', 'from'], ['from', 'WikibooksResources'], ['WikibooksResources', 'from'], ['from', 'WikiversityData'], ['WikiversityData', 'from'], ['from', 'Wikidata'], ['Wikidata', 'Official'], ['Official', 'website'], ['website', 'vtePythonImplementations'], ['vtePythonImplementations', 'CircuitPython'], ['CircuitPython', 'CLPython'], ['CLPython', 'CPython'], ['CPython', 'Cython'], ['Cython', 'MicroPython'], ['MicroPython', 'Numba'], ['Numba', 'IronPython'], ['IronPython', 'Jython'], ['Jython', 'Psyco'], ['Psyco', 'PyPy'], ['PyPy', 'Python'], ['Python', 'for'], ['for', 'S'], ['S', 'Shed'], ['Shed', 'Skin'], ['Skin', 'Stackless'], ['Stackless', 'Python'], ['Python', 'Unladen'], ['Unladen', 'Swallow'], ['Swallow', 'more...'], ['more...', 'IDE'], ['IDE', 'Boa'], ['Boa', 'Eric'], ['Eric', 'Python'], ['Python', 'IDE'], ['IDE', 'IDLE'], ['IDLE', 'PyCharm'], ['PyCharm', 'PyDev'], ['PyDev', 'Ninja-IDE'], ['Ninja-IDE', 'more...'], ['more...', 'Topics'], ['Topics', 'WSGI'], ['WSGI', 'ASGI'], ['ASGI', 'software'], ['software', '(list)'], ['(list)', 'Python'], ['Python', 'Software'], ['Software', 'Foundation'], ['Foundation', 'PyCon'], ['PyCon', 'vteProgramming'], ['vteProgramming', 'languages'], ['languages', 'Comparison'], ['Comparison', 'Timeline'], ['Timeline', 'History'], ['History', 'Ada'], ['Ada', 'ALGOL'], ['ALGOL', 'APL'], ['APL', 'Assembly'], ['Assembly', 'BASIC'], ['BASIC', 'C'], ['C', 'C'], ['C', 'C#'], ['C#', 'Classic'], ['Classic', 'Visual'], ['Visual', 'Basic'], ['Basic', 'COBOL'], ['COBOL', 'Erlang'], ['Erlang', 'Forth'], ['Forth', 'Fortran'], ['Fortran', 'Go'], ['Go', 'Haskell'], ['Haskell', 'Java'], ['Java', 'JavaScript'], ['JavaScript', 'Kotlin'], ['Kotlin', 'Lisp'], ['Lisp', 'Lua'], ['Lua', 'MATLAB'], ['MATLAB', 'ML'], ['ML', 'Object'], ['Object', 'Pascal'], ['Pascal', 'Pascal'], ['Pascal', 'Perl'], ['Perl', 'PHP'], ['PHP', 'Prolog'], ['Prolog', 'Python'], ['Python', 'R'], ['R', 'Ruby'], ['Ruby', 'Rust'], ['Rust', 'SQL'], ['SQL', 'Scratch'], ['Scratch', 'Shell'], ['Shell', 'Simula'], ['Simula', 'Smalltalk'], ['Smalltalk', 'Swift'], ['Swift', 'Visual'], ['Visual', 'Basic'], ['Basic', 'more...'], ['more...', 'Lists:'], ['Lists:', 'Alphabetical'], ['Alphabetical', 'Categorical'], ['Categorical', 'Generational'], ['Generational', 'Non-English-based'], ['Non-English-based', 'Category'], ['Category', 'vtePython'], ['vtePython', 'web'], ['web', 'frameworks'], ['frameworks', 'Bottle'], ['Bottle', 'CherryPy'], ['CherryPy', 'CubicWeb'], ['CubicWeb', 'Django'], ['Django', 'FastAPI'], ['FastAPI', 'Flask'], ['Flask', 'Grok'], ['Grok', 'Nagare'], ['Nagare', 'Nevow'], ['Nevow', 'Pylons'], ['Pylons', 'Pyramid'], ['Pyramid', 'Quixote'], ['Quixote', 'TACTIC'], ['TACTIC', 'Tornado'], ['Tornado', 'TurboGears'], ['TurboGears', 'TwistedWeb'], ['TwistedWeb', 'web'], ['web', 'py'], ['py', 'Zope'], ['Zope', 'more...'], ['more...', 'vteDifferentiable'], ['vteDifferentiable', 'computingGeneral'], ['computingGeneral', 'Differentiable'], ['Differentiable', 'programming'], ['programming', 'Information'], ['Information', 'geometry'], ['geometry', 'Statistical'], ['Statistical', 'manifold'], ['manifold', 'Automatic'], ['Automatic', 'differentiation'], ['differentiation', 'Neuromorphic'], ['Neuromorphic', 'engineering'], ['engineering', 'Cable'], ['Cable', 'theory'], ['theory', 'Pattern'], ['Pattern', 'recognition'], ['recognition', 'Tensor'], ['Tensor', 'calculus'], ['calculus', 'Computational'], ['Computational', 'learning'], ['learning', 'theory'], ['theory', 'Inductive'], ['Inductive', 'bias'], ['bias', 'Concepts'], ['Concepts', 'Gradient'], ['Gradient', 'descent'], ['descent', 'SGD'], ['SGD', 'Clustering'], ['Clustering', 'Regression'], ['Regression', 'Overfitting'], ['Overfitting', 'Adversary'], ['Adversary', 'Attention'], ['Attention', 'Convolution'], ['Convolution', 'Loss'], ['Loss', 'functions'], ['functions', 'Backpropagation'], ['Backpropagation', 'Normalization'], ['Normalization', 'Activation'], ['Activation', 'Softmax'], ['Softmax', 'Sigmoid'], ['Sigmoid', 'Rectifier'], ['Rectifier', 'Regularization'], ['Regularization', 'Datasets'], ['Datasets', 'Augmentation'], ['Augmentation', 'Diffusion'], ['Diffusion', 'Autoregression'], ['Autoregression', 'Programming'], ['Programming', 'languages'], ['languages', 'Python'], ['Python', 'Julia'], ['Julia', 'Swift'], ['Swift', 'Application'], ['Application', 'Machine'], ['Machine', 'learning'], ['learning', 'Artificial'], ['Artificial', 'neural'], ['neural', 'network'], ['network', 'Deep'], ['Deep', 'learning'], ['learning', 'Scientific'], ['Scientific', 'computing'], ['computing', 'Artificial'], ['Artificial', 'Intelligence'], ['Intelligence', 'Hardware'], ['Hardware', 'IPU'], ['IPU', 'TPU'], ['TPU', 'VPU'], ['VPU', 'Memristor'], ['Memristor', 'SpiNNaker'], ['SpiNNaker', 'Software'], ['Software', 'library'], ['library', 'TensorFlow'], ['TensorFlow', 'PyTorch'], ['PyTorch', 'Keras'], ['Keras', 'Theano'], ['Theano', 'JAX'], ['JAX', 'ImplementationAudiovisual'], ['ImplementationAudiovisual', 'AlexNet'], ['AlexNet', 'WaveNet'], ['WaveNet', 'Human'], ['Human', 'image'], ['image', 'synthesis'], ['synthesis', 'HWR'], ['HWR', 'OCR'], ['OCR', 'Speech'], ['Speech', 'synthesis'], ['synthesis', '.ai'], ['.ai', 'Speech'], ['Speech', 'recognition'], ['recognition', 'Facial'], ['Facial', 'recognition'], ['recognition', 'AlphaFold'], ['AlphaFold', 'DALL-E'], ['DALL-E', 'Midjourney'], ['Midjourney', 'Stable'], ['Stable', 'Diffusion'], ['Diffusion', 'Verbal'], ['Verbal', 'Word'], ['Word', 'vec'], ['vec', 'Transformer'], ['Transformer', 'BERT'], ['BERT', 'LaMDA'], ['LaMDA', 'NMT'], ['NMT', 'Project'], ['Project', 'Debater'], ['Debater', 'IBM'], ['IBM', 'Watson'], ['Watson', 'GPT-'], ['GPT-', 'GPT-'], ['GPT-', 'GPT-'], ['GPT-', '(unreleased)'], ['(unreleased)', 'GPT-J'], ['GPT-J', 'Decisional'], ['Decisional', 'AlphaGo'], ['AlphaGo', 'AlphaZero'], ['AlphaZero', 'Q-learning'], ['Q-learning', 'SARSA'], ['SARSA', 'OpenAI'], ['OpenAI', 'Five'], ['Five', 'Self-driving'], ['Self-driving', 'car'], ['car', 'MuZero'], ['MuZero', 'Action'], ['Action', 'selection'], ['selection', 'Robot'], ['Robot', 'control'], ['control', 'People'], ['People', 'Yoshua'], ['Yoshua', 'Bengio'], ['Bengio', 'Alex'], ['Alex', 'Graves'], ['Graves', 'Ian'], ['Ian', 'Goodfellow'], ['Goodfellow', 'Demis'], ['Demis', 'Hassabis'], ['Hassabis', 'Geoffrey'], ['Geoffrey', 'Hinton'], ['Hinton', 'Yann'], ['Yann', 'LeCun'], ['LeCun', 'Fei-Fei'], ['Fei-Fei', 'Li'], ['Li', 'Andrew'], ['Andrew', 'Ng'], ['Ng', 'Jrgen'], ['Jrgen', 'Schmidhuber'], ['Schmidhuber', 'David'], ['David', 'Silver'], ['Silver', 'Organizations'], ['Organizations', 'DeepMind'], ['DeepMind', 'OpenAI'], ['OpenAI', 'MIT'], ['MIT', 'CSAIL'], ['CSAIL', 'Mila'], ['Mila', 'Google'], ['Google', 'Brain'], ['Brain', 'Meta'], ['Meta', 'AI'], ['AI', 'Anthropic'], ['Anthropic', 'Architectures'], ['Architectures', 'Neural'], ['Neural', 'Turing'], ['Turing', 'machine'], ['machine', 'Differentiable'], ['Differentiable', 'neural'], ['neural', 'computer'], ['computer', 'Transformer'], ['Transformer', 'Recurrent'], ['Recurrent', 'neural'], ['neural', 'network'], ['network', '(RNN)'], ['(RNN)', 'Long'], ['Long', 'short-term'], ['short-term', 'memory'], ['memory', '(LSTM)'], ['(LSTM)', 'Gated'], ['Gated', 'recurrent'], ['recurrent', 'unit'], ['unit', '(GRU)'], ['(GRU)', 'Echo'], ['Echo', 'state'], ['state', 'network'], ['network', 'Multilayer'], ['Multilayer', 'perceptron'], ['perceptron', '(MLP)'], ['(MLP)', 'Convolutional'], ['Convolutional', 'neural'], ['neural', 'network'], ['network', 'Residual'], ['Residual', 'network'], ['network', 'Autoencoder'], ['Autoencoder', 'Variational'], ['Variational', 'autoencoder'], ['autoencoder', '(VAE)'], ['(VAE)', 'Generative'], ['Generative', 'adversarial'], ['adversarial', 'network'], ['network', '(GAN)'], ['(GAN)', 'Graph'], ['Graph', 'neural'], ['neural', 'network'], ['network', 'Portals'], ['Portals', 'Computer'], ['Computer', 'programming'], ['programming', 'Technology'], ['Technology', 'Category'], ['Category', 'Artificial'], ['Artificial', 'neural'], ['neural', 'networks'], ['networks', 'Machine'], ['Machine', 'learning'], ['learning', 'vteFree'], ['vteFree', 'and'], ['and', 'open-source'], ['open-source', 'softwareGeneral'], ['softwareGeneral', 'Alternative'], ['Alternative', 'terms'], ['terms', 'for'], ['for', 'free'], ['free', 'software'], ['software', 'Comparison'], ['Comparison', 'of'], ['of', 'open-source'], ['open-source', 'and'], ['and', 'closed-source'], ['closed-source', 'software'], ['software', 'Comparison'], ['Comparison', 'of'], ['of', 'source-code-hosting'], ['source-code-hosting', 'facilities'], ['facilities', 'Free'], ['Free', 'software'], ['software', 'Free'], ['Free', 'software'], ['software', 'project'], ['project', 'directories'], ['directories', 'Gratis'], ['Gratis', 'versus'], ['versus', 'libre'], ['libre', 'Long-term'], ['Long-term', 'support'], ['support', 'Open-source'], ['Open-source', 'software'], ['software', 'Open-source'], ['Open-source', 'software'], ['software', 'development'], ['development', 'Outline'], ['Outline', 'Timeline'], ['Timeline', 'Softwarepackages'], ['Softwarepackages', 'Audio'], ['Audio', 'Bioinformatics'], ['Bioinformatics', 'Codecs'], ['Codecs', 'Configuration'], ['Configuration', 'management'], ['management', 'Drivers'], ['Drivers', 'Graphics'], ['Graphics', 'Wireless'], ['Wireless', 'Health'], ['Health', 'Mathematics'], ['Mathematics', 'Office'], ['Office', 'Suites'], ['Suites', 'Operating'], ['Operating', 'systems'], ['systems', 'Programming'], ['Programming', 'languages'], ['languages', 'Routing'], ['Routing', 'Television'], ['Television', 'Video'], ['Video', 'games'], ['games', 'Web'], ['Web', 'applications'], ['applications', 'E-commerce'], ['E-commerce', 'Android'], ['Android', 'apps'], ['apps', 'iOS'], ['iOS', 'apps'], ['apps', 'Commercial'], ['Commercial', 'Formerly'], ['Formerly', 'proprietary'], ['proprietary', 'Formerly'], ['Formerly', 'open-source'], ['open-source', 'Community'], ['Community', 'Free'], ['Free', 'software'], ['software', 'movement'], ['movement', 'History'], ['History', 'Open-source-software'], ['Open-source-software', 'movement'], ['movement', 'Events'], ['Events', 'Organisations'], ['Organisations', 'Free'], ['Free', 'Software'], ['Software', 'Movement'], ['Movement', 'of'], ['of', 'India'], ['India', 'Free'], ['Free', 'Software'], ['Software', 'Foundation'], ['Foundation', 'Licenses'], ['Licenses', 'AFL'], ['AFL', 'Apache'], ['Apache', 'APSL'], ['APSL', 'Artistic'], ['Artistic', 'Beerware'], ['Beerware', 'BSD'], ['BSD', 'Creative'], ['Creative', 'Commons'], ['Commons', 'CDDL'], ['CDDL', 'EPL'], ['EPL', 'Free'], ['Free', 'Software'], ['Software', 'Foundation'], ['Foundation', 'GNU'], ['GNU', 'GPL'], ['GPL', 'GNU'], ['GNU', 'LGPL'], ['LGPL', 'ISC'], ['ISC', 'MIT'], ['MIT', 'MPL'], ['MPL', 'Python'], ['Python', 'Python'], ['Python', 'Software'], ['Software', 'Foundation'], ['Foundation', 'License'], ['License', 'Shared'], ['Shared', 'Source'], ['Source', 'Initiative'], ['Initiative', 'Sleepycat'], ['Sleepycat', 'Unlicense'], ['Unlicense', 'WTFPL'], ['WTFPL', 'zlib'], ['zlib', 'Types'], ['Types', 'and'], ['and', 'standards'], ['standards', 'Comparison'], ['Comparison', 'of'], ['of', 'licenses'], ['licenses', 'Contributor'], ['Contributor', 'License'], ['License', 'Agreement'], ['Agreement', 'Copyleft'], ['Copyleft', 'Debian'], ['Debian', 'Free'], ['Free', 'Software'], ['Software', 'Guidelines'], ['Guidelines', 'Definition'], ['Definition', 'of'], ['of', 'Free'], ['Free', 'Cultural'], ['Cultural', 'Works'], ['Works', 'Free'], ['Free', 'license'], ['license', 'The'], ['The', 'Free'], ['Free', 'Software'], ['Software', 'Definition'], ['Definition', 'The'], ['The', 'Open'], ['Open', 'Source'], ['Source', 'Definition'], ['Definition', 'Open-source'], ['Open-source', 'license'], ['license', 'Permissive'], ['Permissive', 'software'], ['software', 'license'], ['license', 'Public'], ['Public', 'domain'], ['domain', 'Viral'], ['Viral', 'license'], ['license', 'Challenges'], ['Challenges', 'Digital'], ['Digital', 'rights'], ['rights', 'management'], ['management', 'Hardware'], ['Hardware', 'restrictions'], ['restrictions', 'License'], ['License', 'proliferation'], ['proliferation', 'Mozilla'], ['Mozilla', 'software'], ['software', 'rebranding'], ['rebranding', 'Proprietary'], ['Proprietary', 'device'], ['device', 'drivers'], ['drivers', 'Proprietary'], ['Proprietary', 'firmware'], ['firmware', 'Proprietary'], ['Proprietary', 'software'], ['software', 'SCO/Linux'], ['SCO/Linux', 'controversies'], ['controversies', 'Software'], ['Software', 'patents'], ['patents', 'Software'], ['Software', 'security'], ['security', 'Trusted'], ['Trusted', 'Computing'], ['Computing', 'Related'], ['Related', 'topics'], ['topics', 'Forking'], ['Forking', 'GNU'], ['GNU', 'Manifesto'], ['Manifesto', 'Microsoft'], ['Microsoft', 'Open'], ['Open', 'Specification'], ['Specification', 'Promise'], ['Promise', 'Open-core'], ['Open-core', 'model'], ['model', 'Open-source'], ['Open-source', 'hardware'], ['hardware', 'Shared'], ['Shared', 'Source'], ['Source', 'Initiative'], ['Initiative', 'Source-available'], ['Source-available', 'software'], ['software', 'The'], ['The', 'Cathedral'], ['Cathedral', 'and'], ['and', 'the'], ['the', 'Bazaar'], ['Bazaar', 'Revolution'], ['Revolution', 'OS'], ['OS', 'Portal'], ['Portal', 'Category'], ['Category', 'vteStatistical'], ['vteStatistical', 'softwarePublic'], ['softwarePublic', 'domain'], ['domain', 'Dataplot'], ['Dataplot', 'Epi'], ['Epi', 'Info'], ['Info', 'CSPro'], ['CSPro', 'X-'], ['X-', '-ARIMA'], ['-ARIMA', 'Open-source'], ['Open-source', 'ADMB'], ['ADMB', 'DAP'], ['DAP', 'gretl'], ['gretl', 'JASP'], ['JASP', 'JAGS'], ['JAGS', 'JMulTi'], ['JMulTi', 'Julia'], ['Julia', 'Jupyter'], ['Jupyter', '(Julia,'], ['(Julia,', 'Python,'], ['Python,', 'R)'], ['R)', 'GNU'], ['GNU', 'Octave'], ['Octave', 'OpenBUGS'], ['OpenBUGS', 'Orange'], ['Orange', 'PSPP'], ['PSPP', 'Python'], ['Python', '(statsmodels,'], ['(statsmodels,', 'PyMC'], ['PyMC', ','], [',', 'IPython,'], ['IPython,', 'IDLE)'], ['IDLE)', 'R'], ['R', '(RStudio)'], ['(RStudio)', 'SageMath'], ['SageMath', 'SimFiT'], ['SimFiT', 'SOFA'], ['SOFA', 'Statistics'], ['Statistics', 'Stan'], ['Stan', 'XLispStat'], ['XLispStat', 'Freeware'], ['Freeware', 'BV'], ['BV', '.'], ['.', 'CumFreq'], ['CumFreq', 'SegReg'], ['SegReg', 'XploRe'], ['XploRe', 'WinBUGS'], ['WinBUGS', 'CommercialCross-platform'], ['CommercialCross-platform', 'Data'], ['Data', 'Desk'], ['Desk', 'GAUSS'], ['GAUSS', 'GraphPad'], ['GraphPad', 'InStat'], ['InStat', 'GraphPad'], ['GraphPad', 'Prism'], ['Prism', 'IBM'], ['IBM', 'SPSS'], ['SPSS', 'Statistics'], ['Statistics', 'IBM'], ['IBM', 'SPSS'], ['SPSS', 'Modeler'], ['Modeler', 'JMP'], ['JMP', 'Maple'], ['Maple', 'Mathcad'], ['Mathcad', 'Mathematica'], ['Mathematica', 'MATLAB'], ['MATLAB', 'OxMetrics'], ['OxMetrics', 'RATS'], ['RATS', 'Revolution'], ['Revolution', 'Analytics'], ['Analytics', 'SAS'], ['SAS', 'SmartPLS'], ['SmartPLS', 'Stata'], ['Stata', 'StatView'], ['StatView', 'SUDAAN'], ['SUDAAN', 'S-PLUS'], ['S-PLUS', 'TSP'], ['TSP', 'World'], ['World', 'Programming'], ['Programming', 'System'], ['System', '(WPS)'], ['(WPS)', 'Windows'], ['Windows', 'only'], ['only', 'BMDP'], ['BMDP', 'EViews'], ['EViews', 'GenStat'], ['GenStat', 'LIMDEP'], ['LIMDEP', 'LISREL'], ['LISREL', 'MedCalc'], ['MedCalc', 'Microfit'], ['Microfit', 'Minitab'], ['Minitab', 'MLwiN'], ['MLwiN', 'NCSS'], ['NCSS', 'SHAZAM'], ['SHAZAM', 'SigmaStat'], ['SigmaStat', 'Statistica'], ['Statistica', 'StatsDirect'], ['StatsDirect', 'StatXact'], ['StatXact', 'SYSTAT'], ['SYSTAT', 'The'], ['The', 'Unscrambler'], ['Unscrambler', 'UNISTAT'], ['UNISTAT', 'Excel'], ['Excel', 'add-ons'], ['add-ons', 'Analyse-it'], ['Analyse-it', 'UNISTAT'], ['UNISTAT', 'for'], ['for', 'Excel'], ['Excel', 'XLfit'], ['XLfit', 'RExcel'], ['RExcel', 'Category'], ['Category', 'Comparison'], ['Comparison', 'vteNumerical-analysis'], ['vteNumerical-analysis', 'softwareFree'], ['softwareFree', 'Advanced'], ['Advanced', 'Simulation'], ['Simulation', 'Library'], ['Library', 'ADMB'], ['ADMB', 'Chapel'], ['Chapel', 'Euler'], ['Euler', 'Fortress'], ['Fortress', 'FreeFem'], ['FreeFem', 'FreeMat'], ['FreeMat', 'Genius'], ['Genius', 'Gmsh'], ['Gmsh', 'GNU'], ['GNU', 'Octave'], ['Octave', 'gretl'], ['gretl', 'Julia'], ['Julia', 'Jupyter'], ['Jupyter', '(Julia,'], ['(Julia,', 'Python,'], ['Python,', 'R;'], ['R;', 'IPython)'], ['IPython)', 'MFEM'], ['MFEM', 'OpenFOAM'], ['OpenFOAM', 'Python'], ['Python', 'R'], ['R', 'SageMath'], ['SageMath', 'Salome'], ['Salome', 'ScicosLab'], ['ScicosLab', 'Scilab'], ['Scilab', 'X'], ['X', 'Weka'], ['Weka', 'Proprietary'], ['Proprietary', 'DADiSP'], ['DADiSP', 'FEATool'], ['FEATool', 'Multiphysics'], ['Multiphysics', 'GAUSS'], ['GAUSS', 'LabVIEW'], ['LabVIEW', 'Maple'], ['Maple', 'Mathcad'], ['Mathcad', 'Mathematica'], ['Mathematica', 'MATLAB'], ['MATLAB', 'Speakeasy'], ['Speakeasy', 'VisSim'], ['VisSim', 'Comparison'], ['Comparison', 'Authority'], ['Authority', 'control'], ['control', 'National'], ['National', 'libraries'], ['libraries', 'France'], ['France', '(data)'], ['(data)', 'Germany'], ['Germany', 'Israel'], ['Israel', 'United'], ['United', 'States'], ['States', 'Czech'], ['Czech', 'Republic'], ['Republic', 'Other'], ['Other', 'FAST'], ['FAST', 'SUDOC'], ['SUDOC', '(France)'], ['(France)', 'Retrieved'], ['Retrieved', 'from'], ['from', '\"https://en.wikipedia.org/w/index.php?title=Python_(programming_language)&oldid='], ['\"https://en.wikipedia.org/w/index.php?title=Python_(programming_language)&oldid=', '\"']]\n", + "2-grams count is: 12493\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/var/folders/y6/jnf4yrtx1pg3y9tqb8fmhnrr0000gp/T/ipykernel_45564/3853174245.py:4: FutureWarning: Possible nested set at position 3\n", + " content = re.sub('\\n|[[\\d+\\]]', ' ', content)\n" + ] + } + ], + "source": [ + "html = urlopen('http://en.wikipedia.org/wiki/Python_(programming_language)')\n", + "bs = BeautifulSoup(html, 'html.parser')\n", + "content = bs.find('div', {'id':'mw-content-text'}).get_text()\n", + "ngrams = getNgrams(content, 2)\n", + "print(ngrams)\n", + "print('2-grams count is: '+str(len(ngrams)))" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [], + "source": [ + "from urllib.request import urlopen\n", + "from bs4 import BeautifulSoup\n", + "import re\n", + "import string\n", + "\n", + "def cleanSentence(sentence):\n", + " sentence = sentence.split(' ')\n", + " sentence = [word.strip(string.punctuation+string.whitespace) for word in sentence]\n", + " sentence = [word for word in sentence if len(word) > 1 or (word.lower() == 'a' or word.lower() == 'i')]\n", + " return sentence\n", + "\n", + "def cleanInput(content):\n", + " content = content.upper()\n", + " content = re.sub('\\n|[[\\d+\\]]', ' ', content)\n", + " content = bytes(content, \"UTF-8\")\n", + " content = content.decode(\"ascii\", \"ignore\")\n", + " sentences = content.split('. ')\n", + " return [cleanSentence(sentence) for sentence in sentences]\n", + "\n", + "def getNgramsFromSentence(content, n):\n", + " output = []\n", + " for i in range(len(content)-n+1):\n", + " output.append(content[i:i+n])\n", + " return output\n", + "\n", + "def getNgrams(content, n):\n", + " content = cleanInput(content)\n", + " ngrams = []\n", + " for sentence in content:\n", + " ngrams.extend(getNgramsFromSentence(sentence, n))\n", + " return(ngrams)\n", + " \n" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "9414\n" + ] + } + ], + "source": [ + "html = urlopen('http://en.wikipedia.org/wiki/Python_(programming_language)')\n", + "bs = BeautifulSoup(html, 'html.parser')\n", + "content = bs.find('div', {'id':'mw-content-text'}).get_text()\n", + "print(len(getNgrams(content, 2)))" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [], + "source": [ + "from collections import Counter\n", + "\n", + "def getNgrams(content, n):\n", + " content = cleanInput(content)\n", + " ngrams = Counter()\n", + " ngrams_list = []\n", + " for sentence in content:\n", + " newNgrams = [' '.join(ngram) for ngram in getNgramsFromSentence(sentence, n)]\n", + " ngrams_list.extend(newNgrams)\n", + " ngrams.update(newNgrams)\n", + " return(ngrams)" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Counter({'FROM THE': 209, 'THE ORIGINAL': 199, 'ORIGINAL ON': 197, 'ARCHIVED FROM': 195, 'ON JUNE': 59, 'OF THE': 39, 'SOFTWARE FOUNDATION': 38, 'PYTHON SOFTWARE': 38, 'IN PYTHON': 36, 'OF PYTHON': 34, 'RETRIEVED FEBRUARY': 31, 'IN THE': 26, 'RETRIEVED MARCH': 25, 'THE PYTHON': 23, 'RETRIEVED JANUARY': 23, 'AS A': 21, 'VAN ROSSUM': 21, 'SUCH AS': 21, 'ON MAY': 20, 'RETRIEVED MAY': 19, 'RETRIEVED NOVEMBER': 19, 'IS A': 18, 'RETRIEVED APRIL': 18, 'PROGRAMMING LANGUAGE': 17, 'ON OCTOBER': 17, 'ON DECEMBER': 17, 'RETRIEVED JULY': 16, 'ON APRIL': 16, 'PROGRAMMING LANGUAGES': 15, 'RETRIEVED JUNE': 15, 'TO THE': 14, 'TO BE': 14, 'CAN BE': 14, 'BE USED': 14, 'FOR PYTHON': 14, 'PYTHON ENHANCEMENT': 14, 'RETRIEVED SEPTEMBER': 14, 'PYTHON IS': 13, 'ON MARCH': 13, 'ENHANCEMENT PROPOSALS': 13, 'RETRIEVED DECEMBER': 13, 'ON FEBRUARY': 13, 'WITH THE': 12, 'STANDARD LIBRARY': 12, 'TO PYTHON': 12, 'ON AUGUST': 12, 'ROSSUM GUIDO': 12, 'ON JANUARY': 12, 'IT IS': 11, 'OF A': 11, 'STATEMENT WHICH': 11, 'USED TO': 11, 'PYTHON INSIDER': 11, 'OTHER LANGUAGES': 10, 'ON JULY': 10, 'USE OF': 9, 'GUIDO VAN': 9, 'AS THE': 9, 'TO A': 9, 'PYTHON USES': 9, 'THE STANDARD': 9, 'PYTHON AND': 9, 'THE SAME': 9, 'RETRIEVED AUGUST': 9, 'PYTHON FOR': 9, 'ON NOVEMBER': 9, 'FREE SOFTWARE': 9, 'FOR THE': 8, 'SYNTAX AND': 8, 'FOR EXAMPLE': 8, 'PART OF': 8, 'ON THE': 8, 'AND THE': 8, 'WITH PYTHON': 8, 'PYTHON TO': 8, 'THE USE': 7, 'AND A': 7, 'WITH A': 7, 'A PYTHON': 7, 'WRITTEN IN': 7, 'IN A': 7, 'USED IN': 7, 'PYTHON A': 7, 'PYTHON HAS': 7, 'AND IS': 7, 'MACHINE LEARNING': 7, 'COMPARISON OF': 7, 'OF PROGRAMMING': 7, 'FUNCTIONAL PROGRAMMING': 6, 'PYTHON CODE': 6, 'DOES NOT': 6, 'BY THE': 6, 'OPERATOR FOR': 6, 'NUMBER OF': 6, 'SCRIPTING LANGUAGE': 6, 'SCIENTIFIC COMPUTING': 6, 'PEP PYTHON': 6, 'RETRIEVED OCTOBER': 6, 'INSIDER PYTHON': 6, 'STACKLESS PYTHON': 5, 'ON PYTHON': 5, 'PYTHON IN': 5, 'RELEASED IN': 5, 'HISTORY OF': 5, 'NEW FEATURES': 5, 'OF ITS': 5, 'IS THE': 5, 'OBJECT-ORIENTED PROGRAMMING': 5, 'MANY OTHER': 5, 'BETTER THAN': 5, 'IS ALSO': 5, 'MONTY PYTHON': 5, 'THE LANGUAGE': 5, 'THE OPERATOR': 5, 'MAY BE': 5, 'USED AS': 5, 'ARE NOT': 5, 'CAN CONTAIN': 5, 'CONTAIN MIXED': 5, 'MIXED TYPES': 5, 'A FEW': 5, 'ARE NOW': 5, 'PYTHON AS': 5, 'A SCRIPTING': 5, 'NOW AVAILABLE': 5, 'DUE TO': 4, 'AS PYTHON': 4, 'WAS RELEASED': 4, 'MAIN ARTICLE': 4, 'PYTHON PYTHON': 4, 'LIST COMPREHENSIONS': 4, 'IT WAS': 4, 'ON SEPTEMBER': 4, 'AS OF': 4, 'THE CURRENT': 4, 'IT HAS': 4, 'IS BETTER': 4, 'RATHER THAN': 4, 'CONTRAST TO': 4, 'IS NOT': 4, 'REFERENCE IMPLEMENTATION': 4, 'LANGUAGES SUCH': 4, 'PYTHON INTERPRETER': 4, 'HAS A': 4, 'USE PYTHON': 4, 'AND SEMANTICS': 4, 'ASSIGNMENT STATEMENT': 4, 'IT ALSO': 4, 'A VALUE': 4, 'FROM A': 4, 'SIMILAR TO': 4, 'THERE ARE': 4, 'FLOOR DIVISION': 4, 'USES THE': 4, 'LIBRARIES SUCH': 4, 'THEY ARE': 4, 'PERL AND': 4, 'USE THE': 4, 'A NUMBER': 4, 'USED FOR': 4, 'SEQUENCE OF': 4, 'EXAMPLE THE': 4, 'CODE IS': 4, 'SUBSET OF': 4, 'LATEST RELEASE': 4, 'RELEASE IN': 4, 'IS USED': 4, 'IN AND': 4, 'THE VERSION': 4, 'VERSION NUMBER': 4, 'NUMBER IS': 4, 'IS INCREMENTED': 4, 'ARTIFICIAL INTELLIGENCE': 4, 'DYNAMIC LANGUAGE': 4, 'GENERAL PYTHON': 4, 'PYTHON FAQ': 4, 'PYTHON LANGUAGE': 4, 'LANGA UKASZ': 4, \"O'REILLY MEDIA\": 4, 'PEP STYLE': 4, 'STYLE GUIDE': 4, 'GUIDE FOR': 4, 'ARCHIVED PDF': 4, 'PDF FROM': 4, 'IN SCIENCE': 4, 'NEURAL NETWORK': 4, 'DESIGN PHILOSOPHY': 3, 'THE ABC': 3, 'THE LAST': 3, 'LAST RELEASE': 3, 'ONE OF': 3, 'MOST POPULAR': 3, 'PYTHON COMMUNITY': 3, 'REFERENCE COUNTING': 3, 'MANY OF': 3, 'INCLUDE THE': 3, 'OUT OF': 3, 'A LARGE': 3, 'ARE SUPPORTED': 3, 'THAT THE': 3, 'SUPPORT FOR': 3, 'GENERATOR EXPRESSIONS': 3, 'ITS CORE': 3, 'LARGE STANDARD': 3, 'LIBRARY AND': 3, 'IN CONTRAST': 3, 'TO DO': 3, 'AT THE': 3, 'AND PYTHON': 3, 'THIS IS': 3, 'IN ITS': 3, 'THAT IS': 3, 'IS CALLED': 3, 'PYTHON SYNTAX': 3, 'EXECUTES A': 3, 'A BLOCK': 3, 'BLOCK OF': 3, 'OF CODE': 3, 'CODE BLOCK': 3, 'STATEMENT USED': 3, 'THE CLASS': 3, 'TO CREATE': 3, 'A GENERATOR': 3, 'AND ALSO': 3, 'AND FROM': 3, 'DATA TYPE': 3, 'ONLY A': 3, 'ACCORDING TO': 3, 'TO OTHER': 3, 'A STRING': 3, 'INFIX OPERATOR': 3, 'FOR MATRIX': 3, 'MATRIX MULTIPLICATION': 3, 'AS WELL': 3, 'WELL AS': 3, 'CONDITIONAL EXPRESSIONS': 3, 'WRITTEN AS': 3, 'CANNOT BE': 3, 'A NEW': 3, 'WHICH IS': 3, 'THAT CAN': 3, 'IN AN': 3, 'AN ASSIGNMENT': 3, 'SPAM EGGS': 3, 'PYTHON CAN': 3, 'DOUBLE QUOTE': 3, 'QUOTE MARKS': 3, 'MULTIPLE LINES': 3, 'EXPRESSIONS AND': 3, 'AND NEGATIVE': 3, 'BUILT-IN FUNCTIONS': 3, 'IS FOR': 3, 'OFTEN USED': 3, 'SAME SYNTAX': 3, 'BUILT-IN TYPES': 3, 'IMMUTABLE AN': 3, 'COMMONLY USED': 3, 'DIVISION OPERATOR': 3, 'MEANS THAT': 3, 'MODULE PROVIDES': 3, 'AND ITS': 3, 'WEB SERVER': 3, 'SERVER GATEWAY': 3, 'GATEWAY INTERFACE': 3, 'WEB FRAMEWORKS': 3, 'DEVELOPMENT ENVIRONMENTS': 3, 'SEE ALSO': 3, 'INTEGRATED DEVELOPMENT': 3, 'PYTHON IMPLEMENTATIONS': 3, 'SCIENCE AND': 3, 'LIST OF': 3, 'COMPILES PYTHON': 3, 'PYTHON PROGRAMS': 3, 'SINCE PYTHON': 3, 'FORK OF': 3, 'OF CPYTHON': 3, 'AND AN': 3, 'HAVE BEEN': 3, 'AND SOME': 3, 'PYTHON WITH': 3, 'TO JAVASCRIPT': 3, 'COMPILES A': 3, 'A SUBSET': 3, 'THE JAVA': 3, 'ON A': 3, \"PYTHON'S DEVELOPMENT\": 3, 'ISSUES AND': 3, 'MAILING LIST': 3, 'TO GITHUB': 3, 'THESE RELEASES': 3, 'ARE ALSO': 3, 'LANGUAGES IN': 3, 'LANGUAGE FOR': 3, 'DESIGN AND': 3, 'USING PYTHON': 3, 'USES INDENTATION': 3, 'A SIMILAR': 3, 'SIMILAR SYNTAX': 3, 'LANGUAGE IN': 3, 'OPEN-SOURCE SOFTWARE': 3, 'DOWNLOAD PYTHON': 3, 'INTERVIEW WITH': 3, 'INTRODUCTION TO': 3, 'FOUND IN': 3, 'THE HISTORY': 3, 'STACK OVERFLOW': 3, 'ZADKA MOSHE': 3, \"WHAT'S NEW\": 3, 'NEW IN': 3, 'CVE CVE': 3, 'PYTHON AT': 3, \"PYTHON DEVELOPER'S\": 3, \"DEVELOPER'S GUIDE\": 3, 'COMPUTING IN': 3, 'GENERAL-PURPOSE PROGRAMMING': 2, 'STABLE RELEASE': 2, 'FEBRUARY DAYS': 2, 'DAYS AGO': 2, 'AGO FEBRUARY': 2, 'AND MORE': 2, 'ADA ALGOL': 2, 'ALGOL APL': 2, 'STANDARD ML': 2, 'ITS DESIGN': 2, 'DYNAMICALLY TYPED': 2, 'IS OFTEN': 2, 'BATTERIES INCLUDED': 2, 'TO ITS': 2, 'WORKING ON': 2, 'THE LATE': 2, 'A SUCCESSOR': 2, 'SUCCESSOR TO': 2, 'ABC PROGRAMMING': 2, 'LANGUAGE AND': 2, 'IN WAS': 2, 'WAS A': 2, 'A MAJOR': 2, 'WAS THE': 2, 'RELEASE OF': 2, 'AS ONE': 2, 'THE MOST': 2, 'POPULAR PROGRAMMING': 2, 'ROSSUM AT': 2, 'PYTHON WAS': 2, 'INSPIRED BY': 2, 'EXCEPTION HANDLING': 2, 'OPERATING SYSTEM': 2, 'THE PROJECT': 2, 'FROM HIS': 2, \"AS PYTHON'S\": 2, \"PYTHON'S BENEVOLENT\": 2, 'BENEVOLENT DICTATOR': 2, 'DICTATOR FOR': 2, 'FOR LIFE': 2, 'IN JANUARY': 2, 'STEERING COUNCIL': 2, 'RELEASED ON': 2, 'WITH MANY': 2, 'MAJOR NEW': 2, 'CYCLE-DETECTING GARBAGE': 2, 'COUNTING AND': 2, 'PYTHON INCLUDE': 2, 'CODE TO': 2, 'WILL BE': 2, 'FOR IT': 2, 'WERE EXPEDITED': 2, 'SECURITY ISSUES': 2, 'OF MANY': 2, 'OF NOVEMBER': 2, 'NOVEMBER UPDATE': 2, 'PROGRAM EXECUTION': 2, 'PHILOSOPHY AND': 2, 'PROGRAMMING AND': 2, 'METAPROGRAMMING AND': 2, 'USES DYNAMIC': 2, 'TYPING AND': 2, 'IT USES': 2, 'METHOD AND': 2, 'VARIABLE NAMES': 2, 'PROGRAMMING IN': 2, 'AND GENERATOR': 2, 'BORROWED FROM': 2, 'HASKELL AND': 2, 'THE DOCUMENT': 2, 'THE ZEN': 2, 'ZEN OF': 2, 'ALL OF': 2, 'WAS DESIGNED': 2, 'DESIGNED TO': 2, 'LANGUAGE WITH': 2, 'IN THEIR': 2, 'THERE IS': 2, 'IS MORE': 2, 'WAY TO': 2, 'DO IT': 2, 'PYTHON BOOK': 2, 'TO DESCRIBE': 2, 'SOMETHING AS': 2, 'PYTHON CULTURE': 2, \"PYTHON'S DEVELOPERS\": 2, 'TO AVOID': 2, 'PARTS OF': 2, 'THE CPYTHON': 2, 'CPYTHON REFERENCE': 2, 'PYPY A': 2, 'JUST-IN-TIME COMPILER': 2, 'ALSO AVAILABLE': 2, 'TO USE': 2, 'THE BRITISH': 2, 'BRITISH COMEDY': 2, 'COMEDY GROUP': 2, 'GROUP MONTY': 2, 'SPAM AND': 2, 'AND EGGS': 2, 'A REFERENCE': 2, 'REFERENCE TO': 2, 'INSTEAD OF': 2, 'FOO AND': 2, 'AND BAR': 2, 'A COMMON': 2, 'A WIDE': 2, 'WIDE RANGE': 2, 'RANGE OF': 2, 'RELATED TO': 2, 'TO PROGRAM': 2, 'LIKE A': 2, 'A ROUGH': 2, 'LANGUAGE IS': 2, 'ARTICLE PYTHON': 2, 'LANGUAGES USE': 2, 'IT DOES': 2, 'NOT USE': 2, 'CURLY BRACKETS': 2, 'TO DELIMIT': 2, 'DELIMIT BLOCKS': 2, 'BLOCKS AND': 2, 'THAN OR': 2, 'IN INDENTATION': 2, 'THE END': 2, 'SOME OTHER': 2, 'BUT IN': 2, 'CONTROL FLOW': 2, 'THE ASSIGNMENT': 2, 'FOR STATEMENT': 2, 'AN ITERABLE': 2, 'ITERABLE OBJECT': 2, 'EACH ELEMENT': 2, 'FOR USE': 2, 'BLOCK THE': 2, 'WHICH EXECUTES': 2, 'AS ITS': 2, 'IS TRUE': 2, 'HANDLED BY': 2, 'IS ALWAYS': 2, 'RAISE STATEMENT': 2, 'A SPECIFIED': 2, 'CODE AND': 2, 'CLASS FOR': 2, 'USE IN': 2, 'A FUNCTION': 2, 'FUNCTION OR': 2, 'OR METHOD': 2, 'BEFORE IT': 2, 'THE NEXT': 2, 'THE REFERENCE': 2, 'IF THE': 2, 'THE VARIABLE': 2, 'RETURNS A': 2, 'VALUE FROM': 2, 'GENERATOR FUNCTION': 2, 'FUNCTION AND': 2, 'A VARIABLE': 2, 'NAME IS': 2, 'A TYPE': 2, 'NOT SUPPORT': 2, 'FROM PYTHON': 2, 'THE BEHAVIOR': 2, 'BEHAVIOR OF': 2, 'OF DIVISION': 2, 'DIVISION OR': 2, 'INTEGER DIVISION': 2, 'DIVISION AND': 2, 'FOR EXPONENTIATION': 2, 'OF TIMES': 2, 'AS NUMPY': 2, 'THE SYNTAX': 2, 'OPERATOR WAS': 2, 'WAS INTRODUCED': 2, 'IT ASSIGNS': 2, 'VALUES TO': 2, 'AS PART': 2, 'EXAMPLE A': 2, 'OR AND': 2, 'AND NOT': 2, 'EXPRESSION CALLED': 2, 'CALLED A': 2, 'ANONYMOUS FUNCTIONS': 2, 'LAMBDA EXPRESSIONS': 2, 'ARE WRITTEN': 2, 'DIFFERENT IN': 2, 'TO MANY': 2, 'PYTHON MAKES': 2, 'A DISTINCTION': 2, 'DISTINCTION BETWEEN': 2, 'AS ARE': 2, 'KEYS OF': 2, 'OF DICTIONARIES': 2, 'KEYS MUST': 2, 'MUST BE': 2, 'ARE IMMUTABLE': 2, 'IS THEN': 2, 'NATURE OF': 2, 'PYTHON FEATURES': 2, 'SIDE OF': 2, 'THE EQUAL': 2, 'EQUAL SIGN': 2, 'STRINGS IN': 2, 'INTEGERS AND': 2, 'STRING LITERALS': 2, 'SINGLE OR': 2, 'OR DOUBLE': 2, 'SHELLS PERL': 2, 'AS AN': 2, 'STRING INTERPOLATION': 2, 'BEGINNING AND': 2, 'AND ENDING': 2, 'ENDING WITH': 2, 'REGULAR EXPRESSIONS': 2, 'OR A': 2, 'INDEXES ARE': 2, 'INCLUDING THE': 2, 'THE THIRD': 2, 'BE A': 2, 'AND OTHER': 2, 'HAS THE': 2, 'CAUSES A': 2, 'PYTHON ALSO': 2, 'OFTEN CALLED': 2, 'ARITHMETIC OPERATIONS': 2, 'AND HAS': 2, 'NOT CHECKED': 2, 'AN OBJECT': 2, 'IS STRONGLY': 2, 'STRONGLY TYPED': 2, 'PYTHON ALLOWS': 2, 'INSTANCES OF': 2, 'OF CLASSES': 2, 'CLASSES ARE': 2, 'ARE CONSTRUCTED': 2, 'BEFORE VERSION': 2, 'USING THE': 2, 'CURRENT PYTHON': 2, 'IMPLEMENTATION CPYTHON': 2, 'AN EXPERIMENTAL': 2, 'OPTIONAL STATIC': 2, 'PYTHON BUILT-IN': 2, 'OF BYTES': 2, 'IMMUTABLE SEQUENCE': 2, 'NUMBER WITH': 2, 'UNORDERED SET': 2, 'SET CONTAINS': 2, 'CONTAINS NO': 2, 'NO DUPLICATES': 2, 'DUPLICATES CAN': 2, 'TYPES IF': 2, 'IF HASHABLE': 2, 'STRING TRUE': 2, 'IMMUTABLE A': 2, 'OPERATIONS PYTHON': 2, 'THE FLOOR': 2, 'ALSO HAS': 2, 'AND CAN': 2, 'CAN ALSO': 2, 'ALSO BE': 2, 'POSITIVE AND': 2, 'THE DIVISION': 2, 'THE EQUATION': 2, 'A IS': 2, 'OF THIS': 2, 'WHILE THE': 2, 'A POSITIVE': 2, 'POSITIVE INTEGER': 2, 'THE EXPRESSION': 2, 'IS LESS': 2, 'LESS THAN': 2, 'THE DECIMAL': 2, 'ARBITRARY PRECISION': 2, 'LANGUAGE TO': 2, 'WORLD PROGRAM': 2, 'IS COMMONLY': 2, 'MODULES FOR': 2, 'GRAPHICAL USER': 2, 'USER INTERFACES': 2, 'THE WEB': 2, 'MOST OF': 2, 'PYTHON PACKAGE': 2, 'PACKAGE INDEX': 2, 'THE OFFICIAL': 2, 'IMAGE PROCESSING': 2, 'TEXT PROCESSING': 2, 'COMMAND LINE': 2, 'INTERPRETER FOR': 2, 'DEVELOPMENT ENVIRONMENT': 2, 'SOFTWARE PYTHON': 2, 'CPYTHON IS': 2, 'IMPLEMENTATION OF': 2, 'IS WRITTEN': 2, 'STANDARD PYTHON': 2, 'LATER VERSIONS': 2, 'WITH OR': 2, 'A MIXTURE': 2, 'MIXTURE OF': 2, 'OF AND': 2, 'AVAILABLE FOR': 2, 'FOR MANY': 2, 'MANY PLATFORMS': 2, 'STARTING WITH': 2, 'UNTIL PYTHON': 2, 'INTERPRETER OF': 2, 'A SIGNIFICANT': 2, 'USED WITH': 2, 'TO SPEED': 2, 'UP THE': 2, 'PERFORMANCE-ORIENTED FORK': 2, 'UNLADEN SWALLOW': 2, 'CPYTHON AND': 2, 'TO MACHINE': 2, 'MACHINE CODE': 2, 'DATA TYPES': 2, 'TYPES AND': 2, 'THE NOKIA': 2, 'IN COMPILE': 2, 'TO AND': 2, 'THE PYPY': 2, 'PYTHON TRANSPILER': 2, \"GOOGLE'S GRUMPY\": 2, 'FEATURES AND': 2, 'LANGUAGE RUNTIME': 2, 'TO JAVA': 2, 'ALLOWING THE': 2, 'SHED SKIN': 2, 'OTHER PROGRAMMING': 2, 'THE COMPUTER': 2, 'COMPUTER LANGUAGE': 2, 'LANGUAGE BENCHMARKS': 2, 'BENCHMARKS GAME': 2, 'THE PRIMARY': 2, 'PYTHON DESIGN': 2, 'EXPECTED TO': 2, 'THE FIRST': 2, 'YEARS AFTER': 2, 'RELEASES ARE': 2, 'THE CODE': 2, 'THE STATE': 2, 'STATE OF': 2, 'CONFERENCE ON': 2, 'REMOVED IN': 2, 'PATTERN MATCHING': 2, 'PYTHON DOCUMENTATION': 2, 'TO SHOW': 2, 'CREATE GAMES': 2, 'AND PYPY': 2, 'THE TIOBE': 2, 'TIOBE PROGRAMMING': 2, 'PROGRAMMING COMMUNITY': 2, 'COMMUNITY INDEX': 2, 'AND JAVA': 2, 'AN EMPIRICAL': 2, 'JAVA AND': 2, 'WEB APPLICATIONS': 2, 'A STANDARD': 2, 'PYLONS PYRAMID': 2, 'WEB PY': 2, 'THE DESIGN': 2, 'A COMPUTER': 2, 'NATURAL LANGUAGE': 2, 'HAS BEEN': 2, 'INCLUDING IN': 2, 'PROGRAMS LIKE': 2, 'USES PYTHON': 2, 'A PRETTY': 2, 'PRETTY PRINTER': 2, 'FOR WRITING': 2, 'ALSO BEEN': 2, 'VIDEO GAMES': 2, 'OPERATING SYSTEMS': 2, 'LINUX DISTRIBUTIONS': 2, 'A PACKAGE': 2, 'RED HAT': 2, 'SOFTWARE FOR': 2, 'SUGAR LABS': 2, 'OBJECT MODEL': 2, 'INDENTATION AND': 2, 'A PROGRAMMING': 2, 'LANGUAGE THAT': 2, 'PYTHON-INSPIRED SYNTAX': 2, 'ITERATORS AND': 2, 'AND GENERATORS': 2, 'A DYNAMIC': 2, 'AS USABLE': 2, 'USABLE FOR': 2, 'FOR GENERAL': 2, 'GENERAL PROGRAMMING': 2, 'PROGRAMMING AS': 2, 'A PEP': 2, 'COMPUTER PROGRAMMING': 2, 'AND OPEN-SOURCE': 2, 'LANGUAGES COMPARISON': 2, 'ALPHA ARE': 2, 'ARE AVAILABLE': 2, 'WHY IS': 2, 'IS PYTHON': 2, 'PEP THE': 2, 'ACCESS TO': 2, 'A WHY': 2, 'I HAD': 2, 'LANGUAGE DESIGN': 2, 'FEATURES INCLUDING': 2, 'WITH GUIDO': 2, 'SYSTEMS RESEARCH': 2, 'ITERTOOLS FUNCTIONS': 2, 'FUNCTIONS CREATING': 2, 'CREATING ITERATORS': 2, 'ITERATORS FOR': 2, 'FOR EFFICIENT': 2, 'EFFICIENT LOOPING': 2, 'THIS MODULE': 2, 'AN INTRODUCTION': 2, 'PYTHON TUTORIAL': 2, \"OF PYTHON'S\": 2, 'AND IT': 2, 'KUCHLING A': 2, 'PETERS TIM': 2, 'REGULAR EXPRESSION': 2, 'WE CREATED': 2, 'ON RAILS': 2, 'JAVA PLATFORM': 2, 'LATTNER CHRIS': 2, 'CHRIS JUNE': 2, \"CHRIS LATTNER'S\": 2, \"LATTNER'S HOMEPAGE\": 2, 'CHRIS LATTNER': 2, 'THE SWIFT': 2, 'DRAWING IDEAS': 2, 'IDEAS FROM': 2, 'FROM OBJECTIVE-C': 2, 'OBJECTIVE-C RUST': 2, 'RUST HASKELL': 2, 'HASKELL RUBY': 2, 'RUBY PYTHON': 2, 'PYTHON CLU': 2, 'CLU AND': 2, 'AND FAR': 2, 'FAR TOO': 2, 'TOO MANY': 2, 'MANY OTHERS': 2, 'OTHERS TO': 2, 'TO LIST': 2, 'PYTHON ADVANCED': 2, 'ORIGINAL PDF': 2, 'PDF ON': 2, 'ABOUT PYTHON': 2, 'A BRIEF': 2, 'BRIEF TIMELINE': 2, 'TIMELINE OF': 2, 'DEVELOPER TOOLS': 2, 'TIOBE INDEX': 2, 'POPULARITY OF': 2, 'GUIDO APRIL': 2, 'RELEASE SCHEDULE': 2, 'UKASZ MARCH': 2, 'LANGUAGE REFERENCE': 2, 'HETTINGER RAYMOND': 2, 'HOW TO': 2, 'EBY PHILLIP': 2, 'PEP A': 2, 'A DEDICATED': 2, 'DEDICATED INFIX': 2, 'RC DOCUMENTATION': 2, 'THE BASIC': 2, 'FLOATING POINT': 2, 'POINT ARITHMETIC': 2, 'ALMOST ALL': 2, 'MOSHE VAN': 2, 'GUIDO MARCH': 2, 'CHANGING THE': 2, 'ROUND THE': 2, 'PYTHON STANDARD': 2, 'LIBRARY RELEASE': 2, 'FUNCTIONS ARCHIVED': 2, 'OCTOBER RETRIEVED': 2, 'THE PROGRAMMING': 2, 'BATISTA FACUNDO': 2, 'PEP DECIMAL': 2, 'DECIMAL DATA': 2, 'FOR SCIENTIFIC': 2, 'FOR CODE': 2, 'AN INTERVIEW': 2, 'YEGULALP SERDAR': 2, 'NUITKA HOME': 2, 'PURPOSE AND': 2, 'AND GUIDELINES': 2, 'LUTZ MARK': 2, 'LEARNING PYTHON': 2, 'FACEBOOK FOR': 2, 'FOR DEVELOPERS': 2, 'JUNE RETRIEVED': 2, 'AND ENGINEERING': 2, 'BIBCODE CSE': 2, 'SCIENCE EDUCATION': 2, 'FREQUENTLY ASKED': 2, 'ASKED QUESTIONS': 2, \"SID MEIER'S\": 2, \"MEIER'S CIVILIZATION\": 2, 'CIVILIZATION IV': 2, 'CORE SECURITY': 2, 'SWIFT PROGRAMMING': 2, 'IN JULY': 2, 'LANGUAGES PYTHON': 2, 'VISUAL BASIC': 2, 'ARTIFICIAL NEURAL': 2, 'GPT GPT': 2, 'SOFTWARE COMPARISON': 2, 'SOFTWARE MOVEMENT': 2, 'SHARED SOURCE': 2, 'SOURCE INITIATIVE': 2, 'JULIA JUPYTER': 2, 'JUPYTER JULIA': 2, 'JULIA PYTHON': 2, 'GNU OCTAVE': 2, 'IBM SPSS': 2, 'MAPLE MATHCAD': 2, 'MATHCAD MATHEMATICA': 2, 'MATHEMATICA MATLAB': 2, 'LANGUAGE PYTHONPARADIGMMULTI-PARADIGM': 1, 'PYTHONPARADIGMMULTI-PARADIGM OBJECT-ORIENTED': 1, 'OBJECT-ORIENTED PROCEDURAL': 1, 'PROCEDURAL IMPERATIVE': 1, 'IMPERATIVE FUNCTIONAL': 1, 'FUNCTIONAL STRUCTURED': 1, 'STRUCTURED REFLECTIVEDESIGNEDBYGUIDO': 1, 'REFLECTIVEDESIGNEDBYGUIDO VAN': 1, 'VAN ROSSUMDEVELOPERPYTHON': 1, 'ROSSUMDEVELOPERPYTHON SOFTWARE': 1, 'SOFTWARE FOUNDATIONFIRSTAPPEARED': 1, 'FOUNDATIONFIRSTAPPEARED FEBRUARY': 1, 'FEBRUARY YEARS': 1, 'YEARS AGO': 1, 'AGO STABLE': 1, 'FEBRUARY PREVIEW': 1, 'PREVIEW RELEASE': 1, 'A FEBRUARY': 1, 'FEBRUARY TYPING': 1, 'TYPING DISCIPLINEDUCK': 1, 'DISCIPLINEDUCK DYNAMIC': 1, 'DYNAMIC STRONG': 1, 'STRONG TYPING': 1, 'TYPING GRADUAL': 1, 'GRADUAL SINCE': 1, 'BUT IGNORED': 1, 'IGNORED IN': 1, 'IN CPYTHON': 1, 'CPYTHON OSWINDOWS': 1, 'OSWINDOWS MACOS': 1, 'MACOS LINUX/UNIX': 1, 'LINUX/UNIX ANDROID': 1, 'ANDROID AND': 1, 'MORE LICENSEPYTHON': 1, 'LICENSEPYTHON SOFTWARE': 1, 'FOUNDATION LICENSEFILENAME': 1, 'LICENSEFILENAME EXTENSIONS.PY': 1, 'EXTENSIONS.PY PYI': 1, 'PYI PYC': 1, 'PYC PYD': 1, 'PYD PYW': 1, 'PYW PYZ': 1, 'PYZ SINCE': 1, 'PYO PRIOR': 1, 'PRIOR TO': 1, 'WEBSITEPYTHON.ORGMAJOR IMPLEMENTATIONSCPYTHON': 1, 'IMPLEMENTATIONSCPYTHON PYPY': 1, 'PYPY STACKLESS': 1, 'PYTHON MICROPYTHON': 1, 'MICROPYTHON CIRCUITPYTHON': 1, 'CIRCUITPYTHON IRONPYTHON': 1, 'IRONPYTHON JYTHONDIALECTSCYTHON': 1, 'JYTHONDIALECTSCYTHON RPYTHON': 1, 'RPYTHON STARLARK': 1, 'STARLARK INFLUENCED': 1, 'INFLUENCED BYABC': 1, 'BYABC ADA': 1, 'APL CLU': 1, 'CLU DYLAN': 1, 'DYLAN HASKELL': 1, 'HASKELL ICON': 1, 'ICON LISP': 1, 'LISP MODULA': 1, 'MODULA PERL': 1, 'PERL STANDARD': 1, 'ML INFLUENCEDAPACHE': 1, 'INFLUENCEDAPACHE GROOVY': 1, 'GROOVY BOO': 1, 'BOO COBRA': 1, 'COBRA COFFEESCRIPT': 1, 'COFFEESCRIPT GENIE': 1, 'GENIE GO': 1, 'GO JAVASCRIPT': 1, 'JAVASCRIPT JULIA': 1, 'JULIA NIM': 1, 'NIM RING': 1, 'RING RUBY': 1, 'RUBY SWIFT': 1, 'SWIFT PYTHON': 1, 'PYTHON PROGRAMMING': 1, 'PROGRAMMING AT': 1, 'AT WIKIBOOKS': 1, 'WIKIBOOKS PYTHON': 1, 'A HIGH-LEVEL': 1, 'HIGH-LEVEL GENERAL-PURPOSE': 1, 'PHILOSOPHY EMPHASIZES': 1, 'EMPHASIZES CODE': 1, 'CODE READABILITY': 1, 'READABILITY WITH': 1, 'OF SIGNIFICANT': 1, 'SIGNIFICANT INDENTATION': 1, 'IS DYNAMICALLY': 1, 'TYPED AND': 1, 'AND GARBAGE-COLLECTED': 1, 'IT SUPPORTS': 1, 'SUPPORTS MULTIPLE': 1, 'MULTIPLE PROGRAMMING': 1, 'PROGRAMMING PARADIGMS': 1, 'PARADIGMS INCLUDING': 1, 'INCLUDING STRUCTURED': 1, 'STRUCTURED PARTICULARLY': 1, 'PARTICULARLY PROCEDURAL': 1, 'PROCEDURAL OBJECT-ORIENTED': 1, 'OBJECT-ORIENTED AND': 1, 'AND FUNCTIONAL': 1, 'OFTEN DESCRIBED': 1, 'DESCRIBED AS': 1, 'A BATTERIES': 1, 'INCLUDED LANGUAGE': 1, 'LANGUAGE DUE': 1, 'ITS COMPREHENSIVE': 1, 'COMPREHENSIVE STANDARD': 1, 'ROSSUM BEGAN': 1, 'BEGAN WORKING': 1, 'LATE AS': 1, 'AND FIRST': 1, 'FIRST RELEASED': 1, 'RELEASED IT': 1, 'IT IN': 1, 'IN AS': 1, 'MAJOR REVISION': 1, 'REVISION NOT': 1, 'NOT COMPLETELY': 1, 'COMPLETELY BACKWARD-COMPATIBLE': 1, 'BACKWARD-COMPATIBLE WITH': 1, 'WITH EARLIER': 1, 'EARLIER VERSIONS': 1, 'PYTHON CONSISTENTLY': 1, 'CONSISTENTLY RANKS': 1, 'RANKS AS': 1, 'HISTORY THE': 1, 'THE DESIGNER': 1, 'DESIGNER OF': 1, 'PYTHON GUIDO': 1, 'AT OSCON': 1, 'OSCON MAIN': 1, 'ARTICLE HISTORY': 1, 'WAS CONCEIVED': 1, 'CONCEIVED IN': 1, 'LATE BY': 1, 'BY GUIDO': 1, 'AT CENTRUM': 1, 'CENTRUM WISKUNDE': 1, 'WISKUNDE INFORMATICA': 1, 'INFORMATICA CWI': 1, 'CWI IN': 1, 'THE NETHERLANDS': 1, 'NETHERLANDS AS': 1, 'LANGUAGE WHICH': 1, 'WHICH WAS': 1, 'WAS INSPIRED': 1, 'BY SETL': 1, 'SETL CAPABLE': 1, 'CAPABLE OF': 1, 'OF EXCEPTION': 1, 'HANDLING AND': 1, 'AND INTERFACING': 1, 'INTERFACING WITH': 1, 'THE AMOEBA': 1, 'AMOEBA OPERATING': 1, 'ITS IMPLEMENTATION': 1, 'IMPLEMENTATION BEGAN': 1, 'BEGAN IN': 1, 'IN DECEMBER': 1, 'ROSSUM SHOULDERED': 1, 'SHOULDERED SOLE': 1, 'SOLE RESPONSIBILITY': 1, 'RESPONSIBILITY FOR': 1, 'PROJECT AS': 1, 'THE LEAD': 1, 'LEAD DEVELOPER': 1, 'DEVELOPER UNTIL': 1, 'UNTIL JULY': 1, 'JULY WHEN': 1, 'WHEN HE': 1, 'HE ANNOUNCED': 1, 'ANNOUNCED HIS': 1, 'HIS PERMANENT': 1, 'PERMANENT VACATION': 1, 'VACATION FROM': 1, 'HIS RESPONSIBILITIES': 1, 'RESPONSIBILITIES AS': 1, 'LIFE A': 1, 'A TITLE': 1, 'TITLE THE': 1, 'COMMUNITY BESTOWED': 1, 'BESTOWED UPON': 1, 'UPON HIM': 1, 'HIM TO': 1, 'TO REFLECT': 1, 'REFLECT HIS': 1, 'HIS LONG-TERM': 1, 'LONG-TERM COMMITMENT': 1, 'COMMITMENT AS': 1, \"THE PROJECT'S\": 1, \"PROJECT'S CHIEF\": 1, 'CHIEF DECISION-MAKER': 1, 'JANUARY ACTIVE': 1, 'ACTIVE PYTHON': 1, 'PYTHON CORE': 1, 'CORE DEVELOPERS': 1, 'DEVELOPERS ELECTED': 1, 'ELECTED A': 1, 'A FIVE-MEMBER': 1, 'FIVE-MEMBER STEERING': 1, 'COUNCIL TO': 1, 'TO LEAD': 1, 'LEAD THE': 1, 'OCTOBER WITH': 1, 'MANY MAJOR': 1, 'FEATURES SUCH': 1, 'AS LIST': 1, 'COMPREHENSIONS CYCLE-DETECTING': 1, 'GARBAGE COLLECTION': 1, 'COLLECTION REFERENCE': 1, 'AND UNICODE': 1, 'UNICODE SUPPORT': 1, 'DECEMBER WITH': 1, 'ITS MAJOR': 1, 'MAJOR FEATURES': 1, 'FEATURES BACKPORTED': 1, 'BACKPORTED TO': 1, 'RELEASES OF': 1, 'THE TO': 1, 'TO UTILITY': 1, 'UTILITY WHICH': 1, 'WHICH AUTOMATES': 1, 'AUTOMATES THE': 1, 'THE TRANSLATION': 1, 'TRANSLATION OF': 1, 'END-OF-LIFE WAS': 1, 'WAS INITIALLY': 1, 'INITIALLY SET': 1, 'SET FOR': 1, 'FOR THEN': 1, 'THEN POSTPONED': 1, 'POSTPONED TO': 1, 'TO OUT': 1, 'OF CONCERN': 1, 'CONCERN THAT': 1, 'THAT A': 1, 'LARGE BODY': 1, 'BODY OF': 1, 'OF EXISTING': 1, 'EXISTING CODE': 1, 'CODE COULD': 1, 'COULD NOT': 1, 'NOT EASILY': 1, 'EASILY BE': 1, 'BE FORWARD-PORTED': 1, 'FORWARD-PORTED TO': 1, 'NO FURTHER': 1, 'FURTHER SECURITY': 1, 'SECURITY PATCHES': 1, 'PATCHES OR': 1, 'OR OTHER': 1, 'OTHER IMPROVEMENTS': 1, 'IMPROVEMENTS WILL': 1, 'BE RELEASED': 1, 'RELEASED FOR': 1, 'CURRENTLY ONLY': 1, 'AND LATER': 1, 'LATER ARE': 1, 'EXPEDITED AS': 1, 'AS ALL': 1, 'ALL VERSIONS': 1, 'VERSIONS OF': 1, 'PYTHON INCLUDING': 1, 'HAD SECURITY': 1, 'ISSUES LEADING': 1, 'LEADING TO': 1, 'TO POSSIBLE': 1, 'POSSIBLE REMOTE': 1, 'REMOTE CODE': 1, 'CODE EXECUTION': 1, 'EXECUTION AND': 1, 'AND WEB': 1, 'WEB CACHE': 1, 'CACHE POISONING': 1, 'EXPEDITED AND': 1, 'BECAUSE OF': 1, 'MANY SECURITY': 1, 'WHEN PYTHON': 1, 'IN MAY': 1, 'MAY IT': 1, 'WAS ANNOUNCED': 1, 'ANNOUNCED THAT': 1, 'SERIES JOINING': 1, 'JOINING THE': 1, 'THE OLDER': 1, 'OLDER SERIES': 1, 'WOULD ONLY': 1, 'ONLY RECEIVE': 1, 'RECEIVE SECURITY': 1, 'SECURITY FIXES': 1, 'FIXES IN': 1, 'THE FUTURE': 1, 'SEPTEMBER FOUR': 1, 'FOUR NEW': 1, 'NEW RELEASES': 1, 'RELEASES WERE': 1, 'WERE MADE': 1, 'MADE DUE': 1, 'A POTENTIAL': 1, 'POTENTIAL DENIAL-OF-SERVICE': 1, 'DENIAL-OF-SERVICE ATTACK': 1, 'UPDATE PYTHON': 1, 'CURRENT STABLE': 1, 'NOTABLE CHANGES': 1, 'CHANGES FROM': 1, 'INCLUDE INCREASED': 1, 'INCREASED PROGRAM': 1, 'EXECUTION SPEED': 1, 'SPEED AND': 1, 'AND IMPROVED': 1, 'IMPROVED ERROR': 1, 'ERROR REPORTING': 1, 'AND FEATURES': 1, 'FEATURES PYTHON': 1, 'A MULTI-PARADIGM': 1, 'MULTI-PARADIGM PROGRAMMING': 1, 'AND STRUCTURED': 1, 'STRUCTURED PROGRAMMING': 1, 'PROGRAMMING ARE': 1, 'ARE FULLY': 1, 'FULLY SUPPORTED': 1, 'SUPPORTED AND': 1, 'AND MANY': 1, 'OF THEIR': 1, 'THEIR FEATURES': 1, 'FEATURES SUPPORT': 1, 'SUPPORT FUNCTIONAL': 1, 'AND ASPECT-ORIENTED': 1, 'ASPECT-ORIENTED PROGRAMMING': 1, 'PROGRAMMING INCLUDING': 1, 'INCLUDING METAPROGRAMMING': 1, 'AND METAOBJECTS': 1, 'OTHER PARADIGMS': 1, 'PARADIGMS ARE': 1, 'SUPPORTED VIA': 1, 'VIA EXTENSIONS': 1, 'EXTENSIONS INCLUDING': 1, 'INCLUDING DESIGN': 1, 'DESIGN BY': 1, 'BY CONTRACT': 1, 'CONTRACT AND': 1, 'AND LOGIC': 1, 'LOGIC PROGRAMMING': 1, 'DYNAMIC TYPING': 1, 'A COMBINATION': 1, 'COMBINATION OF': 1, 'OF REFERENCE': 1, 'A CYCLE-DETECTING': 1, 'GARBAGE COLLECTOR': 1, 'COLLECTOR FOR': 1, 'FOR MEMORY': 1, 'MEMORY MANAGEMENT': 1, 'DYNAMIC NAME': 1, 'NAME RESOLUTION': 1, 'RESOLUTION LATE': 1, 'LATE BINDING': 1, 'BINDING WHICH': 1, 'WHICH BINDS': 1, 'BINDS METHOD': 1, 'AND VARIABLE': 1, 'NAMES DURING': 1, 'DURING PROGRAM': 1, 'DESIGN OFFERS': 1, 'OFFERS SOME': 1, 'SOME SUPPORT': 1, 'FOR FUNCTIONAL': 1, 'THE LISP': 1, 'LISP TRADITION': 1, 'HAS FILTER,MAPANDREDUCE': 1, 'FILTER,MAPANDREDUCE FUNCTIONS': 1, 'FUNCTIONS LIST': 1, 'COMPREHENSIONS DICTIONARIES': 1, 'DICTIONARIES SETS': 1, 'SETS AND': 1, 'LIBRARY HAS': 1, 'HAS TWO': 1, 'TWO MODULES': 1, 'MODULES ITERTOOLS': 1, 'ITERTOOLS AND': 1, 'AND FUNCTOOLS': 1, 'FUNCTOOLS THAT': 1, 'THAT IMPLEMENT': 1, 'IMPLEMENT FUNCTIONAL': 1, 'FUNCTIONAL TOOLS': 1, 'TOOLS BORROWED': 1, 'FROM HASKELL': 1, 'AND STANDARD': 1, 'CORE PHILOSOPHY': 1, 'PHILOSOPHY IS': 1, 'IS SUMMARIZED': 1, 'SUMMARIZED IN': 1, 'DOCUMENT THE': 1, 'PYTHON PEP': 1, 'PEP WHICH': 1, 'WHICH INCLUDES': 1, 'INCLUDES APHORISMS': 1, 'APHORISMS SUCH': 1, 'AS BEAUTIFUL': 1, 'BEAUTIFUL IS': 1, 'THAN UGLY': 1, 'EXPLICIT IS': 1, 'THAN IMPLICIT': 1, 'SIMPLE IS': 1, 'THAN COMPLEX': 1, 'COMPLEX IS': 1, 'THAN COMPLICATED': 1, 'READABILITY COUNTS': 1, 'THAN BUILDING': 1, 'BUILDING ALL': 1, 'ITS FUNCTIONALITY': 1, 'FUNCTIONALITY INTO': 1, 'INTO ITS': 1, 'CORE PYTHON': 1, 'BE HIGHLY': 1, 'HIGHLY EXTENSIBLE': 1, 'EXTENSIBLE VIA': 1, 'VIA MODULES': 1, 'THIS COMPACT': 1, 'COMPACT MODULARITY': 1, 'MODULARITY HAS': 1, 'HAS MADE': 1, 'MADE IT': 1, 'IT PARTICULARLY': 1, 'PARTICULARLY POPULAR': 1, 'POPULAR AS': 1, 'A MEANS': 1, 'MEANS OF': 1, 'OF ADDING': 1, 'ADDING PROGRAMMABLE': 1, 'PROGRAMMABLE INTERFACES': 1, 'INTERFACES TO': 1, 'TO EXISTING': 1, 'EXISTING APPLICATIONS': 1, \"VAN ROSSUM'S\": 1, \"ROSSUM'S VISION\": 1, 'VISION OF': 1, 'A SMALL': 1, 'SMALL CORE': 1, 'CORE LANGUAGE': 1, 'AND EASILY': 1, 'EASILY EXTENSIBLE': 1, 'EXTENSIBLE INTERPRETER': 1, 'INTERPRETER STEMMED': 1, 'STEMMED FROM': 1, 'HIS FRUSTRATIONS': 1, 'FRUSTRATIONS WITH': 1, 'WITH ABC': 1, 'ABC WHICH': 1, 'WHICH ESPOUSED': 1, 'ESPOUSED THE': 1, 'THE OPPOSITE': 1, 'OPPOSITE APPROACH': 1, 'PYTHON STRIVES': 1, 'STRIVES FOR': 1, 'FOR A': 1, 'A SIMPLER': 1, 'SIMPLER LESS-CLUTTERED': 1, 'LESS-CLUTTERED SYNTAX': 1, 'AND GRAMMAR': 1, 'GRAMMAR WHILE': 1, 'WHILE GIVING': 1, 'GIVING DEVELOPERS': 1, 'DEVELOPERS A': 1, 'A CHOICE': 1, 'CHOICE IN': 1, 'THEIR CODING': 1, 'CODING METHODOLOGY': 1, \"TO PERL'S\": 1, \"PERL'S THERE\": 1, 'MORE THAN': 1, 'THAN ONE': 1, 'ONE WAY': 1, 'IT MOTTO': 1, 'MOTTO PYTHON': 1, 'PYTHON EMBRACES': 1, 'EMBRACES A': 1, 'A THERE': 1, 'THERE SHOULD': 1, 'SHOULD BE': 1, 'BE ONEAND': 1, 'ONEAND PREFERABLY': 1, 'PREFERABLY ONLY': 1, 'ONLY ONEOBVIOUS': 1, 'ONEOBVIOUS WAY': 1, 'IT PHILOSOPHY': 1, 'ALEX MARTELLI': 1, 'MARTELLI A': 1, 'A FELLOW': 1, 'FELLOW AT': 1, 'FOUNDATION AND': 1, 'BOOK AUTHOR': 1, 'AUTHOR WROTE': 1, 'WROTE TO': 1, 'DESCRIBE SOMETHING': 1, 'AS CLEVER': 1, 'CLEVER IS': 1, 'NOT CONSIDERED': 1, 'CONSIDERED A': 1, 'A COMPLIMENT': 1, 'COMPLIMENT IN': 1, \"CULTURE PYTHON'S\": 1, 'DEVELOPERS STRIVE': 1, 'STRIVE TO': 1, 'AVOID PREMATURE': 1, 'PREMATURE OPTIMIZATION': 1, 'OPTIMIZATION AND': 1, 'AND REJECT': 1, 'REJECT PATCHES': 1, 'PATCHES TO': 1, 'TO NON-CRITICAL': 1, 'NON-CRITICAL PARTS': 1, 'IMPLEMENTATION THAT': 1, 'THAT WOULD': 1, 'WOULD OFFER': 1, 'OFFER MARGINAL': 1, 'MARGINAL INCREASES': 1, 'INCREASES IN': 1, 'IN SPEED': 1, 'SPEED AT': 1, 'THE COST': 1, 'COST OF': 1, 'OF CLARITY': 1, 'WHEN SPEED': 1, 'SPEED IS': 1, 'IS IMPORTANT': 1, 'IMPORTANT A': 1, 'PYTHON PROGRAMMER': 1, 'PROGRAMMER CAN': 1, 'CAN MOVE': 1, 'MOVE TIME-CRITICAL': 1, 'TIME-CRITICAL FUNCTIONS': 1, 'FUNCTIONS TO': 1, 'TO EXTENSION': 1, 'EXTENSION MODULES': 1, 'MODULES WRITTEN': 1, 'IN LANGUAGES': 1, 'AS OR': 1, 'OR USE': 1, 'USE PYPY': 1, 'A JUST-IN-TIME': 1, 'CYTHON IS': 1, 'AVAILABLE WHICH': 1, 'WHICH TRANSLATES': 1, 'TRANSLATES A': 1, 'PYTHON SCRIPT': 1, 'SCRIPT INTO': 1, 'INTO AND': 1, 'AND MAKES': 1, 'MAKES DIRECT': 1, 'DIRECT C-LEVEL': 1, 'C-LEVEL API': 1, 'API CALLS': 1, 'CALLS INTO': 1, 'INTO THE': 1, 'DEVELOPERS AIM': 1, 'AIM FOR': 1, 'IT TO': 1, 'BE FUN': 1, 'FUN TO': 1, 'IS REFLECTED': 1, 'REFLECTED IN': 1, 'ITS NAMEA': 1, 'NAMEA TRIBUTE': 1, 'TRIBUTE TO': 1, 'AND IN': 1, 'IN OCCASIONALLY': 1, 'OCCASIONALLY PLAYFUL': 1, 'PLAYFUL APPROACHES': 1, 'APPROACHES TO': 1, 'TO TUTORIALS': 1, 'TUTORIALS AND': 1, 'AND REFERENCE': 1, 'REFERENCE MATERIALS': 1, 'MATERIALS SUCH': 1, 'THE TERMS': 1, 'TERMS SPAM': 1, 'EGGS A': 1, 'A MONTY': 1, 'PYTHON SKETCH': 1, 'SKETCH IN': 1, 'IN EXAMPLES': 1, 'EXAMPLES INSTEAD': 1, 'THE OFTEN-USED': 1, 'OFTEN-USED FOO': 1, 'COMMON NEOLOGISM': 1, 'NEOLOGISM IN': 1, 'COMMUNITY IS': 1, 'IS PYTHONIC': 1, 'PYTHONIC WHICH': 1, 'WHICH HAS': 1, 'OF MEANINGS': 1, 'MEANINGS RELATED': 1, 'PROGRAM STYLE': 1, 'PYTHONIC CODE': 1, 'CODE MAY': 1, 'MAY USE': 1, 'PYTHON IDIOMS': 1, 'IDIOMS WELL': 1, 'WELL BE': 1, 'BE NATURAL': 1, 'NATURAL OR': 1, 'OR SHOW': 1, 'SHOW FLUENCY': 1, 'FLUENCY IN': 1, 'LANGUAGE OR': 1, 'OR CONFORM': 1, 'CONFORM WITH': 1, \"WITH PYTHON'S\": 1, \"PYTHON'S MINIMALIST\": 1, 'MINIMALIST PHILOSOPHY': 1, 'AND EMPHASIS': 1, 'EMPHASIS ON': 1, 'ON READABILITY': 1, 'CODE THAT': 1, 'IS DIFFICULT': 1, 'DIFFICULT TO': 1, 'TO UNDERSTAND': 1, 'UNDERSTAND OR': 1, 'OR READS': 1, 'READS LIKE': 1, 'ROUGH TRANSCRIPTION': 1, 'TRANSCRIPTION FROM': 1, 'FROM ANOTHER': 1, 'ANOTHER PROGRAMMING': 1, 'CALLED UNPYTHONIC': 1, 'SEMANTICS MAIN': 1, 'SEMANTICS PYTHON': 1, 'IS MEANT': 1, 'MEANT TO': 1, 'BE AN': 1, 'AN EASILY': 1, 'EASILY READABLE': 1, 'READABLE LANGUAGE': 1, 'ITS FORMATTING': 1, 'FORMATTING IS': 1, 'IS VISUALLY': 1, 'VISUALLY UNCLUTTERED': 1, 'UNCLUTTERED AND': 1, 'AND OFTEN': 1, 'OFTEN USES': 1, 'USES ENGLISH': 1, 'ENGLISH KEYWORDS': 1, 'KEYWORDS WHERE': 1, 'WHERE OTHER': 1, 'USE PUNCTUATION': 1, 'UNLIKE MANY': 1, 'LANGUAGES IT': 1, 'USE CURLY': 1, 'BRACKETS TO': 1, 'AND SEMICOLONS': 1, 'SEMICOLONS AFTER': 1, 'AFTER STATEMENTS': 1, 'STATEMENTS ARE': 1, 'ARE ALLOWED': 1, 'ALLOWED BUT': 1, 'BUT RARELY': 1, 'RARELY USED': 1, 'HAS FEWER': 1, 'FEWER SYNTACTIC': 1, 'SYNTACTIC EXCEPTIONS': 1, 'EXCEPTIONS AND': 1, 'AND SPECIAL': 1, 'SPECIAL CASES': 1, 'CASES THAN': 1, 'OR PASCAL': 1, 'INDENTATION MAIN': 1, 'SEMANTICS INDENTATION': 1, 'INDENTATION PYTHON': 1, 'USES WHITESPACE': 1, 'WHITESPACE INDENTATION': 1, 'INDENTATION RATHER': 1, 'THAN CURLY': 1, 'BRACKETS OR': 1, 'OR KEYWORDS': 1, 'KEYWORDS TO': 1, 'AN INCREASE': 1, 'INCREASE IN': 1, 'INDENTATION COMES': 1, 'COMES AFTER': 1, 'AFTER CERTAIN': 1, 'CERTAIN STATEMENTS': 1, 'STATEMENTS A': 1, 'A DECREASE': 1, 'DECREASE IN': 1, 'INDENTATION SIGNIFIES': 1, 'SIGNIFIES THE': 1, 'END OF': 1, 'CURRENT BLOCK': 1, 'THUS THE': 1, \"THE PROGRAM'S\": 1, \"PROGRAM'S VISUAL\": 1, 'VISUAL STRUCTURE': 1, 'STRUCTURE ACCURATELY': 1, 'ACCURATELY REPRESENTS': 1, 'REPRESENTS ITS': 1, 'ITS SEMANTIC': 1, 'SEMANTIC STRUCTURE': 1, 'THIS FEATURE': 1, 'FEATURE IS': 1, 'IS SOMETIMES': 1, 'SOMETIMES TERMED': 1, 'TERMED THE': 1, 'THE OFF-SIDE': 1, 'OFF-SIDE RULE': 1, 'USE INDENTATION': 1, 'INDENTATION THIS': 1, 'THIS WAY': 1, 'WAY BUT': 1, 'IN MOST': 1, 'MOST INDENTATION': 1, 'INDENTATION HAS': 1, 'HAS NO': 1, 'NO SEMANTIC': 1, 'SEMANTIC MEANING': 1, 'THE RECOMMENDED': 1, 'RECOMMENDED INDENT': 1, 'INDENT SIZE': 1, 'SIZE IS': 1, 'IS FOUR': 1, 'FOUR SPACES': 1, 'STATEMENTS AND': 1, 'AND CONTROL': 1, \"FLOW PYTHON'S\": 1, \"PYTHON'S STATEMENTS\": 1, 'STATEMENTS INCLUDE': 1, 'STATEMENT USING': 1, 'USING A': 1, 'A SINGLE': 1, 'SINGLE EQUALS': 1, 'EQUALS SIGN': 1, 'SIGN THE': 1, 'THE IF': 1, 'IF STATEMENT': 1, 'WHICH CONDITIONALLY': 1, 'CONDITIONALLY EXECUTES': 1, 'CODE ALONG': 1, 'ALONG WITH': 1, 'WITH ELSE': 1, 'ELSE AND': 1, 'AND ELIF': 1, 'ELIF A': 1, 'A CONTRACTION': 1, 'CONTRACTION OF': 1, 'OF ELSE-IF': 1, 'ELSE-IF THE': 1, 'THE FOR': 1, 'WHICH ITERATES': 1, 'ITERATES OVER': 1, 'OVER AN': 1, 'OBJECT CAPTURING': 1, 'CAPTURING EACH': 1, 'ELEMENT TO': 1, 'A LOCAL': 1, 'LOCAL VARIABLE': 1, 'VARIABLE FOR': 1, 'USE BY': 1, 'THE ATTACHED': 1, 'ATTACHED BLOCK': 1, 'THE WHILE': 1, 'WHILE STATEMENT': 1, 'CODE AS': 1, 'AS LONG': 1, 'LONG AS': 1, 'ITS CONDITION': 1, 'CONDITION IS': 1, 'TRUE THE': 1, 'THE TRY': 1, 'TRY STATEMENT': 1, 'WHICH ALLOWS': 1, 'ALLOWS EXCEPTIONS': 1, 'EXCEPTIONS RAISED': 1, 'RAISED IN': 1, 'ITS ATTACHED': 1, 'ATTACHED CODE': 1, 'BLOCK TO': 1, 'BE CAUGHT': 1, 'CAUGHT AND': 1, 'AND HANDLED': 1, 'BY EXCEPT': 1, 'EXCEPT CLAUSES': 1, 'CLAUSES OR': 1, 'OR NEW': 1, 'NEW SYNTAX': 1, 'SYNTAX EXCEPT': 1, 'EXCEPT IN': 1, 'FOR EXCEPTION': 1, 'EXCEPTION GROUPS': 1, 'GROUPS IT': 1, 'ALSO ENSURES': 1, 'ENSURES THAT': 1, 'THAT CLEAN-UP': 1, 'CLEAN-UP CODE': 1, 'CODE IN': 1, 'A FINALLY': 1, 'FINALLY BLOCK': 1, 'BLOCK IS': 1, 'ALWAYS RUN': 1, 'RUN REGARDLESS': 1, 'REGARDLESS OF': 1, 'OF HOW': 1, 'HOW THE': 1, 'THE BLOCK': 1, 'BLOCK EXITS': 1, 'EXITS THE': 1, 'THE RAISE': 1, 'TO RAISE': 1, 'RAISE A': 1, 'SPECIFIED EXCEPTION': 1, 'EXCEPTION OR': 1, 'OR RE-RAISE': 1, 'RE-RAISE A': 1, 'A CAUGHT': 1, 'CAUGHT EXCEPTION': 1, 'EXCEPTION THE': 1, 'CLASS STATEMENT': 1, 'AND ATTACHES': 1, 'ATTACHES ITS': 1, 'ITS LOCAL': 1, 'LOCAL NAMESPACE': 1, 'NAMESPACE TO': 1, 'A CLASS': 1, 'IN OBJECT-ORIENTED': 1, 'PROGRAMMING THE': 1, 'THE DEF': 1, 'DEF STATEMENT': 1, 'WHICH DEFINES': 1, 'DEFINES A': 1, 'METHOD THE': 1, 'THE WITH': 1, 'WITH STATEMENT': 1, 'WHICH ENCLOSES': 1, 'ENCLOSES A': 1, 'A CODE': 1, 'BLOCK WITHIN': 1, 'WITHIN A': 1, 'A CONTEXT': 1, 'CONTEXT MANAGER': 1, 'MANAGER FOR': 1, 'EXAMPLE ACQUIRING': 1, 'ACQUIRING A': 1, 'A LOCK': 1, 'LOCK BEFORE': 1, 'IS RUN': 1, 'RUN THEN': 1, 'THEN RELEASING': 1, 'RELEASING THE': 1, 'THE LOCK': 1, 'LOCK OR': 1, 'OR OPENING': 1, 'OPENING AND': 1, 'AND CLOSING': 1, 'CLOSING A': 1, 'A FILE': 1, 'FILE ALLOWING': 1, 'ALLOWING RESOURCE-ACQUISITION-IS-INITIALIZATION': 1, 'RESOURCE-ACQUISITION-IS-INITIALIZATION RAII)-LIKE': 1, 'RAII)-LIKE BEHAVIOR': 1, 'BEHAVIOR AND': 1, 'AND REPLACING': 1, 'REPLACING A': 1, 'COMMON TRY/FINALLY': 1, 'TRY/FINALLY IDIOM': 1, 'IDIOM THE': 1, 'THE BREAK': 1, 'BREAK STATEMENT': 1, 'WHICH EXITS': 1, 'EXITS A': 1, 'A LOOP': 1, 'LOOP THE': 1, 'THE CONTINUE': 1, 'CONTINUE STATEMENT': 1, 'WHICH SKIPS': 1, 'SKIPS THE': 1, 'THE REST': 1, 'REST OF': 1, 'CURRENT ITERATION': 1, 'ITERATION AND': 1, 'AND CONTINUES': 1, 'CONTINUES WITH': 1, 'NEXT THE': 1, 'THE DEL': 1, 'DEL STATEMENT': 1, 'WHICH REMOVES': 1, 'REMOVES A': 1, 'A VARIABLEDELETING': 1, 'VARIABLEDELETING THE': 1, 'REFERENCE FROM': 1, 'THE NAME': 1, 'NAME TO': 1, 'THE VALUE': 1, 'VALUE AND': 1, 'AND PRODUCING': 1, 'PRODUCING AN': 1, 'AN ERROR': 1, 'ERROR IF': 1, 'VARIABLE IS': 1, 'IS REFERRED': 1, 'REFERRED TO': 1, 'TO BEFORE': 1, 'IS REDEFINED': 1, 'REDEFINED THE': 1, 'THE PASS': 1, 'PASS STATEMENT': 1, 'STATEMENT SERVING': 1, 'SERVING AS': 1, 'A NOP': 1, 'NOP SYNTACTICALLY': 1, 'SYNTACTICALLY NEEDED': 1, 'NEEDED TO': 1, 'CREATE AN': 1, 'AN EMPTY': 1, 'EMPTY CODE': 1, 'THE ASSERT': 1, 'ASSERT STATEMENT': 1, 'IN DEBUGGING': 1, 'DEBUGGING TO': 1, 'TO CHECK': 1, 'CHECK FOR': 1, 'FOR CONDITIONS': 1, 'CONDITIONS THAT': 1, 'THAT SHOULD': 1, 'SHOULD APPLY': 1, 'APPLY THE': 1, 'THE YIELD': 1, 'YIELD STATEMENT': 1, 'WHICH RETURNS': 1, 'ALSO AN': 1, 'AN OPERATOR': 1, 'OPERATOR USED': 1, 'TO IMPLEMENT': 1, 'IMPLEMENT COROUTINES': 1, 'COROUTINES THE': 1, 'THE RETURN': 1, 'RETURN STATEMENT': 1, 'TO RETURN': 1, 'RETURN A': 1, 'FUNCTION THE': 1, 'THE IMPORT': 1, 'IMPORT AND': 1, 'FROM STATEMENTS': 1, 'STATEMENTS USED': 1, 'TO IMPORT': 1, 'IMPORT MODULES': 1, 'MODULES WHOSE': 1, 'WHOSE FUNCTIONS': 1, 'FUNCTIONS OR': 1, 'OR VARIABLES': 1, 'VARIABLES CAN': 1, 'CURRENT PROGRAM': 1, 'PROGRAM THE': 1, 'STATEMENT BINDS': 1, 'BINDS A': 1, 'A NAME': 1, 'NAME AS': 1, 'A SEPARATE': 1, 'SEPARATE DYNAMICALLY': 1, 'DYNAMICALLY ALLOCATED': 1, 'ALLOCATED OBJECT': 1, 'VARIABLES MAY': 1, 'MAY SUBSEQUENTLY': 1, 'SUBSEQUENTLY BE': 1, 'BE REBOUND': 1, 'REBOUND AT': 1, 'AT ANY': 1, 'ANY TIME': 1, 'TIME TO': 1, 'TO ANY': 1, 'ANY OBJECT': 1, 'VARIABLE NAME': 1, 'A GENERIC': 1, 'GENERIC REFERENCE': 1, 'REFERENCE HOLDER': 1, 'HOLDER WITHOUT': 1, 'WITHOUT A': 1, 'A FIXED': 1, 'FIXED DATA': 1, 'TYPE HOWEVER': 1, 'HOWEVER IT': 1, 'IT ALWAYS': 1, 'ALWAYS REFERS': 1, 'REFERS TO': 1, 'TO SOME': 1, 'SOME OBJECT': 1, 'OBJECT WITH': 1, 'CALLED DYNAMIC': 1, 'DYNAMIC TYPINGIN': 1, 'TYPINGIN CONTRAST': 1, 'TO STATICALLY-TYPED': 1, 'STATICALLY-TYPED LANGUAGES': 1, 'LANGUAGES WHERE': 1, 'WHERE EACH': 1, 'EACH VARIABLE': 1, 'VARIABLE MAY': 1, 'MAY CONTAIN': 1, 'CONTAIN ONLY': 1, 'VALUE OF': 1, 'A CERTAIN': 1, 'CERTAIN TYPE': 1, 'PYTHON DOES': 1, 'SUPPORT TAIL': 1, 'TAIL CALL': 1, 'CALL OPTIMIZATION': 1, 'OPTIMIZATION OR': 1, 'OR FIRST-CLASS': 1, 'FIRST-CLASS CONTINUATIONS': 1, 'CONTINUATIONS AND': 1, 'AND ACCORDING': 1, 'TO VAN': 1, 'ROSSUM IT': 1, 'IT NEVER': 1, 'NEVER WILL': 1, 'HOWEVER BETTER': 1, 'BETTER SUPPORT': 1, 'FOR COROUTINE-LIKE': 1, 'COROUTINE-LIKE FUNCTIONALITY': 1, 'FUNCTIONALITY IS': 1, 'IS PROVIDED': 1, 'PROVIDED BY': 1, 'BY EXTENDING': 1, \"EXTENDING PYTHON'S\": 1, \"PYTHON'S GENERATORS\": 1, 'GENERATORS WERE': 1, 'WERE LAZY': 1, 'LAZY ITERATORS': 1, 'ITERATORS DATA': 1, 'DATA WAS': 1, 'WAS PASSED': 1, 'PASSED UNIDIRECTIONALLY': 1, 'UNIDIRECTIONALLY OUT': 1, 'THE GENERATOR': 1, 'ON IT': 1, 'IS POSSIBLE': 1, 'POSSIBLE TO': 1, 'TO PASS': 1, 'PASS DATA': 1, 'DATA BACK': 1, 'BACK INTO': 1, 'INTO A': 1, 'FROM VERSION': 1, 'IT CAN': 1, 'BE PASSED': 1, 'PASSED THROUGH': 1, 'THROUGH MULTIPLE': 1, 'MULTIPLE STACK': 1, 'STACK LEVELS': 1, \"EXPRESSIONS PYTHON'S\": 1, \"PYTHON'S EXPRESSIONS\": 1, 'EXPRESSIONS INCLUDE': 1, 'THE AND': 1, 'AND OPERATORS': 1, 'OPERATORS FOR': 1, 'FOR MATHEMATICAL': 1, 'MATHEMATICAL ADDITION': 1, 'ADDITION SUBTRACTION': 1, 'SUBTRACTION AND': 1, 'AND MULTIPLICATION': 1, 'MULTIPLICATION ARE': 1, 'ARE SIMILAR': 1, 'LANGUAGES BUT': 1, 'BUT THE': 1, 'DIVISION DIFFERS': 1, 'ARE TWO': 1, 'TWO TYPES': 1, 'TYPES OF': 1, 'OF DIVISIONS': 1, 'DIVISIONS IN': 1, 'PYTHON FLOOR': 1, 'OR INTEGER': 1, 'AND FLOATING-POINT/DIVISION': 1, 'FOR STRING': 1, 'STRING CONCATENATION': 1, 'FOR DUPLICATING': 1, 'DUPLICATING A': 1, 'STRING A': 1, 'SPECIFIED NUMBER': 1, 'THE INFIX': 1, 'IS INTENDED': 1, 'INTENDED TO': 1, 'USED BY': 1, 'BY LIBRARIES': 1, 'NUMPY FOR': 1, 'SYNTAX CALLED': 1, 'CALLED THE': 1, 'THE WALRUS': 1, 'WALRUS OPERATOR': 1, 'INTRODUCED IN': 1, 'ASSIGNS VALUES': 1, 'TO VARIABLES': 1, 'VARIABLES AS': 1, 'A LARGER': 1, 'LARGER EXPRESSION': 1, 'PYTHON COMPARES': 1, 'COMPARES BY': 1, 'BY VALUE': 1, \"PYTHON'S IS\": 1, 'IS OPERATOR': 1, 'OPERATOR MAY': 1, 'TO COMPARE': 1, 'COMPARE OBJECT': 1, 'OBJECT IDENTITIES': 1, 'IDENTITIES COMPARISON': 1, 'COMPARISON BY': 1, 'BY REFERENCE': 1, 'REFERENCE AND': 1, 'AND COMPARISONS': 1, 'COMPARISONS MAY': 1, 'BE CHAINEDFOR': 1, 'CHAINEDFOR EXAMPLE': 1, 'USES AND': 1, 'AND OR': 1, 'NOT AS': 1, 'AS BOOLEAN': 1, 'BOOLEAN OPERATORS': 1, 'TYPE OF': 1, 'OF EXPRESSION': 1, 'A LIST': 1, 'LIST COMPREHENSION': 1, 'COMPREHENSION AS': 1, 'A MORE': 1, 'MORE GENERAL': 1, 'GENERAL EXPRESSION': 1, 'GENERATOR EXPRESSION': 1, 'FUNCTIONS ARE': 1, 'ARE IMPLEMENTED': 1, 'IMPLEMENTED USING': 1, 'USING LAMBDA': 1, 'EXPRESSIONS HOWEVER': 1, 'HOWEVER THERE': 1, 'THERE MAY': 1, 'BE ONLY': 1, 'ONLY ONE': 1, 'ONE EXPRESSION': 1, 'EXPRESSION IN': 1, 'IN EACH': 1, 'EACH BODY': 1, 'EXPRESSIONS ARE': 1, 'AS IF': 1, 'IF ELSE': 1, 'ELSE DIFFERENT': 1, 'IN ORDER': 1, 'ORDER OF': 1, 'OF OPERANDS': 1, 'OPERANDS FROM': 1, 'OPERATOR COMMON': 1, 'COMMON TO': 1, 'MAKES A': 1, 'BETWEEN LISTS': 1, 'LISTS AND': 1, 'AND TUPLES': 1, 'LISTS ARE': 1, 'ARE MUTABLE': 1, 'MUTABLE AND': 1, 'AND CANNOT': 1, 'THE KEYS': 1, 'DICTIONARIES DICTIONARY': 1, 'DICTIONARY KEYS': 1, 'BE IMMUTABLE': 1, 'IMMUTABLE IN': 1, 'TUPLES WRITTEN': 1, 'IMMUTABLE AND': 1, 'AND THUS': 1, 'THUS CAN': 1, 'AS KEYS': 1, 'DICTIONARIES PROVIDED': 1, 'PROVIDED ALL': 1, \"THE TUPLE'S\": 1, \"TUPLE'S ELEMENTS\": 1, 'ELEMENTS ARE': 1, 'OPERATOR CAN': 1, 'TO CONCATENATE': 1, 'CONCATENATE TWO': 1, 'TWO TUPLES': 1, 'TUPLES WHICH': 1, 'WHICH DOES': 1, 'NOT DIRECTLY': 1, 'DIRECTLY MODIFY': 1, 'MODIFY THEIR': 1, 'THEIR CONTENTS': 1, 'CONTENTS BUT': 1, 'BUT PRODUCES': 1, 'PRODUCES A': 1, 'NEW TUPLE': 1, 'TUPLE CONTAINING': 1, 'CONTAINING THE': 1, 'THE ELEMENTS': 1, 'ELEMENTS OF': 1, 'OF BOTH': 1, 'THUS GIVEN': 1, 'GIVEN THE': 1, 'VARIABLE INITIALLY': 1, 'INITIALLY EQUAL': 1, 'EQUAL TO': 1, 'TO EXECUTING': 1, 'EXECUTING FIRST': 1, 'FIRST EVALUATES': 1, 'EVALUATES WHICH': 1, 'WHICH YIELDS': 1, 'YIELDS WHICH': 1, 'THEN ASSIGNED': 1, 'ASSIGNED BACK': 1, 'BACK TO': 1, 'TO TTHEREBY': 1, 'TTHEREBY EFFECTIVELY': 1, 'EFFECTIVELY MODIFYING': 1, 'MODIFYING THE': 1, 'THE CONTENTS': 1, 'CONTENTS OF': 1, 'OF WHILE': 1, 'WHILE CONFORMING': 1, 'CONFORMING TO': 1, 'THE IMMUTABLE': 1, 'IMMUTABLE NATURE': 1, 'OF TUPLE': 1, 'TUPLE OBJECTS': 1, 'PARENTHESES ARE': 1, 'ARE OPTIONAL': 1, 'OPTIONAL FOR': 1, 'FOR TUPLES': 1, 'TUPLES IN': 1, 'IN UNAMBIGUOUS': 1, 'UNAMBIGUOUS CONTEXTS': 1, 'FEATURES SEQUENCE': 1, 'SEQUENCE UNPACKING': 1, 'UNPACKING WHERE': 1, 'WHERE MULTIPLE': 1, 'MULTIPLE EXPRESSIONS': 1, 'EXPRESSIONS EACH': 1, 'EACH EVALUATING': 1, 'EVALUATING TO': 1, 'TO ANYTHING': 1, 'ANYTHING THAT': 1, 'BE ASSIGNED': 1, 'ASSIGNED TO': 1, 'VARIABLE WRITABLE': 1, 'WRITABLE PROPERTY': 1, 'PROPERTY ETC': 1, 'ETC ARE': 1, 'ARE ASSOCIATED': 1, 'ASSOCIATED IN': 1, 'AN IDENTICAL': 1, 'IDENTICAL MANNER': 1, 'MANNER TO': 1, 'TO THAT': 1, 'THAT FORMING': 1, 'FORMING TUPLE': 1, 'TUPLE LITERALSAND': 1, 'LITERALSAND AS': 1, 'A WHOLE': 1, 'WHOLE ARE': 1, 'ARE PUT': 1, 'PUT ON': 1, 'THE LEFT-HAND': 1, 'LEFT-HAND SIDE': 1, 'SIGN IN': 1, 'THE STATEMENT': 1, 'STATEMENT EXPECTS': 1, 'EXPECTS AN': 1, 'OBJECT ON': 1, 'THE RIGHT-HAND': 1, 'RIGHT-HAND SIDE': 1, 'SIGN THAT': 1, 'THAT PRODUCES': 1, 'PRODUCES THE': 1, 'SAME NUMBER': 1, 'OF VALUES': 1, 'VALUES AS': 1, 'THE PROVIDED': 1, 'PROVIDED WRITABLE': 1, 'WRITABLE EXPRESSIONS': 1, 'EXPRESSIONS WHEN': 1, 'WHEN ITERATED': 1, 'ITERATED THROUGH': 1, 'THROUGH THEM': 1, 'THEM IT': 1, 'ASSIGNS EACH': 1, 'EACH OF': 1, 'THE PRODUCED': 1, 'PRODUCED VALUES': 1, 'THE CORRESPONDING': 1, 'CORRESPONDING EXPRESSION': 1, 'EXPRESSION ON': 1, 'THE LEFT': 1, 'STRING FORMAT': 1, 'FORMAT OPERATOR': 1, 'OPERATOR THAT': 1, 'THAT FUNCTIONS': 1, 'FUNCTIONS ANALOGOUSLY': 1, 'ANALOGOUSLY TO': 1, 'TO PRINTF': 1, 'PRINTF FORMAT': 1, 'FORMAT STRINGS': 1, 'IN CE.G': 1, 'SPAM=%S EGGS=%D': 1, 'EGGS=%D BLAH': 1, 'BLAH EVALUATES': 1, 'EVALUATES TO': 1, 'TO SPAM=BLAH': 1, 'SPAM=BLAH EGGS': 1, 'AND THIS': 1, 'THIS WAS': 1, 'WAS SUPPLEMENTED': 1, 'SUPPLEMENTED BY': 1, 'THE FORMAT': 1, 'FORMAT METHOD': 1, 'METHOD OF': 1, 'THE STR': 1, 'STR CLASS': 1, 'CLASS E.G': 1, 'EGGS FORMAT(\"BLAH': 1, 'ADDED F-STRINGS': 1, 'F-STRINGS SPAM': 1, 'SPAM BLAH': 1, 'BLAH EGGS': 1, \"EGGS F'SPAM={SPAM\": 1, \"F'SPAM={SPAM EGGS={EGGS\": 1, 'BE CONCATENATED': 1, 'CONCATENATED BY': 1, 'BY ADDING': 1, 'ADDING THEM': 1, 'THEM WITH': 1, 'SAME OPERATOR': 1, 'OPERATOR AS': 1, 'AS FOR': 1, 'FOR ADDING': 1, 'ADDING INTEGERS': 1, 'AND FLOATS': 1, 'FLOATS E.G': 1, 'EGGS RETURNS': 1, 'RETURNS SPAMEGGS': 1, 'IF STRINGS': 1, 'STRINGS CONTAIN': 1, 'CONTAIN NUMBERS': 1, 'NUMBERS THEY': 1, 'ARE ADDED': 1, 'ADDED AS': 1, 'AS STRINGS': 1, 'STRINGS RATHER': 1, 'THAN INTEGERS': 1, 'INTEGERS E.G': 1, 'HAS VARIOUS': 1, 'VARIOUS STRING': 1, 'LITERALS DELIMITED': 1, 'DELIMITED BY': 1, 'BY SINGLE': 1, 'MARKS UNLIKE': 1, 'UNLIKE IN': 1, 'IN UNIX': 1, 'UNIX SHELLS': 1, 'AND PERL-INFLUENCED': 1, 'PERL-INFLUENCED LANGUAGES': 1, 'LANGUAGES SINGLE': 1, 'SINGLE AND': 1, 'AND DOUBLE': 1, 'MARKS WORK': 1, 'WORK THE': 1, 'BOTH USE': 1, 'THE BACKSLASH': 1, 'BACKSLASH AS': 1, 'AN ESCAPE': 1, 'ESCAPE CHARACTER': 1, 'INTERPOLATION BECAME': 1, 'BECAME AVAILABLE': 1, 'AVAILABLE IN': 1, 'AS FORMATTED': 1, 'FORMATTED STRING': 1, 'TRIPLE-QUOTED BEGINNING': 1, 'WITH THREE': 1, 'THREE SINGLE': 1, 'MARKS WHICH': 1, 'WHICH MAY': 1, 'MAY SPAN': 1, 'SPAN MULTIPLE': 1, 'LINES AND': 1, 'AND FUNCTION': 1, 'FUNCTION LIKE': 1, 'LIKE HERE': 1, 'HERE DOCUMENTS': 1, 'DOCUMENTS IN': 1, 'IN SHELLS': 1, 'AND RUBY': 1, 'RAW STRING': 1, 'STRING VARIETIES': 1, 'VARIETIES DENOTED': 1, 'DENOTED BY': 1, 'BY PREFIXING': 1, 'PREFIXING THE': 1, 'THE STRING': 1, 'STRING LITERAL': 1, 'LITERAL WITH': 1, 'ESCAPE SEQUENCES': 1, 'SEQUENCES ARE': 1, 'NOT INTERPRETED': 1, 'INTERPRETED HENCE': 1, 'HENCE RAW': 1, 'RAW STRINGS': 1, 'STRINGS ARE': 1, 'ARE USEFUL': 1, 'USEFUL WHERE': 1, 'WHERE LITERAL': 1, 'LITERAL BACKSLASHES': 1, 'BACKSLASHES ARE': 1, 'ARE COMMON': 1, 'COMMON SUCH': 1, 'AS REGULAR': 1, 'AND WINDOWS-STYLE': 1, 'WINDOWS-STYLE PATHS': 1, 'COMPARE QUOTING': 1, 'QUOTING IN': 1, 'HAS ARRAY': 1, 'ARRAY INDEX': 1, 'INDEX AND': 1, 'AND ARRAY': 1, 'ARRAY SLICING': 1, 'SLICING EXPRESSIONS': 1, 'EXPRESSIONS IN': 1, 'IN LISTS': 1, 'LISTS DENOTED': 1, 'DENOTED AS': 1, 'A KEY': 1, 'KEY A': 1, 'A START:STOP': 1, 'START:STOP OR': 1, 'A START:STOP:STEP': 1, 'ARE ZERO-BASED': 1, 'ZERO-BASED AND': 1, 'NEGATIVE INDEXES': 1, 'ARE RELATIVE': 1, 'RELATIVE TO': 1, 'SLICES TAKE': 1, 'TAKE ELEMENTS': 1, 'ELEMENTS FROM': 1, 'THE START': 1, 'START INDEX': 1, 'INDEX UP': 1, 'UP TO': 1, 'TO BUT': 1, 'BUT NOT': 1, 'NOT INCLUDING': 1, 'THE STOP': 1, 'STOP INDEX': 1, 'THIRD SLICE': 1, 'SLICE PARAMETER': 1, 'PARAMETER CALLED': 1, 'CALLED STEP': 1, 'STEP OR': 1, 'OR STRIDE': 1, 'STRIDE ALLOWS': 1, 'ALLOWS ELEMENTS': 1, 'ELEMENTS TO': 1, 'BE SKIPPED': 1, 'SKIPPED AND': 1, 'AND REVERSED': 1, 'SLICE INDEXES': 1, 'INDEXES MAY': 1, 'BE OMITTEDFOR': 1, 'OMITTEDFOR EXAMPLE': 1, 'A RETURNS': 1, 'A COPY': 1, 'COPY OF': 1, 'THE ENTIRE': 1, 'ENTIRE LIST': 1, 'ELEMENT OF': 1, 'A SLICE': 1, 'SLICE IS': 1, 'A SHALLOW': 1, 'SHALLOW COPY': 1, 'BETWEEN EXPRESSIONS': 1, 'AND STATEMENTS': 1, 'STATEMENTS IS': 1, 'IS RIGIDLY': 1, 'RIGIDLY ENFORCED': 1, 'ENFORCED IN': 1, 'TO LANGUAGES': 1, 'AS COMMON': 1, 'COMMON LISP': 1, 'LISP SCHEME': 1, 'SCHEME OR': 1, 'OR RUBY': 1, 'THIS LEADS': 1, 'LEADS TO': 1, 'TO DUPLICATING': 1, 'DUPLICATING SOME': 1, 'SOME FUNCTIONALITY': 1, 'EXAMPLE LIST': 1, 'COMPREHENSIONS VS': 1, 'FOR-LOOPS CONDITIONAL': 1, 'EXPRESSIONS VS': 1, 'IF BLOCKS': 1, 'BLOCKS THE': 1, 'THE EVAL': 1, 'EVAL VS': 1, 'EXEC BUILT-IN': 1, 'FUNCTIONS IN': 1, 'PYTHON EXEC': 1, 'EXEC IS': 1, 'A STATEMENT': 1, 'STATEMENT THE': 1, 'THE FORMER': 1, 'FORMER IS': 1, 'FOR EXPRESSIONS': 1, 'EXPRESSIONS THE': 1, 'THE LATTER': 1, 'LATTER IS': 1, 'FOR STATEMENTS': 1, 'STATEMENTS STATEMENTS': 1, 'STATEMENTS CANNOT': 1, 'A PART': 1, 'OF AN': 1, 'AN EXPRESSIONSO': 1, 'EXPRESSIONSO LIST': 1, 'LIST AND': 1, 'OTHER COMPREHENSIONS': 1, 'COMPREHENSIONS OR': 1, 'OR LAMBDA': 1, 'EXPRESSIONS ALL': 1, 'ALL BEING': 1, 'BEING EXPRESSIONS': 1, 'EXPRESSIONS CANNOT': 1, 'CANNOT CONTAIN': 1, 'CONTAIN STATEMENTS': 1, 'A PARTICULAR': 1, 'PARTICULAR CASE': 1, 'CASE IS': 1, 'IS THAT': 1, 'THAT AN': 1, 'STATEMENT SUCH': 1, 'A CANNOT': 1, 'CANNOT FORM': 1, 'FORM PART': 1, 'THE CONDITIONAL': 1, 'CONDITIONAL EXPRESSION': 1, 'EXPRESSION OF': 1, 'A CONDITIONAL': 1, 'CONDITIONAL STATEMENT': 1, 'THIS HAS': 1, 'THE ADVANTAGE': 1, 'ADVANTAGE OF': 1, 'OF AVOIDING': 1, 'AVOIDING A': 1, 'A CLASSIC': 1, 'CLASSIC ERROR': 1, 'ERROR OF': 1, 'OF MISTAKING': 1, 'MISTAKING AN': 1, 'ASSIGNMENT OPERATOR': 1, 'FOR AN': 1, 'AN EQUALITY': 1, 'EQUALITY OPERATOR': 1, 'OPERATOR IN': 1, 'IN CONDITIONS': 1, 'CONDITIONS IF': 1, 'IS SYNTACTICALLY': 1, 'SYNTACTICALLY VALID': 1, 'VALID BUT': 1, 'BUT PROBABLY': 1, 'PROBABLY UNINTENDED': 1, 'UNINTENDED CODE': 1, 'CODE BUT': 1, 'BUT IF': 1, 'A SYNTAX': 1, 'SYNTAX ERROR': 1, 'ERROR IN': 1, 'METHODS METHODS': 1, 'METHODS ON': 1, 'ON OBJECTS': 1, 'OBJECTS ARE': 1, 'ARE FUNCTIONS': 1, 'FUNCTIONS ATTACHED': 1, 'ATTACHED TO': 1, \"THE OBJECT'S\": 1, \"OBJECT'S CLASS\": 1, 'CLASS THE': 1, 'SYNTAX INSTANCE.METHOD(ARGUMENT': 1, 'INSTANCE.METHOD(ARGUMENT IS': 1, 'FOR NORMAL': 1, 'NORMAL METHODS': 1, 'METHODS AND': 1, 'AND FUNCTIONS': 1, 'FUNCTIONS SYNTACTIC': 1, 'SYNTACTIC SUGAR': 1, 'SUGAR FOR': 1, 'FOR CLASS.METHOD(INSTANCE': 1, 'CLASS.METHOD(INSTANCE ARGUMENT': 1, 'PYTHON METHODS': 1, 'METHODS HAVE': 1, 'HAVE AN': 1, 'AN EXPLICIT': 1, 'EXPLICIT SELF': 1, 'SELF PARAMETER': 1, 'PARAMETER TO': 1, 'TO ACCESS': 1, 'ACCESS INSTANCE': 1, 'INSTANCE DATA': 1, 'DATA IN': 1, 'THE IMPLICIT': 1, 'IMPLICIT SELF': 1, 'SELF OR': 1, 'OR THIS': 1, 'THIS IN': 1, 'IN SOME': 1, 'OTHER OBJECT-ORIENTED': 1, 'LANGUAGES E.G': 1, 'E.G JAVA': 1, 'JAVA OBJECTIVE-C': 1, 'OBJECTIVE-C RUBY': 1, 'ALSO PROVIDES': 1, 'PROVIDES METHODS': 1, 'METHODS OFTEN': 1, 'CALLED DUNDER': 1, 'DUNDER METHODS': 1, 'METHODS DUE': 1, 'TO THEIR': 1, 'THEIR NAMES': 1, 'NAMES BEGINNING': 1, 'WITH DOUBLE-UNDERSCORES': 1, 'DOUBLE-UNDERSCORES TO': 1, 'TO ALLOW': 1, 'ALLOW USER-DEFINED': 1, 'USER-DEFINED CLASSES': 1, 'CLASSES TO': 1, 'TO MODIFY': 1, 'MODIFY HOW': 1, 'HOW THEY': 1, 'ARE HANDLED': 1, 'BY NATIVE': 1, 'NATIVE OPERATIONS': 1, 'OPERATIONS INCLUDING': 1, 'INCLUDING LENGTH': 1, 'LENGTH COMPARISON': 1, 'COMPARISON IN': 1, 'IN ARITHMETIC': 1, 'OPERATIONS AND': 1, 'AND TYPE': 1, 'TYPE CONVERSION': 1, 'TYPING THE': 1, 'STANDARD TYPE': 1, 'TYPE HIERARCHY': 1, 'HIERARCHY IN': 1, 'USES DUCK': 1, 'DUCK TYPING': 1, 'HAS TYPED': 1, 'TYPED OBJECTS': 1, 'OBJECTS BUT': 1, 'BUT UNTYPED': 1, 'UNTYPED VARIABLE': 1, 'TYPE CONSTRAINTS': 1, 'CONSTRAINTS ARE': 1, 'CHECKED AT': 1, 'AT COMPILE': 1, 'COMPILE TIME': 1, 'TIME RATHER': 1, 'RATHER OPERATIONS': 1, 'OPERATIONS ON': 1, 'ON AN': 1, 'OBJECT MAY': 1, 'MAY FAIL': 1, 'FAIL SIGNIFYING': 1, 'SIGNIFYING THAT': 1, 'THAT IT': 1, 'NOT OF': 1, 'A SUITABLE': 1, 'SUITABLE TYPE': 1, 'DESPITE BEING': 1, 'BEING DYNAMICALLY': 1, 'TYPED PYTHON': 1, 'TYPED FORBIDDING': 1, 'FORBIDDING OPERATIONS': 1, 'OPERATIONS THAT': 1, 'THAT ARE': 1, 'NOT WELL-DEFINED': 1, 'WELL-DEFINED FOR': 1, 'EXAMPLE ADDING': 1, 'ADDING A': 1, 'NUMBER TO': 1, 'STRING RATHER': 1, 'THAN SILENTLY': 1, 'SILENTLY ATTEMPTING': 1, 'ATTEMPTING TO': 1, 'TO MAKE': 1, 'MAKE SENSE': 1, 'SENSE OF': 1, 'OF THEM': 1, 'ALLOWS PROGRAMMERS': 1, 'PROGRAMMERS TO': 1, 'TO DEFINE': 1, 'DEFINE THEIR': 1, 'THEIR OWN': 1, 'OWN TYPES': 1, 'TYPES USING': 1, 'USING CLASSES': 1, 'CLASSES MOST': 1, 'MOST OFTEN': 1, 'FOR OBJECT-ORIENTED': 1, 'NEW INSTANCES': 1, 'CONSTRUCTED BY': 1, 'BY CALLING': 1, 'CALLING THE': 1, 'EXAMPLE SPAMCLASS': 1, 'SPAMCLASS OR': 1, 'OR EGGSCLASS': 1, 'EGGSCLASS AND': 1, 'THE CLASSES': 1, 'ARE INSTANCES': 1, 'THE METACLASS': 1, 'METACLASS TYPE': 1, 'TYPE ITSELF': 1, 'ITSELF AN': 1, 'AN INSTANCE': 1, 'INSTANCE OF': 1, 'OF ITSELF': 1, 'ITSELF ALLOWING': 1, 'ALLOWING METAPROGRAMMING': 1, 'AND REFLECTION': 1, 'PYTHON HAD': 1, 'HAD TWO': 1, 'TWO KINDS': 1, 'KINDS OF': 1, 'CLASSES BOTH': 1, 'BOTH USING': 1, 'SYNTAX OLD-STYLE': 1, 'OLD-STYLE AND': 1, 'AND NEW-STYLE': 1, 'NEW-STYLE CURRENT': 1, 'PYTHON VERSIONS': 1, 'VERSIONS ONLY': 1, 'ONLY SUPPORT': 1, 'SUPPORT THE': 1, 'THE SEMANTICS': 1, 'SEMANTICS NEW': 1, 'NEW STYLE': 1, 'PYTHON SUPPORTS': 1, 'SUPPORTS GRADUAL': 1, 'GRADUAL TYPING': 1, \"PYTHON'S SYNTAX\": 1, 'SYNTAX ALLOWS': 1, 'ALLOWS SPECIFYING': 1, 'SPECIFYING STATIC': 1, 'STATIC TYPES': 1, 'TYPES BUT': 1, 'BUT THEY': 1, 'CHECKED IN': 1, 'THE DEFAULT': 1, 'DEFAULT IMPLEMENTATION': 1, 'EXPERIMENTAL OPTIONAL': 1, 'STATIC TYPE-CHECKER': 1, 'TYPE-CHECKER MYPY': 1, 'MYPY SUPPORTS': 1, 'SUPPORTS COMPILE-TIME': 1, 'COMPILE-TIME TYPE': 1, 'TYPE CHECKING': 1, 'SUMMARY OF': 1, 'TYPES TYPE': 1, 'TYPE MUTABILITY': 1, 'MUTABILITY DESCRIPTION': 1, 'DESCRIPTION SYNTAX': 1, 'SYNTAX EXAMPLES': 1, 'EXAMPLES BOOL': 1, 'BOOL IMMUTABLE': 1, 'IMMUTABLE BOOLEAN': 1, 'BOOLEAN VALUE': 1, 'VALUE TRUEFALSE': 1, 'TRUEFALSE BYTEARRAY': 1, 'BYTEARRAY MUTABLE': 1, 'MUTABLE SEQUENCE': 1, \"BYTES BYTEARRAY(B'SOME\": 1, 'BYTEARRAY(B\\'SOME ASCII\\')BYTEARRAY(B\"SOME': 1, 'ASCII\\')BYTEARRAY(B\"SOME ASCII\")BYTEARRAY': 1, 'ASCII\")BYTEARRAY BYTES': 1, 'BYTES IMMUTABLE': 1, \"BYTES B'SOME\": 1, 'B\\'SOME ASCII\\'B\"SOME': 1, 'ASCII\\'B\"SOME ASCII\"BYTES': 1, 'ASCII\"BYTES COMPLEX': 1, 'COMPLEX IMMUTABLE': 1, 'IMMUTABLE COMPLEX': 1, 'COMPLEX NUMBER': 1, 'WITH REAL': 1, 'REAL AND': 1, 'AND IMAGINARY': 1, 'IMAGINARY PARTS': 1, 'DICT MUTABLE': 1, 'MUTABLE ASSOCIATIVE': 1, 'ASSOCIATIVE ARRAY': 1, 'ARRAY OR': 1, 'OR DICTIONARY': 1, 'DICTIONARY OF': 1, 'OF KEY': 1, 'KEY AND': 1, 'AND VALUE': 1, 'VALUE PAIRS': 1, 'PAIRS CAN': 1, 'TYPES KEYS': 1, 'KEYS AND': 1, 'AND VALUES': 1, 'VALUES KEYS': 1, 'A HASHABLE': 1, 'HASHABLE TYPE': 1, 'TYPE KEY': 1, 'FALSE TYPES.ELLIPSISTYPE': 1, 'TYPES.ELLIPSISTYPE IMMUTABLE': 1, 'AN ELLIPSIS': 1, 'ELLIPSIS PLACEHOLDER': 1, 'PLACEHOLDER TO': 1, 'AN INDEX': 1, 'INDEX IN': 1, 'IN NUMPY': 1, 'NUMPY ARRAYS': 1, 'ARRAYS ELLIPSIS': 1, 'ELLIPSIS FLOAT': 1, 'FLOAT IMMUTABLE': 1, 'IMMUTABLE DOUBLE-PRECISION': 1, 'DOUBLE-PRECISION FLOATING-POINT': 1, 'FLOATING-POINT NUMBER': 1, 'THE PRECISION': 1, 'PRECISION IS': 1, 'IS MACHINE-DEPENDENT': 1, 'MACHINE-DEPENDENT BUT': 1, 'IN PRACTICE': 1, 'PRACTICE IS': 1, 'IS GENERALLY': 1, 'GENERALLY IMPLEMENTED': 1, 'IMPLEMENTED AS': 1, 'A BIT': 1, 'BIT IEEE': 1, 'IEEE NUMBER': 1, 'WITH BITS': 1, 'BITS OF': 1, 'OF PRECISION': 1, 'FROZENSET IMMUTABLE': 1, 'IMMUTABLE UNORDERED': 1, 'HASHABLE FROZENSET': 1, 'TRUE INT': 1, 'INT IMMUTABLE': 1, 'IMMUTABLE INTEGER': 1, 'INTEGER OF': 1, 'OF UNLIMITED': 1, 'UNLIMITED MAGNITUDE': 1, 'MAGNITUDE LIST': 1, 'LIST MUTABLE': 1, 'MUTABLE LIST': 1, 'LIST CAN': 1, 'TRUE TYPES.NONETYPE': 1, 'TYPES.NONETYPE IMMUTABLE': 1, 'OBJECT REPRESENTING': 1, 'REPRESENTING THE': 1, 'THE ABSENCE': 1, 'ABSENCE OF': 1, 'VALUE OFTEN': 1, 'CALLED NULL': 1, 'NULL IN': 1, 'IN OTHER': 1, 'LANGUAGES NONE': 1, 'NONE TYPES.NOTIMPLEMENTEDTYPE': 1, 'TYPES.NOTIMPLEMENTEDTYPE IMMUTABLE': 1, 'A PLACEHOLDER': 1, 'PLACEHOLDER THAT': 1, 'BE RETURNED': 1, 'RETURNED FROM': 1, 'FROM OVERLOADED': 1, 'OVERLOADED OPERATORS': 1, 'OPERATORS TO': 1, 'TO INDICATE': 1, 'INDICATE UNSUPPORTED': 1, 'UNSUPPORTED OPERAND': 1, 'OPERAND TYPES': 1, 'NOTIMPLEMENTED RANGE': 1, 'RANGE IMMUTABLE': 1, 'AN IMMUTABLE': 1, 'OF NUMBERS': 1, 'NUMBERS COMMONLY': 1, 'FOR LOOPING': 1, 'LOOPING A': 1, 'A SPECIFIC': 1, 'SPECIFIC NUMBER': 1, 'TIMES IN': 1, 'IN FOR': 1, 'FOR LOOPS': 1, 'LOOPS RANGE': 1, 'RANGE RANGE': 1, 'RANGE SET': 1, 'SET MUTABLE': 1, 'MUTABLE UNORDERED': 1, 'STRING TRUE}SET': 1, 'TRUE}SET STR': 1, 'STR IMMUTABLE': 1, 'A CHARACTER': 1, 'CHARACTER STRING': 1, 'STRING SEQUENCE': 1, 'OF UNICODE': 1, 'UNICODE CODEPOINTS': 1, 'CODEPOINTS WIKIPEDIA\\'\"WIKIPEDIA\"\"\"\"SPANNING': 1, 'WIKIPEDIA\\'\"WIKIPEDIA\"\"\"\"SPANNING MULTIPLE': 1, 'LINES SPANNING': 1, 'SPANNING MULTIPLE': 1, 'LINES TUPLE': 1, 'TUPLE IMMUTABLE': 1, 'IMMUTABLE CAN': 1, \"STRING TRUE)('SINGLE\": 1, \"TRUE)('SINGLE ELEMENT\": 1, 'ELEMENT ARITHMETIC': 1, 'THE USUAL': 1, 'USUAL SYMBOLS': 1, 'SYMBOLS FOR': 1, 'FOR ARITHMETIC': 1, 'ARITHMETIC OPERATORS': 1, 'OPERATORS THE': 1, 'OPERATOR AND': 1, 'THE MODULO': 1, 'MODULO OPERATION': 1, 'OPERATION WHERE': 1, 'WHERE THE': 1, 'THE REMAINDER': 1, 'REMAINDER CAN': 1, 'BE NEGATIVE': 1, 'NEGATIVE E.G': 1, 'HAS FOR': 1, 'EXPONENTIATION E.G': 1, 'A MATRIXMULTIPLICATION': 1, 'MATRIXMULTIPLICATION OPERATOR': 1, 'THESE OPERATORS': 1, 'OPERATORS WORK': 1, 'WORK LIKE': 1, 'LIKE IN': 1, 'IN TRADITIONAL': 1, 'TRADITIONAL MATH': 1, 'MATH WITH': 1, 'SAME PRECEDENCE': 1, 'PRECEDENCE RULES': 1, 'RULES THE': 1, 'THE OPERATORS': 1, 'OPERATORS INFIX': 1, 'INFIX AND': 1, 'BE UNARY': 1, 'UNARY TO': 1, 'TO REPRESENT': 1, 'REPRESENT POSITIVE': 1, 'NEGATIVE NUMBERS': 1, 'NUMBERS RESPECTIVELY': 1, 'DIVISION BETWEEN': 1, 'BETWEEN INTEGERS': 1, 'INTEGERS PRODUCES': 1, 'PRODUCES FLOATING-POINT': 1, 'FLOATING-POINT RESULTS': 1, 'DIVISION HAS': 1, 'HAS CHANGED': 1, 'CHANGED SIGNIFICANTLY': 1, 'SIGNIFICANTLY OVER': 1, 'OVER TIME': 1, 'TIME CURRENT': 1, 'PYTHON I.E': 1, 'CHANGED TO': 1, 'TO ALWAYS': 1, 'ALWAYS BE': 1, 'BE FLOATING-POINT': 1, 'FLOATING-POINT DIVISION': 1, 'DIVISION E.G': 1, 'ADDING FROM': 1, 'FROM FUTURE': 1, 'FUTURE IMPORT': 1, 'IMPORT DIVISION': 1, 'DIVISION CAUSES': 1, 'A MODULE': 1, 'MODULE USED': 1, 'RULES FOR': 1, 'FOR DIVISION': 1, 'DIVISION SEE': 1, 'SEE ABOVE': 1, 'PYTHON TERMS': 1, 'TERMS IS': 1, 'TRUE DIVISION': 1, 'OR SIMPLY': 1, 'SIMPLY DIVISION': 1, 'IS FLOOR': 1, 'IS CLASSIC': 1, 'CLASSIC DIVISION': 1, 'ROUNDING TOWARDS': 1, 'TOWARDS NEGATIVE': 1, 'NEGATIVE INFINITY': 1, 'INFINITY THOUGH': 1, 'THOUGH DIFFERENT': 1, 'DIFFERENT FROM': 1, 'FROM MOST': 1, 'MOST LANGUAGES': 1, 'LANGUAGES ADDS': 1, 'ADDS CONSISTENCY': 1, 'FOR INSTANCE': 1, 'INSTANCE IT': 1, 'IT MEANS': 1, 'EQUATION A': 1, 'A B)//B': 1, 'B)//B A//B': 1, 'A//B IS': 1, 'ALWAYS TRUE': 1, 'ALSO MEANS': 1, 'EQUATION B*(A//B': 1, 'B*(A//B A%B': 1, 'A%B A': 1, 'IS VALID': 1, 'VALID FOR': 1, 'FOR BOTH': 1, 'BOTH POSITIVE': 1, 'NEGATIVE VALUES': 1, 'VALUES OF': 1, 'HOWEVER MAINTAINING': 1, 'MAINTAINING THE': 1, 'THE VALIDITY': 1, 'VALIDITY OF': 1, 'THIS EQUATION': 1, 'EQUATION MEANS': 1, 'THAT WHILE': 1, 'THE RESULT': 1, 'RESULT OF': 1, 'OF A%B': 1, 'A%B IS': 1, 'IS AS': 1, 'AS EXPECTED': 1, 'EXPECTED IN': 1, 'THE HALF-OPEN': 1, 'HALF-OPEN INTERVAL': 1, 'INTERVAL WHERE': 1, 'WHERE IS': 1, 'INTEGER IT': 1, 'HAS TO': 1, 'TO LIE': 1, 'LIE IN': 1, 'THE INTERVAL': 1, 'INTERVAL WHEN': 1, 'WHEN IS': 1, 'IS NEGATIVE': 1, 'PYTHON PROVIDES': 1, 'PROVIDES A': 1, 'A ROUND': 1, 'ROUND FUNCTION': 1, 'FUNCTION FOR': 1, 'FOR ROUNDING': 1, 'ROUNDING A': 1, 'A FLOAT': 1, 'FLOAT TO': 1, 'THE NEAREST': 1, 'NEAREST INTEGER': 1, 'FOR TIE-BREAKING': 1, 'TIE-BREAKING PYTHON': 1, 'USES ROUND': 1, 'ROUND TO': 1, 'TO EVEN': 1, 'EVEN ROUND': 1, 'AND ROUND': 1, 'BOTH PRODUCE': 1, 'VERSIONS BEFORE': 1, 'BEFORE USED': 1, 'USED ROUND-AWAY-FROM-ZERO': 1, 'ROUND-AWAY-FROM-ZERO ROUND': 1, 'ALLOWS BOOLEAN': 1, 'BOOLEAN EXPRESSIONS': 1, 'EXPRESSIONS WITH': 1, 'WITH MULTIPLE': 1, 'MULTIPLE EQUALITY': 1, 'EQUALITY RELATIONS': 1, 'RELATIONS IN': 1, 'A MANNER': 1, 'MANNER THAT': 1, 'IS CONSISTENT': 1, 'CONSISTENT WITH': 1, 'WITH GENERAL': 1, 'GENERAL USE': 1, 'IN MATHEMATICS': 1, 'EXPRESSION A': 1, 'A TESTS': 1, 'TESTS WHETHER': 1, 'WHETHER A': 1, 'THAN AND': 1, 'C-DERIVED LANGUAGES': 1, 'LANGUAGES INTERPRET': 1, 'INTERPRET THIS': 1, 'THIS EXPRESSION': 1, 'EXPRESSION DIFFERENTLY': 1, 'DIFFERENTLY IN': 1, 'EXPRESSION WOULD': 1, 'WOULD FIRST': 1, 'FIRST EVALUATE': 1, 'EVALUATE A': 1, 'A RESULTING': 1, 'RESULTING IN': 1, 'IN OR': 1, 'AND THAT': 1, 'THAT RESULT': 1, 'RESULT WOULD': 1, 'WOULD THEN': 1, 'THEN BE': 1, 'BE COMPARED': 1, 'COMPARED WITH': 1, 'USES ARBITRARY-PRECISION': 1, 'ARBITRARY-PRECISION ARITHMETIC': 1, 'ARITHMETIC FOR': 1, 'FOR ALL': 1, 'ALL INTEGER': 1, 'INTEGER OPERATIONS': 1, 'DECIMAL TYPE/CLASS': 1, 'TYPE/CLASS IN': 1, 'DECIMAL MODULE': 1, 'PROVIDES DECIMAL': 1, 'DECIMAL FLOATING-POINT': 1, 'FLOATING-POINT NUMBERS': 1, 'NUMBERS TO': 1, 'A PRE-DEFINED': 1, 'PRE-DEFINED ARBITRARY': 1, 'PRECISION AND': 1, 'AND SEVERAL': 1, 'SEVERAL ROUNDING': 1, 'ROUNDING MODES': 1, 'THE FRACTION': 1, 'FRACTION CLASS': 1, 'CLASS IN': 1, 'THE FRACTIONS': 1, 'FRACTIONS MODULE': 1, 'PROVIDES ARBITRARY': 1, 'PRECISION FOR': 1, 'FOR RATIONAL': 1, 'RATIONAL NUMBERS': 1, \"TO PYTHON'S\": 1, \"PYTHON'S EXTENSIVE\": 1, 'EXTENSIVE MATHEMATICS': 1, 'MATHEMATICS LIBRARY': 1, 'THE THIRD-PARTY': 1, 'THIRD-PARTY LIBRARY': 1, 'LIBRARY NUMPY': 1, 'NUMPY THAT': 1, 'THAT FURTHER': 1, 'FURTHER EXTENDS': 1, 'EXTENDS THE': 1, 'THE NATIVE': 1, 'NATIVE CAPABILITIES': 1, 'CAPABILITIES IT': 1, 'IS FREQUENTLY': 1, 'FREQUENTLY USED': 1, 'A SCIENTIFIC': 1, 'SCIENTIFIC SCRIPTING': 1, 'TO AID': 1, 'AID IN': 1, 'IN PROBLEMS': 1, 'PROBLEMS SUCH': 1, 'AS NUMERICAL': 1, 'NUMERICAL DATA': 1, 'DATA PROCESSING': 1, 'PROCESSING AND': 1, 'AND MANIPULATION': 1, 'PROGRAMMING EXAMPLES': 1, 'EXAMPLES HELLO': 1, 'HELLO WORLD': 1, \"PROGRAM PRINT('HELLO\": 1, \"PRINT('HELLO WORLD\": 1, 'PROGRAM TO': 1, 'TO CALCULATE': 1, 'CALCULATE THE': 1, 'THE FACTORIAL': 1, 'FACTORIAL OF': 1, \"INTEGER INT(INPUT('TYPE\": 1, \"INT(INPUT('TYPE A\": 1, 'NUMBER AND': 1, 'ITS FACTORIAL': 1, 'FACTORIAL WILL': 1, 'BE PRINTED': 1, 'PRINTED IF': 1, 'IF RAISE': 1, \"RAISE VALUEERROR('YOU\": 1, \"VALUEERROR('YOU MUST\": 1, 'MUST ENTER': 1, 'ENTER A': 1, 'A NON-NEGATIVE': 1, 'NON-NEGATIVE INTEGER': 1, 'INTEGER FACTORIAL': 1, 'FACTORIAL FOR': 1, 'FOR I': 1, 'I IN': 1, 'IN RANGE': 1, 'RANGE FACTORIAL': 1, 'FACTORIAL I': 1, 'I PRINT(FACTORIAL': 1, 'PRINT(FACTORIAL LIBRARIES': 1, \"LIBRARIES PYTHON'S\": 1, \"PYTHON'S LARGE\": 1, 'LIBRARY PROVIDES': 1, 'PROVIDES TOOLS': 1, 'TOOLS SUITED': 1, 'SUITED TO': 1, 'MANY TASKS': 1, 'TASKS AND': 1, 'COMMONLY CITED': 1, 'CITED AS': 1, 'ITS GREATEST': 1, 'GREATEST STRENGTHS': 1, 'FOR INTERNET-FACING': 1, 'INTERNET-FACING APPLICATIONS': 1, 'APPLICATIONS MANY': 1, 'MANY STANDARD': 1, 'STANDARD FORMATS': 1, 'FORMATS AND': 1, 'AND PROTOCOLS': 1, 'PROTOCOLS SUCH': 1, 'AS MIME': 1, 'MIME AND': 1, 'AND HTTP': 1, 'HTTP ARE': 1, 'IT INCLUDES': 1, 'INCLUDES MODULES': 1, 'FOR CREATING': 1, 'CREATING GRAPHICAL': 1, 'INTERFACES CONNECTING': 1, 'CONNECTING TO': 1, 'TO RELATIONAL': 1, 'RELATIONAL DATABASES': 1, 'DATABASES GENERATING': 1, 'GENERATING PSEUDORANDOM': 1, 'PSEUDORANDOM NUMBERS': 1, 'NUMBERS ARITHMETIC': 1, 'ARITHMETIC WITH': 1, 'WITH ARBITRARY-PRECISION': 1, 'ARBITRARY-PRECISION DECIMALS': 1, 'DECIMALS MANIPULATING': 1, 'MANIPULATING REGULAR': 1, 'AND UNIT': 1, 'UNIT TESTING': 1, 'SOME PARTS': 1, 'LIBRARY ARE': 1, 'ARE COVERED': 1, 'COVERED BY': 1, 'BY SPECIFICATIONSFOR': 1, 'SPECIFICATIONSFOR EXAMPLE': 1, 'INTERFACE WSGI': 1, 'WSGI IMPLEMENTATION': 1, 'IMPLEMENTATION WSGIREF': 1, 'WSGIREF FOLLOWS': 1, 'FOLLOWS PEP': 1, 'PEP BUT': 1, 'BUT MOST': 1, 'MOST ARE': 1, 'ARE SPECIFIED': 1, 'SPECIFIED BY': 1, 'BY THEIR': 1, 'THEIR CODE': 1, 'CODE INTERNAL': 1, 'INTERNAL DOCUMENTATION': 1, 'DOCUMENTATION AND': 1, 'AND TEST': 1, 'TEST SUITES': 1, 'HOWEVER BECAUSE': 1, 'BECAUSE MOST': 1, 'LIBRARY IS': 1, 'IS CROSS-PLATFORM': 1, 'CROSS-PLATFORM PYTHON': 1, 'CODE ONLY': 1, 'FEW MODULES': 1, 'MODULES NEED': 1, 'NEED ALTERING': 1, 'ALTERING OR': 1, 'OR REWRITING': 1, 'REWRITING FOR': 1, 'FOR VARIANT': 1, 'VARIANT IMPLEMENTATIONS': 1, 'UPDATE THE': 1, 'INDEX PYPI': 1, 'PYPI THE': 1, 'OFFICIAL REPOSITORY': 1, 'REPOSITORY FOR': 1, 'FOR THIRD-PARTY': 1, 'THIRD-PARTY PYTHON': 1, 'SOFTWARE CONTAINS': 1, 'CONTAINS OVER': 1, 'OVER PACKAGES': 1, 'PACKAGES WITH': 1, 'OF FUNCTIONALITY': 1, 'FUNCTIONALITY INCLUDING': 1, 'INCLUDING AUTOMATION': 1, 'AUTOMATION DATA': 1, 'DATA ANALYTICS': 1, 'ANALYTICS DATABASES': 1, 'DATABASES DOCUMENTATION': 1, 'DOCUMENTATION GRAPHICAL': 1, 'INTERFACES IMAGE': 1, 'PROCESSING MACHINE': 1, 'LEARNING MOBILE': 1, 'MOBILE APPS': 1, 'APPS MULTIMEDIA': 1, 'MULTIMEDIA COMPUTER': 1, 'COMPUTER NETWORKING': 1, 'NETWORKING SCIENTIFIC': 1, 'COMPUTING SYSTEM': 1, 'SYSTEM ADMINISTRATION': 1, 'ADMINISTRATION TEST': 1, 'TEST FRAMEWORKS': 1, 'FRAMEWORKS TEXT': 1, 'PROCESSING WEB': 1, 'FRAMEWORKS WEB': 1, 'WEB SCRAPING': 1, 'SCRAPING DEVELOPMENT': 1, 'ENVIRONMENTS SEE': 1, 'ALSO COMPARISON': 1, 'OF INTEGRATED': 1, 'ENVIRONMENTS PYTHON': 1, 'PYTHON MOST': 1, 'MOST PYTHON': 1, 'IMPLEMENTATIONS INCLUDING': 1, 'INCLUDING CPYTHON': 1, 'CPYTHON INCLUDE': 1, 'INCLUDE A': 1, 'A READEVALPRINT': 1, 'READEVALPRINT LOOP': 1, 'LOOP REPL': 1, 'REPL PERMITTING': 1, 'PERMITTING THEM': 1, 'THEM TO': 1, 'TO FUNCTION': 1, 'FUNCTION AS': 1, 'A COMMAND': 1, 'LINE INTERPRETER': 1, 'FOR WHICH': 1, 'WHICH USERS': 1, 'USERS ENTER': 1, 'ENTER STATEMENTS': 1, 'STATEMENTS SEQUENTIALLY': 1, 'SEQUENTIALLY AND': 1, 'AND RECEIVE': 1, 'RECEIVE RESULTS': 1, 'RESULTS IMMEDIATELY': 1, 'ALSO COMES': 1, 'COMES WITH': 1, 'WITH AN': 1, 'AN INTEGRATED': 1, 'ENVIRONMENT IDE': 1, 'IDE CALLED': 1, 'CALLED IDLE': 1, 'IDLE WHICH': 1, 'MORE BEGINNER-ORIENTED': 1, 'OTHER SHELLS': 1, 'SHELLS INCLUDING': 1, 'INCLUDING IDLE': 1, 'IDLE AND': 1, 'AND IPYTHON': 1, 'IPYTHON ADD': 1, 'ADD FURTHER': 1, 'FURTHER ABILITIES': 1, 'ABILITIES SUCH': 1, 'AS IMPROVED': 1, 'IMPROVED AUTO-COMPLETION': 1, 'AUTO-COMPLETION SESSION': 1, 'SESSION STATE': 1, 'STATE RETENTION': 1, 'RETENTION AND': 1, 'AND SYNTAX': 1, 'SYNTAX HIGHLIGHTING': 1, 'AS STANDARD': 1, 'STANDARD DESKTOP': 1, 'DESKTOP INTEGRATED': 1, 'ENVIRONMENTS THERE': 1, 'ARE WEB': 1, 'WEB BROWSER-BASED': 1, 'BROWSER-BASED IDES': 1, 'IDES INCLUDING': 1, 'INCLUDING SAGEMATH': 1, 'SAGEMATH FOR': 1, 'FOR DEVELOPING': 1, 'DEVELOPING SCIENCE': 1, 'AND MATH-RELATED': 1, 'MATH-RELATED PROGRAMS': 1, 'PROGRAMS PYTHONANYWHERE': 1, 'PYTHONANYWHERE A': 1, 'A BROWSER-BASED': 1, 'BROWSER-BASED IDE': 1, 'IDE AND': 1, 'AND HOSTING': 1, 'HOSTING ENVIRONMENT': 1, 'ENVIRONMENT AND': 1, 'AND CANOPY': 1, 'CANOPY IDE': 1, 'IDE A': 1, 'A COMMERCIAL': 1, 'COMMERCIAL IDE': 1, 'IDE EMPHASIZING': 1, 'EMPHASIZING SCIENTIFIC': 1, 'IMPLEMENTATIONS SEE': 1, 'ALSO LIST': 1, 'IMPLEMENTATIONS REFERENCE': 1, 'IN MEETING': 1, 'MEETING THE': 1, 'USES WITH': 1, 'WITH SEVERAL': 1, 'SEVERAL SELECT': 1, 'SELECT FEATURES': 1, 'FEATURES WITH': 1, 'WITH LATER': 1, 'VERSIONS OUT': 1, 'OUT IT': 1, 'IS CONSIDERED': 1, 'CONSIDERED OUTDATED': 1, 'CPYTHON INCLUDES': 1, 'INCLUDES ITS': 1, 'ITS OWN': 1, 'OWN EXTENSIONS': 1, 'EXTENSIONS BUT': 1, 'BUT THIRD-PARTY': 1, 'THIRD-PARTY EXTENSIONS': 1, 'EXTENSIONS ARE': 1, 'NOT LIMITED': 1, 'LIMITED TO': 1, 'TO OLDER': 1, 'OLDER VERSIONSE.G': 1, 'THEY CAN': 1, 'BE IMPLEMENTED': 1, 'IMPLEMENTED WITH': 1, 'IT COMPILES': 1, 'PROGRAMS INTO': 1, 'INTO AN': 1, 'AN INTERMEDIATE': 1, 'INTERMEDIATE BYTECODE': 1, 'BYTECODE WHICH': 1, 'THEN EXECUTED': 1, 'EXECUTED BY': 1, 'BY ITS': 1, 'ITS VIRTUAL': 1, 'VIRTUAL MACHINE': 1, 'IS DISTRIBUTED': 1, 'DISTRIBUTED WITH': 1, 'LIBRARY WRITTEN': 1, 'AND NATIVE': 1, 'NATIVE PYTHON': 1, 'IS AVAILABLE': 1, 'PLATFORMS INCLUDING': 1, 'INCLUDING WINDOWS': 1, 'WINDOWS STARTING': 1, 'PYTHON INSTALLER': 1, 'INSTALLER DELIBERATELY': 1, 'DELIBERATELY FAILS': 1, 'FAILS TO': 1, 'TO INSTALL': 1, 'INSTALL ON': 1, 'ON WINDOWS': 1, 'WINDOWS AND': 1, 'AND WINDOWS': 1, 'WINDOWS XP': 1, 'XP WAS': 1, 'WAS SUPPORTED': 1, 'SUPPORTED UNTIL': 1, 'AND MOST': 1, 'MOST MODERN': 1, 'MODERN UNIX-LIKE': 1, 'UNIX-LIKE SYSTEMS': 1, 'SYSTEMS INCLUDING': 1, 'INCLUDING MACOS': 1, 'MACOS AND': 1, 'AND APPLE': 1, 'APPLE MACS': 1, 'MACS SINCE': 1, 'WITH EXPERIMENTAL': 1, 'EXPERIMENTAL INSTALLER': 1, 'INSTALLER AND': 1, 'AND UNOFFICIAL': 1, 'UNOFFICIAL SUPPORT': 1, 'FOR E.G': 1, 'PLATFORM PORTABILITY': 1, 'PORTABILITY WAS': 1, 'WAS ONE': 1, 'ITS EARLIEST': 1, 'EARLIEST PRIORITIES': 1, 'DURING PYTHON': 1, 'AND DEVELOPMENT': 1, 'DEVELOPMENT EVEN': 1, 'EVEN OS': 1, 'OS AND': 1, 'AND SOLARIS': 1, 'SOLARIS WERE': 1, 'WERE SUPPORTED': 1, 'SUPPORTED BUT': 1, 'BUT SUPPORT': 1, 'SUPPORT HAS': 1, 'HAS SINCE': 1, 'SINCE BEEN': 1, 'BEEN DROPPED': 1, 'DROPPED FOR': 1, 'PLATFORMS OTHER': 1, 'OTHER IMPLEMENTATIONS': 1, 'IMPLEMENTATIONS PYPY': 1, 'PYPY IS': 1, 'A FAST': 1, 'FAST COMPLIANT': 1, 'COMPLIANT INTERPRETER': 1, 'ITS JUST-IN-TIME': 1, 'COMPILER OFTEN': 1, 'OFTEN BRINGS': 1, 'BRINGS A': 1, 'SIGNIFICANT SPEED': 1, 'SPEED IMPROVEMENT': 1, 'IMPROVEMENT OVER': 1, 'OVER CPYTHON': 1, 'CPYTHON BUT': 1, 'BUT SOME': 1, 'SOME LIBRARIES': 1, 'LIBRARIES WRITTEN': 1, 'IN CANNOT': 1, 'WITH IT': 1, 'SIGNIFICANT FORK': 1, 'CPYTHON THAT': 1, 'THAT IMPLEMENTS': 1, 'IMPLEMENTS MICROTHREADS': 1, 'MICROTHREADS IT': 1, 'THE CALL': 1, 'CALL STACK': 1, 'STACK IN': 1, 'SAME WAY': 1, 'WAY THUS': 1, 'THUS ALLOWING': 1, 'ALLOWING MASSIVELY': 1, 'MASSIVELY CONCURRENT': 1, 'CONCURRENT PROGRAMS': 1, 'PYPY ALSO': 1, 'A STACKLESS': 1, 'STACKLESS VERSION': 1, 'MICROPYTHON AND': 1, 'AND CIRCUITPYTHON': 1, 'CIRCUITPYTHON ARE': 1, 'ARE PYTHON': 1, 'PYTHON VARIANTS': 1, 'VARIANTS OPTIMIZED': 1, 'OPTIMIZED FOR': 1, 'FOR MICROCONTROLLERS': 1, 'MICROCONTROLLERS INCLUDING': 1, 'INCLUDING LEGO': 1, 'LEGO MINDSTORMS': 1, 'MINDSTORMS EV': 1, 'PYSTON IS': 1, 'A VARIANT': 1, 'VARIANT OF': 1, 'PYTHON RUNTIME': 1, 'RUNTIME THAT': 1, 'THAT USES': 1, 'USES JUST-IN-TIME': 1, 'JUST-IN-TIME COMPILATION': 1, 'COMPILATION TO': 1, 'SPEED UP': 1, 'THE EXECUTION': 1, 'EXECUTION OF': 1, 'CINDER IS': 1, 'A PERFORMANCE-ORIENTED': 1, 'THAT CONTAINS': 1, 'CONTAINS A': 1, 'OF OPTIMIZATIONS': 1, 'OPTIMIZATIONS INCLUDING': 1, 'INCLUDING BYTECODE': 1, 'BYTECODE INLINE': 1, 'INLINE CACHING': 1, 'CACHING EAGER': 1, 'EAGER EVALUATION': 1, 'EVALUATION OF': 1, 'OF COROUTINES': 1, 'COROUTINES A': 1, 'A METHOD-AT-A-TIME': 1, 'METHOD-AT-A-TIME JIT': 1, 'JIT AND': 1, 'EXPERIMENTAL BYTECODE': 1, 'BYTECODE COMPILER': 1, 'UNSUPPORTED IMPLEMENTATIONS': 1, 'IMPLEMENTATIONS OTHER': 1, 'OTHER JUST-IN-TIME': 1, 'JUST-IN-TIME PYTHON': 1, 'PYTHON COMPILERS': 1, 'COMPILERS HAVE': 1, 'BEEN DEVELOPED': 1, 'DEVELOPED BUT': 1, 'BUT ARE': 1, 'NOW UNSUPPORTED': 1, 'UNSUPPORTED GOOGLE': 1, 'GOOGLE BEGAN': 1, 'BEGAN A': 1, 'A PROJECT': 1, 'PROJECT NAMED': 1, 'NAMED UNLADEN': 1, 'SWALLOW IN': 1, 'IN WITH': 1, 'THE AIM': 1, 'AIM OF': 1, 'OF SPEEDING': 1, 'SPEEDING UP': 1, 'INTERPRETER FIVEFOLD': 1, 'FIVEFOLD BY': 1, 'BY USING': 1, 'THE LLVM': 1, 'LLVM AND': 1, 'AND OF': 1, 'OF IMPROVING': 1, 'IMPROVING ITS': 1, 'ITS MULTITHREADING': 1, 'MULTITHREADING ABILITY': 1, 'ABILITY TO': 1, 'TO SCALE': 1, 'SCALE TO': 1, 'TO THOUSANDS': 1, 'THOUSANDS OF': 1, 'OF CORES': 1, 'CORES WHILE': 1, 'WHILE ORDINARY': 1, 'ORDINARY IMPLEMENTATIONS': 1, 'IMPLEMENTATIONS SUFFER': 1, 'SUFFER FROM': 1, 'THE GLOBAL': 1, 'GLOBAL INTERPRETER': 1, 'INTERPRETER LOCK': 1, 'PSYCO IS': 1, 'A DISCONTINUED': 1, 'DISCONTINUED JUST-IN-TIME': 1, 'JUST-IN-TIME SPECIALIZING': 1, 'SPECIALIZING COMPILER': 1, 'COMPILER THAT': 1, 'THAT INTEGRATES': 1, 'INTEGRATES WITH': 1, 'WITH CPYTHON': 1, 'AND TRANSFORMS': 1, 'TRANSFORMS BYTECODE': 1, 'BYTECODE TO': 1, 'CODE AT': 1, 'AT RUNTIME': 1, 'THE EMITTED': 1, 'EMITTED CODE': 1, 'IS SPECIALIZED': 1, 'SPECIALIZED FOR': 1, 'FOR CERTAIN': 1, 'CERTAIN DATA': 1, 'IS FASTER': 1, 'FASTER THAN': 1, 'THAN THE': 1, 'PSYCO DOES': 1, 'SUPPORT PYTHON': 1, 'OR LATER': 1, 'PYS WAS': 1, 'FOR SERIES': 1, 'SERIES MOBILE': 1, 'MOBILE PHONES': 1, 'PHONES RELEASED': 1, 'RELEASED BY': 1, 'BY NOKIA': 1, 'NOKIA IN': 1, 'IT IMPLEMENTED': 1, 'IMPLEMENTED MANY': 1, 'THE MODULES': 1, 'MODULES FROM': 1, 'SOME ADDITIONAL': 1, 'ADDITIONAL MODULES': 1, 'FOR INTEGRATING': 1, 'INTEGRATING WITH': 1, 'THE SYMBIAN': 1, 'SYMBIAN OPERATING': 1, 'NOKIA ALSO': 1, 'ALSO SUPPORTS': 1, 'SUPPORTS PYTHON': 1, 'WITH GTK': 1, 'GTK WIDGET': 1, 'WIDGET LIBRARIES': 1, 'LIBRARIES ENABLING': 1, 'ENABLING PROGRAMS': 1, 'PROGRAMS TO': 1, 'BE WRITTEN': 1, 'WRITTEN AND': 1, 'AND RUN': 1, 'RUN ON': 1, 'THE TARGET': 1, 'TARGET DEVICE': 1, 'CROSS-COMPILERS TO': 1, 'LANGUAGES THERE': 1, 'ARE SEVERAL': 1, 'SEVERAL COMPILERS': 1, 'COMPILERS TO': 1, 'TO HIGH-LEVEL': 1, 'HIGH-LEVEL OBJECT': 1, 'OBJECT LANGUAGES': 1, 'LANGUAGES WITH': 1, 'WITH EITHER': 1, 'EITHER UNRESTRICTED': 1, 'UNRESTRICTED PYTHON': 1, 'A RESTRICTED': 1, 'RESTRICTED SUBSET': 1, 'PYTHON OR': 1, 'A LANGUAGE': 1, 'LANGUAGE SIMILAR': 1, 'THE SOURCE': 1, 'SOURCE LANGUAGE': 1, 'LANGUAGE BRYTHON': 1, 'BRYTHON TRANSCRYPT': 1, 'TRANSCRYPT AND': 1, 'AND PYJS': 1, 'PYJS LATEST': 1, 'COMPILE PYTHON': 1, 'CYTHON COMPILES': 1, 'A SUPERSET': 1, 'SUPERSET OF': 1, 'TO WHILE': 1, 'THE RESULTING': 1, 'RESULTING CODE': 1, 'ALSO USABLE': 1, 'USABLE WITH': 1, 'ALSO E.G': 1, 'NUITKA COMPILES': 1, 'PYTHON INTO': 1, 'NUMBA USES': 1, 'USES LLVM': 1, 'LLVM TO': 1, 'TO COMPILE': 1, 'COMPILE A': 1, 'PYTHRAN COMPILES': 1, 'RPYTHON CAN': 1, 'BE COMPILED': 1, 'COMPILED TO': 1, 'TO BUILD': 1, 'BUILD THE': 1, 'PYPY INTERPRETER': 1, 'TRANSPILER COMPILES': 1, 'SPECIALIZED MYHDL': 1, 'MYHDL IS': 1, 'A PYTHON-BASED': 1, 'PYTHON-BASED HARDWARE': 1, 'HARDWARE DESCRIPTION': 1, 'DESCRIPTION LANGUAGE': 1, 'LANGUAGE HDL': 1, 'HDL THAT': 1, 'THAT CONVERTS': 1, 'CONVERTS MYHDL': 1, 'MYHDL CODE': 1, 'TO VERILOG': 1, 'VERILOG OR': 1, 'OR VHDL': 1, 'VHDL CODE': 1, 'OLDER PROJECTS': 1, 'PROJECTS OR': 1, 'OR NOT': 1, 'NOT TO': 1, 'AND LATEST': 1, 'LATEST SYNTAX': 1, \"SYNTAX GOOGLE'S\": 1, 'GRUMPY LATEST': 1, 'IN TRANSPILES': 1, 'TRANSPILES PYTHON': 1, 'TO GO': 1, 'IRONPYTHON ALLOWS': 1, 'ALLOWS RUNNING': 1, 'RUNNING PYTHON': 1, 'PROGRAMS AND': 1, 'AN ALPHA': 1, 'ALPHA RELEASED': 1, 'IN IS': 1, 'ALTHOUGH FEATURES': 1, 'AND BEHAVIORS': 1, 'BEHAVIORS FROM': 1, 'FROM LATER': 1, 'VERSIONS MAY': 1, 'BE INCLUDED': 1, 'INCLUDED ON': 1, 'THE NET': 1, 'NET COMMON': 1, 'COMMON LANGUAGE': 1, 'JYTHON COMPILES': 1, 'JAVA BYTECODE': 1, 'BYTECODE ALLOWING': 1, 'JAVA LIBRARIES': 1, 'LIBRARIES FROM': 1, 'PYTHON PROGRAM': 1, 'PYREX LATEST': 1, 'AND SHED': 1, 'SKIN LATEST': 1, 'COMPILE TO': 1, 'AND RESPECTIVELY': 1, 'PERFORMANCE PERFORMANCE': 1, 'PERFORMANCE COMPARISON': 1, 'OF VARIOUS': 1, 'VARIOUS PYTHON': 1, 'IMPLEMENTATIONS ON': 1, 'A NON-NUMERICAL': 1, 'NON-NUMERICAL COMBINATORIAL': 1, 'COMBINATORIAL WORKLOAD': 1, 'WORKLOAD WAS': 1, 'WAS PRESENTED': 1, 'PRESENTED AT': 1, 'AT EUROSCIPY': 1, \"PYTHON'S PERFORMANCE\": 1, 'PERFORMANCE COMPARED': 1, 'COMPARED TO': 1, 'LANGUAGES IS': 1, 'ALSO BENCHMARKED': 1, 'BENCHMARKED BY': 1, \"DEVELOPMENT PYTHON'S\": 1, 'DEVELOPMENT IS': 1, 'IS CONDUCTED': 1, 'CONDUCTED LARGELY': 1, 'LARGELY THROUGH': 1, 'THROUGH THE': 1, 'ENHANCEMENT PROPOSAL': 1, 'PROPOSAL PEP': 1, 'PEP PROCESS': 1, 'PROCESS THE': 1, 'PRIMARY MECHANISM': 1, 'MECHANISM FOR': 1, 'FOR PROPOSING': 1, 'PROPOSING MAJOR': 1, 'FEATURES COLLECTING': 1, 'COLLECTING COMMUNITY': 1, 'COMMUNITY INPUT': 1, 'INPUT ON': 1, 'ON ISSUES': 1, 'AND DOCUMENTING': 1, 'DOCUMENTING PYTHON': 1, 'DESIGN DECISIONS': 1, 'PYTHON CODING': 1, 'CODING STYLE': 1, 'STYLE IS': 1, 'IS COVERED': 1, 'COVERED IN': 1, 'IN PEP': 1, 'OUTSTANDING PEPS': 1, 'PEPS ARE': 1, 'ARE REVIEWED': 1, 'REVIEWED AND': 1, 'AND COMMENTED': 1, 'COMMENTED ON': 1, 'ON BY': 1, 'COMMUNITY AND': 1, 'THE STEERING': 1, 'ENHANCEMENT OF': 1, 'LANGUAGE CORRESPONDS': 1, 'CORRESPONDS WITH': 1, 'THE DEVELOPMENT': 1, 'DEVELOPMENT OF': 1, 'THE MAILING': 1, 'LIST PYTHON-DEV': 1, 'PYTHON-DEV IS': 1, 'PRIMARY FORUM': 1, 'FORUM FOR': 1, \"THE LANGUAGE'S\": 1, \"LANGUAGE'S DEVELOPMENT\": 1, 'SPECIFIC ISSUES': 1, 'ISSUES WERE': 1, 'WERE ORIGINALLY': 1, 'ORIGINALLY DISCUSSED': 1, 'DISCUSSED IN': 1, 'THE ROUNDUP': 1, 'ROUNDUP BUG': 1, 'BUG TRACKER': 1, 'TRACKER HOSTED': 1, 'HOSTED AT': 1, 'AT BY': 1, 'THE FOUNDATION': 1, 'IN ALL': 1, 'ALL ISSUES': 1, 'AND DISCUSSIONS': 1, 'DISCUSSIONS WERE': 1, 'WERE MIGRATED': 1, 'MIGRATED TO': 1, 'DEVELOPMENT ORIGINALLY': 1, 'ORIGINALLY TOOK': 1, 'TOOK PLACE': 1, 'PLACE ON': 1, 'A SELF-HOSTED': 1, 'SELF-HOSTED SOURCE-CODE': 1, 'SOURCE-CODE REPOSITORY': 1, 'REPOSITORY RUNNING': 1, 'RUNNING MERCURIAL': 1, 'MERCURIAL UNTIL': 1, 'PYTHON MOVED': 1, 'MOVED TO': 1, 'GITHUB IN': 1, \"CPYTHON'S PUBLIC\": 1, 'PUBLIC RELEASES': 1, 'RELEASES COME': 1, 'COME IN': 1, 'IN THREE': 1, 'THREE TYPES': 1, 'TYPES DISTINGUISHED': 1, 'DISTINGUISHED BY': 1, 'BY WHICH': 1, 'WHICH PART': 1, 'INCREMENTED BACKWARD-INCOMPATIBLE': 1, 'BACKWARD-INCOMPATIBLE VERSIONS': 1, 'VERSIONS WHERE': 1, 'WHERE CODE': 1, 'IS EXPECTED': 1, 'TO BREAK': 1, 'BREAK AND': 1, 'AND NEEDS': 1, 'NEEDS TO': 1, 'BE MANUALLY': 1, 'MANUALLY PORTED': 1, 'FIRST PART': 1, 'RELEASES HAPPEN': 1, 'HAPPEN INFREQUENTLYVERSION': 1, 'RELEASED YEARS': 1, 'TO GUIDO': 1, 'ROSSUM A': 1, 'A VERSION': 1, 'IS VERY': 1, 'VERY UNLIKELY': 1, 'UNLIKELY TO': 1, 'TO EVER': 1, 'EVER HAPPEN': 1, 'MAJOR OR': 1, 'OR FEATURE': 1, 'FEATURE RELEASES': 1, 'ARE LARGELY': 1, 'LARGELY COMPATIBLE': 1, 'COMPATIBLE WITH': 1, 'THE PREVIOUS': 1, 'PREVIOUS VERSION': 1, 'VERSION BUT': 1, 'BUT INTRODUCE': 1, 'INTRODUCE NEW': 1, 'THE SECOND': 1, 'SECOND PART': 1, 'ARE EXPECTED': 1, 'TO HAPPEN': 1, 'HAPPEN ANNUALLY': 1, 'EACH MAJOR': 1, 'MAJOR VERSION': 1, 'VERSION IS': 1, 'IS SUPPORTED': 1, 'SUPPORTED BY': 1, 'BY BUG': 1, 'BUG FIXES': 1, 'FIXES FOR': 1, 'FOR SEVERAL': 1, 'SEVERAL YEARS': 1, 'AFTER ITS': 1, 'ITS RELEASE': 1, 'BUGFIX RELEASES': 1, 'RELEASES WHICH': 1, 'WHICH INTRODUCE': 1, 'INTRODUCE NO': 1, 'NO NEW': 1, 'FEATURES OCCUR': 1, 'OCCUR ABOUT': 1, 'ABOUT EVERY': 1, 'EVERY MONTHS': 1, 'MONTHS AND': 1, 'AND ARE': 1, 'ARE MADE': 1, 'MADE WHEN': 1, 'WHEN A': 1, 'A SUFFICIENT': 1, 'SUFFICIENT NUMBER': 1, 'OF BUGS': 1, 'BUGS HAVE': 1, 'BEEN FIXED': 1, 'FIXED UPSTREAM': 1, 'UPSTREAM SINCE': 1, 'SINCE THE': 1, 'SECURITY VULNERABILITIES': 1, 'VULNERABILITIES ARE': 1, 'ALSO PATCHED': 1, 'PATCHED IN': 1, 'IN THESE': 1, 'THIRD AND': 1, 'AND FINAL': 1, 'FINAL PART': 1, 'MANY ALPHA': 1, 'ALPHA BETA': 1, 'BETA AND': 1, 'AND RELEASE-CANDIDATES': 1, 'RELEASE-CANDIDATES ARE': 1, 'ALSO RELEASED': 1, 'RELEASED AS': 1, 'AS PREVIEWS': 1, 'PREVIEWS AND': 1, 'AND FOR': 1, 'FOR TESTING': 1, 'TESTING BEFORE': 1, 'BEFORE FINAL': 1, 'FINAL RELEASES': 1, 'ALTHOUGH THERE': 1, 'ROUGH SCHEDULE': 1, 'SCHEDULE FOR': 1, 'FOR EACH': 1, 'EACH RELEASE': 1, 'RELEASE THEY': 1, 'ARE OFTEN': 1, 'OFTEN DELAYED': 1, 'DELAYED IF': 1, 'NOT READY': 1, 'DEVELOPMENT TEAM': 1, 'TEAM MONITORS': 1, 'MONITORS THE': 1, 'CODE BY': 1, 'BY RUNNING': 1, 'RUNNING THE': 1, 'THE LARGE': 1, 'LARGE UNIT': 1, 'UNIT TEST': 1, 'TEST SUITE': 1, 'SUITE DURING': 1, 'DURING DEVELOPMENT': 1, 'THE MAJOR': 1, 'MAJOR ACADEMIC': 1, 'ACADEMIC CONFERENCE': 1, 'IS PYCON': 1, 'ALSO SPECIAL': 1, 'SPECIAL PYTHON': 1, 'PYTHON MENTORING': 1, 'MENTORING PROGRAMS': 1, 'PROGRAMS SUCH': 1, 'AS PYLADIES': 1, 'DEPRECATED WSTR': 1, 'WSTR TO': 1, 'BE REMOVED': 1, 'MEANING PYTHON': 1, 'PYTHON EXTENSIONS': 1, 'EXTENSIONS NEED': 1, 'NEED TO': 1, 'BE MODIFIED': 1, 'MODIFIED BY': 1, 'BY THEN': 1, 'THEN AND': 1, 'AND ADDED': 1, 'ADDED PATTERN': 1, 'MATCHING TO': 1, 'API DOCUMENTATION': 1, 'DOCUMENTATION GENERATORS': 1, 'GENERATORS TOOLS': 1, 'TOOLS THAT': 1, 'CAN GENERATE': 1, 'GENERATE DOCUMENTATION': 1, 'DOCUMENTATION FOR': 1, 'PYTHON API': 1, 'API INCLUDE': 1, 'INCLUDE PYDOC': 1, 'PYDOC AVAILABLE': 1, 'AVAILABLE AS': 1, 'LIBRARY SPHINX': 1, 'SPHINX PDOC': 1, 'PDOC AND': 1, 'ITS FORKS': 1, 'FORKS DOXYGEN': 1, 'DOXYGEN AND': 1, 'AND GRAPHVIZ': 1, 'GRAPHVIZ AMONG': 1, 'AMONG OTHERS': 1, \"NAMING PYTHON'S\": 1, \"PYTHON'S NAME\": 1, 'IS DERIVED': 1, 'DERIVED FROM': 1, 'PYTHON WHOM': 1, 'WHOM PYTHON': 1, 'PYTHON CREATOR': 1, 'CREATOR GUIDO': 1, 'ROSSUM ENJOYED': 1, 'ENJOYED WHILE': 1, 'WHILE DEVELOPING': 1, 'DEVELOPING THE': 1, 'PYTHON REFERENCES': 1, 'REFERENCES APPEAR': 1, 'APPEAR FREQUENTLY': 1, 'FREQUENTLY IN': 1, 'AND CULTURE': 1, 'CULTURE FOR': 1, 'THE METASYNTACTIC': 1, 'METASYNTACTIC VARIABLES': 1, 'VARIABLES OFTEN': 1, 'PYTHON LITERATURE': 1, 'LITERATURE ARE': 1, 'ARE SPAM': 1, 'EGGS INSTEAD': 1, 'THE TRADITIONAL': 1, 'TRADITIONAL FOO': 1, 'OFFICIAL PYTHON': 1, 'DOCUMENTATION ALSO': 1, 'ALSO CONTAINS': 1, 'CONTAINS VARIOUS': 1, 'VARIOUS REFERENCES': 1, 'REFERENCES TO': 1, 'TO MONTY': 1, 'PYTHON ROUTINES': 1, 'THE PREFIX': 1, 'PREFIX PY': 1, 'PY IS': 1, 'SHOW THAT': 1, 'THAT SOMETHING': 1, 'SOMETHING IS': 1, 'IS RELATED': 1, 'EXAMPLES OF': 1, 'THIS PREFIX': 1, 'PREFIX IN': 1, 'IN NAMES': 1, 'NAMES OF': 1, 'PYTHON APPLICATIONS': 1, 'APPLICATIONS OR': 1, 'OR LIBRARIES': 1, 'LIBRARIES INCLUDE': 1, 'INCLUDE PYGAME': 1, 'PYGAME A': 1, 'A BINDING': 1, 'BINDING OF': 1, 'OF SDL': 1, 'SDL TO': 1, 'PYTHON COMMONLY': 1, 'GAMES PYQT': 1, 'PYQT AND': 1, 'AND PYGTK': 1, 'PYGTK WHICH': 1, 'WHICH BIND': 1, 'BIND QT': 1, 'QT AND': 1, 'AND GTK': 1, 'GTK TO': 1, 'PYTHON RESPECTIVELY': 1, 'RESPECTIVELY AND': 1, 'PYTHON IMPLEMENTATION': 1, 'IMPLEMENTATION ORIGINALLY': 1, 'ORIGINALLY WRITTEN': 1, 'POPULARITY SINCE': 1, 'HAS CONSISTENTLY': 1, 'CONSISTENTLY RANKED': 1, 'RANKED IN': 1, 'THE TOP': 1, 'TOP TEN': 1, 'TEN MOST': 1, 'INDEX WHERE': 1, 'WHERE AS': 1, 'OF DECEMBER': 1, 'DECEMBER UPDATE': 1, 'UPDATE IT': 1, 'POPULAR LANGUAGE': 1, 'LANGUAGE AHEAD': 1, 'AHEAD OF': 1, 'WAS SELECTED': 1, 'SELECTED PROGRAMMING': 1, 'LANGUAGE OF': 1, 'THE YEAR': 1, 'YEAR FOR': 1, 'THE HIGHEST': 1, 'HIGHEST RISE': 1, 'RISE IN': 1, 'IN RATINGS': 1, 'RATINGS IN': 1, 'A YEAR': 1, 'YEAR IN': 1, 'THE ONLY': 1, 'ONLY LANGUAGE': 1, 'TO HAVE': 1, 'HAVE DONE': 1, 'DONE SO': 1, 'SO FOUR': 1, 'FOUR TIMES': 1, 'TIMES AS': 1, 'EMPIRICAL STUDY': 1, 'STUDY FOUND': 1, 'FOUND THAT': 1, 'THAT SCRIPTING': 1, 'SCRIPTING LANGUAGES': 1, 'PYTHON ARE': 1, 'ARE MORE': 1, 'MORE PRODUCTIVE': 1, 'PRODUCTIVE THAN': 1, 'THAN CONVENTIONAL': 1, 'CONVENTIONAL LANGUAGES': 1, 'AS AND': 1, 'JAVA FOR': 1, 'FOR PROGRAMMING': 1, 'PROGRAMMING PROBLEMS': 1, 'PROBLEMS INVOLVING': 1, 'INVOLVING STRING': 1, 'STRING MANIPULATION': 1, 'MANIPULATION AND': 1, 'AND SEARCH': 1, 'SEARCH IN': 1, 'A DICTIONARY': 1, 'DICTIONARY AND': 1, 'AND DETERMINED': 1, 'DETERMINED THAT': 1, 'THAT MEMORY': 1, 'MEMORY CONSUMPTION': 1, 'CONSUMPTION WAS': 1, 'WAS OFTEN': 1, 'OFTEN BETTER': 1, 'THAN JAVA': 1, 'NOT MUCH': 1, 'MUCH WORSE': 1, 'WORSE THAN': 1, 'LARGE ORGANIZATIONS': 1, 'ORGANIZATIONS THAT': 1, 'THAT USE': 1, 'INCLUDE WIKIPEDIA': 1, 'WIKIPEDIA GOOGLE': 1, 'GOOGLE YAHOO': 1, 'YAHOO CERN': 1, 'CERN NASA': 1, 'NASA FACEBOOK': 1, 'FACEBOOK AMAZON': 1, 'AMAZON INSTAGRAM': 1, 'INSTAGRAM SPOTIFY': 1, 'SPOTIFY AND': 1, 'SOME SMALLER': 1, 'SMALLER ENTITIES': 1, 'ENTITIES LIKE': 1, 'LIKE ILM': 1, 'ILM AND': 1, 'AND ITA': 1, 'THE SOCIAL': 1, 'SOCIAL NEWS': 1, 'NEWS NETWORKING': 1, 'NETWORKING SITE': 1, 'SITE REDDIT': 1, 'REDDIT WAS': 1, 'WAS WRITTEN': 1, 'WRITTEN MOSTLY': 1, 'MOSTLY IN': 1, 'USES MAIN': 1, 'ARTICLE LIST': 1, 'PYTHON POWERED': 1, 'POWERED PYTHON': 1, 'CAN SERVE': 1, 'SERVE AS': 1, 'FOR WEB': 1, 'APPLICATIONS E.G': 1, 'E.G VIA': 1, 'VIA MOD_WSGI': 1, 'MOD_WSGI FOR': 1, 'THE APACHE': 1, 'APACHE WEBSERVER': 1, 'WITH WEB': 1, 'INTERFACE A': 1, 'STANDARD API': 1, 'API HAS': 1, 'HAS EVOLVED': 1, 'EVOLVED TO': 1, 'TO FACILITATE': 1, 'FACILITATE THESE': 1, 'THESE APPLICATIONS': 1, 'FRAMEWORKS LIKE': 1, 'LIKE DJANGO': 1, 'DJANGO PYLONS': 1, 'PYRAMID TURBOGEARS': 1, 'TURBOGEARS WEB': 1, 'PY TORNADO': 1, 'TORNADO FLASK': 1, 'FLASK BOTTLE': 1, 'BOTTLE AND': 1, 'AND ZOPE': 1, 'ZOPE SUPPORT': 1, 'SUPPORT DEVELOPERS': 1, 'DEVELOPERS IN': 1, 'AND MAINTENANCE': 1, 'MAINTENANCE OF': 1, 'OF COMPLEX': 1, 'COMPLEX APPLICATIONS': 1, 'PYJS AND': 1, 'AND IRONPYTHON': 1, 'IRONPYTHON CAN': 1, 'TO DEVELOP': 1, 'DEVELOP THE': 1, 'THE CLIENT-SIDE': 1, 'CLIENT-SIDE OF': 1, 'OF AJAX-BASED': 1, 'AJAX-BASED APPLICATIONS': 1, 'SQLALCHEMY CAN': 1, 'A DATA': 1, 'DATA MAPPER': 1, 'MAPPER TO': 1, 'A RELATIONAL': 1, 'RELATIONAL DATABASE': 1, 'TWISTED IS': 1, 'A FRAMEWORK': 1, 'FRAMEWORK TO': 1, 'PROGRAM COMMUNICATIONS': 1, 'COMMUNICATIONS BETWEEN': 1, 'BETWEEN COMPUTERS': 1, 'COMPUTERS AND': 1, 'EXAMPLE BY': 1, 'BY DROPBOX': 1, 'NUMPY SCIPY': 1, 'SCIPY AND': 1, 'AND MATPLOTLIB': 1, 'MATPLOTLIB ALLOW': 1, 'ALLOW THE': 1, 'THE EFFECTIVE': 1, 'EFFECTIVE USE': 1, 'IN SCIENTIFIC': 1, 'COMPUTING WITH': 1, 'WITH SPECIALIZED': 1, 'SPECIALIZED LIBRARIES': 1, 'AS BIOPYTHON': 1, 'BIOPYTHON AND': 1, 'AND ASTROPY': 1, 'ASTROPY PROVIDING': 1, 'PROVIDING DOMAIN-SPECIFIC': 1, 'DOMAIN-SPECIFIC FUNCTIONALITY': 1, 'SAGEMATH IS': 1, 'COMPUTER ALGEBRA': 1, 'ALGEBRA SYSTEM': 1, 'SYSTEM WITH': 1, 'A NOTEBOOK': 1, 'NOTEBOOK INTERFACE': 1, 'INTERFACE PROGRAMMABLE': 1, 'PROGRAMMABLE IN': 1, 'PYTHON ITS': 1, 'ITS LIBRARY': 1, 'LIBRARY COVERS': 1, 'COVERS MANY': 1, 'MANY ASPECTS': 1, 'ASPECTS OF': 1, 'OF MATHEMATICS': 1, 'MATHEMATICS INCLUDING': 1, 'INCLUDING ALGEBRA': 1, 'ALGEBRA COMBINATORICS': 1, 'COMBINATORICS NUMERICAL': 1, 'NUMERICAL MATHEMATICS': 1, 'MATHEMATICS NUMBER': 1, 'NUMBER THEORY': 1, 'THEORY AND': 1, 'AND CALCULUS': 1, 'OPENCV HAS': 1, 'HAS PYTHON': 1, 'PYTHON BINDINGS': 1, 'BINDINGS WITH': 1, 'A RICH': 1, 'RICH SET': 1, 'SET OF': 1, 'OF FEATURES': 1, 'FEATURES FOR': 1, 'FOR COMPUTER': 1, 'COMPUTER VISION': 1, 'VISION AND': 1, 'AND IMAGE': 1, 'IN ARTIFICIAL': 1, 'INTELLIGENCE PROJECTS': 1, 'PROJECTS AND': 1, 'AND MACHINE': 1, 'LEARNING PROJECTS': 1, 'PROJECTS WITH': 1, 'THE HELP': 1, 'HELP OF': 1, 'OF LIBRARIES': 1, 'LIBRARIES LIKE': 1, 'LIKE TENSORFLOW': 1, 'TENSORFLOW KERAS': 1, 'KERAS PYTORCH': 1, 'PYTORCH AND': 1, 'AND SCIKIT-LEARN': 1, 'A MODULAR': 1, 'MODULAR ARCHITECTURE': 1, 'ARCHITECTURE SIMPLE': 1, 'SIMPLE SYNTAX': 1, 'AND RICH': 1, 'RICH TEXT': 1, 'PROCESSING TOOLS': 1, 'TOOLS PYTHON': 1, 'FOR NATURAL': 1, 'LANGUAGE PROCESSING': 1, 'GAMES WITH': 1, 'WITH LIBRARIES': 1, 'AS PYGAME': 1, 'PYGAME WHICH': 1, 'WHICH CAN': 1, 'CAN MAKE': 1, 'MAKE GAMES': 1, 'BEEN SUCCESSFULLY': 1, 'SUCCESSFULLY EMBEDDED': 1, 'EMBEDDED IN': 1, 'IN MANY': 1, 'MANY SOFTWARE': 1, 'SOFTWARE PRODUCTS': 1, 'PRODUCTS AS': 1, 'LANGUAGE INCLUDING': 1, 'IN FINITE': 1, 'FINITE ELEMENT': 1, 'ELEMENT METHOD': 1, 'METHOD SOFTWARE': 1, 'SOFTWARE SUCH': 1, 'AS ABAQUS': 1, 'ABAQUS PARAMETRIC': 1, 'PARAMETRIC MODELERS': 1, 'MODELERS LIKE': 1, 'LIKE FREECAD': 1, 'FREECAD ANIMATION': 1, 'ANIMATION PACKAGES': 1, 'PACKAGES SUCH': 1, 'AS DS': 1, 'DS MAX': 1, 'MAX BLENDER': 1, 'BLENDER CINEMA': 1, 'CINEMA LIGHTWAVE': 1, 'LIGHTWAVE HOUDINI': 1, 'HOUDINI MAYA': 1, 'MAYA MODO': 1, 'MODO MOTIONBUILDER': 1, 'MOTIONBUILDER SOFTIMAGE': 1, 'SOFTIMAGE THE': 1, 'THE VISUAL': 1, 'VISUAL EFFECTS': 1, 'EFFECTS COMPOSITOR': 1, 'COMPOSITOR NUKE': 1, 'NUKE IMAGING': 1, 'IMAGING PROGRAMS': 1, 'LIKE GIMP': 1, 'GIMP INKSCAPE': 1, 'INKSCAPE SCRIBUS': 1, 'SCRIBUS AND': 1, 'AND PAINT': 1, 'PAINT SHOP': 1, 'SHOP PRO': 1, 'PRO AND': 1, 'AND MUSICAL': 1, 'MUSICAL NOTATION': 1, 'NOTATION PROGRAMS': 1, 'LIKE SCOREWRITER': 1, 'SCOREWRITER AND': 1, 'AND CAPELLA': 1, 'GNU DEBUGGER': 1, 'DEBUGGER USES': 1, 'PRINTER TO': 1, 'SHOW COMPLEX': 1, 'COMPLEX STRUCTURES': 1, 'STRUCTURES SUCH': 1, 'AS CONTAINERS': 1, 'ESRI PROMOTES': 1, 'PROMOTES PYTHON': 1, 'THE BEST': 1, 'BEST CHOICE': 1, 'CHOICE FOR': 1, 'WRITING SCRIPTS': 1, 'SCRIPTS IN': 1, 'IN ARCGIS': 1, 'HAS ALSO': 1, 'BEEN USED': 1, 'IN SEVERAL': 1, 'SEVERAL VIDEO': 1, 'GAMES AND': 1, 'BEEN ADOPTED': 1, 'ADOPTED AS': 1, 'AS FIRST': 1, 'FIRST OF': 1, 'THE THREE': 1, 'THREE AVAILABLE': 1, 'AVAILABLE PROGRAMMING': 1, 'IN GOOGLE': 1, 'GOOGLE APP': 1, 'APP ENGINE': 1, 'ENGINE THE': 1, 'THE OTHER': 1, 'OTHER TWO': 1, 'TWO BEING': 1, 'BEING JAVA': 1, 'AND GO': 1, 'MANY OPERATING': 1, 'SYSTEMS INCLUDE': 1, 'INCLUDE PYTHON': 1, 'STANDARD COMPONENT': 1, 'IT SHIPS': 1, 'SHIPS WITH': 1, 'WITH MOST': 1, 'MOST LINUX': 1, 'DISTRIBUTIONS AMIGAOS': 1, 'AMIGAOS USING': 1, 'FREEBSD AS': 1, 'PACKAGE NETBSD': 1, 'NETBSD AND': 1, 'AND OPENBSD': 1, 'OPENBSD AS': 1, 'PACKAGE AND': 1, 'USED FROM': 1, 'THE COMMAND': 1, 'LINE TERMINAL': 1, 'MANY LINUX': 1, 'DISTRIBUTIONS USE': 1, 'USE INSTALLERS': 1, 'INSTALLERS WRITTEN': 1, 'PYTHON UBUNTU': 1, 'UBUNTU USES': 1, 'THE UBIQUITY': 1, 'UBIQUITY INSTALLER': 1, 'INSTALLER WHILE': 1, 'WHILE RED': 1, 'HAT LINUX': 1, 'LINUX AND': 1, 'AND FEDORA': 1, 'FEDORA LINUX': 1, 'LINUX USE': 1, 'THE ANACONDA': 1, 'ANACONDA INSTALLER': 1, 'GENTOO LINUX': 1, 'LINUX USES': 1, 'ITS PACKAGE': 1, 'PACKAGE MANAGEMENT': 1, 'MANAGEMENT SYSTEM': 1, 'SYSTEM PORTAGE': 1, 'USED EXTENSIVELY': 1, 'EXTENSIVELY IN': 1, 'THE INFORMATION': 1, 'INFORMATION SECURITY': 1, 'SECURITY INDUSTRY': 1, 'INDUSTRY INCLUDING': 1, 'IN EXPLOIT': 1, 'EXPLOIT DEVELOPMENT': 1, 'THE SUGAR': 1, 'SUGAR SOFTWARE': 1, 'THE ONE': 1, 'ONE LAPTOP': 1, 'LAPTOP PER': 1, 'PER CHILD': 1, 'CHILD XO': 1, 'XO DEVELOPED': 1, 'DEVELOPED AT': 1, 'AT SUGAR': 1, 'LABS SINCE': 1, 'SINCE IS': 1, 'THE RASPBERRY': 1, 'RASPBERRY PI': 1, 'PI SINGLE-BOARD': 1, 'SINGLE-BOARD COMPUTER': 1, 'COMPUTER PROJECT': 1, 'PROJECT HAS': 1, 'HAS ADOPTED': 1, 'ADOPTED PYTHON': 1, 'ITS MAIN': 1, 'MAIN USER-PROGRAMMING': 1, 'USER-PROGRAMMING LANGUAGE': 1, 'LIBREOFFICE INCLUDES': 1, 'INCLUDES PYTHON': 1, 'AND INTENDS': 1, 'INTENDS TO': 1, 'TO REPLACE': 1, 'REPLACE JAVA': 1, 'JAVA WITH': 1, 'ITS PYTHON': 1, 'PYTHON SCRIPTING': 1, 'SCRIPTING PROVIDER': 1, 'PROVIDER IS': 1, 'A CORE': 1, 'CORE FEATURE': 1, 'FEATURE SINCE': 1, 'SINCE VERSION': 1, 'FROM FEBRUARY': 1, 'LANGUAGES INFLUENCED': 1, 'INFLUENCED BY': 1, 'BY PYTHON': 1, \"PYTHON PYTHON'S\": 1, \"PYTHON'S DESIGN\": 1, 'AND PHILOSOPHY': 1, 'PHILOSOPHY HAVE': 1, 'HAVE INFLUENCED': 1, 'INFLUENCED MANY': 1, 'LANGUAGES BOO': 1, 'BOO USES': 1, 'INDENTATION A': 1, 'SIMILAR OBJECT': 1, 'COBRA USES': 1, 'ITS ACKNOWLEDGEMENTS': 1, 'ACKNOWLEDGEMENTS DOCUMENT': 1, 'DOCUMENT LISTS': 1, 'LISTS PYTHON': 1, 'PYTHON FIRST': 1, 'FIRST AMONG': 1, 'AMONG LANGUAGES': 1, 'LANGUAGES THAT': 1, 'THAT INFLUENCED': 1, 'INFLUENCED IT': 1, 'COFFEESCRIPT A': 1, 'THAT CROSS-COMPILES': 1, 'CROSS-COMPILES TO': 1, 'JAVASCRIPT HAS': 1, 'HAS PYTHON-INSPIRED': 1, 'ECMASCRIPT/JAVASCRIPT BORROWED': 1, 'BORROWED ITERATORS': 1, 'GENERATORS FROM': 1, 'GDSCRIPT A': 1, 'LANGUAGE VERY': 1, 'VERY SIMILAR': 1, 'BUILT-IN TO': 1, 'THE GODOT': 1, 'GODOT GAME': 1, 'GAME ENGINE': 1, 'GO IS': 1, 'IS DESIGNED': 1, 'DESIGNED FOR': 1, 'THE SPEED': 1, 'SPEED OF': 1, 'OF WORKING': 1, 'WORKING IN': 1, 'LANGUAGE LIKE': 1, 'LIKE PYTHON': 1, 'AND SHARES': 1, 'SHARES THE': 1, 'SYNTAX FOR': 1, 'FOR SLICING': 1, 'SLICING ARRAYS': 1, 'GROOVY WAS': 1, 'WAS MOTIVATED': 1, 'MOTIVATED BY': 1, 'THE DESIRE': 1, 'DESIRE TO': 1, 'TO BRING': 1, 'BRING THE': 1, 'PHILOSOPHY TO': 1, 'JULIA WAS': 1, 'BE AS': 1, 'NIM USES': 1, 'AND SIMILAR': 1, \"RUBY'S CREATOR\": 1, 'CREATOR YUKIHIRO': 1, 'YUKIHIRO MATSUMOTO': 1, 'MATSUMOTO HAS': 1, 'HAS SAID': 1, 'SAID I': 1, 'I WANTED': 1, 'WANTED A': 1, 'THAT WAS': 1, 'WAS MORE': 1, 'MORE POWERFUL': 1, 'POWERFUL THAN': 1, 'THAN PERL': 1, 'MORE OBJECT-ORIENTED': 1, 'OBJECT-ORIENTED THAN': 1, 'THAN PYTHON': 1, \"THAT'S WHY\": 1, 'WHY I': 1, 'I DECIDED': 1, 'DECIDED TO': 1, 'TO DESIGN': 1, 'DESIGN MY': 1, 'MY OWN': 1, 'OWN LANGUAGE': 1, 'LANGUAGE SWIFT': 1, 'SWIFT A': 1, 'LANGUAGE DEVELOPED': 1, 'DEVELOPED BY': 1, 'BY APPLE': 1, 'APPLE HAS': 1, 'HAS SOME': 1, 'SOME PYTHON-INSPIRED': 1, 'DEVELOPMENT PRACTICES': 1, 'PRACTICES HAVE': 1, 'HAVE ALSO': 1, 'BEEN EMULATED': 1, 'EMULATED BY': 1, 'BY OTHER': 1, 'THE PRACTICE': 1, 'PRACTICE OF': 1, 'OF REQUIRING': 1, 'REQUIRING A': 1, 'A DOCUMENT': 1, 'DOCUMENT DESCRIBING': 1, 'DESCRIBING THE': 1, 'THE RATIONALE': 1, 'RATIONALE FOR': 1, 'FOR AND': 1, 'AND ISSUES': 1, 'ISSUES SURROUNDING': 1, 'SURROUNDING A': 1, 'A CHANGE': 1, 'CHANGE TO': 1, 'PEP IS': 1, 'ALSO USED': 1, 'IN TCL': 1, 'TCL ERLANG': 1, 'ERLANG AND': 1, 'AND SWIFT': 1, 'ALSO COMPUTER': 1, 'PROGRAMMING PORTALFREE': 1, 'PORTALFREE AND': 1, 'SOFTWARE PORTAL': 1, 'PORTAL PYTHON': 1, 'SEMANTICS PIP': 1, 'PIP PACKAGE': 1, 'PACKAGE MANAGER': 1, 'MANAGER LIST': 1, 'LANGUAGES HISTORY': 1, 'LANGUAGES REFERENCES': 1, 'REFERENCES GENERAL': 1, 'FAQ PYTHON': 1, 'ALT.SOURCES ARCHIVES': 1, 'ALSO A': 1, 'A STRONGLY': 1, 'TYPED LANGUAGE': 1, 'LANGUAGE PYTHON': 1, 'PYTHON WIKI': 1, 'THE THEORY': 1, 'THEORY OF': 1, 'OF TYPE': 1, 'TYPE HINTS': 1, 'TEST REGRESSION': 1, 'REGRESSION TESTS': 1, 'TESTS PACKAGE': 1, 'PACKAGE FOR': 1, 'PLATFORM ACCESS': 1, 'TO UNDERLYING': 1, \"UNDERLYING PLATFORM'S\": 1, \"PLATFORM'S IDENTIFYING\": 1, 'IDENTIFYING DATA': 1, 'DATA PYTHON': 1, 'HOLTH MOORE': 1, 'MOORE MARCH': 1, 'PEP IMPROVING': 1, 'IMPROVING PYTHON': 1, 'PYTHON ZIP': 1, 'ZIP APPLICATION': 1, 'APPLICATION SUPPORT': 1, 'FILE EXTENSION': 1, 'EXTENSION PYO': 1, 'PYO WAS': 1, 'WAS REMOVED': 1, 'SEE PEP': 1, 'PEP ARCHIVED': 1, 'ARCHIVED JUNE': 1, 'JUNE AT': 1, 'THE WAYBACK': 1, 'WAYBACK MACHINE': 1, 'MACHINE STARLARK': 1, 'STARLARK LANGUAGE': 1, 'WHY WAS': 1, 'WAS PYTHON': 1, 'PYTHON CREATED': 1, 'CREATED IN': 1, 'FIRST PLACE': 1, 'HAD EXTENSIVE': 1, 'EXTENSIVE EXPERIENCE': 1, 'EXPERIENCE WITH': 1, 'WITH IMPLEMENTING': 1, 'IMPLEMENTING AN': 1, 'AN INTERPRETED': 1, 'INTERPRETED LANGUAGE': 1, 'ABC GROUP': 1, 'GROUP AT': 1, 'AT CWI': 1, 'CWI AND': 1, 'FROM WORKING': 1, 'WORKING WITH': 1, 'WITH THIS': 1, 'THIS GROUP': 1, 'GROUP I': 1, 'HAD LEARNED': 1, 'LEARNED A': 1, 'A LOT': 1, 'LOT ABOUT': 1, 'ABOUT LANGUAGE': 1, 'THE ORIGIN': 1, 'ORIGIN OF': 1, 'MANY PYTHON': 1, 'OF INDENTATION': 1, 'INDENTATION FOR': 1, 'STATEMENT GROUPING': 1, 'GROUPING AND': 1, 'THE INCLUSION': 1, 'INCLUSION OF': 1, 'OF VERY': 1, 'VERY HIGH-LEVEL': 1, 'HIGH-LEVEL DATA': 1, 'TYPES ALTHOUGH': 1, 'ALTHOUGH THE': 1, 'THE DETAILS': 1, 'DETAILS ARE': 1, 'ARE ALL': 1, 'ALL DIFFERENT': 1, 'ADA REFERENCE': 1, 'REFERENCE MANUAL': 1, 'MANUAL RAISE': 1, 'A KUCHLING': 1, 'KUCHLING ANDREW': 1, 'ROSSUM JULY': 1, \"I'D SPENT\": 1, 'SPENT A': 1, 'A SUMMER': 1, 'SUMMER AT': 1, \"AT DEC'S\": 1, \"DEC'S SYSTEMS\": 1, 'RESEARCH CENTER': 1, 'CENTER WHICH': 1, 'WHICH INTRODUCED': 1, 'INTRODUCED ME': 1, 'ME TO': 1, 'TO MODULA': 1, 'MODULA THE': 1, 'THE MODULA': 1, 'MODULA FINAL': 1, 'FINAL REPORT': 1, 'REPORT WAS': 1, 'WAS BEING': 1, 'BEING WRITTEN': 1, 'WRITTEN THERE': 1, 'THERE AT': 1, 'AT ABOUT': 1, 'ABOUT THE': 1, 'SAME TIME': 1, 'WHAT I': 1, 'I LEARNED': 1, 'LEARNED THERE': 1, 'THERE LATER': 1, 'LATER SHOWED': 1, 'SHOWED UP': 1, 'UP IN': 1, \"IN PYTHON'S\": 1, \"PYTHON'S EXCEPTION\": 1, 'HANDLING MODULES': 1, 'MODULES AND': 1, 'THE FACT': 1, 'FACT THAT': 1, 'THAT METHODS': 1, 'METHODS EXPLICITLY': 1, 'EXPLICITLY CONTAIN': 1, 'CONTAIN SELF': 1, 'SELF IN': 1, 'THEIR PARAMETER': 1, 'PARAMETER LIST': 1, 'STRING SLICING': 1, 'SLICING CAME': 1, 'CAME FROM': 1, 'FROM ALGOL': 1, 'ALGOL AND': 1, 'AND ICON': 1, 'A ITERTOOLS': 1, 'LOOPING PYTHON': 1, 'MODULE IMPLEMENTS': 1, 'IMPLEMENTS A': 1, 'OF ITERATOR': 1, 'ITERATOR BUILDING': 1, 'BUILDING BLOCKS': 1, 'BLOCKS INSPIRED': 1, 'BY CONSTRUCTS': 1, 'CONSTRUCTS FROM': 1, 'FROM APL': 1, 'APL HASKELL': 1, 'AND SML': 1, 'FOR UNIX/C': 1, 'UNIX/C PROGRAMMERS': 1, 'PROCEEDINGS OF': 1, 'THE NLUUG': 1, 'NLUUG NAJAARSCONFERENTIE': 1, 'NAJAARSCONFERENTIE DUTCH': 1, 'DUTCH UNIX': 1, 'UNIX USERS': 1, 'USERS GROUP': 1, 'EVEN THOUGH': 1, 'THOUGH THE': 1, 'DESIGN OF': 1, 'OF IS': 1, 'IS FAR': 1, 'FAR FROM': 1, 'FROM IDEAL': 1, 'IDEAL ITS': 1, 'ITS INFLUENCE': 1, 'INFLUENCE ON': 1, 'IS CONSIDERABLE': 1, 'A CLASSES': 1, 'CLASS MECHANISMS': 1, 'MECHANISMS FOUND': 1, 'AND MODULA': 1, 'MODULA LUNDH': 1, 'LUNDH FREDRIK': 1, 'CALL BY': 1, 'BY OBJECT': 1, 'REPLACE CLU': 1, 'CLU WITH': 1, 'PYTHON RECORD': 1, 'RECORD WITH': 1, 'WITH INSTANCE': 1, 'INSTANCE AND': 1, 'AND PROCEDURE': 1, 'PROCEDURE WITH': 1, 'WITH FUNCTION': 1, 'AND YOU': 1, 'YOU GET': 1, 'GET A': 1, 'PRETTY ACCURATE': 1, 'ACCURATE DESCRIPTION': 1, 'DESCRIPTION OF': 1, \"PYTHON'S OBJECT\": 1, 'SIMIONATO MICHELE': 1, 'METHOD RESOLUTION': 1, 'RESOLUTION ORDER': 1, 'THE METHOD': 1, 'METHOD ITSELF': 1, 'ITSELF HAS': 1, 'HAS NOTHING': 1, 'NOTHING TO': 1, 'DO WITH': 1, 'PYTHON SINCE': 1, 'SINCE IT': 1, 'WAS INVENTED': 1, 'INVENTED BY': 1, 'BY PEOPLE': 1, 'PEOPLE WORKING': 1, 'ON DYLAN': 1, 'DYLAN AND': 1, 'IS DESCRIBED': 1, 'DESCRIBED IN': 1, 'A PAPER': 1, 'PAPER INTENDED': 1, 'INTENDED FOR': 1, 'FOR LISPERS': 1, 'LISPERS KUCHLING': 1, 'PROGRAMMING HOWTO': 1, 'COMPREHENSIONS AND': 1, 'ARE A': 1, 'A CONCISE': 1, 'CONCISE NOTATION': 1, 'NOTATION FOR': 1, 'FOR SUCH': 1, 'SUCH OPERATIONS': 1, 'OPERATIONS BORROWED': 1, 'THE FUNCTIONAL': 1, 'LANGUAGE HASKELL': 1, 'SCHEMENAUER NEIL': 1, 'NEIL PETERS': 1, 'TIM HETLAND': 1, 'HETLAND MAGNUS': 1, 'MAGNUS LIE': 1, 'LIE MAY': 1, 'PEP SIMPLE': 1, 'SIMPLE GENERATORS': 1, 'MORE CONTROL': 1, 'FLOW TOOLS': 1, 'BY POPULAR': 1, 'POPULAR DEMAND': 1, 'DEMAND A': 1, 'FEW FEATURES': 1, 'FEATURES COMMONLY': 1, 'COMMONLY FOUND': 1, 'IN FUNCTIONAL': 1, 'LANGUAGES LIKE': 1, 'LIKE LISP': 1, 'LISP HAVE': 1, 'BEEN ADDED': 1, 'ADDED TO': 1, 'THE LAMBDA': 1, 'LAMBDA KEYWORD': 1, 'KEYWORD SMALL': 1, 'SMALL ANONYMOUS': 1, 'FUNCTIONS CAN': 1, 'BE CREATED': 1, 'RE REGULAR': 1, 'EXPRESSION OPERATIONS': 1, 'PROVIDES REGULAR': 1, 'EXPRESSION MATCHING': 1, 'MATCHING OPERATIONS': 1, 'OPERATIONS SIMILAR': 1, 'TO THOSE': 1, 'THOSE FOUND': 1, 'IN PERL': 1, 'THE GENIE': 1, 'GENIE PROGRAMMING': 1, 'LANGUAGE TUTORIAL': 1, 'PYTHON INFLUENCES': 1, 'INFLUENCES IN': 1, 'IN JAVASCRIPT': 1, 'RAUSCHMAYER AXEL': 1, 'CHAPTER THE': 1, 'THE NATURE': 1, 'OF JAVASCRIPT': 1, 'JAVASCRIPT INFLUENCES': 1, \"O'REILLY SPEAKING\": 1, 'SPEAKING JAVASCRIPT': 1, 'WHY WE': 1, 'CREATED JULIA': 1, 'JULIA WEBSITE': 1, 'WE WANT': 1, 'WANT SOMETHING': 1, 'RING TEAM': 1, 'TEAM DECEMBER': 1, 'RING AND': 1, 'BINI OLA': 1, 'PRACTICAL JRUBY': 1, 'JRUBY ON': 1, 'RAILS WEB': 1, 'PROJECTS BRINGING': 1, 'BRINGING RUBY': 1, 'RUBY ON': 1, 'RAILS TO': 1, 'BERKELEY APRESS': 1, 'SWIFT LANGUAGE': 1, 'THE PRODUCT': 1, 'PRODUCT OF': 1, 'OF TIRELESS': 1, 'TIRELESS EFFORT': 1, 'EFFORT FROM': 1, 'A TEAM': 1, 'TEAM OF': 1, 'OF LANGUAGE': 1, 'LANGUAGE EXPERTS': 1, 'EXPERTS DOCUMENTATION': 1, 'DOCUMENTATION GURUS': 1, 'GURUS COMPILER': 1, 'COMPILER OPTIMIZATION': 1, 'OPTIMIZATION NINJAS': 1, 'NINJAS AND': 1, 'AN INCREDIBLY': 1, 'INCREDIBLY IMPORTANT': 1, 'IMPORTANT INTERNAL': 1, 'INTERNAL DOGFOODING': 1, 'DOGFOODING GROUP': 1, 'GROUP WHO': 1, 'WHO PROVIDED': 1, 'PROVIDED FEEDBACK': 1, 'FEEDBACK TO': 1, 'TO HELP': 1, 'HELP REFINE': 1, 'REFINE AND': 1, 'AND BATTLE-TEST': 1, 'BATTLE-TEST IDEAS': 1, 'OF COURSE': 1, 'COURSE IT': 1, 'ALSO GREATLY': 1, 'GREATLY BENEFITED': 1, 'BENEFITED FROM': 1, 'THE EXPERIENCES': 1, 'EXPERIENCES HARD-WON': 1, 'HARD-WON BY': 1, 'BY MANY': 1, 'THE FIELD': 1, 'FIELD DRAWING': 1, 'KUHLMAN DAVE': 1, 'BOOK BEGINNING': 1, 'BEGINNING PYTHON': 1, 'ADVANCED PYTHON': 1, 'PYTHON EXERCISES': 1, 'APRIL SECOND': 1, 'SECOND SECTION': 1, 'SECTION FANS': 1, 'FANS OF': 1, 'PYTHON USE': 1, 'THE PHRASE': 1, 'PHRASE BATTERIES': 1, 'INCLUDED TO': 1, 'DESCRIBE THE': 1, 'LIBRARY WHICH': 1, 'WHICH COVERS': 1, 'COVERS EVERYTHING': 1, 'EVERYTHING FROM': 1, 'FROM ASYNCHRONOUS': 1, 'ASYNCHRONOUS PROCESSING': 1, 'PROCESSING TO': 1, 'TO ZIP': 1, 'ZIP FILES': 1, 'FILES PEP': 1, 'ADVANCED LIBRARY': 1, 'VAN JANUARY': 1, 'PETERSON BENJAMIN': 1, 'BENJAMIN APRIL': 1, 'OVERFLOW DEVELOPER': 1, 'DEVELOPER SURVEY': 1, 'OF DEVELOPER': 1, 'DEVELOPER ECOSYSTEM': 1, 'ECOSYSTEM IN': 1, 'IN INFOGRAPHIC': 1, 'JETBRAINS DEVELOPER': 1, 'TOOLS FOR': 1, 'FOR PROFESSIONALS': 1, 'PROFESSIONALS AND': 1, 'AND TEAMS': 1, 'A TIOBE': 1, 'INDEX IS': 1, 'IS AN': 1, 'AN INDICATOR': 1, 'INDICATOR OF': 1, 'THE POPULARITY': 1, 'LANGUAGES UPDATED': 1, 'UPDATED AS': 1, 'AS REQUIRED': 1, 'PYPL POPULARITY': 1, 'LANGUAGE INDEX': 1, 'A VENNERS': 1, 'VENNERS BILL': 1, 'BILL JANUARY': 1, 'THE MAKING': 1, 'MAKING OF': 1, 'ARTIMA DEVELOPER': 1, 'GUIDO AUGUST': 1, 'SETL WAS': 1, 'WAS LUKEWARM': 1, 'LUKEWARM ABOUT': 1, 'ABOUT RANGE': 1, 'RANGE LITERALS': 1, 'PYTHON-DEV MAILING': 1, 'GUIDO JANUARY': 1, 'FAIRCHILD CARLIE': 1, 'CARLIE JULY': 1, 'ROSSUM STEPPING': 1, 'STEPPING DOWN': 1, 'DOWN FROM': 1, 'FROM ROLE': 1, 'ROLE AS': 1, 'LINUX JOURNAL': 1, 'LANGUAGE GOVERNANCE': 1, 'MOSHE OCTOBER': 1, 'TO AUTOMATED': 1, 'AUTOMATED PYTHON': 1, 'TO CODE': 1, 'CODE TRANSLATION': 1, 'PEP NETWORK': 1, 'NETWORK SECURITY': 1, 'SECURITY ENHANCEMENTS': 1, 'ENHANCEMENTS FOR': 1, 'SUNSETTING PYTHON': 1, 'UKASZ FEBRUARY': 1, 'HAT CUSTOMER': 1, 'CUSTOMER PORTAL': 1, 'PORTAL ACCESS': 1, 'TO SUPPORT': 1, 'SUPPORT AND': 1, 'AND KNOWLEDGE': 1, 'AVAILABLE OUT': 1, 'OF SCHEDULE': 1, 'AVAILABLE WITH': 1, 'WITH SECURITY': 1, 'SECURITY CONTENT': 1, 'UKASZ MAY': 1, 'IS NOW': 1, 'PYTHON RELEASES': 1, 'CORBET OCTOBER': 1, 'RELEASED LWN.NET': 1, 'THE CAIN': 1, 'CAIN GANG': 1, 'GANG LTD': 1, 'PYTHON METACLASSES': 1, 'METACLASSES WHO': 1, 'WHO WHY': 1, 'WHY WHEN': 1, 'WHEN PDF': 1, 'SPECIAL METHOD': 1, 'METHOD NAMES': 1, 'PYDBC METHOD': 1, 'METHOD PRECONDITIONS': 1, 'PRECONDITIONS METHOD': 1, 'METHOD POSTCONDITIONS': 1, 'POSTCONDITIONS AND': 1, 'AND CLASS': 1, 'CLASS INVARIANTS': 1, 'INVARIANTS FOR': 1, 'CONTRACTS FOR': 1, 'EXTENDING AND': 1, 'AND EMBEDDING': 1, 'EMBEDDING THE': 1, 'INTERPRETER REFERENCE': 1, 'REFERENCE COUNTS': 1, 'MAKES HEAVY': 1, 'HEAVY USE': 1, 'OF MALLOC': 1, 'MALLOC AND': 1, 'AND FREE': 1, 'FREE IT': 1, 'IT NEEDS': 1, 'NEEDS A': 1, 'A STRATEGY': 1, 'STRATEGY TO': 1, 'AVOID MEMORY': 1, 'MEMORY LEAKS': 1, 'LEAKS AS': 1, 'OF FREED': 1, 'FREED MEMORY': 1, 'THE CHOSEN': 1, 'CHOSEN METHOD': 1, 'METHOD IS': 1, 'CALLED REFERENCE': 1, 'A HETTINGER': 1, 'RAYMOND JANUARY': 1, 'PEP GENERATOR': 1, 'A PETERS': 1, 'TIM AUGUST': 1, 'MARTELLI ALEX': 1, 'ALEX RAVENSCROFT': 1, 'RAVENSCROFT ANNA': 1, 'ANNA ASCHER': 1, 'ASCHER DAVID': 1, 'PYTHON COOKBOOK': 1, 'COOKBOOK ND': 1, 'ND EDITION': 1, 'IS IT': 1, 'IT CALLED': 1, 'CALLED PYTHON': 1, 'WAYS PYTHON': 1, 'A POWERFUL': 1, 'POWERFUL FORCE': 1, 'FORCE ON': 1, 'PPRINT DATA': 1, 'DATA PRETTY': 1, 'PRINTER PYTHON': 1, 'STUFF SPAM': 1, 'EGGS LUMBERJACK': 1, 'LUMBERJACK KNIGHTS': 1, 'KNIGHTS NI': 1, 'NI CLARK': 1, 'CLARK ROBERT': 1, 'ROBERT APRIL': 1, 'BE PYTHONIC': 1, 'PYTHONIC AND': 1, 'AND WHY': 1, 'WHY YOU': 1, 'YOU SHOULD': 1, 'SHOULD CARE': 1, 'CODE STYLE': 1, 'STYLE THE': 1, \"THE HITCHHIKER'S\": 1, \"HITCHHIKER'S GUIDE\": 1, 'GUIDE TO': 1, 'A GOOD': 1, 'GOOD LANGUAGE': 1, 'FOR BEGINNING': 1, 'BEGINNING PROGRAMMERS': 1, 'MYTHS ABOUT': 1, 'ABOUT INDENTATION': 1, 'INDENTATION IN': 1, 'GUTTAG JOHN': 1, 'TO COMPUTATION': 1, 'COMPUTATION AND': 1, 'AND PROGRAMMING': 1, 'PROGRAMMING USING': 1, 'WITH APPLICATION': 1, 'APPLICATION TO': 1, 'TO UNDERSTANDING': 1, 'UNDERSTANDING DATA': 1, 'MIT PRESS': 1, 'ERRORS AND': 1, 'AND EXCEPTIONS': 1, 'EXCEPTIONS PYTHON': 1, 'A DOCUMENTATION': 1, 'HIGHLIGHTS PYTHON': 1, 'TAIL RECURSION': 1, 'RECURSION ELIMINATION': 1, 'GUIDO FEBRUARY': 1, 'DESIGN IS': 1, 'NOT JUST': 1, 'JUST SOLVING': 1, 'SOLVING PUZZLES': 1, 'ARTIMA FORUMS': 1, 'GUIDO EBY': 1, 'PEP COROUTINES': 1, 'COROUTINES VIA': 1, 'VIA ENHANCED': 1, 'ENHANCED GENERATORS': 1, 'RELEASE AND': 1, 'AND CHANGELOG': 1, 'GUIDO HETTINGER': 1, 'RAYMOND FEBRUARY': 1, 'PEP CONDITIONAL': 1, 'TYPES PYTHON': 1, 'TUPLES AND': 1, 'AND SEQUENCES': 1, 'SEQUENCES PYTHON': 1, 'PEP LITERAL': 1, 'LITERAL STRING': 1, 'WHY MUST': 1, 'MUST SELF': 1, 'SELF BE': 1, 'USED EXPLICITLY': 1, 'EXPLICITLY IN': 1, 'IN METHOD': 1, 'METHOD DEFINITIONS': 1, 'DEFINITIONS AND': 1, 'AND CALLS': 1, 'AND HISTORY': 1, 'HISTORY FAQ': 1, 'SWEIGART AL': 1, 'BEYOND THE': 1, 'BASIC STUFF': 1, 'STUFF WITH': 1, 'PYTHON BEST': 1, 'BEST PRACTICES': 1, 'PRACTICES FOR': 1, 'WRITING CLEAN': 1, 'CLEAN CODE': 1, 'NO STARCH': 1, 'STARCH PRESS': 1, 'REFERENCE SECTION': 1, 'NEW-STYLE AND': 1, 'AND CLASSIC': 1, 'CLASSIC CLASSES': 1, 'CLASSES FOR': 1, 'FOR RELEASE': 1, 'TYPE HINTING': 1, 'HINTING FOR': 1, 'MYPY OPTIONAL': 1, 'STATIC TYPING': 1, 'TYPING FOR': 1, 'ARITHMETIC ISSUES': 1, 'AND LIMITATIONS': 1, 'LIMITATIONS PYTHON': 1, 'ALL MACHINES': 1, 'MACHINES TODAY': 1, 'TODAY NOVEMBER': 1, 'NOVEMBER USE': 1, 'USE IEEE': 1, 'IEEE FLOATING': 1, 'ARITHMETIC AND': 1, 'AND ALMOST': 1, 'ALL PLATFORMS': 1, 'PLATFORMS MAP': 1, 'MAP PYTHON': 1, 'PYTHON FLOATS': 1, 'FLOATS TO': 1, 'TO IEEE': 1, 'IEEE DOUBLE': 1, 'DOUBLE PRECISION': 1, 'PEP UNIFYING': 1, 'UNIFYING LONG': 1, 'LONG INTEGERS': 1, 'AND INTEGERS': 1, 'A ZADKA': 1, 'PEP CHANGING': 1, \"WHY PYTHON'S\": 1, \"PYTHON'S INTEGER\": 1, 'DIVISION FLOORS': 1, 'AUGUST ROUND': 1, 'AUGUST BEAZLEY': 1, 'BEAZLEY DAVID': 1, 'PYTHON ESSENTIAL': 1, 'ESSENTIAL REFERENCE': 1, 'REFERENCE THED': 1, 'KERNIGHAN BRIAN': 1, 'BRIAN RITCHIE': 1, 'RITCHIE DENNIS': 1, 'LANGUAGE NDED': 1, 'REASONS PYTHON': 1, 'PYTHON ROCKS': 1, 'ROCKS FOR': 1, 'FOR RESEARCH': 1, 'RESEARCH AND': 1, 'FEW REASONS': 1, 'REASONS IT': 1, \"IT DOESN'T\": 1, \"DOESN'T HOYT\": 1, 'HOYT KOEPKE': 1, 'SHELL SCOTT': 1, 'SCOTT JUNE': 1, 'COMPUTING PDF': 1, 'PIOTROWSKI PRZEMYSLAW': 1, 'PRZEMYSLAW JULY': 1, 'BUILD A': 1, 'A RAPID': 1, 'RAPID WEB': 1, 'WEB DEVELOPMENT': 1, 'ENVIRONMENT FOR': 1, 'PYTHON SERVER': 1, 'SERVER PAGES': 1, 'PAGES AND': 1, 'AND ORACLE': 1, 'ORACLE TECHNOLOGY': 1, 'TECHNOLOGY NETWORK': 1, 'FACUNDO OCTOBER': 1, 'PYTHON WEB': 1, 'ENTHOUGHT CANOPY': 1, 'CODE PEPS.PYTHON.ORG': 1, 'MAILMAN WHY': 1, \"WHY AREN'T\": 1, \"AREN'T WE\": 1, 'WE ALLOWING': 1, 'OF PYTHON-DEV': 1, 'PYTHON-DEV PYTHON.ORG': 1, 'ISSUE INTEL': 1, 'INTEL COMPILER': 1, 'COMPILER ICC': 1, 'ICC DOES': 1, 'NOT FULLY': 1, 'FULLY SUPPORT': 1, 'SUPPORT FEATURES': 1, 'INCLUDING ATOMICS': 1, 'ATOMICS PYTHON': 1, 'PYTHON TRACKER': 1, 'BUILDING AND': 1, 'AND EXTENSIONS': 1, 'EXTENSIONS PYTHON': 1, 'GUIDO JUNE': 1, 'CPYTHON BYTE': 1, 'BYTE CODE': 1, 'INTERNALS PDF': 1, 'CHANGELOG PYTHON': 1, 'HISTORY VMSPYTHON': 1, 'FOR OTHER': 1, 'OTHER PLATFORMS': 1, 'PYPY COMPATIBILITY': 1, 'TEAM THE': 1, 'PYPY DECEMBER': 1, 'DOWNLOAD AND': 1, 'AND INSTALL': 1, 'SPEED COMPARISON': 1, 'COMPARISON BETWEEN': 1, 'BETWEEN CPYTHON': 1, 'APPLICATION-LEVEL STACKLESS': 1, 'STACKLESS FEATURES': 1, 'FEATURES PYPY': 1, 'LEGO EDUCATION': 1, 'SERDAR OCTOBER': 1, 'PYSTON RETURNS': 1, 'RETURNS FROM': 1, 'THE DEAD': 1, 'DEAD TO': 1, 'SPEED PYTHON': 1, \"CINDER INSTAGRAM'S\": 1, \"INSTAGRAM'S PERFORMANCE-ORIENTED\": 1, 'PLANS FOR': 1, 'FOR OPTIMIZING': 1, 'OPTIMIZING PYTHON': 1, 'GOOGLE PROJECT': 1, 'PROJECT HOSTING': 1, 'PYTHON ON': 1, 'STOCHASTIC GEOMETRY': 1, 'TRANSCRYPT PYTHON': 1, 'THE BROWSER': 1, 'TRANSCRYPT ANATOMY': 1, 'ANATOMY OF': 1, 'JAVASCRIPT COMPILER': 1, 'HOME NUITKA': 1, 'BORDERIES OLIVIER': 1, 'OLIVIER JANUARY': 1, 'PYTHRAN PYTHON': 1, 'AT SPEED': 1, 'PYTHRAN PYTHRAN': 1, 'GUELTON SERGE': 1, 'SERGE BRUNET': 1, 'BRUNET PIERRICK': 1, 'PIERRICK AMINI': 1, 'AMINI MEHDI': 1, 'MEHDI MERLINI': 1, 'MERLINI ADRIEN': 1, 'ADRIEN CORBILLON': 1, 'CORBILLON XAVIER': 1, 'XAVIER RAYNAUD': 1, 'RAYNAUD ALAN': 1, 'ALAN MARCH': 1, 'PYTHRAN ENABLING': 1, 'ENABLING STATIC': 1, 'STATIC OPTIMIZATION': 1, 'OPTIMIZATION OF': 1, 'OF SCIENTIFIC': 1, 'SCIENTIFIC PYTHON': 1, 'COMPUTATIONAL SCIENCE': 1, 'SCIENCE DISCOVERY': 1, 'IOP PUBLISHING': 1, 'BIBCODE CS&D': 1, 'TRANSPILER GOOGLE/GRUMPY': 1, 'MARCH VIA': 1, 'VIA GITHUB': 1, 'FRANCISCO THOMAS': 1, 'THOMAS CLABURN': 1, 'CLABURN IN': 1, 'IN SAN': 1, 'GRUMPY CODE': 1, 'CODE MAKES': 1, 'MAKES PYTHON': 1, 'PYTHON GO': 1, 'GITHUB IRONLANGUAGES/IRONPYTHON': 1, 'IRONLANGUAGES/IRONPYTHON IMPLEMENTATION': 1, 'FOR NET': 1, 'NET FRAMEWORK': 1, 'FRAMEWORK THAT': 1, 'IS BUILT': 1, 'BUILT ON': 1, 'ON TOP': 1, 'TOP OF': 1, 'THE DYNAMIC': 1, 'JYTHON FAQ': 1, 'MURRI RICCARDO': 1, 'PERFORMANCE OF': 1, 'PYTHON RUNTIMES': 1, 'RUNTIMES ON': 1, 'A NON-NUMERIC': 1, 'NON-NUMERIC SCIENTIFIC': 1, 'SCIENTIFIC CODE': 1, 'EUROPEAN CONFERENCE': 1, 'SCIENCE EUROSCIPY': 1, 'BIBCODE ARXIV': 1, 'A WARSAW': 1, 'WARSAW BARRY': 1, 'BARRY HYLTON': 1, 'HYLTON JEREMY': 1, 'JEREMY GOODGER': 1, 'GOODGER DAVID': 1, 'DAVID JUNE': 1, 'PEP PEP': 1, 'PEP PURPOSE': 1, 'CANNON BRETT': 1, 'GUIDO SOME': 1, 'SOME GUYS': 1, 'GUYS AND': 1, 'A MAILING': 1, 'LIST HOW': 1, 'HOW PYTHON': 1, 'IS DEVELOPED': 1, \"MOVING PYTHON'S\": 1, \"PYTHON'S BUGS\": 1, 'BUGS TO': 1, 'GITHUB LWN.NET': 1, 'GUIDE PYTHON': 1, 'HUGHES OWEN': 1, 'OWEN MAY': 1, 'LANGUAGES WHY': 1, 'WHY PYTHON': 1, 'MIGHT NEVER': 1, 'NEVER ARRIVE': 1, 'ARRIVE ACCORDING': 1, 'ITS CREATOR': 1, 'PEP ANNUAL': 1, 'ANNUAL RELEASE': 1, 'RELEASE CYCLE': 1, 'CYCLE FOR': 1, 'PYTHON RELEASE': 1, 'RELEASE CADENCE': 1, 'CADENCE LWN.NET': 1, 'NORWITZ NEAL': 1, 'NEAL APRIL': 1, 'PYTHON-DEV RELEASE': 1, 'RELEASE SCHEDULES': 1, 'SCHEDULES WAS': 1, 'WAS STABILITY': 1, 'STABILITY CHANGE': 1, 'A AAHZ': 1, 'AAHZ BAXTER': 1, 'BAXTER ANTHONY': 1, 'ANTHONY MARCH': 1, 'PEP BUG': 1, 'BUG FIX': 1, 'FIX RELEASES': 1, 'PYTHON BUILDBOT': 1, 'EXTENDING PYTHON': 1, 'OR PYTHON': 1, 'PEP REMOVE': 1, 'REMOVE WSTR': 1, 'WSTR FROM': 1, 'FROM UNICODE': 1, 'PEP STRUCTURAL': 1, 'STRUCTURAL PATTERN': 1, 'MATCHING SPECIFICATION': 1, 'DOCUMENTATION TOOLS': 1, 'A WHETTING': 1, 'WHETTING YOUR': 1, 'YOUR APPETITE': 1, 'PYTHON SHOULD': 1, 'SHOULD I': 1, 'I USE': 1, 'USE ELSE': 1, 'ELSE AFTER': 1, 'AFTER A': 1, 'A RETURN': 1, 'RETURN IN': 1, 'AN IF': 1, 'IF BLOCK': 1, 'STACK EXCHANGE': 1, 'PYTHON POWERFUL': 1, 'POWERFUL OBJECT-ORIENTED': 1, 'MEDIA INC': 1, 'FEHILY CHRIS': 1, 'PEACHPIT PRESS': 1, 'BLAKE TROY': 1, 'TROY JANUARY': 1, 'INDEX FOR': 1, 'FOR JANUARY': 1, 'TECHNOLOGY NEWS': 1, 'NEWS AND': 1, 'AND INFORMATION': 1, 'INFORMATION BY': 1, 'BY SENIORDBA': 1, 'PRECHELT LUTZ': 1, 'LUTZ MARCH': 1, 'EMPIRICAL COMPARISON': 1, 'OF JAVA': 1, 'JAVA PERL': 1, 'PERL PYTHON': 1, 'PYTHON REXX': 1, 'REXX AND': 1, 'AND TCL': 1, 'TCL PDF': 1, 'QUOTES ABOUT': 1, 'ORGANIZATIONS USING': 1, 'PYTHON THE': 1, 'THE HOLY': 1, 'HOLY GRAIL': 1, 'GRAIL OF': 1, 'CERN BULLETIN': 1, 'CERN PUBLICATIONS': 1, 'SHAFER DANIEL': 1, 'PYTHON STREAMLINES': 1, 'STREAMLINES SPACE': 1, 'SPACE SHUTTLE': 1, 'SHUTTLE MISSION': 1, 'MISSION DESIGN': 1, \"TORNADO FACEBOOK'S\": 1, \"FACEBOOK'S REAL-TIME\": 1, 'REAL-TIME WEB': 1, 'WEB FRAMEWORK': 1, 'FRAMEWORK FOR': 1, 'PYTHON FACEBOOK': 1, 'WHAT POWERS': 1, 'POWERS INSTAGRAM': 1, 'INSTAGRAM HUNDREDS': 1, 'HUNDREDS OF': 1, 'OF INSTANCES': 1, 'INSTANCES DOZENS': 1, 'DOZENS OF': 1, 'OF TECHNOLOGIES': 1, 'INSTAGRAM ENGINEERING': 1, 'HOW WE': 1, 'WE USE': 1, 'AT SPOTIFY': 1, 'SPOTIFY LABS': 1, 'FORTENBERRY TIM': 1, 'TIM JANUARY': 1, 'INDUSTRIAL LIGHT': 1, 'LIGHT MAGIC': 1, 'MAGIC RUNS': 1, 'RUNS ON': 1, 'TAFT DARRYL': 1, 'PYTHON SLITHERS': 1, 'SLITHERS INTO': 1, 'INTO SYSTEMS': 1, 'ZIFF DAVIS': 1, 'DAVIS HOLDINGS': 1, 'GITHUB REDDIT-ARCHIVE/REDDIT': 1, 'REDDIT-ARCHIVE/REDDIT HISTORICAL': 1, 'HISTORICAL CODE': 1, 'CODE FROM': 1, 'FROM REDDIT.COM': 1, 'REDDIT.COM THE': 1, 'THE REDDIT': 1, 'REDDIT ARCHIVES': 1, 'ARCHIVES ARCHIVED': 1, 'MARCH USAGE': 1, 'USAGE STATISTICS': 1, 'STATISTICS AND': 1, 'AND MARKET': 1, 'MARKET SHARE': 1, 'SHARE OF': 1, 'FOR WEBSITES': 1, 'OLIPHANT TRAVIS': 1, 'JARROD AIVAZIS': 1, 'AIVAZIS MICHAEL': 1, 'FOR SCIENTISTS': 1, 'SCIENTISTS AND': 1, 'AND ENGINEERS': 1, 'EDUCATION WITH': 1, 'WITH SAGEMATH': 1, 'SAGEMATH INNOVATIVE': 1, 'INNOVATIVE COMPUTING': 1, 'EDUCATION ARCHIVED': 1, 'APRIL OPENCV': 1, 'OPENCV OPENCV-PYTHON': 1, 'OPENCV-PYTHON TUTORIALS': 1, 'DEAN JEFF': 1, 'JEFF MONGA': 1, 'MONGA RAJAT': 1, 'RAJAT ETAL': 1, 'TENSORFLOW LARGE-SCALE': 1, 'LARGE-SCALE MACHINE': 1, 'LEARNING ON': 1, 'ON HETEROGENEOUS': 1, 'HETEROGENEOUS SYSTEMS': 1, 'SYSTEMS PDF': 1, 'GOOGLE RESEARCH': 1, 'PIATETSKY GREGORY': 1, 'PYTHON EATS': 1, 'EATS AWAY': 1, 'AWAY AT': 1, 'AT TOP': 1, 'TOP SOFTWARE': 1, 'FOR ANALYTICS': 1, 'ANALYTICS DATA': 1, 'DATA SCIENCE': 1, 'SCIENCE MACHINE': 1, 'LEARNING IN': 1, 'IN TRENDS': 1, 'TRENDS AND': 1, 'AND ANALYSIS': 1, 'WHO IS': 1, 'IS USING': 1, 'USING SCIKIT-LEARN': 1, 'SCIKIT-LEARN SCIKIT-LEARN': 1, 'JOUPPI NORM': 1, 'GOOGLE SUPERCHARGES': 1, 'SUPERCHARGES MACHINE': 1, 'LEARNING TASKS': 1, 'TASKS WITH': 1, 'WITH TPU': 1, 'TPU CUSTOM': 1, 'CUSTOM CHIP': 1, 'GOOGLE CLOUD': 1, 'CLOUD PLATFORM': 1, 'PLATFORM BLOG': 1, 'LANGUAGE TOOLKIT': 1, 'TOOLKIT NLTK': 1, 'INSTALLERS FOR': 1, 'FOR GIMP': 1, 'GIMP FOR': 1, 'FOR WINDOWS': 1, 'WINDOWS FREQUENTLY': 1, 'JASC PSP': 1, 'PSP COMPONENTS': 1, 'ABOUT GETTING': 1, 'GETTING STARTED': 1, 'STARTED WITH': 1, 'WITH WRITING': 1, 'WRITING GEOPROCESSING': 1, 'GEOPROCESSING SCRIPTS': 1, 'ARCGIS DESKTOP': 1, 'DESKTOP HELP': 1, 'ENVIRONMENTAL SYSTEMS': 1, 'RESEARCH INSTITUTE': 1, 'CCP PORKBELLY': 1, 'PORKBELLY AUGUST': 1, 'EVE COMMUNITY': 1, 'COMMUNITY DEV': 1, 'DEV BLOGS': 1, 'CCP GAMES': 1, 'AS YOU': 1, 'YOU MAY': 1, 'MAY KNOW': 1, 'KNOW EVE': 1, 'EVE HAS': 1, 'HAS AT': 1, 'AT ITS': 1, 'CORE THE': 1, 'LANGUAGE KNOWN': 1, 'KNOWN AS': 1, 'AS STACKLESS': 1, 'CAUDILL BARRY': 1, 'BARRY SEPTEMBER': 1, 'MODDING SID': 1, 'IV DEVELOPER': 1, 'DEVELOPER BLOG': 1, 'FIRAXIS GAMES': 1, 'CREATED THREE': 1, 'THREE LEVELS': 1, 'LEVELS OF': 1, 'OF TOOLS': 1, 'NEXT LEVEL': 1, 'LEVEL OFFERS': 1, 'OFFERS PYTHON': 1, 'AND XML': 1, 'XML SUPPORT': 1, 'SUPPORT LETTING': 1, 'LETTING MODDERS': 1, 'MODDERS WITH': 1, 'WITH MORE': 1, 'MORE EXPERIENCE': 1, 'EXPERIENCE MANIPULATE': 1, 'MANIPULATE THE': 1, 'THE GAME': 1, 'GAME WORLD': 1, 'WORLD AND': 1, 'AND EVERYTHING': 1, 'EVERYTHING IN': 1, 'IN IT': 1, 'LANGUAGE GUIDE': 1, 'GOOGLE DOCUMENTS': 1, 'DOCUMENTS LIST': 1, 'LIST DATA': 1, 'DATA API': 1, 'PYTHON SETUP': 1, 'SETUP AND': 1, 'AND USAGE': 1, 'IMMUNITY KNOWING': 1, \"KNOWING YOU'RE\": 1, \"YOU'RE SECURE\": 1, 'WHAT IS': 1, 'IS SUGAR': 1, 'AND FIXES': 1, 'DOCUMENT FOUNDATION': 1, 'GOTCHAS FOR': 1, 'PYTHON USERS': 1, 'CODEHAUS FOUNDATION': 1, 'ESTERBROOK CHARLES': 1, 'COBRA LANGUAGE': 1, 'PROPOSALS ITERATORS': 1, 'GENERATORS ES': 1, 'ES WIKI': 1, 'GODOT ENGINE': 1, 'ENGINE DOCUMENTATION': 1, 'KINCAID JASON': 1, 'JASON NOVEMBER': 1, \"GOOGLE'S GO\": 1, 'GO A': 1, 'NEW PROGRAMMING': 1, \"LANGUAGE THAT'S\": 1, \"THAT'S PYTHON\": 1, 'PYTHON MEETS': 1, 'STRACHAN JAMES': 1, 'JAMES AUGUST': 1, 'GROOVY THE': 1, 'THE BIRTH': 1, 'BIRTH OF': 1, 'NEW DYNAMIC': 1, 'SERDAR JANUARY': 1, 'NIM LANGUAGE': 1, 'LANGUAGE DRAWS': 1, 'DRAWS FROM': 1, 'FROM BEST': 1, 'BEST OF': 1, 'PYTHON RUST': 1, 'RUST GO': 1, 'GO AND': 1, 'AND LISP': 1, \"NIM'S SYNTAX\": 1, 'SYNTAX IS': 1, 'STRONGLY REMINISCENT': 1, 'REMINISCENT OF': 1, \"PYTHON'S AS\": 1, 'AS IT': 1, 'USES INDENTED': 1, 'INDENTED CODE': 1, 'CODE BLOCKS': 1, 'SOME OF': 1, 'SYNTAX SUCH': 1, 'THE WAY': 1, 'WAY IF/ELIF/THEN/ELSE': 1, 'IF/ELIF/THEN/ELSE BLOCKS': 1, 'BLOCKS ARE': 1, 'THE CREATOR': 1, 'CREATOR OF': 1, 'OF RUBY': 1, 'I STARTED': 1, 'STARTED WORK': 1, 'WORK ON': 1, 'JULY OF': 1, 'I IMPLEMENTED': 1, 'IMPLEMENTED MUCH': 1, 'MUCH OF': 1, 'BASIC LANGUAGE': 1, 'LANGUAGE STRUCTURE': 1, 'STRUCTURE WITH': 1, 'WITH ONLY': 1, 'FEW PEOPLE': 1, 'PEOPLE KNOWING': 1, 'KNOWING OF': 1, 'ITS EXISTENCE': 1, 'FEW OTHER': 1, 'OTHER AMAZING': 1, 'AMAZING PEOPLE': 1, 'PEOPLE STARTED': 1, 'STARTED CONTRIBUTING': 1, 'CONTRIBUTING IN': 1, 'IN EARNEST': 1, 'EARNEST LATE': 1, 'LATE IN': 1, 'IT BECAME': 1, 'BECAME A': 1, 'MAJOR FOCUS': 1, 'FOCUS FOR': 1, 'THE APPLE': 1, 'APPLE DEVELOPER': 1, 'TOOLS GROUP': 1, 'GROUP IN': 1, 'KUPRIES ANDREAS': 1, 'ANDREAS FELLOWS': 1, 'FELLOWS DONAL': 1, 'TIP TIP': 1, 'TIP FORMAT': 1, 'TCL DEVELOPER': 1, 'DEVELOPER XCHANGE': 1, 'GUSTAFSSON PER': 1, 'PER NISKANEN': 1, 'NISKANEN RAIMO': 1, 'RAIMO JANUARY': 1, 'EEP EEP': 1, 'EEP PURPOSE': 1, 'SWIFT EVOLUTION': 1, 'EVOLUTION PROCESS': 1, 'LANGUAGE EVOLUTION': 1, 'EVOLUTION REPOSITORY': 1, 'REPOSITORY ON': 1, 'ON GITHUB': 1, 'SOURCES PYTHON': 1, 'FOR ARTIFICIAL': 1, 'PAINE JOCELYN': 1, 'JOCELYN ED': 1, 'AI IN': 1, 'AI EXPERT': 1, 'EXPERT NEWSLETTER': 1, 'RUSSELL STUART': 1, 'NORVIG PETER': 1, 'INTELLIGENCE A': 1, 'A MODERN': 1, 'MODERN APPROACH': 1, 'APPROACH RDED': 1, 'UPPER SADDLE': 1, 'SADDLE RIVER': 1, 'RIVER NJ': 1, 'NJ PRENTICE': 1, 'PRENTICE HALL': 1, 'FURTHER READING': 1, 'READING DOWNEY': 1, 'DOWNEY ALLEN': 1, 'THINK PYTHON': 1, 'PYTHON HOW': 1, 'TO THINK': 1, 'THINK LIKE': 1, 'COMPUTER SCIENTIST': 1, 'SCIENTIST VERSION': 1, 'HAMILTON NAOMI': 1, 'NAOMI AUGUST': 1, 'THE A-Z': 1, 'A-Z OF': 1, 'PYTHON THED': 1, 'SUMMERFIELD MARK': 1, 'PYTHON NDED': 1, 'ADDISON-WESLEY PROFESSIONAL': 1, 'RAMALHO LUCIANO': 1, 'LUCIANO MAY': 1, 'FLUENT PYTHON': 1, 'PYTHON ND': 1, 'ND ED': 1, 'EXTERNAL LINKS': 1, 'LINKS PYTHON': 1, \"AT WIKIPEDIA'S\": 1, \"WIKIPEDIA'S SISTER\": 1, 'SISTER PROJECTS': 1, 'PROJECTS MEDIA': 1, 'MEDIA FROM': 1, 'FROM COMMONSQUOTATIONS': 1, 'COMMONSQUOTATIONS FROM': 1, 'FROM WIKIQUOTETEXTBOOKS': 1, 'WIKIQUOTETEXTBOOKS FROM': 1, 'FROM WIKIBOOKSRESOURCES': 1, 'WIKIBOOKSRESOURCES FROM': 1, 'FROM WIKIVERSITYDATA': 1, 'WIKIVERSITYDATA FROM': 1, 'FROM WIKIDATA': 1, 'WIKIDATA OFFICIAL': 1, 'OFFICIAL WEBSITE': 1, 'WEBSITE VTEPYTHONIMPLEMENTATIONS': 1, 'VTEPYTHONIMPLEMENTATIONS CIRCUITPYTHON': 1, 'CIRCUITPYTHON CLPYTHON': 1, 'CLPYTHON CPYTHON': 1, 'CPYTHON CYTHON': 1, 'CYTHON MICROPYTHON': 1, 'MICROPYTHON NUMBA': 1, 'NUMBA IRONPYTHON': 1, 'IRONPYTHON JYTHON': 1, 'JYTHON PSYCO': 1, 'PSYCO PYPY': 1, 'PYPY PYTHON': 1, 'FOR SHED': 1, 'SKIN STACKLESS': 1, 'PYTHON UNLADEN': 1, 'SWALLOW MORE': 1, 'IDE BOA': 1, 'BOA ERIC': 1, 'ERIC PYTHON': 1, 'PYTHON IDE': 1, 'IDE IDLE': 1, 'IDLE PYCHARM': 1, 'PYCHARM PYDEV': 1, 'PYDEV NINJA-IDE': 1, 'NINJA-IDE MORE': 1, 'TOPICS WSGI': 1, 'WSGI ASGI': 1, 'ASGI SOFTWARE': 1, 'SOFTWARE LIST': 1, 'LIST PYTHON': 1, 'FOUNDATION PYCON': 1, 'PYCON VTEPROGRAMMING': 1, 'VTEPROGRAMMING LANGUAGES': 1, 'COMPARISON TIMELINE': 1, 'TIMELINE HISTORY': 1, 'HISTORY ADA': 1, 'APL ASSEMBLY': 1, 'ASSEMBLY BASIC': 1, 'BASIC CLASSIC': 1, 'CLASSIC VISUAL': 1, 'BASIC COBOL': 1, 'COBOL ERLANG': 1, 'ERLANG FORTH': 1, 'FORTH FORTRAN': 1, 'FORTRAN GO': 1, 'GO HASKELL': 1, 'HASKELL JAVA': 1, 'JAVA JAVASCRIPT': 1, 'JAVASCRIPT KOTLIN': 1, 'KOTLIN LISP': 1, 'LISP LUA': 1, 'LUA MATLAB': 1, 'MATLAB ML': 1, 'ML OBJECT': 1, 'OBJECT PASCAL': 1, 'PASCAL PASCAL': 1, 'PASCAL PERL': 1, 'PERL PHP': 1, 'PHP PROLOG': 1, 'PROLOG PYTHON': 1, 'PYTHON RUBY': 1, 'RUBY RUST': 1, 'RUST SQL': 1, 'SQL SCRATCH': 1, 'SCRATCH SHELL': 1, 'SHELL SIMULA': 1, 'SIMULA SMALLTALK': 1, 'SMALLTALK SWIFT': 1, 'SWIFT VISUAL': 1, 'BASIC MORE': 1, 'LISTS ALPHABETICAL': 1, 'ALPHABETICAL CATEGORICAL': 1, 'CATEGORICAL GENERATIONAL': 1, 'GENERATIONAL NON-ENGLISH-BASED': 1, 'NON-ENGLISH-BASED CATEGORY': 1, 'CATEGORY VTEPYTHON': 1, 'VTEPYTHON WEB': 1, 'FRAMEWORKS BOTTLE': 1, 'BOTTLE CHERRYPY': 1, 'CHERRYPY CUBICWEB': 1, 'CUBICWEB DJANGO': 1, 'DJANGO FASTAPI': 1, 'FASTAPI FLASK': 1, 'FLASK GROK': 1, 'GROK NAGARE': 1, 'NAGARE NEVOW': 1, 'NEVOW PYLONS': 1, 'PYRAMID QUIXOTE': 1, 'QUIXOTE TACTIC': 1, 'TACTIC TORNADO': 1, 'TORNADO TURBOGEARS': 1, 'TURBOGEARS TWISTEDWEB': 1, 'TWISTEDWEB WEB': 1, 'PY ZOPE': 1, 'ZOPE MORE': 1, 'VTEDIFFERENTIABLE COMPUTINGGENERAL': 1, 'COMPUTINGGENERAL DIFFERENTIABLE': 1, 'DIFFERENTIABLE PROGRAMMING': 1, 'PROGRAMMING INFORMATION': 1, 'INFORMATION GEOMETRY': 1, 'GEOMETRY STATISTICAL': 1, 'STATISTICAL MANIFOLD': 1, 'MANIFOLD AUTOMATIC': 1, 'AUTOMATIC DIFFERENTIATION': 1, 'DIFFERENTIATION NEUROMORPHIC': 1, 'NEUROMORPHIC ENGINEERING': 1, 'ENGINEERING CABLE': 1, 'CABLE THEORY': 1, 'THEORY PATTERN': 1, 'PATTERN RECOGNITION': 1, 'RECOGNITION TENSOR': 1, 'TENSOR CALCULUS': 1, 'CALCULUS COMPUTATIONAL': 1, 'COMPUTATIONAL LEARNING': 1, 'LEARNING THEORY': 1, 'THEORY INDUCTIVE': 1, 'INDUCTIVE BIAS': 1, 'BIAS CONCEPTS': 1, 'CONCEPTS GRADIENT': 1, 'GRADIENT DESCENT': 1, 'DESCENT SGD': 1, 'SGD CLUSTERING': 1, 'CLUSTERING REGRESSION': 1, 'REGRESSION OVERFITTING': 1, 'OVERFITTING ADVERSARY': 1, 'ADVERSARY ATTENTION': 1, 'ATTENTION CONVOLUTION': 1, 'CONVOLUTION LOSS': 1, 'LOSS FUNCTIONS': 1, 'FUNCTIONS BACKPROPAGATION': 1, 'BACKPROPAGATION NORMALIZATION': 1, 'NORMALIZATION ACTIVATION': 1, 'ACTIVATION SOFTMAX': 1, 'SOFTMAX SIGMOID': 1, 'SIGMOID RECTIFIER': 1, 'RECTIFIER REGULARIZATION': 1, 'REGULARIZATION DATASETS': 1, 'DATASETS AUGMENTATION': 1, 'AUGMENTATION DIFFUSION': 1, 'DIFFUSION AUTOREGRESSION': 1, 'AUTOREGRESSION PROGRAMMING': 1, 'PYTHON JULIA': 1, 'JULIA SWIFT': 1, 'SWIFT APPLICATION': 1, 'APPLICATION MACHINE': 1, 'LEARNING ARTIFICIAL': 1, 'NETWORK DEEP': 1, 'DEEP LEARNING': 1, 'LEARNING SCIENTIFIC': 1, 'COMPUTING ARTIFICIAL': 1, 'INTELLIGENCE HARDWARE': 1, 'HARDWARE IPU': 1, 'IPU TPU': 1, 'TPU VPU': 1, 'VPU MEMRISTOR': 1, 'MEMRISTOR SPINNAKER': 1, 'SPINNAKER SOFTWARE': 1, 'SOFTWARE LIBRARY': 1, 'LIBRARY TENSORFLOW': 1, 'TENSORFLOW PYTORCH': 1, 'PYTORCH KERAS': 1, 'KERAS THEANO': 1, 'THEANO JAX': 1, 'JAX IMPLEMENTATIONAUDIOVISUAL': 1, 'IMPLEMENTATIONAUDIOVISUAL ALEXNET': 1, 'ALEXNET WAVENET': 1, 'WAVENET HUMAN': 1, 'HUMAN IMAGE': 1, 'IMAGE SYNTHESIS': 1, 'SYNTHESIS HWR': 1, 'HWR OCR': 1, 'OCR SPEECH': 1, 'SPEECH SYNTHESIS': 1, 'SYNTHESIS AI': 1, 'AI SPEECH': 1, 'SPEECH RECOGNITION': 1, 'RECOGNITION FACIAL': 1, 'FACIAL RECOGNITION': 1, 'RECOGNITION ALPHAFOLD': 1, 'ALPHAFOLD DALL-E': 1, 'DALL-E MIDJOURNEY': 1, 'MIDJOURNEY STABLE': 1, 'STABLE DIFFUSION': 1, 'DIFFUSION VERBAL': 1, 'VERBAL WORD': 1, 'WORD VEC': 1, 'VEC TRANSFORMER': 1, 'TRANSFORMER BERT': 1, 'BERT LAMDA': 1, 'LAMDA NMT': 1, 'NMT PROJECT': 1, 'PROJECT DEBATER': 1, 'DEBATER IBM': 1, 'IBM WATSON': 1, 'WATSON GPT': 1, 'GPT UNRELEASED': 1, 'UNRELEASED GPT-J': 1, 'GPT-J DECISIONAL': 1, 'DECISIONAL ALPHAGO': 1, 'ALPHAGO ALPHAZERO': 1, 'ALPHAZERO Q-LEARNING': 1, 'Q-LEARNING SARSA': 1, 'SARSA OPENAI': 1, 'OPENAI FIVE': 1, 'FIVE SELF-DRIVING': 1, 'SELF-DRIVING CAR': 1, 'CAR MUZERO': 1, 'MUZERO ACTION': 1, 'ACTION SELECTION': 1, 'SELECTION ROBOT': 1, 'ROBOT CONTROL': 1, 'CONTROL PEOPLE': 1, 'PEOPLE YOSHUA': 1, 'YOSHUA BENGIO': 1, 'BENGIO ALEX': 1, 'ALEX GRAVES': 1, 'GRAVES IAN': 1, 'IAN GOODFELLOW': 1, 'GOODFELLOW DEMIS': 1, 'DEMIS HASSABIS': 1, 'HASSABIS GEOFFREY': 1, 'GEOFFREY HINTON': 1, 'HINTON YANN': 1, 'YANN LECUN': 1, 'LECUN FEI-FEI': 1, 'FEI-FEI LI': 1, 'LI ANDREW': 1, 'ANDREW NG': 1, 'NG JRGEN': 1, 'JRGEN SCHMIDHUBER': 1, 'SCHMIDHUBER DAVID': 1, 'DAVID SILVER': 1, 'SILVER ORGANIZATIONS': 1, 'ORGANIZATIONS DEEPMIND': 1, 'DEEPMIND OPENAI': 1, 'OPENAI MIT': 1, 'MIT CSAIL': 1, 'CSAIL MILA': 1, 'MILA GOOGLE': 1, 'GOOGLE BRAIN': 1, 'BRAIN META': 1, 'META AI': 1, 'AI ANTHROPIC': 1, 'ANTHROPIC ARCHITECTURES': 1, 'ARCHITECTURES NEURAL': 1, 'NEURAL TURING': 1, 'TURING MACHINE': 1, 'MACHINE DIFFERENTIABLE': 1, 'DIFFERENTIABLE NEURAL': 1, 'NEURAL COMPUTER': 1, 'COMPUTER TRANSFORMER': 1, 'TRANSFORMER RECURRENT': 1, 'RECURRENT NEURAL': 1, 'NETWORK RNN': 1, 'RNN LONG': 1, 'LONG SHORT-TERM': 1, 'SHORT-TERM MEMORY': 1, 'MEMORY LSTM': 1, 'LSTM GATED': 1, 'GATED RECURRENT': 1, 'RECURRENT UNIT': 1, 'UNIT GRU': 1, 'GRU ECHO': 1, 'ECHO STATE': 1, 'STATE NETWORK': 1, 'NETWORK MULTILAYER': 1, 'MULTILAYER PERCEPTRON': 1, 'PERCEPTRON MLP': 1, 'MLP CONVOLUTIONAL': 1, 'CONVOLUTIONAL NEURAL': 1, 'NETWORK RESIDUAL': 1, 'RESIDUAL NETWORK': 1, 'NETWORK AUTOENCODER': 1, 'AUTOENCODER VARIATIONAL': 1, 'VARIATIONAL AUTOENCODER': 1, 'AUTOENCODER VAE': 1, 'VAE GENERATIVE': 1, 'GENERATIVE ADVERSARIAL': 1, 'ADVERSARIAL NETWORK': 1, 'NETWORK GAN': 1, 'GAN GRAPH': 1, 'GRAPH NEURAL': 1, 'NETWORK PORTALS': 1, 'PORTALS COMPUTER': 1, 'PROGRAMMING TECHNOLOGY': 1, 'TECHNOLOGY CATEGORY': 1, 'CATEGORY ARTIFICIAL': 1, 'NEURAL NETWORKS': 1, 'NETWORKS MACHINE': 1, 'LEARNING VTEFREE': 1, 'VTEFREE AND': 1, 'OPEN-SOURCE SOFTWAREGENERAL': 1, 'SOFTWAREGENERAL ALTERNATIVE': 1, 'ALTERNATIVE TERMS': 1, 'TERMS FOR': 1, 'FOR FREE': 1, 'OF OPEN-SOURCE': 1, 'OPEN-SOURCE AND': 1, 'AND CLOSED-SOURCE': 1, 'CLOSED-SOURCE SOFTWARE': 1, 'OF SOURCE-CODE-HOSTING': 1, 'SOURCE-CODE-HOSTING FACILITIES': 1, 'FACILITIES FREE': 1, 'SOFTWARE FREE': 1, 'SOFTWARE PROJECT': 1, 'PROJECT DIRECTORIES': 1, 'DIRECTORIES GRATIS': 1, 'GRATIS VERSUS': 1, 'VERSUS LIBRE': 1, 'LIBRE LONG-TERM': 1, 'LONG-TERM SUPPORT': 1, 'SUPPORT OPEN-SOURCE': 1, 'SOFTWARE OPEN-SOURCE': 1, 'SOFTWARE DEVELOPMENT': 1, 'DEVELOPMENT OUTLINE': 1, 'OUTLINE TIMELINE': 1, 'TIMELINE SOFTWAREPACKAGES': 1, 'SOFTWAREPACKAGES AUDIO': 1, 'AUDIO BIOINFORMATICS': 1, 'BIOINFORMATICS CODECS': 1, 'CODECS CONFIGURATION': 1, 'CONFIGURATION MANAGEMENT': 1, 'MANAGEMENT DRIVERS': 1, 'DRIVERS GRAPHICS': 1, 'GRAPHICS WIRELESS': 1, 'WIRELESS HEALTH': 1, 'HEALTH MATHEMATICS': 1, 'MATHEMATICS OFFICE': 1, 'OFFICE SUITES': 1, 'SUITES OPERATING': 1, 'SYSTEMS PROGRAMMING': 1, 'LANGUAGES ROUTING': 1, 'ROUTING TELEVISION': 1, 'TELEVISION VIDEO': 1, 'GAMES WEB': 1, 'APPLICATIONS E-COMMERCE': 1, 'E-COMMERCE ANDROID': 1, 'ANDROID APPS': 1, 'APPS IOS': 1, 'IOS APPS': 1, 'APPS COMMERCIAL': 1, 'COMMERCIAL FORMERLY': 1, 'FORMERLY PROPRIETARY': 1, 'PROPRIETARY FORMERLY': 1, 'FORMERLY OPEN-SOURCE': 1, 'OPEN-SOURCE COMMUNITY': 1, 'COMMUNITY FREE': 1, 'MOVEMENT HISTORY': 1, 'HISTORY OPEN-SOURCE-SOFTWARE': 1, 'OPEN-SOURCE-SOFTWARE MOVEMENT': 1, 'MOVEMENT EVENTS': 1, 'EVENTS ORGANISATIONS': 1, 'ORGANISATIONS FREE': 1, 'MOVEMENT OF': 1, 'OF INDIA': 1, 'INDIA FREE': 1, 'FOUNDATION LICENSES': 1, 'LICENSES AFL': 1, 'AFL APACHE': 1, 'APACHE APSL': 1, 'APSL ARTISTIC': 1, 'ARTISTIC BEERWARE': 1, 'BEERWARE BSD': 1, 'BSD CREATIVE': 1, 'CREATIVE COMMONS': 1, 'COMMONS CDDL': 1, 'CDDL EPL': 1, 'EPL FREE': 1, 'FOUNDATION GNU': 1, 'GNU GPL': 1, 'GPL GNU': 1, 'GNU LGPL': 1, 'LGPL ISC': 1, 'ISC MIT': 1, 'MIT MPL': 1, 'MPL PYTHON': 1, 'FOUNDATION LICENSE': 1, 'LICENSE SHARED': 1, 'INITIATIVE SLEEPYCAT': 1, 'SLEEPYCAT UNLICENSE': 1, 'UNLICENSE WTFPL': 1, 'WTFPL ZLIB': 1, 'ZLIB TYPES': 1, 'AND STANDARDS': 1, 'STANDARDS COMPARISON': 1, 'OF LICENSES': 1, 'LICENSES CONTRIBUTOR': 1, 'CONTRIBUTOR LICENSE': 1, 'LICENSE AGREEMENT': 1, 'AGREEMENT COPYLEFT': 1, 'COPYLEFT DEBIAN': 1, 'DEBIAN FREE': 1, 'SOFTWARE GUIDELINES': 1, 'GUIDELINES DEFINITION': 1, 'DEFINITION OF': 1, 'OF FREE': 1, 'FREE CULTURAL': 1, 'CULTURAL WORKS': 1, 'WORKS FREE': 1, 'FREE LICENSE': 1, 'LICENSE THE': 1, 'THE FREE': 1, 'SOFTWARE DEFINITION': 1, 'DEFINITION THE': 1, 'THE OPEN': 1, 'OPEN SOURCE': 1, 'SOURCE DEFINITION': 1, 'DEFINITION OPEN-SOURCE': 1, 'OPEN-SOURCE LICENSE': 1, 'LICENSE PERMISSIVE': 1, 'PERMISSIVE SOFTWARE': 1, 'SOFTWARE LICENSE': 1, 'LICENSE PUBLIC': 1, 'PUBLIC DOMAIN': 1, 'DOMAIN VIRAL': 1, 'VIRAL LICENSE': 1, 'LICENSE CHALLENGES': 1, 'CHALLENGES DIGITAL': 1, 'DIGITAL RIGHTS': 1, 'RIGHTS MANAGEMENT': 1, 'MANAGEMENT HARDWARE': 1, 'HARDWARE RESTRICTIONS': 1, 'RESTRICTIONS LICENSE': 1, 'LICENSE PROLIFERATION': 1, 'PROLIFERATION MOZILLA': 1, 'MOZILLA SOFTWARE': 1, 'SOFTWARE REBRANDING': 1, 'REBRANDING PROPRIETARY': 1, 'PROPRIETARY DEVICE': 1, 'DEVICE DRIVERS': 1, 'DRIVERS PROPRIETARY': 1, 'PROPRIETARY FIRMWARE': 1, 'FIRMWARE PROPRIETARY': 1, 'PROPRIETARY SOFTWARE': 1, 'SOFTWARE SCO/LINUX': 1, 'SCO/LINUX CONTROVERSIES': 1, 'CONTROVERSIES SOFTWARE': 1, 'SOFTWARE PATENTS': 1, 'PATENTS SOFTWARE': 1, 'SOFTWARE SECURITY': 1, 'SECURITY TRUSTED': 1, 'TRUSTED COMPUTING': 1, 'COMPUTING RELATED': 1, 'RELATED TOPICS': 1, 'TOPICS FORKING': 1, 'FORKING GNU': 1, 'GNU MANIFESTO': 1, 'MANIFESTO MICROSOFT': 1, 'MICROSOFT OPEN': 1, 'OPEN SPECIFICATION': 1, 'SPECIFICATION PROMISE': 1, 'PROMISE OPEN-CORE': 1, 'OPEN-CORE MODEL': 1, 'MODEL OPEN-SOURCE': 1, 'OPEN-SOURCE HARDWARE': 1, 'HARDWARE SHARED': 1, 'INITIATIVE SOURCE-AVAILABLE': 1, 'SOURCE-AVAILABLE SOFTWARE': 1, 'SOFTWARE THE': 1, 'THE CATHEDRAL': 1, 'CATHEDRAL AND': 1, 'THE BAZAAR': 1, 'BAZAAR REVOLUTION': 1, 'REVOLUTION OS': 1, 'OS PORTAL': 1, 'PORTAL CATEGORY': 1, 'CATEGORY VTESTATISTICAL': 1, 'VTESTATISTICAL SOFTWAREPUBLIC': 1, 'SOFTWAREPUBLIC DOMAIN': 1, 'DOMAIN DATAPLOT': 1, 'DATAPLOT EPI': 1, 'EPI INFO': 1, 'INFO CSPRO': 1, 'CSPRO ARIMA': 1, 'ARIMA OPEN-SOURCE': 1, 'OPEN-SOURCE ADMB': 1, 'ADMB DAP': 1, 'DAP GRETL': 1, 'GRETL JASP': 1, 'JASP JAGS': 1, 'JAGS JMULTI': 1, 'JMULTI JULIA': 1, 'PYTHON GNU': 1, 'OCTAVE OPENBUGS': 1, 'OPENBUGS ORANGE': 1, 'ORANGE PSPP': 1, 'PSPP PYTHON': 1, 'PYTHON STATSMODELS': 1, 'STATSMODELS PYMC': 1, 'PYMC IPYTHON': 1, 'IPYTHON IDLE': 1, 'IDLE RSTUDIO': 1, 'RSTUDIO SAGEMATH': 1, 'SAGEMATH SIMFIT': 1, 'SIMFIT SOFA': 1, 'SOFA STATISTICS': 1, 'STATISTICS STAN': 1, 'STAN XLISPSTAT': 1, 'XLISPSTAT FREEWARE': 1, 'FREEWARE BV': 1, 'CUMFREQ SEGREG': 1, 'SEGREG XPLORE': 1, 'XPLORE WINBUGS': 1, 'WINBUGS COMMERCIALCROSS-PLATFORM': 1, 'COMMERCIALCROSS-PLATFORM DATA': 1, 'DATA DESK': 1, 'DESK GAUSS': 1, 'GAUSS GRAPHPAD': 1, 'GRAPHPAD INSTAT': 1, 'INSTAT GRAPHPAD': 1, 'GRAPHPAD PRISM': 1, 'PRISM IBM': 1, 'SPSS STATISTICS': 1, 'STATISTICS IBM': 1, 'SPSS MODELER': 1, 'MODELER JMP': 1, 'JMP MAPLE': 1, 'MATLAB OXMETRICS': 1, 'OXMETRICS RATS': 1, 'RATS REVOLUTION': 1, 'REVOLUTION ANALYTICS': 1, 'ANALYTICS SAS': 1, 'SAS SMARTPLS': 1, 'SMARTPLS STATA': 1, 'STATA STATVIEW': 1, 'STATVIEW SUDAAN': 1, 'SUDAAN S-PLUS': 1, 'S-PLUS TSP': 1, 'TSP WORLD': 1, 'WORLD PROGRAMMING': 1, 'PROGRAMMING SYSTEM': 1, 'SYSTEM WPS': 1, 'WPS WINDOWS': 1, 'WINDOWS ONLY': 1, 'ONLY BMDP': 1, 'BMDP EVIEWS': 1, 'EVIEWS GENSTAT': 1, 'GENSTAT LIMDEP': 1, 'LIMDEP LISREL': 1, 'LISREL MEDCALC': 1, 'MEDCALC MICROFIT': 1, 'MICROFIT MINITAB': 1, 'MINITAB MLWIN': 1, 'MLWIN NCSS': 1, 'NCSS SHAZAM': 1, 'SHAZAM SIGMASTAT': 1, 'SIGMASTAT STATISTICA': 1, 'STATISTICA STATSDIRECT': 1, 'STATSDIRECT STATXACT': 1, 'STATXACT SYSTAT': 1, 'SYSTAT THE': 1, 'THE UNSCRAMBLER': 1, 'UNSCRAMBLER UNISTAT': 1, 'UNISTAT EXCEL': 1, 'EXCEL ADD-ONS': 1, 'ADD-ONS ANALYSE-IT': 1, 'ANALYSE-IT UNISTAT': 1, 'UNISTAT FOR': 1, 'FOR EXCEL': 1, 'EXCEL XLFIT': 1, 'XLFIT REXCEL': 1, 'REXCEL CATEGORY': 1, 'CATEGORY COMPARISON': 1, 'COMPARISON VTENUMERICAL-ANALYSIS': 1, 'VTENUMERICAL-ANALYSIS SOFTWAREFREE': 1, 'SOFTWAREFREE ADVANCED': 1, 'ADVANCED SIMULATION': 1, 'SIMULATION LIBRARY': 1, 'LIBRARY ADMB': 1, 'ADMB CHAPEL': 1, 'CHAPEL EULER': 1, 'EULER FORTRESS': 1, 'FORTRESS FREEFEM': 1, 'FREEFEM FREEMAT': 1, 'FREEMAT GENIUS': 1, 'GENIUS GMSH': 1, 'GMSH GNU': 1, 'OCTAVE GRETL': 1, 'GRETL JULIA': 1, 'PYTHON IPYTHON': 1, 'IPYTHON MFEM': 1, 'MFEM OPENFOAM': 1, 'OPENFOAM PYTHON': 1, 'PYTHON SAGEMATH': 1, 'SAGEMATH SALOME': 1, 'SALOME SCICOSLAB': 1, 'SCICOSLAB SCILAB': 1, 'SCILAB WEKA': 1, 'WEKA PROPRIETARY': 1, 'PROPRIETARY DADISP': 1, 'DADISP FEATOOL': 1, 'FEATOOL MULTIPHYSICS': 1, 'MULTIPHYSICS GAUSS': 1, 'GAUSS LABVIEW': 1, 'LABVIEW MAPLE': 1, 'MATLAB SPEAKEASY': 1, 'SPEAKEASY VISSIM': 1, 'VISSIM COMPARISON': 1, 'COMPARISON AUTHORITY': 1, 'AUTHORITY CONTROL': 1, 'CONTROL NATIONAL': 1, 'NATIONAL LIBRARIES': 1, 'LIBRARIES FRANCE': 1, 'FRANCE DATA': 1, 'DATA GERMANY': 1, 'GERMANY ISRAEL': 1, 'ISRAEL UNITED': 1, 'UNITED STATES': 1, 'STATES CZECH': 1, 'CZECH REPUBLIC': 1, 'REPUBLIC OTHER': 1, 'OTHER FAST': 1, 'FAST SUDOC': 1, 'SUDOC FRANCE': 1, 'FRANCE RETRIEVED': 1, 'RETRIEVED FROM': 1, 'FROM HTTPS://EN.WIKIPEDIA.ORG/W/INDEX.PHP?TITLE=PYTHON_(PROGRAMMING_LANGUAGE)&OLDID': 1})\n" + ] + } + ], + "source": [ + "print(getNgrams(content, 2))" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.10.13" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/Chapter12-API-Scraping.ipynb b/Chapter12-API-Scraping.ipynb deleted file mode 100644 index dd5b496..0000000 --- a/Chapter12-API-Scraping.ipynb +++ /dev/null @@ -1,588 +0,0 @@ -{ - "cells": [ - { - "cell_type": "code", - "execution_count": 8, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "--------------------\n", - "history url is: http://en.wikipedia.org/w/index.php?title=Programming_paradigm&action=history\n", - "223.104.186.241\n", - "213.207.90.158\n", - "92.115.222.143\n", - "213.108.115.55\n", - "2605:a601:e0c:6300:996d:68c0:fb03:af2c\n", - "192.117.105.47\n", - "31.203.136.191\n", - "168.216.130.133\n", - "2a02:c7d:a492:f200:e126:2b36:53ca:513a\n", - "37.238.238.36\n", - "197.255.127.246\n", - "110.55.67.15\n", - "193.80.242.220\n", - "42.111.56.168\n", - "223.230.96.108\n", - "113.162.8.249\n", - "39.36.182.41\n", - "--------------------\n", - "history url is: http://en.wikipedia.org/w/index.php?title=Object-oriented_programming&action=history\n", - "113.199.249.237\n", - "205.251.185.250\n", - "1.22.150.73\n", - "121.58.212.157\n", - "217.225.8.24\n", - "162.204.116.16\n", - "112.200.199.62\n", - "117.239.185.50\n", - "103.252.25.104\n", - "103.74.23.139\n", - "103.241.244.36\n", - "2605:a601:474:600:2088:fbde:7512:53b2\n", - "122.181.5.162\n", - "24.93.131.140\n", - "119.152.87.84\n", - "93.136.125.208\n", - "27.251.109.234\n", - "223.230.215.145\n", - "103.16.68.215\n", - "170.142.177.246\n", - "--------------------\n", - "history url is: http://en.wikipedia.org/w/index.php?title=Imperative_programming&action=history\n", - "178.208.206.244\n", - "107.107.62.0\n", - "188.146.23.38\n", - "2604:2000:b064:3300:6dd3:b07e:494d:c5cd\n", - "5.199.208.23\n", - "83.244.156.56\n", - "152.231.35.89\n", - "94.118.222.35\n", - "197.239.7.126\n", - "194.181.240.192\n", - "176.60.44.112\n", - "111.92.130.14\n", - "15.203.233.84\n", - "79.186.27.201\n", - "140.177.205.223\n", - "114.79.32.242\n", - "117.136.79.80\n", - "85.133.27.110\n", - "2600:1004:b151:6515:1c2a:675b:bb28:2986\n", - "--------------------\n", - "history url is: http://en.wikipedia.org/w/index.php?title=Functional_programming&action=history\n", - "31.221.90.4\n", - "132.205.229.26\n", - "178.197.232.225\n", - "202.47.116.116\n", - "80.2.210.229\n", - "66.161.229.34\n", - "203.99.198.64\n", - "216.16.225.202\n", - "2600:1700:10e0:b970:d0be:a8fd:b1c3:dbe4\n", - "2601:983:4502:4cda:5945:9962:1911:c385\n", - "82.41.7.208\n", - "2602:306:cdd1:2d00::3e8\n", - "94.223.128.131\n", - "--------------------\n", - "history url is: http://en.wikipedia.org/w/index.php?title=Procedural_programming&action=history\n", - "201.27.72.206\n", - "194.81.178.163\n", - "63.153.143.196\n", - "51.6.173.174\n", - "193.60.223.165\n", - "82.10.105.143\n", - "72.239.0.15\n", - "37.211.33.26\n", - "73.19.237.89\n", - "175.157.174.60\n", - "185.18.60.135\n", - "2405:204:958d:ab4b:fd9f:4ae3:97ba:dbd6\n", - "107.1.229.152\n", - "63.199.46.9\n", - "91.213.250.8\n", - "63.193.94.14\n", - "86.152.129.204\n", - "41.189.169.218\n", - "2600:8802:2202:700:50a5:62ba:22b:307\n", - "63.199.46.148\n", - "--------------------\n", - "history url is: http://en.wikipedia.org/w/index.php?title=Reflective_programming&action=history\n", - "212.96.25.37\n", - "--------------------\n", - "history url is: http://en.wikipedia.org/w/index.php?title=Software_design&action=history\n", - "116.202.248.202\n", - "117.18.231.54\n", - "144.136.67.206\n", - "121.6.122.250\n", - "49.191.33.124\n", - "97.107.121.1\n", - "103.51.95.185\n", - "103.204.119.6\n", - "2405:204:6109:8ace::bac:e8a4\n", - "98.26.67.24\n", - "41.220.18.230\n", - "2602:30a:c005:6140:811c:1f14:3cd6:33d6\n", - "49.248.91.74\n", - "39.47.55.196\n", - "91.180.76.245\n", - "106.70.251.236\n", - "2607:fb90:47:304:66f7:3c96:489d:dcc6\n", - "2601:641:1:60c:796b:a24b:47fe:c226\n", - "188.70.8.163\n", - "213.106.31.246\n", - "2405:204:d281:564a::13f2:10b0\n", - "--------------------\n", - "history url is: http://en.wikipedia.org/w/index.php?title=Guido_van_Rossum&action=history\n", - "192.244.101.20\n", - "189.106.118.125\n", - "2.97.124.83\n", - "50.53.21.2\n", - "85.75.27.197\n", - "2a02:c7d:dc55:ef00:25f5:c1b4:9f4:84c3\n", - "136.24.120.181\n", - "2601:647:ca01:5728:38f3:777c:759e:9c96\n", - "2601:197:4500:2ecd:148e:dc78:ad4b:f78b\n", - "86.87.183.2\n", - "196.21.153.197\n", - "184.153.183.139\n", - "51.7.201.233\n", - "195.148.173.220\n", - "212.238.182.54\n", - "66.228.70.98\n", - "203.99.198.73\n", - "78.24.111.93\n", - "--------------------\n", - "history url is: http://en.wikipedia.org/w/index.php?title=Software_developer&action=history\n", - "2602:306:ce6a:a6f0:f092:875a:e3d:8408\n", - "162.244.177.177\n", - "66.204.4.247\n", - "97.70.79.67\n", - "164.100.132.7\n", - "202.136.88.218\n", - "2600:100f:b10b:c5f8:589b:be6f:1a94:cb3f\n", - "203.122.32.92\n", - "2601:186:80:2c0d:197c:ef45:fee7:50e6\n", - "86.27.153.255\n", - "122.170.173.53\n", - "93.93.221.66\n", - "81.101.33.91\n", - "50.232.240.142\n", - "194.135.166.62\n", - "168.8.213.107\n", - "73.152.123.80\n", - "--------------------\n", - "history url is: http://en.wikipedia.org/w/index.php?title=Python_Software_Foundation&action=history\n", - "119.15.154.71\n", - "70.198.33.152\n", - "194.83.198.199\n", - "70.198.36.48\n", - "50.56.228.68\n", - "--------------------\n", - "history url is: http://en.wikipedia.org/w/index.php?title=Software_release_life_cycle&action=history\n", - "105.227.18.229\n", - "50.242.157.61\n", - "99.25.123.67\n", - "24.237.5.51\n", - "107.77.205.107\n", - "103.87.165.166\n", - "77.165.37.34\n", - "108.85.43.5\n", - "2600:1:c24c:7ba7:4d0:5dec:90a1:2e5\n", - "131.204.254.100\n", - "116.58.204.209\n", - "2600:1008:b02a:e2e8:f1d3:c3ed:629c:32b3\n", - "77.203.16.224\n", - "98.255.157.224\n", - "103.255.6.93\n", - "130.190.48.3\n", - "49.207.111.128\n", - "--------------------\n", - "history url is: http://en.wikipedia.org/w/index.php?title=Software_release_life_cycle&action=history\n", - "105.227.18.229\n", - "50.242.157.61\n", - "99.25.123.67\n", - "24.237.5.51\n", - "107.77.205.107\n", - "103.87.165.166\n", - "77.165.37.34\n", - "108.85.43.5\n", - "2600:1:c24c:7ba7:4d0:5dec:90a1:2e5\n", - "131.204.254.100\n", - "116.58.204.209\n", - "2600:1008:b02a:e2e8:f1d3:c3ed:629c:32b3\n", - "77.203.16.224\n", - "98.255.157.224\n", - "103.255.6.93\n", - "130.190.48.3\n", - "49.207.111.128\n", - "--------------------\n", - "history url is: http://en.wikipedia.org/w/index.php?title=Type_system&action=history\n", - "80.77.249.225\n", - "2601:2c6:4500:340:84b2:b14f:e9ec:9437\n", - "2405:204:530d:af4b:196c:1ac2:adfd:a081\n", - "192.55.2.36\n", - "208.104.238.70\n", - "145.132.78.225\n", - "2606:a000:a552:a900:3965:ccb9:5bc3:e766\n", - "61.68.220.194\n", - "2602:306:cc7a:cef0:f5d4:aca1:6eb5:8515\n", - "178.149.46.15\n", - "41.68.85.105\n", - "84.173.153.20\n", - "1.127.104.117\n", - "2600:387:8:5::87\n", - "2600:1010:b11f:4f1d:d84d:1837:3d2:d83e\n", - "103.242.23.184\n", - "39.41.217.12\n", - "193.49.107.105\n", - "--------------------\n", - "history url is: http://en.wikipedia.org/w/index.php?title=Duck_typing&action=history\n", - "149.126.4.73\n", - "178.255.11.40\n", - "119.30.38.106\n", - "112.202.239.97\n", - "134.36.36.187\n", - "83.31.45.80\n", - "73.216.44.168\n", - "193.49.118.7\n", - "193.140.54.250\n", - "141.168.250.205\n", - "92.62.8.1\n", - "50.81.61.167\n", - "2a00:79e0:d:107:28ba:af0b:b5fc:1064\n", - "72.95.147.233\n", - "--------------------\n", - "history url is: http://en.wikipedia.org/w/index.php?title=Dynamic_typing&action=history\n", - "172.194.101.14\n", - "195.149.37.65\n", - "131.111.8.99\n", - "24.217.36.41\n", - "128.250.6.134\n", - "62.23.212.160\n", - "192.102.214.6\n", - "--------------------\n", - "history url is: http://en.wikipedia.org/w/index.php?title=Strong_typing&action=history\n", - "82.69.159.205\n", - "68.2.187.224\n", - "98.155.76.148\n", - "79.67.253.90\n", - "98.234.249.218\n", - "75.152.190.38\n", - "219.64.72.209\n", - "71.61.178.1\n", - "46.14.245.69\n", - "83.254.128.245\n", - "75.35.50.37\n", - "88.175.108.247\n", - "123.201.228.97\n", - "59.167.127.158\n", - "137.52.233.174\n", - "219.64.70.220\n", - "--------------------\n", - "history url is: http://en.wikipedia.org/w/index.php?title=Software_license&action=history\n", - "2600:1:c403:d2cb:b27f:e90b:a6f4:41fa\n", - "2405:204:e406:5b43:1f64:f3ab:9404:719c\n", - "196.15.205.99\n", - "115.164.48.136\n", - "142.197.168.198\n", - "198.49.31.129\n", - "198.49.31.131\n", - "92.40.248.35\n", - "2601:188:180:11f0:65f5:930c:b0b2:cd63\n", - "--------------------\n", - "history url is: http://en.wikipedia.org/w/index.php?title=Python_Software_Foundation_License&action=history\n", - "71.110.212.116\n", - "74.56.110.127\n", - "129.10.9.77\n", - "83.254.138.122\n", - "221.134.160.242\n", - "99.240.76.83\n", - "71.89.160.105\n", - "150.101.214.82\n", - "90.215.243.133\n", - "2001:2003:54fa:d2::1\n", - "--------------------\n", - "history url is: http://en.wikipedia.org/w/index.php?title=Filename_extension&action=history\n", - "96.19.236.197\n", - "2a02:c7d:3ca1:1600:e8ac:1e44:49d2:7c89\n", - "96.4.231.55\n", - "67.78.240.242\n", - "116.100.37.195\n", - "223.230.140.207\n", - "2602:306:cfa9:4410:3463:a8c2:64b3:fcef\n", - "41.114.184.188\n", - "119.30.32.104\n", - "84.10.82.156\n", - "14.194.225.183\n", - "80.249.56.76\n", - "103.66.96.89\n", - "157.48.11.63\n", - "2600:1004:b11d:8dd2:7183:176a:9f6d:b5e6\n", - "69.68.245.129\n", - "175.157.213.170\n", - "--------------------\n", - "history url is: http://en.wikipedia.org/w/index.php?title=Programming_language_implementation&action=history\n", - "93.169.177.175\n", - "105.109.72.234\n", - "2602:306:33e1:6a20:dd1b:bfab:c9bb:50a3\n", - "70.247.162.60\n", - "27.3.0.228\n", - "188.158.140.90\n", - "220.227.8.230\n", - "--------------------\n", - "history url is: http://en.wikipedia.org/w/index.php?title=CPython&action=history\n", - "86.57.255.92\n", - "24.246.78.253\n", - "109.242.192.230\n", - "--------------------\n", - "history url is: http://en.wikipedia.org/w/index.php?title=IronPython&action=history\n", - "83.251.248.170\n", - "128.206.40.209\n", - "190.161.145.117\n", - "70.198.25.249\n", - "137.205.115.241\n", - "70.197.193.51\n", - "70.198.7.85\n", - "2600:1700:edb0:a060:14d0:1d18:969:4211\n", - "130.235.32.53\n", - "193.173.35.5\n", - "--------------------\n", - "history url is: http://en.wikipedia.org/w/index.php?title=Jython&action=history\n", - "71.237.143.157\n", - "95.210.220.183\n", - "128.71.143.243\n", - "157.127.124.151\n", - "94.25.176.56\n", - "84.241.43.4\n", - "50.126.125.240\n", - "137.48.251.105\n", - "217.140.96.140\n", - "103.254.102.17\n", - "104.55.212.99\n", - "192.35.35.36\n", - "--------------------\n", - "history url is: http://en.wikipedia.org/w/index.php?title=MicroPython&action=history\n", - "73.86.31.72\n", - "64.238.129.36\n", - "203.62.211.92\n", - "70.184.214.35\n", - "2601:648:8100:d81:998d:6329:407e:e5d6\n", - "50.53.1.21\n", - "--------------------\n", - "history url is: http://en.wikipedia.org/w/index.php?title=Numba&action=history\n" - ] - }, - { - "ename": "KeyboardInterrupt", - "evalue": "", - "output_type": "error", - "traceback": [ - "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", - "\u001b[0;31mKeyboardInterrupt\u001b[0m Traceback (most recent call last)", - "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[1;32m 34\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0mlink\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mlinks\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 35\u001b[0m \u001b[0mprint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'-'\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0;36m20\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 36\u001b[0;31m \u001b[0mhistoryIPs\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mgetHistoryIPs\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mlink\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mattrs\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m'href'\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 37\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0mhistoryIP\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mhistoryIPs\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 38\u001b[0m \u001b[0mprint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mhistoryIP\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m\u001b[0m in \u001b[0;36mgetHistoryIPs\u001b[0;34m(pageUrl)\u001b[0m\n\u001b[1;32m 19\u001b[0m \u001b[0mhistoryUrl\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m'http://en.wikipedia.org/w/index.php?title={}&action=history'\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mformat\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mpageUrl\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 20\u001b[0m \u001b[0mprint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'history url is: {}'\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mformat\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mhistoryUrl\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 21\u001b[0;31m \u001b[0mhtml\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0murlopen\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mhistoryUrl\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 22\u001b[0m \u001b[0mbs\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mBeautifulSoup\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mhtml\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m'html.parser'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 23\u001b[0m \u001b[0;31m#finds only the links with class \"mw-anonuserlink\" which has IP addresses\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/urllib/request.py\u001b[0m in \u001b[0;36murlopen\u001b[0;34m(url, data, timeout, cafile, capath, cadefault, context)\u001b[0m\n\u001b[1;32m 221\u001b[0m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 222\u001b[0m \u001b[0mopener\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0m_opener\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 223\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mopener\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mopen\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0murl\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mdata\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mtimeout\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 224\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 225\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0minstall_opener\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mopener\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/urllib/request.py\u001b[0m in \u001b[0;36mopen\u001b[0;34m(self, fullurl, data, timeout)\u001b[0m\n\u001b[1;32m 530\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0mprocessor\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mprocess_response\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mget\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mprotocol\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m[\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 531\u001b[0m \u001b[0mmeth\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mgetattr\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mprocessor\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mmeth_name\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 532\u001b[0;31m \u001b[0mresponse\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mmeth\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mreq\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mresponse\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 533\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 534\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mresponse\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/urllib/request.py\u001b[0m in \u001b[0;36mhttp_response\u001b[0;34m(self, request, response)\u001b[0m\n\u001b[1;32m 640\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0;34m(\u001b[0m\u001b[0;36m200\u001b[0m \u001b[0;34m<=\u001b[0m \u001b[0mcode\u001b[0m \u001b[0;34m<\u001b[0m \u001b[0;36m300\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 641\u001b[0m response = self.parent.error(\n\u001b[0;32m--> 642\u001b[0;31m 'http', request, response, code, msg, hdrs)\n\u001b[0m\u001b[1;32m 643\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 644\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mresponse\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/urllib/request.py\u001b[0m in \u001b[0;36merror\u001b[0;34m(self, proto, *args)\u001b[0m\n\u001b[1;32m 562\u001b[0m \u001b[0mhttp_err\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;36m0\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 563\u001b[0m \u001b[0margs\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m(\u001b[0m\u001b[0mdict\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mproto\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mmeth_name\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;34m+\u001b[0m \u001b[0margs\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 564\u001b[0;31m \u001b[0mresult\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_call_chain\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 565\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mresult\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 566\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mresult\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/urllib/request.py\u001b[0m in \u001b[0;36m_call_chain\u001b[0;34m(self, chain, kind, meth_name, *args)\u001b[0m\n\u001b[1;32m 502\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0mhandler\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mhandlers\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 503\u001b[0m \u001b[0mfunc\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mgetattr\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mhandler\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mmeth_name\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 504\u001b[0;31m \u001b[0mresult\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mfunc\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 505\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mresult\u001b[0m \u001b[0;32mis\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0;32mNone\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 506\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mresult\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/urllib/request.py\u001b[0m in \u001b[0;36mhttp_error_302\u001b[0;34m(self, req, fp, code, msg, headers)\u001b[0m\n\u001b[1;32m 754\u001b[0m \u001b[0mfp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mclose\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 755\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 756\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mparent\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mopen\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mnew\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mtimeout\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mreq\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mtimeout\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 757\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 758\u001b[0m \u001b[0mhttp_error_301\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mhttp_error_303\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mhttp_error_307\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mhttp_error_302\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/urllib/request.py\u001b[0m in \u001b[0;36mopen\u001b[0;34m(self, fullurl, data, timeout)\u001b[0m\n\u001b[1;32m 524\u001b[0m \u001b[0mreq\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mmeth\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mreq\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 525\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 526\u001b[0;31m \u001b[0mresponse\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_open\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mreq\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mdata\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 527\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 528\u001b[0m \u001b[0;31m# post-process response\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/urllib/request.py\u001b[0m in \u001b[0;36m_open\u001b[0;34m(self, req, data)\u001b[0m\n\u001b[1;32m 542\u001b[0m \u001b[0mprotocol\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mreq\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mtype\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 543\u001b[0m result = self._call_chain(self.handle_open, protocol, protocol +\n\u001b[0;32m--> 544\u001b[0;31m '_open', req)\n\u001b[0m\u001b[1;32m 545\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mresult\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 546\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mresult\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/urllib/request.py\u001b[0m in \u001b[0;36m_call_chain\u001b[0;34m(self, chain, kind, meth_name, *args)\u001b[0m\n\u001b[1;32m 502\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0mhandler\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mhandlers\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 503\u001b[0m \u001b[0mfunc\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mgetattr\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mhandler\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mmeth_name\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 504\u001b[0;31m \u001b[0mresult\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mfunc\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 505\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mresult\u001b[0m \u001b[0;32mis\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0;32mNone\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 506\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mresult\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/urllib/request.py\u001b[0m in \u001b[0;36mhttps_open\u001b[0;34m(self, req)\u001b[0m\n\u001b[1;32m 1359\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0mhttps_open\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mreq\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1360\u001b[0m return self.do_open(http.client.HTTPSConnection, req,\n\u001b[0;32m-> 1361\u001b[0;31m context=self._context, check_hostname=self._check_hostname)\n\u001b[0m\u001b[1;32m 1362\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1363\u001b[0m \u001b[0mhttps_request\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mAbstractHTTPHandler\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mdo_request_\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/urllib/request.py\u001b[0m in \u001b[0;36mdo_open\u001b[0;34m(self, http_class, req, **http_conn_args)\u001b[0m\n\u001b[1;32m 1319\u001b[0m \u001b[0;32mexcept\u001b[0m \u001b[0mOSError\u001b[0m \u001b[0;32mas\u001b[0m \u001b[0merr\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0;31m# timeout error\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1320\u001b[0m \u001b[0;32mraise\u001b[0m \u001b[0mURLError\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0merr\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 1321\u001b[0;31m \u001b[0mr\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mh\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mgetresponse\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 1322\u001b[0m \u001b[0;32mexcept\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1323\u001b[0m \u001b[0mh\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mclose\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/http/client.py\u001b[0m in \u001b[0;36mgetresponse\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 1329\u001b[0m \u001b[0;32mtry\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1330\u001b[0m \u001b[0;32mtry\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 1331\u001b[0;31m \u001b[0mresponse\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mbegin\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 1332\u001b[0m \u001b[0;32mexcept\u001b[0m \u001b[0mConnectionError\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1333\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mclose\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/http/client.py\u001b[0m in \u001b[0;36mbegin\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 295\u001b[0m \u001b[0;31m# read until we get a non-100 response\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 296\u001b[0m \u001b[0;32mwhile\u001b[0m \u001b[0;32mTrue\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 297\u001b[0;31m \u001b[0mversion\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mstatus\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mreason\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_read_status\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 298\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mstatus\u001b[0m \u001b[0;34m!=\u001b[0m \u001b[0mCONTINUE\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 299\u001b[0m \u001b[0;32mbreak\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/http/client.py\u001b[0m in \u001b[0;36m_read_status\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 256\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 257\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0m_read_status\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 258\u001b[0;31m \u001b[0mline\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mstr\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mfp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mreadline\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0m_MAXLINE\u001b[0m \u001b[0;34m+\u001b[0m \u001b[0;36m1\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m\"iso-8859-1\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 259\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mlen\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mline\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;34m>\u001b[0m \u001b[0m_MAXLINE\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 260\u001b[0m \u001b[0;32mraise\u001b[0m \u001b[0mLineTooLong\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"status line\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/socket.py\u001b[0m in \u001b[0;36mreadinto\u001b[0;34m(self, b)\u001b[0m\n\u001b[1;32m 584\u001b[0m \u001b[0;32mwhile\u001b[0m \u001b[0;32mTrue\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 585\u001b[0m \u001b[0;32mtry\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 586\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_sock\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mrecv_into\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mb\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 587\u001b[0m \u001b[0;32mexcept\u001b[0m \u001b[0mtimeout\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 588\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_timeout_occurred\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;32mTrue\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/ssl.py\u001b[0m in \u001b[0;36mrecv_into\u001b[0;34m(self, buffer, nbytes, flags)\u001b[0m\n\u001b[1;32m 1000\u001b[0m \u001b[0;34m\"non-zero flags not allowed in calls to recv_into() on %s\"\u001b[0m \u001b[0;34m%\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1001\u001b[0m self.__class__)\n\u001b[0;32m-> 1002\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mread\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mnbytes\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mbuffer\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 1003\u001b[0m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1004\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0msocket\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mrecv_into\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mbuffer\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mnbytes\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mflags\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/ssl.py\u001b[0m in \u001b[0;36mread\u001b[0;34m(self, len, buffer)\u001b[0m\n\u001b[1;32m 863\u001b[0m \u001b[0;32mraise\u001b[0m \u001b[0mValueError\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"Read on closed or unwrapped SSL socket.\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 864\u001b[0m \u001b[0;32mtry\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 865\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_sslobj\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mread\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mlen\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mbuffer\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 866\u001b[0m \u001b[0;32mexcept\u001b[0m \u001b[0mSSLError\u001b[0m \u001b[0;32mas\u001b[0m \u001b[0mx\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 867\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mx\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m0\u001b[0m\u001b[0;34m]\u001b[0m \u001b[0;34m==\u001b[0m \u001b[0mSSL_ERROR_EOF\u001b[0m \u001b[0;32mand\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msuppress_ragged_eofs\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/ssl.py\u001b[0m in \u001b[0;36mread\u001b[0;34m(self, len, buffer)\u001b[0m\n\u001b[1;32m 623\u001b[0m \"\"\"\n\u001b[1;32m 624\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mbuffer\u001b[0m \u001b[0;32mis\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0;32mNone\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 625\u001b[0;31m \u001b[0mv\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_sslobj\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mread\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mlen\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mbuffer\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 626\u001b[0m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 627\u001b[0m \u001b[0mv\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_sslobj\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mread\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mlen\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;31mKeyboardInterrupt\u001b[0m: " - ] - } - ], - "source": [ - "from urllib.request import urlopen\n", - "from bs4 import BeautifulSoup\n", - "import json\n", - "import datetime\n", - "import random\n", - "import re\n", - "\n", - "random.seed(datetime.datetime.now())\n", - "def getLinks(articleUrl):\n", - " html = urlopen('http://en.wikipedia.org{}'.format(articleUrl))\n", - " bs = BeautifulSoup(html, 'html.parser')\n", - " return bs.find('div', {'id':'bodyContent'}).findAll('a', \n", - " href=re.compile('^(/wiki/)((?!:).)*$'))\n", - "\n", - "def getHistoryIPs(pageUrl):\n", - " #Format of revision history pages is: \n", - " #http://en.wikipedia.org/w/index.php?title=Title_in_URL&action=history\n", - " pageUrl = pageUrl.replace('/wiki/', '')\n", - " historyUrl = 'http://en.wikipedia.org/w/index.php?title={}&action=history'.format(pageUrl)\n", - " print('history url is: {}'.format(historyUrl))\n", - " html = urlopen(historyUrl)\n", - " bs = BeautifulSoup(html, 'html.parser')\n", - " #finds only the links with class \"mw-anonuserlink\" which has IP addresses \n", - " #instead of usernames\n", - " ipAddresses = bs.findAll('a', {'class':'mw-anonuserlink'})\n", - " addressList = set()\n", - " for ipAddress in ipAddresses:\n", - " addressList.add(ipAddress.get_text())\n", - " return addressList\n", - "\n", - "links = getLinks('/wiki/Python_(programming_language)')\n", - "\n", - "while(len(links) > 0):\n", - " for link in links:\n", - " print('-'*20) \n", - " historyIPs = getHistoryIPs(link.attrs['href'])\n", - " for historyIP in historyIPs:\n", - " print(historyIP)\n", - "\n", - " newLink = links[random.randint(0, len(links)-1)].attrs['href']\n", - " links = getLinks(newLink)" - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "--------------------\n", - "history url is: http://en.wikipedia.org/w/index.php?title=Programming_paradigm&action=history\n", - "223.104.186.241 is from CN\n", - "213.207.90.158 is from NL\n", - "92.115.222.143 is from MD\n", - "213.108.115.55 is from PL\n", - "2605:a601:e0c:6300:996d:68c0:fb03:af2c is from US\n", - "192.117.105.47 is from IL\n", - "31.203.136.191 is from KW\n", - "168.216.130.133 is from US\n", - "2a02:c7d:a492:f200:e126:2b36:53ca:513a is from GB\n", - "37.238.238.36 is from IQ\n", - "197.255.127.246 is from GH\n", - "110.55.67.15 is from PH\n", - "193.80.242.220 is from AT\n", - "42.111.56.168 is from IN\n", - "223.230.96.108 is from IN\n", - "113.162.8.249 is from VN\n", - "39.36.182.41 is from PK\n", - "--------------------\n", - "history url is: http://en.wikipedia.org/w/index.php?title=Object-oriented_programming&action=history\n", - "113.199.249.237 is from NP\n", - "205.251.185.250 is from US\n", - "1.22.150.73 is from IN\n", - "121.58.212.157 is from PH\n", - "217.225.8.24 is from DE\n", - "162.204.116.16 is from US\n", - "112.200.199.62 is from PH\n", - "117.239.185.50 is from IN\n", - "103.252.25.104 is from IN\n", - "103.74.23.139 is from PK\n", - "103.241.244.36 is from IN\n", - "2605:a601:474:600:2088:fbde:7512:53b2 is from US\n", - "122.181.5.162 is from IN\n", - "24.93.131.140 is from US\n", - "119.152.87.84 is from PK\n", - "93.136.125.208 is from HR\n", - "27.251.109.234 is from IN\n", - "223.230.215.145 is from IN\n", - "103.16.68.215 is from IN\n", - "170.142.177.246 is from US\n", - "--------------------\n", - "history url is: http://en.wikipedia.org/w/index.php?title=Imperative_programming&action=history\n" - ] - }, - { - "ename": "NameError", - "evalue": "name 'HTTPError' is not defined", - "output_type": "error", - "traceback": [ - "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", - "\u001b[0;31mKeyboardInterrupt\u001b[0m Traceback (most recent call last)", - "\u001b[0;32m\u001b[0m in \u001b[0;36mgetCountry\u001b[0;34m(ipAddress)\u001b[0m\n\u001b[1;32m 3\u001b[0m response = urlopen(\n\u001b[0;32m----> 4\u001b[0;31m 'http://freegeoip.net/json/{}'.format(ipAddress)).read().decode('utf-8')\n\u001b[0m\u001b[1;32m 5\u001b[0m \u001b[0;32mexcept\u001b[0m \u001b[0mHTTPError\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/urllib/request.py\u001b[0m in \u001b[0;36murlopen\u001b[0;34m(url, data, timeout, cafile, capath, cadefault, context)\u001b[0m\n\u001b[1;32m 222\u001b[0m \u001b[0mopener\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0m_opener\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 223\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mopener\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mopen\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0murl\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mdata\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mtimeout\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 224\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/urllib/request.py\u001b[0m in \u001b[0;36mopen\u001b[0;34m(self, fullurl, data, timeout)\u001b[0m\n\u001b[1;32m 525\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 526\u001b[0;31m \u001b[0mresponse\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_open\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mreq\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mdata\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 527\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/urllib/request.py\u001b[0m in \u001b[0;36m_open\u001b[0;34m(self, req, data)\u001b[0m\n\u001b[1;32m 543\u001b[0m result = self._call_chain(self.handle_open, protocol, protocol +\n\u001b[0;32m--> 544\u001b[0;31m '_open', req)\n\u001b[0m\u001b[1;32m 545\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mresult\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/urllib/request.py\u001b[0m in \u001b[0;36m_call_chain\u001b[0;34m(self, chain, kind, meth_name, *args)\u001b[0m\n\u001b[1;32m 503\u001b[0m \u001b[0mfunc\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mgetattr\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mhandler\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mmeth_name\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 504\u001b[0;31m \u001b[0mresult\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mfunc\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 505\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mresult\u001b[0m \u001b[0;32mis\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0;32mNone\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/urllib/request.py\u001b[0m in \u001b[0;36mhttp_open\u001b[0;34m(self, req)\u001b[0m\n\u001b[1;32m 1345\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0mhttp_open\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mreq\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 1346\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mdo_open\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mhttp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mclient\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mHTTPConnection\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mreq\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 1347\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/urllib/request.py\u001b[0m in \u001b[0;36mdo_open\u001b[0;34m(self, http_class, req, **http_conn_args)\u001b[0m\n\u001b[1;32m 1320\u001b[0m \u001b[0;32mraise\u001b[0m \u001b[0mURLError\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0merr\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 1321\u001b[0;31m \u001b[0mr\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mh\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mgetresponse\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 1322\u001b[0m \u001b[0;32mexcept\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/http/client.py\u001b[0m in \u001b[0;36mgetresponse\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 1330\u001b[0m \u001b[0;32mtry\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 1331\u001b[0;31m \u001b[0mresponse\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mbegin\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 1332\u001b[0m \u001b[0;32mexcept\u001b[0m \u001b[0mConnectionError\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/http/client.py\u001b[0m in \u001b[0;36mbegin\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 296\u001b[0m \u001b[0;32mwhile\u001b[0m \u001b[0;32mTrue\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 297\u001b[0;31m \u001b[0mversion\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mstatus\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mreason\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_read_status\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 298\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mstatus\u001b[0m \u001b[0;34m!=\u001b[0m \u001b[0mCONTINUE\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/http/client.py\u001b[0m in \u001b[0;36m_read_status\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 257\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0m_read_status\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 258\u001b[0;31m \u001b[0mline\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mstr\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mfp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mreadline\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0m_MAXLINE\u001b[0m \u001b[0;34m+\u001b[0m \u001b[0;36m1\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m\"iso-8859-1\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 259\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mlen\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mline\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;34m>\u001b[0m \u001b[0m_MAXLINE\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/socket.py\u001b[0m in \u001b[0;36mreadinto\u001b[0;34m(self, b)\u001b[0m\n\u001b[1;32m 585\u001b[0m \u001b[0;32mtry\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 586\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_sock\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mrecv_into\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mb\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 587\u001b[0m \u001b[0;32mexcept\u001b[0m \u001b[0mtimeout\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;31mKeyboardInterrupt\u001b[0m: ", - "\nDuring handling of the above exception, another exception occurred:\n", - "\u001b[0;31mNameError\u001b[0m Traceback (most recent call last)", - "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[1;32m 15\u001b[0m \u001b[0mhistoryIPs\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mgetHistoryIPs\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mlink\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mattrs\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m\"href\"\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 16\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0mhistoryIP\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mhistoryIPs\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 17\u001b[0;31m \u001b[0mcountry\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mgetCountry\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mhistoryIP\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 18\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mcountry\u001b[0m \u001b[0;32mis\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0;32mNone\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 19\u001b[0m \u001b[0mprint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'{} is from {}'\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mformat\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mhistoryIP\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mcountry\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m\u001b[0m in \u001b[0;36mgetCountry\u001b[0;34m(ipAddress)\u001b[0m\n\u001b[1;32m 3\u001b[0m response = urlopen(\n\u001b[1;32m 4\u001b[0m 'http://freegeoip.net/json/{}'.format(ipAddress)).read().decode('utf-8')\n\u001b[0;32m----> 5\u001b[0;31m \u001b[0;32mexcept\u001b[0m \u001b[0mHTTPError\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 6\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0;32mNone\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 7\u001b[0m \u001b[0mresponseJson\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mjson\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mloads\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mresponse\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;31mNameError\u001b[0m: name 'HTTPError' is not defined" - ] - } - ], - "source": [ - "def getCountry(ipAddress):\n", - " try:\n", - " response = urlopen(\n", - " 'http://freegeoip.net/json/{}'.format(ipAddress)).read().decode('utf-8')\n", - " except HTTPError:\n", - " return None\n", - " responseJson = json.loads(response)\n", - " return responseJson.get('country_code')\n", - " \n", - "links = getLinks('/wiki/Python_(programming_language)')\n", - "\n", - "while(len(links) > 0):\n", - " for link in links:\n", - " print('-'*20) \n", - " historyIPs = getHistoryIPs(link.attrs[\"href\"])\n", - " for historyIP in historyIPs:\n", - " country = getCountry(historyIP)\n", - " if country is not None:\n", - " print('{} is from {}'.format(historyIP, country))\n", - "\n", - " newLink = links[random.randint(0, len(links)-1)].attrs['href']\n", - " links = getLinks(newLink)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.6.1" - } - }, - "nbformat": 4, - "nbformat_minor": 2 -} diff --git a/Chapter12_NaturalLanguages.ipynb b/Chapter12_NaturalLanguages.ipynb new file mode 100644 index 0000000..1157f2c --- /dev/null +++ b/Chapter12_NaturalLanguages.ipynb @@ -0,0 +1,1834 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [], + "source": [ + "import re\n", + "import string \n", + "from collections import Counter, defaultdict\n", + "\n", + "from urllib.request import urlopen" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": {}, + "outputs": [], + "source": [ + "def replace_newlines(text):\n", + " return text.replace('\\n', ' ')\n", + "\n", + "def make_lowercase(text):\n", + " return text.lower()\n", + "\n", + "def split_sentences(text):\n", + " return [s.strip() for s in text.split('. ')]\n", + "\n", + "puncts = [re.escape(c) for c in string.punctuation]\n", + "PUNCTUATION_REGEX = re.compile('|'.join(puncts))\n", + "def remove_punctuation(text):\n", + " return re.sub(PUNCTUATION_REGEX, '', text)\n" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "['called from a retirement which i had supposed was to continue for the residue of my life to fill the chief executive office of this great and free nation i appear before you fellowcitizens to take the oaths which the constitution prescribes as a necessary qualification for the performance of its duties and in obedience to a custom coeval with our government and what i believe to be your expectations i proceed to present to you a summary of the principles which will govern me in the discharge of the duties which i shall be called upon to perform', 'it was the remark of a roman consul in an early period of that celebrated republic that a most striking contrast was observable in the conduct of candidates for offices of power and trust before and after obtaining them they seldom carrying out in the latter case the pledges and promises made in the former', 'however much the world may have improved in many respects in the lapse of upward of two thousand years since the remark was made by the virtuous and indignant roman i fear that a strict examination of the annals of some of the modern elective governments would develop similar instances of violated confidence', 'although the fiat of the people has gone forth proclaiming me the chief magistrate of this glorious union nothing upon their part remaining to be done it may be thought that a motive may exist to keep up the delusion under which they may be supposed to have acted in relation to my principles and opinions and perhaps there may be some in this assembly who have come here either prepared to condemn those i shall now deliver or approving them to doubt the sincerity with which they are now uttered', 'but the lapse of a few months will confirm or dispel their fears', 'the outline of principles to govern and measures to be adopted by an administration not yet begun will soon be exchanged for immutable history and i shall stand either exonerated by my countrymen or classed with the mass of those who promised that they might deceive and flattered with the intention to betray', 'however strong may be my present purpose to realize the expectations of a magnanimous and confiding people i too well understand the dangerous temptations to which i shall be exposed from the magnitude of the power which it has been the pleasure of the people to commit to my hands not to place my chief confidence upon the aid of that almighty power which has hitherto protected me and enabled me to bring to favorable issues other important but still greatly inferior trusts heretofore confided to me by my country', 'the broad foundation upon which our constitution rests being the peoplea breath of theirs having made as a breath can unmake change or modify itit can be assigned to none of the great divisions of government but to that of democracy', 'if such is its theory those who are called upon to administer it must recognize as its leading principle the duty of shaping their measures so as to produce the greatest good to the greatest number', 'but with these broad admissions if we would compare the sovereignty acknowledged to exist in the mass of our people with the power claimed by other sovereignties even by those which have been considered most purely democratic we shall find a most essential difference', 'all others lay claim to power limited only by their own will', 'the majority of our citizens on the contrary possess a sovereignty with an amount of power precisely equal to that which has been granted to them by the parties to the national compact and nothing beyond', 'we admit of no government by divine right believing that so far as power is concerned the beneficent creator has made no distinction amongst men that all are upon an equality and that the only legitimate right to govern is an express grant of power from the governed', 'the constitution of the united states is the instrument containing this grant of power to the several departments composing the government', 'on an examination of that instrument it will be found to contain declarations of power granted and of power withheld', 'the latter is also susceptible of division into power which the majority had the right to grant but which they do not think proper to intrust to their agents and that which they could not have granted not being possessed by themselves', 'in other words there are certain rights possessed by each individual american citizen which in his compact with the others he has never surrendered', 'some of them indeed he is unable to surrender being in the language of our system unalienable', 'the boasted privilege of a roman citizen was to him a shield only against a petty provincial ruler whilst the proud democrat of athens would console himself under a sentence of death for a supposed violation of the national faithwhich no one understood and which at times was the subject of the mockery of allor the banishment from his home his family and his country with or without an alleged cause that it was the act not of a single tyrant or hated aristocracy but of his assembled countrymen', 'far different is the power of our sovereignty', 'it can interfere with no ones faith prescribe forms of worship for no ones observance inflict no punishment but after wellascertained guilt the result of investigation under rules prescribed by the constitution itself', 'these precious privileges and those scarcely less important of giving expression to his thoughts and opinions either by writing or speaking unrestrained but by the liability for injury to others and that of a full participation in all the advantages which flow from the government the acknowledged property of all the american citizen derives from no charter granted by his fellowman', 'he claims them because he is himself a man fashioned by the same almighty hand as the rest of his species and entitled to a full share of the blessings with which he has endowed them', 'notwithstanding the limited sovereignty possessed by the people of the united states and the restricted grant of power to the government which they have adopted enough has been given to accomplish all the objects for which it was created', 'it has been found powerful in war and hitherto justice has been administered and intimate union effected domestic tranquillity preserved and personal liberty secured to the citizen', 'as was to be expected however from the defect of language and the necessarily sententious manner in which the constitution is written disputes have arisen as to the amount of power which it has actually granted or was intended to grant', 'this is more particularly the case in relation to that part of the instrument which treats of the legislative branch and not only as regards the exercise of powers claimed under a general clause giving that body the authority to pass all laws necessary to carry into effect the specified powers but in relation to the latter also', 'it is however consolatory to reflect that most of the instances of alleged departure from the letter or spirit of the constitution have ultimately received the sanction of a majority of the people', 'and the fact that many of our statesmen most distinguished for talent and patriotism have been at one time or other of their political career on both sides of each of the most warmly disputed questions forces upon us the inference that the errors if errors there were are attributable to the intrinsic difficulty in many instances of ascertaining the intentions of the framers of the constitution rather than the influence of any sinister or unpatriotic motive', 'but the great danger to our institutions does not appear to me to be in a usurpation by the government of power not granted by the people but by the accumulation in one of the departments of that which was assigned to others', 'limited as are the powers which have been granted still enough have been granted to constitute a despotism if concentrated in one of the departments', 'this danger is greatly heightened as it has been always observable that men are less jealous of encroachments of one department upon another than upon their own reserved rights', 'when the constitution of the united states first came from the hands of the convention which formed it many of the sternest republicans of the day were alarmed at the extent of the power which had been granted to the federal government and more particularly of that portion which had been assigned to the executive branch', 'there were in it features which appeared not to be in harmony with their ideas of a simple representative democracy or republic and knowing the tendency of power to increase itself particularly when exercised by a single individual predictions were made that at no very remote period the government would terminate in virtual monarchy', 'it would not become me to say that the fears of these patriots have been already realized but as i sincerely believe that the tendency of measures and of mens opinions for some years past has been in that direction it is i conceive strictly proper that i should take this occasion to repeat the assurances i have heretofore given of my determination to arrest the progress of that tendency if it really exists and restore the government to its pristine health and vigor as far as this can be effected by any legitimate exercise of the power placed in my hands', 'i proceed to state in as summary a manner as i can my opinion of the sources of the evils which have been so extensively complained of and the correctives which may be applied', 'some of the former are unquestionably to be found in the defects of the constitution others in my judgment are attributable to a misconstruction of some of its provisions', 'of the former is the eligibility of the same individual to a second term of the presidency', 'the sagacious mind of mr', 'jefferson early saw and lamented this error and attempts have been made hitherto without success to apply the amendatory power of the states to its correction', 'as however one mode of correction is in the power of every president and consequently in mine it would be useless and perhaps invidious to enumerate the evils of which in the opinion of many of our fellowcitizens this error of the sages who framed the constitution may have been the source and the bitter fruits which we are still to gather from it if it continues to disfigure our system', 'it may be observed however as a general remark that republics can commit no greater error than to adopt or continue any feature in their systems of government which may be calculated to create or increase the lover of power in the bosoms of those to whom necessity obliges them to commit the management of their affairs and surely nothing is more likely to produce such a state of mind than the long continuance of an office of high trust', 'nothing can be more corrupting nothing more destructive of all those noble feelings which belong to the character of a devoted republican patriot', 'when this corrupting passion once takes possession of the human mind like the love of gold it becomes insatiable', 'it is the neverdying worm in his bosom grows with his growth and strengthens with the declining years of its victim', 'if this is true it is the part of wisdom for a republic to limit the service of that officer at least to whom she has intrusted the management of her foreign relations the execution of her laws and the command of her armies and navies to a period so short as to prevent his forgetting that he is the accountable agent not the principal the servant not the master', 'until an amendment of the constitution can be effected public opinion may secure the desired object', 'i give my aid to it by renewing the pledge heretofore given that under no circumstances will i consent to serve a second term', 'but if there is danger to public liberty from the acknowledged defects of the constitution in the want of limit to the continuance of the executive power in the same hands there is i apprehend not much less from a misconstruction of that instrument as it regards the powers actually given', 'i can not conceive that by a fair construction any or either of its provisions would be found to constitute the president a part of the legislative power', 'it can not be claimed from the power to recommend since although enjoined as a duty upon him it is a privilege which he holds in common with every other citizen and although there may be something more of confidence in the propriety of the measures recommended in the one case than in the other in the obligations of ultimate decision there can be no difference', 'in the language of the constitution all the legislative powers which it grants are vested in the congress of the united states it would be a solecism in language to say that any portion of these is not included in the whole', 'it may be said indeed that the constitution has given to the executive the power to annul the acts of the legislative body by refusing to them his assent', 'so a similar power has necessarily resulted from that instrument to the judiciary and yet the judiciary forms no part of the legislature', 'there is it is true this difference between these grants of power the executive can put his negative upon the acts of the legislature for other cause than that of want of conformity to the constitution whilst the judiciary can only declare void those which violate that instrument', 'but the decision of the judiciary is final in such a case whereas in every instance where the veto of the executive is applied it may be overcome by a vote of twothirds of both houses of congress', 'the negative upon the acts of the legislative by the executive authority and that in the hands of one individual would seem to be an incongruity in our system', 'like some others of a similar character however it appears to be highly expedient and if used only with the forbearance and in the spirit which was intended by its authors it may be productive of great good and be found one of the best safeguards to the union', 'at the period of the formation of the constitution the principle does not appear to have enjoyed much favor in the state governments', 'it existed but in two and in one of these there was a plural executive', 'if we would search for the motives which operated upon the purely patriotic and enlightened assembly which framed the constitution for the adoption of a provision so apparently repugnant to the leading democratic principle that the majority should govern we must reject the idea that they anticipated from it any benefit to the ordinary course of legislation', 'they knew too well the high degree of intelligence which existed among the people and the enlightened character of the state legislatures not to have the fullest confidence that the two bodies elected by them would be worthy representatives of such constituents and of course that they would require no aid in conceiving and maturing the measures which the circumstances of the country might require', 'and it is preposterous to suppose that a thought could for a moment have been entertained that the president placed at the capital in the center of the country could better understand the wants and wishes of the people than their own immediate representatives who spend a part of every year among them living with them often laboring with them and bound to them by the triple tie of interest duty and affection', 'to assist or control congress then in its ordinary legislation could not i conceive have been the motive for conferring the veto power on the president', 'this argument acquires additional force from the fact of its never having been thus used by the first six presidentsand two of them were members of the convention one presiding over its deliberations and the other bearing a larger share in consummating the labors of that august body than any other person', 'but if bills were never returned to congress by either of the presidents above referred to upon the ground of their being inexpedient or not as well adapted as they might be to the wants of the people the veto was applied upon that of want of conformity to the constitution or because errors had been committed from a too hasty enactment', 'there is another ground for the adoption of the veto principle which had probably more influence in recommending it to the convention than any other', 'i refer to the security which it gives to the just and equitable action of the legislature upon all parts of the union', 'it could not but have occurred to the convention that in a country so extensive embracing so great a variety of soil and climate and consequently of products and which from the same causes must ever exhibit a great difference in the amount of the population of its various sections calling for a great diversity in the employments of the people that the legislation of the majority might not always justly regard the rights and interests of the minority and that acts of this character might be passed under an express grant by the words of the constitution and therefore not within the competency of the judiciary to declare void that however enlightened and patriotic they might suppose from past experience the members of congress might be and however largely partaking in the general of the liberal feelings of the people it was impossible to expect that bodies so constituted should not sometimes be controlled by local interests and sectional feelings', 'it was proper therefore to provide some umpire from whose situation and mode of appointment more independence and freedom from such influences might be expected', 'such a one was afforded by the executive department constituted by the constitution', 'a person elected to that high office having his constituents in every section state and subdivision of the union must consider himself bound by the most solemn sanctions to guard protect and defend the rights of all and of every portion great or small from the injustice and oppression of the rest', 'i consider the veto power therefore given by the constitution to the executive of the united states solely as a conservative power to be used only first to protect the constitution from violation secondly the people from the effects of hasty legislation where their will has been probably disregarded or not well understood and thirdly to prevent the effects of combinations violative of the rights of minorities', 'in reference to the second of these objects i may observe that i consider it the right and privilege of the people to decide disputed points of the constitution arising from the general grant of power to congress to carry into effect the powers expressly given and i believe with mr', 'madison that repeated recognitions under varied circumstances in acts of the legislative executive and judicial branches of the government accompanied by indications in different modes of the concurrence of the general will of the nation as affording to the president sufficient authority for his considering such disputed points as settled', 'upward of half a century has elapsed since the adoption of the present form of government', 'it would be an object more highly desirable than the gratification of the curiosity of speculative statesmen if its precise situation could be ascertained a fair exhibit made of the operations of each of its departments of the powers which they respectively claim and exercise of the collisions which have occurred between them or between the whole government and those of the states or either of them', 'we could then compare our actual condition after fifty years trial of our system with what it was in the commencement of its operations and ascertain whether the predictions of the patriots who opposed its adoption or the confident hopes of its advocates have been best realized', 'the great dread of the former seems to have been that the reserved powers of the states would be absorbed by those of the federal government and a consolidated power established leaving to the states the shadow only of that independent action for which they had so zealously contended and on the preservation of which they relied as the last hope of liberty', 'without denying that the result to which they looked with so much apprehension is in the way of being realized it is obvious that they did not clearly see the mode of its accomplishment', 'the general government has seized upon none of the reserved rights of the states', 'as far as any open warfare may have gone the state authorities have amply maintained their rights', 'to a casual observer our system presents no appearance of discord between the different members which compose it', 'even the addition of many new ones has produced no jarring', 'they move in their respective orbits in perfect harmony with the central head and with each other', 'but there is still an undercurrent at work by which if not seasonably checked the worst apprehensions of our antifederal patriots will be realized and not only will the state authorities be overshadowed by the great increase of power in the executive department of the general government but the character of that government if not its designation be essentially and radically changed', 'this state of things has been in part effected by causes inherent in the constitution and in part by the neverfailing tendency of political power to increase itself', 'by making the president the sole distributer of all the patronage of the government the framers of the constitution do not appear to have anticipated at how short a period it would become a formidable instrument to control the free operations of the state governments', 'of trifling importance at first it had early in mr', 'jeffersons administration become so powerful as to create great alarm in the mind of that patriot from the potent influence it might exert in controlling the freedom of the elective franchise', 'if such could have then been the effects of its influence how much greater must be the danger at this time quadrupled in amount as it certainly is and more completely under the control of the executive will than their construction of their powers allowed or the forbearing characters of all the early presidents permitted them to make', 'but it is not by the extent of its patronage alone that the executive department has become dangerous but by the use which it appears may be made of the appointing power to bring under its control the whole revenues of the country', 'the constitution has declared it to be the duty of the president to see that the laws are executed and it makes him the commander in chief of the armies and navy of the united states', 'if the opinion of the most approved writers upon that species of mixed government which in modern europe is termed monarchy in contradistinction to despotism is correct there was wanting no other addition to the powers of our chief magistrate to stamp a monarchical character on our government but the control of the public finances and to me it appears strange indeed that anyone should doubt that the entire control which the president possesses over the officers who have the custody of the public money by the power of removal with or without cause does for all mischievous purposes at least virtually subject the treasure also to his disposal', 'the first roman emperor in his attempt to seize the sacred treasure silenced the opposition of the officer to whose charge it had been committed by a significant allusion to his sword', 'by a selection of political instruments for the care of the public money a reference to their commissions by a president would be quite as effectual an argument as that of caesar to the roman knight', 'i am not insensible of the great difficulty that exists in drawing a proper plan for the safekeeping and disbursement of the public revenues and i know the importance which has been attached by men of great abilities and patriotism to the divorce as it is called of the treasury from the banking institutions', 'it is not the divorce which is complained of but the unhallowed union of the treasury with the executive department which has created such extensive alarm', 'to this danger to our republican institutions and that created by the influence given to the executive through the instrumentality of the federal officers i propose to apply all the remedies which may be at my command', 'it was certainly a great error in the framers of the constitution not to have made the officer at the head of the treasury department entirely independent of the executive', 'he should at least have been removable only upon the demand of the popular branch of the legislature', 'i have determined never to remove a secretary of the treasury without communicating all the circumstances attending such removal to both houses of congress', 'the influence of the executive in controlling the freedom of the elective franchise through the medium of the public officers can be effectually checked by renewing the prohibition published by mr', 'jefferson forbidding their interference in elections further than giving their own votes and their own independence secured by an assurance of perfect immunity in exercising this sacred privilege of freemen under the dictates of their own unbiased judgments', 'never with my consent shall an officer of the people compensated for his services out of their pockets become the pliant instrument of executive will', 'there is no part of the means placed in the hands of the executive which might be used with greater effect for unhallowed purposes than the control of the public press', 'the maxim which our ancestors derived from the mother country that the freedom of the press is the great bulwark of civil and religious liberty is one of the most precious legacies which they have left us', 'we have learned too from our own as well as the experience of other countries that golden shackles by whomsoever or by whatever pretense imposed are as fatal to it as the iron bonds of despotism', 'the presses in the necessary employment of the government should never be used to clear the guilty or to varnish crime a decent and manly examination of the acts of the government should be not only tolerated but encouraged', 'upon another occasion i have given my opinion at some length upon the impropriety of executive interference in the legislation of congressthat the article in the constitution making it the duty of the president to communicate information and authorizing him to recommend measures was not intended to make him the source in legislation and in particular that he should never be looked to for schemes of finance', 'it would be very strange indeed that the constitution should have strictly forbidden one branch of the legislature from interfering in the origination of such bills and that it should be considered proper that an altogether different department of the government should be permitted to do so', 'some of our best political maxims and opinions have been drawn from our parent isle', 'there are others however which can not be introduced in our system without singular incongruity and the production of much mischief and this i conceive to be one', 'no matter in which of the houses of parliament a bill may originate nor by whom introduceda minister or a member of the oppositionby the fiction of law or rather of constitutional principle the sovereign is supposed to have prepared it agreeably to his will and then submitted it to parliament for their advice and consent', 'now the very reverse is the case here not only with regard to the principle but the forms prescribed by the constitution', 'the principle certainly assigns to the only body constituted by the constitution the legislative body the power to make laws and the forms even direct that the enactment should be ascribed to them', 'the senate in relation to revenue bills have the right to propose amendments and so has the executive by the power given him to return them to the house of representatives with his objections', 'it is in his power also to propose amendments in the existing revenue laws suggested by his observations upon their defective or injurious operation', 'but the delicate duty of devising schemes of revenue should be left where the constitution has placed itwith the immediate representatives of the people', 'for similar reasons the mode of keeping the public treasure should be prescribed by them and the further removed it may be from the control of the executive the more wholesome the arrangement and the more in accordance with republican principle', 'connected with this subject is the character of the currency', 'the idea of making it exclusively metallic however well intended appears to me to be fraught with more fatal consequences than any other scheme having no relation to the personal rights of the citizens that has ever been devised', 'if any single scheme could produce the effect of arresting at once that mutation of condition by which thousands of our most indigent fellowcitizens by their industry and enterprise are raised to the possession of wealth that is the one', 'if there is one measure better calculated than another to produce that state of things so much deprecated by all true republicans by which the rich are daily adding to their hoards and the poor sinking deeper into penury it is an exclusive metallic currency', 'or if there is a process by which the character of the country for generosity and nobleness of feeling may be destroyed by the great increase and neck toleration of usury it is an exclusive metallic currency', 'amongst the other duties of a delicate character which the president is called upon to perform is the supervision of the government of the territories of the united states', 'those of them which are destined to become members of our great political family are compensated by their rapid progress from infancy to manhood for the partial and temporary deprivation of their political rights', 'it is in this district only where american citizens are to be found who under a settled policy are deprived of many important political privileges without any inspiring hope as to the future', 'their only consolation under circumstances of such deprivation is that of the devoted exterior guards of a campthat their sufferings secure tranquillity and safety within', 'are there any of their countrymen who would subject them to greater sacrifices to any other humiliations than those essentially necessary to the security of the object for which they were thus separated from their fellowcitizens are their rights alone not to be guaranteed by the application of those great principles upon which all our constitutions are founded we are told by the greatest of british orators and statesmen that at the commencement of the war of the revolution the most stupid men in england spoke of their american subjects are there indeed citizens of any of our states who have dreamed of their subjects in the district of columbia such dreams can never be realized by any agency of mine', 'the people of the district of columbia are not the subjects of the people of the states but free american citizens', 'being in the latter condition when the constitution was formed no words used in that instrument could have been intended to deprive them of that character', 'if there is anything in the great principle of unalienable rights so emphatically insisted upon in our declaration of independence they could neither make nor the united states accept a surrender of their liberties and become the subjectsin other words the slavesof their former fellowcitizens', 'if this be trueand it will scarcely be denied by anyone who has a correct idea of his own rights as an american citizenthe grant to congress of exclusive jurisdiction in the district of columbia can be interpreted so far as respects the aggregate people of the united states as meaning nothing more than to allow to congress the controlling power necessary to afford a free and safe exercise of the functions assigned to the general government by the constitution', 'in all other respects the legislation of congress should be adapted to their peculiar position and wants and be conformable with their deliberate opinions of their own interests', 'i have spoken of the necessity of keeping the respective departments of the government as well as all the other authorities of our country within their appropriate orbits', 'this is a matter of difficulty in some cases as the powers which they respectively claim are often not defined by any distinct lines', 'mischievous however in their tendencies as collisions of this kind may be those which arise between the respective communities which for certain purposes compose one nation are much more so for no such nation can long exist without the careful culture of those feelings of confidence and affection which are the effective bonds to union between free and confederated states', 'strong as is the tie of interest it has been often found ineffectual', 'men blinded by their passions have been known to adopt measures for their country in direct opposition to all the suggestions of policy', 'the alternative then is to destroy or keep down a bad passion by creating and fostering a good one and this seems to be the corner stone upon which our american political architects have reared the fabric of our government', 'the cement which was to bind it and perpetuate its existence was the affectionate attachment between all its members', 'to insure the continuance of this feeling produced at first by a community of dangers of sufferings and of interests the advantages of each were made accessible to all', 'no participation in any good possessed by any member of our extensive confederacy except in domestic government was withheld from the citizen of any other member', 'by a process attended with no difficulty no delay no expense but that of removal the citizen of one might become the citizen of any other and successively of the whole', 'the lines too separating powers to be exercised by the citizens of one state from those of another seem to be so distinctly drawn as to leave no room for misunderstanding', 'the citizens of each state unite in their persons all the privileges which that character confers and all that they may claim as citizens of the united states but in no case can the same persons at the same time act as the citizen of two separate states and he is therefore positively precluded from any interference with the reserved powers of any state but that of which he is for the time being a citizen', 'he may indeed offer to the citizens of other states his advice as to their management and the form in which it is tendered is left to his own discretion and sense of propriety', 'it may be observed however that organized associations of citizens requiring compliance with their wishes too much resemble the recommendations of athens to her allies supported by an armed and powerful fleet', 'it was indeed to the ambition of the leading states of greece to control the domestic concerns of the others that the destruction of that celebrated confederacy and subsequently of all its members is mainly to be attributed and it is owing to the absence of that spirit that the helvetic confederacy has for so many years been preserved', 'never has there been seen in the institutions of the separate members of any confederacy more elements of discord', 'in the principles and forms of government and religion as well as in the circumstances of the several cantons so marked a discrepancy was observable as to promise anything but harmony in their intercourse or permanency in their alliance and yet for ages neither has been interrupted', 'content with the positive benefits which their union produced with the independence and safety from foreign aggression which it secured these sagacious people respected the institutions of each other however repugnant to their own principles and prejudices', 'our confederacy fellowcitizens can only be preserved by the same forbearance', 'our citizens must be content with the exercise of the powers with which the constitution clothes them', 'the attempt of those of one state to control the domestic institutions of another can only result in feelings of distrust and jealousy the certain harbingers of disunion violence and civil war and the ultimate destruction of our free institutions', 'our confederacy is perfectly illustrated by the terms and principles governing a common copartnership', 'there is a fund of power to be exercised under the direction of the joint councils of the allied members but that which has been reserved by the individual members is intangible by the common government or the individual members composing it', 'to attempt it finds no support in the principles of our constitution', 'it should be our constant and earnest endeavor mutually to cultivate a spirit of concord and harmony among the various parts of our confederacy', 'experience has abundantly taught us that the agitation by citizens of one part of the union of a subject not confided to the general government but exclusively under the guardianship of the local authorities is productive of no other consequences than bitterness alienation discord and injury to the very cause which is intended to be advanced', 'of all the great interests which appertain to our country that of unioncordial confiding fraternal unionis by far the most important since it is the only true and sure guaranty of all others', 'in consequence of the embarrassed state of business and the currency some of the states may meet with difficulty in their financial concerns', 'however deeply we may regret anything imprudent or excessive in the engagements into which states have entered for purposes of their own it does not become us to disparage the states governments nor to discourage them from making proper efforts for their own relief', 'on the contrary it is our duty to encourage them to the extent of our constitutional authority to apply their best means and cheerfully to make all necessary sacrifices and submit to all necessary burdens to fulfill their engagements and maintain their credit for the character and credit of the several states form a part of the character and credit of the whole country', 'the resources of the country are abundant the enterprise and activity of our people proverbial and we may well hope that wise legislation and prudent administration by the respective governments each acting within its own sphere will restore former prosperity', 'unpleasant and even dangerous as collisions may sometimes be between the constituted authorities of the citizens of our country in relation to the lines which separate their respective jurisdictions the results can be of no vital injury to our institutions if that ardent patriotism that devoted attachment to liberty that spirit of moderation and forbearance for which our countrymen were once distinguished continue to be cherished', 'if this continues to be the ruling passion of our souls the weaker feeling of the mistaken enthusiast will be corrected the utopian dreams of the scheming politician dissipated and the complicated intrigues of the demagogue rendered harmless', 'the spirit of liberty is the sovereign balm for every injury which our institutions may receive', 'on the contrary no care that can be used in the construction of our government no division of powers no distribution of checks in its several departments will prove effectual to keep us a free people if this spirit is suffered to decay and decay it will without constant nurture', 'to the neglect of this duty the best historians agree in attributing the ruin of all the republics with whose existence and fall their writings have made us acquainted', 'the same causes will ever produce the same effects and as long as the love of power is a dominant passion of the human bosom and as long as the understandings of men can be warped and their affections changed by operations upon their passions and prejudices so long will the liberties of a people depend on their own constant attention to its preservation', 'the danger to all wellestablished free governments arises from the unwillingness of the people to believe in its existence or from the influence of designing men diverting their attention from the quarter whence it approaches to a source from which it can never come', 'this is the old trick of those who would usurp the government of their country', 'in the name of democracy they speak warning the people against the influence of wealth and the danger of aristocracy', 'history ancient and modern is full of such examples', 'caesar became the master of the roman people and the senate under the pretense of supporting the democratic claims of the former against the aristocracy of the latter cromwell in the character of protector of the liberties of the people became the dictator of england and bolivar possessed himself of unlimited power with the title of his countrys liberator', 'there is on the contrary no instance on record of an extensive and wellestablished republic being changed into an aristocracy', 'the tendencies of all such governments in their decline is to monarchy and the antagonist principle to liberty there is the spirit of factiona spirit which assumes the character and in times of great excitement imposes itself upon the people as the genuine spirit of freedom and like the false christs whose coming was foretold by the savior seeks to and were it possible would impose upon the true and most faithful disciples of liberty', 'it is in periods like this that it behooves the people to be most watchful of those to whom they have intrusted power', 'and although there is at times much difficulty in distinguishing the false from the true spirit a calm and dispassionate investigation will detect the counterfeit as well by the character of its operations as the results that are produced', 'the true spirit of liberty although devoted persevering bold and uncompromising in principle that secured is mild and tolerant and scrupulous as to the means it employs whilst the spirit of party assuming to be that of liberty is harsh vindictive and intolerant and totally reckless as to the character of the allies which it brings to the aid of its cause', 'when the genuine spirit of liberty animates the body of a people to a thorough examination of their affairs it leads to the excision of every excrescence which may have fastened itself upon any of the departments of the government and restores the system to its pristine health and beauty', 'but the reign of an intolerant spirit of party amongst a free people seldom fails to result in a dangerous accession to the executive power introduced and established amidst unusual professions of devotion to democracy', 'the foregoing remarks relate almost exclusively to matters connected with our domestic concerns', 'it may be proper however that i should give some indications to my fellowcitizens of my proposed course of conduct in the management of our foreign relations', 'i assure them therefore that it is my intention to use every means in my power to preserve the friendly intercourse which now so happily subsists with every foreign nation and that although of course not well informed as to the state of pending negotiations with any of them i see in the personal characters of the sovereigns as well as in the mutual interests of our own and of the governments with which our relations are most intimate a pleasing guaranty that the harmony so important to the interests of their subjects as well as of our citizens will not be interrupted by the advancement of any claim or pretension upon their part to which our honor would not permit us to yield', 'long the defender of my countrys rights in the field i trust that my fellowcitizens will not see in my earnest desire to preserve peace with foreign powers any indication that their rights will ever be sacrificed or the honor of the nation tarnished by any admission on the part of their chief magistrate unworthy of their former glory', 'in our intercourse with our aboriginal neighbors the same liberality and justice which marked the course prescribed to me by two of my illustrious predecessors when acting under their direction in the discharge of the duties of superintendent and commissioner shall be strictly observed', 'i can conceive of no more sublime spectacle none more likely to propitiate an impartial and common creator than a rigid adherence to the principles of justice on the part of a powerful nation in its transactions with a weaker and uncivilized people whom circumstances have placed at its disposal', 'before concluding fellowcitizens i must say something to you on the subject of the parties at this time existing in our country', 'to me it appears perfectly clear that the interest of that country requires that the violence of the spirit by which those parties are at this time governed must be greatly mitigated if not entirely extinguished or consequences will ensue which are appalling to be thought of', 'if parties in a republic are necessary to secure a degree of vigilance sufficient to keep the public functionaries within the bounds of law and duty at that point their usefulness ends', 'beyond that they become destructive of public virtue the parent of a spirit antagonist to that of liberty and eventually its inevitable conqueror', 'we have examples of republics where the love of country and of liberty at one time were the dominant passions of the whole mass of citizens and yet with the continuance of the name and forms of free government not a vestige of these qualities remaining in the bosoms of any one of its citizens', 'it was the beautiful remark of a distinguished english writer that in the roman senate octavius had a party and anthony a party but the commonwealth had none yet the senate continued to meet in the temple of liberty to talk of the sacredness and beauty of the commonwealth and gaze at the statues of the elder brutus and of the curtii and decii and the people assembled in the forum not as in the days of camillus and the scipios to cast their free votes for annual magistrates or pass upon the acts of the senate but to receive from the hands of the leaders of the respective parties their share of the spoils and to shout for one or the other as those collected in gaul or egypt and the lesser asia would furnish the larger dividend', 'the spirit of liberty had fled and avoiding the abodes of civilized man had sought protection in the wilds of scythia or scandinavia and so under the operation of the same causes and influences it will fly from our capitol and our forums', 'a calamity so awful not only to our country but to the world must be deprecated by every patriot and every tendency to a state of things likely to produce it immediately checked', 'such a tendency has existeddoes exist', 'always the friend of my countrymen never their flatterer it becomes my duty to say to them from this high place to which their partiality has exalted me that there exists in the land a spirit hostile to their best interestshostile to liberty itself', 'it is a spirit contracted in its views selfish in its objects', 'it looks to the aggrandizement of a few even to the destruction of the interests of the whole', 'the entire remedy is with the people', 'something however may be effected by the means which they have placed in my hands', 'it is union that we want not of a party for the sake of that party but a union of the whole country for the sake of the whole country for the defense of its interests and its honor against foreign aggression for the defense of those principles for which our ancestors so gloriously contended', 'as far as it depends upon me it shall be accomplished', 'all the influence that i possess shall be exerted to prevent the formation at least of an executive party in the halls of the legislative body', 'i wish for the support of no member of that body to any measure of mine that does not satisfy his judgment and his sense of duty to those from whom he holds his appointment nor any confidence in advance from the people but that asked for by mr', 'jefferson to give firmness and effect to the legal administration of their affairs i deem the present occasion sufficiently important and solemn to justify me in expressing to my fellowcitizens a profound reverence for the christian religion and a thorough conviction that sound morals religious liberty and a just sense of religious responsibility are essentially connected with all true and lasting happiness and to that good being who has blessed us by the gifts of civil and religious freedom who watched over and prospered the labors of our fathers and has hitherto preserved to us institutions far exceeding in excellence those of any other people let us unite in fervently commending every interest of our beloved country in all future time', 'fellowcitizens being fully invested with that high office to which the partiality of my countrymen has called me i now take an affectionate leave of you', 'you will bear with you to your homes the remembrance of the pledge i have this day given to discharge all the high duties of my exalted station according to the best of my ability and i shall enter upon their performance with entire confidence in the support of a just and generous people']\n" + ] + } + ], + "source": [ + "content = str(urlopen('http://pythonscraping.com/files/inaugurationSpeech.txt').read(), 'utf-8')\n", + "\n", + "text_operations = [\n", + " replace_newlines,\n", + " split_sentences,\n", + " make_lowercase,\n", + " remove_punctuation\n", + "]\n", + "\n", + "cleaned = content\n", + "for op in text_operations:\n", + " if type(cleaned) == list:\n", + " cleaned = [op(c) for c in cleaned]\n", + " else:\n", + " cleaned = op(cleaned)\n", + " \n", + "print(cleaned)" + ] + }, + { + "cell_type": "code", + "execution_count": 28, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[('of the', 213), ('in the', 65), ('to the', 61), ('by the', 41), ('the constitution', 34), ('of our', 29), ('to be', 26), ('the people', 24), ('from the', 24), ('that the', 23), ('and the', 23), ('it is', 23), ('of a', 22), ('may be', 19), ('of their', 19), ('the executive', 19), ('of that', 18), ('for the', 16), ('of its', 16), ('of power', 16), ('have been', 16), ('is the', 16), ('with the', 15), ('the government', 15), ('all the', 15), ('which they', 13), ('has been', 13), ('there is', 13), ('power to', 12), ('the power', 11), ('that of', 11), ('as to', 11), ('their own', 11), ('the same', 11), ('spirit of', 11), ('which the', 10), ('but the', 10), ('which it', 10), ('upon the', 10), ('can be', 10), ('the united', 10), ('united states', 10), ('of all', 10), ('as the', 10), ('part of', 10), ('the character', 10), ('of liberty', 10), ('of my', 9), ('to a', 9), ('it was', 9), ('the great', 9), ('on the', 9), ('of any', 9), ('the president', 9), ('the whole', 9), ('it may', 8), ('of those', 8), ('which our', 8), ('and that', 8), ('and of', 8), ('the legislative', 8), ('by a', 8), ('the states', 8), ('would be', 8), ('in their', 8), ('character of', 8), ('the public', 8), ('should be', 8), ('to have', 7), ('to their', 7), ('the powers', 7), ('at the', 7), ('acts of', 7), ('any other', 7), ('as well', 7), ('the general', 7), ('citizens of', 7), ('of this', 6), ('and in', 6), ('government and', 6), ('some of', 6), ('upon their', 6), ('relation to', 6), ('them to', 6), ('that they', 6), ('to me', 6), ('to that', 6), ('our system', 6), ('the most', 6), ('the influence', 6), ('one of', 6), ('of one', 6), ('it would', 6), ('state of', 6), ('is a', 6), ('the spirit', 6), ('the state', 6), ('in its', 6), ('those of', 6), ('under the', 6), ('as a', 5), ('i shall', 5), ('shall be', 5), ('was the', 5), ('the latter', 5), ('the former', 5), ('in relation', 5), ('to which', 5), ('power which', 5), ('it has', 5), ('people to', 5), ('not to', 5), ('which has', 5), ('to them', 5), ('of no', 5), ('far as', 5), ('that instrument', 5), ('be found', 5), ('of them', 5), ('he is', 5), ('to his', 5), ('for which', 5), ('the citizen', 5), ('not only', 5), ('exercise of', 5), ('of each', 5), ('to our', 5), ('as it', 5), ('of these', 5), ('i have', 5), ('by any', 5), ('in my', 5), ('is in', 5), ('the other', 5), ('the acts', 5), ('the judiciary', 5), ('the legislature', 5), ('the veto', 5), ('in our', 5), ('the country', 5), ('might be', 5), ('or the', 5), ('by which', 5), ('well as', 5), ('the citizens', 5), ('our country', 5), ('was to', 4), ('our government', 4), ('the principles', 4), ('that a', 4), ('may have', 4), ('examination of', 4), ('to my', 4), ('with which', 4), ('and i', 4), ('been the', 4), ('me to', 4), ('assigned to', 4), ('of government', 4), ('government but', 4), ('duty of', 4), ('to produce', 4), ('which have', 4), ('by their', 4), ('the majority', 4), ('the contrary', 4), ('that which', 4), ('been granted', 4), ('grant of', 4), ('it will', 4), ('possessed by', 4), ('in his', 4), ('for a', 4), ('that it', 4), ('of his', 4), ('power of', 4), ('people of', 4), ('they have', 4), ('given to', 4), ('intended to', 4), ('this is', 4), ('necessary to', 4), ('difficulty in', 4), ('than the', 4), ('influence of', 4), ('danger to', 4), ('does not', 4), ('in a', 4), ('departments of', 4), ('powers which', 4), ('the hands', 4), ('hands of', 4), ('the convention', 4), ('had been', 4), ('that i', 4), ('to its', 4), ('which may', 4), ('mode of', 4), ('of every', 4), ('such a', 4), ('continuance of', 4), ('of an', 4), ('if this', 4), ('at least', 4), ('not the', 4), ('if there', 4), ('of congress', 4), ('it appears', 4), ('the union', 4), ('of such', 4), ('members of', 4), ('to congress', 4), ('interests of', 4), ('executive department', 4), ('rights of', 4), ('be used', 4), ('between the', 4), ('general government', 4), ('control the', 4), ('must be', 4), ('be the', 4), ('the control', 4), ('control of', 4), ('to make', 4), ('the treasury', 4), ('the senate', 4), ('any of', 4), ('the respective', 4), ('to all', 4), ('citizen of', 4), ('but that', 4), ('a spirit', 4), ('from a', 3), ('which i', 3), ('with our', 3), ('called upon', 3), ('upon to', 3), ('instances of', 3), ('chief magistrate', 3), ('to keep', 3), ('principles and', 3), ('and opinions', 3), ('who have', 3), ('by an', 3), ('my countrymen', 3), ('mass of', 3), ('those who', 3), ('they might', 3), ('my hands', 3), ('upon which', 3), ('but to', 3), ('the duty', 3), ('produce the', 3), ('the greatest', 3), ('those which', 3), ('our citizens', 3), ('amount of', 3), ('granted to', 3), ('the only', 3), ('right to', 3), ('is an', 3), ('the several', 3), ('will be', 3), ('the right', 3), ('could not', 3), ('which in', 3), ('privilege of', 3), ('whilst the', 3), ('under a', 3), ('it can', 3), ('forms of', 3), ('prescribed by', 3), ('but by', 3), ('injury to', 3), ('in all', 3), ('which he', 3), ('government which', 3), ('in which', 3), ('but in', 3), ('many of', 3), ('the framers', 3), ('framers of', 3), ('our institutions', 3), ('not appear', 3), ('appear to', 3), ('government of', 3), ('in one', 3), ('the departments', 3), ('which was', 3), ('when the', 3), ('the extent', 3), ('extent of', 3), ('which had', 3), ('the federal', 3), ('with their', 3), ('tendency of', 3), ('to say', 3), ('i conceive', 3), ('as far', 3), ('be effected', 3), ('effected by', 3), ('placed in', 3), ('i can', 3), ('opinion of', 3), ('to apply', 3), ('of which', 3), ('of many', 3), ('power in', 3), ('to whom', 3), ('the management', 3), ('management of', 3), ('their affairs', 3), ('likely to', 3), ('the love', 3), ('love of', 3), ('the part', 3), ('of her', 3), ('to prevent', 3), ('want of', 3), ('the continuance', 3), ('can not', 3), ('either of', 3), ('a part', 3), ('not be', 3), ('confidence in', 3), ('is not', 3), ('indeed that', 3), ('constitution has', 3), ('legislative body', 3), ('and yet', 3), ('can only', 3), ('where the', 3), ('houses of', 3), ('that in', 3), ('of great', 3), ('the best', 3), ('the principle', 3), ('the adoption', 3), ('adoption of', 3), ('have the', 3), ('the circumstances', 3), ('circumstances of', 3), ('and it', 3), ('than any', 3), ('it to', 3), ('same causes', 3), ('a great', 3), ('the legislation', 3), ('legislation of', 3), ('the rights', 3), ('feelings of', 3), ('the effects', 3), ('effects of', 3), ('the reserved', 3), ('powers of', 3), ('and a', 3), ('their rights', 3), ('if not', 3), ('of things', 3), ('to control', 3), ('the freedom', 3), ('freedom of', 3), ('the danger', 3), ('at this', 3), ('this time', 3), ('and to', 3), ('me it', 3), ('the roman', 3), ('union of', 3), ('become the', 3), ('the means', 3), ('liberty is', 3), ('from our', 3), ('government should', 3), ('never be', 3), ('member of', 3), ('for their', 3), ('connected with', 3), ('country for', 3), ('duties of', 3), ('which are', 3), ('the district', 3), ('district of', 3), ('of columbia', 3), ('a free', 3), ('country in', 3), ('sense of', 3), ('destruction of', 3), ('institutions of', 3), ('as in', 3), ('our confederacy', 3), ('true and', 3), ('duty to', 3), ('character and', 3), ('whole country', 3), ('to liberty', 3), ('the true', 3), ('my fellowcitizens', 3), ('a party', 3), ('the chief', 2), ('office of', 2), ('i believe', 2), ('i proceed', 2), ('proceed to', 2), ('to you', 2), ('me in', 2), ('the discharge', 2), ('discharge of', 2), ('the duties', 2), ('to perform', 2), ('the remark', 2), ('remark of', 2), ('a roman', 2), ('period of', 2), ('that celebrated', 2), ('a most', 2), ('was observable', 2), ('the world', 2), ('in many', 2), ('the lapse', 2), ('lapse of', 2), ('upward of', 2), ('of two', 2), ('since the', 2), ('of some', 2), ('their part', 2), ('be thought', 2), ('they may', 2), ('supposed to', 2), ('and perhaps', 2), ('there may', 2), ('in this', 2), ('a few', 2), ('to govern', 2), ('by my', 2), ('the mass', 2), ('intention to', 2), ('too well', 2), ('understand the', 2), ('to commit', 2), ('the aid', 2), ('aid of', 2), ('has hitherto', 2), ('to bring', 2), ('confided to', 2), ('me by', 2), ('our constitution', 2), ('none of', 2), ('of democracy', 2), ('if such', 2), ('principle the', 2), ('if we', 2), ('we would', 2), ('our people', 2), ('by those', 2), ('all others', 2), ('majority of', 2), ('them by', 2), ('the parties', 2), ('the national', 2), ('government by', 2), ('so far', 2), ('power is', 2), ('an express', 2), ('express grant', 2), ('constitution of', 2), ('the instrument', 2), ('several departments', 2), ('found to', 2), ('to grant', 2), ('do not', 2), ('they could', 2), ('other words', 2), ('there are', 2), ('american citizen', 2), ('the others', 2), ('he has', 2), ('being in', 2), ('the language', 2), ('language of', 2), ('of athens', 2), ('understood and', 2), ('and which', 2), ('at times', 2), ('the subject', 2), ('subject of', 2), ('and his', 2), ('with or', 2), ('or without', 2), ('not of', 2), ('a single', 2), ('with no', 2), ('no ones', 2), ('for no', 2), ('the result', 2), ('and those', 2), ('to others', 2), ('a full', 2), ('participation in', 2), ('the advantages', 2), ('government the', 2), ('the acknowledged', 2), ('granted by', 2), ('by his', 2), ('the rest', 2), ('share of', 2), ('states and', 2), ('war and', 2), ('be expected', 2), ('the amount', 2), ('was intended', 2), ('is more', 2), ('more particularly', 2), ('the case', 2), ('and not', 2), ('regards the', 2), ('the exercise', 2), ('of powers', 2), ('a general', 2), ('that body', 2), ('body the', 2), ('authority to', 2), ('to carry', 2), ('carry into', 2), ('into effect', 2), ('effect the', 2), ('the fact', 2), ('and patriotism', 2), ('at one', 2), ('one time', 2), ('their political', 2), ('each of', 2), ('there were', 2), ('are attributable', 2), ('attributable to', 2), ('be in', 2), ('people but', 2), ('are the', 2), ('to constitute', 2), ('this danger', 2), ('upon another', 2), ('reserved rights', 2), ('federal government', 2), ('and more', 2), ('harmony with', 2), ('the tendency', 2), ('to increase', 2), ('increase itself', 2), ('exercised by', 2), ('were made', 2), ('that at', 2), ('would not', 2), ('not become', 2), ('say that', 2), ('as i', 2), ('been in', 2), ('in that', 2), ('is i', 2), ('proper that', 2), ('i should', 2), ('heretofore given', 2), ('if it', 2), ('its pristine', 2), ('pristine health', 2), ('health and', 2), ('my opinion', 2), ('the evils', 2), ('complained of', 2), ('defects of', 2), ('a misconstruction', 2), ('misconstruction of', 2), ('its provisions', 2), ('a second', 2), ('second term', 2), ('mind of', 2), ('this error', 2), ('and consequently', 2), ('the opinion', 2), ('framed the', 2), ('the source', 2), ('we are', 2), ('from it', 2), ('continues to', 2), ('be observed', 2), ('observed however', 2), ('than to', 2), ('to adopt', 2), ('to create', 2), ('the bosoms', 2), ('bosoms of', 2), ('those to', 2), ('more likely', 2), ('a state', 2), ('nothing more', 2), ('destructive of', 2), ('possession of', 2), ('the human', 2), ('like the', 2), ('it becomes', 2), ('with his', 2), ('is true', 2), ('a republic', 2), ('officer at', 2), ('foreign relations', 2), ('laws and', 2), ('armies and', 2), ('a period', 2), ('that he', 2), ('the master', 2), ('to it', 2), ('by renewing', 2), ('renewing the', 2), ('the pledge', 2), ('but if', 2), ('executive power', 2), ('a fair', 2), ('or either', 2), ('to recommend', 2), ('he holds', 2), ('with every', 2), ('and although', 2), ('although there', 2), ('of confidence', 2), ('the measures', 2), ('the one', 2), ('congress of', 2), ('executive the', 2), ('a similar', 2), ('instrument to', 2), ('yet the', 2), ('no part', 2), ('negative upon', 2), ('of want', 2), ('of conformity', 2), ('conformity to', 2), ('declare void', 2), ('in every', 2), ('both houses', 2), ('seem to', 2), ('be an', 2), ('appears to', 2), ('used only', 2), ('only with', 2), ('spirit which', 2), ('productive of', 2), ('and be', 2), ('the formation', 2), ('constitution the', 2), ('state governments', 2), ('there was', 2), ('repugnant to', 2), ('the leading', 2), ('principle that', 2), ('the idea', 2), ('course of', 2), ('the high', 2), ('degree of', 2), ('among the', 2), ('people and', 2), ('by them', 2), ('representatives of', 2), ('of course', 2), ('placed at', 2), ('the wants', 2), ('wants and', 2), ('than their', 2), ('immediate representatives', 2), ('with them', 2), ('them and', 2), ('tie of', 2), ('of interest', 2), ('and affection', 2), ('veto power', 2), ('the first', 2), ('two of', 2), ('the labors', 2), ('labors of', 2), ('or not', 2), ('not as', 2), ('upon that', 2), ('been committed', 2), ('the security', 2), ('just and', 2), ('parts of', 2), ('have occurred', 2), ('constitution and', 2), ('within the', 2), ('sometimes be', 2), ('interests and', 2), ('independence and', 2), ('constituted by', 2), ('that high', 2), ('high office', 2), ('i consider', 2), ('not well', 2), ('prevent the', 2), ('reference to', 2), ('it the', 2), ('disputed points', 2), ('the nation', 2), ('for his', 2), ('the present', 2), ('made of', 2), ('operations of', 2), ('they respectively', 2), ('respectively claim', 2), ('the commencement', 2), ('commencement of', 2), ('its operations', 2), ('seems to', 2), ('reserved powers', 2), ('so much', 2), ('the mode', 2), ('state authorities', 2), ('of discord', 2), ('their respective', 2), ('each other', 2), ('be realized', 2), ('will the', 2), ('great increase', 2), ('department of', 2), ('in part', 2), ('of political', 2), ('at first', 2), ('it had', 2), ('in controlling', 2), ('controlling the', 2), ('the elective', 2), ('elective franchise', 2), ('could have', 2), ('executive will', 2), ('construction of', 2), ('characters of', 2), ('president to', 2), ('him the', 2), ('no other', 2), ('strange indeed', 2), ('the entire', 2), ('public money', 2), ('of removal', 2), ('also to', 2), ('the officer', 2), ('exists in', 2), ('the divorce', 2), ('is called', 2), ('which is', 2), ('through the', 2), ('have made', 2), ('he should', 2), ('branch of', 2), ('by mr', 2), ('interference in', 2), ('and their', 2), ('of executive', 2), ('our ancestors', 2), ('country that', 2), ('of civil', 2), ('civil and', 2), ('and religious', 2), ('religious liberty', 2), ('is one', 2), ('we have', 2), ('our own', 2), ('of other', 2), ('should never', 2), ('making it', 2), ('him to', 2), ('legislation and', 2), ('schemes of', 2), ('it should', 2), ('and this', 2), ('of law', 2), ('the sovereign', 2), ('the very', 2), ('the forms', 2), ('to propose', 2), ('propose amendments', 2), ('and so', 2), ('of keeping', 2), ('keeping the', 2), ('the more', 2), ('the currency', 2), ('idea of', 2), ('consequences than', 2), ('the personal', 2), ('of wealth', 2), ('deprecated by', 2), ('all true', 2), ('an exclusive', 2), ('exclusive metallic', 2), ('metallic currency', 2), ('a process', 2), ('american citizens', 2), ('and safety', 2), ('are there', 2), ('who would', 2), ('to any', 2), ('their subjects', 2), ('can never', 2), ('of mine', 2), ('states but', 2), ('used in', 2), ('that character', 2), ('their former', 2), ('who has', 2), ('his own', 2), ('respects the', 2), ('free and', 2), ('authorities of', 2), ('as collisions', 2), ('their passions', 2), ('their country', 2), ('is to', 2), ('its existence', 2), ('all its', 2), ('its members', 2), ('the lines', 2), ('be exercised', 2), ('one state', 2), ('of another', 2), ('unite in', 2), ('however that', 2), ('of citizens', 2), ('the domestic', 2), ('domestic concerns', 2), ('the destruction', 2), ('members is', 2), ('that spirit', 2), ('the institutions', 2), ('and forms', 2), ('content with', 2), ('which their', 2), ('foreign aggression', 2), ('and prejudices', 2), ('result in', 2), ('the individual', 2), ('individual members', 2), ('principles of', 2), ('we may', 2), ('us to', 2), ('them from', 2), ('their best', 2), ('all necessary', 2), ('and credit', 2), ('credit of', 2), ('the results', 2), ('passion of', 2), ('contrary no', 2), ('free people', 2), ('will ever', 2), ('and as', 2), ('as long', 2), ('long as', 2), ('the liberties', 2), ('liberties of', 2), ('a people', 2), ('the name', 2), ('against the', 2), ('became the', 2), ('itself upon', 2), ('the genuine', 2), ('genuine spirit', 2), ('the false', 2), ('true spirit', 2), ('of party', 2), ('a thorough', 2), ('and beauty', 2), ('to preserve', 2), ('see in', 2), ('the interests', 2), ('will not', 2), ('have placed', 2), ('interest of', 2), ('liberty and', 2), ('party but', 2), ('the commonwealth', 2), ('the sake', 2), ('sake of', 2), ('the defense', 2), ('defense of', 2), ('the support', 2), ('support of', 2), ('a just', 2), ('called from', 1), ('a retirement', 1), ('retirement which', 1), ('i had', 1), ('had supposed', 1), ('supposed was', 1), ('to continue', 1), ('continue for', 1), ('the residue', 1), ('residue of', 1), ('my life', 1), ('life to', 1), ('to fill', 1), ('fill the', 1), ('chief executive', 1), ('executive office', 1), ('this great', 1), ('great and', 1), ('and free', 1), ('free nation', 1), ('nation i', 1), ('i appear', 1), ('appear before', 1), ('before you', 1), ('you fellowcitizens', 1), ('fellowcitizens to', 1), ('to take', 1), ('take the', 1), ('the oaths', 1), ('oaths which', 1), ('constitution prescribes', 1), ('prescribes as', 1), ('a necessary', 1), ('necessary qualification', 1), ('qualification for', 1), ('the performance', 1), ('performance of', 1), ('its duties', 1), ('duties and', 1), ('in obedience', 1), ('obedience to', 1), ('a custom', 1), ('custom coeval', 1), ('coeval with', 1), ('and what', 1), ('what i', 1), ('believe to', 1), ('be your', 1), ('your expectations', 1), ('expectations i', 1), ('to present', 1), ('present to', 1), ('you a', 1), ('a summary', 1), ('summary of', 1), ('principles which', 1), ('which will', 1), ('will govern', 1), ('govern me', 1), ('duties which', 1), ('be called', 1), ('roman consul', 1), ('consul in', 1), ('in an', 1), ('an early', 1), ('early period', 1), ('celebrated republic', 1), ('republic that', 1), ('most striking', 1), ('striking contrast', 1), ('contrast was', 1), ('observable in', 1), ('the conduct', 1), ('conduct of', 1), ('of candidates', 1), ('candidates for', 1), ('for offices', 1), ('offices of', 1), ('power and', 1), ('and trust', 1), ('trust before', 1), ('before and', 1), ('and after', 1), ('after obtaining', 1), ('obtaining them', 1), ('them they', 1), ('they seldom', 1), ('seldom carrying', 1), ('carrying out', 1), ('out in', 1), ('latter case', 1), ('case the', 1), ('the pledges', 1), ('pledges and', 1), ('and promises', 1), ('promises made', 1), ('made in', 1), ('however much', 1), ('much the', 1), ('world may', 1), ('have improved', 1), ('improved in', 1), ('many respects', 1), ('respects in', 1), ('of upward', 1), ('two thousand', 1), ('thousand years', 1), ('years since', 1), ('remark was', 1), ('was made', 1), ('made by', 1), ('the virtuous', 1), ('virtuous and', 1), ('and indignant', 1), ('indignant roman', 1), ('roman i', 1), ('i fear', 1), ('fear that', 1), ('a strict', 1), ('strict examination', 1), ('the annals', 1), ('annals of', 1), ('the modern', 1), ('modern elective', 1), ('elective governments', 1), ('governments would', 1), ('would develop', 1), ('develop similar', 1), ('similar instances', 1), ('of violated', 1), ('violated confidence', 1), ('although the', 1), ('the fiat', 1), ('fiat of', 1), ('people has', 1), ('has gone', 1), ('gone forth', 1), ('forth proclaiming', 1), ('proclaiming me', 1), ('me the', 1), ('magistrate of', 1), ('this glorious', 1), ('glorious union', 1), ('union nothing', 1), ('nothing upon', 1), ('part remaining', 1), ('remaining to', 1), ('be done', 1), ('done it', 1), ('thought that', 1), ('a motive', 1), ('motive may', 1), ('may exist', 1), ('exist to', 1), ('keep up', 1), ('up the', 1), ('the delusion', 1), ('delusion under', 1), ('under which', 1), ('be supposed', 1), ('have acted', 1), ('acted in', 1), ('my principles', 1), ('opinions and', 1), ('perhaps there', 1), ('be some', 1), ('some in', 1), ('this assembly', 1), ('assembly who', 1), ('have come', 1), ('come here', 1), ('here either', 1), ('either prepared', 1), ('prepared to', 1), ('to condemn', 1), ('condemn those', 1), ('those i', 1), ('shall now', 1), ('now deliver', 1), ('deliver or', 1), ('or approving', 1), ('approving them', 1), ('to doubt', 1), ('doubt the', 1), ('the sincerity', 1), ('sincerity with', 1), ('they are', 1), ('are now', 1), ('now uttered', 1), ('few months', 1), ('months will', 1), ('will confirm', 1), ('confirm or', 1), ('or dispel', 1), ('dispel their', 1), ('their fears', 1), ('the outline', 1), ('outline of', 1), ('of principles', 1), ('principles to', 1), ('govern and', 1), ('and measures', 1), ('measures to', 1), ('be adopted', 1), ('adopted by', 1), ('an administration', 1), ('administration not', 1), ('not yet', 1), ('yet begun', 1), ('begun will', 1), ('will soon', 1), ('soon be', 1), ('be exchanged', 1), ('exchanged for', 1), ('for immutable', 1), ('immutable history', 1), ('history and', 1), ('shall stand', 1), ('stand either', 1), ('either exonerated', 1), ('exonerated by', 1), ('countrymen or', 1), ('or classed', 1), ('classed with', 1), ('who promised', 1), ('promised that', 1), ('might deceive', 1), ('deceive and', 1), ('and flattered', 1), ('flattered with', 1), ('the intention', 1), ('to betray', 1), ('however strong', 1), ('strong may', 1), ('be my', 1), ('my present', 1), ('present purpose', 1), ('purpose to', 1), ('to realize', 1), ('realize the', 1), ('the expectations', 1), ('expectations of', 1), ('a magnanimous', 1), ('magnanimous and', 1), ('and confiding', 1), ('confiding people', 1), ('people i', 1), ('i too', 1), ('well understand', 1), ('the dangerous', 1), ('dangerous temptations', 1), ('temptations to', 1), ('be exposed', 1), ('exposed from', 1), ('the magnitude', 1), ('magnitude of', 1), ('the pleasure', 1), ('pleasure of', 1), ('commit to', 1), ('hands not', 1), ('to place', 1), ('place my', 1), ('my chief', 1), ('chief confidence', 1), ('confidence upon', 1), ('that almighty', 1), ('almighty power', 1), ('hitherto protected', 1), ('protected me', 1), ('me and', 1), ('and enabled', 1), ('enabled me', 1), ('bring to', 1), ('to favorable', 1), ('favorable issues', 1), ('issues other', 1), ('other important', 1), ('important but', 1), ('but still', 1), ('still greatly', 1), ('greatly inferior', 1), ('inferior trusts', 1), ('trusts heretofore', 1), ('heretofore confided', 1), ('my country', 1), ('the broad', 1), ('broad foundation', 1), ('foundation upon', 1), ('constitution rests', 1), ('rests being', 1), ('being the', 1), ('the peoplea', 1), ('peoplea breath', 1), ('breath of', 1), ('of theirs', 1), ('theirs having', 1), ('having made', 1), ('made as', 1), ('a breath', 1), ('breath can', 1), ('can unmake', 1), ('unmake change', 1), ('change or', 1), ('or modify', 1), ('modify itit', 1), ('itit can', 1), ('be assigned', 1), ('to none', 1), ('great divisions', 1), ('divisions of', 1), ('such is', 1), ('is its', 1), ('its theory', 1), ('theory those', 1), ('who are', 1), ('are called', 1), ('to administer', 1), ('administer it', 1), ('it must', 1), ('must recognize', 1), ('recognize as', 1), ('as its', 1), ('its leading', 1), ('leading principle', 1), ('of shaping', 1), ('shaping their', 1), ('their measures', 1), ('measures so', 1), ('so as', 1), ('greatest good', 1), ('good to', 1), ('greatest number', 1), ('but with', 1), ('with these', 1), ('these broad', 1), ('broad admissions', 1), ('admissions if', 1), ('would compare', 1), ('compare the', 1), ('the sovereignty', 1), ('sovereignty acknowledged', 1), ('acknowledged to', 1), ('to exist', 1), ('exist in', 1), ('people with', 1), ('power claimed', 1), ('claimed by', 1), ('by other', 1), ('other sovereignties', 1), ('sovereignties even', 1), ('even by', 1), ('been considered', 1), ('considered most', 1), ('most purely', 1), ('purely democratic', 1), ('democratic we', 1), ('we shall', 1), ('shall find', 1), ('find a', 1), ('most essential', 1), ('essential difference', 1), ('others lay', 1), ('lay claim', 1), ('claim to', 1), ('to power', 1), ('power limited', 1), ('limited only', 1), ('only by', 1), ('own will', 1), ('citizens on', 1), ('contrary possess', 1), ('possess a', 1), ('a sovereignty', 1), ('sovereignty with', 1), ('with an', 1), ('an amount', 1), ('power precisely', 1), ('precisely equal', 1), ('equal to', 1), ('parties to', 1), ('national compact', 1), ('compact and', 1), ('and nothing', 1), ('nothing beyond', 1), ('we admit', 1), ('admit of', 1), ('no government', 1), ('by divine', 1), ('divine right', 1), ('right believing', 1), ('believing that', 1), ('that so', 1), ('as power', 1), ('is concerned', 1), ('concerned the', 1), ('the beneficent', 1), ('beneficent creator', 1), ('creator has', 1), ('has made', 1), ('made no', 1), ('no distinction', 1), ('distinction amongst', 1), ('amongst men', 1), ('men that', 1), ('that all', 1), ('all are', 1), ('are upon', 1), ('upon an', 1), ('an equality', 1), ('equality and', 1), ('only legitimate', 1), ('legitimate right', 1), ('govern is', 1), ('power from', 1), ('the governed', 1), ('states is', 1), ('instrument containing', 1), ('containing this', 1), ('this grant', 1), ('departments composing', 1), ('composing the', 1), ('on an', 1), ('an examination', 1), ('instrument it', 1), ('to contain', 1), ('contain declarations', 1), ('declarations of', 1), ('power granted', 1), ('granted and', 1), ('power withheld', 1), ('latter is', 1), ('is also', 1), ('also susceptible', 1), ('susceptible of', 1), ('of division', 1), ('division into', 1), ('into power', 1), ('majority had', 1), ('had the', 1), ('grant but', 1), ('but which', 1), ('they do', 1), ('not think', 1), ('think proper', 1), ('proper to', 1), ('to intrust', 1), ('intrust to', 1), ('their agents', 1), ('agents and', 1), ('not have', 1), ('have granted', 1), ('granted not', 1), ('not being', 1), ('being possessed', 1), ('by themselves', 1), ('in other', 1), ('words there', 1), ('are certain', 1), ('certain rights', 1), ('rights possessed', 1), ('by each', 1), ('each individual', 1), ('individual american', 1), ('citizen which', 1), ('his compact', 1), ('compact with', 1), ('others he', 1), ('has never', 1), ('never surrendered', 1), ('them indeed', 1), ('indeed he', 1), ('is unable', 1), ('unable to', 1), ('to surrender', 1), ('surrender being', 1), ('system unalienable', 1), ('the boasted', 1), ('boasted privilege', 1), ('roman citizen', 1), ('citizen was', 1), ('to him', 1), ('him a', 1), ('a shield', 1), ('shield only', 1), ('only against', 1), ('against a', 1), ('a petty', 1), ('petty provincial', 1), ('provincial ruler', 1), ('ruler whilst', 1), ('the proud', 1), ('proud democrat', 1), ('democrat of', 1), ('athens would', 1), ('would console', 1), ('console himself', 1), ('himself under', 1), ('a sentence', 1), ('sentence of', 1), ('of death', 1), ('death for', 1), ('a supposed', 1), ('supposed violation', 1), ('violation of', 1), ('national faithwhich', 1), ('faithwhich no', 1), ('no one', 1), ('one understood', 1), ('which at', 1), ('times was', 1), ('the mockery', 1), ('mockery of', 1), ('of allor', 1), ('allor the', 1), ('the banishment', 1), ('banishment from', 1), ('from his', 1), ('his home', 1), ('home his', 1), ('his family', 1), ('family and', 1), ('his country', 1), ('country with', 1), ('without an', 1), ('an alleged', 1), ('alleged cause', 1), ('cause that', 1), ('the act', 1), ('act not', 1), ('single tyrant', 1), ('tyrant or', 1), ('or hated', 1), ('hated aristocracy', 1), ('aristocracy but', 1), ('but of', 1), ('his assembled', 1), ('assembled countrymen', 1), ('far different', 1), ('different is', 1), ('our sovereignty', 1), ('can interfere', 1), ('interfere with', 1), ('ones faith', 1), ('faith prescribe', 1), ('prescribe forms', 1), ('of worship', 1), ('worship for', 1), ('ones observance', 1), ('observance inflict', 1), ('inflict no', 1), ('no punishment', 1), ('punishment but', 1), ('but after', 1), ('after wellascertained', 1), ('wellascertained guilt', 1), ('guilt the', 1), ('result of', 1), ('of investigation', 1), ('investigation under', 1), ('under rules', 1), ('rules prescribed', 1), ('constitution itself', 1), ('these precious', 1), ('precious privileges', 1), ('privileges and', 1), ('those scarcely', 1), ('scarcely less', 1), ('less important', 1), ('important of', 1), ('of giving', 1), ('giving expression', 1), ('expression to', 1), ('his thoughts', 1), ('thoughts and', 1), ('opinions either', 1), ('either by', 1), ('by writing', 1), ('writing or', 1), ('or speaking', 1), ('speaking unrestrained', 1), ('unrestrained but', 1), ('the liability', 1), ('liability for', 1), ('for injury', 1), ('others and', 1), ('full participation', 1), ('advantages which', 1), ('which flow', 1), ('flow from', 1), ('acknowledged property', 1), ('property of', 1), ('the american', 1), ('citizen derives', 1), ('derives from', 1), ('from no', 1), ('no charter', 1), ('charter granted', 1), ('his fellowman', 1), ('he claims', 1), ('claims them', 1), ('them because', 1), ('because he', 1), ('is himself', 1), ('himself a', 1), ('a man', 1), ('man fashioned', 1), ('fashioned by', 1), ('same almighty', 1), ('almighty hand', 1), ('hand as', 1), ('rest of', 1), ('his species', 1), ('species and', 1), ('and entitled', 1), ('entitled to', 1), ('full share', 1), ('the blessings', 1), ('blessings with', 1), ('has endowed', 1), ('endowed them', 1), ('notwithstanding the', 1), ('the limited', 1), ('limited sovereignty', 1), ('sovereignty possessed', 1), ('the restricted', 1), ('restricted grant', 1), ('have adopted', 1), ('adopted enough', 1), ('enough has', 1), ('been given', 1), ('to accomplish', 1), ('accomplish all', 1), ('the objects', 1), ('objects for', 1), ('was created', 1), ('been found', 1), ('found powerful', 1), ('powerful in', 1), ('in war', 1), ('and hitherto', 1), ('hitherto justice', 1), ('justice has', 1), ('been administered', 1), ('administered and', 1), ('and intimate', 1), ('intimate union', 1), ('union effected', 1), ('effected domestic', 1), ('domestic tranquillity', 1), ('tranquillity preserved', 1), ('preserved and', 1), ('and personal', 1), ('personal liberty', 1), ('liberty secured', 1), ('secured to', 1), ('as was', 1), ('expected however', 1), ('however from', 1), ('the defect', 1), ('defect of', 1), ('of language', 1), ('language and', 1), ('the necessarily', 1), ('necessarily sententious', 1), ('sententious manner', 1), ('manner in', 1), ('constitution is', 1), ('is written', 1), ('written disputes', 1), ('disputes have', 1), ('have arisen', 1), ('arisen as', 1), ('has actually', 1), ('actually granted', 1), ('granted or', 1), ('or was', 1), ('particularly the', 1), ('case in', 1), ('that part', 1), ('instrument which', 1), ('which treats', 1), ('treats of', 1), ('legislative branch', 1), ('branch and', 1), ('only as', 1), ('as regards', 1), ('powers claimed', 1), ('claimed under', 1), ('general clause', 1), ('clause giving', 1), ('giving that', 1), ('the authority', 1), ('to pass', 1), ('pass all', 1), ('all laws', 1), ('laws necessary', 1), ('the specified', 1), ('specified powers', 1), ('powers but', 1), ('latter also', 1), ('is however', 1), ('however consolatory', 1), ('consolatory to', 1), ('to reflect', 1), ('reflect that', 1), ('that most', 1), ('most of', 1), ('the instances', 1), ('of alleged', 1), ('alleged departure', 1), ('departure from', 1), ('the letter', 1), ('letter or', 1), ('or spirit', 1), ('constitution have', 1), ('have ultimately', 1), ('ultimately received', 1), ('received the', 1), ('the sanction', 1), ('sanction of', 1), ('a majority', 1), ('fact that', 1), ('that many', 1), ('our statesmen', 1), ('statesmen most', 1), ('most distinguished', 1), ('distinguished for', 1), ('for talent', 1), ('talent and', 1), ('patriotism have', 1), ('been at', 1), ('time or', 1), ('or other', 1), ('other of', 1), ('political career', 1), ('career on', 1), ('on both', 1), ('both sides', 1), ('sides of', 1), ('most warmly', 1), ('warmly disputed', 1), ('disputed questions', 1), ('questions forces', 1), ('forces upon', 1), ('upon us', 1), ('us the', 1), ('the inference', 1), ('inference that', 1), ('the errors', 1), ('errors if', 1), ('if errors', 1), ('errors there', 1), ('were are', 1), ('the intrinsic', 1), ('intrinsic difficulty', 1), ('many instances', 1), ('of ascertaining', 1), ('ascertaining the', 1), ('the intentions', 1), ('intentions of', 1), ('constitution rather', 1), ('rather than', 1), ('any sinister', 1), ('sinister or', 1), ('or unpatriotic', 1), ('unpatriotic motive', 1), ('great danger', 1), ('institutions does', 1), ('a usurpation', 1), ('usurpation by', 1), ('power not', 1), ('not granted', 1), ('the accumulation', 1), ('accumulation in', 1), ('was assigned', 1), ('limited as', 1), ('as are', 1), ('granted still', 1), ('still enough', 1), ('enough have', 1), ('constitute a', 1), ('a despotism', 1), ('despotism if', 1), ('if concentrated', 1), ('concentrated in', 1), ('danger is', 1), ('is greatly', 1), ('greatly heightened', 1), ('heightened as', 1), ('been always', 1), ('always observable', 1), ('observable that', 1), ('that men', 1), ('men are', 1), ('are less', 1), ('less jealous', 1), ('jealous of', 1), ('of encroachments', 1), ('encroachments of', 1), ('one department', 1), ('department upon', 1), ('another than', 1), ('than upon', 1), ('own reserved', 1), ('states first', 1), ('first came', 1), ('came from', 1), ('convention which', 1), ('which formed', 1), ('formed it', 1), ('it many', 1), ('the sternest', 1), ('sternest republicans', 1), ('republicans of', 1), ('the day', 1), ('day were', 1), ('were alarmed', 1), ('alarmed at', 1), ('particularly of', 1), ('that portion', 1), ('portion which', 1), ('been assigned', 1), ('executive branch', 1), ('were in', 1), ('in it', 1), ('it features', 1), ('features which', 1), ('which appeared', 1), ('appeared not', 1), ('in harmony', 1), ('their ideas', 1), ('ideas of', 1), ('a simple', 1), ('simple representative', 1), ('representative democracy', 1), ('democracy or', 1), ('or republic', 1), ('republic and', 1), ('and knowing', 1), ('knowing the', 1), ('itself particularly', 1), ('particularly when', 1), ('when exercised', 1), ('single individual', 1), ('individual predictions', 1), ('predictions were', 1), ('made that', 1), ('at no', 1), ('no very', 1), ('very remote', 1), ('remote period', 1), ('period the', 1), ('government would', 1), ('would terminate', 1), ('terminate in', 1), ('in virtual', 1), ('virtual monarchy', 1), ('become me', 1), ('the fears', 1), ('fears of', 1), ('these patriots', 1), ('patriots have', 1), ('been already', 1), ('already realized', 1), ('realized but', 1), ('but as', 1), ('i sincerely', 1), ('sincerely believe', 1), ('believe that', 1), ('of measures', 1), ('measures and', 1), ('of mens', 1), ('mens opinions', 1), ('opinions for', 1), ('for some', 1), ('some years', 1), ('years past', 1), ('past has', 1), ('that direction', 1), ('direction it', 1), ('conceive strictly', 1), ('strictly proper', 1), ('should take', 1), ('take this', 1), ('this occasion', 1), ('occasion to', 1), ('to repeat', 1), ('repeat the', 1), ('the assurances', 1), ('assurances i', 1), ('have heretofore', 1), ('given of', 1), ('my determination', 1), ('determination to', 1), ('to arrest', 1), ('arrest the', 1), ('the progress', 1), ('progress of', 1), ('that tendency', 1), ('tendency if', 1), ('it really', 1), ('really exists', 1), ('exists and', 1), ('and restore', 1), ('restore the', 1), ('government to', 1), ('and vigor', 1), ('vigor as', 1), ('as this', 1), ('this can', 1), ('any legitimate', 1), ('legitimate exercise', 1), ('power placed', 1), ('to state', 1), ('state in', 1), ('in as', 1), ('as summary', 1), ('summary a', 1), ('a manner', 1), ('manner as', 1), ('can my', 1), ('the sources', 1), ('sources of', 1), ('evils which', 1), ('been so', 1), ('so extensively', 1), ('extensively complained', 1), ('of and', 1), ('the correctives', 1), ('correctives which', 1), ('be applied', 1), ('former are', 1), ('are unquestionably', 1), ('unquestionably to', 1), ('found in', 1), ('the defects', 1), ('constitution others', 1), ('others in', 1), ('my judgment', 1), ('judgment are', 1), ('former is', 1), ('the eligibility', 1), ('eligibility of', 1), ('same individual', 1), ('individual to', 1), ('term of', 1), ('the presidency', 1), ('the sagacious', 1), ('sagacious mind', 1), ('of mr', 1), ('jefferson early', 1), ('early saw', 1), ('saw and', 1), ('and lamented', 1), ('lamented this', 1), ('error and', 1), ('and attempts', 1), ('attempts have', 1), ('been made', 1), ('made hitherto', 1), ('hitherto without', 1), ('without success', 1), ('success to', 1), ('apply the', 1), ('the amendatory', 1), ('amendatory power', 1), ('states to', 1), ('its correction', 1), ('as however', 1), ('however one', 1), ('one mode', 1), ('of correction', 1), ('correction is', 1), ('every president', 1), ('president and', 1), ('consequently in', 1), ('in mine', 1), ('mine it', 1), ('be useless', 1), ('useless and', 1), ('perhaps invidious', 1), ('invidious to', 1), ('to enumerate', 1), ('enumerate the', 1), ('evils of', 1), ('our fellowcitizens', 1), ('fellowcitizens this', 1), ('error of', 1), ('the sages', 1), ('sages who', 1), ('who framed', 1), ('constitution may', 1), ('source and', 1), ('the bitter', 1), ('bitter fruits', 1), ('fruits which', 1), ('which we', 1), ('are still', 1), ('still to', 1), ('to gather', 1), ('gather from', 1), ('it if', 1), ('it continues', 1), ('to disfigure', 1), ('disfigure our', 1), ('however as', 1), ('general remark', 1), ('remark that', 1), ('that republics', 1), ('republics can', 1), ('can commit', 1), ('commit no', 1), ('no greater', 1), ('greater error', 1), ('error than', 1), ('adopt or', 1), ('or continue', 1), ('continue any', 1), ('any feature', 1), ('feature in', 1), ('their systems', 1), ('systems of', 1), ('be calculated', 1), ('calculated to', 1), ('create or', 1), ('or increase', 1), ('increase the', 1), ('the lover', 1), ('lover of', 1), ('whom necessity', 1), ('necessity obliges', 1), ('obliges them', 1), ('commit the', 1), ('affairs and', 1), ('and surely', 1), ('surely nothing', 1), ('nothing is', 1), ('produce such', 1), ('of mind', 1), ('mind than', 1), ('the long', 1), ('long continuance', 1), ('an office', 1), ('of high', 1), ('high trust', 1), ('nothing can', 1), ('be more', 1), ('more corrupting', 1), ('corrupting nothing', 1), ('more destructive', 1), ('all those', 1), ('those noble', 1), ('noble feelings', 1), ('feelings which', 1), ('which belong', 1), ('belong to', 1), ('a devoted', 1), ('devoted republican', 1), ('republican patriot', 1), ('when this', 1), ('this corrupting', 1), ('corrupting passion', 1), ('passion once', 1), ('once takes', 1), ('takes possession', 1), ('human mind', 1), ('mind like', 1), ('of gold', 1), ('gold it', 1), ('becomes insatiable', 1), ('the neverdying', 1), ('neverdying worm', 1), ('worm in', 1), ('his bosom', 1), ('bosom grows', 1), ('grows with', 1), ('his growth', 1), ('growth and', 1), ('and strengthens', 1), ('strengthens with', 1), ('the declining', 1), ('declining years', 1), ('years of', 1), ('its victim', 1), ('true it', 1), ('of wisdom', 1), ('wisdom for', 1), ('republic to', 1), ('to limit', 1), ('limit the', 1), ('the service', 1), ('service of', 1), ('that officer', 1), ('least to', 1), ('whom she', 1), ('she has', 1), ('has intrusted', 1), ('intrusted the', 1), ('her foreign', 1), ('relations the', 1), ('the execution', 1), ('execution of', 1), ('her laws', 1), ('the command', 1), ('command of', 1), ('her armies', 1), ('and navies', 1), ('navies to', 1), ('period so', 1), ('so short', 1), ('short as', 1), ('prevent his', 1), ('his forgetting', 1), ('forgetting that', 1), ('the accountable', 1), ('accountable agent', 1), ('agent not', 1), ('the principal', 1), ('principal the', 1), ('the servant', 1), ('servant not', 1), ('until an', 1), ('an amendment', 1), ('amendment of', 1), ('constitution can', 1), ('effected public', 1), ('public opinion', 1), ('opinion may', 1), ('may secure', 1), ('secure the', 1), ('the desired', 1), ('desired object', 1), ('i give', 1), ('give my', 1), ('my aid', 1), ('aid to', 1), ('it by', 1), ('pledge heretofore', 1), ('given that', 1), ('that under', 1), ('under no', 1), ('no circumstances', 1), ('circumstances will', 1), ('will i', 1), ('i consent', 1), ('consent to', 1), ('to serve', 1), ('serve a', 1), ('is danger', 1), ('to public', 1), ('public liberty', 1), ('liberty from', 1), ('acknowledged defects', 1), ('constitution in', 1), ('the want', 1), ('of limit', 1), ('limit to', 1), ('same hands', 1), ('hands there', 1), ('i apprehend', 1), ('apprehend not', 1), ('not much', 1), ('much less', 1), ('less from', 1), ('instrument as', 1), ('it regards', 1), ('powers actually', 1), ('actually given', 1), ('not conceive', 1), ('conceive that', 1), ('that by', 1), ('fair construction', 1), ('construction any', 1), ('any or', 1), ('provisions would', 1), ('constitute the', 1), ('president a', 1), ('legislative power', 1), ('be claimed', 1), ('claimed from', 1), ('recommend since', 1), ('since although', 1), ('although enjoined', 1), ('enjoined as', 1), ('a duty', 1), ('duty upon', 1), ('upon him', 1), ('him it', 1), ('a privilege', 1), ('privilege which', 1), ('holds in', 1), ('in common', 1), ('common with', 1), ('every other', 1), ('other citizen', 1), ('citizen and', 1), ('be something', 1), ('something more', 1), ('more of', 1), ('the propriety', 1), ('propriety of', 1), ('measures recommended', 1), ('recommended in', 1), ('one case', 1), ('case than', 1), ('than in', 1), ('other in', 1), ('the obligations', 1), ('obligations of', 1), ('of ultimate', 1), ('ultimate decision', 1), ('decision there', 1), ('there can', 1), ('be no', 1), ('no difference', 1), ('constitution all', 1), ('legislative powers', 1), ('it grants', 1), ('grants are', 1), ('are vested', 1), ('vested in', 1), ('the congress', 1), ('states it', 1), ('be a', 1), ('a solecism', 1), ('solecism in', 1), ('in language', 1), ('language to', 1), ('that any', 1), ('any portion', 1), ('portion of', 1), ('these is', 1), ('not included', 1), ('included in', 1), ('be said', 1), ('said indeed', 1), ('has given', 1), ('to annul', 1), ('annul the', 1), ('body by', 1), ('by refusing', 1), ('refusing to', 1), ('them his', 1), ('his assent', 1), ('so a', 1), ('similar power', 1), ('power has', 1), ('has necessarily', 1), ('necessarily resulted', 1), ('resulted from', 1), ('from that', 1), ('judiciary and', 1), ('judiciary forms', 1), ('forms no', 1), ('is it', 1), ('true this', 1), ('this difference', 1), ('difference between', 1), ('between these', 1), ('these grants', 1), ('grants of', 1), ('power the', 1), ('executive can', 1), ('can put', 1), ('put his', 1), ('his negative', 1), ('legislature for', 1), ('for other', 1), ('other cause', 1), ('cause than', 1), ('than that', 1), ('constitution whilst', 1), ('judiciary can', 1), ('only declare', 1), ('void those', 1), ('which violate', 1), ('violate that', 1), ('the decision', 1), ('decision of', 1), ('judiciary is', 1), ('is final', 1), ('final in', 1), ('in such', 1), ('a case', 1), ('case whereas', 1), ('whereas in', 1), ('every instance', 1), ('instance where', 1), ('veto of', 1), ('executive is', 1), ('is applied', 1), ('applied it', 1), ('be overcome', 1), ('overcome by', 1), ('a vote', 1), ('vote of', 1), ('of twothirds', 1), ('twothirds of', 1), ('of both', 1), ('the negative', 1), ('legislative by', 1), ('executive authority', 1), ('authority and', 1), ('one individual', 1), ('individual would', 1), ('would seem', 1), ('an incongruity', 1), ('incongruity in', 1), ('like some', 1), ('some others', 1), ('others of', 1), ('similar character', 1), ('character however', 1), ('however it', 1), ('be highly', 1), ('highly expedient', 1), ('expedient and', 1), ('and if', 1), ('if used', 1), ('the forbearance', 1), ('forbearance and', 1), ('intended by', 1), ('by its', 1), ('its authors', 1), ('authors it', 1), ('be productive', 1), ('great good', 1), ('good and', 1), ('found one', 1), ('best safeguards', 1), ('safeguards to', 1), ('the period', 1), ('formation of', 1), ('principle does', 1), ('have enjoyed', 1), ('enjoyed much', 1), ('much favor', 1), ('favor in', 1), ('it existed', 1), ('existed but', 1), ('in two', 1), ('two and', 1), ('these there', 1), ('was a', 1), ('a plural', 1), ('plural executive', 1), ('would search', 1), ('search for', 1), ('the motives', 1), ('motives which', 1), ('which operated', 1), ('operated upon', 1), ('the purely', 1), ('purely patriotic', 1), ('patriotic and', 1), ('and enlightened', 1), ('enlightened assembly', 1), ('assembly which', 1), ('which framed', 1), ('constitution for', 1), ('a provision', 1), ('provision so', 1), ('so apparently', 1), ('apparently repugnant', 1), ('leading democratic', 1), ('democratic principle', 1), ('majority should', 1), ('should govern', 1), ('govern we', 1), ('we must', 1), ('must reject', 1), ('reject the', 1), ('idea that', 1), ('they anticipated', 1), ('anticipated from', 1), ('it any', 1), ('any benefit', 1), ('benefit to', 1), ('the ordinary', 1), ('ordinary course', 1), ('of legislation', 1), ('they knew', 1), ('knew too', 1), ('well the', 1), ('high degree', 1), ('of intelligence', 1), ('intelligence which', 1), ('which existed', 1), ('existed among', 1), ('the enlightened', 1), ('enlightened character', 1), ('state legislatures', 1), ('legislatures not', 1), ('the fullest', 1), ('fullest confidence', 1), ('confidence that', 1), ('the two', 1), ('two bodies', 1), ('bodies elected', 1), ('elected by', 1), ('them would', 1), ('be worthy', 1), ('worthy representatives', 1), ('such constituents', 1), ('constituents and', 1), ('course that', 1), ('they would', 1), ('would require', 1), ('require no', 1), ('no aid', 1), ('aid in', 1), ('in conceiving', 1), ('conceiving and', 1), ('and maturing', 1), ('maturing the', 1), ('measures which', 1), ('country might', 1), ('might require', 1), ('is preposterous', 1), ('preposterous to', 1), ('to suppose', 1), ('suppose that', 1), ('a thought', 1), ('thought could', 1), ('could for', 1), ('a moment', 1), ('moment have', 1), ('been entertained', 1), ('entertained that', 1), ('president placed', 1), ('the capital', 1), ('capital in', 1), ('the center', 1), ('center of', 1), ('country could', 1), ('could better', 1), ('better understand', 1), ('and wishes', 1), ('wishes of', 1), ('people than', 1), ('own immediate', 1), ('representatives who', 1), ('who spend', 1), ('spend a', 1), ('every year', 1), ('year among', 1), ('among them', 1), ('them living', 1), ('living with', 1), ('them often', 1), ('often laboring', 1), ('laboring with', 1), ('and bound', 1), ('bound to', 1), ('the triple', 1), ('triple tie', 1), ('interest duty', 1), ('duty and', 1), ('to assist', 1), ('assist or', 1), ('or control', 1), ('control congress', 1), ('congress then', 1), ('then in', 1), ('its ordinary', 1), ('ordinary legislation', 1), ('legislation could', 1), ('not i', 1), ('conceive have', 1), ('the motive', 1), ('motive for', 1), ('for conferring', 1), ('conferring the', 1), ('power on', 1), ('this argument', 1), ('argument acquires', 1), ('acquires additional', 1), ('additional force', 1), ('force from', 1), ('fact of', 1), ('its never', 1), ('never having', 1), ('having been', 1), ('been thus', 1), ('thus used', 1), ('used by', 1), ('first six', 1), ('six presidentsand', 1), ('presidentsand two', 1), ('them were', 1), ('were members', 1), ('convention one', 1), ('one presiding', 1), ('presiding over', 1), ('over its', 1), ('its deliberations', 1), ('deliberations and', 1), ('other bearing', 1), ('bearing a', 1), ('a larger', 1), ('larger share', 1), ('share in', 1), ('in consummating', 1), ('consummating the', 1), ('that august', 1), ('august body', 1), ('body than', 1), ('other person', 1), ('if bills', 1), ('bills were', 1), ('were never', 1), ('never returned', 1), ('returned to', 1), ('congress by', 1), ('by either', 1), ('the presidents', 1), ('presidents above', 1), ('above referred', 1), ('referred to', 1), ('to upon', 1), ('the ground', 1), ('ground of', 1), ('their being', 1), ('being inexpedient', 1), ('inexpedient or', 1), ('well adapted', 1), ('adapted as', 1), ('as they', 1), ('be to', 1), ('wants of', 1), ('people the', 1), ('veto was', 1), ('was applied', 1), ('applied upon', 1), ('constitution or', 1), ('or because', 1), ('because errors', 1), ('errors had', 1), ('committed from', 1), ('a too', 1), ('too hasty', 1), ('hasty enactment', 1), ('is another', 1), ('another ground', 1), ('ground for', 1), ('veto principle', 1), ('principle which', 1), ('had probably', 1), ('probably more', 1), ('more influence', 1), ('influence in', 1), ('in recommending', 1), ('recommending it', 1), ('convention than', 1), ('i refer', 1), ('refer to', 1), ('security which', 1), ('it gives', 1), ('gives to', 1), ('the just', 1), ('and equitable', 1), ('equitable action', 1), ('action of', 1), ('legislature upon', 1), ('upon all', 1), ('all parts', 1), ('it could', 1), ('not but', 1), ('but have', 1), ('occurred to', 1), ('convention that', 1), ('a country', 1), ('country so', 1), ('so extensive', 1), ('extensive embracing', 1), ('embracing so', 1), ('so great', 1), ('great a', 1), ('a variety', 1), ('variety of', 1), ('of soil', 1), ('soil and', 1), ('and climate', 1), ('climate and', 1), ('consequently of', 1), ('of products', 1), ('products and', 1), ('which from', 1), ('causes must', 1), ('must ever', 1), ('ever exhibit', 1), ('exhibit a', 1), ('great difference', 1), ('difference in', 1), ('the population', 1), ('population of', 1), ('its various', 1), ('various sections', 1), ('sections calling', 1), ('calling for', 1), ('great diversity', 1), ('diversity in', 1), ('the employments', 1), ('employments of', 1), ('people that', 1), ('majority might', 1), ('might not', 1), ('not always', 1), ('always justly', 1), ('justly regard', 1), ('regard the', 1), ('rights and', 1), ('and interests', 1), ('the minority', 1), ('minority and', 1), ('that acts', 1), ('this character', 1), ('character might', 1), ('be passed', 1), ('passed under', 1), ('under an', 1), ('grant by', 1), ('the words', 1), ('words of', 1), ('and therefore', 1), ('therefore not', 1), ('not within', 1), ('the competency', 1), ('competency of', 1), ('judiciary to', 1), ('to declare', 1), ('void that', 1), ('that however', 1), ('however enlightened', 1), ('enlightened and', 1), ('and patriotic', 1), ('patriotic they', 1), ('might suppose', 1), ('suppose from', 1), ('from past', 1), ('past experience', 1), ('experience the', 1), ('the members', 1), ('congress might', 1), ('be and', 1), ('and however', 1), ('however largely', 1), ('largely partaking', 1), ('partaking in', 1), ('general of', 1), ('the liberal', 1), ('liberal feelings', 1), ('people it', 1), ('was impossible', 1), ('impossible to', 1), ('to expect', 1), ('expect that', 1), ('that bodies', 1), ('bodies so', 1), ('so constituted', 1), ('constituted should', 1), ('should not', 1), ('not sometimes', 1), ('be controlled', 1), ('controlled by', 1), ('by local', 1), ('local interests', 1), ('and sectional', 1), ('sectional feelings', 1), ('was proper', 1), ('proper therefore', 1), ('therefore to', 1), ('to provide', 1), ('provide some', 1), ('some umpire', 1), ('umpire from', 1), ('from whose', 1), ('whose situation', 1), ('situation and', 1), ('and mode', 1), ('of appointment', 1), ('appointment more', 1), ('more independence', 1), ('and freedom', 1), ('freedom from', 1), ('from such', 1), ('such influences', 1), ('influences might', 1), ('a one', 1), ('one was', 1), ('was afforded', 1), ('afforded by', 1), ('department constituted', 1), ('a person', 1), ('person elected', 1), ('elected to', 1), ('office having', 1), ('having his', 1), ('his constituents', 1), ('constituents in', 1), ('every section', 1), ('section state', 1), ('state and', 1), ('and subdivision', 1), ('subdivision of', 1), ('union must', 1), ('must consider', 1), ('consider himself', 1), ('himself bound', 1), ('bound by', 1), ('most solemn', 1), ('solemn sanctions', 1), ('sanctions to', 1), ('to guard', 1), ('guard protect', 1), ('protect and', 1), ('and defend', 1), ('defend the', 1), ('all and', 1), ('every portion', 1), ('portion great', 1), ('great or', 1), ('or small', 1), ('small from', 1), ('the injustice', 1), ('injustice and', 1), ('and oppression', 1), ('oppression of', 1), ('consider the', 1), ('power therefore', 1), ('therefore given', 1), ('given by', 1), ('constitution to', 1), ('executive of', 1), ('states solely', 1), ('solely as', 1), ('a conservative', 1), ('conservative power', 1), ('only first', 1), ('first to', 1), ('to protect', 1), ('protect the', 1), ('constitution from', 1), ('from violation', 1), ('violation secondly', 1), ('secondly the', 1), ('people from', 1), ('of hasty', 1), ('hasty legislation', 1), ('legislation where', 1), ('where their', 1), ('their will', 1), ('will has', 1), ('been probably', 1), ('probably disregarded', 1), ('disregarded or', 1), ('well understood', 1), ('and thirdly', 1), ('thirdly to', 1), ('of combinations', 1), ('combinations violative', 1), ('violative of', 1), ('of minorities', 1), ('in reference', 1), ('the second', 1), ('second of', 1), ('these objects', 1), ('objects i', 1), ('i may', 1), ('may observe', 1), ('observe that', 1), ('consider it', 1), ('right and', 1), ('and privilege', 1), ('to decide', 1), ('decide disputed', 1), ('points of', 1), ('constitution arising', 1), ('arising from', 1), ('general grant', 1), ('congress to', 1), ('powers expressly', 1), ('expressly given', 1), ('given and', 1), ('believe with', 1), ('with mr', 1), ('madison that', 1), ('that repeated', 1), ('repeated recognitions', 1), ('recognitions under', 1), ('under varied', 1), ('varied circumstances', 1), ('circumstances in', 1), ('in acts', 1), ('legislative executive', 1), ('executive and', 1), ('and judicial', 1), ('judicial branches', 1), ('branches of', 1), ('government accompanied', 1), ('accompanied by', 1), ('by indications', 1), ('indications in', 1), ('in different', 1), ('different modes', 1), ('modes of', 1), ('the concurrence', 1), ('concurrence of', 1), ('general will', 1), ('will of', 1), ('nation as', 1), ('as affording', 1), ('affording to', 1), ('president sufficient', 1), ('sufficient authority', 1), ('authority for', 1), ('his considering', 1), ('considering such', 1), ('such disputed', 1), ('points as', 1), ('as settled', 1), ('of half', 1), ('half a', 1), ('a century', 1), ('century has', 1), ('has elapsed', 1), ('elapsed since', 1), ('present form', 1), ('form of', 1), ('an object', 1), ('object more', 1), ('more highly', 1), ('highly desirable', 1), ('desirable than', 1), ('the gratification', 1), ('gratification of', 1), ('the curiosity', 1), ('curiosity of', 1), ('of speculative', 1), ('speculative statesmen', 1), ('statesmen if', 1), ('if its', 1), ('its precise', 1), ('precise situation', 1), ('situation could', 1), ('could be', 1), ('be ascertained', 1), ('ascertained a', 1), ('fair exhibit', 1), ('exhibit made', 1), ('the operations', 1), ('its departments', 1), ('claim and', 1), ('and exercise', 1), ('the collisions', 1), ('collisions which', 1), ('occurred between', 1), ('between them', 1), ('them or', 1), ('or between', 1), ('whole government', 1), ('states or', 1), ('we could', 1), ('could then', 1), ('then compare', 1), ('compare our', 1), ('our actual', 1), ('actual condition', 1), ('condition after', 1), ('after fifty', 1), ('fifty years', 1), ('years trial', 1), ('trial of', 1), ('system with', 1), ('with what', 1), ('what it', 1), ('was in', 1), ('operations and', 1), ('and ascertain', 1), ('ascertain whether', 1), ('whether the', 1), ('the predictions', 1), ('predictions of', 1), ('the patriots', 1), ('patriots who', 1), ('who opposed', 1), ('opposed its', 1), ('its adoption', 1), ('adoption or', 1), ('the confident', 1), ('confident hopes', 1), ('hopes of', 1), ('its advocates', 1), ('advocates have', 1), ('been best', 1), ('best realized', 1), ('great dread', 1), ('dread of', 1), ('former seems', 1), ('been that', 1), ('states would', 1), ('be absorbed', 1), ('absorbed by', 1), ('a consolidated', 1), ('consolidated power', 1), ('power established', 1), ('established leaving', 1), ('leaving to', 1), ('states the', 1), ('the shadow', 1), ('shadow only', 1), ('only of', 1), ('that independent', 1), ('independent action', 1), ('action for', 1), ('they had', 1), ('had so', 1), ('so zealously', 1), ('zealously contended', 1), ('contended and', 1), ('and on', 1), ('the preservation', 1), ('preservation of', 1), ('they relied', 1), ('relied as', 1), ('the last', 1), ('last hope', 1), ('hope of', 1), ('without denying', 1), ('denying that', 1), ('result to', 1), ('they looked', 1), ('looked with', 1), ('with so', 1), ('much apprehension', 1), ('apprehension is', 1), ('the way', 1), ('way of', 1), ('of being', 1), ('being realized', 1), ('realized it', 1), ('is obvious', 1), ('obvious that', 1), ('they did', 1), ('did not', 1), ('not clearly', 1), ('clearly see', 1), ('see the', 1), ('its accomplishment', 1), ('government has', 1), ('has seized', 1), ('seized upon', 1), ('upon none', 1), ('as any', 1), ('any open', 1), ('open warfare', 1), ('warfare may', 1), ('have gone', 1), ('gone the', 1), ('authorities have', 1), ('have amply', 1), ('amply maintained', 1), ('maintained their', 1), ('a casual', 1), ('casual observer', 1), ('observer our', 1), ('system presents', 1), ('presents no', 1), ('no appearance', 1), ('appearance of', 1), ('discord between', 1), ('the different', 1), ('different members', 1), ('members which', 1), ('which compose', 1), ('compose it', 1), ('even the', 1), ('the addition', 1), ('addition of', 1), ('many new', 1), ('new ones', 1), ('ones has', 1), ('has produced', 1), ('produced no', 1), ('no jarring', 1), ('they move', 1), ('move in', 1), ('respective orbits', 1), ('orbits in', 1), ('in perfect', 1), ('perfect harmony', 1), ('the central', 1), ('central head', 1), ('head and', 1), ('and with', 1), ('with each', 1), ('but there', 1), ('is still', 1), ('still an', 1), ('an undercurrent', 1), ('undercurrent at', 1), ('at work', 1), ('work by', 1), ('which if', 1), ('not seasonably', 1), ('seasonably checked', 1), ('checked the', 1), ('the worst', 1), ('worst apprehensions', 1), ('apprehensions of', 1), ('our antifederal', 1), ('antifederal patriots', 1), ('patriots will', 1), ('realized and', 1), ('only will', 1), ('authorities be', 1), ('be overshadowed', 1), ('overshadowed by', 1), ('increase of', 1), ('that government', 1), ('government if', 1), ('not its', 1), ('its designation', 1), ('designation be', 1), ('be essentially', 1), ('essentially and', 1), ('and radically', 1), ('radically changed', 1), ('this state', 1), ('things has', 1), ('part effected', 1), ('by causes', 1), ('causes inherent', 1), ('inherent in', 1), ('part by', 1), ('the neverfailing', 1), ('neverfailing tendency', 1), ('political power', 1), ('by making', 1), ('making the', 1), ('president the', 1), ('the sole', 1), ('sole distributer', 1), ('distributer of', 1), ('the patronage', 1), ('patronage of', 1), ('constitution do', 1), ('have anticipated', 1), ('anticipated at', 1), ('at how', 1), ('how short', 1), ('short a', 1), ('period it', 1), ('would become', 1), ('become a', 1), ('a formidable', 1), ('formidable instrument', 1), ('the free', 1), ('free operations', 1), ('of trifling', 1), ('trifling importance', 1), ('importance at', 1), ('first it', 1), ('had early', 1), ('early in', 1), ('in mr', 1), ('jeffersons administration', 1), ('administration become', 1), ('become so', 1), ('so powerful', 1), ('powerful as', 1), ('create great', 1), ('great alarm', 1), ('alarm in', 1), ('the mind', 1), ('that patriot', 1), ('patriot from', 1), ('the potent', 1), ('potent influence', 1), ('influence it', 1), ('it might', 1), ('might exert', 1), ('exert in', 1), ('such could', 1), ('have then', 1), ('then been', 1), ('its influence', 1), ('influence how', 1), ('how much', 1), ('much greater', 1), ('greater must', 1), ('danger at', 1), ('time quadrupled', 1), ('quadrupled in', 1), ('in amount', 1), ('amount as', 1), ('it certainly', 1), ('certainly is', 1), ('is and', 1), ('more completely', 1), ('completely under', 1), ('will than', 1), ('their construction', 1), ('their powers', 1), ('powers allowed', 1), ('allowed or', 1), ('the forbearing', 1), ('forbearing characters', 1), ('the early', 1), ('early presidents', 1), ('presidents permitted', 1), ('permitted them', 1), ('but it', 1), ('not by', 1), ('its patronage', 1), ('patronage alone', 1), ('alone that', 1), ('department has', 1), ('has become', 1), ('become dangerous', 1), ('dangerous but', 1), ('the use', 1), ('use which', 1), ('appears may', 1), ('be made', 1), ('the appointing', 1), ('appointing power', 1), ('bring under', 1), ('under its', 1), ('its control', 1), ('whole revenues', 1), ('revenues of', 1), ('has declared', 1), ('declared it', 1), ('to see', 1), ('see that', 1), ('the laws', 1), ('laws are', 1), ('are executed', 1), ('executed and', 1), ('it makes', 1), ('makes him', 1), ('the commander', 1), ('commander in', 1), ('in chief', 1), ('chief of', 1), ('the armies', 1), ('and navy', 1), ('navy of', 1), ('if the', 1), ('most approved', 1), ('approved writers', 1), ('writers upon', 1), ('that species', 1), ('species of', 1), ('of mixed', 1), ('mixed government', 1), ('in modern', 1), ('modern europe', 1), ('europe is', 1), ('is termed', 1), ('termed monarchy', 1), ('monarchy in', 1), ('in contradistinction', 1), ('contradistinction to', 1), ('to despotism', 1), ('despotism is', 1), ('is correct', 1), ('correct there', 1), ('was wanting', 1), ('wanting no', 1), ('other addition', 1), ('addition to', 1), ('our chief', 1), ('magistrate to', 1), ('to stamp', 1), ('stamp a', 1), ('a monarchical', 1), ('monarchical character', 1), ('character on', 1), ('on our', 1), ('public finances', 1), ('finances and', 1), ('appears strange', 1), ('that anyone', 1), ('anyone should', 1), ('should doubt', 1), ('doubt that', 1), ('entire control', 1), ('control which', 1), ('president possesses', 1), ('possesses over', 1), ('over the', 1), ('the officers', 1), ('officers who', 1), ('the custody', 1), ('custody of', 1), ('money by', 1), ('removal with', 1), ('without cause', 1), ('cause does', 1), ('does for', 1), ('for all', 1), ('all mischievous', 1), ('mischievous purposes', 1), ('purposes at', 1), ('least virtually', 1), ('virtually subject', 1), ('subject the', 1), ('the treasure', 1), ('treasure also', 1), ('his disposal', 1), ('first roman', 1), ('roman emperor', 1), ('emperor in', 1), ('his attempt', 1), ('attempt to', 1), ('to seize', 1), ('seize the', 1), ('the sacred', 1), ('sacred treasure', 1), ('treasure silenced', 1), ('silenced the', 1), ('the opposition', 1), ('opposition of', 1), ('officer to', 1), ('to whose', 1), ('whose charge', 1), ('charge it', 1), ('committed by', 1), ('a significant', 1), ('significant allusion', 1), ('allusion to', 1), ('his sword', 1), ('a selection', 1), ('selection of', 1), ('political instruments', 1), ('instruments for', 1), ('the care', 1), ('care of', 1), ('money a', 1), ('a reference', 1), ('their commissions', 1), ('commissions by', 1), ('a president', 1), ('president would', 1), ('be quite', 1), ('quite as', 1), ('as effectual', 1), ('effectual an', 1), ('an argument', 1), ('argument as', 1), ('as that', 1), ('of caesar', 1), ('caesar to', 1), ('roman knight', 1), ('i am', 1), ('am not', 1), ('not insensible', 1), ('insensible of', 1), ('great difficulty', 1), ('difficulty that', 1), ('that exists', 1), ('in drawing', 1), ('drawing a', 1), ('a proper', 1), ('proper plan', 1), ('plan for', 1), ('the safekeeping', 1), ('safekeeping and', 1), ('and disbursement', 1), ('disbursement of', 1), ('public revenues', 1), ('revenues and', 1), ('i know', 1), ('know the', 1), ('the importance', 1), ('importance which', 1), ('been attached', 1), ('attached by', 1), ('by men', 1), ('men of', 1), ('great abilities', 1), ('abilities and', 1), ('patriotism to', 1), ('divorce as', 1), ('called of', 1), ('treasury from', 1), ('the banking', 1), ('banking institutions', 1), ('divorce which', 1), ('is complained', 1), ('of but', 1), ('the unhallowed', 1), ('unhallowed union', 1), ('treasury with', 1), ('department which', 1), ('has created', 1), ('created such', 1), ('such extensive', 1), ('extensive alarm', 1), ('to this', 1), ('our republican', 1), ('republican institutions', 1), ('institutions and', 1), ('that created', 1), ('created by', 1), ('influence given', 1), ('executive through', 1), ('the instrumentality', 1), ('instrumentality of', 1), ('federal officers', 1), ('officers i', 1), ('i propose', 1), ('propose to', 1), ('apply all', 1), ('the remedies', 1), ('remedies which', 1), ('be at', 1), ('at my', 1), ('my command', 1), ('was certainly', 1), ('certainly a', 1), ('great error', 1), ('error in', 1), ('constitution not', 1), ('made the', 1), ('the head', 1), ('head of', 1), ('treasury department', 1), ('department entirely', 1), ('entirely independent', 1), ('independent of', 1), ('should at', 1), ('least have', 1), ('been removable', 1), ('removable only', 1), ('only upon', 1), ('the demand', 1), ('demand of', 1), ('the popular', 1), ('popular branch', 1), ('have determined', 1), ('determined never', 1), ('never to', 1), ('to remove', 1), ('remove a', 1), ('a secretary', 1), ('secretary of', 1), ('treasury without', 1), ('without communicating', 1), ('communicating all', 1), ('circumstances attending', 1), ('attending such', 1), ('such removal', 1), ('removal to', 1), ('to both', 1), ('executive in', 1), ('franchise through', 1), ('the medium', 1), ('medium of', 1), ('public officers', 1), ('officers can', 1), ('be effectually', 1), ('effectually checked', 1), ('checked by', 1), ('the prohibition', 1), ('prohibition published', 1), ('published by', 1), ('jefferson forbidding', 1), ('forbidding their', 1), ('their interference', 1), ('in elections', 1), ('elections further', 1), ('further than', 1), ('than giving', 1), ('giving their', 1), ('own votes', 1), ('votes and', 1), ('own independence', 1), ('independence secured', 1), ('secured by', 1), ('an assurance', 1), ('assurance of', 1), ('of perfect', 1), ('perfect immunity', 1), ('immunity in', 1), ('in exercising', 1), ('exercising this', 1), ('this sacred', 1), ('sacred privilege', 1), ('of freemen', 1), ('freemen under', 1), ('the dictates', 1), ('dictates of', 1), ('own unbiased', 1), ('unbiased judgments', 1), ('never with', 1), ('with my', 1), ('my consent', 1), ('consent shall', 1), ('shall an', 1), ('an officer', 1), ('officer of', 1), ('people compensated', 1), ('compensated for', 1), ('his services', 1), ('services out', 1), ('out of', 1), ('their pockets', 1), ('pockets become', 1), ('the pliant', 1), ('pliant instrument', 1), ('instrument of', 1), ('is no', 1), ('means placed', 1), ('executive which', 1), ('which might', 1), ('used with', 1), ('with greater', 1), ('greater effect', 1), ('effect for', 1), ('for unhallowed', 1), ('unhallowed purposes', 1), ('purposes than', 1), ('public press', 1), ('the maxim', 1), ('maxim which', 1), ('ancestors derived', 1), ('derived from', 1), ('the mother', 1), ('mother country', 1), ('the press', 1), ('press is', 1), ('great bulwark', 1), ('bulwark of', 1), ('most precious', 1), ('precious legacies', 1), ('legacies which', 1), ('have left', 1), ('left us', 1), ('have learned', 1), ('learned too', 1), ('too from', 1), ('own as', 1), ('the experience', 1), ('experience of', 1), ('other countries', 1), ('countries that', 1), ('that golden', 1), ('golden shackles', 1), ('shackles by', 1), ('by whomsoever', 1), ('whomsoever or', 1), ('or by', 1), ('by whatever', 1), ('whatever pretense', 1), ('pretense imposed', 1), ('imposed are', 1), ('are as', 1), ('as fatal', 1), ('fatal to', 1), ('it as', 1), ('the iron', 1), ('iron bonds', 1), ('bonds of', 1), ('of despotism', 1), ('the presses', 1), ('presses in', 1), ('the necessary', 1), ('necessary employment', 1), ('employment of', 1), ('used to', 1), ('to clear', 1), ('clear the', 1), ('the guilty', 1), ('guilty or', 1), ('or to', 1), ('to varnish', 1), ('varnish crime', 1), ('crime a', 1), ('a decent', 1), ('decent and', 1), ('and manly', 1), ('manly examination', 1), ('be not', 1), ('only tolerated', 1), ('tolerated but', 1), ('but encouraged', 1), ('another occasion', 1), ('occasion i', 1), ('have given', 1), ('given my', 1), ('opinion at', 1), ('at some', 1), ('some length', 1), ('length upon', 1), ('the impropriety', 1), ('impropriety of', 1), ('executive interference', 1), ('of congressthat', 1), ('congressthat the', 1), ('the article', 1), ('article in', 1), ('constitution making', 1), ('to communicate', 1), ('communicate information', 1), ('information and', 1), ('and authorizing', 1), ('authorizing him', 1), ('recommend measures', 1), ('measures was', 1), ('was not', 1), ('not intended', 1), ('make him', 1), ('source in', 1), ('in legislation', 1), ('in particular', 1), ('particular that', 1), ('be looked', 1), ('looked to', 1), ('to for', 1), ('for schemes', 1), ('of finance', 1), ('be very', 1), ('very strange', 1), ('constitution should', 1), ('should have', 1), ('have strictly', 1), ('strictly forbidden', 1), ('forbidden one', 1), ('one branch', 1), ('legislature from', 1), ('from interfering', 1), ('interfering in', 1), ('the origination', 1), ('origination of', 1), ('such bills', 1), ('bills and', 1), ('be considered', 1), ('considered proper', 1), ('that an', 1), ('an altogether', 1), ('altogether different', 1), ('different department', 1), ('be permitted', 1), ('permitted to', 1), ('to do', 1), ('do so', 1), ('our best', 1), ('best political', 1), ('political maxims', 1), ('maxims and', 1), ('opinions have', 1), ('been drawn', 1), ('drawn from', 1), ('our parent', 1), ('parent isle', 1), ('are others', 1), ('others however', 1), ('however which', 1), ('which can', 1), ('be introduced', 1), ('introduced in', 1), ('system without', 1), ('without singular', 1), ('singular incongruity', 1), ('incongruity and', 1), ('the production', 1), ('production of', 1), ('of much', 1), ('much mischief', 1), ('mischief and', 1), ('this i', 1), ('conceive to', 1), ('be one', 1), ('no matter', 1), ('matter in', 1), ('which of', 1), ('the houses', 1), ('of parliament', 1), ('parliament a', 1), ('a bill', 1), ('bill may', 1), ('may originate', 1), ('originate nor', 1), ('nor by', 1), ('by whom', 1), ('whom introduceda', 1), ('introduceda minister', 1), ('minister or', 1), ('or a', 1), ('a member', 1), ('the oppositionby', 1), ('oppositionby the', 1), ('the fiction', 1), ('fiction of', 1), ('law or', 1), ('or rather', 1), ('rather of', 1), ('of constitutional', 1), ('constitutional principle', 1), ('sovereign is', 1), ('is supposed', 1), ('have prepared', 1), ('prepared it', 1), ('it agreeably', 1), ('agreeably to', 1), ('his will', 1), ('will and', 1), ('and then', 1), ('then submitted', 1), ('submitted it', 1), ('to parliament', 1), ('parliament for', 1), ('their advice', 1), ('advice and', 1), ('and consent', 1), ('now the', 1), ('very reverse', 1), ('reverse is', 1), ('case here', 1), ('here not', 1), ('with regard', 1), ('regard to', 1), ('principle but', 1), ('forms prescribed', 1), ('principle certainly', 1), ('certainly assigns', 1), ('assigns to', 1), ('only body', 1), ('body constituted', 1), ('make laws', 1), ('forms even', 1), ('even direct', 1), ('direct that', 1), ('the enactment', 1), ('enactment should', 1), ('be ascribed', 1), ('ascribed to', 1), ('senate in', 1), ('to revenue', 1), ('revenue bills', 1), ('bills have', 1), ('amendments and', 1), ('so has', 1), ('has the', 1), ('executive by', 1), ('power given', 1), ('given him', 1), ('to return', 1), ('return them', 1), ('the house', 1), ('house of', 1), ('of representatives', 1), ('representatives with', 1), ('his objections', 1), ('his power', 1), ('power also', 1), ('amendments in', 1), ('the existing', 1), ('existing revenue', 1), ('revenue laws', 1), ('laws suggested', 1), ('suggested by', 1), ('his observations', 1), ('observations upon', 1), ('their defective', 1), ('defective or', 1), ('or injurious', 1), ('injurious operation', 1), ('the delicate', 1), ('delicate duty', 1), ('of devising', 1), ('devising schemes', 1), ('of revenue', 1), ('revenue should', 1), ('be left', 1), ('left where', 1), ('has placed', 1), ('placed itwith', 1), ('itwith the', 1), ('the immediate', 1), ('for similar', 1), ('similar reasons', 1), ('reasons the', 1), ('public treasure', 1), ('treasure should', 1), ('be prescribed', 1), ('the further', 1), ('further removed', 1), ('removed it', 1), ('be from', 1), ('more wholesome', 1), ('wholesome the', 1), ('the arrangement', 1), ('arrangement and', 1), ('more in', 1), ('in accordance', 1), ('accordance with', 1), ('with republican', 1), ('republican principle', 1), ('with this', 1), ('this subject', 1), ('subject is', 1), ('of making', 1), ('it exclusively', 1), ('exclusively metallic', 1), ('metallic however', 1), ('however well', 1), ('well intended', 1), ('intended appears', 1), ('be fraught', 1), ('fraught with', 1), ('with more', 1), ('more fatal', 1), ('fatal consequences', 1), ('other scheme', 1), ('scheme having', 1), ('having no', 1), ('no relation', 1), ('personal rights', 1), ('citizens that', 1), ('that has', 1), ('has ever', 1), ('ever been', 1), ('been devised', 1), ('if any', 1), ('any single', 1), ('single scheme', 1), ('scheme could', 1), ('could produce', 1), ('the effect', 1), ('effect of', 1), ('of arresting', 1), ('arresting at', 1), ('at once', 1), ('once that', 1), ('that mutation', 1), ('mutation of', 1), ('of condition', 1), ('condition by', 1), ('which thousands', 1), ('thousands of', 1), ('our most', 1), ('most indigent', 1), ('indigent fellowcitizens', 1), ('fellowcitizens by', 1), ('their industry', 1), ('industry and', 1), ('and enterprise', 1), ('enterprise are', 1), ('are raised', 1), ('raised to', 1), ('the possession', 1), ('wealth that', 1), ('that is', 1), ('one measure', 1), ('measure better', 1), ('better calculated', 1), ('calculated than', 1), ('than another', 1), ('another to', 1), ('produce that', 1), ('that state', 1), ('things so', 1), ('much deprecated', 1), ('by all', 1), ('true republicans', 1), ('republicans by', 1), ('the rich', 1), ('rich are', 1), ('are daily', 1), ('daily adding', 1), ('adding to', 1), ('their hoards', 1), ('hoards and', 1), ('the poor', 1), ('poor sinking', 1), ('sinking deeper', 1), ('deeper into', 1), ('into penury', 1), ('penury it', 1), ('or if', 1), ('process by', 1), ('for generosity', 1), ('generosity and', 1), ('and nobleness', 1), ('nobleness of', 1), ('of feeling', 1), ('feeling may', 1), ('be destroyed', 1), ('destroyed by', 1), ('increase and', 1), ('and neck', 1), ('neck toleration', 1), ('toleration of', 1), ('of usury', 1), ('usury it', 1), ('amongst the', 1), ('other duties', 1), ('a delicate', 1), ('delicate character', 1), ('character which', 1), ('president is', 1), ('perform is', 1), ('the supervision', 1), ('supervision of', 1), ('the territories', 1), ('territories of', 1), ('them which', 1), ('are destined', 1), ('destined to', 1), ('to become', 1), ('become members', 1), ('our great', 1), ('great political', 1), ('political family', 1), ('family are', 1), ('are compensated', 1), ('compensated by', 1), ('their rapid', 1), ('rapid progress', 1), ('progress from', 1), ('from infancy', 1), ('infancy to', 1), ('to manhood', 1), ('manhood for', 1), ('the partial', 1), ('partial and', 1), ('and temporary', 1), ('temporary deprivation', 1), ('deprivation of', 1), ('political rights', 1), ('this district', 1), ('district only', 1), ('only where', 1), ('where american', 1), ('citizens are', 1), ('are to', 1), ('found who', 1), ('who under', 1), ('a settled', 1), ('settled policy', 1), ('policy are', 1), ('are deprived', 1), ('deprived of', 1), ('many important', 1), ('important political', 1), ('political privileges', 1), ('privileges without', 1), ('without any', 1), ('any inspiring', 1), ('inspiring hope', 1), ('hope as', 1), ('the future', 1), ('their only', 1), ('only consolation', 1), ('consolation under', 1), ('under circumstances', 1), ('such deprivation', 1), ('deprivation is', 1), ('is that', 1), ('the devoted', 1), ('devoted exterior', 1), ('exterior guards', 1), ('guards of', 1), ('a campthat', 1), ('campthat their', 1), ('their sufferings', 1), ('sufferings secure', 1), ('secure tranquillity', 1), ('tranquillity and', 1), ('safety within', 1), ('there any', 1), ('their countrymen', 1), ('countrymen who', 1), ('would subject', 1), ('subject them', 1), ('to greater', 1), ('greater sacrifices', 1), ('sacrifices to', 1), ('other humiliations', 1), ('humiliations than', 1), ('than those', 1), ('those essentially', 1), ('essentially necessary', 1), ('security of', 1), ('the object', 1), ('object for', 1), ('they were', 1), ('were thus', 1), ('thus separated', 1), ('separated from', 1), ('from their', 1), ('their fellowcitizens', 1), ('fellowcitizens are', 1), ('are their', 1), ('rights alone', 1), ('alone not', 1), ('be guaranteed', 1), ('guaranteed by', 1), ('the application', 1), ('application of', 1), ('those great', 1), ('great principles', 1), ('principles upon', 1), ('which all', 1), ('all our', 1), ('our constitutions', 1), ('constitutions are', 1), ('are founded', 1), ('founded we', 1), ('are told', 1), ('told by', 1), ('greatest of', 1), ('of british', 1), ('british orators', 1), ('orators and', 1), ('and statesmen', 1), ('statesmen that', 1), ('the war', 1), ('war of', 1), ('the revolution', 1), ('revolution the', 1), ('most stupid', 1), ('stupid men', 1), ('men in', 1), ('in england', 1), ('england spoke', 1), ('spoke of', 1), ('their american', 1), ('american subjects', 1), ('subjects are', 1), ('there indeed', 1), ('indeed citizens', 1), ('our states', 1), ('states who', 1), ('have dreamed', 1), ('dreamed of', 1), ('subjects in', 1), ('columbia such', 1), ('such dreams', 1), ('dreams can', 1), ('realized by', 1), ('any agency', 1), ('agency of', 1), ('columbia are', 1), ('are not', 1), ('the subjects', 1), ('subjects of', 1), ('but free', 1), ('free american', 1), ('latter condition', 1), ('condition when', 1), ('constitution was', 1), ('was formed', 1), ('formed no', 1), ('no words', 1), ('words used', 1), ('instrument could', 1), ('been intended', 1), ('to deprive', 1), ('deprive them', 1), ('them of', 1), ('is anything', 1), ('anything in', 1), ('great principle', 1), ('principle of', 1), ('of unalienable', 1), ('unalienable rights', 1), ('rights so', 1), ('so emphatically', 1), ('emphatically insisted', 1), ('insisted upon', 1), ('upon in', 1), ('our declaration', 1), ('declaration of', 1), ('of independence', 1), ('independence they', 1), ('could neither', 1), ('neither make', 1), ('make nor', 1), ('nor the', 1), ('states accept', 1), ('accept a', 1), ('a surrender', 1), ('surrender of', 1), ('their liberties', 1), ('liberties and', 1), ('and become', 1), ('the subjectsin', 1), ('subjectsin other', 1), ('words the', 1), ('the slavesof', 1), ('slavesof their', 1), ('former fellowcitizens', 1), ('this be', 1), ('be trueand', 1), ('trueand it', 1), ('will scarcely', 1), ('scarcely be', 1), ('be denied', 1), ('denied by', 1), ('by anyone', 1), ('anyone who', 1), ('has a', 1), ('a correct', 1), ('correct idea', 1), ('own rights', 1), ('rights as', 1), ('as an', 1), ('an american', 1), ('american citizenthe', 1), ('citizenthe grant', 1), ('grant to', 1), ('of exclusive', 1), ('exclusive jurisdiction', 1), ('jurisdiction in', 1), ('columbia can', 1), ('be interpreted', 1), ('interpreted so', 1), ('as respects', 1), ('the aggregate', 1), ('aggregate people', 1), ('states as', 1), ('as meaning', 1), ('meaning nothing', 1), ('more than', 1), ('to allow', 1), ('allow to', 1), ('congress the', 1), ('the controlling', 1), ('controlling power', 1), ('power necessary', 1), ('to afford', 1), ('afford a', 1), ('and safe', 1), ('safe exercise', 1), ('the functions', 1), ('functions assigned', 1), ('all other', 1), ('other respects', 1), ('congress should', 1), ('be adapted', 1), ('adapted to', 1), ('their peculiar', 1), ('peculiar position', 1), ('position and', 1), ('and wants', 1), ('be conformable', 1), ('conformable with', 1), ('their deliberate', 1), ('deliberate opinions', 1), ('opinions of', 1), ('own interests', 1), ('have spoken', 1), ('spoken of', 1), ('the necessity', 1), ('necessity of', 1), ('respective departments', 1), ('government as', 1), ('as all', 1), ('other authorities', 1), ('country within', 1), ('within their', 1), ('their appropriate', 1), ('appropriate orbits', 1), ('a matter', 1), ('matter of', 1), ('of difficulty', 1), ('in some', 1), ('some cases', 1), ('cases as', 1), ('claim are', 1), ('are often', 1), ('often not', 1), ('not defined', 1), ('defined by', 1), ('any distinct', 1), ('distinct lines', 1), ('mischievous however', 1), ('however in', 1), ('their tendencies', 1), ('tendencies as', 1), ('collisions of', 1), ('this kind', 1), ('kind may', 1), ('be those', 1), ('which arise', 1), ('arise between', 1), ('respective communities', 1), ('communities which', 1), ('which for', 1), ('for certain', 1), ('certain purposes', 1), ('purposes compose', 1), ('compose one', 1), ('one nation', 1), ('nation are', 1), ('are much', 1), ('much more', 1), ('more so', 1), ('so for', 1), ('no such', 1), ('such nation', 1), ('nation can', 1), ('can long', 1), ('long exist', 1), ('exist without', 1), ('without the', 1), ('the careful', 1), ('careful culture', 1), ('culture of', 1), ('those feelings', 1), ('confidence and', 1), ('affection which', 1), ('the effective', 1), ('effective bonds', 1), ('bonds to', 1), ('to union', 1), ('union between', 1), ('between free', 1), ('and confederated', 1), ('confederated states', 1), ('strong as', 1), ('as is', 1), ('the tie', 1), ('interest it', 1), ('been often', 1), ('often found', 1), ('found ineffectual', 1), ('men blinded', 1), ('blinded by', 1), ('passions have', 1), ('been known', 1), ('known to', 1), ('adopt measures', 1), ('measures for', 1), ('in direct', 1), ('direct opposition', 1), ('opposition to', 1), ('the suggestions', 1), ('suggestions of', 1), ('of policy', 1), ('the alternative', 1), ('alternative then', 1), ('then is', 1), ('to destroy', 1), ('destroy or', 1), ('or keep', 1), ('keep down', 1), ('down a', 1), ('a bad', 1), ('bad passion', 1), ('passion by', 1), ('by creating', 1), ('creating and', 1), ('and fostering', 1), ('fostering a', 1), ('a good', 1), ('good one', 1), ('one and', 1), ('this seems', 1), ('the corner', 1), ('corner stone', 1), ('stone upon', 1), ('our american', 1), ('american political', 1), ('political architects', 1), ('architects have', 1), ('have reared', 1), ('reared the', 1), ('the fabric', 1), ('fabric of', 1), ('the cement', 1), ('cement which', 1), ('to bind', 1), ('bind it', 1), ('it and', 1), ('and perpetuate', 1), ('perpetuate its', 1), ('existence was', 1), ('the affectionate', 1), ('affectionate attachment', 1), ('attachment between', 1), ('between all', 1), ('to insure', 1), ('insure the', 1), ('this feeling', 1), ('feeling produced', 1), ('produced at', 1), ('first by', 1), ('a community', 1), ('community of', 1), ('of dangers', 1), ('dangers of', 1), ('of sufferings', 1), ('sufferings and', 1), ('of interests', 1), ('interests the', 1), ('advantages of', 1), ('each were', 1), ('made accessible', 1), ('accessible to', 1), ('no participation', 1), ('in any', 1), ('any good', 1), ('good possessed', 1), ('any member', 1), ('our extensive', 1), ('extensive confederacy', 1), ('confederacy except', 1), ('except in', 1), ('in domestic', 1), ('domestic government', 1), ('government was', 1), ('was withheld', 1), ('withheld from', 1), ('other member', 1), ('process attended', 1), ('attended with', 1), ('no difficulty', 1), ('difficulty no', 1), ('no delay', 1), ('delay no', 1), ('no expense', 1), ('expense but', 1), ('removal the', 1), ('one might', 1), ('might become', 1), ('other and', 1), ('and successively', 1), ('successively of', 1), ('lines too', 1), ('too separating', 1), ('separating powers', 1), ('powers to', 1), ('state from', 1), ('from those', 1), ('another seem', 1), ('be so', 1), ('so distinctly', 1), ('distinctly drawn', 1), ('drawn as', 1), ('to leave', 1), ('leave no', 1), ('no room', 1), ('room for', 1), ('for misunderstanding', 1), ('each state', 1), ('state unite', 1), ('their persons', 1), ('persons all', 1), ('the privileges', 1), ('privileges which', 1), ('which that', 1), ('character confers', 1), ('confers and', 1), ('and all', 1), ('all that', 1), ('may claim', 1), ('claim as', 1), ('as citizens', 1), ('in no', 1), ('no case', 1), ('case can', 1), ('can the', 1), ('same persons', 1), ('persons at', 1), ('same time', 1), ('time act', 1), ('act as', 1), ('two separate', 1), ('separate states', 1), ('and he', 1), ('is therefore', 1), ('therefore positively', 1), ('positively precluded', 1), ('precluded from', 1), ('from any', 1), ('any interference', 1), ('interference with', 1), ('any state', 1), ('state but', 1), ('is for', 1), ('the time', 1), ('time being', 1), ('being a', 1), ('a citizen', 1), ('he may', 1), ('may indeed', 1), ('indeed offer', 1), ('offer to', 1), ('other states', 1), ('states his', 1), ('his advice', 1), ('advice as', 1), ('their management', 1), ('management and', 1), ('the form', 1), ('form in', 1), ('is tendered', 1), ('tendered is', 1), ('is left', 1), ('left to', 1), ('own discretion', 1), ('discretion and', 1), ('and sense', 1), ('of propriety', 1), ('that organized', 1), ('organized associations', 1), ('associations of', 1), ('citizens requiring', 1), ('requiring compliance', 1), ('compliance with', 1), ('their wishes', 1), ('wishes too', 1), ('too much', 1), ('much resemble', 1), ('resemble the', 1), ('the recommendations', 1), ('recommendations of', 1), ('athens to', 1), ('to her', 1), ('her allies', 1), ('allies supported', 1), ('supported by', 1), ('an armed', 1), ('armed and', 1), ('and powerful', 1), ('powerful fleet', 1), ('was indeed', 1), ('indeed to', 1), ('the ambition', 1), ('ambition of', 1), ('leading states', 1), ('states of', 1), ('of greece', 1), ('greece to', 1), ('concerns of', 1), ('others that', 1), ('celebrated confederacy', 1), ('confederacy and', 1), ('and subsequently', 1), ('subsequently of', 1), ('is mainly', 1), ('mainly to', 1), ('be attributed', 1), ('attributed and', 1), ('is owing', 1), ('owing to', 1), ('the absence', 1), ('absence of', 1), ('spirit that', 1), ('the helvetic', 1), ('helvetic confederacy', 1), ('confederacy has', 1), ('has for', 1), ('for so', 1), ('so many', 1), ('many years', 1), ('years been', 1), ('been preserved', 1), ('never has', 1), ('has there', 1), ('there been', 1), ('been seen', 1), ('seen in', 1), ('the separate', 1), ('separate members', 1), ('any confederacy', 1), ('confederacy more', 1), ('more elements', 1), ('elements of', 1), ('and religion', 1), ('religion as', 1), ('several cantons', 1), ('cantons so', 1), ('so marked', 1), ('marked a', 1), ('a discrepancy', 1), ('discrepancy was', 1), ('observable as', 1), ('to promise', 1), ('promise anything', 1), ('anything but', 1), ('but harmony', 1), ('harmony in', 1), ('their intercourse', 1), ('intercourse or', 1), ('or permanency', 1), ('permanency in', 1), ('their alliance', 1), ('alliance and', 1), ('yet for', 1), ('for ages', 1), ('ages neither', 1), ('neither has', 1), ('been interrupted', 1), ('the positive', 1), ('positive benefits', 1), ('benefits which', 1), ('their union', 1), ('union produced', 1), ('produced with', 1), ('the independence', 1), ('safety from', 1), ('from foreign', 1), ('aggression which', 1), ('it secured', 1), ('secured these', 1), ('these sagacious', 1), ('sagacious people', 1), ('people respected', 1), ('respected the', 1), ('other however', 1), ('however repugnant', 1), ('own principles', 1), ('confederacy fellowcitizens', 1), ('fellowcitizens can', 1), ('only be', 1), ('be preserved', 1), ('preserved by', 1), ('same forbearance', 1), ('citizens must', 1), ('be content', 1), ('powers with', 1), ('constitution clothes', 1), ('clothes them', 1), ('the attempt', 1), ('attempt of', 1), ('state to', 1), ('domestic institutions', 1), ('another can', 1), ('only result', 1), ('in feelings', 1), ('of distrust', 1), ('distrust and', 1), ('and jealousy', 1), ('jealousy the', 1), ('the certain', 1), ('certain harbingers', 1), ('harbingers of', 1), ('of disunion', 1), ('disunion violence', 1), ('violence and', 1), ('and civil', 1), ('civil war', 1), ('the ultimate', 1), ('ultimate destruction', 1), ('our free', 1), ('free institutions', 1), ('confederacy is', 1), ('is perfectly', 1), ('perfectly illustrated', 1), ('illustrated by', 1), ('the terms', 1), ('terms and', 1), ('and principles', 1), ('principles governing', 1), ('governing a', 1), ('a common', 1), ('common copartnership', 1), ('a fund', 1), ('fund of', 1), ('exercised under', 1), ('the direction', 1), ('direction of', 1), ('the joint', 1), ('joint councils', 1), ('councils of', 1), ('the allied', 1), ('allied members', 1), ('members but', 1), ('been reserved', 1), ('reserved by', 1), ('is intangible', 1), ('intangible by', 1), ('the common', 1), ('common government', 1), ('government or', 1), ('members composing', 1), ('composing it', 1), ('to attempt', 1), ('attempt it', 1), ('it finds', 1), ('finds no', 1), ('no support', 1), ('support in', 1), ('be our', 1), ('our constant', 1), ('constant and', 1), ('and earnest', 1), ('earnest endeavor', 1), ('endeavor mutually', 1), ('mutually to', 1), ('to cultivate', 1), ('cultivate a', 1), ('of concord', 1), ('concord and', 1), ('and harmony', 1), ('harmony among', 1), ('the various', 1), ('various parts', 1), ('experience has', 1), ('has abundantly', 1), ('abundantly taught', 1), ('taught us', 1), ('us that', 1), ('the agitation', 1), ('agitation by', 1), ('by citizens', 1), ('one part', 1), ('a subject', 1), ('subject not', 1), ('not confided', 1), ('but exclusively', 1), ('exclusively under', 1), ('the guardianship', 1), ('guardianship of', 1), ('the local', 1), ('local authorities', 1), ('authorities is', 1), ('is productive', 1), ('other consequences', 1), ('than bitterness', 1), ('bitterness alienation', 1), ('alienation discord', 1), ('discord and', 1), ('and injury', 1), ('very cause', 1), ('cause which', 1), ('is intended', 1), ('be advanced', 1), ('great interests', 1), ('interests which', 1), ('which appertain', 1), ('appertain to', 1), ('of unioncordial', 1), ('unioncordial confiding', 1), ('confiding fraternal', 1), ('fraternal unionis', 1), ('unionis by', 1), ('by far', 1), ('far the', 1), ('most important', 1), ('important since', 1), ('since it', 1), ('only true', 1), ('and sure', 1), ('sure guaranty', 1), ('guaranty of', 1), ('in consequence', 1), ('consequence of', 1), ('the embarrassed', 1), ('embarrassed state', 1), ('of business', 1), ('business and', 1), ('currency some', 1), ('states may', 1), ('may meet', 1), ('meet with', 1), ('with difficulty', 1), ('their financial', 1), ('financial concerns', 1), ('however deeply', 1), ('deeply we', 1), ('may regret', 1), ('regret anything', 1), ('anything imprudent', 1), ('imprudent or', 1), ('or excessive', 1), ('excessive in', 1), ('the engagements', 1), ('engagements into', 1), ('into which', 1), ('which states', 1), ('states have', 1), ('have entered', 1), ('entered for', 1), ('for purposes', 1), ('purposes of', 1), ('own it', 1), ('it does', 1), ('become us', 1), ('to disparage', 1), ('disparage the', 1), ('states governments', 1), ('governments nor', 1), ('nor to', 1), ('to discourage', 1), ('discourage them', 1), ('from making', 1), ('making proper', 1), ('proper efforts', 1), ('efforts for', 1), ('own relief', 1), ('contrary it', 1), ('is our', 1), ('our duty', 1), ('to encourage', 1), ('encourage them', 1), ('our constitutional', 1), ('constitutional authority', 1), ('apply their', 1), ('best means', 1), ('means and', 1), ('and cheerfully', 1), ('cheerfully to', 1), ('make all', 1), ('necessary sacrifices', 1), ('sacrifices and', 1), ('and submit', 1), ('submit to', 1), ('necessary burdens', 1), ('burdens to', 1), ('to fulfill', 1), ('fulfill their', 1), ('their engagements', 1), ('engagements and', 1), ('and maintain', 1), ('maintain their', 1), ('their credit', 1), ('credit for', 1), ('several states', 1), ('states form', 1), ('form a', 1), ('the resources', 1), ('resources of', 1), ('country are', 1), ('are abundant', 1), ('abundant the', 1), ('the enterprise', 1), ('enterprise and', 1), ('and activity', 1), ('activity of', 1), ('people proverbial', 1), ('proverbial and', 1), ('and we', 1), ('may well', 1), ('well hope', 1), ('hope that', 1), ('that wise', 1), ('wise legislation', 1), ('and prudent', 1), ('prudent administration', 1), ('administration by', 1), ('respective governments', 1), ('governments each', 1), ('each acting', 1), ('acting within', 1), ('within its', 1), ('its own', 1), ('own sphere', 1), ('sphere will', 1), ('will restore', 1), ('restore former', 1), ('former prosperity', 1), ('unpleasant and', 1), ('and even', 1), ('even dangerous', 1), ('dangerous as', 1), ('collisions may', 1), ('may sometimes', 1), ('be between', 1), ('the constituted', 1), ('constituted authorities', 1), ('lines which', 1), ('which separate', 1), ('separate their', 1), ('respective jurisdictions', 1), ('jurisdictions the', 1), ('results can', 1), ('be of', 1), ('no vital', 1), ('vital injury', 1), ('institutions if', 1), ('if that', 1), ('that ardent', 1), ('ardent patriotism', 1), ('patriotism that', 1), ('that devoted', 1), ('devoted attachment', 1), ('attachment to', 1), ('liberty that', 1), ('of moderation', 1), ('moderation and', 1), ('and forbearance', 1), ('forbearance for', 1), ('our countrymen', 1), ('countrymen were', 1), ('were once', 1), ('once distinguished', 1), ('distinguished continue', 1), ('continue to', 1), ('be cherished', 1), ('this continues', 1), ('the ruling', 1), ('ruling passion', 1), ('our souls', 1), ('souls the', 1), ('the weaker', 1), ('weaker feeling', 1), ('feeling of', 1), ('the mistaken', 1), ('mistaken enthusiast', 1), ('enthusiast will', 1), ('be corrected', 1), ('corrected the', 1), ('the utopian', 1), ('utopian dreams', 1), ('dreams of', 1), ('the scheming', 1), ('scheming politician', 1), ('politician dissipated', 1), ('dissipated and', 1), ('the complicated', 1), ('complicated intrigues', 1), ('intrigues of', 1), ('the demagogue', 1), ('demagogue rendered', 1), ('rendered harmless', 1), ('sovereign balm', 1), ('balm for', 1), ('for every', 1), ('every injury', 1), ('injury which', 1), ('institutions may', 1), ('may receive', 1), ('no care', 1), ('care that', 1), ('that can', 1), ('the construction', 1), ('government no', 1), ('no division', 1), ('division of', 1), ('powers no', 1), ('no distribution', 1), ('distribution of', 1), ('of checks', 1), ('checks in', 1), ('its several', 1), ('departments will', 1), ('will prove', 1), ('prove effectual', 1), ('effectual to', 1), ('keep us', 1), ('us a', 1), ('people if', 1), ('this spirit', 1), ('spirit is', 1), ('is suffered', 1), ('suffered to', 1), ('to decay', 1), ('decay and', 1), ('and decay', 1), ('decay it', 1), ('will without', 1), ('without constant', 1), ('constant nurture', 1), ('the neglect', 1), ('neglect of', 1), ('this duty', 1), ('duty the', 1), ('best historians', 1), ('historians agree', 1), ('agree in', 1), ('in attributing', 1), ('attributing the', 1), ('the ruin', 1), ('ruin of', 1), ('the republics', 1), ('republics with', 1), ('with whose', 1), ('whose existence', 1), ('existence and', 1), ('and fall', 1), ('fall their', 1), ('their writings', 1), ('writings have', 1), ('made us', 1), ('us acquainted', 1), ('causes will', 1), ('ever produce', 1), ('same effects', 1), ('effects and', 1), ('a dominant', 1), ('dominant passion', 1), ('human bosom', 1), ('bosom and', 1), ('the understandings', 1), ('understandings of', 1), ('of men', 1), ('men can', 1), ('be warped', 1), ('warped and', 1), ('their affections', 1), ('affections changed', 1), ('changed by', 1), ('by operations', 1), ('operations upon', 1), ('passions and', 1), ('prejudices so', 1), ('so long', 1), ('long will', 1), ('people depend', 1), ('depend on', 1), ('on their', 1), ('own constant', 1), ('constant attention', 1), ('attention to', 1), ('its preservation', 1), ('all wellestablished', 1), ('wellestablished free', 1), ('free governments', 1), ('governments arises', 1), ('arises from', 1), ('the unwillingness', 1), ('unwillingness of', 1), ('to believe', 1), ('believe in', 1), ('existence or', 1), ('or from', 1), ('of designing', 1), ('designing men', 1), ('men diverting', 1), ('diverting their', 1), ('their attention', 1), ('attention from', 1), ('the quarter', 1), ('quarter whence', 1), ('whence it', 1), ('it approaches', 1), ('approaches to', 1), ('a source', 1), ('source from', 1), ('from which', 1), ('never come', 1), ('the old', 1), ('old trick', 1), ('trick of', 1), ('would usurp', 1), ('usurp the', 1), ('name of', 1), ('democracy they', 1), ('they speak', 1), ('speak warning', 1), ('warning the', 1), ('people against', 1), ('wealth and', 1), ('danger of', 1), ('of aristocracy', 1), ('history ancient', 1), ('ancient and', 1), ('and modern', 1), ('modern is', 1), ('is full', 1), ('full of', 1), ('such examples', 1), ('caesar became', 1), ('master of', 1), ('roman people', 1), ('senate under', 1), ('the pretense', 1), ('pretense of', 1), ('of supporting', 1), ('supporting the', 1), ('the democratic', 1), ('democratic claims', 1), ('claims of', 1), ('former against', 1), ('the aristocracy', 1), ('aristocracy of', 1), ('latter cromwell', 1), ('cromwell in', 1), ('of protector', 1), ('protector of', 1), ('people became', 1), ('the dictator', 1), ('dictator of', 1), ('of england', 1), ('england and', 1), ('and bolivar', 1), ('bolivar possessed', 1), ('possessed himself', 1), ('himself of', 1), ('of unlimited', 1), ('unlimited power', 1), ('power with', 1), ('the title', 1), ('title of', 1), ('his countrys', 1), ('countrys liberator', 1), ('is on', 1), ('no instance', 1), ('instance on', 1), ('on record', 1), ('record of', 1), ('an extensive', 1), ('extensive and', 1), ('and wellestablished', 1), ('wellestablished republic', 1), ('republic being', 1), ('being changed', 1), ('changed into', 1), ('into an', 1), ('an aristocracy', 1), ('the tendencies', 1), ('tendencies of', 1), ('all such', 1), ('such governments', 1), ('governments in', 1), ('their decline', 1), ('decline is', 1), ('to monarchy', 1), ('monarchy and', 1), ('the antagonist', 1), ('antagonist principle', 1), ('principle to', 1), ('liberty there', 1), ('of factiona', 1), ('factiona spirit', 1), ('which assumes', 1), ('assumes the', 1), ('in times', 1), ('times of', 1), ('great excitement', 1), ('excitement imposes', 1), ('imposes itself', 1), ('people as', 1), ('of freedom', 1), ('freedom and', 1), ('and like', 1), ('false christs', 1), ('christs whose', 1), ('whose coming', 1), ('coming was', 1), ('was foretold', 1), ('foretold by', 1), ('the savior', 1), ('savior seeks', 1), ('seeks to', 1), ('to and', 1), ('and were', 1), ('were it', 1), ('it possible', 1), ('possible would', 1), ('would impose', 1), ('impose upon', 1), ('and most', 1), ('most faithful', 1), ('faithful disciples', 1), ('disciples of', 1), ('in periods', 1), ('periods like', 1), ('like this', 1), ('this that', 1), ('it behooves', 1), ('behooves the', 1), ('be most', 1), ('most watchful', 1), ('watchful of', 1), ('whom they', 1), ('have intrusted', 1), ('intrusted power', 1), ('is at', 1), ('times much', 1), ('much difficulty', 1), ('in distinguishing', 1), ('distinguishing the', 1), ('false from', 1), ('spirit a', 1), ('a calm', 1), ('calm and', 1), ('and dispassionate', 1), ('dispassionate investigation', 1), ('investigation will', 1), ('will detect', 1), ('detect the', 1), ('the counterfeit', 1), ('counterfeit as', 1), ('well by', 1), ('operations as', 1), ('results that', 1), ('that are', 1), ('are produced', 1), ('liberty although', 1), ('although devoted', 1), ('devoted persevering', 1), ('persevering bold', 1), ('bold and', 1), ('and uncompromising', 1), ('uncompromising in', 1), ('in principle', 1), ('that secured', 1), ('secured is', 1), ('is mild', 1), ('mild and', 1), ('and tolerant', 1), ('tolerant and', 1), ('and scrupulous', 1), ('scrupulous as', 1), ('means it', 1), ('it employs', 1), ('employs whilst', 1), ('party assuming', 1), ('assuming to', 1), ('be that', 1), ('is harsh', 1), ('harsh vindictive', 1), ('vindictive and', 1), ('and intolerant', 1), ('intolerant and', 1), ('and totally', 1), ('totally reckless', 1), ('reckless as', 1), ('the allies', 1), ('allies which', 1), ('it brings', 1), ('brings to', 1), ('its cause', 1), ('liberty animates', 1), ('animates the', 1), ('the body', 1), ('body of', 1), ('thorough examination', 1), ('affairs it', 1), ('it leads', 1), ('leads to', 1), ('the excision', 1), ('excision of', 1), ('every excrescence', 1), ('excrescence which', 1), ('have fastened', 1), ('fastened itself', 1), ('upon any', 1), ('and restores', 1), ('restores the', 1), ('the system', 1), ('system to', 1), ('the reign', 1), ('reign of', 1), ('an intolerant', 1), ('intolerant spirit', 1), ('party amongst', 1), ('amongst a', 1), ('people seldom', 1), ('seldom fails', 1), ('fails to', 1), ('to result', 1), ('a dangerous', 1), ('dangerous accession', 1), ('accession to', 1), ('power introduced', 1), ('introduced and', 1), ('and established', 1), ('established amidst', 1), ('amidst unusual', 1), ('unusual professions', 1), ('professions of', 1), ('of devotion', 1), ('devotion to', 1), ('to democracy', 1), ('the foregoing', 1), ('foregoing remarks', 1), ('remarks relate', 1), ('relate almost', 1), ('almost exclusively', 1), ('exclusively to', 1), ('to matters', 1), ('matters connected', 1), ('our domestic', 1), ('be proper', 1), ('proper however', 1), ('should give', 1), ('give some', 1), ('some indications', 1), ('indications to', 1), ('fellowcitizens of', 1), ('my proposed', 1), ('proposed course', 1), ('of conduct', 1), ('conduct in', 1), ('our foreign', 1), ('i assure', 1), ('assure them', 1), ('them therefore', 1), ('therefore that', 1), ('is my', 1), ('my intention', 1), ('to use', 1), ('use every', 1), ('every means', 1), ('means in', 1), ('my power', 1), ('preserve the', 1), ('the friendly', 1), ('friendly intercourse', 1), ('intercourse which', 1), ('which now', 1), ('now so', 1), ('so happily', 1), ('happily subsists', 1), ('subsists with', 1), ('every foreign', 1), ('foreign nation', 1), ('nation and', 1), ('that although', 1), ('although of', 1), ('course not', 1), ('well informed', 1), ('informed as', 1), ('of pending', 1), ('pending negotiations', 1), ('negotiations with', 1), ('with any', 1), ('them i', 1), ('i see', 1), ('personal characters', 1), ('the sovereigns', 1), ('sovereigns as', 1), ('the mutual', 1), ('mutual interests', 1), ('own and', 1), ('the governments', 1), ('governments with', 1), ('our relations', 1), ('relations are', 1), ('are most', 1), ('most intimate', 1), ('intimate a', 1), ('a pleasing', 1), ('pleasing guaranty', 1), ('guaranty that', 1), ('the harmony', 1), ('harmony so', 1), ('so important', 1), ('important to', 1), ('subjects as', 1), ('as of', 1), ('citizens will', 1), ('be interrupted', 1), ('interrupted by', 1), ('the advancement', 1), ('advancement of', 1), ('any claim', 1), ('claim or', 1), ('or pretension', 1), ('pretension upon', 1), ('part to', 1), ('our honor', 1), ('honor would', 1), ('not permit', 1), ('permit us', 1), ('to yield', 1), ('long the', 1), ('the defender', 1), ('defender of', 1), ('my countrys', 1), ('countrys rights', 1), ('rights in', 1), ('the field', 1), ('field i', 1), ('i trust', 1), ('trust that', 1), ('that my', 1), ('fellowcitizens will', 1), ('not see', 1), ('my earnest', 1), ('earnest desire', 1), ('desire to', 1), ('preserve peace', 1), ('peace with', 1), ('with foreign', 1), ('foreign powers', 1), ('powers any', 1), ('any indication', 1), ('indication that', 1), ('that their', 1), ('rights will', 1), ('ever be', 1), ('be sacrificed', 1), ('sacrificed or', 1), ('the honor', 1), ('honor of', 1), ('nation tarnished', 1), ('tarnished by', 1), ('any admission', 1), ('admission on', 1), ('their chief', 1), ('magistrate unworthy', 1), ('unworthy of', 1), ('former glory', 1), ('our intercourse', 1), ('intercourse with', 1), ('our aboriginal', 1), ('aboriginal neighbors', 1), ('neighbors the', 1), ('same liberality', 1), ('liberality and', 1), ('and justice', 1), ('justice which', 1), ('which marked', 1), ('marked the', 1), ('the course', 1), ('course prescribed', 1), ('prescribed to', 1), ('by two', 1), ('my illustrious', 1), ('illustrious predecessors', 1), ('predecessors when', 1), ('when acting', 1), ('acting under', 1), ('under their', 1), ('their direction', 1), ('direction in', 1), ('of superintendent', 1), ('superintendent and', 1), ('and commissioner', 1), ('commissioner shall', 1), ('be strictly', 1), ('strictly observed', 1), ('can conceive', 1), ('conceive of', 1), ('no more', 1), ('more sublime', 1), ('sublime spectacle', 1), ('spectacle none', 1), ('none more', 1), ('to propitiate', 1), ('propitiate an', 1), ('an impartial', 1), ('impartial and', 1), ('and common', 1), ('common creator', 1), ('creator than', 1), ('than a', 1), ('a rigid', 1), ('rigid adherence', 1), ('adherence to', 1), ('of justice', 1), ('justice on', 1), ('a powerful', 1), ('powerful nation', 1), ('nation in', 1), ('its transactions', 1), ('transactions with', 1), ('with a', 1), ('a weaker', 1), ('weaker and', 1), ('and uncivilized', 1), ('uncivilized people', 1), ('people whom', 1), ('whom circumstances', 1), ('circumstances have', 1), ('at its', 1), ('its disposal', 1), ('before concluding', 1), ('concluding fellowcitizens', 1), ('fellowcitizens i', 1), ('i must', 1), ('must say', 1), ('say something', 1), ('something to', 1), ('you on', 1), ('parties at', 1), ('time existing', 1), ('existing in', 1), ('appears perfectly', 1), ('perfectly clear', 1), ('clear that', 1), ('the interest', 1), ('that country', 1), ('country requires', 1), ('requires that', 1), ('the violence', 1), ('violence of', 1), ('spirit by', 1), ('which those', 1), ('those parties', 1), ('parties are', 1), ('are at', 1), ('time governed', 1), ('governed must', 1), ('be greatly', 1), ('greatly mitigated', 1), ('mitigated if', 1), ('not entirely', 1), ('entirely extinguished', 1), ('extinguished or', 1), ('or consequences', 1), ('consequences will', 1), ('will ensue', 1), ('ensue which', 1), ('are appalling', 1), ('appalling to', 1), ('thought of', 1), ('if parties', 1), ('parties in', 1), ('republic are', 1), ('are necessary', 1), ('to secure', 1), ('secure a', 1), ('a degree', 1), ('of vigilance', 1), ('vigilance sufficient', 1), ('sufficient to', 1), ('keep the', 1), ('public functionaries', 1), ('functionaries within', 1), ('the bounds', 1), ('bounds of', 1), ('law and', 1), ('and duty', 1), ('duty at', 1), ('at that', 1), ('that point', 1), ('point their', 1), ('their usefulness', 1), ('usefulness ends', 1), ('beyond that', 1), ('they become', 1), ('become destructive', 1), ('of public', 1), ('public virtue', 1), ('virtue the', 1), ('the parent', 1), ('parent of', 1), ('spirit antagonist', 1), ('antagonist to', 1), ('and eventually', 1), ('eventually its', 1), ('its inevitable', 1), ('inevitable conqueror', 1), ('have examples', 1), ('examples of', 1), ('of republics', 1), ('republics where', 1), ('of country', 1), ('country and', 1), ('liberty at', 1), ('time were', 1), ('were the', 1), ('the dominant', 1), ('dominant passions', 1), ('passions of', 1), ('whole mass', 1), ('citizens and', 1), ('yet with', 1), ('name and', 1), ('of free', 1), ('free government', 1), ('government not', 1), ('not a', 1), ('a vestige', 1), ('vestige of', 1), ('these qualities', 1), ('qualities remaining', 1), ('remaining in', 1), ('any one', 1), ('its citizens', 1), ('the beautiful', 1), ('beautiful remark', 1), ('a distinguished', 1), ('distinguished english', 1), ('english writer', 1), ('writer that', 1), ('roman senate', 1), ('senate octavius', 1), ('octavius had', 1), ('had a', 1), ('party and', 1), ('and anthony', 1), ('anthony a', 1), ('commonwealth had', 1), ('had none', 1), ('none yet', 1), ('senate continued', 1), ('continued to', 1), ('to meet', 1), ('meet in', 1), ('the temple', 1), ('temple of', 1), ('liberty to', 1), ('to talk', 1), ('talk of', 1), ('the sacredness', 1), ('sacredness and', 1), ('beauty of', 1), ('commonwealth and', 1), ('and gaze', 1), ('gaze at', 1), ('the statues', 1), ('statues of', 1), ('the elder', 1), ('elder brutus', 1), ('brutus and', 1), ('the curtii', 1), ('curtii and', 1), ('and decii', 1), ('decii and', 1), ('people assembled', 1), ('assembled in', 1), ('the forum', 1), ('forum not', 1), ('the days', 1), ('days of', 1), ('of camillus', 1), ('camillus and', 1), ('the scipios', 1), ('scipios to', 1), ('to cast', 1), ('cast their', 1), ('their free', 1), ('free votes', 1), ('votes for', 1), ('for annual', 1), ('annual magistrates', 1), ('magistrates or', 1), ('or pass', 1), ('pass upon', 1), ('senate but', 1), ('to receive', 1), ('receive from', 1), ('the leaders', 1), ('leaders of', 1), ('respective parties', 1), ('parties their', 1), ('their share', 1), ('the spoils', 1), ('spoils and', 1), ('to shout', 1), ('shout for', 1), ('for one', 1), ('one or', 1), ('other as', 1), ('as those', 1), ('those collected', 1), ('collected in', 1), ('in gaul', 1), ('gaul or', 1), ('or egypt', 1), ('egypt and', 1), ('the lesser', 1), ('lesser asia', 1), ('asia would', 1), ('would furnish', 1), ('furnish the', 1), ('the larger', 1), ('larger dividend', 1), ('liberty had', 1), ('had fled', 1), ('fled and', 1), ('and avoiding', 1), ('avoiding the', 1), ('the abodes', 1), ('abodes of', 1), ('of civilized', 1), ('civilized man', 1), ('man had', 1), ('had sought', 1), ('sought protection', 1), ('protection in', 1), ('the wilds', 1), ('wilds of', 1), ('of scythia', 1), ('scythia or', 1), ('or scandinavia', 1), ('scandinavia and', 1), ('so under', 1), ('the operation', 1), ('operation of', 1), ('causes and', 1), ('and influences', 1), ('influences it', 1), ('will fly', 1), ('fly from', 1), ('our capitol', 1), ('capitol and', 1), ('and our', 1), ('our forums', 1), ('a calamity', 1), ('calamity so', 1), ('so awful', 1), ('awful not', 1), ('only to', 1), ('country but', 1), ('world must', 1), ('be deprecated', 1), ('by every', 1), ('every patriot', 1), ('patriot and', 1), ('and every', 1), ('every tendency', 1), ('tendency to', 1), ('things likely', 1), ('produce it', 1), ('it immediately', 1), ('immediately checked', 1), ('a tendency', 1), ('tendency has', 1), ('has existeddoes', 1), ('existeddoes exist', 1), ('always the', 1), ('the friend', 1), ('friend of', 1), ('countrymen never', 1), ('never their', 1), ('their flatterer', 1), ('flatterer it', 1), ('becomes my', 1), ('my duty', 1), ('say to', 1), ('from this', 1), ('this high', 1), ('high place', 1), ('place to', 1), ('their partiality', 1), ('partiality has', 1), ('has exalted', 1), ('exalted me', 1), ('me that', 1), ('that there', 1), ('there exists', 1), ('the land', 1), ('land a', 1), ('spirit hostile', 1), ('hostile to', 1), ('best interestshostile', 1), ('interestshostile to', 1), ('liberty itself', 1), ('spirit contracted', 1), ('contracted in', 1), ('its views', 1), ('views selfish', 1), ('selfish in', 1), ('its objects', 1), ('it looks', 1), ('looks to', 1), ('the aggrandizement', 1), ('aggrandizement of', 1), ('few even', 1), ('even to', 1), ('entire remedy', 1), ('remedy is', 1), ('is with', 1), ('something however', 1), ('however may', 1), ('means which', 1), ('is union', 1), ('union that', 1), ('that we', 1), ('we want', 1), ('want not', 1), ('party for', 1), ('that party', 1), ('but a', 1), ('a union', 1), ('its interests', 1), ('and its', 1), ('its honor', 1), ('honor against', 1), ('against foreign', 1), ('aggression for', 1), ('those principles', 1), ('principles for', 1), ('ancestors so', 1), ('so gloriously', 1), ('gloriously contended', 1), ('it depends', 1), ('depends upon', 1), ('upon me', 1), ('it shall', 1), ('be accomplished', 1), ('influence that', 1), ('i possess', 1), ('possess shall', 1), ('be exerted', 1), ('exerted to', 1), ('formation at', 1), ('least of', 1), ('an executive', 1), ('executive party', 1), ('party in', 1), ('the halls', 1), ('halls of', 1), ('i wish', 1), ('wish for', 1), ('no member', 1), ('body to', 1), ('any measure', 1), ('measure of', 1), ('mine that', 1), ('that does', 1), ('not satisfy', 1), ('satisfy his', 1), ('his judgment', 1), ('judgment and', 1), ('his sense', 1), ('of duty', 1), ('to those', 1), ('those from', 1), ('from whom', 1), ('whom he', 1), ('holds his', 1), ('his appointment', 1), ('appointment nor', 1), ('nor any', 1), ('any confidence', 1), ('in advance', 1), ('advance from', 1), ('that asked', 1), ('asked for', 1), ('for by', 1), ('jefferson to', 1), ('to give', 1), ('give firmness', 1), ('firmness and', 1), ('and effect', 1), ('effect to', 1), ('the legal', 1), ('legal administration', 1), ('administration of', 1), ('affairs ', 1), (' i', 1), ('i deem', 1), ('deem the', 1), ('present occasion', 1), ('occasion sufficiently', 1), ('sufficiently important', 1), ('important and', 1), ('and solemn', 1), ('solemn to', 1), ('to justify', 1), ('justify me', 1), ('in expressing', 1), ('expressing to', 1), ('fellowcitizens a', 1), ('a profound', 1), ('profound reverence', 1), ('reverence for', 1), ('the christian', 1), ('christian religion', 1), ('religion and', 1), ('thorough conviction', 1), ('conviction that', 1), ('that sound', 1), ('sound morals', 1), ('morals religious', 1), ('just sense', 1), ('of religious', 1), ('religious responsibility', 1), ('responsibility are', 1), ('are essentially', 1), ('essentially connected', 1), ('with all', 1), ('and lasting', 1), ('lasting happiness', 1), ('happiness and', 1), ('that good', 1), ('good being', 1), ('being who', 1), ('has blessed', 1), ('blessed us', 1), ('us by', 1), ('the gifts', 1), ('gifts of', 1), ('religious freedom', 1), ('freedom who', 1), ('who watched', 1), ('watched over', 1), ('over and', 1), ('and prospered', 1), ('prospered the', 1), ('our fathers', 1), ('fathers and', 1), ('and has', 1), ('hitherto preserved', 1), ('preserved to', 1), ('to us', 1), ('us institutions', 1), ('institutions far', 1), ('far exceeding', 1), ('exceeding in', 1), ('in excellence', 1), ('excellence those', 1), ('other people', 1), ('people let', 1), ('let us', 1), ('us unite', 1), ('in fervently', 1), ('fervently commending', 1), ('commending every', 1), ('every interest', 1), ('our beloved', 1), ('beloved country', 1), ('all future', 1), ('future time', 1), ('fellowcitizens being', 1), ('being fully', 1), ('fully invested', 1), ('invested with', 1), ('with that', 1), ('office to', 1), ('the partiality', 1), ('partiality of', 1), ('countrymen has', 1), ('has called', 1), ('called me', 1), ('me i', 1), ('i now', 1), ('now take', 1), ('take an', 1), ('an affectionate', 1), ('affectionate leave', 1), ('leave of', 1), ('of you', 1), ('you will', 1), ('will bear', 1), ('bear with', 1), ('with you', 1), ('you to', 1), ('to your', 1), ('your homes', 1), ('homes the', 1), ('the remembrance', 1), ('remembrance of', 1), ('pledge i', 1), ('have this', 1), ('this day', 1), ('day given', 1), ('to discharge', 1), ('discharge all', 1), ('high duties', 1), ('my exalted', 1), ('exalted station', 1), ('station according', 1), ('according to', 1), ('best of', 1), ('my ability', 1), ('ability and', 1), ('shall enter', 1), ('enter upon', 1), ('their performance', 1), ('performance with', 1), ('with entire', 1), ('entire confidence', 1), ('and generous', 1), ('generous people', 1)]\n" + ] + } + ], + "source": [ + "def getNgrams(text, n):\n", + " text = text.split(' ')\n", + " return [' '.join(text[i:i+n]) for i in range(len(text)-n+1)]\n", + "\n", + "def countNGramsFromSentences(sentences, n):\n", + " counts = Counter()\n", + " for sentence in sentences:\n", + " counts.update(getNgrams(sentence, n))\n", + " return counts\n", + "\n", + "counts = countNGramsFromSentences(cleaned, 2)\n", + "print(counts.most_common())" + ] + }, + { + "cell_type": "code", + "execution_count": 30, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[('united states', 10),\n", + " ('executive department', 4),\n", + " ('general government', 4),\n", + " ('called upon', 3),\n", + " ('chief magistrate', 3),\n", + " ('legislative body', 3),\n", + " ('same causes', 3),\n", + " ('government should', 3),\n", + " ('whole country', 3),\n", + " ('was observable', 2),\n", + " ('express grant', 2),\n", + " ('several departments', 2),\n", + " ('american citizen', 2),\n", + " ('was intended', 2),\n", + " ('are attributable', 2),\n", + " ('upon another', 2),\n", + " ('reserved rights', 2),\n", + " ('federal government', 2),\n", + " ('increase itself', 2),\n", + " ('were made', 2),\n", + " ('heretofore given', 2),\n", + " ('pristine health', 2),\n", + " ('second term', 2),\n", + " ('observed however', 2),\n", + " ('foreign relations', 2),\n", + " ('executive power', 2),\n", + " ('negative upon', 2),\n", + " ('declare void', 2),\n", + " ('both houses', 2),\n", + " ('used only', 2),\n", + " ('state governments', 2),\n", + " ('immediate representatives', 2),\n", + " ('veto power', 2),\n", + " ('high office', 2),\n", + " ('disputed points', 2),\n", + " ('respectively claim', 2),\n", + " ('reserved powers', 2),\n", + " ('state authorities', 2),\n", + " ('great increase', 2),\n", + " ('elective franchise', 2),\n", + " ('strange indeed', 2),\n", + " ('public money', 2),\n", + " ('religious liberty', 2),\n", + " ('should never', 2),\n", + " ('propose amendments', 2),\n", + " ('exclusive metallic', 2),\n", + " ('metallic currency', 2),\n", + " ('american citizens', 2),\n", + " ('domestic concerns', 2),\n", + " ('foreign aggression', 2),\n", + " ('individual members', 2),\n", + " ('itself upon', 2),\n", + " ('genuine spirit', 2),\n", + " ('true spirit', 2),\n", + " ('had supposed', 1),\n", + " ('supposed was', 1),\n", + " ('chief executive', 1),\n", + " ('executive office', 1),\n", + " ('free nation', 1),\n", + " ('appear before', 1),\n", + " ('constitution prescribes', 1),\n", + " ('necessary qualification', 1),\n", + " ('custom coeval', 1),\n", + " ('roman consul', 1),\n", + " ('early period', 1),\n", + " ('celebrated republic', 1),\n", + " ('most striking', 1),\n", + " ('striking contrast', 1),\n", + " ('contrast was', 1),\n", + " ('trust before', 1),\n", + " ('after obtaining', 1),\n", + " ('seldom carrying', 1),\n", + " ('latter case', 1),\n", + " ('promises made', 1),\n", + " ('however much', 1),\n", + " ('world may', 1),\n", + " ('thousand years', 1),\n", + " ('years since', 1),\n", + " ('remark was', 1),\n", + " ('was made', 1),\n", + " ('indignant roman', 1),\n", + " ('strict examination', 1),\n", + " ('modern elective', 1),\n", + " ('elective governments', 1),\n", + " ('develop similar', 1),\n", + " ('similar instances', 1),\n", + " ('violated confidence', 1),\n", + " ('gone forth', 1),\n", + " ('forth proclaiming', 1),\n", + " ('glorious union', 1),\n", + " ('union nothing', 1),\n", + " ('nothing upon', 1),\n", + " ('part remaining', 1),\n", + " ('motive may', 1),\n", + " ('may exist', 1),\n", + " ('delusion under', 1),\n", + " ('either prepared', 1),\n", + " ('condemn those', 1),\n", + " ('few months', 1),\n", + " ('yet begun', 1),\n", + " ('immutable history', 1),\n", + " ('shall stand', 1),\n", + " ('stand either', 1),\n", + " ('either exonerated', 1),\n", + " ('might deceive', 1),\n", + " ('however strong', 1),\n", + " ('strong may', 1),\n", + " ('present purpose', 1),\n", + " ('dangerous temptations', 1),\n", + " ('chief confidence', 1),\n", + " ('confidence upon', 1),\n", + " ('almighty power', 1),\n", + " ('hitherto protected', 1),\n", + " ('favorable issues', 1),\n", + " ('still greatly', 1),\n", + " ('greatly inferior', 1),\n", + " ('inferior trusts', 1),\n", + " ('trusts heretofore', 1),\n", + " ('heretofore confided', 1),\n", + " ('broad foundation', 1),\n", + " ('foundation upon', 1),\n", + " ('constitution rests', 1),\n", + " ('rests being', 1),\n", + " ('peoplea breath', 1),\n", + " ('theirs having', 1),\n", + " ('having made', 1),\n", + " ('unmake change', 1),\n", + " ('modify itit', 1),\n", + " ('great divisions', 1),\n", + " ('theory those', 1),\n", + " ('are called', 1),\n", + " ('must recognize', 1),\n", + " ('leading principle', 1),\n", + " ('greatest good', 1),\n", + " ('greatest number', 1),\n", + " ('broad admissions', 1),\n", + " ('sovereignty acknowledged', 1),\n", + " ('power claimed', 1),\n", + " ('sovereignties even', 1),\n", + " ('considered most', 1),\n", + " ('most purely', 1),\n", + " ('purely democratic', 1),\n", + " ('most essential', 1),\n", + " ('essential difference', 1),\n", + " ('others lay', 1),\n", + " ('lay claim', 1),\n", + " ('power limited', 1),\n", + " ('limited only', 1),\n", + " ('contrary possess', 1),\n", + " ('power precisely', 1),\n", + " ('precisely equal', 1),\n", + " ('national compact', 1),\n", + " ('nothing beyond', 1),\n", + " ('divine right', 1),\n", + " ('right believing', 1),\n", + " ('beneficent creator', 1),\n", + " ('distinction amongst', 1),\n", + " ('amongst men', 1),\n", + " ('are upon', 1),\n", + " ('only legitimate', 1),\n", + " ('legitimate right', 1),\n", + " ('instrument containing', 1),\n", + " ('departments composing', 1),\n", + " ('contain declarations', 1),\n", + " ('power granted', 1),\n", + " ('power withheld', 1),\n", + " ('majority had', 1),\n", + " ('being possessed', 1),\n", + " ('are certain', 1),\n", + " ('certain rights', 1),\n", + " ('rights possessed', 1),\n", + " ('each individual', 1),\n", + " ('individual american', 1),\n", + " ('never surrendered', 1),\n", + " ('surrender being', 1),\n", + " ('system unalienable', 1),\n", + " ('boasted privilege', 1),\n", + " ('roman citizen', 1),\n", + " ('citizen was', 1),\n", + " ('shield only', 1),\n", + " ('only against', 1),\n", + " ('petty provincial', 1),\n", + " ('provincial ruler', 1),\n", + " ('ruler whilst', 1),\n", + " ('proud democrat', 1),\n", + " ('console himself', 1),\n", + " ('himself under', 1),\n", + " ('supposed violation', 1),\n", + " ('national faithwhich', 1),\n", + " ('times was', 1),\n", + " ('alleged cause', 1),\n", + " ('single tyrant', 1),\n", + " ('hated aristocracy', 1),\n", + " ('assembled countrymen', 1),\n", + " ('far different', 1),\n", + " ('ones faith', 1),\n", + " ('faith prescribe', 1),\n", + " ('prescribe forms', 1),\n", + " ('ones observance', 1),\n", + " ('observance inflict', 1),\n", + " ('after wellascertained', 1),\n", + " ('wellascertained guilt', 1),\n", + " ('investigation under', 1),\n", + " ('under rules', 1),\n", + " ('rules prescribed', 1),\n", + " ('constitution itself', 1),\n", + " ('precious privileges', 1),\n", + " ('those scarcely', 1),\n", + " ('scarcely less', 1),\n", + " ('less important', 1),\n", + " ('giving expression', 1),\n", + " ('opinions either', 1),\n", + " ('speaking unrestrained', 1),\n", + " ('full participation', 1),\n", + " ('acknowledged property', 1),\n", + " ('citizen derives', 1),\n", + " ('charter granted', 1),\n", + " ('same almighty', 1),\n", + " ('almighty hand', 1),\n", + " ('full share', 1),\n", + " ('limited sovereignty', 1),\n", + " ('sovereignty possessed', 1),\n", + " ('restricted grant', 1),\n", + " ('adopted enough', 1),\n", + " ('was created', 1),\n", + " ('found powerful', 1),\n", + " ('hitherto justice', 1),\n", + " ('intimate union', 1),\n", + " ('union effected', 1),\n", + " ('effected domestic', 1),\n", + " ('domestic tranquillity', 1),\n", + " ('tranquillity preserved', 1),\n", + " ('personal liberty', 1),\n", + " ('liberty secured', 1),\n", + " ('expected however', 1),\n", + " ('necessarily sententious', 1),\n", + " ('sententious manner', 1),\n", + " ('written disputes', 1),\n", + " ('actually granted', 1),\n", + " ('legislative branch', 1),\n", + " ('powers claimed', 1),\n", + " ('claimed under', 1),\n", + " ('general clause', 1),\n", + " ('clause giving', 1),\n", + " ('laws necessary', 1),\n", + " ('specified powers', 1),\n", + " ('however consolatory', 1),\n", + " ('alleged departure', 1),\n", + " ('ultimately received', 1),\n", + " ('statesmen most', 1),\n", + " ('most distinguished', 1),\n", + " ('political career', 1),\n", + " ('both sides', 1),\n", + " ('most warmly', 1),\n", + " ('warmly disputed', 1),\n", + " ('disputed questions', 1),\n", + " ('questions forces', 1),\n", + " ('forces upon', 1),\n", + " ('upon us', 1),\n", + " ('were are', 1),\n", + " ('intrinsic difficulty', 1),\n", + " ('constitution rather', 1),\n", + " ('any sinister', 1),\n", + " ('unpatriotic motive', 1),\n", + " ('great danger', 1),\n", + " ('institutions does', 1),\n", + " ('was assigned', 1),\n", + " ('granted still', 1),\n", + " ('still enough', 1),\n", + " ('greatly heightened', 1),\n", + " ('always observable', 1),\n", + " ('men are', 1),\n", + " ('are less', 1),\n", + " ('less jealous', 1),\n", + " ('department upon', 1),\n", + " ('own reserved', 1),\n", + " ('sternest republicans', 1),\n", + " ('were alarmed', 1),\n", + " ('executive branch', 1),\n", + " ('simple representative', 1),\n", + " ('representative democracy', 1),\n", + " ('itself particularly', 1),\n", + " ('single individual', 1),\n", + " ('individual predictions', 1),\n", + " ('predictions were', 1),\n", + " ('very remote', 1),\n", + " ('remote period', 1),\n", + " ('virtual monarchy', 1),\n", + " ('already realized', 1),\n", + " ('sincerely believe', 1),\n", + " ('mens opinions', 1),\n", + " ('years past', 1),\n", + " ('conceive strictly', 1),\n", + " ('strictly proper', 1),\n", + " ('really exists', 1),\n", + " ('any legitimate', 1),\n", + " ('legitimate exercise', 1),\n", + " ('power placed', 1),\n", + " ('extensively complained', 1),\n", + " ('former are', 1),\n", + " ('are unquestionably', 1),\n", + " ('constitution others', 1),\n", + " ('judgment are', 1),\n", + " ('same individual', 1),\n", + " ('sagacious mind', 1),\n", + " ('jefferson early', 1),\n", + " ('early saw', 1),\n", + " ('made hitherto', 1),\n", + " ('hitherto without', 1),\n", + " ('without success', 1),\n", + " ('amendatory power', 1),\n", + " ('every president', 1),\n", + " ('perhaps invidious', 1),\n", + " ('constitution may', 1),\n", + " ('bitter fruits', 1),\n", + " ('are still', 1),\n", + " ('general remark', 1),\n", + " ('greater error', 1),\n", + " ('continue any', 1),\n", + " ('any feature', 1),\n", + " ('whom necessity', 1),\n", + " ('necessity obliges', 1),\n", + " ('surely nothing', 1),\n", + " ('produce such', 1),\n", + " ('long continuance', 1),\n", + " ('high trust', 1),\n", + " ('corrupting nothing', 1),\n", + " ('those noble', 1),\n", + " ('noble feelings', 1),\n", + " ('devoted republican', 1),\n", + " ('republican patriot', 1),\n", + " ('corrupting passion', 1),\n", + " ('passion once', 1),\n", + " ('once takes', 1),\n", + " ('takes possession', 1),\n", + " ('human mind', 1),\n", + " ('becomes insatiable', 1),\n", + " ('neverdying worm', 1),\n", + " ('bosom grows', 1),\n", + " ('declining years', 1),\n", + " ('accountable agent', 1),\n", + " ('effected public', 1),\n", + " ('public opinion', 1),\n", + " ('opinion may', 1),\n", + " ('may secure', 1),\n", + " ('desired object', 1),\n", + " ('pledge heretofore', 1),\n", + " ('public liberty', 1),\n", + " ('acknowledged defects', 1),\n", + " ('same hands', 1),\n", + " ('much less', 1),\n", + " ('powers actually', 1),\n", + " ('actually given', 1),\n", + " ('fair construction', 1),\n", + " ('construction any', 1),\n", + " ('legislative power', 1),\n", + " ('recommend since', 1),\n", + " ('since although', 1),\n", + " ('although enjoined', 1),\n", + " ('duty upon', 1),\n", + " ('measures recommended', 1),\n", + " ('ultimate decision', 1),\n", + " ('legislative powers', 1),\n", + " ('grants are', 1),\n", + " ('are vested', 1),\n", + " ('any portion', 1),\n", + " ('said indeed', 1),\n", + " ('similar power', 1),\n", + " ('necessarily resulted', 1),\n", + " ('judiciary forms', 1),\n", + " ('difference between', 1),\n", + " ('constitution whilst', 1),\n", + " ('only declare', 1),\n", + " ('void those', 1),\n", + " ('case whereas', 1),\n", + " ('every instance', 1),\n", + " ('instance where', 1),\n", + " ('executive authority', 1),\n", + " ('similar character', 1),\n", + " ('character however', 1),\n", + " ('highly expedient', 1),\n", + " ('great good', 1),\n", + " ('best safeguards', 1),\n", + " ('principle does', 1),\n", + " ('enjoyed much', 1),\n", + " ('much favor', 1),\n", + " ('plural executive', 1),\n", + " ('operated upon', 1),\n", + " ('purely patriotic', 1),\n", + " ('enlightened assembly', 1),\n", + " ('apparently repugnant', 1),\n", + " ('leading democratic', 1),\n", + " ('democratic principle', 1),\n", + " ('majority should', 1),\n", + " ('should govern', 1),\n", + " ('must reject', 1),\n", + " ('any benefit', 1),\n", + " ('ordinary course', 1),\n", + " ('knew too', 1),\n", + " ('high degree', 1),\n", + " ('existed among', 1),\n", + " ('enlightened character', 1),\n", + " ('state legislatures', 1),\n", + " ('fullest confidence', 1),\n", + " ('bodies elected', 1),\n", + " ('worthy representatives', 1),\n", + " ('such constituents', 1),\n", + " ('country might', 1),\n", + " ('might require', 1),\n", + " ('president placed', 1),\n", + " ('better understand', 1),\n", + " ('own immediate', 1),\n", + " ('often laboring', 1),\n", + " ('triple tie', 1),\n", + " ('interest duty', 1),\n", + " ('control congress', 1),\n", + " ('ordinary legislation', 1),\n", + " ('argument acquires', 1),\n", + " ('acquires additional', 1),\n", + " ('additional force', 1),\n", + " ('never having', 1),\n", + " ('thus used', 1),\n", + " ('six presidentsand', 1),\n", + " ('were members', 1),\n", + " ('presiding over', 1),\n", + " ('larger share', 1),\n", + " ('august body', 1),\n", + " ('bills were', 1),\n", + " ('were never', 1),\n", + " ('never returned', 1),\n", + " ('presidents above', 1),\n", + " ('above referred', 1),\n", + " ('being inexpedient', 1),\n", + " ('veto was', 1),\n", + " ('was applied', 1),\n", + " ('applied upon', 1),\n", + " ('errors had', 1),\n", + " ('too hasty', 1),\n", + " ('hasty enactment', 1),\n", + " ('another ground', 1),\n", + " ('veto principle', 1),\n", + " ('had probably', 1),\n", + " ('equitable action', 1),\n", + " ('legislature upon', 1),\n", + " ('extensive embracing', 1),\n", + " ('causes must', 1),\n", + " ('must ever', 1),\n", + " ('ever exhibit', 1),\n", + " ('great difference', 1),\n", + " ('various sections', 1),\n", + " ('sections calling', 1),\n", + " ('great diversity', 1),\n", + " ('majority might', 1),\n", + " ('always justly', 1),\n", + " ('justly regard', 1),\n", + " ('character might', 1),\n", + " ('passed under', 1),\n", + " ('however enlightened', 1),\n", + " ('might suppose', 1),\n", + " ('past experience', 1),\n", + " ('congress might', 1),\n", + " ('however largely', 1),\n", + " ('largely partaking', 1),\n", + " ('liberal feelings', 1),\n", + " ('was impossible', 1),\n", + " ('constituted should', 1),\n", + " ('local interests', 1),\n", + " ('sectional feelings', 1),\n", + " ('was proper', 1),\n", + " ('proper therefore', 1),\n", + " ('whose situation', 1),\n", + " ('such influences', 1),\n", + " ('influences might', 1),\n", + " ('was afforded', 1),\n", + " ('department constituted', 1),\n", + " ('person elected', 1),\n", + " ('office having', 1),\n", + " ('every section', 1),\n", + " ('section state', 1),\n", + " ('union must', 1),\n", + " ('must consider', 1),\n", + " ('consider himself', 1),\n", + " ('himself bound', 1),\n", + " ('most solemn', 1),\n", + " ('solemn sanctions', 1),\n", + " ('guard protect', 1),\n", + " ('every portion', 1),\n", + " ('portion great', 1),\n", + " ('power therefore', 1),\n", + " ('therefore given', 1),\n", + " ('states solely', 1),\n", + " ('conservative power', 1),\n", + " ('violation secondly', 1),\n", + " ('hasty legislation', 1),\n", + " ('legislation where', 1),\n", + " ('probably disregarded', 1),\n", + " ('combinations violative', 1),\n", + " ('may observe', 1),\n", + " ('decide disputed', 1),\n", + " ('constitution arising', 1),\n", + " ('general grant', 1),\n", + " ('powers expressly', 1),\n", + " ('expressly given', 1),\n", + " ('repeated recognitions', 1),\n", + " ('recognitions under', 1),\n", + " ('under varied', 1),\n", + " ('varied circumstances', 1),\n", + " ('legislative executive', 1),\n", + " ('judicial branches', 1),\n", + " ('government accompanied', 1),\n", + " ('different modes', 1),\n", + " ('president sufficient', 1),\n", + " ('sufficient authority', 1),\n", + " ('considering such', 1),\n", + " ('such disputed', 1),\n", + " ('elapsed since', 1),\n", + " ('present form', 1),\n", + " ('highly desirable', 1),\n", + " ('speculative statesmen', 1),\n", + " ('precise situation', 1),\n", + " ('fair exhibit', 1),\n", + " ('exhibit made', 1),\n", + " ('occurred between', 1),\n", + " ('whole government', 1),\n", + " ('actual condition', 1),\n", + " ('condition after', 1),\n", + " ('after fifty', 1),\n", + " ('fifty years', 1),\n", + " ('years trial', 1),\n", + " ('ascertain whether', 1),\n", + " ('confident hopes', 1),\n", + " ('best realized', 1),\n", + " ('great dread', 1),\n", + " ('former seems', 1),\n", + " ('consolidated power', 1),\n", + " ('power established', 1),\n", + " ('established leaving', 1),\n", + " ('shadow only', 1),\n", + " ('independent action', 1),\n", + " ('zealously contended', 1),\n", + " ('last hope', 1),\n", + " ('without denying', 1),\n", + " ('much apprehension', 1),\n", + " ('being realized', 1),\n", + " ('seized upon', 1),\n", + " ('upon none', 1),\n", + " ('any open', 1),\n", + " ('open warfare', 1),\n", + " ('warfare may', 1),\n", + " ('amply maintained', 1),\n", + " ('casual observer', 1),\n", + " ('system presents', 1),\n", + " ('discord between', 1),\n", + " ('different members', 1),\n", + " ('respective orbits', 1),\n", + " ('perfect harmony', 1),\n", + " ('central head', 1),\n", + " ('seasonably checked', 1),\n", + " ('worst apprehensions', 1),\n", + " ('antifederal patriots', 1),\n", + " ('radically changed', 1),\n", + " ('part effected', 1),\n", + " ('causes inherent', 1),\n", + " ('neverfailing tendency', 1),\n", + " ('political power', 1),\n", + " ('sole distributer', 1),\n", + " ('formidable instrument', 1),\n", + " ('free operations', 1),\n", + " ('trifling importance', 1),\n", + " ('had early', 1),\n", + " ('jeffersons administration', 1),\n", + " ('administration become', 1),\n", + " ('create great', 1),\n", + " ('great alarm', 1),\n", + " ('potent influence', 1),\n", + " ('might exert', 1),\n", + " ('much greater', 1),\n", + " ('greater must', 1),\n", + " ('completely under', 1),\n", + " ('powers allowed', 1),\n", + " ('forbearing characters', 1),\n", + " ('early presidents', 1),\n", + " ('presidents permitted', 1),\n", + " ('patronage alone', 1),\n", + " ('become dangerous', 1),\n", + " ('appears may', 1),\n", + " ('appointing power', 1),\n", + " ('bring under', 1),\n", + " ('whole revenues', 1),\n", + " ('laws are', 1),\n", + " ('are executed', 1),\n", + " ('most approved', 1),\n", + " ('approved writers', 1),\n", + " ('writers upon', 1),\n", + " ('mixed government', 1),\n", + " ('modern europe', 1),\n", + " ('termed monarchy', 1),\n", + " ('was wanting', 1),\n", + " ('monarchical character', 1),\n", + " ('public finances', 1),\n", + " ('appears strange', 1),\n", + " ('anyone should', 1),\n", + " ('should doubt', 1),\n", + " ('entire control', 1),\n", + " ('president possesses', 1),\n", + " ('possesses over', 1),\n", + " ('without cause', 1),\n", + " ('cause does', 1),\n", + " ('mischievous purposes', 1),\n", + " ('least virtually', 1),\n", + " ('virtually subject', 1),\n", + " ('roman emperor', 1),\n", + " ('sacred treasure', 1),\n", + " ('treasure silenced', 1),\n", + " ('whose charge', 1),\n", + " ('significant allusion', 1),\n", + " ('political instruments', 1),\n", + " ('roman knight', 1),\n", + " ('great difficulty', 1),\n", + " ('proper plan', 1),\n", + " ('public revenues', 1),\n", + " ('great abilities', 1),\n", + " ('banking institutions', 1),\n", + " ('unhallowed union', 1),\n", + " ('created such', 1),\n", + " ('such extensive', 1),\n", + " ('extensive alarm', 1),\n", + " ('republican institutions', 1),\n", + " ('influence given', 1),\n", + " ('executive through', 1),\n", + " ('federal officers', 1),\n", + " ('was certainly', 1),\n", + " ('great error', 1),\n", + " ('treasury department', 1),\n", + " ('department entirely', 1),\n", + " ('entirely independent', 1),\n", + " ('removable only', 1),\n", + " ('only upon', 1),\n", + " ('popular branch', 1),\n", + " ('determined never', 1),\n", + " ('treasury without', 1),\n", + " ('without communicating', 1),\n", + " ('circumstances attending', 1),\n", + " ('attending such', 1),\n", + " ('such removal', 1),\n", + " ('franchise through', 1),\n", + " ('public officers', 1),\n", + " ('effectually checked', 1),\n", + " ('prohibition published', 1),\n", + " ('jefferson forbidding', 1),\n", + " ('elections further', 1),\n", + " ('own votes', 1),\n", + " ('own independence', 1),\n", + " ('independence secured', 1),\n", + " ('perfect immunity', 1),\n", + " ('sacred privilege', 1),\n", + " ('freemen under', 1),\n", + " ('own unbiased', 1),\n", + " ('unbiased judgments', 1),\n", + " ('consent shall', 1),\n", + " ('pockets become', 1),\n", + " ('pliant instrument', 1),\n", + " ('means placed', 1),\n", + " ('greater effect', 1),\n", + " ('unhallowed purposes', 1),\n", + " ('public press', 1),\n", + " ('ancestors derived', 1),\n", + " ('mother country', 1),\n", + " ('great bulwark', 1),\n", + " ('most precious', 1),\n", + " ('precious legacies', 1),\n", + " ('left us', 1),\n", + " ('learned too', 1),\n", + " ('golden shackles', 1),\n", + " ('whatever pretense', 1),\n", + " ('pretense imposed', 1),\n", + " ('imposed are', 1),\n", + " ('iron bonds', 1),\n", + " ('necessary employment', 1),\n", + " ('varnish crime', 1),\n", + " ('manly examination', 1),\n", + " ('only tolerated', 1),\n", + " ('another occasion', 1),\n", + " ('length upon', 1),\n", + " ('executive interference', 1),\n", + " ('constitution making', 1),\n", + " ('communicate information', 1),\n", + " ('recommend measures', 1),\n", + " ('measures was', 1),\n", + " ('very strange', 1),\n", + " ('constitution should', 1),\n", + " ('strictly forbidden', 1),\n", + " ('such bills', 1),\n", + " ('considered proper', 1),\n", + " ('altogether different', 1),\n", + " ('different department', 1),\n", + " ('best political', 1),\n", + " ('political maxims', 1),\n", + " ('parent isle', 1),\n", + " ('are others', 1),\n", + " ('others however', 1),\n", + " ('system without', 1),\n", + " ('without singular', 1),\n", + " ('singular incongruity', 1),\n", + " ('much mischief', 1),\n", + " ('bill may', 1),\n", + " ('may originate', 1),\n", + " ('originate nor', 1),\n", + " ('whom introduceda', 1),\n", + " ('introduceda minister', 1),\n", + " ('constitutional principle', 1),\n", + " ('very reverse', 1),\n", + " ('forms prescribed', 1),\n", + " ('principle certainly', 1),\n", + " ('certainly assigns', 1),\n", + " ('only body', 1),\n", + " ('body constituted', 1),\n", + " ('forms even', 1),\n", + " ('even direct', 1),\n", + " ('enactment should', 1),\n", + " ('revenue bills', 1),\n", + " ('power given', 1),\n", + " ('existing revenue', 1),\n", + " ('revenue laws', 1),\n", + " ('laws suggested', 1),\n", + " ('observations upon', 1),\n", + " ('injurious operation', 1),\n", + " ('delicate duty', 1),\n", + " ('devising schemes', 1),\n", + " ('revenue should', 1),\n", + " ('left where', 1),\n", + " ('placed itwith', 1),\n", + " ('similar reasons', 1),\n", + " ('public treasure', 1),\n", + " ('treasure should', 1),\n", + " ('further removed', 1),\n", + " ('republican principle', 1),\n", + " ('exclusively metallic', 1),\n", + " ('metallic however', 1),\n", + " ('intended appears', 1),\n", + " ('fatal consequences', 1),\n", + " ('scheme having', 1),\n", + " ('personal rights', 1),\n", + " ('any single', 1),\n", + " ('single scheme', 1),\n", + " ('most indigent', 1),\n", + " ('indigent fellowcitizens', 1),\n", + " ('enterprise are', 1),\n", + " ('are raised', 1),\n", + " ('measure better', 1),\n", + " ('better calculated', 1),\n", + " ('much deprecated', 1),\n", + " ('true republicans', 1),\n", + " ('rich are', 1),\n", + " ('are daily', 1),\n", + " ('daily adding', 1),\n", + " ('poor sinking', 1),\n", + " ('sinking deeper', 1),\n", + " ('feeling may', 1),\n", + " ('neck toleration', 1),\n", + " ('delicate character', 1),\n", + " ('are destined', 1),\n", + " ('become members', 1),\n", + " ('great political', 1),\n", + " ('political family', 1),\n", + " ('family are', 1),\n", + " ('are compensated', 1),\n", + " ('rapid progress', 1),\n", + " ('temporary deprivation', 1),\n", + " ('political rights', 1),\n", + " ('district only', 1),\n", + " ('only where', 1),\n", + " ('where american', 1),\n", + " ('citizens are', 1),\n", + " ('settled policy', 1),\n", + " ('policy are', 1),\n", + " ('are deprived', 1),\n", + " ('important political', 1),\n", + " ('political privileges', 1),\n", + " ('privileges without', 1),\n", + " ('without any', 1),\n", + " ('any inspiring', 1),\n", + " ('inspiring hope', 1),\n", + " ('only consolation', 1),\n", + " ('consolation under', 1),\n", + " ('under circumstances', 1),\n", + " ('such deprivation', 1),\n", + " ('devoted exterior', 1),\n", + " ('exterior guards', 1),\n", + " ('sufferings secure', 1),\n", + " ('secure tranquillity', 1),\n", + " ('safety within', 1),\n", + " ('greater sacrifices', 1),\n", + " ('those essentially', 1),\n", + " ('essentially necessary', 1),\n", + " ('were thus', 1),\n", + " ('thus separated', 1),\n", + " ('fellowcitizens are', 1),\n", + " ('rights alone', 1),\n", + " ('those great', 1),\n", + " ('great principles', 1),\n", + " ('principles upon', 1),\n", + " ('constitutions are', 1),\n", + " ('are founded', 1),\n", + " ('are told', 1),\n", + " ('british orators', 1),\n", + " ('most stupid', 1),\n", + " ('stupid men', 1),\n", + " ('england spoke', 1),\n", + " ('american subjects', 1),\n", + " ('subjects are', 1),\n", + " ('indeed citizens', 1),\n", + " ('columbia such', 1),\n", + " ('such dreams', 1),\n", + " ('any agency', 1),\n", + " ('columbia are', 1),\n", + " ('free american', 1),\n", + " ('latter condition', 1),\n", + " ('constitution was', 1),\n", + " ('was formed', 1),\n", + " ('words used', 1),\n", + " ('great principle', 1),\n", + " ('unalienable rights', 1),\n", + " ('emphatically insisted', 1),\n", + " ('insisted upon', 1),\n", + " ('states accept', 1),\n", + " ('former fellowcitizens', 1),\n", + " ('correct idea', 1),\n", + " ('own rights', 1),\n", + " ('american citizenthe', 1),\n", + " ('citizenthe grant', 1),\n", + " ('exclusive jurisdiction', 1),\n", + " ('meaning nothing', 1),\n", + " ('controlling power', 1),\n", + " ('power necessary', 1),\n", + " ('safe exercise', 1),\n", + " ('functions assigned', 1),\n", + " ('congress should', 1),\n", + " ('peculiar position', 1),\n", + " ('deliberate opinions', 1),\n", + " ('own interests', 1),\n", + " ('respective departments', 1),\n", + " ('country within', 1),\n", + " ('appropriate orbits', 1),\n", + " ('claim are', 1),\n", + " ('are often', 1),\n", + " ('any distinct', 1),\n", + " ('distinct lines', 1),\n", + " ('mischievous however', 1),\n", + " ('kind may', 1),\n", + " ('arise between', 1),\n", + " ('respective communities', 1),\n", + " ('certain purposes', 1),\n", + " ('purposes compose', 1),\n", + " ('nation are', 1),\n", + " ('are much', 1),\n", + " ('such nation', 1),\n", + " ('long exist', 1),\n", + " ('exist without', 1),\n", + " ('careful culture', 1),\n", + " ('those feelings', 1),\n", + " ('effective bonds', 1),\n", + " ('union between', 1),\n", + " ('between free', 1),\n", + " ('confederated states', 1),\n", + " ('often found', 1),\n", + " ('found ineffectual', 1),\n", + " ('men blinded', 1),\n", + " ('adopt measures', 1),\n", + " ('direct opposition', 1),\n", + " ('keep down', 1),\n", + " ('bad passion', 1),\n", + " ('corner stone', 1),\n", + " ('stone upon', 1),\n", + " ('american political', 1),\n", + " ('political architects', 1),\n", + " ('existence was', 1),\n", + " ('affectionate attachment', 1),\n", + " ('attachment between', 1),\n", + " ('feeling produced', 1),\n", + " ('each were', 1),\n", + " ('made accessible', 1),\n", + " ('any good', 1),\n", + " ('good possessed', 1),\n", + " ('any member', 1),\n", + " ('extensive confederacy', 1),\n", + " ('confederacy except', 1),\n", + " ('domestic government', 1),\n", + " ('government was', 1),\n", + " ('was withheld', 1),\n", + " ('process attended', 1),\n", + " ('might become', 1),\n", + " ('lines too', 1),\n", + " ('too separating', 1),\n", + " ('separating powers', 1),\n", + " ('another seem', 1),\n", + " ('distinctly drawn', 1),\n", + " ('each state', 1),\n", + " ('state unite', 1),\n", + " ('character confers', 1),\n", + " ('may claim', 1),\n", + " ('same persons', 1),\n", + " ('separate states', 1),\n", + " ('therefore positively', 1),\n", + " ('positively precluded', 1),\n", + " ('any interference', 1),\n", + " ('any state', 1),\n", + " ('may indeed', 1),\n", + " ('indeed offer', 1),\n", + " ('own discretion', 1),\n", + " ('organized associations', 1),\n", + " ('citizens requiring', 1),\n", + " ('requiring compliance', 1),\n", + " ('wishes too', 1),\n", + " ('too much', 1),\n", + " ('much resemble', 1),\n", + " ('allies supported', 1),\n", + " ('powerful fleet', 1),\n", + " ('was indeed', 1),\n", + " ('leading states', 1),\n", + " ('celebrated confederacy', 1),\n", + " ('helvetic confederacy', 1),\n", + " ('separate members', 1),\n", + " ('any confederacy', 1),\n", + " ('several cantons', 1),\n", + " ('discrepancy was', 1),\n", + " ('promise anything', 1),\n", + " ('ages neither', 1),\n", + " ('positive benefits', 1),\n", + " ('union produced', 1),\n", + " ('however repugnant', 1),\n", + " ('own principles', 1),\n", + " ('confederacy fellowcitizens', 1),\n", + " ('same forbearance', 1),\n", + " ('citizens must', 1),\n", + " ('constitution clothes', 1),\n", + " ('domestic institutions', 1),\n", + " ('only result', 1),\n", + " ('certain harbingers', 1),\n", + " ('disunion violence', 1),\n", + " ('civil war', 1),\n", + " ('ultimate destruction', 1),\n", + " ('free institutions', 1),\n", + " ('perfectly illustrated', 1),\n", + " ('principles governing', 1),\n", + " ('common copartnership', 1),\n", + " ('exercised under', 1),\n", + " ('joint councils', 1),\n", + " ('allied members', 1),\n", + " ('common government', 1),\n", + " ('members composing', 1),\n", + " ('earnest endeavor', 1),\n", + " ('endeavor mutually', 1),\n", + " ('harmony among', 1),\n", + " ('various parts', 1),\n", + " ('abundantly taught', 1),\n", + " ('taught us', 1),\n", + " ('exclusively under', 1),\n", + " ('local authorities', 1),\n", + " ('bitterness alienation', 1),\n", + " ('alienation discord', 1),\n", + " ('very cause', 1),\n", + " ('great interests', 1),\n", + " ('unioncordial confiding', 1),\n", + " ('confiding fraternal', 1),\n", + " ('fraternal unionis', 1),\n", + " ('most important', 1),\n", + " ('important since', 1),\n", + " ('only true', 1),\n", + " ('sure guaranty', 1),\n", + " ('embarrassed state', 1),\n", + " ('states may', 1),\n", + " ('may meet', 1),\n", + " ('financial concerns', 1),\n", + " ('however deeply', 1),\n", + " ('may regret', 1),\n", + " ('regret anything', 1),\n", + " ('anything imprudent', 1),\n", + " ('become us', 1),\n", + " ('states governments', 1),\n", + " ('governments nor', 1),\n", + " ('making proper', 1),\n", + " ('proper efforts', 1),\n", + " ('own relief', 1),\n", + " ('constitutional authority', 1),\n", + " ('best means', 1),\n", + " ('necessary sacrifices', 1),\n", + " ('necessary burdens', 1),\n", + " ('several states', 1),\n", + " ('states form', 1),\n", + " ('country are', 1),\n", + " ('are abundant', 1),\n", + " ('wise legislation', 1),\n", + " ('prudent administration', 1),\n", + " ('respective governments', 1),\n", + " ('governments each', 1),\n", + " ('each acting', 1),\n", + " ('acting within', 1),\n", + " ('own sphere', 1),\n", + " ('restore former', 1),\n", + " ...]" + ] + }, + "execution_count": 30, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "COMMON_WORDS = ['the', 'be', 'and', 'of', 'a', 'in', 'to', 'have', 'it', 'i', 'that', 'for', 'you', 'he', 'with', 'on', 'do', 'say', 'this', 'they', 'is', 'an', 'at', 'but', 'we', 'his', 'from', 'that', 'not', 'by', 'she', 'or', 'as', 'what', 'go', 'their', 'can', 'who', 'get', 'if', 'would', 'her', 'all', 'my', 'make', 'about', 'know', 'will', 'as', 'up', 'one', 'time', 'has', 'been', 'there', 'year', 'so', 'think', 'when', 'which', 'them', 'some', 'me', 'people', 'take', 'out', 'into', 'just', 'see', 'him', 'your', 'come', 'could', 'now', 'than', 'like', 'other', 'how', 'then', 'its', 'our', 'two', 'more', 'these', 'want', 'way', 'look', 'first', 'also', 'new', 'because', 'day', 'more', 'use', 'no', 'man', 'find', 'here', 'thing', 'give', 'many', 'well']\n", + "\n", + "def isCommon(ngram):\n", + " return any([w in COMMON_WORDS for w in ngram.split(' ')])\n", + "\n", + "def filterCommon(counts):\n", + " return Counter({key: val for key, val in counts.items() if not isCommon(key)})\n", + "\n", + "filterCommon(counts).most_common()\n" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "the constitution of the united states is the instrument containing this grant of power to the several departments composing the government\n", + "\n", + "such a one was afforded by the executive department constituted by the constitution\n", + "\n", + "the general government has seized upon none of the reserved rights of the states\n", + "\n", + "called from a retirement which i had supposed was to continue for the residue of my life to fill the chief executive office of this great and free nation, i appear before you, fellow-citizens, to take the oaths which the constitution prescribes as a necessary qualification for the performance of its duties; and in obedience to a custom coeval with our government and what i believe to be your expectations i proceed to present to you a summary of the principles which will govern me in the discharge of the duties which i shall be called upon to perform.\n", + "\n", + "it was the remark of a roman consul in an early period of that celebrated republic that a most striking contrast was observable in the conduct of candidates for offices of power and trust before and after obtaining them, they seldom carrying out in the latter case the pledges and promises made in the former\n", + "\n", + "however much the world may have improved in many respects in the lapse of upward of two thousand years since the remark was made by the virtuous and indignant roman, i fear that a strict examination of the annals of some of the modern elective governments would develop similar instances of violated confidence.\n", + "\n", + "although the fiat of the people has gone forth proclaiming me the chief magistrate of this glorious union, nothing upon their part remaining to be done, it may be thought that a motive may exist to keep up the delusion under which they may be supposed to have acted in relation to my principles and opinions; and perhaps there may be some in this assembly who have come here either prepared to condemn those i shall now deliver, or, approving them, to doubt the sincerity with which they are now uttered\n", + "\n" + ] + } + ], + "source": [ + "def getFirstSentenceContaining(ngram, content):\n", + " #print(ngram)\n", + " sentences = content.lower().split(\". \")\n", + " for sentence in sentences: \n", + " if ngram in sentence:\n", + " return sentence+'\\n'\n", + " return \"\"\n", + "\n", + "content = str(urlopen('http://pythonscraping.com/files/inaugurationSpeech.txt').read(), 'utf-8')\n", + "\n", + "\n", + "print(getFirstSentenceContaining('united states', content))\n", + "print(getFirstSentenceContaining('executive department', content))\n", + "print(getFirstSentenceContaining('general government', content))\n", + "print(getFirstSentenceContaining('called upon', content))\n", + "print(getFirstSentenceContaining('chief magistrate', content))" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "I conceive , for a privilege which has never their own discretion and of a misconstruction of the care of its departments composing it immediately checked . The influence it would usurp the States may receive . I am not only to encourage them would be used only result to be effected public revenues , and , and prejudices , living with his considering such nation , of men are as well understand the operations of the Executive . He claims them , possess a thought could then , however , supported by his power to the instrument could have placed\n" + ] + } + ], + "source": [ + "from urllib.request import urlopen\n", + "from random import randint\n", + "from collections import defaultdict\n", + "\n", + "\n", + "def retrieveRandomWord(wordList):\n", + " randIndex = randint(1, sum(wordList.values()))\n", + " for word, value in wordList.items():\n", + " randIndex -= value\n", + " if randIndex <= 0:\n", + " return word\n", + "\n", + "def cleanAndSplitText(text):\n", + " # Remove newlines and quotes\n", + " text = text.replace('\\n', ' ').replace('\"', '');\n", + "\n", + " # Make sure punctuation marks are treated as their own \"words,\"\n", + " # so that they will be included in the Markov chain\n", + " punctuation = [',','.',';',':']\n", + " for symbol in punctuation:\n", + " text = text.replace(symbol, f' {symbol} ');\n", + " # Filter out empty words\n", + " return [word for word in text.split(' ') if word != '']\n", + " \n", + "def buildWordDict(text):\n", + " words = cleanAndSplitText(text)\n", + " wordDict = defaultdict(dict)\n", + " for i in range(1, len(words)):\n", + " wordDict[words[i-1]][words[i]] = wordDict[words[i-1]].get(words[i], 0) + 1\n", + " return wordDict\n", + "\n", + "text = str(urlopen('http://pythonscraping.com/files/inaugurationSpeech.txt')\n", + " .read(), 'utf-8')\n", + "wordDict = buildWordDict(text)\n", + "\n", + "#Generate a Markov chain of length 100\n", + "length = 100\n", + "chain = ['I']\n", + "for i in range(0, length):\n", + " newWord = retrieveRandomWord(wordDict[chain[-1]])\n", + " chain.append(newWord)\n", + "\n", + "print(' '.join(chain))" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "/wiki/Kevin_Bacon\n", + "/wiki/Primetime_Emmy_Award_for_Outstanding_Lead_Actor_in_a_Miniseries_or_a_Movie\n", + "/wiki/Gary_Gilmore\n", + "/wiki/Eric_Idle\n" + ] + } + ], + "source": [ + "import pymysql\n", + "\n", + "conn = pymysql.connect(host='127.0.0.1', unix_socket='/tmp/mysql.sock', user='root', passwd='root', db='mysql', charset='utf8')\n", + "cur = conn.cursor()\n", + "cur.execute('USE wikipedia')\n", + "\n", + "def getUrl(pageId):\n", + " cur.execute('SELECT url FROM pages WHERE id = %s', (int(pageId)))\n", + " return cur.fetchone()[0]\n", + "\n", + "def getLinks(fromPageId):\n", + " cur.execute('SELECT toPageId FROM links WHERE fromPageId = %s', (int(fromPageId)))\n", + " if cur.rowcount == 0:\n", + " return []\n", + " return [x[0] for x in cur.fetchall()]\n", + "\n", + "def searchBreadth(targetPageId, paths=[[1]]):\n", + " newPaths = []\n", + " for path in paths:\n", + " links = getLinks(path[-1])\n", + " for link in links:\n", + " if link == targetPageId:\n", + " return path + [link]\n", + " else:\n", + " newPaths.append(path+[link])\n", + " return searchBreadth(targetPageId, newPaths)\n", + " \n", + "nodes = getLinks(1)\n", + "targetPageId = 28624\n", + "pageIds = searchBreadth(targetPageId)\n", + "for pageId in pageIds:\n", + " print(getUrl(pageId))" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Natural Language Toolkit" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "import nltk" + ] + }, + { + "cell_type": "code", + "execution_count": 28, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "[nltk_data] Downloading package punkt to /Users/RSpecht/nltk_data...\n", + "[nltk_data] Package punkt is already up-to-date!\n" + ] + }, + { + "data": { + "text/plain": [ + "True" + ] + }, + "execution_count": 28, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# If you run into an error with nltk not \"punkt,\" try this\n", + "nltk.download('punkt')" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [], + "source": [ + "from nltk import word_tokenize\n", + "from nltk import Text\n", + "\n", + "tokens = word_tokenize('Here is some not very interesting text')\n", + "text = Text(tokens)" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "[nltk_data] Downloading collection 'book'\n", + "[nltk_data] | \n", + "[nltk_data] | Downloading package abc to\n", + "[nltk_data] | /Users/RSpecht/nltk_data...\n", + "[nltk_data] | Unzipping corpora/abc.zip.\n", + "[nltk_data] | Downloading package brown to\n", + "[nltk_data] | /Users/RSpecht/nltk_data...\n", + "[nltk_data] | Unzipping corpora/brown.zip.\n", + "[nltk_data] | Downloading package chat80 to\n", + "[nltk_data] | /Users/RSpecht/nltk_data...\n", + "[nltk_data] | Unzipping corpora/chat80.zip.\n", + "[nltk_data] | Downloading package cmudict to\n", + "[nltk_data] | /Users/RSpecht/nltk_data...\n", + "[nltk_data] | Unzipping corpora/cmudict.zip.\n", + "[nltk_data] | Downloading package conll2000 to\n", + "[nltk_data] | /Users/RSpecht/nltk_data...\n", + "[nltk_data] | Unzipping corpora/conll2000.zip.\n", + "[nltk_data] | Downloading package conll2002 to\n", + "[nltk_data] | /Users/RSpecht/nltk_data...\n", + "[nltk_data] | Unzipping corpora/conll2002.zip.\n", + "[nltk_data] | Downloading package dependency_treebank to\n", + "[nltk_data] | /Users/RSpecht/nltk_data...\n", + "[nltk_data] | Unzipping corpora/dependency_treebank.zip.\n", + "[nltk_data] | Downloading package genesis to\n", + "[nltk_data] | /Users/RSpecht/nltk_data...\n", + "[nltk_data] | Unzipping corpora/genesis.zip.\n", + "[nltk_data] | Downloading package gutenberg to\n", + "[nltk_data] | /Users/RSpecht/nltk_data...\n", + "[nltk_data] | Unzipping corpora/gutenberg.zip.\n", + "[nltk_data] | Downloading package ieer to\n", + "[nltk_data] | /Users/RSpecht/nltk_data...\n", + "[nltk_data] | Unzipping corpora/ieer.zip.\n", + "[nltk_data] | Downloading package inaugural to\n", + "[nltk_data] | /Users/RSpecht/nltk_data...\n", + "[nltk_data] | Unzipping corpora/inaugural.zip.\n", + "[nltk_data] | Downloading package movie_reviews to\n", + "[nltk_data] | /Users/RSpecht/nltk_data...\n", + "[nltk_data] | Unzipping corpora/movie_reviews.zip.\n", + "[nltk_data] | Downloading package nps_chat to\n", + "[nltk_data] | /Users/RSpecht/nltk_data...\n", + "[nltk_data] | Unzipping corpora/nps_chat.zip.\n", + "[nltk_data] | Downloading package names to\n", + "[nltk_data] | /Users/RSpecht/nltk_data...\n", + "[nltk_data] | Unzipping corpora/names.zip.\n", + "[nltk_data] | Downloading package ppattach to\n", + "[nltk_data] | /Users/RSpecht/nltk_data...\n", + "[nltk_data] | Unzipping corpora/ppattach.zip.\n", + "[nltk_data] | Downloading package reuters to\n", + "[nltk_data] | /Users/RSpecht/nltk_data...\n", + "[nltk_data] | Downloading package senseval to\n", + "[nltk_data] | /Users/RSpecht/nltk_data...\n", + "[nltk_data] | Unzipping corpora/senseval.zip.\n", + "[nltk_data] | Downloading package state_union to\n", + "[nltk_data] | /Users/RSpecht/nltk_data...\n", + "[nltk_data] | Unzipping corpora/state_union.zip.\n", + "[nltk_data] | Downloading package stopwords to\n", + "[nltk_data] | /Users/RSpecht/nltk_data...\n", + "[nltk_data] | Unzipping corpora/stopwords.zip.\n", + "[nltk_data] | Downloading package swadesh to\n", + "[nltk_data] | /Users/RSpecht/nltk_data...\n", + "[nltk_data] | Unzipping corpora/swadesh.zip.\n", + "[nltk_data] | Downloading package timit to\n", + "[nltk_data] | /Users/RSpecht/nltk_data...\n", + "[nltk_data] | Unzipping corpora/timit.zip.\n", + "[nltk_data] | Downloading package treebank to\n", + "[nltk_data] | /Users/RSpecht/nltk_data...\n", + "[nltk_data] | Unzipping corpora/treebank.zip.\n", + "[nltk_data] | Downloading package toolbox to\n", + "[nltk_data] | /Users/RSpecht/nltk_data...\n", + "[nltk_data] | Unzipping corpora/toolbox.zip.\n", + "[nltk_data] | Downloading package udhr to\n", + "[nltk_data] | /Users/RSpecht/nltk_data...\n", + "[nltk_data] | Unzipping corpora/udhr.zip.\n", + "[nltk_data] | Downloading package udhr2 to\n", + "[nltk_data] | /Users/RSpecht/nltk_data...\n", + "[nltk_data] | Unzipping corpora/udhr2.zip.\n", + "[nltk_data] | Downloading package unicode_samples to\n", + "[nltk_data] | /Users/RSpecht/nltk_data...\n", + "[nltk_data] | Unzipping corpora/unicode_samples.zip.\n", + "[nltk_data] | Downloading package webtext to\n", + "[nltk_data] | /Users/RSpecht/nltk_data...\n", + "[nltk_data] | Unzipping corpora/webtext.zip.\n", + "[nltk_data] | Downloading package wordnet to\n", + "[nltk_data] | /Users/RSpecht/nltk_data...\n", + "[nltk_data] | Downloading package wordnet_ic to\n", + "[nltk_data] | /Users/RSpecht/nltk_data...\n", + "[nltk_data] | Unzipping corpora/wordnet_ic.zip.\n", + "[nltk_data] | Downloading package words to\n", + "[nltk_data] | /Users/RSpecht/nltk_data...\n", + "[nltk_data] | Unzipping corpora/words.zip.\n", + "[nltk_data] | Downloading package maxent_treebank_pos_tagger to\n", + "[nltk_data] | /Users/RSpecht/nltk_data...\n", + "[nltk_data] | Unzipping taggers/maxent_treebank_pos_tagger.zip.\n", + "[nltk_data] | Downloading package maxent_ne_chunker to\n", + "[nltk_data] | /Users/RSpecht/nltk_data...\n", + "[nltk_data] | Unzipping chunkers/maxent_ne_chunker.zip.\n", + "[nltk_data] | Downloading package universal_tagset to\n", + "[nltk_data] | /Users/RSpecht/nltk_data...\n", + "[nltk_data] | Unzipping taggers/universal_tagset.zip.\n", + "[nltk_data] | Downloading package punkt to\n", + "[nltk_data] | /Users/RSpecht/nltk_data...\n", + "[nltk_data] | Package punkt is already up-to-date!\n", + "[nltk_data] | Downloading package book_grammars to\n", + "[nltk_data] | /Users/RSpecht/nltk_data...\n", + "[nltk_data] | Unzipping grammars/book_grammars.zip.\n", + "[nltk_data] | Downloading package city_database to\n", + "[nltk_data] | /Users/RSpecht/nltk_data...\n", + "[nltk_data] | Unzipping corpora/city_database.zip.\n", + "[nltk_data] | Downloading package tagsets to\n", + "[nltk_data] | /Users/RSpecht/nltk_data...\n", + "[nltk_data] | Unzipping help/tagsets.zip.\n", + "[nltk_data] | Downloading package panlex_swadesh to\n", + "[nltk_data] | /Users/RSpecht/nltk_data...\n", + "[nltk_data] | Downloading package averaged_perceptron_tagger to\n", + "[nltk_data] | /Users/RSpecht/nltk_data...\n", + "[nltk_data] | Unzipping taggers/averaged_perceptron_tagger.zip.\n", + "[nltk_data] | \n", + "[nltk_data] Done downloading collection book\n" + ] + }, + { + "data": { + "text/plain": [ + "True" + ] + }, + "execution_count": 11, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "nltk.download('book')" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "*** Introductory Examples for the NLTK Book ***\n", + "Loading text1, ..., text9 and sent1, ..., sent9\n", + "Type the name of the text or sentence to view it.\n", + "Type: 'texts()' or 'sents()' to list the materials.\n", + "text1: Moby Dick by Herman Melville 1851\n", + "text2: Sense and Sensibility by Jane Austen 1811\n", + "text3: The Book of Genesis\n", + "text4: Inaugural Address Corpus\n", + "text5: Chat Corpus\n", + "text6: Monty Python and the Holy Grail\n", + "text7: Wall Street Journal\n", + "text8: Personals Corpus\n", + "text9: The Man Who Was Thursday by G . K . Chesterton 1908\n" + ] + } + ], + "source": [ + "from nltk.book import *" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "7.833333333333333" + ] + }, + "execution_count": 14, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "len(text6)/len(set(text6))" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[(':', 1197),\n", + " ('.', 816),\n", + " ('!', 801),\n", + " (',', 731),\n", + " (\"'\", 421),\n", + " ('[', 319),\n", + " (']', 312),\n", + " ('the', 299),\n", + " ('I', 255),\n", + " ('ARTHUR', 225)]" + ] + }, + "execution_count": 17, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "from nltk import FreqDist\n", + "fdist = FreqDist(text6)\n", + "fdist.most_common(10)\n" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "18" + ] + }, + "execution_count": 18, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "from nltk import bigrams\n", + "\n", + "bigrams = bigrams(text6)\n", + "bigramsDist = FreqDist(bigrams)\n", + "bigramsDist[('Sir', 'Robin')]" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "1" + ] + }, + "execution_count": 19, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "from nltk import ngrams\n", + "\n", + "fourgrams = ngrams(text6, 4)\n", + "fourgramsDist = FreqDist(fourgrams)\n", + "fourgramsDist[('father', 'smelt', 'of', 'elderberries')]" + ] + }, + { + "cell_type": "code", + "execution_count": 42, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[('coconut', 'and', 'you', \"'\"),\n", + " ('coconut', \"'\", 's', 'tropical'),\n", + " ('coconut', '?', 'ARTHUR', ':'),\n", + " ('coconut', '.', 'ARTHUR', ':'),\n", + " ('coconut', 'back', 'anyway', '...'),\n", + " ('coconut', 'on', 'a', 'line')]" + ] + }, + "execution_count": 42, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "from nltk.book import *\n", + "from nltk import ngrams\n", + "\n", + "fourgrams = ngrams(text6, 4)\n", + "\n", + "[f for f in fourgrams if f[0] == 'coconut']\n" + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[('Strange', 'JJ'),\n", + " ('women', 'NNS'),\n", + " ('lying', 'VBG'),\n", + " ('in', 'IN'),\n", + " ('ponds', 'NNS'),\n", + " ('distributing', 'VBG'),\n", + " ('swords', 'NNS'),\n", + " ('is', 'VBZ'),\n", + " ('no', 'DT'),\n", + " ('basis', 'NN'),\n", + " ('for', 'IN'),\n", + " ('a', 'DT'),\n", + " ('system', 'NN'),\n", + " ('of', 'IN'),\n", + " ('government', 'NN'),\n", + " ('.', '.')]" + ] + }, + "execution_count": 22, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "from nltk.book import *\n", + "from nltk import word_tokenize\n", + "from nltk import pos_tag\n", + "\n", + "text = word_tokenize('Strange women lying in ponds distributing swords is no basis for a system of government.')\n", + "\n", + "pos_tag(text)" + ] + }, + { + "cell_type": "code", + "execution_count": 32, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[('The', 'DT'),\n", + " ('dust', 'NN'),\n", + " ('was', 'VBD'),\n", + " ('thick', 'RB'),\n", + " ('so', 'RB'),\n", + " ('he', 'PRP'),\n", + " ('had', 'VBD'),\n", + " ('to', 'TO'),\n", + " ('dust', 'VB')]" + ] + }, + "execution_count": 32, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "text = word_tokenize('The dust was thick so he had to dust')\n", + "pos_tag(text)" + ] + }, + { + "cell_type": "code", + "execution_count": 31, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "[nltk_data] Downloading package punkt to /Users/RSpecht/nltk_data...\n", + "[nltk_data] Package punkt is already up-to-date!\n" + ] + }, + { + "data": { + "text/plain": [ + "True" + ] + }, + "execution_count": 31, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "nltk.download('punkt')" + ] + }, + { + "cell_type": "code", + "execution_count": 33, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[('Google', 'NNP'),\n", + " ('is', 'VBZ'),\n", + " ('one', 'CD'),\n", + " ('of', 'IN'),\n", + " ('the', 'DT'),\n", + " ('best', 'JJS'),\n", + " ('companies', 'NNS'),\n", + " ('in', 'IN'),\n", + " ('the', 'DT'),\n", + " ('world', 'NN'),\n", + " ('.', '.')]" + ] + }, + "execution_count": 33, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "sentence = 'Google is one of the best companies in the world.'\n", + "tokenized = word_tokenize(sentence)\n", + "pos_tag(tokenized)" + ] + }, + { + "cell_type": "code", + "execution_count": 39, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Google is one of the best companies in the world.\n" + ] + } + ], + "source": [ + "from nltk import word_tokenize, sent_tokenize, pos_tag\n", + "sentences = [\n", + " 'Google is one of the best companies in the world.',\n", + " ' I constantly google myself to see what I\\'m up to.'\n", + "]\n", + "nouns = ['NN', 'NNS', 'NNP', 'NNPS']\n", + "\n", + "for sentence in sentences:\n", + " for word, tag in pos_tag(word_tokenize(sentence)):\n", + " if word.lower() == 'google' and tag in nouns:\n", + " print(sentence)\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.10.13" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/Chapter13-ImageProcessing.ipynb b/Chapter13-ImageProcessing.ipynb deleted file mode 100644 index c8c424f..0000000 --- a/Chapter13-ImageProcessing.ipynb +++ /dev/null @@ -1,502 +0,0 @@ -{ - "cells": [ - { - "cell_type": "code", - "execution_count": 1, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "{'level': [1, 2, 3, 4, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 4, 5, 5, 5, 5, 5, 5], 'page_num': [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], 'block_num': [0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], 'par_num': [0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], 'line_num': [0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2], 'word_num': [0, 0, 0, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 0, 1, 2, 3, 4, 5, 6], 'left': [0, 23, 23, 23, 23, 76, 99, 164, 215, 295, 317, 378, 425, 467, 500, 555, 23, 23, 140, 198, 239, 304, 407], 'top': [0, 26, 26, 26, 26, 26, 30, 26, 26, 26, 26, 26, 26, 26, 26, 26, 54, 55, 55, 59, 59, 55, 54], 'width': [600, 555, 555, 555, 44, 15, 57, 42, 70, 15, 52, 40, 32, 24, 45, 23, 513, 107, 49, 32, 57, 92, 129], 'height': [103, 51, 51, 22, 17, 17, 13, 21, 17, 17, 21, 17, 17, 17, 17, 22, 23, 17, 17, 13, 13, 22, 23], 'conf': [-1, -1, -1, -1, 86, 86, 86, 73, 82, 95, 73, 80, 95, 85, 87, 85, -1, 82, 91, 86, 86, 86, 65], 'text': ['', '', '', '', 'This', 'is', 'some', 'text,', 'written', 'in', 'Arial,', 'that', 'will', 'be', 'read', 'by', '', 'Tesseract.', 'Here', 'are', 'some', 'symbols:', '!@#$%\"&‘()']}\n", - "b'This is some text, written in Arial, that will be read by\\nTesseract. Here are some symbols: !@#$%\"&\\xe2\\x80\\x98()\\n\\n'\n" - ] - } - ], - "source": [ - "from PIL import Image\n", - "import pytesseract\n", - "from pytesseract import Output\n", - "\n", - "print(pytesseract.image_to_data(Image.open('files/'\n", - " 'textOriginal.png'),\n", - " output_type=Output.DICT))\n", - "print(pytesseract.image_to_string(Image.open('files/textOriginal.png'), output_type=Output.BYTES))\n" - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2.2803508502\n", - "100.0\n" - ] - } - ], - "source": [ - "import numpy as np\n", - "\n", - "numbers = [100, 102, 98, 97, 103]\n", - "print(np.std(numbers))\n", - "print(np.mean(numbers))" - ] - }, - { - "cell_type": "code", - "execution_count": 16, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "ThIS IS some (ext written In Anal, that will be read by\n", - "Tesseract Here are some symbols: l@#$%\"&'()\n" - ] - } - ], - "source": [ - "from PIL import Image\n", - "import pytesseract\n", - "\n", - "def cleanFile(filePath, newFilePath):\n", - " image = Image.open(filePath)\n", - "\n", - " #Set a threshold value for the image, and save\n", - " image = image.point(lambda x: 0 if x<143 else 255)\n", - " image.save(newFilePath)\n", - " return image\n", - "\n", - "image = cleanFile('files/textBad.png', 'files/textCleaned.png')\n", - "\n", - "#call tesseract to do OCR on the newly created image\n", - "print(pytesseract.image_to_string(image))" - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "This is some text, written in Arial, that will be read by\n", - "Tesseract. Here are some symbols: !@#$%\"&‘()\n", - "\n", - "\n" - ] - } - ], - "source": [ - "from PIL import Image\n", - "import subprocess\n", - "\n", - "def cleanFile(filePath, newFilePath):\n", - " image = Image.open(filePath)\n", - "\n", - " #Set a threshold value for the image, and save\n", - " image = image.point(lambda x: 0 if x<135 else 255)\n", - " image.save(newFilePath)\n", - "\n", - " #call tesseract to do OCR on the newly created image\n", - " subprocess.call(['tesseract', newFilePath, 'output'])\n", - " \n", - " #Open and read the resulting data file\n", - " outputFile = open('output.txt', 'r')\n", - " print(outputFile.read())\n", - " outputFile.close()\n", - "\n", - "cleanFile('files/textOriginal.png', 'files/text_2.png')" - ] - }, - { - "cell_type": "code", - "execution_count": 26, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "threshold: 80, confidence: 61.8333333333 numChars 18\n", - "threshold: 85, confidence: 64.9130434783 numChars 23\n", - "threshold: 90, confidence: 62.2564102564 numChars 39\n", - "threshold: 95, confidence: 64.5135135135 numChars 37\n", - "threshold: 100, confidence: 60.7878787879 numChars 66\n", - "threshold: 105, confidence: 61.9078947368 numChars 76\n", - "threshold: 110, confidence: 64.6329113924 numChars 79\n", - "threshold: 115, confidence: 69.7397260274 numChars 73\n", - "threshold: 120, confidence: 72.9078947368 numChars 76\n", - "threshold: 125, confidence: 73.582278481 numChars 79\n", - "threshold: 130, confidence: 75.6708860759 numChars 79\n", - "threshold: 135, confidence: 76.8292682927 numChars 82\n", - "threshold: 140, confidence: 72.1686746988 numChars 83\n", - "threshold: 145, confidence: 75.5662650602 numChars 83\n", - "threshold: 150, confidence: 77.5443037975 numChars 79\n", - "threshold: 155, confidence: 79.1066666667 numChars 75\n", - "threshold: 160, confidence: 78.4666666667 numChars 75\n", - "threshold: 165, confidence: 80.1428571429 numChars 70\n", - "threshold: 170, confidence: 78.4285714286 numChars 70\n", - "threshold: 175, confidence: 76.3731343284 numChars 67\n", - "threshold: 180, confidence: 76.7575757576 numChars 66\n", - "threshold: 185, confidence: 79.4920634921 numChars 63\n", - "threshold: 190, confidence: 76.0793650794 numChars 63\n", - "threshold: 195, confidence: 70.6153846154 numChars 65\n" - ] - } - ], - "source": [ - "import pytesseract\n", - "from pytesseract import Output\n", - "from PIL import Image\n", - "import numpy as np\n", - "\n", - "def cleanFile(filePath, threshold):\n", - " image = Image.open(filePath)\n", - " #Set a threshold value for the image, and save\n", - " image = image.point(lambda x: 0 if x -1:\n", - " confidences.append(data['conf'][i])\n", - " numChars.append(len(text[i]))\n", - " \n", - " return np.average(confidences, weights=numChars), sum(numChars)\n", - " \n", - "filePath = 'files/textBad.png'\n", - "\n", - "start = 80\n", - "step = 5\n", - "end = 200\n", - "\n", - "for threshold in range(start, end, step):\n", - " image = cleanFile(filePath, threshold)\n", - " scores = getConfidence(image)\n", - " print('threshold: {}, confidence: {}, numChars '.format(str(threshold), str(scores[0], str(scores[1]))))\n" - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Found image: https://d1b14unh5d6w7g.cloudfront.net/1427027277.01.S003.LXXXXXXX.jpg?Expires=1517813908&Signature=Esov1bmGrixpRerzigTNris1X5NxXhYh0M0h2Vkzho4KQmOMUetNtvC4Q2NcPHEJarhgoTEGgQk33rK/NlL6g7bGd7kEuqDtTVeDnfVFv6N45Fh5zjinOfWRfbaWlbKi0y51WDRPROG/ITUSztyovyxhtTtiAiviUocae/fO4Ic=&Key-Pair-Id=APKAIUO27P366FGALUMQ\n", - "rammed Mam 3‘\n", - "\n", - "Copyright © 2007\n", - "\n", - "The text in this book has been formatted\n", - "and typeset to make reading easier and\n", - "more enjoyable. Spelling and punctuation\n", - "have been modernized and standardized,\n", - "and hyphens have been avoided when\n", - "possible. Obvious typographical errors\n", - "have been corrected. In addition, the text\n", - "has been formatted to the specifications\n", - "indicated on the titIe page. The original\n", - "text is out of copyright. The edited text in\n", - "this edition and the formatting are the\n", - "copyright of Objective Systems Pty Ltd\n", - "ACN 085119 953.\n", - "» 1m\n", - "\n", - "LaDY'M‘Hed mew\n", - "Found image: https://d1b14unh5d6w7g.cloudfront.net/1427027277.01.S006.LXXXXXXX.jpg?Expires=1517813908&Signature=hHkVlIbhqEXCF0eEwjT+XFQHLowD/B0emBi4Xe7ThHptbtNnPqZqeM1KztJlHBD7Xf1V16GWe4APyf9yYWHSS6QQ3isvEakHB5Me/NBS8fcXj718gDbFEl4v9VgoLpxjsRy8g3c/Xay87LlMhYlgqK634w4cG5hrd9Gcbi1lDuE=&Key-Pair-Id=APKAIUO27P366FGALUMQ\n", - "CuDYnlNed Manna:\n", - "\n", - "TABLE OF CONTENTS\n", - "\n", - "Chapter} 1\n", - "Chapter 11 17\n", - "Chapter 111 31\n", - "Chapter IV 43\n", - "Chapter v 55\n", - "Chapter VI 53\n", - "Chapter V11 59\n", - "Chapter vm 77\n", - "chapter IX 91\n", - "Chapter X 97\n", - "Chapter X] 101\n", - "Chapter xu 107\n", - "\n", - "Canyrmhted mum\n", - "Found image: https://d1b14unh5d6w7g.cloudfront.net/1427027277.01.S003.LXXXXXXX.jpg?Expires=1517813908&Signature=Esov1bmGrixpRerzigTNris1X5NxXhYh0M0h2Vkzho4KQmOMUetNtvC4Q2NcPHEJarhgoTEGgQk33rK/NlL6g7bGd7kEuqDtTVeDnfVFv6N45Fh5zjinOfWRfbaWlbKi0y51WDRPROG/ITUSztyovyxhtTtiAiviUocae/fO4Ic=&Key-Pair-Id=APKAIUO27P366FGALUMQ\n", - "Found image: https://d1b14unh5d6w7g.cloudfront.net/1427027277.01.S006.LXXXXXXX.jpg?Expires=1517813908&Signature=hHkVlIbhqEXCF0eEwjT+XFQHLowD/B0emBi4Xe7ThHptbtNnPqZqeM1KztJlHBD7Xf1V16GWe4APyf9yYWHSS6QQ3isvEakHB5Me/NBS8fcXj718gDbFEl4v9VgoLpxjsRy8g3c/Xay87LlMhYlgqK634w4cG5hrd9Gcbi1lDuE=&Key-Pair-Id=APKAIUO27P366FGALUMQ\n", - "Found image: https://d1b14unh5d6w7g.cloudfront.net/1427027277.01.S007.LXXXXXXX.jpg?Expires=1517813916&Signature=cC2WHvp6Zb3YMWwf0XmPG2xhhna9IDpIWTZog3643bMtqb5krx+PPwGBIS5Z2+VD/0BoxQYW7TuUrQ2QA1ouuzFHBrMMl13iFKOPdeOcNuTFvqsNx2zZGrUXLvmrafaiEHiF097ruUQpJT2dvhQk3kAPuYWkPxhNKLRyuFjJ8H8=&Key-Pair-Id=APKAIUO27P366FGALUMQ\n", - "Conyflihud Mmml\n", - "\n", - "Copyflghud anhl\n", - "Found image: https://d1b14unh5d6w7g.cloudfront.net/1427027277.01.S008.LXXXXXXX.jpg?Expires=1517813908&Signature=HuGS9+TRIYXlx5jvFLtR/LGK1ThQSTiurvNJjd2sfHMPRdkhCb22LJM+baLu5nYZtDQguGgY9kdgAROBKYs+tqas89iVjs1bVNG6m4kMctJHokK5yfTVe6szwhf11+yY7JnhFn8qcOMmL7IbyBvV3s/gQIRxWb+j4lILGIoBj/M=&Key-Pair-Id=APKAIUO27P366FGALUMQ\n", - "canyngmed Malena»\n", - "\n", - "Chapter I\n", - "\n", - "During an Interval In the Melvmskl trial In the large\n", - "building of the Law Courts the members and public\n", - "prosecutor met in [van Egorowch Shebek‘s private\n", - "room, where the conversation turned on the celebrated\n", - "Krasovski case. Fedor Vasillevich warmly maintained\n", - "that it was not subject to their jurisdiction, Ivan\n", - "Egorovich maintained the contrary, while Peter\n", - "ivanowch, not havmg entered into the discussmn at\n", - "the start, took no part in it but looked through the\n", - "Gazette which had Just been handed in.\n", - "\n", - "“Gentlemen,” he said, “Ivan Ilych has died!\"\n", - "“You don't say 50!”\n", - "\n", - "“Here, read it yourself,\" repiied Peter Ivanovich,\n", - "handing Fedor VaSIllevich the paper still damp from\n", - "the press, Surrounded by a black border were the\n", - "words: “Praskovya Fedorovna Golovina, with profound\n", - "sorrow, informs relatives and friends of the demise\n", - "of her beloved husband Ivan Ilych Goiovin, Member\n", - "of the Court of Justice, which occurred on February\n", - "the 4th of this year 1882. The funeral will take place\n", - "on Friday at one o'clock in the afternoon.“\n", - "\n", - "Ivan Iiych had been a colleague of the gentlemen\n", - "present and was liked by them ali. He had been ill for\n", - "\n", - "annnhted Malenai\n", - "Found image: https://d1b14unh5d6w7g.cloudfront.net/1427027277.01.S006.LXXXXXXX.jpg?Expires=1517813908&Signature=hHkVlIbhqEXCF0eEwjT+XFQHLowD/B0emBi4Xe7ThHptbtNnPqZqeM1KztJlHBD7Xf1V16GWe4APyf9yYWHSS6QQ3isvEakHB5Me/NBS8fcXj718gDbFEl4v9VgoLpxjsRy8g3c/Xay87LlMhYlgqK634w4cG5hrd9Gcbi1lDuE=&Key-Pair-Id=APKAIUO27P366FGALUMQ\n", - "Found image: https://d1b14unh5d6w7g.cloudfront.net/1427027277.01.S007.LXXXXXXX.jpg?Expires=1517813916&Signature=cC2WHvp6Zb3YMWwf0XmPG2xhhna9IDpIWTZog3643bMtqb5krx+PPwGBIS5Z2+VD/0BoxQYW7TuUrQ2QA1ouuzFHBrMMl13iFKOPdeOcNuTFvqsNx2zZGrUXLvmrafaiEHiF097ruUQpJT2dvhQk3kAPuYWkPxhNKLRyuFjJ8H8=&Key-Pair-Id=APKAIUO27P366FGALUMQ\n", - "Found image: https://d1b14unh5d6w7g.cloudfront.net/1427027277.01.S008.LXXXXXXX.jpg?Expires=1517813908&Signature=HuGS9+TRIYXlx5jvFLtR/LGK1ThQSTiurvNJjd2sfHMPRdkhCb22LJM+baLu5nYZtDQguGgY9kdgAROBKYs+tqas89iVjs1bVNG6m4kMctJHokK5yfTVe6szwhf11+yY7JnhFn8qcOMmL7IbyBvV3s/gQIRxWb+j4lILGIoBj/M=&Key-Pair-Id=APKAIUO27P366FGALUMQ\n", - "Found image: https://d1b14unh5d6w7g.cloudfront.net/1427027277.01.S009.LXXXXXXX.jpg?Expires=1517813916&Signature=Z9uc1Ch9ZhdwrfxfYHfEuPMRBNuTpNZeCC5M6PX5zf9IN75gBvITca59UVgXzCx0vgszKfu5Td7jp4lWobt6b66UBpmbOP/VPHfTtjlkxAHCF8RXA3ilXK+t8Ss8J8GD7fTD/KjdIin+APbwocIH19VlczSLvpL2ynq1Wd7mW/U=&Key-Pair-Id=APKAIUO27P366FGALUMQ\n", - "canyngmed Material\n", - "\n", - "some weeks with an illness said to be incurable.\n", - "His past had been kept open for him, but there\n", - "had been conjectures that in case of his death\n", - "Alexeev might receive his appointment, and that\n", - "either Vinnikov or Shtabel would succeed Alexeev.\n", - "So on receiving the news of Ivan llych's death the\n", - "first thought of each of the gentlemen in that prie\n", - "vate room was of the changes and promotions it\n", - "might occasion among themselves or theiracquaine\n", - "tances.\n", - "\n", - "“I shall be sure to get Shtabel's place or Vin‘\n", - "nikov's,\" thought FedorVasilievich. “I was promised\n", - "that long ago, and the promotion means an extra\n", - "eight hundred rubles a year for me besides the\n", - "allowance.”\n", - "\n", - "“Now I must apply for my brother-in-Iaw’s transfer\n", - "from Kaluga,\" thought Peter Ivanovich. “My Wife\n", - "will be very glad, and then she won't be able to\n", - "say that I never do anything for her relatiuns.”\n", - "“I thought he would never leave his bed again,\"\n", - "said Peter Ivanovich aloud. “It‘s very sad.”\n", - "\n", - "“But what really was the matter with him?\"\n", - "\n", - "“The doctors couldn't say - at least they could,\n", - "but each of them said something different. When\n", - "last I saw him I though he was getting better.\"\n", - "\n", - "CnDYnnhled Material\n", - "Found image: https://d1b14unh5d6w7g.cloudfront.net/1427027277.01.S007.LXXXXXXX.jpg?Expires=1517813916&Signature=cC2WHvp6Zb3YMWwf0XmPG2xhhna9IDpIWTZog3643bMtqb5krx+PPwGBIS5Z2+VD/0BoxQYW7TuUrQ2QA1ouuzFHBrMMl13iFKOPdeOcNuTFvqsNx2zZGrUXLvmrafaiEHiF097ruUQpJT2dvhQk3kAPuYWkPxhNKLRyuFjJ8H8=&Key-Pair-Id=APKAIUO27P366FGALUMQ\n", - "Found image: https://d1b14unh5d6w7g.cloudfront.net/1427027277.01.S008.LXXXXXXX.jpg?Expires=1517813908&Signature=HuGS9+TRIYXlx5jvFLtR/LGK1ThQSTiurvNJjd2sfHMPRdkhCb22LJM+baLu5nYZtDQguGgY9kdgAROBKYs+tqas89iVjs1bVNG6m4kMctJHokK5yfTVe6szwhf11+yY7JnhFn8qcOMmL7IbyBvV3s/gQIRxWb+j4lILGIoBj/M=&Key-Pair-Id=APKAIUO27P366FGALUMQ\n", - "Found image: https://d1b14unh5d6w7g.cloudfront.net/1427027277.01.S009.LXXXXXXX.jpg?Expires=1517813916&Signature=Z9uc1Ch9ZhdwrfxfYHfEuPMRBNuTpNZeCC5M6PX5zf9IN75gBvITca59UVgXzCx0vgszKfu5Td7jp4lWobt6b66UBpmbOP/VPHfTtjlkxAHCF8RXA3ilXK+t8Ss8J8GD7fTD/KjdIin+APbwocIH19VlczSLvpL2ynq1Wd7mW/U=&Key-Pair-Id=APKAIUO27P366FGALUMQ\n", - "Found image: https://d1b14unh5d6w7g.cloudfront.net/1427027277.01.S00A.LXXXXXXX.jpg?Expires=1517813916&Signature=X0hJbtaKDIHCfhjTcLIt80MY0p6DxRyq+vPbVRcvxuvu8pRrOZdysPayP0gZQlKmh1R+vPCs46euKSsN8dRmfBUSWZbox303sPZQH48shcFHPAgxhoG9Z+C47sCPx++fjA+dkBkBwKoYKAo2QnBEIzkyRZusli0wT7Iz3sedt0E=&Key-Pair-Id=APKAIUO27P366FGALUMQ\n", - "canymmeu Malena»\n", - "\n", - "3\n", - "\n", - "“And I haven't been to see him since the holidays.\n", - "I always meant to go.\"\n", - "\n", - "“Had he any property?”\n", - "\n", - "“I think his wife had a little — but something quiet\n", - "trifling.\"\n", - "\n", - "“We shall have to go to see her, but they live so\n", - "terribly far away.\"\n", - "\n", - "“Far away from you, you mean. Everything's far\n", - "away from your place.\"\n", - "\n", - "“You see, he never can forgive my living on the\n", - "other side of the river,\" said Peter Ivanovich,\n", - "smiling at Shebek. Then, still talking of the dis\n", - "tances between different parts of the city, they\n", - "returned to the Court.\n", - "\n", - "Besides considerations as to the possible transfers\n", - "and promotions likely to result from Ivan Ilych’s\n", - "death, the mere fact of the death of a near acquain-\n", - "tance aroused, as usual, in all who heard of it the\n", - "complacent feefing that, “it is he who is dead and\n", - "not 1.\"\n", - "\n", - "Each one thought or felt, “Well, he's dead but I’m\n", - "alive!” But the more intimate of Ivan Ilych's ac-\n", - "quaintances, his so-called friends, could not help\n", - "\n", - "annnmea Mum\n" - ] - }, - { - "ename": "KeyboardInterrupt", - "evalue": "", - "output_type": "error", - "traceback": [ - "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", - "\u001b[0;31mKeyboardInterrupt\u001b[0m Traceback (most recent call last)", - "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[1;32m 23\u001b[0m \u001b[0;31m# While the right arrow is available for clicking, turn through pages\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 24\u001b[0m \u001b[0mdriver\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mfind_element_by_id\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'sitbReaderRightPageTurner'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mclick\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 25\u001b[0;31m \u001b[0mtime\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msleep\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;36m2\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 26\u001b[0m \u001b[0;31m# Get any new pages that have loaded (multiple pages can load at once,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 27\u001b[0m \u001b[0;31m# but duplicates will not be added to a set)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;31mKeyboardInterrupt\u001b[0m: " - ] - } - ], - "source": [ - "import time\n", - "from urllib.request import urlretrieve\n", - "from PIL import Image\n", - "import pytesseract\n", - "from selenium import webdriver\n", - "from PIL import Image\n", - "\n", - "# Create new Selenium driver\n", - "driver = webdriver.Chrome(executable_path='drivers/chromedriver/chromedriver')\n", - "\n", - "driver.get(\n", - " 'https://www.amazon.com/Death-Ivan-Ilyich-Nikolayevich-Tolstoy/dp/1427027277')\n", - "time.sleep(2)\n", - "\n", - "# Click on the book preview button\n", - "driver.find_element_by_id('imgBlkFront').click()\n", - "imageList = []\n", - "\n", - "# Wait for the page to load\n", - "time.sleep(5)\n", - "\n", - "while 'pointer' in driver.find_element_by_id('sitbReaderRightPageTurner').get_attribute('style'):\n", - " # While the right arrow is available for clicking, turn through pages\n", - " driver.find_element_by_id('sitbReaderRightPageTurner').click()\n", - " time.sleep(2)\n", - " # Get any new pages that have loaded (multiple pages can load at once,\n", - " # but duplicates will not be added to a set)\n", - " pages = driver.find_elements_by_xpath(\n", - " '//div[@class=\\'pageImage\\']/div/img')\n", - " if not len(pages):\n", - " print('No pages found')\n", - " for page in pages:\n", - " image = page.get_attribute('src')\n", - " print('Found image: {}'.format(image))\n", - " if image not in imageList:\n", - " urlretrieve(image, 'page.jpg')\n", - " imageList.append(image)\n", - " print(pytesseract.image_to_string(Image.open('page.jpg')))\n", - "\n", - "driver.quit()" - ] - }, - { - "cell_type": "code", - "execution_count": 11, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Captcha solution attempt: \n", - "There was a problem reading the CAPTCHA correctly!\n" - ] - } - ], - "source": [ - "from urllib.request import urlretrieve\n", - "from urllib.request import urlopen\n", - "from bs4 import BeautifulSoup\n", - "import subprocess\n", - "import requests\n", - "from PIL import Image\n", - "from PIL import ImageOps\n", - "\n", - "def cleanImage(imagePath):\n", - " image = Image.open(imagePath)\n", - " image = image.point(lambda x: 0 if x<143 else 255)\n", - " borderImage = ImageOps.expand(image,border=20,fill='white')\n", - " borderImage.save(imagePath)\n", - "\n", - "html = urlopen('http://www.pythonscraping.com/humans-only')\n", - "bs = BeautifulSoup(html, 'html.parser')\n", - "#Gather prepopulated form values\n", - "imageLocation = bs.find('img', {'title': 'Image CAPTCHA'})['src']\n", - "formBuildId = bs.find('input', {'name':'form_build_id'})['value']\n", - "captchaSid = bs.find('input', {'name':'captcha_sid'})['value']\n", - "captchaToken = bs.find('input', {'name':'captcha_token'})['value']\n", - "\n", - "captchaUrl = 'http://pythonscraping.com'+imageLocation\n", - "urlretrieve(captchaUrl, 'captcha.jpg')\n", - "cleanImage('captcha.jpg')\n", - "p = subprocess.Popen(['tesseract', 'captcha.jpg', 'captcha'], stdout=\n", - " subprocess.PIPE,stderr=subprocess.PIPE)\n", - "p.wait()\n", - "f = open('captcha.txt', 'r')\n", - "\n", - "#Clean any whitespace characters\n", - "captchaResponse = f.read().replace(' ', '').replace('\\n', '')\n", - "print('Captcha solution attempt: '+captchaResponse)\n", - "\n", - "if len(captchaResponse) == 5:\n", - " params = {'captcha_token':captchaToken, 'captcha_sid':captchaSid, \n", - " 'form_id':'comment_node_page_form', 'form_build_id': formBuildId, \n", - " 'captcha_response':captchaResponse, 'name':'Ryan Mitchell', \n", - " 'subject': 'I come to seek the Grail', \n", - " 'comment_body[und][0][value]': \n", - " '...and I am definitely not a bot'}\n", - " r = requests.post('http://www.pythonscraping.com/comment/reply/10', \n", - " data=params)\n", - " responseObj = BeautifulSoup(r.text, 'html.parser')\n", - " if responseObj.find('div', {'class':'messages'}) is not None:\n", - " print(responseObj.find('div', {'class':'messages'}).get_text())\n", - "else:\n", - " print('There was a problem reading the CAPTCHA correctly!')" - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.6.1" - } - }, - "nbformat": 4, - "nbformat_minor": 2 -} diff --git a/Chapter13_CrawlingThroughFormsAndLogins.ipynb b/Chapter13_CrawlingThroughFormsAndLogins.ipynb new file mode 100644 index 0000000..c1179e5 --- /dev/null +++ b/Chapter13_CrawlingThroughFormsAndLogins.ipynb @@ -0,0 +1,192 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 79, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Hello there, Ryan Mitchell!\n" + ] + } + ], + "source": [ + "import requests\n", + "\n", + "params = {'firstname': 'Ryan', 'lastname': 'Mitchell'}\n", + "r = requests.post(\n", + " 'https://pythonscraping.com/pages/files/processing.php',\n", + " params)\n", + "print(r.text)" + ] + }, + { + "cell_type": "code", + "execution_count": 80, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "{\"status\":\"0\",\"errmsg\":\"You have already subscribed.\"}\n" + ] + } + ], + "source": [ + "import requests\n", + "params = {\n", + " 'firstname': 'Ryan',\n", + " 'lastname': 'Mitchell',\n", + " 'email': 'ryanemitchell@gmail.com',\n", + " 'action': 'eclg_add_newsletter'\n", + "}\n", + "r = requests.post('https://pythonscraping.com/wp-admin/admin-ajax.php',\n", + " params)\n", + "print(r.text)" + ] + }, + { + "cell_type": "code", + "execution_count": 83, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Sorry, there was an error uploading your file.\n" + ] + } + ], + "source": [ + "import requests\n", + "\n", + "files = {'uploadFile': open('logo.jpg', 'rb')}\n", + "r = requests.post('http://pythonscraping.com/pages/processing2.php', files=files)\n", + "print(r.text)" + ] + }, + { + "cell_type": "code", + "execution_count": 86, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "

Welcome to the Website!

\n", + "You have logged in successfully!
Check out your profile!\n", + "Cookie is set to:\n", + "{'loggedin': '1', 'username': 'Ryan'}\n", + "Going to profile page...\n", + "Hey Ryan! Looks like you're still logged into the site!\n" + ] + } + ], + "source": [ + "import requests\n", + "\n", + "params = {'username': 'Ryan', 'password': 'password'}\n", + "r = requests.post(\n", + " 'https://pythonscraping.com/pages/cookies/welcome.php',\n", + " params)\n", + "print(r.text)\n", + "\n", + "print('Cookie is set to:')\n", + "print(r.cookies.get_dict())\n", + "print('Going to profile page...')\n", + "r = requests.get('https://pythonscraping.com/pages/cookies/profile.php', \n", + " cookies=r.cookies)\n", + "print(r.text)" + ] + }, + { + "cell_type": "code", + "execution_count": 85, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Cookie is set to:\n", + "{'loggedin': '1', 'username': 'Ryan'}\n", + "Going to profile page...\n", + "Hey Ryan! Looks like you're still logged into the site!\n" + ] + } + ], + "source": [ + "import requests\n", + "\n", + "session = requests.Session()\n", + "\n", + "params = {'username': 'Ryan', 'password': 'password'}\n", + "s = session.post('https://pythonscraping.com/pages/cookies/welcome.php', params)\n", + "print('Cookie is set to:')\n", + "print(s.cookies.get_dict())\n", + "print('Going to profile page...')\n", + "s = session.get('https://pythonscraping.com/pages/cookies/profile.php')\n", + "print(s.text)" + ] + }, + { + "cell_type": "code", + "execution_count": 88, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "

Hello ryan.

You entered password as your password.

\n" + ] + } + ], + "source": [ + "import requests\n", + "from requests.auth import AuthBase\n", + "from requests.auth import HTTPBasicAuth\n", + "\n", + "auth = HTTPBasicAuth('ryan', 'password')\n", + "r = requests.post(\n", + " url='https://pythonscraping.com/pages/auth/login.php', auth=auth)\n", + "print(r.text)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.9.12" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/Chapter11-JavaScript.ipynb b/Chapter14_JavaScript.ipynb similarity index 62% rename from Chapter11-JavaScript.ipynb rename to Chapter14_JavaScript.ipynb index b7f1943..ebcde9f 100644 --- a/Chapter11-JavaScript.ipynb +++ b/Chapter14_JavaScript.ipynb @@ -2,7 +2,33 @@ "cells": [ { "cell_type": "code", - "execution_count": 1, + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from selenium import webdriver\n", + "from selenium.webdriver.chrome.service import Service\n", + "from webdriver_manager.chrome import ChromeDriverManager\n", + "\n", + "CHROMEDRIVER_PATH = ChromeDriverManager().install()\n", + "driver = webdriver.Chrome(service=Service(CHROMEDRIVER_PATH))\n", + "driver.get(\"http://www.python.org\")\n", + "time.sleep(2)\n", + "driver.close()" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [], + "source": [ + "CHROMEDRIVER_PATH = ChromeDriverManager().install()" + ] + }, + { + "cell_type": "code", + "execution_count": 16, "metadata": {}, "outputs": [ { @@ -16,23 +42,22 @@ ], "source": [ "from selenium import webdriver\n", + "from selenium.webdriver.common.by import By\n", "from selenium.webdriver.chrome.options import Options\n", "import time\n", "\n", "chrome_options = Options()\n", "chrome_options.add_argument(\"--headless\")\n", - "driver = webdriver.Chrome(\n", - " executable_path='drivers/chromedriver', \n", - " options=chrome_options)\n", + "driver = webdriver.Chrome(service=Service(CHROMEDRIVER_PATH), options=chrome_options)\n", "driver.get('http://pythonscraping.com/pages/javascript/ajaxDemo.html')\n", "time.sleep(3)\n", - "print(driver.find_element_by_id('content').text)\n", + "print(driver.find_element(By.CSS_SELECTOR, '#content').text)\n", "driver.close()" ] }, { "cell_type": "code", - "execution_count": 2, + "execution_count": 18, "metadata": {}, "outputs": [ { @@ -53,7 +78,7 @@ "chrome_options = Options()\n", "chrome_options.add_argument(\"--headless\")\n", "driver = webdriver.Chrome(\n", - " executable_path='drivers/chromedriver',\n", + " service=Service(CHROMEDRIVER_PATH),\n", " options=chrome_options)\n", "\n", "driver.get('http://pythonscraping.com/pages/javascript/ajaxDemo.html')\n", @@ -61,13 +86,13 @@ " element = WebDriverWait(driver, 10).until(\n", " EC.presence_of_element_located((By.ID, 'loadedButton')))\n", "finally:\n", - " print(driver.find_element_by_id('content').text)\n", + " print(driver.find_element(By.ID, 'content').text)\n", " driver.close()" ] }, { "cell_type": "code", - "execution_count": 3, + "execution_count": 35, "metadata": {}, "outputs": [ { @@ -75,7 +100,7 @@ "output_type": "stream", "text": [ "Timing out after 10 seconds and returning\n", - "\n", + "\n", "The Destination Page!\n", "\n", "\n", @@ -89,28 +114,23 @@ "source": [ "from selenium import webdriver\n", "from selenium.webdriver.chrome.options import Options\n", - "from selenium.webdriver.remote.webelement import WebElement\n", "from selenium.common.exceptions import StaleElementReferenceException\n", "import time\n", "\n", "def waitForLoad(driver):\n", - " elem = driver.find_element_by_tag_name(\"html\")\n", + " elem = driver.find_element(By.TAG_NAME, \"html\")\n", " count = 0\n", - " while True:\n", - " count += 1\n", - " if count > 20:\n", - " print(\"Timing out after 10 seconds and returning\")\n", - " return\n", - " time.sleep(.5)\n", + " for _ in range(0, 20):\n", " try:\n", - " elem == driver.find_element_by_tag_name(\"html\")\n", + " elem == driver.find_element(By.TAG_NAME, \"html\")\n", " except StaleElementReferenceException:\n", " return\n", + " time.sleep(0.5)\n", + " print(\"Timing out after 10 seconds and returning\")\n", + " \n", "chrome_options = Options()\n", "chrome_options.add_argument(\"--headless\")\n", - "driver = webdriver.Chrome(\n", - " executable_path='drivers/chromedriver',\n", - " options=chrome_options)\n", + "driver = webdriver.Chrome(service=Service(CHROMEDRIVER_PATH), options=chrome_options)\n", "driver.get(\"http://pythonscraping.com/pages/javascript/redirectDemo1.html\")\n", "waitForLoad(driver)\n", "print(driver.page_source)\n", @@ -156,12 +176,43 @@ "execution_count": null, "metadata": {}, "outputs": [], - "source": [] + "source": [ + "from webdriver_manager.firefox import GeckoDriverManager\n", + "print(GeckoDriverManager().install())" + ] + }, + { + "cell_type": "code", + "execution_count": 31, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "[WDM] - Downloading: 100%|███████████████████████████████████████████████████████████████████████████████████████████| 10.2M/10.2M [00:01<00:00, 7.44MB/s]\n" + ] + }, + { + "data": { + "text/plain": [ + "'/Users/RSpecht/.wdm/drivers/edgedriver/mac64/113.0.1774.57/msedgedriver'" + ] + }, + "execution_count": 31, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "from webdriver_manager.microsoft import EdgeChromiumDriverManager\n", + "print(EdgeChromiumDriverManager().install())" + ] } ], "metadata": { "kernelspec": { - "display_name": "Python 3", + "display_name": "Python 3 (ipykernel)", "language": "python", "name": "python3" }, @@ -175,7 +226,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.6.1" + "version": "3.9.12" } }, "nbformat": 4, diff --git a/Chapter15_API-Scraping.ipynb b/Chapter15_API-Scraping.ipynb new file mode 100644 index 0000000..1e9e947 --- /dev/null +++ b/Chapter15_API-Scraping.ipynb @@ -0,0 +1,385 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from urllib.request import urlopen\n", + "from bs4 import BeautifulSoup\n", + "import json\n", + "import datetime\n", + "import re\n", + "import random\n" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--------------------\n", + "history url is: http://en.wikipedia.org/w/index.php?title=Programming_paradigm&action=history\n", + "2405:201:2009:80b0:41bc:366f:a49c:52f2\n", + "115.186.189.53\n", + "103.252.145.68\n", + "2405:201:400b:7058:b128:89fd:5248:f249\n", + "172.115.220.47\n", + "2806:1016:d:54b6:8950:4501:c00b:507a\n", + "36.255.87.160\n", + "2603:6011:1100:a1d0:31bd:8a11:a0c8:e4c3\n", + "2806:108e:d:bd2c:a577:db4f:2867:2b5c\n", + "2409:4042:e8f:8d39:b50c:f4ca:91b8:eb9d\n", + "107.190.108.84\n", + "--------------------\n", + "history url is: http://en.wikipedia.org/w/index.php?title=Multi-paradigm_programming_language&action=history\n", + "98.197.198.46\n", + "75.139.254.117\n", + "--------------------\n", + "history url is: http://en.wikipedia.org/w/index.php?title=Object-oriented_programming&action=history\n", + "86.186.86.97\n", + "82.151.115.17\n", + "2a00:23c8:2c00:4d01:9d37:3187:6b3c:6d7b\n", + "2a01:cb1e:75:31ab:a2:ba91:d0e:6965\n", + "67.182.232.160\n", + "92.253.43.187\n", + "195.12.232.246\n", + "104.156.69.18\n", + "115.241.201.77\n", + "2405:9800:b923:2b6:b4b7:730b:405b:a1e0\n", + "130.208.188.159\n", + "2a00:23ee:1050:29af:6020:e55f:8546:e258\n", + "150.135.165.11\n", + "12.183.178.250\n", + "--------------------\n", + "history url is: http://en.wikipedia.org/w/index.php?title=Procedural_programming&action=history\n", + "112.134.214.53\n", + "2607:fea8:235e:b600:cad6:9572:d5a8:1639\n", + "174.90.223.214\n", + "2600:1000:b045:9be1:67c4:f788:c2fb:461d\n", + "83.173.200.121\n", + "216.225.124.244\n", + "2601:2c3:867f:e810:5b9b:58e7:b427:e352\n", + "162.208.181.210\n", + "117.220.135.30\n", + "2001:44c8:45d2:11cd:1:0:2e69:c996\n", + "2001:8f8:1e35:fa30:52b:190e:146a:4b48\n", + "112.79.118.122\n", + "2607:fea8:9560:8ae:e155:3e6f:7747:5544\n", + "192.208.125.161\n", + "50.201.78.245\n", + "151.255.244.223\n", + "--------------------\n", + "history url is: http://en.wikipedia.org/w/index.php?title=Imperative_programming&action=history\n", + "27.2.20.10\n", + "97.121.170.107\n", + "117.207.179.184\n", + "2600:8803:c40a:800:b47e:b314:65fe:8b6c\n", + "173.225.40.198\n", + "2a02:c7f:c28c:f400:e510:1e3e:d3d2:a21e\n", + "207.255.75.92\n", + "223.24.167.37\n", + "49.207.196.35\n", + "106.201.59.250\n", + "189.204.196.201\n", + "2a02:c7f:74c3:c300:5c5a:ce83:7325:4429\n", + "2603:6010:df00:21d5:8dbc:53ba:9aa1:6267\n", + "2405:204:a3a7:c3bd::f0b:a0ac\n", + "2001:4454:38f:fc00:c8f1:b67e:da95:ab6f\n", + "--------------------\n", + "history url is: http://en.wikipedia.org/w/index.php?title=Functional_programming&action=history\n", + "62.175.103.210\n", + "2607:fea8:235f:9730::1232\n", + "2600:6c4a:4d7f:e999:d21:9ad5:a5e4:e20d\n", + "105.12.5.186\n", + "134.204.220.36\n", + "2607:fea8:2363:8f00:a000:dce0:5c45:2642\n", + "2804:14c:1c2:821c:4970:1293:d1dc:3f00\n", + "23.121.65.56\n", + "104.152.255.71\n", + "109.125.120.234\n", + "91.243.4.220\n", + "--------------------\n", + "history url is: http://en.wikipedia.org/w/index.php?title=Structured_programming&action=history\n", + "83.223.241.43\n", + "2401:4900:c16:df76:13e:4e10:599a:642e\n", + "165.82.134.144\n", + "2409:4051:291:a148:159a:ee30:ad1b:2179\n", + "2600:8805:a981:4300:65d3:9258:af92:d91c\n", + "156.199.200.186\n", + "76.8.32.203\n", + "223.196.166.69\n", + "64.119.192.201\n", + "103.164.47.189\n", + "87.254.97.74\n", + "41.89.61.3\n", + "206.214.57.47\n", + "--------------------\n", + "history url is: http://en.wikipedia.org/w/index.php?title=Reflective_programming&action=history\n", + "174.88.46.109\n", + "2804:14d:72a3:c4:6d48:d3fb:77ea:5e3\n", + "2409:4064:4db3:5f54::13c8:b209\n", + "172.72.221.49\n", + "194.96.27.238\n", + "95.60.233.218\n", + "2601:444:8280:6880:b0c0:1c65:8627:243\n", + "2600:1700:87d0:5fd0:ac5c:5d73:f9a6:6fe2\n", + "94.21.10.204\n", + "2804:14d:3291:8807::2\n", + "--------------------\n", + "history url is: http://en.wikipedia.org/w/index.php?title=Software_design&action=history\n" + ] + }, + { + "ename": "KeyboardInterrupt", + "evalue": "", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mKeyboardInterrupt\u001b[0m Traceback (most recent call last)", + "Input \u001b[0;32mIn [3]\u001b[0m, in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[1;32m 29\u001b[0m \u001b[38;5;28;01mfor\u001b[39;00m link \u001b[38;5;129;01min\u001b[39;00m links:\n\u001b[1;32m 30\u001b[0m \u001b[38;5;28mprint\u001b[39m(\u001b[38;5;124m'\u001b[39m\u001b[38;5;124m-\u001b[39m\u001b[38;5;124m'\u001b[39m\u001b[38;5;241m*\u001b[39m\u001b[38;5;241m20\u001b[39m) \n\u001b[0;32m---> 31\u001b[0m historyIPs \u001b[38;5;241m=\u001b[39m \u001b[43mgetHistoryIPs\u001b[49m\u001b[43m(\u001b[49m\u001b[43mlink\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mattrs\u001b[49m\u001b[43m[\u001b[49m\u001b[38;5;124;43m'\u001b[39;49m\u001b[38;5;124;43mhref\u001b[39;49m\u001b[38;5;124;43m'\u001b[39;49m\u001b[43m]\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 32\u001b[0m \u001b[38;5;28;01mfor\u001b[39;00m historyIP \u001b[38;5;129;01min\u001b[39;00m historyIPs:\n\u001b[1;32m 33\u001b[0m \u001b[38;5;28mprint\u001b[39m(historyIP)\n", + "Input \u001b[0;32mIn [3]\u001b[0m, in \u001b[0;36mgetHistoryIPs\u001b[0;34m(pageUrl)\u001b[0m\n\u001b[1;32m 18\u001b[0m historyUrl \u001b[38;5;241m=\u001b[39m \u001b[38;5;124mf\u001b[39m\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mhttp://en.wikipedia.org/w/index.php?title=\u001b[39m\u001b[38;5;132;01m{\u001b[39;00mpageUrl\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m&action=history\u001b[39m\u001b[38;5;124m'\u001b[39m\n\u001b[1;32m 19\u001b[0m \u001b[38;5;28mprint\u001b[39m(\u001b[38;5;124mf\u001b[39m\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mhistory url is: \u001b[39m\u001b[38;5;132;01m{\u001b[39;00mhistoryUrl\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m'\u001b[39m)\n\u001b[0;32m---> 20\u001b[0m bs \u001b[38;5;241m=\u001b[39m BeautifulSoup(\u001b[43murlopen\u001b[49m\u001b[43m(\u001b[49m\u001b[43mhistoryUrl\u001b[49m\u001b[43m)\u001b[49m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mhtml.parser\u001b[39m\u001b[38;5;124m'\u001b[39m)\n\u001b[1;32m 21\u001b[0m \u001b[38;5;66;03m#finds only the links with class \"mw-anonuserlink\" which has IP addresses \u001b[39;00m\n\u001b[1;32m 22\u001b[0m \u001b[38;5;66;03m#instead of usernames\u001b[39;00m\n\u001b[1;32m 23\u001b[0m ipAddresses \u001b[38;5;241m=\u001b[39m bs\u001b[38;5;241m.\u001b[39mfindAll(\u001b[38;5;124m'\u001b[39m\u001b[38;5;124ma\u001b[39m\u001b[38;5;124m'\u001b[39m, {\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mclass\u001b[39m\u001b[38;5;124m'\u001b[39m:\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mmw-anonuserlink\u001b[39m\u001b[38;5;124m'\u001b[39m})\n", + "File \u001b[0;32m~/opt/anaconda3/lib/python3.9/urllib/request.py:214\u001b[0m, in \u001b[0;36murlopen\u001b[0;34m(url, data, timeout, cafile, capath, cadefault, context)\u001b[0m\n\u001b[1;32m 212\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m:\n\u001b[1;32m 213\u001b[0m opener \u001b[38;5;241m=\u001b[39m _opener\n\u001b[0;32m--> 214\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[43mopener\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mopen\u001b[49m\u001b[43m(\u001b[49m\u001b[43murl\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mdata\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mtimeout\u001b[49m\u001b[43m)\u001b[49m\n", + "File \u001b[0;32m~/opt/anaconda3/lib/python3.9/urllib/request.py:523\u001b[0m, in \u001b[0;36mOpenerDirector.open\u001b[0;34m(self, fullurl, data, timeout)\u001b[0m\n\u001b[1;32m 521\u001b[0m \u001b[38;5;28;01mfor\u001b[39;00m processor \u001b[38;5;129;01min\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mprocess_response\u001b[38;5;241m.\u001b[39mget(protocol, []):\n\u001b[1;32m 522\u001b[0m meth \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mgetattr\u001b[39m(processor, meth_name)\n\u001b[0;32m--> 523\u001b[0m response \u001b[38;5;241m=\u001b[39m \u001b[43mmeth\u001b[49m\u001b[43m(\u001b[49m\u001b[43mreq\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mresponse\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 525\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m response\n", + "File \u001b[0;32m~/opt/anaconda3/lib/python3.9/urllib/request.py:632\u001b[0m, in \u001b[0;36mHTTPErrorProcessor.http_response\u001b[0;34m(self, request, response)\u001b[0m\n\u001b[1;32m 629\u001b[0m \u001b[38;5;66;03m# According to RFC 2616, \"2xx\" code indicates that the client's\u001b[39;00m\n\u001b[1;32m 630\u001b[0m \u001b[38;5;66;03m# request was successfully received, understood, and accepted.\u001b[39;00m\n\u001b[1;32m 631\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m (\u001b[38;5;241m200\u001b[39m \u001b[38;5;241m<\u001b[39m\u001b[38;5;241m=\u001b[39m code \u001b[38;5;241m<\u001b[39m \u001b[38;5;241m300\u001b[39m):\n\u001b[0;32m--> 632\u001b[0m response \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mparent\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43merror\u001b[49m\u001b[43m(\u001b[49m\n\u001b[1;32m 633\u001b[0m \u001b[43m \u001b[49m\u001b[38;5;124;43m'\u001b[39;49m\u001b[38;5;124;43mhttp\u001b[39;49m\u001b[38;5;124;43m'\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mrequest\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mresponse\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mcode\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mmsg\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mhdrs\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 635\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m response\n", + "File \u001b[0;32m~/opt/anaconda3/lib/python3.9/urllib/request.py:555\u001b[0m, in \u001b[0;36mOpenerDirector.error\u001b[0;34m(self, proto, *args)\u001b[0m\n\u001b[1;32m 553\u001b[0m http_err \u001b[38;5;241m=\u001b[39m \u001b[38;5;241m0\u001b[39m\n\u001b[1;32m 554\u001b[0m args \u001b[38;5;241m=\u001b[39m (\u001b[38;5;28mdict\u001b[39m, proto, meth_name) \u001b[38;5;241m+\u001b[39m args\n\u001b[0;32m--> 555\u001b[0m result \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_call_chain\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43margs\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 556\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m result:\n\u001b[1;32m 557\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m result\n", + "File \u001b[0;32m~/opt/anaconda3/lib/python3.9/urllib/request.py:494\u001b[0m, in \u001b[0;36mOpenerDirector._call_chain\u001b[0;34m(self, chain, kind, meth_name, *args)\u001b[0m\n\u001b[1;32m 492\u001b[0m \u001b[38;5;28;01mfor\u001b[39;00m handler \u001b[38;5;129;01min\u001b[39;00m handlers:\n\u001b[1;32m 493\u001b[0m func \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mgetattr\u001b[39m(handler, meth_name)\n\u001b[0;32m--> 494\u001b[0m result \u001b[38;5;241m=\u001b[39m \u001b[43mfunc\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43margs\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 495\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m result \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m:\n\u001b[1;32m 496\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m result\n", + "File \u001b[0;32m~/opt/anaconda3/lib/python3.9/urllib/request.py:747\u001b[0m, in \u001b[0;36mHTTPRedirectHandler.http_error_302\u001b[0;34m(self, req, fp, code, msg, headers)\u001b[0m\n\u001b[1;32m 744\u001b[0m fp\u001b[38;5;241m.\u001b[39mread()\n\u001b[1;32m 745\u001b[0m fp\u001b[38;5;241m.\u001b[39mclose()\n\u001b[0;32m--> 747\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mparent\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mopen\u001b[49m\u001b[43m(\u001b[49m\u001b[43mnew\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mtimeout\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mreq\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mtimeout\u001b[49m\u001b[43m)\u001b[49m\n", + "File \u001b[0;32m~/opt/anaconda3/lib/python3.9/urllib/request.py:517\u001b[0m, in \u001b[0;36mOpenerDirector.open\u001b[0;34m(self, fullurl, data, timeout)\u001b[0m\n\u001b[1;32m 514\u001b[0m req \u001b[38;5;241m=\u001b[39m meth(req)\n\u001b[1;32m 516\u001b[0m sys\u001b[38;5;241m.\u001b[39maudit(\u001b[38;5;124m'\u001b[39m\u001b[38;5;124murllib.Request\u001b[39m\u001b[38;5;124m'\u001b[39m, req\u001b[38;5;241m.\u001b[39mfull_url, req\u001b[38;5;241m.\u001b[39mdata, req\u001b[38;5;241m.\u001b[39mheaders, req\u001b[38;5;241m.\u001b[39mget_method())\n\u001b[0;32m--> 517\u001b[0m response \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_open\u001b[49m\u001b[43m(\u001b[49m\u001b[43mreq\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mdata\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 519\u001b[0m \u001b[38;5;66;03m# post-process response\u001b[39;00m\n\u001b[1;32m 520\u001b[0m meth_name \u001b[38;5;241m=\u001b[39m protocol\u001b[38;5;241m+\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124m_response\u001b[39m\u001b[38;5;124m\"\u001b[39m\n", + "File \u001b[0;32m~/opt/anaconda3/lib/python3.9/urllib/request.py:534\u001b[0m, in \u001b[0;36mOpenerDirector._open\u001b[0;34m(self, req, data)\u001b[0m\n\u001b[1;32m 531\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m result\n\u001b[1;32m 533\u001b[0m protocol \u001b[38;5;241m=\u001b[39m req\u001b[38;5;241m.\u001b[39mtype\n\u001b[0;32m--> 534\u001b[0m result \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_call_chain\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mhandle_open\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mprotocol\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mprotocol\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m+\u001b[39;49m\n\u001b[1;32m 535\u001b[0m \u001b[43m \u001b[49m\u001b[38;5;124;43m'\u001b[39;49m\u001b[38;5;124;43m_open\u001b[39;49m\u001b[38;5;124;43m'\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mreq\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 536\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m result:\n\u001b[1;32m 537\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m result\n", + "File \u001b[0;32m~/opt/anaconda3/lib/python3.9/urllib/request.py:494\u001b[0m, in \u001b[0;36mOpenerDirector._call_chain\u001b[0;34m(self, chain, kind, meth_name, *args)\u001b[0m\n\u001b[1;32m 492\u001b[0m \u001b[38;5;28;01mfor\u001b[39;00m handler \u001b[38;5;129;01min\u001b[39;00m handlers:\n\u001b[1;32m 493\u001b[0m func \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mgetattr\u001b[39m(handler, meth_name)\n\u001b[0;32m--> 494\u001b[0m result \u001b[38;5;241m=\u001b[39m \u001b[43mfunc\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43margs\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 495\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m result \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m:\n\u001b[1;32m 496\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m result\n", + "File \u001b[0;32m~/opt/anaconda3/lib/python3.9/urllib/request.py:1389\u001b[0m, in \u001b[0;36mHTTPSHandler.https_open\u001b[0;34m(self, req)\u001b[0m\n\u001b[1;32m 1388\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21mhttps_open\u001b[39m(\u001b[38;5;28mself\u001b[39m, req):\n\u001b[0;32m-> 1389\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mdo_open\u001b[49m\u001b[43m(\u001b[49m\u001b[43mhttp\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mclient\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mHTTPSConnection\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mreq\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 1390\u001b[0m \u001b[43m \u001b[49m\u001b[43mcontext\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_context\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mcheck_hostname\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_check_hostname\u001b[49m\u001b[43m)\u001b[49m\n", + "File \u001b[0;32m~/opt/anaconda3/lib/python3.9/urllib/request.py:1350\u001b[0m, in \u001b[0;36mAbstractHTTPHandler.do_open\u001b[0;34m(self, http_class, req, **http_conn_args)\u001b[0m\n\u001b[1;32m 1348\u001b[0m \u001b[38;5;28;01mexcept\u001b[39;00m \u001b[38;5;167;01mOSError\u001b[39;00m \u001b[38;5;28;01mas\u001b[39;00m err: \u001b[38;5;66;03m# timeout error\u001b[39;00m\n\u001b[1;32m 1349\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m URLError(err)\n\u001b[0;32m-> 1350\u001b[0m r \u001b[38;5;241m=\u001b[39m \u001b[43mh\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mgetresponse\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 1351\u001b[0m \u001b[38;5;28;01mexcept\u001b[39;00m:\n\u001b[1;32m 1352\u001b[0m h\u001b[38;5;241m.\u001b[39mclose()\n", + "File \u001b[0;32m~/opt/anaconda3/lib/python3.9/http/client.py:1377\u001b[0m, in \u001b[0;36mHTTPConnection.getresponse\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 1375\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[1;32m 1376\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[0;32m-> 1377\u001b[0m \u001b[43mresponse\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mbegin\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 1378\u001b[0m \u001b[38;5;28;01mexcept\u001b[39;00m \u001b[38;5;167;01mConnectionError\u001b[39;00m:\n\u001b[1;32m 1379\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mclose()\n", + "File \u001b[0;32m~/opt/anaconda3/lib/python3.9/http/client.py:320\u001b[0m, in \u001b[0;36mHTTPResponse.begin\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 318\u001b[0m \u001b[38;5;66;03m# read until we get a non-100 response\u001b[39;00m\n\u001b[1;32m 319\u001b[0m \u001b[38;5;28;01mwhile\u001b[39;00m \u001b[38;5;28;01mTrue\u001b[39;00m:\n\u001b[0;32m--> 320\u001b[0m version, status, reason \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_read_status\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 321\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m status \u001b[38;5;241m!=\u001b[39m CONTINUE:\n\u001b[1;32m 322\u001b[0m \u001b[38;5;28;01mbreak\u001b[39;00m\n", + "File \u001b[0;32m~/opt/anaconda3/lib/python3.9/http/client.py:281\u001b[0m, in \u001b[0;36mHTTPResponse._read_status\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 280\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21m_read_status\u001b[39m(\u001b[38;5;28mself\u001b[39m):\n\u001b[0;32m--> 281\u001b[0m line \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mstr\u001b[39m(\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mfp\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mreadline\u001b[49m\u001b[43m(\u001b[49m\u001b[43m_MAXLINE\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m+\u001b[39;49m\u001b[43m \u001b[49m\u001b[38;5;241;43m1\u001b[39;49m\u001b[43m)\u001b[49m, \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124miso-8859-1\u001b[39m\u001b[38;5;124m\"\u001b[39m)\n\u001b[1;32m 282\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28mlen\u001b[39m(line) \u001b[38;5;241m>\u001b[39m _MAXLINE:\n\u001b[1;32m 283\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m LineTooLong(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mstatus line\u001b[39m\u001b[38;5;124m\"\u001b[39m)\n", + "File \u001b[0;32m~/opt/anaconda3/lib/python3.9/socket.py:704\u001b[0m, in \u001b[0;36mSocketIO.readinto\u001b[0;34m(self, b)\u001b[0m\n\u001b[1;32m 702\u001b[0m \u001b[38;5;28;01mwhile\u001b[39;00m \u001b[38;5;28;01mTrue\u001b[39;00m:\n\u001b[1;32m 703\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[0;32m--> 704\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_sock\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mrecv_into\u001b[49m\u001b[43m(\u001b[49m\u001b[43mb\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 705\u001b[0m \u001b[38;5;28;01mexcept\u001b[39;00m timeout:\n\u001b[1;32m 706\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_timeout_occurred \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;01mTrue\u001b[39;00m\n", + "File \u001b[0;32m~/opt/anaconda3/lib/python3.9/ssl.py:1241\u001b[0m, in \u001b[0;36mSSLSocket.recv_into\u001b[0;34m(self, buffer, nbytes, flags)\u001b[0m\n\u001b[1;32m 1237\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m flags \u001b[38;5;241m!=\u001b[39m \u001b[38;5;241m0\u001b[39m:\n\u001b[1;32m 1238\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m \u001b[38;5;167;01mValueError\u001b[39;00m(\n\u001b[1;32m 1239\u001b[0m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mnon-zero flags not allowed in calls to recv_into() on \u001b[39m\u001b[38;5;132;01m%s\u001b[39;00m\u001b[38;5;124m\"\u001b[39m \u001b[38;5;241m%\u001b[39m\n\u001b[1;32m 1240\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m\u001b[38;5;18m__class__\u001b[39m)\n\u001b[0;32m-> 1241\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mread\u001b[49m\u001b[43m(\u001b[49m\u001b[43mnbytes\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mbuffer\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 1242\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m:\n\u001b[1;32m 1243\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28msuper\u001b[39m()\u001b[38;5;241m.\u001b[39mrecv_into(buffer, nbytes, flags)\n", + "File \u001b[0;32m~/opt/anaconda3/lib/python3.9/ssl.py:1099\u001b[0m, in \u001b[0;36mSSLSocket.read\u001b[0;34m(self, len, buffer)\u001b[0m\n\u001b[1;32m 1097\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[1;32m 1098\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m buffer \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m:\n\u001b[0;32m-> 1099\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_sslobj\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mread\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;28;43mlen\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mbuffer\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 1100\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m:\n\u001b[1;32m 1101\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_sslobj\u001b[38;5;241m.\u001b[39mread(\u001b[38;5;28mlen\u001b[39m)\n", + "\u001b[0;31mKeyboardInterrupt\u001b[0m: " + ] + } + ], + "source": [ + "def getLinks(articleUrl):\n", + " html = urlopen(f'http://en.wikipedia.org{articleUrl}')\n", + " bs = BeautifulSoup(html, 'html.parser')\n", + " return bs.find('div', {'id':'bodyContent'}).findAll('a', \n", + " href=re.compile('^(/wiki/)((?!:).)*$'))\n", + "\n", + "def getHistoryIPs(pageUrl):\n", + " #Format of revision history pages is: \n", + " #http://en.wikipedia.org/w/index.php?title=Title_in_URL&action=history\n", + " pageUrl = pageUrl.replace('/wiki/', '')\n", + " historyUrl = f'http://en.wikipedia.org/w/index.php?title={pageUrl}&action=history'\n", + " print(f'history url is: {historyUrl}')\n", + " bs = BeautifulSoup(urlopen(historyUrl), 'html.parser')\n", + " #finds only the links with class \"mw-anonuserlink\" which has IP addresses \n", + " #instead of usernames\n", + " ipAddresses = bs.findAll('a', {'class':'mw-anonuserlink'})\n", + " return set([ip.get_text() for ip in ipAddresses])\n", + "\n", + "links = getLinks('/wiki/Python_(programming_language)')\n", + "\n", + "while(len(links) > 0):\n", + " for link in links:\n", + " print('-'*20) \n", + " historyIPs = getHistoryIPs(link.attrs['href'])\n", + " for historyIP in historyIPs:\n", + " print(historyIP)\n", + "\n", + " newLink = links[random.randint(0, len(links)-1)].attrs['href']\n", + " links = getLinks(newLink)" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--------------------\n", + "history url is: http://en.wikipedia.org/w/index.php?title=Programming_paradigm&action=history\n", + "2405:201:2009:80b0:41bc:366f:a49c:52f2 is from IN\n", + "115.186.189.53 is from PK\n", + "103.252.145.68 is from IN\n", + "2405:201:400b:7058:b128:89fd:5248:f249 is from IN\n", + "172.115.220.47 is from US\n", + "2806:1016:d:54b6:8950:4501:c00b:507a is from MX\n", + "36.255.87.160 is from IN\n", + "2603:6011:1100:a1d0:31bd:8a11:a0c8:e4c3 is from US\n", + "2806:108e:d:bd2c:a577:db4f:2867:2b5c is from MX\n", + "2409:4042:e8f:8d39:b50c:f4ca:91b8:eb9d is from IN\n", + "107.190.108.84 is from CA\n", + "--------------------\n", + "history url is: http://en.wikipedia.org/w/index.php?title=Multi-paradigm_programming_language&action=history\n", + "98.197.198.46 is from US\n", + "75.139.254.117 is from US\n", + "--------------------\n", + "history url is: http://en.wikipedia.org/w/index.php?title=Object-oriented_programming&action=history\n", + "86.186.86.97 is from GB\n", + "82.151.115.17 is from RU\n", + "2a00:23c8:2c00:4d01:9d37:3187:6b3c:6d7b is from GB\n", + "2a01:cb1e:75:31ab:a2:ba91:d0e:6965 is from FR\n", + "67.182.232.160 is from US\n", + "92.253.43.187 is from JO\n", + "195.12.232.246 is from DE\n", + "104.156.69.18 is from CA\n", + "115.241.201.77 is from IN\n", + "2405:9800:b923:2b6:b4b7:730b:405b:a1e0 is from TH\n", + "130.208.188.159 is from IS\n", + "2a00:23ee:1050:29af:6020:e55f:8546:e258 is from GB\n", + "150.135.165.11 is from US\n", + "12.183.178.250 is from US\n", + "--------------------\n", + "history url is: http://en.wikipedia.org/w/index.php?title=Procedural_programming&action=history\n", + "112.134.214.53 is from LK\n", + "2607:fea8:235e:b600:cad6:9572:d5a8:1639 is from CA\n", + "174.90.223.214 is from CA\n", + "2600:1000:b045:9be1:67c4:f788:c2fb:461d is from US\n", + "83.173.200.121 is from CH\n", + "216.225.124.244 is from US\n", + "2601:2c3:867f:e810:5b9b:58e7:b427:e352 is from US\n", + "162.208.181.210 is from CA\n", + "117.220.135.30 is from IN\n", + "2001:44c8:45d2:11cd:1:0:2e69:c996 is from TH\n", + "2001:8f8:1e35:fa30:52b:190e:146a:4b48 is from AE\n", + "112.79.118.122 is from IN\n", + "2607:fea8:9560:8ae:e155:3e6f:7747:5544 is from CA\n", + "192.208.125.161 is from US\n", + "50.201.78.245 is from US\n", + "151.255.244.223 is from SA\n", + "--------------------\n", + "history url is: http://en.wikipedia.org/w/index.php?title=Imperative_programming&action=history\n", + "27.2.20.10 is from VN\n", + "97.121.170.107 is from US\n", + "117.207.179.184 is from IN\n", + "2600:8803:c40a:800:b47e:b314:65fe:8b6c is from US\n", + "173.225.40.198 is from US\n", + "2a02:c7f:c28c:f400:e510:1e3e:d3d2:a21e is from GB\n", + "207.255.75.92 is from US\n", + "223.24.167.37 is from TH\n", + "49.207.196.35 is from IN\n", + "106.201.59.250 is from IN\n", + "189.204.196.201 is from MX\n", + "2a02:c7f:74c3:c300:5c5a:ce83:7325:4429 is from GB\n", + "2603:6010:df00:21d5:8dbc:53ba:9aa1:6267 is from US\n", + "2405:204:a3a7:c3bd::f0b:a0ac is from IN\n", + "2001:4454:38f:fc00:c8f1:b67e:da95:ab6f is from PH\n", + "--------------------\n", + "history url is: http://en.wikipedia.org/w/index.php?title=Functional_programming&action=history\n", + "62.175.103.210 is from ES\n", + "2607:fea8:235f:9730::1232 is from CA\n", + "2600:6c4a:4d7f:e999:d21:9ad5:a5e4:e20d is from US\n", + "105.12.5.186 is from ZA\n", + "134.204.220.36 is from US\n", + "2607:fea8:2363:8f00:a000:dce0:5c45:2642 is from CA\n", + "2804:14c:1c2:821c:4970:1293:d1dc:3f00 is from BR\n", + "23.121.65.56 is from US\n", + "104.152.255.71 is from US\n", + "109.125.120.234 is from DE\n", + "91.243.4.220 is from UA\n", + "--------------------\n", + "history url is: http://en.wikipedia.org/w/index.php?title=Structured_programming&action=history\n", + "83.223.241.43 is from PT\n", + "2401:4900:c16:df76:13e:4e10:599a:642e is from IN\n", + "165.82.134.144 is from US\n", + "2409:4051:291:a148:159a:ee30:ad1b:2179 is from IN\n", + "2600:8805:a981:4300:65d3:9258:af92:d91c is from US\n", + "156.199.200.186 is from EG\n", + "76.8.32.203 is from BM\n", + "223.196.166.69 is from IN\n" + ] + }, + { + "ename": "NameError", + "evalue": "name 'HTTPError' is not defined", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mKeyboardInterrupt\u001b[0m Traceback (most recent call last)", + "Input \u001b[0;32mIn [5]\u001b[0m, in \u001b[0;36mgetCountry\u001b[0;34m(ipAddress)\u001b[0m\n\u001b[1;32m 2\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[0;32m----> 3\u001b[0m response \u001b[38;5;241m=\u001b[39m \u001b[43murlopen\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;124;43mf\u001b[39;49m\u001b[38;5;124;43m'\u001b[39;49m\u001b[38;5;124;43mhttps://ipwho.is/\u001b[39;49m\u001b[38;5;132;43;01m{\u001b[39;49;00m\u001b[43mipAddress\u001b[49m\u001b[38;5;132;43;01m}\u001b[39;49;00m\u001b[38;5;124;43m'\u001b[39;49m\u001b[43m)\u001b[49m\u001b[38;5;241m.\u001b[39mread()\u001b[38;5;241m.\u001b[39mdecode(\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mutf-8\u001b[39m\u001b[38;5;124m'\u001b[39m)\n\u001b[1;32m 4\u001b[0m \u001b[38;5;28;01mexcept\u001b[39;00m HTTPError:\n", + "File \u001b[0;32m~/opt/anaconda3/lib/python3.9/urllib/request.py:214\u001b[0m, in \u001b[0;36murlopen\u001b[0;34m(url, data, timeout, cafile, capath, cadefault, context)\u001b[0m\n\u001b[1;32m 213\u001b[0m opener \u001b[38;5;241m=\u001b[39m _opener\n\u001b[0;32m--> 214\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[43mopener\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mopen\u001b[49m\u001b[43m(\u001b[49m\u001b[43murl\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mdata\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mtimeout\u001b[49m\u001b[43m)\u001b[49m\n", + "File \u001b[0;32m~/opt/anaconda3/lib/python3.9/urllib/request.py:517\u001b[0m, in \u001b[0;36mOpenerDirector.open\u001b[0;34m(self, fullurl, data, timeout)\u001b[0m\n\u001b[1;32m 516\u001b[0m sys\u001b[38;5;241m.\u001b[39maudit(\u001b[38;5;124m'\u001b[39m\u001b[38;5;124murllib.Request\u001b[39m\u001b[38;5;124m'\u001b[39m, req\u001b[38;5;241m.\u001b[39mfull_url, req\u001b[38;5;241m.\u001b[39mdata, req\u001b[38;5;241m.\u001b[39mheaders, req\u001b[38;5;241m.\u001b[39mget_method())\n\u001b[0;32m--> 517\u001b[0m response \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_open\u001b[49m\u001b[43m(\u001b[49m\u001b[43mreq\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mdata\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 519\u001b[0m \u001b[38;5;66;03m# post-process response\u001b[39;00m\n", + "File \u001b[0;32m~/opt/anaconda3/lib/python3.9/urllib/request.py:534\u001b[0m, in \u001b[0;36mOpenerDirector._open\u001b[0;34m(self, req, data)\u001b[0m\n\u001b[1;32m 533\u001b[0m protocol \u001b[38;5;241m=\u001b[39m req\u001b[38;5;241m.\u001b[39mtype\n\u001b[0;32m--> 534\u001b[0m result \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_call_chain\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mhandle_open\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mprotocol\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mprotocol\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m+\u001b[39;49m\n\u001b[1;32m 535\u001b[0m \u001b[43m \u001b[49m\u001b[38;5;124;43m'\u001b[39;49m\u001b[38;5;124;43m_open\u001b[39;49m\u001b[38;5;124;43m'\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mreq\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 536\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m result:\n", + "File \u001b[0;32m~/opt/anaconda3/lib/python3.9/urllib/request.py:494\u001b[0m, in \u001b[0;36mOpenerDirector._call_chain\u001b[0;34m(self, chain, kind, meth_name, *args)\u001b[0m\n\u001b[1;32m 493\u001b[0m func \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mgetattr\u001b[39m(handler, meth_name)\n\u001b[0;32m--> 494\u001b[0m result \u001b[38;5;241m=\u001b[39m \u001b[43mfunc\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43margs\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 495\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m result \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m:\n", + "File \u001b[0;32m~/opt/anaconda3/lib/python3.9/urllib/request.py:1389\u001b[0m, in \u001b[0;36mHTTPSHandler.https_open\u001b[0;34m(self, req)\u001b[0m\n\u001b[1;32m 1388\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21mhttps_open\u001b[39m(\u001b[38;5;28mself\u001b[39m, req):\n\u001b[0;32m-> 1389\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mdo_open\u001b[49m\u001b[43m(\u001b[49m\u001b[43mhttp\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mclient\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mHTTPSConnection\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mreq\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 1390\u001b[0m \u001b[43m \u001b[49m\u001b[43mcontext\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_context\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mcheck_hostname\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_check_hostname\u001b[49m\u001b[43m)\u001b[49m\n", + "File \u001b[0;32m~/opt/anaconda3/lib/python3.9/urllib/request.py:1346\u001b[0m, in \u001b[0;36mAbstractHTTPHandler.do_open\u001b[0;34m(self, http_class, req, **http_conn_args)\u001b[0m\n\u001b[1;32m 1345\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[0;32m-> 1346\u001b[0m \u001b[43mh\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mrequest\u001b[49m\u001b[43m(\u001b[49m\u001b[43mreq\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mget_method\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mreq\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mselector\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mreq\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mdata\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mheaders\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 1347\u001b[0m \u001b[43m \u001b[49m\u001b[43mencode_chunked\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mreq\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mhas_header\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;124;43m'\u001b[39;49m\u001b[38;5;124;43mTransfer-encoding\u001b[39;49m\u001b[38;5;124;43m'\u001b[39;49m\u001b[43m)\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 1348\u001b[0m \u001b[38;5;28;01mexcept\u001b[39;00m \u001b[38;5;167;01mOSError\u001b[39;00m \u001b[38;5;28;01mas\u001b[39;00m err: \u001b[38;5;66;03m# timeout error\u001b[39;00m\n", + "File \u001b[0;32m~/opt/anaconda3/lib/python3.9/http/client.py:1285\u001b[0m, in \u001b[0;36mHTTPConnection.request\u001b[0;34m(self, method, url, body, headers, encode_chunked)\u001b[0m\n\u001b[1;32m 1284\u001b[0m \u001b[38;5;124;03m\"\"\"Send a complete request to the server.\"\"\"\u001b[39;00m\n\u001b[0;32m-> 1285\u001b[0m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_send_request\u001b[49m\u001b[43m(\u001b[49m\u001b[43mmethod\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43murl\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mbody\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mheaders\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mencode_chunked\u001b[49m\u001b[43m)\u001b[49m\n", + "File \u001b[0;32m~/opt/anaconda3/lib/python3.9/http/client.py:1331\u001b[0m, in \u001b[0;36mHTTPConnection._send_request\u001b[0;34m(self, method, url, body, headers, encode_chunked)\u001b[0m\n\u001b[1;32m 1330\u001b[0m body \u001b[38;5;241m=\u001b[39m _encode(body, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mbody\u001b[39m\u001b[38;5;124m'\u001b[39m)\n\u001b[0;32m-> 1331\u001b[0m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mendheaders\u001b[49m\u001b[43m(\u001b[49m\u001b[43mbody\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mencode_chunked\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mencode_chunked\u001b[49m\u001b[43m)\u001b[49m\n", + "File \u001b[0;32m~/opt/anaconda3/lib/python3.9/http/client.py:1280\u001b[0m, in \u001b[0;36mHTTPConnection.endheaders\u001b[0;34m(self, message_body, encode_chunked)\u001b[0m\n\u001b[1;32m 1279\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m CannotSendHeader()\n\u001b[0;32m-> 1280\u001b[0m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_send_output\u001b[49m\u001b[43m(\u001b[49m\u001b[43mmessage_body\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mencode_chunked\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mencode_chunked\u001b[49m\u001b[43m)\u001b[49m\n", + "File \u001b[0;32m~/opt/anaconda3/lib/python3.9/http/client.py:1040\u001b[0m, in \u001b[0;36mHTTPConnection._send_output\u001b[0;34m(self, message_body, encode_chunked)\u001b[0m\n\u001b[1;32m 1039\u001b[0m \u001b[38;5;28;01mdel\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_buffer[:]\n\u001b[0;32m-> 1040\u001b[0m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43msend\u001b[49m\u001b[43m(\u001b[49m\u001b[43mmsg\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 1042\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m message_body \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m:\n\u001b[1;32m 1043\u001b[0m \n\u001b[1;32m 1044\u001b[0m \u001b[38;5;66;03m# create a consistent interface to message_body\u001b[39;00m\n", + "File \u001b[0;32m~/opt/anaconda3/lib/python3.9/http/client.py:980\u001b[0m, in \u001b[0;36mHTTPConnection.send\u001b[0;34m(self, data)\u001b[0m\n\u001b[1;32m 979\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mauto_open:\n\u001b[0;32m--> 980\u001b[0m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mconnect\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 981\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m:\n", + "File \u001b[0;32m~/opt/anaconda3/lib/python3.9/http/client.py:1454\u001b[0m, in \u001b[0;36mHTTPSConnection.connect\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 1452\u001b[0m server_hostname \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mhost\n\u001b[0;32m-> 1454\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39msock \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_context\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mwrap_socket\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43msock\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 1455\u001b[0m \u001b[43m \u001b[49m\u001b[43mserver_hostname\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mserver_hostname\u001b[49m\u001b[43m)\u001b[49m\n", + "File \u001b[0;32m~/opt/anaconda3/lib/python3.9/ssl.py:500\u001b[0m, in \u001b[0;36mSSLContext.wrap_socket\u001b[0;34m(self, sock, server_side, do_handshake_on_connect, suppress_ragged_eofs, server_hostname, session)\u001b[0m\n\u001b[1;32m 494\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21mwrap_socket\u001b[39m(\u001b[38;5;28mself\u001b[39m, sock, server_side\u001b[38;5;241m=\u001b[39m\u001b[38;5;28;01mFalse\u001b[39;00m,\n\u001b[1;32m 495\u001b[0m do_handshake_on_connect\u001b[38;5;241m=\u001b[39m\u001b[38;5;28;01mTrue\u001b[39;00m,\n\u001b[1;32m 496\u001b[0m suppress_ragged_eofs\u001b[38;5;241m=\u001b[39m\u001b[38;5;28;01mTrue\u001b[39;00m,\n\u001b[1;32m 497\u001b[0m server_hostname\u001b[38;5;241m=\u001b[39m\u001b[38;5;28;01mNone\u001b[39;00m, session\u001b[38;5;241m=\u001b[39m\u001b[38;5;28;01mNone\u001b[39;00m):\n\u001b[1;32m 498\u001b[0m \u001b[38;5;66;03m# SSLSocket class handles server_hostname encoding before it calls\u001b[39;00m\n\u001b[1;32m 499\u001b[0m \u001b[38;5;66;03m# ctx._wrap_socket()\u001b[39;00m\n\u001b[0;32m--> 500\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43msslsocket_class\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_create\u001b[49m\u001b[43m(\u001b[49m\n\u001b[1;32m 501\u001b[0m \u001b[43m \u001b[49m\u001b[43msock\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43msock\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 502\u001b[0m \u001b[43m \u001b[49m\u001b[43mserver_side\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mserver_side\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 503\u001b[0m \u001b[43m \u001b[49m\u001b[43mdo_handshake_on_connect\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mdo_handshake_on_connect\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 504\u001b[0m \u001b[43m \u001b[49m\u001b[43msuppress_ragged_eofs\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43msuppress_ragged_eofs\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 505\u001b[0m \u001b[43m \u001b[49m\u001b[43mserver_hostname\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mserver_hostname\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 506\u001b[0m \u001b[43m \u001b[49m\u001b[43mcontext\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[43m,\u001b[49m\n\u001b[1;32m 507\u001b[0m \u001b[43m \u001b[49m\u001b[43msession\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43msession\u001b[49m\n\u001b[1;32m 508\u001b[0m \u001b[43m \u001b[49m\u001b[43m)\u001b[49m\n", + "File \u001b[0;32m~/opt/anaconda3/lib/python3.9/ssl.py:1040\u001b[0m, in \u001b[0;36mSSLSocket._create\u001b[0;34m(cls, sock, server_side, do_handshake_on_connect, suppress_ragged_eofs, server_hostname, context, session)\u001b[0m\n\u001b[1;32m 1039\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m \u001b[38;5;167;01mValueError\u001b[39;00m(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mdo_handshake_on_connect should not be specified for non-blocking sockets\u001b[39m\u001b[38;5;124m\"\u001b[39m)\n\u001b[0;32m-> 1040\u001b[0m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mdo_handshake\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 1041\u001b[0m \u001b[38;5;28;01mexcept\u001b[39;00m (\u001b[38;5;167;01mOSError\u001b[39;00m, \u001b[38;5;167;01mValueError\u001b[39;00m):\n", + "File \u001b[0;32m~/opt/anaconda3/lib/python3.9/ssl.py:1309\u001b[0m, in \u001b[0;36mSSLSocket.do_handshake\u001b[0;34m(self, block)\u001b[0m\n\u001b[1;32m 1308\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39msettimeout(\u001b[38;5;28;01mNone\u001b[39;00m)\n\u001b[0;32m-> 1309\u001b[0m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_sslobj\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mdo_handshake\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 1310\u001b[0m \u001b[38;5;28;01mfinally\u001b[39;00m:\n", + "\u001b[0;31mKeyboardInterrupt\u001b[0m: ", + "\nDuring handling of the above exception, another exception occurred:\n", + "\u001b[0;31mNameError\u001b[0m Traceback (most recent call last)", + "Input \u001b[0;32mIn [5]\u001b[0m, in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[1;32m 14\u001b[0m historyIPs \u001b[38;5;241m=\u001b[39m getHistoryIPs(link\u001b[38;5;241m.\u001b[39mattrs[\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mhref\u001b[39m\u001b[38;5;124m\"\u001b[39m])\n\u001b[1;32m 15\u001b[0m \u001b[38;5;28;01mfor\u001b[39;00m historyIP \u001b[38;5;129;01min\u001b[39;00m historyIPs:\n\u001b[0;32m---> 16\u001b[0m \u001b[38;5;28mprint\u001b[39m(\u001b[38;5;124mf\u001b[39m\u001b[38;5;124m'\u001b[39m\u001b[38;5;132;01m{\u001b[39;00mhistoryIP\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m is from \u001b[39m\u001b[38;5;132;01m{\u001b[39;00mgetCountry(historyIP)\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m'\u001b[39m)\n\u001b[1;32m 18\u001b[0m newLink \u001b[38;5;241m=\u001b[39m links[random\u001b[38;5;241m.\u001b[39mrandint(\u001b[38;5;241m0\u001b[39m, \u001b[38;5;28mlen\u001b[39m(links)\u001b[38;5;241m-\u001b[39m\u001b[38;5;241m1\u001b[39m)]\u001b[38;5;241m.\u001b[39mattrs[\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mhref\u001b[39m\u001b[38;5;124m'\u001b[39m]\n\u001b[1;32m 19\u001b[0m links \u001b[38;5;241m=\u001b[39m getLinks(newLink)\n", + "Input \u001b[0;32mIn [5]\u001b[0m, in \u001b[0;36mgetCountry\u001b[0;34m(ipAddress)\u001b[0m\n\u001b[1;32m 2\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[1;32m 3\u001b[0m response \u001b[38;5;241m=\u001b[39m urlopen(\u001b[38;5;124mf\u001b[39m\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mhttps://ipwho.is/\u001b[39m\u001b[38;5;132;01m{\u001b[39;00mipAddress\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m'\u001b[39m)\u001b[38;5;241m.\u001b[39mread()\u001b[38;5;241m.\u001b[39mdecode(\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mutf-8\u001b[39m\u001b[38;5;124m'\u001b[39m)\n\u001b[0;32m----> 4\u001b[0m \u001b[38;5;28;01mexcept\u001b[39;00m \u001b[43mHTTPError\u001b[49m:\n\u001b[1;32m 5\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m\n\u001b[1;32m 6\u001b[0m responseJson \u001b[38;5;241m=\u001b[39m json\u001b[38;5;241m.\u001b[39mloads(response)\n", + "\u001b[0;31mNameError\u001b[0m: name 'HTTPError' is not defined" + ] + } + ], + "source": [ + "def getCountry(ipAddress):\n", + " try:\n", + " response = urlopen(f'https://ipwho.is/{ipAddress}').read().decode('utf-8')\n", + " except HTTPError:\n", + " return None\n", + " responseJson = json.loads(response)\n", + " return responseJson.get('country_code')\n", + " \n", + "links = getLinks('/wiki/Python_(programming_language)')\n", + "\n", + "while(len(links) > 0):\n", + " for link in links:\n", + " print('-'*20) \n", + " historyIPs = getHistoryIPs(link.attrs[\"href\"])\n", + " for historyIP in historyIPs:\n", + " print(f'{historyIP} is from {getCountry(historyIP)}')\n", + "\n", + " newLink = links[random.randint(0, len(links)-1)].attrs['href']\n", + " links = getLinks(newLink)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.9.12" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/Chapter16_ImageProcessing.ipynb b/Chapter16_ImageProcessing.ipynb new file mode 100644 index 0000000..f6c689f --- /dev/null +++ b/Chapter16_ImageProcessing.ipynb @@ -0,0 +1,1058 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "filedir = 'Chapter16_ImageProcessingFiles'" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [], + "source": [ + "from PIL import Image, ImageFilter\n", + "\n", + "kitten = Image.open(f'{filedir}/kitten.jpg')\n", + "blurryKitten = kitten.filter(ImageFilter.GaussianBlur)\n", + "blurryKitten.save(f'{filedir}/kitten_blurred.jpg')\n", + "blurryKitten.show()" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Beautiful is better than ugly.\n", + "Explicit is better than implicit.\n", + "Simple is better than complex.\n", + "Complex is better than\n", + "complicated.\n", + "\n" + ] + } + ], + "source": [ + "from PIL import Image\n", + "import pytesseract\n", + "\n", + "print(pytesseract.image_to_string(Image.open(f'{filedir}/test.png')))" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "B 102 502 152 567 0\n", + "e 159 500 202 550 0\n", + "a 210 500 254 550 0\n", + "u 234 500 274 568 0\n", + "t 262 501 300 549 0\n", + "i 308 501 346 567 0\n", + "f 353 502 376 568 0\n", + "u 383 501 421 549 0\n", + "l 433 502 441 567 0\n", + "i 478 502 486 567 0\n", + "s 495 500 534 550 0\n", + "b 568 500 610 567 0\n", + "e 616 500 659 550 0\n", + "t 664 501 686 562 0\n", + "t 690 501 712 562 0\n", + "e 717 500 760 550 0\n", + "r 770 502 793 550 0\n", + "t 820 501 888 567 0\n", + "h 874 500 906 567 0\n", + "a 899 500 943 550 0\n", + "n 951 502 989 550 0\n", + "u 1026 501 1064 549 0\n", + "g 1058 482 1090 567 0\n", + "l 1074 482 1115 550 0\n", + "y 1127 502 1135 567 0\n", + ". 1142 483 1197 549 0\n", + "E 77 393 125 458 0\n", + "x 131 393 173 440 0\n", + "p 158 374 197 458 0\n", + "l 180 374 222 441 0\n", + "i 231 393 259 458 0\n", + "c 269 392 309 441 0\n", + "i 317 393 325 458 0\n", + "t 332 392 354 453 0\n", + "i 387 393 395 458 0\n", + "s 404 391 443 441 0\n", + "b 477 391 519 458 0\n", + "e 525 391 568 441 0\n", + "t 573 392 595 453 0\n", + "t 598 392 620 453 0\n", + "e 625 391 668 441 0\n", + "r 679 393 702 441 0\n", + "t 729 392 751 453 0\n", + "h 759 393 797 458 0\n", + "a 807 391 851 441 0\n", + "n 860 393 898 441 0\n", + "i 935 393 943 458 0\n", + "m 955 393 1018 441 0\n", + "p 995 374 1042 458 0\n", + "l 1029 374 1071 441 0\n", + "i 1081 393 1089 458 0\n", + "c 1101 393 1109 458 0\n", + "i 1118 392 1158 441 0\n", + "t 1166 393 1174 458 0\n", + ". 1181 392 1222 453 0\n", + "S 49 282 100 350 0\n", + "i 111 284 119 349 0\n", + "m 131 284 194 332 0\n", + "p 179 265 220 350 0\n", + "l 205 265 247 332 0\n", + "e 256 282 316 349 0\n", + "i 352 284 360 349 0\n", + "s 369 282 408 332 0\n", + "b 441 282 483 349 0\n", + "e 490 282 533 332 0\n", + "t 538 283 560 344 0\n", + "t 563 283 585 344 0\n", + "e 590 282 633 332 0\n", + "r 643 284 666 332 0\n", + "t 694 283 762 349 0\n", + "h 749 282 790 349 0\n", + "a 772 282 816 332 0\n", + "n 824 284 862 332 0\n", + "c 897 283 937 332 0\n", + "o 942 282 986 332 0\n", + "m 995 284 1058 332 0\n", + "p 1042 265 1083 349 0\n", + "l 1070 265 1112 332 0\n", + "e 1121 282 1181 349 0\n", + "x 1161 265 1201 349 0\n", + ". 1186 284 1248 331 0\n", + "C 202 173 259 241 0\n", + "o 266 173 310 223 0\n", + "m 319 175 382 223 0\n", + "p 354 156 402 241 0\n", + "l 394 156 436 223 0\n", + "e 445 173 505 240 0\n", + "x 510 175 552 222 0\n", + "i 586 175 594 240 0\n", + "s 603 173 642 223 0\n", + "b 675 173 717 240 0\n", + "e 723 173 766 223 0\n", + "t 772 174 794 235 0\n", + "t 797 174 819 235 0\n", + "e 824 173 867 223 0\n", + "r 877 175 900 223 0\n", + "t 927 174 949 235 0\n", + "h 958 175 996 240 0\n", + "a 1006 173 1050 223 0\n", + "n 1058 175 1096 223 0\n", + "c 399 65 439 114 0\n", + "o 444 64 488 114 0\n", + "m 498 66 561 114 0\n", + "p 536 47 583 131 0\n", + "l 572 47 614 114 0\n", + "i 623 66 651 131 0\n", + "c 660 65 700 114 0\n", + "a 707 64 751 114 0\n", + "t 754 65 776 126 0\n", + "e 781 64 824 114 0\n", + "d 810 47 850 131 0\n", + ". 831 64 896 131 0\n", + "\n" + ] + } + ], + "source": [ + "print(pytesseract.image_to_boxes(Image.open(f'{filedir}/test.png')))" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "level\tpage_num\tblock_num\tpar_num\tline_num\tword_num\tleft\ttop\twidth\theight\tconf\ttext\n", + "1\t1\t0\t0\t0\t0\t0\t0\t1264\t670\t-1\t\n", + "2\t1\t1\t0\t0\t0\t49\t102\t1199\t521\t-1\t\n", + "3\t1\t1\t1\t0\t0\t49\t102\t1199\t521\t-1\t\n", + "4\t1\t1\t1\t1\t0\t102\t102\t1095\t86\t-1\t\n", + "5\t1\t1\t1\t1\t1\t102\t102\t339\t68\t96.726082\tBeautiful\n", + "5\t1\t1\t1\t1\t2\t478\t103\t56\t67\t96.622643\tis\n", + "5\t1\t1\t1\t1\t3\t568\t103\t225\t67\t96.359940\tbetter\n", + "5\t1\t1\t1\t1\t4\t820\t103\t169\t67\t96.166580\tthan\n", + "5\t1\t1\t1\t1\t5\t1026\t103\t171\t85\t96.646881\tugly.\n", + "4\t1\t1\t1\t2\t0\t77\t212\t1145\t84\t-1\t\n", + "5\t1\t1\t1\t2\t1\t77\t212\t277\t84\t96.551743\tExplicit\n", + "5\t1\t1\t1\t2\t2\t387\t212\t56\t67\t96.863762\tis\n", + "5\t1\t1\t1\t2\t3\t477\t212\t225\t67\t96.749100\tbetter\n", + "5\t1\t1\t1\t2\t4\t729\t212\t169\t67\t96.655663\tthan\n", + "5\t1\t1\t1\t2\t5\t935\t212\t287\t84\t65.345970\timplicit.\n", + "4\t1\t1\t1\t3\t0\t49\t320\t1199\t85\t-1\t\n", + "5\t1\t1\t1\t3\t1\t49\t320\t267\t85\t96.369377\tSimple\n", + "5\t1\t1\t1\t3\t2\t352\t321\t56\t67\t96.018692\tis\n", + "5\t1\t1\t1\t3\t3\t441\t321\t225\t67\t96.378403\tbetter\n", + "5\t1\t1\t1\t3\t4\t694\t321\t168\t67\t96.207893\tthan\n", + "5\t1\t1\t1\t3\t5\t897\t321\t351\t84\t96.207893\tcomplex.\n", + "4\t1\t1\t1\t4\t0\t202\t429\t894\t85\t-1\t\n", + "5\t1\t1\t1\t4\t1\t202\t429\t350\t85\t96.717308\tComplex\n", + "5\t1\t1\t1\t4\t2\t586\t430\t56\t67\t95.620392\tis\n", + "5\t1\t1\t1\t4\t3\t675\t430\t225\t67\t95.222137\tbetter\n", + "5\t1\t1\t1\t4\t4\t927\t430\t169\t67\t95.222137\tthan\n", + "4\t1\t1\t1\t5\t0\t399\t539\t497\t84\t-1\t\n", + "5\t1\t1\t1\t5\t1\t399\t539\t497\t84\t92.677841\tcomplicated.\n", + "\n" + ] + } + ], + "source": [ + "print(pytesseract.image_to_data(Image.open(f'{filedir}/test.png')))" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "{'level': [1, 2, 3, 4, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 4, 5, 5, 5, 5, 5, 5], 'page_num': [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], 'block_num': [0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], 'par_num': [0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], 'line_num': [0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2], 'word_num': [0, 0, 0, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 0, 1, 2, 3, 4, 5, 6], 'left': [0, 23, 23, 23, 23, 76, 99, 164, 215, 295, 317, 378, 425, 467, 500, 555, 23, 23, 140, 198, 239, 304, 407], 'top': [0, 26, 26, 26, 26, 26, 30, 26, 26, 26, 26, 26, 26, 26, 26, 26, 54, 55, 55, 59, 59, 55, 54], 'width': [600, 555, 555, 555, 44, 15, 57, 42, 70, 15, 52, 40, 32, 24, 45, 23, 513, 107, 49, 32, 57, 92, 129], 'height': [103, 51, 51, 22, 17, 17, 13, 21, 17, 17, 21, 17, 17, 17, 17, 22, 23, 17, 17, 13, 13, 22, 23], 'conf': [-1, -1, -1, -1, 96, 96, 96, 95, 96, 96, 96, 96, 96, 96, 96, 96, -1, 96, 96, 96, 96, 92, 65], 'text': ['', '', '', '', 'This', 'is', 'some', 'text,', 'written', 'in', 'Arial,', 'that', 'will', 'be', 'read', 'by', '', 'Tesseract.', 'Here', 'are', 'some', 'symbols:', '!|@#$%&*()']}\n", + "b'This is some text, written in Arial, that will be read by\\nTesseract. Here are some symbols: !|@#$%&*()\\n'\n" + ] + } + ], + "source": [ + "from PIL import Image\n", + "import pytesseract\n", + "from pytesseract import Output\n", + "\n", + "print(pytesseract.image_to_data(Image.open(f'{filedir}/'\n", + " 'textOriginal.png'),\n", + " output_type=Output.DICT))\n", + "print(pytesseract.image_to_string(Image.open(f'{filedir}/textOriginal.png'), output_type=Output.BYTES))\n" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "2.280350850198276\n", + "100.0\n" + ] + } + ], + "source": [ + "import numpy as np\n", + "\n", + "numbers = [100, 102, 98, 97, 103]\n", + "print(np.std(numbers))\n", + "print(np.mean(numbers))" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "This is some text, written in Arial, that will be read by\n", + "Tesseract Here are some symbols: |@#$%*&\"(}\n", + "\n" + ] + } + ], + "source": [ + "from PIL import Image\n", + "import pytesseract\n", + "\n", + "def cleanFile(filePath, newFilePath):\n", + " image = Image.open(filePath)\n", + "\n", + " #Set a threshold value for the image, and save\n", + " image = image.point(lambda x: 0 if x<143 else 255)\n", + " image.save(newFilePath)\n", + " return image\n", + "\n", + "image = cleanFile(f'{filedir}/textBad.png', f'{filedir}/textCleaned.png')\n", + "\n", + "#call tesseract to do OCR on the newly created image\n", + "print(pytesseract.image_to_string(image))" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "This is some text, written in Arial, that will be read by\n", + "Tesseract. Here are some symbols: !|@#$%*&*()\n", + "\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Estimating resolution as 218\n" + ] + } + ], + "source": [ + "from PIL import Image\n", + "import subprocess\n", + "\n", + "def cleanFile(filePath, newFilePath):\n", + " image = Image.open(filePath)\n", + "\n", + " #Set a threshold value for the image, and save\n", + " image = image.point(lambda x: 0 if x<135 else 255)\n", + " image.save(newFilePath)\n", + "\n", + " #call tesseract to do OCR on the newly created image\n", + " subprocess.call(['tesseract', newFilePath, 'output'])\n", + " \n", + " #Open and read the resulting data file\n", + " outputFile = open('output.txt', 'r')\n", + " print(outputFile.read())\n", + " outputFile.close()\n", + "\n", + "cleanFile(f'{filedir}/textOriginal.png', f'{filedir}/text_2.png')" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "threshold: 80, confidence: 48.666666666666664, numChars: 18\n", + "threshold: 85, confidence: 64.65217391304348, numChars: 23\n", + "threshold: 90, confidence: 45.5945945945946, numChars: 37\n", + "threshold: 95, confidence: 39.48717948717949, numChars: 39\n", + "threshold: 100, confidence: 56.310344827586206, numChars: 58\n", + "threshold: 105, confidence: 52.943661971830984, numChars: 71\n", + "threshold: 110, confidence: 68.16867469879519, numChars: 83\n", + "threshold: 115, confidence: 73.82926829268293, numChars: 82\n", + "threshold: 120, confidence: 75.52380952380952, numChars: 84\n", + "threshold: 125, confidence: 82.45882352941176, numChars: 85\n", + "threshold: 130, confidence: 75.22619047619048, numChars: 84\n", + "threshold: 135, confidence: 87.78313253012048, numChars: 83\n", + "threshold: 140, confidence: 83.44705882352942, numChars: 85\n", + "threshold: 145, confidence: 88.72619047619048, numChars: 84\n", + "threshold: 150, confidence: 81.7710843373494, numChars: 83\n", + "threshold: 155, confidence: 87.72151898734177, numChars: 79\n", + "threshold: 160, confidence: 84.275, numChars: 80\n", + "threshold: 165, confidence: 87.65714285714286, numChars: 70\n", + "threshold: 170, confidence: 93.49295774647888, numChars: 71\n", + "threshold: 175, confidence: 94.74626865671642, numChars: 67\n", + "threshold: 180, confidence: 92.30882352941177, numChars: 68\n", + "threshold: 185, confidence: 90.41269841269842, numChars: 63\n", + "threshold: 190, confidence: 93.484375, numChars: 64\n", + "threshold: 195, confidence: 93.66176470588235, numChars: 68\n" + ] + } + ], + "source": [ + "import pytesseract\n", + "from pytesseract import Output\n", + "from PIL import Image\n", + "import numpy as np\n", + "\n", + "def cleanFile(filePath, threshold):\n", + " image = Image.open(filePath)\n", + " #Set a threshold value for the image, and save\n", + " image = image.point(lambda x: 0 if x -1:\n", + " confidences.append(data['conf'][i])\n", + " numChars.append(len(text[i]))\n", + " \n", + " return np.average(confidences, weights=numChars), sum(numChars)\n", + " \n", + "filePath = f'{filedir}/textBad.png'\n", + "\n", + "start = 80\n", + "step = 5\n", + "end = 200\n", + "\n", + "for threshold in range(start, end, step):\n", + " image = cleanFile(filePath, threshold)\n", + " scores = getConfidence(image)\n", + " print(f'threshold: {threshold}, confidence: {scores[0]}, numChars: {scores[1]}')\n" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "[WDM] - Downloading: 100%|███████████████████████████████████████████████████████████████████████████████████████████| 8.81M/8.81M [00:00<00:00, 28.7MB/s]\n" + ] + } + ], + "source": [ + "from webdriver_manager.chrome import ChromeDriverManager\n", + "CHROMEDRIVER_PATH = ChromeDriverManager().install()" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Found the iframe\n", + "Found the images!\n", + "Found image: https://d1b14unh5d6w7g.cloudfront.net/1427027277.01.S001.LXXXXXXX.jpg?Expires=1685677502&Signature=WtvgKtT-FABibf3pMsskBL6FJ5cCFom46Eis~hL68HFs3q2kDSqKmt4jfblK0-DlzHGigb6w4Gum0uUEKj4WLAYu4HdYlvj6A~DCLF5hICrg3ms1rVz073Q7cMF6HelAu~VMDAlUlbg3Fgtdg60P4wKrFm0~GogOjmO3sw7LjfA_&Key-Pair-Id=APKAIUO27P366FGALUMQ\n", + "; ighted Material\n", + "Rees EasyRead Large Edition @\n", + "\n", + "The Death of Ivan Ilyich\n", + "\n", + "Leo Nikolayevich Tolstoy\n", + "\n", + "Found image: https://d1b14unh5d6w7g.cloudfront.net/1427027277.01.S002.JUMBOXXX.jpg?Expires=1685677508&Signature=Yhred2InU~vXDwzq69WTaN3IKaBtGZac0N-JxzL8Ul5zMS-X7-J9VowQMT3afm1ZTCVQXWth3bBuZxJI6YyBMeuVzH2iPXj6p78lQuY7cEYY0ocyuwpq1IL0uwcx9TjKvTOU47jKdLgWX7NVKKz-FwtOEEsW86-VDxtJON4JLfY_&Key-Pair-Id=APKAIUO27P366FGALUMQ\n", + "Copyrighted Material\n", + "\n", + "The Death of Ivan Ilyich\n", + "\n", + "By\n", + "Leo Nikolayevich Tolstoy\n", + "\n", + "@\n", + "\n", + "EasyRead Large\n", + "\n", + "ReadHowYouWant Classics Library\n", + "\n", + "Copyrighted Material\n", + "\n", + "Found image: https://d1b14unh5d6w7g.cloudfront.net/1427027277.01.S003.LXXXXXXX.jpg?Expires=1685677502&Signature=fDjl88dlro6TqrMSLQ-r1tX9AQw2DXVPudunKEcOeNdiNNpYwZOP6vKB~8wqMQuRRpjwXSJSYbiWEDluzac3mz3DmaHcrOx~3~KkzlWAYBjjdnRJEt9J2o~n0O5yaLMpI3pf8giwO6DjRrGEEp3HLh0cYtBQeziXo6cUt3Mjz54_&Key-Pair-Id=APKAIUO27P366FGALUMQ\n", + "Copyrighted Material\n", + "\n", + "Copyright © 2007\n", + "\n", + "The text in this book has been formatted\n", + "and typeset to make reading easier and\n", + "more enjoyable. Spelling and punctuation\n", + "have been modernized and standardized,\n", + "and hyphens have been avoided when\n", + "possible. Obvious typographical errors\n", + "have been corrected. In addition, the text\n", + "has been formatted to the specifications\n", + "indicated on the title page. The original\n", + "text is out of copyright. The edited text in\n", + "this edition and the formatting are the\n", + "copyright of Objective Systems Pty Ltd\n", + "ACN 085 119 953.\n", + ". am\n", + "\n", + "Copyrighted Material\n", + "\n", + "Found image: https://d1b14unh5d6w7g.cloudfront.net/1427027277.01.S004.JUMBOXXX.jpg?Expires=1685677508&Signature=D9eoRDCUgmbdUkDEtMgi-pxV6cxp5MIz2s9KFVrVpR6yj5H1jTlRxrGpfMl36jOXsIlY2kTw7J1OM~fG6whvTm24IxuJM1Xzt48WbdNjP-XSpORfOno5OwEAPv1z3Fb~OEWQX6EHjs-~NIIBeZb5p0NcbLbzqjCG1En8cG4nyUc_&Key-Pair-Id=APKAIUO27P366FGALUMQ\n", + "Copyrighted Material\n", + "\n", + "ReadHowYouWant provides access to\n", + "great literature for all readers. We are\n", + "committed to bringing you the largest\n", + "library of classic literature and to\n", + "making reading as effortless as\n", + "possible.\n", + "\n", + "We offer high-quality editions of the\n", + "complete works of all the major literary\n", + "authors, plus critical books about each\n", + "author's life and works. Various\n", + "editions of many titles are available,\n", + "and for texts not written in English, we\n", + "are often able to offer a choice of\n", + "translations.\n", + "\n", + "Our goal is to make reading easier,\n", + "more enjoyable, and accessible to all\n", + "readers. And for readers who need\n", + "\n", + "Copyrighted Material\n", + "\n", + "Found image: https://d1b14unh5d6w7g.cloudfront.net/1427027277.01.S006.LXXXXXXX.jpg?Expires=1685677502&Signature=MOtwItwZhfQ4og1O2aqgRLw2qT9I0CcEqZmWkQJrIGdRRasdYJ-8Ykgnk1oNrXVT9lrbC9NB-KLlPorludMmaC327fsNKL2N2DkFBhgvz~JaGx0niT5KryBODoisXWqkJ3HJdd4xdMwbMxTKC5n2DnGlL4t6GBfhynJcuAUnL3c_&Key-Pair-Id=APKAIUO27P366FGALUMQ\n", + "Copyrighted Material\n", + "\n", + "TABLE OF CONTENTS\n", + "\n", + "Chapter I 1\n", + "Chapter II 7\n", + "Chapter IIT 31\n", + "Chapter IV 43\n", + "Chapter V 55\n", + "Chapter VI 63\n", + "Chapter VII 69\n", + "Chapter VIII 7\n", + "Chapter 1x 91\n", + "Chapter X 97\n", + "Chapter XI 101\n", + "Chapter XII 107\n", + "\n", + "Copyrighted Material\n", + "\n", + "Found image: https://d1b14unh5d6w7g.cloudfront.net/1427027277.01.S007.JUMBOXXX.jpg?Expires=1685677508&Signature=g0Sxt2~bVpD2m51G47Bq8WUuOdrf8N56bx1MBl2Ktna3lXWv7aKJZALjurzkUlodE9-6FJ0eomFiD2VkXVsd0NXToNZziY7pH8~a8q1tCF4xaL3Kt0WKfkgvqJJaChhIzZxM17sCoQtoyCT2H1fJsUV~hoQLqwBy5bYjODDb0VY_&Key-Pair-Id=APKAIUO27P366FGALUMQ\n", + "Copyrighted Material\n", + "\n", + "Copyrighted Material\n", + "\n", + "Found image: https://d1b14unh5d6w7g.cloudfront.net/1427027277.01.S008.LXXXXXXX.jpg?Expires=1685677502&Signature=J1XQ08proRL27gbvsYedJmqjJ10vDAizdRBv4fwbq7DNf1zuuvc4i0EQr5hpsoJMQ4QL2q0jBQciRU8-s-cVM4CMFx8ccAy8TCgNRZUaMOna1qFC-iRKdJckendibh3~nsIzeuvOgI8EIg0YCPMIjD6XGzUYjyae7mfACkcL~iE_&Key-Pair-Id=APKAIUO27P366FGALUMQ\n", + "Copyrighted Material\n", + "\n", + "Chapter I\n", + "\n", + "During an interval in the Melvinski trial in the large\n", + "building of the Law Courts the members and public\n", + "prosecutor met in Ivan Egorovich Shebek's private\n", + "room, where the conversation turned on the celebrated\n", + "Krasovski case. Fedor Vasilievich warmly maintained\n", + "that it was not subject to their jurisdiction, Ivan\n", + "Egorovich maintained the contrary, while Peter\n", + "Ivanovich, not having entered into the discussion at\n", + "the start, took no part in it but looked through the\n", + "Gazette which had just been handed in.\n", + "\n", + "“Gentlemen,” he said, “Ivan Ilych has died!”\n", + "“You don't say so!”\n", + "\n", + "“Here, read it yourself,” replied Peter Ivanovich,\n", + "handing Fedor Vasilievich the paper still damp from\n", + "the press. Surrounded by a black border were the\n", + "words: “Praskovya Fedorovna Golovina, with profound\n", + "sorrow, informs relatives and friends of the demise\n", + "of her beloved husband Ivan Ilych Golovin, Member\n", + "of the Court of Justice, which occurred on February\n", + "the 4th of this year 1882. The funeral will take place\n", + "on Friday at one o'clock in the afternoon.”\n", + "\n", + "Ivan Ilych had been a colleague of the gentlemen\n", + "present and was liked by them all. He had been ill for\n", + "\n", + "Copyrighted Material\n", + "\n", + "Found image: https://d1b14unh5d6w7g.cloudfront.net/1427027277.01.S009.JUMBOXXX.jpg?Expires=1685677508&Signature=VrfJ-mgdmnFke~TaqC5rBUkvuUhRdn-8YYMNUNysWyxRAl~Moy6DqKHQuHVud-JsWVGhJOSPNEvgKlQVAQTKAQtX3flbc4b-bTlhc3kLM7CFiVpVUaFGWE7lkw2vWLCKjITwwCUBmlzmj9nz-n-FYGjZSvQKISMGzeDFeXEhAQo_&Key-Pair-Id=APKAIUO27P366FGALUMQ\n", + "Copyrighted Material\n", + "\n", + "some weeks with an illness said to be incurable.\n", + "His post had been kept open for him, but there\n", + "had been conjectures that in case of his death\n", + "Alexeev might receive his appointment, and that\n", + "either Vinnikov or Shtabel would succeed Alexeev.\n", + "So on receiving the news of Ivan Ilych's death the\n", + "first thought of each of the gentlemen in that pri-\n", + "vate room was of the changes and promotions it\n", + "might occasion among themselves or their acquain-\n", + "tances.\n", + "\n", + "“I shall be sure to get Shtabel's place or Vin-\n", + "nikov's,” thought Fedor Vasilievich. “I was promised\n", + "that long ago, and the promotion means an extra\n", + "eight hundred rubles a year for me besides the\n", + "allowance.”\n", + "\n", + "“Now I must apply for my brother-in-law's transfer\n", + "from Kaluga,” thought Peter Ivanovich. “My wife\n", + "will be very glad, and then she won't be able to\n", + "say that I never do anything for her relations.”\n", + "\n", + "“I thought he would never leave his bed again,”\n", + "said Peter Ivanovich aloud. “It's very sad.”\n", + "\n", + "“But what really was the matter with him?”\n", + "\n", + "“The doctors couldn't say - at least they could,\n", + "but each of them said something different. When\n", + "last I saw him I though he was getting better.”\n", + "\n", + "Copyrighted Material\n", + "\n", + "Found image: https://d1b14unh5d6w7g.cloudfront.net/1427027277.01.S00A.JUMBOXXX.jpg?Expires=1685677508&Signature=S~pAmxAheXTCpmhdEx0wiixoWXUF7H97uhoKsXjZ~YI9CIg2frcBhOXTYM4rCTlo5U6m~Mi2wP35~~5YN28g32QYAEpAod2ida1TgD7W8uTlHSAy67Obu2fx9ulJiBlNZRoMdhmDlcx89U4Jb0VEG31rQJpcj9vVev3n0eTtEVM_&Key-Pair-Id=APKAIUO27P366FGALUMQ\n", + "Copyrighted Material\n", + "\n", + "“And I haven't been to see him since the holidays.\n", + "I always meant to go.”\n", + "\n", + "“Had he any property?”\n", + "\n", + "“I think his wife had a little - but something quiet\n", + "trifling.”\n", + "\n", + "“We shall have to go to see her, but they live so\n", + "terribly far away.”\n", + "\n", + "“Far away from you, you mean. Everything's far\n", + "away from your place.”\n", + "\n", + "“You see, he never can forgive my living on the\n", + "other side of the river,” said Peter Ivanovich,\n", + "smiling at Shebek. Then, still talking of the dis-\n", + "tances between different parts of the city, they\n", + "returned to the Court.\n", + "\n", + "Besides considerations as to the possible transfers\n", + "and promotions likely to result from Ivan Ilych's\n", + "death, the mere fact of the death of a near acquain-\n", + "tance aroused, as usual, in all who heard of it the\n", + "complacent feeling that, “it is he who is dead and\n", + "not I.”\n", + "\n", + "Each one thought or felt, “Well, he's dead but I'm\n", + "alive!” But the more intimate of Ivan Ilych's ac-\n", + "quaintances, his so-called friends, could not help\n", + "\n", + "Copyrighted Material\n", + "\n", + "Found image: https://d1b14unh5d6w7g.cloudfront.net/1427027277.01.S00B.JUMBOXXX.jpg?Expires=1685677508&Signature=Nx1kL5ISZDQcZXKgVy9077kiiggfEHmQEVdMTLBR8dQNMRswWjeqDCDgzsXKEP8vnuKgqp0HmPIieWqSf2jGSONWgmkCmGfSzwm5l34S0YHWKVXpoUwI8x1AqhZWz59Q1vP97ZGXNZ~vMXFG3af7hhuOEwiGEZmO9~ttlKDk6tY_&Key-Pair-Id=APKAIUO27P366FGALUMQ\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Copyrighted Material\n", + "\n", + "thinking also that they would now have to fulfil\n", + "the very tiresome demands of propriety by attend-\n", + "ing the funeral service and paying a visit of condo-\n", + "lence to the widow.\n", + "\n", + "Fedor Vasilievich and Peter Ivanovich had been\n", + "his nearest acquaintances. Peter Ivanovich had\n", + "studied law with Ivan Ilych and had considered\n", + "himself to be under obligations to him.\n", + "\n", + "Having told his wife at dinner-time of Ivan Ilych's\n", + "death, and of his conjecture that it might be pos-\n", + "sible to get her brother transferred to their circuit,\n", + "Peter Ivanovich sacrificed his usual nap, put on\n", + "his evening clothes and drove to Ivan Ilych's\n", + "house.\n", + "\n", + "At the entrance stood a carriage and two cabs.\n", + "Leaning against the wall in the hall downstairs\n", + "near the cloakstand was a coffin-lid covered with\n", + "cloth of gold, ornamented with gold cord and tas-\n", + "sels, that had been polished up with metal powder.\n", + "Two ladies in black were taking off their fur cloaks.\n", + "Peter Ivanovich recognized one of them as Ivan\n", + "Ilych's sister, but the other was a stranger to him.\n", + "His colleague Schwartz was just coming down-\n", + "stairs, but on seeing Peter Ivanovich enter he\n", + "stopped and winked at him, as if to say: “Ivan\n", + "Ilych has made a mess of things - not like you\n", + "and me.”\n", + "\n", + "Copyrighted Material\n", + "\n", + "Found image: https://d1b14unh5d6w7g.cloudfront.net/1427027277.01.S00C.JUMBOXXX.jpg?Expires=1685677508&Signature=DmfYc1jlrJRrCgosb7NDsrRxXkuXRnGJpKhnFzmooUt1sxY3ec8-2j0I7LfKEubnu4xhnLgAw8a~tNUv0MrZm5y92vCLXESi88mVde9Ah7IiWnTKmF33UISKDhcBJghyghci2uuvbtaUnDNGWlxoi4xfzb5MCD7zL-Wtv5X9oWs_&Key-Pair-Id=APKAIUO27P366FGALUMQ\n", + "Copyrighted Material\n", + "\n", + "Schwartz's face with his Piccadilly whiskers, and\n", + "his slim figure in evening dress, had as usual an\n", + "air of elegant solemnity which contrasted with the\n", + "playfulness of his character and had a special pi-\n", + "quancy here, or so it seemed to Peter Ivanovich.\n", + "\n", + "Peter Ivanovich allowed the ladies to precede him\n", + "and slowly followed them upstairs. Schwartz did\n", + "not come down but remained where he was, and\n", + "Peter Ivanovich understood that he wanted to ar-\n", + "range where they should play bridge that evening.\n", + "The ladies went upstairs to the widow's room, and\n", + "Schwartz with seriously compressed lips but a\n", + "playful looking his eyes, indicated by a twist o\n", + "his eyebrows the room to the right where the body\n", + "ay.\n", + "\n", + "Peter Ivanovich, like everyone else on such occa-\n", + "sions, entered feeling uncertain what he would\n", + "have to do. All he knew was that at such times i\n", + "is always safe to cross oneself. But he was not\n", + "quite sure whether one should make obseisances\n", + "while doing so. He therefore adopted a middle\n", + "course. On entering the room he began crossing\n", + "himself and made a slight movement resembling\n", + "a bow. At the same time, as far as the motion of\n", + "his head and arm allowed, he surveyed the room.\n", + "Two young men - apparently nephews, one of\n", + "whom was a high-school pupil - were leaving the\n", + "room, crossing themselves as they did so. An old\n", + "\n", + "Copyrighted Material\n", + "\n", + "Found image: https://d1b14unh5d6w7g.cloudfront.net/1427027277.01.S00D.JUMBOXXX.jpg?Expires=1685677508&Signature=N4kdRBmVqt0PO5V65v~M5PcCpeRc75qJ2xwikFODSRRbqp4TnKXwbfZqB-iCS3Ev-hxtjSvrRUpiq0cnogqGKSo~CHwgjStF7HB7sJx8L9hzWP15VFfRVmw-tRCChLnkXYqH-j5B0zaPcXucuASOe64PnBuN7FNLC2SOYNQsoYc_&Key-Pair-Id=APKAIUO27P366FGALUMQ\n", + "Copyrighted Material\n", + "\n", + "woman was standing motionless, and a lady with\n", + "strangely arched eyebrows was saying something to\n", + "her in a whisper. A vigorous, resolute Church Reader,\n", + "in a frock-coat, was reading something in a loud\n", + "voice with an expression that precluded any contra-\n", + "diction. The butler's assistant, Gerasim, stepping\n", + "lightly in front of Peter Ivanovich, was strewing\n", + "something on the floor. Noticing this, Peter Ivanovich\n", + "was immediately aware of a faint odour of a decom-\n", + "posing body.\n", + "\n", + "The last time he had called on Ivan Ilych, Peter\n", + "Ivanovich had seen Gerasim in the study. Ivan Ilych\n", + "had been particularly fond of him and he was per-\n", + "forming the duty of a sick nurse.\n", + "\n", + "Peter Ivanovich continued to make the sign of the\n", + "cross slightly inclining his head in an intermediate\n", + "direction between the coffin, the Reader, and the\n", + "icons on the table in a corner of the room. After-\n", + "wards, when it seemed to him that this movement\n", + "of his arm in crossing himself had gone on too long,\n", + "he stopped and began to look at the corpse.\n", + "\n", + "The dead man lay, as dead men always lie, in a\n", + "specially heavy way, his rigid limbs sunk in the soft\n", + "cushions of the coffin, with the head forever bowed\n", + "on the pillow. His yellow waxen brow with bald\n", + "patches over his sunken temples was thrust up in\n", + "the way peculiar to the dead, the protruding nose\n", + "\n", + "Copyrighted Material\n", + "\n", + "Found image: https://d1b14unh5d6w7g.cloudfront.net/1427027277.01.S03E.LXXXXXXX.jpg?Expires=1685677502&Signature=C~N6IWoWQqz6W2puEbfTRKKA5fnKlq7Qued77Y5NEfu2gTdxc-2WvqokWAe-931lt410hlDO8gcRX2kVpxHcdIhKYx~ytz2aqMRzAPrPOEM5cK1Jcbtza9Ho0akY~Y3SruT69evRPEp7yn1kQjJ3CyMMirMWkAPjxqMgw2ZDb-s_&Key-Pair-Id=APKAIUO27P366FGALUMQ\n", + "Copyrighted Material\n", + "\n", + "Leo Tolstoy was a Russian novelist MAMAS Rapanene\n", + "\n", + "4 and moral philosopher noted for stiovabic ee posiile. We elfer\n", + "9 all books in our Classics Library\n", + "his ideas of nonviolent resistance.\n", + "in a wide range of standard\n", + "\n", + "and large-type formats, and\n", + "\n", + "His diary reveals an incessant pursuit\n", + "« of a morally justified life. He was\n", + "\n", + "formats for people with\n", + "J g Exot Sor TE Generoeiy to the reading difficulties—all\n", + "\n", + "if optimized for readability—so\n", + "- PGR ECU Ee | “eade’s can choose the format\n", + "Peace” (1869), which Tolstoy regarded as an epic that suits them best. See inside\n", + "rather than a novel, and “Anna Karenina” (1877). [iaaiula\n", + "His work was admired in his time by Dostoyevsky,\n", + "Checkoy, Turgeney, and Flaubert, and later by This EasyRead Large\n", + "\n", + "Virginia Woolf and James Joyce. Edition is apumized for\n", + "readers who need a\n", + "\n", + "A masterpiece in which Tolstoy's writing prowess dard 16pt | @\n", + "\n", + "reaches its zenith. It focusses on a subject close to aeaiMNaaaMialiba Aaah Aina\n", + "\n", + "human life - death. The issue is introduced through\n", + "\n", + "the character of a high court judge who recognizes,\n", + "after death stares him in the face, that his life has\n", + "been pointless and devoid of meaning. Moving and.\n", + "\n", + "insightful!\n", + "\n", + "9785142702. 727-6\n", + "\n", + "Copyrighted Material\n", + "\n", + "\n" + ] + } + ], + "source": [ + "import time\n", + "from urllib.request import urlretrieve\n", + "from PIL import Image\n", + "import pytesseract\n", + "from selenium import webdriver\n", + "from selenium.webdriver.chrome.service import Service\n", + "from selenium.webdriver.common.by import By\n", + "from selenium.webdriver.support.ui import WebDriverWait\n", + "from selenium.webdriver.support import expected_conditions as EC\n", + "from selenium.common.exceptions import TimeoutException\n", + "\n", + "from PIL import Image\n", + "\n", + "\n", + "def image_to_text(image):\n", + " urlretrieve(image, 'page.jpg')\n", + " imageList.append(image)\n", + " print(pytesseract.image_to_string(Image.open('page.jpg')))\n", + "\n", + "# Create new Selenium driver\n", + "driver = webdriver.Chrome(service=Service(CHROMEDRIVER_PATH))\n", + "\n", + "driver.get(\n", + " 'https://www.amazon.com/Death-Ivan-Ilyich-Nikolayevich-Tolstoy/dp/1427027277')\n", + "\n", + "# Click on the book preview button\n", + "driver.find_element(By.ID, 'litb-canvas-click-wrapper').click()\n", + "try:\n", + " WebDriverWait(driver, 600).until(EC.presence_of_element_located((By.ID, 'litb-read-frame')))\n", + "except TimeoutException:\n", + " print('Did not find the iframe')\n", + "frame = driver.find_element(By.ID, 'litb-read-frame')\n", + "driver.switch_to.frame(frame)\n", + "\n", + "try:\n", + " WebDriverWait(driver, 600).until(EC.presence_of_element_located((By.ID, 'kr-renderer')))\n", + "except TimeoutException:\n", + " print('Did not find the images')\n", + "images = driver.find_elements(By.XPATH, '//div[@data-page]/img')\n", + "#images = driver.find_element(By.ID, 'renderer-container').find_elements(By.TAG_NAME, 'img')\n", + "for image in images:\n", + " image_url = image.get_attribute('src')\n", + " image_to_text(image_url)\n", + "\n", + "driver.quit()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## CAPTCHA Processing" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": {}, + "outputs": [], + "source": [ + "from bs4 import BeautifulSoup\n", + "from urllib.request import urlopen\n", + "from urllib.request import urlretrieve\n", + "import os \n", + "\n", + "if not os.path.exists('captchas'):\n", + " os.mkdir('captchas')\n", + "\n", + "for i in range(0, 200):\n", + " bs = BeautifulSoup(urlopen('https://pythonscraping.com/humans-only/'))\n", + " imgUrl = bs.find('img', {'class': 'wpcf7-captchac'})['src']\n", + " urlretrieve(imgUrl, f'captchas/{imgUrl.split(\"/\")[-1]}') " + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": {}, + "outputs": [], + "source": [ + "import os\n", + "from PIL import Image, ImageOps\n", + "\n", + "def cleanImage(imagePath):\n", + " image = Image.open(imagePath)\n", + " image = image.point(lambda x: 255 if x<143 else 0)\n", + " borderImage = ImageOps.expand(image,border=20,fill='white')\n", + " borderImage.save(imagePath)\n", + " \n", + "for filename in os.listdir('captchas'):\n", + " if '.png' in filename:\n", + " cleanImage(f'captchas/{filename}')" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "1535080030\n", + "Captcha solution attempt: X9SU\n", + "{\"contact_form_id\":93,\"status\":\"mail_sent\",\"message\":\"Thank you for your message. It has been sent.\",\"posted_data_hash\":\"2bc8d1e0345bbfc281eac0410fc7b80d\",\"into\":\"#wpcf7-f93-o1\",\"invalid_fields\":[],\"captcha\":{\"captcha-170\":\"https:\\/\\/pythonscraping.com\\/wp-content\\/uploads\\/wpcf7_captcha\\/3551342528.png\"}}\n" + ] + } + ], + "source": [ + "from urllib.request import urlretrieve\n", + "from urllib.request import urlopen\n", + "from bs4 import BeautifulSoup\n", + "import subprocess\n", + "import requests\n", + "from PIL import Image, ImageOps\n", + "import json\n", + "\n", + "def cleanImage(imagePath):\n", + " image = Image.open(imagePath)\n", + " image = image.point(lambda x: 255 if x<143 else 0)\n", + " borderImage = ImageOps.expand(image,border=20,fill='white')\n", + " borderImage.save(imagePath)\n", + "\n", + " \n", + "def getCaptchaSolution(hiddenToken):\n", + " imageLocation = f'https://pythonscraping.com/wp-content/uploads/wpcf7_captcha/{hiddenToken}.png'\n", + " urlretrieve(imageLocation, 'captcha.png')\n", + " cleanImage('captcha.png')\n", + " p = subprocess.Popen(['tesseract','-l', 'captcha', 'captcha.png', 'output'], stdout=subprocess.PIPE,stderr=subprocess.PIPE)\n", + " p.wait()\n", + " f = open('output.txt', 'r')\n", + "\n", + " #Clean any whitespace characters\n", + " captchaResponse = f.read().replace(' ', '').replace('\\n', '')\n", + " print('Captcha solution attempt: '+captchaResponse)\n", + " return captchaResponse\n", + "\n", + "html = urlopen('https://www.pythonscraping.com/humans-only')\n", + "bs = BeautifulSoup(html, 'html.parser')\n", + "#Gather prepopulated form values\n", + "hiddenToken = bs.find('input', {'name':'_wpcf7_captcha_challenge_captcha-170'})['value']\n", + "\n", + "print(hiddenToken)\n", + "\n", + "name = 'Ryan'\n", + "email = 'ryan.e.mitchell@gmail.com'\n", + "subject = 'A very human subject'\n", + "message = 'A message about Python and other human stuff'\n", + "captcha_solution= getCaptchaSolution(hiddenToken)\n", + "\n", + "form_data = f'''\n", + "------WebKitFormBoundaryBFvsPGsghJe0Esco\n", + "Content-Disposition: form-data; name=\"_wpcf7\"\n", + "\n", + "93\n", + "------WebKitFormBoundaryBFvsPGsghJe0Esco\n", + "Content-Disposition: form-data; name=\"_wpcf7_version\"\n", + "\n", + "5.7.7\n", + "------WebKitFormBoundaryBFvsPGsghJe0Esco\n", + "Content-Disposition: form-data; name=\"_wpcf7_locale\"\n", + "\n", + "en_US\n", + "------WebKitFormBoundaryBFvsPGsghJe0Esco\n", + "Content-Disposition: form-data; name=\"_wpcf7_unit_tag\"\n", + "\n", + "wpcf7-f93-o1\n", + "------WebKitFormBoundaryBFvsPGsghJe0Esco\n", + "Content-Disposition: form-data; name=\"_wpcf7_container_post\"\n", + "\n", + "0\n", + "------WebKitFormBoundaryBFvsPGsghJe0Esco\n", + "Content-Disposition: form-data; name=\"_wpcf7_posted_data_hash\"\n", + "\n", + "\n", + "------WebKitFormBoundaryBFvsPGsghJe0Esco\n", + "Content-Disposition: form-data; name=\"your-name\"\n", + "\n", + "{name}\n", + "------WebKitFormBoundaryBFvsPGsghJe0Esco\n", + "Content-Disposition: form-data; name=\"your-email\"\n", + "\n", + "{email}\n", + "------WebKitFormBoundaryBFvsPGsghJe0Esco\n", + "Content-Disposition: form-data; name=\"your-subject\"\n", + "\n", + "{subject}\n", + "------WebKitFormBoundaryBFvsPGsghJe0Esco\n", + "Content-Disposition: form-data; name=\"your-message\"\n", + "\n", + "{message}\n", + "------WebKitFormBoundaryBFvsPGsghJe0Esco\n", + "Content-Disposition: form-data; name=\"_wpcf7_captcha_challenge_captcha-170\"\n", + "\n", + "{hiddenToken}\n", + "------WebKitFormBoundaryBFvsPGsghJe0Esco\n", + "Content-Disposition: form-data; name=\"captcha-170\"\n", + "\n", + "{captcha_solution}\n", + "------WebKitFormBoundaryBFvsPGsghJe0Esco--\n", + "'''\n", + "\n", + "if len(captcha_solution) == 4:\n", + " formSubmissionUrl = 'https://pythonscraping.com/wp-json/contact-form-7/v1/contact-forms/93/feedback'\n", + " headers = {'Content-Type': 'multipart/form-data;boundary=----WebKitFormBoundaryBFvsPGsghJe0Esco'}\n", + " r = requests.post(formSubmissionUrl, data=form_data, headers=headers)\n", + " print(r.text)\n", + "else:\n", + " print('There was a problem reading the CAPTCHA correctly!')" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.10.13" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/Chapter16_ImageProcessingFiles/.DS_Store b/Chapter16_ImageProcessingFiles/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..5c27ab8e3f6a66f83cdbb000779e839accc4cc97 GIT binary patch literal 6148 zcmeHKK~BRk5FDpHl!8#ji3?I*5D8uoN;z=m0fn?x1w<)=R^pgDkKr{uh7-)%OO>R_ zfeS)tH`*P?-m#O36UPADcr!l*MgRtM!Dx@6#iU()$0DtfM(6ujpg@9qJYu<%Z54k} z0eN;qJm3y%9+l^Jm9J)5zRK7xljDt^e0pOEII3}`$dF@$CmsvTzvn=skMl+!13%(3 zW5O9zU|G+1C$0G}UHQ>_BY)`om;5QtI>vZya1JV*47dJX+OF-R!5dY0GitFQw@@uw z_>sIHRXq>4{1tUvQxAy=o!4L2rFYTb^3==}Fa=D3A1S~!TWqi&(4r||3YY?01?2k> z(*;w-GNAu-F!(J1vCnF6EX(hraAL(&u?)x-nhR87pgP@RxIkxpta+(o88Fb{bo1eK zWT!h6=SOG%u}_Cf16ni%Oo6%ry>L2`_5ZSa|6eEBnJHij{3``qe{ww;^OkgN-MKkg uYh(HiT}<-IfLjU+eko?IEXBukZ>*1{Kui_OfUKd}kARoKf+_H;3VZ=eM}o5e literal 0 HcmV?d00001 diff --git a/Chapter16_ImageProcessingFiles/kitten.jpg b/Chapter16_ImageProcessingFiles/kitten.jpg new file mode 100644 index 0000000000000000000000000000000000000000..34dce693aec42659ce6ac55a751338d575e95524 GIT binary patch literal 384086 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�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%0Dt8wX_MoY`ZQ20foY z#kOdTK&tG#~}+ zAobui@t9b&zEBWD!?87 zLGBa#BFZX~BRkIxa&-O`XpBx14D&`Ze@vq-jdi4CWe1-k=ZKIQy#2t5{dq#4&GLT3 z9>|j&^)i2+>6TVJpX@-rfS8R+{`sl@~^mMn`k`fl7a) z?W;GDwCYXEKrp1o4q3=s&~>`4X4}kw$Uq>~6!ot|m356Ke`e|}+L`~G{FC#&g72N* z>-V`Qozoz4N2<9|0ZsFILic6#AN0QoLPP=4*3&%aCIsP20OI)$!H$weuVBxHzVtOt zcpLJC_RqvpkVTjF`cUWZCwALj3Xjc@;(z(?edg{qJ-%ggF9kF`T{VircWnG^Hz!C- zpt~~%^`a&fZTj=8;`BDWn0>PC$P-m$wd3*h$wg)YegYr;`wZ{-a^#NAO9^h#!~zzA z?;w2nt|HuIjinzP9wrLK`eZ)1WU1`ZBy;`FyH@L7H4(XpS{K(L6-yz}*!3fc6W#tD zHfa8(%S4BoJXwHaAPP(_4yi|KmjaCp+QPcVs!-bLnQ&R;t$+OiF_x$KNqxxZh*9>Y za0Qd;Z!w66ssX{YKzwn>pL=CUe=D|w*Q^3=L8B?Aubc7Yh9-Ns*if?1jC#KMqWa2q z$TL$v@WX;2A#dfak@TJuJsOg82@X4uM5|{NR>`j25ye+G@|8hV3G(@wqwhT>#@{h{ z{;|q_h~a*+8RZHn1@*`g9YfZ4Ha9j9)VaR-=FQ(rCr0U}#bf_^ushF5s8>{aTnLf! zj56uX4yUFjq82mb@(4gB(u#F<+Ic;uI$R$BDqFkvdKKdbI(=jtpO-bzPt7+FUEc#+ zt6JS~&l;X&&M?p+Qp0aeWkVU|(deQ1%gJM0P&y&;-pkX_GP-<_!bG|gMnWKprC_=f zzOm4o2_(oEZ-n`>O+S2ilW*ByG|-?&+=Nqq%07_n|BO%m6|&~iERgziy4uIODy*PO z*5~U_MF~?j?#bEDcw0_``)^{3_T1HJzIownlG<8WcHI}0fMgV&oeW4wkz%WMVlkPb zBt1&1zuzM|NJqyp+9D^y_-l_33|-dat8i&w-@4lH>_+P~X_+whkGI_VndLSqVZPW6 z(p2>*gc)_l(jv!Tp<-7$K*CzK`j+Wg_bhMm&I#V!^SZw(zE9>_<1{5E-B7ghX&~U= z{UGYg8P!9rE%n}+w5(oE0E;7BO|cAsPVO4T#*z+CPWd5=1e9jz8=1HlvN{d({NDWWgk42T+ME(2z9=9Wgtp=p*~Bk%Lp>xxeF>~0W?)H6Bgr1w9Pw_fgK z0sfJ}1>Co>omM2kO72K|R5OO1QZUfI2#RU4w)xryC||+H_7Kj;x~^%>4wG>I=B2$$ zN*z87hFt#^%3z-R#BeHF`CQ_AjfMEMDVhVkUsH7t>v=eYG(R83L+Te79*~^0l#6Du zb4JVl&-q*jyiVqQe#=lSU4H}tAXCn=)M$RsKn>v?0nu8~0_GNP!R2@Ky}EP&T{X|5 zXUwjK`;X-uj__kz<*+r-{iV^m0SV77K;t>ZI#}LMP_PFkR!i3mdt5mo9V5XdF)(kb z8=EVCteyvu4MKBG$>?db0N1AWmBTqB@Fp0}#!U){y#%&V2T;N&fV(1Map{CZZ6oN4 z{{o|FPOpj`MHsn6Xfi|vV?Y0FwKAX8ry2JD+1w2m#KS?%e@=CW32)H$fbC|oQR=4~ z^m1S(nV$dkvCmX7Hk+n`09LJV;Bd&?u;K-WKX+v~1*AxiXn&H~VmY!4K|36x$~yjW z+rSsm8UCWyAW>xRvCalNDrX>d`S7#WkAENEXcf+O6WKUWvOHX7%+Gdhj08=+m-@6> zmg7JC*r#VFMfO(W;t+Yi26SEowk;Z5hv#zcvCZ1#|2M@O$G4Yqqlaq@bZu>&U(|Ab zU1-&XZ=!v?j*1dAo5q87z8^|A)qrMG3(Wl&x}q(M z_6;0v2K`SaSuubfc46g+Qf_pDCTAjmX|cCqPdThqUW8v_YYBc)U;_vF=U8^azS$If zv&VXaNgzH{^zSxo6I|F8;xN*AW_8ZAPQ)bKjkSO3Sgy)za@=H|9kX|i13oSs*b=(H zVDqlPAiyMm0k=H-;YFpm;KEEehwyl?AagR|({|DSEuXnF94&^d9=qW@$i}84kp@g( z*ooLMPkd0Wg3+xglj-qEpM&s#9)s-KV(3+ae-V%U1Y!{}nR;((1S^SV4zl~4xnuj* z@UH{HZBJ2OYVl9`QeAJ^zX)hGkZgV+eZSqiwr$i2H>!|FWnCI-ldXTi3~^S+0d@BZ z=0I_K{r#!rvH5%6m*3`{_r9E*n)swhA{Do4T!?{t5_{6pPmiD9~=G>Zz`w*R7?QQuzEc(<#Xo$0yCLmlhCz7WTyvI zzJE`~$*6Jt+lhkv$Ku4Slqe08YVzv9CFKD6oAJEk(~R#Hbm`^4$sMQmtwuj%9q+Xg zPk0Oy{!>%0EEeKUT8s}JB95G~jp%AWbiyyp-ivuP z{ifJXFNvd)u0wfWip4d*dhVQsHV* zF)XrZVQ41$>kEcovGd3fv@-krim$K2>%t_l$q(zN=F4tzT3xwh$87+;(sJNCz^bWY zS?OAd=H57$bEmkx%XKWu_3nYuuH{;Eljyb8nIy%SM!4H}!>G^GXWrU5gcLT{fG_%n zraZ26D&dN(R^iPB-l}@+Cn6*x&J+@4f)lEq?2$l87R;?wlA<~sXQD#ln&>wj(kszD z0))I@$k9RXJ{lRKwn^XBFk|<;wp??FrmGRM+xT-nGo(+9{x}`NU~cm33p9ej=6zm+ zt{PPqX)by7<0zS0b6*)1%Z3PQDLLR>nmR#i?6sLb6I(Y%i|+ifihZ$_!|704x9cb0*iz!6~v2P$d{m%HD{RqN2>qYAu`K7x*CmM=g(z~>E8uG+gnrSPb-5@&r6lV6q zm^WqHRV423e42t!1gnPPGxP3<9XGDawud=BX>ZH&K6ToPe|!-R~AM9B6P+#P#2 zklC(TJ|2WiKrbU~5MAV2AY)7HeBsbIp+@MHcl~2VNccfvfJxE_bVn$)stp?a*(5u* zBSc=<_We$|ta<9q_N>^QYO8iCwTAQxsAJE@3*mPnyVFB#SZO51yeNm+rc8m%9(wB! zlECc%7`(W(xI3*h;JA`cy^RSe-TBW{{BpI3uVhjqLp;Gk_Un^Ja*w5y6VIT8|2eWuuh2pw{k18}YUrhB)qsod-GEgGopQi?|{&dwc% z;3IC2!XkbAXOx6xWlJaiP>bKj47Ba9J6cyQ?6SFob+eyLp?a*k<%g$<0OH`Wtxj?F z`RH}CO(OlC{MMT>-&N-;%1j)lW)&0&tF3#=Cvj}2w1LNYODH}SC^h{goI7hQ+h^wt zJnUIFiG9plb%4By{-w@T&%Z#p2yqg)|I{ts#wzd3*a+A~tBJd#wgaZg={wProNINa zveXj%bIh+OM>lz8w`%Y=>J&LukkRGt-rzYN{eyO9UPDwCKs~S(bbnB!j(t_~Es5>= zHx3(yrNf`fzx?j(@~vq)rQ`Hb%l02#g=!xgKhMyHpn75^F`bl?=x%ij*|!bT3nmUB zn)HX(x(F%Z8t>l~2XAZVqVm1i!hLNqvTy1Js=>FHwqrxC4sEZ28SBE`r@7>g^9^@} zIT_!v=02;p=P^pj)W6>$AF&A~GHDiDZhHhgF3z_OJiIZeuszg0d@!=}L(h8zS`)6{ zUm5$8E%wgRM6i=KB)0l-47$ISr@bJ-OMFQ&_R6V{tiSW-h0i?N$|if3Z&{rxL!q6^ zEnZ;kh6av!H`)1aj4^{q6J+#WfS8afYBgmiS3adFvS=*cy4krhnyX~!)VnP7Jca!6 z2s~f+0=T`56QUEqzZV(hZF4V2(p}SeSautqOe85<>*Ni!Tj{ho>n+zGEV%E6^d97~ z+~MPvo=w~8`1AA5j?uaxdU4?UC13P_yh5YYWIj*A73&=L$0gT@P>N>C%csYF83Zrj zbL_v)*R@65i#4a3H4kq=6hD@>D8(kQH-=66Q>jIz)@1A)q(v4c{!5HEzhA!Zl$@IN z`Jo5i&s&2u{;I}1T81iAD=xlQxZ@tfmo(PPrTNz4N5RuOKK!<+Pj62LBO}HvTj}fu zod+?2Xd#>J%%b|0@~q9}r~o$EpSBC4=fy`|Z!J*yyZdg)QWUJre`lf*Ec3w5?zLs+ zEs?wFJNLAe@02J0S+wPT4`@&b0b`YPgF37n7w_bl}8iLsEYRCztVd$C~#-7kpV9%uJcVgtxg!U3? z`E!ic3xjzPR%^UoJl}% zEAB-!&<#0b8r{bCEjB{0HP-g2HemP{*P0cwINz{`Ltv$Y;+~yGb{7kX^kd_E-D7k8 zp(O#?S0XB)+q<@ij2_iFN}OnRm+FDU4!bO}cTMbj$a;kM>QX#m8oN!3Ve=YK#=@nS z9yfwwhvkp>mi>DUG%c_8wxdJnhCVwaAiE^MsPU2|yaE|zR=N;H-BLrfX{*>!`k{s`QJB4pOOk7WK z7UgJH{)C^#hKH91J%^zXs|wAOZACAiXX$*feWQ7Y*cv(1Hwp}LB1`Qw{`KGw+bZ_b`ruWUat%K~xOKK8h=~h&h z`l5DK!VLvmTtP?2dN^YkvVcxusitx3^IY)0)BeGIf_A~hTdqY1D(3VybEoGd^!A7Z z^80#&OwMxQxccodg=$n87E`ml6f|An$i~jCx2V~>?ZVt65$9s9d)j$oX4VYe2N7(! z9c05Ipgx5)sS=f84(XTv&R@*vW4v$It?5zbJQC+|Yuq%BLErNZQ_T4Wkks?GR{>9Ni>O7$bFRP9Ep89|LOy0k;s(XwBXGQ$K?J3R6j2cS(i zx+?_k+_0=oS4|4 z_I*CD_Uu^3EGeOdx&YGIRDNbyDg@AW5(}=r~jAttvtC zA@Psv*3{YnHAY318vQ&gF#g8AWxxO+ODbgsPVau^p-Gd<2Sj zycfE>>}LOH8*(k=)JS#(pQOW^M^4pW>J~R0$fiDHZ5lHTo6<(A73WZDon$;Fd3Xgv zq39l&fRipnn5}K45;Aa=tH1O``U0b&IkvR#%)9F#FO0}W)Vi61XKhY@(YXPhxHulM z+=8YSoRjPF55?ADs;#4Gt==sA2=ueqQ>1k4spH z%I&I5kPPcW6#xS5w77PX-sQb&3)d$N1v-KE$R9!hDh z4(`w;{~fw}E)OmEa!jGz<3bzZV}Xg_nejOIo~wv`u?!BPmczorBY&?}J#~9~sux|I zb^u5r4S>J^N7nUpXIOk{T<}JYjxnyb4>uS^NxB_WY#Hhba*9Jgtf`R+`PThF=6X&i zKLukWL0{^?H3HRD1IW*&qIBhyl`h8rG7uG>%y0ZdRYZ^cRLDVREUq~B8|31z?YIsy zs=$x6{G|L828j=^cRw@#B9{8=M`6xLRvh*Treq$-2+i@s6D+^Vwn*!(kkDH@d2+kd zJ8KFgI=qyt)JIS1u1R%&Bcu%6lq2)QJ-Rcxi70Hl=>Czzz3%8gsEV1Y8ly=EHCZ!q ze99vabJiofODtzuy08nbYWaIw7@zqoKwvHp; zIFuUsWbVzRz{q|Z)U}JuF6eWufDlUt+hR>cL9I>g=6IrYP0aRpg~2jn7adA5dwyR+ zTP-DqZ|z4RysgFJq9y3-wCvXgXfLU0FiLLd)?4-AblG)(ibb zrh(+bM&@33F`5znX1y6b{}|NvC=K3azo1=B`DP)W_N1j4?ZKyIpo(19i#bbCyJ;Je zqDl=O#qQ`JAPOa+F%{lwYT)Z%up3nk`^1gbEqT5)Lt!CYd1>U$q#?3p2JZT|#D*aM zh%s=zteEYnQX9Q4_p;@X!U|j-Ha|+jw)Q8et?#c*fn>MV%^+?ci39SRnuV_@4`%wG zfRjh_?fjs%B7X*z#!2`35Hwv|s9mDGM(_^e%axguy_vGK4pP{3cJ^sFH~d;(vaoW#iyD)~KML56zS*VmVvBr-=pcl&NV_|TPq z_M%;Ux7}5y=kfa!x4MbnC=g1Ihg)omoG!-h4&ZRn|GITk*PwJ>){Xa`ryaT9+_#{r z4qhx*d7KA!5jNItI1+Nzo&jZj zhlQ1T@DlB11c0DV-ynz?|O;(Q{Qpg9#gWr+JAcRxJYw=5Zf1sc1EBav~Rr(xj*^cz=^&rVvIa2ykT z!L!OLb$35xLzC9OVcakNucOiWSQ-EoAY_iBRN}+`ABMT*{KCP(wighXf=Qh`K;t7I zQWE^NW|4^i1B%j@_5~QgKVANU&(Qb(+vt1h^FGN2@oZ#%Dq_aAaRMySU={$S67>I} zhJ6~qg&?bEvc?=`wAE%fslWvyU>A``sS*A>>~{#*Y+v8n+5&jo+hgGzhhQ%}r@%wr zC}*IY%TPODKGNU_AS-S1${9Z7u!jVa%Hk{Gd!0LKEp`yjeQ75Qz!c1_n<{DX|D#Ns zKVsjJ00Y8n_^s>oRFA#U`>@hhwx8*_hKKzOa36VG*Od?l=r+ za{uGV6jf?59aq|9bQv{}11&M7hS}qjKz5=*j~gK6t3lPfyYg-VTR`v@yJ6D+{m;3R zrUtXD>C*oRvq}5_$7Y|(Xxh@+J_cxovk_afnLUt&je|3@shIP}^loV~UU3?{HI?5! zISgEa9QUGL&3^Q6;h4oj5F4y!lxI{PaGJdLMh|F!u$_}6Qqjtw0@JX?kUtzG_3Lb; z9B|H<^LYIbpK0ar&kkZm`cvwC1J7{I_K5Gd0{i8G z+jB?ANvwLYr+FBu@={>*<>SXbGXnvE?VlGAtG~K&fZELnND?Jsf1jUn6Fqo;JkQ43 z!ux1I_XDC#1B~cK5%SX&v^89we)n{ zUPYz)xIa8MLCh94Oh&B_k z6<^IExH)8?Pq-!RboCfbaF&+a$cD`Jp>y}I@_J?q&yqC7X4gtB)t;TZGsg*-^Z|XY zQ~&X8t+uNP+VC^~i1gguI?&GiU)t>cOHTTc@1mqUgXm3^l>5jDJ&qks-NXjqV6{QO zEf+YLb&j)>$=~+}R~U&K2e%Q=PR9k!=8jAnr0J8U{#?Atvpzd3{<5_@@`xS}8oTZ= zuUZcNHsbE}{o?7=kKbp#fB*bgC)V6AE&LzH)vU@BbzA7ge7fSUFqu{w)6EFaMlhJh?p#T@xqgT)aO#XisEUS|;?XwWZLW%FZ!J z47atjkD#a;=z$v&Bq%SUyIGffrT=#${%U^f)t7mY7UjK?kW8vW^*XzuYMW1Tv7mzr z!diDQx1wzT+kUWY-u0oeS+jx12?BI}YauV{g-Rajcl}1mydqjgrV>Is47`oh3AF2> zD3y_?5=U49789$}@*5OH#IfRW4;^<^A6}%4@W?N%2}Ak`^8z@JE)=j^;=Pm?q7c7 zrN0Q@VQB)H7J%UVEHGVcQcoKe2dZ6myKg^q{!U^0+DO>v*KfYdCb}A&gSN;Mv`=;% zu3l0@udZoOB>RIxG|jg3abk)eQ+cCEB7`UFkk4Ivm?vXNuq4O$2jt~f3U0_| z=^Uv1qI77>6(sSNcb45MKf=MRM!ihYFQ)>b*gMtK$n6!sUAG@Cx0U0q%MADLEClA4 zXL(}~V4enjF~;Rg-vmmg#;ZoPNidJ?%VqJ`X4(!}#XiqRj;M8KNl?uEyc9hCO5l+9 z;`x5OxO4F`)*`S$SSdfaN2@MjIDrdgnG z|Lq#HGiMB0XUeoO_#6EK7l)m_lItV>#{Ij-J1}A8+vTc1H9BO5D}=~``L;q}u&uZF zw~c(0k!mc9iM%VjinapB-^(STUJ( zim$+JX~>esow1AzlbqiJ&686LmUf%54TCw)8KeL|XTs;c{R{noC1*RhSu@oju*BP@ z_@Q3dZ zv@gYLfiXg%)ZSvo7V^#4x)3!2_i;JHqk~>xJwT~182Pj6Qk5>&*eCg_XfM0A@<~Mt zQuL~E;8zES?t+|)X$60ST(1{)f!1sEbMqJDa3Im?VW2zDMZ+6Jg}q??E*(sI0!K57 zV;9@h`!1HwG3>A&`ktycC@hY37k`-{Gk4>|I6HO2p?b{=NN6)nl?ce~HwlJJO8|1N z?beg00xHkcq#WTnyE^sz=Xc#!rxe42Z&f#hbN(G!D_kSxaPZ@E zBhG1`3Z*T^Qym)}8lOTf;$tgJ%VEHqXvlK<7=%^zo+})!rkw1;*aDs|6bSPhLV1r0 z9#IZ@Fk-j+w&en6_WdHjc^TuD21zm=6>6nHHBVxfHfR`y|YG zis26U<^Fn0C(&&7U9o2hQ*&!W#uxQVpfzQ(fwSdslX1T(Ds1df4bYa3!ZEU?$o-J0 zU6@7v(fxhMH^(wY&c?m3JjuMn(p%l8GC})dbJ0^(uwd5J*?e zo60nYjYCh2ck!KADPop=GLjo!Jw_N*QS>wLgQ)bT+rcD2<}r0I8a&B?_+z_b(-*m; zxWm3<10q7JlLh^9>i7;1br1DjrPU9{NxaSYRJD}w$jbXD^7uf0n5#*m3B=n94ic&J zL+=J;>x6+$_=8y70cNMygb>0#{^5YCb2TO8+ zkgkJpYD)C+?n1-1SxN&K_{Seky<>2Aknv#OXkEw+QcuiM30cKG-C)&Zg-Xiyf((*iHB<$8gAfcoM?fcj>%5vH`$-LjIQ;~1jLvHRhou-B06)?c-< z&kS7Lk}yys8IxUeeEPpH<9=|2JFcQzh3}3Ow~b&l6wfZ$M)E`?CF36rA`)fq=yV9^ za=$cmG#)y+=l)j6x6$|M{6)zeI3hs#Kej?vP@iFr^&rxxYZge0|H!CY3+^<*?s}}9 zL~(;bD3!L5oE}%FkY(p*tGT(<4CGT~{R*2`G@4hOaK90U(fc=A^ zcJWmim82WDImR}3sA3yDlgx+k$n{O??$=4=8RsFf+#)T?Z&pO&<#zO9nKjgvwJ$$1r>PxBXI}0Jf_y&rOKe*ih0}srAztpw< zHHeTmEvGzBMljn8{l?n^c7FP8;RNpFP@%U%2B^U|%2uPsKS=f4A!^r5q8-yUQh@rr zUnhYo4nAP__3OA3V_mnSJu5a{OYxS!Jt(X(`dz$=!Wr|Rdq(Xg4){z%qA6Sm}AgekOOj#jVcb>LNsUtO~Y~XxM)TWZeKiI zq&Gz`L|*4%k7p;@xWlgLh^cRkr8+r1$;%yIHplma_;V?HdH7HBGTZ)`Wa_+44H<+L zz6p}8Lwcqsv6AxNnWr6<_iorDkHE+*(G0vTHpI(B#APSRwm0e}LQ`o9$>Xy9>0?(V zk@j~DHl!{b6&YZz`_gskv0Yq4mg9W~-+npcGYG}tb`LE^u>833M~BS6a* z61zbrp;Xs(U^)&uM;697LgXz+6eQxnbrpSH5g(pbM@vuk7xz8~OVYn|loTH#{XB96 z2!m$qmnho_!1x8rM+k!ouXp=^!ybeaKQS{H2k01pT+&@q zuPBm|{eitR5A|F;mUPccuFBm-pm)8te0!LZ>8&R9YV<{D zKQiuuj}M|U=DY%6g?b3*O{-r2>~xa#974Poh|wEDo^)` ztg5@d7p>^}7tdEpTY?mjAhWm?5@RolY-^~liydmuV}Y1d7DxF4Bj%$Q*zZZ?X)5b>iSq7ca~R8UG&By?C0Yq6^kbjU!Ht! z+=-3VC;&K^Oq=s`vN=oE9tkKED({}8-~CaJZLjS+mDMK6 z&2{mr7MLT$Ng>B9y`2cauQvQ#!X*kC4q&&&!as}~O-Yvi=8uSY03X=y?PT2EBevUhz-DrneYGI zQVjsDw*YU$=zK;JIczWlmbh<>?Q4pMLB73UKJXH`RIJ=7rm-g8H!_S(bQNUl5_id? z{jpT@A*x0uBUFM2z)hyK$xwBc1mfm!Fc42oXZ^>PB;;8zPvL1m9l)U%pj+6W`{&bu z<96+2H3qu{NM9e$gI}AKkD!`fKdwG{x$sifzbrzi^XdDU83(eXZPiMinWgOs?O%qr z|3ueMA_+SDbqfi7jZ7fv5SUU}e%r3cm2Pmm9Cztn(!n2)S>}^8<{0w;OCkJ) z)#vy39{rMaZr%py7u9s>pc7x4s`>F zZ!u3Na}(Bu0Bo7@wC=)rehBv9EL(!e_#;9a_?O$qVi65G2ZP0UsO-N1*2w`LwdwRP zObvpO)9t0{DjmCwex0QM*z87+XnKqfGbhv*0$8HVX9tvO_fod&#rFL$?Xc3V%x#}T z94PxFO>UEoae%{vfe%c)c54&fz>D4vV)P7i^u#oKE#KG;=mn+{!0Gg6+YesVoQ`X= z-(dKFpa*+X$X0Xl*0iSoG*;Q~fCkt9;<&`!vjcpyFCR$A1~zi9i(UBFw9dSc=>c>H zvI_jY=Ewgr)JKO1tD-)o{reefS>HGSrG5JC@S`pN*KbRorF;CuyQ0$g7JeSz>efdQ zZn5I!m039Z^+P5?^J476T7CeT-pd-ziJm`2xerM32Ig7Q zoq@+X=r*Ymnl}0>+u zIRC1p&gF|fW#WB$&+1~uZbjc$%&}`Ii)Y4KnTo&ppm|1p*5pxe45xC+W4dSU2J36l zP}o-&Rc}V%n%p(Ao%L-RQhp}(wZ$}|cs9>YTJ6YT_kbreF^^5>V{Q@%CY_~QyB@XC z+(2B#)|{HxQEgj&Y2WK2m&$W{o3NcWMxn{VX$BD%JOWhnQe%itRPd+A6Mz zURtMAUb{*Gnu&TCH_tSBsDu}LP_6rU(570@qw-8)dJrxLejLz#x0v9}#MUDf?a!l! zR+OFGKhKtNf4aLRtVCGF_nXJ700WA;`fG7>cyY5hz-Un1IS_mpLLal0th^-ech>wj z=X_{kZFI;Jqc=NmON|TM(Uz9Q#oMTPmXm~w#ig26TA?SfPwS}F3q9IrcW+El5 zJY*`7T=u|qO!U}p1SrhX;o^I#y90Ao;J2b<^2fdjMZS#8i1)wNS#WpoM-mJrYlV_l z#+{!HZaf`0l*THJF|aSn@h^-Z>np19Zm5E<*HUKt zaRvKQyKkp;c&GyJ!%ATJllJ`gJOYpfaOlN~x>Z8BT)nQ#`9`utPN!CS4$SKW*RwAf z*JKLYFI^p2Eyytp%&%TSTVrqqQUdvpVv`Mx@aFv#vd%r7mjBpJ)>}*oQah37eO2$R z#c`y7tK#(EZOS6~?+7(7Mop58kdi^7&3vx~6D!JN#j8z!{+@l$l73RAoFxCe;2yYe z5!Y~`7XG5qc_HUZ&zxyfjcJ_a!r-3a4oF8QBQdGztGt<6|2Nj(L6wEg>O1xQDw$=z zF$R5n2!=N%(`8j3;g)y%ez2LH?%uA%ozt_mxNe8~)Tf=|{YDwzYo6uFqu5 zzz~@5b!~wlq<&*6NR(t%>y`dJ+xoXkVduyA2=X~#7xItRzJDh7m`FVpmI%GFF<`(i zFIXpi$?sM{L1n@N)h^Lw7b0;SwSTirPX)Fx7}rMyZ6o-DFAWrXfjQH3jCzZZDuVg6 z=YxTw0bcOjQS#XEEo|(bac#KS%$W4mC&|)Ayis-4+!I61gYU1XOnPMn37Q}j8fItV zJ0@lWzx#42n8zg0*w6;no;u{WZ|qI6iYc(Ob}2J*Lgs;e-#AnzGq$FpyBr3Ph$=bt zcsEpL-J#hIs^H=4H=4lb%}55el&TdGvL_u%Cgjv!?Fn^O9;D4Rg2zp6M6G2+SIQQW zC@NnwA3SRixQX?<_|z?H5u|RA3#D38%f^n`Uo-apT!z(8iun@dzt*aUA&8GfX(^Af z@>BGZx4Amj!?B8BRPuVQjw%i&ulT5Z4gEn`k*nz__QMv6n+VtDt_xw1E1AL0Q=fBw zV3OS1#QWkmp14}xy&KD42J!k4`(4^9uPVcssIiaB^?cM^@Z+(GG1z;j)G-JM$|yB? zzwcD&(kQ+f6H;&VtYS$-3MINg+^~yOe82C4t-y1k=h`t<^dChjH>J6&d82;%d#+ZV z_fHLPZ%v&TYWKogmBb*n*5?xZx@EnmRZn>P!$?E(Jpo$~tKY|V!4TVBR5OmV62}8; zG#~SPwHW7u4O~?aj=V#ec{UeCZ{rBXot`VWT@8_G;Te@NBO)JRgFN9P;A~L5RIjpKncfA8y$47>-a$-MO+BYFeNCLb51OnO~akWm+|jWowCs<-A8lhDa; z+gGDYPlQuw%YyRC*9<)P`f7+pyllC$Gi8Hg0?M!fD+3IICavQ|hh=SO)eC7gUNKF@ zz)@FoyilF%I(*t!cR|IPV5GPJZ>72y_Je0#O@BO){YsjW?Sj(!KMIFNh}@PbF#Bf5 zo!vwTE8F&|FqG9Dl9vr!38;9Vqo(H%FJ^&sev?G4g8yjqmQ}5OtR=i)0og#I=%%rY z^|33a4j+#WsH)!Oi#-*S+~H7kvTRImNN6qbdH&QhIgO;+*{ftPV~r99g>j5;wFnK* zje}#-3%5{;@hG1CAtt(X6XNd3YFpd+4ZLA%^Y<$jZCO;5gK+}3E{!6wt>CEaPAB2b zo8{MUYCGAjUTe&?>HL_wpc8J;y5l|TX8+cWw7)s^*ALc~oHV@C@SH>_DPZYS6@SHW zw<|8~OhULU>ViCeSN-s_#^iuPD|8+m`rpnR}*jlok_x@!m+^b_`f@d$7d36isGm8KV`PmQt!}0ha9N z!@`(EjdAr{io0FgUuiGFlJ`Y5iCh`TwlO!c*O}~ckGz*EIooHTcz*>YJIA2a=xV%~8 z;#)ZH>;7njT4|6f)c(zC(g)L9^`hGmC~Z=6I)BB$_qQ(}kJ>_ZbMeheSEH{+Yd^^S zn)vA2qi-|O4a!Q<=~pOZ!^beiWim^%?uNjCm}z)uLRxm|V$!Tf-@a4{G*F3|wY;)P zIDN|BDh!Q{<*T_9ln)9cyu^j}v-dY&MZf2Qb$1!SsjL9SMKVU#wg^#JVPrf6*eyEjK;o6}^8sz?F*{f% zuYp3`x$AcN7vf;~i&cqIx`bsSdxfXGR@^OdnxlsMi57n~PYEHJ&}EwRN^R6KPGg_7 z*kUu#U*tfpYQPZ5xXD_k+unt?z-06rpl|sX@UyZ$Rl7r6U-{lW6)&gy$KQJ4Xy)Ey z`|PNM`ST<5ntmw}MfusIIebZuxnxzVhPsreD@$oT_I4+i(@%X*8vgZ`})k z3Hvbaj|yH5w;`>B?OMIB#czC0H~YLUF!GrFW3qC>b_m=YK9h7rHh`BrlZfLH%0 zDW2wGokm1kLW^%@o`fp6l4p*%jyhjOvLMalDrkxqt8?ImVEVJnMrx3KK2^zAa;O`0 zMOe_%2v+eP~2y@xwV+esI^k;)aPY+8cyJ9;XM=58j8c%wV=>OM;K z=QtUq>385u8uk=b^BQs<7~@OF=gar1w2jsjL%tIvRRvlbe9rk;UAc;o^DNB&mNF~P z1J*8>Qq|SfXvA|Q-mG$*U>`iGy`ntBKsCV`Vvga-5urSg4De20r#-bBd78qyn7FN2 zwkvB5+^Jw!0^n(S+pQg(g&$HMxVkRe+;?jZJ0hAOC{qXda&jy#qBaz9eh0TJ^4?3> zQP4PNW~laMeH~7b;(xwU`{H2kcpgQzbWxRa_Ku_QO8CBo_&ci(G7{#55H7hR=%f6F zL$2^m+kJC!T1N^LgzMCu-@V9Mb6IpRjm2hI0T?Gt&PBi*$7|?`d@mpz|C<~k^+D6Z zQKWE&O~+3@e3ab9QxLUO@#X9VS05qi>`E6UqgoIz?Yr-Wc^ut~o`Xa0i>j}^C@Zoa zE^fr=gemXNMjG&a&K%zj=j_shzi!p_`|bl%qDpo+se&| z>YV+MUj)WEx2Ph)&~ZZNNYhiXwR_~T^%UF2VkjO}w|1*AO&?O{T?xK3S!V$Lo7i%N z&xcb$b-W=~B8uEDlys8gcKwSQ8S{Lpzszw3R$Xw0LSv&Sx1o|*#C#mJf94=l&CM}ZJ2X#OUylsO&UoU9)FNMJ_Tt0RL z%cbVg;3wCX&(0RCAMQyXZ=@mH7<6GSxA4k;_1-21y-2U~`k21W;oGvT`ukn4&ImXE z8C9AH>V3Nq6yU6$I1^HiLTzo>&(1qEgzqeNupm06^|Z|tS({u@qCoU_C;#eLPFd+o z37-Y$Ami{SzrZCu2KXxY;P<~NRBWU`T04fb;JNiIx?X^%c9GLnTWNPX)(5a3p(qu|Z&1xm z@-{eVahx!{!A(Q0tpLlhG>P6Vd*RWhsra&*bKf9gIN>P~ zU$d)t{ye{yS8Z{%z<^Wa+Up}6oK0lNOE{NvYuEU|-Iw#yX1wNBugY??=66KPe#M#Raw9gY4Q7@gU{cYUM+ZgXMR}Af165* zK6k2@FX7muJa=1o&f z5&_J`^egp~Z667~%S0(rE&E(r5jCAACjZn&&y~>wgA~waBfb_ZX0kqo9vbDEa0<8k zV+98YE`YQb;sdtY%=XK#+AiAWX763*V4DHfrKCM1aKOQZBJN&Gy1~L-;{a^V1&=P3 zAGui)e=D&ENb;`#nPVpQKRp2}7#d%fDJGdw#{>@3*z4(Nbcz4E%emrzX$z$#xPvX^ z(41L&{YqcEei~bR0rRWy-&JV>W}DYeulL>$n{K(~y#*V&>2isc}SQ{78=mHXii z8{i!aOX>eR&sIJUpKncTinfN#!}gt?8!-`~hs z%lyf4Ns(X2m}6G|(@73?v2XasAOQ6KQq60bZ&Vru=)KPT+Jn1it|STRZvGKh*y8RQCgcx|oVMB6V?* zThtyA4`}>0ua?p$Un!i~_`#Sb_6MO#leTt4K4<(r^odLB z0oAk*4vd)6lw%vaaVrD<;RZH)b--`fLnlOT(YpPX13ZBEfzlrNrz1j607^a0KImc_ zesA{E2@b*Mf)<~%q%PG5&I_^qoI%NDZ}k986ZGg$AG|n{b#_B~G}I|AW*7*AHLuYD zSSC*DVs0t06JkU4hqSVM!yYCt8i;+J50#j{{$bhh+MZgXsgBR}YmdrBs+*on7IwAd z=C|v=NFz8R5VJF0rm${JA~5vrzcS_buQ${THu6)fIE+D{EBy|YgNT_ANi}b-Oi}E; zw>}$ma_Q+?aEPteBc$$KOOA9+FNEMamz}6;78a(VPbFR?l;9vcf|6x9lzuX&Z`aoW zIjA+wwf}Er_%d1ZE8+*;@z$Zqm!HgOS|2xm48AN%f+#XQ_hasQs<+dCk_TY;PfjQ2 z#6frAwhdQQs(J5IosM&#^M3djlGeYh<~16Ah&|WuCqw4ETxNQ4MRzJVHSvGx3tQ`X zUELWk*DpCYJMfQO(C{{qiaUGs*Rr6L8Y?}1iuQLpcl;naggse>$J+IBx<>!t-@a-pCvEb~2(Zl|J!DkF;`vm(>#*EOCA zS1@^V3Hz%1yuRjurS3b_IGO!&({x;V;%K*jOzt zP(?TMn3eTfpKCoXjE#IV5Tfpq^|yHNU;$!2E+K)2I=IH)3`G@J;gkz=iN3*m7JjEb zB7_s_2{%BqTQ^OIL;i9E9@`PYob*cBaX4tZ7Hl`DNSOw92iQV zp8bl;`o~$!K%h@<)C+#28DpYJGm7iOlH%lE_Sar?OxniZFY=r5aP?KgVr?r#as!Sw zn+2HnA6lMH>t&_$WyUTHPSIEw3ieH^_YX~Ea6;wOabe$(T&H>eq)#_BO4eZ4q?+nT zV6-K$NY4PUjDPWPJ~$UE@o{>1uqWYGyK<#{7t0^K&J3h?WG7^=G?JL);DZbX z4`2QZy9uwmjb=P$aab95KX^7Jpl}SljWwdvxA#@DtahT8+v!{D>%c?iT;TP7 zmFHD!o;THl6Q;V3EvgllK%L_r3?}K0&Ra|b)$IjZU&d(12e9e(MF}}R0*B4<5CfmS$2xU}5WpbK^dmULG zXypBss^0yz7}}9PWpt!+O*d+OIH#t*5gSJ9f?aM{eP5VwpYQzX)EF%G&vR?CG2!?F zk@upUM!dScZ+9}|XebHdV=7rEWussyjbBYAvv-7C(uZ{-Y*IF=&@ad2R}+RJ^2TL+ zBPN|9i#F>(rgt}7YW3e^I59!j7LQ3uM}U8nxA^h73rOF)IP;0SsHw+#v?>GBK&ewD z!{KyT$KVdsdEHGV{Q|F)K>)@S24(Ho2zZF6Db8q0Qvj)`U1S|9n zWXD?h-coeLPY-9JYs4hL^!&58K{@2nKqEaPjw$*_UIT7O-yaR`gbFg_;V^*E3IOscdH!R!h~q2{o(qq)#s`#nRVgm3Z8 zn*4H@T#~6i?=q`rPq?EPdzHrkF=UYT>fvjpy+O+JIInevg{e`BJ!q2|jFL)!YGB&Z zt(ZH8S~dCViMoIZ3zy5Tw?@8v`cAoha~n|wG<*B@RJgJ(c;V815tsR7(&z9kWH)mK zc#zeS-X`eUz<@*&C0S7_dBx@VBzy0=$q(!amQJ^&*+vq*i;rb_A;n@pOg^d7 zJsAx7R%Lz&Vo|0!YyvYVfscXFj_m zq_>P;s^u$OEm*%)l50IV=yfxZJ|R>6i?=qjV71`&DLxg_tqzq%v$u6IvIZK^p+F)K zqz=91#Q!J+*)U!(7#Pj1-#51#HH8nmusy2+r`iipPVkYnqGoKN@21~X2Hb9PsRg%t z_cdE-MeE%WHA|dyG&%deIh)q`q7DjzH*Br|opdIr3!3829x1JeVI2nUFD67}s4Cwa z!K9bfl`j}J(5SfU@i4ucc)ixv7YZC) ztV7MMysb;G=pGR|e2mR*=xqJv;~MhvecJ%Rd~ZMFXn8CeK9pnMzOq?!V$~dlpkNDG`^Y|P%(hixH>6EWOR3wdjObNN z+Hxpw4^S`ZOw>RQ8A1PJbEC_y%^PC-wv6n#Tio2TVXUi_gkoh%;+En}RbO_$>AZ2G z^SofVen7d@MUIny4a73yx))^5eYX)G6@Y0a*D`f-gP>LxLwO71Q$UXI$oTwDu+{2U z&GWEQ3RGxM?#`0|7147+1y|}$c6yx?$WOmTc0ZCF$?Nc>&3m@3Gp$kAHav7*oOV@w zkWsk_O)XvBV~nd9K7KqTj~Ssk?WV;vX8;v8Y(mC=?#%o({~~dmQ!pM z(pJWps@f&1!8pH(G>8A#bl2{~i%fFwWIESY?p)7FRZlC<2>%uow0z}>4bdpz%Ya_} z^1U}9ZukpwFLI!KO&0~ii#Txq;IlNgvVA9 zVYMtMAW0}vahbtg>2iBV^bLCX)D)*z7hyeP9S4dycWrP`JGdMQyf zzQGjme{5c*cotWBj!YcFXYj!2urJh9Eu`88cVg@La$X{)66Y?SPxyubB6K4J??tif z;&?ZnC{JmMl6it%Gb3k}ljJTWmiB|?J@@@ZQj(L6?Rl8qq~ZjohN!VGZwtdGOnI;L zoK|JXo_=Krp=sOiU5Oag`D``_JY!Wm7p~PVb6J-f6bjFY1rEc+!n z<>2r-G$xeZxQx88B%X)gjn>HBj;jSNl@4y&e^`yq3~p_gA|a{RzuR4ck9xNRrAJ5Q zYZT;9=cKlR?lOoH*EwyrY#xWx`#4}n+?HjolU|+HJvkT@>t1fW++OG3Nb%g;qTo$K zDTA}`OUUXzbUN@(7F)lX__c6R+x4^K>Dm3qh6L5skO zz$(2uE;jPZGT){JyPOk%YtYc%6N@>Mr9T>1pAj5^+1t@v$4^G5aTO%Ws#J{WI`=R7 z_!{&H)={=0WXQO&s(k&cW&O|IiSB$i6&8xOE*e=T$tj0pol5C+5ewV$N854ZXfLGV zF6vL)+Rc=wlW7krRke1tDa5W9jF8-4&K9PUKsI{y<;tXVk=h%3^ z)XLSuI!{(9l?jWN@JBS(Rk8Ny>EP-A*uvd*jh_l7Um8%6?X*$kz27ee2P4$UgAakr z)9hmhX7F#8%g?YK=YqaUmy5D_qmbmCoNoEHK(M=a^E=u`>#xYuS649DL<2M0sqB~ScB-qT&)UrR)#0&xgiaG6)iA>( z``0S-gbw@z5b?8x&7hW~b&Hzpe%~|pWvQ7W&+nEjb~rb+f8Vvgv$|9p|M@7-Gqc)6 z{F1-zISs7+=!xyPa&on}mr{bjkR|QBAcaiq+<>El!y_&?(G0nW9>!+n!3N56n+x$~ z*oF~_zDD^k&mtbJ={A0a3BE)q;Oz!fG(KeQ{Y5Is%g217{(4$1E&jxzB2}r}GJe47 z`8Zt>xPIcPvxd-FDXIPL6Y!Z7*H)mRYsUt=|mr$o2%E*7JyFGUtM{ga; zv*edzA1_aoR2mv>3_w}2u$rlQ0v-VyaHids2F<96h^5-`(m4Fngw+<}5Tf^o_Wo6B%%_j&nPHw_!_JujS_|ewW{;QF$v|zJyA&Lj7BgfXY)tEP+9tLJMlRCz&wt=iEjM!88<(aZEP|m1Rnce)7oR|Fm|(`8UF~{JF<)DJa#ju>YwiBr@Hdv|H=8YsH>A^RNB3_aZ0J?Wa@% zJ*EjwXL>@HGY{lQI?6tIkSw*pcTfa+*onlypcU{RTY7wIQHi_)J1~(``wl6@0h407 zCmjBUpJN?hK{Aplwg;O(L+l4SNL3vIJUl=`tZX{i>kYXjAWcRk!Y<1fFC3!<+{QLo za+Z-rNn7hZ_Rz63kKJ&Py*W?V{VL$Yi!Il)GZbro#%wI2PFmiWt#t(+9N-96P}xxE za*5+XDfkWtoss;^Ryk=(75m8KaXR4FsR&5T159BkJ1OnJ?8DO8(RQq?7=WNsX$JqQ z(0@h%hvgSw5x$w$PV@I!$pHS3@KqkTJ{XG#$>dX!?mF7_9;v~i^EqZ4YV(LJ>=uf; zzA*Z>drZp!Aj7~h-G53)jA~RVoQqpVaRqUsHg-vo2Zp8nhd6&l>Wq~3jE~f3Ji0Hp z%O1pWu%S$6j*{gsKil~C{iv+q{9?bvH|0R#@D}sNe?u(JLwK!P-Zr!uoq@93OglW` zt@Ft~7uEiaeR*qzB$m-Uog=s;3Vay#Q=Og86_!2>>`ZSV_W}Ew_=dl0k|&nR5}jXL z@@H$P-rnR8_U{dzxI|rMbS1A>0O z-df_=oEHW14+e%ge=>MOv^4%>`^++|zI^S*()Cx|LSDd!ALqP=a`SJ`V6n__(|J#yH*UFzbE1WgZmpgpeZ~m0f8GWwnmHBr% z;18(ls#zC1Y_$Ra6uFPfCV89ydd)TGevF^y|;cvOFZ%Su>M8Pt<7c4tn4Ni&(*oJ zX|`(`da1byIt#L^lL$(1tGCf z9a-f(IqIYNR>h(JI1$2HcW(sjw?@gAww;hG>L@ZnygW&$!`Yu52F;aCYj)e{BB2diG?x3Th2FB?wmD}d9W}F^O5@-U3`&TC4Jm& z$NY2nT+3jTw6rYI5{C|G99O*a2rW(4fH8r9oR|oE-vZr~$9>D2w{(GmhwV(|IUw<> zls0>4p9CAcTUb7K-ze17`pIn5*^TP$0yAJ0J)$ys0b9EP&Khod$@oo4Qnpx{{ zzNMkZGnqU_zawVev*UME;gFK?S!-P}v8M^~+!@(x{D|i};R%GK4L#=hs>UP;9_pF@ z?CO{aI>2AU3%=sKVK2CAI<}{`=GBtwtu0hnJ8-$KJZ_0ECfj-Ja{mMPtrdr;4ndN)bV3wHuUfAnH^LXi-W-8%QyO!&+r0 zGtRlBpBTJcT~UJ_lvD7E0-N<|YULXQ2NdTK2VQ4_U#?==h(CzJkea0w_sALk#v@cJiH@9;Thj-k0NMz@g_(+Rd{#+|C~Ob zB;!QiblwdtfXVx~)1cX6AEIDncd`NaKI;O?av8gfINqA=_f%utf&@XVlNkMNnjVvY zRhfRdyf>?&9_Wcp55DXI6|N1j3WrCaPE%fu!K7a(t&=}|hDtbTOh>JrFy))HG0ad- zql*b{gYZ5xRRPQ4+oq;7(J^0b#xucz8Bm6(%e&lpw6a zFE%k<@Z%M~#_o%C+&8`oDX{ak&kWJ8q+T<(GmVj3l$K!5%fe=Wm69tJs)4#jW9y;M zQW4D+(B<_*!^|t2569edVol1Gded*kBiSn=7{b)EN_bXRM zp)OCt$+G&Y$7Jvqy&=cI{Y8(tsd-IpuA+RTCm|M@!V>mAX&TY2$Gbr8U+?QgQG&+8 z)|~7ygTeg1Mz*oXi@){f_AA3zuJ@q7BHf&cE*~Q$l+J#V)_wfRTIiE*;2v70I?NV6 z1=8>@4CZRfon2ZTjSYs;$>Z~7J^My;lv`{y-z zn}>xG(mo!ii?1vU7tP*HP}PR`nU8n5H)iN`_QASomO*}q!I7#)6ybZ+nk#b?#||MW zyEnAGUt0DmRMCb-3xd39e=Vh*xgK9ux=+6o{eL7~cRZWl+txj_)mB@pXiKTx+FK_@ zNsSr_(pJ?-L+ve{v}Vn;R%*tI)C{p&vnWbPN)Vffh%F)VeILK~AD<7AC+9im&Uwy# z-Pe6xkZ6DldC|}+MG964b@<#63Q>xNt3*W3n$m;dvt%6mGUH#`gSd8N)6sh4>-GKM zhK|p4m2AxGFCE3;#Y>m)xvyT|iwL;?sWlejZ#Tbrxsm(aNed%VY$MJZ$SBlW=DZ6H zhw{fpp}oX@)DIN5PZUO}-IM8NGi7i5%Rvu6=v*%&nT~hI<&L^+SFd&Xu^N2~s=oc5 z=cx+!O9&mktRU(v`eP;ok1pOMafF&8q6#W8euD$$p#;jhCW42m)ZtjlEM4P|O@>YN ziGVwfE`(qdjH4ltM}O00O5!|UB;FdoZFT+VO^|HC+6e4rS~YRI5;q1Qrv&Ry?;H55 zQ;pq=k{8zqu^}r}x%vyn7f3k2IpS!ax6eVkLPA~Q75d{K z-rp0m7tPQshJmgM%wyoft}$f>;|`0h_K)qjSD90jLZ0l+fjMalzKauGY+ofE=WPMU zS4RG6@4XYxCUlqoMJdgfM}NHeD9I_9b?pv<$SPQ4!Eu_giK{UYEHTcmvi+( zWACTJNPl)@wZfW56k-4=el~EfM)iYvn#b-^nyngntHPH_4{^-B$tFG~d_>G|#JBHL z2=|e6e_~47n_J6ODP2D1$H(g2Z(~KI2yJ(xU(8CLkQ^T+nT3JyVA~MflM7U%N^`%e z|F|Tb76KXVai`qIC00LHrlg==YN9`}4P=gA?viXWk$9Q($nol1#T$vwo;aQ27yU9l z{Hp+eGS%AHI1r6tR}T597lCX+Fxnc-SoBob@J^BFR?~`BDeX5)2J?0LpBV)Hu4zVZJO>k*HE84)NrKa&=^%Kd1i_51}J?541SY5!bZq~YvX?X^tr zEg+fPcF9S;3(~!=;Fmo#oL5bC|Bq{O=Odr_&BTNO8oYEI$Pp*DbOrjM4~Od2a`JLU z7jal;cxYgwa&?U=Qo?njI>h|}&hV>)c1(qvqP(%9sEB8tgM4Q#410fk3rPCJ2IqWA zh%xN(CSox8+~3S(#*d6u$Vow}nfa;2)4xXHbz^Ae^bvSfrKNx|Xn zj#U=9|Ngbf&CP~C0(x>?x^FzIvNHKoYnfa4tL-ik@8HT<+rUlP31%V(C`c3)5x<~& zX4R>;sxUvkq<(-p;+K3X73_-S@%JuJ`5Rmlo_6X{nZbGaHrqV$l+!Y2RX?!UrUFvk z=OnhkdOA(^b-rVM7FbQs*{C5P&z=LgsXx>riNBTC@2HfbE=1+Jf+Z5*!^`>J)s? z)%buKuH3c1N4gR?bNPPo5=U|?6`09>lYSc@>8HV3T{5qFF|E>-W?f!IT+|I6CmMWv z608uoQAe@fqp`MhdTB=e%iu@ta`Yt+vL*D!zmd__>xaD`^-(w`T8_krNQJvJQE_AWvso)5!%m+5rhm1Zl=t8dk zLrt`@F$3PEku9)s!&1(C*dD;L=)~45O+dN&-~|EDi4d!uA63aE3Z-mOkG;Aguu&!` z_0`5h560v>ou+G}4&ch(lSwDf81NHZn^Qq}Yd=o4ro**T3GL+7GiD7-bA#4-J39(Y z5v?g<*fi4JfDIzS;>%kiEMFp@FLeUzsK6M{U%vb5faR2IH_RNpN%N zbyN)TXMT$=rQ(LX7{y!t3+1^8EL%ioyQEg+Ws&e-yjtXrdy!^Tq*DZFL9rRh*f+; zqs<*dqjdsA%`CcNkg~`xVW|1lthS|U2~&k90BA-^aK;JbW>91}O+2(UBNIT!6H08b zDw^>qKIs@C`~NNC|F8Ag_rrzSKC(CEOh!FgH>{IWQ}k;J-oItC zn021)@jsl^g4&_?(d>0P+;txV?as=i%wvt@_CJ)GJG)$WOsA=D_KwI9*?#|RPbDw! z?jitJ=0%-SXJGyu-f`Uwl+*?u^MDp5@auCVV4eiw1>QYyVJ34LJI$~(ufiajK!24u z-t2`VKFfgqL1`M+4rY*Y!eay z({w9ULjOqS5S|6UIWR4TeFR{#!wC$yO@`LS^p9;SgP|W@IqgT^c`M03ului4Sm~GY z$;Y!P`2AI>x)*y~c*j>8C_U<79#t=$G?7umhVuMJ;&3YlP?z-21W*BJvjad)3l{i< zd9*#*I&mzj5wJx8PEZHl_iF8AN^vzrXnT^HrUCvS8NwBj?g{v{+uyePk85X-%Jp?g zU7gbqN`2!`9i3S7j=Z-Zc_=fdkn>d(0QH6}Q&K-c|4c^*&G^$F9*X@+rws-<1H{3H z*oqg2;(vFDsn2U~b1MJ0AON@P>W09)2r4!Z5Ptu-57Cmo?f+n3XxDn-s2w|x1J3AQ zL?`z`ny{^WUv!R%>;*+5B7n>7FE8MFb%+qRzHp2+_2J-ZUzq@%5D)a$bKN1mjn&NT zpvE@E2yt4@bJxog)%q7mb@tcfaEItO zGOZ60q+DY^LIJ`x=&L|G04ruPx2ZdV{-L)YdnsyY&o~Q%%#X<74mm#@bXTT*nyX6w z{`C^q7mQHuSDwTD)ld36PQ|LmFT93j=87o~CKE=-Pv@rUkS1rqFB-4@XuyS!%Vc?; zZr!o{ceQp`o2K>+opS8Y1F`dWJ(WcRZ4*yvhk(9=9&!SAT8Gw^zv*_D9O>ZhaJ_T{o;J$$H zuT|Ewpt7&a-(A5rz9+=uLN1Z4&%EVU*M>*QMXU8H>f|Lf-`dW|#O5@i5WkyKUQ)Y< zAHeJWZj9-Yt*XkR7n@+!sn^OM`5yi@XgJ62%XhQ5VtY_AIRN$I_X#U~kX)a^Ag3e= z#XgMy>1gTcew`Dw4Wbg3_YgeoqkW&MEHxhx(|q}ox8BQUKf$$16}0GOoccX2{RBBT z`Qvr)X4pXQtwjuA+qFabJ7$JYjP2V2f<|#A#%-Sd_*X%5zh+b++Bxp(7Wv{^BY8k9 zD9Ks;#k7D30(f`t9O(rlB1dN_>N`NK**TM2VBh0C1{3R?}L2st*& z^khd{&~^5u#uLm>VLg-H+I}O@=yMJx7L&tx#8}UjM^PCkt)xk+{~>iC{f-3?7bCw zW7X*%fRDg74nqQ7OrMzVnn!#M8p>9yqb?5m1t01VlN}iYPTCeU< z3s&%$mIGxa!11fLiGWdtq?x317a?J7CaANq3#vj`0EG+6W4^<@Tv5Cs$D8=VL{vuo z6=CBdAf`<`l{BRiD-)%<5(0c)f@|tK@wbgb@Iw=dwF>9Dc9<^S*TdU>8A1)hJg$q6 zr6Q8?zAW~W2ew5_!Ny(>0|8y*Vkl(fjIJqk1@VM^VD)Us`2obFBH=%-%0>ycC?WH- zp7rX{j6!J0-Bq=gJs}&<{2sm-$@&vh8P~Y&N(A2wIybyiukM?_bJ;69h)uCJPHr^8 zhF0!^(7jv1o6bGKdZj(%{Y3=7@<_yFb>?UAu1o`Gjd_O$XlT5Q*^X)yEPY?ptuv7s zxX}vebSh`O9KLuaahh8h=PhR9Ds3=d`J%@|TuJuP!QaoH%wlCs7=$?#&7*l~HbcMy zSa=_Rb^V6Gsq@kFC|hh44P;xd;OEU(6x%|!!X%l#7|5@}f8!-u7ff7TFSX+D{5U@O zI-&AKd!5}~i-bJedz9#mRHg%Eo>}J(6Z9c(J$atXaCgc9^wj6cc3}fS4ecKt)wYBd z`$wr(BXfC^)0%ldFDYfH0%w&L>+{ko3%Crufol?4pYE7lyBxhbRVLR~S({Md+F%aL zOKgJLo47vB5!mfP`;}JvvCU>0rI@&vsX+lzEju6Hx9DDtsVWZKpj!b-@8F+%y*YW+ zkeL{?;W^A$bICtIR#9o~-?n*rl9VCFe2$c2mWa16#e1M%1~ZMqhSqw5yQ>$;DvP*H z;(QlJirJ)_JoQ9ZtPEGb!V}lnbBI~mD+Fm!0Fl02Axt&Ivb#MFjTIW4vr|YEV}##9 z)u!h~eMeOgEyqYo_=I4rauqZ=RV(RrO;SS+e7N0S5avwq#lmIjq~~i2=Uh_rKJLX0 zm&z&^CUCd|o~E~WPqtj}Y%IJ|6}KT}-roAw*vBs!coDY5{nug~-7FYtQ5zRme$U6igi$_5+4)gks_ zjC&oxzRG(K?Y8y#7Rn^EdDUvZ4Xjg0z?9^=8oOF=?^t+515*4L23_q_X|{)MFI2^d z$Ik|=oL*Y%8-tZ229fTh8-!w#tv!4#dW);HlCgGn|kr*mR z`tRxGv{&MSihUQlOI#>t*JN#6$q%|$soQb~4dn8xbm|`)OK! zAFSlqCO%#b&zhu5v=fP>W^hkd>Qv~Q;j0ar>*TvF=Pw_f_1|82m}Pix@Q22_)14ND zttxOx?{Zh4Wd_Bc@R#N;b3R9?Q(p#TLR$0#qE84urFB}yq*2!{Q+lPn$zP5h570@! zp$UTO7Qd6V@)w+cC?eZ>1zzgpl^i3VEJk={)GWr za(~0P1A3<)6MCvj->-Jui)d*-KI$+`P0h%4xYYFSWt?PJ@D~CfzZL)Puz1+#ByaO> zs$_7jYGV)wFb)X2r)pLlR}2WXLL~vCNROe0gCw&GCML(;-bCovl;NM9Zh`ydhW?ZE zYdX5t_pa~g2cQH-xLx)ye7Sl}aU&@=PrY=`a>K zRBsY@v&Hg*jCAL2sTHh(%0w8WBVGLYQts13)wxtUC&m-4c{eI-JQ{v0R zBY2xjmMrE*?}()be*L5(_{EgGM{JrWuj*)C)Tq7ASKYAX$Bz4>H==Y$VFmeOXh zr#V&$74mtwEd1GZ6Uw^?v{(D{I^GaC$q*^Oc#=y@RK+TtC~`A$JN;FYH34{fL?Dds z6p+#ro9fecE1^S8-936vG3o*1h?Ap%ac7bd-Bb#n*_-WdQ zJ-MvyV_t!f;k=r5=QAlw32u0P%NI)vdXzeIs(R`~y=v-K{9a7HY7XyH18=W{hvav0 z^4Deum5Xvp(aSf>^7wW;y9Qv!_G4HGB4zHDd7*s|`y9EhoSjJCF_`&}i!L;w6;;P` z7-qF&aSxv3iX7)(J)YqFqGBja@Fm1k9IXMrJ0@43eOpK@yy>r1j%$NTdl09PM9rgx(+rXEdoab0YnAv>pwHVW zt@WV9Ms+yt%h79}-`fA{cYUsIlBNdOM)6B+~*{7L1KliP93iZgkORwkA^JkVx*wXH}nx zQf3V|8W?yQOV!cbJn5qGB4!&31+|S*Lj=CNS+6n^w&pFP?d_?4BO=HGGPpxl&^>Fu zm+}I~C93*3oU6<$>H`ZJAZ;1xW)wUuzQe*wlGu1D&`75`yrB-DIQ`U&yFe8Ys)j55 zx(Pyr7TtsAkr&T`N98J2Iaa$d&d}PSoYRf>yzwV4>3#EWJ6JCByCbDC=|=6ynjciI za?PEDAdGx)mSl9NsCkhgz@aPrR;Awg+BnDxE`rmRZPV=YuPP?=1<>_5`A1*Fr&t50 zTyC=EDPk8ApZis-_hEB}w7YdNp9){DdB0wZDT8x*XVGfL$a2Kms*zz0C|(dhZEErG zyR5K+PG?kqli`-k9PiyZD;_KJ)kYX(+xWGsM=W_X?dOeJY5siEfyX;bPBJbSr*i)W z>D0CdeCqU5nl%oI zv_41_PJG~wy%{c5Uj<+9I$#y8Z0P>sT}boi*b?pMSwXR+AssqmZDWj0I(l`z(He%4 ztz?CT75dQV_>a}dN&006l}djvd!+^9`WYPab`z_qSm zS_9-sc@+{6t{E8_PlFw=CM=2Epg+LdzbQ(Kj@%ss6(8TNUmx1yV0OZyGJOS+a%wPl zK;xxvXI)#(4!3HB4h=0_sOjH;X_S6Xd^k{28Tx=R6N{)A?G7$d{C&jkzxJdr${srfaxk-HA) z?Cb5e7|uejb)@mS;D~EY6v=K@#cvh5N4wfq^VGC)+M|k-bNmz#r!DrncqTx+?~ebs zCA$Q2|JRY4JKdv29-xTzXUSey>ohf@^#X)g#$KR#)qu*klwL#b$jMOP%I=&_5TP8p}0J!5PryhS{^3Tu?v|oW{3V>JsXFhs_7I8Ln1z#pTD0}s$ z9MaM<9s42^-ug7OKas3$5or;!tI*L6Fb~6%B|ZH8_W(gNyKSC>)RE-2y_klQqePw!|LM7kLpp4kpH-jC=u!(6dix{Z1p8-5_FvEQW!+yE-(o#8tq;azm!eQvVZdo*Q&bSCvdDk z{L)F?T{qoS!0xhcp71+GBBvplj2lJhrs78)XhB@J6&*hMpZ5Hre|^Mn`N3>0t#6i! zH^OObY0#^X+g8(E+J#ql3pd+Af^R~%H^7x*%Ys`}X@C(H$gK7N_8K$X~1N_XU;?L>xxL3PdIkvh) z<(MRgG{8d%+iHi9b!KZ039Q@OHhkn%+6iO#2WfwQb7%X4n|vxO;!b<09uP14q``w= z8qkc1fMkvW9AjWsHb4H7(n0K_Y&u63HN!;e&CSjK;UiVoISuz|6zz>Ior(ul|LfWQ zicx`qn9qVmsh#sp7rLx7M)q&H^QdBI=+09gJrrW?fJ3*X)DCa#s5iOc|K~YrV4uWU z+KCp>p4RBoX#}9;l3a>v^niT--v^S>6VuW2k|@MF=OXvAlwr5N{PNc=XKvh3R!A?1vBbC!esFmlB0WjSPDuues4NP5nFgCbNFV zpV~oX{Z)Z2DjcHiDcx3isXQ$v&?hp_H8Ib2E&WN)fdV1w&v$w4gz&K+jJ19s+yLD5 z>M?$PN$d~ZK?2Dd_zU5HrcbX9GLc=l54duk{qLW+-Y+B0o>4p|)HF|TO9U6(lV z-T!dro8T8g8@WGIZwxqAyf!pE84gO2GGzIEJ97|qH$XS1Fl7YdqKwUQ0hf5E!KxFw zUf~vQ)P)&dubOue2H|a{Hi3?`O_smM`}UiP;YWjD4)G{ zTvp59lH_?AG7y-6(Hj%g`g^G(yi&*d0b!;(b|m=gvQW2!$*8V%n$Oq*>PPEp$Va_rY?`u|6<7GYyWTtChJDFDXf4*>7}=jXKkUI2%O7~9D;A&t)LA}Y zn^UZBF8U?fefG&}SYBe#G2n%NwmLr~?$=Zs)DYyqpGj;lzfY4F5%9@ge2lEe`fR{_ zhkVKN`PJ2I-%KGsP=bjI5x1MUtAkhGz`N6EdM7zOO{Wm93K3vvJLrAtUPQRI^96tE z6eFU-03LXxv5xDOo5Xta_TAef!b@-KC(+s{=Pxf0%#^(eDrzk@=~9#BlIK-u}sscMN|c&6~zt6a|d0jm-j&& zq5)>q+d;>PKIk=`<|bad&hWQ0?;sh%4*H<$h=aCNN+W1_a{n zKpkyYFZ$AkA55(ra5uK;q|g;~fgA=O8B>%&ei>#D*^7EIfIofAC~=4Pp-H4Va(o#!c%dtD)`q-m8B^uK~m_Km41M< zYS%~`%V7x0Yg+D04X%hG=kF~v&6N-7#@Q2*iH1#XOi%&ajmbMLnRuJo&d~<6^|fl2 zwAH3}Kar-6m)D&9OCAHbB5PyN4(YjLwf5%0hTDuaOJz4L>R|Dm9?OE6TJwtPOpnqA z_Ys0=A?xd>{Xp*kL+ zS~wx|gs3ewg;9O%yn6;a8BjWCqx}pWZi3|IRVr^??G^jrwdZ7Bn2irw!1i3inJ9B0 zbl8&RkAY;B6FQX@ex9xiRn)oA4T=a|MOc-{c#I?ZDsa7=M=b%e55zVi?z+W zi3qPM^F4+v2EB+sS1sV4b^EvFXW?Iu%aX62gj15+*m7*+{QXB}#Ocf0vu4WJ{+%uB zen3TkeYs+)>39Iip%SPje_;DxLYCYqkuRL2fp{PGKe&wZsC!(t!idZ;msEOngBVm2 z{OvEi=I}A7NS+ft*}1&2kTF9FD=aO}$89ES4!ZOhDWpKiKDz*P8^Uf3T?Ium*xb`X z88U4!GT|LKD~dkLig71vmc?aliewLCyC3i*pgW29S@BCBJ>p7+WC6b zT;iqDk(>aJR!z(IyGoF9<0S(*%*+wv9 z4(R+xtkAOdOw0I#R`-AHc1<=qpF3{AyBVpp^~654aUf=yl{2sh2HJ^&Z33zuOcs|0 zpc#-pnAWxoX!^AIlSCutM|8mJ@o|H_&+sCnziuKIR!b9$4H}zwh-;TDt84J5`kzmn zo6m}gw`m2a>?$h(Nu$aIoa>nB>vi<&Bqv1o@Ak>!0k`w@g>rR}yiI)QW>pVHQ{ikt z4hWAg8&EE0d=@!PP>=--D`$-LKL5vcs_}0)tp!|~I{Upbbx`tOcMf2>emBt|TuW%Q zov`&Ukcbg^S+e**?gcjQ;eTAR3F9NWc$a{rq#Hw)g_L+o0w6I6?b=i$N!U|ciV67p7V?$M-_Pq(c3mxS$N@+Zw zY}z*l=+3n;&?h z_nTA?^{~@%~3UmpeVXR2q_Bj#*9P ztCkyvL+Gw5q|iUN2Bq{Px1_rvr6Y8X12l$5=wYS=(_=#C<*b7o#O?>d7k+~MH-XBL zSQ%S1J`fYP?QrODeBmj}$v}Q={vX$#=dM$(GHtozX_%QNjC??V?SscDBA`h>az#H2 zva`M?yZ1psTMsdXI@>a3?6E|bY5$MwT;*v|qtmtK-S)(dLXQV|zqL*(lXy)o-%tO1 z*dU?RieJ;*7Exa3k?H_;0}>V%k5G>+sLHK7MKRRhkL4Ekqm->88KIJ&0O6@#96!rM zVkkN>L>3+EzWf}fp@5}d)k?00dw)FXh52n1RTQA>E7W<{%n+7iGKPS#zoq9%CnsH( zc~Dcg$sTa#dm++PE^A^Y`%_kU7KMQ9ytBwm)}Kq z4av+5{=pXW4^?=RQk)^81%RV;Ba>eOzS$xf2p-fX4(i1$E-~DTD(=jy@AiGM1(t|| z!{OpcRpiaZ$1zW(PnCB1iL}EoEZer{uluI$EQz3#aFcss_3`13r?|Arq4D0c~U|eqd3=){zee?Cv>CX9$ z=%QO&?x=@d0QzW3EZ?x-3Gs8(&?rj9T}J~Zcbl`DeeX7c$L>8LGDfDPoCwQRog0DL z9SMfdiLXLFIe$!(eGd70LhIJxrDK}Q*y3V%aoQxRpE>v{ z7Il3tZn8(oDhZ?-T|pkRuUQZ2jxh%9>d-oGIaqda^*Kb8-rk(%?~=-^w?in9b{KPm z$TFm2s3m3=v9_ig$c%C=X1W0-Lc@wmoL`w>Mv4C)aT(mB&(4urh3#I4uYNoBnkU4u zz5T9HLV}@|*5>dIgX3I=>^frt9qU&x;JjjbY#~?nVyjk+C&RIh!mSo+u`krB*T`Be zuuE0v17fvouYI~?HTvjg()0U)-CQR`E=gxl3F*As77lT^X{N~7NkU9eJY1)dj%8jx z)~pvU*wli3uL{OsqSs5*@bJ+T;`l3fWwimoKkHPYNlV+so}XI3SpVkg*(N7Cc(^+p zn*1{AGLmS``4UD7*+V@y2 zEK=$zE_qR^LmtcPYs{MVsMKWE^XYYf(8DebwiHB)S2s|AGzX7O&t6R)+bbb%e~AH9 z*T%NDcs^e=A1j@!fY{278-hauJ#9zJ@4wI%RXCK)zfL1Oanm>1EnS1Kt*!jm4YxHX z(yvPCnP?-C^Lu(oj*3faSn&!4yfVA-Wps?0J#GUrKX@2dyDAa^cRJhxO1WHjk6&u8 z>$rrzudu#f`dn>MOR-5144VfS17znGR(~g!ZUY1dF+hQEa=v-*T6f1tSksgYtdK2} zWpBeoKB}q8q%5T_Sp^X)Q!0L`dnA9XO{#Q1`SGq-xz&0r{%fE`!rolG->{ScG_#tv zbEw6XH)?L%*MDqbZ%o&EF_6d7lCsAetfj4zs{E*M-loy*vW;=vRB+!3 z#PfhxBiCq;NB+6u-4k8?w_r-`q!hovi{wI#L%>u4(6rD=A!aAfhFRzPF?9jBy?N5!Q3Cvy2V7E$gO4ZSClilPfy&sUpk#wOWZzGiS&!Q@QK8sO&n{30B!9>DHpA6`r$!XCr%g?A>}#U!)N;b z$pElld8mjTNlJ~ye@!6%HNkwI`3twlalL$=7VrOX(eTOmgmuOVoS6}Vw>%PP4#r?v zay)nQR79LrbKpB0@mDuBP1QlOE0ioRld#3Jadym(^T%Fp{MbseGL^m~^KgU-e z1Zvz!`*fFVAQIyetX|M;72IVqZ0k1AK=3E9d!Ja081;Cpek5Y z2J*Q0kW&hz;jW)x);r^Xix{~3^Yx355{@b=UjBZ&Xt)>FnQTD6cv5%Iz}Yz;$>y^f zYY^$k5_IjK$6n|E719U~GorIz1px{-T96AcEgJ=F)wkS~We9`U*1#8p%W04!C%9B18)&RkR$ zGk5nDm5xcMCNCrmvv676Ru+~l%TTJy2weq>@>ty7wU}(3Zrx7Fys~;<6>Kw58LYm6 zI`hjde$@4nH~7SpW#RKGwlAV?{hmy9y~7$dJPqvgJ zGX0XkrNh>Pl2u5vnz~z69m%k{`nB>SzkW;SsGl;C_8EOO2Ye57n@IDdd==M%8iGla zvD}6S;1jc>;=?}~dMnRdcB9z8*3!mq6eifyh9{Rq4jegpE8}g=Wi_#a@oax1dxaPK zxd&+`oGoNh>w{@^(I zz)}ZVx;c1snW6( z@o6SKo|y6cbn(fBr=Ek`caxqmKo015=y^)rMfBJ<;?YKoSgT-La#hb(;?smSn4{RS z6b;@uSndnx3 ze10w31&O0+d!CR5jN!MIy9lSAp5~9%w@F_XdD^ZYC@I+f`n_Ej!2E4OI({2SOiQ(L zK+nk+K6{o!p0I5@-S$%}Kj~`xbNWoqr4jzU>35(znN@XeBxSQk;OWGpmHOJYI{jVP z;v_HE#uZ;S!nA99A7xwVm)YmgZc?pmMXcp#mM2a{KRv_6^;iaSS32}IU@jHn90#_h z?}Y*V@+XX~N)J5Je$S5d5B>qJJHRfqbMNZhfA@?9-#%8m0<^9F&tv{V&Y$|`DDXbw zhqa}707ziN$!E^6k8+yfS-0^Yr6l28pb($A@`nG7p(hHg;MctaEW)q-i~YxScppMm zv2M%(FI}+H06NhC0RRN57pd5Qk7)xqZ`i&aHg7F}Nusa-ha$_kFm3!-`pzmT`VauK zq80~hQvprR9k$1}Ja@`fK)e*V+#XDVzW>#xkfuI3@8iAeJFQ!Cce<_kkI_1&LLbO@ z%P{uBnn)=<5XuX}rVMD?X}&pKk;%O#63z zuo6&>D5Vh8#p5~#JxAV{B@VeEJ$Vj$qVms#p6Hu2ABh33uruWA6*E;AwevEAaFyZ| zydS}!H9Zjoihu?l%CsM|{-MBq)tioT#A8uidBs=JUFpDuF-`gDmscs#vGdWF`!C=` z74hYq#{an1_|RzKy0?F~b@ZS!%f^+NrIat@$A!!G+yb##P^Y|_$ygrG4zyS_VzVeY zp-gcOtfPmeJp=i>PJMfP>e_Dl7~+n1 zwC`odx!zEaJECve4EDb@lon1A~s4wSA7v zxFF!Zb^v>+Gc~{GS4H3C7%v=r%ZUG?uf88bt6Z-0IuRkOeFYM!2U^g2rUsK7M6dP# zLX}H{+NX!E;!?w}g{4QM);Xb;z&-@f>L*?U)l=I1U*I$53AFfl;3cpB4@<5(-YaVw z09d^rKD6O~ho_e}CcFvpgoAN6`81Y;L|+A?R=*$C!QJS5TyYD%rod0tv??FT`xf!IiX~P7$tN&` zakkyQuCM=^{>2^g@eoo>5BGedUR+Bsg*$Yzci1s}vLtCgV9VU$pf;0twV6RJZR2MM zZ4v)e>@{J>Ct`aSfF1Dp9I3Om(sq`MIalJb{Q`XHg>2tA8ZX7UOSyps9Rx4;zu#qPGd8;8m@1`UL9J6QGiA-q z3NdUU-cKPzMulL6i@CFpJa|i&6!9-KGm7+$Ze~1mLDiP-46|O*_u%L(vwpOdR`50$ zBaaW^*z1O!0AzDS76hvcb}ara62Z&K=-hCbf{lXgRAGiJPW3;o7x3Rf%d)B~nor;V zih5mm!qUvmjNx3p`zn~9e<<&|KqufXP1>z;P8wzIRoP4VL=}I{ua4}e|BfMge6uV6 zqdG5-7PuVE5tz=?uyXD8!68VStRS}}SIKVD&ZcfaV_g}_{JqiY#dVhv3*{7AfvkD= znRtJVR&aQZ%lGc2=Er$jq%48gQ!u#&!4U$Tgt2+sa zaw0hu8}1pd=(PnQ-&`j&3WQkwmE9CQVYjGi5pb-dr%2o{lLuBeXh2|S-+{*mPHL?^ zSM@jYciGk_u3a8x#1e*DI=hkFpJMX(UW|_;Y1p5;)DnB-$FCM>uwusq+SO}!73>Yc zR88%OR9j>I)Wm$aOYx$t`zyy!9V8I)G+5mzYBaMf$d;^MhaL`u!R%Pu0xttV9wwZv z*ww_kS@&)Gq0OpoIL02eFkUyoILzGrX@y@>OKDVC@sE^?BPcT%5^qp<}(dSrrFJbHD z5*Rrni&QK$ONLg}Ay0ue+UeuV`OL%|7XVav z@99w(;NRAr>m~^Lq|M`pJRpWLBe4Z$|74%oZujMfANC^GMDFx|T7NNBRM=S{krrW% zhsf(rH}el-f(*wSOPK-e~U8>M&lb8%DpZ^{K+M_~>Z8F*1}P zN3b8`nAm@7EqWkQ=ZN6FUy#( zihlzBS6qBIJ$co~t|5JBVmV`I1ZZ1evSU*NbY0f(8X7|KGw7wbjSWpXuig8k5fJlX zz0~Qp^6R6QL}XStiCTN*H*$^JDo7=OjLhL0?rq2TZ{pGp<4;*JVSWLr0fD_YD?VUe zY#R3km!`n(1C@t9-fo6hrw$fIrSw1%Ob^M`v1ODFJtJee_Sv-1iOSz}m6&T=oVgaT z;A4=qu*WZa)d0iRQ8pZ=F=25l4COB{|^q5tEO=cu!EtCDAPofyM3cRV06i4#3M*OE6)o#0|3s`r|HtLwCg{72 z3KoevhYysfPqVK6Tnabi{*NoySg!8&dC;vvnM>VykL_VG)^Q-hHSPidua5p&~nN1S@l${xX5%c+~eD5=jawS`ZNx4p*4^y=$LzZb(a zm|;2(nch=Y$@v{;(x%ItCsF6e9|RENM*<>8R(l#I2cP(L-1wGq(}_QxU+JRLmC3ZH zx+T+}n^kjq{^V4|rnc$g=`%Z+if&KKS%JT$Sn(2yt$d7JSTIMBU6E~Ays(|J1&06m za{4Go82T&os#aE0f4y@)E#|f3;1azfG1S?&itY>1IBb!9G~w7wa_k>DBYMY8^ovP% z8;YTRPp5GaKA3E<@GSBjVyV}z-<7fvw7J$~(&w~_A$_9z3XPc_UvjU%J}o(*?Kue{ zOIQt73KOF$rd;0)4c^Poj&DHOD^T7CuMdiI?&cC`nM2T z-cQ|zVkAAL4D{#{$ z-O;Do`s)5?Ju~^fDu$IQo+*%>HG?J%7>^x;~ix%)Pwx+%2Dgy+<%!iP%6 zXT1uAa0P9(XDYFE6MDRc&!%V>$HWC+<`kG>{Y!>Tb89M6T|dlZiaB3Nz8v=hj}3qC z;Htt3DGj)IZDGo(p90lIYUvGox29G#wJ<*QU>6g%+#ZDJk2@(;@##sJcw zt1&ptkMOrS$5mn%x~vOd<$JsA_+vFZ8Ftu8&4G&;qT^X&OXdf8lw`Lu^h*0`iT~)<4hZ1+2%PmKrWRO%i>x0@lB8eDgBwfWnMc|bW zZ}#|`bvx)C&rn$_D}N-}FHTbMQ%4*erbhglw4Oyh`%# z1eqs^T<;98f9llg(0)q#`|K&9Vhy^YOZQk?*S>5?lB;KMLbX^SaXFRrgY6`XfvJx# zq>Aj@E)aKxL~B1Uv)jIShCelS3SIA&A%Nm*I_xQEBzl&`B7v*{13_B%hBmE(BNRSa zdN}2IK-JtAmP<^7I{{Qv7AO#SD5xlzvwGz$EHYOo+XwX|RC}PI7q9X}A{Ct9xCaJ~ z$`OkpQmebo#Mhj@R8D+ei)SFl#X$CmX8wfg+(gNK9No z&T?hW40e`uZzk?MwWS42EW_B17{E&w1$FQ)JE6J1SL|Wusr0FNMUUMWsn^JZ&n;{0 zBeVrtf3-hu#$=b0X-;s?md~@r;KYm#_wFtR-~ueF!Zxp5*~GQ0@4K}QHl^^KuQQb zDk_4MOIKQy-a_c1g{UA12nc~h2)&08dI?F$eTVOFt@l5|N@mVEb7sw%efIO&Se=3o zuj}bz_Sa4N_qU){u(T9r%Xm8KJHe#2%fd1_Wi~qtL$=z){=}^>)*(rx-LoS>7NZ_@ z{G&C#j`u>;F!=o0=&~k$VSC~7)ux1$N!j%C*7M`+Rjez=5d{ttD405W6zSbpxV?7~ z66xPmuhzNh-(%~T(cpzyeLDCz$mgf`ev!hs)AiAM-wOLkkJ-N(Rgv6Ye^g6`9EtA+ z15j&I!u26T8n6|;_Nsoka&Dy6smqZ+9Da;F@!UOax&D<@@K^}+s(x=Y<-?EYChp0p zIG#2fLOM{vaK5VoJG4T zhYsGvpWXt^tIrE<23Oi%z4_z#0Un_pw)11f{ct%}4Y{fupjA7TAJ(L??-c_biT{SD zO3edw#`12`xe&cpWU*r$==vp zt_4<03-E@&UTn{Cr3}y@q2~DCHc-)bsBgRpNw4z_ly|Bk^HE4PDqR&d4 z^!QB*pu?y-}I`b8F4)1vrS3J1EasYwKxl>k&)H44O#&q{hSU99~hf*(Je<8w$TKzBNqa^5yv(qHwgYYn!5#-iA;hH;$x%P zzPEe$ILLNaj^~Hv+nQtnK$xX_ao~$}l}qT8p+-CVwp58n(Y&|pG194a4Oy|-Y5t@- zW$2Y_?+Q?g=er5sT}KRZZMbvd^fDzB?HyAjlOTxZ=D)N_cR5dsCSNbQXBof^9S_3; zaRW~t_k`&VaJG8oeA&~Oth3?^YGuh!FPtNYXS14iTSAI(q+F>Ze zG}Xh|(Qe3#tq6CK7@ql@F3&5+YaBXJ^?CP~sPB7&3$yN{|9tM%KV`$7Kq)KV4CW80 zrHhk?(5f(_pV_kYE&cwwj#hOQ6(964CHf_ujHn?SE4S zMSH>hhPzd(6b>Jj&E1kzc)ZLOuhWFsTjikS0}E~XRmXg`GI;FTM6;3;a?EuncG{S3 zH7}&=2e(5~cn{$}tIQcc&T;x;c-v6t&umNsk{HI>2c#8U9sGlKzvxW-;0h)O&r>CyWgDA!?VuMvtPaKfAp+Y7sl@;`cPP z{^IJ1gi@L3XmhiU&z3jyO=S(r>wquA2@g!E! zC4>~&z0VY0b^Pt-93&in>!Lg1uK!4Ayty)f7i7rEB?P3C`vAF7QPJvKe95AUQGtO6 zP-UD*ocQ=Qq$p#a-_$3xjHSU%@PEpRnS_eSDtS#r^(d-3sROly%<#+M!vLg*tv1OL zbNT5oo~xdZ6w4#Fx;-mwt2+l0_Ld_W5W9ZO8+s=jU%Rik=`MDw#N3hSwcn`BaL&Qc z{jTu_&Rxi+Fgom71`!#oDEOD!&2mZC2w#w#QS-9#MZ{B0Ngt+5Nou7XQp*YRzuNqX zsHZ*ccRHQ{tOgxEAe^1%i39APVG|3Vg%&y>UakML(XxR@8RXyp6QGV>Lpr{)40|QJ za>!UQ?6xf7zPA)C7C?LYFeQ27|SnYjZ&&`}2VKV_0u4CuIfK#Tf4ZHEB@+|v1j z2JCKG!tr<0ED;XM_2!T}edZl%veGL&5YS0e0~vq_!ND7YWdR>A7%^pvBcjK4|JSsw z{{}cGt2Dn!bc^g@#?qR5Umw?v(|Q%Wpw~d>nA&y&gC)on$lb8TL~^0f`4=kAeW7wX z7k$uJGJ6LJz%;P5dS$=N*OY{gJv!(M*D6JGA#?q21e$h_YvFjz>0p%ke_W69y$_~U z(_vYAW{yuWkjw@ zfQNhZ(hhO0lK=Q~>xkDJ9E$M!qWKHfR$sW$`B!E$=-+-3z}403_&*u8bLIAecp)`g zUn|(3Yw3{i?5yi9u&TVek^2<5O8OyWnSyJzY@p@Lzo%6U&9|ASP7f*pXWicA`uts{ znAur{~0%_hiz-M&qgZY%I_(xG}A$i1BpMvpj; zHGzE-@f(i^@y)C)P77+yKN{k(FSrjl1|-__l!&3aGupgDZ4S2C+2Lu5zttflBm57h zdGd%WtN-?#mwCx6k?s6z(kKB9jMB?iid#)Bi!c?tXkk*7rTnpQ42uGi#lGlq1^R&) z$kKaCpZ(lIzIvW9@MONoSt2d<`bB*uR18|HTr8GX#C$_2An$iQUfuhxr+fEYuDmt@ z0l!A`YMKbqwF~jUE12^1rRLcw;+E0@yE}y=u@nY2KOLCV%8?#WT6tDIM#_HaY6*WJ$4jPG1|XM6*|v@S7(1K%ICq|@ zC0WHh?1k{`cnBJ}{wmF|$+4S1#x<+ak7BwD{{~jE%qr3k!&gGJF|a@FR|b?4D7^W! z;xn+&)EFlP&qCkHtw;XFy|VJM(kUyT*Tn@BhaofXk^XTmbl|!Qt4DXD@y{cvi#tgLCsHcpMHY zDvW59PU4HJAL~F}NfC$DzaRi+e`;7#dEyfafX-=RQhOK~W*WOy=I{?I&68456W*V? zH^i!5leygUHK~fcHp$)%J2K0a#gsm%&>I~WSYBY{cW#@<3W{ENsWiK_W4Xmw?`g2F z3Xul7z4bDRE+@)kxF5j+-Qev553shHUb2@@~19-=w13$EFzOWI1KdFDrh;_4#qrSHAIuub7s?l)0ZyIuf%G`j(o=&U1 zT5swIihEw4RW>L!SMW8j*Ue*S&L+qu{ZJyx&cuT4oeSK|ib^a`^_gg|nAwI2Tig~Z z7g!N%YoG)}dBbvzP&;(Tc5$Bd6ii#49bd_vAjMgJ?i;vdbFtqVe(gNb#_D;D>z@Sx192IMT;;!^ccx<1 z=`#H*dX!@5xbm78=A>aoRb_px{gpQ>N6b|Kx9CMxnDj-4x0tc>E$OVLTktTlhV?Fq z8n#dgQo?A3R(hK0T2|L?1*}eBY13fIA-3$1x^(xqM2ofY&(H*Cs;b`;Drsj~x)#4y zS6MLI1Anm+S6TJou&au)ihN*+uP^pwxg*5M%E`fT2f2-Oti5Z!-5`Y|o;nHa2 zu9mBTt7iCt1#|wT9j);+XW|%SbaBM6IuFJ~jA|lD%a|8Asbhu4ce`bh&$>-kx?3)E zU}NTs=|N~!bdyxoc3o-+oC>#~PQ6^Zv11vVT;t=NF`vy0Vu~a9+9t#TecK`Yf%@(I zjB3Ln)tVtXBJ7w3jHP(DdzOI9?y+(E{pXhZ8(-gFkKQI&njqw?)2%B_dbPEo?n4M4 z^MXcr*hsNqcKJt37=l^_rGT>}(!6xTm7x;CUT{^cFzqH({6_Ww2X!L!?jL_v;Flr6 zlNLVD+^4apbs*216a^W%gYa~biZ{1zcOUJ|KDjiy{fyVP3cz;i&xPrV$E1O6E{oa- zHHFAjgX;FxR~cFDu_b_1sFa}bWA!{E!nl60#!o|=wV33>tfPU(7 zyx6k5Y+$Qoze-Ai(P^c~q5O;OZ&Fm3GZDjE0Zz@Buq_Ji)K^FS5KWo&VkU#UwKFV9K&gvQg7LleZhAAP0;T*j2agBk+ zCa2>r*LTTvIWg73aSnOg?6|Yd=2IB!o@w|=Gss~^OkL7WtTbmymVFlcm+|KLfVZLp zQ}Zp{9qIqdaH1)7!1s;0f`B4*+GW|Zzs=gqqHOL0$i5>*x{N$xH{cX7aj&b;l7A;T ziF9HYG=@SV;Cy9z7Z`QGkknq&l(DGfom2m2Oox>rGIMobx_@1I z*494x;>I`JxSM8lP%0lwyo?FlX`z+Jz6fQl zC$$EQ*p|+C^SCaK%lzqH8hMV*HQEu=ctliE{py_uSxP@y-bsSF%#JxZ+)z1heEalU zlVn^fu=FYaucFIpE%!7ZC%oA1f9LZD(~I5OHK>fX0c}(h@gD7*_!S| zYoDMIB0sQoYQ&y>Z!J3)_VRgMDhQfewZ0RHW4{A`@vqR384E$Fw&0h$Gw*7VF0`C zZ~a<1lBqjwi;4I2@~7lkRNFDE>fWq^0MhXHPTz&^zH$A(N|Vx(o_p3-{KdEu9Wcm! z^=f)Z?u!nE6wUqTiB(}%{gjQtHS}TBk9%tz$ntv?)ABIQ8mMLQyNtj_PMc#zV! zk9AjH+m>zw_>m&D6gHeS~)$Xu*< zDDh3jS;5)3_}}BTx9-S?#oBP}083MO8q@Ln4UcivHC=k#7x+Yn7BaGCB2u)jw9pI_ zQqH(CK95|BkFJ$fa+D6!yLZvA&iK$SZ!;!1@Piy9uv0l)(GSw-ppWjedLNS?iIoOC z8boL?-i4X{0$UmgnwEzw)g8X(F|nrGJb@N9J=_nR-)k8)~byW1pJy!XU6CR)jFX%l@<9i+qBi2C+7PKmTUgRyZCGr zo#3r>23@^UkziAqvgEV9HH(n?r%)tdq7zG7S@d(**$Y3$_dzvFZ)0S{d%P{d=|>m8 z?r+zq-L3(@*s=>^cf{h=l9R1-ftC6xFh-yDdk;A+^yV@Np`E3rEc2_Gq=5JmEvTO5 z4_l=h$;I6K^h0jtqU+1xh$&|(!E+R0v5NutTj;4>mas$Y9g|+V?;edZyjcEuwZAiQyX*}NIs%8h?HR2(=AUI$Fz0snEuZ^J{V z9jPWv86<d@yXy#r)P}XZo3|EA% zd56tc){voNLpbse(*%+Hm7Zom?q;rpo@Lz&TyGI)M0RNGCXO~P;>OPm6x62wGnWt} zegXDW;PIhk{tkth(;C;gCq9bit$U`H0B@y;NIGZnNsoXpurG-VHad_4XV>nkl zW~NZ@w~CdwMG%*vU-E~#zh8tYVk0rVwM7rlAM5xe$yDoWXGh4vJlpJe~5eSpW zC*)&`{YyF$23V%vOPtlFH9eJ<_)R;_cQ`9(<7Mzw=yo5Ug+K5-V zcEtA4uQT)jXTtc!S{O^=;Wf+Myqr0&bi5!%gP}}l$riVPnv|jC24uHvAs?wUM(|L6 zcI=G)*+3VIfh`I~#+(>>GjD9k;scrP8?>od9+9KleDuMq`>*F7D!IBEJs*d;_uT#H zwE>5DRfXh-CGOFee1A69I%o7l%TtXdECWxEh={3SKo5;;^!a{}9lYXI_BNKpufcFQ z;)RB7*w|FY6mC7O(PNUNag2^ONLy#~dAKfVtf%OqzaNM0&8UrAr=*^}agF z5pwK6PL17j8Y~|WAlAgwMW)}6dkD3O_Toy;xfd>ugzCAENZk?sJUi*$lyQCwHYB9tSyy#;i4BY_OIpbKL1 ztpNq3oxK&c3ncqTM^2SoIf1O!yfqwKY(8RaB0oj!By2e8I}RH>Fi}#?AR;IF{Wlxt z0>rNkC|mM0E2=u^WfjsidU8vsY0SB;T|UH4y-uu>2>&gwk>_JKArEO60jsZidKbn) zIIwOuc@7ms^CCGY_dz;xvgH0ou_~K^+M5wJ5H&BJTMS`DKCJ!NI&vgh( z<;f2#X|3uGqp!?UGCbTc;eKAxPHG2S^oI5V*C z#u(jR{At~*i*czUHO%u2P6_V%c?zM|A9*^Ar11t+f?QqR zW!v)$s0i<5ee+7F*A-Ydl}t?e>L%dkhN@|1IyEu9a{1oPXC{Rbv#XFx%`By^i8*?s zASNf!lGL>{V;-dhcez0o6~m+(mzk?}FSPGEx=Qxi*yLy1o)o|RZR$c_z8MBKi1p9d z!xfB-Z7mbbMw%<%2f8 zPet6xux?C2?%il#TyMJ<1OuW^tKTz2#YA6%$8hq&j$SRGZj=V0Z)U+V*Lp_6hXMzu zL+h}8=J%H1`W7mS>PYaF+O`QdXEFsMeXTqbt3AmRUi9(tQqF}^*O4)Kooo zB?bt3G$gY1c2ve54t$;*47KnH-*{ql>~^waSwLCqv8QKVjRr;;vubKnb{rgQw~2&% zBj5Vp=F@NR*YGp)Rwlx2n6$#F*&T($?l`?vUjovX`~M z$XnMl|8#gx<)8RBDVNPuXJ!x5{><&H8RxH+k0t4KGyKHR??rpmP-mfn-Hk?PYFhN!)x9?@(GV-bpm&UWwX#h3t3E<0AYF;> z?!gUtD~y=CfLEhu*o{2T9j5qaowW2Z0ww2~+Xt0@a#K=#&N`QVn>?d3>Rg4GI%#Nb zN9k??9G{;Dvg|$Z6S_ban%Z_2$R_co*z!y2@5HlnMZ79#{Kcik!|gmWF^SqU#i#D| z7Xx$&p!^#GP?{U540JN8ZUyHe9$N+-K}D)z1w40On!=CvB*V@p+-%~3*HDb?QmwCE zMJ8I@R$K{z7OVX(ZvxaN04gydo@PO0$IshM>%YO)z@66-rjmir()t?fs|ixI!c*Sk zS4Yd@h?V-+j@`}6j#fDu@N+m1SYh$en0rMH@*Myq0HI@ux_tUdz$f>M%fdan##P*8OrQZ9UtIbS>fO57S2j@U ze(1Mr_5Yv2@Mh{B^yGmuOE~vG&nwVlJ5uX`4#?p#Kaf@#T#pomE#bhvHGocdlhfIx zPXmPL%ZL+2<&gjV?BGkyTAcq;W;1&lvJSGV2$+*Q2gm5qBg_&%))J8i9|BftorlJM zpZ5k5L(tolO7tfA;FRA)cbzC4fM2_QGc)@WyME?Yu3OPUw{pnAf$wio<2Pe0H>I_- z0oPS;h>K*%MHG78ZDV`1#mn6dcOb_~K*0FMb&ijTF@0Yd5Ll_X6~WnNKHunj;i^Os zrZ>o-cm(Ly%zik}5I&NCdIAK;`GQ{^e}d>eX7ubp5WMxI)SuV!;C$c1n7iy7f2WI~ zUx?WUQCiLV++_Cl*8>OiqP+b<{x`W8P3!gfspx15j4`JPqC`4yq$Zt9%5J5R$v6oB z&}&Q=Joqg`OSWTcmqxpzF`t?NRR2%R$7ShvtStb&eq?Ur4b+EkFJ0y)7Sd?(G>)%8 zI2LHZ98M=6_r#gn5>ab89XIi4{v8p2=h-P&@Wk z%@116+&;3k`)#3UHQUeV|Be@q-uL$2M`P&_G3H!ENB9jxG;rsI zbBXz}zw7L4{rPrWtdBUjqe)NadJ@N2*pu+QE%R{Fb%BYPiQgPSo8G>D1Km+@OJZR> z_S?Na-FP$obM(#`_QvvI*VhyEdRz9ub=%(Kj=abpj#ts8UO$xmX$6J0_>XIe-6$}4 zWJadAT@U>MXg&%!E$aKx#oHY^Gi)XzAI@cSB1rj_R#pT1x;}Gjwg2Eg*d|RqgS#dj zyX3ZbxBOnV->$Gbm6Wt8_Sx(AnBi1-7g?^%D0#gTui|T>GWG91-*&s2XfR+M-` zqPk<%xlkmWw@u~S)nT9W8ptBUc8P0o_5u+ul6;@T4U>vR*|^vTRHVGeerR)9$dG{C zAjSA+`8XIHX4?`8-0?pUUq+XhUSC}hWr5o5;etk$_0jBmVR^Kc^Q1p_5MP`WSNP`# zj~%^&{P*s{+2353SX);Xt$pDp=bluN!PG+1m>98gp=&#Lc_Q2cpI-ML7s>|U5$}cU zyk8sIXF4tEor0>E0?*MQx9SV2b_1lSq1ud|e_^&sK-PLH zwE6D}LSlJvK+Smjf_%leb&;Z_G5KWoEw|QGjQfY8l8wFxJ;C{y2{SsDYH!3VZlDGG z{KILx-#%OrSNM6|JXTNWKdxti)!-pTcploQh9F3iKCj~7spa(J{WB5MpM1l_?i9&O z@8yDHaH`KvgSzQnX-N}Amyy6I{jm;LEK0qGg{3kXYP)Y-*ZE=)S)v_}YAOfwTE=o( zi=G(33znWQ`R%|}VC1KYUNRP(NQEzVJ~u63$6cahqEoE9JEw127F;X?fvR<^S#{BTveAgErV(WyO&kT z!^Mw(Bu>ud{-`<~YV%mr0dkVu7#<6sWq$6@U*5`e&Dvc`4?$3>x3>0%T22K*e(Z9t zef%MsJT3$g85Ohp2|Qg9bg!{yS)Wq+F(8)I0-Kmp6H$I;`h(2JHA8A`%kNFfv=r@Vy^8dO#yXl!+I(k+K1AX2NLbL+9{@iwZ&!kYe68&!hG0i(UQW`aK|bj zaFIX*qoo3~SypQpfP?*GXZ1%TzU|*m@0(6P1}3du0S998n&gRh!~%pi#EBjQ(@7H-iyn|)vTfN^j9#ll!x2=B%=$kixB4UdL8jGKuLO z*USg^DWV3XRl%N#(r3v2x}Mj~s`JM#h+O{dyYfpRy5nk3Or3pW1*74+Nir$5D(oV- zyZobTZ}6wbLmY8DJDrW7Fe{^`2*M1{%{HObY-L=A`D@x38x9g{OPW4&Bp-r#dZh+4f-^~Q9v@j=1y0Q`05s4>{%Lw$Yl;O-vY!^A(L^1(h zvJ@a{i`54Q!ccUC!Ik*z-&Z{y#dc@k{FZHxHC(hdwJ*&Nr_#FXCT4^Bzkd8- z;~QII@Nmax%r&dl{bv3t8;xZ*B;0DL39>;njlZ{6 zS3DI@IXShQ&0RHEhMMvY6mPYxUZd0hglV)TQJ^eBP0h9EV;4;4aI2RhgO1PJeE-Ls z;#^U)+06gbs@dnf%?QLxSI^1HwyvY=5!Oz&T?+~B%7ryrZc_Kd08mVz9Bo?W2U-N0 zEvdfS?!-S&Vl9tfX*fF!OMMA$$(mk0)#+FAA_VraRK5PaaJiVp7#XG#!^fxGUMBra zNHv*aVu9MEV?zjPNyOfsy%0^d{Le{r6^TdNUIvP>%fVykP-vU=&Bp+ETSDA3UF}_7 z_+^I6H0JO`Tfp@w)3gr~-yN3k?z9KK{+0-H^}QOP{qcTh;|hPYp3x$ zQ4l&{tPda*WME{TR7)O`{_5O$#M1CCXimFgT;OKQ3IFxSP^%>9Pz;_jW>|)Z{f{ek zNyW~|p=HDcp!VUl65^6akW17qW@tHX7}=!PKnfRL0-vv7L=^}6a)7D;g=X!^q4X|~ zI+4|8zUho6$#hUDSD$V+#(Dkz#`1{HpM|3t5_cktDusERsV)9{%3@nX#*U3JP`0k8 z*ZUjKo@2scY76dyXfIAauXlTDTDUR;QOM}z$!Hf9>p@3u@16TqoA$&B7cP+M7r}2v zBIY+I=^+~rkHJnAfJyjJm2p8IoOvr~k&gZKxV!zWT%kY3ym13qyJ9#o46SUrruFLa zCyo?oYF%n^zGr}i)3++Hlf%e`N#gfZOS1Tj{-c+XDM#G7B`nMo$Kg;Vv@%2g^|Wn( zrx2wS@EE-Y6wxs6kg2Fp$F=GoV7UzQ1f6?1G*P3-?Zvj2WmPniBj!@v<4^Cce7JuC zxPSF^^6{YWKdjd;Hp+)FA?A#b@X#lnEECg3B8=z=WP?QhZOqDZAjc_fGZa((@&Fa9BHw047)!lAj``lKAi$>@FJ)r!R#ql|1t9XW zxdECyQ+7bHW=y#|`dDohk?wZG>uDmWz%bs+zH#bn%m^XqN^4KjzRsAjdv3ylwY~J4d1Mw#=NxK+oA4c_Lyj^9W3-0^rdQOVeMd# z^$bwW-=@RibAPARe49R%``)^Ah%CUL=)gJJu2r+c!Ski-SUuBcOExBKJgO~Q%k#Ux z!hlhZ)?J@7eCeos?Rd8C=DcxZ;>ZX-Bx}pTV#2kC)pvbu;;n+!v`|!M-Pu-&9p8Tx z^Ar*sT44h9Z${1wkCZLn-SFunN9XZdd6&fzV3vOhaCQ5HzCY_?e)nqE&Az1fysNAj zKu-&_|}v=3oFr}-X0B{E1~(f~l_`fs!JELTH{Ok z_!{bTZMoT9hxMiPPWY@m8!3EkJ0>Gjo)KCHV$wGH=;yr40+oM+bFIzi`^zMPyrX$T zZhnoPTUFG7olX!)`t*vg@(N33<%rUS_$TYuK~F9#MYS}IJ~rtp$ud^-O6!^+b^IQ| zeW(@FHviLnGwfnjcRqB(ko3;-(6Qp;`s}$`C7y(@c8_zNk4qrAk2Noy2l$|J&a;WW zP{q}*l(hU^_flIgRoN+GV;mNDlMS#E{Fb~U1cl6z?mkDDA5ky9LnXfsWrvwg4~i%# z=e+l8m}VKVLloXB4Jy|re<|u9y^NFuH_`eLC}iI{{%KK&;X-!~rDq4CpBlLYj?4)R zF98i1UlIStNamTl$X&ASl6#79a=x(=> zG`+4|-EP$jAGcHyqwF;T=|(xBCV8gkP&^(x*=PSKpVA=n91;EK;PA1CG&T0cNpO6J zw@W8+TI1>6cb4aTE{P@X0Au3k!0v;GhiNIIIv)moHLxqbAXCL2!|sQN9~X+yft2cw zf1DOGQ9R6??%yT|1V(Qz*R?(*zPKE;?9VGVb}12>Id(qDYe;D}+ZHGQ&2&4Z8YD0W z(?$eP3#T@TB_-B!)6WYP1xq`XmbY||w~mXi9e?+rba zRChxZ90O~SOh;*(kiC{CiPOX+^ZpTNK48O~F@!m3_4W>B->subCUxRt?sTMem*obT z#GdTWKdv?4ph3iEK;q521%z%Xd+R+0(@{6a`?@#(3=R3mpMVArWoN!OB7q0mHzw}Z zM@_-_YL6vOuWYp{WIJd-a~5*U3V1hh_3)t&rA9oF){Df2w1C~T!u#12Dj}Qk!1=~G z-(o%MZHu@ijZN}G0br-PYDJ`PMUuQ%h^BQz%906JYmm(iO%Jx_q8^g(W6{kDF=s8# z8#T?HphRt|Fs$2bcj~(*0#{N}IcdmkN3r_$$+3$nHEslySuuNyP4=0Jb+P_qIj2+r zGBw+L2)c0Iy0W5*nDLnSjAe!m+9{THWAR3t`u5)*I4>=QQbFEgiRkERnUbIy9+aFg zelp5&pTZ`rme|y)E|+ij6P#2bHazNy__RVz$A-upLO=EX$_3Tp?9P1G`v5X?YnYLZo>Gq482ipkk7;~fh#BkFG?g)_7=U90 z=Ek4b4=E*^&nffFiF~|uhx>Pb$O4vbW(B2@AUVpf`KhN?ukMm#d&5QD6}d$_Pa_W4l-7L-beZ5Y4CkYbyLz1 zL27P-Sy$QK%iaLN`TLc6sHG^;Rjc>8ap zF+%loH(cu6yaErG_X$zCk7fyg3d3A;md6DvJJMw4*({}r0j3$xOnn+C^6{VyG0ogc zk&`8np^o(l)A<3-%IdxI=&*?JQ@+NVshZAuyix$8rs4c(%4}}w@M_^?81EM-zo%e6 zCSch9i`z(o>VS@=(Y)8cppEL;*~mU;BhNt1E)+gE=%VmvX?p(nf#sGQj#dlxSPQ`J zN0opVwFbq-1Nmo1X~-Xd+SqoJQl(X+zVSq|7%Cp_N)ZfE7SsJ@^91KLf`Ta1er>v9 z6xAx(c^p!J=<}@g<4XbVNYPRGokKtn7SKL4r+G{t&_lO2 zmsa!N7P_{bPgyOWAaDOUoIS!tD0Da^<-zabnn}Ma!F%< zeppnK{gvYfxO}&H71B=})wp24#pXUx2CX~ums}+lHg@uR1osG7B9m>k45+^zNyw_> zU-$qGkevVfAVCxbe)upPklH0$&+nZh0WAWidzsR z1ub`XC_x4ZtUt*AqOu7KY))}$=?x&#YU2z?KXMMJ$~P=4i|{^>oCN@9?385^%Zd9F zKuGvDRFgedT(eDP?sHSbP=|mP_uEUkXp{gAYZYEG$4Tsa+RhDmDjr#&W{>atpv^b8 zb5d$52$4m77enF*3%H!>mUkvlDC{4z8{c=A!Xwo9;r82?^@>~YN=ZN!x` zro)79H}(Km>ed%i7HRQ739Uf!&7n5|+Z!#7pA4wztcVF6#FzRmW7U5nvG=I-4y;33 zc|>f9Ht0Z;zM8YOsIMQ6Y6bid4Gs?8`$17f6DcUjr_bB703HT^9R-A}m6VTtH&6sm zkVmy~<_}Ry2apZ>7jMz>yAa??IQ_@<-yr8?@C@y*|4upj>KEuG=43?XY4id)TJd1W zXSo}8b;9)qfj@zz?@51cvi2o`7ZHk_KQ2l*Zidx3O#fHk|s~Tnw^R94Gs(1{c>dafq1ifj7zr9uY4Kr>p~)| zT*-iu;NVkX9<@WC&RzKxBXU<(Z1kPwKhzpv(k}XoHtr@YhKnTKAM~24C1ibdzw}SO zEh2QS|7Uo{6aFC6Uw{AOf*lbz>Ce3SJ52?G!a4$TUJ+W~Iozb*3i$EkiKtBc$aN|)*)W3VLF~s=j*N>*yL)5`V+WfQgL+l+!u!hSZT z*}fsN_^++_kNK`lPArOFtI)XS)K<}Rga;vNTsh6hecfXByCrPkZAEMW#TX-osisfl zQp{V0AGOJJN(Cu8G;5^r?;o=umYToha|t8E%;Rqqb8)h-Qa zsg?J8LB9U9^jB$>>#3@2F1mF|yWYshrr5DYHvU4R!wIW=S(a8M4zxw&9E&6C889-+ zX?7g3`ajLjzIr;?RwKiZs^QlL%3>Pd6Wy+lBvv z$|e>?R|=;uB+T|4`>GR=hO?EI&Qi~6c|aOp(zR5s9PN<175!N3N26e?au?0t#ftZz zy5*ILRKQ4#_X@C1QE;$!sWSE|M~9d1*RXc`glV z4YV|m;_ws8W-hCuPCp5ZlHySMtqaz3Xv&K8!p|Ci5$|KZi-w#jJ!L99*qCPKu^Q5} zshgdSv>n2gtgYY3K2}rgU_IhsFp+9E0BglzBVD~>; zV*N1B#GSAUxBJVs94R3P4RvHiV4{2oLox4(;#}5b&|#HMxIg`3h}zDLSpBHl#wOcv zr|s3zjZ#x`QD&|%=s8{Kc@s6C?B+@yZ$L$j^R8jqzj~LpB8z~y>bguPiPJPa8Ae#q z;?Azf2y@|`myY(yCmr%PLItiV2@rz#e?5*rc_Zes#JDj~#|NqcF`f8al#_=vT<7Zs z6lF+s9KodvArZB?IHLQ_Jem}onmJ(fg7oO)zK1=y&BQ<~ZzTGBtv!!KgVSB^3+w;h z(mU#Ql+U$9R&l6&9Pdoe1!HTQST9>k;*|exNDYl}f+5(ioAbr%_uA})$REW^VKYwB z!?RiwkutD)M1uQ2KfBelLNQ3V-w6qIlAH1OZ@fN|3U{XCtD<9`)lF0M7ZQ=fB zf4LmdG~kxCu?$R2mV;euu?g{PMlWs!ht4EsB&F|KjgK+4Q7N^w@{dBT`&X^sO9%zZ z+eG^(ZpXH#DdtcV@x=N@=(7(mQrma#A9DJ7_UF~Z1GgcknhB0LmQ-Nfcpu$BexItB zM$9!?Tzm{0*clx00)%I^9SHCmkX90iox-nF=XvN!uPu*Qr`ioTjH;Dmgd3BL1}6=A zdVWU8XGLAJDE@vv!TcY2zq4{DVymLJsDoKNju{ZeV9h<_7fg_0I#T8L^`7t6#W}W3 z4pac<)#HgF_pV^Jey4^ zc3a}Q^NB*aA^wjwL2{a^WYeLc8oGCrOSYw@XPFZ*Qa#(8;1m%4TxuZ#)9g5@nv;=r06>%&-++R2pm#Owmsp3&422=M^_S2U=@Mn3NFdn1S$#+4`@st$_WdfUiF8 zFn+~}NHzEcn^TwZxRjU=IztJ!_mE#l|Jqn*nZpz>=HzYFHq<3L?sav-8e5o;GIl}} z8%-S5(>LSMX;Xi8A#YIU*w3c)KLi&>=s>5MD66NaBxY7i()0r?CU4N+>BPo^@)gmg zTZbA#0{>Q5RZYI|`sb(Lbjqpc{A!n#pi~ii2f79n;pjDlBVeqO*ZwY?Fy8PSAlRnR z!{8x{VU+;YO*&U1QjL$-X{p-bw)6V2j3SRs422P}@dN%wS8Ja9D(%FD-IJFt?zuiq zF8_VnwK$H*r?M+KQcFQXs4Eq#m;OZKO&AW zAnV%3jL*4_RQ?NN55QD$m9;#(VA(M6k=VGeMN|!m29@8&ar0M9RxAxKo(eOBZ2vBK z1Y~w9zXPxPct4mZfkNGL^iaYT!*7z^%?4Oux-{<%8UuZoZHeLybzXDA(s?Hl?=ZCu z?rUgZS13{|D}6~Y*zSNy6~C{ieXW=AjP&LA&VBdO-*e|aKlIVF7p-y0e7gOXPBVi| z+bt4lLoeX1f0ycm`V@XbH6f|1W0~L{)r76oa^!teDS3px`X68!(900*1xlr zbDF^!FUZL7W-#QGx^jA^L#|_3I8Q#aJZmMiA!G`wBQvdkie>?2X5zy62A7wWbr@c7 z1nk1<=_dwdi(2{b*d}XZ@l~Zi7JlpbYZ_{57In#&1WsV|1CsNy=y`4-rifZ%FpLvg z-+1zD(!w2wbpV+u!n88abU&WSp}E;Bc0nKYTn)28%YVTwoK37aSG0d?~Xy3 zF6~Eev`-eBqsTKngfU zQRik^_;rizPD^5;h>S#{=Ny=jCXmxFcSxJi|%+ zsGZq{jYM1i^JcVK%YHL@jM=o-*hT!g=E;$$ua4^lK;c+;g-Zo>VyLyCd^PL}y&zhDjZd3@wL51Fn*r1v zC2UE&_D@M%f{F<#ml(?`zDwXODFaAYM7lE?%Qju(6#6`N09 zq=2t~cnIIP&JVwEtJlnYZ~0aegs}Y=D0@&U?Bl3a3a&xMD6QTiY4+9U%w`o5FMJ%T zc0L_)pAmD~H;|e>m!9YoOGhbDx3<;uk}_*3TNEanx!EWks}_eTUWz{tcJR=0t@zOI zD^v5ls<{zrSE{kHo)D*hq6@AENE_wdAQ%JCzgMo$CA+59u?~iA7IJZ7l;Qc$ifR+o zt8ALQEw5YE6(#3ru)sjuHzWj?96DLN7mVY24VIL>W^H4+xV=RN7PTFC(dd^i(TX z+2@$&9u)x|91gg~#X8pZ1mHm!Pg?7pY1dO*7Z{}>{9Fp2EM+ULKd+PxdFhW;8|XGB zCZqqYzEUu^@N_1tpv7kfemn|wa@U!VZaECRcdVI*pTCss0Va-{*Vvh>_Z7FCGxFn$ z&mTg7WNXl;8QK8Bf>0ac@nSl9q}KpfS(`SefJDn_CYY}ywl`>2#o8sk8%fP+$p~n0 z6H-^hGDS_epJCaL^j-)%yTkVTJ~eULA=GM6)l}bX-LNS*)mGHmSP$D|ovN0tXfnSv zc}B|G&FX~g{ePG5yj`e^{b!0&d||Uot}lnwJC0{v6p*G3?)VZE5Mj#0sBfBZ=iQ&_ z&(YGQjq(Hmut$}-3(V6cdj^CjBb2MhJuS>6PoC`fZTqSyto!n$;{PM*y5rgU{-FH43DdD0R0<0jC@H8gP!(n{q#e|+c$4OW&snC&ZdMh1b5u@EmcwyRgcKwGace-1@wfDEJ@#zP}AgIHr=XUTq z#?S+kmIsFkvs-r;>l#O;)gVGsQEt%MhY+tn<2dD~)8 zHnq5sFXJ2^w8(WsJkR%KT>41PZH(E;nTgzbQ_^j0Wt{;%v2S_fYi(1Z`AYeKDZ!3H z@LJz%^0g%IyTbF8KQL(b{nT&97p|_nSD4B|oDHn7-hKYjngZkM0L})4@iVK&No6*HKFg!+(+Q)>VRv}tCYCpPt#8zQm~*^)O>&*J{;%N3 zd+rqE2NRh6Q@Gz769w7-UR(c@&6R z5oy|IKv0sWyz8-U9Q6yf)_@&d+^Bafv@NCKx`lU~c~)H>Vix6mARXaZh%#!Zu-mj` zVOdF=;*pFw4XZGi*XO{1`T0Jbw+j8W9xCs)zRaI~tI#l5^)336;IHwASF4VW9SzEv z77uF(LL}uB8tL>60YzA3#$TrVcYAg~cF$X>elk6=EqJL-N)Gm{0l3>7|B|IgnFzA3 zc@e%T(UWsJ=b5vVd0Ck;s&TXq3ZI6@Zg?3zqi5>|01>2nD+JcYP7I z^dWv6t05|X{=|{!$-#t@82`b6Ck8ZG)FzqX*_cvLFj907OaM?qggW6RudursI8t$I zpenotb{eji^FLLTWv1Ac%$Mvusy{mv?HO|V$Uiv<1xW`iryipCFYQqQ zgq1)ZpS)9_)bmyB)4GnnxF%fDZqeZfb)hY;^i9^i2*2U1i1 zpX7ovO!ZyKwa-UibFzE59b%O0QZ{uJ%x~L+QkCL|c-d|$`_ljLw`Y@cb3iTse{7`+ zaZ81qr_#6W9?jxr0h6oJ?QHzvu%X2dp}0Yt0INePFh(uTw(;FE;`@Pj3JXzDhr3!t z#T^29v4&|5*-QZN!~EudRxX?c>^cvquS(g2O**Z5sZ2Tm8Q%pyPBL!m2`L8n%`b(? z#YbFlho~T2;v(?rci@mmPp&j=0@eTDB)Acnh0QZ-DP-zsaUE7bUn#u+zO5PJw76%&E$%c@de0|Xn=oMm%NS-@mj=qnKJ%mdHfzhmTe*v-sDGvxkenTg>cxf!cq zVsu!`u*M=-bnf<{icPo`7XN$#+SDg}*kMlP<~*Rv2uPkG|L(g(>WbHuL+AjR`kwCK z#;y}`$k4*4{;Fjnb7A{~y7#;bbPa?^o~VeClGgZfCHl3~=tVYTA8`i#-{ z_?a*u`=FJ2VI|y|xOygmt!w``LW=WUiYJ8YH?OD4zWPLja>(2+!r`;ipM#Lu7!KDS z;QLrjkKy9qKvNSbR=|iXtfqOQ{u^R(1Kp$PwF3S*@0!3`T z#MR57(qp?bum2spv>)_a7nI1zfBilJ*|ry#huIVdo-O;IIK!KC*d`Mnhda#v&tMPp zi~noaevKZRcVbVKcj5*s1O)VzFcuNG^>g;}!VV&D4gTyZ{P>GKKu(yk`MtBl!F-UwLj?s=2c z!K+A&>KGf5nU++Z_3-QWLm+nBL*+EPd^&C$GI9I7bAh8ZtMG9-GbCd_%=d$?O zd49>8RGr8gg{&9p=OH8cE#hZCS|{^*+haBC#3c5#T*=Nr^57VmC7k}Ml4u%k>9E?_ z4dM$w=Qb+Rk9k?k%jcnlZ!EvK+oq<-g%eb94$_czy)@BKO@ko$H3Z84bj zBy9>;L$uFZ<;l70SJ-Q+6x&}?wYl&g8;98jZ#!Q8L#Ti^Kx-||SECJfbe)?~2}OHC z43n1^WJ0bdk6SeM1e{LRD|&s((x%+oLT0YX9z*cJ3@-aXea&s;7nV0vdUnSNuf`a-3CgA-b6u#TDp0 z;UalKMdK;VDWAF%GJyhar^9}EGIsPGP-|9ag6!u+XrSvLZ?s=e$hTK0kXw{&G0)OI zpO)v1T!o&Xho&8>slSB^XlT)*7-a7_LT1j;3F$>ootM3tYl#@^@K7Y2-N zHHSNH@?X=xc})6@aiEAQet*Egd~q>-o+ctx#vnf|k=02t02?|GDhRqep_{wK3i4;? z;CxK0=*rO^%dVJ?0SN9q{cl^*0jiafldNHSr~E5lhjYraYmbT~1$xaYg8IqEt_65T z;(SABCTA62TpB(|9k@r@=NiA)i?!-!pm{W%B)0kGq2u5y+5!R<&=TosD05_?b_8PB zrhLnOnyel%maH;slWUEyT^zBPHENKQ%|(v%_ze;I3e%UQqSu>5M6t1Ra4MN>Wb!Xd zJdPoMD)2V|E3nj8A3uQxX9?(G_tf*9pgt=Sd+dX&#sd#TpX#Pxz2)cMdfoKWq{^6g zpgdF?D<)Q$hT^Y7R;=vLS+$K<_}Hvsv!@3P(Ff{zE`i|>;Q$T8WWeTT2!t!hUr?aU zMf@$qC?1CLP}=4j$P|3RzO>v}AHDbedBE)K*Gp=t?o#wNlbx)90 zxB{3NnI;6*G}SS8_BPO2&IG_Ih>^ zVuZ)>_<#7Io$Ys_Am6dv@GvmzoSj{5k_hy!F30dVp_ZhukXYlcriA8ZO7$qnpEEqG zPI7ArjNmvO#<|9%aY#sXgDpHN=GJ6kg~kWD+Yn!~to#qAMjh%9Llm_Sk24HqywjTrjk76Th|6wU6qC7`RRbe+3-M`>vys)le)lnyWrkN+OWW2D}>+H@s z!ycLq3DEmZ_PC6$B?jUgrE4Q2TH&a?EUpiRQBNB5<8#gad^c@zER(OqAkrmwDGQm( zqg$x~yNaF~X1S++n_JbJG|Z7hAcc#4#SA0U9*cp=HB6KSxIl+Fl&aQ|6jtt*l3gLW zq@+CoJB2}~KM}Lkb;5a0XQ*5AnIU<3!Ca=rLhy?oK3M!eViOuDU$M-pF8fe?<+oZ> zjvd3so(jxs8(-2X#OlC?*;+zI1sCtpo%UK;14f?Bkys=!p@v5Gl8X!HdO)qR35@Ox${7`Bi$w; z?^bnGh^$SRy8Y^Cg&TpwGUxo$S~=YEDh_A4F$uMb^V;j)`zc#;rAb3(ZhV9L6{BFp zS@82FLi#13{V9i2x|v!&jz~O_Vm!JIIbcFImT=>|AGTS?cPhjqGz>pKR0gzY@wQ4V z(E(XUB)58p{ng|_ni6JQeb0xx4p;p1Ewf!reOsr$V@y?YYZqqqCT?}7OmZCX#S8#L z8AcUbL!pVuzuXRBGCJq9eq)vW32n%)b1#-WG;`4;mh#$LNx+>B5u3%E7^*T5nANIZ zZ|A8elkT<@E(&Oy3Mhal;#I^yT`qbHMf+QWdj%;KYVV{vXBM0{x@#OlMhn%~4NDqY z2Mh)xaZnLjVIphryWNJ=AWMQCfX0-E>?%*cr1OV9==ahvybA$)gaP35i#cY-dra|p zNHcmIGM65r=P44IPMI(aERt}!?RDfb@5NbTvlatuE8YMzqo$Rxykuy=5cA59T(z(M zq~thz8fl)^H`q69X8&g&wtAr8VZB9nZ{{L5%3=b|mTo{osF;(TN;!%Sybf;-ev#(f zR*oDy^2RpifS>6#%`=8(nj@tZf@vI$?|z+z_!^Pd{`2F%BLba1s;tG)f7p~|bK zq}B&JNr-~^Eha9a(P5SK_r90R*Vt@sQ+|l-L!+V3@v$c!oh|+7G(-EyxxN~xr*l3z zLoKyn0OyLC%Ge!=v%FC>|1i_1OFZB}p^hd`-N&zdSO6HtfRr`BLx|X~Fw)vV`>l>v^6dj=s(tb+gm@Fc{S`KAw@eeijJCS7 zFPFz4Br)HNX)f)SlY_FDcQ>-RDJEy!qDzzL z0IWicn;n#wbHw^l>mD1L+duG+ufRWS?)@Y#Zl8WRt9}OE(CR8$9xeQ&($u!BYcgi@ zOI^HpZyj}^95+s7+PjEP8U=4J_zpJ;JF~~(P74GoTM>Jt1Y4${pDtWK(4Pk#*xgAD zx{*!-)-m*z4$xK9P#vAIBlI!7^v5F(PD|M@rMre*?_iy{$7`b~3Jd`T0@(o6(V^b_ z1Qpr`i`!?O5{qL0RNy!S)y(l3M24{Zp$RcLFD5WSz|710EcU#vcR=#pYIXK>uA;xM zpDn8%+Z|L@HI`-`$R31_2-nOIEDiv0*g+=K?;9ng#@p-a14HSw)DwO|J{N0~a zOfT2%F{enri3-k#jGTdmN*7|xdq(}bZbBpIIsCIMx-;c?a4evqb#q36pG)rRCF1Nm z!;cfrbsx*wr_TTJwf$OB4-@nv8Z!Z{JnVcNUHQ(?G6A#$BIUhzz{a@>}%NPv>u|bzhjTh_Yh2sg<#O7}SrdpLgOqFC8c6eK3pk^k1{@TgLAS zHJ>v{7f8V)f`LBd?Ovs~$)CE9p3kzVtZ=S^j-Jf3;mdM_OthLd;J+!uGn9Qn^xGp9 zXL6G7nYLVhv-8VSdg0OsV)B48)lRl5*8#JyJOF4}n4~7-lyChs!xE>?Qt~1Ti*4}&H=Z}px zN+5Wdln%^>b@FhlR2r&R8Kzhb$d1sN^FH|SSd53y@V{ys8KX5`vj~Sl+l*WV;rBM& zWXk4VrdZ~g6HQ3T<#*7tG7Vf8ZCwkwB2A`a8<90RjiZ0|2vyTIUm{XTThlR{qc$*D zdXuIx9kP~&ibF!a^>*%GS3B0@F}|k_l|j`fO|4&hJL;9zI&ue>`Kr+8$JLSnlLVEl zn2HR|!jn(+Y5&se?86r6PAIM@X03Vdw5od*uDNe|U`8jSq-6r_@N`g7x@!>f*9Lk+ z9U(`)x0+jExMi`Y;r%SOBNjgVoLA&^OSDWI?)cZ5HXsJA7ZDIEo&us5YPFr($b6Yj zE{}~*_$C$yr!|x5_5E|q@P-NnX~D$+yi$gU_3+#|YIf!_>?PXuO!i(+-{@OWb7dJr zRZ1(@pi?Zy-ekJ<2Scs2q874lA5 zXNwLk%g&@c9YjCdAk;j!j;FQvR2;c-%kjwh8s~1w`0icU%=1^Q?i!S&m|S&TtS*yD zBiszItWY(bP59bW$j4e>3c<^EjuMUQtDEr&(kj=8`S|4Zrwm#9b;eYrxS_hNM6@&F z_B%&?>k5OijZ~w2byu5QPM>_^jcl7@=L#EDP)!L2XY!C+jkRA?P*@Xg)9hfs6|VO; z+jNLwr*3Y?*D=$hKd_w7Z%PMbqTTWMgCsv1kDdLc*y1n9uw|Kk&PQLzj@*1I&;B+o z7<1Nc!)N7EgV@0B83H004B6bsagqP~eCUe){jR$D3?t8_*=p*h<_)T0ea6Fnmo>YU ztw$Mk|0ubGxHHggIMI$;YnkN|?Q#AB4i|0kYhR&==ds(RtL{$56Buth|5{>xV}eJY~P}S76bqOH7UJ@EraJW$sT8)Fp{(t6kv^a(!pG z_4-@x&6t%Dsye#Jf((Z5su!Zmaud#S>rJa7g3jfP#FP? zrUS%y2Xs``PJd}h;o#183u%=`fuv@U<~@3zx*)1sFQzrdA2)4Seq!A{R_}UtEIG{G zCtm7ycKDv5HugWZF8`3f>+a%~HTrhCfR>=J!-Cno7yE*&Q|U=`QV}6}$;`YtMSecA&u8vC`eA;-Hk86*8wS0Ue%+OGhb$fox-{mS}h&B{(t z;LQuOaId5m%R6x|%JiXA7!1s72l0LPp`Fm_q1v9kCeHuZAZr@I33ci66MCD}gByYd z%fd)aP%HR49=Udgt+;k)KoyRvn6$~P32v& zjy5ly7jwqsqIbi^aaV3fYUwLb_Ys)6Jfj`u2^0L+Mm{>#l2pa=|6N$z;{B4?=Z#mz zEgaGK)Snq!!zbGpT&ilML|vh75I07q&?j4I#MO`>gv0DgGkeW9(z%w!#>*k0Nj;(i zwsep6R;bLqeKMR(UfZovUK9UVHFeglRGdbb1B7H1=6!4ig6BLC>79R+$xDUM zI}UcTMO-I;w3K{Le%&MV*u!UPDqy5A0y$!a;ztBi0&D=1=#GZJzy=w!&%3ZsK<4d8 zf|t%0cyNb|^^_Gw*;T7qyKOgQzOidqfjvkQ`;V>R`mr+cFARyHxX<~5TbqDB!q`T4 zvXQ~TCIEDiS3REO*zFEbi(Ww__X?+z{vQ13EWACbLQVM5bh6!MA|z*6{1Ezj1`s$w zvuf(p``jh3B>=x90!HrhlOy-ok6Lm*5qZ=GP#5B5?EFta7r=hkIXM8S3e3Wa#NjK86A0OXNTKw}mUJds zPS}RMVH?=YT$i|Fo4ifRBQu_Tj$#}lh&C_(Y%wEtucTv2#zxbJqcr=-O@I(6x38V@ zp*93W9u#lVVB1eL1Y!k-PXtHv1R^J4^Jr)_e&~bBapdq^CjnRrsB*#&Lj&?pH~__- z{-ZqrML&2uWO>L6SI7EWex%U~H~DP7H=D09|q*g7QeOV?CbD zV%EiX5qYiOJm8ng|1X4?-Ge5I*c`0JR6YM16J!j=bw=Du}4Ao$r?#>)43P)F`-b%q8{E(e(~ z4`TLwKH>X)t7~?5?*OExdCycA?5M){ce`)1@YnG%KVf^{pG)nU_G9ezoz3b9hm8Y^ z*P3ryeY{&l_W%UD&~x#aV6|_~?4{ZD;!>^zj{K{u>KjZGcu0K3sioIp9NX`!z`LwU zV3YwR0o#M%Xa0TD^O9`O{4dQmhrruUvH>hyq0g=a&^VB*&^X-7{$9@c+DS6OgsiF7 zKXWw4Z&@dBwhq*{+f{l((+6BSd3lAp&nobGcIg$b4~H=37!c?7s?+`l+~2e1sdwr$ z`x`vFf8a*=-^Cp{)~6ASe7!k2w**G#{qOu^oa6P!RP5Pki4S~PVIk80n^Vm9l{?B0 zh>FA4J$jvtR*M`Tx#CIw)_x1e(?HW(?c+~9(Wu8>V$c1a@p62;otivU+WWsrNLtw zh0*$}UTR4N-ftqm zDubY0(!hkW5WdDlRNwD;2j(1#v97`mHyBzj%9?CtE?3n(L{JKda!c5g&HmK9>XF}X zl{7p!ZaC_fy?nMwoyS+XV!xXS ze?*nLuK`g6AO(@#|fohvW@zmscs#Mke(A?i+;*)s-kY~>X+U#uMn`>HE$Eqcl6{v z;yd48G_K`_b*Wp#G3c&{w5@K73+Wj|!`&q^*gPmNQcI}EzhZdUo$2sH_zFaz@)7b{ zf+*>9c!2X)Y<3&G&fZ1$`jsa~I!J8Kn11C0xoK`@$ykg8t#|=L$L#w24vc|s-N^-V z3)152mb-a{1Rg(X-_eGrfv)2Qz(Nm~q?++$z^jqhqd>1+cZC5{W1Z5IqavTeP?`GI z>u@ULofEkymETYO%Xmai*4M;?2o-*k8jp!>2E_*1v{7)MzprhNSS6C@V*Yu?<`oPHC@$V~xE?-NNZ zS6t-xA7^dL6t-rD7N`z896t$XYvuVGQ|3wUzu$s1CL5Mf+RHj$a3Qbkyt}pQ{(bD% zlUacm7W1kWFJ*O#O)J7`jZM}A@Ia0Q8RnZH&Ff*>=)Z#~0wl%AGb)WnWr0o(^+?jB z&NqC5veAPc*0~1RhkD;?9TR2LLeJ5JHzP&-8>ioW?0O&Tb{br!<8AUJHlxXyEZqAGMI}bj-8i2tL zthd$tv7=R?TBLG(Dx43US7+0qlEM(*u-+ z@T|gwMoFjZ{FhaXBM+UzM6$&>aM@ha0#~Gt?3Fvi|Ke>&0=maVkVO5 z4>7cl_ayEHXu{iB$H@NicV;`at_-|n^d4QO477GM3w#UdQedn*yVV{zst4wly!mxn zWbct`GQB5eMk&+uk8B@xh?12D|M84QA`O_CayN*Kq<@V9WS791?UHdL_Ju zck6k~sN3l)IZ9R=k8dR9J0;bh%{_HlWu)FRwcKYY_572RcT>QRQ3hZI%G2ni(xFKH z#T=^dkTk@iiBN>otoTk6<_EAKz8etU)ARlDS|l#aS#8aagMJF}(@`#Kmf6!?FkjS9 zYNl9xtEA(7%b$03kG*uSh(vRmp=8f{4j3zWd(!!~2>Tq_?WO(OWAi#j=yQ1JiYM8D zZ13;`bh^<36jQ5d%D>vQ1W2Lz=Yvak;HFs8_}d;UELB0-Sbv%5ir?ZA*+@;RDR4Gtyp&|>?cQrwOUe!TkIitINpBbCsY1(W zsCrLwbK1#2X!3}^-l&t*;$67o(B?L3QHS^XJ^U63k*6#RksB}%ma%60oxM#Awxs$w!U+&9ogpOq=UY)~tF8;?h zvE!v7Fli@XJ}4W0m2NBX5h`?}F&<<3yVWfIJ;e`n?gvKHTaP0R_@X3Hm!_wG;sX(` zPWiu*JyVtoD$lRg`8T&ZXJlqg0=`V;oxPa@M>x#K6!zucD5;Nuj9; z{pLFBJ|A2<2oFoyCx~oHZ^^C=)n!cNorP}MG&~GJEhsh15#OprZ9jf**$?{S|5WSO z-M!lM(E**m!CejF#qd`Qo3)m~AHV0#cZ>N41`1LG?g#gl^`)`X6I(!Sq*BC^fw6&980d!4O*#Oa55EzW3*sr|e3O&JI40D0gP2Jx zMl{jA7WVg{zll&?ouzI09wvjCkN(v4%=T^F50bK5QBU;4jj|;bitxSHf4@YiCbiG!EcyIuQ&|AV_8Q#(>e&0YcB<>@*p%02n4W z7(UJvG>@ZHK2{pzf3TO6=f6NC%<@11NdQiRl|N22T#0sPuTQ_4?alUWf>Z*=nj)Gn+03zoIR`>_(d$;B@WT z#euR#SWHFbboG8EUcQ-%jONQLYw<==-GZH2*{I=rSwp$Mw)EW<1uZ9^@Po?@T~!}+ z$6modZZW;%-B^A#**z{*qFoCjHY`^K?%kz>?@I5%do3!wZmz7Gta!~e8GGqxKm9TY zNGP7R@yPm&9ojdUkj^!`^OzY*Nvb0{=9WD9YGZUKPZqE{-O8L+H;4hV8$_Nm&jwpy zT(+>yQ+WTuZzSK!!s>)>ni?Hfh19J8IBWQf=t{Ad6yY;=onfW!Aj1?rzGd~y z5xmVYIa4k_lk05_Z#eZ;OxEF#Km^(b~o$l6fn`n5-5{l#pPm59|}m{t}>a4 zQ3_tXEpVl#a@m1ybjh4$dd;x4E(~QeEShqs6jsq>@m!h{_ULMZD^kV0m|wzVdlnHy z*P%k~yBvs*{2o%e&y@wYpyH=0G(#e-75Zd&UHT(# zSF+u_LJXEmS^1Zjalh}ZR4pC5{VZ*%q^Xh|#%wa)+Grh>81ySs)a1~wZ)~Vf)D37# zSlVoXvj3>XG2gv%9}Bvz5VP8@FpzmUB6t3h6yrb#t6KKk(vnyKTc+-MuKby{?v_fd zi5b}QtJ{L)j3$1zz0v6pKlOF+g*@LL2h13voT*&+ls4)~54aG%HBOi4c))Y{6b0?B zP>}i}1)CBgHbh%NF{(1h{|%PiWYjcN)4Kw&ea3&hvN{;zQ7hm98T7X9H+z~<8P~Zf zJ9mDi#TWJ8l3{IkyB#fhl3LGrBIP2(p8}%z;1V*}aB0DV`H9r(D5-qu;i!j$F14R2 zY!c}79mK1lkK#(aScR$5Emv#|*2xe{OV54|_dFH2>^1hySK?irAmzpI>ti~$OM;2F zP-6aGVno*EAY|y5jksO4UAuYsxgD<7044p4&C$h};VQGGtW-dVmEeCz1@qu+S6Lk`v;?$sXTzvyaqN&+;hF0YKkWxY~TA-IeTZ` zN_y+Mle2%p+*bORo@P~N3C*!sYji** z&#F+y8LBOLO3Bp>X5F_K%RuOcw5yY>fV;lt%SQDI(oYpGUS zH6uoMpy|OHT_VYPG`oq0< zvRDH_By~+S=}V40{93kVO4h8kiPs-_RAv?DwB3vjVY?$8Dh^{yU0q$EhvvBlCSBDh zIc)QGBv6hH{4;7Ycz)m?fGYvO<-scfpPh*Pnb!b?5n#VfAF~mqI{;C@$~QzF`j|J% zK9Bq{4+S(B6nQMho3_X{yE>WYu)zv@DBg6)db9Vq=UF@Quv06ye(wIOWaGYPv#S7n z3h>AV{cqYdU25L6(~LG+6rb(X@ZCj9Nd4Xli3)FK0hQ5Oo2SaO0q!Z#u$lLQdO$QI zKb!<{&wHj|FzgOC56n~kGS0OPbctjL-0{c zYi!-)0Drj8GW%pzkj4~`H$Y09)jQVg14gmE3ij0n1L$Y-s^$rm zNn&0p%XL4ax#`{so)Di?Lc95|BmQiQBgbamk8mIuyPHcf_mtxp+%26CnFwImnVmpW z0MXSj)!9L(1tQRs1;*#&%OS|XPOZE&Ua!LwZvo#7URbl;nxlT+R{^T^`>Q7SOEfva zJr~$=Pchea5{X%CytC8@B7K1sp7`X#7HD>@_|Ng5g2uNOeg`fkZXECe=lOJGG9e-b z$w9cR;PpSP<%SI^?xezwj-|i`IDE0m*!MS*d)c)%#^2#YXQYyFP$NE<6aoH#8Lg zNs)N5P1#{JamW3sIgF;1=XWD>qh2gkal1nsmkpr39YzR1@+f-O!|6})ySIsQ!jJamc05@Dgwa5&Hr@|$ zBz|Qt=P<>h3Q_*vmn{D{9Q%ce5h|rD`RDnZgXDV=__OVSupdoUT^CPKLkX)PpoT90 zEfH*6UHI6DXnap-_pJhHRNeKuom&TGPj=y6T|X4h};8Fxy^1phhjrqJpj^{2YW2!H#y*^RlsRScUq>}3rFLA~TKZ!eZj z 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�s;-(yPA0e!4NQg2A1Uu}w0S8weK~+7yg>tq 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%0DsUKFPM=9;&}P} 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 Ms?`bF^tXrq4`}b`LjV8( literal 0 HcmV?d00001 diff --git a/Chapter16_ImageProcessingFiles/test.png b/Chapter16_ImageProcessingFiles/test.png new file mode 100644 index 0000000000000000000000000000000000000000..9dbf5513933f016d385383f847b450c67879f8df GIT binary patch literal 110519 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
217.182.168.178\n",
-      "
\n" - ] - } - ], - "source": [ - "from selenium import webdriver\n", - "from selenium.webdriver.chrome.options import Options\n", - "\n", - "chrome_options = Options()\n", - "chrome_options.add_argument(\"--headless\")\n", - "chrome_options.add_argument(\"--proxy-server=socks5://127.0.0.1:9150\")\n", - "driver = webdriver.Chrome(executable_path='drivers/chromedriver', options=chrome_options)\n", - "\n", - "driver.get('http://icanhazip.com')\n", - "print(driver.page_source)\n", - "driver.close()" - ] - }, - { - "cell_type": "code", - "execution_count": 11, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Once deleted, variables cannot be recovered. Proceed (y/[n])? y\n" - ] - } - ], - "source": [ - "%reset" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.6.1" - } - }, - "nbformat": 4, - "nbformat_minor": 2 -} diff --git a/Chapter14-ScrapingTraps.ipynb b/Chapter17_ScrapingTraps.ipynb similarity index 51% rename from Chapter14-ScrapingTraps.ipynb rename to Chapter17_ScrapingTraps.ipynb index 19317bf..4b536cb 100644 --- a/Chapter14-ScrapingTraps.ipynb +++ b/Chapter17_ScrapingTraps.ipynb @@ -2,33 +2,41 @@ "cells": [ { "cell_type": "code", - "execution_count": 6, + "execution_count": 2, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "\n", + "\n", "\n", "ACCEPT\n", - "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8\n", + "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7\n", "\n", "\n", - "ACCEPT_ENCODING\n", - "gzip, deflate\n", + "ACCEPT-ENCODING\n", + "gzip, deflate, br\n", "\n", "\n", "CONNECTION\n", "keep-alive\n", "\n", "\n", + "CONTENT-LENGTH\n", + "\n", + "\n", + "\n", + "CONTENT-TYPE\n", + "\n", + "\n", + "\n", "HOST\n", "www.whatismybrowser.com\n", "\n", "\n", - "USER_AGENT\n", - "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_5)AppleWebKit 537.36 (KHTML, like Gecko) Chrome\n", + "USER-AGENT\n", + "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/113.0.0.0 Safari/537.36\n", "\n", ">\n" ] @@ -39,39 +47,47 @@ "from bs4 import BeautifulSoup\n", "\n", "session = requests.Session()\n", - "headers = {'User-Agent':'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_5)'\\\n", - " 'AppleWebKit 537.36 (KHTML, like Gecko) Chrome',\n", - " 'Accept':'text/html,application/xhtml+xml,application/xml;'\\\n", - " 'q=0.9,image/webp,*/*;q=0.8'}\n", + "headers = {'User-Agent':'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/113.0.0.0 Safari/537.36',\n", + " 'Accept':'text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7'}\n", "url = 'https://www.whatismybrowser.com/'\\\n", - "'developers/what-http-headers-is-my-browser-sending'\n", + " 'developers/what-http-headers-is-my-browser-sending'\n", "req = session.get(url, headers=headers)\n", "\n", "bs = BeautifulSoup(req.text, 'html.parser')\n", - "print(bs.find('table',{'class':'table-striped'}).get_text)" + "print(bs.find('table', {'class':'table-striped'}).get_text)" ] }, { "cell_type": "code", - "execution_count": 1, + "execution_count": 4, + "metadata": {}, + "outputs": [], + "source": [ + "from webdriver_manager.chrome import ChromeDriverManager\n", + "CHROMEDRIVER_PATH = ChromeDriverManager().install()" + ] + }, + { + "cell_type": "code", + "execution_count": 7, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "[{'domain': '.pythonscraping.com', 'expiry': 1540863803, 'httpOnly': False, 'name': '_gid', 'path': '/', 'secure': False, 'value': 'GA1.2.358315088.1540777403'}, {'domain': '.pythonscraping.com', 'expiry': 1603849403, 'httpOnly': False, 'name': '_ga', 'path': '/', 'secure': False, 'value': 'GA1.2.1302028449.1540777403'}, {'domain': '.pythonscraping.com', 'expiry': 1540777463, 'httpOnly': False, 'name': '_gat', 'path': '/', 'secure': False, 'value': '1'}, {'domain': 'pythonscraping.com', 'httpOnly': False, 'name': 'has_js', 'path': '/', 'secure': False, 'value': '1'}]\n" + "[{'domain': '.pythonscraping.com', 'expiry': 1722996491, 'httpOnly': False, 'name': '_ga', 'path': '/', 'sameSite': 'Lax', 'secure': False, 'value': 'GA1.1.285394841.1688436491'}, {'domain': '.pythonscraping.com', 'expiry': 1722996491, 'httpOnly': False, 'name': '_ga_G60J5CGY1N', 'path': '/', 'sameSite': 'Lax', 'secure': False, 'value': 'GS1.1.1688436491.1.0.1688436491.0.0.0'}]\n" ] } ], "source": [ "from selenium import webdriver\n", "from selenium.webdriver.chrome.options import Options\n", + "\n", "chrome_options = Options()\n", "chrome_options.add_argument(\"--headless\")\n", - "driver = webdriver.Chrome(\n", - " executable_path='drivers/chromedriver', \n", - " chrome_options=chrome_options)\n", + "driver = webdriver.Chrome(service=Service(CHROMEDRIVER_PATH), options=chrome_options)\n", + "\n", "driver.get('http://pythonscraping.com')\n", "driver.implicitly_wait(1)\n", "print(driver.get_cookies())" @@ -79,15 +95,15 @@ }, { "cell_type": "code", - "execution_count": 6, + "execution_count": 9, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "[{'domain': '.pythonscraping.com', 'expiry': 1540864964, 'httpOnly': False, 'name': '_gid', 'path': '/', 'secure': False, 'value': 'GA1.2.819982224.1540778565'}, {'domain': '.pythonscraping.com', 'expiry': 1603850564, 'httpOnly': False, 'name': '_ga', 'path': '/', 'secure': False, 'value': 'GA1.2.864755518.1540778565'}, {'domain': '.pythonscraping.com', 'expiry': 1540778624, 'httpOnly': False, 'name': '_gat', 'path': '/', 'secure': False, 'value': '1'}, {'domain': 'pythonscraping.com', 'httpOnly': False, 'name': 'has_js', 'path': '/', 'secure': False, 'value': '1'}]\n", - "[{'domain': 'pythonscraping.com', 'httpOnly': False, 'name': 'has_js', 'path': '/', 'secure': False, 'value': '1'}, {'domain': '.pythonscraping.com', 'expiry': 1540778624, 'httpOnly': False, 'name': '_gat', 'path': '/', 'secure': False, 'value': '1'}, {'domain': '.pythonscraping.com', 'expiry': 1603850569, 'httpOnly': False, 'name': '_ga', 'path': '/', 'secure': False, 'value': 'GA1.2.864755518.1540778565'}, {'domain': '.pythonscraping.com', 'expiry': 1540864969, 'httpOnly': False, 'name': '_gid', 'path': '/', 'secure': False, 'value': 'GA1.2.819982224.1540778565'}]\n" + "[{'domain': '.pythonscraping.com', 'expiry': 1722997590, 'httpOnly': False, 'name': '_ga', 'path': '/', 'sameSite': 'Lax', 'secure': False, 'value': 'GA1.1.678086850.1688437590'}, {'domain': '.pythonscraping.com', 'expiry': 1722997590, 'httpOnly': False, 'name': '_ga_G60J5CGY1N', 'path': '/', 'sameSite': 'Lax', 'secure': False, 'value': 'GS1.1.1688437589.1.0.1688437589.0.0.0'}]\n", + "[{'domain': '.pythonscraping.com', 'expiry': 1722997597, 'httpOnly': False, 'name': '_ga_G60J5CGY1N', 'path': '/', 'sameSite': 'Lax', 'secure': False, 'value': 'GS1.1.1688437589.1.1.1688437597.0.0.0'}, {'domain': '.pythonscraping.com', 'expiry': 1722997597, 'httpOnly': False, 'name': '_ga', 'path': '/', 'sameSite': 'Lax', 'secure': False, 'value': 'GA1.1.678086850.1688437590'}]\n" ] } ], @@ -97,19 +113,15 @@ "\n", "chrome_options = Options()\n", "chrome_options.add_argument(\"--headless\")\n", + "driver = webdriver.Chrome(service=Service(CHROMEDRIVER_PATH), options=chrome_options)\n", "\n", - "driver = webdriver.Chrome(\n", - " executable_path='drivers/chromedriver', \n", - " chrome_options=chrome_options)\n", "driver.get('http://pythonscraping.com')\n", "driver.implicitly_wait(1)\n", "\n", "savedCookies = driver.get_cookies()\n", "print(savedCookies)\n", "\n", - "driver2 = webdriver.Chrome(\n", - " executable_path='drivers/chromedriver',\n", - " chrome_options=chrome_options)\n", + "driver2 = webdriver.Chrome(service=Service(CHROMEDRIVER_PATH), options=chrome_options)\n", "\n", "driver2.get('http://pythonscraping.com')\n", "driver2.delete_all_cookies()\n", @@ -123,7 +135,7 @@ }, { "cell_type": "code", - "execution_count": 5, + "execution_count": 15, "metadata": {}, "outputs": [ { @@ -140,26 +152,33 @@ "from selenium import webdriver\n", "from selenium.webdriver.remote.webelement import WebElement\n", "from selenium.webdriver.chrome.options import Options\n", + "from selenium.webdriver.common.by import By\n", + "\n", + "driver = webdriver.Chrome(service=Service(CHROMEDRIVER_PATH))\n", "\n", - "driver = webdriver.Chrome(\n", - " executable_path='drivers/chromedriver',\n", - " chrome_options=chrome_options)\n", "driver.get('http://pythonscraping.com/pages/itsatrap.html')\n", - "links = driver.find_elements_by_tag_name('a')\n", + "links = driver.find_elements(By.TAG_NAME, 'a')\n", "for link in links:\n", " if not link.is_displayed():\n", - " print('The link {} is a trap'.format(link.get_attribute('href')))\n", + " print(f'The link {link.get_attribute(\"href\")} is a trap')\n", "\n", - "fields = driver.find_elements_by_tag_name('input')\n", + "fields = driver.find_elements(By.TAG_NAME, 'input')\n", "for field in fields:\n", " if not field.is_displayed():\n", - " print('Do not change value of {}'.format(field.get_attribute('name')))" + " print(f'Do not change value of {field.get_attribute(\"name\")}')" ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] } ], "metadata": { "kernelspec": { - "display_name": "Python 3", + "display_name": "Python 3 (ipykernel)", "language": "python", "name": "python3" }, @@ -173,7 +192,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.6.1" + "version": "3.9.12" } }, "nbformat": 4, diff --git a/Chapter15_Testing.ipynb b/Chapter18_Testing.ipynb similarity index 74% rename from Chapter15_Testing.ipynb rename to Chapter18_Testing.ipynb index 24e8220..5b8709c 100644 --- a/Chapter15_Testing.ipynb +++ b/Chapter18_Testing.ipynb @@ -9,7 +9,11 @@ "name": "stderr", "output_type": "stream", "text": [ - "." + ".\n", + "----------------------------------------------------------------------\n", + "Ran 1 test in 0.001s\n", + "\n", + "OK\n" ] }, { @@ -19,17 +23,6 @@ "Setting up the test\n", "Tearing down the test\n" ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\n", - "----------------------------------------------------------------------\n", - "Ran 1 test in 0.001s\n", - "\n", - "OK\n" - ] } ], "source": [ @@ -76,7 +69,7 @@ "text": [ "..\n", "----------------------------------------------------------------------\n", - "Ran 3 tests in 0.723s\n", + "Ran 3 tests in 0.719s\n", "\n", "OK\n" ] @@ -85,7 +78,8 @@ "name": "stdout", "output_type": "stream", "text": [ - "Once deleted, variables cannot be recovered. Proceed (y/[n])? y\n" + "Once deleted, variables cannot be recovered. Proceed (y/[n])? \n", + "Nothing done.\n" ] } ], @@ -116,9 +110,44 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 5, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "." + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Setting up the test\n", + "Tearing down the test\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + ".\n", + "----------------------------------------------------------------------\n", + "Ran 2 tests in 7.159s\n", + "\n", + "OK\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Done!\n", + "Once deleted, variables cannot be recovered. Proceed (y/[n])? y\n" + ] + } + ], "source": [ "from urllib.request import urlopen\n", "from bs4 import BeautifulSoup\n", @@ -157,7 +186,7 @@ " # Returns random link on page, using technique from Chapter 3\n", " links = self.bs.find('div', {'id':'bodyContent'}).find_all('a', href=re.compile('^(/wiki/)((?!:).)*$'))\n", " randomLink = random.SystemRandom().choice(links)\n", - " return 'https://wikipedia.org{}'.format(randomLink.attrs['href'])\n", + " return f'https://wikipedia.org{randomLink.attrs[\"href\"]}'\n", " \n", "\n", "if __name__ == '__main__':\n", @@ -167,7 +196,18 @@ }, { "cell_type": "code", - "execution_count": 9, + "execution_count": 23, + "metadata": {}, + "outputs": [], + "source": [ + "from webdriver_manager.chrome import ChromeDriverManager\n", + "\n", + "CHROMEDRIVER_PATH = ChromeDriverManager().install()" + ] + }, + { + "cell_type": "code", + "execution_count": 19, "metadata": {}, "outputs": [ { @@ -180,21 +220,22 @@ ], "source": [ "from selenium import webdriver\n", + "from selenium.webdriver.chrome.service import Service\n", "from selenium.webdriver.common.keys import Keys\n", "from selenium.webdriver import ActionChains\n", "from selenium.webdriver.chrome.options import Options\n", + "from selenium.webdriver.common.by import By\n", "\n", "chrome_options = Options()\n", "chrome_options.add_argument(\"--headless\")\n", "\n", - "driver = webdriver.Chrome(\n", - " executable_path='drivers/chromedriver',\n", - " options=chrome_options)\n", + "driver = webdriver.Chrome(service=Service(CHROMEDRIVER_PATH), options=chrome_options)\n", + "\n", "driver.get('http://pythonscraping.com/pages/files/form.html')\n", "\n", - "firstnameField = driver.find_element_by_name('firstname')\n", - "lastnameField = driver.find_element_by_name('lastname')\n", - "submitButton = driver.find_element_by_id('submit')\n", + "firstnameField = driver.find_element(By.NAME, 'firstname')\n", + "lastnameField = driver.find_element(By.NAME, 'lastname')\n", + "submitButton = driver.find_element(By.ID, 'submit')\n", "\n", "### METHOD 1 ###\n", "firstnameField.send_keys('Ryan')\n", @@ -207,14 +248,25 @@ "#actions.perform()\n", "################\n", "\n", - "print(driver.find_element_by_tag_name('body').text)\n", + "print(driver.find_element(By.TAG_NAME, 'body').text)\n", "\n", "driver.close()" ] }, { "cell_type": "code", - "execution_count": 7, + "execution_count": 24, + "metadata": {}, + "outputs": [], + "source": [ + "from webdriver_manager.chrome import ChromeDriverManager\n", + "\n", + "CHROMEDRIVER_PATH = ChromeDriverManager().install()" + ] + }, + { + "cell_type": "code", + "execution_count": 20, "metadata": { "scrolled": true }, @@ -225,7 +277,7 @@ "text": [ ".\n", "----------------------------------------------------------------------\n", - "Ran 1 test in 1.938s\n", + "Ran 1 test in 3.137s\n", "\n", "OK\n" ] @@ -242,18 +294,18 @@ "from selenium import webdriver\n", "from selenium.webdriver import ActionChains\n", "from selenium.webdriver.chrome.options import Options\n", + "from selenium.webdriver.common.by import By\n", + "from selenium.webdriver.chrome.service import Service\n", "import unittest\n", "\n", "\n", - "class TestAddition(unittest.TestCase):\n", + "class TestDragAndDrop(unittest.TestCase):\n", " driver = None\n", "\n", " def setUp(self):\n", " chrome_options = Options()\n", " chrome_options.add_argument(\"--headless\")\n", - " self.driver = webdriver.Chrome(\n", - " executable_path='drivers/chromedriver',\n", - " options=chrome_options)\n", + " self.driver = webdriver.Chrome(service=Service(CHROMEDRIVER_PATH), options=chrome_options)\n", " url = 'http://pythonscraping.com/pages/javascript/draggableDemo.html'\n", " self.driver.get(url)\n", "\n", @@ -261,12 +313,11 @@ " self.driver.close()\n", "\n", " def test_drag(self):\n", - " element = self.driver.find_element_by_id(\"draggable\")\n", - " target = self.driver.find_element_by_id(\"div2\")\n", + " element = self.driver.find_element(By.ID, 'draggable')\n", + " target = self.driver.find_element(By.ID, 'div2')\n", " actions = ActionChains(self.driver)\n", " actions.drag_and_drop(element, target).perform()\n", - " self.assertEqual(\"You are definitely not a bot!\",\n", - " self.driver.find_element_by_id(\"message\").text)\n", + " self.assertEqual('You are definitely not a bot!', self.driver.find_element(By.ID, 'message').text)\n", "\n", "if __name__ == '__main__':\n", " unittest.main(argv=[''], exit=False)\n", @@ -275,59 +326,41 @@ }, { "cell_type": "code", - "execution_count": 6, + "execution_count": 25, + "metadata": {}, + "outputs": [], + "source": [ + "from webdriver_manager.chrome import ChromeDriverManager\n", + "\n", + "CHROMEDRIVER_PATH = ChromeDriverManager().install()" + ] + }, + { + "cell_type": "code", + "execution_count": 29, "metadata": {}, "outputs": [ { - "name": "stderr", - "output_type": "stream", - "text": [ - ".\n", - "----------------------------------------------------------------------\n", - "Ran 1 test in 1.940s\n", - "\n", - "OK\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Once deleted, variables cannot be recovered. Proceed (y/[n])? y\n" - ] + "data": { + "text/plain": [ + "True" + ] + }, + "execution_count": 29, + "metadata": {}, + "output_type": "execute_result" } ], "source": [ - "from selenium import webdriver\n", - "from selenium.webdriver import ActionChains\n", "from selenium.webdriver.chrome.options import Options\n", - "import unittest\n", - "\n", - "class TestDragAndDrop(unittest.TestCase):\n", - " driver = None\n", - " def setUp(self):\n", - " chrome_options = Options()\n", - " chrome_options.add_argument(\"--headless\")\n", - " self.driver = webdriver.Chrome(\n", - " executable_path='drivers/chromedriver',\n", - " options=chrome_options)\n", - " url = 'http://pythonscraping.com/pages/javascript/draggableDemo.html'\n", - " self.driver.get(url)\n", - "\n", - " def tearDown(self):\n", - " self.driver.close()\n", - "\n", - " def test_drag(self):\n", - " element = self.driver.find_element_by_id('draggable')\n", - " target = self.driver.find_element_by_id('div2')\n", - " actions = ActionChains(self.driver)\n", - " actions.drag_and_drop(element, target).perform()\n", - " self.assertEqual('You are definitely not a bot!',\n", - " self.driver.find_element_by_id('message').text)\n", + "from selenium import webdriver\n", + "from selenium.webdriver.chrome.service import Service\n", "\n", - "if __name__ == '__main__':\n", - " unittest.main(argv=[''], exit=False)\n", - " %reset" + "chrome_options = Options()\n", + "chrome_options.add_argument(\"--headless\")\n", + "driver = webdriver.Chrome(service=Service(CHROMEDRIVER_PATH), options=chrome_options)\n", + "driver.get('http://www.pythonscraping.com/')\n", + "driver.get_screenshot_as_file('pythonscraping.png')" ] }, { @@ -340,7 +373,7 @@ ], "metadata": { "kernelspec": { - "display_name": "Python 3", + "display_name": "Python 3 (ipykernel)", "language": "python", "name": "python3" }, @@ -354,7 +387,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.6.1" + "version": "3.9.12" } }, "nbformat": 4, diff --git a/Chapter19_WebScrapingInParallel.ipynb b/Chapter19_WebScrapingInParallel.ipynb new file mode 100644 index 0000000..4e05a84 --- /dev/null +++ b/Chapter19_WebScrapingInParallel.ipynb @@ -0,0 +1,1410 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 5, + "id": "68d570a3", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "1 - Counter\n", + "2 - Counter\n", + "3 - Fizz\n", + "3 - Counter\n", + "4 - Counter\n", + "5 - Buzz\n", + "5 - Counter\n", + "6 - Fizz\n", + "6 - Counter\n", + "7 - Counter\n", + "8 - Counter\n", + "9 - Fizz\n", + "9 - Counter\n", + "10 - Buzz\n", + "10 - Counter\n", + "11 - Counter\n", + "12 - Fizz\n", + "12 - Counter\n", + "13 - Counter\n", + "14 - Counter\n", + "15 - Buzz\n", + "15 - Fizz\n", + "15 - Counter\n", + "16 - Counter\n", + "17 - Counter\n", + "18 - Fizz\n", + "18 - Counter\n", + "19 - Counter\n", + "20 - Buzz\n", + "20 - Counter\n" + ] + }, + { + "data": { + "text/plain": [ + "[None, None, None]" + ] + }, + "execution_count": 5, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "import threading\n", + "import time\n", + "\n", + "\n", + "def print_time(threadName, delay, iterations):\n", + " start = int(time.time())\n", + " for i in range(0,iterations):\n", + " time.sleep(delay)\n", + " print(f'{int(time.time() - start)} - {threadName}')\n", + "\n", + "threads = [\n", + " threading.Thread(target=print_time, args=('Fizz', 3, 6)),\n", + " threading.Thread(target=print_time, args=('Buzz', 5, 4)),\n", + " threading.Thread(target=print_time, args=('Counter', 1, 20))\n", + "]\n", + "\n", + "[t.start() for t in threads]\n", + "[t.join() for t in threads]\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "6f87fa23", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Thread 2: Scraping /wiki/Lifeboat_sketch\n", + "Thread 1: Scraping /wiki/Knowledge_Discovery_Metamodel\n", + "Thread 1: Scraping /wiki/Pinellas_County,_Florida\n", + "Thread 2: Scraping /wiki/Fane_Aircraft_Company\n", + "Thread 1: Scraping /wiki/University_Press_of_America\n", + "Thread 1: Scraping /wiki/Kevin_Bacon\n", + "Thread 2: Scraping /wiki/Monty_Python\n", + "Thread 2: Scraping /wiki/List_of_IEC_standards\n", + "Thread 2: Scraping /wiki/North_Yorkshire_Moors_Railway\n", + "Thread 1: Scraping /wiki/Pacific_Tigers_men%27s_basketball_statistical_leaders\n", + "Thread 2: Scraping /wiki/Monty_Python_v._American_Broadcasting_Companies,_Inc.\n", + "Thread 1: Scraping /wiki/ISO/IEC_38500\n" + ] + }, + { + "ename": "KeyboardInterrupt", + "evalue": "", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mKeyboardInterrupt\u001b[0m Traceback (most recent call last)", + "Input \u001b[0;32mIn [5]\u001b[0m, in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[1;32m 23\u001b[0m threads \u001b[38;5;241m=\u001b[39m [\n\u001b[1;32m 24\u001b[0m threading\u001b[38;5;241m.\u001b[39mThread(target\u001b[38;5;241m=\u001b[39mscrape_article, args\u001b[38;5;241m=\u001b[39m(\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mThread 1\u001b[39m\u001b[38;5;124m'\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124m/wiki/Kevin_Bacon\u001b[39m\u001b[38;5;124m'\u001b[39m,)),\n\u001b[1;32m 25\u001b[0m threading\u001b[38;5;241m.\u001b[39mThread(target\u001b[38;5;241m=\u001b[39mscrape_article, args\u001b[38;5;241m=\u001b[39m(\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mThread 2\u001b[39m\u001b[38;5;124m'\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124m/wiki/Monty_Python\u001b[39m\u001b[38;5;124m'\u001b[39m,)),\n\u001b[1;32m 26\u001b[0m ]\n\u001b[1;32m 27\u001b[0m [t\u001b[38;5;241m.\u001b[39mstart() \u001b[38;5;28;01mfor\u001b[39;00m t \u001b[38;5;129;01min\u001b[39;00m threads]\n\u001b[0;32m---> 28\u001b[0m [t\u001b[38;5;241m.\u001b[39mjoin() \u001b[38;5;28;01mfor\u001b[39;00m t \u001b[38;5;129;01min\u001b[39;00m threads]\n", + "Input \u001b[0;32mIn [5]\u001b[0m, in \u001b[0;36m\u001b[0;34m(.0)\u001b[0m\n\u001b[1;32m 23\u001b[0m threads \u001b[38;5;241m=\u001b[39m [\n\u001b[1;32m 24\u001b[0m threading\u001b[38;5;241m.\u001b[39mThread(target\u001b[38;5;241m=\u001b[39mscrape_article, args\u001b[38;5;241m=\u001b[39m(\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mThread 1\u001b[39m\u001b[38;5;124m'\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124m/wiki/Kevin_Bacon\u001b[39m\u001b[38;5;124m'\u001b[39m,)),\n\u001b[1;32m 25\u001b[0m threading\u001b[38;5;241m.\u001b[39mThread(target\u001b[38;5;241m=\u001b[39mscrape_article, args\u001b[38;5;241m=\u001b[39m(\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mThread 2\u001b[39m\u001b[38;5;124m'\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124m/wiki/Monty_Python\u001b[39m\u001b[38;5;124m'\u001b[39m,)),\n\u001b[1;32m 26\u001b[0m ]\n\u001b[1;32m 27\u001b[0m [t\u001b[38;5;241m.\u001b[39mstart() \u001b[38;5;28;01mfor\u001b[39;00m t \u001b[38;5;129;01min\u001b[39;00m threads]\n\u001b[0;32m---> 28\u001b[0m [\u001b[43mt\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mjoin\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m \u001b[38;5;28;01mfor\u001b[39;00m t \u001b[38;5;129;01min\u001b[39;00m threads]\n", + "File \u001b[0;32m~/opt/anaconda3/lib/python3.9/threading.py:1053\u001b[0m, in \u001b[0;36mThread.join\u001b[0;34m(self, timeout)\u001b[0m\n\u001b[1;32m 1050\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m \u001b[38;5;167;01mRuntimeError\u001b[39;00m(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mcannot join current thread\u001b[39m\u001b[38;5;124m\"\u001b[39m)\n\u001b[1;32m 1052\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m timeout \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m:\n\u001b[0;32m-> 1053\u001b[0m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_wait_for_tstate_lock\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 1054\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m:\n\u001b[1;32m 1055\u001b[0m \u001b[38;5;66;03m# the behavior of a negative timeout isn't documented, but\u001b[39;00m\n\u001b[1;32m 1056\u001b[0m \u001b[38;5;66;03m# historically .join(timeout=x) for x<0 has acted as if timeout=0\u001b[39;00m\n\u001b[1;32m 1057\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_wait_for_tstate_lock(timeout\u001b[38;5;241m=\u001b[39m\u001b[38;5;28mmax\u001b[39m(timeout, \u001b[38;5;241m0\u001b[39m))\n", + "File \u001b[0;32m~/opt/anaconda3/lib/python3.9/threading.py:1073\u001b[0m, in \u001b[0;36mThread._wait_for_tstate_lock\u001b[0;34m(self, block, timeout)\u001b[0m\n\u001b[1;32m 1070\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m\n\u001b[1;32m 1072\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[0;32m-> 1073\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[43mlock\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43macquire\u001b[49m\u001b[43m(\u001b[49m\u001b[43mblock\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mtimeout\u001b[49m\u001b[43m)\u001b[49m:\n\u001b[1;32m 1074\u001b[0m lock\u001b[38;5;241m.\u001b[39mrelease()\n\u001b[1;32m 1075\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_stop()\n", + "\u001b[0;31mKeyboardInterrupt\u001b[0m: " + ] + } + ], + "source": [ + "from urllib.request import urlopen\n", + "from bs4 import BeautifulSoup\n", + "import re\n", + "import random\n", + "import threading\n", + "import time\n", + "\n", + "# Recursively find links on a Wikipedia page, \n", + "# then follow a random link, with artificial 5 sec delay\n", + "def scrape_article(thread_name, path):\n", + " time.sleep(5)\n", + " print(f'{thread_name}: Scraping {path}')\n", + " html = urlopen('http://en.wikipedia.org{}'.format(path))\n", + " bs = BeautifulSoup(html, 'html.parser')\n", + " title = bs.find('h1').get_text()\n", + " links = bs.find('div', {'id':'bodyContent'}).find_all('a',\n", + " href=re.compile('^(/wiki/)((?!:).)*$'))\n", + " if len(links) > 0:\n", + " newArticle = links[random.randint(0, len(links)-1)].attrs['href']\n", + " scrape_article(thread_name, newArticle)\n", + "\n", + " \n", + "threads = [\n", + " threading.Thread(target=scrape_article, args=('Thread 1', '/wiki/Kevin_Bacon',)),\n", + " threading.Thread(target=scrape_article, args=('Thread 2', '/wiki/Monty_Python',)),\n", + "]\n", + "[t.start() for t in threads]\n", + "[t.join() for t in threads]" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "id": "6b6ae604", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Thread 2: Scraping /wiki/List_of_office_suites\n", + "Thread 1: Scraping /wiki/Meta-Object_Facility\n", + "Thread 1: Scraping /wiki/Cedric_Gibbons\n", + "Thread 1: Scraping /wiki/Fujifilm_FinePix_Real_3D\n", + "Thread 2: Scraping /wiki/Draft_horse\n", + "Thread 2: Scraping /wiki/PDP-9\n", + "Thread 2: Scraping /wiki/Sidley_United_F.C.\n", + "Thread 1: Scraping /wiki/The_Bulletin_(Bend)\n", + "Thread 2: Scraping /wiki/Utagawa_Kunisada_II\n", + "Thread 2: Scraping /wiki/Monty_PythonThread 1: Scraping /wiki/Kevin_Bacon\n", + "\n", + "Thread 1: Scraping /wiki/Geographic_coordinate_system\n", + "Thread 2: Scraping /wiki/ConceptDraw_Office\n", + "Getting links in Thread 1\n", + "Getting links in Thread 2\n", + "Getting links in Thread 1\n", + "Getting links in Thread 2\n" + ] + }, + { + "ename": "KeyboardInterrupt", + "evalue": "", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mKeyboardInterrupt\u001b[0m Traceback (most recent call last)", + "Input \u001b[0;32mIn [6]\u001b[0m, in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[1;32m 32\u001b[0m threads \u001b[38;5;241m=\u001b[39m [\n\u001b[1;32m 33\u001b[0m threading\u001b[38;5;241m.\u001b[39mThread(target\u001b[38;5;241m=\u001b[39mscrape_article, args\u001b[38;5;241m=\u001b[39m(\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mThread 1\u001b[39m\u001b[38;5;124m'\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124m/wiki/Kevin_Bacon\u001b[39m\u001b[38;5;124m'\u001b[39m,)),\n\u001b[1;32m 34\u001b[0m threading\u001b[38;5;241m.\u001b[39mThread(target\u001b[38;5;241m=\u001b[39mscrape_article, args\u001b[38;5;241m=\u001b[39m(\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mThread 2\u001b[39m\u001b[38;5;124m'\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124m/wiki/Monty_Python\u001b[39m\u001b[38;5;124m'\u001b[39m,)),\n\u001b[1;32m 35\u001b[0m ]\n\u001b[1;32m 36\u001b[0m [t\u001b[38;5;241m.\u001b[39mstart() \u001b[38;5;28;01mfor\u001b[39;00m t \u001b[38;5;129;01min\u001b[39;00m threads]\n\u001b[0;32m---> 37\u001b[0m [t\u001b[38;5;241m.\u001b[39mjoin() \u001b[38;5;28;01mfor\u001b[39;00m t \u001b[38;5;129;01min\u001b[39;00m threads]\n", + "Input \u001b[0;32mIn [6]\u001b[0m, in \u001b[0;36m\u001b[0;34m(.0)\u001b[0m\n\u001b[1;32m 32\u001b[0m threads \u001b[38;5;241m=\u001b[39m [\n\u001b[1;32m 33\u001b[0m threading\u001b[38;5;241m.\u001b[39mThread(target\u001b[38;5;241m=\u001b[39mscrape_article, args\u001b[38;5;241m=\u001b[39m(\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mThread 1\u001b[39m\u001b[38;5;124m'\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124m/wiki/Kevin_Bacon\u001b[39m\u001b[38;5;124m'\u001b[39m,)),\n\u001b[1;32m 34\u001b[0m threading\u001b[38;5;241m.\u001b[39mThread(target\u001b[38;5;241m=\u001b[39mscrape_article, args\u001b[38;5;241m=\u001b[39m(\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mThread 2\u001b[39m\u001b[38;5;124m'\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124m/wiki/Monty_Python\u001b[39m\u001b[38;5;124m'\u001b[39m,)),\n\u001b[1;32m 35\u001b[0m ]\n\u001b[1;32m 36\u001b[0m [t\u001b[38;5;241m.\u001b[39mstart() \u001b[38;5;28;01mfor\u001b[39;00m t \u001b[38;5;129;01min\u001b[39;00m threads]\n\u001b[0;32m---> 37\u001b[0m [\u001b[43mt\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mjoin\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m \u001b[38;5;28;01mfor\u001b[39;00m t \u001b[38;5;129;01min\u001b[39;00m threads]\n", + "File \u001b[0;32m~/opt/anaconda3/lib/python3.9/threading.py:1053\u001b[0m, in \u001b[0;36mThread.join\u001b[0;34m(self, timeout)\u001b[0m\n\u001b[1;32m 1050\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m \u001b[38;5;167;01mRuntimeError\u001b[39;00m(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mcannot join current thread\u001b[39m\u001b[38;5;124m\"\u001b[39m)\n\u001b[1;32m 1052\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m timeout \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m:\n\u001b[0;32m-> 1053\u001b[0m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_wait_for_tstate_lock\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 1054\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m:\n\u001b[1;32m 1055\u001b[0m \u001b[38;5;66;03m# the behavior of a negative timeout isn't documented, but\u001b[39;00m\n\u001b[1;32m 1056\u001b[0m \u001b[38;5;66;03m# historically .join(timeout=x) for x<0 has acted as if timeout=0\u001b[39;00m\n\u001b[1;32m 1057\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_wait_for_tstate_lock(timeout\u001b[38;5;241m=\u001b[39m\u001b[38;5;28mmax\u001b[39m(timeout, \u001b[38;5;241m0\u001b[39m))\n", + "File \u001b[0;32m~/opt/anaconda3/lib/python3.9/threading.py:1073\u001b[0m, in \u001b[0;36mThread._wait_for_tstate_lock\u001b[0;34m(self, block, timeout)\u001b[0m\n\u001b[1;32m 1070\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m\n\u001b[1;32m 1072\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[0;32m-> 1073\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[43mlock\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43macquire\u001b[49m\u001b[43m(\u001b[49m\u001b[43mblock\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mtimeout\u001b[49m\u001b[43m)\u001b[49m:\n\u001b[1;32m 1074\u001b[0m lock\u001b[38;5;241m.\u001b[39mrelease()\n\u001b[1;32m 1075\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_stop()\n", + "\u001b[0;31mKeyboardInterrupt\u001b[0m: " + ] + } + ], + "source": [ + "from urllib.request import urlopen\n", + "from bs4 import BeautifulSoup\n", + "import re\n", + "import random\n", + "import threading\n", + "import time\n", + "\n", + "\n", + "visited = []\n", + "\n", + "def get_links(thread_name, bs):\n", + " print('Getting links in {}'.format(thread_name))\n", + " links = bs.find('div', {'id':'bodyContent'}).find_all('a',\n", + " href=re.compile('^(/wiki/)((?!:).)*$'))\n", + " return [link for link in links if link not in visited]\n", + "\n", + "# Recursively find links on a Wikipedia page, \n", + "# then follow a random link, with artificial 5 sec delay\n", + "def scrape_article(thread_name, path):\n", + " time.sleep(5)\n", + " visited.append(path)\n", + " print(f'{thread_name}: Scraping {path}')\n", + " html = urlopen('http://en.wikipedia.org{}'.format(path))\n", + " bs = BeautifulSoup(html, 'html.parser')\n", + " title = bs.find('h1').get_text()\n", + " links = get_links(thread_name, bs)\n", + " if len(links) > 0:\n", + " newArticle = links[random.randint(0, len(links)-1)].attrs['href']\n", + " scrape_article(thread_name, newArticle)\n", + "\n", + " \n", + "threads = [\n", + " threading.Thread(target=scrape_article, args=('Thread 1', '/wiki/Kevin_Bacon',)),\n", + " threading.Thread(target=scrape_article, args=('Thread 2', '/wiki/Monty_Python',)),\n", + "]\n", + "[t.start() for t in threads]\n", + "[t.join() for t in threads]" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "id": "f666895f", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Article already exists: /wiki/United_States\n", + "Article already exists: /wiki/United_States\n", + "Article already exists: /wiki/United_States\n", + "Article already exists: /wiki/United_States\n", + "Article already exists: /wiki/United_States\n", + "Article already exists: /wiki/United_States\n", + "Article already exists: /wiki/United_States\n", + "Storing article /wiki/1959_in_music\n", + "Article already exists: /wiki/Billboard_Hot_100\n", + "Article already exists: /wiki/Billboard_Hot_100\n", + "Article already exists: /wiki/Billboard_Hot_100\n", + "Article already exists: /wiki/Billboard_Hot_100\n", + "Article already exists: /wiki/Billboard_Hot_100\n", + "Article already exists: /wiki/Billboard_Hot_100\n", + "Article already exists: /wiki/Billboard_Hot_100\n", + "Article already exists: /wiki/Billboard_Hot_100\n", + "Article already exists: /wiki/Billboard_Hot_100\n", + "Article already exists: /wiki/Billboard_Hot_100\n", + "Article already exists: /wiki/Billboard_Hot_100\n", + "Article already exists: /wiki/Billboard_Hot_100\n", + "Article already exists: /wiki/Billboard_Hot_100\n", + "Article already exists: /wiki/Billboard_Hot_100\n", + "Article already exists: /wiki/Billboard_Hot_100\n", + "Article already exists: /wiki/Billboard_Hot_100\n", + "Article already exists: /wiki/Billboard_Hot_100\n", + "Article already exists: /wiki/Billboard_Hot_100\n", + "Article already exists: /wiki/Billboard_Hot_100\n", + "Article already exists: /wiki/Billboard_Hot_100\n", + "Article already exists: /wiki/Billboard_Hot_100\n", + "Article already exists: /wiki/Billboard_Hot_100\n", + "Article already exists: /wiki/Billboard_Hot_100\n", + "Article already exists: /wiki/Billboard_Hot_100\n", + "Article already exists: /wiki/Billboard_Hot_100\n", + "Article already exists: /wiki/Billboard_Hot_100\n", + "Article already exists: /wiki/Billboard_Hot_100\n", + "Article already exists: /wiki/Billboard_Hot_100\n", + "Article already exists: /wiki/Billboard_Hot_100\n", + "Article already exists: /wiki/Billboard_Hot_100\n", + "Article already exists: /wiki/Billboard_Hot_100\n", + "Article already exists: /wiki/Billboard_Hot_100\n", + "Article already exists: /wiki/Billboard_Hot_100\n", + "Article already exists: /wiki/Billboard_Hot_100\n", + "Article already exists: /wiki/Billboard_Hot_100\n", + "Article already exists: /wiki/Billboard_Hot_100\n", + "Article already exists: /wiki/Billboard_Hot_100\n", + "Article already exists: /wiki/Billboard_Hot_100\n", + "Article already exists: /wiki/Billboard_Hot_100\n", + "Article already exists: /wiki/Billboard_Hot_100\n", + "Article already exists: /wiki/Billboard_Hot_100\n", + "Article already exists: /wiki/Billboard_Hot_100\n", + "Article already exists: /wiki/Billboard_Hot_100\n", + "Article already exists: /wiki/Billboard_Hot_100\n", + "Article already exists: /wiki/Billboard_Hot_100\n", + "Article already exists: /wiki/Billboard_Hot_100\n", + "Article already exists: /wiki/Billboard_Hot_100\n", + "Article already exists: /wiki/Billboard_Hot_100\n", + "Article already exists: /wiki/Billboard_Hot_100\n", + "Article already exists: /wiki/Billboard_Hot_100\n", + "Article already exists: /wiki/Billboard_Hot_100\n", + "Article already exists: /wiki/Billboard_Hot_100\n", + "Storing article /wiki/Fred_Bronson\n", + "Article already exists: /wiki/ISBN_(identifier)\n", + "Storing article /wiki/Joel_Whitburn\n", + "Article already exists: /wiki/ISBN_(identifier)Thread 2: Scraping /wiki/Monty_PythonThread 1: Scraping /wiki/Kevin_Bacon\n", + "\n", + "\n", + "Article already exists: /wiki/ISBN_(identifier)\n", + "Storing article /wiki/List_of_Billboard_number-one_singles\n", + "Storing article /wiki/List_of_Billboard_number-one_singles_of_1940\n", + "Storing article /wiki/List_of_Billboard_number-one_singles_of_1941\n", + "Storing article /wiki/List_of_Billboard_number-one_singles_of_1942\n", + "Storing article /wiki/List_of_Billboard_number-one_singles_of_1943\n", + "Storing article /wiki/List_of_Billboard_number-one_singles_of_1944\n", + "Storing article /wiki/List_of_Billboard_number-one_singles_of_1945\n", + "Getting links in Thread 1\n", + "Storing article /wiki/List_of_Billboard_number-one_singles_of_1946\n", + "Storing article /wiki/List_of_Billboard_number-one_singles_of_1947\n", + "Article already exists: /wiki/Kevin_Bacon_(disambiguation)\n", + "Storing article /wiki/List_of_Billboard_number-one_singles_of_1948\n", + "Article already exists: /wiki/Philadelphia\n", + "Storing article /wiki/List_of_Billboard_number-one_singles_of_1949\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Exception in thread Thread-23:\n", + "Traceback (most recent call last):\n", + " File \"/Users/RSpecht/opt/anaconda3/lib/python3.9/threading.py\", line 973, in _bootstrap_inner\n", + " self.run()\n", + " File \"/Users/RSpecht/opt/anaconda3/lib/python3.9/threading.py\", line 910, in run\n", + " self._target(*self._args, **self._kwargs)\n", + " File \"/var/folders/y6/jnf4yrtx1pg3y9tqb8fmhnrr0000gp/T/ipykernel_77749/3538858134.py\", line 42, in scrape_article\n", + "AttributeError: 'str' object has no attribute 'attrs'\n", + "Exception in thread Thread-24:\n", + "Traceback (most recent call last):\n", + " File \"/Users/RSpecht/opt/anaconda3/lib/python3.9/threading.py\", line 973, in _bootstrap_inner\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Article already exists: /wiki/Kevin_Bacon_filmography\n", + "Article already exists: /wiki/Kyra_SedgwickStoring article /wiki/List_of_Billboard_number-one_singles_of_1950\n", + "\n", + "Storing article /wiki/Sosie_Bacon\n", + "Storing article /wiki/Edmund_Bacon_(architect)Storing article /wiki/List_of_Billboard_number-one_singles_of_1951\n", + "\n", + "Getting links in Thread 2\n", + "Storing article /wiki/List_of_Billboard_number-one_singles_of_1952\n", + "Storing article /wiki/Michael_Bacon_(musician)Storing article /wiki/List_of_Billboard_number-one_singles_of_1953\n", + "\n", + "Storing article /wiki/List_of_Billboard_number-one_singles_of_1954\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + " self.run()\n", + " File \"/Users/RSpecht/opt/anaconda3/lib/python3.9/threading.py\", line 910, in run\n", + " self._target(*self._args, **self._kwargs)\n", + " File \"/var/folders/y6/jnf4yrtx1pg3y9tqb8fmhnrr0000gp/T/ipykernel_77749/3538858134.py\", line 42, in scrape_article\n", + "AttributeError: " + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Storing article /wiki/Holly_NearStoring article /wiki/List_of_Billboard_number-one_singles_of_1955\n", + "\n", + "Storing article /wiki/List_of_Billboard_number-one_singles_of_1956\n", + "Storing article /wiki/Leading_man\n", + "Storing article /wiki/List_of_Billboard_number-one_singles_of_1957\n", + "Storing article /wiki/Character_actor\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "'str' object has no attribute 'attrs'\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Storing article /wiki/List_of_Billboard_number-one_singles_of_1958\n", + "Storing article /wiki/List_of_Billboard_Hot_100_number_ones_of_1960\n", + "Storing article /wiki/Golden_Globe_Award\n", + "Storing article /wiki/List_of_Billboard_Hot_100_number_ones_of_1961Storing article /wiki/Screen_Actors_Guild_Award\n", + "\n", + "Storing article /wiki/Primetime_Emmy_Award\n", + "Storing article /wiki/List_of_Billboard_Hot_100_number_ones_of_1962\n", + "Storing article /wiki/List_of_Billboard_Hot_100_number_ones_of_1963Article already exists: /wiki/The_Guardian\n", + "\n", + "Storing article /wiki/List_of_Billboard_Hot_100_number_ones_of_1964Storing article /wiki/Academy_Award\n", + "\n", + "Storing article /wiki/List_of_Billboard_Hot_100_number_ones_of_1965\n", + "Storing article /wiki/List_of_Billboard_Hot_100_number_ones_of_1966\n", + "Storing article /wiki/Hollywood_Walk_of_FameStoring article /wiki/List_of_Billboard_Hot_100_number_ones_of_1967\n", + "\n", + "Storing article /wiki/List_of_Billboard_Hot_100_number_ones_of_1968\n", + "Storing article /wiki/National_Lampoon%27s_Animal_HouseStoring article /wiki/List_of_Billboard_Hot_100_number_ones_of_1969\n", + "\n", + "Storing article /wiki/Footloose_(1984_film)\n", + "Storing article /wiki/List_of_Billboard_Hot_100_number_ones_of_1970\n", + "Storing article /wiki/Diner_(1982_film)\n", + "Storing article /wiki/List_of_Billboard_Hot_100_number_ones_of_1971\n", + "Storing article /wiki/List_of_Billboard_Hot_100_number_ones_of_1972Storing article /wiki/JFK_(film)\n", + "\n", + "Storing article /wiki/A_Few_Good_Men\n", + "Storing article /wiki/List_of_Billboard_Hot_100_number_ones_of_1973\n", + "Storing article /wiki/List_of_Billboard_Hot_100_number_ones_of_1974Storing article /wiki/Apollo_13_(film)\n", + "\n", + "Storing article /wiki/List_of_Billboard_Hot_100_number_ones_of_1975Storing article /wiki/Mystic_River_(film)\n", + "\n", + "Storing article /wiki/List_of_Billboard_Hot_100_number_ones_of_1976Storing article /wiki/Frost/Nixon_(film)\n", + "\n", + "Storing article /wiki/List_of_Billboard_Hot_100_number_ones_of_1977\n", + "Storing article /wiki/Friday_the_13th_(1980_film)\n", + "Storing article /wiki/Tremors_(1990_film)Storing article /wiki/List_of_Billboard_Hot_100_number_ones_of_1978\n", + "\n", + "Storing article /wiki/The_River_Wild\n", + "Storing article /wiki/List_of_Billboard_Hot_100_number_ones_of_1979\n", + "Storing article /wiki/Sleepers_(film)\n", + "Storing article /wiki/List_of_Billboard_Hot_100_number_ones_of_1980\n", + "Storing article /wiki/List_of_Billboard_Hot_100_number_ones_of_1981Storing article /wiki/Wild_Things_(film)\n", + "\n", + "Storing article /wiki/List_of_Billboard_Hot_100_number_ones_of_1982Storing article /wiki/The_Woodsman_(2004_film)\n", + "\n", + "Storing article /wiki/List_of_Billboard_Hot_100_number_ones_of_1983\n", + "Storing article /wiki/Flatliners\n", + "Storing article /wiki/List_of_Billboard_Hot_100_number_ones_of_1984Storing article /wiki/Crazy,_Stupid,_Love\n", + "\n", + "Storing article /wiki/List_of_Billboard_Hot_100_number_ones_of_1985\n", + "Storing article /wiki/Black_Mass_(film)Storing article /wiki/List_of_Billboard_Hot_100_number_ones_of_1986\n", + "\n", + "Storing article /wiki/Patriots_Day_(film)Storing article /wiki/List_of_Billboard_Hot_100_number_ones_of_1987\n", + "\n", + "Storing article /wiki/Losing_Chase\n", + "Storing article /wiki/List_of_Billboard_Hot_100_number_ones_of_1988\n", + "Storing article /wiki/Loverboy_(2005_film)\n", + "Storing article /wiki/List_of_Billboard_Hot_100_number_ones_of_1989Article already exists: /wiki/Fox_Broadcasting_Company\n", + "\n", + "Storing article /wiki/The_Following\n", + "Storing article /wiki/List_of_Billboard_Hot_100_number_ones_of_1990\n", + "Storing article /wiki/Michael_Strobl\n", + "Storing article /wiki/List_of_Billboard_Hot_100_number_ones_of_1991\n", + "Storing article /wiki/HBO\n", + "Storing article /wiki/List_of_Billboard_Hot_100_number_ones_of_1992\n", + "Storing article /wiki/Taking_Chance\n", + "Storing article /wiki/List_of_Billboard_Hot_100_number_ones_of_1993\n", + "Storing article /wiki/Golden_Globe_Award_for_Best_Actor_%E2%80%93_Miniseries_or_Television_Film\n", + "Storing article /wiki/List_of_Billboard_Hot_100_number_ones_of_1994Storing article /wiki/Screen_Actors_Guild_Award_for_Outstanding_Performance_by_a_Male_Actor_in_a_Miniseries_or_Television_Movie\n", + "\n", + "Storing article /wiki/List_of_Billboard_Hot_100_number_ones_of_1995\n", + "Storing article /wiki/Amazon_Prime_VideoStoring article /wiki/List_of_Billboard_Hot_100_number_ones_of_1996\n", + "\n", + "Storing article /wiki/I_Love_Dick_(TV_series)Storing article /wiki/List_of_Billboard_Hot_100_number_ones_of_1997\n", + "\n", + "Storing article /wiki/List_of_Billboard_Hot_100_number_ones_of_1998\n", + "Storing article /wiki/Golden_Globe_Award_for_Best_Actor_%E2%80%93_Television_Series_Musical_or_Comedy\n", + "Storing article /wiki/List_of_Billboard_Hot_100_number_ones_of_1999\n", + "Storing article /wiki/Showtime_(TV_network)\n", + "Storing article /wiki/List_of_Billboard_Hot_100_number_ones_of_2000\n", + "Storing article /wiki/City_on_a_Hill_(TV_series)\n", + "Storing article /wiki/Six_Degrees_of_Kevin_BaconStoring article /wiki/List_of_Billboard_Hot_100_number_ones_of_2001\n", + "\n", + "Storing article /wiki/SixDegrees.org\n", + "Storing article /wiki/List_of_Billboard_Hot_100_number_ones_of_2002\n", + "Storing article /wiki/EE_Limited\n", + "Article already exists: /wiki/Philadelphia\n", + "Storing article /wiki/List_of_Billboard_Hot_100_number_ones_of_2003\n", + "Article already exists: /wiki/Edmund_Bacon_(architect)\n", + "Storing article /wiki/List_of_Billboard_Hot_100_number_ones_of_2004\n", + "Storing article /wiki/Urban_planning\n", + "Storing article /wiki/List_of_Billboard_Hot_100_number_ones_of_2005\n", + "Storing article /wiki/Design_of_CitiesStoring article /wiki/List_of_Billboard_Hot_100_number_ones_of_2006\n", + "\n", + "Storing article /wiki/List_of_Billboard_Hot_100_number_ones_of_2007\n", + "Storing article /wiki/Julia_R._Masterman_School\n", + "Storing article /wiki/List_of_Billboard_Hot_100_number_ones_of_2008\n", + "Storing article /wiki/Spring_Garden,_Philadelphia\n", + "Storing article /wiki/List_of_Billboard_Hot_100_number_ones_of_2009\n", + "Storing article /wiki/Pennsylvania_Governor%27s_School_for_the_Arts\n", + "Storing article /wiki/List_of_Billboard_Hot_100_number_ones_of_2010\n", + "Storing article /wiki/Bucknell_University\n", + "Storing article /wiki/List_of_Billboard_Hot_100_number_ones_of_2011Storing article /wiki/Lewisburg,_Pennsylvania\n", + "\n", + "Storing article /wiki/List_of_Billboard_Hot_100_number_ones_of_2012Storing article /wiki/Glory_Van_Scott\n", + "\n", + "Storing article /wiki/List_of_Billboard_Hot_100_number_ones_of_2013\n", + "Article already exists: /wiki/Kevin_Bacon_filmography\n", + "Storing article /wiki/List_of_Billboard_Hot_100_number_ones_of_2014Storing article /wiki/Circle_in_the_Square\n", + "\n", + "Storing article /wiki/List_of_Billboard_Hot_100_number_ones_of_2015\n", + "Storing article /wiki/Nancy_Mills\n", + "Storing article /wiki/List_of_Billboard_Hot_100_number_ones_of_2016\n", + "Storing article /wiki/Cosmopolitan_(magazine)\n", + "Storing article /wiki/List_of_Billboard_Hot_100_number_ones_of_2017\n", + "Storing article /wiki/Fraternities_and_sororities\n", + "Storing article /wiki/List_of_Billboard_Hot_100_number_ones_of_2018\n", + "Storing article /wiki/Animal_House\n", + "Storing article /wiki/List_of_Billboard_Hot_100_number_ones_of_2019\n", + "Storing article /wiki/Search_for_Tomorrow\n", + "Storing article /wiki/List_of_Billboard_Hot_100_number_ones_of_2020\n", + "Storing article /wiki/Guiding_Light\n", + "Storing article /wiki/List_of_Billboard_Hot_100_number_ones_of_2021\n", + "Article already exists: /wiki/Friday_the_13th_(1980_film)\n", + "Storing article /wiki/List_of_Billboard_Hot_100_number_ones_of_2022\n", + "Storing article /wiki/Getting_Out\n", + "Storing article /wiki/List_of_Billboard_Hot_100_number_ones_of_2023\n", + "Storing article /wiki/Phoenix_Theater\n", + "Storing article /wiki/List_of_Billboard_number-one_singles_of_the_1940s\n", + "Storing article /wiki/Flux\n", + "Storing article /wiki/Second_Stage_Theatre\n", + "Storing article /wiki/List_of_Billboard_number-one_singles_from_1950_to_1958\n", + "Storing article /wiki/Obie_AwardStoring article /wiki/List_of_Billboard_Hot_100_number-one_singles_from_1958_to_1969\n", + "\n", + "Storing article /wiki/Forty_Deuce\n", + "Storing article /wiki/Slab_BoysStoring article /wiki/List_of_Billboard_Hot_100_number-one_singles_of_the_1970s\n", + "\n", + "Storing article /wiki/Sean_Penn\n", + "Storing article /wiki/Val_KilmerStoring article /wiki/List_of_Billboard_Hot_100_number-one_singles_of_the_1980s\n", + "\n", + "Storing article /wiki/Barry_Levinson\n", + "Storing article /wiki/List_of_Billboard_Hot_100_number-one_singles_of_the_1990s\n", + "Article already exists: /wiki/Diner_(1982_film)\n", + "Storing article /wiki/Steve_Guttenberg\n", + "Storing article /wiki/List_of_Billboard_Hot_100_number-one_singles_of_the_2000s\n", + "Storing article /wiki/Daniel_Stern_(actor)Storing article /wiki/List_of_Billboard_Hot_100_number-one_singles_of_the_2010s\n", + "\n", + "Storing article /wiki/List_of_Billboard_Hot_100_number-one_singles_of_the_2020sStoring article /wiki/Mickey_Rourke\n", + "\n", + "Storing article /wiki/Tim_Daly\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Storing article /wiki/List_of_Your_Hit_Parade_number-one_songs\n", + "Storing article /wiki/List_of_Billboard_top-ten_singlesStoring article /wiki/Ellen_Barkin\n", + "\n", + "Storing article /wiki/Billboard_Year-EndArticle already exists: /wiki/Footloose_(1984_film)\n", + "\n", + "Storing article /wiki/James_DeanStoring article /wiki/List_of_Billboard_Hot_100_chart_achievements_and_milestones\n", + "\n", + "Storing article /wiki/Rebel_Without_a_Cause\n", + "Article already exists: /wiki/Kevin_Bacon_(disambiguation)\n", + "Storing article /wiki/Mickey_RooneyArticle already exists: /wiki/Philadelphia\n", + "\n", + "Article already exists: /wiki/Kevin_Bacon_filmography\n", + "Storing article /wiki/Judy_Garland\n", + "Article already exists: /wiki/Kyra_Sedgwick\n", + "Article already exists: /wiki/Sosie_Bacon\n", + "Article already exists: /wiki/Edmund_Bacon_(architect)\n", + "Article already exists: /wiki/Michael_Bacon_(musician)Storing article /wiki/Typecasting_(acting)\n", + "\n", + "Article already exists: /wiki/Holly_Near\n", + "Storing article /wiki/John_Hughes_(filmmaker)\n", + "Article already exists: /wiki/Leading_man\n", + "Article already exists: /wiki/Character_actor\n", + "Storing article /wiki/Planes,_Trains_and_Automobiles\n", + "Storing article /wiki/She%27s_Having_a_BabyArticle already exists: /wiki/Golden_Globe_Award\n", + "\n", + "Article already exists: /wiki/Screen_Actors_Guild_AwardStoring article /wiki/The_Big_Picture_(1989_film)\n", + "\n", + "Article already exists: /wiki/Primetime_Emmy_AwardArticle already exists: /wiki/Tremors_(1990_film)\n", + "\n", + "Article already exists: /wiki/The_Guardian\n", + "Article already exists: /wiki/Academy_Award\n", + "Storing article /wiki/Joel_Schumacher\n", + "Article already exists: /wiki/Hollywood_Walk_of_Fame\n", + "Article already exists: /wiki/National_Lampoon%27s_Animal_House\n", + "Article already exists: /wiki/FlatlinersArticle already exists: /wiki/Footloose_(1984_film)\n", + "\n", + "Article already exists: /wiki/Diner_(1982_film)Storing article /wiki/Elizabeth_Perkins\n", + "\n", + "Article already exists: /wiki/JFK_(film)\n", + "Storing article /wiki/He_Said,_She_Said_(film)\n", + "Article already exists: /wiki/A_Few_Good_Men\n", + "Article already exists: /wiki/The_New_York_Times\n", + "Article already exists: /wiki/Apollo_13_(film)\n", + "Article already exists: /wiki/Mystic_River_(film)Storing article /wiki/Oliver_Stone\n", + "\n", + "Article already exists: /wiki/Frost/Nixon_(film)\n", + "Article already exists: /wiki/Friday_the_13th_(1980_film)\n", + "Article already exists: /wiki/Tremors_(1990_film)Article already exists: /wiki/JFK_(film)\n", + "\n", + "Storing article /wiki/A_Few_Good_Men_(film)Article already exists: /wiki/The_River_Wild\n", + "\n", + "Article already exists: /wiki/Sleepers_(film)\n", + "Storing article /wiki/Michael_Greif\n", + "Article already exists: /wiki/Wild_Things_(film)\n", + "Article already exists: /wiki/Golden_Globe_AwardArticle already exists: /wiki/The_Woodsman_(2004_film)\n", + "\n", + "Article already exists: /wiki/The_River_WildArticle already exists: /wiki/Flatliners\n", + "\n", + "Article already exists: /wiki/Crazy,_Stupid,_Love\n", + "Storing article /wiki/Meryl_Streep\n", + "Article already exists: /wiki/Black_Mass_(film)\n", + "Article already exists: /wiki/Patriots_Day_(film)Storing article /wiki/Murder_in_the_First_(film)\n", + "\n", + "Article already exists: /wiki/Losing_Chase\n", + "Article already exists: /wiki/Loverboy_(2005_film)\n", + "Storing article /wiki/Blockbuster_(entertainment)\n", + "Article already exists: /wiki/Fox_Broadcasting_Company\n", + "Article already exists: /wiki/Apollo_13_(film)Article already exists: /wiki/The_Following\n", + "\n", + "Article already exists: /wiki/Michael_Strobl\n", + "Article already exists: /wiki/Sleepers_(film)Article already exists: /wiki/HBO\n", + "\n", + "Article already exists: /wiki/Taking_ChanceStoring article /wiki/Picture_Perfect_(1997_film)\n", + "\n", + "Article already exists: /wiki/Losing_ChaseArticle already exists: /wiki/Golden_Globe_Award_for_Best_Actor_%E2%80%93_Miniseries_or_Television_Film\n", + "\n", + "Storing article /wiki/Digging_to_ChinaArticle already exists: /wiki/Screen_Actors_Guild_Award_for_Outstanding_Performance_by_a_Male_Actor_in_a_Miniseries_or_Television_Movie\n", + "\n", + "Article already exists: /wiki/Amazon_Prime_Video\n", + "Storing article /wiki/PayolaArticle already exists: /wiki/I_Love_Dick_(TV_series)\n", + "\n", + "Article already exists: /wiki/Golden_Globe_Award_for_Best_Actor_%E2%80%93_Television_Series_Musical_or_Comedy\n", + "Storing article /wiki/Telling_Lies_in_America_(film)\n", + "Article already exists: /wiki/Showtime_(TV_network)\n", + "Article already exists: /wiki/Wild_Things_(film)\n", + "Article already exists: /wiki/City_on_a_Hill_(TV_series)\n", + "Storing article /wiki/Stir_of_Echoes\n", + "Article already exists: /wiki/Six_Degrees_of_Kevin_Bacon\n", + "Article already exists: /wiki/SixDegrees.orgStoring article /wiki/David_Koepp\n", + "\n", + "Article already exists: /wiki/EE_Limited\n", + "Storing article /wiki/Cannes_Film_FestivalArticle already exists: /wiki/Philadelphia\n", + "\n", + "Article already exists: /wiki/Edmund_Bacon_(architect)\n", + "Storing article /wiki/Paul_Verhoeven\n", + "Article already exists: /wiki/Urban_planning\n", + "Storing article /wiki/Hollow_Man\n", + "Article already exists: /wiki/Design_of_Cities\n", + "Article already exists: /wiki/Julia_R._Masterman_SchoolStoring article /wiki/Colin_Firth\n", + "\n", + "Article already exists: /wiki/Spring_Garden,_Philadelphia\n", + "Storing article /wiki/Rachel_Blanchard\n", + "Article already exists: /wiki/Pennsylvania_Governor%27s_School_for_the_Arts\n", + "Article already exists: /wiki/Bucknell_University\n", + "Article already exists: /wiki/Lewisburg,_Pennsylvania\n", + "Storing article /wiki/M%C3%A9nage_%C3%A0_trois\n", + "Article already exists: /wiki/Glory_Van_Scott\n", + "Storing article /wiki/Where_the_Truth_Lies\n", + "Article already exists: /wiki/Kevin_Bacon_filmography\n", + "Article already exists: /wiki/Circle_in_the_SquareStoring article /wiki/Atom_Egoyan\n", + "\n", + "Article already exists: /wiki/Nancy_Mills\n", + "Storing article /wiki/MPAA\n", + "Article already exists: /wiki/Cosmopolitan_(magazine)\n", + "Article already exists: /wiki/Fraternities_and_sororitiesStoring article /wiki/MPAA_film_rating_system\n", + "\n", + "Article already exists: /wiki/Animal_House\n", + "Article already exists: /wiki/Sean_Penn\n", + "Article already exists: /wiki/Search_for_Tomorrow\n", + "Storing article /wiki/Tim_RobbinsArticle already exists: /wiki/Guiding_Light\n", + "\n", + "Article already exists: /wiki/Friday_the_13th_(1980_film)\n", + "Storing article /wiki/Clint_EastwoodArticle already exists: /wiki/Getting_Out\n", + "\n", + "Article already exists: /wiki/Phoenix_Theater\n", + "Article already exists: /wiki/Mystic_River_(film)\n", + "Article already exists: /wiki/Flux\n", + "Article already exists: /wiki/The_Woodsman_(2004_film)\n", + "Article already exists: /wiki/Second_Stage_Theatre\n", + "Storing article /wiki/HBO_Films\n", + "Article already exists: /wiki/Obie_Award\n", + "Article already exists: /wiki/Forty_Deuce\n", + "Article already exists: /wiki/Taking_ChanceArticle already exists: /wiki/Slab_Boys\n", + "\n", + "Article already exists: /wiki/Michael_Strobl\n", + "Storing article /wiki/Desert_Storm\n", + "Article already exists: /wiki/Sean_Penn\n", + "Article already exists: /wiki/Val_Kilmer\n", + "Article already exists: /wiki/Screen_Actors_Guild_Award_for_Outstanding_Performance_by_a_Male_Actor_in_a_Miniseries_or_Television_Movie\n", + "Storing article /wiki/Toronto_Film_FestivalArticle already exists: /wiki/Barry_Levinson\n", + "\n", + "Storing article /wiki/Matthew_VaughnArticle already exists: /wiki/Diner_(1982_film)\n", + "\n", + "Article already exists: /wiki/Steve_Guttenberg\n", + "Storing article /wiki/Sebastian_Shaw_(comics)\n", + "Article already exists: /wiki/Daniel_Stern_(actor)\n", + "Storing article /wiki/Dustin_Lance_Black\n", + "Article already exists: /wiki/Mickey_Rourke\n", + "Article already exists: /wiki/Tim_Daly\n", + "Article already exists: /wiki/Ellen_Barkin\n", + "Storing article /wiki/8_(play)\n", + "Article already exists: /wiki/Footloose_(1984_film)\n", + "Storing article /wiki/Perry_v._Brown\n", + "Article already exists: /wiki/James_Dean\n", + "Storing article /wiki/Proposition_8\n", + "Storing article /wiki/Rebel_Without_a_Cause\n", + "Storing article /wiki/Charles_J._Cooper\n", + "Storing article /wiki/Wilshire_Ebell_Theatre\n", + "Article already exists: /wiki/Mickey_Rooney\n", + "Storing article /wiki/American_Foundation_for_Equal_Rights\n", + "Article already exists: /wiki/Judy_Garland\n", + "Article already exists: /wiki/The_Following\n", + "Article already exists: /wiki/Typecasting_(acting)\n", + "Storing article /wiki/Saturn_Award_for_Best_Actor_on_TelevisionArticle already exists: /wiki/John_Hughes_(filmmaker)\n", + "\n", + "Article already exists: /wiki/Planes,_Trains_and_Automobiles\n", + "Storing article /wiki/Huffington_PostArticle already exists: /wiki/She%27s_Having_a_Baby\n", + "\n", + "Article already exists: /wiki/The_Big_Picture_(1989_film)\n", + "Article already exists: /wiki/Tremors_(1990_film)\n", + "Storing article /wiki/The_Bacon_Brothers\n", + "Article already exists: /wiki/Tremors_(1990_film)\n", + "Article already exists: /wiki/Joel_Schumacher\n", + "Article already exists: /wiki/Michael_Bacon_(musician)Article already exists: /wiki/Flatliners\n", + "\n", + "Storing article /wiki/InstagramArticle already exists: /wiki/Elizabeth_Perkins\n", + "\n", + "Storing article /wiki/Old_97%27s\n", + "Article already exists: /wiki/He_Said,_She_Said_(film)\n", + "Storing article /wiki/The_Guardians_of_the_Galaxy_Holiday_SpecialArticle already exists: /wiki/The_New_York_Times\n", + "\n", + "Article already exists: /wiki/Oliver_Stone\n", + "Article already exists: /wiki/JFK_(film)Storing article /wiki/EE_(telecommunications_company)\n", + "\n", + "Article already exists: /wiki/A_Few_Good_Men_(film)\n", + "Article already exists: /wiki/Six_Degrees_of_Kevin_BaconArticle already exists: /wiki/Michael_Greif\n", + "\n", + "Article already exists: /wiki/Golden_Globe_AwardStoring article /wiki/Trivia\n", + "\n", + "Article already exists: /wiki/The_River_Wild\n", + "Article already exists: /wiki/Meryl_StreepStoring article /wiki/Big_screen\n", + "\n", + "Storing article /wiki/Six_degrees_of_separationArticle already exists: /wiki/Murder_in_the_First_(film)\n", + "\n", + "Article already exists: /wiki/Blockbuster_(entertainment)\n", + "Storing article /wiki/Internet_meme\n", + "Article already exists: /wiki/Apollo_13_(film)Article already exists: /wiki/SixDegrees.org\n", + "\n", + "Storing article /wiki/Social_networking_service\n", + "Article already exists: /wiki/Sleepers_(film)\n", + "Article already exists: /wiki/Six_Degrees_of_Kevin_BaconArticle already exists: /wiki/Picture_Perfect_(1997_film)\n", + "\n", + "Article already exists: /wiki/IMDbArticle already exists: /wiki/Losing_Chase\n", + "\n", + "Storing article /wiki/Paul_Erd%C5%91sArticle already exists: /wiki/Digging_to_China\n", + "\n", + "Article already exists: /wiki/Payola\n", + "Article already exists: /wiki/Telling_Lies_in_America_(film)\n", + "Storing article /wiki/Erd%C5%91s_number\n", + "Article already exists: /wiki/Wild_Things_(film)\n", + "Article already exists: /wiki/Paul_Erd%C5%91sArticle already exists: /wiki/Stir_of_Echoes\n", + "\n", + "Article already exists: /wiki/David_KoeppArticle already exists: /wiki/Erd%C5%91s_number\n", + "\n", + "Article already exists: /wiki/Cannes_Film_Festival\n", + "Storing article /wiki/Erd%C5%91s%E2%80%93Bacon_number\n", + "Article already exists: /wiki/Paul_Verhoeven\n", + "Article already exists: /wiki/Hollow_ManArticle already exists: /wiki/Kyra_Sedgwick\n", + "\n", + "Article already exists: /wiki/PBS\n", + "Article already exists: /wiki/Colin_Firth\n", + "Storing article /wiki/Lanford_Wilson\n", + "Storing article /wiki/Lemon_Sky\n", + "Article already exists: /wiki/Rachel_Blanchard\n", + "Storing article /wiki/PyratesArticle already exists: /wiki/M%C3%A9nage_%C3%A0_trois\n", + "\n", + "Article already exists: /wiki/Where_the_Truth_Lies\n", + "Article already exists: /wiki/Atom_Egoyan\n", + "Article already exists: /wiki/Murder_in_the_First_(film)Article already exists: /wiki/MPAA\n", + "\n", + "Article already exists: /wiki/The_Woodsman_(2004_film)\n", + "Article already exists: /wiki/MPAA_film_rating_system\n", + "Article already exists: /wiki/Loverboy_(2005_film)Article already exists: /wiki/Sean_Penn\n", + "\n", + "Article already exists: /wiki/Tim_Robbins\n", + "Article already exists: /wiki/Sosie_Bacon\n", + "Article already exists: /wiki/Clint_Eastwood\n", + "Storing article /wiki/Upper_West_Side\n", + "Article already exists: /wiki/Mystic_River_(film)\n", + "Article already exists: /wiki/The_Woodsman_(2004_film)\n", + "Article already exists: /wiki/Manhattan\n", + "Article already exists: /wiki/HBO_Films\n", + "Storing article /wiki/Tracy_PollanArticle already exists: /wiki/Taking_Chance\n", + "\n", + "Article already exists: /wiki/Separation_of_church_and_state_in_the_United_States\n", + "Article already exists: /wiki/Michael_Strobl\n", + "Storing article /wiki/The_Times\n", + "Article already exists: /wiki/Desert_Storm\n", + "Storing article /wiki/Atheism\n", + "Article already exists: /wiki/Screen_Actors_Guild_Award_for_Outstanding_Performance_by_a_Male_Actor_in_a_Miniseries_or_Television_Movie\n", + "Article already exists: /wiki/Toronto_Film_Festival\n", + "Storing article /wiki/AntireligionArticle already exists: /wiki/Matthew_Vaughn\n", + "\n", + "Article already exists: /wiki/Sebastian_Shaw_(comics)\n", + "Storing article /wiki/Will.i.am\n", + "Article already exists: /wiki/Dustin_Lance_Black\n", + "Article already exists: /wiki/8_(play)\n", + "Storing article /wiki/It%27s_a_New_Day_(Will.i.am_song)\n", + "Article already exists: /wiki/Perry_v._Brown\n", + "Article already exists: /wiki/Proposition_8Storing article /wiki/Barack_Obama\n", + "\n", + "Article already exists: /wiki/Charles_J._Cooper\n", + "Storing article /wiki/Ponzi_scheme\n", + "Storing article /wiki/Wilshire_Ebell_Theatre\n", + "Article already exists: /wiki/American_Foundation_for_Equal_RightsStoring article /wiki/Bernie_Madoff\n", + "\n", + "Article already exists: /wiki/The_Following\n", + "Article already exists: /wiki/Saturn_Award_for_Best_Actor_on_TelevisionStoring article /wiki/Finding_Your_Roots\n", + "\n", + "Article already exists: /wiki/Huffington_Post\n", + "Storing article /wiki/Henry_Louis_Gates\n", + "Article already exists: /wiki/Tremors_(1990_film)\n", + "Article already exists: /wiki/Apollo_13_(film)\n", + "Article already exists: /wiki/The_Bacon_BrothersArticle already exists: /wiki/Mystic_River_(film)\n", + "\n", + "Storing article /wiki/Blockbuster_Entertainment_Awards\n", + "Article already exists: /wiki/Michael_Bacon_(musician)\n", + "Article already exists: /wiki/Instagram\n", + "Article already exists: /wiki/Blockbuster_Entertainment_Awards\n", + "Article already exists: /wiki/Old_97%27s\n", + "Article already exists: /wiki/Hollow_Man\n", + "Article already exists: /wiki/The_Guardians_of_the_Galaxy_Holiday_Special\n", + "Storing article /wiki/Boston_Society_of_Film_Critics\n", + "Article already exists: /wiki/EE_(telecommunications_company)\n", + "Article already exists: /wiki/Six_Degrees_of_Kevin_Bacon\n", + "Storing article /wiki/Boston_Society_of_Film_Critics_Award_for_Best_Cast\n", + "Article already exists: /wiki/Trivia\n", + "Article already exists: /wiki/Mystic_River_(film)\n", + "Article already exists: /wiki/Big_screen\n" + ] + }, + { + "ename": "KeyboardInterrupt", + "evalue": "", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mKeyboardInterrupt\u001b[0m Traceback (most recent call last)", + "Input \u001b[0;32mIn [11]\u001b[0m, in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[1;32m 49\u001b[0m threads \u001b[38;5;241m=\u001b[39m [\n\u001b[1;32m 50\u001b[0m threading\u001b[38;5;241m.\u001b[39mThread(target\u001b[38;5;241m=\u001b[39mscrape_article, args\u001b[38;5;241m=\u001b[39m(\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mThread 1\u001b[39m\u001b[38;5;124m'\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124m/wiki/Kevin_Bacon\u001b[39m\u001b[38;5;124m'\u001b[39m,)),\n\u001b[1;32m 51\u001b[0m threading\u001b[38;5;241m.\u001b[39mThread(target\u001b[38;5;241m=\u001b[39mscrape_article, args\u001b[38;5;241m=\u001b[39m(\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mThread 2\u001b[39m\u001b[38;5;124m'\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124m/wiki/Monty_Python\u001b[39m\u001b[38;5;124m'\u001b[39m,)),\n\u001b[1;32m 52\u001b[0m threading\u001b[38;5;241m.\u001b[39mThread(target\u001b[38;5;241m=\u001b[39mstorage, args\u001b[38;5;241m=\u001b[39m(queue,))\n\u001b[1;32m 53\u001b[0m ]\n\u001b[1;32m 54\u001b[0m [t\u001b[38;5;241m.\u001b[39mstart() \u001b[38;5;28;01mfor\u001b[39;00m t \u001b[38;5;129;01min\u001b[39;00m threads]\n\u001b[0;32m---> 55\u001b[0m [t\u001b[38;5;241m.\u001b[39mjoin() \u001b[38;5;28;01mfor\u001b[39;00m t \u001b[38;5;129;01min\u001b[39;00m threads]\n", + "Input \u001b[0;32mIn [11]\u001b[0m, in \u001b[0;36m\u001b[0;34m(.0)\u001b[0m\n\u001b[1;32m 49\u001b[0m threads \u001b[38;5;241m=\u001b[39m [\n\u001b[1;32m 50\u001b[0m threading\u001b[38;5;241m.\u001b[39mThread(target\u001b[38;5;241m=\u001b[39mscrape_article, args\u001b[38;5;241m=\u001b[39m(\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mThread 1\u001b[39m\u001b[38;5;124m'\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124m/wiki/Kevin_Bacon\u001b[39m\u001b[38;5;124m'\u001b[39m,)),\n\u001b[1;32m 51\u001b[0m threading\u001b[38;5;241m.\u001b[39mThread(target\u001b[38;5;241m=\u001b[39mscrape_article, args\u001b[38;5;241m=\u001b[39m(\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mThread 2\u001b[39m\u001b[38;5;124m'\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124m/wiki/Monty_Python\u001b[39m\u001b[38;5;124m'\u001b[39m,)),\n\u001b[1;32m 52\u001b[0m threading\u001b[38;5;241m.\u001b[39mThread(target\u001b[38;5;241m=\u001b[39mstorage, args\u001b[38;5;241m=\u001b[39m(queue,))\n\u001b[1;32m 53\u001b[0m ]\n\u001b[1;32m 54\u001b[0m [t\u001b[38;5;241m.\u001b[39mstart() \u001b[38;5;28;01mfor\u001b[39;00m t \u001b[38;5;129;01min\u001b[39;00m threads]\n\u001b[0;32m---> 55\u001b[0m [\u001b[43mt\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mjoin\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m \u001b[38;5;28;01mfor\u001b[39;00m t \u001b[38;5;129;01min\u001b[39;00m threads]\n", + "File \u001b[0;32m~/opt/anaconda3/lib/python3.9/threading.py:1053\u001b[0m, in \u001b[0;36mThread.join\u001b[0;34m(self, timeout)\u001b[0m\n\u001b[1;32m 1050\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m \u001b[38;5;167;01mRuntimeError\u001b[39;00m(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mcannot join current thread\u001b[39m\u001b[38;5;124m\"\u001b[39m)\n\u001b[1;32m 1052\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m timeout \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m:\n\u001b[0;32m-> 1053\u001b[0m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_wait_for_tstate_lock\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 1054\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m:\n\u001b[1;32m 1055\u001b[0m \u001b[38;5;66;03m# the behavior of a negative timeout isn't documented, but\u001b[39;00m\n\u001b[1;32m 1056\u001b[0m \u001b[38;5;66;03m# historically .join(timeout=x) for x<0 has acted as if timeout=0\u001b[39;00m\n\u001b[1;32m 1057\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_wait_for_tstate_lock(timeout\u001b[38;5;241m=\u001b[39m\u001b[38;5;28mmax\u001b[39m(timeout, \u001b[38;5;241m0\u001b[39m))\n", + "File \u001b[0;32m~/opt/anaconda3/lib/python3.9/threading.py:1073\u001b[0m, in \u001b[0;36mThread._wait_for_tstate_lock\u001b[0;34m(self, block, timeout)\u001b[0m\n\u001b[1;32m 1070\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m\n\u001b[1;32m 1072\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[0;32m-> 1073\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[43mlock\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43macquire\u001b[49m\u001b[43m(\u001b[49m\u001b[43mblock\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mtimeout\u001b[49m\u001b[43m)\u001b[49m:\n\u001b[1;32m 1074\u001b[0m lock\u001b[38;5;241m.\u001b[39mrelease()\n\u001b[1;32m 1075\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_stop()\n", + "\u001b[0;31mKeyboardInterrupt\u001b[0m: " + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Article already exists: /wiki/Six_degrees_of_separationStoring article /wiki/Bravo_Otto\n", + "\n", + "Article already exists: /wiki/Internet_meme\n", + "Article already exists: /wiki/SixDegrees.org\n", + "Article already exists: /wiki/Bravo_Otto\n", + "Article already exists: /wiki/Social_networking_service\n", + "Article already exists: /wiki/Footloose_(1984_film)\n", + "Article already exists: /wiki/Six_Degrees_of_Kevin_Bacon\n", + "Article already exists: /wiki/IMDbStoring article /wiki/CableACE_Award\n", + "\n", + "Article already exists: /wiki/Paul_Erd%C5%91sArticle already exists: /wiki/CableACE_Award\n", + "\n", + "Article already exists: /wiki/Losing_ChaseArticle already exists: /wiki/Erd%C5%91s_number\n", + "\n", + "Storing article /wiki/Chlotrudis_Awards\n", + "Article already exists: /wiki/Paul_Erd%C5%91s\n", + "Article already exists: /wiki/Erd%C5%91s_number\n", + "Article already exists: /wiki/The_Woodsman_(2004_film)\n", + "Article already exists: /wiki/Erd%C5%91s%E2%80%93Bacon_numberStoring article /wiki/Critics%27_Choice_Movie_Awards\n", + "\n" + ] + } + ], + "source": [ + "from urllib.request import urlopen\n", + "from bs4 import BeautifulSoup\n", + "import re\n", + "import random\n", + "import threading\n", + "from queue import Queue\n", + "import time\n", + "import pymysql\n", + "\n", + "\n", + "def storage(queue):\n", + " conn = pymysql.connect(host='127.0.0.1', unix_socket='/tmp/mysql.sock',\n", + " user='root', passwd='password', db='mysql', charset='utf8')\n", + " cur = conn.cursor()\n", + " cur.execute('USE wikipedia')\n", + " while 1:\n", + " if not queue.empty():\n", + " path = queue.get()\n", + " cur.execute('SELECT * FROM pages WHERE url = %s', (path))\n", + " if cur.rowcount == 0:\n", + " print(f'Storing article {path}')\n", + " cur.execute('INSERT INTO pages (url) VALUES (%s)', (path))\n", + " conn.commit()\n", + " else:\n", + " print(\"Article already exists: {}\".format(path))\n", + "\n", + "visited = set()\n", + "def get_links(thread_name, bs):\n", + " print('Getting links in {}'.format(thread_name))\n", + " links = bs.find('div', {'id':'bodyContent'}).find_all('a', href=re.compile('^(/wiki/)((?!:).)*$'))\n", + " links = [link.get('href') for link in links]\n", + " return [link for link in links if link and link not in visited]\n", + "\n", + "def scrape_article(thread_name, path):\n", + " time.sleep(5)\n", + " visited.add(path)\n", + " print(f'{thread_name}: Scraping {path}')\n", + " bs = BeautifulSoup(urlopen('http://en.wikipedia.org{}'.format(path)), 'html.parser')\n", + " links = get_links(thread_name, bs)\n", + " if len(links) > 0:\n", + " [queue.put(link) for link in links]\n", + " newArticle = links[random.randint(0, len(links)-1)].attrs['href']\n", + " scrape_article(thread_name, newArticle)\n", + "\n", + "\n", + "queue = Queue()\n", + "\n", + "\n", + "threads = [\n", + " threading.Thread(target=scrape_article, args=('Thread 1', '/wiki/Kevin_Bacon',)),\n", + " threading.Thread(target=scrape_article, args=('Thread 2', '/wiki/Monty_Python',)),\n", + " threading.Thread(target=storage, args=(queue,))\n", + "]\n", + "[t.start() for t in threads]\n", + "[t.join() for t in threads]\n" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "id": "e14a0392", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "1 Counter\n", + "2 Counter\n", + "3 Fizz\n", + "3 Counter\n", + "4 Counter\n", + "5 Buzz\n", + "6 Counter\n", + "6 Fizz\n", + "7 Counter\n" + ] + } + ], + "source": [ + "import threading\n", + "import time\n", + "\n", + "def print_time(threadName, delay, iterations):\n", + " start = int(time.time())\n", + " for i in range(0,iterations):\n", + " time.sleep(delay)\n", + " seconds_elapsed = str(int(time.time()) - start)\n", + " print ('{} {}'.format(seconds_elapsed, threadName))\n", + "\n", + "threading.Thread(target=print_time, args=('Fizz', 3, 33)).start()\n", + "threading.Thread(target=print_time, args=('Buzz', 5, 20)).start()\n", + "threading.Thread(target=print_time, args=('Counter', 1, 100)).start()" + ] + }, + { + "cell_type": "markdown", + "id": "e8d9bab6", + "metadata": {}, + "source": [ + "## Processes" + ] + }, + { + "cell_type": "markdown", + "id": "e1cc7a04", + "metadata": {}, + "source": [ + "## IMPORTANT NOTE FOR JUPYTER NOTEBOOK\n", + "\n", + "The multiprocessing package does not play nicely with Jupyter Notebooks. Fortunately, there exists the multiprocess package that does work well with it -- and they have the exact same interface. (note: \"multiprocessing\" vs. \"multiprocess\" -- two different packages, keep them straight!)\n", + "You can install multiprocess, which works with Jupyter notebooks, using:
\n", + "$ pip install multiprocess" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "id": "f676616b", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Counter\n", + "Counter\n", + "Fizz\n", + "Counter\n", + "Counter\n", + "Buzz\n", + "Counter\n", + "Fizz\n", + "Counter\n", + "Counter\n", + "Counter\n", + "Fizz\n", + "Counter\n", + "Buzz\n", + "Counter\n", + "Counter\n", + "Fizz\n", + "Counter\n", + "Counter\n", + "Counter\n", + "Buzz\n", + "Fizz\n", + "Counter\n", + "Counter\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Process Process-8:\n", + "Process Process-6:\n", + "Process Process-7:\n" + ] + }, + { + "ename": "KeyboardInterrupt", + "evalue": "", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mKeyboardInterrupt\u001b[0m Traceback (most recent call last)", + "Input \u001b[0;32mIn [7]\u001b[0m, in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[1;32m 20\u001b[0m processes\u001b[38;5;241m.\u001b[39mappend(Process(target\u001b[38;5;241m=\u001b[39mprint_time, args\u001b[38;5;241m=\u001b[39m(\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mBuzz\u001b[39m\u001b[38;5;124m'\u001b[39m, \u001b[38;5;241m5\u001b[39m, \u001b[38;5;241m20\u001b[39m)))\n\u001b[1;32m 22\u001b[0m [p\u001b[38;5;241m.\u001b[39mstart() \u001b[38;5;28;01mfor\u001b[39;00m p \u001b[38;5;129;01min\u001b[39;00m processes]\n\u001b[0;32m---> 23\u001b[0m [p\u001b[38;5;241m.\u001b[39mjoin() \u001b[38;5;28;01mfor\u001b[39;00m p \u001b[38;5;129;01min\u001b[39;00m processes]\n", + "Input \u001b[0;32mIn [7]\u001b[0m, in \u001b[0;36m\u001b[0;34m(.0)\u001b[0m\n\u001b[1;32m 20\u001b[0m processes\u001b[38;5;241m.\u001b[39mappend(Process(target\u001b[38;5;241m=\u001b[39mprint_time, args\u001b[38;5;241m=\u001b[39m(\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mBuzz\u001b[39m\u001b[38;5;124m'\u001b[39m, \u001b[38;5;241m5\u001b[39m, \u001b[38;5;241m20\u001b[39m)))\n\u001b[1;32m 22\u001b[0m [p\u001b[38;5;241m.\u001b[39mstart() \u001b[38;5;28;01mfor\u001b[39;00m p \u001b[38;5;129;01min\u001b[39;00m processes]\n\u001b[0;32m---> 23\u001b[0m [\u001b[43mp\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mjoin\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m \u001b[38;5;28;01mfor\u001b[39;00m p \u001b[38;5;129;01min\u001b[39;00m processes]\n", + "File \u001b[0;32m~/opt/anaconda3/lib/python3.9/site-packages/multiprocess/process.py:149\u001b[0m, in \u001b[0;36mBaseProcess.join\u001b[0;34m(self, timeout)\u001b[0m\n\u001b[1;32m 147\u001b[0m \u001b[38;5;28;01massert\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_parent_pid \u001b[38;5;241m==\u001b[39m os\u001b[38;5;241m.\u001b[39mgetpid(), \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mcan only join a child process\u001b[39m\u001b[38;5;124m'\u001b[39m\n\u001b[1;32m 148\u001b[0m \u001b[38;5;28;01massert\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_popen \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mcan only join a started process\u001b[39m\u001b[38;5;124m'\u001b[39m\n\u001b[0;32m--> 149\u001b[0m res \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_popen\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mwait\u001b[49m\u001b[43m(\u001b[49m\u001b[43mtimeout\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 150\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m res \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m:\n\u001b[1;32m 151\u001b[0m _children\u001b[38;5;241m.\u001b[39mdiscard(\u001b[38;5;28mself\u001b[39m)\n", + "File \u001b[0;32m~/opt/anaconda3/lib/python3.9/site-packages/multiprocess/popen_fork.py:43\u001b[0m, in \u001b[0;36mPopen.wait\u001b[0;34m(self, timeout)\u001b[0m\n\u001b[1;32m 41\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m\n\u001b[1;32m 42\u001b[0m \u001b[38;5;66;03m# This shouldn't block if wait() returned successfully.\u001b[39;00m\n\u001b[0;32m---> 43\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mpoll\u001b[49m\u001b[43m(\u001b[49m\u001b[43mos\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mWNOHANG\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;28;43;01mif\u001b[39;49;00m\u001b[43m \u001b[49m\u001b[43mtimeout\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m==\u001b[39;49m\u001b[43m \u001b[49m\u001b[38;5;241;43m0.0\u001b[39;49m\u001b[43m \u001b[49m\u001b[38;5;28;43;01melse\u001b[39;49;00m\u001b[43m \u001b[49m\u001b[38;5;241;43m0\u001b[39;49m\u001b[43m)\u001b[49m\n\u001b[1;32m 44\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mreturncode\n", + "File \u001b[0;32m~/opt/anaconda3/lib/python3.9/site-packages/multiprocess/popen_fork.py:27\u001b[0m, in \u001b[0;36mPopen.poll\u001b[0;34m(self, flag)\u001b[0m\n\u001b[1;32m 25\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mreturncode \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m:\n\u001b[1;32m 26\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[0;32m---> 27\u001b[0m pid, sts \u001b[38;5;241m=\u001b[39m \u001b[43mos\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mwaitpid\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mpid\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mflag\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 28\u001b[0m \u001b[38;5;28;01mexcept\u001b[39;00m \u001b[38;5;167;01mOSError\u001b[39;00m:\n\u001b[1;32m 29\u001b[0m \u001b[38;5;66;03m# Child process not yet created. See #1731717\u001b[39;00m\n\u001b[1;32m 30\u001b[0m \u001b[38;5;66;03m# e.errno == errno.ECHILD == 10\u001b[39;00m\n\u001b[1;32m 31\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m\n", + "\u001b[0;31mKeyboardInterrupt\u001b[0m: " + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Traceback (most recent call last):\n", + "Traceback (most recent call last):\n", + "Traceback (most recent call last):\n", + " File \"/Users/RSpecht/opt/anaconda3/lib/python3.9/site-packages/multiprocess/process.py\", line 315, in _bootstrap\n", + " self.run()\n", + " File \"/Users/RSpecht/opt/anaconda3/lib/python3.9/site-packages/multiprocess/process.py\", line 315, in _bootstrap\n", + " self.run()\n", + " File \"/Users/RSpecht/opt/anaconda3/lib/python3.9/site-packages/multiprocess/process.py\", line 315, in _bootstrap\n", + " self.run()\n", + " File \"/Users/RSpecht/opt/anaconda3/lib/python3.9/site-packages/multiprocess/process.py\", line 108, in run\n", + " self._target(*self._args, **self._kwargs)\n", + " File \"/Users/RSpecht/opt/anaconda3/lib/python3.9/site-packages/multiprocess/process.py\", line 108, in run\n", + " self._target(*self._args, **self._kwargs)\n", + " File \"/Users/RSpecht/opt/anaconda3/lib/python3.9/site-packages/multiprocess/process.py\", line 108, in run\n", + " self._target(*self._args, **self._kwargs)\n", + " File \"/var/folders/y6/jnf4yrtx1pg3y9tqb8fmhnrr0000gp/T/ipykernel_92257/1252522224.py\", line 12, in print_time\n", + " time.sleep(delay)\n", + " File \"/var/folders/y6/jnf4yrtx1pg3y9tqb8fmhnrr0000gp/T/ipykernel_92257/1252522224.py\", line 12, in print_time\n", + " time.sleep(delay)\n", + " File \"/var/folders/y6/jnf4yrtx1pg3y9tqb8fmhnrr0000gp/T/ipykernel_92257/1252522224.py\", line 12, in print_time\n", + " time.sleep(delay)\n", + "KeyboardInterrupt\n", + "KeyboardInterrupt\n", + "KeyboardInterrupt\n" + ] + } + ], + "source": [ + "# Uncomment this for non-Notebooks\n", + "#from multiprocessing import Process \n", + "\n", + "# Comment this for non-Notebooks\n", + "from multiprocess import Process\n", + "\n", + "import time\n", + "\n", + "def print_time(threadName, delay, iterations):\n", + " start = int(time.time())\n", + " for i in range(0,iterations):\n", + " time.sleep(delay)\n", + " seconds_elapsed = str(int(time.time()) - start)\n", + " print (threadName if threadName else seconds_elapsed)\n", + "\n", + "processes = [\n", + " Process(target=print_time, args=('Counter', 1, 100)),\n", + " Process(target=print_time, args=('Fizz', 3, 33)),\n", + " Process(target=print_time, args=('Buzz', 5, 20)) \n", + "]\n", + "\n", + "[p.start() for p in processes]\n", + "[p.join() for p in processes]" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "id": "bbdd4962", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[None, None]" + ] + }, + "execution_count": 16, + "metadata": {}, + "output_type": "execute_result" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Scraping Kevin Bacon in process 4067\n", + "Scraping Monty Python in process 4068\n", + "Scraping Ewan McGregor in process 4067\n", + "Scraping Charisma Records in process 4068\n", + "Scraping Renée Zellweger in process 4067\n", + "Scraping Genesis (band) in process 4068\n", + "Scraping Alana Haim in process 4067\n", + "Scraping Maroon 5 in process 4068\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Process Process-19:\n", + "Process Process-18:\n", + "Traceback (most recent call last):\n", + "Traceback (most recent call last):\n", + " File \"/Users/RSpecht/opt/anaconda3/lib/python3.9/site-packages/multiprocess/process.py\", line 315, in _bootstrap\n", + " self.run()\n", + " File \"/Users/RSpecht/opt/anaconda3/lib/python3.9/site-packages/multiprocess/process.py\", line 315, in _bootstrap\n", + " self.run()\n", + " File \"/Users/RSpecht/opt/anaconda3/lib/python3.9/site-packages/multiprocess/process.py\", line 108, in run\n", + " self._target(*self._args, **self._kwargs)\n", + " File \"/Users/RSpecht/opt/anaconda3/lib/python3.9/site-packages/multiprocess/process.py\", line 108, in run\n", + " self._target(*self._args, **self._kwargs)\n", + " File \"/var/folders/y6/jnf4yrtx1pg3y9tqb8fmhnrr0000gp/T/ipykernel_92257/1953871450.py\", line 28, in scrape_article\n", + " scrape_article(links[random.randint(0, len(links)-1)].attrs['href'])\n", + " File \"/var/folders/y6/jnf4yrtx1pg3y9tqb8fmhnrr0000gp/T/ipykernel_92257/1953871450.py\", line 28, in scrape_article\n", + " scrape_article(links[random.randint(0, len(links)-1)].attrs['href'])\n", + " File \"/var/folders/y6/jnf4yrtx1pg3y9tqb8fmhnrr0000gp/T/ipykernel_92257/1953871450.py\", line 28, in scrape_article\n", + " scrape_article(links[random.randint(0, len(links)-1)].attrs['href'])\n", + " File \"/var/folders/y6/jnf4yrtx1pg3y9tqb8fmhnrr0000gp/T/ipykernel_92257/1953871450.py\", line 28, in scrape_article\n", + " scrape_article(links[random.randint(0, len(links)-1)].attrs['href'])\n", + " File \"/var/folders/y6/jnf4yrtx1pg3y9tqb8fmhnrr0000gp/T/ipykernel_92257/1953871450.py\", line 28, in scrape_article\n", + " scrape_article(links[random.randint(0, len(links)-1)].attrs['href'])\n", + " File \"/var/folders/y6/jnf4yrtx1pg3y9tqb8fmhnrr0000gp/T/ipykernel_92257/1953871450.py\", line 28, in scrape_article\n", + " scrape_article(links[random.randint(0, len(links)-1)].attrs['href'])\n", + " [Previous line repeated 1 more time]\n", + " [Previous line repeated 1 more time]\n", + " File \"/var/folders/y6/jnf4yrtx1pg3y9tqb8fmhnrr0000gp/T/ipykernel_92257/1953871450.py\", line 23, in scrape_article\n", + " time.sleep(5)\n", + "KeyboardInterrupt\n", + " File \"/var/folders/y6/jnf4yrtx1pg3y9tqb8fmhnrr0000gp/T/ipykernel_92257/1953871450.py\", line 23, in scrape_article\n", + " time.sleep(5)\n", + "KeyboardInterrupt\n" + ] + } + ], + "source": [ + "from urllib.request import urlopen\n", + "from bs4 import BeautifulSoup\n", + "import re\n", + "import random\n", + "\n", + "# Uncomment this for non-Notebooks\n", + "#from multiprocessing import Process \n", + "\n", + "# Comment this for non-Notebooks\n", + "from multiprocess import Process\n", + "\n", + "import os\n", + "import time\n", + "\n", + "visited = []\n", + "def get_links(bs):\n", + " links = bs.find('div', {'id':'bodyContent'}).find_all('a', href=re.compile('^(/wiki/)((?!:).)*$'))\n", + " return [link for link in links if link not in visited]\n", + "\n", + "def scrape_article(path):\n", + " visited.append(path)\n", + " html = urlopen('http://en.wikipedia.org{}'.format(path))\n", + " time.sleep(5)\n", + " bs = BeautifulSoup(html, 'html.parser')\n", + " print(f'Scraping {bs.find(\"h1\").get_text()} in process {os.getpid()}')\n", + " links = get_links(bs)\n", + " if len(links) > 0:\n", + " scrape_article(links[random.randint(0, len(links)-1)].attrs['href'])\n", + "\n", + "\n", + "processes = [\n", + " Process(target=scrape_article, args=('/wiki/Kevin_Bacon',)),\n", + " Process(target=scrape_article, args=('/wiki/Monty_Python',)) \n", + "]\n", + "\n", + "[p.start() for p in processes]\n" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "id": "0f0c5b00", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[None, None, None]" + ] + }, + "execution_count": 14, + "metadata": {}, + "output_type": "execute_result" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Scraping Kevin Bacon in process 97023\n", + "Scraping Monty Python in process 97024\n", + "Scraping Kevin Bacon (disambiguation) in process 97023\n", + "Scraping Philadelphia in process 97024\n", + "Scraping Kevin Bacon filmography in process 97023\n", + "Scraping Kyra Sedgwick in process 97024\n", + "Scraping Sosie Bacon in process 97023\n", + "Scraping Edmund Bacon (architect) in process 97024\n", + "Scraping Michael Bacon (musician) in process 97023\n", + "Scraping Holly Near in process 97024\n", + "Scraping Leading actor in process 97023\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Process Process-17:\n", + "Process Process-16:\n", + "Traceback (most recent call last):\n", + "Traceback (most recent call last):\n", + " File \"/Users/RSpecht/opt/anaconda3/lib/python3.9/site-packages/multiprocess/process.py\", line 315, in _bootstrap\n", + " self.run()\n", + " File \"/Users/RSpecht/opt/anaconda3/lib/python3.9/site-packages/multiprocess/process.py\", line 315, in _bootstrap\n", + " self.run()\n", + " File \"/Users/RSpecht/opt/anaconda3/lib/python3.9/site-packages/multiprocess/process.py\", line 108, in run\n", + " self._target(*self._args, **self._kwargs)\n", + " File \"/Users/RSpecht/opt/anaconda3/lib/python3.9/site-packages/multiprocess/process.py\", line 108, in run\n", + " self._target(*self._args, **self._kwargs)\n", + " File \"/var/folders/y6/jnf4yrtx1pg3y9tqb8fmhnrr0000gp/T/ipykernel_92257/3812966439.py\", line 43, in scrape_article\n", + " time.sleep(5)\n", + " File \"/var/folders/y6/jnf4yrtx1pg3y9tqb8fmhnrr0000gp/T/ipykernel_92257/3812966439.py\", line 43, in scrape_article\n", + " time.sleep(5)\n", + "KeyboardInterrupt\n", + "KeyboardInterrupt\n", + "Process Process-15:\n", + "Traceback (most recent call last):\n", + " File \"/Users/RSpecht/opt/anaconda3/lib/python3.9/site-packages/multiprocess/process.py\", line 315, in _bootstrap\n", + " self.run()\n", + " File \"/Users/RSpecht/opt/anaconda3/lib/python3.9/site-packages/multiprocess/process.py\", line 108, in run\n", + " self._target(*self._args, **self._kwargs)\n", + " File \"/var/folders/y6/jnf4yrtx1pg3y9tqb8fmhnrr0000gp/T/ipykernel_92257/3812966439.py\", line 24, in task_delegator\n", + " if not urlsQueue.empty():\n", + " File \"/Users/RSpecht/opt/anaconda3/lib/python3.9/site-packages/multiprocess/queues.py\", line 132, in empty\n", + " return not self._poll()\n", + " File \"/Users/RSpecht/opt/anaconda3/lib/python3.9/site-packages/multiprocess/connection.py\", line 260, in poll\n", + " return self._poll(timeout)\n", + " File \"/Users/RSpecht/opt/anaconda3/lib/python3.9/site-packages/multiprocess/connection.py\", line 427, in _poll\n", + " r = wait([self], timeout)\n", + " File \"/Users/RSpecht/opt/anaconda3/lib/python3.9/site-packages/multiprocess/connection.py\", line 934, in wait\n", + " ready = selector.select(timeout)\n", + " File \"/Users/RSpecht/opt/anaconda3/lib/python3.9/selectors.py\", line 416, in select\n", + " fd_event_list = self._selector.poll(timeout)\n", + "KeyboardInterrupt\n", + "\n", + "During handling of the above exception, another exception occurred:\n", + "\n", + "Traceback (most recent call last):\n", + " File \"/Users/RSpecht/opt/anaconda3/lib/python3.9/site-packages/multiprocess/process.py\", line 318, in _bootstrap\n", + " util._exit_function()\n", + " File \"/Users/RSpecht/opt/anaconda3/lib/python3.9/site-packages/multiprocess/util.py\", line 360, in _exit_function\n", + " _run_finalizers()\n", + " File \"/Users/RSpecht/opt/anaconda3/lib/python3.9/site-packages/multiprocess/util.py\", line 300, in _run_finalizers\n", + " finalizer()\n", + " File \"/Users/RSpecht/opt/anaconda3/lib/python3.9/site-packages/multiprocess/util.py\", line 224, in __call__\n", + " res = self._callback(*self._args, **self._kwargs)\n", + " File \"/Users/RSpecht/opt/anaconda3/lib/python3.9/site-packages/multiprocess/queues.py\", line 202, in _finalize_join\n", + " thread.join()\n", + " File \"/Users/RSpecht/opt/anaconda3/lib/python3.9/threading.py\", line 1053, in join\n", + " self._wait_for_tstate_lock()\n", + " File \"/Users/RSpecht/opt/anaconda3/lib/python3.9/threading.py\", line 1073, in _wait_for_tstate_lock\n", + " if lock.acquire(block, timeout):\n", + "KeyboardInterrupt\n" + ] + } + ], + "source": [ + "from urllib.request import urlopen\n", + "from bs4 import BeautifulSoup\n", + "import re\n", + "import random\n", + "\n", + "# Uncomment this for non-Notebooks\n", + "#from multiprocessing import Process, Queue\n", + "\n", + "# Comment this for non-Notebooks\n", + "from multiprocess import Process, Queue\n", + "import os\n", + "import time\n", + "\n", + "\n", + "def task_delegator(taskQueue, urlsQueue):\n", + " #Initialize with a task for each process\n", + " visited = ['/wiki/Kevin_Bacon', '/wiki/Monty_Python']\n", + " taskQueue.put('/wiki/Kevin_Bacon')\n", + " taskQueue.put('/wiki/Monty_Python')\n", + "\n", + " while 1:\n", + " # Check to see if there are new links in the urlsQueue\n", + " # for processing\n", + " if not urlsQueue.empty():\n", + " links = [link for link in urlsQueue.get() if link not in visited]\n", + " for link in links:\n", + " #Add new link to the taskQueue\n", + " taskQueue.put(link)\n", + "\n", + "def get_links(bs):\n", + " links = bs.find('div', {'id':'bodyContent'}).find_all('a',\n", + " href=re.compile('^(/wiki/)((?!:).)*$'))\n", + " return [link.attrs['href'] for link in links]\n", + "\n", + "def scrape_article(taskQueue, urlsQueue):\n", + " while 1:\n", + " while taskQueue.empty():\n", + " #Sleep 100 ms while waiting for the task queue\n", + " #This should be rare\n", + " time.sleep(.1)\n", + " path = taskQueue.get()\n", + " html = urlopen('http://en.wikipedia.org{}'.format(path))\n", + " time.sleep(5)\n", + " bs = BeautifulSoup(html, 'html.parser')\n", + " print(f'Scraping {bs.find('h1').get_text()} in process {os.getpid()}')\n", + " links = get_links(bs)\n", + " #Send these to the delegator for processing\n", + " urlsQueue.put(links)\n", + "\n", + "taskQueue = Queue()\n", + "urlsQueue = Queue()\n", + "\n", + "processes = [\n", + " Process(target=task_delegator, args=(taskQueue, urlsQueue,)),\n", + " Process(target=scrape_article, args=(taskQueue, urlsQueue,)),\n", + " Process(target=scrape_article, args=(taskQueue, urlsQueue,))\n", + "]\n", + "\n", + "[p.start() for p in processes]\n", + " " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "4cacd33c", + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.9.12" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/Chapter20_WebScrapingProxies.ipynb b/Chapter20_WebScrapingProxies.ipynb new file mode 100644 index 0000000..98321ab --- /dev/null +++ b/Chapter20_WebScrapingProxies.ipynb @@ -0,0 +1,1757 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 8, + "id": "2bf906cf", + "metadata": {}, + "outputs": [], + "source": [ + "from selenium import webdriver\n", + "from selenium.webdriver.chrome.service import Service as ChromeService\n", + "from webdriver_manager.chrome import ChromeDriverManager\n", + "\n", + "CHROMEDRIVER_PATH = ChromeDriverManager().install()\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "id": "913ba9be", + "metadata": {}, + "outputs": [], + "source": [ + "driver = webdriver.Chrome(service=ChromeService(ChromeDriverManager().install()))\n", + "driver.close()" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "id": "8ea650dc", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "
2a09:bac3:8810:428::6a:44\n",
+      "
\n" + ] + } + ], + "source": [ + "from selenium import webdriver\n", + "from selenium.webdriver.chrome.options import Options\n", + "\n", + "chrome_options = Options()\n", + "chrome_options.add_argument(\"--headless\")\n", + "driver = webdriver.Chrome(service=Service(CHROMEDRIVER_PATH), options=chrome_options)\n", + "\n", + "driver.get('http://icanhazip.com')\n", + "print(driver.page_source)\n", + "driver.close()" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "id": "730d9d2f", + "metadata": {}, + "outputs": [], + "source": [ + "from base64 import b64decode\n", + "\n", + "import requests\n", + "\n", + "api_response = requests.post(\n", + " \"https://api.zyte.com/v1/extract\",\n", + " auth=(\"76cd6db740da41b9b5611d6fba1e4814\", \"\"),\n", + " json={\n", + " \"url\": \"https://www.target.com/p/web-scraping-with-python-2nd-edition-by-ryan-mitchell-paperback/-/A-83650487\",\n", + " \"httpResponseBody\": True,\n", + " },\n", + ")\n", + "http_response_body: bytes = b64decode(api_response.json()[\"httpResponseBody\"])\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "e39f49bb", + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "id": "a1f05445", + "metadata": {}, + "source": [ + "## Web Scraping Proxies" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "dfd7ca70", + "metadata": {}, + "outputs": [], + "source": [ + "import requests\n", + "import time \n", + "\n", + "SCRAPING_BEE_KEY = 'K4RPC9P88QCGHPMC4HB1D700B9P7J4JDAN9PAUERLIPFX0IGUHHFFOYBJY1CG1EN3VDZ3TR6UUQ9WKI4'" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "id": "0844daca", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Time: 2.4299299716949463\n", + "HTTP status: 200\n", + "Response body: b'Web Scraping With Python - 2nd Edition By Ryan Mitchell (paperback) : Target
Skip images
\"Web

Already have this product?

Snap a pic for all to see!

Web Scraping with Python - 2nd Edition by Ryan Mitchell (Paperback)

Create or manage registry

About this item

Details

Description



Book Synopsis



If programming is magic then web scraping is surely a form of wizardry. By writing a simple automated program, you can query web servers, request data, and parse it to extract the information you need. The expanded edition of this practical book not only introduces you web scraping, but also serves as a comprehensive guide to scraping almost every type of data from the modern web.

Part I focuses on web scraping mechanics: using Python to request information from a web server, performing basic handling of the server\\'s response, and interacting with sites in an automated fashion. Part II explores a variety of more specific tools and applications to fit any web scraping scenario you\\'re likely to encounter.

  • Parse complicated HTML pages
  • Develop crawlers with the Scrapy framework
  • Learn methods to store data you scrape
  • Read and extract data from documents
  • Clean and normalize badly formatted data
  • Read and write natural languages
  • Crawl through forms and logins
  • Scrape JavaScript and crawl through APIs
  • Use and write image-to-text software
  • Avoid scraping traps and bot blockers
  • Use scrapers to test your website



About the Author



Ryan Mitchell is a Software Engineer at LinkeDrive in Boston, where she develops their API and data analysis tools. She is a graduate of Olin College of Engineering, and is a Masters degree student at Harvard University School of Extension Studies. Prior to joining LinkeDrive, she was a Software Engineer working on web scraping and data analysis at Abine.

Additional product information and recommendations

Similar items

Loading, please wait...

Your views

Loading, please wait...

More to consider

Loading, please wait...

Featured Products

Loading, please wait...

Guest Ratings & Reviews

Disclaimer

Get top deals, latest trends, and more.

Privacy policy

Footer

'\n" + ] + } + ], + "source": [ + "start = time.time()\n", + "params = {\n", + " 'api_key': SCRAPING_BEE_KEY,\n", + " 'url': 'https://www.target.com/p/-/A-83650487', \n", + " 'render_js': 'false'\n", + "}\n", + "response = requests.get('https://app.scrapingbee.com/api/v1/', params=params)\n", + "print(f'Time: {time.time() - start}')\n", + "print(f'HTTP status: {response.status_code}')\n", + "print(f'Response body: {response.content}')" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "id": "0ea96b44", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Time: 2.073486089706421\n", + "HTTP status: 200\n", + "Response body: b'Web Scraping With Python - 2nd Edition By Ryan Mitchell (paperback) : Target
Skip images
\"Web

Already have this product?

Snap a pic for all to see!

Web Scraping with Python - 2nd Edition by Ryan Mitchell (Paperback)

Create or manage registry

About this item

Details

Description



Book Synopsis



If programming is magic then web scraping is surely a form of wizardry. By writing a simple automated program, you can query web servers, request data, and parse it to extract the information you need. The expanded edition of this practical book not only introduces you web scraping, but also serves as a comprehensive guide to scraping almost every type of data from the modern web.

Part I focuses on web scraping mechanics: using Python to request information from a web server, performing basic handling of the server\\'s response, and interacting with sites in an automated fashion. Part II explores a variety of more specific tools and applications to fit any web scraping scenario you\\'re likely to encounter.

  • Parse complicated HTML pages
  • Develop crawlers with the Scrapy framework
  • Learn methods to store data you scrape
  • Read and extract data from documents
  • Clean and normalize badly formatted data
  • Read and write natural languages
  • Crawl through forms and logins
  • Scrape JavaScript and crawl through APIs
  • Use and write image-to-text software
  • Avoid scraping traps and bot blockers
  • Use scrapers to test your website



About the Author



Ryan Mitchell is a Software Engineer at LinkeDrive in Boston, where she develops their API and data analysis tools. She is a graduate of Olin College of Engineering, and is a Masters degree student at Harvard University School of Extension Studies. Prior to joining LinkeDrive, she was a Software Engineer working on web scraping and data analysis at Abine.

Additional product information and recommendations

Similar items

Loading, please wait...

Your views

Loading, please wait...

More to consider

Loading, please wait...

Featured Products

Loading, please wait...

Guest Ratings & Reviews

Disclaimer

Get top deals, latest trends, and more.

Privacy policy

Footer

'\n" + ] + } + ], + "source": [ + "from scrapingbee import ScrapingBeeClient\n", + "\n", + "start = time.time()\n", + "client = ScrapingBeeClient(api_key=SCRAPING_BEE_KEY)\n", + "params = {'render_js': 'false'}\n", + "response = client.get('https://www.target.com/p/-/A-83650487', params=params)\n", + "\n", + "print(f'Time: {time.time() - start}')\n", + "print(f'HTTP status: {response.status_code}')\n", + "print(f'Response body: {response.content}')\n" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "f8403823", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Time: 2.085872173309326\n", + "HTTP status: 200\n", + "Response body: b'162.244.149.135\\n'\n" + ] + } + ], + "source": [ + "from scrapingbee import ScrapingBeeClient\n", + "\n", + "start = time.time()\n", + "client = ScrapingBeeClient(api_key=SCRAPING_BEE_KEY)\n", + "params = {'render_js': 'false'}\n", + "response = client.get('https://icanhazip.com/', params=params)\n", + "\n", + "print(f'Time: {time.time() - start}')\n", + "print(f'HTTP status: {response.status_code}')\n", + "print(f'Response body: {response.content}')" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "id": "5b4f860c", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Time: 5.785068035125732\n", + "HTTP status: 200\n", + "Response body: b'64.67.52.107\\n'\n" + ] + } + ], + "source": [ + "from scrapingbee import ScrapingBeeClient\n", + "\n", + "start = time.time()\n", + "client = ScrapingBeeClient(api_key=SCRAPING_BEE_KEY)\n", + "params = {\n", + " 'render_js': 'false',\n", + " 'premium_proxy': 'true',\n", + " 'country_code':'us'\n", + "}\n", + "response = client.get('https://icanhazip.com/', params=params)\n", + "\n", + "print(f'Time: {time.time() - start}')\n", + "print(f'HTTP status: {response.status_code}')\n", + "print(f'Response body: {response.content}')" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "id": "3e9ba5be", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Time: 2.6187891960144043\n", + "HTTP status: 200\n", + "Response body: b'184.15.72.234\\n'\n" + ] + } + ], + "source": [ + "from scrapingbee import ScrapingBeeClient\n", + "\n", + "start = time.time()\n", + "client = ScrapingBeeClient(api_key=SCRAPING_BEE_KEY)\n", + "params = {\n", + " 'render_js': 'false',\n", + " 'premium_proxy': 'true',\n", + " 'country_code':'us'\n", + "}\n", + "response = client.get('https://icanhazip.com/', params=params)\n", + "\n", + "print(f'Time: {time.time() - start}')\n", + "print(f'HTTP status: {response.status_code}')\n", + "print(f'Response body: {response.content}')" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "id": "54933d86", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Time: 4.9734251499176025\n", + "HTTP status: 200\n", + "Response body: b'
194.15.107.195\\n
'\n" + ] + } + ], + "source": [ + "from scrapingbee import ScrapingBeeClient\n", + "\n", + "start = time.time()\n", + "client = ScrapingBeeClient(api_key=SCRAPING_BEE_KEY)\n", + "params = {\n", + " 'render_js': 'false',\n", + " 'stealth_proxy': 'true',\n", + "}\n", + "response = client.get('https://icanhazip.com/', params=params)\n", + "\n", + "print(f'Time: {time.time() - start}')\n", + "print(f'HTTP status: {response.status_code}')\n", + "print(f'Response body: {response.content}')" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "id": "5a372987", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Time: 5.2490880489349365\n", + "HTTP status: 200\n", + "Response body: b'
40.183.223.222\\n
'\n" + ] + } + ], + "source": [ + "from scrapingbee import ScrapingBeeClient\n", + "\n", + "start = time.time()\n", + "client = ScrapingBeeClient(api_key=SCRAPING_BEE_KEY)\n", + "params = {\n", + " 'render_js': 'false',\n", + " 'stealth_proxy': 'true',\n", + "}\n", + "response = client.get('https://icanhazip.com/', params=params)\n", + "\n", + "print(f'Time: {time.time() - start}')\n", + "print(f'HTTP status: {response.status_code}')\n", + "print(f'Response body: {response.content}')" + ] + }, + { + "cell_type": "markdown", + "id": "75daca46", + "metadata": {}, + "source": [ + "### ScraperAPI" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "id": "6c53cbdf", + "metadata": {}, + "outputs": [], + "source": [ + "SCRAPER_API_KEY = 'b832a8545143d657a393c08b030edc87'" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "id": "52293cd8", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Time: 8.361520290374756\n", + "HTTP status: 200\n", + "Response body: b'Web Scraping With Python - 2nd Edition By Ryan Mitchell (paperback) : Target
Skip images
\"Web

Already have this product?

Snap a pic for all to see!

Web Scraping with Python - 2nd Edition by Ryan Mitchell (Paperback)

Create or manage registry

About this item

Details

Description



Book Synopsis



If programming is magic then web scraping is surely a form of wizardry. By writing a simple automated program, you can query web servers, request data, and parse it to extract the information you need. The expanded edition of this practical book not only introduces you web scraping, but also serves as a comprehensive guide to scraping almost every type of data from the modern web.

Part I focuses on web scraping mechanics: using Python to request information from a web server, performing basic handling of the server\\'s response, and interacting with sites in an automated fashion. Part II explores a variety of more specific tools and applications to fit any web scraping scenario you\\'re likely to encounter.

  • Parse complicated HTML pages
  • Develop crawlers with the Scrapy framework
  • Learn methods to store data you scrape
  • Read and extract data from documents
  • Clean and normalize badly formatted data
  • Read and write natural languages
  • Crawl through forms and logins
  • Scrape JavaScript and crawl through APIs
  • Use and write image-to-text software
  • Avoid scraping traps and bot blockers
  • Use scrapers to test your website



About the Author



Ryan Mitchell is a Software Engineer at LinkeDrive in Boston, where she develops their API and data analysis tools. She is a graduate of Olin College of Engineering, and is a Masters degree student at Harvard University School of Extension Studies. Prior to joining LinkeDrive, she was a Software Engineer working on web scraping and data analysis at Abine.

Additional product information and recommendations

Similar items

Loading, please wait...

Your views

Loading, please wait...

More to consider

Loading, please wait...

Featured Products

Loading, please wait...

Guest Ratings & Reviews

Disclaimer

Get top deals, latest trends, and more.

Privacy policy

Footer

'\n" + ] + } + ], + "source": [ + "import requests\n", + "import time \n", + "\n", + "start = time.time()\n", + "params = {\n", + " 'api_key': SCRAPER_API_KEY,\n", + " 'url': 'https://www.target.com/p/-/A-83650487'\n", + "}\n", + "response = requests.get('http://api.scraperapi.com', params=params)\n", + "print(f'Time: {time.time() - start}')\n", + "print(f'HTTP status: {response.status_code}')\n", + "print(f'Response body: {response.content}')" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "id": "89ef2529", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Time: 4.349257946014404\n", + "HTTP status: 200\n", + "Response body: b'Web Scraping With Python - 2nd Edition By Ryan Mitchell (paperback) : Target
Skip images
\"Web

Already have this product?

Snap a pic for all to see!

Web Scraping with Python - 2nd Edition by Ryan Mitchell (Paperback)

Create or manage registry

About this item

Details

Description



Book Synopsis



If programming is magic then web scraping is surely a form of wizardry. By writing a simple automated program, you can query web servers, request data, and parse it to extract the information you need. The expanded edition of this practical book not only introduces you web scraping, but also serves as a comprehensive guide to scraping almost every type of data from the modern web.

Part I focuses on web scraping mechanics: using Python to request information from a web server, performing basic handling of the server\\'s response, and interacting with sites in an automated fashion. Part II explores a variety of more specific tools and applications to fit any web scraping scenario you\\'re likely to encounter.

  • Parse complicated HTML pages
  • Develop crawlers with the Scrapy framework
  • Learn methods to store data you scrape
  • Read and extract data from documents
  • Clean and normalize badly formatted data
  • Read and write natural languages
  • Crawl through forms and logins
  • Scrape JavaScript and crawl through APIs
  • Use and write image-to-text software
  • Avoid scraping traps and bot blockers
  • Use scrapers to test your website



About the Author



Ryan Mitchell is a Software Engineer at LinkeDrive in Boston, where she develops their API and data analysis tools. She is a graduate of Olin College of Engineering, and is a Masters degree student at Harvard University School of Extension Studies. Prior to joining LinkeDrive, she was a Software Engineer working on web scraping and data analysis at Abine.

Additional product information and recommendations

Similar items

Loading, please wait...

Your views

Loading, please wait...

More to consider

Loading, please wait...

Featured Products

Loading, please wait...

Guest Ratings & Reviews

Disclaimer

Get top deals, latest trends, and more.

Privacy policy

Footer

'\n" + ] + } + ], + "source": [ + "from scraper_api import ScraperAPIClient\n", + "\n", + "client = ScraperAPIClient(SCRAPER_API_KEY)\n", + "start = time.time()\n", + "result = client.get('https://www.target.com/p/-/A-83650487')\n", + "print(f'Time: {time.time() - start}')\n", + "print(f'HTTP status: {response.status_code}')\n", + "print(f'Response body: {response.content}')\n", + "#print(result.content)" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "id": "edd9190a", + "metadata": {}, + "outputs": [], + "source": [ + "class RyansAPIClient:\n", + " def __init__(self, key):\n", + " self.key = key\n", + " self.api_root = 'http://api.pythonscraping.com/ryansApiPath'\n", + "\n", + " def get(url):\n", + " params = {'key': self.key, 'url': url}\n", + " return requests.get(self.api_root, params=params)\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "3a7fb192", + "metadata": {}, + "outputs": [], + "source": [ + "from scraper_api import ScraperAPIClient\n", + "\n", + "client = ScraperAPIClient(SCRAPER_API_KEY)\n", + "start = time.time()\n", + "result = client.get('https://www.target.com/p/-/A-83650487')\n", + "print(f'Time: {time.time() - start}')\n", + "print(f'HTTP status: {response.status_code}')\n", + "print(f'Response body: {response.content}')\n", + "#print(result.content)" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "id": "500260ab", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "{\"name\":\"Web Scraping with Python: Collecting More Data from the Modern Web\",\"product_information\":{\"publisher\":\"‎O'Reilly Media; 2nd edition (May 8, 2018)\",\"language\":\"‎English\",\"paperback\":\"‎306 pages\",\"isbn_10\":\"‎1491985577\",\"isbn_13\":\"‎978-1491985571\",\"item_weight\":\"‎1.21 pounds\",\"dimensions\":\"‎7 x 0.65 x 9.19 inches\",\"best_sellers_rank\":[\"#245,938 in Books (See Top 100 in Books)\",\"#29 in Online Internet Searching\",\"#111 in Data Mining (Books)\",\"#247 in Python Programming\"],\"customer_reviews\":{\"ratings_count\":207,\"stars\":4.6}},\"brand\":\"by Ryan Mitchell (Author)\",\"brand_url\":null,\"full_description\":\"From the brand\\nPrevious page\\nExplore Python resources Visit the Store\\nSharing the knowledge of experts O'Reilly's mission is to change the world by sharing the knowledge of innovators. For over 40 years, we've inspired companies and individuals to do new things (and do them better) by providing the skills and understanding that are necessary for success. Our customers are hungry to build the innovations that propel the world forward. And we help them do just that.\\nNext page\\nFrom the Publisher\\nFrom the Preface What Is Web Scraping? The automated gathering of data from the internet is nearly as old as the internet itself. Although web scraping is not a new term, in years past the practice has been more commonly known as screen scraping, data mining, web harvesting, or similar variations. General consensus today seems to favor web scraping, so that is the term I use throughout the book, although I also refer to programs that specifically traverse multiple pages as web crawlers or refer to the web scraping programs themselves as bots. In theory, web scraping is the practice of gathering data through any means other than a program interacting with an API (or, obviously, through a human using a web browser). This is most commonly accomplished by writing an automated program that queries a web server, requests data (usually in the form of HTML and other files that compose web pages), and then parses that data to extract needed information. In practice, web scraping encompasses a wide variety of programming techniques and technologies, such as data analysis, natural language parsing, and information security. Because the scope of the field is so broad, this book covers the fundamental basics of web scraping and crawling in Part I and delves into advanced topics in Part II. I suggest that all readers carefully study the first part and delve into the more specific in the second part as needed. About This Book This book is designed to serve not only as an introduction to web scraping, but as a comprehensive guide to collecting, transforming, and using data from uncooperative sources. Although it uses the Python programming language and covers many Python basics, it should not be used as an introduction to the language. If you don’t know any Python at all, this book might be a bit of a challenge. Please do not use it as an introductory Python text. With that said, I’ve tried to keep all concepts and code samples at a beginning-to-intermediate Python programming level in order to make the content accessible to a wide range of readers. To this end, there are occasional explanations of more advanced Python programming and general computer science topics where appropriate. If you are a more advanced reader, feel free to skim these parts! If you’re looking for a more comprehensive Python resource, 'Introducing Python' by Bill Lubanovic (O’Reilly) is a good, if lengthy, guide. For those with shorter attention spans, the video series 'Introduction to Python' by Jessica McKellar (O’Reilly) is an excellent resource. I’ve also enjoyed 'Think Python' by a former professor of mine, Allen Downey (O’Reilly). This last book in particular is ideal for those new to programming, and teaches computer science and software engineering concepts along with the Python language. Technical books are often able to focus on a single language or technology, but web scraping is a relatively disparate subject, with practices that require the use of databases, web servers, HTTP, HTML, internet security, image processing, data science, and other tools. This book attempts to cover all of these, and other topics, from the perspective of 'data gathering.' It should not be used as a complete treatment of any of these subjects, but I believe they are covered in enough detail to get you started writing web scrapers!\",\"pricing\":\"\",\"list_price\":\"\",\"shipping_price\":\"FREE\",\"availability_quantity\":9,\"availability_status\":\"In Stock Only 9 left in stock - order soon.\",\"images\":[\"https://m.media-amazon.com/images/I/51KgwVgNVOL._SX218_BO1,204,203,200_QL40_FMwebp_.jpg\"],\"product_category\":\"Books › Computers & Technology › Databases & Big Data\",\"average_rating\":4.6,\"small_description\":\"\",\"feature_bullets\":[],\"total_reviews\":207,\"total_answered_questions\":0,\"customization_options\":{},\"seller_id\":\"ACPHWXHXI76S7\",\"seller_name\":\"Chris' bargain books\",\"fulfilled_by_amazon\":true,\"fast_track_message\":\" \\n \\n\",\"aplus_present\":true}\n" + ] + } + ], + "source": [ + "import requests\n", + "\n", + "payload = {\n", + " 'api_key': SCRAPER_API_KEY,\n", + " 'asin': '1491985577',\n", + "}\n", + "\n", + "response = requests.get('https://api.scraperapi.com/structured/amazon/product', params=payload)\n", + "print(response.text)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "c08c55b1", + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": 17, + "id": "396667cf", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Time: 4.672130823135376\n", + "HTTP status: 200\n", + "Response body: {\"name\":\"Web Scraping with Python: Collecting More Data from the Modern Web\",\"product_information\":{\"publisher\":\"‎O'Reilly Media; 2nd edition (May 8, 2018)\",\"language\":\"‎English\",\"paperback\":\"‎306 pages\",\"isbn_10\":\"‎1491985577\",\"isbn_13\":\"‎978-1491985571\",\"item_weight\":\"‎1.21 pounds\",\"dimensions\":\"‎7 x 0.65 x 9.19 inches\",\"best_sellers_rank\":[\"#245,938 in Books (See Top 100 in Books)\",\"#29 in Online Internet Searching\",\"#111 in Data Mining (Books)\",\"#247 in Python Programming\"],\"customer_reviews\":{\"ratings_count\":207,\"stars\":4.6}},\"brand\":\"by Ryan Mitchell (Author)\",\"brand_url\":null,\"full_description\":\"From the brand\\nPrevious page\\nExplore Python resources Visit the Store\\nSharing the knowledge of experts O'Reilly's mission is to change the world by sharing the knowledge of innovators. For over 40 years, we've inspired companies and individuals to do new things (and do them better) by providing the skills and understanding that are necessary for success. Our customers are hungry to build the innovations that propel the world forward. And we help them do just that.\\nNext page\\nFrom the Publisher\\nFrom the Preface What Is Web Scraping? The automated gathering of data from the internet is nearly as old as the internet itself. Although web scraping is not a new term, in years past the practice has been more commonly known as screen scraping, data mining, web harvesting, or similar variations. General consensus today seems to favor web scraping, so that is the term I use throughout the book, although I also refer to programs that specifically traverse multiple pages as web crawlers or refer to the web scraping programs themselves as bots. In theory, web scraping is the practice of gathering data through any means other than a program interacting with an API (or, obviously, through a human using a web browser). This is most commonly accomplished by writing an automated program that queries a web server, requests data (usually in the form of HTML and other files that compose web pages), and then parses that data to extract needed information. In practice, web scraping encompasses a wide variety of programming techniques and technologies, such as data analysis, natural language parsing, and information security. Because the scope of the field is so broad, this book covers the fundamental basics of web scraping and crawling in Part I and delves into advanced topics in Part II. I suggest that all readers carefully study the first part and delve into the more specific in the second part as needed. About This Book This book is designed to serve not only as an introduction to web scraping, but as a comprehensive guide to collecting, transforming, and using data from uncooperative sources. Although it uses the Python programming language and covers many Python basics, it should not be used as an introduction to the language. If you don’t know any Python at all, this book might be a bit of a challenge. Please do not use it as an introductory Python text. With that said, I’ve tried to keep all concepts and code samples at a beginning-to-intermediate Python programming level in order to make the content accessible to a wide range of readers. To this end, there are occasional explanations of more advanced Python programming and general computer science topics where appropriate. If you are a more advanced reader, feel free to skim these parts! If you’re looking for a more comprehensive Python resource, 'Introducing Python' by Bill Lubanovic (O’Reilly) is a good, if lengthy, guide. For those with shorter attention spans, the video series 'Introduction to Python' by Jessica McKellar (O’Reilly) is an excellent resource. I’ve also enjoyed 'Think Python' by a former professor of mine, Allen Downey (O’Reilly). This last book in particular is ideal for those new to programming, and teaches computer science and software engineering concepts along with the Python language. Technical books are often able to focus on a single language or technology, but web scraping is a relatively disparate subject, with practices that require the use of databases, web servers, HTTP, HTML, internet security, image processing, data science, and other tools. This book attempts to cover all of these, and other topics, from the perspective of 'data gathering.' It should not be used as a complete treatment of any of these subjects, but I believe they are covered in enough detail to get you started writing web scrapers!\",\"pricing\":\"\",\"list_price\":\"\",\"shipping_price\":\"FREE\",\"availability_quantity\":9,\"availability_status\":\"In Stock Only 9 left in stock - order soon.\",\"images\":[\"https://m.media-amazon.com/images/I/51KgwVgNVOL._SX218_BO1,204,203,200_QL40_FMwebp_.jpg\"],\"product_category\":\"Books › Computers & Technology › Databases & Big Data\",\"average_rating\":4.6,\"small_description\":\"\",\"feature_bullets\":[],\"total_reviews\":207,\"total_answered_questions\":0,\"customization_options\":{},\"seller_id\":\"ACPHWXHXI76S7\",\"seller_name\":\"Chris' bargain books\",\"fulfilled_by_amazon\":true,\"fast_track_message\":\" \\n \\n\",\"aplus_present\":true}\n" + ] + } + ], + "source": [ + "from scraper_api import ScraperAPIClient\n", + "\n", + "client = ScraperAPIClient(SCRAPER_API_KEY)\n", + "start = time.time()\n", + "result = client.get('https://www.amazon.com/Web-Scraping-Python-Collecting-Modern/dp/1491985577')\n", + "print(f'Time: {time.time() - start}')\n", + "print(f'HTTP status: {response.status_code}')\n", + "print(f'Response body: {response.text}')" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "7bed0740", + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": 20, + "id": "a1fed4a8", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Time: 0.09664416313171387\n", + "HTTP status: 200\n", + "Response body: b'{\"id\":\"728a365b-3a2a-4ed0-9209-cc4e7d88de96\",\"attempts\":0,\"status\":\"running\",\"statusUrl\":\"https://async.scraperapi.com/jobs/728a365b-3a2a-4ed0-9209-cc4e7d88de96\",\"url\":\"https://www.target.com/p/-/A-83650487\"}'\n" + ] + } + ], + "source": [ + "import requests\n", + "import time \n", + "\n", + "start = time.time()\n", + "params = {\n", + " 'apiKey': SCRAPER_API_KEY,\n", + " 'url': 'https://www.target.com/p/-/A-83650487'\n", + "}\n", + "response = requests.post('https://async.scraperapi.com/jobs', json=params)\n", + "print(f'Time: {time.time() - start}')\n", + "print(f'HTTP status: {response.status_code}')\n", + "print(f'Response body: {response.content}')" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "id": "e541ae05", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Response body: b'{\"id\":\"728a365b-3a2a-4ed0-9209-cc4e7d88de96\",\"attempts\":0,\"status\":\"finished\",\"statusUrl\":\"https://async.scraperapi.com/jobs/728a365b-3a2a-4ed0-9209-cc4e7d88de96\",\"url\":\"https://www.target.com/p/-/A-83650487\",\"response\":{\"headers\":{\"date\":\"Tue, 29 Aug 2023 02:41:46 GMT\",\"content-type\":\"text/html; charset=utf-8\",\"content-length\":\"214526\",\"connection\":\"close\",\"x-powered-by\":\"Express\",\"access-control-allow-origin\":\"undefined\",\"access-control-allow-headers\":\"Origin, X-Requested-With, Content-Type, Accept\",\"access-control-allow-methods\":\"HEAD,GET,POST,DELETE,OPTIONS,PUT\",\"access-control-allow-credentials\":\"true\",\"x-robots-tag\":\"none\",\"set-cookie\":[\"TealeafAkaSid=4r-gX5a7muvFOXHmk6i3MryVDSC7vsLF; Expires=Thu, 28 Sep 2023 02:41:46 GMT; Path=/; Domain=target.com;\",\"visitorId=018A3F2B21890201A62AA59B2A9BC06A; Max-Age=63072000; Expires=Thu, 28 Aug 2025 02:41:45 GMT; Path=/; Domain=.target.com; Secure\",\"sapphire=1; Max-Age=2629746; Expires=Thu, 28 Sep 2023 13:10:51 GMT; Path=/; Domain=.target.com; Secure\",\"TealeafAkaSid=4r-gX5a7muvFOXHmk6i3MryVDSC7vsLF; Expires=Thu, 28 Sep 2023 02:41:45 GMT; Path=/; Domain=target.com;\",\"GuestLocation=23229|37.600|-77.560|VA|US;Path=/; Secure; Max-Age=86400\"],\"sa-final-url\":\"https://www.target.com/p/-/A-83650487\",\"sa-statuscode\":\"200\",\"sa-credit-cost\":\"1\",\"sa-proxy-hash\":\"undefined\",\"etag\":\"W/\\\\\"345fe-3J2hu7P+GHJladrZ+9ZhEY9L6nQ\\\\\"\",\"vary\":\"Accept-Encoding\",\"strict-transport-security\":\"max-age=15724800; includeSubDomains\"},\"body\":\"Web Scraping With Python - 2nd Edition By Ryan Mitchell (paperback) : Target
Skip images
\\\\\"Web

Already have this product?

Snap a pic for all to see!

Web Scraping with Python - 2nd Edition by Ryan Mitchell (Paperback)

Create or manage registry

About this item

Details

Description



Book Synopsis



If programming is magic then web scraping is surely a form of wizardry. By writing a simple automated program, you can query web servers, request data, and parse it to extract the information you need. The expanded edition of this practical book not only introduces you web scraping, but also serves as a comprehensive guide to scraping almost every type of data from the modern web.

Part I focuses on web scraping mechanics: using Python to request information from a web server, performing basic handling of the server\\'s response, and interacting with sites in an automated fashion. Part II explores a variety of more specific tools and applications to fit any web scraping scenario you\\'re likely to encounter.

  • Parse complicated HTML pages
  • Develop crawlers with the Scrapy framework
  • Learn methods to store data you scrape
  • Read and extract data from documents
  • Clean and normalize badly formatted data
  • Read and write natural languages
  • Crawl through forms and logins
  • Scrape JavaScript and crawl through APIs
  • Use and write image-to-text software
  • Avoid scraping traps and bot blockers
  • Use scrapers to test your website



About the Author



Ryan Mitchell is a Software Engineer at LinkeDrive in Boston, where she develops their API and data analysis tools. She is a graduate of Olin College of Engineering, and is a Masters degree student at Harvard University School of Extension Studies. Prior to joining LinkeDrive, she was a Software Engineer working on web scraping and data analysis at Abine.

Additional product information and recommendations

Similar items

Loading, please wait...

Your views

Loading, please wait...

More to consider

Loading, please wait...

Featured Products

Loading, please wait...

Guest Ratings & Reviews

Disclaimer

Get top deals, latest trends, and more.

Privacy policy

Footer

\",\"statusCode\":200,\"credits\":1}}'\n" + ] + } + ], + "source": [ + "response = requests.get('https://async.scraperapi.com/jobs/\\\n", + " 728a365b-3a2a-4ed0-9209-cc4e7d88de96')\n", + "print(f'Response body: {response.content}')" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "1d3e32ce", + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "id": "218d1701", + "metadata": {}, + "source": [ + "### Zyte" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "91541aba", + "metadata": {}, + "outputs": [], + "source": [ + "ZYTE_KEY = '76cd6db740da41b9b5611d6fba1e4814'" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "id": "99de9c64", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Time: 0.6896157264709473\n", + "HTTP status: 200\n", + "Response body: b'Web Scraping With Python - 2nd Edition By Ryan Mitchell (paperback) : Target
Skip images
\"Web

Already have this product?

Snap a pic for all to see!

Web Scraping with Python - 2nd Edition by Ryan Mitchell (Paperback)

Create or manage registry

About this item

Details

Description



Book Synopsis



If programming is magic then web scraping is surely a form of wizardry. By writing a simple automated program, you can query web servers, request data, and parse it to extract the information you need. The expanded edition of this practical book not only introduces you web scraping, but also serves as a comprehensive guide to scraping almost every type of data from the modern web.

Part I focuses on web scraping mechanics: using Python to request information from a web server, performing basic handling of the server\\'s response, and interacting with sites in an automated fashion. Part II explores a variety of more specific tools and applications to fit any web scraping scenario you\\'re likely to encounter.

  • Parse complicated HTML pages
  • Develop crawlers with the Scrapy framework
  • Learn methods to store data you scrape
  • Read and extract data from documents
  • Clean and normalize badly formatted data
  • Read and write natural languages
  • Crawl through forms and logins
  • Scrape JavaScript and crawl through APIs
  • Use and write image-to-text software
  • Avoid scraping traps and bot blockers
  • Use scrapers to test your website



About the Author



Ryan Mitchell is a Software Engineer at LinkeDrive in Boston, where she develops their API and data analysis tools. She is a graduate of Olin College of Engineering, and is a Masters degree student at Harvard University School of Extension Studies. Prior to joining LinkeDrive, she was a Software Engineer working on web scraping and data analysis at Abine.

Additional product information and recommendations

Similar items

Loading, please wait...

Your views

Loading, please wait...

More to consider

Loading, please wait...

Featured Products

Loading, please wait...

Guest Ratings & Reviews

Disclaimer

Get top deals, latest trends, and more.

Privacy policy

Footer

'\n" + ] + } + ], + "source": [ + "import time\n", + "from base64 import b64decode\n", + "import requests\n", + "\n", + "\n", + "json_data = {\n", + " 'url': 'https://www.target.com/p/-/A-83650487',\n", + " 'httpResponseBody': True,\n", + "}\n", + "start = time.time()\n", + "response = requests.post('https://api.zyte.com/v1/extract',\n", + " auth=(ZYTE_KEY, ''), json=json_data)\n", + "\n", + "response = response.json()\n", + "print(f'Time: {time.time() - start}')\n", + "print(f'HTTP status: {response[\"statusCode\"]}')\n", + "body = b64decode(response[\"httpResponseBody\"])\n", + "print(f'Response body: {body}')\n" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "id": "ee0fc3fe", + "metadata": {}, + "outputs": [], + "source": [ + "ZYTE_KEY='781815a89bf744dc8b2ba4658fd2120c'" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "id": "2f535537", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[{'query': {'id': '1693999701234-8f96058f28a8415c', 'domain': 'target.com', 'userAgent': 'python-requests/2.28.2', 'userQuery': {'url': 'https://www.target.com/p/-/A-83650487', 'pageType': 'product'}}, 'webPage': {'inLanguages': [{'code': 'en'}]}, 'product': {'name': 'Web Scraping with Python - 2nd Edition by Ryan Mitchell (Paperback)', 'description': \"Book Synopsis\\n\\nIf programming is magic then web scraping is surely a form of wizardry. By writing a simple automated program, you can query web servers, request data, and parse it to extract the information you need. The expanded edition of this practical book not only introduces you web scraping, but also serves as a comprehensive guide to scraping almost every type of data from the modern web.\\n\\nPart I focuses on web scraping mechanics: using Python to request information from a web server, performing basic handling of the server's response, and interacting with sites in an automated fashion. Part II explores a variety of more specific tools and applications to fit any web scraping scenario you're likely to encounter.\\n\\nParse complicated HTML pages\\nDevelop crawlers with the Scrapy framework\\nLearn methods to store data you scrape\\nRead and extract data from documents\\nClean and normalize badly formatted data\\nRead and write natural languages\\nCrawl through forms and logins\\nScrape JavaScript and crawl through APIs\\nUse and write image-to-text software\\nAvoid scraping traps and bot blockers\\nUse scrapers to test your website\\n\\nAbout the Author\\n\\nRyan Mitchell is a Software Engineer at LinkeDrive in Boston, where she develops their API and data analysis tools. She is a graduate of Olin College of Engineering, and is a Masters degree student at Harvard University School of Extension Studies. Prior to joining LinkeDrive, she was a Software Engineer working on web scraping and data analysis at Abine.\", 'mainImage': 'https://target.scene7.com/is/image/Target/GUEST_f0070e94-a4ae-4e49-a0a9-a5f8049f86d9?wid=800&hei=800&qlt=80&fmt=pjpeg', 'images': ['https://target.scene7.com/is/image/Target/GUEST_f0070e94-a4ae-4e49-a0a9-a5f8049f86d9?wid=800&hei=800&qlt=80&fmt=pjpeg'], 'url': 'https://www.target.com/p/-/A-83650487', 'sku': 'A-83650487', 'breadcrumbs': [{'name': 'Target', 'link': 'https://www.target.com/'}, {'name': 'Movies, Music & Books', 'link': 'https://www.target.com/c/movies-music-books/-/N-5xsxe'}, {'name': 'Books', 'link': 'https://www.target.com/c/books-movies-music/-/N-5xsxd'}, {'name': 'All Book Genres', 'link': 'https://www.target.com/c/all-book-genres/-/N-5xsx1'}, {'name': 'Computers & Technology Books', 'link': 'https://www.target.com/c/computers-technology-books-all-book-genres-movies-music/-/N-5cstn'}], 'probability': 0.9967141, 'descriptionHtml': \"
\\n\\n



\\n\\n

Book Synopsis

\\n\\n

If programming is magic then web scraping is surely a form of wizardry. By writing a simple automated program, you can query web servers, request data, and parse it to extract the information you need. The expanded edition of this practical book not only introduces you web scraping, but also serves as a comprehensive guide to scraping almost every type of data from the modern web.

\\n\\n

Part I focuses on web scraping mechanics: using Python to request information from a web server, performing basic handling of the server's response, and interacting with sites in an automated fashion. Part II explores a variety of more specific tools and applications to fit any web scraping scenario you're likely to encounter.

\\n\\n
  • Parse complicated HTML pages
  • Develop crawlers with the Scrapy framework
  • Learn methods to store data you scrape
  • Read and extract data from documents
  • Clean and normalize badly formatted data
  • Read and write natural languages
  • Crawl through forms and logins
  • Scrape JavaScript and crawl through APIs
  • Use and write image-to-text software
  • Avoid scraping traps and bot blockers
  • Use scrapers to test your website
\\n\\n



\\n\\n

About the Author

\\n\\n

Ryan Mitchell is a Software Engineer at LinkeDrive in Boston, where she develops their API and data analysis tools. She is a graduate of Olin College of Engineering, and is a Masters degree student at Harvard University School of Extension Studies. Prior to joining LinkeDrive, she was a Software Engineer working on web scraping and data analysis at Abine.

\\n\\n
\", 'canonicalUrl': 'https://www.target.com/p/web-scraping-with-python-2nd-edition-by-ryan-mitchell-paperback/-/A-83650487'}, 'algorithmVersion': '21.12.7'}]\n", + "\n", + "Time: 20.882309198379517\n" + ] + }, + { + "ename": "TypeError", + "evalue": "'Response' object is not subscriptable", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mTypeError\u001b[0m Traceback (most recent call last)", + "Input \u001b[0;32mIn [14]\u001b[0m, in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[1;32m 19\u001b[0m \u001b[38;5;28mprint\u001b[39m(response)\n\u001b[1;32m 20\u001b[0m \u001b[38;5;28mprint\u001b[39m(\u001b[38;5;124mf\u001b[39m\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mTime: \u001b[39m\u001b[38;5;132;01m{\u001b[39;00mtime\u001b[38;5;241m.\u001b[39mtime() \u001b[38;5;241m-\u001b[39m start\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m'\u001b[39m)\n\u001b[0;32m---> 21\u001b[0m \u001b[38;5;28mprint\u001b[39m(\u001b[38;5;124mf\u001b[39m\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mHTTP status: \u001b[39m\u001b[38;5;132;01m{\u001b[39;00mresponse[\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mstatusCode\u001b[39m\u001b[38;5;124m\"\u001b[39m]\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m'\u001b[39m)\n\u001b[1;32m 22\u001b[0m body \u001b[38;5;241m=\u001b[39m b64decode(response[\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mhttpResponseBody\u001b[39m\u001b[38;5;124m\"\u001b[39m])\n\u001b[1;32m 23\u001b[0m \u001b[38;5;28mprint\u001b[39m(\u001b[38;5;124mf\u001b[39m\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mResponse body: \u001b[39m\u001b[38;5;132;01m{\u001b[39;00mbody\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m'\u001b[39m)\n", + "\u001b[0;31mTypeError\u001b[0m: 'Response' object is not subscriptable" + ] + } + ], + "source": [ + "import time\n", + "from base64 import b64decode\n", + "import requests\n", + "\n", + "\n", + "json_data = [{\n", + " 'url': 'https://www.target.com/p/-/A-83650487',\n", + " 'pageType': 'product',\n", + "}]\n", + "start = time.time()\n", + "response = requests.post(\n", + " 'https://autoextract.zyte.com/v1/extract',\n", + " auth=(ZYTE_KEY, ''),\n", + " json=json_data\n", + ")\n", + "\n", + "print(response.json())\n", + "\n", + "print(response)\n", + "print(f'Time: {time.time() - start}')\n", + "print(f'HTTP status: {response[\"statusCode\"]}')\n", + "body = b64decode(response[\"httpResponseBody\"])\n", + "print(f'Response body: {body}')\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "cdd9a461", + "metadata": {}, + "outputs": [], + "source": [ + "curl -vx https://proxy.zyte.com:8014 -U c447604ccef54fc08c4808b71a18b9b3: --cacert zyte-ca.crt https://httpbin.org/ip" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "b9932ff4", + "metadata": {}, + "outputs": [], + "source": [ + "ZYTE_KEY = 'c447604ccef54fc08c4808b71a18b9b3'" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "id": "bc2a5c20", + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/Users/RSpecht/opt/anaconda3/lib/python3.9/site-packages/urllib3/connectionpool.py:1056: InsecureRequestWarning: Unverified HTTPS request is being made to host 'proxy.crawlera.com'. Adding certificate verification is strongly advised. See: https://urllib3.readthedocs.io/en/1.26.x/advanced-usage.html#ssl-warnings\n", + " warnings.warn(\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Web Scraping With Python - 2nd Edition By Ryan Mitchell (paperback) : Target
Skip images
\"Web

Already have this product?

Snap a pic for all to see!

Web Scraping with Python - 2nd Edition by Ryan Mitchell (Paperback)

Create or manage registry

About this item

Details

Description



Book Synopsis



If programming is magic then web scraping is surely a form of wizardry. By writing a simple automated program, you can query web servers, request data, and parse it to extract the information you need. The expanded edition of this practical book not only introduces you web scraping, but also serves as a comprehensive guide to scraping almost every type of data from the modern web.

Part I focuses on web scraping mechanics: using Python to request information from a web server, performing basic handling of the server's response, and interacting with sites in an automated fashion. Part II explores a variety of more specific tools and applications to fit any web scraping scenario you're likely to encounter.

  • Parse complicated HTML pages
  • Develop crawlers with the Scrapy framework
  • Learn methods to store data you scrape
  • Read and extract data from documents
  • Clean and normalize badly formatted data
  • Read and write natural languages
  • Crawl through forms and logins
  • Scrape JavaScript and crawl through APIs
  • Use and write image-to-text software
  • Avoid scraping traps and bot blockers
  • Use scrapers to test your website



About the Author



Ryan Mitchell is a Software Engineer at LinkeDrive in Boston, where she develops their API and data analysis tools. She is a graduate of Olin College of Engineering, and is a Masters degree student at Harvard University School of Extension Studies. Prior to joining LinkeDrive, she was a Software Engineer working on web scraping and data analysis at Abine.

Additional product information and recommendations

Similar items

Loading, please wait...

Your views

Loading, please wait...

More to consider

Loading, please wait...

Featured Products

Loading, please wait...

Guest Ratings & Reviews

Disclaimer

Get top deals, latest trends, and more.

Privacy policy

Footer

\n" + ] + } + ], + "source": [ + "import requests\n", + "\n", + "response = requests.get(\n", + " 'https://www.target.com/p/-/A-83650487',\n", + " proxies={\n", + " 'http': f'http://{ZYTE_KEY}:@proxy.crawlera.com:8011/',\n", + " 'https': f'http://{ZYTE_KEY}:@proxy.crawlera.com:8011/',\n", + " },\n", + " verify=False\n", + " #verify='/Users/RSpecht/Downloads/zyte-proxy-ca.crt' \n", + " \n", + ")\n", + "print(response.text)" + ] + }, + { + "cell_type": "markdown", + "id": "7ee97fe3", + "metadata": {}, + "source": [ + "### Oxylabs\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "141135a9", + "metadata": {}, + "outputs": [], + "source": [ + "# curl -x pr.oxylabs.io:7777 -U \"customer-rremitchell:dg5ACTzZu6kj\" https://ip.oxylabs.io\n", + "\n", + "# curl -x pr.oxylabs.io:7777 -U \"customer-ryan.e.mitchell@gmail.com:tek&x3Ll5zVnKSQ#\" https://ip.oxylabs.io" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "cb9e6e5a", + "metadata": {}, + "outputs": [], + "source": [ + "# passwrd tek&x3Ll5zVnKSQ#" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "5b87857a", + "metadata": {}, + "outputs": [], + "source": [ + "OXYLABS_USERNAME = 'rremitchell'\n", + "OXYLABS_PASSWORD = 'dg5ACTzZu6kj'" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "a70188a7", + "metadata": {}, + "outputs": [], + "source": [ + "import requests\n", + "import time\n", + "\n", + "start = time.time()\n", + "# Structure payload.\n", + "data = {\n", + " 'url': 'https://www.target.com/p/-/A-83650487',\n", + " 'source': 'universal',\n", + "}\n", + "\n", + "# Get response.\n", + "response = requests.post(\n", + " 'https://realtime.oxylabs.io/v1/queries',\n", + " auth=(OXYLABS_USERNAME, OXYLABS_PASSWORD),\n", + " json=data\n", + ")\n", + "\n", + "response = response.json()['results'][0]\n", + "\n", + "print(f'Time: {time.time() - start}')\n", + "print(f'HTTP status: {response[\"status_code\"]}')\n", + "print(f'Response body: {response[\"content\"]}')" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "id": "0453af0c", + "metadata": {}, + "outputs": [], + "source": [ + "OXYLABS_USERNAME_ECOMMERCE = 'rremitchell2'\n", + "OXYLABS_PASSWORD = 'dg5ACTzZu6kj'" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "id": "e30d298a", + "metadata": {}, + "outputs": [], + "source": [ + "import requests\n", + "import time\n", + "\n", + "start = time.time()\n", + "# Structure payload.\n", + "data = {\n", + " 'url': 'https://www.amazon.com/Web-Scraping-Python-Collecting-Modern-dp-1491985577/dp/1491985577',\n", + " 'source': 'amazon_product',\n", + "}\n", + "\n", + "# Get response.\n", + "response = requests.post(\n", + " 'https://realtime.oxylabs.io/v1/queries',\n", + " auth=(OXYLABS_USERNAME_ECOMMERCE, OXYLABS_PASSWORD),\n", + " json=data\n", + ")\n", + "\n", + "response = response.json()\n", + "\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 26, + "id": "0c47a160", + "metadata": {}, + "outputs": [], + "source": [ + "import requests\n", + "import time\n", + "\n", + "start = time.time()\n", + "# Structure payload.\n", + "data = {\n", + " 'url': 'https://www.amazon.com/Web-Scraping-Python-Collecting-Modern-dp-1491985577/dp/1491985577',\n", + " 'source': 'amazon',\n", + " 'parse': True\n", + "}\n", + "\n", + "# Get response.\n", + "response = requests.post(\n", + " 'https://realtime.oxylabs.io/v1/queries',\n", + " auth=(OXYLABS_USERNAME_ECOMMERCE, OXYLABS_PASSWORD),\n", + " json=data\n", + ")\n", + "\n", + "response = response.json()\n", + "\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 28, + "id": "bdfb76f0", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Time: 27.079249143600464\n", + "HTTP status: 200\n", + "Response body: {'url': 'https://www.target.com/p/-/A-83650487', 'price': 44.99, 'title': 'Web Scraping with Python - 2nd Edition by Ryan Mitchell (Paperback)', '_errors': [\"'NoneType' object has no attribute 'xpath'\"], 'category': 'Target/Movies, Music & Books/Books/All Book Genres/Computers & Technology Books', 'currency': 'USD', 'description': 'Error while parsing `description`: `(, AttributeError(\"\\'NoneType\\' object has no attribute \\'xpath\\'\"))`.', 'rating_score': 0, 'parse_status_code': 12004}\n" + ] + } + ], + "source": [ + "import requests\n", + "import time\n", + "\n", + "start = time.time()\n", + "data = {\n", + " 'url': 'https://www.target.com/p/-/A-83650487',\n", + " 'source': 'universal',\n", + " 'parse': True\n", + "}\n", + "\n", + "response = requests.post(\n", + " 'https://realtime.oxylabs.io/v1/queries',\n", + " auth=(OXYLABS_USERNAME, OXYLABS_PASSWORD),\n", + " json=data\n", + ")\n", + "\n", + "response = response.json()['results'][0]\n", + "\n", + "print(f'Time: {time.time() - start}')\n", + "print(f'HTTP status: {response[\"status_code\"]}')\n", + "print(f'Response body: {response[\"content\"]}')" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "0d8db4d8", + "metadata": {}, + "outputs": [], + "source": [ + "curl 'https://realtime.oxylabs.io/v1/queries' --user 'rremitchell:dg5ACTzZu6kj' -H 'Content-Type: application/json' -d '{\"source\": \"universal\", \"url\": \"https://books.toscrape.com/catalogue/a-light-in-the-attic_1000/index.html\", \"geo-location\": \"United States\", \"render\": \"html\"}' -v\n", + "\n", + "\n" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.10.13" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/captcha.png b/captcha.png new file mode 100644 index 0000000000000000000000000000000000000000..8420f5ae54a838a2e2d0d54ce6e367811bbdc5a4 GIT binary patch literal 706 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 leBia~(<{Ei^ZZ zJMO>Y-O-de>s`G4Kjqz-v-W-ae=GI<&&QS(W_L0xc3N-WyQ4mP$6T(7R!M8aOaC*z z^I4N~pmA#6yL0B=vKzn6?>w-!DQuVJmwmhK*}C@nCB+u^mFDPl&K1(V)wQX3=F`i& zuY|Y$F8_K)({qQjZkXZu&!5*F%{%tx`QmuaI}QG+{Sn%^x_m6T{Qdb&MPNP`y#ITPqw^Pa6Hejei!e$lhuKCw(;RMNo&tY zpOe|~{Qgq^!@Jp|RQvs`R`9I;y!xr{?C2RAxaZzpwNq5hzTW?w$^VN9hhJ|{(8*g+ zwf)KT;stH$kCz^mc3J%5Q{2O!XDtd|EbQ~nYr4B`@)gUlhckCbd`Wfe*t6lqb>I1V z>IFNZ-nib%U7fPjI@IpC*3M@;rarSj^=ggL8r$U$7xNvPyHNh}&c{nm{+{Vv@MG=k zN$rb5SHCOcRPBwpr{=^{!V|qG+{0r>Q}McKA2^-+t|gk<#8t=qaQt6qTAzNR_QHZE z$~-T;*lXRtR@=`v>6*&VRGJpyRPvKMD7Gh&Gcm$RVwymkY6~@(ALZY0i!3YA5Yh!E OMg~t;KbLh*2~7Zk`8yE+ literal 0 HcmV?d00001 diff --git a/captchas/2PHU.png b/captchas/2PHU.png new file mode 100644 index 0000000000000000000000000000000000000000..0cb4abbac6de1b4c340bc8d1e8d4cf8210bf4944 GIT binary patch literal 658 zcmeAS@N?(olHy`uVBq!ia0vp^CxAGDg9%95$LM!4Ffc`Wx;TbZ%z1m~cHU|O5r)8+ zum9_3+AX-y#ns+$ygE6}R&H+5M)fwKD@Nx(t8D!yTFW3cIgv9l!bxJ9K$~g{b(oJe zmb%Cv(myQaHE$cw>iKq?=Pg z$vJ;jV>d?C2K~=Zsk8hvzclL72C>}qs>_$-;xg~9{(U9U_qyBXx99I=uX?BYMlO5a z^A+*ecKmhIZRE69oXGF-eOaQhkGq`xwe0~vk1HSl{Ic&*>W(An`$hO3WS+kxzH{Ft zPMO8q=6}jlpR{?Erhi1T%GEzQX61|A-*FkmurKFH6x?p-Zu0Y;Wy=1kd(~HFaq+MI z{Q0}hNy76zeo4}zZ~EbF?Cf?@43v^kvZqS9JzTnsrHxtgTliS zp`p`yCumn}Tlji!(%mFUd-V?@LVa<6@>@CCRTu8%PP%omyZ%#L+=92q?bhDd<1bjm zqxdL%&DFK>e^<-ItycE8W0LMXl(pi#%$@9I*4_I>vOM-4-gUQnw$<~;;d7TL?-Ajm dUc4URH?2AF?EI-;Uw~;5)6qi zzx<7#8JBV_bFom!H2Ifx({q*NHanWU^t62Ln)Oz@irqy0u+X6mEe1M@Jl-7CU_RP? zSVD8@q5Qw~Q-^`eU%RgRJ74J2Ipygq zKLx+*so1aO^y8}Ye$%iwk{>u?ufF@%Kkw_uU(1SqD|hUD7c8T<>m-Bnb-z2UjLb=S`gKOZE9hJF3^tZkZ| z^8Tat?`}6QTdn#>dG2B+z3o@i+bnho{M`Qea+pKJos0czS3O_Q>>tj(w_^VvuXu}s zsoQtzzdgtP`rfrS-`*`f{A1yqqiv;cD@@nCdd6D+*P&JL`uy#?q-tGS7uV#rSwyVQ zz2rTg`||mlpKl3I&pVjdTC;Y+L)l(;A34Pj(o1%??|WFeFzv{~xPP-RpAYyytx3)} z?0mA}>xh2iQ|0$E&nkaNi82d~P@J!weVr#Ubl;8T@64ud7q*DCeadC{%=-QRn_Krk z(fkv6Y6g#YhooPt)PzLN#0V#eX##DkEfh14@cSM&npVfCITe^v89ZJ6T-G@yGywqn ChD`GS literal 0 HcmV?d00001 diff --git a/captchas/34PQ.png b/captchas/34PQ.png new file mode 100644 index 0000000000000000000000000000000000000000..292e58b5e026e41b9b3bd2b42c6b2ab7c6428973 GIT binary patch literal 713 zcmeAS@N?(olHy`uVBq!ia0vp^CxAGDg9%95$LM!4FfdKj0$XH%DJ9ja_na-y-z|)kZpsJl-6Kg$`|KF`ydr zk?>)yrBi|yr56_8zbL$;|9FJ`&w6hiMg4y{2PI5r-v2niZ=3y>8;9pUJon+@j+IvP zwj`O_Re4ED{GSq)b4Fm_Bnig)|6Ab zUmj*TG~J};=&k(^R>=B4-Er5vy!K2V?)XX|6Hf0$>cDcAb&^|#RU>;1cn=k>+N z8-Ht@@jB4r)F0ulx>c9rLgz)BxJDdN&9pq)A3a%2c6061s`53Vl1nN?^v>+s%PaBY zD*G>%JO9iQ(}Tm;{Ngf9e{A_y>Wgl>?qR!s4{uuEcVN`McGIay`cC=nhuc$kpRm0) z$3MR9|D1<86TY5*-JW5ScS!w#T1EfVw|1{5e`Y#w#4|8sR znpAl|IPKqz9n2s5jiUNOEnl3`{Hy&>JTYJE>i(D;Pj*)GzRolHQ&Vzs!|_WIlB=S4 fyalM26zUj)YWcS3%gww9Ori{)u6{1-oD!M&y zum1nv^jkpGHAaTnIy?Amn{yw?%Eu^27s=WVhyW+sfIB z-*4HP{Ja=lg7iF2DUg zT=e&MQqjHFZ@2Yx{im|Iw)YyRKMua$*tkdAX68_yyN)e- zK3^syS$6I>KQ*6MsRtg_ewTDPF;OBq_Zj26nm*$TKTN~cq{f%WZF|Qr^6$}fx8ug& zx6F9@JL12?`-rZDt=h=tJFPdzVbM@sv*DTSy z;g|lq>BGjb+js0<%)iY1PCu>q)wzba)XUp7r%O%~sLOTZI4pE%LyLiqB9Av!n2*Fa Yg;`8o6FS)nm@*kWUHx3vIVCg!0IhjK9{>OV literal 0 HcmV?d00001 diff --git a/captchas/3A68.png b/captchas/3A68.png new file mode 100644 index 0000000000000000000000000000000000000000..1cf3c4a500a2fafcb2ab2e7969d68e58da2bb4fd GIT binary patch literal 706 zcmeAS@N?(olHy`uVBq!ia0vp^CxAGDg9%95$LM!4Ffes`x;TbZ%z1m~V%}o~5r&Ha zU;o$7v~$@SkQKZcBg;s3Kcl450626-*l(%3QM=3U#Z-_-vW_ls;y+S+{2 z{_Py``~Jb#dj4IVl>1`Snux8}a-55U=560Qb$a4OF5cHKT6R9??%$hY-1B?)G8?8n zN=Li4KJxJo*}wOX%~gZ8wyQgrG=0Ca^y53j{(oM7j{W@e%rx#xm+1X#>(^KR-H;o^ zSh@AMf9daR--^DizQ;Z&m)or=oV>R>SVD^dP&(w^rs zK0UKNsWIn!k+j#=&7NORq=Q6!*Y+!0GJ8#gzxlj3=j=>>%$-xRdc(W7>CTy}tB(9>5B=-Bj+$xUBWuf1LmOHQbQF2KIjG6( zxF0AyJ*e*==U>(4(|h>;hPJJKyzR}=Ki@0MR<-1w^7M?}yY1E6B^TZae}31ulk4^7 ziJXq*YobG4&s}}(w10Q=(mT7C^dH-A?Kfk|`3U)TiO3H(JSU&2Q^|~&AKMzvSGcy+ zy5i5ymqoj?{wJQ>(Ei<{GEQe#&PkgS*$$pbRid(CYrp={*dp_5d-M5i_LnR6l|OII zifg<3to2-V_yzC8zu&(dzomZbU!~=*rBh~fTc5lst8v;p@wo9u>yQtdB)_NSO8%_* znz(~8Kdk>;;dkAgKXm?gbRPP)boz_(R&{obpV6D$zT8{7DyxhCb8cQUKHRnm)YY)oSzB4}cT3TS6oOMiB`WngYa-Yk5A8xKxe(%t~`}Wcu z$-FjM{9TV9m77oM;MTrvdi~?-z{?k|-^^hzn^sb}Hui@5UFRjS;;||B?QBC9wU^fl gQ!^O=)6^sWEh?I`V|vTi08=W1r>mdKI;Vst0M-3ZsQ>@~ literal 0 HcmV?d00001 diff --git a/captchas/3DXJ.png b/captchas/3DXJ.png new file mode 100644 index 0000000000000000000000000000000000000000..d08e9e7457569ec0b53bd59ba722b04f009060cd GIT binary patch literal 723 zcmeAS@N?(olHy`uVBq!ia0vp^CxAGDg9%95$LM!4Ffh&Xba4!+nDh3|*`PHBA`A~Z zpZ?x&q^Gf5qlLry*BpUg(K{dM=W?9bn>uUR^eeZ*zcFU`w5hfvawbMNNlX)<2J=Yy zH^!bdQ;hz9IPhOP>x|^;DWBx797(?M=cl6Eyp7Ku=GaBc%xss7xOD17;@KU)FUIW% z`zrM{YzL>*`>VO-#ro?uvK?Q$_u1K~tI?e{Z-bkwo*tOC-9BkU|9p=68 zADeYNVd|ly8*jcYExw)`y3DQW`tl=N{~xq{@i_T*^oI3)jB~dy;QoDct1#JG z%Z!S9)ctzxsf?xm651d2zs(c9w&vlA?_vS5Dba=5YktLQp4JsR&olfo%6Z>*P3+NENPL<&bLWQTX|yVlF7IK zMyI@x)xGyJ@kWi&u77Te_pRKp?bbfeoqCEoUlup)kJi}lCwubd-ZQgL<*wGYG!DDL zu0D0G(8!*SKZm~tZe=JdG@Kp zInU)q+0I5x?7#CjCdT6_Z}EqTAuMMjcFvEvck7_{_1mS~QG4Vq-|qhN(DKGXZ}9?^ z<#*mJp4k4nCU$E|gj2~!Iq%1YI*L5r9EXJtZD=u|nE8Xz;D+*Qo_b+bU}9zPboFyt I=akR{0M@`+LjV8( literal 0 HcmV?d00001 diff --git a/captchas/3FDB.png b/captchas/3FDB.png new file mode 100644 index 0000000000000000000000000000000000000000..bcec5dcd8b66f97bbcddd88f684ed2ab23bfd5b4 GIT binary patch literal 697 zcmeAS@N?(olHy`uVBq!ia0vp^CxAGDg9%95$LM!4FfcWEx;TbZ%z1m~X5JD55r)8y zPyhG($OQ;6%{sg8HFxZDO)oc{Ww&&Cm&vy+oSgMLb1!3+`eC6%8(Iu>6nVTksKI=+ z{VUsxP5a(o-+$)Y{lKp`%{*qCB}aLbYVc}rHMTwb)N)q5__gKEQ*&k3shN6iQoeXS zqWy7bZH%AX!hQQcNY0*i^Mi)p>V0z+v^3UywyuB4Fn#^Hf~y}}b;G7?UZwZ^aod*W zt&9JMXE&yMowW%NG!8rWxBb}+E#r3?5^aSqj zx5VGW`_n8K%x#i3FZOS>ZVs}zzeMWYgPp}2ckvjPH)pR2VZBqFS+>Sn`28G~;LKvJ zKVMk09|h16zBYh_snF1_?a>U9v;_i5*KYxF+l&T+T7e5&Z9Ux(!VxrhI34K3x2 zpM7%ww8?RQT(3#4pSy8Kpr1wh60af1lL_Uv>q4*SV)aXV9c zcKw}6mX7`Zo7Wd)UeM;rpY*7DsrsrPX7{xvrwK&H&AxbAVwymkYD*$#VuTY_nDvs| X1(!bAIV~EPBpEzi{an^LB{Ts5WfnGl literal 0 HcmV?d00001 diff --git a/captchas/3FK7.png b/captchas/3FK7.png new file mode 100644 index 0000000000000000000000000000000000000000..ec04dea1d24e32c4009baf500e790984123f27c0 GIT binary patch literal 693 zcmeAS@N?(olHy`uVBq!ia0vp^CxAGDg9%95$LM!4Ffi44x;TbZ%z1m~c3!iA0K>(A zum9_3+PSy}UXl>E+1+jYeCMGAw`bSNBCmf{>-{!$FY~O)iJXZMP7>1u+EiPp!TfkJ zQTOzuz1)|h?4JKmHZ}S+$CJajK4R|aOEW8Pv}NR{L_VAU_UxASss~2pIa>4Bsav9RYqEq30lYcGFLdStop+kXc(2J+==9V>s5(7Rc#Y^H>@m-Vbbe)hMOyQiMv z=3iZ3baC6G<#wMYZcd1M^SbTF^PhK4-gW!VS#s!m#QJnTtLg7wW!~Xm7&^5|SG=nK zD`&^BxL)Xygz5YSbt@HPi%kx@4?-s1Q ze7W9jvt8)Y_*UorqRY0p$|QWq$x&Egc))UEUad^=GD6=Jt9!Qy@xg#<==Z={n%mmg%aQ2&*M)`{Vy05Y^0;eLBSOH9q44$rjF6*2UngIPpK%W2r literal 0 HcmV?d00001 diff --git a/captchas/3JW5.png b/captchas/3JW5.png new file mode 100644 index 0000000000000000000000000000000000000000..1f1740c0926890776ca4ddb3d42f85a511fb7b55 GIT binary patch literal 730 zcmeAS@N?(olHy`uVBq!ia0vp^CxAGDg9%95$LM!4Ffc9jba4!+nDh3|-MqyHA`A~x zuYRvjt!nI2a_UL0K4+M*@3!in87mk1Z9Tnf-Tx&Q|E14wn0InRi-C?Jk2l9*p+nSU zK2rb9(xh`b=-z|A|C=9f(z!hE+n)4mkBt@w+d6NQHB2+$4>x}$({I?&M{Qp;Lin6=8U#~8FIp1=DbBx>< zqwZOG_qKP|?HQudx)~cvi_fcUH-< ztZBcKE`H-^ezy6}!Vd22Ny{&#omk-f{daA1X{>+0=|lbI-7W5kXaCNqJYm9yy5H10;>!!3`4Vk!Hq@!#{&6Rxs=H34PHL7k@6DBm`Q2^{RUUpF z{xD+aqQk2qtM=_a#hqCf))!^xs=8;-^6jm5WwTfRdbK7g>}Ayxoe6CH-Z!|#titbl z|BE-jP|tG7(mdqd=HS0N`|>?wt~>mUe;KmxTU^w?Dc{ZhXrBm-4zt>OhLcs-Tx8#E z`G3{FZJPJRzFA)S`EXim{ocouioRHdy^EE%`1SPnT#Kc?N{<31KBNbk&ga_Qx;*|{ zXx`0jH(N^2ZThtDrR0J`B22x%e`i^gH}k)LbNi^@jmvs3p1k`p%^=37Y4VAcb)V*& ref5r3@U>ib=*jxzmlLU)FzOh+{#Z=kZcw5GOtTE0u6{1-oD!MPFGcm$RVwwOInPD5Q zMP&U-+nN84w=7T0{uh1a z?Tawx$lAkO6ZhS1Kd!xN&$|5{yOQQwm3B;iQyG3_dVeVI$NVpBDG|Q49hbj9e#m2a z@A&jZN}js=lyq*jDoaV1uUsN_oRZ`bJ%+!#N&`Y$?-qvLs@+!a>ROgOH9GN}`c}o@XIp-BschBwIQ#p` zC(or$v>v{{x!5bz^eSieBl$(Pzl%cOo;kypJ@0ulv&@eV^}Fv)P@R9P?MZX&scUiwHH?xv-l&R*L*9_vvu{?kikOejjl8T<@o%g4Ijk>OTLm z^Wo(C$6x(9x7+7c{OzA*&EeNKtZ@8VW3i*aR#|1Qd~goITYa_IUxltH8ZZ;p_SRs~-N_<`geG&4PcA=qjee nLWefA80aYScymy~{K0A>`u|)qqqiI|c`|sq`njxgN@xNAMj} z`SibDQeI=NrnpnXm$R)eKd0>!QrptVxJB=D(2|RFXYVoYot(&-7~v!_O`uJ+g*wbB zQQ2!tzs30k$N&GI{I|S>z3$$*yg2*Av-jm4mDlG8(twl_FyI0NMFH`#c z;XgO2Y5eW>o$oyN$0Xjp5?dO$8rsUY`u~#R;y5Yk|9{pt zJhu$q$CJ8xRf>hE)AU8NZ^!WSl&Eeuf1$y@YL(Cae$$jMhbKR{an$Ia&y^eh=Y&pu zsV(-gR_mX{`KT3_!a@%n%JOkM5ZrO>#qvJi`p~cI|MhLe;&sm39Re zPCviHJ^x+j^8Nk`w@aJJuX1RTKYpy_L&uV^%lG6YD{j9ma{hk4Ik`Qf|LTu<)#*AX zwse2z+3a9{=jpXoXR~+MygxIgv-}?WxkH)P6{9#?#_H{-}Rjd2FxEkktOsyu<3wHJ0MY4?34>|Nidce*NS5 z?)TrMemuM9_CvwZ88xXBxkzPj7i?n`lExuvBl@9N*%PVYDVwEm$c(2%ELi_b5+KV80l@3p6v z;%%pc)4y0=d&l=`DR_xi`+#Yubh?$=zQ& zSM}N3pD+9{QGLyi)6ahFe0AtMFZ*h*saI5ft=dqlylwq~YpFHef%nCP-!JWE+%Da= zh4rgR=E_y6Q;XD0C5z>?D{if@XPJ3F_G#|ByvAwQ`%HhZWj?v~@OHGH z%Ad>5jVh~uekISe>D~P^Pu}aiSY_~UR%O(=YdgNim&(QbTN(XF|NQxQx5YZ!r4_#J zdDgz}?X%76ch&lM3$`EH@G|Rl&Ck`}GK4zMZQS+d-zk4zJKOcj(`Qz)+PFGcm$RVwwQu%zEa#nwxHB-)RRXR|Zd4KbLh*2~7YR CbXt7? literal 0 HcmV?d00001 diff --git a/captchas/3TCH.png b/captchas/3TCH.png new file mode 100644 index 0000000000000000000000000000000000000000..d901f94ae8e96741c1adc095ce0ed3b6351d2af5 GIT binary patch literal 679 zcmeAS@N?(olHy`uVBq!ia0vp^CxAGDg9%95$LM!4FfiqLx;TbZ%z1m~Y!H*707GK( z&wuM>_@_lj|2e|(awg}O@=uTQPM9TfX1v~8@3Fczjo)GY$qg+AI*L5r9EXJtQOdj( zn!R@GG~2G-JlXlFw|{Y2U*4H9FX_*=tdaCmM+%IQuckMo|WD|dB z(si9jC!Pntxe-rL z)&6w9b`0OGN&6~Ywbx8HeJJnrztVp9^_sb@p{Ac*+p@UpFLasio4bA+yK(YvMt1KX zw|t&d7wOken^V2!$J>UjLe;!Cf+Cfwj%xked%SVx*_|g0MUJnFm@LjPOaF_}ojcl* zKc=qXmR9|$T)#VUx2CnUP4SCzmA&6jW!HZyzxRFBtNn{>-yAys|C-^vrpq(Lt}UB? z{a^N(e%k}D?@QHBh%c5}eE8M=9gpSho!5&@e!RYN@8LJwjejnGRG(^)f4uhbVeWsi z5BG^bK6H&gHc literal 0 HcmV?d00001 diff --git a/captchas/3YL8.png b/captchas/3YL8.png new file mode 100644 index 0000000000000000000000000000000000000000..990b5cd280ee8fd290adb6c3495dd3b40c2cacc2 GIT binary patch literal 694 zcmeAS@N?(olHy`uVBq!ia0vp^CxAGDg9%95$LM!4Ffi46x;TbZ%z1m~Zr)-80f)qx zuYcoj?(OIb5UPuM*27-3ulwq%-AqmVWgY?1?`tP5s_nI7xH~zKGcm$RVwymkY7528 zBi~;zdt8dD{&V#Hy2+2#jIZ4}`)>cXYuo;BcDj>ztg7YH593OwD6>~FJ4}j>W$jPe zzVo;63I_ExcdU?PQI*wR-mx}sf-Lr5*_y5KJf`J+>YFJWz7=WtglyLG zPV5Mrp40kw+Nvxmxv(EEHMYt)=zX-k^kes-5B=-s-AR_M`Bj$qTSDu~G?V1q{Z|ew zJSG2?Yw?bdCl#Nj9eP{stkI#AZh8FO-STB`mKJ=s3(U`*v(Cy;m$$nA>o1Q(Kh2}p z%YU15^VZDR<8p_euA0TxHuc*Kk+&xfuNJS(OiyVs^>=;o={sk3_Myz4ru~)k=S%z9 z$u3pvym3A5)zY<^A5T`Vygf7azr~dU=@QP{CMW!1UlOQZTWLPw!ze zuYcoj+Pd^EYWZ-vqU?IwzTm6O3C4yjtMt}x)nB>&{Tt>Bb9lTt4htRH&|;vYNIA1^ z6MsU~=}mX)c0Bw4x$x+ryWG1)!q*h@t#iKK^D^*U*VaFtH><^^+3mmVsOpT~7`FWP zx6|48T4hSKE?XIQwwr!DULHB^y6{h{dsgb!LZzBEr5mL+_HEuCCLdN>miFq5icr|x zhZolwU)tCmmcTX}Z-zAWWD9rc;(-je;oh5cJMUEeA!^Yg{0&wttY6TdU8Vx3;B+4J*>Y-N1p z+ZvhhKQ}XPF<<)P&Tx0~qWwJgw#Tns7-y||ZLySj-Ve_n6wTNaC~guRp_Mex id!d&hHIe|2cSroaUrgJXzxaVtCWEJ|pUXO@geCx)d_isi literal 0 HcmV?d00001 diff --git a/captchas/46VL.png b/captchas/46VL.png new file mode 100644 index 0000000000000000000000000000000000000000..fd44ff7b882e48026d3ab3a3cdba6153bbb435dc GIT binary patch literal 639 zcmeAS@N?(olHy`uVBq!ia0vp^CxAGDg9%95$LM!4Ffh4!x;TbZ%z1m~cHU|O5r)8+ zum9_B);hRqxJ>9iUVZyamGwlw$2XcAmt?Nosuz@Pf06mZ93F3u!$OBPv>50pQiIu% zd010_|Npu%(H*p_!DgO-#N>Q z)zx;*x&1K2I_!D#k0&p8OjNnQ!p!)6geCve*)y_^-+CQ<_441xKN40SEU@3Xvm~*0 z&((5k_dV5_Q_J24GA7Qwb8$_7{d|w}Ti=L%i8#6J_Qp1|Yqu6xwVR&u^%dq_Ev0vJ z!|p>ta`(Te&wBk+@6X!4nckD!xKMx@A4HWX0M)@*BQPS6#F1 zxlYwgefNsbZ?igiPc#2zb`IH^^26i#%cmEO&hg0gT7PQW1T>)I?3#y@*y~bETJ9y5 zM)cn}TCh8cbq-hd+VyK{Ka0*vKIy+q?<#lC&SSThJxH9jW93WZmy&hDR-SPO%Ugff z*BL9T|KEO%>uhPe>YoRilVYYFy)U}1!_}+k&As4h8}@BaEBV7QsV?Z(YKz;ichwk7 z-LSs?>CZ{iI4bWSzjOf{Q%X8I>sLQ})~9-;rC!8Eaz`>}VuX{#G=VnNmP87ee;Aif X+;Wor{_9u3gvH?L>gTe~DWM4f4!0(p literal 0 HcmV?d00001 diff --git a/captchas/49K7.png b/captchas/49K7.png new file mode 100644 index 0000000000000000000000000000000000000000..e0dd616cdd38fad47d0a801afa9e62efc55d05be GIT binary patch literal 678 zcmeAS@N?(olHy`uVBq!ia0vp^CxAGDg9%95$LM!4FfiqMx;TbZ%z1m~Zc&qg2t(rK zm%sNL?M*mkz#(W-UDWhDwlv3^RN|C!5PDsKID`8Vf_c|6`6hlLJpXfe=Hqz1F& z{yl$&aIZ+acVF#iduiVP_I}Z?_Xgz`u6yd<>f6c_cr&MM)8nNPT;<#i+dO+r^UKOl z&t_kEQTWs*k!^Fgzk05pmY8+*!o{*l{&kUuvNUqSDv}p?o9?NpjJcbzWWmx8PrNRs zEI6xtdH*)%*jlOnWudWuH&tk^+h}omC(n*+mQvZDZ|Vz5U3*vJ)L&r|S)^=d-|;T( zoagG#reWuri;n%A`uFpydD|!a-{IOGTIpW)Y+gWG?&?+bk4=0}-rn`o^xDK3W$d-B zCKnagY%2P~n(KaN&V%2frt%vftUkF5X#J%te@|*!{<`-k`*{1Nx3RmVmpJRlr=L?Q zske`IaDQ~D$};`Vd)vyxe`S|0cYV`wTduAu;dxzm`Kp`k`p=F_e3$Fp-F?V0G_QEe-5(nJ`)4I- zUh!o1{j7ON>P5xbU3X5cw{OqcrQ3RN`=QD6+kSf*CiiCSG&8>$YkPRtK~2tktzTt( zPZZw2@c%tmskdIMlf*QEHr19y&cq06F^|Y|3P0H!emE1D@E908UHx3vIVCg!0AzVL AQUCw| literal 0 HcmV?d00001 diff --git a/captchas/4AUM.png b/captchas/4AUM.png new file mode 100644 index 0000000000000000000000000000000000000000..d12a3a4743c509a2ccfe76e750732759469b8696 GIT binary patch literal 709 zcmeAS@N?(olHy`uVBq!ia0vp^CxAGDg9%95$LM!4FfjFax;TbZ%z1m~Zcwv<2*bli zKmM(k(ZArQYkx_t+E3{F?xHz@PB(-cjxU{3G&$<`3Au)6DG^Q*(*)X7TM{`FslvRr zVp{4+xkHkNr7lHX{kmKKpIXoTj3^e#YNr^%c9KxdLy$%rp9(Kj-ML=%w4F z^WPa)GYDSjeD`+Yn)X$Bv8`V%l$HN||Ct)OBk})CZ*|+dXZMSIGkg5sB`xBAdhCjj zVv*b38E3L4>=BXkz4`0!Kk*}P7auq|Lpm(ZYv-n|M>ywHYTlV!RkAMG@5$7?Q-X@@ zrx~|zooaDCKYm?b-G>(umnKK4wulzrxc#~Ce*T|5^LdsXOLl(h{x@y*iJixz`u{(1 zjx+qcP}X|>A(7F#_aoN zx5#?huNGak*!=xr%c|=K*4i<FVdQ&MBb@0QLw(pa1{> literal 0 HcmV?d00001 diff --git a/captchas/4QXS.png b/captchas/4QXS.png new file mode 100644 index 0000000000000000000000000000000000000000..acf43fa9753fc87743302baeef3908601ef27eb4 GIT binary patch literal 721 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 F2>>TVU`_x4 literal 0 HcmV?d00001 diff --git a/captchas/56AZ.png b/captchas/56AZ.png new file mode 100644 index 0000000000000000000000000000000000000000..dd32fdd160a20664753b11318c96f3efc91f643e GIT binary patch literal 732 zcmeAS@N?(olHy`uVBq!ia0vp^CxAGDg9%95$LM!4Ffc9lba4!+nDh3|-MqyHA`FSa zZ-4JM+Pk1z$%(^$-s9vM?~9hQzTr8xC9u6vraR=e|7-3Gwvy8X+EiN-ITItCB&f!` zXtX9#V!>f2_iJ_kANl|MwUYmEz;}PHdqyjro4r1%OF4(Hxw>^p5?6Ohw(PdGe(XV& z2X9ziKFDcRmALx2f6?za7k^pBjH6bCw`2DQ8=rZfeD}%P4|@+;hkmu2_GfYShD!bk ziT9pgTOD)eUvr8?b!X(pbGBFf`~%u%E{#{V%hfRMsTJCo)cd&O-I~dJ%v)pK#Mf(@ z-%LImb#{HI?v^{rzQt1tg8I5vzPcP)2rvS9F``=CG?)tX%i^=&NPSoBlmFKtI^bvA(n91?TL~Ppy6(=k=_c zQF-xVV9fs9eR)2c@6Hqq-~2q;qE^z{{&7Ql$kEe3w#d}kmd@KIxAFKXLhmO9|3C0_)sEvrM?}3j4htRH&|;vY$U_11k$Ag-_=a!$)|&!T OErX}4pUXO@geCxbHBY7h literal 0 HcmV?d00001 diff --git a/captchas/65KQ.png b/captchas/65KQ.png new file mode 100644 index 0000000000000000000000000000000000000000..7bfa068d09023e7964f3eef26942622219ec7646 GIT binary patch literal 766 zcmeAS@N?(olHy`uVBq!ia0vp^CxAGDg9%95$LM!4FfbkUba4!+nDh3|-MqyH0uG6L zZhfy$eeZgO!;!&!rt#wq&v&o7)pcKZw!^J!)$vO*>Q|XNd{2pRl9(pYrrMIonMe)h zpSAZGT(aMOJo;?DiS7RV|0gDG{VjXH)b{zi?e9O&NYct#+k3rWr^buvU$u`aUwd|? zZinH1-lu-b*Dk(^U;0UEb-{rdPhPl3%AY)b{i$_?SXf1Wzu4J8bTM5&r(QOKqn@vDTi2 vpX@J2?)hBj{WMg!O|^qci3gYx|1;PcTU`0^_udg;x@Pcn^>bP0l+XkK<}q-7 literal 0 HcmV?d00001 diff --git a/captchas/696R.png b/captchas/696R.png new file mode 100644 index 0000000000000000000000000000000000000000..e1843bcfbe53919204c45e5c44eb9c5fd34dc635 GIT binary patch literal 670 zcmeAS@N?(olHy`uVBq!ia0vp^CxAGDg9%95$LM!4FfgThx;TbZ%z1m~U|zF<0K>&y zum1nvRNWyGX|bcl;I--8a-XFQXBqTdb+=yAf0=cEbGgI!ln5t@X##DkEs30oRA4@z z8sw$9`MZ+lVXKo%j`6(i*`~!^t*Nob`mX7(Mjy$jPnx|PuPy(b5&qcu;D6T*wW(!Z z^)GnONLB8>%gtY7Kj+7)U;aY>_WOV9GJU%4;(g^Ey?*Pn{`_>g*j@h1!^N+5(yAgZ z-t4eY_qty{zn`C)d;fsxwX_w*t9QlRc>3z;4!P*_V!_<;dyY%2S!sO!pC#w?S9=#k zCw_=|6YA;`CUsuUk9PBeonAQeUuk@4TS9 zN-HgJsjYzZo17^HM_PdYtQ!JW0Ne`|KD`1iLb`T|FONL^LmrI48MrVWB;dpV>r(L@PssP zW4eZo3&Yo_rm6JX`=8swy++?;&GQFuIWO&(osz!F x_Lb9}Ka4BW40RNFyg3dF9oo=hKn-RcW7fu#zcg1h{|BZ!22WQ%mvv4FO#pS)ElvOc literal 0 HcmV?d00001 diff --git a/captchas/6DM4.png b/captchas/6DM4.png new file mode 100644 index 0000000000000000000000000000000000000000..34ab0189e1460338d009ce4b5481091c1fabd314 GIT binary patch literal 707 zcmeAS@N?(olHy`uVBq!ia0vp^CxAGDg9%95$LM!4Ffes_x;TbZ%z1m~ZqaN55r#zV z$=~Z!pB@tCXExh^YjN_%`>~g=ab#*U=LKc0L zi00BMm#Resc~&=DZxIy_`zc;_grWUh#xHgD+3ib(J~v-a`)qN{zdHKZ#-g}eOt zdtEm+w*9$o`NY$-rM+}D>yMI6cT|?ly~ij1p85U%{EON1H?MuM;gH_T3oq@;58f-3 z_*i!_{C)M=e>PR?c{g2M_1(7n@}sgf`SB0t>T}qJ-n7ZMeK^+q0rRD&I{n}OX$ zduja?GZp?7`S6^++4XH}zlz&`+3h~H^XYYIxfi>3$0VQKwl3`Shnln7zaH8DcWG94 zRiCNt$*AmA#df(*b>5Y6Zq3{xo4q$7>9SRBdiU?izM|hV5_7#we_QAFSw4(a|2^?s z@C|E^4{9Pir>#$}J^epNy6pHblgG998RHjc3Ax-_C1+@TO?~3$OM8}IZayF5>>LvD zy1ePgld>8=v9z-FcMDZ!FDhTN;pGjVS4TYBD)WRGcwT=sJojb#1n1YawJImeyLmpy zYG0L_5i%q3Jy*Jr-OHUCKW7(R_%6z3@g=tIzV@?Ak9N)Lm%im?cd^{~T;I}=cSXHR p6WUZ;5;+qioFt|RP{{nl_^9{Nn~xjql!1wp!PC{xWt~$(697P#LqPxl literal 0 HcmV?d00001 diff --git a/captchas/6MGR.png b/captchas/6MGR.png new file mode 100644 index 0000000000000000000000000000000000000000..97e5b5d14818fcc79dc73f4de9d8c1d012fb3227 GIT binary patch literal 761 zcmeAS@N?(olHy`uVBq!ia0vp^CxAGDg9%95$LM!4FfbkPba4!+nDh3|#l9v30k_26 zH^0|Eea9;8%yMeWxA~Hm-h_UTp}hY=y(W-sc>)$wXkv? zYGO%rY}%mUNQv*#6HCvJ+2d6wFV^qV_;ib9 z&K~!_7E9kvs6RP-`RVl~uaAG^UFlUdBlE?S*F94guG;ze+SO%0PA0tV*}DB+M0@zx zJB=;L+H*D8aK|Fc8I6@!2#y=+X{YtkIME44X^Lq`X=1!eR%2C zxvN(#v)Sz${x0y(xs7JO#n)HY_w#=I&}g|f>m6r+=F)4kwC0*!?J2cl**@8E$~Vc- z>o?E5wl%t_x9z>LF(_%aUZ;Tac=dM$u-p%vsZ5DyBDu>>-B@Ti;B@1EX&_g%wB zol}z@hlhUU;PJNQT7Emc`FoO0YM zaqr6S+ql2_)afvH7&TJOp{679N>8PwQ&!tt048Y$Pgg&ebxsLQ0A#6S A z<6IqMaQ54e{J-+K&oS#RY;JoS<)~XeKU`h9%5b*l#m9F1R%KJJO*(&f-xRfyMMGX?(g@XuS@T_S|(n-S?`qHd*k5a+iMCcg!Nj# zJW5Vq@Hb!Xlabb(D_o!6a~&3AInT`7|KJ2$yU3p#PER`)>$e(iZ=A?{_V8Y-vwOd9 z%>MRt+Wk8JY1MWLckPe76}P=(wDM~2?G+23pPjZUi)){Vn%&k%ebr}*uivZwP!}s= zp3E9Q``oYFuPsBb9`MYrzqGa>XR`SF)6T&U3+4#@k-WItQ#Kk3>bB6sGg^Xe}4zY*smRPD4?@-9Eq6`t+7JtlF->n6R{)#{7n z%V(JF-TPkqH)mmkkiC3u^2Z@-=Umh?&KP+(GJ@O1TaS?83{1OVyoLp}fi literal 0 HcmV?d00001 diff --git a/captchas/7994.png b/captchas/7994.png new file mode 100644 index 0000000000000000000000000000000000000000..89ce9a8337782ff9ba1065421e1b7ffea2b58521 GIT binary patch literal 670 zcmeAS@N?(olHy`uVBq!ia0vp^CxAGDg9%95$LM!4FfgThx;TbZ%z1m~V%}l{5r)8+ zum9_3+AUbHLO`MO`LCq&m21LEd)VJBc{{Cgp8Cpd^RMYU)Een1@_2I`7CN+{#ef>j zI_6^ksXJHc4xJvu@=1ZEXKOd1K>LJJ}VFI@s@< znc3tPn&7HrMGhO8S5iR~i<#lnPU(a^$+}HceGQd6S z=jKDYFG^Ui?vdl_|Ice!Qm4uH{`=lvUv3}Jo>jA@aMj<3w&%C5;QMQtbEx?0=8g?b zmnENn*?d;pzkt_nb#G0{`sCd6&KEA+d2>%|*-u;Hy`pUQ{XZX`@*t}IW!(DxPbIZ~ zc(KYCbt>xBo#)|PRuO)qx8eCmDc>{a{%!pBp6hXHbThxo`m8Sg?7b|!-w&QsS(BBu zN%Ywsfzn=sFZt+$+|S*0hRjdR?+AMv9^*Q#?lq(F(5q#uqJ2_2 ujIZg2Ei&%>m*8P5nV}t`LZvAF!JNx>X%EM}LP21?()V-=hJUb z*}X@kPjJGIi>nqLTk1P6{I=@mi_iYLh&9^(`&V#!)0FespFC&0*p#$(!Pn&P)}5Qr ztCoJrn7!tpXW~toS#%p;y-)?sD~U`zQCp z?$IxW;#s>@x32o*k*@b=R>c*8e(5!Hygz(79=!2W9G8DgKc{`$U2nG&0-38HFPYc& zKIs2Zx$N@Hfqlyty!C&%d)5e9Z4Gx1YMbvc4*{=J)zc zcOi?Xq31I;ZO>LJJ^JfyR`mm!Gt*Ze=ziay{M7r$f;U^5PV=gkSE(%Xg_55Mzua=s!t>W-cV4`I3 MboFyt=akR{0Mo%h%K!iX literal 0 HcmV?d00001 diff --git a/captchas/7CA2.png b/captchas/7CA2.png new file mode 100644 index 0000000000000000000000000000000000000000..9b94d25fb903138a62d760b961d657ed7e7dbbca GIT binary patch literal 697 zcmeAS@N?(olHy`uVBq!ia0vp^CxAGDg9%95$LM!4FfcWEx;TbZ%z1m~Zr)-80f)rk zuYcob#)Y^FYSwq2Kl5PD`>dsFnQkmUrg(Giv&y`n{P>&d3k)Tv3ACxUByuK3I7v{4 zd8GUs=ZmJyS<~#r|M#C=_UQTdhjQMxf{NMf--TKHJ!v;FFDvded+XL$o%8xnG;wbe z6%Tt9w6QeiU5XNSpUtUC$JyWKHo9%+_;^^h;K+T!YP$<2qPGm)TejL?JAMC~?34#f z7976H`E-@x_XzdnKlfe!_MUaxt~pNUH&(5E(jHnmzrir<_&%jWQNAixde-`Uf1Siv zuDVimH7IP&am5JU%d@+~<~q)QK9ghJIaWEZd T6W8Xt|Ji-+xpG_4<8>UgU6AA1TM2ar>dCSv%LCowHx{ z>#p#y8HZd~PL|B=XRV!96uQ3nMC{A^f`7j)Jh%PNz5UYf_Bb7%{r;8d>1kUgNrqiZ zGkdnf{MYiRmWz3<(L&3=F|W?*Oysq{b2$FNzCZ3;q=GK8FWF^%Sm@A(76Tnc9&Zkc cnH}=eR=oXdmVHAWm?RlIUHx3vIVCg!0H()5fdBvi literal 0 HcmV?d00001 diff --git a/captchas/7HSD.png b/captchas/7HSD.png new file mode 100644 index 0000000000000000000000000000000000000000..7fe48fd68f0459f63593c9d79dd0dce272d76964 GIT binary patch literal 687 zcmeAS@N?(olHy`uVBq!ia0vp^CxAGDg9%95$LM!4Fff&Qx;TbZ%z1m~V&5tU0fxY| z$N&Eu{dQ1s5n-P@EAN<9zqww5f2U4P-puEflcIii+cET>+|Xj6qsZgUaaiaORhVm5 zP7$i*V3x96Gb?Egmr+qfaH;vTt9Lde^4{^%RQt^QY!WwNc${ySf9-o0J_KSw7BkuV)o?U|9{YZ!_^s+daCc= zG-u!T?@d`l<*ly$$7a2k$}>JG`SFLrf_~pg-{s`5t*VSW9;JKWW8(M7XYI)+E`;5v zT_bSk$n?_MU4L!j{cZocMBKGI=)b;t*Uf)nB5}ow)*sURGB5FVYQw(S_wv-wuQYtt z6Kedz#`xEb_je+0o~~#vsl9oA-Kk(x|M1T~I=@ZBZo98tzpin?=H&CK=O$lKs*XtC zJ1hUW{)X>WQeW&mGk1QRjK@duCEQ6$?6==+V7PnD!qX=@@q7C3KXKO_=lh>{x=u2vWonI^ zXN&z(OVxi9&$YIRzK&|%b*bG!T&Vuor3qAwY*5PSsOMI_@h!GYy$+ZV89ZJ6T-G@y GGywqo0zU-+ literal 0 HcmV?d00001 diff --git a/captchas/7MGH.png b/captchas/7MGH.png new file mode 100644 index 0000000000000000000000000000000000000000..d3545b0527022fff00e477bbce34bb5166fed0f2 GIT binary patch literal 746 zcmeAS@N?(olHy`uVBq!ia0vp^CxAGDg9%95$LM!4FfeWOba4!+nDh3|!AY|X1Q-H6 zp8l_&DYMNf&}-{&+|Em?sQwW(<=U$=Eh{z zIMZWYmEzkYR(EX3+bAGzY9}3O?f!1l^cx%NSaeuQ{O?K#ta^31r_}Cn>!Dc>N-K9R zf2I~?`|{q$6&vY#$oG{I;Eh z)A4OO-dp#oxWz=cU;qAyeO>V`#q_=Z4%hD~GJl`yf2nit+v{=c%dHZ7V>|r&bB=^& zem~)V=VkoNy$`OM>8*Ji)b{s9TKTtbsm8K>>lN8AOQ_WDp4Igx;)~Oo$KP|Jc2_$* z=HRdO=-YRB#(Z(XPlvg7aP0FDuitj;-Sow6PEXriU;n>X^tE*NtNpRNZ#X`8Vcmbl zgCl!4OQN`A(vu(i+pZetOw`p?T+<}Ke(k^H>U!lPo^NF~d-$(DO{^?gM?`))2a_OjFy`DkF^g!Kx QU>audboFyt=akR{0N-&|lh1Cr^>sn6q9tms6mC4VjnURM5;eaUgHqi1s-Kly!rW8&836>mQ7lhOUbCg8Q|+OGW9MSrH>-LZQa z&$drpS7*d5VklWyRsP}S>Sw1CV;_l$Cfz7kz1gdK^5}1|O(oZ(Ub;(vob=|{%`Kv< zKPu(_xSsc;Vfu8_U)m;XG~?GlSRBXo`^-+o(EEakXJgk%e-Cz^^ZwAGTVB<2cRs}= z%Pw#Zs^gV>^`oXdfBw%2$2|(ee^mPXWiR^iH1P3v%Zcw3gXgku=g}7X;<2*$M)`EH z>5KdX6R+BztC!l^x%(}jB4=WRlf*OuDl=WO zBGzub7WJ%S*3ygh&0jVwnPcBnWzAc%qf{iL_=OT6YvEcA-_DJ*O8=;7LLN7g-k z_4MyT_xJaIyxgh%>8_1+?=>ay9apbK{8;xP;m6q}?sHEb*8f!Y;e%?~^P;cM?DBR` z-g|A@hxUC*q7&`kEAmG!`gc~O_0XxxDdNG2Qrv$PU%y|Nx8vclcvhjs{^s=`&q+qEoqsyJ{6_lXFYf#+7ryCJv0n2ha)G9O%li#yncQ~&#`R(zk2l9*p+g&540IH!%XA$Zs<;tZ}NBkFo!*epX`70 zMsMjk+ZBrr-`d%n9G15C!t#3gc_+__&yNf{C)kWvdHRRr!!# zdiRvMC20$PFF(8YxYv%#`a2KSI2(M*JyKciw({Jm=@oZA*vcHN^j)L%_g2XA<*o~> z*POWMX%jBH`oqab z)V+c8cTYBZX12QjSLjwN`Ik9+a;{lCi(^ceHJiR-)l{qGqo>!t((056ey2RwAn`rp z`S7iEg>xD2h}CM!B!@^yty|S_e8%)2N&(L%e_vy6y>mCquGBTxZq9wbaaC`r^+vCH zzZ>Cwx=HJ{Y{)C#b<6(n+7~PWyI!Gpu6%GLOfbGO`?xF0QKXKnSy@8FU!)x6e+=F8lfowiRpoEZJP?sDAC-H-fV zs2g3|=w>VV=9%rCp4aIsir>$(y~W_!8w0^q_3I#^mumty`QqhSGG>x%_g7sZL0F*HC_?o)ls%z-^ko^`Jp*~=|bnq zMBQ>D^}Bl=)Sc32uHGyZuJdBT+csZ2!_VtPS|sGdp1pr_fuH5ViOEv(*KRMkZu~r} z+#!O~-qK#Otoj7^OsluQ-?Z#Z;^ok`U$!MzVcCiQM}(7}tS#8pT&nRiF;A>`z2j;f j`FpKYNdri!XdlDRMW&U!Sy?f_G|J%V>gTe~DWM4f1|303 literal 0 HcmV?d00001 diff --git a/captchas/7Y4S.png b/captchas/7Y4S.png new file mode 100644 index 0000000000000000000000000000000000000000..5f267d8528210e092eab9edfe23d15dc9ad499c4 GIT binary patch literal 685 zcmeAS@N?(olHy`uVBq!ia0vp^CxAGDg9%95$LM!4Fff&Px;TbZ%z1m~V%}l{5r)8s zum9_B);jcNa6V{w{_D})&mk)_3+5bD+p@b@Gj&qb@9WhJQj-%o6C<1?rU|sEwouGG z68@giWybT$pNIZOsh_DAymmV1hC$_CzZqLq*5|dX{qXirSl#!|XY$qedF9SWH?N7P zo_)7$8nfSv%6XlORWz4f;?NG$I&!;ygI#Oy!{CeB*XCcp^XE+5da>APtKS;r*`05l zf2v^S)k~`n|zgkAG`tkk_YG%UZ5Sti5MY zb^flLl24oWir|-rvK|Qr*Sp_W-RzbT@pSv%_ShMl;-a1Jmzx(y+lH^Xd`L>J!|upD z>-V*1H(cJ$41d@ zPiN0^d~QGcWyP0gY}JThwY3_$t$hrP=mQo znO%G7mUz2=&6mE_{$F^>tLe}!)zXjdv%)!NsQX=7xpkZU+pUJ~%4K(ME}!3CZ^!uf zdc?$hhn>~c$?Nz_3X^y7Ot(04+iCqqg~M_&e!EX6$1QAY+qyey|JRJ9539Uh)@&@? zvi~mouYhw!&TC6oEN*x;O zzF6ty?_U!`d9A&-8p%7k%gN^H8dl7bv0v$%79o7sM*iWdQ@f77R8?BDp<&)Uks)~h1Ykk-}hbLciQghv(~M;&2gG{%M8)e z+OOX)wms+U+AdmoaNnzl;0})0FAV+S#oJHJHNH1{OWK@Q*X%{NUAjN-we*JHCVt;{ z7`%A&_xxSHILC9gU%s5{E7O~o-)AfICqg%k>*td=qwA*z16?^%19tJDq)9oo=hprgp+%|Sip zzV!DE=QNhS`G4+b{Bub$jkI6hnw+<13540+nOz&xVfbtJPFA~9{M#))xLeo!%~^E# zmxYG7`hwyM3m5O%`&ChTuWP9Hhevc5ex**!6G*&T(o?Y}o{ zXw<)5@#$z}{`(JKujl{%{p;o__l}pZ_T_?{=NJcI*!ZpJXNjO{Ws`N zUdNmn55M1OzAyW#Q}b|S{lBFXBwD|zntpDqi)~vqji>zH&dg_FIbTn^rOi^AC0Bed zVj}aFeOLH}@a?#?!m>@^aM#m0ZGY43G;?DD^neeaDoF|#_RebjIN!tnY2rHjgv(*)X7 jTM{`FBb+3t!LbP0l+XkK7UxM& literal 0 HcmV?d00001 diff --git a/captchas/8696.png b/captchas/8696.png new file mode 100644 index 0000000000000000000000000000000000000000..0f0c56ef30cadb6c7a5fb7b00b766557e040169d GIT binary patch literal 678 zcmeAS@N?(olHy`uVBq!ia0vp^CxAGDg9%95$LM!4FfiqMx;TbZ%z1m~cHSWa0fvh^ zUj6^S>32g{K%UFd&Aa`c+k}boolEFhd8_Jux5=&WZ>%ro@py9_7CN+{#Xv`qddwf< ziCeElW#0_{xW6Wy_fOUGo&U8m{3C@9-MaVYxPRMo(fF&yF8>+Rx#u-ap8a>nq`>cK zMk+v7=8sfkz>@7MC)RT`|qq; zf9&bBC;ln(lGoa?@rmz@nVa));b{$t%d59+n8xkS&n#b1cDpzE+SC}4U6uQdWEYEl zyUxDy|HD6bNE}xJV;?{-CA|JJrp|5JHOg` zGh_S;(HJwK)Vig@iyy46TrPFGm&EEM`pGw&rh(d;QRqhe+-_kelF{r5}E+$ C?>7Gc literal 0 HcmV?d00001 diff --git a/captchas/88MU.png b/captchas/88MU.png new file mode 100644 index 0000000000000000000000000000000000000000..9291f4354eec3ed466ffd77077ae878bef203e4d GIT binary patch literal 754 zcmeAS@N?(olHy`uVBq!ia0vp^CxAGDg9%95$LM!4Ffi@(ba4!+nDh3|&AitNB5sKm zuYT{}R4ur*=xqf@+Q#j**UCdJnJ>#{DR|9Yw$fwo-|lq{^G+skCT?gkh;Wk7QRJB> zz~;@-tlDx==n%!iN5V^39kyOOI`w}1%xc>&SLElOzOd`~xro;xYxVclo=ZNmO)uwI zl*#V*$6r@=uG~8B%_5cD{+S!E_0Er9xi#+P+`re=UVdl$zUt?T1lhJ_)!%(DZ}}YA z?zZ~hi?4az_I9-oD>~n8?1-z7*4(vQe6xO3Sd??~*FgR6vXj0ANj96$9$f|@42_que|u_L+`N#fD-ud$>f-fxolR`r&ee2oQ_#{?F1h9ct2ghQyH!2v z#lxwsaqiVOgF-*mG=F*bV&UCiD^z-}ct1I39UJyj`hHIGhs^Ml)&KYDSij$HcX;RZ z3H^q@p4q;-T{b6f>i$yoHLPbMJ_m39{VnapuLo{N}q=U1gEX i`KX6Fi3F0;KJw<6@O`YYWcdwD%M6~belF{r5}E+(5NT%s literal 0 HcmV?d00001 diff --git a/captchas/8D8L.png b/captchas/8D8L.png new file mode 100644 index 0000000000000000000000000000000000000000..d6f82f45347b5ab3795ffdc29bb1b7061efa027c GIT binary patch literal 683 zcmeAS@N?(olHy`uVBq!ia0vp^CxAGDg9%95$LM!4FfbK)x;TbZ%z1m~W?r*_2t(lR zSO5PT)pj%qMC%+aUhn(d#!ZyXMyGX4Y2-Aeuiqx`WvWs;EOcl?i-C?Jk2eREnU7{B zUX99Ldo!C+s{VDI@bPBQ(xa=ecL*@@qFLTx2I~1o#n;v z$?mfJp4@vg?A+21uYC5^`OSH?^R)Y^XFPg}YrgHhQ)|~zz5c=3nM*IG-`lg^PhWWR znX^|G9k#kBe_=bva%YF!i?fSk-Wuj_@OmeieOGh$UgtBv3Qz6i4nFX#N8fnOTe*03 z=DBULad#q)Jo72prS&m!uH4!1?^iDLz20$Swd>#Wo3DgDW4<(fwIxUOnHz-*e$U${ znX&G2sOL_RZEq$X{C+F!@iU(-uCXd}HtsmQEA^+Y{RQ!fSANWNYcDlkIdT1sBr%S? zhi5wdv%Ti+5PDEwAU&qY-Pz{2)?dC;kBeU2{>$}6YTa&0|8P}{HJ91L6P4eU#5c}p zPYIs0&g<9Gg2-u8l#8alwDj8VnLDLSGe*9bt^fCf`+wSh-OI^{*r|V!>7GEp!FuI2 z&Xs?zr=8lp{NsJTQkkTdZIkYc*8TZ2`>FkpRp$HVyx-&haqZhOL;n+Y|NQp;JHYYV v_-()Dyz~{7zUdK8HvgZ+YEmz*e=xr?`@g=$;l@K?B4qG%^>bP0l+XkK!fHMi literal 0 HcmV?d00001 diff --git a/captchas/8MB6.png b/captchas/8MB6.png new file mode 100644 index 0000000000000000000000000000000000000000..8338cd0c4fdb769da746eb50a51980cf8c77e21a GIT binary patch literal 768 zcmeAS@N?(olHy`uVBq!ia0vp^CxAGDg9%95$LM!4FfbkWba4!+nDh3|#lG1F0&Wij zzW$BBx%Y-vks)hS?J;J{`=MJrd2ZO7`CQOjI%T@at@Ssp7o;0SI7#Rz@=Oz8^X6z) zZ8<1(D1kF^LyG|g!bjfUwEiG-deffx-{%*K?Oxz6yX>0z_q7LiCE5FLUH|spg@mn- zKi>OwKKf+)!YDaQrwBNma;a3r>4@NltUY#y@^Um{KThC5w_encxyhU?YU#W%7 z1jX4JORtzq+OIEF z=Wh%CcXg+9?qla$orXVOvaQ>^j`#VEB$vByT9xnKoSDt*w&~Nq>xrV}%LSwYoHL*A zf3km_-@J_rjNdPIRIOuC@mumoJw4a2af;r0{y!31z6QQs5-a@NX4agym$I%b`@j9` zxyQBPfAUlQ8NV-?{#D$FZ~wmk!YSt@TgCQ@oQq;%pZ7(6>*u*Et9hj5wvK2AqbNHH@L<^=Cs0qA1&d2`j@i~?c)4D4~JBL3aTjo?se(ZAFFE`?-M0V<+jUR ze<^30%-hqn^3|6)lHMyN*6{j;|DE*DY~AkSV^l~w!1VWsUn$w>;`8u3HNce3;OXk; Jvd$@?2>_XdW10W} literal 0 HcmV?d00001 diff --git a/captchas/8N2Q.png b/captchas/8N2Q.png new file mode 100644 index 0000000000000000000000000000000000000000..98aca6f602d2bd9c52c9317fc418b6e6acb0f27b GIT binary patch literal 751 zcmeAS@N?(olHy`uVBq!ia0vp^CxAGDg9%95$LM!4FfeWNba4!+nDh3|?Yw3K0oRK` zU;o$NtaWhWXmUPKo#yquDo2}bcC-G3lB~70o{MYK=QqqdnZTL2p~WD=NkT`FXPN+; zH%GH-%R!+-lnHk{N$|ZqrJAYfPfKW2ddA=T_m*Xz`t>}Y*;{_=yZc=`R_M1c-TCg5 z_9K&D?E52sor(B8U%1V`RbAb>#P5y#9Bp6!FPFKZUND(O%w=Q$el&QqX#9&M$KP>n zo-`$5^_2^v;%lzmN;@04T-@#E_CmKUTPofkean^ZyscM zvg7@9u3AHvbnc#ME7bHNyvr}F^m_BX;ZnL+h)3Lu5QzeF`IA*K<{Q4;e!Tv_LakGZ z`hKtA%wjyY@%SwoH03wXS+a zLydgw-R$*Uzt5+B+xqIxf%wSa#2asq=6c_^>#hEIvH8UIyE~I3zG%;lJR>~)!MvsH zJ+;MF*6&I#?mqOx{KMRerFSl0pY{Lc?zdl5!_ReW6*Gw0yJvIoF1cC>>usle9S?Fz zZ27Hfwx9RiuisBk`Bl14vVS37**HDQxoh4{F`akQe|xlwsO?$ha=(Aso|?J(D!*zc z_%A)*rfMg$tgmicpB&e+_-lWT?*3(Ve{%Hy4My&3+#UBX|9NxflKG8tFE_^j57MJX e5`m|)kK7Df)!qt7+_D2EWCl-HKbLh*2~7Y8&sX38 literal 0 HcmV?d00001 diff --git a/captchas/8N6D.png b/captchas/8N6D.png new file mode 100644 index 0000000000000000000000000000000000000000..126a749f47b020ed43a0c53bfba9c4550ac923a8 GIT binary patch literal 692 zcmeAS@N?(olHy`uVBq!ia0vp^CxAGDg9%95$LM!4Ffdhnx;TbZ%z1m~V%}l{5r)7O zzy9y{kzeF;LV)W=aqY%uHo2Qc{mzI8dsyqAHu7Bi_e&j<)Z|3Y#0V#eX##DkEmUIu zY3nsP|M}PH^Y@=t*}j|qQp(3A!Zk?!zjuF|e(U{9nsV)2v!7dTiY;05;CfIe@9X=W z9g&RukMcIHezyIWuPjgCALX4B{qJ4>-4NZE%(wTT^ObJy?8@IZm&)f_&Ahubx9#M9 zoid9g(Mrcj=c|Qh#wX8TT41f58{9qfn{+3BSL@U)u_(p3kV(76!ylS2Jj`Te8F2gg z=UXd}ZoM|A+A89OV0QJ>y;rB@hnJc*eHGgl8e3%)-oEnaIa_{-IRABf)$T2QIVvOKX4;ZxDH{J=UPY#Vv|XQUTXi94zP?B3Rg*uK zVe3zC{wlpcBzN1YWiyr*L{2*)eg5dQX7}ah_fi)~AKUq&=+AAt+oxGf7t3T=%ukd* zt=RK<-G_=}FaHXbG1PSx_Ca(Md7g+z6Oto0QKr-7> z;ESl(e)p)K1wZB*wr^2ZTC?`^oZ7#?3QF!Ld|t=D|L2vn+7IWx6OaqLCHS&p|BQ1R zA71}|_ReLqhQsZD#l_#(&Yi3F+i&&OYdqSkmhL|>S6BSaVSODZ&Ds4f>F;Mm*PGt1 zJGAYFWOjB&$Lk!A#j#GA7N7ozKiLrduqZ<)uI%@Mm+d#IZOqo(obXnsC_ntFX0D)2 zpXamXM_)*0mn!U7Wz_R~YO=>}Gy4|(d)aFl<%N&4Z`pr*-|@{>AM5`aCe{f0w?^l> z^0~LITs{5i;Zmo%zN?QO-Cg^5qK}Z+v=>wPwtu&IJnzFi*3Nkw8HEJfHeO zO8dvT8M(7_?dR=WzJ0-l7p-p}b}zQ^lYONt6*cvvX>if?|B)BBw5Ip(kvHf0@MekH wK5dah(F+C6ML0=J6KGRyN#snV2J;X5s@ESG7hc?>3{0mCp00i_>zopr0N(yim;e9( literal 0 HcmV?d00001 diff --git a/captchas/8PRQ.png b/captchas/8PRQ.png new file mode 100644 index 0000000000000000000000000000000000000000..34eff5c602d07c84baec544dacd1884d06dd2272 GIT binary patch literal 740 zcmeAS@N?(olHy`uVBq!ia0vp^CxAGDg9%95$LM!4Ffgt5ba4!+nDh3|#k|D^A`BOI zy!!v&sMf(%OoF}R`1J{v`MaZ!CaASJ?8=)IO=c0yF6#N)id|1 z+2My5P8V0dWwmMU#;2?;p*GX1r_Y%$Gd0h6x9o~dH|6s}Qx{$Melqf)xkvhuw@ZJ` z;j5Fg%-+h=zoFbPQTFD~3C1T{9e3Z2%-FYRvD=>ht8Y(P9oZUd9eVZE%cHFi?ZoSM zD_&oo53kyEj@V@N55^ z+uJX2oW8ocJ|eLH(eM3JoyGct&Fum{p6ANnm?P4lk zcC^i^Mq<~3@`%TGr1J9KuWyH=P-%f76z4w0F{U6*awp*(XeE+5x@llAYqG5r)8+ zum9_B#=2}(az4N*_uJ{2PVm(RNjb)?n$P!m?EQNtj`8l~M9#zrCy8kSZK^F)V*WW7 z$GBI0X-KWmXZtyo$9Byqb$fk9$>VU<`fdAlzJIJdb69UdxTNds1A^&mrd(S6vZHcK zY~YreM-FHCth&BuNqwxF^=7^cCys1jFisb<<=da_kDTx zx6=OW-M@R=vL+U<>pNqS+gp7n;O<&|=QPEozixAG3@C9nW3RurVovd#d0m|8YrYn? zRn7bIJM`)g?Z;<#iWK?(G&_EC|Kk2{u6r}qYduiw;eKuCJKK84`#pP1Z=H1I-?xxY z;)3=Y+pyA~{~sJVXSx5*LGgoMeP0P#Y(06OYhmS0`DwdPzBVoT?YTFG{ha<5eVa9N zJLeT``5KimXZk_L)lq8mHeR?}u=Dqq+N)Xe^ZFlN%{0>0dAIcVjN{2y)vq=$HD3MY zRqo%1?F%39d$`YAp&ln9wO?)p|E|{d;svWItb*QmBo)&^h)KAH@}76cLtXK2>bEQur|$qfA!`+ sb3=8N|E~*(f6AAx!9>HXliw?WtDAQpn6v!esxHMdrfiG0-23et^;Wx@xx}wcwIz`=F~Uh=ngBJJ zM_dnQt=)QU)AmPagbr2Nt;pst{%!iR`60WmxcIe#J?i#4G9TaS=W+{)T$`6XXRD-= zON*)foEPPxdF^#OB^mEesXY7jPWihJYq!2#DErT|`PeL<^DjD!6EnYW+)*nRH&gq^vZw?vd+c&kH3YB?n%3Q=&;nes`|Z}>Z`SCJ16V?T=gOEXX1}+Uia>u zm4=dA&S@GY^_tf2?ypYjnm_H{I{B*iu4< zd{5Os4W0hibzbM&@~Qo2pTy0L4LIcdB2m^sW?oSHo)e4IZ*b;Mc-CjyGdnu;(TkJa z-*<1-UOT0||LU@(U*38~>|vk3{L=kL5?9MMAK|@p_-Dp0rFAu{Q@`lwtvPwq;7wym z&-1%JHEGjT>yKGIvflTZ@x`_JTUz_(Rcn4(_2H*hXGOo5P0aeP+4;{ZU%yTM%VMH-Sm@A(76Tnc9&Zln zF^}=A-a75C$iLl;hj)cujp9C`oi-)kBq1XEEuYno!}?n!4Az{Tzv`CldM?Azd-~oj zSHpJ6ygecxE2C7{n7wVPvGiYI;(Ge7e1b<{oH+!yV54+TAJ9eFbRW`k28MVd$z+@{aM<}mv6Paza0HN zJGazdU{|r&<_XK)J@R_llU z%JlG6r{*T?+`v@h8YHi|HT>?A`wFr1r!=Vcuk6|vyXjxG4;RcWd(6{FTe+{Cd|s@ArfSPGvu@N0{$Dcl6%(gs(*fDOHy8 zef!O0T30Q*BfI)p=yOg{y;V%}PP(^MY4>cbnKXG{*US9B>_+GPZcbkG`cr(FRM6D! ha^7Q9OAQ_N^|#-CzWXw*37AG1JYD@<);T3K0RWo6N6r8M literal 0 HcmV?d00001 diff --git a/captchas/9J8K.png b/captchas/9J8K.png new file mode 100644 index 0000000000000000000000000000000000000000..5795ccfd5eda73b984fb7af0b2a53dc6da795e9e GIT binary patch literal 709 zcmeAS@N?(olHy`uVBq!ia0vp^CxAGDg9%95$LM!4FfjFax;TbZ%z1mqyJ)q62t(kM zQ~$R6u;~eNB}?Xf-Mi_9an;vJ4Gm`ZCm5aotg`jnWLt*blN(wLbQF2KISvaQq8hW~ z{*lV*LDTAgf4|Qb9JK9))k@bh9%bow3nWf|(f=3d$+3D*3?yUW4 zwbgZg^40C%)lE(2oRhZy_r^U+H?Z~^W3i>S$r`@t|7Qj}*Zw?v+T0|b`OXx35%Ft} zC!H@(Otx6}cEy6!J8LejyXCc8>&~1S9k0xSTjuAB|4!Qcko9HSpY1D;$}ql+tWna{ zsoJ~b4afAE>rV4&CzMaz{O)DUN4Cr})7-W{n&?_#v$Frr$yh_3b5*BV@2`&b-`W29 z$QkSRyMNhCUw>oHdDc5iZ|~(1rOlU(-Zb&pqb%~lS-T2dh{y0hx>w}|u8vOae% z7yP_R---YCgCB+^%1Ae`9E3z>^;=S*BY;tExhje?rM>9wmN;=j#pLgHr>=bL%sR*e;d7uN3XS- z=Zm$hjr=w7^F-E#_k}G}KWu1Pxc-IA9*Y-G9!^T+)%f^!*MCEaYX^kli%fJB_uN%z mN#sn7aFUoN(56Z$v;Ms7w~H+zo4x~+CxfS}pUXO@geCwN{zKdV literal 0 HcmV?d00001 diff --git a/captchas/9J9F.png b/captchas/9J9F.png new file mode 100644 index 0000000000000000000000000000000000000000..c137f99f9e90a972f5f6110e20b31003c30dc690 GIT binary patch literal 650 zcmeAS@N?(olHy`uVBq!ia0vp^CxAGDg9%95$LM!4Ffavrx;TbZ%z1m~Zr)-85r&7m zUj5#`sX9<}A;ZJ-$@86`?Y>>+++!=CE}gq_Yn|uX+J3o)c_%lt80aYScyk;UIz&z8 zqx3HfMcPZx{C`p3Z=oq~Dy}cs{eztcCQ|#;S{M8>gR@e8&9s2bC&Ef?gWiINk3DB4K zzW!*%)_=AI|2{lOzjgdUdF$3|KaHjoeO&tUsm15{{_b&qe`-dvN7{XTDqPv)m$>(4 zLY`^i&39efqCRabU-sZ3TUB^P@QThn>lx3k$Fa+QJXyUf^rq-5tte5wHS8_|^;fMq zzWZBE3{U;4`ZE8(k*^be9scW=C_CrxkKk*$E&0!~euX}H`Ks!8l;4q>U%z~UpB%MV z{r`=ucwYb2JIrRe?k?76Cnmb?d!UzHs&rHR$<|7w zp47gM4cd}>T=S-Wr$G6duzS;|cqOwbp@9$ul3!kmi+(-?!N LtDnm{r-UW|PYNiz literal 0 HcmV?d00001 diff --git a/captchas/A23U.png b/captchas/A23U.png new file mode 100644 index 0000000000000000000000000000000000000000..adf1ce4f5e299fc9cd563469dfadc3fe355e0a19 GIT binary patch literal 702 zcmeAS@N?(olHy`uVBq!ia0vp^CxAGDg9%95$LM!4Ffg@xx;TbZ%z1m~cHV6R0fxYh zFaG~G`WY31}!at6ElqvxqE?cnQ{d$wHj%Ijwxme+PSd(Aw*b(($ty=xJ973Fd} zJJ{_lvwO6+h*};0Wg&O)`exxEIiq9SBcAWu|K?Qn8Q%{_^5*<*nP2Bul~|bQs@Ji6 ze%PTH_NkReyVhuBpPOiR{iKk{wS&Dc9~a*#-M?g2(DW@`{;lD0pL+b)p36=B|C^op zWNc6RP8PS8QiB`p$;FRU`a-^bu|5)T_eZ0DwY7KX?L*q{qfhv5>&tR)Z!i7Tus(jB z-n#>tAI;Y&WouVo^lxouuQ^>Q8F{8;FY}}gcRpB6)2xr%`@Q?N?Z1`{+qmM^nf(g; zk@s$9^^@;;wjZ-armpXPz30-;8Q%X7y>)o<*lFeZkUd%(`$GTU{jBiILG4#ueN4pT z<2AqDe7X01x!ot7@EzJ$S7velI4;u6eW$-sv$X7<q>^D7o`%~5<_14M0&dYCj`=-xj4Vs!nrN{>- bpO5_VOPP*5oYZX&OqUFvu6{1-oD!Mm279>H6D#BnG)zDAP`|i;Ti)yWUu;rZzv}`L=1>we!pC zemwDaY2$i*QS`!xT@TEnW$&^t;r6yF`|A5$Ox7Cyq)bysSeoZxx4hp>8u)%v_9@DgiHaq#v<=Jk5Sae@%YbtbVu8FWPzc_ukug?xc2mJ$Ihm zciF_*<$z8t$eg4#5!7owvZ`8qeoaGz!XZG*8e0F~G{M*Sli&m_+vjAq9qYO;=zOkk>6baeo34I#{Sxw{_IiPI^Euhw$9LDRX;A!C_3zQ#dDeY4 z{*NQJug>C{$JKoPiQ)Cs*ZJq#D}P=-UHoW8an0iNd&jLNi5S}MwM}0;)jE8s?<-Zk zH78y#yL+4^M+KP9jUT<~Qe{(P}H23d{Y8LZVSyH0c-r4P%bNy!Ht+UR1bgxFM z?fWzT#+xpV?7g#h=|6Gzm08|q@$bQQxBT#{Q+~2#KEB5jad>U}j$}pwn>E?$%UeQC zy>@u6cwrp2?d3}4ciR`|eYyF$CpNiuj`cL|j{f;|OGI}*P1k4LG*|HWnvGR=SH##o z{8Q?)`04qN$1mS*w)-EcDfa$|>!X{@_wVYyn_BSbUGm&rH{My~-M1EWw+p|wYjbJt z4$W7W&+iMGvvHdB(x(&T>kCeQ{P$_&gQ~jsMSIGp^WI!Fi>a=8%XQl?o0Z>rRT#`m z`4IooA+MbGtIc_y*JpppHD>&Gjp&-5^l{yDLmfpPZ;r!4hc>hrP|W?jQU`+r3 literal 0 HcmV?d00001 diff --git a/captchas/ADU5.png b/captchas/ADU5.png new file mode 100644 index 0000000000000000000000000000000000000000..bc0d33ca5dfee96ca1592908e6cc3d5d32157825 GIT binary patch literal 710 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 literal 0 HcmV?d00001 diff --git a/captchas/AQF2.png b/captchas/AQF2.png new file mode 100644 index 0000000000000000000000000000000000000000..1d85646de862e1d349657e83efbe7d8d1d9960e4 GIT binary patch literal 745 zcmeAS@N?(olHy`uVBq!ia0vp^CxAGDg9%95$LM!4FfeWKba4!+nDh3|-MrNX0t|`8 zSH9P$RuzV{d}3y^+3js~KXvL6k!3dwgO*p$n{9Gy{~P8D=|(z=Jl-6Kg$`|KF`$_F zC9y>f3{EkAABL?=Yx0IFCRR5S$p$x)XmfB5z2dCKRDuf&-c}%=a=Vj9k;l0 z(A9q4}0zPlsvSE|oS?9C75e&TkuO2eb zcVAz&J1esLdt>(_^N$bi_r@8ld0`#)&i2ov7t;Cud$zEy&WhjqdEdmNM;|;2 zZ~y2lFDe!GXjj&W3p>L%{%fjTdrda`$IjROt3Ibj=H5-s+}gqY`f09=t?6y=MVA+U z-=qEDUC_=|)Al)@^8ERZ?d_Sb`fL627w}Bqp!@TF)t!yse=fd%_uBgRGA2d$-mF~p zV3FO6zS5*DiQVGo@7grI&6_4R(O9&oUu|1{op^fJzr{Hkj?>SyyjS<6HGe=ldSjACKPhm8UxMP2E$$&%Cy*_S+x7sl1nFtZ$b-6$gx5 z|2JEfa`R?a@89u!>V!w(tA9M)8}dl;%i&JzS~>f)w!aLjhq6|y=^YciaILDt`kr@^ zi;cEVrO__yz4rO?&4mpVp5${9pGbZr#64r{}}fMAOxWYN{ieB&G?p kskS6?CPp|>!aSn?c8zc2#0{qkfJvCa)78&qol`;+0IFDDf&c&j literal 0 HcmV?d00001 diff --git a/captchas/ASMW.png b/captchas/ASMW.png new file mode 100644 index 0000000000000000000000000000000000000000..2c99e6853b8b0fafb1217e299c0835ec4d1164d6 GIT binary patch literal 786 zcmeAS@N?(olHy`uVBq!ia0vp^CxAGDg9%95$LM!4FfiTpba4!+nDh3IXHm0(h-={F zQ~$QF;n4`z>v6pMchX7Q#XLEt9|R^Hhz#=LU%7q$Mcxaxk~)e!(*)SOIhs{l4hkJg z;7r`mVi4gZK@H(Qd@D;Mr@hVp70FKu1?H2zxLmziD5`ran&dy#N)rPRNppBH)A|9^S-bGmk3 zpXuR^5&5=zqk^LRlJ^?R9H?e_1OjdZ@K0tMsSMblUlk0+k#m>P6Tc9xzj-|4VtJhnxw z;oA?WL~WAV;MjHVZalYrOw&=H4HpE$%N2`m9BZC>f9AW}ZPAwZx6WG?u&Z87;aAuX zsagJvuj)9?wQmf%s=CLY;T6}(On*Pu7Y}UH`nKA%UX>{O|MqsnY3GnFQ91ekcHhDx zwqNx5GV`{`-kjXy?*z2vPL%wPFkb%ZNaAMc_q9v?+wDx%>ULDItmg{$nkXLmfi-r! za%gzn(Mc~h$nZ(5IbEL27oL07nrY_oUGD`hRZP;_C%5Nuyl$0z_8V!B_`m;xr>Eab zbWb=Vy=3-@#$DAXjgOb)tdhI)#P+l7#fEju)ORfk+BQ`~CmD+wksZ zmz;dFY185pJ}hOmv+n+L)Mdtx>sLSLXZ@5GU_2n0{rXI9km-?kiV;T*Y@Qu;JO3+} zXa0u$v$Fe^im6+-ew5jmm(eDF#473Tg%2UNJku1Ym#B`&_c>WVv9&rS3{2|`p00i_ I>zopr0LK7d+W-In literal 0 HcmV?d00001 diff --git a/captchas/BGKH.png b/captchas/BGKH.png new file mode 100644 index 0000000000000000000000000000000000000000..1ca1833aa0a26493c691191bceabdb9697392074 GIT binary patch literal 780 zcmeAS@N?(olHy`uVBq!ia0vp^CxAGDg9%95$LM!4Ffd*Aba4!+nDh3|?Yz|nA`BOI zy!!v&sMf);qx&(-`EPu4zm_dx3!c%y`DIGxEV-b3`^Di7-%}!-B&G?pskS6?CQ{7& zC~cpjnfiax|CeXaPT62vb>lMIcB9WPo=LOuuU@*`G^y6?bwV8Djo^p7LyxX;*1T)y zclwYvch1k5zZa^#UpmDr^s=zYuPW0Qim#a0#-IOS$SqtODslPpn;iEt`@6(nUGr!Hz-dTVZ;>Qd8+ zzOM=UzGm)Jy;FPPufzY(RRv}WYXa{FTtA-Gzo2&RZkL)J6IxVrU0S}rTlTVgM_0{( z4MkUX7Cx;o`!?~UTcn(CT+Dr?&vxDa-4fzL9$z?IZj<{*CR^}B2D8bXw9M0Q=f3Vf zTYt)WveKH@zjyoq7atz_ z6wB}OKlS3Vx*c=swS>yGdiJyzU$_63^|N=9&4#H@XMf-K;`xDTt;c(WKCFB9PBN_F zN4muEdw*-fyACf~=Uv1WQ*mThXGo|mkGH^Kp+g&540IHEyg4XlcG$bk3Og+17ig%U(Dp0Ccx&+(X85XQ0Pzs zXX1tyg9s-H9YwN*ALUQqJ1uD1`G31-8&B)feY$G;5+SKIrSr_Vi^J5LeJ^@xI$zOx z5f{UF?hmP6?O45k=gM6rmcgclve|d{E{vVyXg{;~Y<}?e6MDB< zDzyJxZD?41>p0{4zc0SeTI79u-LjD6HEQY)a@T&>`#xjiho`YJe-i%%)+|c!-N-9% zYj}1(d;4YMh|mA0JvBdnYUX6acbwHH?eD!3UbAcR_O(|E^A62(xSVI^(0)DbR~dKS z`)b9EufN=Ef6m+a-mPR!KfmvJiE!E9+XBO%AFTc$n{vncbo9*qe&-V$g}oEr{?D8{-zx` zY2?Ut^~KhkRgd{AUMdu?TE-*0I<&Fx{tS*6(R0qaIDhik>r%4jEN5K(v#c+Lr;p6$ zd;Y!7@vpFJnxkyCel+9mXnmROnY`+!CA5!eO#jVX6TaaZkL0TV5BBc-5x*e&Wc>;5 z4|Dpqnr{}UVfgy|{g*ijzVpuc?Ax2n{b@ztQX8_<3`WB1s88iJx^N%{ zum1lxvUPD1WMMkGdAG&qbyFA2ILJ3)oA2c>6RLin{Ksmdc39}ph86=IMILVs>M=hZ z&RV*K`PcNFhAY%acCgfIT8=HdH^EN3HrH{bYfTs@uln8nrz z_V}6Nt}Ujox(s}SS4J+sa<#R6tLc|JiSB$as^Uw7PS<{#R1p5-#J(9yqLx9w*eZK@ zU%!1CowA1WMbei$x2z^M7pD|NUo;jg%yFN$m8~c9jM5If36?t=_R6!jx$fEcGb4M- zS% zz82d$b_eyjF9yLrUtD5>W{^0#&E!uJ~KD7Hm$ pg|;VhCPp|(OcQ8RZK04^pE&FDW`oy}>wsyF!PC{xWt~$(69CRTAld)` literal 0 HcmV?d00001 diff --git a/captchas/CFGF.png b/captchas/CFGF.png new file mode 100644 index 0000000000000000000000000000000000000000..d674ffb9c709dd7edaf13f40cc257ddf1b351bfb GIT binary patch literal 687 zcmeAS@N?(olHy`uVBq!ia0vp^CxAGDg9%95$LM!4Fff&Qx;TbZ%z1m~Zr*AG0fxkw zuYcob#woZ8{#Uf#J>y(?EuWf!A={#Dg);1#xBS2Iy_m`4&2d=h(1sQR9Yso+YdqF& zeHFWd`!JVr=+!9W^#?aBI+L_X_b}InSr_f|PjA?_RrG@W|L(G*iC_0AZCs_h_LYE+ zKj$v>)vPs^i$dROaAc=VKh3s@JJDen-HR-y@uLpRac3jt{lQhQFrgZ8_Gp zE8dy^w||!JR`O&K z(DevgxdmE#*DJ|=l6gJ#&E#8i?Yx)IU-3q~t!i8QnTTD|)QWRZs_C$A6IY&YKjUE- QFd;H{y85}Sb4q9e0B9*dm;e9( literal 0 HcmV?d00001 diff --git a/captchas/CQ34.png b/captchas/CQ34.png new file mode 100644 index 0000000000000000000000000000000000000000..87b596380a643e1a7fc17ad7d1f1ac8184c19886 GIT binary patch literal 722 zcmeAS@N?(olHy`uVBq!ia0vp^CxAGDg9%95$LM!4Ffh&Zba4!+nDh3|#k|D^A`BOI zy!!ut({BOOMGFnpD%RL&{3ow z^T#~f2752f@Ag0LADkOI%{WZ+Y2ek|z!_$?zOh1|4_BG$bE>a)|0!C3=YjIJvwK9+ zW_O#L+&gqRUUtup=|ShV+RhNZc4x^ky~_WN_N&%%PCs;R)giTyZ%=*y_uwP*+IYpc zk@mlOwpt37_^#kMpns~hRYgX2|*;k65*slK{sD5;T z?X~@%F&-)p#F(iNNk%Cd*nNw+>$UwbU7FKe~>^b_}I`tIC!*Wk!% zY1S_bdexa0o7wh@N6KsX`}0@M-@{+?@#&;B_9}7}L7kBgS|r!9wth7c|F2hYX5sYY z20rmUA1tlAcbmSAKcVb=>rcZ@+n&bFjdfS{)_k0kc=YYYU-r`__Gwn;OU(Xc)9a&A z(m(Zcxi-W1W0(Chzr-d!zSibk6R3XjrPj&fZ(Bv=UpiQ~#b)#C`kxEspYX`?nq+!? z@p`e!@F@jM#(ggrJoGFOf4b!bxJ9K$~g{+02j3_u7~~&B^�!*t6p00i_>zopr E0Hl~n00000 literal 0 HcmV?d00001 diff --git a/captchas/CRET.png b/captchas/CRET.png new file mode 100644 index 0000000000000000000000000000000000000000..10dc33fe36edec68abbc9371abf75fffc351c936 GIT binary patch literal 678 zcmeAS@N?(olHy`uVBq!ia0vp^CxAGDg9%95$LM!4FfiqMx;TbZ%z1m~WYHl50fxXS zr~d!nROG$$fEn8|cd0Ayr^)E(_liGU^7USR(3bfZwHLfkiExsbCeWtZlE|4zG4rE! z73)6V?A+gvH~l}eTzB`=jqj>%MHTZ`ANzH})4y9<=Gy;8&F>rc%?R1~w#(>E(2nYa z3sXD0ZY)_RQGD#w{-zxFoVS1bFJCt8fBW*Vtf|4fH!s_+-MX==ukQ2Cd%r_MTXi1h zu1w^;d2X>IbGVw#N{7X_PI14k;a-?5yf0cl{L?%0jeFg6wc;r>d_LFY)m{>(U$$xAs9qzvO3KK@+^h5Q zRo!~I?t6m$n)&WN6)v;Bd8jiVwz5B#`C^8V`Kk-yllS$1owahEi}8Hf&w8!Q^7iFZ zf5a7)&wS{u){yx1-gBGMbid-7PkU1`SMTYcYLo6Z+x}YQzDpN(7FF}x2QI(+{mGsS zMz75Btl#}vzWR2Kf9s3qMkx=)`CpxRZ~f%J`;BgQ554b`{u0T3{o?)l z|J3vwU9IOLqD%kJ+t}rLSSWX)_d+8{s>L)gt^8rE|HZxV5Lb2&F#R!jy85}Sb4q9e E03t<8 literal 0 HcmV?d00001 diff --git a/captchas/CX5M.png b/captchas/CX5M.png new file mode 100644 index 0000000000000000000000000000000000000000..aa69494ce48e197d128244dd54fcb7d3bd62734a GIT binary patch literal 723 zcmeAS@N?(olHy`uVBq!ia0vp^CxAGDg9%95$LM!4Ffh&Xba4!+nDh3|-MrNX0t|^U zU;oC>jB|0-XsJK{j_quD>6H+P4>Ib7x3(3^u&>-c|BdhkW65a(ZK^GaoQV-m5>#P+ zEm*ttTGXE%ZC4{t>AdT*U)|m=`tyIO6u0chE23xj8}C^A?alrd=68L+7+rt%#`MLX zi?f$+l*xG9Ab(yfXIJ*xh_~_U7uWvzKJop2vs0fIZg+nl6LnVorfKM*s@cqs)Yi!s z$9=w8cv-#r@uH^lPkielvb{qbqBY;oU~=9#_07`!4n6pX0M_`U^w+C%@QG_TK4xq~)b+o4>~d zwX|(DJQx{VoqlI)N__kpf!8-#cQ4){{$6@_hvx3-&iy;>ciT(0?OVOODQwM@*atIM zi+1k4cfD0PJVNL4Hff>Nw`#vM^=q?)-2S$9b->jLqG5TVb5i464jw+m>r?-0w)c&^ zimcGdefl%G_uaMB_^&*7U*CRLjjyXT+)}zNt=~`Fu{+Xi0hdtNniESOtzEUjl{@Iq z%X~eJHBWoK{k^zaxp|q4y>07DmZtM6|5tvv;_oUq-EQ&S^AA5=49au86a4Vw>EDY| zbN+n)_*$0zm(@aTvA-9umi+nQ+3M!=XT$qtTjH19*cWeD9UH%KMa{*P=cfM9o!htn z_#!2*mZi@tZ=KuSWuT+T?{XE-eF<@e4@O1TaS?83{1ON;Z BRVx4h literal 0 HcmV?d00001 diff --git a/captchas/D675.png b/captchas/D675.png new file mode 100644 index 0000000000000000000000000000000000000000..67eac4d99eff52485048ca3fdf3ec1fdad052afb GIT binary patch literal 679 zcmeAS@N?(olHy`uVBq!ia0vp^CxAGDg9%95$LM!4FfiqLx;TbZ%z1m~ZqRB60fvWb zp8no%6t`r}p%#Ufmopo`lvnrVG^8D#- zcDv~@iR6&_F8;5)y5;-aKmXr0+ji>WL$kd5&aASMxG*p7{_dE#?#Ij4CO=EO{3pLA z?M%e^chSp#E{ohAVX!Oi`K(Ukv^ANt!pyuLu%DRYwC&Ba6&K4@uRba8-K90>->m<_ z`Ku@l?%Sa?;`%;x8Oa>nofRHR}Sr9UK0!&}QgKR9MlB6;zl#NO!rL7lQ1iBq;W8edyy%74e_vukgBAou;> zj0>KcuYVO*+BbE>X8E=gIocmQ4?pUk|433p;@aw|{P#7^bHCYtw?BJd-_7R{UzDd$ z4W84yyzspD?H~7@)Yd+ewDsoFetxdnU-5jU*yk?WkR;Ll{a4F&w{XuaGMXPP6C!!- zc}VGDz3SVmcJ_yU%CRWB5WC!NxrbtyV}xq7q*TerD8-*k+vcT5tu*&o{q9XF->m&j zysLMm&PxteZSCvc7j$v+jNTjT5B)ZGJ*3>n_x?=HxdqWBf2!;z&bcpa`S`Ws)O_=p rlQ-k_xu5r_9+_G%9Mwwgc$OEwFWbKSl(_>i0Wx^H`njxgN@xNA$Q~|A literal 0 HcmV?d00001 diff --git a/captchas/DCSR.png b/captchas/DCSR.png new file mode 100644 index 0000000000000000000000000000000000000000..efde66f782e5ea57e93041ff04b03c892b9f9aad GIT binary patch literal 692 zcmeAS@N?(olHy`uVBq!ia0vp^CxAGDg9%95$LM!4Ffdhnx;TbZ%z1m~bl++N0fs=E zS^xj1o>vNLaY~RWC@r64wR-h#0~W2m%8aP@wG-2RpS;Idt9DrE(1sQR9Yr2*4k|H! zoV~}`o3-}t|JeWQXVr#B9DJU(cjwONJ-soO>)YPNtkl1GI5Vyx_Euif>pO1W-TdrV zRX;iu#ce0U{`~i^c|Au;3Kt)rz2aurIse2PK6Q`Qh)dSQWWRY+;P)&vF}v5=T)8=Y zZoiW2qDN_K?)|>Z>~$vYPE>k$ORC$-1+rUYk<*E@{=>?DBV4f}SjUpkT9Ry4|-s$s#pJ__>_T zrFQNtoOzz>;#Q|eg7NnSALOx2@qNX{pS^yb|5~jB(KWl~m|okx#=*b3o7-HZ?s(Y; z0sou5T>8O2HSLSuD6bS$y?0!RFW}wkaKqW_YUa+654#rWK3`Ppv)#2X-Jhqsacd+$ zTHd{XVqxH|p4PaQ<^Jklblbl0|IoKt^S1cMjPKl=!uA<{_WFBM`;qOuAo1)A$@wpe zFFr1AiWAWOp*AbPvAcZrFSDQd<}Z{brwO#Fwj^>UMmR}Ohj~Q)rm$xBNt*|vz|_d# M>FVdQ&MBb@0Q-|OO#lD@ literal 0 HcmV?d00001 diff --git a/captchas/DJFF.png b/captchas/DJFF.png new file mode 100644 index 0000000000000000000000000000000000000000..79546647f5870ef630b80fc1108aa601a7fc804b GIT binary patch literal 678 zcmeAS@N?(olHy`uVBq!ia0vp^CxAGDg9%95$LM!4FfiqMx;TbZ%z1m~V%{7B5r&JZ zr~d!n^m&7jlk^9sZ+Eg6Tl$Ay7E4x3m=iiZ=#=-Xx9ZglRceQY4sB>L&{5>^=AaVu z$62|CUlG$%|9<88|NN#Cf0FG(!E@g{x2gV}Zg;ydaqXq^m2qEZ*gZK{>=dERZT&dN zM_wphB7RT!xwWaMzJ$K}uDh>d{q@iPw5(Y9*~` z*(S5tthxTt_HpvQs@^3ZId4B*_1*SVkG{i9=_Oy!ZHkdP_SVqAAI-u`?ub7+iUNp@00tx#PQwJ={=%h`r)s0R{pGyo?5@Q zFf;V$--~(4KkZxm{*=kQP0ER#JMH4TtdohX{_KSoFYcC=WlApzzH`2xC1+PySiXC` zoYYBM%j`9Rt6mjZ%zx}|RL`+jbf^FAiX*EHx6ZkhF@KYle*MRPvvN-*ZF?5|?-9q1 z4d;A(eL^?uZ(J^IARSg~_3Uohev>zz=QjqPdo*{(>r?A$zu&(4=KFqzi;0fcAJi@_ zFK2u)^^}D*pL6H$8$M^2|J?VfOjP;N+JbvqudI8!)8^%#Us6fC7v4R|ox`4}B-eT{ xY1`M`HHV%boFl6!_etYQ2K8bXm|Xrb926C-J8Zr66)^oVc)I$ztaD0e0sw3RJQ)B0 literal 0 HcmV?d00001 diff --git a/captchas/DPML.png b/captchas/DPML.png new file mode 100644 index 0000000000000000000000000000000000000000..a41ec005eba18e771870ba36aef25e0638715da8 GIT binary patch literal 688 zcmeAS@N?(olHy`uVBq!ia0vp^CxAGDg9%95$LM!4Fff&Sx;TbZ%z1m~bkSl15r)7i zr~dypiVX0xbf{RheqF)*t2)ONT-+1hEa`b{;jy)Lt6amplN(wLbQF2KISvaQq6YIv zo-KoHkk`zA7f;Wht96ihuG)%|e$#hZde$Gme{{p`7%p$k|8w7*kUiS7aF<@&-A{7e z=U$&Uw%fwfcwIz$%i1_bKUt5;hsQ1lWJF91U;0>j&DPhM*5Xl>Dba7k*TjGM)2Dyr zSbFn)+i8#g@4x(JR_oTPzJ;E1-gcjUEqldF+&sehvuJi@-|8(}_fC9OZkC?E_FcZp zev#>iBIC@LS3F+HU${AD>8geEm%dow;(zaWp-NrW=QS*qZbAx2ySA46l!>WGJQGy- zw&Pc>;l(b~gzjtKVH9=NHufNUt?r{%t{)ZQhTTTl6`f9cS&-zRvLb_Ff_buKI*V!7SN69)Rb!}t?- zul;@gl~vW`8Se_6#Y1x=Wb4ngd#qHc3cvC7%6Yr)J)b{yDQ9Z9Mul?C;nux;y>(`3%jxqh0goo_W6bB)`Lw7xDkA zdVX^kOupa3J^9hIzs9zvD?N8TkEmkPZ*|&{#F-f3Br#2(O|>PF3e1npWo{2&tU0){ R8kiCpJYD@<);T3K0RX+GI(q;B literal 0 HcmV?d00001 diff --git a/captchas/DTKQ.png b/captchas/DTKQ.png new file mode 100644 index 0000000000000000000000000000000000000000..2091aec9800d373c3e99a63a2d510954a229b631 GIT binary patch literal 737 zcmeAS@N?(olHy`uVBq!ia0vp^CxAGDg9%95$LM!4Ffgs~ba4!+nDh3|#k|D^A`BOI zy!!vY=vRY?;(~+&kE;ux*{ofqBam(&ka7C=-#X8=e_iq$j-^C6NlX)HQ*BA)Or#QX z|3ztorl3<_`sdo4g?*kivF344sMpV$GiRsQ{3y=2dUJ|m`GVi_aep_gxxV$s{@K#T zPd1!CD#P_zUfe5l^XacEv-V9>ah9slXzBBc5pG{UbG_A*6~|>?_pL<(>cC}Ru>)v&9im$5tlgX~VHL-HfGp+5L(+^&cbL-&GcG`Y5ao4RYm2q#% z3JWy6Bi3KN@^wmOHv7lg(6dL=+7f+4#MHBPW&K`Qwohk=W^9Dyw{2}vdt1{(zjpnV zd%fTB=FW`$471j~+FtN{s=0aEzpatm4pp6xxc+Xk&FQ()H>T>}-ZRC|G;b$g>sj~Z z|8HL1(sfES_V&EP%l8?HT>Baj@p;E3nZo_7Tlbml{x5m`&Qz}-d%~YshD}m*s135N z$$9;TN!_42SjhkY literal 0 HcmV?d00001 diff --git a/captchas/DU9H.png b/captchas/DU9H.png new file mode 100644 index 0000000000000000000000000000000000000000..4bd22a44a336b03ae12d58c01f21cfc725892c15 GIT binary patch literal 653 zcmeAS@N?(olHy`uVBq!ia0vp^CxAGDg9%95$LM!4FffI9x;TbZ%z1m~U{RBU07Ib1 z)Bp7|Wq3rEHZ|Qg-hAVI4nz5E)`_Pqd@n0({WiIlVVBxrp+g&540IHEyg8`FTr=%h z$X_Z<}K3Q$KSuB3He0|J!m-wUQ z56yow{A-{0drJRfi4Xe6%bB_?8?v0j*ZjTMZzFV(t5$nWfv%5^?%C}(kN%o2cI|Ta zo!4uleU)AmMobD{b9|4T{E_eC3;n-^=H6T(7XR<)Zv+2JMkbNdZ@ZW8`uZ#NbmVtg zEe*kIXH9$)l|w7N;$A&^z#Y41{let$C6BNA<#rc4PyAPw)jGBM@XGGD-xpn2S#V$; z#|`_F%j$RNYvvuTlJs4@itp~x7rR!iov)_7XXPBx)jxIHR^O7E$@TJ$x1H!SKABzO z8IQkC-o?rFT5rK$)mNW4R#!e>H2vkv@U{7^&L^gnhg_ZAzN;>BVtM$B=)~KCl`&hC z+-?5ZL@ZhEdSS8Cyczp^pLM1Bi;I0PNWS5}dDR2y`LjYBitclj^0ukAByuK3I7v(s cpqyF1D|FXy6V*fOfXR%()78&qol`;+06Oj@DgXcg literal 0 HcmV?d00001 diff --git a/captchas/DZQW.png b/captchas/DZQW.png new file mode 100644 index 0000000000000000000000000000000000000000..0bc471f84cf19ac4682f81ee9da84e39dba411e5 GIT binary patch literal 753 zcmeAS@N?(olHy`uVBq!ia0vp^CxAGDg9%95$LM!4Ffi@#ba4!+nDh3|#lG1F608pc zzW$A$8Mj7cAwyh5^||+(KF4kohr=qU1db5Mi% zDE})rN945B|Ly<8{pLKaWdFWlq4D|Ke?4v9234%qDy%!b)F4y(`}(3hmwgNNMb>Xg~JrR?hjdd-^&C{nKK(e)C_R*?rq5%(P(hX`=)^ ziA@u?Jvv&QmUgdy()z3i^XBEQ+WUkfe#-0jTrZzq=Lu!qw&$<8vCf-CiEE|h>s{j= zGs@4`_Wyt6w>jt7t>>mTO=p_^<{Y!F;SSwf|EX9)F6_6y49=B9pBvRF42Deuj0w*i@UYvC%=8aylsBlVbPOip5L2ux5@YP#xnET z+iko({ZW5Oz@1aitloWmbLR5Z)haqkswIDKncVr8n*Y97adP-qu9mMGtGAwKYU{rd zaiFmI-;ctKPZMkZKKdK_QIgd#N$shdN$}ljv3Ao}Eb;bhk|%S`KRs`y#-Dd<_h`%P zUVXo=tmMbTa-ooi)yt)-r{DiL>pa)O;yIGqm6P_#X5Y%UTB6_jv;We9z+0F7A9xO^qlrimpf7!cjMu*S0%&Xj&KKYO6VHFNO`kuGHF`oyRlo>o-{an^LB{Ts5?(kr6 literal 0 HcmV?d00001 diff --git a/captchas/E34Y.png b/captchas/E34Y.png new file mode 100644 index 0000000000000000000000000000000000000000..e8543e4ef2b5c37cc1cf0e3a54896c47d0dbf588 GIT binary patch literal 686 zcmeAS@N?(olHy`uVBq!ia0vp^CxAGDg9%95$LM!4Fff&Rx;TbZ%z1m~V%}l{5r)8+ zum9_B);hR$s5l%be%t-bCT}a_n@--6txK<2d9MBY#g5T-aw2D9gp>t=bjsQJKlYolYWqulygu*RyppAlt51YQc->r|Wp!%Z+mkkL9K@IKzxE0G_#!xJ zUDbi?`A_*?uTJE>$MxRl=fC@R|CF5BCe(hl+`(RU@72hu^}cqxaqY_w>7Dku{WR-l z+ar07O*S9e)GM?cXE!@$3r|o2n1tHMKjQCf}cTcx$s< z+_@8{uTJ?Tmo4*qJ=?mqCe7u=8YS8_vX9!hZ~WV|@sGyumb1t9ckS44uBLFd&!1<) zyYA15*|(_VduaCI+}6mpPX^O}=|8J+6W)?kda~8-g_YEcg-_ltnyPfIW5Yc@-^1)H zjNNm7|NI@~W3%>f^_t2%v-|6&*?w83bM;XouhIR;XO9gR<=@-wQ}D#Gv)+xd)-w~RcEYk%vN%Hc)QBTk7r~0)4S};8RI9|Ijmz+ z5KOH7%4GF&jf!n zM{+N-u=diN|2yjxuY4+g^n2m9XrF(7gU>~jPYJrW>ej!m+Zkutb{VWW?WcCN{6TrV zZgF&5>DlWWdF-5*=DwbpIJMrc-Y%v7-{qd&v6I#_uD>PQ+;{rb-KU=~9w@immcGi% zqN9J-##^iBf8Bmpy&+1wg!jkJ)fcwyk}lZ&@X3xi+nVI_;=5T(?w|TKYwNYQV&0zR z&p799lnQ^j`~S}O*LKVQDpgWh)ulOASo~UVK;HJP)%#uqy}EsR+w_tN-u3er+x$HD z`&*5mnNUn<@Ae4=M%}YFuG{xhZ*@r0%G(tO6`AL3Satn|B=_IPad9@ELQ+Gc`)x%R zeV^91O~Ud_=H#fJm_6TPTjp6_NG#V048C(p%0Bt14Oi2=f7_;We3|gvKTFUg`RJdi z^0Hqd*&g?3zBApEl(xp(+_k!Pg8A0<`A=R*9=7?gL65iW5c8F3Do;zzKgk?m%+`5v zwtn5!1xwH0eqO>TwcYRDlb;t1e!XPVKXLxX-OrkOY~gQurq*i~oPW1OwD|tkzXB2S zl+T=-b1;8j?WPmO7yM5Z$L&_U{yF0E-Q!MYcbwNQ>lOX8;ocSHj|Tl!CONkz2G#gYi*A`rfw6<#JITZw?A{SWOR7Te)@qJ$;AkDG^Q*(*)X7TM{`FDPtbV ze=lC(_}Rw3ZpUZ)n3?bYJd=(}sw%wwaIb5`3!zO@uRP*Y{`2nF^@#Jr{|%e+x5sQg zxXoJj=+X5X7kIwCdMbIpvrc2AU+eqe(toXv*KJKhS?3f__PH~SPdn`CL%Z|G7x%}n znB-r)XUB$hRVx#NR_j%Kl-m@-jPdlyq5obfEnZtj;q6t@1)>6B?3qI$1f zYj4<4y7ctgO)a}xr~aQ&9q6@kPqyiuXyqfZ$)%F-QkUyj&;Kub`<7i*qomTEy!l+p z`7v+*pA7$f_kXI=O2PBZ!K?gR&$<_MJ~;5GL}>eN#c8WGbB=QD(5%W?e)4(dg{N6w zTa)INB=9Ym%{S*s`@zi}8?@Z_Ou1C>py_$S8um)Y55bCs6aN+Juijm;f8o_9XHM&e zI3Jg)mDesRc~Sdw?M2zhcYBU!Y~A(4w7oy5<*SYVbM>@r?zMiW_O7~RueFJ_*S@~v z=Z3JEX{(#U?}vPz_~xJG_ny~x@>Xp8+VcEQ+T=4C^M1z(`ui+&FIrvAIs3tk_Op-m zq8$4ly=K=qxkDweIQHr{uC1c`A1fZ&yKbY%u?;N-I*L5r9EXJtQH|MQUoG|O%<@%k R+Q5{^;OXk;vd$@?2>=AGJhT7+ literal 0 HcmV?d00001 diff --git a/captchas/EFZZ.png b/captchas/EFZZ.png new file mode 100644 index 0000000000000000000000000000000000000000..8ca41976501c1c65be6a49e137104445bec5620f GIT binary patch literal 730 zcmeAS@N?(olHy`uVBq!ia0vp^CxAGDg9%95$LM!4Ffc9jba4!+nDh3|#k|!90t|sM zU;o$7v{P89p`ux6v%A~)`N~!6xMpZdOuoHs-D{=ZZ=G@9$Vj@`?gE8 zW~x=>hm__Tx2YTK=7;^S?mI5`a<}+VrN=UAZ^M4PIr8PMUEG{!C(pe&tgKtnb1~8N zTpbsm`IEd5ZJCOIi2Sc1i7~&{ypDR<6_mJBFR4#7_-diH=3%J~($jzF>TbMa@Z`b# zSY4%~M`9m({GTcrc8a&@cE%Ic&p#%wUOG)UEF$Rm!#v)dzn{;$o)xNVI6v>itYfXb z<&RqSZvFPi_r;UR-&y1K`ph|_w(p+azLM~yPy1>N7=LYB)f8_~(#^rWS9NZsOV^wb zS38-O++EI7wZ*f{|B6C*N|3-?$)p5{C_2ZgC{)&J5U4mvu%|HGsPHg{P zQK#(J-tUcao_HnB{dD7G^?lh@`P1{ZPyO9crk(S!{Dc^LQvAyjnUwE4-sBr}_2gWW zo~rboclDa&TswQ=FFR}g{)k-olI!;dmOU+Ym2-CH``rJOW8eP1{>j(69do8%DDC?% zd?)x&p>z5DoBDH7-8Y@8|9>gvPqs0&5(Xq`{bAhjGoWtIMg4YQnq}~G^>bP0l+XkK D{76eK literal 0 HcmV?d00001 diff --git a/captchas/EJZV.png b/captchas/EJZV.png new file mode 100644 index 0000000000000000000000000000000000000000..32952d21283ea39358df2d9a1fb6efe5ef8c3aca GIT binary patch literal 693 zcmeAS@N?(olHy`uVBq!ia0vp^CxAGDg9%95$LM!4Ffi44x;TbZ%z1m~Zc&qg2*bk* zFMsbh+FNjJ;Q|3Cv*!zb$9`*1h+x)wYjVDLV%6`?dyKVehlLJpXfe=HahkKb#g_ z{eA88>&A23rCO$Mne^h(-p7KuH$rZ|INuSz|KBHr;*)vp-1SvQ+C}YH#dE*Qug$8? zotL||ii2C*+5d=LN`#HknYRnNzw_{K{ow!ZV`%D&A4@lgYQOE-!f7d=I`6QH{L4Gv z&vumW?v;CXCUk0IqN>ia$5%~u{hi%aAG*WjhbCWcu|v?w>8mHHugUpbq*1W&RD7tU z@U?Tl9~}O2w>@O}{+7_GHrm%pt>>ToV#_&i)vCw64&R&ZClzL`+);Gez1H?fQE9|y z^|cdCo5I(;tx?@M_r;XC{5z+|zyG(x$X`V6+N-$cQ?t8vXi9%JJU64z*!v6HOIK5O zy;m=U9;@k_K0aFgdCJv0<)#tq3%8rkR5gFmw5%v-l0El)r++0$mKpy#rM4vPtvU2` z{#>>fS0DC@t^K{1#rtXY{bg1u5l%JdRy!?Cig1#cCeWtZlE|4z8S{wz?P882<~J7V Q0h1$xr>mdKI;Vst04mWxx&QzG literal 0 HcmV?d00001 diff --git a/captchas/EKJC.png b/captchas/EKJC.png new file mode 100644 index 0000000000000000000000000000000000000000..4ab89f17d0b1158a6a4fc0aab63ee9e5c78be58f GIT binary patch literal 709 zcmeAS@N?(olHy`uVBq!ia0vp^CxAGDg9%95$LM!4FfjFax;TbZ%z1m~Y*4d-h(qF| zAOF_Ni1+yDPFrU3{8`(){D(UVcD?zJ1Bt5fbikr01%U_feTC`#wK?c|Xi+{_Dzm{fWzU&DK1~ z-ky3S?)HbY#rbX@GQQa4_QvFK*s=Vd*VDNC;atx3@23f{>6p9BJDs~GCv>iKZP${p zi;29J(_KQhUVH4iW1n|Puczuy>m3&o@5=r?dznA)`Iermg-2f3E_kQ$C{F)P*6HHN z@;ya-Wm<{;vvtmM9qtQ!Hu>YEC)P$kA|IYwCFl8L=3+s+VqEB zluVPfzZ0TGW-MLx)Onh8p6vXu4`-JveBSo9)$USdNrv8^uxm%lmfwBg-^!SudNoS< zeBSZ5`|rMa$s}9cFZwMb$y)xkxv;I!&dJYT7A?N8p>4l?@tp9-7uet1JNk>v>zgf5 zC%ebQ^Goc)wz9Rg{Td2=xL^CYkD)iSL~qtf;OE)t#(vFy-JrOmh1NBt9!$5 zFVl~+No^8te>dmP+22}4VP1}M%i}~pR+(S=z2QmNnizi%g5ziGn0Zi~cE zlfPeH&wY7MdWvLre{0@asoTGPO#QOx>J5$SzXA&nX30$N`+GD0W3qF&*)#k7r{6xQ zn<}>^(Coc_WcB&i+4oo9et9~hYSpw22}k$q%Fl|`;JPb6N!Zllw1cR2j$qDzo+~Bg z&aPRaf@@}+WnaE`yXJGv(+26`(VWM5zX+t{7BbzE)wQ)&vp*gsJF8!Ka<~`g>Qn80 zo&7*ABVRR_^u}v*`~%}R*Z4JEi`aUtEc8g? zt$vC4vYj99<=b9;c%S*u;ax=$$*Z#L{i^NWJy6YUn0{!=ymd1^&awy(RW01jXuFkh z`9pbUAMxYD7jN@^3E600`MP8Fae2R}*PC0<)}-fWr7ScKs|o#bq2ABw$fc}5tGKL^ zbx#*nM40n0YR~K{E;z08zGLo2Gxvud_%=SiTao;wd`*7Z%2hm{ViosJcprVWZs)a+ zCvPYFs(jvkNHje3%%s&HLuxnA$k?S-5-~A4^7{FtYm&RH^L}xC?VKZ-JuUb*i(#y9 zNh%Mo_Q%JfHYOY03(OjOEi;eSE-n7{?`3@IQTgwBpHI0=zP#|v?n8h7N)?*yeA~16 z;WvJ}p5Hm{1u2}_Yu4OfC-Np;E{Rp55(|=`(r_S8F|fvuA(uO}Rfzm+mJp?>^=gUsKceV&Cd1zm1PgoE+u)rl}=Y zEIxAK_bNk1`5B(|2Aicys&l!5=U2>1jEiv6XpoftZ!BE3Z}n9(=@^R}4!3k)@6tPvV}FtPfVH5Q3J14P3oGZLCYD6U zrVR>?5fc=2JOn5Zeq>(7aDVxfOFy*!>xLZdxw>%5rFB_5Prv)Gu;yn*w&x}hv%Vv1 zrY@awNa?9&T6y{0%jey9F8R61|EW?gK3=^v52{O@i2Q=hs8DehS-BL4pBm!3ZB z?-;pyXrYi0ITWbN@O^q;kJm8y-7?CBEIr#B+*sVrG_ zLtW=!qGY(X`L`cEfmLdu+oz_ed6$R(n6;d_Yj*!?!}r^_-p@!#k+i>5xz9SSc2T+M z!h8RUkM6176?ne-xn5o3&ElE+mfPLiPoe<^=k%DOh6J!huwvW)Pp|6jd~ck7(FQK;_I-FNy|zZ96xuzGW> z@~P(aAdO33cY3v5-n-DY@R?-InPQ#uyS0AvKG?PH~q$HzBZM1Sk5?5+5I#k99|hphi&_GOFre0WrQ;GdAe)rU8q z$b>R`KfJAC=^Vjzf7v$?yLf?X+^ykT1;kvamykN`Iq&+e?Fnx)0VZz-Pgg&ebxsLQ E0JkDnX8-^I literal 0 HcmV?d00001 diff --git a/captchas/EYPK.png b/captchas/EYPK.png new file mode 100644 index 0000000000000000000000000000000000000000..76998807967dd87c5a20a86d2f12adf12f3ea658 GIT binary patch literal 714 zcmeAS@N?(olHy`uVBq!ia0vp^CxAGDg9%95$LM!4FfdK@ba4!+nDh3|#k^Mr0t|u6 zcm4l=`W^Ew4W>s+9^AaUt9YK4sGv2EA4lf)d)1TEexH(SxRw&(Br#2(O|>PFGm%Qn z|C`tuZf#q;b=y6AhTUgZU!8aBm-e;4sS$_ktRAm?>St4bv})e}FXoT7<+`8W`D9hu z{iV&FmoJ5_dAoo5elBT;Ct~*HsdM=IPtJ-u)KzMAwZZ)6XNhI|cQS`Px~!|##r^ux zmf%%gmH%G0-~Agrb=9h)Eurcw%WP&uM%&MQbGx#)+ICWD-_-g~a+aT`uRnN%(M3;s zdm{g~8NWMKjMscw(scYo=XCW}cm8z-E9dyP?)}a+ncpH>KK_|P$c>G~ zw|@O8_w!=(pKy=$Pk0^8Z-?)Yt=wg5SK!d3XU^ki*?q_9b6dRC8;Q(%xg}fIRyKyb pEOcl?i-C?JHJBawhc9s)Tj+Nv0+>b_JYD@<);T3K0RYSML=pf1 literal 0 HcmV?d00001 diff --git a/captchas/FAAS.png b/captchas/FAAS.png new file mode 100644 index 0000000000000000000000000000000000000000..9a91d3f47e55c980695be20ff6a666a65178c771 GIT binary patch literal 708 zcmeAS@N?(olHy`uVBq!ia0vp^CxAGDg9%95$LM!4Ffes{x;TbZ%z1m~V&7~70f)d9 zzy9y{kq>h15YU&dNk4YZ)_-bPRC0~8%#D(}+j1vX{hnOQFl%xmXJUkt#5936)fNhw z^_%%0>@SU#|Np^WbLQb$yCXBr|+Xxo0LHXX4B&<{Z4M=T6D5H|FGe%{{rw zr}EUwSiy~z{}0LjN<1Ze{)_CluB$r&md<(o_hSM31GS=)zd~ljUESgQr)VMhZ9DdpVsQ-E2Mm~#2kq@VCJ7$&5ZZG%e@6EeE zc{QJ#{fvBAckZtKE$8D^cONbhomuJ^;i`83=*t)(^Xcp7p51x8YWq=63G=!O?GIYl zRDPbx`#OAn*UR7!RxBI8R`OjeU-Rv!<`2FJ|J&kkXE2P|2& z^wQ(ry)SIT=1#xjxPH5O$&|(?`S*VRdb9O*>fZQzPaii{{c!JJbIYZ^n0?IS4}ZlM zw(iA-3(^Odzuudl-Els6d7Jfvjtzd(&4R9-TNchMUhlt>H|B!q>ML`8@B6jhpVyXi z>A4R^_n-acjD6odd(~h6ovr*8Qs02KIDIeu8}_i^{)_cLC#*_bwPD)&|Cd5#H@7ZT mT6Q;Cb2^2QkCJ?j*!yX5pK^Qi_6aa`GI+ZBxvX>nPWY6S~+`ZpDrQWLlW+?G*Q*BA)OpI`nm?l6y=AShA zhIQF%ZGVUU`hPk5rF%j3=cn?f=dBHMpTtETmP*)pqkr=RIBfrIY*=XtUvx?&wH~f_Gr^5`PLVHFP>g7ylw6AbYHVsZTfPB9No&# zryWZc1RsC!Z103D@yAO~d0%l0h&XS@&M#q}Bl3c!e^1UqYn7_ccE7i+&%CI-vUpZD zXZ*_o;fcF7?5y?Q)l|PXT|F!5(5{cp2H6)*d7fQ#U-Z)9qdZ&og?{@lv-8K(=Xc)5 zKK!GnSoGB5$Kib8a$c^wKrO#J&+e|;cWUnc3;vxv-W-R84sB>L&{3oYv%}u_=e_mz TGTYsONsPhM)z4*}Q$iB}j&2~V literal 0 HcmV?d00001 diff --git a/captchas/FNT9.png b/captchas/FNT9.png new file mode 100644 index 0000000000000000000000000000000000000000..ce1933bc0442d4035833ae34d33be145daf456f7 GIT binary patch literal 675 zcmeAS@N?(olHy`uVBq!ia0vp^CxAGDg9%95$LM!4Ffe6#x;TbZ%z1m~c2Ki{h{MHW zAOF`&$`?p1bDib%?WE_O*C#&)d2N!`3q8F_hkxbP_4oW8ij8y>dAvCe3mw|fVn7{c z$NPK!4+6a^|1SBzHM?Z#brHF5ThgQbw+Tuor7SvJb^G!?0cD8?r58T+`vgSDf8BD* zzHI8eZ+|cU{gwScrbw>u$eoJF!Y``Q#8U&UuGsot2#zzSgd4PTYqLpLDK!E_8 zbGL!f!x*qXJ43o=J1uf z8s(B^orkg({Vr;qcaoQdCp&VQ&3lhIdmg#ZKQ!lt=+?{bjp!R#&d>&-L$j#Oos`*gVbTZ>?Tm>~O{_BKo8L74B!8um8-5-rRQg z=8AbGzneqP=FSuKUMVq6piQ+Ukux#EiE`#2hH43>hD2S5X~4wC;OXk;vd$@?2>@24 BEx-T( literal 0 HcmV?d00001 diff --git a/captchas/FP6Z.png b/captchas/FP6Z.png new file mode 100644 index 0000000000000000000000000000000000000000..1a6a3e6a6a469032d90fe9d011bf122e8d6463b6 GIT binary patch literal 688 zcmeAS@N?(olHy`uVBq!ia0vp^CxAGDg9%95$LM!4Fff&Sx;TbZ%z1m~Zr*AG0fxlg zuYT`0+Uw9IV4ufy<{jJF^7319lWzn&dt9;e4W9h&+vL9tUwqnBTM{`FBb+3r2~dN1 zB>x*T$EE7~e|Oa%<-GLzjLw#C?uYN0?kjuR{`LK#?cCY_&pik~c75WU;D@tc@BQ=h zQMSGP;z#^OL0^tmzyEuA)jFBi-{!0Q`>oviF5;#7vg;?zmu-;Isz_hEXJU9|sE7ZB ztUo{JU;lioPhi81)l-h!&k2otvGT(UPa*$0o5yz~cfJu5()lH&opvw$q7Hvma?tHU zuCS@4f2S8{%~_WDGlyABIjx90Y^sK$PSs5Rp8CC=Csy_Kg}yqv^1bN1oJCi(wpG24 zWPKaaoOOKw6^{cM( zyneK2OZnIV5OA z@~VJsiF3E?c^H?d7(KJy@UztG>??mn4htR@I@DdR$m7icWNc_L(4mz1gZY==x7B7b Shf9Gek-^i|&t;ucLK6TgkveJs literal 0 HcmV?d00001 diff --git a/captchas/FPL3.png b/captchas/FPL3.png new file mode 100644 index 0000000000000000000000000000000000000000..27dd7f32d088f53d361dfbdd4649de81fb141201 GIT binary patch literal 649 zcmeAS@N?(olHy`uVBq!ia0vp^CxAGDg9%95$LM!4Ffavpx;TbZ%z1mqF|XNxfi*Dr z>%Z_a@reRTA{hy9@~!f(^GZ}RF)s4kdQIu>+tuG0zWB7Mwj^>UMmR}K6QG=Ve=qxj z&C4>Q{z?AJZ(8=@V`|hoL)*sH^QKL@e$M-0s5N(e;b#4}<+a`I@m%$@e?2*0RiyWP zY0Fo;+2Ys#eb_wj<~8G0TC#_&<{Z?{u1~8>x^1Oj`Dg9nUzgR5ir+f>X*C*ezM`>a zT6bYx{PvdHsf~wMYgyjkn092!+1ospH|Knm`uwcn^J=ZThZjB1*!p+wRj!RP1)nVV zzw&gi$hyOB|9o$s(w{w7Uod9Qj=WL%vhc@-kDFslO0Ek!-kQ5HYpw46mMLn23*0x( z+PKl?`P6gl*#dQ@noF-leP@@9j@xYBTij>n~6HcpZXzgDdC zE6{q^M>F}Uihkj$x;h@m=lk6KnvpPNURq>gY-Gdt>J=CBZO-S|eA{%cZENvi8Ea)` z&w0*&danNa7}{~Y(fRmn``(I(!?l(-w*S9S^!e(Ox6C_gXSXc7zcK3Gl)~S)a#nx5 z{iP-{{+|28&)b~OS1vXFVr0WFH_d*-pZP-dA?w&H&MgfHEOcl?i-C?Jm6(s% ZZ#!Sz9piO58kocwJYD@<);T3K0RU6SA&~$8 literal 0 HcmV?d00001 diff --git a/captchas/FUYF.png b/captchas/FUYF.png new file mode 100644 index 0000000000000000000000000000000000000000..cf1035dc6a379d8a3211afafc4a0a33c1a297779 GIT binary patch literal 681 zcmeAS@N?(olHy`uVBq!ia0vp^CxAGDg9%95$LM!4FfbK(x;TbZ%z1m~Zc&qgfJ5Tt zm%sNHRXx0t_{Xtj&fVTQ?{~Qh@hOHaU;DjoqTBD2c8s;^hlLJpXfe=HTZcYzXSFPF}dYi9UR$@U1Vmqa(N$pY{|1{-R|w|k+}~O*Pi#7yEJw8z2DPn6DKZA-8yw!<@>$G z%yBC#f7}X7+^D1R{5A)|Zmm_sZFF zBIIjdFzz+%yYsov_RXHq*b5u%=8CUB<$mhl(>Jels@E*loVHrl>#q0D#IN#6-a~C$p*Ds&;Z{ml-rI#Ybe`)y45x2^C z_u$}qBd^Z&YWyX0|8Bo8XQ%Y3JJnF%<;S)S>y+eo=!N?~-LHK``|{B(U*>9y>Asm1 zAAVetyZiU8Gd-Jw4=(v^_Vn(8Uw4u@6C<1?rU|sEwj@%4`H`LF;;UUnS8vP*CP4;I LS3j3^P6hhi(7?JpC;e3kCT|N>eHGplUH4z@_l36&4o*! z3q4=udm;42#moIOUah+BJ-t5aqV2?m`3A|o^HwRJ%{MJi-L`bYL(z(_pXQ6qSY~7K z{YPkG)!id!H4^<7FlYUI^+L(SR%d}><%6ED`;1S9P7M40XNLDB>-VLn|F3wRRV}rs zNwg+PKK5Jx?=>G@?YZZ_#B6WPh4od-_i*dP*s*Q;&*K`Ncx!P}sL`CYa?3+%uG}x% zKlNw!=VHz|8!zP?of8+Y-=S4jazG^F@5$spN6c=&ZOfb9wqH#zVzGUZoo?@KyZ(x8 zUp7^)UsS-bsz=!B#`*BuwVb|1md+ct`RV)&aQ3NwC6!mcb*5s(`b6jEtlR28mP=dh uzpLc&yZ-;BDQUa!F7Tr;sbHkHBlXS?tq(mFN|_Bz*$kepelF{r5}E)?Ut?SV literal 0 HcmV?d00001 diff --git a/captchas/GEV7.png b/captchas/GEV7.png new file mode 100644 index 0000000000000000000000000000000000000000..ff8beafe298d9e8e0d930756f727d1bbab17b221 GIT binary patch literal 724 zcmeAS@N?(olHy`uVBq!ia0vp^CxAGDg9%95$LM!4Ffh&bba4!+nDh3|#k|D^A`F2s zU;o$7v`X<5B^=ySEPk>QR(Q4KJ z-??YMe=lDw*=9KPU!rcd#m8x7lOL58-}>@S%}(p!yy=JTW`}7@_C4LQTz=D!*V`)i zC4df&`@U$(_RIgj&aM5e>-o`xBph~wntFt)feC>Z_kSrM5`*_E%O`GM9 zT^B39BE0V2qQj4teTj^gp4%$haP|9yS09R<^jjsxxcJv;T{Sh#JGM&ZMX&0IQuDQ4 zzkLpH&f55DwbVI159@oUR#mDWxn>+6y8CWkMflY>>wT}qiN`;*D&ae4neW;XTA5#4 z+T-{9>eA)@acj>%NHn#aUnU+mb-U=J`KK0bpH#d{YS$fwyArQ^>vvf+#m+m`wC{u5 zzcTgQQ0G5V+CO$psC>b{^3SS`|D+3}rm_FMRk!T*r$0R3f0f(VIvt+XTl%-+t=y8u z@_l(BSAARCN*|rcu4`f9v-~(Oc&?f02ll^y{*QCzzjIey=)ZU2)ib7T6?}HduJdwF z=RTGB(st=x!iB{rCBrUHI8mK!Zk79JUS<7<*q0lY7v_D*-d@=K{Rwm7(dP2ETXgn^ zuW;B5n^a zSib*%>f55?IX#^YQ?{BP`xBp z33p>swyAN2{nTHew5zK!qiWT; zDR&~T|GM~7`^wLU6XXK4g_=U&ze|lg_OAZjRYuvsWwPt!J|0~4<>*h3(sdnn{|lcb z7iSh0uc=zn@#%Y)tmrb|pVdeC=AXQ}`t^S%t)J^Y99;hDr}CFgKeipKWbx;0YPvcn zcz@kzANLE%q5f}^)8EP0S~YiAUTX|_n|n3BZh56x-7CA?^r}xE622~f^>!P(RYvfS z54X>hyj=Kl;)Xj0=T9DI)yqk`zQ%Sn@5RaAf63{c{$%F%*F5ZC_T`Vw$3vgREmXcX z^Yb%@>0fR3+1{D=?=1Vit%YkQOquEMujnwd#rbEJh4bgeT)1_6<=#X)@qbxHTcj#? zOuK&A;M>lW&EGb*nv0*`lozwCLVk6o$NM$g+ZX@(b-AcbKKaGNUjl;m%Qzy^v+Qo% zyRGsg^U}$r*`X@?&TYs&*>X^-BDd>h&+mmUI6gY_sc2pP zzu3f{hOHMo*%tQuY`n8z7x&Z5(%#*Nymvf$_`E_>|PE-hv%zoZYC P&KW#i{an^LB{Ts5+IM`q literal 0 HcmV?d00001 diff --git a/captchas/GSAZ.png b/captchas/GSAZ.png new file mode 100644 index 0000000000000000000000000000000000000000..7ebafa9f038b7cef98cf36822c16a331ef722b77 GIT binary patch literal 728 zcmeAS@N?(olHy`uVBq!ia0vp^CxAGDg9%95$LM!4Ffh&cba4!+nDh3|?M;geL>K~% zO#lBsJ(E3K=M=Y^%HGWv-FGu9KWDAoZm)bUZP&c%$N%IlKmC5A)8R*M3-?}c;GVzj#D+`rqQ$4y*fhV} zDCOQ5p~f3g)jNOPr0}grYqWA=)=0%LejP0f6v`5{kLjc=<5hw=L^=CpGaPd z(k@po?_9O5p?b~p#urjeK~~SM{EgpN!@O(TwWJSMd*5{2d%Qr0f8qA;%q8#mmc8qd zy&fG_+Q6HA?E?Qj+4rA!UE6iw<5vCL(C80V*A6u**yWVHeR|~38&UODyLW7GTUT<> zpMNKB-~A^~{a>k-G=BN#vebLqs(Ev(V~_9J7ck|6cUn#azp`A6=$F*>6WiRr{o6C6 zrYe|mk-U@ntb3Pr-rMzU@rhy#e*fj`l*=DB?9vnda=~Bz%U?EoJMSNwg2va5Z)5V? z^y70yP3M!S`){fRN;LQEO?$UHK)&3zFk83$RATn>7t`ERcB=SKd{wTqnNRK6ceTs4 xp%E)x{w>p0JS?Pi(K(}5n0iS9mcD+lZ%8(};5E-n1ejtOJYD@<);T3K0RT4GRgeGx literal 0 HcmV?d00001 diff --git a/captchas/GVPA.png b/captchas/GVPA.png new file mode 100644 index 0000000000000000000000000000000000000000..eab7d072a09b0a3b479995f297a92febd906aa75 GIT binary patch literal 728 zcmeAS@N?(olHy`uVBq!ia0vp^CxAGDg9%95$LM!4Ffh&cba4!+nDh3|ZNI|?A}$vt zKK|b?BNwn*RxwlWmH1%uWkyAm>tglSMHJQT0JhYMAkRVM-%s2<{aHN=bz7ES8Yq3`GI zg$-uUlZwTbg!A~WiqehJ{4P0LX4NdE_gwNJTfeV*cKC+0r`7!9hUKiSrF&PMy}oVM z{k@4cD^8V7pUtE5*7Dlj+DQ9&)56&iy=8SLrOr3b>HhwB=Z)RZv;G}yeXe)&b6w3; z+X>!6VQaSea|gExK7Mqp>fg_{(~sLUzdc$|_sw5Ewe_Rq$snf))6Ey26v+Ijd1WlI zSoHOj=uo@ri|H!)j@Ki;`fuTV?w7mspb0t|s3 zKmXUyw8@!yt3Wg%%b?Y?7?CPVcQ;uiOV$-}e|DN@NbR!)_9&e7rLWefA7*L1V z0W{a3=kbr9hxT9jsxmiy&CXTluiwA_YX7y|W1AMHzcx;ey!yD5u*kdUoH;ro3WV92+6K+Uj28jkPR#JAd8^`6~0GW_My> z=#Let)zW!kqC3>LxFzQDok|ORyxz?E+uoP2QpL(2Cw*JV^Y`SMYf5WAtrGiRR6K(# z-j2Ptc;=_SD;ShfGL zzsI~)ZE=aBd?hD53X6S87vyiKZIs>FxGIs?=K8<5(4Wnss+U7c4Fi+smF<$+CC_y| ziG9U}RjgZ9O+Rq>*6zu+I)(;1)Yy?)DcN$>t*Hbp%fM#`u6Hyp?lk!=gY0Jd>eg_t*+T*=L+F( zm#6N}oipDudFt(&CkACtML$1f-cx&Q)>~VQP&o~A~!`oVp`SA~K7NMRH( PtuuJK`njxgN@xNA6NYV+ literal 0 HcmV?d00001 diff --git a/captchas/GZ45.png b/captchas/GZ45.png new file mode 100644 index 0000000000000000000000000000000000000000..f9d094338fa3df6596b88c5e1392717839800c21 GIT binary patch literal 731 zcmeAS@N?(olHy`uVBq!ia0vp^CxAGDg9%95$LM!4Ffc9hba4!+nDh3|&AinP0t^=g zp8l_&X%pe3%u~^@@}1eL&n25T`c_8d+|8W#Tt0Kl{WrW9j3uWDw5hfvawbMNNl?c8 zIDIc;;j+xE{a@;x9ew%j_N|^|W?S*S*f#grt4>cwuGr+e`AXZhX6J=+zBbjmY;sp} z-j~m_a&^60wo3IsJiJ+4Mli`C+C09_aMJpX9c|N6<;o}9?Tx)4x9>3cKkLlUnW zz31XzCAB;Bz4oH#tG?_s*t>R1@Wbh0Q%j{*)xV2A$*H|@)v0dT9lO2=2p_t2`+4O& zX0;E2tAAJ&EpGdEtLTz{>qYVR?4hh{G~N{G`}-$dn=$X=?hBIH`5VHIvsMLJJ$bR6 z`{hl)cT-Hv7lhssG*2$&`}Qg7{-2kr7cTz4;d?faf5Oj(lJ%>;omRZQHrai9edgik zC&E4+U*ebuRQb%@U-sZRQPv)>Gclpt)^==Yd-G=n_bf9_z4Z@^pB!Y$-Zr&Z%f`ZI zdjEst**h8~m+pxynGk+(o6tRNp562A*2w2xImWYpvhD7BO@>>!YA@vfkiE7!|K_dj zx9gea&n)fYd;N*q_Vqcx>mik&>Jlng;=@BfZoaonNdC+1;#V6#9l!4~KX`tv(*Fv< z#JRGkPqW7CzNvC#duXl{->i*R<-h;+Z2I;2)ca*$U(f7G-nJzE#afql>U>NE@=CnF zS#E1=eHSRd;8t$^v`gae@1Ix|$K%a$Sm@A(76Tnc>M?(?pOZ3O|GReW3t*yU@O1Ta JS?83{1OQ=&PIdqQ literal 0 HcmV?d00001 diff --git a/captchas/H2U5.png b/captchas/H2U5.png new file mode 100644 index 0000000000000000000000000000000000000000..a16dab153196be4639ccbb57378ad1837ebaa576 GIT binary patch literal 673 zcmeAS@N?(olHy`uVBq!ia0vp^CxAGDg9%95$LM!4Ffe6!x;TbZ%z1m~cHU|O5r&Jq zUj6@XRNGM{$kzVA_FLPTsy8bSw5=@kEIqYJM?PrF`J2oaY$c}&w5hfvawbMNNl?xd zTQMcbYo=|NB@g%adAVS-k6eGl_(yXo%fIhU)%*+o1<#R4e{)4I@j}(eE|$aV!k>5Y{aeAZD*4o%YdhQ%4;^59MQ5wmoZa?HyKbuM>!J^$+E=$FL^!X`+?Tj} z@%`kpdyj04e1BH;@Z^kLx9zyX^U5}V)^Ge?|M_0s)62!}X8h6hhV?8hB8iTtPhQ^M z@o@W`87J=LE1tam;Ag+nx>d*a^LcAMaXGz7<@^dWb)7Fpy*^ntcADKj^=Dm+?9H7G zhrZkXZMQ9|c~s)gHevHxk?J)Xz0U)$T%BJh&iuS-S7^lSWp~=V?^IuTvf-8Vg#XjF zxJ&F<^yY7?&nkZ7Zw<4{t9DHaSH?d;6_D>M?xQwsZY%{p_pmziM&u{dV7~mR6(bmwM2?tmIez}-+CGDBVA5moboFyt=akR{01kOH&j0`b literal 0 HcmV?d00001 diff --git a/captchas/HCEA.png b/captchas/HCEA.png new file mode 100644 index 0000000000000000000000000000000000000000..c8cbf4571016dfd2c58a937346800f9620533fc5 GIT binary patch literal 696 zcmeAS@N?(olHy`uVBq!ia0vp^CxAGDg9%95$LM!4Ffi47x;TbZ%z1m~V$f;>5r@E{ zps_|JzaJ8 z{Jige0Ut0D4viRa3uhhJ5Z)BUEa_UrTu1X^Rx@-EktLrOv+h*S}&Whz){yyvF zXKve2$(rgJ6~BHa7Ebr5ib|I2y0*u>UQ=Vu^P4+g)Wmwc%bUAD`K`zP32!C-9G&s| zP1c8>POX*Q9NO8%yY9qKkMG;`^5L_+9lNZrZCvVA*)6i!`Hp*~+`5G5lZk7ecg&vk zRXco#k5Bm8RjLYW&KB3j-90+BBZ z?8=-q2fZr~>Pr5feC`?V!N&Pk26+=T?H=FVyrTHj#rem7-Jj`f%=9!g{cql{{x{4& zr~bM5ncYxcd#>rJAFLa%s2pD*I?c}QYrop-MO2OSeT-c$->y$tZGR4!A{jhg{an^L HB{Ts5HJ(W( literal 0 HcmV?d00001 diff --git a/captchas/HF4F.png b/captchas/HF4F.png new file mode 100644 index 0000000000000000000000000000000000000000..5163ff5c1d8753cc0b5a0b86544b89968a6af056 GIT binary patch literal 698 zcmeAS@N?(olHy`uVBq!ia0vp^CxAGDg9%95$LM!4FfcWGx;TbZ%z1m~bkX7f9)`fl zr~dypiVSewDRbs@mgfw+)sbfs7TrE5KIe=<-(%;lZ^5-pzx>)%TM{`FBb+3r2~dgo zF}jwi%aG^rmv*)P4{u(0VzckCLCX2!cQ0LkZu%7_@#d~q`~Fi)zL|tcgxQn?Uax+& zxTxQhcg3GYwW8HkuZ++9I{W+Cz9(IOkLGPNo1A4aXVZqVxbq87|2vgvF0N_$#ouph zz+chVjQ4$HeT$!;d~%<`?)982PmE@NFP^UVB|i7xR_`~P6xSa9Rgjoe@K+wWdJYkNCu<8iNToBY(LZ8)qOeOUT=lXloM>nr~w+kNW) zJ6@PQY5Mc`YqynrtzJ{UINx+xvD2!kInMtdUTL4I`T4BUhE;PVw^nJNxtBcm-dnj@ zQHRXGSoD2aeA+qQb@eK_pY~?ORVTmCe|~X#$E*XNUke?Nxw3Y7Z;yvsc_i!Psh4o(+efr{O8Q}i{8~Z#s*4W zn|D#&{ydM%pC5-?*TwDq7NK~5uBE)oGRt2VQ-o6!pROq{3JveK2#AaLd?EZ@_P&I~ zW%`QW?&aFuYJGP3-FGf$Ipeb5Z_i3+iHA+OB`+Jc{%p0v>Q!I2Ca#=Dz38u(n#DK2 Us8Rk2FikRey85}Sb4q9e0HKXYS^xk5 literal 0 HcmV?d00001 diff --git a/captchas/HH9N.png b/captchas/HH9N.png new file mode 100644 index 0000000000000000000000000000000000000000..ffc64b7bd81d452d3cbd89e4a94d54abd1c48ceb GIT binary patch literal 701 zcmeAS@N?(olHy`uVBq!ia0vp^CxAGDg9%95$LM!4Ffg@vx;TbZ%z1m~V&5SJ0k?;n zZho&%{dVX`Nw)6d55~q{YNqEcnleu*bo0_{yBHV$t>9RBGl?)eW-7b2% zg5A6()VuuAW!@i($K_62?3^t9*W;4izGuSIGN#?n%~qNxB8bXU-eAzXv{jZ>Dvzl6i+PItu*g->^o8axo)GO z)IX=s>aoAN7V2GO{=cE8>f8m_phfZuFXpMAXu4uzz2bb1klm^tr4W3&2?wfsN;rx$^%mwyc>sfz2sl9Sd{ryRc zsb30g4sY^_+?DBTo*=mW?C(jT4^OJEc_zO7L|#zD#QdIx7yjv<@>yJ$%T(@YudsC0 po20c75pEYmxo-+mDG~f*c%gskG1ImQZop*8;OXk;vd$@?2>?EvF_QoQ literal 0 HcmV?d00001 diff --git a/captchas/HKUM.png b/captchas/HKUM.png new file mode 100644 index 0000000000000000000000000000000000000000..e4d03a911d21f14311e8cbf561985df4f708de23 GIT binary patch literal 759 zcmeAS@N?(olHy`uVBq!ia0vp^CxAGDg9%95$LM!4Ffi@&ba4!+nDh3|-M-ldBCd%s zXMgYCRNctt$|#e(r|)b^ZTM8FKgXXvsJP{6`P}u@+xssVU*sD_I7#Rz@=Oz8^X6z) zZ8<1(D1kF^LyG~$!XJ&R7#xGVUdyxnTeP#3C;rpycWmKnrd%pJeYmRUP2M5KBNCEp zeyQ%OG`^>2pRN0M*X8M9{5O)n`d+=69%o;+@_5_BuV>%QIe&OVg6aJezweb0n@n2`H>f`@)ye#S6FPodQY$GOc-k0U&TYllgD|H{)HK%;b z_il}udi$iM{UetJm8N<7ShRXAk5|nOdfL0EYX5ic?}kC;xBN9*RX^3O%D7+T5Oqye zpw(?xJ@1=R(eDO49M^Jg-}oUef9vtSkBYlbeiVJ3GnILovRcr=r?0kh@cwBM0@|^X zO{S~Q>+0OP*Lq{Y-|Ye&4@TE6}pc`CmipnDBI^FQF>}-|hEVKWkkQr)arc-cg~0 hUDQk~zy$Y$|Gt4JE3=cZA}~QSc)I$ztaD0e0sss3TOj}d literal 0 HcmV?d00001 diff --git a/captchas/JTM7.png b/captchas/JTM7.png new file mode 100644 index 0000000000000000000000000000000000000000..b5dacc31c5fd301a8e2d668346cd898ba7b855a2 GIT binary patch literal 695 zcmeAS@N?(olHy`uVBq!ia0vp^CxAGDg9%95$LM!4Ffi45x;TbZ%z1m~V&7r~35SP9 zH^0}XK1PFGm&b{ zBl~YM2dtfP>D&7s^?Le8@rI}C z_Tl^!i~pU>>--`2W2M1!na|sj-{-WncVBzo_AS@7Zf5bJESvAO(|h!Gzbf5cmuWEZ zzSHG(5v`Ir^Ve**wtr*xVEMFZv97!AqZ2f3&V+A~tO?!j6d&tk>)0!I?WXUsP+|RW z7yrcY1HL;pJo3MJa0BCdQ{&S%c^Mn8X;!|zD25ab5=xnE9Ty?v{+N} z_W0fRidT|bjROxg>4g{P-#$F=DNoxJKS(di?#4+7gQ+q|H^xog!sy>{ITeSA#_lVm| zc&bmx{ro*gRcNRB9sd9h``p??+P#mJ4_&IL(-Jwfp~XN)k;j|kun^_UN7A<^Gi`Md SS=<0jkPM!#elF{r5}E)4r!^k{ literal 0 HcmV?d00001 diff --git a/captchas/K3WQ.png b/captchas/K3WQ.png new file mode 100644 index 0000000000000000000000000000000000000000..8549da5605a111469915d0dd3681720ccbf1b72b GIT binary patch literal 789 zcmeAS@N?(olHy`uVBq!ia0vp^CxAGDg9%95$LM!4FfiTmba4!+nDh3|#k>{;f!2ph zU;f^|X|I8)n*jS0gUwI=ue+5No>;|lB=_>RT=|48^6%Lad|9}KsE=OnUOHvZ?0{+4 z{+YW~-o5@J|4-do$u+-9_c%;{ZzZujd$n(?=F;Og72kZ>D0Ds{(&<6z7Jbp>OnC>b zyaM=J4E20jdyV72tSmS4*jCe&dghd6jeh?(-L^B21-XPudZ$iL3)xt5`0DSS74_A% zf6mqK_*-4`)JL(&bh$?5S9U4u9b)li(^oyZ{!XUp>h?veLe2)oWM0(I-S^t5*5TET zIZmoC57i&BS{1zVO)_iu<%2iRR3A$+K9~MJqqETc%OB_aH$Pnec&FWbVwUa1)1h`L zZ%fOrbAMlYHL+~NtgxqD0&kW}S3FVNe|i~fbzx7xnQoiJ#-fX-Ql@XOdGko~U&Pkg zyN(%^{YzaXcRl*sw2m9^o9=J9{QVJ+c@nSA@s?Pgqs5-T3%1rv=dQW+^Sv3m1TA0np0nz5cGr8YcaA0U1yd@$_jq5lHZ!nJJ2O*0Ye(`NrD*O)`xXY6 zf4!&pY4cjU{+mX1cM^KD=KS<&eSOt1eCCo*;eMGHL$d$HKJ@Y3{O$VLjJq7yB)-+& q{d$er6_}E2TH06+Hc=fNk?%3G`?2ce#m&Iv&fw|l=d#Wzp$Py+fMP8G literal 0 HcmV?d00001 diff --git a/captchas/K4U4.png b/captchas/K4U4.png new file mode 100644 index 0000000000000000000000000000000000000000..a3feb1b63792cf0163c029c455fb3881201923d2 GIT binary patch literal 690 zcmeAS@N?(olHy`uVBq!ia0vp^CxAGDg9%95$LM!4Ffdhmx;TbZ%z1nFV$os+35UcN zU;f6=j7xcyGD#xP^26fiyYHNJVRARwwt2R4iJXZMP7>1usKhLs zzM<%x<@1Y+cTC*fQfhn9e`mqmMf~jrJT{B<) z*zjq8TmFwv>M!gc?9P6|{;T`u*<}Y4ZO`9YV!Y$QG5g17dU&!=c-j2RI<|Dy=^x&S zypN(R!=sCP&6a+#es#dK+)01^Nz3c^b#?XKrl(xzuzqu)@Sk?V7J^ip+n;e5{V*;mBUQYF1=+kn{i7uJhFu3fDDjo>;o! z*{o2nl{0soyy6d3_?4rA_z&+B&9kzM z|C@j7-quxGS5^kC%#Qe)EmO8{-dfx2hM>NJRadyTC;Lvk;;i{}@7nk4+ucPx_Rs#V zdCvIU+EreT`$X+_r_`6P)+*(G?X5T4{^U#Jp5$3Jj60Vcw7!;n$$r~at)`8yz2t4* zu0wfBfmKT{C_p_U;r}ch>ccC0EAG z6&sAN!xe=KFa?QC2Xa0R{IWfP;4{x;=O*`qzf#QA57T_Op6Sj Lu6{1-oD!M(g zum9_3$}L*N!8GH@=H1Ia_l1gdNcKGTnER~q-=wPF=j<5oPEO=ZjBt{eCeWtZLLH{L ziEr>X&6IXi-{96j3D?sRqLSy&Y?!8~VI=09A+!36qAz#$*OTAbl70yn1ugA0<*>i0 zz9Bn0?*9L*oqPQj|G9qV*uocfNzWmpRA3`K2x|du^$^^Zkdf>kOl&oj)yaZ}Y35|B8_DwXo?N&no-&%XPj!8uYQX z?dp${)xNsRt2ex0R#kf)WN52xp6t3#?pSQt^tYLTNxK^-{F@zh{O+3Xen#KtX__bZ zT6gPgll^m8_wtSnxAJ!%*S6ouFtK~*FaMG}0Grtj9D&cE?nXx6`p zldngdexCnl=fBC$Jg**n|8YuQxA<68ulK2K!99p4r#4fyt4< M)78&qol`;+0IsV!!2kdN literal 0 HcmV?d00001 diff --git a/captchas/KQCT.png b/captchas/KQCT.png new file mode 100644 index 0000000000000000000000000000000000000000..fce864879e6f0b846aacc39fdcd53e30121fa420 GIT binary patch literal 734 zcmeAS@N?(olHy`uVBq!ia0vp^CxAGDg9%95$LM!4Ffc9kba4!+nDh3IcitKU5r)7& zQ~u`9LZemf_AJwyX~Ex(wZt&vo9X@I}gi;Uj1&r_@Cs_ z`rT3rifg{^ITo^YdyjQp-0!!4vdYfib^H_b%rZ-iRz$J>%0f1P{hE>o=JQ|BNRA9~#J@#?Ohb7NK7uh#OGY-w0Mr=j@vhqrV8 zZ(w!!bUi{gT<-05*3UNanY;dNj&U}xx-?t4zk}UisU0 zkCw-u;M{TJZpN-z7dE`=&iJ*X=Fi_Fvn};w?6-F86UjS&@c8Wir=IuMl(OF|zjx{v zQ`Vm;pYI=E_2=k(>zd#5rT&}P@LMFmeZNOb-Qwe&{`q&`E?b@1BDs3~U&rAL41R`HfhpBMJNYHi`x zdFsDJXZ5vj|82H7PU;%V{_{V#iBJ4~Z{PnWo0O01E=o)jXj5%TUMmR}K6QBn3 z$n>_Y>t63#_mKHm-%e?HDalVu6aRM1T6?|l5ciF$xvST%=hHq?xR058hW4^>*+WvV z>MrguPSm?$BUfLM?XB;nXUQ$y10<{YL=x_I{zi) zWJQ=7f1Gt?L;lU=@A>I_Q~&orzAv|`d!yL<7fu$Zj_UcE|DCgEL*M6*R=mBd*WJzj zoF5e2?=SJFOSF!6M@48w@$T*JZytR9HGA{S&8M$^^-*C3tLm=V z{z+W>h^XpkjcvKT@zL8ioO{-6oqD}{&+XZ2!n^MNdpkKU$S0r8 z=-41v+Mr8-QQh$`i<+|tNh(p-+2`D_pH^% zmlI2Oh~}v;efGxXZsd;pbDo_4_#;&JXX0Bwubk+7ckdsP!9Vr0w%q=2%~zHhy#LmW z48xC`S6{Eb`XhVQ7WRCZnv;JneqY&m`X2iV&5DT1MBl2WlJhU_r)C8?+bCT9Or_XI cN=irUYnHrVt#t{M1SU`hPgg&ebxsLQ01X~Uy8r+H literal 0 HcmV?d00001 diff --git a/captchas/L4V8.png b/captchas/L4V8.png new file mode 100644 index 0000000000000000000000000000000000000000..ba7db624f9b701cd25997bd3a8d5091fe2b7f3bc GIT binary patch literal 672 zcmeAS@N?(olHy`uVBq!ia0vp^CxAGDg9%95$LM!4FfgTix;TbZ%z1m~VBZ`A0fxYi zPyhG7v2}6ecrRdd`)XeGtGQvTIfR1^+ay!-*X9OoiC^sRkZq)+$m7j%Sm@A(76Zzd zkG{VUjySvTeSO`J5C3zIigp)?h!w3keeu`*kmQJoN&4UZU4Q!EFF&i~wc!6TDu-4t zYIo3;3%jDLTsd)vd}`O-=(vdAp0^epzwqVauXv~F`|sxnF8*_8hUn@yC3`0A^oUVg zzO_uUw(Dl}pRfv#h%M(9Iob4me$|kg->uzZ`sb!~`j<_-wc46%T2?M^uc))<(s^Lx zb<0fe$PDxMQ`4W+x3b@j+Wr3JkK~PykDZFxc$@vLZ%b9LX?NTErs8m| z`PbFA+FC^I^q(`^?d)`UY0Ud)weNR{ipF-+C#4!&j6!#;2wt-z`d^pnpIbckjrlV=VvEy}Tk_mi+J~=9wEdZt|5x+1>io|l z!B5tH@IAiS>67qDkH(mC)G23 z3$wVhho5D0w2e;hqu_-CZK^GaoQV-m64R){JR&})=jyrY)bu03l*i!d>gTe~DWM4f DPs}am literal 0 HcmV?d00001 diff --git a/captchas/L95D.png b/captchas/L95D.png new file mode 100644 index 0000000000000000000000000000000000000000..96244b6ee33cc784b1ee2c1688aaf508f691af37 GIT binary patch literal 645 zcmeAS@N?(olHy`uVBq!ia0vp^CxAGDg9%95$LM!4FfjRex;TbZ%z1m~V%}l{0f&n_ zUj6@XRO{d*DA2C9&zSkn=WVO?{Lb*2ZMkdad)Zm)t@>})7qfW0ISvaQ+R$R4qewmG zkF#}*JFeaOEdRIvS<;pVo%8&QZ!B27D(%IK(;dw2ihZ7^IkOM;?wc)Q^{(uQ;^IA3 z%14!VKMT6CUMpvZqOZ^8E!A@#WdEGeG& zt#KQJ&b_vIymsr=7wMgEcFuTt^3~~8d*`0f4m-oQ>s(KN?f%p3X+LLQTa%YA_xW^aF2bo9|V z-{&V1Z|}aEC1IR#pY?mh$NBHy+EuMlTKng8?79fXpm|I=*Y7C3P78=g|8u4`ZMOKA zd&l!0x1HXZB>FR?kSUKZ=$P%hrs_4@nbPc2_lGWDPpS^ewkw`5DfaGk@&4cEwbf0zqqyS#N<4X$ofLN_V(#+AJMV8h zCAzD>^Z(Vh(<^>nu93~$?^C$Q@)G-=&q9aJ?iOfMZAs)zjBt{eMiu4}d4p#UXJ479 Rln6{-44$rjF6*2UngIP1D{lY* literal 0 HcmV?d00001 diff --git a/captchas/LADE.png b/captchas/LADE.png new file mode 100644 index 0000000000000000000000000000000000000000..3a5a965d2d6b7ba6e2ac057fbe2c0c76a2b4dfda GIT binary patch literal 685 zcmeAS@N?(olHy`uVBq!ia0vp^CxAGDg9%95$LM!4Fff&Px;TbZ%z1m~wqJ{b07Ia` zzyJFE{4Px!x~pft%1e7~BPlE{!6hLuH#&RrmD}OpxH5d&R9g}`6C<1?rU_8aynj<$ zAZ6b3r`-Q{`}Oo&B(Dv9yHD)7@}XNB*D^eAPj%B|<3GJ>)0xi6H&fR;Yk$ZOik&vQ z&c9&O%$?gcGs|0FcPyxE?Yz^)?tggaMgBTX9<%?a;wIV$T}wZ+q0jkd)NR=vFABo5 zwd4FE<{P{#^^4Vy6-+$hg{r}8L$G%P{bDnZuKi9bc;d2q4#|s?}9=v{M zWlHGf3B_yf_TA~T-rnEO-8!xM^O75{4_lwwFLH_fj`Cx^wa(eOze8GYUz(h(>HS4= z^|OaZU+(VLH>o-~{m{GP*IL{DMfT@MwK{U}YS%UQKa^9yzJlwwh3hjJ?KJlF!gGJj zWVcG+Us)WGShn@V{5{3j0{Qm+=Z`p&*Zu0tmag3*Y{u4HY)%C literal 0 HcmV?d00001 diff --git a/captchas/LDS9.png b/captchas/LDS9.png new file mode 100644 index 0000000000000000000000000000000000000000..68ae2d055881680e41ec8db498b0c00107b453c6 GIT binary patch literal 671 zcmeAS@N?(olHy`uVBq!ia0vp^CxAGDg9%95$LM!4FfgTgx;TbZ%z1m~cGhbH0f&n# zzWlF`tmWW67_OSpf9zA7zb^Zu+utH~Je(5s+WFPn^e=oFer>8PiJXZMP7>1usKGq) z{)KG7>Y!7<*Ps0Vf8|QGFwNA$Z_hVW#+>Xgnb-N%>f(C&N%t@JPGaA(yvOSI`OjC& zUsqp$u&Z@$*wk+qj`^%PTC(uGpCG%3mmRs~HwddD;`po?O-4DInQ8^!#b$@RN4?W;mYIy!pZSLo!FI75h_WgPv ze^iVA-PI@^&Mr24#~oLzX$3L1&*nwE=acI@(sr$5<;=(zf|nkzO7*<`TKBr+;)(sY zwlw;EefBrxjPr)mVP@Scw=UDoRD2g`ky3ipvTpvBr+@D(J?|e7A-U?6-MYSb#yfX( z#om8u-M(R~VYW_EOzyfn-}k*|ID7i2l!nfW7A3W?KeaV`Tz^%?JUw5zf>Aj8P3^Rw zdhuGaHyftBdT z?T7UB4wqMpey+XZepv8sWtgq+)?=p%EREkdvk9)3erA3BweqU}ZEyUYcJ7l9`KBYR q8y+$1*xr5pOAV+Itw?F)hB%Kd=}kHOQ`&t;ucLK6T&t2A2x literal 0 HcmV?d00001 diff --git a/captchas/LH74.png b/captchas/LH74.png new file mode 100644 index 0000000000000000000000000000000000000000..3c3ff3bbac7e4967e8842c1b567dc1c1427faa96 GIT binary patch literal 638 zcmeAS@N?(olHy`uVBq!ia0vp^CxAGDg9%95$LM!4Ffh4#x;TbZ%z1m~Y+kd007GKT z*T3;I1cKsc-`%f&H`adipi%FfwepfV4cwK~lLAS`U zQ=G3GnQi~r7QT0P6)RH}d;cY3!TSB*A59eZKgeyGc#KP;m5Vtx<=Kf(cTB?^YBHj$ zw>P@xwSBtJrM&*l1Ht;cGKDkP+dqFy-Wj;)u-DERS}_OxC)*^m#vi{k@6Yawioqv# ztt;Q@;dFS{=>>Bx)d$?pkJDVUd@a{^-k;ezbGMcT|6F|X%!WtokHnTgF}}*DsJG_M z`Pn-Q-^Y9pvHrMai==kW0%o%<=7Ni&m(Nd)`ErMS2_x6M_Xa?RGKbsz&G&JBcQNkl z_PpInx@#UUKX!V7aPbEv&G|m|?wyja*Y?lXs0z~7*n4c(OXjOTHgWTX#6(>7SJ}@# zqiB0{L5{OM^ZWV}Q~o{Nqxb0#XJA$D(%(kZjKCj^zS=8(OIdLl0n-(Or>mdKI;Vst E06s(%ivR!s literal 0 HcmV?d00001 diff --git a/captchas/MBE7.png b/captchas/MBE7.png new file mode 100644 index 0000000000000000000000000000000000000000..828f54dfb9e1410cf59913c0070c91157d1abdb8 GIT binary patch literal 744 zcmeAS@N?(olHy`uVBq!ia0vp^CxAGDg9%95$LM!4Ffgt6ba4!+nDh3|!J;_^0t|tV zPyPRIWVgd9m+>^8hplqK{>hIk3>R!;SUWj$-gEtx+uy&Ey9ZcAvef&aTf8wExbBi-iKKxgV8@^vBOL zc=gfy+vJpZE`ML?%O(rCZ)RrmKE5whI^8On^?d%VT(8roA6wt7-Sw;DuWVw|8E);* z%eQ5{d|1kE)%Q+Tea|V@OW)jQpE3RQ`1-nUDJ_G05<%Ocke$T7k zH-i)Z{J4FcyKMR7w^c`Gl!<>2kDsv3xKJ{Yb^e=kdjDC%m)hqo->dtpd;{Mtsm-g_ zuabOySL^3NZ>xI;p55o(zP$Rln4>F2C?{`{xA*>t%n2Uh28}(dEmnD?gHp zv;B9A+$*`N{=&_=e)9&U^s?V76^lPs@c8c%=>HXNCDl&7lwvP$j&y@ffRbQ~WY5H8Sr~hW$gxzxH(U$#CqjhOpNeaZVZAM&pq*e(Bk z`~FX_+UMVvxp3l3>bk{M2aD3y)9fJEDc_aDZlAxgXT8_WDW^AX z_P)$zk$yT^MW=Q5-jy-W&h$Nw=*H&AVt*KoqQj%|SQY7@B?Z25t zQWuTGE|-?QpTqa=KmW30d5M))_n2jBI35ezzwf#FH}Lkm-0)P{e~Ra3iDm^&RV_KT zYEQ)?x6_*zEaks(q2vwMyP~{5%I>l^Zr#0H_q!zh#N%~q+{!}q3(t#h7ddAZUY=d` z#LVlp;pO)#m*(v`uKeuu%5SI3jql97cc|&=-7D2Iqvo6D|K>V7-SGDFQ_B8AD|c_% zeQ1_e&#I8)<{q+1i()LRc6B7|ef8Q=mn}~)DQK(pg){9-Ro`z6)4n@%TE4Wv1Bp+YJ8GOT`fBu{-(<9BLb*fUPsy?CLCzs`WFR${C0<%fd}iOHr4Z8&u&gLc;8+3D}!n&1U;Gk aW5~8}S)G6A9Vaj`GkCiCxvXMjx zeEnZP({6!Mi+|5X+i%}4u37HI`@OR;<5KSZ@BLS9&%bHC;Qq-CEe1M@Jl-6Kg$_}l z`S0Al#`D{9kIP^CbwA+z-E$GIJATcQ2|M}p<)%)}>lXDT>&r5CZohvf`r+F>`M0m_ z-CW#yF74+mods z)mw9_qhgR`~wFFU@DF$?iu{&PMT_tNF> ztBP)4zqaq(nXL6ycb${Jl}O2k9ew#?lgGo~yWgK#`S{i)$Lt%+Ui0u~`-EOyowY}z z-~6CkYp$>VD}i@m6?b}eoj?4dQR`5zrbkeFVdB;^yDcvqm8j`;RxOqIvg6_LFe(4z z{oT{ucfS7}_4!49G-t%s^heB>b}nbWYqjwc$M##{ZY@)P_JsXYSf1yso2~6~{^n(0 z9mP9O{%RFZOzQjJa(tE4{JoAJHptCyxIfRp^xPb_#qF!}i!YyP{-NM@e&eU+fYWmg zh2wwqTe_?~yh>@?)w}Qiv%TD|y)pL8jrHvL_U`W1T?-Sh?mZvnceAwn=W3yC8!m6x zbn$uJ8}U@#r1t6KO}h8zIPT_|7s$o``t9V_Z@f>wL( zTz&ul)VV{eLbS9T9~=lhzkOEgMHasg%Xh2mp8hnc>bLoC-WT(Dyg3dF9oo=hprc4N zrk>hTli#``p4d)TO;eFo(@7acZ=$tJn zws%^{8F$Z)QuW2J`YjVIReW|ItLhJ*)7>_y+~~*MXZ+&nFSb2v`D&`v$~+}VOa9d6 z=6$>W-khr=FIB$v_oTbF$3>p5`|y0n{HTY!Lbkrnh}*wxPp$6FwX0G#E2y_j)>-FjLqc%VPC0(;eFTEx1_WwIZo9(vBYV(ksAD16;3g0>Dhvu6jmyflE*4;lY ztMs_G^v?H!tKtr)H_6zp-Fsxa-ixlQr^~AP%&HUZ`?E7wpO&7H6c7=-FXi=-C%0c& zRL+b(I>S6~MP_;HQ|7&QKfSs8@12~~{G|D@_d3>xJ&AB%6Vb{)ar=v>EoGhEiYLxw zuQ}tnYH#z-`_I(Xw;notN=O?n8R7FF)@Id$Zx`v<-ib zeYSLq-_ve;-1hTN3-u#iSHoA7$bAC5KGJ?;8iM@Y>GkLr@4htRH&|;vYNFC;` zy+K~@oo@vG`M)vhjbGNY3H#&@1O#VBh|i5wmpc9}*W`AxM7r7U7%p$kWW5LKb8UVc zD87@I^?~uvyB+U?zFj|^dO~mi53Ti&kLjkbD!=?!=ucR?=aWlu!4KTDNtsk`7lY0p!`)w6!x+oK=Xu9g)hr04m3yS&l&@2j#-#cb3&ll}XE z?Aqvu!9vkjAM^{I^WfsHHN9Rw-N5r?`t%JS%l_)O)`wjd{&Ay9wZNQC5Q zi%B1zm(5SoZ=Jq+*WKAGTTb6MIbc;1_uo75-0p32q`&<-Zz6a2)9b139~ysWO_#lv z6|-QKUtisVCr3BcHQil3%PnH#wnfKSf8BVuXLd_&YU_|M{iS^JZ+@jF QFbOkwy85}Sb4q9e0545sqW}N^ literal 0 HcmV?d00001 diff --git a/captchas/NB7Y.png b/captchas/NB7Y.png new file mode 100644 index 0000000000000000000000000000000000000000..2d0d1527f1ae76dffd7784986ab311f207854daa GIT binary patch literal 723 zcmeAS@N?(olHy`uVBq!ia0vp^CxAGDg9%95$LM!4Ffh&Xba4!+nDh3|-MmKz0uG7Q zTi^dbb+da_V8{W9>*;9;=gY5(-jaIcTqomY-?!Lv_urFsOuu~ER9g}`6C<1?rU_7$ zX_@%-UiJIz{#Uvw?=~L$nsa`2{p}ytUr*fsp}0Qyc6IwcmeM`$Icxu>-6@=V=lZUB zkFWiI7LgU_?tJgesjrqj^0i;h?YDmWl+LDP_NMgCqg>bb8{_6yZ&_t}lz*A)w=DUh zP>Y@1JMUhLQPuo=wbQPoU-bW`;`>|gNIto{QOJG&)Phg{4nJVYuG=kh+%WiUzTX42 z|EKHsEw(x;%k@&ce(w9v&x&XcaA*&M614k>&3gimM>QRXuaAqD|G9I4Nc## zMxJJzcuMW-(hH%9DK(7QGp^US?cJgjx^>0|u6a>;^vNN zeEDBL)6U>=z(fH>>*oUBtFqUJa?EC#db=`mnrGHq|1WGAK5eQkiJXZMP7>1uC}-9$ zHeay1a^Cj(FZH(`p4o4(Bi}Zcck}PtwP!X2E1!>Oo!9oUQ2x1P-M)_dOirmmFZMYH zd;GmARGs2Jd!v!c*6n#$|BBaogoQ`R$vFb$4!Hys!7dlkY`_@wJI6hhtwJ zx|+C6wuk4nX^ngHr6)=zDOa`sd?~5kw@NG8UtiNs!L};9_{(DD-+^_%rGM2XO@6*U zUo|&0I3Xhc_<{nDcQR{#)|=0N`(>+?-J6$_;*#HPUTtGNJ=M~-XzjhlZ|4{9H+;%2 zbMxKNr|O-e!eKwQTzuHP^pN+JIqEZ~@08M9x6yB_?9&OWX0=b+v!_Awb;;ESC2{|5 zRb8;Mc)I6URt3M)^UJ@!7A>E@glGNtppJQEw(q-czCUq%dbRDF$j@hMW7F5DG*{PK ztz7f!#li1S=W|@vZ4Ib-@m5t{|LWv9u7ST=OLG^zm-%tSIXXl8e@$`xI?30a=|A^P z`V{xaDKvQdhODlaF`=uO_pDp)Z=)Judr!1%^{Ri_^Jj;~{>%IAzHGJThsob(Defzf z==*na)5o{PW?!s@qtBRLt14M2y5x5I4^!#=c|M=-p84=vDAhJ?O}6udng`1si3x2^ zeqMb#k88%pZOkPl_nxoM68$t)u<*8j@yBxWk{yByF`rjz{}=cgz3TMynfGt;sr@!x vAg5KQd1V5RH^*V2LmOHQbQCFP{$mU~V7+$D>>x#8nr85H^>bP0l+XkKjjv@; literal 0 HcmV?d00001 diff --git a/captchas/NNMB.png b/captchas/NNMB.png new file mode 100644 index 0000000000000000000000000000000000000000..0fd1c6f5b381fe6477896da9ef75f05caefdb8b5 GIT binary patch literal 783 zcmeAS@N?(olHy`uVBq!ia0vp^CxAGDg9%95$LM!4Ffd*7ba4!+nDh3|#iC{ff!4&A zU;f6=jI%gvAtji2{@t-Z_fw?=9(J%?o)Yz%DdKl$9>cuO1ji-E@bm_LtJ0%j{AH*B*SxIm+_-(-zU! z{o$(VTUWLl)NHVIUAOVq+4a&^i|<5;u9PlVcJ0@;Hyh_3Uu{^hSJWW6v~2R1j<=zA zea;>?|8b|jzr7>&X!@LuWwlQ(IG)T8x-EC(-i7Pei_Pv;AN%y4^)CDGnZ=fIy3E)8 zll6G+mz?;tGGNK_`@H!|b6Kx0mYcWg=+Cej#h12SGM+Qp`QGJ5$)K$&GdD_oKJH`Q zdsoe>zhe8RsO(9K-yfPMTl$A5zgC&N@&3A%e-Df7KK`Zj-iq#QZq&;7QM<1wYn#Y+K9TFS)u{{Ns;bH!`;JUteK-SoTTJd0{u_#P07O z)YaQ!-_JjBOuTne2j{h0`ijOaCyl55oR*)xV@+tAFZmtlxmvt2E$&^!%$qka#j1xrGWYPEH!C(QZn&p4u06^+r~^nBcW% zuTH<>W-3#@v{m@k_HvJd!VzEAez2+9aqH(i9^0duGcImku;CtG6r(jm?#?&->z;H; zZ&W&;-+EoiPh9hU(oV&XF3W35T7SP1OBA%ze70(pR*%Ddsj^RYkJp`2w=bW%$f@J$ zHT!j&KHt~ab?x+_vl|jMrx)ue@_2I`7CN+{#eibw57x~`Z|@c2`nw63^cXx{{an^L HB{Ts5*`YLs literal 0 HcmV?d00001 diff --git a/captchas/P9UC.png b/captchas/P9UC.png new file mode 100644 index 0000000000000000000000000000000000000000..dce1c5ca05e1606d9815b1eeb5600db91cf5e105 GIT binary patch literal 688 zcmeAS@N?(olHy`uVBq!ia0vp^CxAGDg9%95$LM!4Fff&Sx;TbZ%z1m~V$muC5r@Fb zJOBSb{gU~zb&tlPwE4wM)wZR-COF+-am{+Y_x_TLb(_o`o~J}ONlX)HQ*BA)Or!#H z%C)F$-D>Si5@M-8>sFlJb~R|9{Og+~^Ix9cb?tY>vcFauRYz~_cZm7+$8P?G4Sglf zTc+O2{>66W_w>Dt3%)*#sr&bDl1Y|~N4Dkq+-;A-);vys`~A83-@Y}sxUT%Wb1EnL zS=ZP9cciSvf3JV&Huu8IZ09q1bvo*6cHfozaqiDk1yQxX((LJ)wdT!-Zq4rt)V_AO zaK~@YgY4^1n7&)kvEf}>O0B_#lU_Edizq zQ+7p!e2U43uU{t=7X5$sFT>U7mR7m^>Nh^JTi!mHZF_6wsvj<*T-rIycG#P2Tb16W zzEwl;+Ju>}_R8;Ma}6`SBjTy+bw@$g`oXtg@plvS-!mu4U7N9DRkTCI?aJlq9J2Mh zt&8u*aTTv+|EuKxYp2+ZhwDVI3AlGDu9}sdX;UBZ@py7VXt}fR7n#~GyqAh&6b{90 zus1pCeExa-Mx~?ow?^4_hI$=Yp0+dnhRE~p-aEIyuoKvo^z>cj%F6oi_qFTZ_U~}C zy519FcJaT~v>zVs`8W54>QuZ6yQ4O@;XPNYfsP`NH^*V2LmOJC!mMLFdiBQ38qYJA QfGLr|)78&qol`;+07aua{r~^~ literal 0 HcmV?d00001 diff --git a/captchas/PC5N.png b/captchas/PC5N.png new file mode 100644 index 0000000000000000000000000000000000000000..4122d1f8b9611d3e8e0c0a594eff53c9fda50755 GIT binary patch literal 673 zcmeAS@N?(olHy`uVBq!ia0vp^CxAGDg9%95$LM!4Ffe6!x;TbZ%z1m~rr%)$5r&Hr zAOG*qk(;ncD|&Oqy8KC&{vIBYZw{JfF1!-OzH;mQd*TbyjdT=wyg3dF9oo=hKpFGV z_V27O_5_{!QM#@E-J`Cr0`n)PCPdtv8nnrEb96N$3xcT2EXYynDU9Hl(X1-rIwJWBGd+)8_ zW!zryTFkm-Yw?~aU9HMx>gT7jblgjB<<+ZN6s}t2_h0?}<8|8}=Df8O**m-Lc3!QL z$(oZj{%v*tW`}4#J@TbyZP)BiZSMPiFOm=sJL8c%=jl^#j|~epY+IdmH6|i->$RiB zTWdYGWyBnvte+_$&ry_TO)oO%P0!-TVCLN~iM`cmK?~y{)v?r%AO+bImr?Dd_$ zVV3!n6t|bz5x1|Z{+ankAnZ_}g_gympOc^bkw4MNp>CCT+!g!CzJ9x=fGcJ-lu=<)T4H^mb9%Yqj&+^5+K%|JWT> zTl%w_m$#qad+(l-&w8^GITItCB&G?pskTsw`G-*|_7uCC!{t_B(qr&+^>bP0l+XkK DfekT` literal 0 HcmV?d00001 diff --git a/captchas/PCEV.png b/captchas/PCEV.png new file mode 100644 index 0000000000000000000000000000000000000000..13392623aeb13ff7ae71e46b778ace1416d86f2a GIT binary patch literal 671 zcmeAS@N?(olHy`uVBq!ia0vp^CxAGDg9%95$LM!4FfgTgx;TbZ%z1m~VoiY_iJk(hN+YK!ef=i7mwA`^VWC4CS`2g)dAvEO!F*($ zvU=;a=l;L=r~0kf`b=i~#ob@?gI3Q;o^q|sU^DOC3rh?3ubQTRLFZWORf*o*sXl0~@6C<9n$P97bRQB90Xg1#c zds|#=+S0k}yjE?{;|qTC`8cEWtc+b+o`-fF)N!5tNbGP}O2mr`E%q_~bq_Ls?3R{u zn{)fliFDK6)j}J0lvh4wtXV9dv2OLEeLSxXzPLF*IQ^~k{D!D|Wld4jp8k3`Uui*j z(4VjyM?d=>{d(BimSNt~Z41lqEoN)oy>9+fgZ|@st(@ndeF*(Dq4Kcoc9A~G#m@d8 z*GYdXDYEkXU-81~#ra03d)FOebS}Ls{`fD!mhIv6+t+=!AAWkwSnTV1SY$bIRd8P@ld2=+Ywj2~X zl)#y|p~WD=NrD=}f5OTiT#SmY|G4|#`3HMi-oLV3F3NW#ZOJpIU)Q9fAMe)sS9$1E zUaNfY)t|Pu;TdaV_h0E;_F4Mv#LKH^B~0!4;kS6X^M{YilOC7;&AP0vyTU#HZsq5D zJ2m|7mnH2meqTQK@0&GE=fWH}@J(&GwtwG`ojJb0q^+_FTg%1o#7{8F7y0Vn`uZow z%KF-gmChFg{CzJ3?~r^{x%i9nY4?=}Z_R&mD9>lnug|;uo^cu8YIcg-Q1xwROth`B z?HfkMEiH??@>`p0mbLd@SvKJ;b8OLHx$O9mzdw)9*!q2$YwXXto?O=yv@bhdIcaxG zU}LLC#KOsa(taVE{xj6aMy--tczlWav_+G)7Vn6Dc=YG8>;2kswZGT>y^}fh;4gLO zGnU(9p7K=RTwmf=w|bF$?9qSk%`Yy~Uv+bj^XH59*BaR`TQ7h6Fjda>roPQYxx9YY z8#c1NwFeD~x!Uh;IDhx&+qUVMP1R{uubxWgdG0Gxn7;Gxj>-*U&L>k}XJ~JX)8+eW z5F)VV)-QXx{@6EhIi-!S13qn7E;m7Ke&xF@U)QNSFI}~K=ebFr?av&|f7>!UFQt6d z>kGxlG~TP-&18DF_Wy&r7JGN&2&X%LRtAJpJAFLjuedMx>Fzp-N?_7u@O1TaS?83{ F1OUwbShWBE literal 0 HcmV?d00001 diff --git a/captchas/PQWA.png b/captchas/PQWA.png new file mode 100644 index 0000000000000000000000000000000000000000..9bbc89aa374386b0d0253596f1eb5f94a5e767c0 GIT binary patch literal 777 zcmeAS@N?(olHy`uVBq!ia0vp^CxAGDg9%95$LM!4Ffd*4ba4!+nDh3|>7qFXA`F2A zPyg3T>c=cQq2R!=wPfP&H*agL!1X zUiRGQmA{q$#%r3!&0TiPea+A7|ISPEFMj%}h(+d-^V>sK^LKyWHuX*@7n^ZJbnl^4 zGfgwn`o*GCOJ6&!dSj-%^{UdEiO;fMKQ5jt-t$d1V9oAByEfNUPFl5l*Av@=WulAC zrd&~6^R)g#RNuBo$E7az-d(n2#@zy)M-|TArH=Ts5^#dfP8{ zq(mmP^h@$o!#Byg5pV83GS>gJi{oR%l(?b^>Wf6rA6h8om2`O5Zf{$i1(BiCaX@mj^8tGAJsd3 z=}l$O&4*g)Lie_Mf2naeWqaId{WX8H5BK+IdNLih`g!BU;)_iOLn4blav$8p7*eC= zo>8lnV<0$veHh1!=xJ5#>2Z(=RMzjTVeUsGpTX^qKaH+F2B1k_vo)%J{$jdE?Hh(A78ZP z*gJO7D+-CelDAhr+AckBd(gKBTIc>1XRZi-c$|CA%PkG<)9r4TJ~f$ZylRf=wZFc8 z-NuH0SFMZq&OK3h`@Z91AMS78YLVpnV~%GcyII3Rzt;MI8|lj*$L!&M_E@#*_{1rl z)e{%`oX_XxklPrSU)v_MeAUSf#{{%i%2Oj5LDFOmbNvO=cWXEFt_CJ?22WQ%mvv4F FO#u8IYo!1H literal 0 HcmV?d00001 diff --git a/captchas/PWF9.png b/captchas/PWF9.png new file mode 100644 index 0000000000000000000000000000000000000000..11720b9aaa4863978f6fc643e98dfe395c61e685 GIT binary patch literal 754 zcmeAS@N?(olHy`uVBq!ia0vp^CxAGDg9%95$LM!4Ffi@(ba4!+nDh3|#lFQ>0t|sR zv;O~2ea6V?s@U*$;T_r4=PrBAp4|{@$anJIrgg8CY~QN?VlYuZEOcl?i-C?Jk2eQ3 zn2*fAJ@wZ7J^!z~*4ZUJ^UqzM(RU`BZ?S&s_0UWy=kPVBR>f?2wU;+@-on#6D$7Gx z2YOlZh0I$hy}j~$@wxl&wB3w81wXvK>#ykJt4|*F>{=hWeQ}7_0rpLcXKd(8?+e>% zZ)yH$?eY8Of8)R0N67m&wFimZPz;fz7t=UJ$Zcimsmsp>4@W>&#>^Xu3Pouyw?1zt+sUeYy7hX8FqO z0_J5l{-LL5oUQ)B*)GqZ{&3aKlV4XB^lU!4eLFV4^*Dh=r5f8J@?DxJLi6`TkpQ^sm-B<(+{aQe>jnNr6#o1%VSt=u)4xHcGmDSjD!s3^VO9OC|7FhFldFzA xneOB|^H0zUjW*SmM9#zrCy8kSWHXP*Thz$zp46BeDvKeMcq0^ERuG%aPx4Awu=~Utw&TFCJ)8qdwyT5ejtVc&~SGeVsZ&=sX z8#`~?|2zxx`gJGYzbo+A-F4W*NJB2NS(GOvS^8G$mmT#NtxW7Dm2Up}%IN;Axitqj zEq%3WYOHfxmwdF$@0OJhw{H_Y^W-@1`np?kTyGwkmZcWtWdGiO*t+8T%9S%UBbJx0 z-?>0^&U+#e_Y|E@mpIREUko`{dLujnTSmKeX7+^sqdD9Mg7-xy z{+)I7|0dUs&mZ5odGkf|lgy{m8(*<*ejmNxR(0<7tLsIDrq!kveKR<7IQ(ZA)!U>DY-Te1M2B_u18l zo}RG5sK@)y&9eXZg1zgj{+^9E>~cRZd@@FnxrTU}e zYhjGu_buzPpRM;;{$_h>{-RaWHf+$VVYI0}C1G*Iznky(zG>T5sj98{wyLi#V)Mf9 zFCKq>?L2YkD%A&4uU|0CtBI-Fxq0T)@6Y7-G8VVqUNEKJc^co#-In>+&FVwBWy2o# zoc*>*^IY@9Tk9WfW;|?V%6~$3*RmVD=}+&k*b$s~=(nfI7qgsC+t}>;O}~D9xw_B# z_opd=LXL@h=YCi<=U-Lm)IWj^!LOz-zsb_N^{fZaPc@0f$w%C$FBjg*+7`NB{_ekH z{r8Uj^8NXaJ!M*R-m&K!{d}LjdA%?{G<=z|^7?hlX3S4GoF&sVO|s{A_N9-PmFAb) z?Q);BNB57^>VJFR|GRTeXL;MZZM^3#nFN;~YS6rWsz3kFj?3-ZNsf1){(8Fb&-sv} zb67t2A9mlVckgrmmdK II;Vst0N(OkSpWb4 literal 0 HcmV?d00001 diff --git a/captchas/QLAX.png b/captchas/QLAX.png new file mode 100644 index 0000000000000000000000000000000000000000..eb8f26f103d9eaf354dbc932839abcde8ab18c40 GIT binary patch literal 758 zcmeAS@N?(olHy`uVBq!ia0vp^CxAGDg9%95$LM!4Ffi@)ba4!+nDh3|!J-xg0oOo} zr~m6`>YNF%6tqVVgO#KIcrC>7}<+C1IQVd*K7tf;t`oG(&%?<{#KUr}*!g z|4q9UqZk*nWaq97YOdiCWsb zz@Fp%GgpZyM)Y3tS$V5U;HAlpGap|*WvOiWP;-o{dVB2B-4lXNE!7iM2|c+nxzz92 zgE>3(>!+Ff&k0do-&Y#)E^5|wlg)+RzJA<7TA?TRCCl2nOb@!YG_ro5?54N!e(U$$ zW*2Zy|im zetX0FX6|<0OTQLAFMN{q^UZ!vziRbJJE{88!`B;bKR%Wj#TWnbOZ=Z7zL}NLySGfZ zo4-=I;|KR8t>-ot(S7zT68Aq@yzP!Iyym`mslhqc@a^WTR?n;7shYcSN8C=ix$%~7 z^{MUW%zMm_`kD7#+JA=i%(Rz58JqvsnobYj{Po38v&a80KUw?ZbKX`LTkJ47C_a)_x=9sOf)Jtp{TX7qUnV0vcoboFyt=akR{0OgG` A<^TWy literal 0 HcmV?d00001 diff --git a/captchas/QPP7.png b/captchas/QPP7.png new file mode 100644 index 0000000000000000000000000000000000000000..a866bb3eb5f5418db3fe9556ceb27060934b10a3 GIT binary patch literal 720 zcmeAS@N?(olHy`uVBq!ia0vp^CxAGDg9%95$LM!4FfdK`ba4!+nDh3|#k|!9A})b3 zU;o$NtnG+W3B7$MV5z_QQ>zZtZ!0 z|F62<`?o@$%I7F9&zO@}yrnVQ=lrD?#&`Alr?>(Yqrdy2kAyj?Co`)%3p@9SqQ(2BmO9rmAjYgG0Vx9I1Yo_kx` zM8DbWP<#_JQUBD3=%+h2_=RkZ+oD%@W9DM@?Y$w+&z2whD#KH0_3_)gmA8%9>#cA7 zXZZ5f`Q0VaEtT)*zyF%g_w&}@M}l|!uIQInp8grKV}9G;S5LofVUhRbSgkJj|E$X& z(YjyPPSt8h*<5m5zWBWp@AS_t8~pZM=Vd?F{``T&-_pZ^=NnJ&TD3dJw)v3N-(UF~ zH=dXkdwbQi6VVI52%i1t!r1)IX8lX2{MP^Hj;vT&b!f`${chd%T(=EsKDGMaP59hr zUBuHJn#I(YsJlNm@J8*-wygnI&;D#{jaH^OL40I>y@7jevLXu$Fr_khy85}Sb4q9e E0J*eChX4Qo literal 0 HcmV?d00001 diff --git a/captchas/QR3C.png b/captchas/QR3C.png new file mode 100644 index 0000000000000000000000000000000000000000..b74a6a6c36bc26332eebf47eff8d169e3a11e2b7 GIT binary patch literal 742 zcmeAS@N?(olHy`uVBq!ia0vp^CxAGDg9%95$LM!4Ffgt4ba4!+nDh3|#k|D^0&a;B zU;oD6-0L9i+9)CRtcU$uO?d8<8-0JT`!tl~t@RDsV!xPuLAp_dlZ1{U&oluxZ;ocw zmV-iv5;zk#v=~q<{L#3Iq4HT}T%E$d>oT`~$e#Uw(q)fWo#3Z+_P2QQ|6lWZ6Y*ZV zB~Sf*|D1O#CNHn~a%FB<((x$$&<86PeVbZ;R@ipq?8hrN%PEsS^inQ?ztPxmSssvtht-Xb;r+0yMGS9 zd}i!?vjxXqP2qT*-uAsN?_2!(thJ?45|dVa3$M5yp7K88@8gjFmd|hXXH}Lz{S+Lk z>+}9olj*CHq^QhIB~v!vn5w+h!%C#gY}Hp8*SChwGWHkbGqe6C99(>FS&!`N6A$^{ zYApZGVlMT0hJWkq>Y!U|V&7+cKf_ws_Qq}HETN{-J+ta`-RAN)AHUtRSLWvX*J7Le z&1-xv9ADqa>a}V26uZoz=B<`r|9-XD7xmXg?a9|=^+FTUSiwnBYqnfwJe_U6`KzJOt`+W6_nyvQRbU@BC7(5> z{@CH|^KY>BX&HWgXdRY*TjAF$8$W*Ly<1mD<&~w%aP_BXC;nQXXQa<}@5O8BmEZTg zzs8d3+I;`oqNQT*OT#vv^O(0P?BlyCd$-Q@^)D;4-bPgMP&ajO^ZYPf_h!LjGhq5< N@O1TaS?83{1OQh*O`iY& literal 0 HcmV?d00001 diff --git a/captchas/QTHL.png b/captchas/QTHL.png new file mode 100644 index 0000000000000000000000000000000000000000..e452189aacbcc7fc3d4bbdaf14224ba9cfddebf4 GIT binary patch literal 712 zcmeAS@N?(olHy`uVBq!ia0vp^CxAGDg9%95$LM!4FfjFdx;TbZ%z1m~V%}l{5r&I9 zZvFqC`m14!ljmcJH#_&K70-(@)k>6KGRyN#sn7aFU>m z`7!?+UyIgKnf+gx11+9PvwdH=T>ZWQ)5kpPZzO|D^JLN%f!92GZ!eHu9rG@i{0RJp>M?TT{o>4J~(Wdr}x>zt^I4E zjvw!}kCX25>AkyC*;^g$by9{=(PWK1`*+jU&AC^TxnAh#%xZnr!~Hro)IVNlN$svC zv+0!=nhvcB|N1NU{K*+bk=t`h7XDlo?-HRKx-xI=%U6OM?iiH2EbIR_Au{Xe%0AxJ zMoP!!d2Rk`&uivh7H=T$s&D?sQmL9Z+f?uy%ef-+gR&A~wJufDB&NjQ=@G4;>$`u` z@AcDMm#;p4$9?kiby?pscJd1q7ko;zB@Q zTW6PYWXI+gYQHzE?~vVEv)=E4a`I-m_b%d0dh%C3{7(49$uno;t^S%foAsu;_A)H) zd-_;kll|{(>Au?jt+}_Sn7_P`UstXpZ|?qm?uW#u3uJ%Qd%c>SU31e#m)m=>*nB-7 z*UDqLw~Cz4pZ?@fzQgXm`t%q3OQwBZx2n<6#P0*=(%t6wnZLX_=JaQaBOqvl7HF0%;oXsI4pE%LyLiqA~l#D z_b=uv_-Us8o$b4HO1b^B`=zfIrOY_~RJMiAX_nfY#JXPli|zZhrytzBxV`;E{8ghT za<89eR_r`%^1k-uRNl?6t8Cx8b^X(@S)cWAy6~=ZgwOzCFu!%UIo>Rg!n$-0!@m zUG@{!8^zq|UA)__g{S$h)c(5#N$avpwEqR2Gz-6&D0^JKc%|Uyxa{6LwP&}f&6WN+ z_j|v!ZEx_*w@S}cWM0nLP?alp&noH3LnYNUS)H7(uho6Yn`Omjm>m85V!?Uaw?cRK ztS>IvQ=VDln^9f$!2H7HZ(Fd#;p!$T#OmjBt{eCeWtZlE_IF<{w72I^{VV)%?x^lPrU$tDnm{ Hr-UW|j&fBv literal 0 HcmV?d00001 diff --git a/captchas/QUEB.png b/captchas/QUEB.png new file mode 100644 index 0000000000000000000000000000000000000000..c8fc618120857515736e00862f9800ba9e1dda43 GIT binary patch literal 741 zcmeAS@N?(olHy`uVBq!ia0vp^CxAGDg9%95$LM!4Ffgt0ba4!+nDh3|#k|D^0&a=B zU;W;1wAaBku%mb5^ZAmCKHm-9&3(+WP_|=R-t91kZ2ODM2g;RnJOsp4IJkvcSUC?h zu_QV+ZBTHGn4my`@R9s43|^W`ul@R^{D1Q$@e@0e_LjD(pOOgsn7jI#*QsY&Ki#9%cW)I@2yo< z&(zN8H{CH~{Thw(|7$^&~E@|Ct^+~eDNTF+-6H(iqx>KQLI`SmUSq8c$v zwmsXY{#@1^A2D~;q&uFQY|=dF`d87vhDQMWPY9ge8>2-^9#SMXVLT9^}-*kpSlosK<@Rm zuq)Gk9>3(bm`{4mHMOlO6&r;A2vj|J_UV`A9lM$3W_`~l<*PFt`V_yS_S}n~Uj1u+ zZR`%4W*c_eMfmaN%zf3yHn-L`Kfk$Ieook$bNY*4?%(P0G4Eafou54$_iO(RTXXvL zmS1IuAM6zKH$3=fTF$LiU7zJ%zh(5xjNe~!muvo)(tqBMV>S2X-q^J7@0ZFIM*rky z$Q}6Mmh|q&v!M2`7Q0%HJlxl#d#I}C^YrvG%Xr5_O)lSlM^tD~DOn(=tv`$*rOH>s T)$JmH$(O;?)z4*}Q$iB}ZQ@oI literal 0 HcmV?d00001 diff --git a/captchas/QX4A.png b/captchas/QX4A.png new file mode 100644 index 0000000000000000000000000000000000000000..a6bc374c2617a920d16d07143c6021e63687bb2e GIT binary patch literal 739 zcmeAS@N?(olHy`uVBq!ia0vp^CxAGDg9%95$LM!4Ffgt1ba4!+nDh3|?Mbr@1Q-G* zpZfpbsIoxSbw~89YdrVt)~^h8$YP$h*ZS<|Ka&>yJ!QvGtA1GM(1sQR9Yr2*4r(#i zBwRL0m3QLYznT95x9??>XXkI~DzE#-{-rB!t?h|#8`;INQRa&{-DSXZ3 zZr|H2>)7tdE>Z8xIvw+>!mGvffu+@+RZkz>^5WArTe&!3!79C@`~KhP3(oCM)YM&b zS~C9Zt+P*eT3(;)z3I=#JKbTob$BOy{!nMUvT~ku+N)2?55>RG+#NPmKYaa^4Sv%U zvo`tN(%L8Y_ut%#cQgC;iOyT|{hf=+{gM}%d+qHCRmzW@*{jR9H!0T6h5z@IT%Ip6 zdb@u{hOe3WmR0jrZpfQyH`aZg${lmPjlbYh{QSp&SSHGbiWU{`{CVz=X71X);_A#hd*hbPkG*9lw&i$5$klgjEZ^f6 zo~yp3lX*Yyhsm;kD|2q=Q|2JO!<hwjTyuNtD%KaAyJOhW|L5Yrx|Om0i>&YF?ynDevOVmO{o2#N4rTQh#rwW9 z{Pgk9AA>G_3y04939o*O>=oU2s^+hA?yI(??w`XnS`s-EBb+3r3ACwF%B*Mb(NcJx UJ5fv-n0OgHUHx3vIVCg!0Hu3gjQ{`u literal 0 HcmV?d00001 diff --git a/captchas/QYWB.png b/captchas/QYWB.png new file mode 100644 index 0000000000000000000000000000000000000000..b8a0e277d8d803ce0d29e3ab5fea733cc96b41b8 GIT binary patch literal 764 zcmeAS@N?(olHy`uVBq!ia0vp^CxAGDg9%95$LM!4FfbkVba4!+nDh3|?Y`LtA`XEu zU;o$7v_dQ_FWPE`P02OnHyuOwHH3^n&v17nwU08|f(Wcyk;UI<%q1fO6&< z5iiZ9Q(mlnadN|>+DWrk>K?Aj+IMhS_sPRr_H1ijTt8c}Z;rTT@qgF-??1b|dAY3l zaOjooiSa?T*4j^(T1~BAY_4$cc?hotf2^NoXIp1X;#MAp7gFti-^@I#7a!|7Z(Gp$ zjTbnN*WLSEP^vq9r?>u&?Y5q2nVoKHCc3Mfym!oMouTD~2bMSm)Rp{56*|(1`**xDWrm1+%wIx>fBIeHRe6IfZ;gah8Eoc9~ zabI~RRJXBsjY@LGm6;iL{!S~@Uf!@lN}qAI;d~8-Ra&psJeOQI?c?-AznUL!J~&?> z;_B7qZ}Uw|)|@&bX|*Z6+cz}yxa#wrE`8jukG;L|`LcacTlMZ$>bE!l+p$HG*~L!5 z)>@|h@*3$KtG;=!+n>8@{+q+mC*Hp=ZH(hcO z{Vwa-Jnb`A3g16x^Z(}+jEP%ip8g5FDjre)+(d6l;3~`C?tk2^boJ&od{}&^Li^U! zYbj@*&of_A?cn7wKQ-ppB(0Ly4r`t+bcvsBdF5~Lo_9ubj`rI~8@~vW*m}5jk`GMapXA(%kttc7xRCr3jYevzW3t4;mtFzjO6F^oD(BlNdJB$pnZEp8H|@92#QjNc z{rt0Yuk0$_ZMRoo*M)oDaU1#Wefj(P;M4WWN0ONM<2Gx~OXC%@e3n_SFkszr|; zPhY(~F7{N`tPM$T`A+?M{`CHz8>VHe`M-Uia&+sFl?6Yh*z-L#T{X+&-%5joQ-@cr z`k5JXYOYIrs~mIrdS{;3kJrBY=NT3)I_q5g#x(ml*)vKPukBjL_aApMum6Wudu|Qo{4!zMIOyE!FXMQ|IrH zYb@az+V3Q_AJ|lUIyJd&yYcnOF`fJ#(@*XuI<-%Q@ zwstnR-}EV4)VHfAOZ}LXd@eq}*S}Typ^(hAjf%5RpWgOr&%Mu&_HTR<{xoDqi%hy! z&ky!{d*5=MPiggQl}>u6{x&nKb=#rFL;q6!HvDKm(I0E9vsC*_&r)qe9Yr2*j>AHS gHnbQ}%>2Qa=JoJWqoZL1FikRey85}Sb4q9e0OMOm-T(jq literal 0 HcmV?d00001 diff --git a/captchas/RKE5.png b/captchas/RKE5.png new file mode 100644 index 0000000000000000000000000000000000000000..9a23e21edcaaa511ad00d39baede02f14038a3a9 GIT binary patch literal 717 zcmeAS@N?(olHy`uVBq!ia0vp^CxAGDg9%95$LM!4FfdK=ba4!+nDh3|!J@?m0t|uK z+5i7fzuBA}tjE*Eb9olycWX7hmW9oN54NO6$^~t)zp1^T+DJ!{$D8A@(4h@222^7{ z%Kyf7Cm=ib>ty{u@5^-m+Wvpj_Qlll<=*At8{e<{=jP4#TCV=i-z9Pj^IvI2>lm-u z`&V$E*ILE=&)4V8Tht~eqgQh$`O=|RIchJ0l?zTzo-8FlF}l(J=^3uyvtQnDv$4#} z*3G)}bpM2?~uRHhg>1{#9h^^&fT}S+BdQYnxg&SY1wgms65& zwDtR`2=(caKV!1|Z%x;9+gAFZSm!f)t-Ne#uGOTUx^pf0b=S6WWM-!*ZuCzr6$|}* zbA6@wwO{Fhfzyv3m*=#vuTHbP0l+XkKk>pAA literal 0 HcmV?d00001 diff --git a/captchas/RLZ7.png b/captchas/RLZ7.png new file mode 100644 index 0000000000000000000000000000000000000000..4460b16400247bedc0156e7fb64c54a87af5c507 GIT binary patch literal 666 zcmeAS@N?(olHy`uVBq!ia0vp^CxAGDg9%95$LM!4Ffb*0x;TbZ%z1m~Zr)-80f)qx zuYcob#<_F}usR9NpLuZ3`>dr|KW#UzJefE9dF7<4-zV)DdQWa>G0;)u@#Z)zbckZ+ zBlDv4wOgOh{~MooY?@ip)@#$|W*X?`Jh^eY!-ApxSczkzEWh8~{=}`;FJ$gZ6~4b# z-r4@$`b=lJ#qp&=iFc2zz11~?%Upfg|L~pHCl*B8ZC=kTFXQ&4IWzuE(cy!(^PXEi z6P79CpJ)B5G>-jt<-ZjO+^OXzL@t>30 z`XYjVI6Hq>ZnBI<)pbi(JCUDW9J{OPpUQ?^Vp6Ajy;wD;bFeQREw{`y_pu5;6A-ihh|4(?;(TYp;X=QB60 za8uWR$z2kR_si@pU&nsw{Pr+xo}5+fJ4iaz-NUOw{mqN%-RqI_?n)@!%b whOda}i*T|?;!KQil9(pYrrMH71?ETgpFw{nsq~rW0@ECWr>mdKI;Vst0M1V^6#xJL literal 0 HcmV?d00001 diff --git a/captchas/RQTM.png b/captchas/RQTM.png new file mode 100644 index 0000000000000000000000000000000000000000..b4714cb6b1eb1df5a4862814bc4975a94ce3bc8c GIT binary patch literal 770 zcmeAS@N?(olHy`uVBq!ia0vp^CxAGDg9%95$LM!4Ffg6;ba4!+nDh2dblzhF0oK6m z34ilv{uEG>*yeLlX!Y*5D?d*?d7x^;`V6}kowZwMo7~?2hWkRfQG}C(jv~)A0XA=r zX4RI1LWdGK6F0ONP#}E7{~N1I#I)4kH|=kWJpNt1=6A^2|202)Iqu7^iB0SNHlOYF z<*W4u)0C3?)-HV(=f9u9_1)jt_uE9TY-3kndtnFv)A^;I%KcxD7TeBGvVQO@{_^bY z#m6T0w@kIRkJ$Zme_iO@!+vKzPF=r5__^)HF!d%2*H03!LlgD-6o0W+WZYcy@zk21 zna>qEoj0~5tSvw7``caa^_RLT<9i(M&BEU?*e^dWwexxLTc+BL`-0RLeAilY)ph-z z@7(?-?6JR}KNc=OSei58kM7*gR{J@N&)VKyaKW>#H{@6?nFK2a?qJ8 z6PG*JCU@1EJ&O-FZOBYG$dumsdSjV%ZJ6q&utEw65QD zscxCHl}?c6;~Bqe&s$aAdcvN)OE_AdmD~8mUD+1~g3aImy=A>$lg-;3c;?g{%Zcax z53MOE=YLYQhcEiAT~Nl)(r*51Q5Wy-itE3=ddHh@K}R0{)~rozSn%-ZyRf_Ed(3>ve BVW zPyg57{4Kz`FmXp}%-!6e=enJT8Z>zr%bs7mrSkQgel_bCpElK&M9#zrCy8kS)L-o>8*8lYVCj8Xzd9!W#)<7bk(Gm4SZ$))pKR%>(^~RleJC!P3rT_TFafzT?lQ6EcZ6ShX!b2{$Mx$e))x8pt3yJAZ}gPD7E?9feP!nMy1i=7 zA*QNv$!m`i5~p-#1-`HodsQu; z;u}7dyJ1T8?uU}U7rYO9Bg;Ske$X?KUHz{2XLrt7x8uB4^rdbg3q#-9E{v+b znJT?seAB+i0cDrG__Dt&VVY*Yq9Zu*+J*Ob3;ZpQ?B+S-An1N3qT0NB`TU7pJFmos zslD0Ev3QH9;I)?#GB#OncdM0z*2)L1t*@OjPmJ?=MC4(Y`Ha_3^IPA(wx?+Rrabc) znZCHctb0->ZThn*)K{~=B+pj$&l6wvs>?5qyEu3Ay?*exYk$I)uS?8d@8+(Rf1TKT zdT;YrhQjL+^;r?2FCrfnyxLze??vYFOS`Bm*dAvCe3mw|fLJ70u ZzqGK_!DsJRMFA5pgQu&X%Q~loCIDSQQ$PR! literal 0 HcmV?d00001 diff --git a/captchas/S2UB.png b/captchas/S2UB.png new file mode 100644 index 0000000000000000000000000000000000000000..145eef70bec0cde90eb183ee64404aa63227cc21 GIT binary patch literal 710 zcmeAS@N?(olHy`uVBq!ia0vp^CxAGDg9%95$LM!4FfjFcx;TbZ%z1m~Zr&>c0fxky zE8pu=zcZOSu?eZ4TVrndIW{cdL)xdy4N+NZ`CsPzPutIUcXA?UVuX{#G=VnN7Ai6S zoT+2(2=e+Y{GT^sL(%Nc{l~BDIPPVyXZ-NeJArFyLEYVY+tM3vPWx8h`n6=LYJ64f z=k*)Ij!n-Bn)pp^tBv;gBa05-GTrpNxt}+?^4iAUDKY=9wzjeQF1+^Z*X+mNZ|$`{ z@X*=&^O`N8wn~SsY+C1?{qUBN@w@D|b*n#n)qGBzxw`7kZ??=2FZky?4cD=DSo`(w zk?H@J9sbk(z5lU9zEawkBM-9}ebtWr*jdBkc?tE^k{j^fOn^XM#{ZCe@R>JmmarKH-x2FdMJvDtR^?Ik| zi^wlB3e2aZPwsubbA7$8nx(Gaz6yKu^{emyemQZ;Y~P*ll6!N0Otszp$MU1=?DVxV zQZF|bfBrrBjm_tL^8zdPGqTLb{@dL>WA5qpUakG=&il@OH9N0&&z{jc*KFnT1skUI zXHM=(wpsao>ybOh_M8$=6|UW#SfFHk)lcS^rvBW@#@>z%%j%U3Yws}TC;XC<*3`Rq zUh32r{j^$_{kBd;k7&y*iTA41fa#OL)78&qol`;+0A`3qF#rGn literal 0 HcmV?d00001 diff --git a/captchas/S5QK.png b/captchas/S5QK.png new file mode 100644 index 0000000000000000000000000000000000000000..51fd2cb3538c62caf4cd8c3437f33b9bc06bda6a GIT binary patch literal 764 zcmeAS@N?(olHy`uVBq!ia0vp^CxAGDg9%95$LM!4FfbkVba4!+nDh3|?Masn1Q-Il zAN{Y7v|$O-T)$Z3aaUexBnjbKkvzGk)DXPTjz)7y03h>E9#kr;pB5mkFUMU7grVU=e0}Z-~7da*@p9P z-@YiV|EjJ+4lC$6@{D2m6iTi8Y=Rdp6q#nF3^rwgVbLTTNfAanK;a$>Tv;RrN z(eqr~`S$*GM}+-8oDYpzx~g|~r996q>lfQUx;JJ=roYNKyUMIeF1u*cjsj^rgBx#- z-}kb3dOB?D)OfD_haYn8bKUkSM0l0Xnk~w5zj;e)1YMR(q?x73re5ZKcv@%Yn`!o| zE&trOFuBz@D1P?O-CjS=iO)#Q1B>i;HUm5v*84l+= z*P99c^0~MAIQGVE@j;{O`%kxtoJn37_G6uZ_FKi;HK%5O_X)Q#Hy6MA$-7Q! ti{1S^fkPWw40IHEyg3dFQH%MH;o4KpE9n~-9{{Fm22WQ%mvv4FO#uB7U}OLQ literal 0 HcmV?d00001 diff --git a/captchas/S8Z8.png b/captchas/S8Z8.png new file mode 100644 index 0000000000000000000000000000000000000000..13cd0f896768da0e045f02630229a0a8ef26e2c3 GIT binary patch literal 734 zcmeAS@N?(olHy`uVBq!ia0vp^CxAGDg9%95$LM!4Ffc9kba4!+nDh3|?Y_kZ0t^>7 z%=-U7^*ysx%Z{U+v3J{6e%=I_Jz5fmWf^;JtMILXC!$OBPv=~r_ z*)jhO|AqS|zOU=`>KSq>@7i;UJ;r{@35 zIN82_deDpazb-$mpI-6wOQDQo;??giYpOnbeZOKC^*}s({mp~n`;2{#EHp^ivUJMV zsAtNVPu}G2zi}eB#_WbmMZ|UHXMMq)&soHs^X|u<^_I|Gym!lHr$-f2L_gj-nzO$4 z;c2I9&9cUuws0>wvgUQpV^*Js=^3Gnr{8G&JXQT@$-ed7jU_q>#{DkWudaAm6!_Na z-qOpjjlayj)3f=~sr&aVLiZ+pi+FndrgX>LurvH>s!s*OzK0!=dtGvO_1a5Mli%c* zm&6~fi>*EqZsm7ys?mGVb?4_uzkle`b^qAJ=PY||UTvJ|dW!SliP@HMpDy#pFkYDS z`25kls%vv3#R_G$>x{45IrB2~Uaa2k{cW{5%XUvW&HMWMmimUnP3^Y-`aa$8xqshe z%ZHflHv)C#N*hg%iA(QDZBV|$@Ym_z;**E#Oy5@Bt=M;cU)HpG+1F)yX&37MWc`lv zi%_mto~qPdaD48y9m_>;?LJ+9u~KrH!udT*7niiDwj^>UMmR}K6QGd!hh5|Z-)n*0 Stp9-Nmci52&t;ucLK6TWB451# literal 0 HcmV?d00001 diff --git a/captchas/SAAM.png b/captchas/SAAM.png new file mode 100644 index 0000000000000000000000000000000000000000..d6721d77c2c5d219c1462efb87c232b9ce156478 GIT binary patch literal 733 zcmeAS@N?(olHy`uVBq!ia0vp^CxAGDg9%95$LM!4Ffc9gba4!+nDh3|!J@?m0t|uL zQ~&=@En4uV$g!t&$-Ie$`!CCt33ixq%*lzI_EfF++vL5>yVMQ~9oo=hprgp+%|T6O zM?UB3DM4N*?{({c(oJ03^m$SH?4OH+_C5TsaCd$~!{U29Ry9YCf79Mx^X+~4FJ6hq z5oeFDOVXz`i zDV8aG|EcgJ;r_2BN2?FJzNUysG>BXYm$luupEvOoSu`FY{{kC%j(dPgQ-3}5zZ;b~dh3j(I)w=4H0 zoQT{bA5$0PSA71b#SW`?)_Ky8gj4NA=j}Zhnq^&YSibIAQ}v=d^0%hOPq2&b|7=)( zIR5@#TkW%lWn0himctPci(3fo%}0SaY=lMd|tI@bcv^>^OfxHwDrpyWgOZ2m&jUJ|36n95pB5q=Z@u5 zPS<~t(tfJ&ee%8i((COw8Toh4bw0Ai?x<*X@)hH#C##KeTiQ%dKK_{2@gu*w%4btc zRrVt7uqTI#-^^WIr_6hpxAL)RLH1Oq!;9qm{d1QTUpQrQeBPD*h}gAyKTeAn+FzE{ s{PA6(ZO1Lk3o2?+$uGUAnlSz`h(0pfpsC)c15CCIp00i_>zopr03b|CaR2}S literal 0 HcmV?d00001 diff --git a/captchas/SZ34.png b/captchas/SZ34.png new file mode 100644 index 0000000000000000000000000000000000000000..c0cce160b652a13b6d815f5f4c8b2005f10b3ddd GIT binary patch literal 712 zcmeAS@N?(olHy`uVBq!ia0vp^CxAGDg9%95$LM!4FfjFdx;TbZ%z1m~VBc&90fs=e zQ~&=PSw?KsX*Qg(?j74z>vd(4XGA29`5m)4KUw6h|5v^j^LV^D4htRH&|;vYNICOg z*n5Y0hQ~g&Pyctm?3hIE_x(rb=`R2CByO$Q7teO(53`S-ezWuc)bKUEFYSx<~ti&K?f*|ImYzZ)Jqw`$h$?_XP8-u_?SI7@#19_?!vnLmD( zv_Jp(c0|8#>zzI3^Uv8C9r|S@`S87zwRy$DRny+DJ^gvPsLh&Q@%c6F(H2$Pg(y;;aj_n-Huo0(^r+3o6lT) zwAty!A|bnvpX=4jUQKsg81MEl@$H<>8{6#e7O2R4KU6)}F4Xtwe9?7!7OnYaWsh$! zc2LgizpAye{n7SAAIhg4$`;K^{$IUs%dgqr9p?MJzUo~6Z#ARz_7CS3nbQB32Coeh z3%lCxD!=&Ym3@5`b?@%~v#C5)9k*`TrwvA{wJc9}KL7u3`s$U3nKZW_eBQI{?2*5A z7QZ4LBii4!bToDd>KBThyz(^L_-A_Aq3!dFr=6{e6Nz54r(I^&U+I&Pw$IyML|&Tx zYx$uY?4Q)`U)p)(&SI^@N`3#bqQ85u`nmnjvM2o|R{x8aE?&UDIB)UGwe#1lJ9>8a iyW>=ff0Pu|QJ*lK?|g7Z+k9XOW$<+Mb6Mw<&;$S%x>{oZ literal 0 HcmV?d00001 diff --git a/captchas/T2CS.png b/captchas/T2CS.png new file mode 100644 index 0000000000000000000000000000000000000000..fdaa7acbc54471a449a7d337f6b8847dcbf03417 GIT binary patch literal 678 zcmeAS@N?(olHy`uVBq!ia0vp^CxAGDg9%95$LM!4FfiqMx;TbZ%z1m~V9{a&0fs=$ zt^fa@esW-1H@wM_iMwMZY3WrTLpc?a0 z{5Q6!?6u$TMM*#QKXCT?CAXb(PFJ1zxeu;~ze&A*Kl8I$e(U$kE^qVJ|Ckr( zD7@OXWcvB{-x78n*S9QMJ6YO8ewymJh=cQN*^Y*nK2x1lm(x2t;{WyEZ&2m65ySgU_|9$-vrm$*f7m{% z3*8y(cX`Vlhpp!p9p;h_Kkm8r@tRwq-<*up!@@!tS7#hJZ2jf({nz%9wSOv}&A$_0 z9{zL_J5ToNH@}ajPMtif)+HjkeBXgBQc;XW&mWm`?)QkgrfSh?kBCl{zf^W$`rTJS=cbn? zh5S}KsIcI zx;@k1RxGo_2u6H^}f3WvR~{k{Bu8P{e1lmjfweoTta`~2_k-o;!0_CB7t zzc}y3!}&k+I9>?2b8*kLuf>O!k=!Z zk|Xzif4gU5yK?p%?XV}|+cvcB@@0U@kHOQ`&t;ucLK6U!d_4yM literal 0 HcmV?d00001 diff --git a/captchas/TJ8H.png b/captchas/TJ8H.png new file mode 100644 index 0000000000000000000000000000000000000000..c282691aa330fa58ab824b3d2a457dc51901fd9f GIT binary patch literal 678 zcmeAS@N?(olHy`uVBq!ia0vp^CxAGDg9%95$LM!4FfiqMx;TbZ%z1m~Vo{TU2*bro zFaQ59`gLGR;*~ayo3o{Fe7+IovbjycXL``7=~r%le<6FpRC1a?n`%oUXJUkt1a+84 z&cBeIac`5(dHXy6UfGLkQish)qeGv17Bn6GeVn=Mhu(Lu zhfm9X^%edW(mI)>t+eKE*5ZE~8s^@to>%IZ_u+%ilOC0$CS0>NGTB{z{`ULxwTgH6 zEC1eZpRAUZeM4&X@0^R*ceh`Bdj6queo~X^wd32EFBh}u*56C5+L0a_zc_8piI=Y` zAMZW);Fa{lbHd9Do=UD>6jb(XeX+V$sYArc@bI_4KgT!8#s_*oy?L%N%zW;~fJAZj zm&+}Z3nHACX(ye^`Lpibk|&05UG?v&S7qN?o0(?4tiN=3cB`TGp2qp}RciZfMELf% zO|ID-y!-2;x!Su=Pvd|8J*)DD#&oXLb^D{gGj>F7*k5z+hkEVx(nGiUKRPFd?`knW zo!1|;=lGoYi$e>qcT3IJTl+$?+q&k?w*w-T#kIRL-@VVA^11KOd6oU&Ld&;qFuNWR zt~#enD%MP=w{&;@J<-D(S`2g)dAvCe3mu{c^9So`o5swF)z4*}Q$iB} DPUJkG literal 0 HcmV?d00001 diff --git a/captchas/TJZS.png b/captchas/TJZS.png new file mode 100644 index 0000000000000000000000000000000000000000..64ac8338e83ba2e5c36b2ab70051aa3e28b825c0 GIT binary patch literal 694 zcmeAS@N?(olHy`uVBq!ia0vp^CxAGDg9%95$LM!4Ffi46x;TbZ%z1m~cHU|O5r)8; zEC2teo?{MbQ4mm=_ck~ETJlx3gtpm^x}R)+KMdKsR%>0_VQt<7uwj>>LacYFzBKw{|06^jpFt*SjN_WP}Zx}?dg zkRLj0RGN#fAD_B*M_f3Y*cj%vfx?TOe_Lsnpy9N-kS-FH0WOUw?UanQ=YqiOtjZ@lE&Y=#F?Qkg2+w5_ z`ywZWNE=-}l;a}5G3j2*yF9Cp>&|%U9@|sl{(Pq2z4n#=Vj1N*B#m`$Z7OA+r}|~m z#e4j*j{0qp_n#b_sj&A`TvuqT5;+H)z4*}Q$iB}dhIc+ literal 0 HcmV?d00001 diff --git a/captchas/TLRX.png b/captchas/TLRX.png new file mode 100644 index 0000000000000000000000000000000000000000..ffb0517985d2b41392e27f25248414b97bd2d9a4 GIT binary patch literal 704 zcmeAS@N?(olHy`uVBq!ia0vp^CxAGDg9%95$LM!4Ffg@yx;TbZ%z1m~_M}?|0t|uL zQ~&=@ecGtw`twj#Z&liwx1W6yqw`c2t7h)~?ke@x{~Kq9Uz=)6B4=WRlf*OuYA}z? zN!)rZD*I;o$JKw&+A&_(toxsTLq+kq2;tqQQ)2Rt-I6t3K4vxd0zifU;oeI zT~&-i$+M%!Rg~5|Sh@R<*T*V8X6}gCTeHjSYE!-HKielC<$t~HP2k%6^{L+@MD3!U z&f6FlI`37#%-t&uQ&&6r`?nt2mF%X?xP9CAeX#;Bo8tsFinxhwmU=qFdAt7oeL4?P zx;SQSEX)6JhxzZ0lt)tACtsT_d}7izk!3!*Eltw-qHM+g@>@T~y?^~mj(_HXdwV?J z?{y0G4vV-@5}KH+>Sgt_&2>_h#+S7PI~p4Qy_|NneR;^k$;Fq>B%XcZ=4q?aBKrSE zT*}WKHEV8%Zarh0Ja?!3{G5*Y`|r=saPPqT zKeu0IeSP+2`i0Yr(sjO^I-ldoo|9W(e|VLBpl#~8h>6bk_w(34n)pzDp>*ihBkiIF zR;#BfEnB|WzU|nbdyRHSSUK-2U#h=japYa70Qbk4ty>>VP_y52z4FGNm3M!Cf9t!q zU~hWbo#)(LAzPQ6iTKZN^VR;B_9oTYD=tjCRm1gfky_91hy`!8zIm^TnzNCm@R-n{ m4J`&biag#Nhbd)t)IYOj-TAli&QoB@WbkzLb6Mw<&;$UMTt{jE literal 0 HcmV?d00001 diff --git a/captchas/TNBP.png b/captchas/TNBP.png new file mode 100644 index 0000000000000000000000000000000000000000..183dafcaf89c583559a7120e988edf674b74c094 GIT binary patch literal 719 zcmeAS@N?(olHy`uVBq!ia0vp^CxAGDg9%95$LM!4FfdK?ba4!+nDh3|#iH2;A`F46 zFaQ6a`d!g@3ZqZT&volm-dFkwYWdbH?|+-mvxa zdei?pXDA{b%(27*3356@!aNwr%YaN)@`59 zQ@UQ}qhz*KyXofH_jz`{E&80apk+f*_+DXs=QoG%%&^U!Hfy7s-Sx@$-p%&i&?nll zL*;MyJ@?ypmp+kPef#x}qS6Et-t{exZda<0%}SD5A8t9vZn0d}-NcpYYntb8p0kx< zqvd*+JzE_g<)*REOk6sDiXHogqk>-@D}Gh3zW6n4hEe67T|D#S=glge{Nepdzrd@H zz3+)Gi|IMNM6CMAo{3^%KaTFZ|KMT#;pMCUp8sq1ckyTAuTePLU z{1Nx@=J;)Ghi8B9w=xJqi72n@a&6VR_J-ggHuKb`tp zczQ!s;~-4_{om>Us3OgWrwY`5$|}&bc@L`R~W&MH#i` z*Eg$_8b1q?DE|HYN6^(h+;I<-gWDo?>M>o zmKgWzGt)K2DmW(ZUzK}BF8hjINtdRj!Rfmfb$@IxNvez0d=^;P^E-X!JLM;}HPFGcm$Rf*Qa1nD|G&Kcc&bM z&Mj1E_0NB}%4=rTZc)Lo$*yNY&qZFFx_A3y<6DpRzWe)Pd(_VF1#!D~$*x@MdW-+t z+ZXfi&p0ZuUVev_m3Y{VM%VAJH(Zd+-ne}#$E@9Jf{M%=2JQlG3+u6@C@rT&FIZnS^buwaov)%Ex z=?^Q`Kacn;^Zo5BPuIMYdKZnuew|Iw?(COXww3$-t2C83Uiawa&~tiKj~4Q;x3AOw z-?7l2i&wjFSC)0ynVon31$_THb#BQtv*g(CNDOti>^kOb|3vMAy|L6`%dcp zLmAm?R{q+Wr<9tv<4*ZwF=Mf}!CATUXWH83R$tqx+jcG@F}ukxkKy*cO>ci~`68+J zD@bDJxwSTLI!kt}JuH3yaGd&@jlV3PCO*3DW&Yri?Sazy2U-h1)?HY4|43ZMnlK*j zl8Yyoaq71^NnBH?`aOBgh57X_?dEK3G0;)u@#Z)zbZ7$w%zq39PTw{wOi6qKOn(fX Lu6{1-oD!M3Bbw)^7he&_ONpD|DWa&ALX#8t0X8}vSAhWb@LoF4i0 za`vjp`PVm;$^Lwt|7_;Uey!cdWA|KtuHqTT9JVH~-PXSJhFIX$SLYOJ{zUveBxNBU z;4gn%XX%&93ma}#{k{EfQd~0YIc}4q(V>pB?^$2@uskFA&@EHnbh~-||G)item5?3 zlJ>lRR<@P$MmsC7t(x5bc>RpDW8qe-D|!AHED%2Od&ANxr;;Q$NuPFfO4GSEBRKKt ziG}met;l}${jRk^&UWp_#z}E|=1+O3ZgF^%VZgc#9bXy#HoUCT+ZE%xa@|I!RZeef zb2q4d+fj6Ex{}VjO8@^)U)@j6yuWnLQ4=W{v0v-nnjR|BPH(%r>-y|j$_jDbmuFj~ z`9w6@U;CP9|IhQvmG@DBRw`4yx`H2id4x{Ax^($r+g#iB(**&#MR!I04jeul@m9Hg ze{Y_o?#ar6S7Kq08QITy{}q39t|#XH$xkI|!tLAVxlapDJa7GB!tJJW=M$zs&Yvp~ zY${%+dV7muk=3p13q#}`T>qw-9lqV#wN5*%t@->0e#L38!wxmS+Lg30Ds0VZ*_;RY z&Lw5@H!OR*?OjPvc;V^|Q`~nwkJ!b2Sm@A(76Tnc9&ZkcnH~1CvcCN>Imu=VOtTE0 Lu6{1-oD!M^0U literal 0 HcmV?d00001 diff --git a/captchas/U7CH.png b/captchas/U7CH.png new file mode 100644 index 0000000000000000000000000000000000000000..8a7618349460f9a806db3853ac4c1145d3fc4b16 GIT binary patch literal 683 zcmeAS@N?(olHy`uVBq!ia0vp^CxAGDg9%95$LM!4FfbK)x;TbZ%z1m~V$o~^5r)7M zPyW|ORwg`3WJpfjvP=BN=PQMp3EA9T1=iDo*j8?x|3dhJt>iR;Hr19y&cp~O32HL` zxXnK>xA(Ed-$#xAb01Zl{{Bbm;?8;ROKO>X`|SEcABXOgeC4?P(8u`p#X0-x>du?~ zUU)xYDSPWzrl(gI-l}?-E+l;IqTvIxyhX)94=-Nf;CTJwc~QylQ!iatKU{go|F-A( z-OcCX``_w+T7Jm6_>8mk`t2=tPy2W0UcLOt;bHOT{;GD@_;vSYx+QJgKH1*(?VRX; zjmvGbKiwUHx3vIVCg! E05y9(eE1u+EiPp$80^6 zwRY>ZP5n;EB3#+Oavg75tvJC@znTBReVd8bZcUKiP$Tj2X1z%9>4>h7Qthotyj!Zm z*BXD3UDkZRf=l$=mJ3~_?@uh6YJKhc`MR2`GF#_d{;*-0WBb`hUrSZjopP6LPn~!# z{=!;=G||XfvAliO_l^lwAKzZ@FSz}9m;Kv&ze^O~>!&~Z;$O%uz4V1#c6<7J#_;lw ziPwK@%FlN`+_h)XI-i}ZYVHX9TqN`L!Rg~O^Y^V1n#QNKwRpei&16?T*4V&l>OvbD zLcOyl$zNO1eX+X!Tfl`E+il)_%ze6Vy}+gSCr&2z)^;xUFAn{cK2_7`dxYur553#u z|FEv!b##5i<JL`8)&HG{ zw@IF8==NsgwmDf73#WW~WBoPw%&H?@rCpwTKYU9&QhO~v?85Ftzr4-4?lxbSN%$0Q zW!fHed1sl(^dE2X;tbg4y>aipAlmllfl#8O-^Z(7Vuyte)z20@w4ud7N0G;y1IVSA b`G~)|=f+MBKQ2~aI%Dv3^>bP0l+XkK*#{^< literal 0 HcmV?d00001 diff --git a/captchas/UGA6.png b/captchas/UGA6.png new file mode 100644 index 0000000000000000000000000000000000000000..c6c007141eee6966a98bc34d9404df4b61dbe0ed GIT binary patch literal 711 zcmeAS@N?(olHy`uVBq!ia0vp^CxAGDg9%95$LM!4FfjFbx;TbZ%z1m~U|zF<07GER z*Z=i1==@`>6y=jt|gZoMz}dH(jPdOB5mEq@1Eq@uCBE zzr7C4*k;sr_00>@+AkY!?71+tZs(RKp}vyuk{7OjKZ`ZvcU9rPrwcw!%uRl}KI@dg zweDw;x7XiyZ{M}!&-3KeeUmvE53j0x$T#!#Vvbk-&t61zG`!mp>ziz!9D66Z!+C1Z ztob)Stnpv_e4DIZde-4XTx+t{KY#whD{$|=zn+J-?P}ZV!}#~nzE6JFH#pr9eS4oJ z|BL3@?|oMjvu1r>`-ki2x6a?+m)+3z-Jw1=dB5m2|KmqHcmLzv|CZ%i`dMk-<0}h` z0y)c#YL2hEX~VWpX5qra;k(YqXR%1tKezpGto(0L8_%o)%g-+go4=$mCS8AaesSsV zsc%mUyy&p}Ew?S%@$$yM4}5qwzU!XKzC7GEJ@m3k>K@ibS8M-oIJ2R}^zKPN@I@ literal 0 HcmV?d00001 diff --git a/captchas/UKXW.png b/captchas/UKXW.png new file mode 100644 index 0000000000000000000000000000000000000000..7448892414260aab80e69fcde55d23b957c4fe42 GIT binary patch literal 748 zcmeAS@N?(olHy`uVBq!ia0vp^CxAGDg9%95$LM!4FfeWQba4!+nDh4TMZd=eA`BNR zj{g5&^lhP%Q|4rgZO?xRJ+oPx@S3H%;I5Km8|LMEMT1P;s(nB0{t5QoySw(E+>`kAjO&L<*JD;ZOw*H} zWcFIsV$JT&7wogul}nC=?^n$U-&wl$bbHSHRgz}^%+DTcEzK^n-oER+gW~<-=CXH;)>>OOyXl_o^E4z=l-WA!@!8S#z8+nG^`5Zwa$KgM(En{ zn=;m#uXjCL|0?$EZPnY$C*_2DPujq=%4!#v$(1Rr=Yp>q*{)fV3C=Y4*D6?~O~RwCSgd zzqqJyoBiT~*-I^wb30aPwdY39zI){8A|$F?;~-75Veyi`v=jO9(E zpa1vw@UL8C5EGM7op!*^f128Ej=8NdB@)L!s($@8buVL;+F_wX8(Iu>6nVTksKH#6 z5pmccCBI2eQ|elGezpYL=cge&tFM2&Cz<|hVy>fBo9WJ?EBC+WMo!D=77!16^wD^3 z#eKueKCh2otgozkr1!!?RHkZ9%HL}jmmivORJpwLNt(T3#kF-FJC3dT*6`Zm=pW02 z_V)j$?XGC=b9Y$qHd=0G?6s8!FQl}Co-R$=mwO>KexmousKmS9xpFL@9cO%J^wOeF z{;|l(jFop*7OZ;{XPvcr)v4~+uB~Bf^r|hN2E5e?|9!jo(b4ID-(RWJ2#egvbWhUd zc>LUn>t5Z-O`5`yU0UwIzwh1dy3zyolOIi+rj+}1K9_Y^=>Ob3Y=M=|8d`Y~w^LH$tTld55PyK_pWvx778g|BA;@7@uJBm5%pH2g8RjK)tyH9`D`98jVrWa#QXTLk*y*T`sy2_e}@*1VGq)T(vmt6j?Ey7TFj=ik; z@6W=vwX?V0SzUOnn|Tq>>pjOV=N&J8)O)3B=fh>+emmTk)HyAxeQ@%>l#Fieu%_eT kUyXDesgw+WY3c`~?%n&Gk9hZW023&Kr>mdKI;Vst071({MgRZ+ literal 0 HcmV?d00001 diff --git a/captchas/UQZE.png b/captchas/UQZE.png new file mode 100644 index 0000000000000000000000000000000000000000..ef45d512745a15644b3b400e6a3fb3ebb32c2aea GIT binary patch literal 746 zcmeAS@N?(olHy`uVBq!ia0vp^CxAGDg9%95$LM!4FfeWOba4!+nDh3|#k|D^A`BO+ zuKxd@`b|;GNhM&z`y1OU&INDvYB;neH{;eOozv4r-rj$~e8E_9nn0UsOCo1tgp&ki z%#XIe801z@*;HryFg{LGxbA#QuABVXvU#!_U;UN3d?qG2bknM0kX>I5ZZo|;eYCo} z|9kEG;FLF#`>a{}ckR2}>T1t=BlgF}P{HE`7q0{-YO0p;&MR=W&w4P!YR&W&QZGC= z96G=(@mXf|6zSj(ubW!uDCfDH47mECZ#!Gd*IjJeZ>_5Md$F#ww|^F6@YF5FMOu4` zY@OCc{)o!j{_%VLnVOToEB^JD=&6O8XY{VsI{c@4$@h+{mDen8-TkCo^Z3rvw`K?0 zJ!->m6wT^ewm;VY_WJy{@2WxrH&_194m>}H%b!gv@ArG@_;|63YcFOfnO#Qfz zt5RUqL$*IguI;Jsk1qF`{J)a*O2g6LdA`0ef!dOJyW;=fa{N8-=9@&$NqHaFr5ord l@_2I`7CN+{g%W1R|9ThAqg##?L;}+=gQu&X%Q~loCIBr3Tg(6e literal 0 HcmV?d00001 diff --git a/captchas/USE7.png b/captchas/USE7.png new file mode 100644 index 0000000000000000000000000000000000000000..8c7782a9afc66cf14778a5426887c2e4e33e168c GIT binary patch literal 702 zcmeAS@N?(olHy`uVBq!ia0vp^CxAGDg9%95$LM!4Ffg@xx;TbZ%z1m~W?r*_2t#1Z z*Z=i1?G`AoEJ^$r6F>OE`z-N>qr z>YTB0+1*>;1HG4j-tklaT}XtN=T`SsPx`)n$$Qw}q4Py*b#COa3R+ZPk@ zb)u=Ccb(VPx%0Wo1K`C9JQ`5Ti~&AR?|O7@h^n{4l7$%K7%e*2hn(Y5S`Hh&qR zbN~|~Q$VR5EY1#d3Q?6(EJGcM)Wj%M_e{{%6 z{|0}PT7QFOW_fJpYAK^L5o_Pc8TEUyJ00$lKdn;!a;x2s;AN{75BG$|9$0+(@%xvP z`0bY;-e9-N=!T@8r19@{8(#5M);OHpe{sVX-NaJkZkwmgCBL`D=PvzWH|EcFVdQ&MBb@03moo!2kdN literal 0 HcmV?d00001 diff --git a/captchas/UUFN.png b/captchas/UUFN.png new file mode 100644 index 0000000000000000000000000000000000000000..b436270303b366c1d5116eea116d20b2cb771df6 GIT binary patch literal 696 zcmeAS@N?(olHy`uVBq!ia0vp^CxAGDg9%95$LM!4Ffi47x;TbZ%z1m~V$muC5r@DR zU;fw6w6jQ+IKrX!`-#i9s@=h@47X<_?ftw-XY!R>{_h!ISW8Y5Xj5%T^M0+}P*7R)F7IFayHt*qhi7T& z9sa3)?2CxzVUJJiHqMI4|5f|^iNbBZx zs`&qkvuEC4&UB=8tB&`>ON%z2xP3luUEYQQ9mD)P^KI3Fwo7Kmo_C8|*j8PcxBBs) zDQj1)d@r?n!=06TJk;mkGiZ&QZ!*8qL42p!`-yFF40~m3zAxtH)vi-|xr6(hK(oJj z@>Z+t_1lDhn(MAO6qsUhz-7DitoeOB&$sV<>nQuLXx5Vzi__N}auKqbRP}ns#e>t$ z_x;YCclpKj{cIn;eSY&SK7Mt2MDmM&Pdip$(!E!jv1XOpVWA@%S`2g)dAvCe3mu}E b`G~(J@71v_%UGO&DU!j{)z4*}Q$iB}g``C} literal 0 HcmV?d00001 diff --git a/captchas/V3YY.png b/captchas/V3YY.png new file mode 100644 index 0000000000000000000000000000000000000000..e08e2741419abbb72ea13f773c919bc8427a7893 GIT binary patch literal 667 zcmeAS@N?(olHy`uVBq!ia0vp^CxAGDg9%95$LM!4Ffb)~x;TbZ%z1m~uHS0|0fvVX zAOEe-(bHPk^+&9%%sh3U_mNDY>PITMmdWRKdR(+yRqpWqAHSsKm5e zU9NCgBKfcL|73$J8K(P^S>BvabDPc7|99iXu;$3s7ngo8G*9k%o%&`k$H&v+@dkfP zKbs3aijU#4{;^ImCG_=vhqN^j;eMMYY~Jv8<)1ytmflf610E#S%0E1~a9Tf8R&B|h zk7;5xJp8XKcP``qS{c23dZ%Ujp`|LtWyaigq4oV+?SAY(^ZjW3?BeoG=If7K+r9SJ z&BVF;77CcYm^nFW-`88scSH6hm0F*7Dv4NeN?t;GZ~xXMJno*SF8qzTy=vN=4d41U zXYKU5m-o!%xy{6wzzs=H=cFHZ{xfa*12s?EDY0C|%go;L+`H|y`sBGOUlhM&x~c9K z{HOSZf9CmyyIk)|Ki36^ZJqX|?C_k=2^SX~XWjcI>guvz<@XLxy+0%R>ZON464oXs z?|F}<{60)cNoOt1;eC_pnuCHc$ qM7R#B&G?pskS6?CQ{4{ z)LU~c>Ra>$hOLKwtzES>EiOG=d(G(&cR0ARPrJmw_qb!ZzGK6)lW)&_n#y?EX7w&BTc(MH5yZXK74!!(ml=Z7I=4#aGStnaI*!4}D z-M##9{jQqnLW^%I{SQt&v$JpA;>~$J@6C4C*uD;$C4X)5!}LV;m9xID?-PzKY(7+F z&T8m=SJ{4p|5Il<<>y^r-xc)P$|aiLTpqsW)x>J;p8dkU^-15h{z<=)(0%9r<$ZYz z{J)(0c5&tVo}_#4_f4Fa(fC#4lWiE!qUGlfzOzr`IQ{6?{bb+ES7yFG@;U!O;=LPs zA5WIQVe8+0Q8ar;ZF}*F+Jf)*4o~?Z*S#Yq_kP;Pqo+Ju<2L>(cTOr_uV3W-;Oa$I z{-34qBX^(MFRI4(@5H)r=GJ3Df7Wf+vR{+Ec=n4LzO#Fey071uw{?N!r`Xu%nyydd zOSCsu@Nb^;cjM~Sz(9Gsv9D#rw8=sBO?xKySMhP}X-w2h c03Vqz1>AVL)7?xLm?{}OUHx3vIVCg!0CZYRWB>pF literal 0 HcmV?d00001 diff --git a/captchas/VBUM.png b/captchas/VBUM.png new file mode 100644 index 0000000000000000000000000000000000000000..3013894e6c3ce1ae18a88ccecdc2a447707741a1 GIT binary patch literal 739 zcmeAS@N?(olHy`uVBq!ia0vp^CxAGDg9%95$LM!4Ffgt1ba4!+nDh3|!J@?m0*mzPzx*Pp(d6@$EFPm zju8_SbUXyaRLB!PlK+kKk8$7QKkWZjPrA1;>F!O7zSHSf|6VJ-)^=9l$h;fxepIci zt$RJC(C-eTOybsO02QA*M6r&2N+)-hSWwuz&JB z-nrGaD|_ZWwLk84f5|I(%dX-TpAUbkuzsD+zPGk^m(kp>$+bso`=|bv-nG7_EKGO3 z*ZmEf{2oMytqEW9cwXF9ou?*3`$X5RH!ghPT=)3=pR@ZtR_b#7)t(!%e%t;JuS5SY zdi3jutnanl?M}C4N=$D0-T&RNMSO0XcZ94(#jQB8#IFn2uVOpY#6gX8ftI-bG3-j= VJJXcJ;Rj5-44$rjF6*2UngAHcP#ypP literal 0 HcmV?d00001 diff --git a/captchas/VCMC.png b/captchas/VCMC.png new file mode 100644 index 0000000000000000000000000000000000000000..07533307acdd8da1346541c653028027418eb65c GIT binary patch literal 693 zcmeAS@N?(olHy`uVBq!ia0vp^CxAGDg9%95$LM!4Ffi44x;TbZ%z1m~;H23G0t|su zPW}IHWSMjHsZQh6)~Ym@ue*=AM10}u(cE5p-#l|${7vfx=|(z=Jl-6Kg$`|KF`yQ6 z*0QbFqE6rI*5b+T3lI8RX>09r*y)S7@rAJJ&o8$nae;M0 z7uKe3b@%4IxINvE?Z3{qwU^Sk_b-A_V4owjsDa1b=MiCe~%8YD?Wei*1R>x|NZ}$+r6TwxAk1qMCVVpdK>LmDdjJW z_lvlnHqDyTY5S3LZa2TzJ~(9fX>!qwmJNsO)-RRmf7!e);%eAKHcgYl#N&r2{nJ)j z^J8Y!v5k>YpSn^Rzo#!awD!Sbt@&KyN9P{DFYo#HWb;KS5%8`P}=#y+^%<%c~{@ZB4Bc4 N@O1TaS?83{1OUv;MGyc0 literal 0 HcmV?d00001 diff --git a/captchas/VCUD.png b/captchas/VCUD.png new file mode 100644 index 0000000000000000000000000000000000000000..544cd80e73c907de877fba1add0e7d5b0bb11152 GIT binary patch literal 694 zcmeAS@N?(olHy`uVBq!ia0vp^CxAGDg9%95$LM!4Ffi46x;TbZ%z1m~cHis(0oIF( zr~dyps!V7S*q69qmwDOR?H=3sGribtw%PPN{-Hegt^aq%7sis)1lm+v5;+qioFu5l zTq@m`DAD$AamDP!*uzght>S)Nw3xGGp=8+mi0EfU3qNk%air#vUhC%*pVF^u*Vwrx z>Ms9~qBQlemYw16Y1RMMJlWP%wq}+g@BgW5E%dh}?|hmc)&IESxA66ixqsi6-@45*!RcC+68_y4miDhJ}54KG@zN`9CKY#X4%e}jQeN!#7|K4%+o#>AIukEfO zuKV+=ULQ5T7ynLRN8s66hnrSaz5aOgw4)PW@-@k@>d^B1_QiYtygwpWf9mXSmbI&% z%BgYfI>!@Y+`|eRluRUHT^C!cO(LvfpYYACBnH-xsB7xzf`m;>gSV`%ClA z|J7`tGXIK-(wfVxVWl5L^~%NX%ZJ@^>1+OX@3+S@hS~r7rdm!>?$Qt4$o%Hc#vKbo z>T1l^hW?*tVz$!rC1=FH%@6)cZ8>$fRqkdjL;p06_nFt~`&+9%_1WIZ65n&};Qx}h z5ieXnJWclddGE-y_Ski8!dLI^IUnqHeDBkv{rBVd$Ef}f_K149bVJ&;?eVSJ-=2E< z3hl3{Q2HYFBilaV-lM~ZqfY)2d++}0KU=2iYOT+)i7R`k7w!KUGBPgx(O7+HH84Fg Nc)I$ztaD0e0sv;SLrnkx literal 0 HcmV?d00001 diff --git a/captchas/VDS5.png b/captchas/VDS5.png new file mode 100644 index 0000000000000000000000000000000000000000..8c6a0d0ad883f3c126046ddd8f450cdc9c84fefe GIT binary patch literal 691 zcmeAS@N?(olHy`uVBq!ia0vp^CxAGDg9%95$LM!4Ffdhlx;TbZ%z1m~U{RBU07Ibp z)c^lei#Iq$Hgy=-8VCIKvs8J*wN__^AHSsK)HL z|BCa7M6ylYhyN!`FDk7$pmU0QwweLwoRi6qmsfo1`4nj<-+6cPO!;$o+`!i$8JjMe)AZ_rs=}UUPhHZDsKE=lyf-d@)69*T{YrFN^o& z)qd+$kb0!xJU`@@>Dryh|CF7#TcW{an^LB{Ts5 D$@V~0 literal 0 HcmV?d00001 diff --git a/captchas/VFC5.png b/captchas/VFC5.png new file mode 100644 index 0000000000000000000000000000000000000000..ebf091085543f6b787879333220b01220d9056ab GIT binary patch literal 699 zcmeAS@N?(olHy`uVBq!ia0vp^CxAGDg9%95$LM!4FfcWFx;TbZ%z1m~V9{a&0fvhj zQ~&=@Eh=aY;7e#+Zp!?!{N7ZKtQOvzxtC39Jucd9=6Cp>65%8y?NiR4KPI~Dd#*{{xpZMe%=`b3^Zu_h`2M}nboXuVjMZ9?@)B2a92PpXp~XN)k;j`- c=03*bDSy`douslBm?#-MUHx3vIVCg!0LxiJBme*a literal 0 HcmV?d00001 diff --git a/captchas/VTWE.png b/captchas/VTWE.png new file mode 100644 index 0000000000000000000000000000000000000000..b2f4935bcc18327a9cc0bbf4e88e446338206d71 GIT binary patch literal 725 zcmeAS@N?(olHy`uVBq!ia0vp^CxAGDg9%95$LM!4Ffh&Wba4!+nDh3|?Yz|nA`F2m ze*NG7#?GZzK=H^8x%a*%uU~qoKTTq@cJ#d-bV{lBn{X||FTXa`mPF3P2q%eY0@Pq0 z$^XKb(NG#I|Nq2i_m$Ud+Kn!M_R6`Np~2VxU-NM1nb{lVk^_s+CBNVQIeSBO>TS7p znS!%FuFUt|QR1EW`Gza+uN!~mj@4$0ODZ^O_RfKC`SL=F)`?r?ER`^`mHaNm)a}j4aY@_M$CbI;(<1NV z`;Gg~A4tl&cdP%_^@zm8iVbE!n)~Kd;wud^8p_6#Mcvy7El_ zbl#d9w?9V@$$S=w27U4Hy{$M@jw#~#~rA2#2cB^CCxpr3Uu zpZZ!JoAtjk^+Q8X|IrW5(Kp`pI`jO-SM?9~{+zIA-pQ{VKV%F)@AkU6PdxO0@1)({ oUl>F0KlyDhszuf005`0DVTj;~W*=@rU~*;fboFyt=akR{067X!bpQYW literal 0 HcmV?d00001 diff --git a/captchas/W43T.png b/captchas/W43T.png new file mode 100644 index 0000000000000000000000000000000000000000..3631ba50ae3782e306bb2425e53eaa1a516200ec GIT binary patch literal 705 zcmeAS@N?(olHy`uVBq!ia0vp^CxAGDg9%95$LM!4Ffes^x;TbZ%z1m~V%}o~5r&Ha zU;o$NtnCm9E%h}>+aaEQE_mtPlvrcNoc!o*xz!$vYhC3V-ksdgVxXhQ4oLWAx1a`g^r&HeU`s zeLueBf8g~Q-p^LaH5!N2?y@S%+BIvzKYm`x-`8ia`Kswv5_+TX(Y?Mqb$g{PY?j-x zEm!iklioUGiwK|Oxe)oAA?%X_&TKyPSAEiqbwN8N9?hTr{QtdRo0fmymk4`De8071 zb6Sh*8mYIDQ-T&SSI9Lt{?ktQe9urcRzLYapL5>*?fYvI>b;l9>=9|pZ|qF@uD48} zZkmA&x~usg zbUt<6tX^}9DA`*Eh&VUp*|pasP_Pme1OOaUa9g hN~IJ4NkcyvjlPR7SafDbG%#s0c)I$ztaD0e0stGlL1+K~ literal 0 HcmV?d00001 diff --git a/captchas/WAP7.png b/captchas/WAP7.png new file mode 100644 index 0000000000000000000000000000000000000000..58a98a167ab94c053e16f576a93db6f8ecb84a64 GIT binary patch literal 729 zcmeAS@N?(olHy`uVBq!ia0vp^CxAGDg9%95$LM!4Ffc9fba4!+nDh3|#Yw9b1Y84W z&iem9_1QtG(_L0hGf zdzMwpS3myddc1T;=xwDn{f?D(Us|I#toPc;94gIe6s!Br_}Yv37@5kqxpS6;%}czg z-(;Eo-RHNMz}n@#(Gh1~dwdS~X3O@jQLk}z)Sh?ArTx#!e&3!}z1QV%S<$((=d-HU zDYr|$_6$|+U%4yDc!!;Mu6;%NzwOdtza^Lct|{A_Q~KvyK-C6ioqbPrrX9Nd@Lh$C z%=?N+KgEN~S0DXr{(kv#zU7O>ay53}pEJ8BFkT=fhQn^Dr%(Rw%+J33^5Bfe<`*XN{`}7+|LNDePoZ(*Ve7lUnJ!cGI~Q|C z_}V{)+cG(mc6~T@x%=;uuZOnhKkiLDc)-S6(MgfAq=1&5>eJact{H5}Vh1K!22WQ% Jmvv4FO#ltVL%IL} literal 0 HcmV?d00001 diff --git a/captchas/WH3C.png b/captchas/WH3C.png new file mode 100644 index 0000000000000000000000000000000000000000..f7f48b2405ea27113ebd6f2154d04e721543a774 GIT binary patch literal 734 zcmeAS@N?(olHy`uVBq!ia0vp^CxAGDg9%95$LM!4Ffc9kba4!+nDh3|#iH2;A`F46 zC;$JS`sqMRBG0tc3vsbKtLNSFYwFk{Dsf%+^d_4n_x|8nd+Xn6J>cnYKGt(P|? zNee6d9;&OW(MU6GNR$8Ag?MsvIwRobvJA2MdmD^X7 zPpm$4ne*2Fhkw6jzua-!!BA@Qso<;1&q5#Sybk~V(*I)i%;h^4TS;w5mVN%{?W~LD z>37!~F@~nzUNq0=XTz4$E%!RN)-jcYo}3)jTkmk|uhYrc%KLih2dbX?XSKeMkbQq- zeP;~km%O5`-Ynr-&6-)WxV0zN6fN8~>HigX$@d%G_R1R_J(zB2r1RqBkAK@^7JpT~ z9d=B1^{0x@bsEe2H>{T}`}sL*0r&AgQitP2o${Bm_7rW|dX#s&T;(F`wT6kY)k;Q!7|rwYWC%$g!#KzHUDAHKxS)pYGggk-PWA_C`&5_jq4z?F3yrn>D}E z>UOn$sS+!FI6v@?yMDp8hB(P>$)Rc)_rrc4HF;5)2P7 zz5Km@)7}$3$)-UpV*g&$g{S-VD(-Mhw(>o_sm60}?RmL|cPBTr80aYScyk;UIz&z8 zBf-R_Q-ZuUyMNUA&Y$gjYMYys?6n6+lfTCl->wR|>3sOr)(R23Id&7K-&0wyTg|Ik zxA?MO>&%rW&qtjWtop6K=(5{UJ9hm8uPvIlo9eB(>oVuB_07{tIk~Xurzh^aZgRNq)Xnq`b&1;M67$XJ zN1yOJoPM~|J@n)Lu=zh#OYWaurf~mr%~!iuzyN<_CH_%+?w_=Y>6Vj29&fn4UXwj} z{l;@~KQ~-WwUxUayZ7JS??*x`dc|5L+x6w(z9&`d-aYmI|6`}D z!Io`la6`jw)tszUd^X`BAPqGBGjvXpIEE4_vLn_ zLse&-_KQ|+dUss^UiSSHB3r{AeNp=ooS2=PopoW=yyL!=Yvt>gSqE>gdfa?icKU|9 zAAW7v*%?u5w~Xie@~KbvZ{L3B;brTX#G_piX1|}$xFeZy>hs6+3(d#h*tc*o=5|^f zkDB&$ajNptRhrNEc9m{9WotX-cBTKEt<8~p{{7PAYGBDVzq8yTN8GS(XV;pn55Z;Y zF4V5M`u)iB`E2)RMz){&B@&jBo)|in_tFebCAX7z|LNTh>nvXLGI(?8ftTLgQCA-n zYQ2ft+x5=&&1Am=)p@_7rW(Cl@M7+FS^Hb**}IFTeO$Fbw6(5*{pi{V<2j$S(lFav$F8STt9#-`3=YzP*=iTplWxadx^>8o8 z>d$^5xs3Op|6{QB|Mq3og~$FA3j}|?-Ff0wZW;gejrmiKyqB8u;#FcN@1=ize=3j0 zEYym)s{3GV!EyD)&BmrbUhj6V{M|kGeVT9h=2g)jPFAOjo$|Y|ii`h9?V35OKYp}+ z&lsQ1A(1`pbX%$6^55PQ7F|D9TBf@1?t<5b6sHLEG}RGbw8CQb(hoU*f$5gP)78&q Iol`;+09K@6fdBvi literal 0 HcmV?d00001 diff --git a/captchas/X7D4.png b/captchas/X7D4.png new file mode 100644 index 0000000000000000000000000000000000000000..b3e8a66413b3ef2270c52ca3a1cd088362dbcba5 GIT binary patch literal 711 zcmeAS@N?(olHy`uVBq!ia0vp^CxAGDg9%95$LM!4FfjFbx;TbZ%z1mqJFnS6z%{UA z(|_H`j6zN$TLlV&6}fH zwdJ7Dp#;uEY6yRveYY`DqODNox%|AEy$^~enC@S1aC(N_*VzttUYyTcVs@#$b5{C- zD-s90N|*A*o;-3i%&&g!^*!Y)*MFDN6`i}Sqk2uDO!@Txm8>J5{B2|3GUWwd-}!D| zZ+CwCQ$Oik?Vx|ndG{W>SML%p_2Z Ze9Bw>=FW|WQh*7R!PC{xWt~$(69Cz#I;H>s literal 0 HcmV?d00001 diff --git a/captchas/XE48.png b/captchas/XE48.png new file mode 100644 index 0000000000000000000000000000000000000000..5a0225244b0bcbb63420f99e9c2a804dd95c00ed GIT binary patch literal 735 zcmeAS@N?(olHy`uVBq!ia0vp^CxAGDg9%95$LM!4Ffc9iba4!+nDh3|#k|D^A`F2s zU;o$NtnKI$P&}qN@3ptp^UU2{1~WJfO?EH6w##F2?b&;bwQ7fj4sB>L&{5>^=Ab6C zV^8ALptSc*|MX1O1bO-Ey*{1udf&doZc*Bme;!`_U;AsK;a2{ir_9>(%cktuQ0Aq1 z-uP3@)rY6u-X3_DzmCUc$z{3MS1(MgzT_}>Tl2&|J=fhYGxj9>xRBhQ9b><3alHMU zV;gPE=BcdNVS4T1!fn@s#M77m*|lk6h+lu|_Iooj{>3U*t^Jk%$tUWC)aq-uKKsow zvS!rY`C9zJ+y2}9`&t%>zh9o)8anm)*}v?s&*eWi4owk$$0eP+P~G~?G+m3E=gv1K zT$VGpk*>2#JNsj`Bm2Gexu0|I=bblFT(erMw;o%FEq@U;WRcXzG~R6aK6+&7J_*Hl7v56ZXB-QRf5*gD^G@Bim=yVd7x z+@T%zU+VL(&?Uv(N232!Hh;Z-qjA#g%J3gEUO)Vvw^HmSbNjyQT?Q|@uG-y{|L{XA z;-B|}IY)m#e17!X@#?+S+mF>ve;9E7dhfE?pP$&)U6|W&`TWkKe|^`fzdy2Fsd``5 zr2jT=Rra{Nb*UGbXV=Mjd-Cm_*PlG8a@f@qG3}WpW8(FxHtl=3xUy?E30TT}e6)R= z*oO%^Yk%wN=QYM{SN*SU)t$&WDX(|w`Gg23iD?3Dsx66}iIg#q@VA^)Tk*Sh7CSKE OGI+ZBxvXEUt^bkO4iO}R6H5uHFL?mI=A@^?@lIgCT?gkh;Wk7QRJB> zz~;@-tlDx==n%!iNA_P-H#lZ%}cUInVwwciTPh0>{C;+sU;&!9FjKyP4@l zco)m(yr|rFZz^BUm2Fk0TV*WkZarY*Z9Ojk=-ctXAsa62zPH!w@1>yDoC5(7FLxzb zNxxw0d8@g6ax#q=zYUp!m4eAVxU8B4-kFIZjs7WDsK=RV~Vua=e#}BgS6HPR3=~O6fb$QajW0SPhk?9FJ0by=i@7v zqbmI`*1bqr=pXUq#+0nu`qYY5%N``K-tXagYwfE0&iScc_dV@3HKv~3UxaMFIg09Y zbA|mm5SW=-@;dp%gV|a^-Hfv@i1w-%EABgDSDq3-)gY+5qjb$(%dhYJyl+i^9=t35 z=sU)XYgd(3Y`wgN zmF}AFl)rx4`>*nMOkdgc)z~DQ`S*QQQp(P$7v!{`Nph|D^h#>`{zb+8nMu1v>cfBZ zZeCX&8}iArbjFT^tFx=Wm(SRD{awawqw+tyrgcUf-*tc0F1xN58-1=aFP)M6vW~h5 aMPFLSYto7SE^%N=X7F_Nb6Mw<&;$SxZeRca literal 0 HcmV?d00001 diff --git a/captchas/XFCT.png b/captchas/XFCT.png new file mode 100644 index 0000000000000000000000000000000000000000..842cfa6ffd8173ad9315dd447610a200ecc0d9db GIT binary patch literal 713 zcmeAS@N?(olHy`uVBq!ia0vp^CxAGDg9%95$LM!4FfdK}J;4+ADf}M?Wq+Kj+Ge)dyS>W93iTlVMy_*+aSMYmtwJvm` z^Pes1&&_Jz8NHtONh|Nzs@Nl6=G-@2`IX=Q&EZWt&g%si-%qyXz4k)8GgNcw&y9P; zCU0KoD|;>CwP=jB@bk9(&qDo{!grp2Ec<_XSzG(o%6+%hzJ9r`oPJRGwpaDLz|MJG z?beJR`4{@iaVNR7l%~ku%Ie8F{ruVN(?9oF_b)j5`(K2)rSR4zP4oHJywZEOa)a3; z-ql>$E522irG%d3p7(I`%m?$&SJkQ-URyo$h4_-$^>u#}H@xq+JgMHV7i1$Em%m!= z!IbiqTJ@(Kw;$SWeClXr-DlOWKB2v(@_UZ9lokZc+P<{!m(IQH%O?x2r;0nrI8{Vg z>#N`93z)8P*v!hsr~lEun}0X!HvZy1Z-vPHJ^knOW#g7se74)Qer@{k xigJ10#8pRke=^WfEOcl?3+2oo%s(5{I^$xvy?{xS!PC{xWt~$(6986|PdNYp literal 0 HcmV?d00001 diff --git a/captchas/XPGT.png b/captchas/XPGT.png new file mode 100644 index 0000000000000000000000000000000000000000..90b1612bd703e0a567e85f2470fc8f536f60ef5d GIT binary patch literal 717 zcmeAS@N?(olHy`uVBq!ia0vp^CxAGDg9%95$LM!4FfdK=ba4!+nDh3|-MqyHA`FRp zZhfy$eeZfjBP-%~!}A|A&Xh-PH7#R1<$ozC`|gs9|IXZFxH~zKGcm$RVwymkY73Q^ zf9CFG+!1u@xA@=n30sODtKRc{^-@l_etz<#%DZN3%0l^HpR@gMCoFg^S+t6+YTfmt zYhSI*I^i(!m-<%K8R2&rdkul{CxPWSYeRoi|{{vK4;H}U=H?Z0#XI?wrikjF2- zrfo)??+&d$qP%w+j4s_t5J4sSVq7vo`w42(|gwpUCaIyZZ6<`*ZfJ(tRVd`r5C;qmNfh zwAWXw;)v=Qe(j2*$NAj<*Yf|K zd)W1U<^8`^2fPHGO;&N8Gheu1!!2*)C2POGX5MoB!EEu$QK^tM6vY9csH;cWl$CbJxp~#O_}R zdm)&8C3(}l`DcUQzMFPu-`bPq_t^LS+3fYJBI(|a^G&%|YBcjE@WnsUoOrZF=o{On z?xNatA0AD*D!+J}dS|?G)T4mo&+K0v7UVp7-y$O0@Z;lGTJ7(I^FIG8Ig}g!wIb8r o+Nw2?bK>hKvD>MaB97Q+o|js`X~E>hz+}qc>FVdQ&MBb@01)a>$^ZZW literal 0 HcmV?d00001 diff --git a/captchas/XU8Y.png b/captchas/XU8Y.png new file mode 100644 index 0000000000000000000000000000000000000000..5ba780ef51bff7c40dd533e137ffc0ef2497028e GIT binary patch literal 749 zcmeAS@N?(olHy`uVBq!ia0vp^CxAGDg9%95$LM!4FfeWLba4!+nDh3|#k|!9032hxV#mRT^JgsHd@Tu8U3pNtAfu>QQ)$ zwXkv?YGO%rY@$rKGyXl}8Qtf5{w)4yp8R|M9^v#gvy0AcUAW~HC- zJ+$l1jv3SA8MQBO*!Mu;Uz6{K#Jv^qYRjH)IA?j>{?~NDYqzf4^!;+~!1JIA8^+RD znLl3w(zj1ZvblWlyU!+@@ZPIkMB?_!_O9b2j$%|4`h2==G(9pViT) zt*0v&pI6lR-Tdaq)ch*~1-_d*CR{mWwPwTecduS~n5A7dQwN{v9+gdl=l63&-2#Rrfv6}-*a<@YsBCDxHHSr z7fG&qCbjuI@1?KLnXc^5{>=C&@Vy*Q-Ygr*X6wp`-<>l5p8fyw)qi~$bGnDg&G7QY z*8i>FA1F7eGD%HNF$V6xhkV`k0;=zDCFTeoD4)b*$`?{yV0-O-!gIS$J4+d>yaN&I!Qb$!G=|*uIZ}( zt#}n%nBO|_^wo;cwfy%&+_Dd^izsi(KgE=`_pI&joC6!a#eDp{`^}N_)1>@gscEcv zko)@?r-QrqpAD+UA_7Ig5u))QK3gStlRW+%7z5T;vNZ&2D$ipTzB+vvYZ5^!!y{AKm@>l39OKqU@E&@#kEm3i_wM zn_N9>XVToSAFjKnMmW{{nqSYEM5RauCzFrN-GY4ER^8fC1Wb7hp00i_>zopr0P46l Ap#T5? literal 0 HcmV?d00001 diff --git a/captchas/Y5L5.png b/captchas/Y5L5.png new file mode 100644 index 0000000000000000000000000000000000000000..6fee6a1697e1567a58c18ad95e441490c68066f6 GIT binary patch literal 657 zcmeAS@N?(olHy`uVBq!ia0vp^CxAGDg9%95$LM!4Ffc`Ux;TbZ%z1m~Zr&UN5r&65 zUj5#`sanvqD?%aq!yI|5`?*sj-W)u=X?2g~^Y$&b*1uuCU@SRJpiQ+Ukux#ENrE~| zm%51L9z(Zpfic(r{!pBmSQ|g-UAFMF@adgWcj~|VwqxDBc+WY(LWB6l3+n%PKdPDb z$vSO@;Wk!wos(%D*OOm7DqZLIZLQMt8J~kZ-amKO_xZBJaCQ>+gFe&eHT6MadMAG_ z*loYptm?od^R=&(i;i3E^w-~1ecxsOl*RkE#{7HSw)M5(HVM~j`N`)ZpJ?&!s{9{P zY&fkW{+tq{Y~tZxAI(<(cq8Mv$7$D@h!=fRTjP389DVocg34#P?imXft8e7~K4Zh% zR~dCtH61POPtP8gRev6|XKjaUc6r%_r}dwORr1zst>6E6>7@TV7&q;f`+ob>E%j&d zqI}O}EfZT~oBVg>-k05&6D^qdbY9Kn>63(Y{nQ^8Iv)`C_S1X4HUIkK`In~NU1auQ zLy+2{6L0F}jy>JeHRq`5#qSZi+dgiM`d)Z5`M#*!&d9PStsl=tr0R#5tvP%2*Pibg zJGJKP|2r6b%6zMM-R$*!v&(Z1&ikoYGX3U%^}T+pj=Mk2dcJ>mWjN1ap+g&540IHE fyg8`E{J~th=*Gr^#@F+KNsYnN)z4*}Q$iB}+ng`8 literal 0 HcmV?d00001 diff --git a/captchas/YAGV.png b/captchas/YAGV.png new file mode 100644 index 0000000000000000000000000000000000000000..566b20d992aabba248a08182cb97ee790d7a492e GIT binary patch literal 714 zcmeAS@N?(olHy`uVBq!ia0vp^CxAGDg9%95$LM!4FfdK@ba4!+nDh3|#iAwy5r&IP zF8}|Z`s=}zOwA;PH)l=ne(qr_@D-4Ky-CM)*X`pkWG~F&@#Z)zbZA41fsP{em>z;* zYqwsrs?sl6{xNZ_=gn(AZ0%b+GaqeZN_+Z?S9WQj>;L92&mI5CzId<6@!R=I>5B$I z^Y+TbBgc*R)I9ijlTXY%S+!Dq>iz1bcURy2DJ(m3?Cs|{_t?$WG=D!k;iXp2QUx}v zibFY}Q-kc3*;jvkc}jYl(&ZPL8=iJ4H5-b*w>&8zK_01;#WXs-nu&@8J*K;e++>~8f zhKapaw~nQ5Pv@)nb|c;MuEqV7b*oZlY*b(rFJ=#YoA>92T-52H(9lDNq>831)~z|V zb^ZRef5M{*jl)u$)2DZGe>b)cUo_8p#Yypl?H8n%NGAv1zWeNxUTk&3`Hqvm6}?mI zXIi|r*f%Hh+&9&d^G1w&osO@Ld!BhRGE{Ph$gw$s>sF;k9;#FQ*yk3PeD~d(=k*ok z|F&|j-x!uTy)*Rp+MjpN8p$VI=(+k|`;_!u)9~D|!@>M}QosCDf9SJSn&sa%OzIIE6biOEzSS@{@a%FI@4=s=5v`& oNaRe6aFUoN(5Bi#G4qIc_N_msC)JHTX<{nK$>`;z_PNcF{A|7_Uh|Gc32$m_rNGk3gS^#1>S zv+y;ayEpwz%>9+*pw8UtW`F+k!?(%DYc=AoPWiec@qby@imbX{C8t>)357km5NC8g z!Z5Ve_s@qVS6%-WUv-X(U}Wx+|6X?kcJcqhJF zzW;)COvdjC3pRB5Jl`mN=et^7E#EtBC7oTXj(#&Y-}l2S?0fBrs_1}gGo~ME-w>|) z>G6pft?RrwRv)^4|HW;Es-wRa*=w));PQOg`j30dtd-UT37@<*^ZmNh>-XxK9yWHe z*LHbo$7Er0W{$s<`kI$_Zae4gY@NvVyLI8AAlcS^FP2Y~m?qGs+LFkb7~w<}X8nWI WpAS-M)~*94NCr<=KbLh*2~7YK?@a9g literal 0 HcmV?d00001 diff --git a/captchas/YGV4.png b/captchas/YGV4.png new file mode 100644 index 0000000000000000000000000000000000000000..68f923ce4850728d8b7794644634624e07888d58 GIT binary patch literal 698 zcmeAS@N?(olHy`uVBq!ia0vp^CxAGDg9%95$LM!4FfcWGx;TbZ%z1m~Zr)-80f)pD zzy7U%6X(*kNX?M3Chge68u8V++Yjp4ncDa6+ICGWbIbfUvKPvYbQF2KISvaQ+R$P^ z9cIV&}@55CS z^O&2frdcgNv^V_7U*EmImtVVeGV|U3Kb0B3WeJsoeSSXqmg$|I z#XVE^C-K^3&0V#_(fYQ_^wp2HsqT zn19~iBKD=O-t{)(|MQT>-Je(PI34=s-OCSA79SYh&rIa0lYf)A@O|EcH@4^b=1)3R zJV)tmh=7W(^0k?;p zPk-+>($iU~$x-fCZagplX_L2}y(dSOblXGKyKl93GyL*l^X6z)Z8<1(D1kF^LyJL# zlZ1{U&olu_h1aaS7L~2LTckf+JHlnT+^%O8OK$F3(fZeY|HjqR-u<{Yy?kocr2ey~ zT~5IUzU%I7YUeSUXDS4pa=N4)o~ z$(v(Q(p}BJZt>rfdLHhbg4s-Sjh@{t*p*zgeB0S}|I^*a^)*Kj}q-r&ahV7d6klUQ&-)tfBE%P)fuPesrOEKhlSm-K6>Vjd+;QS zis=#?^WHQFC%gR-t8e)7ckPSqhY}?oY40fs&dYB0xH_+F_2*hmtB8ZECwzRg-#({~ z!+zC+h)|bjcGtB3^lCmR3s|*k@2fnn*ks#vrD1RUuYQe+_xbQOe6p~S`1_Jv{kZ?X z^l$WNXFNI__`UD*VYTdr@0SA$5B^&6Fe~q0Y+}&;%U9#=3!m;zc^9Og+Z$TkYQ4{1 zPHNq;=482fo;S0$rF?ocw|Li1|2aF<{mV=3L-yQ$x@O~o_BGEo&$iR{JtDH~$hqH} zRrd8w<$AGe$I5~l+s>PUu50VzH(X1JaFUoN(5Bjw$eBnD zrVrohDM4N{ck?Qp;mP(twdb0#u8w!qZToj?UzhCr_Mf*#rbYiwt-+co&82obj$an7 zdhz{Xn(v1Ryf0+7wESH6KP2M3`-iXJE$%$!wfK8*dH%9pyBQ8w{bIPf{ng)aK9hp1 z_xy7ou06D-=2+HQc3c0y?RU!E-|x4}Exwr8I(JZW!qmTzc?P%Z@pYzdcWaEc3$mG zDWhLU)bEs^wMq8Pf48hINSn9H@yOZVM`YJc7f7~yGrYol+4>&x<)LINoo1Etu<3Ggtxf<_dB=yb8UU8 zNqw~7_lV2uo4-UIj(%@n_WiQhH_`Mp?T!22mH(VmSo~s(r0iPZYp>aBPe_`a{HpQx z?C(vddDpMkjCrS=6Lk67Wx>K@tKR2cT)z2Qux)u(Woo(6oEwjh#&SKDKiwZ+_fAIM zUh$-Va%K39b(OVe4c_QS+pTD84CB^b-cmo$)mTSyTCLWV80saHKkPMUrJi4jFSG)t OUj|QCKbLh*2~7a<4Op%K literal 0 HcmV?d00001 diff --git a/captchas/YSRA.png b/captchas/YSRA.png new file mode 100644 index 0000000000000000000000000000000000000000..18362e2931495d3453fe1fd293c00dedf231cc2d GIT binary patch literal 736 zcmeAS@N?(olHy`uVBq!ia0vp^CxAGDg9%95$LM!4Ffc9mba4!+nDh3|-Ml#l0uG5W zPyfcxj9IWiG)hDI_ZgovKi92F6RxYdR>7GYeZ6#|+wbXnnP*K-t^b=uHCwM)wItKOpeS+j8*^oYg5DA%4IjN zMQjUl$%weUqPTmub?8x@wJ(&{>X&@1d+vPmecKbIl@Bi3zB!qE`&4A|-nS1*6HT6U zZCjU}7n=Y7nc^y)d(~}E-b_8%JZrb~TlWLo-f0Mmm0KP1D}UFqFK@3$bg8{)-`=jR z(<-%R+^Cw^aBj)ji0h|U_P0HJ*4;U=!djVa&D*Z+>e*V1JbC-E{pZI;zusQY>Uv*MksMvewCE=ximsWII3yX&xC@KBM z{8)aTr0Jr$>bd_UwX@$!{`a`H&VK#o$z`8Ail#?yuGP9zH&Lk4Z+q_DN{Q9Q>-qNU z@46B2f7`F8Yc^gud~R3p*ZXg$Mb%vtI^KiC{9LyyRP=zI=@HM{RqypPx76QMUyyF3qsZgUaaickh86>A zFzYt?D|lq*{@VJ#IJn^(?_!(vSw*k8c}dZ1+LKy1ir1 zy;}c$qQ`hX{?Yint>fro4-&DlSeOsCD8Urv0wCgO;$a_wfW+Jczc$dcB58gIjPR6R}3mbTcD zUoX5&e)-(i4YMD-dM^_4BCO)+Puqm8H!2T)IlAfGLUmQSd+qu!zu2zWq@+GmKJ0J* z-g6JX-QPY%YU7y=TK3g_LKDKzZd|qLvt4=85~Xsr@BYdE9+!B@zdbhBBEa!tBCmhe zYmI1qR$awJ<5>HZ@r8*OJ@@KH{ce}u*Rn=V=|{&>mR$2U_I^uyejJE?{^`$QGw;(~ z9NKRbZF4^5eGJ_lv$gD=``$MbSN8ro9{iJHtB!l!=S&BH*dXI zU;iwzsq8J&zneW?oOk);zAp3sT6_ID4_ELD=_OS{)Jq`$n7OqSuBvg|ItNU-44$rj JF6*2UngDr&S|R`d literal 0 HcmV?d00001 diff --git a/captchas/ZNYD.png b/captchas/ZNYD.png new file mode 100644 index 0000000000000000000000000000000000000000..612719c8e68870d37bcfb79d5d12812f9d6cb2dd GIT binary patch literal 743 zcmeAS@N?(olHy`uVBq!ia0vp^CxAGDg9%95$LM!4Ffgt2ba4!+nDh3|#lA%j0uF&y z#{d7HKGQ7e%piSaU#M#J`P+FSQaiSEq};MOKiTBg{x^&-=J9xQ92PpXp~XN)kxI-* z>eURFO?=mGeQN)Aa;*7#N_Sa`5gWUhQEAEP4C)=~V zO{D&EN^0p+(ao2f7bd#aF}+*&?#$^`z6{P<{o>-+POfsRt?aWY-!3gw+>m`QqeA10 z@|Q9%|DO+4vlZX#?a2w^7fh6m+rWR{{V!`-mFxQyzL5Xc0q1xxJ=ars7dHR=mVYIs zb+JoV&DwOx%0@y|@6~!w%L7+e&AKE%`=-*ji^(%x&Wh@laD|zMa<6`7XQf~9XKH!) zk+*G!-@dn>XPWhvIln6`pyt5Oel`C4j;qzV?$@54@Re^%_2e}bp~2ULmk8T<&y{h0 zZh!jMw2RlOI@FJSXg|(8uXWY89ak6XORwAK`tLIDE>&u#l#cl2Q;k*`i8ToW6EK6P LtDnm{r-UW|pDa`b literal 0 HcmV?d00001 diff --git a/captchas/ZTNL.png b/captchas/ZTNL.png new file mode 100644 index 0000000000000000000000000000000000000000..60021e9b799360e7413b032c77fd781a0f0619b8 GIT binary patch literal 672 zcmeAS@N?(olHy`uVBq!ia0vp^CxAGDg9%95$LM!4FfgTix;TbZ%z1m~V9{a&0fs=2 zr~m6`%ET;;VN*9+k?wZk{gCRb&Vu#WLmOHQbQF2KIVfg! zyniF?VSN7cWBz~pWDnJ>PK-^ywd<+{%Z?vCU)?>Op0<2_|JBa8UZnG7q0|u5u$AUVeSIF6p^wwKt!hcq_i+aeC#ut)H%le&4n5kbutqUvg#E zsbZBf>bnkAuQ?X5;Q7UO@ruk}rG9C|OiL~I+-)7#ZXNMIaqj7W#BF?Hdyn1XE1bUS zUBT0B%%MMn)%EWkm(tmKIwpBx=w2C_*aTLIcYHd(nnD(P&)9e`H1v;{kI9`9)1&QE zgF?@w7D&~J{nB{zJL=(OeUl>xqp!?gw`{|PystlAN5@qiKkj0~RlIsv#O}p4GBwA3 ztx@}?#AEmufPPNeETkyh6!#x^lAsU{=a*w+XUn+ z5+-g_k`sQ>?{_5o<{7@Xu6ZGeHj}rX4Uu4SI(~lZ-)9f{%}s0ff010seLIW$%;8nB tN1O6K%1(ZCHEPdmBWlDfQrhT{m-P9z_{ZB>slb%S;OXk;vd$@?2>_)KFVg@3 literal 0 HcmV?d00001 diff --git a/captchas/ZXBW.png b/captchas/ZXBW.png new file mode 100644 index 0000000000000000000000000000000000000000..5f4edc5ab633ecb4fff16cbb4b6ee4d24c7f2977 GIT binary patch literal 802 zcmeAS@N?(olHy`uVBq!ia0vp^CxAGDg9%95$LM!4FfhIJba4!+nDh3|-MrNfJgyIY zu70n7`qDL|g(;Dz;x^m0^3oC^Ll&|BE7pGh$F%2f%6W!&of{M!BPJ;5cnFB8aBvH? zuyP)1Vo7vtB3;=0dQ|q>qy63y{Q~#J5^Y@zqW4d1)~)>$_3z8s+$|4EGjHadIDNV( zvt9Rghi%xYlaF(^nBDkszkBYo^Gqm{ND1;jPoxSXSFj`MohFnHpBbx zylFb0V_uanjTNoqKBww(TFvfH+Ai;WMZxD0d%tH2=9E9)Q5`+6G9-@oyKu?w#7Lhr ztfxz!{a(B3b2DG{S*x|@?oKFrm&_W^*1gJTo#o?uQ6|4scD!#X*10=v%dR(J?XUM9 zfA1kzs-ySO<9MNLwAxeCJB=@Gmao0AA?!Wtj`x;_*70w1|G6!=By;sY*5sIo`+S~V z8<%`H3RAcEf4pYO;o~v)jUM&?p4omV%U`kYr$>6_{4=V8k83ACocqhbF;R3UPmkf+ zyHjqi2)L@Prjr~Rmwl-2_T7np+v?8P@*NlK*Ze3@HSfyFJzev!YOV6xS!%R|H@o7{ zyrMk?@)s=*#;*SV`1IlGJy&ma*;UT3`|lRiKK zdNNZ^+WgF?^4dTCkMeweXMI}N`mXw);O85+jm{dM=jzXGJUrcxc}m5S&s;aRZEBk# z|92^~qfkIT$zpl(>{ZztDnm{r-UW|31e}A literal 0 HcmV?d00001 diff --git a/downloaded/cdn.oreillystatic.com/ajax/libs/jquery/3.3.1/jquery.min.js b/downloaded/cdn.oreillystatic.com/ajax/libs/jquery/3.3.1/jquery.min.js new file mode 100644 index 0000000..4d9b3a2 --- /dev/null +++ b/downloaded/cdn.oreillystatic.com/ajax/libs/jquery/3.3.1/jquery.min.js @@ -0,0 +1,2 @@ +/*! jQuery v3.3.1 | (c) JS Foundation and other contributors | jquery.org/license */ +!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(e,t){"use strict";var n=[],r=e.document,i=Object.getPrototypeOf,o=n.slice,a=n.concat,s=n.push,u=n.indexOf,l={},c=l.toString,f=l.hasOwnProperty,p=f.toString,d=p.call(Object),h={},g=function e(t){return"function"==typeof t&&"number"!=typeof t.nodeType},y=function e(t){return null!=t&&t===t.window},v={type:!0,src:!0,noModule:!0};function m(e,t,n){var i,o=(t=t||r).createElement("script");if(o.text=e,n)for(i in v)n[i]&&(o[i]=n[i]);t.head.appendChild(o).parentNode.removeChild(o)}function x(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?l[c.call(e)]||"object":typeof e}var b="3.3.1",w=function(e,t){return new w.fn.init(e,t)},T=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g;w.fn=w.prototype={jquery:"3.3.1",constructor:w,length:0,toArray:function(){return o.call(this)},get:function(e){return null==e?o.call(this):e<0?this[e+this.length]:this[e]},pushStack:function(e){var t=w.merge(this.constructor(),e);return t.prevObject=this,t},each:function(e){return w.each(this,e)},map:function(e){return this.pushStack(w.map(this,function(t,n){return e.call(t,n,t)}))},slice:function(){return this.pushStack(o.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(e){var t=this.length,n=+e+(e<0?t:0);return this.pushStack(n>=0&&n0&&t-1 in e)}var E=function(e){var t,n,r,i,o,a,s,u,l,c,f,p,d,h,g,y,v,m,x,b="sizzle"+1*new Date,w=e.document,T=0,C=0,E=ae(),k=ae(),S=ae(),D=function(e,t){return e===t&&(f=!0),0},N={}.hasOwnProperty,A=[],j=A.pop,q=A.push,L=A.push,H=A.slice,O=function(e,t){for(var n=0,r=e.length;n+~]|"+M+")"+M+"*"),z=new RegExp("="+M+"*([^\\]'\"]*?)"+M+"*\\]","g"),X=new RegExp(W),U=new RegExp("^"+R+"$"),V={ID:new RegExp("^#("+R+")"),CLASS:new RegExp("^\\.("+R+")"),TAG:new RegExp("^("+R+"|[*])"),ATTR:new RegExp("^"+I),PSEUDO:new RegExp("^"+W),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+P+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},G=/^(?:input|select|textarea|button)$/i,Y=/^h\d$/i,Q=/^[^{]+\{\s*\[native \w/,J=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,K=/[+~]/,Z=new RegExp("\\\\([\\da-f]{1,6}"+M+"?|("+M+")|.)","ig"),ee=function(e,t,n){var r="0x"+t-65536;return r!==r||n?t:r<0?String.fromCharCode(r+65536):String.fromCharCode(r>>10|55296,1023&r|56320)},te=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ne=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},re=function(){p()},ie=me(function(e){return!0===e.disabled&&("form"in e||"label"in e)},{dir:"parentNode",next:"legend"});try{L.apply(A=H.call(w.childNodes),w.childNodes),A[w.childNodes.length].nodeType}catch(e){L={apply:A.length?function(e,t){q.apply(e,H.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function oe(e,t,r,i){var o,s,l,c,f,h,v,m=t&&t.ownerDocument,T=t?t.nodeType:9;if(r=r||[],"string"!=typeof e||!e||1!==T&&9!==T&&11!==T)return r;if(!i&&((t?t.ownerDocument||t:w)!==d&&p(t),t=t||d,g)){if(11!==T&&(f=J.exec(e)))if(o=f[1]){if(9===T){if(!(l=t.getElementById(o)))return r;if(l.id===o)return r.push(l),r}else if(m&&(l=m.getElementById(o))&&x(t,l)&&l.id===o)return r.push(l),r}else{if(f[2])return L.apply(r,t.getElementsByTagName(e)),r;if((o=f[3])&&n.getElementsByClassName&&t.getElementsByClassName)return L.apply(r,t.getElementsByClassName(o)),r}if(n.qsa&&!S[e+" "]&&(!y||!y.test(e))){if(1!==T)m=t,v=e;else if("object"!==t.nodeName.toLowerCase()){(c=t.getAttribute("id"))?c=c.replace(te,ne):t.setAttribute("id",c=b),s=(h=a(e)).length;while(s--)h[s]="#"+c+" "+ve(h[s]);v=h.join(","),m=K.test(e)&&ge(t.parentNode)||t}if(v)try{return L.apply(r,m.querySelectorAll(v)),r}catch(e){}finally{c===b&&t.removeAttribute("id")}}}return u(e.replace(B,"$1"),t,r,i)}function ae(){var e=[];function t(n,i){return e.push(n+" ")>r.cacheLength&&delete t[e.shift()],t[n+" "]=i}return t}function se(e){return e[b]=!0,e}function ue(e){var t=d.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function le(e,t){var n=e.split("|"),i=n.length;while(i--)r.attrHandle[n[i]]=t}function ce(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function fe(e){return function(t){return"input"===t.nodeName.toLowerCase()&&t.type===e}}function pe(e){return function(t){var n=t.nodeName.toLowerCase();return("input"===n||"button"===n)&&t.type===e}}function de(e){return function(t){return"form"in t?t.parentNode&&!1===t.disabled?"label"in t?"label"in t.parentNode?t.parentNode.disabled===e:t.disabled===e:t.isDisabled===e||t.isDisabled!==!e&&ie(t)===e:t.disabled===e:"label"in t&&t.disabled===e}}function he(e){return se(function(t){return t=+t,se(function(n,r){var i,o=e([],n.length,t),a=o.length;while(a--)n[i=o[a]]&&(n[i]=!(r[i]=n[i]))})})}function ge(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}n=oe.support={},o=oe.isXML=function(e){var t=e&&(e.ownerDocument||e).documentElement;return!!t&&"HTML"!==t.nodeName},p=oe.setDocument=function(e){var t,i,a=e?e.ownerDocument||e:w;return a!==d&&9===a.nodeType&&a.documentElement?(d=a,h=d.documentElement,g=!o(d),w!==d&&(i=d.defaultView)&&i.top!==i&&(i.addEventListener?i.addEventListener("unload",re,!1):i.attachEvent&&i.attachEvent("onunload",re)),n.attributes=ue(function(e){return e.className="i",!e.getAttribute("className")}),n.getElementsByTagName=ue(function(e){return e.appendChild(d.createComment("")),!e.getElementsByTagName("*").length}),n.getElementsByClassName=Q.test(d.getElementsByClassName),n.getById=ue(function(e){return h.appendChild(e).id=b,!d.getElementsByName||!d.getElementsByName(b).length}),n.getById?(r.filter.ID=function(e){var t=e.replace(Z,ee);return function(e){return e.getAttribute("id")===t}},r.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&g){var n=t.getElementById(e);return n?[n]:[]}}):(r.filter.ID=function(e){var t=e.replace(Z,ee);return function(e){var n="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return n&&n.value===t}},r.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&g){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),r.find.TAG=n.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):n.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},r.find.CLASS=n.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&g)return t.getElementsByClassName(e)},v=[],y=[],(n.qsa=Q.test(d.querySelectorAll))&&(ue(function(e){h.appendChild(e).innerHTML="",e.querySelectorAll("[msallowcapture^='']").length&&y.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||y.push("\\["+M+"*(?:value|"+P+")"),e.querySelectorAll("[id~="+b+"-]").length||y.push("~="),e.querySelectorAll(":checked").length||y.push(":checked"),e.querySelectorAll("a#"+b+"+*").length||y.push(".#.+[+~]")}),ue(function(e){e.innerHTML="";var t=d.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&y.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&y.push(":enabled",":disabled"),h.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&y.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),y.push(",.*:")})),(n.matchesSelector=Q.test(m=h.matches||h.webkitMatchesSelector||h.mozMatchesSelector||h.oMatchesSelector||h.msMatchesSelector))&&ue(function(e){n.disconnectedMatch=m.call(e,"*"),m.call(e,"[s!='']:x"),v.push("!=",W)}),y=y.length&&new RegExp(y.join("|")),v=v.length&&new RegExp(v.join("|")),t=Q.test(h.compareDocumentPosition),x=t||Q.test(h.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},D=t?function(e,t){if(e===t)return f=!0,0;var r=!e.compareDocumentPosition-!t.compareDocumentPosition;return r||(1&(r=(e.ownerDocument||e)===(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!n.sortDetached&&t.compareDocumentPosition(e)===r?e===d||e.ownerDocument===w&&x(w,e)?-1:t===d||t.ownerDocument===w&&x(w,t)?1:c?O(c,e)-O(c,t):0:4&r?-1:1)}:function(e,t){if(e===t)return f=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e===d?-1:t===d?1:i?-1:o?1:c?O(c,e)-O(c,t):0;if(i===o)return ce(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?ce(a[r],s[r]):a[r]===w?-1:s[r]===w?1:0},d):d},oe.matches=function(e,t){return oe(e,null,null,t)},oe.matchesSelector=function(e,t){if((e.ownerDocument||e)!==d&&p(e),t=t.replace(z,"='$1']"),n.matchesSelector&&g&&!S[t+" "]&&(!v||!v.test(t))&&(!y||!y.test(t)))try{var r=m.call(e,t);if(r||n.disconnectedMatch||e.document&&11!==e.document.nodeType)return r}catch(e){}return oe(t,d,null,[e]).length>0},oe.contains=function(e,t){return(e.ownerDocument||e)!==d&&p(e),x(e,t)},oe.attr=function(e,t){(e.ownerDocument||e)!==d&&p(e);var i=r.attrHandle[t.toLowerCase()],o=i&&N.call(r.attrHandle,t.toLowerCase())?i(e,t,!g):void 0;return void 0!==o?o:n.attributes||!g?e.getAttribute(t):(o=e.getAttributeNode(t))&&o.specified?o.value:null},oe.escape=function(e){return(e+"").replace(te,ne)},oe.error=function(e){throw new Error("Syntax error, unrecognized expression: "+e)},oe.uniqueSort=function(e){var t,r=[],i=0,o=0;if(f=!n.detectDuplicates,c=!n.sortStable&&e.slice(0),e.sort(D),f){while(t=e[o++])t===e[o]&&(i=r.push(o));while(i--)e.splice(r[i],1)}return c=null,e},i=oe.getText=function(e){var t,n="",r=0,o=e.nodeType;if(o){if(1===o||9===o||11===o){if("string"==typeof e.textContent)return e.textContent;for(e=e.firstChild;e;e=e.nextSibling)n+=i(e)}else if(3===o||4===o)return e.nodeValue}else while(t=e[r++])n+=i(t);return n},(r=oe.selectors={cacheLength:50,createPseudo:se,match:V,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(Z,ee),e[3]=(e[3]||e[4]||e[5]||"").replace(Z,ee),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||oe.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&oe.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return V.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=a(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(Z,ee).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=E[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&E(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(e,t,n){return function(r){var i=oe.attr(r,e);return null==i?"!="===t:!t||(i+="","="===t?i===n:"!="===t?i!==n:"^="===t?n&&0===i.indexOf(n):"*="===t?n&&i.indexOf(n)>-1:"$="===t?n&&i.slice(-n.length)===n:"~="===t?(" "+i.replace($," ")+" ").indexOf(n)>-1:"|="===t&&(i===n||i.slice(0,n.length+1)===n+"-"))}},CHILD:function(e,t,n,r,i){var o="nth"!==e.slice(0,3),a="last"!==e.slice(-4),s="of-type"===t;return 1===r&&0===i?function(e){return!!e.parentNode}:function(t,n,u){var l,c,f,p,d,h,g=o!==a?"nextSibling":"previousSibling",y=t.parentNode,v=s&&t.nodeName.toLowerCase(),m=!u&&!s,x=!1;if(y){if(o){while(g){p=t;while(p=p[g])if(s?p.nodeName.toLowerCase()===v:1===p.nodeType)return!1;h=g="only"===e&&!h&&"nextSibling"}return!0}if(h=[a?y.firstChild:y.lastChild],a&&m){x=(d=(l=(c=(f=(p=y)[b]||(p[b]={}))[p.uniqueID]||(f[p.uniqueID]={}))[e]||[])[0]===T&&l[1])&&l[2],p=d&&y.childNodes[d];while(p=++d&&p&&p[g]||(x=d=0)||h.pop())if(1===p.nodeType&&++x&&p===t){c[e]=[T,d,x];break}}else if(m&&(x=d=(l=(c=(f=(p=t)[b]||(p[b]={}))[p.uniqueID]||(f[p.uniqueID]={}))[e]||[])[0]===T&&l[1]),!1===x)while(p=++d&&p&&p[g]||(x=d=0)||h.pop())if((s?p.nodeName.toLowerCase()===v:1===p.nodeType)&&++x&&(m&&((c=(f=p[b]||(p[b]={}))[p.uniqueID]||(f[p.uniqueID]={}))[e]=[T,x]),p===t))break;return(x-=i)===r||x%r==0&&x/r>=0}}},PSEUDO:function(e,t){var n,i=r.pseudos[e]||r.setFilters[e.toLowerCase()]||oe.error("unsupported pseudo: "+e);return i[b]?i(t):i.length>1?(n=[e,e,"",t],r.setFilters.hasOwnProperty(e.toLowerCase())?se(function(e,n){var r,o=i(e,t),a=o.length;while(a--)e[r=O(e,o[a])]=!(n[r]=o[a])}):function(e){return i(e,0,n)}):i}},pseudos:{not:se(function(e){var t=[],n=[],r=s(e.replace(B,"$1"));return r[b]?se(function(e,t,n,i){var o,a=r(e,null,i,[]),s=e.length;while(s--)(o=a[s])&&(e[s]=!(t[s]=o))}):function(e,i,o){return t[0]=e,r(t,null,o,n),t[0]=null,!n.pop()}}),has:se(function(e){return function(t){return oe(e,t).length>0}}),contains:se(function(e){return e=e.replace(Z,ee),function(t){return(t.textContent||t.innerText||i(t)).indexOf(e)>-1}}),lang:se(function(e){return U.test(e||"")||oe.error("unsupported lang: "+e),e=e.replace(Z,ee).toLowerCase(),function(t){var n;do{if(n=g?t.lang:t.getAttribute("xml:lang")||t.getAttribute("lang"))return(n=n.toLowerCase())===e||0===n.indexOf(e+"-")}while((t=t.parentNode)&&1===t.nodeType);return!1}}),target:function(t){var n=e.location&&e.location.hash;return n&&n.slice(1)===t.id},root:function(e){return e===h},focus:function(e){return e===d.activeElement&&(!d.hasFocus||d.hasFocus())&&!!(e.type||e.href||~e.tabIndex)},enabled:de(!1),disabled:de(!0),checked:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&!!e.checked||"option"===t&&!!e.selected},selected:function(e){return e.parentNode&&e.parentNode.selectedIndex,!0===e.selected},empty:function(e){for(e=e.firstChild;e;e=e.nextSibling)if(e.nodeType<6)return!1;return!0},parent:function(e){return!r.pseudos.empty(e)},header:function(e){return Y.test(e.nodeName)},input:function(e){return G.test(e.nodeName)},button:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&"button"===e.type||"button"===t},text:function(e){var t;return"input"===e.nodeName.toLowerCase()&&"text"===e.type&&(null==(t=e.getAttribute("type"))||"text"===t.toLowerCase())},first:he(function(){return[0]}),last:he(function(e,t){return[t-1]}),eq:he(function(e,t,n){return[n<0?n+t:n]}),even:he(function(e,t){for(var n=0;n=0;)e.push(r);return e}),gt:he(function(e,t,n){for(var r=n<0?n+t:n;++r1?function(t,n,r){var i=e.length;while(i--)if(!e[i](t,n,r))return!1;return!0}:e[0]}function be(e,t,n){for(var r=0,i=t.length;r-1&&(o[l]=!(a[l]=f))}}else v=we(v===a?v.splice(h,v.length):v),i?i(null,a,v,u):L.apply(a,v)})}function Ce(e){for(var t,n,i,o=e.length,a=r.relative[e[0].type],s=a||r.relative[" "],u=a?1:0,c=me(function(e){return e===t},s,!0),f=me(function(e){return O(t,e)>-1},s,!0),p=[function(e,n,r){var i=!a&&(r||n!==l)||((t=n).nodeType?c(e,n,r):f(e,n,r));return t=null,i}];u1&&xe(p),u>1&&ve(e.slice(0,u-1).concat({value:" "===e[u-2].type?"*":""})).replace(B,"$1"),n,u0,i=e.length>0,o=function(o,a,s,u,c){var f,h,y,v=0,m="0",x=o&&[],b=[],w=l,C=o||i&&r.find.TAG("*",c),E=T+=null==w?1:Math.random()||.1,k=C.length;for(c&&(l=a===d||a||c);m!==k&&null!=(f=C[m]);m++){if(i&&f){h=0,a||f.ownerDocument===d||(p(f),s=!g);while(y=e[h++])if(y(f,a||d,s)){u.push(f);break}c&&(T=E)}n&&((f=!y&&f)&&v--,o&&x.push(f))}if(v+=m,n&&m!==v){h=0;while(y=t[h++])y(x,b,a,s);if(o){if(v>0)while(m--)x[m]||b[m]||(b[m]=j.call(u));b=we(b)}L.apply(u,b),c&&!o&&b.length>0&&v+t.length>1&&oe.uniqueSort(u)}return c&&(T=E,l=w),x};return n?se(o):o}return s=oe.compile=function(e,t){var n,r=[],i=[],o=S[e+" "];if(!o){t||(t=a(e)),n=t.length;while(n--)(o=Ce(t[n]))[b]?r.push(o):i.push(o);(o=S(e,Ee(i,r))).selector=e}return o},u=oe.select=function(e,t,n,i){var o,u,l,c,f,p="function"==typeof e&&e,d=!i&&a(e=p.selector||e);if(n=n||[],1===d.length){if((u=d[0]=d[0].slice(0)).length>2&&"ID"===(l=u[0]).type&&9===t.nodeType&&g&&r.relative[u[1].type]){if(!(t=(r.find.ID(l.matches[0].replace(Z,ee),t)||[])[0]))return n;p&&(t=t.parentNode),e=e.slice(u.shift().value.length)}o=V.needsContext.test(e)?0:u.length;while(o--){if(l=u[o],r.relative[c=l.type])break;if((f=r.find[c])&&(i=f(l.matches[0].replace(Z,ee),K.test(u[0].type)&&ge(t.parentNode)||t))){if(u.splice(o,1),!(e=i.length&&ve(u)))return L.apply(n,i),n;break}}}return(p||s(e,d))(i,t,!g,n,!t||K.test(e)&&ge(t.parentNode)||t),n},n.sortStable=b.split("").sort(D).join("")===b,n.detectDuplicates=!!f,p(),n.sortDetached=ue(function(e){return 1&e.compareDocumentPosition(d.createElement("fieldset"))}),ue(function(e){return e.innerHTML="","#"===e.firstChild.getAttribute("href")})||le("type|href|height|width",function(e,t,n){if(!n)return e.getAttribute(t,"type"===t.toLowerCase()?1:2)}),n.attributes&&ue(function(e){return e.innerHTML="",e.firstChild.setAttribute("value",""),""===e.firstChild.getAttribute("value")})||le("value",function(e,t,n){if(!n&&"input"===e.nodeName.toLowerCase())return e.defaultValue}),ue(function(e){return null==e.getAttribute("disabled")})||le(P,function(e,t,n){var r;if(!n)return!0===e[t]?t.toLowerCase():(r=e.getAttributeNode(t))&&r.specified?r.value:null}),oe}(e);w.find=E,w.expr=E.selectors,w.expr[":"]=w.expr.pseudos,w.uniqueSort=w.unique=E.uniqueSort,w.text=E.getText,w.isXMLDoc=E.isXML,w.contains=E.contains,w.escapeSelector=E.escape;var k=function(e,t,n){var r=[],i=void 0!==n;while((e=e[t])&&9!==e.nodeType)if(1===e.nodeType){if(i&&w(e).is(n))break;r.push(e)}return r},S=function(e,t){for(var n=[];e;e=e.nextSibling)1===e.nodeType&&e!==t&&n.push(e);return n},D=w.expr.match.needsContext;function N(e,t){return e.nodeName&&e.nodeName.toLowerCase()===t.toLowerCase()}var A=/^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function j(e,t,n){return g(t)?w.grep(e,function(e,r){return!!t.call(e,r,e)!==n}):t.nodeType?w.grep(e,function(e){return e===t!==n}):"string"!=typeof t?w.grep(e,function(e){return u.call(t,e)>-1!==n}):w.filter(t,e,n)}w.filter=function(e,t,n){var r=t[0];return n&&(e=":not("+e+")"),1===t.length&&1===r.nodeType?w.find.matchesSelector(r,e)?[r]:[]:w.find.matches(e,w.grep(t,function(e){return 1===e.nodeType}))},w.fn.extend({find:function(e){var t,n,r=this.length,i=this;if("string"!=typeof e)return this.pushStack(w(e).filter(function(){for(t=0;t1?w.uniqueSort(n):n},filter:function(e){return this.pushStack(j(this,e||[],!1))},not:function(e){return this.pushStack(j(this,e||[],!0))},is:function(e){return!!j(this,"string"==typeof e&&D.test(e)?w(e):e||[],!1).length}});var q,L=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/;(w.fn.init=function(e,t,n){var i,o;if(!e)return this;if(n=n||q,"string"==typeof e){if(!(i="<"===e[0]&&">"===e[e.length-1]&&e.length>=3?[null,e,null]:L.exec(e))||!i[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(i[1]){if(t=t instanceof w?t[0]:t,w.merge(this,w.parseHTML(i[1],t&&t.nodeType?t.ownerDocument||t:r,!0)),A.test(i[1])&&w.isPlainObject(t))for(i in t)g(this[i])?this[i](t[i]):this.attr(i,t[i]);return this}return(o=r.getElementById(i[2]))&&(this[0]=o,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):g(e)?void 0!==n.ready?n.ready(e):e(w):w.makeArray(e,this)}).prototype=w.fn,q=w(r);var H=/^(?:parents|prev(?:Until|All))/,O={children:!0,contents:!0,next:!0,prev:!0};w.fn.extend({has:function(e){var t=w(e,this),n=t.length;return this.filter(function(){for(var e=0;e-1:1===n.nodeType&&w.find.matchesSelector(n,e))){o.push(n);break}return this.pushStack(o.length>1?w.uniqueSort(o):o)},index:function(e){return e?"string"==typeof e?u.call(w(e),this[0]):u.call(this,e.jquery?e[0]:e):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(e,t){return this.pushStack(w.uniqueSort(w.merge(this.get(),w(e,t))))},addBack:function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}});function P(e,t){while((e=e[t])&&1!==e.nodeType);return e}w.each({parent:function(e){var t=e.parentNode;return t&&11!==t.nodeType?t:null},parents:function(e){return k(e,"parentNode")},parentsUntil:function(e,t,n){return k(e,"parentNode",n)},next:function(e){return P(e,"nextSibling")},prev:function(e){return P(e,"previousSibling")},nextAll:function(e){return k(e,"nextSibling")},prevAll:function(e){return k(e,"previousSibling")},nextUntil:function(e,t,n){return k(e,"nextSibling",n)},prevUntil:function(e,t,n){return k(e,"previousSibling",n)},siblings:function(e){return S((e.parentNode||{}).firstChild,e)},children:function(e){return S(e.firstChild)},contents:function(e){return N(e,"iframe")?e.contentDocument:(N(e,"template")&&(e=e.content||e),w.merge([],e.childNodes))}},function(e,t){w.fn[e]=function(n,r){var i=w.map(this,t,n);return"Until"!==e.slice(-5)&&(r=n),r&&"string"==typeof r&&(i=w.filter(r,i)),this.length>1&&(O[e]||w.uniqueSort(i),H.test(e)&&i.reverse()),this.pushStack(i)}});var M=/[^\x20\t\r\n\f]+/g;function R(e){var t={};return w.each(e.match(M)||[],function(e,n){t[n]=!0}),t}w.Callbacks=function(e){e="string"==typeof e?R(e):w.extend({},e);var t,n,r,i,o=[],a=[],s=-1,u=function(){for(i=i||e.once,r=t=!0;a.length;s=-1){n=a.shift();while(++s-1)o.splice(n,1),n<=s&&s--}),this},has:function(e){return e?w.inArray(e,o)>-1:o.length>0},empty:function(){return o&&(o=[]),this},disable:function(){return i=a=[],o=n="",this},disabled:function(){return!o},lock:function(){return i=a=[],n||t||(o=n=""),this},locked:function(){return!!i},fireWith:function(e,n){return i||(n=[e,(n=n||[]).slice?n.slice():n],a.push(n),t||u()),this},fire:function(){return l.fireWith(this,arguments),this},fired:function(){return!!r}};return l};function I(e){return e}function W(e){throw e}function $(e,t,n,r){var i;try{e&&g(i=e.promise)?i.call(e).done(t).fail(n):e&&g(i=e.then)?i.call(e,t,n):t.apply(void 0,[e].slice(r))}catch(e){n.apply(void 0,[e])}}w.extend({Deferred:function(t){var n=[["notify","progress",w.Callbacks("memory"),w.Callbacks("memory"),2],["resolve","done",w.Callbacks("once memory"),w.Callbacks("once memory"),0,"resolved"],["reject","fail",w.Callbacks("once memory"),w.Callbacks("once memory"),1,"rejected"]],r="pending",i={state:function(){return r},always:function(){return o.done(arguments).fail(arguments),this},"catch":function(e){return i.then(null,e)},pipe:function(){var e=arguments;return w.Deferred(function(t){w.each(n,function(n,r){var i=g(e[r[4]])&&e[r[4]];o[r[1]](function(){var e=i&&i.apply(this,arguments);e&&g(e.promise)?e.promise().progress(t.notify).done(t.resolve).fail(t.reject):t[r[0]+"With"](this,i?[e]:arguments)})}),e=null}).promise()},then:function(t,r,i){var o=0;function a(t,n,r,i){return function(){var s=this,u=arguments,l=function(){var e,l;if(!(t=o&&(r!==W&&(s=void 0,u=[e]),n.rejectWith(s,u))}};t?c():(w.Deferred.getStackHook&&(c.stackTrace=w.Deferred.getStackHook()),e.setTimeout(c))}}return w.Deferred(function(e){n[0][3].add(a(0,e,g(i)?i:I,e.notifyWith)),n[1][3].add(a(0,e,g(t)?t:I)),n[2][3].add(a(0,e,g(r)?r:W))}).promise()},promise:function(e){return null!=e?w.extend(e,i):i}},o={};return w.each(n,function(e,t){var a=t[2],s=t[5];i[t[1]]=a.add,s&&a.add(function(){r=s},n[3-e][2].disable,n[3-e][3].disable,n[0][2].lock,n[0][3].lock),a.add(t[3].fire),o[t[0]]=function(){return o[t[0]+"With"](this===o?void 0:this,arguments),this},o[t[0]+"With"]=a.fireWith}),i.promise(o),t&&t.call(o,o),o},when:function(e){var t=arguments.length,n=t,r=Array(n),i=o.call(arguments),a=w.Deferred(),s=function(e){return function(n){r[e]=this,i[e]=arguments.length>1?o.call(arguments):n,--t||a.resolveWith(r,i)}};if(t<=1&&($(e,a.done(s(n)).resolve,a.reject,!t),"pending"===a.state()||g(i[n]&&i[n].then)))return a.then();while(n--)$(i[n],s(n),a.reject);return a.promise()}});var B=/^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;w.Deferred.exceptionHook=function(t,n){e.console&&e.console.warn&&t&&B.test(t.name)&&e.console.warn("jQuery.Deferred exception: "+t.message,t.stack,n)},w.readyException=function(t){e.setTimeout(function(){throw t})};var F=w.Deferred();w.fn.ready=function(e){return F.then(e)["catch"](function(e){w.readyException(e)}),this},w.extend({isReady:!1,readyWait:1,ready:function(e){(!0===e?--w.readyWait:w.isReady)||(w.isReady=!0,!0!==e&&--w.readyWait>0||F.resolveWith(r,[w]))}}),w.ready.then=F.then;function _(){r.removeEventListener("DOMContentLoaded",_),e.removeEventListener("load",_),w.ready()}"complete"===r.readyState||"loading"!==r.readyState&&!r.documentElement.doScroll?e.setTimeout(w.ready):(r.addEventListener("DOMContentLoaded",_),e.addEventListener("load",_));var z=function(e,t,n,r,i,o,a){var s=0,u=e.length,l=null==n;if("object"===x(n)){i=!0;for(s in n)z(e,t,s,n[s],!0,o,a)}else if(void 0!==r&&(i=!0,g(r)||(a=!0),l&&(a?(t.call(e,r),t=null):(l=t,t=function(e,t,n){return l.call(w(e),n)})),t))for(;s1,null,!0)},removeData:function(e){return this.each(function(){K.remove(this,e)})}}),w.extend({queue:function(e,t,n){var r;if(e)return t=(t||"fx")+"queue",r=J.get(e,t),n&&(!r||Array.isArray(n)?r=J.access(e,t,w.makeArray(n)):r.push(n)),r||[]},dequeue:function(e,t){t=t||"fx";var n=w.queue(e,t),r=n.length,i=n.shift(),o=w._queueHooks(e,t),a=function(){w.dequeue(e,t)};"inprogress"===i&&(i=n.shift(),r--),i&&("fx"===t&&n.unshift("inprogress"),delete o.stop,i.call(e,a,o)),!r&&o&&o.empty.fire()},_queueHooks:function(e,t){var n=t+"queueHooks";return J.get(e,n)||J.access(e,n,{empty:w.Callbacks("once memory").add(function(){J.remove(e,[t+"queue",n])})})}}),w.fn.extend({queue:function(e,t){var n=2;return"string"!=typeof e&&(t=e,e="fx",n--),arguments.length\x20\t\r\n\f]+)/i,he=/^$|^module$|\/(?:java|ecma)script/i,ge={option:[1,""],thead:[1,"","
"],col:[2,"","
"],tr:[2,"","
"],td:[3,"","
"],_default:[0,"",""]};ge.optgroup=ge.option,ge.tbody=ge.tfoot=ge.colgroup=ge.caption=ge.thead,ge.th=ge.td;function ye(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&N(e,t)?w.merge([e],n):n}function ve(e,t){for(var n=0,r=e.length;n-1)i&&i.push(o);else if(l=w.contains(o.ownerDocument,o),a=ye(f.appendChild(o),"script"),l&&ve(a),n){c=0;while(o=a[c++])he.test(o.type||"")&&n.push(o)}return f}!function(){var e=r.createDocumentFragment().appendChild(r.createElement("div")),t=r.createElement("input");t.setAttribute("type","radio"),t.setAttribute("checked","checked"),t.setAttribute("name","t"),e.appendChild(t),h.checkClone=e.cloneNode(!0).cloneNode(!0).lastChild.checked,e.innerHTML="",h.noCloneChecked=!!e.cloneNode(!0).lastChild.defaultValue}();var be=r.documentElement,we=/^key/,Te=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,Ce=/^([^.]*)(?:\.(.+)|)/;function Ee(){return!0}function ke(){return!1}function Se(){try{return r.activeElement}catch(e){}}function De(e,t,n,r,i,o){var a,s;if("object"==typeof t){"string"!=typeof n&&(r=r||n,n=void 0);for(s in t)De(e,s,n,r,t[s],o);return e}if(null==r&&null==i?(i=n,r=n=void 0):null==i&&("string"==typeof n?(i=r,r=void 0):(i=r,r=n,n=void 0)),!1===i)i=ke;else if(!i)return e;return 1===o&&(a=i,(i=function(e){return w().off(e),a.apply(this,arguments)}).guid=a.guid||(a.guid=w.guid++)),e.each(function(){w.event.add(this,t,i,r,n)})}w.event={global:{},add:function(e,t,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,y=J.get(e);if(y){n.handler&&(n=(o=n).handler,i=o.selector),i&&w.find.matchesSelector(be,i),n.guid||(n.guid=w.guid++),(u=y.events)||(u=y.events={}),(a=y.handle)||(a=y.handle=function(t){return"undefined"!=typeof w&&w.event.triggered!==t.type?w.event.dispatch.apply(e,arguments):void 0}),l=(t=(t||"").match(M)||[""]).length;while(l--)d=g=(s=Ce.exec(t[l])||[])[1],h=(s[2]||"").split(".").sort(),d&&(f=w.event.special[d]||{},d=(i?f.delegateType:f.bindType)||d,f=w.event.special[d]||{},c=w.extend({type:d,origType:g,data:r,handler:n,guid:n.guid,selector:i,needsContext:i&&w.expr.match.needsContext.test(i),namespace:h.join(".")},o),(p=u[d])||((p=u[d]=[]).delegateCount=0,f.setup&&!1!==f.setup.call(e,r,h,a)||e.addEventListener&&e.addEventListener(d,a)),f.add&&(f.add.call(e,c),c.handler.guid||(c.handler.guid=n.guid)),i?p.splice(p.delegateCount++,0,c):p.push(c),w.event.global[d]=!0)}},remove:function(e,t,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,y=J.hasData(e)&&J.get(e);if(y&&(u=y.events)){l=(t=(t||"").match(M)||[""]).length;while(l--)if(s=Ce.exec(t[l])||[],d=g=s[1],h=(s[2]||"").split(".").sort(),d){f=w.event.special[d]||{},p=u[d=(r?f.delegateType:f.bindType)||d]||[],s=s[2]&&new RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"),a=o=p.length;while(o--)c=p[o],!i&&g!==c.origType||n&&n.guid!==c.guid||s&&!s.test(c.namespace)||r&&r!==c.selector&&("**"!==r||!c.selector)||(p.splice(o,1),c.selector&&p.delegateCount--,f.remove&&f.remove.call(e,c));a&&!p.length&&(f.teardown&&!1!==f.teardown.call(e,h,y.handle)||w.removeEvent(e,d,y.handle),delete u[d])}else for(d in u)w.event.remove(e,d+t[l],n,r,!0);w.isEmptyObject(u)&&J.remove(e,"handle events")}},dispatch:function(e){var t=w.event.fix(e),n,r,i,o,a,s,u=new Array(arguments.length),l=(J.get(this,"events")||{})[t.type]||[],c=w.event.special[t.type]||{};for(u[0]=t,n=1;n=1))for(;l!==this;l=l.parentNode||this)if(1===l.nodeType&&("click"!==e.type||!0!==l.disabled)){for(o=[],a={},n=0;n-1:w.find(i,this,null,[l]).length),a[i]&&o.push(r);o.length&&s.push({elem:l,handlers:o})}return l=this,u\x20\t\r\n\f]*)[^>]*)\/>/gi,Ae=/\s*$/g;function Le(e,t){return N(e,"table")&&N(11!==t.nodeType?t:t.firstChild,"tr")?w(e).children("tbody")[0]||e:e}function He(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function Oe(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Pe(e,t){var n,r,i,o,a,s,u,l;if(1===t.nodeType){if(J.hasData(e)&&(o=J.access(e),a=J.set(t,o),l=o.events)){delete a.handle,a.events={};for(i in l)for(n=0,r=l[i].length;n1&&"string"==typeof y&&!h.checkClone&&je.test(y))return e.each(function(i){var o=e.eq(i);v&&(t[0]=y.call(this,i,o.html())),Re(o,t,n,r)});if(p&&(i=xe(t,e[0].ownerDocument,!1,e,r),o=i.firstChild,1===i.childNodes.length&&(i=o),o||r)){for(u=(s=w.map(ye(i,"script"),He)).length;f")},clone:function(e,t,n){var r,i,o,a,s=e.cloneNode(!0),u=w.contains(e.ownerDocument,e);if(!(h.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||w.isXMLDoc(e)))for(a=ye(s),r=0,i=(o=ye(e)).length;r0&&ve(a,!u&&ye(e,"script")),s},cleanData:function(e){for(var t,n,r,i=w.event.special,o=0;void 0!==(n=e[o]);o++)if(Y(n)){if(t=n[J.expando]){if(t.events)for(r in t.events)i[r]?w.event.remove(n,r):w.removeEvent(n,r,t.handle);n[J.expando]=void 0}n[K.expando]&&(n[K.expando]=void 0)}}}),w.fn.extend({detach:function(e){return Ie(this,e,!0)},remove:function(e){return Ie(this,e)},text:function(e){return z(this,function(e){return void 0===e?w.text(this):this.empty().each(function(){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||(this.textContent=e)})},null,e,arguments.length)},append:function(){return Re(this,arguments,function(e){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||Le(this,e).appendChild(e)})},prepend:function(){return Re(this,arguments,function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=Le(this,e);t.insertBefore(e,t.firstChild)}})},before:function(){return Re(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this)})},after:function(){return Re(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this.nextSibling)})},empty:function(){for(var e,t=0;null!=(e=this[t]);t++)1===e.nodeType&&(w.cleanData(ye(e,!1)),e.textContent="");return this},clone:function(e,t){return e=null!=e&&e,t=null==t?e:t,this.map(function(){return w.clone(this,e,t)})},html:function(e){return z(this,function(e){var t=this[0]||{},n=0,r=this.length;if(void 0===e&&1===t.nodeType)return t.innerHTML;if("string"==typeof e&&!Ae.test(e)&&!ge[(de.exec(e)||["",""])[1].toLowerCase()]){e=w.htmlPrefilter(e);try{for(;n=0&&(u+=Math.max(0,Math.ceil(e["offset"+t[0].toUpperCase()+t.slice(1)]-o-u-s-.5))),u}function et(e,t,n){var r=$e(e),i=Fe(e,t,r),o="border-box"===w.css(e,"boxSizing",!1,r),a=o;if(We.test(i)){if(!n)return i;i="auto"}return a=a&&(h.boxSizingReliable()||i===e.style[t]),("auto"===i||!parseFloat(i)&&"inline"===w.css(e,"display",!1,r))&&(i=e["offset"+t[0].toUpperCase()+t.slice(1)],a=!0),(i=parseFloat(i)||0)+Ze(e,t,n||(o?"border":"content"),a,r,i)+"px"}w.extend({cssHooks:{opacity:{get:function(e,t){if(t){var n=Fe(e,"opacity");return""===n?"1":n}}}},cssNumber:{animationIterationCount:!0,columnCount:!0,fillOpacity:!0,flexGrow:!0,flexShrink:!0,fontWeight:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{},style:function(e,t,n,r){if(e&&3!==e.nodeType&&8!==e.nodeType&&e.style){var i,o,a,s=G(t),u=Xe.test(t),l=e.style;if(u||(t=Je(s)),a=w.cssHooks[t]||w.cssHooks[s],void 0===n)return a&&"get"in a&&void 0!==(i=a.get(e,!1,r))?i:l[t];"string"==(o=typeof n)&&(i=ie.exec(n))&&i[1]&&(n=ue(e,t,i),o="number"),null!=n&&n===n&&("number"===o&&(n+=i&&i[3]||(w.cssNumber[s]?"":"px")),h.clearCloneStyle||""!==n||0!==t.indexOf("background")||(l[t]="inherit"),a&&"set"in a&&void 0===(n=a.set(e,n,r))||(u?l.setProperty(t,n):l[t]=n))}},css:function(e,t,n,r){var i,o,a,s=G(t);return Xe.test(t)||(t=Je(s)),(a=w.cssHooks[t]||w.cssHooks[s])&&"get"in a&&(i=a.get(e,!0,n)),void 0===i&&(i=Fe(e,t,r)),"normal"===i&&t in Ve&&(i=Ve[t]),""===n||n?(o=parseFloat(i),!0===n||isFinite(o)?o||0:i):i}}),w.each(["height","width"],function(e,t){w.cssHooks[t]={get:function(e,n,r){if(n)return!ze.test(w.css(e,"display"))||e.getClientRects().length&&e.getBoundingClientRect().width?et(e,t,r):se(e,Ue,function(){return et(e,t,r)})},set:function(e,n,r){var i,o=$e(e),a="border-box"===w.css(e,"boxSizing",!1,o),s=r&&Ze(e,t,r,a,o);return a&&h.scrollboxSize()===o.position&&(s-=Math.ceil(e["offset"+t[0].toUpperCase()+t.slice(1)]-parseFloat(o[t])-Ze(e,t,"border",!1,o)-.5)),s&&(i=ie.exec(n))&&"px"!==(i[3]||"px")&&(e.style[t]=n,n=w.css(e,t)),Ke(e,n,s)}}}),w.cssHooks.marginLeft=_e(h.reliableMarginLeft,function(e,t){if(t)return(parseFloat(Fe(e,"marginLeft"))||e.getBoundingClientRect().left-se(e,{marginLeft:0},function(){return e.getBoundingClientRect().left}))+"px"}),w.each({margin:"",padding:"",border:"Width"},function(e,t){w.cssHooks[e+t]={expand:function(n){for(var r=0,i={},o="string"==typeof n?n.split(" "):[n];r<4;r++)i[e+oe[r]+t]=o[r]||o[r-2]||o[0];return i}},"margin"!==e&&(w.cssHooks[e+t].set=Ke)}),w.fn.extend({css:function(e,t){return z(this,function(e,t,n){var r,i,o={},a=0;if(Array.isArray(t)){for(r=$e(e),i=t.length;a1)}});function tt(e,t,n,r,i){return new tt.prototype.init(e,t,n,r,i)}w.Tween=tt,tt.prototype={constructor:tt,init:function(e,t,n,r,i,o){this.elem=e,this.prop=n,this.easing=i||w.easing._default,this.options=t,this.start=this.now=this.cur(),this.end=r,this.unit=o||(w.cssNumber[n]?"":"px")},cur:function(){var e=tt.propHooks[this.prop];return e&&e.get?e.get(this):tt.propHooks._default.get(this)},run:function(e){var t,n=tt.propHooks[this.prop];return this.options.duration?this.pos=t=w.easing[this.easing](e,this.options.duration*e,0,1,this.options.duration):this.pos=t=e,this.now=(this.end-this.start)*t+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),n&&n.set?n.set(this):tt.propHooks._default.set(this),this}},tt.prototype.init.prototype=tt.prototype,tt.propHooks={_default:{get:function(e){var t;return 1!==e.elem.nodeType||null!=e.elem[e.prop]&&null==e.elem.style[e.prop]?e.elem[e.prop]:(t=w.css(e.elem,e.prop,""))&&"auto"!==t?t:0},set:function(e){w.fx.step[e.prop]?w.fx.step[e.prop](e):1!==e.elem.nodeType||null==e.elem.style[w.cssProps[e.prop]]&&!w.cssHooks[e.prop]?e.elem[e.prop]=e.now:w.style(e.elem,e.prop,e.now+e.unit)}}},tt.propHooks.scrollTop=tt.propHooks.scrollLeft={set:function(e){e.elem.nodeType&&e.elem.parentNode&&(e.elem[e.prop]=e.now)}},w.easing={linear:function(e){return e},swing:function(e){return.5-Math.cos(e*Math.PI)/2},_default:"swing"},w.fx=tt.prototype.init,w.fx.step={};var nt,rt,it=/^(?:toggle|show|hide)$/,ot=/queueHooks$/;function at(){rt&&(!1===r.hidden&&e.requestAnimationFrame?e.requestAnimationFrame(at):e.setTimeout(at,w.fx.interval),w.fx.tick())}function st(){return e.setTimeout(function(){nt=void 0}),nt=Date.now()}function ut(e,t){var n,r=0,i={height:e};for(t=t?1:0;r<4;r+=2-t)i["margin"+(n=oe[r])]=i["padding"+n]=e;return t&&(i.opacity=i.width=e),i}function lt(e,t,n){for(var r,i=(pt.tweeners[t]||[]).concat(pt.tweeners["*"]),o=0,a=i.length;o1)},removeAttr:function(e){return this.each(function(){w.removeAttr(this,e)})}}),w.extend({attr:function(e,t,n){var r,i,o=e.nodeType;if(3!==o&&8!==o&&2!==o)return"undefined"==typeof e.getAttribute?w.prop(e,t,n):(1===o&&w.isXMLDoc(e)||(i=w.attrHooks[t.toLowerCase()]||(w.expr.match.bool.test(t)?dt:void 0)),void 0!==n?null===n?void w.removeAttr(e,t):i&&"set"in i&&void 0!==(r=i.set(e,n,t))?r:(e.setAttribute(t,n+""),n):i&&"get"in i&&null!==(r=i.get(e,t))?r:null==(r=w.find.attr(e,t))?void 0:r)},attrHooks:{type:{set:function(e,t){if(!h.radioValue&&"radio"===t&&N(e,"input")){var n=e.value;return e.setAttribute("type",t),n&&(e.value=n),t}}}},removeAttr:function(e,t){var n,r=0,i=t&&t.match(M);if(i&&1===e.nodeType)while(n=i[r++])e.removeAttribute(n)}}),dt={set:function(e,t,n){return!1===t?w.removeAttr(e,n):e.setAttribute(n,n),n}},w.each(w.expr.match.bool.source.match(/\w+/g),function(e,t){var n=ht[t]||w.find.attr;ht[t]=function(e,t,r){var i,o,a=t.toLowerCase();return r||(o=ht[a],ht[a]=i,i=null!=n(e,t,r)?a:null,ht[a]=o),i}});var gt=/^(?:input|select|textarea|button)$/i,yt=/^(?:a|area)$/i;w.fn.extend({prop:function(e,t){return z(this,w.prop,e,t,arguments.length>1)},removeProp:function(e){return this.each(function(){delete this[w.propFix[e]||e]})}}),w.extend({prop:function(e,t,n){var r,i,o=e.nodeType;if(3!==o&&8!==o&&2!==o)return 1===o&&w.isXMLDoc(e)||(t=w.propFix[t]||t,i=w.propHooks[t]),void 0!==n?i&&"set"in i&&void 0!==(r=i.set(e,n,t))?r:e[t]=n:i&&"get"in i&&null!==(r=i.get(e,t))?r:e[t]},propHooks:{tabIndex:{get:function(e){var t=w.find.attr(e,"tabindex");return t?parseInt(t,10):gt.test(e.nodeName)||yt.test(e.nodeName)&&e.href?0:-1}}},propFix:{"for":"htmlFor","class":"className"}}),h.optSelected||(w.propHooks.selected={get:function(e){var t=e.parentNode;return t&&t.parentNode&&t.parentNode.selectedIndex,null},set:function(e){var t=e.parentNode;t&&(t.selectedIndex,t.parentNode&&t.parentNode.selectedIndex)}}),w.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){w.propFix[this.toLowerCase()]=this});function vt(e){return(e.match(M)||[]).join(" ")}function mt(e){return e.getAttribute&&e.getAttribute("class")||""}function xt(e){return Array.isArray(e)?e:"string"==typeof e?e.match(M)||[]:[]}w.fn.extend({addClass:function(e){var t,n,r,i,o,a,s,u=0;if(g(e))return this.each(function(t){w(this).addClass(e.call(this,t,mt(this)))});if((t=xt(e)).length)while(n=this[u++])if(i=mt(n),r=1===n.nodeType&&" "+vt(i)+" "){a=0;while(o=t[a++])r.indexOf(" "+o+" ")<0&&(r+=o+" ");i!==(s=vt(r))&&n.setAttribute("class",s)}return this},removeClass:function(e){var t,n,r,i,o,a,s,u=0;if(g(e))return this.each(function(t){w(this).removeClass(e.call(this,t,mt(this)))});if(!arguments.length)return this.attr("class","");if((t=xt(e)).length)while(n=this[u++])if(i=mt(n),r=1===n.nodeType&&" "+vt(i)+" "){a=0;while(o=t[a++])while(r.indexOf(" "+o+" ")>-1)r=r.replace(" "+o+" "," ");i!==(s=vt(r))&&n.setAttribute("class",s)}return this},toggleClass:function(e,t){var n=typeof e,r="string"===n||Array.isArray(e);return"boolean"==typeof t&&r?t?this.addClass(e):this.removeClass(e):g(e)?this.each(function(n){w(this).toggleClass(e.call(this,n,mt(this),t),t)}):this.each(function(){var t,i,o,a;if(r){i=0,o=w(this),a=xt(e);while(t=a[i++])o.hasClass(t)?o.removeClass(t):o.addClass(t)}else void 0!==e&&"boolean"!==n||((t=mt(this))&&J.set(this,"__className__",t),this.setAttribute&&this.setAttribute("class",t||!1===e?"":J.get(this,"__className__")||""))})},hasClass:function(e){var t,n,r=0;t=" "+e+" ";while(n=this[r++])if(1===n.nodeType&&(" "+vt(mt(n))+" ").indexOf(t)>-1)return!0;return!1}});var bt=/\r/g;w.fn.extend({val:function(e){var t,n,r,i=this[0];{if(arguments.length)return r=g(e),this.each(function(n){var i;1===this.nodeType&&(null==(i=r?e.call(this,n,w(this).val()):e)?i="":"number"==typeof i?i+="":Array.isArray(i)&&(i=w.map(i,function(e){return null==e?"":e+""})),(t=w.valHooks[this.type]||w.valHooks[this.nodeName.toLowerCase()])&&"set"in t&&void 0!==t.set(this,i,"value")||(this.value=i))});if(i)return(t=w.valHooks[i.type]||w.valHooks[i.nodeName.toLowerCase()])&&"get"in t&&void 0!==(n=t.get(i,"value"))?n:"string"==typeof(n=i.value)?n.replace(bt,""):null==n?"":n}}}),w.extend({valHooks:{option:{get:function(e){var t=w.find.attr(e,"value");return null!=t?t:vt(w.text(e))}},select:{get:function(e){var t,n,r,i=e.options,o=e.selectedIndex,a="select-one"===e.type,s=a?null:[],u=a?o+1:i.length;for(r=o<0?u:a?o:0;r-1)&&(n=!0);return n||(e.selectedIndex=-1),o}}}}),w.each(["radio","checkbox"],function(){w.valHooks[this]={set:function(e,t){if(Array.isArray(t))return e.checked=w.inArray(w(e).val(),t)>-1}},h.checkOn||(w.valHooks[this].get=function(e){return null===e.getAttribute("value")?"on":e.value})}),h.focusin="onfocusin"in e;var wt=/^(?:focusinfocus|focusoutblur)$/,Tt=function(e){e.stopPropagation()};w.extend(w.event,{trigger:function(t,n,i,o){var a,s,u,l,c,p,d,h,v=[i||r],m=f.call(t,"type")?t.type:t,x=f.call(t,"namespace")?t.namespace.split("."):[];if(s=h=u=i=i||r,3!==i.nodeType&&8!==i.nodeType&&!wt.test(m+w.event.triggered)&&(m.indexOf(".")>-1&&(m=(x=m.split(".")).shift(),x.sort()),c=m.indexOf(":")<0&&"on"+m,t=t[w.expando]?t:new w.Event(m,"object"==typeof t&&t),t.isTrigger=o?2:3,t.namespace=x.join("."),t.rnamespace=t.namespace?new RegExp("(^|\\.)"+x.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,t.result=void 0,t.target||(t.target=i),n=null==n?[t]:w.makeArray(n,[t]),d=w.event.special[m]||{},o||!d.trigger||!1!==d.trigger.apply(i,n))){if(!o&&!d.noBubble&&!y(i)){for(l=d.delegateType||m,wt.test(l+m)||(s=s.parentNode);s;s=s.parentNode)v.push(s),u=s;u===(i.ownerDocument||r)&&v.push(u.defaultView||u.parentWindow||e)}a=0;while((s=v[a++])&&!t.isPropagationStopped())h=s,t.type=a>1?l:d.bindType||m,(p=(J.get(s,"events")||{})[t.type]&&J.get(s,"handle"))&&p.apply(s,n),(p=c&&s[c])&&p.apply&&Y(s)&&(t.result=p.apply(s,n),!1===t.result&&t.preventDefault());return t.type=m,o||t.isDefaultPrevented()||d._default&&!1!==d._default.apply(v.pop(),n)||!Y(i)||c&&g(i[m])&&!y(i)&&((u=i[c])&&(i[c]=null),w.event.triggered=m,t.isPropagationStopped()&&h.addEventListener(m,Tt),i[m](),t.isPropagationStopped()&&h.removeEventListener(m,Tt),w.event.triggered=void 0,u&&(i[c]=u)),t.result}},simulate:function(e,t,n){var r=w.extend(new w.Event,n,{type:e,isSimulated:!0});w.event.trigger(r,null,t)}}),w.fn.extend({trigger:function(e,t){return this.each(function(){w.event.trigger(e,t,this)})},triggerHandler:function(e,t){var n=this[0];if(n)return w.event.trigger(e,t,n,!0)}}),h.focusin||w.each({focus:"focusin",blur:"focusout"},function(e,t){var n=function(e){w.event.simulate(t,e.target,w.event.fix(e))};w.event.special[t]={setup:function(){var r=this.ownerDocument||this,i=J.access(r,t);i||r.addEventListener(e,n,!0),J.access(r,t,(i||0)+1)},teardown:function(){var r=this.ownerDocument||this,i=J.access(r,t)-1;i?J.access(r,t,i):(r.removeEventListener(e,n,!0),J.remove(r,t))}}});var Ct=e.location,Et=Date.now(),kt=/\?/;w.parseXML=function(t){var n;if(!t||"string"!=typeof t)return null;try{n=(new e.DOMParser).parseFromString(t,"text/xml")}catch(e){n=void 0}return n&&!n.getElementsByTagName("parsererror").length||w.error("Invalid XML: "+t),n};var St=/\[\]$/,Dt=/\r?\n/g,Nt=/^(?:submit|button|image|reset|file)$/i,At=/^(?:input|select|textarea|keygen)/i;function jt(e,t,n,r){var i;if(Array.isArray(t))w.each(t,function(t,i){n||St.test(e)?r(e,i):jt(e+"["+("object"==typeof i&&null!=i?t:"")+"]",i,n,r)});else if(n||"object"!==x(t))r(e,t);else for(i in t)jt(e+"["+i+"]",t[i],n,r)}w.param=function(e,t){var n,r=[],i=function(e,t){var n=g(t)?t():t;r[r.length]=encodeURIComponent(e)+"="+encodeURIComponent(null==n?"":n)};if(Array.isArray(e)||e.jquery&&!w.isPlainObject(e))w.each(e,function(){i(this.name,this.value)});else for(n in e)jt(n,e[n],t,i);return r.join("&")},w.fn.extend({serialize:function(){return w.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var e=w.prop(this,"elements");return e?w.makeArray(e):this}).filter(function(){var e=this.type;return this.name&&!w(this).is(":disabled")&&At.test(this.nodeName)&&!Nt.test(e)&&(this.checked||!pe.test(e))}).map(function(e,t){var n=w(this).val();return null==n?null:Array.isArray(n)?w.map(n,function(e){return{name:t.name,value:e.replace(Dt,"\r\n")}}):{name:t.name,value:n.replace(Dt,"\r\n")}}).get()}});var qt=/%20/g,Lt=/#.*$/,Ht=/([?&])_=[^&]*/,Ot=/^(.*?):[ \t]*([^\r\n]*)$/gm,Pt=/^(?:about|app|app-storage|.+-extension|file|res|widget):$/,Mt=/^(?:GET|HEAD)$/,Rt=/^\/\//,It={},Wt={},$t="*/".concat("*"),Bt=r.createElement("a");Bt.href=Ct.href;function Ft(e){return function(t,n){"string"!=typeof t&&(n=t,t="*");var r,i=0,o=t.toLowerCase().match(M)||[];if(g(n))while(r=o[i++])"+"===r[0]?(r=r.slice(1)||"*",(e[r]=e[r]||[]).unshift(n)):(e[r]=e[r]||[]).push(n)}}function _t(e,t,n,r){var i={},o=e===Wt;function a(s){var u;return i[s]=!0,w.each(e[s]||[],function(e,s){var l=s(t,n,r);return"string"!=typeof l||o||i[l]?o?!(u=l):void 0:(t.dataTypes.unshift(l),a(l),!1)}),u}return a(t.dataTypes[0])||!i["*"]&&a("*")}function zt(e,t){var n,r,i=w.ajaxSettings.flatOptions||{};for(n in t)void 0!==t[n]&&((i[n]?e:r||(r={}))[n]=t[n]);return r&&w.extend(!0,e,r),e}function Xt(e,t,n){var r,i,o,a,s=e.contents,u=e.dataTypes;while("*"===u[0])u.shift(),void 0===r&&(r=e.mimeType||t.getResponseHeader("Content-Type"));if(r)for(i in s)if(s[i]&&s[i].test(r)){u.unshift(i);break}if(u[0]in n)o=u[0];else{for(i in n){if(!u[0]||e.converters[i+" "+u[0]]){o=i;break}a||(a=i)}o=o||a}if(o)return o!==u[0]&&u.unshift(o),n[o]}function Ut(e,t,n,r){var i,o,a,s,u,l={},c=e.dataTypes.slice();if(c[1])for(a in e.converters)l[a.toLowerCase()]=e.converters[a];o=c.shift();while(o)if(e.responseFields[o]&&(n[e.responseFields[o]]=t),!u&&r&&e.dataFilter&&(t=e.dataFilter(t,e.dataType)),u=o,o=c.shift())if("*"===o)o=u;else if("*"!==u&&u!==o){if(!(a=l[u+" "+o]||l["* "+o]))for(i in l)if((s=i.split(" "))[1]===o&&(a=l[u+" "+s[0]]||l["* "+s[0]])){!0===a?a=l[i]:!0!==l[i]&&(o=s[0],c.unshift(s[1]));break}if(!0!==a)if(a&&e["throws"])t=a(t);else try{t=a(t)}catch(e){return{state:"parsererror",error:a?e:"No conversion from "+u+" to "+o}}}return{state:"success",data:t}}w.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:Ct.href,type:"GET",isLocal:Pt.test(Ct.protocol),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":$t,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/\bxml\b/,html:/\bhtml/,json:/\bjson\b/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":JSON.parse,"text xml":w.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(e,t){return t?zt(zt(e,w.ajaxSettings),t):zt(w.ajaxSettings,e)},ajaxPrefilter:Ft(It),ajaxTransport:Ft(Wt),ajax:function(t,n){"object"==typeof t&&(n=t,t=void 0),n=n||{};var i,o,a,s,u,l,c,f,p,d,h=w.ajaxSetup({},n),g=h.context||h,y=h.context&&(g.nodeType||g.jquery)?w(g):w.event,v=w.Deferred(),m=w.Callbacks("once memory"),x=h.statusCode||{},b={},T={},C="canceled",E={readyState:0,getResponseHeader:function(e){var t;if(c){if(!s){s={};while(t=Ot.exec(a))s[t[1].toLowerCase()]=t[2]}t=s[e.toLowerCase()]}return null==t?null:t},getAllResponseHeaders:function(){return c?a:null},setRequestHeader:function(e,t){return null==c&&(e=T[e.toLowerCase()]=T[e.toLowerCase()]||e,b[e]=t),this},overrideMimeType:function(e){return null==c&&(h.mimeType=e),this},statusCode:function(e){var t;if(e)if(c)E.always(e[E.status]);else for(t in e)x[t]=[x[t],e[t]];return this},abort:function(e){var t=e||C;return i&&i.abort(t),k(0,t),this}};if(v.promise(E),h.url=((t||h.url||Ct.href)+"").replace(Rt,Ct.protocol+"//"),h.type=n.method||n.type||h.method||h.type,h.dataTypes=(h.dataType||"*").toLowerCase().match(M)||[""],null==h.crossDomain){l=r.createElement("a");try{l.href=h.url,l.href=l.href,h.crossDomain=Bt.protocol+"//"+Bt.host!=l.protocol+"//"+l.host}catch(e){h.crossDomain=!0}}if(h.data&&h.processData&&"string"!=typeof h.data&&(h.data=w.param(h.data,h.traditional)),_t(It,h,n,E),c)return E;(f=w.event&&h.global)&&0==w.active++&&w.event.trigger("ajaxStart"),h.type=h.type.toUpperCase(),h.hasContent=!Mt.test(h.type),o=h.url.replace(Lt,""),h.hasContent?h.data&&h.processData&&0===(h.contentType||"").indexOf("application/x-www-form-urlencoded")&&(h.data=h.data.replace(qt,"+")):(d=h.url.slice(o.length),h.data&&(h.processData||"string"==typeof h.data)&&(o+=(kt.test(o)?"&":"?")+h.data,delete h.data),!1===h.cache&&(o=o.replace(Ht,"$1"),d=(kt.test(o)?"&":"?")+"_="+Et+++d),h.url=o+d),h.ifModified&&(w.lastModified[o]&&E.setRequestHeader("If-Modified-Since",w.lastModified[o]),w.etag[o]&&E.setRequestHeader("If-None-Match",w.etag[o])),(h.data&&h.hasContent&&!1!==h.contentType||n.contentType)&&E.setRequestHeader("Content-Type",h.contentType),E.setRequestHeader("Accept",h.dataTypes[0]&&h.accepts[h.dataTypes[0]]?h.accepts[h.dataTypes[0]]+("*"!==h.dataTypes[0]?", "+$t+"; q=0.01":""):h.accepts["*"]);for(p in h.headers)E.setRequestHeader(p,h.headers[p]);if(h.beforeSend&&(!1===h.beforeSend.call(g,E,h)||c))return E.abort();if(C="abort",m.add(h.complete),E.done(h.success),E.fail(h.error),i=_t(Wt,h,n,E)){if(E.readyState=1,f&&y.trigger("ajaxSend",[E,h]),c)return E;h.async&&h.timeout>0&&(u=e.setTimeout(function(){E.abort("timeout")},h.timeout));try{c=!1,i.send(b,k)}catch(e){if(c)throw e;k(-1,e)}}else k(-1,"No Transport");function k(t,n,r,s){var l,p,d,b,T,C=n;c||(c=!0,u&&e.clearTimeout(u),i=void 0,a=s||"",E.readyState=t>0?4:0,l=t>=200&&t<300||304===t,r&&(b=Xt(h,E,r)),b=Ut(h,b,E,l),l?(h.ifModified&&((T=E.getResponseHeader("Last-Modified"))&&(w.lastModified[o]=T),(T=E.getResponseHeader("etag"))&&(w.etag[o]=T)),204===t||"HEAD"===h.type?C="nocontent":304===t?C="notmodified":(C=b.state,p=b.data,l=!(d=b.error))):(d=C,!t&&C||(C="error",t<0&&(t=0))),E.status=t,E.statusText=(n||C)+"",l?v.resolveWith(g,[p,C,E]):v.rejectWith(g,[E,C,d]),E.statusCode(x),x=void 0,f&&y.trigger(l?"ajaxSuccess":"ajaxError",[E,h,l?p:d]),m.fireWith(g,[E,C]),f&&(y.trigger("ajaxComplete",[E,h]),--w.active||w.event.trigger("ajaxStop")))}return E},getJSON:function(e,t,n){return w.get(e,t,n,"json")},getScript:function(e,t){return w.get(e,void 0,t,"script")}}),w.each(["get","post"],function(e,t){w[t]=function(e,n,r,i){return g(n)&&(i=i||r,r=n,n=void 0),w.ajax(w.extend({url:e,type:t,dataType:i,data:n,success:r},w.isPlainObject(e)&&e))}}),w._evalUrl=function(e){return w.ajax({url:e,type:"GET",dataType:"script",cache:!0,async:!1,global:!1,"throws":!0})},w.fn.extend({wrapAll:function(e){var t;return this[0]&&(g(e)&&(e=e.call(this[0])),t=w(e,this[0].ownerDocument).eq(0).clone(!0),this[0].parentNode&&t.insertBefore(this[0]),t.map(function(){var e=this;while(e.firstElementChild)e=e.firstElementChild;return e}).append(this)),this},wrapInner:function(e){return g(e)?this.each(function(t){w(this).wrapInner(e.call(this,t))}):this.each(function(){var t=w(this),n=t.contents();n.length?n.wrapAll(e):t.append(e)})},wrap:function(e){var t=g(e);return this.each(function(n){w(this).wrapAll(t?e.call(this,n):e)})},unwrap:function(e){return this.parent(e).not("body").each(function(){w(this).replaceWith(this.childNodes)}),this}}),w.expr.pseudos.hidden=function(e){return!w.expr.pseudos.visible(e)},w.expr.pseudos.visible=function(e){return!!(e.offsetWidth||e.offsetHeight||e.getClientRects().length)},w.ajaxSettings.xhr=function(){try{return new e.XMLHttpRequest}catch(e){}};var Vt={0:200,1223:204},Gt=w.ajaxSettings.xhr();h.cors=!!Gt&&"withCredentials"in Gt,h.ajax=Gt=!!Gt,w.ajaxTransport(function(t){var n,r;if(h.cors||Gt&&!t.crossDomain)return{send:function(i,o){var a,s=t.xhr();if(s.open(t.type,t.url,t.async,t.username,t.password),t.xhrFields)for(a in t.xhrFields)s[a]=t.xhrFields[a];t.mimeType&&s.overrideMimeType&&s.overrideMimeType(t.mimeType),t.crossDomain||i["X-Requested-With"]||(i["X-Requested-With"]="XMLHttpRequest");for(a in i)s.setRequestHeader(a,i[a]);n=function(e){return function(){n&&(n=r=s.onload=s.onerror=s.onabort=s.ontimeout=s.onreadystatechange=null,"abort"===e?s.abort():"error"===e?"number"!=typeof s.status?o(0,"error"):o(s.status,s.statusText):o(Vt[s.status]||s.status,s.statusText,"text"!==(s.responseType||"text")||"string"!=typeof s.responseText?{binary:s.response}:{text:s.responseText},s.getAllResponseHeaders()))}},s.onload=n(),r=s.onerror=s.ontimeout=n("error"),void 0!==s.onabort?s.onabort=r:s.onreadystatechange=function(){4===s.readyState&&e.setTimeout(function(){n&&r()})},n=n("abort");try{s.send(t.hasContent&&t.data||null)}catch(e){if(n)throw e}},abort:function(){n&&n()}}}),w.ajaxPrefilter(function(e){e.crossDomain&&(e.contents.script=!1)}),w.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/\b(?:java|ecma)script\b/},converters:{"text script":function(e){return w.globalEval(e),e}}}),w.ajaxPrefilter("script",function(e){void 0===e.cache&&(e.cache=!1),e.crossDomain&&(e.type="GET")}),w.ajaxTransport("script",function(e){if(e.crossDomain){var t,n;return{send:function(i,o){t=w("'); + } + + // Render recaptcha + var recaptcha_interval = setInterval(function(){ + + if(!pagelayer_empty(window.grecaptcha)){ + grecaptcha.ready(function() { + try{ + var widgetID = grecaptcha.render(jEle.get(0), {'sitekey' : jEle.data("sitekey")}); + jEle.attr('recaptcha-widget-id', widgetID); + }catch(e){ + console.log("There is some issue in rendering reCaptcha. Please check your recaptcha site-key !"); + } + + }); + clearInterval(recaptcha_interval); + } + + }, 500); + +} + +// Scroll to element button effect +function pagelayer_button_element_scroll(jEle) { + + var speed = parseInt(jEle.attr('pagelayer_scrollto_speed') * 1000); + var idspacing = 0; + var scrollId = jEle.attr('pagelayer_scrollto_id'); + + if(jEle.attr('pagelayer_scrollto_type') == 'toid'){ + + var scrolltoEle = jQuery('#' + scrollId); + + if(pagelayer_empty(scrollId) || scrolltoEle.length < 1){ + return; + } + + var idpos = parseInt(scrolltoEle.offset().top); + var spacing = parseInt(jEle.attr('pagelayer_scrollto_id_viewport')); + + if (isNaN(spacing)) { + spacing = 0; + } + + idspacing = idpos + spacing; + + } + + jEle.on('click', function (e) { + e.preventDefault(); + jQuery('html, body').animate({ scrollTop: idspacing }, speed); + }); + +} + +//////////// +// Freemium +//////////// + +// Contact Form handler - Premium +function pagelayer_contact_form(jEle){ + + jEle = jQuery(jEle); + var id = jEle.attr('pagelayer-id'); + + // Set pagelayer id to input field + jEle.find('form input[name="cfa-pagelayer-id"]').val(id); + +} + +// Contact Form Submit handler - Premium +function pagelayer_contact_submit(jEle, e){ + e.preventDefault(); + + // Checking for required checkboxes. + for(var checkbox_div of jQuery(jEle).find('.pagelayer-contact-checkbox')){ + checkbox_div = jQuery(checkbox_div); + if(checkbox_div.attr('required') == 'required'){ + if(pagelayer_empty(checkbox_div.find('input:checked').length)){ + alert('Kindly select the required checkbox'); + return; + } + } + } + + // Trigger an action + jQuery(document).trigger('pagelayer_contact_submit', e, jEle); + + // Disabling submit button with loading animation. + jQuery(jEle).find('.pagelayer-contact-submit-btn').prop('disabled', true); + jQuery(jEle).find('.pagelayer-contact-submit-btn .fa-spin').show('0.6'); + + //var fdata = jQuery(jEle).closest('form').serialize(); + var redirect = jQuery(jEle).find('input[name="cfa-redirect"]'); + var formData = new FormData( jQuery(jEle)[0] ); + var par = jQuery(jEle).parent(); + + // Append the nonce + formData.append('pagelayer_nonce', pagelayer_global_nonce); + + // Hide any message + par.find(".pagelayer-message-box").hide(); + + // Message pos to use ? + var msg_pos = 'top'; + if(par.parent().hasClass('pagelayer-message-box-bottom')){ + msg_pos = 'bottom'; + } + + par.find(".pagelayer-message-box").removeClass('pagelayer-cf-msg-err pagelayer-cf-msg-suc'); + + jQuery.ajax({ + url: pagelayer_ajaxurl+'action=pagelayer_contact_submit', + type: "POST", + data: formData, + processData: false, + contentType: false, + cache:false, + success:function(result){ + var json = jQuery.parseJSON(result); + + jQuery(jEle).find('.pagelayer-contact-submit-btn').prop('disabled', false); + jQuery(jEle).find('.pagelayer-contact-submit-btn .fa-spin').hide('0.6'); + + if('success' in json){ + par.find(".pagelayer-message-"+msg_pos).addClass('pagelayer-cf-msg-suc').html(json['success']).fadeIn(); + + if(redirect.length > 0 && !pagelayer_empty(redirect.val())){ + window.location.href = redirect.val(); + } + }else{ + par.find(".pagelayer-message-"+msg_pos).addClass('pagelayer-cf-msg-err').html(json['failed']).fadeIn(); + } + }, + error:function(result){ + par.find(".pagelayer-message-"+msg_pos).addClass('pagelayer-cf-msg-err').html(json['failed']).fadeIn(); + } + }); + jEle.reset(); + + jQuery(jEle).find('.pagelayer-recaptcha').each(function(){ + var widgetID = jQuery(this).attr('recaptcha-widget-id'); + + if(!pagelayer_empty(window.grecaptcha)){ + grecaptcha.reset(widgetID); + } + }); + + return false; +} + +// Primary Menu Handler - Premium +function pagelayer_primary_menu(jEle){ + + var container = jEle.find('.pagelayer-wp-menu-container'); + var menu_bar = jEle.find('.pagelayer-primary-menu-bar i'); + var menu_holder = jEle.find('.pagelayer-wp-menu-holder'); + var layout = menu_holder.data('layout'); + var submenu_ind = menu_holder.data('submenu_ind'); + var responsive = menu_holder.data('responsive'); + var drop_breakpoint = menu_holder.data('drop_breakpoint'); + var close = jEle.find('.pagelayer-wp_menu-close'); + + var media_mode = pagelayer_get_media_mode(); + + if( (drop_breakpoint == 'tablet' && (media_mode == 'tablet' || media_mode == 'mobile')) || (drop_breakpoint == 'mobile' && media_mode == 'mobile') ){ + + menu_holder.addClass('pagelayer-wp-menu-dropdown'); + container.addClass('pagelayer-menu-type-dropdown'); + container.removeClass('pagelayer-menu-type-'+layout); + layout = 'dropdown'; + + }else{ + menu_holder.removeClass('pagelayer-wp-menu-dropdown'); + container.removeClass('pagelayer-menu-type-dropdown'); + container.addClass('pagelayer-menu-type-'+layout); + } + + // Menu toggle + var toggle_class; + jQuery(menu_bar).unbind('click'); + jQuery(menu_bar).click(function(){ + jQuery(container).toggleClass('pagelayer-togglt-on'); + + toggle_class = jQuery(this).data('icon'); + toggle_class = ( pagelayer_empty(toggle_class) ? 'fas fa-bars' : toggle_class ); + + if(jQuery(container).hasClass('pagelayer-togglt-on')){ + jQuery(this).removeClass(toggle_class); + jQuery(this).addClass('fas fa-times'); + }else{ + jQuery(this).removeClass('fas fa-times'); + jQuery(this).addClass(toggle_class); + } + }); + + // If has sub-menu the as icon + var aEle_sub_menu = jQuery(container).find('.pagelayer-wp_menu-ul li ul.sub-menu').parent().children('a'); + + if(aEle_sub_menu.children('.after-icon').length < 1){ + aEle_sub_menu.append(''); + } + + // Toggle Sub nav + var after_icon = jQuery(container).find('.pagelayer-wp_menu-ul li.menu-item-has-children .after-icon'); + + after_icon.unbind('click'); + after_icon.click(function(e){ + e.preventDefault(); + if(window.matchMedia("(max-width: "+pagelayer_settings['tablet_breakpoint']+"px)").matches || layout != 'horizontal'){ + jQuery(this).closest('li').toggleClass('active-sub-menu'); + }else{ + jQuery(this).closest('li').removeClass('active-sub-menu'); + } + }); + + close.unbind('click'); + close.click(function(){ + jQuery(container).toggleClass('pagelayer-togglt-on'); + jQuery(menu_bar).removeClass('fas fa-times'); + jQuery(menu_bar).addClass(toggle_class); + }) + +} + +var count_int ={}; +// Show countdown render +function pagelayer_countdown(jEle){ + + var expiry_date = jEle.find('.pagelayer-countdown-container').attr('pagelayer-expiry-date'); + var timetype = jEle.find('.pagelayer-countdown-container').attr('pagelayer-time-type'); + var jEle_id = jEle.attr('pagelayer-id'); + + if(pagelayer_empty(expiry_date) || expiry_date == "{{date}}"){ + var expiry_date = new Date(new Date().getTime() + 24 * 60 * 60 * 1000); + } + + var now; + if(timetype == "server"){ + now = new Date(pagelayer_server_time*1000).getTime(); + }else{ + now = new Date().getTime(); + } + + var countDownDate = new Date(expiry_date).getTime(); + var distance = countDownDate - now; + + clearInterval(count_int[jEle_id]); + count_int[jEle_id] = setInterval(function() { + + // Time calculations for days, hours, minutes and seconds + var days = Math.floor(distance / (1000 * 60 * 60 * 24)); + var hours = Math.floor((distance % (1000 * 60 * 60 * 24)) / (1000 * 60 * 60)); + var minutes = Math.floor((distance % (1000 * 60 * 60)) / (1000 * 60)); + var seconds = Math.floor((distance % (1000 * 60)) / 1000); + + jEle.find('.pagelayer-days-count').html(days); + jEle.find('.pagelayer-hours-count').html(hours); + jEle.find('.pagelayer-minutes-count').html(minutes); + jEle.find('.pagelayer-seconds-count').html(seconds); + + // If the count down is over, write some text + if(distance < 0) { + clearInterval(count_int[jEle_id]); + jEle.find('.pagelayer-countdown-expired').show(); + jEle.find('.pagelayer-countdown-counter').hide(); + } + + distance = distance - 1000; + + }, 1000); +} + +function pagelayer_pl_testimonial_slider(jEle){ + var ul = jQuery(jEle.find('.pagelayer-testimonials-holder')); + + // Build the options + var options = pagelayer_fetch_dataAttrs(ul, 'data-slides-'); + + pagelayer_owl_init(jEle, ul, options); +} + +function pagelayer_anim_heading(jEle){ + var animationDelay = 2500, + //loading bar effect + barAnimationDelay = 3800, + barWaiting = barAnimationDelay - 3000, //3000 is the duration of the transition on the loading bar - set in the scss/css file + //letters effect + lettersDelay = 50, + //type effect + typeLettersDelay = 150, + selectionDuration = 500, + typeAnimationDelay = selectionDuration + 800, + //clip effect + revealDuration = 600, + revealAnimationDelay = 1500; + + initHeadline(); + + function initHeadline(){ + //insert element for each letter of a changing word + singleLetters(jEle.find('.pagelayer-aheading-holder.letters').find('span')); + //initialise headline animation + animateHeadline(jEle.find('.pagelayer-aheading-holder')); + } + + function singleLetters($words){ + $words.each(function(){ + var word = jQuery(this), + letters = word.text().split(''), + selected = word.hasClass('pagelayer-is-visible'); + for (i in letters) { + if(word.parents('.pagelayer-aheading-rotate2').length > 0) letters[i] = '' + letters[i] + ''; + letters[i] = (selected) ? '' + letters[i] + '': '' + letters[i] + ''; + } + var newLetters = letters.join(''); + word.html(newLetters).css('opacity', 1); + }); + } + + function animateHeadline($headlines){ + var duration = animationDelay; + $headlines.each(function(){ + var headline = jQuery(this); + + if(headline.hasClass('pagelayer-aheading-loading-bar')){ + duration = barAnimationDelay; + setTimeout(function(){ headline.find('.pagelayer-words-wrapper').addClass('pagelayer-is-loading') }, barWaiting); + }else if(headline.hasClass('pagelayer-aheading-clip')){ + var spanWrapper = headline.find('.pagelayer-words-wrapper'), + newWidth = spanWrapper.width() + 10; + spanWrapper.css('width', newWidth); + } else if (!headline.hasClass('type') ){ + var words = headline.find('.pagelayer-words-wrapper span'), + width = 0; + words.each(function(){ + var wordWidth = jQuery(this).width(); + if (wordWidth > width) width = wordWidth; + }); + headline.find('.pagelayer-words-wrapper').css('width', width); + }; + + //trigger animation + setTimeout(function(){ hideWord( headline.find('.pagelayer-is-visible').eq(0) ) }, duration); + }); + } + + function hideWord($word){ + var nextWord = takeNext($word); + + if($word.parents('.pagelayer-aheading-holder').hasClass('letters')){ + var bool = ($word.children('strong').length >= nextWord.children('strong').length) ? true : false; + hideLetter($word.find('strong').eq(0), $word, bool, lettersDelay); + showLetter(nextWord.find('strong').eq(0), nextWord, bool, lettersDelay); + + }else if($word.parents('.pagelayer-aheading-holder').hasClass('pagelayer-aheading-clip')){ + $word.parents('.pagelayer-words-wrapper').animate({ width : '2px' }, revealDuration, function(){ + switchWord($word, nextWord); + showWord(nextWord); + }); + + }else if($word.parents('.pagelayer-aheading-holder').hasClass('pagelayer-aheading-loading-bar')){ + $word.parents('.pagelayer-words-wrapper').removeClass('pagelayer-is-loading'); + switchWord($word, nextWord); + setTimeout(function(){ hideWord(nextWord) }, barAnimationDelay); + setTimeout(function(){ $word.parents('.pagelayer-words-wrapper').addClass('pagelayer-is-loading') }, barWaiting); + + }else{ + switchWord($word, nextWord); + setTimeout(function(){ hideWord(nextWord) }, animationDelay); + } + } + + function showWord($word, $duration){ + if($word.parents('.pagelayer-aheading-holder').hasClass('pagelayer-aheading-clip')){ + $word.parents('.pagelayer-words-wrapper').animate({ 'width' : $word.width() + 10 }, revealDuration, function(){ + setTimeout(function(){ hideWord($word) }, revealAnimationDelay); + }); + } + } + + function hideLetter($letter, $word, $bool, $duration){ + $letter.removeClass('pagelayer-aheading-in').addClass('pagelayer-aheading-out'); + + if(!$letter.is(':last-child')){ + setTimeout(function(){ hideLetter($letter.next(), $word, $bool, $duration); }, $duration); + }else if($bool){ + setTimeout(function(){ hideWord(takeNext($word)) }, animationDelay); + } + + if($letter.is(':last-child') && jQuery('html').hasClass('pagelayer-no-csstransitions')){ + var nextWord = takeNext($word); + switchWord($word, nextWord); + } + } + + function showLetter($letter, $word, $bool, $duration){ + $letter.addClass('pagelayer-aheading-in').removeClass('pagelayer-aheading-out'); + + if(!$letter.is(':last-child')){ + setTimeout(function(){ showLetter($letter.next(), $word, $bool, $duration); }, $duration); + }else{ + if(!$bool) { setTimeout(function(){ hideWord($word) }, animationDelay) } + } + } + + function takeNext($word){ + return (!$word.is(':last-child')) ? $word.next() : $word.parent().children().eq(0); + } + + function switchWord($oldWord, $newWord){ + $oldWord.removeClass('pagelayer-is-visible').addClass('pagelayer-is-hidden'); + if(!$newWord.hasClass('pagelayer-is-visible')){ + $newWord.removeClass('pagelayer-is-hidden').addClass('pagelayer-is-visible'); + } + } +} + +function pagelayer_pl_row_slider(jEle){ + var index = 0; + + var imageEls = jEle.find('.pagelayer-bgimg-slide'); // Get the images to be cycled. + var speed = jEle.data('speed'); // Get the speed of loop. + imageEls.first().addClass('pagelayer-slide-show'); + setInterval(function (){ + // Get the next index. If at end, restart to the beginning. + index = index + 1 < imageEls.length ? index + 1 : 0; + + // Show the next + imageEls.eq(index).addClass('pagelayer-slide-show'); + + // Hide the previous + imageEls.eq(index - 1).removeClass('pagelayer-slide-show'); + }, speed); +} + +function pagelayer_pl_social_profile(jEle){ + var icon_holder = jEle.find('.pagelayer-icon-holder'); + + // Assigning animation classes to icon holder + if(!pagelayer_empty(jEle.attr('pagelayer-animation'))){ + icon_holder.addClass('pagelayer-animation-'+jEle.attr('pagelayer-animation')); + } +} + +// Mega menu function which applies id and adjust position +function pagelayer_mega_menu_position(mEle){ + + var jEle = mEle.find('.pagelayer-mega_menu'); + var id = jEle.attr('pagelayer-id'); + + mEle.attr('pagelayer-mega-menu-id', id); + + colWidth = mEle.parents('.pagelayer-col').first(); + mEle.offset({'left':(colWidth.offset().left - mEle.parent().offset().left)}); +} + +//////////////// +// Freemium End +//////////////// + +/* + * Nivo Lightbox v1.3.1 + * http://dev7studios.com/nivo-lightbox + * + * Copyright 2013, Dev7studios + * Free to use and abuse under the MIT license. + * http://www.opensource.org/licenses/mit-license.php + */ +!function(t,i,o,e){function n(i,o){this.el=i,this.$el=t(this.el),this.options=t.extend({},l,o),this._defaults=l,this._name=a,this.init()}var a="nivoLightbox",l={effect:"fade",theme:"default",keyboardNav:!0,clickImgToClose:!1,clickOverlayToClose:!0,onInit:function(){},beforeShowLightbox:function(){},afterShowLightbox:function(t){},beforeHideLightbox:function(){},afterHideLightbox:function(){},beforePrev:function(t){},onPrev:function(t){},beforeNext:function(t){},onNext:function(t){},errorMessage:"The requested content cannot be loaded. Please try again later."};n.prototype={init:function(){var i=this;t("html").hasClass("nivo-lightbox-notouch")||t("html").addClass("nivo-lightbox-notouch"),"ontouchstart"in o&&t("html").removeClass("nivo-lightbox-notouch"),this.$el.on("click",function(t){i.showLightbox(t)}),this.options.keyboardNav&&t("body").off("keyup").on("keyup",function(o){var e=o.keyCode?o.keyCode:o.which;27==e&&i.destructLightbox(),37==e&&t(".nivo-lightbox-prev").trigger("click"),39==e&&t(".nivo-lightbox-next").trigger("click")}),this.options.onInit.call(this)},showLightbox:function(i){var o=this,e=this.$el,n=this.checkContent(e);if(n){i.preventDefault(),this.options.beforeShowLightbox.call(this);var a=this.constructLightbox();if(a){var l=a.find(".nivo-lightbox-content");if(l){if(t("body").addClass("nivo-lightbox-body-effect-"+this.options.effect),this.processContent(l,e),this.$el.attr("data-lightbox-gallery")){var h=t('[data-lightbox-gallery="'+this.$el.attr("data-lightbox-gallery")+'"]');t(".nivo-lightbox-nav").show(),t(".nivo-lightbox-prev").off("click").on("click",function(i){i.preventDefault();var n=h.index(e);e=h.eq(n-1),t(e).length||(e=h.last()),t.when(o.options.beforePrev.call(this,[e])).done(function(){o.processContent(l,e),o.options.onPrev.call(this,[e])})}),t(".nivo-lightbox-next").off("click").on("click",function(i){i.preventDefault();var n=h.index(e);e=h.eq(n+1),t(e).length||(e=h.first()),t.when(o.options.beforeNext.call(this,[e])).done(function(){o.processContent(l,e),o.options.onNext.call(this,[e])})})}setTimeout(function(){a.addClass("nivo-lightbox-open"),o.options.afterShowLightbox.call(this,[a])},1)}}}},checkContent:function(t){var i=t.attr("href"),o=i.match(/(youtube|youtube-nocookie|youtu|vimeo)\.(com|be)\/(watch\?v=([\w-]+)|([\w-]+))/);return null!==i.match(/\.(jpeg|jpg|gif|png)$/i)||(!!o||("ajax"==t.attr("data-lightbox-type")||("#"==i.substring(0,1)&&"inline"==t.attr("data-lightbox-type")||"iframe"==t.attr("data-lightbox-type"))))},processContent:function(o,e){var n=this,a=e.attr("href"),l=a.match(/(youtube|youtube-nocookie|youtu|vimeo)\.(com|be)\/(watch\?v=([\w-]+)|([\w-]+))/);if(o.html("").addClass("nivo-lightbox-loading"),this.isHidpi()&&e.attr("data-lightbox-hidpi")&&(a=e.attr("data-lightbox-hidpi")),null!==a.match(/\.(jpeg|jpg|gif|png)$/i)){var h=t("",{src:a,class:"nivo-lightbox-image-display"});h.one("load",function(){var e=t('
');e.append(h),o.html(e).removeClass("nivo-lightbox-loading"),e.css({"line-height":t(".nivo-lightbox-content").height()+"px",height:t(".nivo-lightbox-content").height()+"px"}),t(i).resize(function(){e.css({"line-height":t(".nivo-lightbox-content").height()+"px",height:t(".nivo-lightbox-content").height()+"px"})})}).each(function(){this.complete&&t(this).load()}),h.error(function(){var i=t('

'+n.options.errorMessage+"

");o.html(i).removeClass("nivo-lightbox-loading")})}else if(l){var s="",r="nivo-lightbox-video";if("youtube"==l[1]&&(s="//www.youtube.com/embed/"+l[4],r="nivo-lightbox-youtube"),"youtube-nocookie"==l[1]&&(s=a,r="nivo-lightbox-youtube"),"youtu"==l[1]&&(s="//www.youtube.com/embed/"+l[3],r="nivo-lightbox-youtube"),"vimeo"==l[1]&&(s="//player.vimeo.com/video/"+l[3],r="nivo-lightbox-vimeo"),s){var c=t("'),c.attr("height",h),c.attr("width",g),"youtube"===f.type?c.attr("src","//www.youtube.com/embed/"+f.id+"?autoplay=1&rel=0&v="+f.id):"vimeo"===f.type?c.attr("src","//player.vimeo.com/video/"+f.id+"?autoplay=1"):"vzaar"===f.type&&c.attr("src","//view.vzaar.com/"+f.id+"/player?autoplay=true"),a(c).wrap('
').insertAfter(e.find(".pagelayer-owl-video")),this._playing=e.addClass("pagelayer-owl-video-playing"))},e.prototype.isInFullScreen=function(){var b=c.fullscreenElement||c.mozFullScreenElement||c.webkitFullscreenElement;return b&&a(b).parent().hasClass("pagelayer-owl-video-frame")},e.prototype.destroy=function(){var a,b;this._core.$element.off("click.owl.video");for(a in this._handlers)this._core.$element.off(a,this._handlers[a]);for(b in Object.getOwnPropertyNames(this))"function"!=typeof this[b]&&(this[b]=null)},a.fn.pagelayerOwlCarousel.Constructor.Plugins.Video=e}(window.Zepto||window.jQuery,window,document),function(a,b,c,d){var e=function(b){this.core=b,this.core.options=a.extend({},e.Defaults,this.core.options),this.swapping=!0,this.previous=d,this.next=d,this.handlers={"change.owl.carousel":a.proxy(function(a){a.namespace&&"position"==a.property.name&&(this.previous=this.core.current(),this.next=a.property.value)},this),"drag.owl.carousel dragged.owl.carousel translated.owl.carousel":a.proxy(function(a){a.namespace&&(this.swapping="translated"==a.type)},this),"translate.owl.carousel":a.proxy(function(a){a.namespace&&this.swapping&&(this.core.options.animateOut||this.core.options.animateIn)&&this.swap()},this)},this.core.$element.on(this.handlers)};e.Defaults={animateOut:!1, +animateIn:!1},e.prototype.swap=function(){if(1===this.core.settings.items&&a.support.animation&&a.support.transition){this.core.speed(0);var b,c=a.proxy(this.clear,this),d=this.core.$stage.children().eq(this.previous),e=this.core.$stage.children().eq(this.next),f=this.core.settings.animateIn,g=this.core.settings.animateOut;this.core.current()!==this.previous&&(g&&(b=this.core.coordinates(this.previous)-this.core.coordinates(this.next),d.one(a.support.animation.end,c).css({left:b+"px"}).addClass("animated pagelayer-owl-animated-out").addClass(g)),f&&e.one(a.support.animation.end,c).addClass("animated pagelayer-owl-animated-in").addClass(f))}},e.prototype.clear=function(b){a(b.target).css({left:""}).removeClass("animated pagelayer-owl-animated-out pagelayer-owl-animated-in").removeClass(this.core.settings.animateIn).removeClass(this.core.settings.animateOut),this.core.onTransitionEnd()},e.prototype.destroy=function(){var a,b;for(a in this.handlers)this.core.$element.off(a,this.handlers[a]);for(b in Object.getOwnPropertyNames(this))"function"!=typeof this[b]&&(this[b]=null)},a.fn.pagelayerOwlCarousel.Constructor.Plugins.Animate=e}(window.Zepto||window.jQuery,window,document),function(a,b,c,d){var e=function(b){this._core=b,this._call=null,this._time=0,this._timeout=0,this._paused=!0,this._handlers={"changed.owl.carousel":a.proxy(function(a){a.namespace&&"settings"===a.property.name?this._core.settings.autoplay?this.play():this.stop():a.namespace&&"position"===a.property.name&&this._paused&&(this._time=0)},this),"initialized.owl.carousel":a.proxy(function(a){a.namespace&&this._core.settings.autoplay&&this.play()},this),"play.owl.autoplay":a.proxy(function(a,b,c){a.namespace&&this.play(b,c)},this),"stop.owl.autoplay":a.proxy(function(a){a.namespace&&this.stop()},this),"mouseover.owl.autoplay":a.proxy(function(){this._core.settings.autoplayHoverPause&&this._core.is("rotating")&&this.pause()},this),"mouseleave.owl.autoplay":a.proxy(function(){this._core.settings.autoplayHoverPause&&this._core.is("rotating")&&this.play()},this),"touchstart.owl.core":a.proxy(function(){this._core.settings.autoplayHoverPause&&this._core.is("rotating")&&this.pause()},this),"touchend.owl.core":a.proxy(function(){this._core.settings.autoplayHoverPause&&this.play()},this)},this._core.$element.on(this._handlers),this._core.options=a.extend({},e.Defaults,this._core.options)};e.Defaults={autoplay:!1,autoplayTimeout:5e3,autoplayHoverPause:!1,autoplaySpeed:!1},e.prototype._next=function(d){this._call=b.setTimeout(a.proxy(this._next,this,d),this._timeout*(Math.round(this.read()/this._timeout)+1)-this.read()),this._core.is("interacting")||c.hidden||this._core.next(d||this._core.settings.autoplaySpeed)},e.prototype.read=function(){return(new Date).getTime()-this._time},e.prototype.play=function(c,d){var e;this._core.is("rotating")||this._core.enter("rotating"),c=c||this._core.settings.autoplayTimeout,e=Math.min(this._time%(this._timeout||c),c),this._paused?(this._time=this.read(),this._paused=!1):b.clearTimeout(this._call),this._time+=this.read()%c-e,this._timeout=c,this._call=b.setTimeout(a.proxy(this._next,this,d),c-e)},e.prototype.stop=function(){this._core.is("rotating")&&(this._time=0,this._paused=!0,b.clearTimeout(this._call),this._core.leave("rotating"))},e.prototype.pause=function(){this._core.is("rotating")&&!this._paused&&(this._time=this.read(),this._paused=!0,b.clearTimeout(this._call))},e.prototype.destroy=function(){var a,b;this.stop();for(a in this._handlers)this._core.$element.off(a,this._handlers[a]);for(b in Object.getOwnPropertyNames(this))"function"!=typeof this[b]&&(this[b]=null)},a.fn.pagelayerOwlCarousel.Constructor.Plugins.autoplay=e}(window.Zepto||window.jQuery,window,document),function(a,b,c,d){"use strict";var e=function(b){this._core=b,this._initialized=!1,this._pages=[],this._controls={},this._templates=[],this.$element=this._core.$element,this._overrides={next:this._core.next,prev:this._core.prev,to:this._core.to},this._handlers={"prepared.owl.carousel":a.proxy(function(b){b.namespace&&this._core.settings.dotsData&&this._templates.push('
'+a(b.content).find("[data-dot]").addBack("[data-dot]").attr("data-dot")+"
")},this),"added.owl.carousel":a.proxy(function(a){a.namespace&&this._core.settings.dotsData&&this._templates.splice(a.position,0,this._templates.pop())},this),"remove.owl.carousel":a.proxy(function(a){a.namespace&&this._core.settings.dotsData&&this._templates.splice(a.position,1)},this),"changed.owl.carousel":a.proxy(function(a){a.namespace&&"position"==a.property.name&&this.draw()},this),"initialized.owl.carousel":a.proxy(function(a){a.namespace&&!this._initialized&&(this._core.trigger("initialize",null,"navigation"),this.initialize(),this.update(),this.draw(),this._initialized=!0,this._core.trigger("initialized",null,"navigation"))},this),"refreshed.owl.carousel":a.proxy(function(a){a.namespace&&this._initialized&&(this._core.trigger("refresh",null,"navigation"),this.update(),this.draw(),this._core.trigger("refreshed",null,"navigation"))},this)},this._core.options=a.extend({},e.Defaults,this._core.options),this.$element.on(this._handlers)};e.Defaults={nav:!1,navText:['',''],navSpeed:!1,navElement:'button type="button" role="presentation"',navContainer:!1,navContainerClass:"pagelayer-owl-nav",navClass:["pagelayer-owl-prev","pagelayer-owl-next"],slideBy:1,dotClass:"pagelayer-owl-dot",dotsClass:"pagelayer-owl-dots",dots:!0,dotsEach:!1,dotsData:!1,dotsSpeed:!1,dotsContainer:!1},e.prototype.initialize=function(){var b,c=this._core.settings;this._controls.$relative=(c.navContainer?a(c.navContainer):a("
").addClass(c.navContainerClass).appendTo(this.$element)).addClass("disabled"),this._controls.$previous=a("<"+c.navElement+">").addClass(c.navClass[0]).html(c.navText[0]).prependTo(this._controls.$relative).on("click",a.proxy(function(a){this.prev(c.navSpeed)},this)),this._controls.$next=a("<"+c.navElement+">").addClass(c.navClass[1]).html(c.navText[1]).appendTo(this._controls.$relative).on("click",a.proxy(function(a){this.next(c.navSpeed)},this)),c.dotsData||(this._templates=[a('

W`! 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

The Finnish Civil War (27 January – 15 May 1918) marked the transition from the Grand Duchy of Finland, part of the Russian Empire, to an independent state. Arising during World War I, it was fought between the Reds, led by the Social Democratic Party, and the Whites, led by the conservative Senate. In February 1918, the Reds carried out an unsuccessful offensive, supplied with weapons by Soviet Russia. A counteroffensive by the Whites began in March, reinforced by the German Empire's military detachments in April. The decisive engagements were the battles of Tampere and Vyborg, won by the Whites, and the battles of Helsinki and Lahti, won by German troops, leading to overall victory for the Whites and the German forces. The 39,000 casualties included political terror deaths. Although the Senate and Parliament were initially pressured into accepting the brother-in-law of German Emperor William II as the King of Finland, the country emerged within a few months as an independent, democratic republic. The war would divide the nation for decades. (Full article...)

\n", + "\t\t\n", + "\t